Current File : /home/k/a/r/karenpetzb/www/items/category/Zend.zip
PKpG[�X�܄%�%Feed/Entry/Atom.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Atom.php 10383 2008-07-24 19:46:15Z matthew $
 */


/**
 * @see Zend_Feed_Entry_Abstract
 */
require_once 'Zend/Feed/Entry/Abstract.php';


/**
 * Concrete class for working with Atom entries.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Entry_Atom extends Zend_Feed_Entry_Abstract
{
    /**
     * Root XML element for Atom entries.
     *
     * @var string
     */
    protected $_rootElement = 'entry';

    /**
     * Root namespace for Atom entries.
     *
     * @var string
     */
    protected $_rootNamespace = 'atom';


    /**
     * Delete an atom entry.
     *
     * Delete tries to delete this entry from its feed. If the entry
     * does not contain a link rel="edit", we throw an error (either
     * the entry does not yet exist or this is not an editable
     * feed). If we have a link rel="edit", we do the empty-body
     * HTTP DELETE to that URI and check for a response of 2xx.
     * Usually the response would be 204 No Content, but the Atom
     * Publishing Protocol permits it to be 200 OK.
     *
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function delete()
    {
        // Look for link rel="edit" in the entry object.
        $deleteUri = $this->link('edit');
        if (!$deleteUri) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('Cannot delete entry; no link rel="edit" is present.');
        }

        // DELETE
        $client = Zend_Feed::getHttpClient();
        do {
            $client->setUri($deleteUri);
            if (Zend_Feed::getHttpMethodOverride()) {
                $client->setHeader('X-HTTP-Method-Override', 'DELETE');
                $response = $client->request('POST');
            } else {
                $response = $client->request('DELETE');
            }
            $httpStatus = $response->getStatus();
            switch ((int) $httpStatus / 100) {
                // Success
                case 2:
                    return true;
                // Redirect
                case 3:
                    $deleteUri = $response->getHeader('Location');
                    continue;
                // Error
                default:
                    /** 
                     * @see Zend_Feed_Exception
                     */
                    require_once 'Zend/Feed/Exception.php';
                    throw new Zend_Feed_Exception("Expected response code 2xx, got $httpStatus");
            }
        } while (true);
    }


    /**
     * Save a new or updated Atom entry.
     *
     * Save is used to either create new entries or to save changes to
     * existing ones. If we have a link rel="edit", we are changing
     * an existing entry. In this case we re-serialize the entry and
     * PUT it to the edit URI, checking for a 200 OK result.
     *
     * For posting new entries, you must specify the $postUri
     * parameter to save() to tell the object where to post itself.
     * We use $postUri and POST the serialized entry there, checking
     * for a 201 Created response. If the insert is successful, we
     * then parse the response from the POST to get any values that
     * the server has generated: an id, an updated time, and its new
     * link rel="edit".
     *
     * @param  string $postUri Location to POST for creating new entries.
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function save($postUri = null)
    {
        if ($this->id()) {
            // If id is set, look for link rel="edit" in the
            // entry object and PUT.
            $editUri = $this->link('edit');
            if (!$editUri) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('Cannot edit entry; no link rel="edit" is present.');
            }

            $client = Zend_Feed::getHttpClient();
            $client->setUri($editUri);
            if (Zend_Feed::getHttpMethodOverride()) {
                $client->setHeaders(array('X-HTTP-Method-Override: PUT',
                    'Content-Type: application/atom+xml'));
                $client->setRawData($this->saveXML());
                $response = $client->request('POST');
            } else {
                $client->setHeaders('Content-Type', 'application/atom+xml');
                $client->setRawData($this->saveXML());
                $response = $client->request('PUT');
            }
            if ($response->getStatus() !== 200) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('Expected response code 200, got ' . $response->getStatus());
            }
        } else {
            if ($postUri === null) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('PostURI must be specified to save new entries.');
            }
            $client = Zend_Feed::getHttpClient();
            $client->setUri($postUri);
            $client->setRawData($this->saveXML());
            $response = $client->request('POST');

            if ($response->getStatus() !== 201) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('Expected response code 201, got '
                                              . $response->getStatus());
            }
        }

        // Update internal properties using $client->responseBody;
        @ini_set('track_errors', 1);
        $newEntry = new DOMDocument;
        $status = @$newEntry->loadXML($response->getBody());
        @ini_restore('track_errors');

        if (!$status) {
            // prevent the class to generate an undefined variable notice (ZF-2590)
            if (!isset($php_errormsg)) {
                if (function_exists('xdebug_is_enabled')) {
                    $php_errormsg = '(error message not available, when XDebug is running)';
                } else {
                    $php_errormsg = '(error message not available)';
                }
            }

            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('XML cannot be parsed: ' . $php_errormsg);
        }

        $newEntry = $newEntry->getElementsByTagName($this->_rootElement)->item(0);
        if (!$newEntry) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('No root <feed> element found in server response:'
                                          . "\n\n" . $client->responseBody);
        }

        if ($this->_element->parentNode) {
            $oldElement = $this->_element;
            $this->_element = $oldElement->ownerDocument->importNode($newEntry, true);
            $oldElement->parentNode->replaceChild($this->_element, $oldElement);
        } else {
            $this->_element = $newEntry;
        }
    }


    /**
     * Easy access to <link> tags keyed by "rel" attributes.
     *
     * If $elt->link() is called with no arguments, we will attempt to
     * return the value of the <link> tag(s) like all other
     * method-syntax attribute access. If an argument is passed to
     * link(), however, then we will return the "href" value of the
     * first <link> tag that has a "rel" attribute matching $rel:
     *
     * $elt->link(): returns the value of the link tag.
     * $elt->link('self'): returns the href from the first <link rel="self"> in the entry.
     *
     * @param  string $rel The "rel" attribute to look for.
     * @return mixed
     */
    public function link($rel = null)
    {
        if ($rel === null) {
            return parent::__call('link', null);
        }

        // index link tags by their "rel" attribute.
        $links = parent::__get('link');
        if (!is_array($links)) {
            if ($links instanceof Zend_Feed_Element) {
                $links = array($links);
            } else {
                return $links;
            }
        }

        foreach ($links as $link) {
            if (empty($link['rel'])) {
                continue;
            }
            if ($rel == $link['rel']) {
                return $link['href'];
            }
        }

        return null;
    }

}
PKpG[8_�2Feed/Entry/Rss.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Rss.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Feed_Entry_Abstract
 */
require_once 'Zend/Feed/Entry/Abstract.php';


/**
 * Concrete class for working with RSS items.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Entry_Rss extends Zend_Feed_Entry_Abstract
{
    /**
     * Root XML element for RSS items.
     *
     * @var string
     */
    protected $_rootElement = 'item';

    /**
     * Overwrites parent::_get method to enable read access
     * to content:encoded element.
     *
     * @param  string $var The property to access.
     * @return mixed
     */
    public function __get($var)
    {
        switch ($var) {
            case 'content':
                $prefix = $this->_element->lookupPrefix('http://purl.org/rss/1.0/modules/content/');
                return parent::__get("$prefix:encoded");
            default:
                return parent::__get($var);
        }
    }

    /**
     * Overwrites parent::_set method to enable write access
     * to content:encoded element.
     *
     * @param  string $var The property to change.
     * @param  string $val The property's new value.
     * @return void
     */
    public function __set($var, $value)
    {
        switch ($var) {
            case 'content':
                parent::__set('content:encoded', $value);
                break;
            default:
                parent::__set($var, $value);
        }
    }

    /**
     * Overwrites parent::_isset method to enable access
     * to content:encoded element.
     *
     * @param  string $var
     * @return boolean
     */
    public function __isset($var)
    {
        switch ($var) {
            case 'content':
                // don't use other callback to prevent invalid returned value
                return $this->content() !== null;
            default:
                return parent::__isset($var);
        }
    }
    
    /**
     * Overwrites parent::_call method to enable read access
     * to content:encoded element.
     * Please note that method-style write access is not currently supported
     * by parent method, consequently this method doesn't as well.
     *
     * @param  string $var    The element to get the string value of.
     * @param  mixed  $unused This parameter is not used.
     * @return mixed The node's value, null, or an array of nodes.
     */
    public function __call($var, $unused)
    {
        switch ($var) {
            case 'content':
                $prefix = $this->_element->lookupPrefix('http://purl.org/rss/1.0/modules/content/');
                return parent::__call("$prefix:encoded", $unused);
            default:
                return parent::__call($var, $unused);
        }
    }
}
PKpG[�~ΝFeed/Entry/Abstract.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 10383 2008-07-24 19:46:15Z matthew $
 */


/**
 * @see Zend_Feed
 */
require_once 'Zend/Feed.php';

/**
 * @see Zend_Feed_Element
 */
require_once 'Zend/Feed/Element.php';


/**
 * Zend_Feed_Entry_Abstract represents a single entry in an Atom or RSS
 * feed.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Feed_Entry_Abstract extends Zend_Feed_Element
{
    /**
     * Root XML element for entries. Subclasses must define this to a
     * non-null value.
     *
     * @var string
     */
    protected $_rootElement;

    /**
     * Root namespace for entries. Subclasses may define this to a
     * non-null value.
     *
     * @var string
     */
    protected $_rootNamespace = null;


    /**
     * Zend_Feed_Entry_Abstract constructor
     *
     * The Zend_Feed_Entry_Abstract constructor takes the URI of the feed the entry
     * is part of, and optionally an XML construct (usually a
     * SimpleXMLElement, but it can be an XML string or a DOMNode as
     * well) that contains the contents of the entry.
     *
     * @param  string $uri
     * @param  SimpleXMLElement|DOMNode|string  $element
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function __construct($uri = null, $element = null)
    {
        if (!($element instanceof DOMElement)) {
            if ($element) {
                // Load the feed as an XML DOMDocument object
                @ini_set('track_errors', 1);
                $doc = new DOMDocument();
                $status = @$doc->loadXML($element);
                @ini_restore('track_errors');

                if (!$status) {
                    // prevent the class to generate an undefined variable notice (ZF-2590)
                    if (!isset($php_errormsg)) {
                        if (function_exists('xdebug_is_enabled')) {
                            $php_errormsg = '(error message not available, when XDebug is running)';
                        } else {
                            $php_errormsg = '(error message not available)';
                        }
                    }

                    /** 
                     * @see Zend_Feed_Exception
                     */
                    require_once 'Zend/Feed/Exception.php';
                    throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg");
                }

                $element = $doc->getElementsByTagName($this->_rootElement)->item(0);
                if (!$element) {
                    /** 
                     * @see Zend_Feed_Exception
                     */
                    require_once 'Zend/Feed/Exception.php';
                    throw new Zend_Feed_Exception('No root <' . $this->_rootElement . '> element found, cannot parse feed.');
                }
            } else {
                $doc = new DOMDocument('1.0', 'utf-8');
                if ($this->_rootNamespace !== null) {
                    $element = $doc->createElementNS(Zend_Feed::lookupNamespace($this->_rootNamespace), $this->_rootElement);
                } else {
                    $element = $doc->createElement($this->_rootElement);
                }
            }
        }

        parent::__construct($element);
    }

}
PKpG[�f��FFFeed/Builder.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Builder.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Feed_Builder_Interface
 */
require_once 'Zend/Feed/Builder/Interface.php';

/**
 * @see Zend_Feed_Builder_Header
 */
require_once 'Zend/Feed/Builder/Header.php';

/**
 * @see Zend_Feed_Builder_Entry
 */
require_once 'Zend/Feed/Builder/Entry.php';


/**
 * A simple implementation of Zend_Feed_Builder_Interface.
 *
 * Users are encouraged to make their own classes to implement Zend_Feed_Builder_Interface
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Builder implements Zend_Feed_Builder_Interface
{
    /**
     * The data of the feed
     *
     * @var $_data array
     */
    private $_data;

    /**
     * Header of the feed
     *
     * @var $_header Zend_Feed_Builder_Header
     */
    private $_header;

    /**
     * List of the entries of the feed
     *
     * @var $_entries array
     */
    private $_entries = array();

    /**
     * Constructor. The $data array must conform to the following format:
     * <code>
     *  array(
     *  'title'       => 'title of the feed', //required
     *  'link'        => 'canonical url to the feed', //required
     *  'lastUpdate'  => 'timestamp of the update date', // optional
     *  'published'   => 'timestamp of the publication date', //optional
     *  'charset'     => 'charset', // required
     *  'description' => 'short description of the feed', //optional
     *  'author'      => 'author/publisher of the feed', //optional
     *  'email'       => 'email of the author', //optional
     *  'webmaster'   => 'email address for person responsible for technical issues' // optional, ignored if atom is used
     *  'copyright'   => 'copyright notice', //optional
     *  'image'       => 'url to image', //optional
     *  'generator'   => 'generator', // optional
     *  'language'    => 'language the feed is written in', // optional
     *  'ttl'         => 'how long in minutes a feed can be cached before refreshing', // optional, ignored if atom is used
     *  'rating'      => 'The PICS rating for the channel.', // optional, ignored if atom is used
     *  'cloud'       => array(
     *                    'domain'            => 'domain of the cloud, e.g. rpc.sys.com' // required
     *                    'port'              => 'port to connect to' // optional, default to 80
     *                    'path'              => 'path of the cloud, e.g. /RPC2 //required
     *                    'registerProcedure' => 'procedure to call, e.g. myCloud.rssPleaseNotify' // required
     *                    'protocol'          => 'protocol to use, e.g. soap or xml-rpc' // required
     *                    ), a cloud to be notified of updates // optional, ignored if atom is used
     *  'textInput'   => array(
     *                    'title'       => 'the label of the Submit button in the text input area' // required,
     *                    'description' => 'explains the text input area' // required
     *                    'name'        => 'the name of the text object in the text input area' // required
     *                    'link'        => 'the URL of the CGI script that processes text input requests' // required
     *                    ) // a text input box that can be displayed with the feed // optional, ignored if atom is used
     *  'skipHours'   => array(
     *                    'hour in 24 format', // e.g 13 (1pm)
     *                    // up to 24 rows whose value is a number between 0 and 23
     *                    ) // Hint telling aggregators which hours they can skip // optional, ignored if atom is used
     *  'skipDays '   => array(
     *                    'a day to skip', // e.g Monday
     *                    // up to 7 rows whose value is a Monday, Tuesday, Wednesday, Thursday, Friday, Saturday or Sunday
     *                    ) // Hint telling aggregators which days they can skip // optional, ignored if atom is used
     *  'itunes'      => array(
     *                    'author'       => 'Artist column' // optional, default to the main author value
     *                    'owner'        => array(
     *                                        'name' => 'name of the owner' // optional, default to main author value
     *                                        'email' => 'email of the owner' // optional, default to main email value
     *                                        ) // Owner of the podcast // optional
     *                    'image'        => 'album/podcast art' // optional, default to the main image value
     *                    'subtitle'     => 'short description' // optional, default to the main description value
     *                    'summary'      => 'longer description' // optional, default to the main description value
     *                    'block'        => 'Prevent an episode from appearing (yes|no)' // optional
     *                    'category'     => array(
     *                                      array('main' => 'main category', // required
     *                                            'sub'  => 'sub category' // optional
     *                                        ),
     *                                        // up to 3 rows
     *                                        ) // 'Category column and in iTunes Music Store Browse' // required
     *                    'explicit'     => 'parental advisory graphic (yes|no|clean)' // optional
     *                    'keywords'     => 'a comma separated list of 12 keywords maximum' // optional
     *                    'new-feed-url' => 'used to inform iTunes of new feed URL location' // optional
     *                    ) // Itunes extension data // optional, ignored if atom is used
     *  'entries'     => array(
     *                   array(
     *                    'title'        => 'title of the feed entry', //required
     *                    'link'         => 'url to a feed entry', //required
     *                    'description'  => 'short version of a feed entry', // only text, no html, required
     *                    'guid'         => 'id of the article, if not given link value will used', //optional
     *                    'content'      => 'long version', // can contain html, optional
     *                    'lastUpdate'   => 'timestamp of the publication date', // optional
     *                    'comments'     => 'comments page of the feed entry', // optional
     *                    'commentRss'   => 'the feed url of the associated comments', // optional
     *                    'source'       => array(
     *                                        'title' => 'title of the original source' // required,
     *                                        'url' => 'url of the original source' // required
     *                                           ) // original source of the feed entry // optional
     *                    'category'     => array(
     *                                      array(
     *                                        'term' => 'first category label' // required,
     *                                        'scheme' => 'url that identifies a categorization scheme' // optional
     *                                            ),
     *                                      array(
     *                                         //data for the second category and so on
     *                                           )
     *                                        ) // list of the attached categories // optional
     *                    'enclosure'    => array(
     *                                      array(
     *                                        'url' => 'url of the linked enclosure' // required
     *                                        'type' => 'mime type of the enclosure' // optional
     *                                        'length' => 'length of the linked content in octets' // optional
     *                                           ),
     *                                      array(
     *                                         //data for the second enclosure and so on
     *                                           )
     *                                        ) // list of the enclosures of the feed entry // optional
     *                   ),
     *                   array(
     *                   //data for the second entry and so on
     *                   )
     *                 )
     * );
     * </code>
     *
     * @param  array $data
     * @return void
     */
    public function __construct(array $data)
    {
        $this->_data = $data;
        $this->_createHeader($data);
        if (isset($data['entries'])) {
            $this->_createEntries($data['entries']);
        }
    }

    /**
     * Returns an instance of Zend_Feed_Builder_Header
     * describing the header of the feed
     *
     * @return Zend_Feed_Builder_Header
     */
    public function getHeader()
    {
        return $this->_header;
    }

    /**
     * Returns an array of Zend_Feed_Builder_Entry instances
     * describing the entries of the feed
     *
     * @return array of Zend_Feed_Builder_Entry
     */
    public function getEntries()
    {
        return $this->_entries;
    }

    /**
     * Create the Zend_Feed_Builder_Header instance
     *
     * @param  array $data
     * @throws Zend_Feed_Builder_Exception
     * @return void
     */
    private function _createHeader(array $data)
    {
        $mandatories = array('title', 'link', 'charset');
        foreach ($mandatories as $mandatory) {
            if (!isset($data[$mandatory])) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("$mandatory key is missing");
            }
        }
        $this->_header = new Zend_Feed_Builder_Header($data['title'], $data['link'], $data['charset']);
        if (isset($data['lastUpdate'])) {
            $this->_header->setLastUpdate($data['lastUpdate']);
        }
        if (isset($data['published'])) {
            $this->_header->setPublishedDate($data['published']);
        }
        if (isset($data['description'])) {
            $this->_header->setDescription($data['description']);
        }
        if (isset($data['author'])) {
            $this->_header->setAuthor($data['author']);
        }
        if (isset($data['email'])) {
            $this->_header->setEmail($data['email']);
        }
        if (isset($data['webmaster'])) {
            $this->_header->setWebmaster($data['webmaster']);
        }
        if (isset($data['copyright'])) {
            $this->_header->setCopyright($data['copyright']);
        }
        if (isset($data['image'])) {
            $this->_header->setImage($data['image']);
        }
        if (isset($data['generator'])) {
            $this->_header->setGenerator($data['generator']);
        }
        if (isset($data['language'])) {
            $this->_header->setLanguage($data['language']);
        }
        if (isset($data['ttl'])) {
            $this->_header->setTtl($data['ttl']);
        }
        if (isset($data['rating'])) {
            $this->_header->setRating($data['rating']);
        }
        if (isset($data['cloud'])) {
            $mandatories = array('domain', 'path', 'registerProcedure', 'protocol');
            foreach ($mandatories as $mandatory) {
                if (!isset($data['cloud'][$mandatory])) {
                    /**
                     * @see Zend_Feed_Builder_Exception
                     */
                    require_once 'Zend/Feed/Builder/Exception.php';
                    throw new Zend_Feed_Builder_Exception("you have to define $mandatory property of your cloud");
                }
            }
            $uri_str = 'http://' . $data['cloud']['domain'] . $data['cloud']['path'];
            $this->_header->setCloud($uri_str, $data['cloud']['registerProcedure'], $data['cloud']['protocol']);
        }
        if (isset($data['textInput'])) {
            $mandatories = array('title', 'description', 'name', 'link');
            foreach ($mandatories as $mandatory) {
                if (!isset($data['textInput'][$mandatory])) {
                    /**
                     * @see Zend_Feed_Builder_Exception
                     */
                    require_once 'Zend/Feed/Builder/Exception.php';
                    throw new Zend_Feed_Builder_Exception("you have to define $mandatory property of your textInput");
                }
            }
            $this->_header->setTextInput($data['textInput']['title'],
                                         $data['textInput']['description'],
                                         $data['textInput']['name'],
                                         $data['textInput']['link']);
        }
        if (isset($data['skipHours'])) {
            $this->_header->setSkipHours($data['skipHours']);
        }
        if (isset($data['skipDays'])) {
            $this->_header->setSkipDays($data['skipDays']);
        }
        if (isset($data['itunes'])) {
            $itunes = new Zend_Feed_Builder_Header_Itunes($data['itunes']['category']);
            if (isset($data['itunes']['author'])) {
                $itunes->setAuthor($data['itunes']['author']);
            }
            if (isset($data['itunes']['owner'])) {
                $name = isset($data['itunes']['owner']['name']) ? $data['itunes']['owner']['name'] : '';
                $email = isset($data['itunes']['owner']['email']) ? $data['itunes']['owner']['email'] : '';
                $itunes->setOwner($name, $email);
            }
            if (isset($data['itunes']['image'])) {
                $itunes->setImage($data['itunes']['image']);
            }
            if (isset($data['itunes']['subtitle'])) {
                $itunes->setSubtitle($data['itunes']['subtitle']);
            }
            if (isset($data['itunes']['summary'])) {
                $itunes->setSummary($data['itunes']['summary']);
            }
            if (isset($data['itunes']['block'])) {
                $itunes->setBlock($data['itunes']['block']);
            }
            if (isset($data['itunes']['explicit'])) {
                $itunes->setExplicit($data['itunes']['explicit']);
            }
            if (isset($data['itunes']['keywords'])) {
                $itunes->setKeywords($data['itunes']['keywords']);
            }
            if (isset($data['itunes']['new-feed-url'])) {
                $itunes->setNewFeedUrl($data['itunes']['new-feed-url']);
            }

            $this->_header->setITunes($itunes);
        }
    }

    /**
     * Create the array of article entries
     *
     * @param  array $data
     * @throws Zend_Feed_Builder_Exception
     * @return void
     */
    private function _createEntries(array $data)
    {
        foreach ($data as $row) {
            $mandatories = array('title', 'link', 'description');
            foreach ($mandatories as $mandatory) {
                if (!isset($row[$mandatory])) {
                    /**
                     * @see Zend_Feed_Builder_Exception
                     */
                    require_once 'Zend/Feed/Builder/Exception.php';
                    throw new Zend_Feed_Builder_Exception("$mandatory key is missing");
                }
            }
            $entry = new Zend_Feed_Builder_Entry($row['title'], $row['link'], $row['description']);
            if (isset($row['guid'])) {
                $entry->setId($row['guid']);
            }
            if (isset($row['content'])) {
                $entry->setContent($row['content']);
            }
            if (isset($row['lastUpdate'])) {
                $entry->setLastUpdate($row['lastUpdate']);
            }
            if (isset($row['comments'])) {
                $entry->setCommentsUrl($row['comments']);
            }
            if (isset($row['commentRss'])) {
                $entry->setCommentsRssUrl($row['commentRss']);
            }
            if (isset($row['source'])) {
                $mandatories = array('title', 'url');
                foreach ($mandatories as $mandatory) {
                    if (!isset($row['source'][$mandatory])) {
                        /**
                         * @see Zend_Feed_Builder_Exception
                         */
                        require_once 'Zend/Feed/Builder/Exception.php';
                        throw new Zend_Feed_Builder_Exception("$mandatory key of source property is missing");
                    }
                }
                $entry->setSource($row['source']['title'], $row['source']['url']);
            }
            if (isset($row['category'])) {
                $entry->setCategories($row['category']);
            }
            if (isset($row['enclosure'])) {
                $entry->setEnclosures($row['enclosure']);
            }

            $this->_entries[] = $entry;
        }
    }
}PKpG[\�d�.�.Feed/Builder/Header.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Header.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Feed_Builder_Header_Itunes
 */
require_once 'Zend/Feed/Builder/Header/Itunes.php';

/**
 * @see Zend_Uri
 */
require_once 'Zend/Uri.php';


/**
 * Header of a custom build feed
 *
 * Classes implementing the Zend_Feed_Builder_Interface interface
 * uses this class to describe the header of a feed
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Builder_Header extends ArrayObject
{
    /**
     * Constructor
     *
     * @param  string $title title of the feed
     * @param  string $link canonical url of the feed
     * @param  string $charset charset of the textual data
     * @return void
     */
    public function __construct($title, $link, $charset = 'utf-8')
    {
        $this->offsetSet('title', $title);
        $this->offsetSet('link', $link);
        $this->offsetSet('charset', $charset);
        $this->setLastUpdate(time())
             ->setGenerator('Zend_Feed');
    }

    /**
     * Read only properties accessor
     *
     * @param  string $name property to read
     * @return mixed
     */
    public function __get($name)
    {
        if (!$this->offsetExists($name)) {
            return NULL;
        }

        return $this->offsetGet($name);
    }

    /**
     * Write properties accessor
     *
     * @param string $name  name of the property to set
     * @param mixed  $value value to set
     * @return void
     */
    public function __set($name, $value)
    {
        $this->offsetSet($name, $value);
    }

    /**
     * Isset accessor
     *
     * @param  string $key
     * @return boolean
     */
    public function __isset($key)
    {
        return $this->offsetExists($key);
    }

    /**
     * Unset accessor
     *
     * @param  string $key
     * @return void
     */
    public function __unset($key)
    {
        if ($this->offsetExists($key)) {
            $this->offsetUnset($key);
        }
    }

    /**
     * Timestamp of the update date
     *
     * @param  int $lastUpdate
     * @return Zend_Feed_Builder_Header
     */
    public function setLastUpdate($lastUpdate)
    {
        $this->offsetSet('lastUpdate', $lastUpdate);
        return $this;
    }

    /**
     * Timestamp of the publication date
     *
     * @param  int $published
     * @return Zend_Feed_Builder_Header
     */
    public function setPublishedDate($published)
    {
        $this->offsetSet('published', $published);
        return $this;
    }

    /**
     * Short description of the feed
     *
     * @param  string $description
     * @return Zend_Feed_Builder_Header
     */
    public function setDescription($description)
    {
        $this->offsetSet('description', $description);
        return $this;
    }

    /**
     * Sets the author of the feed
     *
     * @param  string $author
     * @return Zend_Feed_Builder_Header
     */
    public function setAuthor($author)
    {
        $this->offsetSet('author', $author);
        return $this;
    }

    /**
     * Sets the author's email
     *
     * @param  string $email
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setEmail($email)
    {
        Zend_Loader::loadClass('Zend_Validate_EmailAddress');
        $validate = new Zend_Validate_EmailAddress();
        if (!$validate->isValid($email)) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the email property");
        }
        $this->offsetSet('email', $email);
        return $this;
    }

    /**
     * Sets the copyright notice
     *
     * @param  string $copyright
     * @return Zend_Feed_Builder_Header
     */
    public function setCopyright($copyright)
    {
        $this->offsetSet('copyright', $copyright);
        return $this;
    }

    /**
     * Sets the image of the feed
     *
     * @param  string $image
     * @return Zend_Feed_Builder_Header
     */
    public function setImage($image)
    {
        $this->offsetSet('image', $image);
        return $this;
    }

    /**
     * Sets the generator of the feed
     *
     * @param  string $generator
     * @return Zend_Feed_Builder_Header
     */
    public function setGenerator($generator)
    {
        $this->offsetSet('generator', $generator);
        return $this;
    }

    /**
     * Sets the language of the feed
     *
     * @param  string $language
     * @return Zend_Feed_Builder_Header
     */
    public function setLanguage($language)
    {
        $this->offsetSet('language', $language);
        return $this;
    }

    /**
     * Email address for person responsible for technical issues
     * Ignored if atom is used
     *
     * @param  string $webmaster
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setWebmaster($webmaster)
    {
        Zend_Loader::loadClass('Zend_Validate_EmailAddress');
        $validate = new Zend_Validate_EmailAddress();
        if (!$validate->isValid($webmaster)) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the webmaster property");
        }
        $this->offsetSet('webmaster', $webmaster);
        return $this;
    }

    /**
     * How long in minutes a feed can be cached before refreshing
     * Ignored if atom is used
     *
     * @param  int $ttl
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setTtl($ttl)
    {
        Zend_Loader::loadClass('Zend_Validate_Int');
        $validate = new Zend_Validate_Int();
        if (!$validate->isValid($ttl)) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set an integer value to the ttl property");
        }
        $this->offsetSet('ttl', $ttl);
        return $this;
    }

    /**
     * PICS rating for the feed
     * Ignored if atom is used
     *
     * @param  string $rating
     * @return Zend_Feed_Builder_Header
     */
    public function setRating($rating)
    {
        $this->offsetSet('rating', $rating);
        return $this;
    }

    /**
     * Cloud to be notified of updates of the feed
     * Ignored if atom is used
     *
     * @param  string|Zend_Uri_Http $uri
     * @param  string               $procedure procedure to call, e.g. myCloud.rssPleaseNotify
     * @param  string               $protocol  protocol to use, e.g. soap or xml-rpc
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setCloud($uri, $procedure, $protocol)
    {
        if (is_string($uri) && Zend_Uri_Http::check($uri)) {
            $uri = Zend_Uri::factory($uri);
        }
        if (!$uri instanceof Zend_Uri_Http) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception('Passed parameter is not a valid HTTP URI');
        }
        if (!$uri->getPort()) {
            $uri->setPort(80);
        }
        $this->offsetSet('cloud', array('uri' => $uri,
                                        'procedure' => $procedure,
                                        'protocol' => $protocol));
        return $this;
    }

    /**
     * A text input box that can be displayed with the feed
     * Ignored if atom is used
     *
     * @param  string $title       the label of the Submit button in the text input area
     * @param  string $description explains the text input area
     * @param  string $name        the name of the text object in the text input area
     * @param  string $link        the URL of the CGI script that processes text input requests
     * @return Zend_Feed_Builder_Header
     */
    public function setTextInput($title, $description, $name, $link)
    {
        $this->offsetSet('textInput', array('title' => $title,
                                            'description' => $description,
                                            'name' => $name,
                                            'link' => $link));
        return $this;
    }

    /**
     * Hint telling aggregators which hours they can skip
     * Ignored if atom is used
     *
     * @param  array $hours list of hours in 24 format
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setSkipHours(array $hours)
    {
        if (count($hours) > 24) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you can not have more than 24 rows in the skipHours property");
        }
        foreach ($hours as $hour) {
            if ($hour < 0 || $hour > 23) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("$hour has te be between 0 and 23");
            }
        }
        $this->offsetSet('skipHours', $hours);
        return $this;
    }

    /**
     * Hint telling aggregators which days they can skip
     * Ignored if atom is used
     *
     * @param  array $days list of days to skip, e.g. Monday
     * @return Zend_Feed_Builder_Header
     * @throws Zend_Feed_Builder_Exception
     */
    public function setSkipDays(array $days)
    {
        if (count($days) > 7) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you can not have more than 7 days in the skipDays property");
        }
        $valid = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
        foreach ($days as $day) {
            if (!in_array(strtolower($day), $valid)) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("$day is not a valid day");
            }
        }
        $this->offsetSet('skipDays', $days);
        return $this;
    }

    /**
     * Sets the iTunes rss extension
     *
     * @param  Zend_Feed_Builder_Header_Itunes $itunes
     * @return Zend_Feed_Builder_Header
     */
    public function setITunes(Zend_Feed_Builder_Header_Itunes $itunes)
    {
        $this->offsetSet('itunes', $itunes);
        return $this;
    }
}
PKpG[1DdFeed/Builder/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Feed_Exception
 */
require_once 'Zend/Feed/Exception.php';


/**
 * Zend_Feed_Builder exception class
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Builder_Exception extends Zend_Feed_Exception
{
}
PKpG[�Y0m//Feed/Builder/Interface.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Input feed data interface
 *
 * Classes implementing this interface can be passe to Zend_Feed::importBuilder
 * as an input data source for the Zend_Feed construction
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Feed_Builder_Interface
{
    /**
     * Returns an instance of Zend_Feed_Builder_Header
     * describing the header of the feed
     *
     * @return Zend_Feed_Builder_Header
     */
    public function getHeader();

    /**
     * Returns an array of Zend_Feed_Builder_Entry instances
     * describing the entries of the feed
     *
     * @return array of Zend_Feed_Builder_Entry
     */
    public function getEntries();
}
PKpG[��/�ZZFeed/Builder/Header/Itunes.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Itunes.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * ITunes rss extension
 *
 * Classes used to describe the itunes channel extension
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Builder_Header_Itunes extends ArrayObject
{
    /**
     * Constructor
     *
     * @param  array $categories Categories columns and in iTunes Music Store Browse
     * @return void
     */
    public function __construct(array $categories)
    {
        $this->setCategories($categories);
    }

    /**
     * Sets the categories column and in iTunes Music Store Browse
     * $categories must conform to the following format:
     * <code>
     * array(array('main' => 'main category',
     *             'sub' => 'sub category' // optionnal
     *            ),
     *       // up to 3 rows
     *      )
     * </code>
     *
     * @param  array $categories
     * @return Zend_Feed_Builder_Header_Itunes
     * @throws Zend_Feed_Builder_Exception
     */
    public function setCategories(array $categories)
    {
        $nb = count($categories);
        if (0 === $nb) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set at least one itunes category");
        }
        if ($nb > 3) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set at most three itunes categories");
        }
        foreach ($categories as $i => $category) {
            if (empty($category['main'])) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("you have to set the main category (category #$i)");
            }
        }
        $this->offsetSet('category', $categories);
        return $this;
    }

    /**
     * Sets the artist value, default to the feed's author value
     *
     * @param  string $author
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setAuthor($author)
    {
        $this->offsetSet('author', $author);
        return $this;
    }

    /**
     * Sets the owner of the postcast
     *
     * @param  string $name  default to the feed's author value
     * @param  string $email default to the feed's email value
     * @return Zend_Feed_Builder_Header_Itunes
     * @throws Zend_Feed_Builder_Exception
     */
    public function setOwner($name = '', $email = '')
    {
        if (!empty($email)) {
            Zend_Loader::loadClass('Zend_Validate_EmailAddress');
            $validate = new Zend_Validate_EmailAddress();
            if (!$validate->isValid($email)) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the itunes owner's email property");
            }
        }
        $this->offsetSet('owner', array('name' => $name, 'email' => $email));
        return $this;
    }

    /**
     * Sets the album/podcast art picture
     * Default to the feed's image value
     *
     * @param  string $image
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setImage($image)
    {
        $this->offsetSet('image', $image);
        return $this;
    }

    /**
     * Sets the short description of the podcast
     * Default to the feed's description
     *
     * @param  string $subtitle
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setSubtitle($subtitle)
    {
        $this->offsetSet('subtitle', $subtitle);
        return $this;
    }

    /**
     * Sets the longer description of the podcast
     * Default to the feed's description
     *
     * @param  string $summary
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setSummary($summary)
    {
        $this->offsetSet('summary', $summary);
        return $this;
    }

    /**
     * Prevent a feed from appearing
     *
     * @param  string $block can be 'yes' or 'no'
     * @return Zend_Feed_Builder_Header_Itunes
     * @throws Zend_Feed_Builder_Exception
     */
    public function setBlock($block)
    {
        $block = strtolower($block);
        if (!in_array($block, array('yes', 'no'))) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set yes or no to the itunes block property");
        }
        $this->offsetSet('block', $block);
        return $this;
    }

    /**
     * Configuration of the parental advisory graphic
     *
     * @param  string $explicit can be 'yes', 'no' or 'clean'
     * @return Zend_Feed_Builder_Header_Itunes
     * @throws Zend_Feed_Builder_Exception
     */
    public function setExplicit($explicit)
    {
        $explicit = strtolower($explicit);
        if (!in_array($explicit, array('yes', 'no', 'clean'))) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to set yes, no or clean to the itunes explicit property");
        }
        $this->offsetSet('explicit', $explicit);
        return $this;
    }

    /**
     * Sets a comma separated list of 12 keywords maximum
     *
     * @param  string $keywords
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setKeywords($keywords)
    {
        $this->offsetSet('keywords', $keywords);
        return $this;
    }

    /**
     * Sets the new feed URL location
     *
     * @param  string $url
     * @return Zend_Feed_Builder_Header_Itunes
     */
    public function setNewFeedUrl($url)
    {
        $this->offsetSet('new_feed_url', $url);
        return $this;
    }

    /**
     * Read only properties accessor
     *
     * @param  string $name property to read
     * @return mixed
     */
    public function __get($name)
    {
        if (!$this->offsetExists($name)) {
            return NULL;
        }

        return $this->offsetGet($name);
    }

    /**
     * Write properties accessor
     *
     * @param  string $name  name of the property to set
     * @param  mixed  $value value to set
     * @return void
     */
    public function __set($name, $value)
    {
        $this->offsetSet($name, $value);
    }

    /**
     * Isset accessor
     *
     * @param  string $key
     * @return boolean
     */
    public function __isset($key)
    {
        return $this->offsetExists($key);
    }

    /**
     * Unset accessor
     *
     * @param  string $key
     * @return void
     */
    public function __unset($key)
    {
        if ($this->offsetExists($key)) {
            $this->offsetUnset($key);
        }
    }

}PKpG[D_v(��Feed/Builder/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * An entry of a custom build feed
 *
 * Classes implementing the Zend_Feed_Builder_Interface interface
 * uses this class to describe an entry of a feed
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Builder_Entry extends ArrayObject
{
    /**
     * Create a new builder entry
     *
     * @param  string $title
     * @param  string $link
     * @param  string $description short version of the entry, no html
     * @return void
     */
    public function __construct($title, $link, $description)
    {
        $this->offsetSet('title', $title);
        $this->offsetSet('link', $link);
        $this->offsetSet('description', $description);
        $this->setLastUpdate(time());
    }

    /**
     * Read only properties accessor
     *
     * @param  string $name property to read
     * @return mixed
     */
    public function __get($name)
    {
        if (!$this->offsetExists($name)) {
            return NULL;
        }

        return $this->offsetGet($name);
    }

    /**
     * Write properties accessor
     *
     * @param  string $name name of the property to set
     * @param  mixed $value value to set
     * @return void
     */
    public function __set($name, $value)
    {
        $this->offsetSet($name, $value);
    }

    /**
     * Isset accessor
     *
     * @param  string $key
     * @return boolean
     */
    public function __isset($key)
    {
        return $this->offsetExists($key);
    }

    /**
     * Unset accessor
     *
     * @param  string $key
     * @return void
     */
    public function __unset($key)
    {
        if ($this->offsetExists($key)) {
            $this->offsetUnset($key);
        }
    }

    /**
     * Sets the id/guid of the entry
     *
     * @param  string $id
     * @return Zend_Feed_Builder_Entry
     */
    public function setId($id)
    {
        $this->offsetSet('guid', $id);
        return $this;
    }

    /**
     * Sets the full html content of the entry
     *
     * @param  string $content
     * @return Zend_Feed_Builder_Entry
     */
    public function setContent($content)
    {
        $this->offsetSet('content', $content);
        return $this;
    }

    /**
     * Timestamp of the update date
     *
     * @param  int $lastUpdate
     * @return Zend_Feed_Builder_Entry
     */
    public function setLastUpdate($lastUpdate)
    {
        $this->offsetSet('lastUpdate', $lastUpdate);
        return $this;
    }

    /**
     * Sets the url of the commented page associated to the entry
     *
     * @param  string $comments
     * @return Zend_Feed_Builder_Entry
     */
    public function setCommentsUrl($comments)
    {
        $this->offsetSet('comments', $comments);
        return $this;
    }

    /**
     * Sets the url of the comments feed link
     *
     * @param  string $commentRss
     * @return Zend_Feed_Builder_Entry
     */
    public function setCommentsRssUrl($commentRss)
    {
        $this->offsetSet('commentRss', $commentRss);
        return $this;
    }

    /**
     * Defines a reference to the original source
     *
     * @param  string $title
     * @param  string $url
     * @return Zend_Feed_Builder_Entry
     */
    public function setSource($title, $url)
    {
        $this->offsetSet('source', array('title' => $title,
                                         'url' => $url));
        return $this;
    }

    /**
     * Sets the categories of the entry
     * Format of the array:
     * <code>
     * array(
     *   array(
     *         'term' => 'first category label',
     *         'scheme' => 'url that identifies a categorization scheme' // optional
     *        ),
     *   // second category and so one
     * )
     * </code>
     *
     * @param  array $categories
     * @return Zend_Feed_Builder_Entry
     */
    public function setCategories(array $categories)
    {
        foreach ($categories as $category) {
            $this->addCategory($category);
        }
        return $this;
    }

    /**
     * Add a category to the entry
     *
     * @param  array $category see Zend_Feed_Builder_Entry::setCategories() for format
     * @return Zend_Feed_Builder_Entry
     * @throws Zend_Feed_Builder_Exception
     */
    public function addCategory(array $category)
    {
        if (empty($category['term'])) {
            /**
             * @see Zend_Feed_Builder_Exception
             */
            require_once 'Zend/Feed/Builder/Exception.php';
            throw new Zend_Feed_Builder_Exception("you have to define the name of the category");
        }

        if (!$this->offsetExists('category')) {
            $categories = array($category);
        } else {
            $categories = $this->offsetGet('category');
            $categories[] = $category;
        }
        $this->offsetSet('category', $categories);
        return $this;
    }

    /**
     * Sets the enclosures of the entry
     * Format of the array:
     * <code>
     * array(
     *   array(
     *         'url' => 'url of the linked enclosure',
     *         'type' => 'mime type of the enclosure' // optional
     *         'length' => 'length of the linked content in octets' // optional
     *        ),
     *   // second enclosure and so one
     * )
     * </code>
     *
     * @param  array $enclosures
     * @return Zend_Feed_Builder_Entry
     * @throws Zend_Feed_Builder_Exception
     */
    public function setEnclosures(array $enclosures)
    {
        foreach ($enclosures as $enclosure) {
            if (empty($enclosure['url'])) {
                /**
                 * @see Zend_Feed_Builder_Exception
                 */
                require_once 'Zend/Feed/Builder/Exception.php';
                throw new Zend_Feed_Builder_Exception("you have to supply an url for your enclosure");
            }
            $type = isset($enclosure['type']) ? $enclosure['type'] : '';
            $length = isset($enclosure['length']) ? $enclosure['length'] : '';
            $this->addEnclosure($enclosure['url'], $type, $length);
        }
        return $this;
    }

    /**
     * Add an enclosure to the entry
     *
     * @param  string $url
     * @param  string $type
     * @param  string $length
     * @return Zend_Feed_Builder_Entry
     */
    public function addEnclosure($url, $type = '', $length = '')
    {
        if (!$this->offsetExists('enclosure')) {
            $enclosure = array();
        } else {
            $enclosure = $this->offsetGet('enclosure');
        }
        $enclosure[] = array('url' => $url,
                             'type' => $type,
                             'length' => $length);
        $this->offsetSet('enclosure', $enclosure);
        return $this;
    }
}
PKpG[��,�,Feed/Element.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Element.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Wraps a DOMElement allowing for SimpleXML-like access to attributes.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Element implements ArrayAccess
{

    /**
     * @var DOMElement
     */
    protected $_element;

    /**
     * @var Zend_Feed_Element
     */
    protected $_parentElement;

    /**
     * @var boolean
     */
    protected $_appended = true;


    /**
     * Zend_Feed_Element constructor.
     *
     * @param  DOMElement $element The DOM element we're encapsulating.
     * @return void
     */
    public function __construct($element = null)
    {
        $this->_element = $element;
    }


    /**
     * Get a DOM representation of the element
     *
     * Returns the underlying DOM object, which can then be
     * manipulated with full DOM methods.
     *
     * @return DOMDocument
     */
    public function getDOM()
    {
        return $this->_element;
    }


    /**
     * Update the object from a DOM element
     *
     * Take a DOMElement object, which may be originally from a call
     * to getDOM() or may be custom created, and use it as the
     * DOM tree for this Zend_Feed_Element.
     *
     * @param  DOMElement $element
     * @return void
     */
    public function setDOM(DOMElement $element)
    {
        $this->_element = $this->_element->ownerDocument->importNode($element, true);
    }

    /**
     * Set the parent element of this object to another
     * Zend_Feed_Element.
     *
     * @param  Zend_Feed_Element $element
     * @return void
     */
    public function setParent(Zend_Feed_Element $element)
    {
        $this->_parentElement = $element;
        $this->_appended = false;
    }


    /**
     * Appends this element to its parent if necessary.
     *
     * @return void
     */
    protected function ensureAppended()
    {
        if (!$this->_appended) {
            $this->_parentElement->getDOM()->appendChild($this->_element);
            $this->_appended = true;
            $this->_parentElement->ensureAppended();
        }
    }


    /**
     * Get an XML string representation of this element
     *
     * Returns a string of this element's XML, including the XML
     * prologue.
     *
     * @return string
     */
    public function saveXml()
    {
        // Return a complete document including XML prologue.
        $doc = new DOMDocument($this->_element->ownerDocument->version,
                               $this->_element->ownerDocument->actualEncoding);
        $doc->appendChild($doc->importNode($this->_element, true));
        return $doc->saveXML();
    }


    /**
     * Get the XML for only this element
     *
     * Returns a string of this element's XML without prologue.
     *
     * @return string
     */
    public function saveXmlFragment()
    {
        return $this->_element->ownerDocument->saveXML($this->_element);
    }


    /**
     * Map variable access onto the underlying entry representation.
     *
     * Get-style access returns a Zend_Feed_Element representing the
     * child element accessed. To get string values, use method syntax
     * with the __call() overriding.
     *
     * @param  string $var The property to access.
     * @return mixed
     */
    public function __get($var)
    {
        $nodes = $this->_children($var);
        $length = count($nodes);

        if ($length == 1) {
            return new Zend_Feed_Element($nodes[0]);
        } elseif ($length > 1) {
            return array_map(create_function('$e', 'return new Zend_Feed_Element($e);'), $nodes);
        } else {
            // When creating anonymous nodes for __set chaining, don't
            // call appendChild() on them. Instead we pass the current
            // element to them as an extra reference; the child is
            // then responsible for appending itself when it is
            // actually set. This way "if ($foo->bar)" doesn't create
            // a phantom "bar" element in our tree.
            if (strpos($var, ':') !== false) {
                list($ns, $elt) = explode(':', $var, 2);
                $node = $this->_element->ownerDocument->createElementNS(Zend_Feed::lookupNamespace($ns), $elt);
            } else {
                $node = $this->_element->ownerDocument->createElement($var);
            }
            $node = new self($node);
            $node->setParent($this);
            return $node;
        }
    }


    /**
     * Map variable sets onto the underlying entry representation.
     *
     * @param  string $var The property to change.
     * @param  string $val The property's new value.
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function __set($var, $val)
    {
        $this->ensureAppended();

        $nodes = $this->_children($var);
        if (!$nodes) {
            if (strpos($var, ':') !== false) {
                list($ns, $elt) = explode(':', $var, 2);
                $node = $this->_element->ownerDocument->createElementNS(Zend_Feed::lookupNamespace($ns), $var, $val);
                $this->_element->appendChild($node);
            } else {
                $node = $this->_element->ownerDocument->createElement($var, $val);
                $this->_element->appendChild($node);
            }
        } elseif (count($nodes) > 1) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('Cannot set the value of multiple tags simultaneously.');
        } else {
            $nodes[0]->nodeValue = $val;
        }
    }


    /**
     * Map isset calls onto the underlying entry representation.
     *
     * @param  string $var
     * @return boolean
     */
    public function __isset($var)
    {
        // Look for access of the form {ns:var}. We don't use
        // _children() here because we can break out of the loop
        // immediately once we find something.
        if (strpos($var, ':') !== false) {
            list($ns, $elt) = explode(':', $var, 2);
            foreach ($this->_element->childNodes as $child) {
                if ($child->localName == $elt && $child->prefix == $ns) {
                    return true;
                }
            }
        } else {
            foreach ($this->_element->childNodes as $child) {
                if ($child->localName == $var) {
                    return true;
                }
            }
        }
    }


    /**
     * Get the value of an element with method syntax.
     *
     * Map method calls to get the string value of the requested
     * element. If there are multiple elements that match, this will
     * return an array of those objects.
     *
     * @param  string $var    The element to get the string value of.
     * @param  mixed  $unused This parameter is not used.
     * @return mixed The node's value, null, or an array of nodes.
     */
    public function __call($var, $unused)
    {
        $nodes = $this->_children($var);

        if (!$nodes) {
            return null;
        } elseif (count($nodes) > 1) {
            return $nodes;
        } else {
            return $nodes[0]->nodeValue;
        }
    }


    /**
     * Remove all children matching $var.
     *
     * @param  string $var
     * @return void
     */
    public function __unset($var)
    {
        $nodes = $this->_children($var);
        foreach ($nodes as $node) {
            $parent = $node->parentNode;
            $parent->removeChild($node);
        }
    }


    /**
     * Returns the nodeValue of this element when this object is used
     * in a string context.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->_element->nodeValue;
    }


    /**
     * Finds children with tagnames matching $var
     *
     * Similar to SimpleXML's children() method.
     *
     * @param  string $var Tagname to match, can be either namespace:tagName or just tagName.
     * @return array
     */
    protected function _children($var)
    {
        $found = array();

        // Look for access of the form {ns:var}.
        if (strpos($var, ':') !== false) {
            list($ns, $elt) = explode(':', $var, 2);
            foreach ($this->_element->childNodes as $child) {
                if ($child->localName == $elt && $child->prefix == $ns) {
                    $found[] = $child;
                }
            }
        } else {
            foreach ($this->_element->childNodes as $child) {
                if ($child->localName == $var) {
                    $found[] = $child;
                }
            }
        }

        return $found;
    }


    /**
     * Required by the ArrayAccess interface.
     *
     * @param  string $offset
     * @return boolean
     */
    public function offsetExists($offset)
    {
        if (strpos($offset, ':') !== false) {
            list($ns, $attr) = explode(':', $offset, 2);
            return $this->_element->hasAttributeNS(Zend_Feed::lookupNamespace($ns), $attr);
        } else {
            return $this->_element->hasAttribute($offset);
        }
    }


    /**
     * Required by the ArrayAccess interface.
     *
     * @param  string $offset
     * @return string
     */
    public function offsetGet($offset)
    {
        if (strpos($offset, ':') !== false) {
            list($ns, $attr) = explode(':', $offset, 2);
            return $this->_element->getAttributeNS(Zend_Feed::lookupNamespace($ns), $attr);
        } else {
            return $this->_element->getAttribute($offset);
        }
    }


    /**
     * Required by the ArrayAccess interface.
     *
     * @param  string $offset
     * @param  string $value
     * @return string
     */
    public function offsetSet($offset, $value)
    {
        $this->ensureAppended();

        if (strpos($offset, ':') !== false) {
            list($ns, $attr) = explode(':', $offset, 2);
            return $this->_element->setAttributeNS(Zend_Feed::lookupNamespace($ns), $attr, $value);
        } else {
            return $this->_element->setAttribute($offset, $value);
        }
    }


    /**
     * Required by the ArrayAccess interface.
     *
     * @param  string $offset
     * @return boolean
     */
    public function offsetUnset($offset)
    {
        if (strpos($offset, ':') !== false) {
            list($ns, $attr) = explode(':', $offset, 2);
            return $this->_element->removeAttributeNS(Zend_Feed::lookupNamespace($ns), $attr);
        } else {
            return $this->_element->removeAttribute($offset);
        }
    }

}
PKpG[�N�t�5�5
Feed/Atom.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Atom.php 11654 2008-10-03 16:03:35Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Feed_Abstract
 */
require_once 'Zend/Feed/Abstract.php';

/**
 * @see Zend_Feed_Entry_Atom
 */
require_once 'Zend/Feed/Entry/Atom.php';


/**
 * Atom feed class
 *
 * The Zend_Feed_Atom class is a concrete subclass of the general
 * Zend_Feed_Abstract class, tailored for representing an Atom
 * feed. It shares all of the same methods with its abstract
 * parent. The distinction is made in the format of data that
 * Zend_Feed_Atom expects, and as a further pointer for users as to
 * what kind of feed object they have been passed.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Atom extends Zend_Feed_Abstract
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Feed_Entry_Atom';

    /**
     * The element name for individual feed elements (Atom <entry>
     * elements).
     *
     * @var string
     */
    protected $_entryElementName = 'entry';

    /**
     * The default namespace for Atom feeds.
     *
     * @var string
     */
    protected $_defaultNamespace = 'atom';


    /**
     * Override Zend_Feed_Abstract to set up the $_element and $_entries aliases.
     *
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function __wakeup()
    {
        parent::__wakeup();

        // Find the base feed element and create an alias to it.
        $element = $this->_element->getElementsByTagName('feed')->item(0);
        if (!$element) {
            // Try to find a single <entry> instead.
            $element = $this->_element->getElementsByTagName($this->_entryElementName)->item(0);
            if (!$element) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('No root <feed> or <' . $this->_entryElementName
                                              . '> element found, cannot parse feed.');
            }

            $doc = new DOMDocument($this->_element->version,
                                   $this->_element->actualEncoding);
            $feed = $doc->appendChild($doc->createElement('feed'));
            $feed->appendChild($doc->importNode($element, true));
            $element = $feed;
        }

        $this->_element = $element;

        // Find the entries and save a pointer to them for speed and
        // simplicity.
        $this->_buildEntryCache();
    }


    /**
     * Easy access to <link> tags keyed by "rel" attributes.
     *
     * If $elt->link() is called with no arguments, we will attempt to
     * return the value of the <link> tag(s) like all other
     * method-syntax attribute access. If an argument is passed to
     * link(), however, then we will return the "href" value of the
     * first <link> tag that has a "rel" attribute matching $rel:
     *
     * $elt->link(): returns the value of the link tag.
     * $elt->link('self'): returns the href from the first <link rel="self"> in the entry.
     *
     * @param  string $rel The "rel" attribute to look for.
     * @return mixed
     */
    public function link($rel = null)
    {
        if ($rel === null) {
            return parent::__call('link', null);
        }

        // index link tags by their "rel" attribute.
        $links = parent::__get('link');
        if (!is_array($links)) {
            if ($links instanceof Zend_Feed_Element) {
                $links = array($links);
            } else {
                return $links;
            }
        }

        foreach ($links as $link) {
            if (empty($link['rel'])) {
                continue;
            }
            if ($rel == $link['rel']) {
                return $link['href'];
            }
        }

        return null;
    }


    /**
     * Make accessing some individual elements of the feed easier.
     *
     * Special accessors 'entry' and 'entries' are provided so that if
     * you wish to iterate over an Atom feed's entries, you can do so
     * using foreach ($feed->entries as $entry) or foreach
     * ($feed->entry as $entry).
     *
     * @param  string $var The property to access.
     * @return mixed
     */
    public function __get($var)
    {
        switch ($var) {
            case 'entry':
                // fall through to the next case
            case 'entries':
                return $this;

            default:
                return parent::__get($var);
        }
    }

    /**
     * Generate the header of the feed when working in write mode
     *
     * @param  array $array the data to use
     * @return DOMElement root node
     */
    protected function _mapFeedHeaders($array)
    {
        $feed = $this->_element->createElement('feed');
        $feed->setAttribute('xmlns', 'http://www.w3.org/2005/Atom');

        $id = $this->_element->createElement('id', $array->link);
        $feed->appendChild($id);

        $title = $this->_element->createElement('title');
        $title->appendChild($this->_element->createCDATASection($array->title));
        $feed->appendChild($title);

        if (isset($array->author)) {
            $author = $this->_element->createElement('author');
            $name = $this->_element->createElement('name', $array->author);
            $author->appendChild($name);
            if (isset($array->email)) {
                $email = $this->_element->createElement('email', $array->email);
                $author->appendChild($email);
            }
            $feed->appendChild($author);
        }

        $updated = isset($array->lastUpdate) ? $array->lastUpdate : time();
        $updated = $this->_element->createElement('updated', date(DATE_ATOM, $updated));
        $feed->appendChild($updated);

        if (isset($array->published)) {
            $published = $this->_element->createElement('published', date(DATE_ATOM, $array->published));
            $feed->appendChild($published);
        }

        $link = $this->_element->createElement('link');
        $link->setAttribute('rel', 'self');
        $link->setAttribute('href', $array->link);
        if (isset($array->language)) {
            $link->setAttribute('hreflang', $array->language);
        }
        $feed->appendChild($link);

        if (isset($array->description)) {
            $subtitle = $this->_element->createElement('subtitle');
            $subtitle->appendChild($this->_element->createCDATASection($array->description));
            $feed->appendChild($subtitle);
        }

        if (isset($array->copyright)) {
            $copyright = $this->_element->createElement('rights', $array->copyright);
            $feed->appendChild($copyright);
        }

        if (isset($array->image)) {
            $image = $this->_element->createElement('logo', $array->image);
            $feed->appendChild($image);
        }

        $generator = !empty($array->generator) ? $array->generator : 'Zend_Feed';
        $generator = $this->_element->createElement('generator', $generator);
        $feed->appendChild($generator);

        return $feed;
    }

    /**
     * Generate the entries of the feed when working in write mode
     *
     * The following nodes are constructed for each feed entry
     * <entry>
     *    <id>url to feed entry</id>
     *    <title>entry title</title>
     *    <updated>last update</updated>
     *    <link rel="alternate" href="url to feed entry" />
     *    <summary>short text</summary>
     *    <content>long version, can contain html</content>
     * </entry>
     *
     * @param  array      $array the data to use
     * @param  DOMElement $root  the root node to use
     * @return void
     */
    protected function _mapFeedEntries(DOMElement $root, $array)
    {
        foreach ($array as $dataentry) {
            $entry = $this->_element->createElement('entry');

            $id = $this->_element->createElement('id', isset($dataentry->guid) ? $dataentry->guid : $dataentry->link);
            $entry->appendChild($id);

            $title = $this->_element->createElement('title');
            $title->appendChild($this->_element->createCDATASection($dataentry->title));
            $entry->appendChild($title);

            $updated = isset($dataentry->lastUpdate) ? $dataentry->lastUpdate : time();
            $updated = $this->_element->createElement('updated', date(DATE_ATOM, $updated));
            $entry->appendChild($updated);

            $link = $this->_element->createElement('link');
            $link->setAttribute('rel', 'alternate');
            $link->setAttribute('href', $dataentry->link);
            $entry->appendChild($link);

            $summary = $this->_element->createElement('summary');
            $summary->appendChild($this->_element->createCDATASection($dataentry->description));
            $entry->appendChild($summary);

            if (isset($dataentry->content)) {
                $content = $this->_element->createElement('content');
                $content->setAttribute('type', 'html');
                $content->appendChild($this->_element->createCDATASection($dataentry->content));
                $entry->appendChild($content);
            }

            if (isset($dataentry->category)) {
                foreach ($dataentry->category as $category) {
                    $node = $this->_element->createElement('category');
                    $node->setAttribute('term', $category['term']);
                    if (isset($category['scheme'])) {
                        $node->setAttribute('scheme', $category['scheme']);
                    }
                    $entry->appendChild($node);
                }
            }

            if (isset($dataentry->source)) {
                $source = $this->_element->createElement('source');
                $title = $this->_element->createElement('title', $dataentry->source['title']);
                $source->appendChild($title);
                $link = $this->_element->createElement('link', $dataentry->source['title']);
                $link->setAttribute('rel', 'alternate');
                $link->setAttribute('href', $dataentry->source['url']);
                $source->appendChild($link);
            }

            if (isset($dataentry->enclosure)) {
                foreach ($dataentry->enclosure as $enclosure) {
                    $node = $this->_element->createElement('link');
                    $node->setAttribute('rel', 'enclosure');
                    $node->setAttribute('href', $enclosure['url']);
                    if (isset($enclosure['type'])) {
                        $node->setAttribute('type', $enclosure['type']);
                    }
                    if (isset($enclosure['length'])) {
                        $node->setAttribute('length', $enclosure['length']);
                    }
                    $entry->appendChild($node);
                }
            }

            if (isset($dataentry->comments)) {
                $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/',
                                                             'wfw:comment',
                                                             $dataentry->comments);
                $entry->appendChild($comments);
            }
            if (isset($dataentry->commentRss)) {
                $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/',
                                                             'wfw:commentRss',
                                                             $dataentry->commentRss);
                $entry->appendChild($comments);
            }

            $root->appendChild($entry);
        }
    }

    /**
     * Override Zend_Feed_Element to allow formated feeds
     *
     * @return string
     */
    public function saveXml()
    {
        // Return a complete document including XML prologue.
        $doc = new DOMDocument($this->_element->ownerDocument->version,
                               $this->_element->ownerDocument->actualEncoding);
        $doc->appendChild($doc->importNode($this->_element, true));
        $doc->formatOutput = true;

        return $doc->saveXML();
    }

    /**
     * Send feed to a http client with the correct header
     *
     * @return void
     * @throws Zend_Feed_Exception if headers have already been sent
     */
    public function send()
    {
        if (headers_sent()) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('Cannot send ATOM because headers have already been sent.');
        }

        header('Content-Type: application/atom+xml; charset=' . $this->_element->ownerDocument->actualEncoding);

        echo $this->saveXML();
    }
}
PKpG[�h�5��Feed/Abstract.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 12507 2008-11-10 16:29:09Z matthew $
 */


/**
 * @see Zend_Feed_Element
 */
require_once 'Zend/Feed/Element.php';


/**
 * The Zend_Feed_Abstract class is an abstract class representing feeds.
 *
 * Zend_Feed_Abstract implements two core PHP 5 interfaces: ArrayAccess and
 * Iterator. In both cases the collection being treated as an array is
 * considered to be the entry collection, such that iterating over the
 * feed takes you through each of the feed.s entries.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Feed_Abstract extends Zend_Feed_Element implements Iterator
{
    /**
     * Current index on the collection of feed entries for the
     * Iterator implementation.
     *
     * @var integer
     */
    protected $_entryIndex = 0;

    /**
     * Cache of feed entries.
     *
     * @var array
     */
    protected $_entries;

    /**
     * Feed constructor
     *
     * The Zend_Feed_Abstract constructor takes the URI of a feed or a
     * feed represented as a string and loads it as XML.
     *
     * @param  string $uri The full URI of the feed to load, or NULL if not retrieved via HTTP or as an array.
     * @param  string $string The feed as a string, or NULL if retrieved via HTTP or as an array.
     * @param  Zend_Feed_Builder_Interface $builder The feed as a builder instance or NULL if retrieved as a string or via HTTP.
     * @return void
     * @throws Zend_Feed_Exception If loading the feed failed.
     */
    public function __construct($uri = null, $string = null, Zend_Feed_Builder_Interface $builder = null)
    {
        if ($uri !== null) {
            // Retrieve the feed via HTTP
            $client = Zend_Feed::getHttpClient();
            $client->setUri($uri);
            $response = $client->request('GET');
            if ($response->getStatus() !== 200) {
                /** 
                 * @see Zend_Feed_Exception
                 */
                require_once 'Zend/Feed/Exception.php';
                throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus());
            }
            $this->_element = $response->getBody();
            $this->__wakeup();
        } elseif ($string !== null) {
            // Retrieve the feed from $string
            $this->_element = $string;
            $this->__wakeup();
        } else {
            // Generate the feed from the array
            $header = $builder->getHeader();
            $this->_element = new DOMDocument('1.0', $header['charset']);
            $root = $this->_mapFeedHeaders($header);
            $this->_mapFeedEntries($root, $builder->getEntries());
            $this->_element = $root;
            $this->_buildEntryCache();
        }
    }


    /**
     * Load the feed as an XML DOMDocument object
     *
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function __wakeup()
    {
        @ini_set('track_errors', 1);
        $doc = new DOMDocument;
        $status = @$doc->loadXML($this->_element);
        @ini_restore('track_errors');

        if (!$status) {
            // prevent the class to generate an undefined variable notice (ZF-2590)
            if (!isset($php_errormsg)) {
                if (function_exists('xdebug_is_enabled')) {
                    $php_errormsg = '(error message not available, when XDebug is running)';
                } else {
                    $php_errormsg = '(error message not available)';
                }
            }
            
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg");
        }

        $this->_element = $doc;
    }


    /**
     * Prepare for serialiation
     *
     * @return array
     */
    public function __sleep()
    {
        $this->_element = $this->saveXML();

        return array('_element');
    }


    /**
     * Cache the individual feed elements so they don't need to be
     * searched for on every operation.
     *
     * @return void
     */
    protected function _buildEntryCache()
    {
        $this->_entries = array();
        foreach ($this->_element->childNodes as $child) {
            if ($child->localName == $this->_entryElementName) {
                $this->_entries[] = $child;
            }
        }
    }


    /**
     * Get the number of entries in this feed object.
     *
     * @return integer Entry count.
     */
    public function count()
    {
        return count($this->_entries);
    }


    /**
     * Required by the Iterator interface.
     *
     * @return void
     */
    public function rewind()
    {
        $this->_entryIndex = 0;
    }


    /**
     * Required by the Iterator interface.
     *
     * @return mixed The current row, or null if no rows.
     */
    public function current()
    {
        return new $this->_entryClassName(
            null,
            $this->_entries[$this->_entryIndex]);
    }


    /**
     * Required by the Iterator interface.
     *
     * @return mixed The current row number (starts at 0), or NULL if no rows
     */
    public function key()
    {
        return $this->_entryIndex;
    }


    /**
     * Required by the Iterator interface.
     *
     * @return mixed The next row, or null if no more rows.
     */
    public function next()
    {
        ++$this->_entryIndex;
    }


    /**
     * Required by the Iterator interface.
     *
     * @return boolean Whether the iteration is valid
     */
    public function valid()
    {
        return 0 <= $this->_entryIndex && $this->_entryIndex < $this->count();
    }

    /**
     * Generate the header of the feed when working in write mode
     *
     * @param  array $array the data to use
     * @return DOMElement root node
     */
    abstract protected function _mapFeedHeaders($array);

    /**
     * Generate the entries of the feed when working in write mode
     *
     * @param  DOMElement $root the root node to use
     * @param  array $array the data to use
     * @return DOMElement root node
     */
    abstract protected function _mapFeedEntries(DOMElement $root, $array);

    /**
     * Send feed to a http client with the correct header
     *
     * @throws Zend_Feed_Exception if headers have already been sent
     * @return void
     */
    abstract public function send();
}
PKpG[��$�J�JFeed/Rss.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Rss.php 11654 2008-10-03 16:03:35Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Feed_Abstract
 */
require_once 'Zend/Feed/Abstract.php';

/**
 * @see Zend_Feed_Entry_Rss
 */
require_once 'Zend/Feed/Entry/Rss.php';


/**
 * RSS channel class
 *
 * The Zend_Feed_Rss class is a concrete subclass of
 * Zend_Feed_Abstract meant for representing RSS channels. It does not
 * add any methods to its parent, just provides a classname to check
 * against with the instanceof operator, and expects to be handling
 * RSS-formatted data instead of Atom.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Rss extends Zend_Feed_Abstract
{
    /**
     * The classname for individual channel elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Feed_Entry_Rss';

    /**
     * The element name for individual channel elements (RSS <item>s).
     *
     * @var string
     */
    protected $_entryElementName = 'item';

    /**
     * The default namespace for RSS channels.
     *
     * @var string
     */
    protected $_defaultNamespace = 'rss';

    /**
     * Override Zend_Feed_Abstract to set up the $_element and $_entries aliases.
     *
     * @return void
     * @throws Zend_Feed_Exception
     */
    public function __wakeup()
    {
        parent::__wakeup();

        // Find the base channel element and create an alias to it.
        $this->_element = $this->_element->getElementsByTagName('channel')->item(0);
        if (!$this->_element) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('No root <channel> element found, cannot parse channel.');
        }

        // Find the entries and save a pointer to them for speed and
        // simplicity.
        $this->_buildEntryCache();
    }


    /**
     * Make accessing some individual elements of the channel easier.
     *
     * Special accessors 'item' and 'items' are provided so that if
     * you wish to iterate over an RSS channel's items, you can do so
     * using foreach ($channel->items as $item) or foreach
     * ($channel->item as $item).
     *
     * @param  string $var The property to access.
     * @return mixed
     */
    public function __get($var)
    {
        switch ($var) {
            case 'item':
                // fall through to the next case
            case 'items':
                return $this;

            default:
                return parent::__get($var);
        }
    }

    /**
     * Generate the header of the feed when working in write mode
     *
     * @param  array $array the data to use
     * @return DOMElement root node
     */
    protected function _mapFeedHeaders($array)
    {
        $channel = $this->_element->createElement('channel');

        $title = $this->_element->createElement('title');
        $title->appendChild($this->_element->createCDATASection($array->title));
        $channel->appendChild($title);

        $link = $this->_element->createElement('link', $array->link);
        $channel->appendChild($link);

        $desc = isset($array->description) ? $array->description : '';
        $description = $this->_element->createElement('description');
        $description->appendChild($this->_element->createCDATASection($desc));
        $channel->appendChild($description);

        $pubdate = isset($array->lastUpdate) ? $array->lastUpdate : time();
        $pubdate = $this->_element->createElement('pubDate', gmdate('r', $pubdate));
        $channel->appendChild($pubdate);

        if (isset($array->published)) {
            $lastBuildDate = $this->_element->createElement('lastBuildDate', gmdate('r', $array->published));
        }

        $editor = '';
        if (!empty($array->email)) {
            $editor .= $array->email;
        }
        if (!empty($array->author)) {
            $editor .= ' (' . $array->author . ')';
        }
        if (!empty($editor)) {
            $author = $this->_element->createElement('managingEditor', ltrim($editor));
            $channel->appendChild($author);
        }
        if (isset($array->webmaster)) {
            $channel->appendChild($this->_element->createElement('webMaster', $array->webmaster));
        }

        if (!empty($array->copyright)) {
            $copyright = $this->_element->createElement('copyright', $array->copyright);
            $channel->appendChild($copyright);
        }

        if (!empty($array->image)) {
            $image = $this->_element->createElement('image');
            $url = $this->_element->createElement('url', $array->image);
            $image->appendChild($url);
            $imagetitle = $this->_element->createElement('title', $array->title);
            $image->appendChild($imagetitle);
            $imagelink = $this->_element->createElement('link', $array->link);
            $image->appendChild($imagelink);

            $channel->appendChild($image);
        }

        $generator = !empty($array->generator) ? $array->generator : 'Zend_Feed';
        $generator = $this->_element->createElement('generator', $generator);
        $channel->appendChild($generator);

        if (!empty($array->language)) {
            $language = $this->_element->createElement('language', $array->language);
            $channel->appendChild($language);
        }

        $doc = $this->_element->createElement('docs', 'http://blogs.law.harvard.edu/tech/rss');
        $channel->appendChild($doc);

        if (isset($array->cloud)) {
            $cloud = $this->_element->createElement('cloud');
            $cloud->setAttribute('domain', $array->cloud['uri']->getHost());
            $cloud->setAttribute('port', $array->cloud['uri']->getPort());
            $cloud->setAttribute('path', $array->cloud['uri']->getPath());
            $cloud->setAttribute('registerProcedure', $array->cloud['procedure']);
            $cloud->setAttribute('protocol', $array->cloud['protocol']);
            $channel->appendChild($cloud);
        }

        if (isset($array->rating)) {
            $rating = $this->_element->createElement('rating', $array->rating);
            $channel->appendChild($rating);
        }

        if (isset($array->textInput)) {
            $textinput = $this->_element->createElement('textInput');
            $textinput->appendChild($this->_element->createElement('title', $array->textInput['title']));
            $textinput->appendChild($this->_element->createElement('description', $array->textInput['description']));
            $textinput->appendChild($this->_element->createElement('name', $array->textInput['name']));
            $textinput->appendChild($this->_element->createElement('link', $array->textInput['link']));
            $channel->appendChild($textinput);
        }

        if (isset($array->skipHours)) {
            $skipHours = $this->_element->createElement('skipHours');
            foreach ($array->skipHours as $hour) {
                $skipHours->appendChild($this->_element->createElement('hour', $hour));
            }
            $channel->appendChild($skipHours);
        }

        if (isset($array->skipDays)) {
            $skipDays = $this->_element->createElement('skipDays');
            foreach ($array->skipDays as $day) {
                $skipDays->appendChild($this->_element->createElement('day', $day));
            }
            $channel->appendChild($skipDays);
        }

        if (isset($array->itunes)) {
            $this->_buildiTunes($channel, $array);
        }

        return $channel;
    }

    /**
     * Adds the iTunes extensions to a root node
     *
     * @param  DOMElement $root
     * @param  array $array
     * @return void
     */
    private function _buildiTunes(DOMElement $root, $array)
    {
        /* author node */
        $author = '';
        if (isset($array->itunes->author)) {
            $author = $array->itunes->author;
        } elseif (isset($array->author)) {
            $author = $array->author;
        }
        if (!empty($author)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:author', $author);
            $root->appendChild($node);
        }

        /* owner node */
        $author = '';
        $email = '';
        if (isset($array->itunes->owner)) {
            if (isset($array->itunes->owner['name'])) {
                $author = $array->itunes->owner['name'];
            }
            if (isset($array->itunes->owner['email'])) {
                $email = $array->itunes->owner['email'];
            }
        }
        if (empty($author) && isset($array->author)) {
            $author = $array->author;
        }
        if (empty($email) && isset($array->email)) {
            $email = $array->email;
        }
        if (!empty($author) || !empty($email)) {
            $owner = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:owner');
            if (!empty($author)) {
                $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:name', $author);
                $owner->appendChild($node);
            }
            if (!empty($email)) {
                $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:email', $email);
                $owner->appendChild($node);
            }
            $root->appendChild($owner);
        }
        $image = '';
        if (isset($array->itunes->image)) {
            $image = $array->itunes->image;
        } elseif (isset($array->image)) {
            $image = $array->image;
        }
        if (!empty($image)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:image');
            $node->setAttribute('href', $image);
            $root->appendChild($node);
        }
        $subtitle = '';
        if (isset($array->itunes->subtitle)) {
            $subtitle = $array->itunes->subtitle;
        } elseif (isset($array->description)) {
            $subtitle = $array->description;
        }
        if (!empty($subtitle)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:subtitle', $subtitle);
            $root->appendChild($node);
        }
        $summary = '';
        if (isset($array->itunes->summary)) {
            $summary = $array->itunes->summary;
        } elseif (isset($array->description)) {
            $summary = $array->description;
        }
        if (!empty($summary)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:summary', $summary);
            $root->appendChild($node);
        }
        if (isset($array->itunes->block)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:block', $array->itunes->block);
            $root->appendChild($node);
        }
        if (isset($array->itunes->explicit)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:explicit', $array->itunes->explicit);
            $root->appendChild($node);
        }
        if (isset($array->itunes->keywords)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:keywords', $array->itunes->keywords);
            $root->appendChild($node);
        }
        if (isset($array->itunes->new_feed_url)) {
            $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:new-feed-url', $array->itunes->new_feed_url);
            $root->appendChild($node);
        }
        if (isset($array->itunes->category)) {
            foreach ($array->itunes->category as $i => $category) {
                $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category');
                $node->setAttribute('text', $category['main']);
                $root->appendChild($node);
                $add_end_category = false;
                if (!empty($category['sub'])) {
                    $add_end_category = true;
                    $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category');
                    $node->setAttribute('text', $category['sub']);
                    $root->appendChild($node);
                }
                if ($i > 0 || $add_end_category) {
                    $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category');
                    $root->appendChild($node);
                }
            }
        }
    }

    /**
     * Generate the entries of the feed when working in write mode
     *
     * The following nodes are constructed for each feed entry
     * <item>
     *    <title>entry title</title>
     *    <link>url to feed entry</link>
     *    <guid>url to feed entry</guid>
     *    <description>short text</description>
     *    <content:encoded>long version, can contain html</content:encoded>
     * </item>
     *
     * @param  DOMElement $root the root node to use
     * @param  array $array the data to use
     * @return void
     */
    protected function _mapFeedEntries(DOMElement $root, $array)
    {
        Zend_Feed::registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/');

        foreach ($array as $dataentry) {
            $item = $this->_element->createElement('item');

            $title = $this->_element->createElement('title');
            $title->appendChild($this->_element->createCDATASection($dataentry->title));
            $item->appendChild($title);

            $link = $this->_element->createElement('link', $dataentry->link);
            $item->appendChild($link);

            if (isset($dataentry->guid)) {
                $guid = $this->_element->createElement('guid', $dataentry->guid);
                $item->appendChild($guid);
            }

            $description = $this->_element->createElement('description');
            $description->appendChild($this->_element->createCDATASection($dataentry->description));
            $item->appendChild($description);

            if (isset($dataentry->content)) {
                $content = $this->_element->createElement('content:encoded');
                $content->appendChild($this->_element->createCDATASection($dataentry->content));
                $item->appendChild($content);
            }

            $pubdate = isset($dataentry->lastUpdate) ? $dataentry->lastUpdate : time();
            $pubdate = $this->_element->createElement('pubDate', gmdate('r', $pubdate));
            $item->appendChild($pubdate);

            if (isset($dataentry->category)) {
                foreach ($dataentry->category as $category) {
                    $node = $this->_element->createElement('category', $category['term']);
                    if (isset($category['scheme'])) {
                        $node->setAttribute('domain', $category['scheme']);
                    }
                    $item->appendChild($node);
                }
            }

            if (isset($dataentry->source)) {
                $source = $this->_element->createElement('source', $dataentry->source['title']);
                $source->setAttribute('url', $dataentry->source['url']);
                $item->appendChild($source);
            }

            if (isset($dataentry->comments)) {
                $comments = $this->_element->createElement('comments', $dataentry->comments);
                $item->appendChild($comments);
            }
            if (isset($dataentry->commentRss)) {
                $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/',
                                                             'wfw:commentRss',
                                                             $dataentry->commentRss);
                $item->appendChild($comments);
            }


            if (isset($dataentry->enclosure)) {
                foreach ($dataentry->enclosure as $enclosure) {
                    $node = $this->_element->createElement('enclosure');
                    $node->setAttribute('url', $enclosure['url']);
                    if (isset($enclosure['type'])) {
                        $node->setAttribute('type', $enclosure['type']);
                    }
                    if (isset($enclosure['length'])) {
                        $node->setAttribute('length', $enclosure['length']);
                    }
                    $item->appendChild($node);
                }
            }

            $root->appendChild($item);
        }
    }

    /**
     * Override Zend_Feed_Element to include <rss> root node
     *
     * @return string
     */
    public function saveXml()
    {
        // Return a complete document including XML prologue.
        $doc = new DOMDocument($this->_element->ownerDocument->version,
                               $this->_element->ownerDocument->actualEncoding);
        $root = $doc->createElement('rss');

        // Use rss version 2.0
        $root->setAttribute('version', '2.0');

        // Content namespace
        $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:content', 'http://purl.org/rss/1.0/modules/content/');
        $root->appendChild($doc->importNode($this->_element, true));

        // Append root node
        $doc->appendChild($root);

        // Format output
        $doc->formatOutput = true;

        return $doc->saveXML();
    }

    /**
     * Send feed to a http client with the correct header
     *
     * @return void
     * @throws Zend_Feed_Exception if headers have already been sent
     */
    public function send()
    {
        if (headers_sent()) {
            /** 
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('Cannot send RSS because headers have already been sent.');
        }

        header('Content-Type: application/rss+xml; charset=' . $this->_element->ownerDocument->actualEncoding);

        echo $this->saveXml();
    }

}
PKpG[nJ���Feed/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * Feed exceptions
 *
 * Class to represent exceptions that occur during Feed operations.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed_Exception extends Zend_Exception
{}

PKpG[F!���Date/DateObject.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Date
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: DateObject.php 13319 2008-12-16 09:27:04Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Date
 * @subpackage Zend_Date_DateObject
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Date_DateObject {

    /**
     * UNIX Timestamp
     */
    private   $_unixTimestamp;
    protected static $_cache         = null;
    protected static $_defaultOffset = 0;

    /**
     * active timezone
     */
    private   $_timezone    = 'UTC';
    private   $_offset      = 0;
    private   $_syncronised = 0;

    // turn off DST correction if UTC or GMT
    protected $_dst         = true;

    /**
     * Table of Monthdays
     */
    private static $_monthTable = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    /**
     * Table of Years
     */
    private static $_yearTable = array(
        1970 => 0,            1960 => -315619200,   1950 => -631152000,
        1940 => -946771200,   1930 => -1262304000,  1920 => -1577923200,
        1910 => -1893456000,  1900 => -2208988800,  1890 => -2524521600,
        1880 => -2840140800,  1870 => -3155673600,  1860 => -3471292800,
        1850 => -3786825600,  1840 => -4102444800,  1830 => -4417977600,
        1820 => -4733596800,  1810 => -5049129600,  1800 => -5364662400,
        1790 => -5680195200,  1780 => -5995814400,  1770 => -6311347200,
        1760 => -6626966400,  1750 => -6942499200,  1740 => -7258118400,
        1730 => -7573651200,  1720 => -7889270400,  1710 => -8204803200,
        1700 => -8520336000,  1690 => -8835868800,  1680 => -9151488000,
        1670 => -9467020800,  1660 => -9782640000,  1650 => -10098172800,
        1640 => -10413792000, 1630 => -10729324800, 1620 => -11044944000,
        1610 => -11360476800, 1600 => -11676096000);

    /**
     * Set this object to have a new UNIX timestamp.
     *
     * @param  string|integer  $timestamp  OPTIONAL timestamp; defaults to local time using time()
     * @return string|integer  old timestamp
     * @throws Zend_Date_Exception
     */
    protected function setUnixTimestamp($timestamp = null)
    {
        $old = $this->_unixTimestamp;

        if (is_numeric($timestamp)) {
            $this->_unixTimestamp = $timestamp;
        } else if ($timestamp === null) {
            $this->_unixTimestamp = time();
        } else {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('\'' . $timestamp . '\' is not a valid UNIX timestamp', $timestamp);
        }

        return $old;
    }

    /**
     * Returns this object's UNIX timestamp
     * A timestamp greater then the integer range will be returned as string
     * This function does not return the timestamp as object. Use copy() instead.
     *
     * @return  integer|string  timestamp
     */
    protected function getUnixTimestamp()
    {
        if ($this->_unixTimestamp === intval($this->_unixTimestamp)) {
            return (int) $this->_unixTimestamp;
        } else {
            return (string) $this->_unixTimestamp;
        }
    }

    /**
     * Internal function.
     * Returns time().  This method exists to allow unit tests to work-around methods that might otherwise
     * be hard-coded to use time().  For example, this makes it possible to test isYesterday() in Date.php.
     *
     * @param   integer  $sync      OPTIONAL time syncronisation value
     * @return  integer  timestamp
     */
    protected function _getTime($sync = null)
    {
        if ($sync !== null) {
            $this->_syncronised = round($sync);
        }
        return (time() + $this->_syncronised);
    }

    /**
     * Internal mktime function used by Zend_Date.
     * The timestamp returned by mktime() can exceed the precision of traditional UNIX timestamps,
     * by allowing PHP to auto-convert to using a float value.
     *
     * Returns a timestamp relative to 1970/01/01 00:00:00 GMT/UTC.
     * DST (Summer/Winter) is depriciated since php 5.1.0.
     * Year has to be 4 digits otherwise it would be recognised as
     * year 70 AD instead of 1970 AD as expected !!
     *
     * @param  integer  $hour
     * @param  integer  $minute
     * @param  integer  $second
     * @param  integer  $month
     * @param  integer  $day
     * @param  integer  $year
     * @param  boolean  $gmt     OPTIONAL true = other arguments are for UTC time, false = arguments are for local time/date
     * @return  integer|float  timestamp (number of seconds elapsed relative to 1970/01/01 00:00:00 GMT/UTC)
     */
    protected function mktime($hour, $minute, $second, $month, $day, $year, $gmt = false)
    {

        // complete date but in 32bit timestamp - use PHP internal
        if ((1901 < $year) and ($year < 2038)) {

            $oldzone = @date_default_timezone_get();
            // Timezone also includes DST settings, therefor substracting the GMT offset is not enough
            // We have to set the correct timezone to get the right value
            if (($this->_timezone != $oldzone) and ($gmt === false)) {
                date_default_timezone_set($this->_timezone);
            }
            $result = ($gmt) ? @gmmktime($hour, $minute, $second, $month, $day, $year)
                             :   @mktime($hour, $minute, $second, $month, $day, $year);
            date_default_timezone_set($oldzone);

            return $result;
        }

        if ($gmt !== true) {
            $second += $this->_offset;
        }

        if (isset(self::$_cache)) {
            $id = strtr('Zend_DateObject_mkTime_' . $this->_offset . '_' . $year.$month.$day.'_'.$hour.$minute.$second . '_'.(int)$gmt, '-','_');
            if ($result = self::$_cache->load($id)) {
                return unserialize($result);
            }
        }

        // date to integer
        $day   = intval($day);
        $month = intval($month);
        $year  = intval($year);

        // correct months > 12 and months < 1
        if ($month > 12) {
            $overlap = floor($month / 12);
            $year   += $overlap;
            $month  -= $overlap * 12;
        } else {
            $overlap = ceil((1 - $month) / 12);
            $year   -= $overlap;
            $month  += $overlap * 12;
        }

        $date = 0;
        if ($year >= 1970) {

            // Date is after UNIX epoch
            // go through leapyears
            // add months from latest given year
            for ($count = 1970; $count <= $year; $count++) {

                $leapyear = self::isYearLeapYear($count);
                if ($count < $year) {

                    $date += 365;
                    if ($leapyear === true) {
                        $date++;
                    }

                } else {

                    for ($mcount = 0; $mcount < ($month - 1); $mcount++) {
                        $date += self::$_monthTable[$mcount];
                        if (($leapyear === true) and ($mcount == 1)) {
                            $date++;
                        }

                    }
                }
            }

            $date += $day - 1;
            $date = (($date * 86400) + ($hour * 3600) + ($minute * 60) + $second);
        } else {

            // Date is before UNIX epoch
            // go through leapyears
            // add months from latest given year
            for ($count = 1969; $count >= $year; $count--) {

                $leapyear = self::isYearLeapYear($count);
                if ($count > $year)
                {
                    $date += 365;
                    if ($leapyear === true)
                        $date++;
                } else {

                    for ($mcount = 11; $mcount > ($month - 1); $mcount--) {
                        $date += self::$_monthTable[$mcount];
                        if (($leapyear === true) and ($mcount == 1)) {
                            $date++;
                        }

                    }
                }
            }

            $date += (self::$_monthTable[$month - 1] - $day);
            $date = -(($date * 86400) + (86400 - (($hour * 3600) + ($minute * 60) + $second)));

            // gregorian correction for 5.Oct.1582
            if ($date < -12220185600) {
                $date += 864000;
            } else if ($date < -12219321600) {
                $date  = -12219321600;
            }
        }

        if (isset(self::$_cache)) {
            self::$_cache->save( serialize($date), $id);
        }

        return $date;
    }

    /**
     * Returns true, if given $year is a leap year.
     *
     * @param  integer  $year
     * @return boolean  true, if year is leap year
     */
    protected static function isYearLeapYear($year)
    {
        // all leapyears can be divided through 4
        if (($year % 4) != 0) {
            return false;
        }

        // all leapyears can be divided through 400
        if ($year % 400 == 0) {
            return true;
        } else if (($year > 1582) and ($year % 100 == 0)) {
            return false;
        }

        return true;
    }

    /**
     * Internal mktime function used by Zend_Date for handling 64bit timestamps.
     *
     * Returns a formatted date for a given timestamp.
     *
     * @param  string   $format     format for output
     * @param  mixed    $timestamp
     * @param  boolean  $gmt        OPTIONAL true = other arguments are for UTC time, false = arguments are for local time/date
     * @return string
     */
    protected function date($format, $timestamp = null, $gmt = false)
    {
        $oldzone = @date_default_timezone_get();
        if ($this->_timezone != $oldzone) {
            date_default_timezone_set($this->_timezone);
        }
        if ($timestamp === null) {
            $result = ($gmt) ? @gmdate($format) : @date($format);
            date_default_timezone_set($oldzone);
            return $result;
        }

        if (abs($timestamp) <= 0x7FFFFFFF) {
            $result = ($gmt) ? @gmdate($format, $timestamp) : @date($format, $timestamp);
            date_default_timezone_set($oldzone);
            return $result;
        }

        $jump = false;
        if (isset(self::$_cache)) {
            $idstamp = strtr('Zend_DateObject_date_' . $this->_offset . '_'. $timestamp . '_'.(int)$gmt, '-','_');
            if ($result2 = self::$_cache->load($idstamp)) {
                $timestamp = unserialize($result2);
                $jump = true;
            }
        }

        // check on false or null alone failes
        if (empty($gmt) and empty($jump)) {
            $tempstamp = $timestamp;
            if ($tempstamp > 0) {
                while (abs($tempstamp) > 0x7FFFFFFF) {
                    $tempstamp -= (86400 * 23376);
                }
                $dst = date("I", $tempstamp);
                if ($dst === 1) {
                    $timestamp += 3600;
                }
                $temp = date('Z', $tempstamp);
                $timestamp += $temp;
            }

            if (isset(self::$_cache)) {
                self::$_cache->save( serialize($timestamp), $idstamp);
            }
        }


        if (($timestamp < 0) and ($gmt !== true)) {
            $timestamp -= $this->_offset;
        }
        date_default_timezone_set($oldzone);

        $date = $this->getDateParts($timestamp, true);
        $length = strlen($format);
        $output = '';

        for ($i = 0; $i < $length; $i++) {

            switch($format[$i]) {

                // day formats
                case 'd':  // day of month, 2 digits, with leading zero, 01 - 31
                    $output .= (($date['mday'] < 10) ? '0' . $date['mday'] : $date['mday']);
                    break;

                case 'D':  // day of week, 3 letters, Mon - Sun
                    $output .= date('D', 86400 * (3 + self::dayOfWeek($date['year'], $date['mon'], $date['mday'])));
                    break;

                case 'j':  // day of month, without leading zero, 1 - 31
                    $output .= $date['mday'];
                    break;

                case 'l':  // day of week, full string name, Sunday - Saturday
                    $output .= date('l', 86400 * (3 + self::dayOfWeek($date['year'], $date['mon'], $date['mday'])));
                    break;

                case 'N':  // ISO 8601 numeric day of week, 1 - 7
                    $day = self::dayOfWeek($date['year'], $date['mon'], $date['mday']);
                    if ($day == 0) {
                        $day = 7;
                    }
                    $output .= $day;
                    break;

                case 'S':  // english suffix for day of month, st nd rd th
                    if (($date['mday'] % 10) == 1) {
                        $output .= 'st';
                    } else if ((($date['mday'] % 10) == 2) and ($date['mday'] != 12)) {
                        $output .= 'nd';
                    } else if (($date['mday'] % 10) == 3) {
                        $output .= 'rd';
                    } else {
                        $output .= 'th';
                    }
                    break;

                case 'w':  // numeric day of week, 0 - 6
                    $output .= self::dayOfWeek($date['year'], $date['mon'], $date['mday']);
                    break;

                case 'z':  // day of year, 0 - 365
                    $output .= $date['yday'];
                    break;


                // week formats
                case 'W':  // ISO 8601, week number of year
                    $output .= $this->weekNumber($date['year'], $date['mon'], $date['mday']);
                    break;


                // month formats
                case 'F':  // string month name, january - december
                    $output .= date('F', mktime(0, 0, 0, $date['mon'], 2, 1971));
                    break;

                case 'm':  // number of month, with leading zeros, 01 - 12
                    $output .= (($date['mon'] < 10) ? '0' . $date['mon'] : $date['mon']);
                    break;

                case 'M':  // 3 letter month name, Jan - Dec
                    $output .= date('M',mktime(0, 0, 0, $date['mon'], 2, 1971));
                    break;

                case 'n':  // number of month, without leading zeros, 1 - 12
                    $output .= $date['mon'];
                    break;

                case 't':  // number of day in month
                    $output .= self::$_monthTable[$date['mon'] - 1];
                    break;


                // year formats
                case 'L':  // is leap year ?
                    $output .= (self::isYearLeapYear($date['year'])) ? '1' : '0';
                    break;

                case 'o':  // ISO 8601 year number
                    $week = $this->weekNumber($date['year'], $date['mon'], $date['mday']);
                    if (($week > 50) and ($date['mon'] == 1)) {
                        $output .= ($date['year'] - 1);
                    } else {
                        $output .= $date['year'];
                    }
                    break;

                case 'Y':  // year number, 4 digits
                    $output .= $date['year'];
                    break;

                case 'y':  // year number, 2 digits
                    $output .= substr($date['year'], strlen($date['year']) - 2, 2);
                    break;


                // time formats
                case 'a':  // lower case am/pm
                    $output .= (($date['hours'] >= 12) ? 'pm' : 'am');
                    break;

                case 'A':  // upper case am/pm
                    $output .= (($date['hours'] >= 12) ? 'PM' : 'AM');
                    break;

                case 'B':  // swatch internet time
                    $dayseconds = ($date['hours'] * 3600) + ($date['minutes'] * 60) + $date['seconds'];
                    if ($gmt === true) {
                        $dayseconds += 3600;
                    }
                    $output .= (int) (($dayseconds % 86400) / 86.4);
                    break;

                case 'g':  // hours without leading zeros, 12h format
                    if ($date['hours'] > 12) {
                        $hour = $date['hours'] - 12;
                    } else {
                        if ($date['hours'] == 0) {
                            $hour = '12';
                        } else {
                            $hour = $date['hours'];
                        }
                    }
                    $output .= $hour;
                    break;

                case 'G':  // hours without leading zeros, 24h format
                    $output .= $date['hours'];
                    break;

                case 'h':  // hours with leading zeros, 12h format
                    if ($date['hours'] > 12) {
                        $hour = $date['hours'] - 12;
                    } else {
                        if ($date['hours'] == 0) {
                            $hour = '12';
                        } else {
                            $hour = $date['hours'];
                        }
                    }
                    $output .= (($hour < 10) ? '0'.$hour : $hour);
                    break;

                case 'H':  // hours with leading zeros, 24h format
                    $output .= (($date['hours'] < 10) ? '0' . $date['hours'] : $date['hours']);
                    break;

                case 'i':  // minutes with leading zeros
                    $output .= (($date['minutes'] < 10) ? '0' . $date['minutes'] : $date['minutes']);
                    break;

                case 's':  // seconds with leading zeros
                    $output .= (($date['seconds'] < 10) ? '0' . $date['seconds'] : $date['seconds']);
                    break;


                // timezone formats
                case 'e':  // timezone identifier
                    if ($gmt === true) {
                        $output .= gmdate('e', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    } else {
                        $output .=   date('e', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    }
                    break;

                case 'I':  // daylight saving time or not
                    if ($gmt === true) {
                        $output .= gmdate('I', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    } else {
                        $output .=   date('I', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    }
                    break;

                case 'O':  // difference to GMT in hours
                    $gmtstr = ($gmt === true) ? 0 : $this->_offset;
                    $output .= sprintf('%s%04d', ($gmtstr <= 0) ? '+' : '-', abs($gmtstr) / 36);
                    break;

                case 'P':  // difference to GMT with colon
                    $gmtstr = ($gmt === true) ? 0 : $this->_offset;
                    $gmtstr = sprintf('%s%04d', ($gmtstr <= 0) ? '+' : '-', abs($gmtstr) / 36);
                    $output = $output . substr($gmtstr, 0, 3) . ':' . substr($gmtstr, 3);
                    break;

                case 'T':  // timezone settings
                    if ($gmt === true) {
                        $output .= gmdate('T', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    } else {
                        $output .=   date('T', mktime($date['hours'], $date['minutes'], $date['seconds'],
                                                      $date['mon'], $date['mday'], 2000));
                    }
                    break;

                case 'Z':  // timezone offset in seconds
                    $output .= ($gmt === true) ? 0 : -$this->_offset;
                    break;


                // complete time formats
                case 'c':  // ISO 8601 date format
                    $difference = $this->_offset;
                    $difference = sprintf('%s%04d', ($difference <= 0) ? '+' : '-', abs($difference) / 36);
                    $output .= $date['year'] . '-'
                             . (($date['mon']     < 10) ? '0' . $date['mon']     : $date['mon'])     . '-'
                             . (($date['mday']    < 10) ? '0' . $date['mday']    : $date['mday'])    . 'T'
                             . (($date['hours']   < 10) ? '0' . $date['hours']   : $date['hours'])   . ':'
                             . (($date['minutes'] < 10) ? '0' . $date['minutes'] : $date['minutes']) . ':'
                             . (($date['seconds'] < 10) ? '0' . $date['seconds'] : $date['seconds'])
                             . $difference;
                    break;

                case 'r':  // RFC 2822 date format
                    $difference = $this->_offset;
                    $difference = sprintf('%s%04d', ($difference <= 0) ? '+' : '-', abs($difference) / 36);
                    $output .= gmdate('D', 86400 * (3 + self::dayOfWeek($date['year'], $date['mon'], $date['mday']))) . ', '
                             . (($date['mday']    < 10) ? '0' . $date['mday']    : $date['mday'])    . ' '
                             . date('M', mktime(0, 0, 0, $date['mon'], 2, 1971)) . ' '
                             . $date['year'] . ' '
                             . (($date['hours']   < 10) ? '0' . $date['hours']   : $date['hours'])   . ':'
                             . (($date['minutes'] < 10) ? '0' . $date['minutes'] : $date['minutes']) . ':'
                             . (($date['seconds'] < 10) ? '0' . $date['seconds'] : $date['seconds']) . ' '
                             . $difference;
                    break;

                case 'U':  // Unix timestamp
                    $output .= $timestamp;
                    break;


                // special formats
                case "\\":  // next letter to print with no format
                    $i++;
                    if ($i < $length) {
                        $output .= $format[$i];
                    }
                    break;

                default:  // letter is no format so add it direct
                    $output .= $format[$i];
                    break;
            }
        }

        return (string) $output;
    }

    /**
     * Returns the day of week for a Gregorian calendar date.
     * 0 = sunday, 6 = saturday
     *
     * @param  integer  $year
     * @param  integer  $month
     * @param  integer  $day
     * @return integer  dayOfWeek
     */
    protected static function dayOfWeek($year, $month, $day)
    {
        if ((1901 < $year) and ($year < 2038)) {
            return (int) date('w', mktime(0, 0, 0, $month, $day, $year));
        }

        // gregorian correction
        $correction = 0;
        if (($year < 1582) or (($year == 1582) and (($month < 10) or (($month == 10) && ($day < 15))))) {
            $correction = 3;
        }

        if ($month > 2) {
            $month -= 2;
        } else {
            $month += 10;
            $year--;
        }

        $day  = floor((13 * $month - 1) / 5) + $day + ($year % 100) + floor(($year % 100) / 4);
        $day += floor(($year / 100) / 4) - 2 * floor($year / 100) + 77 + $correction;

        return (int) ($day - 7 * floor($day / 7));
    }

    /**
     * Internal getDateParts function for handling 64bit timestamps, similar to:
     * http://www.php.net/getdate
     *
     * Returns an array of date parts for $timestamp, relative to 1970/01/01 00:00:00 GMT/UTC.
     *
     * $fast specifies ALL date parts should be returned (slower)
     * Default is false, and excludes $dayofweek, weekday, month and timestamp from parts returned.
     *
     * @param   mixed    $timestamp
     * @param   boolean  $fast   OPTIONAL defaults to fast (false), resulting in fewer date parts
     * @return  array
     */
    protected function getDateParts($timestamp = null, $fast = null)
    {

        // actual timestamp
        if ($timestamp === null) {
            return getdate();
        }

        // 32bit timestamp
        if (abs($timestamp) <= 0x7FFFFFFF) {
            return @getdate($timestamp);
        }

        if (isset(self::$_cache)) {
            $id = strtr('Zend_DateObject_getDateParts_' . $timestamp.'_'.(int)$fast, '-','_');
            if ($result = self::$_cache->load($id)) {
                return unserialize($result);
            }
        }

        $otimestamp = $timestamp;
        $numday = 0;
        $month = 0;
        // gregorian correction
        if ($timestamp < -12219321600) {
            $timestamp -= 864000;
        }

        // timestamp lower 0
        if ($timestamp < 0) {
            $sec = 0;
            $act = 1970;

            // iterate through 10 years table, increasing speed
            foreach(self::$_yearTable as $year => $seconds) {
                if ($timestamp >= $seconds) {
                    $i = $act;
                    break;
                }
                $sec = $seconds;
                $act = $year;
            }

            $timestamp -= $sec;
            if (!isset($i)) {
                $i = $act;
            }

            // iterate the max last 10 years
            do {
                --$i;
                $day = $timestamp;

                $timestamp += 31536000;
                $leapyear = self::isYearLeapYear($i);
                if ($leapyear === true) {
                    $timestamp += 86400;
                }

                if ($timestamp >= 0) {
                    $year = $i;
                    break;
                }
            } while ($timestamp < 0);

            $secondsPerYear = 86400 * ($leapyear ? 366 : 365) + $day;

            $timestamp = $day;
            // iterate through months
            for ($i = 12; --$i >= 0;) {
                $day = $timestamp;

                $timestamp += self::$_monthTable[$i] * 86400;
                if (($leapyear === true) and ($i == 1)) {
                    $timestamp += 86400;
                }

                if ($timestamp >= 0) {
                    $month  = $i;
                    $numday = self::$_monthTable[$i];
                    if (($leapyear === true) and ($i == 1)) {
                        ++$numday;
                    }
                    break;
                }
            }

            $timestamp  = $day;
            $numberdays = $numday + ceil(($timestamp + 1) / 86400);

            $timestamp += ($numday - $numberdays + 1) * 86400;
            $hours      = floor($timestamp / 3600);
        } else {

            // iterate through years
            for ($i = 1970;;$i++) {
                $day = $timestamp;

                $timestamp -= 31536000;
                $leapyear = self::isYearLeapYear($i);
                if ($leapyear === true) {
                    $timestamp -= 86400;
                }

                if ($timestamp < 0) {
                    $year = $i;
                    break;
                }
            }

            $secondsPerYear = $day;

            $timestamp = $day;
            // iterate through months
            for ($i = 0; $i <= 11; $i++) {
                $day = $timestamp;
                $timestamp -= self::$_monthTable[$i] * 86400;

                if (($leapyear === true) and ($i == 1)) {
                    $timestamp -= 86400;
                }

                if ($timestamp < 0) {
                    $month  = $i;
                    $numday = self::$_monthTable[$i];
                    if (($leapyear === true) and ($i == 1)) {
                        ++$numday;
                    }
                    break;
                }
            }

            $timestamp  = $day;
            $numberdays = ceil(($timestamp + 1) / 86400);
            $timestamp  = $timestamp - ($numberdays - 1) * 86400;
            $hours = floor($timestamp / 3600);
        }

        $timestamp -= $hours * 3600;

        $month  += 1;
        $minutes = floor($timestamp / 60);
        $seconds = $timestamp - $minutes * 60;

        if ($fast === true) {
            $array = array(
                'seconds' => $seconds,
                'minutes' => $minutes,
                'hours'   => $hours,
                'mday'    => $numberdays,
                'mon'     => $month,
                'year'    => $year,
                'yday'    => floor($secondsPerYear / 86400),
            );
        } else {

            $dayofweek = self::dayOfWeek($year, $month, $numberdays);
            $array = array(
                    'seconds' => $seconds,
                    'minutes' => $minutes,
                    'hours'   => $hours,
                    'mday'    => $numberdays,
                    'wday'    => $dayofweek,
                    'mon'     => $month,
                    'year'    => $year,
                    'yday'    => floor($secondsPerYear / 86400),
                    'weekday' => gmdate('l', 86400 * (3 + $dayofweek)),
                    'month'   => gmdate('F', mktime(0, 0, 0, $month, 1, 1971)),
                    0         => $otimestamp
            );
        }

        if (isset(self::$_cache)) {
            self::$_cache->save( serialize($array), $id);
        }

        return $array;
    }

    /**
     * Internal getWeekNumber function for handling 64bit timestamps
     *
     * Returns the ISO 8601 week number of a given date
     *
     * @param  integer  $year
     * @param  integer  $month
     * @param  integer  $day
     * @return integer
     */
    protected function weekNumber($year, $month, $day)
    {
        if ((1901 < $year) and ($year < 2038)) {
            return (int) date('W', mktime(0, 0, 0, $month, $day, $year));
        }

        $dayofweek = self::dayOfWeek($year, $month, $day);
        $firstday  = self::dayOfWeek($year, 1, 1);
        if (($month == 1) and (($firstday < 1) or ($firstday > 4)) and ($day < 4)) {
            $firstday  = self::dayOfWeek($year - 1, 1, 1);
            $month     = 12;
            $day       = 31;

        } else if (($month == 12) and ((self::dayOfWeek($year + 1, 1, 1) < 5) and
                   (self::dayOfWeek($year + 1, 1, 1) > 0))) {
            return 1;
        }

        return intval (((self::dayOfWeek($year, 1, 1) < 5) and (self::dayOfWeek($year, 1, 1) > 0)) +
               4 * ($month - 1) + (2 * ($month - 1) + ($day - 1) + $firstday - $dayofweek + 6) * 36 / 256);
    }

    /**
     * Internal _range function
     * Sets the value $a to be in the range of [0, $b]
     *
     * @param float $a - value to correct
     * @param float $b - maximum range to set
     */
    private function _range($a, $b) {
        while ($a < 0) {
            $a += $b;
        }
        while ($a >= $b) {
            $a -= $b;
        }
        return $a;
    }

    /**
     * Calculates the sunrise or sunset based on a location
     *
     * @param  array  $location  Location for calculation MUST include 'latitude', 'longitude', 'horizon'
     * @param  bool   $horizon   true: sunrise; false: sunset
     * @return mixed  - false: midnight sun, integer:
     */
    protected function calcSun($location, $horizon, $rise = false)
    {
        // timestamp within 32bit
        if (abs($this->_unixTimestamp) <= 0x7FFFFFFF) {
            if ($rise === false) {
                return date_sunset($this->_unixTimestamp, SUNFUNCS_RET_TIMESTAMP, $location['latitude'],
                                   $location['longitude'], 90 + $horizon, $this->_offset / 3600);
            }
            return date_sunrise($this->_unixTimestamp, SUNFUNCS_RET_TIMESTAMP, $location['latitude'],
                                $location['longitude'], 90 + $horizon, $this->_offset / 3600);
        }

        // self calculation - timestamp bigger than 32bit
        // fix circle values
        $quarterCircle      = 0.5 * M_PI;
        $halfCircle         =       M_PI;
        $threeQuarterCircle = 1.5 * M_PI;
        $fullCircle         = 2   * M_PI;

        // radiant conversion for coordinates
        $radLatitude  = $location['latitude']   * $halfCircle / 180;
        $radLongitude = $location['longitude']  * $halfCircle / 180;

        // get solar coordinates
        $tmpRise       = $rise ? $quarterCircle : $threeQuarterCircle;
        $radDay        = $this->date('z',$this->_unixTimestamp) + ($tmpRise - $radLongitude) / $fullCircle;

        // solar anomoly and longitude
        $solAnomoly    = $radDay * 0.017202 - 0.0574039;
        $solLongitude  = $solAnomoly + 0.0334405 * sin($solAnomoly);
        $solLongitude += 4.93289 + 3.49066E-4 * sin(2 * $solAnomoly);

        // get quadrant
        $solLongitude = $this->_range($solLongitude, $fullCircle);

        if (($solLongitude / $quarterCircle) - intval($solLongitude / $quarterCircle) == 0) {
            $solLongitude += 4.84814E-6;
        }

        // solar ascension
        $solAscension = sin($solLongitude) / cos($solLongitude);
        $solAscension = atan2(0.91746 * $solAscension, 1);

        // adjust quadrant
        if ($solLongitude > $threeQuarterCircle) {
            $solAscension += $fullCircle;
        } else if ($solLongitude > $quarterCircle) {
            $solAscension += $halfCircle;
        }

        // solar declination
        $solDeclination  = 0.39782 * sin($solLongitude);
        $solDeclination /=  sqrt(-$solDeclination * $solDeclination + 1);
        $solDeclination  = atan2($solDeclination, 1);

        $solHorizon = $horizon - sin($solDeclination) * sin($radLatitude);
        $solHorizon /= cos($solDeclination) * cos($radLatitude);

        // midnight sun, always night
        if (abs($solHorizon) > 1) {
            return false;
        }

        $solHorizon /= sqrt(-$solHorizon * $solHorizon + 1);
        $solHorizon  = $quarterCircle - atan2($solHorizon, 1);

        if ($rise) {
            $solHorizon = $fullCircle - $solHorizon;
        }

        // time calculation
        $localTime     = $solHorizon + $solAscension - 0.0172028 * $radDay - 1.73364;
        $universalTime = $localTime - $radLongitude;

        // determinate quadrant
        $universalTime = $this->_range($universalTime, $fullCircle);

        // radiant to hours
        $universalTime *= 24 / $fullCircle;

        // convert to time
        $hour = intval($universalTime);
        $universalTime    = ($universalTime - $hour) * 60;
        $min  = intval($universalTime);
        $universalTime    = ($universalTime - $min) * 60;
        $sec  = intval($universalTime);

        return $this->mktime($hour, $min, $sec, $this->date('m', $this->_unixTimestamp),
                             $this->date('j', $this->_unixTimestamp), $this->date('Y', $this->_unixTimestamp),
                             -1, true);
    }

    /**
     * Sets a new timezone for calculation of $this object's gmt offset.
     * For a list of supported timezones look here: http://php.net/timezones
     * If no timezone can be detected or the given timezone is wrong UTC will be set.
     *
     * @param  string  $zone      OPTIONAL timezone for date calculation; defaults to date_default_timezone_get()
     * @return Zend_Date_DateObject Provides fluent interface
     * @throws Zend_Date_Exception
     */
    public function setTimezone($zone = null)
    {
        $oldzone = @date_default_timezone_get();
        if ($zone === null) {
            $zone = $oldzone;
        }

        // throw an error on false input, but only if the new date extension is available
        if (function_exists('timezone_open')) {
            if (!@timezone_open($zone)) {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("timezone ($zone) is not a known timezone", $zone);
            }
        }
        // this can generate an error if the date extension is not available and a false timezone is given
        $result = @date_default_timezone_set($zone);
        if ($result === true) {
            $this->_offset   = mktime(0, 0, 0, 1, 2, 1970) - gmmktime(0, 0, 0, 1, 2, 1970);
            $this->_timezone = $zone;
        }
        date_default_timezone_set($oldzone);

        if (($zone == 'UTC') or ($zone == 'GMT')) {
            $this->_dst = false;
        } else {
            $this->_dst = true;
        }

        return $this;
    }

    /**
     * Return the timezone of $this object.
     * The timezone is initially set when the object is instantiated.
     *
     * @return  string  actual set timezone string
     */
    public function getTimezone()
    {
        return $this->_timezone;
    }

    /**
     * Return the offset to GMT of $this object's timezone.
     * The offset to GMT is initially set when the object is instantiated using the currently,
     * in effect, default timezone for PHP functions.
     *
     * @return  integer  seconds difference between GMT timezone and timezone when object was instantiated
     */
    public function getGmtOffset()
    {
        return $this->_offset;
    }
}
PKpG[q�*..Date/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Date
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Date
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Date_Exception extends Zend_Exception
{
    protected $operand = null;

    public function __construct($message, $op = null)
    {
        $this->operand = $op;
        parent::__construct($message);
    }

    public function getOperand()
    {
        return $this->operand;
    }
}
PKpG[�'�4�\�\Date/Cities.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Date
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: DateObject.php 2511 2006-12-26 22:54:37Z bkarwin $
 */

/**
 * Additional data for sunset/sunrise calculations
 *
 * Holds the geographical data for all capital cities and many others worldwide
 * Original data from http://www.fallingrain.com/world/
 *
 * @category   Zend
 * @package    Zend_Date
 * @subpackage Zend_Date_Cities
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Date_Cities
{
    /**
     * Array Collection of known cities
     *
     * The array contains 'latitude' and 'longitude' for every known city
     *
     * @var Array
     */
    public static $cities = array(
        'Abidjan'       => array('latitude' =>    5.3411111, 'longitude' =>   -4.0280556),
        'Abu Dhabi'     => array('latitude' =>   24.4666667, 'longitude' =>   54.3666667),
        'Abuja'       => array('latitude' =>    9.1758333, 'longitude' =>    7.1808333),
        'Accra'       => array('latitude' =>    5.55,      'longitude' =>   -0.2166667),
        'Adamstown'   => array('latitude' =>  -25.0666667, 'longitude' => -130.0833333),
        'Addis Ababa' => array('latitude' =>    9.0333333, 'longitude' =>   38.7),
        'Adelaide'    => array('latitude' =>  -34.9333333, 'longitude' =>  138.6),
        'Algiers'     => array('latitude' =>   36.7630556, 'longitude' =>    3.0505556),
        'Alofi'       => array('latitude' =>  -19.0166667, 'longitude' => -169.9166667),
        'Amman'       => array('latitude' =>   31.95,      'longitude' =>   35.9333333),
        'Amsterdam'        => array('latitude' =>   52.35,      'longitude' =>    4.9166667),
        'Andorra la Vella' => array('latitude' => 42.5,    'longitude' =>    1.5166667),
        'Ankara'      => array('latitude' =>   39.9272222, 'longitude' =>   32.8644444),
        'Antananarivo' => array('latitude' => -18.9166667, 'longitude' =>   47.5166667),
        'Apia'        => array('latitude' =>  -13.8333333, 'longitude' => -171.7333333),
        'Ashgabat'    => array('latitude' =>   37.95,      'longitude' =>   58.3833333),
        'Asmara'      => array('latitude' =>   15.3333333, 'longitude' =>   38.9333333),
        'Astana'      => array('latitude' =>   51.1811111, 'longitude' =>   71.4277778),
        'Asunción'    => array('latitude' =>  -25.2666667, 'longitude' =>  -57.6666667),
        'Athens'      => array('latitude' =>   37.9833333, 'longitude' =>   23.7333333),
        'Auckland'    => array('latitude' =>  -36.8666667, 'longitude' =>  174.7666667),
        'Avarua'      => array('latitude' =>  -21.2,       'longitude' => -159.7666667),
        'Baghdad'     => array('latitude' =>   33.3386111, 'longitude' =>   44.3938889),
        'Baku'        => array('latitude' =>   40.3952778, 'longitude' =>   49.8822222),
        'Bamako'      => array('latitude' =>   12.65,      'longitude' =>   -8),
        'Bandar Seri Begawan' => array('latitude' => 4.8833333, 'longitude' => 114.9333333),
        'Bankok'      => array('latitude' =>   13.5833333, 'longitude' =>  100.2166667),
        'Bangui'      => array('latitude' =>    4.3666667, 'longitude' =>   18.5833333),
        'Banjul'      => array('latitude' =>   13.4530556, 'longitude' =>  -16.5775),
        'Basel'       => array('latitude' =>   47.5666667, 'longitude' =>    7.6),
        'Basseterre'  => array('latitude' =>   17.3,       'longitude' =>  -62.7166667),
        'Beijing'     => array('latitude' =>   39.9288889, 'longitude' =>  116.3883333),
        'Beirut'      => array('latitude' =>   33.8719444, 'longitude' =>   35.5097222),
        'Belgrade'    => array('latitude' =>   44.8186111, 'longitude' =>   20.4680556),
        'Belmopan'    => array('latitude' =>   17.25,      'longitude' =>  -88.7666667),
        'Berlin'      => array('latitude' =>   52.5166667, 'longitude' =>   13.4),
        'Bern'        => array('latitude' =>   46.9166667, 'longitude' =>    7.4666667),
        'Bishkek'     => array('latitude' =>   42.8730556, 'longitude' =>   74.6002778),
        'Bissau'      => array('latitude' =>   11.85,      'longitude' =>  -15.5833333),
        'Bloemfontein' => array('latitude' => -29.1333333, 'longitude' =>   26.2),
        'Bogotá'      => array('latitude' =>    4.6,       'longitude' =>  -74.0833333),
        'Brasilia'    => array('latitude' =>  -15.7833333, 'longitude' =>  -47.9166667),
        'Bratislava'  => array('latitude' =>   48.15,      'longitude' =>   17.1166667),
        'Brazzaville' => array('latitude' =>   -4.2591667, 'longitude' =>   15.2847222),
        'Bridgetown'  => array('latitude' =>   13.1,       'longitude' =>  -59.6166667),
        'Brisbane'    => array('latitude' =>  -27.5,       'longitude' =>  153.0166667),
        'Brussels'    => array('latitude' =>  50.8333333,  'longitude' =>    4.3333333),
        'Bucharest'   => array('latitude' =>  44.4333333,  'longitude' =>   26.1),
        'Budapest'    => array('latitude' =>  47.5,        'longitude' =>   19.0833333),
        'Buenos Aires' => array('latitude' => -34.5875,    'longitude' =>  -58.6725),
        'Bujumbura'   => array('latitude' =>   -3.3761111, 'longitude' =>   29.36),
        'Cairo'       => array('latitude' =>   30.05,      'longitude' =>   31.25),
        'Calgary'     => array('latitude' =>   51.0833333, 'longitude' => -114.0833333),
        'Canberra'    => array('latitude' =>  -35.2833333, 'longitude' =>  149.2166667),
        'Cape Town'   => array('latitude' =>  -33.9166667, 'longitude' =>   18.4166667),
        'Caracas'     => array('latitude' =>   10.5,       'longitude' =>  -66.9166667),
        'Castries'    => array('latitude' =>   14,         'longitude' =>  -61),
        'Charlotte Amalie' => array('latitude' => 18.34389, 'longitude' => -64.93111),
        'Chicago'     => array('latitude' =>   41.85,      'longitude' =>  -87.65),
        'Chisinau'    => array('latitude' =>   47.055556,  'longitude' =>   28.8575),
        'Cockburn Town' => array('latitude' => 21.4666667, 'longitude' =>  -71.1333333),
        'Colombo'     => array('latitude' =>    6.9319444, 'longitude' =>   79.8477778),
        'Conakry'     => array('latitude' =>    9.5091667, 'longitude' =>  -13.7122222),
        'Copenhagen'  => array('latitude' =>   55.6666667, 'longitude' =>   12.5833333),
        'Cotonou'     => array('latitude' =>    6.35,      'longitude' =>    2.4333333),
        'Dakar'       => array('latitude' =>   14.6708333, 'longitude' =>  -17.4380556),
        'Damascus'    => array('latitude' =>   33.5,       'longitude' =>   36.3),
        'Dar es Salaam' => array('latitude' => -6.8,       'longitude' =>   39.2833333),
        'Dhaka'       => array('latitude' =>   23.7230556, 'longitude' =>   90.4086111),
        'Dili'        => array('latitude' =>   -8.5586111, 'longitude' =>  125.5736111),
        'Djibouti'    => array('latitude' =>   11.595,     'longitude' =>   43.1480556),
        'Dodoma'      => array('latitude' =>   -6.1833333, 'longitude' =>   35.75),
        'Doha'        => array('latitude' =>   25.2866667, 'longitude' =>   51.5333333),
        'Dubai'       => array('latitude' =>   25.2522222, 'longitude' =>   55.28),
        'Dublin'      => array('latitude' =>   53.3330556, 'longitude' =>   -6.2488889),
        'Dushanbe'    => array('latitude' =>   38.56,      'longitude' =>   68.7738889 ),
        'Fagatogo'    => array('latitude' =>  -14.2825,    'longitude' => -170.69),
        'Fongafale'   => array('latitude' =>   -8.5166667, 'longitude' =>  179.2166667),
        'Freetown'    => array('latitude' =>    8.49,      'longitude' =>  -13.2341667),
        'Gaborone'    => array('latitude' =>  -24.6463889, 'longitude' =>   25.9119444),
        'Geneva'      => array('latitude' =>   46.2,       'longitude' =>    6.1666667),
        'George Town' => array('latitude' =>   19.3,       'longitude' =>  -81.3833333),
        'Georgetown'  => array('latitude' =>    6.8,       'longitude' =>  -58.1666667),
        'Gibraltar'   => array('latitude' =>   36.1333333, 'longitude' =>   -5.35),
        'Glasgow'     => array('latitude' =>   55.8333333, 'longitude' =>   -4.25),
        'Guatemala la Nueva' => array('latitude' => 14.6211111, 'longitude' => -90.5269444),
        'Hagatna'     => array('latitude' =>   13.47417,   'longitude' =>  144.74778),
        'The Hague'   => array('latitude' =>   52.0833333, 'longitude' =>    4.3),
        'Hamilton'    => array('latitude' =>   32.2941667, 'longitude' =>  -64.7838889),
        'Hanoi'       => array('latitude' =>   21.0333333, 'longitude' =>  105.85),
        'Harare'      => array('latitude' =>  -17.8177778, 'longitude' =>   31.0447222),
        'Havana'      => array('latitude' =>   23.1319444, 'longitude' =>  -82.3641667),
        'Helsinki'    => array('latitude' =>   60.1755556, 'longitude' =>   24.9341667),
        'Honiara'     => array('latitude' =>   -9.4333333, 'longitude' =>  159.95),
        'Islamabad'   => array('latitude' =>   30.8486111, 'longitude' =>   72.4944444),
        'Istanbul'    => array('latitude' =>   41.0186111, 'longitude' =>   28.9647222),
        'Jakarta'     => array('latitude' =>   -6.1744444, 'longitude' =>  106.8294444),
        'Jamestown'   => array('latitude' =>  -15.9333333, 'longitude' =>   -5.7166667),
        'Jerusalem'   => array('latitude' =>   31.7666667, 'longitude' =>   35.2333333),
        'Johannesburg' => array('latitude' => -26.2,       'longitude' =>   28.0833333),
        'Kabul'       => array('latitude' =>   34.5166667, 'longitude' =>   69.1833333),
        'Kampala'     => array('latitude' =>    0.3155556, 'longitude' =>   32.5655556),
        'Kathmandu'   => array('latitude' =>   27.7166667, 'longitude' =>   85.3166667),
        'Khartoum'    => array('latitude' =>   15.5880556, 'longitude' =>   32.5341667),
        'Kigali'      => array('latitude' =>   -1.9536111, 'longitude' =>   30.0605556),
        'Kingston'    => array('latitude' =>  -29.05,      'longitude' =>  167.95),
        'Kingstown'   => array('latitude' =>   13.1333333, 'longitude' =>  -61.2166667),
        'Kinshasa'    => array('latitude' =>   -4.3,       'longitude' =>   15.3),
        'Kolkata'     => array('latitude' =>   22.5697222, 'longitude' =>   88.3697222),
        'Kuala Lumpur' => array('latitude' =>   3.1666667, 'longitude' =>  101.7),
        'Kuwait City' => array('latitude' =>   29.3697222, 'longitude' =>   47.9783333),
        'Kiev'        => array('latitude' =>   50.4333333, 'longitude' =>   30.5166667),
        'La Paz'      => array('latitude' =>  -16.5,       'longitude' =>  -68.15),
        'Libreville'  => array('latitude' =>    0.3833333, 'longitude' =>    9.45),
        'Lilongwe'    => array('latitude' =>  -13.9833333, 'longitude' =>   33.7833333),
        'Lima'        => array('latitude' =>  -12.05,      'longitude' =>  -77.05),
        'Lisbon'      => array('latitude' =>   38.7166667, 'longitude' =>   -9.1333333),
        'Ljubljana'   => array('latitude' =>   46.0552778, 'longitude' =>   14.5144444),
        'Lobamba'     => array('latitude' =>  -26.4666667, 'longitude' =>   31.2),
        'Lomé'        => array('latitude' =>    9.7166667, 'longitude' =>   38.3),
        'London'      => array('latitude' =>   51.5,       'longitude' =>   -0.1166667),
        'Los Angeles' => array('latitude' =>   34.05222,   'longitude' => -118.24278),
        'Luanda'      => array('latitude' =>   -8.8383333, 'longitude' =>   13.2344444),
        'Lusaka'      => array('latitude' =>  -15.4166667, 'longitude' =>   28.2833333),
        'Luxembourg'  => array('latitude' =>   49.6116667, 'longitude' =>    6.13),
        'Madrid'      => array('latitude' =>   40.4,       'longitude' =>   -3.6833333),
        'Majuro'      => array('latitude' =>    7.1,       'longitude' =>  171.3833333),
        'Malabo'      => array('latitude' =>    3.75,      'longitude' =>    8.7833333),
        'Managua'     => array('latitude' =>   12.1508333, 'longitude' =>  -86.2683333),
        'Manama'      => array('latitude' =>   26.2361111, 'longitude' =>   50.5830556),
        'Manila'      => array('latitude' =>   14.6041667, 'longitude' =>  120.9822222),
        'Maputo'      => array('latitude' =>  -25.9652778, 'longitude' =>   32.5891667),
        'Maseru'      => array('latitude' =>  -29.3166667, 'longitude' =>   27.4833333),
        'Mbabane'     => array('latitude' =>  -26.3166667, 'longitude' =>   31.1333333),
        'Melbourne'   => array('latitude' =>  -37.8166667, 'longitude' =>  144.9666667),
        'Melekeok'    => array('latitude' =>    7.4933333, 'longitude' =>  134.6341667),
        'Mexiko City' => array('latitude' =>   19.4341667, 'longitude' =>  -99.1386111),
        'Minsk'       => array('latitude' =>   53.9,       'longitude' =>   27.5666667),
        'Mogadishu'   => array('latitude' =>    2.0666667, 'longitude' =>   45.3666667),
        'Monaco'      => array('latitude' =>   43.7333333, 'longitude' =>    7.4166667),
        'Monrovia'    => array('latitude' =>    6.3105556, 'longitude' =>  -10.8047222),
        'Montevideo'  => array('latitude' =>  -34.8580556, 'longitude' =>  -56.1708333),
        'Montreal'    => array('latitude' =>   45.5,       'longitude' =>  -73.5833333),
        'Moroni'      => array('latitude' =>  -11.7041667, 'longitude' =>   43.2402778),
        'Moscow'      => array('latitude' =>   55.7522222, 'longitude' =>   37.6155556),
        'Muscat'      => array('latitude' =>   23.6133333, 'longitude' =>   58.5933333),
        'Nairobi'     => array('latitude' =>   -1.3166667, 'longitude' =>   36.8333333),
        'Nassau'      => array('latitude' =>   25.0833333, 'longitude' =>  -77.35),
        'N´Djamena'   => array('latitude' =>   12.1130556, 'longitude' =>   15.0491667),
        'New Dehli'   => array('latitude' =>   28.6,       'longitude' =>   77.2),
        'New York'    => array('latitude' =>   40.71417,   'longitude' =>  -74.00639),
        'Newcastle'   => array('latitude' =>  -32.9166667, 'longitude' =>  151.75),
        'Niamey'      => array('latitude' =>   13.6666667, 'longitude' =>    1.7833333),
        'Nicosia'     => array('latitude' =>   35.1666667, 'longitude' =>   33.3666667),
        'Nouakchott'  => array('latitude' =>   18.0863889, 'longitude' =>  -15.9752778),
        'Noumea'      => array('latitude' =>  -22.2666667, 'longitude' =>  166.45),
        'Nuku´alofa'  => array('latitude' =>  -21.1333333, 'longitude' => -175.2),
        'Nuuk'        => array('latitude' =>   64.1833333, 'longitude' =>  -51.75),
        'Oranjestad'  => array('latitude' =>   12.5166667, 'longitude' =>  -70.0333333),
        'Oslo'        => array('latitude' =>   59.9166667, 'longitude' =>   10.75),
        'Ouagadougou' => array('latitude' =>   12.3702778, 'longitude' =>   -1.5247222),
        'Palikir'     => array('latitude' =>    6.9166667, 'longitude' =>  158.15),
        'Panama City' => array('latitude' =>    8.9666667, 'longitude' =>  -79.5333333),
        'Papeete'     => array('latitude' =>  -17.5333333, 'longitude' => -149.5666667),
        'Paramaribo'  => array('latitude' =>    5.8333333, 'longitude' =>  -55.1666667),
        'Paris'       => array('latitude' =>   48.8666667, 'longitude' =>    2.3333333),
        'Perth'       => array('latitude' =>  -31.9333333, 'longitude' =>  115.8333333),
        'Phnom Penh'  => array('latitude' =>   11.55,      'longitude' =>  104.9166667),
        'Podgorica'   => array('latitude' =>   43.7752778, 'longitude' =>   19.6827778),
        'Port Louis'  => array('latitude' =>  -20.1666667, 'longitude' =>   57.5),
        'Port Moresby' => array('latitude' =>  -9.4647222, 'longitude' =>  147.1925),
        'Port-au-Prince' => array('latitude' => 18.5391667, 'longitude' => -72.335),
        'Port of Spain' => array('latitude' => 10.6666667, 'longitude' =>  -61.5),
        'Porto-Novo'  => array('latitude' =>    6.4833333, 'longitude' =>    2.6166667),
        'Prague'      => array('latitude' =>   50.0833333, 'longitude' =>   14.4666667),
        'Praia'       => array('latitude' =>   14.9166667, 'longitude' =>  -23.5166667),
        'Pretoria'    => array('latitude' =>  -25.7069444, 'longitude' =>   28.2294444),
        'Pyongyang'   => array('latitude' =>   39.0194444, 'longitude' =>  125.7547222),
        'Quito'       => array('latitude' =>   -0.2166667, 'longitude' =>  -78.5),
        'Rabat'       => array('latitude' =>   34.0252778, 'longitude' =>   -6.8361111),
        'Reykjavik'   => array('latitude' =>   64.15,      'longitude' =>  -21.95),
        'Riga'        => array('latitude' =>   56.95,      'longitude' =>   24.1),
        'Rio de Janero' => array('latitude' => -22.9,      'longitude' =>  -43.2333333),
        'Road Town'   => array('latitude' =>   18.4166667, 'longitude' =>  -64.6166667),
        'Rome'        => array('latitude' =>   41.9,       'longitude' =>   12.4833333),
        'Roseau'      => array('latitude' =>   15.3,       'longitude' =>  -61.4),
        'Rotterdam'   => array('latitude' =>   51.9166667, 'longitude' =>    4.5),
        'Salvador'    => array('latitude' =>  -12.9833333, 'longitude' =>  -38.5166667),
        'San José'    => array('latitude' =>    9.9333333, 'longitude' =>  -84.0833333),
        'San Juan'    => array('latitude' =>   18.46833,   'longitude' =>  -66.10611),
        'San Marino'  => array('latitude' =>   43.5333333, 'longitude' =>   12.9666667),
        'San Salvador' => array('latitude' =>  13.7086111, 'longitude' =>  -89.2030556),
        'Sanaá'       => array('latitude' =>   15.3547222, 'longitude' =>   44.2066667),
        'Santa Cruz'  => array('latitude' =>  -17.8,       'longitude' =>  -63.1666667),
        'Santiago'    => array('latitude' =>  -33.45,      'longitude' =>  -70.6666667),
        'Santo Domingo' => array('latitude' => 18.4666667, 'longitude' =>  -69.9),
        'Sao Paulo'   => array('latitude' =>  -23.5333333, 'longitude' =>  -46.6166667),
        'Sarajevo'    => array('latitude' =>   43.85,      'longitude' =>   18.3833333),
        'Seoul'       => array('latitude' =>   37.5663889, 'longitude' =>  126.9997222),
        'Shanghai'    => array('latitude' =>   31.2222222, 'longitude' =>  121.4580556),
        'Sydney'      => array('latitude' =>  -33.8833333, 'longitude' =>  151.2166667),
        'Singapore'   => array('latitude' =>    1.2930556, 'longitude' =>  103.8558333),
        'Skopje'      => array('latitude' =>   42,         'longitude' =>   21.4333333),
        'Sofia'       => array('latitude' =>   42.6833333, 'longitude' =>   23.3166667),
        'St. George´s' => array('latitude' =>  12.05,      'longitude' =>  -61.75),
        'St. John´s'  => array('latitude' =>   17.1166667, 'longitude' =>  -61.85),
        'Stanley'     => array('latitude' =>  -51.7,       'longitude' =>  -57.85),
        'Stockholm'   => array('latitude' =>   59.3333333, 'longitude' =>   18.05),
        'Suva'        => array('latitude' =>  -18.1333333, 'longitude' =>  178.4166667),
        'Taipei'      => array('latitude' =>   25.0166667, 'longitude' =>  121.45),
        'Tallinn'     => array('latitude' =>   59.4338889, 'longitude' =>   24.7280556),
        'Tashkent'    => array('latitude' =>   41.3166667, 'longitude' =>   69.25),
        'Tbilisi'     => array('latitude' =>   41.725,     'longitude' =>   44.7908333),
        'Tegucigalpa' => array('latitude' =>   14.1,       'longitude' =>  -87.2166667),
        'Tehran'      => array('latitude' =>   35.6719444, 'longitude' =>   51.4244444),
        'The Hague'   => array('latitude' =>   52.0833333, 'longitude' =>    4.3),
        'Thimphu'     => array('latitude' =>   27.4833333, 'longitude' =>   89.6),
        'Tirana'      => array('latitude' =>   41.3275,    'longitude' =>   19.8188889),
        'Tiraspol'    => array('latitude' =>   46.8402778, 'longitude' =>   29.6433333),
        'Tokyo'       => array('latitude' =>   35.685,     'longitude' =>  139.7513889),
        'Toronto'     => array('latitude' =>   43.6666667, 'longitude' =>  -79.4166667),
        'Tórshavn'    => array('latitude' =>   62.0166667, 'longitude' =>   -6.7666667),
        'Tripoli'     => array('latitude' =>   32.8925,    'longitude' =>   13.18),
        'Tunis'       => array('latitude' =>   36.8027778, 'longitude' =>   10.1797222),
        'Ulaanbaatar' => array('latitude' =>   47.9166667, 'longitude' =>  106.9166667),
        'Vaduz'       => array('latitude' =>   47.1333333, 'longitude' =>    9.5166667),
        'Valletta'    => array('latitude' =>   35.8997222, 'longitude' =>   14.5147222),
        'Valparaiso'  => array('latitude' =>  -33.0477778, 'longitude' =>  -71.6011111),
        'Vancouver'   => array('latitude' =>   49.25,      'longitude' => -123.1333333),
        'Vatican City' => array('latitude' =>  41.9,       'longitude' =>   12.4833333),
        'Victoria'    => array('latitude' =>   -4.6166667, 'longitude' =>   55.45),
        'Vienna'      => array('latitude' =>   48.2,       'longitude' =>   16.3666667),
        'Vientaine'   => array('latitude' =>   17.9666667, 'longitude' =>  102.6),
        'Vilnius'     => array('latitude' =>   54.6833333, 'longitude' =>   25.3166667),
        'Warsaw'      => array('latitude' =>   52.25,      'longitude' =>   21),
        'Washington dc' => array('latitude' => 38.895,     'longitude' =>  -77.03667),
        'Wellington'  => array('latitude' =>  -41.3,       'longitude' =>  174.7833333),
        'Willemstad'  => array('latitude' =>   12.1,       'longitude' =>  -68.9166667),
        'Windhoek'    => array('latitude' =>  -22.57,      'longitude' =>   17.0836111),
        'Yamoussoukro' => array('latitude' =>   6.8166667, 'longitude' =>   -5.2833333),
        'Yaoundé'     => array('latitude' =>    3.8666667, 'longitude' =>   11.5166667),
        'Yerevan'     => array('latitude' =>   40.1811111, 'longitude' =>   44.5136111),
        'Zürich'      => array('latitude' =>   47.3666667, 'longitude' =>    8.55),
        'Zagreb'      => array('latitude' =>   45.8,       'longitude' =>   16)
    );

    /**
     * Returns the location from the selected city
     *
     * @param  string $city    City to get location for
     * @param  string $horizon Horizon to use :
     *                         default: effective
     *                         others are civil, nautic, astronomic
     * @return array
     * @throws Zend_Date_Exception When city is unknown
     */
    public static function City($city, $horizon = false)
    {
        foreach (self::$cities as $key => $value) {
            if (strtolower($key) === strtolower($city)) {
                $return            = $value;
                $return['horizon'] = $horizon;
                return $return;
            }
        }
        require_once 'Zend/Date/Exception.php';
        throw new Zend_Date_Exception('unknown city');
    }

    /**
     * Return a list with all known cities
     *
     * @return array
     */
    public static function getCityList()
    {
        return array_keys(self::$cities);
    }
}
PKpG[�777Loader/PluginLoader.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Loader_PluginLoader_Interface */
require_once 'Zend/Loader/PluginLoader/Interface.php';

/** Zend_Loader */
require_once 'Zend/Loader.php';

/**
 * Generic plugin class loader
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Loader_PluginLoader implements Zend_Loader_PluginLoader_Interface
{
    /**
     * Class map cache file
     * @var string
     */
    protected static $_includeFileCache;

    /**
     * Instance loaded plugin paths
     *
     * @var array
     */
    protected $_loadedPluginPaths = array();

    /**
     * Instance loaded plugins
     *
     * @var array
     */
    protected $_loadedPlugins = array();

    /**
     * Instance registry property
     *
     * @var array
     */
    protected $_prefixToPaths = array();

    /**
     * Statically loaded plugin path mappings
     *
     * @var array
     */
    protected static $_staticLoadedPluginPaths = array();

    /**
     * Statically loaded plugins
     *
     * @var array
     */
    protected static $_staticLoadedPlugins = array();

    /**
     * Static registry property
     *
     * @var array
     */
    protected static $_staticPrefixToPaths = array();

    /**
     * Whether to use a statically named registry for loading plugins
     *
     * @var string|null
     */
    protected $_useStaticRegistry = null;

    /**
     * Constructor
     *
     * @param array $prefixToPaths
     * @param string $staticRegistryName OPTIONAL
     */
    public function __construct(Array $prefixToPaths = array(), $staticRegistryName = null)
    {
        if (is_string($staticRegistryName) && !empty($staticRegistryName)) {
            $this->_useStaticRegistry = $staticRegistryName;
            if(!isset(self::$_staticPrefixToPaths[$staticRegistryName])) {
                self::$_staticPrefixToPaths[$staticRegistryName] = array();
            }
            if(!isset(self::$_staticLoadedPlugins[$staticRegistryName])) {
                self::$_staticLoadedPlugins[$staticRegistryName] = array();
            }
        }

        foreach ($prefixToPaths as $prefix => $path) {
            $this->addPrefixPath($prefix, $path);
        }
    }

    /**
     * Format prefix for internal use
     *
     * @param  string $prefix
     * @return string
     */
    protected function _formatPrefix($prefix)
    {
        return rtrim($prefix, '_') . '_';
    }

    /**
     * Add prefixed paths to the registry of paths
     *
     * @param string $prefix
     * @param string $path
     * @return Zend_Loader_PluginLoader
     */
    public function addPrefixPath($prefix, $path)
    {
        if (!is_string($prefix) || !is_string($path)) {
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception('Zend_Loader_PluginLoader::addPrefixPath() method only takes strings for prefix and path.');
        }

        $prefix = $this->_formatPrefix($prefix);
        $path   = rtrim($path, '/\\') . '/';

        if ($this->_useStaticRegistry) {
            self::$_staticPrefixToPaths[$this->_useStaticRegistry][$prefix][] = $path;
        } else {
            $this->_prefixToPaths[$prefix][] = $path;
        }
        return $this;
    }

    /**
     * Get path stack
     *
     * @param  string $prefix
     * @return false|array False if prefix does not exist, array otherwise
     */
    public function getPaths($prefix = null)
    {
        if ((null !== $prefix) && is_string($prefix)) {
            $prefix = $this->_formatPrefix($prefix);
            if ($this->_useStaticRegistry) {
                if (isset(self::$_staticPrefixToPaths[$this->_useStaticRegistry][$prefix])) {
                    return self::$_staticPrefixToPaths[$this->_useStaticRegistry][$prefix];
                }

                return false;
            }

            if (isset($this->_prefixToPaths[$prefix])) {
                return $this->_prefixToPaths[$prefix];
            }

            return false;
        }

        if ($this->_useStaticRegistry) {
            return self::$_staticPrefixToPaths[$this->_useStaticRegistry];
        }

        return $this->_prefixToPaths;
    }

    /**
     * Clear path stack
     *
     * @param  string $prefix
     * @return bool False only if $prefix does not exist
     */
    public function clearPaths($prefix = null)
    {
        if ((null !== $prefix) && is_string($prefix)) {
            $prefix = $this->_formatPrefix($prefix);
            if ($this->_useStaticRegistry) {
                if (isset(self::$_staticPrefixToPaths[$this->_useStaticRegistry][$prefix])) {
                    unset(self::$_staticPrefixToPaths[$this->_useStaticRegistry][$prefix]);
                    return true;
                }

                return false;
            }

            if (isset($this->_prefixToPaths[$prefix])) {
                unset($this->_prefixToPaths[$prefix]);
                return true;
            }

            return false;
        }

        if ($this->_useStaticRegistry) {
            self::$_staticPrefixToPaths[$this->_useStaticRegistry] = array();
        } else {
            $this->_prefixToPaths = array();
        }

        return true;
    }

    /**
     * Remove a prefix (or prefixed-path) from the registry
     *
     * @param string $prefix
     * @param string $path OPTIONAL
     * @return Zend_Loader_PluginLoader
     */
    public function removePrefixPath($prefix, $path = null)
    {
        $prefix = $this->_formatPrefix($prefix);
        if ($this->_useStaticRegistry) {
            $registry =& self::$_staticPrefixToPaths[$this->_useStaticRegistry];
        } else {
            $registry =& $this->_prefixToPaths;
        }

        if (!isset($registry[$prefix])) {
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception('Prefix ' . $prefix . ' was not found in the PluginLoader.');
        }

        if ($path != null) {
            $pos = array_search($path, $registry[$prefix]);
            if ($pos === null) {
                require_once 'Zend/Loader/PluginLoader/Exception.php';
                throw new Zend_Loader_PluginLoader_Exception('Prefix ' . $prefix . ' / Path ' . $path . ' was not found in the PluginLoader.');
            }
            unset($registry[$prefix][$pos]);
        } else {
            unset($registry[$prefix]);
        }

        return $this;
    }

    /**
     * Normalize plugin name
     *
     * @param  string $name
     * @return string
     */
    protected function _formatName($name)
    {
        return ucfirst((string) $name);
    }

    /**
     * Whether or not a Plugin by a specific name is loaded
     *
     * @param string $name
     * @return Zend_Loader_PluginLoader
     */
    public function isLoaded($name)
    {
        $name = $this->_formatName($name);
        if ($this->_useStaticRegistry) {
            return isset(self::$_staticLoadedPlugins[$this->_useStaticRegistry][$name]);
        }

        return isset($this->_loadedPlugins[$name]);
    }

    /**
     * Return full class name for a named plugin
     *
     * @param string $name
     * @return string|false False if class not found, class name otherwise
     */
    public function getClassName($name)
    {
        $name = $this->_formatName($name);
        if ($this->_useStaticRegistry 
            && isset(self::$_staticLoadedPlugins[$this->_useStaticRegistry][$name])
        ) {
            return self::$_staticLoadedPlugins[$this->_useStaticRegistry][$name];
        } elseif (isset($this->_loadedPlugins[$name])) {
            return $this->_loadedPlugins[$name];
        }

        return false;
    }

    /**
     * Get path to plugin class
     * 
     * @param  mixed $name 
     * @return string|false False if not found
     */
    public function getClassPath($name)
    {
        $name = $this->_formatName($name);
        if ($this->_useStaticRegistry 
            && !empty(self::$_staticLoadedPluginPaths[$this->_useStaticRegistry][$name])
        ) {
            return self::$_staticLoadedPluginPaths[$this->_useStaticRegistry][$name];
        } elseif (!empty($this->_loadedPluginPaths[$name])) {
            return $this->_loadedPluginPaths[$name];
        }

        if ($this->isLoaded($name)) {
            $class = $this->getClassName($name);
            $r     = new ReflectionClass($class);
            $path  = $r->getFileName();
            if ($this->_useStaticRegistry) {
                self::$_staticLoadedPluginPaths[$this->_useStaticRegistry][$name] = $path;
            } else {
                $this->_loadedPluginPaths[$name] = $path;
            }
            return $path;
        }

        return false;
    }

    /**
     * Load a plugin via the name provided
     *
     * @param  string $name
     * @return string Class name of loaded class
     * @throws Zend_Loader_Exception if class not found
     */
    public function load($name)
    {
        $name = $this->_formatName($name);
        if ($this->isLoaded($name)) {
            return $this->getClassName($name);
        }

        if ($this->_useStaticRegistry) {
            $registry = self::$_staticPrefixToPaths[$this->_useStaticRegistry];
        } else {
            $registry = $this->_prefixToPaths;
        }

        $registry  = array_reverse($registry, true);
        $found     = false;
        $classFile = str_replace('_', DIRECTORY_SEPARATOR, $name) . '.php';
        $incFile   = self::getIncludeFileCache();
        foreach ($registry as $prefix => $paths) {
            $className = $prefix . $name;

            if (class_exists($className, false)) {
                $found = true;
                break;
            }

            $paths     = array_reverse($paths, true);

            foreach ($paths as $path) {
                $loadFile = $path . $classFile;
                if (Zend_Loader::isReadable($loadFile)) {
                    include_once $loadFile;
                    if (class_exists($className, false)) {
                        if (null !== $incFile) {
                            self::_appendIncFile($loadFile);
                        }
                        $found = true;
                        break 2;
                    }
                }
            }
        }

        if (!$found) {
            $message = "Plugin by name '$name' was not found in the registry; used paths:";
            foreach ($registry as $prefix => $paths) {
                $message .= "\n$prefix: " . implode(PATH_SEPARATOR, $paths);
            }
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception($message);
       }

        if ($this->_useStaticRegistry) {
            self::$_staticLoadedPlugins[$this->_useStaticRegistry][$name]     = $className;
            self::$_staticLoadedPluginPaths[$this->_useStaticRegistry][$name] = (isset($loadFile) ? $loadFile : '');
        } else {
            $this->_loadedPlugins[$name]     = $className;
            $this->_loadedPluginPaths[$name] = (isset($loadFile) ? $loadFile : '');
        }
        return $className;
    }

    /**
     * Set path to class file cache
     *
     * Specify a path to a file that will add include_once statements for each 
     * plugin class loaded. This is an opt-in feature for performance purposes.
     * 
     * @param  string $file 
     * @return void
     * @throws Zend_Loader_PluginLoader_Exception if file is not writeable or path does not exist
     */
    public static function setIncludeFileCache($file)
    {
        if (null === $file) {
            self::$_includeFileCache = null;
            return;
        }

        if (!file_exists($file) && !file_exists(dirname($file))) {
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception('Specified file does not exist and/or directory does not exist (' . $file . ')');
        }
        if (file_exists($file) && !is_writable($file)) {
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception('Specified file is not writeable (' . $file . ')');
        }
        if (!file_exists($file) && file_exists(dirname($file)) && !is_writable(dirname($file))) {
            require_once 'Zend/Loader/PluginLoader/Exception.php';
            throw new Zend_Loader_PluginLoader_Exception('Specified file is not writeable (' . $file . ')');
        }

        self::$_includeFileCache = $file;
    }

    /**
     * Retrieve class file cache path
     * 
     * @return string|null
     */
    public static function getIncludeFileCache()
    {
        return self::$_includeFileCache;
    }

    /**
     * Append an include_once statement to the class file cache
     * 
     * @param  string $incFile 
     * @return void
     */
    protected static function _appendIncFile($incFile)
    {
        if (!file_exists(self::$_includeFileCache)) {
            $file = '<?php';
        } else {
            $file = file_get_contents(self::$_includeFileCache);
        }
        if (!strstr($file, $incFile)) {
            $file .= "\ninclude_once '$incFile';";
            file_put_contents(self::$_includeFileCache, $file);
        }
    }
}
PKpG[3��CmmLoader/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToUnderscore.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Loader
 * @uses       Zend_Exception
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Loader_Exception extends Zend_Exception 
{}PKpG[���h��!Loader/PluginLoader/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Plugin class loader interface
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Loader_PluginLoader_Interface
{
    /**
     * Add prefixed paths to the registry of paths
     *
     * @param string $prefix
     * @param string $path
     * @return Zend_Loader_PluginLoader
     */
    public function addPrefixPath($prefix, $path);
    
    /**
     * Remove a prefix (or prefixed-path) from the registry
     *
     * @param string $prefix
     * @param string $path OPTIONAL
     * @return Zend_Loader_PluginLoader
     */
    public function removePrefixPath($prefix, $path = null);
    
    /**
     * Whether or not a Helper by a specific name
     *
     * @param string $name
     * @return Zend_Loader_PluginLoader
     */
    public function isLoaded($name);

    /**
     * Return full class name for a named helper
     *
     * @param string $name
     * @return string
     */
    public function getClassName($name);
    
    /**
     * Load a helper via the name provided
     *
     * @param string $name
     * @return string
     */
    public function load($name);
}
PKpG[����}}!Loader/PluginLoader/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Loader_Exception
 */
require_once 'Zend/Loader/Exception.php';

/**
 * Plugin class loader exceptions
 *
 * @category   Zend
 * @package    Zend_Loader
 * @subpackage PluginLoader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Loader_PluginLoader_Exception extends Zend_Loader_Exception
{
}
PKpG[g��-))
Filter.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Filter.php 8434 2008-02-27 19:15:13Z darby $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter implements Zend_Filter_Interface
{
    /**
     * Filter chain
     *
     * @var array
     */
    protected $_filters = array();

    /**
     * Adds a filter to the end of the chain
     *
     * @param  Zend_Filter_Interface $filter
     * @return Zend_Filter Provides a fluent interface
     */
    public function addFilter(Zend_Filter_Interface $filter)
    {
        $this->_filters[] = $filter;
        return $this;
    }

    /**
     * Returns $value filtered through each filter in the chain
     *
     * Filters are run in the order in which they were added to the chain (FIFO)
     *
     * @param  mixed $value
     * @return mixed
     */
    public function filter($value)
    {
        $valueFiltered = $value;
        foreach ($this->_filters as $filter) {
            $valueFiltered = $filter->filter($valueFiltered);
        }
        return $valueFiltered;
    }

    /**
     * Returns a value filtered through a specified filter class, without requiring separate
     * instantiation of the filter object.
     *
     * The first argument of this method is a data input value, that you would have filtered.
     * The second argument is a string, which corresponds to the basename of the filter class,
     * relative to the Zend_Filter namespace. This method automatically loads the class,
     * creates an instance, and applies the filter() method to the data input. You can also pass
     * an array of constructor arguments, if they are needed for the filter class.
     *
     * @param  mixed        $value
     * @param  string       $classBaseName
     * @param  array        $args          OPTIONAL
     * @param  array|string $namespaces    OPTIONAL
     * @return mixed
     * @throws Zend_Filter_Exception
     */
    public static function get($value, $classBaseName, array $args = array(), $namespaces = array())
    {
        require_once 'Zend/Loader.php';
        $namespaces = array_merge(array('Zend_Filter'), (array) $namespaces);
        foreach ($namespaces as $namespace) {
            $className = $namespace . '_' . ucfirst($classBaseName);
            try {
                @Zend_Loader::loadClass($className);
            } catch (Zend_Exception $ze) {
                continue;
            }
            $class = new ReflectionClass($className);
            if ($class->implementsInterface('Zend_Filter_Interface')) {
                if ($class->hasMethod('__construct')) {
                    $object = $class->newInstanceArgs($args);
                } else {
                    $object = $class->newInstance();
                }
                return $object->filter($value);
            }
        }
        require_once 'Zend/Filter/Exception.php';
        throw new Zend_Filter_Exception("Filter class not found from basename '$classBaseName'");
    }
}
PKpG[��J�I�IRest/Server.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Interface
 */
require_once 'Zend/Server/Interface.php';

/**
 * Zend_Server_Reflection
 */
require_once 'Zend/Server/Reflection.php';

/**
 * Zend_Rest_Server_Exception
 */
require_once 'Zend/Rest/Server/Exception.php';

/**
 * Zend_Server_Abstract
 */
require_once 'Zend/Server/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Server implements Zend_Server_Interface
{
    /**
     * Class Constructor Args
     * @var array
     */
    protected $_args = array();

    /**
     * @var string Encoding
     */
    protected $_encoding = 'UTF-8';

    /**
     * @var array An array of Zend_Server_Reflect_Method
     */
    protected $_functions = array();

    /**
     * @var array Array of headers to send
     */
    protected $_headers = array();

    /**
     * @var array PHP's Magic Methods, these are ignored
     */
    protected static $magicMethods = array(
        '__construct',
        '__destruct',
        '__get',
        '__set',
        '__call',
        '__sleep',
        '__wakeup',
        '__isset',
        '__unset',
        '__tostring',
        '__clone',
        '__set_state',
    );

    /**
     * @var string Current Method
     */
    protected $_method;

    /**
     * @var Zend_Server_Reflection
     */
    protected $_reflection = null;

    /**
     * Whether or not {@link handle()} should send output or return the response.
     * @var boolean Defaults to false
     */
    protected $_returnResponse = false;

    /**
     * Constructor
     */
    public function __construct()
    {
        set_exception_handler(array($this, "fault"));
        $this->_reflection = new Zend_Server_Reflection();
    }

    /**
     * Set XML encoding
     * 
     * @param  string $encoding 
     * @return Zend_Rest_Server
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = (string) $encoding;
        return $this;
    }

    /**
     * Get XML encoding
     * 
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Lowercase a string
     *
     * Lowercase's a string by reference
     *
     * @param string $value
     * @param string $key
     * @return string Lower cased string
     */
    public static function lowerCase(&$value, &$key)
    {
        return $value = strtolower($value);
    }

    /**
     * Whether or not to return a response
     *
     * If called without arguments, returns the value of the flag. If called
     * with an argument, sets the flag.
     *
     * When 'return response' is true, {@link handle()} will not send output,
     * but will instead return the response from the dispatched function/method.
     *
     * @param boolean $flag
     * @return boolean|Zend_Rest_Server Returns Zend_Rest_Server when used to set the flag; returns boolean flag value otherwise.
     */
    public function returnResponse($flag = null)
    {
        if (null == $flag) {
            return $this->_returnResponse;
        }

        $this->_returnResponse = ($flag) ? true : false;
        return $this;
    }

    /**
     * Implement Zend_Server_Interface::handle()
     *
     * @param  array $request
     * @throws Zend_Rest_Server_Exception
     * @return string|void
     */
    public function handle($request = false)
    {
        $this->_headers = array('Content-Type: text/xml');
        if (!$request) {
            $request = $_REQUEST;
        }
        if (isset($request['method'])) {
            $this->_method = $request['method'];
            if (isset($this->_functions[$this->_method])) {
                if ($this->_functions[$this->_method] instanceof Zend_Server_Reflection_Function || $this->_functions[$this->_method] instanceof Zend_Server_Reflection_Method && $this->_functions[$this->_method]->isPublic()) {
                    $request_keys = array_keys($request);
                    array_walk($request_keys, array(__CLASS__, "lowerCase"));
                    $request = array_combine($request_keys, $request);

                    $func_args = $this->_functions[$this->_method]->getParameters();

                    $calling_args = array();
                    foreach ($func_args as $arg) {
                        if (isset($request[strtolower($arg->getName())])) {
                            $calling_args[] = $request[strtolower($arg->getName())];
                        } elseif ($arg->isOptional()) {
                            $calling_args[] = $arg->getDefaultValue();
                        }
                    }

                    foreach ($request as $key => $value) {
                        if (substr($key, 0, 3) == 'arg') {
                            $key = str_replace('arg', '', $key);
                            $calling_args[$key] = $value;
                        }
                    }

                    // Sort arguments by key -- @see ZF-2279
                    ksort($calling_args);

                    $result = false;
                    if (count($calling_args) < count($func_args)) {
                        $result = $this->fault(new Zend_Rest_Server_Exception('Invalid Method Call to ' . $this->_method . '. Requires ' . count($func_args) . ', ' . count($calling_args) . ' given.'), 400);
                    }

                    if (!$result && $this->_functions[$this->_method] instanceof Zend_Server_Reflection_Method) {
                        // Get class
                        $class = $this->_functions[$this->_method]->getDeclaringClass()->getName();

                        if ($this->_functions[$this->_method]->isStatic()) {
                            // for some reason, invokeArgs() does not work the same as
                            // invoke(), and expects the first argument to be an object.
                            // So, using a callback if the method is static.
                            $result = $this->_callStaticMethod($class, $calling_args);
                        } else {
                            // Object method
                            $result = $this->_callObjectMethod($class, $calling_args);
                        }
                    } elseif (!$result) {
                        try {
                            $result = call_user_func_array($this->_functions[$this->_method]->getName(), $calling_args); //$this->_functions[$this->_method]->invokeArgs($calling_args);
                        } catch (Exception $e) {
                            $result = $this->fault($e);
                        }
                    }
                } else {
                    require_once "Zend/Rest/Server/Exception.php";
                    $result = $this->fault(
                        new Zend_Rest_Server_Exception("Unknown Method '$this->_method'."),
                        404
                    );
                }
            } else {
                require_once "Zend/Rest/Server/Exception.php";
                $result = $this->fault(
                    new Zend_Rest_Server_Exception("Unknown Method '$this->_method'."),
                    404
                );
            }
        } else {
            require_once "Zend/Rest/Server/Exception.php";
            $result = $this->fault(
                new Zend_Rest_Server_Exception("No Method Specified."),
                404
            );
        }

        if ($result instanceof SimpleXMLElement) {
            $response = $result->asXML();
        } elseif ($result instanceof DOMDocument) {
            $response = $result->saveXML();
        } elseif ($result instanceof DOMNode) {
            $response = $result->ownerDocument->saveXML($result);
        } elseif (is_array($result) || is_object($result)) {
            $response = $this->_handleStruct($result);
        } else {
            $response = $this->_handleScalar($result);
        }

        if (!$this->returnResponse()) {
            if (!headers_sent()) {
                foreach ($this->_headers as $header) {
                    header($header);
                }
            }

            echo $response;
            return;
        }

        return $response;
     }

    /**
     * Implement Zend_Server_Interface::setClass()
     *
     * @param string $classname Class name
     * @param string $namespace Class namespace (unused)
     * @param array $argv An array of Constructor Arguments
     */
    public function setClass($classname, $namespace = '', $argv = array())
    {
        $this->_args = $argv;
        foreach ($this->_reflection->reflectClass($classname, $argv)->getMethods() as $method) {
            $this->_functions[$method->getName()] = $method;
        }
    }

    /**
     * Handle an array or object result
     *
     * @param array|object $struct Result Value
     * @return string XML Response
     */
    protected function _handleStruct($struct)
    {
        $function = $this->_functions[$this->_method];
        if ($function instanceof Zend_Server_Reflection_Method) {
            $class = $function->getDeclaringClass()->getName();
        } else {
            $class = false;
        }

        $method = $function->getName();

        $dom    = new DOMDocument('1.0', $this->getEncoding());
        if ($class) {
            $root   = $dom->createElement($class);
            $method = $dom->createElement($method);
            $root->appendChild($method);
        } else {
            $root   = $dom->createElement($method);
            $method = $root;
        }
        $root->setAttribute('generator', 'zend');
        $root->setAttribute('version', '1.0');
        $dom->appendChild($root);

        $this->_structValue($struct, $dom, $method);

        $struct = (array) $struct;
        if (!isset($struct['status'])) {
            $status = $dom->createElement('status', 'success');
            $method->appendChild($status);
        }

        return $dom->saveXML();
    }

    /**
     * Recursively iterate through a struct
     *
     * Recursively iterates through an associative array or object's properties
     * to build XML response.
     *
     * @param mixed $struct
     * @param DOMDocument $dom
     * @param DOMElement $parent
     * @return void
     */
    protected function _structValue($struct, DOMDocument $dom, DOMElement $parent)
    {
        $struct = (array) $struct;

        foreach ($struct as $key => $value) {
            if ($value === false) {
                $value = 0;
            } elseif ($value === true) {
                $value = 1;
            }

            if (ctype_digit((string) $key)) {
                $key = 'key_' . $key;
            }

            if (is_array($value) || is_object($value)) {
                $element = $dom->createElement($key);
                $this->_structValue($value, $dom, $element);
            } else {
                $element = $dom->createElement($key);
                $element->appendChild($dom->createTextNode($value));
            }

            $parent->appendChild($element);
        }
    }

    /**
     * Handle a single value
     *
     * @param string|int|boolean $value Result value
     * @return string XML Response
     */
    protected function _handleScalar($value)
    {
        $function = $this->_functions[$this->_method];
        if ($function instanceof Zend_Server_Reflection_Method) {
            $class = $function->getDeclaringClass()->getName();
        } else {
            $class = false;
        }

        $method = $function->getName();

        $dom = new DOMDocument('1.0', $this->getEncoding());
        if ($class) {
            $xml = $dom->createElement($class);
            $methodNode = $dom->createElement($method);
            $xml->appendChild($methodNode);
        } else {
            $xml = $dom->createElement($method);
            $methodNode = $xml;
        }
        $xml->setAttribute('generator', 'zend');
        $xml->setAttribute('version', '1.0');
        $dom->appendChild($xml);

        if ($value === false) {
            $value = 0;
        } elseif ($value === true) {
            $value = 1;
        }

        if (isset($value)) {
            $element = $dom->createElement('response');
            $element->appendChild($dom->createTextNode($value));
            $methodNode->appendChild($element);
        } else {
            $methodNode->appendChild($dom->createElement('response'));
        }

        $methodNode->appendChild($dom->createElement('status', 'success'));

        return $dom->saveXML();
    }

    /**
     * Implement Zend_Server_Interface::fault()
     *
     * Creates XML error response, returning DOMDocument with response.
     *
     * @param string|Exception $fault Message
     * @param int $code Error Code
     * @return DOMDocument
     */
    public function fault($exception = null, $code = null)
    {
        if (isset($this->_functions[$this->_method])) {
            $function = $this->_functions[$this->_method];
        } elseif (isset($this->_method)) {
            $function = $this->_method;
        } else {
            $function = 'rest';
        }

        if ($function instanceof Zend_Server_Reflection_Method) {
            $class = $function->getDeclaringClass()->getName();
        } else {
            $class = false;
        }

        if ($function instanceof Zend_Server_Reflection_Function_Abstract) {
            $method = $function->getName();
        } else {
            $method = $function;
        }

        $dom = new DOMDocument('1.0', $this->getEncoding());
        if ($class) {
            $xml       = $dom->createElement($class);
            $xmlMethod = $dom->createElement($method);
            $xml->appendChild($xmlMethod);
        } else {
            $xml       = $dom->createElement($method);
            $xmlMethod = $xml;
        }
        $xml->setAttribute('generator', 'zend');
        $xml->setAttribute('version', '1.0');
        $dom->appendChild($xml);

        $xmlResponse = $dom->createElement('response');
        $xmlMethod->appendChild($xmlResponse);

        if ($exception instanceof Exception) {
            $element = $dom->createElement('message');
            $element->appendChild($dom->createTextNode($exception->getMessage()));
            $xmlResponse->appendChild($element);
            $code = $exception->getCode();
        } elseif (!is_null($exception) || 'rest' == $function) {
            $xmlResponse->appendChild($dom->createElement('message', 'An unknown error occured. Please try again.'));
        } else {
            $xmlResponse->appendChild($dom->createElement('message', 'Call to ' . $method . ' failed.'));
        }

        $xmlMethod->appendChild($xmlResponse);
        $xmlMethod->appendChild($dom->createElement('status', 'failed'));

        // Headers to send
        if (is_null($code) || (404 != $code))
        {
            $this->_headers[] = 'HTTP/1.0 400 Bad Request';
        } else {
            $this->_headers[] = 'HTTP/1.0 404 File Not Found';
        }

        return $dom;
    }

    /**
     * Retrieve any HTTP extra headers set by the server
     *
     * @return array
     */
    public function getHeaders()
    {
        return $this->_headers;
    }

    /**
     * Implement Zend_Server_Interface::addFunction()
     *
     * @param string $function Function Name
     * @param string $namespace Function namespace (unused)
     */
    public function addFunction($function, $namespace = '')
    {
        if (!is_array($function)) {
            $function = (array) $function;
        }

        foreach ($function as $func) {
            if (is_callable($func) && !in_array($func, self::$magicMethods)) {
                $this->_functions[$func] = $this->_reflection->reflectFunction($func);
            } else {
                throw new Zend_Rest_Server_Exception("Invalid Method Added to Service.");
            }
        }
    }

    /**
     * Implement Zend_Server_Interface::getFunctions()
     *
     * @return array An array of Zend_Server_Reflection_Method's
     */
    public function getFunctions()
    {
        return $this->_functions;
    }

    /**
     * Implement Zend_Server_Interface::loadFunctions()
     *
     * @todo Implement
     * @param array $functions
     */
    public function loadFunctions($functions)
    {
    }

    /**
     * Implement Zend_Server_Interface::setPersistence()
     *
     * @todo Implement
     * @param int $mode
     */
    public function setPersistence($mode)
    {
    }

    /**
     * Call a static class method and return the result
     * 
     * @param  string $class 
     * @param  array $args 
     * @return mixed
     */
    protected function _callStaticMethod($class, array $args)
    {
        try {
            $result = call_user_func_array(array($class, $this->_functions[$this->_method]->getName()), $args);
        } catch (Exception $e) {
            $result = $this->fault($e);
        }
        return $result;
    }

    /**
     * Call an instance method of an object
     * 
     * @param  string $class
     * @param  array $args
     * @return mixed
     * @throws Zend_Rest_Server_Exception For invalid class name
     */
    protected function _callObjectMethod($class, array $args)
    {
        try {
            if ($this->_functions[$this->_method]->getDeclaringClass()->getConstructor()) {
                $object = $this->_functions[$this->_method]->getDeclaringClass()->newInstanceArgs($this->_args);
            } else {
                $object = $this->_functions[$this->_method]->getDeclaringClass()->newInstance();
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            throw new Zend_Rest_Server_Exception('Error instantiating class ' . $class . ' to invoke method ' . $this->_functions[$this->_method]->getName(), 500);
        }

        try {
            $result = $this->_functions[$this->_method]->invokeArgs($object, $args);
        } catch (Exception $e) {
            $result = $this->fault($e);
        }

        return $result;
    }
}
PKpG[�"}�11Rest/Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Rest
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Rest_Exception
 */
require_once 'Zend/Rest/Exception.php';


/**
 * Zend_Rest_Server_Exception
 *
 * @package    Zend_Rest
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Server_Exception extends Zend_Rest_Exception
{
}

PKpG[P�0sDDRest/Client/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Rest_Exception
 */
require_once 'Zend/Rest/Exception.php';


/**
 * Zend_Rest_Server_Exception
 *
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Client_Exception extends Zend_Rest_Exception
{
}

PKpG[��cc Rest/Client/Result/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Rest_Client_Exception
 */
require_once "Zend/Rest/Client/Exception.php";

class Zend_Rest_Client_Result_Exception extends Zend_Rest_Client_Exception{}PKpG[ڈx	00Rest/Client/Result.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Client_Result implements IteratorAggregate {
    /**
     * @var SimpleXMLElement
     */
    protected $_sxml;

    /**
     * Constructor
     *
     * @param string $data XML Result
     * @return void
     */
    public function __construct($data)
    {
        set_error_handler(array($this, 'handleXmlErrors'));
        $this->_sxml = simplexml_load_string($data);
        if($this->_sxml === false) {
            $this->handleXmlErrors(0, "An error occured while parsing the REST response with simplexml.");
        } else {
            restore_error_handler();
        }
    }

    /**
     * Temporary error handler for parsing REST responses.
     *
     * @param int    $errno
     * @param string $errstr
     * @param string $errfile
     * @param string $errline
     * @param array  $errcontext
     * @throws Zend_Result_Client_Result_Exception
     */
    public function handleXmlErrors($errno, $errstr, $errfile = null, $errline = null, array $errcontext = null)
    {
        restore_error_handler();
        require_once "Zend/Rest/Client/Result/Exception.php";
        throw new Zend_Rest_Client_Result_Exception("REST Response Error: ".$errstr);
    }

    /**
     * Casts a SimpleXMLElement to its appropriate PHP value
     *
     * @param SimpleXMLElement $value
     * @return mixed
     */
    public function toValue(SimpleXMLElement $value)
    {
        $node = dom_import_simplexml($value);
        return $node->nodeValue;
    }

    /**
     * Get Property Overload
     *
     * @param string $name
     * @return null|SimpleXMLElement|array Null if not found, SimpleXMLElement if only one value found, array of Zend_Rest_Client_Result objects otherwise
     */
    public function __get($name)
    {
        if (isset($this->_sxml->{$name})) {
            return $this->_sxml->{$name};
        }

        $result = $this->_sxml->xpath("//$name");
        $count  = count($result);

        if ($count == 0) {
            return null;
        } elseif ($count == 1) {
            return $result[0];
        } else {
            return $result;
        }
    }

    /**
     * Cast properties to PHP values
     *
     * For arrays, loops through each element and casts to a value as well.
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (null !== ($value = $this->__get($method))) {
            if (!is_array($value)) {
                return $this->toValue($value);
            } else {
                $return = array();
                foreach ($value as $element) {
                    $return[] = $this->toValue($element);
                }
                return $return;
            }
        }

        return null;
    }


    /**
     * Isset Overload
     *
     * @param string $name
     * @return boolean
     */
    public function __isset($name)
    {
        if (isset($this->_sxml->{$name})) {
            return true;
        }

        $result = $this->_sxml->xpath("//$name");

        if (sizeof($result) > 0) {
            return true;
        }

        return false;
    }

    /**
     * Implement IteratorAggregate::getIterator()
     *
     * @return SimpleXMLIterator
     */
    public function getIterator()
    {
        return $this->_sxml;
    }

    /**
     * Get Request Status
     *
     * @return boolean
     */
    public function getStatus()
    {
        $status = $this->_sxml->xpath('//status/text()');

        $status = strtolower($status[0]);

        if (ctype_alpha($status) && $status == 'success') {
            return true;
        } elseif (ctype_alpha($status) && $status != 'success') {
            return false;
        } else {
            return (bool) $status;
        }
    }

    public function isError()
    {
        $status = $this->getStatus();
        if ($status) {
            return false;
        } else {
            return true;
        }
    }

    public function isSuccess()
    {
        $status = $this->getStatus();
        if ($status) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * toString overload
     *
     * Be sure to only call this when the result is a single value!
     *
     * @return string
     */
    public function __toString()
    {
        if (!$this->getStatus()) {
            $message = $this->_sxml->xpath('//message');
            return (string) $message[0];
        } else {
            $result = $this->_sxml->xpath('//response');
            if (sizeof($result) > 1) {
                return (string) "An error occured.";
            } else {
                return (string) $result[0];
            }
        }
    }
}
PKpG[�����Rest/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Rest
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Exception extends Zend_Exception
{}

PKpG[�~���Rest/Client.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Service_Abstract */
require_once 'Zend/Service/Abstract.php';

/** Zend_Rest_Client_Result */
require_once 'Zend/Rest/Client/Result.php';

/** Zend_Uri */
require_once 'Zend/Uri.php';

/**
 * @category   Zend
 * @package    Zend_Rest
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Rest_Client extends Zend_Service_Abstract
{
    /**
     * Data for the query
     * @var array
     */
    protected $_data = array();

     /**
     * Zend_Uri of this web service
     * @var Zend_Uri_Http
     */
    protected $_uri = null;

    /**
     * Constructor
     *
     * @param string|Zend_Uri_Http $uri URI for the web service
     * @return void
     */
    public function __construct($uri = null)
    {
        if (!empty($uri)) {
            $this->setUri($uri);
        }
    }

    /**
     * Set the URI to use in the request
     *
     * @param string|Zend_Uri_Http $uri URI for the web service
     * @return Zend_Rest_Client
     */
    public function setUri($uri)
    {
        if ($uri instanceof Zend_Uri_Http) {
            $this->_uri = $uri;
        } else {
            $this->_uri = Zend_Uri::factory($uri);
        }

        return $this;
    }

    /**
     * Retrieve the current request URI object
     *
     * @return Zend_Uri_Http
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * Call a remote REST web service URI and return the Zend_Http_Response object
     *
     * @param  string $path            The path to append to the URI
     * @throws Zend_Rest_Client_Exception
     * @return void
     */
    final private function _prepareRest($path)
    {
        // Get the URI object and configure it
        if (!$this->_uri instanceof Zend_Uri_Http) {
            require_once 'Zend/Rest/Client/Exception.php';
            throw new Zend_Rest_Client_Exception('URI object must be set before performing call');
        }

        $uri = $this->_uri->getUri();

        if ($path[0] != '/' && $uri[strlen($uri)-1] != '/') {
            $path = '/' . $path;
        }

        $this->_uri->setPath($path);

        /**
         * Get the HTTP client and configure it for the endpoint URI.  Do this each time
         * because the Zend_Http_Client instance is shared among all Zend_Service_Abstract subclasses.
         */
        self::getHttpClient()->resetParameters()->setUri($this->_uri);
    }

    /**
     * Performs an HTTP GET request to the $path.
     *
     * @param string $path
     * @param array  $query Array of GET parameters
     * @return Zend_Http_Response
     */
    final public function restGet($path, array $query = null)
    {
        $this->_prepareRest($path);
        $client = self::getHttpClient();
        $client->setParameterGet($query);
        return $client->request('GET');
    }

    /**
     * Perform a POST or PUT
     *
     * Performs a POST or PUT request. Any data provided is set in the HTTP
     * client. String data is pushed in as raw POST data; array or object data
     * is pushed in as POST parameters.
     *
     * @param mixed $method
     * @param mixed $data
     * @return Zend_Http_Response
     */
    protected function _performPost($method, $data = null)
    {
        $client = self::getHttpClient();
        if (is_string($data)) {
            $client->setRawData($data);
        } elseif (is_array($data) || is_object($data)) {
            $client->setParameterPost((array) $data);
        }
        return $client->request($method);
    }

    /**
     * Performs an HTTP POST request to $path.
     *
     * @param string $path
     * @param mixed $data Raw data to send
     * @return Zend_Http_Response
     */
    final public function restPost($path, $data = null)
    {
        $this->_prepareRest($path);
        return $this->_performPost('POST', $data);
    }

    /**
     * Performs an HTTP PUT request to $path.
     *
     * @param string $path
     * @param mixed $data Raw data to send in request
     * @return Zend_Http_Response
     */
    final public function restPut($path, $data = null)
    {
        $this->_prepareRest($path);
        return $this->_performPost('PUT', $data);
    }

    /**
     * Performs an HTTP DELETE request to $path.
     *
     * @param string $path
     * @return Zend_Http_Response
     */
    final public function restDelete($path)
    {
        $this->_prepareRest($path);
        return self::getHttpClient()->request('DELETE');
    }

    /**
     * Method call overload
     *
     * Allows calling REST actions as object methods; however, you must
     * follow-up by chaining the request with a request to an HTTP request
     * method (post, get, delete, put):
     * <code>
     * $response = $rest->sayHello('Foo', 'Manchu')->get();
     * </code>
     *
     * Or use them together, but in sequential calls:
     * <code>
     * $rest->sayHello('Foo', 'Manchu');
     * $response = $rest->get();
     * </code>
     *
     * @param string $method Method name
     * @param array $args Method args
     * @return Zend_Rest_Client_Result|Zend_Rest_Client Zend_Rest_Client if using
     * a remote method, Zend_Rest_Client_Result if using an HTTP request method
     */
    public function __call($method, $args)
    {
        $methods = array('post', 'get', 'delete', 'put');

        if (in_array(strtolower($method), $methods)) {
            if (!isset($args[0])) {
                $args[0] = $this->_uri->getPath();
            }
            $this->_data['rest'] = 1;
            $data = array_slice($args, 1) + $this->_data;
            $response = $this->{'rest' . $method}($args[0], $data);
            $this->_data = array();//Initializes for next Rest method.
            return new Zend_Rest_Client_Result($response->getBody());
        } else {
            // More than one arg means it's definitely a Zend_Rest_Server
            if (sizeof($args) == 1) {
                // Uses first called function name as method name
                if (!isset($this->_data['method'])) {
                    $this->_data['method'] = $method;
                    $this->_data['arg1']  = $args[0];
                }
                $this->_data[$method]  = $args[0];
            } else {
                $this->_data['method'] = $method;
                if (sizeof($args) > 0) {
                    foreach ($args as $key => $arg) {
                        $key = 'arg' . $key;
                        $this->_data[$key] = $arg;
                    }
                }
            }
            return $this;
        }
    }
}
PKpG[D'$�55
Dom/Query.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dom
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Dom_Query_Css2Xpath
 */
require_once 'Zend/Dom/Query/Css2Xpath.php';

/**
 * @see Zend_Dom_Query_Result
 */
require_once 'Zend/Dom/Query/Result.php';

/**
 * Query DOM structures based on CSS selectors and/or XPath
 * 
 * @package    Zend_Dom
 * @subpackage Query
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Dom_Query
{
    /**#@+
     * @const string Document types
     */
    const DOC_XML   = 'docXml';
    const DOC_HTML  = 'docHtml';
    const DOC_XHTML = 'docXhtml';
    /**#@-*/

    /**
     * @var string
     */
    protected $_document;

    /**
     * Document type
     * @var string
     */
    protected $_docType;

    /**
     * Constructor
     * 
     * @param  null|string $document 
     * @return void
     */
    public function __construct($document = null)
    {
        if (null !== $document) {
            $this->setDocument($document);
        }
    }

    /**
     * Set document to query
     * 
     * @param  string $document 
     * @return Zend_Dom_Query
     */
    public function setDocument($document)
    {
        if ('<?xml' == substr(trim($document), 0, 5)) {
            return $this->setDocumentXml($document);
        }
        if (strstr($document, 'DTD XHTML')) {
            return $this->setDocumentXhtml($document);
        }
        return $this->setDocumentHtml($document);
    }

    /**
     * Register HTML document 
     * 
     * @param  string $document 
     * @return Zend_Dom_Query
     */
    public function setDocumentHtml($document)
    {
        $this->_document = (string) $document;
        $this->_docType  = self::DOC_HTML;
        return $this;
    }

    /**
     * Register XHTML document
     * 
     * @param  string $document 
     * @return Zend_Dom_Query
     */
    public function setDocumentXhtml($document)
    {
        $this->_document = (string) $document;
        $this->_docType  = self::DOC_XHTML;
        return $this;
    }

    /**
     * Register XML document
     * 
     * @param  string $document 
     * @return Zend_Dom_Query
     */
    public function setDocumentXml($document)
    {
        $this->_document = (string) $document;
        $this->_docType  = self::DOC_XML;
        return $this;
    }

    /**
     * Retrieve current document
     * 
     * @return string
     */
    public function getDocument()
    {
        return $this->_document;
    }

    /**
     * Get document type
     * 
     * @return string
     */
    public function getDocumentType()
    {
        return $this->_docType;
    }

    /**
     * Perform a CSS selector query
     * 
     * @param  string $query 
     * @return Zend_Dom_Query_Result
     */
    public function query($query)
    {
        $xpathQuery = Zend_Dom_Query_Css2Xpath::transform($query);
        return $this->queryXpath($xpathQuery, $query);
    }

    /**
     * Perform an XPath query
     * 
     * @param  string $xpathQuery
     * @param  string $query CSS selector query
     * @return Zend_Dom_Query_Result
     */
    public function queryXpath($xpathQuery, $query = null)
    {
        if (null === ($document = $this->getDocument())) {
            require_once 'Zend/Dom/Exception.php';
            throw new Zend_Dom_Exception('Cannot query; no document registered');
        }

        $domDoc = new DOMDocument;
        $type   = $this->getDocumentType();
        switch ($type) {
            case self::DOC_XML:
                $success = @$domDoc->loadXML($document);
                break;
            case self::DOC_HTML:
            case self::DOC_XHTML:
            default:
                $success = @$domDoc->loadHTML($document);
                break;
        }

        if (!$success) {
            require_once 'Zend/Dom/Exception.php';
            throw new Zend_Dom_Exception(sprintf('Error parsing document (type == %s)', $type));
        }

        $nodeList   = $this->_getNodeList($domDoc, $xpathQuery);
        return new Zend_Dom_Query_Result($query, $xpathQuery, $domDoc, $nodeList);
    }

    /**
     * Prepare node list
     * 
     * @param  DOMDocument $document
     * @param  string|array $xpathQuery
     * @return array
     */
    protected function _getNodeList($document, $xpathQuery)
    {
        $xpath      = new DOMXPath($document);
        $xpathQuery = (string) $xpathQuery;
        if (preg_match_all('|\[contains\((@[a-z0-9_-]+),\s?\' |i', $xpathQuery, $matches)) {
            foreach ($matches[1] as $attribute) {
                $queryString = '//*[' . $attribute . ']';
                $attributeName = substr($attribute, 1);
                $nodes = $xpath->query($queryString);
                foreach ($nodes as $node) {
                    $attr = $node->attributes->getNamedItem($attributeName);
                    $attr->value = ' ' . $attr->value . ' ';
                }
            }
        }
        return $xpath->query($xpathQuery);
    }
}
PKpG[�ox==Dom/Exception.phpnu&1i�<?php
/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * Zend_Dom Exceptions
 * 
 * @package    Zend_Dom
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Dom_Exception extends Zend_Exception
{
}
PKpG[w-_�Dom/Query/Css2Xpath.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dom
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Transform CSS selectors to XPath 
 * 
 * @package    Zend_Dom
 * @subpackage Query
 * @copyright  Copyright (C) 2007 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 * @version    $Id: Css2Xpath.php 11013 2008-08-24 21:06:20Z thomas $
 */
class Zend_Dom_Query_Css2Xpath
{
    /**
     * Transform CSS expression to XPath
     * 
     * @param  string $path 
     * @return string
     */
    public static function transform($path)
    {
        $path = (string) $path;
        if (strstr($path, ',')) {
            $paths       = explode(',', $path);
            $expressions = array();
            foreach ($paths as $path) {
                $xpath = self::transform(trim($path));
                if (is_string($xpath)) {
                    $expressions[] = $xpath;
                } elseif (is_array($xpath)) {
                    $expressions = array_merge($expressions, $xpath);
                }
            }
            return $expressions;
        }

        $paths    = array('//');
        $segments = preg_split('/\s+/', $path);
        foreach ($segments as $key => $segment) {
            $pathSegment = self::_tokenize($segment);
            if (0 == $key) {
                if (0 === strpos($pathSegment, '[contains(@class')) {
                    $paths[0] .= '*' . $pathSegment;
                } else {
                    $paths[0] .= $pathSegment;
                }
                continue;
            }
            if (0 === strpos($pathSegment, '[contains(@class')) {
                foreach ($paths as $key => $xpath) {
                    $paths[$key] .= '//*' . $pathSegment;
                    $paths[]      = $xpath . $pathSegment;
                }
            } else {
                foreach ($paths as $key => $xpath) {
                    $paths[$key] .= '//' . $pathSegment;
                }
            }
        }

        if (1 == count($paths)) {
            return $paths[0];
        }
        return implode(' | ', $paths);
    }

    /**
     * Tokenize CSS expressions to XPath
     * 
     * @param  string $expression 
     * @return string
     */
    protected static function _tokenize($expression)
    {
        // Child selectors
        $expression = str_replace('>', '/', $expression);

        // IDs
        $expression = preg_replace('|#([a-z][a-z0-9_-]*)|i', '[@id=\'$1\']', $expression);
        $expression = preg_replace('|(?<![a-z0-9_-])(\[@id=)|i', '*$1', $expression);

        // arbitrary attribute strict equality
        if (preg_match('|([a-z]+)\[([a-z0-9_-]+)=[\'"]([^\'"]+)[\'"]\]|i', $expression)) {
            $expression = preg_replace_callback(
                '|([a-z]+)\[([a-z0-9_-]+)=[\'"]([^\'"]+)[\'"]\]|i', 
                create_function(
                    '$matches',
                    'return $matches[1] . "[@" . strtolower($matches[2]) . "=\'" . $matches[3] . "\']";'
                ),
                $expression
            );
        }

        // arbitrary attribute contains full word
        if (preg_match('|([a-z]+)\[([a-z0-9_-]+)~=[\'"]([^\'"]+)[\'"]\]|i', $expression)) {
            $expression = preg_replace_callback(
                '|([a-z]+)\[([a-z0-9_-]+)~=[\'"]([^\'"]+)[\'"]\]|i', 
                create_function(
                    '$matches',
                    'return $matches[1] . "[contains(@" . strtolower($matches[2]) . ", \' $matches[3] \')]";'
                ),
                $expression
            );
        }

        // arbitrary attribute contains specified content
        if (preg_match('|([a-z]+)\[([a-z0-9_-]+)\*=[\'"]([^\'"]+)[\'"]\]|i', $expression)) {
            $expression = preg_replace_callback(
                '|([a-z]+)\[([a-z0-9_-]+)\*=[\'"]([^\'"]+)[\'"]\]|i', 
                create_function(
                    '$matches',
                    'return $matches[1] . "[contains(@" . strtolower($matches[2]) . ", \'" . $matches[3] . "\')]";'
                ),
                $expression
            );
        }

        // Classes
        $expression = preg_replace('|\.([a-z][a-z0-9_-]*)|i', "[contains(@class, ' \$1 ')]", $expression);

        return $expression;
    }
}
PKpG[% �Z��Dom/Query/Result.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dom
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Results for DOM XPath query
 * 
 * @package    Zend_Dom
 * @subpackage Query
 * @uses       Iterator
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 * @version    $Id: Result.php 12507 2008-11-10 16:29:09Z matthew $
 */
class Zend_Dom_Query_Result implements Iterator,Countable
{
    /**
     * Number of results
     * @var int
     */
    protected $_count;

    /**
     * CSS Selector query
     * @var string
     */
    protected $_cssQuery;

    /**
     * @var DOMDocument
     */
    protected $_document;

    /**
     * @var DOMNodeList
     */
    protected $_nodeList;

    /**
     * Current iterator position
     * @var int
     */
    protected $_position = 0;

    /**
     * @var DOMXPath
     */
    protected $_xpath;

    /**
     * XPath query
     * @var string
     */
    protected $_xpathQuery;

    /**
     * Constructor
     * 
     * @param  string $cssQuery 
     * @param  string|array $xpathQuery 
     * @param  DOMDocument $document 
     * @param  DOMNodeList $nodeList
     * @return void
     */
    public function  __construct($cssQuery, $xpathQuery, DOMDocument $document, DOMNodeList $nodeList)
    {
        $this->_cssQuery   = $cssQuery;
        $this->_xpathQuery = $xpathQuery;
        $this->_document   = $document;
        $this->_nodeList   = $nodeList;
    }

    /**
     * Retrieve CSS Query
     * 
     * @return string
     */
    public function getCssQuery()
    {
        return $this->_cssQuery;
    }

    /**
     * Retrieve XPath query
     * 
     * @return string
     */
    public function getXpathQuery()
    {
        return $this->_xpathQuery;
    }

    /**
     * Retrieve DOMDocument
     * 
     * @return DOMDocument
     */
    public function getDocument()
    {
        return $this->_document;
    }

    /**
     * Iterator: rewind to first element
     * 
     * @return void
     */
    public function rewind()
    {
        $this->_position = 0;
        return $this->_nodeList->item(0);
    }

    /**
     * Iterator: is current position valid?
     * 
     * @return bool
     */
    public function valid()
    {
        if (in_array($this->_position, range(0, $this->_nodeList->length - 1)) && $this->_nodeList->length > 0) {
            return true;
        }
        return false;
    }

    /**
     * Iterator: return current element
     * 
     * @return DOMElement
     */
    public function current()
    {
        return $this->_nodeList->item($this->_position);
    }

    /**
     * Iterator: return key of current element
     * 
     * @return int
     */
    public function key()
    {
        return $this->_position;
    }

    /**
     * Iterator: move to next element
     * 
     * @return void
     */
    public function next()
    {
        ++$this->_position;
        return $this->_nodeList->item($this->_position);
    }

    /**
     * Countable: get count
     * 
     * @return int
     */
    public function count()
    {
        return $this->_nodeList->length;
    }
}
PKpG[�3$$Mail/Message/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

interface Zend_Mail_Message_Interface
{
    /**
     * return toplines as found after headers
     *
     * @return string toplines
     */
    public function getTopLines();

    /**
     * check if flag is set
     *
     * @param mixed $flag a flag name, use constants defined in Zend_Mail_Storage
     * @return bool true if set, otherwise false
     */
    public function hasFlag($flag);

    /**
     * get all set flags
     *
     * @return array array with flags, key and value are the same for easy lookup
     */
    public function getFlags();
}PKpG[�ZN@S
S
Mail/Message/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Message.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Zend_Mail_Part
 */
require_once 'Zend/Mail/Part/File.php';

/**
 * Zend_Mail_Message_Interface
 */
require_once 'Zend/Mail/Message/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Message_File extends Zend_Mail_Part_File implements Zend_Mail_Message_Interface
{
    /**
     * flags for this message
     * @var array
     */
    protected $_flags = array();

    /**
     * Public constructor
     *
     * In addition to the parameters of Zend_Mail_Part::__construct() this constructor supports:
     * - flags array with flags for message, keys are ignored, use constants defined in Zend_Mail_Storage
     *
     * @param  string $rawMessage  full message with or without headers
     * @throws Zend_Mail_Exception
     */
    public function __construct(array $params)
    {
        if (!empty($params['flags'])) {
            // set key and value to the same value for easy lookup
            $this->_flags = array_combine($params['flags'], $params['flags']);
        }
        
        parent::__construct($params);
    }

    /**
     * return toplines as found after headers
     *
     * @return string toplines
     */
    public function getTopLines()
    {
        return $this->_topLines;
    }

    /**
     * check if flag is set
     *
     * @param mixed $flag a flag name, use constants defined in Zend_Mail_Storage
     * @return bool true if set, otherwise false
     */
    public function hasFlag($flag)
    {
        return isset($this->_flags[$flag]);
    }

    /**
     * get all set flags
     *
     * @return array array with flags, key and value are the same for easy lookup
     */
    public function getFlags()
    {
        return $this->_flags;
    }
}
PKpG[Z{ƒ��Mail/Transport/Sendmail.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Sendmail.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Transport_Abstract
 */
require_once 'Zend/Mail/Transport/Abstract.php';


/**
 * Class for sending eMails via the PHP internal mail() function
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
{
    /**
     * Subject
     * @var string
     * @access public
     */
    public $subject = null;


    /**
     * Config options for sendmail parameters
     *
     * @var string
     */
    public $parameters;


    /**
     * EOL character string
     * @var string
     * @access public
     */
    public $EOL = PHP_EOL;


    /**
     * Constructor.
     *
     * @param  string $parameters OPTIONAL (Default: null)
     * @return void
     */
    public function __construct($parameters = null)
    {
        $this->parameters = $parameters;
    }


    /**
     * Send mail using PHP native mail()
     *
     * @access public
     * @return void
     * @throws Zend_Mail_Transport_Exception on mail() failure
     */
    public function _sendMail()
    {
        if ($this->parameters === null) {
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header);
        } else {
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
        }
        if (!$result) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('Unable to send mail');
        }
    }


    /**
     * Format and fix headers
     *
     * mail() uses its $to and $subject arguments to set the To: and Subject:
     * headers, respectively. This method strips those out as a sanity check to
     * prevent duplicate header entries.
     *
     * @access  protected
     * @param   array $headers
     * @return  void
     * @throws  Zend_Mail_Transport_Exception
     */
    protected function _prepareHeaders($headers)
    {
        if (!$this->_mail) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object');
        }

        // mail() uses its $to parameter to set the To: header, and the $subject
        // parameter to set the Subject: header. We need to strip them out.
        if (0 === strpos(PHP_OS, 'WIN')) {
            // If the current recipients list is empty, throw an error
            if (empty($this->recipients)) {
                /**
                 * @see Zend_Mail_Transport_Exception
                 */
                require_once 'Zend/Mail/Transport/Exception.php';
                throw new Zend_Mail_Transport_Exception('Missing To addresses');
            }
        } else {
            // All others, simply grab the recipients and unset the To: header
            if (!isset($headers['To'])) {
                /**
                 * @see Zend_Mail_Transport_Exception
                 */
                require_once 'Zend/Mail/Transport/Exception.php';
                throw new Zend_Mail_Transport_Exception('Missing To header');
            }

            unset($headers['To']['append']);
            $this->recipients = implode(',', $headers['To']);
        }

        // Remove recipient header
        unset($headers['To']);

        // Remove subject header, if present
        if (isset($headers['Subject'])) {
            unset($headers['Subject']);
        }

        // Prepare headers
        parent::_prepareHeaders($headers);
    }

}

PKpG[]^�F��Mail/Transport/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Exception
 */
require_once 'Zend/Mail/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Transport_Exception extends Zend_Mail_Exception
{}

PKpG[����(�(Mail/Transport/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';


/**
 * Abstract for sending eMails through different
 * ways of transport
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Mail_Transport_Abstract 
{
    /**
     * Mail body
     * @var string
     * @access public
     */
    public $body = '';

    /**
     * MIME boundary
     * @var string
     * @access public
     */
    public $boundary = '';

    /**
     * Mail header string
     * @var string
     * @access public
     */
    public $header = '';

    /**
     * Array of message headers
     * @var array
     * @access protected
     */
    protected $_headers = array();

    /**
     * Message is a multipart message
     * @var boolean
     * @access protected
     */
    protected $_isMultipart = false;

    /**
     * Zend_Mail object
     * @var false|Zend_Mail
     * @access protected
     */
    protected $_mail = false;

    /**
     * Array of message parts
     * @var array
     * @access protected
     */
    protected $_parts = array();

    /**
     * Recipients string
     * @var string
     * @access public
     */
    public $recipients = '';

    /**
     * EOL character string used by transport
     * @var string
     * @access public
     */
    public $EOL = "\r\n";

    /**
     * Send an email independent from the used transport
     *
     * The requisite information for the email will be found in the following
     * properties:
     *
     * - {@link $recipients} - list of recipients (string)
     * - {@link $header} - message header
     * - {@link $body} - message body
     */
    abstract protected function _sendMail();

    /**
     * Return all mail headers as an array
     *
     * If a boundary is given, a multipart header is generated with a
     * Content-Type of either multipart/alternative or multipart/mixed depending
     * on the mail parts present in the {@link $_mail Zend_Mail object} present.
     *
     * @param string $boundary
     * @return array
     */
    protected function _getHeaders($boundary)
    {
        if (null !== $boundary) {
            // Build multipart mail
            $type = $this->_mail->getType();
            if (!$type) {
                if ($this->_mail->hasAttachments) {
                    $type = Zend_Mime::MULTIPART_MIXED;
                } elseif ($this->_mail->getBodyText() && $this->_mail->getBodyHtml()) {
                    $type = Zend_Mime::MULTIPART_ALTERNATIVE;
                } else {
                    $type = Zend_Mime::MULTIPART_MIXED;
                }
            }

            $this->_headers['Content-Type'] = array(
                $type . '; charset="' . $this->_mail->getCharset() . '";'
                . $this->EOL
                . " " . 'boundary="' . $boundary . '"'
            );
            $this->_headers['MIME-Version'] = array('1.0');

            $this->boundary = $boundary;
        }

        return $this->_headers;
    }

    /**
     * Prepend header name to header value
     *
     * @param string $item
     * @param string $key
     * @param string $prefix
     * @static
     * @access protected
     * @return void
     */
    protected static function _formatHeader(&$item, $key, $prefix)
    {
        $item = $prefix . ': ' . $item;
    }

    /**
     * Prepare header string for use in transport
     *
     * Prepares and generates {@link $header} based on the headers provided.
     *
     * @param mixed $headers
     * @access protected
     * @return void
     * @throws Zend_Mail_Transport_Exception if any header lines exceed 998
     * characters
     */
    protected function _prepareHeaders($headers)
    {
        if (!$this->_mail) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('Missing Zend_Mail object in _mail property');
        }

        $this->header = '';

        foreach ($headers as $header => $content) {
            if (isset($content['append'])) {
                unset($content['append']);
                $value = implode(',' . $this->EOL . ' ', $content);
                $this->header .= $header . ': ' . $value . $this->EOL;
            } else {
                array_walk($content, array(get_class($this), '_formatHeader'), $header);
                $this->header .= implode($this->EOL, $content) . $this->EOL;
            }
        }

        // Sanity check on headers -- should not be > 998 characters
        $sane = true;
        foreach (explode($this->EOL, $this->header) as $line) {
            if (strlen(trim($line)) > 998) {
                $sane = false;
                break;
            }
        }
        if (!$sane) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Exception('At least one mail header line is too long');
        }
    }

    /**
     * Generate MIME compliant message from the current configuration
     *
     * If both a text and HTML body are present, generates a
     * multipart/alternative Zend_Mime_Part containing the headers and contents
     * of each. Otherwise, uses whichever of the text or HTML parts present.
     *
     * The content part is then prepended to the list of Zend_Mime_Parts for
     * this message.
     *
     * @return void
     */
    protected function _buildBody()
    {
        if (($text = $this->_mail->getBodyText())
            && ($html = $this->_mail->getBodyHtml()))
        {
            // Generate unique boundary for multipart/alternative
            $mime = new Zend_Mime(null);
            $boundaryLine = $mime->boundaryLine($this->EOL);
            $boundaryEnd  = $mime->mimeEnd($this->EOL);

            $text->disposition = false;
            $html->disposition = false;

            $body = $boundaryLine
                  . $text->getHeaders($this->EOL)
                  . $this->EOL
                  . $text->getContent($this->EOL)
                  . $this->EOL
                  . $boundaryLine
                  . $html->getHeaders($this->EOL)
                  . $this->EOL
                  . $html->getContent($this->EOL)
                  . $this->EOL
                  . $boundaryEnd;

            $mp           = new Zend_Mime_Part($body);
            $mp->type     = Zend_Mime::MULTIPART_ALTERNATIVE;
            $mp->boundary = $mime->boundary();

            $this->_isMultipart = true;

            // Ensure first part contains text alternatives
            array_unshift($this->_parts, $mp);

            // Get headers
            $this->_headers = $this->_mail->getHeaders();
            return;
        }

        // If not multipart, then get the body
        if (false !== ($body = $this->_mail->getBodyHtml())) {
            array_unshift($this->_parts, $body);
        } elseif (false !== ($body = $this->_mail->getBodyText())) {
            array_unshift($this->_parts, $body);
        }

        if (!$body) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('No body specified');
        }

        // Get headers
        $this->_headers = $this->_mail->getHeaders();
        $headers = $body->getHeadersArray($this->EOL);
        foreach ($headers as $header) {
            // Headers in Zend_Mime_Part are kept as arrays with two elements, a
            // key and a value
            $this->_headers[$header[0]] = array($header[1]);
        }
    }

    /**
     * Send a mail using this transport
     *
     * @param  Zend_Mail $mail
     * @access public
     * @return void
     * @throws Zend_Mail_Transport_Exception if mail is empty
     */
    public function send(Zend_Mail $mail)
    {
        $this->_isMultipart = false;
        $this->_mail        = $mail;
        $this->_parts       = $mail->getParts();
        $mime               = $mail->getMime();

        // Build body content
        $this->_buildBody();

        // Determine number of parts and boundary
        $count    = count($this->_parts);
        $boundary = null;
        if ($count < 1) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('Empty mail cannot be sent');
        }

        if ($count > 1) {
            // Multipart message; create new MIME object and boundary
            $mime     = new Zend_Mime($this->_mail->getMimeBoundary());
            $boundary = $mime->boundary();
        } elseif ($this->_isMultipart) {
            // multipart/alternative -- grab boundary
            $boundary = $this->_parts[0]->boundary;
        }

        // Determine recipients, and prepare headers
        $this->recipients = implode(',', $mail->getRecipients());
        $this->_prepareHeaders($this->_getHeaders($boundary));

        // Create message body
        // This is done so that the same Zend_Mail object can be used in
        // multiple transports
        $message = new Zend_Mime_Message();
        $message->setParts($this->_parts);
        $message->setMime($mime);
        $this->body = $message->generateMessage($this->EOL);

        // Send to transport!
        $this->_sendMail();
    }
}
PKpG[(x�a��Mail/Transport/Smtp.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Smtp.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * @see Zend_Mail_Protocol_Smtp
 */
require_once 'Zend/Mail/Protocol/Smtp.php';

/**
 * @see Zend_Mail_Transport_Abstract
 */
require_once 'Zend/Mail/Transport/Abstract.php';


/**
 * SMTP connection object
 *
 * Loads an instance of Zend_Mail_Protocol_Smtp and forwards smtp transactions
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Transport
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Transport_Smtp extends Zend_Mail_Transport_Abstract
{
    /**
     * EOL character string used by transport
     * @var string
     * @access public
     */
    public $EOL = "\n";

    /**
     * Remote smtp hostname or i.p.
     *
     * @var string
     */
    protected $_host;


    /**
     * Port number
     *
     * @var integer|null
     */
    protected $_port;


    /**
     * Local client hostname or i.p.
     *
     * @var string
     */
    protected $_name = 'localhost';


    /**
     * Authentication type OPTIONAL
     *
     * @var string
     */
    protected $_auth;


    /**
     * Config options for authentication
     *
     * @var array
     */
    protected $_config;


    /**
     * Instance of Zend_Mail_Protocol_Smtp
     *
     * @var Zend_Mail_Protocol_Smtp
     */
    protected $_connection;


    /**
     * Constructor.
     *
     * @param  string $host OPTIONAL (Default: 127.0.0.1)
     * @param  array|null $config OPTIONAL (Default: null)
     * @return void
     */
    public function __construct($host = '127.0.0.1', Array $config = array())
    {
        if (isset($config['name'])) {
            $this->_name = $config['name'];
        }
        if (isset($config['port'])) {
            $this->_port = $config['port'];
        }
        if (isset($config['auth'])) {
            $this->_auth = $config['auth'];
        }

        $this->_host = $host;
        $this->_config = $config;
    }


    /**
     * Class destructor to ensure all open connections are closed
     *
     * @return void
     */
    public function __destruct()
    {
        if ($this->_connection instanceof Zend_Mail_Protocol_Smtp) {
            try {
                $this->_connection->quit();
            } catch (Zend_Mail_Protocol_Exception $e) {
                // ignore
            }
            $this->_connection->disconnect();
        }
    }


    /**
     * Sets the connection protocol instance
     *
     * @param Zend_Mail_Protocol_Abstract $client
     *
     * @return void
     */
    public function setConnection(Zend_Mail_Protocol_Abstract $connection)
    {
        $this->_connection = $connection;
    }


    /**
     * Gets the connection protocol instance
     *
     * @return Zend_Mail_Protocol|null
     */
    public function getConnection()
    {
        return $this->_connection;
    }

    /**
     * Send an email via the SMTP connection protocol
     *
     * The connection via the protocol adapter is made just-in-time to allow a
     * developer to add a custom adapter if required before mail is sent.
     *
     * @return void
     */
    public function _sendMail()
    {
        // If sending multiple messages per session use existing adapter
        if (!($this->_connection instanceof Zend_Mail_Protocol_Smtp)) {
            // Check if authentication is required and determine required class
            $connectionClass = 'Zend_Mail_Protocol_Smtp';
            if ($this->_auth) {
                $connectionClass .= '_Auth_' . ucwords($this->_auth);
            }
            Zend_Loader::loadClass($connectionClass);
            $this->setConnection(new $connectionClass($this->_host, $this->_port, $this->_config));
            $this->_connection->connect();
            $this->_connection->helo($this->_name);
        } else {
            // Reset connection to ensure reliable transaction
            $this->_connection->rset();
        }

        // Set mail return path from sender email address
        $this->_connection->mail($this->_mail->getReturnPath());

        // Set recipient forward paths
        foreach ($this->_mail->getRecipients() as $recipient) {
            $this->_connection->rcpt($recipient);
        }

        // Issue DATA command to client
        $this->_connection->data($this->header . Zend_Mime::LINEEND . $this->body);
    }

    /**
     * Format and fix headers
     *
     * Some SMTP servers do not strip BCC headers. Most clients do it themselves as do we.
     *
     * @access  protected
     * @param   array $headers
     * @return  void
     * @throws  Zend_Transport_Exception
     */
    protected function _prepareHeaders($headers)
    {
        if (!$this->_mail) {
            /**
             * @see Zend_Mail_Transport_Exception
             */
            require_once 'Zend/Mail/Transport/Exception.php';
            throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object');
        }

        unset($headers['Bcc']);

        // Prepare headers
        parent::_prepareHeaders($headers);
    }
}
PKpG[--���Mail/Message.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Message.php 9099 2008-03-30 19:35:47Z thomas $
 */


/**
 * Zend_Mail_Part
 */
require_once 'Zend/Mail/Part.php';

/**
 * Zend_Mail_Message_Interface
 */
require_once 'Zend/Mail/Message/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Message extends Zend_Mail_Part implements Zend_Mail_Message_Interface
{
    /**
     * flags for this message
     * @var array
     */
    protected $_flags = array();

    /**
     * Public constructor
     *
     * In addition to the parameters of Zend_Mail_Part::__construct() this constructor supports:
     * - file  filename or file handle of a file with raw message content
     * - flags array with flags for message, keys are ignored, use constants defined in Zend_Mail_Storage
     *
     * @param  string $rawMessage  full message with or without headers
     * @throws Zend_Mail_Exception
     */
    public function __construct(array $params)
    {
        if (isset($params['file'])) {
            if (!is_resource($params['file'])) {
                $params['raw'] = @file_get_contents($params['file']);
                if ($params['raw'] === false) {
                    /**
                     * @see Zend_Mail_Exception
                     */
                    require_once 'Zend/Mail/Exception.php';
                    throw new Zend_Mail_Exception('could not open file');
                }
            } else {
                $params['raw'] = stream_get_contents($params['file']);
            }
        }

        if (!empty($params['flags'])) {
            // set key and value to the same value for easy lookup
            $this->_flags = array_combine($params['flags'], $params['flags']);
        }

        parent::__construct($params);
    }

    /**
     * return toplines as found after headers
     *
     * @return string toplines
     */
    public function getTopLines()
    {
        return $this->_topLines;
    }

    /**
     * check if flag is set
     *
     * @param mixed $flag a flag name, use constants defined in Zend_Mail_Storage
     * @return bool true if set, otherwise false
     */
    public function hasFlag($flag)
    {
        return isset($this->_flags[$flag]);
    }

    /**
     * get all set flags
     *
     * @return array array with flags, key and value are the same for easy lookup
     */
    public function getFlags()
    {
        return $this->_flags;
    }
}
PKpG[w2-++Mail/Part/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Part.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mime_Decode
 */
require_once 'Zend/Mime/Decode.php';

/**
 * @see Zend_Mail_Part
 */
require_once 'Zend/Mail/Part.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Part_File extends Zend_Mail_Part
{
    protected $_contentPos = array();
    protected $_partPos = array();
    protected $_fh;

    /**
     * Public constructor
     *
     * This handler supports the following params:
     * - file     filename or open file handler with message content (required)
     * - startPos start position of message or part in file (default: current position)
     * - endPos   end position of message or part in file (default: end of file)
     *
     * @param   array $params  full message with or without headers
     * @throws  Zend_Mail_Exception
     */
    public function __construct(array $params)
    {
        if (empty($params['file'])) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('no file given in params');
        }
        
        if (!is_resource($params['file'])) {
            $this->_fh = fopen($params['file'], 'r');
        } else {
            $this->_fh = $params['file'];
        }
        if (!$this->_fh) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('could not open file');
        }
        if (isset($params['startPos'])) {
            fseek($this->_fh, $params['startPos']);
        }
        $header = '';
        $endPos = isset($params['endPos']) ? $params['endPos'] : null;
        while (($endPos === null || ftell($this->_fh) < $endPos) && trim($line = fgets($this->_fh))) {
            $header .= $line;
        }

        Zend_Mime_Decode::splitMessage($header, $this->_headers, $null);
        
        $this->_contentPos[0] = ftell($this->_fh);
        if ($endPos !== null) {
            $this->_contentPos[1] = $endPos;
        } else {
            fseek($this->_fh, 0, SEEK_END);
            $this->_contentPos[1] = ftell($this->_fh);
        }
        if (!$this->isMultipart()) {
            return;
        }
        
        $boundary = $this->getHeaderField('content-type', 'boundary');
        if (!$boundary) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('no boundary found in content type to split message');
        }
        
        $part = array();
        $pos = $this->_contentPos[0];
        fseek($this->_fh, $pos);
        while (!feof($this->_fh) && ($endPos === null || $pos < $endPos)) {
            $line = fgets($this->_fh);
            if ($line === false) {
                if (feof($this->_fh)) {
                    break;
                }
                /**
                 * @see Zend_Mail_Exception
                 */
                require_once 'Zend/Mail/Exception.php';
                throw new Zend_Mail_Exception('error reading file');
            }

            $lastPos = $pos;
            $pos = ftell($this->_fh);
            $line = trim($line);

            if ($line == '--' . $boundary) {
                if ($part) {
                    // not first part
                    $part[1] = $lastPos;
                    $this->_partPos[] = $part;
                }
                $part = array($pos);
            } else if ($line == '--' . $boundary . '--') {
                $part[1] = $lastPos;
                $this->_partPos[] = $part;
                break;
            }
        }
        $this->_countParts = count($this->_partPos);
        
    }


    /**
     * Body of part
     *
     * If part is multipart the raw content of this part with all sub parts is returned
     *
     * @return string body
     * @throws Zend_Mail_Exception
     */
    public function getContent($stream = null)
    {
        fseek($this->_fh, $this->_contentPos[0]);
        if ($stream !== null) {
            return stream_copy_to_stream($this->_fh, $stream, $this->_contentPos[1] - $this->_contentPos[0]);    
        }
        $length = $this->_contentPos[1] - $this->_contentPos[0];
        return $length < 1 ? '' : fread($this->_fh, $length);
    }

    /**
     * Return size of part
     *
     * Quite simple implemented currently (not decoding). Handle with care.
     *
     * @return int size
     */
    public function getSize() {
        return $this->_contentPos[1] - $this->_contentPos[0];
    }

    /**
     * Get part of multipart message
     *
     * @param  int $num number of part starting with 1 for first part
     * @return Zend_Mail_Part wanted part
     * @throws Zend_Mail_Exception
     */
    public function getPart($num)
    {
        --$num;
        if (!isset($this->_partPos[$num])) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('part not found');
        }

        return new self(array('file' => $this->_fh, 'startPos' => $this->_partPos[$num][0], 
                              'endPos' => $this->_partPos[$num][1]));
    }
}
PKpG[�rL\��Mail/Part/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

interface Zend_Mail_Part_Interface extends RecursiveIterator
{
    /**
     * Check if part is a multipart message
     *
     * @return bool if part is multipart
     */
    public function isMultipart();


    /**
     * Body of part
     *
     * If part is multipart the raw content of this part with all sub parts is returned
     *
     * @return string body
     * @throws Zend_Mail_Exception
     */
    public function getContent();

    /**
     * Return size of part
     *
     * @return int size
     */
    public function getSize();

    /**
     * Get part of multipart message
     *
     * @param  int $num number of part starting with 1 for first part
     * @return Zend_Mail_Part wanted part
     * @throws Zend_Mail_Exception
     */
    public function getPart($num);

    /**
     * Count parts of a multipart part
     *
     * @return int number of sub-parts
     */
    public function countParts();


    /**
     * Get all headers
     *
     * The returned headers are as saved internally. All names are lowercased. The value is a string or an array
     * if a header with the same name occurs more than once.
     *
     * @return array headers as array(name => value)
     */
    public function getHeaders();

    /**
     * Get a header in specificed format
     *
     * Internally headers that occur more than once are saved as array, all other as string. If $format
     * is set to string implode is used to concat the values (with Zend_Mime::LINEEND as delim).
     *
     * @param  string $name   name of header, matches case-insensitive, but camel-case is replaced with dashes
     * @param  string $format change type of return value to 'string' or 'array'
     * @return string|array value of header in wanted or internal format
     * @throws Zend_Mail_Exception
     */
    public function getHeader($name, $format = null);
    
    /**
     * Get a specific field from a header like content type or all fields as array
     *
     * If the header occurs more than once, only the value from the first header
     * is returned.
     *
     * Throws a Zend_Mail_Exception if the requested header does not exist. If
     * the specific header field does not exist, returns null.
     *
     * @param  string $name       name of header, like in getHeader()
     * @param  string $wantedPart the wanted part, default is first, if null an array with all parts is returned
     * @param  string $firstName  key name for the first part
     * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value)
     * @throws Zend_Exception, Zend_Mail_Exception
     */
    public function getHeaderField($name, $wantedPart = 0, $firstName = 0);


    /**
     * Getter for mail headers - name is matched in lowercase
     *
     * This getter is short for Zend_Mail_Part::getHeader($name, 'string')
     *
     * @see Zend_Mail_Part::getHeader()
     *
     * @param  string $name header name
     * @return string value of header
     * @throws Zend_Mail_Exception
     */
    public function __get($name);

    /**
     * magic method to get content of part
     *
     * @return string content
     */
    public function __toString();
}PKpG[�&�nmmMail/Storage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Storage.php 9099 2008-03-30 19:35:47Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage
{
    // maildir and IMAP flags, using IMAP names, where possible to be able to distinguish between IMAP
    // system flags and other flags
    const FLAG_PASSED   = 'Passed';
    const FLAG_SEEN     = '\Seen';
    const FLAG_ANSWERED = '\Answered';
    const FLAG_FLAGGED  = '\Flagged';
    const FLAG_DELETED  = '\Deleted';
    const FLAG_DRAFT    = '\Draft';
    const FLAG_RECENT   = '\Recent';
}
PKpG[���Y5Y5
Mail/Part.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Part.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Mime_Decode
 */
require_once 'Zend/Mime/Decode.php';

/**
 * @see Zend_Mail_Part_Interface
 */
require_once 'Zend/Mail/Part/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Part implements RecursiveIterator, Zend_Mail_Part_Interface
{
    /**
     * headers of part as array
     * @var null|array
     */
    protected $_headers;

    /**
     * raw part body
     * @var null|string
     */
    protected $_content;

    /**
     * toplines as fetched with headers
     * @var string
     */
    protected $_topLines = '';

    /**
     * parts of multipart message
     * @var array
     */
    protected $_parts = array();

    /**
     * count of parts of a multipart message
     * @var null|int
     */
    protected $_countParts;

    /**
     * current position of iterator
     * @var int
     */
    protected $_iterationPos = 1;

    /**
     * mail handler, if late fetch is active
     * @var null|Zend_Mail_Storage_Abstract
     */
    protected $_mail;

    /**
     * message number for mail handler
     * @var int
     */
    protected $_messageNum = 0;

    /**
     * Public constructor
     *
     * Zend_Mail_Part supports different sources for content. The possible params are:
     * - handler    a instance of Zend_Mail_Storage_Abstract for late fetch
     * - id         number of message for handler
     * - raw        raw content with header and body as string
     * - headers    headers as array (name => value) or string, if a content part is found it's used as toplines
     * - noToplines ignore content found after headers in param 'headers'
     * - content    content as string
     *
     * @param   array $params  full message with or without headers
     * @throws  Zend_Mail_Exception
     */
    public function __construct(array $params)
    {
        if (isset($params['handler'])) {
            if (!$params['handler'] instanceof Zend_Mail_Storage_Abstract) {
                /**
                 * @see Zend_Mail_Exception
                 */
                require_once 'Zend/Mail/Exception.php';
                throw new Zend_Mail_Exception('handler is not a valid mail handler');
            }
            if (!isset($params['id'])) {
                /**
                 * @see Zend_Mail_Exception
                 */
                require_once 'Zend/Mail/Exception.php';
                throw new Zend_Mail_Exception('need a message id with a handler');
            }

            $this->_mail       = $params['handler'];
            $this->_messageNum = $params['id'];
        }

        if (isset($params['raw'])) {
            Zend_Mime_Decode::splitMessage($params['raw'], $this->_headers, $this->_content);
        } else if (isset($params['headers'])) {
            if (is_array($params['headers'])) {
                $this->_headers = $params['headers'];
            } else {
                if (!empty($params['noToplines'])) {
                    Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $null);
                } else {
                    Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $this->_topLines);
                }
            }
            if (isset($params['content'])) {
                $this->_content = $params['content'];
            }
        }
    }

    /**
     * Check if part is a multipart message
     *
     * @return bool if part is multipart
     */
    public function isMultipart()
    {
        try {
            return stripos($this->contentType, 'multipart/') === 0;
        } catch(Zend_Mail_Exception $e) {
            return false;
        }
    }


    /**
     * Body of part
     *
     * If part is multipart the raw content of this part with all sub parts is returned
     *
     * @return string body
     * @throws Zend_Mail_Exception
     */
    public function getContent()
    {
        if ($this->_content !== null) {
            return $this->_content;
        }

        if ($this->_mail) {
            return $this->_mail->getRawContent($this->_messageNum);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('no content');
        }
    }

    /**
     * Return size of part
     *
     * Quite simple implemented currently (not decoding). Handle with care.
     *
     * @return int size
     */
    public function getSize() {
        return strlen($this->getContent());
    }


    /**
     * Cache content and split in parts if multipart
     *
     * @return null
     * @throws Zend_Mail_Exception
     */
    protected function _cacheContent()
    {
        // caching content if we can't fetch parts
        if ($this->_content === null && $this->_mail) {
            $this->_content = $this->_mail->getRawContent($this->_messageNum);
        }

        if (!$this->isMultipart()) {
            return;
        }

        // split content in parts
        $boundary = $this->getHeaderField('content-type', 'boundary');
        if (!$boundary) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('no boundary found in content type to split message');
        }
        $parts = Zend_Mime_Decode::splitMessageStruct($this->_content, $boundary);
        if ($parts === null) {
            return;
        }
        $counter = 1;
        foreach ($parts as $part) {
            $this->_parts[$counter++] = new self(array('headers' => $part['header'], 'content' => $part['body']));
        }
    }

    /**
     * Get part of multipart message
     *
     * @param  int $num number of part starting with 1 for first part
     * @return Zend_Mail_Part wanted part
     * @throws Zend_Mail_Exception
     */
    public function getPart($num)
    {
        if (isset($this->_parts[$num])) {
            return $this->_parts[$num];
        }

        if (!$this->_mail && $this->_content === null) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('part not found');
        }

        if ($this->_mail && $this->_mail->hasFetchPart) {
            // TODO: fetch part
            // return
        }

        $this->_cacheContent();

        if (!isset($this->_parts[$num])) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('part not found');
        }

        return $this->_parts[$num];
    }

    /**
     * Count parts of a multipart part
     *
     * @return int number of sub-parts
     */
    public function countParts()
    {
        if ($this->_countParts) {
            return $this->_countParts;
        }

        $this->_countParts = count($this->_parts);
        if ($this->_countParts) {
            return $this->_countParts;
        }

        if ($this->_mail && $this->_mail->hasFetchPart) {
            // TODO: fetch part
            // return
        }

        $this->_cacheContent();

        $this->_countParts = count($this->_parts);
        return $this->_countParts;
    }


    /**
     * Get all headers
     *
     * The returned headers are as saved internally. All names are lowercased. The value is a string or an array
     * if a header with the same name occurs more than once.
     *
     * @return array headers as array(name => value)
     */
    public function getHeaders()
    {
        if ($this->_headers === null) {
            if (!$this->_mail) {
                $this->_headers = array();
            } else {
                $part = $this->_mail->getRawHeader($this->_messageNum);
                Zend_Mime_Decode::splitMessage($part, $this->_headers, $null);
            }
        }

        return $this->_headers;
    }

    /**
     * Get a header in specificed format
     *
     * Internally headers that occur more than once are saved as array, all other as string. If $format
     * is set to string implode is used to concat the values (with Zend_Mime::LINEEND as delim).
     *
     * @param  string $name   name of header, matches case-insensitive, but camel-case is replaced with dashes
     * @param  string $format change type of return value to 'string' or 'array'
     * @return string|array value of header in wanted or internal format
     * @throws Zend_Mail_Exception
     */
    public function getHeader($name, $format = null)
    {
        if ($this->_headers === null) {
            $this->getHeaders();
        }

        $lowerName = strtolower($name);

        if (!isset($this->_headers[$lowerName])) {
            $lowerName = strtolower(preg_replace('%([a-z])([A-Z])%', '\1-\2', $name));
            if (!isset($this->_headers[$lowerName])) {
                /**
                 * @see Zend_Mail_Exception
                 */
                require_once 'Zend/Mail/Exception.php';
                throw new Zend_Mail_Exception("no Header with Name $name found");
            }
        }
        $name = $lowerName;

        $header = $this->_headers[$name];

        switch ($format) {
            case 'string':
                if (is_array($header)) {
                    $header = implode(Zend_Mime::LINEEND, $header);
                }
                break;
            case 'array':
                $header = (array)$header;
            default:
                // do nothing
        }

        return $header;
    }
    
    /**
     * Get a specific field from a header like content type or all fields as array
     *
     * If the header occurs more than once, only the value from the first header
     * is returned.
     *
     * Throws a Zend_Mail_Exception if the requested header does not exist. If
     * the specific header field does not exist, returns null.
     *
     * @param  string $name       name of header, like in getHeader()
     * @param  string $wantedPart the wanted part, default is first, if null an array with all parts is returned
     * @param  string $firstName  key name for the first part
     * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value)
     * @throws Zend_Exception, Zend_Mail_Exception
     */
    public function getHeaderField($name, $wantedPart = 0, $firstName = 0) {
        return Zend_Mime_Decode::splitHeaderField(current($this->getHeader($name, 'array')), $wantedPart, $firstName);
    }


    /**
     * Getter for mail headers - name is matched in lowercase
     *
     * This getter is short for Zend_Mail_Part::getHeader($name, 'string')
     *
     * @see Zend_Mail_Part::getHeader()
     *
     * @param  string $name header name
     * @return string value of header
     * @throws Zend_Mail_Exception
     */
    public function __get($name)
    {
        return $this->getHeader($name, 'string');
    }

    /**
     * magic method to get content of part
     *
     * @return string content
     */
    public function __toString()
    {
        return $this->getContent();
    }

    /**
     * implements RecursiveIterator::hasChildren()
     *
     * @return bool current element has children/is multipart
     */
    public function hasChildren()
    {
        $current = $this->current();
        return $current && $current instanceof Zend_Mail_Part && $current->isMultipart();
    }

    /**
     * implements RecursiveIterator::getChildren()
     *
     * @return Zend_Mail_Part same as self::current()
     */
    public function getChildren()
    {
        return $this->current();
    }

    /**
     * implements Iterator::valid()
     *
     * @return bool check if there's a current element
     */
    public function valid()
    {
        if ($this->_countParts === null) {
            $this->countParts();
        }
        return $this->_iterationPos && $this->_iterationPos <= $this->_countParts;
    }

    /**
     * implements Iterator::next()
     *
     * @return null
     */
    public function next()
    {
        ++$this->_iterationPos;
    }

    /**
     * implements Iterator::key()
     *
     * @return string key/number of current part
     */
    public function key()
    {
        return $this->_iterationPos;
    }

    /**
     * implements Iterator::current()
     *
     * @return Zend_Mail_Part current part
     */
    public function current()
    {
        return $this->getPart($this->_iterationPos);
    }

    /**
     * implements Iterator::rewind()
     *
     * @return null
     */
    public function rewind()
    {
        $this->countParts();
        $this->_iterationPos = 1;
    }
}
PKpG[�]z�2�2Mail/Protocol/Pop3.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Pop3.php 12539 2008-11-11 02:47:17Z yoshida@zend.co.jp $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Pop3
{
    /**
     * Default timeout in seconds for initiating session
     */
    const TIMEOUT_CONNECTION = 30;
    
    /**
     * saves if server supports top
     * @var null|bool
     */
    public $hasTop = null;

    /**
     * socket to pop3
     * @var null|resource
     */
    protected $_socket;

    /**
     * greeting timestamp for apop
     * @var null|string
     */
    protected $_timestamp;


    /**
     * Public constructor
     *
     * @param  string      $host  hostname of IP address of POP3 server, if given connect() is called
     * @param  int|null    $port  port of POP3 server, null for default (110 or 995 for ssl)
     * @param  bool|string $ssl   use ssl? 'SSL', 'TLS' or false
     * @throws Zend_Mail_Protocol_Exception
     */
    public function __construct($host = '', $port = null, $ssl = false)
    {
        if ($host) {
            $this->connect($host, $port, $ssl);
        }
    }


    /**
     * Public destructor
     */
    public function __destruct()
    {
        $this->logout();
    }


    /**
     * Open connection to POP3 server
     *
     * @param  string      $host  hostname of IP address of POP3 server
     * @param  int|null    $port  of POP3 server, default is 110 (995 for ssl)
     * @param  string|bool $ssl   use 'SSL', 'TLS' or false
     * @return string welcome message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function connect($host, $port = null, $ssl = false)
    {
        if ($ssl == 'SSL') {
            $host = 'ssl://' . $host;
        }

        if ($port === null) {
            $port = $ssl == 'SSL' ? 995 : 110;
        }

        $errno  =  0;
        $errstr = '';
        $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION);
        if (!$this->_socket) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('cannot connect to host : ' . $errno . ' : ' . $errstr);
        }

        $welcome = $this->readResponse();

        strtok($welcome, '<');
        $this->_timestamp = strtok('>');
        if (!strpos($this->_timestamp, '@')) {
            $this->_timestamp = null;
        } else {
            $this->_timestamp = '<' . $this->_timestamp . '>';
        }

        if ($ssl === 'TLS') {
            $this->request('STLS');
            $result = stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
            if (!$result) {
                /**
                 * @see Zend_Mail_Protocol_Exception
                 */
                require_once 'Zend/Mail/Protocol/Exception.php';
                throw new Zend_Mail_Protocol_Exception('cannot enable TLS');
            }
        }

        return $welcome;
    }


    /**
     * Send a request
     *
     * @param string $request your request without newline
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function sendRequest($request)
    {
        $result = @fputs($this->_socket, $request . "\r\n");
        if (!$result) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('send failed - connection closed?');
        }
    }


    /**
     * read a response
     *
     * @param  boolean $multiline response has multiple lines and should be read until "<nl>.<nl>"
     * @return string response
     * @throws Zend_Mail_Protocol_Exception
     */
    public function readResponse($multiline = false)
    {
        $result = @fgets($this->_socket);
        if (!is_string($result)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('read failed - connection closed?');
        }

        $result = trim($result);
        if (strpos($result, ' ')) {
            list($status, $message) = explode(' ', $result, 2);
        } else {
            $status = $result;
            $message = '';
        }

        if ($status != '+OK') {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('last request failed');
        }

        if ($multiline) {
            $message = '';
            $line = fgets($this->_socket);
            while ($line && rtrim($line, "\r\n") != '.') {
                if ($line[0] == '.') {
                    $line = substr($line, 1);
                }
                $message .= $line;
                $line = fgets($this->_socket);
            };
        }

        return $message;
    }


    /**
     * Send request and get resposne
     *
     * @see sendRequest(), readResponse()
     *
     * @param  string $request    request
     * @param  bool   $multiline  multiline response?
     * @return string             result from readResponse()
     * @throws Zend_Mail_Protocol_Exception
     */
    public function request($request, $multiline = false)
    {
        $this->sendRequest($request);
        return $this->readResponse($multiline);
    }


    /**
     * End communication with POP3 server (also closes socket)
     *
     * @return null
     */
    public function logout()
    {
        if (!$this->_socket) {
            return;
        }

        try {
            $this->request('QUIT');
        } catch (Zend_Mail_Protocol_Exception $e) {
            // ignore error - we're closing the socket anyway
        }

        fclose($this->_socket);
        $this->_socket = null;
    }


    /**
     * Get capabilities from POP3 server
     *
     * @return array list of capabilities
     * @throws Zend_Mail_Protocol_Exception
     */
    public function capa()
    {
        $result = $this->request('CAPA', true);
        return explode("\n", $result);
    }


    /**
     * Login to POP3 server. Can use APOP
     *
     * @param  string $user      username
     * @param  string $password  password
     * @param  bool   $try_apop  should APOP be tried?
     * @return void
     * @throws Zend_Mail_Protocol_Exception
     */
    public function login($user, $password, $tryApop = true)
    {
        if ($tryApop && $this->_timestamp) {
            try {
                $this->request("APOP $user " . md5($this->_timestamp . $password));
                return;
            } catch (Zend_Mail_Protocol_Exception $e) {
                // ignore
            }
        }

        $result = $this->request("USER $user");
        $result = $this->request("PASS $password");
    }


    /**
     * Make STAT call for message count and size sum
     *
     * @param  int $messages  out parameter with count of messages
     * @param  int $octets    out parameter with size in octects of messages
     * @return void
     * @throws Zend_Mail_Protocol_Exception
     */
    public function status(&$messages, &$octets)
    {
        $messages = 0;
        $octets = 0;
        $result = $this->request('STAT');

        list($messages, $octets) = explode(' ', $result);
    }


    /**
     * Make LIST call for size of message(s)
     *
     * @param  int|null $msgno number of message, null for all
     * @return int|array size of given message or list with array(num => size)
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getList($msgno = null)
    {
        if ($msgno !== null) {
            $result = $this->request("LIST $msgno");

            list(, $result) = explode(' ', $result);
            return (int)$result;
        }

        $result = $this->request('LIST', true);
        $messages = array();
        $line = strtok($result, "\n");
        while ($line) {
            list($no, $size) = explode(' ', trim($line));
            $messages[(int)$no] = (int)$size;
            $line = strtok("\n");
        }

        return $messages;
    }


    /**
     * Make UIDL call for getting a uniqueid
     *
     * @param  int|null $msgno number of message, null for all
     * @return string|array uniqueid of message or list with array(num => uniqueid)
     * @throws Zend_Mail_Protocol_Exception
     */
    public function uniqueid($msgno = null)
    {
        if ($msgno !== null) {
            $result = $this->request("UIDL $msgno");

            list(, $result) = explode(' ', $result);
            return $result;
        }

        $result = $this->request('UIDL', true);

        $result = explode("\n", $result);
        $messages = array();
        foreach ($result as $line) {
            if (!$line) {
                continue;
            }
            list($no, $id) = explode(' ', trim($line), 2);
            $messages[(int)$no] = $id;
        }

        return $messages;

    }


    /**
     * Make TOP call for getting headers and maybe some body lines
     * This method also sets hasTop - before it it's not known if top is supported
     *
     * The fallback makes normale RETR call, which retrieves the whole message. Additional
     * lines are not removed.
     *
     * @param  int  $msgno    number of message
     * @param  int  $lines    number of wanted body lines (empty line is inserted after header lines)
     * @param  bool $fallback fallback with full retrieve if top is not supported
     * @return string message headers with wanted body lines
     * @throws Zend_Mail_Protocol_Exception
     */
    public function top($msgno, $lines = 0, $fallback = false)
    {
        if ($this->hasTop === false) {
            if ($fallback) {
                return $this->retrieve($msgno);
            } else {
                /**
                 * @see Zend_Mail_Protocol_Exception
                 */
                require_once 'Zend/Mail/Protocol/Exception.php';
                throw new Zend_Mail_Protocol_Exception('top not supported and no fallback wanted');
            }
        }
        $this->hasTop = true;

        $lines = (!$lines || $lines < 1) ? 0 : (int)$lines;

        try {
            $result = $this->request("TOP $msgno $lines", true);
        } catch (Zend_Mail_Protocol_Exception $e) {
            $this->hasTop = false;
            if ($fallback) {
                $result = $this->retrieve($msgno);
            } else {
                throw $e;
            }
        }

        return $result;
    }


    /**
     * Make a RETR call for retrieving a full message with headers and body
     *
     * @deprecated since 1.1.0; this method has a typo - please use retrieve()
     * @param  int $msgno  message number
     * @return string message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function retrive($msgno)
    {
        return $this->retrieve($msgno);
    }


    /**
     * Make a RETR call for retrieving a full message with headers and body
     *
     * @param  int $msgno  message number
     * @return string message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function retrieve($msgno)
    {
        $result = $this->request("RETR $msgno", true);
        return $result;
    }

    /**
     * Make a NOOP call, maybe needed for keeping the server happy
     *
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function noop()
    {
        $this->request('NOOP');
    }


    /**
     * Make a DELE count to remove a message
     *
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function delete($msgno)
    {
        $this->request("DELE $msgno");
    }


    /**
     * Make RSET call, which rollbacks delete requests
     *
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function undelete()
    {
        $this->request('RSET');
    }
}
PKpG[4<��	�	!Mail/Protocol/Smtp/Auth/Login.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Login.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Protocol_Smtp
 */
require_once 'Zend/Mail/Protocol/Smtp.php';


/**
 * Performs LOGIN authentication
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Smtp_Auth_Login extends Zend_Mail_Protocol_Smtp
{
    /**
     * LOGIN username
     *
     * @var string
     */
    protected $_username;


    /**
     * LOGIN password
     *
     * @var string
     */
    protected $_password;


    /**
     * Constructor.
     *
     * @param  string $host   (Default: 127.0.0.1)
     * @param  int    $port   (Default: null)
     * @param  array  $config Auth-specific parameters
     * @return void
     */
    public function __construct($host = '127.0.0.1', $port = null, $config = null)
    {
        if (is_array($config)) {
            if (isset($config['username'])) {
                $this->_username = $config['username'];
            }
            if (isset($config['password'])) {
                $this->_password = $config['password'];
            }
        }

        parent::__construct($host, $port, $config);
    }


    /**
     * Perform LOGIN authentication with supplied credentials
     *
     * @return void
     */
    public function auth()
    {
        // Ensure AUTH has not already been initiated.
        parent::auth();

        $this->_send('AUTH LOGIN');
        $this->_expect(334);
        $this->_send(base64_encode($this->_username));
        $this->_expect(334);
        $this->_send(base64_encode($this->_password));
        $this->_expect(235);
        $this->_auth = true;
    }
}
PKpG[�9��[[#Mail/Protocol/Smtp/Auth/Crammd5.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Crammd5.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Protocol_Smtp
 */
require_once 'Zend/Mail/Protocol/Smtp.php';


/**
 * Performs CRAM-MD5 authentication
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Smtp_Auth_Crammd5 extends Zend_Mail_Protocol_Smtp
{
    /**
     * Constructor.
     *
     * @param  string $host   (Default: 127.0.0.1)
     * @param  int    $port   (Default: null)
     * @param  array  $config Auth-specific parameters
     * @return void
     */
    public function __construct($host = '127.0.0.1', $port = null, $config = null)
    {
        if (is_array($config)) {
            if (isset($config['username'])) {
                $this->_username = $config['username'];
            }
            if (isset($config['password'])) {
                $this->_password = $config['password'];
            }
        }

        parent::__construct($host, $port, $config);
    }


    /**
     * @todo Perform CRAM-MD5 authentication with supplied credentials
     *
     * @return void
     */
    public function auth()
    {
        // Ensure AUTH has not already been initiated.
        parent::auth();

        $this->_send('AUTH CRAM-MD5');
        $challenge = $this->_expect(334);
        $challenge = base64_decode($challenge);
        $digest = $this->_hmacMd5($this->_password, $challenge);
        $this->_send(base64_encode($this->_username . ' ' . $digest));
        $this->_expect(235);
        $this->_auth = true;
    }


    /**
     * Prepare CRAM-MD5 response to server's ticket
     *
     * @param  string $key   Challenge key (usually password)
     * @param  string $data  Challenge data
     * @param  string $block Length of blocks
     * @return string
     */
    protected function _hmacMd5($key, $data, $block = 64)
    {
        if (strlen($key) > 64) {
            $key = pack('H32', md5($key));
        } elseif (strlen($key) < 64) {
            $key = str_pad($key, $block, chr(0));
        }

        $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64);
        $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64);

        $inner = pack('H32', md5($k_ipad . $data));
        $digest = md5($k_opad . $inner);

        return $digest;
    }
}
PKpG[�OmЩ	�	!Mail/Protocol/Smtp/Auth/Plain.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Plain.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Protocol_Smtp
 */
require_once 'Zend/Mail/Protocol/Smtp.php';


/**
 * Performs PLAIN authentication
 *
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Smtp_Auth_Plain extends Zend_Mail_Protocol_Smtp
{
    /**
     * PLAIN username
     *
     * @var string
     */
    protected $_username;


    /**
     * PLAIN password
     *
     * @var string
     */
    protected $_password;


    /**
     * Constructor.
     *
     * @param  string $host   (Default: 127.0.0.1)
     * @param  int    $port   (Default: null)
     * @param  array  $config Auth-specific parameters
     * @return void
     */
    public function __construct($host = '127.0.0.1', $port = null, $config = null)
    {
        if (is_array($config)) {
            if (isset($config['username'])) {
                $this->_username = $config['username'];
            }
            if (isset($config['password'])) {
                $this->_password = $config['password'];
            }
        }

        parent::__construct($host, $port, $config);
    }


    /**
     * Perform PLAIN authentication with supplied credentials
     *
     * @return void
     */
    public function auth()
    {
        // Ensure AUTH has not already been initiated.
        parent::auth();

        $this->_send('AUTH PLAIN');
        $this->_expect(334);
        $this->_send(base64_encode(chr(0) . $this->_username . chr(0) . $this->_password));
        $this->_expect(235);
        $this->_auth = true;
    }
}
PKpG[!�Ӈg.g.Mail/Protocol/Smtp.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Smtp.php 11196 2008-09-02 00:56:25Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';


/**
 * @see Zend_Mail_Protocol_Abstract
 */
require_once 'Zend/Mail/Protocol/Abstract.php';


/**
 * Smtp implementation of Zend_Mail_Protocol_Abstract
 *
 * Minimum implementation according to RFC2821: EHLO, MAIL FROM, RCPT TO, DATA, RSET, NOOP, QUIT
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Smtp extends Zend_Mail_Protocol_Abstract
{
    /**
     * The transport method for the socket
     *
     * @var string
     */
    protected $_transport = 'tcp';


    /**
     * Indicates that a session is requested to be secure
     *
     * @var string
     */
    protected $_secure;


    /**
     * Indicates an smtp session has been started by the HELO command
     *
     * @var boolean
     */
    protected $_sess = false;


    /**
     * Indicates the HELO command has been issues
     *
     * @var unknown_type
     */
    protected $_helo = false;


    /**
     * Indicates an smtp AUTH has been issued and authenticated
     *
     * @var unknown_type
     */
    protected $_auth = false;


    /**
     * Indicates a MAIL command has been issued
     *
     * @var unknown_type
     */
    protected $_mail = false;


    /**
     * Indicates one or more RCTP commands have been issued
     *
     * @var unknown_type
     */
    protected $_rcpt = false;


    /**
     * Indicates that DATA has been issued and sent
     *
     * @var unknown_type
     */
    protected $_data = null;


    /**
     * Constructor.
     *
     * @param  string  $host
     * @param  integer $port
     * @param  array   $config
     * @return void
     * @throws Zend_Mail_Protocol_Exception
     */
    public function __construct($host = '127.0.0.1', $port = null, array $config = array())
    {
        if (isset($config['ssl'])) {
            switch (strtolower($config['ssl'])) {
                case 'tls':
                    $this->_secure = 'tls';
                    break;

                case 'ssl':
                    $this->_transport = 'ssl';
                    $this->_secure = 'ssl';
                    if ($port == null) {
                        $port = 465;
                    }
                    break;

                default:
                    /**
                     * @see Zend_Mail_Protocol_Exception
                     */
                    require_once 'Zend/Mail/Protocol/Exception.php';
                    throw new Zend_Mail_Protocol_Exception($config['ssl'] . ' is unsupported SSL type');
                    break;
            }
        }

        // If no port has been specified then check the master PHP ini file. Defaults to 25 if the ini setting is null.
        if ($port == null) {
            if (($port = ini_get('smtp_port')) == '') {
                $port = 25;
            }
        }

        parent::__construct($host, $port);
    }


    /**
     * Connect to the server with the parameters given in the constructor.
     *
     * @return boolean
     */
    public function connect()
    {
        return $this->_connect($this->_transport . '://' . $this->_host . ':'. $this->_port);
    }


    /**
     * Initiate HELO/EHLO sequence and set flag to indicate valid smtp session
     *
     * @param  string $host The client hostname or IP address (default: 127.0.0.1)
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function helo($host = '127.0.0.1')
    {
        // Respect RFC 2821 and disallow HELO attempts if session is already initiated.
        if ($this->_sess === true) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('Cannot issue HELO to existing session');
        }

        // Validate client hostname
        if (!$this->_validHost->isValid($host)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception(join(', ', $this->_validHost->getMessages()));
        }

        // Initiate helo sequence
        $this->_expect(220, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
        $this->_ehlo($host);

        // If a TLS session is required, commence negotiation
        if ($this->_secure == 'tls') {
            $this->_send('STARTTLS');
            $this->_expect(220, 180);
            if (!stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
                /**
                 * @see Zend_Mail_Protocol_Exception
                 */
                require_once 'Zend/Mail/Protocol/Exception.php';
                throw new Zend_Mail_Protocol_Exception('Unable to connect via TLS');
            }
            $this->_ehlo($host);
        }

        $this->_startSession();
        $this->auth();
    }


    /**
     * Send EHLO or HELO depending on capabilities of smtp host
     *
     * @param  string $host The client hostname or IP address (default: 127.0.0.1)
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    protected function _ehlo($host)
    {
        // Support for older, less-compliant remote servers. Tries multiple attempts of EHLO or HELO.
        try {
            $this->_send('EHLO ' . $host);
            $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
        } catch (Zend_Mail_Protocol_Exception $e) {
            $this->_send('HELO ' . $host);
            $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
        } catch (Zend_Mail_Protocol_Exception $e) {
            throw $e;
        }
    }


    /**
     * Issues MAIL command
     *
     * @param  string $from Sender mailbox
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function mail($from)
    {
        if ($this->_sess !== true) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('A valid session has not been started');
        }

        $this->_send('MAIL FROM:<' . $from . '>');
        $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2

        // Set mail to true, clear recipients and any existing data flags as per 4.1.1.2 of RFC 2821
        $this->_mail = true;
        $this->_rcpt = false;
        $this->_data = false;
    }


    /**
     * Issues RCPT command
     *
     * @param  string $to Receiver(s) mailbox
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function rcpt($to)
    {
        if ($this->_mail !== true) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('No sender reverse path has been supplied');
        }

        // Set rcpt to true, as per 4.1.1.3 of RFC 2821
        $this->_send('RCPT TO:<' . $to . '>');
        $this->_expect(array(250, 251), 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
        $this->_rcpt = true;
    }


    /**
     * Issues DATA command
     *
     * @param  string $data
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function data($data)
    {
        // Ensure recipients have been set
        if ($this->_rcpt !== true) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('No recipient forward path has been supplied');
        }

        $this->_send('DATA');
        $this->_expect(354, 120); // Timeout set for 2 minutes as per RFC 2821 4.5.3.2

        foreach (explode(Zend_Mime::LINEEND, $data) as $line) {
            if (strpos($line, '.') === 0) {
                // Escape lines prefixed with a '.'
                $line = '.' . $line;
            }
            $this->_send($line);
        }

        $this->_send('.');
        $this->_expect(250, 600); // Timeout set for 10 minutes as per RFC 2821 4.5.3.2
        $this->_data = true;
    }


    /**
     * Issues the RSET command end validates answer
     *
     * Can be used to restore a clean smtp communication state when a transaction has been cancelled or commencing a new transaction.
     *
     * @return void
     */
    public function rset()
    {
        $this->_send('RSET');
        // MS ESMTP doesn't follow RFC, see [ZF-1377]
        $this->_expect(array(250, 220));

        $this->_mail = false;
        $this->_rcpt = false;
        $this->_data = false;
    }


    /**
     * Issues the NOOP command end validates answer
     *
     * Not used by Zend_Mail, could be used to keep a connection alive or check if it is still open.
     *
     * @return void
     */
    public function noop()
    {
        $this->_send('NOOP');
        $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
    }


    /**
     * Issues the VRFY command end validates answer
     *
     * Not used by Zend_Mail.
     *
     * @param  string $user User Name or eMail to verify
     * @return void
     */
    public function vrfy($user)
    {
        $this->_send('VRFY ' . $user);
        $this->_expect(array(250, 251, 252), 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
    }


    /**
     * Issues the QUIT command and clears the current session
     *
     * @return void
     */
    public function quit()
    {
        if ($this->_sess) {
            $this->_send('QUIT');
            $this->_expect(221, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2
            $this->_stopSession();
        }
    }


    /**
     * Default authentication method
     *
     * This default method is implemented by AUTH adapters to properly authenticate to a remote host.
     *
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function auth()
    {
        if ($this->_auth === true) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('Already authenticated for this session');
        }
    }


    /**
     * Closes connection
     *
     * @return void
     */
    public function disconnect()
    {
        $this->_disconnect();
    }


    /**
     * Start mail session
     *
     * @return void
     */
    protected function _startSession()
    {
        $this->_sess = true;
    }


    /**
     * Stop mail session
     *
     * @return void
     */
    protected function _stopSession()
    {
        $this->_sess = false;
    }
}
PKpG[�Va�k�kMail/Protocol/Imap.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Imap.php 12539 2008-11-11 02:47:17Z yoshida@zend.co.jp $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Imap
{
    /**
     * Default timeout in seconds for initiating session
     */
    const TIMEOUT_CONNECTION = 30;
    
    /**
     * socket to imap server
     * @var resource|null
     */
    protected $_socket;

    /**
     * counter for request tag
     * @var int
     */
    protected $_tagCount = 0;

    /**
     * Public constructor
     *
     * @param  string   $host  hostname of IP address of IMAP server, if given connect() is called
     * @param  int|null $port  port of IMAP server, null for default (143 or 993 for ssl)
     * @param  bool     $ssl   use ssl? 'SSL', 'TLS' or false
     * @throws Zend_Mail_Protocol_Exception
     */
    function __construct($host = '', $port = null, $ssl = false)
    {
        if ($host) {
            $this->connect($host, $port, $ssl);
        }
    }

    /**
     * Public destructor
     */
    public function __destruct()
    {
        $this->logout();
    }

    /**
     * Open connection to POP3 server
     *
     * @param  string      $host  hostname of IP address of POP3 server
     * @param  int|null    $port  of IMAP server, default is 143 (993 for ssl)
     * @param  string|bool $ssl   use 'SSL', 'TLS' or false
     * @return string welcome message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function connect($host, $port = null, $ssl = false)
    {
        if ($ssl == 'SSL') {
            $host = 'ssl://' . $host;
        }

        if ($port === null) {
            $port = $ssl === 'SSL' ? 993 : 143;
        }

        $errno  =  0;
        $errstr = '';
        $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION);
        if (!$this->_socket) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('cannot connect to host : ' . $errno . ' : ' . $errstr);
        }

        if (!$this->_assumedNextLine('* OK')) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('host doesn\'t allow connection');
        }

        if ($ssl === 'TLS') {
            $result = $this->requestAndResponse('STARTTLS');
            $result = $result && stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
            if (!$result) {
                /**
                 * @see Zend_Mail_Protocol_Exception
                 */
                require_once 'Zend/Mail/Protocol/Exception.php';
                throw new Zend_Mail_Protocol_Exception('cannot enable TLS');
            }
        }
    }

    /**
     * get the next line from socket with error checking, but nothing else
     *
     * @return string next line
     * @throws Zend_Mail_Protocol_Exception
     */
    protected function _nextLine()
    {
        $line = @fgets($this->_socket);
        if ($line === false) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('cannot read - connection closed?');
        }

        return $line;
    }

    /**
     * get next line and assume it starts with $start. some requests give a simple
     * feedback so we can quickly check if we can go on.
     *
     * @param  string $start the first bytes we assume to be in the next line
     * @return bool line starts with $start
     * @throws Zend_Mail_Protocol_Exception
     */
    protected function _assumedNextLine($start)
    {
        $line = $this->_nextLine();
        return strpos($line, $start) === 0;
    }

    /**
     * get next line and split the tag. that's the normal case for a response line
     *
     * @param  string $tag tag of line is returned by reference
     * @return string next line
     * @throws Zend_Mail_Protocol_Exception
     */
    protected function _nextTaggedLine(&$tag)
    {
        $line = $this->_nextLine();

        // seperate tag from line
        list($tag, $line) = explode(' ', $line, 2);

        return $line;
    }

    /**
     * split a given line in tokens. a token is literal of any form or a list
     *
     * @param  string $line line to decode
     * @return array tokens, literals are returned as string, lists as array
     * @throws Zend_Mail_Protocol_Exception
     */
    protected function _decodeLine($line)
    {
        $tokens = array();
        $stack = array();

        /*
            We start to decode the response here. The unterstood tokens are:
                literal
                "literal" or also "lit\\er\"al"
                {bytes}<NL>literal
                (literals*)
            All tokens are returned in an array. Literals in braces (the last unterstood
            token in the list) are returned as an array of tokens. I.e. the following response:
                "foo" baz {3}<NL>bar ("f\\\"oo" bar)
            would be returned as:
                array('foo', 'baz', 'bar', array('f\\\"oo', 'bar'));
                
            // TODO: add handling of '[' and ']' to parser for easier handling of response text 
        */
        //  replace any trailling <NL> including spaces with a single space
        $line = rtrim($line) . ' ';
        while (($pos = strpos($line, ' ')) !== false) {
            $token = substr($line, 0, $pos);
            while ($token[0] == '(') {
                array_push($stack, $tokens);
                $tokens = array();
                $token = substr($token, 1);
            }
            if ($token[0] == '"') {
                if (preg_match('%^"((.|\\\\|\\")*?)" *%', $line, $matches)) {
                    $tokens[] = $matches[1];
                    $line = substr($line, strlen($matches[0]));
                    continue;
                }
            }
            if ($token[0] == '{') {
                $endPos = strpos($token, '}');
                $chars = substr($token, 1, $endPos - 1);
                if (is_numeric($chars)) {
                    $token = '';
                    while (strlen($token) < $chars) {
                        $token .= $this->_nextLine();
                    }
                    $line = '';
                    if (strlen($token) > $chars) {
                        $line = substr($token, $chars);
                        $token = substr($token, 0, $chars);
                    } else {
                        $line .= $this->_nextLine();
                    }
                    $tokens[] = $token;
                    $line = trim($line) . ' ';
                    continue;
                }
            }
            if ($stack && $token[strlen($token) - 1] == ')') {
                // closing braces are not seperated by spaces, so we need to count them
                $braces = strlen($token);
                $token = rtrim($token, ')');
                // only count braces if more than one
                $braces -= strlen($token) + 1;
                // only add if token had more than just closing braces
                if ($token) {
                    $tokens[] = $token;
                }
                $token = $tokens;
                $tokens = array_pop($stack);
                // special handline if more than one closing brace
                while ($braces-- > 0) {
                    $tokens[] = $token;
                    $token = $tokens;
                    $tokens = array_pop($stack);
                }
            }
            $tokens[] = $token;
            $line = substr($line, $pos + 1);
        }

        // maybe the server forgot to send some closing braces
        while ($stack) {
            $child = $tokens;
            $tokens = array_pop($stack);
            $tokens[] = $child;
        }

        return $tokens;
    }

    /**
     * read a response "line" (could also be more than one real line if response has {..}<NL>)
     * and do a simple decode
     *
     * @param  array|string  $tokens    decoded tokens are returned by reference, if $dontParse
     *                                  is true the unparsed line is returned here
     * @param  string        $wantedTag check for this tag for response code. Default '*' is
     *                                  continuation tag.
     * @param  bool          $dontParse if true only the unparsed line is returned $tokens
     * @return bool if returned tag matches wanted tag
     * @throws Zend_Mail_Protocol_Exception
     */
    public function readLine(&$tokens = array(), $wantedTag = '*', $dontParse = false)
    {
        $line = $this->_nextTaggedLine($tag);
        if (!$dontParse) {
            $tokens = $this->_decodeLine($line);
        } else {
            $tokens = $line;
        }

        // if tag is wanted tag we might be at the end of a multiline response
        return $tag == $wantedTag;
    }

    /**
     * read all lines of response until given tag is found (last line of response)
     *
     * @param  string       $tag       the tag of your request
     * @param  string|array $filter    you can filter the response so you get only the
     *                                 given response lines
     * @param  bool         $dontParse if true every line is returned unparsed instead of
     *                                 the decoded tokens
     * @return null|bool|array tokens if success, false if error, null if bad request
     * @throws Zend_Mail_Protocol_Exception
     */
    public function readResponse($tag, $dontParse = false)
    {
        $lines = array();
        while (!$this->readLine($tokens, $tag, $dontParse)) {
            $lines[] = $tokens;
        }

        if ($dontParse) {
            // last to chars are still needed for response code
            $tokens = array(substr($tokens, 0, 2));
        }
        // last line has response code
        if ($tokens[0] == 'OK') {
            return $lines ? $lines : true;
        } else if ($tokens[0] == 'NO'){
            return false;
        }
        return null;
    }

    /**
     * send a request
     *
     * @param  string $command your request command
     * @param  array  $tokens  additional parameters to command, use escapeString() to prepare
     * @param  string $tag     provide a tag otherwise an autogenerated is returned
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function sendRequest($command, $tokens = array(), &$tag = null)
    {
        if (!$tag) {
            ++$this->_tagCount;
            $tag = 'TAG' . $this->_tagCount;
        }

        $line = $tag . ' ' . $command;

        foreach ($tokens as $token) {
            if (is_array($token)) {
                if (@fputs($this->_socket, $line . ' ' . $token[0] . "\r\n") === false) {
                    /**
                     * @see Zend_Mail_Protocol_Exception
                     */
                    require_once 'Zend/Mail/Protocol/Exception.php';
                    throw new Zend_Mail_Protocol_Exception('cannot write - connection closed?');
                }
                if (!$this->_assumedNextLine('+ ')) {
                    /**
                     * @see Zend_Mail_Protocol_Exception
                     */
                    require_once 'Zend/Mail/Protocol/Exception.php';
                    throw new Zend_Mail_Protocol_Exception('cannot send literal string');
                }
                $line = $token[1];
            } else {
                $line .= ' ' . $token;
            }
        }

        if (@fputs($this->_socket, $line . "\r\n") === false) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('cannot write - connection closed?');
        }
    }

    /**
     * send a request and get response at once
     *
     * @param  string $command   command as in sendRequest()
     * @param  array  $tokens    parameters as in sendRequest()
     * @param  bool   $dontParse if true unparsed lines are returned instead of tokens
     * @return mixed response as in readResponse()
     * @throws Zend_Mail_Protocol_Exception
     */
    public function requestAndResponse($command, $tokens = array(), $dontParse = false)
    {
        $this->sendRequest($command, $tokens, $tag);
        $response = $this->readResponse($tag, $dontParse);

        return $response;
    }

    /**
     * escape one or more literals i.e. for sendRequest
     *
     * @param  string|array $string the literal/-s
     * @return string|array escape literals, literals with newline ar returned
     *                      as array('{size}', 'string');
     */
    public function escapeString($string)
    {
        if (func_num_args() < 2) {
            if (strpos($string, "\n") !== false) {
                return array('{' . strlen($string) . '}', $string);
            } else {
                return '"' . str_replace(array('\\', '"'), array('\\\\', '\\"'), $string) . '"';
            }
        }
        $result = array();
        foreach (func_get_args() as $string) {
            $result[] = $this->escapeString($string);
        }
        return $result;
    }

    /**
     * escape a list with literals or lists
     *
     * @param  array $list list with literals or lists as PHP array
     * @return string escaped list for imap
     */
    public function escapeList($list)
    {
        $result = array();
        foreach ($list as $k => $v) {
            if (!is_array($v)) {
//              $result[] = $this->escapeString($v);
                $result[] = $v;
                continue;
            }
            $result[] = $this->escapeList($v);
        }
        return '(' . implode(' ', $result) . ')';
    }

    /**
     * Login to IMAP server.
     *
     * @param  string $user      username
     * @param  string $password  password
     * @return bool success
     * @throws Zend_Mail_Protocol_Exception
     */
    public function login($user, $password)
    {
        return $this->requestAndResponse('LOGIN', $this->escapeString($user, $password), true);
    }

    /**
     * logout of imap server
     *
     * @return bool success
     */
    public function logout()
    {
        $result = false;
        if ($this->_socket) {
            try {
                $result = $this->requestAndResponse('LOGOUT', array(), true);
            } catch (Zend_Mail_Protocol_Exception $e) {
                // ignoring exception
            }
            fclose($this->_socket);
            $this->_socket = null;
        }
        return $result;
    }


    /**
     * Get capabilities from IMAP server
     *
     * @return array list of capabilities
     * @throws Zend_Mail_Protocol_Exception
     */
    public function capability()
    {
        $response = $this->requestAndResponse('CAPABILITY');

        if (!$response) {
            return $response;
        }

        $capabilities = array();
        foreach ($response as $line) {
            $capabilities = array_merge($capabilities, $line);
        }
        return $capabilities;
    }

    /**
     * Examine and select have the same response. The common code for both
     * is in this method
     *
     * @param  string $command can be 'EXAMINE' or 'SELECT' and this is used as command
     * @param  string $box which folder to change to or examine
     * @return bool|array false if error, array with returned information
     *                    otherwise (flags, exists, recent, uidvalidity)
     * @throws Zend_Mail_Protocol_Exception
     */
    public function examineOrSelect($command = 'EXAMINE', $box = 'INBOX')
    {
        $this->sendRequest($command, array($this->escapeString($box)), $tag);

        $result = array();
        while (!$this->readLine($tokens, $tag)) {
            if ($tokens[0] == 'FLAGS') {
                array_shift($tokens);
                $result['flags'] = $tokens;
                continue;
            }
            switch ($tokens[1]) {
                case 'EXISTS':
                case 'RECENT':
                    $result[strtolower($tokens[1])] = $tokens[0];
                    break;
                case '[UIDVALIDITY':
                    $result['uidvalidity'] = (int)$tokens[2];
                    break;
                default:
                    // ignore
            }
        }

        if ($tokens[0] != 'OK') {
            return false;
        }
        return $result;
    }

    /**
     * change folder
     *
     * @param  string $box change to this folder
     * @return bool|array see examineOrselect()
     * @throws Zend_Mail_Protocol_Exception
     */
    public function select($box = 'INBOX')
    {
        return $this->examineOrSelect('SELECT', $box);
    }

    /**
     * examine folder
     *
     * @param  string $box examine this folder
     * @return bool|array see examineOrselect()
     * @throws Zend_Mail_Protocol_Exception
     */
    public function examine($box = 'INBOX')
    {
        return $this->examineOrSelect('EXAMINE', $box);
    }

    /**
     * fetch one or more items of one or more messages
     *
     * @param  string|array $items items to fetch from message(s) as string (if only one item)
     *                             or array of strings
     * @param  int          $from  message for items or start message if $to !== null
     * @param  int|null     $to    if null only one message ($from) is fetched, else it's the
     *                             last message, INF means last message avaible
     * @return string|array if only one item of one message is fetched it's returned as string
     *                      if items of one message are fetched it's returned as (name => value)
     *                      if one items of messages are fetched it's returned as (msgno => value)
     *                      if items of messages are fetchted it's returned as (msgno => (name => value))
     * @throws Zend_Mail_Protocol_Exception
     */
    public function fetch($items, $from, $to = null)
    {
        if (is_array($from)) {
            $set = implode(',', $from);
        } else if ($to === null) {
            $set = (int)$from;
        } else if ($to === INF) {
            $set = (int)$from . ':*';
        } else {
            $set = (int)$from . ':' . (int)$to;
        }

        $items = (array)$items;
        $itemList = $this->escapeList($items);

        $this->sendRequest('FETCH', array($set, $itemList), $tag);

        $result = array();
        while (!$this->readLine($tokens, $tag)) {
            // ignore other responses
            if ($tokens[1] != 'FETCH') {
                continue;
            }
            // ignore other messages
            if ($to === null && !is_array($from) && $tokens[0] != $from) {
                continue;
            }
            // if we only want one item we return that one directly
            if (count($items) == 1) {
                if ($tokens[2][0] == $items[0]) {
                    $data = $tokens[2][1];
                } else {
                    // maybe the server send an other field we didn't wanted
                    $count = count($tokens[2]);
                    // we start with 2, because 0 was already checked
                    for ($i = 2; $i < $count; $i += 2) {
                        if ($tokens[2][$i] != $items[0]) {
                            continue;
                        }
                        $data = $tokens[2][$i + 1];
                        break;
                    }
                }
            } else {
                $data = array();
                while (key($tokens[2]) !== null) {
                    $data[current($tokens[2])] = next($tokens[2]);
                    next($tokens[2]);
                }
            }
            // if we want only one message we can ignore everything else and just return
            if ($to === null && !is_array($from) && $tokens[0] == $from) {
                // we still need to read all lines
                while (!$this->readLine($tokens, $tag));
                return $data;
            }
            $result[$tokens[0]] = $data;
        }

        if ($to === null && !is_array($from)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('the single id was not found in response');
        }

        return $result;
    }

    /**
     * get mailbox list
     *
     * this method can't be named after the IMAP command 'LIST', as list is a reserved keyword
     *
     * @param  string $reference mailbox reference for list
     * @param  string $mailbox   mailbox name match with wildcards
     * @return array mailboxes that matched $mailbox as array(globalName => array('delim' => .., 'flags' => ..))
     * @throws Zend_Mail_Protocol_Exception
     */
    public function listMailbox($reference = '', $mailbox = '*')
    {
        $result = array();
        $list = $this->requestAndResponse('LIST', $this->escapeString($reference, $mailbox));
        if (!$list || $list === true) {
            return $result;
        }

        foreach ($list as $item) {
            if (count($item) != 4 || $item[0] != 'LIST') {
                continue;
            }
            $result[$item[3]] = array('delim' => $item[2], 'flags' => $item[1]);
        }

        return $result;
    }

    /**
     * set flags
     *
     * @param  array       $flags  flags to set, add or remove - see $mode
     * @param  int         $from   message for items or start message if $to !== null
     * @param  int|null    $to     if null only one message ($from) is fetched, else it's the
     *                             last message, INF means last message avaible
     * @param  string|null $mode   '+' to add flags, '-' to remove flags, everything else sets the flags as given
     * @param  bool        $silent if false the return values are the new flags for the wanted messages
     * @return bool|array new flags if $silent is false, else true or false depending on success
     * @throws Zend_Mail_Protocol_Exception
     */
    public function store(array $flags, $from, $to = null, $mode = null, $silent = true)
    {
        $item = 'FLAGS';
        if ($mode == '+' || $mode == '-') {
            $item = $mode . $item;
        }
        if ($silent) {
            $item .= '.SILENT';
        }

        $flags = $this->escapeList($flags);
        $set = (int)$from;
        if ($to != null) {
            $set .= ':' . ($to == INF ? '*' : (int)$to);
        }

        $result = $this->requestAndResponse('STORE', array($set, $item, $flags), $silent);

        if ($silent) {
            return $result ? true : false;
        }

        $tokens = $result;
        $result = array();
        foreach ($tokens as $token) {
            if ($token[1] != 'FETCH' || $token[2][0] != 'FLAGS') {
                continue;
            }
            $result[$token[0]] = $token[2][1];
        }

        return $result;
    }

    /**
     * append a new message to given folder
     *
     * @param string $folder  name of target folder
     * @param string $message full message content
     * @param array  $flags   flags for new message
     * @param string $date    date for new message
     * @return bool success
     * @throws Zend_Mail_Protocol_Exception
     */
    public function append($folder, $message, $flags = null, $date = null)
    {
        $tokens = array();
        $tokens[] = $this->escapeString($folder);
        if ($flags !== null) {
            $tokens[] = $this->escapeList($flags);
        }
        if ($date !== null) {
            $tokens[] = $this->escapeString($date);
        }
        $tokens[] = $this->escapeString($message);

        return $this->requestAndResponse('APPEND', $tokens, true);
    }

    /**
     * copy message set from current folder to other folder
     *
     * @param string   $folder destination folder
     * @param int|null $to     if null only one message ($from) is fetched, else it's the
     *                         last message, INF means last message avaible
     * @return bool success
     * @throws Zend_Mail_Protocol_Exception
     */
    public function copy($folder, $from, $to = null)
    {
        $set = (int)$from;
        if ($to != null) {
            $set .= ':' . ($to == INF ? '*' : (int)$to);
        }

        return $this->requestAndResponse('COPY', array($set, $this->escapeString($folder)), true);
    }

    /**
     * create a new folder (and parent folders if needed)
     *
     * @param string $folder folder name
     * @return bool success
     */
    public function create($folder)
    {
        return $this->requestAndResponse('CREATE', array($this->escapeString($folder)), true);
    }

    /**
     * rename an existing folder
     *
     * @param string $old old name
     * @param string $new new name
     * @return bool success
     */
    public function rename($old, $new)
    {
        return $this->requestAndResponse('RENAME', $this->escapeString($old, $new), true);
    }

    /**
     * remove a folder
     *
     * @param string $folder folder name
     * @return bool success
     */
    public function delete($folder)
    {
        return $this->requestAndResponse('DELETE', array($this->escapeString($folder)), true);
    }

    /**
     * permanently remove messages
     *
     * @return bool success
     */
    public function expunge()
    {
        // TODO: parse response?
        return $this->requestAndResponse('EXPUNGE');
    }

    /**
     * send noop
     *
     * @return bool success
     */
    public function noop()
    {
        // TODO: parse response
        return $this->requestAndResponse('NOOP');
    }

    /**
     * do a search request
     *
     * This method is currently marked as internal as the API might change and is not
     * safe if you don't take precautions.
     *
     * @internal
     * @return array message ids
     */
    public function search(array $params)
    {
        $response = $this->requestAndResponse('SEARCH', $params);
        if (!$response) {
            return $response;
        }
        
        foreach ($response as $ids) {
            if ($ids[0] == 'SEARCH') {
                array_shift($ids);
                return $ids;
            }
        }
        return array();
    }

}
PKpG[�`���&�&Mail/Protocol/Abstract.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 12395 2008-11-07 23:58:38Z nico $
 */


/**
 * @see Zend_Validate
 */
require_once 'Zend/Validate.php';


/**
 * @see Zend_Validate_Hostname
 */
require_once 'Zend/Validate/Hostname.php';


/**
 * Zend_Mail_Protocol_Abstract
 *
 * Provides low-level methods for concrete adapters to communicate with a remote mail server and track requests and responses.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 12395 2008-11-07 23:58:38Z nico $
 * @todo Implement proxy settings
 */
abstract class Zend_Mail_Protocol_Abstract
{
    /**
     * Mail default EOL string
     */
    const EOL = "\r\n";


    /**
     * Default timeout in seconds for initiating session
     */
    const TIMEOUT_CONNECTION = 30;


    /**
     * Hostname or IP address of remote server
     * @var string
     */
    protected $_host;


    /**
     * Port number of connection
     * @var integer
     */
    protected $_port;


    /**
     * Instance of Zend_Validate to check hostnames
     * @var Zend_Validate
     */
    protected $_validHost;


    /**
     * Socket connection resource
     * @var resource
     */
    protected $_socket;


    /**
     * Last request sent to server
     * @var string
     */
    protected $_request;


    /**
     * Array of server responses to last request
     * @var array
     */
    protected $_response;


    /**
     * String template for parsing server responses using sscanf (default: 3 digit code and response string)
     * @var resource
     */
    protected $_template = '%d%s';


    /**
     * Log of mail requests and server responses for a session
     * @var string
     */
    private $_log;


    /**
     * Constructor.
     *
     * @param  string  $host OPTIONAL Hostname of remote connection (default: 127.0.0.1)
     * @param  integer $port OPTIONAL Port number (default: null)
     * @throws Zend_Mail_Protocol_Exception
     * @return void
     */
    public function __construct($host = '127.0.0.1', $port = null)
    {
        $this->_validHost = new Zend_Validate();
        $this->_validHost->addValidator(new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL));

        if (!$this->_validHost->isValid($host)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception(join(', ', $this->_validHost->getMessages()));
        }

        $this->_host = $host;
        $this->_port = $port;
    }


    /**
     * Class destructor to cleanup open resources
     *
     * @return void
     */
    public function __destruct()
    {
        $this->_disconnect();
    }


    /**
     * Create a connection to the remote host
     *
     * Concrete adapters for this class will implement their own unique connect scripts, using the _connect() method to create the socket resource.
     */
    abstract public function connect();


    /**
     * Retrieve the last client request
     *
     * @return string
     */
    public function getRequest()
    {
        return $this->_request;
    }


    /**
     * Retrieve the last server response
     *
     * @return array
     */
    public function getResponse()
    {
        return $this->_response;
    }


    /**
     * Retrieve the transaction log
     *
     * @return string
     */
    public function getLog()
    {
        return $this->_log;
    }


    /**
     * Reset the transaction log
     *
     * @return void
     */
    public function resetLog()
    {
        $this->_log = '';
    }


    /**
     * Connect to the server using the supplied transport and target
     *
     * An example $remote string may be 'tcp://mail.example.com:25' or 'ssh://hostname.com:2222'
     *
     * @param  string $remote Remote
     * @throws Zend_Mail_Protocol_Exception
     * @return boolean
     */
    protected function _connect($remote)
    {
        $errorNum = 0;
        $errorStr = '';

        // open connection
        $this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION);

        if ($this->_socket === false) {
            if ($errorNum == 0) {
                $errorStr = 'Could not open socket';
            }
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception($errorStr);
        }

        if (($result = stream_set_timeout($this->_socket, self::TIMEOUT_CONNECTION)) === false) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('Could not set stream timeout');
        }

        return $result;
    }


    /**
     * Disconnect from remote host and free resource
     *
     * @return void
     */
    protected function _disconnect()
    {
        if (is_resource($this->_socket)) {
            fclose($this->_socket);
        }
    }


    /**
     * Send the given request followed by a LINEEND to the server.
     *
     * @param  string $request
     * @throws Zend_Mail_Protocol_Exception
     * @return integer|boolean Number of bytes written to remote host
     */
    protected function _send($request)
    {
        if (!is_resource($this->_socket)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('No connection has been established to ' . $this->_host);
        }

        $this->_request = $request;

        $result = fwrite($this->_socket, $request . self::EOL);

        // Save request to internal log
        $this->_log .= $request . self::EOL;

        if ($result === false) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('Could not send request to ' . $this->_host);
        }

        return $result;
    }


    /**
     * Get a line from the stream.
     *
     * @var    integer $timeout Per-request timeout value if applicable
     * @throws Zend_Mail_Protocol_Exception
     * @return string
     */
    protected function _receive($timeout = null)
    {
        if (!is_resource($this->_socket)) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('No connection has been established to ' . $this->_host);
        }

        // Adapters may wish to supply per-commend timeouts according to appropriate RFC
        if ($timeout !== null) {
           stream_set_timeout($this->_socket, $timeout);
        }

        // Retrieve response
        $reponse = fgets($this->_socket, 1024);

        // Save request to internal log
        $this->_log .= $reponse;

        // Check meta data to ensure connection is still valid
        $info = stream_get_meta_data($this->_socket);

        if (!empty($info['timed_out'])) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception($this->_host . ' has timed out');
        }

        if ($reponse === false) {
            /**
             * @see Zend_Mail_Protocol_Exception
             */
            require_once 'Zend/Mail/Protocol/Exception.php';
            throw new Zend_Mail_Protocol_Exception('Could not read from ' . $this->_host);
        }

        return $reponse;
    }


    /**
     * Parse server response for successful codes
     *
     * Read the response from the stream and check for expected return code.
     * Throws a Zend_Mail_Protocol_Exception if an unexpected code is returned.
     *
     * @param  string|array $code One or more codes that indicate a successful response
     * @throws Zend_Mail_Protocol_Exception
     * @return string Last line of response string
     */
    protected function _expect($code, $timeout = null)
    {
        $this->_response = array();
        $cmd = '';
        $msg = '';

        if (!is_array($code)) {
            $code = array($code);
        }

        do {
            $this->_response[] = $result = $this->_receive($timeout);
            sscanf($result, $this->_template, $cmd, $msg);

            if ($cmd === null || !in_array($cmd, $code)) {
                /**
                 * @see Zend_Mail_Protocol_Exception
                 */
                require_once 'Zend/Mail/Protocol/Exception.php';
                throw new Zend_Mail_Protocol_Exception($result);
            }

        } while (strpos($msg, '-') === 0); // The '-' message prefix indicates an information string instead of a response string.

        return $msg;
    }
}
PKpG[��̃�Mail/Protocol/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Mail/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Protocol_Exception extends Zend_Mail_Exception
{}

PKpG[�i_V??Mail/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Exception extends Zend_Exception
{}

PKpG[$�:���Mail/Storage/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Mail_Exception
 */
require_once 'Zend/Mail/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Exception extends Zend_Mail_Exception
{}

PKpG[Z�KK!Mail/Storage/Folder/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9098 2008-03-30 19:29:10Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Mail_Storage_Folder_Interface
{
    /**
     * get root folder or given folder
     *
     * @param string $rootFolder get folder structure for given folder, else root
     * @return Zend_Mail_Storage_Folder root or wanted folder
     */
    public function getFolders($rootFolder = null);

    /**
     * select given folder
     *
     * folder must be selectable!
     *
     * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function selectFolder($globalName);


    /**
     * get Zend_Mail_Storage_Folder instance for current folder
     *
     * @return Zend_Mail_Storage_Folder instance of current folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getCurrentFolder();
}
PKpG[T'��"�"Mail/Storage/Folder/Maildir.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Maildir.php 9098 2008-03-30 19:29:10Z thomas $
 */


/**
 * @see Zend_Mail_Storage_Folder
 */
require_once 'Zend/Mail/Storage/Folder.php';

/**
 * @see Zend_Mail_Storage_Folder_Interface
 */
require_once 'Zend/Mail/Storage/Folder/Interface.php';

/**
 * @see Zend_Mail_Storage_Maildir
 */
require_once 'Zend/Mail/Storage/Maildir.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Folder_Maildir extends Zend_Mail_Storage_Maildir implements Zend_Mail_Storage_Folder_Interface
{
    /**
     * Zend_Mail_Storage_Folder root folder for folder structure
     * @var Zend_Mail_Storage_Folder
     */
    protected $_rootFolder;

    /**
     * rootdir of folder structure
     * @var string
     */
    protected $_rootdir;

    /**
     * name of current folder
     * @var string
     */
    protected $_currentFolder;

    /**
     * delim char for subfolders
     * @var string
     */
    protected $_delim;

    /**
     * Create instance with parameters
     * Supported parameters are:
     *   - dirname rootdir of maildir structure
     *   - delim   delim char for folder structur, default is '.'
     *   - folder intial selected folder, default is 'INBOX'
     *
     * @param  $params array mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }

        if (!isset($params->dirname) || !is_dir($params->dirname)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('no valid dirname given in params');
        }

        $this->_rootdir = rtrim($params->dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;

        $this->_delim = isset($params->delim) ? $params->delim : '.';

        $this->_buildFolderTree();
        $this->selectFolder(!empty($params->folder) ? $params->folder : 'INBOX');
        $this->_has['top'] = true;
        $this->_has['flags'] = true;
    }

    /**
     * find all subfolders and mbox files for folder structure
     *
     * Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder.
     * $parentFolder and $parentGlobalName are only used internally for recursion.
     *
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _buildFolderTree()
    {
        $this->_rootFolder = new Zend_Mail_Storage_Folder('/', '/', false);
        $this->_rootFolder->INBOX = new Zend_Mail_Storage_Folder('INBOX', 'INBOX', true);

        $dh = @opendir($this->_rootdir);
        if (!$dh) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("can't read folders in maildir");
        }
        $dirs = array();
        while (($entry = readdir($dh)) !== false) {
            // maildir++ defines folders must start with .
            if ($entry[0] != '.' || $entry == '.' || $entry == '..') {
                continue;
            }
            if ($this->_isMaildir($this->_rootdir . $entry)) {
                $dirs[] = $entry;
            }
        }
        closedir($dh);

        sort($dirs);
        $stack = array(null);
        $folderStack = array(null);
        $parentFolder = $this->_rootFolder;
        $parent = '.';

        foreach ($dirs as $dir) {
            do {
                if (strpos($dir, $parent) === 0) {
                    $local = substr($dir, strlen($parent));
                    if (strpos($local, $this->_delim) !== false) {
                        /**
                         * @see Zend_Mail_Storage_Exception
                         */
                        require_once 'Zend/Mail/Storage/Exception.php';
                        throw new Zend_Mail_Storage_Exception('error while reading maildir');
                    }
                    array_push($stack, $parent);
                    $parent = $dir . $this->_delim;
                    $folder = new Zend_Mail_Storage_Folder($local, substr($dir, 1), true);
                    $parentFolder->$local = $folder;
                    array_push($folderStack, $parentFolder);
                    $parentFolder = $folder;
                    break;
                } else if ($stack) {
                    $parent = array_pop($stack);
                    $parentFolder = array_pop($folderStack);
                }
            } while ($stack);
            if (!$stack) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('error while reading maildir');
            }
        }
    }

    /**
     * get root folder or given folder
     *
     * @param string $rootFolder get folder structure for given folder, else root
     * @return Zend_Mail_Storage_Folder root or wanted folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getFolders($rootFolder = null)
    {
        if (!$rootFolder || $rootFolder == 'INBOX') {
            return $this->_rootFolder;
        }

        // rootdir is same as INBOX in maildir
        if (strpos($rootFolder, 'INBOX' . $this->_delim) === 0) {
            $rootFolder = substr($rootFolder, 6);
        }
        $currentFolder = $this->_rootFolder;
        $subname = trim($rootFolder, $this->_delim);
        while ($currentFolder) {
            @list($entry, $subname) = @explode($this->_delim, $subname, 2);
            $currentFolder = $currentFolder->$entry;
            if (!$subname) {
                break;
            }
        }

        if ($currentFolder->getGlobalName() != rtrim($rootFolder, $this->_delim)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("folder $rootFolder not found");
        }
        return $currentFolder;
    }

    /**
     * select given folder
     *
     * folder must be selectable!
     *
     * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function selectFolder($globalName)
    {
        $this->_currentFolder = (string)$globalName;

        // getting folder from folder tree for validation
        $folder = $this->getFolders($this->_currentFolder);

        try {
            $this->_openMaildir($this->_rootdir . '.' . $folder->getGlobalName());
        } catch(Zend_Mail_Storage_Exception $e) {
            // check what went wrong
            if (!$folder->isSelectable()) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception("{$this->_currentFolder} is not selectable");
            }
            // seems like file has vanished; rebuilding folder tree - but it's still an exception
            $this->_buildFolderTree($this->_rootdir);
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('seems like the maildir has vanished, I\'ve rebuild the ' .
                                                         'folder tree, search for an other folder and try again');
        }
    }

    /**
     * get Zend_Mail_Storage_Folder instance for current folder
     *
     * @return Zend_Mail_Storage_Folder instance of current folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getCurrentFolder()
    {
        return $this->_currentFolder;
    }
}
PKpG[)ՃO""Mail/Storage/Folder/Mbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mbox.php 9098 2008-03-30 19:29:10Z thomas $
 */


/**
 * @see Zend_Mail_Storage_Folder
 */
require_once 'Zend/Mail/Storage/Folder.php';

/**
 * @see Zend_Mail_Storage_Folder_Interface
 */
require_once 'Zend/Mail/Storage/Folder/Interface.php';

/**
 * @see Zend_Mail_Storage_Mbox
 */
require_once 'Zend/Mail/Storage/Mbox.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Folder_Mbox extends Zend_Mail_Storage_Mbox implements Zend_Mail_Storage_Folder_Interface
{
    /**
     * Zend_Mail_Storage_Folder root folder for folder structure
     * @var Zend_Mail_Storage_Folder
     */
    protected $_rootFolder;

    /**
     * rootdir of folder structure
     * @var string
     */
    protected $_rootdir;

    /**
     * name of current folder
     * @var string
     */
    protected $_currentFolder;

    /**
     * Create instance with parameters
     *
     * Disallowed parameters are:
     *   - filename use Zend_Mail_Storage_Mbox for a single file
     * Supported parameters are:
     *   - dirname rootdir of mbox structure
     *   - folder intial selected folder, default is 'INBOX'
     *
     * @param  $params array mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }

        if (isset($params->filename)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('use Zend_Mail_Storage_Mbox for a single file');
        }

        if (!isset($params->dirname) || !is_dir($params->dirname)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('no valid dirname given in params');
        }

        $this->_rootdir = rtrim($params->dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;

        $this->_buildFolderTree($this->_rootdir);
        $this->selectFolder(!empty($params->folder) ? $params->folder : 'INBOX');
        $this->_has['top']      = true;
        $this->_has['uniqueid'] = false;
    }

    /**
     * find all subfolders and mbox files for folder structure
     *
     * Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder.
     * $parentFolder and $parentGlobalName are only used internally for recursion.
     *
     * @param string $currentDir call with root dir, also used for recursion.
     * @param Zend_Mail_Storage_Folder|null $parentFolder used for recursion
     * @param string $parentGlobalName used for rescursion
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _buildFolderTree($currentDir, $parentFolder = null, $parentGlobalName = '')
    {
        if (!$parentFolder) {
            $this->_rootFolder = new Zend_Mail_Storage_Folder('/', '/', false);
            $parentFolder = $this->_rootFolder;
        }

        $dh = @opendir($currentDir);
        if (!$dh) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("can't read dir $currentDir");
        }
        while (($entry = readdir($dh)) !== false) {
            // ignore hidden files for mbox
            if ($entry[0] == '.') {
                continue;
            }
            $absoluteEntry = $currentDir . $entry;
            $globalName = $parentGlobalName . DIRECTORY_SEPARATOR . $entry;
            if (is_file($absoluteEntry) && $this->_isMboxFile($absoluteEntry)) {
                $parentFolder->$entry = new Zend_Mail_Storage_Folder($entry, $globalName);
                continue;
            }
            if (!is_dir($absoluteEntry) /* || $entry == '.' || $entry == '..' */) {
                continue;
            }
            $folder = new Zend_Mail_Storage_Folder($entry, $globalName, false);
            $parentFolder->$entry = $folder;
            $this->_buildFolderTree($absoluteEntry . DIRECTORY_SEPARATOR, $folder, $globalName);
        }

        closedir($dh);
    }

    /**
     * get root folder or given folder
     *
     * @param string $rootFolder get folder structure for given folder, else root
     * @return Zend_Mail_Storage_Folder root or wanted folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getFolders($rootFolder = null)
    {
        if (!$rootFolder) {
            return $this->_rootFolder;
        }

        $currentFolder = $this->_rootFolder;
        $subname = trim($rootFolder, DIRECTORY_SEPARATOR);
        while ($currentFolder) {
            @list($entry, $subname) = @explode(DIRECTORY_SEPARATOR, $subname, 2);
            $currentFolder = $currentFolder->$entry;
            if (!$subname) {
                break;
            }
        }

        if ($currentFolder->getGlobalName() != DIRECTORY_SEPARATOR . trim($rootFolder, DIRECTORY_SEPARATOR)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("folder $rootFolder not found");
        }
        return $currentFolder;
    }

    /**
     * select given folder
     *
     * folder must be selectable!
     *
     * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function selectFolder($globalName)
    {
        $this->_currentFolder = (string)$globalName;

        // getting folder from folder tree for validation
        $folder = $this->getFolders($this->_currentFolder);

        try {
            $this->_openMboxFile($this->_rootdir . $folder->getGlobalName());
        } catch(Zend_Mail_Storage_Exception $e) {
            // check what went wrong
            if (!$folder->isSelectable()) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception("{$this->_currentFolder} is not selectable");
            }
            // seems like file has vanished; rebuilding folder tree - but it's still an exception
            $this->_buildFolderTree($this->_rootdir);
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('seems like the mbox file has vanished, I\'ve rebuild the ' .
                                                         'folder tree, search for an other folder and try again');
        }
    }

    /**
     * get Zend_Mail_Storage_Folder instance for current folder
     *
     * @return Zend_Mail_Storage_Folder instance of current folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getCurrentFolder()
    {
        return $this->_currentFolder;
    }

    /**
     * magic method for serialize()
     *
     * with this method you can cache the mbox class
     *
     * @return array name of variables
     */
    public function __sleep()
    {
        return array_merge(parent::__sleep(), array('_currentFolder', '_rootFolder', '_rootdir'));
    }

    /**
     * magic method for unserialize()
     *
     * with this method you can cache the mbox class
     *
     * @return null
     */
    public function __wakeup()
    {
        // if cache is stall selectFolder() rebuilds the tree on error
        parent::__wakeup();
    }
}
PKpG[�bzUUUUMail/Storage/Imap.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Imap.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Mail_Storage_Abstract
 */
require_once 'Zend/Mail/Storage/Abstract.php';

/**
 * @see Zend_Mail_Protocol_Imap
 */
require_once 'Zend/Mail/Protocol/Imap.php';

/**
 * @see Zend_Mail_Storage_Writable_Interface
 */
require_once 'Zend/Mail/Storage/Writable/Interface.php';

/**
 * @see Zend_Mail_Storage_Folder_Interface
 */
require_once 'Zend/Mail/Storage/Folder/Interface.php';

/**
 * @see Zend_Mail_Storage_Folder
 */
require_once 'Zend/Mail/Storage/Folder.php';

/**
 * @see Zend_Mail_Message
 */
require_once 'Zend/Mail/Message.php';

/**
 * @see Zend_Mail_Storage
 */
require_once 'Zend/Mail/Storage.php';

/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Imap extends Zend_Mail_Storage_Abstract
                             implements Zend_Mail_Storage_Folder_Interface, Zend_Mail_Storage_Writable_Interface
{
    // TODO: with an internal cache we could optimize this class, or create an extra class with
    // such optimizations. Especially the various fetch calls could be combined to one cache call

    /**
     * protocol handler
     * @var null|Zend_Mail_Protocol_Imap
     */
    protected $_protocol;

    /**
     * name of current folder
     * @var string
     */
    protected $_currentFolder = '';

    /**
     * imap flags to constants translation
     * @var array
     */
    protected static $_knownFlags = array('\Passed'   => Zend_Mail_Storage::FLAG_PASSED,
                                          '\Answered' => Zend_Mail_Storage::FLAG_ANSWERED,
                                          '\Seen'     => Zend_Mail_Storage::FLAG_SEEN,
                                          '\Deleted'  => Zend_Mail_Storage::FLAG_DELETED,
                                          '\Draft'    => Zend_Mail_Storage::FLAG_DRAFT,
                                          '\Flagged'  => Zend_Mail_Storage::FLAG_FLAGGED);

    /**
     * map flags to search criterias
     * @var array
     */
    protected static $_searchFlags = array('\Recent'   => 'RECENT',
                                           '\Answered' => 'ANSWERED',
                                           '\Seen'     => 'SEEN',
                                           '\Deleted'  => 'DELETED',
                                           '\Draft'    => 'DRAFT',
                                           '\Flagged'  => 'FLAGGED');

    /**
     * Count messages all messages in current box
     *
     * @return int number of messages
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function countMessages($flags = null)
    {
        if (!$this->_currentFolder) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('No selected folder to count');
        }

        if ($flags === null) {
            return count($this->_protocol->search(array('ALL')));
        }
    
        $params = array();
        foreach ((array)$flags as $flag) {
            if (isset(self::$_searchFlags[$flag])) {
                $params[] = self::$_searchFlags[$flag];
            } else {
                $params[] = 'KEYWORD';
                $params[] = $this->_protocol->escapeString($flag);
            }
        }
        return count($this->_protocol->search($params));
    }

    /**
     * get a list of messages with number and size
     *
     * @param int $id number of message
     * @return int|array size of given message of list with all messages as array(num => size)
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getSize($id = 0)
    {
        if ($id) {
            return $this->_protocol->fetch('RFC822.SIZE', $id);
        }
        return $this->_protocol->fetch('RFC822.SIZE', 1, INF);
    }

    /**
     * Fetch a message
     *
     * @param int $id number of message
     * @return Zend_Mail_Message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getMessage($id)
    {
        $data = $this->_protocol->fetch(array('FLAGS', 'RFC822.HEADER'), $id);
        $header = $data['RFC822.HEADER'];

        $flags = array();
        foreach ($data['FLAGS'] as $flag) {
            $flags[] = isset(self::$_knownFlags[$flag]) ? self::$_knownFlags[$flag] : $flag;
        }

        return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $header, 'flags' => $flags));
    }

    /*
     * Get raw header of message or part
     *
     * @param  int               $id       number of message
     * @param  null|array|string $part     path to part or null for messsage header
     * @param  int               $topLines include this many lines with header (after an empty line)
     * @param  int $topLines include this many lines with header (after an empty line)
     * @return string raw header
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawHeader($id, $part = null, $topLines = 0)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        // TODO: toplines
        return $this->_protocol->fetch('RFC822.HEADER', $id);
    }

    /*
     * Get raw content of message or part
     *
     * @param  int               $id   number of message
     * @param  null|array|string $part path to part or null for messsage content
     * @return string raw content
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawContent($id, $part = null)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        return $this->_protocol->fetch('RFC822.TEXT', $id);
    }

    /**
     * create instance with parameters
     * Supported paramters are
     *   - user username
     *   - host hostname or ip address of IMAP server [optional, default = 'localhost']
     *   - password password for user 'username' [optional, default = '']
     *   - port port for IMAP server [optional, default = 110]
     *   - ssl 'SSL' or 'TLS' for secure sockets
     *   - folder select this folder [optional, default = 'INBOX']
     *
     * @param  array $params mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }

        $this->_has['flags'] = true;

        if ($params instanceof Zend_Mail_Protocol_Imap) {
            $this->_protocol = $params;
            try {
                $this->selectFolder('INBOX');
            } catch(Zend_Mail_Storage_Exception $e) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('cannot select INBOX, is this a valid transport?');
            }
            return;
        }

        if (!isset($params->user)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('need at least user in params');
        }

        $host     = isset($params->host)     ? $params->host     : 'localhost';
        $password = isset($params->password) ? $params->password : '';
        $port     = isset($params->port)     ? $params->port     : null;
        $ssl      = isset($params->ssl)      ? $params->ssl      : false;

        $this->_protocol = new Zend_Mail_Protocol_Imap();
        $this->_protocol->connect($host, $port, $ssl);
        if (!$this->_protocol->login($params->user, $password)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot login, user or password wrong');
        }
        $this->selectFolder(isset($params->folder) ? $params->folder : 'INBOX');
    }

    /**
     * Close resource for mail lib. If you need to control, when the resource
     * is closed. Otherwise the destructor would call this.
     *
     * @return null
     */
    public function close()
    {
        $this->_currentFolder = '';
        $this->_protocol->logout();
    }

    /**
     * Keep the server busy.
     *
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function noop()
    {
        if (!$this->_protocol->noop()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('could not do nothing');
        }
    }

    /**
     * Remove a message from server. If you're doing that from a web enviroment
     * you should be careful and use a uniqueid as parameter if possible to
     * identify the message.
     *
     * @param   int $id number of message
     * @return  null
     * @throws  Zend_Mail_Storage_Exception
     */
    public function removeMessage($id)
    {
        if (!$this->_protocol->store(array(Zend_Mail_Storage::FLAG_DELETED), $id, null, '+')) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot set deleted flag');
        }
        // TODO: expunge here or at close? we can handle an error here better and are more fail safe
        if (!$this->_protocol->expunge()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('message marked as deleted, but could not expunge');
        }
    }

    /**
     * get unique id for one or all messages
     *
     * if storage does not support unique ids it's the same as the message number
     *
     * @param int|null $id message number
     * @return array|string message number for given message or all messages as array
     * @throws Zend_Mail_Storage_Exception
     */
    public function getUniqueId($id = null)
    {
        if ($id) {
            return $this->_protocol->fetch('UID', $id);
        }

        return $this->_protocol->fetch('UID', 1, INF);
    }

    /**
     * get a message number from a unique id
     *
     * I.e. if you have a webmailer that supports deleting messages you should use unique ids
     * as parameter and use this method to translate it to message number right before calling removeMessage()
     *
     * @param string $id unique id
     * @return int message number
     * @throws Zend_Mail_Storage_Exception
     */
    public function getNumberByUniqueId($id)
    {
        // TODO: use search to find number directly
        $ids = $this->getUniqueId();
        foreach ($ids as $k => $v) {
            if ($v == $id) {
                return $k;
            }
        }

        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('unique id not found');
    }


    /**
     * get root folder or given folder
     *
     * @param  string $rootFolder get folder structure for given folder, else root
     * @return Zend_Mail_Storage_Folder root or wanted folder
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getFolders($rootFolder = null)
    {
        $folders = $this->_protocol->listMailbox((string)$rootFolder);
        if (!$folders) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('folder not found');
        }

        ksort($folders, SORT_STRING);
        $root = new Zend_Mail_Storage_Folder('/', '/', false);
        $stack = array(null);
        $folderStack = array(null);
        $parentFolder = $root;
        $parent = '';

        foreach ($folders as $globalName => $data) {
            do {
                if (!$parent || strpos($globalName, $parent) === 0) {
                    $pos = strrpos($globalName, $data['delim']);
                    if ($pos === false) {
                        $localName = $globalName;
                    } else {
                        $localName = substr($globalName, $pos + 1);
                    }
                    $selectable = !$data['flags'] || !in_array('\\Noselect', $data['flags']);

                    array_push($stack, $parent);
                    $parent = $globalName . $data['delim'];
                    $folder = new Zend_Mail_Storage_Folder($localName, $globalName, $selectable);
                    $parentFolder->$localName = $folder;
                    array_push($folderStack, $parentFolder);
                    $parentFolder = $folder;
                    break;
                } else if ($stack) {
                    $parent = array_pop($stack);
                    $parentFolder = array_pop($folderStack);
                }
            } while ($stack);
            if (!$stack) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('error while constructing folder tree');
            }
        }

        return $root;
    }

    /**
     * select given folder
     *
     * folder must be selectable!
     *
     * @param  Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function selectFolder($globalName)
    {
        $this->_currentFolder = $globalName;
        if (!$this->_protocol->select($this->_currentFolder)) {
            $this->_currentFolder = '';
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot change folder, maybe it does not exist');
        }
    }


    /**
     * get Zend_Mail_Storage_Folder instance for current folder
     *
     * @return Zend_Mail_Storage_Folder instance of current folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function getCurrentFolder()
    {
        return $this->_currentFolder;
    }

    /**
     * create a new folder
     *
     * This method also creates parent folders if necessary. Some mail storages may restrict, which folder
     * may be used as parent or which chars may be used in the folder name
     *
     * @param  string                          $name         global name of folder, local name if $parentFolder is set
     * @param  string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function createFolder($name, $parentFolder = null)
    {
        // TODO: we assume / as the hierarchy delim - need to get that from the folder class!
        if ($parentFolder instanceof Zend_Mail_Storage_Folder) {
            $folder = $parentFolder->getGlobalName() . '/' . $name;
        } else if ($parentFolder != null) {
            $folder = $parentFolder . '/' . $name;
        } else {
            $folder = $name;
        }

        if (!$this->_protocol->create($folder)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot create folder');
        }
    }

    /**
     * remove a folder
     *
     * @param  string|Zend_Mail_Storage_Folder $name      name or instance of folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function removeFolder($name)
    {
        if ($name instanceof Zend_Mail_Storage_Folder) {
            $name = $name->getGlobalName();
        }

        if (!$this->_protocol->delete($name)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot delete folder');
        }
    }

    /**
     * rename and/or move folder
     *
     * The new name has the same restrictions as in createFolder()
     *
     * @param  string|Zend_Mail_Storage_Folder $oldName name or instance of folder
     * @param  string                          $newName new global name of folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function renameFolder($oldName, $newName)
    {
        if ($oldName instanceof Zend_Mail_Storage_Folder) {
            $oldName = $oldName->getGlobalName();
        }

        if (!$this->_protocol->rename($oldName, $newName)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot rename folder');
        }
    }

    /**
     * append a new message to mail storage
     *
     * @param  string                                     $message message as string or instance of message class
     * @param  null|string|Zend_Mail_Storage_Folder       $folder  folder for new message, else current folder is taken
     * @param  null|array                                 $flags   set flags for new message, else a default set is used
     * @throws Zend_Mail_Storage_Exception
     */
     // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class
    public function appendMessage($message, $folder = null, $flags = null)
    {
        if ($folder === null) {
            $folder = $this->_currentFolder;
        }

        if ($flags === null) {
            $flags = array(Zend_Mail_Storage::FLAG_SEEN);
        }

        // TODO: handle class instances for $message
        if (!$this->_protocol->append($folder, $message, $flags)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot create message, please check if the folder exists and your flags');
        }
    }

    /**
     * copy an existing message
     *
     * @param  int                             $id     number of message
     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function copyMessage($id, $folder)
    {
        if (!$this->_protocol->copy($folder, $id)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot copy message, does the folder exist?');
        }
    }

    /**
     * move an existing message
     *
     * NOTE: imap has no native move command, thus it's emulated with copy and delete
     *
     * @param  int                             $id     number of message
     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function moveMessage($id, $folder) {
        $this->copyMessage($id, $folder);
        $this->removeMessage($id);
    }

    /**
     * set flags for message
     *
     * NOTE: this method can't set the recent flag.
     *
     * @param  int   $id    number of message
     * @param  array $flags new flags for message
     * @throws Zend_Mail_Storage_Exception
     */
    public function setFlags($id, $flags)
    {
        if (!$this->_protocol->store($flags, $id)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot set flags, have you tried to set the recent flag or special chars?');
        }
    }
}

PKpG[B3�>&>&Mail/Storage/Pop3.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Pop3.php 9099 2008-03-30 19:35:47Z thomas $
 */


/**
 * @see Zend_Mail_Storage_Abstract
 */
require_once 'Zend/Mail/Storage/Abstract.php';

/**
 * @see Zend_Mail_Protocol_Pop3
 */
require_once 'Zend/Mail/Protocol/Pop3.php';

/**
 * @see Zend_Mail_Message
 */
require_once 'Zend/Mail/Message.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Pop3 extends Zend_Mail_Storage_Abstract
{
    /**
     * protocol handler
     * @var null|Zend_Mail_Protocol_Pop3
     */
    protected $_protocol;


    /**
     * Count messages all messages in current box
     *
     * @return int number of messages
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function countMessages()
    {
        $this->_protocol->status($count, $null);
        return (int)$count;
    }

    /**
     * get a list of messages with number and size
     *
     * @param int $id number of message
     * @return int|array size of given message of list with all messages as array(num => size)
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getSize($id = 0)
    {
        $id = $id ? $id : null;
        return $this->_protocol->getList($id);
    }

    /**
     * Fetch a message
     *
     * @param int $id number of message
     * @return Zend_Mail_Message
     * @throws Zend_Mail_Protocol_Exception
     */
    public function getMessage($id)
    {
        $bodyLines = 0;
        $message = $this->_protocol->top($id, $bodyLines, true);

        return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $message,
                                              'noToplines' => $bodyLines < 1));
    }

    /*
     * Get raw header of message or part
     *
     * @param  int               $id       number of message
     * @param  null|array|string $part     path to part or null for messsage header
     * @param  int               $topLines include this many lines with header (after an empty line)
     * @return string raw header
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawHeader($id, $part = null, $topLines = 0)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        return $this->_protocol->top($id, 0, true);
    }

    /*
     * Get raw content of message or part
     *
     * @param  int               $id   number of message
     * @param  null|array|string $part path to part or null for messsage content
     * @return string raw content
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawContent($id, $part = null)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        $content = $this->_protocol->retrieve($id);
        // TODO: find a way to avoid decoding the headers
        Zend_Mime_Decode::splitMessage($content, $null, $body);
        return $body;
    }

    /**
     * create instance with parameters
     * Supported paramters are
     *   - host hostname or ip address of POP3 server
     *   - user username
     *   - password password for user 'username' [optional, default = '']
     *   - port port for POP3 server [optional, default = 110]
     *   - ssl 'SSL' or 'TLS' for secure sockets
     *
     * @param  $params array  mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     * @throws Zend_Mail_Protocol_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }

        $this->_has['fetchPart'] = false;
        $this->_has['top']       = null;
        $this->_has['uniqueid']  = null;

        if ($params instanceof Zend_Mail_Protocol_Pop3) {
            $this->_protocol = $params;
            return;
        }

        if (!isset($params->user)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('need at least user in params');
        }

        $host     = isset($params->host)     ? $params->host     : 'localhost';
        $password = isset($params->password) ? $params->password : '';
        $port     = isset($params->port)     ? $params->port     : null;
        $ssl      = isset($params->ssl)      ? $params->ssl      : false;

        $this->_protocol = new Zend_Mail_Protocol_Pop3();
        $this->_protocol->connect($host, $port, $ssl);
        $this->_protocol->login($params->user, $password);
    }

    /**
     * Close resource for mail lib. If you need to control, when the resource
     * is closed. Otherwise the destructor would call this.
     *
     * @return null
     */
    public function close()
    {
        $this->_protocol->logout();
    }

    /**
     * Keep the server busy.
     *
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function noop()
    {
        return $this->_protocol->noop();
    }

    /**
     * Remove a message from server. If you're doing that from a web enviroment
     * you should be careful and use a uniqueid as parameter if possible to
     * identify the message.
     *
     * @param  int $id number of message
     * @return null
     * @throws Zend_Mail_Protocol_Exception
     */
    public function removeMessage($id)
    {
        $this->_protocol->delete($id);
    }

    /**
     * get unique id for one or all messages
     *
     * if storage does not support unique ids it's the same as the message number
     *
     * @param int|null $id message number
     * @return array|string message number for given message or all messages as array
     * @throws Zend_Mail_Storage_Exception
     */
    public function getUniqueId($id = null)
    {
        if (!$this->hasUniqueid) {
            if ($id) {
                return $id;
            }
            $count = $this->countMessages();
            if ($count < 1) {
                return array(); 
            }
            $range = range(1, $count);
            return array_combine($range, $range);
        }

        return $this->_protocol->uniqueid($id);
    }

    /**
     * get a message number from a unique id
     *
     * I.e. if you have a webmailer that supports deleting messages you should use unique ids
     * as parameter and use this method to translate it to message number right before calling removeMessage()
     *
     * @param string $id unique id
     * @return int message number
     * @throws Zend_Mail_Storage_Exception
     */
    public function getNumberByUniqueId($id)
    {
        if (!$this->hasUniqueid) {
            return $id;
        }

        $ids = $this->getUniqueId();
        foreach ($ids as $k => $v) {
            if ($v == $id) {
                return $k;
            }
        }

        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('unique id not found');
    }

    /**
     * Special handling for hasTop and hasUniqueid. The headers of the first message is
     * retrieved if Top wasn't needed/tried yet.
     *
     * @see Zend_Mail_Storage_Abstract:__get()
     * @param  string $var
     * @return string
     * @throws Zend_Mail_Storage_Exception
     */
    public function __get($var)
    {
        $result = parent::__get($var);
        if ($result !== null) {
            return $result;
        }

        if (strtolower($var) == 'hastop') {
            if ($this->_protocol->hasTop === null) {
                // need to make a real call, because not all server are honest in their capas
                try {
                    $this->_protocol->top(1, 0, false);
                } catch(Zend_Mail_Exception $e) {
                    // ignoring error
                }
            }
            $this->_has['top'] = $this->_protocol->hasTop;
            return $this->_protocol->hasTop;
        }

        if (strtolower($var) == 'hasuniqueid') {
            $id = null;
            try {
                $id = $this->_protocol->uniqueid(1);
            } catch(Zend_Mail_Exception $e) {
                // ignoring error
            }
            $this->_has['uniqueid'] = $id ? true : false;
            return $this->_has['uniqueid'];
        }

        return $result;
    }
}
PKpG[���iiMail/Storage/Folder.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Folder.php 9099 2008-03-30 19:35:47Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Folder implements RecursiveIterator
{
    /**
     * subfolders of folder array(localName => Zend_Mail_Storage_Folder folder)
     * @var array
     */
    protected $_folders;

    /**
     * local name (name of folder in parent folder)
     * @var string
     */
    protected $_localName;

    /**
     * global name (absolute name of folder)
     * @var string
     */
    protected $_globalName;

    /**
     * folder is selectable if folder is able to hold messages, else it's just a parent folder
     * @var bool
     */
    protected $_selectable = true;

    /**
     * create a new mail folder instance
     *
     * @param string $localName  name of folder in current subdirectory
     * @param string $globalName absolute name of folder
     * @param bool   $selectable if true folder holds messages, if false it's just a parent for subfolders
     * @param array  $folders    init with given instances of Zend_Mail_Storage_Folder as subfolders
     */
    public function __construct($localName, $globalName = '', $selectable = true, array $folders = array())
    {
        $this->_localName  = $localName;
        $this->_globalName = $globalName ? $globalName : $localName;
        $this->_selectable = $selectable;
        $this->_folders    = $folders;
    }

    /**
     * implements RecursiveIterator::hasChildren()
     *
     * @return bool current element has children
     */
    public function hasChildren()
    {
        $current = $this->current();
        return $current && $current instanceof Zend_Mail_Storage_Folder && !$current->isLeaf();
    }

    /**
     * implements RecursiveIterator::getChildren()
     *
     * @return Zend_Mail_Storage_Folder same as self::current()
     */
    public function getChildren()
    {
        return $this->current();
    }

    /**
     * implements Iterator::valid()
     *
     * @return bool check if there's a current element
     */
    public function valid()
    {
        return key($this->_folders) !== null;
    }

    /**
     * implements Iterator::next()
     *
     * @return null
     */
    public function next()
    {
        next($this->_folders);
    }

    /**
     * implements Iterator::key()
     *
     * @return string key/local name of current element
     */
    public function key()
    {
        return key($this->_folders);
    }

    /**
     * implements Iterator::current()
     *
     * @return Zend_Mail_Storage_Folder current folder
     */
    public function current()
    {
        return current($this->_folders);
    }

    /**
     * implements Iterator::rewind()
     *
     * @return null
     */
    public function rewind()
    {
        reset($this->_folders);
    }

    /**
     * get subfolder named $name
     *
     * @param  string $name wanted subfolder
     * @return Zend_Mail_Storage_Folder folder named $folder
     * @throws Zend_Mail_Storage_Exception
     */
    public function __get($name)
    {
        if (!isset($this->_folders[$name])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("no subfolder named $name");
        }

        return $this->_folders[$name];
    }

    /**
     * add or replace subfolder named $name
     *
     * @param string $name local name of subfolder
     * @param Zend_Mail_Storage_Folder $folder instance for new subfolder
     * @return null
     */
    public function __set($name, Zend_Mail_Storage_Folder $folder)
    {
        $this->_folders[$name] = $folder;
    }

    /**
     * remove subfolder named $name
     *
     * @param string $name local name of subfolder
     * @return null
     */
    public function __unset($name)
    {
        unset($this->_folders[$name]);
    }

    /**
     * magic method for easy output of global name
     *
     * @return string global name of folder
     */
    public function __toString()
    {
        return (string)$this->getGlobalName();
    }

    /**
     * get local name
     *
     * @return string local name
     */
    public function getLocalName()
    {
        return $this->_localName;
    }

    /**
     * get global name
     *
     * @return string global name
     */
    public function getGlobalName()
    {
        return $this->_globalName;
    }

    /**
     * is this folder selectable?
     *
     * @return bool selectable
     */
    public function isSelectable()
    {
        return $this->_selectable;
    }

    /**
     * check if folder has no subfolder
     *
     * @return bool true if no subfolders
     */
    public function isLeaf()
    {
        return empty($this->_folders);
    }
}
PKpG[5$����#Mail/Storage/Writable/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9098 2008-03-30 19:29:10Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

interface Zend_Mail_Storage_Writable_Interface
{
    /**
     * create a new folder
     *
     * This method also creates parent folders if necessary. Some mail storages may restrict, which folder
     * may be used as parent or which chars may be used in the folder name
     *
     * @param string                          $name         global name of folder, local name if $parentFolder is set
     * @param string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function createFolder($name, $parentFolder = null);

    /**
     * remove a folder
     *
     * @param string|Zend_Mail_Storage_Folder $name      name or instance of folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function removeFolder($name);

    /**
     * rename and/or move folder
     *
     * The new name has the same restrictions as in createFolder()
     *
     * @param string|Zend_Mail_Storage_Folder $oldName name or instance of folder
     * @param string                          $newName new global name of folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function renameFolder($oldName, $newName);

    /**
     * append a new message to mail storage
     *
     * @param  string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class
     * @param  null|string|Zend_Mail_Storage_Folder       $folder  folder for new message, else current folder is taken
     * @param  null|array                                 $flags   set flags for new message, else a default set is used
     * @throws Zend_Mail_Storage_Exception
     */
    public function appendMessage($message, $folder = null, $flags = null);

    /**
     * copy an existing message
     *
     * @param  int                             $id     number of message
     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function copyMessage($id, $folder);

    /**
     * move an existing message
     *
     * @param  int                             $id     number of message
     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function moveMessage($id, $folder);

    /**
     * set flags for message
     *
     * NOTE: this method can't set the recent flag.
     *
     * @param  int   $id    number of message
     * @param  array $flags new flags for message
     * @throws Zend_Mail_Storage_Exception
     */
    public function setFlags($id, $flags);
}PKpG[�kn�g�g�!Mail/Storage/Writable/Maildir.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Maildir.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Mail_Storage_Folder_Maildir
 */
require_once 'Zend/Mail/Storage/Folder/Maildir.php';

/**
 * @see Zend_Mail_Storage_Writable_Interface
 */
require_once 'Zend/Mail/Storage/Writable/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Writable_Maildir extends    Zend_Mail_Storage_Folder_Maildir
                                         implements Zend_Mail_Storage_Writable_Interface
{
    // TODO: init maildir (+ constructor option create if not found)

    /**
     * use quota and size of quota if given
     * @var bool|int
     */
    protected $_quota;
    
    /**
     * create a new maildir
     *
     * If the given dir is already a valid maildir this will not fail.
     *
     * @param string $dir directory for the new maildir (may already exist)
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public static function initMaildir($dir)
    {
        if (file_exists($dir)) {
            if (!is_dir($dir)) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('maildir must be a directory if already exists');
            }
        } else {
            if (!mkdir($dir)) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                $dir = dirname($dir);
                if (!file_exists($dir)) {
                    throw new Zend_Mail_Storage_Exception("parent $dir not found");
                } else if (!is_dir($dir)) {
                    throw new Zend_Mail_Storage_Exception("parent $dir not a directory");
                } else {
                    throw new Zend_Mail_Storage_Exception('cannot create maildir');
                }
            }
        }
        
        foreach (array('cur', 'tmp', 'new') as $subdir) {
            if (!@mkdir($dir . DIRECTORY_SEPARATOR . $subdir)) {
                // ignore if dir exists (i.e. was already valid maildir or two processes try to create one)
                if (!file_exists($dir . DIRECTORY_SEPARATOR . $subdir)) {
                    /**
                     * @see Zend_Mail_Storage_Exception
                     */
                    require_once 'Zend/Mail/Storage/Exception.php';
                    throw new Zend_Mail_Storage_Exception('could not create subdir ' . $subdir);
                }
            }
        }
    }
    
    /**
     * Create instance with parameters
     * Additional parameters are (see parent for more):
     *   - create if true a new maildir is create if none exists
     *
     * @param  $params array mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    public function __construct($params) {
        if (is_array($params)) {
            $params = (object)$params;
        }
        
        if (!empty($params->create) && isset($params->dirname) && !file_exists($params->dirname . DIRECTORY_SEPARATOR . 'cur')) {
            self::initMaildir($params->dirname);
        }
        
        parent::__construct($params);
    }

    /**
     * create a new folder
     *
     * This method also creates parent folders if necessary. Some mail storages may restrict, which folder
     * may be used as parent or which chars may be used in the folder name
     *
     * @param   string                          $name         global name of folder, local name if $parentFolder is set
     * @param   string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent
     * @return  string only used internally (new created maildir)
     * @throws  Zend_Mail_Storage_Exception
     */
    public function createFolder($name, $parentFolder = null)
    {
        if ($parentFolder instanceof Zend_Mail_Storage_Folder) {
            $folder = $parentFolder->getGlobalName() . $this->_delim . $name;
        } else if ($parentFolder != null) {
            $folder = rtrim($parentFolder, $this->_delim) . $this->_delim . $name;
        } else {
            $folder = $name;
        }

        $folder = trim($folder, $this->_delim);

        // first we check if we try to create a folder that does exist
        $exists = null;
        try {
            $exists = $this->getFolders($folder);
        } catch (Zend_Mail_Exception $e) {
            // ok
        }
        if ($exists) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('folder already exists');
        }

        if (strpos($folder, $this->_delim . $this->_delim) !== false) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('invalid name - folder parts may not be empty');
        }

        if (strpos($folder, 'INBOX' . $this->_delim) === 0) {
            $folder = substr($folder, 6);
        }

        $fulldir = $this->_rootdir . '.' . $folder;

        // check if we got tricked and would create a dir outside of the rootdir or not as direct child
        if (strpos($folder, DIRECTORY_SEPARATOR) !== false || strpos($folder, '/') !== false
            || dirname($fulldir) . DIRECTORY_SEPARATOR != $this->_rootdir) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('invalid name - no directory seprator allowed in folder name');
        }

        // has a parent folder?
        $parent = null;
        if (strpos($folder, $this->_delim)) {
            // let's see if the parent folder exists
            $parent = substr($folder, 0, strrpos($folder, $this->_delim));
            try {
                $this->getFolders($parent);
            } catch (Zend_Mail_Exception $e) {
                // does not - create parent folder
                $this->createFolder($parent);
            }
        }

        if (!@mkdir($fulldir) || !@mkdir($fulldir . DIRECTORY_SEPARATOR . 'cur')) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('error while creating new folder, may be created incompletly');
        }

        mkdir($fulldir . DIRECTORY_SEPARATOR . 'new');
        mkdir($fulldir . DIRECTORY_SEPARATOR . 'tmp');

        $localName = $parent ? substr($folder, strlen($parent) + 1) : $folder;
        $this->getFolders($parent)->$localName = new Zend_Mail_Storage_Folder($localName, $folder, true);

        return $fulldir;
    }

    /**
     * remove a folder
     *
     * @param   string|Zend_Mail_Storage_Folder $name      name or instance of folder
     * @return  null
     * @throws  Zend_Mail_Storage_Exception
     */
    public function removeFolder($name)
    {
        // TODO: This could fail in the middle of the task, which is not optimal.
        // But there is no defined standard way to mark a folder as removed and there is no atomar fs-op
        // to remove a directory. Also moving the folder to a/the trash folder is not possible, as
        // all parent folders must be created. What we could do is add a dash to the front of the
        // directory name and it should be ignored as long as other processes obey the standard.

        if ($name instanceof Zend_Mail_Storage_Folder) {
            $name = $name->getGlobalName();
        }

        $name = trim($name, $this->_delim);
        if (strpos($name, 'INBOX' . $this->_delim) === 0) {
            $name = substr($name, 6);
        }

        // check if folder exists and has no children
        if (!$this->getFolders($name)->isLeaf()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('delete children first');
        }

        if ($name == 'INBOX' || $name == DIRECTORY_SEPARATOR || $name == '/') {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('wont delete INBOX');
        }

        if ($name == $this->getCurrentFolder()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('wont delete selected folder');
        }

        foreach (array('tmp', 'new', 'cur', '.') as $subdir) {
            $dir = $this->_rootdir . '.' . $name . DIRECTORY_SEPARATOR . $subdir;
            if (!file_exists($dir)) {
                continue;
            }
            $dh = opendir($dir);
            if (!$dh) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception("error opening $subdir");
            }
            while (($entry = readdir($dh)) !== false) {
                if ($entry == '.' || $entry == '..') {
                    continue;
                }
                if (!unlink($dir . DIRECTORY_SEPARATOR . $entry)) {
                    /**
                     * @see Zend_Mail_Storage_Exception
                     */
                    require_once 'Zend/Mail/Storage/Exception.php';
                    throw new Zend_Mail_Storage_Exception("error cleaning $subdir");
                }
            }
            closedir($dh);
            if ($subdir !== '.') {
                if (!rmdir($dir)) {
                    /**
                     * @see Zend_Mail_Storage_Exception
                     */
                    require_once 'Zend/Mail/Storage/Exception.php';
                    throw new Zend_Mail_Storage_Exception("error removing $subdir");
                }
            }
        }

        if (!rmdir($this->_rootdir . '.' . $name)) {
            // at least we should try to make it a valid maildir again
            mkdir($this->_rootdir . '.' . $name . DIRECTORY_SEPARATOR . 'cur');
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("error removing maindir");
        }

        $parent = strpos($name, $this->_delim) ? substr($name, 0, strrpos($name, $this->_delim)) : null;
        $localName = $parent ? substr($name, strlen($parent) + 1) : $name;
        unset($this->getFolders($parent)->$localName);
    }

    /**
     * rename and/or move folder
     *
     * The new name has the same restrictions as in createFolder()
     *
     * @param   string|Zend_Mail_Storage_Folder $oldName name or instance of folder
     * @param   string                          $newName new global name of folder
     * @return  null
     * @throws  Zend_Mail_Storage_Exception
     */
    public function renameFolder($oldName, $newName)
    {
        // TODO: This is also not atomar and has similar problems as removeFolder()

        if ($oldName instanceof Zend_Mail_Storage_Folder) {
            $oldName = $oldName->getGlobalName();
        }

        $oldName = trim($oldName, $this->_delim);
        if (strpos($oldName, 'INBOX' . $this->_delim) === 0) {
            $oldName = substr($oldName, 6);
        }

        $newName = trim($newName, $this->_delim);
        if (strpos($newName, 'INBOX' . $this->_delim) === 0) {
            $newName = substr($newName, 6);
        }

        if (strpos($newName, $oldName . $this->_delim) === 0) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('new folder cannot be a child of old folder');
        }

        // check if folder exists and has no children
        $folder = $this->getFolders($oldName);

        if ($oldName == 'INBOX' || $oldName == DIRECTORY_SEPARATOR || $oldName == '/') {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('wont rename INBOX');
        }

        if ($oldName == $this->getCurrentFolder()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('wont rename selected folder');
        }

        $newdir = $this->createFolder($newName);

        if (!$folder->isLeaf()) {
            foreach ($folder as $k => $v) {
                $this->renameFolder($v->getGlobalName(), $newName . $this->_delim . $k);
            }
        }

        $olddir = $this->_rootdir . '.' . $folder;
        foreach (array('tmp', 'new', 'cur') as $subdir) {
            $subdir = DIRECTORY_SEPARATOR . $subdir;
            if (!file_exists($olddir . $subdir)) {
                continue;
            }
            // using copy or moving files would be even better - but also much slower
            if (!rename($olddir . $subdir, $newdir . $subdir)) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('error while moving ' . $subdir);
            }
        }
        // create a dummy if removing fails - otherwise we can't read it next time
        mkdir($olddir . DIRECTORY_SEPARATOR . 'cur');
        $this->removeFolder($oldName);
    }

    /**
     * create a uniqueid for maildir filename
     *
     * This is nearly the format defined in the maildir standard. The microtime() call should already
     * create a uniqueid, the pid is for multicore/-cpu machine that manage to call this function at the
     * exact same time, and uname() gives us the hostname for multiple machines accessing the same storage.
     *
     * If someone disables posix we create a random number of the same size, so this method should also
     * work on Windows - if you manage to get maildir working on Windows.
     * Microtime could also be disabled, altough I've never seen it.
     *
     * @return string new uniqueid
     */
    protected function _createUniqueId()
    {
        $id = '';
        $id .= function_exists('microtime') ? microtime(true) : (time() . ' ' . rand(0, 100000));
        $id .= '.' . (function_exists('posix_getpid') ? posix_getpid() : rand(50, 65535));
        $id .= '.' . php_uname('n');

        return $id;
    }

    /**
     * open a temporary maildir file
     *
     * makes sure tmp/ exists and create a file with a unique name
     * you should close the returned filehandle!
     *
     * @param   string $folder name of current folder without leading .
     * @return  array array('dirname' => dir of maildir folder, 'uniq' => unique id, 'filename' => name of create file
     *                     'handle'  => file opened for writing)
     * @throws  Zend_Mail_Storage_Exception
     */
    protected function _createTmpFile($folder = 'INBOX')
    {
        if ($folder == 'INBOX') {
            $tmpdir = $this->_rootdir . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR;
        } else {
            $tmpdir = $this->_rootdir . '.' . $folder . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR;
        }
        if (!file_exists($tmpdir)) {
            if (!mkdir($tmpdir)) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('problems creating tmp dir');
            }
        }

        // we should retry to create a unique id if a file with the same name exists
        // to avoid a script timeout we only wait 1 second (instead of 2) and stop
        // after a defined retry count
        // if you change this variable take into account that it can take up to $max_tries seconds
        // normally we should have a valid unique name after the first try, we're just following the "standard" here
        $max_tries = 5;
        for ($i = 0; $i < $max_tries; ++$i) {
            $uniq = $this->_createUniqueId();
            if (!file_exists($tmpdir . $uniq)) {
                // here is the race condition! - as defined in the standard
                // to avoid having a long time between stat()ing the file and creating it we're opening it here
                // to mark the filename as taken
                $fh = fopen($tmpdir . $uniq, 'w');
                if (!$fh) {
                    /**
                     * @see Zend_Mail_Storage_Exception
                     */
                    require_once 'Zend/Mail/Storage/Exception.php';
                    throw new Zend_Mail_Storage_Exception('could not open temp file');
                }
                break;
            }
            sleep(1);
        }

        if (!$fh) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception("tried $max_tries unique ids for a temp file, but all were taken"
                                                . ' - giving up');
        }

        return array('dirname' => $this->_rootdir . '.' . $folder, 'uniq' => $uniq, 'filename' => $tmpdir . $uniq,
                     'handle' => $fh);
    }

    /**
     * create an info string for filenames with given flags
     *
     * @param   array $flags wanted flags, with the reference you'll get the set flags with correct key (= char for flag)
     * @return  string info string for version 2 filenames including the leading colon
     * @throws  Zend_Mail_Storage_Exception
     */
    protected function _getInfoString(&$flags)
    {
        // accessing keys is easier, faster and it removes duplicated flags
        $wanted_flags = array_flip($flags);
        if (isset($wanted_flags[Zend_Mail_Storage::FLAG_RECENT])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('recent flag may not be set');
        }

        $info = ':2,';
        $flags = array();
        foreach (Zend_Mail_Storage_Maildir::$_knownFlags as $char => $flag) {
            if (!isset($wanted_flags[$flag])) {
                continue;
            }
            $info .= $char;
            $flags[$char] = $flag;
            unset($wanted_flags[$flag]);
        }

        if (!empty($wanted_flags)) {
            $wanted_flags = implode(', ', array_keys($wanted_flags));
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('unknown flag(s): ' . $wanted_flags);
        }

        return $info;
    }

    /**
     * append a new message to mail storage
     *
     * @param   string|stream                              $message message as string or stream resource
     * @param   null|string|Zend_Mail_Storage_Folder       $folder  folder for new message, else current folder is taken
     * @param   null|array                                 $flags   set flags for new message, else a default set is used
     * @param   bool                                       $recent  handle this mail as if recent flag has been set,
     *                                                              should only be used in delivery
     * @throws  Zend_Mail_Storage_Exception
     */
     // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class

    public function appendMessage($message, $folder = null, $flags = null, $recent = false)
    {
        if ($this->_quota && $this->checkQuota()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('storage is over quota!');            
        }

        if ($folder === null) {
            $folder = $this->_currentFolder;
        }

        if (!($folder instanceof Zend_Mail_Storage_Folder)) {
            $folder = $this->getFolders($folder);
        }

        if ($flags === null) {
            $flags = array(Zend_Mail_Storage::FLAG_SEEN);
        }
        $info = $this->_getInfoString($flags);
        $temp_file = $this->_createTmpFile($folder->getGlobalName());

        // TODO: handle class instances for $message
        if (is_resource($message) && get_resource_type($message) == 'stream') {
            stream_copy_to_stream($message, $temp_file['handle']);
        } else {
            fputs($temp_file['handle'], $message);
        }
        fclose($temp_file['handle']);

        // we're adding the size to the filename for maildir++
        $size = filesize($temp_file['filename']);
        if ($size !== false) {
            $info = ',S=' . $size . $info;
        }
        $new_filename = $temp_file['dirname'] . DIRECTORY_SEPARATOR;
        $new_filename .= $recent ? 'new' : 'cur';
        $new_filename .= DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info;

        // we're throwing any exception after removing our temp file and saving it to this variable instead
        $exception = null;

        if (!link($temp_file['filename'], $new_filename)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            $exception = new Zend_Mail_Storage_Exception('cannot link message file to final dir');
        }
        @unlink($temp_file['filename']);

        if ($exception) {
            throw $exception;
        }

        $this->_files[] = array('uniq'     => $temp_file['uniq'],
                                'flags'    => $flags,
                                'filename' => $new_filename);
        if ($this->_quota) {
            $this->_addQuotaEntry((int)$size, 1);
        }
    }

    /**
     * copy an existing message
     *
     * @param   int                             $id     number of message
     * @param   string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return  null
     * @throws  Zend_Mail_Storage_Exception
     */
    public function copyMessage($id, $folder)
    {
        if ($this->_quota && $this->checkQuota()) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('storage is over quota!');            
        }
    
        if (!($folder instanceof Zend_Mail_Storage_Folder)) {
            $folder = $this->getFolders($folder);
        }

        $filedata = $this->_getFileData($id);
        $old_file = $filedata['filename'];
        $flags = $filedata['flags'];

        // copied message can't be recent
        while (($key = array_search(Zend_Mail_Storage::FLAG_RECENT, $flags)) !== false) {
            unset($flags[$key]);
        }
        $info = $this->_getInfoString($flags);

        // we're creating the copy as temp file before moving to cur/
        $temp_file = $this->_createTmpFile($folder->getGlobalName());
        // we don't write directly to the file
        fclose($temp_file['handle']);

        // we're adding the size to the filename for maildir++
        $size = filesize($old_file);
        if ($size !== false) {
            $info = ',S=' . $size . $info;
        }

        $new_file = $temp_file['dirname'] . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info;

        // we're throwing any exception after removing our temp file and saving it to this variable instead
        $exception = null;

        if (!copy($old_file, $temp_file['filename'])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            $exception = new Zend_Mail_Storage_Exception('cannot copy message file');
        } else if (!link($temp_file['filename'], $new_file)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            $exception = new Zend_Mail_Storage_Exception('cannot link message file to final dir');
        }
        @unlink($temp_file['filename']);

        if ($exception) {
            throw $exception;
        }

        if ($folder->getGlobalName() == $this->_currentFolder
            || ($this->_currentFolder == 'INBOX' && $folder->getGlobalName() == '/')) {
            $this->_files[] = array('uniq'     => $temp_file['uniq'],
                                    'flags'    => $flags,
                                    'filename' => $new_file);
        }
        
        if ($this->_quota) {
            $this->_addQuotaEntry((int)$size, 1);
        }
    }

    /**
     * move an existing message
     *
     * @param  int                             $id     number of message
     * @param  string|Zend_Mail_Storage_Folder $folder name or instance of targer folder
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function moveMessage($id, $folder) {
        if (!($folder instanceof Zend_Mail_Storage_Folder)) {
            $folder = $this->getFolders($folder);
        }
        
        if ($folder->getGlobalName() == $this->_currentFolder
            || ($this->_currentFolder == 'INBOX' && $folder->getGlobalName() == '/')) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('target is current folder');
        }
        
        $filedata = $this->_getFileData($id);
        $old_file = $filedata['filename'];
        $flags = $filedata['flags'];

        // moved message can't be recent
        while (($key = array_search(Zend_Mail_Storage::FLAG_RECENT, $flags)) !== false) {
            unset($flags[$key]);
        }
        $info = $this->_getInfoString($flags);

        // reserving a new name
        $temp_file = $this->_createTmpFile($folder->getGlobalName());
        fclose($temp_file['handle']);

        // we're adding the size to the filename for maildir++
        $size = filesize($old_file);
        if ($size !== false) {
            $info = ',S=' . $size . $info;
        }

        $new_file = $temp_file['dirname'] . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info;

        // we're throwing any exception after removing our temp file and saving it to this variable instead
        $exception = null;

        if (!rename($old_file, $new_file)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            $exception = new Zend_Mail_Storage_Exception('cannot move message file');
        }
        @unlink($temp_file['filename']);

        if ($exception) {
            throw $exception;
        }

        unset($this->_files[$id - 1]);
        // remove the gap
        $this->_files = array_values($this->_files);
    }


    /**
     * set flags for message
     *
     * NOTE: this method can't set the recent flag.
     *
     * @param   int   $id    number of message
     * @param   array $flags new flags for message
     * @throws  Zend_Mail_Storage_Exception
     */
    public function setFlags($id, $flags)
    {
        $info = $this->_getInfoString($flags);
        $filedata = $this->_getFileData($id);

        // NOTE: double dirname to make sure we always move to cur. if recent flag has been set (message is in new) it will be moved to cur.
        $new_filename = dirname(dirname($filedata['filename'])) . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . "$filedata[uniq]$info";

        if (!@rename($filedata['filename'], $new_filename)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot rename file');
        }

        $filedata['flags']    = $flags;
        $filedata['filename'] = $new_filename;

        $this->_files[$id - 1] = $filedata;
    }


    /**
     * stub for not supported message deletion
     *
     * @return  null
     * @throws  Zend_Mail_Storage_Exception
     */
    public function removeMessage($id)
    {
        $filename = $this->_getFileData($id, 'filename');
        
        if ($this->_quota) {
            $size = filesize($filename);
        }
        
        if (!@unlink($filename)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot remove message');
        }
        unset($this->_files[$id - 1]);
        // remove the gap
        $this->_files = array_values($this->_files);
        if ($this->_quota) {
            $this->_addQuotaEntry(0 - (int)$size, -1);
        }
    }
    
    /**
     * enable/disable quota and set a quota value if wanted or needed
     *
     * You can enable/disable quota with true/false. If you don't have
     * a MDA or want to enforce a quota value you can also set this value
     * here. Use array('size' => SIZE_QUOTA, 'count' => MAX_MESSAGE) do
     * define your quota. Order of these fields does matter!
     *
     * @param bool|array $value new quota value
     * @return null
     */
    public function setQuota($value) {
        $this->_quota = $value;
    }
    
    /**
     * get currently set quota
     *
     * @see Zend_Mail_Storage_Writable_Maildir::setQuota()
     *
     * @return bool|array
     */
    public function getQuota($fromStorage = false) {
        if ($fromStorage) {
            $fh = @fopen($this->_rootdir . 'maildirsize', 'r');
            if (!$fh) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('cannot open maildirsize');
            }
            $definition = fgets($fh);
            fclose($fh);
            $definition = explode(',', trim($definition));
            $quota = array();
            foreach ($definition as $member) {
                $key = $member[strlen($member) - 1];
                if ($key == 'S' || $key == 'C') {
                    $key = $key == 'C' ? 'count' : 'size';
                }
                $quota[$key] = substr($member, 0, -1);
            }
            return $quota;
        }
        
        return $this->_quota;
    }
    
    /**
     * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating maildirsize"
     */
    protected function _calculateMaildirsize() {
        $timestamps = array();
        $messages = 0;
        $total_size = 0;

        if (is_array($this->_quota)) {
            $quota = $this->_quota;
        } else {
            try {
                $quota = $this->getQuota(true);
            } catch (Zend_Mail_Storage_Exception $e) {
                throw new Zend_Mail_Storage_Exception('no quota defintion found');
            }
        }
        
        $folders = new RecursiveIteratorIterator($this->getFolders(), RecursiveIteratorIterator::SELF_FIRST);
        foreach ($folders as $folder) {
            $subdir = $folder->getGlobalName();
            if ($subdir == 'INBOX') {
                $subdir = '';
            } else {
                $subdir = '.' . $subdir;
            }
            if ($subdir == 'Trash') {
                continue;
            }
            
            foreach (array('cur', 'new') as $subsubdir) {
                $dirname = $this->_rootdir . $subdir . DIRECTORY_SEPARATOR . $subsubdir . DIRECTORY_SEPARATOR;
                if (!file_exists($dirname)) {
                    continue;
                }
                // NOTE: we are using mtime instead of "the latest timestamp". The latest would be atime
                // and as we are accessing the directory it would make the whole calculation useless.    
                $timestamps[$dirname] = filemtime($dirname);

                $dh = opendir($dirname);
                // NOTE: Should have been checked in constructor. Not throwing an exception here, quotas will 
                // therefore not be fully enforeced, but next request will fail anyway, if problem persists.
                if (!$dh) {
                    continue;
                }
                
                                
                while (($entry = readdir()) !== false) {
                    if ($entry[0] == '.' || !is_file($dirname . $entry)) {
                        continue;
                    }
                    
                    if (strpos($entry, ',S=')) {
                        strtok($entry, '=');
                        $filesize = strtok(':');
                        if (is_numeric($filesize)) {
                            $total_size += $filesize;
                            ++$messages;
                            continue;
                        }
                    }
                    $size = filesize($dirname . $entry);
                    if ($size === false) {
                        // ignore, as we assume file got removed
                        continue;
                    }
                    $total_size += $size;
                    ++$messages;
                }
            }
        }
        
        $tmp = $this->_createTmpFile();
        $fh = $tmp['handle'];
        $definition = array();
        foreach ($quota as $type => $value) {
            if ($type == 'size' || $type == 'count') {
                $type = $type == 'count' ? 'C' : 'S';
            }
            $definition[] = $value . $type;
        }
        $definition = implode(',', $definition);
        fputs($fh, "$definition\n");
        fputs($fh, "$total_size $messages\n");
        fclose($fh);
        rename($tmp['filename'], $this->_rootdir . 'maildirsize');
        foreach ($timestamps as $dir => $timestamp) {
            if ($timestamp < filemtime($dir)) {
                unlink($this->_rootdir . 'maildirsize');
                break;
            }
        }
        
        return array('size' => $total_size, 'count' => $messages, 'quota' => $quota);
    }
    
    /**
     * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating the quota for a Maildir++"
     */
    protected function _calculateQuota($forceRecalc = false) {
        $fh = null;
        $total_size = 0;
        $messages   = 0;
        $maildirsize = '';
        if (!$forceRecalc && file_exists($this->_rootdir . 'maildirsize') && filesize($this->_rootdir . 'maildirsize') < 5120) {
            $fh = fopen($this->_rootdir . 'maildirsize', 'r');
        }
        if ($fh) {
            $maildirsize = fread($fh, 5120);
            if (strlen($maildirsize) >= 5120) {
                fclose($fh);
                $fh = null;
                $maildirsize = '';
            }
        }
        if (!$fh) {
            $result = $this->_calculateMaildirsize();
            $total_size = $result['size'];
            $messages   = $result['count'];
            $quota      = $result['quota'];
        } else {
            $maildirsize = explode("\n", $maildirsize);
            if (is_array($this->_quota)) {
                $quota = $this->_quota;
            } else {
                $definition = explode(',', $maildirsize[0]);
                $quota = array();
                foreach ($definition as $member) {
                    $key = $member[strlen($member) - 1];
                    if ($key == 'S' || $key == 'C') {
                        $key = $key == 'C' ? 'count' : 'size';
                    }
                    $quota[$key] = substr($member, 0, -1);
                }
            }
            unset($maildirsize[0]);
            foreach ($maildirsize as $line) {
                list($size, $count) = explode(' ', trim($line));
                $total_size += $size;
                $messages   += $count;
            }
        }
        
        $over_quota = false;
        $over_quota = $over_quota || (isset($quota['size'])  && $total_size > $quota['size']); 
        $over_quota = $over_quota || (isset($quota['count']) && $messages   > $quota['count']);
        // NOTE: $maildirsize equals false if it wasn't set (AKA we recalculated) or it's only
        // one line, because $maildirsize[0] gets unsetted.
        // Also we're using local time to calculate the 15 minute offset. Touching a file just for known the
        // local time of the file storage isn't worth the hassle.
        if ($over_quota && ($maildirsize || filemtime($this->_rootdir . 'maildirsize') > time() - 900)) {
            $result = $this->_calculateMaildirsize();
            $total_size = $result['size'];
            $messages   = $result['count'];
            $quota      = $result['quota'];
            $over_quota = false;
            $over_quota = $over_quota || (isset($quota['size'])  && $total_size > $quota['size']); 
            $over_quota = $over_quota || (isset($quota['count']) && $messages   > $quota['count']);
        }
        
        if ($fh) {
            // TODO is there a safe way to keep the handle open for writing?
            fclose($fh);
        }
        
        return array('size' => $total_size, 'count' => $messages, 'quota' => $quota, 'over_quota' => $over_quota);
    }
    
    protected function _addQuotaEntry($size, $count = 1) {
        if (!file_exists($this->_rootdir . 'maildirsize')) {
            // TODO: should get file handler from _calculateQuota
        }
        $size = (int)$size;
        $count = (int)$count;
        file_put_contents($this->_rootdir . 'maildirsize', "$size $count\n", FILE_APPEND);
    }
    
    /**
     * check if storage is currently over quota
     *
     * @param bool $detailedResponse return known data of quota and current size and message count @see _calculateQuota()
     * @return bool|array over quota state or detailed response
     */
    public function checkQuota($detailedResponse = false, $forceRecalc = false) {
        $result = $this->_calculateQuota($forceRecalc);
        return $detailedResponse ? $result : $result['over_quota'];
    }
}
PKpG[�5�3�3Mail/Storage/Mbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mbox.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Loader
 * May be used in constructor, but commented out for now
 */
// require_once 'Zend/Loader.php';

/**
 * @see Zend_Mail_Storage_Abstract
 */
require_once 'Zend/Mail/Storage/Abstract.php';

/**
 * @see Zend_Mail_Message_File
 */
require_once 'Zend/Mail/Message/File.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Mbox extends Zend_Mail_Storage_Abstract
{
    /**
     * file handle to mbox file
     * @var null|resource
     */
    protected $_fh;

    /**
     * filename of mbox file for __wakeup
     * @var string
     */
    protected $_filename;

    /**
     * modification date of mbox file for __wakeup
     * @var int
     */
    protected $_filemtime;

    /**
     * start and end position of messages as array('start' => start, 'seperator' => headersep, 'end' => end)
     * @var array
     */
    protected $_positions;

    /**
     * used message class, change it in an extened class to extend the returned message class
     * @var string
     */
    protected $_messageClass = 'Zend_Mail_Message_File';

    /**
     * Count messages all messages in current box
     *
     * @return int number of messages
     * @throws Zend_Mail_Storage_Exception
     */
    public function countMessages()
    {
        return count($this->_positions);
    }


    /**
     * Get a list of messages with number and size
     *
     * @param  int|null $id  number of message or null for all messages
     * @return int|array size of given message of list with all messages as array(num => size)
     */
    public function getSize($id = 0)
    {
        if ($id) {
            $pos = $this->_positions[$id - 1];
            return $pos['end'] - $pos['start'];
        }

        $result = array();
        foreach ($this->_positions as $num => $pos) {
            $result[$num + 1] = $pos['end'] - $pos['start'];
        }

        return $result;
    }


    /**
     * Get positions for mail message or throw exeption if id is invalid
     *
     * @param int $id number of message
     * @return array positions as in _positions
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _getPos($id)
    {
        if (!isset($this->_positions[$id - 1])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('id does not exist');
        }

        return $this->_positions[$id - 1];
    }


    /**
     * Fetch a message
     *
     * @param  int $id number of message
     * @return Zend_Mail_Message_File
     * @throws Zend_Mail_Storage_Exception
     */
    public function getMessage($id)
    {
        // TODO that's ugly, would be better to let the message class decide
        if (strtolower($this->_messageClass) == 'zend_mail_message_file' || is_subclass_of($this->_messageClass, 'zend_mail_message_file')) {
            // TODO top/body lines
            $messagePos = $this->_getPos($id);
            return new $this->_messageClass(array('file' => $this->_fh, 'startPos' => $messagePos['start'],
                                                  'endPos' => $messagePos['end']));
        }

        $bodyLines = 0; // TODO: need a way to change that

        $message = $this->getRawHeader($id);
        // file pointer is after headers now
        if ($bodyLines) {
            $message .= "\n";
            while ($bodyLines-- && ftell($this->_fh) < $this->_positions[$id - 1]['end']) {
                $message .= fgets($this->_fh);
            }
        }

        return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $message));
    }

    /*
     * Get raw header of message or part
     *
     * @param  int               $id       number of message
     * @param  null|array|string $part     path to part or null for messsage header
     * @param  int               $topLines include this many lines with header (after an empty line)
     * @return string raw header
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawHeader($id, $part = null, $topLines = 0)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }
        $messagePos = $this->_getPos($id);
        // TODO: toplines
        return stream_get_contents($this->_fh, $messagePos['separator'] - $messagePos['start'], $messagePos['start']);
    }

    /*
     * Get raw content of message or part
     *
     * @param  int               $id   number of message
     * @param  null|array|string $part path to part or null for messsage content
     * @return string raw content
     * @throws Zend_Mail_Protocol_Exception
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawContent($id, $part = null)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }
        $messagePos = $this->_getPos($id);
        return stream_get_contents($this->_fh, $messagePos['end'] - $messagePos['separator'], $messagePos['separator']);
    }

    /**
     * Create instance with parameters
     * Supported parameters are:
     *   - filename filename of mbox file
     *
     * @param  $params array mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }
    
        if (!isset($params->filename) /* || Zend_Loader::isReadable($params['filename']) */) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('no valid filename given in params');
        }

        $this->_openMboxFile($params->filename);
        $this->_has['top']      = true;
        $this->_has['uniqueid'] = false;
    }

    /**
     * check if given file is a mbox file
     *
     * if $file is a resource its file pointer is moved after the first line
     *
     * @param  resource|string $file stream resource of name of file
     * @param  bool $fileIsString file is string or resource
     * @return bool file is mbox file
     */
    protected function _isMboxFile($file, $fileIsString = true)
    {
        if ($fileIsString) {
            $file = @fopen($file, 'r');
            if (!$file) {
                return false;
            }
        } else {
            fseek($file, 0);
        }

        $result = false;

        $line = fgets($file);
        if (strpos($line, 'From ') === 0) {
            $result = true;
        }

        if ($fileIsString) {
            @fclose($file);
        }

        return $result;
    }

    /**
     * open given file as current mbox file
     *
     * @param  string $filename filename of mbox file
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _openMboxFile($filename)
    {
        if ($this->_fh) {
            $this->close();
        }

        $this->_fh = @fopen($filename, 'r');
        if (!$this->_fh) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot open mbox file');
        }
        $this->_filename = $filename;
        $this->_filemtime = filemtime($this->_filename);

        if (!$this->_isMboxFile($this->_fh, false)) {
            @fclose($this->_fh);
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('file is not a valid mbox format');
        }

        $messagePos = array('start' => ftell($this->_fh), 'separator' => 0, 'end' => 0);
        while (($line = fgets($this->_fh)) !== false) {
            if (strpos($line, 'From ') === 0) {
                $messagePos['end'] = ftell($this->_fh) - strlen($line) - 2; // + newline
                if (!$messagePos['separator']) {
                    $messagePos['separator'] = $messagePos['end'];
                }
                $this->_positions[] = $messagePos;
                $messagePos = array('start' => ftell($this->_fh), 'separator' => 0, 'end' => 0);
            }
            if (!$messagePos['separator'] && !trim($line)) {
                $messagePos['separator'] = ftell($this->_fh);
            }
        }

        $messagePos['end'] = ftell($this->_fh);
        if (!$messagePos['separator']) {
            $messagePos['separator'] = $messagePos['end'];
        }
        $this->_positions[] = $messagePos;
    }

    /**
     * Close resource for mail lib. If you need to control, when the resource
     * is closed. Otherwise the destructor would call this.
     *
     * @return void
     */
    public function close()
    {
        @fclose($this->_fh);
        $this->_positions = array();
    }


    /**
     * Waste some CPU cycles doing nothing.
     *
     * @return void
     */
    public function noop()
    {
        return true;
    }


    /**
     * stub for not supported message deletion
     *
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function removeMessage($id)
    {
        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('mbox is read-only');
    }

    /**
     * get unique id for one or all messages
     *
     * Mbox does not support unique ids (yet) - it's always the same as the message number.
     * That shouldn't be a problem, because we can't change mbox files. Therefor the message
     * number is save enough.
     *
     * @param int|null $id message number
     * @return array|string message number for given message or all messages as array
     * @throws Zend_Mail_Storage_Exception
     */
    public function getUniqueId($id = null)
    {
        if ($id) {
            // check if id exists
            $this->_getPos($id);
            return $id;
        }

        $range = range(1, $this->countMessages());
        return array_combine($range, $range);
    }

    /**
     * get a message number from a unique id
     *
     * I.e. if you have a webmailer that supports deleting messages you should use unique ids
     * as parameter and use this method to translate it to message number right before calling removeMessage()
     *
     * @param string $id unique id
     * @return int message number
     * @throws Zend_Mail_Storage_Exception
     */
    public function getNumberByUniqueId($id)
    {
        // check if id exists
        $this->_getPos($id);
        return $id;
    }

    /**
     * magic method for serialize()
     *
     * with this method you can cache the mbox class
     *
     * @return array name of variables
     */
    public function __sleep()
    {
        return array('_filename', '_positions', '_filemtime');
    }

    /**
     * magic method for unserialize()
     *
     * with this method you can cache the mbox class
     * for cache validation the mtime of the mbox file is used
     *
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function __wakeup()
    {
        if ($this->_filemtime != @filemtime($this->_filename)) {
            $this->close();
            $this->_openMboxFile($this->_filename);
        } else {
            $this->_fh = @fopen($this->_filename, 'r');
            if (!$this->_fh) {
                /**
                 * @see Zend_Mail_Storage_Exception
                 */
                require_once 'Zend/Mail/Storage/Exception.php';
                throw new Zend_Mail_Storage_Exception('cannot open mbox file');
            }
        }
    }

}
PKpG[κj)�8�8Mail/Storage/Maildir.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Maildir.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Mail_Storage_Abstract
 */
require_once 'Zend/Mail/Storage/Abstract.php';

/**
 * @see Zend_Mail_Message_File
 */
require_once 'Zend/Mail/Message/File.php';

/**
 * @see Zend_Mail_Storage
 */
require_once 'Zend/Mail/Storage.php';


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail_Storage_Maildir extends Zend_Mail_Storage_Abstract
{
    /**
     * used message class, change it in an extened class to extend the returned message class
     * @var string
     */
    protected $_messageClass = 'Zend_Mail_Message_File';

    /**
     * data of found message files in maildir dir
     * @var array
     */
    protected $_files = array();

    /**
     * known flag chars in filenames
     *
     * This list has to be in alphabetical order for setFlags()
     *
     * @var array
     */
    protected static $_knownFlags = array('D' => Zend_Mail_Storage::FLAG_DRAFT,
                                          'F' => Zend_Mail_Storage::FLAG_FLAGGED,
                                          'P' => Zend_Mail_Storage::FLAG_PASSED,
                                          'R' => Zend_Mail_Storage::FLAG_ANSWERED,
                                          'S' => Zend_Mail_Storage::FLAG_SEEN,
                                          'T' => Zend_Mail_Storage::FLAG_DELETED);
                                          
    // TODO: getFlags($id) for fast access if headers are not needed (i.e. just setting flags)?

    /**
     * Count messages all messages in current box
     *
     * @return int number of messages
     * @throws Zend_Mail_Storage_Exception
     */
    public function countMessages($flags = null)
    {
        if ($flags === null) {
            return count($this->_files);
        }

        $count = 0;                
        if (!is_array($flags)) {
            foreach ($this->_files as $file) {
                if (isset($file['flaglookup'][$flags])) {
                    ++$count;
                }
            }
            return $count;
        }
        
        $flags = array_flip($flags);
           foreach ($this->_files as $file) {
               foreach ($flags as $flag => $v) {
                   if (!isset($file['flaglookup'][$flag])) {
                       continue 2;
                   }
               }
               ++$count;
           }
           return $count;
    }

    /**
     * Get one or all fields from file structure. Also checks if message is valid
     *
     * @param  int         $id    message number
     * @param  string|null $field wanted field
     * @return string|array wanted field or all fields as array
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _getFileData($id, $field = null)
    {
        if (!isset($this->_files[$id - 1])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('id does not exist');
        }

        if (!$field) {
            return $this->_files[$id - 1];
        }

        if (!isset($this->_files[$id - 1][$field])) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('field does not exist');
        }

        return $this->_files[$id - 1][$field];
    }

    /**
     * Get a list of messages with number and size
     *
     * @param  int|null $id number of message or null for all messages
     * @return int|array size of given message of list with all messages as array(num => size)
     * @throws Zend_Mail_Storage_Exception
     */
    public function getSize($id = null)
    {
        if ($id !== null) {
            $filedata = $this->_getFileData($id);
            return isset($filedata['size']) ? $filedata['size'] : filesize($filedata['filename']);
        }

        $result = array();
        foreach ($this->_files as $num => $data) {
            $result[$num + 1] = isset($data['size']) ? $data['size'] : filesize($data['filename']);
        }

        return $result;
    }



    /**
     * Fetch a message
     *
     * @param  int $id number of message
     * @return Zend_Mail_Message_File
     * @throws Zend_Mail_Storage_Exception
     */
    public function getMessage($id)
    {
        // TODO that's ugly, would be better to let the message class decide
        if (strtolower($this->_messageClass) == 'zend_mail_message_file' || is_subclass_of($this->_messageClass, 'zend_mail_message_file')) {
            return new $this->_messageClass(array('file'  => $this->_getFileData($id, 'filename'),
                                                  'flags' => $this->_getFileData($id, 'flags')));
        }
        
        return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $this->getRawHeader($id),
                                              'flags'   => $this->_getFileData($id, 'flags')));
    }

    /*
     * Get raw header of message or part
     *
     * @param  int               $id       number of message
     * @param  null|array|string $part     path to part or null for messsage header
     * @param  int               $topLines include this many lines with header (after an empty line)
     * @return string raw header
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawHeader($id, $part = null, $topLines = 0)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        $fh = fopen($this->_getFileData($id, 'filename'), 'r');

        $content = '';
        while (!feof($fh)) {
            $line = fgets($fh);
            if (!trim($line)) {
                break;
            }
            $content .= $line;
        }

        fclose($fh);
        return $content;
    }

    /*
     * Get raw content of message or part
     *
     * @param  int               $id   number of message
     * @param  null|array|string $part path to part or null for messsage content
     * @return string raw content
     * @throws Zend_Mail_Storage_Exception
     */
    public function getRawContent($id, $part = null)
    {
        if ($part !== null) {
            // TODO: implement
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('not implemented');
        }

        $fh = fopen($this->_getFileData($id, 'filename'), 'r');

        while (!feof($fh)) {
            $line = fgets($fh);
            if (!trim($line)) {
                break;
            }
        }

        $content = stream_get_contents($fh);
        fclose($fh);
        return $content;
    }

    /**
     * Create instance with parameters
     * Supported parameters are:
     *   - dirname dirname of mbox file
     *
     * @param  $params array mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    public function __construct($params)
    {
        if (is_array($params)) {
            $params = (object)$params;
        }

        if (!isset($params->dirname) || !is_dir($params->dirname)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('no valid dirname given in params');
        }

        if (!$this->_isMaildir($params->dirname)) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('invalid maildir given');
        }

        $this->_has['top'] = true;
        $this->_has['flags'] = true;
        $this->_openMaildir($params->dirname);
    }

    /**
     * check if a given dir is a valid maildir
     *
     * @param string $dirname name of dir
     * @return bool dir is valid maildir
     */
    protected function _isMaildir($dirname)
    {
        if (file_exists($dirname . '/new') && !is_dir($dirname . '/new')) {
            return false;
        }
        if (file_exists($dirname . '/tmp') && !is_dir($dirname . '/tmp')) {
            return false;
        }
        return is_dir($dirname . '/cur');
    }

    /**
     * open given dir as current maildir
     *
     * @param string $dirname name of maildir
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    protected function _openMaildir($dirname)
    {
        if ($this->_files) {
            $this->close();
        }

        $dh = @opendir($dirname . '/cur/');
        if (!$dh) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot open maildir');
        }
        $this->_getMaildirFiles($dh, $dirname . '/cur/');
        closedir($dh);

        $dh = @opendir($dirname . '/new/');
        if ($dh) {
            $this->_getMaildirFiles($dh, $dirname . '/new/', array(Zend_Mail_Storage::FLAG_RECENT));
            closedir($dh);
        } else if (file_exists($dirname . '/new/')) {
            /**
             * @see Zend_Mail_Storage_Exception
             */
            require_once 'Zend/Mail/Storage/Exception.php';
            throw new Zend_Mail_Storage_Exception('cannot read recent mails in maildir');
        }
    }

    /**
     * find all files in opened dir handle and add to maildir files
     *
     * @param resource $dh            dir handle used for search
     * @param string   $dirname       dirname of dir in $dh
     * @param array    $default_flags default flags for given dir
     * @return null
     */
    protected function _getMaildirFiles($dh, $dirname, $default_flags = array())
    {
        while (($entry = readdir($dh)) !== false) {
            if ($entry[0] == '.' || !is_file($dirname . $entry)) {
                continue;
            }

            @list($uniq, $info) = explode(':', $entry, 2);
            @list(,$size) = explode(',', $uniq, 2);
            if ($size && $size[0] == 'S' && $size[1] == '=') {
                $size = substr($size, 2);
            }
            if (!ctype_digit($size)) {
                $size = null;
            }
            @list($version, $flags) = explode(',', $info, 2);
            if ($version != 2) {
                $flags = '';
            }

            $named_flags = $default_flags;
            $length = strlen($flags);
            for ($i = 0; $i < $length; ++$i) {
                $flag = $flags[$i];
                $named_flags[$flag] = isset(self::$_knownFlags[$flag]) ? self::$_knownFlags[$flag] : $flag;
            }

            $data = array('uniq'       => $uniq,
                          'flags'      => $named_flags,
                          'flaglookup' => array_flip($named_flags),
                          'filename'   => $dirname . $entry);
            if ($size !== null) {
                $data['size'] = (int)$size;
            }
            $this->_files[] = $data;
        }
    }


    /**
     * Close resource for mail lib. If you need to control, when the resource
     * is closed. Otherwise the destructor would call this.
     *
     * @return void
     */
    public function close()
    {
        $this->_files = array();
    }


    /**
     * Waste some CPU cycles doing nothing.
     *
     * @return void
     */
    public function noop()
    {
        return true;
    }


    /**
     * stub for not supported message deletion
     *
     * @return null
     * @throws Zend_Mail_Storage_Exception
     */
    public function removeMessage($id)
    {
        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('maildir is (currently) read-only');
    }

    /**
     * get unique id for one or all messages
     *
     * if storage does not support unique ids it's the same as the message number
     *
     * @param int|null $id message number
     * @return array|string message number for given message or all messages as array
     * @throws Zend_Mail_Storage_Exception
     */
    public function getUniqueId($id = null)
    {
        if ($id) {
            return $this->_getFileData($id, 'uniq');
        }

        $ids = array();
        foreach ($this->_files as $num => $file) {
            $ids[$num + 1] = $file['uniq'];
        }
        return $ids;
    }

    /**
     * get a message number from a unique id
     *
     * I.e. if you have a webmailer that supports deleting messages you should use unique ids
     * as parameter and use this method to translate it to message number right before calling removeMessage()
     *
     * @param string $id unique id
     * @return int message number
     * @throws Zend_Mail_Storage_Exception
     */
    public function getNumberByUniqueId($id)
    {
        foreach ($this->_files as $num => $file) {
            if ($file['uniq'] == $id) {
                return $num + 1;
            }
        }

        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('unique id not found');
    }
}
PKpG[�5�Dl$l$Mail/Storage/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9099 2008-03-30 19:35:47Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Mail
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Mail_Storage_Abstract implements Countable, ArrayAccess, SeekableIterator
{
    /**
     * class capabilities with default values
     * @var array
     */
    protected $_has = array('uniqueid'  => true,
                            'delete'    => false,
                            'create'    => false,
                            'top'       => false,
                            'fetchPart' => true,
                            'flags'     => false);

    /**
     * current iteration position
     * @var int
     */
    protected $_iterationPos = 0;

    /**
     * maximum iteration position (= message count)
     * @var null|int
     */
    protected $_iterationMax = null;

    /**
     * used message class, change it in an extened class to extend the returned message class
     * @var string
     */
    protected $_messageClass = 'Zend_Mail_Message';

    /**
     * Getter for has-properties. The standard has properties
     * are: hasFolder, hasUniqueid, hasDelete, hasCreate, hasTop
     *
     * The valid values for the has-properties are:
     *   - true if a feature is supported
     *   - false if a feature is not supported
     *   - null is it's not yet known or it can't be know if a feature is supported
     *
     * @param  string $var  property name
     * @return bool         supported or not
     * @throws Zend_Mail_Storage_Exception
     */
    public function __get($var)
    {
        if (strpos($var, 'has') === 0) {
            $var = strtolower(substr($var, 3));
            return isset($this->_has[$var]) ? $this->_has[$var] : null;
        }
        
        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception($var . ' not found');
    }


    /**
     * Get a full list of features supported by the specific mail lib and the server
     *
     * @return array list of features as array(featurename => true|false[|null])
     */
    public function getCapabilities()
    {
        return $this->_has;
    }


    /**
     * Count messages messages in current box/folder
     *
     * @return int number of messages
     * @throws Zend_Mail_Storage_Exception
     */
    abstract public function countMessages();


    /**
     * Get a list of messages with number and size
     *
     * @param  int $id  number of message
     * @return int|array size of given message of list with all messages as array(num => size)
     */
    abstract public function getSize($id = 0);


    /**
     * Get a message with headers and body
     *
     * @param  $id int number of message
     * @return Zend_Mail_Message
     */
    abstract public function getMessage($id);


    /**
     * Get raw header of message or part
     *
     * @param  int               $id       number of message
     * @param  null|array|string $part     path to part or null for messsage header
     * @param  int               $topLines include this many lines with header (after an empty line)
     * @return string raw header
     */
    abstract public function getRawHeader($id, $part = null, $topLines = 0);

    /**
     * Get raw content of message or part
     *
     * @param  int               $id   number of message
     * @param  null|array|string $part path to part or null for messsage content
     * @return string raw content
     */
    abstract public function getRawContent($id, $part = null);

    /**
     * Create instance with parameters
     *
     * @param  array $params mail reader specific parameters
     * @throws Zend_Mail_Storage_Exception
     */
    abstract public function __construct($params);


    /**
     * Destructor calls close() and therefore closes the resource.
     */
    public function __destruct()
    {
        $this->close();
    }


    /**
     * Close resource for mail lib. If you need to control, when the resource
     * is closed. Otherwise the destructor would call this.
     *
     * @return null
     */
    abstract public function close();


    /**
     * Keep the resource alive.
     *
     * @return null
     */
    abstract public function noop();

    /**
     * delete a message from current box/folder
     *
     * @return null
     */
    abstract public function removeMessage($id);

    /**
     * get unique id for one or all messages
     *
     * if storage does not support unique ids it's the same as the message number
     *
     * @param int|null $id message number
     * @return array|string message number for given message or all messages as array
     * @throws Zend_Mail_Storage_Exception
     */
    abstract public function getUniqueId($id = null);

    /**
     * get a message number from a unique id
     *
     * I.e. if you have a webmailer that supports deleting messages you should use unique ids
     * as parameter and use this method to translate it to message number right before calling removeMessage()
     *
     * @param string $id unique id
     * @return int message number
     * @throws Zend_Mail_Storage_Exception
     */
    abstract public function getNumberByUniqueId($id);

    // interface implementations follows

    /**
     * Countable::count()
     *
     * @return   int
     */
     public function count()
     {
        return $this->countMessages();
     }


     /**
      * ArrayAccess::offsetExists()
      *
      * @param    int     $id
      * @return   boolean
      */
     public function offsetExists($id)
     {
        try {
            if ($this->getMessage($id)) {
                return true;
            }
        } catch(Zend_Mail_Storage_Exception $e) {}

        return false;
     }


     /**
      * ArrayAccess::offsetGet()
      *
      * @param    int $id
      * @return   Zend_Mail_Message message object
      */
     public function offsetGet($id)
     {
        return $this->getMessage($id);
     }


     /**
      * ArrayAccess::offsetSet()
      *
      * @param    id     $id
      * @param    mixed  $value
      * @throws   Zend_Mail_Storage_Exception
      * @return   void
      */
     public function offsetSet($id, $value)
     {
        /**
         * @see Zend_Mail_Storage_Exception
         */
        require_once 'Zend/Mail/Storage/Exception.php';
        throw new Zend_Mail_Storage_Exception('cannot write mail messages via array access');
     }


     /**
      * ArrayAccess::offsetUnset()
      *
      * @param    int   $id
      * @return   boolean success
      */
     public function offsetUnset($id)
     {
        return $this->removeMessage($id);
     }


     /**
      * Iterator::rewind()
      *
      * Rewind always gets the new count from the storage. Thus if you use
      * the interfaces and your scripts take long you should use reset()
      * from time to time.
      *
      * @return   void
      */
     public function rewind()
     {
        $this->_iterationMax = $this->countMessages();
        $this->_iterationPos = 1;
     }


     /**
      * Iterator::current()
      *
      * @return   Zend_Mail_Message current message
      */
     public function current()
     {
        return $this->getMessage($this->_iterationPos);
     }


     /**
      * Iterator::key()
      *
      * @return   int id of current position
      */
     public function key()
     {
        return $this->_iterationPos;
     }


     /**
      * Iterator::next()
      *
      * @return   void
      */
     public function next()
     {
        ++$this->_iterationPos;
     }


     /**
      * Iterator::valid()
      *
      * @return   boolean
      */
     public function valid()
     {
        if ($this->_iterationMax === null) {
          $this->_iterationMax = $this->countMessages();
        }
        return $this->_iterationPos && $this->_iterationPos <= $this->_iterationMax;
     }


     /**
      * SeekableIterator::seek()
      *
      * @param  int $pos
      * @return void
      * @throws OutOfBoundsException
      */
     public function seek($pos)
     {
        if ($this->_iterationMax === null) {
          $this->_iterationMax = $this->countMessages();
        }

        if ($pos > $this->_iterationMax) {
            throw new OutOfBoundsException('this position does not exist');
        }
        $this->_iterationPos = $pos;
     }

}
PKpG[����$$Uri.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Uri.php 12037 2008-10-20 18:54:44Z shahar $
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * Abstract class for all Zend_Uri handlers
 *
 * @category  Zend
 * @package   Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Uri
{
    /**
     * Scheme of this URI (http, ftp, etc.)
     *
     * @var string
     */
    protected $_scheme = '';

    /**
     * Global configuration array
     *
     * @var array
     */
    static protected $_config = array(
        'allow_unwise' => false
    );
    
    /**
     * Return a string representation of this URI.
     *
     * @see    getUri()
     * @return string
     */
    public function __toString()
    {
        return $this->getUri();
    }

    /**
     * Convenience function, checks that a $uri string is well-formed
     * by validating it but not returning an object.  Returns TRUE if
     * $uri is a well-formed URI, or FALSE otherwise.
     *
     * @param  string $uri The URI to check
     * @return boolean
     */
    public static function check($uri)
    {
        try {
            $uri = self::factory($uri);
        } catch (Exception $e) {
            return false;
        }

        return $uri->valid();
    }

    /**
     * Create a new Zend_Uri object for a URI.  If building a new URI, then $uri should contain
     * only the scheme (http, ftp, etc).  Otherwise, supply $uri with the complete URI.
     *
     * @param  string $uri The URI form which a Zend_Uri instance is created
     * @throws Zend_Uri_Exception When an empty string was supplied for the scheme
     * @throws Zend_Uri_Exception When an illegal scheme is supplied
     * @throws Zend_Uri_Exception When the scheme is not supported
     * @return Zend_Uri
     * @link   http://www.faqs.org/rfcs/rfc2396.html
     */
    public static function factory($uri = 'http')
    {
        // Separate the scheme from the scheme-specific parts
        $uri            = explode(':', $uri, 2);
        $scheme         = strtolower($uri[0]);
        $schemeSpecific = isset($uri[1]) === true ? $uri[1] : '';

        if (strlen($scheme) === 0) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('An empty string was supplied for the scheme');
        }

        // Security check: $scheme is used to load a class file, so only alphanumerics are allowed.
        if (ctype_alnum($scheme) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Illegal scheme supplied, only alphanumeric characters are permitted');
        }

        /**
         * Create a new Zend_Uri object for the $uri. If a subclass of Zend_Uri exists for the
         * scheme, return an instance of that class. Otherwise, a Zend_Uri_Exception is thrown.
         */
        switch ($scheme) {
            case 'http':
                // Break intentionally omitted
            case 'https':
                $className = 'Zend_Uri_Http';
                break;

            case 'mailto':
                // TODO
            default:
                require_once 'Zend/Uri/Exception.php';
                throw new Zend_Uri_Exception("Scheme \"$scheme\" is not supported");
                break;
        }

        Zend_Loader::loadClass($className);
        $schemeHandler = new $className($scheme, $schemeSpecific);

        return $schemeHandler;
    }

    /**
     * Get the URI's scheme
     *
     * @return string|false Scheme or false if no scheme is set.
     */
    public function getScheme()
    {
        if (empty($this->_scheme) === false) {
            return $this->_scheme;
        } else {
            return false;
        }
    }

    /**
     * Set global configuration options
     *
     * @param array $config
     */
    static public function setConfig(array $config)
    {
        foreach ($config as $k => $v) {
            self::$_config[$k] = $v;
        }
    }
    
    /**
     * Zend_Uri and its subclasses cannot be instantiated directly.
     * Use Zend_Uri::factory() to return a new Zend_Uri object.
     *
     * @param string $scheme         The scheme of the URI
     * @param string $schemeSpecific The scheme-specific part of the URI
     */
    abstract protected function __construct($scheme, $schemeSpecific = '');

    /**
     * Return a string representation of this URI.
     *
     * @return string
     */
    abstract public function getUri();

    /**
     * Returns TRUE if this URI is valid, or FALSE otherwise.
     *
     * @return boolean
     */
    abstract public function valid();
}
PKpG[�yttValidate/NotEmpty.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NotEmpty.php 13249 2008-12-14 19:29:40Z thomas $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_NotEmpty extends Zend_Validate_Abstract
{
    const IS_EMPTY = 'isEmpty';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::IS_EMPTY => "Value is required and can't be empty"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is not an empty value.
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue((string) $value);

        if (is_string($value)
            && (('' === $value)
                || preg_match('/^\s+$/s', $value))
        ) {
            $this->_error();
            return false;
        } elseif (!is_string($value) && empty($value)) {
            $this->_error();
            return false;
        }

        return true;
    }

}
PKpG[���ddValidate/Between.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Between.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Between extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value is not between the min and max, inclusively
     */
    const NOT_BETWEEN        = 'notBetween';

    /**
     * Validation failure message key for when the value is not strictly between the min and max
     */
    const NOT_BETWEEN_STRICT = 'notBetweenStrict';

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_BETWEEN        => "'%value%' is not between '%min%' and '%max%', inclusively",
        self::NOT_BETWEEN_STRICT => "'%value%' is not strictly between '%min%' and '%max%'"
    );

    /**
     * Additional variables available for validation failure messages
     *
     * @var array
     */
    protected $_messageVariables = array(
        'min' => '_min',
        'max' => '_max'
    );

    /**
     * Minimum value
     *
     * @var mixed
     */
    protected $_min;

    /**
     * Maximum value
     *
     * @var mixed
     */
    protected $_max;

    /**
     * Whether to do inclusive comparisons, allowing equivalence to min and/or max
     *
     * If false, then strict comparisons are done, and the value may equal neither
     * the min nor max options
     *
     * @var boolean
     */
    protected $_inclusive;

    /**
     * Sets validator options
     *
     * @param  mixed   $min
     * @param  mixed   $max
     * @param  boolean $inclusive
     * @return void
     */
    public function __construct($min, $max, $inclusive = true)
    {
        $this->setMin($min)
             ->setMax($max)
             ->setInclusive($inclusive);
    }

    /**
     * Returns the min option
     *
     * @return mixed
     */
    public function getMin()
    {
        return $this->_min;
    }

    /**
     * Sets the min option
     *
     * @param  mixed $min
     * @return Zend_Validate_Between Provides a fluent interface
     */
    public function setMin($min)
    {
        $this->_min = $min;
        return $this;
    }

    /**
     * Returns the max option
     *
     * @return mixed
     */
    public function getMax()
    {
        return $this->_max;
    }

    /**
     * Sets the max option
     *
     * @param  mixed $max
     * @return Zend_Validate_Between Provides a fluent interface
     */
    public function setMax($max)
    {
        $this->_max = $max;
        return $this;
    }

    /**
     * Returns the inclusive option
     *
     * @return boolean
     */
    public function getInclusive()
    {
        return $this->_inclusive;
    }

    /**
     * Sets the inclusive option
     *
     * @param  boolean $inclusive
     * @return Zend_Validate_Between Provides a fluent interface
     */
    public function setInclusive($inclusive)
    {
        $this->_inclusive = $inclusive;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is between min and max options, inclusively
     * if inclusive option is true.
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);

        if ($this->_inclusive) {
            if ($this->_min > $value || $value > $this->_max) {
                $this->_error(self::NOT_BETWEEN);
                return false;
            }
        } else {
            if ($this->_min >= $value || $value >= $this->_max) {
                $this->_error(self::NOT_BETWEEN_STRICT);
                return false;
            }
        }
        return true;
    }

}
PKpG[������Validate/Regex.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Regex.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Regex extends Zend_Validate_Abstract
{

    const NOT_MATCH = 'regexNotMatch';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_MATCH => "'%value%' does not match against pattern '%pattern%'"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'pattern' => '_pattern'
    );

    /**
     * Regular expression pattern
     *
     * @var string
     */
    protected $_pattern;

    /**
     * Sets validator options
     *
     * @param  string $pattern
     * @return void
     */
    public function __construct($pattern)
    {
        $this->setPattern($pattern);
    }

    /**
     * Returns the pattern option
     *
     * @return string
     */
    public function getPattern()
    {
        return $this->_pattern;
    }

    /**
     * Sets the pattern option
     *
     * @param  string $pattern
     * @return Zend_Validate_Regex Provides a fluent interface
     */
    public function setPattern($pattern)
    {
        $this->_pattern = (string) $pattern;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value matches against the pattern option
     *
     * @param  string $value
     * @throws Zend_Validate_Exception if there is a fatal error in pattern matching
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        $status = @preg_match($this->_pattern, $valueString);
        if (false === $status) {
            /**
             * @see Zend_Validate_Exception
             */
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("Internal error matching pattern '$this->_pattern' against value '$valueString'");
        }
        if (!$status) {
            $this->_error();
            return false;
        }
        return true;
    }

}
PKpG[��L^^Validate/Alnum.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Alnum.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Alnum extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value contains non-alphabetic or non-digit characters
     */
    const NOT_ALNUM = 'notAlnum';

    /**
     * Validation failure message key for when the value is an empty string
     */
    const STRING_EMPTY = 'stringEmpty';

    /**
     * Whether to allow white space characters; off by default
     *
     * @var boolean
     */
    public $allowWhiteSpace;

    /**
     * Alphanumeric filter used for validation
     *
     * @var Zend_Filter_Alnum
     */
    protected static $_filter = null;

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_ALNUM    => "'%value%' has not only alphabetic and digit characters",
        self::STRING_EMPTY => "'%value%' is an empty string"
    );

    /**
     * Sets default option values for this instance
     *
     * @param  boolean $allowWhiteSpace
     * @return void
     */
    public function __construct($allowWhiteSpace = false)
    {
        $this->allowWhiteSpace = (boolean) $allowWhiteSpace;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains only alphabetic and digit characters
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if ('' === $valueString) {
            $this->_error(self::STRING_EMPTY);
            return false;
        }

        if (null === self::$_filter) {
            /**
             * @see Zend_Filter_Alnum
             */
            require_once 'Zend/Filter/Alnum.php';
            self::$_filter = new Zend_Filter_Alnum();
        }

        self::$_filter->allowWhiteSpace = $this->allowWhiteSpace;

        if ($valueString !== self::$_filter->filter($valueString)) {
            $this->_error(self::NOT_ALNUM);
            return false;
        }

        return true;
    }

}
PKpG[ ��^jjValidate/Date.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Date.php 12062 2008-10-21 17:28:12Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Date extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value does not follow the YYYY-MM-DD format
     */
    const NOT_YYYY_MM_DD = 'dateNotYYYY-MM-DD';

    /**
     * Validation failure message key for when the value does not appear to be a valid date
     */
    const INVALID        = 'dateInvalid';

    /**
     * Validation failure message key for when the value does not fit the given dateformat or locale
     */
    const FALSEFORMAT    = 'dateFalseFormat';

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_YYYY_MM_DD => "'%value%' is not of the format YYYY-MM-DD",
        self::INVALID        => "'%value%' does not appear to be a valid date",
        self::FALSEFORMAT    => "'%value%' does not fit given date format"
    );

    /**
     * Optional format
     *
     * @var string|null
     */
    protected $_format;

    /**
     * Optional locale
     *
     * @var string|Zend_Locale|null
     */
    protected $_locale;

    /**
     * Sets validator options
     *
     * @param  string             $format OPTIONAL
     * @param  string|Zend_Locale $locale OPTIONAL
     * @return void
     */
    public function __construct($format = null, $locale = null)
    {
        $this->setFormat($format);
        $this->setLocale($locale);
    }

    /**
     * Returns the locale option
     *
     * @return string|Zend_Locale|null
     */
    public function getLocale()
    {
        return $this->_locale;
    }

    /**
     * Sets the locale option
     *
     * @param  string|Zend_Locale $locale
     * @return Zend_Validate_Date provides a fluent interface
     */
    public function setLocale($locale = null)
    {
        if ($locale === null) {
            $this->_locale = null;
            return $this;
        }

        require_once 'Zend/Locale.php';
        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The locale '$locale' is no known locale");
            }

            $locale = new Zend_Locale($locale);
        }

        $this->_locale = (string) $locale;
        return $this;
    }

    /**
     * Returns the locale option
     *
     * @return string|null
     */
    public function getFormat()
    {
        return $this->_format;
    }

    /**
     * Sets the format option
     *
     * @param  string $format
     * @return Zend_Validate_Date provides a fluent interface
     */
    public function setFormat($format = null)
    {
        $this->_format = $format;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if $value is a valid date of the format YYYY-MM-DD
     * If optional $format or $locale is set the date format is checked
     * according to Zend_Date, see Zend_Date::isDate()
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if (($this->_format !== null) or ($this->_locale !== null)) {
            require_once 'Zend/Date.php';
            if (!Zend_Date::isDate($value, $this->_format, $this->_locale)) {
                if ($this->_checkFormat($value) === false) {
                    $this->_error(self::FALSEFORMAT);
                } else {
                    $this->_error(self::INVALID);
                }
                return false;
            }
        } else {
            if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $valueString)) {
                $this->_error(self::NOT_YYYY_MM_DD);
                return false;
            }

            list($year, $month, $day) = sscanf($valueString, '%d-%d-%d');

            if (!checkdate($month, $day, $year)) {
                $this->_error(self::INVALID);
                return false;
            }
        }

        return true;
    }

    /**
     * Check if the given date fits the given format
     *
     * @param  string $value  Date to check
     * @return boolean False when date does not fit the format
     */
    private function _checkFormat($value)
    {
        try {
            require_once 'Zend/Locale/Format.php';
            $parsed = Zend_Locale_Format::getDate($value, array(
                                                  'date_format' => $this->_format, 'format_type' => 'iso',
                                                  'fix_date' => false));
            if (isset($parsed['year']) and ((strpos(strtoupper($this->_format), 'YY') !== false) and
                (strpos(strtoupper($this->_format), 'YYYY') === false))) {
                $parsed['year'] = Zend_Date::getFullYear($parsed['year']);
            }
        } catch (Exception $e) {
            // Date can not be parsed
            return false;
        }

        if (((strpos($this->_format, 'Y') !== false) or (strpos($this->_format, 'y') !== false)) and
            (!isset($parsed['year']))) {
            // Year expected but not found
            return false;
        }

        if ((strpos($this->_format, 'M') !== false) and (!isset($parsed['month']))) {
            // Month expected but not found
            return false;
        }

        if ((strpos($this->_format, 'd') !== false) and (!isset($parsed['day']))) {
            // Day expected but not found
            return false;
        }

        if (((strpos($this->_format, 'H') !== false) or (strpos($this->_format, 'h') !== false)) and
            (!isset($parsed['hour']))) {
            // Hour expected but not found
            return false;
        }

        if ((strpos($this->_format, 'm') !== false) and (!isset($parsed['minute']))) {
            // Minute expected but not found
            return false;
        }

        if ((strpos($this->_format, 's') !== false) and (!isset($parsed['second']))) {
            // Second expected  but not found
            return false;
        }

        // Date fits the format
        return true;
    }
}
PKpG[�G@��	�	Validate/LessThan.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: LessThan.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_LessThan extends Zend_Validate_Abstract
{

    const NOT_LESS = 'notLessThan';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_LESS => "'%value%' is not less than '%max%'"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'max' => '_max'
    );

    /**
     * Maximum value
     *
     * @var mixed
     */
    protected $_max;

    /**
     * Sets validator options
     *
     * @param  mixed $max
     * @return void
     */
    public function __construct($max)
    {
        $this->setMax($max);
    }

    /**
     * Returns the max option
     *
     * @return mixed
     */
    public function getMax()
    {
        return $this->_max;
    }

    /**
     * Sets the max option
     *
     * @param  mixed $max
     * @return Zend_Validate_LessThan Provides a fluent interface
     */
    public function setMax($max)
    {
        $this->_max = $max;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is less than max option
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);
        if ($this->_max <= $value) {
            $this->_error();
            return false;
        }
        return true;
    }

}
PKpG[�<΋Q	Q	Validate/Interface.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Validate_Interface
{
    /**
     * Returns true if and only if $value meets the validation requirements
     *
     * If $value fails validation, then this method returns false, and
     * getMessages() will return an array of messages that explain why the
     * validation failed.
     *
     * @param  mixed $value
     * @return boolean
     * @throws Zend_Valid_Exception If validation of $value is impossible
     */
    public function isValid($value);

    /**
     * Returns an array of messages that explain why the most recent isValid()
     * call returned false. The array keys are validation failure message identifiers,
     * and the array values are the corresponding human-readable message strings.
     *
     * If isValid() was never called or if the most recent isValid() call
     * returned true, then this method returns an empty array.
     *
     * @return array
     */
    public function getMessages();

    /**
     * Returns an array of message codes that explain why a previous isValid() call
     * returned false.
     *
     * If isValid() was never called or if the most recent isValid() call
     * returned true, then this method returns an empty array.
     *
     * This is now the same as calling array_keys() on the return value from getMessages().
     *
     * @return array
     * @deprecated Since 1.5.0
     */
    public function getErrors();

}
PKpG[u��;;Validate/Alpha.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Alpha.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Alpha extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value contains non-alphabetic characters
     */
    const NOT_ALPHA = 'notAlpha';

    /**
     * Validation failure message key for when the value is an empty string
     */
    const STRING_EMPTY = 'stringEmpty';

    /**
     * Whether to allow white space characters; off by default
     *
     * @var boolean
     */
    public $allowWhiteSpace;

    /**
     * Alphabetic filter used for validation
     *
     * @var Zend_Filter_Alpha
     */
    protected static $_filter = null;

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_ALPHA    => "'%value%' has not only alphabetic characters",
        self::STRING_EMPTY => "'%value%' is an empty string"
    );

    /**
     * Sets default option values for this instance
     *
     * @param  boolean $allowWhiteSpace
     * @return void
     */
    public function __construct($allowWhiteSpace = false)
    {
        $this->allowWhiteSpace = (boolean) $allowWhiteSpace;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains only alphabetic characters
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if ('' === $valueString) {
            $this->_error(self::STRING_EMPTY);
            return false;
        }

        if (null === self::$_filter) {
            /**
             * @see Zend_Filter_Alpha
             */
            require_once 'Zend/Filter/Alpha.php';
            self::$_filter = new Zend_Filter_Alpha();
        }

        self::$_filter->allowWhiteSpace = $this->allowWhiteSpace;

        if ($valueString !== self::$_filter->filter($valueString)) {
            $this->_error(self::NOT_ALPHA);
            return false;
        }

        return true;
    }

}
PKpG[�S���Validate/Float.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Float.php 8714 2008-03-09 20:03:45Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Float extends Zend_Validate_Abstract
{

    const NOT_FLOAT = 'notFloat';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_FLOAT => "'%value%' does not appear to be a float"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is a floating-point value
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        $locale = localeconv();

        $valueFiltered = str_replace($locale['thousands_sep'], '', $valueString);
        $valueFiltered = str_replace($locale['decimal_point'], '.', $valueFiltered);

        if (strval(floatval($valueFiltered)) != $valueFiltered) {
            $this->_error();
            return false;
        }

        return true;
    }

}
PKpG[�ɌKKValidate/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Exception extends Zend_Exception
{}
PKpG[0TgooValidate/StringLength.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StringLength.php 13278 2008-12-15 19:55:17Z thomas $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_StringLength extends Zend_Validate_Abstract
{
    const TOO_SHORT = 'stringLengthTooShort';
    const TOO_LONG  = 'stringLengthTooLong';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::TOO_SHORT => "'%value%' is less than %min% characters long",
        self::TOO_LONG  => "'%value%' is greater than %max% characters long"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'min' => '_min',
        'max' => '_max'
    );

    /**
     * Minimum length
     *
     * @var integer
     */
    protected $_min;

    /**
     * Maximum length
     *
     * If null, there is no maximum length
     *
     * @var integer|null
     */
    protected $_max;

    /**
     * Encoding to use
     *
     * @var string|null
     */
    protected $_encoding;

    /**
     * Sets validator options
     *
     * @param  integer $min
     * @param  integer $max
     * @return void
     */
    public function __construct($min = 0, $max = null, $encoding = null)
    {
        $this->setMin($min);
        $this->setMax($max);
        $this->setEncoding($encoding);
    }

    /**
     * Returns the min option
     *
     * @return integer
     */
    public function getMin()
    {
        return $this->_min;
    }

    /**
     * Sets the min option
     *
     * @param  integer $min
     * @throws Zend_Validate_Exception
     * @return Zend_Validate_StringLength Provides a fluent interface
     */
    public function setMin($min)
    {
        if (null !== $this->_max && $min > $this->_max) {
            /**
             * @see Zend_Validate_Exception
             */
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum length, but $min >"
                                            . " $this->_max");
        }
        $this->_min = max(0, (integer) $min);
        return $this;
    }

    /**
     * Returns the max option
     *
     * @return integer|null
     */
    public function getMax()
    {
        return $this->_max;
    }

    /**
     * Sets the max option
     *
     * @param  integer|null $max
     * @throws Zend_Validate_Exception
     * @return Zend_Validate_StringLength Provides a fluent interface
     */
    public function setMax($max)
    {
        if (null === $max) {
            $this->_max = null;
        } else if ($max < $this->_min) {
            /**
             * @see Zend_Validate_Exception
             */
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum length, but "
                                            . "$max < $this->_min");
        } else {
            $this->_max = (integer) $max;
        }

        return $this;
    }

    /**
     * Returns the actual encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Sets a new encoding to use
     *
     * @param string $encoding
     * @return Zend_Validate_StringLength
     */
    public function setEncoding($encoding = null)
    {
        if ($encoding !== null) {
            $orig   = iconv_get_encoding('internal_encoding');
            $result = iconv_set_encoding('internal_encoding', $encoding);
            if (!$result) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception('Given encoding not supported on this OS!');
            }

            iconv_set_encoding('internal_encoding', $orig);
        }

        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the string length of $value is at least the min option and
     * no greater than the max option (when the max option is not null).
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;
        $this->_setValue($valueString);
        if ($this->_encoding !== null) {
            $length = iconv_strlen($valueString, $this->_encoding);
        } else {
            $length = iconv_strlen($valueString);
        }

        if ($length < $this->_min) {
            $this->_error(self::TOO_SHORT);
        }

        if (null !== $this->_max && $this->_max < $length) {
            $this->_error(self::TOO_LONG);
        }

        if (count($this->_messages)) {
            return false;
        } else {
            return true;
        }
    }
}
PKpG[î�7wwValidate/InArray.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: InArray.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_InArray extends Zend_Validate_Abstract
{

    const NOT_IN_ARRAY = 'notInArray';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_IN_ARRAY => "'%value%' was not found in the haystack"
    );

    /**
     * Haystack of possible values
     *
     * @var array
     */
    protected $_haystack;

    /**
     * Whether a strict in_array() invocation is used
     *
     * @var boolean
     */
    protected $_strict;

    /**
     * Sets validator options
     *
     * @param  array   $haystack
     * @param  boolean $strict
     * @return void
     */
    public function __construct(array $haystack, $strict = false)
    {
        $this->setHaystack($haystack)
             ->setStrict($strict);
    }

    /**
     * Returns the haystack option
     *
     * @return mixed
     */
    public function getHaystack()
    {
        return $this->_haystack;
    }

    /**
     * Sets the haystack option
     *
     * @param  mixed $haystack
     * @return Zend_Validate_InArray Provides a fluent interface
     */
    public function setHaystack(array $haystack)
    {
        $this->_haystack = $haystack;
        return $this;
    }

    /**
     * Returns the strict option
     *
     * @return boolean
     */
    public function getStrict()
    {
        return $this->_strict;
    }

    /**
     * Sets the strict option
     *
     * @param  boolean $strict
     * @return Zend_Validate_InArray Provides a fluent interface
     */
    public function setStrict($strict)
    {
        $this->_strict = $strict;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is contained in the haystack option. If the strict
     * option is true, then the type of $value is also checked.
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);
        if (!in_array($value, $this->_haystack, $this->_strict)) {
            $this->_error();
            return false;
        }
        return true;
    }

}
PKpG[�-�}Validate/Identical.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Identical.php 8118 2008-02-18 16:10:32Z matthew $
 */

/** Zend_Validate_Abstract */
require_once 'Zend/Validate/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Identical extends Zend_Validate_Abstract
{
    /**#@+
     * Error codes
     * @const string
     */
    const NOT_SAME      = 'notSame';
    const MISSING_TOKEN = 'missingToken';
    /**#@-*/

    /**
     * Error messages
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_SAME      => 'Tokens do not match',
        self::MISSING_TOKEN => 'No token was provided to match against',
    );

    /**
     * Original token against which to validate
     * @var string
     */
    protected $_token;

    /**
     * Sets validator options
     *
     * @param  string $token
     * @return void
     */
    public function __construct($token = null)
    {
        if (null !== $token) {
            $this->setToken($token);
        }
    }

    /**
     * Set token against which to compare
     * 
     * @param  string $token 
     * @return Zend_Validate_Identical
     */
    public function setToken($token)
    {
        $this->_token = (string) $token;
        return $this;
    }

    /**
     * Retrieve token
     * 
     * @return string
     */
    public function getToken()
    {
        return $this->_token;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if a token has been set and the provided value 
     * matches that token.
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);
        $token = $this->getToken();

        if (empty($token)) {
            $this->_error(self::MISSING_TOKEN);
            return false;
        }

        if ($value !== $token)  {
            $this->_error(self::NOT_SAME);
            return false;
        }

        return true;
    }
}
PKpG[g:K���Validate/Hex.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Hex.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hex extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value contains characters other than hexadecimal digits
     */
    const NOT_HEX = 'notHex';

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_HEX => "'%value%' has not only hexadecimal digit characters"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains only hexadecimal digit characters
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if (!ctype_xdigit($valueString)) {
            $this->_error();
            return false;
        }

        return true;
    }

}
PKpG[��u�`
`
Validate/Digits.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Digits.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Digits extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value contains non-digit characters
     */
    const NOT_DIGITS = 'notDigits';

    /**
     * Validation failure message key for when the value is an empty string
     */
    const STRING_EMPTY = 'stringEmpty';

    /**
     * Digits filter used for validation
     *
     * @var Zend_Filter_Digits
     */
    protected static $_filter = null;

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_DIGITS   => "'%value%' contains not only digit characters",
        self::STRING_EMPTY => "'%value%' is an empty string"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value only contains digit characters
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if ('' === $valueString) {
            $this->_error(self::STRING_EMPTY);
            return false;
        }

        if (null === self::$_filter) {
            /**
             * @see Zend_Filter_Digits
             */
            require_once 'Zend/Filter/Digits.php';
            self::$_filter = new Zend_Filter_Digits();
        }

        if ($valueString !== self::$_filter->filter($valueString)) {
            $this->_error(self::NOT_DIGITS);
            return false;
        }

        return true;
    }

}
PKpG[���	�	Validate/GreaterThan.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: GreaterThan.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_GreaterThan extends Zend_Validate_Abstract
{

    const NOT_GREATER = 'notGreaterThan';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_GREATER => "'%value%' is not greater than '%min%'"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'min' => '_min'
    );

    /**
     * Minimum value
     *
     * @var mixed
     */
    protected $_min;

    /**
     * Sets validator options
     *
     * @param  mixed $min
     * @return void
     */
    public function __construct($min)
    {
        $this->setMin($min);
    }

    /**
     * Returns the min option
     *
     * @return mixed
     */
    public function getMin()
    {
        return $this->_min;
    }

    /**
     * Sets the min option
     *
     * @param  mixed $min
     * @return Zend_Validate_GreaterThan Provides a fluent interface
     */
    public function setMin($min)
    {
        $this->_min = $min;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is greater than min option
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);

        if ($this->_min >= $value) {
            $this->_error();
            return false;
        }
        return true;
    }

}
PKpG[rL>Validate/Int.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Int.php 12336 2008-11-06 19:11:46Z thomas $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Int extends Zend_Validate_Abstract
{
    const NOT_INT = 'notInt';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_INT => "'%value%' does not appear to be an integer"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is a valid integer
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;
        $this->_setValue($valueString);
        if (is_bool($value)) {
            $this->_error();
            return false;
        }

        $locale        = localeconv();
        $valueFiltered = str_replace($locale['decimal_point'], '.', $valueString);
        $valueFiltered = str_replace($locale['thousands_sep'], '', $valueFiltered);

        if (strval(intval($valueFiltered)) != $valueFiltered) {
            $this->_error();
            return false;
        }

        return true;
    }

}
PKpG[�[�((Validate/Abstract.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 13351 2008-12-18 15:26:14Z alexander $
 */


/**
 * @see Zend_Validate_Interface
 */
require_once 'Zend/Validate/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Validate_Abstract implements Zend_Validate_Interface
{
    /**
     * The value to be validated
     *
     * @var mixed
     */
    protected $_value;

    /**
     * Additional variables available for validation failure messages
     *
     * @var array
     */
    protected $_messageVariables = array();

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array();

    /**
     * Array of validation failure messages
     *
     * @var array
     */
    protected $_messages = array();

    /**
     * Flag indidcating whether or not value should be obfuscated in error
     * messages
     * @var bool
     */
    protected $_obscureValue = false;

    /**
     * Array of validation failure message codes
     *
     * @var array
     * @deprecated Since 1.5.0
     */
    protected $_errors = array();

    /**
     * Translation object
     * @var Zend_Translate
     */
    protected $_translator;

    /**
     * Default translation object for all validate objects
     * @var Zend_Translate
     */
    protected static $_defaultTranslator;

    /**
     * Returns array of validation failure messages
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }

    /**
     * Returns an array of the names of variables that are used in constructing validation failure messages
     *
     * @return array
     */
    public function getMessageVariables()
    {
        return array_keys($this->_messageVariables);
    }

    /**
     * Sets the validation failure message template for a particular key
     *
     * @param  string $messageString
     * @param  string $messageKey     OPTIONAL
     * @return Zend_Validate_Abstract Provides a fluent interface
     * @throws Zend_Validate_Exception
     */
    public function setMessage($messageString, $messageKey = null)
    {
        if ($messageKey === null) {
            $keys = array_keys($this->_messageTemplates);
            $messageKey = current($keys);
        }
        if (!isset($this->_messageTemplates[$messageKey])) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("No message template exists for key '$messageKey'");
        }
        $this->_messageTemplates[$messageKey] = $messageString;
        return $this;
    }

    /**
     * Sets validation failure message templates given as an array, where the array keys are the message keys,
     * and the array values are the message template strings.
     *
     * @param  array $messages
     * @return Zend_Validate_Abstract
     */
    public function setMessages(array $messages)
    {
        foreach ($messages as $key => $message) {
            $this->setMessage($message, $key);
        }
        return $this;
    }

    /**
     * Magic function returns the value of the requested property, if and only if it is the value or a
     * message variable.
     *
     * @param  string $property
     * @return mixed
     * @throws Zend_Validate_Exception
     */
    public function __get($property)
    {
        if ($property == 'value') {
            return $this->_value;
        }
        if (array_key_exists($property, $this->_messageVariables)) {
            return $this->{$this->_messageVariables[$property]};
        }
        /**
         * @see Zend_Validate_Exception
         */
        require_once 'Zend/Validate/Exception.php';
        throw new Zend_Validate_Exception("No property exists by the name '$property'");
    }

    /**
     * Constructs and returns a validation failure message with the given message key and value.
     *
     * Returns null if and only if $messageKey does not correspond to an existing template.
     *
     * If a translator is available and a translation exists for $messageKey,
     * the translation will be used.
     *
     * @param  string $messageKey
     * @param  string $value
     * @return string
     */
    protected function _createMessage($messageKey, $value)
    {
        if (!isset($this->_messageTemplates[$messageKey])) {
            return null;
        }

        $message = $this->_messageTemplates[$messageKey];

        if (null !== ($translator = $this->getTranslator())) {
            if ($translator->isTranslated($message)) {
                $message = $translator->translate($message);
            } elseif ($translator->isTranslated($messageKey)) {
                $message = $translator->translate($messageKey);
            }
        }

        if (is_object($value)) {
        	if (!in_array('__toString', get_class_methods($value))) {
        		$value = get_class($value) . ' object';
        	} else {
        		$value = $value->__toString();
        	}
        } else {
        	$value = (string)$value;
        }

        if ($this->getObscureValue()) {
            $value = str_repeat('*', strlen($value));
        }

        $message = str_replace('%value%', (string) $value, $message);
        foreach ($this->_messageVariables as $ident => $property) {
            $message = str_replace("%$ident%", (string) $this->$property, $message);
        }
        return $message;
    }

    /**
     * @param  string $messageKey OPTIONAL
     * @param  string $value      OPTIONAL
     * @return void
     */
    protected function _error($messageKey = null, $value = null)
    {
        if ($messageKey === null) {
            $keys = array_keys($this->_messageTemplates);
            $messageKey = current($keys);
        }
        if ($value === null) {
            $value = $this->_value;
        }
        $this->_errors[]              = $messageKey;
        $this->_messages[$messageKey] = $this->_createMessage($messageKey, $value);
    }

    /**
     * Sets the value to be validated and clears the messages and errors arrays
     *
     * @param  mixed $value
     * @return void
     */
    protected function _setValue($value)
    {
        $this->_value    = $value;
        $this->_messages = array();
        $this->_errors   = array();
    }

    /**
     * Returns array of validation failure message codes
     *
     * @return array
     * @deprecated Since 1.5.0
     */
    public function getErrors()
    {
        return $this->_errors;
    }

    /**
     * Set flag indicating whether or not value should be obfuscated in messages
     *
     * @param  bool $flag
     * @return Zend_Validate_Abstract
     */
    public function setObscureValue($flag)
    {
        $this->_obscureValue = (bool) $flag;
        return $this;
    }

    /**
     * Retrieve flag indicating whether or not value should be obfuscated in
     * messages
     *
     * @return bool
     */
    public function getObscureValue()
    {
        return $this->_obscureValue;
    }

    /**
     * Set translation object
     *
     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator
     * @return Zend_Validate_Abstract
     */
    public function setTranslator($translator = null)
    {
        if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
            $this->_translator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            $this->_translator = $translator->getAdapter();
        } else {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid translator specified');
        }
        return $this;
    }

    /**
     * Return translation object
     *
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if (null === $this->_translator) {
            return self::getDefaultTranslator();
        }

        return $this->_translator;
    }

    /**
     * Set default translation object for all validate objects
     *
     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator
     * @return void
     */
    public static function setDefaultTranslator($translator = null)
    {
        if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
            self::$_defaultTranslator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            self::$_defaultTranslator = $translator->getAdapter();
        } else {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid translator specified');
        }
    }

    /**
     * Get default translation object for all validate objects
     *
     * @return Zend_Translate_Adapter|null
     */
    public static function getDefaultTranslator()
    {
        if (null === self::$_defaultTranslator) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Translate')) {
                $translator = Zend_Registry::get('Zend_Translate');
                if ($translator instanceof Zend_Translate_Adapter) {
                    return $translator;
                } elseif ($translator instanceof Zend_Translate) {
                    return $translator->getAdapter();
                }
            }
        }
        return self::$_defaultTranslator;
    }
}
PKpG[_�%kValidate/Ip.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ip.php 13289 2008-12-15 23:18:58Z tjohns $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Ip extends Zend_Validate_Abstract
{
    const NOT_IP_ADDRESS = 'notIpAddress';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is a valid IP address
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        if ((ip2long($valueString) === false) || (long2ip(ip2long($valueString)) !== $valueString)) {
            if (!function_exists('inet_pton')) {
                $this->_error();
                return false;
            } else if ((@inet_pton($value) === false) ||(inet_ntop(@inet_pton($value)) !== $valueString)) {
                $this->_error();
                return false;
            }
        }

        return true;
    }

}
PKpG[��+�+Validate/File/Size.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the maximum size of a file up to a max of 2GB
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Size extends Zend_Validate_Abstract
{
    /**#@+
     * @const string Error constants
     */
    const TOO_BIG   = 'fileSizeTooBig';
    const TOO_SMALL = 'fileSizeTooSmall';
    const NOT_FOUND = 'fileSizeNotFound';
    /**#@-*/

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::TOO_BIG   => "Maximum allowed size for file '%value%' is '%max%' but '%size%' detected",
        self::TOO_SMALL => "Minimum expected size for file '%value%' is '%min%' but '%size%' detected",
        self::NOT_FOUND => "The file '%value%' could not be found"
    );

    /**
     * @var array Error message template variables
     */
    protected $_messageVariables = array(
        'min'  => '_min',
        'max'  => '_max',
        'size' => '_size',
    );

    /**
     * Minimum filesize
     * @var integer
     */
    protected $_min;

    /**
     * Maximum filesize
     *
     * If null, there is no maximum filesize
     *
     * @var integer|null
     */
    protected $_max;

    /**
     * Detected size
     *
     * @var integer
     */
    protected $_size;

    /**
     * Use bytestring ?
     *
     * @var boolean
     */
    protected $_useByteString = true;

    /**
     * Sets validator options
     *
     * If $options is a integer, it will be used as maximum filesize
     * As Array is accepts the following keys:
     * 'min': Minimum filesize
     * 'max': Maximum filesize
     * 'bytestring': Use bytestring or real size for messages
     *
     * @param  integer|array $options Options for the adapter
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_string($options) || is_numeric($options)) {
            $options = array('max' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        if (1 < func_num_args()) {
            trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
            $argv = func_get_args();
            array_shift($argv);
            $options['max'] = array_shift($argv);
            if (!empty($argv)) {
                $options['bytestring'] = array_shift($argv);
            }
        }

        if (isset($options['bytestring'])) {
            $this->setUseByteString($options['bytestring']);
        }

        if (isset($options['min'])) {
            $this->setMin($options['min']);
        }

        if (isset($options['max'])) {
            $this->setMax($options['max']);
        }
    }

    /**
     * Returns the minimum filesize
     *
     * @param  boolean $byteString Use bytestring ?
     * @return integer
     */
    public function setUseByteString($byteString = true)
    {
        $this->_useByteString = (bool) $byteString;
        return $this;
    }

    /**
     * Will bytestring be used?
     *
     * @return boolean
     */
    public function useByteString()
    {
        return $this->_useByteString;
    }

    /**
     * Returns the minimum filesize
     *
     * @param  bool $raw Whether or not to force return of the raw value (defaults off)
     * @return integer|string
     */
    public function getMin($raw = false)
    {
        $min = $this->_min;
        if (!$raw && $this->useByteString()) {
            $min = $this->_toByteString($min);
        }

        return $min;
    }

    /**
     * Sets the minimum filesize
     *
     * @param  integer $min The minimum filesize
     * @throws Zend_Validate_Exception When min is greater than max
     * @return Zend_Validate_File_Size Provides a fluent interface
     */
    public function setMin($min)
    {
        if (!is_string($min) and !is_numeric($min)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        $min = (integer) $this->_fromByteString($min);
        $max = $this->getMax(true);
        if (($max !== null) && ($min > $max)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum filesize, but $min >"
                                            . " $max");
        }

        $this->_min = $min;
        return $this;
    }

    /**
     * Returns the maximum filesize
     *
     * @param  bool $raw Whether or not to force return of the raw value (defaults off)
     * @return integer|string
     */
    public function getMax($raw = false)
    {
        $max = $this->_max;
        if (!$raw && $this->useByteString()) {
            $max = $this->_toByteString($max);
        }

        return $max;
    }

    /**
     * Sets the maximum filesize
     *
     * @param  integer $max The maximum filesize
     * @throws Zend_Validate_Exception When max is smaller than min
     * @return Zend_Validate_StringLength Provides a fluent interface
     */
    public function setMax($max)
    {
        if (!is_string($max) && !is_numeric($max)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        $max = (integer) $this->_fromByteString($max);
        $min = $this->getMin(true);
        if (($min !== null) && ($max < $min)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum filesize, but "
                                            . "$max < $min");
        }

        $this->_max = $max;
        return $this;
    }

    /**
     * Retrieve current detected file size
     *
     * @return int
     */
    protected function _getSize()
    {
        return $this->_size;
    }

    /**
     * Set current size
     *
     * @param  int $size
     * @return Zend_Validate_File_Size
     */
    protected function _setSize($size)
    {
        $this->_size = $size;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the filesize of $value is at least min and
     * not bigger than max (when max is not null).
     *
     * @param  string $value Real file to check for size
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        // limited to 4GB files
        $size = sprintf("%u", @filesize($value));

        // Check to see if it's smaller than min size
        $min = $this->getMin(true);
        $max = $this->getMax(true);
        if (($min !== null) && ($size < $min)) {
            if ($this->useByteString()) {
                $this->_min  = $this->_toByteString($min);
                $this->_size = $this->_toByteString($size);
                $this->_throw($file, self::TOO_SMALL);
                $this->_min  = $min;
                $this->_size = $size;
            } else {
                $this->_throw($file, self::TOO_SMALL);
            }
        }

        // Check to see if it's larger than max size
        if (($max !== null) && ($max < $size)) {
            if ($this->useByteString()) {
                $this->_max  = $this->_toByteString($max);
                $this->_size = $this->_toByteString($size);
                $this->_throw($file, self::TOO_BIG);
                $this->_max  = $max;
                $this->_size = $size;
            } else {
                $this->_throw($file, self::TOO_BIG);
            }
        }

        if (count($this->_messages) > 0) {
            return false;
        }

        return true;
    }

    /**
     * Returns the formatted size
     *
     * @param  integer $size
     * @return string
     */
    protected function _toByteString($size)
    {
        $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
        for ($i=0; $size >= 1024 && $i < 9; $i++) {
            $size /= 1024;
        }

        return round($size, 2) . $sizes[$i];
    }

    /**
     * Returns the unformatted size
     *
     * @param  string $size
     * @return integer
     */
    protected function _fromByteString($size)
    {
        if (is_numeric($size)) {
            return (integer) $size;
        }

        $type  = trim(substr($size, -2, 1));

        $value = substr($size, 0, -1);
        if (!is_numeric($value)) {
            $value = substr($value, 0, -1);
        }

        switch (strtoupper($type)) {
            case 'Y':
                $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024);
                break;
            case 'Z':
                $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024);
                break;
            case 'E':
                $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024);
                break;
            case 'P':
                $value *= (1024 * 1024 * 1024 * 1024 * 1024);
                break;
            case 'T':
                $value *= (1024 * 1024 * 1024 * 1024);
                break;
            case 'G':
                $value *= (1024 * 1024 * 1024);
                break;
            case 'M':
                $value *= (1024 * 1024);
                break;
            case 'K':
                $value *= 1024;
                break;
            default:
                break;
        }

        return $value;
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[�y���Validate/File/MimeType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the mime type of a file
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_MimeType extends Zend_Validate_Abstract
{
    /**#@+
     * @const Error type constants
     */
    const FALSE_TYPE   = 'fileMimeTypeFalse';
    const NOT_DETECTED = 'fileMimeTypeNotDetected';
    const NOT_READABLE = 'fileMimeTypeNotReadable';
    /**#@-*/

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_TYPE   => "The file '%value%' has a false mimetype of '%type%'",
        self::NOT_DETECTED => "The mimetype of file '%value%' could not been detected",
        self::NOT_READABLE => "The file '%value%' can not be read"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'type' => '_type'
    );

    /**
     * @var string
     */
    protected $_type;

    /**
     * Mimetypes
     *
     * If null, there is no mimetype
     *
     * @var string|null
     */
    protected $_mimetype;

    /**
     * Magicfile to use
     *
     * @var string|null
     */
    protected $_magicfile;

    /**
     * Sets validator options
     *
     * Mimetype to accept
     *
     * @param  string|array $mimetype MimeType
     * @return void
     */
    public function __construct($mimetype)
    {
        if ($mimetype instanceof Zend_Config) {
            $mimetype = $mimetype->toArray();
        } elseif (is_string($mimetype)) {
            $mimetype = explode(',', $mimetype);
        } elseif (!is_array($mimetype)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("Invalid options to validator provided");
        }

        if (isset($mimetype['magicfile'])) {
            $this->setMagicFile($mimetype['magicfile']);
        }

        $this->setMimeType($mimetype);
    }

    /**
     * Returna the actual set magicfile
     *
     * @return string
     */
    public function getMagicFile()
    {
        return $this->_magicfile;
    }

    /**
     * Sets the magicfile to use
     * if null, the MAGIC constant from php is used
     *
     * @param  string $file
     * @return Zend_Validate_File_MimeType Provides fluid interface
     */
    public function setMagicFile($file)
    {
        if (empty($file)) {
            $this->_magicfile = null;
        } else if (!is_readable($file)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('The given magicfile can not be read');
        } else {
            $this->_magicfile = (string) $file;
        }

        return $this;
    }

    /**
     * Returns the set mimetypes
     *
     * @param  boolean $asArray Returns the values as array, when false an concated string is returned
     * @return string|array
     */
    public function getMimeType($asArray = false)
    {
        $asArray   = (bool) $asArray;
        $mimetype = (string) $this->_mimetype;
        if ($asArray) {
            $mimetype = explode(',', $mimetype);
        }

        return $mimetype;
    }

    /**
     * Sets the mimetypes
     *
     * @param  string|array $mimetype The mimetypes to validate
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function setMimeType($mimetype)
    {
        $this->_mimetype = null;
        $this->addMimeType($mimetype);
        return $this;
    }

    /**
     * Adds the mimetypes
     *
     * @param  string|array $mimetype The mimetypes to add for validation
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function addMimeType($mimetype)
    {
        $mimetypes = $this->getMimeType(true);

        if (is_string($mimetype)) {
            $mimetype = explode(',', $mimetype);
        } elseif (!is_array($mimetype)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("Invalid options to validator provided");
        }

        if (isset($mimetype['magicfile'])) {
            unset($mimetype['magicfile']);
        }

        foreach ($mimetype as $content) {
            if (empty($content) || !is_string($content)) {
                continue;
            }
            $mimetypes[] = trim($content);
        }
        $mimetypes = array_unique($mimetypes);

        // Sanity check to ensure no empty values
        foreach ($mimetypes as $key => $mt) {
            if (empty($mt)) {
                unset($mimetypes[$key]);
            }
        }

        $this->_mimetype = implode(',', $mimetypes);

        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if the mimetype of the file matches the given ones. Also parts
     * of mimetypes can be checked. If you give for example "image" all image
     * mime types will be accepted like "image/gif", "image/jpeg" and so on.
     *
     * @param  string $value Real file to check for mimetype
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_READABLE);
        }

        if ($file !== null) {
            $mimefile = $this->getMagicFile();
            if (class_exists('finfo', false) && ((!empty($mimefile)) or (defined('MAGIC')))) {
                if (!empty($mimefile)) {
                    $mime = new finfo(FILEINFO_MIME, $mimefile);
                } else {
                    $mime = new finfo(FILEINFO_MIME);
                }

                $this->_type = $mime->file($value);
                unset($mime);
            } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
                $this->_type = mime_content_type($value);
            } else {
                $this->_type = $file['type'];
            }
        }

        if (empty($this->_type)) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        $mimetype = $this->getMimeType(true);
        if (in_array($this->_type, $mimetype)) {
            return true;
        }

        $types = explode('/', $this->_type);
        $types = array_merge($types, explode('-', $this->_type));
        foreach($mimetype as $mime) {
            if (in_array($mime, $types)) {
                return true;
            }
        }

        return $this->_throw($file, self::FALSE_TYPE);
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[����!Validate/File/ExcludeMimeType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_MimeType
 */
require_once 'Zend/Validate/File/MimeType.php';

/**
 * Validator for the mime type of a file
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_ExcludeMimeType extends Zend_Validate_File_MimeType
{
    const FALSE_TYPE   = 'fileExcludeMimeTypeFalse';
    const NOT_DETECTED = 'fileExcludeMimeTypeNotDetected';
    const NOT_READABLE = 'fileExcludeMimeTypeNotReadable';

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if the mimetype of the file does not matche the given ones. Also parts
     * of mimetypes can be checked. If you give for example "image" all image
     * mime types will not be accepted like "image/gif", "image/jpeg" and so on.
     *
     * @param  string $value Real file to check for mimetype
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_READABLE);
        }

        if ($file !== null) {
            if (class_exists('finfo', false) && defined('MAGIC')) {
                $mime = new finfo(FILEINFO_MIME);
                $this->_type = $mime->file($value);
                unset($mime);
            } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
                $this->_type = mime_content_type($value);
            } else {
                $this->_type = $file['type'];
            }
        }

        if (empty($this->_type)) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        $mimetype = $this->getMimeType(true);
        if (in_array($this->_type, $mimetype)) {
            return $this->_throw($file, self::FALSE_TYPE);
        }

        $types = explode('/', $this->_type);
        $types = array_merge($types, explode('-', $this->_type));
        foreach($mimetype as $mime) {
            if (in_array($mime, $types)) {
                return $this->_throw($file, self::FALSE_TYPE);
            }
        }

        return true;
    }
}
PKpG[dni�2,2,Validate/File/ImageSize.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the image size of a image file
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_ImageSize extends Zend_Validate_Abstract
{
    /**
     * @const string Error constants
     */
    const WIDTH_TOO_BIG    = 'fileImageSizeWidthTooBig';
    const WIDTH_TOO_SMALL  = 'fileImageSizeWidthTooSmall';
    const HEIGHT_TOO_BIG   = 'fileImageSizeHeightTooBig';
    const HEIGHT_TOO_SMALL = 'fileImageSizeHeightTooSmall';
    const NOT_DETECTED     = 'fileImageSizeNotDetected';
    const NOT_READABLE     = 'fileImageSizeNotReadable';

    /**
     * @var array Error message template
     */
    protected $_messageTemplates = array(
        self::WIDTH_TOO_BIG    => "Maximum allowed width for image '%value%' should be '%maxwidth%' but '%width%' detected",
        self::WIDTH_TOO_SMALL  => "Minimum expected width for image '%value%' should be '%minwidth%' but '%width%' detected",
        self::HEIGHT_TOO_BIG   => "Maximum allowed height for image '%value%' should be '%maxheight%' but '%height%' detected",
        self::HEIGHT_TOO_SMALL => "Minimum expected height for image '%value%' should be '%minheight%' but '%height%' detected",
        self::NOT_DETECTED     => "The size of image '%value%' could not be detected",
        self::NOT_READABLE     => "The image '%value%' can not be read"
    );

    /**
     * @var array Error message template variables
     */
    protected $_messageVariables = array(
        'minwidth'  => '_minwidth',
        'maxwidth'  => '_maxwidth',
        'minheight' => '_minheight',
        'maxheight' => '_maxheight',
        'width'     => '_width',
        'height'    => '_height'
    );

    /**
     * Minimum image width
     *
     * @var integer
     */
    protected $_minwidth;

    /**
     * Maximum image width
     *
     * @var integer
     */
    protected $_maxwidth;

    /**
     * Minimum image height
     *
     * @var integer
     */
    protected $_minheight;

    /**
     * Maximum image height
     *
     * @var integer
     */
    protected $_maxheight;

    /**
     * Detected width
     *
     * @var integer
     */
    protected $_width;

    /**
     * Detected height
     *
     * @var integer
     */
    protected $_height;

    /**
     * Sets validator options
     *
     * Accepts the following option keys:
     * - minheight
     * - minwidth
     * - maxheight
     * - maxwidth
     *
     * @param  Zend_Config|array $options
     * @return void
     */
    public function __construct($options)
    {
        $minwidth  = 0;
        $minheight = 0;
        $maxwidth  = null;
        $maxheight = null;

        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (1 < func_num_args()) {
            trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
            if (!is_array($options)) {
                $options = array('minwidth' => $options);
            }
            $argv = func_get_args();
            array_shift($argv);
            $options['minheight'] = array_shift($argv);
            if (!empty($argv)) {
                $options['maxwidth'] = array_shift($argv);
                if (!empty($argv)) {
                    $options['maxheight'] = array_shift($argv);
                }
            }
        } else if (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        if (isset($options['minheight']) || isset($options['minwidth'])) {
            $this->setImageMin($options);
        }

        if (isset($options['maxheight']) || isset($options['maxwidth'])) {
            $this->setImageMax($options);
        }
    }

    /**
     * Returns the set minimum image sizes
     *
     * @return array
     */
    public function getImageMin()
    {
        return array('minwidth' => $this->_minwidth, 'minheight' => $this->_minheight);
    }

    /**
     * Returns the set maximum image sizes
     *
     * @return array
     */
    public function getImageMax()
    {
        return array('maxwidth' => $this->_maxwidth, 'maxheight' => $this->_maxheight);
    }

    /**
     * Returns the set image width sizes
     *
     * @return array
     */
    public function getImageWidth()
    {
        return array('minwidth' => $this->_minwidth, 'maxwidth' => $this->_maxwidth);
    }

    /**
     * Returns the set image height sizes
     *
     * @return array
     */
    public function getImageHeight()
    {
        return array('minheight' => $this->_minheight, 'maxheight' => $this->_maxheight);
    }

    /**
     * Sets the minimum image size
     *
     * @param  array $options               The minimum image dimensions
     * @throws Zend_Validate_Exception      When minwidth is greater than maxwidth
     * @throws Zend_Validate_Exception      When minheight is greater than maxheight
     * @return Zend_Validate_File_ImageSize Provides a fluent interface
     */
    public function setImageMin($options)
    {
        if (isset($options['minwidth'])) {
            if (($this->_maxwidth !== null) and ($options['minwidth'] > $this->_maxwidth)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The minimum image width must be less than or equal to the "
                    . " maximum image width, but {$options['minwidth']} > {$this->_maxwidth}");
            }
        }

        if (isset($options['maxheight'])) {
            if (($this->_maxheight !== null) and ($options['minheight'] > $this->_maxheight)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The minimum image height must be less than or equal to the "
                    . " maximum image height, but {$options['minheight']} > {$this->_maxheight}");
            }
        }

        if (isset($options['minwidth'])) {
            $this->_minwidth  = (int) $options['minwidth'];
        }

        if (isset($options['minheight'])) {
            $this->_minheight = (int) $options['minheight'];
        }

        return $this;
    }

    /**
     * Sets the maximum image size
     *
     * @param  array $options          The maximum image dimensions
     * @throws Zend_Validate_Exception When maxwidth is smaller than minwidth
     * @throws Zend_Validate_Exception When maxheight is smaller than minheight
     * @return Zend_Validate_StringLength Provides a fluent interface
     */
    public function setImageMax($options)
    {
        if (isset($options['maxwidth'])) {
            if (($this->_minwidth !== null) and ($options['maxwidth'] < $this->_minwidth)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The maximum image width must be greater than or equal to the "
                    . "minimum image width, but {$options['maxwidth']} < {$this->_minwidth}");
            }
        }

        if (isset($options['maxheight'])) {
            if (($this->_minheight !== null) and ($options['maxheight'] < $this->_minheight)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The maximum image height must be greater than or equal to the "
                    . "minimum image height, but {$options['maxheight']} < {$this->_minwidth}");
            }
        }

        if (isset($options['maxwidth'])) {
            $this->_maxwidth  = (int) $options['maxwidth'];
        }

        if (isset($options['maxheight'])) {
            $this->_maxheight = (int) $options['maxheight'];
        }

        return $this;
    }

    /**
     * Sets the mimimum and maximum image width
     *
     * @param  array $options               The image width dimensions
     * @return Zend_Validate_File_ImageSize Provides a fluent interface
     */
    public function setImageWidth($options)
    {
        $this->setImageMin($options);
        $this->setImageMax($options);

        return $this;
    }

    /**
     * Sets the mimimum and maximum image height
     *
     * @param  array $options               The image height dimensions
     * @return Zend_Validate_File_ImageSize Provides a fluent interface
     */
    public function setImageHeight($options)
    {
        $this->setImageMin($options);
        $this->setImageMax($options);

        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the imagesize of $value is at least min and
     * not bigger than max
     *
     * @param  string $value Real file to check for image size
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_READABLE);
        }

        $size = @getimagesize($value);
        $this->_setValue($file);

        if (empty($size) or ($size[0] === 0) or ($size[1] === 0)) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        $this->_width  = $size[0];
        $this->_height = $size[1];
        if ($this->_width < $this->_minwidth) {
            $this->_throw($file, self::WIDTH_TOO_SMALL);
        }

        if (($this->_maxwidth !== null) and ($this->_maxwidth < $this->_width)) {
            $this->_throw($file, self::WIDTH_TOO_BIG);
        }

        if ($this->_height < $this->_minheight) {
            $this->_throw($file, self::HEIGHT_TOO_SMALL);
        }

        if (($this->_maxheight !== null) and ($this->_maxheight < $this->_height)) {
            $this->_throw($file, self::HEIGHT_TOO_BIG);
        }

        if (count($this->_messages) > 0) {
            return false;
        }

        return true;
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[ľx=��Validate/File/Upload.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the maximum size of a file up to a max of 2GB
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Upload extends Zend_Validate_Abstract
{
    /**@#+
     * @const string Error constants
     */
    const INI_SIZE       = 'fileUploadErrorIniSize';
    const FORM_SIZE      = 'fileUploadErrorFormSize';
    const PARTIAL        = 'fileUploadErrorPartial';
    const NO_FILE        = 'fileUploadErrorNoFile';
    const NO_TMP_DIR     = 'fileUploadErrorNoTmpDir';
    const CANT_WRITE     = 'fileUploadErrorCantWrite';
    const EXTENSION      = 'fileUploadErrorExtension';
    const ATTACK         = 'fileUploadErrorAttack';
    const FILE_NOT_FOUND = 'fileUploadErrorFileNotFound';
    const UNKNOWN        = 'fileUploadErrorUnknown';
    /**@#-*/

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::INI_SIZE       => "The file '%value%' exceeds the defined ini size",
        self::FORM_SIZE      => "The file '%value%' exceeds the defined form size",
        self::PARTIAL        => "The file '%value%' was only partially uploaded",
        self::NO_FILE        => "The file '%value%' was not uploaded",
        self::NO_TMP_DIR     => "No temporary directory was found for the file '%value%'",
        self::CANT_WRITE     => "The file '%value%' can't be written",
        self::EXTENSION      => "The extension returned an error while uploading the file '%value%'",
        self::ATTACK         => "The file '%value%' was illegal uploaded, possible attack",
        self::FILE_NOT_FOUND => "The file '%value%' was not found",
        self::UNKNOWN        => "Unknown error while uploading the file '%value%'"
    );

    /**
     * Internal array of files
     * @var array
     */
    protected $_files = array();

    /**
     * Sets validator options
     *
     * The array $files must be given in syntax of Zend_File_Transfer to be checked
     * If no files are given the $_FILES array will be used automatically.
     * NOTE: This validator will only work with HTTP POST uploads!
     *
     * @param  array $files Array of files in syntax of Zend_File_Transfer
     * @return void
     */
    public function __construct($files = array())
    {
        $this->setFiles($files);
    }

    /**
     * Returns the array of set files
     *
     * @param  string $files (Optional) The file to return in detail
     * @return array
     * @throws Zend_Validate_Exception If file is not found
     */
    public function getFiles($file = null)
    {
        if ($file !== null) {
            $return = array();
            foreach ($this->_files as $name => $content) {
                if ($name === $file) {
                    $return[$file] = $this->_files[$name];
                }

                if ($content['name'] === $file) {
                    $return[$name] = $this->_files[$name];
                }
            }

            if (count($return) === 0) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("The file '$file' was not found");
            }

            return $return;
        }

        return $this->_files;
    }

    /**
     * Sets the minimum filesize
     *
     * @param  array $files The files to check in syntax of Zend_File_Transfer
     * @return Zend_Validate_File_Upload Provides a fluent interface
     */
    public function setFiles($files = array())
    {
        if (count($files) === 0) {
            $this->_files = $_FILES;
        } else {
            $this->_files = $files;
        }
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file was uploaded without errors
     *
     * @param  string $value Single file to check for upload errors, when giving null the $_FILES array
     *                       from initialization will be used
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        if (array_key_exists($value, $this->_files)) {
            $files[$value] = $this->_files[$value];
        } else {
            foreach ($this->_files as $file => $content) {
                if ($content['name'] === $value) {
                    $files[$file] = $this->_files[$file];
                }

                if ($content['tmp_name'] === $value) {
                    $files[$file] = $this->_files[$file];
                }
            }
        }

        if (empty($files)) {
            return $this->_throw($file, self::FILE_NOT_FOUND);
        }

        foreach ($files as $file => $content) {
            $this->_value = $file;
            switch($content['error']) {
                case 0:
                    if (!is_uploaded_file($content['tmp_name'])) {
                        $this->_throw($file, self::ATTACK);
                    }
                    break;

                case 1:
                    $this->_throw($file, self::INI_SIZE);
                    break;

                case 2:
                    $this->_throw($file, self::FORM_SIZE);
                    break;

                case 3:
                    $this->_throw($file, self::PARTIAL);
                    break;

                case 4:
                    $this->_throw($file, self::NO_FILE);
                    break;

                case 6:
                    $this->_throw($file, self::NO_TMP_DIR);
                    break;

                case 7:
                    $this->_throw($file, self::CANT_WRITE);
                    break;

                case 8:
                    $this->_throw($file, self::EXTENSION);
                    break;

                default:
                    $this->_throw($file, self::UNKNOWN);
                    break;
            }
        }

        if (count($this->_messages) > 0) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            if (is_array($file) and !empty($file['name'])) {
                $this->_value = $file['name'];
            }
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[F\��BB"Validate/File/ExcludeExtension.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/File/Extension.php';

/**
 * Validator for the excluding file extensions
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_ExcludeExtension extends Zend_Validate_File_Extension
{
    /**
     * @const string Error constants
     */
    const FALSE_EXTENSION = 'fileExcludeExtensionFalse';
    const NOT_FOUND       = 'fileExcludeExtensionNotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_EXTENSION => "The file '%value%' has a false extension",
        self::NOT_FOUND       => "The file '%value%' was not found"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the fileextension of $value is not included in the
     * set extension list
     *
     * @param  string  $value Real file to check for extension
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        if ($file !== null) {
            $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
        } else {
            $info = pathinfo($value);
        }

        $extensions = $this->getExtension();

        if ($this->_case and (!in_array($info['extension'], $extensions))) {
            return true;
        } else if (!$this->_case) {
            $found = false;
            foreach ($extensions as $extension) {
                if (strtolower($extension) == strtolower($info['extension'])) {
                    $found = true;
                }
            }

            if (!$found) {
                return true;
            }
        }

        return $this->_throw($file, self::FALSE_EXTENSION);
    }
}
PKpG[����YYValidate/File/Exists.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator which checks if the file already exists in the directory
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Exists extends Zend_Validate_Abstract
{
    /**
     * @const string Error constants
     */
    const DOES_NOT_EXIST = 'fileExistsDoesNotExist';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_NOT_EXIST => "The file '%value%' does not exist"
    );

    /**
     * Internal list of directories
     * @var string
     */
    protected $_directory = '';

    /**
     * @var array Error message template variables
     */
    protected $_messageVariables = array(
        'directory' => '_directory'
    );

    /**
     * Sets validator options
     *
     * @param  string|array $directory
     * @return void
     */
    public function __construct($directory = array())
    {
        if ($directory instanceof Zend_Config) {
            $directory = $directory->toArray();
        } else if (is_string($directory)) {
            $directory = explode(',', $directory);
        } else if (!is_array($directory)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        $this->setDirectory($directory);
    }

    /**
     * Returns the set file directories which are checked
     *
     * @param  boolean $asArray Returns the values as array, when false an concated string is returned
     * @return string
     */
    public function getDirectory($asArray = false)
    {
        $asArray   = (bool) $asArray;
        $directory = (string) $this->_directory;
        if ($asArray) {
            $directory = explode(',', $directory);
        }

        return $directory;
    }

    /**
     * Sets the file directory which will be checked
     *
     * @param  string|array $directory The directories to validate
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function setDirectory($directory)
    {
        $this->_directory = null;
        $this->addDirectory($directory);
        return $this;
    }

    /**
     * Adds the file directory which will be checked
     *
     * @param  string|array $directory The directory to add for validation
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function addDirectory($directory)
    {
        $directories = $this->getDirectory(true);

        if (is_string($directory)) {
            $directory = explode(',', $directory);
        } else if (!is_array($directory)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        foreach ($directory as $content) {
            if (empty($content) || !is_string($content)) {
                continue;
            }

            $directories[] = trim($content);
        }
        $directories = array_unique($directories);

        // Sanity check to ensure no empty values
        foreach ($directories as $key => $dir) {
            if (empty($dir)) {
                unset($directories[$key]);
            }
        }

        $this->_directory = implode(',', $directories);

        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file already exists in the set directories
     *
     * @param  string  $value Real file to check for existance
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        $directories = $this->getDirectory(true);
        if (($file !== null) and (!empty($file['destination']))) {
            $directories[] = $file['destination'];
        } else if (!isset($file['name'])) {
            $file['name'] = $value;
        }

        $check = false;
        foreach ($directories as $directory) {
            if (empty($directory)) {
                continue;
            }

            $check = true;
            if (!file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) {
                return $this->_throw($file, self::DOES_NOT_EXIST);
            }
        }

        if (!$check) {
            return $this->_throw($file, self::DOES_NOT_EXIST);
        }

        return true;
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[�ۥEEValidate/File/Count.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for counting all given files
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Count extends Zend_Validate_Abstract
{
    /**#@+
     * @const string Error constants
     */
    const TOO_MUCH = 'fileCountTooMuch';
    const TOO_LESS = 'fileCountTooLess';
    /**#@-*/

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::TOO_MUCH => "Too much files, maximum '%max%' are allowed but '%count%' are given",
        self::TOO_LESS => "Too less files, minimum '%min%' are expected but '%count%' are given"
    );

    /**
     * @var array Error message template variables
     */
    protected $_messageVariables = array(
        'min'   => '_min',
        'max'   => '_max',
        'count' => '_count'
    );

    /**
     * Minimum file count
     *
     * If null, there is no minimum file count
     *
     * @var integer
     */
    protected $_min;

    /**
     * Maximum file count
     *
     * If null, there is no maximum file count
     *
     * @var integer|null
     */
    protected $_max;

    /**
     * Actual filecount
     *
     * @var integer
     */
    protected $_count;

    /**
     * Internal file array
     * @var array
     */
    protected $_files;

    /**
     * Sets validator options
     *
     * Min limits the file count, when used with max=null it is the maximum file count
     * It also accepts an array with the keys 'min' and 'max'
     *
     * If $options is a integer, it will be used as maximum file count
     * As Array is accepts the following keys:
     * 'min': Minimum filecount
     * 'max': Maximum filecount
     *
     * @param  integer|array $options Options for the adapter
     * @param  integer $max (Deprecated) Maximum value (implies $options is the minimum)
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_string($options) || is_numeric($options)) {
            $options = array('max' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        if (1 < func_num_args()) {
            trigger_error('Multiple arguments are deprecated in favor of an array of named arguments', E_USER_NOTICE);
            $options['min'] = func_get_arg(0);
            $options['max'] = func_get_arg(1);
        }

        if (isset($options['min'])) {
            $this->setMin($options);
        }

        if (isset($options['max'])) {
            $this->setMax($options);
        }
    }

    /**
     * Returns the minimum file count
     *
     * @return integer
     */
    public function getMin()
    {
        return $this->_min;
    }

    /**
     * Sets the minimum file count
     *
     * @param  integer|array $min The minimum file count
     * @return Zend_Validate_File_Size Provides a fluent interface
     * @throws Zend_Validate_Exception When min is greater than max
     */
    public function setMin($min)
    {
        if (is_array($min) and isset($min['min'])) {
            $min = $min['min'];
        }

        if (!is_string($min) and !is_numeric($min)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        $min = (integer) $min;
        if (($this->_max !== null) && ($min > $this->_max)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum file count, but $min >"
                                            . " {$this->_max}");
        }

        $this->_min = $min;
        return $this;
    }

    /**
     * Returns the maximum file count
     *
     * @return integer
     */
    public function getMax()
    {
        return $this->_max;
    }

    /**
     * Sets the maximum file count
     *
     * @param  integer|array $max The maximum file count
     * @return Zend_Validate_StringLength Provides a fluent interface
     * @throws Zend_Validate_Exception When max is smaller than min
     */
    public function setMax($max)
    {
        if (is_array($max) and isset($max['max'])) {
            $max = $max['max'];
        }

        if (!is_string($max) and !is_numeric($max)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception ('Invalid options to validator provided');
        }

        $max = (integer) $max;
        if (($this->_min !== null) && ($max < $this->_min)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum file count, but "
                                            . "$max < {$this->_min}");
        }

        $this->_max = $max;
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file count of all checked files is at least min and
     * not bigger than max (when max is not null). Attention: When checking with set min you
     * must give all files with the first call, otherwise you will get an false.
     *
     * @param  string|array $value Filenames to check for count
     * @param  array        $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        if (is_string($value)) {
            $value = array($value);
        }

        foreach ($value as $file) {
            if (!isset($this->_files[$file])) {
                $this->_files[$file] = $file;
            }
        }

        $this->_count = count($this->_files);
        if (($this->_max !== null) && ($this->_count > $this->_max)) {
            return $this->_throw($file, self::TOO_MUCH);
        }

        if (($this->_min !== null) && ($this->_count < $this->_min)) {
            return $this->_throw($file, self::TOO_LESS);
        }

        return true;
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[Bl�߲�Validate/File/Md5.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_Hash
 */
require_once 'Zend/Validate/File/Hash.php';

/**
 * Validator for the md5 hash of given files
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Md5 extends Zend_Validate_File_Hash
{
    /**
     * @const string Error constants
     */
    const DOES_NOT_MATCH = 'fileMd5DoesNotMatch';
    const NOT_DETECTED   = 'fileMd5NotDetected';
    const NOT_FOUND      = 'fileMd5NotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_NOT_MATCH => "The file '%value%' does not match the given md5 hashes",
        self::NOT_DETECTED   => "There was no md5 hash detected for the given file",
        self::NOT_FOUND      => "The file '%value%' could not be found"
    );

    /**
     * Hash of the file
     *
     * @var string
     */
    protected $_hash;

    /**
     * Sets validator options
     *
     * $hash is the hash we accept for the file $file
     *
     * @param  string|array $options
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_scalar($options)) {
            $options = array('hash1' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid options to validator provided');
        }

        $this->setMd5($options);
    }

    /**
     * Returns all set md5 hashes
     *
     * @return array
     */
    public function getMd5()
    {
        return $this->getHash();
    }

    /**
     * Sets the md5 hash for one or multiple files
     *
     * @param  string|array $options
     * @param  string       $algorithm (Deprecated) Algorithm to use, fixed to md5
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setHash($options)
    {
        if (!is_array($options)) {
            $options = (array) $options;
        }

        $options['algorithm'] = 'md5';
        parent::setHash($options);
        return $this;
    }

    /**
     * Sets the md5 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setMd5($options)
    {
        $this->setHash($options);
        return $this;
    }

    /**
     * Adds the md5 hash for one or multiple files
     *
     * @param  string|array $options
     * @param  string       $algorithm (Depreciated) Algorithm to use, fixed to md5
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addHash($options)
    {
        if (!is_array($options)) {
            $options = (array) $options;
        }

        $options['algorithm'] = 'md5';
        parent::addHash($options);
        return $this;
    }

    /**
     * Adds the md5 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addMd5($options)
    {
        $this->addHash($options);
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the given file confirms the set hash
     *
     * @param  string $value Filename to check for hash
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        $hashes = array_unique(array_keys($this->_hash));
        $filehash = hash_file('md5', $value);
        if ($filehash === false) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        foreach($hashes as $hash) {
            if ($filehash === $hash) {
                return true;
            }
        }

        return $this->_throw($file, self::DOES_NOT_MATCH);
    }
}
PKpG[��\Validate/File/Sha1.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_Hash
 */
require_once 'Zend/Validate/File/Hash.php';

/**
 * Validator for the sha1 hash of given files
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Sha1 extends Zend_Validate_File_Hash
{
    /**
     * @const string Error constants
     */
    const DOES_NOT_MATCH = 'fileSha1DoesNotMatch';
    const NOT_DETECTED   = 'fileSha1NotDetected';
    const NOT_FOUND      = 'fileSha1NotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_NOT_MATCH => "The file '%value%' does not match the given sha1 hashes",
        self::NOT_DETECTED   => "There was no sha1 hash detected for the given file",
        self::NOT_FOUND      => "The file '%value%' could not be found"
    );

    /**
     * Hash of the file
     *
     * @var string
     */
    protected $_hash;

    /**
     * Sets validator options
     *
     * $hash is the hash we accept for the file $file
     *
     * @param  string|array $options
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_scalar($options)) {
            $options = array('hash1' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid options to validator provided');
        }

        $this->setHash($options);
    }

    /**
     * Returns all set sha1 hashes
     *
     * @return array
     */
    public function getSha1()
    {
        return $this->getHash();
    }

    /**
     * Sets the sha1 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setHash($options)
    {
        if (!is_array($options)) {
            $options = (array) $options;
        }

        $options['algorithm'] = 'sha1';
        parent::setHash($options);
        return $this;
    }

    /**
     * Sets the sha1 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setSha1($options)
    {
        $this->setHash($options);
        return $this;
    }

    /**
     * Adds the sha1 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addHash($options)
    {
        if (!is_array($options)) {
            $options = (array) $options;
        }

        $options['algorithm'] = 'sha1';
        parent::addHash($options);
        return $this;
    }

    /**
     * Adds the sha1 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addSha1($options)
    {
        $this->addHash($options);
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the given file confirms the set hash
     *
     * @param  string $value Filename to check for hash
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        $hashes = array_unique(array_keys($this->_hash));
        $filehash = hash_file('sha1', $value);
        if ($filehash === false) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        foreach ($hashes as $hash) {
            if ($filehash === $hash) {
                return true;
            }
        }

        return $this->_throw($file, self::DOES_NOT_MATCH);
    }
}
PKpG[V�Validate/File/FilesSize.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_Size
 */
require_once 'Zend/Validate/File/Size.php';

/**
 * Validator for the size of all files which will be validated in sum
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_FilesSize extends Zend_Validate_File_Size
{
    /**
     * @const string Error constants
     */
    const TOO_BIG      = 'fileFilesSizeTooBig';
    const TOO_SMALL    = 'fileFilesSizeTooSmall';
    const NOT_READABLE = 'fileFilesSizeNotReadable';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::TOO_BIG      => "All files in sum should have a maximum size of '%max%' but '%size%' were detected",
        self::TOO_SMALL    => "All files in sum should have a minimum size of '%min%' but '%size%' were detected",
        self::NOT_READABLE => "One or more files can not be read"
    );

    /**
     * Internal file array
     *
     * @var array
     */
    protected $_files;

    /**
     * Sets validator options
     *
     * Min limits the used diskspace for all files, when used with max=null it is the maximum filesize
     * It also accepts an array with the keys 'min' and 'max'
     *
     * @param  integer|array $min        Minimum diskspace for all files
     * @param  integer       $max        Maximum diskspace for all files (deprecated)
     * @param  boolean       $bytestring Use bytestring or real size ? (deprecated)
     * @return void
     */
    public function __construct($options)
    {
        $this->_files = array();
        $this->_setSize(0);

        if (1 < func_num_args()) {
            trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
            if ($options instanceof Zend_Config) {
                $options = $options->toArray();
            } elseif (is_scalar($options)) {
                $options = array('min' => $options);
            } elseif (!is_array($options)) {
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception('Invalid options to validator provided');
            }

            $argv = func_get_args();
            array_shift($argv);
            $options['max'] = array_shift($argv);
            if (!empty($argv)) {
                $options['bytestring'] = array_shift($argv);
            }
        }

        parent::__construct($options);
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the disk usage of all files is at least min and
     * not bigger than max (when max is not null).
     *
     * @param  string|array $value Real file to check for size
     * @param  array        $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        require_once 'Zend/Loader.php';
        if (is_string($value)) {
            $value = array($value);
        }

        $min  = $this->getMin(true);
        $max  = $this->getMax(true);
        $size = $this->_getSize();
        foreach ($value as $files) {
            // Is file readable ?
            if (!Zend_Loader::isReadable($files)) {
                $this->_throw($file, self::NOT_READABLE);
                continue;
            }

            if (!isset($this->_files[$files])) {
                $this->_files[$files] = $files;
            } else {
                // file already counted... do not count twice
                continue;
            }

            // limited to 2GB files
            $size += @filesize($files);
            $this->_setSize($size);
            if (($max !== null) && ($max < $size)) {
                if ($this->useByteString()) {
                    $this->setMax($this->_toByteString($max));
                    $this->_throw($file, self::TOO_BIG);
                    $this->setMax($max);
                } else {
                    $this->_throw($file, self::TOO_BIG);
                }
            }
        }

        // Check that aggregate files are >= minimum size
        if (($min !== null) && ($size < $min)) {
            if ($this->useByteString()) {
                $this->setMin($this->_toByteString($min));
                $this->_throw($file, self::TOO_SMALL);
                $this->setMin($min);
            } else {
                $this->_throw($file, self::TOO_SMALL);
            }
        }

        if (count($this->_messages) > 0) {
            return false;
        }

        return true;
    }
}
PKpG[Ra���Validate/File/Extension.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the file extension of a file
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Extension extends Zend_Validate_Abstract
{
    /**
     * @const string Error constants
     */
    const FALSE_EXTENSION = 'fileExtensionFalse';
    const NOT_FOUND       = 'fileExtensionNotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_EXTENSION => "The file '%value%' has a false extension",
        self::NOT_FOUND       => "The file '%value%' was not found"
    );

    /**
     * Internal list of extensions
     * @var string
     */
    protected $_extension = '';

    /**
     * Validate case sensitive
     *
     * @var boolean
     */
    protected $_case = false;

    /**
     * @var array Error message template variables
     */
    protected $_messageVariables = array(
        'extension' => '_extension'
    );

    /**
     * Sets validator options
     *
     * @param  string|array $extension
     * @param  boolean      $case      If true validation is done case sensitive
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        }

        if (1 < func_num_args()) {
            trigger_error('Multiple arguments to constructor are deprecated in favor of options array', E_USER_NOTICE);
            $case = func_get_arg(1);
            $this->setCase($case);
        }

        if (is_array($options) and isset($options['case'])) {
            $this->setCase($options['case']);
            unset($options['case']);
        }

        $this->setExtension($options);
    }

    /**
     * Returns the case option
     *
     * @return boolean
     */
    public function getCase()
    {
        return $this->_case;
    }

    /**
     * Sets the case to use
     *
     * @param  boolean $case
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function setCase($case)
    {
        $this->_case = (boolean) $case;
        return $this;
    }

    /**
     * Returns the set file extension
     *
     * @return array
     */
    public function getExtension()
    {
        $extension = explode(',', $this->_extension);

        return $extension;
    }

    /**
     * Sets the file extensions
     *
     * @param  string|array $extension The extensions to validate
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function setExtension($extension)
    {
        $this->_extension = null;
        $this->addExtension($extension);
        return $this;
    }

    /**
     * Adds the file extensions
     *
     * @param  string|array $extension The extensions to add for validation
     * @return Zend_Validate_File_Extension Provides a fluent interface
     */
    public function addExtension($extension)
    {
        $extensions = $this->getExtension();
        if (is_string($extension)) {
            $extension = explode(',', $extension);
        }

        foreach ($extension as $content) {
            if (empty($content) || !is_string($content)) {
                continue;
            }

            $extensions[] = trim($content);
        }
        $extensions = array_unique($extensions);

        // Sanity check to ensure no empty values
        foreach ($extensions as $key => $ext) {
            if (empty($ext)) {
                unset($extensions[$key]);
            }
        }

        $this->_extension = implode(',', $extensions);

        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the fileextension of $value is included in the
     * set extension list
     *
     * @param  string  $value Real file to check for extension
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        if ($file !== null) {
            $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
        } else {
            $info = pathinfo($value);
        }

        $extensions = $this->getExtension();

        if ($this->_case && (in_array($info['extension'], $extensions))) {
            return true;
        } else if (!$this->getCase()) {
            foreach ($extensions as $extension) {
                if (strtolower($extension) == strtolower($info['extension'])) {
                    return true;
                }
            }
        }

        return $this->_throw($file, self::FALSE_EXTENSION);
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if (null !== $file) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[P���	�	Validate/File/NotExists.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_Exists
 */
require_once 'Zend/Validate/File/Exists.php';

/**
 * Validator which checks if the destination file does not exist
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_NotExists extends Zend_Validate_File_Exists
{
    /**
     * @const string Error constants
     */
    const DOES_EXIST = 'fileNotExistsDoesExist';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_EXIST => "The file '%value%' does exist"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file does not exist in the set destinations
     *
     * @param  string  $value Real file to check for
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        $directories = $this->getDirectory(true);
        if (($file !== null) and (!empty($file['destination']))) {
            $directories[] = $file['destination'];
        } else if (!isset($file['name'])) {
            $file['name'] = $value;
        }

        foreach ($directories as $directory) {
            if (empty($directory)) {
                continue;
            }

            $check = true;
            if (file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) {
                return $this->_throw($file, self::DOES_EXIST);
            }
        }

        if (!isset($check)) {
            return $this->_throw($file, self::DOES_EXIST);
        }

        return true;
    }
}
PKpG[��g���Validate/File/Hash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * Validator for the hash of given files
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Hash extends Zend_Validate_Abstract
{
    /**
     * @const string Error constants
     */
    const DOES_NOT_MATCH = 'fileHashDoesNotMatch';
    const NOT_DETECTED   = 'fileHashHashNotDetected';
    const NOT_FOUND      = 'fileHashNotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_NOT_MATCH => "The file '%value%' does not match the given hashes",
        self::NOT_DETECTED   => "There was no hash detected for the given file",
        self::NOT_FOUND      => "The file '%value%' could not be found"
    );

    /**
     * Hash of the file
     *
     * @var string
     */
    protected $_hash;

    /**
     * Sets validator options
     *
     * @param  string|array $options
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_scalar($options)) {
            $options = array('hash1' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid options to validator provided');
        }

        if (1 < func_num_args()) {
            trigger_error('Multiple constructor options are deprecated in favor of a single options array', E_USER_NOTICE);
            $options['algorithm'] = func_get_arg(1);
        }

        $this->setHash($options);
    }

    /**
     * Returns the set hash values as array, the hash as key and the algorithm the value
     *
     * @return array
     */
    public function getHash()
    {
        return $this->_hash;
    }

    /**
     * Sets the hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setHash($options)
    {
        $this->_hash  = null;
        $this->addHash($options);

        return $this;
    }

    /**
     * Adds the hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addHash($options)
    {
        if (is_string($options)) {
            $options = array($options);
        } else if (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("False parameter given");
        }

        $known = hash_algos();
        if (!isset($options['algorithm'])) {
            $algorithm = 'crc32';
        } else {
            $algorithm = $options['algorithm'];
            unset($options['algorithm']);
        }

        if (!in_array($algorithm, $known)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("Unknown algorithm '{$algorithm}'");
        }

        foreach ($options as $value) {
            $this->_hash[$value] = $algorithm;
        }

        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the given file confirms the set hash
     *
     * @param  string $value Filename to check for hash
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        $algos  = array_unique(array_values($this->_hash));
        $hashes = array_unique(array_keys($this->_hash));
        foreach ($algos as $algorithm) {
            $filehash = hash_file($algorithm, $value);
            if ($filehash === false) {
                return $this->_throw($file, self::NOT_DETECTED);
            }

            foreach($hashes as $hash) {
                if ($filehash === $hash) {
                    return true;
                }
            }
        }

        return $this->_throw($file, self::DOES_NOT_MATCH);
    }

    /**
     * Throws an error of the given type
     *
     * @param  string $file
     * @param  string $errorType
     * @return false
     */
    protected function _throw($file, $errorType)
    {
        if ($file !== null) {
            $this->_value = $file['name'];
        }

        $this->_error($errorType);
        return false;
    }
}
PKpG[�܆*��Validate/File/Crc32.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_Hash
 */
require_once 'Zend/Validate/File/Hash.php';

/**
 * Validator for the crc32 hash of given files
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_Crc32 extends Zend_Validate_File_Hash
{
    /**
     * @const string Error constants
     */
    const DOES_NOT_MATCH = 'fileCrc32DoesNotMatch';
    const NOT_DETECTED   = 'fileCrc32NotDetected';
    const NOT_FOUND      = 'fileCrc32NotFound';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::DOES_NOT_MATCH => "The file '%value%' does not match the given crc32 hashes",
        self::NOT_DETECTED   => "There was no crc32 hash detected for the given file",
        self::NOT_FOUND      => "The file '%value%' could not be found"
    );

    /**
     * Hash of the file
     *
     * @var string
     */
    protected $_hash;

    /**
     * Sets validator options
     *
     * @param  string|array $options
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_scalar($options)) {
            $options = array('hash1' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Invalid options to validator provided');
        }

        $this->setCrc32($options);
    }

    /**
     * Returns all set crc32 hashes
     *
     * @return array
     */
    public function getCrc32()
    {
        return $this->getHash();
    }

    /**
     * Sets the crc32 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setHash($options)
    {
        if (!is_array($options)) {
            $options = array($options);
        }

        $options['algorithm'] = 'crc32';
        parent::setHash($options);
        return $this;
    }

    /**
     * Sets the crc32 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function setCrc32($options)
    {
        $this->setHash($options);
        return $this;
    }

    /**
     * Adds the crc32 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addHash($options)
    {
        if (!is_array($options)) {
            $options = array($options);
        }

        $options['algorithm'] = 'crc32';
        parent::addHash($options);
        return $this;
    }

    /**
     * Adds the crc32 hash for one or multiple files
     *
     * @param  string|array $options
     * @return Zend_Validate_File_Hash Provides a fluent interface
     */
    public function addCrc32($options)
    {
        $this->addHash($options);
        return $this;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the given file confirms the set hash
     *
     * @param  string $value Filename to check for hash
     * @param  array  $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_FOUND);
        }

        $hashes = array_unique(array_keys($this->_hash));
        $filehash = hash_file('crc32', $value);
        if ($filehash === false) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        foreach($hashes as $hash) {
            if ($filehash === $hash) {
                return true;
            }
        }

        return $this->_throw($file, self::DOES_NOT_MATCH);
    }
}PKpG[�wp���Validate/File/IsCompressed.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_MimeType
 */
require_once 'Zend/Validate/File/MimeType.php';

/**
 * Validator which checks if the file already exists in the directory
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_IsCompressed extends Zend_Validate_File_MimeType
{
    /**
     * @const string Error constants
     */
    const FALSE_TYPE   = 'fileIsCompressedFalseType';
    const NOT_DETECTED = 'fileIsCompressedNotDetected';
    const NOT_READABLE = 'fileIsCompressedNotReadable';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_TYPE   => "The file '%value%' is not compressed, '%type%' detected",
        self::NOT_DETECTED => "The mimetype of file '%value%' has not been detected",
        self::NOT_READABLE => "The file '%value%' can not be read"
    );

    /**
     * Sets validator options
     *
     * @param  string|array $compression
     * @return void
     */
    public function __construct($mimetype = array())
    {
        if (empty($mimetype)) {
            $mimetype = array(
                'application/x-tar',
                'application/x-cpio',
                'application/x-debian-package',
                'application/x-archive',
                'application/x-arc',
                'application/x-arj',
                'application/x-lharc',
                'application/x-lha',
                'application/x-rar',
                'application/zip',
                'application/zoo',
                'application/x-eet',
                'application/x-java-pack200',
                'application/x-compress',
                'application/x-gzip',
                'application/x-bzip2'
            );
        }

        $this->setMimeType($mimetype);
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file is compression with the set compression types
     *
     * @param  string  $value Real file to check for compression
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_READABLE);
        }

        if ($file !== null) {
            if (class_exists('finfo', false) && defined('MAGIC')) {
                $mime = new finfo(FILEINFO_MIME);
                $this->_type = $mime->file($value);
                unset($mime);
            } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
                $this->_type = mime_content_type($value);
            } else {
                $this->_type = $file['type'];
            }
        }

        if (empty($this->_type)) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        $compressions = $this->getMimeType(true);
        if (in_array($this->_type, $compressions)) {
            return true;
        }

        $types = explode('/', $this->_type);
        $types = array_merge($types, explode('-', $this->_type));
        foreach ($compressions as $mime) {
            if (in_array($mime, $types)) {
                return true;
            }
        }

        return $this->_throw($file, self::FALSE_TYPE);
    }
}
PKpG[V��[��Validate/File/IsImage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * @see Zend_Validate_File_MimeType
 */
require_once 'Zend/Validate/File/MimeType.php';

/**
 * Validator which checks if the file already exists in the directory
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_IsImage extends Zend_Validate_File_MimeType
{
    /**
     * @const string Error constants
     */
    const FALSE_TYPE   = 'fileIsImageFalseType';
    const NOT_DETECTED = 'fileIsImageNotDetected';
    const NOT_READABLE = 'fileIsImageNotReadable';

    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_TYPE   => "The file '%value%' is no image, '%type%' detected",
        self::NOT_DETECTED => "The mimetype of file '%value%' has not been detected",
        self::NOT_READABLE => "The file '%value%' can not be read"
    );

    /**
     * Sets validator options
     *
     * @param  string|array $mimetype
     * @return void
     */
    public function __construct($mimetype = array())
    {
        if (empty($mimetype)) {
            $mimetype = array(
                'image/x-quicktime',
                'image/jp2',
                'image/x-xpmi',
                'image/x-portable-bitmap',
                'image/x-portable-greymap',
                'image/x-portable-pixmap',
                'image/x-niff',
                'image/tiff',
                'image/png',
                'image/x-unknown',
                'image/gif',
                'image/x-ms-bmp',
                'application/dicom',
                'image/vnd.adobe.photoshop',
                'image/vnd.djvu',
                'image/x-cpi',
                'image/jpeg',
                'image/x-ico',
                'image/x-coreldraw',
                'image/svg+xml'
            );
        }

        $this->setMimeType($mimetype);
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the file is compression with the set compression types
     *
     * @param  string  $value Real file to check for compression
     * @param  array   $file  File data from Zend_File_Transfer
     * @return boolean
     */
    public function isValid($value, $file = null)
    {
        // Is file readable ?
        require_once 'Zend/Loader.php';
        if (!Zend_Loader::isReadable($value)) {
            return $this->_throw($file, self::NOT_READABLE);
        }

        if ($file !== null) {
            if (class_exists('finfo', false) && defined('MAGIC')) {
                $mime = new finfo(FILEINFO_MIME);
                $this->_type = $mime->file($value);
                unset($mime);
            } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
                $this->_type = mime_content_type($value);
            } else {
                $this->_type = $file['type'];
            }
        }

        if (empty($this->_type)) {
            return $this->_throw($file, self::NOT_DETECTED);
        }

        $compressions = $this->getMimeType(true);
        if (in_array($this->_type, $compressions)) {
            return true;
        }

        $types = explode('/', $this->_type);
        $types = array_merge($types, explode('-', $this->_type));
        foreach($compressions as $mime) {
            if (in_array($mime, $types)) {
                return true;
            }
        }

        return $this->_throw($file, self::FALSE_TYPE);
    }
}
PKpG[�b���
�
Validate/Barcode.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Barcode.php 8211 2008-02-20 14:29:24Z darby $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Barcode extends Zend_Validate_Abstract
{
    /**
     * Barcode validator
     *
     * @var Zend_Validate_Abstract
     */
    protected $_barcodeValidator;

    /**
     * Generates the standard validator object
     *
     * @param  string $barcodeType - Barcode validator to use
     * @return void
     * @throws Zend_Validate_Exception
     */
    public function __construct($barcodeType)
    {
        $this->setType($barcodeType);
    }

    /**
     * Sets a new barcode validator
     *
     * @param  string $barcodeType - Barcode validator to use
     * @return void
     * @throws Zend_Validate_Exception
     */
    public function setType($barcodeType)
    {
        switch (strtolower($barcodeType)) {
            case 'upc':
            case 'upc-a':
                $className = 'UpcA';
                break;
            case 'ean13':
            case 'ean-13':
                $className = 'Ean13';
                break;
            default:
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception("Barcode type '$barcodeType' is not supported'");
                break;
        }

        require_once 'Zend/Validate/Barcode/' . $className . '.php';

        $class = 'Zend_Validate_Barcode_' . $className;
        $this->_barcodeValidator = new $class;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains a valid barcode
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        return call_user_func(array($this->_barcodeValidator, 'isValid'), $value);
    }
}
PKpG[A)�u>u>Validate/Hostname.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Hostname.php 12274 2008-11-03 12:50:50Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Validate_Ip
 */
require_once 'Zend/Validate/Ip.php';

/**
 * Please note there are two standalone test scripts for testing IDN characters due to problems
 * with file encoding.
 *
 * The first is tests/Zend/Validate/HostnameTestStandalone.php which is designed to be run on
 * the command line.
 *
 * The second is tests/Zend/Validate/HostnameTestForm.php which is designed to be run via HTML
 * to allow users to test entering UTF-8 characters in a form.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname extends Zend_Validate_Abstract
{

    const IP_ADDRESS_NOT_ALLOWED  = 'hostnameIpAddressNotAllowed';
    const UNKNOWN_TLD             = 'hostnameUnknownTld';
    const INVALID_DASH            = 'hostnameDashCharacter';
    const INVALID_HOSTNAME_SCHEMA = 'hostnameInvalidHostnameSchema';
    const UNDECIPHERABLE_TLD      = 'hostnameUndecipherableTld';
    const INVALID_HOSTNAME        = 'hostnameInvalidHostname';
    const INVALID_LOCAL_NAME      = 'hostnameInvalidLocalName';
    const LOCAL_NAME_NOT_ALLOWED  = 'hostnameLocalNameNotAllowed';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::IP_ADDRESS_NOT_ALLOWED  => "'%value%' appears to be an IP address, but IP addresses are not allowed",
        self::UNKNOWN_TLD             => "'%value%' appears to be a DNS hostname but cannot match TLD against known list",
        self::INVALID_DASH            => "'%value%' appears to be a DNS hostname but contains a dash (-) in an invalid position",
        self::INVALID_HOSTNAME_SCHEMA => "'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'",
        self::UNDECIPHERABLE_TLD      => "'%value%' appears to be a DNS hostname but cannot extract TLD part",
        self::INVALID_HOSTNAME        => "'%value%' does not match the expected structure for a DNS hostname",
        self::INVALID_LOCAL_NAME      => "'%value%' does not appear to be a valid local network name",
        self::LOCAL_NAME_NOT_ALLOWED  => "'%value%' appears to be a local network name but local network names are not allowed"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'tld' => '_tld'
    );

    /**
     * Allows Internet domain names (e.g., example.com)
     */
    const ALLOW_DNS   = 1;

    /**
     * Allows IP addresses
     */
    const ALLOW_IP    = 2;

    /**
     * Allows local network names (e.g., localhost, www.localdomain)
     */
    const ALLOW_LOCAL = 4;

    /**
     * Allows all types of hostnames
     */
    const ALLOW_ALL   = 7;

    /**
     * Whether IDN domains are validated
     *
     * @var boolean
     */
    private $_validateIdn = true;

    /**
     * Whether TLDs are validated against a known list
     *
     * @var boolean
     */
    private $_validateTld = true;

    /**
     * Bit field of ALLOW constants; determines which types of hostnames are allowed
     *
     * @var integer
     */
    protected $_allow;

    /**
     * Bit field of CHECK constants; determines what additional hostname checks to make
     *
     * @var unknown_type
     */
    // protected $_check;

    /**
     * Array of valid top-level-domains
     *
     * @var array
     * @see ftp://data.iana.org/TLD/tlds-alpha-by-domain.txt  List of all TLDs by domain
     */
    protected $_validTlds = array(
        'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
        'aq', 'ar', 'arpa', 'as', 'asia', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb',
        'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
        'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd',
        'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
        'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do',
        'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj',
        'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh',
        'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
        'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il',
        'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm',
        'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw',
        'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu',
        'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm',
        'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv',
        'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng',
        'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
        'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt',
        'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd',
        'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr',
        'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tel', 'tf', 'tg', 'th', 'tj',
        'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw',
        'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've',
        'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm',
        'zw'
        );

    /**
     * @var string
     */
    protected $_tld;

    /**
     * Sets validator options
     *
     * @param integer          $allow       OPTIONAL Set what types of hostname to allow (default ALLOW_DNS)
     * @param boolean          $validateIdn OPTIONAL Set whether IDN domains are validated (default true)
     * @param boolean          $validateTld OPTIONAL Set whether the TLD element of a hostname is validated (default true)
     * @param Zend_Validate_Ip $ipValidator OPTIONAL
     * @return void
     * @see http://www.iana.org/cctld/specifications-policies-cctlds-01apr02.htm  Technical Specifications for ccTLDs
     */
    public function __construct($allow = self::ALLOW_DNS, $validateIdn = true, $validateTld = true, Zend_Validate_Ip $ipValidator = null)
    {
        // Set allow options
        $this->setAllow($allow);

        // Set validation options
        $this->_validateIdn = $validateIdn;
        $this->_validateTld = $validateTld;

        $this->setIpValidator($ipValidator);
    }

    /**
     * @param Zend_Validate_Ip $ipValidator OPTIONAL
     * @return void;
     */
    public function setIpValidator(Zend_Validate_Ip $ipValidator = null)
    {
        if ($ipValidator === null) {
            $ipValidator = new Zend_Validate_Ip();
        }
        $this->_ipValidator = $ipValidator;
    }

    /**
     * Returns the allow option
     *
     * @return integer
     */
    public function getAllow()
    {
        return $this->_allow;
    }

    /**
     * Sets the allow option
     *
     * @param  integer $allow
     * @return Zend_Validate_Hostname Provides a fluent interface
     */
    public function setAllow($allow)
    {
        $this->_allow = $allow;
        return $this;
    }

    /**
     * Set whether IDN domains are validated
     *
     * This only applies when DNS hostnames are validated
     *
     * @param boolean $allowed Set allowed to true to validate IDNs, and false to not validate them
     */
    public function setValidateIdn ($allowed)
    {
        $this->_validateIdn = (bool) $allowed;
    }

    /**
     * Set whether the TLD element of a hostname is validated
     *
     * This only applies when DNS hostnames are validated
     *
     * @param boolean $allowed Set allowed to true to validate TLDs, and false to not validate them
     */
    public function setValidateTld ($allowed)
    {
        $this->_validateTld = (bool) $allowed;
    }

    /**
     * Sets the check option
     *
     * @param  integer $check
     * @return Zend_Validate_Hostname Provides a fluent interface
     */
    /*
    public function setCheck($check)
    {
        $this->_check = $check;
        return $this;
    }
     */

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if the $value is a valid hostname with respect to the current allow option
     *
     * @param  string $value
     * @throws Zend_Validate_Exception if a fatal error occurs for validation process
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;

        $this->_setValue($valueString);

        // Check input against IP address schema
        if ($this->_ipValidator->setTranslator($this->getTranslator())->isValid($valueString)) {
            if (!($this->_allow & self::ALLOW_IP)) {
                $this->_error(self::IP_ADDRESS_NOT_ALLOWED);
                return false;
            } else{
                return true;
            }
        }

        // Check input against DNS hostname schema
        $domainParts = explode('.', $valueString);
        if ((count($domainParts) > 1) && (strlen($valueString) >= 4) && (strlen($valueString) <= 254)) {
            $status = false;

            do {
                // First check TLD
                if (preg_match('/([a-z]{2,10})$/i', end($domainParts), $matches)) {

                    reset($domainParts);

                    // Hostname characters are: *(label dot)(label dot label); max 254 chars
                    // label: id-prefix [*ldh{61} id-prefix]; max 63 chars
                    // id-prefix: alpha / digit
                    // ldh: alpha / digit / dash

                    // Match TLD against known list
                    $this->_tld = strtolower($matches[1]);
                    if ($this->_validateTld) {
                        if (!in_array($this->_tld, $this->_validTlds)) {
                            $this->_error(self::UNKNOWN_TLD);
                            $status = false;
                            break;
                        }
                    }

                    /**
                     * Match against IDN hostnames
                     * @see Zend_Validate_Hostname_Interface
                     */
                    $labelChars = 'a-z0-9';
                    $utf8 = false;
                    $classFile = 'Zend/Validate/Hostname/' . ucfirst($this->_tld) . '.php';
                    if ($this->_validateIdn) {
                        if (Zend_Loader::isReadable($classFile)) {

                            // Load additional characters
                            $className = 'Zend_Validate_Hostname_' . ucfirst($this->_tld);
                            Zend_Loader::loadClass($className);
                            $labelChars .= call_user_func(array($className, 'getCharacters'));
                            $utf8 = true;
                        }
                    }

                    // Keep label regex short to avoid issues with long patterns when matching IDN hostnames
                    $regexLabel = '/^[' . $labelChars . '\x2d]{1,63}$/i';
                    if ($utf8) {
                        $regexLabel .= 'u';
                    }

                    // Check each hostname part
                    $valid = true;
                    foreach ($domainParts as $domainPart) {

                        // Check dash (-) does not start, end or appear in 3rd and 4th positions
                        if (strpos($domainPart, '-') === 0 ||
                        (strlen($domainPart) > 2 && strpos($domainPart, '-', 2) == 2 && strpos($domainPart, '-', 3) == 3) ||
                        strrpos($domainPart, '-') === strlen($domainPart) - 1) {

                            $this->_error(self::INVALID_DASH);
                            $status = false;
                            break 2;
                        }

                        // Check each domain part
                        $status = @preg_match($regexLabel, $domainPart);
                        if ($status === false) {
                            /**
                             * Regex error
                             * @see Zend_Validate_Exception
                             */
                            require_once 'Zend/Validate/Exception.php';
                            throw new Zend_Validate_Exception('Internal error: DNS validation failed');
                        } elseif ($status === 0) {
                            $valid = false;
                        }
                    }

                    // If all labels didn't match, the hostname is invalid
                    if (!$valid) {
                        $this->_error(self::INVALID_HOSTNAME_SCHEMA);
                        $status = false;
                    }

                } else {
                    // Hostname not long enough
                    $this->_error(self::UNDECIPHERABLE_TLD);
                    $status = false;
                }
            } while (false);

            // If the input passes as an Internet domain name, and domain names are allowed, then the hostname
            // passes validation
            if ($status && ($this->_allow & self::ALLOW_DNS)) {
                return true;
            }
        } else {
            $this->_error(self::INVALID_HOSTNAME);
        }

        // Check input against local network name schema; last chance to pass validation
        $regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/';
        $status = @preg_match($regexLocal, $valueString);
        if (false === $status) {
            /**
             * Regex error
             * @see Zend_Validate_Exception
             */
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception('Internal error: local network name validation failed');
        }

        // If the input passes as a local network name, and local network names are allowed, then the
        // hostname passes validation
        $allowLocal = $this->_allow & self::ALLOW_LOCAL;
        if ($status && $allowLocal) {
            return true;
        }

        // If the input does not pass as a local network name, add a message
        if (!$status) {
            $this->_error(self::INVALID_LOCAL_NAME);
        }

        // If local network names are not allowed, add a message
        if ($status && !$allowLocal) {
            $this->_error(self::LOCAL_NAME_NOT_ALLOWED);
        }

        return false;
    }

    /**
     * Throws an exception if a regex for $type does not exist
     *
     * @param  string $type
     * @throws Zend_Validate_Exception
     * @return Zend_Validate_Hostname Provides a fluent interface
     */
    /*
    protected function _checkRegexType($type)
    {
        if (!isset($this->_regex[$type])) {
            require_once 'Zend/Validate/Exception.php';
            throw new Zend_Validate_Exception("'$type' must be one of ('" . implode(', ', array_keys($this->_regex))
                                            . "')");
        }
        return $this;
    }
     */

}
PKpG[{OUy"y"Validate/EmailAddress.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: EmailAddress.php 13253 2008-12-14 20:28:06Z thomas $
 */

/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';

/**
 * @see Zend_Validate_Hostname
 */
require_once 'Zend/Validate/Hostname.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_EmailAddress extends Zend_Validate_Abstract
{
    const INVALID            = 'emailAddressInvalid';
    const INVALID_HOSTNAME   = 'emailAddressInvalidHostname';
    const INVALID_MX_RECORD  = 'emailAddressInvalidMxRecord';
    const DOT_ATOM           = 'emailAddressDotAtom';
    const QUOTED_STRING      = 'emailAddressQuotedString';
    const INVALID_LOCAL_PART = 'emailAddressInvalidLocalPart';
    const LENGTH_EXCEEDED    = 'emailAddressLengthExceeded';

    /**
     * @var array
     */
    protected $_messageTemplates = array(
        self::INVALID            => "'%value%' is not a valid email address in the basic format local-part@hostname",
        self::INVALID_HOSTNAME   => "'%hostname%' is not a valid hostname for email address '%value%'",
        self::INVALID_MX_RECORD  => "'%hostname%' does not appear to have a valid MX record for the email address '%value%'",
        self::DOT_ATOM           => "'%localPart%' not matched against dot-atom format",
        self::QUOTED_STRING      => "'%localPart%' not matched against quoted-string format",
        self::INVALID_LOCAL_PART => "'%localPart%' is not a valid local part for email address '%value%'",
        self::LENGTH_EXCEEDED    => "'%value%' exceeds the allowed length"
    );

    /**
     * @var array
     */
    protected $_messageVariables = array(
        'hostname'  => '_hostname',
        'localPart' => '_localPart'
    );

    /**
     * Local object for validating the hostname part of an email address
     *
     * @var Zend_Validate_Hostname
     */
    public $hostnameValidator;

    /**
     * Whether we check for a valid MX record via DNS
     *
     * @var boolean
     */
    protected $_validateMx = false;

    /**
     * @var string
     */
    protected $_hostname;

    /**
     * @var string
     */
    protected $_localPart;

    /**
     * Instantiates hostname validator for local use
     *
     * You can pass a bitfield to determine what types of hostnames are allowed.
     * These bitfields are defined by the ALLOW_* constants in Zend_Validate_Hostname
     * The default is to allow DNS hostnames only
     *
     * @param integer                $allow             OPTIONAL
     * @param bool                   $validateMx        OPTIONAL
     * @param Zend_Validate_Hostname $hostnameValidator OPTIONAL
     * @return void
     */
    public function __construct($allow = Zend_Validate_Hostname::ALLOW_DNS, $validateMx = false, Zend_Validate_Hostname $hostnameValidator = null)
    {
        $this->setValidateMx($validateMx);
        $this->setHostnameValidator($hostnameValidator, $allow);
    }

    /**
     * @param Zend_Validate_Hostname $hostnameValidator OPTIONAL
     * @param int                    $allow             OPTIONAL
     * @return void
     */
    public function setHostnameValidator(Zend_Validate_Hostname $hostnameValidator = null, $allow = Zend_Validate_Hostname::ALLOW_DNS)
    {
        if ($hostnameValidator === null) {
            $hostnameValidator = new Zend_Validate_Hostname($allow);
        }
        $this->hostnameValidator = $hostnameValidator;
    }

    /**
     * Whether MX checking via dns_get_mx is supported or not
     *
     * This currently only works on UNIX systems
     *
     * @return boolean
     */
    public function validateMxSupported()
    {
        return function_exists('dns_get_mx');
    }

    /**
     * Set whether we check for a valid MX record via DNS
     *
     * This only applies when DNS hostnames are validated
     *
     * @param boolean $allowed Set allowed to true to validate for MX records, and false to not validate them
     */
    public function setValidateMx($allowed)
    {
        $this->_validateMx = (bool) $allowed;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value is a valid email address
     * according to RFC2822
     *
     * @link   http://www.ietf.org/rfc/rfc2822.txt RFC2822
     * @link   http://www.columbia.edu/kermit/ascii.html US-ASCII characters
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;
        $matches     = array();
        $length      = true;

        $this->_setValue($valueString);

        // Split email address up and disallow '..'
        if ((strpos($valueString, '..') !== false) or
            (!preg_match('/^(.+)@([^@]+)$/', $valueString, $matches))) {
            $this->_error(self::INVALID);
            return false;
        }

        $this->_localPart = $matches[1];
        $this->_hostname  = $matches[2];

        if ((strlen($this->_localPart) > 64) || (strlen($this->_hostname) > 255)) {
            $length = false;
            $this->_error(self::LENGTH_EXCEEDED);
        }

        // Match hostname part
        $hostnameResult = $this->hostnameValidator->setTranslator($this->getTranslator())
                               ->isValid($this->_hostname);
        if (!$hostnameResult) {
            $this->_error(self::INVALID_HOSTNAME);

            // Get messages and errors from hostnameValidator
            foreach ($this->hostnameValidator->getMessages() as $code => $message) {
                $this->_messages[$code] = $message;
            }
            foreach ($this->hostnameValidator->getErrors() as $error) {
                $this->_errors[] = $error;
            }
        } else if ($this->_validateMx) {
            // MX check on hostname via dns_get_record()
            if ($this->validateMxSupported()) {
                $result = dns_get_mx($this->_hostname, $mxHosts);
                if (count($mxHosts) < 1) {
                    $hostnameResult = false;
                    $this->_error(self::INVALID_MX_RECORD);
                }
            } else {
                /**
                 * MX checks are not supported by this system
                 * @see Zend_Validate_Exception
                 */
                require_once 'Zend/Validate/Exception.php';
                throw new Zend_Validate_Exception('Internal error: MX checking not available on this system');
            }
        }

        // First try to match the local part on the common dot-atom format
        $localResult = false;

        // Dot-atom characters are: 1*atext *("." 1*atext)
        // atext: ALPHA / DIGIT / and "!", "#", "$", "%", "&", "'", "*",
        //        "-", "/", "=", "?", "^", "_", "`", "{", "|", "}", "~"
        $atext = 'a-zA-Z0-9\x21\x23\x24\x25\x26\x27\x2a\x2b\x2d\x2f\x3d\x3f\x5e\x5f\x60\x7b\x7c\x7d';
        if (preg_match('/^[' . $atext . ']+(\x2e+[' . $atext . ']+)*$/', $this->_localPart)) {
            $localResult = true;
        } else {
            // Try quoted string format

            // Quoted-string characters are: DQUOTE *([FWS] qtext/quoted-pair) [FWS] DQUOTE
            // qtext: Non white space controls, and the rest of the US-ASCII characters not
            //   including "\" or the quote character
            $noWsCtl    = '\x01-\x08\x0b\x0c\x0e-\x1f\x7f';
            $qtext      = $noWsCtl . '\x21\x23-\x5b\x5d-\x7e';
            $ws         = '\x20\x09';
            if (preg_match('/^\x22([' . $ws . $qtext . '])*[$ws]?\x22$/', $this->_localPart)) {
                $localResult = true;
            } else {
                $this->_error(self::DOT_ATOM);
                $this->_error(self::QUOTED_STRING);
                $this->_error(self::INVALID_LOCAL_PART);
            }
        }

        // If both parts valid, return true
        if ($localResult && $hostnameResult && $length) {
            return true;
        } else {
            return false;
        }
    }
}
PKpG[9�=��Validate/Ccnum.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ccnum.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Ccnum extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value is not of valid length
     */
    const LENGTH   = 'ccnumLength';

    /**
     * Validation failure message key for when the value fails the mod-10 checksum
     */
    const CHECKSUM = 'ccnumChecksum';

    /**
     * Digits filter for input
     *
     * @var Zend_Filter_Digits
     */
    protected static $_filter = null;

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::LENGTH   => "'%value%' must contain between 13 and 19 digits",
        self::CHECKSUM => "Luhn algorithm (mod-10 checksum) failed on '%value%'"
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value follows the Luhn algorithm (mod-10 checksum)
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_setValue($value);

        if (null === self::$_filter) {
            /**
             * @see Zend_Filter_Digits
             */
            require_once 'Zend/Filter/Digits.php';
            self::$_filter = new Zend_Filter_Digits();
        }

        $valueFiltered = self::$_filter->filter($value);

        $length = strlen($valueFiltered);

        if ($length < 13 || $length > 19) {
            $this->_error(self::LENGTH);
            return false;
        }

        $sum    = 0;
        $weight = 2;

        for ($i = $length - 2; $i >= 0; $i--) {
            $digit = $weight * $valueFiltered[$i];
            $sum += floor($digit / 10) + $digit % 10;
            $weight = $weight % 2 + 1;
        }

        if ((10 - $sum % 10) % 10 != $valueFiltered[$length - 1]) {
            $this->_error(self::CHECKSUM, $valueFiltered);
            return false;
        }

        return true;
    }

}
PKpG[�>�\((Validate/Barcode/Ean13.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ean13.php 11791 2008-10-09 18:19:13Z andries $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Barcode_Ean13 extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value is
     * an invalid barcode
     */
    const INVALID = 'invalid';

    /**
     * Validation failure message key for when the value is
     * not 13 characters long
     */
    const INVALID_LENGTH = 'invalidLength';

    /**
     * Validation failure message key for when the value
     * does not only contain numeric characters
     */
    const NOT_NUMERIC = 'ean13NotNumeric';

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::INVALID        => "'%value%' is an invalid EAN-13 barcode",
        self::INVALID_LENGTH => "'%value%' should be 13 characters",
        self::NOT_NUMERIC    => "'%value%' should contain only numeric characters",
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains a valid barcode
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        if (false === ctype_digit($value)) {
            $this->_error(self::NOT_NUMERIC);
            return false;
        }

        $valueString = (string) $value;
        $this->_setValue($valueString);

        if (strlen($valueString) !== 13) {
            $this->_error(self::INVALID_LENGTH);
            return false;
        }

        $barcode = strrev(substr($valueString, 0, -1));
        $oddSum  = 0;
        $evenSum = 0;

        for ($i = 0; $i < 12; $i++) {
            if ($i % 2 === 0) {
                $oddSum += $barcode[$i] * 3;
            } elseif ($i % 2 === 1) {
                $evenSum += $barcode[$i];
            }
        }

        $calculation = ($oddSum + $evenSum) % 10;
        $checksum    = ($calculation === 0) ? 0 : 10 - $calculation;

        if ($valueString[12] != $checksum) {
            $this->_error(self::INVALID);
            return false;
        }

        return true;
    }
}
PKpG[j�)ۣ
�
Validate/Barcode/UpcA.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: UpcA.php 8210 2008-02-20 14:09:05Z andries $
 */


/**
 * @see Zend_Validate_Abstract
 */
require_once 'Zend/Validate/Abstract.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Barcode_UpcA extends Zend_Validate_Abstract
{
    /**
     * Validation failure message key for when the value is
     * an invalid barcode
     */
    const INVALID = 'invalid';

    /**
     * Validation failure message key for when the value is
     * not 12 characters long
     */
    const INVALID_LENGTH = 'invalidLength';

    /**
     * Validation failure message template definitions
     *
     * @var array
     */
    protected $_messageTemplates = array(
        self::INVALID        => "'%value%' is an invalid UPC-A barcode",
        self::INVALID_LENGTH => "'%value%' should be 12 characters",
    );

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if and only if $value contains a valid barcode
     *
     * @param  string $value
     * @return boolean
     */
    public function isValid($value)
    {
        $valueString = (string) $value;
        $this->_setValue($valueString);

        if (strlen($valueString) !== 12) {
            $this->_error(self::INVALID_LENGTH);
            return false;
        }

        $barcode = substr($valueString, 0, -1);
        $oddSum  = 0;
        $evenSum = 0;

        for ($i = 0; $i < 11; $i++) {
            if ($i % 2 === 0) {
                $oddSum += $barcode[$i] * 3;
            } elseif ($i % 2 === 1) {
                $evenSum += $barcode[$i];
            }
        }

        $calculation = ($oddSum + $evenSum) % 10;
        $checksum    = ($calculation === 0) ? 0 : 10 - $calculation;

        if ($valueString[11] != $checksum) {
            $this->_error(self::INVALID);
            return false;
        }

        return true;
    }
}
PKpG[N���Validate/Hostname/Se.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Se.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_Se implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.iis.se/english/IDN_campaignsite.shtml?lang=en Sweden (.SE)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00E5}\x{00E4}\x{00F6}\x{00FC}\x{00E9}';
    }

}PKpG[Pĝ��Validate/Hostname/Li.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Li.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_Li implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 Liechtenstein (.LI)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}';
    }

}PKpG[�~���Validate/Hostname/Hu.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Hu.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_Hu implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.domain.hu/domain/English/szabalyzat.html Hungary (.HU)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00E1}\x{00E9}\x{00ED}\x{00F3}\x{00F6}\x{0151}\x{00FA}\x{00FC}\x{0171}';
    }

}PKpG[�7�i��Validate/Hostname/At.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: At.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_At implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.nic.at/en/service/technical_information/idn/charset_converter/ Austria (.AT)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}\x{0161}\x{017E}';
    }

}PKpG[SD����Validate/Hostname/Ch.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ch.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_Ch implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 Switzerland (.CH)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00EO}-\x{00F6}\x{00F8}-\x{00FF}\x{0153}';
    }

}PKpG[7�j��Validate/Hostname/Fi.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Fi.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_Fi implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.ficora.fi/en/index/palvelut/fiverkkotunnukset/aakkostenkaytto.html Finland (.FI)
     * @return string
     */
    static function getCharacters()
    {
        return '\x{00E5}\x{00E4}\x{00F6}';
    }

}PKpG[�53	3	Validate/Hostname/De.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: De.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_De implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.denic.de/en/domains/idns/liste.html Germany (.DE) alllowed characters
     * @return string
     */
    static function getCharacters()
    {
        return  '\x{00E1}\x{00E0}\x{0103}\x{00E2}\x{00E5}\x{00E4}\x{00E3}\x{0105}\x{0101}\x{00E6}\x{0107}' .
                '\x{0109}\x{010D}\x{010B}\x{00E7}\x{010F}\x{0111}\x{00E9}\x{00E8}\x{0115}\x{00EA}\x{011B}' .
                '\x{00EB}\x{0117}\x{0119}\x{0113}\x{011F}\x{011D}\x{0121}\x{0123}\x{0125}\x{0127}\x{00ED}' .
                '\x{00EC}\x{012D}\x{00EE}\x{00EF}\x{0129}\x{012F}\x{012B}\x{0131}\x{0135}\x{0137}\x{013A}' .
                '\x{013E}\x{013C}\x{0142}\x{0144}\x{0148}\x{00F1}\x{0146}\x{014B}\x{00F3}\x{00F2}\x{014F}' .
                '\x{00F4}\x{00F6}\x{0151}\x{00F5}\x{00F8}\x{014D}\x{0153}\x{0138}\x{0155}\x{0159}\x{0157}' .
                '\x{015B}\x{015D}\x{0161}\x{015F}\x{0165}\x{0163}\x{0167}\x{00FA}\x{00F9}\x{016D}\x{00FB}' .
                '\x{016F}\x{00FC}\x{0171}\x{0169}\x{0173}\x{016B}\x{0175}\x{00FD}\x{0177}\x{00FF}\x{017A}' .
                '\x{017E}\x{017C}\x{00F0}\x{00FE}';
    }

}PKpG[G��??Validate/Hostname/Interface.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * UTF-8 characters should be written as four character hex codes \x{XXXX}
     * For example é (lowercase e with acute) is represented by the hex code \x{00E9}
     *
     * You only need to include lower-case equivalents of characters since the hostname
     * check is case-insensitive
     *
     * Please document the supported TLDs in the documentation file at:
     * manual/en/module_specs/Zend_Validate-Hostname.xml
     *
     * @see http://en.wikipedia.org/wiki/Internationalized_domain_name
     * @see http://www.iana.org/cctld/ Country-Code Top-Level Domains (TLDs)
     * @see http://www.columbia.edu/kermit/utf8-t1.html UTF-8 characters
     * @return string
     */
    static function getCharacters();

}PKpG[Pm�]]Validate/Hostname/No.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: No.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Validate_Hostname_Interface
 */
require_once 'Zend/Validate/Hostname/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_Hostname_No implements Zend_Validate_Hostname_Interface
{

    /**
     * Returns UTF-8 characters allowed in DNS hostnames for the specified Top-Level-Domain
     *
     * @see http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html Norway (.NO)
     * @return string
     */
    static function getCharacters()
    {
        return  '\x00E1\x00E0\x00E4\x010D\x00E7\x0111\x00E9\x00E8\x00EA\x\x014B' .
                '\x0144\x00F1\x00F3\x00F2\x00F4\x00F6\x0161\x0167\x00FC\x017E\x00E6' .
                '\x00F8\x00E5';
    }

}
PKpG[5���VVGdata/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_App_MediaEntry
 */
require_once 'Zend/Gdata/App/MediaEntry.php';

/**
 * Represents the Gdata flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Entry extends Zend_Gdata_App_MediaEntry
{

    protected $_entryClassName = 'Zend_Gdata_Entry';

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        // ETags are special. We only support them in protocol >= 2.X.
        // This will be duplicated by the HTTP ETag header.
        if ($majorVersion >= 2) {
            if ($this->_etag != null) {
                $element->setAttributeNS($this->lookupNamespace('gd'),
                                         'gd:etag',
                                         $this->_etag);
            }
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'content':
            $content = new Zend_Gdata_App_Extension_Content();
            $content->transferFromDOM($child);
            $this->_content = $content;
            break;
        case $this->lookupNamespace('atom') . ':' . 'published':
            $published = new Zend_Gdata_App_Extension_Published();
            $published->transferFromDOM($child);
            $this->_published = $published;
            break;
        case $this->lookupNamespace('atom') . ':' . 'source':
            $source = new Zend_Gdata_App_Extension_Source();
            $source->transferFromDOM($child);
            $this->_source = $source;
            break;
        case $this->lookupNamespace('atom') . ':' . 'summary':
            $summary = new Zend_Gdata_App_Extension_Summary();
            $summary->transferFromDOM($child);
            $this->_summary = $summary;
            break;
        case $this->lookupNamespace('app') . ':' . 'control':
            $control = new Zend_Gdata_App_Extension_Control();
            $control->transferFromDOM($child);
            $this->_control = $control;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'etag':
            // ETags are special, since they can be conveyed by either the
            // HTTP ETag header or as an XML attribute.
            $etag = $attribute->nodeValue;
            if (is_null($this->_etag)) {
                $this->_etag = $etag;
            }
            elseif ($this->_etag != $etag) {
                require_once('Zend/Gdata/App/IOException.php');
                throw new Zend_Gdata_App_IOException("ETag mismatch");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
            break;
        }
    }

}
PKpG[;���q#q#Gdata/Health.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Health_ProfileFeed
 */
require_once 'Zend/Gdata/Health/ProfileFeed.php';

/**
 * @see Zend_Gdata_Health_ProfileListFeed
 */
require_once 'Zend/Gdata/Health/ProfileListFeed.php';

/**
 * @see Zend_Gdata_Health_ProfileListEntry
 */
require_once 'Zend/Gdata/Health/ProfileListEntry.php';

/**
 * @see Zend_Gdata_Health_ProfileEntry
 */
require_once 'Zend/Gdata/Health/ProfileEntry.php';

/**
 * Service class for interacting with the Google Health Data API
 *
 * @link http://code.google.com/apis/health
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health extends Zend_Gdata
{
    /**
     * URIs of the AuthSub/OAuth feeds.
     */
    const AUTHSUB_PROFILE_FEED_URI = 
        'https://www.google.com/health/feeds/profile/default';
    const AUTHSUB_REGISTER_FEED_URI = 
        'https://www.google.com/health/feeds/register/default';

    /**
     * URIs of the ClientLogin feeds.
     */
    const CLIENTLOGIN_PROFILELIST_FEED_URI = 
        'https://www.google.com/health/feeds/profile/list';
    const CLIENTLOGIN_PROFILE_FEED_URI = 
        'https://www.google.com/health/feeds/profile/ui';
    const CLIENTLOGIN_REGISTER_FEED_URI = 
        'https://www.google.com/health/feeds/register/ui';

    /**
     * Authentication service names for Google Health and the H9 Sandbox.
     */
    const HEALTH_SERVICE_NAME = 'health';
    const H9_SANDBOX_SERVICE_NAME = 'weaver';

    /**
     * Profile ID used for all API interactions.  This can only be set when
     * using ClientLogin for authentication.
     *
     * @var string
     */
    private $_profileID = null;

    /**
     * True if API calls should be made to the H9 developer sandbox at /h9
     * rather than /health
     *
     * @var bool
     */
    private $_useH9Sandbox = false;

    public static $namespaces =
        array('ccr' => 'urn:astm-org:CCR',
              'batch' => 'http://schemas.google.com/gdata/batch',
              'h9m' => 'http://schemas.google.com/health/metadata',
              'gAcl' => 'http://schemas.google.com/acl/2007',
              'gd' => 'http://schemas.google.com/g/2005');

    /**
     * Create Zend_Gdata_Health object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *     when communicating with the Google Health servers.
     * @param string $applicationId The identity of the application in the form
     *     of Company-AppName-Version
     * @param bool $useH9Sandbox True if the H9 Developer's Sandbox should be
     *     used instead of production Google Health.
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0', $useH9Sandbox = false)
    {
        $this->registerPackage('Zend_Gdata_Health');
        $this->registerPackage('Zend_Gdata_Health_Extension_Ccr');
        parent::__construct($client, $applicationId);
        $this->_useH9Sandbox = $useH9Sandbox;
    }

    /**
     * Gets the id of the user's profile
     *
     * @return string The profile id
     */
    public function getProfileID()
    {
        return $this->_profileID;
    }

    /**
     * Sets which of the user's profiles will be used
     *
     * @param string $id The profile ID
     * @return Zend_Gdata_Health Provides a fluent interface
     */
    public function setProfileID($id) {
        $this->_profileID = $id;
        return $this;
    }

     /**
     * Retrieves the list of profiles associated with the user's ClientLogin
     * credentials.
     *
     * @param string $query The query of the feed as a URL or Query object
     * @return Zend_Gdata_Feed
     */
    public function getHealthProfileListFeed($query = null)
    {
        if ($this->_httpClient->getClientLoginToken() === null) {
            require_once 'Zend/Gdata/App/AuthException.php';
            throw new Zend_Gdata_App_AuthException(
                'Profiles list feed is only available when using ClientLogin');
        }

        if($query === null)  {
            $uri = self::CLIENTLOGIN_PROFILELIST_FEED_URI;
        } else if ($query instanceof Zend_Gdata_Query) {
            $uri = $query->getQueryUrl();
        } else {
            $uri = $query;
        }

        // use correct feed for /h9 or /health
        if ($this->_useH9Sandbox) {
            $uri = preg_replace('/\/health\//', '/h9/', $uri);
        }

        return parent::getFeed($uri, 'Zend_Gdata_Health_ProfileListFeed');
    }

    /**
     * Retrieve a user's profile as a feed object.  If ClientLogin is used, the
     * profile associated with $this->_profileID is returned, otherwise
     * the profile associated with the AuthSub token is read.
     *
     * @param mixed $query The query for the feed, as a URL or Query
     * @return Zend_Gdata_Health_ProfileFeed
     */
    public function getHealthProfileFeed($query = null)
    {
        if ($this->_httpClient->getClientLoginToken() !== null &&
            $this->getProfileID() == null) {
            require_once 'Zend/Gdata/App/AuthException.php';
            throw new Zend_Gdata_App_AuthException(
                'Profile ID must not be null. Did you call setProfileID()?');
        }

        if ($query instanceof Zend_Gdata_Query) {
            $uri = $query->getQueryUrl();
        } else if ($this->_httpClient->getClientLoginToken() !== null &&
                   $query == null) {
            $uri = self::CLIENTLOGIN_PROFILE_FEED_URI . '/' . $this->getProfileID();
        } else if ($query === null) {
            $uri = self::AUTHSUB_PROFILE_FEED_URI;
        } else {
            $uri = $query;
        }

        // use correct feed for /h9 or /health
        if ($this->_useH9Sandbox) {
            $uri = preg_replace('/\/health\//', '/h9/', $uri);
        }

        return parent::getFeed($uri, 'Zend_Gdata_Health_ProfileFeed');
    }

    /**
     * Retrieve a profile entry object
     *
     * @param mixed $query The query for the feed, as a URL or Query
     * @return Zend_Gdata_Health_ProfileEntry
     */
    public function getHealthProfileEntry($query = null)
    {
        if ($query === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                'Query must not be null');
        } else if ($query instanceof Zend_Gdata_Query) {
            $uri = $query->getQueryUrl();
        } else {
            $uri = $query;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Health_ProfileEntry');
    }

    /**
     * Posts a new notice using the register feed.  This function constructs
     * the atom profile entry.
     *
     * @param string $subject The subject line of the notice
     * @param string $body The message body of the notice
     * @param string $bodyType The (optional) type of message body
     *     (text, xhtml, html, etc.)
     * @param string $ccrXML The (optional) CCR to add to the user's profile
     * @return Zend_Gdata_Health_ProfileEntry
     */
    public function sendHealthNotice($subject, $body, $bodyType = null, $ccrXML = null)
    {
        if ($this->_httpClient->getClientLoginToken()) {
            $profileID = $this->getProfileID();
            if ($profileID !== null) {
                $uri = self::CLIENTLOGIN_REGISTER_FEED_URI . '/' . $profileID;
            } else {
                require_once 'Zend/Gdata/App/AuthException.php';
                throw new Zend_Gdata_App_AuthException(
                    'Profile ID must not be null. Did you call setProfileID()?');
            }
        } else {
            $uri = self::AUTHSUB_REGISTER_FEED_URI;
        }

        $entry = new Zend_Gdata_Health_ProfileEntry();
        $entry->title = $this->newTitle($subject);
        $entry->content = $this->newContent($body);
        $entry->content->type = $bodyType ? $bodyType : 'text';
        $entry->setCcr($ccrXML);

        // use correct feed for /h9 or /health
        if ($this->_useH9Sandbox) {
            $uri = preg_replace('/\/health\//', '/h9/', $uri);
        }

        return $this->insertEntry($entry, $uri, 'Zend_Gdata_Health_ProfileEntry');
    }
}
PKpG[K�n92\2\Gdata/YouTube.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media
 */
require_once 'Zend/Gdata/Media.php';

/**
 * @see Zend_Gdata_YouTube_VideoEntry
 */
require_once 'Zend/Gdata/YouTube/VideoEntry.php';

/**
 * @see Zend_Gdata_YouTube_VideoFeed
 */
require_once 'Zend/Gdata/YouTube/VideoFeed.php';

/**
 * @see Zend_Gdata_YouTube_CommentFeed
 */
require_once 'Zend/Gdata/YouTube/CommentFeed.php';

/**
 * @see Zend_Gdata_YouTube_PlaylistListFeed
 */
require_once 'Zend/Gdata/YouTube/PlaylistListFeed.php';

/**
 * @see Zend_Gdata_YouTube_SubscriptionFeed
 */
require_once 'Zend/Gdata/YouTube/SubscriptionFeed.php';

/**
 * @see Zend_Gdata_YouTube_ContactFeed
 */
require_once 'Zend/Gdata/YouTube/ContactFeed.php';

/**
 * @see Zend_Gdata_YouTube_PlaylistVideoFeed
 */
require_once 'Zend/Gdata/YouTube/PlaylistVideoFeed.php';

/**
 * Service class for interacting with the YouTube Data API.
 * @link http://code.google.com/apis/youtube/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube extends Zend_Gdata_Media
{

    const AUTH_SERVICE_NAME = 'youtube';
    const CLIENTLOGIN_URL = 'https://www.google.com/youtube/accounts/ClientLogin';

    const STANDARD_TOP_RATED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/top_rated';
    const STANDARD_MOST_VIEWED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/most_viewed';
    const STANDARD_RECENTLY_FEATURED_URI = 'http://gdata.youtube.com/feeds/standardfeeds/recently_featured';
    const STANDARD_WATCH_ON_MOBILE_URI = 'http://gdata.youtube.com/feeds/standardfeeds/watch_on_mobile';

    const STANDARD_TOP_RATED_URI_V2 =
        'http://gdata.youtube.com/feeds/api/standardfeeds/top_rated';
    const STANDARD_MOST_VIEWED_URI_V2 =
        'http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed';
    const STANDARD_RECENTLY_FEATURED_URI_V2 =
        'http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured';
    const STANDARD_WATCH_ON_MOBILE_URI_V2 =
        'http://gdata.youtube.com/feeds/api/standardfeeds/watch_on_mobile';

    const USER_URI = 'http://gdata.youtube.com/feeds/api/users';
    const VIDEO_URI = 'http://gdata.youtube.com/feeds/api/videos';
    const PLAYLIST_REL = 'http://gdata.youtube.com/schemas/2007#playlist';
    const USER_UPLOADS_REL = 'http://gdata.youtube.com/schemas/2007#user.uploads';
    const USER_PLAYLISTS_REL = 'http://gdata.youtube.com/schemas/2007#user.playlists';
    const USER_SUBSCRIPTIONS_REL = 'http://gdata.youtube.com/schemas/2007#user.subscriptions';
    const USER_CONTACTS_REL = 'http://gdata.youtube.com/schemas/2007#user.contacts';
    const USER_FAVORITES_REL = 'http://gdata.youtube.com/schemas/2007#user.favorites';
    const VIDEO_RESPONSES_REL = 'http://gdata.youtube.com/schemas/2007#video.responses';
    const VIDEO_RATINGS_REL = 'http://gdata.youtube.com/schemas/2007#video.ratings';
    const VIDEO_COMPLAINTS_REL = 'http://gdata.youtube.com/schemas/2007#video.complaints';

    const FAVORITES_URI_SUFFIX = 'favorites';
    const UPLOADS_URI_SUFFIX = 'uploads';
    const RESPONSES_URI_SUFFIX = 'responses';
    const RELATED_URI_SUFFIX = 'related';

    /**
     * Namespaces used for Zend_Gdata_YouTube
     *
     * @var array
     */
    public static $namespaces = array(
        array('yt', 'http://gdata.youtube.com/schemas/2007', 1, 0),
        array('georss', 'http://www.georss.org/georss', 1, 0),
        array('gml', 'http://www.opengis.net/gml', 1, 0),
        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
    );

    /**
     * Create Zend_Gdata_YouTube object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     * @param string $clientId The clientId issued by the YouTube dashboard
     * @param string $developerKey The developerKey issued by the YouTube dashboard
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0', $clientId = null, $developerKey = null)
    {
        $this->registerPackage('Zend_Gdata_YouTube');
        $this->registerPackage('Zend_Gdata_YouTube_Extension');
        $this->registerPackage('Zend_Gdata_Media');
        $this->registerPackage('Zend_Gdata_Media_Extension');


        // NOTE This constructor no longer calls the parent constructor
        $this->setHttpClient($client, $applicationId, $clientId, $developerKey);
    }

    /**
     * Set the Zend_Http_Client object used for communication
     *
     * @param Zend_Http_Client $client The client to use for communication
     * @throws Zend_Gdata_App_HttpException
     * @return Zend_Gdata_App Provides a fluent interface
     */
    public function setHttpClient($client, $applicationId = 'MyCompany-MyApp-1.0', $clientId = null, $developerKey = null)
    {
        if ($client === null) {
            $client = new Zend_Http_Client();
        }
        if (!$client instanceof Zend_Http_Client) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException('Argument is not an instance of Zend_Http_Client.');
        }

        if ($clientId != null) {
            $client->setHeaders('X-GData-Client', $clientId);
        }

        if ($developerKey != null) {
            $client->setHeaders('X-GData-Key', 'key='. $developerKey);
        }

        return parent::setHttpClient($client, $applicationId);
    }

    /**
     * Retrieves a feed of videos.
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getVideoFeed($location = null)
    {
        if ($location == null) {
            $uri = self::VIDEO_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a specific video entry.
     *
     * @param mixed $videoId The ID of the video to retrieve.
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined.
     * @param boolean $fullEntry (optional) Retrieve the full metadata for the
     *         entry. Only possible if entry belongs to currently authenticated
     *         user. An exception will be thrown otherwise.
     * @throws Zend_Gdata_App_HttpException
     * @return Zend_Gdata_YouTube_VideoEntry The video entry found at the
     *         specified URL.
     */
    public function getVideoEntry($videoId = null, $location = null,
        $fullEntry = false)
    {
        if ($videoId !== null) {
            if ($fullEntry) {
                return $this->getFullVideoEntry($videoId);
            } else {
                $uri = self::VIDEO_URI . "/" . $videoId;
            }
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry');
    }

    /**
     * Retrieves a video entry from the user's upload feed.
     *
     * @param mixed $videoID The ID of the video to retrieve.
     * @throws Zend_Gdata_App_HttpException
     * @return Zend_Gdata_YouTube_VideoEntry|null The video entry to be
     *          retrieved, or null if it was not found or the user requesting it
     *          did not have the appropriate permissions.
     */
    public function getFullVideoEntry($videoId)
    {
        $uri = self::USER_URI . "/default/" .
            self::UPLOADS_URI_SUFFIX . "/$videoId";
        return parent::getEntry($uri, 'Zend_Gdata_YouTube_VideoEntry');
    }

    /**
     * Retrieves a feed of videos related to the specified video ID.
     *
     * @param string $videoId The videoId of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getRelatedVideoFeed($videoId = null, $location = null)
    {
        if ($videoId !== null) {
            $uri = self::VIDEO_URI . "/" . $videoId . "/" . self::RELATED_URI_SUFFIX;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a feed of video responses related to the specified video ID.
     *
     * @param string $videoId The videoId of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getVideoResponseFeed($videoId = null, $location = null)
    {
        if ($videoId !== null) {
            $uri = self::VIDEO_URI . "/" . $videoId . "/" . self::RESPONSES_URI_SUFFIX;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a feed of comments related to the specified video ID.
     *
     * @param string $videoId The videoId of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the
     *         specified URL.
     */
    public function getVideoCommentFeed($videoId = null, $location = null)
    {
        if ($videoId !== null) {
            $uri = self::VIDEO_URI . "/" . $videoId . "/comments";
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_CommentFeed');
    }

    /**
     * Retrieves a feed of comments related to the specified video ID.
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_CommentFeed The feed of videos found at the
     *         specified URL.
     */
    public function getTopRatedVideoFeed($location = null)
    {
        $standardFeedUri = self::STANDARD_TOP_RATED_URI;

        if ($this->getMajorProtocolVersion() == 2) {
            $standardFeedUri = self::STANDARD_TOP_RATED_URI_V2;
        }

        if ($location == null) {
            $uri = $standardFeedUri;
        } else if ($location instanceof Zend_Gdata_Query) {
            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
                if (!isset($location->url)) {
                    $location->setFeedType('top rated');
                }
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }


    /**
     * Retrieves a feed of the most viewed videos.
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getMostViewedVideoFeed($location = null)
    {
        $standardFeedUri = self::STANDARD_MOST_VIEWED_URI;

        if ($this->getMajorProtocolVersion() == 2) {
            $standardFeedUri = self::STANDARD_MOST_VIEWED_URI_V2;
        }

        if ($location == null) {
            $uri = $standardFeedUri;
        } else if ($location instanceof Zend_Gdata_Query) {
            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
                if (!isset($location->url)) {
                    $location->setFeedType('most viewed');
                }
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a feed of recently featured videos.
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getRecentlyFeaturedVideoFeed($location = null)
    {
        $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI;

        if ($this->getMajorProtocolVersion() == 2) {
            $standardFeedUri = self::STANDARD_RECENTLY_FEATURED_URI_V2;
        }

        if ($location == null) {
            $uri = $standardFeedUri;
        } else if ($location instanceof Zend_Gdata_Query) {
            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
                if (!isset($location->url)) {
                    $location->setFeedType('recently featured');
                }
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a feed of videos recently featured for mobile devices.
     * These videos will have RTSP links in the $entry->mediaGroup->content
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The feed of videos found at the
     *         specified URL.
     */
    public function getWatchOnMobileVideoFeed($location = null)
    {
        $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI;

        if ($this->getMajorProtocolVersion() == 2) {
            $standardFeedUri = self::STANDARD_WATCH_ON_MOBILE_URI_V2;
        }

        if ($location == null) {
            $uri = $standardFeedUri;
        } else if ($location instanceof Zend_Gdata_Query) {
            if ($location instanceof Zend_Gdata_YouTube_VideoQuery) {
                if (!isset($location->url)) {
                    $location->setFeedType('watch on mobile');
                }
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a feed which lists a user's playlist
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_PlaylistListFeed The feed of playlists
     */
    public function getPlaylistListFeed($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user . '/playlists';
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistListFeed');
    }

    /**
     * Retrieves a feed of videos in a particular playlist
     *
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_PlaylistVideoFeed The feed of videos found at
     *         the specified URL.
     */
    public function getPlaylistVideoFeed($location)
    {
        if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_PlaylistVideoFeed');
    }

    /**
     * Retrieves a feed of a user's subscriptions
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_SubscriptionListFeed The feed of subscriptions
     */
    public function getSubscriptionFeed($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user . '/subscriptions';
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_SubscriptionFeed');
    }

    /**
     * Retrieves a feed of a user's contacts
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_ContactFeed The feed of contacts
     */
    public function getContactFeed($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user . '/contacts';
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_ContactFeed');
    }

    /**
     * Retrieves a user's uploads
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The videos uploaded by the user
     */
    public function getUserUploads($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user . '/' .
                   self::UPLOADS_URI_SUFFIX;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a user's favorites
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_VideoFeed The videos favorited by the user
     */
    public function getUserFavorites($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user . '/' .
                   self::FAVORITES_URI_SUFFIX;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_YouTube_VideoFeed');
    }

    /**
     * Retrieves a user's profile as an entry
     *
     * @param string $user (optional) The username of interest
     * @param mixed $location (optional) The URL to query or a
     *         Zend_Gdata_Query object from which a URL can be determined
     * @return Zend_Gdata_YouTube_UserProfileEntry The user profile entry
     */
    public function getUserProfile($user = null, $location = null)
    {
        if ($user !== null) {
            $uri = self::USER_URI . '/' . $user;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_YouTube_UserProfileEntry');
    }

    /**
     * Helper function for parsing a YouTube token response
     *
     * @param string $response The service response
     * @throws Zend_Gdata_App_Exception
     * @return array An array containing the token and URL
     */
    public static function parseFormUploadTokenResponse($response)
    {
        // Load the feed as an XML DOMDocument object
        @ini_set('track_errors', 1);
        $doc = new DOMDocument();
        $success = @$doc->loadXML($response);
        @ini_restore('track_errors');

        if (!$success) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("Zend_Gdata_YouTube::parseFormUploadTokenResponse - " .
                                               "DOMDocument cannot parse XML: $php_errormsg");
        }
        $responseElement = $doc->getElementsByTagName('response')->item(0);

        $urlText = null;
        $tokenText = null;
        if ($responseElement != null) {
            $urlElement = $responseElement->getElementsByTagName('url')->item(0);
            $tokenElement = $responseElement->getElementsByTagName('token')->item(0);

            if ($urlElement && $urlElement->hasChildNodes() &&
                $tokenElement && $tokenElement->hasChildNodes()) {

                $urlText = $urlElement->firstChild->nodeValue;
                $tokenText = $tokenElement->firstChild->nodeValue;
            }
        }

        if ($tokenText != null && $urlText != null) {
            return array('token' => $tokenText, 'url' => $urlText);
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("form upload token not found in response");
        }
    }

    /**
     * Retrieves a YouTube token
     *
     * @param Zend_Gdata_YouTube_VideoEntry $videoEntry The video entry
     * @param string $url The location as a string URL
     * @throws Zend_Gdata_App_Exception
     * @return array An array containing a token and URL
     */
    public function getFormUploadToken($videoEntry, $url='http://gdata.youtube.com/action/GetUploadToken')
    {
        if ($url != null && is_string($url)) {
            // $response is a Zend_Http_response object
            $response = $this->post($videoEntry, $url);
            return self::parseFormUploadTokenResponse($response->getBody());
        } else {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_Exception('Url must be provided as a string URL');
        }
    }
}
PKpG[��3R2020Gdata/Kind/EventEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * @see Zend_Gdata_Extension_Where
 */
require_once 'Zend/Gdata/Extension/Where.php';

/**
 * @see Zend_Gdata_Extension_When
 */
require_once 'Zend/Gdata/Extension/When.php';

/**
 * @see Zend_Gdata_Extension_Who
 */
require_once 'Zend/Gdata/Extension/Who.php';

/**
 * @see Zend_Gdata_Extension_Recurrence
 */
require_once 'Zend/Gdata/Extension/Recurrence.php';

/**
 * @see Zend_Gdata_Extension_EventStatus
 */
require_once 'Zend/Gdata/Extension/EventStatus.php';

/**
 * @see Zend_Gdata_Extension_Comments
 */
require_once 'Zend/Gdata/Extension/Comments.php';

/**
 * @see Zend_Gdata_Extension_Transparency
 */
require_once 'Zend/Gdata/Extension/Transparency.php';

/**
 * @see Zend_Gdata_Extension_Visibility
 */
require_once 'Zend/Gdata/Extension/Visibility.php';

/**
 * @see Zend_Gdata_Extension_RecurrenceException
 */
require_once 'Zend/Gdata/Extension/RecurrenceException.php';

/**
 * @see Zend_Gdata_Extension_ExtendedProperty
 */
require_once 'Zend/Gdata/Extension/ExtendedProperty.php';

/**
 * @see Zend_Gdata_Extension_OriginalEvent
 */
require_once 'Zend/Gdata/Extension/OriginalEvent.php';

/**
 * @see Zend_Gdata_Extension_EntryLink
 */
require_once 'Zend/Gdata/Extension/EntryLink.php';

/**
 * Data model for the Gdata Event "Kind".  Google Calendar has a separate
 * EventEntry class which extends this.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Kind_EventEntry extends Zend_Gdata_Entry
{
    protected $_who = array();
    protected $_when = array();
    protected $_where = array();
    protected $_recurrence = null;
    protected $_eventStatus = null;
    protected $_comments = null;
    protected $_transparency = null;
    protected $_visibility = null;
    protected $_recurrenceException = array();
    protected $_extendedProperty = array();
    protected $_originalEvent = null;
    protected $_entryLink = null;

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_who != null) {
            foreach ($this->_who as $who) {
                $element->appendChild($who->getDOM($element->ownerDocument));
            }
        }
        if ($this->_when != null) {
            foreach ($this->_when as $when) {
                $element->appendChild($when->getDOM($element->ownerDocument));
            }
        }
        if ($this->_where != null) {
            foreach ($this->_where as $where) {
                $element->appendChild($where->getDOM($element->ownerDocument));
            }
        }
        if ($this->_recurrenceException != null) {
            foreach ($this->_recurrenceException as $recurrenceException) {
                $element->appendChild($recurrenceException->getDOM($element->ownerDocument));
            }
        }
        if ($this->_extendedProperty != null) {
            foreach ($this->_extendedProperty as $extProp) {
                $element->appendChild($extProp->getDOM($element->ownerDocument));
            }
        }

        if ($this->_recurrence != null) {
            $element->appendChild($this->_recurrence->getDOM($element->ownerDocument));
        }
        if ($this->_eventStatus != null) {
            $element->appendChild($this->_eventStatus->getDOM($element->ownerDocument));
        }
        if ($this->_comments != null) {
            $element->appendChild($this->_comments->getDOM($element->ownerDocument));
        }
        if ($this->_transparency != null) {
            $element->appendChild($this->_transparency->getDOM($element->ownerDocument));
        }
        if ($this->_visibility != null) {
            $element->appendChild($this->_visibility->getDOM($element->ownerDocument));
        }
        if ($this->_originalEvent != null) {
            $element->appendChild($this->_originalEvent->getDOM($element->ownerDocument));
        }
        if ($this->_entryLink != null) {
            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
        }


        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gd') . ':' . 'where';
            $where = new Zend_Gdata_Extension_Where();
            $where->transferFromDOM($child);
            $this->_where[] = $where;
            break;
        case $this->lookupNamespace('gd') . ':' . 'when';
            $when = new Zend_Gdata_Extension_When();
            $when->transferFromDOM($child);
            $this->_when[] = $when;
            break;
        case $this->lookupNamespace('gd') . ':' . 'who';
            $who = new Zend_Gdata_Extension_Who();
            $who ->transferFromDOM($child);
            $this->_who[] = $who;
            break;
        case $this->lookupNamespace('gd') . ':' . 'recurrence';
            $recurrence = new Zend_Gdata_Extension_Recurrence();
            $recurrence->transferFromDOM($child);
            $this->_recurrence = $recurrence;
            break;
        case $this->lookupNamespace('gd') . ':' . 'eventStatus';
            $eventStatus = new Zend_Gdata_Extension_EventStatus();
            $eventStatus->transferFromDOM($child);
            $this->_eventStatus = $eventStatus;
            break;
        case $this->lookupNamespace('gd') . ':' . 'comments';
            $comments = new Zend_Gdata_Extension_Comments();
            $comments->transferFromDOM($child);
            $this->_comments = $comments;
            break;
        case $this->lookupNamespace('gd') . ':' . 'transparency';
            $transparency = new Zend_Gdata_Extension_Transparency();
            $transparency ->transferFromDOM($child);
            $this->_transparency = $transparency;
            break;
        case $this->lookupNamespace('gd') . ':' . 'visibility';
            $visiblity = new Zend_Gdata_Extension_Visibility();
            $visiblity ->transferFromDOM($child);
            $this->_visibility = $visiblity;
            break;
        case $this->lookupNamespace('gd') . ':' . 'recurrenceException';
            $recurrenceException = new Zend_Gdata_Extension_RecurrenceException();
            $recurrenceException ->transferFromDOM($child);
            $this->_recurrenceException[] = $recurrenceException;
            break;
        case $this->lookupNamespace('gd') . ':' . 'originalEvent';
            $originalEvent = new Zend_Gdata_Extension_OriginalEvent();
            $originalEvent ->transferFromDOM($child);
            $this->_originalEvent = $originalEvent;
            break;
        case $this->lookupNamespace('gd') . ':' . 'extendedProperty';
            $extProp = new Zend_Gdata_Extension_ExtendedProperty();
            $extProp->transferFromDOM($child);
            $this->_extendedProperty[] = $extProp;
            break;
        case $this->lookupNamespace('gd') . ':' . 'entryLink':
            $entryLink = new Zend_Gdata_Extension_EntryLink();
            $entryLink->transferFromDOM($child);
            $this->_entryLink = $entryLink;
            break;

        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function getWhen()
    {
        return $this->_when;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setWhen($value)
    {
        $this->_when = $value;
        return $this;
    }

    public function getWhere()
    {
        return $this->_where;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setWhere($value)
    {
        $this->_where = $value;
        return $this;
    }

    public function getWho()
    {
        return $this->_who;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setWho($value)
    {
        $this->_who = $value;
        return $this;
    }

    public function getRecurrence()
    {
        return $this->_recurrence;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setRecurrence($value)
    {
        $this->_recurrence = $value;
        return $this;
    }

    public function getEventStatus()
    {
        return $this->_eventStatus;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setEventStatus($value)
    {
        $this->_eventStatus = $value;
        return $this;
    }

    public function getComments()
    {
        return $this->_comments;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setComments($value)
    {
        $this->_comments = $value;
        return $this;
    }

    public function getTransparency()
    {
        return $this->_transparency;
    }

    /**
     * @param Zend_Gdata_Transparency $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setTransparency($value)
    {
        $this->_transparency = $value;
        return $this;
    }

    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * @param Zend_Gdata_Visibility $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    public function getRecurrenceExcption()
    {
        return $this->_recurrenceException;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setRecurrenceException($value)
    {
        $this->_recurrenceException = $value;
        return $this;
    }

    public function getExtendedProperty()
    {
        return $this->_extendedProperty;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setExtendedProperty($value)
    {
        $this->_extendedProperty = $value;
        return $this;
    }

    public function getOriginalEvent()
    {
        return $this->_originalEvent;
    }

    /**
     * @param Zend_Gdata_Extension_OriginalEvent $value
     * @return Zend_Gdata_Kind_EventEntry Provides a fluent interface
     */
    public function setOriginalEvent($value)
    {
        $this->_originalEvent = $value;
        return $this;
    }

    /**
     * Get this entry's EntryLink element.
     *
     * @return Zend_Gdata_Extension_EntryLink The requested entry.
     */
    public function getEntryLink()
    {
        return $this->_entryLink;
    }

    /**
     * Set the child's EntryLink element.
     *
     * @param Zend_Gdata_Extension_EntryLink $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setEntryLink($value)
    {
        $this->_entryLink = $value;
        return $this;
    }


}
PKpG[-�¶�Gdata/Exif.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * Service class for interacting with the services which use the EXIF extensions
 * @link http://code.google.com/apis/picasaweb/reference.html#exif_reference
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif extends Zend_Gdata
{

    /**
     * Namespaces used for Zend_Gdata_Exif
     *
     * @var array
     */
    public static $namespaces = array(
        array('exif', 'http://schemas.google.com/photos/exif/2007', 1, 0)
    );

    /**
     * Create Zend_Gdata_Exif object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Exif');
        $this->registerPackage('Zend_Gdata_Exif_Extension');
        parent::__construct($client, $applicationId);
    }

}
PKpG[A_I3Gdata/Gapps/EmailListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Gapps_EmailListEntry
 */
require_once 'Zend/Gdata/Gapps/EmailListEntry.php';

/**
 * Data model for a collection of Google Apps email list entries, usually 
 * provided by the Google Apps servers.
 * 
 * For information on requesting this feed from a server, see the Google 
 * Apps service class, Zend_Gdata_Gapps.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListFeed extends Zend_Gdata_Feed
{
    
    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListEntry';
    protected $_feedClassName = 'Zend_Gdata_Gapps_EmailListFeed';
    
}
PKpG[����!! Gdata/Gapps/ServiceException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Zend_Gdata_Gapps_Error
 */
require_once 'Zend/Gdata/Gapps/Error.php';

/**
 * Gdata Gapps Exception class. This is thrown when an 
 * AppsForYourDomainErrors message is received from the Google Apps 
 * servers.
 *
 * Several different errors may be represented by this exception. For a list 
 * of error codes available, see getErrorCode.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_ServiceException extends Zend_Exception
{
    
    protected $_rootElement = "AppsForYourDomainErrors";
    
    /** 
     * Array of Zend_Gdata_Error objects indexed by error code.
     * 
     * @var array
     */
    protected $_errors = array();
    
    /**
     * Create a new ServiceException.
     *
     * @return array An array containing a collection of 
     *          Zend_Gdata_Gapps_Error objects.
     */
    public function __construct($errors = null) {
        parent::__construct("Server errors encountered");
        if ($errors !== null) {
            $this->setErrors($errors);
        }
    }
    
    /**
     * Add a single Error object to the list of errors received by the 
     * server.
     * 
     * @param Zend_Gdata_Gapps_Error $error An instance of an error returned 
     *          by the server. The error's errorCode must be set.
     * @throws Zend_Gdata_App_Exception
     */
    public function addError($error) {
        // Make sure that we don't try to index an error that doesn't 
        // contain an index value.
        if ($error->getErrorCode() == null) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("Error encountered without corresponding error code.");
        }
        
        $this->_errors[$error->getErrorCode()] = $error;
    }
    
    /**
     * Set the list of errors as sent by the server inside of an 
     * AppsForYourDomainErrors tag.
     * 
     * @param array $array An associative array containing a collection of 
     *          Zend_Gdata_Gapps_Error objects. All errors must have their 
     *          errorCode value set.
     * @throws Zend_Gdata_App_Exception
     */
    public function setErrors($array) {
        $this->_errors = array();
        foreach ($array as $error) {
            $this->addError($error);
        }
    }
    
    /**
     * Get the list of errors as sent by the server inside of an 
     * AppsForYourDomainErrors tag.
     * 
     * @return array An associative array containing a collection of 
     *          Zend_Gdata_Gapps_Error objects, indexed by error code.
     */
    public function getErrors() {
        return $this->_errors;
    }
    
    /**
     * Return the Error object associated with a specific error code.
     *
     * @return Zend_Gdata_Gapps_Error The Error object requested, or null 
     *              if not found.
     */
    public function getError($errorCode) {
        if (array_key_exists($errorCode, $this->_errors)) {
            $result = $this->_errors[$errorCode];
            return $result;
        } else {
            return null;
        }
    }
    
    /**
     * Check whether or not a particular error code was returned by the 
     * server.
     *
     * @param integer $errorCode The error code to check against.
     * @return boolean Whether or not the supplied error code was returned 
     *          by the server.
     */
    public function hasError($errorCode) {
        return array_key_exists($errorCode, $this->_errors);
    }
    
    /**
     * Import an AppsForYourDomain error from XML.
     * 
     * @param string $string The XML data to be imported
     * @return Zend_Gdata_Gapps_ServiceException Provides a fluent interface.
     * @throws Zend_Gdata_App_Exception
     */
    public function importFromString($string) {
        if ($string) {
            // Check to see if an AppsForYourDomainError exists
            //
            // track_errors is temporarily enabled so that if an error 
            // occurs while parsing the XML we can append it to an 
            // exception by referencing $php_errormsg
            @ini_set('track_errors', 1);
            $doc = new DOMDocument();
            $success = @$doc->loadXML($string);
            @ini_restore('track_errors');
            
            if (!$success) {
                require_once 'Zend/Gdata/App/Exception.php';
                // $php_errormsg is automatically generated by PHP if 
                // an error occurs while calling loadXML(), above.
                throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
            }
            
            // Ensure that the outermost node is an AppsForYourDomain error.
            // If it isn't, something has gone horribly wrong.
            $rootElement = $doc->getElementsByTagName($this->_rootElement)->item(0);
            if (!$rootElement) {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('No root <' . $this->_rootElement . '> element found, cannot parse feed.');
            }
            
            foreach ($rootElement->childNodes as $errorNode) {
                if (!($errorNode instanceof DOMText)) {
                    $error = new Zend_Gdata_Gapps_Error();
                    $error->transferFromDom($errorNode);
                    $this->addError($error);
                }
            }
            return $this;
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('XML passed to transferFromXML cannot be null');
        }
        
    }
    
    /**
     * Get a human readable version of this exception.
     * 
     * @return string
     */
    public function __toString() {
        $result = "The server encountered the following errors processing the request:";
        foreach ($this->_errors as $error) {
            $result .= "\n" . $error->__toString();
        }
        return $result;
    }
}
PKpG[̿��LL&Gdata/Gapps/EmailListRecipientFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Gapps_EmailListRecipientEntry
 */
require_once 'Zend/Gdata/Gapps/EmailListRecipientEntry.php';

/**
 * Data model for a collection of Google Apps email list recipient entries, 
 * usually provided by the Google Apps servers.
 * 
 * For information on requesting this feed from a server, see the Google 
 * Apps service class, Zend_Gdata_Gapps.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListRecipientFeed extends Zend_Gdata_Feed
{
    
    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListRecipientEntry';
    protected $_feedClassName = 'Zend_Gdata_Gapps_EmailListRecipientFeed';
    
}
PKpG[P�QZGdata/Gapps/NicknameFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Gapps_NicknameEntry
 */
require_once 'Zend/Gdata/Gapps/NicknameEntry.php';

/**
 * Data model for a collection of Google Apps nickname entries, usually 
 * provided by the Google Apps servers.
 * 
 * For information on requesting this feed from a server, see the Google 
 * Apps service class, Zend_Gdata_Gapps.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_NicknameFeed extends Zend_Gdata_Feed
{
    
    protected $_entryClassName = 'Zend_Gdata_Gapps_NicknameEntry';
    protected $_feedClassName = 'Zend_Gdata_Gapps_NicknameFeed';
    
}
PKpG[Iz�M
C
CGdata/Gapps/Extension/Login.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * Represents the apps:login element used by the Apps data API. This
 * class is used to describe properties of a user, and is usually contained
 * within instances of Zene_Gdata_Gapps_UserEntry or any other class
 * which is linked to a particular username.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Extension_Login extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'apps';
    protected $_rootElement = 'login';

    /**
     * The username for this user. This is used as the user's email address
     * and when logging in to Google Apps-hosted services.
     *
     * @var string
     */
    protected $_username = null;

    /**
     * The password for the user. May be in cleartext or as an SHA-1
     * digest, depending on the value of _hashFunctionName.
     *
     * @var string
     */
    protected $_password = null;

    /**
     * Specifies whether the password stored in _password is in cleartext
     * or is an SHA-1 digest of a password. If the password is cleartext,
     * then this should be null. If the password is an SHA-1 digest, then
     * this should be set to 'SHA-1'.
     *
     * At the time of writing, no other hash functions are supported
     *
     * @var string
     */
    protected $_hashFunctionName = null;

    /**
     * True if the user has administrative rights for this domain, false
     * otherwise.
     *
     * @var boolean
     */
    protected $_admin = null;

    /**
     * True if the user has agreed to the terms of service for Google Apps,
     * false otherwise.
     *
     * @var boolean.
     */
    protected $_agreedToTerms = null;

    /**
     * True if this user has been suspended, false otherwise.
     *
     * @var boolean
     */
    protected $_suspended = null;

    /**
     * True if the user will be required to change their password at
     * their next login, false otherwise.
     *
     * @var boolean
     */
    protected $_changePasswordAtNextLogin = null;

    /**
     * Constructs a new Zend_Gdata_Gapps_Extension_Login object.
     *
     * @param string $username (optional) The username to be used for this
     *          login.
     * @param string $password (optional) The password to be used for this
     *          login.
     * @param string $hashFunctionName (optional) The name of the hash
     *          function used to protect the password, or null if no
     *          has function has been applied. As of this writing,
     *          the only valid values are 'SHA-1' or null.
     * @param boolean $admin (optional) Whether the user is an administrator
     *          or not.
     * @param boolean $suspended (optional) Whether this login is suspended or not.
     * @param boolean $changePasswordAtNextLogin (optional) Whether
     *          the user is required to change their password at their
     *          next login.
     * @param boolean $agreedToTerms (optional) Whether the user has
     *          agreed to the terms of service.
     */
    public function __construct($username = null, $password = null,
        $hashFunctionName = null, $admin = null, $suspended = null,
        $changePasswordAtNextLogin = null, $agreedToTerms = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct();
        $this->_username = $username;
        $this->_password = $password;
        $this->_hashFunctionName = $hashFunctionName;
        $this->_admin = $admin;
        $this->_agreedToTerms = $agreedToTerms;
        $this->_suspended = $suspended;
        $this->_changePasswordAtNextLogin = $changePasswordAtNextLogin;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_username !== null) {
            $element->setAttribute('userName', $this->_username);
        }
        if ($this->_password !== null) {
            $element->setAttribute('password', $this->_password);
        }
        if ($this->_hashFunctionName !== null) {
            $element->setAttribute('hashFunctionName', $this->_hashFunctionName);
        }
        if ($this->_admin !== null) {
            $element->setAttribute('admin', ($this->_admin ? "true" : "false"));
        }
        if ($this->_agreedToTerms !== null) {
            $element->setAttribute('agreedToTerms', ($this->_agreedToTerms ? "true" : "false"));
        }
        if ($this->_suspended !== null) {
            $element->setAttribute('suspended', ($this->_suspended ? "true" : "false"));
        }
        if ($this->_changePasswordAtNextLogin !== null) {
            $element->setAttribute('changePasswordAtNextLogin', ($this->_changePasswordAtNextLogin ? "true" : "false"));
        }

        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'userName':
            $this->_username = $attribute->nodeValue;
            break;
        case 'password':
            $this->_password = $attribute->nodeValue;
            break;
        case 'hashFunctionName':
            $this->_hashFunctionName = $attribute->nodeValue;
            break;
        case 'admin':
            if ($attribute->nodeValue == "true") {
                $this->_admin = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_admin = false;
            }
            else {
                require_once('Zend/Gdata/App/InvalidArgumentException.php');
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#admin.");
            }
            break;
        case 'agreedToTerms':
            if ($attribute->nodeValue == "true") {
                $this->_agreedToTerms = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_agreedToTerms = false;
            }
            else {
                require_once('Zend/Gdata/App/InvalidArgumentException.php');
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#agreedToTerms.");
            }
            break;
        case 'suspended':
            if ($attribute->nodeValue == "true") {
                $this->_suspended = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_suspended = false;
            }
            else {
                require_once('Zend/Gdata/App/InvalidArgumentException.php');
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#suspended.");
            }
            break;
        case 'changePasswordAtNextLogin':
            if ($attribute->nodeValue == "true") {
                $this->_changePasswordAtNextLogin = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_changePasswordAtNextLogin = false;
            }
            else {
                require_once('Zend/Gdata/App/InvalidArgumentException.php');
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for apps:login#changePasswordAtNextLogin.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's username attribute.
     *
     * @see setUsername
     * @return string The attribute being modified.
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Set the value for this element's username attribute. This string
     * is used to uniquely identify the user in this domian and is used
     * to form this user's email address.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     */
    public function setUsername($value)
    {
        $this->_username = $value;
        return $this;
    }

    /**
     * Get the value for this element's password attribute.
     *
     * @see setPassword
     * @return string The requested attribute.
     */
    public function getPassword()
    {
        return $this->_password;
    }

    /**
     * Set the value for this element's password attribute. As of this
     * writing, this can be either be provided as plaintext or hashed using
     * the SHA-1 algorithm for protection. If using a hash function,
     * this must be indicated by calling setHashFunctionName().
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     */
    public function setPassword($value)
    {
        $this->_password = $value;
        return $this;
    }

    /**
     * Get the value for this element's hashFunctionName attribute.
     *
     * @see setHashFunctionName
     * @return string The requested attribute.
     */
    public function getHashFunctionName()
    {
        return $this->_hashFunctionName;
    }

    /**
     * Set the value for this element's hashFunctionName attribute. This
     * indicates whether the password supplied with setPassword() is in
     * plaintext or has had a hash function applied to it. If null,
     * plaintext is assumed. As of this writing, the only valid hash
     * function is 'SHA-1'.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     */
    public function setHashFunctionName($value)
    {
        $this->_hashFunctionName = $value;
        return $this;
    }

    /**
     * Get the value for this element's admin attribute.
     *
     * @see setAdmin
     * @return boolean The requested attribute.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getAdmin()
    {
        if (!(is_bool($this->_admin))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for admin.');
        }
        return $this->_admin;
    }

    /**
     * Set the value for this element's admin attribute. This indicates
     * whether this user is an administrator for this domain.
     *
     * @param boolean $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setAdmin($value)
    {
        if (!(is_bool($value))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
        }
        $this->_admin = $value;
        return $this;
    }

    /**
     * Get the value for this element's agreedToTerms attribute.
     *
     * @see setAgreedToTerms
     * @return boolean The requested attribute.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getAgreedToTerms()
    {
        if (!(is_bool($this->_agreedToTerms))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for agreedToTerms.');
        }
        return $this->_agreedToTerms;
    }

    /**
     * Set the value for this element's agreedToTerms attribute. This
     * indicates whether this user has agreed to the terms of service.
     *
     * @param boolean $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setAgreedToTerms($value)
    {
        if (!(is_bool($value))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
        }
        $this->_agreedToTerms = $value;
        return $this;
    }

    /**
     * Get the value for this element's suspended attribute.
     *
     * @see setSuspended
     * @return boolean The requested attribute.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getSuspended()
    {
        if (!(is_bool($this->_suspended))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for suspended.');
        }
        return $this->_suspended;
    }

    /**
     * Set the value for this element's suspended attribute. If true, the
     * user will not be able to login to this domain until unsuspended.
     *
     * @param boolean $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setSuspended($value)
    {
        if (!(is_bool($value))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
        }
        $this->_suspended = $value;
        return $this;
    }

    /**
     * Get the value for this element's changePasswordAtNextLogin attribute.
     *
     * @see setChangePasswordAtNextLogin
     * @return boolean The requested attribute.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getChangePasswordAtNextLogin()
    {
        if (!(is_bool($this->_changePasswordAtNextLogin))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for changePasswordAtNextLogin.');
        }
        return $this->_changePasswordAtNextLogin;
    }

    /**
     * Set the value for this element's changePasswordAtNextLogin attribute.
     * If true, the user will be forced to set a new password the next
     * time they login.
     *
     * @param boolean $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Login Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setChangePasswordAtNextLogin($value)
    {
        if (!(is_bool($value))) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException('Expected boolean for $value.');
        }
        $this->_changePasswordAtNextLogin = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return "Username: " . $this->getUsername() .
            "\nPassword: " . (is_null($this->getPassword()) ? "NOT SET" : "SET") .
            "\nPassword Hash Function: " . $this->getHashFunctionName() .
            "\nAdministrator: " . ($this->getAdmin() ? "Yes" : "No") .
            "\nAgreed To Terms: " . ($this->getAgreedToTerms() ? "Yes" : "No") .
            "\nSuspended: " . ($this->getSuspended() ? "Yes" : "No");
    }
}
PKpG[���ff"Gdata/Gapps/Extension/Nickname.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * Represents the apps:nickname element used by the Apps data API. This
 * is used to describe a nickname's properties, and is usually contained
 * within instances of Zend_Gdata_Gapps_NicknameEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Extension_Nickname extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'apps';
    protected $_rootElement = 'nickname';

    /**
     * The name of the nickname. This name is used as the email address
     * for this nickname.
     *
     * @var string
     */
    protected $_name = null;

    /**
     * Constructs a new Zend_Gdata_Gapps_Extension_Nickname object.
     * @param string $name (optional) The nickname being represented.
     */
    public function __construct($name = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct();
        $this->_name = $name;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_name !== null) {
            $element->setAttribute('name', $this->_name);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'name':
            $this->_name = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's name attribute.
     *
     * @see setName
     * @return string The requested attribute.
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set the value for this element's name attribute. This name uniquely
     * describes this nickname within the domain. Emails addressed to this
     * name will be delivered to the user who owns this nickname.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Nickname Provides a fluent
     *          interface.
     */
    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getName();
    }

}
PKpG[TwH2��Gdata/Gapps/Extension/Name.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * Represents the apps:name element used by the Apps data API. This is used
 * to represent a user's full name. This class is usually contained within
 * instances of Zend_Gdata_Gapps_UserEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Extension_Name extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'apps';
    protected $_rootElement = 'name';

    /**
     * The associated user's family name.
     *
     * @var string
     */
    protected $_familyName = null;

    /**
     * The associated user's given name.
     *
     * @var string
     */
    protected $_givenName = null;

    /**
     * Constructs a new Zend_Gdata_Gapps_Extension_Name object.
     *
     * @param string $familyName (optional) The familyName to be set for this
     *          object.
     * @param string $givenName (optional) The givenName to be set for this
     *          object.
     */
    public function __construct($familyName = null, $givenName = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct();
        $this->_familyName = $familyName;
        $this->_givenName = $givenName;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_familyName !== null) {
            $element->setAttribute('familyName', $this->_familyName);
        }
        if ($this->_givenName !== null) {
            $element->setAttribute('givenName', $this->_givenName);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'familyName':
            $this->_familyName = $attribute->nodeValue;
            break;
        case 'givenName':
            $this->_givenName = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's familyName attribute.
     *
     * @see setFamilyName
     * @return string The requested attribute.
     */
    public function getFamilyName()
    {
        return $this->_familyName;
    }

    /**
     * Set the value for this element's familyName attribute. This
     * represents a user's family name.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Name Provides a fluent interface..
     */
    public function setFamilyName($value)
    {
        $this->_familyName = $value;
        return $this;
    }

    /**
     * Get the value for this element's givenName attribute.
     *
     * @see setGivenName
     * @return string The requested attribute.
     */
    public function getGivenName()
    {
        return $this->_givenName;
    }

    /**
     * Set the value for this element's givenName attribute. This
     * represents a user's given name.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Name Provides a fluent interface.
     */
    public function setGivenName($value)
    {
        $this->_givenName = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getGivenName() . ' ' . $this->getFamilyName();
    }

}
PKpG[`��~~Gdata/Gapps/Extension/Quota.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * Represents the apps:quota element used by the Apps data API. This is
 * used to indicate the amount of storage space available to a user. Quotas
 * may not be able to be set, depending on the domain used. This class
 * is usually contained within an instance of Zend_Gdata_Gapps_UserEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Extension_Quota extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'apps';
    protected $_rootElement = 'quota';

    /**
     * The amount of storage space available to the user in megabytes.
     *
     * @var integer
     */
    protected $_limit = null;

    /**
     * Constructs a new Zend_Gdata_Gapps_Extension_Quota object.
     *
     * @param string $limit (optional) The limit, in bytes, for this quota.
     */
    public function __construct($limit = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct();
        $this->_limit = $limit;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_limit !== null) {
            $element->setAttribute('limit', $this->_limit);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'limit':
            $this->_limit = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's limit attribute.
     *
     * @see setLimit
     * @return string The requested attribute.
     */
    public function getLimit()
    {
        return $this->_limit;
    }

    /**
     * Set the value for this element's limit attribute. This is the amount
     * of storage space, in bytes, that should be made available to
     * the associated user.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_Quota Provides a fluent interface.
     */
    public function setLimit($value)
    {
        $this->_limit = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getLimit();
    }

}
PKpG[��"��#Gdata/Gapps/Extension/EmailList.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * Represents the apps:emailList element used by the Apps data API. This
 * class represents properties of an email list and is usually contained
 * within an instance of Zend_Gdata_Gapps_EmailListEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Extension_EmailList extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'apps';
    protected $_rootElement = 'emailList';

    /**
     * The name of the email list. This name is used as the email address
     * for this list.
     *
     * @var string
     */
    protected $_name = null;

    /**
     * Constructs a new Zend_Gdata_Gapps_Extension_EmailList object.
     *
     * @param string $name (optional) The name to be used for this email list.
     */
    public function __construct($name = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct();
        $this->_name = $name;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_name !== null) {
            $element->setAttribute('name', $this->_name);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'name':
            $this->_name = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's name attribute.
     *
     * @see setName
     * @return string The requested attribute.
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set the value for this element's name attribute. This is the unique
     * name which will be used to identify this email list within this
     * domain, and will be used to form this email list's email address.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Gapps_Extension_EmailList The element being modified.
     */
    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string
     */
    public function __toString()
    {
        return $this->getName();
    }

}
PKpG[�����'Gdata/Gapps/EmailListRecipientQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Query
 */
require_once('Zend/Gdata/Gapps/Query.php');

/**
 * Assists in constructing queries for Google Apps email list recipient 
 * entries. Instances of this class can be provided in many places where a 
 * URL is required.
 * 
 * For information on submitting queries to a server, see the Google Apps
 * service class, Zend_Gdata_Gapps.
 * 
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListRecipientQuery extends Zend_Gdata_Gapps_Query
{
    
    /**
     * If not null, specifies the name of the email list which 
     * should be requested by this query.
     * 
     * @var string
     */
    protected $_emailListName = null;

    /**
     * Create a new instance.
     * 
     * @param string $domain (optional) The Google Apps-hosted domain to use 
     *          when constructing query URIs.
     * @param string $emailListName (optional) Value for the emailListName 
     *          property.
     * @param string $startRecipient (optional) Value for the 
     *          startRecipient property.
     */
    public function __construct($domain = null, $emailListName = null,
            $startRecipient = null)
    {
        parent::__construct($domain);
        $this->setEmailListName($emailListName);
        $this->setStartRecipient($startRecipient);
    }
    
    /**
     * Set the email list name to query for. When set, only lists with a name 
     * matching this value will be returned in search results. Set to 
     * null to disable filtering by list name.
     * 
     * @param string $value The email list name to filter search results by, 
     *          or null to disable.
     */
     public function setEmailListName($value)
     {
         $this->_emailListName = $value;
     }

    /**
     * Get the email list name to query for. If no name is set, null will be 
     * returned.
     * 
     * @param string $value The email list name to filter search results by, 
     *          or null if disabled.
     */
    public function getEmailListName()
    {
        return $this->_emailListName;
    }

    /**
     * Set the first recipient which should be displayed when retrieving 
     * a list of email list recipients.
     * 
     * @param string $value The first recipient to be returned, or null to 
     *              disable.
     */
    public function setStartRecipient($value)
    {
        if ($value !== null) {
            $this->_params['startRecipient'] = $value;
        } else {
            unset($this->_params['startRecipient']);
        }
    }

    /**
     * Get the first recipient which should be displayed when retrieving 
     * a list of email list recipients.
     * 
     * @return string The first recipient to be returned, or null if 
     *              disabled.
     */
    public function getStartRecipient()
    {
        if (array_key_exists('startRecipient', $this->_params)) {
            return $this->_params['startRecipient'];
        } else {
            return null;
        }
    }

    /**
     * Returns the URL generated for this query, based on it's current 
     * parameters.
     * 
     * @return string A URL generated based on the state of this query.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getQueryUrl()
    {
        
        $uri = $this->getBaseUrl();
        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_PATH;
        if ($this->_emailListName !== null) {
            $uri .= '/' . $this->_emailListName;
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'EmailListName must not be null');
        }
        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/';
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[0�*��Gdata/Gapps/UserQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Query
 */
require_once('Zend/Gdata/Gapps/Query.php');

/**
 * Assists in constructing queries for Google Apps user entries. 
 * Instances of this class can be provided in many places where a URL is 
 * required.
 * 
 * For information on submitting queries to a server, see the Google Apps
 * service class, Zend_Gdata_Gapps.
 * 
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_UserQuery extends Zend_Gdata_Gapps_Query
{

    /**
     * If not null, specifies the username of the user who should be 
     * retrieved by this query.
     * 
     * @var string
     */
    protected $_username = null;

    /**
     * Create a new instance.
     * 
     * @param string $domain (optional) The Google Apps-hosted domain to use 
     *          when constructing query URIs.
     * @param string $username (optional) Value for the username 
     *          property.
     * @param string $startUsername (optional) Value for the 
     *          startUsername property.
     */
    public function __construct($domain = null, $username = null, 
            $startUsername = null)
    {
        parent::__construct($domain);
        $this->setUsername($username);
        $this->setStartUsername($startUsername);
    }

    /**
     * Set the username to query for. When set, only users with a username 
     * matching this value will be returned in search results. Set to 
     * null to disable filtering by username.
     * 
     * @see getUsername
     * @param string $value The username to filter search results by, or null to 
     *              disable.
     */
    public function setUsername($value)
    {
        $this->_username = $value;
    }

    /**
     * Get the username to query for. If no username is set, null will be 
     * returned.
     * 
     * @param string $value The username to filter search results by, or 
     *          null if disabled.
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Set the first username which should be displayed when retrieving 
     * a list of users.
     * 
     * @param string $value The first username to be returned, or null to 
     *          disable.
     */
    public function setStartUsername($value)
    {
        if ($value !== null) {
            $this->_params['startUsername'] = $value;
        } else {
            unset($this->_params['startUsername']);
        }
    }

    /**
     * Get the first username which should be displayed when retrieving 
     * a list of users.
     * 
     * @see setStartUsername
     * @return string The first username to be returned, or null if 
     *          disabled.
     */
    public function getStartUsername()
    {
        if (array_key_exists('startUsername', $this->_params)) {
            return $this->_params['startUsername'];
        } else {
            return null;
        }
    }

    /**
     * Returns the query URL generated by this query instance.
     * 
     * @return string The query URL for this instance.
     */
    public function getQueryUrl()
    {
        $uri = $this->getBaseUrl();
        $uri .= Zend_Gdata_Gapps::APPS_USER_PATH;
        if ($this->_username !== null) {
            $uri .= '/' . $this->_username;
        }
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[�G��Gdata/Gapps/UserFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Gapps_UserEntry
 */
require_once 'Zend/Gdata/Gapps/UserEntry.php';

/**
 * Data model for a collection of Google Apps user entries, usually 
 * provided by the Google Apps servers.
 * 
 * For information on requesting this feed from a server, see the Google 
 * Apps service class, Zend_Gdata_Gapps.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_UserFeed extends Zend_Gdata_Feed
{
    
    protected $_entryClassName = 'Zend_Gdata_Gapps_UserEntry';
    protected $_feedClassName = 'Zend_Gdata_Gapps_UserFeed';
    
}
PKpG[��k���Gdata/Gapps/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Zend_Gdata_Gapps
 */
require_once('Zend/Gdata/Gapps.php');

/**
 * Assists in constructing queries for Google Apps entries. This class 
 * provides common methods used by all other Google Apps query classes.
 *
 * This class should never be instantiated directly. Instead, instantiate a 
 * class which inherits from this class.
  * 
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_Gapps_Query extends Zend_Gdata_Query
{
    
    /**
     * The domain which is being administered via the Provisioning API.
     *
     * @var string
     */
    protected $_domain = null;
    
    /**
     * Create a new instance.
     * 
     * @param string $domain (optional) The Google Apps-hosted domain to use 
     *          when constructing query URIs.
     */
    public function __construct($domain = null)
    {
        parent::__construct();
        $this->_domain = $domain;
    }
    
    /**
     * Set domain for this service instance. This should be a fully qualified 
     * domain, such as 'foo.example.com'.
     *
     * This value is used when calculating URLs for retrieving and posting 
     * entries. If no value is specified, a URL will have to be manually 
     * constructed prior to using any methods which interact with the Google 
     * Apps provisioning service.
     * 
     * @param string $value The domain to be used for this session.
     */
    public function setDomain($value)
    {
        $this->_domain = $value;
    }

    /**
     * Get domain for this service instance. This should be a fully qualified 
     * domain, such as 'foo.example.com'. If no domain is set, null will be 
     * returned.
     * 
     * @see setDomain
     * @return string The domain to be used for this session, or null if not 
     *          set.
     */
    public function getDomain()
    {
        return $this->_domain;
    }
    
    /**
     * Returns the base URL used to access the Google Apps service, based 
     * on the current domain. The current domain can be temporarily 
     * overridden by providing a fully qualified domain as $domain.
     *
     * @see setDomain
     * @param string $domain (optional) A fully-qualified domain to use 
     *          instead of the default domain for this service instance.
     */
     public function getBaseUrl($domain = null)
     {
         if ($domain !== null) {
             return Zend_Gdata_Gapps::APPS_BASE_FEED_URI . '/' . $domain;
         }
         else if ($this->_domain !== null) {
             return Zend_Gdata_Gapps::APPS_BASE_FEED_URI . '/' . $this->_domain;
         }
         else {
             require_once 'Zend/Gdata/App/InvalidArgumentException.php';
             throw new Zend_Gdata_App_InvalidArgumentException(
                 'Domain must be specified.');
         }
     }

}
PKpG[#��@@Gdata/Gapps/NicknameQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Query
 */
require_once('Zend/Gdata/Gapps/Query.php');

/**
 * Assists in constructing queries for Google Apps nickname entries. 
 * Instances of this class can be provided in many places where a URL is 
 * required.
 * 
 * For information on submitting queries to a server, see the Google Apps
 * service class, Zend_Gdata_Gapps.
 * 
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_NicknameQuery extends Zend_Gdata_Gapps_Query
{

    /**
     * If not null, indicates the name of the nickname entry which 
     * should be returned by this query.
     * 
     * @var string
     */
    protected $_nickname = null;

    /**
     * Create a new instance.
     * 
     * @param string $domain (optional) The Google Apps-hosted domain to use 
     *          when constructing query URIs.
     * @param string $nickname (optional) Value for the nickname 
     *          property.
     * @param string $username (optional) Value for the username 
     *          property.
     * @param string $startNickname (optional) Value for the 
     *          startNickname property.
     */
    public function __construct($domain = null, $nickname = null, 
            $username = null, $startNickname = null)
    {
        parent::__construct($domain);
        $this->setNickname($nickname);
        $this->setUsername($username);
        $this->setStartNickname($startNickname);
    }

    /**
     * Set the nickname to query for. When set, only users with a nickname 
     * matching this value will be returned in search results. Set to 
     * null to disable filtering by username.
     * 
     * @param string $value The nickname to filter search results by, or null 
     *          to  disable.
     */
     public function setNickname($value)
     {
         $this->_nickname = $value;
     }

    /**
     * Get the nickname to query for. If no nickname is set, null will be 
     * returned.
     * 
     * @see setNickname
     * @return string The nickname to filter search results by, or null if 
     *              disabled.
     */
    public function getNickname()
    {
        return $this->_nickname;
    }

    /**
     * Set the username to query for. When set, only users with a username 
     * matching this value will be returned in search results. Set to 
     * null to disable filtering by username.
     * 
     * @param string $value The username to filter search results by, or null 
     *          to disable.
     */
    public function setUsername($value)
    {
        if ($value !== null) {
            $this->_params['username'] = $value;
        }
        else {
            unset($this->_params['username']);
        }
    }

    /**
     * Get the username to query for. If no username is set, null will be 
     * returned.
     * 
     * @see setUsername
     * @return string The username to filter search results by, or null if 
     *              disabled.
     */
    public function getUsername()
    {
        if (array_key_exists('username', $this->_params)) {
            return $this->_params['username'];
        } else {
            return null;
        }
    }

    /**
     * Set the first nickname which should be displayed when retrieving 
     * a list of nicknames.
     * 
     * @param string $value The first nickname to be returned, or null to 
     *              disable.
     */
    public function setStartNickname($value)
    {
        if ($value !== null) {
            $this->_params['startNickname'] = $value;
        } else {
            unset($this->_params['startNickname']);
        }
    }

    /**
     * Get the first nickname which should be displayed when retrieving 
     * a list of nicknames.
     * 
     * @return string The first nickname to be returned, or null to 
     *              disable.
     */
    public function getStartNickname()
    {
        if (array_key_exists('startNickname', $this->_params)) {
            return $this->_params['startNickname'];
        } else {
            return null;
        }
    }

    /**
     * Returns the URL generated for this query, based on it's current 
     * parameters.
     * 
     * @return string A URL generated based on the state of this query.
     */
    public function getQueryUrl()
    {
        
        $uri = $this->getBaseUrl();
        $uri .= Zend_Gdata_Gapps::APPS_NICKNAME_PATH;
        if ($this->_nickname !== null) {
            $uri .= '/' . $this->_nickname;
        }
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[����Gdata/Gapps/EmailListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_Gapps_Extension_EmailList
 */
require_once 'Zend/Gdata/Gapps/Extension/EmailList.php';

/**
 * Data model class for a Google Apps Email List Entry.
 *
 * Each email list entry describes a single email list within a Google Apps
 * hosted domain. Email lists may contain multiple recipients, as
 * described by instances of Zend_Gdata_Gapps_EmailListRecipient. Multiple
 * entries are contained within instances of Zend_Gdata_Gapps_EmailListFeed.
 *
 * To transfer email list entries to and from the Google Apps servers,
 * including creating new entries, refer to the Google Apps service class,
 * Zend_Gdata_Gapps.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListEntry';

    /**
     * <apps:emailList> child element containing general information about
     * this email list.
     *
     * @var Zend_Gdata_Gapps_Extension_EmailList
     */
    protected $_emailList = null;

    /**
     * <gd:feedLink> element containing information about other feeds
     * relevant to this entry.
     *
     * @var Zend_Gdata_Extension_FeedLink
     */
    protected $_feedLink = array();

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_emailList !== null) {
            $element->appendChild($this->_emailList->getDOM($element->ownerDocument));
        }
        foreach ($this->_feedLink as $feedLink) {
            $element->appendChild($feedLink->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('apps') . ':' . 'emailList';
                $emailList = new Zend_Gdata_Gapps_Extension_EmailList();
                $emailList->transferFromDOM($child);
                $this->_emailList = $emailList;
                break;
            case $this->lookupNamespace('gd') . ':' . 'feedLink';
                $feedLink = new Zend_Gdata_Extension_FeedLink();
                $feedLink->transferFromDOM($child);
                $this->_feedLink[] = $feedLink;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Retrieve the email list property for this entry.
     *
     * @see setEmailList
     * @return Zend_Gdata_Gapps_Extension_EmailList The requested object
     *              or null if not set.
     */
    public function getEmailList()
    {
        return $this->_emailList;
    }

    /**
     * Set the email list property for this entry. This property contains
     * information such as the name of this email list.
     *
     * This corresponds to the <apps:emailList> property in the Google Data
     * protocol.
     *
     * @param Zend_Gdata_Gapps_Extension_EmailList $value The desired value
     *              this element, or null to unset.
     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface
     */
    public function setEmailList($value)
    {
        $this->_emailList = $value;
        return $this;
    }

    /**
     * Get the feed link property for this entry.
     *
     * @see setFeedLink
     * @param string $rel (optional) The rel value of the link to be found.
     *          If null, the array of links is returned.
     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
     *          object corresponding to the requested rel value is returned
     *          if found, or null if the requested value is not found. If
     *          $rel is null or not specified, an array of all available
     *          feed links for this entry is returned, or null if no feed
     *          links are set.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }

    /**
     * Set the feed link property for this entry. Feed links provide
     * information about other feeds associated with this entry.
     *
     * This corresponds to the <gd:feedLink> property in the Google Data
     * protocol.
     *
     * @param array $value A collection of Zend_Gdata_Gapps_Extension_FeedLink
     *          instances representing all feed links for this entry, or
     *          null to unset.
     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface
     */
    public function setFeedLink($value)
    {
        $this->_feedLink = $value;
        return $this;
    }

}
PKpG[�PqC��Gdata/Gapps/Error.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Gdata_App_Base
 */
require_once 'Zend/Gdata/App/Base.php';

/**
 * Gdata Gapps Error class. This class is used to represent errors returned  
 * within an AppsForYourDomainErrors message received from the Google Apps 
 * servers.
 *
 * Several different errors may be represented by this class, determined by 
 * the error code returned by the server. For a list of error codes 
 * available at the time of this writing, see getErrorCode.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_Error extends Zend_Gdata_App_Base
{
    
    // Error codes as defined at 
    // http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_d
    
    const UNKNOWN_ERROR = 1000;
    const USER_DELETED_RECENTLY = 1100;
    const USER_SUSPENDED = 1101;
    const DOMAIN_USER_LIMIT_EXCEEDED = 1200;
    const DOMAIN_ALIAS_LIMIT_EXCEEDED = 1201;
    const DOMAIN_SUSPENDED = 1202;
    const DOMAIN_FEATURE_UNAVAILABLE = 1203;
    const ENTITY_EXISTS = 1300;
    const ENTITY_DOES_NOT_EXIST = 1301;
    const ENTITY_NAME_IS_RESERVED = 1302;
    const ENTITY_NAME_NOT_VALID = 1303;
    const INVALID_GIVEN_NAME = 1400;
    const INVALID_FAMILY_NAME = 1401;
    const INVALID_PASSWORD = 1402;
    const INVALID_USERNAME = 1403;
    const INVALID_HASH_FUNCTION_NAME = 1404;
    const INVALID_HASH_DIGEST_LENGTH = 1405;
    const INVALID_EMAIL_ADDRESS = 1406;
    const INVALID_QUERY_PARAMETER_VALUE = 1407;
    const TOO_MANY_RECIPIENTS_ON_EMAIL_LIST = 1500;
    
    protected $_errorCode = null;
    protected $_reason = null;
    protected $_invalidInput = null;
    
    public function __construct($errorCode = null, $reason = null, 
            $invalidInput = null) {
        parent::__construct("Google Apps error received: $errorCode ($reason)");
        $this->_errorCode = $errorCode;
        $this->_reason = $reason;
        $this->_invalidInput = $invalidInput;
    }
    
    /**
     * Set the error code for this exception. For more information about 
     * error codes, see getErrorCode.
     * 
     * @see getErrorCode
     * @param integer $value The new value for the error code.
     */
    public function setErrorCode($value) {
       $this->_errorCode = $value;
    }
    
    /** 
     * Get the error code for this exception. Currently valid values are 
     * available as constants within this class. These values are:
     * 
     *   UNKNOWN_ERROR (1000)
     *   USER_DELETED_RECENTLY (1100)
     *   USER_SUSPENDED (1101)
     *   DOMAIN_USER_LIMIT_EXCEEDED (1200)
     *   DOMAIN_ALIAS_LIMIT_EXCEEDED (1201)
     *   DOMAIN_SUSPENDED (1202)
     *   DOMAIN_FEATURE_UNAVAILABLE (1203)
     *   ENTITY_EXISTS (1300)
     *   ENTITY_DOES_NOT_EXIST (1301)
     *   ENTITY_NAME_IS_RESERVED (1302)
     *   ENTITY_NAME_NOT_VALID (1303)
     *   INVALID_GIVEN_NAME (1400)
     *   INVALID_FAMILY_NAME (1401)
     *   INVALID_PASSWORD (1402)
     *   INVALID_USERNAME (1403)
     *   INVALID_HASH_FUNCTION_NAME (1404)
     *   INVALID_HASH_DIGEST_LENGTH (1405)
     *   INVALID_EMAIL_ADDRESS (1406)
     *   INVALID_QUERY_PARAMETER_VALUE (1407)
     *   TOO_MANY_RECIPIENTS_ON_EMAIL_LIST (1500)
     * 
     * Numbers in parenthesis indicate the actual integer value of the 
     * constant. This list should not be treated as exhaustive, as additional 
     * error codes may be added at any time.
     * 
     * For more information about these codes and their meaning, please 
     * see Appendix D of the Google Apps Provisioning API Reference.
     * 
     * @link http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_d Google Apps Provisioning API Reference: Appendix D - Gdata Error Codes
     * @see setErrorCode
     * @return integer The error code returned by the Google Apps server.
     */
    public function getErrorCode() {
        return $this->_errorCode;
    }
    
    /**
     * Set human-readable text describing the reason this exception occurred.
     * 
     * @see getReason
     * @param string $value The reason this exception occurred.
     */
    public function setReason($value) {
       $this->_reason = $value;
    }
    
    /**
     * Get human-readable text describing the reason this exception occurred.
     * 
     * @see setReason
     * @return string The reason this exception occurred.
     */
    public function getReason() {
       return $this->_reason;
    }

    /**
     * Set the invalid input which caused this exception.
     * 
     * @see getInvalidInput
     * @param string $value The invalid input that triggered this exception.
     */
    public function setInvalidInput($value) {
       $this->_invalidInput = $value;
    }
    
    /**
     * Set the invalid input which caused this exception.
     * 
     * @see setInvalidInput
     * @return string The reason this exception occurred.
     */
    public function getInvalidInput() {
       return $this->_invalidInput;
    }
    
    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_errorCode !== null) {
            $element->setAttribute('errorCode', $this->_errorCode);
        }
        if ($this->_reason !== null) {
            $element->setAttribute('reason', $this->_reason);
        }
        if ($this->_invalidInput !== null) {
            $element->setAttribute('invalidInput', $this->_invalidInput);
        }
        return $element;
    }
    
    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'errorCode':
            $this->_errorCode = $attribute->nodeValue;
            break;
        case 'reason':
            $this->_reason = $attribute->nodeValue;
            break;
        case 'invalidInput':
            $this->_invalidInput = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }
    
    /**
     * Get a human readable version of this exception.
     * 
     * @return string
     */
    public function __toString() {
        return "Error " . $this->getErrorCode() . ": " . $this->getReason() .
            "\n\tInvalid Input: \"" . $this->getInvalidInput() . "\"";
    }

}
PKpG[���\\Gdata/Gapps/EmailListQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Query
 */
require_once('Zend/Gdata/Gapps/Query.php');

/**
 * Assists in constructing queries for Google Apps email list entries. 
 * Instances of this class can be provided in many places where a URL is 
 * required.
 * 
 * For information on submitting queries to a server, see the Google Apps
 * service class, Zend_Gdata_Gapps.
 * 
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListQuery extends Zend_Gdata_Gapps_Query
{

    /**
     * A string which, if not null, indicates which email list should 
     * be retrieved by this query.
     * 
     * @var string
     */
    protected $_emailListName = null;

    /**
     * Create a new instance.
     * 
     * @param string $domain (optional) The Google Apps-hosted domain to use 
     *          when constructing query URIs.
     * @param string $emailListName (optional) Value for the emailListName 
     *          property.
     * @param string $recipient (optional) Value for the recipient 
     *          property.
     * @param string $startEmailListName (optional) Value for the 
     *          startEmailListName property.
     */
    public function __construct($domain = null, $emailListName = null, 
            $recipient = null, $startEmailListName = null)
    {
        parent::__construct($domain);
        $this->setEmailListName($emailListName);
        $this->setRecipient($recipient);
        $this->setStartEmailListName($startEmailListName);
    }

    /**
     * Set the email list name to query for. When set, only lists with a name 
     * matching this value will be returned in search results. Set to 
     * null to disable filtering by list name.
     * 
     * @param string $value The email list name to filter search results by, 
     *          or null to disable.
     */
     public function setEmailListName($value)
     {
         $this->_emailListName = $value;
     }

    /**
     * Get the email list name to query for. If no name is set, null will be 
     * returned.
     * 
     * @see setEmailListName
     * @return string The email list name to filter search results by, or null
     *              if disabled.
     */
    public function getEmailListName()
    {
        return $this->_emailListName;
    }

    /**
     * Set the recipient to query for. When set, only subscribers with an 
     * email address matching this value will be returned in search results. 
     * Set to null to disable filtering by username.
     * 
     * @param string $value The recipient email address to filter search 
     *              results by, or null to  disable.
     */
    public function setRecipient($value)
    {
        if ($value !== null) {
            $this->_params['recipient'] = $value;
        }
        else {
            unset($this->_params['recipient']);
        }
    }

    /**
     * Get the recipient email address to query for. If no recipient is set, 
     * null will be returned.
     * 
     * @see setRecipient
     * @return string The recipient email address to filter search results by, 
     *              or null if disabled.
     */
    public function getRecipient()
    {
        if (array_key_exists('recipient', $this->_params)) {
            return $this->_params['recipient'];
        } else {
            return null;
        }
    }

    /**
     * Set the first email list which should be displayed when retrieving 
     * a list of email lists.
     * 
     * @param string $value The first email list to be returned, or null to 
     *              disable.
     */
    public function setStartEmailListName($value)
    {
        if ($value !== null) {
            $this->_params['startEmailListName'] = $value;
        } else {
            unset($this->_params['startEmailListName']);
        }
    }

    /**
     * Get the first email list which should be displayed when retrieving 
     * a list of email lists.
     * 
     * @return string The first email list to be returned, or null to 
     *              disable.
     */
    public function getStartEmailListName()
    {
        if (array_key_exists('startEmailListName', $this->_params)) {
            return $this->_params['startEmailListName'];
        } else {
            return null;
        }
    }

    /**
     * Returns the URL generated for this query, based on it's current 
     * parameters.
     * 
     * @return string A URL generated based on the state of this query.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getQueryUrl()
    {
        
        $uri = $this->getBaseUrl();
        $uri .= Zend_Gdata_Gapps::APPS_EMAIL_LIST_PATH;
        if ($this->_emailListName !== null) {
            $uri .= '/' . $this->_emailListName;
        }
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[{tpZZGdata/Gapps/NicknameEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Gapps_Extension_Login
 */
require_once 'Zend/Gdata/Gapps/Extension/Login.php';

/**
 * @see Zend_Gdata_Gapps_Extension_Nickname
 */
require_once 'Zend/Gdata/Gapps/Extension/Nickname.php';

/**
 * Data model class for a Google Apps Nickname Entry.
 *
 * Each nickname entry describes a single nickname within a Google Apps
 * hosted domain. Each user may own several nicknames, but each nickname may
 * only belong to one user. Multiple entries are contained within instances
 * of Zend_Gdata_Gapps_NicknameFeed.
 *
 * To transfer nickname entries to and from the Google Apps servers,
 * including creating new entries, refer to the Google Apps service class,
 * Zend_Gdata_Gapps.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_NicknameEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Gapps_NicknameEntry';

    /**
     * <apps:login> element used to hold information about the owner
     * of this nickname, including their username.
     *
     * @var Zend_Gdata_Gapps_Extension_Login
     */
    protected $_login = null;

    /**
     * <apps:nickname> element used to hold the name of this nickname.
     *
     * @var Zend_Gdata_Gapps_Extension_Nickname
     */
    protected $_nickname = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_login !== null) {
            $element->appendChild($this->_login->getDOM($element->ownerDocument));
        }
        if ($this->_nickname !== null) {
            $element->appendChild($this->_nickname->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('apps') . ':' . 'login';
                $login = new Zend_Gdata_Gapps_Extension_Login();
                $login->transferFromDOM($child);
                $this->_login = $login;
                break;
            case $this->lookupNamespace('apps') . ':' . 'nickname';
                $nickname = new Zend_Gdata_Gapps_Extension_Nickname();
                $nickname->transferFromDOM($child);
                $this->_nickname = $nickname;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value of the login property for this object.
     *
     * @see setLogin
     * @return Zend_Gdata_Gapps_Extension_Login The requested object.
     */
    public function getLogin()
    {
        return $this->_login;
    }

    /**
     * Set the value of the login property for this object. This property
     * is used to store the username address of the current user.
     *
     * @param Zend_Gdata_Gapps_Extension_Login $value The desired value for
     *          this instance's login property.
     * @return Zend_Gdata_Gapps_NicknameEntry Provides a fluent interface.
     */
    public function setLogin($value)
    {
        $this->_login = $value;
        return $this;
    }

    /**
     * Get the value of the nickname property for this object.
     *
     * @see setNickname
     * @return Zend_Gdata_Gapps_Extension_Nickname The requested object.
     */
    public function getNickname()
    {
        return $this->_nickname;
    }

    /**
     * Set the value of the nickname property for this object. This property
     * is used to store the the name of the current nickname.
     *
     * @param Zend_Gdata_Gapps_Extension_Nickname $value The desired value for
     *          this instance's nickname property.
     * @return Zend_Gdata_Gapps_NicknameEntry Provides a fluent interface.
     */
    public function setNickname($value)
    {
        $this->_nickname = $value;
        return $this;
    }

}
PKpG[��\%$%$Gdata/Gapps/UserEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_Gapps_Extension_Login
 */
require_once 'Zend/Gdata/Gapps/Extension/Login.php';

/**
 * @see Zend_Gdata_Gapps_Extension_Name
 */
require_once 'Zend/Gdata/Gapps/Extension/Name.php';

/**
 * @see Zend_Gdata_Gapps_Extension_Quota
 */
require_once 'Zend/Gdata/Gapps/Extension/Quota.php';

/**
 * Data model class for a Google Apps User Entry.
 *
 * Each user entry describes a single user within a Google Apps hosted
 * domain.
 *
 * To transfer user entries to and from the Google Apps servers, including
 * creating new entries, refer to the Google Apps service class,
 * Zend_Gdata_Gapps.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_UserEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Gapps_UserEntry';

    /**
     * <apps:login> element containing information about this user's
     * account, including their username and permissions.
     *
     * @var Zend_Gdata_Gapps_Extension_Login
     */
    protected $_login = null;

    /**
     * <apps:name> element containing the user's actual name.
     *
     * @var Zend_Gdata_Gapps_Extension_Name
     */
    protected $_name = null;

    /**
     * <apps:quotq> element describing any storage quotas in place for
     * this user.
     *
     * @var Zend_Gdata_Gapps_Extension_Quota
     */
    protected $_quota = null;

    /**
     * <gd:feedLink> element containing information about other feeds
     * relevant to this entry.
     *
     * @var Zend_Gdata_Extension_FeedLink
     */
    protected $_feedLink = array();

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_login !== null) {
            $element->appendChild($this->_login->getDOM($element->ownerDocument));
        }
        if ($this->_name !== null) {
            $element->appendChild($this->_name->getDOM($element->ownerDocument));
        }
        if ($this->_quota !== null) {
            $element->appendChild($this->_quota->getDOM($element->ownerDocument));
        }
        foreach ($this->_feedLink as $feedLink) {
            $element->appendChild($feedLink->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('apps') . ':' . 'login';
                $login = new Zend_Gdata_Gapps_Extension_Login();
                $login->transferFromDOM($child);
                $this->_login = $login;
                break;
            case $this->lookupNamespace('apps') . ':' . 'name';
                $name = new Zend_Gdata_Gapps_Extension_Name();
                $name->transferFromDOM($child);
                $this->_name = $name;
                break;
            case $this->lookupNamespace('apps') . ':' . 'quota';
                $quota = new Zend_Gdata_Gapps_Extension_Quota();
                $quota->transferFromDOM($child);
                $this->_quota = $quota;
                break;
            case $this->lookupNamespace('gd') . ':' . 'feedLink';
                $feedLink = new Zend_Gdata_Extension_FeedLink();
                $feedLink->transferFromDOM($child);
                $this->_feedLink[] = $feedLink;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value of the login property for this object.
     *
     * @see setLogin
     * @return Zend_Gdata_Gapps_Extension_Login The requested object.
     */
    public function getLogin()
    {
        return $this->_login;
    }

    /**
     * Set the value of the login property for this object. This property
     * is used to store the username address of the current user.
     *
     * @param Zend_Gdata_Gapps_Extension_Login $value The desired value for
     *          this instance's login property.
     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
     */
    public function setLogin($value)
    {
        $this->_login = $value;
        return $this;
    }

    /**
     * Get the value of the name property for this object.
     *
     * @see setName
     * @return Zend_Gdata_Gapps_Extension_Name The requested object.
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set the value of the name property for this object. This property
     * is used to store the full name of the current user.
     *
     * @param Zend_Gdata_Gapps_Extension_Name $value The desired value for
     *          this instance's name property.
     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
     */
    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    /**
     * Get the value of the quota property for this object.
     *
     * @see setQuota
     * @return Zend_Gdata_Gapps_Extension_Quota The requested object.
     */
    public function getQuota()
    {
        return $this->_quota;
    }

    /**
     * Set the value of the quota property for this object. This property
     * is used to store the amount of storage available for the current
     * user. Quotas may not be modifiable depending on the domain used.
     *
     * @param Zend_Gdata_Gapps_Extension_Quota $value The desired value for
     *          this instance's quota property.
     * @return Zend_Gdata_Gapps_UserEntry Provides a fluent interface.
     */
    public function setQuota($value)
    {
        $this->_quota = $value;
        return $this;
    }

    /**
     * Returns all feed links for this entry, or if a rel value is
     * specified, the feed link associated with that value is returned.
     *
     * @param string $rel The rel value of the link to be found. If null,
     *          the array of links is returned instead.
     * @return mixed Either an array of Zend_Gdata_Extension_FeedLink
     *          objects if $rel is null, a single
     *          Zend_Gdata_Extension_FeedLink object if $rel is specified
     *          and a matching feed link is found, or null if $rel is
     *          specified and no matching feed link is found.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }

    /**
     * Set the value of the feed link property for this object. This property
     * is used to provide links to alternative feeds relevant to this entry.
     *
     * @param array $value A collection of
     *          Zend_Gdata_Gapps_Extension_FeedLink objects.
     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface.
     */
    public function setFeedLink($value)
    {
        $this->_feedLink = $value;
        return $this;
    }

}
PKpG[IB��

'Gdata/Gapps/EmailListRecipientEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_Who
 */
require_once 'Zend/Gdata/Extension/Who.php';

/**
 * Data model class for a Google Apps Email List Recipient Entry.
 *
 * Each instance of this class represents a recipient of an email list
 * hosted on a Google Apps domain. Each email list may contain multiple
 * recipients. Email lists themselves are described by
 * Zend_Gdata_EmailListEntry. Multiple recipient entries are contained within
 * instances of Zend_Gdata_Gapps_EmailListRecipientFeed.
 *
 * To transfer email list recipients to and from the Google Apps servers,
 * including creating new recipients, refer to the Google Apps service class,
 * Zend_Gdata_Gapps.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps_EmailListRecipientEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Gapps_EmailListRecipientEntry';

    /**
     * <gd:who> element used to store the email address of the current
     * recipient. Only the email property of this element should be
     * populated.
     *
     * @var Zend_Gdata_Extension_Who
     */
    protected $_who = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gapps::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_who !== null) {
            $element->appendChild($this->_who->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gd') . ':' . 'who';
                $who = new Zend_Gdata_Extension_Who();
                $who->transferFromDOM($child);
                $this->_who = $who;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value of the who property for this object.
     *
     * @see setWho
     * @return Zend_Gdata_Extension_Who The requested object.
     */
    public function getWho()
    {
        return $this->_who;
    }

    /**
     * Set the value of the who property for this object. This property
     * is used to store the email address of the current recipient.
     *
     * @param Zend_Gdata_Extension_Who $value The desired value for this
     *          instance's who property.
     * @return Zend_Gdata_Gapps_EventEntry Provides a fluent interface.
     */
    public function setWho($value)
    {
        $this->_who = $value;
        return $this;
    }

}
PKpG[ѫ#�]]Gdata/ClientLogin.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_HttpClient
 */
require_once 'Zend/Gdata/HttpClient.php';

/**
 * Zend_Version
 */
require_once 'Zend/Version.php';

/**
 * Class to facilitate Google's "Account Authentication
 * for Installed Applications" also known as "ClientLogin".
 * @see http://code.google.com/apis/accounts/AuthForInstalledApps.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_ClientLogin
{

    /**
     * The Google client login URI
     *
     */
    const CLIENTLOGIN_URI = 'https://www.google.com/accounts/ClientLogin';

    /**
     * The default 'source' parameter to send to Google
     *
     */
    const DEFAULT_SOURCE = 'Zend-ZendFramework';

    /**
     * Set Google authentication credentials.
     * Must be done before trying to do any Google Data operations that
     * require authentication.
     * For example, viewing private data, or posting or deleting entries.
     *
     * @param string $email
     * @param string $password
     * @param string $service
     * @param Zend_Gdata_HttpClient $client
     * @param string $source
     * @param string $loginToken The token identifier as provided by the server.
     * @param string $loginCaptcha The user's response to the CAPTCHA challenge.
     * @param string $accountType An optional string to identify whether the
     * account to be authenticated is a google or a hosted account. Defaults to 
     * 'HOSTED_OR_GOOGLE'. See: http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Request
     * @throws Zend_Gdata_App_AuthException
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_CaptchaRequiredException
     * @return Zend_Gdata_HttpClient
     */
    public static function getHttpClient($email, $password, $service = 'xapi',
        $client = null,
        $source = self::DEFAULT_SOURCE,
        $loginToken = null,
        $loginCaptcha = null,
        $loginUri = self::CLIENTLOGIN_URI,
        $accountType = 'HOSTED_OR_GOOGLE')
    {
        if (! ($email && $password)) {
            require_once 'Zend/Gdata/App/AuthException.php';
            throw new Zend_Gdata_App_AuthException(
                   'Please set your Google credentials before trying to ' .
                   'authenticate');
        }

        if ($client == null) {
            $client = new Zend_Gdata_HttpClient();
        }
        if (!$client instanceof Zend_Http_Client) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException(
                    'Client is not an instance of Zend_Http_Client.');
        }

        // Build the HTTP client for authentication
        $client->setUri($loginUri);
        $useragent = $source . ' Zend_Framework_Gdata/' . Zend_Version::VERSION;
        $client->setConfig(array(
                'maxredirects'    => 0,
                'strictredirects' => true,
                'useragent' => $useragent
            )
        );
        $client->setParameterPost('accountType', $accountType);
        $client->setParameterPost('Email', (string) $email);
        $client->setParameterPost('Passwd', (string) $password);
        $client->setParameterPost('service', (string) $service);
        $client->setParameterPost('source', (string) $source);
        if ($loginToken || $loginCaptcha) {
            if($loginToken && $loginCaptcha) {
                $client->setParameterPost('logintoken', (string) $loginToken);
                $client->setParameterPost('logincaptcha', 
                        (string) $loginCaptcha);
            }
            else {
                require_once 'Zend/Gdata/App/AuthException.php';
                throw new Zend_Gdata_App_AuthException(
                    'Please provide both a token ID and a user\'s response ' .
                    'to the CAPTCHA challenge.');
            }
        }

        // Send the authentication request
        // For some reason Google's server causes an SSL error. We use the
        // output buffer to supress an error from being shown. Ugly - but works!
        ob_start();
        try {
            $response = $client->request('POST');
        } catch (Zend_Http_Client_Exception $e) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
        }
        ob_end_clean();

        // Parse Google's response
        $goog_resp = array();
        foreach (explode("\n", $response->getBody()) as $l) {
            $l = chop($l);
            if ($l) {
                list($key, $val) = explode('=', chop($l), 2);
                $goog_resp[$key] = $val;
            }
        }

        if ($response->getStatus() == 200) {
            $client = new Zend_Gdata_HttpClient();
            $client->setClientLoginToken($goog_resp['Auth']);
            $useragent = $source . ' Zend_Framework_Gdata/' . Zend_Version::VERSION;
            $client->setConfig(array(
                    'strictredirects' => true,
                    'useragent' => $useragent
                )
            );
            return $client;

        } elseif ($response->getStatus() == 403) {
            // Check if the server asked for a CAPTCHA
            if (array_key_exists('Error', $goog_resp) &&
                $goog_resp['Error'] == 'CaptchaRequired') {
                require_once 'Zend/Gdata/App/CaptchaRequiredException.php';
                throw new Zend_Gdata_App_CaptchaRequiredException(
                    $goog_resp['CaptchaToken'], $goog_resp['CaptchaUrl']);
            }
            else {
                require_once 'Zend/Gdata/App/AuthException.php';
                throw new Zend_Gdata_App_AuthException('Authentication with Google failed. Reason: ' .
                    (isset($goog_resp['Error']) ? $goog_resp['Error'] : 'Unspecified.'));
            }
        }
    }

}

PKpG[�ϱ��N�NGdata/Photos.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Photos_UserFeed
 */
require_once 'Zend/Gdata/Photos/UserFeed.php';

/**
 * @see Zend_Gdata_Photos_AlbumFeed
 */
require_once 'Zend/Gdata/Photos/AlbumFeed.php';

/**
 * @see Zend_Gdata_Photos_PhotoFeed
 */
require_once 'Zend/Gdata/Photos/PhotoFeed.php';

/**
 * Service class for interacting with the Google Photos Data API.
 *
 * Like other service classes in this module, this class provides access via
 * an HTTP client to Google servers for working with entries and feeds.
 *
 * @link http://code.google.com/apis/picasaweb/gdata.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos extends Zend_Gdata
{

    const PICASA_BASE_URI = 'http://picasaweb.google.com/data';
    const PICASA_BASE_FEED_URI = 'http://picasaweb.google.com/data/feed';
    const AUTH_SERVICE_NAME = 'lh2';

    /**
     * Default projection when interacting with the Picasa server.
     */
    const DEFAULT_PROJECTION = 'api';

    /**
     * The default visibility to filter events by.
     */
    const DEFAULT_VISIBILITY = 'all';

    /**
     * The default user to retrieve feeds for.
     */
    const DEFAULT_USER = 'default';

    /**
     * Path to the user feed on the Picasa server.
     */
    const USER_PATH = 'user';

    /**
     * Path to album feeds on the Picasa server.
     */
    const ALBUM_PATH = 'albumid';

    /**
     * Path to photo feeds on the Picasa server.
     */
    const PHOTO_PATH = 'photoid';

    /**
     * The path to the community search feed on the Picasa server.
     */
    const COMMUNITY_SEARCH_PATH = 'all';

    /**
     * The path to use for finding links to feeds within entries
     */
    const FEED_LINK_PATH = 'http://schemas.google.com/g/2005#feed';

    /**
     * The path to use for the determining type of an entry
     */
    const KIND_PATH = 'http://schemas.google.com/g/2005#kind';

    /**
     * Namespaces used for Zend_Gdata_Photos
     *
     * @var array
     */
    public static $namespaces = array(
        array('gphoto', 'http://schemas.google.com/photos/2007', 1, 0),
        array('photo', 'http://www.pheed.com/pheed/', 1, 0),
        array('exif', 'http://schemas.google.com/photos/exif/2007', 1, 0),
        array('georss', 'http://www.georss.org/georss', 1, 0),
        array('gml', 'http://www.opengis.net/gml', 1, 0),
        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
    );

    /**
     * Create Zend_Gdata_Photos object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Photos');
        $this->registerPackage('Zend_Gdata_Photos_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
    }

    /**
     * Retrieve a UserFeed containing AlbumEntries, PhotoEntries and
     * TagEntries associated with a given user.
     *
     * @param string $userName The userName of interest
     * @param mixed $location (optional) The location for the feed, as a URL
     *          or Query. If not provided, a default URL will be used instead.
     * @return Zend_Gdata_Photos_UserFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getUserFeed($userName = null, $location = null)
    {
        if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('feed');
            if ($userName !== null) {
                $location->setUser($userName);
            }
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            if ($userName !== null) {
                $location->setUser($userName);
            }
            $uri = $location->getQueryUrl();
        } else if ($location !== null) {
            $uri = $location;
        } else if ($userName !== null) {
            $uri = self::PICASA_BASE_FEED_URI . '/' .
                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
                $userName;
        } else {
            $uri = self::PICASA_BASE_FEED_URI . '/' .
                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
                self::DEFAULT_USER;
        }

        return parent::getFeed($uri, 'Zend_Gdata_Photos_UserFeed');
    }

    /**
     * Retreive AlbumFeed object containing multiple PhotoEntry or TagEntry
     * objects.
     *
     * @param mixed $location (optional) The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_AlbumFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getAlbumFeed($location = null)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('feed');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Photos_AlbumFeed');
    }

    /**
     * Retreive PhotoFeed object containing comments and tags associated
     * with a given photo.
     *
     * @param mixed $location (optional) The location for the feed, as a URL
     *          or Query. If not specified, the community search feed will
     *          be returned instead.
     * @return Zend_Gdata_Photos_PhotoFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getPhotoFeed($location = null)
    {
        if ($location === null) {
            $uri = self::PICASA_BASE_FEED_URI . '/' .
                self::DEFAULT_PROJECTION . '/' .
                self::COMMUNITY_SEARCH_PATH;
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('feed');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Photos_PhotoFeed');
    }

    /**
     * Retreive a single UserEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_UserEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getUserEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('entry');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Photos_UserEntry');
    }

    /**
     * Retreive a single AlbumEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_AlbumEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getAlbumEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('entry');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Photos_AlbumEntry');
    }

    /**
     * Retreive a single PhotoEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_PhotoEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getPhotoEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('entry');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Photos_PhotoEntry');
    }

    /**
     * Retreive a single TagEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_TagEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getTagEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('entry');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Photos_TagEntry');
    }

    /**
     * Retreive a single CommentEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Photos_CommentEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function getCommentEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Photos_UserQuery) {
            $location->setType('entry');
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Photos_CommentEntry');
    }

    /**
     * Create a new album from a AlbumEntry.
     *
     * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to
     *          insert.
     * @param string $url (optional) The URI that the album should be
     *          uploaded to. If null, the default album creation URI for
     *          this domain will be used.
     * @return Zend_Gdata_Photos_AlbumEntry The inserted album entry as
     *          returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function insertAlbumEntry($album, $uri = null)
    {
        if ($uri === null) {
            $uri = self::PICASA_BASE_FEED_URI . '/' .
                self::DEFAULT_PROJECTION . '/' . self::USER_PATH . '/' .
                self::DEFAULT_USER;
        }
        $newEntry = $this->insertEntry($album, $uri, 'Zend_Gdata_Photos_AlbumEntry');
        return $newEntry;
    }

    /**
     * Create a new photo from a PhotoEntry.
     *
     * @param Zend_Gdata_Photos_PhotoEntry $photo The photo to insert.
     * @param string $url The URI that the photo should be uploaded
     *          to. Alternatively, an AlbumEntry can be provided and the
     *          photo will be added to that album.
     * @return Zend_Gdata_Photos_PhotoEntry The inserted photo entry
     *          as returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function insertPhotoEntry($photo, $uri = null)
    {
        if ($uri instanceof Zend_Gdata_Photos_AlbumEntry) {
            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
        }
        if ($uri === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'URI must not be null');
        }
        $newEntry = $this->insertEntry($photo, $uri, 'Zend_Gdata_Photos_PhotoEntry');
        return $newEntry;
    }

    /**
     * Create a new tag from a TagEntry.
     *
     * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to insert.
     * @param string $url The URI where the tag should be
     *          uploaded to. Alternatively, a PhotoEntry can be provided and
     *          the tag will be added to that photo.
     * @return Zend_Gdata_Photos_TagEntry The inserted tag entry as returned
     *          by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function insertTagEntry($tag, $uri = null)
    {
        if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) {
            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
        }
        if ($uri === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'URI must not be null');
        }
        $newEntry = $this->insertEntry($tag, $uri, 'Zend_Gdata_Photos_TagEntry');
        return $newEntry;
    }

    /**
     * Create a new comment from a CommentEntry.
     *
     * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to
     *          insert.
     * @param string $url The URI where the comment should be uploaded to.
     *          Alternatively, a PhotoEntry can be provided and
     *          the comment will be added to that photo.
     * @return Zend_Gdata_Photos_CommentEntry The inserted comment entry
     *          as returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function insertCommentEntry($comment, $uri = null)
    {
        if ($uri instanceof Zend_Gdata_Photos_PhotoEntry) {
            $uri = $uri->getLink(self::FEED_LINK_PATH)->href;
        }
        if ($uri === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'URI must not be null');
        }
        $newEntry = $this->insertEntry($comment, $uri, 'Zend_Gdata_Photos_CommentEntry');
        return $newEntry;
    }

    /**
     * Delete an AlbumEntry.
     *
     * @param Zend_Gdata_Photos_AlbumEntry $album The album entry to
     *          delete.
     * @param boolean $catch Whether to catch an exception when
     *            modified and re-delete or throw
     * @return void.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function deleteAlbumEntry($album, $catch)
    {
        if ($catch) {
            try {
                $this->delete($album);
            } catch (Zend_Gdata_App_HttpException $e) {
                if ($e->getResponse()->getStatus() === 409) {
                    $entry = new Zend_Gdata_Photos_AlbumEntry($e->getResponse()->getBody());
                    $this->delete($entry->getLink('edit')->href);
                } else {
                    throw $e;
                }
            }
        } else {
            $this->delete($album);
        }
    }

    /**
     * Delete a PhotoEntry.
     *
     * @param Zend_Gdata_Photos_PhotoEntry $photo The photo entry to
     *          delete.
     * @param boolean $catch Whether to catch an exception when
     *            modified and re-delete or throw
     * @return void.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function deletePhotoEntry($photo, $catch)
    {
        if ($catch) {
            try {
                $this->delete($photo);
            } catch (Zend_Gdata_App_HttpException $e) {
                if ($e->getResponse()->getStatus() === 409) {
                    $entry = new Zend_Gdata_Photos_PhotoEntry($e->getResponse()->getBody());
                    $this->delete($entry->getLink('edit')->href);
                } else {
                    throw $e;
                }
            }
        } else {
            $this->delete($photo);
        }
    }

    /**
     * Delete a CommentEntry.
     *
     * @param Zend_Gdata_Photos_CommentEntry $comment The comment entry to
     *          delete.
     * @param boolean $catch Whether to catch an exception when
     *            modified and re-delete or throw
     * @return void.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function deleteCommentEntry($comment, $catch)
    {
        if ($catch) {
            try {
                $this->delete($comment);
            } catch (Zend_Gdata_App_HttpException $e) {
                if ($e->getResponse()->getStatus() === 409) {
                    $entry = new Zend_Gdata_Photos_CommentEntry($e->getResponse()->getBody());
                    $this->delete($entry->getLink('edit')->href);
                } else {
                    throw $e;
                }
            }
        } else {
            $this->delete($comment);
        }
    }

    /**
     * Delete a TagEntry.
     *
     * @param Zend_Gdata_Photos_TagEntry $tag The tag entry to
     *          delete.
     * @param boolean $catch Whether to catch an exception when
     *            modified and re-delete or throw
     * @return void.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     */
    public function deleteTagEntry($tag, $catch)
    {
        if ($catch) {
            try {
                $this->delete($tag);
            } catch (Zend_Gdata_App_HttpException $e) {
                if ($e->getResponse()->getStatus() === 409) {
                    $entry = new Zend_Gdata_Photos_TagEntry($e->getResponse()->getBody());
                    $this->delete($entry->getLink('edit')->href);
                } else {
                    throw $e;
                }
            }
        } else {
            $this->delete($tag);
        }
    }

}
PKpG[������Gdata/Extension.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents a Gdata extension
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension extends Zend_Gdata_App_Extension
{

    protected $_rootNamespace = 'gd';

    public function __construct()
    {
        /* NOTE: namespaces must be registered before calling parent */
        $this->registerNamespace('gd',
                'http://schemas.google.com/g/2005');
        $this->registerNamespace('openSearch',
                'http://a9.com/-/spec/opensearchrss/1.0/', 1, 0);
        $this->registerNamespace('openSearch',
                'http://a9.com/-/spec/opensearch/1.1/', 2, 0);
        $this->registerNamespace('rss',
                'http://blogs.law.harvard.edu/tech/rss');

        parent::__construct();
    }

}
PKpG[�c9�l�l�Gdata/Gapps.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Gapps_UserFeed
 */
require_once 'Zend/Gdata/Gapps/UserFeed.php';

/**
 * @see Zend_Gdata_Gapps_NicknameFeed
 */
require_once 'Zend/Gdata/Gapps/NicknameFeed.php';

/**
 * @see Zend_Gdata_Gapps_EmailListFeed
 */
require_once 'Zend/Gdata/Gapps/EmailListFeed.php';

/**
 * @see Zend_Gdata_Gapps_EmailListRecipientFeed
 */
require_once 'Zend/Gdata/Gapps/EmailListRecipientFeed.php';


/**
 * Service class for interacting with the Google Apps Provisioning API.
 *
 * Like other service classes in this module, this class provides access via
 * an HTTP client to Google servers for working with entries and feeds.
 *
 * Because of the nature of this API, all access must occur over an
 * authenticated connection.
 *
 * @link http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gapps
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gapps extends Zend_Gdata
{

    const APPS_BASE_FEED_URI = 'https://apps-apis.google.com/a/feeds';
    const AUTH_SERVICE_NAME = 'apps';

    /**
     * Path to user feeds on the Google Apps server.
     */
    const APPS_USER_PATH = '/user/2.0';

    /**
     * Path to nickname feeds on the Google Apps server.
     */
    const APPS_NICKNAME_PATH = '/nickname/2.0';

    /**
     * Path to email list feeds on the Google Apps server.
     */
    const APPS_EMAIL_LIST_PATH = '/emailList/2.0';

    /**
     * Path to email list recipient feeds on the Google Apps server.
     */
    const APPS_EMAIL_LIST_RECIPIENT_POSTFIX = '/recipient';

    /**
     * The domain which is being administered via the Provisioning API.
     *
     * @var string
     */
    protected $_domain = null;

    /**
     * Namespaces used for Zend_Gdata_Gapps
     *
     * @var array
     */
    public static $namespaces = array(
        array('apps', 'http://schemas.google.com/apps/2006', 1, 0)
    );

    /**
     * Create Gdata_Gapps object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google Apps servers.
     * @param string $domain (optional) The Google Apps domain which is to be
     *          accessed.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $domain = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Gapps');
        $this->registerPackage('Zend_Gdata_Gapps_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
        $this->_domain = $domain;
    }

    /**
     * Convert an exception to an ServiceException if an AppsForYourDomain
     * XML document is contained within the original exception's HTTP
     * response. If conversion fails, throw the original error.
     *
     * @param Zend_Gdata_Exception $e The exception to convert.
     * @throws Zend_Gdata_Gapps_ServiceException
     * @throws mixed
     */
    public static function throwServiceExceptionIfDetected($e) {
        try {
            // Check to see if there is an AppsForYourDomainErrors
            // datastructure in the response. If so, convert it to
            // an exception and throw it.
            require_once 'Zend/Gdata/Gapps/ServiceException.php';
            $error = new Zend_Gdata_Gapps_ServiceException();
            $error->importFromString($e->getResponse()->getBody());
            throw $error;
        } catch (Zend_Gdata_App_Exception $e2) {
            // Unable to convert the response to a ServiceException,
            // most likely because the server didn't return an
            // AppsForYourDomainErrors document. Throw the original
            // exception.
            throw $e;
        }
    }

    /**
     * Imports a feed located at $uri.
     * This method overrides the default behavior of Zend_Gdata_App,
     * providing support for Zend_Gdata_Gapps_ServiceException.
     *
     * @param  string $uri
     * @param  Zend_Http_Client $client (optional) The client used for
     *          communication
     * @param  string $className (optional) The class which is used as the
     *          return type
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     * @return Zend_Gdata_App_Feed
     */
    public static function import($uri, $client = null, $className='Zend_Gdata_App_Feed')
    {
        try {
            return parent::import($uri, $client, $className);
        } catch (Zend_Gdata_App_HttpException $e) {
            self::throwServiceExceptionIfDetected($e);
        }
    }

    /**
     * GET a URI using client object.
     * This method overrides the default behavior of Zend_Gdata_App,
     * providing support for Zend_Gdata_Gapps_ServiceException.
     *
     * @param string $uri GET URI
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     * @return Zend_Http_Response
     */
    public function get($uri, $extraHeaders = array())
    {
        try {
            return parent::get($uri, $extraHeaders);
        } catch (Zend_Gdata_App_HttpException $e) {
            self::throwServiceExceptionIfDetected($e);
        }
    }

    /**
     * POST data with client object.
     * This method overrides the default behavior of Zend_Gdata_App,
     * providing support for Zend_Gdata_Gapps_ServiceException.
     *
     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
     * @param string $uri (optional) POST URI
     * @param integer $remainingRedirects (optional)
     * @param string $contentType Content-type of the data
     * @param array $extraHaders Extra headers to add tot he request
     * @return Zend_Http_Response
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function post($data, $uri = null, $remainingRedirects = null,
            $contentType = null, $extraHeaders = null)
    {
        try {
            return parent::post($data, $uri, $remainingRedirects, $contentType, $extraHeaders);
        } catch (Zend_Gdata_App_HttpException $e) {
            self::throwServiceExceptionIfDetected($e);
        }
    }

    /**
     * PUT data with client object
     * This method overrides the default behavior of Zend_Gdata_App,
     * providing support for Zend_Gdata_Gapps_ServiceException.
     *
     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
     * @param string $uri (optional) PUT URI
     * @param integer $remainingRedirects (optional)
     * @param string $contentType Content-type of the data
     * @param array $extraHaders Extra headers to add tot he request
     * @return Zend_Http_Response
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function put($data, $uri = null, $remainingRedirects = null,
            $contentType = null, $extraHeaders = null)
    {
        try {
            return parent::put($data, $uri, $remainingRedirects, $contentType, $extraHeaders);
        } catch (Zend_Gdata_App_HttpException $e) {
            self::throwServiceExceptionIfDetected($e);
        }
    }

    /**
     * DELETE entry with client object
     * This method overrides the default behavior of Zend_Gdata_App,
     * providing support for Zend_Gdata_Gapps_ServiceException.
     *
     * @param mixed $data The Zend_Gdata_App_Entry or URL to delete
     * @param integer $remainingRedirects (optional)
     * @return void
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function delete($data, $remainingRedirects = null)
    {
        try {
            return parent::delete($data, $remainingRedirects);
        } catch (Zend_Gdata_App_HttpException $e) {
            self::throwServiceExceptionIfDetected($e);
        }
    }

    /**
     * Set domain for this service instance. This should be a fully qualified
     * domain, such as 'foo.example.com'.
     *
     * This value is used when calculating URLs for retrieving and posting
     * entries. If no value is specified, a URL will have to be manually
     * constructed prior to using any methods which interact with the Google
     * Apps provisioning service.
     *
     * @param string $value The domain to be used for this session.
     */
    public function setDomain($value)
    {
        $this->_domain = $value;
    }

    /**
     * Get domain for this service instance. This should be a fully qualified
     * domain, such as 'foo.example.com'. If no domain is set, null will be
     * returned.
     *
     * @return string The domain to be used for this session, or null if not
     *          set.
     */
    public function getDomain()
    {
        return $this->_domain;
    }

    /**
     * Returns the base URL used to access the Google Apps service, based
     * on the current domain. The current domain can be temporarily
     * overridden by providing a fully qualified domain as $domain.
     *
     * @param string $domain (optional) A fully-qualified domain to use
     *          instead of the default domain for this service instance.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
     public function getBaseUrl($domain = null)
     {
         if ($domain !== null) {
             return self::APPS_BASE_FEED_URI . '/' . $domain;
         } else if ($this->_domain !== null) {
             return self::APPS_BASE_FEED_URI . '/' . $this->_domain;
         } else {
             require_once 'Zend/Gdata/App/InvalidArgumentException.php';
             throw new Zend_Gdata_App_InvalidArgumentException(
                     'Domain must be specified.');
         }
     }

    /**
     * Retrieve a UserFeed containing multiple UserEntry objects.
     *
     * @param mixed $location (optional) The location for the feed, as a URL
     *          or Query.
     * @return Zend_Gdata_Gapps_UserFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getUserFeed($location = null)
    {
        if ($location === null) {
            $uri = $this->getBaseUrl() . self::APPS_USER_PATH;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gapps_UserFeed');
    }

    /**
     * Retreive NicknameFeed object containing multiple NicknameEntry objects.
     *
     * @param mixed $location (optional) The location for the feed, as a URL
     *          or Query.
     * @return Zend_Gdata_Gapps_NicknameFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getNicknameFeed($location = null)
    {
        if ($location === null) {
            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gapps_NicknameFeed');
    }

    /**
     * Retreive EmailListFeed object containing multiple EmailListEntry
     * objects.
     *
     * @param mixed $location (optional) The location for the feed, as a URL
     *          or Query.
     * @return Zend_Gdata_Gapps_EmailListFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getEmailListFeed($location = null)
    {
        if ($location === null) {
            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListFeed');
    }

    /**
     * Retreive EmailListRecipientFeed object containing multiple
     * EmailListRecipientEntry objects.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Gapps_EmailListRecipientFeed
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getEmailListRecipientFeed($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gapps_EmailListRecipientFeed');
    }

    /**
     * Retreive a single UserEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Gapps_UserEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getUserEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Gapps_UserEntry');
    }

    /**
     * Retreive a single NicknameEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Gapps_NicknameEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getNicknameEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Gapps_NicknameEntry');
    }

    /**
     * Retreive a single EmailListEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Gapps_EmailListEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getEmailListEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListEntry');
    }

    /**
     * Retreive a single EmailListRecipientEntry object.
     *
     * @param mixed $location The location for the feed, as a URL or Query.
     * @return Zend_Gdata_Gapps_EmailListRecipientEntry
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function getEmailListRecipientEntry($location)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry');
    }

    /**
     * Create a new user from a UserEntry.
     *
     * @param Zend_Gdata_Gapps_UserEntry $user The user entry to insert.
     * @param string $uri (optional) The URI where the user should be
     *          uploaded to. If null, the default user creation URI for
     *          this domain will be used.
     * @return Zend_Gdata_Gapps_UserEntry The inserted user entry as
     *          returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function insertUser($user, $uri = null)
    {
        if ($uri === null) {
            $uri = $this->getBaseUrl() . self::APPS_USER_PATH;
        }
        $newEntry = $this->insertEntry($user, $uri, 'Zend_Gdata_Gapps_UserEntry');
        return $newEntry;
    }

    /**
     * Create a new nickname from a NicknameEntry.
     *
     * @param Zend_Gdata_Gapps_NicknameEntry $nickname The nickname entry to
     *          insert.
     * @param string $uri (optional) The URI where the nickname should be
     *          uploaded to. If null, the default nickname creation URI for
     *          this domain will be used.
     * @return Zend_Gdata_Gapps_NicknameEntry The inserted nickname entry as
     *          returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function insertNickname($nickname, $uri = null)
    {
        if ($uri === null) {
            $uri = $this->getBaseUrl() . self::APPS_NICKNAME_PATH;
        }
        $newEntry = $this->insertEntry($nickname, $uri, 'Zend_Gdata_Gapps_NicknameEntry');
        return $newEntry;
    }

    /**
     * Create a new email list from an EmailListEntry.
     *
     * @param Zend_Gdata_Gapps_EmailListEntry $emailList The email list entry
     *          to insert.
     * @param string $uri (optional) The URI where the email list should be
     *          uploaded to. If null, the default email list creation URI for
     *          this domain will be used.
     * @return Zend_Gdata_Gapps_EmailListEntry The inserted email list entry
     *          as returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function insertEmailList($emailList, $uri = null)
    {
        if ($uri === null) {
            $uri = $this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH;
        }
        $newEntry = $this->insertEntry($emailList, $uri, 'Zend_Gdata_Gapps_EmailListEntry');
        return $newEntry;
    }

    /**
     * Create a new email list recipient from an EmailListRecipientEntry.
     *
     * @param Zend_Gdata_Gapps_EmailListRecipientEntry $recipient The recipient
     *          entry to insert.
     * @param string $uri (optional) The URI where the recipient should be
     *          uploaded to. If null, the default recipient creation URI for
     *          this domain will be used.
     * @return Zend_Gdata_Gapps_EmailListRecipientEntry The inserted
     *          recipient entry as returned by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function insertEmailListRecipient($recipient, $uri = null)
    {
        if ($uri === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'URI must not be null');
        } elseif ($uri instanceof Zend_Gdata_Gapps_EmailListEntry) {
            $uri = $uri->getLink('edit')->href;
        }
        $newEntry = $this->insertEntry($recipient, $uri, 'Zend_Gdata_Gapps_EmailListRecipientEntry');
        return $newEntry;
    }

    /**
     * Provides a magic factory method to instantiate new objects with
     * shorter syntax than would otherwise be required by the Zend Framework
     * naming conventions. For more information, see Zend_Gdata_App::__call().
     *
     * This overrides the default behavior of __call() so that query classes
     * do not need to have their domain manually set when created with
     * a magic factory method.
     *
     * @see Zend_Gdata_App::__call()
     * @param string $method The method name being called
     * @param array $args The arguments passed to the call
     * @throws Zend_Gdata_App_Exception
     */
    public function __call($method, $args) {
        if (preg_match('/^new(\w+Query)/', $method, $matches)) {
            $class = $matches[1];
            $foundClassName = null;
            foreach ($this->_registeredPackages as $name) {
                 try {
                     require_once 'Zend/Loader.php';
                     @Zend_Loader::loadClass("${name}_${class}");
                     $foundClassName = "${name}_${class}";
                     break;
                 } catch (Zend_Exception $e) {
                     // package wasn't here- continue searching
                 }
            }
            if ($foundClassName != null) {
                $reflectionObj = new ReflectionClass($foundClassName);
                // Prepend the domain to the query
                $args = array_merge(array($this->getDomain()), $args);
                return $reflectionObj->newInstanceArgs($args);
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception(
                        "Unable to find '${class}' in registered packages");
            }
        } else {
            return parent::__call($method, $args);
        }

    }

    // Convenience methods
    // Specified at http://code.google.com/apis/apps/gdata_provisioning_api_v2.0_reference.html#appendix_e

    /**
     * Create a new user entry and send it to the Google Apps servers.
     *
     * @param string $username The username for the new user.
     * @param string $givenName The given name for the new user.
     * @param string $familyName The family name for the new user.
     * @param string $password The password for the new user as a plaintext string
     *                 (if $passwordHashFunction is null) or a SHA-1 hashed
     *                 value (if $passwordHashFunction = 'SHA-1').
     * @param string $quotaLimitInMB (optional) The quota limit for the new user in MB.
     * @return Zend_Gdata_Gapps_UserEntry (optional) The new user entry as returned by
     *                 server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function createUser ($username, $givenName, $familyName, $password,
            $passwordHashFunction = null, $quotaLimitInMB = null) {
        $user = $this->newUserEntry();
        $user->login = $this->newLogin();
        $user->login->username = $username;
        $user->login->password = $password;
        $user->login->hashFunctionName = $passwordHashFunction;
        $user->name = $this->newName();
        $user->name->givenName = $givenName;
        $user->name->familyName = $familyName;
        if ($quotaLimitInMB !== null) {
            $user->quota = $this->newQuota();
            $user->quota->limit = $quotaLimitInMB;
        }
        return $this->insertUser($user);
    }

    /**
     * Retrieve a user based on their username.
     *
     * @param string $username The username to search for.
     * @return Zend_Gdata_Gapps_UserEntry The username to search for, or null
     *              if no match found.
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @throws Zend_Gdata_App_HttpException
     */
    public function retrieveUser ($username) {
        $query = $this->newUserQuery($username);
        try {
            $user = $this->getUserEntry($query);
        } catch (Zend_Gdata_Gapps_ServiceException $e) {
            // Set the user to null if not found
            if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
                $user = null;
            } else {
                throw $e;
            }
        }
        return $user;
    }

    /**
     * Retrieve a page of users in alphabetical order, starting with the
     * provided username.
     *
     * @param string $startUsername (optional) The first username to retrieve.
     *          If null or not declared, the page will begin with the first
     *          user in the domain.
     * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry
     *              objects representing all users in the domain.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrievePageOfUsers ($startUsername = null) {
        $query = $this->newUserQuery();
        $query->setStartUsername($startUsername);
        return $this->getUserFeed($query);
    }

    /**
     * Retrieve all users in the current domain. Be aware that
     * calling this function on a domain with many users will take a
     * signifigant amount of time to complete. On larger domains this may
     * may cause execution to timeout without proper precautions in place.
     *
     * @return Zend_Gdata_Gapps_UserFeed Collection of Zend_Gdata_UserEntry
     *              objects representing all users in the domain.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveAllUsers () {
        return $this->retrieveAllEntriesForFeed($this->retrievePageOfUsers());
    }

    /**
     * Overwrite a specified username with the provided UserEntry.  The
     * UserEntry does not need to contain an edit link.
     *
     * This method is provided for compliance with the Google Apps
     * Provisioning API specification. Normally users will instead want to
     * call UserEntry::save() instead.
     *
     * @see Zend_Gdata_App_Entry::save
     * @param string $username The username whose data will be overwritten.
     * @param Zend_Gdata_Gapps_UserEntry $userEntry The user entry which
     *          will be overwritten.
     * @return Zend_Gdata_Gapps_UserEntry The UserEntry returned by the
     *          server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function updateUser($username, $userEntry) {
        return $this->updateEntry($userEntry, $this->getBaseUrl() .
            self::APPS_USER_PATH . '/' . $username);
    }

    /**
     * Mark a given user as suspended.
     *
     * @param string $username The username associated with the user who
     *          should be suspended.
     * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified
     *          user.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function suspendUser($username) {
        $user = $this->retrieveUser($username);
        $user->login->suspended = true;
        return $user->save();
    }

    /**
     * Mark a given user as not suspended.
     *
     * @param string $username The username associated with the user who
     *          should be restored.
     * @return Zend_Gdata_Gapps_UserEntry The UserEntry for the modified
     *          user.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function restoreUser($username) {
        $user = $this->retrieveUser($username);
        $user->login->suspended = false;
        return $user->save();
    }

    /**
     * Delete a user by username.
     *
     * @param string $username The username associated with the user who
     *          should be deleted.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function deleteUser($username) {
        $this->delete($this->getBaseUrl() . self::APPS_USER_PATH . '/' .
            $username);
    }

    /**
     * Create a nickname for a given user.
     *
     * @param string $username The username to which the new nickname should
     *          be associated.
     * @param string $nickname The new nickname to be created.
     * @return Zend_Gdata_Gapps_NicknameEntry The nickname entry which was
     *          created by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function createNickname($username, $nickname) {
        $entry = $this->newNicknameEntry();
        $nickname = $this->newNickname($nickname);
        $login = $this->newLogin($username);
        $entry->nickname = $nickname;
        $entry->login = $login;
        return $this->insertNickname($entry);
    }

    /**
     * Retrieve the entry for a specified nickname.
     *
     * @param string $nickname The nickname to be retrieved.
     * @return Zend_Gdata_Gapps_NicknameEntry The requested nickname entry.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveNickname($nickname) {
        $query = $this->newNicknameQuery();
        $query->setNickname($nickname);
        try {
            $nickname = $this->getNicknameEntry($query);
        } catch (Zend_Gdata_Gapps_ServiceException $e) {
            // Set the nickname to null if not found
            if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
                $nickname = null;
            } else {
                throw $e;
            }
        }
        return $nickname;
    }

    /**
     * Retrieve all nicknames associated with a specific username.
     *
     * @param string $username The username whose nicknames should be
     *          returned.
     * @return Zend_Gdata_Gapps_NicknameFeed A feed containing all nicknames
     *          for the given user, or null if
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveNicknames($username) {
        $query = $this->newNicknameQuery();
        $query->setUsername($username);
        $nicknameFeed = $this->retrieveAllEntriesForFeed(
            $this->getNicknameFeed($query));
        return $nicknameFeed;
    }

    /**
     * Retrieve a page of nicknames in alphabetical order, starting with the
     * provided nickname.
     *
     * @param string $startNickname (optional) The first nickname to
     *          retrieve. If null or not declared, the page will begin with
     *          the first nickname in the domain.
     * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry
     *              objects representing all nicknames in the domain.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrievePageOfNicknames ($startNickname = null) {
        $query = $this->newNicknameQuery();
        $query->setStartNickname($startNickname);
        return $this->getNicknameFeed($query);
    }

    /**
     * Retrieve all nicknames in the current domain. Be aware that
     * calling this function on a domain with many nicknames will take a
     * signifigant amount of time to complete. On larger domains this may
     * may cause execution to timeout without proper precautions in place.
     *
     * @return Zend_Gdata_Gapps_NicknameFeed Collection of Zend_Gdata_NicknameEntry
     *              objects representing all nicknames in the domain.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveAllNicknames () {
        return $this->retrieveAllEntriesForFeed($this->retrievePageOfNicknames());
    }

    /**
     * Delete a specified nickname.
     *
     * @param string $nickname The name of the nickname to be deleted.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function deleteNickname($nickname) {
        $this->delete($this->getBaseUrl() . self::APPS_NICKNAME_PATH . '/' . $nickname);
    }

    /**
     * Create a new email list.
     *
     * @param string $emailList The name of the email list to be created.
     * @return Zend_Gdata_Gapps_EmailListEntry The email list entry
     *          as created on the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function createEmailList($emailList) {
        $entry = $this->newEmailListEntry();
        $list = $this->newEmailList();
        $list->name = $emailList;
        $entry->emailList = $list;
        return $this->insertEmailList($entry);
    }

    /**
     * Retrieve all email lists associated with a recipient.
     *
     * @param string $username The recipient whose associated email lists
     *          should be returned.
     * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found as
     *          Zend_Gdata_EmailListEntry objects.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveEmailLists($recipient) {
        $query = $this->newEmailListQuery();
        $query->recipient = $recipient;
        return $this->getEmailListFeed($query);
    }

    /**
     * Retrieve a page of email lists in alphabetical order, starting with the
     * provided email list.
     *
     * @param string $startEmailListName (optional) The first list to
     *              retrieve. If null or not defined, the page will begin
     *              with the first email list in the domain.
     * @return Zend_Gdata_Gapps_EmailListFeed Collection of Zend_Gdata_EmailListEntry
     *              objects representing all nicknames in the domain.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrievePageOfEmailLists ($startNickname = null) {
        $query = $this->newEmailListQuery();
        $query->setStartEmailListName($startNickname);
        return $this->getEmailListFeed($query);
    }

    /**
     * Retrieve all email lists associated with the curent domain. Be aware that
     * calling this function on a domain with many email lists will take a
     * signifigant amount of time to complete. On larger domains this may
     * may cause execution to timeout without proper precautions in place.
     *
     * @return Zend_Gdata_Gapps_EmailListFeed The list of email lists found
     *              as Zend_Gdata_Gapps_EmailListEntry objects.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveAllEmailLists() {
        return $this->retrieveAllEntriesForFeed($this->retrievePageOfEmailLists());
    }

    /**
     * Delete a specified email list.
     *
     * @param string $emailList The name of the emailList to be deleted.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function deleteEmailList($emailList) {
        $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/'
            . $emailList);
    }

    /**
     * Add a specified recipient to an existing emailList.
     *
     * @param string $recipientAddress The address of the recipient to be
     *              added to the email list.
     * @param string $emailList The name of the email address to which the
     *              recipient should be added.
     * @return Zend_Gdata_Gapps_EmailListRecipientEntry The recipient entry
     *              created by the server.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function addRecipientToEmailList($recipientAddress, $emailList) {
        $entry = $this->newEmailListRecipientEntry();
        $who = $this->newWho();
        $who->email = $recipientAddress;
        $entry->who = $who;
        $address = $this->getBaseUrl() .  self::APPS_EMAIL_LIST_PATH . '/' .
            $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/';
        return $this->insertEmailListRecipient($entry, $address);
    }

    /**
     * Retrieve a page of email list recipients in alphabetical order,
     * starting with the provided email list recipient.
     *
     * @param string $emaiList The email list which should be searched.
     * @param string $startRecipient (optinal) The address of the first
     *              recipient, or null to start with the first recipient in
     *              the list.
     * @return Zend_Gdata_Gapps_EmailListRecipientFeed Collection of
     *              Zend_Gdata_EmailListRecipientEntry objects representing all
     *              recpients in the specified list.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrievePageOfRecipients ($emailList,
            $startRecipient = null) {
        $query = $this->newEmailListRecipientQuery();
        $query->setEmailListName($emailList);
        $query->setStartRecipient($startRecipient);
        return $this->getEmailListRecipientFeed($query);
    }

    /**
     * Retrieve all recipients associated with an email list. Be aware that
     * calling this function on a domain with many email lists will take a
     * signifigant amount of time to complete. On larger domains this may
     * may cause execution to timeout without proper precautions in place.
     *
     * @param string $emaiList The email list which should be searched.
     * @return Zend_Gdata_Gapps_EmailListRecipientFeed The list of email lists
     *              found as Zend_Gdata_Gapps_EmailListRecipientEntry objects.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function retrieveAllRecipients($emailList) {
        return $this->retrieveAllEntriesForFeed(
                $this->retrievePageOfRecipients($emailList));
    }

    /**
     * Remove a specified recipient from an email list.
     *
     * @param string $recipientAddress The recipient to be removed.
     * @param string $emailList The list from which the recipient should
     *              be removed.
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_Gapps_ServiceException
     */
    public function removeRecipientFromEmailList($recipientAddress, $emailList) {
        $this->delete($this->getBaseUrl() . self::APPS_EMAIL_LIST_PATH . '/'
            . $emailList . self::APPS_EMAIL_LIST_RECIPIENT_POSTFIX . '/'
            . $recipientAddress);
    }

}
PKpG[�c
k�#�#Gdata/AuthSub.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_HttpClient
 */
require_once 'Zend/Gdata/HttpClient.php';

/**
 * Zend_Version
 */
require_once 'Zend/Version.php';

/**
 * Wrapper around Zend_Http_Client to facilitate Google's "Account Authentication
 * Proxy for Web-Based Applications".
 *
 * @see http://code.google.com/apis/accounts/AuthForWebApps.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_AuthSub
{

    const AUTHSUB_REQUEST_URI      = 'https://www.google.com/accounts/AuthSubRequest';

    const AUTHSUB_SESSION_TOKEN_URI = 'https://www.google.com/accounts/AuthSubSessionToken';

    const AUTHSUB_REVOKE_TOKEN_URI  = 'https://www.google.com/accounts/AuthSubRevokeToken';

    const AUTHSUB_TOKEN_INFO_URI    = 'https://www.google.com/accounts/AuthSubTokenInfo';

     /**
      * Creates a URI to request a single-use AuthSub token.
      *
      * @param string $next (required) URL identifying the service to be 
      *                     accessed.
      *  The resulting token will enable access to the specified service only.
      *  Some services may limit scope further, such as read-only access.
      * @param string $scope (required) URL identifying the service to be 
      *                      accessed.  The resulting token will enable 
      *                      access to the specified service only.
      *                      Some services may limit scope further, such 
      *                      as read-only access.
      * @param int $secure (optional) Boolean flag indicating whether the 
      *                    authentication transaction should issue a secure 
      *                    token (1) or a non-secure token (0). Secure tokens
      *                    are available to registered applications only.
      * @param int $session (optional) Boolean flag indicating whether 
      *                     the one-time-use  token may be exchanged for 
      *                     a session token (1) or not (0).
      * @param string $request_uri (optional) URI to which to direct the 
      *                            authentication request.
      */
     public static function getAuthSubTokenUri($next, $scope, $secure=0, $session=0, 
                                               $request_uri = self::AUTHSUB_REQUEST_URI)
     {
         $querystring = '?next=' . urlencode($next)
             . '&scope=' . urldecode($scope)
             . '&secure=' . urlencode($secure)
             . '&session=' . urlencode($session);
         return $request_uri . $querystring;
     }


    /**
     * Upgrades a single use token to a session token
     *
     * @param string $token The single use token which is to be upgraded
     * @param Zend_Http_Client $client (optional) HTTP client to use to 
     *                                 make the request
     * @param string $request_uri (optional) URI to which to direct 
     *                            the session token upgrade
     * @return string The upgraded token value
     * @throws Zend_Gdata_App_AuthException
     * @throws Zend_Gdata_App_HttpException
     */
    public static function getAuthSubSessionToken(
            $token, $client = null, 
            $request_uri = self::AUTHSUB_SESSION_TOKEN_URI)
    {
        $client = self::getHttpClient($token, $client);
   
        if ($client instanceof Zend_Gdata_HttpClient) { 
            $filterResult = $client->filterHttpRequest('GET', $request_uri);
            $url = $filterResult['url'];
            $headers = $filterResult['headers'];
            $client->setHeaders($headers);
            $client->setUri($url);
        } else {
            $client->setUri($request_uri);
        }

        try {
            $response = $client->request('GET');
        } catch (Zend_Http_Client_Exception $e) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
        }

        // Parse Google's response
        if ($response->isSuccessful()) {
            $goog_resp = array();
            foreach (explode("\n", $response->getBody()) as $l) {
                $l = chop($l);
                if ($l) {
                    list($key, $val) = explode('=', chop($l), 2);
                    $goog_resp[$key] = $val;
                }
            }
            return $goog_resp['Token'];
        } else {
            require_once 'Zend/Gdata/App/AuthException.php';
            throw new Zend_Gdata_App_AuthException(
                    'Token upgrade failed. Reason: ' . $response->getBody());
        }
    }

    /**
     * Revoke a token
     *
     * @param string $token The token to revoke
     * @param Zend_Http_Client $client (optional) HTTP client to use to make the request
     * @param string $request_uri (optional) URI to which to direct the revokation request
     * @return boolean Whether the revokation was successful
     * @throws Zend_Gdata_App_HttpException
     */
    public static function AuthSubRevokeToken($token, $client = null,
                                              $request_uri = self::AUTHSUB_REVOKE_TOKEN_URI)
    {
        $client = self::getHttpClient($token, $client);
 
        if ($client instanceof Zend_Gdata_HttpClient) {
            $filterResult = $client->filterHttpRequest('GET', $request_uri);
            $url = $filterResult['url'];
            $headers = $filterResult['headers'];
            $client->setHeaders($headers);
            $client->setUri($url);
            $client->resetParameters();
        } else {
            $client->setUri($request_uri);
        }

        ob_start();
        try {
            $response = $client->request('GET');
        } catch (Zend_Http_Client_Exception $e) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
        }
        ob_end_clean();
        // Parse Google's response
        if ($response->isSuccessful()) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * get token information
     *
     * @param string $token The token to retrieve information about
     * @param Zend_Http_Client $client (optional) HTTP client to use to 
     *                                 make the request
     * @param string $request_uri (optional) URI to which to direct 
     *                            the information request
     */
    public static function getAuthSubTokenInfo(
            $token, $client = null, $request_uri = self::AUTHSUB_TOKEN_INFO_URI)
    {
        $client = self::getHttpClient($token, $client);

        if ($client instanceof Zend_Gdata_HttpClient) {
            $filterResult = $client->filterHttpRequest('GET', $request_uri);
            $url = $filterResult['url'];
            $headers = $filterResult['headers'];
            $client->setHeaders($headers);
            $client->setUri($url);
        } else {
            $client->setUri($request_uri);
        }

        ob_start();
        try {
            $response = $client->request('GET');
        } catch (Zend_Http_Client_Exception $e) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
        }
        ob_end_clean();
        return $response->getBody();
    }

    /**
     * Retrieve a HTTP client object with AuthSub credentials attached
     * as the Authorization header
     *
     * @param string $token The token to retrieve information about
     * @param Zend_Gdata_HttpClient $client (optional) HTTP client to use to make the request
     */
    public static function getHttpClient($token, $client = null)
    {
        if ($client == null) {
            $client = new Zend_Gdata_HttpClient();
        }
        if (!$client instanceof Zend_Http_Client) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException('Client is not an instance of Zend_Http_Client.');
        }
        $useragent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
        $client->setConfig(array(
                'strictredirects' => true,
                'useragent' => $useragent
            )
        );
        $client->setAuthSubToken($token);
        return $client;
    }

}
PKpG[�w\X`!`!Gdata/HttpClient.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * Gdata Http Client object.
 *
 * Class to extend the generic Zend Http Client with the ability to perform
 * secure AuthSub requests
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_HttpClient extends Zend_Http_Client
{

    /**
     * OpenSSL private key resource id
     * This key is used for AuthSub authentication.  If this value is set,
     * it is assuemd that secure AuthSub is desired.
     *
     * @var resource 
     */
    private $_authSubPrivateKeyId = null;

    /**
     * Token for AuthSub authentication.  
     * If this token is set, AuthSub authentication is used.
     *
     * @var string
     */
    private $_authSubToken = null;

    /**
     * Token for ClientLogin authentication.  
     * If only this token is set, ClientLogin authentication is used.
     *
     * @var string
     */
    private $_clientLoginToken = null;

    /**
     * Token for ClientLogin authentication.
     * If this token is set, and the AuthSub key is not set,
     * ClientLogin authentication is used
     *
     * @var string
     */
    private $_clientLoginKey = null;

    /**
     * Sets the PEM formatted private key, as read from a file.
     *
     * This method reads the file and then calls setAuthSubPrivateKey()
     * with the file contents.
     *
     * @param string $file The location of the file containing the PEM key
     * @param string $passphrase The optional private key passphrase
     * @param bool $useIncludePath Whether to search the include_path 
     *                             for the file
     * @return void
     */
    public function setAuthSubPrivateKeyFile($file, $passphrase = null, 
                                             $useIncludePath = false) {
        $fp = fopen($file, "r", $useIncludePath);
        $key = '';
        while (!feof($fp)) {
            $key .= fread($fp, 8192);
        }
        $this->setAuthSubPrivateKey($key, $passphrase);
        fclose($fp);
    }

    /**
     * Sets the PEM formatted private key to be used for secure AuthSub auth.
     *
     * In order to call this method, openssl must be enabled in your PHP
     * installation.  Otherwise, a Zend_Gdata_App_InvalidArgumentException
     * will be thrown.
     *
     * @param string $key The private key
     * @param string $passphrase The optional private key passphrase
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_HttpClient Provides a fluent interface
     */
    public function setAuthSubPrivateKey($key, $passphrase = null) {
        if ($key != null && !function_exists('openssl_pkey_get_private')) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'You cannot enable secure AuthSub if the openssl module ' .
                    'is not enabled in your PHP installation.');
        }
        $this->_authSubPrivateKeyId = openssl_pkey_get_private(
                $key, $passphrase);
        return $this;
    }

    /**
     * Gets the openssl private key id
     *
     * @return string The private key
     */
    public function getAuthSubPrivateKeyId() {
        return $this->_authSubPrivateKeyId;
    }
    
    /**
     * Gets the AuthSub token used for authentication
     *
     * @return string The token
     */
    public function getAuthSubToken() {
        return $this->_authSubToken;
    }

    /**
     * Sets the AuthSub token used for authentication
     *
     * @param string $token The token 
     * @return Zend_Gdata_HttpClient Provides a fluent interface
     */
    public function setAuthSubToken($token) {
        $this->_authSubToken = $token;
        return $this;
    }

    /**
     * Gets the ClientLogin token used for authentication
     *
     * @return string The token 
     */
    public function getClientLoginToken() {
        return $this->_clientLoginToken;
    }

    /**
     * Sets the ClientLogin token used for authentication
     *
     * @param string $token The token 
     * @return Zend_Gdata_HttpClient Provides a fluent interface
     */
    public function setClientLoginToken($token) {
        $this->_clientLoginToken = $token;
        return $this;
    }

    /**
     * Filters the HTTP requests being sent to add the Authorization header.
     *
     * If both AuthSub and ClientLogin tokens are set,
     * AuthSub takes precedence.  If an AuthSub key is set, then
     * secure AuthSub authentication is used, and the request is signed.
     * Requests must be signed only with the private key corresponding to the
     * public key registered with Google.  If an AuthSub key is set, but
     * openssl support is not enabled in the PHP installation, an exception is
     * thrown.
     *
     * @param string $method The HTTP method
     * @param string $url The URL
     * @param array $headers An associate array of headers to be 
     *                       sent with the request or null
     * @param string $body The body of the request or null
     * @param string $contentType The MIME content type of the body or null
     * @throws Zend_Gdata_App_Exception if there was a signing failure
     * @return array The processed values in an associative array, 
     *               using the same names as the params
     */
    public function filterHttpRequest($method, $url, $headers = array(), $body = null, $contentType = null) {
        if ($this->getAuthSubToken() != null) {
            // AuthSub authentication
            if ($this->getAuthSubPrivateKeyId() != null) {
                // secure AuthSub
                $time = time();
                $nonce = mt_rand(0, 999999999);
                $dataToSign = $method . ' ' . $url . ' ' . $time . ' ' . $nonce;

                // compute signature
                $pKeyId = $this->getAuthSubPrivateKeyId();
                $signSuccess = openssl_sign($dataToSign, $signature, $pKeyId, 
                                            OPENSSL_ALGO_SHA1);
                if (!$signSuccess) {
                    require_once 'Zend/Gdata/App/Exception.php';
                    throw new Zend_Gdata_App_Exception(
                            'openssl_signing failure - returned false');
                }
                // encode signature
                $encodedSignature = base64_encode($signature);

                // final header
                $headers['authorization'] = 'AuthSub token="' . $this->getAuthSubToken() . '" ' .
                                            'data="' . $dataToSign . '" ' .
                                            'sig="' . $encodedSignature . '" ' .
                                            'sigalg="rsa-sha1"';
            } else {
                // AuthSub without secure tokens
                $headers['authorization'] = 'AuthSub token="' . $this->getAuthSubToken() . '"';
            }
        } elseif ($this->getClientLoginToken() != null) {
            $headers['authorization'] = 'GoogleLogin auth=' . $this->getClientLoginToken();
        }
        return array('method' => $method, 'url' => $url, 'body' => $body, 'headers' => $headers, 'contentType' => $contentType);
    }

    /**
     * Method for filtering the HTTP response, though no filtering is
     * currently done.
     *
     * @param Zend_Http_Response $response The response object to filter
     * @return Zend_Http_Response The filterd response object
     */
    public function filterHttpResponse($response) {
        return $response;
    }

}
PKpG[�H�Q��Gdata/Gbase.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Gbase_ItemFeed
 */
require_once 'Zend/Gdata/Gbase/ItemFeed.php';

/**
 * @see Zend_Gdata_Gbase_ItemEntry
 */
require_once 'Zend/Gdata/Gbase/ItemEntry.php';

/**
 * @see Zend_Gdata_Gbase_SnippetEntry
 */
require_once 'Zend/Gdata/Gbase/SnippetEntry.php';

/**
 * @see Zend_Gdata_Gbase_SnippetFeed
 */
require_once 'Zend/Gdata/Gbase/SnippetFeed.php';

/**
 * Service class for interacting with the Google Base data API
 *
 * @link http://code.google.com/apis/base
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase extends Zend_Gdata
{

    /**
     * Path to the customer items feeds on the Google Base server.
     */
    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';

    /**
     * Path to the snippets feeds on the Google Base server.
     */
    const GBASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';

    /**
     * Authentication service name for Google Base
     */
    const AUTH_SERVICE_NAME = 'gbase';

    /**
     * The default URI for POST methods
     *
     * @var string
     */
    protected $_defaultPostUri = self::GBASE_ITEM_FEED_URI;

    /**
     * Namespaces used for Zend_Gdata_Gbase
     *
     * @var array
     */
    public static $namespaces = array(
        array('g', 'http://base.google.com/ns/1.0', 1, 0),
        array('batch', 'http://schemas.google.com/gdata/batch', 1, 0)
    );

    /**
     * Create Zend_Gdata_Gbase object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google Apps servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Gbase');
        $this->registerPackage('Zend_Gdata_Gbase_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
    }

    /**
     * Retreive feed object
     *
     * @param mixed $location The location for the feed, as a URL or Query
     * @return Zend_Gdata_Gbase_ItemFeed
     */
    public function getGbaseItemFeed($location = null)
    {
        if ($location === null) {
            $uri = self::GBASE_ITEM_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gbase_ItemFeed');
    }

    /**
     * Retreive entry object
     *
     * @param mixed $location The location for the feed, as a URL or Query
     * @return Zend_Gdata_Gbase_ItemEntry
     */
    public function getGbaseItemEntry($location = null)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Gbase_ItemEntry');
    }

    /**
     * Insert an entry
     *
     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to upload
     * @param boolean $dryRun Flag for the 'dry-run' parameter
     * @return Zend_Gdata_Gbase_ItemFeed
     */
    public function insertGbaseItem($entry, $dryRun = false)
    {
        if ($dryRun == false) {
            $uri = $this->_defaultPostUri;
        } else {
            $uri = $this->_defaultPostUri . '?dry-run=true';
        }
        $newitem = $this->insertEntry($entry, $uri, 'Zend_Gdata_Gbase_ItemEntry');
        return $newitem;
    }

    /**
     * Update an entry
     *
     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to be updated
     * @param boolean $dryRun Flag for the 'dry-run' parameter
     * @return Zend_Gdata_Gbase_ItemEntry
     */
    public function updateGbaseItem($entry, $dryRun = false)
    {
        $returnedEntry = $entry->save($dryRun);
        return $returnedEntry;
    }

    /**
     * Delete an entry
     *
     * @param Zend_Gdata_Gbase_ItemEntry $entry The Base entry to remove
     * @param boolean $dryRun Flag for the 'dry-run' parameter
     * @return Zend_Gdata_Gbase_ItemFeed
     */
    public function deleteGbaseItem($entry, $dryRun = false)
    {
        $entry->delete($dryRun);
        return $this;
    }

    /**
     * Retrieve feed object
     *
     * @param mixed $location The location for the feed, as a URL or Query
     * @return Zend_Gdata_Gbase_SnippetFeed
     */
    public function getGbaseSnippetFeed($location = null)
    {
        if ($location === null) {
            $uri = self::GBASE_SNIPPET_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Gbase_SnippetFeed');
    }
}
PKpG[�7�i�	�	Gdata/Geo/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Geo
 */
require_once 'Zend/Gdata/Geo.php';

/**
 * @see Zend_Gdata_Geo_Extension_GeoRssWhere
 */
require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';

/**
 * An Atom entry containing Geograpic data.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo_Entry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Geo_Entry';

    protected $_where = null;

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_where != null) {
            $element->appendChild($this->_where->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('georss') . ':' . 'where':
            $where = new Zend_Gdata_Geo_Extension_GeoRssWhere();
            $where->transferFromDOM($child);
            $this->_where = $where;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function getWhere()
    {
        return $this->_where;
    }

    public function setWhere($value)
    {
        $this->_where = $value;
        return $this;
    }


}
PKpG[�uE�   Gdata/Geo/Extension/GmlPoint.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Geo
 */
require_once 'Zend/Gdata/Geo.php';

/**
 * @see Zend_Gdata_Geo_Extension_GmlPos
 */
require_once 'Zend/Gdata/Geo/Extension/GmlPos.php';


/**
 * Represents the gml:point element used by the Gdata Geo extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo_Extension_GmlPoint extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gml';
    protected $_rootElement = 'Point';

    /**
     * The position represented by this GmlPoint
     *
     * @var Zend_Gdata_Geo_Extension_GmlPos
     */
    protected $_pos = null;

    /**
     * Create a new instance.
     *
     * @param Zend_Gdata_Geo_Extension_GmlPos $pos (optional) Pos to which this
     *          object should be initialized.
     */
    public function __construct($pos = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
        parent::__construct();
        $this->setPos($pos);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_pos !== null) {
            $element->appendChild($this->_pos->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gml') . ':' . 'pos';
                $pos = new Zend_Gdata_Geo_Extension_GmlPos();
                $pos->transferFromDOM($child);
                $this->_pos = $pos;
                break;
        }
    }

    /**
     * Get the value for this element's pos attribute.
     *
     * @see setPos
     * @return Zend_Gdata_Geo_Extension_GmlPos The requested attribute.
     */
    public function getPos()
    {
        return $this->_pos;
    }

    /**
     * Set the value for this element's distance attribute.
     *
     * @param Zend_Gdata_Geo_Extension_GmlPos $value The desired value for this attribute
     * @return Zend_Gdata_Geo_Extension_GmlPoint Provides a fluent interface
     */
    public function setPos($value)
    {
        $this->_pos = $value;
        return $this;
    }


}
PKpG[�}VV#Gdata/Geo/Extension/GeoRssWhere.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Geo
 */
require_once 'Zend/Gdata/Geo.php';

/**
 * @see Zend_Gdata_Geo_Extension_GmlPoint
 */
require_once 'Zend/Gdata/Geo/Extension/GmlPoint.php';


/**
 * Represents the georss:where element used by the Gdata Geo extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo_Extension_GeoRssWhere extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'georss';
    protected $_rootElement = 'where';

    /**
     * The point location for this geo element
     *
     * @var Zend_Gdata_Geo_Extension_GmlPoint
     */
    protected $_point = null;

    /**
     * Create a new instance.
     *
     * @param Zend_Gdata_Geo_Extension_GmlPoint $point (optional) Point to which
     *          object should be initialized.
     */
    public function __construct($point = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
        parent::__construct();
        $this->setPoint($point);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_point !== null) {
            $element->appendChild($this->_point->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gml') . ':' . 'Point';
                $point = new Zend_Gdata_Geo_Extension_GmlPoint();
                $point->transferFromDOM($child);
                $this->_point = $point;
                break;
        }
    }

    /**
     * Get the value for this element's point attribute.
     *
     * @see setPoint
     * @return Zend_Gdata_Geo_Extension_GmlPoint The requested attribute.
     */
    public function getPoint()
    {
        return $this->_point;
    }

    /**
     * Set the value for this element's point attribute.
     *
     * @param Zend_Gdata_Geo_Extension_GmlPoint $value The desired value for this attribute.
     * @return Zend_Gdata_Geo_Extension_GeoRssWhere Provides a fluent interface
     */
    public function setPoint($value)
    {
        $this->_point = $value;
        return $this;
    }

}
PKpG[iT0�ssGdata/Geo/Extension/GmlPos.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Geo
 */
require_once 'Zend/Gdata/Geo.php';

/**
 * Represents the gml:pos element used by the Gdata Geo extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo_Extension_GmlPos extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gml';
    protected $_rootElement = 'pos';

    /**
     * Constructs a new Zend_Gdata_Geo_Extension_GmlPos object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[#$e##Gdata/Geo/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_eed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Geo
 */
require_once 'Zend/Gdata/Geo.php';

/**
 * @see Zend_Gdata_Geo_Entry
 */
require_once 'Zend/Gdata/Geo/Entry.php';

/**
 * Feed for Gdata Geographic data entries.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo_Feed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Geo_Entry';

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Geo::$namespaces);
        parent::__construct($element);
    }

}
PKpG[�8���
�
Gdata/Extension/Visibility.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent an entry's visibility
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Visibility extends Zend_Gdata_Extension
{

    protected $_rootElement = 'visibility';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_Visibility object.
     * @param bool $value (optional) Visibility value as URI.
     */
    public function __construct($value = null)
    {
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return bool The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Visibility The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[8���Gdata/Extension/Where.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension_EntryLink
 */
require_once 'Zend/Gdata/Extension/EntryLink.php';

/**
 * Data model class to represent a location (gd:where element)
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Where extends Zend_Gdata_Extension
{

    protected $_rootElement = 'where';
    protected $_label = null;
    protected $_rel = null;
    protected $_valueString = null;
    protected $_entryLink = null;

    public function __construct($valueString = null, $label = null, $rel = null, $entryLink = null)
    {
        parent::__construct();
        $this->_valueString = $valueString;
        $this->_label = $label;
        $this->_rel = $rel;
        $this->_entryLink = $entryLink;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_label !== null) {
            $element->setAttribute('label', $this->_label);
        }
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_valueString !== null) {
            $element->setAttribute('valueString', $this->_valueString);
        }
        if ($this->entryLink !== null) {
            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'label':
            $this->_label = $attribute->nodeValue;
            break;
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        case 'valueString':
            $this->_valueString = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gd') . ':' . 'entryLink':
            $entryLink = new Zend_Gdata_Extension_EntryLink();
            $entryLink->transferFromDOM($child);
            $this->_entryLink = $entryLink;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function __toString()
    {
        if ($this->_valueString != null) {
            return $this->_valueString;
        }
        else {
            return parent::__toString();
        }
    }

    public function getLabel()
    {
        return $this->_label;
    }

    public function setLabel($value)
    {
        $this->_label = $value;
        return $this;
    }

    public function getRel()
    {
        return $this->_rel;
    }

    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    public function getValueString()
    {
        return $this->_valueString;
    }

    public function setValueString($value)
    {
        $this->_valueString = $value;
        return $this;
    }

    public function getEntryLink()
    {
        return $this->_entryLink;
    }

    public function setEntryLink($value)
    {
        $this->_entryLink = $value;
        return $this;
    }

}
PKpG[0Hi_Gdata/Extension/Comments.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * Represents the gd:comments element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Comments extends Zend_Gdata_Extension
{

    protected $_rootElement = 'comments';
    protected $_rel = null;
    protected $_feedLink = null;

    public function __construct($rel = null, $feedLink = null)
    {
        parent::__construct();
        $this->_rel = $rel;
        $this->_feedLink = $feedLink;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_feedLink !== null) {
            $element->appendChild($this->_feedLink->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gd') . ':' . 'feedLink';
                $feedLink = new Zend_Gdata_Extension_FeedLink();
                $feedLink->transferFromDOM($child);
                $this->_feedLink = $feedLink;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    public function getRel()
    {
        return $this->_rel;
    }

    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    public function getFeedLink()
    {
        return $this->_feedLink;
    }

    public function setFeedLink($value)
    {
        $this->_feedLink = $value;
        return $this;
    }

}
PKpG[fb˕�
�
 Gdata/Extension/AttendeeType.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent an attendee's type (gd:attendeeType)
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_AttendeeType extends Zend_Gdata_Extension
{

    protected $_rootElement = 'attendeeType';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_AttendeeType object.
     * @param string $value (optional) This entry's 'value' attribute.
     */
    public function __construct($value = null)
    {
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return string The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Visibility The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[��b%�
�
$Gdata/Extension/ExtendedProperty.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model for gd:extendedProperty element, used by some Gdata
 * services to implement arbitrary name/value pair storage
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_ExtendedProperty extends Zend_Gdata_Extension
{

    protected $_rootElement = 'extendedProperty';
    protected $_name = null;
    protected $_value = null;

    public function __construct($name = null, $value = null)
    {
        parent::__construct();
        $this->_name = $name;
        $this->_value = $value;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_name !== null) {
            $element->setAttribute('name', $this->_name);
        }
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'name':
            $this->_name = $attribute->nodeValue;
            break;
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    public function __toString()
    {
        return $this->getName() . '=' . $this->getValue();
    }

    public function getName()
    {
        return $this->_name;
    }

    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    public function getValue()
    {
        return $this->_value;
    }

    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

}
PKpG[|	�ñ�Gdata/Extension/Rating.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Implements the gd:rating element
 *
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Rating extends Zend_Gdata_Extension
{

    protected $_rootElement = 'rating';
    protected $_min = null;
    protected $_max = null;
    protected $_numRaters = null;
    protected $_average = null;
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_Rating object.
     *
     * @param integer $average (optional) Average rating.
     * @param integer $min (optional) Minimum rating.
     * @param integer $max (optional) Maximum rating.
     * @param integer $numRaters (optional) Number of raters.
     * @param integer $value (optional) The value of the rating.
     */
    public function __construct($average = null, $min = null,
            $max = null, $numRaters = null, $value = null)
    {
        parent::__construct();
        $this->_average = $average;
        $this->_min = $min;
        $this->_max = $max;
        $this->_numRaters = $numRaters;
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_min !== null) {
            $element->setAttribute('min', $this->_min);
        }
        if ($this->_max !== null) {
            $element->setAttribute('max', $this->_max);
        }
        if ($this->_numRaters !== null) {
            $element->setAttribute('numRaters', $this->_numRaters);
        }
        if ($this->_average !== null) {
            $element->setAttribute('average', $this->_average);
        }
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }

        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
            case 'min':
                $this->_min = $attribute->nodeValue;
                break;
            case 'max':
                $this->_max = $attribute->nodeValue;
                break;
            case 'numRaters':
                $this->_numRaters = $attribute->nodeValue;
                break;
            case 'average':
                $this->_average = $attribute->nodeValue;
                break;
            case 'value':
                $this->_value = $atttribute->nodeValue;
            default:
                parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's min attribute.
     *
     * @return integer The requested attribute.
     */
    public function getMin()
    {
        return $this->_min;
    }

    /**
     * Set the value for this element's min attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Rating The element being modified.
     */
    public function setMin($value)
    {
        $this->_min = $value;
        return $this;
    }

    /**
     * Get the value for this element's numRaters attribute.
     *
     * @return integer The requested attribute.
     */
    public function getNumRaters()
    {
        return $this->_numRaters;
    }

    /**
     * Set the value for this element's numRaters attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Rating The element being modified.
     */
    public function setNumRaters($value)
    {
        $this->_numRaters = $value;
        return $this;
    }

    /**
     * Get the value for this element's average attribute.
     *
     * @return integer The requested attribute.
     */
    public function getAverage()
    {
        return $this->_average;
    }

    /**
     * Set the value for this element's average attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Rating The element being modified.
     */
    public function setAverage($value)
    {
        $this->_average = $value;
        return $this;
    }

    /**
     * Get the value for this element's max attribute.
     *
     * @return integer The requested attribute.
     */
    public function getMax()
    {
        return $this->_max;
    }

    /**
     * Set the value for this element's max attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Rating The element being modified.
     */
    public function setMax($value)
    {
        $this->_max = $value;
        return $this;
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return integer The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Rating The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

}
PKpG[<C��
�
"Gdata/Extension/AttendeeStatus.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent an attendee's status (gd:attendeeStatus)
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_AttendeeStatus extends Zend_Gdata_Extension
{

    protected $_rootElement = 'attendeeStatus';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_AttendeeStatus object.
     * @param string $value (optional) Visibility value as URI.
     */
    public function __construct($value = null)
    {
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return string The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Visibility The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[�7)5�#�#Gdata/Extension/Who.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension_AttendeeStatus
 */
require_once 'Zend/Gdata/Extension/AttendeeStatus.php';

/**
 * @see Zend_Gdata_Extension_AttendeeType
 */
require_once 'Zend/Gdata/Extension/AttendeeType.php';

/**
 * @see Zend_Gdata_Extension_EntryLink
 */
require_once 'Zend/Gdata/Extension/EntryLink.php';

/**
 * Data model class to represent a participant
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Who extends Zend_Gdata_Extension
{

    protected $_rootElement = 'who';
    protected $_email = null;
    protected $_rel = null;
    protected $_valueString = null;
    protected $_attendeeStatus = null;
    protected $_attendeeType = null;
    protected $_entryLink = null;

    /**
     * Constructs a new Zend_Gdata_Extension_Who object.
     * @param string $email (optional) Email address.
     * @param string $rel (optional) Relationship description.
     * @param string $valueString (optional) Simple string describing this person.
     * @param Zend_Gdata_Extension_AttendeeStatus $attendeeStatus (optional) The status of the attendee.
     * @param Zend_Gdata_Extension_AttendeeType $attendeeType (optional) The type of the attendee.
     * @param string $entryLink URL pointing to an associated entry (Contact kind) describing this person.
     */
    public function __construct($email = null, $rel = null, $valueString = null,
        $attendeeStatus = null, $attendeeType = null, $entryLink = null)
    {
        parent::__construct();
        $this->_email = $email;
        $this->_rel = $rel;
        $this->_valueString = $valueString;
        $this->_attendeeStatus = $attendeeStatus;
        $this->_attendeeType = $attendeeType;
        $this->_entryLink = $entryLink;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_email !== null) {
            $element->setAttribute('email', $this->_email);
        }
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_valueString !== null) {
            $element->setAttribute('valueString', $this->_valueString);
        }
        if ($this->_attendeeStatus !== null) {
            $element->appendChild($this->_attendeeStatus->getDOM($element->ownerDocument));
        }
        if ($this->_attendeeType !== null) {
            $element->appendChild($this->_attendeeType->getDOM($element->ownerDocument));
        }
        if ($this->_entryLink !== null) {
            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'email':
            $this->_email = $attribute->nodeValue;
            break;
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        case 'valueString':
            $this->_valueString = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gd') . ':' . 'attendeeStatus':
            $attendeeStatus = new Zend_Gdata_Extension_AttendeeStatus();
            $attendeeStatus->transferFromDOM($child);
            $this->_attendeeStatus = $attendeeStatus;
            break;
        case $this->lookupNamespace('gd') . ':' . 'attendeeType':
            $attendeeType = new Zend_Gdata_Extension_AttendeeType();
            $attendeeType->transferFromDOM($child);
            $this->_attendeeType = $attendeeType;
            break;
        case $this->lookupNamespace('gd') . ':' . 'entryLink':
            $entryLink = new Zend_Gdata_Extension_EntryLink();
            $entryLink->transferFromDOM($child);
            $this->_entryLink = $entryLink;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Retrieves a human readable string describing this attribute's value.
     *
     * @return string The attribute value.
     */
    public function __toString()
    {
        if ($this->_valueString != null) {
            return $this->_valueString;
        }
        else {
            return parent::__toString();
        }
    }

    /**
     * Get the value for this element's ValueString attribute.
     *
     * @return string The requested attribute.
     */
    public function getValueString()
    {
        return $this->_valueString;
    }

    /**
     * Set the value for this element's ValueString attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setValueString($value)
    {
        $this->_valueString = $value;
        return $this;
    }

    /**
     * Get the value for this element's Email attribute.
     *
     * @return string The requested attribute.
     */
    public function getEmail()
    {
        return $this->_email;
    }

    /**
     * Set the value for this element's Email attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setEmail($value)
    {
        $this->_email = $value;
        return $this;
    }

    /**
     * Get the value for this element's Rel attribute.
     *
     * @return string The requested attribute.
     */
    public function getRel()
    {
        return $this->_rel;
    }

    /**
     * Set the value for this element's Rel attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    /**
     * Get this entry's AttendeeStatus element.
     *
     * @return Zend_Gdata_Extension_AttendeeStatus The requested entry.
     */
    public function getAttendeeStatus()
    {
        return $this->_attendeeStatus;
    }

    /**
     * Set the child's AttendeeStatus element.
     *
     * @param Zend_Gdata_Extension_AttendeeStatus $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setAttendeeStatus($value)
    {
        $this->_attendeeStatus = $value;
        return $this;
    }

    /**
     * Get this entry's AttendeeType element.
     *
     * @return Zend_Gdata_Extension_AttendeeType The requested entry.
     */
    public function getAttendeeType()
    {
        return $this->_attendeeType;
    }

    /**
     * Set the child's AttendeeType element.
     *
     * @param Zend_Gdata_Extension_AttendeeType $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Who The element being modified.
     */
    public function setAttendeeType($value)
    {
        $this->_attendeeType = $value;
        return $this;
    }

}
PKpG[��ZZ*Gdata/Extension/OpenSearchItemsPerPage.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the openSearch:itemsPerPage element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_OpenSearchItemsPerPage extends Zend_Gdata_Extension
{

    protected $_rootElement = 'itemsPerPage';
    protected $_rootNamespace = 'openSearch';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���OGdata/Extension/FeedLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Represents the gd:feedLink element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_FeedLink extends Zend_Gdata_Extension
{

    protected $_rootElement = 'feedLink';
    protected $_countHint = null;
    protected $_href = null;
    protected $_readOnly = null;
    protected $_rel = null;
    protected $_feed = null;

    public function __construct($href = null, $rel = null,
            $countHint = null, $readOnly = null, $feed = null)
    {
        parent::__construct();
        $this->_countHint = $countHint;
        $this->_href = $href;
        $this->_readOnly = $readOnly;
        $this->_rel = $rel;
        $this->_feed = $feed;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_countHint !== null) {
            $element->setAttribute('countHint', $this->_countHint);
        }
        if ($this->_href !== null) {
            $element->setAttribute('href', $this->_href);
        }
        if ($this->_readOnly !== null) {
            $element->setAttribute('readOnly', ($this->_readOnly ? "true" : "false"));
        }
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_feed !== null) {
            $element->appendChild($this->_feed->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('atom') . ':' . 'feed';
                $feed = new Zend_Gdata_Feed();
                $feed->transferFromDOM($child);
                $this->_feed = $feed;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'countHint':
            $this->_countHint = $attribute->nodeValue;
            break;
        case 'href':
            $this->_href = $attribute->nodeValue;
            break;
        case 'readOnly':
            if ($attribute->nodeValue == "true") {
                $this->_readOnly = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_readOnly = false;
            }
            else {
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getHref()
    {
        return $this->_href;
    }

    public function setHref($value)
    {
        $this->_href = $value;
        return $this;
    }

    public function getReadOnly()
    {
        return $this->_readOnly;
    }

    public function setReadOnly($value)
    {
        $this->_readOnly = $value;
        return $this;
    }

    public function getRel()
    {
        return $this->_rel;
    }

    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    public function getFeed()
    {
        return $this->_feed;
    }

    public function setFeed($value)
    {
        $this->_feed = $value;
        return $this;
    }

}
PKpG[k�w33'Gdata/Extension/RecurrenceException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension_EntryLink
 */
require_once 'Zend/Gdata/Extension/EntryLink.php';

/**
 * @see Zend_Gdata_Extension_OriginalEvent
 */
require_once 'Zend/Gdata/Extension/OriginalEvent.php';

/**
 * Data model class to represent an entry's recurrenceException
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_RecurrenceException extends Zend_Gdata_Extension
{

    protected $_rootElement = 'recurrenceException';
    protected $_specialized = null;
    protected $_entryLink = null;
    protected $_originalEvent = null;

    /**
     * Constructs a new Zend_Gdata_Extension_RecurrenceException object.
     * @param bool $specialized (optional) Whether this is a specialized exception or not.
     * @param Zend_Gdata_EntryLink (optional) An Event entry with details about the exception.
     * @param Zend_Gdata_OriginalEvent (optional) The origianl recurrent event this is an exeption to.
     */
    public function __construct($specialized = null, $entryLink = null,
            $originalEvent = null)
    {
        parent::__construct();
        $this->_specialized = $specialized;
        $this->_entryLink = $entryLink;
        $this->_originalEvent = $originalEvent;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_specialized !== null) {
            $element->setAttribute('specialized', ($this->_specialized ? "true" : "false"));
        }
        if ($this->_entryLink !== null) {
            $element->appendChild($this->_entryLink->getDOM($element->ownerDocument));
        }
        if ($this->_originalEvent !== null) {
            $element->appendChild($this->_originalEvent->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'specialized':
            if ($attribute->nodeValue == "true") {
                $this->_specialized = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_specialized = false;
            }
            else {
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gd') . ':' . 'entryLink':
            $entryLink = new Zend_Gdata_Extension_EntryLink();
            $entryLink->transferFromDOM($child);
            $this->_entryLink = $entryLink;
            break;
        case $this->lookupNamespace('gd') . ':' . 'originalEvent':
            $originalEvent = new Zend_Gdata_Extension_OriginalEvent();
            $originalEvent->transferFromDOM($child);
            $this->_originalEvent = $originalEvent;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Get the value for this element's Specialized attribute.
     *
     * @return bool The requested attribute.
     */
    public function getSpecialized()
    {
        return $this->_specialized;
    }

    /**
     * Set the value for this element's Specialized attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
     */
    public function setSpecialized($value)
    {
        $this->_specialized = $value;
        return $this;
    }

    /**
     * Get the value for this element's EntryLink attribute.
     *
     * @return Zend_Gdata_Extension_EntryLink The requested attribute.
     */
    public function getEntryLink()
    {
        return $this->_entryLink;
    }

    /**
     * Set the value for this element's EntryLink attribute.
     *
     * @param Zend_Gdata_Extension_EntryLink $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
     */
    public function setEntryLink($value)
    {
        $this->_entryLink = $value;
        return $this;
    }

    /**
     * Get the value for this element's Specialized attribute.
     *
     * @return Zend_Gdata_Extension_OriginalEvent The requested attribute.
     */
    public function getOriginalEvent()
    {
        return $this->_originalEvent;
    }

    /**
     * Set the value for this element's Specialized attribute.
     *
     * @param Zend_Gdata_Extension_OriginalEvent $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_RecurrenceException The element being modified.
     */
    public function setOriginalEvent($value)
    {
        $this->_originalEvent = $value;
        return $this;
    }

}

PKpG[,p�9Gdata/Extension/Recurrence.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gd:recurrence element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Recurrence extends Zend_Gdata_Extension
{

    protected $_rootElement = 'recurrence';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[p��xSS(Gdata/Extension/OpenSearchStartIndex.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the openSeach:startIndex element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_OpenSearchStartIndex extends Zend_Gdata_Extension
{

    protected $_rootElement = 'startIndex';
    protected $_rootNamespace = 'openSearch';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���|��Gdata/Extension/Reminder.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Implements the gd:reminder element used to set/retrieve notifications
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Reminder extends Zend_Gdata_Extension
{

    protected $_rootElement = 'reminder';
    protected $_absoluteTime = null;
    protected $_method = null;
    protected $_days = null;
    protected $_hours = null;
    protected $_minutes = null;

    public function __construct($absoluteTime = null, $method = null, $days = null,
            $hours = null, $minutes = null)
    {
        parent::__construct();
        $this->_absoluteTime = $absoluteTime;
        $this->_method = $method;
        $this->_days = $days;
        $this->_hours = $hours;
        $this->_minutes = $minutes;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_absoluteTime !== null) {
            $element->setAttribute('absoluteTime', $this->_absoluteTime);
        }
        if ($this->_method !== null) {
            $element->setAttribute('method', $this->_method);
        }
        if ($this->_days !== null) {
            $element->setAttribute('days', $this->_days);
        }
        if ($this->_hours !== null) {
            $element->setAttribute('hours', $this->_hours);
        }
        if ($this->_minutes !== null) {
            $element->setAttribute('minutes', $this->_minutes);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
            case 'absoluteTime':
                $this->_absoluteTime = $attribute->nodeValue;
                break;
            case 'method':
                $this->_method = $attribute->nodeValue;
                break;
            case 'days':
                $this->_days = $attribute->nodeValue;
                break;
            case 'hours':
                $this->_hours = $attribute->nodeValue;
                break;
            case 'minutes':
                $this->_minutes = $attribute->nodeValue;
                break;
            default:
                parent::takeAttributeFromDOM($attribute);
        }
    }

    public function __toString()
    {
        $s;
        if ($absoluteTime)
            $s = "at" . $absoluteTime;
        else if ($days)
            $s = "in" . $days . "days";
        else if ($hours)
            $s = "in" . $hours . "hours";
        else if ($minutes)
            $s = "in" . $minutes . "minutes";
        return $method . $s;
    }

    public function getAbsoluteTime()
    {
        return $this->_absoluteTime;
    }

    public function setAbsoluteTime($value)
    {
        $this->_absoluteTime = $value;
        return $this;
    }

    public function getDays()
    {
        return $this->_days;
    }

    public function setDays($value)
    {
        $this->_days = $value;
        return $this;
    }
    public function getHours()
    {
        return $this->_hours;
    }

    public function setHours($value)
    {
        $this->_hours = $value;
        return $this;
    }

    public function getMinutes()
    {
        return $this->_minutes;
    }

    public function setMinutes($value)
    {
        $this->_minutes = $value;
        return $this;
    }

    public function getMethod()
    {
        return $this->_method;
    }

    public function setMethod($value)
    {
        $this->_method = $value;
        return $this;
    }

}
PKpG['��N
N
Gdata/Extension/EventStatus.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gd:eventStatus element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_EventStatus extends Zend_Gdata_Extension
{

    protected $_rootElement = 'eventStatus';
    protected $_value = null;

    public function __construct($value = null)
    {
        parent::__construct();
        $this->_value = $value;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return string The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Visibility The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}
PKpG[�q�]��Gdata/Extension/When.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension_Reminder
 */
require_once 'Zend/Gdata/Extension/Reminder.php';

/**
 * Represents the gd:when element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_When extends Zend_Gdata_Extension
{

    protected $_rootElement = 'when';
    protected $_reminders = array();
    protected $_startTime = null;
    protected $_valueString = null;
    protected $_endTime = null;

    public function __construct($startTime = null, $endTime = null,
            $valueString = null, $reminders = null)
    {
        parent::__construct();
        $this->_startTime = $startTime;
        $this->_endTime = $endTime;
        $this->_valueString = $valueString;
        $this->_reminders = $reminders;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_startTime !== null) {
            $element->setAttribute('startTime', $this->_startTime);
        }
        if ($this->_endTime !== null) {
            $element->setAttribute('endTime', $this->_endTime);
        }
        if ($this->_valueString !== null) {
            $element->setAttribute('valueString', $this->_valueString);
        }
        if ($this->_reminders !== null) {
            foreach ($this->_reminders as $reminder) {
                $element->appendChild(
                        $reminder->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gd') . ':' . 'reminder';
                $reminder = new Zend_Gdata_Extension_Reminder();
                $reminder->transferFromDOM($child);
                $this->_reminders[] = $reminder;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
            case 'startTime':
                $this->_startTime = $attribute->nodeValue;
                break;
            case 'endTime':
                $this->_endTime = $attribute->nodeValue;
                break;
            case 'valueString':
                $this->_valueString = $attribute->nodeValue;
                break;
            default:
                parent::takeAttributeFromDOM($attribute);
        }
    }

    public function __toString()
    {
        if ($valueString)
            return $valueString;
        else {
            return 'Starts: ' . $this->getStartTime() . ' ' .
                   'Ends: ' .  $this->getEndTime();
        }
    }

    public function getStartTime()
    {
        return $this->_startTime;
    }

    public function setStartTime($value)
    {
        $this->_startTime = $value;
        return $this;
    }

    public function getEndTime()
    {
        return $this->_endTime;
    }

    public function setEndTime($value)
    {
        $this->_endTime = $value;
        return $this;
    }

    public function getValueString()
    {
        return $this->_valueString;
    }

    public function setValueString($value)
    {
        $this->_valueString = $value;
        return $this;
    }

    public function getReminders()
    {
        return $this->_reminders;
    }

    public function setReminders($value)
    {
        $this->_reminders = $value;
        return $this;
    }

}
PKpG[M��
�
 Gdata/Extension/Transparency.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent an entry's transparency
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_Transparency extends Zend_Gdata_Extension
{

    protected $_rootElement = 'transparency';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_Transparency object.
     * @param bool $value (optional) Transparency value as URI
     */
    public function __construct($value = null)
    {
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return bool The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_Transparency The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[l��nZZ*Gdata/Extension/OpenSearchTotalResults.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the openSearch:totalResults element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_OpenSearchTotalResults extends Zend_Gdata_Extension
{

    protected $_rootElement = 'totalResults';
    protected $_rootNamespace = 'openSearch';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[8Cl�
�
!Gdata/Extension/OriginalEvent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_When
 */
require_once 'Zend/Gdata/Extension/When.php';

/**
 * Represents the gd:originalEvent element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_OriginalEvent extends Zend_Gdata_Extension
{

    protected $_rootElement = 'originalEvent';
    protected $_id = null;
    protected $_href = null;
    protected $_when = null;

    public function __construct($id = null, $href = null, $when = null)
    {
        parent::__construct();
        $this->_id = $id;
        $this->_href = $href;
        $this->_when = $when;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_id !== null) {
            $element->setAttribute('id', $this->_id);
        }
        if ($this->_href !== null) {
            $element->setAttribute('href', $this->_href);
        }
        if ($this->_when !== null) {
            $element->appendChild($this->_when->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'id':
            $this->_id = $attribute->nodeValue;
            break;
        case 'href':
            $this->_href = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gd') . ':' . 'when';
                $when = new Zend_Gdata_Extension_When();
                $when->transferFromDOM($child);
                $this->_when = $when;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function getId()
    {
        return $this->_id;
    }

    public function setId($value)
    {
        $this->_id = $value;
        return $this;
    }

    public function getHref()
    {
        return $this->_href;
    }

    public function setHref($value)
    {
        $this->_href = $value;
        return $this;
    }

    public function getWhen()
    {
        return $this->_when;
    }

    public function setWhen($value)
    {
        $this->_when = $value;
        return $this;
    }


}
PKpG[S�[��Gdata/Extension/EntryLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * Represents the gd:entryLink element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Extension_EntryLink extends Zend_Gdata_Extension
{

    protected $_rootElement = 'entryLink';
    protected $_href = null;
    protected $_readOnly = null;
    protected $_rel = null;
    protected $_entry = null;

    public function __construct($href = null, $rel = null,
            $readOnly = null, $entry = null)
    {
        parent::__construct();
        $this->_href = $href;
        $this->_readOnly = $readOnly;
        $this->_rel = $rel;
        $this->_entry = $entry;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_href !== null) {
            $element->setAttribute('href', $this->_href);
        }
        if ($this->_readOnly !== null) {
            $element->setAttribute('readOnly', ($this->_readOnly ? "true" : "false"));
        }
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_entry !== null) {
            $element->appendChild($this->_entry->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('atom') . ':' . 'entry';
                $entry = new Zend_Gdata_Entry();
                $entry->transferFromDOM($child);
                $this->_entry = $entry;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'href':
            $this->_href = $attribute->nodeValue;
            break;
        case 'readOnly':
            if ($attribute->nodeValue == "true") {
                $this->_readOnly = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_readOnly = false;
            }
            else {
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getHref()
    {
        return $this->_href;
    }

    public function setHref($value)
    {
        $this->_href = $value;
        return $this;
    }

    public function getReadOnly()
    {
        return $this->_readOnly;
    }

    public function setReadOnly($value)
    {
        $this->_readOnly = $value;
        return $this;
    }

    public function getRel()
    {
        return $this->_rel;
    }

    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    public function getEntry()
    {
        return $this->_entry;
    }

    public function setEntry($value)
    {
        $this->_entry = $value;
        return $this;
    }

}
PKpG[�>b��Gdata/Health/ProfileEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Health_Extension_Ccr
 */
require_once 'Zend/Gdata/Health/Extension/Ccr.php';

/**
 * Concrete class for working with Health profile entries.
 *
 * @link http://code.google.com/apis/health/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_ProfileEntry extends Zend_Gdata_Entry
{
    /**
     * The classname for individual profile entry elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Health_ProfileEntry';

    /**
     * Google Health CCR data
     *
     * @var Zend_Gdata_Health_Extension_Ccr
     */
    protected $_ccrData = null;
    
    /**
     * Constructs a new Zend_Gdata_Health_ProfileEntry object.
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
            $this->registerNamespace($nsPrefix, $nsUri);
        }
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_ccrData !== null) {
          $element->appendChild($this->_ccrData->getDOM($element->ownerDocument));
        }
        
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        if (strstr($absoluteNodeName, $this->lookupNamespace('ccr') . ':')) {
            $ccrElement = new Zend_Gdata_Health_Extension_Ccr();
            $ccrElement->transferFromDOM($child);
            $this->_ccrData = $ccrElement;            
        } else {
            parent::takeChildFromDOM($child);
            
        }
    }
    
    /** 
     * Sets the profile entry's CCR data
     * @param string $ccrXMLStr The CCR as an xml string
     * @return Zend_Gdata_Health_Extension_Ccr
     */
    public function setCcr($ccrXMLStr) {
        $ccrElement = null;
        if ($ccrXMLStr != null) {
          $ccrElement = new Zend_Gdata_Health_Extension_Ccr();
          $ccrElement->transferFromXML($ccrXMLStr);
          $this->_ccrData = $ccrElement;
        }
        return $ccrElement;
    }


    /** 
     * Returns all the CCR data in a profile entry
     * @return Zend_Gdata_Health_Extension_Ccr
     */
    public function getCcr() {
        return $this->_ccrData;
    }
}
PKpG[�m��[[Gdata/Health/ProfileFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Represents a Google Health user's Profile Feed
 *
 * @link http://code.google.com/apis/health/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_ProfileFeed extends Zend_Gdata_Feed
{
    /**
     * The class name for individual profile feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Health_ProfileEntry';
    
    /**
     * Creates a Health Profile feed, representing a user's Health profile
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
            $this->registerNamespace($nsPrefix, $nsUri);
        }
        parent::__construct($element);
    }

    public function getEntries()
    {
        return $this->entry;
    }
}
PKpG[�x�4��Gdata/Health/Extension/Ccr.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ccr.php 13122 2008-12-10 02:45:49Z tjohns $
 */

/**
 * @see Zend_Gdata_App_Extension_Element
 */
require_once 'Zend/Gdata/App/Extension/Element.php';

/**
 * Concrete class for working with CCR elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_Extension_Ccr extends Zend_Gdata_App_Extension_Element
{
    protected $_rootNamespace = 'ccr';
    protected $_rootElement = 'ContinuityOfCareRecord';
    protected $_ccrDom = null;

    /**
     * Creates a Zend_Gdata_Health_Extension_Ccr entry, representing CCR data
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        foreach (Zend_Gdata_Health::$namespaces as $nsPrefix => $nsUri) {
            $this->registerNamespace($nsPrefix, $nsUri);
        }
    }

    /**
     * Transfers each child and attribute into member variables.
     * This is called when XML is received over the wire and the data
     * model needs to be built to represent this XML.
     *
     * @param DOMNode $node The DOMNode that represents this object's data
     */
    public function transferFromDOM($node)
    {
        $this->_ccrDom = $node;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        if (is_null($doc)) {
            $doc = new DOMDocument('1.0', 'utf-8');
        }
        $domElement = $doc->importNode($this->_ccrDom, true);
        return $domElement;
    } 

    /**
     * Magic helper that allows drilling down and returning specific elements 
     * in the CCR. For example, to retrieve the users medications
     * (/ContinuityOfCareRecord/Body/Medications) from the entry's CCR, call
     * $entry->getCcr()->getMedications().  Similarly, getConditions() would
     * return extract the user's conditions.
     *
     * @param string $name Name of the function to call
     * @return array.<DOMElement> A list of the appropriate CCR data 
     */
    public function __call($name, $args)
    {
        $matches = array();

        if (substr($name, 0, 3) === 'get') {
            $category = substr($name, 3);

            switch ($category) {
                case 'Conditions':
                    $category = 'Problems';
                    break;
                case 'Allergies':
                    $category = 'Alerts';
                    break;
                case 'TestResults':
                    // TestResults is an alias for LabResults
                case 'LabResults':
                    $category = 'Results';
                    break;
                default:
                    // $category is already well formatted
            }

            return $this->_ccrDom->getElementsByTagNameNS($this->lookupNamespace('ccr'), $category);
        } else {
            return null;
        }
    }
}
PKpG[`��
�� Gdata/Health/ProfileListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Represents a Google Health user's Profile List Feed
 *
 * @link http://code.google.com/apis/health/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_ProfileListFeed extends Zend_Gdata_Feed
{
    /**
     * The class name for individual profile feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Health_ProfileListEntry';
    
    public function getEntries()
    {
        return $this->entry;
    }
}
PKpG[Q�d�u!u!Gdata/Health/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Health
 *
 * @link http://code.google.com/apis/health
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_Query extends Zend_Gdata_Query
{
    /**
     * URI of a user's profile feed.
     */
    const HEALTH_PROFILE_FEED_URI =
        'https://www.google.com/health/feeds/profile/default';

    /**
     * URI of register (notices) feed.
     */
    const HEALTH_REGISTER_FEED_URI =
        'https://www.google.com/health/feeds/register/default';

    /**
     * Namespace for an item category
     */
    const ITEM_CATEGORY_NS = 'http://schemas.google.com/health/item';

    /**
     * The default URI for POST methods
     *
     * @var string
     */
    protected $_defaultFeedUri = self::HEALTH_PROFILE_FEED_URI;

    /**
     * Sets the digest parameter's value.
     *
     * @param string $value
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setDigest($value)
    {
        if ($value !== null) {
            $this->_params['digest'] = $value;
        }
        return $this;
    }

    /**
     * Returns the digest parameter's value.
     *
     * @return string The value set for the digest parameter.
     */
    public function getDigest()
    {
        if (array_key_exists('digest', $this->_params)) {
            return $this->_params['digest'];
        } else {
            return null;
        }
    }

    /**
     * Setter for category queries.
     *
     * @param string $item A category to query.
     * @param string $name (optional) A specific item to search a category for.
     *     An example would be 'Lipitor' if $item is set to 'medication'.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setCategory($item, $name = null)
    {
        $this->_category = $item . 
            ($name ? '/' . urlencode('{' . self::ITEM_CATEGORY_NS . '}' . $name) : null);
        return $this;
    }

    /**
     * Returns the query object's category.
     *
     * @return string id
     */
    public function getCategory()
    {
        return $this->_category;
    }

    /**
     * Setter for the grouped parameter.
     *
     * @param string $value setting a count of results per group.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setGrouped($value)
    {
        if ($value !== null) {
            $this->_params['grouped'] = $value;
        }
        return $this;
    }

    /**
     * Returns the value set for the grouped parameter.
     *
     * @return string grouped parameter.  
     */
    public function getGrouped()
    {
        if (array_key_exists('grouped', $this->_params)) {
            return $this->_params['grouped'];
        } else {
            return null;
        }
    }
    
    /**
     * Setter for the max-results-group parameter.
     *
     * @param int $value Specifies the maximum number of groups to be 
     *     retrieved. Must be an integer value greater than zero. This parameter
     *     is only valid if grouped=true.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setMaxResultsGroup($value)
    {
        if ($value !== null) {
            if ($value <= 0 || $this->getGrouped() !== 'true') {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                    'The max-results-group parameter must be set to a value
                    greater than 0 and can only be used if grouped=true'); 
            } else {
              $this->_params['max-results-group'] = $value;
            }
        }
        return $this;
    }

    /**
     *  Returns the value set for max-results-group.
     *
     * @return int Returns max-results-group parameter.  
     */
    public function getMaxResultsGroup()
    {
        if (array_key_exists('max-results-group', $this->_params)) {
            return $this->_params['max-results-group'];
        } else {
            return null;
        }
    }

    /**
     *  Setter for the max-results-group parameter.
     *
     * @param int $value Specifies the maximum number of records to be 
     *     retrieved from each group.  The limits that you specify with this 
     *     parameter apply to all groups. Must be an integer value greater than 
     *     zero. This parameter is only valid if grouped=true.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setMaxResultsInGroup($value)
    {
        if ($value !== null) {
            if ($value <= 0 || $this->getGrouped() !== 'true') {
              throw new Zend_Gdata_App_InvalidArgumentException(
                  'The max-results-in-group parameter must be set to a value 
                  greater than 0 and can only be used if grouped=true'); 
            } else {
              $this->_params['max-results-in-group'] = $value;
            }
        }
        return $this;
    }

    /**
     *  Returns the value set for max-results-in-group.
     *
     * @return int Returns max-results-in-group parameter.  
     */
    public function getMaxResultsInGroup()
    {
        if (array_key_exists('max-results-in-group', $this->_params)) {
            return $this->_params['max-results-in-group'];
        } else {
            return null;
        }
    }

    /**
     * Setter for the start-index-group parameter.
     *
     * @param int $value Retrieves only items whose group ranking is at 
     *     least start-index-group. This should be set to a 1-based index of the
     *     first group to be retrieved. The range is applied per category. 
     *     This parameter is only valid if grouped=true.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setStartIndexGroup($value)
    {
        if ($value !== null && $this->getGrouped() !== 'true') {
            throw new Zend_Gdata_App_InvalidArgumentException(
                'The start-index-group can only be used if grouped=true'); 
        } else {
          $this->_params['start-index-group'] = $value;
        }
        return $this;
    }

    /**
     *  Returns the value set for start-index-group.
     *
     * @return int Returns start-index-group parameter.  
     */
    public function getStartIndexGroup()
    {
        if (array_key_exists('start-index-group', $this->_params)) {
            return $this->_params['start-index-group'];
        } else {
            return null;
        }
    }

    /**
     *  Setter for the start-index-in-group parameter.
     *
     * @param int $value  A 1-based index of the records to be retrieved from 
     *     each group. This parameter is only valid if grouped=true.
     * @return Zend_Gdata_Health_Query Provides a fluent interface
     */
    public function setStartIndexInGroup($value)
    {
        if ($value !== null && $this->getGrouped() !== 'true') {
            throw new Zend_Gdata_App_InvalidArgumentException('start-index-in-group');
        } else {
          $this->_params['start-index-in-group'] = $value;
        }
        return $this;
    }

    /**
     * Returns the value set for start-index-in-group.
     *
     * @return int Returns start-index-in-group parameter.  
     */
    public function getStartIndexInGroup()
    {
        if (array_key_exists('start-index-in-group', $this->_params)) {
            return $this->_params['start-index-in-group'];
        } else {
            return null;
        }
    }
}
PKpG[�����!Gdata/Health/ProfileListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * Concrete class for working with Health profile list entries.
 *
 * @link http://code.google.com/apis/health/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Health
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Health_ProfileListEntry extends Zend_Gdata_Entry
{
    /**
     * The classname for individual profile list entry elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Health_ProfileListEntry';

    /**
     * Constructs a new Zend_Gdata_Health_ProfileListEntry object.
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        parent::takeChildFromDOM($child);
    }
        
    /** 
     * Retrieves the profile ID for the entry, which is contained in <atom:content>
     * @return string The profile id
     */
    public function getProfileID() {
        return $this->getContent()->text;
    }
    
    /** 
     * Retrieves the profile's title, which is contained in <atom:title>
     * @return string The profile name
     */
    public function getProfileName() {
        return $this->getTitle()->text;
    }

}
PKpG[�	trGdata/Media/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Media
 */
require_once 'Zend/Gdata/Media.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaGroup
 */
require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';

/**
 * Represents the Gdata flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Entry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Media_Entry';

    /**
     * media:group element
     *
     * @var Zend_Gdata_Media_Extension_MediaGroup
     */
    protected $_mediaGroup = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_mediaGroup != null) {
            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('media') . ':' . 'group':
            $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
            $mediaGroup->transferFromDOM($child);
            $this->_mediaGroup = $mediaGroup;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Returns the entry's mediaGroup object.
     *
     * @return Zend_Gdata_Media_Extension_MediaGroup
    */
    public function getMediaGroup()
    {
        return $this->_mediaGroup;
    }

    /**
     * Sets the entry's mediaGroup object.
     *
     * @param Zend_Gdata_Media_Extension_MediaGroup $mediaGroup
     * @return Zend_Gdata_Media_Entry Provides a fluent interface
     */
    public function setMediaGroup($mediaGroup)
    {
        $this->_mediaGroup = $mediaGroup;
        return $this;
    }


}
PKpG[97;���*Gdata/Media/Extension/MediaDescription.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:description element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaDescription extends Zend_Gdata_Extension
{

    protected $_rootElement = 'description';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_type = null;

    /**
     * @param string $text
     * @param string $type
     */
    public function __construct($text = null, $type = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_type = $type;
        $this->_text = $text;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaDescription Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

}
PKpG[�e��cc'Gdata/Media/Extension/MediaCategory.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:category element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaCategory extends Zend_Gdata_Extension
{

    protected $_rootElement = 'category';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_scheme = null;
    protected $_label = null;

    /**
     * Creates an individual MediaCategory object.
     *
     * @param string $text      Indication of the type and content of the media
     * @param string $scheme    URI that identifies the categorization scheme
     * @param string $label     Human-readable label to be displayed in applications
     */
    public function __construct($text = null, $scheme = null, $label = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_scheme = $scheme;
        $this->_label = $label;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        if ($this->_label !== null) {
            $element->setAttribute('label', $this->_label);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'scheme':
            $this->_scheme = $attribute->nodeValue;
            break;
        case 'label':
            $this->_label = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the URI that identifies the categorization scheme
     * Optional.
     *
     * @return string URI that identifies the categorization scheme
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string $value     URI that identifies the categorization scheme
     * @return Zend_Gdata_Media_Extension_MediaCategory Provides a fluent interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

    /**
     * @return string Human-readable label to be displayed in applications
     */
    public function getLabel()
    {
        return $this->_label;
    }

    /**
     * @param string $value     Human-readable label to be displayed in applications
     * @return Zend_Gdata_Media_Extension_MediaCategory Provides a fluent interface
     */
    public function setLabel($value)
    {
        $this->_label = $value;
        return $this;
    }

}
PKpG[�~Z���%Gdata/Media/Extension/MediaPlayer.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:player element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaPlayer extends Zend_Gdata_Extension
{

    protected $_rootElement = 'player';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_url = null;

    /**
     * @var int
     */
    protected $_width = null;

    /**
     * @var int
     */
    protected $_height = null;

    /**
     * Constructs a new MediaPlayer element
     *
     * @param string $url
     * @param int $width
     * @param int $height
     */
    public function __construct($url = null, $width = null, $height = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_url = $url;
        $this->_width = $width;
        $this->_height = $height;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_url !== null) {
            $element->setAttribute('url', $this->_url);
        }
        if ($this->_width !== null) {
            $element->setAttribute('width', $this->_width);
        }
        if ($this->_height !== null) {
            $element->setAttribute('height', $this->_height);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'url':
            $this->_url = $attribute->nodeValue;
            break;
        case 'width':
            $this->_width = $attribute->nodeValue;
            break;
        case 'height':
            $this->_height = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
     */
    public function setUrl($value)
    {
        $this->_url = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getWidth()
    {
        return $this->_width;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
     */
    public function setWidth($value)
    {
        $this->_width = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getHeight()
    {
        return $this->_height;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Media_Extension_MediaPlayer Provides a fluent interface
     */
    public function setHeight($value)
    {
        $this->_height = $value;
        return $this;
    }

}
PKpG[��z~�1�1&Gdata/Media/Extension/MediaContent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the media:content element of Media RSS.
 * Represents media objects.  Multiple media objects representing
 * the same content can be represented using a
 * media:group (Zend_Gdata_Media_Extension_MediaGroup) element.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaContent extends Zend_Gdata_Extension
{
    protected $_rootElement = 'content';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_url = null;

    /**
     * @var int
     */
    protected $_fileSize = null;

    /**
     * @var string
     */
    protected $_type = null;

    /**
     * @var string
     */
    protected $_medium = null;

    /**
     * @var string
     */
    protected $_isDefault = null;

    /**
     * @var string
     */
    protected $_expression = null;

    /**
     * @var int
     */
    protected $_bitrate = null;

    /**
     * @var int
     */
    protected $_framerate = null;

    /**
     * @var int
     */
    protected $_samplingrate = null;

    /**
     * @var int
     */
    protected $_channels = null;

    /**
     * @var int
     */
    protected $_duration = null;

    /**
     * @var int
     */
    protected $_height = null;

    /**
     * @var int
     */
    protected $_width = null;

    /**
     * @var string
     */
    protected $_lang = null;

    /**
     * Creates an individual MediaContent object.
     */
    public function __construct($url = null, $fileSize = null, $type = null,
            $medium = null, $isDefault = null, $expression = null,
            $bitrate = null, $framerate = null, $samplingrate = null,
            $channels = null, $duration = null, $height = null, $width = null,
            $lang = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_url = $url;
        $this->_fileSize = $fileSize;
        $this->_type = $type;
        $this->_medium = $medium;
        $this->_isDefault = $isDefault;
        $this->_expression = $expression;
        $this->_bitrate = $bitrate;
        $this->_framerate = $framerate;
        $this->_samplingrate = $samplingrate;
        $this->_channels = $channels;
        $this->_duration = $duration;
        $this->_height = $height;
        $this->_width = $width;
        $this->_lang = $lang;
    }


    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_url !== null) {
            $element->setAttribute('url', $this->_url);
        }
        if ($this->_fileSize !== null) {
            $element->setAttribute('fileSize', $this->_fileSize);
        }
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        if ($this->_medium !== null) {
            $element->setAttribute('medium', $this->_medium);
        }
        if ($this->_isDefault !== null) {
            $element->setAttribute('isDefault', $this->_isDefault);
        }
        if ($this->_expression !== null) {
            $element->setAttribute('expression', $this->_expression);
        }
        if ($this->_bitrate !== null) {
            $element->setAttribute('bitrate', $this->_bitrate);
        }
        if ($this->_framerate !== null) {
            $element->setAttribute('framerate', $this->_framerate);
        }
        if ($this->_samplingrate !== null) {
            $element->setAttribute('samplingrate', $this->_samplingrate);
        }
        if ($this->_channels !== null) {
            $element->setAttribute('channels', $this->_channels);
        }
        if ($this->_duration !== null) {
            $element->setAttribute('duration', $this->_duration);
        }
        if ($this->_height !== null) {
            $element->setAttribute('height', $this->_height);
        }
        if ($this->_width !== null) {
            $element->setAttribute('width', $this->_width);
        }
        if ($this->_lang !== null) {
            $element->setAttribute('lang', $this->_lang);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
            case 'url':
                $this->_url = $attribute->nodeValue;
                break;
            case 'fileSize':
                $this->_fileSize = $attribute->nodeValue;
                break;
            case 'type':
                $this->_type = $attribute->nodeValue;
                break;
            case 'medium':
                $this->_medium = $attribute->nodeValue;
                break;
            case 'isDefault':
                $this->_isDefault = $attribute->nodeValue;
                break;
            case 'expression':
                $this->_expression = $attribute->nodeValue;
                break;
            case 'bitrate':
                $this->_bitrate = $attribute->nodeValue;
                break;
            case 'framerate':
                $this->_framerate = $attribute->nodeValue;
                break;
            case 'samplingrate':
                $this->_samplingrate = $attribute->nodeValue;
                break;
            case 'channels':
                $this->_channels = $attribute->nodeValue;
                break;
            case 'duration':
                $this->_duration = $attribute->nodeValue;
                break;
            case 'height':
                $this->_height = $attribute->nodeValue;
                break;
            case 'width':
                $this->_width = $attribute->nodeValue;
                break;
            case 'lang':
                $this->_lang = $attribute->nodeValue;
                break;
            default:
                parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the URL representing this MediaContent object
     *
     * @return string   The URL representing this MediaContent object.
     */
    public function __toString()
    {
        return $this->getUrl();
    }

    /**
     * @return string   The direct URL to the media object
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * @param string $value     The direct URL to the media object
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setUrl($value)
    {
        $this->_url = $value;
        return $this;
    }

    /**
     * @return int  The size of the media in bytes
     */
    public function getFileSize()
    {
        return $this->_fileSize;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setFileSize($value)
    {
        $this->_fileSize = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getMedium()
    {
        return $this->_medium;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setMedium($value)
    {
        $this->_medium = $value;
        return $this;
    }

    /**
     * @return bool
     */
    public function getIsDefault()
    {
        return $this->_isDefault;
    }

    /**
     * @param bool $value
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setIsDefault($value)
    {
        $this->_isDefault = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getExpression()
    {
        return $this->_expression;
    }

    /**
     * @param string
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setExpression($value)
    {
        $this->_expression = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getBitrate()
    {
        return $this->_bitrate;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setBitrate($value)
    {
        $this->_bitrate = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getFramerate()
    {
        return $this->_framerate;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setFramerate($value)
    {
        $this->_framerate = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getSamplingrate()
    {
        return $this->_samplingrate;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setSamplingrate($value)
    {
        $this->_samplingrate = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getChannels()
    {
        return $this->_channels;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setChannels($value)
    {
        $this->_channels = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getDuration()
    {
        return $this->_duration;
    }

    /**
     *
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setDuration($value)
    {
        $this->_duration = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getHeight()
    {
        return $this->_height;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setHeight($value)
    {
        $this->_height = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getWidth()
    {
        return $this->_width;
    }

    /**
     * @param int
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setWidth($value)
    {
        $this->_width = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getLang()
    {
        return $this->_lang;
    }

    /**
     * @param string
     * @return Zend_Gdata_Media_Extension_MediaContent  Provides a fluent interface
     */
    public function setLang($value)
    {
        $this->_lang = $value;
        return $this;
    }

}
PKpG[I���*Gdata/Media/Extension/MediaRestriction.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:restriction element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaRestriction extends Zend_Gdata_Extension
{

    protected $_rootElement = 'restriction';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_relationship = null;

    /**
     * @var string
     */
    protected $_type = null;

    /**
     * Constructs a new MediaRestriction element
     *
     * @param string $text
     * @param string $relationship
     * @param string $type
     */
    public function __construct($text = null, $relationship = null,  $type = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_relationship = $relationship;
        $this->_type = $type;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_relationship !== null) {
            $element->setAttribute('relationship', $this->_relationship);
        }
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'relationship':
            $this->_relationship = $attribute->nodeValue;
            break;
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getRelationship()
    {
        return $this->_relationship;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaRestriction Provides a fluent interface
     */
    public function setRelationship($value)
    {
        $this->_relationship = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaRestriction Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

}
PKpG[Ϡ,���$Gdata/Media/Extension/MediaTitle.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:title element in MediaRSS
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaTitle extends Zend_Gdata_Extension
{

    protected $_rootElement = 'title';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_type = null;

    /**
     * Constructs a MediaTitle element
     *
     * @param string $text
     * @param string $type
     */
    public function __construct($text = null, $type = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_type = $type;
        $this->_text = $text;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaTitle Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

}
PKpG[r�t��#Gdata/Media/Extension/MediaHash.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:hash element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaHash extends Zend_Gdata_Extension
{

    protected $_rootElement = 'hash';
    protected $_rootNamespace = 'media';
    protected $_algo = null;

    /**
     * Constructs a new MediaHash element
     *
     * @param string $text
     * @param string $algo
     */
    public function __construct($text = null, $algo = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_algo = $algo;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_algo !== null) {
            $element->setAttribute('algo', $this->_algo);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'algo':
            $this->_algo = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string The algo
     */
    public function getAlgo()
    {
        return $this->_algo;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaHash Provides a fluent interface
     */
    public function setAlgo($value)
    {
        $this->_algo = $value;
        return $this;
    }

}
PKpG[�΅�;;$Gdata/Media/Extension/MediaGroup.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaContent
 */
require_once 'Zend/Gdata/Media/Extension/MediaContent.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaCategory
 */
require_once 'Zend/Gdata/Media/Extension/MediaCategory.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaCopyright
 */
require_once 'Zend/Gdata/Media/Extension/MediaCopyright.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaCredit
 */
require_once 'Zend/Gdata/Media/Extension/MediaCredit.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaDescription
 */
require_once 'Zend/Gdata/Media/Extension/MediaDescription.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaHash
 */
require_once 'Zend/Gdata/Media/Extension/MediaHash.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaKeywords
 */
require_once 'Zend/Gdata/Media/Extension/MediaKeywords.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaPlayer
 */
require_once 'Zend/Gdata/Media/Extension/MediaPlayer.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaRating
 */
require_once 'Zend/Gdata/Media/Extension/MediaRating.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaRestriction
 */
require_once 'Zend/Gdata/Media/Extension/MediaRestriction.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaText
 */
require_once 'Zend/Gdata/Media/Extension/MediaText.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaThumbnail
 */
require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaTitle
 */
require_once 'Zend/Gdata/Media/Extension/MediaTitle.php';


/**
 * This class represents the media:group element of Media RSS.
 * It allows the grouping of media:content elements that are
 * different representations of the same content.  When it exists,
 * it is a child of an Entry (Atom) or Item (RSS).
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaGroup extends Zend_Gdata_Extension
{

    protected $_rootElement = 'group';
    protected $_rootNamespace = 'media';

    /**
     * @var array
     */
    protected $_content = array();

    /**
     * @var array
     */
    protected $_category = array();

    /**
     * @var Zend_Gdata_Media_Extension_MediaCopyright
     */
    protected $_copyright = null;

    /**
     * @var array
     */
    protected $_credit = array();

    /**
     * @var Zend_Gdata_Media_Extension_MediaDescription
     */
    protected $_description = null;

    /**
     * @var array
     */
    protected $_hash = array();

    /**
     * @var Zend_Gdata_Media_Extension_MediaKeywords
     */
    protected $_keywords = null;

    /**
     * @var array
     */
    protected $_player = array();

    /**
     * @var array
     */
    protected $_rating = array();

    /**
     * @var array
     */
    protected $_restriction = array();

    /**
     * @var array
     */
    protected $_mediaText = array();

    /**
     * @var array
     */
    protected $_thumbnail = array();

    /**
     * @var string
     */
    protected $_title = null;

    /**
     * Creates an individual MediaGroup object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        foreach ($this->_content as $content) {
            $element->appendChild($content->getDOM($element->ownerDocument));
        }
        foreach ($this->_category as $category) {
            $element->appendChild($category->getDOM($element->ownerDocument));
        }
        foreach ($this->_credit as $credit) {
            $element->appendChild($credit->getDOM($element->ownerDocument));
        }
        foreach ($this->_player as $player) {
            $element->appendChild($player->getDOM($element->ownerDocument));
        }
        foreach ($this->_rating as $rating) {
            $element->appendChild($rating->getDOM($element->ownerDocument));
        }
        foreach ($this->_restriction as $restriction) {
            $element->appendChild($restriction->getDOM($element->ownerDocument));
        }
        foreach ($this->_mediaText as $text) {
            $element->appendChild($text->getDOM($element->ownerDocument));
        }
        foreach ($this->_thumbnail as $thumbnail) {
            $element->appendChild($thumbnail->getDOM($element->ownerDocument));
        }
        if ($this->_copyright != null) {
            $element->appendChild(
                    $this->_copyright->getDOM($element->ownerDocument));
        }
        if ($this->_description != null) {
            $element->appendChild(
                    $this->_description->getDOM($element->ownerDocument));
        }
        foreach ($this->_hash as $hash) {
            $element->appendChild($hash->getDOM($element->ownerDocument));
        }
        if ($this->_keywords != null) {
            $element->appendChild(
                    $this->_keywords->getDOM($element->ownerDocument));
        }
        if ($this->_title != null) {
            $element->appendChild(
                    $this->_title->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('media') . ':' . 'content';
                $content = new Zend_Gdata_Media_Extension_MediaContent();
                $content->transferFromDOM($child);
                $this->_content[] = $content;
                break;
            case $this->lookupNamespace('media') . ':' . 'category';
                $category = new Zend_Gdata_Media_Extension_MediaCategory();
                $category->transferFromDOM($child);
                $this->_category[] = $category;
                break;
            case $this->lookupNamespace('media') . ':' . 'copyright';
                $copyright = new Zend_Gdata_Media_Extension_MediaCopyright();
                $copyright->transferFromDOM($child);
                $this->_copyright = $copyright;
                break;
            case $this->lookupNamespace('media') . ':' . 'credit';
                $credit = new Zend_Gdata_Media_Extension_MediaCredit();
                $credit->transferFromDOM($child);
                $this->_credit[] = $credit;
                break;
            case $this->lookupNamespace('media') . ':' . 'description';
                $description = new Zend_Gdata_Media_Extension_MediaDescription();
                $description->transferFromDOM($child);
                $this->_description = $description;
                break;
            case $this->lookupNamespace('media') . ':' . 'hash';
                $hash = new Zend_Gdata_Media_Extension_MediaHash();
                $hash->transferFromDOM($child);
                $this->_hash[] = $hash;
                break;
            case $this->lookupNamespace('media') . ':' . 'keywords';
                $keywords = new Zend_Gdata_Media_Extension_MediaKeywords();
                $keywords->transferFromDOM($child);
                $this->_keywords = $keywords;
                break;
            case $this->lookupNamespace('media') . ':' . 'player';
                $player = new Zend_Gdata_Media_Extension_MediaPlayer();
                $player->transferFromDOM($child);
                $this->_player[] = $player;
                break;
            case $this->lookupNamespace('media') . ':' . 'rating';
                $rating = new Zend_Gdata_Media_Extension_MediaRating();
                $rating->transferFromDOM($child);
                $this->_rating[] = $rating;
                break;
            case $this->lookupNamespace('media') . ':' . 'restriction';
                $restriction = new Zend_Gdata_Media_Extension_MediaRestriction();
                $restriction->transferFromDOM($child);
                $this->_restriction[] = $restriction;
                break;
            case $this->lookupNamespace('media') . ':' . 'text';
                $text = new Zend_Gdata_Media_Extension_MediaText();
                $text->transferFromDOM($child);
                $this->_mediaText[] = $text;
                break;
            case $this->lookupNamespace('media') . ':' . 'thumbnail';
                $thumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
                $thumbnail->transferFromDOM($child);
                $this->_thumbnail[] = $thumbnail;
                break;
            case $this->lookupNamespace('media') . ':' . 'title';
                $title = new Zend_Gdata_Media_Extension_MediaTitle();
                $title->transferFromDOM($child);
                $this->_title = $title;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * @return array
     */
    public function getContent()
    {
        return $this->_content;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Media_MediaGroup Provides a fluent interface
     */
    public function setContent($value)
    {
        $this->_content = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getCategory()
    {
        return $this->_category;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setCategory($value)
    {
        $this->_category = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_Media_Extension_MediaCopyright
     */
    public function getCopyright()
    {
        return $this->_copyright;
    }

    /**
     * @param Zend_Gdata_Media_Extension_MediaCopyright $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setCopyright($value)
    {
        $this->_copyright = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getCredit()
    {
        return $this->_credit;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setCredit($value)
    {
        $this->_credit = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_Media_Extension_MediaTitle
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * @param Zend_Gdata_Media_Extension_MediaTitle $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setTitle($value)
    {
        $this->_title = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_Media_Extension_MediaDescription
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * @param Zend_Gdata_Media_Extension_MediaDescription $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setDescription($value)
    {
        $this->_description = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getHash()
    {
        return $this->_hash;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setHash($value)
    {
        $this->_hash = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_Media_Extension_MediaKeywords
     */
    public function getKeywords()
    {
        return $this->_keywords;
    }

    /**
     * @param array $value
     * @return Zend_Gdata_Media_Extension_MediaGroup Provides a fluent interface
     */
    public function setKeywords($value)
    {
        $this->_keywords = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getPlayer()
    {
        return $this->_player;
    }

    /**
     * @param array
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setPlayer($value)
    {
        $this->_player = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getRating()
    {
        return $this->_rating;
    }

    /**
     * @param array
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setRating($value)
    {
        $this->_rating = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getRestriction()
    {
        return $this->_restriction;
    }

    /**
     * @param array
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setRestriction($value)
    {
        $this->_restriction = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getThumbnail()
    {
        return $this->_thumbnail;
    }

    /**
     * @param array
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setThumbnail($value)
    {
        $this->_thumbnail = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getMediaText()
    {
        return $this->_mediaText;
    }

    /**
     * @param array
     * @return Zend_Gdata_Media_Extension_MediaGroup
     */
    public function setMediaText($value)
    {
        $this->_mediaText = $value;
        return $this;
    }

}
PKpG[���'Gdata/Media/Extension/MediaKeywords.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:keywords element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaKeywords extends Zend_Gdata_Extension
{
    protected $_rootElement = 'keywords';
    protected $_rootNamespace = 'media';

    /**
     * Constructs a new MediaKeywords element
     */
    public function __construct()
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
    }

}
PKpG[������(Gdata/Media/Extension/MediaThumbnail.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:thumbnail element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaThumbnail extends Zend_Gdata_Extension
{

    protected $_rootElement = 'thumbnail';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_url = null;

    /**
     * @var int
     */
    protected $_width = null;

    /**
     * @var int
     */
    protected $_height = null;

    /**
     * @var string
     */
    protected $_time = null;

    /**
     * Constructs a new MediaThumbnail element
     *
     * @param string $url
     * @param int $width
     * @param int $height
     * @param string $time
     */
    public function __construct($url = null, $width = null, $height = null,
            $time = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_url = $url;
        $this->_width = $width;
        $this->_height = $height;
        $this->_time = $time ;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_url !== null) {
            $element->setAttribute('url', $this->_url);
        }
        if ($this->_width !== null) {
            $element->setAttribute('width', $this->_width);
        }
        if ($this->_height !== null) {
            $element->setAttribute('height', $this->_height);
        }
        if ($this->_time !== null) {
            $element->setAttribute('time', $this->_time);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'url':
            $this->_url = $attribute->nodeValue;
            break;
        case 'width':
            $this->_width = $attribute->nodeValue;
            break;
        case 'height':
            $this->_height = $attribute->nodeValue;
            break;
        case 'time':
            $this->_time = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
     */
    public function setUrl($value)
    {
        $this->_url = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getWidth()
    {
        return $this->_width;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
     */
    public function setWidth($value)
    {
        $this->_width = $value;
        return $this;
    }

    /**
     * @return int
     */
    public function getHeight()
    {
        return $this->_height;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
     */
    public function setHeight($value)
    {
        $this->_height = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getTime()
    {
        return $this->_time;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaThumbnail Provides a fluent interface
     */
    public function setTime($value)
    {
        $this->_time = $value;
        return $this;
    }

}
PKpG[�ez?��(Gdata/Media/Extension/MediaCopyright.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:copyright element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaCopyright extends Zend_Gdata_Extension
{

    protected $_rootElement = 'copyright';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_url = null;

    /**
     * @param string $text
     * @param string $url
     */
    public function __construct($text = null, $url = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_url = $url;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_url !== null) {
            $element->setAttribute('url', $this->_url);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'url':
            $this->_url = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCopyright Provides a fluent interface
     */
    public function setUrl($value)
    {
        $this->_url = $value;
        return $this;
    }

}
PKpG[09�

%Gdata/Media/Extension/MediaRating.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:rating element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaRating extends Zend_Gdata_Extension
{

    protected $_rootElement = 'rating';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_scheme = null;

    /**
     * Constructs a new MediaRating element
     *
     * @param string $text
     * @param string $scheme
     */
    public function __construct($text = null, $scheme = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_scheme = $scheme;
        $this->_text = $text;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'scheme':
            $this->_scheme = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaRating Provides a fluent interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

}
PKpG[׽�{��%Gdata/Media/Extension/MediaCredit.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:credit element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaCredit extends Zend_Gdata_Extension
{

    protected $_rootElement = 'credit';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_role = null;

    /**
     * @var string
     */
    protected $_scheme = null;

    /**
     * Creates an individual MediaCredit object.
     *
     * @param string $text
     * @param string $role
     * @param string $scheme
     */
    public function __construct($text = null, $role = null,  $scheme = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_role = $role;
        $this->_scheme = $scheme;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_role !== null) {
            $element->setAttribute('role', $this->_role);
        }
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'role':
            $this->_role = $attribute->nodeValue;
            break;
        case 'scheme':
            $this->_scheme = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getRole()
    {
        return $this->_role;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent interface
     */
    public function setRole($value)
    {
        $this->_role = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

}
PKpG[�9n2��#Gdata/Media/Extension/MediaText.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the media:text element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Extension_MediaText extends Zend_Gdata_Extension
{

    protected $_rootElement = 'text';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_type = null;

    /**
     * @var string
     */
    protected $_lang = null;

    /**
     * @var string
     */
    protected $_start = null;

    /**
     * @var string
     */
    protected $_end = null;

    /**
     * Constructs a new MediaText element
     *
     * @param $text string
     * @param $type string
     * @param $lang string
     * @param $start string
     * @param $end string
     */
    public function __construct($text = null, $type = null, $lang = null,
            $start = null, $end = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_type = $type;
        $this->_lang = $lang;
        $this->_start = $start;
        $this->_end = $end;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        if ($this->_lang !== null) {
            $element->setAttribute('lang', $this->_lang);
        }
        if ($this->_start !== null) {
            $element->setAttribute('start', $this->_start);
        }
        if ($this->_end !== null) {
            $element->setAttribute('end', $this->_end);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        case 'lang':
            $this->_lang = $attribute->nodeValue;
            break;
        case 'start':
            $this->_start = $attribute->nodeValue;
            break;
        case 'end':
            $this->_end = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getLang()
    {
        return $this->_lang;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
     */
    public function setLang($value)
    {
        $this->_lang = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getStart()
    {
        return $this->_start;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
     */
    public function setStart($value)
    {
        $this->_start = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getEnd()
    {
        return $this->_end;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaText Provides a fluent interface
     */
    public function setEnd($value)
    {
        $this->_end = $value;
        return $this;
    }
}
PKpG[V�����Gdata/Media/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_eed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Media
 */
require_once 'Zend/Gdata/Media.php';

/**
 * @see Zend_Gdata_Media_Entry
 */
require_once 'Zend/Gdata/Media/Entry.php';

/**
 * The Gdata flavor of an Atom Feed with media support
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media_Feed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Media_Entry';

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct($element);
    }

}
PKpG[tf���$�$Gdata/Docs.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Docs_DocumentListFeed
 */
require_once 'Zend/Gdata/Docs/DocumentListFeed.php';

/**
 * @see Zend_Gdata_Docs_DocumentListEntry
 */
require_once 'Zend/Gdata/Docs/DocumentListEntry.php';

/**
 * Service class for interacting with the Google Document List data API
 * @link http://code.google.com/apis/documents/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Docs extends Zend_Gdata
{

    const DOCUMENTS_LIST_FEED_URI = 'http://docs.google.com/feeds/documents/private/full';
    const AUTH_SERVICE_NAME = 'writely';

    protected $_defaultPostUri = self::DOCUMENTS_LIST_FEED_URI;

    private static $SUPPORTED_FILETYPES = array(
      'CSV'=>'text/csv',
      'DOC'=>'application/msword',
      'ODS'=>'application/vnd.oasis.opendocument.spreadsheet',
      'ODT'=>'application/vnd.oasis.opendocument.text',
      'RTF'=>'application/rtf',
      'SXW'=>'application/vnd.sun.xml.writer',
      'TXT'=>'text/plain',
      'XLS'=>'application/vnd.ms-excel');

    /**
     * Create Gdata_Docs object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Docs');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
    }

    /**
     * Looks up the mime type based on the file name extension. For example,
     * calling this method with 'csv' would return 
     * 'text/comma-separated-values'. The Mime type is sent as a header in 
     * the upload HTTP POST request.
     *
     * @param string $fileExtension 
     * @return string The mime type to be sent to the server to tell it how the
     *          multipart mime data should be interpreted.
     */
    public static function lookupMimeType($fileExtension) {
      return self::$SUPPORTED_FILETYPES[strtoupper($fileExtension)];
    }

    /**
     * Retreive feed object containing entries for the user's documents.
     *
     * @param mixed $location The location for the feed, as a URL or Query
     * @return Zend_Gdata_Docs_DocumentListFeed
     */
    public function getDocumentListFeed($location = null)
    {
        if ($location === null) {
            $uri = self::DOCUMENTS_LIST_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Docs_DocumentListFeed');
    }

    /**
     * Retreive entry object representing a single document.
     *
     * @param mixed $location The location for the entry, as a URL or Query
     * @return Zend_Gdata_Docs_DocumentListEntry
     */
    public function getDocumentListEntry($location = null)
    {
        if ($location === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Docs_DocumentListEntry');
    }

    /**
     * Retreive entry object representing a single document.
     *
     * This method builds the URL where this item is stored using the type
     * and the id of the document.
     * @param string $docId The URL key for the document. Examples: 
     *     dcmg89gw_62hfjj8m, pKq0CzjiF3YmGd0AIlHKqeg
     * @param string $docType The type of the document as used in the Google
     *     Document List URLs. Examples: document, spreadsheet, presentation
     * @return Zend_Gdata_Docs_DocumentListEntry
     */
    public function getDoc($docId, $docType) {
        $location = 'http://docs.google.com/feeds/documents/private/full/' . 
            $docType . '%3A' . $docId;
        return $this->getDocumentListEntry($location);
    }

    /**
     * Retreive entry object for the desired word processing document.
     *
     * @param string $id The URL id for the document. Example: 
     *     dcmg89gw_62hfjj8m
     */
    public function getDocument($id) {
      return $this->getDoc($id, 'document');
    }
    
    /**
     * Retreive entry object for the desired spreadsheet.
     *
     * @param string $id The URL id for the document. Example: 
     *     pKq0CzjiF3YmGd0AIlHKqeg
     */
    public function getSpreadsheet($id) {
      return $this->getDoc($id, 'spreadsheet');
    }
    
    /**
     * Retreive entry object for the desired presentation.
     *
     * @param string $id The URL id for the document. Example: 
     *     dcmg89gw_21gtrjcn
     */
    public function getPresentation($id) {
      return $this->getDoc($id, 'presentation');
    }

    /**
     * Upload a local file to create a new Google Document entry. 
     *
     * @param string $fileLocation The full or relative path of the file to
     *         be uploaded.
     * @param string $title The name that this document should have on the 
     *         server. If set, the title is used as the slug header in the
     *         POST request. If no title is provided, the location of the 
     *         file will be used as the slug header in the request. If no 
     *         mimeType is provided, this method attempts to determine the
     *         mime type based on the slugHeader by looking for .doc, 
     *         .csv, .txt, etc. at the end of the file name.
     *         Example value: 'test.doc'.
     * @param string $mimeType Describes the type of data which is being sent
     *         to the server. This must be one of the accepted mime types 
     *         which are enumerated in SUPPORTED_FILETYPES.
     * @param string $uri (optional) The URL to which the upload should be 
     *         made.
     *         Example: 'http://docs.google.com/feeds/documents/private/full'.
     * @return Zend_Gdata_Docs_DocumentListEntry The entry for the newly 
     *         created Google Document.
     */
    public function uploadFile($fileLocation, $title=null, $mimeType=null, 
                               $uri=null)
    {
        // Set the URI to which the file will be uploaded.
        if ($uri === null) {
            $uri = $this->_defaultPostUri;
        }
        
        // Create the media source which describes the file.
        $fs = $this->newMediaFileSource($fileLocation);
        if ($title !== null) {
            $slugHeader = $title;
        } else {
            $slugHeader = $fileLocation;
        }
        
        // Set the slug header to tell the Google Documents server what the 
        // title of the document should be and what the file extension was 
        // for the original file.
        $fs->setSlug($slugHeader);

        // Set the mime type of the data.
        if ($mimeType === null) {
          $slugHeader =  $fs->getSlug();
          $filenameParts = explode('.', $slugHeader);
          $fileExtension = end($filenameParts);
          $mimeType = self::lookupMimeType($fileExtension);
        }
        
        // Set the mime type for the upload request.
        $fs->setContentType($mimeType);
        
        // Send the data to the server.
        return $this->insertDocument($fs, $uri);
    }

    /**
     * Inserts an entry to a given URI and returns the response as an Entry.
     *
     * @param mixed  $data The Zend_Gdata_Docs_DocumentListEntry or media 
     *         source to post. If it is a DocumentListEntry, the mediaSource
     *         should already have been set. If $data is a mediaSource, it 
     *         should have the correct slug header and mime type.
     * @param string $uri POST URI
     * @param string $className (optional) The class of entry to be returned. 
     *         The default is a 'Zend_Gdata_Docs_DocumentListEntry'.
     * @return Zend_Gdata_Docs_DocumentListEntry The entry returned by the 
     *     service after insertion.
     */
    public function insertDocument($data, $uri, 
        $className='Zend_Gdata_Docs_DocumentListEntry')
    {
        return $this->insertEntry($data, $uri, $className);
    }

}
PKpG[����%�%Gdata/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_Util
 */
require_once 'Zend/Gdata/App/Util.php';

/**
 * Provides a mechanism to build a query URL for Gdata services.
 * Queries are not defined for APP, but are provided by Gdata services
 * as an extension.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Query
{

    /**
     * Query parameters.
     *
     * @var array
     */
    protected $_params = array();

    /**
     * Default URL
     *
     * @var string
     */
    protected $_defaultFeedUri = null;

    /**
     * Base URL
     * TODO: Add setters and getters
     *
     * @var string
     */
    protected $_url = null;

    /**
     * Category for the query
     *
     * @var string
     */
    protected $_category = null;

    /**
     * Create Gdata_Query object
     */
    public function __construct($url = null)
    {
        $this->_url = $url;
    }

    /**
     * @return string querystring
     */
    public function getQueryString()
    {
        $queryArray = array();
        foreach ($this->_params as $name => $value) {
            if (substr($name, 0, 1) == '_') {
                continue;
            }
            $queryArray[] = urlencode($name) . '=' . urlencode($value);
        }
        if (count($queryArray) > 0) {
            return '?' . implode('&', $queryArray);
        } else {
            return '';
        }
    }

    /**
     *
     */
    public function resetParameters()
    {
        $this->_params = array();
    }

    /**
     * @return string url
     */
    public function getQueryUrl()
    {
        if ($this->_url == null) {
            $url = $this->_defaultFeedUri;
        } else {
            $url = $this->_url;
        }
        if ($this->getCategory() !== null) {
            $url .= '/-/' . $this->getCategory();
        }
        $url .= $this->getQueryString();
        return $url;
    }

    /**
     * @param string $name
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setParam($name, $value)
    {
        $this->_params[$name] = $value;
        return $this;
    }

    /**
     * @param string $name
     */
    public function getParam($name)
    {
        return $this->_params[$name];
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setAlt($value)
    {
        if ($value != null) {
            $this->_params['alt'] = $value;
        } else {
            unset($this->_params['alt']);
        }
        return $this;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setMaxResults($value)
    {
        if ($value != null) {
            $this->_params['max-results'] = $value;
        } else {
            unset($this->_params['max-results']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setQuery($value)
    {
        if ($value != null) {
            $this->_params['q'] = $value;
        } else {
            unset($this->_params['q']);
        }
        return $this;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setStartIndex($value)
    {
        if ($value != null) {
            $this->_params['start-index'] = $value;
        } else {
            unset($this->_params['start-index']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setUpdatedMax($value)
    {
        if ($value != null) {
            $this->_params['updated-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['updated-max']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setUpdatedMin($value)
    {
        if ($value != null) {
            $this->_params['updated-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['updated-min']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setPublishedMax($value)
    {
        if ($value !== null) {
            $this->_params['published-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['published-max']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setPublishedMin($value)
    {
        if ($value != null) {
            $this->_params['published-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['published-min']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setAuthor($value)
    {
        if ($value != null) {
            $this->_params['author'] = $value;
        } else {
            unset($this->_params['author']);
        }
        return $this;
    }

    /**
     * @return string rss or atom
     */
    public function getAlt()
    {
        if (array_key_exists('alt', $this->_params)) {
            return $this->_params['alt'];
        } else {
            return null;
        }
    }

    /**
     * @return int maxResults
     */
    public function getMaxResults()
    {
        if (array_key_exists('max-results', $this->_params)) {
            return intval($this->_params['max-results']);
        } else {
            return null;
        }
    }

    /**
     * @return string query
     */
    public function getQuery()
    {
        if (array_key_exists('q', $this->_params)) {
            return $this->_params['q'];
        } else {
            return null;
        }
    }

    /**
     * @return int startIndex
     */
    public function getStartIndex()
    {
        if (array_key_exists('start-index', $this->_params)) {
            return intval($this->_params['start-index']);
        } else {
            return null;
        }
    }

    /**
     * @return string updatedMax
     */
    public function getUpdatedMax()
    {
        if (array_key_exists('updated-max', $this->_params)) {
            return $this->_params['updated-max'];
        } else {
            return null;
        }
    }

    /**
     * @return string updatedMin
     */
    public function getUpdatedMin()
    {
        if (array_key_exists('updated-min', $this->_params)) {
            return $this->_params['updated-min'];
        } else {
            return null;
        }
    }

    /**
     * @return string publishedMax
     */
    public function getPublishedMax()
    {
        if (array_key_exists('published-max', $this->_params)) {
            return $this->_params['published-max'];
        } else {
            return null;
        }
    }

    /**
     * @return string publishedMin
     */
    public function getPublishedMin()
    {
        if (array_key_exists('published-min', $this->_params)) {
            return $this->_params['published-min'];
        } else {
            return null;
        }
    }

    /**
     * @return string author
     */
    public function getAuthor()
    {
        if (array_key_exists('author', $this->_params)) {
            return $this->_params['author'];
        } else {
            return null;
        }
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Query Provides a fluent interface
     */
    public function setCategory($value)
    {
        $this->_category = $value;
        return $this;
    }

    /*
     * @return string id
     */
    public function getCategory()
    {
        return $this->_category;
    }


    public function __get($name)
    {
        $method = 'get'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method));
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
        }
    }

    public function __set($name, $val)
    {
        $method = 'set'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method), $val);
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('Property ' . $name . '  does not exist');
        }
    }

}
PKpG[-J�{{Gdata/Exif/Extension/Time.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:time element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Time extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'time';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Time object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�NfwwGdata/Exif/Extension/Iso.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:iso element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Iso extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'iso';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Iso object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[;I�Gdata/Exif/Extension/FStop.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:fStop element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_FStop extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'fstop';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_FStop object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�,�Gdata/Exif/Extension/Model.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:model element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Model extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'model';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Model object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[l����!Gdata/Exif/Extension/Exposure.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:exposure element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Exposure extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'exposure';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Exposure object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[+#=���!Gdata/Exif/Extension/Distance.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:distance element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Distance extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'distance';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Distance object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[
�;�A�AGdata/Exif/Extension/Tags.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * @see Zend_Gdata_Exif_Extension_Distance
 */
require_once 'Zend/Gdata/Exif/Extension/Distance.php';

/**
 * @see Zend_Gdata_Exif_Extension_Exposure
 */
require_once 'Zend/Gdata/Exif/Extension/Exposure.php';

/**
 * @see Zend_Gdata_Exif_Extension_Flash
 */
require_once 'Zend/Gdata/Exif/Extension/Flash.php';

/**
 * @see Zend_Gdata_Exif_Extension_FocalLength
 */
require_once 'Zend/Gdata/Exif/Extension/FocalLength.php';

/**
 * @see Zend_Gdata_Exif_Extension_FStop
 */
require_once 'Zend/Gdata/Exif/Extension/FStop.php';

/**
 * @see Zend_Gdata_Exif_Extension_ImageUniqueId
 */
require_once 'Zend/Gdata/Exif/Extension/ImageUniqueId.php';

/**
 * @see Zend_Gdata_Exif_Extension_Iso
 */
require_once 'Zend/Gdata/Exif/Extension/Iso.php';

/**
 * @see Zend_Gdata_Exif_Extension_Make
 */
require_once 'Zend/Gdata/Exif/Extension/Make.php';

/**
 * @see Zend_Gdata_Exif_Extension_Model
 */
require_once 'Zend/Gdata/Exif/Extension/Model.php';

/**
 * @see Zend_Gdata_Exif_Extension_Time
 */
require_once 'Zend/Gdata/Exif/Extension/Time.php';

/**
 * Represents the exif:tags element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Tags extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'tags';

    /**
     * exif:distance value
     *
     * @var Zend_Gdata_Exif_Extension_Distance
     */
    protected $_distance = null;

    /**
     * exif:exposure value
     *
     * @var Zend_Gdata_Exif_Extension_Exposure
     */
    protected $_exposure = null;

    /**
     * exif:flash value
     *
     * @var Zend_Gdata_Exif_Extension_Flash
     */
    protected $_flash = null;

    /**
     * exif:focalLength value
     *
     * @var Zend_Gdata_Exif_Extension_FocalLength
     */
    protected $_focalLength = null;

    /**
     * exif:fStop value
     *
     * @var Zend_Gdata_Exif_Extension_FStop
     */
    protected $_fStop = null;

    /**
     * exif:imageUniqueID value
     *
     * @var Zend_Gdata_Exif_Extension_ImageUniqueId
     */
    protected $_imageUniqueId = null;

    /**
     * exif:iso value
     *
     * @var Zend_Gdata_Exif_Extension_Iso
     */
    protected $_iso = null;

    /**
     * exif:make value
     *
     * @var Zend_Gdata_Exif_Extension_Make
     */
    protected $_make = null;

    /**
     * exif:model value
     *
     * @var Zend_Gdata_Exif_Extension_Model
     */
    protected $_model = null;

    /**
     * exif:time value
     *
     * @var Zend_Gdata_Exif_Extension_Time
     */
    protected $_time = null;

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Tags object.
     *
     * @param Zend_Gdata_Exif_Extension_Distance $distance (optional) The exif:distance
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Exposure $exposure (optional) The exif:exposure
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Flash $flash (optional) The exif:flash
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_FocalLength$focalLength (optional) The exif:focallength
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_FStop $fStop (optional) The exif:fstop
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_ImageUniqueId $imageUniqueId (optional) The exif:imageUniqueID
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Iso $iso (optional) The exif:iso
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Make $make (optional) The exif:make
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Model $model (optional) The exif:model
     *          value to be set in the constructed object.
     * @param Zend_Gdata_Exif_Extension_Time $time (optional) The exif:time
     *          value to be set in the constructed object.
     */
    public function __construct($distance = null, $exposure = null,
            $flash = null, $focalLength = null, $fStop = null,
            $imageUniqueId = null, $iso = null, $make = null,
            $model = null, $time = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setDistance($distance);
        $this->setExposure($exposure);
        $this->setFlash($flash);
        $this->setFocalLength($focalLength);
        $this->setFStop($fStop);
        $this->setImageUniqueId($imageUniqueId);
        $this->setIso($iso);
        $this->setMake($make);
        $this->setModel($model);
        $this->setTime($time);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_distance !== null) {
            $element->appendChild($this->_distance->getDOM($element->ownerDocument));
        }
        if ($this->_exposure !== null) {
            $element->appendChild($this->_exposure->getDOM($element->ownerDocument));
        }
        if ($this->_flash !== null) {
            $element->appendChild($this->_flash->getDOM($element->ownerDocument));
        }
        if ($this->_focalLength !== null) {
            $element->appendChild($this->_focalLength->getDOM($element->ownerDocument));
        }
        if ($this->_fStop !== null) {
            $element->appendChild($this->_fStop->getDOM($element->ownerDocument));
        }
        if ($this->_imageUniqueId !== null) {
            $element->appendChild($this->_imageUniqueId->getDOM($element->ownerDocument));
        }
        if ($this->_iso !== null) {
            $element->appendChild($this->_iso->getDOM($element->ownerDocument));
        }
        if ($this->_make !== null) {
            $element->appendChild($this->_make->getDOM($element->ownerDocument));
        }
        if ($this->_model !== null) {
            $element->appendChild($this->_model->getDOM($element->ownerDocument));
        }
        if ($this->_time !== null) {
            $element->appendChild($this->_time->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('exif') . ':' . 'distance';
                $distance = new Zend_Gdata_Exif_Extension_Distance();
                $distance->transferFromDOM($child);
                $this->_distance = $distance;
                break;
            case $this->lookupNamespace('exif') . ':' . 'exposure';
                $exposure = new Zend_Gdata_Exif_Extension_Exposure();
                $exposure->transferFromDOM($child);
                $this->_exposure = $exposure;
                break;
            case $this->lookupNamespace('exif') . ':' . 'flash';
                $flash = new Zend_Gdata_Exif_Extension_Flash();
                $flash->transferFromDOM($child);
                $this->_flash = $flash;
                break;
            case $this->lookupNamespace('exif') . ':' . 'focallength';
                $focalLength = new Zend_Gdata_Exif_Extension_FocalLength();
                $focalLength->transferFromDOM($child);
                $this->_focalLength = $focalLength;
                break;
            case $this->lookupNamespace('exif') . ':' . 'fstop';
                $fStop = new Zend_Gdata_Exif_Extension_FStop();
                $fStop->transferFromDOM($child);
                $this->_fStop = $fStop;
                break;
            case $this->lookupNamespace('exif') . ':' . 'imageUniqueID';
                $imageUniqueId = new Zend_Gdata_Exif_Extension_ImageUniqueId();
                $imageUniqueId->transferFromDOM($child);
                $this->_imageUniqueId = $imageUniqueId;
                break;
            case $this->lookupNamespace('exif') . ':' . 'iso';
                $iso = new Zend_Gdata_Exif_Extension_Iso();
                $iso->transferFromDOM($child);
                $this->_iso = $iso;
                break;
            case $this->lookupNamespace('exif') . ':' . 'make';
                $make = new Zend_Gdata_Exif_Extension_Make();
                $make->transferFromDOM($child);
                $this->_make = $make;
                break;
            case $this->lookupNamespace('exif') . ':' . 'model';
                $model = new Zend_Gdata_Exif_Extension_Model();
                $model->transferFromDOM($child);
                $this->_model = $model;
                break;
            case $this->lookupNamespace('exif') . ':' . 'time';
                $time = new Zend_Gdata_Exif_Extension_Time();
                $time->transferFromDOM($child);
                $this->_time = $time;
                break;
        }
    }

    /**
     * Get the value for this element's distance attribute.
     *
     * @see setDistance
     * @return Zend_Gdata_Exif_Extension_Distance The requested attribute.
     */
    public function getDistance()
    {
        return $this->_distance;
    }

    /**
     * Set the value for this element's distance attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Distance $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setDistance($value)
    {
        $this->_distance = $value;
        return $this;
    }

    /**
     * Get the value for this element's exposure attribute.
     *
     * @see setExposure
     * @return Zend_Gdata_Exif_Extension_Exposure The requested attribute.
     */
    public function getExposure()
    {
        return $this->_exposure;
    }

    /**
     * Set the value for this element's exposure attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Exposure $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setExposure($value)
    {
        $this->_exposure = $value;
        return $this;
    }

    /**
     * Get the value for this element's flash attribute.
     *
     * @see setFlash
     * @return Zend_Gdata_Exif_Extension_Flash The requested attribute.
     */
    public function getFlash()
    {
        return $this->_flash;
    }

    /**
     * Set the value for this element's flash attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Flash $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setFlash($value)
    {
        $this->_flash = $value;
        return $this;
    }

    /**
     * Get the value for this element's name attribute.
     *
     * @see setFocalLength
     * @return Zend_Gdata_Exif_Extension_FocalLength The requested attribute.
     */
    public function getFocalLength()
    {
        return $this->_focalLength;
    }

    /**
     * Set the value for this element's focalLength attribute.
     *
     * @param Zend_Gdata_Exif_Extension_FocalLength $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setFocalLength($value)
    {
        $this->_focalLength = $value;
        return $this;
    }

    /**
     * Get the value for this element's fStop attribute.
     *
     * @see setFStop
     * @return Zend_Gdata_Exif_Extension_FStop The requested attribute.
     */
    public function getFStop()
    {
        return $this->_fStop;
    }

    /**
     * Set the value for this element's fStop attribute.
     *
     * @param Zend_Gdata_Exif_Extension_FStop $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setFStop($value)
    {
        $this->_fStop = $value;
        return $this;
    }

    /**
     * Get the value for this element's imageUniqueId attribute.
     *
     * @see setImageUniqueId
     * @return Zend_Gdata_Exif_Extension_ImageUniqueId The requested attribute.
     */
    public function getImageUniqueId()
    {
        return $this->_imageUniqueId;
    }

    /**
     * Set the value for this element's imageUniqueId attribute.
     *
     * @param Zend_Gdata_Exif_Extension_ImageUniqueId $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setImageUniqueId($value)
    {
        $this->_imageUniqueId = $value;
        return $this;
    }

    /**
     * Get the value for this element's iso attribute.
     *
     * @see setIso
     * @return Zend_Gdata_Exif_Extension_Iso The requested attribute.
     */
    public function getIso()
    {
        return $this->_iso;
    }

    /**
     * Set the value for this element's iso attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Iso $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setIso($value)
    {
        $this->_iso = $value;
        return $this;
    }
    /**
     * Get the value for this element's make attribute.
     *
     * @see setMake
     * @return Zend_Gdata_Exif_Extension_Make The requested attribute.
     */
    public function getMake()
    {
        return $this->_make;
    }

    /**
     * Set the value for this element's make attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Make $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setMake($value)
    {
        $this->_make = $value;
        return $this;
    }

    /**
     * Get the value for this element's model attribute.
     *
     * @see setModel
     * @return Zend_Gdata_Exif_Extension_Model The requested attribute.
     */
    public function getModel()
    {
        return $this->_model;
    }

    /**
     * Set the value for this element's model attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Model $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setModel($value)
    {
        $this->_model = $value;
        return $this;
    }

    /**
     * Get the value for this element's time attribute.
     *
     * @see setTime
     * @return Zend_Gdata_Exif_Extension_Time The requested attribute.
     */
    public function getTime()
    {
        return $this->_time;
    }

    /**
     * Set the value for this element's time attribute.
     *
     * @param Zend_Gdata_Exif_Extension_Time $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags Provides a fluent interface
     */
    public function setTime($value)
    {
        $this->_time = $value;
        return $this;
    }

}
PKpG[kK�{{Gdata/Exif/Extension/Make.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:make element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Make extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'make';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Make object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[sGdata/Exif/Extension/Flash.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:flash element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_Flash extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'flash';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_Flash object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�A\��&Gdata/Exif/Extension/ImageUniqueId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:imageUniqueId element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_ImageUniqueId extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'imageUniqueID';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_ImageUniqueId object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[5D0��$Gdata/Exif/Extension/FocalLength.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * Represents the exif:focalLength element used by the Gdata Exif extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Extension_FocalLength extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'exif';
    protected $_rootElement = 'focallength';

    /**
     * Constructs a new Zend_Gdata_Exif_Extension_FocalLength object.
     *
     * @param string $text (optional) The value to use for this element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�0`Gdata/Exif/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * @see Zend_Gdata_Exif_Extension_Tags
 */
require_once 'Zend/Gdata/Exif/Extension/Tags.php';

/**
 * An Atom entry containing EXIF metadata.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Entry extends Zend_Gdata_Entry
{
    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Exif_Entry';

    /**
     * The tags that belong to the Exif group.
     *
     * @var string
     */
    protected $_tags = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_tags != null) {
            $element->appendChild($this->_tags->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('exif') . ':' . 'tags':
            $tags = new Zend_Gdata_Exif_Extension_Tags();
            $tags->transferFromDOM($child);
            $this->_tags = $tags;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Retrieve the tags for this entry.
     *
     * @see setTags
     * @return Zend_Gdata_Exif_Extension_Tags The requested object
     *              or null if not set.
     */
    public function getTags()
    {
        return $this->_tags;
    }

    /**
     * Set the tags property for this entry. This property contains
     * various Exif data.
     *
     * This corresponds to the <exif:tags> property in the Google Data
     * protocol.
     *
     * @param Zend_Gdata_Exif_Extension_Tags $value The desired value
     *              this element, or null to unset.
     * @return Zend_Gdata_Exif_Entry Provides a fluent interface
     */
    public function setTags($value)
    {
        $this->_tags = $value;
        return $this;
    }

}
PKpG[l�����Gdata/Exif/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_eed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Exif
 */
require_once 'Zend/Gdata/Exif.php';

/**
 * @see Zend_Gdata_Exif_Entry
 */
require_once 'Zend/Gdata/Exif/Entry.php';

/**
 * Feed for Gdata EXIF data entries.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Exif
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Exif_Feed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Exif_Entry';

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Exif::$namespaces);
        parent::__construct($element);
    }

}
PKpG[�B�K��Gdata/Calendar.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_Calendar_EventFeed
 */
require_once 'Zend/Gdata/Calendar/EventFeed.php';

/**
 * @see Zend_Gdata_Calendar_EventEntry
 */
require_once 'Zend/Gdata/Calendar/EventEntry.php';

/**
 * @see Zend_Gdata_Calendar_ListFeed
 */
require_once 'Zend/Gdata/Calendar/ListFeed.php';

/**
 * @see Zend_Gdata_Calendar_ListEntry
 */
require_once 'Zend/Gdata/Calendar/ListEntry.php';

/**
 * Service class for interacting with the Google Calendar data API
 * @link http://code.google.com/apis/gdata/calendar.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar extends Zend_Gdata
{

    const CALENDAR_FEED_URI = 'http://www.google.com/calendar/feeds';
    const CALENDAR_EVENT_FEED_URI = 'http://www.google.com/calendar/feeds/default/private/full';
    const AUTH_SERVICE_NAME = 'cl';

    protected $_defaultPostUri = self::CALENDAR_EVENT_FEED_URI;

    /**
     * Namespaces used for Zend_Gdata_Calendar
     *
     * @var array
     */
    public static $namespaces = array(
        array('gCal', 'http://schemas.google.com/gCal/2005', 1, 0)
    );

    /**
     * Create Gdata_Calendar object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Calendar');
        $this->registerPackage('Zend_Gdata_Calendar_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
    }

    /**
     * Retreive feed object
     *
     * @param mixed $location The location for the feed, as a URL or Query
     * @return Zend_Gdata_Calendar_EventFeed
     */
    public function getCalendarEventFeed($location = null)
    {
        if ($location == null) {
            $uri = self::CALENDAR_EVENT_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Calendar_EventFeed');
    }

    /**
     * Retreive entry object
     *
     * @return Zend_Gdata_Calendar_EventEntry
     */
    public function getCalendarEventEntry($location = null)
    {
        if ($location == null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Calendar_EventEntry');
    }


    /**
     * Retrieve feed object
     *
     * @return Zend_Gdata_Calendar_ListFeed
     */
    public function getCalendarListFeed()
    {
        $uri = self::CALENDAR_FEED_URI . '/default';
        return parent::getFeed($uri,'Zend_Gdata_Calendar_ListFeed');
    }

    /**
     * Retreive entryobject
     *
     * @return Zend_Gdata_Calendar_ListEntry
     */
    public function getCalendarListEntry($location = null)
    {
        if ($location == null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Location must not be null');
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri,'Zend_Gdata_Calendar_ListEntry');
    }

    public function insertEvent($event, $uri=null)
    {
        if ($uri == null) {
            $uri = $this->_defaultPostUri;
        }
        $newEvent = $this->insertEntry($event, $uri, 'Zend_Gdata_Calendar_EventEntry');
        return $newEvent;
    }

}
PKpG[�t���%Gdata/DublinCore/Extension/Format.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * File format, physical medium, or dimensions of the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Format extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'format';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Format which
     * File format, physical medium, or dimensions of the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[w�Թ�&Gdata/DublinCore/Extension/Creator.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Entity primarily responsible for making the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Creator extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'creator';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Creator which
     * Entity primarily responsible for making the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[�q^��*Gdata/DublinCore/Extension/Description.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Account of the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Description extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'description';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Description which
     * Account of the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[J4\˿�(Gdata/DublinCore/Extension/Publisher.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Entity responsible for making the resource available
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Publisher extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'publisher';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Publisher which
     * Entity responsible for making the resource available
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[3H��)Gdata/DublinCore/Extension/Identifier.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * An unambiguous reference to the resource within a given context
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Identifier extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'identifier';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Identifier which
     * An unambiguous reference to the resource within a given context
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[-�j!{{&Gdata/DublinCore/Extension/Subject.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Topic of the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Subject extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'subject';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Subject which
     * Topic of the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[�M-��#Gdata/DublinCore/Extension/Date.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Point or period of time associated with an event in the lifecycle of the
 * resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Date extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'date';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Date which
     * Point or period of time associated with an event in the lifecycle of the
     * resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[D�EɄ�'Gdata/DublinCore/Extension/Language.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Language of the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Language extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'language';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Language which
     * Language of the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[xJ"�$Gdata/DublinCore/Extension/Title.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Name given to the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Title extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'title';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Title which
     * Name given to the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[�[��%Gdata/DublinCore/Extension/Rights.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Information about rights held in and over the resource
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore_Extension_Rights extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'dc';
    protected $_rootElement = 'rights';

    /**
     * Constructor for Zend_Gdata_DublinCore_Extension_Rights which
     * Information about rights held in and over the resource
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_DublinCore::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

}
PKpG[��22
Gdata/Geo.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * Service class for interacting with the services which use the
 * GeoRSS + GML extensions.
 * @link http://georss.org/
 * @link http://www.opengis.net/gml/
 * @link http://code.google.com/apis/picasaweb/reference.html#georss_reference
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Geo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Geo extends Zend_Gdata
{

    /**
     * Namespaces used for Zend_Gdata_Geo
     *
     * @var array
     */
    public static $namespaces = array(
        array('georss', 'http://www.georss.org/georss', 1, 0),
        array('gml', 'http://www.opengis.net/gml', 1, 0)
    );


    /**
     * Create Zend_Gdata_Geo object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google Apps servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Geo');
        $this->registerPackage('Zend_Gdata_Geo_Extension');
        parent::__construct($client, $applicationId);
    }

}
PKpG[��w#��Gdata/DublinCore.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * Service class for interacting with the services which use the
 * DublinCore extensions.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage DublinCore
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_DublinCore extends Zend_Gdata
{

    /**
     * Namespaces used for Zend_Gdata_DublinCore
     *
     * @var array
     */
    public static $namespaces = array(
        array('dc', 'http://purl.org/dc/terms', 1, 0)
    );

    /**
     * Create Zend_Gdata_DublinCore object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_DublinCore');
        $this->registerPackage('Zend_Gdata_DublinCore_Extension');
        parent::__construct($client, $applicationId);
    }

}
PKpG[�`B��Gdata/Media.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * Service class for interacting with the services which use the media extensions
 * @link http://code.google.com/apis/gdata/calendar.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Media extends Zend_Gdata
{

    /**
     * Namespaces used for Zend_Gdata_Photos
     *
     * @var array
     */
    public static $namespaces = array(
        array('media', 'http://search.yahoo.com/mrss/', 1, 0)
    );

    /**
     * Create Gdata_Media object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google Apps servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Media');
        $this->registerPackage('Zend_Gdata_Media_Extension');
        parent::__construct($client, $applicationId);
    }

}
PKpG[yiGdata/YouTube/CommentEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * The YouTube comments flavor of an Atom Entry 
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_CommentEntry extends Zend_Gdata_Entry
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_CommentEntry';

}
PKpG[!K-J�&�&&Gdata/YouTube/Extension/MediaGroup.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Extension_MediaGroup
 */
require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';

/**
 * @see Zend_Gdata_YouTube_Extension_MediaContent
 */
require_once 'Zend/Gdata/YouTube/Extension/MediaContent.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Duration
 */
require_once 'Zend/Gdata/YouTube/Extension/Duration.php';

/**
 * @see Zend_Gdata_YouTube_Extension_MediaRating
 */
require_once 'Zend/Gdata/YouTube/Extension/MediaRating.php';

/**
 * @see Zend_Gdata_YouTube_Extension_MediaCredit
 */
require_once 'Zend/Gdata/YouTube/Extension/MediaCredit.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Private
 */
require_once 'Zend/Gdata/YouTube/Extension/Private.php';

/**
 * @see Zend_Gdata_YouTube_Extension_VideoId
 */
require_once 'Zend/Gdata/YouTube/Extension/VideoId.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Uploaded
 */
require_once 'Zend/Gdata/YouTube/Extension/Uploaded.php';

/**
 * This class represents the media:group element of Media RSS.
 * It allows the grouping of media:content elements that are
 * different representations of the same content.  When it exists,
 * it is a child of an Entry (Atom) or Item (RSS).
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_MediaGroup extends Zend_Gdata_Media_Extension_MediaGroup
{

    protected $_rootElement = 'group';
    protected $_rootNamespace = 'media';

    /**
     * @var Zend_Gdata_YouTube_Extension_Duration
     */
    protected $_duration = null;

    /**
     * @var Zend_Gdata_YouTube_Extension_Private
     */
    protected $_private = null;

    /**
     * @var Zend_Gdata_YouTube_Extension_VideoId
     */
    protected $_videoid = null;

    /**
     * @var Zend_Gdata_YouTube_Extension_MediaRating
     */
    protected $_mediarating = null;

    /**
     * @var Zend_Gdata_YouTube_Extension_MediaCredit
     */
    protected $_mediacredit = null;

    /**
     * @var Zend_Gdata_YouTube_Extension_Uploaded
     */
    protected $_uploaded = null;

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_duration !== null) {
            $element->appendChild(
                $this->_duration->getDOM($element->ownerDocument));
        }
        if ($this->_private !== null) {
            $element->appendChild(
                $this->_private->getDOM($element->ownerDocument));
        }
        if ($this->_videoid != null) {
            $element->appendChild(
                $this->_videoid->getDOM($element->ownerDocument));
        }
        if ($this->_uploaded != null) {
            $element->appendChild(
                $this->_uploaded->getDOM($element->ownerDocument));
        }
        if ($this->_mediacredit != null) {
            $element->appendChild(
                $this->_mediacredit->getDOM($element->ownerDocument));
        }
        if ($this->_mediarating != null) {
            $element->appendChild(
                $this->_mediarating->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('media') . ':' . 'content':
                $content = new Zend_Gdata_YouTube_Extension_MediaContent();
                $content->transferFromDOM($child);
                $this->_content[] = $content;
                break;
            case $this->lookupNamespace('media') . ':' . 'rating':
                $mediarating = new Zend_Gdata_YouTube_Extension_MediaRating();
                $mediarating->transferFromDOM($child);
                $this->_mediarating = $mediarating;
                break;
            case $this->lookupNamespace('media') . ':' . 'credit':
                $mediacredit = new Zend_Gdata_YouTube_Extension_MediaCredit();
                $mediacredit->transferFromDOM($child);
                $this->_mediacredit = $mediacredit;
                break;
            case $this->lookupNamespace('yt') . ':' . 'duration':
                $duration = new Zend_Gdata_YouTube_Extension_Duration();
                $duration->transferFromDOM($child);
                $this->_duration = $duration;
                break;
            case $this->lookupNamespace('yt') . ':' . 'private':
                $private = new Zend_Gdata_YouTube_Extension_Private();
                $private->transferFromDOM($child);
                $this->_private = $private;
                break;
            case $this->lookupNamespace('yt') . ':' . 'videoid':
                $videoid = new Zend_Gdata_YouTube_Extension_VideoId();
                $videoid ->transferFromDOM($child);
                $this->_videoid = $videoid;
                break;
            case $this->lookupNamespace('yt') . ':' . 'uploaded':
                $uploaded = new Zend_Gdata_YouTube_Extension_Uploaded();
                $uploaded ->transferFromDOM($child);
                $this->_uploaded = $uploaded;
                break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Returns the duration value of this element
     *
     * @return Zend_Gdata_YouTube_Extension_Duration
     */
    public function getDuration()
    {
        return $this->_duration;
    }

    /**
     * Sets the duration value of this element
     *
     * @param Zend_Gdata_YouTube_Extension_Duration $value The duration value
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setDuration($value)
    {
        $this->_duration = $value;
        return $this;
    }

    /**
     * Returns the videoid value of this element
     *
     * @return Zend_Gdata_YouTube_Extension_VideoId
     */
    public function getVideoId()
    {
        return $this->_videoid;
    }

    /**
     * Sets the videoid value of this element
     *
     * @param Zend_Gdata_YouTube_Extension_VideoId $value The video id value
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setVideoId($value)
    {
        $this->_videoid = $value;
        return $this;
    }

    /**
     * Returns the yt:uploaded element
     *
     * @return Zend_Gdata_YouTube_Extension_Uploaded
     */
    public function getUploaded()
    {
        return $this->_uploaded;
    }

    /**
     * Sets the yt:uploaded element
     *
     * @param Zend_Gdata_YouTube_Extension_Uploaded $value The uploaded value
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setUploaded($value)
    {
        $this->_uploaded = $value;
        return $this;
    }

    /**
     * Returns the private value of this element
     *
     * @return Zend_Gdata_YouTube_Extension_Private
     */
    public function getPrivate()
    {
        return $this->_private;
    }

    /**
     * Sets the private value of this element
     *
     * @param Zend_Gdata_YouTube_Extension_Private $value The private value
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setPrivate($value)
    {
        $this->_private = $value;
        return $this;
    }

    /**
     * Returns the rating value of this element
     *
     * @return Zend_Gdata_YouTube_Extension_MediaRating
     */
    public function getMediaRating()
    {
        return $this->_mediarating;
    }

    /**
     * Sets the media:rating value of this element
     *
     * @param Zend_Gdata_YouTube_Extension_MediaRating $value The rating element
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setMediaRating($value)
    {
        $this->_mediarating = $value;
        return $this;
    }

    /**
     * Returns the media:credit value of this element
     *
     * @return Zend_Gdata_YouTube_Extension_MediaCredit
     */
    public function getMediaCredit()
    {
        return $this->_mediacredit;
    }

    /**
     * Sets the media:credit value of this element
     *
     * @param Zend_Gdata_YouTube_Extension_MediaCredit $value The credit element
     * @return Zend_Gdata_YouTube_Extension_MediaGroup Provides a fluent
     *         interface
     */
    public function setMediaCredit($value)
    {
        $this->_mediacredit = $value;
        return $this;
    }
}
PKpG[wj)��"Gdata/YouTube/Extension/Status.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:status element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Status extends Zend_Gdata_Extension
{

    protected $_rootElement = 'status';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG["9r�#Gdata/YouTube/Extension/Control.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Control
 */
require_once 'Zend/Gdata/App/Extension/Control.php';

/**
 * @see Zend_Gdata_YouTube_Extension_State
 */
require_once 'Zend/Gdata/YouTube/Extension/State.php';


/**
 * Specialized Control class for use with YouTube. Enables use of yt extension elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Control extends Zend_Gdata_App_Extension_Control
{

    protected $_state = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Control object.
     * @see Zend_Gdata_App_Extension_Control#__construct
     * @param Zend_Gdata_App_Extension_Draft $draft
     * @param Zend_Gdata_YouTube_Extension_State $state
     */
    public function __construct($draft = null, $state = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($draft);
        $this->_state = $state;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_state != null) {
            $element->appendChild($this->_state->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'state':
            $state = new Zend_Gdata_YouTube_Extension_State();
            $state->transferFromDOM($child);
            $this->_state = $state;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Get the value for this element's state attribute.
     *
     * @return Zend_Gdata_YouTube_Extension_State The state element.
     */
    public function getState()
    {
        return $this->_state;
    }

    /**
     * Set the value for this element's state attribute.
     *
     * @param Zend_Gdata_YouTube_Extension_State $value The desired value for this attribute.
     * @return Zend_YouTube_Extension_Control The element being modified.
     */
    public function setState($value)
    {
        $this->_state = $value;
        return $this;
    }

    /**
    * Get the value of this element's state attribute.
    *
    * @return string The state's text value
    */
    public function getStateValue()
    {
      return $this->getState()->getText();
    }

}
PKpG[&/P
!Gdata/YouTube/Extension/Token.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:token element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Token extends Zend_Gdata_App_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'token';

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Token object.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        return $element;
    }

}
PKpG[}0�V&&#Gdata/YouTube/Extension/NoEmbed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:noembed element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_NoEmbed extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'noembed';

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_VideoShare object.
     * @param bool $enabled(optional) The enabled value of the element.
     */
    public function __construct($enabled = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
    }

}
PKpG[�\��(Gdata/YouTube/Extension/Relationship.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:relationship element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Relationship extends Zend_Gdata_Extension
{

    protected $_rootElement = 'relationship';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�}ސ�'Gdata/YouTube/Extension/Description.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:description element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Description extends Zend_Gdata_Extension
{

    protected $_rootElement = 'description';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�-�>ww!Gdata/YouTube/Extension/State.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:state element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_State extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'state';
    protected $_name = null;
    protected $_reasonCode = null;
    protected $_helpUrl = null;

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_State object.
     *
     * @param string $explanation(optional) The explanation of this state
     * @param string $name(optional) The name value
     * @param string $reasonCode(optional) The reasonCode value
     * @param string $helpUrl(optional) The helpUrl value
     */
    public function __construct($explanation = null, $name = null,
                                $reasonCode = null, $helpUrl = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $explanation;
        $this->_name = $name;
        $this->_reasonCode = $reasonCode;
        $this->_helpUrl = $reasonCode;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_name !== null) {
            $element->setAttribute('name', $this->_name);
        }
        if ($this->_reasonCode !== null) {
            $element->setAttribute('reasonCode', $this->_reasonCode);
        }
        if ($this->_helpUrl !== null) {
            $element->setAttribute('helpUrl', $this->_helpUrl);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and valueare
     * stored in an array.
     * TODO: Convert attributes to proper types
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'name':
            $this->_name = $attribute->nodeValue;
            break;
        case 'reasonCode':
            $this->_reasonCode = $attribute->nodeValue;
            break;
        case 'helpUrl':
            $this->_helpUrl = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's name attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set the value for this element's name attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
     */
    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    /**
     * Get the value for this element's reasonCode attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getReasonCode()
    {
        return $this->_reasonCode;
    }

    /**
     * Set the value for this element's reasonCode attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
     */
    public function setReasonCode($value)
    {
        $this->_reasonCode = $value;
        return $this;
    }

    /**
     * Get the value for this element's helpUrl attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getHelpUrl()
    {
        return $this->_helpUrl;
    }

    /**
     * Set the value for this element's helpUrl attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_State The element being modified.
     */
    public function setHelpUrl($value)
    {
        $this->_helpUrl = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string
     */
    public function __toString()
    {
        return $this->_text;
    }

}
PKpG[}����&Gdata/YouTube/Extension/PlaylistId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:playlistId element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_PlaylistId extends Zend_Gdata_Extension
{

    protected $_rootElement = 'playlistId';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�7�M	M	$Gdata/YouTube/Extension/Position.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent a playlist item's position in the list (yt:position)
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Position extends Zend_Gdata_Extension
{

    protected $_rootElement = 'position';
    protected $_rootNamespace = 'yt';

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Position object.
     *
     * @param string $value (optional) The 1-based position in the playlist
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $value;
    }

    /**
     * Get the value for the position in the playlist
     *
     * @return int The 1-based position in the playlist
     */
    public function getValue()
    {
        return $this->_text;
    }

    /**
     * Set the value for the position in the playlist
     *
     * @param int $value The 1-based position in the playlist
     * @return Zend_Gdata_Extension_Visibility The element being modified
     */
    public function setValue($value)
    {
        $this->_text = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[�7�‡�$Gdata/YouTube/Extension/Uploaded.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:uploaded element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Uploaded extends Zend_Gdata_Extension
{

    protected $_rootElement = 'uploaded';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[��+h��%Gdata/YouTube/Extension/FirstName.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:firstName element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_FirstName extends Zend_Gdata_Extension
{

    protected $_rootElement = 'firstName';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[Sq�g��"Gdata/YouTube/Extension/Movies.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:movies element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Movies extends Zend_Gdata_Extension
{

    protected $_rootElement = 'movies';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[6^���"Gdata/YouTube/Extension/Gender.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:gender element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Gender extends Zend_Gdata_Extension
{

    protected $_rootElement = 'gender';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���n66 Gdata/YouTube/Extension/Link.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Link
 */
require_once 'Zend/Gdata/App/Extension/Link.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Token
 */
require_once 'Zend/Gdata/YouTube/Extension/Token.php';


/**
 * Specialized Link class for use with YouTube. Enables use of yt extension elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Link extends Zend_Gdata_App_Extension_Link
{

    protected $_token = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Link object.
     * @see Zend_Gdata_App_Extension_Link#__construct
     * @param Zend_Gdata_YouTube_Extension_Token $token
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null, $token = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
        $this->_token = $token;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_token != null) {
            $element->appendChild($this->_token->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'token':
            $token = new Zend_Gdata_YouTube_Extension_Token();
            $token->transferFromDOM($child);
            $this->_token = $token;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Get the value for this element's token attribute.
     *
     * @return Zend_Gdata_YouTube_Extension_Token The token element.
     */
    public function getToken()
    {
        return $this->_token;
    }

    /**
     * Set the value for this element's token attribute.
     *
     * @param Zend_Gdata_YouTube_Extension_Token $value The desired value for this attribute.
     * @return Zend_YouTube_Extension_Link The element being modified.
     */
    public function setToken($value)
    {
        $this->_token = $value;
        return $this;
    }

    /**
    * Get the value of this element's token attribute.
    *
    * @return string The token's text value
    */
    public function getTokenValue()
    {
      return $this->getToken()->getText();
    }

}
PKpG[�����#Gdata/YouTube/Extension/Company.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:company element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Company extends Zend_Gdata_Extension
{

    protected $_rootElement = 'company';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���f��%Gdata/YouTube/Extension/CountHint.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:countHint element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_CountHint extends Zend_Gdata_Extension
{

    protected $_rootElement = 'countHint';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[~�A��$Gdata/YouTube/Extension/Recorded.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:recorded element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Recorded extends Zend_Gdata_Extension
{

    protected $_rootElement = 'recorded';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�l��xxGdata/YouTube/Extension/Age.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:age element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Age extends Zend_Gdata_Extension
{

    protected $_rootElement = 'age';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�ñ	��'Gdata/YouTube/Extension/MediaRating.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the media:rating element specific to YouTube.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_MediaRating extends Zend_Gdata_Extension
{

    protected $_rootElement = 'rating';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_scheme = null;

    /**
     * @var string
     */
    protected $_country = null;

    /**
     * Constructs a new MediaRating element
     *
     * @param string $text
     * @param string $scheme
     * @param string $country
     */
    public function __construct($text = null, $scheme = null, $country = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_scheme = $scheme;
        $this->_country = $country;
        $this->_text = $text;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *         child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        if ($this->_country != null) {
            $element->setAttribute('country', $this->_country);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'scheme':
            $this->_scheme = $attribute->nodeValue;
            break;
        case 'country':
            $this->_country = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getCountry()
    {
        return $this->_country;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_YouTube_Extension_MediaRating Provides a fluent interface
     */
    public function setCountry($value)
    {
        $this->_country = $value;
        return $this;
    }


}
PKpG[�o���#Gdata/YouTube/Extension/AboutMe.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:aboutMe element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_AboutMe extends Zend_Gdata_Extension
{

    protected $_rootElement = 'aboutMe';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[����$Gdata/YouTube/Extension/Hometown.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:hometown element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Hometown extends Zend_Gdata_Extension
{

    protected $_rootElement = 'hometown';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�kL���'Gdata/YouTube/Extension/MediaCredit.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the YouTube specific media:credit element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Media
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_MediaCredit extends Zend_Gdata_Extension
{

    protected $_rootElement = 'credit';
    protected $_rootNamespace = 'media';

    /**
     * @var string
     */
    protected $_role = null;

    /**
     * @var string
     */
    protected $_scheme = null;

    /**
     * Represents the value of the yt:type attribute.
     *
     * Set to 'partner' if the uploader of this video is a YouTube
     * partner.
     *
     * @var string
     */
    protected $_yttype = null;

    /**
     * Creates an individual MediaCredit object.
     *
     * @param string $text
     * @param string $role
     * @param string $scheme
     */
    public function __construct($text = null, $role = null,  $scheme = null,
        $yttype = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Media::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_role = $role;
        $this->_scheme = $scheme;
        $this->_yttype = $yttype;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_role !== null) {
            $element->setAttribute('role', $this->_role);
        }
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        if ($this->_yttype !== null) {
            $element->setAttributeNS('http://gdata.youtube.com/schemas/2007',
                'yt:type', $this->_yttype);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
            case 'role':
                $this->_role = $attribute->nodeValue;
                break;
            case 'scheme':
                $this->_scheme = $attribute->nodeValue;
                break;
            case 'type':
                $this->_yttype = $attribute->nodeValue;
                break;
            default:
                parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getRole()
    {
        return $this->_role;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
     *         interface
     */
    public function setRole($value)
    {
        $this->_role = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
     *         interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

    /**
     * @return string
     */
    public function getYTtype()
    {
        return $this->_yttype;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Media_Extension_MediaCredit Provides a fluent
     *         interface
     */
    public function setYTtype($value)
    {
        $this->_yttype = $value;
        return $this;
    }

}PKpG[�;Jݿ�$Gdata/YouTube/Extension/Duration.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:duration element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Duration extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'duration';
    protected $_seconds = null;

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Duration object.
     * @param bool $seconds(optional) The seconds value of the element.
     */
    public function __construct($seconds = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_seconds = $seconds;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_seconds !== null) {
            $element->setAttribute('seconds', $this->_seconds);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and valueare
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'seconds':
            $this->_seconds = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's seconds attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getSeconds()
    {
        return $this->_seconds;
    }

    /**
     * Set the value for this element's seconds attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_Duration The element being modified.
     */
    public function setSeconds($value)
    {
        $this->_seconds = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string The duration in seconds
     */
    public function __toString()
    {
        return $this->_seconds;
    }

}
PKpG[
�!``(Gdata/YouTube/Extension/MediaContent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Extension_MediaContent
 */
require_once 'Zend/Gdata/Media/Extension/MediaContent.php';

/**
 * Represents the media:content element of Media RSS.
 * Represents media objects.  Multiple media objects representing
 * the same content can be represented using a
 * media:group (Zend_Gdata_Media_Extension_MediaGroup) element.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_MediaContent extends Zend_Gdata_Media_Extension_MediaContent
{
    protected $_rootElement = 'content';
    protected $_rootNamespace = 'media';

    /*
     * Format of the video
     * Optional.
     *
     * @var int
     */
    protected $_format = null;


    function __construct() {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_format!= null) {
            $element->setAttributeNS($this->lookupNamespace('yt'), 'yt:format', $this->_format);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        $absoluteAttrName = $attribute->namespaceURI . ':' . $attribute->localName;
        if ($absoluteAttrName == $this->lookupNamespace('yt') . ':' . 'format') {
            $this->_format = $attribute->nodeValue;
        } else {
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the format of the media
     * Optional.
     *
     * @return int  The format of the media
     */
    public function getFormat()
    {
        return $this->_format;
    }

    /**
     * Sets the format of the media
     *
     * @param int $value    Format of the media
     * @return Zend_Gdata_YouTube_Extension_MediaContent  Provides a fluent interface
     *
     */
    public function setFormat($value)
    {
        $this->_format = $value;
        return $this;
    }

}
PKpG[t� ���$Gdata/YouTube/Extension/Username.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:username element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Username extends Zend_Gdata_Extension
{

    protected $_rootElement = 'username';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[XJG��'Gdata/YouTube/Extension/ReleaseDate.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:releaseDate element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_ReleaseDate extends Zend_Gdata_Extension
{

    protected $_rootElement = 'releaseDate';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���~~!Gdata/YouTube/Extension/Music.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:music element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Music extends Zend_Gdata_Extension
{

    protected $_rootElement = 'music';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[��`��$Gdata/YouTube/Extension/LastName.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:lastName element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_LastName extends Zend_Gdata_Extension
{

    protected $_rootElement = 'lastName';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[6��^UU Gdata/YouTube/Extension/Racy.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:racy element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Racy extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'racy';
    protected $_state = null;

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Racy object.
     * @param bool $state(optional) The state value of the element.
     */
    public function __construct($state = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_state = $state;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_state !== null) {
            $element->setAttribute('state', $this->_state);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'state':
            $this->_state = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's state attribute.
     *
     * @return bool The value associated with this attribute.
     */
    public function getState()
    {
        return $this->_state;
    }

    /**
     * Set the value for this element's state attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_Racy The element being modified.
     */
    public function setState($value)
    {
        $this->_state = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->_state;
    }

}
PKpG[sE9���&Gdata/YouTube/Extension/Occupation.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:occupation element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Occupation extends Zend_Gdata_Extension
{

    protected $_rootElement = 'occupation';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[V餮��)Gdata/YouTube/Extension/PlaylistTitle.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:playlistTitle element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_PlaylistTitle extends Zend_Gdata_Extension
{

    protected $_rootElement = 'playlistTitle';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[͚1���'Gdata/YouTube/Extension/QueryString.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:queryString element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_QueryString extends Zend_Gdata_Extension
{

    protected $_rootElement = 'queryString';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�ԭ���$Gdata/YouTube/Extension/Location.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:location element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Location extends Zend_Gdata_Extension
{

    protected $_rootElement = 'location';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�J��	�	#Gdata/YouTube/Extension/Private.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:private element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Private extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'private';

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Private object.
     */
    public function __construct()
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and valueare
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        parent::takeAttributeFromDOM($attribute);
    }

}
PKpG[�Eѩ��"Gdata/YouTube/Extension/School.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:school element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_School extends Zend_Gdata_Extension
{

    protected $_rootElement = 'school';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�����&Gdata/YouTube/Extension/Statistics.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:statistics element used by the YouTube data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Statistics extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'yt';
    protected $_rootElement = 'statistics';
    protected $_viewCount = null;
    protected $_watchCount = null;

    /**
     * Constructs a new Zend_Gdata_YouTube_Extension_Statistics object.
     * @param string $viewCount(optional) The viewCount value
     * @param string $watchCount(optional) The watchCount value
     */
    public function __construct($viewCount = null, $watchCount = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_viewCount = $viewCount;
        $this->_watchCount = $watchCount;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_viewCount !== null) {
            $element->setAttribute('viewCount', $this->_viewCount);
        }
        if ($this->_watchCount !== null) {
            $element->setAttribute('watchCount', $this->_watchCount);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and valueare
     * stored in an array.
     * TODO: Convert attributes to proper types
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'viewCount':
            $this->_viewCount = $attribute->nodeValue;
            break;
        case 'watchCount':
            $this->_watchCount = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's viewCount attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getViewCount()
    {
        return $this->_viewCount;
    }

    /**
     * Set the value for this element's viewCount attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_Statistics The element being modified.
     */
    public function setViewCount($value)
    {
        $this->_viewCount = $value;
        return $this;
    }

    /**
     * Get the value for this element's watchCount attribute.
     *
     * @return int The value associated with this attribute.
     */
    public function getWatchCount()
    {
        return $this->_watchCount;
    }

    /**
     * Set the value for this element's watchCount attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_YouTube_Extension_Statistics The element being modified.
     */
    public function setWatchCount($value)
    {
        $this->_watchCount = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string
     */
    public function __toString()
    {
        return 'View Count=' . $this->_viewCount;
    }

}
PKpG[>��0��#Gdata/YouTube/Extension/VideoId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:videoid element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_VideoId extends Zend_Gdata_Extension
{

    protected $_rootElement = 'videoid';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[s'.���#Gdata/YouTube/Extension/Hobbies.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:hobbies element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Hobbies extends Zend_Gdata_Extension
{

    protected $_rootElement = 'hobbies';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�Y�~~!Gdata/YouTube/Extension/Books.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the yt:books element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_Extension_Books extends Zend_Gdata_Extension
{

    protected $_rootElement = 'books';
    protected $_rootNamespace = 'yt';

    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�TE�WW$Gdata/YouTube/PlaylistVideoEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_YouTube_VideoEntry
 */
require_once 'Zend/Gdata/YouTube/VideoEntry.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Position
 */
require_once 'Zend/Gdata/YouTube/Extension/Position.php';

/**
 * Represents the YouTube video playlist flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_PlaylistVideoEntry extends Zend_Gdata_YouTube_VideoEntry
{

    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistVideoEntry';

    /**
     * Position of the entry in the feed, as specified by the user
     *
     * @var Zend_Gdata_YouTube_Extension_Position
     */
    protected $_position = null;

    /**
     * Creates a Playlist video entry, representing an individual video
     * in a list of videos contained within a specific playlist
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_position !== null) {
            $element->appendChild($this->_position->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'position':
            $position = new Zend_Gdata_YouTube_Extension_Position();
            $position->transferFromDOM($child);
            $this->_position = $position;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }


    /**
     * Sets the array of embedded feeds related to the video
     *
     * @param Zend_Gdata_YouTube_Extension_Position $position
     *     The position of the entry in the feed, as specified by the user.
     * @return Zend_Gdata_YouTube_PlaylistVideoEntry Provides a fluent interface
     */
    public function setPosition($position = null)
    {
        $this->_position = $position;
        return $this;
    }

    /**
     * Returns the position of the entry in the feed, as specified by the user
     *
     * @return Zend_Gdata_YouTube_Extension_Position The position
     */
    public function getPosition()
    {
        return $this->_position;
    }

}
PKpG[�3HGdata/YouTube/CommentFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_YouTube_CommentEntry
 */
require_once 'Zend/Gdata/YouTube/CommentEntry.php';

/**
 * The YouTube comments flavor of an Atom Feed
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_CommentFeed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_CommentEntry';

    /**
     * Constructs a new YouTube Comment Feed object, to represent
     * a feed of comments for an individual video
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[���]��"Gdata/YouTube/SubscriptionFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * @see Zend_Gdata_YouTube_SubscriptionEntry
 */
require_once 'Zend/Gdata/YouTube/SubscriptionEntry.php';

/**
 * The YouTube video subscription list flavor of an Atom Feed with media support
 * Represents a list of individual subscriptions, where each contained entry is
 * a subscription.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_SubscriptionFeed extends Zend_Gdata_Media_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_SubscriptionEntry';

    /**
     * Creates a Subscription feed, representing a list of subscriptions,
     * usually associated with an individual user.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[c��Gdata/YouTube/VideoFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * @see Zend_Gdata_YouTube_VideoEntry
 */
require_once 'Zend/Gdata/YouTube/VideoEntry.php';

/**
 * The YouTube video flavor of an Atom Feed with media support
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_VideoFeed extends Zend_Gdata_Media_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_VideoEntry';

    /**
     * Creates a Video feed, representing a list of videos
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[P�X���Gdata/YouTube/ContactEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_YouTube_UserProfileEntry
 */
require_once 'Zend/Gdata/YouTube/UserProfileEntry.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Status
 */
require_once 'Zend/Gdata/YouTube/Extension/Status.php';

/**
 * The YouTube contacts flavor of an Atom Entry with media support
 * Represents a an individual contact
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_ContactEntry extends Zend_Gdata_YouTube_UserProfileEntry
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_ContactEntry';

    /**
     * Status of the user as a contact
     *
     * @var string
     */
    protected $_status = null;

    /**
     * Constructs a new Contact Entry object, to represent
     * an individual contact for a user
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_status != null) {
            $element->appendChild($this->_status->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'status':
            $status = new Zend_Gdata_YouTube_Extension_Status();
            $status->transferFromDOM($child);
            $this->_status = $status;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Sets the status
     *
     * @param Zend_Gdata_YouTube_Extension_Status $status The status
     * @return Zend_Gdata_YouTube_ContactEntry Provides a fluent interface
     */
    public function setStatus($status = null)
    {
        $this->_status = $status;
        return $this;
    }

    /**
     * Returns the status
     *
     * @return Zend_Gdata_YouTube_Extension_Status  The status
     */
    public function getStatus()
    {
        return $this->_status;
    }

}
PKpG[�u���"Gdata/YouTube/PlaylistListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * @see Zend_Gdata_YouTube_PlaylistListEntry
 */
require_once 'Zend/Gdata/YouTube/PlaylistListEntry.php';

/**
 * The YouTube video playlist flavor of an Atom Feed with media support
 * Represents a list of individual playlists, where each contained entry is
 * a playlist.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_PlaylistListFeed extends Zend_Gdata_Media_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistListEntry';

    /**
     * Creates a Playlist list feed, representing a list of playlists,
     * usually associated with an individual user.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[A?�A��#Gdata/YouTube/PlaylistVideoFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * @see Zend_Gdata_YouTube_PlaylistVideoEntry
 */
require_once 'Zend/Gdata/YouTube/PlaylistVideoEntry.php';

/**
 * The YouTube video playlist flavor of an Atom Feed with media support
 * Represents a list of videos contained in a playlist.  Each entry in this
 * feed represents an individual video.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_PlaylistVideoFeed extends Zend_Gdata_Media_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistVideoEntry';

    /**
     * Creates a Play Video feed, representing a list of videos contained
     * within a single playlist.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[�x���Gdata/YouTube/MediaEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media
 */
require_once 'Zend/Gdata/Media.php';

/**
 * @see Zend_Gdata_Media_Entry
 */
require_once 'Zend/Gdata/Media/Entry.php';

/**
 * @see Zend_Gdata_YouTube_Extension_MediaGroup
 */
require_once 'Zend/Gdata/YouTube/Extension/MediaGroup.php';

/**
 * Represents the YouTube flavor of a Gdata Media Entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_MediaEntry extends Zend_Gdata_Media_Entry
{

    protected $_entryClassName = 'Zend_Gdata_YouTube_MediaEntry';

    /**
     * media:group element
     *
     * @var Zend_Gdata_YouTube_Extension_MediaGroup
     */
    protected $_mediaGroup = null;

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('media') . ':' . 'group':
            $mediaGroup = new Zend_Gdata_YouTube_Extension_MediaGroup();
            $mediaGroup->transferFromDOM($child);
            $this->_mediaGroup = $mediaGroup;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

}
PKpG[vx���t�t"Gdata/YouTube/UserProfileEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Description
 */
require_once 'Zend/Gdata/YouTube/Extension/Description.php';

/**
 * @see Zend_Gdata_YouTube_Extension_AboutMe
 */
require_once 'Zend/Gdata/YouTube/Extension/AboutMe.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Age
 */
require_once 'Zend/Gdata/YouTube/Extension/Age.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Username
 */
require_once 'Zend/Gdata/YouTube/Extension/Username.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Books
 */
require_once 'Zend/Gdata/YouTube/Extension/Books.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Company
 */
require_once 'Zend/Gdata/YouTube/Extension/Company.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Hobbies
 */
require_once 'Zend/Gdata/YouTube/Extension/Hobbies.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Hometown
 */
require_once 'Zend/Gdata/YouTube/Extension/Hometown.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Location
 */
require_once 'Zend/Gdata/YouTube/Extension/Location.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Movies
 */
require_once 'Zend/Gdata/YouTube/Extension/Movies.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Music
 */
require_once 'Zend/Gdata/YouTube/Extension/Music.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Occupation
 */
require_once 'Zend/Gdata/YouTube/Extension/Occupation.php';

/**
 * @see Zend_Gdata_YouTube_Extension_School
 */
require_once 'Zend/Gdata/YouTube/Extension/School.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Gender
 */
require_once 'Zend/Gdata/YouTube/Extension/Gender.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Relationship
 */
require_once 'Zend/Gdata/YouTube/Extension/Relationship.php';

/**
 * @see Zend_Gdata_YouTube_Extension_FirstName
 */
require_once 'Zend/Gdata/YouTube/Extension/FirstName.php';

/**
 * @see Zend_Gdata_YouTube_Extension_LastName
 */
require_once 'Zend/Gdata/YouTube/Extension/LastName.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Statistics
 */
require_once 'Zend/Gdata/YouTube/Extension/Statistics.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaThumbnail
 */
require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';

/**
 * Represents the YouTube video playlist flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_UserProfileEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_YouTube_UserProfileEntry';

    /**
     * Nested feed links
     *
     * @var array
     */
    protected $_feedLink = array();

    /**
     * The username for this profile entry
     *
     * @var string
     */
    protected $_username = null;

    /**
     * The description of the user
     *
     * @var string
     */
    protected $_description = null;
    
    /**
     * The contents of the 'About Me' field.
     *
     * @var string
     */
    protected $_aboutMe = null;

    /**
     * The age of the user
     *
     * @var int
     */
    protected $_age = null;

    /**
     * Books of interest to the user
     *
     * @var string
     */
    protected $_books = null;

    /**
     * Company
     *
     * @var string
     */
    protected $_company = null;

    /**
     * Hobbies
     *
     * @var string
     */
    protected $_hobbies = null;

    /**
     * Hometown
     *
     * @var string
     */
    protected $_hometown = null;

    /**
     * Location
     *
     * @var string
     */
    protected $_location = null;

    /**
     * Movies
     *
     * @var string
     */
    protected $_movies = null;

    /**
     * Music
     *
     * @var string
     */
    protected $_music = null;

    /**
     * Occupation
     *
     * @var string
     */
    protected $_occupation = null;

    /**
     * School
     *
     * @var string
     */
    protected $_school = null;

    /**
     * Gender
     *
     * @var string
     */
    protected $_gender = null;

    /**
     * Relationship
     *
     * @var string
     */
    protected $_relationship = null;

    /**
     * First name
     *
     * @var string
     */
    protected $_firstName = null;
    
    /**
     * Last name
     *
     * @var string
     */
    protected $_lastName = null;
    
    /**
     * Statistics
     *
     * @var Zend_Gdata_YouTube_Extension_Statistics
     */
    protected $_statistics = null;

    /**
     * Thumbnail
     *
     * @var Zend_Gdata_Media_Extension_MediaThumbnail
     */
    protected $_thumbnail = null;

    /**
     * Creates a User Profile entry, representing an individual user
     * and their attributes.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_description != null) {
            $element->appendChild($this->_description->getDOM($element->ownerDocument));
        }
        if ($this->_aboutMe != null) {
            $element->appendChild($this->_aboutMe->getDOM($element->ownerDocument));
        }
        if ($this->_age != null) {
            $element->appendChild($this->_age->getDOM($element->ownerDocument));
        }
        if ($this->_username != null) {
            $element->appendChild($this->_username->getDOM($element->ownerDocument));
        }
        if ($this->_books != null) {
            $element->appendChild($this->_books->getDOM($element->ownerDocument));
        }
        if ($this->_company != null) {
            $element->appendChild($this->_company->getDOM($element->ownerDocument));
        }
        if ($this->_hobbies != null) {
            $element->appendChild($this->_hobbies->getDOM($element->ownerDocument));
        }
        if ($this->_hometown != null) {
            $element->appendChild($this->_hometown->getDOM($element->ownerDocument));
        }
        if ($this->_location != null) {
            $element->appendChild($this->_location->getDOM($element->ownerDocument));
        }
        if ($this->_movies != null) {
            $element->appendChild($this->_movies->getDOM($element->ownerDocument));
        }
        if ($this->_music != null) {
            $element->appendChild($this->_music->getDOM($element->ownerDocument));
        }
        if ($this->_occupation != null) {
            $element->appendChild($this->_occupation->getDOM($element->ownerDocument));
        }
        if ($this->_school != null) {
            $element->appendChild($this->_school->getDOM($element->ownerDocument));
        }
        if ($this->_gender != null) {
            $element->appendChild($this->_gender->getDOM($element->ownerDocument));
        }
        if ($this->_relationship != null) {
            $element->appendChild($this->_relationship->getDOM($element->ownerDocument));
        }
        if ($this->_firstName != null) {
            $element->appendChild($this->_firstName->getDOM($element->ownerDocument));
        }
        if ($this->_lastName != null) {
            $element->appendChild($this->_lastName->getDOM($element->ownerDocument));
        }
        if ($this->_statistics != null) {
            $element->appendChild($this->_statistics->getDOM($element->ownerDocument));
        }
        if ($this->_thumbnail != null) {
            $element->appendChild($this->_thumbnail->getDOM($element->ownerDocument));
        }
        if ($this->_feedLink != null) {
            foreach ($this->_feedLink as $feedLink) {
                $element->appendChild($feedLink->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'description':
            $description = new Zend_Gdata_YouTube_Extension_Description();
            $description->transferFromDOM($child);
            $this->_description = $description;
            break;
        case $this->lookupNamespace('yt') . ':' . 'aboutMe':
            $aboutMe = new Zend_Gdata_YouTube_Extension_AboutMe();
            $aboutMe->transferFromDOM($child);
            $this->_aboutMe = $aboutMe;
            break;
        case $this->lookupNamespace('yt') . ':' . 'age':
            $age = new Zend_Gdata_YouTube_Extension_Age();
            $age->transferFromDOM($child);
            $this->_age = $age;
            break;
        case $this->lookupNamespace('yt') . ':' . 'username':
            $username = new Zend_Gdata_YouTube_Extension_Username();
            $username->transferFromDOM($child);
            $this->_username = $username;
            break;
        case $this->lookupNamespace('yt') . ':' . 'books':
            $books = new Zend_Gdata_YouTube_Extension_Books();
            $books->transferFromDOM($child);
            $this->_books = $books;
            break;
        case $this->lookupNamespace('yt') . ':' . 'company':
            $company = new Zend_Gdata_YouTube_Extension_Company();
            $company->transferFromDOM($child);
            $this->_company = $company;
            break;
        case $this->lookupNamespace('yt') . ':' . 'hobbies':
            $hobbies = new Zend_Gdata_YouTube_Extension_Hobbies();
            $hobbies->transferFromDOM($child);
            $this->_hobbies = $hobbies;
            break;
        case $this->lookupNamespace('yt') . ':' . 'hometown':
            $hometown = new Zend_Gdata_YouTube_Extension_Hometown();
            $hometown->transferFromDOM($child);
            $this->_hometown = $hometown;
            break;
        case $this->lookupNamespace('yt') . ':' . 'location':
            $location = new Zend_Gdata_YouTube_Extension_Location();
            $location->transferFromDOM($child);
            $this->_location = $location;
            break;
        case $this->lookupNamespace('yt') . ':' . 'movies':
            $movies = new Zend_Gdata_YouTube_Extension_Movies();
            $movies->transferFromDOM($child);
            $this->_movies = $movies;
            break;
        case $this->lookupNamespace('yt') . ':' . 'music':
            $music = new Zend_Gdata_YouTube_Extension_Music();
            $music->transferFromDOM($child);
            $this->_music = $music;
            break;
        case $this->lookupNamespace('yt') . ':' . 'occupation':
            $occupation = new Zend_Gdata_YouTube_Extension_Occupation();
            $occupation->transferFromDOM($child);
            $this->_occupation = $occupation;
            break;
        case $this->lookupNamespace('yt') . ':' . 'school':
            $school = new Zend_Gdata_YouTube_Extension_School();
            $school->transferFromDOM($child);
            $this->_school = $school;
            break;
        case $this->lookupNamespace('yt') . ':' . 'gender':
            $gender = new Zend_Gdata_YouTube_Extension_Gender();
            $gender->transferFromDOM($child);
            $this->_gender = $gender;
            break;
        case $this->lookupNamespace('yt') . ':' . 'relationship':
            $relationship = new Zend_Gdata_YouTube_Extension_Relationship();
            $relationship->transferFromDOM($child);
            $this->_relationship = $relationship;
            break;
        case $this->lookupNamespace('yt') . ':' . 'firstName':
            $firstName = new Zend_Gdata_YouTube_Extension_FirstName();
            $firstName->transferFromDOM($child);
            $this->_firstName = $firstName;
            break;
        case $this->lookupNamespace('yt') . ':' . 'lastName':
            $lastName = new Zend_Gdata_YouTube_Extension_LastName();
            $lastName->transferFromDOM($child);
            $this->_lastName = $lastName;
            break;
        case $this->lookupNamespace('yt') . ':' . 'statistics':
            $statistics = new Zend_Gdata_YouTube_Extension_Statistics();
            $statistics->transferFromDOM($child);
            $this->_statistics = $statistics;
            break;
        case $this->lookupNamespace('media') . ':' . 'thumbnail':
            $thumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
            $thumbnail->transferFromDOM($child);
            $this->_thumbnail = $thumbnail;
            break;
        case $this->lookupNamespace('gd') . ':' . 'feedLink':
            $feedLink = new Zend_Gdata_Extension_FeedLink();
            $feedLink->transferFromDOM($child);
            $this->_feedLink[] = $feedLink;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Sets the content of the 'about me' field.
     *
     * @param Zend_Gdata_YouTube_Extension_AboutMe $aboutMe The 'about me'
     *        information.
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setAboutMe($aboutMe = null)
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The setAboutMe ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            $this->_aboutMe = $aboutMe;
            return $this;
        }
    }

    /**
     * Returns the contents of the 'about me' field.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_AboutMe  The 'about me' information
     */
    public function getAboutMe()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getAboutMe ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_aboutMe;
        }
    }

    /**
     * Sets the content of the 'first name' field.
     *
     * @param Zend_Gdata_YouTube_Extension_FirstName $firstName The first name
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setFirstName($firstName = null)
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The setFirstName ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            $this->_firstName = $firstName;
            return $this;
        }
    }

    /**
     * Returns the first name
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_FirstName  The first name
     */
    public function getFirstName()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getFirstName ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_firstName;
        }
    }

    /**
     * Sets the content of the 'last name' field.
     *
     * @param Zend_Gdata_YouTube_Extension_LastName $lastName The last name
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setLastName($lastName = null)
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The setLastName ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            $this->_lastName = $lastName;
            return $this;
        }
    }

    /**
     * Returns the last name
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_LastName  The last name
     */
    public function getLastName()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getLastName ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_lastName;
        }
    }

    /**
     * Returns the statistics
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_Statistics  The profile statistics
     */
    public function getStatistics()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getStatistics ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_statistics;
        }
    }
    
    /**
     * Returns the thumbnail
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_Media_Extension_MediaThumbnail The profile thumbnail
     */
    public function getThumbnail()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getThumbnail ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_thumbnail;
        }
    }

    /**
     * Sets the age
     *
     * @param Zend_Gdata_YouTube_Extension_Age $age The age
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setAge($age = null)
    {
        $this->_age = $age;
        return $this;
    }

    /**
     * Returns the age
     *
     * @return Zend_Gdata_YouTube_Extension_Age  The age
     */
    public function getAge()
    {
        return $this->_age;
    }

    /**
     * Sets the username
     *
     * @param Zend_Gdata_YouTube_Extension_Username $username The username
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setUsername($username = null)
    {
        $this->_username = $username;
        return $this;
    }

    /**
     * Returns the username
     *
     * @return Zend_Gdata_YouTube_Extension_Username  The username
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Sets the books
     *
     * @param Zend_Gdata_YouTube_Extension_Books $books The books
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setBooks($books = null)
    {
        $this->_books = $books;
        return $this;
    }

    /**
     * Returns the books
     *
     * @return Zend_Gdata_YouTube_Extension_Books  The books
     */
    public function getBooks()
    {
        return $this->_books;
    }

    /**
     * Sets the company
     *
     * @param Zend_Gdata_YouTube_Extension_Company $company The company
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setCompany($company = null)
    {
        $this->_company = $company;
        return $this;
    }

    /**
     * Returns the company
     *
     * @return Zend_Gdata_YouTube_Extension_Company  The company
     */
    public function getCompany()
    {
        return $this->_company;
    }

    /**
     * Sets the hobbies
     *
     * @param Zend_Gdata_YouTube_Extension_Hobbies $hobbies The hobbies
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setHobbies($hobbies = null)
    {
        $this->_hobbies = $hobbies;
        return $this;
    }

    /**
     * Returns the hobbies
     *
     * @return Zend_Gdata_YouTube_Extension_Hobbies  The hobbies
     */
    public function getHobbies()
    {
        return $this->_hobbies;
    }

    /**
     * Sets the hometown
     *
     * @param Zend_Gdata_YouTube_Extension_Hometown $hometown The hometown
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setHometown($hometown = null)
    {
        $this->_hometown = $hometown;
        return $this;
    }

    /**
     * Returns the hometown
     *
     * @return Zend_Gdata_YouTube_Extension_Hometown  The hometown
     */
    public function getHometown()
    {
        return $this->_hometown;
    }

    /**
     * Sets the location
     *
     * @param Zend_Gdata_YouTube_Extension_Location $location The location
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setLocation($location = null)
    {
        $this->_location = $location;
        return $this;
    }

    /**
     * Returns the location
     *
     * @return Zend_Gdata_YouTube_Extension_Location  The location
     */
    public function getLocation()
    {
        return $this->_location;
    }

    /**
     * Sets the movies
     *
     * @param Zend_Gdata_YouTube_Extension_Movies $movies The movies
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setMovies($movies = null)
    {
        $this->_movies = $movies;
        return $this;
    }

    /**
     * Returns the movies
     *
     * @return Zend_Gdata_YouTube_Extension_Movies  The movies
     */
    public function getMovies()
    {
        return $this->_movies;
    }

    /**
     * Sets the music
     *
     * @param Zend_Gdata_YouTube_Extension_Music $music The music
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setMusic($music = null)
    {
        $this->_music = $music;
        return $this;
    }

    /**
     * Returns the music
     *
     * @return Zend_Gdata_YouTube_Extension_Music  The music
     */
    public function getMusic()
    {
        return $this->_music;
    }

    /**
     * Sets the occupation
     *
     * @param Zend_Gdata_YouTube_Extension_Occupation $occupation The occupation
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setOccupation($occupation = null)
    {
        $this->_occupation = $occupation;
        return $this;
    }

    /**
     * Returns the occupation
     *
     * @return Zend_Gdata_YouTube_Extension_Occupation  The occupation
     */
    public function getOccupation()
    {
        return $this->_occupation;
    }

    /**
     * Sets the school
     *
     * @param Zend_Gdata_YouTube_Extension_School $school The school
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setSchool($school = null)
    {
        $this->_school = $school;
        return $this;
    }

    /**
     * Returns the school
     *
     * @return Zend_Gdata_YouTube_Extension_School  The school
     */
    public function getSchool()
    {
        return $this->_school;
    }

    /**
     * Sets the gender
     *
     * @param Zend_Gdata_YouTube_Extension_Gender $gender The gender
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setGender($gender = null)
    {
        $this->_gender = $gender;
        return $this;
    }

    /**
     * Returns the gender
     *
     * @return Zend_Gdata_YouTube_Extension_Gender  The gender
     */
    public function getGender()
    {
        return $this->_gender;
    }

    /**
     * Sets the relationship
     *
     * @param Zend_Gdata_YouTube_Extension_Relationship $relationship The relationship
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setRelationship($relationship = null)
    {
        $this->_relationship = $relationship;
        return $this;
    }

    /**
     * Returns the relationship
     *
     * @return Zend_Gdata_YouTube_Extension_Relationship  The relationship
     */
    public function getRelationship()
    {
        return $this->_relationship;
    }

    /**
     * Sets the array of embedded feeds related to the video
     *
     * @param array $feedLink The array of embedded feeds relating to the video
     * @return Zend_Gdata_YouTube_UserProfileEntry Provides a fluent interface
     */
    public function setFeedLink($feedLink = null)
    {
        $this->_feedLink = $feedLink;
        return $this;
    }

    /**
     * Get the feed link property for this entry.
     *
     * @see setFeedLink
     * @param string $rel (optional) The rel value of the link to be found.
     *          If null, the array of links is returned.
     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
     *          object corresponding to the requested rel value is returned
     *          if found, or null if the requested value is not found. If
     *          $rel is null or not specified, an array of all available
     *          feed links for this entry is returned, or null if no feed
     *          links are set.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }

    /**
     * Returns the URL in the gd:feedLink with the provided rel value
     *
     * @param string $rel The rel value to find
     * @return mixed Either the URL as a string or null if a feedLink wasn't
     *     found with the provided rel value
     */
    public function getFeedLinkHref($rel)
    {
        $feedLink = $this->getFeedLink($rel);
        if ($feedLink !== null) {
            return $feedLink->href;
        } else {
            return null;
        }
    }

    /**
     * Returns the URL of the playlist list feed
     *
     * @return string The URL of the playlist video feed
     */
    public function getPlaylistListFeedUrl()
    {
        return getFeedLinkHref(Zend_Gdata_YouTube::USER_PLAYLISTS_REL);
    }

    /**
     * Returns the URL of the uploads feed
     *
     * @return string The URL of the uploads video feed
     */
    public function getUploadsFeedUrl()
    {
        return getFeedLinkHref(Zend_Gdata_YouTube::USER_UPLOADS_REL);
    }

    /**
     * Returns the URL of the subscriptions feed
     *
     * @return string The URL of the subscriptions feed
     */
    public function getSubscriptionsFeedUrl()
    {
        return getFeedLinkHref(Zend_Gdata_YouTube::USER_SUBSCRIPTIONS_REL);
    }

    /**
     * Returns the URL of the contacts feed
     *
     * @return string The URL of the contacts feed
     */
    public function getContactsFeedUrl()
    {
        return getFeedLinkHref(Zend_Gdata_YouTube::USER_CONTACTS_REL);
    }

    /**
     * Returns the URL of the favorites feed
     *
     * @return string The URL of the favorites feed
     */
    public function getFavoritesFeedUrl()
    {
        return getFeedLinkHref(Zend_Gdata_YouTube::USER_FAVORITES_REL);
    }

}
PKpG[fݭ��B�BGdata/YouTube/VideoQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_YouTube
 */
require_once('Zend/Gdata/YouTube.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for YouTube videos
 *
 * @link http://code.google.com/apis/youtube/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_VideoQuery extends Zend_Gdata_Query
{

    /**
     * Create Gdata_YouTube_VideoQuery object
     */
    public function __construct($url = null)
    {
        parent::__construct($url);
    }

    /**
     * Sets the type of feed this query should be used to search
     *
     * @param string $feedType The type of feed
     * @param string $videoId The ID of the video associated with this query
     * @param string $entry The ID of the entry associated with this query
     */
    public function setFeedType($feedType, $videoId = null, $entry = null)
    {
        switch ($feedType) {
        case 'top rated':
            $this->_url = Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI;
            break;
        case 'most viewed':
            $this->_url = Zend_Gdata_YouTube::STANDARD_MOST_VIEWED_URI;
            break;
        case 'recently featured':
            $this->_url = Zend_Gdata_YouTube::STANDARD_RECENTLY_FEATURED_URI;
            break;
        case 'mobile':
            $this->_url = Zend_Gdata_YouTube::STANDARD_WATCH_ON_MOBILE_URI;
            break;
        case 'related':
            if ($videoId === null) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                    'Video ID must be set for feed of type: ' . $feedType);
            } else {
                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId .
                    '/related';
            }
            break;
        case 'responses':
            if ($videoId === null) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_Exception(
                    'Video ID must be set for feed of type: ' . $feedType);
            } else {
                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' . $videoId .
                    'responses';
            }
            break;
        case 'comments':
            if ($videoId === null) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_Exception(
                    'Video ID must be set for feed of type: ' . $feedType);
            } else {
                $this->_url = Zend_Gdata_YouTube::VIDEO_URI . '/' .
                    $videoId . 'comments';
                if ($entry !== null) {
                    $this->_url .= '/' . $entry;
                }
            }
            break;
        default:
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('Unknown feed type');
            break;
        }
    }

    /**
     * Sets the location parameter for the query
     *
     * @param string $value
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setLocation($value)
    {
        switch($value) {
            case null:
                unset($this->_params['location']);
            default:
                $parameters = explode(',', $value);
                if (count($parameters) != 2) {
                    require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                    throw new Zend_Gdata_App_InvalidArgumentException(
                        'You must provide 2 coordinates to the location ' .
                        'URL parameter');
                }

                foreach($parameters as $param) {
                    $temp = trim($param);
                    // strip off the optional exclamation mark for numeric check
                    if (substr($temp, -1) == '!') {
                        $temp = substr($temp, -1);
                    }
                    if (!is_numeric($temp)) {
                        require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                        throw new Zend_Gdata_App_InvalidArgumentException(
                            'Value provided to location parameter must' .
                            ' be in the form of two coordinates');
                    }
                }
                $this->_params['location'] = $value;
        }
    }

    /**
     * Get the value of the location parameter
     *
     * @return string|null Return the location if it exists, null otherwise.
     */
    public function getLocation()
    {
        if (array_key_exists('location', $this->_params)) {
            return $this->_params['location'];
        } else {
            return null;
        }
    }


    /**
     * Sets the location-radius parameter for the query
     *
     * @param string $value
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setLocationRadius($value)
    {
        switch($value) {
        	case null:
                unset($this->_params['location-radius']);
            default:
                $this->_params['location-radius'] = $value;
        }
    }

    /**
     * Get the value of the location-radius parameter
     *
     * @return string|null Return the location-radius if it exists,
     * null otherwise.
     */
    public function getLocationRadius()
    {
        if (array_key_exists('location-radius', $this->_params)) {
            return $this->_params['location-radius'];
        } else {
            return null;
        }
    }

    /**
     * Sets the time period over which this query should apply
     *
     * @param string $value
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setTime($value = null)
    {
        switch ($value) {
            case 'today':
                $this->_params['time'] = 'today';
                break;
            case 'this_week':
                $this->_params['time'] = 'this_week';
                break;
            case 'this_month':
                $this->_params['time'] = 'this_month';
                break;
            case 'all_time':
                $this->_params['time'] = 'all_time';
                break;
            case null:
                unset($this->_params['time']);
            default:
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                    'Unknown time value');
                break;
        }
        return $this;
    }

    /**
     * Sets the value of the uploader parameter
     *
     * @param string $value The value of the uploader parameter. Currently this
     *        can only be set to the value of 'partner'.
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setUploader($value = null)
    {
        switch ($value) {
            case 'partner':
                $this->_params['uploader'] = 'partner';
                break;
            case null:
                unset($this->_params['uploader']);
                break;
            default:
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                    'Unknown value for uploader');
        }
        return $this;
    }

    /**
     * Sets the formatted video query (vq) URL param value
     *
     * @param string $value
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setVideoQuery($value = null)
    {
        if ($value != null) {
            $this->_params['vq'] = $value;
        } else {
            unset($this->_params['vq']);
        }
        return $this;
    }

    /**
     * Sets the param to return videos of a specific format
     *
     * @param string $value
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setFormat($value = null)
    {
        if ($value != null) {
            $this->_params['format'] = $value;
        } else {
            unset($this->_params['format']);
        }
        return $this;
    }

    /**
     * Sets whether or not to include racy videos in the search results
     *
     * @param string $value
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setRacy($value = null)
    {
        switch ($value) {
            case 'include':
                $this->_params['racy'] = $value;
                break;
            case 'exclude':
                $this->_params['racy'] = $value;
                break;
            case null:
                unset($this->_params['racy']);
                break;
        }
        return $this;
    }

    /**
     * Whether or not to include racy videos in the search results
     *
     * @return string|null The value of racy if it exists, null otherwise.
     */
    public function getRacy()
    {
        if (array_key_exists('racy', $this->_params)) {
            return $this->_params['racy'];
        } else {
            return null;
        }
    }

    /**
     * Set the safeSearch parameter
     *
     * @param string $value The value of the parameter, currently only 'none',
     *        'moderate' or 'strict' are allowed values.
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_YouTube_VideoQuery Provides a fluent interface
     */
    public function setSafeSearch($value)
    {
    	switch ($value) {
            case 'none':
                $this->_params['safeSearch'] = 'none';
                break;
    		case 'moderate':
                $this->_params['safeSearch'] = 'moderate';
                break;
            case 'strict':
                $this->_params['safeSearch'] = 'strict';
                break;
            case null:
                unset($this->_params['safeSearch']);
            default:
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                    'The safeSearch parameter only supports the values '.
                    '\'none\', \'moderate\' or \'strict\'.');
    	}
    }

    /**
     * Return the value of the safeSearch parameter
     *
     * @return string|null The value of the safeSearch parameter if it has been
     *         set, null otherwise.
     */
    public function getSafeSearch()
    {
    	if (array_key_exists('safeSearch', $this->_params)) {
    		return $this->_params['safeSearch'];
    	}
        return $this;
    }

    /**
     * Set the value of the orderby parameter
     *
     * @param string $value
     * @return Zend_Gdata_YouTube_Query Provides a fluent interface
     */
    public function setOrderBy($value)
    {
        if ($value != null) {
            $this->_params['orderby'] = $value;
        } else {
            unset($this->_params['orderby']);
        }
        return $this;
    }

    /**
     * Return the value of the format parameter
     *
     * @return string|null The value of format if it exists, null otherwise.
     */
    public function getFormat()
    {
        if (array_key_exists('format', $this->_params)) {
            return $this->_params['format'];
        } else {
            return null;
        }
    }

    /**
     * Return the value of the video query that has been set
     *
     * @return string|null The value of the video query if it exists,
     *         null otherwise.
     */
    public function getVideoQuery()
    {
        if (array_key_exists('vq', $this->_params)) {
            return $this->_params['vq'];
        } else {
            return null;
        }
    }

    /**
     * Return the value of the time parameter
     *
     * @return string|null The time parameter if it exists, null otherwise.
     */
    public function getTime()
    {
        if (array_key_exists('time', $this->_params)) {
            return $this->_params['time'];
        } else {
            return null;
        }
    }

    /**
     * Return the value of the orderby parameter if it exists
     *
     * @return string|null The value of orderby if it exists, null otherwise.
     */
    public function getOrderBy()
    {
        if (array_key_exists('orderby', $this->_params)) {
            return $this->_params['orderby'];
        } else {
            return null;
        }
    }

    /**
     * Generate the query string from the URL parameters, optionally modifying
     * them based on protocol version.
     *
     * @param integer $majorProtocolVersion The major protocol version
     * @param integer $minorProtocolVersion The minor protocol version
     * @throws Zend_Gdata_App_VersionException
     * @return string querystring
     */
    public function getQueryString($majorProtocolVersion = null,
        $minorProtocolVersion = null)
    {
        $queryArray = array();

        foreach ($this->_params as $name => $value) {
            if (substr($name, 0, 1) == '_') {
                continue;
            }

            switch($name) {
                case 'location-radius':
                    if ($majorProtocolVersion == 1) {
                        require_once 'Zend/Gdata/App/VersionException.php';
                        throw new Zend_Gdata_App_VersionException("The $name " .
                            "parameter is only supported in version 2.");
                    }
                    break;

            	case 'racy':
                    if ($majorProtocolVersion == 2) {
                        require_once 'Zend/Gdata/App/VersionException.php';
                        throw new Zend_Gdata_App_VersionException("The $name " .
                            "parameter is not supported in version 2. " .
                            "Please use 'safeSearch'.");
                    }
                    break;

                case 'safeSearch':
                    if ($majorProtocolVersion == 1) {
                        require_once 'Zend/Gdata/App/VersionException.php';
                        throw new Zend_Gdata_App_VersionException("The $name " .
                            "parameter is only supported in version 2. " .
                            "Please use 'racy'.");
                    }
                    break;

                case 'uploader':
                    if ($majorProtocolVersion == 1) {
                        require_once 'Zend/Gdata/App/VersionException.php';
                        throw new Zend_Gdata_App_VersionException("The $name " .
                            "parameter is only supported in version 2.");
                    }
                    break;

                case 'vq':
                    if ($majorProtocolVersion == 2) {
                        $name = 'q';
                    }
                    break;
            }

            $queryArray[] = urlencode($name) . '=' . urlencode($value);

        }
        if (count($queryArray) > 0) {
            return '?' . implode('&', $queryArray);
        } else {
            return '';
        }
    }

    /**
     * Returns the generated full query URL, optionally modifying it based on
     * the protocol version.
     *
     * @param integer $majorProtocolVersion The major protocol version
     * @param integer $minorProtocolVersion The minor protocol version
     * @return string The URL
     */
    public function getQueryUrl($majorProtocolVersion = null,
        $minorProtocolVersion = null)
    {
        if (isset($this->_url)) {
            $url = $this->_url;
        } else {
            $url = Zend_Gdata_YouTube::VIDEO_URI;
        }
        if ($this->getCategory() !== null) {
            $url .= '/-/' . $this->getCategory();
        }
        $url = $url . $this->getQueryString($majorProtocolVersion,
            $minorProtocolVersion);
        return $url;
    }

}
PKpG[�P16�9�9#Gdata/YouTube/SubscriptionEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Description
 */
require_once 'Zend/Gdata/YouTube/Extension/Description.php';

/**
 * @see Zend_Gdata_YouTube_Extension_PlaylistTitle
 */
require_once 'Zend/Gdata/YouTube/Extension/PlaylistTitle.php';

/**
 * @see Zend_Gdata_YouTube_Extension_PlaylistId
 */
require_once 'Zend/Gdata/YouTube/Extension/PlaylistId.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaThumbnail
 */
require_once 'Zend/Gdata/Media/Extension/MediaThumbnail.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Username
 */
require_once 'Zend/Gdata/YouTube/Extension/Username.php';

/**
 * @see Zend_Gdata_YouTube_Extension_CountHint
 */
require_once 'Zend/Gdata/YouTube/Extension/CountHint.php';

/**
 * @see Zend_Gdata_YouTube_Extension_QueryString
 */
require_once 'Zend/Gdata/YouTube/Extension/QueryString.php';

/**
 * Represents the YouTube video subscription flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_SubscriptionEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_YouTube_SubscriptionEntry';

    /**
     * Nested feed links
     *
     * @var array
     */
    protected $_feedLink = array();
    
    /**
     * The username of this entry.
     *
     * @var Zend_Gdata_YouTube_Extension_Username
     */
    protected $_username = null;
    
    /**
     * The playlist title for this entry.
     * 
     * This element is only used on subscriptions to playlists.
     *
     * @var Zend_Gdata_YouTube_Extension_PlaylistTitle
     */
    protected $_playlistTitle = null;
    
    /**
     * The playlist id for this entry.
     * 
     * This element is only used on subscriptions to playlists.
     *
     * @var Zend_Gdata_YouTube_Extension_PlaylistId
     */
    protected $_playlistId = null;
    
    /**
     * The media:thumbnail element for this entry.
     * 
     * This element is only used on subscriptions to playlists.
     *
     * @var Zend_Gdata_Media_Extension_MediaThumbnail
     */
    protected $_mediaThumbnail = null;

    /**
     * The countHint for this entry.
     *
     * @var Zend_Gdata_YouTube_Extension_CountHint
     */
    protected $_countHint = null;

    /**
     * The queryString for this entry.
     *
     * @var Zend_Gdata_YouTube_Extension_QueryString
     */
    protected $_queryString = null;

    /**
     * Creates a subscription entry, representing an individual subscription
     * in a list of subscriptions, usually associated with an individual user.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_countHint != null) {
            $element->appendChild($this->_countHint->getDOM($element->ownerDocument));
        }
        if ($this->_playlistTitle != null) {
            $element->appendChild($this->_playlistTitle->getDOM($element->ownerDocument));
        }
        if ($this->_playlistId != null) {
            $element->appendChild($this->_playlistId->getDOM($element->ownerDocument));
        }
        if ($this->_mediaThumbnail != null) {
            $element->appendChild($this->_mediaThumbnail->getDOM($element->ownerDocument));
        }
        if ($this->_username != null) {
            $element->appendChild($this->_username->getDOM($element->ownerDocument));
        }
        if ($this->_queryString != null) {
            $element->appendChild($this->_queryString->getDOM($element->ownerDocument));
        }
        if ($this->_feedLink != null) {
            foreach ($this->_feedLink as $feedLink) {
                $element->appendChild($feedLink->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gd') . ':' . 'feedLink':
            $feedLink = new Zend_Gdata_Extension_FeedLink();
            $feedLink->transferFromDOM($child);
            $this->_feedLink[] = $feedLink;
            break;
        case $this->lookupNamespace('media') . ':' . 'thumbnail':
            $mediaThumbnail = new Zend_Gdata_Media_Extension_MediaThumbnail();
            $mediaThumbnail->transferFromDOM($child);
            $this->_mediaThumbnail = $mediaThumbnail;
            break;
        case $this->lookupNamespace('yt') . ':' . 'countHint':
            $countHint = new Zend_Gdata_YouTube_Extension_CountHint();
            $countHint->transferFromDOM($child);
            $this->_countHint = $countHint;
            break;
        case $this->lookupNamespace('yt') . ':' . 'playlistTitle':
            $playlistTitle = new Zend_Gdata_YouTube_Extension_PlaylistTitle();
            $playlistTitle->transferFromDOM($child);
            $this->_playlistTitle = $playlistTitle;
            break;
        case $this->lookupNamespace('yt') . ':' . 'playlistId':
            $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId();
            $playlistId->transferFromDOM($child);
            $this->_playlistId = $playlistId;
            break;
        case $this->lookupNamespace('yt') . ':' . 'queryString':
            $queryString = new Zend_Gdata_YouTube_Extension_QueryString();
            $queryString->transferFromDOM($child);
            $this->_queryString = $queryString;
            break;
        case $this->lookupNamespace('yt') . ':' . 'username':
            $username = new Zend_Gdata_YouTube_Extension_Username();
            $username->transferFromDOM($child);
            $this->_username = $username;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Sets the array of embedded feeds related to the video
     *
     * @param array $feedLink The array of embedded feeds relating to the video
     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
     */
    public function setFeedLink($feedLink = null)
    {
        $this->_feedLink = $feedLink;
        return $this;
    }

    /**
     * Get the feed link property for this entry.
     *
     * @see setFeedLink
     * @param string $rel (optional) The rel value of the link to be found.
     *          If null, the array of links is returned.
     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
     *          object corresponding to the requested rel value is returned
     *          if found, or null if the requested value is not found. If
     *          $rel is null or not specified, an array of all available
     *          feed links for this entry is returned, or null if no feed
     *          links are set.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }
    
    /**
     * Get the playlist title for a 'playlist' subscription.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_PlaylistId
     */
    public function getPlaylistId()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getPlaylistId ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_playlistId;
        }
    }

    /**
     * Sets the yt:playlistId element for a new playlist subscription.
     *
     * @param Zend_Gdata_YouTube_Extension_PlaylistId $id The id of 
     *        the playlist to which to subscribe to.
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
     */
    public function setPlaylistId($id = null)
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            $this->_playlistId = $id;
            return $this;
        }
    }

    /**
     * Get the queryString of the subscription
     *
     * @return Zend_Gdata_YouTube_Extension_QueryString
     */
    public function getQueryString()
    {
        return $this->_queryString;
    }

    /**
     * Sets the yt:queryString element for a new keyword subscription.
     *
     * @param Zend_Gdata_YouTube_Extension_QueryString $queryString The query
     *        string to subscribe to
     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
     */
    public function setQueryString($queryString = null)
    {
        $this->_queryString = $queryString;
        return $this;
    }

    /**
     * Get the playlist title for a 'playlist' subscription.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_PlaylistTitle
     */
    public function getPlaylistTitle()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getPlaylistTitle ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_playlistTitle;
        }
    }

    /**
     * Sets the yt:playlistTitle element for a new playlist subscription.
     *
     * @param Zend_Gdata_YouTube_Extension_PlaylistTitle $title The title of 
     *        the playlist to which to subscribe to.
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
     */
    public function setPlaylistTitle($title = null)
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The setPlaylistTitle ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            $this->_playlistTitle = $title;
            return $this;
        }
    }

    /**
     * Get the counthint for a subscription.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_CountHint
     */
    public function getCountHint()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getCountHint ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_countHint;
        }
    }

    /**
     * Get the thumbnail for a subscription.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_Media_Extension_MediaThumbnail
     */
    public function getMediaThumbnail()
    {
        if (($this->getMajorProtocolVersion() == null) ||
           ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The getMediaThumbnail ' .
                ' method is only supported as of version 2 of the YouTube ' .
                'API.');
        } else {
            return $this->_mediaThumbnail;
        }
    }
    
    /**
     * Get the username for a channel subscription.
     *
     * @return Zend_Gdata_YouTube_Extension_Username
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Sets the username for a new channel subscription.
     *
     * @param Zend_Gdata_YouTube_Extension_Username $username The username of 
     *        the channel to which to subscribe to.
     * @return Zend_Gdata_YouTube_SubscriptionEntry Provides a fluent interface
     */
    public function setUsername($username = null)
    {
        $this->_username = $username;
        return $this;
    }

}
PKpG[��)��%�%#Gdata/YouTube/PlaylistListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_YouTube
 */
require_once 'Zend/Gdata/YouTube.php';

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Description
 */
require_once 'Zend/Gdata/YouTube/Extension/Description.php';

/**
 * @see Zend_Gdata_YouTube_Extension_PlaylistId
 */
require_once 'Zend/Gdata/YouTube/Extension/PlaylistId.php';

/**
 * @see Zend_Gdata_YouTube_Extension_CountHint
 */
require_once 'Zend/Gdata/YouTube/Extension/CountHint.php';

/**
 * Represents the YouTube video playlist flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_PlaylistListEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_YouTube_PlaylistListEntry';

    /**
     * Nested feed links
     *
     * @var array
     */
    protected $_feedLink = array();

    /**
     * Description of this playlist
     *
     * @deprecated Deprecated as of version 2 of the YouTube API.
     * @var Zend_Gdata_YouTube_Extension_Description
     */
    protected $_description = null;

    /**
     * Id of this playlist
     *
     * @var Zend_Gdata_YouTube_Extension_PlaylistId
     */
    protected $_playlistId = null;
    
    /**
     * CountHint for this playlist.
     *
     * @var Zend_Gdata_YouTube_Extension_CountHint
     */
    protected $_countHint = null;

    /**
     * Creates a Playlist list entry, representing an individual playlist
     * in a list of playlists, usually associated with an individual user.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_description != null) {
            $element->appendChild($this->_description->getDOM($element->ownerDocument));
        }
        if ($this->_countHint != null) {
            $element->appendChild($this->_countHint->getDOM($element->ownerDocument));
        }
        if ($this->_playlistId != null) {
            $element->appendChild($this->_playlistId->getDOM($element->ownerDocument));
        }
        if ($this->_feedLink != null) {
            foreach ($this->_feedLink as $feedLink) {
                $element->appendChild($feedLink->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'description':
            $description = new Zend_Gdata_YouTube_Extension_Description();
            $description->transferFromDOM($child);
            $this->_description = $description;
            break;
        case $this->lookupNamespace('yt') . ':' . 'countHint':
            $countHint = new Zend_Gdata_YouTube_Extension_CountHint();
            $countHint->transferFromDOM($child);
            $this->_countHint = $countHint;
            break;
        case $this->lookupNamespace('yt') . ':' . 'playlistId':
            $playlistId = new Zend_Gdata_YouTube_Extension_PlaylistId();
            $playlistId->transferFromDOM($child);
            $this->_playlistId = $playlistId;
            break;
        case $this->lookupNamespace('gd') . ':' . 'feedLink':
            $feedLink = new Zend_Gdata_Extension_FeedLink();
            $feedLink->transferFromDOM($child);
            $this->_feedLink[] = $feedLink;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Sets the description relating to the playlist.
     *
     * @deprecated Deprecated as of version 2 of the YouTube API.
     * @param Zend_Gdata_YouTube_Extension_Description $description The description relating to the video
     * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface
     */
    public function setDescription($description = null)
    {
        if ($this->getMajorProtocolVersion() >= 2) {
            $this->setSummary($description);
        } else {
            $this->_description = $description;
        }
        return $this;
    }

    /**
     * Returns the description relating to the video.
     *
     * @return Zend_Gdata_YouTube_Extension_Description  The description 
     *         relating to the video
     */
    public function getDescription()
    {
        if ($this->getMajorProtocolVersion() >= 2) {
            return $this->getSummary();
        } else {
            return $this->_description;
        }
    }

    /**
     * Returns the countHint relating to the playlist.
     *
     * The countHint is the number of videos on a playlist.
     * 
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_CountHint  The count of videos on
     *         a playlist.
     */
    public function getCountHint()
    {
        if (($this->getMajorProtocolVersion() == null) ||
            ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The yt:countHint ' . 
                'element is not supported in versions earlier than 2.');
        } else {
            return $this->_countHint;
        }
    }

    /**
     * Returns the Id relating to the playlist.
     * 
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_PlaylistId  The id of this playlist.
     */
    public function getPlaylistId()
    {
        if (($this->getMajorProtocolVersion() == null) ||
            ($this->getMajorProtocolVersion() == 1)) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException('The yt:playlistId ' . 
                'element is not supported in versions earlier than 2.');
        } else {
            return $this->_playlistId;
        }
    }

    /**
     * Sets the array of embedded feeds related to the playlist
     *
     * @param array $feedLink The array of embedded feeds relating to the video
     * @return Zend_Gdata_YouTube_PlaylistListEntry Provides a fluent interface
     */
    public function setFeedLink($feedLink = null)
    {
        $this->_feedLink = $feedLink;
        return $this;
    }

    /**
     * Get the feed link property for this entry.
     *
     * @see setFeedLink
     * @param string $rel (optional) The rel value of the link to be found.
     *          If null, the array of links is returned.
     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
     *          object corresponding to the requested rel value is returned
     *          if found, or null if the requested value is not found. If
     *          $rel is null or not specified, an array of all available
     *          feed links for this entry is returned, or null if no feed
     *          links are set.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }

    /**
     * Returns the URL of the playlist video feed
     *
     * @return string The URL of the playlist video feed
     */
    public function getPlaylistVideoFeedUrl()
    {
        if ($this->getMajorProtocolVersion() >= 2) {
            return $this->getContent()->getSrc();
        } else {
            return $this->getFeedLink(Zend_Gdata_YouTube::PLAYLIST_REL)->href;
        }
    }

}
PKpG[;)�{��Gdata/YouTube/VideoEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: VideoEntry.php 13360 2008-12-18 22:54:14Z jhartmann $
 */

/**
 * @see Zend_Gdata_Extension_Comments
 */
require_once 'Zend/Gdata/Extension/Comments.php';

/**
 * @see Zend_Gdata_Extension_FeedLink
 */
require_once 'Zend/Gdata/Extension/FeedLink.php';

/**
 * @see Zend_Gdata_YouTube_MediaEntry
 */
require_once 'Zend/Gdata/YouTube/MediaEntry.php';

/**
 * @see Zend_Gdata_YouTube_Extension_MediaGroup
 */
require_once 'Zend/Gdata/YouTube/Extension/MediaGroup.php';

/**
 * @see Zend_Gdata_YouTube_Extension_NoEmbed
 */
require_once 'Zend/Gdata/YouTube/Extension/NoEmbed.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Statistics
 */
require_once 'Zend/Gdata/YouTube/Extension/Statistics.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Link
 */
require_once 'Zend/Gdata/YouTube/Extension/Link.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Racy
 */
require_once 'Zend/Gdata/YouTube/Extension/Racy.php';

/**
 * @see Zend_Gdata_Extension_Rating
 */
require_once 'Zend/Gdata/Extension/Rating.php';

/**
 * @see Zend_Gdata_Geo_Extension_GeoRssWhere
 */
require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Control
 */
require_once 'Zend/Gdata/YouTube/Extension/Control.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Recorded
 */
require_once 'Zend/Gdata/YouTube/Extension/Recorded.php';

/**
 * @see Zend_Gdata_YouTube_Extension_Location
 */
require_once 'Zend/Gdata/YouTube/Extension/Location.php';

/**
 * Represents the YouTube video flavor of an Atom entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_VideoEntry extends Zend_Gdata_YouTube_MediaEntry
{

    const YOUTUBE_DEVELOPER_TAGS_SCHEMA = 'http://gdata.youtube.com/schemas/2007/developertags.cat';
    const YOUTUBE_CATEGORY_SCHEMA = 'http://gdata.youtube.com/schemas/2007/categories.cat';
    protected $_entryClassName = 'Zend_Gdata_YouTube_VideoEntry';

    /**
     * If null, the video can be embedded
     *
     * @var Zend_Gdata_YouTube_Extension_NoEmbed|null
     */
    protected $_noEmbed = null;

    /**
     * Specifies the statistics relating to the video.
     *
     * @var Zend_Gdata_YouTube_Extension_Statistics
     */
    protected $_statistics = null;

    /**
     * If not null, specifies that the video has racy content.
     *
     * @var Zend_Gdata_YouTube_Extension_Racy|null
     */
    protected $_racy = null;

    /**
     * If not null, specifies that the video is private.
     *
     * @var Zend_Gdata_YouTube_Extension_Private|null
     */
    protected $_private = null;

    /**
     * Specifies the video's rating.
     *
     * @var Zend_Gdata_Extension_Rating
     */
    protected $_rating = null;

    /**
     * Specifies the comments associated with a video.
     *
     * @var Zend_Gdata_Extensions_Comments
     */
    protected $_comments = null;

    /**
     * Nested feed links
     *
     * @var array
     */
    protected $_feedLink = array();

    /**
     * Geo location for the video
     *
     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
     */
    protected $_where = null;

    /**
     * Recording date for the video
     *
     * @var Zend_Gdata_YouTube_Extension_Recorded|null
     */
    protected $_recorded = null;

    /**
     * Location informtion for the video
     *
     * @var Zend_Gdata_YouTube_Extension_Location|null
     */
    protected $_location = null;

    /**
     * Creates a Video entry, representing an individual video
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_noEmbed != null) {
            $element->appendChild($this->_noEmbed->getDOM(
                $element->ownerDocument));
        }
        if ($this->_statistics != null) {
            $element->appendChild($this->_statistics->getDOM(
                $element->ownerDocument));
        }
        if ($this->_racy != null) {
            $element->appendChild($this->_racy->getDOM(
                $element->ownerDocument));
        }
        if ($this->_recorded != null) {
            $element->appendChild($this->_recorded->getDOM(
                $element->ownerDocument));
        }
        if ($this->_location != null) {
            $element->appendChild($this->_location->getDOM(
                $element->ownerDocument));
        }
        if ($this->_rating != null) {
            $element->appendChild($this->_rating->getDOM(
                $element->ownerDocument));
        }
        if ($this->_comments != null) {
            $element->appendChild($this->_comments->getDOM(
                $element->ownerDocument));
        }
        if ($this->_feedLink != null) {
            foreach ($this->_feedLink as $feedLink) {
                $element->appendChild($feedLink->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_where != null) {
           $element->appendChild($this->_where->getDOM(
                $element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
        case $this->lookupNamespace('yt') . ':' . 'statistics':
            $statistics = new Zend_Gdata_YouTube_Extension_Statistics();
            $statistics->transferFromDOM($child);
            $this->_statistics = $statistics;
            break;
        case $this->lookupNamespace('yt') . ':' . 'racy':
            $racy = new Zend_Gdata_YouTube_Extension_Racy();
            $racy->transferFromDOM($child);
            $this->_racy = $racy;
            break;
        case $this->lookupNamespace('yt') . ':' . 'recorded':
            $recorded = new Zend_Gdata_YouTube_Extension_Recorded();
            $recorded->transferFromDOM($child);
            $this->_recorded = $recorded;
            break;
        case $this->lookupNamespace('yt') . ':' . 'location':
            $location = new Zend_Gdata_YouTube_Extension_Location();
            $location->transferFromDOM($child);
            $this->_location = $location;
            break;
        case $this->lookupNamespace('gd') . ':' . 'rating':
            $rating = new Zend_Gdata_Extension_Rating();
            $rating->transferFromDOM($child);
            $this->_rating = $rating;
            break;
        case $this->lookupNamespace('gd') . ':' . 'comments':
            $comments = new Zend_Gdata_Extension_Comments();
            $comments->transferFromDOM($child);
            $this->_comments = $comments;
            break;
        case $this->lookupNamespace('yt') . ':' . 'noembed':
            $noEmbed = new Zend_Gdata_YouTube_Extension_NoEmbed();
            $noEmbed->transferFromDOM($child);
            $this->_noEmbed = $noEmbed;
            break;
        case $this->lookupNamespace('gd') . ':' . 'feedLink':
            $feedLink = new Zend_Gdata_Extension_FeedLink();
            $feedLink->transferFromDOM($child);
            $this->_feedLink[] = $feedLink;
            break;
        case $this->lookupNamespace('georss') . ':' . 'where':
            $where = new Zend_Gdata_Geo_Extension_GeoRssWhere();
            $where->transferFromDOM($child);
            $this->_where = $where;
            break;
        case $this->lookupNamespace('atom') . ':' . 'link';
            $link = new Zend_Gdata_YouTube_Extension_Link();
            $link->transferFromDOM($child);
            $this->_link[] = $link;
            break;
        case $this->lookupNamespace('app') . ':' . 'control':
            $control = new Zend_Gdata_YouTube_Extension_Control();
            $control->transferFromDOM($child);
            $this->_control = $control;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Sets when the video was recorded.
     *
     * @param Zend_Gdata_YouTube_Extension_Recorded $recorded When the video was recorded
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setRecorded($recorded = null)
    {
        $this->_recorded = $recorded;
        return $this;
    }

    /**
     * Gets the date that the video was recorded.
     *
     * @return Zend_Gdata_YouTube_Extension_Recorded|null
     */
    public function getRecorded()
    {
        return $this->_recorded;
    }

    /**
     * Sets the location information.
     *
     * @param Zend_Gdata_YouTube_Extension_Location $location Where the video
     *        was recorded
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setLocation($location = null)
    {
        $this->_location = $location;
        return $this;
    }

    /**
     * Gets the location where the video was recorded.
     *
     * @return Zend_Gdata_YouTube_Extension_Location|null
     */
    public function getLocation()
    {
        return $this->_location;
    }

    /**
     * If an instance of Zend_Gdata_YouTube_Extension_NoEmbed is passed in,
     * the video cannot be embedded.  Otherwise, if null is passsed in, the
     * video is able to be embedded.
     *
     * @param Zend_Gdata_YouTube_Extension_NoEmbed $noEmbed Whether or not the
     *          video can be embedded.
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setNoEmbed($noEmbed = null)
    {
        $this->_noEmbed = $noEmbed;
        return $this;
    }

    /**
     * If the return value is an instance of
     * Zend_Gdata_YouTube_Extension_NoEmbed, this video cannot be embedded.
     *
     * @return Zend_Gdata_YouTube_Extension_NoEmbed|null Whether or not the video can be embedded
     */
    public function getNoEmbed()
    {
        return $this->_noEmbed;
    }

    /**
     * Checks whether the video is embeddable.
     *
     * @return bool Returns true if the video is embeddable.
     */
    public function isVideoEmbeddable()
    {
        if ($this->getNoEmbed() == null) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Sets the statistics relating to the video.
     *
     * @param Zend_Gdata_YouTube_Extension_Statistics $statistics The statistics relating to the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setStatistics($statistics = null)
    {
        $this->_statistics = $statistics;
        return $this;
    }

    /**
     * Returns the statistics relating to the video.
     *
     * @return Zend_Gdata_YouTube_Extension_Statistics  The statistics relating to the video
     */
    public function getStatistics()
    {
        return $this->_statistics;
    }

    /**
     * Specifies that the video has racy content.
     *
     * @param Zend_Gdata_YouTube_Extension_Racy $racy The racy flag object
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setRacy($racy = null)
    {
        if ($this->getMajorProtocolVersion() == 2) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException(
                'Calling getRacy() on a YouTube VideoEntry is deprecated ' .
                'as of version 2 of the API.');
        }

        $this->_racy = $racy;
        return $this;
    }

    /**
     * Returns the racy flag object.
     *
     * @throws Zend_Gdata_App_VersionException
     * @return Zend_Gdata_YouTube_Extension_Racy|null  The racy flag object
     */
    public function getRacy()
    {
        if ($this->getMajorProtocolVersion() == 2) {
            require_once 'Zend/Gdata/App/VersionException.php';
            throw new Zend_Gdata_App_VersionException(
                'Calling getRacy() on a YouTube VideoEntry is deprecated ' .
                'as of version 2 of the API.');
        }
        return $this->_racy;
    }

    /**
     * Sets the rating relating to the video.
     *
     * @param Zend_Gdata_Extension_Rating $rating The rating relating to the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setRating($rating = null)
    {
        $this->_rating = $rating;
        return $this;
    }

    /**
     * Returns the rating relating to the video.
     *
     * @return Zend_Gdata_Extension_Rating  The rating relating to the video
     */
    public function getRating()
    {
        return $this->_rating;
    }

    /**
     * Sets the comments relating to the video.
     *
     * @param Zend_Gdata_Extension_Comments $comments The comments relating to the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setComments($comments = null)
    {
        $this->_comments = $comments;
        return $this;
    }

    /**
     * Returns the comments relating to the video.
     *
     * @return Zend_Gdata_Extension_Comments  The comments relating to the video
     */
    public function getComments()
    {
        return $this->_comments;
    }

    /**
     * Sets the array of embedded feeds related to the video
     *
     * @param array $feedLink The array of embedded feeds relating to the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setFeedLink($feedLink = null)
    {
        $this->_feedLink = $feedLink;
        return $this;
    }

    /**
     * Get the feed link property for this entry.
     *
     * @see setFeedLink
     * @param string $rel (optional) The rel value of the link to be found.
     *          If null, the array of links is returned.
     * @return mixed If $rel is specified, a Zend_Gdata_Extension_FeedLink
     *          object corresponding to the requested rel value is returned
     *          if found, or null if the requested value is not found. If
     *          $rel is null or not specified, an array of all available
     *          feed links for this entry is returned, or null if no feed
     *          links are set.
     */
    public function getFeedLink($rel = null)
    {
        if ($rel == null) {
            return $this->_feedLink;
        } else {
            foreach ($this->_feedLink as $feedLink) {
                if ($feedLink->rel == $rel) {
                    return $feedLink;
                }
            }
            return null;
        }
    }

    /**
     * Returns the link element relating to video responses.
     *
     * @return Zend_Gdata_App_Extension_Link
     */
    public function getVideoResponsesLink()
    {
        return $this->getLink(Zend_Gdata_YouTube::VIDEO_RESPONSES_REL);
    }

    /**
     * Returns the link element relating to video ratings.
     *
     * @return Zend_Gdata_App_Extension_Link
     */
    public function getVideoRatingsLink()
    {
        return $this->getLink(Zend_Gdata_YouTube::VIDEO_RATINGS_REL);
    }

    /**
     * Returns the link element relating to video complaints.
     *
     * @return Zend_Gdata_App_Extension_Link
     */
    public function getVideoComplaintsLink()
    {
        return $this->getLink(Zend_Gdata_YouTube::VIDEO_COMPLAINTS_REL);
    }

    /**
     * Gets the YouTube video ID based upon the atom:id value
     *
     * @return string The video ID
     */
    public function getVideoId()
    {
        if ($this->getMajorProtocolVersion() == 2) {
            $videoId = $this->getMediaGroup()->getVideoId()->text;
        } else {
            $fullId = $this->getId()->getText();
            $position = strrpos($fullId, '/');
            if ($position === false) {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception(
                    'Slash not found in atom:id of ' . $fullId);
            } else {
                $videoId = substr($fullId, $position + 1);
            }
        }
        return $videoId;
    }

    /**
     * Gets the date that the video was recorded.
     *
     * @return string|null The date that the video was recorded
     */
    public function getVideoRecorded()
    {
        $recorded = $this->getRecorded();
        if ($recorded != null) {
          return $recorded->getText();
        } else {
          return null;
        }
    }

    /**
     * Sets the date that the video was recorded.
     *
     * @param string $recorded The date that the video was recorded, in the
     *          format of '2001-06-19'
     */
    public function setVideoRecorded($recorded)
    {
        $this->setRecorded(
            new Zend_Gdata_YouTube_Extension_Recorded($recorded));
        return $this;
    }

    /**
     * Gets the georss:where element
     *
     * @return Zend_Gdata_Geo_Extension_GeoRssWhere
     */
    public function getWhere()
    {
        return $this->_where;
    }

    /**
     * Sets the georss:where element
     *
     * @param Zend_Gdata_Geo_Extension_GeoRssWhere $value The georss:where class value
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setWhere($value)
    {
        $this->_where = $value;
        return $this;
    }

    /**
     * Gets the title of the video as a string.  null is returned
     * if the video title is not available.
     *
     * @return string|null The title of the video
     */
    public function getVideoTitle()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getTitle() != null) {
            return $this->getMediaGroup()->getTitle()->getText();
        } else {
            return null;
        }
    }

    /**
     * Sets the title of the video as a string.
     *
     * @param string $title Title for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoTitle($title)
    {
        $this->ensureMediaGroupIsNotNull();
        $this->getMediaGroup()->setTitle(
            new Zend_Gdata_Media_Extension_MediaTitle($title));
        return $this;
    }

    /**
     * Sets the description of the video as a string.
     *
     * @param string $description Description for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoDescription($description)
    {
        $this->ensureMediaGroupIsNotNull();
        $this->getMediaGroup()->setDescription(
            new Zend_Gdata_Media_Extension_MediaDescription($description));
        return $this;
    }


    /**
     * Gets the description  of the video as a string.  null is returned
     * if the video description is not available.
     *
     * @return string|null The description of the video
     */
    public function getVideoDescription()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getDescription() != null) {
            return $this->getMediaGroup()->getDescription()->getText();
        } else {
            return null;
        }
    }

    /**
     * Gets the URL of the YouTube video watch page.  null is returned
     * if the video watch page URL is not available.
     *
     * @return string|null The URL of the YouTube video watch page
     */
    public function getVideoWatchPageUrl()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getPlayer() != null &&
             array_key_exists(0, $this->getMediaGroup()->getPlayer())) {
            $players = $this->getMediaGroup()->getPlayer();
            return $players[0]->getUrl();
        } else {
            return null;
        }
    }

    /**
     * Gets an array of the thumbnails representing the video.
     * Each thumbnail is an element of the array, and is an
     * array of the thumbnail properties - time, height, width,
     * and url.  For convient usage inside a foreach loop, an
     * empty array is returned if there are no thumbnails.
     *
     * @return array An array of video thumbnails.
     */
    public function getVideoThumbnails()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getThumbnail() != null) {

            $thumbnailArray = array();

            foreach ($this->getMediaGroup()->getThumbnail() as $thumbnailObj) {
                $thumbnail = array();
                $thumbnail['time'] = $thumbnailObj->time;
                $thumbnail['height'] = $thumbnailObj->height;
                $thumbnail['width'] = $thumbnailObj->width;
                $thumbnail['url'] = $thumbnailObj->url;
                $thumbnailArray[] = $thumbnail;
            }
            return $thumbnailArray;
        } else {
            return array();
        }
    }

    /**
     * Gets the URL of the flash player SWF.  null is returned if the
     * duration value is not available.
     *
     * @return string|null The URL of the flash player SWF
     */
    public function getFlashPlayerUrl()
    {
        $this->ensureMediaGroupIsNotNull();
        foreach ($this->getMediaGroup()->getContent() as $content) {
                if ($content->getType() === 'application/x-shockwave-flash') {
                    return $content->getUrl();
                }
            }
        return null;
    }

    /**
     * Gets the duration of the video, in seconds.  null is returned
     * if the duration value is not available.
     *
     * @return string|null The duration of the video, in seconds.
     */
    public function getVideoDuration()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getDuration() != null) {
            return $this->getMediaGroup()->getDuration()->getSeconds();
        } else {
            return null;
        }
    }

    /**
     * Checks whether the video is private.
     *
     * @return bool Return true if video is private
     */
    public function isVideoPrivate()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getPrivate() != null) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Sets video to private.
     *
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoPrivate()
    {
        $this->ensureMediaGroupIsNotNull();
        $this->getMediaGroup()->setPrivate(new Zend_Gdata_YouTube_Extension_Private());
        return $this;
    }

    /**
     * Sets a private video to be public.
     *
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoPublic()
    {
        $this->ensureMediaGroupIsNotNull();
        $this->getMediaGroup()->private = null;
        return $this;
    }

    /**
     * Gets an array of the tags assigned to this video.  For convient
     * usage inside a foreach loop, an empty array is returned when there
     * are no tags assigned.
     *
     * @return array An array of the tags assigned to this video
     */
    public function getVideoTags()
    {
        $this->ensureMediaGroupIsNotNull();
        if ($this->getMediaGroup()->getKeywords() != null) {

            $keywords = $this->getMediaGroup()->getKeywords();
            $keywordsString = $keywords->getText();
            if (strlen(trim($keywordsString)) > 0) {
                return split('(, *)|,', $keywordsString);
            }
        }
        return array();
    }

    /**
     * Sets the keyword tags for a video.
     *
     * @param mixed $tags Either a comma-separated string or an array
     * of tags for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoTags($tags)
    {
        $this->ensureMediaGroupIsNotNull();
        $keywords = new Zend_Gdata_Media_Extension_MediaKeywords();
        if (is_array($tags)) {
            $tags = implode(', ', $tags);
        }
        $keywords->setText($tags);
        $this->getMediaGroup()->setKeywords($keywords);
        return $this;
    }

    /**
     * Gets the number of views for this video.  null is returned if the
     * number of views is not available.
     *
     * @return string|null The number of views for this video
     */
    public function getVideoViewCount()
    {
        if ($this->getStatistics() != null) {
            return $this->getStatistics()->getViewCount();
        } else {
            return null;
        }
    }

    /**
     * Gets the location specified for this video, if available.  The location
     * is returned as an array containing the keys 'longitude' and 'latitude'.
     * null is returned if the location is not available.
     *
     * @return array|null The location specified for this video
     */
    public function getVideoGeoLocation()
    {
        if ($this->getWhere() != null &&
            $this->getWhere()->getPoint() != null &&
            ($position = $this->getWhere()->getPoint()->getPos()) != null) {

            $positionString = $position->__toString();

            if (strlen(trim($positionString)) > 0) {
                $positionArray = explode(' ', trim($positionString));
                if (count($positionArray) == 2) {
                    $returnArray = array();
                    $returnArray['latitude'] = $positionArray[0];
                    $returnArray['longitude'] = $positionArray[1];
                    return $returnArray;
                }
            }
        }
        return null;
    }

    /**
     * Gets the rating information for this video, if available.  The rating
     * is returned as an array containing the keys 'average' and 'numRaters'.
     * null is returned if the rating information is not available.
     *
     * @return array|null The rating information for this video
     */
    public function getVideoRatingInfo()
    {
        if ($this->getRating() != null) {
            $returnArray = array();
            $returnArray['average'] = $this->getRating()->getAverage();
            $returnArray['numRaters'] = $this->getRating()->getNumRaters();
            return $returnArray;
        } else {
            return null;
        }
    }

    /**
     * Gets the category of this video, if available.  The category is returned
     * as a string. Valid categories are found at:
     * http://gdata.youtube.com/schemas/2007/categories.cat
     * If the category is not set, null is returned.
     *
     * @return string|null The category of this video
     */
    public function getVideoCategory()
    {
        $this->ensureMediaGroupIsNotNull();
        $categories = $this->getMediaGroup()->getCategory();
        if ($categories != null) {
            foreach($categories as $category) {
                if ($category->getScheme() == self::YOUTUBE_CATEGORY_SCHEMA) {
                    return $category->getText();
                }
            }
        }
        return null;
    }

    /**
     * Sets the category of the video as a string.
     *
     * @param string $category Categories for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoCategory($category)
    {
        $this->ensureMediaGroupIsNotNull();
        $this->getMediaGroup()->setCategory(array(new Zend_Gdata_Media_Extension_MediaCategory($category, self::YOUTUBE_CATEGORY_SCHEMA)));
        return $this;
    }

    /**
     * Gets the developer tags for the video, if available and if client is
     * authenticated with a valid developerKey. The tags are returned
     * as an array.
     * If no tags are set, null is returned.
     *
     * @return array|null The developer tags for this video or null if none were set.
     */
    public function getVideoDeveloperTags()
    {
        $developerTags = null;
        $this->ensureMediaGroupIsNotNull();

        $categoryArray = $this->getMediaGroup()->getCategory();
        if ($categoryArray != null) {
            foreach ($categoryArray as $category) {
                if ($category instanceof Zend_Gdata_Media_Extension_MediaCategory) {
                    if ($category->getScheme() == self::YOUTUBE_DEVELOPER_TAGS_SCHEMA) {
                        $developerTags[] = $category->getText();
                    }
                }
            }
            return $developerTags;
        }
        return null;
    }

    /**
     * Adds a developer tag to array of tags for the video.
     *
     * @param string $developerTag DeveloperTag for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function addVideoDeveloperTag($developerTag)
    {
        $this->ensureMediaGroupIsNotNull();
        $newCategory = new Zend_Gdata_Media_Extension_MediaCategory($developerTag, self::YOUTUBE_DEVELOPER_TAGS_SCHEMA);

        if ($this->getMediaGroup()->getCategory() == null) {
            $this->getMediaGroup()->setCategory($newCategory);
        } else {
            $categories = $this->getMediaGroup()->getCategory();
            $categories[] = $newCategory;
            $this->getMediaGroup()->setCategory($categories);
        }
        return $this;
    }

    /**
     * Set multiple developer tags for the video as strings.
     *
     * @param array $developerTags Array of developerTag for the video
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface
     */
    public function setVideoDeveloperTags($developerTags)
    {
        foreach($developerTags as $developerTag) {
            $this->addVideoDeveloperTag($developerTag);
        }
        return $this;
    }


    /**
     * Get the current publishing state of the video.
     *
     * @return Zend_Gdata_YouTube_Extension_State|null The publishing state of this video
     */
    public function getVideoState()
    {
        $control = $this->getControl();
        if ($control != null &&
            $control->getDraft() != null &&
            $control->getDraft()->getText() == 'yes') {

            return $control->getState();
        }
        return null;
    }

    /**
     * Get the VideoEntry's Zend_Gdata_YouTube_Extension_MediaGroup object.
     * If the mediaGroup does not exist, then set it.
     *
     * @return void
     */
    public function ensureMediaGroupIsNotNull()
    {
        if ($this->getMediagroup() == null) {
            $this->setMediagroup(new Zend_Gdata_YouTube_Extension_MediaGroup());
        }
    }

    /**
     * Helper function to conveniently set a video's rating.
     *
     * @param integer $ratingValue A number representing the rating. Must
     *          be between 1 and 5 inclusive.
     * @throws Zend_Gdata_Exception
     * @return Zend_Gdata_YouTube_VideoEntry Provides a fluent interface.
     */
    public function setVideoRating($ratingValue)
    {
        if ($ratingValue < 1 || $ratingValue > 5) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                'Rating for video entry must be between 1 and 5 inclusive.');
        }

         require_once 'Zend/Gdata/Extension/Rating.php';
         $rating = new Zend_Gdata_Extension_Rating(null, 1, 5, null,
            $ratingValue);
        $this->setRating($rating);
        return $this;
    }

    /**
     * Retrieve the URL for a video's comment feed.
     *
     * @return string|null The URL if found, or null if not found.
     */
    public function getVideoCommentFeedUrl()
    {
        $commentsExtension = $this->getComments();
        $commentsFeedUrl = null;
        if ($commentsExtension) {
            $commentsFeedLink = $commentsExtension->getFeedLink();
            if ($commentsFeedLink) {
                $commentsFeedUrl = $commentsFeedLink->getHref();
            }
        }
        return $commentsFeedUrl;
    }

}
PKpG[/�����Gdata/YouTube/ContactFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Media_Feed
 */
require_once 'Zend/Gdata/Media/Feed.php';

/**
 * @see Zend_Gdata_YouTube_ContactEntry
 */
require_once 'Zend/Gdata/YouTube/ContactEntry.php';

/**
 * The YouTube contacts flavor of an Atom Feed with media support
 * Represents a list of individual contacts, where each contained entry is
 * a contact.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage YouTube
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_YouTube_ContactFeed extends Zend_Gdata_Media_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_YouTube_ContactEntry';

    /**
     * Constructs a new YouTube Contact Feed object, to represent
     * a feed of contacts for a user
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_YouTube::$namespaces);
        parent::__construct($element);
    }

}
PKpG[{�׍ǗǗ
Gdata/App.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Zend_Gdata_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * Zend_Version
 */
require_once 'Zend/Version.php';

/**
 * Zend_Gdata_App_MediaSource
 */
require_once 'Zend/Gdata/App/MediaSource.php';

/**
 * Provides Atom Publishing Protocol (APP) functionality.  This class and all
 * other components of Zend_Gdata_App are designed to work independently from
 * other Zend_Gdata components in order to interact with generic APP services.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App
{

    /** Default major protocol version.
      *
      * @see _majorProtocolVersion
      */
    const DEFAULT_MAJOR_PROTOCOL_VERSION = 1;

    /** Default minor protocol version.
      *
      * @see _minorProtocolVersion
      */
    const DEFAULT_MINOR_PROTOCOL_VERSION = null;

    /**
     * Client object used to communicate
     *
     * @var Zend_Http_Client
     */
    protected $_httpClient;

    /**
     * Client object used to communicate in static context
     *
     * @var Zend_Http_Client
     */
    protected static $_staticHttpClient = null;

    /**
     * Override HTTP PUT and DELETE request methods?
     *
     * @var boolean
     */
    protected static $_httpMethodOverride = false;

    /**
     * Enable gzipped responses?
     *
     * @var boolean
     */
    protected static $_gzipEnabled = false;

    /**
     * Use verbose exception messages.  In the case of HTTP errors,
     * use the body of the HTTP response in the exception message.
     *
     * @var boolean
     */
    protected static $_verboseExceptionMessages = true;

    /**
     * Default URI to which to POST.
     *
     * @var string
     */
    protected $_defaultPostUri = null;

    /**
     * Packages to search for classes when using magic __call method, in order.
     *
     * @var array
     */
    protected $_registeredPackages = array(
            'Zend_Gdata_App_Extension',
            'Zend_Gdata_App');

    /**
     * Maximum number of redirects to follow during HTTP operations
     *
     * @var int
     */
    protected static $_maxRedirects = 5;

    /**
      * Indicates the major protocol version that should be used.
      * At present, recognized values are either 1 or 2. However, any integer
      * value >= 1 is considered valid.
      *
      * Under most circumtances, this will be automatically set by
      * Zend_Gdata_App subclasses.
      *
      * @see setMajorProtocolVersion()
      * @see getMajorProtocolVersion()
      */
    protected $_majorProtocolVersion;

    /**
      * Indicates the minor protocol version that should be used. Can be set
      * to either an integer >= 0, or NULL if no minor version should be sent
      * to the server.
      *
      * At present, this field is not used by any Google services, but may be
      * used in the future.
      *
      * Under most circumtances, this will be automatically set by
      * Zend_Gdata_App subclasses.
      *
      * @see setMinorProtocolVersion()
      * @see getMinorProtocolVersion()
      */
    protected $_minorProtocolVersion;

    /**
     * Create Gdata object
     *
     * @param Zend_Http_Client $client
     * @param string $applicationId
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->setHttpClient($client, $applicationId);
        // Set default protocol version. Subclasses should override this as
        // needed once a given service supports a new version.
        $this->setMajorProtocolVersion(self::DEFAULT_MAJOR_PROTOCOL_VERSION);
        $this->setMinorProtocolVersion(self::DEFAULT_MINOR_PROTOCOL_VERSION);
    }

    /**
     * Adds a Zend Framework package to the $_registeredPackages array.
     * This array is searched when using the magic __call method below
     * to instantiante new objects.
     *
     * @param string $name The name of the package (eg Zend_Gdata_App)
     * @return void
     */
    public function registerPackage($name)
    {
        array_unshift($this->_registeredPackages, $name);
    }

    /**
     * Retreive feed object
     *
     * @param string $uri The uri from which to retrieve the feed
     * @param string $className The class which is used as the return type
     * @return Zend_Gdata_App_Feed
     */
    public function getFeed($uri, $className='Zend_Gdata_App_Feed')
    {
        return $this->importUrl($uri, $className);
    }

    /**
     * Retreive entry object
     *
     * @param string $uri
     * @param string $className The class which is used as the return type
     * @return Zend_Gdata_App_Entry
     */
    public function getEntry($uri, $className='Zend_Gdata_App_Entry')
    {
        return $this->importUrl($uri, $className);
    }

    /**
     * Get the Zend_Http_Client object used for communication
     *
     * @return Zend_Http_Client
     */
    public function getHttpClient()
    {
        return $this->_httpClient;
    }

    /**
     * Set the Zend_Http_Client object used for communication
     *
     * @param Zend_Http_Client $client The client to use for communication
     * @throws Zend_Gdata_App_HttpException
     * @return Zend_Gdata_App Provides a fluent interface
     */
    public function setHttpClient($client, $applicationId = 'MyCompany-MyApp-1.0')
    {
        if ($client === null) {
            $client = new Zend_Http_Client();
        }
        if (!$client instanceof Zend_Http_Client) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException('Argument is not an instance of Zend_Http_Client.');
        }
        $userAgent = $applicationId . ' Zend_Framework_Gdata/' . Zend_Version::VERSION;
        $client->setHeaders('User-Agent', $userAgent);
        $client->setConfig(array(
            'strictredirects' => true
            )
        );
        $this->_httpClient = $client;
        Zend_Gdata::setStaticHttpClient($client);
        return $this;
    }

    /**
     * Set the static HTTP client instance
     *
     * Sets the static HTTP client object to use for retrieving the feed.
     *
     * @param  Zend_Http_Client $httpClient
     * @return void
     */
    public static function setStaticHttpClient(Zend_Http_Client $httpClient)
    {
        self::$_staticHttpClient = $httpClient;
    }


    /**
     * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used.
     *
     * @return Zend_Http_Client
     */
    public static function getStaticHttpClient()
    {
        if (!self::$_staticHttpClient instanceof Zend_Http_Client) {
            $client = new Zend_Http_Client();
            $userAgent = 'Zend_Framework_Gdata/' . Zend_Version::VERSION;
            $client->setHeaders('User-Agent', $userAgent);
            $client->setConfig(array(
                'strictredirects' => true
                )
            );
            self::$_staticHttpClient = $client;
        }
        return self::$_staticHttpClient;
    }

    /**
     * Toggle using POST instead of PUT and DELETE HTTP methods
     *
     * Some feed implementations do not accept PUT and DELETE HTTP
     * methods, or they can't be used because of proxies or other
     * measures. This allows turning on using POST where PUT and
     * DELETE would normally be used; in addition, an
     * X-Method-Override header will be sent with a value of PUT or
     * DELETE as appropriate.
     *
     * @param  boolean $override Whether to override PUT and DELETE with POST.
     * @return void
     */
    public static function setHttpMethodOverride($override = true)
    {
        self::$_httpMethodOverride = $override;
    }

    /**
     * Get the HTTP override state
     *
     * @return boolean
     */
    public static function getHttpMethodOverride()
    {
        return self::$_httpMethodOverride;
    }

    /**
     * Toggle requesting gzip encoded responses
     *
     * @param  boolean $enabled Whether or not to enable gzipped responses
     * @return void
     */
    public static function setGzipEnabled($enabled = false)
    {
        if ($enabled && !function_exists('gzinflate')) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'You cannot enable gzipped responses if the zlib module ' .
                    'is not enabled in your PHP installation.');

        }
        self::$_gzipEnabled = $enabled;
    }

    /**
     * Get the HTTP override state
     *
     * @return boolean
     */
    public static function getGzipEnabled()
    {
        return self::$_gzipEnabled;
    }

    /**
     * Get whether to use verbose exception messages
     *
     * In the case of HTTP errors,  use the body of the HTTP response
     * in the exception message.
     *
     * @return boolean
     */
    public static function getVerboseExceptionMessages()
    {
        return self::$_verboseExceptionMessages;
    }

    /**
     * Set whether to use verbose exception messages
     *
     * In the case of HTTP errors, use the body of the HTTP response
     * in the exception message.
     *
     * @param boolean $verbose Whether to use verbose exception messages
     */
    public static function setVerboseExceptionMessages($verbose)
    {
        self::$_verboseExceptionMessages = $verbose;
    }

    /**
     * Set the maximum number of redirects to follow during HTTP operations
     *
     * @param int $maxRedirects Maximum number of redirects to follow
     * @return void
     */
    public static function setMaxRedirects($maxRedirects)
    {
        self::$_maxRedirects = $maxRedirects;
    }

    /**
     * Get the maximum number of redirects to follow during HTTP operations
     *
     * @return int Maximum number of redirects to follow
     */
    public static function getMaxRedirects()
    {
        return self::$_maxRedirects;
    }

    /**
     * Set the major protocol version that should be used. Values < 1 will
     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
     *
     * @see _majorProtocolVersion
     * @param int $value The major protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMajorProtocolVersion($value)
    {
        if (!($value >= 1)) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Major protocol version must be >= 1');
        }
        $this->_majorProtocolVersion = $value;
    }

    /**
     * Get the major protocol version that is in use.
     *
     * @see _majorProtocolVersion
     * @return int The major protocol version in use.
     */
    public function getMajorProtocolVersion()
    {
        return $this->_majorProtocolVersion;
    }

    /**
     * Set the minor protocol version that should be used. If set to NULL, no
     * minor protocol version will be sent to the server. Values < 0 will
     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
     *
     * @see _minorProtocolVersion
     * @param (int|NULL) $value The minor protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMinorProtocolVersion($value)
    {
        if (!($value >= 0)) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Minor protocol version must be >= 0');
        }
        $this->_minorProtocolVersion = $value;
    }

    /**
     * Get the minor protocol version that is in use.
     *
     * @see _minorProtocolVersion
     * @return (int|NULL) The major protocol version in use, or NULL if no
     *         minor version is specified.
     */
    public function getMinorProtocolVersion()
    {
        return $this->_minorProtocolVersion;
    }

    /**
     * Provides pre-processing for HTTP requests to APP services.
     *
     * 1. Checks the $data element and, if it's an entry, extracts the XML,
     *    multipart data, edit link (PUT,DELETE), etc.
     * 2. If $data is a string, sets the default content-type  header as
     *    'application/atom+xml' if it's not already been set.
     * 3. Adds a x-http-method override header and changes the HTTP method
     *    to 'POST' if necessary as per getHttpMethodOverride()
     *
     * @param string $method The HTTP method for the request - 'GET', 'POST',
     *                       'PUT', 'DELETE'
     * @param string $url The URL to which this request is being performed,
     *                    or null if found in $data
     * @param array $headers An associative array of HTTP headers for this
     *                       request
     * @param mixed $data The Zend_Gdata_App_Entry or XML for the
     *                    body of the request
     * @param string $contentTypeOverride The override value for the
     *                                    content type of the request body
     * @return array An associative array containing the determined
     *               'method', 'url', 'data', 'headers', 'contentType'
     */
    public function prepareRequest($method,
                                   $url = null,
                                   $headers = array(),
                                   $data = null,
                                   $contentTypeOverride = null)
    {
        // As a convenience, if $headers is null, we'll convert it back to
        // an empty array.
        if (is_null($headers)) {
            $headers = array();
        }

        $rawData = null;
        $finalContentType = null;
        if ($url == null) {
            $url = $this->_defaultPostUri;
        }

        if (is_string($data)) {
            $rawData = $data;
            if ($contentTypeOverride === null) {
                $finalContentType = 'application/atom+xml';
            }
        } elseif ($data instanceof Zend_Gdata_App_MediaEntry) {
            $rawData = $data->encode();
            if ($data->getMediaSource() !== null) {
                $finalContentType = 'multipart/related; boundary="' . $data->getBoundary() . '"';
                $headers['MIME-version'] = '1.0';
                $headers['Slug'] = $data->getMediaSource()->getSlug();
            } else {
                $finalContentType = 'application/atom+xml';
            }
            if ($method == 'PUT' || $method == 'DELETE') {
                $editLink = $data->getEditLink();
                if ($editLink != null) {
                    $url = $editLink->getHref();
                }
            }
        } elseif ($data instanceof Zend_Gdata_App_Entry) {
            $rawData = $data->saveXML();
            $finalContentType = 'application/atom+xml';
            if ($method == 'PUT' || $method == 'DELETE') {
                $editLink = $data->getEditLink();
                if ($editLink != null) {
                    $url = $editLink->getHref();
                }
            }
        } elseif ($data instanceof Zend_Gdata_App_MediaSource) {
            $rawData = $data->encode();
            if ($data->getSlug() !== null) {
                $headers['Slug'] = $data->getSlug();
            }
            $finalContentType = $data->getContentType();
        }

        if ($method == 'DELETE') {
            $rawData = null;
        }

        // Set an If-Match header if:
        //   - This isn't a DELETE
        //   - If this isn't a GET, the Etag isn't weak
        //   - A similar header (If-Match/If-None-Match) hasn't already been
        //     set.
        if ($method != 'DELETE' && (
                !array_key_exists('If-Match', $headers) &&
                !array_key_exists('If-None-Match', $headers)
                ) ) {
            $allowWeak = $method == 'GET';
            if ($ifMatchHeader = $this->generateIfMatchHeaderData(
                    $data, $allowWeak)) {
                $headers['If-Match'] = $ifMatchHeader;
            }
        }

        if ($method != 'POST' && $method != 'GET' && Zend_Gdata_App::getHttpMethodOverride()) {
            $headers['x-http-method-override'] = $method;
            $method = 'POST';
        } else {
            $headers['x-http-method-override'] = null;
        }

        if ($contentTypeOverride != null) {
            $finalContentType = $contentTypeOverride;
        }

        return array('method' => $method, 'url' => $url, 'data' => $rawData, 'headers' => $headers, 'contentType' => $finalContentType);
    }

    /**
     * Performs a HTTP request using the specified method
     *
     * @param string $method The HTTP method for the request - 'GET', 'POST',
     *                       'PUT', 'DELETE'
     * @param string $url The URL to which this request is being performed
     * @param array $headers An associative array of HTTP headers
     *                       for this request
     * @param string $body The body of the HTTP request
     * @param string $contentType The value for the content type
     *                                of the request body
     * @param int $remainingRedirects Number of redirects to follow if request
     *                              s results in one
     * @return Zend_Http_Response The response object
     */
    public function performHttpRequest($method, $url, $headers = null, $body = null, $contentType = null, $remainingRedirects = null)
    {
        require_once 'Zend/Http/Client/Exception.php';
        if ($remainingRedirects === null) {
            $remainingRedirects = self::getMaxRedirects();
        }
        if ($headers === null) {
            $headers = array();
        }
        // Append a Gdata version header if protocol v2 or higher is in use.
        // (Protocol v1 does not use this header.)
        $major = $this->getMajorProtocolVersion();
        $minor = $this->getMinorProtocolVersion();
        if ($major >= 2) {
            $headers['GData-Version'] = $major +
                    (is_null($minor) ? '.' + $minor : '');
        }

        // check the overridden method
        if (($method == 'POST' || $method == 'PUT') && $body === null && $headers['x-http-method-override'] != 'DELETE') {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException(
                        'You must specify the data to post as either a ' .
                        'string or a child of Zend_Gdata_App_Entry');
        }
        if ($url === null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI to which to post.');
        }
        $headers['Content-Type'] = $contentType;
        if (Zend_Gdata_App::getGzipEnabled()) {
            // some services require the word 'gzip' to be in the user-agent header
            // in addition to the accept-encoding header
            if (strpos($this->_httpClient->getHeader('User-Agent'), 'gzip') === false) {
                $headers['User-Agent'] = $this->_httpClient->getHeader('User-Agent') . ' (gzip)';
            }
            $headers['Accept-encoding'] = 'gzip, deflate';
        } else {
            $headers['Accept-encoding'] = 'identity';
        }

        // Make sure the HTTP client object is 'clean' before making a request
        // In addition to standard headers to reset via resetParameters(),
        // also reset the Slug header
        $this->_httpClient->resetParameters();
        $this->_httpClient->setHeaders('Slug', null);

        // Set the params for the new request to be performed
        $this->_httpClient->setHeaders($headers);
        $this->_httpClient->setUri($url);
        $this->_httpClient->setConfig(array('maxredirects' => 0));
        $this->_httpClient->setRawData($body, $contentType);
        try {
            $response = $this->_httpClient->request($method);
        } catch (Zend_Http_Client_Exception $e) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
        }
        if ($response->isRedirect() && $response->getStatus() != '304') {
            if ($remainingRedirects > 0) {
                $newUrl = $response->getHeader('Location');
                $response = $this->performHttpRequest($method, $newUrl, $headers, $body, $contentType, $remainingRedirects);
            } else {
                require_once 'Zend/Gdata/App/HttpException.php';
                throw new Zend_Gdata_App_HttpException(
                        'Number of redirects exceeds maximum', null, $response);
            }
        }
        if (!$response->isSuccessful()) {
            require_once 'Zend/Gdata/App/HttpException.php';
            $exceptionMessage = 'Expected response code 200, got ' . $response->getStatus();
            if (self::getVerboseExceptionMessages()) {
                $exceptionMessage .= "\n" . $response->getBody();
            }
            $exception = new Zend_Gdata_App_HttpException($exceptionMessage);
            $exception->setResponse($response);
            throw $exception;
        }
        return $response;
    }

    /**
     * Imports a feed located at $uri.
     *
     * @param  string $uri
     * @param  Zend_Http_Client $client The client used for communication
     * @param  string $className The class which is used as the return type
     * @throws Zend_Gdata_App_Exception
     * @return Zend_Gdata_App_Feed
     */
    public static function import($uri, $client = null, $className='Zend_Gdata_App_Feed')
    {
        $app = new Zend_Gdata_App($client);
        $requestData = $app->prepareRequest('GET', $uri);
        $response = $app->performHttpRequest($requestData['method'], $requestData['url']);

        $feedContent = $response->getBody();
        $feed = self::importString($feedContent, $className);
        if ($client != null) {
            $feed->setHttpClient($client);
        }
        return $feed;
    }

    /**
     * Imports the specified URL (non-statically).
     *
     * @param  string $url The URL to import
     * @param  string $className The class which is used as the return type
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @throws Zend_Gdata_App_Exception
     * @return Zend_Gdata_App_Feed
     */
    public function importUrl($url, $className='Zend_Gdata_App_Feed', $extraHeaders = array())
    {
        $response = $this->get($url, $extraHeaders);

        $feedContent = $response->getBody();
        $feed = self::importString($feedContent, $className);

        $etag = $response->getHeader('ETag');
        if (!is_null($etag)) {
            $feed->setEtag($etag);
        }

        $protocolVersionStr = $response->getHeader('GData-Version');
        if (!is_null($protocolVersionStr)) {
            // Extract protocol major and minor version from header
            $delimiterPos = strpos($protocolVersionStr, '.');
            $length = strlen($protocolVersionStr);

            $major = substr($protocolVersionStr,
                            0,
                            $delimiterPos);
            $minor = substr($protocolVersionStr,
                            $delimiterPos + 1,
                            $length);
            $feed->setMajorProtocolVersion($major);
            $feed->setMinorProtocolVersion($minor);
        } else {
            $feed->setMajorProtocolVersion(null);
            $feed->setMinorProtocolVersion(null);
        }

        if ($this->getHttpClient() != null) {
            $feed->setHttpClient($this->getHttpClient());
        }
        return $feed;
    }


    /**
     * Imports a feed represented by $string.
     *
     * @param  string $string
     * @param  string $className The class which is used as the return type
     * @throws Zend_Gdata_App_Exception
     * @return Zend_Gdata_App_Feed
     */
    public static function importString($string, $className='Zend_Gdata_App_Feed')
    {
        // Load the feed as an XML DOMDocument object
        @ini_set('track_errors', 1);
        $doc = new DOMDocument();
        $success = @$doc->loadXML($string);
        @ini_restore('track_errors');

        if (!$success) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
        }
        $feed = new $className($string);
        $feed->setHttpClient(self::getstaticHttpClient());
        return $feed;
    }


    /**
     * Imports a feed from a file located at $filename.
     *
     * @param  string $filename
     * @param  string $className The class which is used as the return type
     * @param  string $useIncludePath Whether the include_path should be searched
     * @throws Zend_Gdata_App_Exception
     * @return Zend_Gdata_Feed
     */
    public static function importFile($filename,
            $className='Zend_Gdata_App_Feed', $useIncludePath = false)
    {
        @ini_set('track_errors', 1);
        $feed = @file_get_contents($filename, $useIncludePath);
        @ini_restore('track_errors');
        if ($feed === false) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("File could not be loaded: $php_errormsg");
        }
        return self::importString($feed, $className);
    }

    /**
     * GET a URI using client object.
     *
     * @param string $uri GET URI
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @throws Zend_Gdata_App_HttpException
     * @return Zend_Http_Response
     */
    public function get($uri, $extraHeaders = array())
    {
        $requestData = $this->prepareRequest('GET', $uri, $extraHeaders);
        return $this->performHttpRequest($requestData['method'], $requestData['url'], $requestData['headers']);
    }

    /**
     * POST data with client object
     *
     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
     * @param string $uri POST URI
     * @param array $headers Additional HTTP headers to insert.
     * @param string $contentType Content-type of the data
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Http_Response
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function post($data, $uri = null, $remainingRedirects = null,
            $contentType = null, $extraHeaders = null)
    {
        $requestData = $this->prepareRequest('POST', $uri, $extraHeaders,
                                             $data, $contentType);
        return $this->performHttpRequest(
                $requestData['method'], $requestData['url'],
                $requestData['headers'], $requestData['data'],
                $requestData['contentType']);
    }

    /**
     * PUT data with client object
     *
     * @param mixed $data The Zend_Gdata_App_Entry or XML to post
     * @param string $uri PUT URI
     * @param array $headers Additional HTTP headers to insert.
     * @param string $contentType Content-type of the data
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Http_Response
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function put($data, $uri = null, $remainingRedirects = null,
            $contentType = null, $extraHeaders = null)
    {
        $requestData = $this->prepareRequest('PUT', $uri, $extraHeaders, $data, $contentType);
        return $this->performHttpRequest(
                $requestData['method'], $requestData['url'],
                $requestData['headers'], $requestData['data'],
                $requestData['contentType']);
    }

    /**
     * DELETE entry with client object
     *
     * @param mixed $data The Zend_Gdata_App_Entry or URL to delete
     * @return void
     * @throws Zend_Gdata_App_Exception
     * @throws Zend_Gdata_App_HttpException
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function delete($data, $remainingRedirects = null)
    {
        if (is_string($data)) {
            $requestData = $this->prepareRequest('DELETE', $data);
        } else {
            $headers = array();

            $requestData = $this->prepareRequest('DELETE', null, $headers, $data);
        }
        return $this->performHttpRequest($requestData['method'],
                                         $requestData['url'],
                                         $requestData['headers'],
                                         '',
                                         $requestData['contentType'],
                                         $remainingRedirects);
    }

    /**
     * Inserts an entry to a given URI and returns the response as a fully formed Entry.
     * @param mixed  $data The Zend_Gdata_App_Entry or XML to post
     * @param string $uri POST URI
     * @param string $className The class of entry to be returned.
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Gdata_App_Entry The entry returned by the service after insertion.
     */
    public function insertEntry($data, $uri, $className='Zend_Gdata_App_Entry', $extraHeaders = array())
    {
        $response = $this->post($data, $uri, null, null, $extraHeaders);

        $returnEntry = new $className($response->getBody());
        $returnEntry->setHttpClient(self::getstaticHttpClient());

        $etag = $response->getHeader('ETag');
        if (!is_null($etag)) {
            $returnEntry->setEtag($etag);
        }

        return $returnEntry;
    }

    /**
     * Update an entry
     *
     * @param mixed $data Zend_Gdata_App_Entry or XML (w/ID and link rel='edit')
     * @param string|null The URI to send requests to, or null if $data
     *        contains the URI.
     * @param string|null The name of the class that should be deserialized
     *        from the server response. If null, then 'Zend_Gdata_App_Entry'
     *        will be used.
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Gdata_App_Entry The entry returned from the server
     * @throws Zend_Gdata_App_Exception
     */
    public function updateEntry($data, $uri = null, $className = null, $extraHeaders = array())
    {
        if ($className === null && $data instanceof Zend_Gdata_App_Entry) {
            $className = get_class($data);
        } elseif ($className === null) {
            $className = 'Zend_Gdata_App_Entry';
        }

        $response = $this->put($data, $uri, null, null, $extraHeaders);
        $returnEntry = new $className($response->getBody());
        $returnEntry->setHttpClient(self::getstaticHttpClient());

        $etag = $response->getHeader('ETag');
        if (!is_null($etag)) {
            $returnEntry->setEtag($etag);
        }

        return $returnEntry;
    }

    /**
     * Provides a magic factory method to instantiate new objects with
     * shorter syntax than would otherwise be required by the Zend Framework
     * naming conventions.  For instance, to construct a new
     * Zend_Gdata_Calendar_Extension_Color, a developer simply needs to do
     * $gCal->newColor().  For this magic constructor, packages are searched
     * in the same order as which they appear in the $_registeredPackages
     * array
     *
     * @param string $method The method name being called
     * @param array $args The arguments passed to the call
     * @throws Zend_Gdata_App_Exception
     */
    public function __call($method, $args)
    {
        if (preg_match('/^new(\w+)/', $method, $matches)) {
            $class = $matches[1];
            $foundClassName = null;
            foreach ($this->_registeredPackages as $name) {
                 try {
                     @Zend_Loader::loadClass("${name}_${class}");
                     $foundClassName = "${name}_${class}";
                     break;
                 } catch (Zend_Exception $e) {
                     // package wasn't here- continue searching
                 }
            }
            if ($foundClassName != null) {
                $reflectionObj = new ReflectionClass($foundClassName);
                $instance = $reflectionObj->newInstanceArgs($args);
                if ($instance instanceof Zend_Gdata_App_FeedEntryParent) {
                    $instance->setHttpClient($this->_httpClient);
                }
                return $instance;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception(
                        "Unable to find '${class}' in registered packages");
            }
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("No such method ${method}");
        }
    }

    /**
     * Retrieve all entries for a feed, iterating through pages as necessary.
     * Be aware that calling this function on a large dataset will take a
     * significant amount of time to complete. In some cases this may cause
     * execution to timeout without proper precautions in place.
     *
     * @param $feed The feed to iterate through.
     * @return mixed A new feed of the same type as the one originally
     *          passed in, containing all relevent entries.
     */
    public function retrieveAllEntriesForFeed($feed) {
        $feedClass = get_class($feed);
        $reflectionObj = new ReflectionClass($feedClass);
        $result = $reflectionObj->newInstance();
        do {
            foreach ($feed as $entry) {
                $result->addEntry($entry);
            }

            $next = $feed->getLink('next');
            if ($next !== null) {
                $feed = $this->getFeed($next->href, $feedClass);
            } else {
                $feed = null;
            }
        }
        while ($feed != null);
        return $result;
    }

    /**
     * This method enables logging of requests by changing the
     * Zend_Http_Client_Adapter used for performing the requests.
     * NOTE: This will not work if you have customized the adapter
     * already to use a proxy server or other interface.
     *
     * @param $logfile The logfile to use when logging the requests
     */
    public function enableRequestDebugLogging($logfile)
    {
        $this->_httpClient->setConfig(array(
            'adapter' => 'Zend_Gdata_App_LoggingHttpClientAdapterSocket',
            'logfile' => $logfile
            ));
    }

    /**
     * Retrieve next set of results based on a given feed.
     *
     * @param Zend_Gdata_App_Feed $feed The feed from which to
     *          retreive the next set of results.
     * @param string $className (optional) The class of feed to be returned.
     *          If null, the next feed (if found) will be the same class as
     *          the feed that was given as the first argument.
     * @return Zend_Gdata_App_Feed|null Returns a
     *          Zend_Gdata_App_Feed or null if no next set of results
     *          exists.
     */
    public function getNextFeed($feed, $className = null)
    {
        $nextLink = $feed->getNextLink();
        if (!$nextLink) {
            return null;
        }
        $nextLinkHref = $nextLink->getHref();

        if (is_null($className)) {
            $className = get_class($feed);
        }

        return $this->getFeed($nextLinkHref, $className);
    }

    /**
     * Retrieve previous set of results based on a given feed.
     *
     * @param Zend_Gdata_App_Feed $feed The feed from which to
     *          retreive the previous set of results.
     * @param string $className (optional) The class of feed to be returned.
     *          If null, the previous feed (if found) will be the same class as
     *          the feed that was given as the first argument.
     * @return Zend_Gdata_App_Feed|null Returns a
     *          Zend_Gdata_App_Feed or null if no previous set of results
     *          exists.
     */
    public function getPreviousFeed($feed, $className = null)
    {
        $previousLink = $feed->getPreviousLink();
        if (!$previousLink) {
            return null;
        }
        $previousLinkHref = $previousLink->getHref();

        if (is_null($className)) {
            $className = get_class($feed);
        }

        return $this->getFeed($previousLinkHref, $className);
    }

    /**
     * Returns the data for an If-Match header based on the current Etag
     * property. If Etags are not supported by the server or cannot be
     * extracted from the data, then null will be returned.
     *
     * @param boolean $allowWeak If false, then if a weak Etag is detected,
     *        then return null rather than the Etag.
     * @return string|null $data
     */
    public function generateIfMatchHeaderData($data, $allowWeek)
    {
        $result = '';
        // Set an If-Match header if an ETag has been set (version >= 2 only)
        if ($this->_majorProtocolVersion >= 2 &&
                $data instanceof Zend_Gdata_App_Entry) {
            $etag = $data->getEtag();
            if (!is_null($etag) &&
                    ($allowWeek || substr($etag, 0, 2) != 'W/')) {
                $result = $data->getEtag();
            }
        }
        return $result;
    }

}
PKpG[yF��YYGdata/App/Extension.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Base
 */
require_once 'Zend/Gdata/App/Base.php';

/**
 * Gdata App extensions
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_Extension extends Zend_Gdata_App_Base
{
}
PKpG[��cA��&Gdata/App/InvalidArgumentException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Gdata exceptions
 *
 * Class to represent exceptions that occur during Gdata operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_InvalidArgumentException extends Zend_Gdata_App_Exception
{
}
PKpG[��C�Gdata/App/Extension/Title.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Text
 */
require_once 'Zend/Gdata/App/Extension/Text.php';

/**
 * Represents the atom:title element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Title extends Zend_Gdata_App_Extension_Text
{

    protected $_rootElement = 'title';

}
PKpG[(?_Gdata/App/Extension/Icon.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:icon element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Icon extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'icon';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�d�DGdata/App/Extension/Uri.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an uri
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:uri element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Uri extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'uri';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�nP�Gdata/App/Extension/Email.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:email element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Email extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'email';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�5���Gdata/App/Extension/Summary.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Text
 */
require_once 'Zend/Gdata/App/Extension/Text.php';

/**
 * Represents the atom:summary element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Summary extends Zend_Gdata_App_Extension_Text
{

    protected $_rootElement = 'summary';

}
PKpG[�9���Gdata/App/Extension/Content.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Text
 */
require_once 'Zend/Gdata/App/Extension/Text.php';

/**
 * Represents the atom:content element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Content extends Zend_Gdata_App_Extension_Text
{

    protected $_rootElement = 'content';
    protected $_src = null;

    public function __construct($text = null, $type = 'text', $src = null)
    {
        parent::__construct($text, $type);
        $this->_src = $src;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_src !== null) {
            $element->setAttribute('src', $this->_src);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'src':
            $this->_src = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string
     */
    public function getSrc()
    {
        return $this->_src;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setSrc($value)
    {
        $this->_src = $value;
        return $this;
    }

}
PKpG[�\2��� Gdata/App/Extension/Subtitle.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Text
 */
require_once 'Zend/Gdata/App/Extension/Text.php';

/**
 * Represents the atom:subtitle element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Subtitle extends Zend_Gdata_App_Extension_Text
{

    protected $_rootElement = 'subtitle';

}
PKpG[�o�c\
\
Gdata/App/Extension/Control.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * @see Zend_Gdata_App_Extension_Draft
 */
require_once 'Zend/Gdata/App/Extension/Draft.php';

/**
 * Represents the app:control element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Control extends Zend_Gdata_App_Extension
{

    protected $_rootNamespace = 'app';
    protected $_rootElement = 'control';
    protected $_draft = null;

    public function __construct($draft = null)
    {
        parent::__construct();
        $this->_draft = $draft;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_draft != null) {
            $element->appendChild($this->_draft->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('app') . ':' . 'draft':
            $draft = new Zend_Gdata_App_Extension_Draft();
            $draft->transferFromDOM($child);
            $this->_draft = $draft;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * @return Zend_Gdata_App_Extension_Draft
     */
    public function getDraft()
    {
        return $this->_draft;
    }

    /**
     * @param Zend_Gdata_App_Extension_Draft $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setDraft($value)
    {
        $this->_draft = $value;
        return $this;
    }

}
PKpG[�����Gdata/App/Extension/Author.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension/Person.php';

/**
 * Represents the atom:author element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Author extends Zend_Gdata_App_Extension_Person
{

    protected $_rootElement = 'author';

}
PKpG[�N��<<Gdata/App/Extension/Person.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * @see Zend_Gdata_App_Extension_Name
 */
require_once 'Zend/Gdata/App/Extension/Name.php';

/**
 * @see Zend_Gdata_App_Extension_Email
 */
require_once 'Zend/Gdata/App/Extension/Email.php';

/**
 * @see Zend_Gdata_App_Extension_Uri
 */
require_once 'Zend/Gdata/App/Extension/Uri.php';

/**
 * Base class for people (currently used by atom:author, atom:contributor)
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_Extension_Person extends Zend_Gdata_App_Extension
{

    protected $_rootElement = null;
    protected $_name = null;
    protected $_email = null;
    protected $_uri = null;

    public function __construct($name = null, $email = null, $uri = null)
    {
        parent::__construct();
        $this->_name = $name;
        $this->_email = $email;
        $this->_uri = $uri;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_name != null) {
            $element->appendChild($this->_name->getDOM($element->ownerDocument));
        }
        if ($this->_email != null) {
            $element->appendChild($this->_email->getDOM($element->ownerDocument));
        }
        if ($this->_uri != null) {
            $element->appendChild($this->_uri->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'name':
            $name = new Zend_Gdata_App_Extension_Name();
            $name->transferFromDOM($child);
            $this->_name = $name;
            break;
        case $this->lookupNamespace('atom') . ':' . 'email':
            $email = new Zend_Gdata_App_Extension_Email();
            $email->transferFromDOM($child);
            $this->_email = $email;
            break;
        case $this->lookupNamespace('atom') . ':' . 'uri':
            $uri = new Zend_Gdata_App_Extension_Uri();
            $uri->transferFromDOM($child);
            $this->_uri = $uri;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * @return Zend_Gdata_App_Extension_Name
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * @param Zend_Gdata_App_Extension_Name $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setName($value)
    {
        $this->_name = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_App_Extension_Email
     */
    public function getEmail()
    {
        return $this->_email;
    }

    /**
     * @param Zend_Gdata_App_Extension_Email $value
     * @return Zend_Gdata_App_Extension_Person Provides a fluent interface
     */
    public function setEmail($value)
    {
        $this->_email = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_App_Extension_Uri
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * @param Zend_Gdata_App_Extension_Uri $value
     * @return Zend_Gdata_App_Extension_Person Provides a fluent interface
     */
    public function setUri($value)
    {
        $this->_uri = $value;
        return $this;
    }

}
PKpG[�t'�
�
 Gdata/App/Extension/Category.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:category element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Category extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'category';
    protected $_term = null;
    protected $_scheme = null;
    protected $_label = null;

    public function __construct($term = null, $scheme = null, $label=null)
    {
        parent::__construct();
        $this->_term = $term;
        $this->_scheme = $scheme;
        $this->_label = $label;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_term !== null) {
            $element->setAttribute('term', $this->_term);
        }
        if ($this->_scheme !== null) {
            $element->setAttribute('scheme', $this->_scheme);
        }
        if ($this->_label !== null) {
            $element->setAttribute('label', $this->_label);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'term':
            $this->_term = $attribute->nodeValue;
            break;
        case 'scheme':
            $this->_scheme = $attribute->nodeValue;
            break;
        case 'label':
            $this->_label = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string|null
     */
    public function getTerm()
    {
        return $this->_term;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
     */
    public function setTerm($value)
    {
        $this->_term = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getScheme()
    {
        return $this->_scheme;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
     */
    public function setScheme($value)
    {
        $this->_scheme = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getLabel()
    {
        return $this->_label;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Extension_Category Provides a fluent interface
     */
    public function setLabel($value)
    {
        $this->_label = $value;
        return $this;
    }

}
PKpG[Pjk���Gdata/App/Extension/Link.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model for representing an atom:link element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Link extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'link';
    protected $_href = null;
    protected $_rel = null;
    protected $_type = null;
    protected $_hrefLang = null;
    protected $_title = null;
    protected $_length = null;

    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        parent::__construct();
        $this->_href = $href;
        $this->_rel = $rel;
        $this->_type = $type;
        $this->_hrefLang = $hrefLang;
        $this->_title = $title;
        $this->_length = $length;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_href !== null) {
            $element->setAttribute('href', $this->_href);
        }
        if ($this->_rel !== null) {
            $element->setAttribute('rel', $this->_rel);
        }
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        if ($this->_hrefLang !== null) {
            $element->setAttribute('hreflang', $this->_hrefLang);
        }
        if ($this->_title !== null) {
            $element->setAttribute('title', $this->_title);
        }
        if ($this->_length !== null) {
            $element->setAttribute('length', $this->_length);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'href':
            $this->_href = $attribute->nodeValue;
            break;
        case 'rel':
            $this->_rel = $attribute->nodeValue;
            break;
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        case 'hreflang':
            $this->_hrefLang = $attribute->nodeValue;
            break;
        case 'title':
            $this->_title = $attribute->nodeValue;
            break;
        case 'length':
            $this->_length = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return string|null
     */
    public function getHref()
    {
        return $this->_href;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setHref($value)
    {
        $this->_href = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getRel()
    {
        return $this->_rel;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setRel($value)
    {
        $this->_rel = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getHrefLang()
    {
        return $this->_hrefLang;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setHrefLang($value)
    {
        $this->_hrefLang = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setTitle($value)
    {
        $this->_title = $value;
        return $this;
    }

    /**
     * @return string|null
     */
    public function getLength()
    {
        return $this->_length;
    }

    /**
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setLength($value)
    {
        $this->_length = $value;
        return $this;
    }

}
PKpG[R"�{��Gdata/App/Extension/Source.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Entry
 */
require_once 'Zend/Gdata/App/Entry.php';

/**
 * @see Zend_Gdata_App_FeedSourceParent
 */
require_once 'Zend/Gdata/App/FeedSourceParent.php';

/**
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Source extends Zend_Gdata_App_FeedSourceParent
{

    protected $_rootElement = 'source';

}
PKpG[�fGdata/App/Extension/Name.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:name element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Name extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'name';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }
}
PKpG[W�TDGdata/App/Extension/Logo.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:logo element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Logo extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'logo';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�X�n!Gdata/App/Extension/Published.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:published element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Published extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'published';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[!h�>

Gdata/App/Extension/Id.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:id element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Id extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'id';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[�ׇ�Gdata/App/Extension/Updated.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:updated element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Updated extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'updated';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���199Gdata/App/Extension/Draft.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the app:draft element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Draft extends Zend_Gdata_App_Extension
{

    protected $_rootNamespace = 'app';
    protected $_rootElement = 'draft';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[E@�%%Gdata/App/Extension/Rights.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Text
 */
require_once 'Zend/Gdata/App/Extension/Text.php';

/**
 * Represents the atom:rights element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Rights extends Zend_Gdata_App_Extension_Text
{

    protected $_rootElement = 'rights';

    public function __construct($text = null)
    {
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[���C	C	Gdata/App/Extension/Text.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Abstract class for data models that require only text and type-- such as:
 * title, summary, etc.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_Extension_Text extends Zend_Gdata_App_Extension
{

    protected $_rootElement = null;
    protected $_type = 'text';

    public function __construct($text = null, $type = 'text')
    {
        parent::__construct();
        $this->_text = $text;
        $this->_type = $type;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /*
     * @return Zend_Gdata_App_Extension_Type
     */
    public function getType()
    {
        return $this->_type;
    }

    /*
     * @param string $value
     * @return Zend_Gdata_App_Extension_Text Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

}
PKpG[ꧮS��!Gdata/App/Extension/Generator.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Represents the atom:generator element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Generator extends Zend_Gdata_App_Extension
{

    protected $_rootElement = 'generator';
    protected $_uri = null;
    protected $_version = null;

    public function __construct($text = null, $uri = null, $version = null)
    {
        parent::__construct();
        $this->_text = $text;
        $this->_uri = $uri;
        $this->_version = $version;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_uri !== null) {
            $element->setAttribute('uri', $this->_uri);
        }
        if ($this->_version !== null) {
            $element->setAttribute('version', $this->_version);
        }
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'uri':
            $this->_uri = $attribute->nodeValue;
            break;
        case 'version':
            $this->_version= $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * @return Zend_Gdata_App_Extension_Uri
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * @param Zend_Gdata_App_Extension_Uri $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setUri($value)
    {
        $this->_uri = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_App_Extension_Version
     */
    public function getVersion()
    {
        return $this->_version;
    }

    /**
     * @param Zend_Gdata_App_Extension_Version $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setVersion($value)
    {
        $this->_version = $value;
        return $this;
    }

}
PKpG[;�Q���#Gdata/App/Extension/Contributor.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension/Person.php';

/**
 * Represents the atom:contributor element
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Contributor extends Zend_Gdata_App_Extension_Person
{

    protected $_rootElement = 'contributor';

}
PKpG[�|���Gdata/App/Extension/Element.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension
 */
require_once 'Zend/Gdata/App/Extension.php';

/**
 * Class that represents elements which were not handled by other parsing
 * code in the library.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Extension_Element extends Zend_Gdata_App_Extension
{

    public function __construct($rootElement=null, $rootNamespace=null, $rootNamespaceURI=null, $text=null){
        parent::__construct();
        $this->_rootElement = $rootElement;
        $this->_rootNamespace = $rootNamespace;
        $this->_rootNamespaceURI = $rootNamespaceURI;
        $this->_text = $text;
    }

    public function transferFromDOM($node)
    {
        parent::transferFromDOM($node);
        $this->_rootNamespace = null;
        $this->_rootNamespaceURI = $node->namespaceURI;
        $this->_rootElement = $node->localName;
    }

}
PKpG[��@�
�
&Gdata/App/CaptchaRequiredException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_CaptchaRequiredException
 */
require_once 'Zend/Gdata/App/AuthException.php';

/**
 * Gdata exceptions
 *
 * Class to represent an exception that occurs during the use of ClientLogin.
 * This particular exception happens when a CAPTCHA challenge is issued. This
 * challenge is a visual puzzle presented to the user to prove that they are
 * not an automated system.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_CaptchaRequiredException extends Zend_Gdata_App_AuthException
{
    /**
     * The Google Accounts URL prefix.
     */
    const ACCOUNTS_URL = 'https://www.google.com/accounts/';
    
    /**
     * The token identifier from the server.
     * 
     * @var string
     */
    private $captchaToken;
    
    /**
     * The URL of the CAPTCHA image.
     * 
     * @var string
     */
    private $captchaUrl;
    
    /**
     * Constructs the exception to handle a CAPTCHA required response.
     * 
     * @param string $captchaToken The CAPTCHA token ID provided by the server.
     * @param string $captchaUrl The URL to the CAPTCHA challenge image.
     */
    public function __construct($captchaToken, $captchaUrl) {
        $this->captchaToken = $captchaToken;
        $this->captchaUrl = Zend_Gdata_App_CaptchaRequiredException::ACCOUNTS_URL . $captchaUrl;
        parent::__construct('CAPTCHA challenge issued by server');
    }
    
    /**
     * Retrieves the token identifier as provided by the server.
     * 
     * @return string
     */
    public function getCaptchaToken() {
        return $this->captchaToken;
    }
    
    /**
     * Retrieves the URL CAPTCHA image as provided by the server.
     * 
     * @return string
     */
    public function getCaptchaUrl() {
        return $this->captchaUrl;
    }
    
}
PKpG[,�c%��Gdata/App/AuthException.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Gdata exceptions
 *
 * Class to represent exceptions that occur during Gdata operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_AuthException extends Zend_Gdata_App_Exception
{
}
PKpG[��G~��Gdata/App/Util.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Utility class for static functions needed by Zend_Gdata_App
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Util
{

    /**
     *  Convert timestamp into RFC 3339 date string.
     *  2005-04-19T15:30:00
     *
     * @param int $timestamp
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public static function formatTimestamp($timestamp)
    {
        $rfc3339 = '/^(\d{4})\-?(\d{2})\-?(\d{2})((T|t)(\d{2})\:?(\d{2})' .
                   '\:?(\d{2})(\.\d{1,})?((Z|z)|([\+\-])(\d{2})\:?(\d{2})))?$/';

        if (ctype_digit($timestamp)) {
            return gmdate('Y-m-d\TH:i:sP', $timestamp);
        } elseif (preg_match($rfc3339, $timestamp) > 0) {
            // timestamp is already properly formatted
            return $timestamp;
        } else {
            $ts = strtotime($timestamp);
            if ($ts === false) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException("Invalid timestamp: $timestamp.");
            }
            return date('Y-m-d\TH:i:s', $ts);
        }
    }

    /** Find the greatest key that is less than or equal to a given upper
      * bound, and return the value associated with that key.
      *
      * @param integer|null $maximumKey The upper bound for keys. If null, the
      *        maxiumum valued key will be found.
      * @param array $collection An two-dimensional array of key/value pairs
      *        to search through.
      * @returns mixed The value corresponding to the located key.
      * @throws Zend_Gdata_App_Exception Thrown if $collection is empty.
      */
    public static function findGreatestBoundedValue($maximumKey, $collection)
    {
        $found = false;
        $foundKey = $maximumKey;

        // Sanity check: Make sure that the collection isn't empty
        if (sizeof($collection) == 0) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("Empty namespace collection encountered.");
        }

        if (is_null($maximumKey)) {
            // If the key is null, then we return the maximum available
            $keys = array_keys($collection);
            sort($keys);
            $found = true;
            $foundKey = end($keys);
        } else {
            // Otherwise, we optimistically guess that the current version
            // will have a matching namespce. If that fails, we decrement the
            // version until we find a match.
            while (!$found && $foundKey >= 0) {
                if (array_key_exists($foundKey, $collection))
                    $found = true;
                else
                    $foundKey--;
            }
        }

        // Guard: A namespace wasn't found. Either none were registered, or
        // the current protcol version is lower than the maximum namespace.
        if (!$found) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception("Namespace compatible with current protocol not found.");
        }

        return $foundKey;
    }

}
PKpG[�'#��*�*Gdata/App/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_FeedEntryParent
 */
require_once 'Zend/Gdata/App/FeedEntryParent.php';

/**
 * @see Zend_Gdata_App_Extension_Content
 */
require_once 'Zend/Gdata/App/Extension/Content.php';

/**
 * @see Zend_Gdata_App_Extension_Published
 */
require_once 'Zend/Gdata/App/Extension/Published.php';

/**
 * @see Zend_Gdata_App_Extension_Source
 */
require_once 'Zend/Gdata/App/Extension/Source.php';

/**
 * @see Zend_Gdata_App_Extension_Summary
 */
require_once 'Zend/Gdata/App/Extension/Summary.php';

/**
 * @see Zend_Gdata_App_Extension_Control
 */
require_once 'Zend/Gdata/App/Extension/Control.php';

/**
 * Concrete class for working with Atom entries.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Entry extends Zend_Gdata_App_FeedEntryParent
{

    /**
     * Root XML element for Atom entries.
     *
     * @var string
     */
    protected $_rootElement = 'entry';

    /**
     * Class name for each entry in this feed*
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_App_Entry';

    /**
     * atom:content element
     *
     * @var Zend_Gdata_App_Extension_Content
     */
    protected $_content = null;

    /**
     * atom:published element
     *
     * @var Zend_Gdata_App_Extension_Published
     */
    protected $_published = null;

    /**
     * atom:source element
     *
     * @var Zend_Gdata_App_Extension_Source
     */
    protected $_source = null;

    /**
     * atom:summary element
     *
     * @var Zend_Gdata_App_Extension_Summary
     */
    protected $_summary = null;

    /**
     * app:control element
     *
     * @var Zend_Gdata_App_Extension_Control
     */
    protected $_control = null;

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_content != null) {
            $element->appendChild($this->_content->getDOM($element->ownerDocument));
        }
        if ($this->_published != null) {
            $element->appendChild($this->_published->getDOM($element->ownerDocument));
        }
        if ($this->_source != null) {
            $element->appendChild($this->_source->getDOM($element->ownerDocument));
        }
        if ($this->_summary != null) {
            $element->appendChild($this->_summary->getDOM($element->ownerDocument));
        }
        if ($this->_control != null) {
            $element->appendChild($this->_control->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'content':
            $content = new Zend_Gdata_App_Extension_Content();
            $content->transferFromDOM($child);
            $this->_content = $content;
            break;
        case $this->lookupNamespace('atom') . ':' . 'published':
            $published = new Zend_Gdata_App_Extension_Published();
            $published->transferFromDOM($child);
            $this->_published = $published;
            break;
        case $this->lookupNamespace('atom') . ':' . 'source':
            $source = new Zend_Gdata_App_Extension_Source();
            $source->transferFromDOM($child);
            $this->_source = $source;
            break;
        case $this->lookupNamespace('atom') . ':' . 'summary':
            $summary = new Zend_Gdata_App_Extension_Summary();
            $summary->transferFromDOM($child);
            $this->_summary = $summary;
            break;
        case $this->lookupNamespace('app') . ':' . 'control':
            $control = new Zend_Gdata_App_Extension_Control();
            $control->transferFromDOM($child);
            $this->_control = $control;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Uploads changes in this entry to the server using Zend_Gdata_App
     *
     * @param string|null $uri The URI to send requests to, or null if $data
     *        contains the URI.
     * @param string|null $className The name of the class that should we
     *        deserializing the server response. If null, then
     *        'Zend_Gdata_App_Entry' will be used.
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Gdata_App_Entry The updated entry.
     * @throws Zend_Gdata_App_Exception
     */
    public function save($uri = null, $className = null, $extraHeaders = array())
    {
        return $this->getService()->updateEntry($this,
                                                $uri,
                                                $className,
                                                $extraHeaders);
    }

    /**
     * Deletes this entry to the server using the referenced
     * Zend_Http_Client to do a HTTP DELETE to the edit link stored in this
     * entry's link collection.
     *
     * @return void
     * @throws Zend_Gdata_App_Exception
     */
    public function delete()
    {
        $this->getService()->delete($this);
    }

    /**
     * Reload the current entry. Returns a new copy of the entry as returned
     * by the server, or null if no changes exist. This does not
     * modify the current entry instance.
     *
     * @param string|null The URI to send requests to, or null if $data
     *        contains the URI.
     * @param string|null The name of the class that should we deserializing
     *        the server response. If null, then 'Zend_Gdata_App_Entry' will
     *        be used.
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return mixed A new instance of the current entry with updated data, or
     *         null if the server reports that no changes have been made.
     * @throws Zend_Gdata_App_Exception
     */
    public function reload($uri = null, $className = null, $extraHeaders = array())
    {
        // Get URI
        $editLink = $this->getEditLink();
        if (is_null($uri) && $editLink != null) {
            $uri = $editLink->getHref();
        }
        
        // Set classname to current class, if not otherwise set
        if (is_null($className)) {
            $className = get_class($this);
        }
        
        // Append ETag, if present (Gdata v2 and above, only) and doesn't
        // conflict with existing headers
        if ($this->_etag != null
                && !array_key_exists('If-Match', $extraHeaders)
                && !array_key_exists('If-None-Match', $extraHeaders)) {
            $extraHeaders['If-None-Match'] = $this->_etag;
        }
        
        // If an HTTP 304 status (Not Modified)is returned, then we return
        // null.
        $result = null;
        try {
            $result = $this->service->importUrl($uri, $className, $extraHeaders);
        } catch (Zend_Gdata_App_HttpException $e) {
            if ($e->getResponse()->getStatus() != '304')
                throw $e;
        }
        
        return $result;
    }

    /**
     * Gets the value of the atom:content element
     *
     * @return Zend_Gdata_App_Extension_Content
     */
    public function getContent()
    {
        return $this->_content;
    }

    /**
     * Sets the value of the atom:content element
     *
     * @param Zend_Gdata_App_Extension_Content $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setContent($value)
    {
        $this->_content = $value;
        return $this;
    }

    /**
     * Sets the value of the atom:published element
     * This represents the publishing date for an entry
     *
     * @return Zend_Gdata_App_Extension_Published
     */
    public function getPublished()
    {
        return $this->_published;
    }

    /**
     * Sets the value of the atom:published element
     * This represents the publishing date for an entry
     *
     * @param Zend_Gdata_App_Extension_Published $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setPublished($value)
    {
        $this->_published = $value;
        return $this;
    }

    /**
     * Gets the value of the atom:source element
     *
     * @return Zend_Gdata_App_Extension_Source
     */
    public function getSource()
    {
        return $this->_source;
    }

    /**
     * Sets the value of the atom:source element
     *
     * @param Zend_Gdata_App_Extension_Source $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setSource($value)
    {
        $this->_source = $value;
        return $this;
    }

    /**
     * Gets the value of the atom:summary element
     * This represents a textual summary of this entry's content
     *
     * @return Zend_Gdata_App_Extension_Summary
     */
    public function getSummary()
    {
        return $this->_summary;
    }

    /**
     * Sets the value of the atom:summary element
     * This represents a textual summary of this entry's content
     *
     * @param Zend_Gdata_App_Extension_Summary $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setSummary($value)
    {
        $this->_summary = $value;
        return $this;
    }

    /**
     * Gets the value of the app:control element
     *
     * @return Zend_Gdata_App_Extension_Control
     */
    public function getControl()
    {
        return $this->_control;
    }

    /**
     * Sets the value of the app:control element
     *
     * @param Zend_Gdata_App_Extension_Control $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setControl($value)
    {
        $this->_control = $value;
        return $this;
    }

}
PKpG[h�3sppGdata/App/MediaFileSource.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_MediaData
 */
require_once 'Zend/Gdata/App/BaseMediaSource.php';

/**
 * Concrete class to use a file handle as an attachment within a MediaEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_MediaFileSource extends Zend_Gdata_App_BaseMediaSource
{
    /**
     * The filename which is represented
     *
     * @var string 
     */
    protected $_filename = null;

    /**
     * The content type for the file attached (example image/png)
     *
     * @var string
     */
    protected $_contentType = null;
    
    /**
     * Create a new Zend_Gdata_App_MediaFileSource object.
     *
     * @param string $filename The name of the file to read from.
     */
    public function __construct($filename)
    {
        $this->setFilename($filename);
    }
    
    /**
     * Return the MIME multipart representation of this MediaEntry.
     *
     * @return string
     * @throws Zend_Gdata_App_IOException
     */
    public function encode()
    {
        if ($this->getFilename() !== null && 
            is_readable($this->getFilename())) {

            // Retrieves the file, using the include path
            $fileHandle = fopen($this->getFilename(), 'r', true);
            $result = fread($fileHandle, filesize($this->getFilename()));
            if ($result === false) {
                require_once 'Zend/Gdata/App/IOException.php';
                throw new Zend_Gdata_App_IOException("Error reading file - " .
                        $this->getFilename() . '. Read failed.');
            }
            fclose($fileHandle);
            return $result;
        } else {
            require_once 'Zend/Gdata/App/IOException.php';
            throw new Zend_Gdata_App_IOException("Error reading file - " . 
                    $this->getFilename() . '. File is not readable.');
        }
    }
    
    /**
     * Get the filename associated with this reader.
     *
     * @return string
     */
    public function getFilename()
    {
        return $this->_filename;
    }

    /**
     * Set the filename which is to be read.
     * 
     * @param string $value The desired file handle.
     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface.
     */
    public function setFilename($value)
    {
        $this->_filename = $value;
        return $this;
    }
   
    /** 
     * The content type for the file attached (example image/png)
     *
     * @return string The content type
     */
    public function getContentType()
    {
        return $this->_contentType;
    }

    /** 
     * Set the content type for the file attached (example image/png)
     *
     * @param string $value The content type
     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
     */
    public function setContentType($value)
    {
        $this->_contentType = $value;
        return $this;
    }
    
    /**
     * Alias for getFilename().
     *
     * @return string
     */
    public function __toString()
    {
        return $this->getFilename();
    }
    
}
PKpG[�U
�

,Gdata/App/LoggingHttpClientAdapterSocket.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @version    $Id: Socket.php 8064 2008-02-16 10:58:39Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Http/Client/Adapter/Socket.php';

/**
 * Overrides the traditional socket-based adapter class for Zend_Http_Client to 
 * enable logging of requests.  All requests are logged to a location specified
 * in the config as $config['logfile'].  Requests and responses are logged after
 * they are sent and received/processed, thus an error could prevent logging.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_LoggingHttpClientAdapterSocket extends Zend_Http_Client_Adapter_Socket
{

    /**
     * The file handle for writing logs
     *
     * @var resource|null
     */
    protected $log_handle = null;

    /**
     * Log the given message to the log file.  The log file is configured
     * as the config param 'logfile'.  This method opens the file for
     * writing if necessary.
     *
     * @param string $message The message to log
     */
    protected function log($message)
    {
        if ($this->log_handle == null) {
            $this->log_handle = fopen($this->config['logfile'], 'a');
        }
        fwrite($this->log_handle, $message);
    }

    /**
     * Connect to the remote server
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     * @param int     $timeout
     */
    public function connect($host, $port = 80, $secure = false)
    {
        $this->log("Connecting to: ${host}:${port}");
        return parent::connect($host, $port, $secure);
    }

    /**
     * Send request to the remote server
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        $request = parent::write($method, $uri, $http_ver, $headers, $body);
        $this->log("\n\n" . $request);
        return $request;
    }

    /**
     * Read response from server
     *
     * @return string
     */
    public function read()
    {
        $response = parent::read();
        $this->log("${response}\n\n");
        return $response;
    }

    /**
     * Close the connection to the server
     *
     */
    public function close()
    {
        $this->log("Closing socket\n\n");
        parent::close();
    }

}
PKpG[���(Gdata/App/MediaEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Entry
 */
require_once 'Zend/Gdata/App/Entry.php';

/**
 * @see Zend_Gdata_App_MediaSource
 */
require_once 'Zend/Gdata/App/MediaSource.php';

/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * @see Zend_Mime_Message
 */
require_once 'Zend/Mime/Message.php';


/**
 * Concrete class for working with Atom entries containing multi-part data.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_MediaEntry extends Zend_Gdata_App_Entry
{
    /**
     * The attached MediaSource/file
     *
     * @var Zend_Gdata_App_MediaSource 
     */
    protected $_mediaSource = null;

    /**
     * The Zend_Mime object used to generate the boundary
     *
     * @var Zend_Mime 
     */
    protected $_mime = null;
   
    /**
     * Constructs a new MediaEntry, representing XML data and optional
     * file to upload
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null, $mediaSource = null)
    {
        parent::__construct($element);
        $this->_mime = new Zend_Mime();
        $this->_mediaSource = $mediaSource;
    }
 
    /**
     * Return the Zend_Mime object associated with this MediaEntry.  This
     * object is used to generate the media boundaries.
     * 
     * @return Zend_Mime The Zend_Mime object associated with this MediaEntry.
     */
    public function getMime()
    {
        return $this->_mime;
    }
    
    /**
     * Return the MIME multipart representation of this MediaEntry.
     *
     * @return string The MIME multipart representation of this MediaEntry
     */
    public function encode()
    {
        $xmlData = $this->saveXML();
        if ($this->getMediaSource() === null) {
            // No attachment, just send XML for entry
            return $xmlData;
        } else {
            $mimeMessage = new Zend_Mime_Message();
            $mimeMessage->setMime($this->_mime);
           
            $xmlPart = new Zend_Mime_Part($xmlData);
            $xmlPart->type = 'application/atom+xml';
            $xmlPart->encoding = null;
            $mimeMessage->addPart($xmlPart);
            
            $binaryPart = new Zend_Mime_Part($this->getMediaSource()->encode());
            $binaryPart->type = $this->getMediaSource()->getContentType();
            $binaryPart->encoding = null;
            $mimeMessage->addPart($binaryPart);

            return $mimeMessage->generateMessage();
        }
    }
   
    /**
     * Return the MediaSource object representing the file attached to this
     * MediaEntry.
     *
     * @return Zend_Gdata_App_MediaSource The attached MediaSource/file
     */
    public function getMediaSource()
    {
        return $this->_mediaSource;
    }

    /**
     * Set the MediaSource object (file) for this MediaEntry
     *
     * @param Zend_Gdata_App_MediaSource $value The attached MediaSource/file
     * @return Zend_Gdata_App_MediaEntry Provides a fluent interface
     */
    public function setMediaSource($value)
    {
        if ($value instanceof Zend_Gdata_App_MediaSource) {
            $this->_mediaSource = $value;
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'You must specify the media data as a class that conforms to Zend_Gdata_App_MediaSource.');
        }
        return $this;
    }
    
    /**
     * Return the boundary used in the MIME multipart message
     *
     * @return string The boundary used in the MIME multipart message 
     */
    public function getBoundary()
    {
        return $this->_mime->boundary();
    }

}
PKpG["C�8GGGdata/App/BaseMediaSource.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_MediaSource
 */
require_once 'Zend/Gdata/App/MediaSource.php';

/**
 * Concrete class to use a file handle as an attachment within a MediaEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_BaseMediaSource implements Zend_Gdata_App_MediaSource
{

    /**
     * The content type for the attached file (example image/png)
     *
     * @var string
     */
    protected $_contentType = null;

    /**
     * The slug header value representing the attached file title, or null if
     * no slug should be used.  The slug header is only necessary in some cases,
     * usually when a multipart upload is not being performed.
     *
     * @var string
     */
    protected $_slug = null;
    
    /** 
     * The content type for the attached file (example image/png)
     *
     * @return string The content type
     */
    public function getContentType()
    {
        return $this->_contentType;
    }

    /** 
     * Set the content type for the file attached (example image/png)
     *
     * @param string $value The content type
     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
     */
    public function setContentType($value)
    {
        $this->_contentType = $value;
        return $this;
    }

    /**
     * Returns the Slug header value.  Used by some services to determine the 
     * title for the uploaded file.  Returns null if no slug should be used.
     *
     * @return string
     */
    public function getSlug(){
        return $this->_slug;
    }

    /**
     * Sets the Slug header value.  Used by some services to determine the 
     * title for the uploaded file.  A null value indicates no slug header.
     *
     * @var string The slug value
     * @return Zend_Gdata_App_MediaSource Provides a fluent interface
     */
    public function setSlug($value){
        $this->_slug = $value;
        return $this;
    }


    /**
     * Magic getter to allow acces like $source->foo to call $source->getFoo()
     * Alternatively, if no getFoo() is defined, but a $_foo protected variable
     * is defined, this is returned.
     *
     * TODO Remove ability to bypass getFoo() methods??
     *
     * @param string $name The variable name sought
     */
    public function __get($name)
    {
        $method = 'get'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method));
        } else if (property_exists($this, "_${name}")) {
            return $this->{'_' . $name};
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . ' does not exist');
        }
    }

    /**
     * Magic setter to allow acces like $source->foo='bar' to call
     * $source->setFoo('bar') automatically.
     *
     * Alternatively, if no setFoo() is defined, but a $_foo protected variable
     * is defined, this is returned.
     *
     * @param string $name
     * @param string $value
     */
    public function __set($name, $val)
    {
        $method = 'set'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method), $val);
        } else if (isset($this->{'_' . $name}) || is_null($this->{'_' . $name})) {
            $this->{'_' . $name} = $val;
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . '  does not exist');
        }
    }

    /**
     * Magic __isset method
     *
     * @param string $name
     */
    public function __isset($name)
    {
        $rc = new ReflectionClass(get_class($this));
        $privName = '_' . $name;
        if (!($rc->hasProperty($privName))) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . ' does not exist');
        } else {
            if (isset($this->{$privName})) {
                if (is_array($this->{$privName})) {
                    if (count($this->{$privName}) > 0) {
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    return true;
                }
            } else {
                return false;
            }
        }
    }
    
}
PKpG[ړ��U�UGdata/App/FeedEntryParent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Element
*/
require_once 'Zend/Gdata/App/Extension/Element.php';

/**
 * @see Zend_Gdata_App_Extension_Author
*/
require_once 'Zend/Gdata/App/Extension/Author.php';

/**
 * @see Zend_Gdata_App_Extension_Category
*/
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * @see Zend_Gdata_App_Extension_Contributor
*/
require_once 'Zend/Gdata/App/Extension/Contributor.php';

/**
 * @see Zend_Gdata_App_Extension_Id
 */
require_once 'Zend/Gdata/App/Extension/Id.php';

/**
 * @see Zend_Gdata_App_Extension_Link
 */
require_once 'Zend/Gdata/App/Extension/Link.php';

/**
 * @see Zend_Gdata_App_Extension_Rights
 */
require_once 'Zend/Gdata/App/Extension/Rights.php';

/**
 * @see Zend_Gdata_App_Extension_Title
 */
require_once 'Zend/Gdata/App/Extension/Title.php';

/**
 * @see Zend_Gdata_App_Extension_Updated
 */
require_once 'Zend/Gdata/App/Extension/Updated.php';

/**
 * Zend_Version
 */
require_once 'Zend/Version.php';

/**
 * Abstract class for common functionality in entries and feeds
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_FeedEntryParent extends Zend_Gdata_App_Base
{
    /**
     * Service instance used to make network requests.
     *
     * @see setService(), getService()
     */
    protected $_service = null;

    /**
     * The HTTP ETag associated with this entry. Used for optimistic
     * concurrency in protoco v2 or greater.
     *
     * @var string|null
     */
    protected $_etag = NULL;

    protected $_author = array();
    protected $_category = array();
    protected $_contributor = array();
    protected $_id = null;
    protected $_link = array();
    protected $_rights = null;
    protected $_title = null;
    protected $_updated = null;

    /**
      * Indicates the major protocol version that should be used.
      * At present, recognized values are either 1 or 2. However, any integer
      * value >= 1 is considered valid.
      *
      * @see setMajorProtocolVersion()
      * @see getMajorProtocolVersion()
      */
    protected $_majorProtocolVersion = 1;

    /**
      * Indicates the minor protocol version that should be used. Can be set
      * to either an integer >= 0, or NULL if no minor version should be sent
      * to the server.
      *
      * @see setMinorProtocolVersion()
      * @see getMinorProtocolVersion()
      */
    protected $_minorProtocolVersion = null;

    /**
     * Constructs a Feed or Entry
     */
    public function __construct($element = null)
    {
        if (!($element instanceof DOMElement)) {
            if ($element) {
                // Load the feed as an XML DOMDocument object
                @ini_set('track_errors', 1);
                $doc = new DOMDocument();
                $success = @$doc->loadXML($element);
                @ini_restore('track_errors');
                if (!$success) {
                    require_once 'Zend/Gdata/App/Exception.php';
                    throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
                }
                $element = $doc->getElementsByTagName($this->_rootElement)->item(0);
                if (!$element) {
                    require_once 'Zend/Gdata/App/Exception.php';
                    throw new Zend_Gdata_App_Exception('No root <' . $this->_rootElement . '> element found, cannot parse feed.');
                }
                $this->transferFromDOM($element);
            }
        } else {
            $this->transferFromDOM($element);
        }
    }

    /**
     * Set the HTTP client instance
     *
     * Sets the HTTP client object to use for retrieving the feed.
     *
     * @deprecated Deprecated as of Zend Framework 1.7. Use
     *             setService() instead.
     * @param  Zend_Http_Client $httpClient
     * @return Zend_Gdata_App_Feed Provides a fluent interface
     */
    public function setHttpClient(Zend_Http_Client $httpClient)
    {
        if (!$this->_service) {
            $this->_service = new Zend_Gdata_App();
        }
        $this->_service->setHttpClient($httpClient);
        return $this;
    }

    /**
     * Gets the HTTP client object. If none is set, a new Zend_Http_Client
     * will be used.
     *
     * @deprecated Deprecated as of Zend Framework 1.7. Use
     *             getService() instead.
     * @return Zend_Http_Client_Abstract
     */
    public function getHttpClient()
    {
        if (!$this->_service) {
            $this->_service = new Zend_Gdata_App();
        }
        $client = $this->_service->getHttpClient();
        return $client;
    }

    /**
     * Set the active service instance for this object. This will be used to
     * perform network requests, such as when calling save() and delete().
     *
     * @param Zend_Gdata_App $instance The new service instance.
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface.
     */
    public function setService($instance)
    {
        $this->_service = $instance;
        return $this;
    }

    /**
     * Get the active service instance for this object. This will be used to
     * perform network requests, such as when calling save() and delete().
     *
     * @return Zend_Gdata_App|null The current service instance, or null if
     *         not set.
     */
    public function getService()
    {
        return $this->_service;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        foreach ($this->_author as $author) {
            $element->appendChild($author->getDOM($element->ownerDocument));
        }
        foreach ($this->_category as $category) {
            $element->appendChild($category->getDOM($element->ownerDocument));
        }
        foreach ($this->_contributor as $contributor) {
            $element->appendChild($contributor->getDOM($element->ownerDocument));
        }
        if ($this->_id != null) {
            $element->appendChild($this->_id->getDOM($element->ownerDocument));
        }
        foreach ($this->_link as $link) {
            $element->appendChild($link->getDOM($element->ownerDocument));
        }
        if ($this->_rights != null) {
            $element->appendChild($this->_rights->getDOM($element->ownerDocument));
        }
        if ($this->_title != null) {
            $element->appendChild($this->_title->getDOM($element->ownerDocument));
        }
        if ($this->_updated != null) {
            $element->appendChild($this->_updated->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'author':
            $author = new Zend_Gdata_App_Extension_Author();
            $author->transferFromDOM($child);
            $this->_author[] = $author;
            break;
        case $this->lookupNamespace('atom') . ':' . 'category':
            $category = new Zend_Gdata_App_Extension_Category();
            $category->transferFromDOM($child);
            $this->_category[] = $category;
            break;
        case $this->lookupNamespace('atom') . ':' . 'contributor':
            $contributor = new Zend_Gdata_App_Extension_Contributor();
            $contributor->transferFromDOM($child);
            $this->_contributor[] = $contributor;
            break;
        case $this->lookupNamespace('atom') . ':' . 'id':
            $id = new Zend_Gdata_App_Extension_Id();
            $id->transferFromDOM($child);
            $this->_id = $id;
            break;
        case $this->lookupNamespace('atom') . ':' . 'link':
            $link = new Zend_Gdata_App_Extension_Link();
            $link->transferFromDOM($child);
            $this->_link[] = $link;
            break;
        case $this->lookupNamespace('atom') . ':' . 'rights':
            $rights = new Zend_Gdata_App_Extension_Rights();
            $rights->transferFromDOM($child);
            $this->_rights = $rights;
            break;
        case $this->lookupNamespace('atom') . ':' . 'title':
            $title = new Zend_Gdata_App_Extension_Title();
            $title->transferFromDOM($child);
            $this->_title = $title;
            break;
        case $this->lookupNamespace('atom') . ':' . 'updated':
            $updated = new Zend_Gdata_App_Extension_Updated();
            $updated->transferFromDOM($child);
            $this->_updated = $updated;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * @return Zend_Gdata_App_Extension_Author
     */
    public function getAuthor()
    {
        return $this->_author;
    }

    /**
     * Sets the list of the authors of this feed/entry.  In an atom feed, each
     * author is represented by an atom:author element
     *
     * @param array $value
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setAuthor($value)
    {
        $this->_author = $value;
        return $this;
    }

    /**
     * Returns the array of categories that classify this feed/entry.  Each
     * category is represented in an atom feed by an atom:category element.
     *
     * @return array Array of Zend_Gdata_App_Extension_Category
     */
    public function getCategory()
    {
        return $this->_category;
    }

    /**
     * Sets the array of categories that classify this feed/entry.  Each
     * category is represented in an atom feed by an atom:category element.
     *
     * @param array $value Array of Zend_Gdata_App_Extension_Category
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setCategory($value)
    {
        $this->_category = $value;
        return $this;
    }

    /**
     * Returns the array of contributors to this feed/entry.  Each contributor
     * is represented in an atom feed by an atom:contributor XML element
     *
     * @return array An array of Zend_Gdata_App_Extension_Contributor
     */
    public function getContributor()
    {
        return $this->_contributor;
    }

    /**
     * Sets the array of contributors to this feed/entry.  Each contributor
     * is represented in an atom feed by an atom:contributor XML element
     *
     * @param array $value
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setContributor($value)
    {
        $this->_contributor = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_App_Extension_Id
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * @param Zend_Gdata_App_Extension_Id $value
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setId($value)
    {
        $this->_id = $value;
        return $this;
    }

    /**
     * Given a particular 'rel' value, this method returns a matching
     * Zend_Gdata_App_Extension_Link element.  If the 'rel' value
     * is not provided, the full array of Zend_Gdata_App_Extension_Link
     * elements is returned.  In an atom feed, each link is represented
     * by an atom:link element.  The 'rel' value passed to this function
     * is the atom:link/@rel attribute.  Example rel values include 'self',
     * 'edit', and 'alternate'.
     *
     * @param string $rel The rel value of the link to be found.  If null,
     *     the array of Zend_Gdata_App_Extension_link elements is returned
     * @return mixed Either a single Zend_Gdata_App_Extension_link element,
     *     an array of the same or null is returned depending on the rel value
     *     supplied as the argument to this function
     */
    public function getLink($rel = null)
    {
        if ($rel == null) {
            return $this->_link;
        } else {
            foreach ($this->_link as $link) {
                if ($link->rel == $rel) {
                    return $link;
                }
            }
            return null;
        }
    }

    /**
     * Returns the Zend_Gdata_App_Extension_Link element which represents
     * the URL used to edit this resource.  This link is in the atom feed/entry
     * as an atom:link with a rel attribute value of 'edit'.
     *
     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
     */
    public function getEditLink()
    {
        return $this->getLink('edit');
    }

    /**
     * Returns the Zend_Gdata_App_Extension_Link element which represents
     * the URL used to retrieve the next chunk of results when paging through
     * a feed.  This link is in the atom feed as an atom:link with a
     * rel attribute value of 'next'.
     *
     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
     */
    public function getNextLink()
    {
        return $this->getLink('next');
    }

    /**
     * Returns the Zend_Gdata_App_Extension_Link element which represents
     * the URL used to retrieve the previous chunk of results when paging
     * through a feed.  This link is in the atom feed as an atom:link with a
     * rel attribute value of 'previous'.
     *
     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
     */
    public function getPreviousLink()
    {
        return $this->getLink('previous');
    }

    /**
     * @return Zend_Gdata_App_Extension_Link
     */
    public function getLicenseLink()
    {
        return $this->getLink('license');
    }

    /**
     * Returns the Zend_Gdata_App_Extension_Link element which represents
     * the URL used to retrieve the entry or feed represented by this object
     * This link is in the atom feed/entry as an atom:link with a
     * rel attribute value of 'self'.
     *
     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
     */
    public function getSelfLink()
    {
        return $this->getLink('self');
    }

    /**
     * Returns the Zend_Gdata_App_Extension_Link element which represents
     * the URL for an alternate view of the data represented by this feed or
     * entry.  This alternate view is commonly a user-facing webpage, blog
     * post, etc.  The MIME type for the data at the URL is available from the
     * returned Zend_Gdata_App_Extension_Link element.
     * This link is in the atom feed/entry as an atom:link with a
     * rel attribute value of 'self'.
     *
     * @return Zend_Gdata_App_Extension_Link The link, or null if not found
     */
    public function getAlternateLink()
    {
        return $this->getLink('alternate');
    }

    /**
     * @param array $value The array of Zend_Gdata_App_Extension_Link elements
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setLink($value)
    {
        $this->_link = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_AppExtension_Rights
     */
    public function getRights()
    {
        return $this->_rights;
    }

    /**
     * @param Zend_Gdata_App_Extension_Rights $value
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface
     */
    public function setRights($value)
    {
        $this->_rights = $value;
        return $this;
    }

    /**
     * Returns the title of this feed or entry.  The title is an extremely
     * short textual representation of this resource and is found as
     * an atom:title element in a feed or entry
     *
     * @return Zend_Gdata_App_Extension_Title
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * Returns a string representation of the title of this feed or entry.
     * The title is an extremely short textual representation of this
     * resource and is found as an atom:title element in a feed or entry
     *
     * @return string
     */
    public function getTitleValue()
    {
        if (($titleObj = $this->getTitle()) != null) {
            return $titleObj->getText();
        } else {
            return null;
        }
    }

    /**
     * Returns the title of this feed or entry.  The title is an extremely
     * short textual representation of this resource and is found as
     * an atom:title element in a feed or entry
     *
     * @param Zend_Gdata_App_Extension_Title $value
     * @return Zend_Gdata_App_Feed_Entry_Parent Provides a fluent interface
     */
    public function setTitle($value)
    {
        $this->_title = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_App_Extension_Updated
     */
    public function getUpdated()
    {
        return $this->_updated;
    }

    /**
     * @param Zend_Gdata_App_Extension_Updated $value
     * @return Zend_Gdata_App_Feed_Entry_Parent Provides a fluent interface
     */
    public function setUpdated($value)
    {
        $this->_updated = $value;
        return $this;
    }

    /**
     * Set the Etag for the current entry to $value. Setting $value to null
     * unsets the Etag.
     *
     * @param string|null $value
     * @return Zend_Gdata_App_Entry Provides a fluent interface
     */
    public function setEtag($value) {
        $this->_etag = $value;
        return $this;
    }

    /**
     * Return the Etag for the current entry, or null if not set.
     *
     * @return string|null
     */
    public function getEtag() {
        return $this->_etag;
    }

    /**
     * Set the major protocol version that should be used. Values < 1
     * (excluding NULL) will cause a Zend_Gdata_App_InvalidArgumentException
     * to be thrown.
     *
     * @see _majorProtocolVersion
     * @param (int|NULL) $value The major protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMajorProtocolVersion($value)
    {
        if (!($value >= 1) && !is_null($value)) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Major protocol version must be >= 1');
        }
        $this->_majorProtocolVersion = $value;
    }

    /**
     * Get the major protocol version that is in use.
     *
     * @see _majorProtocolVersion
     * @return (int|NULL) The major protocol version in use.
     */
    public function getMajorProtocolVersion()
    {
        return $this->_majorProtocolVersion;
    }

    /**
     * Set the minor protocol version that should be used. If set to NULL, no
     * minor protocol version will be sent to the server. Values < 0 will
     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
     *
     * @see _minorProtocolVersion
     * @param (int|NULL) $value The minor protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMinorProtocolVersion($value)
    {
        if (!($value >= 0)) {
            require_once('Zend/Gdata/App/InvalidArgumentException.php');
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Minor protocol version must be >= 0 or null');
        }
        $this->_minorProtocolVersion = $value;
    }

    /**
     * Get the minor protocol version that is in use.
     *
     * @see _minorProtocolVersion
     * @return (int|NULL) The major protocol version in use, or NULL if no
     *         minor version is specified.
     */
    public function getMinorProtocolVersion()
    {
        return $this->_minorProtocolVersion;
    }

    /**
     * Get the full version of a namespace prefix
     *
     * Looks up a prefix (atom:, etc.) in the list of registered
     * namespaces and returns the full namespace URI if
     * available. Returns the prefix, unmodified, if it's not
     * registered.
     * 
     * The current entry or feed's version will be used when performing the
     * namespace lookup unless overridden using $majorVersion and
     * $minorVersion. If the entry/fee has a null version, then the latest
     * protocol version will be used by default.
     *
     * @param string $prefix The namespace prefix to lookup.
     * @param integer $majorVersion The major protocol version in effect.
     *        Defaults to null (auto-select).
     * @param integer $minorVersion The minor protocol version in effect.
     *        Defaults to null (auto-select).
     * @return string
     */
    public function lookupNamespace($prefix,
                                    $majorVersion = null,
                                    $minorVersion = null)
    {
        // Auto-select current version
        if (is_null($majorVersion)) {
            $majorVersion = $this->getMajorProtocolVersion();
        }
        if (is_null($minorVersion)) {
            $minorVersion = $this->getMinorProtocolVersion();
        }
        
        // Perform lookup
        return parent::lookupNamespace($prefix, $majorVersion, $minorVersion);
    }

}
PKpG[����Gdata/App/MediaSource.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Interface for defining data that can be encoded and sent over the network.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Gdata_App_MediaSource
{
    /**
     * Return a byte stream representation of this object.
     *
     * @return string
     */
    public function encode();

    /** 
     * Set the content type for the file attached (example image/png)
     *
     * @param string $value The content type
     * @return Zend_Gdata_App_MediaFileSource Provides a fluent interface
     */
    public function setContentType($value);

    /** 
     * The content type for the file attached (example image/png)
     *
     * @return string The content type
     */
    public function getContentType();

    /**
     * Sets the Slug header value.  Used by some services to determine the 
     * title for the uploaded file.  A null value indicates no slug header.
     *
     * @var string The slug value
     * @return Zend_Gdata_App_MediaSource Provides a fluent interface
     */
    public function setSlug($value);

    /**
     * Returns the Slug header value.  Used by some services to determine the 
     * title for the uploaded file.  Returns null if no slug should be used.
     *
     * @return string The slug value
     */
    public function getSlug();
}
PKpG[����Gdata/App/VersionException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Gdata APP exceptions
 *
 * Class to represent version exceptions that occur during Gdata APP operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_VersionException extends Zend_Gdata_App_Exception
{
}
PKpG[f�¶�Gdata/App/HttpException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Zend_Http_Client_Exception
 */
require_once 'Zend/Http/Client/Exception.php';

/**
 * Gdata exceptions
 *
 * Class to represent exceptions that occur during Gdata operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_HttpException extends Zend_Gdata_App_Exception
{

    protected $_httpClientException = null;
    protected $_response = null;

    /**
     * Create a new Zend_Gdata_App_HttpException
     *
     * @param  string $message Optionally set a message
     * @param Zend_Http_Client_Exception Optionally pass in a Zend_Http_Client_Exception
     * @param Zend_Http_Response Optionally pass in a Zend_Http_Response
     */
    public function __construct($message = null, $e = null, $response = null)
    {
        $this->_httpClientException = $e;
        $this->_response = $response;
        parent::__construct($message);
    }

    /**
     * Get the Zend_Http_Client_Exception.
     *
     * @return Zend_Http_Client_Exception
     */
    public function getHttpClientException()
    {
        return $this->_httpClientException;
    }

    /**
     * Set the Zend_Http_Client_Exception.
     *
     * @param Zend_Http_Client_Exception $value
     */
    public function setHttpClientException($value)
    {
        $this->_httpClientException = $value;
        return $this;
    }

    /**
     * Set the Zend_Http_Response.
     *
     * @param Zend_Http_Response $response
     */
    public function setResponse($response)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Get the Zend_Http_Response.
     *
     * @return Zend_Http_Response
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Get the body of the Zend_Http_Response
     *
     * @return string
     */
    public function getRawResponseBody()
    {
        if ($this->getResponse()) {
            $response = $this->getResponse();
            return $response->getRawBody();
        }
        return null;
    }

}
PKpG[n)�qEqEGdata/App/Base.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Util
 */
require_once 'Zend/Gdata/App/Util.php';

/**
 * Abstract class for all XML elements
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_Base
{

    /**
     * @var string The XML element name, including prefix if desired
     */
    protected $_rootElement = null;

    /**
     * @var string The XML namespace prefix
     */
    protected $_rootNamespace = 'atom';

    /**
     * @var string The XML namespace URI - takes precedence over lookup up the
     * corresponding URI for $_rootNamespace
     */
    protected $_rootNamespaceURI = null;

    /**
     * @var array Leftover elements which were not handled
     */
    protected $_extensionElements = array();

    /**
     * @var array Leftover attributes which were not handled
     */
    protected $_extensionAttributes = array();

    /**
     * @var string XML child text node content
     */
    protected $_text = null;

    /**
     * List of namespaces, as a three-dimensional array. The first dimension
     * represents the namespace prefix, the second dimension represents the
     * minimum major protocol version, and the third dimension is the minimum
     * minor protocol version. Null keys are NOT allowed.
     *
     * When looking up a namespace for a given prefix, the greatest version
     * number (both major and minor) which is less than the effective version
     * should be used.
     *
     * @see lookupNamespace()
     * @see registerNamespace()
     * @see registerAllNamespaces()
     * @var array
     */
   protected $_namespaces = array(
        'atom'      => array(
            1 => array(
                0 => 'http://www.w3.org/2005/Atom'
                )
            ),
        'app'       => array(
            1 => array(
                0 => 'http://purl.org/atom/app#'
                ),
            2 => array(
                0 => 'http://www.w3.org/2007/app'
                )
            )
        );

    public function __construct()
    {
    }

    /**
     * Returns the child text node of this element
     * This represents any raw text contained within the XML element
     *
     * @return string Child text node
     */
    public function getText($trim = true)
    {
        if ($trim) {
            return trim($this->_text);
        } else {
            return $this->_text;
        }
    }

    /**
     * Sets the child text node of this element
     * This represents any raw text contained within the XML element
     *
     * @param string $value Child text node
     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
     */
    public function setText($value)
    {
        $this->_text = $value;
        return $this;
    }

    /**
     * Returns an array of all elements not matched to data model classes
     * during the parsing of the XML
     *
     * @return array All elements not matched to data model classes during parsing
     */
    public function getExtensionElements()
    {
        return $this->_extensionElements;
    }

    /**
     * Sets an array of all elements not matched to data model classes
     * during the parsing of the XML.  This method can be used to add arbitrary
     * child XML elements to any data model class.
     *
     * @param array $value All extension elements
     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
     */
    public function setExtensionElements($value)
    {
        $this->_extensionElements = $value;
        return $this;
    }

    /**
     * Returns an array of all extension attributes not transformed into data
     * model properties during parsing of the XML.  Each element of the array
     * is a hashed array of the format:
     *     array('namespaceUri' => string, 'name' => string, 'value' => string);
     *
     * @return array All extension attributes
     */
    public function getExtensionAttributes()
    {
        return $this->_extensionAttributes;
    }

    /**
     * Sets an array of all extension attributes not transformed into data
     * model properties during parsing of the XML.  Each element of the array
     * is a hashed array of the format:
     *     array('namespaceUri' => string, 'name' => string, 'value' => string);
     * This can be used to add arbitrary attributes to any data model element
     *
     * @param array $value All extension attributes
     * @return Zend_Gdata_App_Base Returns an object of the same type as 'this' to provide a fluent interface.
     */
    public function setExtensionAttributes($value)
    {
        $this->_extensionAttributes = $value;
        return $this;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        if (is_null($doc)) {
            $doc = new DOMDocument('1.0', 'utf-8');
        }
        if ($this->_rootNamespaceURI != null) {
            $element = $doc->createElementNS($this->_rootNamespaceURI, $this->_rootElement);
        } elseif ($this->_rootNamespace !== null) {
            if (strpos($this->_rootElement, ':') === false) {
                $elementName = $this->_rootNamespace . ':' . $this->_rootElement;
            } else {
                $elementName = $this->_rootElement;
            }
            $element = $doc->createElementNS($this->lookupNamespace($this->_rootNamespace), $elementName);
        } else {
            $element = $doc->createElement($this->_rootElement);
        }
        if ($this->_text != null) {
            $element->appendChild($element->ownerDocument->createTextNode($this->_text));
        }
        foreach ($this->_extensionElements as $extensionElement) {
            $element->appendChild($extensionElement->getDOM($element->ownerDocument));
        }
        foreach ($this->_extensionAttributes as $attribute) {
            $element->setAttribute($attribute['name'], $attribute['value']);
        }
        return $element;
    }

    /**
     * Given a child DOMNode, tries to determine how to map the data into
     * object instance members.  If no mapping is defined, Extension_Element
     * objects are created and stored in an array.
     *
     * @param DOMNode $child The DOMNode needed to be handled
     */
    protected function takeChildFromDOM($child)
    {
        if ($child->nodeType == XML_TEXT_NODE) {
            $this->_text = $child->nodeValue;
        } else {
            $extensionElement = new Zend_Gdata_App_Extension_Element();
            $extensionElement->transferFromDOM($child);
            $this->_extensionElements[] = $extensionElement;
        }
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        $arrayIndex = ($attribute->namespaceURI != '')?(
                $attribute->namespaceURI . ':' . $attribute->name):
                $attribute->name;
        $this->_extensionAttributes[$arrayIndex] =
                array('namespaceUri' => $attribute->namespaceURI,
                      'name' => $attribute->localName,
                      'value' => $attribute->nodeValue);
    }

    /**
     * Transfers each child and attribute into member variables.
     * This is called when XML is received over the wire and the data
     * model needs to be built to represent this XML.
     *
     * @param DOMNode $node The DOMNode that represents this object's data
     */
    public function transferFromDOM($node)
    {
        foreach ($node->childNodes as $child) {
            $this->takeChildFromDOM($child);
        }
        foreach ($node->attributes as $attribute) {
            $this->takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Parses the provided XML text and generates data model classes for
     * each know element by turning the XML text into a DOM tree and calling
     * transferFromDOM($element).  The first data model element with the same
     * name as $this->_rootElement is used and the child elements are
     * recursively parsed.
     *
     * @param string $xml The XML text to parse
     */
    public function transferFromXML($xml)
    {
        if ($xml) {
            // Load the feed as an XML DOMDocument object
            @ini_set('track_errors', 1);
            $doc = new DOMDocument();
            $success = @$doc->loadXML($xml);
            @ini_restore('track_errors');
            if (!$success) {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception("DOMDocument cannot parse XML: $php_errormsg");
            }
            $element = $doc->getElementsByTagName($this->_rootElement)->item(0);
            if (!$element) {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('No root <' . $this->_rootElement . '> element');
            }
            $this->transferFromDOM($element);
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('XML passed to transferFromXML cannot be null');
        }
    }

    /**
     * Converts this element and all children into XML text using getDOM()
     *
     * @return string XML content
     */
    public function saveXML()
    {
        $element = $this->getDOM();
        return $element->ownerDocument->saveXML($element);
    }

    /**
     * Alias for saveXML() returns XML content for this element and all
     * children
     *
     * @return string XML content
     */
    public function getXML()
    {
        return $this->saveXML();
    }

    /**
     * Alias for saveXML()
     *
     * Can be overridden by children to provide more complex representations
     * of entries.
     *
     * @return string Encoded string content
     */
    public function encode()
    {
        return $this->saveXML();
    }

    /**
     * Get the full version of a namespace prefix
     *
     * Looks up a prefix (atom:, etc.) in the list of registered
     * namespaces and returns the full namespace URI if
     * available. Returns the prefix, unmodified, if it's not
     * registered.
     *
     * @param string $prefix The namespace prefix to lookup.
     * @param integer $majorVersion The major protocol version in effect.
     *        Defaults to '1'.
     * @param integer $minorVersion The minor protocol version in effect.
     *        Defaults to null (use latest).
     * @return string
     */
    public function lookupNamespace($prefix,
                                    $majorVersion = 1,
                                    $minorVersion = null)
    {
        // If no match, return the prefix by default
        $result = $prefix;

        // Find tuple of keys that correspond to the namespace we should use
        if (isset($this->_namespaces[$prefix])) {
            // Major version search
            $nsData = $this->_namespaces[$prefix];
            $foundMajorV = Zend_Gdata_App_Util::findGreatestBoundedValue(
                    $majorVersion, $nsData);
            // Minor version search
            $nsData = $nsData[$foundMajorV];
            $foundMinorV = Zend_Gdata_App_Util::findGreatestBoundedValue(
                    $minorVersion, $nsData);
            // Extract NS
            $result = $nsData[$foundMinorV];
        }

        return $result;
    }

    /**
     * Add a namespace and prefix to the registered list
     *
     * Takes a prefix and a full namespace URI and adds them to the
     * list of registered namespaces for use by
     * $this->lookupNamespace().
     *
     * @param  string $prefix The namespace prefix
     * @param  string $namespaceUri The full namespace URI
     * @param integer $majorVersion The major protocol version in effect.
     *        Defaults to '1'.
     * @param integer $minorVersion The minor protocol version in effect.
     *        Defaults to null (use latest).
     * @return void
     */
    public function registerNamespace($prefix,
                                      $namespaceUri,
                                      $majorVersion = 1,
                                      $minorVersion = 0)
    {
        $this->_namespaces[$prefix][$majorVersion][$minorVersion] =
            $namespaceUri;
    }

    /**
     * Add an array of namespaces to the registered list.
     *
     * Takes an array in the format of:
     * namespace prefix, namespace URI, major protocol version,
     * minor protocol version and adds them with calls to ->registerNamespace()
     *
     * @param array $namespaceArray An array of namespaces.
     * @return void
     */
    public function registerAllNamespaces($namespaceArray)
    {
        foreach($namespaceArray as $namespace) {
                $this->registerNamespace(
                    $namespace[0], $namespace[1], $namespace[2], $namespace[3]);
        }
    }


    /**
     * Magic getter to allow access like $entry->foo to call $entry->getFoo()
     * Alternatively, if no getFoo() is defined, but a $_foo protected variable
     * is defined, this is returned.
     *
     * TODO Remove ability to bypass getFoo() methods??
     *
     * @param string $name The variable name sought
     */
    public function __get($name)
    {
        $method = 'get'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method));
        } else if (property_exists($this, "_${name}")) {
            return $this->{'_' . $name};
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . ' does not exist');
        }
    }

    /**
     * Magic setter to allow acces like $entry->foo='bar' to call
     * $entry->setFoo('bar') automatically.
     *
     * Alternatively, if no setFoo() is defined, but a $_foo protected variable
     * is defined, this is returned.
     *
     * TODO Remove ability to bypass getFoo() methods??
     *
     * @param string $name
     * @param string $value
     */
    public function __set($name, $val)
    {
        $method = 'set'.ucfirst($name);
        if (method_exists($this, $method)) {
            return call_user_func(array(&$this, $method), $val);
        } else if (isset($this->{'_' . $name}) || is_null($this->{'_' . $name})) {
            $this->{'_' . $name} = $val;
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . '  does not exist');
        }
    }

    /**
     * Magic __isset method
     *
     * @param string $name
     */
    public function __isset($name)
    {
        $rc = new ReflectionClass(get_class($this));
        $privName = '_' . $name;
        if (!($rc->hasProperty($privName))) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Property ' . $name . ' does not exist');
        } else {
            if (isset($this->{$privName})) {
                if (is_array($this->{$privName})) {
                    if (count($this->{$privName}) > 0) {
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    return true;
                }
            } else {
                return false;
            }
        }
    }

    /**
     * Magic __unset method
     *
     * @param string $name
     */
    public function __unset($name)
    {
        if (isset($this->{'_' . $name})) {
            if (is_array($this->{'_' . $name})) {
                $this->{'_' . $name} = array();
            } else {
                $this->{'_' . $name} = null;
            }
        }
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     *
     * @return string The text representation of this object
     */
    public function __toString()
    {
        return $this->getText();
    }

}
PKpG[ $$���Gdata/App/FeedSourceParent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Entry
 */
require_once 'Zend/Gdata/App/Entry.php';

/**
 * @see Zend_Gdata_App_FeedSourceParent
 */
require_once 'Zend/Gdata/App/FeedEntryParent.php';

/**
 * @see Zend_Gdata_App_Extension_Generator
 */
require_once 'Zend/Gdata/App/Extension/Generator.php';

/**
 * @see Zend_Gdata_App_Extension_Icon
 */
require_once 'Zend/Gdata/App/Extension/Icon.php';

/**
 * @see Zend_Gdata_App_Extension_Logo
 */
require_once 'Zend/Gdata/App/Extension/Logo.php';

/**
 * @see Zend_Gdata_App_Extension_Subtitle
 */
require_once 'Zend/Gdata/App/Extension/Subtitle.php';

/**
 * Atom feed class
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Gdata_App_FeedSourceParent extends Zend_Gdata_App_FeedEntryParent
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_App_Entry';

    /**
     * Root XML element for Atom entries.
     *
     * @var string
     */
    protected $_rootElement = null;

    protected $_generator = null;
    protected $_icon = null;
    protected $_logo = null;
    protected $_subtitle = null;

    /**
     * Set the HTTP client instance
     *
     * Sets the HTTP client object to use for retrieving the feed.
     *
     * @deprecated Deprecated as of Zend Framework 1.7. Use
     *             setService() instead.
     * @param  Zend_Http_Client $httpClient
     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
     */
    public function setHttpClient(Zend_Http_Client $httpClient)
    {
        parent::setHttpClient($httpClient);
        foreach ($this->_entry as $entry) {
            $entry->setHttpClient($httpClient);
        }
        return $this;
    }
    
    /**
     * Set the active service instance for this feed and all enclosed entries.
     * This will be used to perform network requests, such as when calling
     * save() and delete().
     *
     * @param Zend_Gdata_App $instance The new service instance.
     * @return Zend_Gdata_App_FeedEntryParent Provides a fluent interface.
     */
    public function setService($instance)
    {
        parent::setService($instance);
        foreach ($this->_entry as $entry) {
            $entry->setService($instance);
        }
        return $this;
    }
    
    /**
     * Make accessing some individual elements of the feed easier.
     *
     * Special accessors 'entry' and 'entries' are provided so that if
     * you wish to iterate over an Atom feed's entries, you can do so
     * using foreach ($feed->entries as $entry) or foreach
     * ($feed->entry as $entry).
     *
     * @param  string $var The property to access.
     * @return mixed
     */
    public function __get($var)
    {
        switch ($var) {
            default:
                return parent::__get($var);
        }
    }


    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_generator != null) {
            $element->appendChild($this->_generator->getDOM($element->ownerDocument));
        }
        if ($this->_icon != null) {
            $element->appendChild($this->_icon->getDOM($element->ownerDocument));
        }
        if ($this->_logo != null) {
            $element->appendChild($this->_logo->getDOM($element->ownerDocument));
        }
        if ($this->_subtitle != null) {
            $element->appendChild($this->_subtitle->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'generator':
            $generator = new Zend_Gdata_App_Extension_Generator();
            $generator->transferFromDOM($child);
            $this->_generator = $generator;
            break;
        case $this->lookupNamespace('atom') . ':' . 'icon':
            $icon = new Zend_Gdata_App_Extension_Icon();
            $icon->transferFromDOM($child);
            $this->_icon = $icon;
            break;
        case $this->lookupNamespace('atom') . ':' . 'logo':
            $logo = new Zend_Gdata_App_Extension_Logo();
            $logo->transferFromDOM($child);
            $this->_logo = $logo;
            break;
        case $this->lookupNamespace('atom') . ':' . 'subtitle':
            $subtitle = new Zend_Gdata_App_Extension_Subtitle();
            $subtitle->transferFromDOM($child);
            $this->_subtitle = $subtitle;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * @return Zend_Gdata_AppExtension_Generator
     */
    public function getGenerator()
    {
        return $this->_generator;
    }

    /**
     * @param Zend_Gdata_App_Extension_Generator $value
     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
     */
    public function setGenerator($value)
    {
        $this->_generator = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_AppExtension_Icon
     */
    public function getIcon()
    {
        return $this->_icon;
    }

    /**
     * @param Zend_Gdata_App_Extension_Icon $value
     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
     */
    public function setIcon($value)
    {
        $this->_icon = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_AppExtension_logo
     */
    public function getlogo()
    {
        return $this->_logo;
    }

    /**
     * @param Zend_Gdata_App_Extension_logo $value
     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
     */
    public function setlogo($value)
    {
        $this->_logo = $value;
        return $this;
    }

    /**
     * @return Zend_Gdata_AppExtension_Subtitle
     */
    public function getSubtitle()
    {
        return $this->_subtitle;
    }

    /**
     * @param Zend_Gdata_App_Extension_Subtitle $value
     * @return Zend_Gdata_App_FeedSourceParent Provides a fluent interface
     */
    public function setSubtitle($value)
    {
        $this->_subtitle = $value;
        return $this;
    }

}
PKpG[�
�q�%�%Gdata/App/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Entry
 */
require_once 'Zend/Gdata/App/Entry.php';

/**
 * @see Zend_Gdata_App_FeedSourceParent
 */
require_once 'Zend/Gdata/App/FeedSourceParent.php';

/**
 * Atom feed class
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Feed extends Zend_Gdata_App_FeedSourceParent
        implements Iterator, ArrayAccess
{

    /**
     * The root xml element of this data element
     *
     * @var string
     */
    protected $_rootElement = 'feed';

    /**
     * Cache of feed entries.
     *
     * @var array
     */
    protected $_entry = array();

    /**
     * Current location in $_entry array
     *
     * @var int
     */
    protected $_entryIndex = 0;

    /**
     * Make accessing some individual elements of the feed easier.
     *
     * Special accessors 'entry' and 'entries' are provided so that if
     * you wish to iterate over an Atom feed's entries, you can do so
     * using foreach ($feed->entries as $entry) or foreach
     * ($feed->entry as $entry).
     *
     * @param  string $var The property to get.
     * @return mixed
     */
    public function __get($var)
    {
        switch ($var) {
            case 'entries':
                return $this;
            default:
                return parent::__get($var);
        }
    }

    /**
     * Retrieves the DOM model representing this object and all children
     *
     * @param DOMDocument $doc
     * @return DOMElement
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        foreach ($this->_entry as $entry) {
            $element->appendChild($entry->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('atom') . ':' . 'entry':
            $newEntry = new $this->_entryClassName($child);
            $newEntry->setHttpClient($this->getHttpClient());
            $newEntry->setMajorProtocolVersion($this->getMajorProtocolVersion());
            $newEntry->setMinorProtocolVersion($this->getMinorProtocolVersion());
            $this->_entry[] = $newEntry;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Get the number of entries in this feed object.
     *
     * @return integer Entry count.
     */
    public function count()
    {
        return count($this->_entry);
    }

    /**
     * Required by the Iterator interface.
     *
     * @return void
     */
    public function rewind()
    {
        $this->_entryIndex = 0;
    }

    /**
     * Required by the Iterator interface.
     *
     * @return mixed The current row, or null if no rows.
     */
    public function current()
    {
        return $this->_entry[$this->_entryIndex];
    }

    /**
     * Required by the Iterator interface.
     *
     * @return mixed The current row number (starts at 0), or NULL if no rows
     */
    public function key()
    {
        return $this->_entryIndex;
    }

    /**
     * Required by the Iterator interface.
     *
     * @return mixed The next row, or null if no more rows.
     */
    public function next()
    {
        ++$this->_entryIndex;
    }

    /**
     * Required by the Iterator interface.
     *
     * @return boolean Whether the iteration is valid
     */
    public function valid()
    {
        return 0 <= $this->_entryIndex && $this->_entryIndex < $this->count();
    }

    /**
     * Gets the array of atom:entry elements contained within this
     * atom:feed representation
     *
     * @return array Zend_Gdata_App_Entry array
     */
    public function getEntry()
    {
        return $this->_entry;
    }

    /**
     * Sets the array of atom:entry elements contained within this
     * atom:feed representation
     *
     * @param array $value The array of Zend_Gdata_App_Entry elements
     * @return Zend_Gdata_App_Feed Provides a fluent interface
     */
    public function setEntry($value)
    {
        $this->_entry = $value;
        return $this;
    }

    /**
     * Adds an entry representation to the array of entries
     * contained within this feed
     *
     * @param Zend_Gdata_App_Entry An individual entry to add.
     * @return Zend_Gdata_App_Feed Provides a fluent interface
     */
    public function addEntry($value)
    {
        $this->_entry[] = $value;
        return $this;
    }

    /**
     * Required by the ArrayAccess interface
     *
     * @param int $key The index to set
     * @param Zend_Gdata_App_Entry $value The value to set
     * @return void
     */
    public function offsetSet($key, $value)
    {
        $this->_entry[$key] = $value;
    }

    /**
     * Required by the ArrayAccess interface
     *
     * @param int $key The index to get
     * @param Zend_Gdata_App_Entry $value The value to set
     */
    public function offsetGet($key)
    {
        if (array_key_exists($key, $this->_entry)) {
            return $this->_entry[$key];
        }
    }

    /**
     * Required by the ArrayAccess interface
     *
     * @param int $key The index to set
     * @param Zend_Gdata_App_Entry $value The value to set
     */
    public function offsetUnset($key)
    {
        if (array_key_exists($key, $this->_entry)) {
            unset($this->_entry[$key]);
        }
    }

    /**
     * Required by the ArrayAccess interface
     *
     * @param int $key The index to check for existence
     * @return boolean
     */
    public function offsetExists($key)
    {
        return (array_key_exists($key, $this->_entry));
    }

   /**
     * Retrieve the next set of results from this feed.
     *
     * @throws Zend_Gdata_App_Exception
     * @return mixed|null Returns the next set of results as a feed of the same
     *          class as this feed, or null if no results exist.
     */
    public function getNextFeed()
    {
        $nextLink = $this->getNextLink();
        if (!$nextLink) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_Exception('No link to next set ' .
            'of results found.');
        }
        $nextLinkHref = $nextLink->getHref();
        $service = new Zend_Gdata_App($this->getHttpClient());

        return $service->getFeed($nextLinkHref, get_class($this));
    }

   /**
     * Retrieve the previous set of results from this feed.
     *
     * @throws Zend_Gdata_App_Exception
     * @return mixed|null Returns the previous set of results as a feed of
     *          the same class as this feed, or null if no results exist.
     */
    public function getPreviousFeed()
    {
        $previousLink = $this->getPreviousLink();
        if (!$previousLink) {
            require_once 'Zend/Gdata/App/HttpException.php';
            throw new Zend_Gdata_App_Exception('No link to previous set ' .
            'of results found.');
        }
        $previousLinkHref = $previousLink->getHref();
        $service = new Zend_Gdata_App($this->getHttpClient());

        return $service->getFeed($previousLinkHref, get_class($this));
    }

    /**
     * Set the major protocol version that should be used. Values < 1 will
     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
     *
     * This value will be propogated to all child entries.
     *
     * @see _majorProtocolVersion
     * @param (int|NULL) $value The major protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMajorProtocolVersion($value)
    {
        parent::setMajorProtocolVersion($value);
        foreach ($this->entries as $entry) {
            $entry->setMajorProtocolVersion($value);
        }
    }

    /**
     * Set the minor protocol version that should be used. If set to NULL, no
     * minor protocol version will be sent to the server. Values < 0 will
     * cause a Zend_Gdata_App_InvalidArgumentException to be thrown.
     *
     * This value will be propogated to all child entries.
     *
     * @see _minorProtocolVersion
     * @param (int|NULL) $value The minor protocol version to use.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function setMinorProtocolVersion($value)
    {
        parent::setMinorProtocolVersion($value);
        foreach ($this->entries as $entry) {
            $entry->setMinorProtocolVersion($value);
        }
    }

}
PKpG[(�|��Gdata/App/IOException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Gdata App IO exceptions.
 *
 * Class to represent IO exceptions that occur during Gdata App operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_IOException extends Zend_Gdata_App_Exception
{
}
PKpG[��.Ƴ�$Gdata/App/BadMethodCallException.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_Exception
 */
require_once 'Zend/Gdata/App/Exception.php';

/**
 * Gdata APP exceptions
 *
 * Class to represent exceptions that occur during Gdata APP operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_BadMethodCallException extends Zend_Gdata_App_Exception
{
}
PKpG[�;���Gdata/App/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Gdata App exceptions
 *
 * Class to represent exceptions that occur during Gdata App operations.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage App
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_App_Exception extends Zend_Exception
{
}
PKpG[AF��Gdata/Docs/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Document List documents
 *
 * @link http://code.google.com/apis/gdata/spreadsheets/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Docs_Query extends Zend_Gdata_Query
{

    /**
     * The base URL for retrieving a document list
     *
     * @var string
     */
    const DOCUMENTS_LIST_FEED_URI = 'http://docs.google.com/feeds/documents';

    /**
     * The generic base URL used by some inherited methods
     *
     * @var string
     */
    protected $_defaultFeedUri = self::DOCUMENTS_LIST_FEED_URI;

    /**
     * The visibility to be used when querying for the feed. A request for a 
     * feed with private visbility requires the user to be authenricated. 
     * Private is the only avilable visibility for the documents list.
     *
     * @var string
     */
    protected $_visibility = 'private';

    /**
     * The projection determines how much detail should be given in the
     * result of the query. Full is the only valid projection for the
     * documents list.
     *
     * @var string
     */
    protected $_projection = 'full';

    /**
     * Constructs a new instance of a Zend_Gdata_Docs_Query object.
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Sets the projection for this query. Common values for projection 
     * include 'full'.
     *
     * @param string $value
     * @return Zend_Gdata_Docs_Query Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * Sets the visibility for this query. Common values for visibility
     * include 'private'.
     *
     * @return Zend_Gdata_Docs_Query Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    /**
     * Gets the projection for this query.
     *
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }

    /**
     * Gets the visibility for this query.
     *
     * @return string visibility
     */
    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * Sets the title attribute for this query. The title parameter is used
     * to restrict the results to documents whose titles either contain or 
     * completely match the title.
     *
     * @param string $value
     * @return Zend_Gdata_Docs_Query Provides a fluent interface
     */
    public function setTitle($value)
    {
        if ($value !== null) {
            $this->_params['title'] = $value;
        } else {
            unset($this->_params['title']);
        }
        return $this;
    }

    /**
     * Gets the title attribute for this query.
     *
     * @return string title
     */
    public function getTitle()
    {
        if (array_key_exists('title', $this->_params)) {
            return $this->_params['title'];
        } else {
            return null;
        }
    }

    /**
     * Sets the title-exact attribute for this query.
     * If title-exact is set to true, the title query parameter will be used
     * in an exact match. Only documents with a title identical to the
     * title parameter will be returned.
     *
     * @param boolean $value Use either true or false
     * @return Zend_Gdata_Docs_Query Provides a fluent interface
     */
    public function setTitleExact($value)
    {
        if ($value) {
            $this->_params['title-exact'] = $value;
        } else {
            unset($this->_params['title-exact']);
        }
        return $this;
    }

    /**
     * Gets the title-exact attribute for this query.
     *
     * @return string title-exact
     */
    public function getTitleExact()
    {
        if (array_key_exists('title-exact', $this->_params)) {
            return $this->_params['title-exact'];
        } else {
            return false;
        }
    }

    /**
     * Gets the full query URL for this query.
     *
     * @return string url
     */
    public function getQueryUrl()
    {
        $uri = $this->_defaultFeedUri;

        if ($this->_visibility !== null) {
            $uri .= '/' . $this->_visibility;
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception(
                'A visibility must be provided for cell queries.');
        }

        if ($this->_projection !== null) {
            $uri .= '/' . $this->_projection;
        } else {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception(
                'A projection must be provided for cell queries.');
        }

        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[��a  Gdata/Docs/DocumentListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';


/**
 * Data model for a Google Documents List feed of documents
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Docs_DocumentListFeed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Docs_DocumentListEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Docs_DocumentListFeed';

    /**
     * Create a new instance of a feed for a list of documents.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Docs::$namespaces);
        parent::__construct($element);
    }

}
PKpG[��N� Gdata/Docs/DocumentListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_EntryAtom
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * Represents a Documents List entry in the Documents List data API meta feed
 * of a user's documents.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Docs
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Docs_DocumentListEntry extends Zend_Gdata_Entry
{

    /**
     * Create a new instance of an entry representing a document.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Docs::$namespaces);
        parent::__construct($element);
    }

}
PKpG[���ffGdata/Calendar/ListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Extension_Timezone
 */
require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';

/**
 * Represents the meta-feed list of calendars
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_ListFeed extends Zend_Gdata_Feed
{
    protected $_timezone = null;

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Calendar_ListEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Calendar_ListFeed';

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_timezone != null) {
            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gCal') . ':' . 'timezone';
            $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
            $timezone->transferFromDOM($child);
            $this->_timezone = $timezone;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function getTimezone()
    {
        return $this->_timezone;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Timezone $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setTimezone($value)
    {
        $this->_timezone = $value;
        return $this;
    }

}
PKpG[�[V��Gdata/Calendar/EventEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Kind_EventEntry
 */
require_once 'Zend/Gdata/Kind/EventEntry.php';

/**
 * @see Zend_Gdata_Calendar_Extension_SendEventNotifications
 */
require_once 'Zend/Gdata/Calendar/Extension/SendEventNotifications.php';

/**
 * @see Zend_Gdata_Calendar_Extension_Timezone
 */
require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';

/**
 * @see Zend_Gdata_Calendar_Extension_Link
 */
require_once 'Zend/Gdata/Calendar/Extension/Link.php';

/**
 * @see Zend_Gdata_Calendar_Extension_QuickAdd
 */
require_once 'Zend/Gdata/Calendar/Extension/QuickAdd.php';

/**
 * Data model class for a Google Calendar Event Entry
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_EventEntry extends Zend_Gdata_Kind_EventEntry
{

    protected $_entryClassName = 'Zend_Gdata_Calendar_EventEntry';
    protected $_sendEventNotifications = null;
    protected $_timezone = null;
    protected $_quickadd = null;

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_sendEventNotifications != null) {
            $element->appendChild($this->_sendEventNotifications->getDOM($element->ownerDocument));
        }
        if ($this->_timezone != null) {
            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
        }
        if ($this->_quickadd != null) {
            $element->appendChild($this->_quickadd->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gCal') . ':' . 'sendEventNotifications';
                $sendEventNotifications = new Zend_Gdata_Calendar_Extension_SendEventNotifications();
                $sendEventNotifications->transferFromDOM($child);
                $this->_sendEventNotifications = $sendEventNotifications;
                break;
            case $this->lookupNamespace('gCal') . ':' . 'timezone';
                $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
                $timezone->transferFromDOM($child);
                $this->_timezone = $timezone;
                break;
            case $this->lookupNamespace('atom') . ':' . 'link';
                $link = new Zend_Gdata_Calendar_Extension_Link();
                $link->transferFromDOM($child);
                $this->_link[] = $link;
                break;
            case $this->lookupNamespace('gCal') . ':' . 'quickadd';
                $quickadd = new Zend_Gdata_Calendar_Extension_QuickAdd();
                $quickadd->transferFromDOM($child);
                $this->_quickadd = $quickadd;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    public function getSendEventNotifications()
    {
        return $this->_sendEventNotifications;
    }

    public function setSendEventNotifications($value)
    {
        $this->_sendEventNotifications = $value;
        return $this;
    }

    public function getTimezone()
    {
        return $this->_timezone;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Timezone $value
     * @return Zend_Gdata_Extension_EventEntry Provides a fluent interface
     */
    public function setTimezone($value)
    {
        $this->_timezone = $value;
        return $this;
    }

    public function getQuickAdd()
    {
        return $this->_quickadd;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_QuickAdd $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setQuickAdd($value)
    {
        $this->_quickadd = $value;
        return $this;
    }

}
PKpG[�j�hhGdata/Calendar/ListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Calendar_Extension_AccessLevel
 */
require_once 'Zend/Gdata/Calendar/Extension/AccessLevel.php';

/**
 * @see Zend_Calendar_Extension_Color
 */
require_once 'Zend/Gdata/Calendar/Extension/Color.php';

/**
 * @see Zend_Calendar_Extension_Hidden
 */
require_once 'Zend/Gdata/Calendar/Extension/Hidden.php';

/**
 * @see Zend_Calendar_Extension_Selected
 */
require_once 'Zend/Gdata/Calendar/Extension/Selected.php';

/**
 * @see Zend_Gdata_Extension_EventStatus
 */
require_once 'Zend/Gdata/Extension/EventStatus.php';

/**
 * @see Zend_Gdata_Extension_Visibility
 */
require_once 'Zend/Gdata/Extension/Visibility.php';


/**
 * @see Zend_Extension_Where
 */
require_once 'Zend/Gdata/Extension/Where.php';

/**
 * Represents a Calendar entry in the Calendar data API meta feed of a user's
 * calendars.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_ListEntry extends Zend_Gdata_Entry
{

    protected $_color = null;
    protected $_accessLevel = null;
    protected $_hidden = null;
    protected $_selected = null;
    protected $_timezone = null;
    protected $_where = array();

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_accessLevel != null) {
            $element->appendChild($this->_accessLevel->getDOM($element->ownerDocument));
        }
        if ($this->_color != null) {
            $element->appendChild($this->_color->getDOM($element->ownerDocument));
        }
        if ($this->_hidden != null) {
            $element->appendChild($this->_hidden->getDOM($element->ownerDocument));
        }
        if ($this->_selected != null) {
            $element->appendChild($this->_selected->getDOM($element->ownerDocument));
        }
        if ($this->_timezone != null) {
            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
        }
        if ($this->_where != null) {
            foreach ($this->_where as $where) {
                $element->appendChild($where->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gCal') . ':' . 'accesslevel';
            $accessLevel = new Zend_Gdata_Calendar_Extension_AccessLevel();
            $accessLevel->transferFromDOM($child);
            $this->_accessLevel = $accessLevel;
            break;
        case $this->lookupNamespace('gCal') . ':' . 'color';
            $color = new Zend_Gdata_Calendar_Extension_Color();
            $color->transferFromDOM($child);
            $this->_color = $color;
            break;
        case $this->lookupNamespace('gCal') . ':' . 'hidden';
            $hidden = new Zend_Gdata_Calendar_Extension_Hidden();
            $hidden->transferFromDOM($child);
            $this->_hidden = $hidden;
            break;
        case $this->lookupNamespace('gCal') . ':' . 'selected';
            $selected = new Zend_Gdata_Calendar_Extension_Selected();
            $selected->transferFromDOM($child);
            $this->_selected = $selected;
            break;
        case $this->lookupNamespace('gCal') . ':' . 'timezone';
            $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
            $timezone->transferFromDOM($child);
            $this->_timezone = $timezone;
            break;
        case $this->lookupNamespace('gd') . ':' . 'where';
            $where = new Zend_Gdata_Extension_Where();
            $where->transferFromDOM($child);
            $this->_where[] = $where;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    public function getAccessLevel()
    {
        return $this->_accessLevel;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_AccessLevel $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setAccessLevel($value)
    {
        $this->_accessLevel = $value;
        return $this;
    }
    public function getColor()
    {
        return $this->_color;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Color $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setColor($value)
    {
        $this->_color = $value;
        return $this;
    }

    public function getHidden()
    {
        return $this->_hidden;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Hidden $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setHidden($value)
    {
        $this->_hidden = $value;
        return $this;
    }

    public function getSelected()
    {
        return $this->_selected;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Selected $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setSelected($value)
    {
        $this->_selected = $value;
        return $this;
    }

    public function getTimezone()
    {
        return $this->_timezone;
    }

    /**
     * @param Zend_Gdata_Calendar_Extension_Timezone $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setTimezone($value)
    {
        $this->_timezone = $value;
        return $this;
    }

    public function getWhere()
    {
        return $this->_where;
    }

    /**
     * @param Zend_Gdata_Extension_Where $value
     * @return Zend_Gdata_Extension_ListEntry Provides a fluent interface
     */
    public function setWhere($value)
    {
        $this->_where = $value;
        return $this;
    }

}
PKpG[�Y����3Gdata/Calendar/Extension/SendEventNotifications.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Data model class to represent an entry's sendEventNotifications
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_SendEventNotifications extends Zend_Gdata_Extension
{
    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'sendEventNotifications';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Extension_SendEventNotifications object.
     * @param bool $value (optional) SendEventNotifications value as URI.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', ($this->_value ? "true" : "false"));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            if ($attribute->nodeValue == "true") {
                $this->_value = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_value = false;
            }
            else {
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's Value attribute.
     *
     * @return string The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's Value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Extension_SendEventNotifications The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}

PKpG[�|���%Gdata/Calendar/Extension/QuickAdd.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:quickAdd element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_QuickAdd extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'quickadd';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_QuickAdd object.
     * @param string $value (optional) The text content of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', ($this->_value ? "true" : "false"));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            if ($attribute->nodeValue == "true") {
                $this->_value = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_value = false;
            }
            else {
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return string The value associated with this attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_QuickAdd The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}
PKpG[A]�O��"Gdata/Calendar/Extension/Color.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:color element used by the Calendar data API
 * to define the color of a calendar in the UI.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_Color extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'color';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Color object.
     * @param string $value (optional) The text content of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value != null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return string The value associated with this attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_Color The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->_value;
    }

}
PKpG[�_�''!Gdata/Calendar/Extension/Link.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/App/Extension/Link.php';

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Calendar/Extension/WebContent.php';


/**
 * Specialized Link class for use with Calendar. Enables use of gCal extension elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_Link extends Zend_Gdata_App_Extension_Link
{

    protected $_webContent = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Link object.
     * @see Zend_Gdata_App_Extension_Link#__construct
     * @param Zend_Gdata_Calendar_Extension_Webcontent $webContent
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null, $webContent = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
        $this->_webContent = $webContent;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_webContent != null) {
            $element->appendChild($this->_webContent->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gCal') . ':' . 'webContent':
            $webContent = new Zend_Gdata_Calendar_Extension_WebContent();
            $webContent->transferFromDOM($child);
            $this->_webContent = $webContent;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Get the value for this element's WebContent attribute.
     *
     * @return Zend_Gdata_Calendar_Extension_Webcontent The WebContent value
     */
    public function getWebContent()
    {
        return $this->_webContent;
    }

    /**
     * Set the value for this element's WebContent attribute.
     *
     * @param Zend_Gdata_Calendar_Extension_WebContent $value The desired value for this attribute.
     * @return Zend_Calendar_Extension_Link The element being modified.  Provides a fluent interface.
     */
    public function setWebContent($value)
    {
        $this->_webContent = $value;
        return $this;
    }


}

PKpG[���c��#Gdata/Calendar/Extension/Hidden.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:hidden element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_Hidden extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'hidden';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Hidden object.
     * @param bool $value (optional) The value of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', ($this->_value ? "true" : "false"));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            if ($attribute->nodeValue == "true") {
                $this->_value = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_value = false;
            }
            else {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return string The requested attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_Hidden The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->_value;
    }

}

PKpG[�u��

%Gdata/Calendar/Extension/Selected.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:selected element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_Selected extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'selected';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Selected object.
     * @param bool $value (optional) The value of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value !== null) {
            $element->setAttribute('value', ($this->_value ? "true" : "false"));
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            if ($attribute->nodeValue == "true") {
                $this->_value = true;
            }
            else if ($attribute->nodeValue == "false") {
                $this->_value = false;
            }
            else {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException("Expected 'true' or 'false' for gCal:selected#value.");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return bool The value associated with this attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_Selected The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->_value;
    }

}
PKpG[wݵ��(Gdata/Calendar/Extension/AccessLevel.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Calendar.php';

/**
 * Represents the gCal:accessLevel element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_AccessLevel extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'accesslevel';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_AccessLevel object.
     * @param string $value (optional) The text content of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value != null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return string The attribute being modified.
     */
    public function getValue()
    {
        return $this->_value;
    }


    /**
     * Set the value for this element's value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_Selected The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}
PKpG[��--'Gdata/Calendar/Extension/WebContent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:webContent element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_WebContent extends Zend_Gdata_App_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'webContent';
    protected $_url = null;
    protected $_height = null;
    protected $_width = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_WebContent object.
     * @param string $url (optional) The value for this element's URL attribute.
     * @param string $height (optional) The value for this element's height attribute.
     * @param string $width (optional) The value for this element's width attribute.
     */
    public function __construct($url = null, $height = null, $width = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_url = $url;
        $this->_height = $height;
        $this->_width = $width;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->url != null) {
            $element->setAttribute('url', $this->_url);
        }
        if ($this->height != null) {
            $element->setAttribute('height', $this->_height);
        }
        if ($this->width != null) {
            $element->setAttribute('width', $this->_width);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
                case 'url':
                        $this->_url = $attribute->nodeValue;
                        break;
                case 'height':
                        $this->_height = $attribute->nodeValue;
                        break;
                case 'width':
                        $this->_width = $attribute->nodeValue;
                        break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's URL attribute.
     *
     * @return string The desired value for this attribute.
     */
    public function getURL()
    {
        return $this->_url;
    }

    /**
     * Set the value for this element's URL attribute.
     *
     * @param bool $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
     */
    public function setURL($value)
    {
        $this->_url = $value;
        return $this;
    }

    /**
     * Get the value for this element's height attribute.
     *
     * @return int The desired value for this attribute.
     */
    public function getHeight()
    {
        return $this->_height;
    }

    /**
     * Set the value for this element's height attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
     */
    public function setHeight($value)
    {
        $this->_height = $value;
        return $this;
    }

    /**
     * Get the value for this element's height attribute.
     *
     * @return int The desired value for this attribute.
     */
    public function getWidth()
    {
        return $this->_width;
    }

    /**
     * Set the value for this element's height attribute.
     *
     * @param int $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_WebContent The element being modified.
     */
    public function setWidth($value)
    {
        $this->_width = $value;
        return $this;
    }

}
PKpG[%�ٻ%Gdata/Calendar/Extension/Timezone.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Represents the gCal:timezone element used by the Calendar data API
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_Extension_Timezone extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gCal';
    protected $_rootElement = 'timezone';
    protected $_value = null;

    /**
     * Constructs a new Zend_Gdata_Calendar_Extension_Timezone object.
     * @param string $value (optional) The text content of the element.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_value != null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Get the value for this element's value attribute.
     *
     * @return string The value associated with this attribute.
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the value for this element's value attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Calendar_Extension_Timezone The element being modified.
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Magic toString method allows using this directly via echo
     * Works best in PHP >= 4.2.0
     */
    public function __toString()
    {
        return $this->getValue();
    }

}
PKpG[���1�
�
Gdata/Calendar/EventFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Extension_Timezone
 */
require_once 'Zend/Gdata/Calendar/Extension/Timezone.php';

/**
 * Data model for a Google Calendar feed of events
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_EventFeed extends Zend_Gdata_Feed
{

    protected $_timezone = null;

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Calendar_EventEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Calendar_EventFeed';

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Calendar::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_timezone != null) {
            $element->appendChild($this->_timezone->getDOM($element->ownerDocument));
        }

        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gCal') . ':' . 'timezone';
                $timezone = new Zend_Gdata_Calendar_Extension_Timezone();
                $timezone->transferFromDOM($child);
                $this->_timezone = $timezone;
                break;

            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    public function getTimezone()
    {
        return $this->_timezone;
    }

    public function setTimezone($value)
    {
        $this->_timezone = $value;
        return $this;
    }

}
PKpG[��P//Gdata/Calendar/EventQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_util
 */
require_once('Zend/Gdata/App/Util.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Calendar events
 *
 * @link http://code.google.com/apis/gdata/calendar/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Calendar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Calendar_EventQuery extends Zend_Gdata_Query
{

    const CALENDAR_FEED_URI = 'http://www.google.com/calendar/feeds';

    protected $_defaultFeedUri = self::CALENDAR_FEED_URI;
    protected $_comments = null;
    protected $_user = null;
    protected $_visibility = null;
    protected $_projection = null;
    protected $_event = null;

    /**
     * Create Gdata_Calendar_EventQuery object.  If a URL is provided,
     * it becomes the base URL, and additional URL components may be
     * appended.  For instance, if $url is 'http://www.foo.com', the
     * default URL constructed will be 'http://www.foo.com/default/public/full'
     *
     * @param string $url The URL to use as the base path for requests
     */
    public function __construct($url = null)
    {
        parent::__construct($url);
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setComments($value)
    {
        $this->_comments = $value;
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setEvent($value)
    {
        $this->_event = $value;
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setUser($value)
    {
        $this->_user = $value;
        return $this;
    }

    /**
     * @param bool $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    /**
     * @return string comments
     */
    public function getComments()
    {
        return $this->_comments;
    }

    /**
     * @return string event
     */
    public function getEvent()
    {
        return $this->_event;
    }

    /**
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }

    /**
     * @return string user
     */
    public function getUser()
    {
        return $this->_user;
    }

    /**
     * @return string visibility
     */
    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setStartMax($value)
    {
        if ($value != null) {
            $this->_params['start-max'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['start-max']);
        }
        return $this;
    }

    /**
     * @param int $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setStartMin($value)
    {
        if ($value != null) {
            $this->_params['start-min'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['start-min']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setOrderBy($value)
    {
        if ($value != null) {
            $this->_params['orderby'] = $value;
        } else {
            unset($this->_params['orderby']);
        }
        return $this;
    }

    /**
     * @return int start-max
     */
    public function getStartMax()
    {
        if (array_key_exists('start-max', $this->_params)) {
            return $this->_params['start-max'];
        } else {
            return null;
        }
    }

    /**
     * @return int start-min
     */
    public function getStartMin()
    {
        if (array_key_exists('start-min', $this->_params)) {
            return $this->_params['start-min'];
        } else {
            return null;
        }
    }

    /**
     * @return string orderby
     */
    public function getOrderBy()
    {
        if (array_key_exists('orderby', $this->_params)) {
            return $this->_params['orderby'];
        } else {
            return null;
        }
    }

    /**
     * @return string sortorder
     */
    public function getSortOrder()
    {
        if (array_key_exists('sortorder', $this->_params)) {
            return $this->_params['sortorder'];
        } else {
            return null;
        }
    }

    /**
     * @return string sortorder
     */
    public function setSortOrder($value)
    {
        if ($value != null) {
            $this->_params['sortorder'] = $value;
        } else {
            unset($this->_params['sortorder']);
        }
        return $this;
    }

    /**
     * @return string recurrence-expansion-start
     */
    public function getRecurrenceExpansionStart()
    {
        if (array_key_exists('recurrence-expansion-start', $this->_params)) {
            return $this->_params['recurrence-expansion-start'];
        } else {
            return null;
        }
    }

    /**
     * @return string recurrence-expansion-start
     */
    public function setRecurrenceExpansionStart($value)
    {
        if ($value != null) {
            $this->_params['recurrence-expansion-start'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['recurrence-expansion-start']);
        }
        return $this;
    }


    /**
     * @return string recurrence-expansion-end
     */
    public function getRecurrenceExpansionEnd()
    {
        if (array_key_exists('recurrence-expansion-end', $this->_params)) {
            return $this->_params['recurrence-expansion-end'];
        } else {
            return null;
        }
    }

    /**
     * @return string recurrence-expansion-end
     */
    public function setRecurrenceExpansionEnd($value)
    {
        if ($value != null) {
            $this->_params['recurrence-expansion-end'] = Zend_Gdata_App_Util::formatTimestamp($value);
        } else {
            unset($this->_params['recurrence-expansion-end']);
        }
        return $this;
    }

    /**
     * @param string $value Also accepts bools.
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function getSingleEvents()
    {
        if (array_key_exists('singleevents', $this->_params)) {
            $value = $this->_params['singleevents'];
            switch ($value) {
                case 'true':
                    return true;
                    break;
                case 'false':
                    return false;
                    break;
                default:
                    require_once 'Zend/Gdata/App/Exception.php';
                    throw new Zend_Gdata_App_Exception(
                            'Invalid query param value for futureevents: ' .
                            $value . ' It must be a boolean.');
            }
        } else {
            return null;
        }
    }

    /**
     * @param string $value Also accepts bools. If using a string, must be either "true" or "false".
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setSingleEvents($value)
    {
        if (!is_null($value)) {
            if (is_bool($value)) {
                $this->_params['singleevents'] = ($value?'true':'false');
            } elseif ($value == 'true' | $value == 'false') {
                $this->_params['singleevents'] = $value;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception(
                        'Invalid query param value for futureevents: ' .
                        $value . ' It must be a boolean.');
            }
        } else {
            unset($this->_params['singleevents']);
        }
        return $this;
    }

    /**
     * @return string futureevents
     */
    public function getFutureEvents()
    {
        if (array_key_exists('futureevents', $this->_params)) {
            $value = $this->_params['futureevents'];
            switch ($value) {
                case 'true':
                    return true;
                    break;
                case 'false':
                    return false;
                    break;
                default:
                    require_once 'Zend/Gdata/App/Exception.php';
                    throw new Zend_Gdata_App_Exception(
                            'Invalid query param value for futureevents: ' .
                            $value . ' It must be a boolean.');
            }
        } else {
            return null;
        }
    }

    /**
     * @param string $value Also accepts bools. If using a string, must be either "true" or "false" or
     *                      an exception will be thrown on retrieval.
     * @return Zend_Gdata_Calendar_EventQuery Provides a fluent interface
     */
    public function setFutureEvents($value)
    {
        if (!is_null($value)) {
            if (is_bool($value)) {
                $this->_params['futureevents'] = ($value?'true':'false');
            } elseif ($value == 'true' | $value == 'false') {
                $this->_params['futureevents'] = $value;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception(
                        'Invalid query param value for futureevents: ' .
                        $value . ' It must be a boolean.');
            }
        } else {
            unset($this->_params['futureevents']);
        }
        return $this;
    }

    /**
     * @return string url
     */
    public function getQueryUrl()
    {
        if (isset($this->_url)) {
            $uri = $this->_url;
        } else {
            $uri = $this->_defaultFeedUri;
        }
        if ($this->getUser() != null) {
            $uri .= '/' . $this->getUser();
        } else {
            $uri .= '/default';
        }
        if ($this->getVisibility() != null) {
            $uri .= '/' . $this->getVisibility();
        } else {
            $uri .= '/public';
        }
        if ($this->getProjection() != null) {
            $uri .= '/' . $this->getProjection();
        } else {
            $uri .= '/full';
        }
        if ($this->getEvent() != null) {
            $uri .= '/' . $this->getEvent();
            if ($this->getComments() != null) {
                $uri .= '/comments/' . $this->getComments();
            }
        }
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[����AAGdata/Gbase/SnippetFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gbase_Feed
 */
require_once 'Zend/Gdata/Gbase/Feed.php';

/**
 * Represents the Google Base Snippets Feed
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_SnippetFeed extends Zend_Gdata_Feed
{
    /**
     * The classname for individual snippet feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Gbase_SnippetEntry';
}
PKpG[{�5�RRGdata/Gbase/ItemEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gbase_Entry
 */
require_once 'Zend/Gdata/Gbase/Entry.php';

/**
 * Concrete class for working with Item entries.
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_ItemEntry extends Zend_Gdata_Gbase_Entry
{
    /**
     * The classname for individual item entry elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Gbase_ItemEntry';

    /**
     * Set the value of the itme_type
     *
     * @param Zend_Gdata_Gbase_Extension_ItemType $value The desired value for the item_type 
     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
     */
    public function setItemType($value)
    {
        $this->addGbaseAttribute('item_type', $value, 'text');
        return $this;
    }

    /**
     * Adds a custom attribute to the entry in the following format:
     * &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;      
     *
     * @param string $name The name of the attribute
     * @param string $value The text value of the attribute
     * @param string $type (optional) The type of the attribute.
     *          e.g.: 'text', 'number', 'floatUnit'
     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
     */
    public function addGbaseAttribute($name, $text, $type = null) {
        $newBaseAttribute =  new Zend_Gdata_Gbase_Extension_BaseAttribute($name, $text, $type);
        $this->_baseAttributes[] = $newBaseAttribute;
        return $this;
    }

    /**
     * Removes a Base attribute from the current list of Base attributes
     * 
     * @param Zend_Gdata_Gbase_Extension_BaseAttribute $baseAttribute The attribute to be removed
     * @return Zend_Gdata_Gbase_ItemEntry Provides a fluent interface
     */
    public function removeGbaseAttribute($baseAttribute) {
        $baseAttributes = $this->_baseAttributes;
        for ($i = 0; $i < count($this->_baseAttributes); $i++) {
            if ($this->_baseAttributes[$i] == $baseAttribute) {
                array_splice($baseAttributes, $i, 1);
                break;
            }
        }
        $this->_baseAttributes = $baseAttributes;
        return $this;
    }

    /**
     * Uploads changes in this entry to the server using Zend_Gdata_App
     *
     * @param boolean $dryRun Whether the transaction is dry run or not.
     * @param string|null $uri The URI to send requests to, or null if $data
     *        contains the URI.
     * @param string|null $className The name of the class that should we
     *        deserializing the server response. If null, then
     *        'Zend_Gdata_App_Entry' will be used.
     * @param array $extraHeaders Extra headers to add to the request, as an
     *        array of string-based key/value pairs.
     * @return Zend_Gdata_App_Entry The updated entry
     * @throws Zend_Gdata_App_Exception
     */
    public function save($dryRun = false,
                         $uri = null,
                         $className = null,
                         $extraHeaders = array())
    {
        if ($dryRun == true) {
            $editLink = $this->getEditLink();
            if ($uri == null && $editLink !== null) {
                $uri = $editLink->getHref() . '?dry-run=true';
            }
            if ($uri === null) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI which needs deleted.');
            }
            $service = new Zend_Gdata_App($this->getHttpClient());
            return $service->updateEntry($this,
                                         $uri,
                                         $className,
                                         $extraHeaders);
        } else {
            parent::save($uri, $className, $extraHeaders);
        }
    }

    /**
     * Deletes this entry to the server using the referenced
     * Zend_Http_Client to do a HTTP DELETE to the edit link stored in this
     * entry's link collection.
     *
     * @param boolean $dyrRun Whether the transaction is dry run or not
     * @return void
     * @throws Zend_Gdata_App_Exception
     */
    public function delete($dryRun = false)
    {
        $uri = null;

        if ($dryRun == true) {
            $editLink = $this->getEditLink();
            if ($editLink !== null) {
                $uri = $editLink->getHref() . '?dry-run=true';
            }
            if ($uri === null) {
                require_once 'Zend/Gdata/App/InvalidArgumentException.php';
                throw new Zend_Gdata_App_InvalidArgumentException('You must specify an URI which needs deleted.');
            }
            parent::delete($uri);
        } else {
            parent::delete();
        }
    }

}
PKpG[2�C��Gdata/Gbase/SnippetQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Zend_Gdata_Gbase_Query
 */
require_once('Zend/Gdata/Gbase/Query.php');

/**
 * Assists in constructing queries for Google Base Snippets Feed
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_SnippetQuery extends Zend_Gdata_Gbase_Query
{
    /**
     * Path to the snippets feeds on the Google Base server.
     */
    const BASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';

    /**
     * The default URI for POST methods
     *
     * @var string
     */    
    protected $_defaultFeedUri = self::BASE_SNIPPET_FEED_URI;

    /**
     * Returns the query URL generated by this query instance.
     * 
     * @return string The query URL for this instance.
     */
    public function getQueryUrl()
    {
        $uri = $this->_defaultFeedUri;
        if ($this->getCategory() !== null) {
            $uri .= '/-/' . $this->getCategory();
        }
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[��|l	l	Gdata/Gbase/ItemQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * @see Zend_Gdata_Gbase_Query
 */
require_once('Zend/Gdata/Gbase/Query.php');


/**
 * Assists in constructing queries for Google Base Customer Items Feed
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_ItemQuery extends Zend_Gdata_Gbase_Query
{
    /**
     * Path to the customer items feeds on the Google Base server.
     */
    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';

    /**
     * The default URI for POST methods
     *
     * @var string
     */    
    protected $_defaultFeedUri = self::GBASE_ITEM_FEED_URI;

    /**
     * The id of an item
     *
     * @var string
     */    
    protected $_id = null;

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setId($value)
    {
        $this->_id = $value;
        return $this;
    }

    /*
     * @return string id
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Returns the query URL generated by this query instance.
     * 
     * @return string The query URL for this instance.
     */
    public function getQueryUrl()
    {
        $uri = $this->_defaultFeedUri;
        if ($this->getId() !== null) {
            $uri .= '/' . $this->getId();
        } else {
            $uri .= $this->getQueryString();
        }
        return $uri;
    }

}
PKpG[�B<TTGdata/Gbase/SnippetEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gbase_Entry
 */
require_once 'Zend/Gdata/Gbase/Entry.php';

/**
 * Concrete class for working with Snippet entries.
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_SnippetEntry extends Zend_Gdata_Gbase_Entry
{
    /**
     * The classname for individual snippet entry elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Gbase_SnippetEntry';
}
PKpG[���>>Gdata/Gbase/ItemFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gbase_Feed
 */
require_once 'Zend/Gdata/Gbase/Feed.php';

/**
 * Represents the Google Base Customer Items Feed
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_ItemFeed extends Zend_Gdata_Feed
{
    /**
     * The classname for individual item feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Gbase_ItemEntry';
}
PKpG[v?�$##Gdata/Gbase/Entry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Gbase_Extension_BaseAttribute
 */
require_once 'Zend/Gdata/Gbase/Extension/BaseAttribute.php';

/**
 * Base class for working with Google Base entries.
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_Entry extends Zend_Gdata_Entry
{

    /**
     * Name of the base class for Google Base entries
     *
     * var @string
     */
    protected $_entryClassName = 'Zend_Gdata_Gbase_Entry';

    /**
     * Google Base attribute elements in the 'g' namespace
     *
     * @var array
     */
    protected $_baseAttributes = array();

    /**
     * Constructs a new Zend_Gdata_Gbase_ItemEntry object.
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        foreach ($this->_baseAttributes as $baseAttribute) {
            $element->appendChild($baseAttribute->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        if (strstr($absoluteNodeName, $this->lookupNamespace('g') . ':')) {
            $baseAttribute = new Zend_Gdata_Gbase_Extension_BaseAttribute();
            $baseAttribute->transferFromDOM($child);
            $this->_baseAttributes[] = $baseAttribute;
        } else {
            parent::takeChildFromDOM($child);
        }
    }

    /**
     * Get the value of the itme_type
     *
     * @return Zend_Gdata_Gbase_Extension_ItemType The requested object.
     */
    public function getItemType()
    {
        $itemType = $this->getGbaseAttribute('item_type');
        if (is_object($itemType[0])) {
          return $itemType[0];
        } else {
          return null;
        }
    }

    /**
     * Return all the Base attributes
     * @return Zend_Gdata_Gbase_Extension_BaseAttribute
     */
    public function getGbaseAttributes() {
        return $this->_baseAttributes;
    }

    /**
     * Return an array of Base attributes that match the given attribute name
     *
     * @param string $name The name of the Base attribute to look for
     * @return array $matches Array that contains the matching list of Base attributes
     */
    public function getGbaseAttribute($name)
    {
        $matches = array();
        for ($i = 0; $i < count($this->_baseAttributes); $i++) {
            $baseAttribute = $this->_baseAttributes[$i];
            if ($baseAttribute->rootElement == $name &&
                $baseAttribute->rootNamespaceURI == $this->lookupNamespace('g')) {
                $matches[] = &$this->_baseAttributes[$i];
            }
        }
        return $matches;
    }

}
PKpG[O�??'Gdata/Gbase/Extension/BaseAttribute.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_App_Extension_Element
 */
require_once 'Zend/Gdata/App/Extension/Element.php';

/**
 * Concrete class for working with ItemType elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_Extension_BaseAttribute extends Zend_Gdata_App_Extension_Element
{

    /**
     * Namespace for Google Base elements
     *
     * var @string
     */
    protected $_rootNamespace = 'g';

    /**
     * Create a new instance.
     *
     * @param string $name (optional) The name of the Base attribute
     * @param string $text (optional) The text value of the Base attribute
     * @param string $text (optional) The type of the Base attribute
     */
    public function __construct($name = null, $text = null, $type = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
        if ($type !== null) {
          $attr = array('name' => 'type', 'value' => $type);
          $typeAttr = array('type' => $attr);
          $this->setExtensionAttributes($typeAttr);
        }
        parent::__construct($name,
                            $this->_rootNamespace,
                            $this->lookupNamespace($this->_rootNamespace),
                            $text);
    }

    /**
     * Get the name of the attribute
     *
     * @return attribute name The requested object.
     */
    public function getName() {
      return $this->_rootElement;
    }

    /**
     * Get the type of the attribute
     *
     * @return attribute type The requested object.
     */
    public function getType() {
      $typeAttr = $this->getExtensionAttributes();
      return $typeAttr['type']['value'];
    }

    /**
     * Set the 'name' of the Base attribute object:
     *     &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;
     *
     * @param Zend_Gdata_App_Extension_Element $attribute The attribute object
     * @param string $name The name of the Base attribute
     * @return Zend_Gdata_Extension_ItemEntry Provides a fluent interface
     */
    public function setName($name) {
      $this->_rootElement = $name;
      return $this;
    }

    /**
     * Set the 'type' of the Base attribute object:
     *     &lt;g:[$name] type='[$type]'&gt;[$value]&lt;/g:[$name]&gt;
     *
     * @param Zend_Gdata_App_Extension_Element $attribute The attribute object
     * @param string $type The type of the Base attribute
     * @return Zend_Gdata_Extension_ItemEntry Provides a fluent interface
     */
    public function setType($type) {
      $attr = array('name' => 'type', 'value' => $type);
      $typeAttr = array('type' => $attr);
      $this->setExtensionAttributes($typeAttr);
      return $this;
    }

}
PKpG[	�]]Gdata/Gbase/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Base class for the Google Base Feed
 *
 * @link http://code.google.com/apis/base/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_Feed extends Zend_Gdata_Feed
{
    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Gbase_Feed';

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Gbase::$namespaces);
        parent::__construct($element);
    }
}
PKpG[�-Tb��Gdata/Gbase/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Base
 *
 * @link http://code.google.com/apis/base
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gbase
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Gbase_Query extends Zend_Gdata_Query
{

    /**
     * Path to the customer items feeds on the Google Base server.
     */
    const GBASE_ITEM_FEED_URI = 'http://www.google.com/base/feeds/items';

    /**
     * Path to the snippets feeds on the Google Base server.
     */
    const GBASE_SNIPPET_FEED_URI = 'http://www.google.com/base/feeds/snippets';

    /**
     * The default URI for POST methods
     *
     * @var string
     */    
    protected $_defaultFeedUri = self::GBASE_ITEM_FEED_URI;

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_Query Provides a fluent interface
     */
    public function setKey($value)
    {
        if ($value !== null) {
            $this->_params['key'] = $value;
        } else {
            unset($this->_params['key']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setBq($value)
    {
        if ($value !== null) {
            $this->_params['bq'] = $value;
        } else {
            unset($this->_params['bq']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setRefine($value)
    {
        if ($value !== null) {
            $this->_params['refine'] = $value;
        } else {
            unset($this->_params['refine']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setContent($value)
    {
        if ($value !== null) {
            $this->_params['content'] = $value;
        } else {
            unset($this->_params['content']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setOrderBy($value)
    {
        if ($value !== null) {
            $this->_params['orderby'] = $value;
        } else {
            unset($this->_params['orderby']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setSortOrder($value)
    {
        if ($value !== null) {
            $this->_params['sortorder'] = $value;
        } else {
            unset($this->_params['sortorder']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setCrowdBy($value)
    {
        if ($value !== null) {
            $this->_params['crowdby'] = $value;
        } else {
            unset($this->_params['crowdby']);
        }
        return $this;
    }

    /**
     * @param string $value
     * @return Zend_Gdata_Gbase_ItemQuery Provides a fluent interface
     */
    public function setAdjust($value)
    {
        if ($value !== null) {
            $this->_params['adjust'] = $value;
        } else {
            unset($this->_params['adjust']);
        }
        return $this;
    }

    /**
     * @return string key
     */
    public function getKey()
    {
        if (array_key_exists('key', $this->_params)) {
            return $this->_params['key'];
        } else {
            return null;
        }
    }

    /**
     * @return string bq
     */
    public function getBq()
    {
        if (array_key_exists('bq', $this->_params)) {
            return $this->_params['bq'];
        } else {
            return null;
        }
    }

    /**
     * @return string refine
     */
    public function getRefine()
    {
        if (array_key_exists('refine', $this->_params)) {
            return $this->_params['refine'];
        } else {
            return null;
        }
    }

    /**
     * @return string content
     */
    public function getContent()
    {
        if (array_key_exists('content', $this->_params)) {
            return $this->_params['content'];
        } else {
            return null;
        }
    }

    /**
     * @return string orderby
     */
    public function getOrderBy()
    {
        if (array_key_exists('orderby', $this->_params)) {
            return $this->_params['orderby'];
        } else {
            return null;
        }
    }

    /**
     * @return string sortorder
     */
    public function getSortOrder()
    {
        if (array_key_exists('sortorder', $this->_params)) {
            return $this->_params['sortorder'];
        } else {
            return null;
        }
    }

    /**
     * @return string crowdby
     */
    public function getCrowdBy()
    {
        if (array_key_exists('crowdby', $this->_params)) {
            return $this->_params['crowdby'];
        } else {
            return null;
        }
    }

    /**
     * @return string adjust
     */
    public function getAdjust()
    {
        if (array_key_exists('adjust', $this->_params)) {
            return $this->_params['adjust'];
        } else {
            return null;
        }
    }

}
PKpG[B,��

Gdata/Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata
 */
require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_App_Feed
 */
require_once 'Zend/Gdata/App/Feed.php';

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_OpenSearchTotalResults
 */
require_once 'Zend/Gdata/Extension/OpenSearchTotalResults.php';

/**
 * @see Zend_Gdata_Extension_OpenSearchStartIndex
 */
require_once 'Zend/Gdata/Extension/OpenSearchStartIndex.php';

/**
 * @see Zend_Gdata_Extension_OpenSearchItemsPerPage
 */
require_once 'Zend/Gdata/Extension/OpenSearchItemsPerPage.php';

/**
 * The Gdata flavor of an Atom Feed
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Feed extends Zend_Gdata_App_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Entry';

    /**
     * The openSearch:totalResults element
     *
     * @var string
     */
    protected $_totalResults = null;

    /**
     * The openSearch:startIndex element
     *
     * @var string
     */
    protected $_startIndex = null;

    /**
     * The openSearch:itemsPerPage element
     *
     * @var string
     */
    protected $_itemsPerPage = null;

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_totalResults != null) {
            $element->appendChild($this->_totalResults->getDOM($element->ownerDocument));
        }
        if ($this->_startIndex != null) {
            $element->appendChild($this->_startIndex->getDOM($element->ownerDocument));
        }
        if ($this->_itemsPerPage != null) {
            $element->appendChild($this->_itemsPerPage->getDOM($element->ownerDocument));
        }

        // ETags are special. We only support them in protocol >= 2.X.
        // This will be duplicated by the HTTP ETag header.
        if ($majorVersion >= 2) {
            if ($this->_etag != null) {
                $element->setAttributeNS($this->lookupNamespace('gd'),
                                         'gd:etag',
                                         $this->_etag);
            }
        }

        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('openSearch') . ':' . 'totalResults':
            $totalResults = new Zend_Gdata_Extension_OpenSearchTotalResults();
            $totalResults->transferFromDOM($child);
            $this->_totalResults = $totalResults;
            break;
        case $this->lookupNamespace('openSearch') . ':' . 'startIndex':
            $startIndex = new Zend_Gdata_Extension_OpenSearchStartIndex();
            $startIndex->transferFromDOM($child);
            $this->_startIndex = $startIndex;
            break;
        case $this->lookupNamespace('openSearch') . ':' . 'itemsPerPage':
            $itemsPerPage = new Zend_Gdata_Extension_OpenSearchItemsPerPage();
            $itemsPerPage->transferFromDOM($child);
            $this->_itemsPerPage = $itemsPerPage;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Given a DOMNode representing an attribute, tries to map the data into
     * instance members.  If no mapping is defined, the name and value are
     * stored in an array.
     *
     * @param DOMNode $attribute The DOMNode attribute needed to be handled
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'etag':
            // ETags are special, since they can be conveyed by either the
            // HTTP ETag header or as an XML attribute.
            $etag = $attribute->nodeValue;
            if (is_null($this->_etag)) {
                $this->_etag = $etag;
            }
            elseif ($this->_etag != $etag) {
                require_once('Zend/Gdata/App/IOException.php');
                throw new Zend_Gdata_App_IOException("ETag mismatch");
            }
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
            break;
        }
    }

    /**
     *  Set the value of the totalResults property.
     *
     * @param integer $value The value of the totalResults property.
     * @return Zend_Gdata_Feed Provides a fluent interface.
     */
    function setTotalResults($value) {
        $this->_totalResults = $value;
        return $this;
    }

    /**
     * Get the value of the totalResults property.
     *
     * @return integer|null The value of the totalResults property, or null.
     */
    function getTotalResults() {
        return $this->_totalResults;
    }

    /**
     * Set the start index property for feed paging.
     *
     * @param integer $value The value for the startIndex property.
     * @return Zend_Gdata_Feed Provides a fluent interface.
     */
    function setStartIndex($value) {
        $this->_startIndex = $value;
        return $this;
    }

    /**
     * Get the value of the startIndex property.
     *
     * @return integer|null The value of the startIndex property, or null.
     */
    function getStartIndex() {
        return $this->_startIndex;
    }

    /**
     * Set the itemsPerPage property.
     *
     * @param integer $value The value for the itemsPerPage property.
     * @return Zend_Gdata_Feed Provides a fluent interface.
     */
    function setItemsPerPage($value) {
        $this->_itemsPerPage = $value;
        return $this;
    }

    /**
     * Get the value of the itemsPerPage property.
     *
     * @return integer|null The value of the itemsPerPage property, or null.
     */
    function getItemsPerPage() {
        return $this->_itemsPerPage;
    }

}
PKpG[�`�z�9�9Gdata/Spreadsheets.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata
 */
require_once('Zend/Gdata.php');

/**
 * Zend_Gdata_Spreadsheets_SpreadsheetFeed
 */
require_once('Zend/Gdata/Spreadsheets/SpreadsheetFeed.php');

/**
 * Zend_Gdata_Spreadsheets_WorksheetFeed
 */
require_once('Zend/Gdata/Spreadsheets/WorksheetFeed.php');

/**
 * Zend_Gdata_Spreadsheets_CellFeed
 */
require_once('Zend/Gdata/Spreadsheets/CellFeed.php');

/**
 * Zend_Gdata_Spreadsheets_ListFeed
 */
require_once('Zend/Gdata/Spreadsheets/ListFeed.php');

/**
 * Zend_Gdata_Spreadsheets_SpreadsheetEntry
 */
require_once('Zend/Gdata/Spreadsheets/SpreadsheetEntry.php');

/**
 * Zend_Gdata_Spreadsheets_WorksheetEntry
 */
require_once('Zend/Gdata/Spreadsheets/WorksheetEntry.php');

/**
 * Zend_Gdata_Spreadsheets_CellEntry
 */
require_once('Zend/Gdata/Spreadsheets/CellEntry.php');

/**
 * Zend_Gdata_Spreadsheets_ListEntry
 */
require_once('Zend/Gdata/Spreadsheets/ListEntry.php');

/**
 * Zend_Gdata_Spreadsheets_DocumentQuery
 */
require_once('Zend/Gdata/Spreadsheets/DocumentQuery.php');

/**
 * Zend_Gdata_Spreadsheets_ListQuery
 */
require_once('Zend/Gdata/Spreadsheets/ListQuery.php');

/**
 * Zend_Gdata_Spreadsheets_CellQuery
 */
require_once('Zend/Gdata/Spreadsheets/CellQuery.php');

/**
 * Gdata Spreadsheets
 *
 * @link http://code.google.com/apis/gdata/spreadsheets.html
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets extends Zend_Gdata
{
    const SPREADSHEETS_FEED_URI = 'http://spreadsheets.google.com/feeds/spreadsheets';
    const SPREADSHEETS_POST_URI = 'http://spreadsheets.google.com/feeds/spreadsheets/private/full';
    const WORKSHEETS_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#worksheetsfeed';
    const LIST_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#listfeed';
    const CELL_FEED_LINK_URI = 'http://schemas.google.com/spreadsheets/2006#cellsfeed';
    const AUTH_SERVICE_NAME = 'wise';

    /**
     * Namespaces used for Zend_Gdata_Photos
     *
     * @var array
     */
    public static $namespaces = array(
        array('gs', 'http://schemas.google.com/spreadsheets/2006', 1, 0),
        array(
            'gsx', 'http://schemas.google.com/spreadsheets/2006/extended', 1, 0)
    );

    /**
     * Create Gdata_Spreadsheets object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Spreadsheets');
        $this->registerPackage('Zend_Gdata_Spreadsheets_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
        $this->_server = 'spreadsheets.google.com';
    }

    /**
     * Gets a spreadsheet feed.
     *
     * @param mixed $location A DocumentQuery or a string URI specifying the feed location.
     * @return Zend_Gdata_Spreadsheets_SpreadsheetFeed
     */
    public function getSpreadsheetFeed($location = null)
    {
        if ($location == null) {
            $uri = self::SPREADSHEETS_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
            if ($location->getDocumentType() == null) {
                $location->setDocumentType('spreadsheets');
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }

        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetFeed');
    }

    /**
     * Gets a spreadsheet entry.
     *
     * @param string $location A DocumentQuery or a URI specifying the entry location.
     * @return SpreadsheetEntry
     */
    public function getSpreadsheetEntry($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
            if ($location->getDocumentType() == null) {
                $location->setDocumentType('spreadsheets');
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }

        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_SpreadsheetEntry');
    }

    /**
     * Gets a worksheet feed.
     *
     * @param mixed $location A DocumentQuery, SpreadsheetEntry, or a string URI
     * @return Zend_Gdata_Spreadsheets_WorksheetFeed The feed of worksheets
     */
    public function getWorksheetFeed($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
            if ($location->getDocumentType() == null) {
                $location->setDocumentType('worksheets');
            }
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Spreadsheets_SpreadsheetEntry) {
            $uri = $location->getLink(self::WORKSHEETS_FEED_LINK_URI)->href;
        } else {
            $uri = $location;
        }

        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_WorksheetFeed');
    }

    /**
     * Gets a worksheet entry.
     *
     * @param string $location A DocumentQuery or a URI specifying the entry location.
     * @return WorksheetEntry
     */
    public function GetWorksheetEntry($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_DocumentQuery) {
            if ($location->getDocumentType() == null) {
                $location->setDocumentType('worksheets');
            }
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }

        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_WorksheetEntry');
    }

    /**
     * Gets a cell feed.
     *
     * @param string $location A CellQuery, WorksheetEntry or a URI specifying the feed location.
     * @return CellFeed
     */
    public function getCellFeed($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
            $uri = $location->getLink(self::CELL_FEED_LINK_URI)->href;
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_CellFeed');
    }

    /**
     * Gets a cell entry.
     *
     * @param string $location A CellQuery or a URI specifying the entry location.
     * @return CellEntry
     */
    public function getCellEntry($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }

        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_CellEntry');
    }

    /**
     * Gets a list feed.
     *
     * @param mixed $location A ListQuery, WorksheetEntry or string URI specifying the feed location.
     * @return ListFeed
     */
    public function getListFeed($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) {
            $uri = $location->getQueryUrl();
        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
            $uri = $location->getLink(self::LIST_FEED_LINK_URI)->href;
        } else {
            $uri = $location;
        }

        return parent::getFeed($uri, 'Zend_Gdata_Spreadsheets_ListFeed');
    }

    /**
     * Gets a list entry.
     *
     * @param string $location A ListQuery or a URI specifying the entry location.
     * @return ListEntry
     */
    public function getListEntry($location)
    {
        if ($location instanceof Zend_Gdata_Spreadsheets_ListQuery) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }

        return parent::getEntry($uri, 'Zend_Gdata_Spreadsheets_ListEntry');
    }

    /**
     * Updates an existing cell.
     *
     * @param int $row The row containing the cell to update
     * @param int $col The column containing the cell to update
     * @param int $inputValue The new value for the cell
     * @param string $key The key for the spreadsheet to be updated
     * @param string $wkshtId (optional) The worksheet to be updated
     * @return CellEntry The updated cell entry.
     */
    public function updateCell($row, $col, $inputValue, $key, $wkshtId = 'default')
    {
        $cell = 'R'.$row.'C'.$col;

        $query = new Zend_Gdata_Spreadsheets_CellQuery();
        $query->setSpreadsheetKey($key);
        $query->setWorksheetId($wkshtId);
        $query->setCellId($cell);

        $entry = $this->getCellEntry($query);
        $entry->setCell(new Zend_Gdata_Spreadsheets_Extension_Cell(null, $row, $col, $inputValue));
        $response = $entry->save();
        return $response;
    }

    /**
     * Inserts a new row with provided data.
     *
     * @param array $rowData An array of column header to row data
     * @param string $key The key of the spreadsheet to modify
     * @param string $wkshtId (optional) The worksheet to modify
     * @return ListEntry The inserted row
     */
    public function insertRow($rowData, $key, $wkshtId = 'default')
    {
        $newEntry = new Zend_Gdata_Spreadsheets_ListEntry();
        $newCustomArr = array();
        foreach ($rowData as $k => $v) {
            $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom();
            $newCustom->setText($v)->setColumnName($k);
            $newEntry->addCustom($newCustom);
        }

        $query = new Zend_Gdata_Spreadsheets_ListQuery();
        $query->setSpreadsheetKey($key);
        $query->setWorksheetId($wkshtId);

        $feed = $this->getListFeed($query);
        $editLink = $feed->getLink('http://schemas.google.com/g/2005#post');

        return $this->insertEntry($newEntry->saveXML(), $editLink->href, 'Zend_Gdata_Spreadsheets_ListEntry');
    }

    /**
     * Updates an existing row with provided data.
     *
     * @param ListEntry $entry The row entry to update
     * @param array $newRowData An array of column header to row data
     */
    public function updateRow($entry, $newRowData)
    {
        $newCustomArr = array();
        foreach ($newRowData as $k => $v) {
            $newCustom = new Zend_Gdata_Spreadsheets_Extension_Custom();
            $newCustom->setText($v)->setColumnName($k);
            $newCustomArr[] = $newCustom;
        }
        $entry->setCustom($newCustomArr);

        return $entry->save();
    }

    /**
     * Deletes an existing row .
     *
     * @param ListEntry $entry The row to delete
     */
    public function deleteRow($entry)
    {
        $entry->delete();
    }

    /**
     * Returns the content of all rows as an associative array
     *
     * @param mixed $location A ListQuery or string URI specifying the feed location.
     * @return array An array of rows.  Each element of the array is an associative array of data
     */
    public function getSpreadsheetListFeedContents($location)
    {
        $listFeed = $this->getListFeed($location);
        $listFeed = $this->retrieveAllEntriesForFeed($listFeed);
        $spreadsheetContents = array();
        foreach ($listFeed as $listEntry) {
            $rowContents = array();
            $customArray = $listEntry->getCustom();
            foreach ($customArray as $custom) {
                $rowContents[$custom->getColumnName()] = $custom->getText();
            }
            $spreadsheetContents[] = $rowContents;
        }
        return $spreadsheetContents;
    }

    /**
     * Returns the content of all cells as an associative array, indexed
     * off the cell location  (ie 'A1', 'D4', etc).  Each element of
     * the array is an associative array with a 'value' and a 'function'.
     * Only non-empty cells are returned by default.  'range' is the
     * value of the 'range' query parameter specified at:
     * http://code.google.com/apis/spreadsheets/reference.html#cells_Parameters
     *
     * @param mixed $location A CellQuery, WorksheetEntry or a URL (w/o query string) specifying the feed location.
     * @param string $range The range of cells to retrieve
     * @param boolean $empty Whether to retrieve empty cells
     * @return array An associative array of cells
     */
    public function getSpreadsheetCellFeedContents($location, $range = null, $empty = false)
    {
        $cellQuery = null;
        if ($location instanceof Zend_Gdata_Spreadsheets_CellQuery) {
            $cellQuery = $location;
        } else if ($location instanceof Zend_Gdata_Spreadsheets_WorksheetEntry) {
            $url = $location->getLink(self::CELL_FEED_LINK_URI)->href;
            $cellQuery = new Zend_Gdata_Spreadsheets_CellQuery($url);
        } else {
            $url = $location;
            $cellQuery = new Zend_Gdata_Spreadsheets_CellQuery($url);
        }

        if ($range != null) {
            $cellQuery->setRange($range);
        }
        $cellQuery->setReturnEmpty($empty);

        $cellFeed = $this->getCellFeed($cellQuery);
        $cellFeed = $this->retrieveAllEntriesForFeed($cellFeed);
        $spreadsheetContents = array();
        foreach ($cellFeed as $cellEntry) {
            $cellContents = array();
            $cell = $cellEntry->getCell();
            $cellContents['formula'] = $cell->getInputValue();
            $cellContents['value'] = $cell->getText();
            $spreadsheetContents[$cellEntry->getTitle()->getText()] = $cellContents;
        }
        return $spreadsheetContents;
    }

    /**
     * Alias for getSpreadsheetFeed
     *
     * @param mixed $location A DocumentQuery or a string URI specifying the feed location.
     * @return Zend_Gdata_Spreadsheets_SpreadsheetFeed
     */
    public function getSpreadsheets($location = null)
    {
        return $this->getSpreadsheetFeed($location = null);
    }

}
PKpG[)�`|�(�( Gdata/Spreadsheets/CellQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_util
 */
require_once('Zend/Gdata/App/Util.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Spreadsheets cells
 *
 * @link http://code.google.com/apis/gdata/spreadsheets/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_CellQuery extends Zend_Gdata_Query
{

    const SPREADSHEETS_CELL_FEED_URI = 'http://spreadsheets.google.com/feeds/cells';

    protected $_defaultFeedUri = self::SPREADSHEETS_CELL_FEED_URI;
    protected $_visibility = 'private';
    protected $_projection = 'full';
    protected $_spreadsheetKey = null;
    protected $_worksheetId = 'default';
    protected $_cellId = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_CellQuery object.
     *
     * @param string $url Base URL to use for queries
     */
    public function __construct($url = null)
    {
        parent::__construct($url);
    }

    /**
     * Sets the spreadsheet key for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setSpreadsheetKey($value)
    {
        $this->_spreadsheetKey = $value;
        return $this;
    }

    /**
     * Gets the spreadsheet key for this query.
     *
     * @return string spreadsheet key
     */
    public function getSpreadsheetKey()
    {
        return $this->_spreadsheetKey;
    }

    /**
     * Sets the worksheet id for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setWorksheetId($value)
    {
        $this->_worksheetId = $value;
        return $this;
    }

    /**
     * Gets the worksheet id for this query.
     *
     * @return string worksheet id
     */
    public function getWorksheetId()
    {
        return $this->_worksheetId;
    }

    /**
     * Sets the cell id for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setCellId($value)
    {
        $this->_cellId = $value;
        return $this;
    }

    /**
     * Gets the cell id for this query.
     *
     * @return string cell id
     */
    public function getCellId()
    {
        return $this->_cellId;
    }

    /**
     * Sets the projection for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * Sets the visibility for this query.
     *
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    /**
     * Gets the projection for this query.
     *
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }

    /**
     * Gets the visibility for this query.
     *
     * @return string visibility
     */
    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * Sets the min-row attribute for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setMinRow($value)
    {
        if ($value != null) {
            $this->_params['min-row'] = $value;
        } else {
            unset($this->_params['min-row']);
        }
        return $this;
    }

    /**
     * Gets the min-row attribute for this query.
     *
     * @return string min-row
     */
    public function getMinRow()
    {
        if (array_key_exists('min-row', $this->_params)) {
            return $this->_params['min-row'];
        } else {
            return null;
        }
    }

    /**
     * Sets the max-row attribute for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setMaxRow($value)
    {
        if ($value != null) {
            $this->_params['max-row'] = $value;
        } else {
            unset($this->_params['max-row']);
        }
        return $this;
    }

    /**
     * Gets the max-row attribute for this query.
     *
     * @return string max-row
     */
    public function getMaxRow()
    {
        if (array_key_exists('max-row', $this->_params)) {
            return $this->_params['max-row'];
        } else {
            return null;
        }
    }

    /**
     * Sets the min-col attribute for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setMinCol($value)
    {
        if ($value != null) {
            $this->_params['min-col'] = $value;
        } else {
            unset($this->_params['min-col']);
        }
        return $this;
    }

    /**
     * Gets the min-col attribute for this query.
     *
     * @return string min-col
     */
    public function getMinCol()
    {
        if (array_key_exists('min-col', $this->_params)) {
            return $this->_params['min-col'];
        } else {
            return null;
        }
    }

    /**
     * Sets the max-col attribute for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setMaxCol($value)
    {
        if ($value != null) {
            $this->_params['max-col'] = $value;
        } else {
            unset($this->_params['max-col']);
        }
        return $this;
    }

    /**
     * Gets the max-col attribute for this query.
     *
     * @return string max-col
     */
    public function getMaxCol()
    {
        if (array_key_exists('max-col', $this->_params)) {
            return $this->_params['max-col'];
        } else {
            return null;
        }
    }

    /**
     * Sets the range attribute for this query.
     *
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setRange($value)
    {
        if ($value != null) {
            $this->_params['range'] = $value;
        } else {
            unset($this->_params['range']);
        }
        return $this;
    }

    /**
     * Gets the range attribute for this query.
     *
     * @return string range
     */
    public function getRange()
    {
        if (array_key_exists('range', $this->_params)) {
            return $this->_params['range'];
        } else {
            return null;
        }
    }

    /**
     * Sets the return-empty attribute for this query.
     *
     * @param mixed $value String or bool value for whether to return empty cells
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setReturnEmpty($value)
    {
        if (is_bool($value)) {
            $this->_params['return-empty'] = ($value?'true':'false');
        } else if ($value != null) {
            $this->_params['return-empty'] = $value;
        } else {
            unset($this->_params['return-empty']);
        }
        return $this;
    }

    /**
     * Gets the return-empty attribute for this query.
     *
     * @return string return-empty
     */
    public function getReturnEmpty()
    {
        if (array_key_exists('return-empty', $this->_params)) {
            return $this->_params['return-empty'];
        } else {
            return null;
        }
    }

    /**
     * Gets the full query URL for this query.
     *
     * @return string url
     */
    public function getQueryUrl()
    {
        if ($this->_url == null) {
            $uri = $this->_defaultFeedUri;

            if ($this->_spreadsheetKey != null) {
                $uri .= '/'.$this->_spreadsheetKey;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for cell queries.');
            }

            if ($this->_worksheetId != null) {
                $uri .= '/'.$this->_worksheetId;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('A worksheet id must be provided for cell queries.');
            }

            if ($this->_visibility != null) {
                $uri .= '/'.$this->_visibility;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('A visibility must be provided for cell queries.');
            }

            if ($this->_projection != null) {
                $uri .= '/'.$this->_projection;
            } else {
                require_once 'Zend/Gdata/App/Exception.php';
                throw new Zend_Gdata_App_Exception('A projection must be provided for cell queries.');
            }

            if ($this->_cellId != null) {
                $uri .= '/'.$this->_cellId;
            }
        } else {
            $uri = $this->_url;
        }

        $uri .= $this->getQueryString();
        return $uri;
    }

    /**
     * Gets the attribute query string for this query.
     *
     * @return string query string
     */
    public function getQueryString()
    {
        return parent::getQueryString();
    }

}
PKpG[�VQ��Gdata/Spreadsheets/ListFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_ListFeed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_ListEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_ListFeed';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_ListFeed object.
     * @param DOMElement $element An existing XML element on which to base this new object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

}
PKpG[8�$UU%Gdata/Spreadsheets/WorksheetEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_RowCount
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/RowCount.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_ColCount
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/ColCount.php';

/**
 * Concrete class for working with Worksheet entries.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_WorksheetEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_WorksheetEntry';

    protected $_rowCount = null;
    protected $_colCount = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_WorksheetEntry object.
     *
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_rowCount != null) {
            $element->appendChild($this->_rowCount->getDOM($element->ownerDocument));
        }
        if ($this->_colCount != null) {
            $element->appendChild($this->_colCount->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gs') . ':' . 'rowCount';
                $rowCount = new Zend_Gdata_Spreadsheets_Extension_RowCount();
                $rowCount->transferFromDOM($child);
                $this->_rowCount = $rowCount;
                break;
            case $this->lookupNamespace('gs') . ':' . 'colCount';
                $colCount = new Zend_Gdata_Spreadsheets_Extension_ColCount();
                $colCount->transferFromDOM($child);
                $this->_colCount = $colCount;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }


    /**
     * Gets the row count for this entry.
     *
     * @return string The row count for the entry.
     */
    public function getRowCount()
    {
        return $this->_rowCount;
    }

    /**
     * Gets the column count for this entry.
     *
     * @return string The column count for the entry.
     */
    public function getColumnCount()
    {
        return $this->_colCount;
    }

    /**
     * Sets the row count for this entry.
     *
     * @param string $rowCount The new row count for the entry.
     */
    public function setRowCount($rowCount)
    {
        $this->_rowCount = $rowCount;
        return $this;
    }

    /**
     * Sets the column count for this entry.
     *
     * @param string $colCount The new column count for the entry.
     */
    public function setColumnCount($colCount)
    {
        $this->_colCount = $colCount;
        return $this;
    }

    /**
     * Returns the content of all rows as an associative array
     *
     * @return array An array of rows.  Each element of the array is an associative array of data
     */
    public function getContentsAsRows()
    {
        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
        return $service->getSpreadsheetListFeedContents($this);
    }

    /**
     * Returns the content of all cells as an associative array, indexed
     * off the cell location  (ie 'A1', 'D4', etc).  Each element of
     * the array is an associative array with a 'value' and a 'function'.
     * Only non-empty cells are returned by default.  'range' is the
     * value of the 'range' query parameter specified at:
     * http://code.google.com/apis/spreadsheets/reference.html#cells_Parameters
     *
     * @param string $range The range of cells to retrieve
     * @param boolean $empty Whether to retrieve empty cells
     * @return array An associative array of cells
     */
    public function getContentsAsCells($range = null, $empty = false)
    {
        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
        return $service->getSpreadsheetCellFeedContents($this, $range, $empty);
    }

}
PKpG[�Pzmm'Gdata/Spreadsheets/SpreadsheetEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * Concrete class for working with Atom entries.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_SpreadsheetEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetEntry';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_SpreadsheetEntry object.
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    /**
     * Returns the worksheets in this spreadsheet
     *
     * @return Zend_Gdata_Spreadsheets_WorksheetFeed The worksheets
     */
    public function getWorksheets()
    {
        $service = new Zend_Gdata_Spreadsheets($this->getHttpClient());
        return $service->getWorksheetFeed($this);
    }

}
PKpG[���%��)Gdata/Spreadsheets/Extension/RowCount.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';


/**
 * Concrete class for working with RowCount elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_Extension_RowCount extends Zend_Gdata_Extension
{

    protected $_rootElement = 'rowCount';
    protected $_rootNamespace = 'gs';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_Extension_RowCount object.
     * @param string $text (optional) The text content of the element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }

}
PKpG[m(�x%Gdata/Spreadsheets/Extension/Cell.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';


/**
 * Concrete class for working with cell elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_Extension_Cell extends Zend_Gdata_Extension
{
    protected $_rootElement = 'cell';
    protected $_rootNamespace = 'gs';

    /**
     * The row attribute of this cell
     *
     * @var string
     */
    protected $_row = null;

    /**
     * The column attribute of this cell
     *
     * @var string
     */
    protected $_col = null;

    /**
     * The inputValue attribute of this cell
     *
     * @var string
     */
    protected $_inputValue = null;

    /**
     * The numericValue attribute of this cell
     *
     * @var string
     */
    protected $_numericValue = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_Extension_Cell element.
     *
     * @param string $text (optional) Text contents of the element.
     * @param string $row (optional) Row attribute of the element.
     * @param string $col (optional) Column attribute of the element.
     * @param string $inputValue (optional) Input value attribute of the element.
     * @param string $numericValue (optional) Numeric value attribute of the element.
     */
    public function __construct($text = null, $row = null, $col = null, $inputValue = null, $numericValue = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct();
        $this->_text = $text;
        $this->_row = $row;
        $this->_col = $col;
        $this->_inputValue = $inputValue;
        $this->_numericValue = $numericValue;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        $element->setAttribute('row', $this->_row);
        $element->setAttribute('col', $this->_col);
        if ($this->_inputValue) $element->setAttribute('inputValue', $this->_inputValue);
        if ($this->_numericValue) $element->setAttribute('numericValue', $this->_numericValue);
        return $element;
    }

    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'row':
            $this->_row = $attribute->nodeValue;
            break;
        case 'col':
            $this->_col = $attribute->nodeValue;
            break;
        case 'inputValue':
            $this->_inputValue = $attribute->nodeValue;
            break;
        case 'numericValue':
            $this->_numericValue = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Gets the row attribute of the Cell element.
     * @return string Row of the Cell.
     */
    public function getRow()
    {
        return $this->_row;
    }

    /**
     * Gets the column attribute of the Cell element.
     * @return string Column of the Cell.
     */
    public function getColumn()
    {
        return $this->_col;
    }

    /**
     * Gets the input value attribute of the Cell element.
     * @return string Input value of the Cell.
     */
    public function getInputValue()
    {
        return $this->_inputValue;
    }

    /**
     * Gets the numeric value attribute of the Cell element.
     * @return string Numeric value of the Cell.
     */
    public function getNumericValue()
    {
        return $this->_numericValue;
    }

    /**
     * Sets the row attribute of the Cell element.
     * @param string $row New row of the Cell.
     */
    public function setRow($row)
    {
        $this->_row = $row;
        return $this;
    }

    /**
     * Sets the column attribute of the Cell element.
     * @param string $col New column of the Cell.
     */
    public function setColumn($col)
    {
        $this->_col = $col;
        return $this;
    }

    /**
     * Sets the input value attribute of the Cell element.
     * @param string $inputValue New input value of the Cell.
     */
    public function setInputValue($inputValue)
    {
        $this->_inputValue = $inputValue;
        return $this;
    }

    /**
     * Sets the numeric value attribute of the Cell element.
     * @param string $numericValue New numeric value of the Cell.
     */
    public function setNumericValue($numericValue)
    {
        $this->_numericValue = $numericValue;
    }

}
PKpG[���e��)Gdata/Spreadsheets/Extension/ColCount.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';


/**
 * Concrete class for working with colCount elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_Extension_ColCount extends Zend_Gdata_Extension
{

    protected $_rootElement = 'colCount';
    protected $_rootNamespace = 'gs';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_Extension_ColCount element.
     * @param string $text (optional) Text contents of the element.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct();
        $this->_text = $text;
    }
}
PKpG[	����'Gdata/Spreadsheets/Extension/Custom.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Entry.php 3941 2007-03-14 21:36:13Z darby $
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';


/**
 * Concrete class for working with custom gsx elements.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_Extension_Custom extends Zend_Gdata_Extension
{
    // custom elements have custom names.
    protected $_rootElement = null; // The name of the column
    protected $_rootNamespace = 'gsx';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_Extension_Custom object.
     * @param string $column (optional) The column/tag name of the element.
     * @param string $value (optional) The text content of the element.
     */
    public function __construct($column = null, $value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct();
        $this->_text = $value;
        $this->_rootElement = $column;
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        return $element;
    }

    /**
     * Transfers each child and attribute into member variables.
     * This is called when XML is received over the wire and the data
     * model needs to be built to represent this XML.
     *
     * @param DOMNode $node The DOMNode that represents this object's data
     */
    public function transferFromDOM($node)
    {
        parent::transferFromDOM($node);
        $this->_rootElement = $node->localName;
    }

    /**
     * Sets the column/tag name of the element.
     * @param string $column The new column name.
     */
    public function setColumnName($column)
    {
        $this->_rootElement = $column;
        return $this;
    }

    /**
     * Gets the column name of the element
     * @return string The column name.
     */
    public function getColumnName()
    {
        return $this->_rootElement;
    }

}
PKpG[��K�� Gdata/Spreadsheets/CellEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_Cell
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/Cell.php';

/**
 * Concrete class for working with Cell entries.
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_CellEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_CellEntry';
    protected $_cell;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_CellEntry object.
     * @param string $uri (optional)
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_cell != null) {
            $element->appendChild($this->_cell->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('gs') . ':' . 'cell';
            $cell = new Zend_Gdata_Spreadsheets_Extension_Cell();
            $cell->transferFromDOM($child);
            $this->_cell = $cell;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Gets the Cell element of this Cell Entry.
     * @return Zend_Gdata_Spreadsheets_Extension_Cell
     */
    public function getCell()
    {
        return $this->_cell;
    }

    /**
     * Sets the Cell element of this Cell Entry.
     * @param $cell Zend_Gdata_Spreadsheets_Extension_Cell $cell
     */
    public function setCell($cell)
    {
        $this->_cell = $cell;
        return $this;
    }

}
PKpG[���w��&Gdata/Spreadsheets/SpreadsheetFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_SpreadsheetFeed extends Zend_Gdata_Feed
{

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_SpreadsheetFeed';

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_SpreadsheetFeed object.
     * @param DOMElement $element (optional) The DOMElement on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

}
PKpG[�?T??Gdata/Spreadsheets/CellFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_RowCount
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/RowCount.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_ColCount
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/ColCount.php';

/**
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_CellFeed extends Zend_Gdata_Feed
{

    /**
    * The classname for individual feed elements.
    *
    * @var string
    */
    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_CellEntry';

    /**
    * The classname for the feed.
    *
    * @var string
    */
    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_CellFeed';

    /**
    * The row count for the feed.
    *
    * @var Zend_Gdata_Spreadsheets_Extension_RowCount
    */
    protected $_rowCount = null;

    /**
    * The column count for the feed.
    *
    * @var Zend_Gdata_Spreadsheets_Extension_ColCount
    */
    protected $_colCount = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_CellFeed object.
     * @param DOMElement $element (optional) The XML Element on which to base this object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->rowCount != null) {
            $element->appendChild($this->_rowCount->getDOM($element->ownerDocument));
        }
        if ($this->colCount != null) {
            $element->appendChild($this->_colCount->getDOM($element->ownerDocument));
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gs') . ':' . 'rowCount';
                $rowCount = new Zend_Gdata_Spreadsheets_Extension_RowCount();
                $rowCount->transferFromDOM($child);
                $this->_rowCount = $rowCount;
                break;
            case $this->lookupNamespace('gs') . ':' . 'colCount';
                $colCount = new Zend_Gdata_Spreadsheets_Extension_ColCount();
                $colCount->transferFromDOM($child);
                $this->_colCount = $colCount;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Gets the row count for this feed.
     * @return string The row count for the feed.
     */
    public function getRowCount()
    {
        return $this->_rowCount;
    }

    /**
     * Gets the column count for this feed.
     * @return string The column count for the feed.
     */
    public function getColumnCount()
    {
        return $this->_colCount;
    }

    /**
     * Sets the row count for this feed.
     * @param string $rowCount The new row count for the feed.
     */
    public function setRowCount($rowCount)
    {
        $this->_rowCount = $rowCount;
        return $this;
    }

    /**
     * Sets the column count for this feed.
     * @param string $colCount The new column count for the feed.
     */
    public function setColumnCount($colCount)
    {
        $this->_colCount = $colCount;
        return $this;
    }

}
PKpG[*�*�� Gdata/Spreadsheets/ListQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_util
 */
require_once('Zend/Gdata/App/Util.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Spreadsheets lists
 *
 * @link http://code.google.com/apis/gdata/calendar/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_ListQuery extends Zend_Gdata_Query
{

    const SPREADSHEETS_LIST_FEED_URI = 'http://spreadsheets.google.com/feeds/list';

    protected $_defaultFeedUri = self::SPREADSHEETS_LIST_FEED_URI;
    protected $_visibility = 'private';
    protected $_projection = 'full';
    protected $_spreadsheetKey = null;
    protected $_worksheetId = 'default';
    protected $_rowId = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_ListQuery object.
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Sets the spreadsheet key for the query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setSpreadsheetKey($value)
    {
        $this->_spreadsheetKey = $value;
        return $this;
    }

    /**
     * Gets the spreadsheet key for the query.
     * @return string spreadsheet key
     */
    public function getSpreadsheetKey()
    {
        return $this->_spreadsheetKey;
    }

    /**
     * Sets the worksheet id for the query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setWorksheetId($value)
    {
        $this->_worksheetId = $value;
        return $this;
    }

    /**
     * Gets the worksheet id for the query.
     * @return string worksheet id
     */
    public function getWorksheetId()
    {
        return $this->_worksheetId;
    }

    /**
     * Sets the row id for the query.
     * @param string $value row id
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setRowId($value)
    {
        $this->_rowId = $value;
        return $this;
    }

    /**
     * Gets the row id for the query.
     * @return string row id
     */
    public function getRowId()
    {
        return $this->_rowId;
    }

    /**
     * Sets the projection for the query.
     * @param string $value Projection
     * @return Zend_Gdata_Spreadsheets_ListQuery Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * Sets the visibility for this query.
     * @param string $value visibility
     * @return Zend_Gdata_Spreadsheets_ListQuery Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    /**
     * Gets the projection for this query.
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }

    /**
     * Gets the visibility for this query.
     * @return string visibility
     */
    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * Sets the spreadsheet key for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setSpreadsheetQuery($value)
    {
        if ($value != null) {
            $this->_params['sq'] = $value;
        } else {
            unset($this->_params['sq']);
        }
        return $this;
    }

    /**
     * Gets the spreadsheet key for this query.
     * @return string spreadsheet query
     */
    public function getSpreadsheetQuery()
    {
        if (array_key_exists('sq', $this->_params)) {
            return $this->_params['sq'];
        } else {
            return null;
        }
    }

    /**
     * Sets the orderby attribute for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setOrderBy($value)
    {
        if ($value != null) {
            $this->_params['orderby'] = $value;
        } else {
            unset($this->_params['orderby']);
        }
        return $this;
    }

    /**
     * Gets the orderby attribute for this query.
     * @return string orderby
     */
    public function getOrderBy()
    {
        if (array_key_exists('orderby', $this->_params)) {
            return $this->_params['orderby'];
        } else {
            return null;
        }
    }

    /**
     * Sets the reverse attribute for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setReverse($value)
    {
        if ($value != null) {
            $this->_params['reverse'] = $value;
        } else {
            unset($this->_params['reverse']);
        }
        return $this;
    }

    /**
     * Gets the reverse attribute for this query.
     * @return string reverse
     */
    public function getReverse()
    {


        if (array_key_exists('reverse', $this->_params)) {
            return $this->_params['reverse'];
        } else {
            return null;
        }
    }

    /**
     * Gets the full query URL for this query.
     * @return string url
     */
    public function getQueryUrl()
    {

        $uri = $this->_defaultFeedUri;

        if ($this->_spreadsheetKey != null) {
            $uri .= '/'.$this->_spreadsheetKey;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for list queries.');
        }

        if ($this->_worksheetId != null) {
            $uri .= '/'.$this->_worksheetId;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A worksheet id must be provided for list queries.');
        }

        if ($this->_visibility != null) {
            $uri .= '/'.$this->_visibility;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A visibility must be provided for list queries.');
        }

        if ($this->_projection != null) {
            $uri .= '/'.$this->_projection;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A projection must be provided for list queries.');
        }

        if ($this->_rowId != null) {
            $uri .= '/'.$this->_rowId;
        }

        $uri .= $this->getQueryString();
        return $uri;
    }

    /**
     * Gets the attribute query string for this query.
     * @return string query string
     */
    public function getQueryString()
    {
        return parent::getQueryString();
    }

}
PKpG[j"���$Gdata/Spreadsheets/WorksheetFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_WorksheetFeed extends Zend_Gdata_Feed
{

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_WorksheetFeed object.
     * @param DOMElement $element (optional) The DOMElement on whick to base this element.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_WorksheetEntry';

    /**
     * The classname for the feed.
     *
     * @var string
     */
    protected $_feedClassName = 'Zend_Gdata_Spreadsheets_WorksheetFeed';

}
PKpG[�i�`` Gdata/Spreadsheets/ListEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Spreadsheets_Extension_Custom
 */
require_once 'Zend/Gdata/Spreadsheets/Extension/Custom.php';

/**
 * Concrete class for working with List entries.
 *
 * @category     Zend
 * @package      Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright    Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_ListEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Spreadsheets_ListEntry';

    /**
     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
     * indexed by order added to this entry.
     * @var array
     */
    protected $_custom = array();

    /**
     * List of custom row elements (Zend_Gdata_Spreadsheets_Extension_Custom),
     * indexed by element name.
     * @var array
     */
    protected $_customByName = array();

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_ListEntry object.
     * @param DOMElement $element An existing XML element on which to base this new object.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Spreadsheets::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if (!empty($this->_custom)) {
            foreach ($this->_custom as $custom) {
                $element->appendChild($custom->getDOM($element->ownerDocument));
            }
        }
        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        switch ($child->namespaceURI) {
        case $this->lookupNamespace('gsx');
            $custom = new Zend_Gdata_Spreadsheets_Extension_Custom($child->localName);
            $custom->transferFromDOM($child);
            $this->addCustom($custom);
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Gets the row elements contained by this list entry.
     * @return array The custom row elements in this list entry
     */
    public function getCustom()
    {
        return $this->_custom;
    }

    /**
     * Gets a single row element contained by this list entry using its name.
     * @param string $name The name of a custom element to return. If null
     *          or not defined, an array containing all custom elements
     *          indexed by name will be returned.
     * @return mixed If a name is specified, the
     *          Zend_Gdata_Spreadsheets_Extension_Custom element requested,
     *          is returned or null if not found. Otherwise, an array of all
     *          Zend_Gdata_Spreadsheets_Extension_Custom elements is returned
     *          indexed by name.
     */
    public function getCustomByName($name = null)
    {
        if ($name === null) {
            return $this->_customByName;
        } else {
            if (array_key_exists($name, $this->customByName)) {
                return $this->_customByName[$name];
            } else {
                return null;
            }
        }
    }

    /**
     * Sets the row elements contained by this list entry. If any
     * custom row elements were previously stored, they will be overwritten.
     * @param array $custom The custom row elements to be contained in this
     *          list entry.
     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
     */
    public function setCustom($custom)
    {
        $this->_custom = array();
        foreach ($custom as $c) {
            $this->addCustom($c);
        }
        return $this;
    }

    /**
     * Add an individual custom row element to this list entry.
     * @param Zend_Gdata_Spreadsheets_Extension_Custom $custom The custom
     *             element to be added.
     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
     */
    public function addCustom($custom)
    {
        $this->_custom[] = $custom;
        $this->_customByName[$custom->getColumnName()] = $custom;
        return $this;
    }

    /**
     * Remove an individual row element from this list entry by index. This
     * will cause the array to be re-indexed.
     * @param int $index The index of the custom element to be deleted.
     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function removeCustom($index)
    {
        if (array_key_exists($index, $this->_custom)) {
            $element = $this->_custom[$index];
            // Remove element
            unset($this->_custom[$index]);
            // Re-index the array
            $this->_custom = array_values($this->_custom);
            // Be sure to delete form both arrays!
            $key = array_search($element, $this->_customByName);
            unset($this->_customByName[$key]);
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                'Element does not exist.');
        }
        return $this;
    }

    /**
     * Remove an individual row element from this list entry by name.
     * @param string $name The name of the custom element to be deleted.
     * @return Zend_Gdata_Spreadsheets_ListEntry Provides a fluent interface.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function removeCustomByName($name)
    {
        if (array_key_exists($name, $this->_customByName)) {
            $element = $this->_customByName[$name];
            // Remove element
            unset($this->_customByName[$name]);
            // Be sure to delete from both arrays!
            $key = array_search($element, $this->_custom);
            unset($this->_custom[$key]);
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                'Element does not exist.');
        }
        return $this;
    }

}
PKpG[x2$Gdata/Spreadsheets/DocumentQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App_util
 */
require_once('Zend/Gdata/App/Util.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Google Spreadsheets documents
 *
 * @link http://code.google.com/apis/gdata/spreadsheets/
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage   Spreadsheets
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Spreadsheets_DocumentQuery extends Zend_Gdata_Query
{

    const SPREADSHEETS_FEED_URI = 'http://spreadsheets.google.com/feeds';

    protected $_defaultFeedUri = self::SPREADSHEETS_FEED_URI;
    protected $_documentType;
    protected $_visibility = 'private';
    protected $_projection = 'full';
    protected $_spreadsheetKey = null;
    protected $_worksheetId = null;

    /**
     * Constructs a new Zend_Gdata_Spreadsheets_DocumentQuery object.
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Sets the spreadsheet key for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setSpreadsheetKey($value)
    {
        $this->_spreadsheetKey = $value;
        return $this;
    }

    /**
     * Gets the spreadsheet key for this query.
     * @return string spreadsheet key
     */
    public function getSpreadsheetKey()
    {
        return $this->_spreadsheetKey;
    }

    /**
     * Sets the worksheet id for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_CellQuery Provides a fluent interface
     */
    public function setWorksheetId($value)
    {
        $this->_worksheetId = $value;
        return $this;
    }

    /**
     * Gets the worksheet id for this query.
     * @return string worksheet id
     */
    public function getWorksheetId()
    {
        return $this->_worksheetId;
    }

    /**
     * Sets the document type for this query.
     * @param string $value spreadsheets or worksheets
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setDocumentType($value)
    {
        $this->_documentType = $value;
        return $this;
    }

    /**
     * Gets the document type for this query.
     * @return string document type
     */
    public function getDocumentType()
    {
        return $this->_documentType;
    }

    /**
     * Sets the projection for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * Sets the visibility for this query.
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setVisibility($value)
    {
        $this->_visibility = $value;
        return $this;
    }

    /**
     * Gets the projection for this query.
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }

    /**
     * Gets the visibility for this query.
     * @return string visibility
     */
    public function getVisibility()
    {
        return $this->_visibility;
    }

    /**
     * Sets the title attribute for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setTitle($value)
    {
        if ($value != null) {
            $this->_params['title'] = $value;
        } else {
            unset($this->_params['title']);
        }
        return $this;
    }

    /**
     * Sets the title-exact attribute for this query.
     * @param string $value
     * @return Zend_Gdata_Spreadsheets_DocumentQuery Provides a fluent interface
     */
    public function setTitleExact($value)
    {
        if ($value != null) {
            $this->_params['title-exact'] = $value;
        } else {
            unset($this->_params['title-exact']);
        }
        return $this;
    }

    /**
     * Gets the title attribute for this query.
     * @return string title
     */
    public function getTitle()
    {
        if (array_key_exists('title', $this->_params)) {
            return $this->_params['title'];
        } else {
            return null;
        }
    }

    /**
     * Gets the title-exact attribute for this query.
     * @return string title-exact
     */
    public function getTitleExact()
    {
        if (array_key_exists('title-exact', $this->_params)) {
            return $this->_params['title-exact'];
        } else {
            return null;
        }
    }

    private function appendVisibilityProjection()
    {
        $uri = '';

        if ($this->_visibility != null) {
            $uri .= '/'.$this->_visibility;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A visibility must be provided for document queries.');
        }

        if ($this->_projection != null) {
            $uri .= '/'.$this->_projection;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A projection must be provided for document queries.');
        }

        return $uri;
    }


    /**
     * Gets the full query URL for this query.
     * @return string url
     */
    public function getQueryUrl()
    {
        $uri = $this->_defaultFeedUri;

        if ($this->_documentType != null) {
            $uri .= '/'.$this->_documentType;
        } else {
            require_once 'Zend/Gdata/App/Exception.php'; 
            throw new Zend_Gdata_App_Exception('A document type must be provided for document queries.');
        }

        if ($this->_documentType == 'spreadsheets') {
            $uri .= $this->appendVisibilityProjection();
            if ($this->_spreadsheetKey != null) {
                $uri .= '/'.$this->_spreadsheetKey;
            }
        } else if ($this->_documentType == 'worksheets') {
            if ($this->_spreadsheetKey != null) {
                $uri .= '/'.$this->_spreadsheetKey;
            } else {
                require_once 'Zend/Gdata/App/Exception.php'; 
                throw new Zend_Gdata_App_Exception('A spreadsheet key must be provided for worksheet document queries.');
            }
            $uri .= $this->appendVisibilityProjection();
            if ($this->_worksheetId != null) {
                $uri .= '/'.$this->_worksheetId;
            }
        }

        $uri .= $this->getQueryString();
        return $uri;
    }

    /**
     * Gets the attribute query string for this query.
     * @return string query string
     */
    public function getQueryString()
    {
        return parent::getQueryString();
    }

}
PKpG[/��}��Gdata/Books/VolumeQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_Books
 */
require_once('Zend/Gdata/Books.php');

/**
 * Zend_Gdata_Query
 */
require_once('Zend/Gdata/Query.php');

/**
 * Assists in constructing queries for Books volumes
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_VolumeQuery extends Zend_Gdata_Query
{

    /**
     * Create Gdata_Books_VolumeQuery object
     *
     * @param string|null $url If non-null, pre-initializes the instance to
     *        use a given URL.
     */
    public function __construct($url = null)
    {
        parent::__construct($url);
    }

    /**
     * Sets the minimum level of viewability of volumes to return in the search results
     *
     * @param string|null $value The minimum viewability - 'full' or 'partial'
     * @return Zend_Gdata_Books_VolumeQuery Provides a fluent interface
     */
    public function setMinViewability($value = null)
    {
        switch ($value) {
            case 'full_view':
                $this->_params['min-viewability'] = 'full';
                break;
            case 'partial_view':
                $this->_params['min-viewability'] = 'partial';
                break;
            case null:
                unset($this->_params['min-viewability']);
                break;
        }
        return $this;
    }

    /**
     * Minimum viewability of volumes to include in search results
     *
     * @return string|null min-viewability
     */
    public function getMinViewability()
    {
        if (array_key_exists('min-viewability', $this->_params)) {
            return $this->_params['min-viewability'];
        } else {
            return null;
        }
    }

    /**
     * Returns the generated full query URL
     *
     * @return string The URL
     */
    public function getQueryUrl()
    {
        if (isset($this->_url)) {
            $url = $this->_url;
        } else {
            $url = Zend_Gdata_Books::VOLUME_FEED_URI;
        }
        if ($this->getCategory() !== null) {
            $url .= '/-/' . $this->getCategory();
        }
        $url = $url . $this->getQueryString();
        return $url;
    }

}
PKpG[��]��Gdata/Books/VolumeFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Describes a Book Search volume feed
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_VolumeFeed extends Zend_Gdata_Feed
{

    /**
     * Constructor for Zend_Gdata_Books_VolumeFeed which
     * Describes a Book Search volume feed
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($element);
    }

     /**
      * The classname for individual feed elements.
      *
      * @var string
      */
     protected $_entryClassName = 'Zend_Gdata_Books_VolumeEntry';

}

PKpG[��L�GG'Gdata/Books/Extension/BooksCategory.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Describes a books category
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_BooksCategory extends
    Zend_Gdata_App_Extension_Category
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_BooksCategory which
     * Describes a books category
     *
     * @param string|null $term An identifier representing the category within
     *        the categorization scheme.
     * @param string|null $scheme A string containing a URI identifying the
     *        categorization scheme.
     * @param string|null $label A human-readable label for display in
     *        end-user applications.
     */
    public function __construct($term = null, $scheme = null, $label = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($term, $scheme, $label);
    }

}
PKpG[=����%Gdata/Books/Extension/PreviewLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Books_Extension_BooksLink
 */
require_once 'Zend/Gdata/Books/Extension/BooksLink.php';

/**
 * Describes a preview link
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_PreviewLink extends
    Zend_Gdata_Books_Extension_BooksLink
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_PreviewLink which
     * Describes a preview link
     *
     * @param string|null $href Linked resource URI
     * @param string|null $rel Forward relationship
     * @param string|null $type Resource MIME type
     * @param string|null $hrefLang Resource language
     * @param string|null $title Human-readable resource title
     * @param string|null $length Resource length in octets
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
    }

}
PKpG[��%%�
�
%Gdata/Books/Extension/Viewability.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Describes a viewability
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_Viewability extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gbs';
    protected $_rootElement = 'viewability';
    protected $_value = null;

    /**
     * Constructor for Zend_Gdata_Books_Extension_Viewability which
     * Describes a viewability
     *
     * @param string|null $value A programmatic value representing the book's
     *        viewability mode.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves DOMElement which corresponds to this element and all
     * child properties. This is used to build this object back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistance.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Extracts XML attributes from the DOM and converts them to the
     * appropriate object members.
     *
     * @param DOMNode $attribute The DOMNode attribute to be handled.
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the programmatic value that describes the viewability of a volume
     * in Google Book Search
     *
     * @return string The value
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Sets the programmatic value that describes the viewability of a volume in
     * Google Book Search
     *
     * @param string $value programmatic value that describes the viewability
     *     of a volume in Googl eBook Search
     * @return Zend_Gdata_Books_Extension_Viewability Provides a fluent
     *     interface
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }


}

PKpG[�a?k(Gdata/Books/Extension/AnnotationLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Books_Extension_BooksLink
 */
require_once 'Zend/Gdata/Books/Extension/BooksLink.php';

/**
 * Describes an annotation link
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_AnnotationLink extends
    Zend_Gdata_Books_Extension_BooksLink
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_AnnotationLink which
     * Describes an annotation link
     *
     * @param string|null $href Linked resource URI
     * @param string|null $rel Forward relationship
     * @param string|null $type Resource MIME type
     * @param string|null $hrefLang Resource language
     * @param string|null $title Human-readable resource title
     * @param string|null $length Resource length in octets
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
    }

}

PKpG[��͘�'Gdata/Books/Extension/ThumbnailLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Books_Extension_BooksLink
 */
require_once 'Zend/Gdata/Books/Extension/BooksLink.php';

/**
 * Describes a thumbnail link
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_ThumbnailLink extends
    Zend_Gdata_Books_Extension_BooksLink
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_ThumbnailLink which
     * Describes a thumbnail link
     *
     * @param string|null $href Linked resource URI
     * @param string|null $rel Forward relationship
     * @param string|null $type Resource MIME type
     * @param string|null $hrefLang Resource language
     * @param string|null $title Human-readable resource title
     * @param string|null $length Resource length in octets
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
    }

}
PKpG[�qw���#Gdata/Books/Extension/BooksLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_App_Extension_Link
 */
require_once 'Zend/Gdata/App/Extension/Link.php';

/**
 * Extends the base Link class with Books extensions
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_BooksLink extends Zend_Gdata_App_Extension_Link
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_BooksLink which
     * Extends the base Link class with Books extensions
     *
     * @param string|null $href Linked resource URI
     * @param string|null $rel Forward relationship
     * @param string|null $type Resource MIME type
     * @param string|null $hrefLang Resource language
     * @param string|null $title Human-readable resource title
     * @param string|null $length Resource length in octets
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
    }


}

PKpG[rO��"Gdata/Books/Extension/InfoLink.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Books_Extension_BooksLink
 */
require_once 'Zend/Gdata/Books/Extension/BooksLink.php';

/**
 * Describes an info link
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_InfoLink extends
    Zend_Gdata_Books_Extension_BooksLink
{

    /**
     * Constructor for Zend_Gdata_Books_Extension_InfoLink which
     * Describes an info link
     *
     * @param string|null $href Linked resource URI
     * @param string|null $rel Forward relationship
     * @param string|null $type Resource MIME type
     * @param string|null $hrefLang Resource language
     * @param string|null $title Human-readable resource title
     * @param string|null $length Resource length in octets
     */
    public function __construct($href = null, $rel = null, $type = null,
            $hrefLang = null, $title = null, $length = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($href, $rel, $type, $hrefLang, $title, $length);
    }

}
PKpG[e�zU�� Gdata/Books/Extension/Review.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * User-provided review
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_Review extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gbs';
    protected $_rootElement = 'review';
    protected $_lang = null;
    protected $_type = null;

    /**
     * Constructor for Zend_Gdata_Books_Extension_Review which
     * User-provided review
     *
     * @param string|null $lang Review language.
     * @param string|null $type Type of text construct (typically text, html,
     *        or xhtml).
     * @param string|null $value Text content of the review.
     */
    public function __construct($lang = null, $type = null, $value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct();
        $this->_lang = $lang;
        $this->_type = $type;
        $this->_text = $value;
    }

    /**
     * Retrieves DOMElement which corresponds to this element and all
     * child properties. This is used to build this object back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistance.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc);
        if ($this->_lang !== null) {
            $element->setAttribute('lang', $this->_lang);
        }
        if ($this->_type !== null) {
            $element->setAttribute('type', $this->_type);
        }
        return $element;
    }

    /**
     * Extracts XML attributes from the DOM and converts them to the
     * appropriate object members.
     *
     * @param DOMNode $attribute The DOMNode attribute to be handled.
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'lang':
            $this->_lang = $attribute->nodeValue;
            break;
        case 'type':
            $this->_type = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the language of link title
     *
     * @return string The lang
     */
    public function getLang()
    {
        return $this->_lang;
    }

    /**
     * Returns the type of text construct (typically 'text', 'html' or 'xhtml')
     *
     * @return string The type
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Sets the language of link title
     *
     * @param string $lang language of link title
     * @return Zend_Gdata_Books_Extension_Review Provides a fluent interface
     */
    public function setLang($lang)
    {
        $this->_lang = $lang;
        return $this;
    }

    /**
     * Sets the type of text construct (typically 'text', 'html' or 'xhtml')
     *
     * @param string $type type of text construct (typically 'text', 'html' or 'xhtml')
     * @return Zend_Gdata_Books_Extension_Review Provides a fluent interface
     */
    public function setType($type)
    {
        $this->_type = $type;
        return $this;
    }


}

PKpG[�J��'Gdata/Books/Extension/Embeddability.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * Describes an embeddability
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_Extension_Embeddability extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gbs';
    protected $_rootElement = 'embeddability';
    protected $_value = null;

    /**
     * Constructor for Zend_Gdata_Books_Extension_Embeddability which
     * Describes an embeddability.
     *
     * @param string|null $value A programmatic value representing the book's
     *        embeddability.
     */
    public function __construct($value = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct();
        $this->_value = $value;
    }

    /**
     * Retrieves DOMElement which corresponds to this element and all
     * child properties. This is used to build this object back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistance.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc);
        if ($this->_value !== null) {
            $element->setAttribute('value', $this->_value);
        }
        return $element;
    }

    /**
     * Extracts XML attributes from the DOM and converts them to the
     * appropriate object members.
     *
     * @param DOMNode $attribute The DOMNode attribute to be handled.
     */
    protected function takeAttributeFromDOM($attribute)
    {
        switch ($attribute->localName) {
        case 'value':
            $this->_value = $attribute->nodeValue;
            break;
        default:
            parent::takeAttributeFromDOM($attribute);
        }
    }

    /**
     * Returns the programmatic value that describes the embeddability of a
     * volume in Google Book Search
     *
     * @return string|null The value
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Sets the programmatic value that describes the embeddability of a
     * volume in Google Book Search
     *
     * @param string|null $value Programmatic value that describes the
     *        embeddability of a volume in Google Book Search
     * @return Zend_Gdata_Books_Extension_Embeddability Provides a fluent
     *     interface
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

}

PKpG[���sKsKGdata/Books/VolumeEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Extension_Comments
 */
require_once 'Zend/Gdata/Extension/Comments.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Creator
 */
require_once 'Zend/Gdata/DublinCore/Extension/Creator.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Date
 */
require_once 'Zend/Gdata/DublinCore/Extension/Date.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Description
 */
require_once 'Zend/Gdata/DublinCore/Extension/Description.php';

/**
 * @see Zend_Gdata_Books_Extension_Embeddability
 */
require_once 'Zend/Gdata/Books/Extension/Embeddability.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Format
 */
require_once 'Zend/Gdata/DublinCore/Extension/Format.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Identifier
 */
require_once 'Zend/Gdata/DublinCore/Extension/Identifier.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Language
 */
require_once 'Zend/Gdata/DublinCore/Extension/Language.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Publisher
 */
require_once 'Zend/Gdata/DublinCore/Extension/Publisher.php';

/**
 * @see Zend_Gdata_Extension_Rating
 */
require_once 'Zend/Gdata/Extension/Rating.php';

/**
 * @see Zend_Gdata_Books_Extension_Review
 */
require_once 'Zend/Gdata/Books/Extension/Review.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Subject
 */
require_once 'Zend/Gdata/DublinCore/Extension/Subject.php';

/**
 * @see Zend_Gdata_DublinCore_Extension_Title
 */
require_once 'Zend/Gdata/DublinCore/Extension/Title.php';

/**
 * @see Zend_Gdata_Books_Extension_Viewability
 */
require_once 'Zend/Gdata/Books/Extension/Viewability.php';

/**
 * Describes an entry in a feed of Book Search volumes
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_VolumeEntry extends Zend_Gdata_Entry
{

    const THUMBNAIL_LINK_REL = 'http://schemas.google.com/books/2008/thumbnail';
    const PREVIEW_LINK_REL = 'http://schemas.google.com/books/2008/preview';
    const INFO_LINK_REL = 'http://schemas.google.com/books/2008/info';
    const ANNOTATION_LINK_REL = 'http://schemas.google.com/books/2008/annotation';

    protected $_comments = null;
    protected $_creators = array();
    protected $_dates = array();
    protected $_descriptions = array();
    protected $_embeddability = null;
    protected $_formats = array();
    protected $_identifiers = array();
    protected $_languages = array();
    protected $_publishers = array();
    protected $_rating = null;
    protected $_review = null;
    protected $_subjects = array();
    protected $_titles = array();
    protected $_viewability = null;

    /**
     * Constructor for Zend_Gdata_Books_VolumeEntry which
     * Describes an entry in a feed of Book Search volumes
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($element);
    }

    /**
     * Retrieves DOMElement which corresponds to this element and all
     * child properties. This is used to build this object back into a DOM
     * and eventually XML text for sending to the server upon updates, or
     * for application storage/persistance.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     * child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc);
        if ($this->_creators !== null) {
            foreach ($this->_creators as $creators) {
                $element->appendChild($creators->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_dates !== null) {
            foreach ($this->_dates as $dates) {
                $element->appendChild($dates->getDOM($element->ownerDocument));
            }
        }
        if ($this->_descriptions !== null) {
            foreach ($this->_descriptions as $descriptions) {
                $element->appendChild($descriptions->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_formats !== null) {
            foreach ($this->_formats as $formats) {
                $element->appendChild($formats->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_identifiers !== null) {
            foreach ($this->_identifiers as $identifiers) {
                $element->appendChild($identifiers->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_languages !== null) {
            foreach ($this->_languages as $languages) {
                $element->appendChild($languages->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_publishers !== null) {
            foreach ($this->_publishers as $publishers) {
                $element->appendChild($publishers->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_subjects !== null) {
            foreach ($this->_subjects as $subjects) {
                $element->appendChild($subjects->getDOM(
                    $element->ownerDocument));
            }
        }
        if ($this->_titles !== null) {
            foreach ($this->_titles as $titles) {
                $element->appendChild($titles->getDOM($element->ownerDocument));
            }
        }
        if ($this->_comments !== null) {
            $element->appendChild($this->_comments->getDOM(
                $element->ownerDocument));
        }
        if ($this->_embeddability !== null) {
            $element->appendChild($this->_embeddability->getDOM(
                $element->ownerDocument));
        }
        if ($this->_rating !== null) {
            $element->appendChild($this->_rating->getDOM(
                $element->ownerDocument));
        }
        if ($this->_review !== null) {
            $element->appendChild($this->_review->getDOM(
                $element->ownerDocument));
        }
        if ($this->_viewability !== null) {
            $element->appendChild($this->_viewability->getDOM(
                $element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual objects of the appropriate type and stores
     * them in this object based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process.
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
        case $this->lookupNamespace('dc') . ':' . 'creator':
            $creators = new Zend_Gdata_DublinCore_Extension_Creator();
            $creators->transferFromDOM($child);
            $this->_creators[] = $creators;
            break;
        case $this->lookupNamespace('dc') . ':' . 'date':
            $dates = new Zend_Gdata_DublinCore_Extension_Date();
            $dates->transferFromDOM($child);
            $this->_dates[] = $dates;
            break;
        case $this->lookupNamespace('dc') . ':' . 'description':
            $descriptions = new Zend_Gdata_DublinCore_Extension_Description();
            $descriptions->transferFromDOM($child);
            $this->_descriptions[] = $descriptions;
            break;
        case $this->lookupNamespace('dc') . ':' . 'format':
            $formats = new Zend_Gdata_DublinCore_Extension_Format();
            $formats->transferFromDOM($child);
            $this->_formats[] = $formats;
            break;
        case $this->lookupNamespace('dc') . ':' . 'identifier':
            $identifiers = new Zend_Gdata_DublinCore_Extension_Identifier();
            $identifiers->transferFromDOM($child);
            $this->_identifiers[] = $identifiers;
            break;
        case $this->lookupNamespace('dc') . ':' . 'language':
            $languages = new Zend_Gdata_DublinCore_Extension_Language();
            $languages->transferFromDOM($child);
            $this->_languages[] = $languages;
            break;
        case $this->lookupNamespace('dc') . ':' . 'publisher':
            $publishers = new Zend_Gdata_DublinCore_Extension_Publisher();
            $publishers->transferFromDOM($child);
            $this->_publishers[] = $publishers;
            break;
        case $this->lookupNamespace('dc') . ':' . 'subject':
            $subjects = new Zend_Gdata_DublinCore_Extension_Subject();
            $subjects->transferFromDOM($child);
            $this->_subjects[] = $subjects;
            break;
        case $this->lookupNamespace('dc') . ':' . 'title':
            $titles = new Zend_Gdata_DublinCore_Extension_Title();
            $titles->transferFromDOM($child);
            $this->_titles[] = $titles;
            break;
        case $this->lookupNamespace('gd') . ':' . 'comments':
            $comments = new Zend_Gdata_Extension_Comments();
            $comments->transferFromDOM($child);
            $this->_comments = $comments;
            break;
        case $this->lookupNamespace('gbs') . ':' . 'embeddability':
            $embeddability = new Zend_Gdata_Books_Extension_Embeddability();
            $embeddability->transferFromDOM($child);
            $this->_embeddability = $embeddability;
            break;
        case $this->lookupNamespace('gd') . ':' . 'rating':
            $rating = new Zend_Gdata_Extension_Rating();
            $rating->transferFromDOM($child);
            $this->_rating = $rating;
            break;
        case $this->lookupNamespace('gbs') . ':' . 'review':
            $review = new Zend_Gdata_Books_Extension_Review();
            $review->transferFromDOM($child);
            $this->_review = $review;
            break;
        case $this->lookupNamespace('gbs') . ':' . 'viewability':
            $viewability = new Zend_Gdata_Books_Extension_Viewability();
            $viewability->transferFromDOM($child);
            $this->_viewability = $viewability;
            break;
        default:
            parent::takeChildFromDOM($child);
            break;
        }
    }

    /**
     * Returns the Comments class
     *
     * @return Zend_Gdata_Extension_Comments|null The comments
     */
    public function getComments()
    {
        return $this->_comments;
    }

    /**
     * Returns the creators
     *
     * @return array The creators
     */
    public function getCreators()
    {
        return $this->_creators;
    }

    /**
     * Returns the dates
     *
     * @return array The dates
     */
    public function getDates()
    {
        return $this->_dates;
    }

    /**
     * Returns the descriptions
     *
     * @return array The descriptions
     */
    public function getDescriptions()
    {
        return $this->_descriptions;
    }

    /**
     * Returns the embeddability
     *
     * @return Zend_Gdata_Books_Extension_Embeddability|null The embeddability
     */
    public function getEmbeddability()
    {
        return $this->_embeddability;
    }

    /**
     * Returns the formats
     *
     * @return array The formats
     */
    public function getFormats()
    {
        return $this->_formats;
    }

    /**
     * Returns the identifiers
     *
     * @return array The identifiers
     */
    public function getIdentifiers()
    {
        return $this->_identifiers;
    }

    /**
     * Returns the languages
     *
     * @return array The languages
     */
    public function getLanguages()
    {
        return $this->_languages;
    }

    /**
     * Returns the publishers
     *
     * @return array The publishers
     */
    public function getPublishers()
    {
        return $this->_publishers;
    }

    /**
     * Returns the rating
     *
     * @return Zend_Gdata_Extension_Rating|null The rating
     */
    public function getRating()
    {
        return $this->_rating;
    }

    /**
     * Returns the review
     *
     * @return Zend_Gdata_Books_Extension_Review|null The review
     */
    public function getReview()
    {
        return $this->_review;
    }

    /**
     * Returns the subjects
     *
     * @return array The subjects
     */
    public function getSubjects()
    {
        return $this->_subjects;
    }

    /**
     * Returns the titles
     *
     * @return array The titles
     */
    public function getTitles()
    {
        return $this->_titles;
    }

    /**
     * Returns the viewability
     *
     * @return Zend_Gdata_Books_Extension_Viewability|null The viewability
     */
    public function getViewability()
    {
        return $this->_viewability;
    }

    /**
     * Sets the Comments class
     *
     * @param Zend_Gdata_Extension_Comments|null $comments Comments class
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setComments($comments)
    {
        $this->_comments = $comments;
        return $this;
    }

    /**
     * Sets the creators
     *
     * @param array $creators Creators|null
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setCreators($creators)
    {
        $this->_creators = $creators;
        return $this;
    }

    /**
     * Sets the dates
     *
     * @param array $dates dates
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setDates($dates)
    {
        $this->_dates = $dates;
        return $this;
    }

    /**
     * Sets the descriptions
     *
     * @param array $descriptions descriptions
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setDescriptions($descriptions)
    {
        $this->_descriptions = $descriptions;
        return $this;
    }

    /**
     * Sets the embeddability
     *
     * @param Zend_Gdata_Books_Extension_Embeddability|null $embeddability
     *        embeddability
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setEmbeddability($embeddability)
    {
        $this->_embeddability = $embeddability;
        return $this;
    }

    /**
     * Sets the formats
     *
     * @param array $formats formats
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setFormats($formats)
    {
        $this->_formats = $formats;
        return $this;
    }

    /**
     * Sets the identifiers
     *
     * @param array $identifiers identifiers
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setIdentifiers($identifiers)
    {
        $this->_identifiers = $identifiers;
        return $this;
    }

    /**
     * Sets the languages
     *
     * @param array $languages languages
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setLanguages($languages)
    {
        $this->_languages = $languages;
        return $this;
    }

    /**
     * Sets the publishers
     *
     * @param array $publishers publishers
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setPublishers($publishers)
    {
        $this->_publishers = $publishers;
        return $this;
    }

    /**
     * Sets the rating
     *
     * @param Zend_Gdata_Extension_Rating|null $rating rating
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setRating($rating)
    {
        $this->_rating = $rating;
        return $this;
    }

    /**
     * Sets the review
     *
     * @param Zend_Gdata_Books_Extension_Review|null $review review
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setReview($review)
    {
        $this->_review = $review;
        return $this;
    }

    /**
     * Sets the subjects
     *
     * @param array $subjects subjects
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setSubjects($subjects)
    {
        $this->_subjects = $subjects;
        return $this;
    }

    /**
     * Sets the titles
     *
     * @param array $titles titles
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setTitles($titles)
    {
        $this->_titles = $titles;
        return $this;
    }

    /**
     * Sets the viewability
     *
     * @param Zend_Gdata_Books_Extension_Viewability|null $viewability
     *        viewability
     * @return Zend_Gdata_Books_VolumeEntry Provides a fluent interface
     */
    public function setViewability($viewability)
    {
        $this->_viewability = $viewability;
        return $this;
    }


    /**
     * Gets the volume ID based upon the atom:id value
     *
     * @return string The volume ID
     * @throws Zend_Gdata_App_Exception
     */
    public function getVolumeId()
    {
        $fullId = $this->getId()->getText();
        $position = strrpos($fullId, '/');
        if ($position === false) {
            require_once 'Zend/Gdata/App/Exception.php';
            throw new Zend_Gdata_App_Exception('Slash not found in atom:id');
        } else {
            return substr($fullId, strrpos($fullId,'/') + 1);
        }
    }

    /**
     * Gets the thumbnail link
     *
     * @return Zend_Gdata_App_Extension_link|null The thumbnail link
     */
    public function getThumbnailLink()
    {
        return $this->getLink(self::THUMBNAIL_LINK_REL);
    }

    /**
     * Gets the preview link
     *
     * @return Zend_Gdata_App_Extension_Link|null The preview link
     */
    public function getPreviewLink()
    {
        return $this->getLink(self::PREVIEW_LINK_REL);
    }

    /**
     * Gets the info link
     *
     * @return Zend_Gdata_App_Extension_Link|null The info link
     */
    public function getInfoLink()
    {
        return $this->getLink(self::INFO_LINK_REL);
    }

    /**
     * Gets the annotations link
     *
     * @return Zend_Gdata_App_Extension_Link|null The annotations link
     */
    public function getAnnotationLink()
    {
        return $this->getLink(self::ANNOTATION_LINK_REL);
    }

}
PKpG[$�c��Gdata/Books/CollectionFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * Describes a Book Search collection feed
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_CollectionFeed extends Zend_Gdata_Feed
{

    /**
     * Constructor for Zend_Gdata_Books_CollectionFeed which
     * Describes a Book Search collection feed
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($element);
    }

    /**
     * The classname for individual feed elements.
     *
     * @var string
     */
    protected $_entryClassName = 'Zend_Gdata_Books_CollectionEntry';

}

PKpG[��Gdata/Books/CollectionEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * Describes an entry in a feed of collections
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc.
 * (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books_CollectionEntry extends Zend_Gdata_Entry
{

    /**
     * Constructor for Zend_Gdata_Books_CollectionEntry which
     * Describes an entry in a feed of collections
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Books::$namespaces);
        parent::__construct($element);
    }


}

PKpG[���LLGdata/Books.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Gdata.php';

/**
 * @see Zend_Gdata_DublinCore
 */
require_once 'Zend/Gdata/DublinCore.php';

/**
 * @see Zend_Gdata_Books_CollectionEntry
 */
require_once 'Zend/Gdata/Books/CollectionEntry.php';

/**
 * @see Zend_Gdata_Books_CollectionFeed
 */
require_once 'Zend/Gdata/Books/CollectionFeed.php';

/**
 * @see Zend_Gdata_Books_VolumeEntry
 */
require_once 'Zend/Gdata/Books/VolumeEntry.php';

/**
 * @see Zend_Gdata_Books_VolumeFeed
 */
require_once 'Zend/Gdata/Books/VolumeFeed.php';

/**
 * Service class for interacting with the Books service
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Books
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Books extends Zend_Gdata
{
    const VOLUME_FEED_URI = 'http://books.google.com/books/feeds/volumes';
    const MY_LIBRARY_FEED_URI = 'http://books.google.com/books/feeds/users/me/collections/library/volumes';
    const MY_ANNOTATION_FEED_URI = 'http://books.google.com/books/feeds/users/me/volumes';
    const AUTH_SERVICE_NAME = 'print';

    /**
     * Namespaces used for Zend_Gdata_Books
     *
     * @var array
     */
    public static $namespaces = array(
        array('gbs', 'http://schemas.google.com/books/2008', 1, 0),
        array('dc', 'http://purl.org/dc/terms', 1, 0)
    );

    /**
     * Create Zend_Gdata_Books object
     *
     * @param Zend_Http_Client $client (optional) The HTTP client to use when
     *          when communicating with the Google servers.
     * @param string $applicationId The identity of the app in the form of Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        $this->registerPackage('Zend_Gdata_Books');
        $this->registerPackage('Zend_Gdata_Books_Extension');
        parent::__construct($client, $applicationId);
        $this->_httpClient->setParameterPost('service', self::AUTH_SERVICE_NAME);
     }

    /**
     * Retrieves a feed of volumes.
     *
     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
     *        query or a Zend_Gdata_Query object from which a URL can be
     *        determined.
     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
     *         specified URL.
     */
    public function getVolumeFeed($location = null)
    {
        if ($location == null) {
            $uri = self::VOLUME_FEED_URI;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
    }

    /**
     * Retrieves a specific volume entry.
     *
     * @param string|null $volumeId The volumeId of interest.
     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
     *        query or a Zend_Gdata_Query object from which a URL can be
     *        determined.
     * @return Zend_Gdata_Books_VolumeEntry The feed of volumes found at the
     *         specified URL.
     */
    public function getVolumeEntry($volumeId = null, $location = null)
    {
        if ($volumeId !== null) {
            $uri = self::VOLUME_FEED_URI . "/" . $volumeId;
        } else if ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            $uri = $location;
        }
        return parent::getEntry($uri, 'Zend_Gdata_Books_VolumeEntry');
    }

    /**
     * Retrieves a feed of volumes, by default the User library feed.
     *
     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
     *        query.
     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
     *         specified URL.
     */
    public function getUserLibraryFeed($location = null)
    {
        if ($location == null) {
            $uri = self::MY_LIBRARY_FEED_URI;
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
    }

    /**
     * Retrieves a feed of volumes, by default the User annotation feed
     *
     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
     *        query.
     * @return Zend_Gdata_Books_VolumeFeed The feed of volumes found at the
     *         specified URL.
     */
    public function getUserAnnotationFeed($location = null)
    {
        if ($location == null) {
            $uri = self::MY_ANNOTATION_FEED_URI;
        } else {
            $uri = $location;
        }
        return parent::getFeed($uri, 'Zend_Gdata_Books_VolumeFeed');
    }

    /**
     * Insert a Volume / Annotation
     *
     * @param Zend_Gdata_Books_VolumeEntry $entry
     * @param Zend_Gdata_Query|string|null $location (optional) The URL to
     *        query
     * @return Zend_Gdata_Books_VolumeEntry The inserted volume entry.
     */
    public function insertVolume($entry, $location = null)
    {
        if ($location == null) {
            $uri = self::MY_LIBRARY_FEED_URI;
        } else {
            $uri = $location;
        }
        return parent::insertEntry(
            $entry, $uri, 'Zend_Gdata_Books_VolumeEntry');
    }

    /**
     * Delete a Volume
     *
     * @param Zend_Gdata_Books_VolumeEntry $entry
     * @return void
     */
    public function deleteVolume($entry)
    {
        $entry->delete();
    }

}
PKpG[�|j�6'6'Gdata/Photos/UserQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Query
 */
require_once('Zend/Gdata/Gapps/Query.php');

/**
 * Assists in constructing queries for user entries.
 * Instances of this class can be provided in many places where a URL is
 * required.
 *
 * For information on submitting queries to a server, see the
 * service class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_UserQuery extends Zend_Gdata_Query
{

    /**
     * Indicates the format of data returned in Atom feeds. Can be either
     * 'api' or 'base'. Default value is 'api'.
     *
     * @var string
     */
    protected $_projection = 'api';
    
    /**
     * Indicates whether to request a feed or entry in queries. Default
     * value is 'feed';
     *
     * @var string
     */
    protected $_type = 'feed';
    
    /**
     * A string which, if not null, indicates which user should
     * be retrieved by this query. If null, the default user will be used
     * instead.
     *
     * @var string
     */
    protected $_user = Zend_Gdata_Photos::DEFAULT_USER;
    
    /**
     * Create a new Query object with default values.
     */
    public function __construct()
    {
        parent::__construct();
    }
    
    /**
     * Set's the format of data returned in Atom feeds. Can be either 
     * 'api' or 'base'. Normally, 'api' will be desired. Default is 'api'.
     *
     * @param string $value
     * @return Zend_Gdata_Photos_UserQuery Provides a fluent interface
     */
    public function setProjection($value)
    {
        $this->_projection = $value;
        return $this;
    }

    /**
     * Gets the format of data in returned in Atom feeds.
     *
     * @see setProjection
     * @return string projection
     */
    public function getProjection()
    {
        return $this->_projection;
    }
    
    /**
     * Set's the type of data returned in queries. Can be either 
     * 'feed' or 'entry'. Normally, 'feed' will be desired. Default is 'feed'.
     *
     * @param string $value
     * @return Zend_Gdata_Photos_UserQuery Provides a fluent interface
     */
    public function setType($value)
    {
        $this->_type = $value;
        return $this;
    }

    /**
     * Gets the type of data in returned in queries.
     *
     * @see setType
     * @return string type
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Set the user to query for. When set, this user's feed will be
     * returned. If not set or null, the default user's feed will be returned
     * instead.
     *
     * @param string $value The user to retrieve, or null for the default
     *          user.
     */
     public function setUser($value)
     {
         if ($value !== null) {
             $this->_user = $value;
         } else {
             $this->_user = Zend_Gdata_Photos::DEFAULT_USER;
         }
     }

    /**
     * Get the user which is to be returned.
     *
     * @see setUser
     * @return string The visibility to retrieve.
     */
    public function getUser()
    {
        return $this->_user;
    }

    /**
     * Set the visibility filter for entries returned. Only entries which 
     * match this value will be returned. If null or unset, the default 
     * value will be used instead.
     * 
     * Valid values are 'all' (default), 'public', and 'private'. 
     *
     * @param string $value The visibility to filter by, or null to use the 
     *          default value.
     */
     public function setAccess($value)
     {
         if ($value !== null) {
             $this->_params['access'] = $value;
         } else {
             unset($this->_params['access']);
         }
     }

    /**
     * Get the visibility filter for entries returned.
     *
     * @see setAccess
     * @return string The visibility to filter by, or null for the default
     *          user.
     */
    public function getAccess()
    {
        return $this->_params['access'];
    }

    /**
     * Set the tag for entries that are returned. Only entries which 
     * match this value will be returned. If null or unset, this filter will
     * not be applied.
     * 
     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
     * for a list of valid values.
     *
     * @param string $value The tag to filter by, or null if no
     *          filter is to be applied.
     */
     public function setTag($value)
     {
         if ($value !== null) {
             $this->_params['tag'] = $value;
         } else {
             unset($this->_params['tag']);
         }
     }

    /**
     * Get the tag filter for entries returned.
     *
     * @see setTag
     * @return string The tag to filter by, or null if no filter
     *          is to be applied.
     */
    public function getTag()
    {
        return $this->_params['tag'];
    }
    
    /**
     * Set the kind of entries that are returned. Only entries which 
     * match this value will be returned. If null or unset, this filter will
     * not be applied.
     * 
     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
     * for a list of valid values.
     *
     * @param string $value The kind to filter by, or null if no
     *          filter is to be applied.
     */
     public function setKind($value)
     {
         if ($value !== null) {
             $this->_params['kind'] = $value;
         } else {
             unset($this->_params['kind']);
         }
     }

    /**
     * Get the kind of entries to be returned.
     *
     * @see setKind
     * @return string The kind to filter by, or null if no filter
     *          is to be applied.
     */
    public function getKind()
    {
        return $this->_params['kind'];
    }
    
    /**
     * Set the maximum image size for entries returned. Only entries which 
     * match this value will be returned. If null or unset, this filter will
     * not be applied.
     * 
     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
     * for a list of valid values.
     *
     * @param string $value The image size to filter by, or null if no
     *          filter is to be applied.
     */
     public function setImgMax($value)
     {
         if ($value !== null) {
             $this->_params['imgmax'] = $value;
         } else {
             unset($this->_params['imgmax']);
         }
     }

    /**
     * Get the maximum image size filter for entries returned.
     *
     * @see setImgMax
     * @return string The image size size to filter by, or null if no filter
     *          is to be applied.
     */
    public function getImgMax()
    {
        return $this->_params['imgmax'];
    }
    
    /**
     * Set the thumbnail size filter for entries returned. Only entries which 
     * match this value will be returned. If null or unset, this filter will
     * not be applied.
     * 
     * See http://code.google.com/apis/picasaweb/reference.html#Parameters
     * for a list of valid values.
     *
     * @param string $value The thumbnail size to filter by, or null if no
     *          filter is to be applied.
     */
     public function setThumbsize($value)
     {
         if ($value !== null) {
             $this->_params['thumbsize'] = $value;
         } else {
             unset($this->_params['thumbsize']);
         }
     }

    /**
     * Get the thumbnail size filter for entries returned.
     *
     * @see setThumbsize
     * @return string The thumbnail size to filter by, or null if no filter
     *          is to be applied.
     */
    public function getThumbsize()
    {
        return $this->_params['thumbsize'];
    }
    
    /**
     * Returns the URL generated for this query, based on it's current
     * parameters.
     *
     * @return string A URL generated based on the state of this query.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getQueryUrl($incomingUri = null)
    {
        $uri = Zend_Gdata_Photos::PICASA_BASE_URI;
        
        if ($this->getType() !== null) {
            $uri .= '/' . $this->getType();
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Type must be feed or entry, not null');
        }
        
        if ($this->getProjection() !== null) {
            $uri .= '/' . $this->getProjection();
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'Projection must not be null');
        }
        
        if ($this->getUser() !== null) {
            $uri .= '/user/' . $this->getUser();
        } else {
            // Should never occur due to setter behavior
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'User must not be null');
        }
        
        $uri .= $incomingUri;
        $uri .= $this->getQueryString();
        return $uri;
    }

}
PKpG[&���Gdata/Photos/AlbumQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Photos_UserQuery
 */
require_once('Zend/Gdata/Photos/UserQuery.php');

/**
 * Assists in constructing album queries for various entries.
 * Instances of this class can be provided in many places where a URL is
 * required.
 *
 * For information on submitting queries to a server, see the service
 * class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_AlbumQuery extends Zend_Gdata_Photos_UserQuery
{

    /**
     * The name of the album to query for. Mutually exclusive with AlbumId.
     *
     * @var string
     */
    protected $_albumName = null;

    /**
     * The ID of the album to query for. Mutually exclusive with AlbumName.
     *
     * @var string
     */
    protected $_albumId = null;

    /**
     * Set the album name to query for. When set, this album's photographs
     * be returned. If not set or null, the default user's feed will be
     * returned instead.
     *
     * NOTE: AlbumName and AlbumId are mutually exclusive. Setting one will
     *       automatically set the other to null.
     *
     * @param string $value The name of the album to retrieve, or null to
     *          clear.
     * @return Zend_Gdata_Photos_AlbumQuery The query object.
     */
     public function setAlbumName($value)
     {
         $this->_albumId = null;
         $this->_albumName = $value;
         
         return $this;
     }

    /**
     * Get the album name which is to be returned.
     *
     * @see setAlbumName
     * @return string The name of the album to retrieve.
     */
    public function getAlbumName()
    {
        return $this->_albumName;
    }

    /**
     * Set the album ID to query for. When set, this album's photographs
     * be returned. If not set or null, the default user's feed will be
     * returned instead.
     *
     * NOTE: Album and AlbumId are mutually exclusive. Setting one will
     *       automatically set the other to null.
     *
     * @param string $value The ID of the album to retrieve, or null to
     *          clear.
     * @return Zend_Gdata_Photos_AlbumQuery The query object.
     */
     public function setAlbumId($value)
     {
         $this->_albumName = null;
         $this->_albumId = $value;
         
         return $this;
     }

    /**
     * Get the album ID which is to be returned.
     *
     * @see setAlbum
     * @return string The ID of the album to retrieve.
     */
    public function getAlbumId()
    {
        return $this->_albumId;
    }

    /**
     * Returns the URL generated for this query, based on it's current
     * parameters.
     *
     * @return string A URL generated based on the state of this query.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getQueryUrl($incomingUri = '')
    {
        $uri = '';
        if ($this->getAlbumName() !== null && $this->getAlbumId() === null) {
            $uri .= '/album/' . $this->getAlbumName();
        } elseif ($this->getAlbumName() === null && $this->getAlbumId() !== null) {
            $uri .= '/albumid/' . $this->getAlbumId();
        } elseif ($this->getAlbumName() !== null && $this->getAlbumId() !== null) {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'AlbumName and AlbumId cannot both be non-null');
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'AlbumName and AlbumId cannot both be null');
        }
        $uri .= $incomingUri;
        return parent::getQueryUrl($uri);
    }

}
PKpG[߇r���Gdata/Photos/CommentEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Photos_Extension_Id
 */
require_once 'Zend/Gdata/Photos/Extension/Id.php';

/**
 * @see Zend_Gdata_Photos_Extension_PhotoId
 */
require_once 'Zend/Gdata/Photos/Extension/PhotoId.php';

/**
 * @see Zend_Gdata_Photos_Extension_Weight
 */
require_once 'Zend/Gdata/Photos/Extension/Weight.php';

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Data model class for a Comment Entry.
 *
 * To transfer user entries to and from the servers, including
 * creating new entries, refer to the service class,
 * Zend_Gdata_Photos.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_CommentEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Photos_CommentEntry';

    /**
     * gphoto:id element
     *
     * @var Zend_Gdata_Photos_Extension_Id
     */
    protected $_gphotoId = null;

    /**
     * gphoto:photoid element, differs from gphoto:id as this is an
     * actual identification number unique exclusively to photo entries,
     * whereas gphoto:id can refer to all gphoto objects
     *
     * @var Zend_Gdata_Photos_Extension_PhotoId
     */
    protected $_gphotoPhotoId = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);

        $category = new Zend_Gdata_App_Extension_Category(
            'http://schemas.google.com/photos/2007#comment',
            'http://schemas.google.com/g/2005#kind');
        $this->setCategory(array($category));
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoId !== null) {
            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoPhotoId !== null) {
            $element->appendChild($this->_gphotoPhotoId->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'id';
                $id = new Zend_Gdata_Photos_Extension_Id();
                $id->transferFromDOM($child);
                $this->_gphotoId = $id;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'photoid';
                $photoid = new Zend_Gdata_Photos_Extension_PhotoId();
                $photoid->transferFromDOM($child);
                $this->_gphotoPhotoId = $photoid;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:photoid attribute.
     *
     * @see setGphotoPhotoId
     * @return string The requested attribute.
     */
    public function getGphotoPhotoId()
    {
        return $this->_gphotoPhotoId;
    }

    /**
     * Set the value for this element's gphoto:photoid attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_PhotoId The element being modified.
     */
    public function setGphotoPhotoId($value)
    {
        $this->_gphotoPhotoId = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:id attribute.
     *
     * @see setGphotoId
     * @return string The requested attribute.
     */
    public function getGphotoId()
    {
        return $this->_gphotoId;
    }

    /**
     * Set the value for this element's gphoto:id attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
     */
    public function setGphotoId($value)
    {
        $this->_gphotoId = $value;
        return $this;
    }
}
PKpG[9ĝ���Gdata/Photos/TagEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Photos_Extension_Weight
 */
require_once 'Zend/Gdata/Photos/Extension/Weight.php';

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Data model class for a Tag Entry.
 *
 * To transfer user entries to and from the servers, including
 * creating new entries, refer to the service class,
 * Zend_Gdata_Photos.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_TagEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Photos_TagEntry';

    protected $_gphotoWeight = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);

        $category = new Zend_Gdata_App_Extension_Category(
            'http://schemas.google.com/photos/2007#tag',
            'http://schemas.google.com/g/2005#kind');
        $this->setCategory(array($category));
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoWeight !== null) {
            $element->appendChild($this->_gphotoWeight->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'weight';
                $weight = new Zend_Gdata_Photos_Extension_Weight();
                $weight->transferFromDOM($child);
                $this->_gphotoWeight = $weight;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:weight attribute.
     *
     * @see setGphotoWeight
     * @return string The requested attribute.
     */
    public function getGphotoWeight()
    {
        return $this->_gphotoWeight;
    }

    /**
     * Set the value for this element's gphoto:weight attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Weight The element being modified.
     */
    public function setGphotoWeight($value)
    {
        $this->_gphotoWeight = $value;
        return $this;
    }
}
PKpG[��Y~G~GGdata/Photos/AlbumEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Photos_Extension_Access
 */
require_once 'Zend/Gdata/Photos/Extension/Access.php';

/**
 * @see Zend_Gdata_Photos_Extension_BytesUsed
 */
require_once 'Zend/Gdata/Photos/Extension/BytesUsed.php';

/**
 * @see Zend_Gdata_Photos_Extension_Location
 */
require_once 'Zend/Gdata/Photos/Extension/Location.php';

/**
 * @see Zend_Gdata_Photos_Extension_Name
 */
require_once 'Zend/Gdata/Photos/Extension/Name.php';

/**
 * @see Zend_Gdata_Photos_Extension_NumPhotos
 */
require_once 'Zend/Gdata/Photos/Extension/NumPhotos.php';

/**
 * @see Zend_Gdata_Photos_Extension_NumPhotosRemaining
 */
require_once 'Zend/Gdata/Photos/Extension/NumPhotosRemaining.php';

/**
 * @see Zend_Gdata_Photos_Extension_CommentCount
 */
require_once 'Zend/Gdata/Photos/Extension/CommentCount.php';

/**
 * @see Zend_Gdata_Photos_Extension_CommentingEnabled
 */
require_once 'Zend/Gdata/Photos/Extension/CommentingEnabled.php';

/**
 * @see Zend_Gdata_Photos_Extension_Id
 */
require_once 'Zend/Gdata/Photos/Extension/Id.php';

/**
 * @see Zend_Gdata_Geo_Extension_GeoRssWhere
 */
require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';

/**
 * @see Zend_Gdata_Media_Extension_MediaGroup
 */
require_once 'Zend/Gdata/Media/Extension/MediaGroup.php';

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Data model class for a Photo Album Entry.
 *
 * To transfer user entries to and from the servers, including
 * creating new entries, refer to the service class,
 * Zend_Gdata_Photos.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_AlbumEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Photos_AlbumEntry';

    /**
     * gphoto:id element
     *
     * @var Zend_Gdata_Photos_Extension_Id
     */
    protected $_gphotoId = null;

    /**
     * gphoto:access element
     *
     * @var Zend_Gdata_Photos_Extension_Access
     */
    protected $_gphotoAccess = null;

    /**
     * gphoto:location element
     *
     * @var Zend_Gdata_Photos_Extension_Location
     */
    protected $_gphotoLocation = null;

    /**
     * gphoto:user element
     *
     * @var Zend_Gdata_Photos_Extension_User
     */
    protected $_gphotoUser = null;

    /**
     * gphoto:nickname element
     *
     * @var Zend_Gdata_Photos_Extension_Nickname
     */
    protected $_gphotoNickname = null;

    /**
     * gphoto:timestamp element
     *
     * @var Zend_Gdata_Photos_Extension_Timestamp
     */
    protected $_gphotoTimestamp = null;

    /**
     * gphoto:name element
     *
     * @var Zend_Gdata_Photos_Extension_Name
     */
    protected $_gphotoName = null;

    /**
     * gphoto:numphotos element
     *
     * @var Zend_Gdata_Photos_Extension_NumPhotos
     */
    protected $_gphotoNumPhotos = null;

    /**
     * gphoto:commentCount element
     *
     * @var Zend_Gdata_Photos_Extension_CommentCount
     */
    protected $_gphotoCommentCount = null;

    /**
     * gphoto:commentingEnabled element
     *
     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
     */
    protected $_gphotoCommentingEnabled = null;

    /**
     * media:group element
     *
     * @var Zend_Gdata_Media_MediaGroup
     */
    protected $_mediaGroup = null;

    /**
     * georss:where element
     *
     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
     */
    protected $_geoRssWhere = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);

        $category = new Zend_Gdata_App_Extension_Category(
            'http://schemas.google.com/photos/2007#album',
            'http://schemas.google.com/g/2005#kind');
        $this->setCategory(array($category));
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoTimestamp !== null) {
            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoUser !== null) {
            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoNickname !== null) {
            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoAccess !== null) {
            $element->appendChild($this->_gphotoAccess->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoLocation !== null) {
            $element->appendChild($this->_gphotoLocation->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoName !== null) {
            $element->appendChild($this->_gphotoName->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoNumPhotos !== null) {
            $element->appendChild($this->_gphotoNumPhotos->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentCount !== null) {
            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentingEnabled !== null) {
            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoId !== null) {
            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
        }
        if ($this->_mediaGroup !== null) {
            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'access';
                $access = new Zend_Gdata_Photos_Extension_Access();
                $access->transferFromDOM($child);
                $this->_gphotoAccess = $access;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'location';
                $location = new Zend_Gdata_Photos_Extension_Location();
                $location->transferFromDOM($child);
                $this->_gphotoLocation = $location;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'name';
                $name = new Zend_Gdata_Photos_Extension_Name();
                $name->transferFromDOM($child);
                $this->_gphotoName = $name;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'numphotos';
                $numPhotos = new Zend_Gdata_Photos_Extension_NumPhotos();
                $numPhotos->transferFromDOM($child);
                $this->_gphotoNumPhotos = $numPhotos;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
                $commentCount->transferFromDOM($child);
                $this->_gphotoCommentCount = $commentCount;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
                $commentingEnabled->transferFromDOM($child);
                $this->_gphotoCommentingEnabled = $commentingEnabled;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'id';
                $id = new Zend_Gdata_Photos_Extension_Id();
                $id->transferFromDOM($child);
                $this->_gphotoId = $id;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'user';
                $user = new Zend_Gdata_Photos_Extension_User();
                $user->transferFromDOM($child);
                $this->_gphotoUser = $user;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
                $timestamp->transferFromDOM($child);
                $this->_gphotoTimestamp = $timestamp;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
                $nickname->transferFromDOM($child);
                $this->_gphotoNickname = $nickname;
                break;
            case $this->lookupNamespace('georss') . ':' . 'where';
                $geoRssWhere = new Zend_Gdata_Geo_Extension_GeoRssWhere();
                $geoRssWhere->transferFromDOM($child);
                $this->_geoRssWhere = $geoRssWhere;
                break;
            case $this->lookupNamespace('media') . ':' . 'group';
                $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
                $mediaGroup->transferFromDOM($child);
                $this->_mediaGroup = $mediaGroup;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:access attribute.
     *
     * @see setGphotoAccess
     * @return string The requested attribute.
     */
    public function getGphotoAccess()
    {
        return $this->_gphotoAccess;
    }

    /**
     * Set the value for this element's gphoto:access attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Access The element being modified.
     */
    public function setGphotoAccess($value)
    {
        $this->_gphotoAccess = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:location attribute.
     *
     * @see setGphotoLocation
     * @return string The requested attribute.
     */
    public function getGphotoLocation()
    {
        return $this->_gphotoLocation;
    }

    /**
     * Set the value for this element's gphoto:location attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Location The element being modified.
     */
    public function setGphotoLocation($value)
    {
        $this->_location = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:name attribute.
     *
     * @see setGphotoName
     * @return string The requested attribute.
     */
    public function getGphotoName()
    {
        return $this->_gphotoName;
    }

    /**
     * Set the value for this element's gphoto:name attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Name The element being modified.
     */
    public function setGphotoName($value)
    {
        $this->_gphotoName = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:numphotos attribute.
     *
     * @see setGphotoNumPhotos
     * @return string The requested attribute.
     */
    public function getGphotoNumPhotos()
    {
        return $this->_gphotoNumPhotos;
    }

    /**
     * Set the value for this element's gphoto:numphotos attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_NumPhotos The element being modified.
     */
    public function setGphotoNumPhotos($value)
    {
        $this->_gphotoNumPhotos = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentCount attribute.
     *
     * @see setGphotoCommentCount
     * @return string The requested attribute.
     */
    public function getGphotoCommentCount()
    {
        return $this->_gphotoCommentCount;
    }

    /**
     * Set the value for this element's gphoto:commentCount attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
     */
    public function setGphotoCommentCount($value)
    {
        $this->_gphotoCommentCount = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentingEnabled attribute.
     *
     * @see setGphotoCommentingEnabled
     * @return string The requested attribute.
     */
    public function getGphotoCommentingEnabled()
    {
        return $this->_gphotoCommentingEnabled;
    }

    /**
     * Set the value for this element's gphoto:commentingEnabled attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
     */
    public function setGphotoCommentingEnabled($value)
    {
        $this->_gphotoCommentingEnabled = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:id attribute.
     *
     * @see setGphotoId
     * @return string The requested attribute.
     */
    public function getGphotoId()
    {
        return $this->_gphotoId;
    }

    /**
     * Set the value for this element's gphoto:id attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
     */
    public function setGphotoId($value)
    {
        $this->_gphotoId = $value;
        return $this;
    }

    /**
     * Get the value for this element's georss:where attribute.
     *
     * @see setGeoRssWhere
     * @return string The requested attribute.
     */
    public function getGeoRssWhere()
    {
        return $this->_geoRssWhere;
    }

    /**
     * Set the value for this element's georss:where attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
     */
    public function setGeoRssWhere($value)
    {
        $this->_geoRssWhere = $value;
        return $this;
    }

    /**
     * Get the value for this element's media:group attribute.
     *
     * @see setMediaGroup
     * @return string The requested attribute.
     */
    public function getMediaGroup()
    {
        return $this->_mediaGroup;
    }

    /**
     * Set the value for this element's media:group attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
     */
    public function setMediaGroup($value)
    {
        $this->_mediaGroup = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:user attribute.
     *
     * @see setGphotoUser
     * @return string The requested attribute.
     */
    public function getGphotoUser()
    {
        return $this->_gphotoUser;
    }

    /**
     * Set the value for this element's gphoto:user attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_User The element being modified.
     */
    public function setGphotoUser($value)
    {
        $this->_gphotoUser = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:nickname attribute.
     *
     * @see setGphotoNickname
     * @return string The requested attribute.
     */
    public function getGphotoNickname()
    {
        return $this->_gphotoNickname;
    }

    /**
     * Set the value for this element's gphoto:nickname attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
     */
    public function setGphotoNickname($value)
    {
        $this->_gphotoNickname = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:timestamp attribute.
     *
     * @see setGphotoTimestamp
     * @return string The requested attribute.
     */
    public function getGphotoTimestamp()
    {
        return $this->_gphotoTimestamp;
    }

    /**
     * Set the value for this element's gphoto:timestamp attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
     */
    public function setGphotoTimestamp($value)
    {
        $this->_gphotoTimestamp = $value;
        return $this;
    }
}
PKpG[���DGdata/Photos/UserFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Photos_UserEntry
 */
require_once 'Zend/Gdata/Photos/UserEntry.php';

/**
 * @see Zend_Gdata_Photos_AlbumEntry
 */
require_once 'Zend/Gdata/Photos/AlbumEntry.php';

/**
 * @see Zend_Gdata_Photos_PhotoEntry
 */
require_once 'Zend/Gdata/Photos/PhotoEntry.php';

/**
 * @see Zend_Gdata_Photos_TagEntry
 */
require_once 'Zend/Gdata/Photos/TagEntry.php';

/**
 * @see Zend_Gdata_Photos_CommentEntry
 */
require_once 'Zend/Gdata/Photos/CommentEntry.php';

/**
 * Data model for a collection of entries for a specific user, usually
 * provided by the servers.
 *
 * For information on requesting this feed from a server, see the
 * service class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_UserFeed extends Zend_Gdata_Feed
{

    /**
     * gphoto:user element
     *
     * @var Zend_Gdata_Photos_Extension_User
     */
    protected $_gphotoUser = null;

    /**
     * gphoto:thumbnail element
     *
     * @var Zend_Gdata_Photos_Extension_Thumbnail
     */
    protected $_gphotoThumbnail = null;

    /**
     * gphoto:nickname element
     *
     * @var Zend_Gdata_Photos_Extension_Nickname
     */
    protected $_gphotoNickname = null;

    protected $_entryClassName = 'Zend_Gdata_Photos_UserEntry';
    protected $_feedClassName = 'Zend_Gdata_Photos_UserFeed';

    protected $_entryKindClassMapping = array(
        'http://schemas.google.com/photos/2007#album' => 'Zend_Gdata_Photos_AlbumEntry',
        'http://schemas.google.com/photos/2007#photo' => 'Zend_Gdata_Photos_PhotoEntry',
        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
    );

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them in the $_entry array based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;
        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'user';
                $user = new Zend_Gdata_Photos_Extension_User();
                $user->transferFromDOM($child);
                $this->_gphotoUser = $user;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
                $nickname->transferFromDOM($child);
                $this->_gphotoNickname = $nickname;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'thumbnail';
                $thumbnail = new Zend_Gdata_Photos_Extension_Thumbnail();
                $thumbnail->transferFromDOM($child);
                $this->_gphotoThumbnail = $thumbnail;
                break;
            case $this->lookupNamespace('atom') . ':' . 'entry':
                $entryClassName = $this->_entryClassName;
                $tmpEntry = new Zend_Gdata_App_Entry($child);
                $categories = $tmpEntry->getCategory();
                foreach ($categories as $category) {
                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
                        $this->_entryKindClassMapping[$category->term] != "") {
                            $entryClassName = $this->_entryKindClassMapping[$category->term];
                            break;
                    } else {
                        require_once 'Zend/Gdata/App/Exception.php';
                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
                    }
                }

                $newEntry = new $entryClassName($child);
                $newEntry->setHttpClient($this->getHttpClient());
                $this->_entry[] = $newEntry;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoUser != null) {
            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoNickname != null) {
            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoThumbnail != null) {
            $element->appendChild($this->_gphotoThumbnail->getDOM($element->ownerDocument));
        }

        return $element;
    }

    /**
     * Get the value for this element's gphoto:user attribute.
     *
     * @see setGphotoUser
     * @return string The requested attribute.
     */
    public function getGphotoUser()
    {
        return $this->_gphotoUser;
    }

    /**
     * Set the value for this element's gphoto:user attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_User The element being modified.
     */
    public function setGphotoUser($value)
    {
        $this->_gphotoUser = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:nickname attribute.
     *
     * @see setGphotoNickname
     * @return string The requested attribute.
     */
    public function getGphotoNickname()
    {
        return $this->_gphotoNickname;
    }

    /**
     * Set the value for this element's gphoto:nickname attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
     */
    public function setGphotoNickname($value)
    {
        $this->_gphotoNickname = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:thumbnail attribute.
     *
     * @see setGphotoThumbnail
     * @return string The requested attribute.
     */
    public function getGphotoThumbnail()
    {
        return $this->_gphotoThumbnail;
    }

    /**
     * Set the value for this element's gphoto:thumbnail attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Thumbnail The element being modified.
     */
    public function setGphotoThumbnail($value)
    {
        $this->_gphotoThumbnail = $value;
        return $this;
    }

}
PKpG[�>�J�+�+Gdata/Photos/UserEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Entry
 */
require_once 'Zend/Gdata/Entry.php';

/**
 * @see Zend_Gdata_Gapps
 */
require_once 'Zend/Gdata/Gapps.php';

/**
 * @see Zend_Gdata_Photos_Extension_Nickname
 */
require_once 'Zend/Gdata/Photos/Extension/Nickname.php';

/**
 * @see Zend_Gdata_Photos_Extension_Thumbnail
 */
require_once 'Zend/Gdata/Photos/Extension/Thumbnail.php';

/**
 * @see Zend_Gdata_Photos_Extension_QuotaCurrent
 */
require_once 'Zend/Gdata/Photos/Extension/QuotaCurrent.php';

/**
 * @see Zend_Gdata_Photos_Extension_QuotaLimit
 */
require_once 'Zend/Gdata/Photos/Extension/QuotaLimit.php';

/**
 * @see Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum
 */
require_once 'Zend/Gdata/Photos/Extension/MaxPhotosPerAlbum.php';

/**
 * @see Zend_Gdata_Photos_Extension_User
 */
require_once 'Zend/Gdata/Photos/Extension/User.php';

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Data model class for a User Entry.
 *
 * To transfer user entries to and from the servers, including
 * creating new entries, refer to the service class,
 * Zend_Gdata_Photos.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_UserEntry extends Zend_Gdata_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Photos_UserEntry';

    /**
     * gphoto:nickname element
     *
     * @var Zend_Gdata_Photos_Extension_Nickname
     */
    protected $_gphotoNickname = null;

    /**
     * gphoto:user element
     *
     * @var Zend_Gdata_Photos_Extension_User
     */
    protected $_gphotoUser = null;

    /**
     * gphoto:thumbnail element
     *
     * @var Zend_Gdata_Photos_Extension_Thumbnail
     */
    protected $_gphotoThumbnail = null;

    /**
     * gphoto:quotalimit element
     *
     * @var Zend_Gdata_Photos_Extension_QuotaLimit
     */
    protected $_gphotoQuotaLimit = null;

    /**
     * gphoto:quotacurrent element
     *
     * @var Zend_Gdata_Photos_Extension_QuotaCurrent
     */
    protected $_gphotoQuotaCurrent = null;

    /**
     * gphoto:maxPhotosPerAlbum element
     *
     * @var Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum
     */
    protected $_gphotoMaxPhotosPerAlbum = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);

        $category = new Zend_Gdata_App_Extension_Category(
            'http://schemas.google.com/photos/2007#user',
            'http://schemas.google.com/g/2005#kind');
        $this->setCategory(array($category));
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoNickname !== null) {
            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoThumbnail !== null) {
            $element->appendChild($this->_gphotoThumbnail->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoUser !== null) {
            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoQuotaCurrent !== null) {
            $element->appendChild($this->_gphotoQuotaCurrent->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoQuotaLimit !== null) {
            $element->appendChild($this->_gphotoQuotaLimit->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoMaxPhotosPerAlbum !== null) {
            $element->appendChild($this->_gphotoMaxPhotosPerAlbum->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
                $nickname->transferFromDOM($child);
                $this->_gphotoNickname = $nickname;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'thumbnail';
                $thumbnail = new Zend_Gdata_Photos_Extension_Thumbnail();
                $thumbnail->transferFromDOM($child);
                $this->_gphotoThumbnail = $thumbnail;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'user';
                $user = new Zend_Gdata_Photos_Extension_User();
                $user->transferFromDOM($child);
                $this->_gphotoUser = $user;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'quotacurrent';
                $quotaCurrent = new Zend_Gdata_Photos_Extension_QuotaCurrent();
                $quotaCurrent->transferFromDOM($child);
                $this->_gphotoQuotaCurrent = $quotaCurrent;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'quotalimit';
                $quotaLimit = new Zend_Gdata_Photos_Extension_QuotaLimit();
                $quotaLimit->transferFromDOM($child);
                $this->_gphotoQuotaLimit = $quotaLimit;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'maxPhotosPerAlbum';
                $maxPhotosPerAlbum = new Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum();
                $maxPhotosPerAlbum->transferFromDOM($child);
                $this->_gphotoMaxPhotosPerAlbum = $maxPhotosPerAlbum;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:nickname attribute.
     *
     * @see setGphotoNickname
     * @return string The requested attribute.
     */
    public function getGphotoNickname()
    {
        return $this->_gphotoNickname;
    }

    /**
     * Set the value for this element's gphoto:nickname attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
     */
    public function setGphotoNickname($value)
    {
        $this->_gphotoNickname = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:thumbnail attribute.
     *
     * @see setGphotoThumbnail
     * @return string The requested attribute.
     */
    public function getGphotoThumbnail()
    {
        return $this->_gphotoThumbnail;
    }

    /**
     * Set the value for this element's gphoto:thumbnail attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Thumbnail The element being modified.
     */
    public function setGphotoThumbnail($value)
    {
        $this->_gphotoThumbnail = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:quotacurrent attribute.
     *
     * @see setGphotoQuotaCurrent
     * @return string The requested attribute.
     */
    public function getGphotoQuotaCurrent()
    {
        return $this->_gphotoQuotaCurrent;
    }

    /**
     * Set the value for this element's gphoto:quotacurrent attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_QuotaCurrent The element being modified.
     */
    public function setGphotoQuotaCurrent($value)
    {
        $this->_gphotoQuotaCurrent = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:quotalimit attribute.
     *
     * @see setGphotoQuotaLimit
     * @return string The requested attribute.
     */
    public function getGphotoQuotaLimit()
    {
        return $this->_gphotoQuotaLimit;
    }

    /**
     * Set the value for this element's gphoto:quotalimit attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_QuotaLimit The element being modified.
     */
    public function setGphotoQuotaLimit($value)
    {
        $this->_gphotoQuotaLimit = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:maxPhotosPerAlbum attribute.
     *
     * @see setGphotoMaxPhotosPerAlbum
     * @return string The requested attribute.
     */
    public function getGphotoMaxPhotosPerAlbum()
    {
        return $this->_gphotoMaxPhotosPerAlbum;
    }

    /**
     * Set the value for this element's gphoto:maxPhotosPerAlbum attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum The element being modified.
     */
    public function setGphotoMaxPhotosPerAlbum($value)
    {
        $this->_gphotoMaxPhotosPerAlbum = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:user attribute.
     *
     * @see setGphotoUser
     * @return string The requested attribute.
     */
    public function getGphotoUser()
    {
        return $this->_gphotoUser;
    }

    /**
     * Set the value for this element's gphoto:user attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_User The element being modified.
     */
    public function setGphotoUser($value)
    {
        $this->_gphotoUser = $value;
        return $this;
    }

}
PKpG[�Nh���#Gdata/Photos/Extension/Nickname.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:nickname element used by the API.
 * This class represents the nickname for a user.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Nickname extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'nickname';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Nickname object.
     *
     * @param string $text (optional) The value being represented.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�����$Gdata/Photos/Extension/Thumbnail.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:thumbnail element used by the API.
 * This class represents the URI for a thumbnail image.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Thumbnail extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'thumbnail';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Thumbnail object.
     *
     * @param string $text (optional) The thumbnail URI to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�CDyy"Gdata/Photos/Extension/PhotoId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:id element used by the Picasa API.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_PhotoId extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'id';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_PhotoId object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�{;;'Gdata/Photos/Extension/CommentCount.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:commentCount element used by the API. This
 * class represents the number of comments attached to an entry and is usually contained
 * within an instance of Zend_Gdata_Photos_PhotoEntry or AlbumEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_CommentCount extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'commentCount';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_CommentCount object.
     *
     * @param string $text (optional) The value to use for the count.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[Y]���'Gdata/Photos/Extension/QuotaCurrent.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:quotaCurrent element used by the API.
 * This class represents the number of bytes of storage used by a user.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_QuotaCurrent extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'quotaCurrent';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_QuotaCurrent object.
     *
     * @param string $text (optional) The value being represented.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�۞��"Gdata/Photos/Extension/Version.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:version element used by the API.
 * This number is used for optimistic concurrency, and does not
 * increase linearly.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Version extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'version';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Version object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[#��L��!Gdata/Photos/Extension/Access.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:access element used by the API.
 * This determines the visibility for an album, and can be either
 * the strings 'private' or 'public'.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Access extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'access';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Access object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�����Gdata/Photos/Extension/Name.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:name element used by the API.
 * This indicates the URL-usable name for an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Name extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'name';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Name object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�=S��-Gdata/Photos/Extension/NumPhotosRemaining.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:numphotosremaining element used by the API.
 * This indicates the number of photos remaining in an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_NumPhotosRemaining extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'numphotosremaining';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_NumPhotosRemaining object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�N?��#Gdata/Photos/Extension/Location.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:location element used by the API.
 * This indicates the number of bytes of storage used by an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Location extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'location';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Location object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[Ǟ���$Gdata/Photos/Extension/BytesUsed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:bytesUsed element used by the API.
 * This indicates the number of bytes of storage used by an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_BytesUsed extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'bytesUsed';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_BytesUsed object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[
�!s$Gdata/Photos/Extension/Timestamp.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:timestamp element used by the API.
 * The timestamp of a photo in milliseconds since January 1, 1970.
 * This date is either set externally or based on EXIF data.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Timestamp extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'timestamp';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Timestamp object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[_�x,Gdata/Photos/Extension/CommentingEnabled.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:commentingEnabled element used by the API.
 * This class represents whether commenting is enabled for a given
 * entry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_CommentingEnabled extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'commentingEnabled';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_CommentingEnabled object.
     *
     * @param string $text (optional) Whether commenting should be enabled
     *          or not.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[ѴB��Gdata/Photos/Extension/Size.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:size element used by the API.
 * The size of a photo in bytes.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Size extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'size';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Size object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[pVzW��!Gdata/Photos/Extension/Weight.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:weight element used by the API.
 * This indicates the weight of a tag, based on the number of times
 * it appears in photos under the current element.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Weight extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'weight';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Weight object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�.=T��%Gdata/Photos/Extension/QuotaLimit.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:quotaLimit element used by the API.
 * This class represents the number of bytes of storage available for
 * a user.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_QuotaLimit extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'quotaLimit';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_QuotaLimit object.
     *
     * @param string $text (optional) The value being represented.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[L�B���Gdata/Photos/Extension/Id.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:id element used by the API. This class
 * represents the unique ID assigned to an element by the servers.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Id extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'id';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Id object.
     *
     * @param string $text (optional) The ID being represented.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[Dd?�"Gdata/Photos/Extension/AlbumId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:albumid element used by the API. This
 * class represents the ID of an album and is usually contained
 * within an instance of Zend_Gdata_Photos_AlbumEntry or CommentEntry.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_AlbumId extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'albumid';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_AlbumId object.
     *
     * @param string $text (optional) The value to use for the Album ID.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�ޞ��#Gdata/Photos/Extension/Rotation.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:rotation element used by the API.
 * The rotation of a photo in degrees. Will only be shown if the
 * rotation has not already been applied to the image.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Rotation extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'rotation';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Rotation object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[Zg��#Gdata/Photos/Extension/Position.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:position element used by the API.
 * The ordinal position of a photo within an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Position extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'position';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Position object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�2�Z��!Gdata/Photos/Extension/Height.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:height element used by the API.
 * The height of a photo in pixels.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Height extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'height';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Height object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�����#Gdata/Photos/Extension/Checksum.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:checksum element used by the API.
 * This is an optional field that can be used to store a photo's
 * checksum to ease duplicate checking.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Checksum extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'checksum';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Checksum object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[jbҴ��Gdata/Photos/Extension/User.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:user element used by the API.
 * This class represents the username for a user.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_User extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'user';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_User object.
     *
     * @param string $text (optional) The username to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[����$Gdata/Photos/Extension/NumPhotos.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:numphotos element used by the API.
 * This indicates the number of photos in an album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_NumPhotos extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'numphotos';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_NumPhotos object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�D��,Gdata/Photos/Extension/MaxPhotosPerAlbum.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:maxPhotosPerAlbum element used by the API.
 * This class represents the maximum number of photos allowed in an
 * album.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'maxPhotosPerAlbum';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_MaxPhotosPerAlbum object.
     *
     * @param string $text (optional) The value being represented.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[��m�� Gdata/Photos/Extension/Width.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:width element used by the API.
 * This indicates the width of a photo in pixels.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Width extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'width';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Width object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[:wXP��!Gdata/Photos/Extension/Client.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Extension
 */
require_once 'Zend/Gdata/Extension.php';

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * Represents the gphoto:client element used by the API.
 * This is an optional field that can be used to indicate the
 * client which created a photo.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_Extension_Client extends Zend_Gdata_Extension
{

    protected $_rootNamespace = 'gphoto';
    protected $_rootElement = 'client';

    /**
     * Constructs a new Zend_Gdata_Photos_Extension_Client object.
     *
     * @param string $text (optional) The value to represent.
     */
    public function __construct($text = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct();
        $this->setText($text);
    }

}
PKpG[�O#c�O�OGdata/Photos/PhotoEntry.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_MediaEntry
 */
require_once 'Zend/Gdata/Media/Entry.php';

/**
 * @see Zend_Gdata_Photos_Extension_PhotoId
 */
require_once 'Zend/Gdata/Photos/Extension/PhotoId.php';

/**
 * @see Zend_Gdata_Photos_Extension_Version
 */
require_once 'Zend/Gdata/Photos/Extension/Version.php';

/**
 * @see Zend_Gdata_Photos_Extension_AlbumId
 */
require_once 'Zend/Gdata/Photos/Extension/AlbumId.php';

/**
 * @see Zend_Gdata_Photos_Extension_Id
 */
require_once 'Zend/Gdata/Photos/Extension/Id.php';

/**
 * @see Zend_Gdata_Photos_Extension_Width
 */
require_once 'Zend/Gdata/Photos/Extension/Width.php';

/**
 * @see Zend_Gdata_Photos_Extension_Height
 */
require_once 'Zend/Gdata/Photos/Extension/Height.php';

/**
 * @see Zend_Gdata_Photos_Extension_Size
 */
require_once 'Zend/Gdata/Photos/Extension/Size.php';

/**
 * @see Zend_Gdata_Photos_Extension_Client
 */
require_once 'Zend/Gdata/Photos/Extension/Client.php';

/**
 * @see Zend_Gdata_Photos_Extension_Checksum
 */
require_once 'Zend/Gdata/Photos/Extension/Checksum.php';

/**
 * @see Zend_Gdata_Photos_Extension_Timestamp
 */
require_once 'Zend/Gdata/Photos/Extension/Timestamp.php';

/**
 * @see Zend_Gdata_Photos_Extension_CommentingEnabled
 */
require_once 'Zend/Gdata/Photos/Extension/CommentingEnabled.php';

/**
 * @see Zend_Gdata_Photos_Extension_CommentCount
 */
require_once 'Zend/Gdata/Photos/Extension/CommentCount.php';

/**
 * @see Zend_Gdata_Exif_Extension_Tags
 */
require_once 'Zend/Gdata/Exif/Extension/Tags.php';

/**
 * @see Zend_Gdata_Geo_Extension_GeoRssWhere
 */
require_once 'Zend/Gdata/Geo/Extension/GeoRssWhere.php';

/**
 * @see Zend_Gdata_App_Extension_Category
 */
require_once 'Zend/Gdata/App/Extension/Category.php';

/**
 * Data model class for a Comment Entry.
 *
 * To transfer user entries to and from the servers, including
 * creating new entries, refer to the service class,
 * Zend_Gdata_Photos.
 *
 * This class represents <atom:entry> in the Google Data protocol.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_PhotoEntry extends Zend_Gdata_Media_Entry
{

    protected $_entryClassName = 'Zend_Gdata_Photos_PhotoEntry';

    /**
     * gphoto:id element
     *
     * @var Zend_Gdata_Photos_Extension_Id
     */
    protected $_gphotoId = null;

    /**
     * gphoto:albumid element
     *
     * @var Zend_Gdata_Photos_Extension_AlbumId
     */
    protected $_gphotoAlbumId = null;

    /**
     * gphoto:version element
     *
     * @var Zend_Gdata_Photos_Extension_Version
     */
    protected $_gphotoVersion = null;

    /**
     * gphoto:width element
     *
     * @var Zend_Gdata_Photos_Extension_Width
     */
    protected $_gphotoWidth = null;

    /**
     * gphoto:height element
     *
     * @var Zend_Gdata_Photos_Extension_Height
     */
    protected $_gphotoHeight = null;

    /**
     * gphoto:size element
     *
     * @var Zend_Gdata_Photos_Extension_Size
     */
    protected $_gphotoSize = null;

    /**
     * gphoto:client element
     *
     * @var Zend_Gdata_Photos_Extension_Client
     */
    protected $_gphotoClient = null;

    /**
     * gphoto:checksum element
     *
     * @var Zend_Gdata_Photos_Extension_Checksum
     */
    protected $_gphotoChecksum = null;

    /**
     * gphoto:timestamp element
     *
     * @var Zend_Gdata_Photos_Extension_Timestamp
     */
    protected $_gphotoTimestamp = null;

    /**
     * gphoto:commentCount element
     *
     * @var Zend_Gdata_Photos_Extension_CommentCount
     */
    protected $_gphotoCommentCount = null;

    /**
     * gphoto:commentingEnabled element
     *
     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
     */
    protected $_gphotoCommentingEnabled = null;

    /**
     * exif:tags element
     *
     * @var Zend_Gdata_Exif_Extension_Tags
     */
    protected $_exifTags = null;

    /**
     * georss:where element
     *
     * @var Zend_Gdata_Geo_Extension_GeoRssWhere
     */
    protected $_geoRssWhere = null;

    /**
     * Create a new instance.
     *
     * @param DOMElement $element (optional) DOMElement from which this
     *          object should be constructed.
     */
    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);

        $category = new Zend_Gdata_App_Extension_Category(
            'http://schemas.google.com/photos/2007#photo',
            'http://schemas.google.com/g/2005#kind');
        $this->setCategory(array($category));
    }

    /**
     * Retrieves a DOMElement which corresponds to this element and all
     * child properties.  This is used to build an entry back into a DOM
     * and eventually XML text for application storage/persistence.
     *
     * @param DOMDocument $doc The DOMDocument used to construct DOMElements
     * @return DOMElement The DOMElement representing this element and all
     *          child properties.
     */
    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoAlbumId !== null) {
            $element->appendChild($this->_gphotoAlbumId->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoId !== null) {
            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoVersion !== null) {
            $element->appendChild($this->_gphotoVersion->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoWidth !== null) {
            $element->appendChild($this->_gphotoWidth->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoHeight !== null) {
            $element->appendChild($this->_gphotoHeight->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoSize !== null) {
            $element->appendChild($this->_gphotoSize->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoClient !== null) {
            $element->appendChild($this->_gphotoClient->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoChecksum !== null) {
            $element->appendChild($this->_gphotoChecksum->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoTimestamp !== null) {
            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentingEnabled !== null) {
            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentCount !== null) {
            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
        }
        if ($this->_exifTags !== null) {
            $element->appendChild($this->_exifTags->getDOM($element->ownerDocument));
        }
        if ($this->_geoRssWhere !== null) {
            $element->appendChild($this->_geoRssWhere->getDOM($element->ownerDocument));
        }
        return $element;
    }

    /**
     * Creates individual Entry objects of the appropriate type and
     * stores them as members of this entry based upon DOM data.
     *
     * @param DOMNode $child The DOMNode to process
     */
    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'albumid';
                $albumId = new Zend_Gdata_Photos_Extension_AlbumId();
                $albumId->transferFromDOM($child);
                $this->_gphotoAlbumId = $albumId;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'id';
                $id = new Zend_Gdata_Photos_Extension_Id();
                $id->transferFromDOM($child);
                $this->_gphotoId = $id;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'version';
                $version = new Zend_Gdata_Photos_Extension_Version();
                $version->transferFromDOM($child);
                $this->_gphotoVersion = $version;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'width';
                $width = new Zend_Gdata_Photos_Extension_Width();
                $width->transferFromDOM($child);
                $this->_gphotoWidth = $width;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'height';
                $height = new Zend_Gdata_Photos_Extension_Height();
                $height->transferFromDOM($child);
                $this->_gphotoHeight = $height;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'size';
                $size = new Zend_Gdata_Photos_Extension_Size();
                $size->transferFromDOM($child);
                $this->_gphotoSize = $size;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'client';
                $client = new Zend_Gdata_Photos_Extension_Client();
                $client->transferFromDOM($child);
                $this->_gphotoClient = $client;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'checksum';
                $checksum = new Zend_Gdata_Photos_Extension_Checksum();
                $checksum->transferFromDOM($child);
                $this->_gphotoChecksum = $checksum;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
                $timestamp->transferFromDOM($child);
                $this->_gphotoTimestamp = $timestamp;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
                $commentingEnabled->transferFromDOM($child);
                $this->_gphotoCommentingEnabled = $commentingEnabled;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
                $commentCount->transferFromDOM($child);
                $this->_gphotoCommentCount = $commentCount;
                break;
            case $this->lookupNamespace('exif') . ':' . 'tags';
                $exifTags = new Zend_Gdata_Exif_Extension_Tags();
                $exifTags->transferFromDOM($child);
                $this->_exifTags = $exifTags;
                break;
            case $this->lookupNamespace('georss') . ':' . 'where';
                $geoRssWhere = new Zend_Gdata_Geo_Extension_GeoRssWhere();
                $geoRssWhere->transferFromDOM($child);
                $this->_geoRssWhere = $geoRssWhere;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;

        }
    }

    /**
     * Get the value for this element's gphoto:albumid attribute.
     *
     * @see setGphotoAlbumId
     * @return string The requested attribute.
     */
    public function getGphotoAlbumId()
    {
        return $this->_gphotoAlbumId;
    }

    /**
     * Set the value for this element's gphoto:albumid attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_AlbumId The element being modified.
     */
    public function setGphotoAlbumId($value)
    {
        $this->_gphotoAlbumId = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:id attribute.
     *
     * @see setGphotoId
     * @return string The requested attribute.
     */
    public function getGphotoId()
    {
        return $this->_gphotoId;
    }

    /**
     * Set the value for this element's gphoto:id attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
     */
    public function setGphotoId($value)
    {
        $this->_gphotoId = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:version attribute.
     *
     * @see setGphotoVersion
     * @return string The requested attribute.
     */
    public function getGphotoVersion()
    {
        return $this->_gphotoVersion;
    }

    /**
     * Set the value for this element's gphoto:version attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Version The element being modified.
     */
    public function setGphotoVersion($value)
    {
        $this->_gphotoVersion = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:width attribute.
     *
     * @see setGphotoWidth
     * @return string The requested attribute.
     */
    public function getGphotoWidth()
    {
        return $this->_gphotoWidth;
    }

    /**
     * Set the value for this element's gphoto:width attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Width The element being modified.
     */
    public function setGphotoWidth($value)
    {
        $this->_gphotoWidth = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:height attribute.
     *
     * @see setGphotoHeight
     * @return string The requested attribute.
     */
    public function getGphotoHeight()
    {
        return $this->_gphotoHeight;
    }

    /**
     * Set the value for this element's gphoto:height attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Height The element being modified.
     */
    public function setGphotoHeight($value)
    {
        $this->_gphotoHeight = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:size attribute.
     *
     * @see setGphotoSize
     * @return string The requested attribute.
     */
    public function getGphotoSize()
    {
        return $this->_gphotoSize;
    }

    /**
     * Set the value for this element's gphoto:size attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Size The element being modified.
     */
    public function setGphotoSize($value)
    {
        $this->_gphotoSize = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:client attribute.
     *
     * @see setGphotoClient
     * @return string The requested attribute.
     */
    public function getGphotoClient()
    {
        return $this->_gphotoClient;
    }

    /**
     * Set the value for this element's gphoto:client attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Client The element being modified.
     */
    public function setGphotoClient($value)
    {
        $this->_gphotoClient = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:checksum attribute.
     *
     * @see setGphotoChecksum
     * @return string The requested attribute.
     */
    public function getGphotoChecksum()
    {
        return $this->_gphotoChecksum;
    }

    /**
     * Set the value for this element's gphoto:checksum attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Checksum The element being modified.
     */
    public function setGphotoChecksum($value)
    {
        $this->_gphotoChecksum = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:timestamp attribute.
     *
     * @see setGphotoTimestamp
     * @return string The requested attribute.
     */
    public function getGphotoTimestamp()
    {
        return $this->_gphotoTimestamp;
    }

    /**
     * Set the value for this element's gphoto:timestamp attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
     */
    public function setGphotoTimestamp($value)
    {
        $this->_gphotoTimestamp = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentCount attribute.
     *
     * @see setGphotoCommentCount
     * @return string The requested attribute.
     */
    public function getGphotoCommentCount()
    {
        return $this->_gphotoCommentCount;
    }

    /**
     * Set the value for this element's gphoto:commentCount attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
     */
    public function setGphotoCommentCount($value)
    {
        $this->_gphotoCommentCount = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentingEnabled attribute.
     *
     * @see setGphotoCommentingEnabled
     * @return string The requested attribute.
     */
    public function getGphotoCommentingEnabled()
    {
        return $this->_gphotoCommentingEnabled;
    }

    /**
     * Set the value for this element's gphoto:commentingEnabled attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
     */
    public function setGphotoCommentingEnabled($value)
    {
        $this->_gphotoCommentingEnabled = $value;
        return $this;
    }

    /**
     * Get the value for this element's exif:tags attribute.
     *
     * @see setExifTags
     * @return string The requested attribute.
     */
    public function getExifTags()
    {
        return $this->_exifTags;
    }

    /**
     * Set the value for this element's exif:tags attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Exif_Extension_Tags The element being modified.
     */
    public function setExifTags($value)
    {
        $this->_exifTags = $value;
        return $this;
    }

    /**
     * Get the value for this element's georss:where attribute.
     *
     * @see setGeoRssWhere
     * @return string The requested attribute.
     */
    public function getGeoRssWhere()
    {
        return $this->_geoRssWhere;
    }

    /**
     * Set the value for this element's georss:where attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
     */
    public function setGeoRssWhere($value)
    {
        $this->_geoRssWhere = $value;
        return $this;
    }

    /**
     * Get the value for this element's media:group attribute.
     *
     * @see setMediaGroup
     * @return string The requested attribute.
     */
    public function getMediaGroup()
    {
        return $this->_mediaGroup;
    }

    /**
     * Set the value for this element's media:group attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
     */
    public function setMediaGroup($value)
    {
        $this->_mediaGroup = $value;
        return $this;
    }

}
PKpG[d�2�C�CGdata/Photos/PhotoFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Photos_PhotoEntry
 */
require_once 'Zend/Gdata/Photos/PhotoEntry.php';

/**
 * Data model for a collection of photo entries, usually
 * provided by the Picasa servers.
 *
 * For information on requesting this feed from a server, see the
 * service class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_PhotoFeed extends Zend_Gdata_Feed
{

    /**
     * gphoto:id element
     *
     * @var Zend_Gdata_Photos_Extension_Id
     */
    protected $_gphotoId = null;

    /**
     * gphoto:albumid element
     *
     * @var Zend_Gdata_Photos_Extension_AlbumId
     */
    protected $_gphotoAlbumId = null;

    /**
     * gphoto:version element
     *
     * @var Zend_Gdata_Photos_Extension_Version
     */
    protected $_gphotoVersion = null;

    /**
     * gphoto:width element
     *
     * @var Zend_Gdata_Photos_Extension_Width
     */
    protected $_gphotoWidth = null;

    /**
     * gphoto:height element
     *
     * @var Zend_Gdata_Photos_Extension_Height
     */
    protected $_gphotoHeight = null;

    /**
     * gphoto:size element
     *
     * @var Zend_Gdata_Photos_Extension_Size
     */
    protected $_gphotoSize = null;

    /**
     * gphoto:client element
     *
     * @var Zend_Gdata_Photos_Extension_Client
     */
    protected $_gphotoClient = null;

    /**
     * gphoto:checksum element
     *
     * @var Zend_Gdata_Photos_Extension_Checksum
     */
    protected $_gphotoChecksum = null;

    /**
     * gphoto:timestamp element
     *
     * @var Zend_Gdata_Photos_Extension_Timestamp
     */
    protected $_gphotoTimestamp = null;

    /**
     * gphoto:commentCount element
     *
     * @var Zend_Gdata_Photos_Extension_CommentCount
     */
    protected $_gphotoCommentCount = null;

    /**
     * gphoto:commentingEnabled element
     *
     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
     */
    protected $_gphotoCommentingEnabled = null;

    /**
     * media:group element
     *
     * @var Zend_Gdata_Media_Extension_MediaGroup
     */
    protected $_mediaGroup = null;

    protected $_entryClassName = 'Zend_Gdata_Photos_PhotoEntry';
    protected $_feedClassName = 'Zend_Gdata_Photos_PhotoFeed';

    protected $_entryKindClassMapping = array(
        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
    );

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoId != null) {
            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoVersion != null) {
            $element->appendChild($this->_gphotoVersion->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoWidth != null) {
            $element->appendChild($this->_gphotoWidth->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoHeight != null) {
            $element->appendChild($this->_gphotoHeight->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoSize != null) {
            $element->appendChild($this->_gphotoSize->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoClient != null) {
            $element->appendChild($this->_gphotoClient->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoChecksum != null) {
            $element->appendChild($this->_gphotoChecksum->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoTimestamp != null) {
            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentingEnabled != null) {
            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentCount != null) {
            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
        }
        if ($this->_mediaGroup != null) {
            $element->appendChild($this->_mediaGroup->getDOM($element->ownerDocument));
        }

        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'id';
                $id = new Zend_Gdata_Photos_Extension_Id();
                $id->transferFromDOM($child);
                $this->_gphotoId = $id;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'version';
                $version = new Zend_Gdata_Photos_Extension_Version();
                $version->transferFromDOM($child);
                $this->_gphotoVersion = $version;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'albumid';
                $albumid = new Zend_Gdata_Photos_Extension_AlbumId();
                $albumid->transferFromDOM($child);
                $this->_gphotoAlbumId = $albumid;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'width';
                $width = new Zend_Gdata_Photos_Extension_Width();
                $width->transferFromDOM($child);
                $this->_gphotoWidth = $width;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'height';
                $height = new Zend_Gdata_Photos_Extension_Height();
                $height->transferFromDOM($child);
                $this->_gphotoHeight = $height;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'size';
                $size = new Zend_Gdata_Photos_Extension_Size();
                $size->transferFromDOM($child);
                $this->_gphotoSize = $size;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'client';
                $client = new Zend_Gdata_Photos_Extension_Client();
                $client->transferFromDOM($child);
                $this->_gphotoClient = $client;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'checksum';
                $checksum = new Zend_Gdata_Photos_Extension_Checksum();
                $checksum->transferFromDOM($child);
                $this->_gphotoChecksum = $checksum;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
                $timestamp->transferFromDOM($child);
                $this->_gphotoTimestamp = $timestamp;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
                $commentingEnabled->transferFromDOM($child);
                $this->_gphotoCommentingEnabled = $commentingEnabled;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
                $commentCount->transferFromDOM($child);
                $this->_gphotoCommentCount = $commentCount;
                break;
            case $this->lookupNamespace('media') . ':' . 'group';
                $mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();
                $mediaGroup->transferFromDOM($child);
                $this->_mediaGroup = $mediaGroup;
                break;
            case $this->lookupNamespace('atom') . ':' . 'entry':
                $entryClassName = $this->_entryClassName;
                $tmpEntry = new Zend_Gdata_App_Entry($child);
                $categories = $tmpEntry->getCategory();
                foreach ($categories as $category) {
                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
                        $this->_entryKindClassMapping[$category->term] != "") {
                            $entryClassName = $this->_entryKindClassMapping[$category->term];
                            break;
                    } else {
                        require_once 'Zend/Gdata/App/Exception.php';
                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
                    }
                }

                $newEntry = new $entryClassName($child);
                $newEntry->setHttpClient($this->getHttpClient());
                $this->_entry[] = $newEntry;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:id attribute.
     *
     * @see setGphotoId
     * @return string The requested attribute.
     */
    public function getGphotoId()
    {
        return $this->_gphotoId;
    }

    /**
     * Set the value for this element's gphoto:id attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
     */
    public function setGphotoId($value)
    {
        $this->_gphotoId = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:version attribute.
     *
     * @see setGphotoVersion
     * @return string The requested attribute.
     */
    public function getGphotoVersion()
    {
        return $this->_gphotoVersion;
    }

    /**
     * Set the value for this element's gphoto:version attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Version The element being modified.
     */
    public function setGphotoVersion($value)
    {
        $this->_gphotoVersion = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:albumid attribute.
     *
     * @see setGphotoAlbumId
     * @return string The requested attribute.
     */
    public function getGphotoAlbumId()
    {
        return $this->_gphotoAlbumId;
    }

    /**
     * Set the value for this element's gphoto:albumid attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_AlbumId The element being modified.
     */
    public function setGphotoAlbumId($value)
    {
        $this->_gphotoAlbumId = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:width attribute.
     *
     * @see setGphotoWidth
     * @return string The requested attribute.
     */
    public function getGphotoWidth()
    {
        return $this->_gphotoWidth;
    }

    /**
     * Set the value for this element's gphoto:width attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Width The element being modified.
     */
    public function setGphotoWidth($value)
    {
        $this->_gphotoWidth = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:height attribute.
     *
     * @see setGphotoHeight
     * @return string The requested attribute.
     */
    public function getGphotoHeight()
    {
        return $this->_gphotoHeight;
    }

    /**
     * Set the value for this element's gphoto:height attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Height The element being modified.
     */
    public function setGphotoHeight($value)
    {
        $this->_gphotoHeight = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:size attribute.
     *
     * @see setGphotoSize
     * @return string The requested attribute.
     */
    public function getGphotoSize()
    {
        return $this->_gphotoSize;
    }

    /**
     * Set the value for this element's gphoto:size attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Size The element being modified.
     */
    public function setGphotoSize($value)
    {
        $this->_gphotoSize = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:client attribute.
     *
     * @see setGphotoClient
     * @return string The requested attribute.
     */
    public function getGphotoClient()
    {
        return $this->_gphotoClient;
    }

    /**
     * Set the value for this element's gphoto:client attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Client The element being modified.
     */
    public function setGphotoClient($value)
    {
        $this->_gphotoClient = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:checksum attribute.
     *
     * @see setGphotoChecksum
     * @return string The requested attribute.
     */
    public function getGphotoChecksum()
    {
        return $this->_gphotoChecksum;
    }

    /**
     * Set the value for this element's gphoto:checksum attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Checksum The element being modified.
     */
    public function setGphotoChecksum($value)
    {
        $this->_gphotoChecksum = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:timestamp attribute.
     *
     * @see setGphotoTimestamp
     * @return string The requested attribute.
     */
    public function getGphotoTimestamp()
    {
        return $this->_gphotoTimestamp;
    }

    /**
     * Set the value for this element's gphoto:timestamp attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
     */
    public function setGphotoTimestamp($value)
    {
        $this->_gphotoTimestamp = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentCount attribute.
     *
     * @see setGphotoCommentCount
     * @return string The requested attribute.
     */
    public function getGphotoCommentCount()
    {
        return $this->_gphotoCommentCount;
    }

    /**
     * Set the value for this element's gphoto:commentCount attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
     */
    public function setGphotoCommentCount($value)
    {
        $this->_gphotoCommentCount = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentingEnabled attribute.
     *
     * @see setGphotoCommentingEnabled
     * @return string The requested attribute.
     */
    public function getGphotoCommentingEnabled()
    {
        return $this->_gphotoCommentingEnabled;
    }

    /**
     * Set the value for this element's gphoto:commentingEnabled attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
     */
    public function setGphotoCommentingEnabled($value)
    {
        $this->_gphotoCommentingEnabled = $value;
        return $this;
    }

    /**
     * Get the value for this element's media:group attribute.
     *
     * @see setMediaGroup
     * @return string The requested attribute.
     */
    public function getMediaGroup()
    {
        return $this->_mediaGroup;
    }

    /**
     * Set the value for this element's media:group attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Media_Extension_MediaGroup The element being modified.
     */
    public function setMediaGroup($value)
    {
        $this->_mediaGroup = $value;
        return $this;
    }

}
PKpG[Q$5�
�
Gdata/Photos/PhotoQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Gapps_Picasa_AlbumQuery
 */
require_once('Zend/Gdata/Photos/AlbumQuery.php');

/**
 * Assists in constructing queries for comment/tag entries.
 * Instances of this class can be provided in many places where a URL is
 * required.
 *
 * For information on submitting queries to a server, see the
 * service class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_PhotoQuery extends Zend_Gdata_Photos_AlbumQuery
{

    /**
     * The ID of the photo to query for.
     *
     * @var string
     */
    protected $_photoId = null;

    /**
     * Set the photo ID to query for. When set, this photo's comments/tags
     * will be returned. If not set or null, the default user's feed will be
     * returned instead.
     *
     * @param string $value The ID of the photo to retrieve, or null to
     *          clear.
     */
     public function setPhotoId($value)
     {
         $this->_photoId = $value;
     }

    /**
     * Get the photo ID which is to be returned.
     *
     * @see setPhoto
     * @return string The ID of the photo to retrieve.
     */
    public function getPhotoId()
    {
        return $this->_photoId;
    }

    /**
     * Returns the URL generated for this query, based on it's current
     * parameters.
     *
     * @return string A URL generated based on the state of this query.
     * @throws Zend_Gdata_App_InvalidArgumentException
     */
    public function getQueryUrl($incomingUri = '')
    {
        $uri = '';
        if ($this->getPhotoId() !== null) {
            $uri .= '/photoid/' . $this->getPhotoId();
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'PhotoId cannot be null');
        }
        $uri .= $incomingUri;
        return parent::getQueryUrl($uri);
    }

}
PKpG[�b!�
>
>Gdata/Photos/AlbumFeed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Gdata_Photos
 */
require_once 'Zend/Gdata/Photos.php';

/**
 * @see Zend_Gdata_Feed
 */
require_once 'Zend/Gdata/Feed.php';

/**
 * @see Zend_Gdata_Photos_AlbumEntry
 */
require_once 'Zend/Gdata/Photos/AlbumEntry.php';

/**
 * Data model for a collection of album entries, usually
 * provided by the servers.
 *
 * For information on requesting this feed from a server, see the
 * service class, Zend_Gdata_Photos.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Photos
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata_Photos_AlbumFeed extends Zend_Gdata_Feed
{
    protected $_entryClassName = 'Zend_Gdata_Photos_AlbumEntry';
    protected $_feedClassName = 'Zend_Gdata_Photos_AlbumFeed';

    /**
     * gphoto:id element
     *
     * @var Zend_Gdata_Photos_Extension_Id
     */
    protected $_gphotoId = null;

    /**
     * gphoto:user element
     *
     * @var Zend_Gdata_Photos_Extension_User
     */
    protected $_gphotoUser = null;

    /**
     * gphoto:access element
     *
     * @var Zend_Gdata_Photos_Extension_Access
     */
    protected $_gphotoAccess = null;

    /**
     * gphoto:location element
     *
     * @var Zend_Gdata_Photos_Extension_Location
     */
    protected $_gphotoLocation = null;

    /**
     * gphoto:nickname element
     *
     * @var Zend_Gdata_Photos_Extension_Nickname
     */
    protected $_gphotoNickname = null;

    /**
     * gphoto:timestamp element
     *
     * @var Zend_Gdata_Photos_Extension_Timestamp
     */
    protected $_gphotoTimestamp = null;

    /**
     * gphoto:name element
     *
     * @var Zend_Gdata_Photos_Extension_Name
     */
    protected $_gphotoName = null;

    /**
     * gphoto:numphotos element
     *
     * @var Zend_Gdata_Photos_Extension_NumPhotos
     */
    protected $_gphotoNumPhotos = null;

    /**
     * gphoto:commentCount element
     *
     * @var Zend_Gdata_Photos_Extension_CommentCount
     */
    protected $_gphotoCommentCount = null;

    /**
     * gphoto:commentingEnabled element
     *
     * @var Zend_Gdata_Photos_Extension_CommentingEnabled
     */
    protected $_gphotoCommentingEnabled = null;

    protected $_entryKindClassMapping = array(
        'http://schemas.google.com/photos/2007#photo' => 'Zend_Gdata_Photos_PhotoEntry',
        'http://schemas.google.com/photos/2007#comment' => 'Zend_Gdata_Photos_CommentEntry',
        'http://schemas.google.com/photos/2007#tag' => 'Zend_Gdata_Photos_TagEntry'
    );

    public function __construct($element = null)
    {
        $this->registerAllNamespaces(Zend_Gdata_Photos::$namespaces);
        parent::__construct($element);
    }

    public function getDOM($doc = null, $majorVersion = 1, $minorVersion = null)
    {
        $element = parent::getDOM($doc, $majorVersion, $minorVersion);
        if ($this->_gphotoId != null) {
            $element->appendChild($this->_gphotoId->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoUser != null) {
            $element->appendChild($this->_gphotoUser->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoNickname != null) {
            $element->appendChild($this->_gphotoNickname->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoName != null) {
            $element->appendChild($this->_gphotoName->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoLocation != null) {
            $element->appendChild($this->_gphotoLocation->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoAccess != null) {
            $element->appendChild($this->_gphotoAccess->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoTimestamp != null) {
            $element->appendChild($this->_gphotoTimestamp->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoNumPhotos != null) {
            $element->appendChild($this->_gphotoNumPhotos->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentingEnabled != null) {
            $element->appendChild($this->_gphotoCommentingEnabled->getDOM($element->ownerDocument));
        }
        if ($this->_gphotoCommentCount != null) {
            $element->appendChild($this->_gphotoCommentCount->getDOM($element->ownerDocument));
        }

        return $element;
    }

    protected function takeChildFromDOM($child)
    {
        $absoluteNodeName = $child->namespaceURI . ':' . $child->localName;

        switch ($absoluteNodeName) {
            case $this->lookupNamespace('gphoto') . ':' . 'id';
                $id = new Zend_Gdata_Photos_Extension_Id();
                $id->transferFromDOM($child);
                $this->_gphotoId = $id;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'user';
                $user = new Zend_Gdata_Photos_Extension_User();
                $user->transferFromDOM($child);
                $this->_gphotoUser = $user;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'nickname';
                $nickname = new Zend_Gdata_Photos_Extension_Nickname();
                $nickname->transferFromDOM($child);
                $this->_gphotoNickname = $nickname;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'name';
                $name = new Zend_Gdata_Photos_Extension_Name();
                $name->transferFromDOM($child);
                $this->_gphotoName = $name;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'location';
                $location = new Zend_Gdata_Photos_Extension_Location();
                $location->transferFromDOM($child);
                $this->_gphotoLocation = $location;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'access';
                $access = new Zend_Gdata_Photos_Extension_Access();
                $access->transferFromDOM($child);
                $this->_gphotoAccess = $access;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'timestamp';
                $timestamp = new Zend_Gdata_Photos_Extension_Timestamp();
                $timestamp->transferFromDOM($child);
                $this->_gphotoTimestamp = $timestamp;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'numphotos';
                $numphotos = new Zend_Gdata_Photos_Extension_NumPhotos();
                $numphotos->transferFromDOM($child);
                $this->_gphotoNumPhotos = $numphotos;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentingEnabled';
                $commentingEnabled = new Zend_Gdata_Photos_Extension_CommentingEnabled();
                $commentingEnabled->transferFromDOM($child);
                $this->_gphotoCommentingEnabled = $commentingEnabled;
                break;
            case $this->lookupNamespace('gphoto') . ':' . 'commentCount';
                $commentCount = new Zend_Gdata_Photos_Extension_CommentCount();
                $commentCount->transferFromDOM($child);
                $this->_gphotoCommentCount = $commentCount;
                break;
            case $this->lookupNamespace('atom') . ':' . 'entry':
                $entryClassName = $this->_entryClassName;
                $tmpEntry = new Zend_Gdata_App_Entry($child);
                $categories = $tmpEntry->getCategory();
                foreach ($categories as $category) {
                    if ($category->scheme == Zend_Gdata_Photos::KIND_PATH &&
                        $this->_entryKindClassMapping[$category->term] != "") {
                            $entryClassName = $this->_entryKindClassMapping[$category->term];
                            break;
                    } else {
                        require_once 'Zend/Gdata/App/Exception.php';
                        throw new Zend_Gdata_App_Exception('Entry is missing kind declaration.');
                    }
                }

                $newEntry = new $entryClassName($child);
                $newEntry->setHttpClient($this->getHttpClient());
                $this->_entry[] = $newEntry;
                break;
            default:
                parent::takeChildFromDOM($child);
                break;
        }
    }

    /**
     * Get the value for this element's gphoto:user attribute.
     *
     * @see setGphotoUser
     * @return string The requested attribute.
     */
    public function getGphotoUser()
    {
        return $this->_gphotoUser;
    }

    /**
     * Set the value for this element's gphoto:user attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_User The element being modified.
     */
    public function setGphotoUser($value)
    {
        $this->_gphotoUser = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:access attribute.
     *
     * @see setGphotoAccess
     * @return string The requested attribute.
     */
    public function getGphotoAccess()
    {
        return $this->_gphotoAccess;
    }

    /**
     * Set the value for this element's gphoto:access attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Access The element being modified.
     */
    public function setGphotoAccess($value)
    {
        $this->_gphotoAccess = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:location attribute.
     *
     * @see setGphotoLocation
     * @return string The requested attribute.
     */
    public function getGphotoLocation()
    {
        return $this->_gphotoLocation;
    }

    /**
     * Set the value for this element's gphoto:location attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Location The element being modified.
     */
    public function setGphotoLocation($value)
    {
        $this->_gphotoLocation = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:name attribute.
     *
     * @see setGphotoName
     * @return string The requested attribute.
     */
    public function getGphotoName()
    {
        return $this->_gphotoName;
    }

    /**
     * Set the value for this element's gphoto:name attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Name The element being modified.
     */
    public function setGphotoName($value)
    {
        $this->_gphotoName = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:numphotos attribute.
     *
     * @see setGphotoNumPhotos
     * @return string The requested attribute.
     */
    public function getGphotoNumPhotos()
    {
        return $this->_gphotoNumPhotos;
    }

    /**
     * Set the value for this element's gphoto:numphotos attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_NumPhotos The element being modified.
     */
    public function setGphotoNumPhotos($value)
    {
        $this->_gphotoNumPhotos = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentCount attribute.
     *
     * @see setGphotoCommentCount
     * @return string The requested attribute.
     */
    public function getGphotoCommentCount()
    {
        return $this->_gphotoCommentCount;
    }

    /**
     * Set the value for this element's gphoto:commentCount attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentCount The element being modified.
     */
    public function setGphotoCommentCount($value)
    {
        $this->_gphotoCommentCount = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:commentingEnabled attribute.
     *
     * @see setGphotoCommentingEnabled
     * @return string The requested attribute.
     */
    public function getGphotoCommentingEnabled()
    {
        return $this->_gphotoCommentingEnabled;
    }

    /**
     * Set the value for this element's gphoto:commentingEnabled attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_CommentingEnabled The element being modified.
     */
    public function setGphotoCommentingEnabled($value)
    {
        $this->_gphotoCommentingEnabled = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:id attribute.
     *
     * @see setGphotoId
     * @return string The requested attribute.
     */
    public function getGphotoId()
    {
        return $this->_gphotoId;
    }

    /**
     * Set the value for this element's gphoto:id attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Id The element being modified.
     */
    public function setGphotoId($value)
    {
        $this->_gphotoId = $value;
        return $this;
    }

    /**
     * Get the value for this element's georss:where attribute.
     *
     * @see setGeoRssWhere
     * @return string The requested attribute.
     */
    public function getGeoRssWhere()
    {
        return $this->_geoRssWhere;
    }

    /**
     * Set the value for this element's georss:where attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Geo_Extension_GeoRssWhere The element being modified.
     */
    public function setGeoRssWhere($value)
    {
        $this->_geoRssWhere = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:nickname attribute.
     *
     * @see setGphotoNickname
     * @return string The requested attribute.
     */
    public function getGphotoNickname()
    {
        return $this->_gphotoNickname;
    }

    /**
     * Set the value for this element's gphoto:nickname attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Nickname The element being modified.
     */
    public function setGphotoNickname($value)
    {
        $this->_gphotoNickname = $value;
        return $this;
    }

    /**
     * Get the value for this element's gphoto:timestamp attribute.
     *
     * @see setGphotoTimestamp
     * @return string The requested attribute.
     */
    public function getGphotoTimestamp()
    {
        return $this->_gphotoTimestamp;
    }

    /**
     * Set the value for this element's gphoto:timestamp attribute.
     *
     * @param string $value The desired value for this attribute.
     * @return Zend_Gdata_Photos_Extension_Timestamp The element being modified.
     */
    public function setGphotoTimestamp($value)
    {
        $this->_gphotoTimestamp = $value;
        return $this;
    }

}
PKpG[R'h�		
Memory.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Memory_Exception */
require_once 'Zend/Memory/Manager.php';

/** Zend_Memory_Exception */
require_once 'Zend/Memory/Exception.php';

/** Zend_Memory_Value */
require_once 'Zend/Memory/Value.php';

/** Zend_Memory_Container */
require_once 'Zend/Memory/Container.php';

/** Zend_Memory_Exception */
require_once 'Zend/Cache.php';


/**
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory
{
    /**
     * Factory
     *
     * @param string $backend backend name
     * @param array $backendOptions associative array of options for the corresponding backend constructor
     * @return Zend_Memory_Manager
     * @throws Zend_Memory_Exception
     */
    public static function factory($backend, $backendOptions = array())
    {
        if (strcasecmp($backend, 'none') == 0) {
            return new Zend_Memory_Manager();
        }

        // because lowercase will fail
        $backend = @ucfirst(strtolower($backend));

        if (!in_array($backend, Zend_Cache::$availableBackends)) {
            throw new Zend_Memory_Exception("Incorrect backend ($backend)");
        }

        $backendClass = 'Zend_Cache_Backend_' . $backend;

        // For perfs reasons, we do not use the Zend_Loader::loadClass() method
        // (security controls are explicit)
        require_once str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php';

        $backendObject = new $backendClass($backendOptions);

        return new Zend_Memory_Manager($backendObject);
    }
}
PKpG[o����Translate/Adapter/Qt.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Qt extends Zend_Translate_Adapter {
    // Internal variables
    private $_file        = false;
    private $_cleared     = array();
    private $_transunit   = null;
    private $_source      = null;
    private $_target      = null;
    private $_scontent    = null;
    private $_tcontent    = null;
    private $_stag        = false;
    private $_ttag        = true;

    /**
     * Generates the Qt adapter
     * This adapter reads with php's xml_parser
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }


    /**
     * Load translation data (QT file reader)
     *
     * @param  string  $locale    Locale/Language to add data for, identical with locale identifier,
     *                            see Zend_Locale for more information
     * @param  string  $filename  QT file to add, full path must be given for access
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $options + $this->_options;

        if ($options['clear'] || !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }

        if (!is_readable($filename)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
        }

        $this->_target = $locale;

        $encoding = $this->_findEncoding($filename);
        $this->_file = xml_parser_create($encoding);
        xml_set_object($this->_file, $this);
        xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
        xml_set_element_handler($this->_file, "_startElement", "_endElement");
        xml_set_character_data_handler($this->_file, "_contentElement");

        if (!xml_parse($this->_file, file_get_contents($filename))) {
            $ex = sprintf('XML error: %s at line %d',
                          xml_error_string(xml_get_error_code($this->_file)),
                          xml_get_current_line_number($this->_file));
            xml_parser_free($this->_file);
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception($ex);
        }
    }

    private function _startElement($file, $name, $attrib)
    {
        switch(strtolower($name)) {
            case 'message':
                $this->_source = null;
                $this->_stag = false;
                $this->_ttag = false;
                $this->_scontent = null;
                $this->_tcontent = null;
                break;
            case 'source':
                $this->_stag = true;
                break;
            case 'translation':
                $this->_ttag = true;
                break;
            default:
                break;
        }
    }

    private function _endElement($file, $name)
    {
        switch (strtolower($name)) {
            case 'source':
                $this->_stag = false;
                break;

            case 'translation':
                if (!empty($this->_scontent) and !empty($this->_tcontent) or
                    (isset($this->_translate[$this->_target][$this->_scontent]) === false)) {
                    $this->_translate[$this->_target][$this->_scontent] = $this->_tcontent;
                }
                $this->_ttag = false;
                break;

            default:
                break;
        }
    }

    private function _contentElement($file, $data)
    {
        if ($this->_stag === true) {
            $this->_scontent .= $data;
        }

        if ($this->_ttag === true) {
            $this->_tcontent .= $data;
        }
    }

    private function _findEncoding($filename)
    {
        $file = file_get_contents($filename, null, null, 0, 100);
        if (strpos($file, "encoding") !== false) {
            $encoding = substr($file, strpos($file, "encoding") + 9);
            $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1);
            return $encoding;
        }
        return 'UTF-8';
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "Qt";
    }
}
PKpG[(�^���Translate/Adapter/XmlTm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_XmlTm extends Zend_Translate_Adapter {
    // Internal variables
    private $_file        = false;
    private $_cleared     = array();
    private $_lang        = null;
    private $_content     = null;
    private $_tag         = null;

    /**
     * Generates the xmltm adapter
     * This adapter reads with php's xml_parser
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }


    /**
     * Load translation data (XMLTM file reader)
     *
     * @param  string  $locale    Locale/Language to add data for, identical with locale identifier,
     *                            see Zend_Locale for more information
     * @param  string  $filename  XMLTM file to add, full path must be given for access
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $options + $this->_options;
        $this->_lang = $locale;

        if ($options['clear']  ||  !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }

        if (!is_readable($filename)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
        }

        $encoding = $this->_findEncoding($filename);
        $this->_file = xml_parser_create($encoding);
        xml_set_object($this->_file, $this);
        xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
        xml_set_element_handler($this->_file, "_startElement", "_endElement");
        xml_set_character_data_handler($this->_file, "_contentElement");

        if (!xml_parse($this->_file, file_get_contents($filename))) {
            $ex = sprintf('XML error: %s at line %d',
                          xml_error_string(xml_get_error_code($this->_file)),
                          xml_get_current_line_number($this->_file));
            xml_parser_free($this->_file);
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception($ex);
        }
    }

    private function _startElement($file, $name, $attrib)
    {
        switch(strtolower($name)) {
            case 'tm:tu':
                $this->_tag     = $attrib['id'];
                $this->_content = null;
                break;
            default:
                break;
        }
    }

    private function _endElement($file, $name)
    {
        switch (strtolower($name)) {
            case 'tm:tu':
                if (!empty($this->_tag) and !empty($this->_content) or
                    (isset($this->_translate[$this->_lang][$this->_tag]) === false)) {
                    $this->_translate[$this->_lang][$this->_tag] = $this->_content;
                }
                $this->_tag     = null;
                $this->_content = null;
                break;

            default:
                break;
        }
    }

    private function _contentElement($file, $data)
    {
        if (($this->_tag !== null)) {
            $this->_content .= $data;
        }
    }

    private function _findEncoding($filename)
    {
        $file = file_get_contents($filename, null, null, 0, 100);
        if (strpos($file, "encoding") !== false) {
            $encoding = substr($file, strpos($file, "encoding") + 9);
            $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1);
            return $encoding;
        }
        return 'UTF-8';
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "XmlTm";
    }
}
PKpG[�2����Translate/Adapter/Tmx.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Tmx extends Zend_Translate_Adapter {
    // Internal variables
    private $_file        = false;
    private $_cleared     = array();
    private $_tu          = null;
    private $_tuv         = null;
    private $_seg         = null;
    private $_content     = null;

    /**
     * Generates the tmx adapter
     * This adapter reads with php's xml_parser
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }


    /**
     * Load translation data (TMX file reader)
     *
     * @param  string  $filename  TMX file to add, full path must be given for access
     * @param  string  $locale    Locale has no effect for TMX because TMX defines all languages within
     *                            the source file
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $this->_options + $options;

        if ($options['clear']) {
            $this->_translate = array();
        }

        if (!is_readable($filename)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
        }

        $encoding = $this->_findEncoding($filename);
        $this->_file = xml_parser_create($encoding);
        xml_set_object($this->_file, $this);
        xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
        xml_set_element_handler($this->_file, "_startElement", "_endElement");
        xml_set_character_data_handler($this->_file, "_contentElement");

        if (!xml_parse($this->_file, file_get_contents($filename))) {
            $ex = sprintf('XML error: %s at line %d',
                          xml_error_string(xml_get_error_code($this->_file)),
                          xml_get_current_line_number($this->_file));
            xml_parser_free($this->_file);
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception($ex);
        }
    }

    private function _startElement($file, $name, $attrib)
    {
        if ($this->_seg !== null) {
            $this->_content .= "<".$name;
            foreach($attrib as $key => $value) {
                $this->_content .= " $key=\"$value\"";
            }
            $this->_content .= ">";
        } else {
            switch(strtolower($name)) {
                case 'tu':
                    if (isset($attrib['tuid']) === true) {
                        $this->_tu = $attrib['tuid'];
                    }
                    break;
                case 'tuv':
                    if (isset($attrib['xml:lang']) === true) {
                        $this->_tuv = $attrib['xml:lang'];
                        if (isset($this->_translate[$this->_tuv]) === false) {
                            $this->_translate[$this->_tuv] = array();
                        }
                    }
                    break;
                case 'seg':
                    $this->_seg     = true;
                    $this->_content = null;
                    break;
                default:
                    break;
            }
        }
    }

    private function _endElement($file, $name)
    {
        if (($this->_seg !== null) and ($name !== 'seg')) {
            $this->_content .= "</".$name.">";
        } else {
            switch (strtolower($name)) {
                case 'tu':
                    $this->_tu = null;
                    break;
                case 'tuv':
                    $this->_tuv = null;
                    break;
                case 'seg':
                    $this->_seg = null;
                    if (!empty($this->_content) or (isset($this->_translate[$this->_tuv][$this->_tu]) === false)) {
                        $this->_translate[$this->_tuv][$this->_tu] = $this->_content;
                    }
                    break;
                default:
                    break;
            }
        }
    }

    private function _contentElement($file, $data)
    {
        if (($this->_seg !== null) and ($this->_tu !== null) and ($this->_tuv !== null)) {
            $this->_content .= $data;
        }
    }

    private function _findEncoding($filename)
    {
        $file = file_get_contents($filename, null, null, 0, 100);
        if (strpos($file, "encoding") !== false) {
            $encoding = substr($file, strpos($file, "encoding") + 9);
            $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1);
            return $encoding;
        }
        return 'UTF-8';
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "Tmx";
    }
}
PKpG[����Translate/Adapter/Csv.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Csv extends Zend_Translate_Adapter {

    /**
     * Generates the adapter
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  Options for this adapter
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        $this->_options['delimiter'] = ";";
        $this->_options['length']    = 0;
        $this->_options['enclosure'] = '"';
        parent::__construct($data, $locale, $options);
    }

    /**
     * Load translation data
     *
     * @param  string|array  $filename  Filename and full path to the translation source
     * @param  string        $locale    Locale/Language to add data for, identical with locale identifier,
     *                                  see Zend_Locale for more information
     * @param  array         $option    OPTIONAL Options to use
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $options + $this->_options;

        if ($options['clear']  ||  !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }

        $this->_file = @fopen($filename, 'rb');
        if (!$this->_file) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Error opening translation file \'' . $filename . '\'.');
        }

        while(($data = fgetcsv($this->_file, $options['length'], $options['delimiter'], $options['enclosure'])) !== false) {
            if (substr($data[0], 0, 1) === '#') {
                continue;
            }

            if (isset($data[1]) !== true) {
                continue;
            }

            $this->_translate[$locale][$data[0]] = $data[1];
        }
    }

    /**
     * returns the adapters name
     *
     * @return string
     */
    public function toString()
    {
        return "Csv";
    }
}
PKpG[XVE���Translate/Adapter/Gettext.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';

/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Gettext extends Zend_Translate_Adapter {
    // Internal variables
    private $_bigEndian   = false;
    private $_file        = false;
    private $_adapterInfo = array();

    /**
     * Generates the  adapter
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }

    /**
     * Read values from the MO file
     *
     * @param  string  $bytes
     */
    private function _readMOData($bytes)
    {
        if ($this->_bigEndian === false) {
            return unpack('V' . $bytes, fread($this->_file, 4 * $bytes));
        } else {
            return unpack('N' . $bytes, fread($this->_file, 4 * $bytes));
        }
    }

    /**
     * Load translation data (MO file reader)
     *
     * @param  string  $filename  MO file to add, full path must be given for access
     * @param  string  $locale    New Locale/Language to set, identical with locale identifier,
     *                            see Zend_Locale for more information
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $this->_bigEndian = false;
        $options = $options + $this->_options;

        if ($options['clear']  ||  !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }

        $this->_file = @fopen($filename, 'rb');
        if (!$this->_file) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Error opening translation file \'' . $filename . '\'.');
        }
        if (@filesize($filename) < 10) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('\'' . $filename . '\' is not a gettext file');
        }

        // get Endian
        $input = $this->_readMOData(1);
        if (strtolower(substr(dechex($input[1]), -8)) == "950412de") {
            $this->_bigEndian = false;
        } else if (strtolower(substr(dechex($input[1]), -8)) == "de120495") {
            $this->_bigEndian = true;
        } else {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('\'' . $filename . '\' is not a gettext file');
        }
        // read revision - not supported for now
        $input = $this->_readMOData(1);

        // number of bytes
        $input = $this->_readMOData(1);
        $total = $input[1];

        // number of original strings
        $input = $this->_readMOData(1);
        $OOffset = $input[1];

        // number of translation strings
        $input = $this->_readMOData(1);
        $TOffset = $input[1];

        // fill the original table
        fseek($this->_file, $OOffset);
        $origtemp = $this->_readMOData(2 * $total);
        fseek($this->_file, $TOffset);
        $transtemp = $this->_readMOData(2 * $total);

        for($count = 0; $count < $total; ++$count) {
            if ($origtemp[$count * 2 + 1] != 0) {
                fseek($this->_file, $origtemp[$count * 2 + 2]);
                $original = @fread($this->_file, $origtemp[$count * 2 + 1]);
            } else {
                $original = '';
            }

            if ($transtemp[$count * 2 + 1] != 0) {
                fseek($this->_file, $transtemp[$count * 2 + 2]);
                $this->_translate[$locale][$original] = fread($this->_file, $transtemp[$count * 2 + 1]);
            }
        }

        $this->_translate[$locale][''] = trim($this->_translate[$locale]['']);
        if (empty($this->_translate[$locale][''])) {
            $this->_adapterInfo[$filename] = 'No adapter information available';
        } else {
            $this->_adapterInfo[$filename] = $this->_translate[$locale][''];
        }

        unset($this->_translate[$locale]['']);
    }

    /**
     * Returns the adapter informations
     *
     * @return array Each loaded adapter information as array value
     */
    public function getAdapterInfo()
    {
        return $this->_adapterInfo;
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "Gettext";
    }
}
PKpG[7C�
�
Translate/Adapter/Ini.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';

/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Ini extends Zend_Translate_Adapter
{
    /**
     * Generates the adapter
     *
     * @param  array               $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }

    /**
     * Load translation data
     *
     * @param  string|array  $data
     * @param  string        $locale  Locale/Language to add data for, identical with locale identifier,
     *                                see Zend_Locale for more information
     * @param  array         $options OPTIONAL Options to use
     */
    protected function _loadTranslationData($data, $locale, array $options = array())
    {
        if (!file_exists($data)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception("Ini file '".$data."' not found");
        }
        $inidata = parse_ini_file($data, false);

        $options = array_merge($this->_options, $options);
        if (($options['clear'] == true) ||  !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }
        $this->_translate[$locale] = array_merge($this->_translate[$locale], $inidata);
    }

    /**
     * returns the adapters name
     *
     * @return string
     */
    public function toString()
    {
        return "Ini";
    }
}
PKpG[5�P��Translate/Adapter/Tbx.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Tbx extends Zend_Translate_Adapter {
    // Internal variables
    private $_file        = false;
    private $_cleared     = array();
    private $_langset     = null;
    private $_termentry   = null;
    private $_content     = null;
    private $_term        = null;

    /**
     * Generates the tbx adapter
     * This adapter reads with php's xml_parser
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }


    /**
     * Load translation data (TBX file reader)
     *
     * @param  string  $filename  TBX file to add, full path must be given for access
     * @param  string  $locale    Locale has no effect for TBX because TBX defines all languages within
     *                            the source file
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $options + $this->_options;

        if ($options['clear']) {
            $this->_translate = array();
        }

        if (!is_readable($filename)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
        }

        $encoding = $this->_findEncoding($filename);
        $this->_file = xml_parser_create($encoding);
        xml_set_object($this->_file, $this);
        xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
        xml_set_element_handler($this->_file, "_startElement", "_endElement");
        xml_set_character_data_handler($this->_file, "_contentElement");

        if (!xml_parse($this->_file, file_get_contents($filename))) {
            $ex = sprintf('XML error: %s at line %d',
                          xml_error_string(xml_get_error_code($this->_file)),
                          xml_get_current_line_number($this->_file));
            xml_parser_free($this->_file);
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception($ex);
        }
    }

    private function _startElement($file, $name, $attrib)
    {
        if ($this->_term !== null) {
            $this->_content .= "<".$name;
            foreach($attrib as $key => $value) {
                $this->_content .= " $key=\"$value\"";
            }
            $this->_content .= ">";
        } else {
            switch(strtolower($name)) {
                case 'termentry':
                    $this->_termentry = null;
                    break;
                case 'langset':
                    if (isset($attrib['xml:lang']) === true) {
                        $this->_langset = $attrib['xml:lang'];
                        if (isset($this->_translate[$this->_langset]) === false) {
                            $this->_translate[$this->_langset] = array();
                        }
                    }
                    break;
                case 'term':
                    $this->_term    = true;
                    $this->_content = null;
                    break;
                default:
                    break;
            }
        }
    }

    private function _endElement($file, $name)
    {
        if (($this->_term !== null) and ($name != "term")) {
            $this->_content .= "</".$name.">";
        } else {
            switch (strtolower($name)) {
                case 'langset':
                    $this->_langset = null;
                    break;
                case 'term':
                    $this->_term = null;
                    if (empty($this->_termentry)) {
                        $this->_termentry = $this->_content;
                    }
                    if (!empty($this->_content) or (isset($this->_translate[$this->_langset][$this->_termentry]) === false)) {
                        $this->_translate[$this->_langset][$this->_termentry] = $this->_content;
                    }
                    break;
                default:
                    break;
            }
        }
    }

    private function _contentElement($file, $data)
    {
        if ($this->_term !== null) {
            $this->_content .= $data;
        }
    }

    private function _findEncoding($filename)
    {
        $file = file_get_contents($filename, null, null, 0, 100);
        if (strpos($file, "encoding") !== false) {
            $encoding = substr($file, strpos($file, "encoding") + 9);
            $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1);
            return $encoding;
        }
        return 'UTF-8';
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "Tbx";
    }
}
PKpG[�W����Translate/Adapter/Xliff.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Xliff extends Zend_Translate_Adapter {
    // Internal variables
    private $_file        = false;
    private $_cleared     = array();
    private $_transunit   = null;
    private $_source      = null;
    private $_target      = null;
    private $_scontent    = null;
    private $_tcontent    = null;
    private $_stag        = false;
    private $_ttag        = false;

    /**
     * Generates the xliff adapter
     * This adapter reads with php's xml_parser
     *
     * @param  string              $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }


    /**
     * Load translation data (XLIFF file reader)
     *
     * @param  string  $locale    Locale/Language to add data for, identical with locale identifier,
     *                            see Zend_Locale for more information
     * @param  string  $filename  XLIFF file to add, full path must be given for access
     * @param  array   $option    OPTIONAL Options to use
     * @throws Zend_Translation_Exception
     */
    protected function _loadTranslationData($filename, $locale, array $options = array())
    {
        $options = $options + $this->_options;

        if ($options['clear']) {
            $this->_translate = array();
        }

        if (!is_readable($filename)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.');
        }

        $encoding      = $this->_findEncoding($filename);
        $this->_target = $locale;
        $this->_file   = xml_parser_create($encoding);
        xml_set_object($this->_file, $this);
        xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0);
        xml_set_element_handler($this->_file, "_startElement", "_endElement");
        xml_set_character_data_handler($this->_file, "_contentElement");

        if (!xml_parse($this->_file, file_get_contents($filename))) {
            $ex = sprintf('XML error: %s at line %d',
                          xml_error_string(xml_get_error_code($this->_file)),
                          xml_get_current_line_number($this->_file));
            xml_parser_free($this->_file);
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception($ex);
        }
    }

    private function _startElement($file, $name, $attrib)
    {
        if ($this->_stag === true) {
            $this->_scontent .= "<".$name;
            foreach($attrib as $key => $value) {
                $this->_scontent .= " $key=\"$value\"";
            }
            $this->_scontent .= ">";
        } else if ($this->_ttag === true) {
            $this->_tcontent .= "<".$name;
            foreach($attrib as $key => $value) {
                $this->_tcontent .= " $key=\"$value\"";
            }
            $this->_tcontent .= ">";
        } else {
            switch(strtolower($name)) {
                case 'file':
                    $this->_source = $attrib['source-language'];
                    if (isset($attrib['target-language'])) {
                        $this->_target = $attrib['target-language'];
                    }

                    $this->_translate[$this->_source] = array();
                    $this->_translate[$this->_target] = array();
                    break;
                case 'trans-unit':
                    $this->_transunit = true;
                    break;
                case 'source':
                    if ($this->_transunit === true) {
                        $this->_scontent = null;
                        $this->_stag = true;
                        $this->_ttag = false;
                    }
                    break;
                case 'target':
                    if ($this->_transunit === true) {
                        $this->_tcontent = null;
                        $this->_ttag = true;
                        $this->_stag = false;
                    }
                    break;
                default:
                    break;
            }
        }
    }

    private function _endElement($file, $name)
    {
        if (($this->_stag === true) and ($name !== 'source')) {
            $this->_scontent .= "</".$name.">";
        } else if (($this->_ttag === true) and ($name !== 'target')) {
            $this->_tcontent .= "</".$name.">";
        } else {
            switch (strtolower($name)) {
                case 'trans-unit':
                    $this->_transunit = null;
                    $this->_scontent = null;
                    $this->_tcontent = null;
                    break;
                case 'source':
                    if (!empty($this->_scontent) and !empty($this->_tcontent) or
                        (isset($this->_translate[$this->_source][$this->_scontent]) === false)) {
                        $this->_translate[$this->_source][$this->_scontent] = $this->_scontent;
                    }
                    $this->_stag = false;
                    break;
                case 'target':
                    if (!empty($this->_scontent) and !empty($this->_tcontent) or
                        (isset($this->_translate[$this->_source][$this->_scontent]) === false)) {
                        $this->_translate[$this->_target][$this->_scontent] = $this->_tcontent;
                    }
                    $this->_ttag = false;
                    break;
                default:
                    break;
            }
        }
    }

    private function _contentElement($file, $data)
    {
        if (($this->_transunit !== null) and ($this->_source !== null) and ($this->_stag === true)) {
            $this->_scontent .= $data;
        }

        if (($this->_transunit !== null) and ($this->_target !== null) and ($this->_ttag === true)) {
            $this->_tcontent .= $data;
        }
    }

    private function _findEncoding($filename)
    {
        $file = file_get_contents($filename, null, null, 0, 100);
        if (strpos($file, "encoding") !== false) {
            $encoding = substr($file, strpos($file, "encoding") + 9);
            $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1);
            return $encoding;
        }
        return 'UTF-8';
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    public function toString()
    {
        return "Xliff";
    }
}
PKpG[T%:;;Translate/Adapter/Array.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_Translate_Adapter */
require_once 'Zend/Translate/Adapter.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Adapter_Array extends Zend_Translate_Adapter {
    /**
     * Generates the adapter
     *
     * @param  array               $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL Locale/Language to set, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @param  array               $options  OPTIONAL Options to set
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        parent::__construct($data, $locale, $options);
    }

    /**
     * Load translation data
     *
     * @param  string|array  $data
     * @param  string        $locale  Locale/Language to add data for, identical with locale identifier,
     *                                see Zend_Locale for more information
     * @param  array         $options OPTIONAL Options to use
     */
    protected function _loadTranslationData($data, $locale, array $options = array())
    {
        if (!is_array($data)) {
            if (file_exists($data)) {
                ob_start();
                $data = include($data);
                ob_end_clean();
            }
        }
        if (!is_array($data)) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception("Error including array or file '".$data."'");
        }

        $options = $options + $this->_options;
        if (($options['clear'] == true) ||  !isset($this->_translate[$locale])) {
            $this->_translate[$locale] = array();
        }

        $this->_translate[$locale] = $data + $this->_translate[$locale];
    }

    /**
     * returns the adapters name
     *
     * @return string
     */
    public function toString()
    {
        return "Array";
    }
}
PKpG[;�j�*X*XTranslate/Adapter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @subpackage Zend_Translate_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 */

/**
 * @see Zend_Locale
 */
require_once 'Zend/Locale.php';

/**
 * Basic adapter class for each translation source adapter
 *
 * @category   Zend
 * @package    Zend_Translate
 * @subpackage Zend_Translate_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Translate_Adapter {
    /**
     * Shows if locale detection is in automatic level
     * @var boolean
     */
    private $_automatic = true;

    /**
     * Internal cache for all adapters
     * @var Zend_Cache_Core
     */
    protected static $_cache     = null;

    /**
     * Scans for the locale within the name of the directory
     * @constant integer
     */
    const LOCALE_DIRECTORY = 'directory';

    /**
     * Scans for the locale within the name of the file
     * @constant integer
     */
    const LOCALE_FILENAME  = 'filename';

    /**
     * Array with all options, each adapter can have own additional options
     *       'clear'  => clears already loaded data when adding new files
     *       'scan'   => searches for translation files using the LOCALE constants
     *       'locale' => the actual set locale to use
     * @var array
     */
    protected $_options = array(
        'clear'          => false,
        'scan'           => null,
        'locale'         => 'auto',
        'ignore'         => '.',
        'disableNotices' => false,
    );

    /**
     * Translation table
     * @var array
     */
    protected $_translate = array();

    /**
     * Generates the adapter
     *
     * @param  string|array       $data    Translation data or filename for this adapter
     * @param  string|Zend_Locale $locale  (optional) Locale/Language to set, identical with Locale
     *                                     identifiers see Zend_Locale for more information
     * @param  array              $options (optional) Options for the adaptor
     * @throws Zend_Translate_Exception
     * @return void
     */
    public function __construct($data, $locale = null, array $options = array())
    {
        if (isset(self::$_cache)) {
            $id = 'Zend_Translate_' . $this->toString() . '_Options';
            $result = self::$_cache->load($id);
            if ($result) {
                $this->_options   = unserialize($result);
            }
        }

        if (($locale === "auto") or ($locale === null)) {
            $this->_automatic = true;
        } else {
            $this->_automatic = false;
        }

        $this->addTranslation($data, $locale, $options);
        $this->setLocale($locale);
    }

    /**
     * Add translation data
     *
     * It may be a new language or additional data for existing language
     * If $clear parameter is true, then translation data for specified
     * language is replaced and added otherwise
     *
     * @param  array|string       $data    Translation data
     * @param  string|Zend_Locale $locale  (optional) Locale/Language to add data for, identical
     *                                        with locale identifier, see Zend_Locale for more information
     * @param  array              $options (optional) Option for this Adapter
     * @throws Zend_Translate_Exception
     * @return Zend_Translate_Adapter Provides fluent interface
     */
    public function addTranslation($data, $locale = null, array $options = array())
    {
        $locale    = $this->_getRegistryLocale($locale);
        $originate = (string) $locale;

        $this->setOptions($options);
        if (is_string($data) and is_dir($data)) {
            $data = realpath($data);
            $prev = '';
            foreach (new RecursiveIteratorIterator(
                     new RecursiveDirectoryIterator($data, RecursiveDirectoryIterator::KEY_AS_PATHNAME),
                     RecursiveIteratorIterator::SELF_FIRST) as $directory => $info) {
                $file = $info->getFilename();
                if (strpos($directory, DIRECTORY_SEPARATOR . $this->_options['ignore']) !== false) {
                    // ignore files matching first characters from option 'ignore' and all files below
                    continue;
                }

                if ($info->isDir()) {
                    // pathname as locale
                    if (($this->_options['scan'] === self::LOCALE_DIRECTORY) and (Zend_Locale::isLocale($file, true, false))) {
                        if (strlen($prev) <= strlen($file)) {
                            $locale = $file;
                            $prev   = (string) $locale;
                        }
                    }
                } else if ($info->isFile()) {
                    // filename as locale
                    if ($this->_options['scan'] === self::LOCALE_FILENAME) {
                        $filename = explode('.', $file);
                        array_pop($filename);
                        $filename = implode('.', $filename);
                        if (Zend_Locale::isLocale((string) $filename, true, false)) {
                            $locale = (string) $filename;
                        } else {
                            $parts  = explode('.', $file);
                            $parts2 = array();
                            foreach($parts as $token) {
                                $parts2 += explode('_', $token);
                            }
                            $parts  = array_merge($parts, $parts2);
                            $parts2 = array();
                            foreach($parts as $token) {
                                $parts2 += explode('-', $token);
                            }
                            $parts = array_merge($parts, $parts2);
                            $parts = array_unique($parts);
                            $prev  = '';
                            foreach($parts as $token) {
                                if (Zend_Locale::isLocale($token, true, false)) {
                                    if (strlen($prev) <= strlen($token)) {
                                        $locale = $token;
                                        $prev   = $token;
                                    }
                                }
                            }
                        }
                    }
                    try {
                        $this->_addTranslationData($info->getPathname(), (string) $locale, $this->_options);
                        if ((isset($this->_translate[(string) $locale]) === true) and (count($this->_translate[(string) $locale]) > 0)) {
                            $this->setLocale($locale);
                        }
                    } catch (Zend_Translate_Exception $e) {
                        // ignore failed sources while scanning
                    }
                }
            }
        } else {
            $this->_addTranslationData($data, (string) $locale, $this->_options);
            if ((isset($this->_translate[(string) $locale]) === true) and (count($this->_translate[(string) $locale]) > 0)) {
                $this->setLocale($locale);
            }
        }

        if ((isset($this->_translate[$originate]) === true) and (count($this->_translate[$originate]) > 0)) {
            $this->setLocale($originate);
        }

        return $this;
    }

    /**
     * Sets new adapter options
     *
     * @param  array $options Adapter options
     * @throws Zend_Translate_Exception
     * @return Zend_Translate_Adapter Provides fluent interface
     */
    public function setOptions(array $options = array())
    {
        $change = false;
        foreach ($options as $key => $option) {
            if ($key == "locale") {
                $this->setLocale($option);
            } else if ((isset($this->_options[$key]) and ($this->_options[$key] != $option)) or
                    !isset($this->_options[$key])) {
                $this->_options[$key] = $option;
                $change = true;
            }
        }

        if (isset(self::$_cache) and ($change == true)) {
            $id = 'Zend_Translate_' . $this->toString() . '_Options';
            self::$_cache->save( serialize($this->_options), $id);
        }

        return $this;
    }

    /**
     * Returns the adapters name and it's options
     *
     * @param  string|null $optionKey String returns this option
     *                                null returns all options
     * @return integer|string|array|null
     */
    public function getOptions($optionKey = null)
    {
        if ($optionKey === null) {
            return $this->_options;
        }

        if (isset($this->_options[$optionKey]) === true) {
            return $this->_options[$optionKey];
        }

        return null;
    }

    /**
     * Gets locale
     *
     * @return Zend_Locale|string|null
     */
    public function getLocale()
    {
        return $this->_options['locale'];
    }

    /**
     * Sets locale
     *
     * @param  string|Zend_Locale $locale Locale to set
     * @throws Zend_Translate_Exception
     * @return Zend_Translate_Adapter Provides fluent interface
     */
    public function setLocale($locale)
    {
        $locale = $this->_getRegistryLocale($locale);
        if (($locale === "auto") or ($locale === null)) {
            $this->_automatic = true;
        } else {
            $this->_automatic = false;
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                /**
                 * @see Zend_Translate_Exception
                 */
                require_once 'Zend/Translate/Exception.php';
                throw new Zend_Translate_Exception("The given Language ({$locale }) does not exist");
            }

            $locale = new Zend_Locale($locale);
        }

        $locale = (string) $locale;
        if (!isset($this->_translate[$locale])) {
            $temp = explode('_', $locale);
            if (!isset($this->_translate[$temp[0]]) and !isset($this->_translate[$locale])) {
                // Should we suppress notices ?
                if ($this->_options['disableNotices'] === false) {
                    // throwing a notice due to possible problems on locale setting
                    trigger_error("The language '{$locale}' has to be added before it can be used.", E_USER_NOTICE);
                }
            }

            $locale = $temp[0];
        }

        if (empty($this->_translate[$locale])) {
            // Should we suppress notices ?
            if ($this->_options['disableNotices'] === false) {
                // throwing a notice due to possible problems on locale setting
                trigger_error("No translation for the language '{$locale}' available.", E_USER_NOTICE);
            }
        }

        if ($this->_options['locale'] != $locale) {
            $this->_options['locale'] = $locale;

            if (isset(self::$_cache)) {
                $id = 'Zend_Translate_' . $this->toString() . '_Options';
                self::$_cache->save( serialize($this->_options), $id);
            }
        }

        return $this;
    }

    /**
     * Returns the available languages from this adapter
     *
     * @return array
     */
    public function getList()
    {
        $list = array_keys($this->_translate);
        $result = null;
        foreach($list as $value) {
            if (!empty($this->_translate[$value])) {
                $result[$value] = $value;
            }
        }
        return $result;
    }

    /**
     * Returns all available message ids from this adapter
     * If no locale is given, the actual language will be used
     *
     * @param  string|Zend_Locale $locale (optional) Language to return the message ids from
     * @return array
     */
    public function getMessageIds($locale = null)
    {
        if (empty($locale) or !$this->isAvailable($locale)) {
            $locale = $this->_options['locale'];
        }

        return array_keys($this->_translate[(string) $locale]);
    }

    /**
     * Returns all available translations from this adapter
     * If no locale is given, the actual language will be used
     * If 'all' is given the complete translation dictionary will be returned
     *
     * @param  string|Zend_Locale $locale (optional) Language to return the messages from
     * @return array
     */
    public function getMessages($locale = null)
    {
        if ($locale === 'all') {
            return $this->_translate;
        }

        if ((empty($locale) === true) or ($this->isAvailable($locale) === false)) {
            $locale = $this->_options['locale'];
        }

        return $this->_translate[(string) $locale];
    }

    /**
     * Is the wished language available ?
     *
     * @see    Zend_Locale
     * @param  string|Zend_Locale $locale Language to search for, identical with locale identifier,
     *                                    @see Zend_Locale for more information
     * @return boolean
     */
    public function isAvailable($locale)
    {
        $return = isset($this->_translate[(string) $locale]);
        return $return;
    }

    /**
     * Load translation data
     *
     * @param  mixed              $data
     * @param  string|Zend_Locale $locale
     * @param  array              $options (optional)
     * @return void
     */
    abstract protected function _loadTranslationData($data, $locale, array $options = array());

    /**
     * Internal function for adding translation data
     *
     * It may be a new language or additional data for existing language
     * If $clear parameter is true, then translation data for specified
     * language is replaced and added otherwise
     *
     * @see    Zend_Locale
     * @param  array|string       $data    Translation data
     * @param  string|Zend_Locale $locale  Locale/Language to add data for, identical with locale identifier,
     *                                     @see Zend_Locale for more information
     * @param  array              $options (optional) Option for this Adapter
     * @throws Zend_Translate_Exception
     * @return Zend_Translate_Adapter Provides fluent interface
     */
    private function _addTranslationData($data, $locale, array $options = array())
    {
        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                /**
                 * @see Zend_Translate_Exception
                 */
                require_once 'Zend/Translate/Exception.php';
                throw new Zend_Translate_Exception("The given Language ({$locale}) does not exist");
            }
            $locale = new Zend_Locale($locale);
        }

        $locale = (string) $locale;
        if (isset($this->_translate[$locale]) === false) {
            $this->_translate[$locale] = array();
        }

        $read = true;
        if (isset(self::$_cache)) {
            $id = 'Zend_Translate_' . preg_replace('/[^a-zA-Z0-9_]/', '_', $data) . '_' . $locale . '_' . $this->toString();
            $result = self::$_cache->load($id);
            if ($result) {
                $this->_translate[$locale] = unserialize($result);
                $read = false;
            }
        }

        if ($read) {
            $this->_loadTranslationData($data, $locale, $options);
        }

        if ($this->_automatic === true) {
            $find = new Zend_Locale($locale);
            $browser = $find->getEnvironment() + $find->getBrowser();
            arsort($browser);
            foreach($browser as $language => $quality) {
                if (isset($this->_translate[$language]) === true) {
                    $this->_options['locale'] = $language;
                    break;
                }
            }
        }

        if (($read) and (isset(self::$_cache))) {
            $id = 'Zend_Translate_' . preg_replace('/[^a-zA-Z0-9_]/', '_', $data) . '_' . $locale . '_' . $this->toString();
            self::$_cache->save( serialize($this->_translate[$locale]), $id);
        }

        return $this;
    }

    /**
     * Translates the given string
     * returns the translation
     *
     * @see Zend_Locale
     * @param  string             $messageId Translation string
     * @param  string|Zend_Locale $locale    (optional) Locale/Language to use, identical with
     *                                       locale identifier, @see Zend_Locale for more information
     * @return string
     */
    public function translate($messageId, $locale = null)
    {
        if ($locale === null) {
            $locale = $this->_options['locale'];
        }
        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                // language does not exist, return original string
                return $messageId;
            }
            $locale = new Zend_Locale($locale);
        }

        $locale = (string) $locale;
        if (isset($this->_translate[$locale][$messageId]) === true) {
            // return original translation
            return $this->_translate[$locale][$messageId];
        } else if (strlen($locale) != 2) {
            // faster than creating a new locale and separate the leading part
            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));

            if (isset($this->_translate[$locale][$messageId]) === true) {
                // return regionless translation (en_US -> en)
                return $this->_translate[$locale][$messageId];
            }
        }

        // no translation found, return original
        return $messageId;
    }

    /**
     * Translates the given string
     * returns the translation
     *
     * @param  string             $messageId Translation string
     * @param  string|Zend_Locale $locale    (optional) Locale/Language to use, identical with locale
     *                                       identifier, @see Zend_Locale for more information
     * @return string
     */
    public function _($messageId, $locale = null)
    {
        return $this->translate($messageId, $locale);
    }

    /**
     * Checks if a string is translated within the source or not
     * returns boolean
     *
     * @param  string             $messageId Translation string
     * @param  boolean            $original  (optional) Allow translation only for original language
     *                                       when true, a translation for 'en_US' would give false when it can
     *                                       be translated with 'en' only
     * @param  string|Zend_Locale $locale    (optional) Locale/Language to use, identical with locale identifier,
     *                                       see Zend_Locale for more information
     * @return boolean
     */
    public function isTranslated($messageId, $original = false, $locale = null)
    {
        if (($original !== false) and ($original !== true)) {
            $locale = $original;
            $original = false;
        }

        if ($locale === null) {
            $locale = $this->_options['locale'];
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                // language does not exist, return original string
                return false;
            }

            $locale = new Zend_Locale();
        }

        $locale = (string) $locale;
        if (isset($this->_translate[$locale][$messageId]) === true) {
            // return original translation
            return true;
        } else if ((strlen($locale) != 2) and ($original === false)) {
            // faster than creating a new locale and separate the leading part
            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));

            if (isset($this->_translate[$locale][$messageId]) === true) {
                // return regionless translation (en_US -> en)
                return true;
            }
        }

        // No translation found, return original
        return false;
    }

    /**
     * Returns the set cache
     *
     * @return Zend_Cache_Core The set cache
     */
    public static function getCache()
    {
        return self::$_cache;
    }

    /**
     * Sets a cache for all Zend_Translate_Adapters
     *
     * @param Zend_Cache_Core $cache Cache to store to
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        self::$_cache = $cache;
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        if (self::$_cache !== null) {
            return true;
        }

        return false;
    }

    /**
     * Removes any set cache
     *
     * @return void
     */
    public static function removeCache()
    {
        self::$_cache = null;
    }

    /**
     * Clears all set cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        self::$_cache->clean();
    }

    /**
     * Evaluates the locale from registry or auto
     *
     * @param  string|Zend_Locale $locale
     * @return string
     */
    private function _getRegistryLocale($locale)
    {
        if (empty($locale)) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Locale') === true) {
                $locale = Zend_Registry::get('Zend_Locale');
            }
        }

        if ($locale === null) {
            $locale = new Zend_Locale();
        }

        return $locale;
    }

    /**
     * Returns the adapter name
     *
     * @return string
     */
    abstract public function toString();
}PKpG[C�OIITranslate/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 1653 2006-11-16 19:53:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate_Exception extends Zend_Exception
{
}
PKpG[;�хY�YUri/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Http.php 12041 2008-10-20 22:13:01Z shahar $
 */

/**
 * @see Zend_Uri
 */
require_once 'Zend/Uri.php';

/**
 * @see Zend_Validate_Hostname
 */
require_once 'Zend/Validate/Hostname.php';

/**
 * HTTP(S) URI handler
 *
 * @category  Zend
 * @package   Zend_Uri
 * @uses      Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Uri_Http extends Zend_Uri
{
    /**
     * Character classes for validation regular expressions
     */
    const CHAR_ALNUM    = 'A-Za-z0-9';
    const CHAR_MARK     = '-_.!~*\'()\[\]';
    const CHAR_RESERVED = ';\/?:@&=+$,';
    const CHAR_SEGMENT  = ':@&=+$,;';
    const CHAR_UNWISE   = '{}|\\\\^`';
    
    /**
     * HTTP username
     *
     * @var string
     */
    protected $_username = '';

    /**
     * HTTP password
     *
     * @var string
     */
    protected $_password = '';

    /**
     * HTTP host
     *
     * @var string
     */
    protected $_host = '';

    /**
     * HTTP post
     *
     * @var string
     */
    protected $_port = '';

    /**
     * HTTP part
     *
     * @var string
     */
    protected $_path = '';

    /**
     * HTTP query
     *
     * @var string
     */
    protected $_query = '';

    /**
     * HTTP fragment
     *
     * @var string
     */
    protected $_fragment = '';

    /**
     * Regular expression grammar rules for validation; values added by constructor
     *
     * @var array
     */
    protected $_regex = array();
    
    /**
     * Constructor accepts a string $scheme (e.g., http, https) and a scheme-specific part of the URI
     * (e.g., example.com/path/to/resource?query=param#fragment)
     *
     * @param  string $scheme         The scheme of the URI
     * @param  string $schemeSpecific The scheme-specific part of the URI
     * @throws Zend_Uri_Exception When the URI is not valid
     */
    protected function __construct($scheme, $schemeSpecific = '')
    {
        // Set the scheme
        $this->_scheme = $scheme;

        // Set up grammar rules for validation via regular expressions. These
        // are to be used with slash-delimited regular expression strings.
        
        // Escaped special characters (eg. '%25' for '%') 
        $this->_regex['escaped']    = '%[[:xdigit:]]{2}';
        
        // Unreserved characters
        $this->_regex['unreserved'] = '[' . self::CHAR_ALNUM . self::CHAR_MARK . ']';
        
        // Segment can use escaped, unreserved or a set of additional chars
        $this->_regex['segment']    = '(?:' . $this->_regex['escaped'] . '|[' .
            self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_SEGMENT . '])*';
        
        // Path can be a series of segmets char strings seperated by '/'
        $this->_regex['path']       = '(?:\/(?:' . $this->_regex['segment'] . ')?)+';
        
        // URI characters can be escaped, alphanumeric, mark or reserved chars
        $this->_regex['uric']       = '(?:' . $this->_regex['escaped'] . '|[' .  
            self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_RESERVED . 
            
        // If unwise chars are allowed, add them to the URI chars class
            (self::$_config['allow_unwise'] ? self::CHAR_UNWISE : '') . '])';
                                    
        // If no scheme-specific part was supplied, the user intends to create
        // a new URI with this object.  No further parsing is required.
        if (strlen($schemeSpecific) === 0) {
            return;
        }

        // Parse the scheme-specific URI parts into the instance variables.
        $this->_parseUri($schemeSpecific);

        // Validate the URI
        if ($this->valid() === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Invalid URI supplied');
        }
    }

    /**
     * Creates a Zend_Uri_Http from the given string
     *
     * @param  string $uri String to create URI from, must start with
     *                     'http://' or 'https://'
     * @throws InvalidArgumentException  When the given $uri is not a string or
     *                                   does not start with http:// or https://
     * @throws Zend_Uri_Exception        When the given $uri is invalid
     * @return Zend_Uri_Http
     */
    public static function fromString($uri)
    {
        if (is_string($uri) === false) {
            throw new InvalidArgumentException('$uri is not a string');
        }

        $uri            = explode(':', $uri, 2);
        $scheme         = strtolower($uri[0]);
        $schemeSpecific = isset($uri[1]) === true ? $uri[1] : '';

        if (in_array($scheme, array('http', 'https')) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Invalid scheme: '$scheme'");
        }

        $schemeHandler = new Zend_Uri_Http($scheme, $schemeSpecific);
        return $schemeHandler;
    }

    /**
     * Parse the scheme-specific portion of the URI and place its parts into instance variables.
     *
     * @param  string $schemeSpecific The scheme-specific portion to parse
     * @throws Zend_Uri_Exception When scheme-specific decoposition fails
     * @throws Zend_Uri_Exception When authority decomposition fails
     * @return void
     */
    protected function _parseUri($schemeSpecific)
    {
        // High-level decomposition parser
        $pattern = '~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~';
        $status  = @preg_match($pattern, $schemeSpecific, $matches);
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: scheme-specific decomposition failed');
        }

        // Failed decomposition; no further processing needed
        if ($status === false) {
            return;
        }

        // Save URI components that need no further decomposition
        $this->_path     = isset($matches[4]) === true ? $matches[4] : '';
        $this->_query    = isset($matches[6]) === true ? $matches[6] : '';
        $this->_fragment = isset($matches[8]) === true ? $matches[8] : '';

        // Additional decomposition to get username, password, host, and port
        $combo   = isset($matches[3]) === true ? $matches[3] : '';
        $pattern = '~^(([^:@]*)(:([^@]*))?@)?([^:]+)(:(.*))?$~';
        $status  = @preg_match($pattern, $combo, $matches);
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: authority decomposition failed');
        }

        // Failed decomposition; no further processing needed
        if ($status === false) {
            return;
        }

        // Save remaining URI components
        $this->_username = isset($matches[2]) === true ? $matches[2] : '';
        $this->_password = isset($matches[4]) === true ? $matches[4] : '';
        $this->_host     = isset($matches[5]) === true ? $matches[5] : '';
        $this->_port     = isset($matches[7]) === true ? $matches[7] : '';

    }

    /**
     * Returns a URI based on current values of the instance variables. If any
     * part of the URI does not pass validation, then an exception is thrown.
     *
     * @throws Zend_Uri_Exception When one or more parts of the URI are invalid
     * @return string
     */
    public function getUri()
    {
        if ($this->valid() === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('One or more parts of the URI are invalid');
        }

        $password = strlen($this->_password) > 0 ? ":$this->_password" : '';
        $auth     = strlen($this->_username) > 0 ? "$this->_username$password@" : '';
        $port     = strlen($this->_port) > 0 ? ":$this->_port" : '';
        $query    = strlen($this->_query) > 0 ? "?$this->_query" : '';
        $fragment = strlen($this->_fragment) > 0 ? "#$this->_fragment" : '';

        return $this->_scheme
             . '://'
             . $auth
             . $this->_host
             . $port
             . $this->_path
             . $query
             . $fragment;
    }

    /**
     * Validate the current URI from the instance variables. Returns true if and only if all
     * parts pass validation.
     *
     * @return boolean
     */
    public function valid()
    {
        // Return true if and only if all parts of the URI have passed validation
        return $this->validateUsername()
           and $this->validatePassword()
           and $this->validateHost()
           and $this->validatePort()
           and $this->validatePath()
           and $this->validateQuery()
           and $this->validateFragment();
    }

    /**
     * Returns the username portion of the URL, or FALSE if none.
     *
     * @return string
     */
    public function getUsername()
    {
        return strlen($this->_username) > 0 ? $this->_username : false;
    }

    /**
     * Returns true if and only if the username passes validation. If no username is passed,
     * then the username contained in the instance variable is used.
     *
     * @param  string $username The HTTP username
     * @throws Zend_Uri_Exception When username validation fails
     * @return boolean
     * @link   http://www.faqs.org/rfcs/rfc2396.html
     */
    public function validateUsername($username = null)
    {
        if ($username === null) {
            $username = $this->_username;
        }

        // If the username is empty, then it is considered valid
        if (strlen($username) === 0) {
            return true;
        }

        // Check the username against the allowed values
        $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' .
            self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $username);
                            
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: username validation failed');
        }

        return $status === 1;
    }

    /**
     * Sets the username for the current URI, and returns the old username
     *
     * @param  string $username The HTTP username
     * @throws Zend_Uri_Exception When $username is not a valid HTTP username
     * @return string
     */
    public function setUsername($username)
    {
        if ($this->validateUsername($username) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Username \"$username\" is not a valid HTTP username");
        }

        $oldUsername     = $this->_username;
        $this->_username = $username;

        return $oldUsername;
    }

    /**
     * Returns the password portion of the URL, or FALSE if none.
     *
     * @return string
     */
    public function getPassword()
    {
        return strlen($this->_password) > 0 ? $this->_password : false;
    }

    /**
     * Returns true if and only if the password passes validation. If no password is passed,
     * then the password contained in the instance variable is used.
     *
     * @param  string $password The HTTP password
     * @throws Zend_Uri_Exception When password validation fails
     * @return boolean
     * @link   http://www.faqs.org/rfcs/rfc2396.html
     */
    public function validatePassword($password = null)
    {
        if ($password === null) {
            $password = $this->_password;
        }

        // If the password is empty, then it is considered valid
        if (strlen($password) === 0) {
            return true;
        }

        // If the password is nonempty, but there is no username, then it is considered invalid
        if (strlen($password) > 0 and strlen($this->_username) === 0) {
            return false;
        }

        // Check the password against the allowed values
        $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' .
            self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $password);
            
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: password validation failed.');
        }

        return $status == 1;
    }

    /**
     * Sets the password for the current URI, and returns the old password
     *
     * @param  string $password The HTTP password
     * @throws Zend_Uri_Exception When $password is not a valid HTTP password
     * @return string
     */
    public function setPassword($password)
    {
        if ($this->validatePassword($password) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Password \"$password\" is not a valid HTTP password.");
        }

        $oldPassword     = $this->_password;
        $this->_password = $password;

        return $oldPassword;
    }

    /**
     * Returns the domain or host IP portion of the URL, or FALSE if none.
     *
     * @return string
     */
    public function getHost()
    {
        return strlen($this->_host) > 0 ? $this->_host : false;
    }

    /**
     * Returns true if and only if the host string passes validation. If no host is passed,
     * then the host contained in the instance variable is used.
     *
     * @param  string $host The HTTP host
     * @return boolean
     * @uses   Zend_Filter
     */
    public function validateHost($host = null)
    {
        if ($host === null) {
            $host = $this->_host;
        }

        // If the host is empty, then it is considered invalid
        if (strlen($host) === 0) {
            return false;
        }

        // Check the host against the allowed values; delegated to Zend_Filter.
        $validate = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL);

        return $validate->isValid($host);
    }

    /**
     * Sets the host for the current URI, and returns the old host
     *
     * @param  string $host The HTTP host
     * @throws Zend_Uri_Exception When $host is nota valid HTTP host
     * @return string
     */
    public function setHost($host)
    {
        if ($this->validateHost($host) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Host \"$host\" is not a valid HTTP host");
        }

        $oldHost     = $this->_host;
        $this->_host = $host;

        return $oldHost;
    }

    /**
     * Returns the TCP port, or FALSE if none.
     *
     * @return string
     */
    public function getPort()
    {
        return strlen($this->_port) > 0 ? $this->_port : false;
    }

    /**
     * Returns true if and only if the TCP port string passes validation. If no port is passed,
     * then the port contained in the instance variable is used.
     *
     * @param  string $port The HTTP port
     * @return boolean
     */
    public function validatePort($port = null)
    {
        if ($port === null) {
            $port = $this->_port;
        }

        // If the port is empty, then it is considered valid
        if (strlen($port) === 0) {
            return true;
        }

        // Check the port against the allowed values
        return ctype_digit((string) $port) and 1 <= $port and $port <= 65535;
    }

    /**
     * Sets the port for the current URI, and returns the old port
     *
     * @param  string $port The HTTP port
     * @throws Zend_Uri_Exception When $port is not a valid HTTP port
     * @return string
     */
    public function setPort($port)
    {
        if ($this->validatePort($port) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Port \"$port\" is not a valid HTTP port.");
        }

        $oldPort     = $this->_port;
        $this->_port = $port;

        return $oldPort;
    }

    /**
     * Returns the path and filename portion of the URL, or FALSE if none.
     *
     * @return string
     */
    public function getPath()
    {
        return strlen($this->_path) > 0 ? $this->_path : '/';
    }

    /**
     * Returns true if and only if the path string passes validation. If no path is passed,
     * then the path contained in the instance variable is used.
     *
     * @param  string $path The HTTP path
     * @throws Zend_Uri_Exception When path validation fails
     * @return boolean
     */
    public function validatePath($path = null)
    {
        if ($path === null) {
            $path = $this->_path;
        }

        // If the path is empty, then it is considered valid
        if (strlen($path) === 0) {
            return true;
        }

        // Determine whether the path is well-formed
        $pattern = '/^' . $this->_regex['path'] . '$/';
        $status  = @preg_match($pattern, $path);
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: path validation failed');
        }

        return (boolean) $status;
    }

    /**
     * Sets the path for the current URI, and returns the old path
     *
     * @param  string $path The HTTP path
     * @throws Zend_Uri_Exception When $path is not a valid HTTP path
     * @return string
     */
    public function setPath($path)
    {
        if ($this->validatePath($path) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Path \"$path\" is not a valid HTTP path");
        }

        $oldPath     = $this->_path;
        $this->_path = $path;

        return $oldPath;
    }

    /**
     * Returns the query portion of the URL (after ?), or FALSE if none.
     *
     * @return string
     */
    public function getQuery()
    {
        return strlen($this->_query) > 0 ? $this->_query : false;
    }

    /**
     * Returns true if and only if the query string passes validation. If no query is passed,
     * then the query string contained in the instance variable is used.
     *
     * @param  string $query The query to validate
     * @throws Zend_Uri_Exception When query validation fails
     * @return boolean
     * @link   http://www.faqs.org/rfcs/rfc2396.html
     */
    public function validateQuery($query = null)
    {
        if ($query === null) {
            $query = $this->_query;
        }

        // If query is empty, it is considered to be valid
        if (strlen($query) === 0) {
            return true;
        }

        // Determine whether the query is well-formed
        $pattern = '/^' . $this->_regex['uric'] . '*$/';
        $status  = @preg_match($pattern, $query);
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: query validation failed');
        }

        return $status == 1;
    }

    /**
     * Set the query string for the current URI, and return the old query
     * string This method accepts both strings and arrays.
     *
     * @param  string|array $query The query string or array
     * @throws Zend_Uri_Exception When $query is not a valid query string
     * @return string              Old query string
     */
    public function setQuery($query)
    {
        $oldQuery = $this->_query;

        // If query is empty, set an empty string
        if (empty($query) === true) {
            $this->_query = '';
            return $oldQuery;
        }

        // If query is an array, make a string out of it
        if (is_array($query) === true) {
            $query = http_build_query($query, '', '&');
        } else {
            // If it is a string, make sure it is valid. If not parse and encode it
            $query = (string) $query;
            if ($this->validateQuery($query) === false) {
                parse_str($query, $queryArray);
                $query = http_build_query($queryArray, '', '&');
            }
        }

        // Make sure the query is valid, and set it
        if ($this->validateQuery($query) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("'$query' is not a valid query string");
        }

        $this->_query = $query;

        return $oldQuery;
    }

    /**
     * Returns the fragment portion of the URL (after #), or FALSE if none.
     *
     * @return string|false
     */
    public function getFragment()
    {
        return strlen($this->_fragment) > 0 ? $this->_fragment : false;
    }

    /**
     * Returns true if and only if the fragment passes validation. If no fragment is passed,
     * then the fragment contained in the instance variable is used.
     *
     * @param  string $fragment Fragment of an URI
     * @throws Zend_Uri_Exception When fragment validation fails
     * @return boolean
     * @link   http://www.faqs.org/rfcs/rfc2396.html
     */
    public function validateFragment($fragment = null)
    {
        if ($fragment === null) {
            $fragment = $this->_fragment;
        }

        // If fragment is empty, it is considered to be valid
        if (strlen($fragment) === 0) {
            return true;
        }

        // Determine whether the fragment is well-formed
        $pattern = '/^' . $this->_regex['uric'] . '*$/';
        $status  = @preg_match($pattern, $fragment);
        if ($status === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception('Internal error: fragment validation failed');
        }

        return (boolean) $status;
    }

    /**
     * Sets the fragment for the current URI, and returns the old fragment
     *
     * @param  string $fragment Fragment of the current URI
     * @throws Zend_Uri_Exception When $fragment is not a valid HTTP fragment
     * @return string
     */
    public function setFragment($fragment)
    {
        if ($this->validateFragment($fragment) === false) {
            require_once 'Zend/Uri/Exception.php';
            throw new Zend_Uri_Exception("Fragment \"$fragment\" is not a valid HTTP fragment");
        }

        $oldFragment     = $this->_fragment;
        $this->_fragment = $fragment;

        return $oldFragment;
    }
}
PKpG[�9((PPUri/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 9656 2008-06-10 16:21:13Z dasprid $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exceptions for Zend_Uri
 *
 * @category  Zend
 * @package   Zend_Uri
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Uri_Exception extends Zend_Exception
{
}
PKpG[bض��Layout/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Layout
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Exception */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Layout
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Layout_Exception extends Zend_Exception
{}

PKpG[��Ը�#Layout/Controller/Plugin/Layout.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';

/**
 * Render layouts
 *
 * @uses       Zend_Controller_Plugin_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Layout.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Layout_Controller_Plugin_Layout extends Zend_Controller_Plugin_Abstract
{
    protected $_layoutActionHelper = null;
    
    /**
     * @var Zend_Layout
     */
    protected $_layout;

    /**
     * Constructor
     * 
     * @param  Zend_Layout $layout 
     * @return void
     */
    public function __construct(Zend_Layout $layout = null)
    {
        if (null !== $layout) {
            $this->setLayout($layout);
        }
    }

    /**
     * Retrieve layout object
     *
     * @return Zend_Layout
     */
    public function getLayout()
    {
        return $this->_layout;
    }

    /**
     * Set layout object
     *
     * @param  Zend_Layout $layout
     * @return Zend_Layout_Controller_Plugin_Layout
     */
    public function setLayout(Zend_Layout $layout)
    {
        $this->_layout = $layout;
        return $this;
    }

    /**
     * Set layout action helper
     * 
     * @param  Zend_Layout_Controller_Action_Helper_Layout $layoutActionHelper 
     * @return Zend_Layout_Controller_Plugin_Layout
     */
    public function setLayoutActionHelper(Zend_Layout_Controller_Action_Helper_Layout $layoutActionHelper)
    {
        $this->_layoutActionHelper = $layoutActionHelper;
        return $this;
    }

    /**
     * Retrieve layout action helper
     * 
     * @return Zend_Layout_Controller_Action_Helper_Layout
     */
    public function getLayoutActionHelper()
    {
        return $this->_layoutActionHelper;
    }
    
    /**
     * postDispatch() plugin hook -- render layout
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        $layout = $this->getLayout();
        $helper = $this->getLayoutActionHelper();

        // Return early if forward detected
        if (!$request->isDispatched() 
            || ($layout->getMvcSuccessfulActionOnly() 
                && (!empty($helper) && !$helper->isActionControllerSuccessful()))) 
        {
            return;
        }

        // Return early if layout has been disabled
        if (!$layout->isEnabled()) {
            return;
        }

        $response   = $this->getResponse();
        $content    = $response->getBody(true);
        $contentKey = $layout->getContentKey();

        if (isset($content['default'])) {
            $content[$contentKey] = $content['default'];
        }
        if ('default' != $contentKey) {
            unset($content['default']);
        }

        $layout->assign($content);
        
        $fullContent = null;
        $obStartLevel = ob_get_level();
        try {
            $fullContent = $layout->render();
            $response->setBody($fullContent);
        } catch (Exception $e) {
            while (ob_get_level() > $obStartLevel) {
                $fullContent .= ob_get_clean();
            }
            $request->setParam('layoutFullContent', $fullContent);
            $request->setParam('layoutContent', $layout->content);
            $response->setBody(null);
            throw $e;
        }

    }
}
PKpG[���MM*Layout/Controller/Action/Helper/Layout.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Layout.php 11508 2008-09-24 14:21:30Z doctorrock83 $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Action_Helper_Abstract */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Helper for interacting with Zend_Layout objects
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Layout_Controller_Action_Helper_Layout extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * @var Zend_Layout
     */
    protected $_layout;

    /**
     * @var bool
     */
    protected $_isActionControllerSuccessful = false;
    
    /**
     * Constructor
     * 
     * @param  Zend_Layout $layout 
     * @return void
     */
    public function __construct(Zend_Layout $layout = null)
    {
        if (null !== $layout) {
            $this->setLayoutInstance($layout);
        } else {
            /**
             * @see Zend_Layout
             */
            require_once 'Zend/Layout.php';
            $layout = Zend_Layout::getMvcInstance();
        }
        
        if (null !== $layout) {
            $pluginClass = $layout->getPluginClass();
            $front = $this->getFrontController();
            if ($front->hasPlugin($pluginClass)) {
                $plugin = $front->getPlugin($pluginClass);
                $plugin->setLayoutActionHelper($this);
            }
        }
    }

    public function init()
    {
        $this->_isActionControllerSuccessful = false;
    }

    /**
     * Get front controller instance
     * 
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        if (null === $this->_frontController) {
            /**
             * @see Zend_Controller_Front
             */
            require_once 'Zend/Controller/Front.php';
            $this->_frontController = Zend_Controller_Front::getInstance();
        }

        return $this->_frontController;
    }
    
    /**
     * Get layout object
     * 
     * @return Zend_Layout
     */
    public function getLayoutInstance()
    {
        if (null === $this->_layout) {
            /**
             * @see Zend_Layout
             */
            require_once 'Zend/Layout.php';
            if (null === ($this->_layout = Zend_Layout::getMvcInstance())) {
                $this->_layout = new Zend_Layout();
            }
        }

        return $this->_layout;
    }

    /**
     * Set layout object
     * 
     * @param  Zend_Layout $layout 
     * @return Zend_Layout_Controller_Action_Helper_Layout
     */
    public function setLayoutInstance(Zend_Layout $layout)
    {
        $this->_layout = $layout;
        return $this;
    }

    /**
     * Mark Action Controller (according to this plugin) as Running successfully
     *
     * @return Zend_Layout_Controller_Action_Helper_Layout
     */
    public function postDispatch()
    {
        $this->_isActionControllerSuccessful = true;
        return $this;
    }
    
    /**
     * Did the previous action successfully complete?
     *
     * @return bool
     */
    public function isActionControllerSuccessful()
    {
        return $this->_isActionControllerSuccessful;
    }
    
    /**
     * Strategy pattern; call object as method
     *
     * Returns layout object
     * 
     * @return Zend_Layout
     */
    public function direct()
    {
        return $this->getLayoutInstance();
    }

    /**
     * Proxy method calls to layout object
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     */
    public function __call($method, $args)
    {
        $layout = $this->getLayoutInstance();
        if (method_exists($layout, $method)) {
            return call_user_func_array(array($layout, $method), $args);
        }

        require_once 'Zend/Layout/Exception.php';
        throw new Zend_Layout_Exception(sprintf("Invalid method '%s' called on layout action helper", $method));
    }
}
PKpG[��y%]]Log.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Log.php 13459 2008-12-26 14:13:34Z yoshida@zend.co.jp $
 */

/**
 * @category   Zend
 * @package    Zend_Log
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Log.php 13459 2008-12-26 14:13:34Z yoshida@zend.co.jp $
 */
class Zend_Log
{
    const EMERG   = 0;  // Emergency: system is unusable
    const ALERT   = 1;  // Alert: action must be taken immediately
    const CRIT    = 2;  // Critical: critical conditions
    const ERR     = 3;  // Error: error conditions
    const WARN    = 4;  // Warning: warning conditions
    const NOTICE  = 5;  // Notice: normal but significant condition
    const INFO    = 6;  // Informational: informational messages
    const DEBUG   = 7;  // Debug: debug messages

    /**
     * @var array of priorities where the keys are the
     * priority numbers and the values are the priority names
     */
    protected $_priorities = array();

    /**
     * @var array of Zend_Log_Writer_Abstract
     */
    protected $_writers = array();

    /**
     * @var array of Zend_Log_Filter_Interface
     */
    protected $_filters = array();

    /**
     * @var array of extra log event
     */
    protected $_extras = array();

    /**
     * Class constructor.  Create a new logger
     *
     * @param Zend_Log_Writer_Abstract|null  $writer  default writer
     */
    public function __construct(Zend_Log_Writer_Abstract $writer = null)
    {
        $r = new ReflectionClass($this);
        $this->_priorities = array_flip($r->getConstants());

        if ($writer !== null) {
            $this->addWriter($writer);
        }
    }

    /**
     * Class destructor.  Shutdown log writers
     *
     * @return void
     */
    public function __destruct()
    {
        foreach($this->_writers as $writer) {
            $writer->shutdown();
        }
    }

    /**
     * Undefined method handler allows a shortcut:
     *   $log->priorityName('message')
     *     instead of
     *   $log->log('message', Zend_Log::PRIORITY_NAME)
     *
     * @param  string  $method  priority name
     * @param  string  $params  message to log
     * @return void
     * @throws Zend_Log_Exception
     */
    public function __call($method, $params)
    {
        $priority = strtoupper($method);
        if (($priority = array_search($priority, $this->_priorities)) !== false) {
            $this->log(array_shift($params), $priority);
        } else {
            /** @see Zend_Log_Exception */
            require_once 'Zend/Log/Exception.php';
            throw new Zend_Log_Exception('Bad log priority');
        }
    }

    /**
     * Log a message at a priority
     *
     * @param  string   $message   Message to log
     * @param  integer  $priority  Priority of message
     * @return void
     * @throws Zend_Log_Exception
     */
    public function log($message, $priority)
    {
        // sanity checks
        if (empty($this->_writers)) {
            /** @see Zend_Log_Exception */
            require_once 'Zend/Log/Exception.php';
            throw new Zend_Log_Exception('No writers were added');
        }

        if (! isset($this->_priorities[$priority])) {
            /** @see Zend_Log_Exception */
            require_once 'Zend/Log/Exception.php';
            throw new Zend_Log_Exception('Bad log priority');
        }

        // pack into event required by filters and writers
        $event = array_merge(array('timestamp'    => date('c'),
                                    'message'      => $message,
                                    'priority'     => $priority,
                                    'priorityName' => $this->_priorities[$priority]),
                              $this->_extras);

        // abort if rejected by the global filters
        foreach ($this->_filters as $filter) {
            if (! $filter->accept($event)) {
                return;
            }
        }

        // send to each writer
        foreach ($this->_writers as $writer) {
            $writer->write($event);
        }
    }

    /**
     * Add a custom priority
     *
     * @param  string   $name      Name of priority
     * @param  integer  $priority  Numeric priority
     * @throws Zend_Log_InvalidArgumentException
     */
    public function addPriority($name, $priority)
    {
        // Priority names must be uppercase for predictability.
        $name = strtoupper($name);

        if (isset($this->_priorities[$priority])
            || array_search($name, $this->_priorities)) {
            /** @see Zend_Log_Exception */
            require_once 'Zend/Log/Exception.php';
            throw new Zend_Log_Exception('Existing priorities cannot be overwritten');
        }

        $this->_priorities[$priority] = $name;
    }

    /**
     * Add a filter that will be applied before all log writers.
     * Before a message will be received by any of the writers, it
     * must be accepted by all filters added with this method.
     *
     * @param  int|Zend_Log_Filter_Interface $filter
     * @return void
     */
    public function addFilter($filter)
    {
        if (is_integer($filter)) {
        	/** @see Zend_Log_Filter_Priority */
            require_once 'Zend/Log/Filter/Priority.php';
            $filter = new Zend_Log_Filter_Priority($filter);
        } elseif(!is_object($filter) || ! $filter instanceof Zend_Log_Filter_Interface) {
            /** @see Zend_Log_Exception */
            require_once 'Zend/Log/Exception.php';
            throw new Zend_Log_Exception('Invalid filter provided');
        }

        $this->_filters[] = $filter;
    }

    /**
     * Add a writer.  A writer is responsible for taking a log
     * message and writing it out to storage.
     *
     * @param  Zend_Log_Writer_Abstract $writer
     * @return void
     */
    public function addWriter(Zend_Log_Writer_Abstract $writer)
    {
        $this->_writers[] = $writer;
    }

    /**
     * Set an extra item to pass to the log writers.
     *
     * @param  $name    Name of the field
     * @param  $value   Value of the field
     * @return void
     */
    public function setEventItem($name, $value) {
        $this->_extras = array_merge($this->_extras, array($name => $value));
    }

}
PKpG[�����Ldap/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Ldap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

class Zend_Ldap_Exception extends Zend_Exception
{
    const LDAP_SUCCESS = 0x00;
    const LDAP_OPERATIONS_ERROR = 0x01;
    const LDAP_PROTOCOL_ERROR = 0x02;
    const LDAP_TIMELIMIT_EXCEEDED = 0x03;
    const LDAP_SIZELIMIT_EXCEEDED = 0x04;
    const LDAP_COMPARE_FALSE = 0x05;
    const LDAP_COMPARE_TRUE = 0x06;
    const LDAP_AUTH_METHOD_NOT_SUPPORTED = 0x07;
    const LDAP_STRONG_AUTH_REQUIRED = 0x08;
    const LDAP_PARTIAL_RESULTS = 0x09;
    const LDAP_REFERRAL = 0x0a;
    const LDAP_ADMINLIMIT_EXCEEDED = 0x0b;
    const LDAP_UNAVAILABLE_CRITICAL_EXTENSION = 0x0c;
    const LDAP_CONFIDENTIALITY_REQUIRED = 0x0d;
    const LDAP_SASL_BIND_IN_PROGRESS = 0x0e;
    const LDAP_NO_SUCH_ATTRIBUTE = 0x10;
    const LDAP_UNDEFINED_TYPE = 0x11;
    const LDAP_INAPPROPRIATE_MATCHING = 0x12;
    const LDAP_CONSTRAINT_VIOLATION = 0x13;
    const LDAP_TYPE_OR_VALUE_EXISTS = 0x14;
    const LDAP_INVALID_SYNTAX = 0x15;
    const LDAP_NO_SUCH_OBJECT = 0x20;
    const LDAP_ALIAS_PROBLEM = 0x21;
    const LDAP_INVALID_DN_SYNTAX = 0x22;
    const LDAP_IS_LEAF = 0x23;
    const LDAP_ALIAS_DEREF_PROBLEM = 0x24;
    const LDAP_PROXY_AUTHZ_FAILURE = 0x2F;
    const LDAP_INAPPROPRIATE_AUTH = 0x30;
    const LDAP_INVALID_CREDENTIALS = 0x31;
    const LDAP_INSUFFICIENT_ACCESS = 0x32;
    const LDAP_BUSY = 0x33;
    const LDAP_UNAVAILABLE = 0x34;
    const LDAP_UNWILLING_TO_PERFORM = 0x35;
    const LDAP_LOOP_DETECT = 0x36;
    const LDAP_NAMING_VIOLATION = 0x40;
    const LDAP_OBJECT_CLASS_VIOLATION = 0x41;
    const LDAP_NOT_ALLOWED_ON_NONLEAF = 0x42;
    const LDAP_NOT_ALLOWED_ON_RDN = 0x43;
    const LDAP_ALREADY_EXISTS = 0x44;
    const LDAP_NO_OBJECT_CLASS_MODS = 0x45;
    const LDAP_RESULTS_TOO_LARGE = 0x46;
    const LDAP_AFFECTS_MULTIPLE_DSAS = 0x47;
    const LDAP_OTHER = 0x50;
    const LDAP_SERVER_DOWN = 0x51;
    const LDAP_LOCAL_ERROR = 0x52;
    const LDAP_ENCODING_ERROR = 0x53;
    const LDAP_DECODING_ERROR = 0x54;
    const LDAP_TIMEOUT = 0x55;
    const LDAP_AUTH_UNKNOWN = 0x56;
    const LDAP_FILTER_ERROR = 0x57;
    const LDAP_USER_CANCELLED = 0x58;
    const LDAP_PARAM_ERROR = 0x59;
    const LDAP_NO_MEMORY = 0x5a;
    const LDAP_CONNECT_ERROR = 0x5b;
    const LDAP_NOT_SUPPORTED = 0x5c;
    const LDAP_CONTROL_NOT_FOUND = 0x5d;
    const LDAP_NO_RESULTS_RETURNED = 0x5e;
    const LDAP_MORE_RESULTS_TO_RETURN = 0x5f;
    const LDAP_CLIENT_LOOP = 0x60;
    const LDAP_REFERRAL_LIMIT_EXCEEDED = 0x61;
    const LDAP_CUP_RESOURCES_EXHAUSTED = 0x71;
    const LDAP_CUP_SECURITY_VIOLATION = 0x72;
    const LDAP_CUP_INVALID_DATA = 0x73;
    const LDAP_CUP_UNSUPPORTED_SCHEME = 0x74;
    const LDAP_CUP_RELOAD_REQUIRED = 0x75;
    const LDAP_CANCELLED = 0x76;
    const LDAP_NO_SUCH_OPERATION = 0x77;
    const LDAP_TOO_LATE = 0x78;
    const LDAP_CANNOT_CANCEL = 0x79;
    const LDAP_ASSERTION_FAILED = 0x7A;
    const LDAP_SYNC_REFRESH_REQUIRED = 0x1000;
    const LDAP_X_SYNC_REFRESH_REQUIRED = 0x4100;
    const LDAP_X_NO_OPERATION = 0x410e;
    const LDAP_X_ASSERTION_FAILED = 0x410f;
    const LDAP_X_NO_REFERRALS_FOUND = 0x4110;
    const LDAP_X_CANNOT_CHAIN = 0x4111;

    /* internal error code constants */

    const LDAP_X_DOMAIN_MISMATCH = 0x7001;

    /**
     * @param mixed $ldap A Zend_Ldap object or raw LDAP context resource
     * @param string $str An informtive exception message
     * @param int $code An LDAP error code
     */
    public function __construct($ldap = null, $str = null, $code = 0)
    {
        $resource = null;
        if (is_resource($ldap)) {
            $resource = $ldap;
        } else if (is_object($ldap)) {
            $resource = $ldap->getResource();
        }

        $message = '';
        if ($code === 0)
            $code = Zend_Ldap_Exception::getLdapCode($resource);
        if ($code)
            $message .= '0x' . dechex($code);
        if (is_resource($resource)) {

            /* The various error retrieval functions can return
             * different things so we just try to collect what we
             * can and eliminate dupes.
             */

            $estr1 = @ldap_error($resource);
            if ($code !== 0 && $estr1 === 'Success')
                $estr1 = @ldap_err2str($code);
            if ($estr1 !== $str)
                $this->_append($message, $estr1);

            @ldap_get_option($resource, LDAP_OPT_ERROR_STRING, $estr2);
            if ($estr2 !== $str && $estr2 !== $estr1)
                $this->_append($message, $estr2);
        }

        $this->_append($message, $str);

        parent::__construct($message, $code);
    }

    private function _append(&$message, $estr)
    {
        if ($estr) {
            if ($message)
                $message .= ': ';
            $message .= $estr;
        }
    }

    /**
     * @param mixed $ldap A Zend_Ldap object or raw LDAP context resource
     * @return int The current error code for the resource
     */
    public static function getLdapCode($ldap)
    {
        $resource = null;
        if (is_resource($ldap)) {
            $resource = $ldap;
        } else if (is_object($ldap)) {
            $resource = $ldap->getResource();
        }
        if (is_resource($resource)) {
            $ret = @ldap_get_option($resource, LDAP_OPT_ERROR_NUMBER, $err);
            if ($ret === true) {
                if ($err <= -1 && $err >= -17) {
                    /* For some reason draft-ietf-ldapext-ldap-c-api-xx.txt error
                     * codes in OpenLDAP are negative values from -1 to -17. 
                     */
                    $err = Zend_Ldap_Exception::LDAP_SERVER_DOWN + (-$err - 1);
                }
                return $err;
            }
        }
        return 0;
    }

    /**
     * @param string $message An informtive exception message
     *
     */
    public function setMessage($message)
    {
        $this->_message = $message;
    }

    /**
     * @return int The current error code for this exception
     */
    public function getErrorCode()
    {
        return $this->getCode();
    }
}
PKpG[5<���	�	Config/Writer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Writer.php 12220 2008-10-31 20:13:55Z dasprid $
 */

/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Config_Writer
{
    /**
     * Option keys to skip when calling setOptions()
     * 
     * @var array
     */
    protected $_skipOptions = array(
        'options'
    );
    
    /**
     * Config object to write
     *
     * @var Zend_Config
     */
    protected $_config = null;

    /**
     * Create a new adapter
     * 
     * $options can only be passed as array or be omitted 
     *
     * @param null|array $options
     */
    public function __construct(array $options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }
    
    /**
     * Set options via a Zend_Config instance
     *
     * @param  Zend_Config $config
     * @return Zend_Config_Writer
     */
    public function setConfig(Zend_Config $config)
    {
        $this->_config = $config;
        
        return $this;
    }
    
    /**
     * Set options via an array
     *
     * @param  array $options
     * @return Zend_Config_Writer
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            if (in_array(strtolower($key), $this->_skipOptions)) {
                continue;
            }

            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        
        return $this;
    }
    
    /**
     * Write a Zend_Config object to it's target
     *
     * @return void
     */
    abstract public function write();
}
PKpG[�*�/��Config/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Exception extends Zend_Exception {}
PKpG[�x�=!=!Config/Xml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Config
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Xml.php 11427 2008-09-18 16:11:43Z doctorrock83 $
 */

/**
 * @see Zend_Config
 */
require_once 'Zend/Config.php';

/**
 * XML Adapter for Zend_Config
 *
 * @category  Zend
 * @package   Zend_Config
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Xml extends Zend_Config
{
    /**
     * Loads the section $section from the config file $filename for
     * access facilitated by nested object properties.
     *
     * Sections are defined in the XML as children of the root element.
     *
     * In order to extend another section, a section defines the "extends"
     * attribute having a value of the section name from which the extending
     * section inherits values.
     *
     * Note that the keys in $section will override any keys of the same
     * name in the sections that have been included via "extends".
     *
     * @param  string  $filename           File to process
     * @param  mixed   $section            Section to process
     * @param  boolean $allowModifications Wether modifiacations are allowed at runtime
     * @throws Zend_Config_Exception When filename is not set
     * @throws Zend_Config_Exception When section $sectionName cannot be found in $filename
     */
    public function __construct($filename, $section = null, $allowModifications = false)
    {
        if (empty($filename)) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Filename is not set');
        }

        set_error_handler(array($this, '_loadFileErrorHandler'));
        $config = simplexml_load_file($filename); // Warnings and errors are suppressed
        restore_error_handler();
        // Check if there was a error while loading file
        if ($this->_loadFileErrorStr !== null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception($this->_loadFileErrorStr);
        }

        if ($section === null) {
            $dataArray = array();
            foreach ($config as $sectionName => $sectionData) {
                $dataArray[$sectionName] = $this->_processExtends($config, $sectionName);
            }

            parent::__construct($dataArray, $allowModifications);
        } else if (is_array($section)) {
            $dataArray = array();
            foreach ($section as $sectionName) {
                if (!isset($config->$sectionName)) {
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Section '$sectionName' cannot be found in $filename");
                }

                $dataArray = array_merge($this->_processExtends($config, $sectionName), $dataArray);
            }

            parent::__construct($dataArray, $allowModifications);
        } else {
            if (!isset($config->$section)) {
                require_once 'Zend/Config/Exception.php';
                throw new Zend_Config_Exception("Section '$section' cannot be found in $filename");
            }

            $dataArray = $this->_processExtends($config, $section);
            if (!is_array($dataArray)) {
                // Section in the XML file contains just one top level string
                $dataArray = array($section => $dataArray);
            }

            parent::__construct($dataArray, $allowModifications);
        }

        $this->_loadedSection = $section;
    }

    /**
     * Helper function to process each element in the section and handle
     * the "extends" inheritance attribute.
     *
     * @param  SimpleXMLElement $element XML Element to process
     * @param  string           $section Section to process
     * @param  array            $config  Configuration which was parsed yet
     * @throws Zend_Config_Exception When $section cannot be found
     * @return array
     */
    protected function _processExtends(SimpleXMLElement $element, $section, array $config = array())
    {
        if (!isset($element->$section)) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception("Section '$section' cannot be found");
        }

        $thisSection = $element->$section;

        if (isset($thisSection['extends'])) {
            $extendedSection = (string) $thisSection['extends'];
            $this->_assertValidExtend($section, $extendedSection);
            $config = $this->_processExtends($element, $extendedSection, $config);
        }

        $config = $this->_arrayMergeRecursive($config, $this->_toArray($thisSection));

        return $config;
    }

    /**
     * Returns a string or an associative and possibly multidimensional array from
     * a SimpleXMLElement.
     *
     * @param  SimpleXMLElement $xmlObject Convert a SimpleXMLElement into an array
     * @return array|string
     */
    protected function _toArray(SimpleXMLElement $xmlObject)
    {
        $config = array();

        // Search for parent node values
        if (count($xmlObject->attributes()) > 0) {
            foreach ($xmlObject->attributes() as $key => $value) {
                if ($key === 'extends') {
                    continue;
                }

                $value = (string) $value;

                if (array_key_exists($key, $config)) {
                    if (!is_array($config[$key])) {
                        $config[$key] = array($config[$key]);
                    }

                    $config[$key][] = $value;
                } else {
                    $config[$key] = $value;
                }
            }
        }

        // Search for children
        if (count($xmlObject->children()) > 0) {
            foreach ($xmlObject->children() as $key => $value) {
                if (count($value->children()) > 0) {
                    $value = $this->_toArray($value);
                } else if (count($value->attributes()) > 0) {
                    $attributes = $value->attributes();
                    if (isset($attributes['value'])) {
                        $value = (string) $attributes['value'];
                    } else {
                        $value = $this->_toArray($value);
                    }
                } else {
                    $value = (string) $value;
                }

                if (array_key_exists($key, $config)) {
                    if (!is_array($config[$key]) || !array_key_exists(0, $config[$key])) {
                        $config[$key] = array($config[$key]);
                    }

                    $config[$key][] = $value;
                } else {
                    $config[$key] = $value;
                }
            }
        } else if (!isset($xmlObject['extends']) && (count($config) === 0)) {
            // Object has no children nor attributes and doesn't use the extends
            // attribute: it's a string
            $config = (string) $xmlObject;
        }

        return $config;
    }

    /**
     * Merge two arrays recursively, overwriting keys of the same name
     * in $array1 with the value in $array2.
     *
     * @param  mixed $firstArray  First array
     * @param  mixed $secondArray Second array to merge into first array
     * @return array
     */
    protected function _arrayMergeRecursive($firstArray, $secondArray)
    {
        if (is_array($firstArray) && is_array($secondArray)) {
            foreach ($secondArray as $key => $value) {
                if (isset($firstArray[$key])) {
                    $firstArray[$key] = $this->_arrayMergeRecursive($firstArray[$key], $value);
                } else {
                    $firstArray[$key] = $value;
                }
            }
        } else {
            $firstArray = $secondArray;
        }

        return $firstArray;
    }
}
PKpG[Q�Lo��Config/Writer/Array.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Array.php 12221 2008-10-31 20:32:43Z dasprid $
 */

/**
 * @see Zend_Config_Writer
 */
require_once 'Zend/Config/Writer.php';

/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Writer_Array extends Zend_Config_Writer
{
    /**
     * Filename to write to
     *
     * @var string
     */
    protected $_filename = null;
    
    /**
     * Set the target filename
     *
     * @param  string $filename
     * @return Zend_Config_Writer_Array
     */
    public function setFilename($filename)
    {
        $this->_filename = $filename;
        
        return $this;
    }
    
    /**
     * Defined by Zend_Config_Writer
     *
     * @param  string      $filename
     * @param  Zend_Config $config
     * @throws Zend_Config_Exception When filename was not set
     * @throws Zend_Config_Exception When filename is not writable
     * @return void
     */
    public function write($filename = null, Zend_Config $config = null)
    {
        if ($filename !== null) {
            $this->setFilename($filename);
        }
        
        if ($config !== null) {
            $this->setConfig($config);
        }
        
        if ($this->_filename === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No filename was set');
        }
        
        if ($this->_config === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No config was set');
        }
        
        $data        = $this->_config->toArray();
        $sectionName = $this->_config->getSectionName();
        
        if (is_string($sectionName)) {
            $data = array($sectionName => $data);
        }
        
        $arrayString = "<?php\n"
                     . "return " . var_export($data, true) . ";\n";
       
        $result = @file_put_contents($this->_filename, $arrayString);
        
        if ($result === false) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Could not write to file "' . $this->_filename . '"');
        }
    }
}
PKpG[լ���Config/Writer/Ini.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ini.php 12221 2008-10-31 20:32:43Z dasprid $
 */

/**
 * @see Zend_Config_Writer
 */
require_once 'Zend/Config/Writer.php';

/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Writer_Ini extends Zend_Config_Writer
{
    /**
     * Filename to write to
     *
     * @var string
     */
    protected $_filename = null;
        
    /**
     * String that separates nesting levels of configuration data identifiers
     *
     * @var string
     */
    protected $_nestSeparator = '.';
    
    /**
     * Set the target filename
     *
     * @param  string $filename
     * @return Zend_Config_Writer_Xml
     */
    public function setFilename($filename)
    {
        $this->_filename = $filename;
        
        return $this;
    }
    
    /**
     * Set the nest separator
     *
     * @param  string $filename
     * @return Zend_Config_Writer_Ini
     */
    public function setNestSeparator($separator)
    {
        $this->_nestSeparator = $separator;
        
        return $this;
    }
    
    /**
     * Defined by Zend_Config_Writer
     *
     * @param  string      $filename
     * @param  Zend_Config $config
     * @throws Zend_Config_Exception When filename was not set
     * @throws Zend_Config_Exception When filename is not writable
     * @return void
     */
    public function write($filename = null, Zend_Config $config = null)
    {
        if ($filename !== null) {
            $this->setFilename($filename);
        }
        
        if ($config !== null) {
            $this->setConfig($config);
        }
        
        if ($this->_filename === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No filename was set');
        }
        
        if ($this->_config === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No config was set');
        }
        
        $iniString   = '';
        $extends     = $this->_config->getExtends();
        $sectionName = $this->_config->getSectionName();
        
        if (is_string($sectionName)) {
            $iniString .= '[' . $sectionName . ']' . "\n"
                       .  $this->_addBranch($this->_config)
                       .  "\n";
        } else {       
            foreach ($this->_config as $sectionName => $data) {
                if (isset($extends[$sectionName])) {
                    $sectionName .= ' : ' . $extends[$sectionName];
                }
                
                $iniString .= '[' . $sectionName . ']' . "\n"
                           .  $this->_addBranch($data)
                           .  "\n";
            }
        }
       
        $result = @file_put_contents($this->_filename, $iniString);

        if ($result === false) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Could not write to file "' . $this->_filename . '"');
        }
    }
    
    /**
     * Add a branch to an INI string recursively
     *
     * @param  Zend_Config $config
     * @return void
     */
    protected function _addBranch(Zend_Config $config, $parents = array())
    {
        $iniString = '';

        foreach ($config as $key => $value) {
            $group = array_merge($parents, array($key));
            
            if ($value instanceof Zend_Config) {
                $iniString .= $this->_addBranch($value, $group);
            } else {
                $iniString .= implode($this->_nestSeparator, $group)
                           .  ' = '
                           .  $this->_prepareValue($value)
                           .  "\n";
            }
        }
        
        return $iniString;
    }
    
    /**
     * Prepare a value for INI
     *
     * @param  mixed $value
     * @return string
     */
    protected function _prepareValue($value)
    {
        if (is_integer($value) || is_float($value)) {
            return $value;
        } elseif (is_bool($value)) {
            return ($value ? 'true' : 'false');
        } else {
            return '"' . addslashes($value) .  '"';
        }
    }
}
PKpG[e�aaConfig/Writer/Xml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Xml.php 12221 2008-10-31 20:32:43Z dasprid $
 */

/**
 * @see Zend_Config_Writer
 */
require_once 'Zend/Config/Writer.php';

/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Writer_Xml extends Zend_Config_Writer
{
    /**
     * Filename to write to
     *
     * @var string
     */
    protected $_filename = null;
    
    /**
     * Set the target filename
     *
     * @param  string $filename
     * @return Zend_Config_Writer_Xml
     */
    public function setFilename($filename)
    {
        $this->_filename = $filename;
        
        return $this;
    }
    
    /**
     * Defined by Zend_Config_Writer
     *
     * @param  string      $filename
     * @param  Zend_Config $config
     * @throws Zend_Config_Exception When filename was not set
     * @throws Zend_Config_Exception When filename is not writable
     * @return void
     */
    public function write($filename = null, Zend_Config $config = null)
    {
        if ($filename !== null) {
            $this->setFilename($filename);
        }
        
        if ($config !== null) {
            $this->setConfig($config);
        }
        
        if ($this->_filename === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No filename was set');
        }
        
        if ($this->_config === null) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('No config was set');
        }
        
        $xml         = new SimpleXMLElement('<zend-config/>');
        $extends     = $this->_config->getExtends();
        $sectionName = $this->_config->getSectionName();
        
        if (is_string($sectionName)) {
            $child = $xml->addChild($sectionName);

            $this->_addBranch($this->_config, $child);
        } else {
            foreach ($this->_config as $sectionName => $data) {
                if (!($data instanceof Zend_Config)) {
                    continue;
                }
            
                $child = $xml->addChild($sectionName);
                
                if (isset($extends[$sectionName])) {
                    $child->addAttribute('extends', $extends[$sectionName]);
                }
    
                $this->_addBranch($data, $child);
            }
        }
                
        $dom = dom_import_simplexml($xml)->ownerDocument;
        $dom->formatOutput = true;
        
        $xmlString = $dom->saveXML();
       
        $result = @file_put_contents($this->_filename, $xmlString);
        
        if ($result === false) {
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Could not write to file "' . $this->_filename . '"');
        }
    }
    
    /**
     * Add a branch to an XML object recursively
     *
     * @param  Zend_Config      $config
     * @param  SimpleXMLElement $xml
     * @return void
     */
    protected function _addBranch(Zend_Config $config, SimpleXMLElement $xml)
    {
        foreach ($config as $key => $value) {
            if ($value instanceof Zend_Config) {
                $child = $xml->addChild($key);

                $this->_addBranch($value, $child);
            } else {
                $xml->addChild($key, (string) $value);
            }
        }
    }
}
PKpG[��$�$Config/Ini.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ini.php 11206 2008-09-03 14:36:32Z ralph $
 */


/**
 * @see Zend_Config
 */
require_once 'Zend/Config.php';


/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config_Ini extends Zend_Config
{
    /**
     * String that separates nesting levels of configuration data identifiers
     *
     * @var string
     */
    protected $_nestSeparator = '.';

    /**
     * Loads the section $section from the config file $filename for
     * access facilitated by nested object properties.
     *
     * If the section name contains a ":" then the section name to the right
     * is loaded and included into the properties. Note that the keys in
     * this $section will override any keys of the same
     * name in the sections that have been included via ":".
     *
     * If the $section is null, then all sections in the ini file are loaded.
     *
     * If any key includes a ".", then this will act as a separator to
     * create a sub-property.
     *
     * example ini file:
     *      [all]
     *      db.connection = database
     *      hostname = live
     *
     *      [staging : all]
     *      hostname = staging
     *
     * after calling $data = new Zend_Config_Ini($file, 'staging'); then
     *      $data->hostname === "staging"
     *      $data->db->connection === "database"
     *
     * The $options parameter may be provided as either a boolean or an array.
     * If provided as a boolean, this sets the $allowModifications option of
     * Zend_Config. If provided as an array, there are two configuration
     * directives that may be set. For example:
     *
     * $options = array(
     *     'allowModifications' => false,
     *     'nestSeparator'      => '->'
     *      );
     *
     * @param  string        $filename
     * @param  string|null   $section
     * @param  boolean|array $options
     * @throws Zend_Config_Exception
     * @return void
     */
    public function __construct($filename, $section = null, $options = false)
    {
        if (empty($filename)) {
            /**
             * @see Zend_Config_Exception
             */
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Filename is not set');
        }

        $allowModifications = false;
        if (is_bool($options)) {
            $allowModifications = $options;
        } elseif (is_array($options)) {
            if (isset($options['allowModifications'])) {
                $allowModifications = (bool) $options['allowModifications'];
            }
            if (isset($options['nestSeparator'])) {
                $this->_nestSeparator = (string) $options['nestSeparator'];
            }
        }

        set_error_handler(array($this, '_loadFileErrorHandler'));
        $iniArray = parse_ini_file($filename, true); // Warnings and errors are suppressed
        restore_error_handler();
        // Check if there was a error while loading file
        if ($this->_loadFileErrorStr !== null) {
            /**
             * @see Zend_Config_Exception
             */
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception($this->_loadFileErrorStr);
        }
        
        $preProcessedArray = array();
        foreach ($iniArray as $key => $data)
        {
            $bits = explode(':', $key);
            $thisSection = trim($bits[0]);
            switch (count($bits)) {
                case 1:
                    $preProcessedArray[$thisSection] = $data;
                    break;

                case 2:
                    $extendedSection = trim($bits[1]);
                    $preProcessedArray[$thisSection] = array_merge(array(';extends'=>$extendedSection), $data);
                    break;

                default:
                    /**
                     * @see Zend_Config_Exception
                     */
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Section '$thisSection' may not extend multiple sections in $filename");
            }
        }

        if (null === $section) {
            $dataArray = array();
            foreach ($preProcessedArray as $sectionName => $sectionData) {
                if(!is_array($sectionData)) {
                    $dataArray = array_merge_recursive($dataArray, $this->_processKey(array(), $sectionName, $sectionData));
                } else {
                    $dataArray[$sectionName] = $this->_processExtends($preProcessedArray, $sectionName);
                }
            }
            parent::__construct($dataArray, $allowModifications);
        } elseif (is_array($section)) {
            $dataArray = array();
            foreach ($section as $sectionName) {
                if (!isset($preProcessedArray[$sectionName])) {
                    /**
                     * @see Zend_Config_Exception
                     */
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Section '$sectionName' cannot be found in $filename");
                }
                $dataArray = array_merge($this->_processExtends($preProcessedArray, $sectionName), $dataArray);

            }
            parent::__construct($dataArray, $allowModifications);
        } else {
            if (!isset($preProcessedArray[$section])) {
                /**
                 * @see Zend_Config_Exception
                 */
                require_once 'Zend/Config/Exception.php';
                throw new Zend_Config_Exception("Section '$section' cannot be found in $filename");
            }
            parent::__construct($this->_processExtends($preProcessedArray, $section), $allowModifications);
        }

        $this->_loadedSection = $section;
    }
    
    /**
     * Helper function to process each element in the section and handle
     * the "extends" inheritance keyword. Passes control to _processKey()
     * to handle the "dot" sub-property syntax in each key.
     *
     * @param  array  $iniArray
     * @param  string $section
     * @param  array  $config
     * @throws Zend_Config_Exception
     * @return array
     */
    protected function _processExtends($iniArray, $section, $config = array())
    {
        $thisSection = $iniArray[$section];

        foreach ($thisSection as $key => $value) {
            if (strtolower($key) == ';extends') {
                if (isset($iniArray[$value])) {
                    $this->_assertValidExtend($section, $value);
                    $config = $this->_processExtends($iniArray, $value, $config);
                } else {
                    /**
                     * @see Zend_Config_Exception
                     */
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Section '$section' cannot be found");
                }
            } else {
                $config = $this->_processKey($config, $key, $value);
            }
        }
        return $config;
    }

    /**
     * Assign the key's value to the property list. Handle the "dot"
     * notation for sub-properties by passing control to
     * processLevelsInKey().
     *
     * @param  array  $config
     * @param  string $key
     * @param  string $value
     * @throws Zend_Config_Exception
     * @return array
     */
    protected function _processKey($config, $key, $value)
    {
        if (strpos($key, $this->_nestSeparator) !== false) {
            $pieces = explode($this->_nestSeparator, $key, 2);
            if (strlen($pieces[0]) && strlen($pieces[1])) {
                if (!isset($config[$pieces[0]])) {
                    $config[$pieces[0]] = array();
                } elseif (!is_array($config[$pieces[0]])) {
                    /**
                     * @see Zend_Config_Exception
                     */
                    require_once 'Zend/Config/Exception.php';
                    throw new Zend_Config_Exception("Cannot create sub-key for '{$pieces[0]}' as key already exists");
                }
                $config[$pieces[0]] = $this->_processKey($config[$pieces[0]], $pieces[1], $value);
            } else {
                /**
                 * @see Zend_Config_Exception
                 */
                require_once 'Zend/Config/Exception.php';
                throw new Zend_Config_Exception("Invalid key '$key'");
            }
        } else {
            $config[$key] = $value;
        }
        return $config;
    }
}
PKpG[u���00Http/CookieJar.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage CookieJar
 * @version    $Id: CookieJar.php 9098 2008-03-30 19:29:10Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com/)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once "Zend/Uri.php";
require_once "Zend/Http/Cookie.php";
require_once "Zend/Http/Response.php";

/**
 * A Zend_Http_CookieJar object is designed to contain and maintain HTTP cookies, and should
 * be used along with Zend_Http_Client in order to manage cookies across HTTP requests and
 * responses.
 *
 * The class contains an array of Zend_Http_Cookie objects. Cookies can be added to the jar
 * automatically from a request or manually. Then, the jar can find and return the cookies
 * needed for a specific HTTP request.
 *
 * A special parameter can be passed to all methods of this class that return cookies: Cookies
 * can be returned either in their native form (as Zend_Http_Cookie objects) or as strings -
 * the later is suitable for sending as the value of the "Cookie" header in an HTTP request.
 * You can also choose, when returning more than one cookie, whether to get an array of strings
 * (by passing Zend_Http_CookieJar::COOKIE_STRING_ARRAY) or one unified string for all cookies
 * (by passing Zend_Http_CookieJar::COOKIE_STRING_CONCAT).
 *
 * @link       http://wp.netscape.com/newsref/std/cookie_spec.html for some specs.
 * 
 * @category   Zend
 * @package    Zend_Http
 * @subpackage CookieJar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com/)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_CookieJar
{
    /**
     * Return cookie(s) as a Zend_Http_Cookie object
     *
     */
    const COOKIE_OBJECT = 0;

    /**
     * Return cookie(s) as a string (suitable for sending in an HTTP request)
     *
     */
    const COOKIE_STRING_ARRAY = 1;

    /**
     * Return all cookies as one long string (suitable for sending in an HTTP request)
     *
     */
    const COOKIE_STRING_CONCAT = 2;

    /**
     * Array storing cookies
     *
     * Cookies are stored according to domain and path:
     * $cookies
     *  + www.mydomain.com
     *    + /
     *      - cookie1
     *      - cookie2
     *    + /somepath
     *      - othercookie
     *  + www.otherdomain.net
     *    + /
     *      - alsocookie
     *
     * @var array
     */
    protected $cookies = array();

    /**
     * Construct a new CookieJar object
     *
     */
    public function __construct()
    { }

    /**
     * Add a cookie to the jar. Cookie should be passed either as a Zend_Http_Cookie object
     * or as a string - in which case an object is created from the string.
     *
     * @param Zend_Http_Cookie|string $cookie
     * @param Zend_Uri_Http|string    $ref_uri Optional reference URI (for domain, path, secure)
     */
    public function addCookie($cookie, $ref_uri = null)
    {
        if (is_string($cookie)) {
            $cookie = Zend_Http_Cookie::fromString($cookie, $ref_uri);
        }

        if ($cookie instanceof Zend_Http_Cookie) {
            $domain = $cookie->getDomain();
            $path = $cookie->getPath();
            if (! isset($this->cookies[$domain])) $this->cookies[$domain] = array();
            if (! isset($this->cookies[$domain][$path])) $this->cookies[$domain][$path] = array();
            $this->cookies[$domain][$path][$cookie->getName()] = $cookie;
        } else {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Supplient argument is not a valid cookie string or object');
        }
    }

    /**
     * Parse an HTTP response, adding all the cookies set in that response
     * to the cookie jar.
     *
     * @param Zend_Http_Response $response
     * @param Zend_Uri_Http|string $ref_uri Requested URI
     */
    public function addCookiesFromResponse($response, $ref_uri)
    {
        if (! $response instanceof Zend_Http_Response) {
            require_once 'Zend/Http/Exception.php';        
            throw new Zend_Http_Exception('$response is expected to be a Response object, ' .
                gettype($response) . ' was passed');
        }

        $cookie_hdrs = $response->getHeader('Set-Cookie');

        if (is_array($cookie_hdrs)) {
            foreach ($cookie_hdrs as $cookie) {
                $this->addCookie($cookie, $ref_uri);
            }
        } elseif (is_string($cookie_hdrs)) {
            $this->addCookie($cookie_hdrs, $ref_uri);
        }
    }

    /**
     * Get all cookies in the cookie jar as an array
     *
     * @param int $ret_as Whether to return cookies as objects of Zend_Http_Cookie or as strings
     * @return array|string
     */
    public function getAllCookies($ret_as = self::COOKIE_OBJECT)
    {
        $cookies = $this->_flattenCookiesArray($this->cookies, $ret_as);
        return $cookies;
    }

    /**
     * Return an array of all cookies matching a specific request according to the request URI,
     * whether session cookies should be sent or not, and the time to consider as "now" when
     * checking cookie expiry time.
     *
     * @param string|Zend_Uri_Http $uri URI to check against (secure, domain, path)
     * @param boolean $matchSessionCookies Whether to send session cookies
     * @param int $ret_as Whether to return cookies as objects of Zend_Http_Cookie or as strings
     * @param int $now Override the current time when checking for expiry time
     * @return array|string
     */
    public function getMatchingCookies($uri, $matchSessionCookies = true,
        $ret_as = self::COOKIE_OBJECT, $now = null)
    {
        if (is_string($uri)) $uri = Zend_Uri::factory($uri);
        if (! $uri instanceof Zend_Uri_Http) {
            require_once 'Zend/Http/Exception.php';    
            throw new Zend_Http_Exception("Invalid URI string or object passed");
        }

        // Set path
        $path = $uri->getPath();
        $path = substr($path, 0, strrpos($path, '/'));
        if (! $path) $path = '/';

        // First, reduce the array of cookies to only those matching domain and path
        $cookies = $this->_matchDomain($uri->getHost());
        $cookies = $this->_matchPath($cookies, $path);
        $cookies = $this->_flattenCookiesArray($cookies, self::COOKIE_OBJECT);

        // Next, run Cookie->match on all cookies to check secure, time and session mathcing
        $ret = array();
        foreach ($cookies as $cookie)
            if ($cookie->match($uri, $matchSessionCookies, $now))
                $ret[] = $cookie;

        // Now, use self::_flattenCookiesArray again - only to convert to the return format ;)
        $ret = $this->_flattenCookiesArray($ret, $ret_as);

        return $ret;
    }

    /**
     * Get a specific cookie according to a URI and name
     *
     * @param Zend_Uri_Http|string $uri The uri (domain and path) to match
     * @param string $cookie_name The cookie's name
     * @param int $ret_as Whether to return cookies as objects of Zend_Http_Cookie or as strings
     * @return Zend_Http_Cookie|string
     */
    public function getCookie($uri, $cookie_name, $ret_as = self::COOKIE_OBJECT)
    {
        if (is_string($uri)) {
            $uri = Zend_Uri::factory($uri);
        }

        if (! $uri instanceof Zend_Uri_Http) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Invalid URI specified');
        }

        // Get correct cookie path
        $path = $uri->getPath();
        $path = substr($path, 0, strrpos($path, '/'));
        if (! $path) $path = '/';

        if (isset($this->cookies[$uri->getHost()][$path][$cookie_name])) {
            $cookie = $this->cookies[$uri->getHost()][$path][$cookie_name];

            switch ($ret_as) {
                case self::COOKIE_OBJECT:
                    return $cookie;
                    break;

                case self::COOKIE_STRING_ARRAY:
                case self::COOKIE_STRING_CONCAT:
                    return $cookie->__toString();
                    break;

                default:
                    require_once 'Zend/Http/Exception.php';
                    throw new Zend_Http_Exception("Invalid value passed for \$ret_as: {$ret_as}");
                    break;
            }
        } else {
            return false;
        }
    }

    /**
     * Helper function to recursivly flatten an array. Shoud be used when exporting the
     * cookies array (or parts of it)
     *
     * @param Zend_Http_Cookie|array $ptr
     * @param int $ret_as What value to return
     * @return array|string
     */
    protected function _flattenCookiesArray($ptr, $ret_as = self::COOKIE_OBJECT) {
        if (is_array($ptr)) {
            $ret = ($ret_as == self::COOKIE_STRING_CONCAT ? '' : array());
            foreach ($ptr as $item) {
                if ($ret_as == self::COOKIE_STRING_CONCAT) {
                    $ret .= $this->_flattenCookiesArray($item, $ret_as);
                } else {
                    $ret = array_merge($ret, $this->_flattenCookiesArray($item, $ret_as));
                }
            }
            return $ret;
        } elseif ($ptr instanceof Zend_Http_Cookie) {
            switch ($ret_as) {
                case self::COOKIE_STRING_ARRAY:
                    return array($ptr->__toString());
                    break;

                case self::COOKIE_STRING_CONCAT:
                    return $ptr->__toString();
                    break;

                case self::COOKIE_OBJECT:
                default:
                    return array($ptr);
                    break;
            }
        }

        return null;
    }

    /**
     * Return a subset of the cookies array matching a specific domain
     *
     * Returned array is actually an array of pointers to items in the $this->cookies array.
     *
     * @param string $domain
     * @return array
     */
    protected function _matchDomain($domain) {
        $ret = array();

        foreach (array_keys($this->cookies) as $cdom) {
            $regex = "/" . preg_quote($cdom, "/") . "$/i";
            if (preg_match($regex, $domain)) $ret[$cdom] = &$this->cookies[$cdom];
        }

        return $ret;
    }

    /**
     * Return a subset of a domain-matching cookies that also match a specified path
     *
     * Returned array is actually an array of pointers to items in the $passed array.
     *
     * @param array $dom_array
     * @param string $path
     * @return array
     */
    protected function _matchPath($domains, $path) {
        $ret = array();
        if (substr($path, -1) != '/') $path .= '/';

        foreach ($domains as $dom => $paths_array) {
            foreach (array_keys($paths_array) as $cpath) {
                $regex = "|^" . preg_quote($cpath, "|") . "|i";
                if (preg_match($regex, $path)) {
                    if (! isset($ret[$dom])) $ret[$dom] = array();
                    $ret[$dom][$cpath] = &$paths_array[$cpath];
                }
            }
        }

        return $ret;
    }

    /**
     * Create a new CookieJar object and automatically load into it all the
     * cookies set in an Http_Response object. If $uri is set, it will be
     * considered as the requested URI for setting default domain and path
     * of the cookie.
     *
     * @param Zend_Http_Response $response HTTP Response object
     * @param Zend_Uri_Http|string $uri The requested URI
     * @return Zend_Http_CookieJar
     * @todo Add the $uri functionality.
     */
    public static function fromResponse(Zend_Http_Response $response, $ref_uri)
    {
        $jar = new self();
        $jar->addCookiesFromResponse($response, $ref_uri);
        return $jar;
    }
}
PKpG[�7|�%�%Http/Client/Adapter/Proxy.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @version    $Id: Proxy.php 12504 2008-11-10 16:28:46Z matthew $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Uri/Http.php';
require_once 'Zend/Http/Client.php';
require_once 'Zend/Http/Client/Adapter/Socket.php';

/**
 * HTTP Proxy-supporting Zend_Http_Client adapter class, based on the default
 * socket based adapter.
 *
 * Should be used if proxy HTTP access is required. If no proxy is set, will
 * fall back to Zend_Http_Client_Adapter_Socket behavior. Just like the
 * default Socket adapter, this adapter does not require any special extensions
 * installed.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Adapter_Proxy extends Zend_Http_Client_Adapter_Socket
{
    /**
     * Parameters array
     *
     * @var array
     */
    protected $config = array(
        'ssltransport'  => 'ssl',
        'proxy_host'    => '',
        'proxy_port'    => 8080,
        'proxy_user'    => '',
        'proxy_pass'    => '',
        'proxy_auth'    => Zend_Http_Client::AUTH_BASIC,
        'persistent'    => false
    );

    /**
     * Whether HTTPS CONNECT was already negotiated with the proxy or not
     *
     * @var boolean
     */
    protected $negotiated = false;
    
    /**
     * Connect to the remote server
     *
     * Will try to connect to the proxy server. If no proxy was set, will
     * fall back to the target server (behave like regular Socket adapter)
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     * @param int     $timeout
     */
    public function connect($host, $port = 80, $secure = false)
    {
        // If no proxy is set, fall back to Socket adapter
        if (! $this->config['proxy_host']) return parent::connect($host, $port, $secure);

        // Go through a proxy - the connection is actually to the proxy server
        $host = $this->config['proxy_host'];
        $port = $this->config['proxy_port'];

        // If we are connected to the wrong proxy, disconnect first
        if (($this->connected_to[0] != $host || $this->connected_to[1] != $port)) {
            if (is_resource($this->socket)) $this->close();
        }

        // Now, if we are not connected, connect
        if (! is_resource($this->socket) || ! $this->config['keepalive']) {
            $this->socket = @fsockopen($host, $port, $errno, $errstr, (int) $this->config['timeout']);
            if (! $this->socket) {
                $this->close();
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception(
                    'Unable to Connect to proxy server ' . $host . ':' . $port . '. Error #' . $errno . ': ' . $errstr);
            }

            // Set the stream timeout
            if (!stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
            }

            // Update connected_to
            $this->connected_to = array($host, $port);
        }
    }

    /**
     * Send request to the proxy server
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        // If no proxy is set, fall back to default Socket adapter
        if (! $this->config['proxy_host']) return parent::write($method, $uri, $http_ver, $headers, $body);

        // Make sure we're properly connected
        if (! $this->socket) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are not connected");
        }

        $host = $this->config['proxy_host'];
        $port = $this->config['proxy_port'];

        if ($this->connected_to[0] != $host || $this->connected_to[1] != $port) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception("Trying to write but we are connected to the wrong proxy server");
        }

        // Add Proxy-Authorization header
        if ($this->config['proxy_user'] && ! isset($headers['proxy-authorization'])) {
            $headers['proxy-authorization'] = Zend_Http_Client::encodeAuthHeader(
                $this->config['proxy_user'], $this->config['proxy_pass'], $this->config['proxy_auth']
            );
        }
                
        // if we are proxying HTTPS, preform CONNECT handshake with the proxy
        if ($uri->getScheme() == 'https' && (! $this->negotiated)) {
            $this->connectHandshake($uri->getHost(), $uri->getPort(), $http_ver, $headers);
            $this->negotiated = true;
        }
        
        // Save request method for later
        $this->method = $method;

        // Build request headers
        $request = "{$method} {$uri->__toString()} HTTP/{$http_ver}\r\n";

        // Add all headers to the request string
        foreach ($headers as $k => $v) {
            if (is_string($k)) $v = "$k: $v";
            $request .= "$v\r\n";
        }

        // Add the request body
        $request .= "\r\n" . $body;

        // Send the request
        if (! @fwrite($this->socket, $request)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception("Error writing request to proxy server");
        }

        return $request;
    }

    /**
     * Preform handshaking with HTTPS proxy using CONNECT method
     *
     * @param string  $host
     * @param integer $port
     * @param string  $http_ver
     * @param array   $headers
     */
    protected function connectHandshake($host, $port = 443, $http_ver = '1.1', array &$headers = array())
    {
        $request = "CONNECT $host:$port HTTP/$http_ver\r\n" . 
                   "Host: " . $this->config['proxy_host'] . "\r\n";

        // Add the user-agent header
        if (isset($this->config['useragent'])) {
            $request .= "User-agent: " . $this->config['useragent'] . "\r\n";
        }
        
        // If the proxy-authorization header is set, send it to proxy but remove
        // it from headers sent to target host
        if (isset($headers['proxy-authorization'])) {
            $request .= "Proxy-authorization: " . $headers['proxy-authorization'] . "\r\n";
            unset($headers['proxy-authorization']);
        }
    
        $request .= "\r\n";

        // Send the request
        if (! @fwrite($this->socket, $request)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception("Error writing request to proxy server");
        }

        // Read response headers only
        $response = '';
        $gotStatus = false;
        while ($line = @fgets($this->socket)) {
            $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
            if ($gotStatus) {
                $response .= $line;
                if (!chop($line)) break;
            }
        }
        
        // Check that the response from the proxy is 200
        if (Zend_Http_Response::extractCode($response) != 200) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception("Unable to connect to HTTPS proxy. Server response: " . $response);
        }
        
        // If all is good, switch socket to secure mode. We have to fall back
        // through the different modes 
        $modes = array(
            STREAM_CRYPTO_METHOD_TLS_CLIENT, 
            STREAM_CRYPTO_METHOD_SSLv3_CLIENT,
            STREAM_CRYPTO_METHOD_SSLv23_CLIENT,
            STREAM_CRYPTO_METHOD_SSLv2_CLIENT 
        );
        
        $success = false; 
        foreach($modes as $mode) {
            $success = stream_socket_enable_crypto($this->socket, true, $mode);
            if ($success) break;
        }
        
        if (! $success) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception("Unable to connect to" . 
                    " HTTPS server through proxy: could not negotiate secure connection.");
        }
    }
    
    /**
     * Close the connection to the server
     *
     */
    public function close()
    {
        parent::close();
        $this->negotiated = false;
    }
    
    /**
     * Destructor: make sure the socket is disconnected
     *
     */
    public function __destruct()
    {
        if ($this->socket) $this->close();
    }
}
PKpG[�(*iLLHttp/Client/Adapter/Test.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @version    $Id: Test.php 12104 2008-10-23 22:36:28Z shahar $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Uri/Http.php';
require_once 'Zend/Http/Response.php';
require_once 'Zend/Http/Client/Adapter/Interface.php';

/**
 * A testing-purposes adapter.
 *
 * Should be used to test all components that rely on Zend_Http_Client,
 * without actually performing an HTTP request. You should instantiate this
 * object manually, and then set it as the client's adapter. Then, you can
 * set the expected response using the setResponse() method.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Adapter_Test implements Zend_Http_Client_Adapter_Interface
{
    /**
     * Parameters array
     *
     * @var array
     */
    protected $config = array();

    /**
     * Buffer of responses to be returned by the read() method.  Can be
     * set using setResponse() and addResponse().
     *
     * @var array
     */
    protected $responses = array("HTTP/1.1 400 Bad Request\r\n\r\n");

    /**
     * Current position in the response buffer
     *
     * @var integer
     */
    protected $responseIndex = 0;

    /**
     * Adapter constructor, currently empty. Config is set using setConfig()
     *
     */
    public function __construct()
    { }

    /**
     * Set the configuration array for the adapter
     *
     * @param array $config
     */
    public function setConfig($config = array())
    {
        if (! is_array($config)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                '$config expects an array, ' . gettype($config) . ' recieved.');
        }

        foreach ($config as $k => $v) {
            $this->config[strtolower($k)] = $v;
        }
    }

    /**
     * Connect to the remote server
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     * @param int     $timeout
     */
    public function connect($host, $port = 80, $secure = false)
    { }

    /**
     * Send request to the remote server
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        $host = $uri->getHost();
            $host = (strtolower($uri->getScheme()) == 'https' ? 'sslv2://' . $host : $host);

        // Build request headers
        $path = $uri->getPath();
        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
        foreach ($headers as $k => $v) {
            if (is_string($k)) $v = ucfirst($k) . ": $v";
            $request .= "$v\r\n";
        }

        // Add the request body
        $request .= "\r\n" . $body;

        // Do nothing - just return the request as string

        return $request;
    }

    /**
     * Return the response set in $this->setResponse()
     *
     * @return string
     */
    public function read()
    {
        if ($this->responseIndex >= count($this->responses)) {
            $this->responseIndex = 0;
        }
        return $this->responses[$this->responseIndex++];
    }

    /**
     * Close the connection (dummy)
     *
     */
    public function close()
    { }

    /**
     * Set the HTTP response(s) to be returned by this adapter
     *
     * @param Zend_Http_Response|array|string $response
     */
    public function setResponse($response)
    {
        if ($response instanceof Zend_Http_Response) {
            $response = $response->asString();
        }

        $this->responses = (array)$response;
        $this->responseIndex = 0;
    }

    /**
     * Add another response to the response buffer.
     *
     * @param string $response
     */
    public function addResponse($response)
    {
        $this->responses[] = $response;
    }

    /**
     * Sets the position of the response buffer.  Selects which
     * response will be returned on the next call to read().
     *
     * @param integer $index
     */
    public function setResponseIndex($index)
    {
        if ($index < 0 || $index >= count($this->responses)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                'Index out of range of response buffer size');
        }
        $this->responseIndex = $index;
    }
}
PKpG[�
�&��!Http/Client/Adapter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter_Exception
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Http/Client/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Adapter_Exception extends Zend_Http_Client_Exception
{}
PKpG[�
�w2020Http/Client/Adapter/Socket.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @version    $Id: Socket.php 13014 2008-12-04 12:07:05Z yoshida@zend.co.jp $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Uri/Http.php';
require_once 'Zend/Http/Client/Adapter/Interface.php';

/**
 * A sockets based (stream_socket_client) adapter class for Zend_Http_Client. Can be used
 * on almost every PHP environment, and does not require any special extensions.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Adapter_Socket implements Zend_Http_Client_Adapter_Interface
{
    /**
     * The socket for server connection
     *
     * @var resource|null
     */
    protected $socket = null;

    /**
     * What host/port are we connected to?
     *
     * @var array
     */
    protected $connected_to = array(null, null);

    /**
     * Parameters array
     *
     * @var array
     */
    protected $config = array(
        'persistent'    => false,
        'ssltransport'  => 'ssl',
        'sslcert'       => null,
        'sslpassphrase' => null
    );

    /**
     * Request method - will be set by write() and might be used by read()
     *
     * @var string
     */
    protected $method = null;

    /**
     * Adapter constructor, currently empty. Config is set using setConfig()
     *
     */
    public function __construct()
    {
    }

    /**
     * Set the configuration array for the adapter
     *
     * @param array $config
     */
    public function setConfig($config = array())
    {
        if (! is_array($config)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception(
                '$concig expects an array, ' . gettype($config) . ' recieved.');
        }

        foreach ($config as $k => $v) {
            $this->config[strtolower($k)] = $v;
        }
    }

    /**
     * Connect to the remote server
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     * @param int     $timeout
     */
    public function connect($host, $port = 80, $secure = false)
    {
        // If the URI should be accessed via SSL, prepend the Hostname with ssl://
        $host = ($secure ? $this->config['ssltransport'] : 'tcp') . '://' . $host;

        // If we are connected to the wrong host, disconnect first
        if (($this->connected_to[0] != $host || $this->connected_to[1] != $port)) {
            if (is_resource($this->socket)) $this->close();
        }

        // Now, if we are not connected, connect
        if (! is_resource($this->socket) || ! $this->config['keepalive']) {
            $context = stream_context_create();
            if ($secure) {
                if ($this->config['sslcert'] !== null) {
                    if (! stream_context_set_option($context, 'ssl', 'local_cert',
                                                    $this->config['sslcert'])) {
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslcert option');
                    }
                }
                if ($this->config['sslpassphrase'] !== null) {
                    if (! stream_context_set_option($context, 'ssl', 'passphrase',
                                                    $this->config['sslpassphrase'])) {
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Unable to set sslpassphrase option');
                    }
                }
            }

            $flags = STREAM_CLIENT_CONNECT;
            if ($this->config['persistent']) $flags |= STREAM_CLIENT_PERSISTENT;

            $this->socket = @stream_socket_client($host . ':' . $port,
                                                  $errno,
                                                  $errstr,
                                                  (int) $this->config['timeout'],
                                                  $flags,
                                                  $context);
            if (! $this->socket) {
                $this->close();
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception(
                    'Unable to Connect to ' . $host . ':' . $port . '. Error #' . $errno . ': ' . $errstr);
            }

            // Set the stream timeout
            if (! stream_set_timeout($this->socket, (int) $this->config['timeout'])) {
                require_once 'Zend/Http/Client/Adapter/Exception.php';
                throw new Zend_Http_Client_Adapter_Exception('Unable to set the connection timeout');
            }

            // Update connected_to
            $this->connected_to = array($host, $port);
        }
    }

    /**
     * Send request to the remote server
     *
     * @param string        $method
     * @param Zend_Uri_Http $uri
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as string
     */
    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
    {
        // Make sure we're properly connected
        if (! $this->socket) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are not connected');
        }

        $host = $uri->getHost();
        $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
        if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Trying to write but we are connected to the wrong host');
        }

        // Save request method for later
        $this->method = $method;

        // Build request headers
        $path = $uri->getPath();
        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
        foreach ($headers as $k => $v) {
            if (is_string($k)) $v = ucfirst($k) . ": $v";
            $request .= "$v\r\n";
        }

        // Add the request body
        $request .= "\r\n" . $body;

        // Send the request
        if (! @fwrite($this->socket, $request)) {
            require_once 'Zend/Http/Client/Adapter/Exception.php';
            throw new Zend_Http_Client_Adapter_Exception('Error writing request to server');
        }

        return $request;
    }

    /**
     * Read response from server
     *
     * @return string
     */
    public function read()
    {
        // First, read headers only
        $response = '';
        $gotStatus = false;
        while (($line = @fgets($this->socket)) !== false) {
            $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
            if ($gotStatus) {
                $response .= $line;
                if (rtrim($line) === '') break;
            }
        }

        $statusCode = Zend_Http_Response::extractCode($response);

        // Handle 100 and 101 responses internally by restarting the read again
        if ($statusCode == 100 || $statusCode == 101) return $this->read();

        /**
         * Responses to HEAD requests and 204 or 304 responses are not expected
         * to have a body - stop reading here
         */
        if ($statusCode == 304 || $statusCode == 204 ||
            $this->method == Zend_Http_Client::HEAD) return $response;

        // Check headers to see what kind of connection / transfer encoding we have
        $headers = Zend_Http_Response::extractHeaders($response);

        // If we got a 'transfer-encoding: chunked' header
        if (isset($headers['transfer-encoding'])) {
            if ($headers['transfer-encoding'] == 'chunked') {
                do {
                    $line  = @fgets($this->socket);
                    $chunk = $line;

                    // Figure out the next chunk size
                    $chunksize = trim($line);
                    if (! ctype_xdigit($chunksize)) {
                        $this->close();
                        require_once 'Zend/Http/Client/Adapter/Exception.php';
                        throw new Zend_Http_Client_Adapter_Exception('Invalid chunk size "' .
                            $chunksize . '" unable to read chunked body');
                    }

                    // Convert the hexadecimal value to plain integer
                    $chunksize = hexdec($chunksize);

                    // Read chunk
                    $left_to_read = $chunksize;
                    while ($left_to_read > 0) {
                        $line = @fread($this->socket, $left_to_read);
                        if ($line === false || strlen($line) === 0)
                        {
                            break;
                        } else {
                            $chunk .= $line;
                            $left_to_read -= strlen($line);
                        }

                        // Break if the connection ended prematurely
                        if (feof($this->socket)) break;
                    }

                    $chunk .= @fgets($this->socket);
                    $response .= $chunk;
                } while ($chunksize > 0);

            } else {
                throw new Zend_Http_Client_Adapter_Exception('Cannot handle "' .
                    $headers['transfer-encoding'] . '" transfer encoding');
            }

        // Else, if we got the content-length header, read this number of bytes
        } elseif (isset($headers['content-length'])) {
            $left_to_read = $headers['content-length'];
            $chunk = '';
            while ($left_to_read > 0) {
                $chunk = @fread($this->socket, $left_to_read);
                if ($chunk === false || strlen($chunk) === 0)
                {
                    break;
                } else {
                    $left_to_read -= strlen($chunk);
                    $response .= $chunk;
                }

                // Break if the connection ended prematurely
                if (feof($this->socket)) break;
            }

        // Fallback: just read the response until EOF
        } else {
        	do {
        		$buff = @fread($this->socket, 8192);
        		if ($buff === false || strlen($buff) === 0)
        		{
        			break;
        		} else {
                    $response .= $buff;
        		}
        	} while (feof($this->socket) === false);

            $this->close();
        }

        // Close the connection if requested to do so by the server
        if (isset($headers['connection']) && $headers['connection'] == 'close') {
            $this->close();
        }

        return $response;
    }

    /**
     * Close the connection to the server
     *
     */
    public function close()
    {
        if (is_resource($this->socket)) @fclose($this->socket);
        $this->socket = null;
        $this->connected_to = array(null, null);
    }

    /**
     * Destructor: make sure the socket is disconnected
     *
     * If we are in persistent TCP mode, will not close the connection
     *
     */
    public function __destruct()
    {
        if (! $this->config['persistent']) {
            if ($this->socket) $this->close();
        }
    }
}
PKpG[�
��!Http/Client/Adapter/Interface.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * An interface description for Zend_Http_Client_Adapter classes.
 *
 * These classes are used as connectors for Zend_Http_Client, performing the
 * tasks of connecting, writing, reading and closing connection to the server.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Http_Client_Adapter_Interface
{
    /**
     * Set the configuration array for the adapter
     *
     * @param array $config
     */
    public function setConfig($config = array());

    /**
     * Connect to the remote server
     *
     * @param string  $host
     * @param int     $port
     * @param boolean $secure
     */
    public function connect($host, $port = 80, $secure = false);

    /**
     * Send request to the remote server
     *
     * @param string        $method
     * @param Zend_Uri_Http $url
     * @param string        $http_ver
     * @param array         $headers
     * @param string        $body
     * @return string Request as text
     */
    public function write($method, $url, $http_ver = '1.1', $headers = array(), $body = '');

    /**
     * Read response from server
     *
     * @return string
     */
    public function read();

    /**
     * Close the connection to the server
     *
     */
    public function close();
}
PKpG["��ddHttp/Client/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client_Exception
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Http/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client_Exception extends Zend_Http_Exception
{}
PKpG[�?oCoCHttp/Response.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Response
 * @version    $Id: Response.php 12519 2008-11-10 18:41:24Z alexander $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Http_Response represents an HTTP 1.0 / 1.1 response message. It
 * includes easy access to all the response's different elemts, as well as some
 * convenience methods for parsing and validating HTTP responses.
 *
 * @package    Zend_Http
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Response
{
    /**
     * List of all known HTTP response codes - used by responseCodeAsText() to
     * translate numeric codes to messages.
     *
     * @var array
     */
    protected static $messages = array(
        // Informational 1xx
        100 => 'Continue',
        101 => 'Switching Protocols',

        // Success 2xx
        200 => 'OK',
        201 => 'Created',
        202 => 'Accepted',
        203 => 'Non-Authoritative Information',
        204 => 'No Content',
        205 => 'Reset Content',
        206 => 'Partial Content',

        // Redirection 3xx
        300 => 'Multiple Choices',
        301 => 'Moved Permanently',
        302 => 'Found',  // 1.1
        303 => 'See Other',
        304 => 'Not Modified',
        305 => 'Use Proxy',
        // 306 is deprecated but reserved
        307 => 'Temporary Redirect',

        // Client Error 4xx
        400 => 'Bad Request',
        401 => 'Unauthorized',
        402 => 'Payment Required',
        403 => 'Forbidden',
        404 => 'Not Found',
        405 => 'Method Not Allowed',
        406 => 'Not Acceptable',
        407 => 'Proxy Authentication Required',
        408 => 'Request Timeout',
        409 => 'Conflict',
        410 => 'Gone',
        411 => 'Length Required',
        412 => 'Precondition Failed',
        413 => 'Request Entity Too Large',
        414 => 'Request-URI Too Long',
        415 => 'Unsupported Media Type',
        416 => 'Requested Range Not Satisfiable',
        417 => 'Expectation Failed',

        // Server Error 5xx
        500 => 'Internal Server Error',
        501 => 'Not Implemented',
        502 => 'Bad Gateway',
        503 => 'Service Unavailable',
        504 => 'Gateway Timeout',
        505 => 'HTTP Version Not Supported',
        509 => 'Bandwidth Limit Exceeded'
    );

    /**
     * The HTTP version (1.0, 1.1)
     *
     * @var string
     */
    protected $version;

    /**
     * The HTTP response code
     *
     * @var int
     */
    protected $code;

    /**
     * The HTTP response code as string
     * (e.g. 'Not Found' for 404 or 'Internal Server Error' for 500)
     *
     * @var string
     */
    protected $message;

    /**
     * The HTTP response headers array
     *
     * @var array
     */
    protected $headers = array();

    /**
     * The HTTP response body
     *
     * @var string
     */
    protected $body;

    /**
     * HTTP response constructor
     *
     * In most cases, you would use Zend_Http_Response::fromString to parse an HTTP
     * response string and create a new Zend_Http_Response object.
     *
     * NOTE: The constructor no longer accepts nulls or empty values for the code and
     * headers and will throw an exception if the passed values do not form a valid HTTP
     * responses.
     *
     * If no message is passed, the message will be guessed according to the response code.
     *
     * @param int $code Response code (200, 404, ...)
     * @param array $headers Headers array
     * @param string $body Response body
     * @param string $version HTTP version
     * @param string $message Response code as text
     * @throws Zend_Http_Exception
     */
    public function __construct($code, $headers, $body = null, $version = '1.1', $message = null)
    {
        // Make sure the response code is valid and set it
        if (self::responseCodeAsText($code) === null) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception("{$code} is not a valid HTTP response code");
        }

        $this->code = $code;

        // Make sure we got valid headers and set them
        if (! is_array($headers)) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('No valid headers were passed');
    }

        foreach ($headers as $name => $value) {
            if (is_int($name))
                list($name, $value) = explode(": ", $value, 1);

            $this->headers[ucwords(strtolower($name))] = $value;
        }

        // Set the body
        $this->body = $body;

        // Set the HTTP version
        if (! preg_match('|^\d\.\d$|', $version)) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception("Invalid HTTP response version: $version");
        }

        $this->version = $version;

        // If we got the response message, set it. Else, set it according to
        // the response code
        if (is_string($message)) {
            $this->message = $message;
        } else {
            $this->message = self::responseCodeAsText($code);
        }
    }

    /**
     * Check whether the response is an error
     *
     * @return boolean
     */
    public function isError()
    {
        $restype = floor($this->code / 100);
        if ($restype == 4 || $restype == 5) {
            return true;
        }

        return false;
    }

    /**
     * Check whether the response in successful
     *
     * @return boolean
     */
    public function isSuccessful()
    {
        $restype = floor($this->code / 100);
        if ($restype == 2 || $restype == 1) { // Shouldn't 3xx count as success as well ???
            return true;
        }

        return false;
    }

    /**
     * Check whether the response is a redirection
     *
     * @return boolean
     */
    public function isRedirect()
    {
        $restype = floor($this->code / 100);
        if ($restype == 3) {
            return true;
        }

        return false;
    }

    /**
     * Get the response body as string
     *
     * This method returns the body of the HTTP response (the content), as it
     * should be in it's readable version - that is, after decoding it (if it
     * was decoded), deflating it (if it was gzip compressed), etc.
     *
     * If you want to get the raw body (as transfered on wire) use
     * $this->getRawBody() instead.
     *
     * @return string
     */
    public function getBody()
    {
        $body = '';

        // Decode the body if it was transfer-encoded
        switch ($this->getHeader('transfer-encoding')) {

            // Handle chunked body
            case 'chunked':
                $body = self::decodeChunkedBody($this->body);
                break;

            // No transfer encoding, or unknown encoding extension:
            // return body as is
            default:
                $body = $this->body;
                break;
        }

        // Decode any content-encoding (gzip or deflate) if needed
        switch (strtolower($this->getHeader('content-encoding'))) {

            // Handle gzip encoding
            case 'gzip':
                $body = self::decodeGzip($body);
                break;

            // Handle deflate encoding
            case 'deflate':
                $body = self::decodeDeflate($body);
                break;

            default:
                break;
        }

        return $body;
    }

    /**
     * Get the raw response body (as transfered "on wire") as string
     *
     * If the body is encoded (with Transfer-Encoding, not content-encoding -
     * IE "chunked" body), gzip compressed, etc. it will not be decoded.
     *
     * @return string
     */
    public function getRawBody()
    {
        return $this->body;
    }

    /**
     * Get the HTTP version of the response
     *
     * @return string
     */
    public function getVersion()
    {
        return $this->version;
    }

    /**
     * Get the HTTP response status code
     *
     * @return int
     */
    public function getStatus()
    {
        return $this->code;
    }

    /**
     * Return a message describing the HTTP response code
     * (Eg. "OK", "Not Found", "Moved Permanently")
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * Get the response headers
     *
     * @return array
     */
    public function getHeaders()
    {
        return $this->headers;
    }

    /**
     * Get a specific header as string, or null if it is not set
     *
     * @param string$header
     * @return string|array|null
     */
    public function getHeader($header)
    {
        $header = ucwords(strtolower($header));
        if (! is_string($header) || ! isset($this->headers[$header])) return null;

        return $this->headers[$header];
    }

    /**
     * Get all headers as string
     *
     * @param boolean $status_line Whether to return the first status line (IE "HTTP 200 OK")
     * @param string $br Line breaks (eg. "\n", "\r\n", "<br />")
     * @return string
     */
    public function getHeadersAsString($status_line = true, $br = "\n")
    {
        $str = '';

        if ($status_line) {
            $str = "HTTP/{$this->version} {$this->code} {$this->message}{$br}";
        }

        // Iterate over the headers and stringify them
        foreach ($this->headers as $name => $value)
        {
            if (is_string($value))
                $str .= "{$name}: {$value}{$br}";

            elseif (is_array($value)) {
                foreach ($value as $subval) {
                    $str .= "{$name}: {$subval}{$br}";
                }
            }
        }

        return $str;
    }

    /**
     * Get the entire response as string
     *
     * @param string $br Line breaks (eg. "\n", "\r\n", "<br />")
     * @return string
     */
    public function asString($br = "\n")
    {
        return $this->getHeadersAsString(true, $br) . $br . $this->getRawBody();
    }

    /**
     * A convenience function that returns a text representation of
     * HTTP response codes. Returns 'Unknown' for unknown codes.
     * Returns array of all codes, if $code is not specified.
     *
     * Conforms to HTTP/1.1 as defined in RFC 2616 (except for 'Unknown')
     * See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10 for reference
     *
     * @param int $code HTTP response code
     * @param boolean $http11 Use HTTP version 1.1
     * @return string
     */
    public static function responseCodeAsText($code = null, $http11 = true)
    {
        $messages = self::$messages;
        if (! $http11) $messages[302] = 'Moved Temporarily';

        if ($code === null) {
            return $messages;
        } elseif (isset($messages[$code])) {
            return $messages[$code];
        } else {
            return 'Unknown';
        }
    }

    /**
     * Extract the response code from a response string
     *
     * @param string $response_str
     * @return int
     */
    public static function extractCode($response_str)
    {
        preg_match("|^HTTP/[\d\.x]+ (\d+)|", $response_str, $m);

        if (isset($m[1])) {
            return (int) $m[1];
        } else {
            return false;
        }
    }

    /**
     * Extract the HTTP message from a response
     *
     * @param string $response_str
     * @return string
     */
    public static function extractMessage($response_str)
    {
        preg_match("|^HTTP/[\d\.x]+ \d+ ([^\r\n]+)|", $response_str, $m);

        if (isset($m[1])) {
            return $m[1];
        } else {
            return false;
        }
    }

    /**
     * Extract the HTTP version from a response
     *
     * @param string $response_str
     * @return string
     */
    public static function extractVersion($response_str)
    {
        preg_match("|^HTTP/([\d\.x]+) \d+|", $response_str, $m);

        if (isset($m[1])) {
            return $m[1];
        } else {
            return false;
        }
    }

    /**
     * Extract the headers from a response string
     *
     * @param string $response_str
     * @return array
     */
    public static function extractHeaders($response_str)
    {
        $headers = array();
        
        // First, split body and headers
        $parts = preg_split('|(?:\r?\n){2}|m', $response_str, 2);
        if (! $parts[0]) return $headers;
        
        // Split headers part to lines
        $lines = explode("\n", $parts[0]);
        unset($parts);
        $last_header = null;

        foreach($lines as $line) {
            $line = trim($line, "\r\n");
            if ($line == "") break;

            if (preg_match("|^([\w-]+):\s+(.+)|", $line, $m)) {
                unset($last_header);
                $h_name = strtolower($m[1]);
                $h_value = $m[2];

                if (isset($headers[$h_name])) {
                    if (! is_array($headers[$h_name])) {
                        $headers[$h_name] = array($headers[$h_name]);
                    }

                    $headers[$h_name][] = $h_value;
                } else {
                    $headers[$h_name] = $h_value;
                }
                $last_header = $h_name;
            } elseif (preg_match("|^\s+(.+)$|", $line, $m) && $last_header !== null) {
                if (is_array($headers[$last_header])) {
                    end($headers[$last_header]);
                    $last_header_key = key($headers[$last_header]);
                    $headers[$last_header][$last_header_key] .= $m[1];
                } else {
                    $headers[$last_header] .= $m[1];
                }
            }
        }

        return $headers;
    }

    /**
     * Extract the body from a response string
     *
     * @param string $response_str
     * @return string
     */
    public static function extractBody($response_str)
    {
        $parts = preg_split('|(?:\r?\n){2}|m', $response_str, 2);
        if (isset($parts[1])) { 
            return $parts[1];
        }
        return '';
    }

    /**
     * Decode a "chunked" transfer-encoded body and return the decoded text
     *
     * @param string $body
     * @return string
     */
    public static function decodeChunkedBody($body)
    {
        $decBody = '';
        
        while (trim($body)) {
            if (! preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm", $body, $m)) {
                require_once 'Zend/Http/Exception.php';
                throw new Zend_Http_Exception("Error parsing body - doesn't seem to be a chunked message");
            }

            $length = hexdec(trim($m[1]));
            $cut = strlen($m[0]);

            $decBody .= substr($body, $cut, $length);
            $body = substr($body, $cut + $length + 2);
        }

        return $decBody;
    }

    /**
     * Decode a gzip encoded message (when Content-encoding = gzip)
     *
     * Currently requires PHP with zlib support
     *
     * @param string $body
     * @return string
     */
    public static function decodeGzip($body)
    {
        if (! function_exists('gzinflate')) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Unable to decode gzipped response ' . 
                'body: perhaps the zlib extension is not loaded?'); 
        }

        return gzinflate(substr($body, 10));
    }

    /**
     * Decode a zlib deflated message (when Content-encoding = deflate)
     *
     * Currently requires PHP with zlib support
     *
     * @param string $body
     * @return string
     */
    public static function decodeDeflate($body)
    {
        if (! function_exists('gzuncompress')) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Unable to decode deflated response ' . 
                'body: perhaps the zlib extension is not loaded?'); 
        }

        return gzuncompress($body);
    }

    /**
     * Create a new Zend_Http_Response object from a string
     *
     * @param string $response_str
     * @return Zend_Http_Response
     */
    public static function fromString($response_str)
    {
        $code    = self::extractCode($response_str);
        $headers = self::extractHeaders($response_str);
        $body    = self::extractBody($response_str);
        $version = self::extractVersion($response_str);
        $message = self::extractMessage($response_str);

        return new Zend_Http_Response($code, $headers, $body, $version, $message);
    }
}
PKpG[����$$Http/Cookie.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Cookie
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com/)
 * @version    $Id: Cookie.php 9098 2008-03-30 19:29:10Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Uri/Http.php';

/**
 * Zend_Http_Cookie is a class describing an HTTP cookie and all it's parameters.
 *
 * Zend_Http_Cookie is a class describing an HTTP cookie and all it's parameters. The
 * class also enables validating whether the cookie should be sent to the server in
 * a specified scenario according to the request URI, the expiry time and whether
 * session cookies should be used or not. Generally speaking cookies should be
 * contained in a Cookiejar object, or instantiated manually and added to an HTTP
 * request.
 *
 * See http://wp.netscape.com/newsref/std/cookie_spec.html for some specs.
 *
 * @category    Zend
 * @package     Zend_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com/)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Cookie
{
    /**
     * Cookie name
     *
     * @var string
     */
    protected $name;

    /**
     * Cookie value
     *
     * @var string
     */
    protected $value;

    /**
     * Cookie expiry date
     *
     * @var int
     */
    protected $expires;

    /**
     * Cookie domain
     *
     * @var string
     */
    protected $domain;

    /**
     * Cookie path
     *
     * @var string
     */
    protected $path;

    /**
     * Whether the cookie is secure or not
     *
     * @var boolean
     */
    protected $secure;

    /**
     * Cookie object constructor
     *
     * @todo Add validation of each one of the parameters (legal domain, etc.)
     *
     * @param string $name
     * @param string $value
     * @param int $expires
     * @param string $domain
     * @param string $path
     * @param bool $secure
     */
    public function __construct($name, $value, $domain, $expires = null, $path = null, $secure = false)
    {
        if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception("Cookie name cannot contain these characters: =,; \\t\\r\\n\\013\\014 ({$name})");
        }

        if (! $this->name = (string) $name) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Cookies must have a name');
        }

        if (! $this->domain = (string) $domain) {
            require_once 'Zend/Http/Exception.php';
            throw new Zend_Http_Exception('Cookies must have a domain');
        }

        $this->value = (string) $value;
        $this->expires = ($expires === null ? null : (int) $expires);
        $this->path = ($path ? $path : '/');
        $this->secure = $secure;
    }

    /**
     * Get Cookie name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Get cookie value
     *
     * @return string
     */
    public function getValue()
    {
        return $this->value;
    }

    /**
     * Get cookie domain
     *
     * @return string
     */
    public function getDomain()
    {
        return $this->domain;
    }

    /**
     * Get the cookie path
     *
     * @return string
     */
    public function getPath()
    {
        return $this->path;
    }

    /**
     * Get the expiry time of the cookie, or null if no expiry time is set
     *
     * @return int|null
     */
    public function getExpiryTime()
    {
        return $this->expires;
    }

    /**
     * Check whether the cookie should only be sent over secure connections
     *
     * @return boolean
     */
    public function isSecure()
    {
        return $this->secure;
    }

    /**
     * Check whether the cookie has expired
     *
     * Always returns false if the cookie is a session cookie (has no expiry time)
     *
     * @param int $now Timestamp to consider as "now"
     * @return boolean
     */
    public function isExpired($now = null)
    {
        if ($now === null) $now = time();
        if (is_int($this->expires) && $this->expires < $now) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Check whether the cookie is a session cookie (has no expiry time set)
     *
     * @return boolean
     */
    public function isSessionCookie()
    {
        return ($this->expires === null);
    }

    /**
     * Checks whether the cookie should be sent or not in a specific scenario
     *
     * @param string|Zend_Uri_Http $uri URI to check against (secure, domain, path)
     * @param boolean $matchSessionCookies Whether to send session cookies
     * @param int $now Override the current time when checking for expiry time
     * @return boolean
     */
    public function match($uri, $matchSessionCookies = true, $now = null)
    {
        if (is_string ($uri)) {
            $uri = Zend_Uri_Http::factory($uri);
        }

        // Make sure we have a valid Zend_Uri_Http object
        if (! ($uri->valid() && ($uri->getScheme() == 'http' || $uri->getScheme() =='https'))) {
            require_once 'Zend/Http/Exception.php';    
            throw new Zend_Http_Exception('Passed URI is not a valid HTTP or HTTPS URI');
        }

        // Check that the cookie is secure (if required) and not expired
        if ($this->secure && $uri->getScheme() != 'https') return false;
        if ($this->isExpired($now)) return false;
        if ($this->isSessionCookie() && ! $matchSessionCookies) return false;

        // Validate domain and path
        // Domain is validated using tail match, while path is validated using head match
        $domain_preg = preg_quote($this->getDomain(), "/");
        if (! preg_match("/{$domain_preg}$/", $uri->getHost())) return false;
        $path_preg = preg_quote($this->getPath(), "/");
        if (! preg_match("/^{$path_preg}/", $uri->getPath())) return false;

        // If we didn't die until now, return true.
        return true;
    }

    /**
     * Get the cookie as a string, suitable for sending as a "Cookie" header in an
     * HTTP request
     *
     * @return string
     */
    public function __toString()
    {
        return $this->name . '=' . urlencode($this->value) . ';';
    }

    /**
     * Generate a new Cookie object from a cookie string
     * (for example the value of the Set-Cookie HTTP header)
     *
     * @param string $cookieStr
     * @param Zend_Uri_Http|string $ref_uri Reference URI for default values (domain, path)
     * @return Zend_Http_Cookie A new Zend_Http_Cookie object or false on failure.
     */
    public static function fromString($cookieStr, $ref_uri = null)
    {
        // Set default values
        if (is_string($ref_uri)) {
            $ref_uri = Zend_Uri_Http::factory($ref_uri);
        }

        $name    = '';
        $value   = '';
        $domain  = '';
        $path    = '';
        $expires = null;
        $secure  = false;
        $parts   = explode(';', $cookieStr);

        // If first part does not include '=', fail
        if (strpos($parts[0], '=') === false) return false;

        // Get the name and value of the cookie
        list($name, $value) = explode('=', trim(array_shift($parts)), 2);
        $name  = trim($name);
        $value = urldecode(trim($value));

        // Set default domain and path
        if ($ref_uri instanceof Zend_Uri_Http) {
            $domain = $ref_uri->getHost();
            $path = $ref_uri->getPath();
            $path = substr($path, 0, strrpos($path, '/'));
        }

        // Set other cookie parameters
        foreach ($parts as $part) {
            $part = trim($part);
            if (strtolower($part) == 'secure') {
                $secure = true;
                continue;
            }

            $keyValue = explode('=', $part, 2);
            if (count($keyValue) == 2) {
                list($k, $v) = $keyValue;
                switch (strtolower($k))    {
                    case 'expires':
                        $expires = strtotime($v);
                        break;
                    case 'path':
                        $path = $v;
                        break;
                    case 'domain':
                        $domain = $v;
                        break;
                    default:
                        break;
                }
            }
        }

        if ($name !== '') {
            return new Zend_Http_Cookie($name, $value, $domain, $expires, $path, $secure);
        } else {
            return false;
        }
    }
}
PKpG[��s���Http/Client.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client
 * @version    $Id: Client.php 12504 2008-11-10 16:28:46Z matthew $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * @see Zend_Uri
 */
require_once 'Zend/Uri.php';


/**
 * @see Zend_Http_Client_Adapter_Interface
 */
require_once 'Zend/Http/Client/Adapter/Interface.php';


/**
 * @see Zend_Http_Response
 */
require_once 'Zend/Http/Response.php';

/**
 * Zend_Http_Client is an implemetation of an HTTP client in PHP. The client
 * supports basic features like sending different HTTP requests and handling
 * redirections, as well as more advanced features like proxy settings, HTTP
 * authentication and cookie persistance (using a Zend_Http_CookieJar object)
 *
 * @todo Implement proxy settings
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client
 * @throws     Zend_Http_Client_Exception
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Client
{
    /**
     * HTTP request methods
     */
    const GET     = 'GET';
    const POST    = 'POST';
    const PUT     = 'PUT';
    const HEAD    = 'HEAD';
    const DELETE  = 'DELETE';
    const TRACE   = 'TRACE';
    const OPTIONS = 'OPTIONS';
    const CONNECT = 'CONNECT';

    /**
     * Supported HTTP Authentication methods
     */
    const AUTH_BASIC = 'basic';
    //const AUTH_DIGEST = 'digest'; <-- not implemented yet

    /**
     * HTTP protocol versions
     */
    const HTTP_1 = '1.1';
    const HTTP_0 = '1.0';

    /**
     * Content attributes
     */
    const CONTENT_TYPE   = 'Content-Type';
    const CONTENT_LENGTH = 'Content-Length';

    /**
     * POST data encoding methods
     */
    const ENC_URLENCODED = 'application/x-www-form-urlencoded';
    const ENC_FORMDATA   = 'multipart/form-data';

    /**
     * Configuration array, set using the constructor or using ::setConfig()
     *
     * @var array
     */
    protected $config = array(
        'maxredirects'    => 5,
        'strictredirects' => false,
        'useragent'       => 'Zend_Http_Client',
        'timeout'         => 10,
        'adapter'         => 'Zend_Http_Client_Adapter_Socket',
        'httpversion'     => self::HTTP_1,
        'keepalive'       => false,
        'storeresponse'   => true,
        'strict'          => true
    );

    /**
     * The adapter used to preform the actual connection to the server
     *
     * @var Zend_Http_Client_Adapter_Interface
     */
    protected $adapter = null;

    /**
     * Request URI
     *
     * @var Zend_Uri_Http
     */
    protected $uri;

    /**
     * Associative array of request headers
     *
     * @var array
     */
    protected $headers = array();

    /**
     * HTTP request method
     *
     * @var string
     */
    protected $method = self::GET;

    /**
     * Associative array of GET parameters
     *
     * @var array
     */
    protected $paramsGet = array();

    /**
     * Assiciative array of POST parameters
     *
     * @var array
     */
    protected $paramsPost = array();

    /**
     * Request body content type (for POST requests)
     *
     * @var string
     */
    protected $enctype = null;

    /**
     * The raw post data to send. Could be set by setRawData($data, $enctype).
     *
     * @var string
     */
    protected $raw_post_data = null;

    /**
     * HTTP Authentication settings
     *
     * Expected to be an associative array with this structure:
     * $this->auth = array('user' => 'username', 'password' => 'password', 'type' => 'basic')
     * Where 'type' should be one of the supported authentication types (see the AUTH_*
     * constants), for example 'basic' or 'digest'.
     *
     * If null, no authentication will be used.
     *
     * @var array|null
     */
    protected $auth;

    /**
     * File upload arrays (used in POST requests)
     *
     * An associative array, where each element is of the format:
     *   'name' => array('filename.txt', 'text/plain', 'This is the actual file contents')
     *
     * @var array
     */
    protected $files = array();

    /**
     * The client's cookie jar
     *
     * @var Zend_Http_CookieJar
     */
    protected $cookiejar = null;

    /**
     * The last HTTP request sent by the client, as string
     *
     * @var string
     */
    protected $last_request = null;

    /**
     * The last HTTP response received by the client
     *
     * @var Zend_Http_Response
     */
    protected $last_response = null;

    /**
     * Redirection counter
     *
     * @var int
     */
    protected $redirectCounter = 0;

    /**
     * Fileinfo magic database resource
     * 
     * This varaiable is populated the first time _detectFileMimeType is called
     * and is then reused on every call to this method
     *
     * @var resource
     */
    static protected $_fileInfoDb = null;
    
    /**
     * Contructor method. Will create a new HTTP client. Accepts the target
     * URL and optionally configuration array.
     *
     * @param Zend_Uri_Http|string $uri
     * @param array $config Configuration key-value pairs.
     */
    public function __construct($uri = null, $config = null)
    {
        if ($uri !== null) $this->setUri($uri);
        if ($config !== null) $this->setConfig($config);
    }

    /**
     * Set the URI for the next request
     *
     * @param  Zend_Uri_Http|string $uri
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setUri($uri)
    {
        if (is_string($uri)) {
            $uri = Zend_Uri::factory($uri);
        }

        if (!$uri instanceof Zend_Uri_Http) {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('Passed parameter is not a valid HTTP URI.');
        }

        // We have no ports, set the defaults
        if (! $uri->getPort()) {
            $uri->setPort(($uri->getScheme() == 'https' ? 443 : 80));
        }

        $this->uri = $uri;

        return $this;
    }

    /**
     * Get the URI for the next request
     *
     * @param boolean $as_string If true, will return the URI as a string
     * @return Zend_Uri_Http|string
     */
    public function getUri($as_string = false)
    {
        if ($as_string && $this->uri instanceof Zend_Uri_Http) {
            return $this->uri->__toString();
        } else {
            return $this->uri;
        }
    }

    /**
     * Set configuration parameters for this HTTP client
     *
     * @param array $config
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setConfig($config = array())
    {
        if (! is_array($config)) {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('Expected array parameter, given ' . gettype($config));
        }

        foreach ($config as $k => $v)
            $this->config[strtolower($k)] = $v;

        // Pass configuration options to the adapter if it exists
        if ($this->adapter instanceof Zend_Http_Client_Adapter_Interface) {
            $this->adapter->setConfig($config);
        }
        
        return $this;
    }

    /**
     * Set the next request's method
     *
     * Validated the passed method and sets it. If we have files set for
     * POST requests, and the new method is not POST, the files are silently
     * dropped.
     *
     * @param string $method
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setMethod($method = self::GET)
    {
        $regex = '/^[^\x00-\x1f\x7f-\xff\(\)<>@,;:\\\\"\/\[\]\?={}\s]+$/';
        if (! preg_match($regex, $method)) {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception("'{$method}' is not a valid HTTP request method.");
        }

        if ($method == self::POST && $this->enctype === null)
            $this->setEncType(self::ENC_URLENCODED);

        $this->method = $method;

        return $this;
    }

    /**
     * Set one or more request headers
     *
     * This function can be used in several ways to set the client's request
     * headers:
     * 1. By providing two parameters: $name as the header to set (eg. 'Host')
     *    and $value as it's value (eg. 'www.example.com').
     * 2. By providing a single header string as the only parameter
     *    eg. 'Host: www.example.com'
     * 3. By providing an array of headers as the first parameter
     *    eg. array('host' => 'www.example.com', 'x-foo: bar'). In This case
     *    the function will call itself recursively for each array item.
     *
     * @param string|array $name Header name, full header string ('Header: value')
     *     or an array of headers
     * @param mixed $value Header value or null
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setHeaders($name, $value = null)
    {
        // If we got an array, go recusive!
        if (is_array($name)) {
            foreach ($name as $k => $v) {
                if (is_string($k)) {
                    $this->setHeaders($k, $v);
                } else {
                    $this->setHeaders($v, null);
                }
            }
        } else {
            // Check if $name needs to be split
            if ($value === null && (strpos($name, ':') > 0))
                list($name, $value) = explode(':', $name, 2);

            // Make sure the name is valid if we are in strict mode
            if ($this->config['strict'] && (! preg_match('/^[a-zA-Z0-9-]+$/', $name))) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("{$name} is not a valid HTTP header name");
            }
            
            $normalized_name = strtolower($name);

            // If $value is null or false, unset the header
            if ($value === null || $value === false) {
                unset($this->headers[$normalized_name]);

            // Else, set the header
            } else {
                // Header names are storred lowercase internally.
                if (is_string($value)) $value = trim($value);
                $this->headers[$normalized_name] = array($name, $value);
            }
        }

        return $this;
    }

    /**
     * Get the value of a specific header
     *
     * Note that if the header has more than one value, an array
     * will be returned.
     *
     * @param string $key
     * @return string|array|null The header value or null if it is not set
     */
    public function getHeader($key)
    {
        $key = strtolower($key);
        if (isset($this->headers[$key])) {
            return $this->headers[$key][1];
        } else {
            return null;
        }
    }

    /**
     * Set a GET parameter for the request. Wrapper around _setParameter
     *
     * @param string|array $name
     * @param string $value
     * @return Zend_Http_Client
     */
    public function setParameterGet($name, $value = null)
    {
        if (is_array($name)) {
            foreach ($name as $k => $v)
                $this->_setParameter('GET', $k, $v);
        } else {
            $this->_setParameter('GET', $name, $value);
        }

        return $this;
    }

    /**
     * Set a POST parameter for the request. Wrapper around _setParameter
     *
     * @param string|array $name
     * @param string $value
     * @return Zend_Http_Client
     */
    public function setParameterPost($name, $value = null)
    {
        if (is_array($name)) {
            foreach ($name as $k => $v)
                $this->_setParameter('POST', $k, $v);
        } else {
            $this->_setParameter('POST', $name, $value);
        }

        return $this;
    }

    /**
     * Set a GET or POST parameter - used by SetParameterGet and SetParameterPost
     *
     * @param string $type GET or POST
     * @param string $name
     * @param string $value
     * @return null
     */
    protected function _setParameter($type, $name, $value)
    {
        $parray = array();
        $type = strtolower($type);
        switch ($type) {
            case 'get':
                $parray = &$this->paramsGet;
                break;
            case 'post':
                $parray = &$this->paramsPost;
                break;
        }

        if ($value === null) {
            if (isset($parray[$name])) unset($parray[$name]);
        } else {
            $parray[$name] = $value;
        }
    }

    /**
     * Get the number of redirections done on the last request
     *
     * @return int
     */
    public function getRedirectionsCount()
    {
        return $this->redirectCounter;
    }

    /**
     * Set HTTP authentication parameters
     *
     * $type should be one of the supported types - see the self::AUTH_*
     * constants.
     *
     * To enable authentication:
     * <code>
     * $this->setAuth('shahar', 'secret', Zend_Http_Client::AUTH_BASIC);
     * </code>
     *
     * To disable authentication:
     * <code>
     * $this->setAuth(false);
     * </code>
     *
     * @see http://www.faqs.org/rfcs/rfc2617.html
     * @param string|false $user User name or false disable authentication
     * @param string $password Password
     * @param string $type Authentication type
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setAuth($user, $password = '', $type = self::AUTH_BASIC)
    {
        // If we got false or null, disable authentication
        if ($user === false || $user === null) {
            $this->auth = null;

        // Else, set up authentication
        } else {
            // Check we got a proper authentication type
            if (! defined('self::AUTH_' . strtoupper($type))) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("Invalid or not supported authentication type: '$type'");
            }

            $this->auth = array(
                'user' => (string) $user,
                'password' => (string) $password,
                'type' => $type
            );
        }

        return $this;
    }

    /**
     * Set the HTTP client's cookie jar.
     *
     * A cookie jar is an object that holds and maintains cookies across HTTP requests
     * and responses.
     *
     * @param Zend_Http_CookieJar|boolean $cookiejar Existing cookiejar object, true to create a new one, false to disable
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setCookieJar($cookiejar = true)
    {
        if (! class_exists('Zend_Http_CookieJar'))
            require_once 'Zend/Http/CookieJar.php';

        if ($cookiejar instanceof Zend_Http_CookieJar) {
            $this->cookiejar = $cookiejar;
        } elseif ($cookiejar === true) {
            $this->cookiejar = new Zend_Http_CookieJar();
        } elseif (! $cookiejar) {
            $this->cookiejar = null;
        } else {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('Invalid parameter type passed as CookieJar');
        }

        return $this;
    }

    /**
     * Return the current cookie jar or null if none.
     *
     * @return Zend_Http_CookieJar|null
     */
    public function getCookieJar()
    {
        return $this->cookiejar;
    }

    /**
     * Add a cookie to the request. If the client has no Cookie Jar, the cookies
     * will be added directly to the headers array as "Cookie" headers.
     *
     * @param Zend_Http_Cookie|string $cookie
     * @param string|null $value If "cookie" is a string, this is the cookie value.
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setCookie($cookie, $value = null)
    {
        if (! class_exists('Zend_Http_Cookie'))
            require_once 'Zend/Http/Cookie.php';

        if (is_array($cookie)) {
            foreach ($cookie as $c => $v) {
                if (is_string($c)) {
                    $this->setCookie($c, $v);
                } else {
                    $this->setCookie($v);
                }
            }

            return $this;
        }

        if ($value !== null) $value = urlencode($value);

        if (isset($this->cookiejar)) {
            if ($cookie instanceof Zend_Http_Cookie) {
                $this->cookiejar->addCookie($cookie);
            } elseif (is_string($cookie) && $value !== null) {
                $cookie = Zend_Http_Cookie::fromString("{$cookie}={$value}", $this->uri);
                $this->cookiejar->addCookie($cookie);
            }
        } else {
            if ($cookie instanceof Zend_Http_Cookie) {
                $name = $cookie->getName();
                $value = $cookie->getValue();
                $cookie = $name;
            }

            if (preg_match("/[=,; \t\r\n\013\014]/", $cookie)) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("Cookie name cannot contain these characters: =,; \t\r\n\013\014 ({$cookie})");
            }

            $value = addslashes($value);

            if (! isset($this->headers['cookie'])) $this->headers['cookie'] = array('Cookie', '');
            $this->headers['cookie'][1] .= $cookie . '=' . $value . '; ';
        }

        return $this;
    }

    /**
     * Set a file to upload (using a POST request)
     *
     * Can be used in two ways:
     *
     * 1. $data is null (default): $filename is treated as the name if a local file which
     *    will be read and sent. Will try to guess the content type using mime_content_type().
     * 2. $data is set - $filename is sent as the file name, but $data is sent as the file
     *    contents and no file is read from the file system. In this case, you need to
     *    manually set the Content-Type ($ctype) or it will default to
     *    application/octet-stream.
     *
     * @param string $filename Name of file to upload, or name to save as
     * @param string $formname Name of form element to send as
     * @param string $data Data to send (if null, $filename is read and sent)
     * @param string $ctype Content type to use (if $data is set and $ctype is
     *     null, will be application/octet-stream)
     * @return Zend_Http_Client
     * @throws Zend_Http_Client_Exception
     */
    public function setFileUpload($filename, $formname, $data = null, $ctype = null)
    {
        if ($data === null) {
            if (($data = @file_get_contents($filename)) === false) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("Unable to read file '{$filename}' for upload");
            }

            if (! $ctype) $ctype = $this->_detectFileMimeType($filename);
        }

        // Force enctype to multipart/form-data
        $this->setEncType(self::ENC_FORMDATA);

        $this->files[$formname] = array(basename($filename), $ctype, $data);

        return $this;
    }

    /**
     * Set the encoding type for POST data
     *
     * @param string $enctype
     * @return Zend_Http_Client
     */
    public function setEncType($enctype = self::ENC_URLENCODED)
    {
        $this->enctype = $enctype;

        return $this;
    }

    /**
     * Set the raw (already encoded) POST data.
     *
     * This function is here for two reasons:
     * 1. For advanced user who would like to set their own data, already encoded
     * 2. For backwards compatibilty: If someone uses the old post($data) method.
     *    this method will be used to set the encoded data.
     *
     * @param string $data
     * @param string $enctype
     * @return Zend_Http_Client
     */
    public function setRawData($data, $enctype = null)
    {
        $this->raw_post_data = $data;
        $this->setEncType($enctype);

        return $this;
    }

    /**
     * Clear all GET and POST parameters
     *
     * Should be used to reset the request parameters if the client is
     * used for several concurrent requests.
     *
     * @return Zend_Http_Client
     */
    public function resetParameters()
    {
        // Reset parameter data
        $this->paramsGet     = array();
        $this->paramsPost    = array();
        $this->files         = array();
        $this->raw_post_data = null;

        // Clear outdated headers
        if (isset($this->headers[strtolower(self::CONTENT_TYPE)]))
            unset($this->headers[strtolower(self::CONTENT_TYPE)]);
        if (isset($this->headers[strtolower(self::CONTENT_LENGTH)]))
            unset($this->headers[strtolower(self::CONTENT_LENGTH)]);

        return $this;
    }

    /**
     * Get the last HTTP request as string
     *
     * @return string
     */
    public function getLastRequest()
    {
        return $this->last_request;
    }

    /**
     * Get the last HTTP response received by this client
     *
     * If $config['storeresponse'] is set to false, or no response was
     * stored yet, will return null
     *
     * @return Zend_Http_Response or null if none
     */
    public function getLastResponse()
    {
        return $this->last_response;
    }

    /**
     * Load the connection adapter
     *
     * While this method is not called more than one for a client, it is
     * seperated from ->request() to preserve logic and readability
     *
     * @param Zend_Http_Client_Adapter_Interface|string $adapter
     * @return null
     * @throws Zend_Http_Client_Exception
     */
    public function setAdapter($adapter)
    {
        if (is_string($adapter)) {
            try {
                Zend_Loader::loadClass($adapter);
            } catch (Zend_Exception $e) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("Unable to load adapter '$adapter': {$e->getMessage()}");
            }

            $adapter = new $adapter;
        }

        if (! $adapter instanceof Zend_Http_Client_Adapter_Interface) {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('Passed adapter is not a HTTP connection adapter');
        }

        $this->adapter = $adapter;
        $config = $this->config;
        unset($config['adapter']);
        $this->adapter->setConfig($config);
    }

    /**
     * Send the HTTP request and return an HTTP response object
     *
     * @param string $method
     * @return Zend_Http_Response
     * @throws Zend_Http_Client_Exception
     */
    public function request($method = null)
    {
        if (! $this->uri instanceof Zend_Uri_Http) {
            /** @see Zend_Http_Client_Exception */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('No valid URI has been passed to the client');
        }

        if ($method) $this->setMethod($method);
        $this->redirectCounter = 0;
        $response = null;

        // Make sure the adapter is loaded
        if ($this->adapter == null) $this->setAdapter($this->config['adapter']);

        // Send the first request. If redirected, continue.
        do {
            // Clone the URI and add the additional GET parameters to it
            $uri = clone $this->uri;
            if (! empty($this->paramsGet)) {
                $query = $uri->getQuery();
                   if (! empty($query)) $query .= '&';
                $query .= http_build_query($this->paramsGet, null, '&');

                $uri->setQuery($query);
            }

            $body = $this->_prepareBody();
            $headers = $this->_prepareHeaders();

            // Open the connection, send the request and read the response
            $this->adapter->connect($uri->getHost(), $uri->getPort(),
                ($uri->getScheme() == 'https' ? true : false));

            $this->last_request = $this->adapter->write($this->method,
                $uri, $this->config['httpversion'], $headers, $body);

            $response = $this->adapter->read();
            if (! $response) {
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception('Unable to read response, or response is empty');
            }

            $response = Zend_Http_Response::fromString($response);
            if ($this->config['storeresponse']) $this->last_response = $response;

            // Load cookies into cookie jar
            if (isset($this->cookiejar)) $this->cookiejar->addCookiesFromResponse($response, $uri);

            // If we got redirected, look for the Location header
            if ($response->isRedirect() && ($location = $response->getHeader('location'))) {

                // Check whether we send the exact same request again, or drop the parameters
                // and send a GET request
                if ($response->getStatus() == 303 ||
                   ((! $this->config['strictredirects']) && ($response->getStatus() == 302 ||
                       $response->getStatus() == 301))) {

                    $this->resetParameters();
                    $this->setMethod(self::GET);
                }

                // If we got a well formed absolute URI
                if (Zend_Uri_Http::check($location)) {
                    $this->setHeaders('host', null);
                    $this->setUri($location);

                } else {

                    // Split into path and query and set the query
                    if (strpos($location, '?') !== false) {
                        list($location, $query) = explode('?', $location, 2);
                    } else {
                        $query = '';
                    }
                    $this->uri->setQuery($query);

                    // Else, if we got just an absolute path, set it
                    if(strpos($location, '/') === 0) {
                        $this->uri->setPath($location);

                        // Else, assume we have a relative path
                    } else {
                        // Get the current path directory, removing any trailing slashes
                        $path = $this->uri->getPath();
                        $path = rtrim(substr($path, 0, strrpos($path, '/')), "/");
                        $this->uri->setPath($path . '/' . $location);
                    }
                }
                ++$this->redirectCounter;

            } else {
                // If we didn't get any location, stop redirecting
                break;
            }

        } while ($this->redirectCounter < $this->config['maxredirects']);

        return $response;
    }

    /**
     * Prepare the request headers
     *
     * @return array
     */
    protected function _prepareHeaders()
    {
        $headers = array();

        // Set the host header
        if (! isset($this->headers['host'])) {
            $host = $this->uri->getHost();

            // If the port is not default, add it
            if (! (($this->uri->getScheme() == 'http' && $this->uri->getPort() == 80) ||
                  ($this->uri->getScheme() == 'https' && $this->uri->getPort() == 443))) {
                $host .= ':' . $this->uri->getPort();
            }

            $headers[] = "Host: {$host}";
        }

        // Set the connection header
        if (! isset($this->headers['connection'])) {
            if (! $this->config['keepalive']) $headers[] = "Connection: close";
        }

        // Set the Accept-encoding header if not set - depending on whether
        // zlib is available or not.
        if (! isset($this->headers['accept-encoding'])) {
            if (function_exists('gzinflate')) {
                $headers[] = 'Accept-encoding: gzip, deflate';
            } else {
                $headers[] = 'Accept-encoding: identity';
            }
        }
        
        // Set the Content-Type header
        if ($this->method == self::POST &&
           (! isset($this->headers[strtolower(self::CONTENT_TYPE)]) && isset($this->enctype))) {

            $headers[] = self::CONTENT_TYPE . ': ' . $this->enctype;
        }
        
        // Set the user agent header
        if (! isset($this->headers['user-agent']) && isset($this->config['useragent'])) {
            $headers[] = "User-Agent: {$this->config['useragent']}";
        }

        // Set HTTP authentication if needed
        if (is_array($this->auth)) {
            $auth = self::encodeAuthHeader($this->auth['user'], $this->auth['password'], $this->auth['type']);
            $headers[] = "Authorization: {$auth}";
        }

        // Load cookies from cookie jar
        if (isset($this->cookiejar)) {
            $cookstr = $this->cookiejar->getMatchingCookies($this->uri,
                true, Zend_Http_CookieJar::COOKIE_STRING_CONCAT);

            if ($cookstr) $headers[] = "Cookie: {$cookstr}";
        }

        // Add all other user defined headers
        foreach ($this->headers as $header) {
            list($name, $value) = $header;
            if (is_array($value))
                $value = implode(', ', $value);

            $headers[] = "$name: $value";
        }

        return $headers;
    }

    /**
     * Prepare the request body (for POST and PUT requests)
     *
     * @return string
     * @throws Zend_Http_Client_Exception
     */
    protected function _prepareBody()
    {
        // According to RFC2616, a TRACE request should not have a body.
        if ($this->method == self::TRACE) {
            return '';
        }

        // If we have raw_post_data set, just use it as the body.
        if (isset($this->raw_post_data)) {
            $this->setHeaders(self::CONTENT_LENGTH, strlen($this->raw_post_data));
            return $this->raw_post_data;
        }

        $body = '';

        // If we have files to upload, force enctype to multipart/form-data
        if (count ($this->files) > 0) $this->setEncType(self::ENC_FORMDATA);

        // If we have POST parameters or files, encode and add them to the body
        if (count($this->paramsPost) > 0 || count($this->files) > 0) {
            switch($this->enctype) {
                case self::ENC_FORMDATA:
                    // Encode body as multipart/form-data
                    $boundary = '---ZENDHTTPCLIENT-' . md5(microtime());
                    $this->setHeaders(self::CONTENT_TYPE, self::ENC_FORMDATA . "; boundary={$boundary}");

                    // Get POST parameters and encode them
                    $params = $this->_getParametersRecursive($this->paramsPost);
                    foreach ($params as $pp) {
                        $body .= self::encodeFormData($boundary, $pp[0], $pp[1]);
                    }

                    // Encode files
                    foreach ($this->files as $name => $file) {
                        $fhead = array(self::CONTENT_TYPE => $file[1]);
                        $body .= self::encodeFormData($boundary, $name, $file[2], $file[0], $fhead);
                    }

                    $body .= "--{$boundary}--\r\n";
                    break;

                case self::ENC_URLENCODED:
                    // Encode body as application/x-www-form-urlencoded
                    $this->setHeaders(self::CONTENT_TYPE, self::ENC_URLENCODED);
                    $body = http_build_query($this->paramsPost, '', '&');
                    break;

                default:
                    /** @see Zend_Http_Client_Exception */
                    require_once 'Zend/Http/Client/Exception.php';
                    throw new Zend_Http_Client_Exception("Cannot handle content type '{$this->enctype}' automatically." .
                        " Please use Zend_Http_Client::setRawData to send this kind of content.");
                    break;
            }
        }
        
        // Set the Content-Length if we have a body or if request is POST/PUT
        if ($body || $this->method == self::POST || $this->method == self::PUT) {
            $this->setHeaders(self::CONTENT_LENGTH, strlen($body));
        }

        return $body;
    }

    /**
     * Helper method that gets a possibly multi-level parameters array (get or
     * post) and flattens it.
     *
     * The method returns an array of (key, value) pairs (because keys are not
     * necessarily unique. If one of the parameters in as array, it will also
     * add a [] suffix to the key.
     *
     * @param array $parray The parameters array
     * @param bool $urlencode Whether to urlencode the name and value
     * @return array
     */
    protected function _getParametersRecursive($parray, $urlencode = false)
    {
        if (! is_array($parray)) return $parray;
        $parameters = array();

        foreach ($parray as $name => $value) {
            if ($urlencode) $name = urlencode($name);

            // If $value is an array, iterate over it
            if (is_array($value)) {
                $name .= ($urlencode ? '%5B%5D' : '[]');
                foreach ($value as $subval) {
                    if ($urlencode) $subval = urlencode($subval);
                    $parameters[] = array($name, $subval);
                }
            } else {
                if ($urlencode) $value = urlencode($value);
                $parameters[] = array($name, $value);
            }
        }

        return $parameters;
    }
    
    /**
     * Attempt to detect the MIME type of a file using available extensions
     * 
     * This method will try to detect the MIME type of a file. If the fileinfo
     * extension is available, it will be used. If not, the mime_magic 
     * extension which is deprected but is still available in many PHP setups
     * will be tried. 
     * 
     * If neither extension is available, the default application/octet-stream
     * MIME type will be returned
     *
     * @param  string $file File path
     * @return string       MIME type
     */
    protected function _detectFileMimeType($file)
    {
        $type = null;
        
        // First try with fileinfo functions
        if (function_exists('finfo_open')) {
            if (self::$_fileInfoDb === null) {
                self::$_fileInfoDb = @finfo_open(FILEINFO_MIME);
            }
            
            if (self::$_fileInfoDb) { 
                $type = finfo_file(self::$_fileInfoDb, $file);
            }
            
        } elseif (function_exists('mime_content_type')) {
            $type = mime_content_type($file);
        }
        
        // Fallback to the default application/octet-stream
        if (! $type) {
            $type = 'application/octet-stream';
        }
        
        return $type;
    }

    /**
     * Encode data to a multipart/form-data part suitable for a POST request.
     *
     * @param string $boundary
     * @param string $name
     * @param mixed $value
     * @param string $filename
     * @param array $headers Associative array of optional headers @example ("Content-Transfer-Encoding" => "binary")
     * @return string
     */
    public static function encodeFormData($boundary, $name, $value, $filename = null, $headers = array()) {
        $ret = "--{$boundary}\r\n" .
            'Content-Disposition: form-data; name="' . $name .'"';

        if ($filename) $ret .= '; filename="' . $filename . '"';
        $ret .= "\r\n";

        foreach ($headers as $hname => $hvalue) {
            $ret .= "{$hname}: {$hvalue}\r\n";
        }
        $ret .= "\r\n";

        $ret .= "{$value}\r\n";

        return $ret;
    }

    /**
     * Create a HTTP authentication "Authorization:" header according to the
     * specified user, password and authentication method.
     *
     * @see http://www.faqs.org/rfcs/rfc2617.html
     * @param string $user
     * @param string $password
     * @param string $type
     * @return string
     * @throws Zend_Http_Client_Exception
     */
    public static function encodeAuthHeader($user, $password, $type = self::AUTH_BASIC)
    {
        $authHeader = null;

        switch ($type) {
            case self::AUTH_BASIC:
                // In basic authentication, the user name cannot contain ":"
                if (strpos($user, ':') !== false) {
                    /** @see Zend_Http_Client_Exception */
                    require_once 'Zend/Http/Client/Exception.php';
                    throw new Zend_Http_Client_Exception("The user name cannot contain ':' in 'Basic' HTTP authentication");
                }

                $authHeader = 'Basic ' . base64_encode($user . ':' . $password);
                break;

            //case self::AUTH_DIGEST:
                /**
                 * @todo Implement digest authentication
                 */
            //    break;

            default:
                /** @see Zend_Http_Client_Exception */
                require_once 'Zend/Http/Client/Exception.php';
                throw new Zend_Http_Client_Exception("Not a supported HTTP authentication type: '$type'");
        }

        return $authHeader;
    }
}
PKpG[/jM�LLHttp/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Exception
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Http
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Http_Exception extends Zend_Exception
{}
PKpG[����0�0Measure/Density.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Density.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling density conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Density
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Density extends Zend_Measure_Abstract
{
    const STANDARD = 'KILOGRAM_PER_CUBIC_METER';

    const ALUMINIUM                      = 'ALUMINIUM';
    const COPPER                         = 'COPPER';
    const GOLD                           = 'GOLD';
    const GRAIN_PER_CUBIC_FOOT           = 'GRAIN_PER_CUBIC_FOOT';
    const GRAIN_PER_CUBIC_INCH           = 'GRAIN_PER_CUBIC_INCH';
    const GRAIN_PER_CUBIC_YARD           = 'GRAIN_PER_CUBIC_YARD';
    const GRAIN_PER_GALLON               = 'GRAIN_PER_GALLON';
    const GRAIN_PER_GALLON_US            = 'GRAIN_PER_GALLON_US';
    const GRAM_PER_CUBIC_CENTIMETER      = 'GRAM_PER_CUBIC_CENTIMETER';
    const GRAM_PER_CUBIC_DECIMETER       = 'GRAM_PER_CUBIC_DECIMETER';
    const GRAM_PER_CUBIC_METER           = 'GRAM_PER_CUBIC_METER';
    const GRAM_PER_LITER                 = 'GRAM_PER_LITER';
    const GRAM_PER_MILLILITER            = 'GRAM_PER_MILLILITER';
    const IRON                           = 'IRON';
    const KILOGRAM_PER_CUBIC_CENTIMETER  = 'KILOGRAM_PER_CUBIC_CENTIMETER';
    const KILOGRAM_PER_CUBIC_DECIMETER   = 'KILOGRAM_PER_CUBIC_DECIMETER';
    const KILOGRAM_PER_CUBIC_METER       = 'KILOGRAM_PER_CUBIC_METER';
    const KILOGRAM_PER_CUBIC_MILLIMETER  = 'KILOGRAM_PER_CUBIC_MILLIMETER';
    const KILOGRAM_PER_LITER             = 'KILOGRAM_PER_LITER';
    const KILOGRAM_PER_MILLILITER        = 'KILOGRAM_PER_MILLILITER';
    const LEAD                           = 'LEAD';
    const MEGAGRAM_PER_CUBIC_CENTIMETER  = 'MEGAGRAM_PER_CUBIC_CENTIMETER';
    const MEGAGRAM_PER_CUBIC_DECIMETER   = 'MEGAGRAM_PER_CUBIC_DECIMETER';
    const MEGAGRAM_PER_CUBIC_METER       = 'MEGAGRAM_PER_CUBIC_METER';
    const MEGAGRAM_PER_LITER             = 'MEGAGRAM_PER_LITER';
    const MEGAGRAM_PER_MILLILITER        = 'MEGAGRAM_PER_MILLILITER';
    const MICROGRAM_PER_CUBIC_CENTIMETER = 'MICROGRAM_PER_CUBIC_CENTIMETER';
    const MICROGRAM_PER_CUBIC_DECIMETER  = 'MICROGRAM_PER_CUBIC_DECIMETER';
    const MICROGRAM_PER_CUBIC_METER      = 'MICROGRAM_PER_CUBIC_METER';
    const MICROGRAM_PER_LITER            = 'MICROGRAM_PER_LITER';
    const MICROGRAM_PER_MILLILITER       = 'MICROGRAM_PER_MILLILITER';
    const MILLIGRAM_PER_CUBIC_CENTIMETER = 'MILLIGRAM_PER_CUBIC_CENTIMETER';
    const MILLIGRAM_PER_CUBIC_DECIMETER  = 'MILLIGRAM_PER_CUBIC_DECIMETER';
    const MILLIGRAM_PER_CUBIC_METER      = 'MILLIGRAM_PER_CUBIC_METER';
    const MILLIGRAM_PER_LITER            = 'MILLIGRAM_PER_LITER';
    const MILLIGRAM_PER_MILLILITER       = 'MILLIGRAM_PER_MILLILITER';
    const OUNCE_PER_CUBIC_FOOT           = 'OUNCE_PER_CUBIC_FOOT';
    const OUNCR_PER_CUBIC_FOOT_TROY      = 'OUNCE_PER_CUBIC_FOOT_TROY';
    const OUNCE_PER_CUBIC_INCH           = 'OUNCE_PER_CUBIC_INCH';
    const OUNCE_PER_CUBIC_INCH_TROY      = 'OUNCE_PER_CUBIC_INCH_TROY';
    const OUNCE_PER_CUBIC_YARD           = 'OUNCE_PER_CUBIC_YARD';
    const OUNCE_PER_CUBIC_YARD_TROY      = 'OUNCE_PER_CUBIC_YARD_TROY';
    const OUNCE_PER_GALLON               = 'OUNCE_PER_GALLON';
    const OUNCE_PER_GALLON_US            = 'OUNCE_PER_GALLON_US';
    const OUNCE_PER_GALLON_TROY          = 'OUNCE_PER_GALLON_TROY';
    const OUNCE_PER_GALLON_US_TROY       = 'OUNCE_PER_GALLON_US_TROY';
    const POUND_PER_CIRCULAR_MIL_FOOT    = 'POUND_PER_CIRCULAR_MIL_FOOT';
    const POUND_PER_CUBIC_FOOT           = 'POUND_PER_CUBIC_FOOT';
    const POUND_PER_CUBIC_INCH           = 'POUND_PER_CUBIC_INCH';
    const POUND_PER_CUBIC_YARD           = 'POUND_PER_CUBIC_YARD';
    const POUND_PER_GALLON               = 'POUND_PER_GALLON';
    const POUND_PER_KILOGALLON           = 'POUND_PER_KILOGALLON';
    const POUND_PER_MEGAGALLON           = 'POUND_PER_MEGAGALLON';
    const POUND_PER_GALLON_US            = 'POUND_PER_GALLON_US';
    const POUND_PER_KILOGALLON_US        = 'POUND_PER_KILOGALLON_US';
    const POUND_PER_MEGAGALLON_US        = 'POUND_PER_MEGAGALLON_US';
    const SILVER                         = 'SILVER';
    const SLUG_PER_CUBIC_FOOT            = 'SLUG_PER_CUBIC_FOOT';
    const SLUG_PER_CUBIC_INCH            = 'SLUG_PER_CUBIC_INCH';
    const SLUG_PER_CUBIC_YARD            = 'SLUG_PER_CUBIC_YARD';
    const SLUG_PER_GALLON                = 'SLUG_PER_GALLON';
    const SLUG_PER_GALLON_US             = 'SLUG_PER_GALLON_US';
    const TON_PER_CUBIC_FOOT_LONG        = 'TON_PER_CUBIC_FOOT_LONG';
    const TON_PER_CUBIC_FOOT             = 'TON_PER_CUBIC_FOOT';
    const TON_PER_CUBIC_INCH_LONG        = 'TON_PER_CUBIC_INCH_LONG';
    const TON_PER_CUBIC_INCH             = 'TON_PER_CUBIC_INCH';
    const TON_PER_CUBIC_YARD_LONG        = 'TON_PER_CUBIC_YARD_LONG';
    const TON_PER_CUBIC_YARD             = 'TON_PER_CUBIC_YARD';
    const TON_PER_GALLON_LONG            = 'TON_PER_GALLON_LONG';
    const TON_PER_GALLON_US_LONG         = 'TON_PER_GALLON_US_LONG';
    const TON_PER_GALLON                 = 'TON_PER_GALLON';
    const TON_PER_GALLON_US              = 'TON_PER_GALLON_US';
    const TONNE_PER_CUBIC_CENTIMETER     = 'TONNE_PER_CUBIC_CENTIMETER';
    const TONNE_PER_CUBIC_DECIMETER      = 'TONNE_PER_CUBIC_DECIMETER';
    const TONNE_PER_CUBIC_METER          = 'TONNE_PER_CUBIC_METER';
    const TONNE_PER_LITER                = 'TONNE_PER_LITER';
    const TONNE_PER_MILLILITER           = 'TONNE_PER_MILLILITER';
    const WATER                          = 'WATER';

    /**
     * Calculations for all density units
     *
     * @var array
     */
    protected $_units = array(
        'ALUMINIUM'                 => array('2643',           'aluminium'),
        'COPPER'                    => array('8906',           'copper'),
        'GOLD'                      => array('19300',          'gold'),
        'GRAIN_PER_CUBIC_FOOT'      => array('0.0022883519',   'gr/ft³'),
        'GRAIN_PER_CUBIC_INCH'      => array('3.9542721',      'gr/in³'),
        'GRAIN_PER_CUBIC_YARD'      => array('0.000084753774', 'gr/yd³'),
        'GRAIN_PER_GALLON'          => array('0.014253768',    'gr/gal'),
        'GRAIN_PER_GALLON_US'       => array('0.017118061',    'gr/gal'),
        'GRAM_PER_CUBIC_CENTIMETER' => array('1000',           'g/cm³'),
        'GRAM_PER_CUBIC_DECIMETER'  => array('1',              'g/dm³'),
        'GRAM_PER_CUBIC_METER'      => array('0.001',          'g/m³'),
        'GRAM_PER_LITER'            => array('1',              'g/l'),
        'GRAM_PER_MILLILITER'       => array('1000',           'g/ml'),
        'IRON'                      => array('7658',           'iron'),
        'KILOGRAM_PER_CUBIC_CENTIMETER' => array('1000000',    'kg/cm³'),
        'KILOGRAM_PER_CUBIC_DECIMETER'  => array('1000',       'kg/dm³'),
        'KILOGRAM_PER_CUBIC_METER'  => array('1',              'kg/m³'),
        'KILOGRAM_PER_CUBIC_MILLIMETER' => array('1000000000', 'kg/l'),
        'KILOGRAM_PER_LITER'        => array('1000',           'kg/ml'),
        'KILOGRAM_PER_MILLILITER'   => array('1000000',        'kg/ml'),
        'LEAD'                      => array('11370',          'lead'),
        'MEGAGRAM_PER_CUBIC_CENTIMETER' => array('1.0e+9',     'Mg/cm³'),
        'MEGAGRAM_PER_CUBIC_DECIMETER'  => array('1000000',    'Mg/dm³'),
        'MEGAGRAM_PER_CUBIC_METER'  => array('1000',           'Mg/m³'),
        'MEGAGRAM_PER_LITER'        => array('1000000',        'Mg/l'),
        'MEGAGRAM_PER_MILLILITER'   => array('1.0e+9',         'Mg/ml'),
        'MICROGRAM_PER_CUBIC_CENTIMETER' => array('0.001',     'µg/cm³'),
        'MICROGRAM_PER_CUBIC_DECIMETER'  => array('1.0e-6',    'µg/dm³'),
        'MICROGRAM_PER_CUBIC_METER' => array('1.0e-9',         'µg/m³'),
        'MICROGRAM_PER_LITER'       => array('1.0e-6',         'µg/l'),
        'MICROGRAM_PER_MILLILITER'  => array('0.001',          'µg/ml'),
        'MILLIGRAM_PER_CUBIC_CENTIMETER' => array('1',         'mg/cm³'),
        'MILLIGRAM_PER_CUBIC_DECIMETER'  => array('0.001',     'mg/dm³'),
        'MILLIGRAM_PER_CUBIC_METER' => array('0.000001',       'mg/m³'),
        'MILLIGRAM_PER_LITER'       => array('0.001',          'mg/l'),
        'MILLIGRAM_PER_MILLILITER'  => array('1',              'mg/ml'),
        'OUNCE_PER_CUBIC_FOOT'      => array('1.001154',       'oz/ft³'),
        'OUNCE_PER_CUBIC_FOOT_TROY' => array('1.0984089',      'oz/ft³'),
        'OUNCE_PER_CUBIC_INCH'      => array('1729.994',       'oz/in³'),
        'OUNCE_PER_CUBIC_INCH_TROY' => array('1898.0506',      'oz/in³'),
        'OUNCE_PER_CUBIC_YARD'      => array('0.037079776',    'oz/yd³'),
        'OUNCE_PER_CUBIC_YARD_TROY' => array('0.040681812',    'oz/yd³'),
        'OUNCE_PER_GALLON'          => array('6.2360233',      'oz/gal'),
        'OUNCE_PER_GALLON_US'       => array('7.4891517',      'oz/gal'),
        'OUNCE_PER_GALLON_TROY'     => array('6.8418084',      'oz/gal'),
        'OUNCE_PER_GALLON_US_TROY'  => array('8.2166693',      'oz/gal'),
        'POUND_PER_CIRCULAR_MIL_FOOT' => array('2.9369291',    'lb/cmil ft'),
        'POUND_PER_CUBIC_FOOT'      => array('16.018463',      'lb/in³'),
        'POUND_PER_CUBIC_INCH'      => array('27679.905',      'lb/in³'),
        'POUND_PER_CUBIC_YARD'      => array('0.59327642',     'lb/yd³'),
        'POUND_PER_GALLON'          => array('99.776373',      'lb/gal'),
        'POUND_PER_KILOGALLON'      => array('0.099776373',    'lb/kgal'),
        'POUND_PER_MEGAGALLON'      => array('0.000099776373', 'lb/Mgal'),
        'POUND_PER_GALLON_US'       => array('119.82643',      'lb/gal'),
        'POUND_PER_KILOGALLON_US'   => array('0.11982643',     'lb/kgal'),
        'POUND_PER_MEGAGALLON_US'   => array('0.00011982643',  'lb/Mgal'),
        'SILVER'                    => array('10510',          'silver'),
        'SLUG_PER_CUBIC_FOOT'       => array('515.37882',      'slug/ft³'),
        'SLUG_PER_CUBIC_INCH'       => array('890574.6',       'slug/in³'),
        'SLUG_PER_CUBIC_YARD'       => array('19.088104',      'slug/yd³'),
        'SLUG_PER_GALLON'           => array('3210.2099',      'slug/gal'),
        'SLUG_PER_GALLON_US'        => array('3855.3013',      'slug/gal'),
        'TON_PER_CUBIC_FOOT_LONG'   => array('35881.358',      't/ft³'),
        'TON_PER_CUBIC_FOOT'        => array('32036.927',      't/ft³'),
        'TON_PER_CUBIC_INCH_LONG'   => array('6.2202987e+7',   't/in³'),
        'TON_PER_CUBIC_INCH'        => array('5.5359809e+7',   't/in³'),
        'TON_PER_CUBIC_YARD_LONG'   => array('1328.9392',      't/yd³'),
        'TON_PER_CUBIC_YARD'        => array('1186.5528',      't/yd³'),
        'TON_PER_GALLON_LONG'       => array('223499.07',      't/gal'),
        'TON_PER_GALLON_US_LONG'    => array('268411.2',       't/gal'),
        'TON_PER_GALLON'            => array('199522.75',      't/gal'),
        'TON_PER_GALLON_US'         => array('239652.85',      't/gal'),
        'TONNE_PER_CUBIC_CENTIMETER' => array('1.0e+9',        't/cm³'),
        'TONNE_PER_CUBIC_DECIMETER'  => array('1000000',       't/dm³'),
        'TONNE_PER_CUBIC_METER'     => array('1000',           't/m³'),
        'TONNE_PER_LITER'           => array('1000000',        't/l'),
        'TONNE_PER_MILLILITER'      => array('1.0e+9',         't/ml'),
        'WATER'                     => array('1000',           'water'),
        'STANDARD'                  => 'KILOGRAM_PER_CUBIC_METER'
    );
}
PKpG[��@��3�3Measure/Number.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Number.php 12514 2008-11-10 16:30:24Z matthew $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling number conversions
 *
 * This class can only handle numbers without precission
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Number
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Number extends Zend_Measure_Abstract
{
    const STANDARD = 'DECIMAL';

    const BINARY      = 'BINARY';
    const TERNARY     = 'TERNARY';
    const QUATERNARY  = 'QUATERNARY';
    const QUINARY     = 'QUINARY';
    const SENARY      = 'SENARY';
    const SEPTENARY   = 'SEPTENARY';
    const OCTAL       = 'OCTAL';
    const NONARY      = 'NONARY';
    const DECIMAL     = 'DECIMAL';
    const DUODECIMAL  = 'DUODECIMAL';
    const HEXADECIMAL = 'HEXADECIMAL';
    const ROMAN       = 'ROMAN';

    /**
     * Calculations for all number units
     *
     * @var array
     */
    protected $_units = array(
        'BINARY'      => array(2,  '⑵'),
        'TERNARY'     => array(3,  '⑶'),
        'QUATERNARY'  => array(4,  '⑷'),
        'QUINARY'     => array(5,  '⑸'),
        'SENARY'      => array(6,  '⑹'),
        'SEPTENARY'   => array(7,  '⑺'),
        'OCTAL'       => array(8,  '⑻'),
        'NONARY'      => array(9,  '⑼'),
        'DECIMAL'     => array(10, '⑽'),
        'DUODECIMAL'  => array(12, '⑿'),
        'HEXADECIMAL' => array(16, '⒃'),
        'ROMAN'       => array(99, ''),
        'STANDARD'    => 'DECIMAL'
    );

    /**
     * Definition of all roman signs
     * 
     * @var array $_roman
     */
    private static $_roman = array(
        'I' => 1,
        'A' => 4,
        'V' => 5,
        'B' => 9,
        'X' => 10,
        'E' => 40,
        'L' => 50,
        'F' => 90,
        'C' => 100,
        'G' => 400,
        'D' => 500,
        'H' => 900,
        'M' => 1000,
        'J' => 4000,
        'P' => 5000,
        'K' => 9000,
        'Q' => 10000,
        'N' => 40000,
        'R' => 50000,
        'W' => 90000,
        'S' => 100000,
        'Y' => 400000,
        'T' => 500000,
        'Z' => 900000,
        'U' => 1000000
    );

    /**
     * Convertion table for roman signs
     * 
     * @var array $_romanconvert
     */
    private static $_romanconvert = array(
        '/_V/' => '/P/',
        '/_X/' => '/Q/',
        '/_L/' => '/R/',
        '/_C/' => '/S/',
        '/_D/' => '/T/',
        '/_M/' => '/U/',
        '/IV/' => '/A/',
        '/IX/' => '/B/',
        '/XL/' => '/E/',
        '/XC/' => '/F/',
        '/CD/' => '/G/',
        '/CM/' => '/H/',
        '/M_V/'=> '/J/',
        '/MQ/' => '/K/',
        '/QR/' => '/N/',
        '/QS/' => '/W/',
        '/ST/' => '/Y/',
        '/SU/' => '/Z/'
    );

    /**
     * Zend_Measure_Abstract is an abstract class for the different measurement types
     *
     * @param  integer            $value  Value
     * @param  string             $type   (Optional) A Zend_Measure_Number Type
     * @param  string|Zend_Locale $locale (Optional) A Zend_Locale
     * @throws Zend_Measure_Exception When language is unknown
     * @throws Zend_Measure_Exception When type is unknown
     */
    public function __construct($value, $type, $locale = null)
    {
        if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) {
            $locale = $type;
            $type = null;
        }

        if ($locale === null) {
            $locale = new Zend_Locale();
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, true, false)) {
                require_once 'Zend/Measure/Exception.php';
                throw new Zend_Measure_Exception("Language (" . (string) $locale . ") is unknown");
            }

            $locale = new Zend_Locale($locale);
        }

        $this->_locale = (string) $locale;

        if ($type === null) {
            $type = $this->_units['STANDARD'];
        }

        if (isset($this->_units[$type]) === false) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception("Type ($type) is unknown");
        }

        $this->setValue($value, $type, $this->_locale);
    }

    /**
     * Set a new value
     *
     * @param  integer            $value  Value
     * @param  string             $type   (Optional) A Zend_Measure_Number Type
     * @param  string|Zend_Locale $locale (Optional) A Zend_Locale Type
     * @throws Zend_Measure_Exception
     */
    public function setValue($value, $type = null, $locale = null)
    {
        if (empty($locale)) {
            $locale = $this->_locale;
        }

        if (empty($this->_units[$type])) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception('unknown type of number:' . $type);
        }

        switch($type) {
            case 'BINARY':
                preg_match('/[01]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'TERNARY':
                preg_match('/[012]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'QUATERNARY':
                preg_match('/[0123]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'QUINARY':
                preg_match('/[01234]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'SENARY':
                preg_match('/[012345]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'SEPTENARY':
                preg_match('/[0123456]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'OCTAL':
                preg_match('/[01234567]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'NONARY':
                preg_match('/[012345678]+/', $value, $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'DUODECIMAL':
                preg_match('/[0123456789AB]+/', strtoupper($value), $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'HEXADECIMAL':
                preg_match('/[0123456789ABCDEF]+/', strtoupper($value), $ergebnis);
                $value = $ergebnis[0];
                break;

            case 'ROMAN':
                preg_match('/[IVXLCDM_]+/', strtoupper($value), $ergebnis);
                $value = $ergebnis[0];
                break;

            default:
                try {
                    $value = Zend_Locale_Format::getInteger($value, array('locale' => $locale));
                } catch (Exception $e) {
                    require_once 'Zend/Measure/Exception.php';
                    throw new Zend_Measure_Exception($e->getMessage());
                }
                if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
                    $value = call_user_func(Zend_Locale_Math::$sqrt, call_user_func(Zend_Locale_Math::$pow, $value, 2));
                }
                break;
        }

        $this->_value = $value;
        $this->_type  = $type;
    }

    /**
     * Convert input to decimal value string
     *
     * @param  integer $input Input string
     * @param  string  $type  Type from which to convert to decimal
     * @return string
     */
    private function _toDecimal($input, $type)
    {
        $value = '';
        // Convert base xx values
        if ($this->_units[$type][0] <= 16) {
            $split  = str_split($input);
            $length = strlen($input);
            for ($x = 0; $x < $length; ++$x) {
                $split[$x] = hexdec($split[$x]);
                $value     = call_user_func(Zend_Locale_Math::$add, $value,
                            call_user_func(Zend_Locale_Math::$mul, $split[$x],
                            call_user_func(Zend_Locale_Math::$pow, $this->_units[$type][0], ($length - $x - 1))));
            }
        }

        // Convert roman numbers
        if ($type === 'ROMAN') {
            $input = strtoupper($input);
            $input = preg_replace(array_keys(self::$_romanconvert), array_values(self::$_romanconvert), $input);

            $split = preg_split('//', strrev($input), -1, PREG_SPLIT_NO_EMPTY);

            for ($x =0; $x < sizeof($split); $x++) {
                if ($split[$x] == '/') {
                    continue;
                }

                $num = self::$_roman[$split[$x]];
                if (($x > 0 and ($split[$x-1] != '/') and ($num < self::$_roman[$split[$x-1]]))) {
                    $num -= $num;
                }

                $value += $num;
            }

            str_replace('/', '', $value);
        }

        return $value;
    }

    /**
     * Convert input to type value string
     *
     * @param  integer $value Input string
     * @param  string  $type  Type to convert to
     * @return string
     * @throws Zend_Measure_Exception When more than 200 digits are calculated
     */
    private function _fromDecimal($value, $type)
    {
        $tempvalue = $value;
        if ($this->_units[$type][0] <= 16) {
            $newvalue = '';
            $count    = 200;
            $base     = $this->_units[$type][0];

            while (call_user_func(Zend_Locale_Math::$comp, $value, 0, 25) <> 0) {
                $target = call_user_func(Zend_Locale_Math::$mod, $value, $base);

                $newvalue = strtoupper(dechex($target)) . $newvalue;
                
                $value = call_user_func(Zend_Locale_Math::$sub, $value, $target, 0);
                $value = call_user_func(Zend_Locale_Math::$div, $value, $base, 0);

                --$count;
                if ($count === 0) {
                    require_once 'Zend/Measure/Exception.php';
                    throw new Zend_Measure_Exception("Your value '$tempvalue' cannot be processed because it extends 200 digits");
                }
            }
            
            if ($newvalue === '') {
                $newvalue = '0';
            }
        }

        if ($type === 'ROMAN') {
            $i        = 0;
            $newvalue = '';
            $romanval = array_values(array_reverse(self::$_roman));
            $romankey = array_keys(array_reverse(self::$_roman));
            $count    = 200;
            while (call_user_func(Zend_Locale_Math::$comp, $value, 0, 25) <> 0) {
                while ($value >= $romanval[$i]) {
                    $value    -= $romanval[$i];
                    $newvalue .= $romankey[$i];

                    if ($value < 1) {
                        break;
                    }

                    --$count;
                    if ($count === 0) {
                        require_once 'Zend/Measure/Exception.php';
                        throw new Zend_Measure_Exception("Your value '$tempvalue' cannot be processed because it extends 200 digits");
                    }
                }

                $i++;
            }

            $newvalue = str_replace('/', '', preg_replace(array_values(self::$_romanconvert), array_keys(self::$_romanconvert), $newvalue));
        }

        return $newvalue;
    }

    /**
     * Set a new type, and convert the value
     *
     * @param  string $type New type to set
     * @throws Zend_Measure_Exception When a unknown type is given
     * @return void
     */
    public function setType($type)
    {
        if (empty($this->_units[$type]) === true) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception('Unknown type of number:' . $type);
        }

        $value = $this->_toDecimal($this->getValue(-1), $this->getType(-1));
        $value = $this->_fromDecimal($value, $type);

        $this->_value = $value;
        $this->_type  = $type;
    }

    /**
     * Alias function for setType returning the converted unit
     * Default is 0 as this class only handles numbers without precision
     *
     * @param  string  $type  Type to convert to
     * @param  integer $round (Optional) Precision to add, will always be 0
     * @return string
     */
    public function convertTo($type, $round = 0)
    {
        $this->setType($type);
        return $this->toString($round);
    }
}
PKpG[>)+��8�8Measure/Energy.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Energy.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling energy conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Energy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Energy extends Zend_Measure_Abstract
{
    const STANDARD = 'JOULE';

    const ATTOJOULE                  = 'ATTOJOULE';
    const BOARD_OF_TRADE_UNIT        = 'BOARD_OF_TRADE_UNIT';
    const BTU                        = 'BTU';
    const BTU_THERMOCHEMICAL         = 'BTU_TERMOCHEMICAL';
    const CALORIE                    = 'CALORIE';
    const CALORIE_15C                = 'CALORIE_15C';
    const CALORIE_NUTRITIONAL        = 'CALORIE_NUTRITIONAL';
    const CALORIE_THERMOCHEMICAL     = 'CALORIE_THERMOCHEMICAL';
    const CELSIUS_HEAT_UNIT          = 'CELSIUS_HEAT_UNIT';
    const CENTIJOULE                 = 'CENTIJOULE';
    const CHEVAL_VAPEUR_HEURE        = 'CHEVAL_VAPEUR_HEURE';
    const DECIJOULE                  = 'DECIJOULE';
    const DEKAJOULE                  = 'DEKAJOULE';
    const DEKAWATT_HOUR              = 'DEKAWATT_HOUR';
    const DEKATHERM                  = 'DEKATHERM';
    const ELECTRONVOLT               = 'ELECTRONVOLT';
    const ERG                        = 'ERG';
    const EXAJOULE                   = 'EXAJOULE';
    const EXAWATT_HOUR               = 'EXAWATT_HOUR';
    const FEMTOJOULE                 = 'FEMTOJOULE';
    const FOOT_POUND                 = 'FOOT_POUND';
    const FOOT_POUNDAL               = 'FOOT_POUNDAL';
    const GALLON_UK_AUTOMOTIVE       = 'GALLON_UK_AUTOMOTIVE';
    const GALLON_US_AUTOMOTIVE       = 'GALLON_US_AUTOMOTIVE';
    const GALLON_UK_AVIATION         = 'GALLON_UK_AVIATION';
    const GALLON_US_AVIATION         = 'GALLON_US_AVIATION';
    const GALLON_UK_DIESEL           = 'GALLON_UK_DIESEL';
    const GALLON_US_DIESEL           = 'GALLON_US_DIESEL';
    const GALLON_UK_DISTILATE        = 'GALLON_UK_DISTILATE';
    const GALLON_US_DISTILATE        = 'GALLON_US_DISTILATE';
    const GALLON_UK_KEROSINE_JET     = 'GALLON_UK_KEROSINE_JET';
    const GALLON_US_KEROSINE_JET     = 'GALLON_US_KEROSINE_JET';
    const GALLON_UK_LPG              = 'GALLON_UK_LPG';
    const GALLON_US_LPG              = 'GALLON_US_LPG';
    const GALLON_UK_NAPHTA           = 'GALLON_UK_NAPHTA';
    const GALLON_US_NAPHTA           = 'GALLON_US_NAPHTA';
    const GALLON_UK_KEROSENE         = 'GALLON_UK_KEROSINE';
    const GALLON_US_KEROSENE         = 'GALLON_US_KEROSINE';
    const GALLON_UK_RESIDUAL         = 'GALLON_UK_RESIDUAL';
    const GALLON_US_RESIDUAL         = 'GALLON_US_RESIDUAL';
    const GIGAELECTRONVOLT           = 'GIGAELECTRONVOLT';
    const GIGACALORIE                = 'GIGACALORIE';
    const GIGACALORIE_15C            = 'GIGACALORIE_15C';
    const GIGAJOULE                  = 'GIGAJOULE';
    const GIGAWATT_HOUR              = 'GIGAWATT_HOUR';
    const GRAM_CALORIE               = 'GRAM_CALORIE';
    const HARTREE                    = 'HARTREE';
    const HECTOJOULE                 = 'HECTOJOULE';
    const HECTOWATT_HOUR             = 'HECTOWATT_HOUR';
    const HORSEPOWER_HOUR            = 'HORSEPOWER_HOUR';
    const HUNDRED_CUBIC_FOOT_GAS     = 'HUNDRED_CUBIC_FOOT_GAS';
    const INCH_OUNCE                 = 'INCH_OUNCE';
    const INCH_POUND                 = 'INCH_POUND';
    const JOULE                      = 'JOULE';
    const KILOCALORIE_15C            = 'KILOCALORIE_15C';
    const KILOCALORIE                = 'KILOCALORIE';
    const KILOCALORIE_THERMOCHEMICAL = 'KILOCALORIE_THERMOCHEMICAL';
    const KILOELECTRONVOLT           = 'KILOELECTRONVOLT';
    const KILOGRAM_CALORIE           = 'KILOGRAM_CALORIE';
    const KILOGRAM_FORCE_METER       = 'KILOGRAM_FORCE_METER';
    const KILOJOULE                  = 'KILOJOULE';
    const KILOPOND_METER             = 'KILOPOND_METER';
    const KILOTON                    = 'KILOTON';
    const KILOWATT_HOUR              = 'KILOWATT_HOUR';
    const LITER_ATMOSPHERE           = 'LITER_ATMOSPHERE';
    const MEGAELECTRONVOLT           = 'MEGAELECTRONVOLT';
    const MEGACALORIE                = 'MEGACALORIE';
    const MEGACALORIE_15C            = 'MEGACALORIE_15C';
    const MEGAJOULE                  = 'MEGAJOULE';
    const MEGALERG                   = 'MEGALERG';
    const MEGATON                    = 'MEGATON';
    const MEGAWATTHOUR               = 'MEGAWATTHOUR';
    const METER_KILOGRAM_FORCE       = 'METER_KILOGRAM_FORCE';
    const MICROJOULE                 = 'MICROJOULE';
    const MILLIJOULE                 = 'MILLIJOULE';
    const MYRIAWATT_HOUR             = 'MYRIAWATT_HOUR';
    const NANOJOULE                  = 'NANOJOULE';
    const NEWTON_METER               = 'NEWTON_METER';
    const PETAJOULE                  = 'PETAJOULE';
    const PETAWATTHOUR               = 'PETAWATTHOUR';
    const PFERDESTAERKENSTUNDE       = 'PFERDESTAERKENSTUNDE';
    const PICOJOULE                  = 'PICOJOULE';
    const Q_UNIT                     = 'Q_UNIT';
    const QUAD                       = 'QUAD';
    const TERAELECTRONVOLT           = 'TERAELECTRONVOLT';
    const TERAJOULE                  = 'TERAJOULE';
    const TERAWATTHOUR               = 'TERAWATTHOUR';
    const THERM                      = 'THERM';
    const THERM_US                   = 'THERM_US';
    const THERMIE                    = 'THERMIE';
    const TON                        = 'TON';
    const TONNE_COAL                 = 'TONNE_COAL';
    const TONNE_OIL                  = 'TONNE_OIL';
    const WATTHOUR                   = 'WATTHOUR';
    const WATTSECOND                 = 'WATTSECOND';
    const YOCTOJOULE                 = 'YOCTOJOULE';
    const YOTTAJOULE                 = 'YOTTAJOULE';
    const YOTTAWATTHOUR              = 'YOTTAWATTHOUR';
    const ZEPTOJOULE                 = 'ZEPTOJOULE';
    const ZETTAJOULE                 = 'ZETTAJOULE';
    const ZETTAWATTHOUR              = 'ZETTAWATTHOUR';

    /**
     * Calculations for all energy units
     *
     * @var array
     */
    protected $_units = array(
        'ATTOJOULE'              => array('1.0e-18',           'aJ'),
        'BOARD_OF_TRADE_UNIT'    => array('3600000',           'BOTU'),
        'BTU'                    => array('1055.0559',         'Btu'),
        'BTU_TERMOCHEMICAL'      => array('1054.3503',         'Btu'),
        'CALORIE'                => array('4.1868',            'cal'),
        'CALORIE_15C'            => array('6.1858',            'cal'),
        'CALORIE_NUTRITIONAL'    => array('4186.8',            'cal'),
        'CALORIE_THERMOCHEMICAL' => array('4.184',             'cal'),
        'CELSIUS_HEAT_UNIT'      => array('1899.1005',         'Chu'),
        'CENTIJOULE'             => array('0.01',              'cJ'),
        'CHEVAL_VAPEUR_HEURE'    => array('2647795.5',         'cv heure'),
        'DECIJOULE'              => array('0.1',               'dJ'),
        'DEKAJOULE'              => array('10',                'daJ'),
        'DEKAWATT_HOUR'          => array('36000',             'daWh'),
        'DEKATHERM'              => array('1.055057e+9',       'dathm'),
        'ELECTRONVOLT'           => array('1.6021773e-19',     'eV'),
        'ERG'                    => array('0.0000001',         'erg'),
        'EXAJOULE'               => array('1.0e+18',           'EJ'),
        'EXAWATT_HOUR'           => array('3.6e+21',           'EWh'),
        'FEMTOJOULE'             => array('1.0e-15',           'fJ'),
        'FOOT_POUND'             => array('1.3558179',         'ft lb'),
        'FOOT_POUNDAL'           => array('0.04214011',        'ft poundal'),
        'GALLON_UK_AUTOMOTIVE'   => array('158237172',         'gal car gasoline'),
        'GALLON_US_AUTOMOTIVE'   => array('131760000',         'gal car gasoline'),
        'GALLON_UK_AVIATION'     => array('158237172',         'gal jet gasoline'),
        'GALLON_US_AVIATION'     => array('131760000',         'gal jet gasoline'),
        'GALLON_UK_DIESEL'       => array('175963194',         'gal diesel'),
        'GALLON_US_DIESEL'       => array('146520000',         'gal diesel'),
        'GALLON_UK_DISTILATE'    => array('175963194',         'gal destilate fuel'),
        'GALLON_US_DISTILATE'    => array('146520000',         'gal destilate fuel'),
        'GALLON_UK_KEROSINE_JET' => array('170775090',         'gal jet kerosine'),
        'GALLON_US_KEROSINE_JET' => array('142200000',         'gal jet kerosine'),
        'GALLON_UK_LPG'          => array('121005126.0865275', 'gal lpg'),
        'GALLON_US_LPG'          => array('100757838.45',      'gal lpg'),
        'GALLON_UK_NAPHTA'       => array('160831224',         'gal jet fuel'),
        'GALLON_US_NAPHTA'       => array('133920000',         'gal jet fuel'),
        'GALLON_UK_KEROSINE'     => array('170775090',         'gal kerosine'),
        'GALLON_US_KEROSINE'     => array('142200000',         'gal kerosine'),
        'GALLON_UK_RESIDUAL'     => array('189798138',         'gal residual fuel'),
        'GALLON_US_RESIDUAL'     => array('158040000',         'gal residual fuel'),
        'GIGAELECTRONVOLT'       => array('1.6021773e-10',     'GeV'),
        'GIGACALORIE'            => array('4186800000',        'Gcal'),
        'GIGACALORIE_15C'        => array('4185800000',        'Gcal'),
        'GIGAJOULE'              => array('1.0e+9',            'GJ'),
        'GIGAWATT_HOUR'          => array('3.6e+12',           'GWh'),
        'GRAM_CALORIE'           => array('4.1858',            'g cal'),
        'HARTREE'                => array('4.3597482e-18',     'Eh'),
        'HECTOJOULE'             => array('100',               'hJ'),
        'HECTOWATT_HOUR'         => array('360000',            'hWh'),
        'HORSEPOWER_HOUR'        => array('2684519.5',         'hph'),
        'HUNDRED_CUBIC_FOOT_GAS' => array('108720000',         'hundred ft� gas'),
        'INCH_OUNCE'             => array('0.0070615518',      'in oc'),
        'INCH_POUND'             => array('0.112984825',       'in lb'),
        'JOULE'                  => array('1',                 'J'),
        'KILOCALORIE_15C'        => array('4185.8',            'kcal'),
        'KILOCALORIE'            => array('4186','8',          'kcal'),
        'KILOCALORIE_THERMOCHEMICAL' => array('4184',          'kcal'),
        'KILOELECTRONVOLT'       => array('1.6021773e-16',     'keV'),
        'KILOGRAM_CALORIE'       => array('4185.8',            'kg cal'),
        'KILOGRAM_FORCE_METER'   => array('9.80665',           'kgf m'),
        'KILOJOULE'              => array('1000',              'kJ'),
        'KILOPOND_METER'         => array('9.80665',           'kp m'),
        'KILOTON'                => array('4.184e+12',         'kt'),
        'KILOWATT_HOUR'          => array('3600000',           'kWh'),
        'LITER_ATMOSPHERE'       => array('101.325',           'l atm'),
        'MEGAELECTRONVOLT'       => array('1.6021773e-13',     'MeV'),
        'MEGACALORIE'            => array('4186800',           'Mcal'),
        'MEGACALORIE_15C'        => array('4185800',           'Mcal'),
        'MEGAJOULE'              => array('1000000',           'MJ'),
        'MEGALERG'               => array('0.1',               'megalerg'),
        'MEGATON'                => array('4.184e+15',         'Mt'),
        'MEGAWATTHOUR'           => array('3.6e+9',            'MWh'),
        'METER_KILOGRAM_FORCE'   => array('9.80665',           'm kgf'),
        'MICROJOULE'             => array('0.000001',          '�J'),
        'MILLIJOULE'             => array('0.001',             'mJ'),
        'MYRIAWATT_HOUR'         => array('3.6e+7',            'myWh'),
        'NANOJOULE'              => array('1.0e-9',            'nJ'),
        'NEWTON_METER'           => array('1',                 'Nm'),
        'PETAJOULE'              => array('1.0e+15',           'PJ'),
        'PETAWATTHOUR'           => array('3.6e+18',           'PWh'),
        'PFERDESTAERKENSTUNDE'   => array('2647795.5',         'ps h'),
        'PICOJOULE'              => array('1.0e-12',           'pJ'),
        'Q_UNIT'                 => array('1.0550559e+21',     'Q unit'),
        'QUAD'                   => array('1.0550559e+18',     'quad'),
        'TERAELECTRONVOLT'       => array('1.6021773e-7',      'TeV'),
        'TERAJOULE'              => array('1.0e+12',           'TJ'),
        'TERAWATTHOUR'           => array('3.6e+15',           'TWh'),
        'THERM'                  => array('1.0550559e+8',      'thm'),
        'THERM_US'               => array('1.054804e+8',       'thm'),
        'THERMIE'                => array('4185800',           'th'),
        'TON'                    => array('4.184e+9',          'T explosive'),
        'TONNE_COAL'             => array('2.93076e+10',       'T coal'),
        'TONNE_OIL'              => array('4.1868e+10',        'T oil'),
        'WATTHOUR'               => array('3600',              'Wh'),
        'WATTSECOND'             => array('1',                 'Ws'),
        'YOCTOJOULE'             => array('1.0e-24',           'yJ'),
        'YOTTAJOULE'             => array('1.0e+24',           'YJ'),
        'YOTTAWATTHOUR'          => array('3.6e+27',           'YWh'),
        'ZEPTOJOULE'             => array('1.0e-21',           'zJ'),
        'ZETTAJOULE'             => array('1.0e+21',           'ZJ'),
        'ZETTAWATTHOUR'          => array('3.6e+24',           'ZWh'),
        'STANDARD'               => 'JOULE'
    );
}
PKpG[�G:�Measure/Binary.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Binary.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling binary conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Binary
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Binary extends Zend_Measure_Abstract
{
    const STANDARD = 'BYTE';

    const BIT               = 'BIT';
    const CRUMB             = 'CRUMB';
    const NIBBLE            = 'NIBBLE';
    const BYTE              = 'BYTE';
    const KILOBYTE          = 'KILOBYTE';
    const KIBIBYTE          = 'KIBIBYTE';
    const KILO_BINARY_BYTE  = 'KILO_BINARY_BYTE';
    const KILOBYTE_SI       = 'KILOBYTE_SI';
    const MEGABYTE          = 'MEGABYTE';
    const MEBIBYTE          = 'MEBIBYTE';
    const MEGA_BINARY_BYTE  = 'MEGA_BINARY_BYTE';
    const MEGABYTE_SI       = 'MEGABYTE_SI';
    const GIGABYTE          = 'GIGABYTE';
    const GIBIBYTE          = 'GIBIBYTE';
    const GIGA_BINARY_BYTE  = 'GIGA_BINARY_BYTE';
    const GIGABYTE_SI       = 'GIGABYTE_SI';
    const TERABYTE          = 'TERABYTE';
    const TEBIBYTE          = 'TEBIBYTE';
    const TERA_BINARY_BYTE  = 'TERA_BINARY_BYTE';
    const TERABYTE_SI       = 'TERABYTE_SI';
    const PETABYTE          = 'PETABYTE';
    const PEBIBYTE          = 'PEBIBYTE';
    const PETA_BINARY_BYTE  = 'PETA_BINARY_BYTE';
    const PETABYTE_SI       = 'PETABYTE_SI';
    const EXABYTE           = 'EXABYTE';
    const EXBIBYTE          = 'EXBIBYTE';
    const EXA_BINARY_BYTE   = 'EXA_BINARY_BYTE';
    const EXABYTE_SI        = 'EXABYTE_SI';
    const ZETTABYTE         = 'ZETTABYTE';
    const ZEBIBYTE          = 'ZEBIBYTE';
    const ZETTA_BINARY_BYTE = 'ZETTA_BINARY_BYTE';
    const ZETTABYTE_SI      = 'ZETTABYTE_SI';
    const YOTTABYTE         = 'YOTTABYTE';
    const YOBIBYTE          = 'YOBIBYTE';
    const YOTTA_BINARY_BYTE = 'YOTTA_BINARY_BYTE';
    const YOTTABYTE_SI      = 'YOTTABYTE_SI';

    /**
     * Calculations for all binary units
     *
     * @var array
     */
    protected $_units = array(
        'BIT'              => array('0.125',                     'b'),
        'CRUMB'            => array('0.25',                      'crumb'),
        'NIBBLE'           => array('0.5',                       'nibble'),
        'BYTE'             => array('1',                         'B'),
        'KILOBYTE'         => array('1024',                      'kB'),
        'KIBIBYTE'         => array('1024',                      'KiB'),
        'KILO_BINARY_BYTE' => array('1024',                      'KiB'),
        'KILOBYTE_SI'      => array('1000',                      'kB.'),
        'MEGABYTE'         => array('1048576',                   'MB'),
        'MEBIBYTE'         => array('1048576',                   'MiB'),
        'MEGA_BINARY_BYTE' => array('1048576',                   'MiB'),
        'MEGABYTE_SI'      => array('1000000',                   'MB.'),
        'GIGABYTE'         => array('1073741824',                'GB'),
        'GIBIBYTE'         => array('1073741824',                'GiB'),
        'GIGA_BINARY_BYTE' => array('1073741824',                'GiB'),
        'GIGABYTE_SI'      => array('1000000000',                'GB.'),
        'TERABYTE'         => array('1099511627776',             'TB'),
        'TEBIBYTE'         => array('1099511627776',             'TiB'),
        'TERA_BINARY_BYTE' => array('1099511627776',             'TiB'),
        'TERABYTE_SI'      => array('1000000000000',             'TB.'),
        'PETABYTE'         => array('1125899906842624',          'PB'),
        'PEBIBYTE'         => array('1125899906842624',          'PiB'),
        'PETA_BINARY_BYTE' => array('1125899906842624',          'PiB'),
        'PETABYTE_SI'      => array('1000000000000000',          'PB.'),
        'EXABYTE'          => array('1152921504606846976',       'EB'),
        'EXBIBYTE'         => array('1152921504606846976',       'EiB'),
        'EXA_BINARY_BYTE'  => array('1152921504606846976',       'EiB'),
        'EXABYTE_SI'       => array('1000000000000000000',       'EB.'),
        'ZETTABYTE'        => array('1180591620717411303424',    'ZB'),
        'ZEBIBYTE'         => array('1180591620717411303424',    'ZiB'),
        'ZETTA_BINARY_BYTE'=> array('1180591620717411303424',    'ZiB'),
        'ZETTABYTE_SI'     => array('1000000000000000000000',    'ZB.'),
        'YOTTABYTE'        => array('1208925819614629174706176', 'YB'),
        'YOBIBYTE'         => array('1208925819614629174706176', 'YiB'),
        'YOTTA_BINARY_BYTE'=> array('1208925819614629174706176', 'YiB'),
        'YOTTABYTE_SI'     => array('1000000000000000000000000', 'YB.'),
        'STANDARD'         => 'BYTE'
    );
}
PKpG[@�D�eeMeasure/Force.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Force.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling force conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Force
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Force extends Zend_Measure_Abstract
{
    const STANDARD = 'NEWTON';

    const ATTONEWTON      = 'ATTONEWTON';
    const CENTINEWTON     = 'CENTINEWTON';
    const DECIGRAM_FORCE  = 'DECIGRAM_FORCE';
    const DECINEWTON      = 'DECINEWTON';
    const DEKAGRAM_FORCE  = 'DEKAGRAM_FORCE';
    const DEKANEWTON      = 'DEKANEWTON';
    const DYNE            = 'DYNE';
    const EXANEWTON       = 'EXANEWTON';
    const FEMTONEWTON     = 'FEMTONEWTON';
    const GIGANEWTON      = 'GIGANEWTON';
    const GRAM_FORCE      = 'GRAM_FORCE';
    const HECTONEWTON     = 'HECTONEWTON';
    const JOULE_PER_METER = 'JOULE_PER_METER';
    const KILOGRAM_FORCE  = 'KILOGRAM_FORCE';
    const KILONEWTON      = 'KILONEWTON';
    const KILOPOND        = 'KILOPOND';
    const KIP             = 'KIP';
    const MEGANEWTON      = 'MEGANEWTON';
    const MEGAPOND        = 'MEGAPOND';
    const MICRONEWTON     = 'MICRONEWTON';
    const MILLINEWTON     = 'MILLINEWTON';
    const NANONEWTON      = 'NANONEWTON';
    const NEWTON          = 'NEWTON';
    const OUNCE_FORCE     = 'OUNCE_FORCE';
    const PETANEWTON      = 'PETANEWTON';
    const PICONEWTON      = 'PICONEWTON';
    const POND            = 'POND';
    const POUND_FORCE     = 'POUND_FORCE';
    const POUNDAL         = 'POUNDAL';
    const STHENE          = 'STHENE';
    const TERANEWTON      = 'TERANEWTON';
    const TON_FORCE_LONG  = 'TON_FORCE_LONG';
    const TON_FORCE       = 'TON_FORCE';
    const TON_FORCE_SHORT = 'TON_FORCE_SHORT';
    const YOCTONEWTON     = 'YOCTONEWTON';
    const YOTTANEWTON     = 'YOTTANEWTON';
    const ZEPTONEWTON     = 'ZEPTONEWTON';
    const ZETTANEWTON     = 'ZETTANEWTON';

    /**
     * Calculations for all force units
     *
     * @var array
     */
    protected $_units = array(
        'ATTONEWTON'      => array('1.0e-18',     'aN'),
        'CENTINEWTON'     => array('0.01',        'cN'),
        'DECIGRAM_FORCE'  => array('0.000980665', 'dgf'),
        'DECINEWTON'      => array('0.1',         'dN'),
        'DEKAGRAM_FORCE'  => array('0.0980665',   'dagf'),
        'DEKANEWTON'      => array('10',          'daN'),
        'DYNE'            => array('0.00001',     'dyn'),
        'EXANEWTON'       => array('1.0e+18',     'EN'),
        'FEMTONEWTON'     => array('1.0e-15',     'fN'),
        'GIGANEWTON'      => array('1.0e+9',      'GN'),
        'GRAM_FORCE'      => array('0.00980665',  'gf'),
        'HECTONEWTON'     => array('100',         'hN'),
        'JOULE_PER_METER' => array('1',           'J/m'),
        'KILOGRAM_FORCE'  => array('9.80665',     'kgf'),
        'KILONEWTON'      => array('1000',        'kN'),
        'KILOPOND'        => array('9.80665',     'kp'),
        'KIP'             => array('4448.2216',   'kip'),
        'MEGANEWTON'      => array('1000000',     'Mp'),
        'MEGAPOND'        => array('9806.65',     'MN'),
        'MICRONEWTON'     => array('0.000001',    'µN'),
        'MILLINEWTON'     => array('0.001',       'mN'),
        'NANONEWTON'      => array('0.000000001', 'nN'),
        'NEWTON'          => array('1',           'N'),
        'OUNCE_FORCE'     => array('0.27801385',  'ozf'),
        'PETANEWTON'      => array('1.0e+15',     'PN'),
        'PICONEWTON'      => array('1.0e-12',     'pN'),
        'POND'            => array('0.00980665',  'pond'),
        'POUND_FORCE'     => array('4.4482216',   'lbf'),
        'POUNDAL'         => array('0.13825495',  'pdl'),
        'STHENE'          => array('1000',        'sn'),
        'TERANEWTON'      => array('1.0e+12',     'TN'),
        'TON_FORCE_LONG'  => array('9964.016384', 'tnf'),
        'TON_FORCE'       => array('9806.65',     'tnf'),
        'TON_FORCE_SHORT' => array('8896.4432',   'tnf'),
        'YOCTONEWTON'     => array('1.0e-24',     'yN'),
        'YOTTANEWTON'     => array('1.0e+24',     'YN'),
        'ZEPTONEWTON'     => array('1.0e-21',     'zN'),
        'ZETTANEWTON'     => array('1.0e+21',     'ZN'),
        'STANDARD'        => 'NEWTON'
    );
}
PKpG[}C
bbMeasure/Capacitance.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Capacitance.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling capacitance conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Capacitance
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Capacitance extends Zend_Measure_Abstract
{
    const STANDARD = 'FARAD';

    const ABFARAD                = 'ABFARAD';
    const AMPERE_PER_SECOND_VOLT = 'AMPERE_PER_SECOND_VOLT';
    const CENTIFARAD             = 'CENTIFARAD';
    const COULOMB_PER_VOLT       = 'COULOMB_PER_VOLT';
    const DECIFARAD              = 'DECIFARAD';
    const DEKAFARAD              = 'DEKAFARAD';
    const ELECTROMAGNETIC_UNIT   = 'ELECTROMAGNETIC_UNIT';
    const ELECTROSTATIC_UNIT     = 'ELECTROSTATIC_UNIT';
    const FARAD                  = 'FARAD';
    const FARAD_INTERNATIONAL    = 'FARAD_INTERNATIONAL';
    const GAUSSIAN               = 'GAUSSIAN';
    const GIGAFARAD              = 'GIGAFARAD';
    const HECTOFARAD             = 'HECTOFARAD';
    const JAR                    = 'JAR';
    const KILOFARAD              = 'KILOFARAD';
    const MEGAFARAD              = 'MEGAFARAD';
    const MICROFARAD             = 'MICROFARAD';
    const MILLIFARAD             = 'MILLIFARAD';
    const NANOFARAD              = 'NANOFARAD';
    const PICOFARAD              = 'PICOFARAD';
    const PUFF                   = 'PUFF';
    const SECOND_PER_OHM         = 'SECOND_PER_OHM';
    const STATFARAD              = 'STATFARAD';
    const TERAFARAD              = 'TERAFARAD';

    /**
     * Calculations for all capacitance units
     *
     * @var array
     */
    protected $_units = array(
        'ABFARAD'              => array('1.0e+9',      'abfarad'),
        'AMPERE_PER_SECOND_VOLT' => array('1',         'A/sV'),
        'CENTIFARAD'           => array('0.01',        'cF'),
        'COULOMB_PER_VOLT'     => array('1',           'C/V'),
        'DECIFARAD'            => array('0.1',         'dF'),
        'DEKAFARAD'            => array('10',          'daF'),
        'ELECTROMAGNETIC_UNIT' => array('1.0e+9',      'capacity emu'),
        'ELECTROSTATIC_UNIT'   => array('1.11265e-12', 'capacity esu'),
        'FARAD'                => array('1',           'F'),
        'FARAD_INTERNATIONAL'  => array('0.99951',     'F'),
        'GAUSSIAN'             => array('1.11265e-12', 'G'),
        'GIGAFARAD'            => array('1.0e+9',      'GF'),
        'HECTOFARAD'           => array('100',         'hF'),
        'JAR'                  => array('1.11265e-9',  'jar'),
        'KILOFARAD'            => array('1000',        'kF'),
        'MEGAFARAD'            => array('1000000',     'MF'),
        'MICROFARAD'           => array('0.000001',    'µF'),
        'MILLIFARAD'           => array('0.001',       'mF'),
        'NANOFARAD'            => array('1.0e-9',      'nF'),
        'PICOFARAD'            => array('1.0e-12',     'pF'),
        'PUFF'                 => array('1.0e-12',     'pF'),
        'SECOND_PER_OHM'       => array('1',           's/Ohm'),
        'STATFARAD'            => array('1.11265e-12', 'statfarad'),
        'TERAFARAD'            => array('1.0e+12',     'TF'),
        'STANDARD'             => 'FARAD'
    );
}
PKpG[�ݝHDHDMeasure/Area.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Area.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling area conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Area
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Area extends Zend_Measure_Abstract
{
    const STANDARD = 'SQUARE_METER';

    const ACRE                       = 'ACRE';
    const ACRE_COMMERCIAL            = 'ACRE_COMMERCIAL';
    const ACRE_SURVEY                = 'ACRE_SURVEY';
    const ACRE_IRELAND               = 'ACRE_IRELAND';
    const ARE                        = 'ARE';
    const ARPENT                     = 'ARPENT';
    const BARN                       = 'BARN';
    const BOVATE                     = 'BOVATE';
    const BUNDER                     = 'BUNDER';
    const CABALLERIA                 = 'CABALLERIA';
    const CABALLERIA_AMERICA         = 'CABALLERIA_AMERICA';
    const CABALLERIA_CUBA            = 'CABALLERIA_CUBA';
    const CARREAU                    = 'CARREAU';
    const CARUCATE                   = 'CARUCATE';
    const CAWNEY                     = 'CAWNEY';
    const CENTIARE                   = 'CENTIARE';
    const CONG                       = 'CONG';
    const COVER                      = 'COVER';
    const CUERDA                     = 'CUERDA';
    const DEKARE                     = 'DEKARE';
    const DESSIATINA                 = 'DESSIATINA';
    const DHUR                       = 'DHUR';
    const DUNUM                      = 'DUNUM';
    const DUNHAM                     = 'DUNHAM';
    const FALL_SCOTS                 = 'FALL_SCOTS';
    const FALL                       = 'FALL';
    const FANEGA                     = 'FANEGA';
    const FARTHINGDALE               = 'FARTHINGDALE';
    const HACIENDA                   = 'HACIENDA';
    const HECTARE                    = 'HECTARE';
    const HIDE                       = 'HIDE';
    const HOMESTEAD                  = 'HOMESTEAD';
    const HUNDRED                    = 'HUNDRED';
    const JERIB                      = 'JERIB';
    const JITRO                      = 'JITRO';
    const JOCH                       = 'JOCH';
    const JUTRO                      = 'JUTRO';
    const JO                         = 'JO';
    const KAPPLAND                   = 'KAPPLAND';
    const KATTHA                     = 'KATTHA';
    const LABOR                      = 'LABOR';
    const LEGUA                      = 'LEGUA';
    const MANZANA_COSTA_RICA         = 'MANZANA_COSTA_RICA';
    const MANZANA                    = 'MANZANA';
    const MORGEN                     = 'MORGEN';
    const MORGEN_AFRICA              = 'MORGEN_AFRICA';
    const MU                         = 'MU';
    const NGARN                      = 'NGARN';
    const NOOK                       = 'NOOK';
    const OXGANG                     = 'OXGANG';
    const PERCH                      = 'PERCH';
    const PERCHE                     = 'PERCHE';
    const PING                       = 'PING';
    const PYONG                      = 'PYONG';
    const RAI                        = 'RAI';
    const ROOD                       = 'ROOD';
    const SECTION                    = 'SECTION';
    const SHED                       = 'SHED';
    const SITIO                      = 'SITIO';
    const SQUARE                     = 'SQUARE';
    const SQUARE_ANGSTROM            = 'SQUARE_ANGSTROM';
    const SQUARE_ASTRONOMICAL_UNIT   = 'SQUARE_ASTRONOMICAL_UNIT';
    const SQUARE_ATTOMETER           = 'SQUARE_ATTOMETER';
    const SQUARE_BICRON              = 'SQUARE_BICRON';
    const SQUARE_CENTIMETER          = 'SQUARE_CENTIMETER';
    const SQUARE_CHAIN               = 'SQUARE_CHAIN';
    const SQUARE_CHAIN_ENGINEER      = 'SQUARE_CHAIN_ENGINEER';
    const SQUARE_CITY_BLOCK_US_EAST  = 'SQUARE_CITY_BLOCK_US_EAST';
    const SQUARE_CITY_BLOCK_US_WEST  = 'SQUARE_CITY_BLOCK_US_WEST';
    const SQUARE_CITY_BLOCK_US_SOUTH = 'SQUARE_CITY_BLOCK_US_SOUTH';
    const SQUARE_CUBIT               = 'SQUARE_CUBIT';
    const SQUARE_DECIMETER           = 'SQUARE_DECIMETER';
    const SQUARE_DEKAMETER           = 'SQUARE_DEKAMETER';
    const SQUARE_EXAMETER            = 'SQUARE_EXAMETER';
    const SQUARE_FATHOM              = 'SQUARE_FATHOM';
    const SQUARE_FEMTOMETER          = 'SQUARE_FEMTOMETER';
    const SQUARE_FERMI               = 'SQUARE_FERMI';
    const SQUARE_FOOT                = 'SQUARE_FOOT';
    const SQUARE_FOOT_SURVEY         = 'SQUARE_FOOT_SURVEY';
    const SQUARE_FURLONG             = 'SQUARE_FURLONG';
    const SQUARE_GIGAMETER           = 'SQUARE_GIGAMETER';
    const SQUARE_HECTOMETER          = 'SQUARE_HECTOMETER';
    const SQUARE_INCH                = 'SQUARE_INCH';
    const SQUARE_INCH_SURVEY         = 'SQUARE_INCH_SURVEY';
    const SQUARE_KILOMETER           = 'SQUARE_KILOMETER';
    const SQUARE_LEAGUE_NAUTIC       = 'SQUARE_LEAGUE_NAUTIC';
    const SQUARE_LEAGUE              = 'SQUARE_LEAGUE';
    const SQUARE_LIGHT_YEAR          = 'SQUARE_LIGHT_YEAR';
    const SQUARE_LINK                = 'SQUARE_LINK';
    const SQUARE_LINK_ENGINEER       = 'SQUARE_LINK_ENGINEER';
    const SQUARE_MEGAMETER           = 'SQUARE_MEGAMETER';
    const SQUARE_METER               = 'SQUARE_METER';
    const SQUARE_MICROINCH           = 'SQUARE_MICROINCH';
    const SQUARE_MICROMETER          = 'SQUARE_MICROMETER';
    const SQUARE_MICROMICRON         = 'SQUARE_MICROMICRON';
    const SQUARE_MICRON              = 'SQUARE_MICRON';
    const SQUARE_MIL                 = 'SQUARE_MIL';
    const SQUARE_MILE                = 'SQUARE_MILE';
    const SQUARE_MILE_NAUTIC         = 'SQUARE_MILE_NAUTIC';
    const SQUARE_MILE_SURVEY         = 'SQUARE_MILE_SURVEY';
    const SQUARE_MILLIMETER          = 'SQUARE_MILLIMETER';
    const SQUARE_MILLIMICRON         = 'SQUARE_MILLIMICRON';
    const SQUARE_MYRIAMETER          = 'SQUARE_MYRIAMETER';
    const SQUARE_NANOMETER           = 'SQUARE_NANOMETER';
    const SQUARE_PARIS_FOOT          = 'SQUARE_PARIS_FOOT';
    const SQUARE_PARSEC              = 'SQUARE_PARSEC';
    const SQUARE_PERCH               = 'SQUARE_PERCH';
    const SQUARE_PERCHE              = 'SQUARE_PERCHE';
    const SQUARE_PETAMETER           = 'SQUARE_PETAMETER';
    const SQUARE_PICOMETER           = 'SQUARE_PICOMETER';
    const SQUARE_ROD                 = 'SQUARE_ROD';
    const SQUARE_TENTHMETER          = 'SQUARE_TENTHMETER';
    const SQUARE_TERAMETER           = 'SQUARE_TERAMETER';
    const SQUARE_THOU                = 'SQUARE_THOU';
    const SQUARE_VARA                = 'SQUARE_VARA';
    const SQUARE_VARA_TEXAS          = 'SQUARE_VARA_TEXAS';
    const SQUARE_YARD                = 'SQUARE_YARD';
    const SQUARE_YARD_SURVEY         = 'SQUARE_YARD_SURVEY';
    const SQUARE_YOCTOMETER          = 'SQUARE_YOCTOMETER';
    const SQUARE_YOTTAMETER          = 'SQUARE_YOTTAMETER';
    const STANG                      = 'STANG';
    const STREMMA                    = 'STREMMA';
    const TAREA                      = 'TAREA';
    const TATAMI                     = 'TATAMI';
    const TONDE_LAND                 = 'TONDE_LAND';
    const TOWNSHIP                   = 'TOWNSHIP';
    const TSUBO                      = 'TSUBO';
    const TUNNLAND                   = 'TUNNLAND';
    const YARD                       = 'YARD';
    const VIRGATE                    = 'VIRGATE';

    /**
     * Calculations for all area units
     *
     * @var array
     */
    protected $_units = array(
        'ACRE'               => array('4046.856422',      'A'),
        'ACRE_COMMERCIAL'    => array('3344.50944',       'A'),
        'ACRE_SURVEY'        => array('4046.872627',      'A'),
        'ACRE_IRELAND'       => array('6555',             'A'),
        'ARE'                => array('100',              'a'),
        'ARPENT'             => array('3418.89',          'arpent'),
        'BARN'               => array('1e-28',            'b'),
        'BOVATE'             => array('60000',            'bovate'),
        'BUNDER'             => array('10000',            'bunder'),
        'CABALLERIA'         => array('400000',           'caballeria'),
        'CABALLERIA_AMERICA' => array('450000',           'caballeria'),
        'CABALLERIA_CUBA'    => array('134200',           'caballeria'),
        'CARREAU'            => array('12900',            'carreau'),
        'CARUCATE'           => array('486000',           'carucate'),
        'CAWNEY'             => array('5400',             'cawney'),
        'CENTIARE'           => array('1',                'ca'),
        'CONG'               => array('1000',             'cong'),
        'COVER'              => array('2698',             'cover'),
        'CUERDA'             => array('3930',             'cda'),
        'DEKARE'             => array('1000',             'dekare'),
        'DESSIATINA'         => array('10925',            'dessiantina'),
        'DHUR'               => array('16.929',           'dhur'),
        'DUNUM'              => array('1000',             'dunum'),
        'DUNHAM'             => array('1000',             'dunham'),
        'FALL_SCOTS'         => array('32.15',            'fall'),
        'FALL'               => array('47.03',            'fall'),
        'FANEGA'             => array('6430',             'fanega'),
        'FARTHINGDALE'       => array('1012',             'farthingdale'),
        'HACIENDA'           => array('89600000',         'hacienda'),
        'HECTARE'            => array('10000',            'ha'),
        'HIDE'               => array('486000',           'hide'),
        'HOMESTEAD'          => array('647500',           'homestead'),
        'HUNDRED'            => array('50000000',         'hundred'),
        'JERIB'              => array('2000',             'jerib'),
        'JITRO'              => array('5755',             'jitro'),
        'JOCH'               => array('5755',             'joch'),
        'JUTRO'              => array('5755',             'jutro'),
        'JO'                 => array('1.62',             'jo'),
        'KAPPLAND'           => array('154.26',           'kappland'),
        'KATTHA'             => array('338',              'kattha'),
        'LABOR'              => array('716850',           'labor'),
        'LEGUA'              => array('17920000',         'legua'),
        'MANZANA_COSTA_RICA' => array('6988.96',          'manzana'),
        'MANZANA'            => array('10000',            'manzana'),
        'MORGEN'             => array('2500',             'morgen'),
        'MORGEN_AFRICA'      => array('8567',             'morgen'),
        'MU'                 => array(array('' => '10000', '/' => '15'), 'mu'),
        'NGARN'              => array('400',              'ngarn'),
        'NOOK'               => array('80937.128',        'nook'),
        'OXGANG'             => array('60000',            'oxgang'),
        'PERCH'              => array('25.29285264',      'perch'),
        'PERCHE'             => array('34.19',            'perche'),
        'PING'               => array('3.305',            'ping'),
        'PYONG'              => array('3.306',            'pyong'),
        'RAI'                => array('1600',             'rai'),
        'ROOD'               => array('1011.7141',        'rood'),
        'SECTION'            => array('2589998.5',        'sec'),
        'SHED'               => array('10e-52',           'shed'),
        'SITIO'              => array('18000000',         'sitio'),
        'SQUARE'             => array('9.290304',         'sq'),
        'SQUARE_ANGSTROM'    => array('1.0e-20',          'A²'),
        'SQUARE_ASTRONOMICAL_UNIT'   => array('2.2379523e+22', 'AU²'),
        'SQUARE_ATTOMETER'   => array('1.0e-36',          'am²'),
        'SQUARE_BICRON'      => array('1.0e-24',          'µµ²'),
        'SQUARE_CENTIMETER'  => array('0.0001',           'cm²'),
        'SQUARE_CHAIN'       => array('404.68726',        'ch²'),
        'SQUARE_CHAIN_ENGINEER'      => array('929.03412',   'ch²'),
        'SQUARE_CITY_BLOCK_US_EAST'  => array('4.97027584',  'sq block'),
        'SQUARE_CITY_BLOCK_US_WEST'  => array('17.141056',   'sq block'),
        'SQUARE_CITY_BLOCK_US_SOUTH' => array('99.88110336', 'sq block'),
        'SQUARE_CUBIT'       => array('0.20903184',       'sq cubit'),
        'SQUARE_DECIMETER'   => array('0.01',             'dm²'),
        'SQUARE_DEKAMETER'   => array('100',              'dam²'),
        'SQUARE_EXAMETER'    => array('1.0e+36',          'Em²'),
        'SQUARE_FATHOM'      => array('3.3445228',        'fth²'),
        'SQUARE_FEMTOMETER'  => array('1.0e-30',          'fm²'),
        'SQUARE_FERMI'       => array('1.0e-30',          'f²'),
        'SQUARE_FOOT'        => array('0.09290304',       'ft²'),
        'SQUARE_FOOT_SURVEY' => array('0.092903412',      'ft²'),
        'SQUARE_FURLONG'     => array('40468.726',        'fur²'),
        'SQUARE_GIGAMETER'   => array('1.0e+18',          'Gm²'),
        'SQUARE_HECTOMETER'  => array('10000',            'hm²'),
        'SQUARE_INCH'        => array(array('' => '0.09290304','/' => '144'),  'in²'),
        'SQUARE_INCH_SURVEY' => array(array('' => '0.092903412','/' => '144'), 'in²'),
        'SQUARE_KILOMETER'   => array('1000000',          'km²'),
        'SQUARE_LEAGUE_NAUTIC' => array('3.0869136e+07',  'sq league'),
        'SQUARE_LEAGUE'      => array('2.3309986e+07',    'sq league'),
        'SQUARE_LIGHT_YEAR'  => array('8.9505412e+31',    'ly²'),
        'SQUARE_LINK'        => array('0.040468726',      'sq link'),
        'SQUARE_LINK_ENGINEER' => array('0.092903412',    'sq link'),
        'SQUARE_MEGAMETER'   => array('1.0e+12',          'Mm²'),
        'SQUARE_METER'       => array('1',                'm²'),
        'SQUARE_MICROINCH'   => array(array('' => '1.0e-6','*' => '6.4516e-10'), 'µin²'),
        'SQUARE_MICROMETER'  => array('1.0e-12',          'µm²'),
        'SQUARE_MICROMICRON' => array('1.0e-24',          'µµ²'),
        'SQUARE_MICRON'      => array('1.0e-12',          'µ²'),
        'SQUARE_MIL'         => array('6.4516e-10',       'sq mil'),
        'SQUARE_MILE'        => array(array('' => '0.09290304','*' => '27878400'), 'mi²'),
        'SQUARE_MILE_NAUTIC' => array('3429904',          'mi²'),
        'SQUARE_MILE_SURVEY' => array('2589998.5',        'mi²'),
        'SQUARE_MILLIMETER'  => array('0.000001',         'mm²'),
        'SQUARE_MILLIMICRON' => array('1.0e-18',          'mµ²'),
        'SQUARE_MYRIAMETER'  => array('1.0e+8',           'mym²'),
        'SQUARE_NANOMETER'   => array('1.0e-18',          'nm²'),
        'SQUARE_PARIS_FOOT'  => array('0.1055',           'sq paris foot'),
        'SQUARE_PARSEC'      => array('9.5214087e+32',    'pc²'),
        'SQUARE_PERCH'       => array('25.292954',        'sq perch'),
        'SQUARE_PERCHE'      => array('51.072',           'sq perche'),
        'SQUARE_PETAMETER'   => array('1.0e+30',          'Pm²'),
        'SQUARE_PICOMETER'   => array('1.0e-24',          'pm²'),
        'SQUARE_ROD'         => array(array('' => '0.092903412','*' => '272.25'), 'rd²'),
        'SQUARE_TENTHMETER'  => array('1.0e-20',          'sq tenth-meter'),
        'SQUARE_TERAMETER'   => array('1.0e+24',          'Tm²'),
        'SQUARE_THOU'        => array('6.4516e-10',       'sq thou'),
        'SQUARE_VARA'        => array('0.70258205',       'sq vara'),
        'SQUARE_VARA_TEXAS'  => array('0.71684731',       'sq vara'),
        'SQUARE_YARD'        => array('0.83612736',       'yd²'),
        'SQUARE_YARD_SURVEY' => array('0.836130708',      'yd²'),
        'SQUARE_YOCTOMETER'  => array('1.0e-48',          'ym²'),
        'SQUARE_YOTTAMETER'  => array('1.0e+48',          'Ym²'),
        'STANG'              => array('2709',             'stang'),
        'STREMMA'            => array('1000',             'stremma'),
        'TAREA'              => array('628.8',            'tarea'),
        'TATAMI'             => array('1.62',             'tatami'),
        'TONDE_LAND'         => array('5516',             'tonde land'),
        'TOWNSHIP'           => array('93239945.3196288', 'twp'),
        'TSUBO'              => array('3.3058',           'tsubo'),
        'TUNNLAND'           => array('4936.4',           'tunnland'),
        'YARD'               => array('0.83612736',       'yd'),
        'VIRGATE'            => array('120000',           'virgate'),
        'STANDARD'           => 'SQUARE_METER'
    );
}
PKpG[TAG�3�3Measure/Speed.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Speed.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling speed conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Speed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Speed extends Zend_Measure_Abstract
{
    const STANDARD = 'METER_PER_SECOND';

    const BENZ                           = 'BENZ';
    const CENTIMETER_PER_DAY             = 'CENTIMETER_PER_DAY';
    const CENTIMETER_PER_HOUR            = 'CENTIMETER_PER_HOUR';
    const CENTIMETER_PER_MINUTE          = 'CENTIMETER_PER_MINUTE';
    const CENTIMETER_PER_SECOND          = 'CENTIMETER_PER_SECOND';
    const DEKAMETER_PER_DAY              = 'DEKAMETER_PER_DAY';
    const DEKAMETER_PER_HOUR             = 'DEKAMETER_PER_HOUR';
    const DEKAMETER_PER_MINUTE           = 'DEKAMETER_PER_MINUTE';
    const DEKAMETER_PER_SECOND           = 'DEKAMETER_PER_SECOND';
    const FOOT_PER_DAY                   = 'FOOT_PER_DAY';
    const FOOT_PER_HOUR                  = 'FOOT_PER_HOUR';
    const FOOT_PER_MINUTE                = 'FOOT_PER_MINUTE';
    const FOOT_PER_SECOND                = 'FOOT_PER_SECOND';
    const FURLONG_PER_DAY                = 'FURLONG_PER_DAY';
    const FURLONG_PER_FORTNIGHT          = 'FURLONG_PER_FORTNIGHT';
    const FURLONG_PER_HOUR               = 'FURLONG_PER_HOUR';
    const FURLONG_PER_MINUTE             = 'FURLONG_PER_MINUTE';
    const FURLONG_PER_SECOND             = 'FURLONG_PER_SECOND';
    const HECTOMETER_PER_DAY             = 'HECTOMETER_PER_DAY';
    const HECTOMETER_PER_HOUR            = 'HECTOMETER_PER_HOUR';
    const HECTOMETER_PER_MINUTE          = 'HECTOMETER_PER_MINUTE';
    const HECTOMETER_PER_SECOND          = 'HECTOMETER_PER_SECOND';
    const INCH_PER_DAY                   = 'INCH_PER_DAY';
    const INCH_PER_HOUR                  = 'INCH_PER_HOUR';
    const INCH_PER_MINUTE                = 'INCH_PER_MINUTE';
    const INCH_PER_SECOND                = 'INCH_PER_SECOND';
    const KILOMETER_PER_DAY              = 'KILOMETER_PER_DAY';
    const KILOMETER_PER_HOUR             = 'KILOMETER_PER_HOUR';
    const KILOMETER_PER_MINUTE           = 'KILOMETER_PER_MINUTE';
    const KILOMETER_PER_SECOND           = 'KILOMETER_PER_SECOND';
    const KNOT                           = 'KNOT';
    const LEAGUE_PER_DAY                 = 'LEAGUE_PER_DAY';
    const LEAGUE_PER_HOUR                = 'LEAGUE_PER_HOUR';
    const LEAGUE_PER_MINUTE              = 'LEAGUE_PER_MINUTE';
    const LEAGUE_PER_SECOND              = 'LEAGUE_PER_SECOND';
    const MACH                           = 'MACH';
    const MEGAMETER_PER_DAY              = 'MEGAMETER_PER_DAY';
    const MEGAMETER_PER_HOUR             = 'MEGAMETER_PER_HOUR';
    const MEGAMETER_PER_MINUTE           = 'MEGAMETER_PER_MINUTE';
    const MEGAMETER_PER_SECOND           = 'MEGAMETER_PER_SECOND';
    const METER_PER_DAY                  = 'METER_PER_DAY';
    const METER_PER_HOUR                 = 'METER_PER_HOUR';
    const METER_PER_MINUTE               = 'METER_PER_MINUTE';
    const METER_PER_SECOND               = 'METER_PER_SECOND';
    const MILE_PER_DAY                   = 'MILE_PER_DAY';
    const MILE_PER_HOUR                  = 'MILE_PER_HOUR';
    const MILE_PER_MINUTE                = 'MILE_PER_MINUTE';
    const MILE_PER_SECOND                = 'MILE_PER_SECOND';
    const MILLIMETER_PER_DAY             = 'MILLIMETER_PER_DAY';
    const MILLIMETER_PER_HOUR            = 'MILLIMETER_PER_HOUR';
    const MILLIMETER_PER_MINUTE          = 'MILLIMETER_PER_MINUTE';
    const MILLIMETER_PER_SECOND          = 'MILLIMETER_PER_SECOND';
    const MILLIMETER_PER_MICROSECOND     = 'MILLIMETER_PER_MICROSECOND';
    const MILLIMETER_PER_100_MICROSECOND = 'MILLIMETER_PER_100_MICROSECOND';
    const NAUTIC_MILE_PER_DAY            = 'NAUTIC_MILE_PER_DAY';
    const NAUTIC_MILE_PER_HOUR           = 'NAUTIC_MILE_PER_HOUR';
    const NAUTIC_MILE_PER_MINUTE         = 'NAUTIC_MILE_PER_MINUTE';
    const NAUTIC_MILE_PER_SECOND         = 'NAUTIC_MILE_PER_SECOND';
    const LIGHTSPEED_AIR                 = 'LIGHTSPEED_AIR';
    const LIGHTSPEED_GLASS               = 'LIGHTSPEED_GLASS';
    const LIGHTSPEED_ICE                 = 'LIGHTSPEED_ICE';
    const LIGHTSPEED_VACUUM              = 'LIGHTSPEED_VACUUM';
    const LIGHTSPEED_WATER               = 'LIGHTSPEED_WATER';
    const SOUNDSPEED_AIR                 = 'SOUNDSPEED_AIT';
    const SOUNDSPEED_METAL               = 'SOUNDSPEED_METAL';
    const SOUNDSPEED_WATER               = 'SOUNDSPEED_WATER';
    const YARD_PER_DAY                   = 'YARD_PER_DAY';
    const YARD_PER_HOUR                  = 'YARD_PER_HOUR';
    const YARD_PER_MINUTE                = 'YARD_PER_MINUTE';
    const YARD_PER_SECOND                = 'YARD_PER_SECOND';

    /**
     * Calculations for all speed units
     *
     * @var array
     */
    protected $_units = array(
        'BENZ'                           => array('1',                                     'Bz'),
        'CENTIMETER_PER_DAY'             => array(array('' => '0.01', '/' => '86400'),       'cm/day'),
        'CENTIMETER_PER_HOUR'            => array(array('' => '0.01', '/' => '3600'),        'cm/h'),
        'CENTIMETER_PER_MINUTE'          => array(array('' => '0.01', '/' => '60'),          'cm/m'),
        'CENTIMETER_PER_SECOND'          => array('0.01',                                  'cd/s'),
        'DEKAMETER_PER_DAY'              => array(array('' => '10', '/' => '86400'),         'dam/day'),
        'DEKAMETER_PER_HOUR'             => array(array('' => '10', '/' => '3600'),          'dam/h'),
        'DEKAMETER_PER_MINUTE'           => array(array('' => '10', '/' => '60'),            'dam/m'),
        'DEKAMETER_PER_SECOND'           => array('10',                                    'dam/s'),
        'FOOT_PER_DAY'                   => array(array('' => '0.3048', '/' => '86400'),     'ft/day'),
        'FOOT_PER_HOUR'                  => array(array('' => '0.3048', '/' => '3600'),      'ft/h'),
        'FOOT_PER_MINUTE'                => array(array('' => '0.3048', '/' => '60'),        'ft/m'),
        'FOOT_PER_SECOND'                => array('0.3048',                                'ft/s'),
        'FURLONG_PER_DAY'                => array(array('' => '201.1684', '/' => '86400'),   'fur/day'),
        'FURLONG_PER_FORTNIGHT'          => array(array('' => '201.1684', '/' => '1209600'), 'fur/fortnight'),
        'FURLONG_PER_HOUR'               => array(array('' => '201.1684', '/' => '3600'),    'fur/h'),
        'FURLONG_PER_MINUTE'             => array(array('' => '201.1684', '/' => '60'),      'fur/m'),
        'FURLONG_PER_SECOND'             => array('201.1684',                              'fur/s'),
        'HECTOMETER_PER_DAY'             => array(array('' => '100', '/' => '86400'),        'hm/day'),
        'HECTOMETER_PER_HOUR'            => array(array('' => '100', '/' => '3600'),         'hm/h'),
        'HECTOMETER_PER_MINUTE'          => array(array('' => '100', '/' => '60'),           'hm/m'),
        'HECTOMETER_PER_SECOND'          => array('100',                                   'hm/s'),
        'INCH_PER_DAY'                   => array(array('' => '0.0254', '/' => '86400'),     'in/day'),
        'INCH_PER_HOUR'                  => array(array('' => '0.0254', '/' => '3600'),      'in/h'),
        'INCH_PER_MINUTE'                => array(array('' => '0.0254', '/' => '60'),        'in/m'),
        'INCH_PER_SECOND'                => array('0.0254',                                'in/s'),
        'KILOMETER_PER_DAY'              => array(array('' => '1000', '/' => '86400'),       'km/day'),
        'KILOMETER_PER_HOUR'             => array(array('' => '1000', '/' => '3600'),        'km/h'),
        'KILOMETER_PER_MINUTE'           => array(array('' => '1000', '/' => '60'),          'km/m'),
        'KILOMETER_PER_SECOND'           => array('1000',                                  'km/s'),
        'KNOT'                           => array(array('' => '1852', '/' => '3600'),        'kn'),
        'LEAGUE_PER_DAY'                 => array(array('' => '4828.0417', '/' => '86400'),  'league/day'),
        'LEAGUE_PER_HOUR'                => array(array('' => '4828.0417', '/' => '3600'),   'league/h'),
        'LEAGUE_PER_MINUTE'              => array(array('' => '4828.0417', '/' => '60'),     'league/m'),
        'LEAGUE_PER_SECOND'              => array('4828.0417',                             'league/s'),
        'MACH'                           => array('340.29',                                'M'),
        'MEGAMETER_PER_DAY'              => array(array('' => '1000000', '/' => '86400'),    'Mm/day'),
        'MEGAMETER_PER_HOUR'             => array(array('' => '1000000', '/' => '3600'),     'Mm/h'),
        'MEGAMETER_PER_MINUTE'           => array(array('' => '1000000', '/' => '60'),       'Mm/m'),
        'MEGAMETER_PER_SECOND'           => array('1000000',                               'Mm/s'),
        'METER_PER_DAY'                  => array(array('' => '1', '/' => '86400'),          'm/day'),
        'METER_PER_HOUR'                 => array(array('' => '1', '/' => '3600'),           'm/h'),
        'METER_PER_MINUTE'               => array(array('' => '1', '/' => '60'),             'm/m'),
        'METER_PER_SECOND'               => array('1',                                     'm/s'),
        'MILE_PER_DAY'                   => array(array('' => '1609.344', '/' => '86400'),   'mi/day'),
        'MILE_PER_HOUR'                  => array(array('' => '1609.344', '/' => '3600'),    'mi/h'),
        'MILE_PER_MINUTE'                => array(array('' => '1609.344', '/' => '60'),      'mi/m'),
        'MILE_PER_SECOND'                => array('1609.344',                              'mi/s'),
        'MILLIMETER_PER_DAY'             => array(array('' => '0.001', '/' => '86400'),      'mm/day'),
        'MILLIMETER_PER_HOUR'            => array(array('' => '0.001', '/' => '3600'),       'mm/h'),
        'MILLIMETER_PER_MINUTE'          => array(array('' => '0.001', '/' => '60'),         'mm/m'),
        'MILLIMETER_PER_SECOND'          => array('0.001',                                 'mm/s'),
        'MILLIMETER_PER_MICROSECOND'     => array('1000',                                  'mm/µs'),
        'MILLIMETER_PER_100_MICROSECOND' => array('10',                                    'mm/100µs'),
        'NAUTIC_MILE_PER_DAY'            => array(array('' => '1852', '/' => '86400'),       'nmi/day'),
        'NAUTIC_MILE_PER_HOUR'           => array(array('' => '1852', '/' => '3600'),        'nmi/h'),
        'NAUTIC_MILE_PER_MINUTE'         => array(array('' => '1852', '/' => '60'),          'nmi/m'),
        'NAUTIC_MILE_PER_SECOND'         => array('1852',                                  'nmi/s'),
        'LIGHTSPEED_AIR'                 => array('299702547',                             'speed of light (air)'),
        'LIGHTSPEED_GLASS'               => array('199861638',                             'speed of light (glass)'),
        'LIGHTSPEED_ICE'                 => array('228849204',                             'speed of light (ice)'),
        'LIGHTSPEED_VACUUM'              => array('299792458',                             'speed of light (vacuum)'),
        'LIGHTSPEED_WATER'               => array('225407863',                             'speed of light (water)'),
        'SOUNDSPEED_AIT'                 => array('340.29',                                'speed of sound (air)'),
        'SOUNDSPEED_METAL'               => array('5000',                                  'speed of sound (metal)'),
        'SOUNDSPEED_WATER'               => array('1500',                                  'speed of sound (water)'),
        'YARD_PER_DAY'                   => array(array('' => '0.9144', '/' => '86400'),     'yd/day'),
        'YARD_PER_HOUR'                  => array(array('' => '0.9144', '/' => '3600'),      'yd/h'),
        'YARD_PER_MINUTE'                => array(array('' => '0.9144', '/' => '60'),        'yd/m'),
        'YARD_PER_SECOND'                => array('0.9144',                                'yd/s'),
        'STANDARD'                       => 'METER_PER_SECOND'
    );
}
PKpG[�sc"z/z/Measure/Power.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Power.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling power conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Power
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Power extends Zend_Measure_Abstract
{
    const STANDARD = 'WATT';

    const ATTOWATT                               = 'ATTOWATT';
    const BTU_PER_HOUR                           = 'BTU_PER_HOUR';
    const BTU_PER_MINUTE                         = 'BTU_PER_MINUTE';
    const BTU_PER_SECOND                         = 'BTU_PER_SECOND';
    const CALORIE_PER_HOUR                       = 'CALORIE_PER_HOUR';
    const CALORIE_PER_MINUTE                     = 'CALORIE_PER_MINUTE';
    const CALORIE_PER_SECOND                     = 'CALORIE_PER_SECOND';
    const CENTIWATT                              = 'CENTIWATT';
    const CHEVAL_VAPEUR                          = 'CHEVAL_VAPEUR';
    const CLUSEC                                 = 'CLUSEC';
    const DECIWATT                               = 'DECIWATT';
    const DEKAWATT                               = 'DEKAWATT';
    const DYNE_CENTIMETER_PER_HOUR               = 'DYNE_CENTIMETER_PER_HOUR';
    const DYNE_CENTIMETER_PER_MINUTE             = 'DYNE_CENTIMETER_PER_MINUTE';
    const DYNE_CENTIMETER_PER_SECOND             = 'DYNE_CENTIMETER_PER_SECOND';
    const ERG_PER_HOUR                           = 'ERG_PER_HOUR';
    const ERG_PER_MINUTE                         = 'ERG_PER_MINUTE';
    const ERG_PER_SECOND                         = 'ERG_PER_SECOND';
    const EXAWATT                                = 'EXAWATT';
    const FEMTOWATT                              = 'FEMTOWATT';
    const FOOT_POUND_FORCE_PER_HOUR              = 'FOOT_POUND_FORCE_PER_HOUR';
    const FOOT_POUND_FORCE_PER_MINUTE            = 'FOOT_POUND_FORCE_PER_MINUTE';
    const FOOT_POUND_FORCE_PER_SECOND            = 'FOOT_POUND_FORCE_PER_SECOND';
    const FOOT_POUNDAL_PER_HOUR                  = 'FOOT_POUNDAL_PER_HOUR';
    const FOOT_POUNDAL_PER_MINUTE                = 'FOOT_POUNDAL_PER_MINUTE';
    const FOOT_POUNDAL_PER_SECOND                = 'FOOT_POUNDAL_PER_SECOND';
    const GIGAWATT                               = 'GIGAWATT';
    const GRAM_FORCE_CENTIMETER_PER_HOUR         = 'GRAM_FORCE_CENTIMETER_PER_HOUR';
    const GRAM_FORCE_CENTIMETER_PER_MINUTE       = 'GRAM_FORCE_CENTIMETER_PER_MINUTE';
    const GRAM_FORCE_CENTIMETER_PER_SECOND       = 'GRAM_FORCE_CENTIMETER_PER_SECOND';
    const HECTOWATT                              = 'HECTOWATT';
    const HORSEPOWER_INTERNATIONAL               = 'HORSEPOWER_INTERNATIONAL';
    const HORSEPOWER_ELECTRIC                    = 'HORSEPOWER_ELECTRIC';
    const HORSEPOWER                             = 'HORSEPOWER';
    const HORSEPOWER_WATER                       = 'HORSEPOWER_WATER';
    const INCH_OUNCE_FORCE_REVOLUTION_PER_MINUTE = 'INCH_OUNCH_FORCE_REVOLUTION_PER_MINUTE';
    const JOULE_PER_HOUR                         = 'JOULE_PER_HOUR';
    const JOULE_PER_MINUTE                       = 'JOULE_PER_MINUTE';
    const JOULE_PER_SECOND                       = 'JOULE_PER_SECOND';
    const KILOCALORIE_PER_HOUR                   = 'KILOCALORIE_PER_HOUR';
    const KILOCALORIE_PER_MINUTE                 = 'KILOCALORIE_PER_MINUTE';
    const KILOCALORIE_PER_SECOND                 = 'KILOCALORIE_PER_SECOND';
    const KILOGRAM_FORCE_METER_PER_HOUR          = 'KILOGRAM_FORCE_METER_PER_HOUR';
    const KILOGRAM_FORCE_METER_PER_MINUTE        = 'KILOGRAM_FORCE_METER_PER_MINUTE';
    const KILOGRAM_FORCE_METER_PER_SECOND        = 'KILOGRAM_FORCE_METER_PER_SECOND';
    const KILOPOND_METER_PER_HOUR                = 'KILOPOND_METER_PER_HOUR';
    const KILOPOND_METER_PER_MINUTE              = 'KILOPOND_METER_PER_MINUTE';
    const KILOPOND_METER_PER_SECOND              = 'KILOPOND_METER_PER_SECOND';
    const KILOWATT                               = 'KILOWATT';
    const MEGAWATT                               = 'MEGAWATT';
    const MICROWATT                              = 'MICROWATT';
    const MILLION_BTU_PER_HOUR                   = 'MILLION_BTU_PER_HOUR';
    const MILLIWATT                              = 'MILLIWATT';
    const NANOWATT                               = 'NANOWATT';
    const NEWTON_METER_PER_HOUR                  = 'NEWTON_METER_PER_HOUR';
    const NEWTON_METER_PER_MINUTE                = 'NEWTON_METER_PER_MINUTE';
    const NEWTON_METER_PER_SECOND                = 'NEWTON_METER_PER_SECOND';
    const PETAWATT                               = 'PETAWATT';
    const PFERDESTAERKE                          = 'PFERDESTAERKE';
    const PICOWATT                               = 'PICOWATT';
    const PONCELET                               = 'PONCELET';
    const POUND_SQUARE_FOOR_PER_CUBIC_SECOND     = 'POUND_SQUARE_FOOT_PER_CUBIC_SECOND';
    const TERAWATT                               = 'TERAWATT';
    const TON_OF_REFRIGERATION                   = 'TON_OF_REFRIGERATION';
    const WATT                                   = 'WATT';
    const YOCTOWATT                              = 'YOCTOWATT';
    const YOTTAWATT                              = 'YOTTAWATT';
    const ZEPTOWATT                              = 'ZEPTOWATT';
    const ZETTAWATT                              = 'ZETTAWATT';

    /**
     * Calculations for all power units
     *
     * @var array
     */
    protected $_units = array(
        'ATTOWATT'                    => array('1.0e-18',           'aW'),
        'BTU_PER_HOUR'                => array('0.29307197',        'BTU/h'),
        'BTU_PER_MINUTE'              => array('17.5843182',        'BTU/m'),
        'BTU_PER_SECOND'              => array('1055.059092',       'BTU/s'),
        'CALORIE_PER_HOUR'            => array(array('' => '11630', '*' => '1.0e-7'),    'cal/h'),
        'CALORIE_PER_MINUTE'          => array(array('' => '697800', '*' => '1.0e-7'),   'cal/m'),
        'CALORIE_PER_SECOND'          => array(array('' => '41868000', '*' => '1.0e-7'), 'cal/s'),
        'CENTIWATT'                   => array('0.01',              'cW'),
        'CHEVAL_VAPEUR'               => array('735.49875',         'cv'),
        'CLUSEC'                      => array('0.0000013332237',   'clusec'),
        'DECIWATT'                    => array('0.1',               'dW'),
        'DEKAWATT'                    => array('10',                'daW'),
        'DYNE_CENTIMETER_PER_HOUR'    => array(array('' => '1.0e-7','/' => '3600'), 'dyn cm/h'),
        'DYNE_CENTIMETER_PER_MINUTE'  => array(array('' => '1.0e-7','/' => '60'),   'dyn cm/m'),
        'DYNE_CENTIMETER_PER_SECOND'  => array('1.0e-7',            'dyn cm/s'),
        'ERG_PER_HOUR'                => array(array('' => '1.0e-7','/' => '3600'), 'erg/h'),
        'ERG_PER_MINUTE'              => array(array('' => '1.0e-7','/' => '60'),   'erg/m'),
        'ERG_PER_SECOND'              => array('1.0e-7',            'erg/s'),
        'EXAWATT'                     => array('1.0e+18',           'EW'),
        'FEMTOWATT'                   => array('1.0e-15',           'fW'),
        'FOOT_POUND_FORCE_PER_HOUR'   => array(array('' => '1.3558179', '/' => '3600'), 'ft lb/h'),
        'FOOT_POUND_FORCE_PER_MINUTE' => array(array('' => '1.3558179', '/' => '60'),   'ft lb/m'),
        'FOOT_POUND_FORCE_PER_SECOND' => array('1.3558179',         'ft lb/s'),
        'FOOT_POUNDAL_PER_HOUR'       => array(array('' => '0.04214011','/' => '3600'), 'ft pdl/h'),
        'FOOT_POUNDAL_PER_MINUTE'     => array(array('' => '0.04214011', '/' => '60'),  'ft pdl/m'),
        'FOOT_POUNDAL_PER_SECOND'     => array('0.04214011',        'ft pdl/s'),
        'GIGAWATT'                    => array('1.0e+9',            'GW'),
        'GRAM_FORCE_CENTIMETER_PER_HOUR' => array(array('' => '0.0000980665','/' => '3600'), 'gf cm/h'),
        'GRAM_FORCE_CENTIMETER_PER_MINUTE' => array(array('' => '0.0000980665','/' => '60'), 'gf cm/m'),
        'GRAM_FORCE_CENTIMETER_PER_SECOND' => array('0.0000980665', 'gf cm/s'),
        'HECTOWATT'                   => array('100',               'hW'),
        'HORSEPOWER_INTERNATIONAL'    => array('745.69987',         'hp'),
        'HORSEPOWER_ELECTRIC'         => array('746',               'hp'),
        'HORSEPOWER'                  => array('735.49875',         'hp'),
        'HORSEPOWER_WATER'            => array('746.043',           'hp'),
        'INCH_OUNCH_FORCE_REVOLUTION_PER_MINUTE' => array('0.00073948398',    'in ocf/m'),
        'JOULE_PER_HOUR'              => array(array('' => '1', '/' => '3600'), 'J/h'),
        'JOULE_PER_MINUTE'            => array(array('' => '1', '/' => '60'),   'J/m'),
        'JOULE_PER_SECOND'            => array('1',                 'J/s'),
        'KILOCALORIE_PER_HOUR'        => array('1.163',             'kcal/h'),
        'KILOCALORIE_PER_MINUTE'      => array('69.78',             'kcal/m'),
        'KILOCALORIE_PER_SECOND'      => array('4186.8',            'kcal/s'),
        'KILOGRAM_FORCE_METER_PER_HOUR' => array(array('' => '9.80665', '/' => '3600'), 'kgf m/h'),
        'KILOGRAM_FORCE_METER_PER_MINUTE' => array(array('' => '9.80665', '/' => '60'), 'kfg m/m'),
        'KILOGRAM_FORCE_METER_PER_SECOND' => array('9.80665',       'kfg m/s'),
        'KILOPOND_METER_PER_HOUR'     => array(array('' => '9.80665', '/' => '3600'), 'kp/h'),
        'KILOPOND_METER_PER_MINUTE'   => array(array('' => '9.80665', '/' => '60'),   'kp/m'),
        'KILOPOND_METER_PER_SECOND'   => array('9.80665',           'kp/s'),
        'KILOWATT'                    => array('1000',              'kW'),
        'MEGAWATT'                    => array('1000000',           'MW'),
        'MICROWATT'                   => array('0.000001',          'µW'),
        'MILLION_BTU_PER_HOUR'        => array('293071.07',         'mio BTU/h'),
        'MILLIWATT'                   => array('0.001',             'mM'),
        'NANOWATT'                    => array('1.0e-9',            'nN'),
        'NEWTON_METER_PER_HOUR'       => array(array('' => '1', '/' => '3600'), 'Nm/h'),
        'NEWTON_METER_PER_MINUTE'     => array(array('' => '1', '/' => '60'),   'Nm/m'),
        'NEWTON_METER_PER_SECOND'     => array('1',                 'Nm/s'),
        'PETAWATT'                    => array('1.0e+15',           'PW'),
        'PFERDESTAERKE'               => array('735.49875',         'PS'),
        'PICOWATT'                    => array('1.0e-12',           'pW'),
        'PONCELET'                    => array('980.665',           'p'),
        'POUND_SQUARE_FOOT_PER_CUBIC_SECOND' => array('0.04214011', 'lb ft²/s³'),
        'TERAWATT'                    => array('1.0e+12',           'TW'),
        'TON_OF_REFRIGERATION'        => array('3516.85284',        'RT'),
        'WATT'                        => array('1',                 'W'),
        'YOCTOWATT'                   => array('1.0e-24',           'yW'),
        'YOTTAWATT'                   => array('1.0e+24',           'YW'),
        'ZEPTOWATT'                   => array('1.0e-21',           'zW'),
        'ZETTAWATT'                   => array('1.0e+21',           'ZW'),
        'STANDARD'                    => 'WATT'
    );
}
PKpG[��kNNMeasure/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Exception extends Zend_Exception
{
}
PKpG[��<�**Measure/Illumination.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Illumination.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling illumination conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Illumination
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Illumination extends Zend_Measure_Abstract
{
    const STANDARD = 'LUX';

    const FOOTCANDLE                  = 'FOOTCANDLE';
    const KILOLUX                     = 'KILOLUX';
    const LUMEN_PER_SQUARE_CENTIMETER = 'LUMEN_PER_SQUARE_CENTIMETER';
    const LUMEN_PER_SQUARE_FOOT       = 'LUMEN_PER_SQUARE_FOOT';
    const LUMEN_PER_SQUARE_INCH       = 'LUMEN_PER_SQUARE_INCH';
    const LUMEN_PER_SQUARE_METER      = 'LUMEN_PER_SQUARE_METER';
    const LUX                         = 'LUX';
    const METERCANDLE                 = 'METERCANDLE';
    const MILLIPHOT                   = 'MILLIPHOT';
    const NOX                         = 'NOX';
    const PHOT                        = 'PHOT';

    /**
     * Calculations for all illumination units
     *
     * @var array
     */
    protected $_units = array(
        'FOOTCANDLE'              => array('10.7639104',   'fc'),
        'KILOLUX'                 => array('1000',         'klx'),
        'LUMEN_PER_SQUARE_CENTIMETER' => array('10000',    'lm/cm²'),
        'LUMEN_PER_SQUARE_FOOT'   => array('10.7639104',   'lm/ft²'),
        'LUMEN_PER_SQUARE_INCH'   => array('1550.0030976', 'lm/in²'),
        'LUMEN_PER_SQUARE_METER'  => array('1',            'lm/m²'),
        'LUX'                     => array('1',            'lx'),
        'METERCANDLE'             => array('1',            'metercandle'),
        'MILLIPHOT'               => array('10',           'mph'),
        'NOX'                     => array('0.001',        'nox'),
        'PHOT'                    => array('10000',        'ph'),
        'STANDARD'                => 'LUX'
    );
}
PKpG[�(~dMeasure/Viscosity/Kinematic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Kinematic.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling acceleration conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Viscosity_Kinematic
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Viscosity_Kinematic extends Zend_Measure_Abstract
{
    const STANDARD = 'SQUARE_METER_PER_SECOND';

    const CENTISTOKES                     = 'CENTISTOKES';
    const LENTOR                          = 'LENTOR';
    const LITER_PER_CENTIMETER_DAY        = 'LITER_PER_CENTIMETER_DAY';
    const LITER_PER_CENTIMETER_HOUR       = 'LITER_PER_CENTIMETER_HOUR';
    const LITER_PER_CENTIMETER_MINUTE     = 'LITER_PER_CENTIMETER_MINUTE';
    const LITER_PER_CENTIMETER_SECOND     = 'LITER_PER_CENTIMETER_SECOND';
    const POISE_CUBIC_CENTIMETER_PER_GRAM = 'POISE_CUBIC_CENTIMETER_PER_GRAM';
    const SQUARE_CENTIMETER_PER_DAY       = 'SQUARE_CENTIMETER_PER_DAY';
    const SQUARE_CENTIMETER_PER_HOUR      = 'SQUARE_CENTIMETER_PER_HOUR';
    const SQUARE_CENTIMETER_PER_MINUTE    = 'SQUARE_CENTIMETER_PER_MINUTE';
    const SQUARE_CENTIMETER_PER_SECOND    = 'SQUARE_CENTIMETER_PER_SECOND';
    const SQUARE_FOOT_PER_DAY             = 'SQUARE_FOOT_PER_DAY';
    const SQUARE_FOOT_PER_HOUR            = 'SQUARE_FOOT_PER_HOUR';
    const SQUARE_FOOT_PER_MINUTE          = 'SQUARE_FOOT_PER_MINUTE';
    const SQUARE_FOOT_PER_SECOND          = 'SQUARE_FOOT_PER_SECOND';
    const SQUARE_INCH_PER_DAY             = 'SQUARE_INCH_PER_DAY';
    const SQUARE_INCH_PER_HOUR            = 'SQUARE_INCH_PER_HOUR';
    const SQUARE_INCH_PER_MINUTE          = 'SQUARE_INCH_PER_MINUTE';
    const SQUARE_INCH_PER_SECOND          = 'SQUARE_INCH_PER_SECOND';
    const SQUARE_METER_PER_DAY            = 'SQUARE_METER_PER_DAY';
    const SQUARE_METER_PER_HOUR           = 'SQUARE_METER_PER_HOUR';
    const SQUARE_METER_PER_MINUTE         = 'SQUARE_METER_PER_MINUTE';
    const SQUARE_METER_PER_SECOND         = 'SQUARE_METER_PER_SECOND';
    const SQUARE_MILLIMETER_PER_DAY       = 'SQUARE_MILLIMETER_PER_DAY';
    const SQUARE_MILLIMETER_PER_HOUR      = 'SQUARE_MILLIMETER_PER_HOUR';
    const SQUARE_MILLIMETER_PER_MINUTE    = 'SQUARE_MILLIMETER_PER_MINUTE';
    const SQUARE_MILLIMETER_PER_SECOND    = 'SQUARE_MILLIMETER_PER_SECOND';
    const STOKES                          = 'STOKES';

    /**
     * Calculations for all kinematic viscosity units
     *
     * @var array
     */
    protected $_units = array(
        'CENTISTOKES'                  => array('0.000001',        'cSt'),
        'LENTOR'                       => array('0.0001',          'lentor'),
        'LITER_PER_CENTIMETER_DAY'     => array(array('' => '1', '/' => '864000'), 'l/cm day'),
        'LITER_PER_CENTIMETER_HOUR'    => array(array('' => '1', '/' => '36000'),  'l/cm h'),
        'LITER_PER_CENTIMETER_MINUTE'  => array(array('' => '1', '/' => '600'),    'l/cm m'),
        'LITER_PER_CENTIMETER_SECOND'  => array('0.1',             'l/cm s'),
        'POISE_CUBIC_CENTIMETER_PER_GRAM' => array('0.0001',       'P cm³/g'),
        'SQUARE_CENTIMETER_PER_DAY'    => array(array('' => '1', '/' => '864000000'),'cm²/day'),
        'SQUARE_CENTIMETER_PER_HOUR'   => array(array('' => '1', '/' => '36000000'),'cm²/h'),
        'SQUARE_CENTIMETER_PER_MINUTE' => array(array('' => '1', '/' => '600000'),'cm²/m'),
        'SQUARE_CENTIMETER_PER_SECOND' => array('0.0001',          'cm²/s'),
        'SQUARE_FOOT_PER_DAY'          => array('0.0000010752667', 'ft²/day'),
        'SQUARE_FOOT_PER_HOUR'         => array('0.0000258064',    'ft²/h'),
        'SQUARE_FOOT_PER_MINUTE'       => array('0.001548384048',  'ft²/m'),
        'SQUARE_FOOT_PER_SECOND'       => array('0.09290304',      'ft²/s'),
        'SQUARE_INCH_PER_DAY'          => array('7.4671296e-9',    'in²/day'),
        'SQUARE_INCH_PER_HOUR'         => array('0.00000017921111', 'in²/h'),
        'SQUARE_INCH_PER_MINUTE'       => array('0.000010752667',  'in²/m'),
        'SQUARE_INCH_PER_SECOND'       => array('0.00064516',      'in²/s'),
        'SQUARE_METER_PER_DAY'         => array(array('' => '1', '/' => '86400'), 'm²/day'),
        'SQUARE_METER_PER_HOUR'        => array(array('' => '1', '/' => '3600'),  'm²/h'),
        'SQUARE_METER_PER_MINUTE'      => array(array('' => '1', '/' => '60'),    'm²/m'),
        'SQUARE_METER_PER_SECOND'      => array('1',               'm²/s'),
        'SQUARE_MILLIMETER_PER_DAY'    => array(array('' => '1', '/' => '86400000000'), 'mm²/day'),
        'SQUARE_MILLIMETER_PER_HOUR'   => array(array('' => '1', '/' => '3600000000'),  'mm²/h'),
        'SQUARE_MILLIMETER_PER_MINUTE' => array(array('' => '1', '/' => '60000000'),    'mm²/m'),
        'SQUARE_MILLIMETER_PER_SECOND' => array('0.000001',        'mm²/s'),
        'STOKES'                       => array('0.0001',          'St'),
        'STANDARD'                     => 'SQUARE_METER_PER_SECOND'
    );
}
PKpG[a'��Measure/Viscosity/Dynamic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Dynamic.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling acceleration conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Viscosity_Dynamic
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Viscosity_Dynamic extends Zend_Measure_Abstract
{
    const STANDARD = 'KILOGRAM_PER_METER_SECOND';

    const CENTIPOISE                              = 'CENTIPOISE';
    const DECIPOISE                               = 'DECIPOISE';
    const DYNE_SECOND_PER_SQUARE_CENTIMETER       = 'DYNE_SECOND_PER_SQUARE_CENTIMETER';
    const GRAM_FORCE_SECOND_PER_SQUARE_CENTIMETER = 'GRAM_FORCE_SECOND_PER_SQUARE_CENTIMETER';
    const GRAM_PER_CENTIMETER_SECOND              = 'GRAM_PER_CENTIMETER_SECOND';
    const KILOGRAM_FORCE_SECOND_PER_SQUARE_METER  = 'KILOGRAM_FORCE_SECOND_PER_SQUARE_METER';
    const KILOGRAM_PER_METER_HOUR                 = 'KILOGRAM_PER_METER_HOUR';
    const KILOGRAM_PER_METER_SECOND               = 'KILOGRAM_PER_METER_SECOND';
    const MILLIPASCAL_SECOND                      = 'MILLIPASCAL_SECOND';
    const MILLIPOISE                              = 'MILLIPOISE';
    const NEWTON_SECOND_PER_SQUARE_METER          = 'NEWTON_SECOND_PER_SQUARE_METER';
    const PASCAL_SECOND                           = 'PASCAL_SECOND';
    const POISE                                   = 'POISE';
    const POISEUILLE                              = 'POISEUILLE';
    const POUND_FORCE_SECOND_PER_SQUARE_FEET      = 'POUND_FORCE_SECOND_PER_SQUARE_FEET';
    const POUND_FORCE_SECOND_PER_SQUARE_INCH      = 'POUND_FORCE_SECOND_PER_SQUARE_INCH';
    const POUND_PER_FOOT_HOUR                     = 'POUND_PER_FOOT_HOUR';
    const POUND_PER_FOOT_SECOND                   = 'POUND_PER_FOOT_SECOND';
    const POUNDAL_HOUR_PER_SQUARE_FOOT            = 'POUNDAL_HOUR_PER_SQUARE_FOOT';
    const POUNDAL_SECOND_PER_SQUARE_FOOT          = 'POUNDAL_SECOND_PER_SQUARE_FOOT';
    const REYN                                    = 'REYN';
    const SLUG_PER_FOOT_SECOND                    = 'SLUG_PER_FOOT_SECOND';
    const LBFS_PER_SQUARE_FOOT                    = 'LBFS_PER_SQUARE_FOOT';
    const NS_PER_SQUARE_METER                     = 'NS_PER_SQUARE_METER';
    const WATER_20C                               = 'WATER_20C';
    const WATER_40C                               = 'WATER_40C';
    const HEAVY_OIL_20C                           = 'HEAVY_OIL_20C';
    const HEAVY_OIL_40C                           = 'HEAVY_OIL_40C';
    const GLYCERIN_20C                            = 'GLYCERIN_20C';
    const GLYCERIN_40C                            = 'GLYCERIN_40C';
    const SAE_5W_MINUS18C                         = 'SAE_5W_MINUS18C';
    const SAE_10W_MINUS18C                        = 'SAE_10W_MINUS18C';
    const SAE_20W_MINUS18C                        = 'SAE_20W_MINUS18C';
    const SAE_5W_99C                              = 'SAE_5W_99C';
    const SAE_10W_99C                             = 'SAE_10W_99C';
    const SAE_20W_99C                             = 'SAE_20W_99C';

    /**
     * Calculations for all dynamic viscosity units
     *
     * @var array
     */
    protected $_units = array(
        'CENTIPOISE'          => array('0.001',      'cP'),
        'DECIPOISE'           => array('0.01',       'dP'),
        'DYNE_SECOND_PER_SQUARE_CENTIMETER'       => array('0.1',     'dyn s/cm²'),
        'GRAM_FORCE_SECOND_PER_SQUARE_CENTIMETER' => array('98.0665', 'gf s/cm²'),
        'GRAM_PER_CENTIMETER_SECOND'              => array('0.1',     'g/cm s'),
        'KILOGRAM_FORCE_SECOND_PER_SQUARE_METER'  => array('9.80665', 'kgf s/m²'),
        'KILOGRAM_PER_METER_HOUR'    => array(array('' => '1', '/' => '3600'), 'kg/m h'),
        'KILOGRAM_PER_METER_SECOND'  => array('1',   'kg/ms'),
        'MILLIPASCAL_SECOND'  => array('0.001',      'mPa s'),
        'MILLIPOISE'          => array('0.0001',     'mP'),
        'NEWTON_SECOND_PER_SQUARE_METER' => array('1', 'N s/m²'),
        'PASCAL_SECOND'       => array('1',          'Pa s'),
        'POISE'               => array('0.1',        'P'),
        'POISEUILLE'          => array('1',          'Pl'),
        'POUND_FORCE_SECOND_PER_SQUARE_FEET' => array('47.880259',  'lbf s/ft²'),
        'POUND_FORCE_SECOND_PER_SQUARE_INCH' => array('6894.75729', 'lbf s/in²'),
        'POUND_PER_FOOT_HOUR' => array('0.00041337887',             'lb/ft h'),
        'POUND_PER_FOOT_SECOND'          => array('1.4881639',      'lb/ft s'),
        'POUNDAL_HOUR_PER_SQUARE_FOOT'   => array('0.00041337887',  'pdl h/ft²'),
        'POUNDAL_SECOND_PER_SQUARE_FOOT' => array('1.4881639',      'pdl s/ft²'),
        'REYN'                => array('6894.75729', 'reyn'),
        'SLUG_PER_FOOT_SECOND'=> array('47.880259',  'slug/ft s'),
        'WATER_20C'           => array('0.001',      'water (20°)'),
        'WATER_40C'           => array('0.00065',    'water (40°)'),
        'HEAVY_OIL_20C'       => array('0.45',       'oil (20°)'),
        'HEAVY_OIL_40C'       => array('0.11',       'oil (40°)'),
        'GLYCERIN_20C'        => array('1.41',       'glycerin (20°)'),
        'GLYCERIN_40C'        => array('0.284',      'glycerin (40°)'),
        'SAE_5W_MINUS18C'     => array('1.2',        'SAE 5W (-18°)'),
        'SAE_10W_MINUS18C'    => array('2.4',        'SAE 10W (-18°)'),
        'SAE_20W_MINUS18C'    => array('9.6',        'SAE 20W (-18°)'),
        'SAE_5W_99C'          => array('0.0039',     'SAE 5W (99°)'),
        'SAE_10W_99C'         => array('0.0042',     'SAE 10W (99°)'),
        'SAE_20W_99C'         => array('0.0057',     'SAE 20W (99°)'),
        'STANDARD'            => 'KILOGRAM_PER_METER_SECOND'
    );
}
PKpG[D[�v�g�gMeasure/Weight.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Weight.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling weight conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Weigth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Weight extends Zend_Measure_Abstract
{
    const STANDARD = 'KILOGRAM';

    const ARRATEL                 = 'ARRATEL';
    const ARTEL                   = 'ARTEL';
    const ARROBA_PORTUGUESE       = 'ARROBA_PORTUGUESE';
    const ARROBA                  = 'ARROBA';
    const AS_                     = 'AS_';
    const ASS                     = 'ASS';
    const ATOMIC_MASS_UNIT_1960   = 'ATOMIC_MASS_UNIT_1960';
    const ATOMIC_MASS_UNIT_1973   = 'ATOMIC_MASS_UNIT_1973';
    const ATOMIC_MASS_UNIT_1986   = 'ATOMIC_MASS_UNIT_1986';
    const ATOMIC_MASS_UNIT        = 'ATOMIC_MASS_UNIT';
    const AVOGRAM                 = 'AVOGRAM';
    const BAG                     = 'BAG';
    const BAHT                    = 'BAHT';
    const BALE                    = 'BALE';
    const BALE_US                 = 'BALE_US';
    const BISMAR_POUND            = 'BISMAR_POUND';
    const CANDY                   = 'CANDY';
    const CARAT_INTERNATIONAL     = 'CARAT_INTERNATIONAL';
    const CARAT                   = 'CARAT';
    const CARAT_UK                = 'CARAT_UK';
    const CARAT_US_1913           = 'CARAT_US_1913';
    const CARGA                   = 'CARGA';
    const CATTI                   = 'CATTI';
    const CATTI_JAPANESE          = 'CATTI_JAPANESE';
    const CATTY                   = 'CATTY';
    const CATTY_JAPANESE          = 'CATTY_JAPANESE';
    const CATTY_THAI              = 'CATTY_THAI';
    const CENTAL                  = 'CENTAL';
    const CENTIGRAM               = 'CENTIGRAM';
    const CENTNER                 = 'CENTNER';
    const CENTNER_RUSSIAN         = 'CENTNER_RUSSIAN';
    const CHALDER                 = 'CHALDER';
    const CHALDRON                = 'CHALDRON';
    const CHIN                    = 'CHIN';
    const CHIN_JAPANESE           = 'CHIN_JAPANESE';
    const CLOVE                   = 'CLOVE';
    const CRITH                   = 'CRITH';
    const DALTON                  = 'DALTON';
    const DAN                     = 'DAN';
    const DAN_JAPANESE            = 'DAN_JAPANESE';
    const DECIGRAM                = 'DECIGRAM';
    const DECITONNE               = 'DECITONNE';
    const DEKAGRAM                = 'DEKAGRAM';
    const DEKATONNE               = 'DEKATONNE';
    const DENARO                  = 'DENARO';
    const DENIER                  = 'DENIER';
    const DRACHME                 = 'DRACHME';
    const DRAM                    = 'DRAM';
    const DRAM_APOTHECARIES       = 'DRAM_APOTHECARIES';
    const DYNE                    = 'DYNE';
    const ELECTRON                = 'ELECTRON';
    const ELECTRONVOLT            = 'ELECTRONVOLT';
    const ETTO                    = 'ETTO';
    const EXAGRAM                 = 'EXAGRAM';
    const FEMTOGRAM               = 'FEMTOGRAM';
    const FIRKIN                  = 'FIRKIN';
    const FLASK                   = 'FLASK';
    const FOTHER                  = 'FOTHER';
    const FOTMAL                  = 'FOTMAL';
    const FUNT                    = 'FUNT';
    const FUNTE                   = 'FUNTE';
    const GAMMA                   = 'GAMMA';
    const GIGAELECTRONVOLT        = 'GIGAELECTRONVOLT';
    const GIGAGRAM                = 'GIGAGRAM';
    const GIGATONNE               = 'GIGATONNE';
    const GIN                     = 'GIN';
    const GIN_JAPANESE            = 'GIN_JAPANESE';
    const GRAIN                   = 'GRAIN';
    const GRAM                    = 'GRAM';
    const GRAN                    = 'GRAN';
    const GRANO                   = 'GRANO';
    const GRANI                   = 'GRANI';
    const GROS                    = 'GROS';
    const HECTOGRAM               = 'HECTOGRAM';
    const HUNDRETWEIGHT           = 'HUNDRETWEIGHT';
    const HUNDRETWEIGHT_US        = 'HUNDRETWEIGHT_US';
    const HYL                     = 'HYL';
    const JIN                     = 'JIN';
    const JUPITER                 = 'JUPITER';
    const KATI                    = 'KATI';
    const KATI_JAPANESE           = 'KATI_JAPANESE';
    const KEEL                    = 'KEEL';
    const KEG                     = 'KEG';
    const KILODALTON              = 'KILODALTON';
    const KILOGRAM                = 'KILOGRAM';
    const KILOGRAM_FORCE          = 'KILOGRAM_FORCE';
    const KILOTON                 = 'KILOTON';
    const KILOTON_US              = 'KILOTON_US';
    const KILOTONNE               = 'KILOTONNE';
    const KIN                     = 'KIN';
    const KIP                     = 'KIP';
    const KOYAN                   = 'KOYAN';
    const KWAN                    = 'KWAN';
    const LAST_GERMANY            = 'LAST_GERMANY';
    const LAST                    = 'LAST';
    const LAST_WOOL               = 'LAST_WOOL';
    const LB                      = 'LB';
    const LBS                     = 'LBS';
    const LIANG                   = 'LIANG';
    const LIBRA_ITALIAN           = 'LIBRE_ITALIAN';
    const LIBRA_SPANISH           = 'LIBRA_SPANISH';
    const LIBRA_PORTUGUESE        = 'LIBRA_PORTUGUESE';
    const LIBRA_ANCIENT           = 'LIBRA_ANCIENT';
    const LIBRA                   = 'LIBRA';
    const LIVRE                   = 'LIVRE';
    const LONG_TON                = 'LONG_TON';
    const LOT                     = 'LOT';
    const MACE                    = 'MACE';
    const MAHND                   = 'MAHND';
    const MARC                    = 'MARC';
    const MARCO                   = 'MARCO';
    const MARK                    = 'MARK';
    const MARK_GERMAN             = 'MARK_GERMANY';
    const MAUND                   = 'MAUND';
    const MAUND_PAKISTAN          = 'MAUND_PAKISTAN';
    const MEGADALTON              = 'MEGADALTON';
    const MEGAGRAM                = 'MEGAGRAM';
    const MEGATONNE               = 'MEGATONNE';
    const MERCANTILE_POUND        = 'MERCANTILE_POUND';
    const METRIC_TON              = 'METRIC_TON';
    const MIC                     = 'MIC';
    const MICROGRAM               = 'MICROGRAM';
    const MILLIDALTON             = 'MILLIDALTON';
    const MILLIER                 = 'MILLIER';
    const MILLIGRAM               = 'MILLIGRAM';
    const MILLIMASS_UNIT          = 'MILLIMASS_UNIT';
    const MINA                    = 'MINA';
    const MOMME                   = 'MOMME';
    const MYRIAGRAM               = 'MYRIAGRAM';
    const NANOGRAM                = 'NANOGRAM';
    const NEWTON                  = 'NEWTON';
    const OBOL                    = 'OBOL';
    const OBOLOS                  = 'OBOLOS';
    const OBOLUS                  = 'OBOLUS';
    const OBOLOS_ANCIENT          = 'OBOLOS_ANCIENT';
    const OBOLUS_ANCIENT          = 'OBOLUS_ANCIENT';
    const OKA                     = 'OKA';
    const ONCA                    = 'ONCA';
    const ONCE                    = 'ONCE';
    const ONCIA                   = 'ONCIA';
    const ONZA                    = 'ONZA';
    const ONS                     = 'ONS';
    const OUNCE                   = 'OUNCE';
    const OUNCE_FORCE             = 'OUNCE_FORCE';
    const OUNCE_TROY              = 'OUNCE_TROY';
    const PACKEN                  = 'PACKEN';
    const PENNYWEIGHT             = 'PENNYWEIGHT';
    const PETAGRAM                = 'PETAGRAM';
    const PFUND                   = 'PFUND';
    const PICOGRAM                = 'PICOGRAM';
    const POINT                   = 'POINT';
    const POND                    = 'POND';
    const POUND                   = 'POUND';
    const POUND_FORCE             = 'POUND_FORCE';
    const POUND_METRIC            = 'POUND_METRIC';
    const POUND_TROY              = 'POUND_TROY';
    const PUD                     = 'PUD';
    const POOD                    = 'POOD';
    const PUND                    = 'PUND';
    const QIAN                    = 'QIAN';
    const QINTAR                  = 'QINTAR';
    const QUARTER                 = 'QUARTER';
    const QUARTER_US              = 'QUARTER_US';
    const QUARTER_TON             = 'QUARTER_TON';
    const QUARTERN                = 'QUARTERN';
    const QUARTERN_LOAF           = 'QUARTERN_LOAF';
    const QUINTAL_FRENCH          = 'QUINTAL_FRENCH';
    const QUINTAL                 = 'QUINTAL';
    const QUINTAL_PORTUGUESE      = 'QUINTAL_PORTUGUESE';
    const QUINTAL_SPAIN           = 'QUINTAL_SPAIN';
    const REBAH                   = 'REBAH';
    const ROTL                    = 'ROTL';
    const ROTEL                   = 'ROTEL';
    const ROTTLE                  = 'ROTTLE';
    const RATEL                   = 'RATEL';
    const SACK                    = 'SACK';
    const SCRUPLE                 = 'SCRUPLE';
    const SEER                    = 'SEER';
    const SEER_PAKISTAN           = 'SEER_PAKISTAN';
    const SHEKEL                  = 'SHEKEL';
    const SHORT_TON               = 'SHORT_TON';
    const SLINCH                  = 'SLINCH';
    const SLUG                    = 'SLUG';
    const STONE                   = 'STONE';
    const TAEL                    = 'TAEL';
    const TAHIL_JAPANESE          = 'TAHIL_JAPANESE';
    const TAHIL                   = 'TAHIL';
    const TALENT                  = 'TALENT';
    const TAN                     = 'TAN';
    const TECHNISCHE_MASS_EINHEIT = 'TECHNISCHE_MASS_EINHEIT';
    const TERAGRAM                = 'TERAGRAM';
    const TETRADRACHM             = 'TETRADRACHM';
    const TICAL                   = 'TICAL';
    const TOD                     = 'TOD';
    const TOLA                    = 'TOLA';
    const TOLA_PAKISTAN           = 'TOLA_PAKISTAN';
    const TON_UK                  = 'TON_UK';
    const TON                     = 'TON';
    const TON_US                  = 'TON_US';
    const TONELADA_PORTUGUESE     = 'TONELADA_PORTUGUESE';
    const TONELADA                = 'TONELADA';
    const TONNE                   = 'TONNE';
    const TONNEAU                 = 'TONNEAU';
    const TOVAR                   = 'TOVAR';
    const TROY_OUNCE              = 'TROY_OUNCE';
    const TROY_POUND              = 'TROY_POUND';
    const TRUSS                   = 'TRUSS';
    const UNCIA                   = 'UNCIA';
    const UNZE                    = 'UNZE';
    const VAGON                   = 'VAGON';
    const YOCTOGRAM               = 'YOCTOGRAM';
    const YOTTAGRAM               = 'YOTTAGRAM';
    const ZENTNER                 = 'ZENTNER';
    const ZEPTOGRAM               = 'ZEPTOGRAM';
    const ZETTAGRAM               = 'ZETTAGRAM';

    /**
     * Calculations for all weight units
     *
     * @var array
     */
    protected $_units = array(
        'ARRATEL'               => array('0.5',            'arratel'),
        'ARTEL'                 => array('0.5',            'artel'),
        'ARROBA_PORTUGUESE'     => array('14.69',          'arroba'),
        'ARROBA'                => array('11.502',         '@'),
        'AS_'                   => array('0.000052',       'as'),
        'ASS'                   => array('0.000052',       'ass'),
        'ATOMIC_MASS_UNIT_1960' => array('1.6603145e-27',  'amu'),
        'ATOMIC_MASS_UNIT_1973' => array('1.6605655e-27',  'amu'),
        'ATOMIC_MASS_UNIT_1986' => array('1.6605402e-27',  'amu'),
        'ATOMIC_MASS_UNIT'      => array('1.66053873e-27', 'amu'),
        'AVOGRAM'               => array('1.6605402e-27',  'avogram'),
        'BAG'                   => array('42.63768278',    'bag'),
        'BAHT'                  => array('0.015',          'baht'),
        'BALE'                  => array('326.5865064',    'bl'),
        'BALE_US'               => array('217.7243376',    'bl'),
        'BISMAR_POUND'          => array('5.993',          'bismar pound'),
        'CANDY'                 => array('254',            'candy'),
        'CARAT_INTERNATIONAL'   => array('0.0002',         'ct'),
        'CARAT'                 => array('0.0002',         'ct'),
        'CARAT_UK'              => array('0.00025919564',  'ct'),
        'CARAT_US_1913'         => array('0.0002053',      'ct'),
        'CARGA'                 => array('140',            'carga'),
        'CATTI'                 => array('0.604875',       'catti'),
        'CATTI_JAPANESE'        => array('0.594',          'catti'),
        'CATTY'                 => array('0.5',            'catty'),
        'CATTY_JAPANESE'        => array('0.6',            'catty'),
        'CATTY_THAI'            => array('0.6',            'catty'),
        'CENTAL'                => array('45.359237',      'cH'),
        'CENTIGRAM'             => array('0.00001',        'cg'),
        'CENTNER'               => array('50',             'centner'),
        'CENTNER_RUSSIAN'       => array('100',            'centner'),
        'CHALDER'               => array('2692.52',        'chd'),
        'CHALDRON'              => array('2692.52',        'chd'),
        'CHIN'                  => array('0.5',            'chin'),
        'CHIN_JAPANESE'         => array('0.6',            'chin'),
        'CLOVE'                 => array('3.175',          'clove'),
        'CRITH'                 => array('0.000089885',    'crith'),
        'DALTON'                => array('1.6605402e-27',  'D'),
        'DAN'                   => array('50',             'dan'),
        'DAN_JAPANESE'          => array('60',             'dan'),
        'DECIGRAM'              => array('0.0001',         'dg'),
        'DECITONNE'             => array('100',            'dt'),
        'DEKAGRAM'              => array('0.01',           'dag'),
        'DEKATONNE'             => array('10000',          'dat'),
        'DENARO'                => array('0.0011',         'denaro'),
        'DENIER'                => array('0.001275',       'denier'),
        'DRACHME'               => array('0.0038',         'drachme'),
        'DRAM'                  => array(array('' => '0.45359237', '/' => '256'), 'dr'),
        'DRAM_APOTHECARIES'     => array('0.0038879346',   'dr'),
        'DYNE'                  => array('1.0197162e-6',   'dyn'),
        'ELECTRON'              => array('9.109382e-31',   'e−'),
        'ELECTRONVOLT'          => array('1.782662e-36',   'eV'),
        'ETTO'                  => array('0.1',            'hg'),
        'EXAGRAM'               => array('1.0e+15',        'Eg'),
        'FEMTOGRAM'             => array('1.0e-18',        'fg'),
        'FIRKIN'                => array('25.40117272',    'fir'),
        'FLASK'                 => array('34.7',           'flask'),
        'FOTHER'                => array('979.7595192',    'fother'),
        'FOTMAL'                => array('32.65865064',    'fotmal'),
        'FUNT'                  => array('0.4095',         'funt'),
        'FUNTE'                 => array('0.4095',         'funte'),
        'GAMMA'                 => array('0.000000001',    'gamma'),
        'GIGAELECTRONVOLT'      => array('1.782662e-27',   'GeV'),
        'GIGAGRAM'              => array('1000000',        'Gg'),
        'GIGATONNE'             => array('1.0e+12',        'Gt'),
        'GIN'                   => array('0.6',            'gin'),
        'GIN_JAPANESE'          => array('0.594',          'gin'),
        'GRAIN'                 => array('0.00006479891',  'gr'),
        'GRAM'                  => array('0.001',          'g'),
        'GRAN'                  => array('0.00082',        'gran'),
        'GRANO'                 => array('0.00004905',     'grano'),
        'GRANI'                 => array('0.00004905',     'grani'),
        'GROS'                  => array('0.003824',       'gros'),
        'HECTOGRAM'             => array('0.1',            'hg'),
        'HUNDRETWEIGHT'         => array('50.80234544',    'cwt'),
        'HUNDRETWEIGHT_US'      => array('45.359237',      'cwt'),
        'HYL'                   => array('9.80665',        'hyl'),
        'JIN'                   => array('0.5',            'jin'),
        'JUPITER'               => array('1.899e+27',      'jupiter'),
        'KATI'                  => array('0.5',            'kati'),
        'KATI_JAPANESE'         => array('0.6',            'kati'),
        'KEEL'                  => array('21540.19446656', 'keel'),
        'KEG'                   => array('45.359237',      'keg'),
        'KILODALTON'            => array('1.6605402e-24',  'kD'),
        'KILOGRAM'              => array('1',              'kg'),
        'KILOGRAM_FORCE'        => array('1',              'kgf'),
        'KILOTON'               => array('1016046.9088',   'kt'),
        'KILOTON_US'            => array('907184.74',      'kt'),
        'KILOTONNE'             => array('1000000',        'kt'),
        'KIN'                   => array('0.6',            'kin'),
        'KIP'                   => array('453.59237',      'kip'),
        'KOYAN'                 => array('2419',           'koyan'),
        'KWAN'                  => array('3.75',           'kwan'),
        'LAST_GERMANY'          => array('2000',           'last'),
        'LAST'                  => array('1814.36948',     'last'),
        'LAST_WOOL'             => array('1981.29147216',  'last'),
        'LB'                    => array('0.45359237',     'lb'),
        'LBS'                   => array('0.45359237',     'lbs'),
        'LIANG'                 => array('0.05',           'liang'),
        'LIBRE_ITALIAN'         => array('0.339',          'lb'),
        'LIBRA_SPANISH'         => array('0.459',          'lb'),
        'LIBRA_PORTUGUESE'      => array('0.459',          'lb'),
        'LIBRA_ANCIENT'         => array('0.323',          'lb'),
        'LIBRA'                 => array('1',              'lb'),
        'LIVRE'                 => array('0.4895',         'livre'),
        'LONG_TON'              => array('1016.0469088',   't'),
        'LOT'                   => array('0.015',          'lot'),
        'MACE'                  => array('0.003778',       'mace'),
        'MAHND'                 => array('0.9253284348',   'mahnd'),
        'MARC'                  => array('0.24475',        'marc'),
        'MARCO'                 => array('0.23',           'marco'),
        'MARK'                  => array('0.2268',         'mark'),
        'MARK_GERMANY'          => array('0.2805',         'mark'),
        'MAUND'                 => array('37.3242',        'maund'),
        'MAUND_PAKISTAN'        => array('40',             'maund'),
        'MEGADALTON'            => array('1.6605402e-21',  'MD'),
        'MEGAGRAM'              => array('1000',           'Mg'),
        'MEGATONNE'             => array('1.0e+9',         'Mt'),
        'MERCANTILE_POUND'      => array('0.46655',        'lb merc'),
        'METRIC_TON'            => array('1000',           't'),
        'MIC'                   => array('1.0e-9',         'mic'),
        'MICROGRAM'             => array('1.0e-9',         '�g'),
        'MILLIDALTON'           => array('1.6605402e-30',  'mD'),
        'MILLIER'               => array('1000',           'millier'),
        'MILLIGRAM'             => array('0.000001',       'mg'),
        'MILLIMASS_UNIT'        => array('1.6605402e-30',  'mmu'),
        'MINA'                  => array('0.499',          'mina'),
        'MOMME'                 => array('0.00375',        'momme'),
        'MYRIAGRAM'             => array('10',             'myg'),
        'NANOGRAM'              => array('1.0e-12',        'ng'),
        'NEWTON'                => array('0.101971621',    'N'),
        'OBOL'                  => array('0.0001',         'obol'),
        'OBOLOS'                => array('0.0001',         'obolos'),
        'OBOLUS'                => array('0.0001',         'obolus'),
        'OBOLOS_ANCIENT'        => array('0.0005',         'obolos'),
        'OBOLUS_ANCIENT'        => array('0.00057',        'obolos'),
        'OKA'                   => array('1.28',           'oka'),
        'ONCA'                  => array('0.02869',        'onca'),
        'ONCE'                  => array('0.03059',        'once'),
        'ONCIA'                 => array('0.0273',         'oncia'),
        'ONZA'                  => array('0.02869',        'onza'),
        'ONS'                   => array('0.1',            'ons'),
        'OUNCE'                 => array(array('' => '0.45359237', '/' => '16'),    'oz'),
        'OUNCE_FORCE'           => array(array('' => '0.45359237', '/' => '16'),    'ozf'),
        'OUNCE_TROY'            => array(array('' => '65.31730128', '/' => '2100'), 'oz'),
        'PACKEN'                => array('490.79',         'packen'),
        'PENNYWEIGHT'           => array(array('' => '65.31730128', '/' => '42000'), 'dwt'),
        'PETAGRAM'              => array('1.0e+12',        'Pg'),
        'PFUND'                 => array('0.5',            'pfd'),
        'PICOGRAM'              => array('1.0e-15',        'pg'),
        'POINT'                 => array('0.000002',       'pt'),
        'POND'                  => array('0.5',            'pond'),
        'POUND'                 => array('0.45359237',     'lb'),
        'POUND_FORCE'           => array('0.4535237',      'lbf'),
        'POUND_METRIC'          => array('0.5',            'lb'),
        'POUND_TROY'            => array(array('' => '65.31730128', '/' => '175'), 'lb'),
        'PUD'                   => array('16.3',           'pud'),
        'POOD'                  => array('16.3',           'pood'),
        'PUND'                  => array('0.5',            'pund'),
        'QIAN'                  => array('0.005',          'qian'),
        'QINTAR'                => array('50',             'qintar'),
        'QUARTER'               => array('12.70058636',    'qtr'),
        'QUARTER_US'            => array('11.33980925',    'qtr'),
        'QUARTER_TON'           => array('226.796185',     'qtr'),
        'QUARTERN'              => array('1.587573295',    'quartern'),
        'QUARTERN_LOAF'         => array('1.81436948',     'quartern-loaf'),
        'QUINTAL_FRENCH'        => array('48.95',          'q'),
        'QUINTAL'               => array('100',            'q'),
        'QUINTAL_PORTUGUESE'    => array('58.752',         'q'),
        'QUINTAL_SPAIN'         => array('45.9',           'q'),
        'REBAH'                 => array('0.2855',         'rebah'),
        'ROTL'                  => array('0.5',            'rotl'),
        'ROTEL'                 => array('0.5',            'rotel'),
        'ROTTLE'                => array('0.5',            'rottle'),
        'RATEL'                 => array('0.5',            'ratel'),
        'SACK'                  => array('165.10762268',   'sack'),
        'SCRUPLE'               => array(array('' => '65.31730128', '/' => '50400'), 's'),
        'SEER'                  => array('0.933105',       'seer'),
        'SEER_PAKISTAN'         => array('1',              'seer'),
        'SHEKEL'                => array('0.01142',        'shekel'),
        'SHORT_TON'             => array('907.18474',      'st'),
        'SLINCH'                => array('175.126908',     'slinch'),
        'SLUG'                  => array('14.593903',      'slug'),
        'STONE'                 => array('6.35029318',     'st'),
        'TAEL'                  => array('0.03751',        'tael'),
        'TAHIL_JAPANESE'        => array('0.03751',        'tahil'),
        'TAHIL'                 => array('0.05',           'tahil'),
        'TALENT'                => array('30',             'talent'),
        'TAN'                   => array('50',             'tan'),
        'TECHNISCHE_MASS_EINHEIT' => array('9.80665',      'TME'),
        'TERAGRAM'              => array('1.0e+9',         'Tg'),
        'TETRADRACHM'           => array('0.014',          'tetradrachm'),
        'TICAL'                 => array('0.0164',         'tical'),
        'TOD'                   => array('12.70058636',    'tod'),
        'TOLA'                  => array('0.0116638125',   'tola'),
        'TOLA_PAKISTAN'         => array('0.0125',         'tola'),
        'TON_UK'                => array('1016.0469088',   't'),
        'TON'                   => array('1000',           't'),
        'TON_US'                => array('907.18474',      't'),
        'TONELADA_PORTUGUESE'   => array('793.15',         'tonelada'),
        'TONELADA'              => array('919.9',          'tonelada'),
        'TONNE'                 => array('1000',           't'),
        'TONNEAU'               => array('979',            'tonneau'),
        'TOVAR'                 => array('128.8',          'tovar'),
        'TROY_OUNCE'            => array(array('' => '65.31730128', '/' => '2100'), 'troy oz'),
        'TROY_POUND'            => array(array('' => '65.31730128', '/' => '175'),  'troy lb'),
        'TRUSS'                 => array('25.40117272',    'truss'),
        'UNCIA'                 => array('0.0272875',      'uncia'),
        'UNZE'                  => array('0.03125',        'unze'),
        'VAGON'                 => array('10000',          'vagon'),
        'YOCTOGRAM'             => array('1.0e-27',        'yg'),
        'YOTTAGRAM'             => array('1.0e+21',        'Yg'),
        'ZENTNER'               => array('50',             'Ztr'),
        'ZEPTOGRAM'             => array('1.0e-24',        'zg'),
        'ZETTAGRAM'             => array('1.0e+18',        'Zg'),
        'STANDARD'              => 'KILOGRAM'
    );
}
PKpG[���11Measure/Current.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Current.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling current conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Current
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Current extends Zend_Measure_Abstract
{
    const STANDARD = 'AMPERE';

    const ABAMPERE             = 'ABAMPERE';
    const AMPERE               = 'AMPERE';
    const BIOT                 = 'BIOT';
    const CENTIAMPERE          = 'CENTIAMPERE';
    const COULOMB_PER_SECOND   = 'COULOMB_PER_SECOND';
    const DECIAMPERE           = 'DECIAMPERE';
    const DEKAAMPERE           = 'DEKAAMPERE';
    const ELECTROMAGNETIC_UNIT = 'ELECTROMAGNATIC_UNIT';
    const ELECTROSTATIC_UNIT   = 'ELECTROSTATIC_UNIT';
    const FRANCLIN_PER_SECOND  = 'FRANCLIN_PER_SECOND';
    const GAUSSIAN             = 'GAUSSIAN';
    const GIGAAMPERE           = 'GIGAAMPERE';
    const GILBERT              = 'GILBERT';
    const HECTOAMPERE          = 'HECTOAMPERE';
    const KILOAMPERE           = 'KILOAMPERE';
    const MEGAAMPERE           = 'MEGAAMPERE';
    const MICROAMPERE          = 'MICROAMPERE';
    const MILLIAMPERE          = 'MILLIAMPERE';
    const NANOAMPERE           = 'NANOAMPERE';
    const PICOAMPERE           = 'PICOAMPERE';
    const SIEMENS_VOLT         = 'SIEMENS_VOLT';
    const STATAMPERE           = 'STATAMPERE';
    const TERAAMPERE           = 'TERAAMPERE';
    const VOLT_PER_OHM         = 'VOLT_PER_OHM';
    const WATT_PER_VOLT        = 'WATT_PER_VOLT';
    const WEBER_PER_HENRY      = 'WEBER_PER_HENRY';

    /**
     * Calculations for all current units
     *
     * @var array
     */
    protected $_units = array(
        'ABAMPERE'             => array('10',           'abampere'),
        'AMPERE'               => array('1',            'A'),
        'BIOT'                 => array('10',           'Bi'),
        'CENTIAMPERE'          => array('0.01',         'cA'),
        'COULOMB_PER_SECOND'   => array('1',            'C/s'),
        'DECIAMPERE'           => array('0.1',          'dA'),
        'DEKAAMPERE'           => array('10',           'daA'),
        'ELECTROMAGNATIC_UNIT' => array('10',           'current emu'),
        'ELECTROSTATIC_UNIT'   => array('3.335641e-10', 'current esu'),
        'FRANCLIN_PER_SECOND'  => array('3.335641e-10', 'Fr/s'),
        'GAUSSIAN'             => array('3.335641e-10', 'G current'),
        'GIGAAMPERE'           => array('1.0e+9',       'GA'),
        'GILBERT'              => array('0.79577472',   'Gi'),
        'HECTOAMPERE'          => array('100',          'hA'),
        'KILOAMPERE'           => array('1000',         'kA'),
        'MEGAAMPERE'           => array('1000000',      'MA') ,
        'MICROAMPERE'          => array('0.000001',     'µA'),
        'MILLIAMPERE'          => array('0.001',        'mA'),
        'NANOAMPERE'           => array('1.0e-9',       'nA'),
        'PICOAMPERE'           => array('1.0e-12',      'pA'),
        'SIEMENS_VOLT'         => array('1',            'SV'),
        'STATAMPERE'           => array('3.335641e-10', 'statampere'),
        'TERAAMPERE'           => array('1.0e+12',      'TA'),
        'VOLT_PER_OHM'         => array('1',            'V/Ohm'),
        'WATT_PER_VOLT'        => array('1',            'W/V'),
        'WEBER_PER_HENRY'      => array('1',            'Wb/H'),
        'STANDARD'             => 'AMPERE'
    );
}
PKpG[\�"��Measure/Frequency.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Frequency.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling flow volume conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Frequency
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Frequency extends Zend_Measure_Abstract
{
    const STANDARD = 'HERTZ';

    const ONE_PER_SECOND        = 'ONE_PER_SECOND';
    const CYCLE_PER_SECOND      = 'CYCLE_PER_SECOND';
    const DEGREE_PER_HOUR       = 'DEGREE_PER_HOUR';
    const DEGREE_PER_MINUTE     = 'DEGREE_PER_MINUTE';
    const DEGREE_PER_SECOND     = 'DEGREE_PER_SECOND';
    const GIGAHERTZ             = 'GIGAHERTZ';
    const HERTZ                 = 'HERTZ';
    const KILOHERTZ             = 'KILOHERTZ';
    const MEGAHERTZ             = 'MEGAHERTZ';
    const MILLIHERTZ            = 'MILLIHERTZ';
    const RADIAN_PER_HOUR       = 'RADIAN_PER_HOUR';
    const RADIAN_PER_MINUTE     = 'RADIAN_PER_MINUTE';
    const RADIAN_PER_SECOND     = 'RADIAN_PER_SECOND';
    const REVOLUTION_PER_HOUR   = 'REVOLUTION_PER_HOUR';
    const REVOLUTION_PER_MINUTE = 'REVOLUTION_PER_MINUTE';
    const REVOLUTION_PER_SECOND = 'REVOLUTION_PER_SECOND';
    const RPM                   = 'RPM';
    const TERRAHERTZ            = 'TERRAHERTZ';

    /**
     * Calculations for all frequency units
     *
     * @var array
     */
    protected $_units = array(
        'ONE_PER_SECOND'        => array('1',             '1/s'),
        'CYCLE_PER_SECOND'      => array('1',             'cps'),
        'DEGREE_PER_HOUR'       => array(array('' => '1', '/' => '1296000'), '°/h'),
        'DEGREE_PER_MINUTE'     => array(array('' => '1', '/' => '21600'),   '°/m'),
        'DEGREE_PER_SECOND'     => array(array('' => '1', '/' => '360'),     '°/s'),
        'GIGAHERTZ'             => array('1000000000',    'GHz'),
        'HERTZ'                 => array('1',             'Hz'),
        'KILOHERTZ'             => array('1000',          'kHz'),
        'MEGAHERTZ'             => array('1000000',       'MHz'),
        'MILLIHERTZ'            => array('0.001',         'mHz'),
        'RADIAN_PER_HOUR'       => array(array('' => '1', '/' => '22619.467'), 'rad/h'),
        'RADIAN_PER_MINUTE'     => array(array('' => '1', '/' => '376.99112'), 'rad/m'),
        'RADIAN_PER_SECOND'     => array(array('' => '1', '/' => '6.2831853'), 'rad/s'),
        'REVOLUTION_PER_HOUR'   => array(array('' => '1', '/' => '3600'), 'rph'),
        'REVOLUTION_PER_MINUTE' => array(array('' => '1', '/' => '60'),   'rpm'),
        'REVOLUTION_PER_SECOND' => array('1',             'rps'),
        'RPM'                   => array(array('' => '1', '/' => '60'), 'rpm'),
        'TERRAHERTZ'            => array('1000000000000', 'THz'),
        'STANDARD'              =>'HERTZ'
    );
}
PKpG[J��KKMeasure/Lightness.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Lightness.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling temperature conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Lightness
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Lightness extends Zend_Measure_Abstract
{
    const STANDARD = 'CANDELA_PER_SQUARE_METER';

    const APOSTILB                          = 'APOSTILB';
    const BLONDEL                           = 'BLONDEL';
    const CANDELA_PER_SQUARE_CENTIMETER     = 'CANDELA_PER_SQUARE_CENTIMETER';
    const CANDELA_PER_SQUARE_FOOT           = 'CANDELA_PER_SQUARE_FOOT';
    const CANDELA_PER_SQUARE_INCH           = 'CANDELA_PER_SQUARE_INCH';
    const CANDELA_PER_SQUARE_METER          = 'CANDELA_PER_SQUARE_METER';
    const FOOTLAMBERT                       = 'FOOTLAMBERT';
    const KILOCANDELA_PER_SQUARE_CENTIMETER = 'KILOCANDELA_PER_SQUARE_CENTIMETER';
    const KILOCANDELA_PER_SQUARE_FOOT       = 'KILOCANDELA_PER_SQUARE_FOOT';
    const KILOCANDELA_PER_SQUARE_INCH       = 'KILOCANDELA_PER_SQUARE_INCH';
    const KILOCANDELA_PER_SQUARE_METER      = 'KILOCANDELA_PER_SQUARE_METER';
    const LAMBERT                           = 'LAMBERT';
    const MILLILAMBERT                      = 'MILLILAMBERT';
    const NIT                               = 'NIT';
    const STILB                             = 'STILB';

    /**
     * Calculations for all lightness units
     *
     * @var array
     */
    protected $_units = array(
        'APOSTILB'                      => array('0.31830989',   'asb'),
        'BLONDEL'                       => array('0.31830989',   'blondel'),
        'CANDELA_PER_SQUARE_CENTIMETER' => array('10000',        'cd/cm²'),
        'CANDELA_PER_SQUARE_FOOT'       => array('10.76391',     'cd/ft²'),
        'CANDELA_PER_SQUARE_INCH'       => array('1550.00304',   'cd/in²'),
        'CANDELA_PER_SQUARE_METER'      => array('1',            'cd/m²'),
        'FOOTLAMBERT'                   => array('3.4262591',    'ftL'),
        'KILOCANDELA_PER_SQUARE_CENTIMETER' => array('10000000', 'kcd/cm²'),
        'KILOCANDELA_PER_SQUARE_FOOT'   => array('10763.91',     'kcd/ft²'),
        'KILOCANDELA_PER_SQUARE_INCH'   => array('1550003.04',   'kcd/in²'),
        'KILOCANDELA_PER_SQUARE_METER'  => array('1000',         'kcd/m²'),
        'LAMBERT'                       => array('3183.0989',    'L'),
        'MILLILAMBERT'                  => array('3.1830989',    'mL'),
        'NIT'                           => array('1',            'nt'),
        'STILB'                         => array('10000',        'sb'),
        'STANDARD'                      => 'CANDELA_PER_SQUARE_METER'
    );
}
PKpG[ J��Measure/Angle.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Angle.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling angle conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Angle
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Angle extends Zend_Measure_Abstract
{
    const STANDARD = 'RADIAN';

    const RADIAN      = 'RADIAN';
    const MIL         = 'MIL';
    const GRAD        = 'GRAD';
    const DEGREE      = 'DEGREE';
    const MINUTE      = 'MINUTE';
    const SECOND      = 'SECOND';
    const POINT       = 'POINT';
    const CIRCLE_16   = 'CIRCLE_16';
    const CIRCLE_10   = 'CIRCLE_10';
    const CIRCLE_8    = 'CIRCLE_8';
    const CIRCLE_6    = 'CIRCLE_6';
    const CIRCLE_4    = 'CIRCLE_4';
    const CIRCLE_2    = 'CIRCLE_2';
    const FULL_CIRCLE = 'FULL_CIRCLE';

    /**
     * Calculations for all angle units
     *
     * @var array
     */
    protected $_units = array(
        'RADIAN'      => array('1','rad'),
        'MIL'         => array(array('' => M_PI,'/' => '3200'),   'mil'),
        'GRAD'        => array(array('' => M_PI,'/' => '200'),    'gr'),
        'DEGREE'      => array(array('' => M_PI,'/' => '180'),    '°'),
        'MINUTE'      => array(array('' => M_PI,'/' => '10800'),  "'"),
        'SECOND'      => array(array('' => M_PI,'/' => '648000'), '"'),
        'POINT'       => array(array('' => M_PI,'/' => '16'),     'pt'),
        'CIRCLE_16'   => array(array('' => M_PI,'/' => '8'),      'per 16 circle'),
        'CIRCLE_10'   => array(array('' => M_PI,'/' => '5'),      'per 10 circle'),
        'CIRCLE_8'    => array(array('' => M_PI,'/' => '4'),      'per 8 circle'),
        'CIRCLE_6'    => array(array('' => M_PI,'/' => '3'),      'per 6 circle'),
        'CIRCLE_4'    => array(array('' => M_PI,'/' => '2'),      'per 4 circle'),
        'CIRCLE_2'    => array(M_PI,                            'per 2 circle'),
        'FULL_CIRCLE' => array(array('' => M_PI,'*' => '2'),      'cir'),
        'STANDARD'    => 'RADIAN'
    );
}
PKpG[�aSt;t;Measure/Pressure.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Pressure.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling pressure conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Pressure
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Pressure extends Zend_Measure_Abstract
{
    const STANDARD = 'NEWTON_PER_SQUARE_METER';

    const ATMOSPHERE                           = 'ATMOSPHERE';
    const ATMOSPHERE_TECHNICAL                 = 'ATMOSPHERE_TECHNICAL';
    const ATTOBAR                              = 'ATTOBAR';
    const ATTOPASCAL                           = 'ATTOPASCAL';
    const BAR                                  = 'BAR';
    const BARAD                                = 'BARAD';
    const BARYE                                = 'BARYE';
    const CENTIBAR                             = 'CENTIBAR';
    const CENTIHG                              = 'CENTIHG';
    const CENTIMETER_MERCURY_0C                = 'CENTIMETER_MERCURY_0C';
    const CENTIMETER_WATER_4C                  = 'CENTIMETER_WATER_4C';
    const CENTIPASCAL                          = 'CENTIPASCAL';
    const CENTITORR                            = 'CENTITORR';
    const DECIBAR                              = 'DECIBAR';
    const DECIPASCAL                           = 'DECIPASCAL';
    const DECITORR                             = 'DECITORR';
    const DEKABAR                              = 'DEKABAR';
    const DEKAPASCAL                           = 'DEKAPASCAL';
    const DYNE_PER_SQUARE_CENTIMETER           = 'DYNE_PER_SQUARE_CENTIMETER';
    const EXABAR                               = 'EXABAR';
    const EXAPASCAL                            = 'EXAPASCAL';
    const FEMTOBAR                             = 'FEMTOBAR';
    const FEMTOPASCAL                          = 'FEMTOPASCAL';
    const FOOT_AIR_0C                          = 'FOOT_AIR_0C';
    const FOOT_AIR_15C                         = 'FOOT_AIR_15C';
    const FOOT_HEAD                            = 'FOOT_HEAD';
    const FOOT_MERCURY_0C                      = 'FOOT_MERCURY_0C';
    const FOOT_WATER_4C                        = 'FOOT_WATER_4C';
    const GIGABAR                              = 'GIGABAR';
    const GIGAPASCAL                           = 'GIGAPASCAL';
    const GRAM_FORCE_SQUARE_CENTIMETER         = 'GRAM_FORCE_SQUARE_CENTIMETER';
    const HECTOBAR                             = 'HECTOBAR';
    const HECTOPASCAL                          = 'HECTOPASCAL';
    const INCH_AIR_0C                          = 'INCH_AIR_0C';
    const INCH_AIR_15C                         = 'INCH_AIR_15C';
    const INCH_MERCURY_0C                      = 'INCH_MERCURY_0C';
    const INCH_WATER_4C                        = 'INCH_WATER_4C';
    const KILOBAR                              = 'KILOBAR';
    const KILOGRAM_FORCE_PER_SQUARE_CENTIMETER = 'KILOGRAM_FORCE_PER_SQUARE_CENTIMETER';
    const KILOGRAM_FORCE_PER_SQUARE_METER      = 'KILOGRAM_FORCE_PER_SQUARE_METER';
    const KILOGRAM_FORCE_PER_SQUARE_MILLIMETER = 'KILOGRAM_FORCE_PER_SQUARE_MILLIMETER';
    const KILONEWTON_PER_SQUARE_METER          = 'KILONEWTON_PER_SQUARE_METER';
    const KILOPASCAL                           = 'KILOPASCAL';
    const KILOPOND_PER_SQUARE_CENTIMETER       = 'KILOPOND_PER_SQUARE_CENTIMETER';
    const KILOPOND_PER_SQUARE_METER            = 'KILOPOND_PER_SQUARE_METER';
    const KILOPOND_PER_SQUARE_MILLIMETER       = 'KILOPOND_PER_SQUARE_MILLIMETER';
    const KIP_PER_SQUARE_FOOT                  = 'KIP_PER_SQUARE_FOOT';
    const KIP_PER_SQUARE_INCH                  = 'KIP_PER_SQUARE_INCH';
    const MEGABAR                              = 'MEGABAR';
    const MEGANEWTON_PER_SQUARE_METER          = 'MEGANEWTON_PER_SQUARE_METER';
    const MEGAPASCAL                           = 'MEGAPASCAL';
    const METER_AIR_0C                         = 'METER_AIR_0C';
    const METER_AIR_15C                        = 'METER_AIR_15C';
    const METER_HEAD                           = 'METER_HEAD';
    const MICROBAR                             = 'MICROBAR';
    const MICROMETER_MERCURY_0C                = 'MICROMETER_MERCURY_0C';
    const MICROMETER_WATER_4C                  = 'MICROMETER_WATER_4C';
    const MICRON_MERCURY_0C                    = 'MICRON_MERCURY_0C';
    const MICROPASCAL                          = 'MICROPASCAL';
    const MILLIBAR                             = 'MILLIBAR';
    const MILLIHG                              = 'MILLIHG';
    const MILLIMETER_MERCURY_0C                = 'MILLIMETER_MERCURY_0C';
    const MILLIMETER_WATER_4C                  = 'MILLIMETER_WATER_4C';
    const MILLIPASCAL                          = 'MILLIPASCAL';
    const MILLITORR                            = 'MILLITORR';
    const NANOBAR                              = 'NANOBAR';
    const NANOPASCAL                           = 'NANOPASCAL';
    const NEWTON_PER_SQUARE_METER              = 'NEWTON_PER_SQUARE_METER';
    const NEWTON_PER_SQUARE_MILLIMETER         = 'NEWTON_PER_SQUARE_MILLIMETER';
    const OUNCE_PER_SQUARE_INCH                = 'OUNCE_PER_SQUARE_INCH';
    const PASCAL                               = 'PASCAL';
    const PETABAR                              = 'PETABAR';
    const PETAPASCAL                           = 'PETAPASCAL';
    const PICOBAR                              = 'PICOBAR';
    const PICOPASCAL                           = 'PICOPASCAL';
    const PIEZE                                = 'PIEZE';
    const POUND_PER_SQUARE_FOOT                = 'POUND_PER_SQUARE_FOOT';
    const POUND_PER_SQUARE_INCH                = 'POUND_PER_SQUARE_INCH';
    const POUNDAL_PER_SQUARE_FOOT              = 'POUNDAL_PER_SQUARE_FOOT';
    const STHENE_PER_SQUARE_METER              = 'STHENE_PER_SQUARE_METER';
    const TECHNICAL_ATMOSPHERE                 = 'TECHNICAL_ATMOSPHERE';
    const TERABAR                              = 'TERABAR';
    const TERAPASCAL                           = 'TERAPASCAL';
    const TON_PER_SQUARE_FOOT                  = 'TON_PER_SQUARE_FOOT';
    const TON_PER_SQUARE_FOOT_SHORT            = 'TON_PER_SQUARE_FOOT_SHORT';
    const TON_PER_SQUARE_INCH                  = 'TON_PER_SQUARE_INCH';
    const TON_PER_SQUARE_INCH_SHORT            = 'TON_PER_SQUARE_INCH_SHORT';
    const TON_PER_SQUARE_METER                 = 'TON_PER_SQUARE_METER';
    const TORR                                 = 'TORR';
    const WATER_COLUMN_CENTIMETER              = 'WATER_COLUMN_CENTIMETER';
    const WATER_COLUMN_INCH                    = 'WATER_COLUMN_INCH';
    const WATER_COLUMN_MILLIMETER              = 'WATER_COLUMN_MILLIMETER';
    const YOCTOBAR                             = 'YOCTOBAR';
    const YOCTOPASCAL                          = 'YOCTOPASCAL';
    const YOTTABAR                             = 'YOTTABAR';
    const YOTTAPASCAL                          = 'YOTTAPASCAL';
    const ZEPTOBAR                             = 'ZEPTOBAR';
    const ZEPTOPASCAL                          = 'ZEPTOPASCAL';
    const ZETTABAR                             = 'ZETTABAR';
    const ZETTAPASCAL                          = 'ZETTAPASCAL';

    /**
     * Calculations for all pressure units
     *
     * @var array
     */
    protected $_units = array(
        'ATMOSPHERE'            => array('101325.01', 'atm'),
        'ATMOSPHERE_TECHNICAL'  => array('98066.5',   'atm'),
        'ATTOBAR'               => array('1.0e-13',   'ab'),
        'ATTOPASCAL'            => array('1.0e-18',   'aPa'),
        'BAR'                   => array('100000',    'b'),
        'BARAD'                 => array('0.1',       'barad'),
        'BARYE'                 => array('0.1',       'ba'),
        'CENTIBAR'              => array('1000',      'cb'),
        'CENTIHG'               => array('1333.2239', 'cHg'),
        'CENTIMETER_MERCURY_0C' => array('1333.2239', 'cm mercury (0°C)'),
        'CENTIMETER_WATER_4C'   => array('98.0665',   'cm water (4°C)'),
        'CENTIPASCAL'           => array('0.01',      'cPa'),
        'CENTITORR'             => array('1.3332237', 'cTorr'),
        'DECIBAR'               => array('10000',     'db'),
        'DECIPASCAL'            => array('0.1',       'dPa'),
        'DECITORR'              => array('13.332237', 'dTorr'),
        'DEKABAR'               => array('1000000',   'dab'),
        'DEKAPASCAL'            => array('10',        'daPa'),
        'DYNE_PER_SQUARE_CENTIMETER' => array('0.1',  'dyn/cm²'),
        'EXABAR'                => array('1.0e+23',   'Eb'),
        'EXAPASCAL'             => array('1.0e+18',   'EPa'),
        'FEMTOBAR'              => array('1.0e-10',   'fb'),
        'FEMTOPASCAL'           => array('1.0e-15',   'fPa'),
        'FOOT_AIR_0C'           => array('3.8640888', 'ft air (0°C)'),
        'FOOT_AIR_15C'          => array('3.6622931', 'ft air (15°C)'),
        'FOOT_HEAD'             => array('2989.0669', 'ft head'),
        'FOOT_MERCURY_0C'       => array('40636.664', 'ft mercury (0°C)'),
        'FOOT_WATER_4C'         => array('2989.0669', 'ft water (4°C)'),
        'GIGABAR'               => array('1.0e+14',   'Gb'),
        'GIGAPASCAL'            => array('1.0e+9',    'GPa'),
        'GRAM_FORCE_SQUARE_CENTIMETER' => array('98.0665', 'gf'),
        'HECTOBAR'              => array('1.0e+7',    'hb'),
        'HECTOPASCAL'           => array('100',       'hPa'),
        'INCH_AIR_0C'           => array(array('' => '3.8640888', '/' => '12'), 'in air (0°C)'),
        'INCH_AIR_15C'          => array(array('' => '3.6622931', '/' => '12'), 'in air (15°C)'),
        'INCH_MERCURY_0C'       => array(array('' => '40636.664', '/' => '12'), 'in mercury (0°C)'),
        'INCH_WATER_4C'         => array(array('' => '2989.0669', '/' => '12'), 'in water (4°C)'),
        'KILOBAR'               => array('1.0e+8',    'kb'),
        'KILOGRAM_FORCE_PER_SQUARE_CENTIMETER' => array('98066.5', 'kgf/cm²'),
        'KILOGRAM_FORCE_PER_SQUARE_METER'      => array('9.80665', 'kgf/m²'),
        'KILOGRAM_FORCE_PER_SQUARE_MILLIMETER' => array('9806650', 'kgf/mm²'),
        'KILONEWTON_PER_SQUARE_METER'          => array('1000',    'kN/m²'),
        'KILOPASCAL'            => array('1000',      'kPa'),
        'KILOPOND_PER_SQUARE_CENTIMETER' => array('98066.5', 'kp/cm²'),
        'KILOPOND_PER_SQUARE_METER'      => array('9.80665', 'kp/m²'),
        'KILOPOND_PER_SQUARE_MILLIMETER' => array('9806650', 'kp/mm²'),
        'KIP_PER_SQUARE_FOOT'   => array(array('' => '430.92233', '/' => '0.009'),   'kip/ft²'),
        'KIP_PER_SQUARE_INCH'   => array(array('' => '62052.81552', '/' => '0.009'), 'kip/in²'),
        'MEGABAR'               => array('1.0e+11',    'Mb'),
        'MEGANEWTON_PER_SQUARE_METER' => array('1000000', 'MN/m²'),
        'MEGAPASCAL'            => array('1000000',    'MPa'),
        'METER_AIR_0C'          => array('12.677457',  'm air (0°C)'),
        'METER_AIR_15C'         => array('12.015397',  'm air (15°C)'),
        'METER_HEAD'            => array('9804.139432', 'm head'),
        'MICROBAR'              => array('0.1',        'µb'),
        'MICROMETER_MERCURY_0C' => array('0.13332239', 'µm mercury (0°C)'),
        'MICROMETER_WATER_4C'   => array('0.00980665', 'µm water (4°C)'),
        'MICRON_MERCURY_0C'     => array('0.13332239', 'µ mercury (0°C)'),
        'MICROPASCAL'           => array('0.000001',   'µPa'),
        'MILLIBAR'              => array('100',        'mb'),
        'MILLIHG'               => array('133.32239',  'mHg'),
        'MILLIMETER_MERCURY_0C' => array('133.32239',  'mm mercury (0°C)'),
        'MILLIMETER_WATER_4C'   => array('9.80665',    'mm water (0°C)'),
        'MILLIPASCAL'           => array('0.001',      'mPa'),
        'MILLITORR'             => array('0.13332237', 'mTorr'),
        'NANOBAR'               => array('0.0001',     'nb'),
        'NANOPASCAL'            => array('1.0e-9',     'nPa'),
        'NEWTON_PER_SQUARE_METER'      => array('1',   'N/m²'),
        'NEWTON_PER_SQUARE_MILLIMETER' => array('1000000',   'N/mm²'),
        'OUNCE_PER_SQUARE_INCH'        => array('430.92233', 'oz/in²'),
        'PASCAL'                => array('1',          'Pa'),
        'PETABAR'               => array('1.0e+20',    'Pb'),
        'PETAPASCAL'            => array('1.0e+15',    'PPa'),
        'PICOBAR'               => array('0.0000001',  'pb'),
        'PICOPASCAL'            => array('1.0e-12',    'pPa'),
        'PIEZE'                 => array('1000',       'pz'),
        'POUND_PER_SQUARE_FOOT' => array(array('' => '430.92233', '/' => '9'), 'lb/ft²'),
        'POUND_PER_SQUARE_INCH' => array('6894.75728', 'lb/in²'),
        'POUNDAL_PER_SQUARE_FOOT' => array('1.4881639', 'pdl/ft²'),
        'STHENE_PER_SQUARE_METER' => array('1000',     'sn/m²'),
        'TECHNICAL_ATMOSPHERE'  => array('98066.5',    'at'),
        'TERABAR'               => array('1.0e+17',    'Tb'),
        'TERAPASCAL'            => array('1.0e+12',    'TPa'),
        'TON_PER_SQUARE_FOOT'   => array(array('' => '120658.2524', '/' => '1.125'),      't/ft²'),
        'TON_PER_SQUARE_FOOT_SHORT' => array(array('' => '430.92233', '/' => '0.0045'),   't/ft²'),
        'TON_PER_SQUARE_INCH'   => array(array('' => '17374788.3456', '/' => '1.125'),    't/in²'),
        'TON_PER_SQUARE_INCH_SHORT' => array(array('' => '62052.81552', '/' => '0.0045'), 't/in²'),
        'TON_PER_SQUARE_METER'  => array('9806.65',    't/m²'),
        'TORR'                  => array('133.32237',  'Torr'),
        'WATER_COLUMN_CENTIMETER' => array('98.0665',  'WC (cm)'),
        'WATER_COLUMN_INCH'       => array(array('' => '2989.0669', '/' => '12'), 'WC (in)'),
        'WATER_COLUMN_MILLIMETER' => array('9.80665',  'WC (mm)'),
        'YOCTOBAR'              => array('1.0e-19',    'yb'),
        'YOCTOPASCAL'           => array('1.0e-24',    'yPa'),
        'YOTTABAR'              => array('1.0e+29',    'Yb'),
        'YOTTAPASCAL'           => array('1.0e+24',    'YPa'),
        'ZEPTOBAR'              => array('1.0e-16',    'zb'),
        'ZEPTOPASCAL'           => array('1.0e-21',    'zPa'),
        'ZETTABAR'              => array('1.0e+26',    'Zb'),
        'ZETTAPASCAL'           => array('1.0e+21',    'ZPa'),
        'STANDARD'              => 'NEWTON_PER_SQUARE_METER'
    );
}
PKpG[�ի��%�%Measure/Cooking/Volume.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Volume.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling cooking volume conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Cooking_Volume
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Cooking_Volume extends Zend_Measure_Abstract
{
    const STANDARD = 'CUBIC_METER';

    const CAN_2POINT5       = 'CAN_2POINT5';
    const CAN_10            = 'CAN_10';
    const BARREL_WINE       = 'BARREL_WINE';
    const BARREL            = 'BARREL';
    const BARREL_US_DRY     = 'BARREL_US_DRY';
    const BARREL_US_FEDERAL = 'BARREL_US_FEDERAL';
    const BARREL_US         = 'BARREL_US';
    const BUCKET            = 'BUCKET';
    const BUCKET_US         = 'BUCKET_US';
    const BUSHEL            = 'BUSHEL';
    const BUSHEL_US         = 'BUSHEL_US';
    const CENTILITER        = 'CENTILITER';
    const COFFEE_SPOON      = 'COFFEE_SPOON';
    const CUBIC_CENTIMETER  = 'CUBIC_CENTIMETER';
    const CUBIC_DECIMETER   = 'CUBIC_DECIMETER';
    const CUBIC_FOOT        = 'CUBIC_FOOT';
    const CUBIC_INCH        = 'CUBIC_INCH';
    const CUBIC_METER       = 'CUBIC_METER';
    const CUBIC_MICROMETER  = 'CUBIC_MICROMETER';
    const CUBIC_MILLIMETER  = 'CUBIC_MILLIMETER';
    const CUP_CANADA        = 'CUP_CANADA';
    const CUP               = 'CUP';
    const CUP_US            = 'CUP_US';
    const DASH              = 'DASH';
    const DECILITER         = 'DECILITER';
    const DEKALITER         = 'DEKALITER';
    const DEMI              = 'DEMI';
    const DRAM              = 'DRAM';
    const DROP              = 'DROP';
    const FIFTH             = 'FIFTH';
    const GALLON            = 'GALLON';
    const GALLON_US_DRY     = 'GALLON_US_DRY';
    const GALLON_US         = 'GALLON_US';
    const GILL              = 'GILL';
    const GILL_US           = 'GILL_US';
    const HECTOLITER        = 'HECTOLITER';
    const HOGSHEAD          = 'HOGSHEAD';
    const HOGSHEAD_US       = 'HOGSHEAD_US';
    const JIGGER            = 'JIGGER';
    const KILOLITER         = 'KILOLITER';
    const LITER             = 'LITER';
    const MEASURE           = 'MEASURE';
    const MEGALITER         = 'MEGALITER';
    const MICROLITER        = 'MICROLITER';
    const MILLILITER        = 'MILLILITER';
    const MINIM             = 'MINIM';
    const MINIM_US          = 'MINIM_US';
    const OUNCE             = 'OUNCE';
    const OUNCE_US          = 'OUNCE_US';
    const PECK              = 'PECK';
    const PECK_US           = 'PECK_US';
    const PINCH             = 'PINCH';
    const PINT              = 'PINT';
    const PINT_US_DRY       = 'PINT_US_DRY';
    const PINT_US           = 'PINT_US';
    const PIPE              = 'PIPE';
    const PIPE_US           = 'PIPE_US';
    const PONY              = 'PONY';
    const QUART_GERMANY     = 'QUART_GERMANY';
    const QUART_ANCIENT     = 'QUART_ANCIENT';
    const QUART             = 'QUART';
    const QUART_US_DRY      = 'QUART_US_DRY';
    const QUART_US          = 'QUART_US';
    const SHOT              = 'SHOT';
    const TABLESPOON        = 'TABLESPOON';
    const TABLESPOON_UK     = 'TABLESPOON_UK';
    const TABLESPOON_US     = 'TABLESPOON_US';
    const TEASPOON          = 'TEASPOON';
    const TEASPOON_UK       = 'TEASPOON_UK';
    const TEASPOON_US       = 'TEASPOON_US';

    /**
     * Calculations for all cooking volume units
     *
     * @var array
     */
    protected $_units = array(
        'CAN_2POINT5'       => array(array('' => '0.0037854118', '/' => '16', '' => '3.5'), '2.5th can'),
        'CAN_10'            => array(array('' => '0.0037854118', '*' => '0.75'),          '10th can'),
        'BARREL_WINE'       => array('0.143201835',   'bbl'),
        'BARREL'            => array('0.16365924',    'bbl'),
        'BARREL_US_DRY'     => array(array('' => '26.7098656608', '/' => '231'), 'bbl'),
        'BARREL_US_FEDERAL' => array('0.1173477658',  'bbl'),
        'BARREL_US'         => array('0.1192404717',  'bbl'),
        'BUCKET'            => array('0.01818436',    'bucket'),
        'BUCKET_US'         => array('0.018927059',   'bucket'),
        'BUSHEL'            => array('0.03636872',    'bu'),
        'BUSHEL_US'         => array('0.03523907',    'bu'),
        'CENTILITER'        => array('0.00001',       'cl'),
        'COFFEE_SPOON'      => array(array('' => '0.0037854118', '/' => '1536'), 'coffee spoon'),
        'CUBIC_CENTIMETER'  => array('0.000001',      'cm³'),
        'CUBIC_DECIMETER'   => array('0.001',         'dm³'),
        'CUBIC_FOOT'        => array(array('' => '6.54119159', '/' => '231'),   'ft³'),
        'CUBIC_INCH'        => array(array('' => '0.0037854118', '/' => '231'), 'in³'),
        'CUBIC_METER'       => array('1',             'm³'),
        'CUBIC_MICROMETER'  => array('1.0e-18',       'µm³'),
        'CUBIC_MILLIMETER'  => array('1.0e-9',        'mm³'),
        'CUP_CANADA'        => array('0.0002273045',  'c'),
        'CUP'               => array('0.00025',       'c'),
        'CUP_US'            => array(array('' => '0.0037854118', '/' => '16'),   'c'),
        'DASH'              => array(array('' => '0.0037854118', '/' => '6144'), 'ds'),
        'DECILITER'         => array('0.0001',        'dl'),
        'DEKALITER'         => array('0.001',         'dal'),
        'DEMI'              => array('0.00025',       'demi'),
        'DRAM'              => array(array('' => '0.0037854118', '/' => '1024'),  'dr'),
        'DROP'              => array(array('' => '0.0037854118', '/' => '73728'), 'ggt'),
        'FIFTH'             => array('0.00075708236', 'fifth'),
        'GALLON'            => array('0.00454609',    'gal'),
        'GALLON_US_DRY'     => array('0.0044048838',  'gal'),
        'GALLON_US'         => array('0.0037854118',  'gal'),
        'GILL'              => array(array('' => '0.00454609', '/' => '32'),   'gi'),
        'GILL_US'           => array(array('' => '0.0037854118', '/' => '32'), 'gi'),
        'HECTOLITER'        => array('0.1',           'hl'),
        'HOGSHEAD'          => array('0.28640367',    'hhd'),
        'HOGSHEAD_US'       => array('0.2384809434',  'hhd'),
        'JIGGER'            => array(array('' => '0.0037854118', '/' => '128', '*' => '1.5'), 'jigger'),
        'KILOLITER'         => array('1',             'kl'),
        'LITER'             => array('0.001',         'l'),
        'MEASURE'           => array('0.0077',        'measure'),
        'MEGALITER'         => array('1000',          'Ml'),
        'MICROLITER'        => array('1.0e-9',        'µl'),
        'MILLILITER'        => array('0.000001',      'ml'),
        'MINIM'             => array(array('' => '0.00454609', '/' => '76800'),  'min'),
        'MINIM_US'          => array(array('' => '0.0037854118','/' => '61440'), 'min'),
        'OUNCE'             => array(array('' => '0.00454609', '/' => '160'),    'oz'),
        'OUNCE_US'          => array(array('' => '0.0037854118', '/' => '128'),  'oz'),
        'PECK'              => array('0.00909218',    'pk'),
        'PECK_US'           => array('0.0088097676',  'pk'),
        'PINCH'             => array(array('' => '0.0037854118', '/' => '12288'), 'pinch'),
        'PINT'              => array(array('' => '0.00454609', '/' => '8'),       'pt'),
        'PINT_US_DRY'       => array(array('' => '0.0044048838', '/' => '8'),     'pt'),
        'PINT_US'           => array(array('' => '0.0037854118', '/' => '8'),     'pt'),
        'PIPE'              => array('0.49097772',    'pipe'),
        'PIPE_US'           => array('0.4769618868',  'pipe'),
        'PONY'              => array(array('' => '0.0037854118', '/' => '128'), 'pony'),
        'QUART_GERMANY'     => array('0.00114504',    'qt'),
        'QUART_ANCIENT'     => array('0.00108',       'qt'),
        'QUART'             => array(array('' => '0.00454609', '/' => '4'),     'qt'),
        'QUART_US_DRY'      => array(array('' => '0.0044048838', '/' => '4'),   'qt'),
        'QUART_US'          => array(array('' => '0.0037854118', '/' => '4'),   'qt'),
        'SHOT'              => array(array('' => '0.0037854118', '/' => '128'), 'shot'),
        'TABLESPOON'        => array('0.000015',      'tbsp'),
        'TABLESPOON_UK'     => array(array('' => '0.00454609', '/' => '320'),   'tbsp'),
        'TABLESPOON_US'     => array(array('' => '0.0037854118', '/' => '256'), 'tbsp'),
        'TEASPOON'          => array('0.000005',      'tsp'),
        'TEASPOON_UK'       => array(array('' => '0.00454609', '/' => '1280'),  'tsp'),
        'TEASPOON_US'       => array(array('' => '0.0037854118', '/' => '768'), 'tsp'),
        'STANDARD'          => 'CUBIC_METER'
    );
}
PKpG[��C�Measure/Cooking/Weight.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Weight.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling cooking weight conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Cooking_Weight
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Cooking_Weight extends Zend_Measure_Abstract
{
    const STANDARD = 'GRAM';

    const HALF_STICK    = 'HALF_STICK';
    const STICK         = 'STICK';
    const CUP           = 'CUP';
    const GRAM          = 'GRAM';
    const OUNCE         = 'OUNCE';
    const POUND         = 'POUND';
    const TEASPOON      = 'TEASPOON';
    const TEASPOON_US   = 'TEASPOON_US';
    const TABLESPOON    = 'TABLESPOON';
    const TABLESPOON_US = 'TABLESPOON_US';

    /**
     * Calculations for all cooking weight units
     *
     * @var array
     */
    protected $_units = array(
        'HALF_STICK'    => array(array('' => '453.59237', '/' => '8'),                    'half stk'),
        'STICK'         => array(array('' => '453.59237', '/' => '4'),                    'stk'),
        'CUP'           => array(array('' => '453.59237', '/' => '2'),                    'c'),
        'GRAM'          => array('1',                                                   'g'),
        'OUNCE'         => array(array('' => '453.59237', '/' => '16'),                   'oz'),
        'POUND'         => array('453.59237',                                           'lb'),
        'TEASPOON'      => array(array('' => '1.2503332', '' => '453.59237', '/' => '128'), 'tsp'),
        'TEASPOON_US'   => array(array('' => '453.59237', '/' => '96'),                   'tsp'),
        'TABLESPOON'    => array(array('' => '1.2503332', '' => '453.59237', '/' => '32'),  'tbsp'),
        'TABLESPOON_US' => array(array('' => '453.59237', '/' => '32'),                   'tbsp'),
        'STANDARD'      => 'GRAM'
    );
}
PKpG[,p&�+�+Measure/Volume.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Volume.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling acceleration conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Volume
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Volume extends Zend_Measure_Abstract
{
    const STANDARD = 'CUBIC_METER';

    const ACRE_FOOT           = 'ACRE_FOOT';
    const ACRE_FOOT_SURVEY    = 'ACRE_FOOT_SURVEY';
    const ACRE_INCH           = 'ACRE_INCH';
    const BARREL_WINE         = 'BARREL_WINE';
    const BARREL              = 'BARREL';
    const BARREL_US_DRY       = 'BARREL_US_DRY';
    const BARREL_US_FEDERAL   = 'BARREL_US_FEDERAL';
    const BARREL_US           = 'BARREL_US';
    const BARREL_US_PETROLEUM = 'BARREL_US_PETROLEUM';
    const BOARD_FOOT          = 'BOARD_FOOT';
    const BUCKET              = 'BUCKET';
    const BUCKET_US           = 'BUCKET_US';
    const BUSHEL              = 'BUSHEL';
    const BUSHEL_US           = 'BUSHEL_US';
    const CENTILTER           = 'CENTILITER';
    const CORD                = 'CORD';
    const CORD_FOOT           = 'CORD_FOOT';
    const CUBIC_CENTIMETER    = 'CUBIC_CENTIMETER';
    const CUBIC_CUBIT         = 'CUBIC_CUBIT';
    const CUBIC_DECIMETER     = 'CUBIC_DECIMETER';
    const CUBIC_DEKAMETER     = 'CUBIC_DEKAMETER';
    const CUBIC_FOOT          = 'CUBIC_FOOT';
    const CUBIC_INCH          = 'CUBIC_INCH';
    const CUBIC_KILOMETER     = 'CUBIC_KILOMETER';
    const CUBIC_METER         = 'CUBIC_METER';
    const CUBIC_MILE          = 'CUBIC_MILE';
    const CUBIC_MICROMETER    = 'CUBIC_MICROMETER';
    const CUBIC_MILLIMETER    = 'CUBIC_MILLIMETER';
    const CUBIC_YARD          = 'CUBIC_YARD';
    const CUP_CANADA          = 'CUP_CANADA';
    const CUP                 = 'CUP';
    const CUP_US              = 'CUP_US';
    const DECILITER           = 'DECILITER';
    const DEKALITER           = 'DEKALITER';
    const DRAM                = 'DRAM';
    const DRUM_US             = 'DRUM_US';
    const DRUM                = 'DRUM';
    const FIFTH               = 'FIFTH';
    const GALLON              = 'GALLON';
    const GALLON_US_DRY       = 'GALLON_US_DRY';
    const GALLON_US           = 'GALLON_US';
    const GILL                = 'GILL';
    const GILL_US             = 'GILL_US';
    const HECTARE_METER       = 'HECTARE_METER';
    const HECTOLITER          = 'HECTOLITER';
    const HOGSHEAD            = 'HOGSHEAD';
    const HOGSHEAD_US         = 'HOGSHEAD_US';
    const JIGGER              = 'JIGGER';
    const KILOLITER           = 'KILOLITER';
    const LITER               = 'LITER';
    const MEASURE             = 'MEASURE';
    const MEGALITER           = 'MEGALITER';
    const MICROLITER          = 'MICROLITER';
    const MILLILITER          = 'MILLILITER';
    const MINIM               = 'MINIM';
    const MINIM_US            = 'MINIM_US';
    const OUNCE               = 'OUNCE';
    const OUNCE_US            = 'OUNCE_US';
    const PECK                = 'PECK';
    const PECK_US             = 'PECK_US';
    const PINT                = 'PINT';
    const PINT_US_DRY         = 'PINT_US_DRY';
    const PINT_US             = 'PINT_US';
    const PIPE                = 'PIPE';
    const PIPE_US             = 'PIPE_US';
    const PONY                = 'PONY';
    const QUART_GERMANY       = 'QUART_GERMANY';
    const QUART_ANCIENT       = 'QUART_ANCIENT';
    const QUART               = 'QUART';
    const QUART_US_DRY        = 'QUART_US_DRY';
    const QUART_US            = 'QUART_US';
    const QUART_UK            = 'QUART_UK';
    const SHOT                = 'SHOT';
    const STERE               = 'STERE';
    const TABLESPOON          = 'TABLESPOON';
    const TABLESPOON_UK       = 'TABLESPOON_UK';
    const TABLESPOON_US       = 'TABLESPOON_US';
    const TEASPOON            = 'TEASPOON';
    const TEASPOON_UK         = 'TEASPOON_UK';
    const TEASPOON_US         = 'TEASPOON_US';
    const YARD                = 'YARD';

    /**
     * Calculations for all volume units
     *
     * @var array
     */
    protected $_units = array(
        'ACRE_FOOT'           => array('1233.48185532', 'ac ft'),
        'ACRE_FOOT_SURVEY'    => array('1233.489',      'ac ft'),
        'ACRE_INCH'           => array('102.79015461',  'ac in'),
        'BARREL_WINE'         => array('0.143201835',   'bbl'),
        'BARREL'              => array('0.16365924',    'bbl'),
        'BARREL_US_DRY'       => array(array('' => '26.7098656608', '/' => '231'), 'bbl'),
        'BARREL_US_FEDERAL'   => array('0.1173477658',  'bbl'),
        'BARREL_US'           => array('0.1192404717',  'bbl'),
        'BARREL_US_PETROLEUM' => array('0.1589872956',  'bbl'),
        'BOARD_FOOT'          => array(array('' => '6.5411915904', '/' => '2772'), 'board foot'),
        'BUCKET'              => array('0.01818436',    'bucket'),
        'BUCKET_US'           => array('0.018927059',   'bucket'),
        'BUSHEL'              => array('0.03636872',    'bu'),
        'BUSHEL_US'           => array('0.03523907',    'bu'),
        'CENTILITER'          => array('0.00001',       'cl'),
        'CORD'                => array('3.624556416',   'cd'),
        'CORD_FOOT'           => array('0.453069552',   'cd ft'),
        'CUBIC_CENTIMETER'    => array('0.000001',      'cm³'),
        'CUBIC_CUBIT'         => array('0.144',         'cubit³'),
        'CUBIC_DECIMETER'     => array('0.001',         'dm³'),
        'CUBIC_DEKAMETER'     => array('1000',          'dam³'),
        'CUBIC_FOOT'          => array(array('' => '6.54119159', '/' => '231'),   'ft³'),
        'CUBIC_INCH'          => array(array('' => '0.0037854118', '/' => '231'), 'in³'),
        'CUBIC_KILOMETER'     => array('1.0e+9',        'km³'),
        'CUBIC_METER'         => array('1',             'm³'),
        'CUBIC_MILE'          => array(array('' => '0.0037854118', '/' => '231', '*' => '75271680', '*' => '3379200'),
                                       'mi³'),
        'CUBIC_MICROMETER'    => array('1.0e-18',       'µm³'),
        'CUBIC_MILLIMETER'    => array('1.0e-9',        'mm³'),
        'CUBIC_YARD'          => array(array('' => '0.0037854118', '/' => '231', '*' => '46656'), 'yd³'),
        'CUP_CANADA'          => array('0.0002273045',  'c'),
        'CUP'                 => array('0.00025',       'c'),
        'CUP_US'              => array(array('' => '0.0037854118', '/' => '16'), 'c'),
        'DECILITER'           => array('0.0001',        'dl'),
        'DEKALITER'           => array('0.001',         'dal'),
        'DRAM'                => array(array('' => '0.0037854118', '/' => '1024'), 'dr'),
        'DRUM_US'             => array('0.208197649',   'drum'),
        'DRUM'                => array('0.2',           'drum'),
        'FIFTH'               => array('0.00075708236', 'fifth'),
        'GALLON'              => array('0.00454609',    'gal'),
        'GALLON_US_DRY'       => array('0.0044048838',  'gal'),
        'GALLON_US'           => array('0.0037854118',  'gal'),
        'GILL'                => array(array('' => '0.00454609', '/' => '32'),   'gi'),
        'GILL_US'             => array(array('' => '0.0037854118', '/' => '32'), 'gi'),
        'HECTARE_METER'       => array('10000',         'ha m'),
        'HECTOLITER'          => array('0.1',           'hl'),
        'HOGSHEAD'            => array('0.28640367',    'hhd'),
        'HOGSHEAD_US'         => array('0.2384809434',  'hhd'),
        'JIGGER'              => array(array('' => '0.0037854118', '/' => '128', '*' => '1.5'), 'jigger'),
        'KILOLITER'           => array('1',             'kl'),
        'LITER'               => array('0.001',         'l'),
        'MEASURE'             => array('0.0077',        'measure'),
        'MEGALITER'           => array('1000',          'Ml'),
        'MICROLITER'          => array('1.0e-9',        'µl'),
        'MILLILITER'          => array('0.000001',      'ml'),
        'MINIM'               => array(array('' => '0.00454609', '/' => '76800'),  'min'),
        'MINIM_US'            => array(array('' => '0.0037854118','/' => '61440'), 'min'),
        'OUNCE'               => array(array('' => '0.00454609', '/' => '160'),    'oz'),
        'OUNCE_US'            => array(array('' => '0.0037854118', '/' => '128'),  'oz'),
        'PECK'                => array('0.00909218',    'pk'),
        'PECK_US'             => array('0.0088097676',  'pk'),
        'PINT'                => array(array('' => '0.00454609', '/' => '8'),   'pt'),
        'PINT_US_DRY'         => array(array('' => '0.0044048838', '/' => '8'), 'pt'),
        'PINT_US'             => array(array('' => '0.0037854118', '/' => '8'), 'pt'),
        'PIPE'                => array('0.49097772',    'pipe'),
        'PIPE_US'             => array('0.4769618868',  'pipe'),
        'PONY'                => array(array('' => '0.0037854118', '/' => '128'), 'pony'),
        'QUART_GERMANY'       => array('0.00114504',    'qt'),
        'QUART_ANCIENT'       => array('0.00108',       'qt'),
        'QUART'               => array(array('' => '0.00454609', '/' => '4'),   'qt'),
        'QUART_US_DRY'        => array(array('' => '0.0044048838', '/' => '4'), 'qt'),
        'QUART_US'            => array(array('' => '0.0037854118', '/' => '4'), 'qt'),
        'QUART_UK'            => array('0.29094976',    'qt'),
        'SHOT'                => array(array('' => '0.0037854118', '/' => '128'), 'shot'),
        'STERE'               => array('1',             'st'),
        'TABLESPOON'          => array('0.000015',      'tbsp'),
        'TABLESPOON_UK'       => array(array('' => '0.00454609', '/' => '320'),   'tbsp'),
        'TABLESPOON_US'       => array(array('' => '0.0037854118', '/' => '256'), 'tbsp'),
        'TEASPOON'            => array('0.000005',      'tsp'),
        'TEASPOON_UK'         => array(array('' => '0.00454609', '/' => '1280'),    'tsp'),
        'TEASPOON_US'         => array(array('' => '0.0037854118', '/' => '768'),   'tsp'),
        'YARD'                => array(array('' => '176.6121729408', '/' => '231'), 'yd'),
        'STANDARD'            => 'CUBIC_METER'
    );
}
PKpG[����u
u
Measure/Torque.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Torque.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling torque conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Torque
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Torque extends Zend_Measure_Abstract
{
    const STANDARD = 'NEWTON_METER';

    const DYNE_CENTIMETER     = 'DYNE_CENTIMETER';
    const GRAM_CENTIMETER     = 'GRAM_CENTIMETER';
    const KILOGRAM_CENTIMETER = 'KILOGRAM_CENTIMETER';
    const KILOGRAM_METER      = 'KILOGRAM_METER';
    const KILONEWTON_METER    = 'KILONEWTON_METER';
    const KILOPOND_METER      = 'KILOPOND_METER';
    const MEGANEWTON_METER    = 'MEGANEWTON_METER';
    const MICRONEWTON_METER   = 'MICRONEWTON_METER';
    const MILLINEWTON_METER   = 'MILLINEWTON_METER';
    const NEWTON_CENTIMETER   = 'NEWTON_CENTIMETER';
    const NEWTON_METER        = 'NEWTON_METER';
    const OUNCE_FOOT          = 'OUNCE_FOOT';
    const OUNCE_INCH          = 'OUNCE_INCH';
    const POUND_FOOT          = 'POUND_FOOT';
    const POUNDAL_FOOT        = 'POUNDAL_FOOT';
    const POUND_INCH          = 'POUND_INCH';

    /**
     * Calculations for all torque units
     *
     * @var array
     */
    protected $_units = array(
        'DYNE_CENTIMETER'     => array('0.0000001',          'dyncm'),
        'GRAM_CENTIMETER'     => array('0.0000980665',       'gcm'),
        'KILOGRAM_CENTIMETER' => array('0.0980665',          'kgcm'),
        'KILOGRAM_METER'      => array('9.80665',            'kgm'),
        'KILONEWTON_METER'    => array('1000',               'kNm'),
        'KILOPOND_METER'      => array('9.80665',            'kpm'),
        'MEGANEWTON_METER'    => array('1000000',            'MNm'),
        'MICRONEWTON_METER'   => array('0.000001',           'µNm'),
        'MILLINEWTON_METER'   => array('0.001',              'mNm'),
        'NEWTON_CENTIMETER'   => array('0.01',               'Ncm'),
        'NEWTON_METER'        => array('1',                  'Nm'),
        'OUNCE_FOOT'          => array('0.084738622',        'ozft'),
        'OUNCE_INCH'          => array(array('' => '0.084738622', '/' => '12'), 'ozin'),
        'POUND_FOOT'          => array(array('' => '0.084738622', '*' => '16'), 'lbft'),
        'POUNDAL_FOOT'        => array('0.0421401099752144', 'plft'),
        'POUND_INCH'          => array(array('' => '0.084738622', '/' => '12', '*' => '16'), 'lbin'),
        'STANDARD'            => 'NEWTON_METER'
    );
}
PKpG[&����Measure/Acceleration.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Acceleration.php 9508 2008-05-23 10:56:41Z thomas $
 */


/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling acceleration conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Acceleration
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Acceleration extends Zend_Measure_Abstract
{
    const STANDARD = 'METER_PER_SQUARE_SECOND';

    const CENTIGAL                     = 'CENTIGAL';
    const CENTIMETER_PER_SQUARE_SECOND = 'CENTIMETER_PER_SQUARE_SECOND';
    const DECIGAL                      = 'DECIGAL';
    const DECIMETER_PER_SQUARE_SECOND  = 'DECIMETER_PER_SQUARE_SECOND';
    const DEKAMETER_PER_SQUARE_SECOND  = 'DEKAMETER_PER_SQUARE_SECOND';
    const FOOT_PER_SQUARE_SECOND       = 'FOOT_PER_SQUARE_SECOND';
    const G                            = 'G';
    const GAL                          = 'GAL';
    const GALILEO                      = 'GALILEO';
    const GRAV                         = 'GRAV';
    const HECTOMETER_PER_SQUARE_SECOND = 'HECTOMETER_PER_SQUARE_SECOND';
    const INCH_PER_SQUARE_SECOND       = 'INCH_PER_SQUARE_SECOND';
    const KILOMETER_PER_HOUR_SECOND    = 'KILOMETER_PER_HOUR_SECOND';
    const KILOMETER_PER_SQUARE_SECOND  = 'KILOMETER_PER_SQUARE_SECOND';
    const METER_PER_SQUARE_SECOND      = 'METER_PER_SQUARE_SECOND';
    const MILE_PER_HOUR_MINUTE         = 'MILE_PER_HOUR_MINUTE';
    const MILE_PER_HOUR_SECOND         = 'MILE_PER_HOUR_SECOND';
    const MILE_PER_SQUARE_SECOND       = 'MILE_PER_SQUARE_SECOND';
    const MILLIGAL                     = 'MILLIGAL';
    const MILLIMETER_PER_SQUARE_SECOND = 'MILLIMETER_PER_SQUARE_SECOND';

    /**
     * Calculations for all acceleration units
     *
     * @var array
     */
    protected $_units = array(
        'CENTIGAL'                     => array('0.0001',   'cgal'),
        'CENTIMETER_PER_SQUARE_SECOND' => array('0.01',     'cm/s²'),
        'DECIGAL'                      => array('0.001',    'dgal'),
        'DECIMETER_PER_SQUARE_SECOND'  => array('0.1',      'dm/s²'),
        'DEKAMETER_PER_SQUARE_SECOND'  => array('10',       'dam/s²'),
        'FOOT_PER_SQUARE_SECOND'       => array('0.3048',   'ft/s²'),
        'G'                            => array('9.80665',  'g'),
        'GAL'                          => array('0.01',     'gal'),
        'GALILEO'                      => array('0.01',     'gal'),
        'GRAV'                         => array('9.80665',  'g'),
        'HECTOMETER_PER_SQUARE_SECOND' => array('100',      'h/s²'),
        'INCH_PER_SQUARE_SECOND'       => array('0.0254',   'in/s²'),
        'KILOMETER_PER_HOUR_SECOND'    => array(array('' => '5','/' => '18'), 'km/h²'),
        'KILOMETER_PER_SQUARE_SECOND'  => array('1000',     'km/s²'),
        'METER_PER_SQUARE_SECOND'      => array('1',        'm/s²'),
        'MILE_PER_HOUR_MINUTE'         => array(array('' => '22', '/' => '15', '*' => '0.3048', '/' => '60'), 'mph/m'),
        'MILE_PER_HOUR_SECOND'         => array(array('' => '22', '/' => '15', '*' => '0.3048'), 'mph/s'),
        'MILE_PER_SQUARE_SECOND'       => array('1609.344', 'mi/s²'),
        'MILLIGAL'                     => array('0.00001',  'mgal'),
        'MILLIMETER_PER_SQUARE_SECOND' => array('0.001',    'mm/s²'),
        'STANDARD'                     => 'METER_PER_SQUARE_SECOND'
    );
}
PKpG[4���Measure/Temperature.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Temperature.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling temperature conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Temperature
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Temperature extends Zend_Measure_Abstract
{
    const STANDARD = 'KELVIN';

    const CELSIUS    = 'CELSIUS';
    const FAHRENHEIT = 'FAHRENHEIT';
    const RANKINE    = 'RANKINE';
    const REAUMUR    = 'REAUMUR';
    const KELVIN     = 'KELVIN';

    /**
     * Calculations for all temperature units
     *
     * @var array
     */
    protected $_units = array(
        'CELSIUS'    => array(array('' => '1', '+' => '273.15'),'°C'),
        'FAHRENHEIT' => array(array('' => '1', '-' => '32', '/' => '1.8', '+' => '273.15'),'°F'),
        'RANKINE'    => array(array('' => '1', '/' => '1.8'),'°R'),
        'REAUMUR'    => array(array('' => '1', '*' => '1.25', '+' => '273.15'),'°r'),
        'KELVIN'     => array(1,'°K'),
        'STANDARD'   => 'KELVIN'
    );
}
PKpG[
͂F�*�*Measure/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Abstract.php 12060 2008-10-21 17:23:55Z thomas $
 */

/**
 * @see Zend_Locale
 */
require_once 'Zend/Locale.php';

/**
 * @see Zend_Locale_Math
 */
require_once 'Zend/Locale/Math.php';

/**
 * @see Zend_Locale_Format
 */
require_once 'Zend/Locale/Format.php';

/**
 * Abstract class for all measurements
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Abstract
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Measure_Abstract
{
    /**
     * Plain value in standard unit
     *
     * @var string $_value
     */
    protected $_value;

    /**
     * Original type for this unit
     *
     * @var string $_type
     */
    protected $_type;

    /**
     * Locale identifier
     *
     * @var string $_locale
     */
    protected $_locale = null;

    /**
     * Unit types for this measurement
     */
    protected $_units = array();

    /**
     * Zend_Measure_Abstract is an abstract class for the different measurement types
     *
     * @param  $value  mixed  - Value as string, integer, real or float
     * @param  $type   type   - OPTIONAL a Zend_Measure_Area Type
     * @param  $locale locale - OPTIONAL a Zend_Locale Type
     * @throws Zend_Measure_Exception
     */
    public function __construct($value, $type = null, $locale = null)
    {
        if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) {
            $locale = $type;
            $type = null;
        }

        if (empty($locale)) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Locale') === true) {
                $locale = Zend_Registry::get('Zend_Locale');
            }
        }

        if ($locale === null) {
            $locale = new Zend_Locale();
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                require_once 'Zend/Measure/Exception.php';
                throw new Zend_Measure_Exception("Language (" . (string) $locale . ") is unknown");
            }

            $locale = new Zend_Locale($locale);
        }

        $this->_locale = (string) $locale;

        if ($type === null) {
            $type = $this->_units['STANDARD'];
        }

        if (isset($this->_units[$type]) === false) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception("Type ($type) is unknown");
        }

        $this->setValue($value, $type, $this->_locale);
    }

    /**
     * Returns the internal value
     *
     * @param integer $round (Optional) Rounds the value to an given precision,
     *                                  Default is 2, -1 returns without rounding
     */
    public function getValue($round = 2)
    {
        if ($round < 0) {
            return $this->_value;
        }

        return Zend_Locale_Math::round($this->_value, $round);
    }

    /**
     * Set a new value
     *
     * @param  integer|string      $value   Value as string, integer, real or float
     * @param  string              $type    OPTIONAL A Zend_Measure_Acceleration Type
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing numbers
     * @throws Zend_Measure_Exception
     */
    public function setValue($value, $type = null, $locale = null)
    {
        if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) {
            $locale = $type;
            $type = null;
        }

        if ($locale === null) {
            $locale = $this->_locale;
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                require_once 'Zend/Measure/Exception.php';
                throw new Zend_Measure_Exception("Language (" . (string) $locale . ") is unknown");
            }

            $locale = new Zend_Locale($locale);
        }

        $locale = (string) $locale;
        if ($type === null) {
            $type = $this->_units['STANDARD'];
        }

        if (empty($this->_units[$type])) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception("Type ($type) is unknown");
        }

        try {
            $value = Zend_Locale_Format::getNumber($value, array('locale' => $locale));
        } catch(Exception $e) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception($e->getMessage());
        }

        $this->_value = $value;
        $this->setType($type);
    }

    /**
     * Returns the original type
     *
     * @return type
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Set a new type, and convert the value
     *
     * @param  string  $type  New type to set
     * @throws Zend_Measure_Exception
     */
    public function setType($type)
    {
        if (empty($this->_units[$type])) {
            require_once 'Zend/Measure/Exception.php';
            throw new Zend_Measure_Exception("Type ($type) is unknown");
        }

        if (empty($this->_type)) {
            $this->_type = $type;
        } else {

            // Convert to standard value
            $value = $this->getValue(-1);
            if (is_array($this->_units[$this->getType()][0])) {
                foreach ($this->_units[$this->getType()][0] as $key => $found) {
                    switch ($key) {
                        case "/":
                            if ($found != 0) {
                                $value = @call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                            }
                            break;
                        case "+":
                            $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                            break;
                        case "-":
                            $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                            break;
                        default:
                            $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                            break;
                    }
                }
            } else {
                $value = call_user_func(Zend_Locale_Math::$mul, $value, $this->_units[$this->getType()][0], 25);
            }
            
            // Convert to expected value
            if (is_array($this->_units[$type][0])) {
                foreach (array_reverse($this->_units[$type][0]) as $key => $found) {
                    switch ($key) {
                        case "/":
                            $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25);
                            break;
                        case "+":
                            $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25);
                            break;
                        case "-":
                            $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25);
                            break;
                        default:
                            if ($found != 0) {
                                $value = @call_user_func(Zend_Locale_Math::$div, $value, $found, 25);
                            }
                            break;
                    }
                }
            } else {
                $value = @call_user_func(Zend_Locale_Math::$div, $value, $this->_units[$type][0], 25);
            }

            $this->_value = $value;
            $this->_type = $type;
        }
    }

    /**
     * Compare if the value and type is equal
     *
     * @param  Zend_Measure_Detailtype  $object  object to compare
     * @return boolean
     */
    public function equals($object)
    {
        if ((string) $object == $this->toString()) {
            return true;
        }

        return false;
    }

    /**
     * Returns a string representation
     *
     * @param  integer  $round  OPTIONAL rounds the value to an given exception
     * @return string
     */
    public function toString($round = -1)
    {
        return $this->getValue($round) . ' ' . $this->_units[$this->getType()][1];
    }

    /**
     * Returns a string representation
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }

    /**
     * Returns the conversion list
     *
     * @return array
     */
    public function getConversionList()
    {
        return $this->_units;
    }

    /**
     * Alias function for setType returning the converted unit
     *
     * @param $type   type
     * @param $round  integer  OPTIONAL rounds the value to a given precision
     * @return string
     */
    public function convertTo($type, $round = 2)
    {
        $this->setType($type);
        return $this->toString($round);
    }

    /**
     * Adds an unit to another one
     *
     * @param $object  object of same unit type
     * @return  Zend_Measure object
     */
    public function add($object)
    {
        $object->setType($this->getType());
        $value  = $this->getValue(-1) + $object->getValue(-1);

        $this->setValue($value, $this->getType(), $this->_locale);
        return $this;
    }

    /**
     * Substracts an unit from another one
     *
     * @param $object  object of same unit type
     * @return  Zend_Measure object
     */
    public function sub($object)
    {
        $object->setType($this->getType());
        $value  = $this->getValue(-1) - $object->getValue(-1);

        $this->setValue($value, $this->getType(), $this->_locale);
        return $this;
    }

    /**
     * Compares two units
     *
     * @param $object  object of same unit type
     * @return boolean
     */
    public function compare($object)
    {
        $object->setType($this->getType());
        $value  = $this->getValue(-1) - $object->getValue(-1);

        if ($value < 0) {
            return -1;
        } else if ($value > 0) {
            return 1;
        }

        return 0;
    }
}
PKpG[1��}�}�Measure/Length.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Length.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling length conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Length
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Length extends Zend_Measure_Abstract
{
    const STANDARD = 'METER';

    const AGATE                 = 'AGATE';
    const ALEN_DANISH           = 'ALEN_DANISH';
    const ALEN                  = 'ALEN';
    const ALEN_SWEDISH          = 'ALEN_SWEDISH';
    const ANGSTROM              = 'ANGSTROM';
    const ARMS                  = 'ARMS';
    const ARPENT_CANADIAN       = 'ARPENT_CANADIAN';
    const ARPENT                = 'ARPENT';
    const ARSHEEN               = 'ARSHEEN';
    const ARSHIN                = 'ARSHIN';
    const ARSHIN_IRAQ           = 'ARSHIN_IRAQ';
    const ASTRONOMICAL_UNIT     = 'ASTRONOMICAL_UNIT';
    const ATTOMETER             = 'ATTOMETER';
    const BAMBOO                = 'BAMBOO';
    const BARLEYCORN            = 'BARLEYCORN';
    const BEE_SPACE             = 'BEE_SPACE';
    const BICRON                = 'BICRON';
    const BLOCK_US_EAST         = 'BLOCK_US_EAST';
    const BLOCK_US_WEST         = 'BLOCK_US_WEST';
    const BLOCK_US_SOUTH        = 'BLOCK_US_SOUTH';
    const BOHR                  = 'BOHR';
    const BRACCIO               = 'BRACCIO';
    const BRAZA_ARGENTINA       = 'BRAZA_ARGENTINA';
    const BRAZA                 = 'BRAZA';
    const BRAZA_US              = 'BRAZA_US';
    const BUTTON                = 'BUTTON';
    const CABLE_US              = 'CABLE_US';
    const CABLE_UK              = 'CABLE_UK';
    const CALIBER               = 'CALIBER';
    const CANA                  = 'CANA';
    const CAPE_FOOT             = 'CAPE_FOOT';
    const CAPE_INCH             = 'CAPE_INCH';
    const CAPE_ROOD             = 'CAPE_ROOD';
    const CENTIMETER            = 'CENTIMETER';
    const CHAIN                 = 'CHAIN';
    const CHAIN_ENGINEER        = 'CHAIN_ENGINEER';
    const CHIH                  = 'CHIH';
    const CHINESE_FOOT          = 'CHINESE_FOOT';
    const CHINESE_INCH          = 'CHINESE_INCH';
    const CHINESE_MILE          = 'CHINESE_MILE';
    const CHINESE_YARD          = 'CHINESE_YARD';
    const CITY_BLOCK_US_EAST    = 'CITY_BLOCK_US_EAST';
    const CITY_BLOCK_US_WEST    = 'CITY_BLOCK_US_WEST';
    const CITY_BLOCK_US_SOUTH   = 'CITY_BLOCK_US_SOUTH';
    const CLICK                 = 'CLICK';
    const CUADRA                = 'CUADRA';
    const CUADRA_ARGENTINA      = 'CUADRA_ARGENTINA';
    const CUBIT_EGYPT           = 'Length:CUBIT_EGYPT';
    const CUBIT_ROYAL           = 'CUBIT_ROYAL';
    const CUBIT_UK              = 'CUBIT_UK';
    const CUBIT                 = 'CUBIT';
    const CUERDA                = 'CUERDA';
    const DECIMETER             = 'DECIMETER';
    const DEKAMETER             = 'DEKAMETER';
    const DIDOT_POINT           = 'DIDOT_POINT';
    const DIGIT                 = 'DIGIT';
    const DIRAA                 = 'DIRAA';
    const DONG                  = 'DONG';
    const DOUZIEME_WATCH        = 'DOUZIEME_WATCH';
    const DOUZIEME              = 'DOUZIEME';
    const DRA_IRAQ              = 'DRA_IRAQ';
    const DRA                   = 'DRA';
    const EL                    = 'EL';
    const ELL                   = 'ELL';
    const ELL_SCOTTISH          = 'ELL_SCOTTISH';
    const ELLE                  = 'ELLE';
    const ELLE_VIENNA           = 'ELLE_VIENNA';
    const EM                    = 'EM';
    const ESTADIO_PORTUGAL      = 'ESTADIO_PORTUGAL';
    const ESTADIO               = 'ESTADIO';
    const EXAMETER              = 'EXAMETER';
    const FADEN_AUSTRIA         = 'FADEN_AUSTRIA';
    const FADEN                 = 'FADEN';
    const FALL                  = 'FALL';
    const FALL_SCOTTISH         = 'FALL_SCOTTISH';
    const FATHOM                = 'FATHOM';
    const FATHOM_ANCIENT        = 'FATHOM_ANCIENT';
    const FAUST                 = 'FAUST';
    const FEET_OLD_CANADIAN     = 'FEET_OLD_CANADIAN';
    const FEET_EGYPT            = 'FEET_EGYPT';
    const FEET_FRANCE           = 'FEET_FRANCE';
    const FEET                  = 'FEET';
    const FEET_IRAQ             = 'FEET_IRAQ';
    const FEET_NETHERLAND       = 'FEET_NETHERLAND';
    const FEET_ITALIC           = 'FEET_ITALIC';
    const FEET_SURVEY           = 'FEET_SURVEY';
    const FEMTOMETER            = 'FEMTOMETER';
    const FERMI                 = 'FERMI';
    const FINGER                = 'FINGER';
    const FINGERBREADTH         = 'FINGERBREADTH';
    const FIST                  = 'FIST';
    const FOD                   = 'FOD';
    const FOOT_EGYPT            = 'FOOT_EGYPT';
    const FOOT_FRANCE           = 'FOOT_FRANCE';
    const FOOT                  = 'FOOT';
    const FOOT_IRAQ             = 'FOOT_IRAQ';
    const FOOT_NETHERLAND       = 'FOOT_NETHERLAND';
    const FOOT_ITALIC           = 'FOOT_ITALIC';
    const FOOT_SURVEY           = 'FOOT_SURVEY';
    const FOOTBALL_FIELD_CANADA = 'FOOTBALL_FIELD_CANADA';
    const FOOTBALL_FIELD_US     = 'FOOTBALL_FIELD_US';
    const FOOTBALL_FIELD        = 'FOOTBALL_FIELD';
    const FURLONG               = 'FURLONG';
    const FURLONG_SURVEY        = 'FURLONG_SURVEY';
    const FUSS                  = 'FUSS';
    const GIGAMETER             = 'GIGAMETER';
    const GIGAPARSEC            = 'GIGAPARSEC';
    const GNATS_EYE             = 'GNATS_EYE';
    const GOAD                  = 'GOAD';
    const GRY                   = 'GRY';
    const HAIRS_BREADTH         = 'HAIRS_BREADTH';
    const HAND                  = 'HAND';
    const HANDBREADTH           = 'HANDBREADTH';
    const HAT                   = 'HAT';
    const HECTOMETER            = 'HECTOMETER';
    const HEER                  = 'HEER';
    const HIRO                  = 'HIRO';
    const HUBBLE                = 'HUBBLE';
    const HVAT                  = 'HVAT';
    const INCH                  = 'INCH';
    const IRON                  = 'IRON';
    const KEN                   = 'KEN';
    const KERAT                 = 'KERAT';
    const KILOFOOT              = 'KILOFOOT';
    const KILOMETER             = 'KILOMETER';
    const KILOPARSEC            = 'KILOPARSEC';
    const KILOYARD              = 'KILOYARD';
    const KIND                  = 'KIND';
    const KLAFTER               = 'KLAFTER';
    const KLAFTER_SWISS         = 'KLAFTER_SWISS';
    const KLICK                 = 'KLICK';
    const KYU                   = 'KYU';
    const LAP_ANCIENT           = 'LAP_ANCIENT';
    const LAP                   = 'LAP';
    const LAP_POOL              = 'LAP_POOL';
    const LEAGUE_ANCIENT        = 'LEAGUE_ANCIENT';
    const LEAGUE_NAUTIC         = 'LEAGUE_NAUTIC';
    const LEAGUE_UK_NAUTIC      = 'LEAGUE_UK_NAUTIC';
    const LEAGUE                = 'LEAGUE';
    const LEAGUE_US             = 'LEAGUE_US';
    const LEAP                  = 'LEAP';
    const LEGOA                 = 'LEGOA';
    const LEGUA                 = 'LEGUA';
    const LEGUA_US              = 'LEGUA_US';
    const LEGUA_SPAIN_OLD       = 'LEGUA_SPAIN_OLD';
    const LEGUA_SPAIN           = 'LEGUA_SPAIN';
    const LI_ANCIENT            = 'LI_ANCIENT';
    const LI_IMPERIAL           = 'LI_IMPERIAL';
    const LI                    = 'LI';
    const LIEUE                 = 'LIEUE';
    const LIEUE_METRIC          = 'LIEUE_METRIC';
    const LIEUE_NAUTIC          = 'LIEUE_NAUTIC';
    const LIGHT_SECOND          = 'LIGHT_SECOND';
    const LIGHT_MINUTE          = 'LIGHT_MINUTE';
    const LIGHT_HOUR            = 'LIGHT_HOUR';
    const LIGHT_DAY             = 'LIGHT_DAY';
    const LIGHT_YEAR            = 'LIGHT_YEAR';
    const LIGNE                 = 'LIGNE';
    const LIGNE_SWISS           = 'LIGNE_SWISS';
    const LINE                  = 'LINE';
    const LINE_SMALL            = 'LINE_SMALL';
    const LINK                  = 'LINK';
    const LINK_ENGINEER         = 'LINK_ENGINEER';
    const LUG                   = 'LUG';
    const LUG_GREAT             = 'LUG_GREAT';
    const MARATHON              = 'MARATHON';
    const MARK_TWAIN            = 'MARK_TWAIN';
    const MEGAMETER             = 'MEGAMETER';
    const MEGAPARSEC            = 'MEGAPARSEC';
    const MEILE_AUSTRIAN        = 'MEILE_AUSTRIAN';
    const MEILE                 = 'MEILE';
    const MEILE_GERMAN          = 'MEILE_GERMAN';
    const METER                 = 'METER';
    const METRE                 = 'METRE';
    const METRIC_MILE           = 'METRIC_MILE';
    const METRIC_MILE_US        = 'METRIC_MILE_US';
    const MICROINCH             = 'MICROINCH';
    const MICROMETER            = 'MICROMETER';
    const MICROMICRON           = 'MICROMICRON';
    const MICRON                = 'MICRON';
    const MIGLIO                = 'MIGLIO';
    const MIIL                  = 'MIIL';
    const MIIL_DENMARK          = 'MIIL_DENMARK';
    const MIIL_SWEDISH          = 'MIIL_SWEDISH';
    const MIL                   = 'MIL';
    const MIL_SWEDISH           = 'MIL_SWEDISH';
    const MILE_UK               = 'MILE_UK';
    const MILE_IRISH            = 'MILE_IRISH';
    const MILE                  = 'MILE';
    const MILE_NAUTIC           = 'MILE_NAUTIC';
    const MILE_NAUTIC_UK        = 'MILE_NAUTIC_UK';
    const MILE_NAUTIC_US        = 'MILE_NAUTIC_US';
    const MILE_ANCIENT          = 'MILE_ANCIENT';
    const MILE_SCOTTISH         = 'MILE_SCOTTISH';
    const MILE_STATUTE          = 'MILE_STATUTE';
    const MILE_US               = 'MILE_US';
    const MILHA                 = 'MILHA';
    const MILITARY_PACE         = 'MILITARY_PACE';
    const MILITARY_PACE_DOUBLE  = 'MILITARY_PACE_DOUBLE';
    const MILLA                 = 'MILLA';
    const MILLE                 = 'MILLE';
    const MILLIARE              = 'MILLIARE';
    const MILLIMETER            = 'MILLIMETER';
    const MILLIMICRON           = 'MILLIMICRON';
    const MKONO                 = 'MKONO';
    const MOOT                  = 'MOOT';
    const MYRIAMETER            = 'MYRIAMETER';
    const NAIL                  = 'NAIL';
    const NANOMETER             = 'NANOMETER';
    const NANON                 = 'NANON';
    const PACE                  = 'PACE';
    const PACE_ROMAN            = 'PACE_ROMAN';
    const PALM_DUTCH            = 'PALM_DUTCH';
    const PALM_UK               = 'PALM_UK';
    const PALM                  = 'PALM';
    const PALMO_PORTUGUESE      = 'PALMO_PORTUGUESE';
    const PALMO                 = 'PALMO';
    const PALMO_US              = 'PALMO_US';
    const PARASANG              = 'PARASANG';
    const PARIS_FOOT            = 'PARIS_FOOT';
    const PARSEC                = 'PARSEC';
    const PE                    = 'PE';
    const PEARL                 = 'PEARL';
    const PERCH                 = 'PERCH';
    const PERCH_IRELAND         = 'PERCH_IRELAND';
    const PERTICA               = 'PERTICA';
    const PES                   = 'PES';
    const PETAMETER             = 'PETAMETER';
    const PICA                  = 'PICA';
    const PICOMETER             = 'PICOMETER';
    const PIE_ARGENTINA         = 'PIE_ARGENTINA';
    const PIE_ITALIC            = 'PIE_ITALIC';
    const PIE                   = 'PIE';
    const PIE_US                = 'PIE_US';
    const PIED_DE_ROI           = 'PIED_DE_ROI';
    const PIK                   = 'PIK';
    const PIKE                  = 'PIKE';
    const POINT_ADOBE           = 'POINT_ADOBE';
    const POINT                 = 'POINT';
    const POINT_DIDOT           = 'POINT_DIDOT';
    const POINT_TEX             = 'POINT_TEX';
    const POLE                  = 'POLE';
    const POLEGADA              = 'POLEGADA';
    const POUCE                 = 'POUCE';
    const PU                    = 'PU';
    const PULGADA               = 'PULGADA';
    const PYGME                 = 'PYGME';
    const Q                     = 'Q';
    const QUADRANT              = 'QUADRANT';
    const QUARTER               = 'QUARTER';
    const QUARTER_CLOTH         = 'QUARTER_CLOTH';
    const QUARTER_PRINT         = 'QUARTER_PRINT';
    const RANGE                 = 'RANGE';
    const REED                  = 'REED';
    const RI                    = 'RI';
    const RIDGE                 = 'RIDGE';
    const RIVER                 = 'RIVER';
    const ROD                   = 'ROD';
    const ROD_SURVEY            = 'ROD_SURVEY';
    const ROEDE                 = 'ROEDE';
    const ROOD                  = 'ROOD';
    const ROPE                  = 'ROPE';
    const ROYAL_FOOT            = 'ROYAL_FOOT';
    const RUTE                  = 'RUTE';
    const SADZHEN               = 'SADZHEN';
    const SAGENE                = 'SAGENE';
    const SCOTS_FOOT            = 'SCOTS_FOOT';
    const SCOTS_MILE            = 'SCOTS_MILE';
    const SEEMEILE              = 'SEEMEILE';
    const SHACKLE               = 'SHACKLE';
    const SHAFTMENT             = 'SHAFTMENT';
    const SHAFTMENT_ANCIENT     = 'SHAFTMENT_ANCIENT';
    const SHAKU                 = 'SHAKU';
    const SIRIOMETER            = 'SIRIOMETER';
    const SMOOT                 = 'SMOOT';
    const SPAN                  = 'SPAN';
    const SPAT                  = 'SPAT';
    const STADIUM               = 'STADIUM';
    const STEP                  = 'STEP';
    const STICK                 = 'STICK';
    const STORY                 = 'STORY';
    const STRIDE                = 'STRIDE';
    const STRIDE_ROMAN          = 'STRIDE_ROMAN';
    const TENTHMETER            = 'TENTHMETER';
    const TERAMETER             = 'TERAMETER';
    const THOU                  = 'THOU';
    const TOISE                 = 'TOISE';
    const TOWNSHIP              = 'TOWNSHIP';
    const T_SUN                 = 'T_SUN';
    const TU                    = 'TU';
    const TWAIN                 = 'TWAIN';
    const TWIP                  = 'TWIP';
    const U                     = 'U';
    const VARA_CALIFORNIA       = 'VARA_CALIFORNIA';
    const VARA_MEXICAN          = 'VARA_MEXICAN';
    const VARA_PORTUGUESE       = 'VARA_PORTUGUESE';
    const VARA_AMERICA          = 'VARA_AMERICA';
    const VARA                  = 'VARA';
    const VARA_TEXAS            = 'VARA_TEXAS';
    const VERGE                 = 'VERGE';
    const VERSHOK               = 'VERSHOK';
    const VERST                 = 'VERST';
    const WAH                   = 'WAH';
    const WERST                 = 'WERST';
    const X_UNIT                = 'X_UNIT';
    const YARD                  = 'YARD';
    const YOCTOMETER            = 'YOCTOMETER';
    const YOTTAMETER            = 'YOTTAMETER';
    const ZEPTOMETER            = 'ZEPTOMETER';
    const ZETTAMETER            = 'ZETTAMETER';
    const ZOLL                  = 'ZOLL';
    const ZOLL_SWISS            = 'ZOLL_SWISS';

    /**
     * Calculations for all length units
     *
     * @var array
     */
    protected $_units = array(
        'AGATE'           => array(array('' => '0.0254', '/' => '72'), 'agate'),
        'ALEN_DANISH'     => array('0.6277',           'alen'),
        'ALEN'            => array('0.6',              'alen'),
        'ALEN_SWEDISH'    => array('0.5938',           'alen'),
        'ANGSTROM'        => array('1.0e-10',          'Å'),
        'ARMS'            => array('0.7',              'arms'),
        'ARPENT_CANADIAN' => array('58.47',            'arpent'),
        'ARPENT'          => array('58.471308',        'arpent'),
        'ARSHEEN'         => array('0.7112',           'arsheen'),
        'ARSHIN'          => array('1.04',             'arshin'),
        'ARSHIN_IRAQ'     => array('74.5',             'arshin'),
        'ASTRONOMICAL_UNIT' => array('149597870691',   'AU'),
        'ATTOMETER'       => array('1.0e-18',          'am'),
        'BAMBOO'          => array('3.2',              'bamboo'),
        'BARLEYCORN'      => array('0.0085',           'barleycorn'),
        'BEE_SPACE'       => array('0.0065',           'bee space'),
        'BICRON'          => array('1.0e-12',          '��'),
        'BLOCK_US_EAST'   => array('80.4672',          'block'),
        'BLOCK_US_WEST'   => array('100.584',          'block'),
        'BLOCK_US_SOUTH'  => array('160.9344',         'block'),
        'BOHR'            => array('52.918e-12',       'a�'),
        'BRACCIO'         => array('0.7',              'braccio'),
        'BRAZA_ARGENTINA' => array('1.733',            'braza'),
        'BRAZA'           => array('1.67',             'braza'),
        'BRAZA_US'        => array('1.693',            'braza'),
        'BUTTON'          => array('0.000635',         'button'),
        'CABLE_US'        => array('219.456',          'cable'),
        'CABLE_UK'        => array('185.3184',         'cable'),
        'CALIBER'         => array('0.0254',           'cal'),
        'CANA'            => array('2',                'cana'),
        'CAPE_FOOT'       => array('0.314858',         'cf'),
        'CAPE_INCH'       => array(array('' => '0.314858','/' => '12'), 'ci'),
        'CAPE_ROOD'       => array('3.778296',         'cr'),
        'CENTIMETER'      => array('0.01',             'cm'),
        'CHAIN'           => array(array('' => '79200','/' => '3937'),  'ch'),
        'CHAIN_ENGINEER'  => array('30.48',            'ch'),
        'CHIH'            => array('0.35814',          "ch'ih"),
        'CHINESE_FOOT'    => array('0.371475',         'ft'),
        'CHINESE_INCH'    => array('0.0371475',        'in'),
        'CHINESE_MILE'    => array('557.21',           'mi'),
        'CHINESE_YARD'    => array('0.89154',          'yd'),
        'CITY_BLOCK_US_EAST'  => array('80.4672',      'block'),
        'CITY_BLOCK_US_WEST'  => array('100.584',      'block'),
        'CITY_BLOCK_US_SOUTH' => array('160.9344',     'block'),
        'CLICK'           => array('1000',             'click'),
        'CUADRA'          => array('84',               'cuadra'),
        'CUADRA_ARGENTINA'=> array('130',              'cuadra'),
        'Length:CUBIT_EGYPT'      => array('0.45',             'cubit'),
        'CUBIT_ROYAL'     => array('0.5235',           'cubit'),
        'CUBIT_UK'        => array('0.4572',           'cubit'),
        'CUBIT'           => array('0.444',            'cubit'),
        'CUERDA'          => array('21',               'cda'),
        'DECIMETER'       => array('0.1',              'dm'),
        'DEKAMETER'       => array('10',               'dam'),
        'DIDOT_POINT'     => array('0.000377',         'didot point'),
        'DIGIT'           => array('0.019',            'digit'),
        'DIRAA'           => array('0.58',             ''),
        'DONG'            => array(array('' => '7','/' => '300'), 'dong'),
        'DOUZIEME_WATCH'  => array('0.000188',         'douzi�me'),
        'DOUZIEME'        => array('0.00017638888889', 'douzi�me'),
        'DRA_IRAQ'        => array('0.745',            'dra'),
        'DRA'             => array('0.7112',           'dra'),
        'EL'              => array('0.69',             'el'),
        'ELL'             => array('1.143',            'ell'),
        'ELL_SCOTTISH'    => array('0.945',            'ell'),
        'ELLE'            => array('0.6',              'ellen'),
        'ELLE_VIENNA'     => array('0.7793',           'ellen'),
        'EM'              => array('0.0042175176',     'em'),
        'ESTADIO_PORTUGAL'=> array('261',              'estadio'),
        'ESTADIO'         => array('174',              'estadio'),
        'EXAMETER'        => array('1.0e+18',          'Em'),
        'FADEN_AUSTRIA'   => array('1.8965',           'faden'),
        'FADEN'           => array('1.8',              'faden'),
        'FALL'            => array('6.858',            'fall'),
        'FALL_SCOTTISH'   => array('5.67',             'fall'),
        'FATHOM'          => array('1.8288',           'fth'),
        'FATHOM_ANCIENT'  => array('1.829',            'fth'),
        'FAUST'           => array('0.10536',          'faust'),
        'FEET_OLD_CANADIAN' => array('0.325',          'ft'),
        'FEET_EGYPT'      => array('0.36',             'ft'),
        'FEET_FRANCE'     => array('0.3248406',        'ft'),
        'FEET'            => array('0.3048',           'ft'),
        'FEET_IRAQ'       => array('0.316',            'ft'),
        'FEET_NETHERLAND' => array('0.28313',          'ft'),
        'FEET_ITALIC'     => array('0.296',            'ft'),
        'FEET_SURVEY'     => array(array('' => '1200', '/' => '3937'), 'ft'),
        'FEMTOMETER'      => array('1.0e-15',          'fm'),
        'FERMI'           => array('1.0e-15',          'f'),
        'FINGER'          => array('0.1143',           'finger'),
        'FINGERBREADTH'   => array('0.01905',          'fingerbreadth'),
        'FIST'            => array('0.1',              'fist'),
        'FOD'             => array('0.3141',           'fod'),
        'FOOT_EGYPT'      => array('0.36',             'ft'),
        'FOOT_FRANCE'     => array('0.3248406',        'ft'),
        'FOOT'            => array('0.3048',           'ft'),
        'FOOT_IRAQ'       => array('0.316',            'ft'),
        'FOOT_NETHERLAND' => array('0.28313',          'ft'),
        'FOOT_ITALIC'     => array('0.296',            'ft'),
        'FOOT_SURVEY'     => array(array('' => '1200', '/' => '3937'), 'ft'),
        'FOOTBALL_FIELD_CANADA' => array('100.584',    'football field'),
        'FOOTBALL_FIELD_US'     => array('91.44',      'football field'),
        'FOOTBALL_FIELD'  => array('109.728',          'football field'),
        'FURLONG'         => array('201.168',          'fur'),
        'FURLONG_SURVEY'  => array(array('' => '792000', '/' => '3937'), 'fur'),
        'FUSS'            => array('0.31608',          'fuss'),
        'GIGAMETER'       => array('1.0e+9',           'Gm'),
        'GIGAPARSEC'      => array('30.85678e+24',     'Gpc'),
        'GNATS_EYE'       => array('0.000125',         "gnat's eye"),
        'GOAD'            => array('1.3716',           'goad'),
        'GRY'             => array('0.000211667',      'gry'),
        'HAIRS_BREADTH'   => array('0.0001',           "hair's breadth"),
        'HAND'            => array('0.1016',           'hand'),
        'HANDBREADTH'     => array('0.08',             "hand's breadth"),
        'HAT'             => array('0.5',              'hat'),
        'HECTOMETER'      => array('100',              'hm'),
        'HEER'            => array('73.152',           'heer'),
        'HIRO'            => array('1.818',            'hiro'),
        'HUBBLE'          => array('9.4605e+24',       'hubble'),
        'HVAT'            => array('1.8965',           'hvat'),
        'INCH'            => array('0.0254',           'in'),
        'IRON'            => array(array('' => '0.0254', '/' => '48'), 'iron'),
        'KEN'             => array('1.818',            'ken'),
        'KERAT'           => array('0.0286',           'kerat'),
        'KILOFOOT'        => array('304.8',            'kft'),
        'KILOMETER'       => array('1000',             'km'),
        'KILOPARSEC'      => array('3.0856776e+19',    'kpc'),
        'KILOYARD'        => array('914.4',            'kyd'),
        'KIND'            => array('0.5',              'kind'),
        'KLAFTER'         => array('1.8965',           'klafter'),
        'KLAFTER_SWISS'   => array('1.8',              'klafter'),
        'KLICK'           => array('1000',             'klick'),
        'KYU'             => array('0.00025',          'kyu'),
        'LAP_ANCIENT'     => array('402.336',          ''),
        'LAP'             => array('400',              'lap'),
        'LAP_POOL'        => array('100',              'lap'),
        'LEAGUE_ANCIENT'  => array('2275',             'league'),
        'LEAGUE_NAUTIC'   => array('5556',             'league'),
        'LEAGUE_UK_NAUTIC'=> array('5559.552',         'league'),
        'LEAGUE'          => array('4828',             'league'),
        'LEAGUE_US'       => array('4828.0417',        'league'),
        'LEAP'            => array('2.0574',           'leap'),
        'LEGOA'           => array('6174.1',           'legoa'),
        'LEGUA'           => array('4200',             'legua'),
        'LEGUA_US'        => array('4233.4',           'legua'),
        'LEGUA_SPAIN_OLD' => array('4179.4',           'legua'),
        'LEGUA_SPAIN'     => array('6680',             'legua'),
        'LI_ANCIENT'      => array('500',              'li'),
        'LI_IMPERIAL'     => array('644.65',           'li'),
        'LI'              => array('500',              'li'),
        'LIEUE'           => array('3898',             'lieue'),
        'LIEUE_METRIC'    => array('4000',             'lieue'),
        'LIEUE_NAUTIC'    => array('5556',             'lieue'),
        'LIGHT_SECOND'    => array('299792458',        'light second'),
        'LIGHT_MINUTE'    => array('17987547480',      'light minute'),
        'LIGHT_HOUR'      => array('1079252848800',    'light hour'),
        'LIGHT_DAY'       => array('25902068371200',   'light day'),
        'LIGHT_YEAR'      => array('9460528404879000', 'ly'),
        'LIGNE'           => array('0.0021167',        'ligne'),
        'LIGNE_SWISS'     => array('0.002256',         'ligne'),
        'LINE'            => array('0.0021167',        'li'),
        'LINE_SMALL'      => array('0.000635',         'li'),
        'LINK'            => array(array('' => '792','/' => '3937'), 'link'),
        'LINK_ENGINEER'   => array('0.3048',           'link'),
        'LUG'             => array('5.0292',           'lug'),
        'LUG_GREAT'       => array('6.4008',           'lug'),
        'MARATHON'        => array('42194.988',        'marathon'),
        'MARK_TWAIN'      => array('3.6576074',        'mark twain'),
        'MEGAMETER'       => array('1000000',          'Mm'),
        'MEGAPARSEC'      => array('3.085677e+22',     'Mpc'),
        'MEILE_AUSTRIAN'  => array('7586',             'meile'),
        'MEILE'           => array('7412.7',           'meile'),
        'MEILE_GERMAN'    => array('7532.5',           'meile'),
        'METER'           => array('1',                'm'),
        'METRE'           => array('1',                'm'),
        'METRIC_MILE'     => array('1500',             'metric mile'),
        'METRIC_MILE_US'  => array('1600',             'metric mile'),
        'MICROINCH'       => array('2.54e-08',         '�in'),
        'MICROMETER'      => array('0.000001',         '�m'),
        'MICROMICRON'     => array('1.0e-12',          '��'),
        'MICRON'          => array('0.000001',         '�'),
        'MIGLIO'          => array('1488.6',           'miglio'),
        'MIIL'            => array('7500',             'miil'),
        'MIIL_DENMARK'    => array('7532.5',           'miil'),
        'MIIL_SWEDISH'    => array('10687',            'miil'),
        'MIL'             => array('0.0000254',        'mil'),
        'MIL_SWEDISH'     => array('10000',            'mil'),
        'MILE_UK'         => array('1609',             'mi'),
        'MILE_IRISH'      => array('2048',             'mi'),
        'MILE'            => array('1609.344',         'mi'),
        'MILE_NAUTIC'     => array('1852',             'mi'),
        'MILE_NAUTIC_UK'  => array('1853.184',         'mi'),
        'MILE_NAUTIC_US'  => array('1852',             'mi'),
        'MILE_ANCIENT'    => array('1520',             'mi'),
        'MILE_SCOTTISH'   => array('1814',             'mi'),
        'MILE_STATUTE'    => array('1609.344',         'mi'),
        'MILE_US'         => array(array('' => '6336000','/' => '3937'), 'mi'),
        'MILHA'           => array('2087.3',           'milha'),
        'MILITARY_PACE'   => array('0.762',            'mil. pace'),
        'MILITARY_PACE_DOUBLE' => array('0.9144',      'mil. pace'),
        'MILLA'           => array('1392',             'milla'),
        'MILLE'           => array('1949',             'mille'),
        'MILLIARE'        => array('0.001478',         'milliare'),
        'MILLIMETER'      => array('0.001',            'mm'),
        'MILLIMICRON'     => array('1.0e-9',           'm�'),
        'MKONO'           => array('0.4572',           'mkono'),
        'MOOT'            => array('0.0762',           'moot'),
        'MYRIAMETER'      => array('10000',            'mym'),
        'NAIL'            => array('0.05715',          'nail'),
        'NANOMETER'       => array('1.0e-9',           'nm'),
        'NANON'           => array('1.0e-9',           'nanon'),
        'PACE'            => array('1.524',            'pace'),
        'PACE_ROMAN'      => array('1.48',             'pace'),
        'PALM_DUTCH'      => array('0.10',             'palm'),
        'PALM_UK'         => array('0.075',            'palm'),
        'PALM'            => array('0.2286',           'palm'),
        'PALMO_PORTUGUESE'=> array('0.22',             'palmo'),
        'PALMO'           => array('0.20',             'palmo'),
        'PALMO_US'        => array('0.2117',           'palmo'),
        'PARASANG'        => array('6000',             'parasang'),
        'PARIS_FOOT'      => array('0.3248406',        'paris foot'),
        'PARSEC'          => array('3.0856776e+16',    'pc'),
        'PE'              => array('0.33324',          'p�'),
        'PEARL'           => array('0.001757299',      'pearl'),
        'PERCH'           => array('5.0292',           'perch'),
        'PERCH_IRELAND'   => array('6.4008',           'perch'),
        'PERTICA'         => array('2.96',             'pertica'),
        'PES'             => array('0.2967',           'pes'),
        'PETAMETER'       => array('1.0e+15',          'Pm'),
        'PICA'            => array('0.0042175176',     'pi'),
        'PICOMETER'       => array('1.0e-12',          'pm'),
        'PIE_ARGENTINA'   => array('0.2889',           'pie'),
        'PIE_ITALIC'      => array('0.298',            'pie'),
        'PIE'             => array('0.2786',           'pie'),
        'PIE_US'          => array('0.2822',           'pie'),
        'PIED_DE_ROI'     => array('0.3248406',        'pied de roi'),
        'PIK'             => array('0.71',             'pik'),
        'PIKE'            => array('0.71',             'pike'),
        'POINT_ADOBE'     => array(array('' => '0.3048', '/' => '864'), 'pt'),
        'POINT'           => array('0.00035',          'pt'),
        'POINT_DIDOT'     => array('0.000377',         'pt'),
        'POINT_TEX'       => array('0.0003514598035',  'pt'),
        'POLE'            => array('5.0292',           'pole'),
        'POLEGADA'        => array('0.02777',          'polegada'),
        'POUCE'           => array('0.02707',          'pouce'),
        'PU'              => array('1.7907',           'pu'),
        'PULGADA'         => array('0.02365',          'pulgada'),
        'PYGME'           => array('0.346',            'pygme'),
        'Q'               => array('0.00025',          'q'),
        'QUADRANT'        => array('10001300',         'quad'),
        'QUARTER'         => array('402.336',          'Q'),
        'QUARTER_CLOTH'   => array('0.2286',           'Q'),
        'QUARTER_PRINT'   => array('0.00025',          'Q'),
        'RANGE'           => array(array('' => '38016000','/' => '3937'), 'range'),
        'REED'            => array('2.679',            'reed'),
        'RI'              => array('3927',             'ri'),
        'RIDGE'           => array('6.1722',           'ridge'),
        'RIVER'           => array('2000',             'river'),
        'ROD'             => array('5.0292',           'rd'),
        'ROD_SURVEY'      => array(array('' => '19800', '/' => '3937'), 'rd'),
        'ROEDE'           => array('10',               'roede'),
        'ROOD'            => array('3.7783',           'rood'),
        'ROPE'            => array('3.7783',           'rope'),
        'ROYAL_FOOT'      => array('0.3248406',        'royal foot'),
        'RUTE'            => array('3.75',             'rute'),
        'SADZHEN'         => array('2.1336',           'sadzhen'),
        'SAGENE'          => array('2.1336',           'sagene'),
        'SCOTS_FOOT'      => array('0.30645',          'scots foot'),
        'SCOTS_MILE'      => array('1814.2',           'scots mile'),
        'SEEMEILE'        => array('1852',             'seemeile'),
        'SHACKLE'         => array('27.432',           'shackle'),
        'SHAFTMENT'       => array('0.15124',          'shaftment'),
        'SHAFTMENT_ANCIENT' => array('0.165',          'shaftment'),
        'SHAKU'           => array('0.303',            'shaku'),
        'SIRIOMETER'      => array('1.4959787e+17',    'siriometer'),
        'SMOOT'           => array('1.7018',           'smoot'),
        'SPAN'            => array('0.2286',           'span'),
        'SPAT'            => array('1.0e+12',          'spat'),
        'STADIUM'         => array('185',              'stadium'),
        'STEP'            => array('0.762',            'step'),
        'STICK'           => array('3.048',            'stk'),
        'STORY'           => array('3.3',              'story'),
        'STRIDE'          => array('1.524',            'stride'),
        'STRIDE_ROMAN'    => array('1.48',             'stride'),
        'TENTHMETER'      => array('1.0e-10',          'tenth-meter'),
        'TERAMETER'       => array('1.0e+12',          'Tm'),
        'THOU'            => array('0.0000254',        'thou'),
        'TOISE'           => array('1.949',            'toise'),
        'TOWNSHIP'        => array(array('' => '38016000','/' => '3937'), 'twp'),
        'T_SUN'           => array('0.0358',           "t'sun"),
        'TU'              => array('161130',           'tu'),
        'TWAIN'           => array('3.6576074',        'twain'),
        'TWIP'            => array('0.000017639',      'twip'),
        'U'               => array('0.04445',          'U'),
        'VARA_CALIFORNIA' => array('0.83820168',       'vara'),
        'VARA_MEXICAN'    => array('0.83802',          'vara'),
        'VARA_PORTUGUESE' => array('1.10',             'vara'),
        'VARA_AMERICA'    => array('0.864',            'vara'),
        'VARA'            => array('0.83587',          'vara'),
        'VARA_TEXAS'      => array('0.84666836',       'vara'),
        'VERGE'           => array('0.9144',           'verge'),
        'VERSHOK'         => array('0.04445',          'vershok'),
        'VERST'           => array('1066.8',           'verst'),
        'WAH'             => array('2',                'wah'),
        'WERST'           => array('1066.8',           'werst'),
        'X_UNIT'          => array('1.0020722e-13',    'Xu'),
        'YARD'            => array('0.9144',           'yd'),
        'YOCTOMETER'      => array('1.0e-24',          'ym'),
        'YOTTAMETER'      => array('1.0e+24',          'Ym'),
        'ZEPTOMETER'      => array('1.0e-21',          'zm'),
        'ZETTAMETER'      => array('1.0e+21',          'Zm'),
        'ZOLL'            => array('0.02634',          'zoll'),
        'ZOLL_SWISS'      => array('0.03',             'zoll'),
        'STANDARD'        => 'METER'
    );
}
PKpG[Y�s���Measure/Time.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling time conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Time
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Time extends Zend_Measure_Abstract
{
    const STANDARD = 'SECOND';

    const ANOMALISTIC_YEAR  = 'ANOMALISTIC_YEAR';
    const ATTOSECOND        = 'ATTOSECOND';
    const CENTURY           = 'CENTURY';
    const DAY               = 'DAY';
    const DECADE            = 'DECADE';
    const DRACONIC_YEAR     = 'DRACONTIC_YEAR';
    const EXASECOND         = 'EXASECOND';
    const FEMTOSECOND       = 'FEMTOSECOND';
    const FORTNIGHT         = 'FORTNIGHT';
    const GAUSSIAN_YEAR     = 'GAUSSIAN_YEAR';
    const GIGASECOND        = 'GIGASECOND';
    const GREGORIAN_YEAR    = 'GREGORIAN_YEAR';
    const HOUR              = 'HOUR';
    const JULIAN_YEAR       = 'JULIAN_YEAR';
    const KILOSECOND        = 'KILOSECOND';
    const LEAPYEAR          = 'LEAPYEAR';
    const MEGASECOND        = 'MEGASECOND';
    const MICROSECOND       = 'MICROSECOND';
    const MILLENIUM         = 'MILLENIUM';
    const MILLISECOND       = 'MILLISECOND';
    const MINUTE            = 'MINUTE';
    const MONTH             = 'MONTH';
    const NANOSECOND        = 'NANOSECOND';
    const PETASECOND        = 'PETASECOND';
    const PICOSECOND        = 'PICOSECOND';
    const QUARTER           = 'QUARTER';
    const SECOND            = 'SECOND';
    const SHAKE             = 'SHAKE';
    const SIDEREAL_YEAR     = 'SYNODIC_MONTH';
    const TERASECOND        = 'TERASECOND';
    const TROPICAL_YEAR     = 'TROPIC_YEAR';
    const WEEK              = 'WEEK';
    const YEAR              = 'YEAR';

    /**
     * Calculations for all time units
     *
     * @var array
     */
    protected $_units = array(
        'ANOMALISTIC_YEAR'  => array('31558432', 'anomalistic year'),
        'ATTOSECOND'        => array('1.0e-18', 'as'),
        'CENTURY'           => array('3153600000', 'century'),
        'DAY'               => array('86400', 'day'),
        'DECADE'            => array('315360000', 'decade'),
        'DRACONIC_YEAR'     => array('29947974', 'draconic year'),
        'EXASECOND'         => array('1.0e+18', 'Es'),
        'FEMTOSECOND'       => array('1.0e-15', 'fs'),
        'FORTNIGHT'         => array('1209600', 'fortnight'),
        'GAUSSIAN_YEAR'     => array('31558196', 'gaussian year'),
        'GIGASECOND'        => array('1.0e+9', 'Gs'),
        'GREAT_YEAR'        => array(array('*' => '31536000', '*' => '25700'), 'great year'),
        'GREGORIAN_YEAR'    => array('31536000', 'year'),
        'HOUR'              => array('3600', 'h'),
        'JULIAN_YEAR'       => array('31557600', 'a'),
        'KILOSECOND'        => array('1000', 'ks'),
        'LEAPYEAR'          => array('31622400', 'year'),
        'MEGASECOND'        => array('1000000', 'Ms'),
        'MICROSECOND'       => array('0.000001', 'µs'),
        'MILLENIUM'         => array('31536000000', 'millenium'),
        'MILLISECOND'       => array('0.001', 'ms'),
        'MINUTE'            => array('60', 'min'),
        'MONTH'             => array('2628600', 'month'),
        'NANOSECOND'        => array('1.0e-9', 'ns'),
        'PETASECOND'        => array('1.0e+15', 'Ps'),
        'PICOSECOND'        => array('1.0e-12', 'ps'),
        'QUARTER'           => array('7884000', 'quarter'),
        'SECOND'            => array('1', 's'),
        'SHAKE'             => array('1.0e-9', 'shake'),
        'SIDEREAL_YEAR'     => array('31558149.7676', 'sidereal year'),
        'TERASECOND'        => array('1.0e+12', 'Ts'),
        'TROPICAL_YEAR'     => array('31556925', 'tropical year'),
        'WEEK'              => array('604800', 'week'),
        'YEAR'              => array('31536000', 'year'),
        'STANDARD'          => 'SECOND'
    );
}
PKpG[�|="33Measure/Flow/Mass.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Mass.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling flow mass conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Flow_Mass
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Flow_Mass extends Zend_Measure_Abstract
{
    const STANDARD = 'KILOGRAM_PER_SECOND';

    const CENTIGRAM_PER_DAY    = 'CENTIGRAM_PER_DAY';
    const CENTIGRAM_PER_HOUR   = 'CENTIGRAM_PER_HOUR';
    const CENTIGRAM_PER_MINUTE = 'CENTIGRAM_PER_MINUTE';
    const CENTIGRAM_PER_SECOND = 'CENTIGRAM_PER_SECOND';
    const GRAM_PER_DAY         = 'GRAM_PER_DAY';
    const GRAM_PER_HOUR        = 'GRAM_PER_HOUR';
    const GRAM_PER_MINUTE      = 'GRAM_PER_MINUTE';
    const GRAM_PER_SECOND      = 'GRAM_PER_SECOND';
    const KILOGRAM_PER_DAY     = 'KILOGRAM_PER_DAY';
    const KILOGRAM_PER_HOUR    = 'KILOGRAM_PER_HOUR';
    const KILOGRAM_PER_MINUTE  = 'KILOGRAM_PER_MINUTE';
    const KILOGRAM_PER_SECOND  = 'KILOGRAM_PER_SECOND';
    const MILLIGRAM_PER_DAY    = 'MILLIGRAM_PER_DAY';
    const MILLIGRAM_PER_HOUR   = 'MILLIGRAM_PER_HOUR';
    const MILLIGRAM_PER_MINUTE = 'MILLIGRAM_PER_MINUTE';
    const MILLIGRAM_PER_SECOND = 'MILLIGRAM_PER_SECOND';
    const OUNCE_PER_DAY        = 'OUNCE_PER_DAY';
    const OUNCE_PER_HOUR       = 'OUNCE_PER_HOUR';
    const OUNCE_PER_MINUTE     = 'OUNCE_PER_MINUTE';
    const OUNCE_PER_SECOND     = 'OUNCE_PER_SECOND';
    const POUND_PER_DAY        = 'POUND_PER_DAY';
    const POUND_PER_HOUR       = 'POUND_PER_HOUR';
    const POUND_PER_MINUTE     = 'POUND_PER_MINUTE';
    const POUND_PER_SECOND     = 'POUND_PER_SECOND';
    const TON_LONG_PER_DAY     = 'TON_LONG_PER_DAY';
    const TON_LONG_PER_HOUR    = 'TON_LONG_PER_HOUR';
    const TON_LONG_PER_MINUTE  = 'TON_LONG_PER_MINUTE';
    const TON_LONG_PER_SECOND  = 'TON_LONG_PER_SECOND';
    const TON_PER_DAY          = 'TON_PER_DAY';
    const TON_PER_HOUR         = 'TON_PER_HOUR';
    const TON_PER_MINUTE       = 'TON_PER_MINUTE';
    const TON_PER_SECOND       = 'TON_PER_SECOND';
    const TON_SHORT_PER_DAY    = 'TON_SHORT_PER_DAY';
    const TON_SHORT_PER_HOUR   = 'TON_SHORT_PER_HOUR';
    const TON_SHORT_PER_MINUTE = 'TON_SHORT_PER_MINUTE';
    const TON_SHORT_PER_SECOND = 'TON_SHORT_PER_SECOND';

    /**
     * Calculations for all flow mass units
     *
     * @var array
     */
    protected $_units = array(
        'CENTIGRAM_PER_DAY'    => array(array('' => '0.00001', '/' => '86400'),    'cg/day'),
        'CENTIGRAM_PER_HOUR'   => array(array('' => '0.00001', '/' => '3600'),     'cg/h'),
        'CENTIGRAM_PER_MINUTE' => array(array('' => '0.00001', '/' => '60'),       'cg/m'),
        'CENTIGRAM_PER_SECOND' => array('0.00001',                               'cg/s'),
        'GRAM_PER_DAY'         => array(array('' => '0.001', '/' => '86400'),      'g/day'),
        'GRAM_PER_HOUR'        => array(array('' => '0.001', '/' => '3600'),       'g/h'),
        'GRAM_PER_MINUTE'      => array(array('' => '0.001', '/' => '60'),         'g/m'),
        'GRAM_PER_SECOND'      => array('0.001',                                 'g/s'),
        'KILOGRAM_PER_DAY'     => array(array('' => '1', '/' => '86400'),          'kg/day'),
        'KILOGRAM_PER_HOUR'    => array(array('' => '1', '/' => '3600'),           'kg/h'),
        'KILOGRAM_PER_MINUTE'  => array(array('' => '1', '/' => '60'),             'kg/m'),
        'KILOGRAM_PER_SECOND'  => array('1',                                     'kg/s'),
        'MILLIGRAM_PER_DAY'    => array(array('' => '0.000001', '/' => '86400'),   'mg/day'),
        'MILLIGRAM_PER_HOUR'   => array(array('' => '0.000001', '/' => '3600'),    'mg/h'),
        'MILLIGRAM_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'),      'mg/m'),
        'MILLIGRAM_PER_SECOND' => array('0.000001',                              'mg/s'),
        'OUNCE_PER_DAY'        => array(array('' => '0.0283495', '/' => '86400'),  'oz/day'),
        'OUNCE_PER_HOUR'       => array(array('' => '0.0283495', '/' => '3600'),   'oz/h'),
        'OUNCE_PER_MINUTE'     => array(array('' => '0.0283495', '/' => '60'),     'oz/m'),
        'OUNCE_PER_SECOND'     => array('0.0283495',                             'oz/s'),
        'POUND_PER_DAY'        => array(array('' => '0.453592', '/' => '86400'),   'lb/day'),
        'POUND_PER_HOUR'       => array(array('' => '0.453592', '/' => '3600'),    'lb/h'),
        'POUND_PER_MINUTE'     => array(array('' => '0.453592', '/' => '60'),      'lb/m'),
        'POUND_PER_SECOND'     => array('0.453592',                              'lb/s'),
        'TON_LONG_PER_DAY'     => array(array('' => '1016.04608', '/' => '86400'), 't/day'),
        'TON_LONG_PER_HOUR'    => array(array('' => '1016.04608', '/' => '3600'),  't/h'),
        'TON_LONG_PER_MINUTE'  => array(array('' => '1016.04608', '/' => '60'),    't/m'),
        'TON_LONG_PER_SECOND'  => array('1016.04608',                            't/s'),
        'TON_PER_DAY'          => array(array('' => '1000', '/' => '86400'),       't/day'),
        'TON_PER_HOUR'         => array(array('' => '1000', '/' => '3600'),        't/h'),
        'TON_PER_MINUTE'       => array(array('' => '1000', '/' => '60'),          't/m'),
        'TON_PER_SECOND'       => array('1000',                                  't/s'),
        'TON_SHORT_PER_DAY'    => array(array('' => '907.184', '/' => '86400'),    't/day'),
        'TON_SHORT_PER_HOUR'   => array(array('' => '907.184', '/' => '3600'),     't/h'),
        'TON_SHORT_PER_MINUTE' => array(array('' => '907.184', '/' => '60'),       't/m'),
        'TON_SHORT_PER_SECOND' => array('907.184',                               't/s'),
        'STANDARD'             => 'KILOGRAM_PER_SECOND'
    );
}
PKpG[�7���Measure/Flow/Mole.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Mole.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling flow mole conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Flow_Mole
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Flow_Mole extends Zend_Measure_Abstract
{
    const STANDARD = 'MOLE_PER_SECOND';

    const CENTIMOLE_PER_DAY    = 'CENTIMOLE_PER_DAY';
    const CENTIMOLE_PER_HOUR   = 'CENTIMOLE_PER_HOUR';
    const CENTIMOLE_PER_MINUTE = 'CENTIMOLE_PER_MINUTE';
    const CENTIMOLE_PER_SECOND = 'CENTIMOLE_PER_SECOND';
    const MEGAMOLE_PER_DAY     = 'MEGAMOLE_PER_DAY';
    const MEGAMOLE_PER_HOUR    = 'MEGAMOLE_PER_HOUR';
    const MEGAMOLE_PER_MINUTE  = 'MEGAMOLE_PER_MINUTE';
    const MEGAMOLE_PER_SECOND  = 'MEGAMOLE_PER_SECOND';
    const MICROMOLE_PER_DAY    = 'MICROMOLE_PER_DAY';
    const MICROMOLE_PER_HOUR   = 'MICROMOLE_PER_HOUR';
    const MICROMOLE_PER_MINUTE = 'MICROMOLE_PER_MINUTE';
    const MICROMOLE_PER_SECOND = 'MICROMOLE_PER_SECOND';
    const MILLIMOLE_PER_DAY    = 'MILLIMOLE_PER_DAY';
    const MILLIMOLE_PER_HOUR   = 'MILLIMOLE_PER_HOUR';
    const MILLIMOLE_PER_MINUTE = 'MILLIMOLE_PER_MINUTE';
    const MILLIMOLE_PER_SECOND = 'MILLIMOLE_PER_SECOND';
    const MOLE_PER_DAY         = 'MOLE_PER_DAY';
    const MOLE_PER_HOUR        = 'MOLE_PER_HOUR';
    const MOLE_PER_MINUTE      = 'MOLE_PER_MINUTE';
    const MOLE_PER_SECOND      = 'MOLE_PER_SECOND';

    /**
     * Calculations for all flow mole units
     *
     * @var array
     */
    protected $_units = array(
        'CENTIMOLE_PER_DAY'    => array(array('' => '0.01', '/' => '86400'),     'cmol/day'),
        'CENTIMOLE_PER_HOUR'   => array(array('' => '0.01', '/' => '3600'),      'cmol/h'),
        'CENTIMOLE_PER_MINUTE' => array(array('' => '0.01', '/' => '60'),        'cmol/m'),
        'CENTIMOLE_PER_SECOND' => array('0.01',     'cmol/s'),
        'MEGAMOLE_PER_DAY'     => array(array('' => '1000000', '/' => '86400'),  'Mmol/day'),
        'MEGAMOLE_PER_HOUR'    => array(array('' => '1000000', '/' => '3600'),   'Mmol/h'),
        'MEGAMOLE_PER_MINUTE'  => array(array('' => '1000000', '/' => '60'),     'Mmol/m'),
        'MEGAMOLE_PER_SECOND'  => array('1000000',  'Mmol/s'),
        'MICROMOLE_PER_DAY'    => array(array('' => '0.000001', '/' => '86400'), 'µmol/day'),
        'MICROMOLE_PER_HOUR'   => array(array('' => '0.000001', '/' => '3600'),  'µmol/h'),
        'MICROMOLE_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'),    'µmol/m'),
        'MICROMOLE_PER_SECOND' => array('0.000001', 'µmol/s'),
        'MILLIMOLE_PER_DAY'    => array(array('' => '0.001', '/' => '86400'),    'mmol/day'),
        'MILLIMOLE_PER_HOUR'   => array(array('' => '0.001', '/' => '3600'),     'mmol/h'),
        'MILLIMOLE_PER_MINUTE' => array(array('' => '0.001', '/' => '60'),       'mmol/m'),
        'MILLIMOLE_PER_SECOND' => array('0.001',    'mmol/s'),
        'MOLE_PER_DAY'         => array(array('' => '1', '/' => '86400'),        'mol/day'),
        'MOLE_PER_HOUR'        => array(array('' => '1', '/' => '3600'),         'mol/h'),
        'MOLE_PER_MINUTE'      => array(array('' => '1', '/' => '60'),           'mol/m'),
        'MOLE_PER_SECOND'      => array('1',        'mol/s'),
        'STANDARD'             => 'MOLE_PER_SECOND'
    );
}
PKpG[^��^~^~Measure/Flow/Volume.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Measure
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Volume.php 9508 2008-05-23 10:56:41Z thomas $
 */

/**
 * Implement needed classes
 */
require_once 'Zend/Measure/Exception.php';
require_once 'Zend/Measure/Abstract.php';
require_once 'Zend/Locale.php';

/**
 * Class for handling flow volume conversions
 *
 * @category   Zend
 * @package    Zend_Measure
 * @subpackage Zend_Measure_Flow_Volume
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Measure_Flow_Volume extends Zend_Measure_Abstract
{
    const STANDARD = 'CUBIC_METER_PER_SECOND';

    const ACRE_FOOT_PER_DAY              = 'ACRE_FOOT_PER_DAY';
    const ACRE_FOOT_PER_HOUR             = 'ACRE_FOOT_PER_HOUR';
    const ACRE_FOOT_PER_MINUTE           = 'ACRE_FOOT_PER_MINUTE';
    const ACRE_FOOT_PER_SECOND           = 'ACRE_FOOT_PER_SECOND';
    const ACRE_FOOT_SURVEY_PER_DAY       = 'ACRE_FOOT_SURVEY_PER_DAY';
    const ACRE_FOOT_SURVEY_PER_HOUR      = 'ACRE_FOOT_SURVEY_PER_HOUR';
    const ACRE_FOOT_SURVEY_PER_MINUTE    = 'ACRE_FOOT_SURVEY_PER_MINUTE';
    const ACRE_FOOT_SURVEY_PER_SECOND    = 'ACRE_FOOT_SURVEY_PER_SECOND';
    const ACRE_INCH_PER_DAY              = 'ACRE_INCH_PER_DAY';
    const ACRE_INCH_PER_HOUR             = 'ACRE_INCH_PER_HOUR';
    const ACRE_INCH_PER_MINUTE           = 'ACRE_INCH_PER_MINUTE';
    const ACRE_INCH_PER_SECOND           = 'ACRE_INCH_PER_SECOND';
    const ACRE_INCH_SURVEY_PER_DAY       = 'ACRE_INCH_SURVEY_PER_DAY';
    const ACRE_INCH_SURVEY_PER_HOUR      = 'ACRE_INCH_SURVEY_PER_HOUR';
    const ACRE_INCH_SURVEY_PER_MINUTE    = 'ACRE_INCH_SURVEY_PER_MINUTE';
    const ACRE_INCH_SURVEY_PER_SECOND    = 'ACRE_INCH_SURVEY_PER_SECOND';
    const BARREL_PETROLEUM_PER_DAY       = 'BARREL_PETROLEUM_PER_DAY';
    const BARREL_PETROLEUM_PER_HOUR      = 'BARREL_PETROLEUM_PER_HOUR';
    const BARREL_PETROLEUM_PER_MINUTE    = 'BARREL_PETROLEUM_PER_MINUTE';
    const BARREL_PETROLEUM_PER_SECOND    = 'BARREL_PETROLEUM_PER_SECOND';
    const BARREL_PER_DAY                 = 'BARREL_PER_DAY';
    const BARREL_PER_HOUR                = 'BARREL_PER_HOUR';
    const BARREL_PER_MINUTE              = 'BARREL_PER_MINUTE';
    const BARREL_PER_SECOND              = 'BARREL_PER_SECOND';
    const BARREL_US_PER_DAY              = 'BARREL_US_PER_DAY';
    const BARREL_US_PER_HOUR             = 'BARREL_US_PER_HOUR';
    const BARREL_US_PER_MINUTE           = 'BARREL_US_PER_MINUTE';
    const BARREL_US_PER_SECOND           = 'BARREL_US_PER_SECOND';
    const BARREL_WINE_PER_DAY            = 'BARREL_WINE_PER_DAY';
    const BARREL_WINE_PER_HOUR           = 'BARREL_WINE_PER_HOUR';
    const BARREL_WINE_PER_MINUTE         = 'BARREL_WINE_PER_MINUTE';
    const BARREL_WINE_PER_SECOND         = 'BARREL_WINE_PER_SECOND';
    const BARREL_BEER_PER_DAY            = 'BARREL_BEER_PER_DAY';
    const BARREL_BEER_PER_HOUR           = 'BARREL_BEER_PER_HOUR';
    const BARREL_BEER_PER_MINUTE         = 'BARREL_BEER_PER_MINUTE';
    const BARREL_BEER_PER_SECOND         = 'BARREL_BEER_PER_SECOND';
    const BILLION_CUBIC_FOOT_PER_DAY     = 'BILLION_CUBIC_FOOT_PER_DAY';
    const BILLION_CUBIC_FOOT_PER_HOUR    = 'BILLION_CUBIC_FOOT_PER_HOUR';
    const BILLION_CUBIC_FOOT_PER_MINUTE  = 'BILLION_CUBIC_FOOT_PER_MINUTE';
    const BILLION_CUBIC_FOOT_PER_SECOND  = 'BILLION_CUBIC_FOOT_PER_SECOND';
    const CENTILITER_PER_DAY             = 'CENTILITER_PER_DAY';
    const CENTILITER_PER_HOUR            = 'CENTILITER_PER_HOUR';
    const CENTILITER_PER_MINUTE          = 'CENTILITER_PER_MINUTE';
    const CENTILITER_PER_SECOND          = 'CENTILITER_PER_SECOND';
    const CUBEM_PER_DAY                  = 'CUBEM_PER_DAY';
    const CUBEM_PER_HOUR                 = 'CUBEM_PER_HOUR';
    const CUBEM_PER_MINUTE               = 'CUBEM_PER_MINUTE';
    const CUBEM_PER_SECOND               = 'CUBEM_PER_SECOND';
    const CUBIC_CENTIMETER_PER_DAY       = 'CUBIC_CENTIMETER_PER_DAY';
    const CUBIC_CENTIMETER_PER_HOUR      = 'CUBIC_CENTIMETER_PER_HOUR';
    const CUBIC_CENTIMETER_PER_MINUTE    = 'CUBIC_CENTIMETER_PER_MINUTE';
    const CUBIC_CENTIMETER_PER_SECOND    = 'CUBIC_CENTIMETER_PER_SECOND';
    const CUBIC_DECIMETER_PER_DAY        = 'CUBIC_DECIMETER_PER_DAY';
    const CUBIC_DECIMETER_PER_HOUR       = 'CUBIC_DECIMETER_PER_HOUR';
    const CUBIC_DECIMETER_PER_MINUTE     = 'CUBIC_DECIMETER_PER_MINUTE';
    const CUBIC_DECIMETER_PER_SECOND     = 'CUBIC_DECIMETER_PER_SECOND';
    const CUBIC_DEKAMETER_PER_DAY        = 'CUBIC_DEKAMETER_PER_DAY';
    const CUBIC_DEKAMETER_PER_HOUR       = 'CUBIC_DEKAMETER_PER_HOUR';
    const CUBIC_DEKAMETER_PER_MINUTE     = 'CUBIC_DEKAMETER_PER_MINUTE';
    const CUBIC_DEKAMETER_PER_SECOND     = 'CUBIC_DEKAMETER_PER_SECOND';
    const CUBIC_FOOT_PER_DAY             = 'CUBIC_FOOT_PER_DAY';
    const CUBIC_FOOT_PER_HOUR            = 'CUBIC_FOOT_PER_HOUR';
    const CUBIC_FOOT_PER_MINUTE          = 'CUBIC_FOOT_PER_MINUTE';
    const CUBIC_FOOT_PER_SECOND          = 'CUBIC_FOOT_PER_SECOND';
    const CUBIC_INCH_PER_DAY             = 'CUBIC_INCH_PER_DAY';
    const CUBIC_INCH_PER_HOUR            = 'CUBIC_INCH_PER_HOUR';
    const CUBIC_INCH_PER_MINUTE          = 'CUBIC_INCH_PER_MINUTE';
    const CUBIC_INCH_PER_SECOND          = 'CUBIC_INCH_PER_SECOND';
    const CUBIC_KILOMETER_PER_DAY        = 'CUBIC_KILOMETER_PER_DAY';
    const CUBIC_KILOMETER_PER_HOUR       = 'CUBIC_KILOMETER_PER_HOUR';
    const CUBIC_KILOMETER_PER_MINUTE     = 'CUBIC_KILOMETER_PER_MINUTE';
    const CUBIC_KILOMETER_PER_SECOND     = 'CUBIC_KILOMETER_PER_SECOND';
    const CUBIC_METER_PER_DAY            = 'CUBIC_METER_PER_DAY';
    const CUBIC_METER_PER_HOUR           = 'CUBIC_METER_PER_HOUR';
    const CUBIC_METER_PER_MINUTE         = 'CUBIC_METER_PER_MINUTE';
    const CUBIC_METER_PER_SECOND         = 'CUBIC_METER_PER_SECOND';
    const CUBIC_MILE_PER_DAY             = 'CUBIC_MILE_PER_DAY';
    const CUBIC_MILE_PER_HOUR            = 'CUBIC_MILE_PER_HOUR';
    const CUBIC_MILE_PER_MINUTE          = 'CUBIC_MILE_PER_MINUTE';
    const CUBIC_MILE_PER_SECOND          = 'CUBIC_MILE_PER_SECOND';
    const CUBIC_MILLIMETER_PER_DAY       = 'CUBIC_MILLIMETER_PER_DAY';
    const CUBIC_MILLIMETER_PER_HOUR      = 'CUBIC_MILLIMETER_PER_HOUR';
    const CUBIC_MILLIMETER_PER_MINUTE    = 'CUBIC_MILLIMETER_PER_MINUTE';
    const CUBIC_MILLIMETER_PER_SECOND    = 'CUBIC_MILLIMETER_PER_SECOND';
    const CUBIC_YARD_PER_DAY             = 'CUBIC_YARD_PER_DAY';
    const CUBIC_YARD_PER_HOUR            = 'CUBIC_YARD_PER_HOUR';
    const CUBIC_YARD_PER_MINUTE          = 'CUBIC_YARD_PER_MINUTE';
    const CUBIC_YARD_PER_SECOND          = 'CUBIC_YARD_PER_SECOND';
    const CUSEC                          = 'CUSEC';
    const DECILITER_PER_DAY              = 'DECILITER_PER_DAY';
    const DECILITER_PER_HOUR             = 'DECILITER_PER_HOUR';
    const DECILITER_PER_MINUTE           = 'DECILITER_PER_MINUTE';
    const DECILITER_PER_SECOND           = 'DECILITER_PER_SECOND';
    const DEKALITER_PER_DAY              = 'DEKALITER_PER_DAY';
    const DEKALITER_PER_HOUR             = 'DEKALITER_PER_HOUR';
    const DEKALITER_PER_MINUTE           = 'DEKALITER_PER_MINUTE';
    const DEKALITER_PER_SECOND           = 'DEKALITER_PER_SECOND';
    const GALLON_PER_DAY                 = 'GALLON_PER_DAY';
    const GALLON_PER_HOUR                = 'GALLON_PER_HOUR';
    const GALLON_PER_MINUTE              = 'GALLON_PER_MINUTE';
    const GALLON_PER_SECOND              = 'GALLON_PER_SECOND';
    const GALLON_US_PER_DAY              = 'GALLON_US_PER_DAY';
    const GALLON_US_PER_HOUR             = 'GALLON_US_PER_HOUR';
    const GALLON_US_PER_MINUTE           = 'GALLON_US_PER_MINUTE';
    const GALLON_US_PER_SECOND           = 'GALLON_US_PER_SECOND';
    const HECTARE_METER_PER_DAY          = 'HECTARE_METER_PER_DAY';
    const HECTARE_METER_PER_HOUR         = 'HECTARE_METER_PER_HOUR';
    const HECTARE_METER_PER_MINUTE       = 'HECTARE_METER_PER_MINUTE';
    const HECTARE_METER_PER_SECOND       = 'HECTARE_METER_PER_SECOND';
    const HECTOLITER_PER_DAY             = 'HECTOLITER_PER_DAY';
    const HECTOLITER_PER_HOUR            = 'HECTOLITER_PER_HOUR';
    const HECTOLITER_PER_MINUTE          = 'HECTOLITER_PER_MINUTE';
    const HECTOLITER_PER_SECOND          = 'HECTOLITER_PER_SECOND';
    const KILOLITER_PER_DAY              = 'KILOLITER_PER_DAY';
    const KILOLITER_PER_HOUR             = 'KILOLITER_PER_HOUR';
    const KILOLITER_PER_MINUTE           = 'KILOLITER_PER_MINUTE';
    const KILOLITER_PER_SECOND           = 'KILOLITER_PER_SECOND';
    const LAMBDA_PER_DAY                 = 'LAMBDA_PER_DAY';
    const LAMBDA_PER_HOUR                = 'LAMBDA_PER_HOUR';
    const LAMBDA_PER_MINUTE              = 'LAMBDA_PER_MINUTE';
    const LAMBDA_PER_SECOND              = 'LAMBDA_PER_SECOND';
    const LITER_PER_DAY                  = 'LITER_PER_DAY';
    const LITER_PER_HOUR                 = 'LITER_PER_HOUR';
    const LITER_PER_MINUTE               = 'LITER_PER_MINUTE';
    const LITER_PER_SECOND               = 'LITER_PER_SECOND';
    const MILLILITER_PER_DAY             = 'MILLILITER_PER_DAY';
    const MILLILITER_PER_HOUR            = 'MILLILITER_PER_HOUR';
    const MILLILITER_PER_MINUTE          = 'MILLILITER_PER_MINUTE';
    const MILLILITER_PER_SECOND          = 'MILLILITER_PER_SECOND';
    const MILLION_ACRE_FOOT_PER_DAY      = 'MILLION_ACRE_FOOT_PER_DAY';
    const MILLION_ACRE_FOOT_PER_HOUR     = 'MILLION_ACRE_FOOT_PER_HOUR';
    const MILLION_ACRE_FOOT_PER_MINUTE   = 'MILLION_ACRE_FOOT_PER_MINUTE';
    const MILLION_ACRE_FOOT_PER_SECOND   = 'MILLION_ACRE_FOOT_PER_SECOND';
    const MILLION_CUBIC_FOOT_PER_DAY     = 'MILLION_CUBIC_FOOT_PER_DAY';
    const MILLION_CUBIC_FOOT_PER_HOUR    = 'MILLION_CUBIC_FOOT_PER_HOUR';
    const MILLION_CUBIC_FOOT_PER_MINUTE  = 'MILLION_CUBIC_FOOT_PER_MINUTE';
    const MILLION_CUBIC_FOOT_PER_SECOND  = 'MILLION_CUBIC_FOOT_PER_SECOND';
    const MILLION_GALLON_PER_DAY         = 'MILLION_GALLON_PER_DAY';
    const MILLION_GALLON_PER_HOUR        = 'MILLION_GALLON_PER_HOUR';
    const MILLION_GALLON_PER_MINUTE      = 'MILLION_GALLON_PER_MINUTE';
    const MILLION_GALLON_PER_SECOND      = 'MILLION_GALLON_PER_SECOND';
    const MILLION_GALLON_US_PER_DAY      = 'MILLION_GALLON_US_PER_DAY';
    const MILLION_GALLON_US_PER_HOUR     = 'MILLION_GALLON_US_PER_HOUR';
    const MILLION_GALLON_US_PER_MINUTE   = 'MILLION_GALLON_US_PER_MINUTE';
    const MILLION_GALLON_US_PER_SECOND   = 'MILLION_GALLON_US_PER_SECOND';
    const MINERS_INCH_AZ                 = 'MINERS_INCH_AZ';
    const MINERS_INCH_CA                 = 'MINERS_INCH_CA';
    const MINERS_INCH_OR                 = 'MINERS_INCH_OR';
    const MINERS_INCH_CO                 = 'MINERS_INCH_CO';
    const MINERS_INCH_ID                 = 'MINERS_INCH_ID';
    const MINERS_INCH_WA                 = 'MINERS_INCH_WA';
    const MINERS_INCH_NM                 = 'MINERS_INCH_NM';
    const OUNCE_PER_DAY                  = 'OUNCE_PER_DAY';
    const OUNCE_PER_HOUR                 = 'OUNCE_PER_HOUR';
    const OUNCE_PER_MINUTE               = 'OUNCE_PER_MINUTE';
    const OUNCE_PER_SECOND               = 'OUNCE_PER_SECOND';
    const OUNCE_US_PER_DAY               = 'OUNCE_US_PER_DAY';
    const OUNCE_US_PER_HOUR              = 'OUNCE_US_PER_HOUR';
    const OUNCE_US_PER_MINUTE            = 'OUNCE_US_PER_MINUTE';
    const OUNCE_US_PER_SECOND            = 'OUNCE_US_PER_SECOND';
    const PETROGRAD_STANDARD_PER_DAY     = 'PETROGRAD_STANDARD_PER_DAY';
    const PETROGRAD_STANDARD_PER_HOUR    = 'PETROGRAD_STANDARD_PER_HOUR';
    const PETROGRAD_STANDARD_PER_MINUTE  = 'PETROGRAD_STANDARD_PER_MINUTE';
    const PETROGRAD_STANDARD_PER_SECOND  = 'PETROGRAD_STANDARD_PER_SECOND';
    const STERE_PER_DAY                  = 'STERE_PER_DAY';
    const STERE_PER_HOUR                 = 'STERE_PER_HOUR';
    const STERE_PER_MINUTE               = 'STERE_PER_MINUTE';
    const STERE_PER_SECOND               = 'STERE_PER_SECOND';
    const THOUSAND_CUBIC_FOOT_PER_DAY    = 'THOUSAND_CUBIC_FOOT_PER_DAY';
    const THOUSAND_CUBIC_FOOT_PER_HOUR   = 'THOUSAND_CUBIC_FOOT_PER_HOUR';
    const THOUSAND_CUBIC_FOOT_PER_MINUTE = 'THOUSAND_CUBIC_FOOT_PER_MINUTE';
    const THOUSAND_CUBIC_FOOT_PER_SECOND = 'THOUSAND_CUBIC_FOOT_PER_SECOND';
    const TRILLION_CUBIC_FOOT_PER_DAY    = 'TRILLION_CUBIC_FOOT_PER_DAY';
    const TRILLION_CUBIC_FOOT_PER_HOUR   = 'TRILLION_CUBIC_FOOT_PER_HOUR';
    const TRILLION_CUBIC_FOOT_PER_MINUTE = 'TRILLION_CUBIC_FOOT_PER_MINUTE';
    const TRILLION_CUBIC_FOOT_PER_SECOND = 'TRILLION_CUBIC_FOOT_PER_';

    /**
     * Calculations for all flow volume units
     *
     * @var array
     */
    protected $_units = array(
        'ACRE_FOOT_PER_DAY'           => array(array('' => '1233.48184', '/' => '86400'),      'ac ft/day'),
        'ACRE_FOOT_PER_HOUR'          => array(array('' => '1233.48184', '/' => '3600'),       'ac ft/h'),
        'ACRE_FOOT_PER_MINUTE'        => array(array('' => '1233.48184', '/' => '60'),         'ac ft/m'),
        'ACRE_FOOT_PER_SECOND'        => array('1233.48184',                                 'ac ft/s'),
        'ACRE_FOOT_SURVEY_PER_DAY'    => array(array('' => '1233.48924', '/' => '86400'),      'ac ft/day'),
        'ACRE_FOOT_SURVEY_PER_HOUR'   => array(array('' => '1233.48924', '/' => '3600'),       'ac ft/h'),
        'ACRE_FOOT_SURVEY_PER_MINUTE' => array(array('' => '1233.48924', '/' => '60'),         'ac ft/m'),
        'ACRE_FOOT_SURVEY_PER_SECOND' => array('1233.48924',                                 'ac ft/s'),
        'ACRE_INCH_PER_DAY'           => array(array('' => '1233.48184', '/' => '1036800'),    'ac in/day'),
        'ACRE_INCH_PER_HOUR'          => array(array('' => '1233.48184', '/' => '43200'),      'ac in/h'),
        'ACRE_INCH_PER_MINUTE'        => array(array('' => '1233.48184', '/' => '720'),        'ac in/m'),
        'ACRE_INCH_PER_SECOND'        => array(array('' => '1233.48184', '/' => '12'),         'ac in/s'),
        'ACRE_INCH_SURVEY_PER_DAY'    => array(array('' => '1233.48924', '/' => '1036800'),    'ac in/day'),
        'ACRE_INCH_SURVEY_PER_HOUR'   => array(array('' => '1233.48924', '/' => '43200'),      'ac in/h'),
        'ACRE_INCH_SURVEY_PER_MINUTE' => array(array('' => '1233.48924', '/' => '720'),        'ac in /m'),
        'ACRE_INCH_SURVEY_PER_SECOND' => array(array('' => '1233.48924', '/' => '12'),         'ac in/s'),
        'BARREL_PETROLEUM_PER_DAY'    => array(array('' => '0.1589872956', '/' => '86400'),    'bbl/day'),
        'BARREL_PETROLEUM_PER_HOUR'   => array(array('' => '0.1589872956', '/' => '3600'),     'bbl/h'),
        'BARREL_PETROLEUM_PER_MINUTE' => array(array('' => '0.1589872956', '/' => '60'),       'bbl/m'),
        'BARREL_PETROLEUM_PER_SECOND' => array('0.1589872956',                               'bbl/s'),
        'BARREL_PER_DAY'              => array(array('' => '0.16365924', '/' => '86400'),      'bbl/day'),
        'BARREL_PER_HOUR'             => array(array('' => '0.16365924', '/' => '3600'),       'bbl/h'),
        'BARREL_PER_MINUTE'           => array(array('' => '0.16365924', '/' => '60'),         'bbl/m'),
        'BARREL_PER_SECOND'           => array('0.16365924',                                 'bbl/s'),
        'BARREL_US_PER_DAY'           => array(array('' => '0.1192404717', '/' => '86400'),    'bbl/day'),
        'BARREL_US_PER_HOUR'          => array(array('' => '0.1192404717', '/' => '3600'),     'bbl/h'),
        'BARREL_US_PER_MINUTE'        => array(array('' => '0.1192404717', '/' => '60'),       'bbl/m'),
        'BARREL_US_PER_SECOND'        => array('0.1192404717',                               'bbl/s'),
        'BARREL_WINE_PER_DAY'         => array(array('' => '0.1173477658', '/' => '86400'),    'bbl/day'),
        'BARREL_WINE_PER_HOUR'        => array(array('' => '0.1173477658', '/' => '3600'),     'bbl/h'),
        'BARREL_WINE_PER_MINUTE'      => array(array('' => '0.1173477658', '/' => '60'),       'bbl/m'),
        'BARREL_WINE_PER_SECOND'      => array('0.1173477658',                               'bbl/s'),
        'BARREL_BEER_PER_DAY'         => array(array('' => '0.1173477658', '/' => '86400'),    'bbl/day'),
        'BARREL_BEER_PER_HOUR'        => array(array('' => '0.1173477658', '/' => '3600'),     'bbl/h'),
        'BARREL_BEER_PER_MINUTE'      => array(array('' => '0.1173477658', '/' => '60'),       'bbl/m'),
        'BARREL_BEER_PER_SECOND'      => array('0.1173477658',                               'bbl/s'),
        'BILLION_CUBIC_FOOT_PER_DAY'  => array(array('' => '28316847', '/' => '86400'),        'bn ft³/day'),
        'BILLION_CUBIC_FOOT_PER_HOUR' => array(array('' => '28316847', '/' => '3600'),         'bn ft³/h'),
        'BILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316847', '/' => '60'),         'bn ft³/m'),
        'BILLION_CUBIC_FOOT_PER_SECOND' => array('28316847',                                 'bn ft³/s'),
        'CENTILITER_PER_DAY'          => array(array('' => '0.00001', '/' => '86400'),         'cl/day'),
        'CENTILITER_PER_HOUR'         => array(array('' => '0.00001', '/' => '3600'),          'cl/h'),
        'CENTILITER_PER_MINUTE'       => array(array('' => '0.00001', '/' => '60'),            'cl/m'),
        'CENTILITER_PER_SECOND'       => array('0.00001',                                    'cl/s'),
        'CUBEM_PER_DAY'               => array(array('' => '4168181830', '/' => '86400'),      'cubem/day'),
        'CUBEM_PER_HOUR'              => array(array('' => '4168181830', '/' => '3600'),       'cubem/h'),
        'CUBEM_PER_MINUTE'            => array(array('' => '4168181830', '/' => '60'),         'cubem/m'),
        'CUBEM_PER_SECOND'            => array('4168181830',                                 'cubem/s'),
        'CUBIC_CENTIMETER_PER_DAY'    => array(array('' => '0.000001', '/' => '86400'),        'cm³/day'),
        'CUBIC_CENTIMETER_PER_HOUR'   => array(array('' => '0.000001', '/' => '3600'),         'cm³/h'),
        'CUBIC_CENTIMETER_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'),           'cm³/m'),
        'CUBIC_CENTIMETER_PER_SECOND' => array('0.000001',                                   'cm³/s'),
        'CUBIC_DECIMETER_PER_DAY'     => array(array('' => '0.001', '/' => '86400'),           'dm³/day'),
        'CUBIC_DECIMETER_PER_HOUR'    => array(array('' => '0.001', '/' => '3600'),            'dm³/h'),
        'CUBIC_DECIMETER_PER_MINUTE'  => array(array('' => '0.001', '/' => '60'),              'dm³/m'),
        'CUBIC_DECIMETER_PER_SECOND'  => array('0.001',                                      'dm³/s'),
        'CUBIC_DEKAMETER_PER_DAY'     => array(array('' => '1000', '/' => '86400'),            'dam³/day'),
        'CUBIC_DEKAMETER_PER_HOUR'    => array(array('' => '1000', '/' => '3600'),             'dam³/h'),
        'CUBIC_DEKAMETER_PER_MINUTE'  => array(array('' => '1000', '/' => '60'),               'dam³/m'),
        'CUBIC_DEKAMETER_PER_SECOND'  => array('1000',                                       'dam³/s'),
        'CUBIC_FOOT_PER_DAY'          => array(array('' => '0.028316847', '/' => '86400'),     'ft³/day'),
        'CUBIC_FOOT_PER_HOUR'         => array(array('' => '0.028316847', '/' => '3600'),      'ft³/h'),
        'CUBIC_FOOT_PER_MINUTE'       => array(array('' => '0.028316847', '/' => '60'),        'ft³/m'),
        'CUBIC_FOOT_PER_SECOND'       => array('0.028316847',                                'ft³/s'),
        'CUBIC_INCH_PER_DAY'          => array(array('' => '0.028316847', '/' => '149299200'), 'in³/day'),
        'CUBIC_INCH_PER_HOUR'         => array(array('' => '0.028316847', '/' => '6220800'),   'in³/h'),
        'CUBIC_INCH_PER_MINUTE'       => array(array('' => '0.028316847', '/' => '103680'),    'in³/m'),
        'CUBIC_INCH_PER_SECOND'       => array('0.028316847',                                'in³/s'),
        'CUBIC_KILOMETER_PER_DAY'     => array(array('' => '1000000000', '/' => '86400'),      'km³/day'),
        'CUBIC_KILOMETER_PER_HOUR'    => array(array('' => '1000000000', '/' => '3600'),       'km³/h'),
        'CUBIC_KILOMETER_PER_MINUTE'  => array(array('' => '1000000000', '/' => '60'),         'km³/m'),
        'CUBIC_KILOMETER_PER_SECOND'  => array('1000000000',                                 'km³/s'),
        'CUBIC_METER_PER_DAY'         => array(array('' => '1', '/' => '86400'),               'm³/day'),
        'CUBIC_METER_PER_HOUR'        => array(array('' => '1', '/' => '3600'),                'm³/h'),
        'CUBIC_METER_PER_MINUTE'      => array(array('' => '1', '/' => '60'),                  'm³/m'),
        'CUBIC_METER_PER_SECOND'      => array('1',                                          'm³/s'),
        'CUBIC_MILE_PER_DAY'          => array(array('' => '4168181830', '/' => '86400'),      'mi³/day'),
        'CUBIC_MILE_PER_HOUR'         => array(array('' => '4168181830', '/' => '3600'),       'mi³/h'),
        'CUBIC_MILE_PER_MINUTE'       => array(array('' => '4168181830', '/' => '60'),         'mi³/m'),
        'CUBIC_MILE_PER_SECOND'       => array('4168181830',                                 'mi³/s'),
        'CUBIC_MILLIMETER_PER_DAY'    => array(array('' => '0.000000001', '/' => '86400'),     'mm³/day'),
        'CUBIC_MILLIMETER_PER_HOUR'   => array(array('' => '0.000000001', '/' => '3600'),      'mm³/h'),
        'CUBIC_MILLIMETER_PER_MINUTE' => array(array('' => '0.000000001', '/' => '60'),        'mm³/m'),
        'CUBIC_MILLIMETER_PER_SECOND' => array('0.000000001',                                'mm³/s'),
        'CUBIC_YARD_PER_DAY'          => array(array('' => '0.764554869', '/' => '86400'),     'yd³/day'),
        'CUBIC_YARD_PER_HOUR'         => array(array('' => '0.764554869', '/' => '3600'),      'yd³/h'),
        'CUBIC_YARD_PER_MINUTE'       => array(array('' => '0.764554869', '/' => '60'),        'yd³/m'),
        'CUBIC_YARD_PER_SECOND'       => array('0.764554869',                                'yd³/s'),
        'CUSEC'                       => array('0.028316847',                                'cusec'),
        'DECILITER_PER_DAY'           => array(array('' => '0.0001', '/' => '86400'),          'dl/day'),
        'DECILITER_PER_HOUR'          => array(array('' => '0.0001', '/' => '3600'),           'dl/h'),
        'DECILITER_PER_MINUTE'        => array(array('' => '0.0001', '/' => '60'),             'dl/m'),
        'DECILITER_PER_SECOND'        => array('0.0001',                                     'dl/s'),
        'DEKALITER_PER_DAY'           => array(array('' => '0.01', '/' => '86400'),            'dal/day'),
        'DEKALITER_PER_HOUR'          => array(array('' => '0.01', '/' => '3600'),             'dal/h'),
        'DEKALITER_PER_MINUTE'        => array(array('' => '0.01', '/' => '60'),               'dal/m'),
        'DEKALITER_PER_SECOND'        => array('0.01',                                       'dal/s'),
        'GALLON_PER_DAY'              => array(array('' => '0.00454609', '/' => '86400'),      'gal/day'),
        'GALLON_PER_HOUR'             => array(array('' => '0.00454609', '/' => '3600'),       'gal/h'),
        'GALLON_PER_MINUTE'           => array(array('' => '0.00454609', '/' => '60'),         'gal/m'),
        'GALLON_PER_SECOND'           => array('0.00454609',                                 'gal/s'),
        'GALLON_US_PER_DAY'           => array(array('' => '0.0037854118', '/' => '86400'),    'gal/day'),
        'GALLON_US_PER_HOUR'          => array(array('' => '0.0037854118', '/' => '3600'),     'gal/h'),
        'GALLON_US_PER_MINUTE'        => array(array('' => '0.0037854118', '/' => '60'),       'gal/m'),
        'GALLON_US_PER_SECOND'        => array('0.0037854118',                               'gal/s'),
        'HECTARE_METER_PER_DAY'       => array(array('' => '10000', '/' => '86400'),           'ha m/day'),
        'HECTARE_METER_PER_HOUR'      => array(array('' => '10000', '/' => '3600'),            'ha m/h'),
        'HECTARE_METER_PER_MINUTE'    => array(array('' => '10000', '/' => '60'),              'ha m/m'),
        'HECTARE_METER_PER_SECOND'    => array('10000',                                      'ha m/s'),
        'HECTOLITER_PER_DAY'          => array(array('' => '0.1', '/' => '86400'),             'hl/day'),
        'HECTOLITER_PER_HOUR'         => array(array('' => '0.1', '/' => '3600'),              'hl/h'),
        'HECTOLITER_PER_MINUTE'       => array(array('' => '0.1', '/' => '60'),                'hl/m'),
        'HECTOLITER_PER_SECOND'       => array('0.1',                                        'hl/s'),
        'KILOLITER_PER_DAY'           => array(array('' => '1', '/' => '86400'),               'kl/day'),
        'KILOLITER_PER_HOUR'          => array(array('' => '1', '/' => '3600'),                'kl/h'),
        'KILOLITER_PER_MINUTE'        => array(array('' => '1', '/' => '60'),                  'kl/m'),
        'KILOLITER_PER_SECOND'        => array('1',                                          'kl/s'),
        'LAMBDA_PER_DAY'              => array(array('' => '0.000000001', '/' => '86400'),     'λ/day'),
        'LAMBDA_PER_HOUR'             => array(array('' => '0.000000001', '/' => '3600'),      'λ/h'),
        'LAMBDA_PER_MINUTE'           => array(array('' => '0.000000001', '/' => '60'),        'λ/m'),
        'LAMBDA_PER_SECOND'           => array('0.000000001',                                'λ/s'),
        'LITER_PER_DAY'               => array(array('' => '0.001', '/' => '86400'),           'l/day'),
        'LITER_PER_HOUR'              => array(array('' => '0.001', '/' => '3600'),            'l/h'),
        'LITER_PER_MINUTE'            => array(array('' => '0.001', '/' => '60'),              'l/m'),
        'LITER_PER_SECOND'            => array('0.001',                                      'l/s'),
        'MILLILITER_PER_DAY'          => array(array('' => '0.000001', '/' => '86400'),        'ml/day'),
        'MILLILITER_PER_HOUR'         => array(array('' => '0.000001', '/' => '3600'),         'ml/h'),
        'MILLILITER_PER_MINUTE'       => array(array('' => '0.000001', '/' => '60'),           'ml/m'),
        'MILLILITER_PER_SECOND'       => array('0.000001',                                   'ml/s'),
        'MILLION_ACRE_FOOT_PER_DAY'   => array(array('' => '1233481840', '/' => '86400'),      'million ac ft/day'),
        'MILLION_ACRE_FOOT_PER_HOUR'  => array(array('' => '1233481840', '/' => '3600'),       'million ac ft/h'),
        'MILLION_ACRE_FOOT_PER_MINUTE'  => array(array('' => '1233481840', '/' => '60'),       'million ac ft/m'),
        'MILLION_ACRE_FOOT_PER_SECOND'  => array('1233481840',                               'million ac ft/s'),
        'MILLION_CUBIC_FOOT_PER_DAY'    => array(array('' => '28316.847', '/' => '86400'),     'million ft³/day'),
        'MILLION_CUBIC_FOOT_PER_HOUR'   => array(array('' => '28316.847', '/' => '3600'),      'million ft³/h'),
        'MILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316.847', '/' => '60'),        'million ft³/m'),
        'MILLION_CUBIC_FOOT_PER_SECOND' => array('28316.847',                                'million ft³/s'),
        'MILLION_GALLON_PER_DAY'      => array(array('' => '4546.09', '/' => '86400'),         'million gal/day'),
        'MILLION_GALLON_PER_HOUR'     => array(array('' => '4546.09', '/' => '3600'),          'million gal/h'),
        'MILLION_GALLON_PER_MINUTE'   => array(array('' => '4546.09', '/' => '60'),            'million gal/m'),
        'MILLION_GALLON_PER_SECOND'   => array('4546.09',                                    'million gal/s'),
        'MILLION_GALLON_US_PER_DAY'   => array(array('' => '3785.4118', '/' => '86400'),       'million gal/day'),
        'MILLION_GALLON_US_PER_HOUR'  => array(array('' => '3785.4118', '/' => '3600'),        'million gal/h'),
        'MILLION_GALLON_US_PER_MINUTE'=> array(array('' => '3785.4118', '/' => '60'),          'million gal/m'),
        'MILLION_GALLON_US_PER_SECOND'=> array('3785.4118',                                  'million gal/s'),
        'MINERS_INCH_AZ'              => array(array('' => '0.0424752705', '/' => '60'),       "miner's inch"),
        'MINERS_INCH_CA'              => array(array('' => '0.0424752705', '/' => '60'),       "miner's inch"),
        'MINERS_INCH_OR'              => array(array('' => '0.0424752705', '/' => '60'),       "miner's inch"),
        'MINERS_INCH_CO'              => array(array('' => '0.0442450734375', '/' => '60'),    "miner's inch"),
        'MINERS_INCH_ID'              => array(array('' => '0.0340687062', '/' => '60'),       "miner's inch"),
        'MINERS_INCH_WA'              => array(array('' => '0.0340687062', '/' => '60'),       "miner's inch"),
        'MINERS_INCH_NM'              => array(array('' => '0.0340687062', '/' => '60'),       "miner's inch"),
        'OUNCE_PER_DAY'               => array(array('' => '0.00454609', '/' => '13824000'),   'oz/day'),
        'OUNCE_PER_HOUR'              => array(array('' => '0.00454609', '/' => '576000'),     'oz/h'),
        'OUNCE_PER_MINUTE'            => array(array('' => '0.00454609', '/' => '9600'),       'oz/m'),
        'OUNCE_PER_SECOND'            => array(array('' => '0.00454609', '/' => '160'),        'oz/s'),
        'OUNCE_US_PER_DAY'            => array(array('' => '0.0037854118', '/' => '11059200'), 'oz/day'),
        'OUNCE_US_PER_HOUR'           => array(array('' => '0.0037854118', '/' => '460800'),   'oz/h'),
        'OUNCE_US_PER_MINUTE'         => array(array('' => '0.0037854118', '/' => '7680'),     'oz/m'),
        'OUNCE_US_PER_SECOND'         => array(array('' => '0.0037854118', '/' => '128'),      'oz/s'),
        'PETROGRAD_STANDARD_PER_DAY'  => array(array('' => '4.672279755', '/' => '86400'),     'petrograd standard/day'),
        'PETROGRAD_STANDARD_PER_HOUR' => array(array('' => '4.672279755', '/' => '3600'),      'petrograd standard/h'),
        'PETROGRAD_STANDARD_PER_MINUTE' => array(array('' => '4.672279755', '/' => '60'),      'petrograd standard/m'),
        'PETROGRAD_STANDARD_PER_SECOND' => array('4.672279755',                              'petrograd standard/s'),
        'STERE_PER_DAY'               => array(array('' => '1', '/' => '86400'),               'st/day'),
        'STERE_PER_HOUR'              => array(array('' => '1', '/' => '3600'),                'st/h'),
        'STERE_PER_MINUTE'            => array(array('' => '1', '/' => '60'),                  'st/m'),
        'STERE_PER_SECOND'            => array('1',                                          'st/s'),
        'THOUSAND_CUBIC_FOOT_PER_DAY' => array(array('' => '28.316847', '/' => '86400'),       'thousand ft³/day'),
        'THOUSAND_CUBIC_FOOT_PER_HOUR'   => array(array('' => '28.316847', '/' => '3600'),     'thousand ft³/h'),
        'THOUSAND_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28.316847', '/' => '60'),       'thousand ft³/m'),
        'THOUSAND_CUBIC_FOOT_PER_SECOND' => array('28.316847',                               'thousand ft³/s'),
        'TRILLION_CUBIC_FOOT_PER_DAY'    => array(array('' => '28316847000', '/' => '86400'),  'trillion ft³/day'),
        'TRILLION_CUBIC_FOOT_PER_HOUR'   => array(array('' => '28316847000', '/' => '3600'),   'trillion ft³/h'),
        'TRILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316847000', '/' => '60'),     'trillion ft³/m'),
        'TRILLION_CUBIC_FOOT_PER_'       => array('28316847000',                             'trillion ft³/s'),
        'STANDARD'                    => 'CUBIC_METER_PER_SECOND'
    );
}
PKpG[Yh���Validate.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Validate.php 8729 2008-03-10 11:44:10Z thomas $
 */


/**
 * @see Zend_Validate_Interface
 */
require_once 'Zend/Validate/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate implements Zend_Validate_Interface
{
    /**
     * Validator chain
     *
     * @var array
     */
    protected $_validators = array();

    /**
     * Array of validation failure messages
     *
     * @var array
     */
    protected $_messages = array();

    /**
     * Array of validation failure message codes
     *
     * @var array
     * @deprecated Since 1.5.0
     */
    protected $_errors = array();

    /**
     * Adds a validator to the end of the chain
     *
     * If $breakChainOnFailure is true, then if the validator fails, the next validator in the chain,
     * if one exists, will not be executed.
     *
     * @param  Zend_Validate_Interface $validator
     * @param  boolean                 $breakChainOnFailure
     * @return Zend_Validate Provides a fluent interface
     */
    public function addValidator(Zend_Validate_Interface $validator, $breakChainOnFailure = false)
    {
        $this->_validators[] = array(
            'instance' => $validator,
            'breakChainOnFailure' => (boolean) $breakChainOnFailure
            );
        return $this;
    }

    /**
     * Returns true if and only if $value passes all validations in the chain
     *
     * Validators are run in the order in which they were added to the chain (FIFO).
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_messages = array();
        $this->_errors   = array();
        $result = true;
        foreach ($this->_validators as $element) {
            $validator = $element['instance'];
            if ($validator->isValid($value)) {
                continue;
            }
            $result = false;
            $messages = $validator->getMessages();
            $this->_messages = array_merge($this->_messages, $messages);
            $this->_errors   = array_merge($this->_errors,   array_keys($messages));
            if ($element['breakChainOnFailure']) {
                break;
            }
        }
        return $result;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns array of validation failure messages
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns array of validation failure message codes
     *
     * @return array
     * @deprecated Since 1.5.0
     */
    public function getErrors()
    {
        return $this->_errors;
    }

    /**
     * @param  mixed    $value
     * @param  string   $classBaseName
     * @param  array    $args          OPTIONAL
     * @param  mixed    $namespaces    OPTIONAL
     * @return boolean
     * @throws Zend_Validate_Exception
     */
    public static function is($value, $classBaseName, array $args = array(), $namespaces = array())
    {
        $namespaces = array_merge(array('Zend_Validate'), (array) $namespaces);
        foreach ($namespaces as $namespace) {
            $className = $namespace . '_' . ucfirst($classBaseName);
            try {
                require_once 'Zend/Loader.php';
                @Zend_Loader::loadClass($className);
                if (class_exists($className, false)) {
                    $class = new ReflectionClass($className);
                    if ($class->implementsInterface('Zend_Validate_Interface')) {
                        if ($class->hasMethod('__construct')) {
                            $object = $class->newInstanceArgs($args);
                        } else {
                            $object = $class->newInstance();
                        }
                        return $object->isValid($value);
                    }
                }
            } catch (Zend_Validate_Exception $ze) {
                // if there is an exception while validating throw it
                throw $ze;
            } catch (Zend_Exception $ze) {
                // fallthrough and continue for missing validation classes
            }
        }
        require_once 'Zend/Validate/Exception.php';
        throw new Zend_Validate_Exception("Validate class not found from basename '$classBaseName'");
    }

}
PKpG[�5��"�"TimeSync.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_TimeSync
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: TimeSync.php 9534 2008-05-26 20:01:56Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * Zend_Date
 */
require_once 'Zend/Date.php';

/**
 * Zend_TimeSync_Exception
 */
require_once 'Zend/TimeSync/Exception.php';

/**
 * @category   Zend
 * @package    Zend_TimeSync
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_TimeSync implements IteratorAggregate
{
    /**
     * Set the default timeserver protocol to "Ntp". This will be called
     * when no protocol is specified
     */
    const DEFAULT_PROTOCOL = 'Ntp';

    /**
     * Contains array of timeserver objects
     *
     * @var array
     */
    protected $_timeservers = array();

    /**
     * Holds a reference to the timeserver that is currently being used
     *
     * @var object
     */
    protected $_current;

    /**
     * Allowed timeserver schemes
     *
     * @var array
     */
    protected $_allowedSchemes = array(
        'Ntp',
        'Sntp'
    );

    /**
     * Configuration array, set using the constructor or using
     * ::setOptions() or ::setOption()
     *
     * @var array
     */
    public static $options = array(
        'timeout' => 1
    );

    /**
     * Zend_TimeSync constructor
     *
     * @param  string|array $target - OPTIONAL single timeserver, or an array of timeservers.
     * @param  string       $alias  - OPTIONAL an alias for this timeserver
     * @return  object
     */
    public function __construct($target = null, $alias = null)
    {
        if (!is_null($target)) {
            $this->addServer($target, $alias);
        }
    }

    /**
     * getIterator() - return an iteratable object for use in foreach and the like,
     * this completes the IteratorAggregate interface
     *
     * @return ArrayObject
     */
    public function getIterator()
    {
        return new ArrayObject($this->_timeservers);
    }

    /**
     * Add a timeserver or multiple timeservers
     *
     * Server should be a single string representation of a timeserver,
     * or a structured array listing multiple timeservers.
     *
     * If you provide an array of timeservers in the $target variable,
     * $alias will be ignored. you can enter these as the array key
     * in the provided array, which should be structured as follows:
     *
     * <code>
     * $example = array(
     *   'server_a' => 'ntp://127.0.0.1',
     *   'server_b' => 'ntp://127.0.0.1:123',
     *   'server_c' => 'ntp://[2000:364:234::2.5]',
     *   'server_d' => 'ntp://[2000:364:234::2.5]:123'
     * );
     * </code>
     *
     * If no port number has been suplied, the default matching port
     * number will be used.
     *
     * Supported protocols are:
     * - ntp
     * - sntp
     *
     * @param  string|array $target - Single timeserver, or an array of timeservers.
     * @param  string       $alias  - OPTIONAL an alias for this timeserver
     * @throws Zend_TimeSync_Exception
     */
    public function addServer($target, $alias = null)
    {
        if (is_array($target)) {
            foreach ($target as $key => $server) {
                $this->_addServer($server, $key);
            }
        } else {
            $this->_addServer($target, $alias);
        }
    }

    /**
     * Sets the value for the given options
     *
     * This will replace any currently defined options.
     *
     * @param   array $options - An array of options to be set
     */
    public static function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            Zend_TimeSync::$options[$key] = $value;
        }
    }

    /**
     * Marks a nameserver as current
     *
     * @param   string|integer $alias - The alias from the timeserver to set as current
     * @throws  Zend_TimeSync_Exception
     */
    public function setServer($alias)
    {
        if (isset($this->_timeservers[$alias]) === true) {
            $this->_current = $this->_timeservers[$alias];
        } else {
            throw new Zend_TimeSync_Exception("'$alias' does not point to valid timeserver");
        }
    }

    /**
     * Returns the value to the option
     *
     * @param   string $key - The option's identifier
     * @return  mixed
     * @throws  Zend_TimeSync_Exception
     */
    public static function getOptions($key = null)
    {
        if ($key == null) {
            return Zend_TimeSync::$options;
        }

        if (isset(Zend_TimeSync::$options[$key]) === true) {
            return Zend_TimeSync::$options[$key];
        } else {
            throw new Zend_TimeSync_Exception("'$key' does not point to valid option");
        }
    }

    /**
     * Return a specified timeserver by alias
     * If no alias is given it will return the current timeserver
     *
     * @param   string|integer $alias - The alias from the timeserver to return
     * @return  object
     * @throws  Zend_TimeSync_Exception
     */
    public function getServer($alias = null)
    {
        if ($alias === null) {
            if (isset($this->_current) && $this->_current !== false) {
                return $this->_current;
            } else {
                throw new Zend_TimeSync_Exception('there is no timeserver set');
            }
        }
        if (isset($this->_timeservers[$alias]) === true) {
            return $this->_timeservers[$alias];
        } else {
            throw new Zend_TimeSync_Exception("'$alias' does not point to valid timeserver");
        }
    }

    /**
     * Returns information sent/returned from the current timeserver
     *
     * @return  array
     */
    public function getInfo()
    {
        return $this->getServer()->getInfo();
    }

    /**
     * Query the timeserver list using the fallback mechanism
     *
     * If there are multiple servers listed, this method will act as a
     * facade and will try to return the date from the first server that
     * returns a valid result.
     *
     * @param   $locale - OPTIONAL locale
     * @return  object
     * @throws  Zend_TimeSync_Exception
     */
    public function getDate($locale = null)
    {
        foreach ($this->_timeservers as $alias => $server) {
            $this->_current = $server;
            try {
                return $server->getDate($locale);
            } catch (Zend_TimeSync_Exception $e) {
                if (!isset($masterException)) {
                    $masterException = new Zend_TimeSync_Exception('all timeservers are bogus');
                }
                $masterException->addException($e);
            }
        }

        throw $masterException;
    }

    /**
     * Adds a timeserver object to the timeserver list
     *
     * @param  string|array $target   - Single timeserver, or an array of timeservers.
     * @param  string       $alias    - An alias for this timeserver
     */
    protected function _addServer($target, $alias)
    {
        if ($pos = strpos($target, '://')) {
            $protocol = substr($target, 0, $pos);
            $adress = substr($target, $pos + 3);
        } else {
            $adress = $target;
            $protocol = self::DEFAULT_PROTOCOL;
        }

        if ($pos = strrpos($adress, ':')) {
            $posbr = strpos($adress, ']');
            if ($posbr and ($pos > $posbr)) {
                $port = substr($adress, $pos + 1);
                $adress = substr($adress, 0, $pos);
            } else if (!$posbr and $pos) {
                $port = substr($adress, $pos + 1);
                $adress = substr($adress, 0, $pos);
            } else {
                $port = null;
            }
        } else {
            $port = null;
        }

        $protocol = ucfirst(strtolower($protocol));
        if (!in_array($protocol, $this->_allowedSchemes)) {
            throw new Zend_TimeSync_Exception("'$protocol' is not a supported protocol");
        }

        $className = 'Zend_TimeSync_' . $protocol;

        Zend_Loader::loadClass($className);
        $timeServerObj = new $className($adress, $port);

        $this->_timeservers[$alias] = $timeServerObj;
    }
}
PKpG[�`6�-�-$Test/PHPUnit/Constraint/DomQuery.phpnu&1i�<?php
/** PHPUnit_Framework_Constraint */
require_once 'PHPUnit/Framework/Constraint.php';

/** Zend_Dom_Query */
require_once 'Zend/Dom/Query.php';

/**
 * Zend_Dom_Query-based PHPUnit Constraint
 * 
 * @uses       PHPUnit_Framework_Constraint
 * @package    Zend_Test
 * @subpackage PHPUnit
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Test_PHPUnit_Constraint_DomQuery extends PHPUnit_Framework_Constraint
{
    /**#@+
     * @const string Assertion type constants
     */
    const ASSERT_QUERY            = 'assertQuery';
    const ASSERT_CONTENT_CONTAINS = 'assertQueryContentContains';
    const ASSERT_CONTENT_REGEX    = 'assertQueryContentRegex';
    const ASSERT_CONTENT_COUNT    = 'assertQueryCount';
    const ASSERT_CONTENT_COUNT_MIN= 'assertQueryCountMin';
    const ASSERT_CONTENT_COUNT_MAX= 'assertQueryCountMax';
    /**#@-*/

    /**
     * Current assertion type
     * @var string
     */
    protected $_assertType        = null;

    /**
     * Available assertion types
     * @var array
     */
    protected $_assertTypes       = array(
        self::ASSERT_QUERY,
        self::ASSERT_CONTENT_CONTAINS,
        self::ASSERT_CONTENT_REGEX,
        self::ASSERT_CONTENT_COUNT,
        self::ASSERT_CONTENT_COUNT_MIN,
        self::ASSERT_CONTENT_COUNT_MAX,
    );

    /**
     * Content being matched
     * @var string
     */
    protected $_content           = null;

    /**
     * Whether or not assertion is negated
     * @var bool
     */
    protected $_negate            = false;

    /**
     * CSS selector or XPath path to select against
     * @var string
     */
    protected $_path              = null;

    /**
     * Whether or not to use XPath when querying
     * @var bool
     */
    protected $_useXpath          = false;

    /**
     * Constructor; setup constraint state
     * 
     * @param  string $path CSS selector path
     * @return void
     */
    public function __construct($path)
    {
        $this->_path = $path;
    }

    /**
     * Indicate negative match
     * 
     * @param  bool $flag 
     * @return void
     */
    public function setNegate($flag = true)
    {
        $this->_negate = $flag;
    }

    /**
     * Whether or not path is a straight XPath expression
     * 
     * @param  bool $flag 
     * @return Zend_Test_PHPUnit_Constraint_DomQuery
     */
    public function setUseXpath($flag = true)
    {
        $this->_useXpath = (bool) $flag;
        return $this;
    }

    /**
     * Evaluate an object to see if it fits the constraints
     * 
     * @param  string $other String to examine
     * @param  null|string Assertion type
     * @return bool
     */
    public function evaluate($other, $assertType = null)
    {
        if (strstr($assertType, 'Not')) {
            $this->setNegate(true);
            $assertType = str_replace('Not', '', $assertType);
        }

        if (strstr($assertType, 'Xpath')) {
            $this->setUseXpath(true);
            $assertType = str_replace('Xpath', 'Query', $assertType);
        }

        if (!in_array($assertType, $this->_assertTypes)) {
            require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
            throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__));
        }

        $this->_assertType = $assertType;

        $method   = $this->_useXpath ? 'queryXpath' : 'query';
        $domQuery = new Zend_Dom_Query($other);
        $result   = $domQuery->$method($this->_path);
        $argv     = func_get_args();
        $argc     = func_num_args();

        switch ($assertType) {
            case self::ASSERT_CONTENT_CONTAINS:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No content provided against which to match');
                }
                $this->_content = $content = $argv[2];
                return ($this->_negate)
                    ? $this->_notMatchContent($result, $content)
                    : $this->_matchContent($result, $content);
            case self::ASSERT_CONTENT_REGEX:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match');
                }
                $this->_content = $content = $argv[2];
                return ($this->_negate)
                    ? $this->_notRegexContent($result, $content)
                    : $this->_regexContent($result, $content);
            case self::ASSERT_CONTENT_COUNT:
            case self::ASSERT_CONTENT_COUNT_MIN:
            case self::ASSERT_CONTENT_COUNT_MAX:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No count provided against which to compare');
                }
                $this->_content = $content = $argv[2];
                return $this->_countContent($result, $content, $assertType);
            case self::ASSERT_QUERY:
            default:
                if ($this->_negate) {
                    return (0 == count($result));
                } else {
                    return (0 != count($result));
                }
        }
    }

    /**
     * Report Failure
     * 
     * @see    PHPUnit_Framework_Constraint for implementation details
     * @param  mixed $other CSS selector path
     * @param  string $description 
     * @param  bool $not 
     * @return void
     * @throws PHPUnit_Framework_ExpectationFailedException
     */
    public function fail($other, $description, $not = false)
    {
        require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
        switch ($this->_assertType) {
            case self::ASSERT_CONTENT_CONTAINS:
                $failure = 'Failed asserting node denoted by %s CONTAINS content "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content "%s"';
                }
                $failure = sprintf($failure, $other, $this->_content);
                break;
            case self::ASSERT_CONTENT_REGEX:
                $failure = 'Failed asserting node denoted by %s CONTAINS content MATCHING "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content MATCHING "%s"';
                }
                $failure = sprintf($failure, $other, $this->_content);
                break;
            case self::ASSERT_CONTENT_COUNT:
                $failure = 'Failed asserting node DENOTED BY %s OCCURS EXACTLY %d times';
                if ($this->_negate) {
                    $failure = 'Failed asserting node DENOTED BY %s DOES NOT OCCUR EXACTLY %d times';
                }
                $failure = sprintf($failure, $other, $this->_content);
                break;
            case self::ASSERT_CONTENT_COUNT_MIN:
                $failure = 'Failed asserting node DENOTED BY %s OCCURS AT LEAST %d times';
                $failure = sprintf($failure, $other, $this->_content);
                break;
            case self::ASSERT_CONTENT_COUNT_MAX:
                $failure = 'Failed asserting node DENOTED BY %s OCCURS AT MOST %d times';
                $failure = sprintf($failure, $other, $this->_content);
                break;
            case self::ASSERT_QUERY:
            default:
                $failure = 'Failed asserting node DENOTED BY %s EXISTS';
                if ($this->_negate) {
                    $failure = 'Failed asserting node DENOTED BY %s DOES NOT EXIST';
                }
                $failure = sprintf($failure, $other);
                break;
        }

        if (!empty($description)) {
            $failure = $description . "\n" . $failure;
        }

        throw new Zend_Test_PHPUnit_Constraint_Exception($failure);
    }

    /**
     * Complete implementation
     * 
     * @return string
     */
    public function toString()
    {
        return '';
    }

    /**
     * Check to see if content is matched in selected nodes
     * 
     * @param  Zend_Dom_Query_Result $result 
     * @param  string $match Content to match
     * @return bool
     */
    protected function _matchContent($result, $match)
    {
        if (0 == count($result)) {
            return false;
        }

        foreach ($result as $node) {
            $content = $this->_getNodeContent($node);
            if (strstr($content, $match)) {
                return true;
            }
        }

        return false;
    }

    /**
     * Check to see if content is NOT matched in selected nodes
     * 
     * @param  Zend_Dom_Query_Result $result 
     * @param  string $match 
     * @return bool
     */
    protected function _notMatchContent($result, $match)
    {
        if (0 == count($result)) {
            return true;
        }

        foreach ($result as $node) {
            $content = $this->_getNodeContent($node);
            if (strstr($content, $match)) {
                return false;
            }
        }

        return true;
    }

    /**
     * Check to see if content is matched by regex in selected nodes
     * 
     * @param  Zend_Dom_Query_Result $result 
     * @param  string $pattern
     * @return bool
     */
    protected function _regexContent($result, $pattern)
    {
        if (0 == count($result)) {
            return false;
        }

        foreach ($result as $node) {
            $content = $this->_getNodeContent($node);
            if (preg_match($pattern, $content)) {
                return true;
            }
        }

        return false;
    }

    /**
     * Check to see if content is NOT matched by regex in selected nodes
     * 
     * @param  Zend_Dom_Query_Result $result 
     * @param  string $pattern
     * @return bool
     */
    protected function _notRegexContent($result, $pattern)
    {
        if (0 == count($result)) {
            return true;
        }

        foreach ($result as $node) {
            $content = $this->_getNodeContent($node);
            if (preg_match($pattern, $content)) {
                return false;
            }
        }

        return true;
    }

    /**
     * Determine if content count matches criteria
     * 
     * @param  Zend_Dom_Query_Result $result 
     * @param  int $test Value against which to test
     * @param  string $type assertion type
     * @return boolean
     */
    protected function _countContent($result, $test, $type)
    {
        $count = count($result);

        switch ($type) {
            case self::ASSERT_CONTENT_COUNT:
                return ($this->_negate)
                    ? ($test != $count)
                    : ($test == $count);
            case self::ASSERT_CONTENT_COUNT_MIN:
                return ($count >= $test);
            case self::ASSERT_CONTENT_COUNT_MAX:
                return ($count <= $test);
            default:
                return false;
        }
    }

    /**
     * Get node content, minus node markup tags
     * 
     * @param  DOMNode $node 
     * @return string
     */
    protected function _getNodeContent(DOMNode $node)
    {
        $doc     = $node->ownerDocument;
        $content = $doc->saveXML($node);
        $tag     = $node->nodeName;
        $regex   = '|</?' . $tag . '[^>]*>|';
        return preg_replace($regex, '', $content);
    }
}
PKpG[�e��%Test/PHPUnit/Constraint/Exception.phpnu&1i�<?php
/** PHPUnit_Framework_ExpectationFailedException */
require_once 'PHPUnit/Framework/ExpectationFailedException.php';

/**
 * Zend_Test_PHPUnit_Constraint_Exception 
 * 
 * @uses       PHPUnit_Framework_ExpectationFailedException
 * @package    Zend_Test
 * @subpackage PHPUnit
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Test_PHPUnit_Constraint_Exception extends PHPUnit_Framework_ExpectationFailedException
{
}
PKpG[���.��$Test/PHPUnit/Constraint/Redirect.phpnu&1i�<?php
/** PHPUnit_Framework_Constraint */
require_once 'PHPUnit/Framework/Constraint.php';

/**
 * Redirection constraints
 * 
 * @uses       PHPUnit_Framework_Constraint
 * @package    Zend_Test
 * @subpackage PHPUnit
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Test_PHPUnit_Constraint_Redirect extends PHPUnit_Framework_Constraint
{
    /**#@+
     * @const string Assertion type constants
     */
    const ASSERT_REDIRECT       = 'assertRedirect';
    const ASSERT_REDIRECT_TO    = 'assertRedirectTo';
    const ASSERT_REDIRECT_REGEX = 'assertRedirectRegex';
    /**#@-*/

    /**
     * Current assertion type
     * @var string
     */
    protected $_assertType      = null;

    /**
     * Available assertion types
     * @var array
     */
    protected $_assertTypes     = array(
        self::ASSERT_REDIRECT,
        self::ASSERT_REDIRECT_TO,
        self::ASSERT_REDIRECT_REGEX,
    );

    /**
     * Pattern to match against
     * @var string
     */
    protected $_match             = null;

    /**
     * Whether or not assertion is negated
     * @var bool
     */
    protected $_negate            = false;

    /**
     * Constructor; setup constraint state
     * 
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * Indicate negative match
     * 
     * @param  bool $flag 
     * @return void
     */
    public function setNegate($flag = true)
    {
        $this->_negate = $flag;
    }

    /**
     * Evaluate an object to see if it fits the constraints
     * 
     * @param  string $other String to examine
     * @param  null|string Assertion type
     * @return bool
     */
    public function evaluate($other, $assertType = null)
    {
        if (!$other instanceof Zend_Controller_Response_Abstract) {
            require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
            throw new Zend_Test_PHPUnit_Constraint_Exception('Redirect constraint assertions require a response object');
        }

        if (strstr($assertType, 'Not')) {
            $this->setNegate(true);
            $assertType = str_replace('Not', '', $assertType);
        }

        if (!in_array($assertType, $this->_assertTypes)) {
            require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
            throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__));
        }

        $this->_assertType = $assertType;

        $response = $other;
        $argv     = func_get_args();
        $argc     = func_num_args();

        switch ($assertType) {
            case self::ASSERT_REDIRECT_TO:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No redirect URL provided against which to match');
                }
                $this->_match = $match = $argv[2];
                return ($this->_negate)
                    ? $this->_notMatch($response, $match)
                    : $this->_match($response, $match);
            case self::ASSERT_REDIRECT_REGEX:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match redirect');
                }
                $this->_match = $match = $argv[2];
                return ($this->_negate)
                    ? $this->_notRegex($response, $match)
                    : $this->_regex($response, $match);
            case self::ASSERT_REDIRECT:
            default:
                return ($this->_negate) ? !$response->isRedirect() : $response->isRedirect();
        }
    }

    /**
     * Report Failure
     * 
     * @see    PHPUnit_Framework_Constraint for implementation details
     * @param  mixed $other 
     * @param  string $description Additional message to display
     * @param  bool $not 
     * @return void
     * @throws PHPUnit_Framework_ExpectationFailedException
     */
    public function fail($other, $description, $not = false)
    {
        require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
        switch ($this->_assertType) {
            case self::ASSERT_REDIRECT_TO:
                $failure = 'Failed asserting response redirects to "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting response DOES NOT redirect to "%s"';
                }
                $failure = sprintf($failure, $this->_match);
                break;
            case self::ASSERT_REDIRECT_REGEX:
                $failure = 'Failed asserting response redirects to URL MATCHING "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting response DOES NOT redirect to URL MATCHING "%s"';
                }
                $failure = sprintf($failure, $this->_match);
                break;
            case self::ASSERT_REDIRECT:
            default:
                $failure = 'Failed asserting response is a redirect';
                if ($this->_negate) {
                    $failure = 'Failed asserting response is NOT a redirect';
                }
                break;
        }

        if (!empty($description)) {
            $failure = $description . "\n" . $failure;
        }

        throw new Zend_Test_PHPUnit_Constraint_Exception($failure);
    }

    /**
     * Complete implementation
     * 
     * @return string
     */
    public function toString()
    {
        return '';
    }

    /**
     * Check to see if content is matched in selected nodes
     * 
     * @param  Zend_Controller_Response_HttpTestCase $response
     * @param  string $match Content to match
     * @return bool
     */
    protected function _match($response, $match)
    {
        if (!$response->isRedirect()) {
            return false;
        }

        $headers  = $response->sendHeaders();
        $redirect = $headers['location'];
        $redirect = str_replace('Location: ', '', $redirect);

        return ($redirect == $match);
    }

    /**
     * Check to see if content is NOT matched in selected nodes
     * 
     * @param  Zend_Controller_Response_HttpTestCase $response
     * @param  string $match 
     * @return bool
     */
    protected function _notMatch($response, $match)
    {
        if (!$response->isRedirect()) {
            return true;
        }

        $headers  = $response->sendHeaders();
        $redirect = $headers['location'];
        $redirect = str_replace('Location: ', '', $redirect);

        return ($redirect != $match);
    }

    /**
     * Check to see if content is matched by regex in selected nodes
     * 
     * @param  Zend_Controller_Response_HttpTestCase $response
     * @param  string $pattern
     * @return bool
     */
    protected function _regex($response, $pattern)
    {
        if (!$response->isRedirect()) {
            return false;
        }

        $headers  = $response->sendHeaders();
        $redirect = $headers['location'];
        $redirect = str_replace('Location: ', '', $redirect);

        return preg_match($pattern, $redirect);
    }

    /**
     * Check to see if content is NOT matched by regex in selected nodes
     * 
     * @param  Zend_Controller_Response_HttpTestCase $response
     * @param  string $pattern
     * @return bool
     */
    protected function _notRegex($response, $pattern)
    {
        if (!$response->isRedirect()) {
            return true;
        }

        $headers  = $response->sendHeaders();
        $redirect = $headers['location'];
        $redirect = str_replace('Location: ', '', $redirect);

        return !preg_match($pattern, $redirect);
    }
}
PKpG[-��9t0t0*Test/PHPUnit/Constraint/ResponseHeader.phpnu&1i�<?php
/** PHPUnit_Framework_Constraint */
require_once 'PHPUnit/Framework/Constraint.php';

/**
 * Response header PHPUnit Constraint
 * 
 * @uses       PHPUnit_Framework_Constraint
 * @package    Zend_Test
 * @subpackage PHPUnit
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Test_PHPUnit_Constraint_ResponseHeader extends PHPUnit_Framework_Constraint
{
    /**#@+
     * @const string Assertion type constants
     */
    const ASSERT_RESPONSE_CODE   = 'assertResponseCode';
    const ASSERT_HEADER          = 'assertHeader';
    const ASSERT_HEADER_CONTAINS = 'assertHeaderContains';
    const ASSERT_HEADER_REGEX    = 'assertHeaderRegex';
    /**#@-*/

    /**
     * Current assertion type
     * @var string
     */
    protected $_assertType      = null;

    /**
     * Available assertion types
     * @var array
     */
    protected $_assertTypes     = array(
        self::ASSERT_RESPONSE_CODE,
        self::ASSERT_HEADER,
        self::ASSERT_HEADER_CONTAINS,
        self::ASSERT_HEADER_REGEX,
    );

    /**
     * @var int Response code
     */
    protected $_code              = 200;

    /**
     * @var string Header
     */
    protected $_header            = null;

    /**
     * @var string pattern against which to compare header content
     */
    protected $_match             = null;

    /**
     * Whether or not assertion is negated
     * @var bool
     */
    protected $_negate            = false;

    /**
     * Constructor; setup constraint state
     * 
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * Indicate negative match
     * 
     * @param  bool $flag 
     * @return void
     */
    public function setNegate($flag = true)
    {
        $this->_negate = $flag;
    }

    /**
     * Evaluate an object to see if it fits the constraints
     * 
     * @param  Zend_Controller_Response_Abstract $other String to examine
     * @param  null|string Assertion type
     * @return bool
     */
    public function evaluate($other, $assertType = null)
    {
        if (!$other instanceof Zend_Controller_Response_Abstract) {
            require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
            throw new Zend_Test_PHPUnit_Constraint_Exception('Header constraint assertions require a response object');
        }

        if (strstr($assertType, 'Not')) {
            $this->setNegate(true);
            $assertType = str_replace('Not', '', $assertType);
        }

        if (!in_array($assertType, $this->_assertTypes)) {
            require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
            throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__));
        }

        $this->_assertType = $assertType;

        $response = $other;
        $argv     = func_get_args();
        $argc     = func_num_args();

        switch ($assertType) {
            case self::ASSERT_RESPONSE_CODE:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No response code provided against which to match');
                }
                $this->_code = $code = $argv[2];
                return ($this->_negate)
                    ? $this->_notCode($response, $code)
                    : $this->_code($response, $code);
            case self::ASSERT_HEADER:
                if (3 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('No header provided against which to match');
                }
                $this->_header = $header = $argv[2];
                return ($this->_negate)
                    ? $this->_notHeader($response, $header)
                    : $this->_header($response, $header);
            case self::ASSERT_HEADER_CONTAINS:
                if (4 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . __FUNCTION__);
                }
                $this->_header = $header = $argv[2];
                $this->_match  = $match  = $argv[3];
                return ($this->_negate)
                    ? $this->_notHeaderContains($response, $header, $match)
                    : $this->_headerContains($response, $header, $match);
            case self::ASSERT_HEADER_REGEX:
                if (4 > $argc) {
                    require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                    throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . __FUNCTION__);
                }
                $this->_header = $header = $argv[2];
                $this->_match  = $match  = $argv[3];
                return ($this->_negate)
                    ? $this->_notHeaderRegex($response, $header, $match)
                    : $this->_headerRegex($response, $header, $match);
            default:
                require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
                throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__);
        }
    }

    /**
     * Report Failure
     * 
     * @see    PHPUnit_Framework_Constraint for implementation details
     * @param  mixed $other 
     * @param  string $description Additional message to display
     * @param  bool $not 
     * @return void
     * @throws PHPUnit_Framework_ExpectationFailedException
     */
    public function fail($other, $description, $not = false)
    {
        require_once 'Zend/Test/PHPUnit/Constraint/Exception.php';
        switch ($this->_assertType) {
            case self::ASSERT_RESPONSE_CODE:
                $failure = 'Failed asserting response code "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting response code IS NOT "%s"';
                }
                $failure = sprintf($failure, $this->_code);
                break;
            case self::ASSERT_HEADER:
                $failure = 'Failed asserting response header "%s" found';
                if ($this->_negate) {
                    $failure = 'Failed asserting response response header "%s" WAS NOT found';
                }
                $failure = sprintf($failure, $this->_header);
                break;
            case self::ASSERT_HEADER_CONTAINS:
                $failure = 'Failed asserting response header "%s" exists and contains "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting response header "%s" DOES NOT CONTAIN "%s"';
                }
                $failure = sprintf($failure, $this->_header, $this->_match);
                break;
            case self::ASSERT_HEADER_REGEX:
                $failure = 'Failed asserting response header "%s" exists and matches regex "%s"';
                if ($this->_negate) {
                    $failure = 'Failed asserting response header "%s" DOES NOT MATCH regex "%s"';
                }
                $failure = sprintf($failure, $this->_header, $this->_match);
                break;
            default:
                throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__);
        }

        if (!empty($description)) {
            $failure = $description . "\n" . $failure;
        }

        throw new Zend_Test_PHPUnit_Constraint_Exception($failure);
    }

    /**
     * Complete implementation
     * 
     * @return string
     */
    public function toString()
    {
        return '';
    }

    /**
     * Compare response code for positive match
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  int $code 
     * @return bool
     */
    protected function _code(Zend_Controller_Response_Abstract $response, $code)
    {
        $test = $this->_getCode($response);
        return ($test == $code);
    }

    /**
     * Compare response code for negative match
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  int $code 
     * @return bool
     */
    protected function _notCode(Zend_Controller_Response_Abstract $response, $code)
    {
        $test = $this->_getCode($response);
        return ($test != $code);
    }

    /**
     * Retrieve response code
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @return int
     */
    protected function _getCode(Zend_Controller_Response_Abstract $response)
    {
        $test = $response->getHttpResponseCode();
        if (null === $test) {
            $test = 200;
        }
        return $test;
    }

    /**
     * Positive check for response header presence
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @return bool
     */
    protected function _header(Zend_Controller_Response_Abstract $response, $header)
    {
        return (null !== $this->_getHeader($response, $header));
    }

    /**
     * Negative check for response header presence
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @return bool
     */
    protected function _notHeader(Zend_Controller_Response_Abstract $response, $header)
    {
        return (null === $this->_getHeader($response, $header));
    }

    /**
     * Retrieve response header
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @return string|null
     */
    protected function _getHeader(Zend_Controller_Response_Abstract $response, $header)
    {
        $headers = $response->sendHeaders();
        $header  = strtolower($header);
        if (array_key_exists($header, $headers)) {
            return $headers[$header];
        }
        return null;
    }

    /**
     * Positive check for header contents matching pattern
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @param  string $match 
     * @return bool
     */
    protected function _headerContains(Zend_Controller_Response_Abstract $response, $header, $match)
    {
        if (null === ($fullHeader = $this->_getHeader($response, $header))) {
            return false;
        }

        $contents = str_replace($header . ': ', '', $fullHeader);

        return (strstr($contents, $match));
    }

    /**
     * Negative check for header contents matching pattern
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @param  string $match 
     * @return bool
     */
    protected function _notHeaderContains(Zend_Controller_Response_Abstract $response, $header, $match)
    {
        if (null === ($fullHeader = $this->_getHeader($response, $header))) {
            return true;
        }

        $contents = str_replace($header . ': ', '', $fullHeader);

        return (!strstr($contents, $match));
    }

    /**
     * Positive check for header contents matching regex
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @param  string $pattern 
     * @return bool
     */
    protected function _headerRegex(Zend_Controller_Response_Abstract $response, $header, $pattern)
    {
        if (null === ($fullHeader = $this->_getHeader($response, $header))) {
            return false;
        }

        $contents = str_replace($header . ': ', '', $fullHeader);

        return preg_match($pattern, $contents);
    }

    /**
     * Negative check for header contents matching regex
     * 
     * @param  Zend_Controller_Response_Abstract $response 
     * @param  string $header 
     * @param  string $pattern 
     * @return bool
     */
    protected function _notHeaderRegex(Zend_Controller_Response_Abstract $response, $header, $pattern)
    {
        if (null === ($fullHeader = $this->_getHeader($response, $header))) {
            return true;
        }

        $contents = str_replace($header . ': ', '', $fullHeader);

        return !preg_match($pattern, $contents);
    }
}
PKpG[�]�6b�b�#Test/PHPUnit/ControllerTestCase.phpnu&1i�<?php

/** PHPUnit_Framework_TestCase */
require_once 'PHPUnit/Framework/TestCase.php';

/** PHPUnit_Runner_Version */
require_once 'PHPUnit/Runner/Version.php';

/** Zend_Controller_Front */
require_once 'Zend/Controller/Front.php';

/** Zend_Controller_Action_HelperBroker */
require_once 'Zend/Controller/Action/HelperBroker.php';

/** Zend_Layout */
require_once 'Zend/Layout.php';

/** Zend_Session */
require_once 'Zend/Session.php';

/** Zend_Registry */
require_once 'Zend/Registry.php';

/**
 * Functional testing scaffold for MVC applications
 * 
 * @uses       PHPUnit_Framework_TestCase
 * @package    Zend_Test
 * @subpackage PHPUnit
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
abstract class Zend_Test_PHPUnit_ControllerTestCase extends PHPUnit_Framework_TestCase
{
    /**
     * @var mixed Bootstrap file path or callback
     */
    public $bootstrap;

    /**
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * @var Zend_Dom_Query
     */
    protected $_query;

    /**
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request;
    
    /**
     * @var Zend_Controller_Response_Abstract
     */
    protected $_response;

    /**
     * Overlaoding: prevent overloading to special properties
     * 
     * @param  string $name 
     * @param  mixed $value 
     * @return void
     */
    public function __set($name, $value)
    {
        if (in_array($name, array('request', 'response', 'frontController'))) {
            throw new Zend_Exception(sprintf('Setting %s object manually is not allowed', $name));
        }
        $this->$name = $value;
    }

    /**
     * Overloading for common properties
     *
     * Provides overloading for request, response, and frontController objects.
     * 
     * @param mixed $name 
     * @return void
     */
    public function __get($name)
    {
        switch ($name) {
            case 'request':
                return $this->getRequest();
            case 'response':
                return $this->getResponse();
            case 'frontController':
                return $this->getFrontController();
        }

        return null;
    }

    /**
     * Set up MVC app
     *
     * Calls {@link bootstrap()} by default
     * 
     * @return void
     */
    protected function setUp()
    {
        $this->bootstrap();
    }

    /**
     * Bootstrap the front controller
     *
     * Resets the front controller, and then bootstraps it.
     *
     * If {@link $bootstrap} is a callback, executes it; if it is a file, it include's 
     * it. When done, sets the test case request and response objects into the 
     * front controller.
     * 
     * @return void
     */
    final public function bootstrap()
    {
        $this->reset();
        if (null !== $this->bootstrap) {
            if (is_callable($this->bootstrap)) {
                call_user_func($this->bootstrap);
            } elseif (is_string($this->bootstrap)) {
                require_once 'Zend/Loader.php';
                if (Zend_Loader::isReadable($this->bootstrap)) {
                    include $this->bootstrap;
                }
            }
        }
        $this->frontController
             ->setRequest($this->getRequest())
             ->setResponse($this->getResponse());
    }

    /**
     * Dispatch the MVC
     *
     * If a URL is provided, sets it as the request URI in the request object. 
     * Then sets test case request and response objects in front controller, 
     * disables throwing exceptions, and disables returning the response.
     * Finally, dispatches the front controller.
     * 
     * @param  string|null $url 
     * @return void
     */
    public function dispatch($url = null)
    {
        // redirector should not exit
        $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
        $redirector->setExit(false);

        // json helper should not exit
        $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json');
        $json->suppressExit = true;

        $request    = $this->getRequest();
        if (null !== $url) {
            $request->setRequestUri($url);
        }
        $request->setPathInfo(null);
        $controller = $this->getFrontController();
        $this->frontController
             ->setRequest($request)
             ->setResponse($this->getResponse())
             ->throwExceptions(false)
             ->returnResponse(false);
        $this->frontController->dispatch();
    }

    /**
     * Reset MVC state
     * 
     * Creates new request/response objects, resets the front controller 
     * instance, and resets the action helper broker.
     *
     * @todo   Need to update Zend_Layout to add a resetInstance() method
     * @return void
     */
    public function reset()
    {
        $_SESSION = array();
        $_GET     = array();
        $_POST    = array();
        $_COOKIE  = array();
        $this->resetRequest();
        $this->resetResponse();
        Zend_Layout::resetMvcInstance();
        Zend_Controller_Action_HelperBroker::resetHelpers();
        $this->frontController->resetInstance();
        Zend_Session::$_unitTestEnabled = true;
    }

    /**
     * Rest all view placeholders
     * 
     * @return void
     */
    protected function _resetPlaceholders()
    {
        $registry = Zend_Registry::getInstance();
        $remove   = array();
        foreach ($registry as $key => $value) {
            if (strstr($key, '_View_')) {
                $remove[] = $key;
            }
        }

        foreach ($remove as $key) {
            unset($registry[$key]);
        }
    }

    /**
     * Reset the request object
     *
     * Useful for test cases that need to test multiple trips to the server.
     * 
     * @return Zend_Test_PHPUnit_ControllerTestCase
     */
    public function resetRequest()
    {
        $this->_request = null;
        return $this;
    }

    /**
     * Reset the response object
     *
     * Useful for test cases that need to test multiple trips to the server.
     * 
     * @return Zend_Test_PHPUnit_ControllerTestCase
     */
    public function resetResponse()
    {
        $this->_response = null;
        $this->_resetPlaceholders();
        return $this;
    }

    /**
     * Assert against DOM selection
     * 
     * @param  string $path CSS selector path
     * @param  string $message
     * @return void
     */
    public function assertQuery($path, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection
     * 
     * @param  string $path CSS selector path
     * @param  string $message
     * @return void
     */
    public function assertNotQuery($path, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; node should contain content
     * 
     * @param  string $path CSS selector path
     * @param  string $match content that should be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertQueryContentContains($path, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $match)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; node should NOT contain content
     * 
     * @param  string $path CSS selector path
     * @param  string $match content that should NOT be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertNotQueryContentContains($path, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $match)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; node should match content
     * 
     * @param  string $path CSS selector path
     * @param  string $pattern Pattern that should be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertQueryContentRegex($path, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; node should NOT match content
     * 
     * @param  string $path CSS selector path
     * @param  string $pattern pattern that should NOT be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertNotQueryContentRegex($path, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; should contain exact number of nodes
     * 
     * @param  string $path CSS selector path
     * @param  string $count Number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertQueryCount($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; should NOT contain exact number of nodes
     * 
     * @param  string $path CSS selector path
     * @param  string $count Number of nodes that should NOT match
     * @param  string $message
     * @return void
     */
    public function assertNotQueryCount($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; should contain at least this number of nodes
     * 
     * @param  string $path CSS selector path
     * @param  string $count Minimum number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertQueryCountMin($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against DOM selection; should contain no more than this number of nodes
     * 
     * @param  string $path CSS selector path
     * @param  string $count Maximum number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertQueryCountMax($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection
     * 
     * @param  string $path XPath path
     * @param  string $message
     * @return void
     */
    public function assertXpath($path, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection
     * 
     * @param  string $path XPath path
     * @param  string $message
     * @return void
     */
    public function assertNotXpath($path, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; node should contain content
     * 
     * @param  string $path XPath path
     * @param  string $match content that should be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertXpathContentContains($path, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $match)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; node should NOT contain content
     * 
     * @param  string $path XPath path
     * @param  string $match content that should NOT be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertNotXpathContentContains($path, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $match)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; node should match content
     * 
     * @param  string $path XPath path
     * @param  string $pattern Pattern that should be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertXpathContentRegex($path, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; node should NOT match content
     * 
     * @param  string $path XPath path
     * @param  string $pattern pattern that should NOT be contained in matched nodes
     * @param  string $message
     * @return void
     */
    public function assertNotXpathContentRegex($path, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; should contain exact number of nodes
     * 
     * @param  string $path XPath path
     * @param  string $count Number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertXpathCount($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; should NOT contain exact number of nodes
     * 
     * @param  string $path XPath path
     * @param  string $count Number of nodes that should NOT match
     * @param  string $message
     * @return void
     */
    public function assertNotXpathCount($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; should contain at least this number of nodes
     * 
     * @param  string $path XPath path
     * @param  string $count Minimum number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertXpathCountMin($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert against XPath selection; should contain no more than this number of nodes
     * 
     * @param  string $path XPath path
     * @param  string $count Maximum number of nodes that should match
     * @param  string $message
     * @return void
     */
    public function assertXpathCountMax($path, $count, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path);
        $content    = $this->response->outputBody();
        if (!$constraint->evaluate($content, __FUNCTION__, $count)) {
            $constraint->fail($path, $message);
        }
    }

    /**
     * Assert that response is a redirect
     * 
     * @param  string $message 
     * @return void
     */
    public function assertRedirect($message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that response is NOT a redirect
     * 
     * @param  string $message 
     * @return void
     */
    public function assertNotRedirect($message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that response redirects to given URL
     * 
     * @param  string $url 
     * @param  string $message 
     * @return void
     */
    public function assertRedirectTo($url, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $url)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that response does not redirect to given URL
     * 
     * @param  string $url 
     * @param  string $message 
     * @return void
     */
    public function assertNotRedirectTo($url, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $url)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that redirect location matches pattern
     * 
     * @param  string $pattern 
     * @param  string $message 
     * @return void
     */
    public function assertRedirectRegex($pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $pattern)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that redirect location does not match pattern
     * 
     * @param  string $pattern 
     * @param  string $message 
     * @return void
     */
    public function assertNotRedirectRegex($pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_Redirect();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $pattern)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response code
     * 
     * @param  int $code 
     * @param  string $message 
     * @return void
     */
    public function assertResponseCode($code, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $code)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response code
     * 
     * @param  int $code 
     * @param  string $message 
     * @return void
     */
    public function assertNotResponseCode($code, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $constraint->setNegate(true);
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $code)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header exists
     * 
     * @param  string $header 
     * @param  string $message 
     * @return void
     */
    public function assertHeader($header, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header does not exist
     * 
     * @param  string $header 
     * @param  string $message 
     * @return void
     */
    public function assertNotHeader($header, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $constraint->setNegate(true);
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header exists and contains the given string
     * 
     * @param  string $header 
     * @param  string $match 
     * @param  string $message 
     * @return void
     */
    public function assertHeaderContains($header, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header, $match)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header does not exist and/or does not contain the given string
     * 
     * @param  string $header 
     * @param  string $match
     * @param  string $message 
     * @return void
     */
    public function assertNotHeaderContains($header, $match, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $constraint->setNegate(true);
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header, $match)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header exists and matches the given pattern
     * 
     * @param  string $header 
     * @param  string $pattern 
     * @param  string $message 
     * @return void
     */
    public function assertHeaderRegex($header, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header, $pattern)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert response header does not exist and/or does not match the given regex
     * 
     * @param  string $header 
     * @param  string $pattern
     * @param  string $message 
     * @return void
     */
    public function assertNotHeaderRegex($header, $pattern, $message = '')
    {
        $this->_incrementAssertionCount();
        require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php';
        $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader();
        $constraint->setNegate(true);
        $response   = $this->response;
        if (!$constraint->evaluate($response, __FUNCTION__, $header, $pattern)) {
            $constraint->fail($response, $message);
        }
    }

    /**
     * Assert that the last handled request used the given module
     * 
     * @param  string $module 
     * @param  string $message 
     * @return void
     */
    public function assertModule($module, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($module != $this->request->getModuleName()) {
            $msg = sprintf('Failed asserting last module used was "%s"', $module);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the last handled request did NOT use the given module
     * 
     * @param  string $module 
     * @param  string $message 
     * @return void
     */
    public function assertNotModule($module, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($module == $this->request->getModuleName()) {
            $msg = sprintf('Failed asserting last module used was NOT "%s"', $module);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the last handled request used the given controller
     * 
     * @param  string $controller 
     * @param  string $message 
     * @return void
     */
    public function assertController($controller, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($controller != $this->request->getControllerName()) {
            $msg = sprintf('Failed asserting last controller used was "%s"', $controller);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the last handled request did NOT use the given controller
     * 
     * @param  string $controller 
     * @param  string $message 
     * @return void
     */
    public function assertNotController($controller, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($controller == $this->request->getControllerName()) {
            $msg = sprintf('Failed asserting last controller used was NOT "%s"', $controller);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the last handled request used the given action
     * 
     * @param  string $action 
     * @param  string $message 
     * @return void
     */
    public function assertAction($action, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($action != $this->request->getActionName()) {
            $msg = sprintf('Failed asserting last action used was "%s"', $action);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the last handled request did NOT use the given action
     * 
     * @param  string $action 
     * @param  string $message 
     * @return void
     */
    public function assertNotAction($action, $message = '')
    {
        $this->_incrementAssertionCount();
        if ($action == $this->request->getActionName()) {
            $msg = sprintf('Failed asserting last action used was NOT "%s"', $action);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the specified route was used
     * 
     * @param  string $route 
     * @param  string $message 
     * @return void
     */
    public function assertRoute($route, $message = '')
    {
        $this->_incrementAssertionCount();
        $router = $this->frontController->getRouter();
        if ($route != $router->getCurrentRouteName()) {
            $msg = sprintf('Failed asserting route matched was "%s"', $route);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Assert that the route matched is NOT as specified
     * 
     * @param  string $route 
     * @param  string $message 
     * @return void
     */
    public function assertNotRoute($route, $message = '')
    {
        $this->_incrementAssertionCount();
        $router = $this->frontController->getRouter();
        if ($route == $router->getCurrentRouteName()) {
            $msg = sprintf('Failed asserting route matched was NOT "%s"', $route);
            if (!empty($message)) {
                $msg = $message . "\n" . $msg;
            }
            $this->fail($msg);
        }
    }

    /**
     * Retrieve front controller instance
     * 
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        if (null === $this->_frontController) {
            $this->_frontController = Zend_Controller_Front::getInstance();
        }
        return $this->_frontController;
    }

    /**
     * Retrieve test case request object
     * 
     * @return Zend_Controller_Request_Abstract
     */
    public function getRequest()
    {
        if (null === $this->_request) {
            require_once 'Zend/Controller/Request/HttpTestCase.php';
            $this->_request = new Zend_Controller_Request_HttpTestCase;
        }
        return $this->_request;
    }

    /**
     * Retrieve test case response object 
     * 
     * @return Zend_Controller_Response_Abstract
     */
    public function getResponse()
    {
        if (null === $this->_response) {
            require_once 'Zend/Controller/Response/HttpTestCase.php';
            $this->_response = new Zend_Controller_Response_HttpTestCase;
        }
        return $this->_response;
    }

    /**
     * Retrieve DOM query object
     * 
     * @return Zend_Dom_Query
     */
    public function getQuery()
    {
        if (null === $this->_query) {
            require_once 'Zend/Dom/Query.php';
            $this->_query = new Zend_Dom_Query;
        }
        return $this->_query;
    }

    /**
     * Increment assertion count
     * 
     * @return void
     */
    protected function _incrementAssertionCount()
    {
        $stack = debug_backtrace();
        foreach (debug_backtrace() as $step) {
            if (isset($step['object']) 
                && $step['object'] instanceof PHPUnit_Framework_TestCase
            ) {
                if (version_compare(PHPUnit_Runner_Version::id(), '3.3.3', 'lt')) {
                    $step['object']->incrementAssertionCounter();
                } else {
                    $step['object']->addToAssertionCount(1);
                }
                break;
            }
        }
    }
}
PKpG[��
33Feed.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Feed.php 10383 2008-07-24 19:46:15Z matthew $
 */


/**
 * Feed utility class
 *
 * Base Zend_Feed class, containing constants and the Zend_Http_Client instance
 * accessor.
 *
 * @category   Zend
 * @package    Zend_Feed
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Feed
{

    /**
     * HTTP client object to use for retrieving feeds
     *
     * @var Zend_Http_Client
     */
    protected static $_httpClient = null;

    /**
     * Override HTTP PUT and DELETE request methods?
     *
     * @var boolean
     */
    protected static $_httpMethodOverride = false;

    /**
     * @var array
     */
    protected static $_namespaces = array(
        'opensearch' => 'http://a9.com/-/spec/opensearchrss/1.0/',
        'atom'       => 'http://www.w3.org/2005/Atom',
        'rss'        => 'http://blogs.law.harvard.edu/tech/rss',
    );


    /**
     * Set the HTTP client instance
     *
     * Sets the HTTP client object to use for retrieving the feeds.
     *
     * @param  Zend_Http_Client $httpClient
     * @return void
     */
    public static function setHttpClient(Zend_Http_Client $httpClient)
    {
        self::$_httpClient = $httpClient;
    }


    /**
     * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used.
     *
     * @return Zend_Http_Client_Abstract
     */
    public static function getHttpClient()
    {
        if (!self::$_httpClient instanceof Zend_Http_Client) {
            /**
             * @see Zend_Http_Client
             */
            require_once 'Zend/Http/Client.php';
            self::$_httpClient = new Zend_Http_Client();
        }

        return self::$_httpClient;
    }


    /**
     * Toggle using POST instead of PUT and DELETE HTTP methods
     *
     * Some feed implementations do not accept PUT and DELETE HTTP
     * methods, or they can't be used because of proxies or other
     * measures. This allows turning on using POST where PUT and
     * DELETE would normally be used; in addition, an
     * X-Method-Override header will be sent with a value of PUT or
     * DELETE as appropriate.
     *
     * @param  boolean $override Whether to override PUT and DELETE.
     * @return void
     */
    public static function setHttpMethodOverride($override = true)
    {
        self::$_httpMethodOverride = $override;
    }


    /**
     * Get the HTTP override state
     *
     * @return boolean
     */
    public static function getHttpMethodOverride()
    {
        return self::$_httpMethodOverride;
    }


    /**
     * Get the full version of a namespace prefix
     *
     * Looks up a prefix (atom:, etc.) in the list of registered
     * namespaces and returns the full namespace URI if
     * available. Returns the prefix, unmodified, if it's not
     * registered.
     *
     * @return string
     */
    public static function lookupNamespace($prefix)
    {
        return isset(self::$_namespaces[$prefix]) ?
            self::$_namespaces[$prefix] :
            $prefix;
    }


    /**
     * Add a namespace and prefix to the registered list
     *
     * Takes a prefix and a full namespace URI and adds them to the
     * list of registered namespaces for use by
     * Zend_Feed::lookupNamespace().
     *
     * @param  string $prefix The namespace prefix
     * @param  string $namespaceURI The full namespace URI
     * @return void
     */
    public static function registerNamespace($prefix, $namespaceURI)
    {
        self::$_namespaces[$prefix] = $namespaceURI;
    }


    /**
     * Imports a feed located at $uri.
     *
     * @param  string $uri
     * @throws Zend_Feed_Exception
     * @return Zend_Feed_Abstract
     */
    public static function import($uri)
    {
        $client = self::getHttpClient();
        $client->setUri($uri);
        $response = $client->request('GET');
        if ($response->getStatus() !== 200) {
            /**
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus());
        }
        $feed = $response->getBody();
        return self::importString($feed);
    }


    /**
     * Imports a feed represented by $string.
     *
     * @param  string $string
     * @throws Zend_Feed_Exception
     * @return Zend_Feed_Abstract
     */
    public static function importString($string)
    {
        // Load the feed as an XML DOMDocument object
        @ini_set('track_errors', 1);
        $doc = new DOMDocument;
        $status = @$doc->loadXML($string);
        @ini_restore('track_errors');

        if (!$status) {
            // prevent the class to generate an undefined variable notice (ZF-2590)
            if (!isset($php_errormsg)) {
                if (function_exists('xdebug_is_enabled')) {
                    $php_errormsg = '(error message not available, when XDebug is running)';
                } else {
                    $php_errormsg = '(error message not available)';
                }
            }

            /**
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg");
        }

        // Try to find the base feed element or a single <entry> of an Atom feed
        if ($doc->getElementsByTagName('feed')->item(0) ||
            $doc->getElementsByTagName('entry')->item(0)) {
            /**
             * @see Zend_Feed_Atom
             */
            require_once 'Zend/Feed/Atom.php';
            // return a newly created Zend_Feed_Atom object
            return new Zend_Feed_Atom(null, $string);
        }

        // Try to find the base feed element of an RSS feed
        if ($doc->getElementsByTagName('channel')->item(0)) {
            /**
             * @see Zend_Feed_Rss
             */
            require_once 'Zend/Feed/Rss.php';
            // return a newly created Zend_Feed_Rss object
            return new Zend_Feed_Rss(null, $string);
        }

        // $string does not appear to be a valid feed of the supported types
        /**
         * @see Zend_Feed_Exception
         */
        require_once 'Zend/Feed/Exception.php';
        throw new Zend_Feed_Exception('Invalid or unsupported feed format');
    }


    /**
     * Imports a feed from a file located at $filename.
     *
     * @param  string $filename
     * @throws Zend_Feed_Exception
     * @return Zend_Feed_Abstract
     */
    public static function importFile($filename)
    {
        @ini_set('track_errors', 1);
        $feed = @file_get_contents($filename);
        @ini_restore('track_errors');
        if ($feed === false) {
            /**
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception("File could not be loaded: $php_errormsg");
        }
        return self::importString($feed);
    }


    /**
     * Attempts to find feeds at $uri referenced by <link ... /> tags. Returns an
     * array of the feeds referenced at $uri.
     *
     * @todo Allow findFeeds() to follow one, but only one, code 302.
     *
     * @param  string $uri
     * @throws Zend_Feed_Exception
     * @return array
     */
    public static function findFeeds($uri)
    {
        // Get the HTTP response from $uri and save the contents
        $client = self::getHttpClient();
        $client->setUri($uri);
        $response = $client->request();
        if ($response->getStatus() !== 200) {
            /**
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception("Failed to access $uri, got response code " . $response->getStatus());
        }
        $contents = $response->getBody();

        // Parse the contents for appropriate <link ... /> tags
        @ini_set('track_errors', 1);
        $pattern = '~(<link[^>]+)/?>~i';
        $result = @preg_match_all($pattern, $contents, $matches);
        @ini_restore('track_errors');
        if ($result === false) {
            /**
             * @see Zend_Feed_Exception
             */
            require_once 'Zend/Feed/Exception.php';
            throw new Zend_Feed_Exception("Internal error: $php_errormsg");
        }

        // Try to fetch a feed for each link tag that appears to refer to a feed
        $feeds = array();
        if (isset($matches[1]) && count($matches[1]) > 0) {
            foreach ($matches[1] as $link) {
                // force string to be an utf-8 one
                if (!mb_check_encoding($link, 'UTF-8')) {
                    $link = mb_convert_encoding($link, 'UTF-8');
                }
                $xml = @simplexml_load_string(rtrim($link, ' /') . ' />');
                if ($xml === false) {
                    continue;
                }
                $attributes = $xml->attributes();
                if (!isset($attributes['rel']) || !@preg_match('~^(?:alternate|service\.feed)~i', $attributes['rel'])) {
                    continue;
                }
                if (!isset($attributes['type']) ||
                        !@preg_match('~^application/(?:atom|rss|rdf)\+xml~', $attributes['type'])) {
                    continue;
                }
                if (!isset($attributes['href'])) {
                    continue;
                }
                try {
                    // checks if we need to canonize the given uri
                    try {
                        $uri = Zend_Uri::factory((string) $attributes['href']);
                    } catch (Zend_Uri_Exception $e) {
                        // canonize the uri
                        $path = (string) $attributes['href'];
                        $query = $fragment = '';
                        if (substr($path, 0, 1) != '/') {
                            // add the current root path to this one
                            $path = rtrim($client->getUri()->getPath(), '/') . '/' . $path;
                        }
                        if (strpos($path, '?') !== false) {
                            list($path, $query) = explode('?', $path, 2);
                        }
                        if (strpos($query, '#') !== false) {
                            list($query, $fragment) = explode('#', $query, 2);
                        }
                        $uri = Zend_Uri::factory($client->getUri(true));
                        $uri->setPath($path);
                        $uri->setQuery($query);
                        $uri->setFragment($fragment);
                    }

                    $feed = self::import($uri);
                } catch (Exception $e) {
                    continue;
                }
                $feeds[] = $feed;
            }
        }

        // Return the fetched feeds
        return $feeds;
    }

    /**
     * Construct a new Zend_Feed_Abstract object from a custom array
     *
     * @param  array  $data
     * @param  string $format (rss|atom) the requested output format
     * @return Zend_Feed_Abstract
     */
    public static function importArray(array $data, $format = 'atom')
    {
        $obj = 'Zend_Feed_' . ucfirst(strtolower($format));
        /**
         * @see Zend_Loader
         */
        require_once 'Zend/Loader.php';
        Zend_Loader::loadClass($obj);
        Zend_Loader::loadClass('Zend_Feed_Builder');

        return new $obj(null, null, new Zend_Feed_Builder($data));
    }

    /**
     * Construct a new Zend_Feed_Abstract object from a Zend_Feed_Builder_Interface data source
     *
     * @param  Zend_Feed_Builder_Interface $builder this object will be used to extract the data of the feed
     * @param  string                      $format (rss|atom) the requested output format
     * @return Zend_Feed_Abstract
     */
    public static function importBuilder(Zend_Feed_Builder_Interface $builder, $format = 'atom')
    {
        $obj = 'Zend_Feed_' . ucfirst(strtolower($format));
        /**
         * @see Zend_Loader
         */
        require_once 'Zend/Loader.php';
        Zend_Loader::loadClass($obj);

        return new $obj(null, null, $builder);
    }
}
PKpG[���-��Form/Decorator/FormElements.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_FormElements
 *
 * Render all form elements registered with current form
 *
 * Accepts following options:
 * - separator: Separator to use between elements
 *
 * Any other options passed will be used as HTML attributes of the form tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: FormElements.php 12347 2008-11-06 21:45:56Z matthew $
 */
class Zend_Form_Decorator_FormElements extends Zend_Form_Decorator_Abstract
{
    /**
     * Merges given two belongsTo (array notation) strings
     *
     * @param  string $baseBelongsTo
     * @param  string $belongsTo
     * @return string
     */
    public function mergeBelongsTo($baseBelongsTo, $belongsTo)
    {
        $endOfArrayName = strpos($belongsTo, '[');

        if ($endOfArrayName === false) {
            return $baseBelongsTo . '[' . $belongsTo . ']';
        }

        $arrayName = substr($belongsTo, 0, $endOfArrayName);

        return $baseBelongsTo . '[' . $arrayName . ']' . substr($belongsTo, $endOfArrayName);
    }

    /**
     * Render form elements
     *
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $form    = $this->getElement();
        if ((!$form instanceof Zend_Form) && (!$form instanceof Zend_Form_DisplayGroup)) {
            return $content;
        }

        $belongsTo      = ($form instanceof Zend_Form) ? $form->getElementsBelongTo() : null;
        $elementContent = '';
        $separator      = $this->getSeparator();
        $translator     = $form->getTranslator();
        $items          = array();
        $view           = $form->getView();
        foreach ($form as $item) {
            $item->setView($view)
                 ->setTranslator($translator);
            if ($item instanceof Zend_Form_Element) {
                $item->setBelongsTo($belongsTo);
            } elseif (!empty($belongsTo) && ($item instanceof Zend_Form)) {
                if ($item->isArray()) {
                    $name = $this->mergeBelongsTo($belongsTo, $item->getElementsBelongTo());
                    $item->setElementsBelongTo($name, true);
                } else {
                    $item->setElementsBelongTo($belongsTo, true);
                }
            } elseif (!empty($belongsTo) && ($item instanceof Zend_Form_DisplayGroup)) {
                foreach ($item as $element) {
                    $element->setBelongsTo($belongsTo);
                }
            }
            $items[] = $item->render();
        }
        $elementContent = implode($separator, $items);

        switch ($this->getPlacement()) {
            case self::PREPEND:
                return $elementContent . $separator . $content;
            case self::APPEND:
            default:
                return $content . $separator . $elementContent;
        }
    }
}
PKpG[�T�n�$�$Form/Decorator/Label.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Label
 *
 * Accepts the options:
 * - separator: separator to use between label and content (defaults to PHP_EOL)
 * - placement: whether to append or prepend label to content (defaults to prepend)
 * - tag: if set, used to wrap the label in an additional HTML tag
 * - opt(ional)Prefix: a prefix to the label to use when the element is optional
 * - opt(iona)lSuffix: a suffix to the label to use when the element is optional
 * - req(uired)Prefix: a prefix to the label to use when the element is required
 * - req(uired)Suffix: a suffix to the label to use when the element is required
 *
 * Any other options passed will be used as HTML attributes of the label tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Label.php 12383 2008-11-07 19:38:55Z matthew $
 */
class Zend_Form_Decorator_Label extends Zend_Form_Decorator_Abstract
{
    /**
     * Default placement: prepend
     * @var string
     */
    protected $_placement = 'PREPEND';

    /**
     * HTML tag with which to surround label
     * @var string
     */
    protected $_tag;

    /**
     * Set element ID
     * 
     * @param  string $id 
     * @return Zend_Form_Decorator_Label
     */
    public function setId($id)
    {
        $this->setOption('id', $id);
        return $this;
    }

    /**
     * Retrieve element ID (used in 'for' attribute)
     *
     * If none set in decorator, looks first for element 'id' attribute, and 
     * defaults to element name.
     * 
     * @return string
     */
    public function getId()
    {
        $id = $this->getOption('id');
        if (null === $id) {
            if (null !== ($element = $this->getElement())) {
                $id = $element->getId();
                $this->setId($id);
            }
        }

        return $id;
    }

    /**
     * Set HTML tag with which to surround label
     * 
     * @param  string $tag 
     * @return Zend_Form_Decorator_Label
     */
    public function setTag($tag)
    {
        if (empty($tag)) {
            $this->_tag = null;
        } else {
            $this->_tag = (string) $tag;
        }
        return $this;
    }

    /**
     * Get HTML tag, if any, with which to surround label
     * 
     * @return void
     */
    public function getTag()
    {
        if (null === $this->_tag) {
            $tag = $this->getOption('tag');
            if (null !== $tag) {
                $this->removeOption('tag');
                $this->setTag($tag);
            }
            return $tag;
        }

        return $this->_tag;
    }

    /**
     * Get class with which to define label
     *
     * Appends either 'optional' or 'required' to class, depending on whether 
     * or not the element is required.
     * 
     * @return string
     */
    public function getClass()
    {
        $class   = '';
        $element = $this->getElement();

        $decoratorClass = $this->getOption('class');
        if (!empty($decoratorClass)) {
            $class .= ' ' . $decoratorClass;
        }

        $type  = $element->isRequired() ? 'required' : 'optional';

        if (!strstr($class, $type)) {
            $class .= ' ' . $type;
            $class = trim($class);
        }

        return $class;
    }

    /**
     * Load an optional/required suffix/prefix key
     * 
     * @param  string $key 
     * @return void
     */
    protected function _loadOptReqKey($key)
    {
        if (!isset($this->$key)) {
            $value = $this->getOption($key);
            $this->$key = (string) $value;
            if (null !== $value) {
                $this->removeOption($key);
            }
        }
    }

    /**
     * Overloading
     *
     * Currently overloads:
     *
     * - getOpt(ional)Prefix()
     * - getOpt(ional)Suffix()
     * - getReq(uired)Prefix()
     * - getReq(uired)Suffix()
     * - setOpt(ional)Prefix()
     * - setOpt(ional)Suffix()
     * - setReq(uired)Prefix()
     * - setReq(uired)Suffix()
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     * @throws Zend_Form_Exception for unsupported methods
     */
    public function __call($method, $args)
    {
        $tail = substr($method, -6);
        $head = substr($method, 0, 3);
        if (in_array($head, array('get', 'set'))
            && (('Prefix' == $tail) || ('Suffix' == $tail))
        ) {
            $position = substr($method, -6);
            $type     = strtolower(substr($method, 3, 3));
            switch ($type) {
                case 'req':
                    $key = 'required' . $position;
                    break;
                case 'opt':
                    $key = 'optional' . $position;
                    break;
                default:
                    require_once 'Zend/Form/Exception.php';
                    throw new Zend_Form_Exception(sprintf('Invalid method "%s" called in Label decorator, and detected as type %s', $method, $type));
            }

            switch ($head) {
                case 'set':
                    if (0 === count($args)) {
                        require_once 'Zend/Form/Exception.php';
                        throw new Zend_Form_Exception(sprintf('Method "%s" requires at least one argument; none provided', $method));
                    }
                    $value = array_shift($args);
                    $this->$key = $value;
                    return $this;
                case 'get':
                default:
                    if (null === ($element = $this->getElement())) {
                        $this->_loadOptReqKey($key);
                    } elseif (isset($element->$key)) {
                        $this->$key = (string) $element->$key;
                    } else {
                        $this->_loadOptReqKey($key);
                    }
                    return $this->$key;
            }
        }

        require_once 'Zend/Form/Exception.php';
        throw new Zend_Form_Exception(sprintf('Invalid method "%s" called in Label decorator', $method));
    }

    /**
     * Get label to render
     * 
     * @return void
     */
    public function getLabel()
    {
        if (null === ($element = $this->getElement())) {
            return '';
        }

        $label = $element->getLabel();
        $label = trim($label);

        if (empty($label)) {
            return '';
        }

        if (null !== ($translator = $element->getTranslator())) {
            $label = $translator->translate($label);
        }

        $optPrefix = $this->getOptPrefix();
        $optSuffix = $this->getOptSuffix();
        $reqPrefix = $this->getReqPrefix();
        $reqSuffix = $this->getReqSuffix();
        $separator = $this->getSeparator();

        if (!empty($label)) {
            if ($element->isRequired()) {
                $label = $reqPrefix . $label . $reqSuffix;
            } else {
                $label = $optPrefix . $label . $optSuffix;
            }
        }

        return $label;
    }


    /**
     * Render a label
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $label     = $this->getLabel();
        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
        $tag       = $this->getTag();
        $id        = $this->getId();
        $class     = $this->getClass();
        $options   = $this->getOptions();


        if (empty($label) && empty($tag)) {
            return $content;
        }

        if (!empty($label)) {
            $options['class'] = $class;
            $label = $view->formLabel($element->getFullyQualifiedName(), trim($label), $options); 
        } else {
            $label = '&nbsp;';
        }

        if (null !== $tag) {
            require_once 'Zend/Form/Decorator/HtmlTag.php';
            $decorator = new Zend_Form_Decorator_HtmlTag();
            $decorator->setOptions(array('tag' => $tag));
            $label = $decorator->render($label);
        }

        switch ($placement) {
            case self::APPEND:
                return $content . $separator . $label;
            case self::PREPEND:
                return $label . $separator . $content;
        }
    }
}
PKpG[���i��Form/Decorator/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Image
 *
 * Accepts the options:
 * - separator: separator to use between image and content (defaults to PHP_EOL)
 * - placement: whether to append or prepend label to content (defaults to append)
 * - tag: if set, used to wrap the label in an additional HTML tag
 *
 * Any other options passed will be used as HTML attributes of the image tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Image.php 10008 2008-07-09 16:52:08Z matthew $
 */
class Zend_Form_Decorator_Image extends Zend_Form_Decorator_Abstract
{
    /**
     * Attributes that should not be passed to helper
     * @var array
     */
    protected $_attribBlacklist = array('helper', 'placement', 'separator', 'tag');

    /**
     * Default placement: append
     * @var string
     */
    protected $_placement = 'APPEND';

    /**
     * HTML tag with which to surround image
     * @var string
     */
    protected $_tag;

    /**
     * Set HTML tag with which to surround label
     * 
     * @param  string $tag 
     * @return Zend_Form_Decorator_Image
     */
    public function setTag($tag)
    {
        $this->_tag = (string) $tag;
        return $this;
    }

    /**
     * Get HTML tag, if any, with which to surround label
     * 
     * @return void
     */
    public function getTag()
    {
        if (null === $this->_tag) {
            $tag = $this->getOption('tag');
            if (null !== $tag) {
                $this->removeOption('tag');
                $this->setTag($tag);
            }
            return $tag;
        }

        return $this->_tag;
    }

    /**
     * Get attributes to pass to image helper
     * 
     * @return array
     */
    public function getAttribs()
    {
        $attribs = $this->getOptions();

        if (null !== ($element = $this->getElement())) {
            $attribs['alt'] = $element->getLabel();
            $attribs = array_merge($attribs, $element->getAttribs());
        }

        foreach ($this->_attribBlacklist as $key) {
            if (array_key_exists($key, $attribs)) {
                unset($attribs[$key]);
            }
        }

        return $attribs;
    }

    /**
     * Render a form image
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $tag           = $this->getTag();
        $placement     = $this->getPlacement();
        $separator     = $this->getSeparator();
        $name          = $element->getFullyQualifiedName();
        $attribs       = $this->getAttribs();
        $attribs['id'] = $element->getId();

        $image = $view->formImage($name, $element->getImageValue(), $attribs); 

        if (null !== $tag) {
            require_once 'Zend/Form/Decorator/HtmlTag.php';
            $decorator = new Zend_Form_Decorator_HtmlTag();
            $decorator->setOptions(array('tag' => $tag));
            $image = $decorator->render($image);
        }

        switch ($placement) {
            case self::PREPEND:
                return $image . $separator . $content;
            case self::APPEND:
            default:
                return $content . $separator . $image;
        }
    }
}
PKpG[?����Form/Decorator/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Form_Decorator_Interface
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */
interface Zend_Form_Decorator_Interface
{
    /**
     * Constructor
     *
     * Accept options during initialization.
     * 
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($options = null);

    /**
     * Set an element to decorate
     *
     * While the name is "setElement", a form decorator could decorate either 
     * an element or a form object.
     * 
     * @param  mixed $element 
     * @return Zend_Form_Decorator_Interface
     */
    public function setElement($element);

    /**
     * Retrieve current element
     * 
     * @return mixed
     */
    public function getElement();

    /**
     * Set decorator options from an array
     * 
     * @param  array $options 
     * @return Zend_Form_Decorator_Interface
     */
    public function setOptions(array $options);

    /**
     * Set decorator options from a config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Form_Decorator_Interface
     */
    public function setConfig(Zend_Config $config);

    /**
     * Set a single option
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Form_Decorator_Interface
     */
    public function setOption($key, $value);

    /**
     * Retrieve a single option
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getOption($key);

    /**
     * Retrieve decorator options
     * 
     * @return array
     */
    public function getOptions();

    /**
     * Delete a single option
     * 
     * @param  string $key 
     * @return bool
     */
    public function removeOption($key);

    /**
     * Clear all options
     * 
     * @return Zend_Form_Decorator_Interface
     */
    public function clearOptions();

    /**
     * Render the element
     * 
     * @param  string $content Content to decorate
     * @return string
     */
    public function render($content);
}
PKpG[�=_�"Form/Decorator/PrepareElements.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_FormElements */
require_once 'Zend/Form/Decorator/FormElements.php';

/**
 * Zend_Form_Decorator_PrepareElements
 *
 * Render all form elements registered with current form
 *
 * Accepts following options:
 * - separator: Separator to use between elements
 *
 * Any other options passed will be used as HTML attributes of the form tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PrepareElements.php 12347 2008-11-06 21:45:56Z matthew $
 */
class Zend_Form_Decorator_PrepareElements extends Zend_Form_Decorator_FormElements
{
    /**
     * Render form elements
     *
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $form = $this->getElement();
        if ((!$form instanceof Zend_Form) && (!$form instanceof Zend_Form_DisplayGroup)) {
            return $content;
        }

        $this->_recursivelyPrepareForm($form);

        return $content;
    }

    protected function _recursivelyPrepareForm(Zend_Form $form)
    {
        $belongsTo      = ($form instanceof Zend_Form) ? $form->getElementsBelongTo() : null;
        $elementContent = '';
        $separator      = $this->getSeparator();
        $translator     = $form->getTranslator();
        $view           = $form->getView();

        foreach ($form as $item) {
            $item->setView($view)
                 ->setTranslator($translator);
            if ($item instanceof Zend_Form_Element) {
                $item->setBelongsTo($belongsTo);
            } elseif (!empty($belongsTo) && ($item instanceof Zend_Form)) {
                if ($item->isArray()) {
                    $name = $this->mergeBelongsTo($belongsTo, $item->getElementsBelongTo());
                    $item->setElementsBelongTo($name, true);
                } else {
                    $item->setElementsBelongTo($belongsTo, true);
                }
                $this->_recursivelyPrepareForm($item);
            } elseif (!empty($belongsTo) && ($item instanceof Zend_Form_DisplayGroup)) {
                foreach ($item as $element) {
                    $element->setBelongsTo($belongsTo);
                }
            }
        }
    }
}
PKpG[:�,���Form/Decorator/ViewScript.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_ViewScript
 *
 * Render a view script as a decorator
 *
 * Accepts the options:
 * - separator: separator to use between view script content and provided content (defaults to PHP_EOL)
 * - placement: whether to append or prepend view script content to provided content (defaults to prepend)
 * - viewScript: view script to use
 *
 * The view script is rendered as a partial; the element being decorated is 
 * passed in as the 'element' variable:
 * <code>
 * // in view script:
 * echo $this->element->getLabel();
 * </code>
 *
 * Any options other than separator, placement, and viewScript are passed to 
 * the partial as local variables.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ViewScript.php 8651 2008-03-07 20:24:34Z matthew $
 */
class Zend_Form_Decorator_ViewScript extends Zend_Form_Decorator_Abstract
{
    /**
     * Default placement: append
     * @var string
     */
    protected $_placement = 'APPEND';

    /**
     * View script to render
     * @var string
     */
    protected $_viewScript;

    /**
     * Set view script
     * 
     * @param  string $script 
     * @return Zend_Form_Decorator_ViewScript
     */
    public function setViewScript($script)
    {
        $this->_viewScript = (string) $script;
        return $this;
    }

    /**
     * Get view script
     * 
     * @return string|null
     */
    public function getViewScript()
    {
        if (null === $this->_viewScript) {
            if (null !== ($element = $this->getElement())) {
                if (null !== ($viewScript = $element->getAttrib('viewScript'))) {
                    $this->setViewScript($viewScript);
                    return $viewScript;
                }
            }

            if (null !== ($viewScript = $this->getOption('viewScript'))) {
                $this->setViewScript($viewScript)
                     ->removeOption('viewScript');
            }
        }

        return $this->_viewScript;
    }

    /**
     * Render a view script
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $viewScript = $this->getViewScript();
        if (empty($viewScript)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('No view script registered with ViewScript decorator');
        }

        $separator = $this->getSeparator();
        $placement = $this->getPlacement();

        $vars              = $this->getOptions();
        $vars['element']   = $element;
        $vars['content']   = $content;
        $vars['decorator'] = $this;

        $renderedContent = $view->partial($viewScript, $vars);

        // Get placement again to see if it has changed
        $placement = $this->getPlacement();

        switch ($placement) {
            case self::PREPEND:
                return $renderedContent . $separator . $content;
            case self::APPEND:
                return $content . $separator . $renderedContent;
            default:
                return $renderedContent;
        }
    }
}
PKpG[v�?%%Form/Decorator/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Interface */
require_once 'Zend/Form/Decorator/Interface.php';

/**
 * Zend_Form_Decorator_Abstract
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8892 2008-03-18 19:47:46Z thomas $
 */
abstract class Zend_Form_Decorator_Abstract implements Zend_Form_Decorator_Interface
{
    /**
     * Placement constants
     */
    const APPEND  = 'APPEND';
    const PREPEND = 'PREPEND';

    /**
     * Default placement: append
     * @var string
     */
    protected $_placement = 'APPEND';

    /** 
     * @var Zend_Form_Element|Zend_Form
     */
    protected $_element;

    /**
     * Decorator options
     * @var array
     */
    protected $_options = array();

    /**
     * Separator between new content and old
     * @var string
     */
    protected $_separator = PHP_EOL;

    /**
     * Constructor
     * 
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        } elseif ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }
    }

    /**
     * Set options
     * 
     * @param  array $options 
     * @return Zend_Form_Decorator_Abstract
     */
    public function setOptions(array $options)
    {
        $this->_options = $options;
        return $this;
    }

    /**
     * Set options from config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Form_Decorator_Abstract
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

    /**
     * Set option
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Form_Decorator_Abstract
     */
    public function setOption($key, $value)
    {
        $this->_options[(string) $key] = $value;
        return $this;
    }

    /**
     * Get option
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getOption($key)
    {
        $key = (string) $key;
        if (isset($this->_options[$key])) {
            return $this->_options[$key];
        }

        return null;
    }

    /**
     * Retrieve options
     * 
     * @return array
     */
    public function getOptions()
    {
        return $this->_options;
    }

    /**
     * Remove single option
     * 
     * @param mixed $key 
     * @return void
     */
    public function removeOption($key)
    {
        if (null !== $this->getOption($key)) {
            unset($this->_options[$key]);
            return true;
        }

        return false;
    }

    /**
     * Clear all options
     * 
     * @return Zend_Form_Decorator_Abstract
     */
    public function clearOptions()
    {
        $this->_options = array();
        return $this;
    }

    /**
     * Set current form element
     * 
     * @param  Zend_Form_Element|Zend_Form $element 
     * @return Zend_Form_Decorator_Abstract
     * @throws Zend_Form_Decorator_Exception on invalid element type
     */
    public function setElement($element)
    {
        if ((!$element instanceof Zend_Form_Element)
            && (!$element instanceof Zend_Form)
            && (!$element instanceof Zend_Form_DisplayGroup))
        {
            require_once 'Zend/Form/Decorator/Exception.php';
            throw new Zend_Form_Decorator_Exception('Invalid element type passed to decorator');
        }

        $this->_element = $element;
        return $this;
    }

    /**
     * Retrieve current element
     * 
     * @return Zend_Form_Element|Zend_Form
     */
    public function getElement()
    {
        return $this->_element;
    }

    /**
     * Determine if decorator should append or prepend content
     * 
     * @return string
     */
    public function getPlacement()
    {
        $placement = $this->_placement;
        if (null !== ($placementOpt = $this->getOption('placement'))) {
            $placementOpt = strtoupper($placementOpt);
            switch ($placementOpt) {
                case self::APPEND:
                case self::PREPEND:
                    $placement = $this->_placement = $placementOpt;
                    break;
                case false:
                    $placement = $this->_placement = null;
                    break;
                default:
                    break;
            }
            $this->removeOption('placement');
        }

        return $placement;
    }

    /**
     * Retrieve separator to use between old and new content
     * 
     * @return string
     */
    public function getSeparator()
    {
        $separator = $this->_separator;
        if (null !== ($separatorOpt = $this->getOption('separator'))) {
            $separator = $this->_separator = (string) $separatorOpt;
            $this->removeOption('separator');
        }
        return $separator;
    }

    /**
     * Decorate content and/or element
     * 
     * @param  string $content
     * @return string
     * @throws Zend_Dorm_Decorator_Exception when unimplemented
     */
    public function render($content)
    {
        require_once 'Zend/Form/Decorator/Exception.php';
        throw new Zend_Form_Decorator_Exception('render() not implemented');
    }
}
PKpG[�[���Form/Decorator/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Exception */
require_once 'Zend/Form/Exception.php';

/**
 * Exception for Zend_Form component.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Form_Decorator_Exception extends Zend_Form_Exception
{
}
PKpG[9���Form/Decorator/Callback.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Callback
 *
 * Execute an arbitrary callback to decorate an element. Callbacks should take 
 * three arguments, $content, $element, and $options:
 *
 * function mycallback($content, $element, array $options)
 * {
 * }
 *
 * and should return a string. ($options are whatever options were provided to 
 * the decorator.)
 *
 * To specify a callback, pass a valid callback as the 'callback' option.
 *
 * Callback results will be either appended, prepended, or replace the provided
 * content. To replace the content, specify a placement of boolean false; 
 * defaults to append content.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Callback.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Decorator_Callback extends Zend_Form_Decorator_Abstract
{
    /**
     * Callback
     * @var string|array
     */
    protected $_callback;

    /**
     * Set callback
     * 
     * @param  string|array $callback 
     * @return Zend_Form_Decorator_Callback
     * @throws Zend_Form_Exception
     */
    public function setCallback($callback)
    {
        if (!is_string($callback) && !is_array($callback)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid callback provided to callback decorator');
        }

        if (is_array($callback)) {
            if (2 !== count($callback)) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid method callback provided to callback decorator');
            }
        }

        $this->_callback = $callback;
        return $this;
    }

    /**
     * Get registered callback
     *
     * If not previously registered, checks to see if it exists in registered 
     * options.
     * 
     * @return null|string|array
     */
    public function getCallback()
    {
        if (null === $this->_callback) {
            if (null !== ($callback = $this->getOption('callback'))) {
                $this->setCallback($callback);
                $this->removeOption('callback');
            }
        }

        return $this->_callback;
    }

    /**
     * Render 
     *
     * If no callback registered, returns callback. Otherwise, gets return 
     * value of callback and either appends, prepends, or replaces passed in
     * content.
     *
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $callback = $this->getCallback();
        if (null === $callback) {
            return $content;
        }

        $placement = $this->getPlacement();
        $separator = $this->getSeparator();

        $response = call_user_func($callback, $content, $this->getElement(), $this->getOptions());

        switch ($placement) {
            case self::APPEND:
                return $content . $separator . $response;
            case self::PREPEND:
                return $response . $separator . $content;
            default:
                // replace content
                return $response;
        }
    }
}
PKpG[�"���Form/Decorator/ViewHelper.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_ViewHelper
 *
 * Decorate an element by using a view helper to render it.
 *
 * Accepts the following options:
 * - separator: string with which to separate passed in content and generated content
 * - placement: whether to append or prepend the generated content to the passed in content
 * - helper:    the name of the view helper to use
 *
 * Assumes the view helper accepts three parameters, the name, value, and 
 * optional attributes; these will be provided by the element.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ViewHelper.php 12374 2008-11-07 17:49:43Z matthew $
 */
class Zend_Form_Decorator_ViewHelper extends Zend_Form_Decorator_Abstract
{
    /**
     * Element types that represent buttons
     * @var array
     */
    protected $_buttonTypes = array(
        'Zend_Form_Element_Button',
        'Zend_Form_Element_Reset',
        'Zend_Form_Element_Submit',
    );

    /**
     * View helper to use when rendering
     * @var string
     */
    protected $_helper;

    /**
     * Set view helper to use when rendering
     * 
     * @param  string $helper 
     * @return Zend_Form_Decorator_Element_ViewHelper
     */
    public function setHelper($helper)
    {
        $this->_helper = (string) $helper;
        return $this;
    }

    /**
     * Retrieve view helper for rendering element
     *
     * @return string
     */
    public function getHelper()
    {
        if (null === $this->_helper) {
            $options = $this->getOptions();
            if (isset($options['helper'])) {
                $this->setHelper($options['helper']);
                $this->removeOption('helper');
            } else {
                $element = $this->getElement();
                if (null !== $element) {
                    if (null !== ($helper = $element->getAttrib('helper'))) {
                        $this->setHelper($helper);
                    } else {
                        $type = $element->getType();
                        if ($pos = strrpos($type, '_')) {
                            $type = substr($type, $pos + 1);
                        }
                        $this->setHelper('form' . ucfirst($type));
                    }
                }
            }
        }

        return $this->_helper;
    }

    /**
     * Get name
     *
     * If element is a Zend_Form_Element, will attempt to namespace it if the 
     * element belongs to an array.
     * 
     * @return string
     */
    public function getName()
    {
        if (null === ($element = $this->getElement())) {
            return '';
        }

        $name = $element->getName();

        if (!$element instanceof Zend_Form_Element) {
            return $name;
        }

        if (null !== ($belongsTo = $element->getBelongsTo())) {
            $name = $belongsTo . '['
                  . $name
                  . ']';
        }

        if ($element->isArray()) {
            $name .= '[]';
        }

        return $name;
    }

    /**
     * Retrieve element attributes
     *
     * Set id to element name and/or array item.
     * 
     * @return array
     */
    public function getElementAttribs()
    {
        if (null === ($element = $this->getElement())) {
            return null;
        }

        $attribs = $element->getAttribs();
        if (isset($attribs['helper'])) {
            unset($attribs['helper']);
        }

        if (method_exists($element, 'getSeparator')) {
            if (null !== ($listsep = $element->getSeparator())) {
                $attribs['listsep'] = $listsep;
            }
        }

        if (isset($attribs['id'])) {
            return $attribs;
        }

        $id = $element->getName();

        if ($element instanceof Zend_Form_Element) {
            if (null !== ($belongsTo = $element->getBelongsTo())) {
                $belongsTo = preg_replace('/\[([^\]]+)\]/', '-$1', $belongsTo);
                $id = $belongsTo . '-' . $id;
            }
        }

        $element->setAttrib('id', $id);
        $attribs['id'] = $id;

        return $attribs;
    }

    /**
     * Get value
     *
     * If element type is one of the button types, returns the label.
     * 
     * @param  Zend_Form_Element $element 
     * @return string|null
     */
    public function getValue($element)
    {
        if (!$element instanceof Zend_Form_Element) {
            return null;
        }

        foreach ($this->_buttonTypes as $type) {
            if ($element instanceof $type) {
                if (stristr($type, 'button')) {
                    $element->content = $element->getLabel();
                    return null;
                }
                return $element->getLabel();
            }
        }

        return $element->getValue();
    }

    /**
     * Render an element using a view helper
     *
     * Determine view helper from 'viewHelper' option, or, if none set, from 
     * the element type. Then call as 
     * helper($element->getName(), $element->getValue(), $element->getAttribs())
     * 
     * @param  string $content
     * @return string
     * @throws Zend_Form_Decorator_Exception if element or view are not registered
     */
    public function render($content)
    {
        $element = $this->getElement();

        $view = $element->getView();
        if (null === $view) {
            require_once 'Zend/Form/Decorator/Exception.php';
            throw new Zend_Form_Decorator_Exception('ViewHelper decorator cannot render without a registered view object');
        }

        if (method_exists($element, 'getMultiOptions')) {
            $element->getMultiOptions();
        }

        $helper        = $this->getHelper();
        $separator     = $this->getSeparator();
        $value         = $this->getValue($element);
        $attribs       = $this->getElementAttribs();
        $name          = $element->getFullyQualifiedName();
        $id            = $element->getId();
        $attribs['id'] = $id;

        $elementContent = $view->$helper($name, $value, $attribs, $element->options);
        switch ($this->getPlacement()) {
            case self::APPEND:
                return $content . $separator . $elementContent;
            case self::PREPEND:
                return $elementContent . $separator . $content;
            default:
                return $elementContent;
        }
    }
}
PKpG[qV�u��Form/Decorator/Form.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Form
 *
 * Render a Zend_Form object. 
 *
 * Accepts following options:
 * - separator: Separator to use between elements
 * - helper: which view helper to use when rendering form. Should accept three
 *   arguments, string content, a name, and an array of attributes.
 *
 * Any other options passed will be used as HTML attributes of the form tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Form.php 10014 2008-07-10 00:51:54Z matthew $
 */
class Zend_Form_Decorator_Form extends Zend_Form_Decorator_Abstract
{
    /**
     * Default view helper
     * @var string
     */
    protected $_helper = 'form';

    /**
     * Set view helper for rendering form
     * 
     * @param  string $helper 
     * @return Zend_Form_Decorator_Form
     */
    public function setHelper($helper)
    {
        $this->_helper = (string) $helper;
        return $this;
    }

    /**
     * Get view helper for rendering form
     * 
     * @return string
     */
    public function getHelper()
    {
        if (null !== ($helper = $this->getOption('helper'))) {
            $this->setHelper($helper);
            $this->removeOption('helper');
        }
        return $this->_helper;
    }

    /**
     * Retrieve decorator options
     *
     * Assures that form action and method are set, and sets appropriate 
     * encoding type if current method is POST.
     * 
     * @return array
     */
    public function getOptions()
    {
        if (null !== ($element = $this->getElement())) {
            if ($element instanceof Zend_Form) {
                $element->getAction();
                $method = $element->getMethod();
                if ($method == Zend_Form::METHOD_POST) {
                    $this->setOption('enctype', 'application/x-www-form-urlencoded');
                }
                foreach ($element->getAttribs() as $key => $value) {
                    $this->setOption($key, $value);
                }
            } elseif ($element instanceof Zend_Form_DisplayGroup) {
                foreach ($element->getAttribs() as $key => $value) {
                    $this->setOption($key, $value);
                }
            }
        }

        if (isset($this->_options['method'])) {
            $this->_options['method'] = strtolower($this->_options['method']);
        }

        return $this->_options;
    }

    /**
     * Render a form
     *
     * Replaces $content entirely from currently set element.
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $form    = $this->getElement();
        $view    = $form->getView();
        if (null === $view) {
            return $content;
        }

        $helper        = $this->getHelper();
        $attribs       = $this->getOptions();
        $name          = $form->getFullyQualifiedName();
        $attribs['id'] = $form->getId();
        return $view->$helper($name, $attribs, $content); 
    }
}
PKpG[2���Form/Decorator/DtDdWrapper.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_DtDdWrapper
 *
 * Creates an empty <dt> item, and wraps the content in a <dd>. Used as a 
 * default decorator for subforms and display groups.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DtDdWrapper.php 9309 2008-04-25 16:06:59Z matthew $
 */
class Zend_Form_Decorator_DtDdWrapper extends Zend_Form_Decorator_Abstract
{
    /**
     * Default placement: surround content
     * @var string
     */
    protected $_placement = null;

    /**
     * Render 
     *
     * Renders as the following:
     * <dt></dt>
     * <dd>$content</dd>
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        return '<dt>&nbsp;</dt><dd>' . $content . '</dd>';
    }
}
PKpG[�XXForm/Decorator/Errors.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Errors
 *
 * Any options passed will be used as HTML attributes of the ul tag for the errors.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Errors.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Decorator_Errors extends Zend_Form_Decorator_Abstract
{
    /**
     * Render errors
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $errors = $element->getMessages();
        if (empty($errors)) {
            return $content;
        }

        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
        $errors    = $view->formErrors($errors, $this->getOptions()); 

        switch ($placement) {
            case self::APPEND:
                return $content . $separator . $errors;
            case self::PREPEND:
                return $errors . $separator . $content;
        }
    }
}
PKpG[�r**Form/Decorator/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_File
 *
 * Fixes the rendering for all subform and multi file elements
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Form_Decorator_File extends Zend_Form_Decorator_Abstract
{
    /**
     * Attributes that should not be passed to helper
     * @var array
     */
    protected $_attribBlacklist = array('helper', 'placement', 'separator', 'value');

    /**
     * Default placement: append
     * @var string
     */
    protected $_placement = 'APPEND';

    /**
     * Get attributes to pass to file helper
     * 
     * @return array
     */
    public function getAttribs()
    {
        $attribs   = $this->getOptions();

        if (null !== ($element = $this->getElement())) {
            $attribs = array_merge($attribs, $element->getAttribs());
        }

        foreach ($this->_attribBlacklist as $key) {
            if (array_key_exists($key, $attribs)) {
                unset($attribs[$key]);
            }
        }

        return $attribs;
    }

    /**
     * Render a form file
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        if (!$element instanceof Zend_Form_Element) {
            return $content;
        }

        $view = $element->getView();
        if (!$view instanceof Zend_View_Interface) {
            return $content;
        }

        $name      = $element->getName();
        $attribs   = $this->getAttribs();
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $name;
        }

        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
        $markup    = array();
        $size      = $element->getMaxFileSize();
        if ($size > 0) {
            $element->setMaxFileSize(0);
            $markup[] = $view->formHidden('MAX_FILE_SIZE', $size);
        }

        if ($element->isArray()) {
            $name .= "[]";
            $count = $element->getMultiFile();
            for ($i = 0; $i < $count; ++$i) {
                $htmlAttribs        = $attribs;
                $htmlAttribs['id'] .= '-' . $i;
                $markup[] = $view->formFile($name, $htmlAttribs);
            }
        } else {
            $markup[] = $view->formFile($name, $attribs);
        }

        $markup = implode($separator, $markup);

        switch ($placement) {
            case self::PREPEND:
                return $markup . $separator . $content;
            case self::APPEND:
            default:
                return $content . $separator . $markup;
        }
    }
}
PKpG[m�p��Form/Decorator/Fieldset.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Fieldset
 *
 * Any options passed will be used as HTML attributes of the fieldset tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Fieldset.php 10689 2008-08-05 17:00:54Z matthew $
 */
class Zend_Form_Decorator_Fieldset extends Zend_Form_Decorator_Abstract
{
    /**
     * Attribs that should be removed prior to rendering
     * @var array
     */
    public $stripAttribs = array(
        'action',
        'enctype',
        'helper',
        'method',
        'name',
    );

    /**
     * Fieldset legend
     * @var string
     */
    protected $_legend;

    /**
     * Default placement: surround content
     * @var string
     */
    protected $_placement = null;

    /**
     * Get options
     *
     * Merges in element attributes as well.
     * 
     * @return array
     */
    public function getOptions()
    {
        $options = parent::getOptions();
        if (null !== ($element = $this->getElement())) {
            $attribs = $element->getAttribs();
            $options = array_merge($options, $attribs);
            $this->setOptions($options);
        }
        return $options;
    }

    /**
     * Set legend
     * 
     * @param  string $value 
     * @return Zend_Form_Decorator_Fieldset
     */
    public function setLegend($value)
    {
        $this->_legend = (string) $value;
        return $this;
    }

    /**
     * Get legend
     * 
     * @return string
     */
    public function getLegend()
    {
        $legend = $this->_legend;
        if ((null === $legend) && (null !== ($element = $this->getElement()))) {
            if (method_exists($element, 'getLegend')) {
                $legend = $element->getLegend();
                $this->setLegend($legend);
            }
        }
        if ((null === $legend) && (null !== ($legend = $this->getOption('legend')))) {
            $this->setLegend($legend);
            $this->removeOption('legend');
        }

        return $legend;
    }

    /**
     * Render a fieldset
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $legend        = $this->getLegend();
        $attribs       = $this->getOptions();
        $name          = $element->getFullyQualifiedName();

        $id = $element->getId();
        if (!empty($id)) {
            $attribs['id'] = 'fieldset-' . $id;
        }

        if (null !== $legend) {
            if (null !== ($translator = $element->getTranslator())) {
                $legend = $translator->translate($legend);
            }

            $attribs['legend'] = $legend;
        }

        foreach (array_keys($attribs) as $attrib) {
            $testAttrib = strtolower($attrib);
            if (in_array($testAttrib, $this->stripAttribs)) {
                unset($attribs[$attrib]);
            }
        }

        return $view->fieldset($name, $content, $attribs);
    }
}
PKpG[mi�Form/Decorator/Captcha.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Captcha generic decorator
 * 
 * Adds captcha adapter output
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Form_Decorator_Captcha extends Zend_Form_Decorator_Abstract
{
    /**
     * Render captcha
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        if (!method_exists($element, 'getCaptcha')) {
            return $content;
        }

        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $placement = $this->getPlacement();
        $separator = $this->getSeparator();

        $captcha = $element->getCaptcha();
        $markup  = $captcha->render($view, $element);
        switch ($placement) {
            case 'PREPEND':
                $content = $markup . $separator .  $content;
                break;
            case 'APPEND':
            default:
                $content = $content . $separator . $markup;
        }
        return $content;
    }
}
PKpG[��hl},},Form/Decorator/FormErrors.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_FormErrors
 *
 * Displays all form errors in one view.
 *
 * Any options passed will be used as HTML attributes of the ul tag for the errors.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Form_Decorator_FormErrors extends Zend_Form_Decorator_Abstract
{
    /**
     * Default values for markup options
     * @var array
     */
    protected $_defaults = array(
        'ignoreSubForms'          => false,
        'markupElementLabelEnd'   => '</b>',
        'markupElementLabelStart' => '<b>',
        'markupListEnd'           => '</ul>',
        'markupListItemEnd'       => '</li>',
        'markupListItemStart'     => '<li>',
        'markupListStart'         => '<ul class="form-errors">',
    );

    /**#@+
     * Markup options
     * @var string
     */
    protected $_ignoreSubForms;
    protected $_markupElementLabelEnd;
    protected $_markupElementLabelStart;
    protected $_markupListEnd;
    protected $_markupListItemEnd;
    protected $_markupListItemStart;
    protected $_markupListStart;
    /**#@-*/

    /**
     * Render errors
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $form = $this->getElement();
        if (!$form instanceof Zend_Form) {
            return $content;
        }

        $view = $form->getView();
        if (null === $view) {
            return $content;
        }

        $this->initOptions();
        $markup = $this->_recurseForm($form, $view);

        if (empty($markup)) {
            return $content;
        }

        $markup = $this->getMarkupListStart()
                . $markup
                . $this->getMarkupListEnd();

        switch ($this->getPlacement()) {
            case self::APPEND:
                return $content . $this->getSeparator() . $markup;
            case self::PREPEND:
                return $markup . $this->getSeparator() . $content;
        }
    }

    /**
     * Initialize options
     * 
     * @return void
     */
    public function initOptions()
    {
        $this->getMarkupElementLabelEnd();
        $this->getMarkupElementLabelStart();
        $this->getMarkupListEnd();
        $this->getMarkupListItemEnd();
        $this->getMarkupListItemStart();
        $this->getMarkupListStart();
        $this->getPlacement();
        $this->getSeparator();
        $this->ignoreSubForms();
    }

    /**
     * Retrieve markupElementLabelStart
     *
     * @return string
     */
    public function getMarkupElementLabelStart()
    {
        if (null === $this->_markupElementLabelStart) {
            if (null === ($markupElementLabelStart = $this->getOption('markupElementLabelStart'))) {
                $this->setMarkupElementLabelStart($this->_defaults['markupElementLabelStart']);
            } else {
                $this->setMarkupElementLabelStart($markupElementLabelStart);
                $this->removeOption('markupElementLabelStart');
            }
        }

        return $this->_markupElementLabelStart;
    }

    /**
     * Set markupElementLabelStart
     *
     * @param  string $markupElementLabelStart
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupElementLabelStart($markupElementLabelStart)
    {
        $this->_markupElementLabelStart = $markupElementLabelStart;
        return $this;
    }

    /**
     * Retrieve markupElementLabelEnd
     *
     * @return string
     */
    public function getMarkupElementLabelEnd()
    {
        if (null === $this->_markupElementLabelEnd) {
            if (null === ($markupElementLabelEnd = $this->getOption('markupElementLabelEnd'))) {
                $this->setMarkupElementLabelEnd($this->_defaults['markupElementLabelEnd']);
            } else {
                $this->setMarkupElementLabelEnd($markupElementLabelEnd);
                $this->removeOption('markupElementLabelEnd');
            }
        }

        return $this->_markupElementLabelEnd;
    }

    /**
     * Set markupElementLabelEnd
     *
     * @param  string $markupElementLabelEnd
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupElementLabelEnd($markupElementLabelEnd)
    {
        $this->_markupElementLabelEnd = $markupElementLabelEnd;
        return $this;
    }

    /**
     * Retrieve markupListStart
     *
     * @return string
     */
    public function getMarkupListStart()
    {
        if (null === $this->_markupListStart) {
            if (null === ($markupListStart = $this->getOption('markupListStart'))) {
                $this->setMarkupListStart($this->_defaults['markupListStart']);
            } else {
                $this->setMarkupListStart($markupListStart);
                $this->removeOption('markupListStart');
            }
        }

        return $this->_markupListStart;
    }

    /**
     * Set markupListStart
     *
     * @param  string $markupListStart
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupListStart($markupListStart)
    {
        $this->_markupListStart = $markupListStart;
        return $this;
    }

    /**
     * Retrieve markupListEnd
     *
     * @return string
     */
    public function getMarkupListEnd()
    {
        if (null === $this->_markupListEnd) {
            if (null === ($markupListEnd = $this->getOption('markupListEnd'))) {
                $this->setMarkupListEnd($this->_defaults['markupListEnd']);
            } else {
                $this->setMarkupListEnd($markupListEnd);
                $this->removeOption('markupListEnd');
            }
        }

        return $this->_markupListEnd;
    }

    /**
     * Set markupListEnd
     *
     * @param  string $markupListEnd
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupListEnd($markupListEnd)
    {
        $this->_markupListEnd = $markupListEnd;
        return $this;
    }

    /**
     * Retrieve markupListItemStart
     *
     * @return string
     */
    public function getMarkupListItemStart()
    {
        if (null === $this->_markupListItemStart) {
            if (null === ($markupListItemStart = $this->getOption('markupListItemStart'))) {
                $this->setMarkupListItemStart($this->_defaults['markupListItemStart']);
            } else {
                $this->setMarkupListItemStart($markupListItemStart);
                $this->removeOption('markupListItemStart');
            }
        }

        return $this->_markupListItemStart;
    }

    /**
     * Set markupListItemStart
     *
     * @param  string $markupListItemStart
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupListItemStart($markupListItemStart)
    {
        $this->_markupListItemStart = $markupListItemStart;
        return $this;
    }

    /**
     * Retrieve markupListItemEnd
     *
     * @return string
     */
    public function getMarkupListItemEnd()
    {
        if (null === $this->_markupListItemEnd) {
            if (null === ($markupListItemEnd = $this->getOption('markupListItemEnd'))) {
                $this->setMarkupListItemEnd($this->_defaults['markupListItemEnd']);
            } else {
                $this->setMarkupListItemEnd($markupListItemEnd);
                $this->removeOption('markupListItemEnd');
            }
        }

        return $this->_markupListItemEnd;
    }

    /**
     * Set markupListItemEnd
     *
     * @param  string $markupListItemEnd
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setMarkupListItemEnd($markupListItemEnd)
    {
        $this->_markupListItemEnd = $markupListItemEnd;
        return $this;
    }

    /**
     * Retrieve ignoreSubForms
     *
     * @return bool
     */
    public function ignoreSubForms()
    {
        if (null === $this->_ignoreSubForms) {
            if (null === ($ignoreSubForms = $this->getOption('ignoreSubForms'))) {
                $this->setIgnoreSubForms($this->_defaults['ignoreSubForms']);
            } else {
                $this->setIgnoreSubForms($ignoreSubForms);
                $this->removeOption('ignoreSubForms');
            }
        }

        return $this->_ignoreSubForms;
    }

    /**
     * Set ignoreSubForms
     *
     * @param  bool $ignoreSubForms
     * @return Zend_Form_Decorator_FormErrors
     */
    public function setIgnoreSubForms($ignoreSubForms)
    {
        $this->_ignoreSubForms = (bool) $ignoreSubForms;
        return $this;
    }

    /**
     * Render element label
     * 
     * @param  Zend_Form_Element $element 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view)
    {
        $label = $element->getLabel();
        if (empty($label)) {
            $label = $element->getName();
        }

        return $this->getMarkupElementLabelStart()
             . $view->escape($label)
             . $this->getMarkupElementLabelEnd();
    }

    /**
     * Recurse through a form object, rendering errors
     * 
     * @param  Zend_Form $form 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    protected function _recurseForm(Zend_Form $form, Zend_View_Interface $view)
    {
        $content = '';
        $errors  = $form->getMessages();
        if ($form instanceof Zend_Form_SubForm) {
            $name = $form->getName();
            if ((1 == count($errors)) && array_key_exists($name, $errors)) {
                $errors = $errors[$name];
            }
        }
        if (empty($errors)) {
            return $content;
        }

        foreach ($errors as $name => $list) {
            $element = $form->$name;
            if ($element instanceof Zend_Form_Element) {
                $element->setView($view);
                $content .= $this->getMarkupListItemStart()
                         .  $this->renderLabel($element, $view)
                         .  $view->formErrors($list, $this->getOptions())
                         .  $this->getMarkupListItemEnd();
            } elseif (!$this->ignoreSubForms() && ($element instanceof Zend_Form)) {
                $content .= $this->getMarkupListStart()
                          . $this->_recurseForm($element, $view)
                          . $this->getMarkupListEnd();
            }
        }

        return $content;
    }
}
PKpG[��:@@Form/Decorator/HtmlTag.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Form_Decorator_Abstract
 */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Element_HtmlTag
 *
 * Wraps content in an HTML block tag.
 *
 * Options accepted are:
 * - tag: tag to use in decorator
 * - noAttribs: do not render attributes in the opening tag
 * - placement: 'append' or 'prepend'. If 'append', renders opening and 
 *   closing tag after content; if prepend, renders opening and closing tag
 *   before content.
 * - openOnly: render opening tag only
 * - closeOnly: render closing tag only
 *
 * Any other options passed are processed as HTML attributes of the tag.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlTag.php 12514 2008-11-10 16:30:24Z matthew $
 */
class Zend_Form_Decorator_HtmlTag extends Zend_Form_Decorator_Abstract
{
    /**
     * Placement; default to surround content
     * @var string
     */
    protected $_placement = null;

    /**
     * HTML tag to use
     * @var string
     */
    protected $_tag;

    /**
     * @var Zend_Filter
     */
    protected $_tagFilter;

    /**
     * Convert options to tag attributes
     * 
     * @return string
     */
    protected function _htmlAttribs(array $attribs)
    {
        $xhtml = '';
        foreach ((array) $attribs as $key => $val) {
            $key = htmlspecialchars($key, ENT_COMPAT, 'UTF-8');
            if (is_array($val)) {
                $val = implode(' ', $val);
            }
            $val    = htmlspecialchars($val, ENT_COMPAT, 'UTF-8');
            $xhtml .= " $key=\"$val\"";
        }
        return $xhtml;
    }

    /**
     * Normalize tag
     *
     * Ensures tag is alphanumeric characters only, and all lowercase.
     * 
     * @param  string $tag 
     * @return string
     */
    public function normalizeTag($tag)
    {
        if (!isset($this->_tagFilter)) {
            require_once 'Zend/Filter.php';
            require_once 'Zend/Filter/Alnum.php';
            require_once 'Zend/Filter/StringToLower.php';
            $this->_tagFilter = new Zend_Filter();
            $this->_tagFilter->addFilter(new Zend_Filter_Alnum())
                             ->addFilter(new Zend_Filter_StringToLower());
        }
        return $this->_tagFilter->filter($tag);
    }

    /**
     * Set tag to use
     * 
     * @param  string $tag 
     * @return Zend_Form_Decorator_HtmlTag
     */
    public function setTag($tag)
    {
        $this->_tag = $this->normalizeTag($tag);
        return $this;
    }

    /**
     * Get tag
     *
     * If no tag is registered, either via setTag() or as an option, uses 'div'.
     * 
     * @return string
     */
    public function getTag()
    {
        if (null === $this->_tag) {
            if (null === ($tag = $this->getOption('tag'))) {
                $this->setTag('div');
            } else {
                $this->setTag($tag);
                $this->removeOption('tag');
            }
        }

        return $this->_tag;
    }

    /**
     * Get the formatted open tag
     * 
     * @param  string $tag 
     * @param  array $attribs 
     * @return string
     */
    protected function _getOpenTag($tag, array $attribs = null)
    {
        $html = '<' . $tag;
        if (null !== $attribs) {
            $html .= $this->_htmlAttribs($attribs);
        }
        $html .= '>';
        return $html;
    }

    /**
     * Get formatted closing tag
     * 
     * @param  string $tag 
     * @return string
     */
    protected function _getCloseTag($tag)
    {
        return '</' . $tag . '>';
    }

    /**
     * Render content wrapped in an HTML tag
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $tag       = $this->getTag();
        $placement = $this->getPlacement();
        $noAttribs = $this->getOption('noAttribs');
        $openOnly  = $this->getOption('openOnly');
        $closeOnly = $this->getOption('closeOnly');
        $this->removeOption('noAttribs');
        $this->removeOption('openOnly');
        $this->removeOption('closeOnly');

        $attribs = null;
        if (!$noAttribs) {
            $attribs = $this->getOptions();
        }

        switch ($placement) {
            case self::APPEND:
                if ($closeOnly) {
                    return $content . $this->_getCloseTag($tag);
                }
                if ($openOnly) {
                    return $content . $this->_getOpenTag($tag, $attribs);
                }
                return $content 
                     . $this->_getOpenTag($tag, $attribs) 
                     . $this->_getCloseTag($tag);
            case self::PREPEND:
                if ($closeOnly) {
                    return $this->_getCloseTag($tag) . $content;
                }
                if ($openOnly) {
                    return $this->_getOpenTag($tag, $attribs) . $content;
                }
                return $this->_getOpenTag($tag, $attribs)
                     . $this->_getCloseTag($tag)
                     . $content;
            default:
                return (($openOnly || !$closeOnly) ? $this->_getOpenTag($tag, $attribs) : '')
                     . $content
                     . (($closeOnly || !$openOnly) ? $this->_getCloseTag($tag) : '');
        }
    }
}
PKpG[��W"��Form/Decorator/Captcha/Word.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Word-based captcha decorator
 * 
 * Adds hidden field for ID and text input field for captcha text
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Form_Decorator_Captcha_Word extends Zend_Form_Decorator_Abstract
{
    /**
     * Render captcha
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $name = $element->getFullyQualifiedName();

        $hiddenName = $name . '[id]';
        $textName   = $name . '[input]';

        $placement = $this->getPlacement();
        $separator = $this->getSeparator();

        $hidden = $view->formHidden($hiddenName, $element->getValue(), $element->getAttribs());
        $text   = $view->formText($textName, '', $element->getAttribs());
        switch ($placement) {
            case 'PREPEND':
                $content = $hidden . $separator . $text . $separator . $content;
                break;
            case 'APPEND':
            default:
                $content = $content . $separator . $hidden . $separator . $text;
        }
        return $content;
    }
}
PKpG[�͡�Form/Decorator/Description.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Form_Decorator_Description
 *
 * Accepts the options:
 * - separator: separator to use between label and content (defaults to PHP_EOL)
 * - placement: whether to append or prepend label to content (defaults to prepend)
 * - tag: if set, used to wrap the label in an additional HTML tag
 * - class: if set, override default class used with HTML tag
 * - escape: whether or not to escape description (true by default)
 *
 * Any other options passed will be used as HTML attributes of the HTML tag used.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Description.php 12328 2008-11-06 16:49:03Z matthew $
 */
class Zend_Form_Decorator_Description extends Zend_Form_Decorator_Abstract
{
    /**
     * Whether or not to escape the description
     * @var bool
     */
    protected $_escape;

    /**
     * Default placement: append
     * @var string
     */
    protected $_placement = 'APPEND';

    /**
     * HTML tag with which to surround description
     * @var string
     */
    protected $_tag;

    /**
     * Set HTML tag with which to surround description
     * 
     * @param  string $tag 
     * @return Zend_Form_Decorator_Description
     */
    public function setTag($tag)
    {
        $this->_tag = (string) $tag;
        return $this;
    }

    /**
     * Get HTML tag, if any, with which to surround description
     * 
     * @return string
     */
    public function getTag()
    {
        if (null === $this->_tag) {
            $tag = $this->getOption('tag');
            if (null !== $tag) {
                $this->removeOption('tag');
            } else {
                $tag = 'p';
            }

            $this->setTag($tag);
            return $tag;
        }

        return $this->_tag;
    }

    /**
     * Get class with which to define description
     *
     * Defaults to 'hint'
     * 
     * @return string
     */
    public function getClass()
    {
        $class = $this->getOption('class');
        if (null === $class) {
            $class = 'hint';
            $this->setOption('class', $class);
        }

        return $class;
    }

    /**
     * Set whether or not to escape description
     * 
     * @param  bool $flag 
     * @return Zend_Form_Decorator_Description
     */
    public function setEscape($flag)
    {
        $this->_escape = (bool) $flag;
        return $this;
    }

    /**
     * Get escape flag
     * 
     * @return true
     */
    public function getEscape()
    {
        if (null === $this->_escape) {
            if (null !== ($escape = $this->getOption('escape'))) {
                $this->setEscape($escape);
                $this->removeOption('escape');
            } else {
                $this->setEscape(true);
            }
        }

        return $this->_escape;
    }

    /**
     * Render a description
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $description = $element->getDescription();
        $description = trim($description);

        if (!empty($description) && (null !== ($translator = $element->getTranslator()))) {
            $description = $translator->translate($description);
        }

        if (empty($description)) {
            return $content;
        }

        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
        $tag       = $this->getTag();
        $class     = $this->getClass();
        $escape    = $this->getEscape();

        $options   = $this->getOptions();

        if ($escape) {
            $description = $view->escape($description);
        }

        if (!empty($tag)) {
            require_once 'Zend/Form/Decorator/HtmlTag.php';
            $options['tag'] = $tag;
            $decorator = new Zend_Form_Decorator_HtmlTag($options);
            $description = $decorator->render($description);
        }

        switch ($placement) {
            case self::PREPEND:
                return $description . $separator . $content;
            case self::APPEND:
            default:
                return $content . $separator . $description;
        }
    }
}
PKpG[��[#]]Form/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * Exception for Zend_Form component.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Form_Exception extends Zend_Exception
{
}
PKpG[�t3A�A�Form/Element.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Filter */
require_once 'Zend/Filter.php';

/** Zend_Validate_Interface */
require_once 'Zend/Validate/Interface.php';

/**
 * Zend_Form_Element 
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Element.php 12787 2008-11-23 14:17:44Z matthew $
 */
class Zend_Form_Element implements Zend_Validate_Interface
{
    /**
     * Element Constants
     */
    const DECORATOR = 'DECORATOR';
    const FILTER    = 'FILTER';
    const VALIDATE  = 'VALIDATE';

    /**
     * Default view helper to use
     * @var string
     */
    public $helper = 'formText';

    /**
     * 'Allow empty' flag
     * @var bool
     */
    protected $_allowEmpty = true;

    /**
     * Flag indicating whether or not to insert NotEmpty validator when element is required
     * @var bool
     */
    protected $_autoInsertNotEmptyValidator = true;

    /**
     * Array to which element belongs
     * @var string
     */
    protected $_belongsTo;

    /**
     * Element decorators 
     * @var array
     */
    protected $_decorators = array();

    /**
     * Element description
     * @var string
     */
    protected $_description;

    /**
     * Should we disable loading the default decorators?
     * @var bool
     */
    protected $_disableLoadDefaultDecorators = false;

    /**
     * Custom error messages
     * @var array
     */
    protected $_errorMessages = array();

    /**
     * Validation errors
     * @var array
     */
    protected $_errors = array();

    /**
     * Element filters
     * @var array
     */
    protected $_filters = array();

    /**
     * Ignore flag (used when retrieving values at form level)
     * @var bool
     */
    protected $_ignore = false;

    /**
     * Does the element represent an array?
     * @var bool
     */
    protected $_isArray = false;

    /**
     * Is the error marked as in an invalid state?
     * @var bool
     */
    protected $_isError = false;

    /**
     * Element label
     * @var string
     */
    protected $_label;

    /**
     * Plugin loaders for filter and validator chains
     * @var array
     */
    protected $_loaders = array();

    /**
     * Formatted validation error messages
     * @var array
     */
    protected $_messages = array();

    /**
     * Element name
     * @var string
     */
    protected $_name;

    /**
     * Order of element
     * @var int
     */
    protected $_order;

    /**
     * Required flag
     * @var bool
     */
    protected $_required = false;

    /**
     * @var Zend_Translate
     */
    protected $_translator;

    /**
     * Is translation disabled?
     * @var bool
     */
    protected $_translatorDisabled = false;

    /**
     * Element type
     * @var string
     */
    protected $_type;

    /**
     * Array of initialized validators
     * @var array Validators
     */
    protected $_validators = array();

    /**
     * Array of un-initialized validators
     * @var array
     */
    protected $_validatorRules = array();

    /**
     * Element value
     * @var mixed
     */
    protected $_value;

    /**
     * @var Zend_View_Interface
     */
    protected $_view;

    /**
     * Constructor
     *
     * $spec may be:
     * - string: name of element
     * - array: options with which to configure element
     * - Zend_Config: Zend_Config with options for configuring element
     * 
     * @param  string|array|Zend_Config $spec 
     * @return void
     * @throws Zend_Form_Exception if no element name after initialization
     */
    public function __construct($spec, $options = null)
    {
        if (is_string($spec)) {
            $this->setName($spec);
        } elseif (is_array($spec)) {
            $this->setOptions($spec);
        } elseif ($spec instanceof Zend_Config) {
            $this->setConfig($spec);
        } 
        
        if (is_string($spec) && is_array($options)) {
            $this->setOptions($options);
        } elseif (is_string($spec) && ($options instanceof Zend_Config)) {
            $this->setConfig($options);
        }

        if (null === $this->getName()) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Zend_Form_Element requires each element to have a name');
        }

        /**
         * Extensions
         */
        $this->init();

        /**
         * Register ViewHelper decorator by default
         */
        $this->loadDefaultDecorators();
    }

    /**
     * Initialize object; used by extending classes
     * 
     * @return void
     */
    public function init()
    {
    }

    /**
     * Set flag to disable loading default decorators
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setDisableLoadDefaultDecorators($flag)
    {
        $this->_disableLoadDefaultDecorators = (bool) $flag;
        return $this;
    }

    /**
     * Should we load the default decorators?
     * 
     * @return bool
     */
    public function loadDefaultDecoratorsIsDisabled()
    {
        return $this->_disableLoadDefaultDecorators;
    }

    /**
     * Load default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('ViewHelper')
                ->addDecorator('Errors')
                ->addDecorator('Description', array('tag' => 'p', 'class' => 'description'))
                ->addDecorator('HtmlTag', array('tag' => 'dd'))
                ->addDecorator('Label', array('tag' => 'dt'));
        }
    }

    /**
     * Set object state from options array
     * 
     * @param  array $options 
     * @return Zend_Form_Element
     */
    public function setOptions(array $options)
    {
        if (isset($options['prefixPath'])) {
            $this->addPrefixPaths($options['prefixPath']);
            unset($options['prefixPath']);
        }

        if (isset($options['disableTranslator'])) {
            $this->setDisableTranslator($options['disableTranslator']);
            unset($options['disableTranslator']);
        }

        unset($options['options']);
        unset($options['config']);

        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);

            if (in_array($method, array('setTranslator', 'setPluginLoader', 'setView'))) {
                if (!is_object($value)) {
                    continue;
                }
            }

            if (method_exists($this, $method)) {
                // Setter exists; use it
                $this->$method($value);
            } else {
                // Assume it's metadata
                $this->setAttrib($key, $value);
            }
        }
        return $this;
    }

    /**
     * Set object state from Zend_Config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Form_Element
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }


    // Localization:

    /**
     * Set translator object for localization
     * 
     * @param  Zend_Translate|null $translator 
     * @return Zend_Form_Element
     */
    public function setTranslator($translator = null)
    {
        if (null === $translator) {
            $this->_translator = null;
        } elseif ($translator instanceof Zend_Translate_Adapter) {
            $this->_translator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            $this->_translator = $translator->getAdapter();
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid translator specified');
        }
        return $this;
    }

    /**
     * Retrieve localization translator object
     * 
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if ($this->translatorIsDisabled()) {
            return null;
        }

        if (null === $this->_translator) {
            require_once 'Zend/Form.php';
            return Zend_Form::getDefaultTranslator();
        }
        return $this->_translator;
    }

    /**
     * Indicate whether or not translation should be disabled
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setDisableTranslator($flag)
    {
        $this->_translatorDisabled = (bool) $flag;
        return $this;
    }

    /**
     * Is translation disabled?
     * 
     * @return bool
     */
    public function translatorIsDisabled()
    {
        return $this->_translatorDisabled;
    }

    // Metadata

    /**
     * Filter a name to only allow valid variable characters
     * 
     * @param  string $value 
     * @param  bool $allowBrackets
     * @return string
     */
    public function filterName($value, $allowBrackets = false)
    {
        $charset = '^a-zA-Z0-9_\x7f-\xff';
        if ($allowBrackets) {
            $charset .= '\[\]';
        }
        return preg_replace('/[' . $charset . ']/', '', (string) $value);
    }

    /**
     * Set element name
     * 
     * @param  string $name 
     * @return Zend_Form_Element
     */
    public function setName($name)
    {
        $name = $this->filterName($name);
        if ('' === $name) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid name provided; must contain only valid variable characters and be non-empty');
        }

        $this->_name = $name;
        return $this;
    }

    /**
     * Return element name
     * 
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Get fully qualified name
     *
     * Places name as subitem of array and/or appends brackets.
     * 
     * @return string
     */
    public function getFullyQualifiedName()
    {
        $name = $this->getName();

        if (null !== ($belongsTo = $this->getBelongsTo())) {
            $name = $belongsTo . '[' . $name . ']';
        }

        if ($this->isArray()) {
            $name .= '[]';
        }

        return $name;
    }

    /**
     * Get element id
     * 
     * @return string
     */
    public function getId()
    {
        if (isset($this->id)) {
            return $this->id;
        }

        $id = $this->getFullyQualifiedName();

        // Bail early if no array notation detected
        if (!strstr($id, '[')) {
            return $id;
        }

        // Strip array notation
        if ('[]' == substr($id, -2)) {
            $id = substr($id, 0, strlen($id) - 2);
        }
        $id = str_replace('][', '-', $id);
        $id = str_replace(array(']', '['), '-', $id);
        $id = trim($id, '-');

        return $id;
    }

    /**
     * Set element value
     * 
     * @param  mixed $value 
     * @return Zend_Form_Element
     */
    public function setValue($value)
    {
        $this->_value = $value;
        return $this;
    }

    /**
     * Filter a value
     * 
     * @param  string $value 
     * @param  string $key 
     * @return void
     */
    protected function _filterValue(&$value, &$key)
    {
        foreach ($this->getFilters() as $filter) {
            $value = $filter->filter($value);
        }
    }

    /**
     * Retrieve filtered element value
     * 
     * @return mixed
     */
    public function getValue()
    {
        $valueFiltered = $this->_value;

        if ($this->isArray() && is_array($valueFiltered)) {
            array_walk_recursive($valueFiltered, array($this, '_filterValue'));
        } else {
            $this->_filterValue($valueFiltered, $valueFiltered);
        }

        return $valueFiltered;
    }

    /**
     * Retrieve unfiltered element value
     * 
     * @return mixed
     */
    public function getUnfilteredValue()
    {
        return $this->_value;
    }

    /**
     * Set element label
     * 
     * @param  string $label 
     * @return Zend_Form_Element
     */
    public function setLabel($label)
    {
        $this->_label = (string) $label;
        return $this;
    }

    /**
     * Retrieve element label
     * 
     * @return string
     */
    public function getLabel()
    {
        return $this->_label;
    }

    /**
     * Set element order
     * 
     * @param  int $order 
     * @return Zend_Form_Element
     */
    public function setOrder($order)
    {
        $this->_order = (int) $order;
        return $this;
    }

    /**
     * Retrieve element order
     * 
     * @return int
     */
    public function getOrder()
    {
        return $this->_order;
    }

    /**
     * Set required flag
     * 
     * @param  bool $flag Default value is true
     * @return Zend_Form_Element
     */
    public function setRequired($flag = true)
    {
        $this->_required = (bool) $flag;
        return $this;
    }

    /**
     * Is the element required?
     * 
     * @return bool
     */
    public function isRequired()
    {
        return $this->_required;
    }

    /**
     * Set flag indicating whether a NotEmpty validator should be inserted when element is required
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setAutoInsertNotEmptyValidator($flag)
    {
        $this->_autoInsertNotEmptyValidator = (bool) $flag;
        return $this;
    }

    /**
     * Get flag indicating whether a NotEmpty validator should be inserted when element is required
     * 
     * @return bool
     */
    public function autoInsertNotEmptyValidator()
    {
        return $this->_autoInsertNotEmptyValidator;
    }

    /**
     * Set element description
     * 
     * @param  string $description 
     * @return Zend_Form_Element
     */
    public function setDescription($description)
    {
        $this->_description = (string) $description;
        return $this;
    }

    /**
     * Retrieve element description
     * 
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set 'allow empty' flag
     *
     * When the allow empty flag is enabled and the required flag is false, the
     * element will validate with empty values.
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setAllowEmpty($flag)
    {
        $this->_allowEmpty = (bool) $flag;
        return $this;
    }

    /**
     * Get 'allow empty' flag
     * 
     * @return bool
     */
    public function getAllowEmpty()
    {
        return $this->_allowEmpty;
    }

    /**
     * Set ignore flag (used when retrieving values at form level)
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setIgnore($flag)
    {
        $this->_ignore = (bool) $flag;
        return $this;
    }

    /**
     * Get ignore flag (used when retrieving values at form level)
     * 
     * @return bool
     */
    public function getIgnore()
    {
        return $this->_ignore;
    }

    /**
     * Set flag indicating if element represents an array
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setIsArray($flag)
    {
        $this->_isArray = (bool) $flag;
        return $this;
    }

    /**
     * Is the element representing an array?
     * 
     * @return bool
     */
    public function isArray()
    {
        return $this->_isArray;
    }

    /**
     * Set array to which element belongs
     * 
     * @param  string $array 
     * @return Zend_Form_Element
     */
    public function setBelongsTo($array)
    {
        $array = $this->filterName($array, true);
        if (!empty($array)) {
            $this->_belongsTo = $array;
        }

        return $this;
    }

    /**
     * Return array name to which element belongs
     * 
     * @return string
     */
    public function getBelongsTo()
    {
        return $this->_belongsTo;
    }

    /**
     * Return element type
     * 
     * @return string
     */
    public function getType()
    {
        if (null === $this->_type) {
            $this->_type = get_class($this);
        }

        return $this->_type;
    }

    /**
     * Set element attribute
     * 
     * @param  string $name 
     * @param  mixed $value 
     * @return Zend_Form_Element
     * @throws Zend_Form_Exception for invalid $name values
     */
    public function setAttrib($name, $value)
    {
        $name = (string) $name;
        if ('_' == $name[0]) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Invalid attribute "%s"; must not contain a leading underscore', $name));
        }

        if (null === $value) {
            unset($this->$name);
        } else {
            $this->$name = $value;
        }

        return $this;
    }

    /**
     * Set multiple attributes at once
     * 
     * @param  array $attribs 
     * @return Zend_Form_Element
     */
    public function setAttribs(array $attribs)
    {
        foreach ($attribs as $key => $value) {
            $this->setAttrib($key, $value);
        }

        return $this;
    }

    /**
     * Retrieve element attribute
     * 
     * @param  string $name 
     * @return string
     */
    public function getAttrib($name)
    {
        $name = (string) $name;
        if (isset($this->$name)) {
            return $this->$name;
        }

        return null;
    }

    /**
     * Return all attributes
     * 
     * @return array
     */
    public function getAttribs()
    {
        $attribs = get_object_vars($this);
        foreach ($attribs as $key => $value) {
            if ('_' == substr($key, 0, 1)) {
                unset($attribs[$key]);
            }
        }

        return $attribs;
    }

    /**
     * Overloading: retrieve object property
     *
     * Prevents access to properties beginning with '_'.
     * 
     * @param  string $key 
     * @return mixed
     */
    public function __get($key)
    {
        if ('_' == $key[0]) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Cannot retrieve value for protected/private property "%s"', $key));
        }

        if (!isset($this->$key)) {
            return null;
        }

        return $this->$key;
    }

    /**
     * Overloading: set object property
     *
     * @param  string $key
     * @param  mixed $value
     * @return voide
     */
    public function __set($key, $value)
    {
        $this->setAttrib($key, $value);
    }

    /**
     * Overloading: allow rendering specific decorators
     *
     * Call renderDecoratorName() to render a specific decorator.
     * 
     * @param  string $method 
     * @param  array $args 
     * @return string
     * @throws Zend_Form_Exception for invalid decorator or invalid method call
     */
    public function __call($method, $args)
    {
        if ('render' == substr($method, 0, 6)) {
            $decoratorName = substr($method, 6);
            if (false !== ($decorator = $this->getDecorator($decoratorName))) {
                $decorator->setElement($this);
                $seed = '';
                if (0 < count($args)) {
                    $seed = array_shift($args);
                }
                return $decorator->render($seed);
            }

            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception(sprintf('Decorator by name %s does not exist', $decoratorName));
        }

        require_once 'Zend/Form/Element/Exception.php';
        throw new Zend_Form_Element_Exception(sprintf('Method %s does not exist', $method));
    }

    // Loaders

    /**
     * Set plugin loader to use for validator or filter chain
     * 
     * @param  Zend_Loader_PluginLoader_Interface $loader 
     * @param  string $type 'decorator', 'filter', or 'validate'
     * @return Zend_Form_Element
     * @throws Zend_Form_Exception on invalid type
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::DECORATOR:
            case self::FILTER:
            case self::VALIDATE:
                $this->_loaders[$type] = $loader;
                return $this;
            default:
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type));
        }
    }

    /**
     * Retrieve plugin loader for validator or filter chain
     *
     * Instantiates with default rules if none available for that type. Use 
     * 'decorator', 'filter', or 'validate' for $type.
     * 
     * @param  string $type 
     * @return Zend_Loader_PluginLoader
     * @throws Zend_Loader_Exception on invalid type.
     */
    public function getPluginLoader($type)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::FILTER:
            case self::VALIDATE:
                $prefixSegment = ucfirst(strtolower($type));
                $pathSegment   = $prefixSegment;
            case self::DECORATOR:
                if (!isset($prefixSegment)) {
                    $prefixSegment = 'Form_Decorator';
                    $pathSegment   = 'Form/Decorator';
                }
                if (!isset($this->_loaders[$type])) {
                    require_once 'Zend/Loader/PluginLoader.php';
                    $this->_loaders[$type] = new Zend_Loader_PluginLoader(
                        array('Zend_' . $prefixSegment . '_' => 'Zend/' . $pathSegment . '/')
                    );
                }
                return $this->_loaders[$type];
            default:
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
        }
    }

    /**
     * Add prefix path for plugin loader
     *
     * If no $type specified, assumes it is a base path for both filters and 
     * validators, and sets each according to the following rules:
     * - decorators: $prefix = $prefix . '_Decorator'
     * - filters: $prefix = $prefix . '_Filter'
     * - validators: $prefix = $prefix . '_Validate'
     *
     * Otherwise, the path prefix is set on the appropriate plugin loader.
     * 
     * @param  string $path 
     * @return Zend_Form_Element
     * @throws Zend_Form_Exception for invalid type
     */
    public function addPrefixPath($prefix, $path, $type = null)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::DECORATOR:
            case self::FILTER:
            case self::VALIDATE:
                $loader = $this->getPluginLoader($type);
                $loader->addPrefixPath($prefix, $path);
                return $this;
            case null:
                $prefix = rtrim($prefix, '_');
                $path   = rtrim($path, DIRECTORY_SEPARATOR);
                foreach (array(self::DECORATOR, self::FILTER, self::VALIDATE) as $type) {
                    $cType        = ucfirst(strtolower($type));
                    $pluginPath   = $path . DIRECTORY_SEPARATOR . $cType . DIRECTORY_SEPARATOR;
                    $pluginPrefix = $prefix . '_' . $cType;
                    $loader       = $this->getPluginLoader($type);
                    $loader->addPrefixPath($pluginPrefix, $pluginPath);
                }
                return $this;
            default:
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
        }
    }

    /**
     * Add many prefix paths at once
     * 
     * @param  array $spec 
     * @return Zend_Form_Element
     */
    public function addPrefixPaths(array $spec)
    {
        if (isset($spec['prefix']) && isset($spec['path'])) {
            return $this->addPrefixPath($spec['prefix'], $spec['path']);
        } 
        foreach ($spec as $type => $paths) {
            if (is_numeric($type) && is_array($paths)) {
                $type = null;
                if (isset($paths['prefix']) && isset($paths['path'])) {
                    if (isset($paths['type'])) {
                        $type = $paths['type'];
                    }
                    $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
                }
            } elseif (!is_numeric($type)) {
                if (!isset($paths['prefix']) || !isset($paths['path'])) {
                    foreach ($paths as $prefix => $spec) {
                        if (is_array($spec)) {
                            foreach ($spec as $path) {
                                if (!is_string($path)) {
                                    continue;
                                }
                                $this->addPrefixPath($prefix, $path, $type);
                            }
                        } elseif (is_string($spec)) {
                            $this->addPrefixPath($prefix, $spec, $type);
                        }
                    }
                } else {
                    $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
                }
            }
        }
        return $this;
    }

    // Validation

    /**
     * Add validator to validation chain
     *
     * Note: will overwrite existing validators if they are of the same class.
     * 
     * @param  string|Zend_Validate_Interface $validator 
     * @param  bool $breakChainOnFailure
     * @param  array $options 
     * @return Zend_Form_Element
     * @throws Zend_Form_Exception if invalid validator type
     */
    public function addValidator($validator, $breakChainOnFailure = false, $options = array())
    {
        if ($validator instanceof Zend_Validate_Interface) {
            $name = get_class($validator);

            if (!isset($validator->zfBreakChainOnFailure)) {
                $validator->zfBreakChainOnFailure = $breakChainOnFailure;
            }
        } elseif (is_string($validator)) {
            $name      = $validator;
            $validator = array(
                'validator' => $validator,
                'breakChainOnFailure' => $breakChainOnFailure,
                'options'             => $options,
            );
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid validator provided to addValidator; must be string or Zend_Validate_Interface');
        }


        $this->_validators[$name] = $validator;

        return $this;
    }

    /**
     * Add multiple validators
     * 
     * @param  array $validators 
     * @return Zend_Form_Element
     */
    public function addValidators(array $validators)
    {
        foreach ($validators as $validatorInfo) {
            if (is_string($validatorInfo)) {
                $this->addValidator($validatorInfo);
            } elseif ($validatorInfo instanceof Zend_Validate_Interface) {
                $this->addValidator($validatorInfo);
            } elseif (is_array($validatorInfo)) {
                $argc                = count($validatorInfo);
                $breakChainOnFailure = false;
                $options             = array();
                if (isset($validatorInfo['validator'])) {
                    $validator = $validatorInfo['validator'];
                    if (isset($validatorInfo['breakChainOnFailure'])) {
                        $breakChainOnFailure = $validatorInfo['breakChainOnFailure'];
                    }
                    if (isset($validatorInfo['options'])) {
                        $options = $validatorInfo['options'];
                    }
                    $this->addValidator($validator, $breakChainOnFailure, $options);
                } else {
                    switch (true) {
                        case (0 == $argc):
                            break;
                        case (1 <= $argc):
                            $validator  = array_shift($validatorInfo);
                        case (2 <= $argc):
                            $breakChainOnFailure = array_shift($validatorInfo);
                        case (3 <= $argc):
                            $options = array_shift($validatorInfo);
                        default:
                            $this->addValidator($validator, $breakChainOnFailure, $options);
                            break;
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid validator passed to addValidators()');
            }
        }

        return $this;
    }

    /**
     * Set multiple validators, overwriting previous validators
     * 
     * @param  array $validators 
     * @return Zend_Form_Element
     */
    public function setValidators(array $validators)
    {
        $this->clearValidators();
        return $this->addValidators($validators);
    }

    /**
     * Retrieve a single validator by name
     * 
     * @param  string $name 
     * @return Zend_Validate_Interface|false False if not found, validator otherwise
     */
    public function getValidator($name)
    {
        if (!isset($this->_validators[$name])) {
            $len = strlen($name);
            foreach ($this->_validators as $localName => $validator) {
                if ($len > strlen($localName)) {
                    continue;
                }
                if (0 === substr_compare($localName, $name, -$len, $len, true)) {
                    if (is_array($validator)) {
                        return $this->_loadValidator($validator);
                    }
                    return $validator;
                }
            }
            return false;
        }

        if (is_array($this->_validators[$name])) {
            return $this->_loadValidator($this->_validators[$name]);
        }

        return $this->_validators[$name];
    }

    /**
     * Retrieve all validators
     * 
     * @return array
     */
    public function getValidators()
    {
        $validators = array();
        foreach ($this->_validators as $key => $value) {
            if ($value instanceof Zend_Validate_Interface) {
                $validators[$key] = $value;
                continue;
            }
            $validator = $this->_loadValidator($value);
            $validators[get_class($validator)] = $validator;
        }
        return $validators;
    }

    /**
     * Remove a single validator by name
     * 
     * @param  string $name 
     * @return bool
     */
    public function removeValidator($name)
    {
        if (isset($this->_validators[$name])) {
            unset($this->_validators[$name]);
        } else {
            $len = strlen($name);
            foreach (array_keys($this->_validators) as $validator) {
                if ($len > strlen($validator)) {
                    continue;
                }
                if (0 === substr_compare($validator, $name, -$len, $len, true)) {
                    unset($this->_validators[$validator]);
                    break;
                }
            }
        }

        return $this;
    }

    /**
     * Clear all validators
     * 
     * @return Zend_Form_Element
     */
    public function clearValidators()
    {
        $this->_validators = array();
        return $this;
    }

    /**
     * Validate element value
     *
     * If a translation adapter is registered, any error messages will be 
     * translated according to the current locale, using the given error code; 
     * if no matching translation is found, the original message will be 
     * utilized.
     *
     * Note: The *filtered* value is validated.
     * 
     * @param  mixed $value 
     * @param  mixed $context 
     * @return boolean
     */
    public function isValid($value, $context = null)
    {
        $this->setValue($value);
        $value = $this->getValue();

        if ((('' === $value) || (null === $value)) 
            && !$this->isRequired() 
            && $this->getAllowEmpty()
        ) {
            return true;
        }

        if ($this->isRequired() 
            && $this->autoInsertNotEmptyValidator() 
            && !$this->getValidator('NotEmpty'))
        {
            $validators = $this->getValidators();
            $notEmpty   = array('validator' => 'NotEmpty', 'breakChainOnFailure' => true);
            array_unshift($validators, $notEmpty);
            $this->setValidators($validators);
        }

        $this->_messages = array();
        $this->_errors   = array();
        $result          = true;
        $translator      = $this->getTranslator();
        $isArray         = $this->isArray();
        foreach ($this->getValidators() as $key => $validator) {
            if (method_exists($validator, 'setTranslator')) {
                $validator->setTranslator($translator);
            }

            if ($isArray && is_array($value)) {
                $messages = array();
                $errors   = array();
                foreach ($value as $val) {
                    if (!$validator->isValid($val, $context)) {
                        $result = false;
                        if ($this->_hasErrorMessages()) {
                            $messages = $this->_getErrorMessages();
                            $errors   = $messages;
                        } else {
                            $messages = array_merge($messages, $validator->getMessages());
                            $errors   = array_merge($errors,   $validator->getErrors());
                        }
                    }
                }
                if ($result) {
                    continue;
                }
            } elseif ($validator->isValid($value, $context)) {
                continue;
            } else {
                $result = false;
                if ($this->_hasErrorMessages()) {
                    $messages = $this->_getErrorMessages();
                    $errors   = $messages;
                } else {
                    $messages = $validator->getMessages();
                    $errors   = array_keys($messages);
                }
            }

            $result          = false;
            $this->_messages = array_merge($this->_messages, $messages);
            $this->_errors   = array_merge($this->_errors,   $errors);

            if ($validator->zfBreakChainOnFailure) {
                break;
            }
        }

        return $result;
    }

    /**
     * Add a custom error message to return in the event of failed validation
     * 
     * @param  string $message 
     * @return Zend_Form_Element
     */
    public function addErrorMessage($message)
    {
        $this->_errorMessages[] = (string) $message;
        return $this;
    }

    /**
     * Add multiple custom error messages to return in the event of failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form_Element
     */
    public function addErrorMessages(array $messages)
    {
        foreach ($messages as $message) {
            $this->addErrorMessage($message);
        }
        return $this;
    }

    /**
     * Same as addErrorMessages(), but clears custom error message stack first
     * 
     * @param  array $messages 
     * @return Zend_Form_Element
     */
    public function setErrorMessages(array $messages)
    {
        $this->clearErrorMessages();
        return $this->addErrorMessages($messages);
    }

    /**
     * Retrieve custom error messages
     * 
     * @return array
     */
    public function getErrorMessages()
    {
        return $this->_errorMessages;
    }

    /**
     * Clear custom error messages stack
     * 
     * @return Zend_Form_Element
     */
    public function clearErrorMessages()
    {
        $this->_errorMessages = array();
        return $this;
    }

    /**
     * Mark the element as being in a failed validation state
     * 
     * @return Zend_Form_Element
     */
    public function markAsError()
    {
        $messages       = $this->getMessages();
        $customMessages = $this->_getErrorMessages();
        $messages       = $messages + $customMessages;
        if (empty($messages)) {
            $this->_isError = true;
        } else {
            $this->_messages = $messages;
        }
        return $this;
    }

    /**
     * Add an error message and mark element as failed validation
     * 
     * @param  string $message 
     * @return Zend_Form_Element
     */
    public function addError($message)
    {
        $this->addErrorMessage($message);
        $this->markAsError();
        return $this;
    }

    /**
     * Add multiple error messages and flag element as failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form_Element
     */
    public function addErrors(array $messages)
    {
        foreach ($messages as $message) {
            $this->addError($message);
        }
        return $this;
    }

    /**
     * Overwrite any previously set error messages and flag as failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form_Element
     */
    public function setErrors(array $messages)
    {
        $this->clearErrorMessages();
        return $this->addErrors($messages);
    }

    /**
     * Are there errors registered?
     * 
     * @return bool
     */
    public function hasErrors()
    {
        return (!empty($this->_messages) || $this->_isError);
    }

    /**
     * Retrieve validator chain errors
     * 
     * @return array
     */
    public function getErrors()
    {
        return $this->_errors;
    }

    /**
     * Retrieve error messages
     * 
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }


    // Filtering

    /**
     * Add a filter to the element
     * 
     * @param  string|Zend_Filter_Interface $filter 
     * @return Zend_Form_Element
     */
    public function addFilter($filter, $options = array())
    {
        if ($filter instanceof Zend_Filter_Interface) {
            $name = get_class($filter);
        } elseif (is_string($filter)) {
            $name = $filter;
            $filter = array(
                'filter'  => $filter, 
                'options' => $options,
            );
            $this->_filters[$name] = $filter;
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid filter provided to addFilter; must be string or Zend_Filter_Interface');
        }

        $this->_filters[$name] = $filter;

        return $this;
    }

    /**
     * Add filters to element
     * 
     * @param  array $filters 
     * @return Zend_Form_Element
     */
    public function addFilters(array $filters)
    {
        foreach ($filters as $filterInfo) {
            if (is_string($filterInfo)) {
                $this->addFilter($filterInfo);
            } elseif ($filterInfo instanceof Zend_Filter_Interface) {
                $this->addFilter($filterInfo);
            } elseif (is_array($filterInfo)) {
                $argc                = count($filterInfo);
                $options             = array();
                if (isset($filterInfo['filter'])) {
                    $filter = $filterInfo['filter'];
                    if (isset($filterInfo['options'])) {
                        $options = $filterInfo['options'];
                    }
                    $this->addFilter($filter, $options);
                } else {
                    switch (true) {
                        case (0 == $argc):
                            break;
                        case (1 <= $argc):
                            $filter  = array_shift($filterInfo);
                        case (2 <= $argc):
                            $options = array_shift($filterInfo);
                        default:
                            $this->addFilter($filter, $options);
                            break;
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid filter passed to addFilters()');
            }
        }

        return $this;
    }

    /**
     * Add filters to element, overwriting any already existing
     * 
     * @param  array $filters 
     * @return Zend_Form_Element
     */
    public function setFilters(array $filters)
    {
        $this->clearFilters();
        return $this->addFilters($filters);
    }

    /**
     * Retrieve a single filter by name
     * 
     * @param  string $name 
     * @return Zend_Filter_Interface
     */
    public function getFilter($name)
    {
        if (!isset($this->_filters[$name])) {
            $len = strlen($name);
            foreach ($this->_filters as $localName => $filter) {
                if ($len > strlen($localName)) {
                    continue;
                }

                if (0 === substr_compare($localName, $name, -$len, $len, true)) {
                    if (is_array($filter)) {
                        return $this->_loadFilter($filter);
                    }
                    return $filter;
                }
            }
            return false;
        }

        if (is_array($this->_filters[$name])) {
            return $this->_loadFilter($this->_filters[$name]);
        }

        return $this->_filters[$name];
    }

    /**
     * Get all filters
     * 
     * @return array
     */
    public function getFilters()
    {
        $filters = array();
        foreach ($this->_filters as $key => $value) {
            if ($value instanceof Zend_Filter_Interface) {
                $filters[$key] = $value;
                continue;
            }
            $filter = $this->_loadFilter($value);
            $filters[get_class($filter)] = $filter;
        }
        return $filters;
    }

    /**
     * Remove a filter by name
     * 
     * @param  string $name 
     * @return Zend_Form_Element
     */
    public function removeFilter($name)
    {
        if (isset($this->_filters[$name])) {
            unset($this->_filters[$name]);
        } else {
            $len = strlen($name);
            foreach (array_keys($this->_filters) as $filter) {
                if ($len > strlen($filter)) {
                    continue;
                }
                if (0 === substr_compare($filter, $name, -$len, $len, true)) {
                    unset($this->_filters[$filter]);
                    break;
                }
            }
        }

        return $this;
    }

    /**
     * Clear all filters
     * 
     * @return Zend_Form_Element
     */
    public function clearFilters()
    {
        $this->_filters = array();
        return $this;
    }

    // Rendering

    /**
     * Set view object
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Form_Element
     */
    public function setView(Zend_View_Interface $view = null)
    {
        $this->_view = $view;
        return $this;
    }

    /**
     * Retrieve view object
     *
     * Retrieves from ViewRenderer if none previously set.
     * 
     * @return null|Zend_View_Interface
     */
    public function getView()
    {
        if (null === $this->_view) {
            require_once 'Zend/Controller/Action/HelperBroker.php';
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
            $this->setView($viewRenderer->view);
        }
        return $this->_view;
    }

    /**
     * Instantiate a decorator based on class name or class name fragment
     * 
     * @param  string $name 
     * @param  null|array $options 
     * @return Zend_Form_Decorator_Interface
     */
    protected function _getDecorator($name, $options)
    {
        $class = $this->getPluginLoader(self::DECORATOR)->load($name);
        if (null === $options) {
            $decorator = new $class;
        } else {
            $decorator = new $class($options);
        }

        return $decorator;
    }

    /**
     * Add a decorator for rendering the element
     * 
     * @param  string|Zend_Form_Decorator_Interface $decorator 
     * @param  array|Zend_Config $options Options with which to initialize decorator
     * @return Zend_Form_Element
     */
    public function addDecorator($decorator, $options = null)
    {
        if ($decorator instanceof Zend_Form_Decorator_Interface) {
            $name = get_class($decorator);
        } elseif (is_string($decorator)) {
            $name      = $decorator;
            $decorator = array(
                'decorator' => $name,
                'options'   => $options,
            );
        } elseif (is_array($decorator)) {
            foreach ($decorator as $name => $spec) {
                break;
            }
            if (is_numeric($name)) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid alias provided to addDecorator; must be alphanumeric string');
            }
            if (is_string($spec)) {
                $decorator = array(
                    'decorator' => $spec,
                    'options'   => $options,
                );
            } elseif ($spec instanceof Zend_Form_Decorator_Interface) {
                $decorator = $spec;
            }
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid decorator provided to addDecorator; must be string or Zend_Form_Decorator_Interface');
        }

        $this->_decorators[$name] = $decorator;

        return $this;
    }

    /**
     * Add many decorators at once
     * 
     * @param  array $decorators 
     * @return Zend_Form_Element
     */
    public function addDecorators(array $decorators)
    {
        foreach ($decorators as $decoratorInfo) {
            if (is_string($decoratorInfo)) {
                $this->addDecorator($decoratorInfo);
            } elseif ($decoratorInfo instanceof Zend_Form_Decorator_Interface) {
                $this->addDecorator($decoratorInfo);
            } elseif (is_array($decoratorInfo)) {
                $argc    = count($decoratorInfo);
                $options = array();
                if (isset($decoratorInfo['decorator'])) {
                    $decorator = $decoratorInfo['decorator'];
                    if (isset($decoratorInfo['options'])) {
                        $options = $decoratorInfo['options'];
                    }
                    $this->addDecorator($decorator, $options);
                } else {
                    switch (true) {
                        case (0 == $argc):
                            break;
                        case (1 <= $argc):
                            $decorator  = array_shift($decoratorInfo);
                        case (2 <= $argc):
                            $options = array_shift($decoratorInfo);
                        default:
                            $this->addDecorator($decorator, $options);
                            break;
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid decorator passed to addDecorators()');
            }
        }

        return $this;
    }

    /**
     * Overwrite all decorators
     * 
     * @param  array $decorators 
     * @return Zend_Form_Element
     */
    public function setDecorators(array $decorators)
    {
        $this->clearDecorators();
        return $this->addDecorators($decorators);
    }

    /**
     * Retrieve a registered decorator
     * 
     * @param  string $name 
     * @return false|Zend_Form_Decorator_Abstract
     */
    public function getDecorator($name)
    {
        if (!isset($this->_decorators[$name])) {
            $len = strlen($name);
            foreach ($this->_decorators as $localName => $decorator) {
                if ($len > strlen($localName)) {
                    continue;
                }

                if (0 === substr_compare($localName, $name, -$len, $len, true)) {
                    if (is_array($decorator)) {
                        return $this->_loadDecorator($decorator, $localName);
                    }
                    return $decorator;
                }
            }
            return false;
        }

        if (is_array($this->_decorators[$name])) {
            return $this->_loadDecorator($this->_decorators[$name], $name);
        }

        return $this->_decorators[$name];
    }

    /**
     * Retrieve all decorators
     * 
     * @return array
     */
    public function getDecorators()
    {
        foreach ($this->_decorators as $key => $value) {
            if (is_array($value)) {
                $this->_loadDecorator($value, $key);
            }
        }
        return $this->_decorators;
    }

    /**
     * Remove a single decorator
     * 
     * @param  string $name 
     * @return bool
     */
    public function removeDecorator($name)
    {
        if (isset($this->_decorators[$name])) {
            unset($this->_decorators[$name]);
        } else {
            $len = strlen($name);
            foreach (array_keys($this->_decorators) as $decorator) {
                if ($len > strlen($decorator)) {
                    continue;
                }
                if (0 === substr_compare($decorator, $name, -$len, $len, true)) {
                    unset($this->_decorators[$decorator]);
                    break;
                }
            }
        }

        return $this;
    }

    /**
     * Clear all decorators
     * 
     * @return Zend_Form_Element
     */
    public function clearDecorators()
    {
        $this->_decorators = array();
        return $this;
    }

    /**
     * Render form element
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            $this->setView($view);
        }

        $content = '';
        foreach ($this->getDecorators() as $decorator) {
            $decorator->setElement($this);
            $content = $decorator->render($content);
        }
        return $content;
    }

    /**
     * String representation of form element
     *
     * Proxies to {@link render()}.
     * 
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->render();
            return $return;
        } catch (Exception $e) {
            trigger_error($e->getMessage(), E_USER_WARNING);
            return '';
        }
    }

    /**
     * Lazy-load a filter
     * 
     * @param  array $filter 
     * @return Zend_Filter_Interface
     */
    protected function _loadFilter(array $filter)
    {
        $origName = $filter['filter'];
        $name     = $this->getPluginLoader(self::FILTER)->load($filter['filter']);

        if (array_key_exists($name, $this->_filters)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Filter instance already exists for filter "%s"', $origName));
        }

        if (empty($filter['options'])) {
            $instance = new $name;
        } else {
            $r = new ReflectionClass($name);
            if ($r->hasMethod('__construct')) {
                $instance = $r->newInstanceArgs((array) $filter['options']);
            } else {
                $instance = $r->newInstance();
            }
        }

        if ($origName != $name) {
            $filterNames  = array_keys($this->_filters);
            $order        = array_flip($filterNames);
            $order[$name] = $order[$origName];
            $filtersExchange = array();
            unset($order[$origName]);
            asort($order);
            foreach ($order as $key => $index) {
                if ($key == $name) {
                    $filtersExchange[$key] = $instance;
                    continue;
                }
                $filtersExchange[$key] = $this->_filters[$key];
            }
            $this->_filters = $filtersExchange;
        } else {
            $this->_filters[$name] = $instance;
        }

        return $instance;
    }

    /**
     * Lazy-load a validator
     * 
     * @param  array $validator Validator definition
     * @return Zend_Validate_Interface
     */
    protected function _loadValidator(array $validator)
    {
        $origName = $validator['validator'];
        $name     = $this->getPluginLoader(self::VALIDATE)->load($validator['validator']);

        if (array_key_exists($name, $this->_validators)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Validator instance already exists for validator "%s"', $origName));
        }

        if (empty($validator['options'])) {
            $instance = new $name;
        } else {
            $messages = false;
            if (isset($validator['options']['messages'])) {
                $messages = $validator['options']['messages'];
                unset($validator['options']['messages']);
            }

            $r = new ReflectionClass($name);
            if ($r->hasMethod('__construct')) {
                $instance = $r->newInstanceArgs((array) $validator['options']);
            } else {
                $instance = $r->newInstance();
            }

            if ($messages) {
                if (is_array($messages)) {
                    $instance->setMessages($messages);
                } elseif (is_string($messages)) {
                    $instance->setMessage($messages);
                }
            }
        }

        $instance->zfBreakChainOnFailure = $validator['breakChainOnFailure'];

        if ($origName != $name) {
            $validatorNames     = array_keys($this->_validators);
            $order              = array_flip($validatorNames);
            $order[$name]       = $order[$origName];
            $validatorsExchange = array();
            unset($order[$origName]);
            asort($order);
            foreach ($order as $key => $index) {
                if ($key == $name) {
                    $validatorsExchange[$key] = $instance;
                    continue;
                }
                $validatorsExchange[$key] = $this->_validators[$key];
            }
            $this->_validators = $validatorsExchange;
        } else {
            $this->_validators[$name] = $instance;
        }

        return $instance;
    }

    /**
     * Lazy-load a decorator
     * 
     * @param  array $decorator Decorator type and options
     * @param  mixed $name Decorator name or alias
     * @return Zend_Form_Decorator_Interface
     */
    protected function _loadDecorator(array $decorator, $name)
    {
        $sameName = false;
        if ($name == $decorator['decorator']) {
            $sameName = true;
        }

        $instance = $this->_getDecorator($decorator['decorator'], $decorator['options']);
        if ($sameName) {
            $newName            = get_class($instance);
            $decoratorNames     = array_keys($this->_decorators);
            $order              = array_flip($decoratorNames);
            $order[$newName]    = $order[$name];
            $decoratorsExchange = array();
            unset($order[$name]);
            asort($order);
            foreach ($order as $key => $index) {
                if ($key == $newName) {
                    $decoratorsExchange[$key] = $instance;
                    continue;
                }
                $decoratorsExchange[$key] = $this->_decorators[$key];
            }
            $this->_decorators = $decoratorsExchange;
        } else {
            $this->_decorators[$name] = $instance;
        }

        return $instance;
    }

    /**
     * Retrieve error messages and perform translation and value substitution
     * 
     * @return array
     */
    protected function _getErrorMessages()
    {
        $translator = $this->getTranslator();
        $messages   = $this->getErrorMessages();
        $value      = $this->getValue();
        foreach ($messages as $key => $message) {
            if (null !== $translator) {
                $message = $translator->translate($message);
            }
            if ($this->isArray() || is_array($value)) {
                $aggregateMessages = array();
                foreach ($value as $val) {
                    $aggregateMessages[] = str_replace('%value%', $val, $message);
                }
                $messages[$key] = $aggregateMessages;
            } else {
                $messages[$key] = str_replace('%value%', $value, $message);
            }
        }
        return $messages;
    }

    /**
     * Are there custom error messages registered?
     * 
     * @return bool
     */
    protected function _hasErrorMessages()
    {
        return !empty($this->_errorMessages);
    }
}
PKpG[3G�|��Form/SubForm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form */
require_once 'Zend/Form.php';

/**
 * Zend_Form_SubForm
 * 
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SubForm.php 8585 2008-03-06 19:32:34Z matthew $
 */
class Zend_Form_SubForm extends Zend_Form
{
    /**
     * Whether or not form elements are members of an array
     * @var bool
     */
    protected $_isArray = true;

    /**
     * Load the default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('FormElements')
                 ->addDecorator('HtmlTag', array('tag' => 'dl'))
                 ->addDecorator('Fieldset')
                 ->addDecorator('DtDdWrapper');
        }
    }
}
PKpG[1��@^^Form/Element/MultiCheckbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Multi */
require_once 'Zend/Form/Element/Multi.php';

/**
 * MultiCheckbox form element
 *
 * Allows specifyinc a (multi-)dimensional associative array of values to use 
 * as labelled checkboxes; these will return an array of values for those 
 * checkboxes selected.
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: MultiCheckbox.php 8628 2008-03-07 15:04:13Z matthew $
 */
class Zend_Form_Element_MultiCheckbox extends Zend_Form_Element_Multi
{
    /**
     * Use formMultiCheckbox view helper by default
     * @var string
     */
    public $helper = 'formMultiCheckbox';

    /**
     * MultiCheckbox is an array of values by default
     * @var bool
     */
    protected $_isArray = true;
}
PKpG[���Form/Element/Hash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * CSRF form protection
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Hash.php 11332 2008-09-10 16:35:45Z matthew $
 */
class Zend_Form_Element_Hash extends Zend_Form_Element_Xhtml
{
    /**
     * Use formHidden view helper by default
     * @var string
     */
    public $helper = 'formHidden';

    /**
     * Actual hash used.
     * 
     * @var mixed
     */
    protected $_hash;

    /**
     * Salt for CSRF token
     * @var string
     */
    protected $_salt = 'salt';

    /**
     * @var Zend_Session_Namespace
     */
    protected $_session;

    /**
     * TTL for CSRF token
     * @var int
     */
    protected $_timeout = 300;

    /**
     * Constructor
     *
     * Creates session namespace for CSRF token, and adds validator for CSRF 
     * token.
     * 
     * @param  string|array|Zend_Config $spec 
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($spec, $options = null)
    {
        parent::__construct($spec, $options);

        $this->setAllowEmpty(false)
             ->setRequired(true)
             ->initCsrfValidator();
    }

    /**
     * Set session object
     * 
     * @param  Zend_Session_Namespace $session 
     * @return Zend_Form_Element_Hash
     */
    public function setSession($session)
    {
        $this->_session = $session;
        return $this;
    }

    /**
     * Get session object
     *
     * Instantiate session object if none currently exists
     * 
     * @return Zend_Session_Namespace
     */
    public function getSession()
    {
        if (null === $this->_session) {
            require_once 'Zend/Session/Namespace.php';
            $this->_session = new Zend_Session_Namespace($this->getSessionName());
        }
        return $this->_session;
    }

    /**
     * Initialize CSRF validator
     *
     * Creates Session namespace, and initializes CSRF token in session. 
     * Additionally, adds validator for validating CSRF token.
     * 
     * @return Zend_Form_Element_Hash
     */
    public function initCsrfValidator()
    {
        $session = $this->getSession();
        if (isset($session->hash)) {
            $rightHash = $session->hash;
        } else {
            $rightHash = null;
        }

        $this->addValidator('Identical', true, array($rightHash));
        return $this;
    }

    /**
     * Salt for CSRF token
     *
     * @param  string $salt
     * @return Zend_Form_Element_Hash
     */
    public function setSalt($salt)
    {
        $this->_salt = (string) $salt;
        return $this;
    }

    /**
     * Retrieve salt for CSRF token
     *
     * @return string
     */
    public function getSalt()
    {
        return $this->_salt;
    }

    /**
     * Retrieve CSRF token
     *
     * If no CSRF token currently exists, generates one.
     * 
     * @return string
     */
    public function getHash()
    {
        if (null === $this->_hash) {
            $this->_generateHash();
        }
        return $this->_hash;
    }

    /**
     * Get session namespace for CSRF token
     *
     * Generates a session namespace based on salt, element name, and class.
     * 
     * @return string
     */
    public function getSessionName()
    {
        return __CLASS__ . '_' . $this->getSalt() . '_' . $this->getName();
    }

    /**
     * Set timeout for CSRF session token
     * 
     * @param  int $ttl 
     * @return Zend_Form_Element_Hash
     */
    public function setTimeout($ttl)
    {
        $this->_timeout = (int) $ttl;
        return $this;
    }

    /**
     * Get CSRF session token timeout
     * 
     * @return int
     */
    public function getTimeout()
    {
        return $this->_timeout;
    }

    /**
     * Override getLabel() to always be empty
     * 
     * @return null
     */
    public function getLabel()
    {
        return null;
    }

    /**
     * Initialize CSRF token in session
     * 
     * @return void
     */
    public function initCsrfToken()
    {
        $session = $this->getSession();
        $session->setExpirationHops(1, null, true);
        $session->setExpirationSeconds($this->getTimeout());
        $session->hash = $this->getHash();
    }

    /**
     * Render CSRF token in form
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        $this->initCsrfToken();
        return parent::render($view);
    }

    /**
     * Generate CSRF token
     *
     * Generates CSRF token and stores both in {@link $_hash} and element 
     * value.
     * 
     * @return void
     */
    protected function _generateHash()
    {
        $this->_hash = md5(
            mt_rand(1,1000000) 
            .  $this->getSalt() 
            .  $this->getName() 
            .  mt_rand(1,1000000)
        );
        $this->setValue($this->_hash);
    }
}
PKpG[�7)�O	O	Form/Element/Password.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Password form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Password.php 9337 2008-04-28 18:14:48Z matthew $
 */
class Zend_Form_Element_Password extends Zend_Form_Element_Xhtml
{
    /**
     * Use formPassword view helper by default
     * @var string
     */
    public $helper = 'formPassword';

    /**
     * Whether or not to render the password
     * @var bool
     */
    public $renderPassword = false;

    /**
     * Set flag indicating whether or not to render the password
     * @param  bool $flag 
     * @return Zend_Form_Element_Password
     */
    public function setRenderPassword($flag)
    {
        $this->renderPassword = (bool) $flag;
        return $this;
    }

    /**
     * Get value of renderPassword flag
     * 
     * @return bool
     */
    public function renderPassword()
    {
        return $this->renderPassword;
    }

    /**
     * Override isValid()
     *
     * Ensure that validation error messages mask password value.
     * 
     * @param  string $value 
     * @param  mixed $context 
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        foreach ($this->getValidators() as $validator) {
            if ($validator instanceof Zend_Validate_Abstract) {
                $validator->setObscureValue(true);
            }
        }
        return parent::isValid($value, $context);
    }
}
PKpG[��
O��Form/Element/Captcha.phpnu&1i�<?php

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/** Zend_Captcha_Adapter */
require_once 'Zend/Captcha/Adapter.php';

/**
 * Generic captcha element
 * 
 * This element allows to insert CAPTCHA into the form in order
 * to validate that human is submitting the form. The actual
 * logic is contained in the captcha adapter.
 * 
 * @see http://en.wikipedia.org/wiki/Captcha
 *
 */
class Zend_Form_Element_Captcha extends Zend_Form_Element_Xhtml 
{
    /**
     * @const string Captch plugin type constant
     */
    const CAPTCHA = 'CAPTCHA';

    /**
     * Captcha adapter
     *
     * @var Zend_Captcha_Adapter
     */
    protected $_captcha;
    
    /**
     * Get captcha adapter
     * 
     * @return Zend_Captcha_Adapter
     */
    public function getCaptcha() 
    {
        return $this->_captcha;
    }
    
    /**
     * Set captcha adapter
     * 
     * @param string|array|Zend_Captcha_Adapter $captcha
     * @param array $options
     */
    public function setCaptcha($captcha, $options = array()) 
    {
        if ($captcha instanceof Zend_Captcha_Adapter) {
            $instance = $captcha;
        } else {
            if (is_array($captcha)) {
                if (array_key_exists('captcha', $captcha)) {
                    $name = $captcha['captcha'];
                    unset($captcha['captcha']);
                } else {
                    $name = array_shift($captcha);
                }
                $options = array_merge($options, $captcha);
            } else {
                $name = $captcha;
            }

            $name = $this->getPluginLoader(self::CAPTCHA)->load($name);
            if (empty($options)) {
                $instance = new $name;
            } else {
                $r = new ReflectionClass($name);
                if ($r->hasMethod('__construct')) {
                    $instance = $r->newInstanceArgs(array($options));
                } else {
                    $instance = $r->newInstance();
                }
            }
        }
        
        $this->_captcha = $instance;
        $this->_captcha->setName($this->getName());
        return $this;
    }

    /**
     * Constructor
     *
     * $spec may be:
     * - string: name of element
     * - array: options with which to configure element
     * - Zend_Config: Zend_Config with options for configuring element
     * 
     * @param  string|array|Zend_Config $spec 
     * @return void
     */
    public function __construct($spec, $options = null) 
    {
        parent::__construct($spec, $options);
        $this->setAllowEmpty(true)
             ->setRequired(true)
             ->setAutoInsertNotEmptyValidator(false)
             ->addValidator($this->getCaptcha(), true);
    }    

    /**
     * Set options
     *
     * Overrides to allow passing captcha options
     * 
     * @param  array $options 
     * @return Zend_Form_Element_Captcha
     */
    public function setOptions(array $options)
    {
        if (array_key_exists('captcha', $options)) {
            if (array_key_exists('captchaOptions', $options)) {
                $this->setCaptcha($options['captcha'], $options['captchaOptions']);
                unset($options['captchaOptions']);
            } else {
                $this->setCaptcha($options['captcha']);
            }
            unset($options['captcha']);
        }
        return parent::setOptions($options);
    }
    
    /**
     * Render form element
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        $captcha    = $this->getCaptcha();
        $captcha->setName($this->getFullyQualifiedName());

        $decorators = $this->getDecorators();

        $decorator  = $captcha->getDecorator();
        if (!empty($decorator)) {
            array_unshift($decorators, $decorator);
        }

        $decorator = array('Captcha', array('captcha' => $captcha));
        array_unshift($decorators, $decorator);

        $this->setDecorators($decorators);

        $this->setValue($this->getCaptcha()->generate());

        return parent::render($view);
    }
    
    /**
     * Retrieve plugin loader for validator or filter chain
     *
     * Support for plugin loader for Captcha adapters 
     * 
     * @param  string $type 
     * @return Zend_Loader_PluginLoader
     * @throws Zend_Loader_Exception on invalid type.
     */
    public function getPluginLoader($type)
    {
        $type = strtoupper($type);
        if ($type == self::CAPTCHA) {
            if (!isset($this->_loaders[$type])) {
                require_once 'Zend/Loader/PluginLoader.php';
                $this->_loaders[$type] = new Zend_Loader_PluginLoader(
                    array('Zend_Captcha' => 'Zend/Captcha/')
                );
            }
            return $this->_loaders[$type];
        } else {
            return parent::getPluginLoader($type);
        }
    }
    
    /**
     * Add prefix path for plugin loader for captcha adapters
     *
     * This method handles the captcha type, the rest is handled by
     * the parent 
     *  
     * @param  string $path 
     * @return Zend_Form_Element
     * @see Zend_Form_Element::addPrefixPath
     */
    public function addPrefixPath($prefix, $path, $type = null)
    {
        $type = strtoupper($type);
        switch ($type) {
            case null:
                $loader = $this->getPluginLoader(self::CAPTCHA);
                $cPrefix = rtrim($prefix, '_') . '_Captcha';
                $cPath   = rtrim($path, '/\\') . '/Captcha';
                $loader->addPrefixPath($cPrefix, $cPath);
                return parent::addPrefixPath($prefix, $path);
            case self::CAPTCHA:
                $loader = $this->getPluginLoader($type);
                $loader->addPrefixPath($prefix, $path);
                return $this;
            default:
                return parent::addPrefixPath($prefix, $path, $type);
        }
    }
    
    /**
     * Load default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('Errors')
                 ->addDecorator('Description', array('tag' => 'p', 'class' => 'description'))
                 ->addDecorator('HtmlTag', array('tag' => 'dd'))
                 ->addDecorator('Label', array('tag' => 'dt'));
        }
    }

    /**
     * Is the captcha valid?
     * 
     * @param  mixed $value 
     * @param  mixed $context 
     * @return boolean
     */
    public function isValid($value, $context = null)
    {
        $this->getCaptcha()->setName($this->getName());
        $belongsTo = $this->getBelongsTo();
        if (empty($belongsTo) || !is_array($context)) {
            return parent::isValid($value, $context);
        }

        $name     = $this->getFullyQualifiedName();
        $root     = substr($name, 0, strpos($name, '['));
        $segments = substr($name, strpos($name, '['));
        $segments = ltrim($segments, '[');
        $segments = rtrim($segments, ']');
        $segments = explode('][', $segments);
        array_unshift($segments, $root);
        array_pop($segments);
        $newContext = $context;
        foreach ($segments as $segment) {
            if (array_key_exists($segment, $newContext)) {
                $newContext = $newContext[$segment];
            }
        }

        return parent::isValid($value, $newContext);
    }
}
PKpG[�Z:�Form/Element/Button.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Submit */
require_once 'Zend/Form/Element/Submit.php';

/**
 * Button form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Button.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Button extends Zend_Form_Element_Submit
{
    /**
     * Use formButton view helper by default
     * @var string
     */
    public $helper = 'formButton';
}
PKpG[	��Form/Element/Radio.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Multi */
require_once 'Zend/Form/Element/Multi.php';

/**
 * Radio form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Radio.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Radio extends Zend_Form_Element_Multi
{
    /**
     * Use formRadio view helper by default
     * @var string
     */
    public $helper = 'formRadio';
}
PKpG[O!��Form/Element/Reset.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Submit */
require_once 'Zend/Form/Element/Submit.php';

/**
 * Reset form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Reset.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Reset extends Zend_Form_Element_Submit
{
    /**
     * Use formReset view helper by default
     * @var string
     */
    public $helper = 'formReset';
}
PKpG[�+��Form/Element/Submit.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Submit form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Submit.php 8585 2008-03-06 19:32:34Z matthew $
 */
class Zend_Form_Element_Submit extends Zend_Form_Element_Xhtml
{
    /**
     * Default view helper to use
     * @var string
     */
    public $helper = 'formSubmit';

    /**
     * Constructor
     * 
     * @param  string|array|Zend_Config $spec Element name or configuration
     * @param  string|array|Zend_Config $options Element value or configuration
     * @return void
     */
    public function __construct($spec, $options = null)
    {
        if (is_string($spec) && ((null !== $options) && is_string($options))) {
            $options = array('label' => $options);
        }

        parent::__construct($spec, $options);
    }

    /**
     * Return label
     *
     * If no label is present, returns the currently set name.
     *
     * If a translator is present, returns the translated label.
     * 
     * @return string
     */
    public function getLabel()
    {
        $value = parent::getLabel();

        if (null === $value) {
            $value = $this->getName();
        }

        if (null !== ($translator = $this->getTranslator())) {
            return $translator->translate($value);
        }

        return $value;
    }

    /**
     * Has this submit button been selected?
     * 
     * @return bool
     */
    public function isChecked()
    {
        $value = $this->getValue();

        if (empty($value)) {
            return false;
        }
        if ($value != $this->getLabel()) {
            return false;
        }

        return true;
    }

    /**
     * Default decorators
     *
     * Uses only 'Submit' and 'DtDdWrapper' decorators by default.
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('ViewHelper')
                 ->addDecorator('DtDdWrapper');
        }
    }
}
PKpG[;3�/jRjRForm/Element/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Zend_Form_Element
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: File.php 13240 2008-12-14 17:35:56Z thomas $
 */
class Zend_Form_Element_File extends Zend_Form_Element_Xhtml
{
    /**
     * @const string Plugin loader type
     */
    const TRANSFER_ADAPTER = 'TRANSFER_ADAPTER';

    /**
     * @var string Default view helper
     */
    public $helper = 'formFile';

    /**
     * @var Zend_File_Transfer_Adapter_Abstract
     */
    protected $_adapter;

    /**
     * @var boolean Already validated ?
     */
    protected $_validated = false;

    /**
     * @var integer Internal multifile counter
     */
    protected $_counter = 1;

    /**
     * @var integer Maximum file size for MAX_FILE_SIZE attribut of form
     */
    protected static $_maxFileSize = 0;

    /**
     * Load default decorators
     *
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('File')
                 ->addDecorator('Errors')
                 ->addDecorator('HtmlTag', array('tag' => 'dd'))
                 ->addDecorator('Label', array('tag' => 'dt'));
        }
    }

    /**
     * Set plugin loader
     *
     * @param  Zend_Loader_PluginLoader_Interface $loader
     * @param  string $type
     * @return Zend_Form_Element_File
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type)
    {
        $type = strtoupper($type);

        if ($type != self::TRANSFER_ADAPTER) {
            return parent::setPluginLoader($loader, $type);
        }

        $this->_loaders[$type] = $loader;
        return $this;
    }

    /**
     * Get Plugin Loader
     *
     * @param  string $type
     * @return Zend_Loader_PluginLoader_Interface
     */
    public function getPluginLoader($type)
    {
        $type = strtoupper($type);

        if ($type != self::TRANSFER_ADAPTER) {
            return parent::getPluginLoader($type);
        }

        if (!array_key_exists($type, $this->_loaders)) {
            require_once 'Zend/Loader/PluginLoader.php';
            $loader = new Zend_Loader_PluginLoader(array(
                'Zend_File_Transfer_Adapter' => 'Zend/File/Transfer/Adapter/',
            ));
            $this->setPluginLoader($loader, self::TRANSFER_ADAPTER);
        }

        return $this->_loaders[$type];
    }

    /**
     * Add prefix path for plugin loader
     *
     * @param  string $prefix
     * @param  string $path
     * @param  string $type
     * @return Zend_Form_Element_File
     */
    public function addPrefixPath($prefix, $path, $type = null)
    {
        $type = strtoupper($type);
        if (!empty($type) && ($type != self::TRANSFER_ADAPTER)) {
            return parent::addPrefixPath($prefix, $path, $type);
        }

        if (empty($type)) {
            $pluginPrefix = rtrim($prefix, '_') . '_Transfer_Adapter';
            $pluginPath   = rtrim($path, DIRECTORY_SEPARATOR) . '/Transfer/Adapter/';
            $loader       = $this->getPluginLoader(self::TRANSFER_ADAPTER);
            $loader->addPrefixPath($pluginPrefix, $pluginPath);
            return parent::addPrefixPath($prefix, $path, null);
        }

        $loader = $this->getPluginLoader($type);
        $loader->addPrefixPath($prefix, $path);
        return $this;
    }

    /**
     * Set transfer adapter
     *
     * @param  string|Zend_File_Transfer_Adapter_Abstract $adapter
     * @return Zend_Form_Element_File
     */
    public function setTransferAdapter($adapter)
    {
        if ($adapter instanceof Zend_File_Transfer_Adapter_Abstract) {
            $this->_adapter = $adapter;
        } elseif (is_string($adapter)) {
            $loader = $this->getPluginLoader(self::TRANSFER_ADAPTER);
            $class  = $loader->load($adapter);
            $this->_adapter = new $class;
        } else {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception('Invalid adapter specified');
        }

        foreach (array('filter', 'validate') as $type) {
            $loader = $this->getPluginLoader($type);
            $this->_adapter->setPluginLoader($loader, $type);
        }

        return $this;
    }

    /**
     * Get transfer adapter
     *
     * Lazy loads HTTP transfer adapter when no adapter registered.
     *
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function getTransferAdapter()
    {
        if (null === $this->_adapter) {
            $this->setTransferAdapter('Http');
        }
        return $this->_adapter;
    }

    /**
     * Add Validator; proxy to adapter
     *
     * @param  string|Zend_Validate_Interface $validator
     * @param  bool $breakChainOnFailure
     * @param  mixed $options
     * @return Zend_Form_Element_File
     */
    public function addValidator($validator, $breakChainOnFailure = false, $options = array())
    {
        $adapter = $this->getTransferAdapter();
        $adapter->addValidator($validator, $breakChainOnFailure, $options, $this->getName());
        $this->_validated = false;

        return $this;
    }

    /**
     * Add multiple validators at once; proxy to adapter
     *
     * @param  array $validators
     * @return Zend_Form_Element_File
     */
    public function addValidators(array $validators)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->addValidators($validators, $this->getName());
        $this->_validated = false;

        return $this;
    }

    /**
     * Add multiple validators at once, overwriting; proxy to adapter
     *
     * @param  array $validators
     * @return Zend_Form_Element_File
     */
    public function setValidators(array $validators)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->setValidators($validators, $this->getName());
        $this->_validated = false;

        return $this;
    }

    /**
     * Retrieve validator by name; proxy to adapter
     *
     * @param  string $name
     * @return Zend_Validate_Interface|null
     */
    public function getValidator($name)
    {
        $adapter    = $this->getTransferAdapter();
        return $adapter->getValidator($name);
    }

    /**
     * Retrieve all validators; proxy to adapter
     *
     * @return array
     */
    public function getValidators()
    {
        $adapter = $this->getTransferAdapter();
        $validators = $adapter->getValidators($this->getName());
        if ($validators === null) {
            $validators = array();
        }

        return $validators;
    }

    /**
     * Remove validator by name; proxy to adapter
     *
     * @param  string $name
     * @return Zend_Form_Element_File
     */
    public function removeValidator($name)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->removeValidator($name);
        $this->_validated = false;

        return $this;
    }

    /**
     * Remove all validators; proxy to adapter
     *
     * @return Zend_Form_Element_File
     */
    public function clearValidators()
    {
        $adapter = $this->getTransferAdapter();
        $adapter->clearValidators();
        $this->_validated = false;

        return $this;
    }

    /**
     * Add Filter; proxy to adapter
     *
     * @param  string|array $filter  Type of filter to add
     * @param  string|array $options Options to set for the filter
     * @return Zend_Form_Element_File
     */
    public function addFilter($filter, $options = null)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->addFilter($filter, $options, $this->getName());

        return $this;
    }

    /**
     * Add Multiple filters at once; proxy to adapter
     *
     * @param  array $filters
     * @return Zend_Form_Element_File
     */
    public function addFilters(array $filters)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->addFilters($filters, $this->getName());

        return $this;
    }

    /**
     * Sets a filter for the class, erasing all previous set; proxy to adapter
     *
     * @param  string|array $filter Filter to set
     * @return Zend_Form_Element_File
     */
    public function setFilters(array $filters)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->setFilters($filters, $this->getName());

        return $this;
    }

    /**
     * Retrieve individual filter; proxy to adapter
     *
     * @param  string $name
     * @return Zend_Filter_Interface|null
     */
    public function getFilter($name)
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->getFilter($name);
    }

    /**
     * Returns all set filters; proxy to adapter
     *
     * @return array List of set filters
     */
    public function getFilters()
    {
        $adapter = $this->getTransferAdapter();
        $filters = $adapter->getFilters($this->getName());

        if ($filters === null) {
            $filters = array();
        }
        return $filters;
    }

    /**
     * Remove an individual filter; proxy to adapter
     *
     * @param  string $name
     * @return Zend_Form_Element_File
     */
    public function removeFilter($name)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->removeFilter($name);

        return $this;
    }

    /**
     * Remove all filters; proxy to adapter
     *
     * @return Zend_Form_Element_File
     */
    public function clearFilters()
    {
        $adapter = $this->getTransferAdapter();
        $adapter->clearFilters();

        return $this;
    }

    /**
     * Validate upload
     *
     * @param  string $value   File, can be optional, give null to validate all files
     * @param  mixed  $context
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        if ($this->_validated) {
            return true;
        }

        $adapter    = $this->getTransferAdapter();
        $translator = $this->getTranslator();
        if ($translator !== null) {
            $adapter->setTranslator($translator);
        }

        if (!$this->isRequired()) {
            $adapter->setOptions(array('ignoreNoFile' => true), $this->getName());
        } else {
            $adapter->setOptions(array('ignoreNoFile' => false), $this->getName());
            if ($this->autoInsertNotEmptyValidator() and
                   !$this->getValidator('NotEmpty'))
            {
                $validators = $this->getValidators();
                $notEmpty   = array('validator' => 'NotEmpty', 'breakChainOnFailure' => true);
                array_unshift($validators, $notEmpty);
                $this->setValidators($validators);
            }
        }

        if($adapter->isValid($this->getName())) {
            $this->_validated = true;
            return true;
        }

        $this->_validated = false;
        return false;
    }

    /**
     * Receive the uploaded file
     *
     * @param  string $value
     * @return boolean
     */
    public function receive($value = null)
    {
        if (!$this->_validated) {
            if (!$this->isValid($this->getName())) {
                return false;
            }
        }

        $adapter = $this->getTransferAdapter();
        if ($adapter->receive($this->getName())) {
            return true;
        }

        return false;
    }

    /**
     * Retrieve error codes; proxy to transfer adapter
     *
     * @return array
     */
    public function getErrors()
    {
        return $this->getTransferAdapter()->getErrors();
    }

    /**
     * Are there errors registered?
     *
     * @return bool
     */
    public function hasErrors()
    {
        return $this->getTransferAdapter()->hasErrors();
    }

    /**
     * Retrieve error messages; proxy to transfer adapter
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->getTransferAdapter()->getMessages();
    }

    /**
     * Set the upload destination
     *
     * @param  string $path
     * @return Zend_Form_Element_File
     */
    public function setDestination($path)
    {
        $this->getTransferAdapter()->setDestination($path, $this->getName());
        return $this;
    }

    /**
     * Get the upload destination
     *
     * @return string
     */
    public function getDestination()
    {
        return $this->getTransferAdapter()->getDestination($this->getName());
    }

    /**
     * Get the final filename
     *
     * @param  string $value (Optional) Element or file to return
     * @return string
     */
    public function getFileName($value = null)
    {
        if (empty($value)) {
            $value = $this->getName();
        }

        return $this->getTransferAdapter()->getFileName($value);
    }

    /**
     * Get internal file informations
     *
     * @param  string $value (Optional) Element or file to return
     * @return array
     */
    public function getFileInfo($value = null)
    {
        if (empty($value)) {
            $value = $this->getName();
        }

        return $this->getTransferAdapter()->getFileInfo($value);
    }

    /**
     * Set a multifile element
     *
     * @param integer $count Number of file elements
     * @return Zend_Form_Element_File Provides fluent interface
     */
    public function setMultiFile($count)
    {
        if ((integer) $count < 2) {
            $this->setIsArray(false);
            $this->_counter = 1;
        } else {
            $this->setIsArray(true);
            $this->_counter = (integer) $count;
        }

        return $this;
    }

    /**
     * Returns the multifile element number
     *
     * @return integer
     */
    public function getMultiFile()
    {
        return $this->_counter;
    }

    /**
     * Sets the maximum file size of the form
     *
     * @param  integer $size
     * @return integer
     */
    public function setMaxFileSize($size)
    {
        $ini = $this->_convertIniToInteger(trim(ini_get('post_max_size')));
        $mem = $this->_convertIniToInteger(trim(ini_get('memory_limit')));
        $max = $this->_convertIniToInteger(trim(ini_get('upload_max_filesize')));

        if (($max > -1) and ($size > $max)) {
            trigger_error("Your 'upload_max_filesize' config setting allows only $max. You set $size.", E_USER_ERROR);
        }

        if (($ini > -1) and ($size > $ini)) {
            trigger_error("Your 'post_max_size' config setting allows only $ini. You set $size.", E_USER_ERROR);
        }

        if (($mem > -1) and ($ini > $mem)) {
            trigger_error("Your 'post_max_size' config settings exceeds the 'memory_limit' setting. You should fix this.", E_USER_ERROR);
        }

        self::$_maxFileSize = $size;
        return $this;
    }

    /**
     * Converts a ini setting to a integer value
     *
     * @param  string $setting
     * @return integer
     */
    private function _convertIniToInteger($setting)
    {
        if (!is_numeric($setting)) {
            $type = strtoupper(substr($setting, -1));
            $setting = (integer) substr($setting, 0, -1);

            switch ($type) {
                case 'K' :
                    $setting *= 1024;
                case 'M' :
                    $setting *= 1024 * 1024;
                    break;

                case 'G' :
                    $setting *= 1024 * 1024 * 1024;
                    break;

                default :
                    break;
            }
        }

        return (integer) $setting;
    }

    /**
     * Sets the maximum file size of the form
     *
     * @return integer
     */
    public function getMaxFileSize()
    {
        return self::$_maxFileSize;
    }

    /**
     * Processes the file, returns null or the filename only
     * For the complete path, use getFileName
     *
     * @return null|string
     */
    public function getValue()
    {
        if (!is_null($this->_value)) {
            return $this->_value;
        }

        $content = $this->getTransferAdapter()->getFileName($this->getName());
        if (empty($content)) {
            return null;
        }

        if (!$this->isValid(null)) {
            return null;
        }

        if (!$this->receive()) {
            return null;
        }

        $filenames = $this->getFileName();
        if (count($filenames) == 1) {
            $this->_value = basename($filenames);
            return $this->_value;
        }

        $this->_value = array();
        foreach($filenames as $filename) {
            $this->_value[] = basename($filename);
        }

        return $this->_value;
    }

    /**
     * Disallow setting the value
     *
     * @param  mixed $value
     * @return Zend_Form_Element_File
     */
    public function setValue($value)
    {
        return $this;
    }

    /**
     * Set translator object for localization
     *
     * @param  Zend_Translate|null $translator
     * @return Zend_Form_Element_File
     */
    public function setTranslator($translator = null)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->setTranslator($translator);
        parent::setTranslator($translator);

        return $this;
    }

    /**
     * Retrieve localization translator object
     *
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->getTranslator();
    }

    /**
     * Indicate whether or not translation should be disabled
     *
     * @param  bool $flag
     * @return Zend_Form_Element_File
     */
    public function setDisableTranslator($flag)
    {
        $adapter = $this->getTransferAdapter();
        $adapter->setDisableTranslator($flag);
        $this->_translatorDisabled = (bool) $flag;

        return $this;
    }

    /**
     * Is translation disabled?
     *
     * @return bool
     */
    public function translatorIsDisabled()
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->translatorIsDisabled();
    }

    /**
     * Was the file received?
     *
     * @return bool
     */
    public function isReceived()
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->isReceived($this->getName());
    }

    /**
     * Was the file uploaded?
     *
     * @return bool
     */
    public function isUploaded()
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->isUploaded($this->getName());
    }

    /**
     * Has the file been filtered?
     *
     * @return bool
     */
    public function isFiltered()
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->isFiltered($this->getName());
    }

    /**
     * Returns the hash for this file element
     *
     * @param string $hash (Optional) Hash algorithm to use
     * @return string|array Hashstring
     */
    public function getHash($hash = 'crc32')
    {
        $adapter = $this->getTransferAdapter();
        return $adapter->getHash($hash, $this->getName());
    }

    /**
     * Retrieve error messages and perform translation and value substitution
     *
     * @return array
     */
    protected function _getErrorMessages()
    {
        $translator = $this->getTranslator();
        $messages   = $this->getErrorMessages();
        $value      = $this->getFileName();
        foreach ($messages as $key => $message) {
            if (null !== $translator) {
                $message = $translator->translate($message);
            }
            if ($this->isArray() || is_array($value)) {
                $aggregateMessages = array();
                foreach ($value as $val) {
                    $aggregateMessages[] = str_replace('%value%', $val, $message);
                }
                $messages[$key] = $aggregateMessages;
            } else {
                $messages[$key] = str_replace('%value%', $value, $message);
            }
        }
        return $messages;
    }
}
PKpG[�E

Form/Element/Hidden.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Hidden form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Hidden.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Hidden extends Zend_Form_Element_Xhtml
{
    /**
     * Use formHidden view helper by default
     * @var string
     */
    public $helper = 'formHidden';
}
PKpG[�!�5

Form/Element/Text.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Text form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Text.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Text extends Zend_Form_Element_Xhtml
{
    /**
     * Default form view helper to use for rendering
     * @var string
     */
    public $helper = 'formText';
}
PKpG[� ޭ  Form/Element/Checkbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Checkbox form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Checkbox.php 9323 2008-04-25 21:13:17Z matthew $
 */
class Zend_Form_Element_Checkbox extends Zend_Form_Element_Xhtml
{
    /**
     * Is the checkbox checked?
     * @var bool
     */
    public $checked = false;

    /**
     * Use formCheckbox view helper by default
     * @var string
     */
    public $helper = 'formCheckbox';

    /**
     * Value when checked
     * @var string
     */
    protected $_checkedValue = '1';

    /**
     * Value when not checked
     * @var string
     */
    protected $_uncheckedValue = '0';

    /**
     * Current value
     * @var string 0 or 1
     */
    protected $_value = '0';

    /**
     * Set options
     *
     * Intercept checked and unchecked values and set them early; test stored 
     * value against checked and unchecked values after configuration.
     * 
     * @param  array $options 
     * @return Zend_Form_Element_Checkbox
     */
    public function setOptions(array $options)
    {
        if (array_key_exists('checkedValue', $options)) {
            $this->setCheckedValue($options['checkedValue']);
            unset($options['checkedValue']);
        }
        if (array_key_exists('uncheckedValue', $options)) {
            $this->setUncheckedValue($options['uncheckedValue']);
            unset($options['uncheckedValue']);
        }
        parent::setOptions($options);

        $curValue = $this->getValue();
        $test     = array($this->getCheckedValue(), $this->getUncheckedValue());
        if (!in_array($curValue, $test)) {
            $this->setValue($curValue);
        }

        return $this;
    }

    /**
     * Set value
     *
     * If value matches checked value, sets to that value, and sets the checked
     * flag to true.
     *
     * Any other value causes the unchecked value to be set as the current 
     * value, and the checked flag to be set as false.
     *
     * 
     * @param  mixed $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setValue($value)
    {
        if ($value == $this->getCheckedValue()) {
            parent::setValue($value);
            $this->checked = true;
        } else {
            parent::setValue($this->getUncheckedValue());
            $this->checked = false;
        }
        return $this;
    }

    /**
     * Set checked value
     * 
     * @param  string $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setCheckedValue($value)
    {
        $this->_checkedValue = (string) $value;
        return $this;
    }

    /**
     * Get value when checked
     * 
     * @return string
     */
    public function getCheckedValue()
    {
        return $this->_checkedValue;
    }

    /**
     * Set unchecked value
     * 
     * @param  string $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setUncheckedValue($value)
    {
        $this->_uncheckedValue = (string) $value;
        return $this;
    }

    /**
     * Get value when not checked
     * 
     * @return string
     */
    public function getUncheckedValue()
    {
        return $this->_uncheckedValue;
    }

    /**
     * Set checked flag
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element_Checkbox
     */
    public function setChecked($flag)
    {
        $this->checked = (bool) $flag;
        if ($this->checked) {
            $this->setValue($this->getCheckedValue());
        } else {
            $this->setValue($this->getUncheckedValue());
        }
        return $this;
    }

    /**
     * Get checked flag
     * 
     * @return bool
     */
    public function isChecked()
    {
        return $this->checked;
    }

    /**
     * Render
     *
     * Ensure that options property is set when rendering.
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        $this->options = array(
            'checked'   => $this->getCheckedValue(),
            'unChecked' => $this->getUncheckedValue(),
        );
        return parent::render($view);
    }
}
PKpG[��S���Form/Element/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Image form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Image.php 8680 2008-03-07 22:25:35Z matthew $
 */
class Zend_Form_Element_Image extends Zend_Form_Element_Xhtml
{
    /**
     * What view helper to use when using view helper decorator
     * @var string
     */
    public $helper = 'formImage';

    /**
     * Image source
     * @var string
     */
    public $src;

    /**
     * Image value
     * @var mixed
     */
    protected $_imageValue;

    /**
     * Load default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('Image')
                 ->addDecorator('Errors')
                 ->addDecorator('HtmlTag', array('tag' => 'dd'))
                 ->addDecorator('Label', array('tag' => 'dt'));
        }
    }

    /**
     * Set image path
     * 
     * @param  string $path 
     * @return Zend_Form_Element_Image
     */
    public function setImage($path)
    {
        $this->src = (string) $path;
        return $this;
    }

    /**
     * Get image path
     * 
     * @return string
     */
    public function getImage()
    {
        return $this->src;
    }

    /**
     * Set image value to use when submitted
     * 
     * @param  mixed $value 
     * @return Zend_Form_Element_Image
     */
    public function setImageValue($value)
    {
        $this->_imageValue = $value;
        return $this;
    }

    /**
     * Get image value to use when submitted
     * 
     * @return mixed
     */
    public function getImageValue()
    {
        return $this->_imageValue;
    }

    /**
     * Was this element used to submit the form?
     * 
     * @return bool
     */
    public function isChecked()
    {
        $imageValue = $this->getImageValue();
        return ((null !== $imageValue) && ($this->getValue() == $imageValue));
    }
}
PKpG[T�P8��Form/Element/Xhtml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element */
require_once 'Zend/Form/Element.php';

/**
 * Base element for XHTML elements
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Xhtml.php 8064 2008-02-16 10:58:39Z thomas $
 */
abstract class Zend_Form_Element_Xhtml extends Zend_Form_Element
{
}
PKpG[��D��Form/Element/Multiselect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Select */
require_once 'Zend/Form/Element/Select.php';

/**
 * Multiselect form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Multiselect.php 8628 2008-03-07 15:04:13Z matthew $
 */
class Zend_Form_Element_Multiselect extends Zend_Form_Element_Select
{
    /**
     * 'multiple' attribute
     * @var string
     */
    public $multiple = 'multiple';

    /**
     * Use formSelect view helper by default
     * @var string
     */
    public $helper = 'formSelect';

    /**
     * Multiselect is an array of values by default
     * @var bool
     */
    protected $_isArray = true;
}
PKpG['΁Form/Element/Select.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Multi */
require_once 'Zend/Form/Element/Multi.php';

/**
 * Select.php form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Select.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Select extends Zend_Form_Element_Multi
{
    /**
     * Use formSelect view helper by default
     * @var string
     */
    public $helper = 'formSelect';
}
PKpG[V�FƢ�Form/Element/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Exception */
require_once 'Zend/Form/Exception.php';

/**
 * Exception for Zend_Form component.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Form_Element_Exception extends Zend_Form_Exception
{
}
PKpG[�?E�Form/Element/Multi.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Base class for multi-option form elements
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Multi.php 12527 2008-11-10 21:00:57Z thomas $
 */
abstract class Zend_Form_Element_Multi extends Zend_Form_Element_Xhtml
{
    /**
     * Array of options for multi-item
     * @var array
     */
    public $options = array();

    /**
     * Flag: autoregister inArray validator?
     * @var bool
     */
    protected $_registerInArrayValidator = true;

    /**
     * Separator to use between options; defaults to '<br />'.
     * @var string
     */
    protected $_separator = '<br />';

    /**
     * Which values are translated already?
     * @var array
     */
    protected $_translated = array();

    /**
     * Retrieve separator
     *
     * @return mixed
     */
    public function getSeparator()
    {
        return $this->_separator;
    }

    /**
     * Set separator
     *
     * @param mixed $separator
     * @return self
     */
    public function setSeparator($separator)
    {
        $this->_separator = $separator;
        return $this;
    }

    /**
     * Retrieve options array
     *
     * @return array
     */
    protected function _getMultiOptions()
    {
        if (null === $this->options || !is_array($this->options)) {
            $this->options = array();
        }

        return $this->options;
    }

    /**
     * Add an option
     *
     * @param  string $option
     * @param  string $value
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOption($option, $value = '')
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (!$this->_translateOption($option, $value)) {
            $this->options[$option] = $value;
        }

        return $this;
    }

    /**
     * Add many options at once
     *
     * @param  array $options
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOptions(array $options)
    {
        foreach ($options as $option => $value) {
            if (is_array($value)
                && array_key_exists('key', $value)
                && array_key_exists('value', $value)
            ) {
                $this->addMultiOption($value['key'], $value['value']);
            } else {
                $this->addMultiOption($option, $value);
            }
        }
        return $this;
    }

    /**
     * Set all options at once (overwrites)
     *
     * @param  array $options
     * @return Zend_Form_Element_Multi
     */
    public function setMultiOptions(array $options)
    {
        $this->clearMultiOptions();
        return $this->addMultiOptions($options);
    }

    /**
     * Retrieve single multi option
     *
     * @param  string $option
     * @return mixed
     */
    public function getMultiOption($option)
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (isset($this->options[$option])) {
            $this->_translateOption($option, $this->options[$option]);
            return $this->options[$option];
        }

        return null;
    }

    /**
     * Retrieve options
     *
     * @return array
     */
    public function getMultiOptions()
    {
        $this->_getMultiOptions();
        foreach ($this->options as $option => $value) {
            $this->_translateOption($option, $value);
        }
        return $this->options;
    }

    /**
     * Remove a single multi option
     *
     * @param  string $option
     * @return bool
     */
    public function removeMultiOption($option)
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (isset($this->options[$option])) {
            unset($this->options[$option]);
            if (isset($this->_translated[$option])) {
                unset($this->_translated[$option]);
            }
            return true;
        }

        return false;
    }

    /**
     * Clear all options
     *
     * @return Zend_Form_Element_Multi
     */
    public function clearMultiOptions()
    {
        $this->options = array();
        $this->_translated = array();
        return $this;
    }

    /**
     * Set flag indicating whether or not to auto-register inArray validator
     *
     * @param  bool $flag
     * @return Zend_Form_Element_Multi
     */
    public function setRegisterInArrayValidator($flag)
    {
        $this->_registerInArrayValidator = (bool) $flag;
        return $this;
    }

    /**
     * Get status of auto-register inArray validator flag
     *
     * @return bool
     */
    public function registerInArrayValidator()
    {
        return $this->_registerInArrayValidator;
    }

    /**
     * Is the value provided valid?
     *
     * Autoregisters InArray validator if necessary.
     *
     * @param  string $value
     * @param  mixed $context
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        if ($this->registerInArrayValidator()) {
            if (!$this->getValidator('InArray')) {
                $multiOptions = $this->getMultiOptions();
                $options      = array();

                foreach ($multiOptions as $opt_value => $opt_label) {
                    // optgroup instead of option label
                    if (is_array($opt_label)) {
                        $options = array_merge($options, array_keys($opt_label));
                    }
                    else {
                        $options[] = $opt_value;
                    }
                }

                $this->addValidator(
                    'InArray',
                    true,
                    array($options)
                );
            }
        }
        return parent::isValid($value, $context);
    }

    /**
     * Translate an option
     *
     * @param  string $option
     * @param  string $value
     * @return bool
     */
    protected function _translateOption($option, $value)
    {
        if ($this->translatorIsDisabled()) {
            return true;
        }

        if (!isset($this->_translated[$option]) && !empty($value)) {
            $this->options[$option] = $this->_translateValue($value);
            if ($this->options[$option] === $value) {
                return false;
            }
            $this->_translated[$option] = true;
            return true;
        }

        return false;
    }

    /**
     * Translate a multi option value
     *
     * @param  string $value
     * @return string
     */
    protected function _translateValue($value)
    {
        if (is_array($value)) {
            foreach ($value as $key => $val) {
                $value[$key] = $this->_translateValue($val);
            }
            return $value;
        } else {
            if (null !== ($translator = $this->getTranslator())) {
                if ($translator->isTranslated($value)) {
                    return $translator->translate($value);
                }
            }
            return $value;
        }
    }
}
PKpG[�*-Form/Element/Textarea.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element_Xhtml */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * Textarea form element
 * 
 * @category   Zend
 * @package    Zend_Form
 * @subpackage Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Textarea.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Form_Element_Textarea extends Zend_Form_Element_Xhtml
{
    /**
     * Use formTextarea view helper by default
     * @var string
     */
    public $helper = 'formTextarea';
}
PKpG[RXVg�l�lForm/DisplayGroup.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Form_DisplayGroup
 * 
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DisplayGroup.php 12787 2008-11-23 14:17:44Z matthew $
 */
class Zend_Form_DisplayGroup implements Iterator,Countable
{
    /**
     * Group attributes
     * @var array
     */
    protected $_attribs = array();

    /**
     * Display group decorators
     * @var array
     */
    protected $_decorators = array();

    /**
     * Description
     * @var string
     */
    protected $_description;

    /**
     * Should we disable loading the default decorators?
     * @var bool
     */
    protected $_disableLoadDefaultDecorators = false;

    /**
     * Element order
     * @var array
     */
    protected $_elementOrder = array();

    /**
     * Elements
     * @var array
     */
    protected $_elements = array();

    /**
     * Whether or not a new element has been added to the group
     * @var bool
     */
    protected $_groupUpdated = false;

    /**
     * Plugin loader for decorators
     * @var Zend_Loader_PluginLoader
     */
    protected $_loader;

    /**
     * Group name
     * @var string
     */
    protected $_name;

    /**
     * Group order
     * @var int
     */
    protected $_order;

    /**
     * @var Zend_Translate
     */
    protected $_translator;

    /**
     * Is translation disabled?
     * @var bool
     */
    protected $_translatorDisabled = false;

    /**
     * @var Zend_View_Interface
     */
    protected $_view;

    /**
     * Constructor
     * 
     * @param  string $name 
     * @param  Zend_Loader_PluginLoader $loader 
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($name, Zend_Loader_PluginLoader $loader, $options = null)
    {
        $this->setName($name);

        $this->setPluginLoader($loader);

        if (is_array($options)) {
            $this->setOptions($options);
        } elseif ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }

        // Extensions...
        $this->init();

        $this->loadDefaultDecorators();
    }

    /**
     * Initialize object; used by extending classes
     * 
     * @return void
     */
    public function init()
    {
    }

    /**
     * Set options
     * 
     * @param  array $options 
     * @return Zend_Form_DisplayGroup
     */
    public function setOptions(array $options)
    {
        $forbidden = array(
            'Options', 'Config', 'PluginLoader', 'View',
            'Translator', 'Attrib'
        );
        foreach ($options as $key => $value) {
            $normalized = ucfirst($key);

            if (in_array($normalized, $forbidden)) {
                continue;
            }

            $method = 'set' . $normalized;
            if (method_exists($this, $method)) {
                $this->$method($value);
            } else {
                $this->setAttrib($key, $value);
            }
        }
        return $this;
    }

    /**
     * Set options from config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Form_DisplayGroup
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

    /**
     * Set group attribute
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Form_DisplayGroup
     */
    public function setAttrib($key, $value)
    {
        $key = (string) $key;
        $this->_attribs[$key] = $value;
        return $this;
    }

    /**
     * Add multiple form attributes at once
     * 
     * @param  array $attribs 
     * @return Zend_Form_DisplayGroup
     */
    public function addAttribs(array $attribs)
    {
        foreach ($attribs as $key => $value) {
            $this->setAttrib($key, $value);
        }
        return $this;
    }

    /**
     * Set multiple form attributes at once
     *
     * Overwrites any previously set attributes.
     * 
     * @param  array $attribs 
     * @return Zend_Form_DisplayGroup
     */
    public function setAttribs(array $attribs)
    {
        $this->clearAttribs();
        return $this->addAttribs($attribs);
    }

    /**
     * Retrieve a single form attribute
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getAttrib($key)
    {
        $key = (string) $key;
        if (!isset($this->_attribs[$key])) {
            return null;
        }

        return $this->_attribs[$key];
    }

    /**
     * Retrieve all form attributes/metadata
     * 
     * @return array
     */
    public function getAttribs()
    {
        return $this->_attribs;
    }

    /**
     * Remove attribute
     * 
     * @param  string $key 
     * @return bool
     */
    public function removeAttrib($key)
    {
        if (array_key_exists($key, $this->_attribs)) {
            unset($this->_attribs[$key]);
            return true;
        }

        return false;
    }

    /**
     * Clear all form attributes
     * 
     * @return Zend_Form
     */
    public function clearAttribs()
    {
        $this->_attribs = array();
        return $this;
    }

    /**
     * Filter a name to only allow valid variable characters
     * 
     * @param  string $value 
     * @return string
     */
    public function filterName($value)
    {
        return preg_replace('/[^a-zA-Z0-9_\x7f-\xff]/', '', (string) $value);
    }

    /**
     * Set group name
     * 
     * @param  string $name 
     * @return Zend_Form_DisplayGroup
     */
    public function setName($name)
    {
        $name = $this->filtername($name);
        if (('0' !== $name) && empty($name)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid name provided; must contain only valid variable characters and be non-empty');
        }

        $this->_name = $name;
        return $this;
    }

    /**
     * Retrieve group name
     * 
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Get fully qualified name
     *
     * Places name as subitem of array and/or appends brackets.
     * 
     * @return string
     */
    public function getFullyQualifiedName()
    {
        return $this->getName();
    }

    /**
     * Get element id
     * 
     * @return string
     */
    public function getId()
    {
        if (isset($this->id)) {
            return $this->id;
        }

        $id = $this->getFullyQualifiedName();

        // Bail early if no array notation detected
        if (!strstr($id, '[')) {
            return $id;
        }

        // Strip array notation
        if ('[]' == substr($id, -2)) {
            $id = substr($id, 0, strlen($id) - 2);
        }
        $id = str_replace('][', '-', $id);
        $id = str_replace(array(']', '['), '-', $id);
        $id = trim($id, '-');

        return $id;
    }

    /**
     * Set group legend
     * 
     * @param  string $legend 
     * @return Zend_Form_DisplayGroup
     */
    public function setLegend($legend)
    {
        return $this->setAttrib('legend', (string) $legend);
    }

    /**
     * Retrieve group legend
     * 
     * @return string
     */
    public function getLegend()
    {
        return $this->getAttrib('legend');
    }

    /**
     * Set description
     * 
     * @param  string $value 
     * @return Zend_Form_DisplayGroup
     */
    public function setDescription($value)
    {
        $this->_description = (string) $value;
        return $this;
    }

    /**
     * Get description
     * 
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set group order
     * 
     * @param  int $order 
     * @return Zend_Form_Element
     */
    public function setOrder($order)
    {
        $this->_order = (int) $order;
        return $this;
    }

    /**
     * Retrieve group order
     * 
     * @return int
     */
    public function getOrder()
    {
        return $this->_order;
    }

    // Elements

    /**
     * Add element to stack
     * 
     * @param  Zend_Form_Element $element 
     * @return Zend_Form_DisplayGroup
     */
    public function addElement(Zend_Form_Element $element)
    {
        $this->_elements[$element->getName()] = $element;
        $this->_groupUpdated = true;
        return $this;
    }

    /**
     * Add multiple elements at once
     * 
     * @param  array $elements 
     * @return Zend_Form_DisplayGroup
     * @throws Zend_Form_Exception if any element is not a Zend_Form_Element
     */
    public function addElements(array $elements)
    {
        foreach ($elements as $element) {
            if (!$element instanceof Zend_Form_Element) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('elements passed via array to addElements() must be Zend_Form_Elements only');
            }
            $this->addElement($element);
        }
        return $this;
    }

    /**
     * Set multiple elements at once (overwrites)
     * 
     * @param  array $elements 
     * @return Zend_Form_DisplayGroup
     */
    public function setElements(array $elements)
    {
        $this->clearElements();
        return $this->addElements($elements);
    }

    /**
     * Retrieve element
     * 
     * @param  string $name 
     * @return Zend_Form_Element|null
     */
    public function getElement($name)
    {
        $name = (string) $name;
        if (isset($this->_elements[$name])) {
            return $this->_elements[$name];
        }

        return null;
    }

    /**
     * Retrieve elements
     * @return array
     */
    public function getElements()
    {
        return $this->_elements;
    }

    /**
     * Remove a single element
     * 
     * @param  string $name 
     * @return boolean
     */
    public function removeElement($name)
    {
        $name = (string) $name;
        if (array_key_exists($name, $this->_elements)) {
            unset($this->_elements[$name]);
            $this->_groupUpdated = true;
            return true;
        }

        return false;
    }

    /**
     * Remove all elements
     * 
     * @return Zend_Form_DisplayGroup
     */
    public function clearElements()
    {
        $this->_elements = array();
        $this->_groupUpdated = true;
        return $this;
    }

    // Plugin loader (for decorators)

    /**
     * Set plugin loader
     * 
     * @param  Zend_Loader_PluginLoader $loader 
     * @return Zend_Form_DisplayGroup
     */
    public function setPluginLoader(Zend_Loader_PluginLoader $loader)
    {
        $this->_loader = $loader;
        return $this;
    }

    /**
     * Retrieve plugin loader
     * 
     * @return Zend_Loader_PluginLoader
     */
    public function getPluginLoader()
    {
        return $this->_loader;
    }

    /**
     * Add a prefix path for the plugin loader
     * 
     * @param  string $prefix 
     * @param  string $path 
     * @return Zend_Form_DisplayGroup
     */
    public function addPrefixPath($prefix, $path)
    {
        $this->getPluginLoader()->addPrefixPath($prefix, $path);
        return $this;
    }

    /**
     * Add several prefix paths at once
     * 
     * @param  array $spec 
     * @return Zend_Form_DisplayGroup
     */
    public function addPrefixPaths(array $spec)
    {
        if (isset($spec['prefix']) && isset($spec['path'])) {
            return $this->addPrefixPath($spec['prefix'], $spec['path']);
        } 
        foreach ($spec as $prefix => $paths) {
            if (is_numeric($prefix) && is_array($paths)) {
                $prefix = null;
                if (isset($paths['prefix']) && isset($paths['path'])) {
                    $this->addPrefixPath($paths['prefix'], $paths['path']);
                }
            } elseif (!is_numeric($prefix)) {
                if (is_string($paths)) {
                    $this->addPrefixPath($prefix, $paths);
                } elseif (is_array($paths)) {
                    foreach ($paths as $path) {
                        $this->addPrefixPath($prefix, $path);
                    }
                }
            }
        }
        return $this;
    }

    // Decorators

    /**
     * Set flag to disable loading default decorators
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element
     */
    public function setDisableLoadDefaultDecorators($flag)
    {
        $this->_disableLoadDefaultDecorators = (bool) $flag;
        return $this;
    }

    /**
     * Should we load the default decorators?
     * 
     * @return bool
     */
    public function loadDefaultDecoratorsIsDisabled()
    {
        return $this->_disableLoadDefaultDecorators;
    }

    /**
     * Load default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('FormElements')
                 ->addDecorator('HtmlTag', array('tag' => 'dl'))
                 ->addDecorator('Fieldset')
                 ->addDecorator('DtDdWrapper');
        }
    }

    /**
     * Instantiate a decorator based on class name or class name fragment
     * 
     * @param  string $name 
     * @param  null|array $options 
     * @return Zend_Form_Decorator_Interface
     */
    protected function _getDecorator($name, $options = null)
    {
        $class = $this->getPluginLoader()->load($name);
        if (null === $options) {
            $decorator = new $class;
        } else {
            $decorator = new $class($options);
        }

        return $decorator;
    }

    /**
     * Add a decorator for rendering the group
     * 
     * @param  string|Zend_Form_Decorator_Interface $decorator 
     * @param  array|Zend_Config $options Options with which to initialize decorator
     * @return Zend_Form_DisplayGroup
     */
    public function addDecorator($decorator, $options = null)
    {
        if ($decorator instanceof Zend_Form_Decorator_Interface) {
            $name = get_class($decorator);
        } elseif (is_string($decorator)) {
            $name      = $decorator;
            $decorator = array(
                'decorator' => $name,
                'options'   => $options,
            );
        } elseif (is_array($decorator)) {
            foreach ($decorator as $name => $spec) {
                break;
            }
            if (is_numeric($name)) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid alias provided to addDecorator; must be alphanumeric string');
            }
            if (is_string($spec)) {
                $decorator = array(
                    'decorator' => $spec,
                    'options'   => $options,
                );
            } elseif ($spec instanceof Zend_Form_Decorator_Interface) {
                $decorator = $spec;
            }
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid decorator provided to addDecorator; must be string or Zend_Form_Decorator_Interface');
        }

        $this->_decorators[$name] = $decorator;

        return $this;
    }

    /**
     * Add many decorators at once
     * 
     * @param  array $decorators 
     * @return Zend_Form_DisplayGroup
     */
    public function addDecorators(array $decorators)
    {
        foreach ($decorators as $decoratorInfo) {
            if (is_string($decoratorInfo)) {
                $this->addDecorator($decoratorInfo);
            } elseif ($decoratorInfo instanceof Zend_Form_Decorator_Interface) {
                $this->addDecorator($decoratorInfo);
            } elseif (is_array($decoratorInfo)) {
                $argc    = count($decoratorInfo);
                $options = array();
                if (isset($decoratorInfo['decorator'])) {
                    $decorator = $decoratorInfo['decorator'];
                    if (isset($decoratorInfo['options'])) {
                        $options = $decoratorInfo['options'];
                    }
                    $this->addDecorator($decorator, $options);
                } else {
                    switch (true) {
                        case (0 == $argc):
                            break;
                        case (1 <= $argc):
                            $decorator  = array_shift($decoratorInfo);
                        case (2 <= $argc):
                            $options = array_shift($decoratorInfo);
                        default:
                            $this->addDecorator($decorator, $options);
                            break;
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid decorator passed to addDecorators()');
            }
        }

        return $this;
    }

    /**
     * Overwrite all decorators
     * 
     * @param  array $decorators 
     * @return Zend_Form_DisplayGroup
     */
    public function setDecorators(array $decorators)
    {
        $this->clearDecorators();
        return $this->addDecorators($decorators);
    }

    /**
     * Retrieve a registered decorator
     * 
     * @param  string $name 
     * @return false|Zend_Form_Decorator_Abstract
     */
    public function getDecorator($name)
    {
        if (!isset($this->_decorators[$name])) {
            $len = strlen($name);
            foreach ($this->_decorators as $localName => $decorator) {
                if ($len > strlen($localName)) {
                    continue;
                }

                if (0 === substr_compare($localName, $name, -$len, $len, true)) {
                    if (is_array($decorator)) {
                        return $this->_loadDecorator($decorator, $localName);
                    }
                    return $decorator;
                }
            }
            return false;
        }

        if (is_array($this->_decorators[$name])) {
            return $this->_loadDecorator($this->_decorators[$name], $name);
        }

        return $this->_decorators[$name];
    }

    /**
     * Retrieve all decorators
     * 
     * @return array
     */
    public function getDecorators()
    {
        foreach ($this->_decorators as $key => $value) {
            if (is_array($value)) {
                $this->_loadDecorator($value, $key);
            }
        }
        return $this->_decorators;
    }

    /**
     * Remove a single decorator
     * 
     * @param  string $name 
     * @return bool
     */
    public function removeDecorator($name)
    {
        $decorator = $this->getDecorator($name);
        if ($decorator) {
            if (array_key_exists($name, $this->_decorators)) {
                unset($this->_decorators[$name]);
            } else {
                $class = get_class($decorator);
                unset($this->_decorators[$class]);
            }
            return true;
        }

        return false;
    }

    /**
     * Clear all decorators
     * 
     * @return Zend_Form_DisplayGroup
     */
    public function clearDecorators()
    {
        $this->_decorators = array();
        return $this;
    }

    /**
     * Set view
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Form_DisplayGroup
     */
    public function setView(Zend_View_Interface $view = null)
    {
        $this->_view = $view;
        return $this;
    }

    /**
     * Retrieve view
     * 
     * @return Zend_View_Interface
     */
    public function getView()
    {
        if (null === $this->_view) {
            require_once 'Zend/Controller/Action/HelperBroker.php';
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
            $this->setView($viewRenderer->view);
        }

        return $this->_view;
    }

    /**
     * Render display group
     * 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            $this->setView($view);
        }
        $content = '';
        foreach ($this->getDecorators() as $decorator) {
            $decorator->setElement($this);
            $content = $decorator->render($content);
        }
        return $content;
    }

    /**
     * String representation of group
     * 
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->render();
            return $return;
        } catch (Exception $e) {
            trigger_error($e->getMessage(), E_USER_WARNING);
            return '';
        }
    }

    /**
     * Set translator object
     * 
     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator 
     * @return Zend_Form_DisplayGroup
     */
    public function setTranslator($translator = null)
    {
        if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) {
            $this->_translator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            $this->_translator = $translator->getAdapter();
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid translator specified');
        }
        return $this;
    }

    /**
     * Retrieve translator object
     * 
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if ($this->translatorIsDisabled()) {
            return null;
        }

        if (null === $this->_translator) {
            require_once 'Zend/Form.php';
            return Zend_Form::getDefaultTranslator();
        }

        return $this->_translator;
    }

    /**
     * Indicate whether or not translation should be disabled
     * 
     * @param  bool $flag 
     * @return Zend_Form_DisplayGroup
     */
    public function setDisableTranslator($flag)
    {
        $this->_translatorDisabled = (bool) $flag;
        return $this;
    }

    /**
     * Is translation disabled?
     * 
     * @return bool
     */
    public function translatorIsDisabled()
    {
        return $this->_translatorDisabled;
    }

    /**
     * Overloading: allow rendering specific decorators
     *
     * Call renderDecoratorName() to render a specific decorator.
     * 
     * @param  string $method 
     * @param  array $args 
     * @return string
     * @throws Zend_Form_Exception for invalid decorator or invalid method call
     */
    public function __call($method, $args)
    {
        if ('render' == substr($method, 0, 6)) {
            $decoratorName = substr($method, 6);
            if (false !== ($decorator = $this->getDecorator($decoratorName))) {
                $decorator->setElement($this);
                $seed = '';
                if (0 < count($args)) {
                    $seed = array_shift($args);
                }
                return $decorator->render($seed);
            }

            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Decorator by name %s does not exist', $decoratorName));
        }

        require_once 'Zend/Form/Exception.php';
        throw new Zend_Form_Exception(sprintf('Method %s does not exist', $method));
    }

    // Interfaces: Iterator, Countable

    /**
     * Current element
     * 
     * @return Zend_Form_Element
     */
    public function current()
    {
        $this->_sort();
        current($this->_elementOrder);
        $key = key($this->_elementOrder);
        return $this->getElement($key);
    }

    /**
     * Current element
     * 
     * @return string
     */
    public function key()
    {
        $this->_sort();
        return key($this->_elementOrder);
    }

    /**
     * Move pointer to next element
     * 
     * @return void
     */
    public function next()
    {
        $this->_sort();
        next($this->_elementOrder);
    }

    /**
     * Move pointer to beginning of element loop
     * 
     * @return void
     */
    public function rewind()
    {
        $this->_sort();
        reset($this->_elementOrder);
    }

    /**
     * Determine if current element/subform/display group is valid
     * 
     * @return bool
     */
    public function valid()
    {
        $this->_sort();
        return (current($this->_elementOrder) !== false);
    }

    /**
     * Count of elements/subforms that are iterable
     * 
     * @return int
     */
    public function count()
    {
        return count($this->_elements);
    }

    /**
     * Sort items according to their order
     * 
     * @return void
     */
    protected function _sort()
    {
        if ($this->_groupUpdated || !is_array($this->_elementOrder)) {
            $elementOrder = array();
            foreach ($this->getElements() as $key => $element) {
                $elementOrder[$key] = $element->getOrder();
            }

            $items = array();
            $index = 0;
            foreach ($elementOrder as $key => $order) {
                if (null === $order) {
                    while (array_search($index, $elementOrder, true)) {
                        ++$index;
                    }
                    $items[$index] = $key;
                    ++$index;
                } else {
                    $items[$order] = $key;
                }
            }

            $items = array_flip($items);
            asort($items);
            $this->_elementOrder = $items;
            $this->_groupUpdated = false;
        }
    }

    /**
     * Lazy-load a decorator
     * 
     * @param  array $decorator Decorator type and options
     * @param  mixed $name Decorator name or alias
     * @return Zend_Form_Decorator_Interface
     */
    protected function _loadDecorator(array $decorator, $name)
    {
        $sameName = false;
        if ($name == $decorator['decorator']) {
            $sameName = true;
        }

        $instance = $this->_getDecorator($decorator['decorator'], $decorator['options']);
        if ($sameName) {
            $newName            = get_class($instance);
            $decoratorNames     = array_keys($this->_decorators);
            $order              = array_flip($decoratorNames);
            $order[$newName]    = $order[$name];
            $decoratorsExchange = array();
            unset($order[$name]);
            asort($order);
            foreach ($order as $key => $index) {
                if ($key == $newName) {
                    $decoratorsExchange[$key] = $instance;
                    continue;
                }
                $decoratorsExchange[$key] = $this->_decorators[$key];
            }
            $this->_decorators = $decoratorsExchange;
        } else {
            $this->_decorators[$name] = $instance;
        }

        return $instance;
    }
}
PKpG[R�Y��TimeSync/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 9488 2008-05-19 20:41:34Z thomas $
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_TimeSync
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_TimeSync_Exception extends Zend_Exception
{
    /**
     * Contains array of exceptions thrown in queried server
     *
     * @var array
     */
    protected $_exceptions;

    /**
     * Adds an exception to the exception list
     *
     * @param  Zend_TimeSync_Exception $exception New exteption to throw
     * @return void
     */
    public function addException(Zend_TimeSync_Exception $exception)
    {
        $this->_exceptions[] = $exception;
    }

    /**
     * Returns an array of exceptions that were thrown
     *
     * @return array
     */
    public function get()
    {
        return $this->_exceptions;
    }
}
PKpG[p�A��TimeSync/Protocol.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Protocol.php 9488 2008-05-19 20:41:34Z thomas $
 */

/**
 * Abstract class definition for all timeserver protocols
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_TimeSync_Protocol
{
    /**
     * Holds the current socket connection
     *
     * @var array
     */
    protected $_socket;

    /**
     * Exceptions that might have occured
     *
     * @var array
     */
    protected $_exceptions;

    /**
     * Hostname for timeserver
     *
     * @var string
     */
    protected $_timeserver;

    /**
     * Holds information passed/returned from timeserver
     *
     * @var array
     */
    protected $_info = array();

    /**
     * Abstract method that prepares the data to send to the timeserver
     *
     * @return mixed
     */
    abstract protected function _prepare();

    /**
     * Abstract method that reads the data returned from the timeserver
     *
     * @return mixed
     */
    abstract protected function _read();

    /**
     * Abstract method that writes data to to the timeserver
     *
     * @param  string $data Data to write
     * @return void
     */
    abstract protected function _write($data);

    /**
     * Abstract method that extracts the binary data returned from the timeserver
     *
     * @param  string|array $data Data returned from the timeserver
     * @return integer
     */
    abstract protected function _extract($data);

    /**
     * Connect to the specified timeserver.
     *
     * @return void
     * @throws Zend_TimeSync_Exception When the connection failed
     */
    protected function _connect()
    {
        $socket = @fsockopen($this->_timeserver, $this->_port, $errno, $errstr,
                             Zend_TimeSync::$options['timeout']);
        if ($socket === false) {
            throw new Zend_TimeSync_Exception('could not connect to ' .
                "'$this->_timeserver' on port '$this->_port', reason: '$errstr'");
        }

        $this->_socket = $socket;
    }

    /**
     * Disconnects from the peer, closes the socket.
     *
     * @return void
     */
    protected function _disconnect()
    {
        @fclose($this->_socket);
        $this->_socket = null;
    }

    /**
     * Return information sent/returned from the timeserver
     *
     * @return  array
     */
    public function getInfo()
    {
        if (empty($this->_info) === true) {
            $this->_write($this->_prepare());
            $timestamp = $this->_extract($this->_read());
        }

        return $this->_info;
    }

    /**
     * Query this timeserver without using the fallback mechanism
     *
     * @param  string|Zend_Locale $locale (Optional) Locale
     * @return Zend_Date
     */
    public function getDate($locale = null)
    {
        $this->_write($this->_prepare());
        $timestamp = $this->_extract($this->_read());

        $date = new Zend_Date($this, null, $locale);
        return $date;
    }
}
PKpG[۫a��5�5TimeSync/Ntp.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Ntp.php 9488 2008-05-19 20:41:34Z thomas $
 */

/**
 * Zend_TimeSync_Protocol
 */
require_once 'Zend/TimeSync/Protocol.php';

/**
 * NTP Protocol handling class
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_TimeSync_Ntp extends Zend_TimeSync_Protocol
{
    /**
     * NTP port number (123) assigned by the Internet Assigned Numbers Authority
     *
     * @var integer
     */
    protected $_port = 123;

    /**
     * NTP class constructor, sets the timeserver and port number
     *
     * @param string  $timeserver Adress of the timeserver to connect to
     * @param integer $port       (Optional) Port for this timeserver
     */
    public function __construct($timeserver, $port = 123)
    {
        $this->_timeserver = 'udp://' . $timeserver;
        if (is_null($port) === false) {
            $this->_port = $port;
        }
    }

    /**
     * Prepare local timestamp for transmission in our request packet
     *
     * NTP timestamps are represented as a 64-bit fixed-point number, in
     * seconds relative to 0000 UT on 1 January 1900.  The integer part is
     * in the first 32 bits and the fraction part in the last 32 bits
     *
     * @return string
     */
    protected function _prepare()
    {
        $frac   = microtime();
        $fracba = ($frac & 0xff000000) >> 24;
        $fracbb = ($frac & 0x00ff0000) >> 16;
        $fracbc = ($frac & 0x0000ff00) >> 8;
        $fracbd = ($frac & 0x000000ff);

        $sec   = (time() + 2208988800);
        $secba = ($sec & 0xff000000) >> 24;
        $secbb = ($sec & 0x00ff0000) >> 16;
        $secbc = ($sec & 0x0000ff00) >> 8;
        $secbd = ($sec & 0x000000ff);

        // Flags
        $nul       = chr(0x00);
        $nulbyte   = $nul . $nul . $nul . $nul;
        $ntppacket = chr(0xd9) . $nul . chr(0x0a) . chr(0xfa);

        /*
         * Root delay
         *
         * Indicates the total roundtrip delay to the primary reference
         * source at the root of the synchronization subnet, in seconds
         */
        $ntppacket .= $nul . $nul . chr(0x1c) . chr(0x9b);

        /*
         * Clock Dispersion
         *
         * Indicates the maximum error relative to the primary reference source at the
         * root of the synchronization subnet, in seconds
         */
        $ntppacket .= $nul . chr(0x08) . chr(0xd7) . chr(0xff);

        /*
         * ReferenceClockID
         *
         * Identifying the particular reference clock
         */
        $ntppacket .= $nulbyte;

        /*
         * The local time, in timestamp format, at the peer when its latest NTP message
         * was sent. Contanis an integer and a fractional part
         */
        $ntppacket .= chr($secba)  . chr($secbb)  . chr($secbc)  . chr($secbd);
        $ntppacket .= chr($fracba) . chr($fracbb) . chr($fracbc) . chr($fracbd);

        /*
         * The local time, in timestamp format, at the peer. Contains an integer
         * and a fractional part.
         */
        $ntppacket .= $nulbyte;
        $ntppacket .= $nulbyte;

        /*
         * This is the local time, in timestamp format, when the latest NTP message from
         * the peer arrived. Contanis an integer and a fractional part.
         */
        $ntppacket .= $nulbyte;
        $ntppacket .= $nulbyte;

        /*
         * The local time, in timestamp format, at which the
         * NTP message departed the sender. Contanis an integer
         * and a fractional part.
         */
        $ntppacket .= chr($secba)  . chr($secbb)  . chr($secbc)  . chr($secbd);
        $ntppacket .= chr($fracba) . chr($fracbb) . chr($fracbc) . chr($fracbd);

        return $ntppacket;
    }

    /**
     * Reads the data returned from the timeserver
     *
     * This will return an array with binary data listing:
     *
     * @return array
     * @throws Zend_TimeSync_Exception When timeserver can not be connected
     */
    protected function _read()
    {
        $flags = ord(fread($this->_socket, 1));
        $info  = stream_get_meta_data($this->_socket);

        if ($info['timed_out'] === true) {
            fclose($this->_socket);
            throw new Zend_TimeSync_Exception('could not connect to ' .
                "'$this->_timeserver' on port '$this->_port', reason: 'server timed out'");
        }

        $result = array(
            'flags'          => $flags,
            'stratum'        => ord(fread($this->_socket, 1)),
            'poll'           => ord(fread($this->_socket, 1)),
            'precision'      => ord(fread($this->_socket, 1)),
            'rootdelay'      => ord(fread($this->_socket, 4)),
            'rootdispersion' => ord(fread($this->_socket, 4)),
            'referenceid'    => ord(fread($this->_socket, 4)),
            'referencestamp' => ord(fread($this->_socket, 4)),
            'referencemicro' => ord(fread($this->_socket, 4)),
            'originatestamp' => ord(fread($this->_socket, 4)),
            'originatemicro' => ord(fread($this->_socket, 4)),
            'receivestamp'   => ord(fread($this->_socket, 4)),
            'receivemicro'   => ord(fread($this->_socket, 4)),
            'transmitstamp'  => ord(fread($this->_socket, 4)),
            'transmitmicro'  => ord(fread($this->_socket, 4)),
            'clientreceived' => 0
        );

        $this->_disconnect();

        return $result;
    }

    /**
     * Sends the NTP packet to the server
     *
     * @param  string $data Data to send to the timeserver
     * @return void
     */
    protected function _write($data)
    {
        $this->_connect();

        fwrite($this->_socket, $data);
        stream_set_timeout($this->_socket, Zend_TimeSync::$options['timeout']);
    }

    /**
     * Extracts the binary data returned from the timeserver
     *
     * @param  string|array $binary Data returned from the timeserver
     * @return integer Difference in seconds
     */
    protected function _extract($binary)
    {
        /*
         * Leap Indicator bit 1100 0000
         *
         * Code warning of impending leap-second to be inserted at the end of
         * the last day of the current month.
         */
        $leap = ($binary['flags'] & 0xc0) >> 6;
        switch($leap) {
            case 0:
                $this->_info['leap'] = '0 - no warning';
                break;

            case 1:
                $this->_info['leap'] = '1 - last minute has 61 seconds';
                break;

            case 2:
                $this->_info['leap'] = '2 - last minute has 59 seconds';
                break;

            default:
                $this->_info['leap'] = '3 - not syncronised';
                break;
        }

        /*
         * Version Number bit 0011 1000
         *
         * This should be 3 (RFC 1305)
         */
        $this->_info['version'] = ($binary['flags'] & 0x38) >> 3;

        /*
         * Mode bit 0000 0111
         *
         * Except in broadcast mode, an NTP association is formed when two peers
         * exchange messages and one or both of them create and maintain an
         * instantiation of the protocol machine, called an association.
         */
        $mode = ($binary['flags'] & 0x07);
        switch($mode) {
            case 1:
                $this->_info['mode'] = 'symetric active';
                break;

            case 2:
                $this->_info['mode'] = 'symetric passive';
                break;

            case 3:
                $this->_info['mode'] = 'client';
                break;

            case 4:
                $this->_info['mode'] = 'server';
                break;

            case 5:
                $this->_info['mode'] = 'broadcast';
                break;

            default:
                $this->_info['mode'] = 'reserved';
                break;
        }

        $ntpserviceid = 'Unknown Stratum ' . $binary['stratum'] . ' Service';

        /*
         * Reference Clock Identifier
         *
         * Identifies the particular reference clock.
         */
        $refid = strtoupper($binary['referenceid']);
        switch($binary['stratum']) {
            case 0:
                if (substr($refid, 0, 3) === 'DCN') {
                    $ntpserviceid = 'DCN routing protocol';
                } else if (substr($refid, 0, 4) === 'NIST') {
                    $ntpserviceid = 'NIST public modem';
                } else if (substr($refid, 0, 3) === 'TSP') {
                    $ntpserviceid = 'TSP time protocol';
                } else if (substr($refid, 0, 3) === 'DTS') {
                    $ntpserviceid = 'Digital Time Service';
                }
                break;

            case 1:
                if (substr($refid, 0, 4) === 'ATOM') {
                    $ntpserviceid = 'Atomic Clock (calibrated)';
                } else if (substr($refid, 0, 3) === 'VLF') {
                    $ntpserviceid = 'VLF radio';
                } else if ($refid === 'CALLSIGN') {
                    $ntpserviceid = 'Generic radio';
                } else if (substr($refid, 0, 4) === 'LORC') {
                    $ntpserviceid = 'LORAN-C radionavigation';
                } else if (substr($refid, 0, 4) === 'GOES') {
                    $ntpserviceid = 'GOES UHF environment satellite';
                } else if (substr($refid, 0, 3) === 'GPS') {
                    $ntpserviceid = 'GPS UHF satellite positioning';
                }
                break;

            default:
                $ntpserviceid  = ord(substr($binary['referenceid'], 0, 1));
                $ntpserviceid .= '.';
                $ntpserviceid .= ord(substr($binary['referenceid'], 1, 1));
                $ntpserviceid .= '.';
                $ntpserviceid .= ord(substr($binary['referenceid'], 2, 1));
                $ntpserviceid .= '.';
                $ntpserviceid .= ord(substr($binary['referenceid'], 3, 1));
                break;
        }

        $this->_info['ntpid'] = $ntpserviceid;

        /*
         * Stratum
         *
         * Indicates the stratum level of the local clock
         */
        switch($binary['stratum']) {
            case 0:
                $this->_info['stratum'] = 'undefined';
                break;

            case 1:
                $this->_info['stratum'] = 'primary reference';
                break;

            default:
                $this->_info['stratum'] = 'secondary reference';
                break;
        }

        /*
         * Indicates the total roundtrip delay to the primary reference source at the
         * root of the synchronization subnet, in seconds.
         *
         * Both positive and negative values, depending on clock precision and skew, are
         * possible.
         */
        $this->_info['rootdelay']     = $binary['rootdelay'] >> 15;
        $this->_info['rootdelayfrac'] = ($binary['rootdelay'] << 17) >> 17;

        /*
         * Indicates the maximum error relative to the primary reference source at the
         * root of the synchronization subnet, in seconds.
         *
         * Only positive values greater than zero are possible.
         */
        $this->_info['rootdispersion']     = $binary['rootdispersion'] >> 15;
        $this->_info['rootdispersionfrac'] = ($binary['rootdispersion'] << 17) >> 17;

        /*
         * The local time, in timestamp format, at the peer
         * when its latest NTP message was sent.
         */
        $original  = (float) $binary['originatestamp'];
        $original += (float) ($binary['originatemicro'] / 4294967296);

        /*
         * The local time, in timestamp format, when the latest
         * NTP message from the peer arrived.
         */
        $received  = (float) $binary['receivestamp'];
        $received += (float) ($binary['receivemicro'] / 4294967296);

        /*
         * The local time, in timestamp format, at which the
         * NTP message departed the sender.
         */
        $transmit  = (float) $binary['transmitstamp'];
        $transmit += (float) ($binary['transmitmicro'] / 4294967296);

        /*
         * The roundtrip delay of the peer clock relative to the local clock
         * over the network path between them, in seconds.
         *
         * Note that this variable can take on both positive and negative values,
         * depending on clock precision and skew-error accumulation.
         */
        $roundtrip                = ($binary['clientreceived'] - $original);
        $roundtrip               -= ($transmit - $received);
        $this->_info['roundtrip'] = ($roundtrip / 2);

        // The offset of the peer clock relative to the local clock, in seconds.
        $offset                = ($received - $original + $transmit - $binary['clientreceived']);
        $this->_info['offset'] = ($offset / 2);

        $time = (time() - $this->_info['offset']);

        return $time;
    }
}
PKpG[Qᐊ��TimeSync/Sntp.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Sntp.php 10835 2008-08-08 22:28:26Z thomas $
 */

/**
 * Zend_TimeSync_Protocol
 */
require_once 'Zend/TimeSync/Protocol.php';

/**
 * SNTP Protocol handling class
 *
 * @category  Zend
 * @package   Zend_TimeSync
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_TimeSync_Sntp extends Zend_TimeSync_Protocol
{
    /**
     * Port number for this timeserver
     *
     * @var integer
     */
    protected $_port = 37;

    /**
     * Socket delay
     *
     * @var integer
     */
    private $_delay;

    /**
     * Class constructor, sets the timeserver and port number
     *
     * @param string  $timeserver Timeserver to connect to
     * @param integer $port       Port of the timeserver when it differs from the default port
     */
    public function __construct($timeserver, $port)
    {
        $this->_timeserver = 'udp://' . $timeserver;
        if (is_null($port) === false) {
            $this->_port = $port;
        }
    }

    /**
     * Prepares the data that will be send to the timeserver
     *
     * @return array
     */
    protected function _prepare()
    {
        return "\n";
    }

    /**
     * Reads the data returned from the timeserver
     *
     * @return string
     */
    protected function _read()
    {
        $result       = fread($this->_socket, 49);
        $this->_delay = (($this->_delay - time()) / 2);

        return $result;
    }

    /**
     * Writes data to to the timeserver
     *
     * @param  string $data Data to write to the timeserver
     * @return void
     */
    protected function _write($data)
    {
        $this->_connect();
        $this->_delay = time();
        fputs($this->_socket, $data);
    }

    /**
     * Extracts the data returned from the timeserver
     *
     * @param  string $result Data to extract
     * @return integer
     */
    protected function _extract($result)
    {
        $dec   = hexdec('7fffffff');
        $time  = abs(($dec - hexdec(bin2hex($result))) - $dec);
        $time -= 2208988800;
        // Socket delay
        $time -= $this->_delay;

        $this->_info['offset'] = $this->_delay;

        return $time;
    }
}
PKpG[u:		ProgressBar.phpnu&1i�<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_ProgressBar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ProgressBar.php 12296 2008-11-05 11:26:37Z dasprid $
 */

/**
 * Zend_ProgressBar offers an interface for multiple enviroments.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar
{
    /**
     * Min value
     *
     * @var float
     */
    protected $_min;
    
    /**
     * Max value
     *
     * @var float
     */
    protected $_max;
    
    /**
     * Current value
     *
     * @var float
     */
    protected $_current;

    /**
     * Start time of the progressbar, required for ETA
     *
     * @var integer
     */
    protected $_startTime;

    /**
     * Current status text
     *
     * @var string
     */
    protected $_statusText = null;

    /**
     * Adapter for the output
     *
     * @var Zend_ProgressBar_Adapter
     */
    protected $_adapter;
    
    /**
     * Namespace for keeping the progressbar persistent
     *
     * @var string
     */
    protected $_persistenceNamespace = null;
    
    /**
     * Create a new progressbar backend.
     *
     * @param  Zend_ProgressBar_Adapter $adapter
     * @param  float                    $min
     * @param  float                    $max
     * @param  string                   $persistenceNamespace
     * @throws Zend_ProgressBar_Exception When $min is greater than $max
     */
    public function __construct(Zend_ProgressBar_Adapter $adapter, $min = 0, $max = 100, $persistenceNamespace = null)
    {       
        // Check min/max values and set them
        if ($min > $max) {
            require_once 'Zend/ProgressBar/Exception.php';
            throw new Zend_ProgressBar_Exception('$max must be greater than $min');
        }
        
        $this->_min     = (float) $min;
        $this->_max     = (float) $max;
        $this->_current = (float) $min;
        
        // See if we have to open a session namespace
        if ($persistenceNamespace !== null) {
            require_once 'Zend/Session/Namespace.php';
            
            $this->_persistenceNamespace = new Zend_Session_Namespace($persistenceNamespace);
        }
        
        // Set adapter
        $this->_adapter = $adapter;

        // Track the start time
        $this->_startTime = time();
        
        // See If a persistenceNamespace exists and handle accordingly
        if ($this->_persistenceNamespace !== null) {
            if (isset($this->_persistenceNamespace->isSet)) {
                $this->_startTime  = $this->_persistenceNamespace->startTime;
                $this->_current    = $this->_persistenceNamespace->current;
                $this->_statusText = $this->_persistenceNamespace->statusText;
            } else {
                $this->_persistenceNamespace->isSet      = true;
                $this->_persistenceNamespace->startTime  = $this->_startTime;
                $this->_persistenceNamespace->current    = $this->_current;
                $this->_persistenceNamespace->statusText = $this->_statusText;
            }
        } else {
            $this->update();
        }
    }
    
    /**
     * Get the current adapter
     *
     * @return Zend_ProgressBar_Adapter
     */
    public function getAdapter()
    {
        return $this->_adapter;
    }
    
    /**
     * Update the progressbar
     *
     * @param  float  $value
     * @param  string $text
     * @return void
     */
    public function update($value = null, $text = null)
    {
        // Update value if given
        if ($value !== null) {
            $this->_current = min($this->_max, max($this->_min, $value));
        }
        
        // Update text if given
        if ($text !== null) {
            $this->_statusText = $text;
        }

        // See if we have to update a namespace
        if ($this->_persistenceNamespace !== null) {
            $this->_persistenceNamespace->current    = $this->_current;
            $this->_persistenceNamespace->statusText = $this->_statusText;
        }

        // Calculate percent
        $percent  = (float) ($this->_current - $this->_min) / ($this->_max - $this->_min);

        // Calculate ETA
        $timeTaken = time() - $this->_startTime;
        
        if ($percent === .0) {
            $timeRemaining = null;
        } else {
            $timeRemaining = round(((1 / $percent) * $timeTaken) - $timeTaken);
        }
        
        // Poll the adapter
        $this->_adapter->notify($this->_current, $this->_max, $percent, $timeTaken, $timeRemaining, $this->_statusText);
    }
    
    /**
     * Update the progressbar to the next value
     *
     * @param  string $text
     * @return void
     */
    public function next($diff = 1, $text = null)
    {       
        $this->update(max($this->_min, min($this->_max, $this->_current + $diff)), $text);
    }
    
    /**
     * Call the adapters finish() behaviour
     *
     * @return void
     */
    public function finish()
    {
        if ($this->_persistenceNamespace !== null) {
            unset($this->_persistenceNamespace->isSet);
        }
        
        $this->_adapter->finish();
    }
}
PKpG[0QW��Paginator/Adapter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 12519 2008-11-10 18:41:24Z alexander $
 */

/**
 * Interface for pagination adapters.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Paginator_Adapter_Interface extends Countable
{
    /**
     * Returns the total number of rows in the collection.
     *
     * @return integer
     */
    //public function count();
    
    /**
     * Returns an collection of items for a page.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return array
     */
    public function getItems($offset, $itemCountPerPage);
}PKpG[=ŊS��Paginator/Adapter/DbSelect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DbSelect.php 12287 2008-11-04 21:49:22Z mikaelkael $
 */

/**
 * @see Zend_Paginator_Adapter_Interface
 */
require_once 'Zend/Paginator/Adapter/Interface.php';

/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * @see Zend_Db_Select
 */
require_once 'Zend/Db/Select.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Adapter_DbSelect implements Zend_Paginator_Adapter_Interface
{
    /**
     * Name of the row count column
     *
     * @var string
     */
    const ROW_COUNT_COLUMN = 'zend_paginator_row_count';

    /**
     * Database query
     *
     * @var Zend_Db_Select
     */
    protected $_select = null;

    /**
     * Total item count
     *
     * @var integer
     */
    protected $_rowCount = null;

    /**
     * Constructor.
     *
     * @param Zend_Db_Select $select The select query
     */
    public function __construct(Zend_Db_Select $select)
    {
        $this->_select = $select;
    }

    /**
     * Sets the total row count, either directly or through a supplied
     * query.  Without setting this, {@link getPages()} selects the count
     * as a subquery (SELECT COUNT ... FROM (SELECT ...)).  While this
     * yields an accurate count even with queries containing clauses like
     * LIMIT, it can be slow in some circumstances.  For example, in MySQL,
     * subqueries are generally slow when using the InnoDB storage engine.
     * Users are therefore encouraged to profile their queries to find
     * the solution that best meets their needs.
     *
     * @param  Zend_Db_Select|integer $totalRowCount Total row count integer
     *                                               or query
     * @return Zend_Paginator_Adapter_DbSelect $this
     * @throws Zend_Paginator_Exception
     */
    public function setRowCount($rowCount)
    {
        if ($rowCount instanceof Zend_Db_Select) {
            $columns = $rowCount->getPart(Zend_Db_Select::COLUMNS);

            $countColumnPart = $columns[0][1];

            if ($countColumnPart instanceof Zend_Db_Expr) {
                $countColumnPart = $countColumnPart->__toString();
            }

            // The select query can contain only one column, which should be the row count column
            if (false === strpos($countColumnPart, self::ROW_COUNT_COLUMN)) {
                /**
                 * @see Zend_Paginator_Exception
                 */
                require_once 'Zend/Paginator/Exception.php';

                throw new Zend_Paginator_Exception('Row count column not found');
            }

            $result = $rowCount->query(Zend_Db::FETCH_ASSOC)->fetch();

            $this->_rowCount = count($result) > 0 ? $result[self::ROW_COUNT_COLUMN] : 0;
        } else if (is_integer($rowCount)) {
            $this->_rowCount = $rowCount;
        } else {
            /**
             * @see Zend_Paginator_Exception
             */
            require_once 'Zend/Paginator/Exception.php';

            throw new Zend_Paginator_Exception('Invalid row count');
        }

        return $this;
    }

    /**
     * Returns an array of items for a page.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return array
     */
    public function getItems($offset, $itemCountPerPage)
    {
        $this->_select->limit($itemCountPerPage, $offset);

        return $this->_select->query()->fetchAll();
    }

    /**
     * Returns the total number of rows in the result set.
     *
     * @return integer
     */
    public function count()
    {
        if ($this->_rowCount === null) {
            $rowCount = clone $this->_select;

            /**
             * The DISTINCT and GROUP BY queries only work when selecting one column.
             * The question is whether any RDBMS supports DISTINCT for multiple columns, without workarounds.
             */
            if (true === $rowCount->getPart(Zend_Db_Select::DISTINCT)) {
                $columnParts = $rowCount->getPart(Zend_Db_Select::COLUMNS);

                $columns = array();

                foreach ($columnParts as $part) {
                    if ($part[1] == '*' || $part[1] instanceof Zend_Db_Expr) {
                        $columns[] = $part[1];
                    } else {
                        $columns[] = $rowCount->getAdapter()->quoteIdentifier($part[1], true);
                    }
                }

                if (count($columns) == 1 && $columns[0] == '*') {
                    $groupPart = null;
                } else {
                    $groupPart = implode(',', $columns);
                }
            } else {
                $groupParts = $rowCount->getPart(Zend_Db_Select::GROUP);

                foreach ($groupParts as &$part) {
                    if (!($part == '*' || $part instanceof Zend_Db_Expr)) {
                        $part = $rowCount->getAdapter()->quoteIdentifier($part, true);
                    }
                }

                $groupPart = implode(',', $groupParts);
            }

            $countPart  = empty($groupPart) ? 'COUNT(*)' : 'COUNT(DISTINCT ' . $groupPart . ')';
            $expression = new Zend_Db_Expr($countPart . ' AS ' . $rowCount->getAdapter()->quoteIdentifier(self::ROW_COUNT_COLUMN));

            $rowCount->__toString(); // Workaround for ZF-3719 and related
            $rowCount->reset(Zend_Db_Select::COLUMNS)
                     ->reset(Zend_Db_Select::ORDER)
                     ->reset(Zend_Db_Select::LIMIT_OFFSET)
                     ->reset(Zend_Db_Select::GROUP)
                     ->reset(Zend_Db_Select::DISTINCT)
                     ->columns($expression);

            $this->setRowCount($rowCount);
        }

        return $this->_rowCount;
    }
}
PKpG[�����Paginator/Adapter/Null.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Null.php 10792 2008-08-08 03:11:03Z mratzloff $
 */

/**
 * @see Zend_Paginator_Adapter_Interface
 */
require_once 'Zend/Paginator/Adapter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Adapter_Null implements Zend_Paginator_Adapter_Interface
{
    /**
     * Item count
     *
     * @var integer
     */
    protected $_count = null;
    
    /**
     * Constructor.
     * 
     * @param array $count Total item count
     */
    public function __construct($count = 0)
    {
        $this->_count = $count;
    }

    /**
     * Returns an array of items for a page.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return array
     */
    public function getItems($offset, $itemCountPerPage)
    {
        return array_fill(0, $itemCountPerPage, null);
    }

    /**
     * Returns the total number of rows in the array.
     *
     * @return integer
     */
    public function count()
    {
        return $this->_count;
    }
}PKpG[�ŻMPaginator/Adapter/Array.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Array.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Paginator_Adapter_Interface
 */
require_once 'Zend/Paginator/Adapter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Adapter_Array implements Zend_Paginator_Adapter_Interface
{
    /**
     * Array
     * 
     * @var array
     */
    protected $_array = null;
    
    /**
     * Item count
     *
     * @var integer
     */
    protected $_count = null;
    
    /**
     * Constructor.
     * 
     * @param array $array Array to paginate
     */
    public function __construct(array $array)
    {
        $this->_array = $array;
        $this->_count = count($array);
    }

    /**
     * Returns an array of items for a page.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return array
     */
    public function getItems($offset, $itemCountPerPage)
    {
        return array_slice($this->_array, $offset, $itemCountPerPage);
    }

    /**
     * Returns the total number of rows in the array.
     *
     * @return integer
     */
    public function count()
    {
        return $this->_count;
    }
}PKpG[	�>�TT#Paginator/Adapter/DbTableSelect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DbTableSelect.php 11735 2008-10-08 14:00:24Z norm2782 $
 */

/**
 * @see Zend_Paginator_Adapter_DbSelect
 */
require_once 'Zend/Paginator/Adapter/DbSelect.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Adapter_DbTableSelect extends Zend_Paginator_Adapter_DbSelect
{
    /**
     * Returns a Zend_Db_Table_Rowset_Abstract of items for a page.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return Zend_Db_Table_Rowset_Abstract
     */
    public function getItems($offset, $itemCountPerPage)
    {
        $this->_select->limit($itemCountPerPage, $offset);
        
        return $this->_select->getTable()->fetchAll($this->_select);
    }
}PKpG[Q?_

Paginator/Adapter/Iterator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Iterator.php 11222 2008-09-04 03:18:34Z mratzloff $
 */

/**
 * @see Zend_Paginator_Adapter_Interface
 */
require_once 'Zend/Paginator/Adapter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Adapter_Iterator implements Zend_Paginator_Adapter_Interface
{
    /**
     * Iterator which implements Countable
     * 
     * @var Iterator
     */
    protected $_iterator = null;
    
    /**
     * Item count
     *
     * @var integer
     */
    protected $_count = null;

    /**
     * Constructor.
     * 
     * @param  Iterator $iterator Iterator to paginate
     * @throws Zend_Paginator_Exception
     */
    public function __construct(Iterator $iterator)
    {
        if (!$iterator instanceof Countable) {
            /**
             * @see Zend_Paginator_Exception
             */
            require_once 'Zend/Paginator/Exception.php';
            
            throw new Zend_Paginator_Exception('Iterator must implement Countable');
        }

        $this->_iterator = $iterator;
        $this->_count = count($iterator);
    }

    /**
     * Returns an iterator of items for a page, or an empty array.
     *
     * @param  integer $offset Page offset
     * @param  integer $itemCountPerPage Number of items per page
     * @return LimitIterator|array
     */
    public function getItems($offset, $itemCountPerPage)
    {
        if ($this->_count == 0) {
            return array();
        }

        return new LimitIterator($this->_iterator, $offset, $itemCountPerPage);
    }

    /**
     * Returns the total number of rows in the collection.
     *
     * @return integer
     */
    public function count()
    {
        return $this->_count;
    }
}PKpG[n��.NNPaginator/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_Exception extends Zend_Exception
{
}PKpG[MJ��JJ$Paginator/ScrollingStyle/Jumping.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Jumping.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Paginator_ScrollingStyle_Interface
 */
require_once 'Zend/Paginator/ScrollingStyle/Interface.php';

/**
 * A scrolling style in which the cursor advances to the upper bound 
 * of the page range, the page range "jumps" to the next section, and 
 * the cursor moves back to the beginning of the range.
 * 
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_ScrollingStyle_Jumping implements Zend_Paginator_ScrollingStyle_Interface
{
    /**
     * Returns an array of "local" pages given a page number and range.
     * 
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange Unused
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null)
    {
        $pageRange  = $paginator->getPageRange();
        $pageNumber = $paginator->getCurrentPageNumber();
        
        $delta = $pageNumber % $pageRange;
        
        if ($delta == 0) {
            $delta = $pageRange;
        }

        $offset     = $pageNumber - $delta;
        $lowerBound = $offset + 1; 
        $upperBound = $offset + $pageRange;
        
        return $paginator->getPagesInRange($lowerBound, $upperBound); 
    }
}PKpG[�f��d
d
$Paginator/ScrollingStyle/Sliding.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Sliding.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Paginator_ScrollingStyle_Interface
 */
require_once 'Zend/Paginator/ScrollingStyle/Interface.php';

/**
 * A Yahoo! Search-like scrolling style.  The cursor will advance to 
 * the middle of the range, then remain there until the user reaches 
 * the end of the page set, at which point it will continue on to 
 * the end of the range and the last page in the set.
 *
 * @link       http://search.yahoo.com/search?p=Zend+Framework
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_ScrollingStyle_Sliding implements Zend_Paginator_ScrollingStyle_Interface
{
    /**
     * Returns an array of "local" pages given a page number and range.
     * 
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange (Optional) Page range
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null)
    {
        if ($pageRange === null) {
            $pageRange = $paginator->getPageRange();
        }

        $pageNumber = $paginator->getCurrentPageNumber();
        $pageCount  = count($paginator);
        
        if ($pageRange > $pageCount) {
            $pageRange = $pageCount;
        }
        
        $delta = ceil($pageRange / 2);

        if ($pageNumber - $delta > $pageCount - $pageRange) {
            $lowerBound = $pageCount - $pageRange + 1;
            $upperBound = $pageCount; 
        } else {
            if ($pageNumber - $delta < 0) {
                $delta = $pageNumber;
            }
            
            $offset     = $pageNumber - $delta;
            $lowerBound = $offset + 1; 
            $upperBound = $offset + $pageRange;
        }

        return $paginator->getPagesInRange($lowerBound, $upperBound);
    }
}PKpG[�ڐ��� Paginator/ScrollingStyle/All.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: All.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Paginator_ScrollingStyle_Interface
 */
require_once 'Zend/Paginator/ScrollingStyle/Interface.php';

/**
 * A scrolling style that returns every page in the collection.  
 * Useful when it is necessary to make every page available at 
 * once--for example, when using a dropdown menu pagination control.
 * 
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_ScrollingStyle_All implements Zend_Paginator_ScrollingStyle_Interface
{
    /**
     * Returns an array of all pages given a page number and range.
     * 
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange Unused
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null)
    {
        return $paginator->getPagesInRange(1, $paginator->count());
    }
}PKpG[��A�22$Paginator/ScrollingStyle/Elastic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Elastic.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @see Zend_Paginator_ScrollingStyle_Sliding
 */
require_once 'Zend/Paginator/ScrollingStyle/Sliding.php';

/**
 * A Google-like scrolling style.  Incrementally expands the range to about
 * twice the given page range, then behaves like a slider.  See the example
 * link.
 * 
 * @link       http://www.google.com/search?q=Zend+Framework
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator_ScrollingStyle_Elastic extends Zend_Paginator_ScrollingStyle_Sliding
{
    /**
     * Returns an array of "local" pages given a page number and range.
     * 
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange Unused
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null)
    {
        $pageRange  = $paginator->getPageRange();
        $pageNumber = $paginator->getCurrentPageNumber();

        $originalPageRange = $pageRange;
        $pageRange         = $pageRange * 2 - 1;

        if ($originalPageRange + $pageNumber - 1 < $pageRange) {
            $pageRange = $originalPageRange + $pageNumber - 1;
        }
        
        return parent::getPages($paginator, $pageRange);
    }
}PKpG[��A}))&Paginator/ScrollingStyle/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 10013 2008-07-09 21:08:06Z norm2782 $
 */

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Paginator_ScrollingStyle_Interface
{
    /**
     * Returns an array of "local" pages given a page number and range.
     * 
     * @param  Zend_Paginator $paginator
     * @param  integer $pageRange (Optional) Page range
     * @return array
     */
    public function getPages(Zend_Paginator $paginator, $pageRange = null);
}PKpG[���g#g#Mime.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Support class for MultiPart Mime Messages
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mime
{
    const TYPE_OCTETSTREAM = 'application/octet-stream';
    const TYPE_TEXT = 'text/plain';
    const TYPE_HTML = 'text/html';
    const ENCODING_7BIT = '7bit';
    const ENCODING_8BIT = '8bit';
    const ENCODING_QUOTEDPRINTABLE = 'quoted-printable';
    const ENCODING_BASE64 = 'base64';
    const DISPOSITION_ATTACHMENT = 'attachment';
    const DISPOSITION_INLINE = 'inline';
    const LINELENGTH = 72;
    const LINEEND = "\n";
    const MULTIPART_ALTERNATIVE = 'multipart/alternative';
    const MULTIPART_MIXED = 'multipart/mixed';
    const MULTIPART_RELATED = 'multipart/related';

    protected $_boundary;
    protected static $makeUnique = 0;

    // lookup-Tables for QuotedPrintable
    public static $qpKeys = array(
        "\x00","\x01","\x02","\x03","\x04","\x05","\x06","\x07",
        "\x08","\x09","\x0A","\x0B","\x0C","\x0D","\x0E","\x0F",
        "\x10","\x11","\x12","\x13","\x14","\x15","\x16","\x17",
        "\x18","\x19","\x1A","\x1B","\x1C","\x1D","\x1E","\x1F",
        "\x7F","\x80","\x81","\x82","\x83","\x84","\x85","\x86",
        "\x87","\x88","\x89","\x8A","\x8B","\x8C","\x8D","\x8E",
        "\x8F","\x90","\x91","\x92","\x93","\x94","\x95","\x96",
        "\x97","\x98","\x99","\x9A","\x9B","\x9C","\x9D","\x9E",
        "\x9F","\xA0","\xA1","\xA2","\xA3","\xA4","\xA5","\xA6",
        "\xA7","\xA8","\xA9","\xAA","\xAB","\xAC","\xAD","\xAE",
        "\xAF","\xB0","\xB1","\xB2","\xB3","\xB4","\xB5","\xB6",
        "\xB7","\xB8","\xB9","\xBA","\xBB","\xBC","\xBD","\xBE",
        "\xBF","\xC0","\xC1","\xC2","\xC3","\xC4","\xC5","\xC6",
        "\xC7","\xC8","\xC9","\xCA","\xCB","\xCC","\xCD","\xCE",
        "\xCF","\xD0","\xD1","\xD2","\xD3","\xD4","\xD5","\xD6",
        "\xD7","\xD8","\xD9","\xDA","\xDB","\xDC","\xDD","\xDE",
        "\xDF","\xE0","\xE1","\xE2","\xE3","\xE4","\xE5","\xE6",
        "\xE7","\xE8","\xE9","\xEA","\xEB","\xEC","\xED","\xEE",
        "\xEF","\xF0","\xF1","\xF2","\xF3","\xF4","\xF5","\xF6",
        "\xF7","\xF8","\xF9","\xFA","\xFB","\xFC","\xFD","\xFE",
        "\xFF"
        );

    public static $qpReplaceValues = array(
        "=00","=01","=02","=03","=04","=05","=06","=07",
        "=08","=09","=0A","=0B","=0C","=0D","=0E","=0F",
        "=10","=11","=12","=13","=14","=15","=16","=17",
        "=18","=19","=1A","=1B","=1C","=1D","=1E","=1F",
        "=7F","=80","=81","=82","=83","=84","=85","=86",
        "=87","=88","=89","=8A","=8B","=8C","=8D","=8E",
        "=8F","=90","=91","=92","=93","=94","=95","=96",
        "=97","=98","=99","=9A","=9B","=9C","=9D","=9E",
        "=9F","=A0","=A1","=A2","=A3","=A4","=A5","=A6",
        "=A7","=A8","=A9","=AA","=AB","=AC","=AD","=AE",
        "=AF","=B0","=B1","=B2","=B3","=B4","=B5","=B6",
        "=B7","=B8","=B9","=BA","=BB","=BC","=BD","=BE",
        "=BF","=C0","=C1","=C2","=C3","=C4","=C5","=C6",
        "=C7","=C8","=C9","=CA","=CB","=CC","=CD","=CE",
        "=CF","=D0","=D1","=D2","=D3","=D4","=D5","=D6",
        "=D7","=D8","=D9","=DA","=DB","=DC","=DD","=DE",
        "=DF","=E0","=E1","=E2","=E3","=E4","=E5","=E6",
        "=E7","=E8","=E9","=EA","=EB","=EC","=ED","=EE",
        "=EF","=F0","=F1","=F2","=F3","=F4","=F5","=F6",
        "=F7","=F8","=F9","=FA","=FB","=FC","=FD","=FE",
        "=FF"
        );

    public static $qpKeysString =
         "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF";

    /**
     * Check if the given string is "printable"
     *
     * Checks that a string contains no unprintable characters. If this returns
     * false, encode the string for secure delivery.
     *
     * @param string $str
     * @return boolean
     */
    public static function isPrintable($str)
    {
        return (strcspn($str, self::$qpKeysString) == strlen($str));
    }

    /**
     * Encode a given string with the QUOTED_PRINTABLE mechanism
     *
     * @param string $str
     * @param int $lineLength Defaults to {@link LINELENGTH}
     * @param int $lineEnd Defaults to {@link LINEEND}
     * @return string
     */
    public static function encodeQuotedPrintable($str,
        $lineLength = self::LINELENGTH,
        $lineEnd = self::LINEEND)
    {
        $out = '';
        $str = str_replace('=', '=3D', $str);
        $str = str_replace(self::$qpKeys, self::$qpReplaceValues, $str);
        $str = rtrim($str);

        // Split encoded text into separate lines
        while ($str) {
            $ptr = strlen($str);
            if ($ptr > $lineLength) {
                $ptr = $lineLength;
            }

            // Ensure we are not splitting across an encoded character
            $pos = strrpos(substr($str, 0, $ptr), '=');
            if ($pos !== false && $pos >= $ptr - 2) {
                $ptr = $pos;
            }

            // Check if there is a space at the end of the line and rewind
            if ($ptr > 0 && $str[$ptr - 1] == ' ') {
                --$ptr;
            }

            // Add string and continue
            $out .= substr($str, 0, $ptr) . '=' . $lineEnd;
            $str = substr($str, $ptr);
        }

        $out = rtrim($out, $lineEnd);
        $out = rtrim($out, '=');
        return $out;
    }

    /**
     * Encode a given string in base64 encoding and break lines
     * according to the maximum linelength.
     *
     * @param string $str
     * @param int $lineLength Defaults to {@link LINELENGTH}
     * @param int $lineEnd Defaults to {@link LINEEND}
     * @return string
     */
    public static function encodeBase64($str,
        $lineLength = self::LINELENGTH,
        $lineEnd = self::LINEEND)
    {
        return rtrim(chunk_split(base64_encode($str), $lineLength, $lineEnd));
    }

    /**
     * Constructor
     *
     * @param null|string $boundary
     * @access public
     * @return void
     */
    public function __construct($boundary = null)
    {
        // This string needs to be somewhat unique
        if ($boundary === null) {
            $this->_boundary = '=_' . md5(microtime(1) . self::$makeUnique++);
        } else {
            $this->_boundary = $boundary;
        }
    }

    /**
     * Encode the given string with the given encoding.
     *
     * @param string $str
     * @param string $encoding
     * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
     * @return string
     */
    public static function encode($str, $encoding, $EOL = self::LINEEND)
    {
        switch ($encoding) {
            case self::ENCODING_BASE64:
                return self::encodeBase64($str, self::LINELENGTH, $EOL);

            case self::ENCODING_QUOTEDPRINTABLE:
                return self::encodeQuotedPrintable($str, self::LINELENGTH, $EOL);

            default:
                /**
                 * @todo 7Bit and 8Bit is currently handled the same way.
                 */
                return $str;
        }
    }

    /**
     * Return a MIME boundary
     *
     * @access public
     * @return string
     */
    public function boundary()
    {
        return $this->_boundary;
    }

    /**
     * Return a MIME boundary line
     *
     * @param mixed $EOL Defaults to {@link LINEEND}
     * @access public
     * @return string
     */
    public function boundaryLine($EOL = self::LINEEND)
    {
        return $EOL . '--' . $this->_boundary . $EOL;
    }

    /**
     * Return MIME ending
     *
     * @access public
     * @return string
     */
    public function mimeEnd($EOL = self::LINEEND)
    {
        return $EOL . '--' . $this->_boundary . '--' . $EOL;
    }
}
PKpG[>-������OpenId/Consumer.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Consumer.php 12972 2008-12-01 13:26:36Z dmitry $
 */

/**
 * @see Zend_OpenId
 */
require_once "Zend/OpenId.php";

/**
 * @see Zend_OpenId_Extension
 */
require_once "Zend/OpenId/Extension.php";

/**
 * @see Zend_OpenId_Consumer_Storage
 */
require_once "Zend/OpenId/Consumer/Storage.php";

/**
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * OpenID consumer implementation
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Consumer
{

    /**
     * Reference to an implementation of storage object
     *
     * @var Zend_OpenId_Consumer_Storage $_storage
     */
    protected $_storage = null;

    /**
     * Enables or disables consumer to use association with server based on
     * Diffie-Hellman key agreement
     *
     * @var Zend_OpenId_Consumer_Storage $_dumbMode
     */
    protected $_dumbMode = false;

    /**
     * Internal cache to prevent unnecessary access to storage
     *
     * @var array $_cache
     */
    protected $_cache = array();

    /**
     * HTTP client to make HTTP requests
     *
     * @var Zend_Http_Client $_httpClient
     */
    private $_httpClient = null;

    /**
     * HTTP session to store climed_id between requests
     *
     * @var Zend_Session_Namespace $_session
     */
    private $_session = null;

    /**
     * Last error message for logi, check or verify failure
     *
     * @var string $_error
     */
    private $_error = '';

    /**
     * Constructs a Zend_OpenId_Consumer object with given $storage.
     * Enables or disables future association with server based on
     * Diffie-Hellman key agreement.
     *
     * @param Zend_OpenId_Consumer_Storage $storage implementation of custom
     *  storage object
     * @param bool $dumbMode Enables or disables consumer to use association
     *  with server based on Diffie-Hellman key agreement
     */
    public function __construct(Zend_OpenId_Consumer_Storage $storage = null,
                                $dumbMode = false)
    {
        if ($storage === null) {
            require_once "Zend/OpenId/Consumer/Storage/File.php";
            $this->_storage = new Zend_OpenId_Consumer_Storage_File();
        } else {
            $this->_storage = $storage;
        }
        $this->_dumbMode = $dumbMode;
    }

    /**
     * Performs check (with possible user interaction) of OpenID identity.
     *
     * This is the first step of OpenID authentication process.
     * On success the function does not return (it does HTTP redirection to
     * server and exits). On failure it returns false.
     *
     * @param string $id OpenID identity
     * @param string $returnTo URL to redirect response from server to
     * @param string $root HTTP URL to identify consumer on server
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *  object to perform HTTP or HTML form redirection
     * @return bool
     */
    public function login($id, $returnTo = null, $root = null, $extensions = null,
                          Zend_Controller_Response_Abstract $response = null)
    {
        return $this->_checkId(
            false,
            $id,
            $returnTo,
            $root,
            $extensions,
            $response);
    }

    /**
     * Performs immediate check (without user interaction) of OpenID identity.
     *
     * This is the first step of OpenID authentication process.
     * On success the function does not return (it does HTTP redirection to
     * server and exits). On failure it returns false.
     *
     * @param string $id OpenID identity
     * @param string $returnTo HTTP URL to redirect response from server to
     * @param string $root HTTP URL to identify consumer on server
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *  object to perform HTTP or HTML form redirection
     * @return bool
     */
    public function check($id, $returnTo=null, $root=null, $extensions = null,
                          Zend_Controller_Response_Abstract $response = null)

    {
        return $this->_checkId(
            true,
            $id,
            $returnTo,
            $root,
            $extensions,
            $response);
    }

    /**
     * Verifies authentication response from OpenID server.
     *
     * This is the second step of OpenID authentication process.
     * The function returns true on successful authentication and false on
     * failure.
     *
     * @param array $params HTTP query data from OpenID server
     * @param string &$identity this argument is set to end-user's claimed
     *  identifier or OpenID provider local identifier.
     * @param mixed $extensions extension object or array of extensions objects
     * @return bool
     */
    public function verify($params, &$identity = "", $extensions = null)
    {
        $this->_setError('');

        $version = 1.1;
        if (isset($params['openid_ns']) &&
            $params['openid_ns'] == Zend_OpenId::NS_2_0) {
            $version = 2.0;
        }

        if (isset($params["openid_claimed_id"])) {
            $identity = $params["openid_claimed_id"];
        } else if (isset($params["openid_identity"])){
            $identity = $params["openid_identity"];
        } else {
            $identity = "";
        }

        if ($version < 2.0 && !isset($params["openid_claimed_id"])) {
            if ($this->_session !== null) {
                if ($this->_session->identity === $identity) {
                    $identity = $this->_session->claimed_id;
                }
            } else if (defined('SID')) {
                if (isset($_SESSION["zend_openid"]["identity"]) &&
                    isset($_SESSION["zend_openid"]["claimed_id"]) &&
                    $_SESSION["zend_openid"]["identity"] === $identity) {
                    $identity = $_SESSION["zend_openid"]["claimed_id"];
                }
            } else {
                require_once "Zend/Session/Namespace.php";
                $this->_session = new Zend_Session_Namespace("zend_openid");
                if ($this->_session->identity === $identity) {
                    $identity = $this->_session->claimed_id;
                }
            }
        }

        if (empty($params['openid_mode'])) {
            $this->_setError("Missing openid.mode");
            return false;
        }
        if (empty($params['openid_return_to'])) {
            $this->_setError("Missing openid.return_to");
            return false;
        }
        if (empty($params['openid_signed'])) {
            $this->_setError("Missing openid.signed");
            return false;
        }
        if (empty($params['openid_sig'])) {
            $this->_setError("Missing openid.sig");
            return false;
        }
        if ($params['openid_mode'] != 'id_res') {
            $this->_setError("Wrong openid.mode '".$params['openid_mode']."' != 'id_res'");
            return false;
        }
        if (empty($params['openid_assoc_handle'])) {
            $this->_setError("Missing openid.assoc_handle");
            return false;
        }
        if ($params['openid_return_to'] != Zend_OpenId::selfUrl()) {
            /* Ignore query part in openid.return_to */
            $pos = strpos($params['openid_return_to'], '?');
            if ($pos === false ||
                SUBSTR($params['openid_return_to'], 0 , $pos) != Zend_OpenId::selfUrl()) {
                
                $this->_setError("Wrong openid.return_to '".
                    $params['openid_return_to']."' != '" . Zend_OpenId::selfUrl() ."'");
                return false;
            }
        }

        if ($version >= 2.0) {
            if (empty($params['openid_response_nonce'])) {
                $this->_setError("Missing openid.response_nonce");
                return false;
            }
            if (empty($params['openid_op_endpoint'])) {
                $this->_setError("Missing openid.op_endpoint");
                return false;
            /* OpenID 2.0 (11.3) Checking the Nonce */
            } else if (!$this->_storage->isUniqueNonce($params['openid_op_endpoint'], $params['openid_response_nonce'])) {
                $this->_setError("Duplicate openid.response_nonce");
                return false;
            }
        }


        if (!empty($params['openid_invalidate_handle'])) {
            if ($this->_storage->getAssociationByHandle(
                $params['openid_invalidate_handle'],
                $url,
                $macFunc,
                $secret,
                $expires)) {
                $this->_storage->delAssociation($url);
            }
        }

        if ($this->_storage->getAssociationByHandle(
                $params['openid_assoc_handle'],
                $url,
                $macFunc,
                $secret,
                $expires)) {
            $signed = explode(',', $params['openid_signed']);
            $data = '';
            foreach ($signed as $key) {
                $data .= $key . ':' . $params['openid_' . strtr($key,'.','_')] . "\n";
            }
            if (base64_decode($params['openid_sig']) ==
                Zend_OpenId::hashHmac($macFunc, $data, $secret)) {
                if (!Zend_OpenId_Extension::forAll($extensions, 'parseResponse', $params)) {
                    $this->_setError("Extension::prepareResponse failure");
                    return false;
                }
                /* OpenID 2.0 (11.2) Verifying Discovered Information */
                if (isset($params['openid_claimed_id'])) {
                    $id = $params['openid_claimed_id'];
                    if (!Zend_OpenId::normalize($id)) {
                        $this->_setError("Normalization failed");
                        return false;
                    } else if (!$this->_discovery($id, $discovered_server, $discovered_version)) {
                        $this->_setError("Discovery failed: " . $this->getError());
                        return false;
                    } else if ((!empty($params['openid_identity']) &&
                                $params["openid_identity"] != $id) ||
                               (!empty($params['openid_op_endpoint']) &&
                                $params['openid_op_endpoint'] != $discovered_server) ||
                               $discovered_version != $version) {
                        $this->_setError("Discovery information verification failed");
                        return false;
                    }
                }
                return true;
            }
            $this->_storage->delAssociation($url);
            $this->_setError("Signature check failed");
            return false;
        }
        else
        {
            /* Use dumb mode */
            if (isset($params['openid_claimed_id'])) {
                $id = $params['openid_claimed_id'];
            } else if (isset($params['openid_identity'])) {
                $id = $params['openid_identity'];
            } else {
                $this->_setError("Missing openid.climed_id and openid.identity");
                return false;
            }

            if (!Zend_OpenId::normalize($id)) {
                $this->_setError("Normalization failed");
                return false;
            } else if (!$this->_discovery($id, $server, $discovered_version)) {
                $this->_setError("Discovery failed: " . $this->getError());
                return false;
            }

            /* OpenID 2.0 (11.2) Verifying Discovered Information */
            if ((isset($params['openid_identity']) &&
                 $params["openid_identity"] != $id) ||
                (isset($params['openid_op_endpoint']) &&
                 $params['openid_op_endpoint'] != $server) ||
                $discovered_version != $version) {
                $this->_setError("Discovery information verification failed");
                return false;
            }

            $params2 = array();
            foreach ($params as $key => $val) {
                if (strpos($key, 'openid_ns_') === 0) {
                    $key = 'openid.ns.' . substr($key, strlen('openid_ns_'));
                } else if (strpos($key, 'openid_sreg_') === 0) {
                    $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_'));
                } else if (strpos($key, 'openid_') === 0) {
                    $key = 'openid.' . substr($key, strlen('openid_'));
                }
                $params2[$key] = $val;
            }
            $params2['openid.mode'] = 'check_authentication';
            $ret = $this->_httpRequest($server, 'POST', $params2, $status);
            if ($status != 200) {
                $this->_setError("'Dumb' signature verification HTTP request failed");
                return false;
            }
            $r = array();
            if (is_string($ret)) {
                foreach(explode("\n", $ret) as $line) {
                    $line = trim($line);
                    if (!empty($line)) {
                        $x = explode(':', $line, 2);
                        if (is_array($x) && count($x) == 2) {
                            list($key, $value) = $x;
                            $r[trim($key)] = trim($value);
                        }
                    }
                }
            }
            $ret = $r;
            if (!empty($ret['invalidate_handle'])) {
                if ($this->_storage->getAssociationByHandle(
                    $ret['invalidate_handle'],
                    $url,
                    $macFunc,
                    $secret,
                    $expires)) {
                    $this->_storage->delAssociation($url);
                }
            }
            if (isset($ret['is_valid']) && $ret['is_valid'] == 'true') {
                if (!Zend_OpenId_Extension::forAll($extensions, 'parseResponse', $params)) {
                    $this->_setError("Extension::parseResponse failure");
                    return false;
                }
                return true;
            }
            $this->_setError("'Dumb' signature verification failed");
            return false;
        }
    }

    /**
     * Store assiciation in internal chace and external storage
     *
     * @param string $url OpenID server url
     * @param string $handle association handle
     * @param string $macFunc HMAC function (sha1 or sha256)
     * @param string $secret shared secret
     * @param integer $expires expiration UNIX time
     * @return void
     */
    protected function _addAssociation($url, $handle, $macFunc, $secret, $expires)
    {
        $this->_cache[$url] = array($handle, $macFunc, $secret, $expires);
        return $this->_storage->addAssociation(
            $url,
            $handle,
            $macFunc,
            $secret,
            $expires);
    }

    /**
     * Retrive assiciation information for given $url from internal cahce or
     * external storage
     *
     * @param string $url OpenID server url
     * @param string &$handle association handle
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param integer &$expires expiration UNIX time
     * @return void
     */
    protected function _getAssociation($url, &$handle, &$macFunc, &$secret, &$expires)
    {
        if (isset($this->_cache[$url])) {
            $handle   = $this->_cache[$url][0];
            $macFunc = $this->_cache[$url][1];
            $secret   = $this->_cache[$url][2];
            $expires  = $this->_cache[$url][3];
            return true;
        }
        if ($this->_storage->getAssociation(
                $url,
                $handle,
                $macFunc,
                $secret,
                $expires)) {
            $this->_cache[$url] = array($handle, $macFunc, $secret, $expires);
            return true;
        }
        return false;
    }

    /**
     * Performs HTTP request to given $url using given HTTP $method.
     * Send additinal query specified by variable/value array,
     * On success returns HTTP response without headers, false on failure.
     *
     * @param string $url OpenID server url
     * @param string $method HTTP request method 'GET' or 'POST'
     * @param array $params additional qwery parameters to be passed with
     * @param int &$staus HTTP status code
     *  request
     * @return mixed
     */
    protected function _httpRequest($url, $method = 'GET', array $params = array(), &$status = null)
    {
        $client = $this->_httpClient;
        if ($client === null) {
            $client = new Zend_Http_Client(
                    $url,
                    array(
                        'maxredirects' => 4,
                        'timeout'      => 15,
                        'useragent'    => 'Zend_OpenId'
                    )
                );
        } else {
            $client->setUri($url);
        }

        $client->resetParameters();
        if ($method == 'POST') {
            $client->setMethod(Zend_Http_Client::POST);
            $client->setParameterPost($params);
        } else {
            $client->setMethod(Zend_Http_Client::GET);
            $client->setParameterGet($params);
        }

        try {
            $response = $client->request();
        } catch (Exception $e) {
            $this->_setError('HTTP Request failed: ' . $e->getMessage());
            return false;
        }
        $status = $response->getStatus();
        $body = $response->getBody();
        if ($status == 200 || ($status == 400 && !empty($body))) {
            return $body;
        }else{
            $this->_setError('Bad HTTP response');
            return false;
        }
    }

    /**
     * Create (or reuse existing) association between OpenID consumer and
     * OpenID server based on Diffie-Hellman key agreement. Returns true
     * on success and false on failure.
     *
     * @param string $url OpenID server url
     * @param float $version OpenID protocol version
     * @param string $priv_key for testing only
     * @return bool
     */
    protected function _associate($url, $version, $priv_key=null)
    {

        /* Check if we already have association in chace or storage */
        if ($this->_getAssociation(
                $url,
                $handle,
                $macFunc,
                $secret,
                $expires)) {
            return true;
        }

        if ($this->_dumbMode) {
            /* Use dumb mode */
            return true;
        }

        $params = array();

        if ($version >= 2.0) {
            $params = array(
                'openid.ns'           => Zend_OpenId::NS_2_0,
                'openid.mode'         => 'associate',
                'openid.assoc_type'   => 'HMAC-SHA256',
                'openid.session_type' => 'DH-SHA256',
            );
        } else {
            $params = array(
                'openid.mode'         => 'associate',
                'openid.assoc_type'   => 'HMAC-SHA1',
                'openid.session_type' => 'DH-SHA1',
            );
        }

        $dh = Zend_OpenId::createDhKey(pack('H*', Zend_OpenId::DH_P),
                                       pack('H*', Zend_OpenId::DH_G),
                                       $priv_key);
        $dh_details = Zend_OpenId::getDhKeyDetails($dh);

        $params['openid.dh_modulus']         = base64_encode(
            Zend_OpenId::btwoc($dh_details['p']));
        $params['openid.dh_gen']             = base64_encode(
            Zend_OpenId::btwoc($dh_details['g']));
        $params['openid.dh_consumer_public'] = base64_encode(
            Zend_OpenId::btwoc($dh_details['pub_key']));

        while(1) {
            $ret = $this->_httpRequest($url, 'POST', $params, $status);
            if ($ret === false) {               
                $this->_setError("HTTP request failed");
                return false;
            }

            $r = array();
            $bad_response = false;
            foreach(explode("\n", $ret) as $line) {
                $line = trim($line);
                if (!empty($line)) {
                    $x = explode(':', $line, 2);
                    if (is_array($x) && count($x) == 2) {
                        list($key, $value) = $x;
                        $r[trim($key)] = trim($value);
                    } else {
                        $bad_response = true;
                    }
                }
            }
            if ($bad_response && strpos($ret, 'Unknown session type') !== false) {
                $r['error_code'] = 'unsupported-type';
            }
            $ret = $r;

            if (isset($ret['error_code']) &&
                $ret['error_code'] == 'unsupported-type') {
                if ($params['openid.session_type'] == 'DH-SHA256') {
                    $params['openid.session_type'] = 'DH-SHA1';
                    $params['openid.assoc_type'] = 'HMAC-SHA1';
                } else if ($params['openid.session_type'] == 'DH-SHA1') {
                    $params['openid.session_type'] = 'no-encryption';
                } else {
                    $this->_setError("The OpenID service responded with: " . $ret['error_code']);
                    return false;
                }
            } else {
                break;
            }
        }

        if ($status != 200) {
            $this->_setError("The server responded with status code: " . $status);
            return false;
        }

        if ($version >= 2.0 &&
            isset($ret['ns']) &&
            $ret['ns'] != Zend_OpenId::NS_2_0) {
            $this->_setError("Wrong namespace definition in the server response");
            return false;
        }

        if (!isset($ret['assoc_handle']) ||
            !isset($ret['expires_in']) ||
            !isset($ret['assoc_type']) ||
            $params['openid.assoc_type'] != $ret['assoc_type']) {
            if ($params['openid.assoc_type'] != $ret['assoc_type']) {
                $this->_setError("The returned assoc_type differed from the supplied openid.assoc_type");
            } else {
                $this->_setError("Missing required data from provider (assoc_handle, expires_in, assoc_type are required)");
            }
            return false;
        }

        $handle     = $ret['assoc_handle'];
        $expiresIn = $ret['expires_in'];

        if ($ret['assoc_type'] == 'HMAC-SHA1') {
            $macFunc = 'sha1';
        } else if ($ret['assoc_type'] == 'HMAC-SHA256' &&
            $version >= 2.0) {
            $macFunc = 'sha256';
        } else {
            $this->_setError("Unsupported assoc_type");
            return false;
        }

        if ((empty($ret['session_type']) ||
             ($version >= 2.0 && $ret['session_type'] == 'no-encryption')) &&
             isset($ret['mac_key'])) {
            $secret = base64_decode($ret['mac_key']);
        } else if (isset($ret['session_type']) &&
            $ret['session_type'] == 'DH-SHA1' &&
            !empty($ret['dh_server_public']) &&
            !empty($ret['enc_mac_key'])) {
            $dhFunc = 'sha1';
        } else if (isset($ret['session_type']) &&
            $ret['session_type'] == 'DH-SHA256' &&
            $version >= 2.0 &&
            !empty($ret['dh_server_public']) &&
            !empty($ret['enc_mac_key'])) {
            $dhFunc = 'sha256';
        } else {
            $this->_setError("Unsupported session_type");
            return false;
        }
        if (isset($dhFunc)) {
            $serverPub = base64_decode($ret['dh_server_public']);
            $dhSec = Zend_OpenId::computeDhSecret($serverPub, $dh);
            if ($dhSec === false) {
                $this->_setError("DH secret comutation failed");
                return false;
            }
            $sec = Zend_OpenId::digest($dhFunc, $dhSec);
            if ($sec === false) {
                $this->_setError("Could not create digest");
                return false;
            }
            $secret = $sec ^ base64_decode($ret['enc_mac_key']);
        }
        if ($macFunc == 'sha1') {
            if (Zend_OpenId::strlen($secret) != 20) {
                $this->_setError("The length of the sha1 secret must be 20");
                return false;
            }
        } else if ($macFunc == 'sha256') {
            if (Zend_OpenId::strlen($secret) != 32) {
                $this->_setError("The length of the sha256 secret must be 32");
                return false;
            }
        }
        $this->_addAssociation(
            $url,
            $handle,
            $macFunc,
            $secret,
            time() + $expiresIn);
        return true;
    }

    /**
     * Performs discovery of identity and finds OpenID URL, OpenID server URL
     * and OpenID protocol version. Returns true on succees and false on
     * failure.
     *
     * @param string &$id OpenID identity URL
     * @param string &$server OpenID server URL
     * @param float &$version OpenID protocol version
     * @return bool
     * @todo OpenID 2.0 (7.3) XRI and Yadis discovery 
     */
    protected function _discovery(&$id, &$server, &$version)
    {
        $realId = $id;
        if ($this->_storage->getDiscoveryInfo(
                $id,
                $realId,
                $server,
                $version,
                $expire)) {
            $id = $realId;
            return true;
        }

        /* TODO: OpenID 2.0 (7.3) XRI and Yadis discovery */

        /* HTML-based discovery */
        $response = $this->_httpRequest($id, 'GET', array(), $status);
        if ($status != 200 || !is_string($response)) {
            return false;
        }
        if (preg_match(
                '/<link[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.provider[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i',
                $response,
                $r)) {
            $version = 2.0;
            $server = $r[3];
        } else if (preg_match(
                '/<link[^>]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.provider[ \t]*[^"\']*\\3[^>]*\/?>/i',
                $response,
                $r)) {
            $version = 2.0;
            $server = $r[2];
        } else if (preg_match(
                '/<link[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.server[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i',
                $response,
                $r)) {
            $version = 1.1;
            $server = $r[3];
        } else if (preg_match(
                '/<link[^>]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.server[ \t]*[^"\']*\\3[^>]*\/?>/i',
                $response,
                $r)) {
            $version = 1.1;
            $server = $r[2];
        } else {
            return false;
        }
        if ($version >= 2.0) {
            if (preg_match(
                    '/<link[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.local_id[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i',
                    $response,
                    $r)) {
                $realId = $r[3];
            } else if (preg_match(
                    '/<link[^>]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.local_id[ \t]*[^"\']*\\3[^>]*\/?>/i',
                    $response,
                    $r)) {
                $realId = $r[2];
            }
        } else {
            if (preg_match(
                    '/<link[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.delegate[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i',
                    $response,
                    $r)) {
                $realId = $r[3];
            } else if (preg_match(
                    '/<link[^>]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.delegate[ \t]*[^"\']*\\3[^>]*\/?>/i',
                    $response,
                    $r)) {
                $realId = $r[2];
            }
        }

        $expire = time() + 60 * 60;
        $this->_storage->addDiscoveryInfo($id, $realId, $server, $version, $expire);
        $id = $realId;
        return true;
    }

    /**
     * Performs check of OpenID identity.
     *
     * This is the first step of OpenID authentication process.
     * On success the function does not return (it does HTTP redirection to
     * server and exits). On failure it returns false.
     *
     * @param bool $immediate enables or disables interaction with user
     * @param string $id OpenID identity
     * @param string $returnTo HTTP URL to redirect response from server to
     * @param string $root HTTP URL to identify consumer on server
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *  object to perform HTTP or HTML form redirection
     * @return bool
     */
    protected function _checkId($immediate, $id, $returnTo=null, $root=null,
        $extensions=null, Zend_Controller_Response_Abstract $response = null)
    {
        $this->_setError('');

        if (!Zend_OpenId::normalize($id)) {
            $this->_setError("Normalisation failed");
            return false;
        }
        $claimedId = $id;

        if (!$this->_discovery($id, $server, $version)) {
            $this->_setError("Discovery failed: " . $this->getError());
            return false;
        }
        if (!$this->_associate($server, $version)) {
            $this->_setError("Association failed: " . $this->getError());
            return false;
        }
        if (!$this->_getAssociation(
                $server,
                $handle,
                $macFunc,
                $secret,
                $expires)) {
            /* Use dumb mode */
            unset($handle);
            unset($macFunc);
            unset($secret);
            unset($expires);
        }

        $params = array();
        if ($version >= 2.0) {
            $params['openid.ns'] = Zend_OpenId::NS_2_0;
        }

        $params['openid.mode'] = $immediate ? 
            'checkid_immediate' : 'checkid_setup';

        $params['openid.identity'] = $id;

        $params['openid.claimed_id'] = $claimedId;

        if ($version <= 2.0) {
            if ($this->_session !== null) {
                $this->_session->identity = $id;
                $this->_session->claimed_id = $claimedId;
            } else if (defined('SID')) {
                $_SESSION["zend_openid"] = array(
                    "identity" => $id,
                    "claimed_id" => $claimedId);
            } else {
                require_once "Zend/Session/Namespace.php";
                $this->_session = new Zend_Session_Namespace("zend_openid");
                $this->_session->identity = $id;
                $this->_session->claimed_id = $claimedId;
            }
        }

        if (isset($handle)) {
            $params['openid.assoc_handle'] = $handle;
        }

        $params['openid.return_to'] = Zend_OpenId::absoluteUrl($returnTo);

        if (empty($root)) {
            $root = Zend_OpenId::selfUrl();
            if ($root[strlen($root)-1] != '/') {
                $root = dirname($root);
            }
        }
        if ($version >= 2.0) {
            $params['openid.realm'] = $root;
        } else {
            $params['openid.trust_root'] = $root;
        }

        if (!Zend_OpenId_Extension::forAll($extensions, 'prepareRequest', $params)) {
            $this->_setError("Extension::prepareRequest failure");
            return false;
        }

        Zend_OpenId::redirect($server, $params, $response);
        return true;
    }

    /**
     * Sets HTTP client object to make HTTP requests
     *
     * @param Zend_Http_Client $client HTTP client object to be used
     */
    public function setHttpClient($client) {
        $this->_httpClient = $client;
    }

    /**
     * Returns HTTP client object that will be used to make HTTP requests
     *
     * @return Zend_Http_Client
     */
    public function getHttpClient() {
        return $this->_httpClient;
    }

    /**
     * Sets session object to store climed_id
     *
     * @param Zend_Session_Namespace $session HTTP client object to be used
     */
    public function setSession(Zend_Session_Namespace $session) {
        $this->_session = $session;
    }

    /**
     * Returns session object that is used to store climed_id
     *
     * @return Zend_Session_Namespace
     */
    public function getSession() {
        return $this->_session;
    }

    /**
     * Saves error message
     *
     * @param string $message error message
     */
    protected function _setError($message)
    {
        $this->_error = $message;
    }

    /**
     * Returns error message that explains failure of login, check or verify
     *
     * @return string
     */
    public function getError()
    {
        return $this->_error;
    }

}
PKpG[�C��%%OpenId/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @see Zend_Exception
 */
require_once "Zend/Exception.php";

/**
 * Exception class for Zend_OpenId
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Exception extends Zend_Exception
{

    /**
     * The specified digest algotithm is not supported by this PHP installation
     */
    const UNSUPPORTED_DIGEST    = 1;

    /**
     * The long math arithmetick is not supported by this PHP installation
     */
    const UNSUPPORTED_LONG_MATH = 2;

    /**
     * Internal long math arithmetic error
     */
    const ERROR_LONG_MATH       = 3;

    /**
     * Iternal storage error
     */
    const ERROR_STORAGE         = 4;
}
PKpG[�) WiiOpenId/Provider.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Provider.php 12507 2008-11-10 16:29:09Z matthew $
 */

/**
 * @see Zend_OpenId
 */
require_once "Zend/OpenId.php";

/**
 * @see Zend_OpenId_Extension
 */
require_once "Zend/OpenId/Extension.php";

/**
 * OpenID provider (server) implementation
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Provider
{

    /**
     * Reference to an implementation of storage object
     *
     * @var Zend_OpenId_Provider_Storage $_storage
     */
    private $_storage;

    /**
     * Reference to an implementation of user object
     *
     * @var Zend_OpenId_Provider_User $_user
     */
    private $_user;

    /**
     * Time to live of association session in secconds
     *
     * @var integer $_sessionTtl
     */
    private $_sessionTtl;

    /**
     * URL to peform interactive user login
     *
     * @var string $_loginUrl
     */
    private $_loginUrl;

    /**
     * URL to peform interactive validation of consumer by user
     *
     * @var string $_trustUrl
     */
    private $_trustUrl;

    /**
     * The OP Endpoint URL
     *
     * @var string $_opEndpoint
     */
    private $_opEndpoint;

    /**
     * Constructs a Zend_OpenId_Provider object with given parameters.
     *
     * @param string $loginUrl is an URL that provides login screen for
     *  end-user (by default it is the same URL with additional GET variable
     *  openid.action=login)
     * @param string $trustUrl is an URL that shows a question if end-user
     *  trust to given consumer (by default it is the same URL with additional
     *  GET variable openid.action=trust)
     * @param Zend_OpenId_Provider_User $user is an object for communication
     *  with User-Agent and store information about logged-in user (it is a
     *  Zend_OpenId_Provider_User_Session object by default)
     * @param Zend_OpenId_Provider_Storage $storage is an object for keeping
     *  persistent database (it is a Zend_OpenId_Provider_Storage_File object
     *  by default)
     * @param integer $sessionTtl is a default time to live for association
     *   session in seconds (1 hour by default). Consumer must reestablish
     *   association after that time.
     */
    public function __construct($loginUrl = null,
                                $trustUrl = null,
                                Zend_OpenId_Provider_User $user = null,
                                Zend_OpenId_Provider_Storage $storage = null,
                                $sessionTtl = 3600)
    {
        if ($loginUrl === null) {
            $loginUrl = Zend_OpenId::selfUrl() . '?openid.action=login';
        } else {
            $loginUrl = Zend_OpenId::absoluteUrl($loginUrl);
        }
        $this->_loginUrl = $loginUrl;
        if ($trustUrl === null) {
            $trustUrl = Zend_OpenId::selfUrl() . '?openid.action=trust';
        } else {
            $trustUrl = Zend_OpenId::absoluteUrl($trustUrl);
        }
        $this->_trustUrl = $trustUrl;
        if ($user === null) {
            require_once "Zend/OpenId/Provider/User/Session.php";
            $this->_user = new Zend_OpenId_Provider_User_Session();
        } else {
            $this->_user = $user;
        }
        if ($storage === null) {
            require_once "Zend/OpenId/Provider/Storage/File.php";
            $this->_storage = new Zend_OpenId_Provider_Storage_File();
        } else {
            $this->_storage = $storage;
        }
        $this->_sessionTtl = $sessionTtl;
    }

    /**
     * Sets the OP Endpoint URL
     *
     * @param string $url the OP Endpoint URL
     * @return null
     */
    public function setOpEndpoint($url)
    {
        $this->_opEndpoint = $url;
    }

    /**
     * Registers a new user with given $id and $password
     * Returns true in case of success and false if user with given $id already
     * exists
     *
     * @param string $id user identity URL
     * @param string $password encoded user password
     * @return bool
     */
    public function register($id, $password)
    {
        if (!Zend_OpenId::normalize($id) || empty($id)) {
            return false;
        }
        return $this->_storage->addUser($id, md5($id.$password));
    }

    /**
     * Returns true if user with given $id exists and false otherwise
     *
     * @param string $id user identity URL
     * @return bool
     */
    public function hasUser($id) {
        if (!Zend_OpenId::normalize($id)) {
            return false;
        }
        return $this->_storage->hasUser($id);
    }

    /**
     * Performs login of user with given $id and $password
     * Returns true in case of success and false otherwise
     *
     * @param string $id user identity URL
     * @param string $password user password
     * @return bool
     */
    public function login($id, $password)
    {
        if (!Zend_OpenId::normalize($id)) {
            return false;
        }
        if (!$this->_storage->checkUser($id, md5($id.$password))) {
            return false;
        }
        $this->_user->setLoggedInUser($id);
        return true;
    }

    /**
     * Performs logout. Clears information about logged in user.
     *
     * @return void
     */
    public function logout()
    {
        $this->_user->delLoggedInUser();
        return true;
    }

    /**
     * Returns identity URL of current logged in user or false
     *
     * @return mixed
     */
    public function getLoggedInUser() {
        return $this->_user->getLoggedInUser();
    }

    /**
     * Retrieve consumer's root URL from request query.
     * Returns URL or false in case of failure
     *
     * @param array $params query arguments
     * @return mixed
     */
    public function getSiteRoot($params)
    {
        $version = 1.1;
        if (isset($params['openid_ns']) &&
            $params['openid_ns'] == Zend_OpenId::NS_2_0) {
            $version = 2.0;
        }
        if ($version >= 2.0 && isset($params['openid_realm'])) {
            $root = $params['openid_realm'];
        } else if ($version < 2.0 && isset($params['openid_trust_root'])) {
            $root = $params['openid_trust_root'];
        } else if (isset($params['openid_return_to'])) {
            $root = $params['openid_return_to'];
        } else {
            return false;
        }
        if (Zend_OpenId::normalizeUrl($root) && !empty($root)) {
            return $root;
        }
        return false;
    }

    /**
     * Allows consumer with given root URL to authenticate current logged
     * in user. Returns true on success and false on error.
     *
     * @param string $root root URL
     * @param mixed $extensions extension object or array of extensions objects
     * @return bool
     */
    public function allowSite($root, $extensions=null)
    {
        $id = $this->getLoggedInUser();
        if ($id === false) {
            return false;
        }
        if ($extensions !== null) {
            $data = array();
            Zend_OpenId_Extension::forAll($extensions, 'getTrustData', $data);
        } else {
            $data = true;
        }
        $this->_storage->addSite($id, $root, $data);
        return true;
    }

    /**
     * Prohibit consumer with given root URL to authenticate current logged
     * in user. Returns true on success and false on error.
     *
     * @param string $root root URL
     * @return bool
     */
    public function denySite($root)
    {
        $id = $this->getLoggedInUser();
        if ($id === false) {
            return false;
        }
        $this->_storage->addSite($id, $root, false);
        return true;
    }

    /**
     * Delete consumer with given root URL from known sites of current logged
     * in user. Next time this consumer will try to authenticate the user,
     * Provider will ask user's confirmation.
     * Returns true on success and false on error.
     *
     * @param string $root root URL
     * @return bool
     */
    public function delSite($root)
    {
        $id = $this->getLoggedInUser();
        if ($id === false) {
            return false;
        }
        $this->_storage->addSite($id, $root, null);
        return true;
    }

    /**
     * Returns list of known consumers for current logged in user or false
     * if he is not logged in.
     *
     * @return mixed
     */
    public function getTrustedSites()
    {
        $id = $this->getLoggedInUser();
        if ($id === false) {
            return false;
        }
        return $this->_storage->getTrustedSites($id);
    }

    /**
     * Handles HTTP request from consumer
     *
     * @param array $params GET or POST variables. If this parameter is omited
     *  or set to null, then $_GET or $_POST superglobal variable is used
     *  according to REQUEST_METHOD.
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *  object to perform HTTP or HTML form redirection
     * @return mixed
     */
    public function handle($params=null, $extensions=null,
                           Zend_Controller_Response_Abstract $response = null)
    {
        if ($params === null) {
            if ($_SERVER["REQUEST_METHOD"] == "GET") {
                $params = $_GET;
            } else if ($_SERVER["REQUEST_METHOD"] == "POST") {
                $params = $_POST;
            } else {
                return false;
            }
        }
        $version = 1.1;
        if (isset($params['openid_ns']) &&
            $params['openid_ns'] == Zend_OpenId::NS_2_0) {
            $version = 2.0;
        }
        if (isset($params['openid_mode'])) {
            if ($params['openid_mode'] == 'associate') {
                $response = $this->_associate($version, $params);
                $ret = '';
                foreach ($response as $key => $val) {
                    $ret .= $key . ':' . $val . "\n";
                }
                return $ret;
            } else if ($params['openid_mode'] == 'checkid_immediate') {
                $ret = $this->_checkId($version, $params, 1, $extensions, $response);
                if (is_bool($ret)) return $ret;
                if (!empty($params['openid_return_to'])) {
                    Zend_OpenId::redirect($params['openid_return_to'], $ret, $response);
                }
                return true;
            } else if ($params['openid_mode'] == 'checkid_setup') {
                $ret = $this->_checkId($version, $params, 0, $extensions, $response);
                if (is_bool($ret)) return $ret;
                if (!empty($params['openid_return_to'])) {
                    Zend_OpenId::redirect($params['openid_return_to'], $ret, $response);
                }
                return true;
            } else if ($params['openid_mode'] == 'check_authentication') {
                $response = $this->_checkAuthentication($version, $params);
                $ret = '';
                foreach ($response as $key => $val) {
                    $ret .= $key . ':' . $val . "\n";
                }
                return $ret;
            }
        }
        return false;
    }

    /**
     * Generates a secret key for given hash function, returns RAW key or false
     * if function is not supported
     *
     * @param string $func hash function (sha1 or sha256)
     * @return mixed
     */
    protected function _genSecret($func)
    {
        if ($func == 'sha1') {
            $macLen = 20; /* 160 bit */
        } else if ($func == 'sha256') {
            $macLen = 32; /* 256 bit */
        } else {
            return false;
        }
        return Zend_OpenId::randomBytes($macLen);
    }

    /**
     * Processes association request from OpenID consumerm generates secret
     * shared key and send it back using Diffie-Hellman encruption.
     * Returns array of variables to push back to consumer.
     *
     * @param float $version OpenID version
     * @param array $params GET or POST request variables
     * @return array
     */
    protected function _associate($version, $params)
    {
        $ret = array();

        if ($version >= 2.0) {
            $ret['ns'] = Zend_OpenId::NS_2_0;
        }

        if (isset($params['openid_assoc_type']) &&
            $params['openid_assoc_type'] == 'HMAC-SHA1') {
            $macFunc = 'sha1';
        } else if (isset($params['openid_assoc_type']) &&
            $params['openid_assoc_type'] == 'HMAC-SHA256' &&
            $version >= 2.0) {
            $macFunc = 'sha256';
        } else {
            $ret['error'] = 'Wrong "openid.assoc_type"';
            $ret['error-code'] = 'unsupported-type';
            return $ret;
        }

        $ret['assoc_type'] = $params['openid_assoc_type'];

        $secret = $this->_genSecret($macFunc);

        if (empty($params['openid_session_type']) ||
            $params['openid_session_type'] == 'no-encryption') {
            $ret['mac_key'] = base64_encode($secret);
        } else if (isset($params['openid_session_type']) &&
            $params['openid_session_type'] == 'DH-SHA1') {
            $dhFunc = 'sha1';
        } else if (isset($params['openid_session_type']) &&
            $params['openid_session_type'] == 'DH-SHA256' &&
            $version >= 2.0) {
            $dhFunc = 'sha256';
        } else {
            $ret['error'] = 'Wrong "openid.session_type"';
            $ret['error-code'] = 'unsupported-type';
            return $ret;
        }

        if (isset($params['openid_session_type'])) {
            $ret['session_type'] = $params['openid_session_type'];
        }

        if (isset($dhFunc)) {
            if (empty($params['openid_dh_consumer_public'])) {
                $ret['error'] = 'Wrong "openid.dh_consumer_public"';
                return $ret;
            }
            if (empty($params['openid_dh_gen'])) {
                $g = pack('H*', Zend_OpenId::DH_G);
            } else {
                $g = base64_decode($params['openid_dh_gen']);
            }
            if (empty($params['openid_dh_modulus'])) {
                $p = pack('H*', Zend_OpenId::DH_P);
            } else {
                $p = base64_decode($params['openid_dh_modulus']);
            }

            $dh = Zend_OpenId::createDhKey($p, $g);
            $dh_details = Zend_OpenId::getDhKeyDetails($dh);

            $sec = Zend_OpenId::computeDhSecret(
                base64_decode($params['openid_dh_consumer_public']), $dh);
            if ($sec === false) {
                $ret['error'] = 'Wrong "openid.session_type"';
                $ret['error-code'] = 'unsupported-type';
                return $ret;
            }
            $sec = Zend_OpenId::digest($dhFunc, $sec);
            $ret['dh_server_public'] = base64_encode(
                Zend_OpenId::btwoc($dh_details['pub_key']));
            $ret['enc_mac_key']      = base64_encode($secret ^ $sec);
        }

        $handle = uniqid();
        $expiresIn = $this->_sessionTtl;

        $ret['assoc_handle'] = $handle;
        $ret['expires_in'] = $expiresIn;

        $this->_storage->addAssociation($handle,
            $macFunc, $secret, time() + $expiresIn);

        return $ret;
    }

    /**
     * Performs authentication (or authentication check).
     *
     * @param float $version OpenID version
     * @param array $params GET or POST request variables
     * @param bool $immediate enables or disables interaction with user
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response
     * @return array
     */
    protected function _checkId($version, $params, $immediate, $extensions=null,
        Zend_Controller_Response_Abstract $response = null)
    {
        $ret = array();

        if ($version >= 2.0) {
            $ret['openid.ns'] = Zend_OpenId::NS_2_0;
        }
        $root = $this->getSiteRoot($params);
        if ($root === false) {
            return false;
        }

        if (isset($params['openid_identity']) &&
            !$this->_storage->hasUser($params['openid_identity'])) {
            $ret['openid.mode'] = ($immediate && $version >= 2.0) ? 'setup_needed': 'cancel';
            return $ret;
        }

        /* Check if user already logged in into the server */
        if (!isset($params['openid_identity']) ||
            $this->_user->getLoggedInUser() !== $params['openid_identity']) {
            $params2 = array();
            foreach ($params as $key => $val) {
                if (strpos($key, 'openid_ns_') === 0) {
                    $key = 'openid.ns.' . substr($key, strlen('openid_ns_'));
                } else if (strpos($key, 'openid_sreg_') === 0) {
                    $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_'));
                } else if (strpos($key, 'openid_') === 0) {
                    $key = 'openid.' . substr($key, strlen('openid_'));
                }
                $params2[$key] = $val;
            }
            if ($immediate) {
                $params2['openid.mode'] = 'checkid_setup';
                $ret['openid.mode'] = ($version >= 2.0) ? 'setup_needed': 'id_res';
                $ret['openid.user_setup_url'] = $this->_loginUrl
                    . (strpos($this->_loginUrl, '?') === false ? '?' : '&')
                    . Zend_OpenId::paramsToQuery($params2);
                return $ret;
            } else {
                /* Redirect to Server Login Screen */
                Zend_OpenId::redirect($this->_loginUrl, $params2, $response);
                return true;
            }
        }

        if (!Zend_OpenId_Extension::forAll($extensions, 'parseRequest', $params)) {
            $ret['openid.mode'] = ($immediate && $version >= 2.0) ? 'setup_needed': 'cancel';
            return $ret;
        }

        /* Check if user trusts to the consumer */
        $trusted = null;
        $sites = $this->_storage->getTrustedSites($params['openid_identity']);
        if (isset($params['openid_return_to'])) {
            $root = $params['openid_return_to'];
        }
        if (isset($sites[$root])) {
            $trusted = $sites[$root];
        } else {
            foreach ($sites as $site => $t) {
                if (strpos($root, $site) === 0) {
                    $trusted = $t;
                    break;
                } else {
                    /* OpenID 2.0 (9.2) check for realm wild-card matching */
                    $n = strpos($site, '://*.');
                    if ($n != false) {
                        $regex = '/^'
                               . preg_quote(substr($site, 0, $n+3), '/')
                               . '[A-Za-z1-9_\.]+?'
                               . preg_quote(substr($site, $n+4), '/')
                               . '/';
                        if (preg_match($regex, $root)) {
                            $trusted = $t;
                            break;
                        }
                    }
                }
            }
        }

        if (is_array($trusted)) {
            if (!Zend_OpenId_Extension::forAll($extensions, 'checkTrustData', $trusted)) {
                $trusted = null;
            }
        }

        if ($trusted === false) {
            $ret['openid.mode'] = 'cancel';
            return $ret;
        } else if (is_null($trusted)) {
            /* Redirect to Server Trust Screen */
            $params2 = array();
            foreach ($params as $key => $val) {
                if (strpos($key, 'openid_ns_') === 0) {
                    $key = 'openid.ns.' . substr($key, strlen('openid_ns_'));
                } else if (strpos($key, 'openid_sreg_') === 0) {
                    $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_'));
                } else if (strpos($key, 'openid_') === 0) {
                    $key = 'openid.' . substr($key, strlen('openid_'));
                }
                $params2[$key] = $val;
            }
            if ($immediate) {
                $params2['openid.mode'] = 'checkid_setup';
                $ret['openid.mode'] = ($version >= 2.0) ? 'setup_needed': 'id_res';
                $ret['openid.user_setup_url'] = $this->_trustUrl
                    . (strpos($this->_trustUrl, '?') === false ? '?' : '&')
                    . Zend_OpenId::paramsToQuery($params2);
                return $ret;
            } else {
                Zend_OpenId::redirect($this->_trustUrl, $params2, $response);
                return true;
            }
        }

        return $this->_respond($version, $ret, $params, $extensions);
    }

    /**
     * Perepares information to send back to consumer's authentication request,
     * signs it using shared secret and send back through HTTP redirection
     *
     * @param array $params GET or POST request variables
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *  object to perform HTTP or HTML form redirection
     * @return bool
     */
    public function respondToConsumer($params, $extensions=null,
                           Zend_Controller_Response_Abstract $response = null)
    {
        $version = 1.1;
        if (isset($params['openid_ns']) &&
            $params['openid_ns'] == Zend_OpenId::NS_2_0) {
            $version = 2.0;
        }
        $ret = array();
        if ($version >= 2.0) {
            $ret['openid.ns'] = Zend_OpenId::NS_2_0;
        }
        $ret = $this->_respond($version, $ret, $params, $extensions);
        if (!empty($params['openid_return_to'])) {
            Zend_OpenId::redirect($params['openid_return_to'], $ret, $response);
        }
        return true;
    }

    /**
     * Perepares information to send back to consumer's authentication request
     * and signs it using shared secret.
     *
     * @param float $version OpenID protcol version
     * @param array $ret arguments to be send back to consumer
     * @param array $params GET or POST request variables
     * @param mixed $extensions extension object or array of extensions objects
     * @return array
     */
    protected function _respond($version, $ret, $params, $extensions=null)
    {
        if (empty($params['openid_assoc_handle']) ||
            !$this->_storage->getAssociation($params['openid_assoc_handle'],
                $macFunc, $secret, $expires)) {
            /* Use dumb mode */
            if (!empty($params['openid_assoc_handle'])) {
                $ret['openid.invalidate_handle'] = $params['openid_assoc_handle'];
            }
            $macFunc = $version >= 2.0 ? 'sha256' : 'sha1';
            $secret = $this->_genSecret($macFunc);
            $handle = uniqid();
            $expiresIn = $this->_sessionTtl;
            $this->_storage->addAssociation($handle,
                $macFunc, $secret, time() + $expiresIn);
            $ret['openid.assoc_handle'] = $handle;
        } else {
            $ret['openid.assoc_handle'] = $params['openid_assoc_handle'];
        }
        if (isset($params['openid_return_to'])) {
            $ret['openid.return_to'] = $params['openid_return_to'];
        }
        if (isset($params['openid_claimed_id'])) {
            $ret['openid.claimed_id'] = $params['openid_claimed_id'];
        }
        if (isset($params['openid_identity'])) {
            $ret['openid.identity'] = $params['openid_identity'];
        }

        if ($version >= 2.0) {
            if (!empty($this->_opEndpoint)) {
                $ret['openid.op_endpoint'] = $this->_opEndpoint;
            } else {
                $ret['openid.op_endpoint'] = Zend_OpenId::selfUrl();
            }
        }
        $ret['openid.response_nonce'] = gmdate('Y-m-d\TH:i:s\Z') . uniqid();
        $ret['openid.mode'] = 'id_res';

        Zend_OpenId_Extension::forAll($extensions, 'prepareResponse', $ret);

        $signed = '';
        $data = '';
        foreach ($ret as $key => $val) {
            if (strpos($key, 'openid.') === 0) {
                $key = substr($key, strlen('openid.'));
                if (!empty($signed)) {
                    $signed .= ',';
                }
                $signed .= $key;
                $data .= $key . ':' . $val . "\n";
            }
        }
        $signed .= ',signed';
        $data .= 'signed:' . $signed . "\n";
        $ret['openid.signed'] = $signed;

        $ret['openid.sig'] = base64_encode(
            Zend_OpenId::hashHmac($macFunc, $data, $secret));

        return $ret;
    }

    /**
     * Performs authentication validation for dumb consumers
     * Returns array of variables to push back to consumer.
     * It MUST contain 'is_valid' variable with value 'true' or 'false'.
     *
     * @param float $version OpenID version
     * @param array $params GET or POST request variables
     * @return array
     */
    protected function _checkAuthentication($version, $params)
    {
        $ret = array();
        if ($version >= 2.0) {
            $ret['ns'] = Zend_OpenId::NS_2_0;
        }
        $ret['openid.mode'] = 'id_res';

        if (empty($params['openid_assoc_handle']) ||
            empty($params['openid_signed']) ||
            empty($params['openid_sig']) ||
            !$this->_storage->getAssociation($params['openid_assoc_handle'],
                $macFunc, $secret, $expires)) {
            $ret['is_valid'] = 'false';
            return $ret;
        }

        $signed = explode(',', $params['openid_signed']);
        $data = '';
        foreach ($signed as $key) {
            $data .= $key . ':';
            if ($key == 'mode') {
                $data .= "id_res\n";
            } else {
                $data .= $params['openid_' . strtr($key,'.','_')]."\n";
            }
        }
        if (base64_decode($params['openid_sig']) ===
            Zend_OpenId::hashHmac($macFunc, $data, $secret)) {
            $ret['is_valid'] = 'true';
        } else {
            $ret['is_valid'] = 'false';
        }
        return $ret;
    }
}
PKpG[r
d�O
O
OpenId/Provider/Storage.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Storage.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * Abstract class to implement external storage for OpenID consumer
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_OpenId_Provider_Storage
{

    /**
     * Stores information about session identified by $handle
     *
     * @param string $handle assiciation handle
     * @param string $macFunc HMAC function (sha1 or sha256)
     * @param string $secret shared secret
     * @param string $expires expiration UNIX time
     * @return void
     */
    abstract public function addAssociation($handle, $macFunc, $secret, $expires);

    /**
     * Gets information about association identified by $handle
     * Returns true if given association found and not expired and false
     * otherwise
     *
     * @param string $handle assiciation handle
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param string &$expires expiration UNIX time
     * @return bool
     */
    abstract public function getAssociation($handle, &$macFunc, &$secret, &$expires);

    /**
     * Register new user with given $id and $password
     * Returns true in case of success and false if user with given $id already
     * exists
     *
     * @param string $id user identity URL
     * @param string $password encoded user password
     * @return bool
     */
    abstract public function addUser($id, $password);

    /**
     * Returns true if user with given $id exists and false otherwise
     *
     * @param string $id user identity URL
     * @return bool
     */
    abstract public function hasUser($id);

    /**
     * Verify if user with given $id exists and has specified $password
     *
     * @param string $id user identity URL
     * @param string $password user password
     * @return bool
     */
    abstract public function checkUser($id, $password);

    /**
     * Returns array of all trusted/untrusted sites for given user identified
     * by $id
     *
     * @param string $id user identity URL
     * @return array
     */
    abstract public function getTrustedSites($id);

    /**
     * Stores information about trusted/untrusted site for given user
     *
     * @param string $id user identity URL
     * @param string $site site URL
     * @param mixed $trusted trust data from extensions or just a boolean value
     * @return bool
     */
    abstract public function addSite($id, $site, $trusted);
}
PKpG[ޭrK�
�
 OpenId/Provider/User/Session.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Session.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @see Zend_OpenId_Provider_User
 */
require_once "Zend/OpenId/Provider/User.php";

/**
 * @see Zend_Session_Namespace
 */
require_once "Zend/Session/Namespace.php";

/**
 * Class to get/store information about logged in user in Web Browser using
 * PHP session
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Provider_User_Session extends Zend_OpenId_Provider_User
{
    /**
     * Reference to an implementation of Zend_Session_Namespace object
     *
     * @var Zend_Session_Namespace $_session
     */
    private $_session = null;

    /**
     * Creates Zend_OpenId_Provider_User_Session object with given session
     * namespace or creates new session namespace named "openid"
     *
     * @param Zend_Session_Namespace $session
     */
    public function __construct(Zend_Session_Namespace $session = null)
    {
        if ($session === null) {
            $this->_session = new Zend_Session_Namespace("openid");
        } else {
            $this->_session = $session;
        }
    }

    /**
     * Stores information about logged in user in session data
     *
     * @param string $id user identity URL
     * @return bool
     */
    public function setLoggedInUser($id)
    {
        $this->_session->logged_in = $id;
        return true;
    }

    /**
     * Returns identity URL of logged in user or false
     *
     * @return mixed
     */
    public function getLoggedInUser()
    {
        if (isset($this->_session->logged_in)) {
            return $this->_session->logged_in;
        }
        return false;
    }

    /**
     * Performs logout. Clears information about logged in user.
     *
     * @return bool
     */
    public function delLoggedInUser()
    {
        unset($this->_session->logged_in);
        return true;
    }

}
PKpG[6���vvOpenId/Provider/User.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: User.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * Abstract class to get/store information about logged in user in Web Browser
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_OpenId_Provider_User
{

    /**
     * Stores information about logged in user
     *
     * @param string $id user identity URL
     * @return bool
     */
    abstract public function setLoggedInUser($id);

    /**
     * Returns identity URL of logged in user or false
     *
     * @return mixed
     */
    abstract public function getLoggedInUser();

    /**
     * Performs logout. Clears information about logged in user.
     *
     * @return bool
     */
    abstract public function delLoggedInUser();
}
PKpG[�Ov�---- OpenId/Provider/Storage/File.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: File.php 8456 2008-02-29 11:01:12Z dmitry $
 */

/**
 * @see Zend_OpenId_Provider_Storage
 */
require_once "Zend/OpenId/Provider/Storage.php";

/**
 * External storage implemmentation using serialized files
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Provider
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Provider_Storage_File extends Zend_OpenId_Provider_Storage
{

    /**
     * Directory name to store data files in
     *
     * @var string $_dir
     */
    private $_dir;

    /**
     * Constructs storage object and creates storage directory
     *
     * @param string $dir directory name to store data files in
     * @throws Zend_OpenId_Exception
     */
    public function __construct($dir = null)
    {
        if (is_null($dir)) {
            $tmp = getenv('TMP');
            if (empty($tmp)) {
                $tmp = getenv('TEMP');
                if (empty($tmp)) {
                    $tmp = "/tmp";
                }
            }
            $user = get_current_user();
            if (is_string($user) && !empty($user)) {
                $tmp .= '/' . $user;
            }
            $dir = $tmp . '/openid/provider';
        }
        $this->_dir = $dir;
        if (!is_dir($this->_dir)) {
            if (!@mkdir($this->_dir, 0700, 1)) {
                throw new Zend_OpenId_Exception(
                    "Cannot access storage directory $dir",
                    Zend_OpenId_Exception::ERROR_STORAGE);
            }
        }
        if (($f = fopen($this->_dir.'/assoc.lock', 'w+')) === null) {
            throw new Zend_OpenId_Exception(
                'Cannot create a lock file in the directory ' . $dir,
                Zend_OpenId_Exception::ERROR_STORAGE);
        }
        fclose($f);
        if (($f = fopen($this->_dir.'/user.lock', 'w+')) === null) {
            throw new Zend_OpenId_Exception(
                'Cannot create a lock file in the directory ' . $dir,
                Zend_OpenId_Exception::ERROR_STORAGE);
        }
        fclose($f);
    }

    /**
     * Stores information about session identified by $handle
     *
     * @param string $handle assiciation handle
     * @param string $macFunc HMAC function (sha1 or sha256)
     * @param string $secret shared secret
     * @param string $expires expiration UNIX time
     * @return bool
     */
    public function addAssociation($handle, $macFunc, $secret, $expires)
    {
        $name = $this->_dir . '/assoc_' . md5($handle);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'w+');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $data = serialize(array($handle, $macFunc, $secret, $expires));
        fwrite($f, $data);
        fclose($f);
        fclose($lock);
        return true;
    }

    /**
     * Gets information about association identified by $handle
     * Returns true if given association found and not expired and false
     * otherwise
     *
     * @param string $handle assiciation handle
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param string &$expires expiration UNIX time
     * @return bool
     */
    public function getAssociation($handle, &$macFunc, &$secret, &$expires)
    {
        $name = $this->_dir . '/assoc_' . md5($handle);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedHandle, $macFunc, $secret, $expires) = unserialize($data);
            if ($handle === $storedHandle && $expires > time()) {
                $ret = true;
            } else {
                fclose($f);
                @unlink($name);
                fclose($lock);
                return false;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Removes information about association identified by $handle
     *
     * @param string $handle assiciation handle
     * @return bool
     */
    public function delAssociation($handle)
    {
        $name = $this->_dir . '/assoc_' . md5($handle);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        @unlink($name);
        fclose($lock);
        return true;
    }

    /**
     * Register new user with given $id and $password
     * Returns true in case of success and false if user with given $id already
     * exists
     *
     * @param string $id user identity URL
     * @param string $password encoded user password
     * @return bool
     */
    public function addUser($id, $password)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'x');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $data = serialize(array($id, $password, array()));
        fwrite($f, $data);
        fclose($f);
        fclose($lock);
        return true;
    }

    /**
     * Returns true if user with given $id exists and false otherwise
     *
     * @param string $id user identity URL
     * @return bool
     */
    public function hasUser($id)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_SH)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedId, $storedPassword, $trusted) = unserialize($data);
            if ($id === $storedId) {
                $ret = true;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Verify if user with given $id exists and has specified $password
     *
     * @param string $id user identity URL
     * @param string $password user password
     * @return bool
     */
    public function checkUser($id, $password)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_SH)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedId, $storedPassword, $trusted) = unserialize($data);
            if ($id === $storedId && $password === $storedPassword) {
                $ret = true;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Removes information abou specified user
     *
     * @param string $id user identity URL
     * @return bool
     */
    public function delUser($id)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        @unlink($name);
        fclose($lock);
        return true;
    }

    /**
     * Returns array of all trusted/untrusted sites for given user identified
     * by $id
     *
     * @param string $id user identity URL
     * @return array
     */
    public function getTrustedSites($id)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_SH)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedId, $storedPassword, $trusted) = unserialize($data);
            if ($id === $storedId) {
                $ret = $trusted;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Stores information about trusted/untrusted site for given user
     *
     * @param string $id user identity URL
     * @param string $site site URL
     * @param mixed $trusted trust data from extension or just a boolean value
     * @return bool
     */
    public function addSite($id, $site, $trusted)
    {
        $name = $this->_dir . '/user_' . md5($id);
        $lock = @fopen($this->_dir . '/user.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r+');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedId, $storedPassword, $sites) = unserialize($data);
            if ($id === $storedId) {
                if (is_null($trusted)) {
                    unset($sites[$site]);
                } else {
                    $sites[$site] = $trusted;
                }
                rewind($f);
                ftruncate($f, 0);
                $data = serialize(array($id, $storedPassword, $sites));
                fwrite($f, $data);
                $ret = true;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }
}
PKpG[.��T##OpenId/Extension/Sreg.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Sreg.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @see Zend_OpenId_Extension
 */
require_once "Zend/OpenId/Extension.php";

/**
 * 'Simple Refistration Extension' for Zend_OpenId
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Extension_Sreg extends Zend_OpenId_Extension
{
    /**
     * SREG 1.1 namespace. All OpenID SREG 1.1 messages MUST contain variable
     * openid.ns.sreg with its value.
     */
    const NAMESPACE_1_1 = "http://openid.net/extensions/sreg/1.1";

    private $_props;
    private $_policy_url;
    private $_version;

    /**
     * Creates SREG extension object
     *
     * @param array $props associative array of SREG variables
     * @param string $policy_url SREG policy URL
     * @param float $version SREG version
     * @return array
     */
    public function __construct(array $props=null, $policy_url=null, $version=1.0)
    {
        $this->_props = $props;
        $this->_policy_url = $policy_url;
        $this->_version = $version;
    }

    /**
     * Returns associative array of SREG variables
     *
     * @return array
     */
    public function getProperties() {
        if (is_array($this->_props)) {
            return $this->_props;
        } else {
            return array();
        }
    }

    /**
     * Returns SREG policy URL
     *
     * @return string
     */
    public function getPolicyUrl() {
        return $this->_policy_url;
    }

    /**
     * Returns SREG protocol version
     *
     * @return float
     */
    public function getVersion() {
        return $this->_version;
    }

    /**
     * Returns array of allowed SREG variable names.
     *
     * @return array
     */
    public static function getSregProperties()
    {
        return array(
            "nickname",
            "email",
            "fullname",
            "dob",
            "gender",
            "postcode",
            "country",
            "language",
            "timezone"
        );
    }

    /**
     * Adds additional SREG data to OpenId 'checkid_immediate' or
     * 'checkid_setup' request.
     *
     * @param array &$params request's var/val pairs
     * @return bool
     */
    public function prepareRequest(&$params)
    {
        if (is_array($this->_props) && count($this->_props) > 0) {
            foreach ($this->_props as $prop => $req) {
                if ($req) {
                    if (isset($required)) {
                        $required .= ','.$prop;
                    } else {
                        $required = $prop;
                    }
                } else {
                    if (isset($optional)) {
                        $optional .= ','.$prop;
                    } else {
                        $optional = $prop;
                    }
                }
            }
            if ($this->_version >= 1.1) {
                $params['openid.ns.sreg'] = Zend_OpenId_Extension_Sreg::NAMESPACE_1_1;
            }
            if (!empty($required)) {
                $params['openid.sreg.required'] = $required;
            }
            if (!empty($optional)) {
                $params['openid.sreg.optional'] = $optional;
            }
            if (!empty($this->_policy_url)) {
                $params['openid.sreg.policy_url'] = $this->_policy_url;
            }
        }
        return true;
    }

    /**
     * Parses OpenId 'checkid_immediate' or 'checkid_setup' request,
     * extracts SREG variables and sets ovject properties to corresponding
     * values.
     *
     * @param array $params request's var/val pairs
     * @return bool
     */
    public function parseRequest($params)
    {
        if (isset($params['openid_ns_sreg']) &&
            $params['openid_ns_sreg'] === Zend_OpenId_Extension_Sreg::NAMESPACE_1_1) {
            $this->_version= 1.1;
        } else {
            $this->_version= 1.0;
        }
        if (!empty($params['openid_sreg_policy_url'])) {
            $this->_policy_url = $params['openid_sreg_policy_url'];
        } else {
            $this->_policy_url = null;
        }
        $props = array();
        if (!empty($params['openid_sreg_optional'])) {
            foreach (explode(',', $params['openid_sreg_optional']) as $prop) {
                $prop = trim($prop);
                $props[$prop] = false;
            }
        }
        if (!empty($params['openid_sreg_required'])) {
            foreach (explode(',', $params['openid_sreg_required']) as $prop) {
                $prop = trim($prop);
                $props[$prop] = true;
            }
        }
        $props2 = array();
        foreach (self::getSregProperties() as $prop) {
            if (isset($props[$prop])) {
                $props2[$prop] = $props[$prop];
            }
        }

        $this->_props = (count($props2) > 0) ? $props2 : null;
        return true;
    }

    /**
     * Adds additional SREG data to OpenId 'id_res' response.
     *
     * @param array &$params response's var/val pairs
     * @return bool
     */
    public function prepareResponse(&$params)
    {
        if (is_array($this->_props) && count($this->_props) > 0) {
            if ($this->_version >= 1.1) {
                $params['openid.ns.sreg'] = Zend_OpenId_Extension_Sreg::NAMESPACE_1_1;
            }
            foreach (self::getSregProperties() as $prop) {
                if (!empty($this->_props[$prop])) {
                    $params['openid.sreg.' . $prop] = $this->_props[$prop];
                }
            }
        }
        return true;
    }

    /**
     * Parses OpenId 'id_res' response and sets object's properties according
     * to 'openid.sreg.*' variables in response
     *
     * @param array $params response's var/val pairs
     * @return bool
     */
    public function parseResponse($params)
    {
        if (isset($params['openid_ns_sreg']) &&
            $params['openid_ns_sreg'] === Zend_OpenId_Extension_Sreg::NAMESPACE_1_1) {
            $this->_version= 1.1;
        } else {
            $this->_version= 1.0;
        }
        $props = array();
        foreach (self::getSregProperties() as $prop) {
            if (!empty($params['openid_sreg_' . $prop])) {
                $props[$prop] = $params['openid_sreg_' . $prop];
            }
        }
        if (isset($this->_props) && is_array($this->_props)) {
            foreach (self::getSregProperties() as $prop) {
                if (isset($this->_props[$prop]) &&
                    $this->_props[$prop] &&
                    !isset($props[$prop])) {
                    return false;
                }
            }
        }
        $this->_props = (count($props) > 0) ? $props : null;
        return true;
    }

    /**
     * Addes SREG properties that are allowed to be send to consumer to
     * the given $data argument.
     *
     * @param array &$data data to be stored in tusted servers database
     * @return bool
     */
    public function getTrustData(&$data)
    {
        $data[get_class()] = $this->getProperties();
        return true;
    }

    /**
     * Check if given $data contains necessury SREG properties to sutisfy
     * OpenId request. On success sets SREG response properties from given
     * $data and returns true, on failure returns false.
     *
     * @param array $data data from tusted servers database
     * @return bool
     */
    public function checkTrustData($data)
    {
        if (is_array($this->_props) && count($this->_props) > 0) {
            $props = array();
            $name = get_class();
            if (isset($data[$name])) {
                $props = $data[$name];
            } else {
                $props = array();
            }
            $props2 = array();
            foreach ($this->_props as $prop => $req) {
                if (empty($props[$prop])) {
                    if ($req) {
                        return false;
                    }
                } else {
                    $props2[$prop] = $props[$prop];
                }
            }
            $this->_props = (count($props2) > 0) ? $props2 : null;
        }
        return true;
    }
}
PKpG[�Y���OpenId/Extension.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Extension.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * Abstract extension class for Zend_OpenId
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_OpenId_Extension
{

    /**
     * Calls given function with given argument for all extensions
     *
     * @param mixed $extensions list of extensions or one extension
     * @param string $func function to be called
     * @param mixed &$params argument to pass to given funcion
     * @return bool
     */
    static public function forAll($extensions, $func, &$params)
    {
        if (!is_null($extensions)) {
            if (is_array($extensions)) {
                foreach ($extensions as $ext) {
                    if ($ext instanceof Zend_OpenId_Extension) {
                        if (!$ext->$func($params)) {
                            return false;
                        }
                    } else {
                        return false;
                    }
                }
            } else if (!is_object($extensions) ||
                       !($extensions instanceof Zend_OpenId_Extension) ||
                       !$extensions->$func($params)) {
                return false;
            }
        }
        return true;
    }

    /**
     * Method to add additional data to OpenId 'checkid_immediate' or
     * 'checkid_setup' request. This method addes nothing but inherited class
     * may add additional data into request.
     *
     * @param array &$params request's var/val pairs
     * @return bool
     */
    public function prepareRequest(&$params)
    {
        return true;
    }

    /**
     * Method to parse OpenId 'checkid_immediate' or 'checkid_setup' request
     * and initialize object with passed data. This method parses nothing but
     * inherited class may override this method to do somthing.
     *
     * @param array $params request's var/val pairs
     * @return bool
     */
    public function parseRequest($params)
    {
        return true;
    }

    /**
     * Method to add additional data to OpenId 'id_res' response. This method
     * addes nothing but inherited class may add additional data into response.
     *
     * @param array &$params response's var/val pairs
     * @return bool
     */
    public function prepareResponse(&$params)
    {
        return true;
    }

    /**
     * Method to parse OpenId 'id_res' response and initialize object with
     * passed data. This method parses nothing but inherited class may override
     * this method to do somthing.
     *
     * @param array $params response's var/val pairs
     * @return bool
     */
    public function parseResponse($params)
    {
        return true;
    }

    /**
     * Method to prepare data to store it in trusted servers database.
     *
     * @param array &$data data to be stored in tusted servers database
     * @return bool
     */
    public function getTrustData(&$data)
    {
        return true;
    }

    /**
     * Method to check if data from trusted servers database is enough to
     * sutisfy request.
     *
     * @param array $data data from tusted servers database
     * @return bool
     */
    public function checkTrustData($data)
    {
        return true;
    }
}
PKpG[�I�7�7 OpenId/Consumer/Storage/File.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: File.php 12970 2008-12-01 12:55:17Z dmitry $
 */

/**
 * @see Zend_OpenId_Consumer_Storage
 */
require_once "Zend/OpenId/Consumer/Storage.php";

/**
 * External storage implemmentation using serialized files
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId_Consumer_Storage_File extends Zend_OpenId_Consumer_Storage
{

    /**
     * Directory name to store data files in
     *
     * @var string $_dir
     */
    private $_dir;

    /**
     * Constructs storage object and creates storage directory
     *
     * @param string $dir directory name to store data files in
     * @throws Zend_OpenId_Exception
     */
    public function __construct($dir = null)
    {
        if (is_null($dir)) {
            $tmp = getenv('TMP');
            if (empty($tmp)) {
                $tmp = getenv('TEMP');
                if (empty($tmp)) {
                    $tmp = "/tmp";
                }
            }
            $user = get_current_user();
            if (is_string($user) && !empty($user)) {
                $tmp .= '/' . $user;
            }
            $dir = $tmp . '/openid/consumer';
        }
        $this->_dir = $dir;
        if (!is_dir($this->_dir)) {
            if (!@mkdir($this->_dir, 0700, 1)) {
                /**
                 * @see Zend_OpenId_Exception
                 */
                require_once 'Zend/OpenId/Exception.php';
                throw new Zend_OpenId_Exception(
                    'Cannot access storage directory ' . $dir,
                    Zend_OpenId_Exception::ERROR_STORAGE);
            }
        }
        if (($f = fopen($this->_dir.'/assoc.lock', 'w+')) === null) {
            /**
             * @see Zend_OpenId_Exception
             */
            require_once 'Zend/OpenId/Exception.php';
            throw new Zend_OpenId_Exception(
                'Cannot create a lock file in the directory ' . $dir,
                Zend_OpenId_Exception::ERROR_STORAGE);
        }
        fclose($f);
        if (($f = fopen($this->_dir.'/discovery.lock', 'w+')) === null) {
            /**
             * @see Zend_OpenId_Exception
             */
            require_once 'Zend/OpenId/Exception.php';
            throw new Zend_OpenId_Exception(
                'Cannot create a lock file in the directory ' . $dir,
                Zend_OpenId_Exception::ERROR_STORAGE);
        }
        fclose($f);
        if (($f = fopen($this->_dir.'/nonce.lock', 'w+')) === null) {
            /**
             * @see Zend_OpenId_Exception
             */
            require_once 'Zend/OpenId/Exception.php';
            throw new Zend_OpenId_Exception(
                'Cannot create a lock file in the directory ' . $dir,
                Zend_OpenId_Exception::ERROR_STORAGE);
        }
        fclose($f);
    }

    /**
     * Stores information about association identified by $url/$handle
     *
     * @param string $url OpenID server URL
     * @param string $handle assiciation handle
     * @param string $macFunc HMAC function (sha1 or sha256)
     * @param string $secret shared secret
     * @param long $expires expiration UNIX time
     * @return bool
     */
    public function addAssociation($url, $handle, $macFunc, $secret, $expires)
    {
        $name1 = $this->_dir . '/assoc_url_' . md5($url);
        $name2 = $this->_dir . '/assoc_handle_' . md5($handle);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name1, 'w+');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $data = serialize(array($url, $handle, $macFunc, $secret, $expires));
        fwrite($f, $data);
        if (function_exists('symlink')) {
            @unlink($name2);
            if (symlink($name1, $name2)) {
                fclose($f);
                fclose($lock);
                return true;
            }
        }
        $f2 = @fopen($name2, 'w+');
        if ($f2) {
            fwrite($f2, $data);
            fclose($f2);
            @unlink($name1);
            $ret = true;
        } else {
        	$ret = false;
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Gets information about association identified by $url
     * Returns true if given association found and not expired and false
     * otherwise
     *
     * @param string $url OpenID server URL
     * @param string &$handle assiciation handle
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    public function getAssociation($url, &$handle, &$macFunc, &$secret, &$expires)
    {
        $name1 = $this->_dir . '/assoc_url_' . md5($url);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name1, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedUrl, $handle, $macFunc, $secret, $expires) = unserialize($data);
            if ($url === $storedUrl && $expires > time()) {
                $ret = true;
            } else {
                $name2 = $this->_dir . '/assoc_handle_' . md5($handle);
                fclose($f);
                @unlink($name2);
                @unlink($name1);
                fclose($lock);
                return false;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Gets information about association identified by $handle
     * Returns true if given association found and not expired and false
     * otherwise
     *
     * @param string $handle assiciation handle
     * @param string &$url OpenID server URL
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    public function getAssociationByHandle($handle, &$url, &$macFunc, &$secret, &$expires)
    {
        $name2 = $this->_dir . '/assoc_handle_' . md5($handle);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name2, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($url, $storedHandle, $macFunc, $secret, $expires) = unserialize($data);
            if ($handle === $storedHandle && $expires > time()) {
                $ret = true;
            } else {
                fclose($f);
                @unlink($name2);
                $name1 = $this->_dir . '/assoc_url_' . md5($url);
                @unlink($name1);
                fclose($lock);
                return false;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Deletes association identified by $url
     *
     * @param string $url OpenID server URL
     * @return bool
     */
    public function delAssociation($url)
    {
        $name1 = $this->_dir . '/assoc_url_' . md5($url);
        $lock = @fopen($this->_dir . '/assoc.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name1, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedUrl, $handle, $macFunc, $secret, $expires) = unserialize($data);
            if ($url === $storedUrl) {
                $name2 = $this->_dir . '/assoc_handle_' . md5($handle);
                fclose($f);
                @unlink($name2);
                @unlink($name1);
                fclose($lock);
                return true;
            }
        }
        fclose($f);
        fclose($lock);
        return true;
    }

    /**
     * Stores information discovered from identity $id
     *
     * @param string $id identity
     * @param string $realId discovered real identity URL
     * @param string $server discovered OpenID server URL
     * @param float $version discovered OpenID protocol version
     * @param long $expires expiration UNIX time
     * @return bool
     */
    public function addDiscoveryInfo($id, $realId, $server, $version, $expires)
    {
        $name = $this->_dir . '/discovery_' . md5($id);
        $lock = @fopen($this->_dir . '/discovery.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'w+');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $data = serialize(array($id, $realId, $server, $version, $expires));
        fwrite($f, $data);
        fclose($f);
        fclose($lock);
        return true;
    }

    /**
     * Gets information discovered from identity $id
     * Returns true if such information exists and false otherwise
     *
     * @param string $id identity
     * @param string &$realId discovered real identity URL
     * @param string &$server discovered OpenID server URL
     * @param float &$version discovered OpenID protocol version
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    public function getDiscoveryInfo($id, &$realId, &$server, &$version, &$expires)
    {
        $name = $this->_dir . '/discovery_' . md5($id);
        $lock = @fopen($this->_dir . '/discovery.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'r');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        $ret = false;
        $data = stream_get_contents($f);
        if (!empty($data)) {
            list($storedId, $realId, $server, $version, $expires) = unserialize($data);
            if ($id === $storedId && $expires > time()) {
                $ret = true;
            } else {
                fclose($f);
                @unlink($name);
                fclose($lock);
                return false;
            }
        }
        fclose($f);
        fclose($lock);
        return $ret;
    }

    /**
     * Removes cached information discovered from identity $id
     *
     * @param string $id identity
     * @return bool
     */
    public function delDiscoveryInfo($id)
    {
        $name = $this->_dir . '/discovery_' . md5($id);
        $lock = @fopen($this->_dir . '/discovery.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        @unlink($name);
        fclose($lock);
        return true;
    }

    /**
     * The function checks the uniqueness of openid.response_nonce
     *
     * @param string $provider openid.openid_op_endpoint field from authentication response
     * @param  string $nonce openid.response_nonce field from authentication response
     * @return bool
     */
    public function isUniqueNonce($provider, $nonce)
    {
        $name = $this->_dir . '/nonce_' . md5($provider.';'.$nonce);
        $lock = @fopen($this->_dir . '/nonce.lock', 'w+');
        if ($lock === false) {
            return false;
        }
        if (!flock($lock, LOCK_EX)) {
            fclose($lock);
            return false;
        }
        $f = @fopen($name, 'x');
        if ($f === false) {
            fclose($lock);
            return false;
        }
        fwrite($f, $provider.';'.$nonce);
        fclose($f);
        fclose($lock);
        return true;
    }

    /**
     * Removes data from the uniqueness database that is older then given date
     *
     * @param mixed $date date of expired data
     */
    public function purgeNonces($date=null)
    {
        $lock = @fopen($this->_dir . '/nonce.lock', 'w+');
        if ($lock !== false) {
            flock($lock, LOCK_EX);
        }
        if (!is_int($date) && !is_string($date)) {
            foreach (glob($this->_dir . '/nonce_*') as $name) {
                @unlink($name);
            }
        } else {
            if (is_string($date)) {
                $time = time($date);
            } else {
                $time = $date;
            }
            foreach (glob($this->_dir . '/nonce_*') as $name) {
                if (filemtime($name) < $time) {
                    @unlink($name);
                }
            }
        }
        if ($lock !== false) {
            fclose($lock);
        }
    }
}
PKpG[ �Ԡ��OpenId/Consumer/Storage.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Storage.php 9239 2008-04-18 12:09:31Z dmitry $
 */

/**
 * Abstract class to implement external storage for OpenID consumer
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @subpackage Zend_OpenId_Consumer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_OpenId_Consumer_Storage
{

    /**
     * Stores information about association identified by $url/$handle
     *
     * @param string $url OpenID server URL
     * @param string $handle assiciation handle
     * @param string $macFunc HMAC function (sha1 or sha256)
     * @param string $secret shared secret
     * @param long $expires expiration UNIX time
     * @return void
     */
    abstract public function addAssociation($url, $handle, $macFunc, $secret, $expires);

    /**
     * Gets information about association identified by $url
     * Returns true if given association found and not expired and false
     * otherwise
     *
     * @param string $url OpenID server URL
     * @param string &$handle assiciation handle
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    abstract public function getAssociation($url, &$handle, &$macFunc, &$secret, &$expires);

    /**
     * Gets information about association identified by $handle
     * Returns true if given association found and not expired and false
     * othverwise
     *
     * @param string $handle assiciation handle
     * @param string &$url OpenID server URL
     * @param string &$macFunc HMAC function (sha1 or sha256)
     * @param string &$secret shared secret
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    abstract public function getAssociationByHandle($handle, &$url, &$macFunc, &$secret, &$expires);

    /**
     * Deletes association identified by $url
     *
     * @param string $url OpenID server URL
     * @return void
     */
    abstract public function delAssociation($url);

    /**
     * Stores information discovered from identity $id
     *
     * @param string $id identity
     * @param string $realId discovered real identity URL
     * @param string $server discovered OpenID server URL
     * @param float $version discovered OpenID protocol version
     * @param long $expires expiration UNIX time
     * @return void
     */
    abstract public function addDiscoveryInfo($id, $realId, $server, $version, $expires);

    /**
     * Gets information discovered from identity $id
     * Returns true if such information exists and false otherwise
     *
     * @param string $id identity
     * @param string &$realId discovered real identity URL
     * @param string &$server discovered OpenID server URL
     * @param float &$version discovered OpenID protocol version
     * @param long &$expires expiration UNIX time
     * @return bool
     */
    abstract public function getDiscoveryInfo($id, &$realId, &$server, &$version, &$expires);

    /**
     * Removes cached information discovered from identity $id
     *
     * @param string $id identity
     * @return bool
     */
    abstract public function delDiscoveryInfo($id);

    /**
     * The function checks the uniqueness of openid.response_nonce
     *
     * @param string $provider openid.openid_op_endpoint field from authentication response
     * @param string $nonce openid.response_nonce field from authentication response
     * @return bool
     */
    abstract public function isUniqueNonce($provider, $nonce);

    /**
     * Removes data from the uniqueness database that is older then given date
     *
     * @param string $date Date of expired data
     */
    abstract public function purgeNonces($date=null);
}
PKpG[A��fzzConsole/Getopt.phpnu&1i�<?php
/**
 * Zend_Console_Getopt is a class to parse options for command-line
 * applications.
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Console_Getopt
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Console_Getopt_Exception
 */
require_once 'Zend/Console/Getopt/Exception.php';

/**
 * Zend_Console_Getopt is a class to parse options for command-line
 * applications.
 *
 * Terminology:
 * Argument: an element of the argv array.  This may be part of an option,
 *   or it may be a non-option command-line argument.
 * Flag: the letter or word set off by a '-' or '--'.  Example: in '--output filename',
 *   '--output' is the flag.
 * Parameter: the additional argument that is associated with the option.
 *   Example: in '--output filename', the 'filename' is the parameter.
 * Option: the combination of a flag and its parameter, if any.
 *   Example: in '--output filename', the whole thing is the option.
 *
 * The following features are supported:
 *
 * - Short flags like '-a'.  Short flags are preceded by a single
 *   dash.  Short flags may be clustered e.g. '-abc', which is the
 *   same as '-a' '-b' '-c'.
 * - Long flags like '--verbose'.  Long flags are preceded by a
 *   double dash.  Long flags may not be clustered.
 * - Options may have a parameter, e.g. '--output filename'.
 * - Parameters for long flags may also be set off with an equals sign,
 *   e.g. '--output=filename'.
 * - Parameters for long flags may be checked as string, word, or integer.
 * - Automatic generation of a helpful usage message.
 * - Signal end of options with '--'; subsequent arguments are treated
 *   as non-option arguments, even if they begin with '-'.
 * - Raise exception Zend_Console_Getopt_Exception in several cases
 *   when invalid flags or parameters are given.  Usage message is
 *   returned in the exception object.
 *
 * The format for specifying options uses a PHP associative array.
 * The key is has the format of a list of pipe-separated flag names,
 * followed by an optional '=' to indicate a required parameter or
 * '-' to indicate an optional parameter.  Following that, the type
 * of parameter may be specified as 's' for string, 'w' for word,
 * or 'i' for integer.
 *
 * Examples:
 * - 'user|username|u=s'  this means '--user' or '--username' or '-u'
 *   are synonyms, and the option requires a string parameter.
 * - 'p=i'  this means '-p' requires an integer parameter.  No synonyms.
 * - 'verbose|v-i'  this means '--verbose' or '-v' are synonyms, and
 *   they take an optional integer parameter.
 * - 'help|h'  this means '--help' or '-h' are synonyms, and
 *   they take no parameter.
 *
 * The values in the associative array are strings that are used as
 * brief descriptions of the options when printing a usage message.
 *
 * The simpler format for specifying options used by PHP's getopt()
 * function is also supported.  This is similar to GNU getopt and shell
 * getopt format.
 *
 * Example:  'abc:' means options '-a', '-b', and '-c'
 * are legal, and the latter requires a string parameter.
 *
 * @category   Zend
 * @package    Zend_Console_Getopt
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    Release: @package_version@
 * @since      Class available since Release 0.6.0
 *
 * @todo  Handle params with multiple values, e.g. --colors=red,green,blue
 *        Set value of parameter to the array of values.  Allow user to specify
 *        the separator with Zend_Console_Getopt::CONFIG_PARAMETER_SEPARATOR.
 *        If this config value is null or empty string, do not split values
 *        into arrays.  Default separator is comma (',').
 *
 * @todo  Handle params with multiple values specified with separate options
 *        e.g. --colors red --colors green --colors blue should give one
 *        option with an array(red, green, blue).
 *        Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_PARAMETERS.
 *        Default is that subsequent options overwrite the parameter value.
 *
 * @todo  Handle flags occurring multiple times, e.g. -v -v -v
 *        Set value of the option's parameter to the integer count of instances
 *        instead of a boolean.
 *        Enable with Zend_Console_Getopt::CONFIG_CUMULATIVE_FLAGS.
 *        Default is that the value is simply boolean true regardless of
 *        how many instances of the flag appear.
 *
 * @todo  Handle flags that implicitly print usage message, e.g. --help
 *
 * @todo  Handle freeform options, e.g. --set-variable
 *        Enable with Zend_Console_Getopt::CONFIG_FREEFORM_FLAGS
 *        All flag-like syntax is recognized, no flag generates an exception.
 *
 * @todo  Handle numeric options, e.g. -1, -2, -3, -1000
 *        Enable with Zend_Console_Getopt::CONFIG_NUMERIC_FLAGS
 *        The rule must specify a named flag and the '#' symbol as the
 *        parameter type. e.g.,  'lines=#'
 *
 * @todo  Enable user to specify header and footer content in the help message.
 *
 * @todo  Feature request to handle option interdependencies.
 *        e.g. if -b is specified, -a must be specified or else the
 *        usage is invalid.
 *
 * @todo  Feature request to implement callbacks.
 *        e.g. if -a is specified, run function 'handleOptionA'().
 */
class Zend_Console_Getopt
{
    /**
     * The options for a given application can be in multiple formats.
     * modeGnu is for traditional 'ab:c:' style getopt format.
     * modeZend is for a more structured format.
     */
    const MODE_ZEND                         = 'zend';
    const MODE_GNU                          = 'gnu';

    /**
     * Constant tokens for various symbols used in the mode_zend
     * rule format.
     */
    const PARAM_REQUIRED                    = '=';
    const PARAM_OPTIONAL                    = '-';
    const TYPE_STRING                       = 's';
    const TYPE_WORD                         = 'w';
    const TYPE_INTEGER                      = 'i';

    /**
     * These are constants for optional behavior of this class.
     * ruleMode is either 'zend' or 'gnu' or a user-defined mode.
     * dashDash is true if '--' signifies the end of command-line options.
     * ignoreCase is true if '--opt' and '--OPT' are implicitly synonyms.
     */
    const CONFIG_RULEMODE                   = 'ruleMode';
    const CONFIG_DASHDASH                   = 'dashDash';
    const CONFIG_IGNORECASE                 = 'ignoreCase';

    /**
     * Defaults for getopt configuration are:
     * ruleMode is 'zend' format,
     * dashDash (--) token is enabled,
     * ignoreCase is not enabled.
     *
     * @var array Config
     */
    protected $_getoptConfig = array(
        self::CONFIG_RULEMODE   => self::MODE_ZEND,
        self::CONFIG_DASHDASH   => true,
        self::CONFIG_IGNORECASE => false
    );

    /**
     * Stores the command-line arguments for the calling applicaion.
     *
     * @var array
     */
    protected $_argv = array();

    /**
     * Stores the name of the calling applicaion.
     *
     * @var string
     */
    protected $_progname = '';

    /**
     * Stores the list of legal options for this application.
     *
     * @var array
     */
    protected $_rules = array();

    /**
     * Stores alternate spellings of legal options.
     *
     * @var array
     */
    protected $_ruleMap = array();

    /**
     * Stores options given by the user in the current invocation
     * of the application, as well as parameters given in options.
     *
     * @var array
     */
    protected $_options = array();

    /**
     * Stores the command-line arguments other than options.
     *
     * @var array
     */
    protected $_remainingArgs = array();

    /**
     * State of the options: parsed or not yet parsed?
     *
     * @var boolean
     */
    protected $_parsed = false;

    /**
     * The constructor takes one to three parameters.
     *
     * The first parameter is $rules, which may be a string for
     * gnu-style format, or a structured array for Zend-style format.
     *
     * The second parameter is $argv, and it is optional.  If not
     * specified, $argv is inferred from the global argv.
     *
     * The third parameter is an array of configuration parameters
     * to control the behavior of this instance of Getopt; it is optional.
     *
     * @param  array $rules
     * @param  array $argv
     * @param  array $getoptConfig
     * @return void
     */
    public function __construct($rules, $argv = null, $getoptConfig = array())
    {
        $this->_progname = $_SERVER['argv'][0];
        $this->setOptions($getoptConfig);
        $this->addRules($rules);
        if (!is_array($argv)) {
            $argv = array_slice($_SERVER['argv'], 1);
        }
        if (isset($argv)) {
            $this->addArguments((array)$argv);
        }
    }

    /**
     * Return the state of the option seen on the command line of the
     * current application invocation.  This function returns true, or the
     * parameter to the option, if any.  If the option was not given,
     * this function returns null.
     *
     * The magic __get method works in the context of naming the option
     * as a virtual member of this class.
     *
     * @param  string $key
     * @return string
     */
    public function __get($key)
    {
        return $this->getOption($key);
    }

    /**
     * Test whether a given option has been seen.
     *
     * @param  string $key
     * @return boolean
     */
    public function __isset($key)
    {
        $this->parse();
        if (isset($this->_ruleMap[$key])) {
            $key = $this->_ruleMap[$key];
            return isset($this->_options[$key]);
        }
        return false;
    }

    /**
     * Set the value for a given option.
     *
     * @param  string $key
     * @param  string $value
     * @return void
     */
    public function __set($key, $value)
    {
        $this->parse();
        if (isset($this->_ruleMap[$key])) {
            $key = $this->_ruleMap[$key];
            $this->_options[$key] = $value;
        }
    }

    /**
     * Return the current set of options and parameters seen as a string.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }

    /**
     * Unset an option.
     *
     * @param  string $key
     * @return void
     */
    public function __unset($key)
    {
        $this->parse();
        if (isset($this->_ruleMap[$key])) {
            $key = $this->_ruleMap[$key];
            unset($this->_options[$key]);
        }
    }

    /**
     * Define additional command-line arguments.
     * These are appended to those defined when the constructor was called.
     *
     * @param  array $argv
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function addArguments($argv)
    {
        $this->_argv = array_merge($this->_argv, $argv);
        $this->_parsed = false;
        return $this;
    }

    /**
     * Define full set of command-line arguments.
     * These replace any currently defined.
     *
     * @param  array $argv
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function setArguments($argv)
    {
        $this->_argv = $argv;
        $this->_parsed = false;
        return $this;
    }

    /**
     * Define multiple configuration options from an associative array.
     * These are not program options, but properties to configure
     * the behavior of Zend_Console_Getopt.
     *
     * @param  array $getoptConfig
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function setOptions($getoptConfig)
    {
        if (isset($getoptConfig)) {
            foreach ($getoptConfig as $key => $value) {
                $this->setOption($key, $value);
            }
        }
        return $this;
    }

    /**
     * Define one configuration option as a key/value pair.
     * These are not program options, but properties to configure
     * the behavior of Zend_Console_Getopt.
     *
     * @param  string $configKey
     * @param  string $configValue
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function setOption($configKey, $configValue)
    {
        if ($configKey !== null) {
            $this->_getoptConfig[$configKey] = $configValue;
        }
        return $this;
    }

    /**
     * Define additional option rules.
     * These are appended to the rules defined when the constructor was called.
     *
     * @param  array $rules
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function addRules($rules)
    {
        $ruleMode = $this->_getoptConfig['ruleMode'];
        switch ($this->_getoptConfig['ruleMode']) {
            case self::MODE_ZEND:
                if (is_array($rules)) {
                    $this->_addRulesModeZend($rules);
                    break;
                }
                // intentional fallthrough
            case self::MODE_GNU:
                $this->_addRulesModeGnu($rules);
                break;
            default:
                /**
                 * Call addRulesModeFoo() for ruleMode 'foo'.
                 * The developer should subclass Getopt and
                 * provide this method.
                 */
                $method = '_addRulesMode' . ucfirst($ruleMode);
                $this->$method($rules);
        }
        $this->_parsed = false;
        return $this;
    }

    /**
     * Return the current set of options and parameters seen as a string.
     *
     * @return string
     */
    public function toString()
    {
        $this->parse();
        $s = array();
        foreach ($this->_options as $flag => $value) {
            $s[] = $flag . '=' . ($value === true ? 'true' : $value);
        }
        return implode(' ', $s);
    }

    /**
     * Return the current set of options and parameters seen
     * as an array of canonical options and parameters.
     *
     * Clusters have been expanded, and option aliases
     * have been mapped to their primary option names.
     *
     * @return array
     */
    public function toArray()
    {
        $this->parse();
        $s = array();
        foreach ($this->_options as $flag => $value) {
            $s[] = $flag;
            if ($value !== true) {
                $s[] = $value;
            }
        }
        return $s;
    }

    /**
     * Return the current set of options and parameters seen in Json format.
     *
     * @return string
     */
    public function toJson()
    {
        $this->parse();
        $j = array();
        foreach ($this->_options as $flag => $value) {
            $j['options'][] = array(
                'option' => array(
                    'flag' => $flag,
                    'parameter' => $value
                )
            );
        }

        /**
         * @see Zend_Json
         */
        require_once 'Zend/Json.php';
        $json = Zend_Json::encode($j);

        return $json;
    }

    /**
     * Return the current set of options and parameters seen in XML format.
     *
     * @return string
     */
    public function toXml()
    {
        $this->parse();
        $doc = new DomDocument('1.0', 'utf-8');
        $optionsNode = $doc->createElement('options');
        $doc->appendChild($optionsNode);
        foreach ($this->_options as $flag => $value) {
            $optionNode = $doc->createElement('option');
            $optionNode->setAttribute('flag', utf8_encode($flag));
            if ($value !== true) {
                $optionNode->setAttribute('parameter', utf8_encode($value));
            }
            $optionsNode->appendChild($optionNode);
        }
        $xml = $doc->saveXML();
        return $xml;
    }

    /**
     * Return a list of options that have been seen in the current argv.
     *
     * @return array
     */
    public function getOptions()
    {
        $this->parse();
        return array_keys($this->_options);
    }

    /**
     * Return the state of the option seen on the command line of the
     * current application invocation.
     *
     * This function returns true, or the parameter value to the option, if any.
     * If the option was not given, this function returns false.
     *
     * @param  string $flag
     * @return mixed
     */
    public function getOption($flag)
    {
        $this->parse();
        if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
            $flag = strtolower($flag);
        }
        if (isset($this->_ruleMap[$flag])) {
            $flag = $this->_ruleMap[$flag];
            if (isset($this->_options[$flag])) {
                return $this->_options[$flag];
            }
        }
        return null;
    }

    /**
     * Return the arguments from the command-line following all options found.
     *
     * @return array
     */
    public function getRemainingArgs()
    {
        $this->parse();
        return $this->_remainingArgs;
    }

    /**
     * Return a useful option reference, formatted for display in an
     * error message.
     *
     * Note that this usage information is provided in most Exceptions
     * generated by this class.
     *
     * @return string
     */
    public function getUsageMessage()
    {
        $usage = "Usage: {$this->_progname} [ options ]\n";
        $maxLen = 20;
        foreach ($this->_rules as $rule) {
            $flags = array();
            if (is_array($rule['alias'])) {
                foreach ($rule['alias'] as $flag) {
                    $flags[] = (strlen($flag) == 1 ? '-' : '--') . $flag;
                }
            }
            $linepart['name'] = implode('|', $flags);
            if (isset($rule['param']) && $rule['param'] != 'none') {
                $linepart['name'] .= ' ';
                switch ($rule['param']) {
                    case 'optional':
                        $linepart['name'] .= "[ <{$rule['paramType']}> ]";
                        break;
                    case 'required':
                        $linepart['name'] .= "<{$rule['paramType']}>";
                        break;
                }
            }
            if (strlen($linepart['name']) > $maxLen) {
                $maxLen = strlen($linepart['name']);
            }
            $linepart['help'] = '';
            if (isset($rule['help'])) {
                $linepart['help'] .= $rule['help'];
            }
            $lines[] = $linepart;
        }
        foreach ($lines as $linepart) {
            $usage .= sprintf("%s %s\n",
            str_pad($linepart['name'], $maxLen),
            $linepart['help']);
        }
        return $usage;
    }

    /**
     * Define aliases for options.
     *
     * The parameter $aliasMap is an associative array
     * mapping option name (short or long) to an alias.
     *
     * @param  array $aliasMap
     * @throws Zend_Console_Getopt_Exception
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function setAliases($aliasMap)
    {
        foreach ($aliasMap as $flag => $alias)
        {
            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
                $flag = strtolower($flag);
                $alias = strtolower($alias);
            }
            if (!isset($this->_ruleMap[$flag])) {
                continue;
            }
            $flag = $this->_ruleMap[$flag];
            if (isset($this->_rules[$alias]) || isset($this->_ruleMap[$alias])) {
                $o = (strlen($alias) == 1 ? '-' : '--') . $alias;
                /**
                 * @see Zend_Console_Getopt_Exception
                 */
                throw new Zend_Console_Getopt_Exception(
                    "Option \"$o\" is being defined more than once.");
            }
            $this->_rules[$flag]['alias'][] = $alias;
            $this->_ruleMap[$alias] = $flag;
        }
        return $this;
    }

    /**
     * Define help messages for options.
     *
     * The parameter $help_map is an associative array
     * mapping option name (short or long) to the help string.
     *
     * @param  array $helpMap
     * @return Zend_Console_Getopt Provides a fluent interface
     */
    public function setHelp($helpMap)
    {
        foreach ($helpMap as $flag => $help)
        {
            if (!isset($this->_ruleMap[$flag])) {
                continue;
            }
            $flag = $this->_ruleMap[$flag];
            $this->_rules[$flag]['help'] = $help;
        }
        return $this;
    }

    /**
     * Parse command-line arguments and find both long and short
     * options.
     *
     * Also find option parameters, and remaining arguments after
     * all options have been parsed.
     *
     * @return Zend_Console_Getopt|null Provides a fluent interface
     */
    public function parse()
    {
        if ($this->_parsed === true) {
            return;
        }
        $argv = $this->_argv;
        $this->_options = array();
        $this->_remainingArgs = array();
        while (count($argv) > 0) {
            if ($argv[0] == '--') {
                array_shift($argv);
                if ($this->_getoptConfig[self::CONFIG_DASHDASH]) {
                    $this->_remainingArgs = array_merge($this->_remainingArgs, $argv);
                    break;
                }
            }
            if (substr($argv[0], 0, 2) == '--') {
                $this->_parseLongOption($argv);
            } else if (substr($argv[0], 0, 1) == '-' && ('-' != $argv[0] || count($argv) >1))  {
                $this->_parseShortOptionCluster($argv);
            } else {
                $this->_remainingArgs[] = array_shift($argv);
            }
        }
        $this->_parsed = true;
        return $this;
    }

    /**
     * Parse command-line arguments for a single long option.
     * A long option is preceded by a double '--' character.
     * Long options may not be clustered.
     *
     * @param  mixed &$argv
     * @return void
     */
    protected function _parseLongOption(&$argv)
    {
        $optionWithParam = ltrim(array_shift($argv), '-');
        $l = explode('=', $optionWithParam);
        $flag = array_shift($l);
        $param = array_shift($l);
        if (isset($param)) {
            array_unshift($argv, $param);
        }
        $this->_parseSingleOption($flag, $argv);
    }

    /**
     * Parse command-line arguments for short options.
     * Short options are those preceded by a single '-' character.
     * Short options may be clustered.
     *
     * @param  mixed &$argv
     * @return void
     */
    protected function _parseShortOptionCluster(&$argv)
    {
        $flagCluster = ltrim(array_shift($argv), '-');
        foreach (str_split($flagCluster) as $flag) {
            $this->_parseSingleOption($flag, $argv);
        }
    }

    /**
     * Parse command-line arguments for a single option.
     *
     * @param  string $flag
     * @param  mixed  $argv
     * @throws Zend_Console_Getopt_Exception
     * @return void
     */
    protected function _parseSingleOption($flag, &$argv)
    {
        if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
            $flag = strtolower($flag);
        }
        if (!isset($this->_ruleMap[$flag])) {
            /**
             * @see Zend_Console_Getopt_Exception
             */
            throw new Zend_Console_Getopt_Exception(
                "Option \"$flag\" is not recognized.",
                $this->getUsageMessage());
        }
        $realFlag = $this->_ruleMap[$flag];
        switch ($this->_rules[$realFlag]['param']) {
            case 'required':
                if (count($argv) > 0) {
                    $param = array_shift($argv);
                    $this->_checkParameterType($realFlag, $param);
                } else {
                    /**
                     * @see Zend_Console_Getopt_Exception
                     */
                    throw new Zend_Console_Getopt_Exception(
                        "Option \"$flag\" requires a parameter.",
                        $this->getUsageMessage());
                }
                break;
            case 'optional':
                if (count($argv) > 0 && substr($argv[0], 0, 1) != '-') {
                    $param = array_shift($argv);
                    $this->_checkParameterType($realFlag, $param);
                } else {
                    $param = true;
                }
                break;
            default:
                $param = true;
        }
        $this->_options[$realFlag] = $param;
    }

    /**
     * Return true if the parameter is in a valid format for
     * the option $flag.
     * Throw an exception in most other cases.
     *
     * @param  string $flag
     * @param  string $param
     * @throws Zend_Console_Getopt_Exception
     * @return bool
     */
    protected function _checkParameterType($flag, $param)
    {
        $type = 'string';
        if (isset($this->_rules[$flag]['paramType'])) {
            $type = $this->_rules[$flag]['paramType'];
        }
        switch ($type) {
            case 'word':
                if (preg_match('/\W/', $param)) {
                    /**
                     * @see Zend_Console_Getopt_Exception
                     */
                    throw new Zend_Console_Getopt_Exception(
                        "Option \"$flag\" requires a single-word parameter, but was given \"$param\".",
                        $this->getUsageMessage());
                }
                break;
            case 'integer':
                if (preg_match('/\D/', $param)) {
                    /**
                     * @see Zend_Console_Getopt_Exception
                     */
                    throw new Zend_Console_Getopt_Exception(
                        "Option \"$flag\" requires an integer parameter, but was given \"$param\".",
                        $this->getUsageMessage());
                }
                break;
            case 'string':
            default:
                break;
        }
        return true;
    }

    /**
     * Define legal options using the gnu-style format.
     *
     * @param  string $rules
     * @return void
     */
    protected function _addRulesModeGnu($rules)
    {
        $ruleArray = array();
        
        /**
         * Options may be single alphanumeric characters.
         * Options may have a ':' which indicates a required string parameter.
         * No long options or option aliases are supported in GNU style.
         */
        preg_match_all('/([a-zA-Z0-9]:?)/', $rules, $ruleArray);
        foreach ($ruleArray[1] as $rule) {
            $r = array();
            $flag = substr($rule, 0, 1);
            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
                $flag = strtolower($flag);
            }
            $r['alias'][] = $flag;
            if (substr($rule, 1, 1) == ':') {
                $r['param'] = 'required';
                $r['paramType'] = 'string';
            } else {
                $r['param'] = 'none';
            }
            $this->_rules[$flag] = $r;
            $this->_ruleMap[$flag] = $flag;
        }
    }

    /**
     * Define legal options using the Zend-style format.
     *
     * @param  array $rules
     * @throws Zend_Console_Getopt_Exception
     * @return void
     */
    protected function _addRulesModeZend($rules)
    {
        foreach ($rules as $ruleCode => $helpMessage)
        {
            // this may have to translate the long parm type if there
            // are any complaints that =string will not work (even though that use
            // case is not documented) 
            if (in_array(substr($ruleCode, -2, 1), array('-', '='))) {
                $flagList  = substr($ruleCode, 0, -2);
                $delimiter = substr($ruleCode, -2, 1);
                $paramType = substr($ruleCode, -1);
            } else {
                $flagList = $ruleCode;
                $delimiter = $paramType = null;
            }
            if ($this->_getoptConfig[self::CONFIG_IGNORECASE]) {
                $flagList = strtolower($flagList);
            }
            $flags = explode('|', $flagList);
            $rule = array();
            $mainFlag = $flags[0];
            foreach ($flags as $flag) {
                if (empty($flag)) {
                    /**
                     * @see Zend_Console_Getopt_Exception
                     */
                    throw new Zend_Console_Getopt_Exception(
                        "Blank flag not allowed in rule \"$ruleCode\".");
                }
                if (strlen($flag) == 1) {
                    if (isset($this->_ruleMap[$flag])) {
                        /**
                         * @see Zend_Console_Getopt_Exception
                         */
                        throw new Zend_Console_Getopt_Exception(
                            "Option \"-$flag\" is being defined more than once.");
                    }
                    $this->_ruleMap[$flag] = $mainFlag;
                    $rule['alias'][] = $flag;
                } else {
                    if (isset($this->_rules[$flag]) || isset($this->_ruleMap[$flag])) {
                        /**
                         * @see Zend_Console_Getopt_Exception
                         */
                        throw new Zend_Console_Getopt_Exception(
                            "Option \"--$flag\" is being defined more than once.");
                    }
                    $this->_ruleMap[$flag] = $mainFlag;
                    $rule['alias'][] = $flag;
                }
            }
            if (isset($delimiter)) {
                switch ($delimiter) {
                    case self::PARAM_REQUIRED:
                        $rule['param'] = 'required';
                        break;
                    case self::PARAM_OPTIONAL:
                    default:
                        $rule['param'] = 'optional';
                }
                switch (substr($paramType, 0, 1)) {
                    case self::TYPE_WORD:
                        $rule['paramType'] = 'word';
                        break;
                    case self::TYPE_INTEGER:
                        $rule['paramType'] = 'integer';
                        break;
                    case self::TYPE_STRING:
                    default:
                        $rule['paramType'] = 'string';
                }
            } else {
                $rule['param'] = 'none';
            }
            $rule['help'] = $helpMessage;
            $this->_rules[$mainFlag] = $rule;
        }
    }

}
PKpG[����Console/Getopt/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Console_Getopt
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Console_Getopt_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Console_Getopt
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Console_Getopt_Exception extends Zend_Exception
{
    /**
     * Usage
     *
     * @var string
     */
    protected $usage = '';

    /**
     * Constructor
     *
     * @param string $message
     * @param string $usage
     * @return void
     */
    public function __construct($message, $usage = '')
    {
        $this->usage = $usage;
        parent::__construct($message);
    }

    /**
     * Returns the usage
     *
     * @return string
     */
    public function getUsageMessage()
    {
        return $this->usage;
    }
}
PKpG[�޿���Cache/Backend/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/ExtendedInterface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
{
    /**
     * Available options
     *
     * =====> (string) cache_dir :
     * - Directory where to put the cache files
     *
     * =====> (boolean) file_locking :
     * - Enable / disable file_locking
     * - Can avoid cache corruption under bad circumstances but it doesn't work on multithread
     * webservers and on NFS filesystems for example
     *
     * =====> (boolean) read_control :
     * - Enable / disable read control
     * - If enabled, a control key is embeded in cache file and this key is compared with the one
     * calculated after the reading.
     *
     * =====> (string) read_control_type :
     * - Type of read control (only if read control is enabled). Available values are :
     *   'md5' for a md5 hash control (best but slowest)
     *   'crc32' for a crc32 hash control (lightly less safe but faster, better choice)
     *   'adler32' for an adler32 hash control (excellent choice too, faster than crc32)
     *   'strlen' for a length only test (fastest)
     *
     * =====> (int) hashed_directory_level :
     * - Hashed directory level
     * - Set the hashed directory structure level. 0 means "no hashed directory
     * structure", 1 means "one level of directory", 2 means "two levels"...
     * This option can speed up the cache only when you have many thousands of
     * cache file. Only specific benchs can help you to choose the perfect value
     * for you. Maybe, 1 or 2 is a good start.
     *
     * =====> (int) hashed_directory_umask :
     * - Umask for hashed directory structure
     *
     * =====> (string) file_name_prefix :
     * - prefix for cache files
     * - be really carefull with this option because a too generic value in a system cache dir
     *   (like /tmp) can cause disasters when cleaning the cache
     *
     * =====> (int) cache_file_umask :
     * - Umask for cache files
     *
     * =====> (int) metatadatas_array_max_size :
     * - max size for the metadatas array (don't change this value unless you
     *   know what you are doing)
     *
     * @var array available options
     */
    protected $_options = array(
        'cache_dir' => null,
        'file_locking' => true,
        'read_control' => true,
        'read_control_type' => 'crc32',
        'hashed_directory_level' => 0,
        'hashed_directory_umask' => 0700,
        'file_name_prefix' => 'zend_cache',
        'cache_file_umask' => 0600,
        'metadatas_array_max_size' => 100
    );

    /**
     * Array of metadatas (each item is an associative array)
     *
     * @var array
     */
    private $_metadatasArray = array();


    /**
     * Constructor
     *
     * @param  array $options associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        parent::__construct($options);
        if (!is_null($this->_options['cache_dir'])) { // particular case for this option
            $this->setCacheDir($this->_options['cache_dir']);
        } else {
            $this->setCacheDir(self::getTmpDir() . DIRECTORY_SEPARATOR, false);
        }
        if (isset($this->_options['file_name_prefix'])) { // particular case for this option
            if (!preg_match('~^[\w]+$~', $this->_options['file_name_prefix'])) {
                Zend_Cache::throwException('Invalid file_name_prefix : must use only [a-zA-A0-9_]');
            }
        }
        if ($this->_options['metadatas_array_max_size'] < 10) {
            Zend_Cache::throwException('Invalid metadatas_array_max_size, must be > 10');
        }
        if (isset($options['hashed_directory_umask']) && is_string($options['hashed_directory_umask'])) {
            // See #ZF-4422
            $this->_options['hashed_directory_umask'] = octdec($this->_options['hashed_directory_umask']);
        }
        if (isset($options['cache_file_umask']) && is_string($options['cache_file_umask'])) {
            // See #ZF-4422
            $this->_options['cache_file_umask'] = octdec($this->_options['cache_file_umask']);
        }
    }

    /**
     * Set the cache_dir (particular case of setOption() method)
     *
     * @param  string  $value
     * @param  boolean $trailingSeparator If true, add a trailing separator is necessary
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setCacheDir($value, $trailingSeparator = true)
    {
        if (!is_dir($value)) {
            Zend_Cache::throwException('cache_dir must be a directory');
        }
        if (!is_writable($value)) {
            Zend_Cache::throwException('cache_dir is not writable');
        }
        if ($trailingSeparator) {
            // add a trailing DIRECTORY_SEPARATOR if necessary
            $value = rtrim(realpath($value), '\\/') . DIRECTORY_SEPARATOR;
        }
        $this->_options['cache_dir'] = $value;
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param string $id cache id
     * @param boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
     * @return string|false cached datas
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        if (!($this->_test($id, $doNotTestCacheValidity))) {
            // The cache is not hit !
            return false;
        }
        $metadatas = $this->_getMetadatas($id);
        $file = $this->_file($id);
        $data = $this->_fileGetContents($file);
        if ($this->_options['read_control']) {
            $hashData = $this->_hash($data, $this->_options['read_control_type']);
            $hashControl = $metadatas['hash'];
            if ($hashData != $hashControl) {
                // Problem detected by the read control !
                $this->_log('Zend_Cache_Backend_File::load() / read_control : stored hash and computed hash do not match');
                $this->remove($id);
                return false;
            }
        }
        return $data;
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param string $id cache id
     * @return mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        clearstatcache();
        return $this->_test($id, false);
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data             Datas to cache
     * @param  string $id               Cache id
     * @param  array  $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        clearstatcache();
        $file = $this->_file($id);
        $path = $this->_path($id);
        if ($this->_options['hashed_directory_level'] > 0) {
            if (!is_writable($path)) {
                // maybe, we just have to build the directory structure
                $this->_recursiveMkdirAndChmod($id);
            }
            if (!is_writable($path)) {
                return false;
            }
        }
        if ($this->_options['read_control']) {
            $hash = $this->_hash($data, $this->_options['read_control_type']);
        } else {
            $hash = '';
        }
        $metadatas = array(
            'hash' => $hash,
            'mtime' => time(),
            'expire' => $this->_expireTime($this->getLifetime($specificLifetime)),
            'tags' => $tags
        );
        $res = $this->_setMetadatas($id, $metadatas);
        if (!$res) {
            $this->_log('Zend_Cache_Backend_File::save() / error on saving metadata');
            return false;
        }
        $res = $this->_filePutContents($file, $data);
        return $res;
    }

    /**
     * Remove a cache record
     *
     * @param  string $id cache id
     * @return boolean true if no problem
     */
    public function remove($id)
    {
        $file = $this->_file($id);
        return ($this->_delMetadatas($id) && $this->_remove($file));
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * 'all' (default)  => remove all cache entries ($tags is not used)
     * 'old'            => remove too old cache entries ($tags is not used)
     * 'matchingTag'    => remove cache entries matching all given tags
     *                     ($tags can be an array of strings or a single string)
     * 'notMatchingTag' => remove cache entries not matching one of the given tags
     *                     ($tags can be an array of strings or a single string)
     * 'matchingAnyTag' => remove cache entries matching any given tags
     *                     ($tags can be an array of strings or a single string)
     *
     * @param string $mode clean mode
     * @param tags array $tags array of tags
     * @return boolean true if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        // We use this private method to hide the recursive stuff
        clearstatcache();
        return $this->_clean($this->_options['cache_dir'], $mode, $tags);
    }
    
    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        return $this->_get($this->_options['cache_dir'], 'ids', array());
    }
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        return $this->_get($this->_options['cache_dir'], 'tags', array());
    }
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        return $this->_get($this->_options['cache_dir'], 'matching', $tags);
    }
    
    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array())
    {
        return $this->_get($this->_options['cache_dir'], 'notMatching', $tags);
    }
    
    /**
     * Return an array of stored cache ids which match any given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array())
    {
        return $this->_get($this->_options['cache_dir'], 'matchingAny', $tags);
    }
    
    /**
     * Return the filling percentage of the backend storage
     *
     * @throws Zend_Cache_Exception
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        $free = disk_free_space($this->_options['cache_dir']);
        $total = disk_total_space($this->_options['cache_dir']);
        if ($total == 0) {
            Zend_Cache::throwException('can\'t get disk_total_space');
        } else {
            if ($free >= $total) {
                return 100;
            }
            return ((int) (100. * ($total - $free) / $total));
        }
    }
    
    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     * 
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id)
    {
        $metadatas = $this->_getMetadatas($id);
        if (!$metadatas) {
            return false;
        }
        if (time() > $metadatas['expire']) {
            return false;
        }
        return array(
            'expire' => $metadatas['expire'],
            'tags' => $metadatas['tags'],
            'mtime' => $metadatas['mtime']
        );
    }
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        $metadatas = $this->_getMetadatas($id);
        if (!$metadatas) {
            return false;
        }
        if (time() > $metadatas['expire']) {
            return false;
        }
        $newMetadatas = array(
            'hash' => $metadatas['hash'],
            'mtime' => time(),
            'expire' => $metadatas['expire'] + $extraLifetime,
            'tags' => $metadatas['tags']
        );
        $res = $this->_setMetadatas($id, $newMetadatas);
        if (!$res) {
            return false;
        }
        return true;
    }
    
    /**
     * Return an associative array of capabilities (booleans) of the backend
     * 
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     * 
     * @return array associative of with capabilities
     */
    public function getCapabilities()
    {
        return array(
            'automatic_cleaning' => true,
            'tags' => true,
            'expired_read' => true,
            'priority' => false,
            'infinite_lifetime' => true,
            'get_list' => true
        );
    }

    /**
     * PUBLIC METHOD FOR UNIT TESTING ONLY !
     *
     * Force a cache record to expire
     *
     * @param string $id cache id
     */
    public function ___expire($id)
    {
        $metadatas = $this->_getMetadatas($id);
        if ($metadatas) {
            $metadatas['expire'] = 1;
            $this->_setMetadatas($id, $metadatas);
        }
    }

    /**
     * Get a metadatas record
     *
     * @param  string $id  Cache id
     * @return array|false Associative array of metadatas
     */
    private function _getMetadatas($id)
    {
        if (isset($this->_metadatasArray[$id])) {
            return $this->_metadatasArray[$id];
        } else {
            $metadatas = $this->_loadMetadatas($id);
            if (!$metadatas) {
                return false;
            }
            $this->_setMetadatas($id, $metadatas, false);
            return $metadatas;
        }
    }

    /**
     * Set a metadatas record
     *
     * @param  string $id        Cache id
     * @param  array  $metadatas Associative array of metadatas
     * @param  boolean $save     optional pass false to disable saving to file
     * @return boolean True if no problem
     */
    private function _setMetadatas($id, $metadatas, $save = true)
    {
        if (count($this->_metadatasArray) >= $this->_options['metadatas_array_max_size']) {
            $n = (int) ($this->_options['metadatas_array_max_size'] / 10);
            $this->_metadatasArray = array_slice($this->_metadatasArray, $n);
        }
        if ($save) {
            $result = $this->_saveMetadatas($id, $metadatas);
            if (!$result) {
                return false;
            }
        }
        $this->_metadatasArray[$id] = $metadatas;
        return true;
    }

    /**
     * Drop a metadata record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    private function _delMetadatas($id)
    {
        if (isset($this->_metadatasArray[$id])) {
            unset($this->_metadatasArray[$id]);
        }
        $file = $this->_metadatasFile($id);
        return $this->_remove($file);
    }

    /**
     * Clear the metadatas array
     *
     * @return void
     */
    private function _cleanMetadatas()
    {
        $this->_metadatasArray = array();
    }

    /**
     * Load metadatas from disk
     *
     * @param  string $id Cache id
     * @return array|false Metadatas associative array
     */
    private function _loadMetadatas($id)
    {
        $file = $this->_metadatasFile($id);
        $result = $this->_fileGetContents($file);
        if (!$result) {
            return false;
        }
        $tmp = @unserialize($result);
        return $tmp;
    }

    /**
     * Save metadatas to disk
     *
     * @param  string $id        Cache id
     * @param  array  $metadatas Associative array
     * @return boolean True if no problem
     */
    private function _saveMetadatas($id, $metadatas)
    {
        $file = $this->_metadatasFile($id);
        $result = $this->_filePutContents($file, serialize($metadatas));
        if (!$result) {
            return false;
        }
        return true;
    }

    /**
     * Make and return a file name (with path) for metadatas
     *
     * @param  string $id Cache id
     * @return string Metadatas file name (with path)
     */
    private function _metadatasFile($id)
    {
        $path = $this->_path($id);
        $fileName = $this->_idToFileName('internal-metadatas---' . $id);
        return $path . $fileName;
    }

    /**
     * Check if the given filename is a metadatas one
     *
     * @param  string $fileName File name
     * @return boolean True if it's a metadatas one
     */
    private function _isMetadatasFile($fileName)
    {
        $id = $this->_fileNameToId($fileName);
        if (substr($id, 0, 21) == 'internal-metadatas---') {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Remove a file
     *
     * If we can't remove the file (because of locks or any problem), we will touch
     * the file to invalidate it
     *
     * @param  string $file Complete file path
     * @return boolean True if ok
     */
    private function _remove($file)
    {
        if (!is_file($file)) {
            return false;
        }
        if (!@unlink($file)) {
            # we can't remove the file (because of locks or any problem)
            $this->_log("Zend_Cache_Backend_File::_remove() : we can't remove $file");
            return false;
        }
        return true;
    }

    /**
     * Clean some cache records (private method used for recursive stuff)
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $dir  Directory to clean
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @throws Zend_Cache_Exception
     * @return boolean True if no problem
     */
    private function _clean($dir, $mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        if (!is_dir($dir)) {
            return false;
        }
        $result = true;
        $prefix = $this->_options['file_name_prefix'];
        $glob = @glob($dir . $prefix . '--*');
        if ($glob === false) {
            return true;
        }
        foreach ($glob as $file)  {
            if (is_file($file)) {
                $fileName = basename($file);
                if ($this->_isMetadatasFile($fileName)) {
                    // in CLEANING_MODE_ALL, we drop anything, even remainings old metadatas files
                    if ($mode != Zend_Cache::CLEANING_MODE_ALL) {
                        continue;
                    }
                }
                $id = $this->_fileNameToId($fileName);
                $metadatas = $this->_getMetadatas($id);
                if ($metadatas === FALSE) {
                    $metadatas = array('expire' => 1, 'tags' => array());
                }
                switch ($mode) {
                    case Zend_Cache::CLEANING_MODE_ALL:
                        $res = $this->remove($id);
                        if (!$res) {
                            // in this case only, we accept a problem with the metadatas file drop
                            $res = $this->_remove($file);
                        }
                        $result = $result && $res;
                        break;
                    case Zend_Cache::CLEANING_MODE_OLD:
                        if (time() > $metadatas['expire']) {
                            $result = ($result) && ($this->remove($id));
                        }
                        break;
                    case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
                        $matching = true;
                        foreach ($tags as $tag) {
                            if (!in_array($tag, $metadatas['tags'])) {
                                $matching = false;
                                break;
                            }
                        }
                        if ($matching) {
                            $result = ($result) && ($this->remove($id));
                        }
                        break;
                    case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
                        $matching = false;
                        foreach ($tags as $tag) {
                            if (in_array($tag, $metadatas['tags'])) {
                                $matching = true;
                                break;
                            }
                        }
                        if (!$matching) {
                            $result = ($result) && $this->remove($id);
                        }
                        break;
                    case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                        $matching = false;
                        foreach ($tags as $tag) {
                            if (in_array($tag, $metadatas['tags'])) {
                                $matching = true;
                                break;
                            }
                        }
                        if ($matching) {
                            $result = ($result) && ($this->remove($id));
                        }
                        break;
                    default:
                        Zend_Cache::throwException('Invalid mode for clean() method');
                        break;
                }
            }
            if ((is_dir($file)) and ($this->_options['hashed_directory_level']>0)) {
                // Recursive call
                $result = ($result) && ($this->_clean($file . DIRECTORY_SEPARATOR, $mode, $tags));
                if ($mode=='all') {
                    // if mode=='all', we try to drop the structure too
                    @rmdir($file);
                }
            }
        }
        return $result;
    }
    
    private function _get($dir, $mode, $tags = array())
    {
        if (!is_dir($dir)) {
            return false;
        }
        $result = array();
        $prefix = $this->_options['file_name_prefix'];
        $glob = @glob($dir . $prefix . '--*');
        if ($glob === false) {
            return true;
        }
        foreach ($glob as $file)  {
            if (is_file($file)) {
                $fileName = basename($file);
                $id = $this->_fileNameToId($fileName);
                $metadatas = $this->_getMetadatas($id);
                if ($metadatas === FALSE) {
                    continue;
                }
                if (time() > $metadatas['expire']) {
                    continue;
                }
                switch ($mode) {
                    case 'ids':
                        $result[] = $id;
                        break;
                    case 'tags':
                        $result = array_unique(array_merge($result, $metadatas['tags']));
                        break;
                    case 'matching':
                        $matching = true;
                        foreach ($tags as $tag) {
                            if (!in_array($tag, $metadatas['tags'])) {
                                $matching = false;
                                break;
                            }
                        }
                        if ($matching) {
                            $result[] = $id;
                        }
                        break;
                    case 'notMatching':
                        $matching = false;
                        foreach ($tags as $tag) {
                            if (in_array($tag, $metadatas['tags'])) {
                                $matching = true;
                                break;
                            }
                        }
                        if (!$matching) {
                            $result[] = $id;
                        }
                        break;
                    case 'matchingAny':
                        $matching = false;
                        foreach ($tags as $tag) {
                            if (in_array($tag, $metadatas['tags'])) {
                                $matching = true;
                                break;
                            }
                        }
                        if ($matching) {
                            $result[] = $id;
                        }
                        break;
                    default:
                        Zend_Cache::throwException('Invalid mode for _get() method');
                        break;
                }
            }
            if ((is_dir($file)) and ($this->_options['hashed_directory_level']>0)) {
                // Recursive call
                $result = array_unique(array_merge($result, $this->_get($file . DIRECTORY_SEPARATOR, $mode, $tags)));
            }
        }
        return array_unique($result);
    }

    /**
     * Compute & return the expire time
     *
     * @return int expire time (unix timestamp)
     */
    private function _expireTime($lifetime)
    {
        if (is_null($lifetime)) {
            return 9999999999;
        }
        return time() + $lifetime;
    }

    /**
     * Make a control key with the string containing datas
     *
     * @param  string $data        Data
     * @param  string $controlType Type of control 'md5', 'crc32' or 'strlen'
     * @throws Zend_Cache_Exception
     * @return string Control key
     */
    private function _hash($data, $controlType)
    {
        switch ($controlType) {
        case 'md5':
            return md5($data);
        case 'crc32':
            return crc32($data);
        case 'strlen':
            return strlen($data);
        case 'adler32':
            return hash('adler32', $data);
        default:
            Zend_Cache::throwException("Incorrect hash function : $controlType");
        }
    }

    /**
     * Transform a cache id into a file name and return it
     *
     * @param  string $id Cache id
     * @return string File name
     */
    private function _idToFileName($id)
    {
        $prefix = $this->_options['file_name_prefix'];
        $result = $prefix . '---' . $id;
        return $result;
    }

    /**
     * Make and return a file name (with path)
     *
     * @param  string $id Cache id
     * @return string File name (with path)
     */
    private function _file($id)
    {
        $path = $this->_path($id);
        $fileName = $this->_idToFileName($id);
        return $path . $fileName;
    }

    /**
     * Return the complete directory path of a filename (including hashedDirectoryStructure)
     *
     * @param  string $id Cache id
     * @param  boolean $parts if true, returns array of directory parts instead of single string
     * @return string Complete directory path
     */
    private function _path($id, $parts = false)
    {
        $partsArray = array();
        $root = $this->_options['cache_dir'];
        $prefix = $this->_options['file_name_prefix'];
        if ($this->_options['hashed_directory_level']>0) {
            $hash = hash('adler32', $id);
            for ($i=0 ; $i < $this->_options['hashed_directory_level'] ; $i++) {
                $root = $root . $prefix . '--' . substr($hash, 0, $i + 1) . DIRECTORY_SEPARATOR;
                $partsArray[] = $root;
            }
        }
        if ($parts) {
            return $partsArray;
        } else {
            return $root;
        }
    }
    
    /**
     * Make the directory strucuture for the given id
     * 
     * @param string $id cache id
     * @return boolean true
     */
    private function _recursiveMkdirAndChmod($id)
    {
        if ($this->_options['hashed_directory_level'] <=0) {
            return true;
        }
        $partsArray = $this->_path($id, true);
        foreach ($partsArray as $part) {
        	if (!is_dir($part)) {
            	@mkdir($part, $this->_options['hashed_directory_umask']);
        	    @chmod($part, $this->_options['hashed_directory_umask']); // see #ZF-320 (this line is required in some configurations)         
        	}
        }
        return true;
    }
   
    /**
     * Test if the given cache id is available (and still valid as a cache record)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return boolean|mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    private function _test($id, $doNotTestCacheValidity)
    {
        $metadatas = $this->_getMetadatas($id);
        if (!$metadatas) {
            return false;
        }
        if ($doNotTestCacheValidity || (time() <= $metadatas['expire'])) {
            return $metadatas['mtime'];
        }
        return false;
    }

    /**
     * Return the file content of the given file
     *
     * @param  string $file File complete path
     * @return string File content (or false if problem)
     */
    private function _fileGetContents($file)
    {
        $result = false;
        if (!is_file($file)) {
            return false;
        }
        if (function_exists('get_magic_quotes_runtime')) {
            $mqr = @get_magic_quotes_runtime();
            @set_magic_quotes_runtime(0);
        }
        $f = @fopen($file, 'rb');
        if ($f) {
            if ($this->_options['file_locking']) @flock($f, LOCK_SH);
            $result = stream_get_contents($f);
            if ($this->_options['file_locking']) @flock($f, LOCK_UN);
            @fclose($f);
        }
        if (function_exists('set_magic_quotes_runtime')) {
            @set_magic_quotes_runtime($mqr);
        }
        return $result;
    }

    /**
     * Put the given string into the given file
     *
     * @param  string $file   File complete path
     * @param  string $string String to put in file
     * @return boolean true if no problem
     */
    private function _filePutContents($file, $string)
    {
        $result = false;
        $f = @fopen($file, 'ab+');
        if ($f) {
            if ($this->_options['file_locking']) @flock($f, LOCK_EX);
            fseek($f, 0);
            ftruncate($f, 0);
            $tmp = @fwrite($f, $string);
            if (!($tmp === FALSE)) {
                $result = true;
            }
            @fclose($f);
        }
        @chmod($file, $this->_options['cache_file_umask']);
        return $result;
    }

    /**
     * Transform a file name into cache id and return it
     *
     * @param  string $fileName File name
     * @return string Cache id
     */
    private function _fileNameToId($fileName)
    {
        $prefix = $this->_options['file_name_prefix'];
        return preg_replace('~^' . $prefix . '---(.*)$~', '$1', $fileName);
    }

}
PKpG[����.�.Cache/Backend/ZendPlatform.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend.php';

/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/Interface.php';


/**
 * Impementation of Zend Cache Backend using the Zend Platform (Output Content Caching)
 *
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_ZendPlatform extends Zend_Cache_Backend implements Zend_Cache_Backend_Interface
{
    /**
     * internal ZP prefix
     */
    const TAGS_PREFIX = "internal_ZPtag:";

    /**
     * Constructor
     * Validate that the Zend Platform is loaded and licensed
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        if (!function_exists('accelerator_license_info')) {
            Zend_Cache::throwException('The Zend Platform extension must be loaded for using this backend !');
        }
        if (!function_exists('accelerator_get_configuration')) {
            $licenseInfo = accelerator_license_info();
            Zend_Cache::throwException('The Zend Platform extension is not loaded correctly: '.$licenseInfo['failure_reason']);
        }
        $accConf = accelerator_get_configuration();
        if (@!$accConf['output_cache_licensed']) {
            Zend_Cache::throwException('The Zend Platform extension does not have the proper license to use content caching features');
        }
        if (@!$accConf['output_cache_enabled']) {
            Zend_Cache::throwException('The Zend Platform content caching feature must be enabled for using this backend, set the \'zend_accelerator.output_cache_enabled\' directive to On !');
        }
        if (!is_writable($accConf['output_cache_dir'])) {
            Zend_Cache::throwException('The cache copies directory \''. ini_get('zend_accelerator.output_cache_dir') .'\' must be writable !');
        }
        parent:: __construct($options);
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string Cached data (or false)
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        // doNotTestCacheValidity implemented by giving zero lifetime to the cache
        if ($doNotTestCacheValidity) {
            $lifetime = 0;
        } else {
            $lifetime = $this->_directives['lifetime'];
        }
        $res = output_cache_get($id, $lifetime);
        if($res) {
            return $res[0];
        } else {
            return false;
        }
    }


    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id Cache id
     * @return mixed|false false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $result = output_cache_get($id, $this->_directives['lifetime']);
        if ($result) {
            return $result[1];
        }
        return false;
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data             Data to cache
     * @param  string $id               Cache id
     * @param  array  $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        if (!($specificLifetime === false)) {
            $this->_log("Zend_Cache_Backend_ZendPlatform::save() : non false specifc lifetime is unsuported for this backend");
        }

        $lifetime = $this->_directives['lifetime'];
        $result1  = output_cache_put($id, array($data, time()));
        $result2  = (count($tags) == 0);

        foreach ($tags as $tag) {
            $tagid = self::TAGS_PREFIX.$tag;
            $old_tags = output_cache_get($tagid, $lifetime);
            if ($old_tags === false) {
                $old_tags = array();
            }
            $old_tags[$id] = $id;
            output_cache_remove_key($tagid);
            $result2 = output_cache_put($tagid, $old_tags);
        }

        return $result1 && $result2;
    }


    /**
     * Remove a cache record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id)
    {
        return output_cache_remove_key($id);
    }


    /**
     * Clean some cache records
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     *                                               This mode is not supported in this backend
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => unsupported
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @throws Zend_Cache_Exception
     * @return boolean True if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        switch ($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
            case Zend_Cache::CLEANING_MODE_OLD:
                $cache_dir = ini_get('zend_accelerator.output_cache_dir');
                if (!$cache_dir) {
                    return false;
                }
                $cache_dir .= '/.php_cache_api/';
                return $this->_clean($cache_dir, $mode);
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
                $idlist = null;
                foreach ($tags as $tag) {
                    $next_idlist = output_cache_get(self::TAGS_PREFIX.$tag, $this->_directives['lifetime']);
                    if ($idlist) {
                        $idlist = array_intersect_assoc($idlist, $next_idlist);
                    } else {
                        $idlist = $next_idlist;
                    }
                    if (count($idlist) == 0) {
                        // if ID list is already empty - we may skip checking other IDs
                        $idlist = null;
                        break;
                    }
                }
                if ($idlist) {
                    foreach ($idlist as $id) {
                        output_cache_remove_key($id);
                    }
                }
                return true;
                break;
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
                $this->_log("Zend_Cache_Backend_ZendPlatform::clean() : CLEANING_MODE_NOT_MATCHING_TAG is not supported by the Zend Platform backend");
                return false;
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $idlist = null;
                foreach ($tags as $tag) {
                    $next_idlist = output_cache_get(self::TAGS_PREFIX.$tag, $this->_directives['lifetime']);
                    if ($idlist) {
                        $idlist = array_merge_recursive($idlist, $next_idlist);
                    } else {
                        $idlist = $next_idlist;
                    }
                    if (count($idlist) == 0) {
                        // if ID list is already empty - we may skip checking other IDs
                        $idlist = null;
                        break;
                    }
                }
                if ($idlist) {
                    foreach ($idlist as $id) {
                        output_cache_remove_key($id);
                    }
                }
                return true;
                break;
            default:
                Zend_Cache::throwException('Invalid mode for clean() method');
                break;
        }
    }

    /**
     * Clean a directory and recursivly go over it's subdirectories
     *
     * Remove all the cached files that need to be cleaned (according to mode and files mtime)
     *
     * @param  string $dir  Path of directory ot clean
     * @param  string $mode The same parameter as in Zend_Cache_Backend_ZendPlatform::clean()
     * @return boolean True if ok
     */
    private function _clean($dir, $mode)
    {
        $d = @dir($dir);
        if (!$d) {
            return false;
        }
        $result = true;
        while (false !== ($file = $d->read())) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            $file = $d->path . $file;
            if (is_dir($file)) {
                $result = ($this->_clean($file .'/', $mode)) && ($result);
            } else {
                if ($mode == Zend_Cache::CLEANING_MODE_ALL) {
                    $result = ($this->_remove($file)) && ($result);
                } else if ($mode == Zend_Cache::CLEANING_MODE_OLD) {
                    // Files older than lifetime get deleted from cache
                    if (!is_null($this->_directives['lifetime'])) {
                        if ((time() - @filemtime($file)) > $this->_directives['lifetime']) {
                            $result = ($this->_remove($file)) && ($result);
                        }
                    }
                }
            }
        }
        $d->close();
        return $result;
    }

    /**
     * Remove a file
     *
     * If we can't remove the file (because of locks or any problem), we will touch
     * the file to invalidate it
     *
     * @param  string $file Complete file path
     * @return boolean True if ok
     */
    private function _remove($file)
    {
        if (!@unlink($file)) {
            # If we can't remove the file (because of locks or any problem), we will touch
            # the file to invalidate it
            $this->_log("Zend_Cache_Backend_ZendPlatform::_remove() : we can't remove $file => we are going to try to invalidate it");
            if (is_null($this->_directives['lifetime'])) {
                return false;
            }
            if (!file_exists($file)) {
                return false;
            }
            return @touch($file, time() - 2*abs($this->_directives['lifetime']));
        }
        return true;
    }

}
PKpG[r��#�H�HCache/Backend/TwoLevels.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_ExtendedInterface
 */
require_once 'Zend/Cache/Backend/ExtendedInterface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Cache_Backend_TwoLevels extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
{
    /**
     * Available options
     *
     * =====> (string) slow_backend :
     * - Slow backend name 
     * - Must implement the Zend_Cache_Backend_ExtendedInterface
     * - Should provide a big storage
     *
     * =====> (string) fast_backend :
     * - Flow backend name 
     * - Must implement the Zend_Cache_Backend_ExtendedInterface
     * - Must be much faster than slow_backend
     *
     * =====> (array) slow_backend_options :
     * - Slow backend options (see corresponding backend)
     *
     * =====> (array) fast_backend_options :
     * - Fast backend options (see corresponding backend)
     * 
     * =====> (int) stats_update_factor :
     * - Disable / Tune the computation of the fast backend filling percentage
     * - When saving a record into cache :
     *     1               => systematic computation of the fast backend filling percentage
     *     x (integer) > 1 => computation of the fast backend filling percentage randomly 1 times on x cache write
     * 
     * =====> (boolean) slow_backend_custom_naming :
     * =====> (boolean) fast_backend_custom_naming :
     * =====> (boolean) slow_backend_autoload :
     * =====> (boolean) fast_backend_autoload :
     * - See Zend_Cache::factory() method 
     * 
     * =====> (boolean) auto_refresh_fast_cache
     * - If true, auto refresh the fast cache when a cache record is hit
     * 
     * @var array available options
     */
    protected $_options = array(
        'slow_backend' => 'File',
        'fast_backend' => 'Apc',
        'slow_backend_options' => array(),
        'fast_backend_options' => array(),
        'stats_update_factor' => 10,
        'slow_backend_custom_naming' => false,
        'fast_backend_custom_naming' => false,
        'slow_backend_autoload' => false,
        'fast_backend_autoload' => false,
        'auto_refresh_fast_cache' => true
    );
    
    /**
     * Slow Backend
     *
     * @var Zend_Cache_Backend
     */
    private $_slowBackend;
    
    /**
     * Fast Backend
     *
     * @var Zend_Cache_Backend
     */
    private $_fastBackend;
    
    /**
     * Cache for the fast backend filling percentage
     * 
     * @var int
     */
    private $_fastBackendFillingPercentage = null;
    
    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        parent::__construct($options);
        if (is_null($this->_options['slow_backend'])) {
            Zend_Cache::throwException('slow_backend option has to set');
        }
        if (is_null($this->_options['fast_backend'])) {
            Zend_Cache::throwException('fast_backend option has to set');
        }      
        $this->_slowBackend = Zend_Cache::_makeBackend($this->_options['slow_backend'], $this->_options['slow_backend_options'], $this->_options['slow_backend_custom_naming'], $this->_options['slow_backend_autoload']);
        $this->_fastBackend = Zend_Cache::_makeBackend($this->_options['fast_backend'], $this->_options['fast_backend_options'], $this->_options['fast_backend_custom_naming'], $this->_options['fast_backend_autoload']);       
        if (!in_array('Zend_Cache_Backend_ExtendedInterface', class_implements($this->_slowBackend))) {
            Zend_Cache::throwException('slow_backend must implement the Zend_Cache_Backend_ExtendedInterface interface');
        }
        if (!in_array('Zend_Cache_Backend_ExtendedInterface', class_implements($this->_fastBackend))) {
            Zend_Cache::throwException('slow_backend must implement the Zend_Cache_Backend_ExtendedInterface interface');
        }       
        $this->_slowBackend->setDirectives($this->_directives);
        $this->_fastBackend->setDirectives($this->_directives);
    }
    
    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id cache id
     * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $fastTest = $this->_fastBackend->test($id);
        if ($fastTest) {
            return $fastTest;
        } else {
            return $this->_slowBackend->test($id);
        }
    }
    
    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data            Datas to cache
     * @param  string $id              Cache id
     * @param  array $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int   $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @param  int   $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends       
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false, $priority = 8)
    {
        $usage = $this->_getFastFillingPercentage('saving');
        $boolFast = true;
        $lifetime = $this->getLifetime($specificLifetime);
        $preparedData = $this->_prepareData($data, $lifetime, $priority);
        if (($priority > 0) && (10 * $priority >= $usage)) {
            $fastLifetime = $this->_getFastLifetime($lifetime, $priority);
            $boolFast = $this->_fastBackend->save($preparedData, $id, array(), $fastLifetime);
        }
        $boolSlow = $this->_slowBackend->save($preparedData, $id, $tags, $lifetime);
        return ($boolFast && $boolSlow);
    }
       
    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * Note : return value is always "string" (unserialization is done by the core not by the backend)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string|false cached datas
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        $res = $this->_fastBackend->load($id, $doNotTestCacheValidity);
        if ($res === false) {
            $res = $this->_slowBackend->load($id, $doNotTestCacheValidity);
            if ($res === false) {
                // there is no cache at all for this id
                return false;
            }
        }
        $array = unserialize($res);
        // maybe, we have to refresh the fast cache ?
        if ($this->_options['auto_refresh_fast_cache']) {
            if ($array['priority'] == 10) {
                // no need to refresh the fast cache with priority = 10
                return $array['data'];
            }
            $newFastLifetime = $this->_getFastLifetime($array['lifetime'], $array['priority'], time() - $array['expire']);
            // we have the time to refresh the fast cache
            $usage = $this->_getFastFillingPercentage('loading');
            if (($array['priority'] > 0) && (10 * $array['priority'] >= $usage)) {
                // we can refresh the fast cache
                $preparedData = $this->_prepareData($array['data'], $array['lifetime'], $array['priority']);                      
                $this->_fastBackend->save($preparedData, $id, array(), $newFastLifetime);
            }
        }
        return $array['data'];
    }
    
    /**
     * Remove a cache record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id)
    {
        $this->_fastBackend->remove($id);
        return $this->_slowBackend->remove($id);
    }
       
    /**
     * Clean some cache records
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @throws Zend_Cache_Exception
     * @return boolean true if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array()) 
    {
        switch($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
                $boolFast = $this->_fastBackend->clean(Zend_Cache::CLEANING_MODE_ALL);
                $boolSlow = $this->_slowBackend->clean(Zend_Cache::CLEANING_MODE_ALL);
                return $boolFast && $boolSlow;
                break;
            case Zend_Cache::CLEANING_MODE_OLD:
                return $this->_slowBackend->clean(Zend_Cache::CLEANING_MODE_OLD);
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
                $ids = $this->_slowBackend->getIdsMatchingTags($tags);
                $res = true;
                foreach ($ids as $id) {
                    $res = $res && $this->_slowBackend->remove($id) && $this->_fastBackend->remove($id);
                }
                return $res;
                break;
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
                $ids = $this->_slowBackend->getIdsNotMatchingTags($tags);
                $res = true;
                foreach ($ids as $id) {
                    $res = $res && $this->_slowBackend->remove($id) && $this->_fastBackend->remove($id);
                }
                return $res;
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $ids = $this->_slowBackend->getIdsMatchingAnyTags($tags);
                $res = true;
                foreach ($ids as $id) {
                    $res = $res && $this->_slowBackend->remove($id) && $this->_fastBackend->remove($id);
                }
                return $res;
                break;
            default:
                Zend_Cache::throwException('Invalid mode for clean() method');
                break;
        }
    }
    
    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        return $this->_slowBackend->getIds();
    }
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        return $this->_slowBackend->getTags();
    }
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        return $this->_slowBackend->getIdsMatchingTags($tags);
    }

    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array())
    {
        return $this->_slowBackend->getIdsNotMatchingTags($tags);
    }

    /**
     * Return an array of stored cache ids which match any given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array())
    {
        return $this->_slowBackend->getIdsMatchingAnyTags($tags);
    }
    
    
    /**
     * Return the filling percentage of the backend storage
     *
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        return $this->_slowBackend->getFillingPercentage();
    }

    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     * 
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id)
    {
        return $this->_slowBackend->getMetadatas($id);
    }
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        return $this->_slowBackend->touch($id, $extraLifetime);
    }
    
    /**
     * Return an associative array of capabilities (booleans) of the backend
     * 
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     * 
     * @return array associative of with capabilities
     */
    public function getCapabilities()
    {
        $slowBackendCapabilities = $this->_slowBackend->getCapabilities();
        return array(
            'automatic_cleaning' => $slowBackendCapabilities['automatic_cleaning'],
            'tags' => $slowBackendCapabilities['tags'],
            'expired_read' => $slowBackendCapabilities['expired_read'],
            'priority' => $slowBackendCapabilities['priority'],
            'infinite_lifetime' => $slowBackendCapabilities['infinite_lifetime'],
            'get_list' => $slowBackendCapabilities['get_list']
        );
    }
    
    /**
     * Prepare a serialized array to store datas and metadatas informations
     *
     * @param string $data data to store
     * @param int $lifetime original lifetime
     * @param int $priority priority
     * @return string serialize array to store into cache
     */
    private function _prepareData($data, $lifetime, $priority)
    {
        $lt = $lifetime;
        if (is_null($lt)) {
            $lt = 9999999999;
        }
        return serialize(array(
            'data' => $data,
            'lifetime' => $lifetime,
            'expire' => time() + $lt,
            'priority' => $priority
        ));
    }
    
    /**
     * Compute and return the lifetime for the fast backend
     *
     * @param int $lifetime original lifetime
     * @param int $priority priority
     * @param int $maxLifetime maximum lifetime
     * @return int lifetime for the fast backend
     */
    private function _getFastLifetime($lifetime, $priority, $maxLifetime = null)
    {
        if (is_null($lifetime)) {
            // if lifetime is null, we have an infinite lifetime
            // we need to use arbitrary lifetimes
            $fastLifetime = (int) (2592000 / (11 - $priority));
        } else {
            $fastLifetime = (int) ($lifetime / (11 - $priority));
        }
        if (!is_null($maxLifetime) && ($maxLifetime >= 0)) {
            if ($fastLifetime > $maxLifetime) {
                return $maxLifetime;
            }
        }
        return $fastLifetime;
    }
    
    /**
     * PUBLIC METHOD FOR UNIT TESTING ONLY !
     *
     * Force a cache record to expire
     *
     * @param string $id cache id
     */
    public function ___expire($id)
    {
        $this->_fastBackend->remove($id);
        $this->_slowBackend->___expire($id);   
    }   
    
    private function _getFastFillingPercentage($mode)
    {
        
        if ($mode == 'saving') {
            // mode saving
            if (is_null($this->_fastBackendFillingPercentage)) {
                $this->_fastBackendFillingPercentage = $this->_fastBackend->getFillingPercentage();
            } else {
                $rand = rand(1, $this->_options['stats_update_factor']);
                if ($rand == 1) {
                    // we force a refresh
                    $this->_fastBackendFillingPercentage = $this->_fastBackend->getFillingPercentage();
                }
            }
        } else {
            // mode loading
            // we compute the percentage only if it's not available in cache
            if (is_null($this->_fastBackendFillingPercentage)) {
                $this->_fastBackendFillingPercentage = $this->_fastBackend->getFillingPercentage();
            }
        }
        return $this->_fastBackendFillingPercentage;
    }
    
}
PKpG[��v$�Y�YCache/Backend/Sqlite.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/ExtendedInterface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';

/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_Sqlite extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
{
    /**
     * Available options
     *
     * =====> (string) cache_db_complete_path :
     * - the complete path (filename included) of the SQLITE database
     *
     * ====> (int) automatic_vacuum_factor :
     * - Disable / Tune the automatic vacuum process
     * - The automatic vacuum process defragment the database file (and make it smaller)
     *   when a clean() or delete() is called
     *     0               => no automatic vacuum
     *     1               => systematic vacuum (when delete() or clean() methods are called)
     *     x (integer) > 1 => automatic vacuum randomly 1 times on x clean() or delete()
     *
     * @var array Available options
     */
    protected $_options = array(
        'cache_db_complete_path' => null,
        'automatic_vacuum_factor' => 10
    );

    /**
     * DB ressource
     *
     * @var mixed $_db
     */
    private $_db = null;

    /**
     * Boolean to store if the structure has benn checked or not
     *
     * @var boolean $_structureChecked
     */
    private $_structureChecked = false;

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        parent::__construct($options);
        if (is_null($this->_options['cache_db_complete_path'])) {
            Zend_Cache::throwException('cache_db_complete_path option has to set');
        }
        if (!extension_loaded('sqlite')) {
            Zend_Cache::throwException("Cannot use SQLite storage because the 'sqlite' extension is not loaded in the current PHP environment");
        }
        $this->_getConnection();
    }

    /**
     * Destructor
     *
     * @return void
     */
    public function __destruct()
    {
        @sqlite_close($this->_getConnection());
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string|false Cached datas
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        $this->_checkAndBuildStructure();
        $sql = "SELECT content FROM cache WHERE id='$id'";
        if (!$doNotTestCacheValidity) {
            $sql = $sql . " AND (expire=0 OR expire>" . time() . ')';
        }
        $result = $this->_query($sql);
        $row = @sqlite_fetch_array($result);
        if ($row) {
            return $row['content'];
        }
        return false;
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param string $id Cache id
     * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $this->_checkAndBuildStructure();
        $sql = "SELECT lastModified FROM cache WHERE id='$id' AND (expire=0 OR expire>" . time() . ')';
        $result = $this->_query($sql);
        $row = @sqlite_fetch_array($result);
        if ($row) {
            return ((int) $row['lastModified']);
        }
        return false;
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data             Datas to cache
     * @param  string $id               Cache id
     * @param  array  $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @throws Zend_Cache_Exception
     * @return boolean True if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        $this->_checkAndBuildStructure();
        $lifetime = $this->getLifetime($specificLifetime);
        $data = @sqlite_escape_string($data);
        $mktime = time();
        if (is_null($lifetime)) {
            $expire = 0;
        } else {
            $expire = $mktime + $lifetime;
        }
        $this->_query("DELETE FROM cache WHERE id='$id'");
        $sql = "INSERT INTO cache (id, content, lastModified, expire) VALUES ('$id', '$data', $mktime, $expire)";
        $res = $this->_query($sql);
        if (!$res) {
            $this->_log("Zend_Cache_Backend_Sqlite::save() : impossible to store the cache id=$id");
            return false;
        }
        $res = true;
        foreach ($tags as $tag) {
            $res = $res && $this->_registerTag($id, $tag);
        }
        return $res;
    }

    /**
     * Remove a cache record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id)
    {
        $this->_checkAndBuildStructure();
        $res = $this->_query("SELECT COUNT(*) AS nbr FROM cache WHERE id='$id'");
        $result1 = @sqlite_fetch_single($res);
        $result2 = $this->_query("DELETE FROM cache WHERE id='$id'");
        $result3 = $this->_query("DELETE FROM tag WHERE id='$id'");
        $this->_automaticVacuum();
        return ($result1 && $result2 && $result3);
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @return boolean True if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        $this->_checkAndBuildStructure();
        $return = $this->_clean($mode, $tags);
        $this->_automaticVacuum();
        return $return;
    }
    
    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        $this->_checkAndBuildStructure();
        $res = $this->_query("SELECT id FROM cache WHERE (expire=0 OR expire>" . time() . ")");
        $result = array();
        while ($id = @sqlite_fetch_single($res)) {
            $result[] = $id;
        }
        return $result;
    }
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        $this->_checkAndBuildStructure();
        $res = $this->_query("SELECT DISTINCT(name) AS name FROM tag");
        $result = array();
        while ($id = @sqlite_fetch_single($res)) {
            $result[] = $id;
        }
        return $result;
    }
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        $first = true;
        $ids = array();
        foreach ($tags as $tag) {
            $res = $this->_query("SELECT DISTINCT(id) AS id FROM tag WHERE name='$tag'");
            if (!$res) {
                return array();
            }
            $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
            $ids2 = array();
            foreach ($rows as $row) {
                $ids2[] = $row['id'];
            }
            if ($first) {
                $ids = $ids2;
                $first = false;
            } else {
                $ids = array_intersect($ids, $ids2);
            }
        }
        $result = array();
        foreach ($ids as $id) {
            $result[] = $id;
        }
        return $result;
    }

    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array())
    {
        $res = $this->_query("SELECT id FROM cache");
        $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
        $result = array();
        foreach ($rows as $row) {
            $id = $row['id'];
            $matching = false;
            foreach ($tags as $tag) {
                $res = $this->_query("SELECT COUNT(*) AS nbr FROM tag WHERE name='$tag' AND id='$id'");
                if (!$res) {
                    return array();
                }
                $nbr = (int) @sqlite_fetch_single($res);
                if ($nbr > 0) {
                    $matching = true;
                }
            }
            if (!$matching) {
                $result[] = $id;
            }
        }
        return $result;
    }
    
    /**
     * Return an array of stored cache ids which match any given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array())
    {
        $first = true;
        $ids = array();
        foreach ($tags as $tag) {
            $res = $this->_query("SELECT DISTINCT(id) AS id FROM tag WHERE name='$tag'");
            if (!$res) {
                return array();
            }
            $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
            $ids2 = array();
            foreach ($rows as $row) {
                $ids2[] = $row['id'];
            }
            if ($first) {
                $ids = $ids2;
                $first = false;
            } else {
                $ids = array_merge($ids, $ids2);
            }
        }
        $result = array();
        foreach ($ids as $id) {
            $result[] = $id;
        }
        return $result;
    }

    /**
     * Return the filling percentage of the backend storage
     *
     * @throws Zend_Cache_Exception
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        $dir = dirname($this->_options['cache_db_complete_path']);
        $free = disk_free_space($dir);
        $total = disk_total_space($dir);
        if ($total == 0) {
            Zend_Cache::throwException('can\'t get disk_total_space');
        } else {
            if ($free >= $total) {
                return 100;
            }
            return ((int) (100. * ($total - $free) / $total));
        }
    }

    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     * 
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id)
    {
        $tags = array();
        $res = $this->_query("SELECT name FROM tag WHERE id='$id'");
        if ($res) {
            $rows = @sqlite_fetch_all($res, SQLITE_ASSOC);
            foreach ($rows as $row) {
                $tags[] = $row['name'];
            }
        }
        $this->_query('CREATE TABLE cache (id TEXT PRIMARY KEY, content BLOB, lastModified INTEGER, expire INTEGER)');
        $res = $this->_query("SELECT lastModified,expire FROM cache WHERE id='$id'");
        if (!$res) {
            return false;
        }
        $row = @sqlite_fetch_array($res, SQLITE_ASSOC);
        return array(
            'tags' => $tags,
            'mtime' => $row['lastModified'],
            'expire' => $row['expire']
        );
    }
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        $sql = "SELECT expire FROM cache WHERE id='$id' AND (expire=0 OR expire>" . time() . ')';
        $res = $this->_query($sql);
        if (!$res) {
            return false;
        }
        $expire = @sqlite_fetch_single($res);
        $newExpire = $expire + $extraLifetime;
        $res = $this->_query("UPDATE cache SET lastModified=" . time() . ", expire=$newExpire WHERE id='$id'");
        if ($res) {
            return true;
        } else {
            return false;
        }
    }
    
    /**
     * Return an associative array of capabilities (booleans) of the backend
     * 
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     * 
     * @return array associative of with capabilities
     */
    public function getCapabilities()
    {
        return array(
            'automatic_cleaning' => true,
            'tags' => true,
            'expired_read' => true,
            'priority' => false,
            'infinite_lifetime' => true,
            'get_list' => true
        );
    }

    /**
     * PUBLIC METHOD FOR UNIT TESTING ONLY !
     *
     * Force a cache record to expire
     *
     * @param string $id Cache id
     */
    public function ___expire($id)
    {
        $time = time() - 1;
        $this->_query("UPDATE cache SET lastModified=$time, expire=$time WHERE id='$id'");
    }

    /**
     * Return the connection resource
     *
     * If we are not connected, the connection is made
     *
     * @throws Zend_Cache_Exception
     * @return resource Connection resource
     */
    private function _getConnection()
    {
        if (is_resource($this->_db)) {
            return $this->_db;
        } else {
            $this->_db = @sqlite_open($this->_options['cache_db_complete_path']);
            if (!(is_resource($this->_db))) {
                Zend_Cache::throwException("Impossible to open " . $this->_options['cache_db_complete_path'] . " cache DB file");
            }
            return $this->_db;
        }
    }

    /**
     * Execute an SQL query silently
     *
     * @param string $query SQL query
     * @return mixed|false query results
     */
    private function _query($query)
    {
        $db = $this->_getConnection();
        if (is_resource($db)) {
            $res = @sqlite_query($db, $query);
            if ($res === false) {
                return false;
            } else {
                return $res;
            }
        }
        return false;
    }

    /**
     * Deal with the automatic vacuum process
     *
     * @return void
     */
    private function _automaticVacuum()
    {
        if ($this->_options['automatic_vacuum_factor'] > 0) {
            $rand = rand(1, $this->_options['automatic_vacuum_factor']);
            if ($rand == 1) {
                $this->_query('VACUUM');
                @sqlite_close($this->_getConnection());
            }
        }
    }

    /**
     * Register a cache id with the given tag
     *
     * @param  string $id  Cache id
     * @param  string $tag Tag
     * @return boolean True if no problem
     */
    private function _registerTag($id, $tag) {
        $res = $this->_query("DELETE FROM TAG WHERE name='$tag' AND id='$id'");
        $res = $this->_query("INSERT INTO tag (name, id) VALUES ('$tag', '$id')");
        if (!$res) {
            $this->_log("Zend_Cache_Backend_Sqlite::_registerTag() : impossible to register tag=$tag on id=$id");
            return false;
        }
        return true;
    }

    /**
     * Build the database structure
     *
     * @return false
     */
    private function _buildStructure()
    {
        $this->_query('DROP INDEX tag_id_index');
        $this->_query('DROP INDEX tag_name_index');
        $this->_query('DROP INDEX cache_id_expire_index');
        $this->_query('DROP TABLE version');
        $this->_query('DROP TABLE cache');
        $this->_query('DROP TABLE tag');
        $this->_query('CREATE TABLE version (num INTEGER PRIMARY KEY)');
        $this->_query('CREATE TABLE cache (id TEXT PRIMARY KEY, content BLOB, lastModified INTEGER, expire INTEGER)');
        $this->_query('CREATE TABLE tag (name TEXT, id TEXT)');
        $this->_query('CREATE INDEX tag_id_index ON tag(id)');
        $this->_query('CREATE INDEX tag_name_index ON tag(name)');
        $this->_query('CREATE INDEX cache_id_expire_index ON cache(id, expire)');
        $this->_query('INSERT INTO version (num) VALUES (1)');
    }

    /**
     * Check if the database structure is ok (with the good version)
     *
     * @return boolean True if ok
     */
    private function _checkStructureVersion()
    {
        $result = $this->_query("SELECT num FROM version");
        if (!$result) return false;
        $row = @sqlite_fetch_array($result);
        if (!$row) {
            return false;
        }
        if (((int) $row['num']) != 1) {
            // old cache structure
            $this->_log('Zend_Cache_Backend_Sqlite::_checkStructureVersion() : old cache structure version detected => the cache is going to be dropped');
            return false;
        }
        return true;
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @return boolean True if no problem
     */
    private function _clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        switch ($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
                $res1 = $this->_query('DELETE FROM cache');
                $res2 = $this->_query('DELETE FROM tag');
                return $res1 && $res2;
                break;
            case Zend_Cache::CLEANING_MODE_OLD:
                $mktime = time();
                $res1 = $this->_query("DELETE FROM tag WHERE id IN (SELECT id FROM cache WHERE expire>0 AND expire<=$mktime)");
                $res2 = $this->_query("DELETE FROM cache WHERE expire>0 AND expire<=$mktime");
                return $res1 && $res2;
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
                $ids = $this->getIdsMatchingTags($tags);
                $result = true;
                foreach ($ids as $id) {
                    $result = $result && ($this->remove($id));
                }
                return $result;
                break;
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
                $ids = $this->getIdsNotMatchingTags($tags);
                $result = true;
                foreach ($ids as $id) {
                    $result = $result && ($this->remove($id));
                }
                return $result;
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $ids = $this->getIdsMatchingAnyTags($tags);
                $result = true;
                foreach ($ids as $id) {
                    $result = $result && ($this->remove($id));
                }
                return $result;
                break;
            default:
                break;
        }
        return false;
    }

    /**
     * Check if the database structure is ok (with the good version), if no : build it
     *
     * @throws Zend_Cache_Exception
     * @return boolean True if ok
     */
    private function _checkAndBuildStructure()
    {
        if (!($this->_structureChecked)) {
            if (!$this->_checkStructureVersion()) {
                $this->_buildStructure();
                if (!$this->_checkStructureVersion()) {
                    Zend_Cache::throwException("Impossible to build cache structure in " . $this->_options['cache_db_complete_path']);
                }
            }
            $this->_structureChecked = true;
        }
        return true;
    }

}
PKpG[���k==Cache/Backend/Memcached.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/ExtendedInterface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_Memcached extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
{
    /**
     * Default Values
     */
    const DEFAULT_HOST = '127.0.0.1';
    const DEFAULT_PORT =  11211;
    const DEFAULT_PERSISTENT = true;
    const DEFAULT_WEIGHT  = 1;
    const DEFAULT_TIMEOUT = 5;//Hypothesis
    const DEFAULT_RETRY_INTERVAL = 15;
    const DEFAULT_STATUS = true;

    /**
     * Log message
     */
    const TAGS_UNSUPPORTED_BY_CLEAN_OF_MEMCACHED_BACKEND = 'Zend_Cache_Backend_Memcached::clean() : tags are unsupported by the Memcached backend';
    const TAGS_UNSUPPORTED_BY_SAVE_OF_MEMCACHED_BACKEND =  'Zend_Cache_Backend_Memcached::save() : tags are unsupported by the Memcached backend';

    /**
     * Available options
     *
     * =====> (array) servers :
     * an array of memcached server ; each memcached server is described by an associative array :
     * 'host' => (string) : the name of the memcached server
     * 'port' => (int) : the port of the memcached server
     * 'persistent' => (bool) : use or not persistent connections to this memcached server
     *
     * =====> (boolean) compression :
     * true if you want to use on-the-fly compression
     *
     * @var array available options
     */
    protected $_options = array(
        'servers' => array(array(
            'host' => self::DEFAULT_HOST,
            'port' => self::DEFAULT_PORT,
            'persistent' => self::DEFAULT_PERSISTENT,
            'weight'  => self::DEFAULT_WEIGHT,
            'timeout' => self::DEFAULT_TIMEOUT,
            'retry_interval' => self::DEFAULT_RETRY_INTERVAL,
            'status' => self::DEFAULT_STATUS
        )),
        'compression' => false
    );

    /**
     * Memcache object
     *
     * @var mixed memcache object
     */
    protected $_memcache = null;

    /**
     * Constructor
     *
     * @param array $options associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        if (!extension_loaded('memcache')) {
            Zend_Cache::throwException('The memcache extension must be loaded for using this backend !');
        }
        parent::__construct($options);
        if (isset($this->_options['servers'])) {
            $value= $this->_options['servers'];
            if (isset($value['host'])) {
                // in this case, $value seems to be a simple associative array (one server only)
                $value = array(0 => $value); // let's transform it into a classical array of associative arrays
            }
            $this->setOption('servers', $value);
        }
        $this->_memcache = new Memcache;
        foreach ($this->_options['servers'] as $server) {
            if (!array_key_exists('port', $server)) {
                $server['port'] = self::DEFAULT_PORT;
            }
            if (!array_key_exists('persistent', $server)) {
                $server['persistent'] = self::DEFAULT_PERSISTENT;
            }
            if (!array_key_exists('weight', $server)) {
                $server['weight'] = self::DEFAULT_WEIGHT;
            }
            if (!array_key_exists('timeout', $server)) {
                $server['timeout'] = self::DEFAULT_TIMEOUT;
            }
            if (!array_key_exists('retry_interval', $server)) {
                $server['retry_interval'] = self::DEFAULT_RETRY_INTERVAL;
            }
            if (!array_key_exists('status', $server)) {
                $server['status'] = self::DEFAULT_STATUS;
            }

            $this->_memcache->addServer($server['host'], $server['port'], $server['persistent'],
                                        $server['weight'], $server['timeout'],
                                        $server['retry_interval'], $server['status']
                                        );
        }
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string|false cached datas
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        $tmp = $this->_memcache->get($id);
        if (is_array($tmp)) {
            return $tmp[0];
        }
        return false;
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id Cache id
     * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $tmp = $this->_memcache->get($id);
        if (is_array($tmp)) {
            return $tmp[1];
        }
        return false;
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data             Datas to cache
     * @param  string $id               Cache id
     * @param  array  $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean True if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        $lifetime = $this->getLifetime($specificLifetime);
        if ($this->_options['compression']) {
            $flag = MEMCACHE_COMPRESSED;
        } else {
            $flag = 0;
        }
        if ($this->test($id)) {
            // because set and replace seems to have different behaviour
            $result = $this->_memcache->replace($id, array($data, time(), $lifetime), $flag, $lifetime);
        } else {
            $result = $this->_memcache->set($id, array($data, time(), $lifetime), $flag, $lifetime);
        }
        if (count($tags) > 0) {
            $this->_log("Zend_Cache_Backend_Memcached::save() : tags are unsupported by the Memcached backend");
        }
        return $result;
    }

    /**
     * Remove a cache record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id)
    {
        return $this->_memcache->delete($id);
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * 'all' (default)  => remove all cache entries ($tags is not used)
     * 'old'            => unsupported
     * 'matchingTag'    => unsupported
     * 'notMatchingTag' => unsupported
     * 'matchingAnyTag' => unsupported
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @throws Zend_Cache_Exception
     * @return boolean True if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        switch ($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
                return $this->_memcache->flush();
                break;
            case Zend_Cache::CLEANING_MODE_OLD:
                $this->_log("Zend_Cache_Backend_Memcached::clean() : CLEANING_MODE_OLD is unsupported by the Memcached backend");
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $this->_log(self::TAGS_UNSUPPORTED_BY_CLEAN_OF_MEMCACHED_BACKEND);
                break;
               default:
                Zend_Cache::throwException('Invalid mode for clean() method');
                   break;
        }
    }

    /**
     * Return true if the automatic cleaning is available for the backend
     *
     * @return boolean
     */
    public function isAutomaticCleaningAvailable()
    {
        return false;
    }

    /**
     * Set the frontend directives
     *
     * @param  array $directives Assoc of directives
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setDirectives($directives)
    {
        parent::setDirectives($directives);
        $lifetime = $this->getLifetime(false);
        if ($lifetime > 2592000) {
            // #ZF-3490 : For the memcached backend, there is a lifetime limit of 30 days (2592000 seconds)
            $this->_log('memcached backend has a limit of 30 days (2592000 seconds) for the lifetime');
        }
        if (is_null($lifetime)) {
        	// #ZF-4614 : we tranform null to zero to get the maximal lifetime
        	parent::setDirectives(array('lifetime' => 0));
        }
    }

    /**
     * Return an array of stored cache ids
     *
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        $this->_log("Zend_Cache_Backend_Memcached::save() : getting the list of cache ids is unsupported by the Memcache backend");
        return array();
    }

    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_MEMCACHED_BACKEND);
        return array();
    }

    /**
     * Return an array of stored cache ids which match given tags
     *
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_MEMCACHED_BACKEND);
        return array();
    }

    /**
     * Return an array of stored cache ids which don't match given tags
     *
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */
    public function getIdsNotMatchingTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_MEMCACHED_BACKEND);
        return array();
    }

    /**
     * Return an array of stored cache ids which match any given tags
     *
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_MEMCACHED_BACKEND);
        return array();
    }

    /**
     * Return the filling percentage of the backend storage
     *
     * @throws Zend_Cache_Exception
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        $mem = $this->_memcache->getStats();
        $memSize = $mem['limit_maxbytes'];
        $memUsed= $mem['bytes'];
        if ($memSize == 0) {
            Zend_Cache::throwException('can\'t get memcache memory size');
        }
        if ($memUsed > $memSize) {
            return 100;
        }
        return ((int) (100. * ($memUsed / $memSize)));
    }

    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     *
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id)
    {
        $tmp = $this->_memcache->get($id);
        if (is_array($tmp)) {
            $data = $tmp[0];
            $mtime = $tmp[1];
            if (!isset($tmp[2])) {
                // because this record is only with 1.7 release
                // if old cache records are still there...
                return false;
            }
            $lifetime = $tmp[2];
            return array(
                'expire' => $mtime + $lifetime,
                'tags' => array(),
                'mtime' => $mtime
            );
        }
        return false;
    }

    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        if ($this->_options['compression']) {
            $flag = MEMCACHE_COMPRESSED;
        } else {
            $flag = 0;
        }
        $tmp = $this->_memcache->get($id);
        if (is_array($tmp)) {
            $data = $tmp[0];
            $mtime = $tmp[1];
            if (!isset($tmp[2])) {
                // because this record is only with 1.7 release
                // if old cache records are still there...
                return false;
            }
            $lifetime = $tmp[2];
            $newLifetime = $lifetime - (time() - $mtime) + $extraLifetime;
            if ($newLifetime <=0) {
                return false;
            }
            if ($this->test($id)) {
                // because set and replace seems to have different behaviour
                $result = $this->_memcache->replace($id, array($data, time(), $newLifetime), $flag, $newLifetime);
            } else {
                $result = $this->_memcache->set($id, array($data, time(), $newLifetime), $flag, $newLifetime);
            }
            return true;
        }
        return false;
    }

    /**
     * Return an associative array of capabilities (booleans) of the backend
     *
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     *
     * @return array associative of with capabilities
     */
    public function getCapabilities()
    {
        return array(
            'automatic_cleaning' => false,
            'tags' => false,
            'expired_read' => false,
            'priority' => false,
            'infinite_lifetime' => false,
            'get_list' => false
        );
    }

}
PKpG[|�J't+t+Cache/Backend/Apc.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/ExtendedInterface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_Apc extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface
{
    /**
     * Log message
     */
    const TAGS_UNSUPPORTED_BY_CLEAN_OF_APC_BACKEND = 'Zend_Cache_Backend_Apc::clean() : tags are unsupported by the Apc backend';
    const TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND =  'Zend_Cache_Backend_Apc::save() : tags are unsupported by the Apc backend';

    /**
     * Constructor
     *
     * @param  array $options associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        if (!extension_loaded('apc')) {
            Zend_Cache::throwException('The apc extension must be loaded for using this backend !');
        }
        parent::__construct($options);
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * WARNING $doNotTestCacheValidity=true is unsupported by the Apc backend
     *
     * @param  string  $id                     cache id
     * @param  boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
     * @return string cached datas (or false)
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        $tmp = apc_fetch($id);
        if (is_array($tmp)) {
            return $tmp[0];
        }
        return false;
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id cache id
     * @return mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $tmp = apc_fetch($id);
        if (is_array($tmp)) {
            return $tmp[1];
        }
        return false;
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param string $data datas to cache
     * @param string $id cache id
     * @param array $tags array of strings, the cache record will be tagged by each string entry
     * @param int $specificLifetime if != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        $lifetime = $this->getLifetime($specificLifetime);
        $result = apc_store($id, array($data, time(), $lifetime), $lifetime);
        if (count($tags) > 0) {
            $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND);
        }
        return $result;
    }

    /**
     * Remove a cache record
     *
     * @param  string $id cache id
     * @return boolean true if no problem
     */
    public function remove($id)
    {
        return apc_delete($id);
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * 'all' (default)  => remove all cache entries ($tags is not used)
     * 'old'            => unsupported
     * 'matchingTag'    => unsupported
     * 'notMatchingTag' => unsupported
     * 'matchingAnyTag' => unsupported
     *
     * @param  string $mode clean mode
     * @param  array  $tags array of tags
     * @throws Zend_Cache_Exception
     * @return boolean true if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        switch ($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
                return apc_clear_cache('user');
                break;
            case Zend_Cache::CLEANING_MODE_OLD:
                $this->_log("Zend_Cache_Backend_Apc::clean() : CLEANING_MODE_OLD is unsupported by the Apc backend");
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $this->_log(self::TAGS_UNSUPPORTED_BY_CLEAN_OF_APC_BACKEND);
                break;
            default:
                Zend_Cache::throwException('Invalid mode for clean() method');
                break;
        }
    }

    /**
     * Return true if the automatic cleaning is available for the backend
     *
     * DEPRECATED : use getCapabilities() instead
     * 
     * @deprecated 
     * @return boolean
     */
    public function isAutomaticCleaningAvailable()
    {
        return false;
    }
    
    /**
     * Return the filling percentage of the backend storage
     * 
     * @throws Zend_Cache_Exception
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        $mem = apc_sma_info(true);
        $memSize    = $mem['num_seg'] * $mem['seg_size'];
        $memAvailable= $mem['avail_mem'];
        $memUsed = $memSize - $memAvailable;
        if ($memSize == 0) {
            Zend_Cache::throwException('can\'t get apc memory size');
        }
        if ($memUsed > $memSize) {
            return 100;
        }
        return ((int) (100. * ($memUsed / $memSize)));
    }
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {   
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND);
        return array();
    }
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND);
        return array();               
    }

    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND);
        return array();         
    }
    
    /**
     * Return an array of stored cache ids which match any given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array())
    {
        $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_APC_BACKEND);
        return array();         
    }
    
    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        $res = array();
        $array = apc_cache_info('user', false);
        $records = $array['cache_list'];
        foreach ($records as $record) {
            $res[] = $record['info'];
        }
        return $res;
    }
    
    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     * 
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id)
    {
        $tmp = apc_fetch($id);
        if (is_array($tmp)) {
            $data = $tmp[0];
            $mtime = $tmp[1];
            if (!isset($tmp[2])) {
                // because this record is only with 1.7 release
                // if old cache records are still there...
                return false;
            }
            $lifetime = $tmp[2];
            return array(
                'expire' => $mtime + $lifetime,
                'tags' => array(),
                'mtime' => $mtime
            );
        }
        return false;  
    }
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        $tmp = apc_fetch($id);
        if (is_array($tmp)) {
            $data = $tmp[0];
            $mtime = $tmp[1];
            if (!isset($tmp[2])) {
                // because this record is only with 1.7 release
                // if old cache records are still there...
                return false;
            }
            $lifetime = $tmp[2];
            $newLifetime = $lifetime - (time() - $mtime) + $extraLifetime;
            if ($newLifetime <=0) {
                return false; 
            }
            apc_store($id, array($data, time(), $newLifetime), $newLifetime);
            return true;
        }
        return false;
    }
    
    /**
     * Return an associative array of capabilities (booleans) of the backend
     * 
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     * 
     * @return array associative of with capabilities
     */
    public function getCapabilities()
    {
        return array(
            'automatic_cleaning' => false,
            'tags' => false,
            'expired_read' => false,
            'priority' => false,
            'infinite_lifetime' => false,
            'get_list' => true
        );
    }

}
PKpG[6x��Cache/Backend/Xcache.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/Interface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_Xcache extends Zend_Cache_Backend implements Zend_Cache_Backend_Interface
{

    /**
     * Log message
     */
    const TAGS_UNSUPPORTED_BY_CLEAN_OF_XCACHE_BACKEND = 'Zend_Cache_Backend_Xcache::clean() : tags are unsupported by the Xcache backend';
    const TAGS_UNSUPPORTED_BY_SAVE_OF_XCACHE_BACKEND =  'Zend_Cache_Backend_Xcache::save() : tags are unsupported by the Xcache backend';
    
    /**
     * Available options
     *
     * =====> (string) user :
     * xcache.admin.user (necessary for the clean() method)
     *
     * =====> (string) password :
     * xcache.admin.pass (clear, not MD5) (necessary for the clean() method)
     *
     * @var array available options
     */
    protected $_options = array(
        'user' => null,
        'password' => null
    );

    /**
     * Constructor
     *
     * @param  array $options associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        if (!extension_loaded('xcache')) {
            Zend_Cache::throwException('The xcache extension must be loaded for using this backend !');
        }
        parent::__construct($options);
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * WARNING $doNotTestCacheValidity=true is unsupported by the Xcache backend
     *
     * @param  string  $id                     cache id
     * @param  boolean $doNotTestCacheValidity if set to true, the cache validity won't be tested
     * @return string cached datas (or false)
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        if ($doNotTestCacheValidity) {
            $this->_log("Zend_Cache_Backend_Xcache::load() : \$doNotTestCacheValidity=true is unsupported by the Xcache backend");
        }
        $tmp = xcache_get($id);
        if (is_array($tmp)) {
            return $tmp[0];
        }
        return false;
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id cache id
     * @return mixed false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        if (xcache_isset($id)) {
            $tmp = xcache_get($id);
            if (is_array($tmp)) {
                return $tmp[1];
            }
        }
        return false;
    }

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param string $data datas to cache
     * @param string $id cache id
     * @param array $tags array of strings, the cache record will be tagged by each string entry
     * @param int $specificLifetime if != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        $lifetime = $this->getLifetime($specificLifetime);
        $result = xcache_set($id, array($data, time()), $lifetime);
        if (count($tags) > 0) {
            $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_XCACHE_BACKEND);
        }
        return $result;
    }

    /**
     * Remove a cache record
     *
     * @param  string $id cache id
     * @return boolean true if no problem
     */
    public function remove($id)
    {
        return xcache_unset($id);
    }

    /**
     * Clean some cache records
     *
     * Available modes are :
     * 'all' (default)  => remove all cache entries ($tags is not used)
     * 'old'            => unsupported
     * 'matchingTag'    => unsupported
     * 'notMatchingTag' => unsupported
     * 'matchingAnyTag' => unsupported
     *
     * @param  string $mode clean mode
     * @param  array  $tags array of tags
     * @throws Zend_Cache_Exception
     * @return boolean true if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        switch ($mode) {
            case Zend_Cache::CLEANING_MODE_ALL:
                // Necessary because xcache_clear_cache() need basic authentification
                $backup = array();
                if (isset($_SERVER['PHP_AUTH_USER'])) {
                    $backup['PHP_AUTH_USER'] = $_SERVER['PHP_AUTH_USER'];
                }
                if (isset($_SERVER['PHP_AUTH_PW'])) {
                    $backup['PHP_AUTH_PW'] = $_SERVER['PHP_AUTH_PW'];
                }
                if ($this->_options['user']) {
                    $_SERVER['PHP_AUTH_USER'] = $this->_options['user'];
                }
                if ($this->_options['password']) {
                    $_SERVER['PHP_AUTH_PW'] = $this->_options['password'];
                }
                xcache_clear_cache(XC_TYPE_VAR, 0);
                if (isset($backup['PHP_AUTH_USER'])) {
                    $_SERVER['PHP_AUTH_USER'] = $backup['PHP_AUTH_USER'];
                    $_SERVER['PHP_AUTH_PW'] = $backup['PHP_AUTH_PW'];
                }
                return true;
                break;
            case Zend_Cache::CLEANING_MODE_OLD:
                $this->_log("Zend_Cache_Backend_Xcache::clean() : CLEANING_MODE_OLD is unsupported by the Xcache backend");
                break;
            case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
            case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
                $this->_log(self::TAGS_UNSUPPORTED_BY_CLEAN_OF_XCACHE_BACKEND);
                break;
            default:
                Zend_Cache::throwException('Invalid mode for clean() method');
                break;
        }
    }

    /**
     * Return true if the automatic cleaning is available for the backend
     *
     * @return boolean
     */
    public function isAutomaticCleaningAvailable()
    {
        return false;
    }

}
PKpG[�6I��Cache/Backend/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Cache_Backend_Interface
{
    /**
     * Set the frontend directives
     *
     * @param array $directives assoc of directives
     */
    public function setDirectives($directives);

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * Note : return value is always "string" (unserialization is done by the core not by the backend)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string|false cached datas
     */
    public function load($id, $doNotTestCacheValidity = false);

    /**
     * Test if a cache is available or not (for the given id)
     *
     * @param  string $id cache id
     * @return mixed|false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id);

    /**
     * Save some string datas into a cache record
     *
     * Note : $data is always "string" (serialization is done by the
     * core not by the backend)
     *
     * @param  string $data            Datas to cache
     * @param  string $id              Cache id
     * @param  array $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int   $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean true if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false);

    /**
     * Remove a cache record
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id);

    /**
     * Clean some cache records
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG => remove cache entries matching any given tags
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @return boolean true if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array());

}
PKpG[�EzRRCache/Backend/Test.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/Interface.php';

/**
 * @see Zend_Cache_Backend
 */
require_once 'Zend/Cache/Backend.php';

/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend_Test extends Zend_Cache_Backend implements Zend_Cache_Backend_Interface
{
    /**
     * Available options
     *
     * @var array available options
     */
    protected $_options = array();

    /**
     * Frontend or Core directives
     *
     * @var array directives
     */
    protected $_directives = array();

    /**
     * Array to log actions
     *
     * @var array $_log
     */
    private $_log = array();

    /**
     * Current index for log array
     *
     * @var int $_index
     */
    private $_index = 0;

    /**
     * Constructor
     *
     * @param  array $options associative array of options
     * @return void
     */
    public function __construct($options = array())
    {
        $this->_addLog('construct', array($options));
    }

    /**
     * Set the frontend directives
     *
     * @param  array $directives assoc of directives
     * @return void
     */
    public function setDirectives($directives)
    {
        $this->_addLog('setDirectives', array($directives));
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * For this test backend only, if $id == 'false', then the method will return false
     * if $id == 'serialized', the method will return a serialized array
     * ('foo' else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @return string Cached datas (or false)
     */
    public function load($id, $doNotTestCacheValidity = false)
    {
        $this->_addLog('get', array($id, $doNotTestCacheValidity));
        if ($id=='false') {
            return false;
        }
        if ($id=='serialized') {
            return serialize(array('foo'));
        }
        if ($id=='serialized2') {
            return serialize(array('headers' => array(), 'data' => 'foo'));
        }
        if (($id=='71769f39054f75894288e397df04e445') or ($id=='615d222619fb20b527168340cebd0578')) {
            return serialize(array('foo', 'bar'));
        }
        if (($id=='8a02d218a5165c467e7a5747cc6bd4b6') or ($id=='648aca1366211d17cbf48e65dc570bee')) {
            return serialize(array('foo', 'bar'));
        }
        return 'foo';
    }

    /**
     * Test if a cache is available or not (for the given id)
     *
     * For this test backend only, if $id == 'false', then the method will return false
     * (123456 else)
     *
     * @param  string $id Cache id
     * @return mixed|false false (a cache is not available) or "last modified" timestamp (int) of the available cache record
     */
    public function test($id)
    {
        $this->_addLog('test', array($id));
        if ($id=='false') {
            return false;
        }
        if (($id=='d8523b3ee441006261eeffa5c3d3a0a7') or ($id=='3c439c922209e2cb0b54d6deffccd75a')) {
            return false;
        }
        if (($id=='40f649b94977c0a6e76902e2a0b43587') or ($id=='e83249ea22178277d5befc2c5e2e9ace')) {
            return false;
        }
        return 123456;
    }

    /**
     * Save some string datas into a cache record
     *
     * For this test backend only, if $id == 'false', then the method will return false
     * (true else)
     *
     * @param  string $data             Datas to cache
     * @param  string $id               Cache id
     * @param  array  $tags             Array of strings, the cache record will be tagged by each string entry
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @return boolean True if no problem
     */
    public function save($data, $id, $tags = array(), $specificLifetime = false)
    {
        $this->_addLog('save', array($data, $id, $tags));
        if ($id=='false') {
            return false;
        }
        return true;
    }

    /**
     * Remove a cache record
     *
     * For this test backend only, if $id == 'false', then the method will return false
     * (true else)
     *
     * @param  string $id Cache id
     * @return boolean True if no problem
     */
    public function remove($id)
    {
        $this->_addLog('remove', array($id));
        if ($id=='false') {
            return false;
        }
        return true;
    }

    /**
     * Clean some cache records
     *
     * For this test backend only, if $mode == 'false', then the method will return false
     * (true else)
     *
     * Available modes are :
     * Zend_Cache::CLEANING_MODE_ALL (default)    => remove all cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_OLD              => remove too old cache entries ($tags is not used)
     * Zend_Cache::CLEANING_MODE_MATCHING_TAG     => remove cache entries matching all given tags
     *                                               ($tags can be an array of strings or a single string)
     * Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG => remove cache entries not {matching one of the given tags}
     *                                               ($tags can be an array of strings or a single string)
     *
     * @param  string $mode Clean mode
     * @param  array  $tags Array of tags
     * @return boolean True if no problem
     */
    public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
    {
        $this->_addLog('clean', array($mode, $tags));
        if ($mode=='false') {
            return false;
        }
        return true;
    }

    /**
     * Get the last log
     *
     * @return string The last log
     */
    public function getLastLog()
    {
        return $this->_log[$this->_index - 1];
    }

    /**
     * Get the log index
     *
     * @return int Log index
     */
    public function getLogIndex()
    {
        return $this->_index;
    }

    /**
     * Get the complete log array
     *
     * @return array Complete log array
     */
    public function getAllLogs()
    {
        return $this->_log;
    }

    /**
     * Return true if the automatic cleaning is available for the backend
     *
     * @return boolean
     */
    public function isAutomaticCleaningAvailable()
    {
        return true;
    }

    /**
     * Add an event to the log array
     *
     * @param  string $methodName MethodName
     * @param  array  $args       Arguments
     * @return void
     */
    private function _addLog($methodName, $args)
    {
        $this->_log[$this->_index] = array(
            'methodName' => $methodName,
            'args' => $args
        );
        $this->_index = $this->_index + 1;
    }

}
PKpG[g$����#Cache/Backend/ExtendedInterface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Cache_Backend_Interface
 */
require_once 'Zend/Cache/Backend/Interface.php';

/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Cache_Backend_ExtendedInterface extends Zend_Cache_Backend_Interface
{

    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds();
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags();
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array());

    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array());

    /**
     * Return an array of stored cache ids which match any given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of any matching cache ids (string)
     */
    public function getIdsMatchingAnyTags($tags = array());
    
    /**
     * Return the filling percentage of the backend storage
     *
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage();

    /**
     * Return an array of metadatas for the given cache id
     *
     * The array must include these keys :
     * - expire : the expire timestamp
     * - tags : a string array of tags
     * - mtime : timestamp of last modification time
     * 
     * @param string $id cache id
     * @return array array of metadatas (false if the cache id is not found)
     */
    public function getMetadatas($id);
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime);
    
    /**
     * Return an associative array of capabilities (booleans) of the backend
     * 
     * The array must include these keys :
     * - automatic_cleaning (is automating cleaning necessary)
     * - tags (are tags supported)
     * - expired_read (is it possible to read expired cache records
     *                 (for doNotTestCacheValidity option for example))
     * - priority does the backend deal with priority when saving
     * - infinite_lifetime (is infinite lifetime can work with this backend)
     * - get_list (is it possible to get the list of cache ids and the complete list of tags)
     * 
     * @return array associative of with capabilities
     */
    public function getCapabilities();
    
}
PKpG[	@�#��Cache/Frontend/Function.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Core
 */
require_once 'Zend/Cache/Core.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Frontend_Function extends Zend_Cache_Core
{
    /**
     * This frontend specific options
     *
     * ====> (boolean) cache_by_default :
     * - if true, function calls will be cached by default
     *
     * ====> (array) cached_functions :
     * - an array of function names which will be cached (even if cache_by_default = false)
     *
     * ====> (array) non_cached_functions :
     * - an array of function names which won't be cached (even if cache_by_default = true)
     *
     * @var array options
     */
    protected $_specificOptions = array(
        'cache_by_default' => true,
        'cached_functions' => array(),
        'non_cached_functions' => array()
    );

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $this->setOption($name, $value);
        }
        $this->setOption('automatic_serialization', true);
    }

    /**
     * Main method : call the specified function or get the result from cache
     *
     * @param  string $name             Function name
     * @param  array  $parameters       Function parameters
     * @param  array  $tags             Cache tags
     * @param  int    $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @param  int   $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends             
     * @return mixed Result
     */
    public function call($name, $parameters = array(), $tags = array(), $specificLifetime = false, $priority = 8)
    {
        $cacheBool1 = $this->_specificOptions['cache_by_default'];
        $cacheBool2 = in_array($name, $this->_specificOptions['cached_functions']);
        $cacheBool3 = in_array($name, $this->_specificOptions['non_cached_functions']);
        $cache = (($cacheBool1 || $cacheBool2) && (!$cacheBool3));
        if (!$cache) {
            // We do not have not cache
            return call_user_func_array($name, $parameters);
        }
        $id = $this->_makeId($name, $parameters);
        if ($this->test($id)) {
            // A cache is available
            $result = $this->load($id);
            $output = $result[0];
            $return = $result[1];
        } else {
            // A cache is not available
            ob_start();
            ob_implicit_flush(false);
            $return = call_user_func_array($name, $parameters);
            $output = ob_get_contents();
            ob_end_clean();
            $data = array($output, $return);
            $this->save($data, $id, $tags, $specificLifetime, $priority);
        }
        echo $output;
        return $return;
    }

    /**
     * Make a cache id from the function name and parameters
     *
     * @param  string $name       Function name
     * @param  array  $parameters Function parameters
     * @throws Zend_Cache_Exception
     * @return string Cache id
     */
    private function _makeId($name, $parameters)
    {
        if (!is_string($name)) {
            Zend_Cache::throwException('Incorrect function name');
        }
        if (!is_array($parameters)) {
            Zend_Cache::throwException('parameters argument must be an array');
        }
        return md5($name . serialize($parameters));
    }

}
PKpG[Q�e�>>Cache/Frontend/Class.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Cache_Core
 */
require_once 'Zend/Cache/Core.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Frontend_Class extends Zend_Cache_Core
{
    /**
     * Available options
     *
     * ====> (mixed) cached_entity :
     * - if set to a class name, we will cache an abstract class and will use only static calls
     * - if set to an object, we will cache this object methods
     *
     * ====> (boolean) cache_by_default :
     * - if true, method calls will be cached by default
     *
     * ====> (array) cached_methods :
     * - an array of method names which will be cached (even if cache_by_default = false)
     *
     * ====> (array) non_cached_methods :
     * - an array of method names which won't be cached (even if cache_by_default = true)
     *
     * @var array available options
     */
    protected $_specificOptions = array(
        'cached_entity' => null,
        'cache_by_default' => true,
        'cached_methods' => array(),
        'non_cached_methods' => array()
    );

    /**
     * Tags array
     *
     * @var array
     */
    private $_tags = array();

    /**
     * SpecificLifetime value
     *
     * false => no specific life time
     *
     * @var int
     */
    private $_specificLifetime = false;

    /**
     * The cached object or the name of the cached abstract class
     *
     * @var mixed
     */
    private $_cachedEntity = null;

     /**
      * The class name of the cached object or cached abstract class
      *
      * Used to differentiate between different classes with the same method calls.
      *
      * @var string
      */
    private $_cachedEntityLabel = '';
    
    /**
     * Priority (used by some particular backends)
     *
     * @var int
     */
    private $_priority = 8;

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $this->setOption($name, $value);
        }
        if (is_null($this->_specificOptions['cached_entity'])) {
            Zend_Cache::throwException('cached_entity must be set !');
        }
        $this->setCachedEntity($this->_specificOptions['cached_entity']);
        $this->setOption('automatic_serialization', true);
    }

    /**
     * Set a specific life time
     *
     * @param  int $specificLifetime
     * @return void
     */
    public function setSpecificLifetime($specificLifetime = false)
    {
        $this->_specificLifetime = $specificLifetime;
    }  

    /**
     * Set the priority (used by some particular backends)
     * 
     * @param int $priority integer between 0 (very low priority) and 10 (maximum priority)
     */
    public function setPriority($priority)
    {
        $this->_priority = $priority;
    }
        
    /**
     * Public frontend to set an option
     *
     * Just a wrapper to get a specific behaviour for cached_entity
     *
     * @param  string $name  Name of the option
     * @param  mixed  $value Value of the option
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setOption($name, $value)
    {
        if ($name == 'cached_entity') {
            $this->setCachedEntity($value);
        } else {
            parent::setOption($name, $value);
        }
    }
    
    /**
     * Specific method to set the cachedEntity
     * 
     * if set to a class name, we will cache an abstract class and will use only static calls
     * if set to an object, we will cache this object methods
     * 
     * @param mixed $cachedEntity 
     */
    public function setCachedEntity($cachedEntity)
    {
        if (!is_string($cachedEntity) && !is_object($cachedEntity)) {
            Zend_Cache::throwException('cached_entity must be an object or a class name');
        }
        $this->_cachedEntity = $cachedEntity;
        $this->_specificOptions['cached_entity'] = $cachedEntity;
        if (is_string($this->_cachedEntity)){
            $this->_cachedEntityLabel = $this->_cachedEntity;
        } else {
            $ro = new ReflectionObject($this->_cachedEntity);
            $this->_cachedEntityLabel = $ro->getName();
        }
    }

    /**
     * Set the cache array
     *
     * @param  array $tags
     * @return void
     */
    public function setTagsArray($tags = array())
    {
        $this->_tags = $tags;
    }

    /**
     * Main method : call the specified method or get the result from cache
     *
     * @param  string $name       Method name
     * @param  array  $parameters Method parameters
     * @return mixed Result
     */
    public function __call($name, $parameters)
    {
        $cacheBool1 = $this->_specificOptions['cache_by_default'];
        $cacheBool2 = in_array($name, $this->_specificOptions['cached_methods']);
        $cacheBool3 = in_array($name, $this->_specificOptions['non_cached_methods']);
        $cache = (($cacheBool1 || $cacheBool2) && (!$cacheBool3));
        if (!$cache) {
            // We do not have not cache
            return call_user_func_array(array($this->_cachedEntity, $name), $parameters);
        }
        $id = $this->_makeId($name, $parameters);
        if ($this->test($id)) {
            // A cache is available
            $result = $this->load($id);
            $output = $result[0];
            $return = $result[1];
        } else {
            // A cache is not available
            ob_start();
            ob_implicit_flush(false);
            $return = call_user_func_array(array($this->_cachedEntity, $name), $parameters);
            $output = ob_get_contents();
            ob_end_clean();
            $data = array($output, $return);
            $this->save($data, $id, $this->_tags, $this->_specificLifetime, $this->_priority);
        }
        echo $output;
        return $return;
    }

    /**
     * Make a cache id from the method name and parameters
     *
     * @param  string $name       Method name
     * @param  array  $parameters Method parameters
     * @return string Cache id
     */
    private function _makeId($name, $parameters)
    {
        return md5($this->_cachedEntityLabel . '__' . $name . '__' . serialize($parameters));
    }

}
PKpG[��%T7T7Cache/Frontend/Page.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Core
 */
require_once 'Zend/Cache/Core.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Frontend_Page extends Zend_Cache_Core
{
    /**
     * This frontend specific options
     *
     * ====> (boolean) http_conditional :
     * - if true, http conditional mode is on
     * WARNING : http_conditional OPTION IS NOT IMPLEMENTED FOR THE MOMENT (TODO)
     *
     * ====> (boolean) debug_header :
     * - if true, a debug text is added before each cached pages
     *
     * ====> (boolean) content_type_memorization :
     * - deprecated => use memorize_headers instead
     * - if the Content-Type header is sent after the cache was started, the
     *   corresponding value can be memorized and replayed when the cache is hit
     *   (if false (default), the frontend doesn't take care of Content-Type header)
     *
     * ====> (array) memorize_headers :
     * - an array of strings corresponding to some HTTP headers name. Listed headers
     *   will be stored with cache datas and "replayed" when the cache is hit
     *
     * ====> (array) default_options :
     * - an associative array of default options :
     *     - (boolean) cache : cache is on by default if true
     *     - (boolean) cacheWithXXXVariables  (XXXX = 'Get', 'Post', 'Session', 'Files' or 'Cookie') :
     *       if true,  cache is still on even if there are some variables in this superglobal array
     *       if false, cache is off if there are some variables in this superglobal array
     *     - (boolean) makeIdWithXXXVariables (XXXX = 'Get', 'Post', 'Session', 'Files' or 'Cookie') :
     *       if true, we have to use the content of this superglobal array to make a cache id
     *       if false, the cache id won't be dependent of the content of this superglobal array
     *     - (int) specific_lifetime : cache specific lifetime 
     *                                (false => global lifetime is used, null => infinite lifetime, 
     *                                 integer => this lifetime is used), this "lifetime" is probably only 
     *                                usefull when used with "regexps" array
     *     - (array) tags : array of tags (strings) 
     *     - (int) priority : integer between 0 (very low priority) and 10 (maximum priority) used by 
     *                        some particular backends
     *
     * ====> (array) regexps :
     * - an associative array to set options only for some REQUEST_URI
     * - keys are (pcre) regexps
     * - values are associative array with specific options to set if the regexp matchs on $_SERVER['REQUEST_URI']
     *   (see default_options for the list of available options)
     * - if several regexps match the $_SERVER['REQUEST_URI'], only the last one will be used
     *
     * @var array options
     */
    protected $_specificOptions = array(
        'http_conditional' => false,
        'debug_header' => false,
        'content_type_memorization' => false,
        'memorize_headers' => array(),
        'default_options' => array(
            'cache_with_get_variables' => false,
            'cache_with_post_variables' => false,
            'cache_with_session_variables' => false,
            'cache_with_files_variables' => false,
            'cache_with_cookie_variables' => false,
            'make_id_with_get_variables' => true,
            'make_id_with_post_variables' => true,
            'make_id_with_session_variables' => true,
            'make_id_with_files_variables' => true,
            'make_id_with_cookie_variables' => true,
            'cache' => true,
            'specific_lifetime' => false,
            'tags' => array(),
            'priority' => null
        ),
        'regexps' => array()
    );

    /**
     * Internal array to store some options
     *
     * @var array associative array of options
     */
    protected $_activeOptions = array();

    /**
     * If true, the page won't be cached
     *
     * @var boolean
     */
    private $_cancel = false;

    /**
     * Constructor
     *
     * @param  array   $options                Associative array of options
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $name = strtolower($name);
            switch ($name) {
                case 'regexps':
                    $this->_setRegexps($value);
                    break;
                case 'default_options':
                    $this->_setDefaultOptions($value);
                    break;
                case 'content_type_memorization':
                    $this->_setContentTypeMemorization($value);
                    break;
                default:
                    $this->setOption($name, $value);
            }
        }
        if (isset($this->_specificOptions['http_conditional'])) {
            if ($this->_specificOptions['http_conditional']) {
                Zend_Cache::throwException('http_conditional is not implemented for the moment !');
            }
        }
        $this->setOption('automatic_serialization', true);
    }

    /**
     * Specific setter for the 'default_options' option (with some additional tests)
     *
     * @param  array $options Associative array
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _setDefaultOptions($options)
    {
        if (!is_array($options)) {
            Zend_Cache::throwException('default_options must be an array !');
        }
        foreach ($options as $key=>$value) {
            if (!is_string($key)) {
                Zend_Cache::throwException("invalid option [$key] !");
            }
            $key = strtolower($key);
            if (isset($this->_specificOptions['default_options'][$key])) {
                $this->_specificOptions['default_options'][$key] = $value;
            }
        }
    }

    /**
     * Set the deprecated contentTypeMemorization option
     *
     * @param boolean $value value
     * @return void
     * @deprecated
     */
    protected function _setContentTypeMemorization($value)
    {
        $found = null;
        foreach ($this->_specificOptions['memorize_headers'] as $key => $value) {
            if (strtolower($value) == 'content-type') {
                $found = $key;
            }
        }
        if ($value) {
            if (!$found) {
                $this->_specificOptions['memorize_headers'][] = 'Content-Type';
            }
        } else {
            if ($found) {
                unset($this->_specificOptions['memorize_headers'][$found]);
            }
        }
    }

    /**
     * Specific setter for the 'regexps' option (with some additional tests)
     *
     * @param  array $options Associative array
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _setRegexps($regexps)
    {
        if (!is_array($regexps)) {
            Zend_Cache::throwException('regexps option must be an array !');
        }
        foreach ($regexps as $regexp=>$conf) {
            if (!is_array($conf)) {
                Zend_Cache::throwException('regexps option must be an array of arrays !');
            }
            $validKeys = array_keys($this->_specificOptions['default_options']);
            foreach ($conf as $key=>$value) {
                if (!is_string($key)) {
                    Zend_Cache::throwException("unknown option [$key] !");
                }
                $key = strtolower($key);
                if (!in_array($key, $validKeys)) {
                    unset($regexps[$regexp][$key]);
                }
            }
        }
        $this->setOption('regexps', $regexps);
    }

    /**
     * Start the cache
     *
     * @param  string  $id       (optional) A cache id (if you set a value here, maybe you have to use Output frontend instead)
     * @param  boolean $doNotDie For unit testing only !
     * @return boolean True if the cache is hit (false else)
     */
    public function start($id = false, $doNotDie = false)
    {
        $this->_cancel = false;
        $lastMatchingRegexp = null;
        foreach ($this->_specificOptions['regexps'] as $regexp => $conf) {
            if (preg_match("`$regexp`", $_SERVER['REQUEST_URI'])) {
                $lastMatchingRegexp = $regexp;
            }
        }
        $this->_activeOptions = $this->_specificOptions['default_options'];
        if (!is_null($lastMatchingRegexp)) {
            $conf = $this->_specificOptions['regexps'][$lastMatchingRegexp];
            foreach ($conf as $key=>$value) {
                $this->_activeOptions[$key] = $value;
            }
        }
        if (!($this->_activeOptions['cache'])) {
            return false;
        }
        if (!$id) {
            $id = $this->_makeId();
            if (!$id) {
                return false;
            }
        }
        $array = $this->load($id);
        if ($array !== false) {
            $data = $array['data'];
            $headers = $array['headers'];
            if ($this->_specificOptions['debug_header']) {
                echo 'DEBUG HEADER : This is a cached page !';
            }
            if (!headers_sent()) {
                foreach ($headers as $key=>$headerCouple) {
                    $name = $headerCouple[0];
                    $value = $headerCouple[1];
                    header("$name: $value");
                }
            }
            echo $data;
            if ($doNotDie) {
                return true;
            }
            die();
        }
        ob_start(array($this, '_flush'));
        ob_implicit_flush(false);
        return false;
    }

    /**
     * Cancel the current caching process
     */
    public function cancel()
    {
        $this->_cancel = true;
    }

    /**
     * callback for output buffering
     * (shouldn't really be called manually)
     *
     * @param  string $data Buffered output
     * @return string Data to send to browser
     */
    public function _flush($data)
    {
        if ($this->_cancel) {
            return $data;
        }
        $contentType = null;
        $storedHeaders = array();
        $headersList = headers_list();
        foreach($this->_specificOptions['memorize_headers'] as $key=>$headerName) {
            foreach ($headersList as $headerSent) {
                $tmp = split(':', $headerSent);
                $headerSentName = trim(array_shift($tmp));
                if (strtolower($headerName) == strtolower($headerSentName)) {
                    $headerSentValue = trim(implode(':', $tmp));
                    $storedHeaders[] = array($headerSentName, $headerSentValue);
                }
            }
        }       
        $array = array(
            'data' => $data,
            'headers' => $storedHeaders
        );
        $this->save($array, null, $this->_activeOptions['tags'], $this->_activeOptions['specific_lifetime'], $this->_activeOptions['priority']);
        return $data;
    }

    /**
     * Make an id depending on REQUEST_URI and superglobal arrays (depending on options)
     *
     * @return mixed|false a cache id (string), false if the cache should have not to be used
     */
    protected function _makeId()
    {
        $tmp = $_SERVER['REQUEST_URI'];
        foreach (array('Get', 'Post', 'Session', 'Files', 'Cookie') as $arrayName) {
            $tmp2 = $this->_makePartialId($arrayName, $this->_activeOptions['cache_with_' . strtolower($arrayName) . '_variables'], $this->_activeOptions['make_id_with_' . strtolower($arrayName) . '_variables']);
            if ($tmp2===false) {
                return false;
            }
            $tmp = $tmp . $tmp2;
        }
        return md5($tmp);
    }

    /**
     * Make a partial id depending on options
     *
     * @param  string $arrayName Superglobal array name
     * @param  bool   $bool1     If true, cache is still on even if there are some variables in the superglobal array
     * @param  bool   $bool2     If true, we have to use the content of the superglobal array to make a partial id
     * @return mixed|false Partial id (string) or false if the cache should have not to be used
     */
    protected function _makePartialId($arrayName, $bool1, $bool2)
    {
        switch ($arrayName) {
        case 'Get':
            $var = $_GET;
            break;
        case 'Post':
            $var = $_POST;
            break;
        case 'Session':
            if (isset($_SESSION)) {
                $var = $_SESSION;
            } else {
                $var = null;
            }
            break;
        case 'Cookie':
            if (isset($_COOKIE)) {
                $var = $_COOKIE;
            } else {
                $var = null;
            }
            break;
        case 'Files':
            $var = $_FILES;
            break;
        default:
            return false;
        }
        if ($bool1) {
            if ($bool2) {
                return serialize($var);
            }
            return '';
        }
        if (count($var) > 0) {
            return false;
        }
        return '';
    }

}
PKpG[K��vvCache/Frontend/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Core
 */
require_once 'Zend/Cache/Core.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Frontend_File extends Zend_Cache_Core
{
    /**
     * Available options
     *
     * ====> (string) master_file :
     * - the complete path and name of the master file
     * - this option has to be set !
     *
     * @var array available options
     */
    protected $_specificOptions = array(
        'master_file' => ''
    );

    /**
     * Master file mtime
     *
     * @var int
     */
    private $_masterFile_mtime = null;

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $this->setOption($name, $value);
        }
        if (!isset($this->_specificOptions['master_file'])) {
            Zend_Cache::throwException('master_file option must be set');
        }
        $this->setMasterFile($this->_specificOptions['master_file']);
    }
    
    /**
     * Change the master_file option
     * 
     * @param string $masterFile the complete path and name of the master file
     */
    public function setMasterFile($masterFile)
    {
        clearstatcache();
        $this->_specificOptions['master_file'] = $masterFile;
        if (!($this->_masterFile_mtime = @filemtime($masterFile))) {
            Zend_Cache::throwException('Unable to read master_file : '.$masterFile);
        }
    }
    
    /**
     * Public frontend to set an option
     *
     * Just a wrapper to get a specific behaviour for master_file
     *
     * @param  string $name  Name of the option
     * @param  mixed  $value Value of the option
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setOption($name, $value)
    {
        if ($name == 'master_file') {
            $this->setMasterFile($value);
        } else {
            parent::setOption($name, $value);
        }
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @param  boolean $doNotUnserialize       Do not serialize (even if automatic_serialization is true) => for internal use
     * @return mixed|false Cached datas
     */
    public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false)
    {
        if (!$doNotTestCacheValidity) {
            if ($this->test($id)) {
                return parent::load($id, true, $doNotUnserialize);
            }
            return false;
        }
        return parent::load($id, true, $doNotUnserialize);
    }

    /**
     * Test if a cache is available for the given id
     *
     * @param  string $id Cache id
     * @return boolean True is a cache is available, false else
     */
    public function test($id)
    {
        $lastModified = parent::test($id);
        if ($lastModified) {
            if ($lastModified > $this->_masterFile_mtime) {
                return $lastModified;
            }
        }
        return false;
    }

}

PKpG[�6.i
i
Cache/Frontend/Output.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Cache_Core
 */
require_once 'Zend/Cache/Core.php';


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Frontend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Frontend_Output extends Zend_Cache_Core
{

    private $_idStack = array();

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @return void
     */
    public function __construct(array $options = array())
    {
        parent::__construct($options);
        $this->_idStack = array();
    }

    /**
     * Start the cache
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @param  boolean $echoData               If set to true, datas are sent to the browser if the cache is hit (simpy returned else)
     * @return mixed True if the cache is hit (false else) with $echoData=true (default) ; string else (datas)
     */
    public function start($id, $doNotTestCacheValidity = false, $echoData = true)
    {
        $data = $this->load($id, $doNotTestCacheValidity);
        if ($data !== false) {
            if ( $echoData ) {
                echo($data);
                return true;
            } else {
                return $data;
            }
        }
        ob_start();
        ob_implicit_flush(false);
        $this->_idStack[] = $id;
        return false;
    }

    /**
     * Stop the cache
     *
     * @param  array   $tags             Tags array
     * @param  int     $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @param  string  $forcedDatas      If not null, force written datas with this
     * @param  boolean $echoData         If set to true, datas are sent to the browser
     * @param  int     $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends         
     * @return void
     */
    public function end($tags = array(), $specificLifetime = false, $forcedDatas = null, $echoData = true, $priority = 8)
    {
        if (is_null($forcedDatas)) {
            $data = ob_get_contents();
            ob_end_clean();
        } else {
            $data =& $forcedDatas;
        }
        $id = array_pop($this->_idStack);
        if (is_null($id)) {
            Zend_Cache::throwException('use of end() without a start()');
        }
        $this->save($data, $id, $tags, $specificLifetime, $priority);
        if ($echoData) {
            echo($data);
        }
    }

}
PKpG[LVi��Cache/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Exception extends Zend_Exception {}
PKpG[��T���Cache/Backend.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @package    Zend_Cache
 * @subpackage Zend_Cache_Backend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Backend
{
    /**
     * Frontend or Core directives
     *
     * =====> (int) lifetime :
     * - Cache lifetime (in seconds)
     * - If null, the cache is valid forever
     *
     * =====> (int) logging :
     * - if set to true, a logging is activated throw Zend_Log
     *
     * @var array directives
     */
    protected $_directives = array(
        'lifetime' => 3600,
        'logging'  => false,
        'logger'   => null
    );

    /**
     * Available options
     *
     * @var array available options
     */
    protected $_options = array();

    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $this->setOption($name, $value);
        }
    }

    /**
     * Set the frontend directives
     *
     * @param  array $directives Assoc of directives
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setDirectives($directives)
    {
        if (!is_array($directives)) Zend_Cache::throwException('Directives parameter must be an array');
        while (list($name, $value) = each($directives)) {
            if (!is_string($name)) {
                Zend_Cache::throwException("Incorrect option name : $name");
            }
            $name = strtolower($name);
            if (array_key_exists($name, $this->_directives)) {
                $this->_directives[$name] = $value;
            }

        }

        $this->_loggerSanity();
    }

    /**
     * Set an option
     *
     * @param  string $name
     * @param  mixed  $value
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setOption($name, $value)
    {
        if (!is_string($name)) {
            Zend_Cache::throwException("Incorrect option name : $name");
        }
        $name = strtolower($name);
        if (array_key_exists($name, $this->_options)) {
            $this->_options[$name] = $value;
        }
    }

    /**
     * Get the life time
     *
     * if $specificLifetime is not false, the given specific life time is used
     * else, the global lifetime is used
     *
     * @param  int $specificLifetime
     * @return int Cache life time
     */
    public function getLifetime($specificLifetime)
    {
        if ($specificLifetime === false) {
            return $this->_directives['lifetime'];
        }
        return $specificLifetime;
    }

    /**
     * Return true if the automatic cleaning is available for the backend
     *
     * DEPRECATED : use getCapabilities() instead
     * 
     * @deprecated 
     * @return boolean
     */
    public function isAutomaticCleaningAvailable()
    {
        return true;
    }

    /**
     * Return a system-wide tmp directory
     *
     * @return string System-wide tmp directory
     */
    static function getTmpDir()
    {
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            // windows...
            foreach (array($_ENV, $_SERVER) as $tab) {
                foreach (array('TEMP', 'TMP', 'windir', 'SystemRoot') as $key) {
                    if (isset($tab[$key])) {
                        $result = $tab[$key];
                        if (($key == 'windir') or ($key == 'SystemRoot')) {
                            $result = $result . '\\temp';
                        }
                        return $result;
                    }
                }
            }
            return '\\temp';
        } else {
            // unix...
            if (isset($_ENV['TMPDIR']))    return $_ENV['TMPDIR'];
            if (isset($_SERVER['TMPDIR'])) return $_SERVER['TMPDIR'];
            return '/tmp';
        }
    }

    /**
     * Make sure if we enable logging that the Zend_Log class
     * is available.
     * Create a default log object if none is set.
     *
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _loggerSanity()
    {
        if (!isset($this->_directives['logging']) || !$this->_directives['logging']) {
            return;
        }
        try {
            /**
             * @see Zend_Log
             */
            require_once 'Zend/Log.php';
        } catch (Zend_Exception $e) {
            Zend_Cache::throwException('Logging feature is enabled but the Zend_Log class is not available');
        }
        if (isset($this->_directives['logger']) && $this->_directives['logger'] instanceof Zend_Log) {
            return;
        }
        // Create a default logger to the standard output stream
        require_once 'Zend/Log/Writer/Stream.php';
        $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
        $this->_directives['logger'] = $logger;
    }

    /**
     * Log a message at the WARN (4) priority.
     *
     * @param  string $message
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _log($message, $priority = 4)
    {
        if (!$this->_directives['logging']) {
            return;
        }
        if (!(isset($this->_directives['logger']) || $this->_directives['logger'] instanceof Zend_Log)) {
            Zend_Cache::throwException('Logging is enabled but logger is not set');
        }
        $logger = $this->_directives['logger'];
        $logger->log($message, $priority);
    }

}
PKpG[_MQ0�U�UCache/Core.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Cache_Core
{
    /**
     * Backend Object
     *
     * @var object $_backend
     */
    protected $_backend = null;

    /**
     * Available options
     *
     * ====> (boolean) write_control :
     * - Enable / disable write control (the cache is read just after writing to detect corrupt entries)
     * - Enable write control will lightly slow the cache writing but not the cache reading
     * Write control can detect some corrupt cache files but maybe it's not a perfect control
     *
     * ====> (boolean) caching :
     * - Enable / disable caching
     * (can be very useful for the debug of cached scripts)
     *
     * =====> (string) cache_id_prefix :
     * - prefix for cache ids (namespace)
     *
     * ====> (boolean) automatic_serialization :
     * - Enable / disable automatic serialization
     * - It can be used to save directly datas which aren't strings (but it's slower)
     *
     * ====> (int) automatic_cleaning_factor :
     * - Disable / Tune the automatic cleaning process
     * - The automatic cleaning process destroy too old (for the given life time)
     *   cache files when a new cache file is written :
     *     0               => no automatic cache cleaning
     *     1               => systematic cache cleaning
     *     x (integer) > 1 => automatic cleaning randomly 1 times on x cache write
     *
     * ====> (int) lifetime :
     * - Cache lifetime (in seconds)
     * - If null, the cache is valid forever.
     *
     * ====> (boolean) logging :
     * - If set to true, logging is activated (but the system is slower)
     *
     * ====> (boolean) ignore_user_abort
     * - If set to true, the core will set the ignore_user_abort PHP flag inside the
     *   save() method to avoid cache corruptions in some cases (default false)
     *
     * @var array $_options available options
     */
    protected $_options = array(
        'write_control'             => true,
        'caching'                   => true,
        'cache_id_prefix'           => null,
        'automatic_serialization'   => false,
        'automatic_cleaning_factor' => 10,
        'lifetime'                  => 3600,
        'logging'                   => false,
        'logger'                    => null,
        'ignore_user_abort'         => false
    );

    /**
     * Array of options which have to be transfered to backend
     *
     * @var array $_directivesList
     */
    protected static $_directivesList = array('lifetime', 'logging', 'logger');

    /**
     * Not used for the core, just a sort a hint to get a common setOption() method (for the core and for frontends)
     *
     * @var array $_specificOptions
     */
    protected $_specificOptions = array();

    /**
     * Last used cache id
     *
     * @var string $_lastId
     */
    private $_lastId = null;
    
    /**
     * True if the backend implements Zend_Cache_Backend_ExtendedInterface
     *
     * @var boolean $_extendedBackend
     */
    protected $_extendedBackend = false;

    /**
     * Array of capabilities of the backend (only if it implements Zend_Cache_Backend_ExtendedInterface)
     * 
     * @var array
     */
    protected $_backendCapabilities = array();
    
    /**
     * Constructor
     *
     * @param  array $options Associative array of options
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function __construct(array $options = array())
    {
        while (list($name, $value) = each($options)) {
            $this->setOption($name, $value);
        }
        $this->_loggerSanity();
    }

    /**
     * Set the backend
     *
     * @param  object $backendObject
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setBackend(Zend_Cache_Backend $backendObject)
    {
        $this->_backend= $backendObject;
        // some options (listed in $_directivesList) have to be given
        // to the backend too (even if they are not "backend specific")
        $directives = array();
        foreach (Zend_Cache_Core::$_directivesList as $directive) {
            $directives[$directive] = $this->_options[$directive];
        }
        $this->_backend->setDirectives($directives);
        if (in_array('Zend_Cache_Backend_ExtendedInterface', class_implements($this->_backend))) {
            $this->_extendedBackend = true;
            $this->_backendCapabilities = $this->_backend->getCapabilities();
        }
        
    }

    /**
     * Returns the backend
     *
     * @return object backend object
     */
    public function getBackend()
    {
        return $this->_backend;
    }

    /**
     * Public frontend to set an option
     *
     * There is an additional validation (relatively to the protected _setOption method)
     *
     * @param  string $name  Name of the option
     * @param  mixed  $value Value of the option
     * @throws Zend_Cache_Exception
     * @return void
     */
    public function setOption($name, $value)
    {
        if (!is_string($name)) {
            Zend_Cache::throwException("Incorrect option name : $name");
        }
        $name = strtolower($name);
        if (array_key_exists($name, $this->_options)) {
            // This is a Core option
            $this->_setOption($name, $value);
            return;
        }
        if (array_key_exists($name, $this->_specificOptions)) {
            // This a specic option of this frontend
            $this->_specificOptions[$name] = $value;
            return;
        }
    }

    /**
     * Public frontend to get an option value
     *
     * @param  string $name  Name of the option
     * @throws Zend_Cache_Exception
     * @return mixed option value
     */
    public function getOption($name)
    {
        if (is_string($name)) {
            $name = strtolower($name);
            if (array_key_exists($name, $this->_options)) {
                // This is a Core option
                return $this->_options[$name];
            }
            if (array_key_exists($name, $this->_specificOptions)) {
                // This a specic option of this frontend
                return $this->_specificOptions[$name];
            }
        }
        Zend_Cache::throwException("Incorrect option name : $name");
    }

    /**
     * Set an option
     *
     * @param  string $name  Name of the option
     * @param  mixed  $value Value of the option
     * @throws Zend_Cache_Exception
     * @return void
     */
    private function _setOption($name, $value)
    {
        if (!is_string($name) || !array_key_exists($name, $this->_options)) {
            Zend_Cache::throwException("Incorrect option name : $name");
        }
        $this->_options[$name] = $value;
    }

    /**
     * Force a new lifetime
     *
     * The new value is set for the core/frontend but for the backend too (directive)
     *
     * @param  int $newLifetime New lifetime (in seconds)
     * @return void
     */
    public function setLifetime($newLifetime)
    {
        $this->_options['lifetime'] = $newLifetime;
        $this->_backend->setDirectives(array(
            'lifetime' => $newLifetime
        ));
    }

    /**
     * Test if a cache is available for the given id and (if yes) return it (false else)
     *
     * @param  string  $id                     Cache id
     * @param  boolean $doNotTestCacheValidity If set to true, the cache validity won't be tested
     * @param  boolean $doNotUnserialize       Do not serialize (even if automatic_serialization is true) => for internal use
     * @return mixed|false Cached datas
     */
    public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false)
    {
        if (!$this->_options['caching']) {
            return false;
        }
        $id = $this->_id($id); // cache id may need prefix
        $this->_lastId = $id;
        self::_validateIdOrTag($id);
        $data = $this->_backend->load($id, $doNotTestCacheValidity);
        if ($data===false) {
            // no cache available
            return false;
        }
        if ((!$doNotUnserialize) && $this->_options['automatic_serialization']) {
            // we need to unserialize before sending the result
            return unserialize($data);
        }
        return $data;
    }

    /**
     * Test if a cache is available for the given id
     *
     * @param  string $id Cache id
     * @return boolean True is a cache is available, false else
     */
    public function test($id)
    {
        if (!$this->_options['caching']) {
            return false;
        }
        $id = $this->_id($id); // cache id may need prefix
        self::_validateIdOrTag($id);
        $this->_lastId = $id;
        return $this->_backend->test($id);
    }

    /**
     * Save some data in a cache
     *
     * @param  mixed $data           Data to put in cache (can be another type than string if automatic_serialization is on)
     * @param  string $id             Cache id (if not set, the last cache id will be used)
     * @param  array $tags           Cache tags
     * @param  int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime)
     * @param  int   $priority         integer between 0 (very low priority) and 10 (maximum priority) used by some particular backends         
     * @throws Zend_Cache_Exception
     * @return boolean True if no problem
     */
    public function save($data, $id = null, $tags = array(), $specificLifetime = false, $priority = 8)
    {
        if (!$this->_options['caching']) {
            return true;
        }
        if (is_null($id)) {
            $id = $this->_lastId;
        } else {
            $id = $this->_id($id);
        }
        self::_validateIdOrTag($id);
        self::_validateTagsArray($tags);
        if ($this->_options['automatic_serialization']) {
            // we need to serialize datas before storing them
            $data = serialize($data);
        } else {
            if (!is_string($data)) {
                Zend_Cache::throwException("Datas must be string or set automatic_serialization = true");
            }
        }
        // automatic cleaning
        if ($this->_options['automatic_cleaning_factor'] > 0) {
            $rand = rand(1, $this->_options['automatic_cleaning_factor']);
            if ($rand==1) {
                if ($this->_extendedBackend) {
                    // New way
                    if ($this->_backendCapabilities['automatic_cleaning']) {
                        $this->clean(Zend_Cache::CLEANING_MODE_OLD);
                    } else {
                        $this->_log('Zend_Cache_Core::save() / automatic cleaning is not available/necessary with this backend');
                    }
                } else {
                    // Deprecated way (will be removed in next major version)
                    if (method_exists($this->_backend, 'isAutomaticCleaningAvailable') && ($this->_backend->isAutomaticCleaningAvailable())) {
                        $this->clean(Zend_Cache::CLEANING_MODE_OLD);
                    } else {
                        $this->_log('Zend_Cache_Core::save() / automatic cleaning is not available/necessary with this backend');
                    }
                }
            }
        }
        if ($this->_options['ignore_user_abort']) {
            $abort = ignore_user_abort(true);
        }
        if (($this->_extendedBackend) && ($this->_backendCapabilities['priority'])) {
            $result = $this->_backend->save($data, $id, $tags, $specificLifetime, $priority);
        } else {
            $result = $this->_backend->save($data, $id, $tags, $specificLifetime);
        }
        if ($this->_options['ignore_user_abort']) {
            ignore_user_abort($abort);
        }
        if (!$result) {
            // maybe the cache is corrupted, so we remove it !
            if ($this->_options['logging']) {
                $this->_log("Zend_Cache_Core::save() : impossible to save cache (id=$id)");
            }
            $this->remove($id);
            return false;
        }
        if ($this->_options['write_control']) {
            $data2 = $this->_backend->load($id, true);
            if ($data!=$data2) {
                $this->_log('Zend_Cache_Core::save() / write_control : written and read data do not match');
                $this->_backend->remove($id);
                return false;
            }
        }
        return true;
    }

    /**
     * Remove a cache
     *
     * @param  string $id Cache id to remove
     * @return boolean True if ok
     */
    public function remove($id)
    {
        if (!$this->_options['caching']) {
            return true;
        }
        $id = $this->_id($id); // cache id may need prefix
        self::_validateIdOrTag($id);
        return $this->_backend->remove($id);
    }

    /**
     * Clean cache entries
     *
     * Available modes are :
     * 'all' (default)  => remove all cache entries ($tags is not used)
     * 'old'            => remove too old cache entries ($tags is not used)
     * 'matchingTag'    => remove cache entries matching all given tags
     *                     ($tags can be an array of strings or a single string)
     * 'notMatchingTag' => remove cache entries not matching one of the given tags
     *                     ($tags can be an array of strings or a single string)
     * 'matchingAnyTag' => remove cache entries matching any given tags
     *                     ($tags can be an array of strings or a single string)
     *
     * @param  string       $mode
     * @param  array|string $tags
     * @throws Zend_Cache_Exception
     * @return boolean True if ok
     */
    public function clean($mode = 'all', $tags = array())
    {
        if (!$this->_options['caching']) {
            return true;
        }
        if (!in_array($mode, array(Zend_Cache::CLEANING_MODE_ALL,
                                   Zend_Cache::CLEANING_MODE_OLD,
                                   Zend_Cache::CLEANING_MODE_MATCHING_TAG,
                                   Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
                                   Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG))) {
            Zend_Cache::throwException('Invalid cleaning mode');
        }
        self::_validateTagsArray($tags);
        return $this->_backend->clean($mode, $tags);
    }
    
    /**
     * Return an array of stored cache ids which match given tags
     * 
     * In case of multiple tags, a logical AND is made between tags
     *
     * @param array $tags array of tags
     * @return array array of matching cache ids (string)
     */
    public function getIdsMatchingTags($tags = array())
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        if (!($this->_backendCapabilities['tags'])) {
            Zend_Cache::throwException('tags are not supported by the current backend');
        }
        return $this->_backend->getIdsMatchingTags($tags);
    }
    
    /**
     * Return an array of stored cache ids which don't match given tags
     * 
     * In case of multiple tags, a logical OR is made between tags
     *
     * @param array $tags array of tags
     * @return array array of not matching cache ids (string)
     */    
    public function getIdsNotMatchingTags($tags = array())
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        if (!($this->_backendCapabilities['tags'])) {
            Zend_Cache::throwException('tags are not supported by the current backend');
        }
        return $this->_backend->getIdsNotMatchingTags($tags);
    }
    
    /**
     * Return an array of stored cache ids
     * 
     * @return array array of stored cache ids (string)
     */
    public function getIds()
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        return $this->_backend->getIds();
    }
    
    /**
     * Return an array of stored tags
     *
     * @return array array of stored tags (string)
     */
    public function getTags()
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        if (!($this->_backendCapabilities['tags'])) {
            Zend_Cache::throwException('tags are not supported by the current backend');
        }
        return $this->_backend->getTags();        
    }
    
    /**
     * Return the filling percentage of the backend storage
     *
     * @return int integer between 0 and 100
     */
    public function getFillingPercentage()
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        return $this->_backend->getFillingPercentage();        
    }
    
    /**
     * Give (if possible) an extra lifetime to the given cache id
     *
     * @param string $id cache id
     * @param int $extraLifetime
     * @return boolean true if ok
     */
    public function touch($id, $extraLifetime)
    {
        if (!$this->_extendedBackend) {
            Zend_Cache::throwException('Current backend doesn\'t implement the Zend_Cache_Backend_ExtendedInterface, so this method is not available');
        }
        return $this->_backend->touch($id, $extraLifetime);           
    }
    
    /**
     * Validate a cache id or a tag (security, reliable filenames, reserved prefixes...)
     *
     * Throw an exception if a problem is found
     *
     * @param  string $string Cache id or tag
     * @throws Zend_Cache_Exception
     * @return void
     */
    private static function _validateIdOrTag($string)
    {
        if (!is_string($string)) {
            Zend_Cache::throwException('Invalid id or tag : must be a string');
        }
        if (substr($string, 0, 9) == 'internal-') {
            Zend_Cache::throwException('"internal-*" ids or tags are reserved');
        }
        if (!preg_match('~^[\w]+$~D', $string)) {
            Zend_Cache::throwException("Invalid id or tag '$string' : must use only [a-zA-Z0-9_]");
        }
    }

    /**
     * Validate a tags array (security, reliable filenames, reserved prefixes...)
     *
     * Throw an exception if a problem is found
     *
     * @param  array $tags Array of tags
     * @throws Zend_Cache_Exception
     * @return void
     */
    private static function _validateTagsArray($tags)
    {
        if (!is_array($tags)) {
            Zend_Cache::throwException('Invalid tags array : must be an array');
        }
        foreach($tags as $tag) {
            self::_validateIdOrTag($tag);
        }
        reset($tags);
    }

    /**
     * Make sure if we enable logging that the Zend_Log class
     * is available.
     * Create a default log object if none is set.
     *
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _loggerSanity()
    {
        if (!isset($this->_options['logging']) || !$this->_options['logging']) {
            return;
        }

        if (isset($this->_options['logger']) && $this->_options['logger'] instanceof Zend_Log) {
            return;
        }

        // Create a default logger to the standard output stream
        require_once 'Zend/Log/Writer/Stream.php';
        $logger = new Zend_Log(new Zend_Log_Writer_Stream('php://output'));
        $this->_options['logger'] = $logger;
    }

    /**
     * Log a message at the WARN (4) priority.
     *
     * @param string $message
     * @throws Zend_Cache_Exception
     * @return void
     */
    protected function _log($message, $priority = 4)
    {
        if (!$this->_options['logging']) {
            return;
        }
        if (!(isset($this->_options['logger']) || $this->_options['logger'] instanceof Zend_Log)) {
            Zend_Cache::throwException('Logging is enabled but logger is not set');
        }
        $logger = $this->_options['logger'];
        $logger->log($message, $priority);
    }

    /**
     * Make and return a cache id
     *
     * Checks 'cache_id_prefix' and returns new id with prefix or simply the id if null
     *
     * @param  string $id Cache id
     * @return string Cache id (with or without prefix)
     */
    private function _id($id)
    {
        if (!is_null($id) && isset($this->_options['cache_id_prefix'])) {
            return $this->_options['cache_id_prefix'] . $id; // return with prefix
        }
        return $id; // no prefix, just return the $id passed
    }

}
PKpG[9�|��	�	InfoCard/Adapter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * The interface required by all Zend_InfoCard Adapter classes to implement. It represents
 * a series of callback methods used by the component during processing of an information card
 *
 * @category   Zend
 * @package    Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Adapter_Interface
{
    /**
     * Store the assertion's claims in persistent storage
     *
     * @param string $assertionURI The assertion type URI
     * @param string $assertionID The specific assertion ID
     * @param array $conditions An array of claims to store associated with the assertion
     * @return bool True on success, false on failure
     */
    public function storeAssertion($assertionURI, $assertionID, $conditions);

    /**
     * Retrieve the claims of a given assertion from persistent storage
     *
     * @param string $assertionURI The assertion type URI
     * @param string $assertionID The assertion ID to retrieve
     * @return mixed False if the assertion ID was not found for that URI, or an array of
     *               conditions associated with that assertion if found in the same format
     *                  provided
     */
    public function retrieveAssertion($assertionURI, $assertionID);

    /**
     * Remove the claims of a given assertion from persistent storage
     *
     * @param string $asserionURI The assertion type URI
     * @param string $assertionID The assertion ID to remove
     * @return bool True on success, false on failure
     */
    public function removeAssertion($asserionURI, $assertionID);
}
PKpG[I�
��InfoCard/Adapter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Exception
 */
require_once 'Zend/InfoCard/Exception.php';

/**
 * @category   Zend
 * @subpackage Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Adapter_Exception extends Zend_InfoCard_Exception 
{
}
PKpG[�
�jjInfoCard/Adapter/Default.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Default.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Adapter_Interface
 */
require_once 'Zend/InfoCard/Adapter/Interface.php';

/**
 * Zend_InfoCard_Adapter_Exception
 */
require_once 'Zend/InfoCard/Adapter/Exception.php';

/**
 * The default InfoCard component Adapter which serves as a pass-thru placeholder
 * for developers. Initially developed to provide a callback mechanism to store and retrieve
 * assertions as part of the validation process it can be used anytime callback facilities
 * are necessary
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Adapter_Default implements Zend_InfoCard_Adapter_Interface
{
    /**
     * Store the assertion (pass-thru does nothing)
     *
     * @param string $assertionURI The assertion type URI
     * @param string $assertionID The specific assertion ID
     * @param array $conditions An array of claims to store associated with the assertion
     * @return bool Always returns true (would return false on store failure)
     */
    public function storeAssertion($assertionURI, $assertionID, $conditions)
    {
        return true;
    }

    /**
     * Retrieve an assertion (pass-thru does nothing)
     *
     * @param string $assertionURI The assertion type URI
     * @param string $assertionID The assertion ID to retrieve
     * @return mixed False if the assertion ID was not found for that URI, or an array of
     *               conditions associated with that assertion if found (always returns false)
     */
    public function retrieveAssertion($assertionURI, $assertionID)
    {
        return false;
    }

    /**
     * Remove an assertion (pass-thru does nothing)
     *
     * @param string $assertionURI The assertion type URI
     * @param string $assertionID The assertion ID to remove
     * @return bool Always returns true (false on removal failure)
     */
    public function removeAssertion($assertionURI, $assertionID)
    {
        return null;
    }
}
PKpG[�e����InfoCard/Xml/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Exception
 */
require_once 'Zend/InfoCard/Exception.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Exception extends Zend_InfoCard_Exception 
{
}
PKpG[��J��-InfoCard/Xml/Security/Transform/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Interface for XML Security Transforms
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Xml_Security_Transform_Interface
{
    /**
     * Transform the given XML string according to the transform rules
     * implemented by the object using this interface
     *
     * @throws Zend_InfoCard_Xml_Security_Transform_Exception
     * @param string $strXmlData the input XML
     * @return string the output XML
     */
    public function transform($strXmlData);
}
PKpG[�����-InfoCard/Xml/Security/Transform/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Security_Exception
 */
require_once 'Zend/InfoCard/Xml/Security/Exception.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security_Transform_Exception extends Zend_InfoCard_Xml_Security_Exception 
{
}
PKpG[ğ�I>>.InfoCard/Xml/Security/Transform/XmlExcC14N.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: XmlExcC14N.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Security_Transform_Interface
 */
require_once 'Zend/InfoCard/Xml/Security/Transform/Interface.php';

/**
 * Zend_InfoCard_Xml_Security_Transform_Exception
 */
require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php';

/**
 * A Transform to perform C14n XML Exclusive Canonicalization
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security_Transform_XmlExcC14N
    implements Zend_InfoCard_Xml_Security_Transform_Interface
{
    /**
     * Transform the input XML based on C14n XML Exclusive Canonicalization rules
     *
     * @throws Zend_InfoCard_Xml_Security_Transform_Exception
     * @param string $strXMLData The input XML
     * @return string The output XML
     */
    public function transform($strXMLData)
    {
        $dom = new DOMDocument();
        $dom->loadXML($strXMLData);

        if(method_exists($dom, 'C14N')) {
            return $dom->C14N(true, false);
        }

        throw new Zend_InfoCard_Xml_Security_Transform_Exception("This transform requires the C14N() method to exist in the DOM extension");
    }
}
PKpG[��$OO6InfoCard/Xml/Security/Transform/EnvelopedSignature.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: EnvelopedSignature.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Security_Transform_Interface
 */
require_once 'Zend/InfoCard/Xml/Security/Transform/Interface.php';

/**
 * Zend_InfoCard_Xml_Security_Transform_Exception
 */
require_once 'Zend/InfoCard/Xml/Security/Transform/Exception.php';

/**
 * A object implementing the EnvelopedSignature XML Transform
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security_Transform_EnvelopedSignature
    implements Zend_InfoCard_Xml_Security_Transform_Interface
{
    /**
     * Transforms the XML Document according to the EnvelopedSignature Transform
     *
     * @throws Zend_InfoCard_Xml_Security_Transform_Exception
     * @param string $strXMLData The input XML data
     * @return string the transformed XML data
     */
    public function transform($strXMLData)
    {
        $sxe = simplexml_load_string($strXMLData);

        if(!$sxe->Signature) {
            throw new Zend_InfoCard_Xml_Security_Transform_Exception("Unable to locate Signature Block for EnvelopedSignature Transform");
        }

        unset($sxe->Signature);

        return $sxe->asXML();
    }
}
PKpG[r�?��#InfoCard/Xml/Security/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Exception
 */
require_once 'Zend/InfoCard/Xml/Exception.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security_Exception extends Zend_InfoCard_Xml_Exception 
{
}
PKpG[U�`���#InfoCard/Xml/Security/Transform.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Transform.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * A class to create a transform rule set based on XML URIs and then apply those rules
 * in the correct order to a given XML input
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security_Transform
{
    /**
     * A list of transforms to apply
     *
     * @var array
     */
    protected $_transformList = array();

    /**
     * Returns the name of the transform class based on a given URI
     *
     * @throws Zend_InfoCard_Xml_Security_Exception
     * @param string $uri The transform URI
     * @return string The transform implementation class name
     */
    protected function _findClassbyURI($uri)
    {
        switch($uri) {
            case 'http://www.w3.org/2000/09/xmldsig#enveloped-signature':
                return 'Zend_InfoCard_Xml_Security_Transform_EnvelopedSignature';
            case 'http://www.w3.org/2001/10/xml-exc-c14n#':
                return 'Zend_InfoCard_Xml_Security_Transform_XmlExcC14N';
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Unknown or Unsupported Transformation Requested");
        }
    }

    /**
     * Add a Transform URI to the list of transforms to perform
     *
     * @param string $uri The Transform URI
     * @return Zend_InfoCard_Xml_Security_Transform
     */
    public function addTransform($uri)
    {
        $class = $this->_findClassbyURI($uri);

        $this->_transformList[] = array('uri' => $uri,
                                        'class' => $class);
        return $this;
    }

    /**
     * Return the list of transforms to perform
     *
     * @return array The list of transforms
     */
    public function getTransformList()
    {
        return $this->_transformList;
    }

    /**
     * Apply the transforms in the transform list to the input XML document
     *
     * @param string $strXmlDocument The input XML
     * @return string The XML after the transformations have been applied
     */
    public function applyTransforms($strXmlDocument)
    {
        foreach($this->_transformList as $transform) {
            Zend_Loader::loadClass($transform['class']);

            $transformer = new $transform['class'];

            // We can't really test this check because it would require logic changes in the component itself
            // @codeCoverageIgnoreStart
            if(!($transformer instanceof Zend_InfoCard_Xml_Security_Transform_Interface)) {
                throw new Zend_InfoCard_Xml_Security_Exception("Transforms must implement the Transform Interface");
            }
            // @codeCoverageIgnoreEnd

            $strXmlDocument = $transformer->transform($strXmlDocument);
        }

        return $strXmlDocument;
    }
}
PKpG[��1�InfoCard/Xml/Assertion.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Assertion.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Exception
 */
require_once 'Zend/InfoCard/Xml/Exception.php';

/**
 * Zend_InfoCard_Xml_Assertion_Interface
 */
require_once 'Zend/InfoCard/Xml/Assertion/Interface.php';

/**
 * Factory object to retrieve an Assertion object based on the type of XML document provided
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
final class Zend_InfoCard_Xml_Assertion
{
    /**
     * The namespace for a SAML-formatted Assertion document
     */
    const TYPE_SAML = 'urn:oasis:names:tc:SAML:1.0:assertion';

    /**
     * Constructor (disabled)
     *
     * @return void
     */
    private function __construct()
    {
    }

    /**
     * Returns an instance of a InfoCard Assertion object based on the XML data provided
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @param string $xmlData The XML-Formatted Assertion
     * @return Zend_InfoCard_Xml_Assertion_Interface
     * @throws Zend_InfoCard_Xml_Exception
     */
    static public function getInstance($xmlData)
    {

        if($xmlData instanceof Zend_InfoCard_Xml_Element) {
            $strXmlData = $xmlData->asXML();
        } else if (is_string($xmlData)) {
            $strXmlData = $xmlData;
        } else {
            throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
        }

        $sxe = simplexml_load_string($strXmlData);

        $namespaces = $sxe->getDocNameSpaces();

        foreach($namespaces as $namespace) {
            switch($namespace) {
                case self::TYPE_SAML:
                    include_once 'Zend/InfoCard/Xml/Assertion/Saml.php';
                    return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_Assertion_Saml', null);
            }
        }

        throw new Zend_InfoCard_Xml_Exception("Unable to determine Assertion type by Namespace");
    }
}
PKpG[�Q�;;InfoCard/Xml/Element.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Element.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Exception
 */
require_once 'Zend/InfoCard/Xml/Exception.php';

/**
 * Zend_InfoCard_Xml_Element_Interface
 */
require_once 'Zend/InfoCard/Xml/Element/Interface.php';

/**
 * Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * An abstract class representing a an XML data block
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_InfoCard_Xml_Element
    extends SimpleXMLElement
    implements Zend_InfoCard_Xml_Element_Interface
{
    /**
     * Convert the object to a string by displaying its XML content
     *
     * @return string an XML representation of the object
     */
    public function __toString()
    {
        return $this->asXML();
    }

    /**
     * Converts an XML Element object into a DOM object
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @param Zend_InfoCard_Xml_Element $e The object to convert
     * @return DOMElement A DOMElement representation of the same object
     */
    static public function convertToDOM(Zend_InfoCard_Xml_Element $e)
    {
        $dom = dom_import_simplexml($e);

        if(!($dom instanceof DOMElement)) {
            // Zend_InfoCard_Xml_Element exntes SimpleXMLElement, so this should *never* fail
            // @codeCoverageIgnoreStart
            throw new Zend_InfoCard_Xml_Exception("Failed to convert between SimpleXML and DOM");
            // @codeCoverageIgnoreEnd
        }

        return $dom;
    }

    /**
     * Converts a DOMElement object into the specific class
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @param DOMElement $e The DOMElement object to convert
     * @param string $classname The name of the class to convert it to (must inhert from Zend_InfoCard_Xml_Element)
     * @return Zend_InfoCard_Xml_Element a Xml Element object from the DOM element
     */
    static public function convertToObject(DOMElement $e, $classname)
    {

        Zend_Loader::loadClass($classname);

        $reflection = new ReflectionClass($classname);

        if(!$reflection->isSubclassOf('Zend_InfoCard_Xml_Element')) {
            throw new Zend_InfoCard_Xml_Exception("DOM element must be converted to an instance of Zend_InfoCard_Xml_Element");
        }

        $sxe = simplexml_import_dom($e, $classname);

        if(!($sxe instanceof Zend_InfoCard_Xml_Element)) {
            // Since we just checked to see if this was a subclass of Zend_infoCard_Xml_Element this shoudl never fail
            // @codeCoverageIgnoreStart
            throw new Zend_InfoCard_Xml_Exception("Failed to convert between DOM and SimpleXML");
            // @codeCoverageIgnoreEnd
        }

        return $sxe;
    }
}
PKpG[r���� InfoCard/Xml/KeyInfo/Default.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Default.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_KeyInfo_Abstract
 */
require_once 'Zend/InfoCard/Xml/KeyInfo/Abstract.php';

/**
 * Zend_InfoCard_Xml_SecurityTokenReference
 */
require_once 'Zend/InfoCard/Xml/SecurityTokenReference.php';

/**
 * An object representation of a XML <KeyInfo> block which doesn't provide a namespace
 * In this context, it is assumed to mean that it is the type of KeyInfo block which
 * contains the SecurityTokenReference
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_KeyInfo_Default extends Zend_InfoCard_Xml_KeyInfo_Abstract
{
    /**
     * Returns the object representation of the SecurityTokenReference block
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return Zend_InfoCard_Xml_SecurityTokenReference
     */
    public function getSecurityTokenReference()
    {
        $this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd');

        list($sectokenref) = $this->xpath('//o:SecurityTokenReference');

        if(!($sectokenref instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception('Could not locate the Security Token Reference');
        }

        return Zend_InfoCard_Xml_SecurityTokenReference::getInstance($sectokenref);
    }
}
PKpG[�0		 InfoCard/Xml/KeyInfo/XmlDSig.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: XmlDSig.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_KeyInfo_Abstract
 */
require_once 'Zend/InfoCard/Xml/KeyInfo/Abstract.php';

/**
 * Zend_InfoCard_Xml_EncryptedKey
 */
require_once 'Zend/InfoCard/Xml/EncryptedKey.php';

/**
 * Zend_InfoCard_Xml_KeyInfo_Interface
 */
require_once 'Zend/InfoCard/Xml/KeyInfo/Interface.php';

/**
 * Represents a Xml Digital Signature XML Data Block
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_KeyInfo_XmlDSig
    extends Zend_InfoCard_Xml_KeyInfo_Abstract
    implements Zend_InfoCard_Xml_KeyInfo_Interface
{
    /**
     * Returns an instance of the EncryptedKey Data Block
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return Zend_InfoCard_Xml_EncryptedKey
     */
    public function getEncryptedKey()
    {
        $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
        list($encryptedkey) = $this->xpath('//e:EncryptedKey');

        if(!($encryptedkey instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Failed to retrieve encrypted key");
        }

        return Zend_InfoCard_Xml_EncryptedKey::getInstance($encryptedkey);
    }

    /**
     * Returns the KeyInfo Block within the encrypted key
     *
     * @return Zend_InfoCard_Xml_KeyInfo_Default
     */
    public function getKeyInfo()
    {
        return $this->getEncryptedKey()->getKeyInfo();
    }
}
PKpG[�T~F��!InfoCard/Xml/KeyInfo/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_InfoCard_Xml_KeyInfo_Abstract extends Zend_InfoCard_Xml_Element 
{
}
PKpG[������"InfoCard/Xml/KeyInfo/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Xml_KeyInfo_Interface
{
    /**
     * Return an object representing a KeyInfo data type
     *
     * @return Zend_InfoCard_Xml_KeyInfo
     */
    public function getKeyInfo();
}
PKpG[
AIy��"InfoCard/Xml/Element/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * The Interface used to represent an XML Data Type
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Xml_Element_Interface
{
    /**
     * Return the data within the object as an XML document
     */
    public function asXML();

    /**
     * Magic function which allows us to treat the object as a string to return XML
     * (same as the asXML() method)
     */
    public function __toString();
}
PKpG[;�*��	�	InfoCard/Xml/EncryptedData.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: EncryptedData.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_EncryptedData
 */
require_once 'Zend/InfoCard/Xml/Exception.php';

/**
 * A factory class for producing Zend_InfoCard_Xml_EncryptedData objects based on
 * the type of XML document provided
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
final class Zend_InfoCard_Xml_EncryptedData
{
    /**
     * Constructor (disabled)
     *
     * @return void
     */
    private function __construct()
    {
    }

    /**
     * Returns an instance of the class
     *
     * @param string $xmlData The XML EncryptedData String
     * @return Zend_InfoCard_Xml_EncryptedData_Abstract
     * @throws Zend_InfoCard_Xml_Exception
     */
    static public function getInstance($xmlData)
    {

        if($xmlData instanceof Zend_InfoCard_Xml_Element) {
            $strXmlData = $xmlData->asXML();
        } else if (is_string($xmlData)) {
            $strXmlData = $xmlData;
        } else {
            throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
        }

        $sxe = simplexml_load_string($strXmlData);

        switch($sxe['Type']) {
            case 'http://www.w3.org/2001/04/xmlenc#Element':
                include_once 'Zend/InfoCard/Xml/EncryptedData/XmlEnc.php';
                return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_EncryptedData_XmlEnc');
            default:
                throw new Zend_InfoCard_Xml_Exception("Unknown EncryptedData type found");
        }
    }
}
PKpG[�O�\\InfoCard/Xml/EncryptedKey.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: EncryptedKey.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * Zend_InfoCard_Xml_EncryptedKey
 */
require_once 'Zend/InfoCard/Xml/EncryptedKey.php';

/**
 * Zend_InfoCard_Xml_KeyInfo_Interface
 */
require_once 'Zend/InfoCard/Xml/KeyInfo/Interface.php';

/**
 * An object representing an Xml EncryptedKEy block
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_EncryptedKey
    extends Zend_InfoCard_Xml_Element
    implements Zend_InfoCard_Xml_KeyInfo_Interface
{
    /**
     * Return an instance of the object based on input XML Data
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @param string $xmlData The EncryptedKey XML Block
     * @return Zend_InfoCard_Xml_EncryptedKey
     */
    static public function getInstance($xmlData)
    {
        if($xmlData instanceof Zend_InfoCard_Xml_Element) {
            $strXmlData = $xmlData->asXML();
        } else if (is_string($xmlData)) {
            $strXmlData = $xmlData;
        } else {
            throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
        }

        $sxe = simplexml_load_string($strXmlData);

        if($sxe->getName() != "EncryptedKey") {
            throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for EncryptedKey");
        }

        return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_EncryptedKey");
    }

    /**
     * Returns the Encyption Method Algorithm URI of the block
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return string the Encryption method algorithm URI
     */
    public function getEncryptionMethod()
    {

        $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
        list($encryption_method) = $this->xpath("//e:EncryptionMethod");

        if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block");
        }

        $dom = self::convertToDOM($encryption_method);

        if(!$dom->hasAttribute('Algorithm')) {
            throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block");
        }

        return $dom->getAttribute('Algorithm');

    }

    /**
     * Returns the Digest Method Algorithm URI used
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return string the Digest Method Algorithm URI
     */
    public function getDigestMethod()
    {
        $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');
        list($encryption_method) = $this->xpath("//e:EncryptionMethod");

        if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the e:EncryptionMethod KeyInfo encryption block");
        }

        if(!($encryption_method->DigestMethod instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the DigestMethod block");
        }

        $dom = self::convertToDOM($encryption_method->DigestMethod);

        if(!$dom->hasAttribute('Algorithm')) {
            throw new Zend_InfoCard_Xml_Exception("Unable to determine the digest algorithm for the symmetric Keyinfo");
        }

        return $dom->getAttribute('Algorithm');

    }

    /**
     * Returns the KeyInfo block object
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return Zend_InfoCard_Xml_KeyInfo_Abstract
     */
    public function getKeyInfo()
    {

        if(isset($this->KeyInfo)) {
            return Zend_InfoCard_Xml_KeyInfo::getInstance($this->KeyInfo);
        }

        throw new Zend_InfoCard_Xml_Exception("Unable to locate a KeyInfo block");
    }

    /**
     * Return the encrypted value of the block in base64 format
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return string The Value of the CipherValue block in base64 format
     */
    public function getCipherValue()
    {

        $this->registerXPathNamespace('e', 'http://www.w3.org/2001/04/xmlenc#');

        list($cipherdata) = $this->xpath("//e:CipherData");

        if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the e:CipherData block");
        }

        $cipherdata->registerXPathNameSpace('enc', 'http://www.w3.org/2001/04/xmlenc#');
        list($ciphervalue) = $cipherdata->xpath("//enc:CipherValue");

        if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block");
        }

        return (string)$ciphervalue;
    }
}
PKpG[H�����InfoCard/Xml/KeyInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: KeyInfo.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * Factory class to return a XML KeyInfo block based on input XML
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_KeyInfo
{
    /**
     * Constructor (disabled)
     *
     * @return void
     */
    private function __construct()
    {
    }

    /**
     * Returns an instance of KeyInfo object based on the input KeyInfo XML block
     *
     * @param string $xmlData The KeyInfo XML Block
     * @return Zend_InfoCard_Xml_KeyInfo_Abstract
     * @throws Zend_InfoCard_Xml_Exception
     */
    static public function getInstance($xmlData)
    {

        if($xmlData instanceof Zend_InfoCard_Xml_Element) {
            $strXmlData = $xmlData->asXML();
        } else if (is_string($xmlData)) {
            $strXmlData = $xmlData;
        } else {
            throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
        }

        $sxe = simplexml_load_string($strXmlData);

        $namespaces = $sxe->getDocNameSpaces();

        if(!empty($namespaces)) {
            foreach($sxe->getDocNameSpaces() as $namespace) {
                switch($namespace) {
                    case 'http://www.w3.org/2000/09/xmldsig#':
                        include_once 'Zend/InfoCard/Xml/KeyInfo/XmlDSig.php';
                        return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_XmlDSig');
                    default:

                        throw new Zend_InfoCard_Xml_Exception("Unknown KeyInfo Namespace provided");
                    // We are ignoring these lines, as XDebug reports each as a "non executed" line
                    // which breaks my coverage %
                    // @codeCoverageIgnoreStart
                }
            }
        }
        // @codeCoverageIgnoreEnd

        include_once 'Zend/InfoCard/Xml/KeyInfo/Default.php';
        return simplexml_load_string($strXmlData, 'Zend_InfoCard_Xml_KeyInfo_Default');
    }
}
PKpG[�Z���$InfoCard/Xml/Assertion/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * The Interface required by any InfoCard Assertion Object implemented within the component
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Xml_Assertion_Interface
{
    /**
     * Get the Assertion ID of the assertion
     *
     * @return string The Assertion ID
     */
    public function getAssertionID();

    /**
     * Return an array of attributes (claims) contained within the assertion
     *
     * @return array An array of attributes / claims within the assertion
     */
    public function getAttributes();

    /**
     * Get the Assertion URI for this type of Assertion
     *
     * @return string the Assertion URI
     */
    public function getAssertionURI();

    /**
     * Return an array of conditions which the assertions are predicated on
     *
     * @return array an array of conditions
     */
    public function getConditions();

    /**
     * Validate the conditions array returned from the getConditions() call
     *
     * @param array $conditions An array of condtions for the assertion taken from getConditions()
     * @return mixed Boolean true on success, an array of condition, error message on failure
     */
    public function validateConditions(Array $conditions);
}
PKpG[ �8�""InfoCard/Xml/Assertion/Saml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Saml.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * Zend_InfoCard_Xml_Assertion_Interface
 */
require_once 'Zend/InfoCard/Xml/Assertion/Interface.php';

/**
 * A Xml Assertion Document in SAML Token format
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Assertion_Saml
    extends Zend_InfoCard_Xml_Element
    implements Zend_InfoCard_Xml_Assertion_Interface
{

    /**
     * Audience Restriction Condition
     */
    const CONDITION_AUDIENCE = 'AudienceRestrictionCondition';

    /**
     * The URI for a 'bearer' confirmation
     */
    const CONFIRMATION_BEARER = 'urn:oasis:names:tc:SAML:1.0:cm:bearer';

    /**
     * The amount of time in seconds to buffer when checking conditions to ensure
     * that differences between client/server clocks don't interfer too much
     */
    const CONDITION_TIME_ADJ = 3600; // +- 5 minutes

    protected function _getServerName() {
        return $_SERVER['SERVER_NAME'];
    }

    protected function _getServerPort() {
        return $_SERVER['SERVER_PORT'];
    }

    /**
     * Validate the conditions array returned from the getConditions() call
     *
     * @param array $conditions An array of condtions for the assertion taken from getConditions()
     * @return mixed Boolean true on success, an array of condition, error message on failure
     */
    public function validateConditions(Array $conditions)
    {

        $currentTime = time();

        if(!empty($conditions)) {

            foreach($conditions as $condition => $conditionValue) {
                switch(strtolower($condition)) {
                    case 'audiencerestrictioncondition':

                        $serverName = $this->_getServerName();
                        $serverPort = $this->_getServerPort();

                        $self_aliases[] = $serverName;
                        $self_aliases[] = "{{$serverName}:{$serverPort}";

                        $found = false;
                        if(is_array($conditionValue)) {
                            foreach($conditionValue as $audience) {

                                list(,,$audience) = explode('/', $audience);
                                if(in_array($audience, $self_aliases)) {
                                    $found = true;
                                    break;
                                }
                            }
                        }

                        if(!$found) {
                            return array($condition, 'Could not find self in allowed audience list');
                        }

                        break;
                    case 'notbefore':
                        $notbeforetime = strtotime($conditionValue);

                        if($currentTime < $notbeforetime) {
                            if($currentTime + self::CONDITION_TIME_ADJ < $notbeforetime) {
                                return array($condition, 'Current time is before specified window');
                            }
                        }

                        break;
                    case 'notonorafter':
                        $notonoraftertime = strtotime($conditionValue);

                        if($currentTime >= $notonoraftertime) {
                            if($currentTime - self::CONDITION_TIME_ADJ >= $notonoraftertime) {
                                return array($condition, 'Current time is after specified window');
                            }
                        }

                        break;

                }
            }
        }
        return true;
    }

    /**
     * Get the Assertion URI for this type of Assertion
     *
     * @return string the Assertion URI
     */
    public function getAssertionURI()
    {
        return Zend_InfoCard_Xml_Assertion::TYPE_SAML;
    }

    /**
     * Get the Major Version of the SAML Assertion
     *
     * @return integer The major version number
     */
    public function getMajorVersion()
    {
        return (int)(string)$this['MajorVersion'];
    }

    /**
     * The Minor Version of the SAML Assertion
     *
     * @return integer The minor version number
     */
    public function getMinorVersion()
    {
        return (int)(string)$this['MinorVersion'];
    }

    /**
     * Get the Assertion ID of the assertion
     *
     * @return string The Assertion ID
     */
    public function getAssertionID()
    {
        return (string)$this['AssertionID'];
    }

    /**
     * Get the Issuer URI of the assertion
     *
     * @return string the URI of the assertion Issuer
     */
    public function getIssuer()
    {
        return (string)$this['Issuer'];
    }

    /**
     * Get the Timestamp of when the assertion was issued
     *
     * @return integer a UNIX timestamp representing when the assertion was issued
     */
    public function getIssuedTimestamp()
    {
        return strtotime((string)$this['IssueInstant']);
    }

    /**
     * Return an array of conditions which the assertions are predicated on
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return array an array of conditions
     */
    public function getConditions()
    {

        list($conditions) = $this->xpath("//saml:Conditions");

        if(!($conditions instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the saml:Conditions block");
        }

        $retval = array();

        foreach($conditions->children('urn:oasis:names:tc:SAML:1.0:assertion') as $key => $value) {
            switch($key) {
                case self::CONDITION_AUDIENCE:
                    foreach($value->children('urn:oasis:names:tc:SAML:1.0:assertion') as $audience_key => $audience_value) {
                        if($audience_key == 'Audience') {
                            $retval[$key][] = (string)$audience_value;
                        }
                    }
                    break;
            }
        }

        $retval['NotBefore'] = (string)$conditions['NotBefore'];
        $retval['NotOnOrAfter'] = (string)$conditions['NotOnOrAfter'];

        return $retval;
    }

    /**
     * Get they KeyInfo element for the Subject KeyInfo block
     *
     * @todo Not Yet Implemented
     * @ignore
     */
    public function getSubjectKeyInfo()
    {
        /**
         * @todo Not sure if this is part of the scope for now..
         */

        if($this->getConfirmationMethod() == self::CONFIRMATION_BEARER) {
            throw new Zend_InfoCard_Xml_Exception("Cannot get Subject Key Info when Confirmation Method was Bearer");
        }
    }

    /**
     * Return the Confirmation Method URI used in the Assertion
     *
     * @return string The confirmation method URI
     */
    public function getConfirmationMethod()
    {
        list($confirmation) = $this->xPath("//saml:ConfirmationMethod");
        return (string)$confirmation;
    }

    /**
     * Return an array of attributes (claims) contained within the assertion
     *
     * @return array An array of attributes / claims within the assertion
     */
    public function getAttributes()
    {
        $attributes = $this->xPath('//saml:Attribute');

        $retval = array();
        foreach($attributes as $key => $value) {

            $retkey = (string)$value['AttributeNamespace'].'/'.(string)$value['AttributeName'];

            $retval[$retkey]['name'] = (string)$value['AttributeName'];
            $retval[$retkey]['namespace'] = (string)$value['AttributeNamespace'];

            list($aValue) = $value->children('urn:oasis:names:tc:SAML:1.0:assertion');
            $retval[$retkey]['value'] = (string)$aValue;
        }

        return $retval;
    }
}
PKpG[�U�~~%InfoCard/Xml/EncryptedData/XmlEnc.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: XmlEnc.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_EncryptedData/Abstract.php
 */
require_once 'Zend/InfoCard/Xml/EncryptedData/Abstract.php';

/**
 * An XmlEnc formatted EncryptedData XML block
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_EncryptedData_XmlEnc extends Zend_InfoCard_Xml_EncryptedData_Abstract
{

    /**
     * Returns the Encrypted CipherValue block from the EncryptedData XML document
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return string The value of the CipherValue block base64 encoded
     */
    public function getCipherValue()
    {
        $this->registerXPathNamespace('enc', 'http://www.w3.org/2001/04/xmlenc#');

        list(,$cipherdata) = $this->xpath("//enc:CipherData");

        if(!($cipherdata instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:CipherData block");
        }

        list(,$ciphervalue) = $cipherdata->xpath("//enc:CipherValue");

        if(!($ciphervalue instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to fidn the enc:CipherValue block");
        }

        return (string)$ciphervalue;
    }
}
PKpG[��o���'InfoCard/Xml/EncryptedData/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * Zend_InfoCard_Xml_KeyInfo
 */
require_once 'Zend/InfoCard/Xml/KeyInfo.php';

/**
 * An abstract class representing a generic EncryptedData XML block. This class is extended
 * into a specific type of EncryptedData XML block (i.e. XmlEnc) as necessary
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_InfoCard_Xml_EncryptedData_Abstract extends Zend_InfoCard_Xml_Element
{

    /**
     * Returns the KeyInfo Block
     *
     * @return Zend_InfoCard_Xml_KeyInfo_Abstract
     */
    public function getKeyInfo()
    {
        return Zend_InfoCard_Xml_KeyInfo::getInstance($this->KeyInfo[0]);
    }

    /**
     * Return the Encryption method used to encrypt the assertion document
     * (the symmetric cipher)
     *
     * @throws Zend_InfoCard_Xml_Exception
     * @return string The URI of the Symmetric Encryption Method used
     */
    public function getEncryptionMethod()
    {

        /**
         * @todo This is pretty hacky unless we can always be confident that the first
         * EncryptionMethod block is the correct one (the AES or compariable symetric algorithm)..
         * the second is the PK method if provided.
         */
        list($encryption_method) = $this->xpath("//enc:EncryptionMethod");

        if(!($encryption_method instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Unable to find the enc:EncryptionMethod symmetric encryption block");
        }

        $dom = self::convertToDOM($encryption_method);

        if(!$dom->hasAttribute('Algorithm')) {
            throw new Zend_InfoCard_Xml_Exception("Unable to determine the encryption algorithm in the Symmetric enc:EncryptionMethod XML block");
        }

        return $dom->getAttribute('Algorithm');
    }

    /**
     * Returns the value of the encrypted block
     *
     * @return string the value of the encrypted CipherValue block
     */
    abstract function getCipherValue();
}
PKpG[��oϑ+�+InfoCard/Xml/Security.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Security.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Security_Exception
 */
require_once 'Zend/InfoCard/Xml/Security/Exception.php';

/**
 * Zend_InfoCard_Xml_Security_Transform
 */
require_once 'Zend/InfoCard/Xml/Security/Transform.php';

/**
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml_Security
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_Security
{
    /**
     * ASN.1 type INTEGER class
     */
    const ASN_TYPE_INTEGER = 0x02;

    /**
     * ASN.1 type BIT STRING class
     */
    const ASN_TYPE_BITSTRING = 0x03;

    /**
     * ASN.1 type SEQUENCE class
     */
    const ASN_TYPE_SEQUENCE = 0x30;

    /**
     * The URI for Canonical Method C14N Exclusive
     */
    const CANONICAL_METHOD_C14N_EXC = 'http://www.w3.org/2001/10/xml-exc-c14n#';

    /**
     * The URI for Signature Method SHA1
     */
    const SIGNATURE_METHOD_SHA1 = 'http://www.w3.org/2000/09/xmldsig#rsa-sha1';

    /**
     * The URI for Digest Method SHA1
     */
    const DIGEST_METHOD_SHA1 = 'http://www.w3.org/2000/09/xmldsig#sha1';

    /**
     * The Identifier for RSA Keys
     */
    const RSA_KEY_IDENTIFIER = '300D06092A864886F70D0101010500';

    /**
     * Constructor  (disabled)
     *
     * @return void
     */
    private function __construct()
    {
    }

    /**
     * Validates the signature of a provided XML block
     *
     * @param  string $strXMLInput An XML block containing a Signature
     * @return bool True if the signature validated, false otherwise
     * @throws Zend_InfoCard_Xml_Security_Exception
     */
    static public function validateXMLSignature($strXMLInput)
    {
        if(!extension_loaded('openssl')) {
            throw new Zend_InfoCard_Xml_Security_Exception("You must have the openssl extension installed to use this class");
        }

        $sxe = simplexml_load_string($strXMLInput);

        if(!isset($sxe->Signature)) {
            throw new Zend_InfoCard_Xml_Security_Exception("Could not identify XML Signature element");
        }

        if(!isset($sxe->Signature->SignedInfo)) {
            throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignedInfo block");
        }

        if(!isset($sxe->Signature->SignatureValue)) {
            throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a SignatureValue block");
        }

        if(!isset($sxe->Signature->KeyInfo)) {
            throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyInfo block");
        }

        if(!isset($sxe->Signature->KeyInfo->KeyValue)) {
            throw new Zend_InfoCard_Xml_Security_Exception("Signature is missing a KeyValue block");
        }

        switch((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']) {
            case self::CANONICAL_METHOD_C14N_EXC:
                $cMethod = (string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm'];
                break;
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported CanonicalizationMethod Requested");
        }

        switch((string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm']) {
            case self::SIGNATURE_METHOD_SHA1:
                $sMethod = (string)$sxe->Signature->SignedInfo->SignatureMethod['Algorithm'];
                break;
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported SignatureMethod Requested");
        }

        switch((string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm']) {
            case self::DIGEST_METHOD_SHA1:
                $dMethod = (string)$sxe->Signature->SignedInfo->Reference->DigestMethod['Algorithm'];
                break;
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Unknown or unsupported DigestMethod Requested");
        }

        $base64DecodeSupportsStrictParam = version_compare(PHP_VERSION, '5.2.0', '>=');

        if ($base64DecodeSupportsStrictParam) {
            $dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue, true);
        } else {
            $dValue = base64_decode((string)$sxe->Signature->SignedInfo->Reference->DigestValue);
        }

        if ($base64DecodeSupportsStrictParam) {
            $signatureValue = base64_decode((string)$sxe->Signature->SignatureValue, true);
        } else {
            $signatureValue = base64_decode((string)$sxe->Signature->SignatureValue);
        }

        $transformer = new Zend_InfoCard_Xml_Security_Transform();

        foreach($sxe->Signature->SignedInfo->Reference->Transforms->children() as $transform) {
            $transformer->addTransform((string)$transform['Algorithm']);
        }

        $transformed_xml = $transformer->applyTransforms($strXMLInput);

        $transformed_xml_binhash = pack("H*", sha1($transformed_xml));

        if($transformed_xml_binhash != $dValue) {
            throw new Zend_InfoCard_Xml_Security_Exception("Locally Transformed XML does not match XML Document. Cannot Verify Signature");
        }

        $public_key = null;

        switch(true) {
            case isset($sxe->Signature->KeyInfo->KeyValue->X509Certificate):

                $certificate = (string)$sxe->Signature->KeyInfo->KeyValue->X509Certificate;


                $pem = "-----BEGIN CERTIFICATE-----\n" .
                       wordwrap($certificate, 64, "\n", true) .
                       "\n-----END CERTIFICATE-----";

                $public_key = openssl_pkey_get_public($pem);

                if(!$public_key) {
                    throw new Zend_InfoCard_Xml_Security_Exception("Unable to extract and prcoess X509 Certificate from KeyValue");
                }

                break;
            case isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue):

                if(!isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus) ||
                   !isset($sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent)) {
                    throw new Zend_InfoCard_Xml_Security_Exception("RSA Key Value not in Modulus/Exponent form");
                }

                $modulus = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Modulus);
                $exponent = base64_decode((string)$sxe->Signature->KeyInfo->KeyValue->RSAKeyValue->Exponent);

                $pem_public_key = self::_getPublicKeyFromModExp($modulus, $exponent);

                $public_key = openssl_pkey_get_public ($pem_public_key);

                break;
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Unable to determine or unsupported representation of the KeyValue block");
        }

        $transformer = new Zend_InfoCard_Xml_Security_Transform();
        $transformer->addTransform((string)$sxe->Signature->SignedInfo->CanonicalizationMethod['Algorithm']);

        // The way we are doing our XML processing requires that we specifically add this
        // (even though it's in the <Signature> parent-block).. otherwise, our canonical form
        // fails signature verification
        $sxe->Signature->SignedInfo->addAttribute('xmlns', 'http://www.w3.org/2000/09/xmldsig#');

        $canonical_signedinfo = $transformer->applyTransforms($sxe->Signature->SignedInfo->asXML());

        if(@openssl_verify($canonical_signedinfo, $signatureValue, $public_key)) {
            return (string)$sxe->Signature->SignedInfo->Reference['URI'];
        }

        return false;
    }

    /**
     * Transform an RSA Key in Modulus/Exponent format into a PEM encoding and
     * return an openssl resource for it
     *
     * @param string $modulus The RSA Modulus in binary format
     * @param string $exponent The RSA exponent in binary format
     * @return string The PEM encoded version of the key
     */
    static protected function _getPublicKeyFromModExp($modulus, $exponent)
    {
        $modulusInteger  = self::_encodeValue($modulus, self::ASN_TYPE_INTEGER);
        $exponentInteger = self::_encodeValue($exponent, self::ASN_TYPE_INTEGER);
        $modExpSequence  = self::_encodeValue($modulusInteger . $exponentInteger, self::ASN_TYPE_SEQUENCE);
        $modExpBitString = self::_encodeValue($modExpSequence, self::ASN_TYPE_BITSTRING);

        $binRsaKeyIdentifier = pack( "H*", self::RSA_KEY_IDENTIFIER );

        $publicKeySequence = self::_encodeValue($binRsaKeyIdentifier . $modExpBitString, self::ASN_TYPE_SEQUENCE);

        $publicKeyInfoBase64 = base64_encode( $publicKeySequence );

        $publicKeyString = "-----BEGIN PUBLIC KEY-----\n";
        $publicKeyString .= wordwrap($publicKeyInfoBase64, 64, "\n", true);
        $publicKeyString .= "\n-----END PUBLIC KEY-----\n";

        return $publicKeyString;
    }

    /**
     * Encode a limited set of data types into ASN.1 encoding format
     * which is used in X.509 certificates
     *
     * @param string $data The data to encode
     * @param const $type The encoding format constant
     * @return string The encoded value
     * @throws Zend_InfoCard_Xml_Security_Exception
     */
    static protected function _encodeValue($data, $type)
    {
        // Null pad some data when we get it (integer values > 128 and bitstrings)
        if( (($type == self::ASN_TYPE_INTEGER) && (ord($data) > 0x7f)) ||
            ($type == self::ASN_TYPE_BITSTRING)) {
                $data = "\0$data";
        }

        $len = strlen($data);

        // encode the value based on length of the string
        // I'm fairly confident that this is by no means a complete implementation
        // but it is enough for our purposes
        switch(true) {
            case ($len < 128):
                return sprintf("%c%c%s", $type, $len, $data);
            case ($len < 0x0100):
                return sprintf("%c%c%c%s", $type, 0x81, $len, $data);
            case ($len < 0x010000):
                return sprintf("%c%c%c%c%s", $type, 0x82, $len / 0x0100, $len % 0x0100, $data);
            default:
                throw new Zend_InfoCard_Xml_Security_Exception("Could not encode value");
        }

        throw new Zend_InfoCard_Xml_Security_Exception("Invalid code path");
    }
}PKpG[%�?��'InfoCard/Xml/SecurityTokenReference.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SecurityTokenReference.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Xml_Element
 */
require_once 'Zend/InfoCard/Xml/Element.php';

/**
 * Represents a SecurityTokenReference XML block
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Xml
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Xml_SecurityTokenReference extends Zend_InfoCard_Xml_Element
{
    /**
     * Base64 Binary Encoding URI
     */
    const ENCODING_BASE64BIN = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary';

    /**
     * Return an instance of the object based on the input XML
     *
     * @param string $xmlData The SecurityTokenReference XML Block
     * @return Zend_InfoCard_Xml_SecurityTokenReference
     * @throws Zend_InfoCard_Xml_Exception
     */
    static public function getInstance($xmlData)
    {
        if($xmlData instanceof Zend_InfoCard_Xml_Element) {
            $strXmlData = $xmlData->asXML();
        } else if (is_string($xmlData)) {
            $strXmlData = $xmlData;
        } else {
            throw new Zend_InfoCard_Xml_Exception("Invalid Data provided to create instance");
        }

        $sxe = simplexml_load_string($strXmlData);

        if($sxe->getName() != "SecurityTokenReference") {
            throw new Zend_InfoCard_Xml_Exception("Invalid XML Block provided for SecurityTokenReference");
        }

        return simplexml_load_string($strXmlData, "Zend_InfoCard_Xml_SecurityTokenReference");
    }

    /**
     * Return the Key Identifier XML Object
     *
     * @return Zend_InfoCard_Xml_Element
     * @throws Zend_InfoCard_Xml_Exception
     */
    protected function _getKeyIdentifier()
    {
        $this->registerXPathNamespace('o', 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd');
        list($keyident) = $this->xpath('//o:KeyIdentifier');

        if(!($keyident instanceof Zend_InfoCard_Xml_Element)) {
            throw new Zend_InfoCard_Xml_Exception("Failed to retrieve Key Identifier");
        }

        return $keyident;
    }

    /**
     * Return the Key URI identifying the thumbprint type used
     *
     * @return string The thumbprint type URI
     * @throws  Zend_InfoCard_Xml_Exception
     */
    public function getKeyThumbprintType()
    {

        $keyident = $this->_getKeyIdentifier();

        $dom = self::convertToDOM($keyident);

        if(!$dom->hasAttribute('ValueType')) {
            throw new Zend_InfoCard_Xml_Exception("Key Identifier did not provide a type for the value");
        }

        return $dom->getAttribute('ValueType');
    }


    /**
     * Return the thumbprint encoding type used as a URI
     *
     * @return string the URI of the thumbprint encoding used
     * @throws Zend_InfoCard_Xml_Exception
     */
    public function getKeyThumbprintEncodingType()
    {

        $keyident = $this->_getKeyIdentifier();

        $dom = self::convertToDOM($keyident);

        if(!$dom->hasAttribute('EncodingType')) {
            throw new Zend_InfoCard_Xml_Exception("Unable to determine the encoding type for the key identifier");
        }

        return $dom->getAttribute('EncodingType');
    }

    /**
     * Get the key reference data used to identify the public key
     *
     * @param bool $decode if true, will return a decoded version of the key
     * @return string the key reference thumbprint, either in binary or encoded form
     * @throws Zend_InfoCard_Xml_Exception
     */
    public function getKeyReference($decode = true)
    {
        $keyIdentifier = $this->_getKeyIdentifier();

        $dom = self::convertToDOM($keyIdentifier);
        $encoded = $dom->nodeValue;

        if(empty($encoded)) {
            throw new Zend_InfoCard_Xml_Exception("Could not find the Key Reference Encoded Value");
        }

        if($decode) {

            $decoded = "";
            switch($this->getKeyThumbprintEncodingType()) {
                case self::ENCODING_BASE64BIN:

                    if(version_compare(PHP_VERSION, "5.2.0", ">=")) {
                        $decoded = base64_decode($encoded, true);
                    } else {
                        $decoded = base64_decode($encoded);
                    }

                    break;
                default:
                    throw new Zend_InfoCard_Xml_Exception("Unknown Key Reference Encoding Type: {$this->getKeyThumbprintEncodingType()}");
            }

            if(!$decoded || empty($decoded)) {
                throw new Zend_InfoCard_Xml_Exception("Failed to decode key reference");
            }

            return $decoded;
        }

        return $encoded;
    }
}
PKpG[�*G�	�	(InfoCard/Cipher/Pki/Adapter/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Pki_Interface
 */
require_once 'Zend/InfoCard/Cipher/Pki/Interface.php';

/**
 * Zend_InfoCard_Cipher_Exception
 */
require_once 'Zend/InfoCard/Cipher/Exception.php';

/**
 * An abstract class for public-key ciphers
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_InfoCard_Cipher_Pki_Adapter_Abstract implements Zend_InfoCard_Cipher_Pki_Interface
{
    /**
     * OAEP Padding public key encryption
     */
    const OAEP_PADDING = 1;

    /**
     * No padding public key encryption
     */
    const NO_PADDING = 2;

    /**
     * The type of padding to use
     *
     * @var integer one of the padding constants in this class
     */
    protected $_padding;

    /**
     * Set the padding of the public key encryption
     *
     * @throws Zend_InfoCard_Cipher_Exception
     * @param integer $padding One of the constnats in this class
     * @return Zend_InfoCard_Pki_Adapter_Abstract
     */
    public function setPadding($padding)
    {
        switch($padding) {
            case self::OAEP_PADDING:
            case self::NO_PADDING:
                $this->_padding = $padding;
                break;
            default:
                throw new Zend_InfoCard_Cipher_Exception("Invalid Padding Type Provided");
        }

        return $this;
    }

    /**
     * Retruns the public-key padding used
     *
     * @return integer One of the padding constants in this class
     */
    public function getPadding()
    {
        return $this->_padding;
    }
}
PKpG[�JI�cc#InfoCard/Cipher/Pki/Adapter/Rsa.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Rsa.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Pki_Adapter_Abstract
 */
require_once 'Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php';

/**
 * Zend_InfoCard_Cipher_Pki_Rsa_Interface
 */
require_once 'Zend/InfoCard/Cipher/Pki/Rsa/Interface.php';

/**
 * RSA Public Key Encryption Cipher Object for the InfoCard component. Relies on OpenSSL
 * to implement the RSA algorithm
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Cipher_Pki_Adapter_Rsa
    extends Zend_InfoCard_Cipher_Pki_Adapter_Abstract
    implements Zend_InfoCard_Cipher_Pki_Rsa_Interface
{

    /**
     * Object Constructor
     *
     * @param integer $padding The type of Padding to use
     */
    public function __construct($padding = Zend_InfoCard_Cipher_Pki_Adapter_Abstract::NO_PADDING)
    {
        // Can't test this..
        // @codeCoverageIgnoreStart
        if(!extension_loaded('openssl')) {
            throw new Zend_InfoCard_Cipher_Exception("Use of this PKI RSA Adapter requires the openssl extension loaded");
        }
        // @codeCoverageIgnoreEnd

        $this->setPadding($padding);
    }

    /**
     * Decrypts RSA encrypted data using the given private key
     *
     * @throws Zend_InfoCard_Cipher_Exception
     * @param string $encryptedData The encrypted data in binary format
     * @param string $privateKey The private key in binary format
     * @param string $password The private key passphrase
     * @param integer $padding The padding to use during decryption (of not provided object value will be used)
     * @return string The decrypted data
     */
    public function decrypt($encryptedData, $privateKey, $password = null, $padding = null)
    {
        $private_key = openssl_pkey_get_private(array($privateKey, $password));

        if(!$private_key) {
            throw new Zend_InfoCard_Cipher_Exception("Failed to load private key");
        }

        if(!is_null($padding)) {
            try {
                $this->setPadding($padding);
            } catch(Exception $e) {
                openssl_free_key($private_key);
                throw $e;
            }
        }

        switch($this->getPadding()) {
            case self::NO_PADDING:
                $openssl_padding = OPENSSL_NO_PADDING;
                break;
            case self::OAEP_PADDING:
                $openssl_padding = OPENSSL_PKCS1_OAEP_PADDING;
                break;
        }

        $result = openssl_private_decrypt($encryptedData, $decryptedData, $private_key, $openssl_padding);

        openssl_free_key($private_key);

        if(!$result) {
            throw new Zend_InfoCard_Cipher_Exception("Unable to Decrypt Value using provided private key");
        }

        if($this->getPadding() == self::NO_PADDING) {
            $decryptedData = substr($decryptedData, 2);
            $start = strpos($decryptedData, 0) + 1;
            $decryptedData = substr($decryptedData, $start);
        }

        return $decryptedData;
    }
}
PKpG[G��Uyy!InfoCard/Cipher/Pki/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Empty Interface represents a Pki cipher object
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Cipher_Pki_Interface 
{
}
PKpG[�q�tt%InfoCard/Cipher/Pki/Rsa/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_PKI_Adapter_Abstract
 */
require_once 'Zend/InfoCard/Cipher/Pki/Adapter/Abstract.php';

/**
 * The interface which defines the RSA Public-key encryption object
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Cipher_Pki_Rsa_Interface
{
    /**
     * Decrypts RSA encrypted data using the given private key
     *
     * @throws Zend_InfoCard_Cipher_Exception
     * @param string $encryptedData The encrypted data in binary format
     * @param string $privateKey The private key in binary format
     * @param string $password The private key passphrase
     * @param integer $padding The padding to use during decryption (of not provided object value will be used)
     * @return string The decrypted data
     */
    public function decrypt($encryptedData, $privateKey, $password = null, $padding = Zend_InfoCard_Cipher_Pki_Adapter_Abstract::NO_PADDING);
}
PKpG[m��w��InfoCard/Cipher/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Exception
 */
require_once 'Zend/InfoCard/Exception.php';


/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Cipher_Exception extends Zend_InfoCard_Exception 
{
}
PKpG[`Tv�MM'InfoCard/Cipher/Symmetric/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Cipher_Symmetric_Interface 
{
}
PKpG[c�ڳee/InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Aes128cbc.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc
 */
require_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php';

/**
 * Implements AES128 with CBC encryption implemented using the mCrypt extension
 * 
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Cipher_Symmetric_Adapter_Aes128cbc 
    extends Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc 
{
}
PKpG[���.InfoCard/Cipher/Symmetric/Adapter/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Symmetric_Interface
 */
require_once 'Zend/InfoCard/Cipher/Symmetric/Interface.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract 
    implements Zend_InfoCard_Cipher_Symmetric_Interface 
{
}
PKpG[��5�VV/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Aes256cbc.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract
 */
require_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Abstract.php';

/**
 * Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
 */
require_once 'Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php';

/**
 * Zend_InfoCard_Cipher_Exception
 */
require_once 'Zend/InfoCard/Cipher/Exception.php';

/**
 * Implements AES256 with CBC encryption implemented using the mCrypt extension
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc
    extends Zend_InfoCard_Cipher_Symmetric_Adapter_Abstract
    implements Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
{
    /**
     * The MCRYPT Cipher constant for this encryption
     */
    const MCRYPT_CIPHER = MCRYPT_RIJNDAEL_128;

    /**
     * The MCRYPT Mode constant for this encryption
     */
    const MCRYPT_MODE   = MCRYPT_MODE_CBC;

    /**
     * The default length of the IV to use
     */
    const IV_LENGTH     = 16;

    /**
     * The object constructor
     *
     * @throws Zend_InfoCard_Cipher_Exception
     */
    public function __construct()
    {
        // Can't test for this
        // @codeCoverageIgnoreStart
        if(!extension_loaded('mcrypt')) {
            throw new Zend_InfoCard_Cipher_Exception("Use of the AES256CBC Cipher requires the mcrypt extension");
        }
        // @codeCoveregIgnoreEnd
    }

    /**
     * Decrypts data using the AES Algorithm using the mCrypt extension
     *
     * @throws Zend_InfoCard_Cipher_Exception
     * @param string $encryptedData The encrypted data in binary format
     * @param string $decryptionKey The decryption key
     * @param integer $iv_length The IV length to use
     * @return string the decrypted data with any terminating nulls removed
     */
    public function decrypt($encryptedData, $decryptionKey, $iv_length = null)
    {

        $iv_length = is_null($iv_length) ? self::IV_LENGTH : $iv_length;

        $mcrypt_iv = null;

        if($iv_length > 0) {
             $mcrypt_iv = substr($encryptedData, 0, $iv_length);
            $encryptedData = substr($encryptedData, $iv_length);
        }

        $decrypted = mcrypt_decrypt(self::MCRYPT_CIPHER, $decryptionKey, $encryptedData, self::MCRYPT_MODE, $mcrypt_iv);

        if(!$decrypted) {
            throw new Zend_InfoCard_Cipher_Exception("Failed to decrypt data using AES256CBC Algorithm");
        }

        $decryptedLength = strlen($decrypted);
        $paddingLength = substr($decrypted, $decryptedLength -1, 1);
        $decrypted = substr($decrypted, 0, $decryptedLength - ord($paddingLength));

        return rtrim($decrypted, "\0");
    }
}
PKpG[���1InfoCard/Cipher/Symmetric/Aes128cbc/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
 */
require_once 'Zend/InfoCard/Cipher/Symmetric/Aes256cbc/Interface.php';

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Cipher_Symmetric_Aes128cbc_Interface 
    extends Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface 
{
}
PKpG[�N�1InfoCard/Cipher/Symmetric/Aes256cbc/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_InfoCard_Cipher_Symmetric_Aes256cbc_Interface
{
    public function decrypt($encryptedData, $decryptionKey, $iv_length = null);
}
PKpG[8]v
FFInfoCard/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

if (class_exists("Zend_Exception")) {
    abstract class Zend_InfoCard_Exception_Abstract extends Zend_Exception
    {
    }
} else {
    abstract class Zend_InfoCard_Exception_Abstract extends Exception
    {
    }
}

/**
 * Base Exception class for the InfoCard component
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Exception extends Zend_InfoCard_Exception_Abstract
{
}
PKpG[X��KE E InfoCard/Claims.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Claims.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_InfoCard_Exception
 */
require_once 'Zend/InfoCard/Exception.php';

/**
 * Result value of the InfoCard component, contains any error messages and claims
 * from the processing of an information card.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Claims
{
    /**
     * Successful validation and extraion of claims
     */
    const RESULT_SUCCESS = 1;

    /**
     * Indicates there was an error processing the XML document
     */
    const RESULT_PROCESSING_FAILURE = 2;

    /**
     * Indicates that the signature values within the XML document failed verification
     */
    const RESULT_VALIDATION_FAILURE = 3;

    /**
     * The default namespace to assume in these claims
     *
     * @var string
     */
    protected $_defaultNamespace  = null;

    /**
     * A boolean indicating if the claims should be consider "valid" or not based on processing
     *
     * @var bool
     */
    protected $_isValid = true;

    /**
     * The error message if any
     *
     * @var string
     */
    protected $_error = "";

    /**
     * An array of claims taken from the information card
     *
     * @var array
     */
    protected $_claims;

    /**
     * The result code of processing the information card as defined by the constants of this class
     *
     * @var integer
     */
    protected $_code;

    /**
     * Override for the safeguard which ensures that you don't use claims which failed validation.
     * Used in situations when there was a validation error you'd like to ignore
     *
     * @return Zend_InfoCard_Claims
     */
    public function forceValid()
    {
        trigger_error("Forcing Claims to be valid although it is a security risk", E_USER_WARNING);
        $this->_isValid = true;
        return $this;
    }

    /**
     * Retrieve the PPI (Private Personal Identifier) associated with the information card
     *
     * @return string the private personal identifier
     */
    public function getCardID()
    {
        return $this->getClaim('http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier');
    }

    /**
     * Retrieves the default namespace used in this information card. If a default namespace was not
     * set, it figures out which one to consider 'default' by taking the first namespace sorted by use-count
     * in claims
     *
     * @throws Zend_InfoCard_Exception
     * @return string The default namespace
     */
    public function getDefaultNamespace()
    {

        if(is_null($this->_defaultNamespace)) {

            $namespaces = array();
            $leader = '';
            foreach($this->_claims as $claim) {

                if(!isset($namespaces[$claim['namespace']])) {
                    $namespaces[$claim['namespace']] = 1;
                } else {
                    $namespaces[$claim['namespace']]++;
                }

                if(empty($leader) || ($namespaces[$claim['namespace']] > $leader)) {
                    $leader = $claim['namespace'];
                }
            }

            if(empty($leader)) {
                throw new Zend_InfoCard_Exception("Failed to determine default namespace");
            }

            $this->setDefaultNamespace($leader);
        }

        return $this->_defaultNamespace;
    }

    /**
     * Set the default namespace, overriding any existing default
     *
     * @throws Zend_InfoCard_Exception
     * @param string $namespace The default namespace to use
     * @return Zend_InfoCard_Claims
     */
    public function setDefaultNamespace($namespace)
    {

        foreach($this->_claims as $claim) {
            if($namespace == $claim['namespace']) {
                $this->_defaultNamespace = $namespace;
                return $this;
            }
        }

        throw new Zend_InfoCard_Exception("At least one claim must exist in specified namespace to make it the default namespace");
    }

    /**
     * Indicates if this claim object contains validated claims or not
     *
     * @return bool
     */
    public function isValid()
    {
        return $this->_isValid;
    }

    /**
     * Set the error message contained within the claims object
     *
     * @param string $error The error message
     * @return Zend_InfoCard_Claims
     */
    public function setError($error)
    {
        $this->_error = $error;
        $this->_isValid = false;
        return $this;
    }

    /**
     * Retrieve the error message contained within the claims object
     *
     * @return string The error message
     */
    public function getErrorMsg()
    {
        return $this->_error;
    }

    /**
     * Set the claims for the claims object. Can only be set once and is done
     * by the component itself. Internal use only.
     *
     * @throws Zend_InfoCard_Exception
     * @param array $claims
     * @return Zend_InfoCard_Claims
     */
    public function setClaims(Array $claims)
    {
        if(!is_null($this->_claims)) {
            throw new Zend_InfoCard_Exception("Claim objects are read-only");
        }

        $this->_claims = $claims;
        return $this;
    }

    /**
     * Set the result code of the claims object.
     *
     * @throws Zend_InfoCard_Exception
     * @param int $code The result code
     * @return Zend_InfoCard_Claims
     */
    public function setCode($code)
    {
        switch($code) {
            case self::RESULT_PROCESSING_FAILURE:
            case self::RESULT_SUCCESS:
            case self::RESULT_VALIDATION_FAILURE:
                $this->_code = $code;
                return $this;
        }

        throw new Zend_InfoCard_Exception("Attempted to set unknown error code");
    }

    /**
     * Gets the result code of the claims object
     *
     * @return integer The result code
     */
    public function getCode()
    {
        return $this->_code;
    }

    /**
     * Get a claim by providing its complete claim URI
     *
     * @param string $claimURI The complete claim URI to retrieve
     * @return mixed The claim matching that specific URI or null if not found
     */
    public function getClaim($claimURI)
    {
        if($this->claimExists($claimURI)) {
            return $this->_claims[$claimURI]['value'];
        }

        return null;
    }

    /**
     * Indicates if a specific claim URI exists or not within the object
     *
     * @param string $claimURI The complete claim URI to check
     * @return bool true if the claim exists, false if not found
     */
    public function claimExists($claimURI)
    {
        return isset($this->_claims[$claimURI]);
    }

    /**
     * Magic helper function
     * @throws Zend_InfoCard_Exception
     */
    public function __unset($k)
    {
        throw new Zend_InfoCard_Exception("Claim objects are read-only");
    }

    /**
     * Magic helper function
     */
    public function __isset($k)
    {
        return $this->claimExists("{$this->getDefaultNamespace()}/$k");
    }

    /**
     * Magic helper function
     */
    public function __get($k)
    {
        return $this->getClaim("{$this->getDefaultNamespace()}/$k");
    }

    /**
     * Magic helper function
     * @throws Zend_InfoCard_Exception
     */
    public function __set($k, $v)
    {
        throw new Zend_InfoCard_Exception("Claim objects are read-only");
    }
}
PKpG[avo<�
�
InfoCard/Cipher.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Cipher.php 11747 2008-10-08 18:33:58Z norm2782 $
 */

/**
 * Zend_InfoCard_Cipher_Exception
 */
require_once 'Zend/InfoCard/Cipher/Exception.php';

/**
 * Provides an abstraction for encryption ciphers used in an Information Card
 * implementation
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @subpackage Zend_InfoCard_Cipher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard_Cipher
{
    /**
     * AES 256 Encryption with CBC
     */
    const ENC_AES256CBC      = 'http://www.w3.org/2001/04/xmlenc#aes256-cbc';

    /**
     * AES 128 Encryption with CBC
     */
    const ENC_AES128CBC      = 'http://www.w3.org/2001/04/xmlenc#aes128-cbc';

    /**
     * RSA Public Key Encryption with OAEP Padding
     */
    const ENC_RSA_OAEP_MGF1P = 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p';

    /**
     * RSA Public Key Encryption with no padding
     */
    const ENC_RSA            = 'http://www.w3.org/2001/04/xmlenc#rsa-1_5';

    /**
     * Constructor (disabled)
     *
     * @return void
     * @codeCoverageIgnoreStart
     */
    protected function __construct()
    {
    }
    // @codeCoverageIgnoreEnd
    /**
     * Returns an instance of a cipher object supported based on the URI provided
     *
     * @throws Zend_InfoCard_Cipher_Exception
     * @param string $uri The URI of the encryption method wantde
     * @return mixed an Instance of Zend_InfoCard_Cipher_Symmetric_Interface or Zend_InfoCard_Cipher_Pki_Interface
     *               depending on URI
     */
    static public function getInstanceByURI($uri)
    {
        switch($uri) {
            case self::ENC_AES256CBC:
                include_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.php';
                return new Zend_InfoCard_Cipher_Symmetric_Adapter_Aes256cbc();

            case self::ENC_AES128CBC:
                include_once 'Zend/InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.php';
                return new Zend_InfoCard_Cipher_Symmetric_Adapter_Aes128cbc();

            case self::ENC_RSA_OAEP_MGF1P:
                include_once 'Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php';
                return new Zend_InfoCard_Cipher_Pki_Adapter_Rsa(Zend_InfoCard_Cipher_Pki_Adapter_Rsa::OAEP_PADDING);
                break;

            case self::ENC_RSA:
                include_once 'Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php';
                return new Zend_InfoCard_Cipher_Pki_Adapter_Rsa(Zend_InfoCard_Cipher_Pki_Adapter_Rsa::NO_PADDING);
                break;

            default:
                throw new Zend_InfoCard_Cipher_Exception("Unknown Cipher URI");
        }
    }
}
PKpG[H����File/Transfer/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_File_Transfer
 *
 * @category   Zend
 * @package    Zend_File_Transfer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_File_Transfer_Exception extends Zend_Exception
{
    protected $_fileerror = null;

    public function __construct($message, $fileerror = 0)
    {
        $this->_fileerror = $fileerror;
        parent::__construct($message);
    }

    /**
     * Returns the transfer error code for the exception
     * This is not the exception code !!!
     *
     * @return integer
     */
    public function getFileError()
    {
        return $this->_fileerror;
    }
}
PKpG[ґ6�File/Transfer/Adapter/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

require_once 'Zend/File/Transfer/Adapter/Abstract.php';

/**
 * File transfer adapter class for the HTTP protocol
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_File_Transfer_Adapter_Http extends Zend_File_Transfer_Adapter_Abstract
{
    /**
     * Constructor for Http File Transfers
     *
     * @param array $options OPTIONAL Options to set
     */
    public function __construct($options = array())
    {
        if (ini_get('file_uploads') == false) {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('File uploads are not allowed in your php config!');
        }

        $this->_files = $this->_prepareFiles($_FILES);
        $this->addValidator('Upload', false, $this->_files);

        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * Sets a validator for the class, erasing all previous set
     *
     * @param  string|array $validator Validator to set
     * @param  string|array $files     Files to limit this validator to
     * @return Zend_File_Transfer_Adapter
     */
    public function setValidators(array $validators, $files = null)
    {
        $this->clearValidators();
        $this->addValidator('Upload', false, $this->_files);
        return $this->addValidators($validators, $files);
    }

    /**
     * Send the file to the client (Download)
     *
     * @param  string|array $options Options for the file(s) to send
     * @return void
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function send($options = null)
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Receive the file from the client (Upload)
     *
     * @param  string|array $files (Optional) Files to receive
     * @return bool
     */
    public function receive($files = null)
    {
        if (!$this->isValid($files)) {
            return false;
        }

        $check = $this->_getFiles($files);
        foreach ($check as $file => $content) {
            if (!$content['received']) {
                $directory   = '';
                $destination = $this->getDestination($file);
                if ($destination !== null) {
                    $directory = $destination . DIRECTORY_SEPARATOR;
                }

                // Should never return false when it's tested by the upload validator
                if (!move_uploaded_file($content['tmp_name'], ($directory . $content['name']))) {
                    if ($content['options']['ignoreNoFile']) {
                        $this->_files[$file]['received'] = true;
                        $this->_files[$file]['filtered'] = true;
                        continue;
                    }

                    $this->_files[$file]['received'] = false;
                    return false;
                }

                $this->_files[$file]['received'] = true;
            }

            if (!$content['filtered']) {
                if (!$this->_filter($file)) {
                    $this->_files[$file]['filtered'] = false;
                    return false;
                }

                $this->_files[$file]['filtered'] = true;
            }
        }

        return true;
    }

    /**
     * Checks if the file was already sent
     *
     * @param  string|array $file Files to check
     * @return bool
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function isSent($files = null)
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Checks if the file was already received
     *
     * @param  string|array $files (Optional) Files to check
     * @return bool
     */
    public function isReceived($files = null)
    {
        $files = $this->_getFiles($files);
        foreach ($files as $content) {
            if ($content['received'] !== true) {
                return false;
            }
        }

        return true;
    }

    /**
     * Checks if the file was already filtered
     *
     * @param  string|array $files (Optional) Files to check
     * @return bool
     */
    public function isFiltered($files = null)
    {
        $files = $this->_getFiles($files);
        foreach ($files as $content) {
            if ($content['filtered'] !== true) {
                return false;
            }
        }

        return true;
    }

    /**
     * Has a file been uploaded ?
     *
     * @param  array|string|null $file
     * @return bool
     */
    public function isUploaded($files = null)
    {
        $files = $this->_getFiles($files);
        foreach ($files as $file) {
            if (empty($file['name'])) {
                return false;
            }
        }

        return true;
    }

    /**
     * Returns the actual progress of file up-/downloads
     *
     * @return string Returns the state
     * @return int
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function getProgress()
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Prepare the $_FILES array to match the internal syntax of one file per entry
     *
     * @param  array $files
     * @return array
     */
    protected function _prepareFiles(array $files = array())
    {
        $result = array();
        foreach ($files as $form => $content) {
            if (is_array($content['name'])) {
                foreach ($content as $param => $file) {
                    foreach ($file as $number => $target) {
                        $result[$form . '_' . $number . '_'][$param]      = $target;
                        $result[$form . '_' . $number . '_']['options']   = $this->_options;
                        $result[$form . '_' . $number . '_']['validated'] = false;
                        $result[$form . '_' . $number . '_']['received']  = false;
                        $result[$form . '_' . $number . '_']['filtered']  = false;
                    }
                }
            } else {
                $result[$form]              = $content;
                $result[$form]['options']   = $this->_options;
                $result[$form]['validated'] = false;
                $result[$form]['received']  = false;
                $result[$form]['filtered']  = false;
            }
        }

        return $result;
    }
}
PKpG[{����"File/Transfer/Adapter/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * Abstract class for file transfers (Downloads and Uploads)
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_File_Transfer_Adapter_Abstract
{
    /**@+
     * @const string Plugin loader Constants
     */
    const FILTER    = 'FILTER';
    const VALIDATE  = 'VALIDATE';
    /**@-*/

    /**
     * Internal list of breaks
     *
     * @var array
     */
    protected $_break = array();

    /**
     * Internal list of filters
     *
     * @var array
     */
    protected $_filters = array();

    /**
     * Plugin loaders for filter and validation chains
     *
     * @var array
     */
    protected $_loaders = array();

    /**
     * Internal list of messages
     *
     * @var array
     */
    protected $_messages = array();

    /**
     * @var Zend_Translate
     */
    protected $_translator;

    /**
     * Is translation disabled?
     *
     * @var bool
     */
    protected $_translatorDisabled = false;

    /**
     * Internal list of validators
     * @var array
     */
    protected $_validators = array();

    /**
     * Internal list of files
     * This array looks like this:
     *     array(form => array( - Form is the name within the form or, if not set the filename
     *         name,            - Original name of this file
     *         type,            - Mime type of this file
     *         size,            - Filesize in bytes
     *         tmp_name,        - Internalally temporary filename for uploaded files
     *         error,           - Error which has occured
     *         destination,     - New destination for this file
     *         validators,      - Set validator names for this file
     *         files            - Set file names for this file
     *     ))
     *
     * @var array
     */
    protected $_files = array();

    /**
     * TMP directory
     * @var string
     */
    protected $_tmpDir;

    /**
     * Available options for file transfers
     */
    protected $_options = array(
        'ignoreNoFile' => false
    );

    /**
     * Send file
     *
     * @param  mixed $options
     * @return bool
     */
    abstract public function send($options = null);

    /**
     * Receive file
     *
     * @param  mixed $options
     * @return bool
     */
    abstract public function receive($options = null);

    /**
     * Is file sent?
     *
     * @param  array|string|null $files
     * @return bool
     */
    abstract public function isSent($files = null);

    /**
     * Is file received?
     *
     * @param  array|string|null $files
     * @return bool
     */
    abstract public function isReceived($files = null);

    /**
     * Has a file been uploaded ?
     *
     * @param  array|string|null $files
     * @return bool
     */
    abstract public function isUploaded($files = null);

    /**
     * Has the file been filtered ?
     *
     * @param array|string|null $files
     * @return bool
     */
    abstract public function isFiltered($files = null);

    /**
     * Retrieve progress of transfer
     *
     * @return float
     */
    abstract public function getProgress();

    /**
     * Set plugin loader to use for validator or filter chain
     *
     * @param  Zend_Loader_PluginLoader_Interface $loader
     * @param  string $type 'filter', or 'validate'
     * @return Zend_File_Transfer_Adapter_Abstract
     * @throws Zend_File_Transfer_Exception on invalid type
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::FILTER:
            case self::VALIDATE:
                $this->_loaders[$type] = $loader;
                return $this;
            default:
                require_once 'Zend/File/Transfer/Exception.php';
                throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type));
        }
    }

    /**
     * Retrieve plugin loader for validator or filter chain
     *
     * Instantiates with default rules if none available for that type. Use
     * 'filter' or 'validate' for $type.
     *
     * @param  string $type
     * @return Zend_Loader_PluginLoader
     * @throws Zend_File_Transfer_Exception on invalid type.
     */
    public function getPluginLoader($type)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::FILTER:
            case self::VALIDATE:
                $prefixSegment = ucfirst(strtolower($type));
                $pathSegment   = $prefixSegment;
                if (!isset($this->_loaders[$type])) {
                    $paths         = array(
                        'Zend_' . $prefixSegment . '_'     => 'Zend/' . $pathSegment . '/',
                        'Zend_' . $prefixSegment . '_File' => 'Zend/' . $pathSegment . '/File',
                    );

                    require_once 'Zend/Loader/PluginLoader.php';
                    $this->_loaders[$type] = new Zend_Loader_PluginLoader($paths);
                } else {
                    $loader = $this->_loaders[$type];
                    $prefix = 'Zend_' . $prefixSegment . '_File_';
                    if (!$loader->getPaths($prefix)) {
                        $loader->addPrefixPath($prefix, str_replace('_', '/', $prefix));
                    }
                }
                return $this->_loaders[$type];
            default:
                require_once 'Zend/File/Transfer/Exception.php';
                throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
        }
    }

    /**
     * Add prefix path for plugin loader
     *
     * If no $type specified, assumes it is a base path for both filters and
     * validators, and sets each according to the following rules:
     * - filters:    $prefix = $prefix . '_Filter'
     * - validators: $prefix = $prefix . '_Validate'
     *
     * Otherwise, the path prefix is set on the appropriate plugin loader.
     *
     * @param  string $path
     * @return Zend_File_Transfer_Adapter_Abstract
     * @throws Zend_File_Transfer_Exception for invalid type
     */
    public function addPrefixPath($prefix, $path, $type = null)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::FILTER:
            case self::VALIDATE:
                $loader = $this->getPluginLoader($type);
                $loader->addPrefixPath($prefix, $path);
                return $this;
            case null:
                $prefix = rtrim($prefix, '_');
                $path   = rtrim($path, DIRECTORY_SEPARATOR);
                foreach (array(self::FILTER, self::VALIDATE) as $type) {
                    $cType        = ucfirst(strtolower($type));
                    $pluginPath   = $path . DIRECTORY_SEPARATOR . $cType . DIRECTORY_SEPARATOR;
                    $pluginPrefix = $prefix . '_' . $cType;
                    $loader       = $this->getPluginLoader($type);
                    $loader->addPrefixPath($pluginPrefix, $pluginPath);
                }
                return $this;
            default:
                require_once 'Zend/File/Transfer/Exception.php';
                throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
        }
    }

    /**
     * Add many prefix paths at once
     *
     * @param  array $spec
     * @return Zend_File_Transfer_Exception
     */
    public function addPrefixPaths(array $spec)
    {
        if (isset($spec['prefix']) && isset($spec['path'])) {
            return $this->addPrefixPath($spec['prefix'], $spec['path']);
        }
        foreach ($spec as $type => $paths) {
            if (is_numeric($type) && is_array($paths)) {
                $type = null;
                if (isset($paths['prefix']) && isset($paths['path'])) {
                    if (isset($paths['type'])) {
                        $type = $paths['type'];
                    }
                    $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
                }
            } elseif (!is_numeric($type)) {
                if (!isset($paths['prefix']) || !isset($paths['path'])) {
                    foreach ($paths as $prefix => $spec) {
                        if (is_array($spec)) {
                            foreach ($spec as $path) {
                                if (!is_string($path)) {
                                    continue;
                                }
                                $this->addPrefixPath($prefix, $path, $type);
                            }
                        } elseif (is_string($spec)) {
                            $this->addPrefixPath($prefix, $spec, $type);
                        }
                    }
                } else {
                    $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
                }
            }
        }
        return $this;
    }

    /**
     * Adds a new validator for this class
     *
     * @param  string|array $validator           Type of validator to add
     * @param  boolean      $breakChainOnFailure If the validation chain should stop an failure
     * @param  string|array $options             Options to set for the validator
     * @param  string|array $files               Files to limit this validator to
     * @return Zend_File_Transfer_Adapter
     */
    public function addValidator($validator, $breakChainOnFailure = false, $options = null, $files = null)
    {
        if ($validator instanceof Zend_Validate_Interface) {
            $name = get_class($validator);
        } elseif (is_string($validator)) {
            $name      = $this->getPluginLoader(self::VALIDATE)->load($validator);
            $validator = new $name($options);
        } else {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('Invalid validator provided to addValidator; must be string or Zend_Validate_Interface');
        }

        $this->_validators[$name] = $validator;
        $this->_break[$name]      = $breakChainOnFailure;
        $files                    = $this->_getFiles($files, true, true);
        foreach ($files as $file) {
            $this->_files[$file]['validators'][] = $name;
            $this->_files[$file]['validated']    = false;
        }

        return $this;
    }

    /**
     * Add Multiple validators at once
     *
     * @param  array $validators
     * @param  string|array $files
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function addValidators(array $validators, $files = null)
    {
        foreach ($validators as $name => $validatorInfo) {
            if ($validatorInfo instanceof Zend_Validate_Interface) {
                $this->addValidator($validatorInfo, null, null, $files);
            } else if (is_string($validatorInfo)) {
                if (!is_int($name)) {
                    $this->addValidator($name, null, $validatorInfo, $files);
                } else {
                    $this->addValidator($validatorInfo, null, null, $files);
                }
            } else if (is_array($validatorInfo)) {
                $argc                = count($validatorInfo);
                $breakChainOnFailure = false;
                $options             = array();
                if (isset($validatorInfo['validator'])) {
                    $validator = $validatorInfo['validator'];
                    if (isset($validatorInfo['breakChainOnFailure'])) {
                        $breakChainOnFailure = $validatorInfo['breakChainOnFailure'];
                    }

                    if (isset($validatorInfo['options'])) {
                        $options = $validatorInfo['options'];
                    }

                    $this->addValidator($validator, $breakChainOnFailure, $options, $files);
                } else {
                    if (is_string($name)) {
                        $validator = $name;
                        $options   = $validatorInfo;
                        $this->addValidator($validator, $breakChainOnFailure, $options, $files);
                    } else {
                        switch (true) {
                            case (0 == $argc):
                                break;
                            case (1 <= $argc):
                                $validator  = array_shift($validatorInfo);
                            case (2 <= $argc):
                                $breakChainOnFailure = array_shift($validatorInfo);
                            case (3 <= $argc):
                                $options = array_shift($validatorInfo);
                            case (4 <= $argc):
                                $files = array_shift($validatorInfo);
                            default:
                                $this->addValidator($validator, $breakChainOnFailure, $options, $files);
                                break;
                        }
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid validator passed to addValidators()');
            }
        }

        return $this;
    }

    /**
     * Sets a validator for the class, erasing all previous set
     *
     * @param  string|array $validator Validator to set
     * @param  string|array $files     Files to limit this validator to
     * @return Zend_File_Transfer_Adapter
     */
    public function setValidators(array $validators, $files = null)
    {
        $this->clearValidators();
        return $this->addValidators($validators, $files);
    }

    /**
     * Determine if a given validator has already been registered
     *
     * @param  string $name
     * @return bool
     */
    public function hasValidator($name)
    {
        return (false !== $this->_getValidatorIdentifier($name));
    }

    /**
     * Retrieve individual validator
     *
     * @param  string $name
     * @return Zend_Validate_Interface|null
     */
    public function getValidator($name)
    {
        if (false === ($identifier = $this->_getValidatorIdentifier($name))) {
            return null;
        }
        return $this->_validators[$identifier];
    }

    /**
     * Returns all set validators
     *
     * @param  string|array $files (Optional) Returns the validator for this files
     * @return null|array List of set validators
     */
    public function getValidators($files = null)
    {
        $files = $this->_getFiles($files, true, true);

        if (empty($files)) {
            return $this->_validators;
        }

        $validators = array();
        foreach ($files as $file) {
            if (!empty($this->_files[$file]['validators'])) {
                $validators += $this->_files[$file]['validators'];
            }
        }
        $validators = array_unique($validators);

        $result = array();
        foreach ($validators as $validator) {
            $result[$validator] = $this->_validators[$validator];
        }
        return $result;
    }

    /**
     * Remove an individual validator
     *
     * @param  string $name
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function removeValidator($name)
    {
        if (false === ($key = $this->_getValidatorIdentifier($name))) {
            return $this;
        }

        unset($this->_validators[$key]);
        foreach (array_keys($this->_files) as $file) {
            if (!$index = array_search($key, $this->_files[$file]['validators'])) {
                continue;
            }
            unset($this->_files[$file]['validators'][$index]);
            $this->_files[$file]['validated'] = false;
        }

        return $this;
    }

    /**
     * Remove all validators
     *
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function clearValidators()
    {
        $this->_validators = array();
        foreach (array_keys($this->_files) as $file) {
            $this->_files[$file]['validators'] = array();
            $this->_files[$file]['validated']  = false;
        }

        return $this;
    }

    /**
     * Sets Options for adapters
     *
     * @param array $options Options to set
     * @param array $files   (Optional) Files to set the options for
     */
    public function setOptions($options = array(), $files = null) {
        $file = $this->_getFiles($files, false, true);

        if (is_array($options)) {
            foreach ($options as $name => $value) {
                foreach ($file as $key => $content) {
                    if (array_key_exists($name, $this->_options)) {
                        $this->_files[$key]['options'][$name] = (boolean) $value;
                    } else {
                        require_once 'Zend/File/Transfer/Exception.php';
                        throw new Zend_File_Transfer_Exception("Unknown option: $name = $value");
                    }
                }
            }
        }

        return $this;
    }

    /**
     * Returns set options for adapters or files
     *
     * @param  array $files (Optional) Files to return the options for
     * @return array Options for given files
     */
    public function getOptions($files = null) {
        $file = $this->_getFiles($files, false, true);

        foreach ($file as $key => $content) {
            if (isset($this->_files[$key]['options'])) {
                $options[$key] = $this->_files[$key]['options'];
            } else {
                $options[$key] = array();
            }
        }

        return $options;
    }

    /**
     * Checks if the files are valid
     *
     * @param  string|array $files (Optional) Files to check
     * @return boolean True if all checks are valid
     */
    public function isValid($files = null)
    {
        $check           = $this->_getFiles($files);
        $translator      = $this->getTranslator();
        $this->_messages = array();
        $break           = false;
        foreach ($check as $key => $content) {
            $fileerrors  = array();
            if ($content['validated'] === true) {
                continue;
            }

            if (array_key_exists('validators', $content)) {
                foreach ($content['validators'] as $class) {
                    $validator = $this->_validators[$class];
                    if (method_exists($validator, 'setTranslator')) {
                        $validator->setTranslator($translator);
                    }

                    $tocheck = $content['tmp_name'];
                    if (($class === 'Zend_Validate_File_Upload') and (empty($content['tmp_name']))) {
                        $tocheck = $key;
                    }

                    if (!$validator->isValid($tocheck, $content)) {
                        $fileerrors += $validator->getMessages();
                    }

                    if (!empty($content['options']['ignoreNoFile']) and (isset($fileerrors['fileUploadErrorNoFile']))) {
                        unset($fileerrors['fileUploadErrorNoFile']);
                        break;
                    }

                    if (($class === 'Zend_Validate_File_Upload') and (count($fileerrors) > 0)) {
                        break;
                    }

                    if (($this->_break[$class]) and (count($fileerrors) > 0)) {
                        $break = true;
                        break;
                    }
                }
            }

            if (count($fileerrors) > 0) {
                $this->_files[$key]['validated'] = false;
            } else {
                $this->_files[$key]['validated'] = true;
            }

            $this->_messages += $fileerrors;
            if ($break) {
                break;
            }
        }

        if (count($this->_messages) > 0) {
            return false;
        }

        return true;
    }

    /**
     * Returns found validation messages
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }

    /**
     * Retrieve error codes
     *
     * @return array
     */
    public function getErrors()
    {
        return array_keys($this->_messages);
    }

    /**
     * Are there errors registered?
     *
     * @return boolean
     */
    public function hasErrors()
    {
        return (!empty($this->_messages));
    }

    /**
     * Adds a new filter for this class
     *
     * @param  string|array $filter Type of filter to add
     * @param  string|array $options   Options to set for the filter
     * @param  string|array $files     Files to limit this filter to
     * @return Zend_File_Transfer_Adapter
     */
    public function addFilter($filter, $options = null, $files = null)
    {
        if ($filter instanceof Zend_Filter_Interface) {
            $class = get_class($filter);
        } elseif (is_string($filter)) {
            $class  = $this->getPluginLoader(self::FILTER)->load($filter);
            $filter = new $class($options);
        } else {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('Invalid filter specified');
        }

        $this->_filters[$class] = $filter;
        $files                  = $this->_getFiles($files, true, true);
        foreach ($files as $file) {
            $this->_files[$file]['filters'][] = $class;
        }

        return $this;
    }

    /**
     * Add Multiple filters at once
     *
     * @param  array $filters
     * @param  string|array $files
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function addFilters(array $filters, $files = null)
    {
        foreach ($filters as $key => $spec) {
            if ($spec instanceof Zend_Filter_Interface) {
                $this->addFilter($spec, null, $files);
                continue;
            }

            if (is_string($key)) {
                $this->addFilter($key, $spec, $files);
                continue;
            }

            if (is_int($key)) {
                if (is_string($spec)) {
                    $this->addFilter($spec, null, $files);
                    continue;
                }

                if (is_array($spec)) {
                    if (!array_key_exists('filter', $spec)) {
                        continue;
                    }

                    $filter = $spec['filter'];
                    unset($spec['filter']);
                    $this->addFilter($filter, $spec, $files);
                    continue;
                }

                continue;
            }
        }

        return $this;
    }

    /**
     * Sets a filter for the class, erasing all previous set
     *
     * @param  string|array $filter Filter to set
     * @param  string|array $files     Files to limit this filter to
     * @return Zend_File_Transfer_Adapter
     */
    public function setFilters(array $filters, $files = null)
    {
        $this->clearFilters();
        return $this->addFilters($filters, $files);
    }

    /**
     * Determine if a given filter has already been registered
     *
     * @param  string $name
     * @return bool
     */
    public function hasFilter($name)
    {
        return (false !== $this->_getFilterIdentifier($name));
    }

    /**
     * Retrieve individual filter
     *
     * @param  string $name
     * @return Zend_Filter_Interface|null
     */
    public function getFilter($name)
    {
        if (false === ($identifier = $this->_getFilterIdentifier($name))) {
            return null;
        }
        return $this->_filters[$identifier];
    }

    /**
     * Returns all set filters
     *
     * @param  string|array $files (Optional) Returns the filter for this files
     * @return array List of set filters
     * @throws Zend_File_Transfer_Exception When file not found
     */
    public function getFilters($files = null)
    {
        if ($files === null) {
            return $this->_filters;
        }

        $files   = $this->_getFiles($files, true, true);
        $filters = array();
        foreach ($files as $file) {
            if (!empty($this->_files[$file]['filters'])) {
                $filters += $this->_files[$file]['filters'];
            }
        }

        $filters = array_unique($filters);
        $result  = array();
        foreach ($filters as $filter) {
            $result[] = $this->_filters[$filter];
        }

        return $result;
    }

    /**
     * Remove an individual filter
     *
     * @param  string $name
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function removeFilter($name)
    {
        if (false === ($key = $this->_getFilterIdentifier($name))) {
            return $this;
        }

        unset($this->_filters[$key]);
        foreach (array_keys($this->_files) as $file) {
            if (!$index = array_search($key, $this->_files[$file]['filters'])) {
                continue;
            }
            unset($this->_files[$file]['filters'][$index]);
        }
        return $this;
    }

    /**
     * Remove all filters
     *
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    public function clearFilters()
    {
        $this->_filters = array();
        foreach (array_keys($this->_files) as $file) {
            $this->_files[$file]['filters'] = array();
        }
        return $this;
    }

    /**
     * Returns all set files
     *
     * @return array List of set files
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function getFile()
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Retrieves the filename of transferred files.
     *
     * @param  string  $fileelement (Optional) Element to return the filename for
     * @param  boolean $path        (Optional) Should the path also be returned ?
     * @return string|array
     */
    public function getFileName($file = null, $path = true)
    {
        $files = $this->_getFiles($file, true, true);

        $result    = array();
        $directory = "";
        foreach($files as $file) {
            if (empty($this->_files[$file]['name'])) {
                continue;
            }

            if ($path === true) {
                $directory = $this->getDestination($file) . DIRECTORY_SEPARATOR;
            }

            $result[$file] = $directory . $this->_files[$file]['name'];
        }

        if (count($result) == 1) {
            return current($result);
        }

        return $result;
    }

    /**
     * Retrieve additional internal file informations for files
     *
     * @param  string $file (Optional) File to get informations for
     * @return array
     */
    public function getFileInfo($file = null)
    {
        return $this->_getFiles($file);
    }

    /**
     * Adds one or more files
     *
     * @param  string|array $file      File to add
     * @param  string|array $validator Validators to use for this file, must be set before
     * @param  string|array $filter    Filters to use for this file, must be set before
     * @return Zend_File_Transfer_Adapter_Abstract
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function addFile($file, $validator = null, $filter = null)
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Returns all set types
     *
     * @return array List of set types
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function getType()
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Adds one or more type of files
     *
     * @param  string|array $type Type of files to add
     * @param  string|array $validator Validators to use for this file, must be set before
     * @param  string|array $filter    Filters to use for this file, must be set before
     * @return Zend_File_Transfer_Adapter_Abstract
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    public function addType($type, $validator = null, $filter = null)
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Method not implemented');
    }

    /**
     * Sets a new destination for the given files
     *
     * @deprecated Will be changed to be a filter!!!
     * @param  string       $destination New destination directory
     * @param  string|array $files       Files to set the new destination for
     * @return Zend_File_Transfer_Abstract
     * @throws Zend_File_Transfer_Exception when the given destination is not a directory or does not exist
     */
    public function setDestination($destination, $files = null)
    {
        $orig = $files;
        $destination = rtrim($destination, "/\\");
        if (!is_dir($destination)) {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('The given destination is no directory or does not exist');
        }

        if (!is_writable($destination)) {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('The given destination is not writeable');
        }

        if ($files === null) {
            foreach ($this->_files as $file => $content) {
                $this->_files[$file]['destination'] = $destination;
            }
        } else {
            $files = $this->_getFiles($files, true, true);
            if (empty($this->_files) and is_string($orig)) {
                $this->_files[$orig]['destination'] = $destination;
            }

            foreach ($files as $file) {
                $this->_files[$file]['destination'] = $destination;
            }
        }

        return $this;
    }

    /**
     * Retrieve destination directory value
     *
     * @param  null|string|array $files
     * @return null|string|array
     */
    public function getDestination($files = null)
    {
        $files = $this->_getFiles($files, false);
        $destinations = array();
        foreach ($files as $key => $content) {
            if (isset($this->_files[$key]['destination'])) {
                $destinations[$key] = $this->_files[$key]['destination'];
            } else {
                $tmpdir = $this->_getTmpDir();
                $this->setDestination($tmpdir, $key);
                $destinations[$key] = $tmpdir;
            }
        }

        if (empty($destinations)) {
            $destinations = $this->_getTmpDir();
        } else if (count($destinations) == 1) {
            $destinations = current($destinations);
        }

        return $destinations;
    }

    /**
     * Set translator object for localization
     *
     * @param  Zend_Translate|null $translator
     * @return Zend_File_Transfer_Abstract
     */
    public function setTranslator($translator = null)
    {
        if (null === $translator) {
            $this->_translator = null;
        } elseif ($translator instanceof Zend_Translate_Adapter) {
            $this->_translator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            $this->_translator = $translator->getAdapter();
        } else {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('Invalid translator specified');
        }

        return $this;
    }

    /**
     * Retrieve localization translator object
     *
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if ($this->translatorIsDisabled()) {
            return null;
        }

        return $this->_translator;
    }

    /**
     * Indicate whether or not translation should be disabled
     *
     * @param  bool $flag
     * @return Zend_File_Transfer_Abstract
     */
    public function setDisableTranslator($flag)
    {
        $this->_translatorDisabled = (bool) $flag;
        return $this;
    }

    /**
     * Is translation disabled?
     *
     * @return bool
     */
    public function translatorIsDisabled()
    {
        return $this->_translatorDisabled;
    }

    /**
     * Returns the hash for a given file
     *
     * @param  string       $hash  Hash algorithm to use
     * @param  string|array $files Files to return the hash for
     * @return string|array Hashstring
     * @throws Zend_File_Transfer_Exception On unknown hash algorithm
     */
    public function getHash($hash = 'crc32', $files = null)
    {
        if (!in_array($hash, hash_algos())) {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception('Unknown hash algorithm');
        }

        $files  = $this->_getFiles($files);
        $result = array();
        foreach($files as $key => $value) {
            if (file_exists($value['name'])) {
                $result[$key] = hash_file($hash, $value['name']);
            } else if (file_exists($value['tmp_name'])) {
                $result[$key] = hash_file($hash, $value['tmp_name']);
            }
        }

        if (count($result) == 1) {
            return current($result);
        }

        return $result;
    }

    /**
     * Internal function to filter all given files
     *
     * @param  string|array $files (Optional) Files to check
     * @return boolean False on error
     */
    protected function _filter($files = null)
    {
        $check           = $this->_getFiles($files);
        foreach ($check as $name => $content) {
            if (array_key_exists('filters', $content)) {
                foreach ($content['filters'] as $class) {
                    $filter = $this->_filters[$class];
                    try {
                        $result = $filter->filter($this->getFileName($name));

                        $this->_files[$name]['destination'] = dirname($result);
                        $this->_files[$name]['name']        = basename($result);
                    } catch (Zend_Filter_Exception $e) {
                        $this->_messages += array($e->getMessage());
                    }
                }
            }
        }

        if (count($this->_messages) > 0) {
            return false;
        }

        return true;
    }

    /**
     * Determine system TMP directory and detect if we have read access
     *
     * @return string
     * @throws Zend_File_Transfer_Exception if unable to determine directory
     */
    protected function _getTmpDir()
    {
        if (null === $this->_tmpDir) {
            $tmpdir = array();
            if (function_exists('sys_get_temp_dir')) {
                $tmpdir[] = sys_get_temp_dir();
            }

            if (!empty($_ENV['TMP'])) {
                $tmpdir[] = realpath($_ENV['TMP']);
            }

            if (!empty($_ENV['TMPDIR'])) {
                $tmpdir[] = realpath($_ENV['TMPDIR']);
            }

            if (!empty($_ENV['TEMP'])) {
                $tmpdir[] = realpath($_ENV['TEMP']);
            }

            $upload = ini_get('upload_tmp_dir');
            if ($upload) {
                $tmpdir[] = realpath($upload);
            }

            foreach($tmpdir as $directory) {
                if ($this->_isPathWriteable($directory)) {
                    $this->_tmpDir = $directory;
                }
            }

            if (empty($this->_tmpDir)) {
                // Attemp to detect by creating a temporary file
                $tempFile = tempnam(md5(uniqid(rand(), TRUE)), '');
                if ($tempFile) {
                    $this->_tmpDir = realpath(dirname($tempFile));
                    unlink($tempFile);
                } else {
                    require_once 'Zend/File/Transfer/Exception.php';
                    throw new Zend_File_Transfer_Exception('Could not determine temp directory');
                }
            }

            $this->_tmpDir = rtrim($this->_tmpDir, "/\\");
        }
        return $this->_tmpDir;
    }

    /**
     * Tries to detect if we can read and write to the given path
     *
     * @param string $path
     */
    protected function _isPathWriteable($path)
    {
        $tempFile = rtrim($path, "/\\");
        $tempFile .= '/' . 'test.1';

        $result = @file_put_contents($tempFile, 'TEST');

        if ($result == false) {
            return false;
        }

        $result = @unlink($tempFile);

        if ($result == false) {
            return false;
        }

        return true;
    }

    /**
     * Returns found files based on internal file array and given files
     *
     * @param  string|array $files       (Optional) Files to return
     * @param  boolean      $names       (Optional) Returns only names on true, else complete info
     * @param  boolean      $noexception (Optional) Allows throwing an exception, otherwise returns an empty array
     * @return array Found files
     * @throws Zend_File_Transfer_Exception On false filename
     */
    protected function _getFiles($files, $names = false, $noexception = false)
    {
        $check = array();

        if (is_string($files)) {
            $files = array($files);
        }

        if (is_array($files)) {
            foreach ($files as $find) {
                $found = array();
                foreach ($this->_files as $file => $content) {
                    if ($file === $find) {
                        $found[] = $file;
                        break;
                    }

                    if (strpos($file, ($find . '_')) !== false) {
                        $found[] = $file;
                    }

                    if (!isset($content['name'])) {
                        continue;
                    }

                    if ($content['name'] === $find) {
                        $found[] = $file;
                        break;
                    }
                }

                if (empty($found)) {
                    if ($noexception !== false) {
                        return array();
                    }

                    require_once 'Zend/File/Transfer/Exception.php';
                    throw new Zend_File_Transfer_Exception(sprintf('"%s" not found by file transfer adapter', $find));
                }

                foreach ($found as $checked) {
                    $check[$checked] = $this->_files[$checked];
                }
            }
        }

        if ($files === null) {
            $check = $this->_files;
        }

        if ($names) {
            $check = array_keys($check);
        }

        return $check;
    }

    /**
     * Retrieve internal identifier for a named validator
     *
     * @param  string $name
     * @return string
     */
    protected function _getValidatorIdentifier($name)
    {
        if (array_key_exists($name, $this->_validators)) {
            return $name;
        }

        foreach (array_keys($this->_validators) as $test) {
            if (preg_match('/' . preg_quote($name) . '$/i', $test)) {
                return $test;
            }
        }

        return false;
    }

    /**
     * Retrieve internal identifier for a named filter
     *
     * @param  string $name
     * @return string
     */
    protected function _getFilterIdentifier($name)
    {
        if (array_key_exists($name, $this->_filters)) {
            return $name;
        }

        foreach (array_keys($this->_filters) as $test) {
            if (preg_match('/' . preg_quote($name) . '$/i', $test)) {
                return $test;
            }
        }

        return false;
    }
}
PKpG[�ݓ�RRFile/Transfer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * Base class for all protocols supporting file transfers
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_File_Transfer
{
    /**
     * Creates a file processing handler
     *
     * @param string $protocol Protocol to use
     */
    public function __construct($protocol = null)
    {
        require_once 'Zend/File/Transfer/Exception.php';
        throw new Zend_File_Transfer_Exception('Implementation in progress');

        switch (strtoupper($protocol)) {
            default:
                $adapter = 'Zend_File_Transfer_Adapter_Http';
                break;
        }
        
        Zend_Loader::loadClass($adapter);
        $this->_adapter = new $adapter();
        if (!$this->_adapter instanceof Zend_File_Transfer_Adapter) {
            require_once 'Zend/File/Transfer/Exception.php';
            throw new Zend_File_Transfer_Exception("Adapter " . $adapter . " does not extend Zend_File_Transfer_Adapter'");
        }

        return $this->_adapter;
    }
}
PKpG[�W4�@�@XmlRpc/Server.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Server.php 12195 2008-10-30 13:34:35Z matthew $
 */

/**
 * Extends Zend_Server_Abstract
 */
require_once 'Zend/Server/Abstract.php';

/**
 * Exception this class throws
 */
require_once 'Zend/XmlRpc/Server/Exception.php';

/**
 * XMLRPC Request
 */
require_once 'Zend/XmlRpc/Request.php';

/**
 * XMLRPC Response
 */
require_once 'Zend/XmlRpc/Response.php';

/**
 * XMLRPC HTTP Response
 */
require_once 'Zend/XmlRpc/Response/Http.php';

/**
 * XMLRPC server fault class
 */
require_once 'Zend/XmlRpc/Server/Fault.php';

/**
 * XMLRPC server system methods class
 */
require_once 'Zend/XmlRpc/Server/System.php';

/**
 * Convert PHP to and from xmlrpc native types
 */
require_once 'Zend/XmlRpc/Value.php';

/**
 * Reflection API for function/method introspection
 */
require_once 'Zend/Server/Reflection.php';

/**
 * Zend_Server_Reflection_Function_Abstract
 */
require_once 'Zend/Server/Reflection/Function/Abstract.php';

/**
 * Specifically grab the Zend_Server_Reflection_Method for manually setting up
 * system.* methods and handling callbacks in {@link loadFunctions()}.
 */
require_once 'Zend/Server/Reflection/Method.php';

/**
 * An XML-RPC server implementation
 *
 * Example:
 * <code>
 * require_once 'Zend/XmlRpc/Server.php';
 * require_once 'Zend/XmlRpc/Server/Cache.php';
 * require_once 'Zend/XmlRpc/Server/Fault.php';
 * require_once 'My/Exception.php';
 * require_once 'My/Fault/Observer.php';
 *
 * // Instantiate server
 * $server = new Zend_XmlRpc_Server();
 *
 * // Allow some exceptions to report as fault responses:
 * Zend_XmlRpc_Server_Fault::attachFaultException('My_Exception');
 * Zend_XmlRpc_Server_Fault::attachObserver('My_Fault_Observer');
 *
 * // Get or build dispatch table:
 * if (!Zend_XmlRpc_Server_Cache::get($filename, $server)) {
 *     require_once 'Some/Service/Class.php';
 *     require_once 'Another/Service/Class.php';
 *
 *     // Attach Some_Service_Class in 'some' namespace
 *     $server->setClass('Some_Service_Class', 'some');
 *
 *     // Attach Another_Service_Class in 'another' namespace
 *     $server->setClass('Another_Service_Class', 'another');
 *
 *     // Create dispatch table cache file
 *     Zend_XmlRpc_Server_Cache::save($filename, $server);
 * }
 *
 * $response = $server->handle();
 * echo $response;
 * </code>
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Server extends Zend_Server_Abstract
{
    /**
     * Character encoding
     * @var string
     */
    protected $_encoding = 'UTF-8';

    /**
     * Request processed
     * @var null|Zend_XmlRpc_Request
     */
    protected $_request = null;

    /**
     * Class to use for responses; defaults to {@link Zend_XmlRpc_Response_Http}
     * @var string
     */
    protected $_responseClass = 'Zend_XmlRpc_Response_Http';

    /**
     * Dispatch table of name => method pairs
     * @var Zend_XmlRpc_Server_ServerDefinition
     */
    protected $_table;

    /**
     * PHP types => XML-RPC types
     * @var array
     */
    protected $_typeMap = array(
        'i4'               => 'i4',
        'int'              => 'int',
        'integer'          => 'int',
        'double'           => 'double',
        'float'            => 'double',
        'real'             => 'double',
        'boolean'          => 'boolean',
        'bool'             => 'boolean',
        'true'             => 'boolean',
        'false'            => 'boolean',
        'string'           => 'string',
        'str'              => 'string',
        'base64'           => 'base64',
        'dateTime.iso8601' => 'dateTime.iso8601',
        'date'             => 'dateTime.iso8601',
        'time'             => 'dateTime.iso8601',
        'time'             => 'dateTime.iso8601',
        'array'            => 'array',
        'struct'           => 'struct',
        'null'             => 'nil',
        'nil'              => 'nil',
        'void'             => 'void',
        'mixed'            => 'struct'
    );

    /**
     * Constructor
     *
     * Creates system.* methods.
     *
     * @return void
     */
    public function __construct()
    {
        $this->_table = new Zend_Server_Definition();
        $this->_registerSystemMethods();
    }

    /**
     * Proxy calls to system object
     * 
     * @param  string $method 
     * @param  array $params 
     * @return mixed
     * @throws Zend_XmlRpc_Server_Exception
     */
    public function __call($method, $params)
    {
        $system = $this->getSystem();
        if (!method_exists($system, $method)) {
            throw new Zend_XmlRpc_Server_Exception('Unknown instance method called on server: ' . $method);
        }
        return call_user_func_array(array($system, $method), $params);
    }

    /**
     * Attach a callback as an XMLRPC method
     *
     * Attaches a callback as an XMLRPC method, prefixing the XMLRPC method name
     * with $namespace, if provided. Reflection is done on the callback's
     * docblock to create the methodHelp for the XMLRPC method.
     *
     * Additional arguments to pass to the function at dispatch may be passed;
     * any arguments following the namespace will be aggregated and passed at
     * dispatch time.
     *
     * @param string|array $function Valid callback
     * @param string $namespace Optional namespace prefix
     * @return void
     * @throws Zend_XmlRpc_Server_Exception
     */
    public function addFunction($function, $namespace = '')
    {
        if (!is_string($function) && !is_array($function)) {
            throw new Zend_XmlRpc_Server_Exception('Unable to attach function; invalid', 611);
        }

        $argv = null;
        if (2 < func_num_args()) {
            $argv = func_get_args();
            $argv = array_slice($argv, 2);
        }

        $function = (array) $function;
        foreach ($function as $func) {
            if (!is_string($func) || !function_exists($func)) {
                throw new Zend_XmlRpc_Server_Exception('Unable to attach function; invalid', 611);
            }
            $reflection = Zend_Server_Reflection::reflectFunction($func, $argv, $namespace);
            $this->_buildSignature($reflection);
        }
    }

    /**
     * Attach class methods as XMLRPC method handlers
     *
     * $class may be either a class name or an object. Reflection is done on the
     * class or object to determine the available public methods, and each is
     * attached to the server as an available method; if a $namespace has been
     * provided, that namespace is used to prefix the XMLRPC method names.
     *
     * Any additional arguments beyond $namespace will be passed to a method at
     * invocation.
     *
     * @param string|object $class
     * @param string $namespace Optional
     * @param mixed $argv Optional arguments to pass to methods
     * @return void
     * @throws Zend_XmlRpc_Server_Exception on invalid input
     */
    public function setClass($class, $namespace = '', $argv = null)
    {
        if (is_string($class) && !class_exists($class)) {
            if (!class_exists($class)) {
                throw new Zend_XmlRpc_Server_Exception('Invalid method class', 610);
            }
        }

        $argv = null;
        if (3 < func_num_args()) {
            $argv = func_get_args();
            $argv = array_slice($argv, 3);
        }

        $dispatchable = Zend_Server_Reflection::reflectClass($class, $argv, $namespace);
        foreach ($dispatchable->getMethods() as $reflection) {
            $this->_buildSignature($reflection, $class);
        }
    }

    /**
     * Raise an xmlrpc server fault
     *
     * @param string|Exception $fault
     * @param int $code
     * @return Zend_XmlRpc_Server_Fault
     */
    public function fault($fault = null, $code = 404)
    {
        if (!$fault instanceof Exception) {
            $fault = (string) $fault;
            if (empty($fault)) {
                $fault = 'Unknown error';
            }
            $fault = new Zend_XmlRpc_Server_Exception($fault, $code);
        }

        return Zend_XmlRpc_Server_Fault::getInstance($fault);
    }

    /**
     * Handle an xmlrpc call
     *
     * @param Zend_XmlRpc_Request $request Optional
     * @return Zend_XmlRpc_Response|Zend_XmlRpc_Fault
     */
    public function handle($request = false)
    {
        // Get request
        if ((!$request || !$request instanceof Zend_XmlRpc_Request)
            && (null === ($request = $this->getRequest()))
        ) {
            require_once 'Zend/XmlRpc/Request/Http.php';
            $request = new Zend_XmlRpc_Request_Http();
            $request->setEncoding($this->getEncoding());
        }

        $this->setRequest($request);

        if ($request->isFault()) {
            $response = $request->getFault();
        } else {
            try {
                $response = $this->_handle($request);
            } catch (Exception $e) {
                $response = $this->fault($e);
            }
        }

        // Set output encoding
        $response->setEncoding($this->getEncoding());

        return $response;
    }

    /**
     * Load methods as returned from {@link getFunctions}
     *
     * Typically, you will not use this method; it will be called using the
     * results pulled from {@link Zend_XmlRpc_Server_Cache::get()}.
     *
     * @param  array|Zend_Server_Definition $definition
     * @return void
     * @throws Zend_XmlRpc_Server_Exception on invalid input
     */
    public function loadFunctions($definition)
    {
        if (!is_array($definition) && (!$definition instanceof Zend_Server_Definition)) {
            if (is_object($definition)) {
                $type = get_class($definition);
            } else {
                $type = gettype($definition);
            }
            throw new Zend_XmlRpc_Server_Exception('Unable to load server definition; must be an array or Zend_Server_Definition, received ' . $type, 612);
        }

        $this->_table->clearMethods();
        $this->_registerSystemMethods();

        if ($definition instanceof Zend_Server_Definition) {
            $definition = $definition->getMethods();
        }

        foreach ($definition as $key => $method) {
            if ('system.' == substr($key, 0, 7)) {
                continue;
            }
            $this->_table->addMethod($method, $key);
        }
    }

    /**
     * Set encoding
     *
     * @param string $encoding
     * @return Zend_XmlRpc_Server
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Retrieve current encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Do nothing; persistence is handled via {@link Zend_XmlRpc_Server_Cache}
     *
     * @param  mixed $mode
     * @return void
     */
    public function setPersistence($mode)
    {
    }

    /**
     * Set the request object
     *
     * @param string|Zend_XmlRpc_Request $request
     * @return Zend_XmlRpc_Server
     * @throws Zend_XmlRpc_Server_Exception on invalid request class or object
     */
    public function setRequest($request)
    {
        if (is_string($request) && class_exists($request)) {
            $request = new $request();
            if (!$request instanceof Zend_XmlRpc_Request) {
                throw new Zend_XmlRpc_Server_Exception('Invalid request class');
            }
            $request->setEncoding($this->getEncoding());
        } elseif (!$request instanceof Zend_XmlRpc_Request) {
            throw new Zend_XmlRpc_Server_Exception('Invalid request object');
        }

        $this->_request = $request;
        return $this;
    }

    /**
     * Return currently registered request object
     *
     * @return null|Zend_XmlRpc_Request
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Set the class to use for the response
     *
     * @param string $class
     * @return boolean True if class was set, false if not
     */
    public function setResponseClass($class)
    {
        if (class_exists($class)) {
            $reflection = new ReflectionClass($class);
            if ($reflection->isSubclassOf(new ReflectionClass('Zend_XmlRpc_Response'))) {
                $this->_responseClass = $class;
                return true;
            }
        }

        return false;
    }

    /**
     * Retrieve current response class
     * 
     * @return string
     */
    public function getResponseClass()
    {
        return $this->_responseClass;
    }

    /**
     * Retrieve dispatch table
     * 
     * @return array
     */
    public function getDispatchTable()
    {
        return $this->_table;
    }

    /**
     * Returns a list of registered methods
     *
     * Returns an array of dispatchables (Zend_Server_Reflection_Function,
     * _Method, and _Class items).
     *
     * @return array
     */
    public function getFunctions()
    {
        return $this->_table->toArray();
    }

    /**
     * Retrieve system object
     * 
     * @return Zend_XmlRpc_Server_System
     */
    public function getSystem()
    {
        return $this->_system;
    }

    /**
     * Map PHP type to XML-RPC type
     * 
     * @param  string $type 
     * @return string
     */
    protected function _fixType($type)
    {
        if (isset($this->_typeMap[$type])) {
            return $this->_typeMap[$type];
        }
        return 'void';
    }

    /**
     * Handle an xmlrpc call (actual work)
     *
     * @param Zend_XmlRpc_Request $request
     * @return Zend_XmlRpc_Response
     * @throws Zend_XmlRpcServer_Exception|Exception
     * Zend_XmlRpcServer_Exceptions are thrown for internal errors; otherwise,
     * any other exception may be thrown by the callback
     */
    protected function _handle(Zend_XmlRpc_Request $request)
    {
        $method = $request->getMethod();

        // Check for valid method
        if (!$this->_table->hasMethod($method)) {
            throw new Zend_XmlRpc_Server_Exception('Method "' . $method . '" does not exist', 620);
        }

        $info     = $this->_table->getMethod($method);
        $params   = $request->getParams();
        $argv     = $info->getInvokeArguments();
        if (0 < count($argv)) {
            $params = array_merge($params, $argv);
        }

        // Check calling parameters against signatures
        $matched    = false;
        $sigCalled  = $request->getTypes();

        $sigLength  = count($sigCalled);
        $paramsLen  = count($params);
        if ($sigLength < $paramsLen) {
            for ($i = $sigLength; $i < $paramsLen; ++$i) {
                $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($params[$i]);
                $sigCalled[] = $xmlRpcValue->getType();
            }
        }

        $signatures = $info->getPrototypes();
        foreach ($signatures as $signature) {
            $sigParams = $signature->getParameters();
            if ($sigCalled === $sigParams) {
                $matched = true;
                break;
            }
        }
        if (!$matched) {
            throw new Zend_XmlRpc_Server_Exception('Calling parameters do not match signature', 623);
        }

        $return        = $this->_dispatch($info, $params);
        $responseClass = $this->getResponseClass();
        return new $responseClass($return);
    }

    /**
     * Register system methods with the server
     * 
     * @return void
     */
    protected function _registerSystemMethods()
    {
        $system = new Zend_XmlRpc_Server_System($this);
        $this->_system = $system;
        $this->setClass($system, 'system');
    }
}
PKpG[�޿1818XmlRpc/Value.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Value.php 12721 2008-11-20 18:21:58Z matthew $
 */


/** Zend_XmlRpc_Value_Exception */
require_once 'Zend/XmlRpc/Value/Exception.php';

/** Zend_XmlRpc_Value_Scalar */
require_once 'Zend/XmlRpc/Value/Scalar.php';

/** Zend_XmlRpc_Value_Base64 */
require_once 'Zend/XmlRpc/Value/Base64.php';

/** Zend_XmlRpc_Value_Boolean */
require_once 'Zend/XmlRpc/Value/Boolean.php';

/** Zend_XmlRpc_Value_DateTime */
require_once 'Zend/XmlRpc/Value/DateTime.php';

/** Zend_XmlRpc_Value_Double */
require_once 'Zend/XmlRpc/Value/Double.php';

/** Zend_XmlRpc_Value_Integer */
require_once 'Zend/XmlRpc/Value/Integer.php';

/** Zend_XmlRpc_Value_String */
require_once 'Zend/XmlRpc/Value/String.php';

/** Zend_XmlRpc_Value_Nil */
require_once 'Zend/XmlRpc/Value/Nil.php';

/** Zend_XmlRpc_Value_Collection */
require_once 'Zend/XmlRpc/Value/Collection.php';

/** Zend_XmlRpc_Value_Array */
require_once 'Zend/XmlRpc/Value/Array.php';

/** Zend_XmlRpc_Value_Struct */
require_once 'Zend/XmlRpc/Value/Struct.php';


/**
 * Represent a native XML-RPC value entity, used as parameters for the methods
 * called by the Zend_XmlRpc_Client object and as the return value for those calls.
 *
 * This object as a very important static function Zend_XmlRpc_Value::getXmlRpcValue, this
 * function acts likes a factory for the Zend_XmlRpc_Value objects
 *
 * Using this function, users/Zend_XmlRpc_Client object can create the Zend_XmlRpc_Value objects
 * from PHP variables, XML string or by specifing the exact XML-RPC natvie type
 *
 * @package    Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_XmlRpc_Value
{
    /**
     * The native XML-RPC representation of this object's value
     *
     * If the native type of this object is array or struct, this will be an array
     * of Zend_XmlRpc_Value objects
     */
    protected $_value;

    /**
     * The native XML-RPC type of this object
     * One of the XMLRPC_TYPE_* constants
     */
    protected $_type;

    /**
     * XML code representation of this object (will be calculated only once)
     */
    protected $_as_xml;

    /**
     * DOMElement representation of object (will be calculated only once)
     */
    protected $_as_dom;

    /**
     * Specify that the XML-RPC native type will be auto detected from a PHP variable type
     */
    const AUTO_DETECT_TYPE = 'auto_detect';

    /**
     * Specify that the XML-RPC value will be parsed out from a given XML code
     */
    const XML_STRING = 'xml';

    /**
     * All the XML-RPC native types
     */
    const XMLRPC_TYPE_I4       = 'i4';
    const XMLRPC_TYPE_INTEGER  = 'int';
    const XMLRPC_TYPE_DOUBLE   = 'double';
    const XMLRPC_TYPE_BOOLEAN  = 'boolean';
    const XMLRPC_TYPE_STRING   = 'string';
    const XMLRPC_TYPE_DATETIME = 'dateTime.iso8601';
    const XMLRPC_TYPE_BASE64   = 'base64';
    const XMLRPC_TYPE_ARRAY    = 'array';
    const XMLRPC_TYPE_STRUCT   = 'struct';
    const XMLRPC_TYPE_NIL      = 'nil';


    /**
     * Get the native XML-RPC type (the type is one of the Zend_XmlRpc_Value::XMLRPC_TYPE_* constants)
     *
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }


    /**
     * Return the value of this object, convert the XML-RPC native value into a PHP variable
     *
     * @return mixed
     */
    abstract public function getValue();


    /**
     * Return the XML code that represent a native MXL-RPC value
     *
     * @return string
     */
    abstract public function saveXML();

    /**
     * Return DOMElement representation of object
     *
     * @return DOMElement
     */
    public function getAsDOM()
    {
        if (!$this->_as_dom) {
            $doc = new DOMDocument('1.0');
            $doc->loadXML($this->saveXML());
            $this->_as_dom = $doc->documentElement;
        }

        return $this->_as_dom;
    }

    protected function _stripXmlDeclaration(DOMDocument $dom)
    {
        return preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $dom->saveXML());
    }

    /**
     * Creates a Zend_XmlRpc_Value* object, representing a native XML-RPC value
     * A XmlRpcValue object can be created in 3 ways:
     * 1. Autodetecting the native type out of a PHP variable
     *    (if $type is not set or equal to Zend_XmlRpc_Value::AUTO_DETECT_TYPE)
     * 2. By specifing the native type ($type is one of the Zend_XmlRpc_Value::XMLRPC_TYPE_* constants)
     * 3. From a XML string ($type is set to Zend_XmlRpc_Value::XML_STRING)
     *
     * By default the value type is autodetected according to it's PHP type
     *
     * @param mixed $value
     * @param Zend_XmlRpc_Value::constant $type
     *
     * @return Zend_XmlRpc_Value
     * @static
     */
    public static function getXmlRpcValue($value, $type = self::AUTO_DETECT_TYPE)
    {
        switch ($type) {
            case self::AUTO_DETECT_TYPE:
                // Auto detect the XML-RPC native type from the PHP type of $value
                return self::_phpVarToNativeXmlRpc($value);

            case self::XML_STRING:
                // Parse the XML string given in $value and get the XML-RPC value in it
                return self::_xmlStringToNativeXmlRpc($value);

            case self::XMLRPC_TYPE_I4:
                // fall through to the next case
            case self::XMLRPC_TYPE_INTEGER:
                return new Zend_XmlRpc_Value_Integer($value);

            case self::XMLRPC_TYPE_DOUBLE:
                return new Zend_XmlRpc_Value_Double($value);

            case self::XMLRPC_TYPE_BOOLEAN:
                return new Zend_XmlRpc_Value_Boolean($value);

            case self::XMLRPC_TYPE_STRING:
                return new Zend_XmlRpc_Value_String($value);

            case self::XMLRPC_TYPE_BASE64:
                return new Zend_XmlRpc_Value_Base64($value);

            case self::XMLRPC_TYPE_NIL:
                return new Zend_XmlRpc_Value_Nil();

            case self::XMLRPC_TYPE_DATETIME:
                return new Zend_XmlRpc_Value_DateTime($value);

            case self::XMLRPC_TYPE_ARRAY:
                return new Zend_XmlRpc_Value_Array($value);

            case self::XMLRPC_TYPE_STRUCT:
                return new Zend_XmlRpc_Value_Struct($value);

            default:
                throw new Zend_XmlRpc_Value_Exception('Given type is not a '. __CLASS__ .' constant');
        }
    }


    /**
     * Transform a PHP native variable into a XML-RPC native value
     *
     * @param mixed $value The PHP variable for convertion
     *
     * @return Zend_XmlRpc_Value
     * @static
     */
    private static function _phpVarToNativeXmlRpc($value)
    {
        switch (gettype($value)) {
            case 'object':
                // Check to see if it's an XmlRpc value
                if ($value instanceof Zend_XmlRpc_Value) {
                    return $value;
                }
                
                // Otherwise, we convert the object into a struct
                $value = get_object_vars($value);
                // Break intentionally omitted
            case 'array':
                // Default native type for a PHP array (a simple numeric array) is 'array'
                $obj = 'Zend_XmlRpc_Value_Array';

                // Determine if this is an associative array
                if (!empty($value) && is_array($value) && (array_keys($value) !== range(0, count($value) - 1))) {
                    $obj = 'Zend_XmlRpc_Value_Struct';
                }
                return new $obj($value);

            case 'integer':
                return new Zend_XmlRpc_Value_Integer($value);

            case 'double':
                return new Zend_XmlRpc_Value_Double($value);

            case 'boolean':
                return new Zend_XmlRpc_Value_Boolean($value);

            case 'NULL':
            case 'null':
                return new Zend_XmlRpc_Value_Nil();

            case 'string':
                // Fall through to the next case
            default:
                // If type isn't identified (or identified as string), it treated as string
                return new Zend_XmlRpc_Value_String($value);
        }
    }


    /**
     * Transform an XML string into a XML-RPC native value
     *
     * @param string|SimpleXMLElement $simple_xml A SimpleXMLElement object represent the XML string
     *                                            It can be also a valid XML string for convertion
     *
     * @return Zend_XmlRpc_Value
     * @static
     */
    private static function _xmlStringToNativeXmlRpc($simple_xml)
    {
        if (!$simple_xml instanceof SimpleXMLElement) {
            try {
                $simple_xml = @new SimpleXMLElement($simple_xml);
            } catch (Exception $e) {
                // The given string is not a valid XML
                throw new Zend_XmlRpc_Value_Exception('Failed to create XML-RPC value from XML string: '.$e->getMessage(),$e->getCode());
            }
        }

        // Get the key (tag name) and value from the simple xml object and convert the value to an XML-RPC native value
        list($type, $value) = each($simple_xml);
        if (!$type) {    // If no type was specified, the default is string
            $type = self::XMLRPC_TYPE_STRING;
        }

        switch ($type) {
            // All valid and known XML-RPC native values
            case self::XMLRPC_TYPE_I4:
                // Fall through to the next case
            case self::XMLRPC_TYPE_INTEGER:
                $xmlrpc_val = new Zend_XmlRpc_Value_Integer($value);
                break;
            case self::XMLRPC_TYPE_DOUBLE:
                $xmlrpc_val = new Zend_XmlRpc_Value_Double($value);
                break;
            case self::XMLRPC_TYPE_BOOLEAN:
                $xmlrpc_val = new Zend_XmlRpc_Value_Boolean($value);
                break;
            case self::XMLRPC_TYPE_STRING:
                $xmlrpc_val = new Zend_XmlRpc_Value_String($value);
                break;
            case self::XMLRPC_TYPE_DATETIME:  // The value should already be in a iso8601 format
                $xmlrpc_val = new Zend_XmlRpc_Value_DateTime($value);
                break;
            case self::XMLRPC_TYPE_BASE64:    // The value should already be base64 encoded
                $xmlrpc_val = new Zend_XmlRpc_Value_Base64($value ,true);
                break;
            case self::XMLRPC_TYPE_NIL:    // The value should always be NULL
                $xmlrpc_val = new Zend_XmlRpc_Value_Nil();
                break;
            case self::XMLRPC_TYPE_ARRAY:
                // If the XML is valid, $value must be an SimpleXML element and contain the <data> tag
                if (!$value instanceof SimpleXMLElement) {
                    throw new Zend_XmlRpc_Value_Exception('XML string is invalid for XML-RPC native '. self::XMLRPC_TYPE_ARRAY .' type');
                } 

                // PHP 5.2.4 introduced a regression in how empty($xml->value) 
                // returns; need to look for the item specifically
                $data = null;
                foreach ($value->children() as $key => $value) {
                    if ('data' == $key) {
                        $data = $value;
                        break;
                    }
                }
                
                if (null === $data) {
                    throw new Zend_XmlRpc_Value_Exception('Invalid XML for XML-RPC native '. self::XMLRPC_TYPE_ARRAY .' type: ARRAY tag must contain DATA tag');
                }
                $values = array();
                // Parse all the elements of the array from the XML string
                // (simple xml element) to Zend_XmlRpc_Value objects
                foreach ($data->value as $element) {
                    $values[] = self::_xmlStringToNativeXmlRpc($element);
                }
                $xmlrpc_val = new Zend_XmlRpc_Value_Array($values);
                break;
            case self::XMLRPC_TYPE_STRUCT:
                // If the XML is valid, $value must be an SimpleXML
                if ((!$value instanceof SimpleXMLElement)) {
                    throw new Zend_XmlRpc_Value_Exception('XML string is invalid for XML-RPC native '. self::XMLRPC_TYPE_STRUCT .' type');
                }
                $values = array();
                // Parse all the memebers of the struct from the XML string
                // (simple xml element) to Zend_XmlRpc_Value objects
                foreach ($value->member as $member) {
                    // @todo? If a member doesn't have a <value> tag, we don't add it to the struct
                    // Maybe we want to throw an exception here ?
                    if ((!$member->value instanceof SimpleXMLElement)) {
                        continue;
                        //throw new Zend_XmlRpc_Value_Exception('Member of the '. self::XMLRPC_TYPE_STRUCT .' XML-RPC native type must contain a VALUE tag');
                    }
                    $values[(string)$member->name] = self::_xmlStringToNativeXmlRpc($member->value);
                }
                $xmlrpc_val = new Zend_XmlRpc_Value_Struct($values);
                break;
            default:
                throw new Zend_XmlRpc_Value_Exception('Value type \''. $type .'\' parsed from the XML string is not a known XML-RPC native type');
                break;
        }
        $xmlrpc_val->_setXML($simple_xml->asXML());

        return $xmlrpc_val;
    }


    private function _setXML($xml)
    {
        $this->_as_xml = $xml;
    }

}


PKpG[G���T/T/XmlRpc/Request.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Exception.php';

/**
 * Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';

/**
 * Zend_XmlRpc_Fault
 */
require_once 'Zend/XmlRpc/Fault.php';

/**
 * XmlRpc Request object
 *
 * Encapsulates an XmlRpc request, holding the method call and all parameters.
 * Provides accessors for these, as well as the ability to load from XML and to
 * create the XML request string.
 *
 * Additionally, if errors occur setting the method or parsing XML, a fault is
 * generated and stored in {@link $_fault}; developers may check for it using
 * {@link isFault()} and {@link getFault()}.
 *
 * @category Zend
 * @package  Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Request.php 8997 2008-03-22 17:17:05Z matthew $
 */
class Zend_XmlRpc_Request
{
    /**
     * Request character encoding
     * @var string
     */
    protected $_encoding = 'UTF-8';

    /**
     * Method to call
     * @var string
     */
    protected $_method;

    /**
     * XML request
     * @var string
     */
    protected $_xml;

    /**
     * Method parameters
     * @var array
     */
    protected $_params = array();

    /**
     * Fault object, if any
     * @var Zend_XmlRpc_Fault
     */
    protected $_fault = null;

    /**
     * XML-RPC type for each param
     * @var array
     */
    protected $_types = array();

    /**
     * XML-RPC request params
     * @var array
     */
    protected $_xmlRpcParams = array();

    /**
     * Create a new XML-RPC request
     *
     * @param string $method (optional)
     * @param array $params  (optional)
     */
    public function __construct($method = null, $params = null)
    {
        if ($method !== null) {
            $this->setMethod($method);
        }

        if ($params !== null) {
            $this->setParams($params);
        }
    }


    /**
     * Set encoding to use in request
     *
     * @param string $encoding
     * @return Zend_XmlRpc_Request
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Retrieve current request encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Set method to call
     *
     * @param string $method
     * @return boolean Returns true on success, false if method name is invalid
     */
    public function setMethod($method)
    {
        if (!is_string($method) || !preg_match('/^[a-z0-9_.:\/]+$/i', $method)) {
            $this->_fault = new Zend_XmlRpc_Fault(634, 'Invalid method name ("' . $method . '")');
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        $this->_method = $method;
        return true;
    }

    /**
     * Retrieve call method
     *
     * @return string
     */
    public function getMethod()
    {
        return $this->_method;
    }

    /**
     * Add a parameter to the parameter stack
     *
     * Adds a parameter to the parameter stack, associating it with the type
     * $type if provided
     *
     * @param mixed $value
     * @param string $type Optional; type hinting
     * @return void
     */
    public function addParam($value, $type = null)
    {
        $this->_params[] = $value;
        if (null === $type) {
            // Detect type if not provided explicitly
            if ($value instanceof Zend_XmlRpc_Value) {
                $type = $value->getType();
            } else {
                $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($value);
                $type        = $xmlRpcValue->getType();
            }
        }
        $this->_types[]  = $type;
        $this->_xmlRpcParams[] = array('value' => $value, 'type' => $type);
    }

    /**
     * Set the parameters array
     *
     * If called with a single, array value, that array is used to set the
     * parameters stack. If called with multiple values or a single non-array
     * value, the arguments are used to set the parameters stack.
     *
     * Best is to call with array of the format, in order to allow type hinting
     * when creating the XMLRPC values for each parameter:
     * <code>
     * $array = array(
     *     array(
     *         'value' => $value,
     *         'type'  => $type
     *     )[, ... ]
     * );
     * </code>
     *
     * @access public
     * @return void
     */
    public function setParams()
    {
        $argc = func_num_args();
        $argv = func_get_args();
        if (0 == $argc) {
            return;
        }

        if ((1 == $argc) && is_array($argv[0])) {
            $params     = array();
            $types      = array();
            $wellFormed = true;
            foreach ($argv[0] as $arg) {
                if (!is_array($arg) || !isset($arg['value'])) {
                    $wellFormed = false;
                    break;
                }
                $params[] = $arg['value'];

                if (!isset($arg['type'])) {
                    $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg['value']);
                    $arg['type'] = $xmlRpcValue->getType();
                }
                $types[] = $arg['type'];
            }
            if ($wellFormed) {
                $this->_xmlRpcParams = $argv[0];
                $this->_params = $params;
                $this->_types  = $types;
            } else {
                $this->_params = $argv[0];
                $this->_types  = array();
                $xmlRpcParams  = array();
                foreach ($argv[0] as $arg) {
                    if ($arg instanceof Zend_XmlRpc_Value) {
                        $type = $arg->getType();
                    } else {
                        $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg);
                        $type        = $xmlRpcValue->getType();
                    }
                    $xmlRpcParams[] = array('value' => $arg, 'type' => $type);
                    $this->_types[] = $type;
                }
                $this->_xmlRpcParams = $xmlRpcParams;
            }
            return;
        }

        $this->_params = $argv;
        $this->_types  = array();
        $xmlRpcParams  = array();
        foreach ($argv as $arg) {
            if ($arg instanceof Zend_XmlRpc_Value) {
                $type = $arg->getType();
            } else {
                $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg);
                $type        = $xmlRpcValue->getType();
            }
            $xmlRpcParams[] = array('value' => $arg, 'type' => $type);
            $this->_types[] = $type;
        }
        $this->_xmlRpcParams = $xmlRpcParams;
    }

    /**
     * Retrieve the array of parameters
     *
     * @return array
     */
    public function getParams()
    {
        return $this->_params;
    }

    /**
     * Return parameter types
     * 
     * @return array
     */
    public function getTypes()
    {
        return $this->_types;
    }

    /**
     * Load XML and parse into request components
     *
     * @param string $request
     * @return boolean True on success, false if an error occurred.
     */
    public function loadXml($request)
    {
        if (!is_string($request)) {
            $this->_fault = new Zend_XmlRpc_Fault(635);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        try {
            $xml = @new SimpleXMLElement($request);
        } catch (Exception $e) {
            // Not valid XML
            $this->_fault = new Zend_XmlRpc_Fault(631);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        // Check for method name
        if (empty($xml->methodName)) {
            // Missing method name
            $this->_fault = new Zend_XmlRpc_Fault(632);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        $this->_method = (string) $xml->methodName;

        // Check for parameters
        if (!empty($xml->params)) {
            $types = array();
            $argv  = array();
            foreach ($xml->params->children() as $param) {
                if (! $param->value instanceof SimpleXMLElement) {
                    $this->_fault = new Zend_XmlRpc_Fault(633);
                    $this->_fault->setEncoding($this->getEncoding());
                    return false;
                }

                try {
                    $param   = Zend_XmlRpc_Value::getXmlRpcValue($param->value, Zend_XmlRpc_Value::XML_STRING);
                    $types[] = $param->getType();
                    $argv[]  = $param->getValue();
                } catch (Exception $e) {
                    $this->_fault = new Zend_XmlRpc_Fault(636);
                    $this->_fault->setEncoding($this->getEncoding());
                    return false;
                }
            }

            $this->_types  = $types;
            $this->_params = $argv;
        }

        $this->_xml = $request;

        return true;
    }

    /**
     * Does the current request contain errors and should it return a fault
     * response?
     *
     * @return boolean
     */
    public function isFault()
    {
        return $this->_fault instanceof Zend_XmlRpc_Fault;
    }

    /**
     * Retrieve the fault response, if any
     *
     * @return null|Zend_XmlRpc_Fault
     */
    public function getFault()
    {
        return $this->_fault;
    }

    /**
     * Retrieve method parameters as XMLRPC values
     *
     * @return array
     */
    protected function _getXmlRpcParams()
    {
        $params = array();
        if (is_array($this->_xmlRpcParams)) {
            foreach ($this->_xmlRpcParams as $param) {
                $value = $param['value'];
                $type  = isset($param['type']) ? $param['type'] : Zend_XmlRpc_Value::AUTO_DETECT_TYPE;

                if (!$value instanceof Zend_XmlRpc_Value) {
                    $value = Zend_XmlRpc_Value::getXmlRpcValue($value, $type);
                }
                $params[] = $value;
            }
        }

        return $params;
    }

    /**
     * Create XML request
     *
     * @return string
     */
    public function saveXML()
    {
        $args   = $this->_getXmlRpcParams();
        $method = $this->getMethod();

        $dom = new DOMDocument('1.0', $this->getEncoding());
        $mCall = $dom->appendChild($dom->createElement('methodCall'));
        $mName = $mCall->appendChild($dom->createElement('methodName', $method));

        if (is_array($args) && count($args)) {
            $params = $mCall->appendChild($dom->createElement('params'));

            foreach ($args as $arg) {
                /* @var $arg Zend_XmlRpc_Value */
                $argDOM = new DOMDocument('1.0', $this->getEncoding());
                $argDOM->loadXML($arg->saveXML());

                $param = $params->appendChild($dom->createElement('param'));
                $param->appendChild($dom->importNode($argDOM->documentElement, 1));
            }
        }

        return $dom->saveXML();
    }

    /**
     * Return XML request
     *
     * @return string
     */
    public function __toString()
    {
        return $this->saveXML();
    }
}
PKpG[V�I�m	m	XmlRpc/Value/Collection.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Collection.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_XmlRpc_Value_Collection extends Zend_XmlRpc_Value
{

    /**
     * Set the value of a collection type (array and struct) native types
     *
     * @param array $value
     */
    public function __construct($value)
    {
        $values = (array)$value;   // Make sure that the value is an array
        foreach ($values as $key => $value) {
            // If the elements of the given array are not Zend_XmlRpc_Value objects,
            // we need to convert them as such (using auto-detection from PHP value)
            if (!$value instanceof parent) {
                $value = self::getXmlRpcValue($value, self::AUTO_DETECT_TYPE);
            }
            $this->_value[$key] = $value;
        }
    }


    /**
     * Return the value of this object, convert the XML-RPC native collection values into a PHP array
     *
     * @return arary
     */
    public function getValue()
    {
        $values = (array)$this->_value;
        foreach ($values as $key => $value) {
            /* @var $value Zend_XmlRpc_Value */

            if (!$value instanceof parent) {
                throw new Zend_XmlRpc_Value_Exception('Values of '. get_class($this) .' type must be Zend_XmlRpc_Value objects');
            }
            $values[$key] = $value->getValue();
        }
        return $values;
    }

}

PKpG[;�sXmlRpc/Value/String.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: String.php 9095 2008-03-30 18:52:31Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';

/**
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_String extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a string native type
     *
     * @param string $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_STRING;

        // Make sure this value is string and all XML characters are encoded
        $this->_value = $this->_xml_entities($value);
    }

    /**
     * Return the value of this object, convert the XML-RPC native string value into a PHP string
     * Decode all encoded risky XML entities back to normal characters
     *
     * @return string
     */
    public function getValue()
    {
        return html_entity_decode($this->_value, ENT_QUOTES, 'UTF-8');
    }

    /**
     * Make sure a string will be safe for XML, convert risky characters to HTML entities
     *
     * @param string $str
     * @return string
     */
    private function _xml_entities($str)
    {
        return htmlentities($str, ENT_QUOTES, 'UTF-8');
    }

}

PKpG[�oP�..XmlRpc/Value/Nil.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Nil.php 9095 2008-03-30 18:52:31Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Nil extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a nil native type
     *
     */
    public function __construct()
    {
        $this->_type = self::XMLRPC_TYPE_NIL;
        $this->_value = null;
    }

    /**
     * Return the value of this object, convert the XML-RPC native nill value into a PHP NULL
     *
     * @return null
     */
    public function getValue()
    {
        return null;
    }

    /**
     * Return the XML code representing the nil
     * 
     * @return string
     */
    public function saveXML()
    {
        if (! $this->_as_xml) {   // The XML was not generated yet
            $dom   = new DOMDocument('1.0', 'UTF-8');
            $value = $dom->appendChild($dom->createElement('value'));
            $type  = $value->appendChild($dom->createElement($this->_type));

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[`wյ�	�	XmlRpc/Value/Boolean.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Boolean.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Boolean extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a boolean native type
     * We hold the boolean type as an integer (0 or 1)
     *
     * @param bool $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_BOOLEAN;
        // Make sure the value is boolean and then convert it into a integer
        // The double convertion is because a bug in the ZendOptimizer in PHP version 5.0.4
        $this->_value = (int)(bool)$value;
    }

    /**
     * Return the value of this object, convert the XML-RPC native boolean value into a PHP boolean
     *
     * @return bool
     */
    public function getValue()
    {
        return (bool)$this->_value;
    }

    /**
     * Return the XML-RPC serialization of the boolean value
     *
     * @return string
     */
    public function saveXML()
    {
        if (! $this->_as_xml) {   // The XML was not generated yet
            $dom   = new DOMDocument('1.0', 'UTF-8');
            $value = $dom->appendChild($dom->createElement('value'));
            $type  = $value->appendChild($dom->createElement($this->_type));
            $type->appendChild($dom->createTextNode($this->_value));

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[aN�n
n
XmlRpc/Value/Base64.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Base64.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Base64 extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a base64 native type
     * We keep this value in base64 encoding
     *
     * @param string $value
     * @param bool $already_encoded If set, it means that the given string is already base64 encoded
     */
    public function __construct($value, $already_encoded=false)
    {
        $this->_type = self::XMLRPC_TYPE_BASE64;

        $value = (string)$value;    // Make sure this value is string
        if (!$already_encoded) {
            $value = base64_encode($value);     // We encode it in base64
        }
        $this->_value = $value;
    }

    /**
     * Return the value of this object, convert the XML-RPC native base64 value into a PHP string
     * We return this value decoded (a normal string)
     *
     * @return string
     */
    public function getValue()
    {
        return base64_decode($this->_value);
    }

    /**
     * Return the XML code representing the base64-encoded value
     * 
     * @return string
     */
    public function saveXML()
    {
        if (! $this->_as_xml) {   // The XML was not generated yet
            $dom   = new DOMDocument('1.0', 'UTF-8');
            $value = $dom->appendChild($dom->createElement('value'));
            $type  = $value->appendChild($dom->createElement($this->_type));
            $type->appendChild($dom->createTextNode($this->_value));

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[S;�'0
0
XmlRpc/Value/DateTime.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DateTime.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_DateTime extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a dateTime.iso8601 native type
     *
     * The value is in iso8601 format, minus any timezone information or dashes
     *
     * @param mixed $value Integer of the unix timestamp or any string that can be parsed
     *                     to a unix timestamp using the PHP strtotime() function
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_DATETIME;

        // If the value is not numeric, we try to convert it to a timestamp (using the strtotime function)
        if (is_numeric($value)) {   // The value is numeric, we make sure it is an integer
            $value = (int)$value;
        } else {
            $value = strtotime($value);
            if ($value === false || $value == -1) { // cannot convert the value to a timestamp
                throw new Zend_XmlRpc_Value_Exception('Cannot convert given value \''. $value .'\' to a timestamp');
            }
        }
        $value = date('c', $value); // Convert the timestamp to iso8601 format

        // Strip out TZ information and dashes
        $value = preg_replace('/(\+|-)\d{2}:\d{2}$/', '', $value);
        $value = str_replace('-', '', $value);

        $this->_value = $value;
    }

    /**
     * Return the value of this object as iso8601 dateTime value
     *
     * @return int As a Unix timestamp
     */
    public function getValue()
    {
        return $this->_value;
    }

}

PKpG[-��C��XmlRpc/Value/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Exception.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Exception extends Zend_XmlRpc_Exception
{}

PKpG[G���d	d	XmlRpc/Value/Struct.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Struct.php 9095 2008-03-30 18:52:31Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Collection
 */
require_once 'Zend/XmlRpc/Value/Collection.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Struct extends Zend_XmlRpc_Value_Collection
{
    /**
     * Set the value of an struct native type
     *
     * @param array $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_STRUCT;
        parent::__construct($value);
    }


    /**
     * Return the XML code that represent struct native MXL-RPC value
     *
     * @return string
     */
    public function saveXML()
    {
        if (!$this->_as_xml) {   // The XML code was not calculated yet
            $dom    = new DOMDocument('1.0');
            $value  = $dom->appendChild($dom->createElement('value'));
            $struct = $value->appendChild($dom->createElement('struct'));

            if (is_array($this->_value)) {
                foreach ($this->_value as $name => $val) {
                    /* @var $val Zend_XmlRpc_Value */
                    $member = $struct->appendChild($dom->createElement('member'));
                    $member->appendChild($dom->createElement('name', $name));
                    $member->appendChild($dom->importNode($val->getAsDOM(), 1));
                }
            }

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[����uuXmlRpc/Value/Integer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Integer.php 9095 2008-03-30 18:52:31Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Integer extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of an integer native type
     *
     * @param int $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_INTEGER;
        $this->_value = (int)$value;    // Make sure this value is integer
    }

    /**
     * Return the value of this object, convert the XML-RPC native integer value into a PHP integer
     *
     * @return int
     */
    public function getValue()
    {
        return $this->_value;
    }

}

PKpG[�
(��XmlRpc/Value/Double.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Double.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Scalar
 */
require_once 'Zend/XmlRpc/Value/Scalar.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Double extends Zend_XmlRpc_Value_Scalar
{

    /**
     * Set the value of a double native type
     *
     * @param float $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_DOUBLE;
        $this->_value = sprintf('%f',(float)$value);    // Make sure this value is float (double) and without the scientific notation
    }

    /**
     * Return the value of this object, convert the XML-RPC native double value into a PHP float
     *
     * @return float
     */
    public function getValue()
    {
        return (float)$this->_value;
    }

}

PKpG[-&:��XmlRpc/Value/Array.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Array.php 9096 2008-03-30 19:04:05Z thomas $
 */


/**
 * Zend_XmlRpc_Value_Collection
 */
require_once 'Zend/XmlRpc/Value/Collection.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Value_Array extends Zend_XmlRpc_Value_Collection
{
    /**
     * Set the value of an array native type
     *
     * @param array $value
     */
    public function __construct($value)
    {
        $this->_type = self::XMLRPC_TYPE_ARRAY;
        parent::__construct($value);
    }


    /**
     * Return the XML code that represent an array native MXL-RPC value
     *
     * @return string
     */
    public function saveXML()
    {
        if (!$this->_as_xml) {   // The XML code was not calculated yet
            $dom   = new DOMDocument('1.0');
            $value = $dom->appendChild($dom->createElement('value'));
            $array = $value->appendChild($dom->createElement('array'));
            $data  = $array->appendChild($dom->createElement('data'));

            if (is_array($this->_value)) {
                foreach ($this->_value as $val) {
                    /* @var $val Zend_XmlRpc_Value */
                    $data->appendChild($dom->importNode($val->getAsDOM(), true));
                }
            }

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[�i���XmlRpc/Value/Scalar.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Scalar.php 9095 2008-03-30 18:52:31Z thomas $
 */


/**
 * Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_XmlRpc_Value_Scalar extends Zend_XmlRpc_Value
{

    /**
     * Return the XML code that represent a scalar native MXL-RPC value
     *
     * @return string
     */
    public function saveXML()
    {
        if (!$this->_as_xml) {   // The XML code was not calculated yet
            $dom   = new DOMDocument('1.0');
            $value = $dom->appendChild($dom->createElement('value'));
            $type  = $value->appendChild($dom->createElement($this->_type));
            $type->appendChild($dom->createTextNode($this->getValue()));

            $this->_as_dom = $value;
            $this->_as_xml = $this->_stripXmlDeclaration($dom);
        }

        return $this->_as_xml;
    }
}

PKpG[�9�  XmlRpc/Response.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';

/**
 * Zend_XmlRpc_Fault
 */
require_once 'Zend/XmlRpc/Fault.php';

/**
 * XmlRpc Response
 *
 * Container for accessing an XMLRPC return value and creating the XML response.
 *
 * @category Zend
 * @package  Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Response.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_XmlRpc_Response
{
    /**
     * Return value
     * @var mixed
     */
    protected $_return;

    /**
     * Return type
     * @var string
     */
    protected $_type;

    /**
     * Response character encoding
     * @var string
     */
    protected $_encoding = 'UTF-8';

    /**
     * Fault, if response is a fault response
     * @var null|Zend_XmlRpc_Fault
     */
    protected $_fault = null;

    /**
     * Constructor
     *
     * Can optionally pass in the return value and type hinting; otherwise, the
     * return value can be set via {@link setReturnValue()}.
     *
     * @param mixed $return
     * @param string $type
     * @return void
     */
    public function __construct($return = null, $type = null)
    {
        $this->setReturnValue($return, $type);
    }

    /**
     * Set encoding to use in response
     *
     * @param string $encoding
     * @return Zend_XmlRpc_Response
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Retrieve current response encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Set the return value
     *
     * Sets the return value, with optional type hinting if provided.
     *
     * @param mixed $value
     * @param string $type
     * @return void
     */
    public function setReturnValue($value, $type = null)
    {
        $this->_return = $value;
        $this->_type = (string) $type;
    }

    /**
     * Retrieve the return value
     *
     * @return mixed
     */
    public function getReturnValue()
    {
        return $this->_return;
    }

    /**
     * Retrieve the XMLRPC value for the return value
     *
     * @return Zend_XmlRpc_Value
     */
    protected function _getXmlRpcReturn()
    {
        return Zend_XmlRpc_Value::getXmlRpcValue($this->_return);
    }

    /**
     * Is the response a fault response?
     *
     * @return boolean
     */
    public function isFault()
    {
        return $this->_fault instanceof Zend_XmlRpc_Fault;
    }

    /**
     * Returns the fault, if any.
     *
     * @return null|Zend_XmlRpc_Fault
     */
    public function getFault()
    {
        return $this->_fault;
    }

    /**
     * Load a response from an XML response
     *
     * Attempts to load a response from an XMLRPC response, autodetecting if it
     * is a fault response.
     *
     * @param string $response
     * @return boolean True if a valid XMLRPC response, false if a fault
     * response or invalid input
     */
    public function loadXml($response)
    {
        if (!is_string($response)) {
            $this->_fault = new Zend_XmlRpc_Fault(650);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        try {
            $xml = @new SimpleXMLElement($response);
        } catch (Exception $e) {
            // Not valid XML
            $this->_fault = new Zend_XmlRpc_Fault(651);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        if (!empty($xml->fault)) {
            // fault response
            $this->_fault = new Zend_XmlRpc_Fault();
            $this->_fault->setEncoding($this->getEncoding());
            $this->_fault->loadXml($response);
            return false;
        }

        if (empty($xml->params)) {
            // Invalid response
            $this->_fault = new Zend_XmlRpc_Fault(652);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        try {
            if (!isset($xml->params) || !isset($xml->params->param) || !isset($xml->params->param->value)) {
                throw new Zend_XmlRpc_Value_Exception('Missing XML-RPC value in XML');
            }
            $valueXml = $xml->params->param->value->asXML();
            $valueXml = preg_replace('/<\?xml version=.*?\?>/i', '', $valueXml);
            $value = Zend_XmlRpc_Value::getXmlRpcValue(trim($valueXml), Zend_XmlRpc_Value::XML_STRING);
        } catch (Zend_XmlRpc_Value_Exception $e) {
            $this->_fault = new Zend_XmlRpc_Fault(653);
            $this->_fault->setEncoding($this->getEncoding());
            return false;
        }

        $this->setReturnValue($value->getValue());
        return true;
    }

    /**
     * Return response as XML
     *
     * @return string
     */
    public function saveXML()
    {
        $value = $this->_getXmlRpcReturn();
        $valueDOM = new DOMDocument('1.0', $this->getEncoding());
        $valueDOM->loadXML($value->saveXML());

        $dom      = new DOMDocument('1.0', $this->getEncoding());
        $response = $dom->appendChild($dom->createElement('methodResponse'));
        $params   = $response->appendChild($dom->createElement('params'));
        $param    = $params->appendChild($dom->createElement('param'));

        $param->appendChild($dom->importNode($valueDOM->documentElement, true));

        return $dom->saveXML();
    }

    /**
     * Return XML response
     *
     * @return string
     */
    public function __toString()
    {
        return $this->saveXML();
    }
}
PKpG[l��UccXmlRpc/Fault.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';

/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Exception.php';

/**
 * XMLRPC Faults
 *
 * Container for XMLRPC faults, containing both a code and a message;
 * additionally, has methods for determining if an XML response is an XMLRPC
 * fault, as well as generating the XML for an XMLRPC fault response.
 *
 * To allow method chaining, you may only use the {@link getInstance()} factory
 * to instantiate a Zend_XmlRpc_Server_Fault.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Fault
{
    /**
     * Fault code
     * @var int
     */
    protected $_code;

    /**
     * Fault character encoding
     * @var string
     */
    protected $_encoding = 'UTF-8';

    /**
     * Fault message
     * @var string
     */
    protected $_message;

    /**
     * Internal fault codes => messages
     * @var array
     */
    protected $_internal = array(
        404 => 'Unknown Error',

        // 610 - 619 reflection errors
        610 => 'Invalid method class',
        611 => 'Unable to attach function or callback; not callable',
        612 => 'Unable to load array; not an array',
        613 => 'One or more method records are corrupt or otherwise unusable',

        // 620 - 629 dispatch errors
        620 => 'Method does not exist',
        621 => 'Error instantiating class to invoke method',
        622 => 'Method missing implementation',
        623 => 'Calling parameters do not match signature',

        // 630 - 639 request errors
        630 => 'Unable to read request',
        631 => 'Failed to parse request',
        632 => 'Invalid request, no method passed; request must contain a \'methodName\' tag',
        633 => 'Param must contain a value',
        634 => 'Invalid method name',
        635 => 'Invalid XML provided to request',
        636 => 'Error creating xmlrpc value',

        // 640 - 649 system.* errors
        640 => 'Method does not exist',

        // 650 - 659 response errors
        650 => 'Invalid XML provided for response',
        651 => 'Failed to parse response',
        652 => 'Invalid response',
        653 => 'Invalid XMLRPC value in response',
    );

    /**
     * Constructor
     *
     * @return Zend_XmlRpc_Fault
     */
    public function __construct($code = 404, $message = '')
    {
        $this->setCode($code);
        $code = $this->getCode();

        if (empty($message) && isset($this->_internal[$code])) {
            $message = $this->_internal[$code];
        } elseif (empty($message)) {
            $message = 'Unknown error';
        }
        $this->setMessage($message);
    }

    /**
     * Set the fault code
     *
     * @param int $code
     * @return Zend_XmlRpc_Fault
     */
    public function setCode($code)
    {
        $this->_code = (int) $code;
        return $this;
    }

    /**
     * Return fault code
     *
     * @return int
     */
    public function getCode()
    {
        return $this->_code;
    }

    /**
     * Retrieve fault message
     *
     * @param string
     * @return Zend_XmlRpc_Fault
     */
    public function setMessage($message)
    {
        $this->_message = (string) $message;
        return $this;
    }

    /**
     * Retrieve fault message
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->_message;
    }

    /**
     * Set encoding to use in fault response
     *
     * @param string $encoding
     * @return Zend_XmlRpc_Fault
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Retrieve current fault encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Load an XMLRPC fault from XML
     *
     * @param string $fault
     * @return boolean Returns true if successfully loaded fault response, false
     * if response was not a fault response
     * @throws Zend_XmlRpc_Exception if no or faulty XML provided, or if fault
     * response does not contain either code or message
     */
    public function loadXml($fault)
    {
        if (!is_string($fault)) {
            throw new Zend_XmlRpc_Exception('Invalid XML provided to fault');
        }

        try {
            $xml = @new SimpleXMLElement($fault);
        } catch (Exception $e) {
            // Not valid XML
            throw new Zend_XmlRpc_Exception('Failed to parse XML fault: ' .  $e->getMessage(), 500);
        }

        // Check for fault
        if (!$xml->fault) {
            // Not a fault
            return false;
        }

        if (!$xml->fault->value->struct) {
            // not a proper fault
            throw new Zend_XmlRpc_Exception('Invalid fault structure', 500);
        }

        $structXml = $xml->fault->value->asXML();
        $structXml = preg_replace('/<\?xml version=.*?\?>/i', '', $structXml);
        $struct    = Zend_XmlRpc_Value::getXmlRpcValue(trim($structXml), Zend_XmlRpc_Value::XML_STRING);
        $struct    = $struct->getValue();

        if (isset($struct['faultCode'])) {
            $code = $struct['faultCode'];
        }
        if (isset($struct['faultString'])) {
            $message = $struct['faultString'];
        }

        if (empty($code) && empty($message)) {
            throw new Zend_XmlRpc_Exception('Fault code and string required');
        }

        if (empty($code)) {
            $code = '404';
        }

        if (empty($message)) {
            if (isset($this->_internal[$code])) {
                $message = $this->_internal[$code];
            } else {
                $message = 'Unknown Error';
            }
        }

        $this->setCode($code);
        $this->setMessage($message);

        return true;
    }

    /**
     * Determine if an XML response is an XMLRPC fault
     *
     * @param string $xml
     * @return boolean
     */
    public static function isFault($xml)
    {
        $fault = new self();
        try {
            $isFault = $fault->loadXml($xml);
        } catch (Zend_XmlRpc_Exception $e) {
            $isFault = false;
        }

        return $isFault;
    }

    /**
     * Serialize fault to XML
     *
     * @return string
     */
    public function saveXML()
    {
        // Create fault value
        $faultStruct = array(
            'faultCode'   => $this->getCode(),
            'faultString' => $this->getMessage()
        );
        $value = Zend_XmlRpc_Value::getXmlRpcValue($faultStruct);
        $valueDOM = new DOMDocument('1.0', $this->getEncoding());
        $valueDOM->loadXML($value->saveXML());

        // Build response XML
        $dom  = new DOMDocument('1.0', $this->getEncoding());
        $r    = $dom->appendChild($dom->createElement('methodResponse'));
        $f    = $r->appendChild($dom->createElement('fault'));
        $f->appendChild($dom->importNode($valueDOM->documentElement, 1));

        return $dom->saveXML();
    }

    /**
     * Return XML fault response
     *
     * @return string
     */
    public function __toString()
    {
        return $this->saveXML();
    }
}
PKpG[��o	o	XmlRpc/Client/ServerProxy.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * The namespace decorator enables object chaining to permit
 * calling XML-RPC namespaced functions like "foo.bar.baz()"
 * as "$remote->foo->bar->baz()".
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_ServerProxy
{
    /**
     * @var Zend_XmlRpc_Client
     */
    private $_client = null;

    /**
     * @var string
     */
    private $_namespace = '';


    /**
     * @var array of Zend_XmlRpc_Client_ServerProxy
     */
    private $_cache = array();


    /**
     * Class constructor
     *
     * @param string             $namespace
     * @param Zend_XmlRpc_Client $client
     */
    public function __construct($client, $namespace = '')
    {
        $this->_namespace = $namespace;
        $this->_client    = $client;
    }


    /**
     * Get the next successive namespace
     *
     * @param string $name
     * @return Zend_XmlRpc_Client_ServerProxy
     */
    public function __get($namespace)
    {
        $namespace = ltrim("$this->_namespace.$namespace", '.');
        if (!isset($this->_cache[$namespace])) {
            $this->_cache[$namespace] = new $this($this->_client, $namespace);
        }
        return $this->_cache[$namespace];
    }


    /**
     * Call a method in this namespace.
     *
     * @param  string $methodN
     * @param  array $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        $method = ltrim("$this->_namespace.$method", '.');
        return $this->_client->call($method, $args);
    }
}
PKpG[n���� XmlRpc/Client/FaultException.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_XmlRpc_Client_Exception */
require_once 'Zend/XmlRpc/Client/Exception.php';


/**
 * Thrown by Zend_XmlRpc_Client when an XML-RPC fault response is returned.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_FaultException extends Zend_XmlRpc_Client_Exception
{}
PKpG[��k�{{XmlRpc/Client/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Exception.php';


/**
 * Base class for all Zend_XmlRpc_Client_* exceptions
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_Exception extends Zend_XmlRpc_Exception
{}
PKpG[�!K6��%XmlRpc/Client/IntrospectException.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_XmlRpc_Client_Exception
 */
require_once 'Zend/XmlRpc/Client/Exception.php';


/**
 * Thrown by Zend_XmlRpc_Client_Introspection when any error occurs.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_IntrospectException extends Zend_XmlRpc_Client_Exception
{}
PKpG[Њ)��XmlRpc/Client/HttpException.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Client/Exception.php';


/**
 * Thrown by Zend_XmlRpc_Client when an HTTP error occurs during an
 * XML-RPC method call.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_HttpException extends Zend_XmlRpc_Client_Exception
{}
PKpG[����%XmlRpc/Client/ServerIntrospection.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_XmlRpc_Client_IntrospectException */
require_once 'Zend/XmlRpc/Client/IntrospectException.php';


/**
 * Wraps the XML-RPC system.* introspection methods
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client_ServerIntrospection
{
    /**
     * @var Zend_XmlRpc_Client_ServerProxy
     */
    private $_system = null;


    /**
     * @param Zend_XmlRpc_Client $client
     */
    public function __construct(Zend_XmlRpc_Client $client)
    {
        $this->_system = $client->getProxy('system');
    }

    /**
     * Returns the signature for each method on the server,
     * autodetecting whether system.multicall() is supported and
     * using it if so.
     *
     * @return array
     */
    public function getSignatureForEachMethod()
    {
        $methods = $this->listMethods();

        try {
            $signatures = $this->getSignatureForEachMethodByMulticall($methods);
        } catch (Zend_XmlRpc_Client_FaultException $e) {
            // degrade to looping
        }

        if (empty($signatures)) {
            $signatures = $this->getSignatureForEachMethodByLooping($methods);
        }

        return $signatures;
    }

    /**
     * Attempt to get the method signatures in one request via system.multicall().
     * This is a boxcar feature of XML-RPC and is found on fewer servers.  However,
     * can significantly improve performance if present.
     *
     * @param  array $methods
     * @return array array(array(return, param, param, param...))
     */
    public function getSignatureForEachMethodByMulticall($methods = null)
    {
        if ($methods === null) {
            $methods = $this->listMethods();
        }

        $multicallParams = array();
        foreach ($methods as $method) {
            $multicallParams[] = array('methodName' => 'system.methodSignature',
                                       'params'     => array($method));
        }

        $serverSignatures = $this->_system->multicall($multicallParams);

        if (! is_array($serverSignatures)) {
            $type = gettype($serverSignatures);
            $error = "Multicall return is malformed.  Expected array, got $type";
            throw new Zend_XmlRpc_Client_IntrospectException($error);
        }

        if (count($serverSignatures) != count($methods)) {
            $error = 'Bad number of signatures received from multicall';
            throw new Zend_XmlRpc_Client_IntrospectException($error);
        }

        // Create a new signatures array with the methods name as keys and the signature as value
        $signatures = array();
        foreach ($serverSignatures as $i => $signature) {
            $signatures[$methods[$i]] = $signature;
        }

        return $signatures;
    }

    /**
     * Get the method signatures for every method by
     * successively calling system.methodSignature
     *
     * @param array $methods
     * @return array
     */
    public function getSignatureForEachMethodByLooping($methods = null)
    {
        if ($methods === null) {
            $methods = $this->listMethods();
        }

        $signatures = array();
        foreach ($methods as $method) {
            $signatures[$method] = $this->getMethodSignature($method);
        }

        return $signatures;
    }

    /**
     * Call system.methodSignature() for the given method
     *
     * @param  array  $method
     * @return array  array(array(return, param, param, param...))
     */
    public function getMethodSignature($method)
    {
        $signature = $this->_system->methodSignature($method);
        return $signature;
    }

    /**
     * Call system.listMethods()
     *
     * @param  array  $method
     * @return array  array(method, method, method...)
     */
    public function listMethods()
    {
        return $this->_system->listMethods();
    }

}
PKpG[@L'#'#'XmlRpc/Client.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * For handling the HTTP connection to the XML-RPC service
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * Enables object chaining for calling namespaced XML-RPC methods.
 * @see Zend_XmlRpc_Client_ServerProxy
 */
require_once 'Zend/XmlRpc/Client/ServerProxy.php';

/**
 * Introspects remote servers using the XML-RPC de facto system.* methods
 * @see Zend_XmlRpc_Client_ServerIntrospection
 */
require_once 'Zend/XmlRpc/Client/ServerIntrospection.php';

/**
 * Represent a native XML-RPC value, used both in sending parameters
 * to methods and as the parameters retrieve from method calls
 * @see Zend_XmlRpc_Value
 */
require_once 'Zend/XmlRpc/Value.php';

/**
 * XML-RPC Request
 * @see Zend_XmlRpc_Request
 */
require_once 'Zend/XmlRpc/Request.php';

/**
 * XML-RPC Response
 * @see Zend_XmlRpc_Response
 */
require_once 'Zend/XmlRpc/Response.php';

/**
 * XML-RPC Fault
 * @see Zend_XmlRpc_Fault
 */
require_once 'Zend/XmlRpc/Fault.php';


/**
 * An XML-RPC client implementation
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Client
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Client
{
    /**
     * Full address of the XML-RPC service
     * @var string
     * @example http://time.xmlrpc.com/RPC2
     */
    protected $_serverAddress;

    /**
     * HTTP Client to use for requests
     * @var Zend_Http_Client
     */
    protected $_httpClient = null;

    /**
     * Introspection object
     * @var Zend_Http_Client_Introspector
     */
    protected $_introspector = null;

    /**
     * Request of the last method call
     * @var Zend_XmlRpc_Request
     */
    protected $_lastRequest = null;

    /**
     * Response received from the last method call
     * @var Zend_XmlRpc_Response
     */
    protected $_lastResponse = null;

    /**
     * Proxy object for more convenient method calls
     * @var array of Zend_XmlRpc_Client_ServerProxy
     */
    protected $_proxyCache = array();

    /**
     * Flag for skipping system lookup
     * @var bool
     */
    protected $_skipSystemLookup = false;

    /**
     * Create a new XML-RPC client to a remote server
     *
     * @param  string $server      Full address of the XML-RPC service
     *                             (e.g. http://time.xmlrpc.com/RPC2)
     * @param  Zend_Http_Client $httpClient HTTP Client to use for requests
     * @return void
     */
    public function __construct($server, Zend_Http_Client $httpClient = null)
    {
        if ($httpClient === null) {
            $this->_httpClient = new Zend_Http_Client();
        } else {
            $this->_httpClient = $httpClient;
        }

        $this->_introspector  = new Zend_XmlRpc_Client_ServerIntrospection($this);
        $this->_serverAddress = $server;
    }


    /**
     * Sets the HTTP client object to use for connecting the XML-RPC server.
     *
     * @param  Zend_Http_Client $httpClient
     * @return Zend_Http_Client
     */
    public function setHttpClient(Zend_Http_Client $httpClient)
    {
        return $this->_httpClient = $httpClient;
    }


    /**
     * Gets the HTTP client object.
     *
     * @return Zend_Http_Client
     */
    public function getHttpClient()
    {
        return $this->_httpClient;
    }


    /**
     * Sets the object used to introspect remote servers
     *
     * @param  Zend_XmlRpc_Client_ServerIntrospection
     * @return Zend_XmlRpc_Client_ServerIntrospection
     */
    public function setIntrospector(Zend_XmlRpc_Client_ServerIntrospection $introspector)
    {
        return $this->_introspector = $introspector;
    }


    /**
     * Gets the introspection object.
     *
     * @return Zend_XmlRpc_Client_ServerIntrospection
     */
    public function getIntrospector()
    {
        return $this->_introspector;
    }


   /**
     * The request of the last method call
     *
     * @return Zend_XmlRpc_Request
     */
    public function getLastRequest()
    {
        return $this->_lastRequest;
    }


    /**
     * The response received from the last method call
     *
     * @return Zend_XmlRpc_Response
     */
    public function getLastResponse()
    {
        return $this->_lastResponse;
    }


    /**
     * Returns a proxy object for more convenient method calls
     *
     * @param $namespace  Namespace to proxy or empty string for none
     * @return Zend_XmlRpc_Client_ServerProxy
     */
    public function getProxy($namespace = '')
    {
        if (empty($this->_proxyCache[$namespace])) {
            $proxy = new Zend_XmlRpc_Client_ServerProxy($this, $namespace);
            $this->_proxyCache[$namespace] = $proxy;
        }
        return $this->_proxyCache[$namespace];
    }

    /**
     * Set skip system lookup flag
     *
     * @param  bool $flag
     * @return Zend_XmlRpc_Client
     */
    public function setSkipSystemLookup($flag = true)
    {
        $this->_skipSystemLookup = (bool) $flag;
        return $this;
    }

    /**
     * Skip system lookup when determining if parameter should be array or struct?
     *
     * @return bool
     */
    public function skipSystemLookup()
    {
        return $this->_skipSystemLookup;
    }

    /**
     * Perform an XML-RPC request and return a response.
     *
     * @param Zend_XmlRpc_Request $request
     * @param null|Zend_XmlRpc_Response $response
     * @return void
     * @throws Zend_XmlRpc_Client_HttpException
     */
    public function doRequest($request, $response = null)
    {
        $this->_lastRequest = $request;

        iconv_set_encoding('input_encoding', 'UTF-8');
        iconv_set_encoding('output_encoding', 'UTF-8');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        $http = $this->getHttpClient();
        if($http->getUri() === null) {
            $http->setUri($this->_serverAddress);
        }

        $http->setHeaders(array(
            'Content-Type: text/xml; charset=utf-8',
            'User-Agent: Zend_XmlRpc_Client',
            'Accept: text/xml',
        ));

        $xml = $this->_lastRequest->__toString();
        $http->setRawData($xml);
        $httpResponse = $http->request(Zend_Http_Client::POST);

        if (! $httpResponse->isSuccessful()) {
            /**
             * Exception thrown when an HTTP error occurs
             * @see Zend_XmlRpc_Client_HttpException
             */
            require_once 'Zend/XmlRpc/Client/HttpException.php';
            throw new Zend_XmlRpc_Client_HttpException(
                                    $httpResponse->getMessage(),
                                    $httpResponse->getStatus());
        }

        if ($response === null) {
            $response = new Zend_XmlRpc_Response();
        }
        $this->_lastResponse = $response;
        $this->_lastResponse->loadXml($httpResponse->getBody());
    }

    /**
     * Send an XML-RPC request to the service (for a specific method)
     *
     * @param string $method Name of the method we want to call
     * @param array $params Array of parameters for the method
     * @throws Zend_XmlRpc_Client_FaultException
     */
    public function call($method, $params=array())
    {
        if (!$this->skipSystemLookup() && ('system.' != substr($method, 0, 7))) {
            // Ensure empty array/struct params are cast correctly
            // If system.* methods are not available, bypass. (ZF-2978)
            $success = true;
            try {
                $signatures = $this->getIntrospector()->getMethodSignature($method);
            } catch (Zend_XmlRpc_Exception $e) {
                $success = false;
            }
            if ($success) {
                foreach ($params as $key => $param) {
                    if (is_array($param) && empty($param)) {
                        $type = 'array';
                        foreach ($signatures as $signature) {
                            if (!is_array($signature)) {
                                continue;
                            }
                            if (array_key_exists($key + 1, $signature)) {
                                $type = $signature[$key + 1];
                                $type = (in_array($type, array('array', 'struct'))) ? $type : 'array';
                                break;
                            }
                        }
                        $params[$key] = array(
                            'type'  => $type,
                            'value' => $param
                        );
                    }
                }
            }
        }

        $request = new Zend_XmlRpc_Request($method, $params);

        $this->doRequest($request);

        if ($this->_lastResponse->isFault()) {
            $fault = $this->_lastResponse->getFault();
            /**
             * Exception thrown when an XML-RPC fault is returned
             * @see Zend_XmlRpc_Client_FaultException
             */
            require_once 'Zend/XmlRpc/Client/FaultException.php';
            throw new Zend_XmlRpc_Client_FaultException($fault->getMessage(),
                                                        $fault->getCode());
        }

        return $this->_lastResponse->getReturnValue();
    }
}
PKpG[iJ���XmlRpc/Server/Fault.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Fault.php 9102 2008-03-30 20:27:03Z thomas $
 */

/**
 * Zend_XmlRpc_Fault
 */
require_once 'Zend/XmlRpc/Fault.php';


/**
 * XMLRPC Server Faults
 *
 * Encapsulates an exception for use as an XMLRPC fault response. Valid
 * exception classes that may be used for generating the fault code and fault
 * string can be attached using {@link attachFaultException()}; all others use a
 * generic '404 Unknown error' response.
 *
 * You may also attach fault observers, which would allow you to monitor
 * particular fault cases; this is done via {@link attachObserver()}. Observers
 * need only implement a static 'observe' method.
 *
 * To allow method chaining, you may use the {@link getInstance()} factory
 * to instantiate a Zend_XmlRpc_Server_Fault.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Server_Fault extends Zend_XmlRpc_Fault
{
    /**
     * @var Exception
     */
    protected $_exception;

    /**
     * @var array Array of exception classes that may define xmlrpc faults
     */
    protected static $_faultExceptionClasses = array('Zend_XmlRpc_Server_Exception' => true);

    /**
     * @var array Array of fault observers
     */
    protected static $_observers = array();

    /**
     * Constructor
     *
     * @param Exception $e
     * @return Zend_XmlRpc_Server_Fault
     */
    public function __construct(Exception $e)
    {
        $this->_exception = $e;
        $code             = 404;
        $message          = 'Unknown error';
        $exceptionClass   = get_class($e);

        foreach (array_keys(self::$_faultExceptionClasses) as $class) {
            if ($e instanceof $class) {
                $code    = $e->getCode();
                $message = $e->getMessage();
                break;
            }
        }

        parent::__construct($code, $message);

        // Notify exception observers, if present
        if (!empty(self::$_observers)) {
            foreach (array_keys(self::$_observers) as $observer) {
                call_user_func(array($observer, 'observe'), $this);
            }
        }
    }

    /**
     * Return Zend_XmlRpc_Server_Fault instance
     *
     * @param Exception $e
     * @return Zend_XmlRpc_Server_Fault
     */
    public static function getInstance(Exception $e)
    {
        return new self($e);
    }

    /**
     * Attach valid exceptions that can be used to define xmlrpc faults
     *
     * @param string|array $classes Class name or array of class names
     * @return void
     */
    public static function attachFaultException($classes)
    {
        if (!is_array($classes)) {
            $classes = (array) $classes;
        }

        foreach ($classes as $class) {
            if (is_string($class) && class_exists($class)) {
                self::$_faultExceptionClasses[$class] = true;
            }
        }
    }

    /**
     * Detach fault exception classes
     *
     * @param string|array $classes Class name or array of class names
     * @return void
     */
    public static function detachFaultException($classes)
    {
        if (!is_array($classes)) {
            $classes = (array) $classes;
        }

        foreach ($classes as $class) {
            if (is_string($class) && isset(self::$_faultExceptionClasses[$class])) {
                unset(self::$_faultExceptionClasses[$class]);
            }
        }
    }

    /**
     * Attach an observer class
     *
     * Allows observation of xmlrpc server faults, thus allowing logging or mail
     * notification of fault responses on the xmlrpc server.
     *
     * Expects a valid class name; that class must have a public static method
     * 'observe' that accepts an exception as its sole argument.
     *
     * @param string $class
     * @return boolean
     */
    public static function attachObserver($class)
    {
        if (!is_string($class)
            || !class_exists($class)
            || !is_callable(array($class, 'observe')))
        {
            return false;
        }

        if (!isset(self::$_observers[$class])) {
            self::$_observers[$class] = true;
        }

        return true;
    }

    /**
     * Detach an observer
     *
     * @param string $class
     * @return boolean
     */
    public static function detachObserver($class)
    {
        if (!isset(self::$_observers[$class])) {
            return false;
        }

        unset(self::$_observers[$class]);
        return true;
    }

    /**
     * Retrieve the exception
     *
     * @access public
     * @return Exception
     */
    public function getException()
    {
        return $this->_exception;
    }
}
PKpG[
j���XmlRpc/Server/Cache.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Cache.php 12195 2008-10-30 13:34:35Z matthew $
 */

/** Zend_Server_Cache */
require_once 'Zend/Server/Cache.php';

/**
 * Zend_XmlRpc_Server_Cache: cache Zend_XmlRpc_Server server definition
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Server_Cache extends Zend_Server_Cache
{
    /**
     * @var array Skip system methods when caching XML-RPC server
     */
    protected static $_skipMethods = array(
        'system.listMethods',
        'system.methodHelp',
        'system.methodSignature',
        'system.multicall',
    );
}
PKpG[�p�iwwXmlRpc/Server/System.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * XML-RPC system.* methods
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Server_System
{
    /**
     * Constructor
     * 
     * @param  Zend_XmlRpc_Server $server 
     * @return void
     */
    public function __construct(Zend_XmlRpc_Server $server)
    {
        $this->_server = $server;
    }

    /**
     * List all available XMLRPC methods
     *
     * Returns an array of methods.
     *
     * @return array
     */
    public function listMethods()
    {
        $table = $this->_server->getDispatchTable()->getMethods();
        return array_keys($table);
    }

    /**
     * Display help message for an XMLRPC method
     *
     * @param string $method
     * @return string
     */
    public function methodHelp($method)
    {
        $table = $this->_server->getDispatchTable();
        if (!$table->hasMethod($method)) {
            throw new Zend_Server_Exception('Method "' . $method . '"does not exist', 640);
        }

        return $table->getMethod($method)->getMethodHelp();
    }

    /**
     * Return a method signature
     *
     * @param string $method
     * @return array
     */
    public function methodSignature($method)
    {
        $table = $this->_server->getDispatchTable();
        if (!$table->hasMethod($method)) {
            throw new Zend_Server_Exception('Method "' . $method . '"does not exist', 640);
        }
        $method = $table->getMethod($method)->toArray();
        return $method['prototypes'];
    }

    /**
     * Multicall - boxcar feature of XML-RPC for calling multiple methods
     * in a single request.
     *
     * Expects a an array of structs representing method calls, each element
     * having the keys:
     * - methodName
     * - params
     *
     * Returns an array of responses, one for each method called, with the value
     * returned by the method. If an error occurs for a given method, returns a
     * struct with a fault response.
     *
     * @see http://www.xmlrpc.com/discuss/msgReader$1208
     * @param  array $methods
     * @return array
     */
    public function multicall($methods)
    {
        $responses = array();
        foreach ($methods as $method) {
            $fault = false;
            if (!is_array($method)) {
                $fault = $this->_server->fault('system.multicall expects each method to be a struct', 601);
            } elseif (!isset($method['methodName'])) {
                $fault = $this->_server->fault('Missing methodName: ' . var_export($methods, 1), 602);
            } elseif (!isset($method['params'])) {
                $fault = $this->_server->fault('Missing params', 603);
            } elseif (!is_array($method['params'])) {
                $fault = $this->_server->fault('Params must be an array', 604);
            } else {
                if ('system.multicall' == $method['methodName']) {
                    // don't allow recursive calls to multicall
                    $fault = $this->_server->fault('Recursive system.multicall forbidden', 605);
                }
            }

            if (!$fault) {
                try {
                    $request = new Zend_XmlRpc_Request();
                    $request->setMethod($method['methodName']);
                    $request->setParams($method['params']);
                    $response = $this->_server->handle($request);
                    $responses[] = $response->getReturnValue();
                } catch (Exception $e) {
                    $fault = $this->_server->fault($e);
                }
            }

            if ($fault) {
                $responses[] = array(
                    'faultCode'   => $fault->getCode(),
                    'faultString' => $fault->getMessage()
                );
            }
        }

        return $responses;
    }
}
PKpG[����XmlRpc/Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9102 2008-03-30 20:27:03Z thomas $
 */


/**
 * Zend_XmlRpc_Exception
 */
require_once 'Zend/XmlRpc/Exception.php';


/**
 * Zend_XmlRpc_Server_Exception
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Server_Exception extends Zend_XmlRpc_Exception
{
}

PKpG[dq!���XmlRpc/Response/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Response
 */
require_once 'Zend/XmlRpc/Response.php';

/**
 * HTTP response
 *
 * @uses Zend_XmlRpc_Response
 * @category Zend
 * @package  Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Http.php 9343 2008-04-28 19:51:02Z matthew $
 */
class Zend_XmlRpc_Response_Http extends Zend_XmlRpc_Response
{
    /**
     * Override __toString() to send HTTP Content-Type header
     *
     * @return string
     */
    public function __toString()
    {
        if (!headers_sent()) {
            header('Content-Type: text/xml; charset=' . strtolower($this->getEncoding()));
        }

        return parent::__toString();
    }
}
PKpG[;
#��XmlRpc/Request/Stdin.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Request
 */
require_once 'Zend/XmlRpc/Request.php';

/**
 * XmlRpc Request object -- Request via STDIN
 *
 * Extends {@link Zend_XmlRpc_Request} to accept a request via STDIN. Request is
 * built at construction time using data from STDIN; if no data is available, the
 * request is declared a fault.
 *
 * @category Zend
 * @package  Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Stdin.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_XmlRpc_Request_Stdin extends Zend_XmlRpc_Request
{
    /**
     * Raw XML as received via request
     * @var string
     */
    protected $_xml;

    /**
     * Constructor
     *
     * Attempts to read from php://stdin to get raw POST request; if an error
     * occurs in doing so, or if the XML is invalid, the request is declared a
     * fault.
     *
     * @return void
     */
    public function __construct()
    {
        $fh = fopen('php://stdin', 'r');
        if (!$fh) {
            $this->_fault = new Zend_XmlRpc_Server_Exception(630);
            return;
        }

        $xml = '';
        while (!feof($fh)) {
            $xml .= fgets($fh);
        }
        fclose($fh);

        $this->_xml = $xml;

        $this->loadXml($xml);
    }

    /**
     * Retrieve the raw XML request
     *
     * @return string
     */
    public function getRawRequest()
    {
        return $this->_xml;
    }
}
PKpG[R9���XmlRpc/Request/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_XmlRpc_Request
 */
require_once 'Zend/XmlRpc/Request.php';

/**
 * XmlRpc Request object -- Request via HTTP
 *
 * Extends {@link Zend_XmlRpc_Request} to accept a request via HTTP. Request is
 * built at construction time using a raw POST; if no data is available, the
 * request is declared a fault.
 *
 * @category Zend
 * @package  Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Http.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_XmlRpc_Request_Http extends Zend_XmlRpc_Request
{
    /**
     * Array of headers
     * @var array
     */
    protected $_headers;

    /**
     * Raw XML as received via request
     * @var string
     */
    protected $_xml;

    /**
     * Constructor
     *
     * Attempts to read from php://input to get raw POST request; if an error
     * occurs in doing so, or if the XML is invalid, the request is declared a
     * fault.
     *
     * @return void
     */
    public function __construct()
    {
        $fh = fopen('php://input', 'r');
        if (!$fh) {
            $this->_fault = new Zend_XmlRpc_Server_Exception(630);
            return;
        }

        $xml = '';
        while (!feof($fh)) {
            $xml .= fgets($fh);
        }
        fclose($fh);

        $this->_xml = $xml;

        $this->loadXml($xml);
    }

    /**
     * Retrieve the raw XML request
     *
     * @return string
     */
    public function getRawRequest()
    {
        return $this->_xml;
    }

    /**
     * Get headers
     *
     * Gets all headers as key => value pairs and returns them.
     *
     * @return array
     */
    public function getHeaders()
    {
        if (null === $this->_headers) {
            $this->_headers = array();
            foreach ($_SERVER as $key => $value) {
                if ('HTTP_' == substr($key, 0, 5)) {
                    $header = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($key, 5)))));
                    $this->_headers[$header] = $value;
                }
            }
        }

        return $this->_headers;
    }

    /**
     * Retrieve the full HTTP request, including headers and XML
     *
     * @return string
     */
    public function getFullRequest()
    {
        $request = '';
        foreach ($this->getHeaders() as $key => $value) {
            $request .= $key . ': ' . $value . "\n";
        }

        $request .= $this->_xml;

        return $request;
    }
}
PKpG[3�29��XmlRpc/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_XmlRpc
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_XmlRpc_Exception extends Zend_Exception
{}

PKpG[�l>�c
c
Request/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Request_Interface
{
    /**
     * Overloading for accessing class property values
     *
     * @param string $key
     * @return mixed
     */
    public function __get($key);

    /**
     * Overloading for setting class property values
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function __set($key, $value);

    /**
     * Overloading to determine if a property is set
     *
     * @param string $key
     * @return boolean
     */
    public function __isset($key);

    /**
     * Alias for __get()
     *
     * @param string $key
     * @return mixed
     */
    public function get($key);

    /**
     * Alias for __set()
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function set($key, $value);

    /**
     * Alias for __isset()
     *
     * @param string $key
     * @return boolean
     */
    public function has($key);

    /**
     * Either alias for __get(), or provides ability to maintain separate
     * configuration registry for request object.
     *
     * @param string $key
     * @return mixed
     */
    public function getParam($key);

    /**
     * Either alias for __set(), or provides ability to maintain separate
     * configuration registry for request object.
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function setParam($key, $value);

    /**
     * Get all params handled by get/setParam()
     *
     * @return array
     */
    public function getParams();

    /**
     * Set all values handled by get/setParam()
     *
     * @param array $params
     * @return void
     */
    public function setParams(array $params);
}
PKpG[�@,��E�EForm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Validate_Interface */
require_once 'Zend/Validate/Interface.php';

/**
 * Zend_Form
 * 
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Form.php 12787 2008-11-23 14:17:44Z matthew $
 */
class Zend_Form implements Iterator, Countable, Zend_Validate_Interface
{
    /**#@+
     * Plugin loader type constants
     */
    const DECORATOR = 'DECORATOR';
    const ELEMENT = 'ELEMENT';
    /**#@-*/

    /**#@+
     * Method type constants
     */
    const METHOD_DELETE = 'delete';
    const METHOD_GET    = 'get';
    const METHOD_POST   = 'post';
    const METHOD_PUT    = 'put';
    /**#@-*/

    /**#@+
     * Encoding type constants
     */
    const ENCTYPE_URLENCODED = 'application/x-www-form-urlencoded';
    const ENCTYPE_MULTIPART  = 'multipart/form-data';
    /**#@-*/

    /**
     * Form metadata and attributes
     * @var array
     */
    protected $_attribs = array();

    /**
     * Decorators for rendering
     * @var array
     */
    protected $_decorators = array();

    /**
     * Default display group class
     * @var string
     */
    protected $_defaultDisplayGroupClass = 'Zend_Form_DisplayGroup';

    /**
     * Form description
     * @var string
     */
    protected $_description;

    /**
     * Should we disable loading the default decorators?
     * @var bool
     */
    protected $_disableLoadDefaultDecorators = false;

    /**
     * Display group prefix paths
     * @var array
     */
    protected $_displayGroupPrefixPaths = array();

    /**
     * Groups of elements grouped for display purposes
     * @var array
     */
    protected $_displayGroups = array();

    /**
     * Prefix paths to use when creating elements
     * @var array
     */
    protected $_elementPrefixPaths = array();

    /**
     * Form elements
     * @var array
     */
    protected $_elements = array();

    /**
     * Array to which elements belong (if any)
     * @var string
     */
    protected $_elementsBelongTo;

    /**
     * Custom form-level error messages
     * @var array
     */
    protected $_errorMessages = array();

    /**
     * Are there errors in the form?
     * @var bool
     */
    protected $_errorsExist = false;

    /**
     * Form order
     * @var int|null
     */
    protected $_formOrder;

    /**
     * Whether or not form elements are members of an array
     * @var bool
     */
    protected $_isArray = false;

    /**
     * Form legend
     * @var string
     */
    protected $_legend;

    /**
     * Plugin loaders
     * @var array
     */
    protected $_loaders = array();

    /**
     * Allowed form methods
     * @var array
     */
    protected $_methods = array('delete', 'get', 'post', 'put');

    /**
     * Order in which to display and iterate elements
     * @var array
     */
    protected $_order = array();

    /**
     * Whether internal order has been updated or not
     * @var bool
     */
    protected $_orderUpdated = false;

    /**
     * Sub form prefix paths
     * @var array
     */
    protected $_subFormPrefixPaths = array();

    /**
     * Sub forms
     * @var array
     */
    protected $_subForms = array();

    /**
     * @var Zend_Translate
     */
    protected $_translator;

    /**
     * Global default translation adapter
     * @var Zend_Translate
     */
    protected static $_translatorDefault;

    /**
     * is the translator disabled?
     * @var bool
     */
    protected $_translatorDisabled = false;

    /**
     * @var Zend_View_Interface
     */
    protected $_view;

    /**
     * Constructor
     *
     * Registers form view helper as decorator
     * 
     * @param mixed $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        } elseif ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }

        // Extensions...
        $this->init();

        $this->loadDefaultDecorators();
    }

    /**
     * Clone form object and all children
     * 
     * @return void
     */
    public function __clone()
    {
        $elements = array();
        foreach ($this->getElements() as $name => $element) {
            $elements[] = clone $element;
        }
        $this->setElements($elements);

        $subForms = array();
        foreach ($this->getSubForms() as $name => $subForm) {
            $subForms[$name] = clone $subForm;
        }
        $this->setSubForms($subForms);

        $displayGroups = array();
        foreach ($this->_displayGroups as $group)  {
            $clone    = clone $group;
            $elements = array();
            foreach ($clone->getElements() as $name => $e) {
                $elements[] = $this->getElement($name);
            }
            $clone->setElements($elements);
            $displayGroups[] = $clone;
        }
        $this->setDisplayGroups($displayGroups);
    }

    /**
     * Reset values of form
     * 
     * @return Zend_Form
     */
    public function reset()
    {
        foreach ($this->getElements() as $element) {
            $element->setValue(null);
        }
        foreach ($this->getSubForms() as $subForm) {
            $subForm->reset();
        }

        return $this;
    }

    /**
     * Initialize form (used by extending classes)
     * 
     * @return void
     */
    public function init()
    {
    }

    /**
     * Set form state from options array
     * 
     * @param  array $options 
     * @return Zend_Form
     */
    public function setOptions(array $options)
    {
        if (isset($options['prefixPath'])) {
            $this->addPrefixPaths($options['prefixPath']);
            unset($options['prefixPath']);
        }

        if (isset($options['elementPrefixPath'])) {                          
            $this->addElementPrefixPaths($options['elementPrefixPath']);      
            unset($options['elementPrefixPath']);                             
        }

        if (isset($options['displayGroupPrefixPath'])) {                          
            $this->addDisplayGroupPrefixPaths($options['displayGroupPrefixPath']);      
            unset($options['displayGroupPrefixPath']);                             
        }

        if (isset($options['elements'])) {
            $this->setElements($options['elements']);
            unset($options['elements']);
        }

        if (isset($options['elementDecorators'])) {
            $elementDecorators = $options['elementDecorators'];
            unset($options['elementDecorators']);
        }

        if (isset($options['defaultDisplayGroupClass'])) {
            $this->setDefaultDisplayGroupClass($options['defaultDisplayGroupClass']);
            unset($options['defaultDisplayGroupClass']);
        }

        if (isset($options['displayGroupDecorators'])) {
            $displayGroupDecorators = $options['displayGroupDecorators'];
            unset($options['displayGroupDecorators']);
        }

        if (isset($options['elementsBelongTo'])) {
            $elementsBelongTo = $options['elementsBelongTo'];
            unset($options['elementsBelongTo']);
        }

        if (isset($options['attribs'])) {
            $this->addAttribs($options['attribs']);
            unset($options['attribs']);
        }

        $forbidden = array(
            'Options', 'Config', 'PluginLoader', 'SubForms', 'View', 'Translator',
            'Attrib', 'Default',
        );

        foreach ($options as $key => $value) {
            $normalized = ucfirst($key);
            if (in_array($normalized, $forbidden)) {
                continue;
            }

            $method = 'set' . $normalized;
            if (method_exists($this, $method)) {
                $this->$method($value);
            } else {
                $this->setAttrib($key, $value);
            }
        }

        if (isset($elementDecorators)) {
            $this->setElementDecorators($elementDecorators);
        }

        if (isset($displayGroupDecorators)) {
            $this->setDisplayGroupDecorators($displayGroupDecorators);
        }

        if (isset($elementsBelongTo)) {
            $this->setElementsBelongTo($elementsBelongTo);
        }

        return $this;
    }

    /**
     * Set form state from config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Form
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

 
    // Loaders 

    /**
     * Set plugin loaders for use with decorators and elements
     * 
     * @param  Zend_Loader_PluginLoader_Interface $loader 
     * @param  string $type 'decorator' or 'element'
     * @return Zend_Form
     * @throws Zend_Form_Exception on invalid type
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type = null)
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::DECORATOR:
            case self::ELEMENT:
                $this->_loaders[$type] = $loader;
                return $this;
            default:
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type));
        }
    }

    /**
     * Retrieve plugin loader for given type
     *
     * $type may be one of:
     * - decorator
     * - element
     *
     * If a plugin loader does not exist for the given type, defaults are 
     * created.
     * 
     * @param  string $type 
     * @return Zend_Loader_PluginLoader_Interface
     */
    public function getPluginLoader($type = null)
    {
        $type = strtoupper($type);
        if (!isset($this->_loaders[$type])) {
            switch ($type) {
                case self::DECORATOR:
                    $prefixSegment = 'Form_Decorator';
                    $pathSegment   = 'Form/Decorator';
                    break;
                case self::ELEMENT:
                    $prefixSegment = 'Form_Element';
                    $pathSegment   = 'Form/Element';
                    break;
                default:
                    require_once 'Zend/Form/Exception.php';
                    throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
            }

            require_once 'Zend/Loader/PluginLoader.php';
            $this->_loaders[$type] = new Zend_Loader_PluginLoader(
                array('Zend_' . $prefixSegment . '_' => 'Zend/' . $pathSegment . '/')
            );
        }

        return $this->_loaders[$type];
    }

    /**
     * Add prefix path for plugin loader
     *
     * If no $type specified, assumes it is a base path for both filters and 
     * validators, and sets each according to the following rules:
     * - decorators: $prefix = $prefix . '_Decorator'
     * - elements: $prefix = $prefix . '_Element'
     *
     * Otherwise, the path prefix is set on the appropriate plugin loader.
     *
     * If $type is 'decorators', sets the path in the decorator plugin loader 
     * for all elements. Additionally, if no $type is provided, 
     * {@link Zend_Form_Element::addPrefixPath()} is called on each element.
     * 
     * @param  string $path 
     * @return Zend_Form
     * @throws Zend_Form_Exception for invalid type
     */
    public function addPrefixPath($prefix, $path, $type = null) 
    {
        $type = strtoupper($type);
        switch ($type) {
            case self::DECORATOR:
            case self::ELEMENT:
                $loader = $this->getPluginLoader($type);
                $loader->addPrefixPath($prefix, $path);
                return $this;
            case null:
                $prefix = rtrim($prefix, '_');
                $path   = rtrim($path, DIRECTORY_SEPARATOR);
                foreach (array(self::DECORATOR, self::ELEMENT) as $type) {
                    $cType        = ucfirst(strtolower($type));
                    $pluginPath   = $path . DIRECTORY_SEPARATOR . $cType . DIRECTORY_SEPARATOR;
                    $pluginPrefix = $prefix . '_' . $cType;
                    $loader       = $this->getPluginLoader($type);
                    $loader->addPrefixPath($pluginPrefix, $pluginPath);
                }
                return $this;
            default:
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
        }
    }

    /**
     * Add many prefix paths at once
     * 
     * @param  array $spec 
     * @return Zend_Form
     */
    public function addPrefixPaths(array $spec)
    {
        if (isset($spec['prefix']) && isset($spec['path'])) {
            return $this->addPrefixPath($spec['prefix'], $spec['path']);
        } 
        foreach ($spec as $type => $paths) {
            if (is_numeric($type) && is_array($paths)) {
                $type = null;
                if (isset($paths['prefix']) && isset($paths['path'])) {
                    if (isset($paths['type'])) {
                        $type = $paths['type'];
                    }
                    $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
                }
            } elseif (!is_numeric($type)) {
                if (!isset($paths['prefix']) || !isset($paths['path'])) {
                    continue;
                }
                $this->addPrefixPath($paths['prefix'], $paths['path'], $type);
            }
        }
        return $this;
    }

    /**
     * Add prefix path for all elements
     * 
     * @param  string $prefix 
     * @param  string $path 
     * @param  string $type 
     * @return Zend_Form
     */
    public function addElementPrefixPath($prefix, $path, $type = null)
    {
        $this->_elementPrefixPaths[] = array(
            'prefix' => $prefix, 
            'path'   => $path, 
            'type'   => $type,
        );

        foreach ($this->getElements() as $element) {
            $element->addPrefixPath($prefix, $path, $type);
        }

        foreach ($this->getSubForms() as $subForm) {
            $subForm->addElementPrefixPath($prefix, $path, $type);
        }

        return $this;
    }

    /**
     * Add prefix paths for all elements
     * 
     * @param  array $spec 
     * @return Zend_Form
     */
    public function addElementPrefixPaths(array $spec)
    {
        $this->_elementPrefixPaths = $this->_elementPrefixPaths + $spec;

        foreach ($this->getElements() as $element) {
            $element->addPrefixPaths($spec);
        }

        return $this;
    }

    /**
     * Add prefix path for all display groups
     * 
     * @param  string $prefix 
     * @param  string $path 
     * @return Zend_Form
     */
    public function addDisplayGroupPrefixPath($prefix, $path)
    {
        $this->_displayGroupPrefixPaths[] = array(
            'prefix' => $prefix, 
            'path'   => $path,
        );

        foreach ($this->getDisplayGroups() as $group) {
            $group->addPrefixPath($prefix, $path);
        }

        return $this;
    }

    /**
     * Add multiple display group prefix paths at once
     * 
     * @param  array $spec 
     * @return Zend_Form
     */
    public function addDisplayGroupPrefixPaths(array $spec)
    {
        foreach ($spec as $key => $value) {
            if (is_string($value) && !is_numeric($key)) {
                $this->addDisplayGroupPrefixPath($key, $value);
                continue;
            }

            if (is_string($value) && is_numeric($key)) {
                continue;
            }

            if (is_array($value)) {
                $count = count($value);
                if (array_keys($value) === range(0, $count - 1)) {
                    if ($count < 2) {
                        continue;
                    }
                    $prefix = array_shift($value);
                    $path   = array_shift($value);
                    $this->addDisplayGroupPrefixPath($prefix, $path);
                    continue;
                }
                if (array_key_exists('prefix', $value) && array_key_exists('path', $value)) {
                    $this->addDisplayGroupPrefixPath($value['prefix'], $value['path']);
                }
            }
        }
        return $this;
    }

    // Form metadata:
    
    /**
     * Set form attribute
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Form
     */
    public function setAttrib($key, $value)
    {
        $key = (string) $key;
        $this->_attribs[$key] = $value;
        return $this;
    }

    /**
     * Add multiple form attributes at once
     * 
     * @param  array $attribs 
     * @return Zend_Form
     */
    public function addAttribs(array $attribs)
    {
        foreach ($attribs as $key => $value) {
            $this->setAttrib($key, $value);
        }
        return $this;
    }

    /**
     * Set multiple form attributes at once
     *
     * Overwrites any previously set attributes.
     * 
     * @param  array $attribs 
     * @return Zend_Form
     */
    public function setAttribs(array $attribs)
    {
        $this->clearAttribs();
        return $this->addAttribs($attribs);
    }

    /**
     * Retrieve a single form attribute
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getAttrib($key)
    {
        $key = (string) $key;
        if (!isset($this->_attribs[$key])) {
            return null;
        }

        return $this->_attribs[$key];
    }

    /**
     * Retrieve all form attributes/metadata
     * 
     * @return array
     */
    public function getAttribs()
    {
        return $this->_attribs;
    }

    /**
     * Remove attribute
     * 
     * @param  string $key 
     * @return bool
     */
    public function removeAttrib($key)
    {
        if (isset($this->_attribs[$key])) {
            unset($this->_attribs[$key]);
            return true;
        }

        return false;
    }

    /**
     * Clear all form attributes
     * 
     * @return Zend_Form
     */
    public function clearAttribs()
    {
        $this->_attribs = array();
        return $this;
    }

    /**
     * Set form action
     * 
     * @param  string $action 
     * @return Zend_Form
     */
    public function setAction($action)
    {
        return $this->setAttrib('action', (string) $action);
    }

    /**
     * Get form action
     *
     * Sets default to '' if not set.
     * 
     * @return string
     */
    public function getAction()
    {
        $action = $this->getAttrib('action');
        if (null === $action) {
            $action = '';
            $this->setAction($action);
        }
        return $action;
    }

    /**
     * Set form method
     *
     * Only values in {@link $_methods()} allowed
     * 
     * @param  string $method 
     * @return Zend_Form
     * @throws Zend_Form_Exception
     */
    public function setMethod($method)
    {
        $method = strtolower($method);
        if (!in_array($method, $this->_methods)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('"%s" is an invalid form method', $method));
        }
        $this->setAttrib('method', $method);
        return $this;
    }

    /**
     * Retrieve form method
     * 
     * @return string
     */
    public function getMethod()
    {
        if (null === ($method = $this->getAttrib('method'))) {
            $method = self::METHOD_POST;
            $this->setAttrib('method', $method);
        }
        return strtolower($method);
    }

    /**
     * Set encoding type
     * 
     * @param  string $value 
     * @return Zend_Form
     */
    public function setEnctype($value)
    {
        $this->setAttrib('enctype', $value);
        return $this;
    }

    /**
     * Get encoding type
     * 
     * @return string
     */
    public function getEnctype()
    {
        if (null === ($enctype = $this->getAttrib('enctype'))) {
            $enctype = self::ENCTYPE_URLENCODED;
            $this->setAttrib('enctype', $enctype);
        }
        return $this->getAttrib('enctype');
    }

    /**
     * Filter a name to only allow valid variable characters
     * 
     * @param  string $value 
     * @param  bool $allowBrackets
     * @return string
     */
    public function filterName($value, $allowBrackets = false)
    {
        $charset = '^a-zA-Z0-9_\x7f-\xff';
        if ($allowBrackets) {
            $charset .= '\[\]';
        }
        return preg_replace('/[' . $charset . ']/', '', (string) $value);
    }

    /**
     * Set form name
     * 
     * @param  string $name 
     * @return Zend_Form
     */
    public function setName($name)
    {
        $name = $this->filterName($name);
        if (('0' !== $name) && empty($name)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid name provided; must contain only valid variable characters and be non-empty');
        }

        return $this->setAttrib('name', $name);
    }

    /**
     * Get name attribute
     * 
     * @return null|string
     */
    public function getName()
    {
        return $this->getAttrib('name');
    }

    /**
     * Get fully qualified name
     *
     * Places name as subitem of array and/or appends brackets.
     * 
     * @return string
     */
    public function getFullyQualifiedName()
    {
        return $this->getName();
    }

    /**
     * Get element id
     * 
     * @return string
     */
    public function getId()
    {
        if (null !== ($id = $this->getAttrib('id'))) {
            return $id;
        }

        $id = $this->getFullyQualifiedName();

        // Bail early if no array notation detected
        if (!strstr($id, '[')) {
            return $id;
        }

        // Strip array notation
        if ('[]' == substr($id, -2)) {
            $id = substr($id, 0, strlen($id) - 2);
        }
        $id = str_replace('][', '-', $id);
        $id = str_replace(array(']', '['), '-', $id);
        $id = trim($id, '-');

        return $id;
    }

    /**
     * Set form legend
     * 
     * @param  string $value 
     * @return Zend_Form
     */
    public function setLegend($value)
    {
        $this->_legend = (string) $value;
        return $this;
    }

    /**
     * Get form legend
     * 
     * @return string
     */
    public function getLegend()
    {
        return $this->_legend;
    }

    /**
     * Set form description
     * 
     * @param  string $value 
     * @return Zend_Form
     */
    public function setDescription($value)
    {
        $this->_description = (string) $value;
        return $this;
    }

    /**
     * Retrieve form description
     * 
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set form order
     * 
     * @param  int $index 
     * @return Zend_Form
     */
    public function setOrder($index)
    {
        $this->_formOrder = (int) $index;
        return $this;
    }

    /**
     * Get form order
     * 
     * @return int|null
     */
    public function getOrder()
    {
        return $this->_formOrder;
    }
 
    // Element interaction: 

    /**
     * Add a new element
     *
     * $element may be either a string element type, or an object of type 
     * Zend_Form_Element. If a string element type is provided, $name must be 
     * provided, and $options may be optionally provided for configuring the 
     * element.
     *
     * If a Zend_Form_Element is provided, $name may be optionally provided, 
     * and any provided $options will be ignored.
     * 
     * @param  string|Zend_Form_Element $element 
     * @param  string $name 
     * @param  array|Zend_Config $options 
     * @return Zend_Form
     */
    public function addElement($element, $name = null, $options = null)
    {
        if (is_string($element)) {
            if (null === $name) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Elements specified by string must have an accompanying name');
            }

            $this->_elements[$name] = $this->createElement($element, $name, $options);
        } elseif ($element instanceof Zend_Form_Element) {
            $prefixPaths              = array();
            $prefixPaths['decorator'] = $this->getPluginLoader('decorator')->getPaths();
            if (!empty($this->_elementPrefixPaths)) {
                $prefixPaths = array_merge($prefixPaths, $this->_elementPrefixPaths);
            }

            if (null === $name) {
                $name = $element->getName();
            }

            $this->_elements[$name] = $element;
            $this->_elements[$name]->addPrefixPaths($prefixPaths);
        }

        $this->_order[$name] = $this->_elements[$name]->getOrder();
        $this->_orderUpdated = true;
        $this->_setElementsBelongTo($name);

        return $this;
    }

    /**
     * Create an element
     *
     * Acts as a factory for creating elements. Elements created with this 
     * method will not be attached to the form, but will contain element 
     * settings as specified in the form object (including plugin loader 
     * prefix paths, default decorators, etc.).
     * 
     * @param  string $type 
     * @param  string $name 
     * @param  array|Zend_Config $options 
     * @return Zend_Form_Element
     */
    public function createElement($type, $name, $options = null)
    {
        if (!is_string($type)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Element type must be a string indicating type');
        }

        if (!is_string($name)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Element name must be a string');
        }

        $prefixPaths              = array();
        $prefixPaths['decorator'] = $this->getPluginLoader('decorator')->getPaths();
        if (!empty($this->_elementPrefixPaths)) {
            $prefixPaths = array_merge($prefixPaths, $this->_elementPrefixPaths);
        }

        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        }

        if ((null === $options) || !is_array($options)) {
            $options = array('prefixPath' => $prefixPaths);
        } elseif (is_array($options)) {
            if (array_key_exists('prefixPath', $options)) {
                $options['prefixPath'] = array_merge($prefixPaths, $options['prefixPath']);
            } else {
                $options['prefixPath'] = $prefixPaths;
            }
        }

        $class = $this->getPluginLoader(self::ELEMENT)->load($type);
        $element = new $class($name, $options);

        return $element;
    }

    /**
     * Add multiple elements at once
     * 
     * @param  array $elements 
     * @return Zend_Form
     */
    public function addElements(array $elements)
    {
        foreach ($elements as $key => $spec) {
            $name = null;
            if (!is_numeric($key)) {
                $name = $key;
            }

            if (is_string($spec) || ($spec instanceof Zend_Form_Element)) {
                $this->addElement($spec, $name);
                continue;
            }

            if (is_array($spec)) {
                $argc = count($spec);
                $options = array();
                if (isset($spec['type'])) {
                    $type = $spec['type'];
                    if (isset($spec['name'])) {
                        $name = $spec['name'];
                    }
                    if (isset($spec['options'])) {
                        $options = $spec['options'];
                    }
                    $this->addElement($type, $name, $options);
                } else {
                    switch ($argc) {
                        case 0:
                            continue;
                        case (1 <= $argc):
                            $type = array_shift($spec);
                        case (2 <= $argc):
                            if (null === $name) {
                                $name = array_shift($spec);
                            } else {
                                $options = array_shift($spec);
                            }
                        case (3 <= $argc):
                            if (empty($options)) {
                                $options = array_shift($spec);
                            }
                        default:
                            $this->addElement($type, $name, $options);
                    }
                }
            }
        }
        return $this;
    }

    /**
     * Set form elements (overwrites existing elements)
     * 
     * @param  array $elements 
     * @return Zend_Form
     */
    public function setElements(array $elements)
    {
        $this->clearElements();
        return $this->addElements($elements);
    }

    /**
     * Retrieve a single element
     * 
     * @param  string $name 
     * @return Zend_Form_Element|null
     */
    public function getElement($name)
    {
        if (array_key_exists($name, $this->_elements)) {
            return $this->_elements[$name];
        }
        return null;
    }

    /**
     * Retrieve all elements
     * 
     * @return array
     */
    public function getElements()
    {
        return $this->_elements;
    }

    /**
     * Remove element
     * 
     * @param  string $name 
     * @return boolean
     */
    public function removeElement($name)
    {
        $name = (string) $name;
        if (isset($this->_elements[$name])) {
            unset($this->_elements[$name]);
            if (array_key_exists($name, $this->_order)) {
                unset($this->_order[$name]);
                $this->_orderUpdated = true;
            } else {
                foreach ($this->_displayGroups as $group) {
                    if (null !== $group->getElement($name)) {
                        $group->removeElement($name);
                    }
                }
            }
            return true;
        }

        return false;
    }

    /**
     * Remove all form elements
     * 
     * @return Zend_Form
     */
    public function clearElements()
    {
        foreach (array_keys($this->_elements) as $key) {
            if (array_key_exists($key, $this->_order)) {
                unset($this->_order[$key]);
            }
        }
        $this->_elements     = array();
        $this->_orderUpdated = true;
        return $this;
    }

    /**
     * Set default values for elements
     *
     * If an element's name is not specified as a key in the array, its value 
     * is set to null.
     * 
     * @param  array $defaults 
     * @return Zend_Form
     */
    public function setDefaults(array $defaults)
    {
        foreach ($this->getElements() as $name => $element) {
            if (array_key_exists($name, $defaults)) {
                $this->setDefault($name, $defaults[$name]);
            }
        }
        foreach ($this->getSubForms() as $name => $form) {
            if (array_key_exists($name, $defaults)) {
                $form->setDefaults($defaults[$name]);
            } else {
                $form->setDefaults($defaults);
            }
        }
        return $this;
    }

    /**
     * Set default value for an element
     * 
     * @param  string $name 
     * @param  mixed $value 
     * @return Zend_Form
     */
    public function setDefault($name, $value)
    {
        $name = (string) $name;
        if ($element = $this->getElement($name)) {
            $element->setValue($value);
        } else {
            if (is_scalar($value)) {
                foreach ($this->getSubForms() as $subForm) {
                    $subForm->setDefault($name, $value);
                }
            } elseif (is_array($value) && ($subForm = $this->getSubForm($name))) {
                $subForm->setDefaults($value);
            } 
        }
        return $this;
    }

    /**
     * Retrieve value for single element
     * 
     * @param  string $name 
     * @return mixed
     */
    public function getValue($name)
    {
        if ($element = $this->getElement($name)) {
            return $element->getValue();
        } 
        
        if ($subForm = $this->getSubForm($name)) {
            return $subForm->getValues(true);
        } 

        foreach ($this->getSubForms() as $subForm) {
            if ($name == $subForm->getElementsBelongTo()) {
                return $subForm->getValues(true);
            }
        }
        return null;
    }

    /**
     * Retrieve all form element values
     * 
     * @param  bool $suppressArrayNotation
     * @return array
     */
    public function getValues($suppressArrayNotation = false)
    {
        $values = array();
        foreach ($this->getElements() as $key => $element) {
            if (!$element->getIgnore()) {
                $values[$key] = $element->getValue();
            }
        }
        foreach ($this->getSubForms() as $key => $subForm) {
            $fValues = $this->_attachToArray($subForm->getValues(true), $subForm->getElementsBelongTo());
            $values = array_merge($values, $fValues);
        }

        if (!$suppressArrayNotation && $this->isArray()) {
            $values = $this->_attachToArray($values, $this->getElementsBelongTo());
        }

        return $values;
    }

    /**
     * Get unfiltered element value
     * 
     * @param  string $name 
     * @return mixed
     */
    public function getUnfilteredValue($name)
    {
        if ($element = $this->getElement($name)) {
            return $element->getUnfilteredValue();
        }
        return null;
    }

    /**
     * Retrieve all unfiltered element values
     * 
     * @return array
     */
    public function getUnfilteredValues()
    {
        $values = array();
        foreach ($this->getElements() as $key => $element) {
            $values[$key] = $element->getUnfilteredValue();
        }

        return $values;
    }

    /**
     * Set all elements' filters
     * 
     * @param  array $filters 
     * @return Zend_Form
     */
    public function setElementFilters(array $filters)
    {
        foreach ($this->getElements() as $element) {
            $element->setFilters($filters);
        }
        return $this;
    }

    /**
     * Set name of array elements belong to
     * 
     * @param  string $array 
     * @return Zend_Form
     */
    public function setElementsBelongTo($array)
    {
        $origName = $this->getElementsBelongTo();
        $name = $this->filterName($array, true);
        if (empty($name)) {
            $name = null;
        }
        $this->_elementsBelongTo = $name;

        if (null === $name) {
            $this->setIsArray(false);
            if (null !== $origName) {
                $this->_setElementsBelongTo();
            }
        } else {
            $this->setIsArray(true);
            $this->_setElementsBelongTo();
        }

        return $this;
    }

    /**
     * Set array to which elements belong
     * 
     * @param  string $name Element name
     * @return void
     */
    protected function _setElementsBelongTo($name = null)
    {
        $array = $this->getElementsBelongTo();

        if (null === $array) {
            return;
        }

        if (null === $name) {
            foreach ($this->getElements() as $element) {
                $element->setBelongsTo($array);
            }
        } else {
            if (null !== ($element = $this->getElement($name))) {
                $element->setBelongsTo($array);
            }
        }
    }

    /**
     * Get name of array elements belong to
     * 
     * @return string|null
     */
    public function getElementsBelongTo()
    {
        if ((null === $this->_elementsBelongTo) && $this->isArray()) {
            $name = $this->getName();
            if (!empty($name)) {
                return $name;
            }
        }
        return $this->_elementsBelongTo;
    }

    /**
     * Set flag indicating elements belong to array
     * 
     * @param  bool $flag Value of flag
     * @return Zend_Form
     */
    public function setIsArray($flag)
    {
        $this->_isArray = (bool) $flag;
        return $this;
    }

    /**
     * Get flag indicating if elements belong to an array
     * 
     * @return bool
     */
    public function isArray()
    {
        return $this->_isArray;
    }
 
    // Element groups: 

    /**
     * Add a form group/subform
     * 
     * @param  Zend_Form $form 
     * @param  string $name 
     * @param  int $order 
     * @return Zend_Form
     */
    public function addSubForm(Zend_Form $form, $name, $order = null)
    {
        $name = (string) $name;
        foreach ($this->_loaders as $type => $loader) {
            $loaderPaths = $loader->getPaths();
            foreach ($loaderPaths as $prefix => $paths) {
                foreach ($paths as $path) {
                    $form->addPrefixPath($prefix, $path, $type);
                }
            }
        }

        if (!empty($this->_elementPrefixPaths)) {
            foreach ($this->_elementPrefixPaths as $spec) {
                list($prefix, $path, $type) = array_values($spec);
                $form->addElementPrefixPath($prefix, $path, $type);
            }
        }

        if (!empty($this->_displayGroupPrefixPaths)) {
            foreach ($this->_displayGroupPrefixPaths as $spec) {
                list($prefix, $path) = array_values($spec);
                $form->addDisplayGroupPrefixPath($prefix, $path);
            }
        }

        if (null !== $order) {
            $form->setOrder($order);
        }

        $form->setName($name);
        $this->_subForms[$name] = $form;
        $this->_order[$name]    = $order;
        $this->_orderUpdated    = true;
        return $this;
    }

    /**
     * Add multiple form subForms/subforms at once
     * 
     * @param  array $subForms 
     * @return Zend_Form
     */
    public function addSubForms(array $subForms)
    {
        foreach ($subForms as $key => $spec) {
            $name = null;
            if (!is_numeric($key)) {
                $name = $key;
            }

            if ($spec instanceof Zend_Form) {
                $this->addSubForm($spec, $name);
                continue;
            }

            if (is_array($spec)) {
                $argc  = count($spec);
                $order = null;
                switch ($argc) {
                    case 0: 
                        continue;
                    case (1 <= $argc):
                        $subForm = array_shift($spec);
                    case (2 <= $argc):
                        $name  = array_shift($spec);
                    case (3 <= $argc):
                        $order = array_shift($spec);
                    default:
                        $this->addSubForm($subForm, $name, $order);
                }
            }
        }
        return $this;
    }

    /**
     * Set multiple form subForms/subforms (overwrites)
     * 
     * @param  array $subForms 
     * @return Zend_Form
     */
    public function setSubForms(array $subForms)
    {
        $this->clearSubForms();
        return $this->addSubForms($subForms);
    }

    /**
     * Retrieve a form subForm/subform
     * 
     * @param  string $name 
     * @return Zend_Form|null
     */
    public function getSubForm($name)
    {
        $name = (string) $name;
        if (isset($this->_subForms[$name])) {
            return $this->_subForms[$name];
        }
        return null;
    }

    /**
     * Retrieve all form subForms/subforms
     * 
     * @return array
     */
    public function getSubForms()
    {
        return $this->_subForms;
    }

    /**
     * Remove form subForm/subform
     * 
     * @param  string $name 
     * @return boolean
     */
    public function removeSubForm($name)
    {
        $name = (string) $name;
        if (array_key_exists($name, $this->_subForms)) {
            unset($this->_subForms[$name]);
            if (array_key_exists($name, $this->_order)) {
                unset($this->_order[$name]);
                $this->_orderUpdated = true;
            }
            return true;
        }

        return false;
    }

    /**
     * Remove all form subForms/subforms
     * 
     * @return Zend_Form
     */
    public function clearSubForms()
    {
        foreach (array_keys($this->_subForms) as $key) {
            if (array_key_exists($key, $this->_order)) {
                unset($this->_order[$key]);
            }
        }
        $this->_subForms     = array();
        $this->_orderUpdated = true;
        return $this;
    }


    // Display groups:

    /**
     * Set default display group class 
     * 
     * @param  string $class 
     * @return Zend_Form
     */
    public function setDefaultDisplayGroupClass($class)
    {
        $this->_defaultDisplayGroupClass = (string) $class;
        return $this;
    }

    /**
     * Retrieve default display group class
     * 
     * @return string
     */
    public function getDefaultDisplayGroupClass()
    {
        return $this->_defaultDisplayGroupClass;
    }

    /**
     * Add a display group
     *
     * Groups named elements for display purposes.
     *
     * If a referenced element does not yet exist in the form, it is omitted.
     * 
     * @param  array $elements 
     * @param  string $name 
     * @param  array|Zend_Config $options 
     * @return Zend_Form
     * @throws Zend_Form_Exception if no valid elements provided
     */
    public function addDisplayGroup(array $elements, $name, $options = null)
    {
        $group = array();
        foreach ($elements as $element) {
            if (isset($this->_elements[$element])) {
                $add = $this->getElement($element);
                if (null !== $add) {
                    unset($this->_order[$element]);
                    $group[] = $add;
                }
            }
        }
        if (empty($group)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('No valid elements specified for display group');
        }

        $name = (string) $name;

        if (is_array($options)) {
            $options['elements'] = $group;
        } elseif ($options instanceof Zend_Config) {
            $options = $options->toArray();
            $options['elements'] = $group;
        } else {
            $options = array('elements' => $group);
        }

        if (isset($options['displayGroupClass'])) {
            $class = $options['displayGroupClass'];
            unset($options['displayGroupClass']);
        } else {
            $class = $this->getDefaultDisplayGroupClass();
        }

        if (!class_exists($class)) {
            require_once 'Zend/Loader.php';
            Zend_Loader::loadClass($class);
        }
        $this->_displayGroups[$name] = new $class(
            $name, 
            $this->getPluginLoader(self::DECORATOR),
            $options
        );

        if (!empty($this->_displayGroupPrefixPaths)) {
            $this->_displayGroups[$name]->addPrefixPaths($this->_displayGroupPrefixPaths);
        }

        $this->_order[$name] = $this->_displayGroups[$name]->getOrder();
        $this->_orderUpdated = true;
        return $this;
    }

    /**
     * Add a display group object (used with cloning)
     * 
     * @param  Zend_Form_DisplayGroup $group 
     * @param  string|null $name 
     * @return Zend_Form
     */
    protected function _addDisplayGroupObject(Zend_Form_DisplayGroup $group, $name = null)
    {
        if (null === $name) {
            $name = $group->getName();
            if (empty($name)) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid display group added; requires name');
            }
        }

        $this->_displayGroups[$name] = $group;

        if (!empty($this->_displayGroupPrefixPaths)) {
            $this->_displayGroups[$name]->addPrefixPaths($this->_displayGroupPrefixPaths);
        }

        $this->_order[$name] = $this->_displayGroups[$name]->getOrder();
        $this->_orderUpdated = true;
        return $this;
    }

    /**
     * Add multiple display groups at once
     * 
     * @param  array $groups 
     * @return Zend_Form
     */
    public function addDisplayGroups(array $groups)
    {
        foreach ($groups as $key => $spec) {
            $name = null;
            if (!is_numeric($key)) {
                $name = $key;
            }

            if ($spec instanceof Zend_Form_DisplayGroup) {
                $this->_addDisplayGroupObject($spec);
            }

            if (!is_array($spec) || empty($spec)) {
                continue;
            }

            $argc    = count($spec);
            $options = array();

            if (isset($spec['elements'])) {
                $elements = $spec['elements'];
                if (isset($spec['name'])) {
                    $name = $spec['name'];
                }
                if (isset($spec['options'])) {
                    $options = $spec['options'];
                }
                $this->addDisplayGroup($elements, $name, $options);
            } else {
                switch ($argc) {
                    case (1 <= $argc):
                        $elements = array_shift($spec);
                        if (!is_array($elements) && (null !== $name)) {
                            $elements = array_merge((array) $elements, $spec);
                            $this->addDisplayGroup($elements, $name);
                            break;
                        }
                    case (2 <= $argc):
                        if (null !== $name) {
                            $options = array_shift($spec);
                            $this->addDisplayGroup($elements, $name, $options);
                            break;
                        }
                        $name = array_shift($spec);
                    case (3 <= $argc):
                        $options = array_shift($spec);
                    default:
                        $this->addDisplayGroup($elements, $name, $options);
                }
            }
        }
        return $this;
    }

    /**
     * Add multiple display groups (overwrites)
     * 
     * @param  array $groups 
     * @return Zend_Form
     */
    public function setDisplayGroups(array $groups)
    {
        return $this->clearDisplayGroups()
                    ->addDisplayGroups($groups);
    }

    /**
     * Return a display group
     * 
     * @param  string $name 
     * @return array|null
     */
    public function getDisplayGroup($name)
    {
        $name = (string) $name;
        if (isset($this->_displayGroups[$name])) {
            return $this->_displayGroups[$name];
        }

        return null;
    }

    /**
     * Return all display groups
     * 
     * @return array
     */
    public function getDisplayGroups()
    {
        return $this->_displayGroups;
    }

    /**
     * Remove a display group by name
     * 
     * @param  string $name 
     * @return boolean
     */
    public function removeDisplayGroup($name)
    {
        $name = (string) $name;
        if (array_key_exists($name, $this->_displayGroups)) {
            foreach ($this->_displayGroups[$name] as $key => $element) {
                if (array_key_exists($key, $this->_elements)) {
                    $this->_order[$key]  = $element->getOrder();
                    $this->_orderUpdated = true;
                }
            }
            unset($this->_displayGroups[$name]);

            if (array_key_exists($name, $this->_order)) {
                unset($this->_order[$name]);
                $this->_orderUpdated = true;
            }
            return true;
        }

        return false;
    }

    /**
     * Remove all display groups
     * 
     * @return Zend_Form
     */
    public function clearDisplayGroups()
    {
        foreach ($this->_displayGroups as $key => $group) {
            if (array_key_exists($key, $this->_order)) {
                unset($this->_order[$key]);
            }
            foreach ($group as $name => $element) {
                if (isset($this->_elements[$name])) {
                    $this->_order[$name] = $element->getOrder();
                }
                $this->_order[$name] = $element->getOrder();
            }
        }
        $this->_displayGroups = array();
        $this->_orderUpdated  = true;
        return $this;
    }

     
    // Processing 

    /**
     * Populate form
     *
     * Proxies to {@link setDefaults()}
     * 
     * @param  array $values 
     * @return Zend_Form
     */
    public function populate(array $values)
    {
        return $this->setDefaults($values);
    }

    /**
     * Determine array key name from given value
     *
     * Given a value such as foo[bar][baz], returns the last element (in this case, 'baz').
     * 
     * @param  string $value 
     * @return string
     */
    protected function _getArrayName($value)
    {
        if (empty($value) || !is_string($value)) {
            return $value;
        }

        if (!strstr($value, '[')) {
            return $value;
        }

        $endPos = strlen($value) - 1;
        if (']' != $value[$endPos]) {
            return $value;
        }

        $start = strrpos($value, '[') + 1;
        $name = substr($value, $start, $endPos - $start);
        return $name;
    }
    
    /**
     * Extract the value by walking the array using given array path.
     *
     * Given an array path such as foo[bar][baz], returns the value of the last
     * element (in this case, 'baz').
     * 
     * @param  array $value Array to walk
     * @param  string $arrayPath Array notation path of the part to extract
     * @return string
     */
    protected function _dissolveArrayValue($value, $arrayPath)
    {
        // As long as we have more levels
        while ($arrayPos = strpos($arrayPath, '[')) {
            // Get the next key in the path
            $arrayKey = trim(substr($arrayPath, 0, $arrayPos), ']');

            // Set the potentially final value or the next search point in the array
            if (isset($value[$arrayKey])) {
                $value = $value[$arrayKey];
            }
            
            // Set the next search point in the path
            $arrayPath = trim(substr($arrayPath, $arrayPos + 1), ']');
        }

        if (isset($value[$arrayPath])) {
            $value = $value[$arrayPath];
        }

        return $value;
    }

    /**
     * Converts given arrayPath to an array and attaches given value at the end of it.
     *
     * @param  mixed $value The value to attach
     * @param  string $arrayPath Given array path to convert and attach to.
     * @return array 
     */
    protected function _attachToArray($value, $arrayPath)
    {
        // As long as we have more levels
        while ($arrayPos = strrpos($arrayPath, '[')) {
            // Get the next key in the path
            $arrayKey = trim(substr($arrayPath, $arrayPos + 1), ']');

            // Attach
            $value = array($arrayKey => $value);
            
            // Set the next search point in the path
            $arrayPath = trim(substr($arrayPath, 0, $arrayPos), ']');
        }

        $value = array($arrayPath => $value);

        return $value;
    }

    /**
     * Validate the form
     * 
     * @param  array $data 
     * @return boolean
     */
    public function isValid($data)
    {
        if (!is_array($data)) {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(__CLASS__ . '::' . __METHOD__ . ' expects an array');
        }
        $translator = $this->getTranslator();
        $valid      = true;

        if ($this->isArray()) {
            $data = $this->_dissolveArrayValue($data, $this->getElementsBelongTo());
        }

        foreach ($this->getElements() as $key => $element) {
            $element->setTranslator($translator);
            if (!isset($data[$key])) {
                $valid = $element->isValid(null, $data) && $valid;
            } else {
                $valid = $element->isValid($data[$key], $data) && $valid;
            }
        }
        foreach ($this->getSubForms() as $key => $form) {
            $form->setTranslator($translator);
            if (isset($data[$key])) {
                $valid = $form->isValid($data[$key]) && $valid;
            } else {
                $valid = $form->isValid($data) && $valid;
            }
        }

        $this->_errorsExist = !$valid;
        return $valid;
    }

    /**
     * Validate a partial form
     *
     * Does not check for required flags.
     * 
     * @param  array $data 
     * @return boolean
     */
    public function isValidPartial(array $data)
    {
        if ($this->isArray()) {
            $data = $this->_dissolveArrayValue($data, $this->getElementsBelongTo());
        }

        $translator        = $this->getTranslator();
        $valid             = true;
        $validatedSubForms = array();

        foreach ($data as $key => $value) {
            if (null !== ($element = $this->getElement($key))) {
                if (null !== $translator) {
                    $element->setTranslator($translator);
                }
                $valid = $element->isValid($value, $data) && $valid;
            } elseif (null !== ($subForm = $this->getSubForm($key))) {
                if (null !== $translator) {
                    $subForm->setTranslator($translator);
                }
                $valid = $subForm->isValidPartial($data[$key]) && $valid;
                $validatedSubForms[] = $key;
            } 
        }
        foreach ($this->getSubForms() as $key => $subForm) {
            if (!in_array($key, $validatedSubForms)) {
                if (null !== $translator) {
                    $subForm->setTranslator($translator);
                }

                $valid = $subForm->isValidPartial($data) && $valid;
            }
        }

        $this->_errorsExist = !$valid;
        return $valid;
    }

    /**
     * Process submitted AJAX data
     *
     * Checks if provided $data is valid, via {@link isValidPartial()}. If so, 
     * it returns JSON-encoded boolean true. If not, it returns JSON-encoded 
     * error messages (as returned by {@link getMessages()}).
     * 
     * @param  array $data 
     * @return string JSON-encoded boolean true or error messages
     */
    public function processAjax(array $data)
    {
        require_once 'Zend/Json.php';
        if ($this->isValidPartial($data)) {
            return Zend_Json::encode(true);
        }
        $messages = $this->getMessages();
        return Zend_Json::encode($messages);
    }

    /**
     * Add a custom error message to return in the event of failed validation
     * 
     * @param  string $message 
     * @return Zend_Form
     */
    public function addErrorMessage($message)
    {
        $this->_errorMessages[] = (string) $message;
        return $this;
    }

    /**
     * Add multiple custom error messages to return in the event of failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form
     */
    public function addErrorMessages(array $messages)
    {
        foreach ($messages as $message) {
            $this->addErrorMessage($message);
        }
        return $this;
    }

    /**
     * Same as addErrorMessages(), but clears custom error message stack first
     * 
     * @param  array $messages 
     * @return Zend_Form
     */
    public function setErrorMessages(array $messages)
    {
        $this->clearErrorMessages();
        return $this->addErrorMessages($messages);
    }

    /**
     * Retrieve custom error messages
     * 
     * @return array
     */
    public function getErrorMessages()
    {
        return $this->_errorMessages;
    }

    /**
     * Clear custom error messages stack
     * 
     * @return Zend_Form
     */
    public function clearErrorMessages()
    {
        $this->_errorMessages = array();
        return $this;
    }

    /**
     * Mark the element as being in a failed validation state
     * 
     * @return Zend_Form
     */
    public function markAsError()
    {
        $this->_errorsExist = true;
        return $this;
    }

    /**
     * Add an error message and mark element as failed validation
     * 
     * @param  string $message 
     * @return Zend_Form
     */
    public function addError($message)
    {
        $this->addErrorMessage($message);
        $this->markAsError();
        return $this;
    }

    /**
     * Add multiple error messages and flag element as failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form
     */
    public function addErrors(array $messages)
    {
        foreach ($messages as $message) {
            $this->addError($message);
        }
        return $this;
    }

    /**
     * Overwrite any previously set error messages and flag as failed validation
     * 
     * @param  array $messages 
     * @return Zend_Form
     */
    public function setErrors(array $messages)
    {
        $this->clearErrorMessages();
        return $this->addErrors($messages);
    }


    public function persistData()
    {
    }

    /**
     * Are there errors in the form?
     * 
     * @return bool
     */
    public function isErrors()
    {
        return $this->_errorsExist;
    }

    /**
     * Get error codes for all elements failing validation
     * 
     * @param  string $name 
     * @return array
     */
    public function getErrors($name = null)
    {
        $errors = array();
        if ((null !== $name) && isset($this->_elements[$name])) {
            $errors = $this->getElement($name)->getErrors();
        } elseif ((null !== $name) && isset($this->_subForms[$name])) {
            $errors = $this->getSubForm($name)->getErrors();
        } else {
            foreach ($this->_elements as $key => $element) {
                $errors[$key] = $element->getErrors();
            }
            foreach ($this->getSubForms() as $key => $subForm) {
                $fErrors = $this->_attachToArray($subForm->getErrors(), $subForm->getElementsBelongTo());
                $errors = array_merge($errors, $fErrors);
            }
        }
        return $errors;
    }

    /**
     * Retrieve error messages from elements failing validations
     * 
     * @param  string $name 
     * @param  bool $suppressArrayNotation
     * @return array
     */
    public function getMessages($name = null, $suppressArrayNotation = false)
    {
        if ((null !== $name) && isset($this->_elements[$name])) {
            return $this->getElement($name)->getMessages();
        } 

        if ((null !== $name) && isset($this->_subForms[$name])) {
            return $this->getSubForm($name)->getMessages(null, true);
        } 

        $arrayKeys = array();
        foreach ($this->getSubForms() as $key => $subForm) {
            $array = $this->_getArrayName($subForm->getElementsBelongTo());
            if (!empty($array)) {
                if ($name == $array) {
                    return $subForm->getMessages(null, true);
                }
                $arrayKeys[$key] = $subForm->getElementsBelongTo();
            }
        }

        $customMessages = $this->_getErrorMessages();
        if ($this->isErrors() && !empty($customMessages)) {
            return $customMessages;
        }

        $messages = array();

        foreach ($this->getElements() as $name => $element) {
            $eMessages = $element->getMessages();
            if (!empty($eMessages)) {
                $messages[$name] = $eMessages;
            }
        }

        foreach ($this->getSubForms() as $key => $subForm) {
            $fMessages = $subForm->getMessages(null, true);
            if (!empty($fMessages)) {
                if (array_key_exists($key, $arrayKeys)) {
                    $fMessages = $this->_attachToArray($fMessages, $arrayKeys[$key]);
                    $messages = array_merge($messages, $fMessages);
                } else {
                    $messages[$key] = $fMessages;
                }
            }
        }

        if (!$suppressArrayNotation && $this->isArray()) {
            $messages = $this->_attachToArray($messages, $this->getElementsBelongTo());
        }

        return $messages;
    }

 
    // Rendering 

    /**
     * Set view object
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Form
     */
    public function setView(Zend_View_Interface $view = null)
    {
        $this->_view = $view;
        return $this;
    }

    /**
     * Retrieve view object
     *
     * If none registered, attempts to pull from ViewRenderer.
     * 
     * @return Zend_View_Interface|null
     */
    public function getView()
    {
        if (null === $this->_view) {
            require_once 'Zend/Controller/Action/HelperBroker.php';
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
            $this->setView($viewRenderer->view);
        }

        return $this->_view;
    }

    /**
     * Instantiate a decorator based on class name or class name fragment
     * 
     * @param  string $name 
     * @param  null|array $options 
     * @return Zend_Form_Decorator_Interface
     */
    protected function _getDecorator($name, $options)
    {
        $class = $this->getPluginLoader(self::DECORATOR)->load($name);
        if (null === $options) {
            $decorator = new $class;
        } else {
            $decorator = new $class($options);
        }

        return $decorator;
    }

    /**
     * Add a decorator for rendering the element
     * 
     * @param  string|Zend_Form_Decorator_Interface $decorator 
     * @param  array|Zend_Config $options Options with which to initialize decorator
     * @return Zend_Form
     */
    public function addDecorator($decorator, $options = null)
    {
        if ($decorator instanceof Zend_Form_Decorator_Interface) {
            $name = get_class($decorator);
        } elseif (is_string($decorator)) {
            $name      = $decorator;
            $decorator = array(
                'decorator' => $name,
                'options'   => $options,
            );
        } elseif (is_array($decorator)) {
            foreach ($decorator as $name => $spec) {
                break;
            }
            if (is_numeric($name)) {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid alias provided to addDecorator; must be alphanumeric string');
            }
            if (is_string($spec)) {
                $decorator = array(
                    'decorator' => $spec,
                    'options'   => $options,
                );
            } elseif ($spec instanceof Zend_Form_Decorator_Interface) {
                $decorator = $spec;
            }
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid decorator provided to addDecorator; must be string or Zend_Form_Decorator_Interface');
        }

        $this->_decorators[$name] = $decorator;

        return $this;
    }

    /**
     * Add many decorators at once
     * 
     * @param  array $decorators 
     * @return Zend_Form
     */
    public function addDecorators(array $decorators)
    {
        foreach ($decorators as $decoratorInfo) {
            if (is_string($decoratorInfo)) {
                $this->addDecorator($decoratorInfo);
            } elseif ($decoratorInfo instanceof Zend_Form_Decorator_Interface) {
                $this->addDecorator($decoratorInfo);
            } elseif (is_array($decoratorInfo)) {
                $argc    = count($decoratorInfo);
                $options = array();
                if (isset($decoratorInfo['decorator'])) {
                    $decorator = $decoratorInfo['decorator'];
                    if (isset($decoratorInfo['options'])) {
                        $options = $decoratorInfo['options'];
                    }
                    $this->addDecorator($decorator, $options);
                } else {
                    switch (true) {
                        case (0 == $argc):
                            break;
                        case (1 <= $argc):
                            $decorator  = array_shift($decoratorInfo);
                        case (2 <= $argc):
                            $options = array_shift($decoratorInfo);
                        default:
                            $this->addDecorator($decorator, $options);
                            break;
                    }
                }
            } else {
                require_once 'Zend/Form/Exception.php';
                throw new Zend_Form_Exception('Invalid decorator passed to addDecorators()');
            }
        }

        return $this;
    }

    /**
     * Overwrite all decorators
     * 
     * @param  array $decorators 
     * @return Zend_Form
     */
    public function setDecorators(array $decorators)
    {
        $this->clearDecorators();
        return $this->addDecorators($decorators);
    }

    /**
     * Retrieve a registered decorator
     * 
     * @param  string $name 
     * @return false|Zend_Form_Decorator_Abstract
     */
    public function getDecorator($name)
    {
        if (!isset($this->_decorators[$name])) {
            $len = strlen($name);
            foreach ($this->_decorators as $localName => $decorator) {
                if ($len > strlen($localName)) {
                    continue;
                }

                if (0 === substr_compare($localName, $name, -$len, $len, true)) {
                    if (is_array($decorator)) {
                        return $this->_loadDecorator($decorator, $localName);
                    }
                    return $decorator;
                }
            }
            return false;
        }

        if (is_array($this->_decorators[$name])) {
            return $this->_loadDecorator($this->_decorators[$name], $name);
        }

        return $this->_decorators[$name];
    }

    /**
     * Retrieve all decorators
     * 
     * @return array
     */
    public function getDecorators()
    {
        foreach ($this->_decorators as $key => $value) {
            if (is_array($value)) {
                $this->_loadDecorator($value, $key);
            }
        }
        return $this->_decorators;
    }

    /**
     * Remove a single decorator
     * 
     * @param  string $name 
     * @return bool
     */
    public function removeDecorator($name)
    {
        $decorator = $this->getDecorator($name);
        if ($decorator) {
            if (array_key_exists($name, $this->_decorators)) {
                unset($this->_decorators[$name]);
            } else {
                $class = get_class($decorator);
                if (!array_key_exists($class, $this->_decorators)) {
                    return false;
                }
                unset($this->_decorators[$class]);
            }
            return true;
        }

        return false;
    }

    /**
     * Clear all decorators
     * 
     * @return Zend_Form
     */
    public function clearDecorators()
    {
        $this->_decorators = array();
        return $this;
    }

    /**
     * Set all element decorators as specified
     * 
     * @param  array $decorators 
     * @param  array|null $elements Specific elements to decorate or exclude from decoration
     * @param  bool $include Whether $elements is an inclusion or exclusion list
     * @return Zend_Form
     */
    public function setElementDecorators(array $decorators, array $elements = null, $include = true)
    {
        if (is_array($elements)) {
            if ($include) {
                $elementObjs = array();
                foreach ($elements as $name) {
                    if (null !== ($element = $this->getElement($name))) {
                        $elementObjs[] = $element;
                    }
                }
            } else {
                $elementObjs = $this->getElements();
                foreach ($elements as $name) {
                    if (array_key_exists($name, $elementObjs)) {
                        unset($elementObjs[$name]);
                    }
                }
            }
        } else {
            $elementObjs = $this->getElements();
        }

        foreach ($elementObjs as $element) {
            $element->setDecorators($decorators);
        }

        return $this;
    }

    /**
     * Set all display group decorators as specified
     * 
     * @param  array $decorators 
     * @return Zend_Form
     */
    public function setDisplayGroupDecorators(array $decorators)
    {
        foreach ($this->getDisplayGroups() as $group) {
            $group->setDecorators($decorators);
        }

        return $this;
    }

    /**
     * Set all subform decorators as specified
     * 
     * @param  array $decorators 
     * @return Zend_Form
     */
    public function setSubFormDecorators(array $decorators)
    {
        foreach ($this->getSubForms() as $form) {
            $form->setDecorators($decorators);
        }

        return $this;
    }

    /**
     * Render form
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            $this->setView($view);
        }

        $content = '';
        foreach ($this->getDecorators() as $decorator) {
            $decorator->setElement($this);
            $content = $decorator->render($content);
        }
        return $content;
    }

    /**
     * Serialize as string
     *
     * Proxies to {@link render()}.
     * 
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->render();
            return $return;
        } catch (Exception $e) {
            $message = "Exception caught by form: " . $e->getMessage()
                     . "\nStack Trace:\n" . $e->getTraceAsString();
            trigger_error($message, E_USER_WARNING);
            return '';
        }
    }

 
    // Localization: 

    /**
     * Set translator object
     * 
     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator 
     * @return Zend_Form
     */
    public function setTranslator($translator = null)
    {
        if (null === $translator) {
            $this->_translator = null;
        } elseif ($translator instanceof Zend_Translate_Adapter) {
            $this->_translator = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            $this->_translator = $translator->getAdapter();
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid translator specified');
        }

        return $this;
    }

    /**
     * Set global default translator object
     * 
     * @param  Zend_Translate|Zend_Translate_Adapter|null $translator 
     * @return void
     */
    public static function setDefaultTranslator($translator = null)
    {
        if (null === $translator) {
            self::$_translatorDefault = null;
        } elseif ($translator instanceof Zend_Translate_Adapter) {
            self::$_translatorDefault = $translator;
        } elseif ($translator instanceof Zend_Translate) {
            self::$_translatorDefault = $translator->getAdapter();
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception('Invalid translator specified');
        }
    }

    /**
     * Retrieve translator object
     * 
     * @return Zend_Translate|null
     */
    public function getTranslator()
    {
        if ($this->translatorIsDisabled()) {
            return null;
        }

        if (null === $this->_translator) {
            return self::getDefaultTranslator();
        }

        return $this->_translator;
    }

    /**
     * Get global default translator object
     * 
     * @return null|Zend_Translate
     */
    public static function getDefaultTranslator()
    {
        if (null === self::$_translatorDefault) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Translate')) {
                $translator = Zend_Registry::get('Zend_Translate');
                if ($translator instanceof Zend_Translate_Adapter) {
                    return $translator;
                } elseif ($translator instanceof Zend_Translate) {
                    return $translator->getAdapter();
                }
            }
        }
        return self::$_translatorDefault;
    }

    /**
     * Indicate whether or not translation should be disabled
     * 
     * @param  bool $flag 
     * @return Zend_Form
     */
    public function setDisableTranslator($flag)
    {
        $this->_translatorDisabled = (bool) $flag;
        return $this;
    }

    /**
     * Is translation disabled?
     * 
     * @return bool
     */
    public function translatorIsDisabled()
    {
        return $this->_translatorDisabled;
    }

    /**
     * Overloading: access to elements, form groups, and display groups
     * 
     * @param  string $name 
     * @return Zend_Form_Element|Zend_Form|null
     */
    public function __get($name)
    {
        if (isset($this->_elements[$name])) {
            return $this->_elements[$name];
        } elseif (isset($this->_subForms[$name])) {
            return $this->_subForms[$name];
        } elseif (isset($this->_displayGroups[$name])) {
            return $this->_displayGroups[$name];
        }

        return null;
    }

    /**
     * Overloading: access to elements, form groups, and display groups
     * 
     * @param  string $name 
     * @param  Zend_Form_Element|Zend_Form $value 
     * @return void
     * @throws Zend_Form_Exception for invalid $value
     */
    public function __set($name, $value)
    {
        if ($value instanceof Zend_Form_Element) {
            $this->addElement($value, $name);
            return;
        } elseif ($value instanceof Zend_Form) {
            $this->addSubForm($value, $name);
            return;
        } elseif (is_array($value)) {
            $this->addDisplayGroup($value, $name);
            return;
        }

        require_once 'Zend/Form/Exception.php';
        if (is_object($value)) {
            $type = get_class($value);
        } else {
            $type = gettype($value);
        }
        throw new Zend_Form_Exception('Only form elements and groups may be overloaded; variable of type "' . $type . '" provided');
    }

    /**
     * Overloading: access to elements, form groups, and display groups
     * 
     * @param  string $name 
     * @return boolean
     */
    public function __isset($name)
    {
        if (isset($this->_elements[$name])
            || isset($this->_subForms[$name])
            || isset($this->_displayGroups[$name]))
        {
            return true;
        }

        return false;
    }

    /**
     * Overloading: access to elements, form groups, and display groups
     * 
     * @param  string $name 
     * @return void
     */
    public function __unset($name)
    {
        if (isset($this->_elements[$name])) {
            unset($this->_elements[$name]);
        } elseif (isset($this->_subForms[$name])) {
            unset($this->_subForms[$name]);
        } elseif (isset($this->_displayGroups[$name])) {
            unset($this->_displayGroups[$name]);
        }
    }

    /**
     * Overloading: allow rendering specific decorators
     *
     * Call renderDecoratorName() to render a specific decorator.
     * 
     * @param  string $method 
     * @param  array $args 
     * @return string
     * @throws Zend_Form_Exception for invalid decorator or invalid method call
     */
    public function __call($method, $args)
    {
        if ('render' == substr($method, 0, 6)) {
            $decoratorName = substr($method, 6);
            if (false !== ($decorator = $this->getDecorator($decoratorName))) {
                $decorator->setElement($this);
                $seed = '';
                if (0 < count($args)) {
                    $seed = array_shift($args);
                }
                return $decorator->render($seed);
            }

            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Decorator by name %s does not exist', $decoratorName));
        }

        require_once 'Zend/Form/Exception.php';
        throw new Zend_Form_Exception(sprintf('Method %s does not exist', $method));
    }
 
    // Interfaces: Iterator, Countable

    /**
     * Current element/subform/display group
     * 
     * @return Zend_Form_Element|Zend_Form_DisplayGroup|Zend_Form
     */
    public function current()
    {
        $this->_sort();
        current($this->_order);
        $key = key($this->_order);

        if (isset($this->_elements[$key])) {
            return $this->getElement($key);
        } elseif (isset($this->_subForms[$key])) {
            return $this->getSubForm($key);
        } elseif (isset($this->_displayGroups[$key])) {
            return $this->getDisplayGroup($key);
        } else {
            require_once 'Zend/Form/Exception.php';
            throw new Zend_Form_Exception(sprintf('Corruption detected in form; invalid key ("%s") found in internal iterator', (string) $key));
        }
    }

    /**
     * Current element/subform/display group name
     * 
     * @return string
     */
    public function key()
    {
        $this->_sort();
        return key($this->_order);
    }

    /**
     * Move pointer to next element/subform/display group
     * 
     * @return void
     */
    public function next()
    {
        $this->_sort();
        next($this->_order);
    }

    /**
     * Move pointer to beginning of element/subform/display group loop
     * 
     * @return void
     */
    public function rewind()
    {
        $this->_sort();
        reset($this->_order);
    }

    /**
     * Determine if current element/subform/display group is valid
     * 
     * @return bool
     */
    public function valid()
    {
        $this->_sort();
        return (current($this->_order) !== false);
    }

    /**
     * Count of elements/subforms that are iterable
     * 
     * @return int
     */
    public function count()
    {
        return count($this->_order);
    }

    /**
     * Set flag to disable loading default decorators
     * 
     * @param  bool $flag 
     * @return Zend_Form
     */
    public function setDisableLoadDefaultDecorators($flag)
    {
        $this->_disableLoadDefaultDecorators = (bool) $flag;
        return $this;
    }

    /**
     * Should we load the default decorators?
     * 
     * @return bool
     */
    public function loadDefaultDecoratorsIsDisabled()
    {
        return $this->_disableLoadDefaultDecorators;
    }

    /**
     * Load the default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('FormElements')
                 ->addDecorator('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form'))
                 ->addDecorator('Form');
        }
    }

    /**
     * Sort items according to their order
     * 
     * @return void
     */
    protected function _sort()
    {
        if ($this->_orderUpdated) {
            $items = array();
            $index = 0;
            foreach ($this->_order as $key => $order) {
                if (null === $order) {
                    if (null === ($order = $this->{$key}->getOrder())) {
                        while (array_search($index, $this->_order, true)) {
                            ++$index;
                        }
                        $items[$index] = $key;
                        ++$index;
                    } else {
                        $items[$order] = $key;
                    }
                } else {
                    $items[$order] = $key;
                }
            }

            $items = array_flip($items);
            asort($items);
            $this->_order = $items;
            $this->_orderUpdated = false;
        }
    }

    /**
     * Lazy-load a decorator
     * 
     * @param  array $decorator Decorator type and options
     * @param  mixed $name Decorator name or alias
     * @return Zend_Form_Decorator_Interface
     */
    protected function _loadDecorator(array $decorator, $name)
    {
        $sameName = false;
        if ($name == $decorator['decorator']) {
            $sameName = true;
        }

        $instance = $this->_getDecorator($decorator['decorator'], $decorator['options']);
        if ($sameName) {
            $newName            = get_class($instance);
            $decoratorNames     = array_keys($this->_decorators);
            $order              = array_flip($decoratorNames);
            $order[$newName]    = $order[$name];
            $decoratorsExchange = array();
            unset($order[$name]);
            asort($order);
            foreach ($order as $key => $index) {
                if ($key == $newName) {
                    $decoratorsExchange[$key] = $instance;
                    continue;
                }
                $decoratorsExchange[$key] = $this->_decorators[$key];
            }
            $this->_decorators = $decoratorsExchange;
        } else {
            $this->_decorators[$name] = $instance;
        }

        return $instance;
    }

    /**
     * Retrieve optionally translated custom error messages
     * 
     * @return array
     */
    protected function _getErrorMessages()
    {
        $messages   = $this->getErrorMessages();
        $translator = $this->getTranslator();
        if (null !== $translator) {
            foreach ($messages as $key => $message) {
                $messages[$key] = $translator->translate($message);
            }
        }
        return $messages;
    }
}
PKpG[?6h��L�L Controller/Response/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Controller_Response_Abstract
 *
 * Base class for Zend_Controller responses
 *
 * @package Zend_Controller
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Response_Abstract
{
    /**
     * Body content
     * @var array
     */
    protected $_body = array();

    /**
     * Exception stack
     * @var Exception
     */
    protected $_exceptions = array();

    /**
     * Array of headers. Each header is an array with keys 'name' and 'value'
     * @var array
     */
    protected $_headers = array();

    /**
     * Array of raw headers. Each header is a single string, the entire header to emit
     * @var array
     */
    protected $_headersRaw = array();

    /**
     * HTTP response code to use in headers
     * @var int
     */
    protected $_httpResponseCode = 200;

    /**
     * Flag; is this response a redirect?
     * @var boolean
     */
    protected $_isRedirect = false;

    /**
     * Whether or not to render exceptions; off by default
     * @var boolean
     */
    protected $_renderExceptions = false;

    /**
     * Flag; if true, when header operations are called after headers have been
     * sent, an exception will be raised; otherwise, processing will continue
     * as normal. Defaults to true.
     *
     * @see canSendHeaders()
     * @var boolean
     */
    public $headersSentThrowsException = true;

    /**
     * Normalize a header name
     *
     * Normalizes a header name to X-Capitalized-Names
     * 
     * @param  string $name 
     * @return string
     */
    protected function _normalizeHeader($name)
    {
        $filtered = str_replace(array('-', '_'), ' ', (string) $name);
        $filtered = ucwords(strtolower($filtered));
        $filtered = str_replace(' ', '-', $filtered);
        return $filtered;
    }

    /**
     * Set a header
     *
     * If $replace is true, replaces any headers already defined with that
     * $name.
     *
     * @param string $name
     * @param string $value
     * @param boolean $replace
     * @return Zend_Controller_Response_Abstract
     */
    public function setHeader($name, $value, $replace = false)
    {
        $this->canSendHeaders(true);
        $name  = $this->_normalizeHeader($name);
        $value = (string) $value;

        if ($replace) {
            foreach ($this->_headers as $key => $header) {
                if ($name == $header['name']) {
                    unset($this->_headers[$key]);
                }
            }
        }

        $this->_headers[] = array(
            'name'    => $name,
            'value'   => $value,
            'replace' => $replace
        );

        return $this;
    }

    /**
     * Set redirect URL
     *
     * Sets Location header and response code. Forces replacement of any prior
     * redirects.
     *
     * @param string $url
     * @param int $code
     * @return Zend_Controller_Response_Abstract
     */
    public function setRedirect($url, $code = 302)
    {
        $this->canSendHeaders(true);
        $this->setHeader('Location', $url, true)
             ->setHttpResponseCode($code);

        return $this;
    }

    /**
     * Is this a redirect?
     *
     * @return boolean
     */
    public function isRedirect()
    {
        return $this->_isRedirect;
    }

    /**
     * Return array of headers; see {@link $_headers} for format
     *
     * @return array
     */
    public function getHeaders()
    {
        return $this->_headers;
    }

    /**
     * Clear headers
     *
     * @return Zend_Controller_Response_Abstract
     */
    public function clearHeaders()
    {
        $this->_headers = array();

        return $this;
    }

    /**
     * Set raw HTTP header
     *
     * Allows setting non key => value headers, such as status codes
     *
     * @param string $value
     * @return Zend_Controller_Response_Abstract
     */
    public function setRawHeader($value)
    {
        $this->canSendHeaders(true);
        if ('Location' == substr($value, 0, 8)) {
            $this->_isRedirect = true;
        }
        $this->_headersRaw[] = (string) $value;
        return $this;
    }

    /**
     * Retrieve all {@link setRawHeader() raw HTTP headers}
     *
     * @return array
     */
    public function getRawHeaders()
    {
        return $this->_headersRaw;
    }

    /**
     * Clear all {@link setRawHeader() raw HTTP headers}
     *
     * @return Zend_Controller_Response_Abstract
     */
    public function clearRawHeaders()
    {
        $this->_headersRaw = array();
        return $this;
    }

    /**
     * Clear all headers, normal and raw
     *
     * @return Zend_Controller_Response_Abstract
     */
    public function clearAllHeaders()
    {
        return $this->clearHeaders()
                    ->clearRawHeaders();
    }

    /**
     * Set HTTP response code to use with headers
     *
     * @param int $code
     * @return Zend_Controller_Response_Abstract
     */
    public function setHttpResponseCode($code)
    {
        if (!is_int($code) || (100 > $code) || (599 < $code)) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Invalid HTTP response code');
        }

        if ((300 <= $code) && (307 >= $code)) {
            $this->_isRedirect = true;
        } else {
            $this->_isRedirect = false;
        }

        $this->_httpResponseCode = $code;
        return $this;
    }

    /**
     * Retrieve HTTP response code
     *
     * @return int
     */
    public function getHttpResponseCode()
    {
        return $this->_httpResponseCode;
    }

    /**
     * Can we send headers?
     *
     * @param boolean $throw Whether or not to throw an exception if headers have been sent; defaults to false
     * @return boolean
     * @throws Zend_Controller_Response_Exception
     */
    public function canSendHeaders($throw = false)
    {
        $ok = headers_sent($file, $line);
        if ($ok && $throw && $this->headersSentThrowsException) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line);
        }

        return !$ok;
    }

    /**
     * Send all headers
     *
     * Sends any headers specified. If an {@link setHttpResponseCode() HTTP response code}
     * has been specified, it is sent with the first header.
     *
     * @return Zend_Controller_Response_Abstract
     */
    public function sendHeaders()
    {
        // Only check if we can send headers if we have headers to send
        if (count($this->_headersRaw) || count($this->_headers) || (200 != $this->_httpResponseCode)) {
            $this->canSendHeaders(true);
        } elseif (200 == $this->_httpResponseCode) {
            // Haven't changed the response code, and we have no headers
            return $this;
        }

        $httpCodeSent = false;

        foreach ($this->_headersRaw as $header) {
            if (!$httpCodeSent && $this->_httpResponseCode) {
                header($header, true, $this->_httpResponseCode);
                $httpCodeSent = true;
            } else {
                header($header);
            }
        }

        foreach ($this->_headers as $header) {
            if (!$httpCodeSent && $this->_httpResponseCode) {
                header($header['name'] . ': ' . $header['value'], $header['replace'], $this->_httpResponseCode);
                $httpCodeSent = true;
            } else {
                header($header['name'] . ': ' . $header['value'], $header['replace']);
            }
        }

        if (!$httpCodeSent) {
            header('HTTP/1.1 ' . $this->_httpResponseCode);
            $httpCodeSent = true;
        }

        return $this;
    }

    /**
     * Set body content
     *
     * If $name is not passed, or is not a string, resets the entire body and
     * sets the 'default' key to $content.
     *
     * If $name is a string, sets the named segment in the body array to
     * $content.
     *
     * @param string $content
     * @param null|string $name
     * @return Zend_Controller_Response_Abstract
     */
    public function setBody($content, $name = null)
    {
        if ((null === $name) || !is_string($name)) {
            $this->_body = array('default' => (string) $content);
        } else {
            $this->_body[$name] = (string) $content;
        }

        return $this;
    }

    /**
     * Append content to the body content
     *
     * @param string $content
     * @param null|string $name
     * @return Zend_Controller_Response_Abstract
     */
    public function appendBody($content, $name = null)
    {
        if ((null === $name) || !is_string($name)) {
            if (isset($this->_body['default'])) {
                $this->_body['default'] .= (string) $content;
            } else {
                return $this->append('default', $content);
            }
        } elseif (isset($this->_body[$name])) {
            $this->_body[$name] .= (string) $content;
        } else {
            return $this->append($name, $content);
        }

        return $this;
    }

    /**
     * Clear body array
     *
     * With no arguments, clears the entire body array. Given a $name, clears
     * just that named segment; if no segment matching $name exists, returns
     * false to indicate an error.
     *
     * @param  string $name Named segment to clear
     * @return boolean
     */
    public function clearBody($name = null)
    {
        if (null !== $name) {
            $name = (string) $name;
            if (isset($this->_body[$name])) {
                unset($this->_body[$name]);
                return true;
            }

            return false;
        }

        $this->_body = array();
        return true;
    }

    /**
     * Return the body content
     *
     * If $spec is false, returns the concatenated values of the body content
     * array. If $spec is boolean true, returns the body content array. If
     * $spec is a string and matches a named segment, returns the contents of
     * that segment; otherwise, returns null.
     *
     * @param boolean $spec
     * @return string|array|null
     */
    public function getBody($spec = false)
    {
        if (false === $spec) {
            ob_start();
            $this->outputBody();
            return ob_get_clean();
        } elseif (true === $spec) {
            return $this->_body;
        } elseif (is_string($spec) && isset($this->_body[$spec])) {
            return $this->_body[$spec];
        }

        return null;
    }

    /**
     * Append a named body segment to the body content array
     *
     * If segment already exists, replaces with $content and places at end of
     * array.
     *
     * @param string $name
     * @param string $content
     * @return Zend_Controller_Response_Abstract
     */
    public function append($name, $content)
    {
        if (!is_string($name)) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Invalid body segment key ("' . gettype($name) . '")');
        }

        if (isset($this->_body[$name])) {
            unset($this->_body[$name]);
        }
        $this->_body[$name] = (string) $content;
        return $this;
    }

    /**
     * Prepend a named body segment to the body content array
     *
     * If segment already exists, replaces with $content and places at top of
     * array.
     *
     * @param string $name
     * @param string $content
     * @return void
     */
    public function prepend($name, $content)
    {
        if (!is_string($name)) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Invalid body segment key ("' . gettype($name) . '")');
        }

        if (isset($this->_body[$name])) {
            unset($this->_body[$name]);
        }

        $new = array($name => (string) $content);
        $this->_body = $new + $this->_body;

        return $this;
    }

    /**
     * Insert a named segment into the body content array
     *
     * @param  string $name
     * @param  string $content
     * @param  string $parent
     * @param  boolean $before Whether to insert the new segment before or
     * after the parent. Defaults to false (after)
     * @return Zend_Controller_Response_Abstract
     */
    public function insert($name, $content, $parent = null, $before = false)
    {
        if (!is_string($name)) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Invalid body segment key ("' . gettype($name) . '")');
        }

        if ((null !== $parent) && !is_string($parent)) {
            require_once 'Zend/Controller/Response/Exception.php';
            throw new Zend_Controller_Response_Exception('Invalid body segment parent key ("' . gettype($parent) . '")');
        }

        if (isset($this->_body[$name])) {
            unset($this->_body[$name]);
        }

        if ((null === $parent) || !isset($this->_body[$parent])) {
            return $this->append($name, $content);
        }

        $ins  = array($name => (string) $content);
        $keys = array_keys($this->_body);
        $loc  = array_search($parent, $keys);
        if (!$before) {
            // Increment location if not inserting before
            ++$loc;
        }

        if (0 === $loc) {
            // If location of key is 0, we're prepending
            $this->_body = $ins + $this->_body;
        } elseif ($loc >= (count($this->_body))) {
            // If location of key is maximal, we're appending
            $this->_body = $this->_body + $ins;
        } else {
            // Otherwise, insert at location specified
            $pre  = array_slice($this->_body, 0, $loc);
            $post = array_slice($this->_body, $loc);
            $this->_body = $pre + $ins + $post;
        }

        return $this;
    }

    /**
     * Echo the body segments
     *
     * @return void
     */
    public function outputBody()
    {
        foreach ($this->_body as $content) {
            echo $content;
        }
    }

    /**
     * Register an exception with the response
     *
     * @param Exception $e
     * @return Zend_Controller_Response_Abstract
     */
    public function setException(Exception $e)
    {
        $this->_exceptions[] = $e;
        return $this;
    }

    /**
     * Retrieve the exception stack
     *
     * @return array
     */
    public function getException()
    {
        return $this->_exceptions;
    }

    /**
     * Has an exception been registered with the response?
     *
     * @return boolean
     */
    public function isException()
    {
        return !empty($this->_exceptions);
    }

    /**
     * Does the response object contain an exception of a given type?
     *
     * @param  string $type
     * @return boolean
     */
    public function hasExceptionOfType($type)
    {
        foreach ($this->_exceptions as $e) {
            if ($e instanceof $type) {
                return true;
            }
        }

        return false;
    }

    /**
     * Does the response object contain an exception with a given message?
     *
     * @param  string $message
     * @return boolean
     */
    public function hasExceptionOfMessage($message)
    {
        foreach ($this->_exceptions as $e) {
            if ($message == $e->getMessage()) {
                return true;
            }
        }

        return false;
    }

    /**
     * Does the response object contain an exception with a given code?
     *
     * @param  int $code
     * @return boolean
     */
    public function hasExceptionOfCode($code)
    {
        $code = (int) $code;
        foreach ($this->_exceptions as $e) {
            if ($code == $e->getCode()) {
                return true;
            }
        }

        return false;
    }

    /**
     * Retrieve all exceptions of a given type
     *
     * @param  string $type
     * @return false|array
     */
    public function getExceptionByType($type)
    {
        $exceptions = array();
        foreach ($this->_exceptions as $e) {
            if ($e instanceof $type) {
                $exceptions[] = $e;
            }
        }

        if (empty($exceptions)) {
            $exceptions = false;
        }

        return $exceptions;
    }

    /**
     * Retrieve all exceptions of a given message
     *
     * @param  string $message
     * @return false|array
     */
    public function getExceptionByMessage($message)
    {
        $exceptions = array();
        foreach ($this->_exceptions as $e) {
            if ($message == $e->getMessage()) {
                $exceptions[] = $e;
            }
        }

        if (empty($exceptions)) {
            $exceptions = false;
        }

        return $exceptions;
    }

    /**
     * Retrieve all exceptions of a given code
     *
     * @param mixed $code
     * @return void
     */
    public function getExceptionByCode($code)
    {
        $code       = (int) $code;
        $exceptions = array();
        foreach ($this->_exceptions as $e) {
            if ($code == $e->getCode()) {
                $exceptions[] = $e;
            }
        }

        if (empty($exceptions)) {
            $exceptions = false;
        }

        return $exceptions;
    }

    /**
     * Whether or not to render exceptions (off by default)
     *
     * If called with no arguments or a null argument, returns the value of the
     * flag; otherwise, sets it and returns the current value.
     *
     * @param boolean $flag Optional
     * @return boolean
     */
    public function renderExceptions($flag = null)
    {
        if (null !== $flag) {
            $this->_renderExceptions = $flag ? true : false;
        }

        return $this->_renderExceptions;
    }

    /**
     * Send the response, including all headers, rendering exceptions if so
     * requested.
     *
     * @return void
     */
    public function sendResponse()
    {
        $this->sendHeaders();

        if ($this->isException() && $this->renderExceptions()) {
            $exceptions = '';
            foreach ($this->getException() as $e) {
                $exceptions .= $e->__toString() . "\n";
            }
            echo $exceptions;
            return;
        }

        $this->outputBody();
    }

    /**
     * Magic __toString functionality
     *
     * Proxies to {@link sendResponse()} and returns response value as string
     * using output buffering.
     *
     * @return string
     */
    public function __toString()
    {
        ob_start();
        $this->sendResponse();
        return ob_get_clean();
    }
}
PKpG[��Controller/Response/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Response_Abstract */
require_once 'Zend/Controller/Response/Abstract.php';


/**
 * Zend_Controller_Response_Http
 *
 * HTTP response for controllers
 *
 * @uses Zend_Controller_Response_Abstract
 * @package Zend_Controller
 * @subpackage Response
 */
class Zend_Controller_Response_Http extends Zend_Controller_Response_Abstract
{
}
PKpG[%T���Controller/Response/Cli.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Response_Abstract */
require_once 'Zend/Controller/Response/Abstract.php';


/**
 * Zend_Controller_Response_Cli
 *
 * CLI response for controllers
 *
 * @uses Zend_Controller_Response_Abstract
 * @package Zend_Controller
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Response_Cli extends Zend_Controller_Response_Abstract
{
    /**
     * Flag; if true, when header operations are called after headers have been
     * sent, an exception will be raised; otherwise, processing will continue
     * as normal. Defaults to false.
     *
     * @see canSendHeaders()
     * @var boolean
     */
    public $headersSentThrowsException = false;


    /**
     * Magic __toString functionality
     *
     * @return string
     */
    public function __toString()
    {
        if ($this->isException() && $this->renderExceptions()) {
            $exceptions = '';
            foreach ($this->getException() as $e) {
                $exceptions .= $e->__toString() . "\n";
            }
            return $exceptions;
        }

        return $this->_body;
    }
}
PKpG[U54�44!Controller/Response/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';


/**
 * @package    Zend_Controller
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Response_Exception extends Zend_Controller_Exception
{}

PKpG[�Uc

$Controller/Response/HttpTestCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Controller_Response_Http
 */
require_once 'Zend/Controller/Response/Http.php';

/**
 * Zend_Controller_Response_HttpTestCase
 *
 * @uses Zend_Controller_Response_Http
 * @package Zend_Controller
 * @subpackage Request
 */
class Zend_Controller_Response_HttpTestCase extends Zend_Controller_Response_Http
{
    /**
     * "send" headers by returning array of all headers that would be sent
     * 
     * @return array
     */
    public function sendHeaders()
    {
        $headers = array();
        foreach ($this->_headersRaw as $header) {
            $headers[] = $header;
        }
        foreach ($this->_headers as $header) {
            $name = $header['name'];
            $key  = strtolower($name);
            if (array_key_exists($name, $headers)) {
                if ($header['replace']) {
                    $headers[$key] = $header['name'] . ': ' . $header['value'];
                }
            } else {
                $headers[$key] = $header['name'] . ': ' . $header['value'];
            }
        }
        return $headers;
    }

    /**
     * Can we send headers?
     * 
     * @param  bool $throw 
     * @return void
     */
    public function canSendHeaders($throw = false)
    {
        return true;
    }

    /**
     * Return the concatenated body segments
     * 
     * @return string
     */
    public function outputBody()
    {
        $fullContent = '';
        foreach ($this->_body as $content) {
            $fullContent .= $content;
        }
        return $fullContent;
    }

    /**
     * Get body and/or body segments
     * 
     * @param  bool|string $spec 
     * @return string|array|null
     */
    public function getBody($spec = false)
    {
        if (false === $spec) {
            return $this->outputBody();
        } elseif (true === $spec) {
            return $this->_body;
        } elseif (is_string($spec) && isset($this->_body[$spec])) {
            return $this->_body[$spec];
        }

        return null;
    }

    /**
     * "send" Response
     *
     * Concats all response headers, and then final body (separated by two 
     * newlines)
     * 
     * @return string
     */
    public function sendResponse()
    {
        $headers = $this->sendHeaders();
        $content = implode("\n", $headers) . "\n\n";

        if ($this->isException() && $this->renderExceptions()) {
            $exceptions = '';
            foreach ($this->getException() as $e) {
                $exceptions .= $e->__toString() . "\n";
            }
            $content .= $exceptions;
        } else {
            $content .= $this->outputBody();
        }

        return $content;
    }
}
PKpG[`�<�ll$Controller/Router/Route/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Route.php 1847 2006-11-23 11:36:41Z martel $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Interface */
require_once 'Zend/Controller/Router/Route/Interface.php';

/**
 * Abstract Route
 *
 * Implements interface and provides convenience methods
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Router_Route_Abstract implements Zend_Controller_Router_Route_Interface
{

    public function getVersion() {
        return 2;
    }
    
    public function chain(Zend_Controller_Router_Route_Interface $route, $separator = '/')
    {
        require_once 'Zend/Controller/Router/Route/Chain.php';

        $chain = new Zend_Controller_Router_Route_Chain();
        $chain->chain($this)->chain($route, $separator);

        return $chain;
    }

}
PKpG[q����%Controller/Router/Route/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Interface.php 10607 2008-08-02 12:53:16Z martel $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Config */
require_once 'Zend/Config.php';

/**
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Controller_Router_Route_Interface {
    public function match($path);
    public function assemble($data = array(), $reset = false, $encode = false);
    public static function getInstance(Zend_Config $config);
}

PKpG[�C(��!Controller/Router/Route/Chain.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Route.php 1847 2006-11-23 11:36:41Z martel $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * Chain route is used for managing route chaining.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Router_Route_Chain extends Zend_Controller_Router_Route_Abstract
{

    protected $_routes = array();
    protected $_separators = array();

    /**
     * Instantiates route based on passed Zend_Config structure
     *
     * @param Zend_Config $config Configuration object
     */
    public static function getInstance(Zend_Config $config)
    { }

    public function chain(Zend_Controller_Router_Route_Interface $route, $separator = '/') {

        $this->_routes[] = $route;
        $this->_separators[] = $separator;

        return $this;

    }

    /**
     * Matches a user submitted path with a previously defined route.
     * Assigns and returns an array of defaults on a successful match.
     *
     * @param Zend_Controller_Request_Http $request Request to get the path info from
     * @return array|false An array of assigned values or a false on a mismatch
     */
    public function match($request, $partial = null)
    {

        $path = $request->getPathInfo();
        
        $values = array();

        foreach ($this->_routes as $key => $route) {
            
            // TODO: Should be an interface method. Hack for 1.0 BC  
            if (!method_exists($route, 'getVersion') || $route->getVersion() == 1) {
                $match = $request->getPathInfo();
            } else {
                $match = $request;
            }
            
            $res = $route->match($match);
            if ($res === false) return false;

            $values = $res + $values;

        }

        return $values;
    }

    /**
     * Assembles a URL path defined by this route
     *
     * @param array $data An array of variable and value pairs used as parameters
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = false)
    {
        $value = '';

        foreach ($this->_routes as $key => $route) {
            if ($key > 0) {
                $value .= $this->_separators[$key];
            }
            
            $value .= $route->assemble($data, $reset, $encode);
            
            if (method_exists($route, 'getVariables')) {
                $variables = $route->getVariables();
                
                foreach ($variables as $variable) {
                    $data[$variable] = null;
                }
            }
        }

        return $value;
    }

    /**
     * Set the request object for this and the child routes
     * 
     * @param  Zend_Controller_Request_Abstract|null $request
     * @return void
     */
    public function setRequest(Zend_Controller_Request_Abstract $request = null)
    {
        $this->_request = $request;

        foreach ($this->_routes as $route) {
            if (method_exists($route, 'setRequest')) {
                $route->setRequest($request);
            }
        }
    }

}
PKpG[<��1!Controller/Router/Route/Regex.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Regex.php 12525 2008-11-10 20:18:32Z ralph $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * Regex Route
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Router_Route_Regex extends Zend_Controller_Router_Route_Abstract
{
    protected $_regex = null;
    protected $_defaults = array();
    protected $_reverse = null;
    protected $_map = array();
    protected $_values = array();

    /**
     * Instantiates route based on passed Zend_Config structure
     *
     * @param Zend_Config $config Configuration object
     */
    public static function getInstance(Zend_Config $config)
    {
        $defs = ($config->defaults instanceof Zend_Config) ? $config->defaults->toArray() : array();
        $map = ($config->map instanceof Zend_Config) ? $config->map->toArray() : array();
        $reverse = (isset($config->reverse)) ? $config->reverse : null;
        return new self($config->route, $defs, $map, $reverse);
    }

    public function __construct($route, $defaults = array(), $map = array(), $reverse = null)
    {
        $this->_regex = '#^' . $route . '$#i';
        $this->_defaults = (array) $defaults;
        $this->_map = (array) $map;
        $this->_reverse = $reverse;
    }

    public function getVersion() {
        return 1;
    }
    
    /**
     * Matches a user submitted path with a previously defined route.
     * Assigns and returns an array of defaults on a successful match.
     *
     * @param string $path Path used to match against this routing map
     * @return array|false An array of assigned values or a false on a mismatch
     */
    public function match($path)
    {
        $path = trim(urldecode($path), '/');
        $res = preg_match($this->_regex, $path, $values);

        if ($res === 0) return false;

        // array_filter_key()? Why isn't this in a standard PHP function set yet? :)
        foreach ($values as $i => $value) {
            if (!is_int($i) || $i === 0) {
                unset($values[$i]);
            }
        }

        $this->_values = $values;

        $values = $this->_getMappedValues($values);
        $defaults = $this->_getMappedValues($this->_defaults, false, true);

        $return = $values + $defaults;

        return $return;
    }

    /**
     * Maps numerically indexed array values to it's associative mapped counterpart.
     * Or vice versa. Uses user provided map array which consists of index => name
     * parameter mapping. If map is not found, it returns original array.
     *
     * Method strips destination type of keys form source array. Ie. if source array is
     * indexed numerically then every associative key will be stripped. Vice versa if reversed
     * is set to true.
     *
     * @param array $values Indexed or associative array of values to map
     * @param boolean $reversed False means translation of index to association. True means reverse.
     * @param boolean $preserve Should wrong type of keys be preserved or stripped.
     * @return array An array of mapped values
     */
    protected function _getMappedValues($values, $reversed = false, $preserve = false)
    {
        if (count($this->_map) == 0) {
            return $values;
        }

        $return = array();

        foreach ($values as $key => $value) {
            if (is_int($key) && !$reversed) {
                if (array_key_exists($key, $this->_map)) {
                    $index = $this->_map[$key];
                } elseif (false === ($index = array_search($key, $this->_map))) {
                    $index = $key;
                }
                $return[$index] = $values[$key];
            } elseif ($reversed) {
                $index = (!is_int($key)) ? array_search($key, $this->_map, true) : $key;
                if (false !== $index) {
                    $return[$index] = $values[$key];
                }
            } elseif ($preserve) {
                $return[$key] = $value;
            }
        }

        return $return;
    }

    /**
     * Assembles a URL path defined by this route
     *
     * @param array $data An array of name (or index) and value pairs used as parameters
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = false)
    {
        if ($this->_reverse === null) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception('Cannot assemble. Reversed route is not specified.');
        }

        $defaultValuesMapped  = $this->_getMappedValues($this->_defaults, true, false);
        $matchedValuesMapped  = $this->_getMappedValues($this->_values, true, false);
        $dataValuesMapped     = $this->_getMappedValues($data, true, false);

        // handle resets, if so requested (By null value) to do so
        if (($resetKeys = array_search(null, $dataValuesMapped, true)) !== false) {
            foreach ((array) $resetKeys as $resetKey) {
                if (isset($matchedValuesMapped[$resetKey])) {
                    unset($matchedValuesMapped[$resetKey]);
                    unset($dataValuesMapped[$resetKey]);
                }
            }
        }

        // merge all the data together, first defaults, then values matched, then supplied
        $mergedData = $defaultValuesMapped;
        $mergedData = $this->_arrayMergeNumericKeys($mergedData, $matchedValuesMapped);
        $mergedData = $this->_arrayMergeNumericKeys($mergedData, $dataValuesMapped);

        if ($encode) {
            foreach ($mergedData as $key => &$value) {
                $value = urlencode($value);
            }
        }	

        ksort($mergedData);

        $return = @vsprintf($this->_reverse, $mergedData);

        if ($return === false) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception('Cannot assemble. Too few arguments?');
        }

        return $return;

    }

    /**
     * Return a single parameter of route's defaults
     *
     * @param string $name Array key of the parameter
     * @return string Previously set default
     */
    public function getDefault($name) {
        if (isset($this->_defaults[$name])) {
            return $this->_defaults[$name];
        }
    }

    /**
     * Return an array of defaults
     *
     * @return array Route defaults
     */
    public function getDefaults() {
        return $this->_defaults;
    }

    /**
     * _arrayMergeNumericKeys() - allows for a strict key (numeric's included) array_merge.
     * php's array_merge() lacks the ability to merge with numeric keys.
     *
     * @param array $array1
     * @param array $array2
     * @return array
     */
    protected function _arrayMergeNumericKeys(Array $array1, Array $array2)
    {
        $returnArray = $array1;
        foreach ($array2 as $array2Index => $array2Value) {
            $returnArray[$array2Index] = $array2Value;
        }
        return $returnArray;
    }


}
PKpG[��cjr*r*$Controller/Router/Route/Hostname.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Route.php 9581 2008-06-01 14:08:03Z martel $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * Hostname Route
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @see        http://manuals.rubyonrails.com/read/chapter/65
 */
class Zend_Controller_Router_Route_Hostname extends Zend_Controller_Router_Route_Abstract
{

    protected $_hostVariable   = ':';
    protected $_regexDelimiter = '#';
    protected $_defaultRegex   = null;

    /**
     * Holds names of all route's pattern variable names. Array index holds a position in host.
     * @var array
     */
    protected $_variables = array();

    /**
     * Holds Route patterns for all host parts. In case of a variable it stores it's regex
     * requirement or null. In case of a static part, it holds only it's direct value.
     * @var array
     */
    protected $_parts = array();

    /**
     * Holds user submitted default values for route's variables. Name and value pairs.
     * @var array
     */
    protected $_defaults = array();

    /**
     * Holds user submitted regular expression patterns for route's variables' values.
     * Name and value pairs.
     * @var array
     */
    protected $_requirements = array();

    /**
     * Default scheme
     * @var string
     */
    protected $_scheme = null;

    /**
     * Associative array filled on match() that holds matched path values
     * for given variable names.
     * @var array
     */
    protected $_values = array();

    /**
     * Current request object
     *
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request;

    /**
     * Helper var that holds a count of route pattern's static parts
     * for validation
     * @var int
     */
    private $_staticCount = 0;

    /**
     * Set the request object
     *
     * @param  Zend_Controller_Request_Abstract|null $request
     * @return void
     */
    public function setRequest(Zend_Controller_Request_Abstract $request = null)
    {
        $this->_request = $request;
    }

    /**
     * Get the request object
     *
     * @return Zend_Controller_Request_Abstract $request
     */
    public function getRequest()
    {
        if ($this->_request === null) {
            require_once 'Zend/Controller/Front.php';
            $this->_request = Zend_Controller_Front::getInstance()->getRequest();
        }

        return $this->_request;
    }

    /**
     * Instantiates route based on passed Zend_Config structure
     *
     * @param Zend_Config $config Configuration object
     */
    public static function getInstance(Zend_Config $config)
    {
        $reqs   = ($config->reqs instanceof Zend_Config) ? $config->reqs->toArray() : array();
        $defs   = ($config->defaults instanceof Zend_Config) ? $config->defaults->toArray() : array();
        $scheme = (isset($config->scheme)) ? $config->scheme : null;
        return new self($config->route, $defs, $reqs, $scheme);
    }

    /**
     * Prepares the route for mapping by splitting (exploding) it
     * to a corresponding atomic parts. These parts are assigned
     * a position which is later used for matching and preparing values.
     *
     * @param string $route Map used to match with later submitted hostname
     * @param array  $defaults Defaults for map variables with keys as variable names
     * @param array  $reqs Regular expression requirements for variables (keys as variable names)
     * @param string $scheme
     */
    public function __construct($route, $defaults = array(), $reqs = array(), $scheme = null)
    {
        $route               = trim($route, '.');
        $this->_defaults     = (array) $defaults;
        $this->_requirements = (array) $reqs;
        $this->_scheme       = $scheme;

        if ($route != '') {
            foreach (explode('.', $route) as $pos => $part) {
                if (substr($part, 0, 1) == $this->_hostVariable) {
                    $name = substr($part, 1);
                    $this->_parts[$pos] = (isset($reqs[$name]) ? $reqs[$name] : $this->_defaultRegex);
                    $this->_variables[$pos] = $name;
                } else {
                    $this->_parts[$pos] = $part;
                    $this->_staticCount++;
                }
            }
        }
    }

    /**
     * Matches a user submitted path with parts defined by a map. Assigns and
     * returns an array of variables on a successful match.
     *
     * @param Zend_Controller_Request_Http $request Request to get the host from
     * @return array|false An array of assigned values or a false on a mismatch
     */
    public function match($request)
    {
        // Check the scheme if required
        if ($this->_scheme !== null) {
            $scheme = $request->getScheme();

            if ($scheme !== $this->_scheme) {
                return false;
            }
        }

        // Get the host and remove unnecessary port information
        $host = $request->getHttpHost();
        if (preg_match('#:\d+$#', $host, $result) === 1) {
            $host = substr($host, 0, -strlen($result[0]));
        }

        $hostStaticCount = 0;
        $values = array();

        $host = trim($host, '.');

        if ($host != '') {
            $host = explode('.', $host);

            foreach ($host as $pos => $hostPart) {
                // Host is longer than a route, it's not a match
                if (!array_key_exists($pos, $this->_parts)) {
                    return false;
                }

                $name = isset($this->_variables[$pos]) ? $this->_variables[$pos] : null;
                $hostPart = urldecode($hostPart);

                // If it's a static part, match directly
                if ($name === null && $this->_parts[$pos] != $hostPart) {
                    return false;
                }

                // If it's a variable with requirement, match a regex. If not - everything matches
                if ($this->_parts[$pos] !== null && !preg_match($this->_regexDelimiter . '^' . $this->_parts[$pos] . '$' . $this->_regexDelimiter . 'iu', $hostPart)) {
                    return false;
                }

                // If it's a variable store it's value for later
                if ($name !== null) {
                    $values[$name] = $hostPart;
                } else {
                    $hostStaticCount++;
                }
            }
        }

        // Check if all static mappings have been matched
        if ($this->_staticCount != $hostStaticCount) {
            return false;
        }

        $return = $values + $this->_defaults;

        // Check if all map variables have been initialized
        foreach ($this->_variables as $var) {
            if (!array_key_exists($var, $return)) {
                return false;
            }
        }

        $this->_values = $values;

        return $return;

    }

    /**
     * Assembles user submitted parameters forming a hostname defined by this route
     *
     * @param  array $data An array of variable and value pairs used as parameters
     * @param  boolean $reset Whether or not to set route defaults with those provided in $data
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = false)
    {
        $host = array();
        $flag = false;

        foreach ($this->_parts as $key => $part) {
            $name = isset($this->_variables[$key]) ? $this->_variables[$key] : null;

            $useDefault = false;
            if (isset($name) && array_key_exists($name, $data) && $data[$name] === null) {
                $useDefault = true;
            }

            if (isset($name)) {
                if (isset($data[$name]) && !$useDefault) {
                    $host[$key] = $data[$name];
                    unset($data[$name]);
                } elseif (!$reset && !$useDefault && isset($this->_values[$name])) {
                    $host[$key] = $this->_values[$name];
                } elseif (isset($this->_defaults[$name])) {
                    $host[$key] = $this->_defaults[$name];
                } else {
                    require_once 'Zend/Controller/Router/Exception.php';
                    throw new Zend_Controller_Router_Exception($name . ' is not specified');
                }
            } else {
                $host[$key] = $part;
            }
        }

        $return = '';

        foreach (array_reverse($host, true) as $key => $value) {
            if ($flag || !isset($this->_variables[$key]) || $value !== $this->getDefault($this->_variables[$key])) {
                if ($encode) $value = urlencode($value);
                $return = '.' . $value . $return;
                $flag = true;
            }
        }

        $url = trim($return, '.');

        if ($this->_scheme !== null) {
            $scheme = $this->_scheme;
        } else {
            $request = $this->getRequest();
            if ($request instanceof Zend_Controller_Request_Http) {
                $scheme = $request->getScheme();
            } else {
                $scheme = 'http';
            }
        }

        $hostname = implode('.', $host);
        $url      = $scheme . '://' . $url;

        return $url;
    }

    /**
     * Return a single parameter of route's defaults
     *
     * @param string $name Array key of the parameter
     * @return string Previously set default
     */
    public function getDefault($name) {
        if (isset($this->_defaults[$name])) {
            return $this->_defaults[$name];
        }
        return null;
    }

    /**
     * Return an array of defaults
     *
     * @return array Route defaults
     */
    public function getDefaults() {
        return $this->_defaults;
    }

    /**
     * Get all variables which are used by the route
     *
     * @return array
     */
    public function getVariables()
    {
        return $this->_variables;
    }
}
PKpG[�s[H!H!"Controller/Router/Route/Module.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Module.php 12310 2008-11-05 20:49:16Z dasprid $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * Module Route
 *
 * Default route for module functionality
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @see        http://manuals.rubyonrails.com/read/chapter/65
 */
class Zend_Controller_Router_Route_Module extends Zend_Controller_Router_Route_Abstract
{
    /**
     * URI delimiter
     */
    const URI_DELIMITER = '/';

    /**
     * Default values for the route (ie. module, controller, action, params)
     * @var array
     */
    protected $_defaults;

    protected $_values      = array();
    protected $_moduleValid = false;
    protected $_keysSet     = false;

    /**#@+
     * Array keys to use for module, controller, and action. Should be taken out of request.
     * @var string
     */
    protected $_moduleKey     = 'module';
    protected $_controllerKey = 'controller';
    protected $_actionKey     = 'action';
    /**#@-*/

    /**
     * @var Zend_Controller_Dispatcher_Interface
     */
    protected $_dispatcher;

    /**
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request;

    public function getVersion() {
        return 1;
    }

    /**
     * Instantiates route based on passed Zend_Config structure
     */
    public static function getInstance(Zend_Config $config)
    {
        $defs = ($config->defaults instanceof Zend_Config) ? $config->defaults->toArray() : array();
        return new self($defs);
    }

    /**
     * Constructor
     *
     * @param array $defaults Defaults for map variables with keys as variable names
     * @param Zend_Controller_Dispatcher_Interface $dispatcher Dispatcher object
     * @param Zend_Controller_Request_Abstract $request Request object
     */
    public function __construct(array $defaults = array(),
                Zend_Controller_Dispatcher_Interface $dispatcher = null,
                Zend_Controller_Request_Abstract $request = null)
    {
        $this->_defaults = $defaults;

        if (isset($request)) {
            $this->_request = $request;
        }

        if (isset($dispatcher)) {
            $this->_dispatcher = $dispatcher;
        }
    }

    /**
     * Set request keys based on values in request object
     *
     * @return void
     */
    protected function _setRequestKeys()
    {
        if (null !== $this->_request) {
            $this->_moduleKey     = $this->_request->getModuleKey();
            $this->_controllerKey = $this->_request->getControllerKey();
            $this->_actionKey     = $this->_request->getActionKey();
        }

        if (null !== $this->_dispatcher) {
            $this->_defaults += array(
                $this->_controllerKey => $this->_dispatcher->getDefaultControllerName(),
                $this->_actionKey     => $this->_dispatcher->getDefaultAction(),
                $this->_moduleKey     => $this->_dispatcher->getDefaultModule()
            );
        }

        $this->_keysSet = true;
    }

    /**
     * Matches a user submitted path. Assigns and returns an array of variables
     * on a successful match.
     *
     * If a request object is registered, it uses its setModuleName(),
     * setControllerName(), and setActionName() accessors to set those values.
     * Always returns the values as an array.
     *
     * @param string $path Path used to match against this routing map
     * @return array An array of assigned values or a false on a mismatch
     */
    public function match($path)
    {
        $this->_setRequestKeys();

        $values = array();
        $params = array();
        $path   = trim($path, self::URI_DELIMITER);

        if ($path != '') {

            $path = explode(self::URI_DELIMITER, $path);

            if ($this->_dispatcher && $this->_dispatcher->isValidModule($path[0])) {
                $values[$this->_moduleKey] = array_shift($path);
                $this->_moduleValid = true;
            }

            if (count($path) && !empty($path[0])) {
                $values[$this->_controllerKey] = array_shift($path);
            }

            if (count($path) && !empty($path[0])) {
                $values[$this->_actionKey] = array_shift($path);
            }

            if ($numSegs = count($path)) {
                for ($i = 0; $i < $numSegs; $i = $i + 2) {
                    $key = urldecode($path[$i]);
                    $val = isset($path[$i + 1]) ? urldecode($path[$i + 1]) : null;
                    $params[$key] = (isset($params[$key]) ? (array_merge((array) $params[$key], array($val))): $val);
                }
            }
        }

        $this->_values = $values + $params;

        return $this->_values + $this->_defaults;
    }

    /**
     * Assembles user submitted parameters forming a URL path defined by this route
     *
     * @param array $data An array of variable and value pairs used as parameters
     * @param bool $reset Weither to reset the current params
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = true)
    {
        if (!$this->_keysSet) {
            $this->_setRequestKeys();
        }

        $params = (!$reset) ? $this->_values : array();

        foreach ($data as $key => $value) {
            if ($value !== null) {
                $params[$key] = $value;
            } elseif (isset($params[$key])) {
                unset($params[$key]);
            }
        }

        $params += $this->_defaults;

        $url = '';

        if ($this->_moduleValid || array_key_exists($this->_moduleKey, $data)) {
            if ($params[$this->_moduleKey] != $this->_defaults[$this->_moduleKey]) {
                $module = $params[$this->_moduleKey];
            }
        }
        unset($params[$this->_moduleKey]);

        $controller = $params[$this->_controllerKey];
        unset($params[$this->_controllerKey]);

        $action = $params[$this->_actionKey];
        unset($params[$this->_actionKey]);

        foreach ($params as $key => $value) {
            if (is_array($value)) {
                foreach ($value as $arrayValue) {
                    if ($encode) $arrayValue = urlencode($arrayValue);
                    $url .= '/' . $key;
                    $url .= '/' . $arrayValue;
                }
            } else {
                if ($encode) $value = urlencode($value);
                $url .= '/' . $key;
                $url .= '/' . $value;
            }
        }

        if (!empty($url) || $action !== $this->_defaults[$this->_actionKey]) {
            if ($encode) $action = urlencode($action);
            $url = '/' . $action . $url;
        }

        if (!empty($url) || $controller !== $this->_defaults[$this->_controllerKey]) {
            if ($encode) $controller = urlencode($controller);
            $url = '/' . $controller . $url;
        }

        if (isset($module)) {
            if ($encode) $module = urlencode($module);
            $url = '/' . $module . $url;
        }

        return ltrim($url, self::URI_DELIMITER);
    }

    /**
     * Return a single parameter of route's defaults
     *
     * @param string $name Array key of the parameter
     * @return string Previously set default
     */
    public function getDefault($name) {
        if (isset($this->_defaults[$name])) {
            return $this->_defaults[$name];
        }
    }

    /**
     * Return an array of defaults
     *
     * @return array Route defaults
     */
    public function getDefaults() {
        return $this->_defaults;
    }

}
PKpG[P]�
�
"Controller/Router/Route/Static.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Route.php 1847 2006-11-23 11:36:41Z martel $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * StaticRoute is used for managing static URIs.
 *
 * It's a lot faster compared to the standard Route implementation.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Router_Route_Static extends Zend_Controller_Router_Route_Abstract
{

    protected $_route = null;
    protected $_defaults = array();

    public function getVersion() {
        return 1;
    }
    
    /**
     * Instantiates route based on passed Zend_Config structure
     *
     * @param Zend_Config $config Configuration object
     */
    public static function getInstance(Zend_Config $config)
    {
        $defs = ($config->defaults instanceof Zend_Config) ? $config->defaults->toArray() : array();
        return new self($config->route, $defs);
    }

    /**
     * Prepares the route for mapping.
     *
     * @param string $route Map used to match with later submitted URL path
     * @param array $defaults Defaults for map variables with keys as variable names
     */
    public function __construct($route, $defaults = array())
    {
        $this->_route = trim($route, '/');
        $this->_defaults = (array) $defaults;
    }

    /**
     * Matches a user submitted path with a previously defined route.
     * Assigns and returns an array of defaults on a successful match.
     *
     * @param string $path Path used to match against this routing map
     * @return array|false An array of assigned values or a false on a mismatch
     */
    public function match($path)
    {
        if (trim($path, '/') == $this->_route) {
            return $this->_defaults;
        }
        return false;
    }

    /**
     * Assembles a URL path defined by this route
     *
     * @param array $data An array of variable and value pairs used as parameters
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = false)
    {
        return $this->_route;
    }

    /**
     * Return a single parameter of route's defaults
     *
     * @param string $name Array key of the parameter
     * @return string Previously set default
     */
    public function getDefault($name) {
        if (isset($this->_defaults[$name])) {
            return $this->_defaults[$name];
        }
        return null;
    }

    /**
     * Return an array of defaults
     *
     * @return array Route defaults
     */
    public function getDefaults() {
        return $this->_defaults;
    }

}
PKpG[�N�Ʈ�Controller/Router/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Router_Interface */
require_once 'Zend/Controller/Router/Interface.php';

/**
 * Simple first implementation of a router, to be replaced
 * with rules-based URI processor.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Router_Abstract implements Zend_Controller_Router_Interface
{
    /**
     * Front controller instance
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * Array of invocation parameters to use when instantiating action
     * controllers
     * @var array
     */
    protected $_invokeParams = array();

    /**
     * Constructor
     *
     * @param array $params
     * @return void
     */
    public function __construct(array $params = array())
    {
        $this->setParams($params);
    }

    /**
     * Add or modify a parameter to use when instantiating an action controller
     *
     * @param string $name
     * @param mixed $value
     * @return Zend_Controller_Router
     */
    public function setParam($name, $value)
    {
        $name = (string) $name;
        $this->_invokeParams[$name] = $value;
        return $this;
    }

    /**
     * Set parameters to pass to action controller constructors
     *
     * @param array $params
     * @return Zend_Controller_Router
     */
    public function setParams(array $params)
    {
        $this->_invokeParams = array_merge($this->_invokeParams, $params);
        return $this;
    }

    /**
     * Retrieve a single parameter from the controller parameter stack
     *
     * @param string $name
     * @return mixed
     */
    public function getParam($name)
    {
        if(isset($this->_invokeParams[$name])) {
            return $this->_invokeParams[$name];
        }

        return null;
    }

    /**
     * Retrieve action controller instantiation parameters
     *
     * @return array
     */
    public function getParams()
    {
        return $this->_invokeParams;
    }

    /**
     * Clear the controller parameter stack
     *
     * By default, clears all parameters. If a parameter name is given, clears
     * only that parameter; if an array of parameter names is provided, clears
     * each.
     *
     * @param null|string|array single key or array of keys for params to clear
     * @return Zend_Controller_Router
     */
    public function clearParams($name = null)
    {
        if (null === $name) {
            $this->_invokeParams = array();
        } elseif (is_string($name) && isset($this->_invokeParams[$name])) {
            unset($this->_invokeParams[$name]);
        } elseif (is_array($name)) {
            foreach ($name as $key) {
                if (is_string($key) && isset($this->_invokeParams[$key])) {
                    unset($this->_invokeParams[$key]);
                }
            }
        }

        return $this;
    }

    /**
     * Retrieve Front Controller
     *
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        // Used cache version if found
        if (null !== $this->_frontController) {
            return $this->_frontController;
        }

        require_once 'Zend/Controller/Front.php';
        $this->_frontController = Zend_Controller_Front::getInstance();
        return $this->_frontController;
    }

    /**
     * Set Front Controller
     *
     * @param Zend_Controller_Front $controller
     * @return Zend_Controller_Router_Interface
     */
    public function setFrontController(Zend_Controller_Front $controller)
    {
        $this->_frontController = $controller;
        return $this;
    }

}
PKpG[#��E�0�0Controller/Router/Rewrite.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Rewrite.php 12108 2008-10-24 13:02:56Z dasprid $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Loader */
require_once 'Zend/Loader.php';

/** Zend_Controller_Router_Abstract */
require_once 'Zend/Controller/Router/Abstract.php';

/** Zend_Controller_Router_Route */
require_once 'Zend/Controller/Router/Route.php';

/**
 * Ruby routing based Router.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @see        http://manuals.rubyonrails.com/read/chapter/65
 */
class Zend_Controller_Router_Rewrite extends Zend_Controller_Router_Abstract
{

    /**
     * Whether or not to use default routes
     * @var boolean
     */
    protected $_useDefaultRoutes = true;

    /**
     * Array of routes to match against
     * @var array
     */
    protected $_routes = array();

    /**
     * Currently matched route
     * @var Zend_Controller_Router_Route_Interface
     */
    protected $_currentRoute = null;

    /**
     * Global parameters given to all routes
     * 
     * @var array
     */
    protected $_globalParams = array();
    
    /**
     * Add default routes which are used to mimic basic router behaviour
     */
    public function addDefaultRoutes()
    {
        if (!$this->hasRoute('default')) {

            $dispatcher = $this->getFrontController()->getDispatcher();
            $request = $this->getFrontController()->getRequest();

            require_once 'Zend/Controller/Router/Route/Module.php';
            $compat = new Zend_Controller_Router_Route_Module(array(), $dispatcher, $request);

            $this->_routes = array_merge(array('default' => $compat), $this->_routes);
        }
    }

    /**
     * Add route to the route chain
     * 
     * If route implements Zend_Controller_Request_Aware interface it is initialized with a request object
     *
     * @param string $name Name of the route
     * @param Zend_Controller_Router_Route_Interface Route
     */
    public function addRoute($name, Zend_Controller_Router_Route_Interface $route) 
    {
        if (method_exists($route, 'setRequest')) {
            $route->setRequest($this->getFrontController()->getRequest());
        }
        
        $this->_routes[$name] = $route;
        
        return $this;
    }

    /**
     * Add routes to the route chain
     *
     * @param array $routes Array of routes with names as keys and routes as values
     */
    public function addRoutes($routes) {
        foreach ($routes as $name => $route) {
            $this->addRoute($name, $route);
        }
        return $this;
    }

    /**
     * Create routes out of Zend_Config configuration
     *
     * Example INI:
     * routes.archive.route = "archive/:year/*"
     * routes.archive.defaults.controller = archive
     * routes.archive.defaults.action = show
     * routes.archive.defaults.year = 2000
     * routes.archive.reqs.year = "\d+"
     *
     * routes.news.type = "Zend_Controller_Router_Route_Static"
     * routes.news.route = "news"
     * routes.news.defaults.controller = "news"
     * routes.news.defaults.action = "list"
     *
     * And finally after you have created a Zend_Config with above ini:
     * $router = new Zend_Controller_Router_Rewrite();
     * $router->addConfig($config, 'routes');
     *
     * @param Zend_Config $config Configuration object
     * @param string $section Name of the config section containing route's definitions
     * @throws Zend_Controller_Router_Exception
     */
    public function addConfig(Zend_Config $config, $section = null)
    {
        if ($section !== null) {
            if ($config->{$section} === null) {
                require_once 'Zend/Controller/Router/Exception.php';
                throw new Zend_Controller_Router_Exception("No route configuration in section '{$section}'");
            }
            $config = $config->{$section};
        }
        
        foreach ($config as $name => $info) {
            $route = $this->_getRouteFromConfig($info);
            
            if (isset($info->chains) && $info->chains instanceof Zend_Config) {
                $this->_addChainRoutesFromConfig($name, $route, $info->chains);
            } else {
                $this->addRoute($name, $route);
            }
        }

        return $this;
    }
    
    /**
     * Get a route frm a config instance
     *
     * @param  Zend_Config $info
     * @return Zend_Controller_Router_Route_Interface
     */
    protected function _getRouteFromConfig(Zend_Config $info)
    {
        $class = (isset($info->type)) ? $info->type : 'Zend_Controller_Router_Route';
        Zend_Loader::loadClass($class);
       
        $route = call_user_func(array($class, 'getInstance'), $info);

        return $route;
    }
    
    /**
     * Add chain routes from a config route
     *
     * @todo   Add recursive chaining (not required yet, but later when path
     *         route chaining is done) 
     * 
     * @param  string                                 $name
     * @param  Zend_Controller_Router_Route_Interface $route
     * @param  Zend_Config                            $childRoutesInfo
     * @return void
     */
    protected function _addChainRoutesFromConfig($name,
                                                 Zend_Controller_Router_Route_Interface $route,
                                                 Zend_Config $childRoutesInfo)
    {
        foreach ($childRoutesInfo as $childRouteName => $childRouteInfo) {
            $childRoute = $this->_getRouteFromConfig($childRouteInfo);
            
            $chainRoute = $route->chain($childRoute);
            $chainName  = $name . '-' . $childRouteName;
            
            $this->addRoute($chainName, $chainRoute);
        }
    }

    /**
     * Remove a route from the route chain
     *
     * @param string $name Name of the route
     * @throws Zend_Controller_Router_Exception
     */
    public function removeRoute($name) {
        if (!isset($this->_routes[$name])) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception("Route $name is not defined");
        }
        unset($this->_routes[$name]);
        return $this;
    }

    /**
     * Remove all standard default routes
     *
     * @param Zend_Controller_Router_Route_Interface Route
     */
    public function removeDefaultRoutes() {
        $this->_useDefaultRoutes = false;
        return $this;
    }

    /**
     * Check if named route exists
     *
     * @param string $name Name of the route
     * @return boolean
     */
    public function hasRoute($name)
    {
        return isset($this->_routes[$name]);
    }

    /**
     * Retrieve a named route
     *
     * @param string $name Name of the route
     * @throws Zend_Controller_Router_Exception
     * @return Zend_Controller_Router_Route_Interface Route object
     */
    public function getRoute($name)
    {
        if (!isset($this->_routes[$name])) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception("Route $name is not defined");
        }
        return $this->_routes[$name];
    }

    /**
     * Retrieve a currently matched route
     *
     * @throws Zend_Controller_Router_Exception
     * @return Zend_Controller_Router_Route_Interface Route object
     */
    public function getCurrentRoute()
    {
        if (!isset($this->_currentRoute)) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception("Current route is not defined");
        }
        return $this->getRoute($this->_currentRoute);
    }

    /**
     * Retrieve a name of currently matched route
     *
     * @throws Zend_Controller_Router_Exception
     * @return Zend_Controller_Router_Route_Interface Route object
     */
    public function getCurrentRouteName()
    {
        if (!isset($this->_currentRoute)) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception("Current route is not defined");
        }
        return $this->_currentRoute;
    }

    /**
     * Retrieve an array of routes added to the route chain
     *
     * @return array All of the defined routes
     */
    public function getRoutes()
    {
        return $this->_routes;
    }

    /**
     * Find a matching route to the current PATH_INFO and inject
     * returning values to the Request object.
     *
     * @throws Zend_Controller_Router_Exception
     * @return Zend_Controller_Request_Abstract Request object
     */
    public function route(Zend_Controller_Request_Abstract $request)
    {

        if (!$request instanceof Zend_Controller_Request_Http) {
            require_once 'Zend/Controller/Router/Exception.php';
            throw new Zend_Controller_Router_Exception('Zend_Controller_Router_Rewrite requires a Zend_Controller_Request_Http-based request object');
        }

        if ($this->_useDefaultRoutes) {
            $this->addDefaultRoutes();
        }

        /** Find the matching route */
        foreach (array_reverse($this->_routes) as $name => $route) {
            
            // TODO: Should be an interface method. Hack for 1.0 BC  
            if (!method_exists($route, 'getVersion') || $route->getVersion() == 1) {
                $match = $request->getPathInfo();
            } else {
                $match = $request;
            }
                        
            if ($params = $route->match($match)) {
                $this->_setRequestParams($request, $params);
                $this->_currentRoute = $name;
                break;
            }
        }

        return $request;

    }

    protected function _setRequestParams($request, $params)
    {
        foreach ($params as $param => $value) {

            $request->setParam($param, $value);

            if ($param === $request->getModuleKey()) {
                $request->setModuleName($value);
            }
            if ($param === $request->getControllerKey()) {
                $request->setControllerName($value);
            }
            if ($param === $request->getActionKey()) {
                $request->setActionName($value);
            }

        }
    }

    /**
     * Generates a URL path that can be used in URL creation, redirection, etc.
     * 
     * @param  array $userParams Options passed by a user used to override parameters
     * @param  mixed $name The name of a Route to use
     * @param  bool $reset Whether to reset to the route defaults ignoring URL params
     * @param  bool $encode Tells to encode URL parts on output
     * @throws Zend_Controller_Router_Exception
     * @return string Resulting absolute URL path
     */ 
    public function assemble($userParams, $name = null, $reset = false, $encode = true)
    {
        if ($name == null) {
            try {
                $name = $this->getCurrentRouteName();
            } catch (Zend_Controller_Router_Exception $e) {
                $name = 'default';
            }
        }
        
        $params = array_merge($this->_globalParams, $userParams);
        
        $route = $this->getRoute($name);
        $url   = $route->assemble($params, $reset, $encode);

        if (!preg_match('|^[a-z]+://|', $url)) {
            $url = rtrim($this->getFrontController()->getBaseUrl(), '/') . '/' . $url;
        }

        return $url;
    }
    
    /**
     * Set a global parameter
     * 
     * @param  string $name
     * @param  mixed $value
     * @return Zend_Controller_Router_Rewrite
     */
    public function setGlobalParam($name, $value)
    {
        $this->_globalParams[$name] = $value;
    
        return $this;
    }
}PKpG[�0�(�(Controller/Router/Route.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Route.php 11073 2008-08-26 16:29:59Z dasprid $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Router_Route_Abstract */
require_once 'Zend/Controller/Router/Route/Abstract.php';

/**
 * Route
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @see        http://manuals.rubyonrails.com/read/chapter/65
 */
class Zend_Controller_Router_Route extends Zend_Controller_Router_Route_Abstract
{

    protected $_urlVariable = ':';
    protected $_urlDelimiter = '/';
    protected $_regexDelimiter = '#';
    protected $_defaultRegex = null;

    /**
     * Holds names of all route's pattern variable names. Array index holds a position in URL.
     * @var array
     */
    protected $_variables = array();

    /**
     * Holds Route patterns for all URL parts. In case of a variable it stores it's regex
     * requirement or null. In case of a static part, it holds only it's direct value.
     * In case of a wildcard, it stores an asterisk (*)
     * @var array
     */
    protected $_parts = array();

    /**
     * Holds user submitted default values for route's variables. Name and value pairs.
     * @var array
     */
    protected $_defaults = array();

    /**
     * Holds user submitted regular expression patterns for route's variables' values.
     * Name and value pairs.
     * @var array
     */
    protected $_requirements = array();

    /**
     * Associative array filled on match() that holds matched path values
     * for given variable names.
     * @var array
     */
    protected $_values = array();

    /**
     * Associative array filled on match() that holds wildcard variable
     * names and values.
     * @var array
     */
    protected $_wildcardData = array();

    /**
     * Helper var that holds a count of route pattern's static parts
     * for validation
     * @var int
     */
    protected $_staticCount = 0;

    public function getVersion() {
        return 1;
    }
    
    /**
     * Instantiates route based on passed Zend_Config structure
     *
     * @param Zend_Config $config Configuration object
     */
    public static function getInstance(Zend_Config $config)
    {
        $reqs = ($config->reqs instanceof Zend_Config) ? $config->reqs->toArray() : array();
        $defs = ($config->defaults instanceof Zend_Config) ? $config->defaults->toArray() : array();
        return new self($config->route, $defs, $reqs);
    }

    /**
     * Prepares the route for mapping by splitting (exploding) it
     * to a corresponding atomic parts. These parts are assigned
     * a position which is later used for matching and preparing values.
     *
     * @param string $route Map used to match with later submitted URL path
     * @param array $defaults Defaults for map variables with keys as variable names
     * @param array $reqs Regular expression requirements for variables (keys as variable names)
     */
    public function __construct($route, $defaults = array(), $reqs = array())
    {

        $route = trim($route, $this->_urlDelimiter);
        $this->_defaults = (array) $defaults;
        $this->_requirements = (array) $reqs;

        if ($route != '') {

            foreach (explode($this->_urlDelimiter, $route) as $pos => $part) {

                if (substr($part, 0, 1) == $this->_urlVariable) {
                    $name = substr($part, 1);
                    $this->_parts[$pos] = (isset($reqs[$name]) ? $reqs[$name] : $this->_defaultRegex);
                    $this->_variables[$pos] = $name;
                } else {
                    $this->_parts[$pos] = $part;
                    if ($part != '*') $this->_staticCount++;
                }

            }

        }

    }

    /**
     * Matches a user submitted path with parts defined by a map. Assigns and
     * returns an array of variables on a successful match.
     *
     * @param string $path Path used to match against this routing map
     * @return array|false An array of assigned values or a false on a mismatch
     */
    public function match($path)
    {

        $pathStaticCount = 0;
        $values = array();

        $path = trim($path, $this->_urlDelimiter);
        
        if ($path != '') {

            $path = explode($this->_urlDelimiter, $path);

            foreach ($path as $pos => $pathPart) {

                // Path is longer than a route, it's not a match
                if (!array_key_exists($pos, $this->_parts)) {
                    return false;
                }
                
                // If it's a wildcard, get the rest of URL as wildcard data and stop matching
                if ($this->_parts[$pos] == '*') {
                    $count = count($path);
                    for($i = $pos; $i < $count; $i+=2) {
                        $var = urldecode($path[$i]);
                        if (!isset($this->_wildcardData[$var]) && !isset($this->_defaults[$var]) && !isset($values[$var])) {
                            $this->_wildcardData[$var] = (isset($path[$i+1])) ? urldecode($path[$i+1]) : null;
                        }
                    }
                    break;
                }

                $name = isset($this->_variables[$pos]) ? $this->_variables[$pos] : null;
                $pathPart = urldecode($pathPart);

                // If it's a static part, match directly
                if ($name === null && $this->_parts[$pos] != $pathPart) {
                    return false;
                }

                // If it's a variable with requirement, match a regex. If not - everything matches
                if ($this->_parts[$pos] !== null && !preg_match($this->_regexDelimiter . '^' . $this->_parts[$pos] . '$' . $this->_regexDelimiter . 'iu', $pathPart)) {
                    return false;
                }

                // If it's a variable store it's value for later
                if ($name !== null) {
                    $values[$name] = $pathPart;
                } else {
                    $pathStaticCount++;
                }
                
            }

        }

        // Check if all static mappings have been matched
        if ($this->_staticCount != $pathStaticCount) {
            return false;
        }

        $return = $values + $this->_wildcardData + $this->_defaults;

        // Check if all map variables have been initialized
        foreach ($this->_variables as $var) {
            if (!array_key_exists($var, $return)) {
                return false;
            }
        }

        $this->_values = $values;
        
        return $return;

    }

    /**
     * Assembles user submitted parameters forming a URL path defined by this route
     *
     * @param  array $data An array of variable and value pairs used as parameters
     * @param  boolean $reset Whether or not to set route defaults with those provided in $data
     * @return string Route path with user submitted parameters
     */
    public function assemble($data = array(), $reset = false, $encode = false)
    {

        $url = array();
        $flag = false;

        foreach ($this->_parts as $key => $part) {

            $name = isset($this->_variables[$key]) ? $this->_variables[$key] : null;

            $useDefault = false;
            if (isset($name) && array_key_exists($name, $data) && $data[$name] === null) {
                $useDefault = true;
            }

            if (isset($name)) {

                if (isset($data[$name]) && !$useDefault) {
                    $url[$key] = $data[$name];
                    unset($data[$name]);
                } elseif (!$reset && !$useDefault && isset($this->_values[$name])) {
                    $url[$key] = $this->_values[$name];
                } elseif (!$reset && !$useDefault && isset($this->_wildcardData[$name])) {
                    $url[$key] = $this->_wildcardData[$name];
                } elseif (isset($this->_defaults[$name])) {
                    $url[$key] = $this->_defaults[$name];
                } else {
                    require_once 'Zend/Controller/Router/Exception.php';
                    throw new Zend_Controller_Router_Exception($name . ' is not specified');
                }


            } elseif ($part != '*') {
                $url[$key] = $part;
            } else {
                if (!$reset) $data += $this->_wildcardData;
                foreach ($data as $var => $value) {
                    if ($value !== null) {
                        $url[$key++] = $var;
                        $url[$key++] = $value;
                        $flag = true;
                    }
                }
            }

        }

        $return = '';

        foreach (array_reverse($url, true) as $key => $value) {
            if ($flag || !isset($this->_variables[$key]) || $value !== $this->getDefault($this->_variables[$key])) {
                if ($encode) $value = urlencode($value);
                $return = $this->_urlDelimiter . $value . $return;
                $flag = true;
            }
        }

        return trim($return, $this->_urlDelimiter);

    }

    /**
     * Return a single parameter of route's defaults
     *
     * @param string $name Array key of the parameter
     * @return string Previously set default
     */
    public function getDefault($name) {
        if (isset($this->_defaults[$name])) {
            return $this->_defaults[$name];
        }
        return null;
    }

    /**
     * Return an array of defaults
     *
     * @return array Route defaults
     */
    public function getDefaults() {
        return $this->_defaults;
    }

}
PKpG[�ǣ~��Controller/Router/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Controller_Router_Interface
{
    /**
     * Processes a request and sets its controller and action.  If
     * no route was possible, an exception is thrown.
     *
     * @param  Zend_Controller_Request_Abstract
     * @throws Zend_Controller_Router_Exception
     * @return Zend_Controller_Request_Abstract|boolean
     */
    public function route(Zend_Controller_Request_Abstract $dispatcher);

    /**
     * Generates a URL path that can be used in URL creation, redirection, etc. 
     * 
     * May be passed user params to override ones from URI, Request or even defaults. 
     * If passed parameter has a value of null, it's URL variable will be reset to
     * default. 
     * 
     * If null is passed as a route name assemble will use the current Route or 'default'
     * if current is not yet set.
     * 
     * Reset is used to signal that all parameters should be reset to it's defaults. 
     * Ignoring all URL specified values. User specified params still get precedence.
     * 
     * Encode tells to url encode resulting path parts.     
     *
     * @param  array $userParams Options passed by a user used to override parameters
     * @param  mixed $name The name of a Route to use
     * @param  bool $reset Whether to reset to the route defaults ignoring URL params
     * @param  bool $encode Tells to encode URL parts on output
     * @throws Zend_Controller_Router_Exception
     * @return string Resulting URL path
     */
    public function assemble($userParams, $name = null, $reset = false, $encode = true);
    
    /**
     * Retrieve Front Controller
     *
     * @return Zend_Controller_Front
     */
    public function getFrontController();

    /**
     * Set Front Controller
     *
     * @param Zend_Controller_Front $controller
     * @return Zend_Controller_Router_Interface
     */
    public function setFrontController(Zend_Controller_Front $controller);
    
    /**
     * Add or modify a parameter with which to instantiate any helper objects
     *
     * @param string $name
     * @param mixed $param
     * @return Zend_Controller_Router_Interface
     */
    public function setParam($name, $value);

    /**
     * Set an array of a parameters to pass to helper object constructors
     *
     * @param array $params
     * @return Zend_Controller_Router_Interface
     */
    public function setParams(array $params);

    /**
     * Retrieve a single parameter from the controller parameter stack
     *
     * @param string $name
     * @return mixed
     */
    public function getParam($name);

    /**
     * Retrieve the parameters to pass to helper object constructors
     *
     * @return array
     */
    public function getParams();

    /**
     * Clear the controller parameter stack
     *
     * By default, clears all parameters. If a parameter name is given, clears
     * only that parameter; if an array of parameter names is provided, clears
     * each.
     *
     * @param null|string|array single key or array of keys for params to clear
     * @return Zend_Controller_Router_Interface
     */
    public function clearParams($name = null);
    
}
PKpG[&f<'ttController/Router/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';


/**
 * @package    Zend_Controller
 * @subpackage Router
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Router_Exception extends Zend_Controller_Exception
{}

PKpG[����Controller/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Exception */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Exception extends Zend_Exception
{}

PKpG[SL\�{{#Controller/Dispatcher/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Controller_Request_Abstract
 */
require_once 'Zend/Controller/Request/Abstract.php';

/**
 * Zend_Controller_Response_Abstract
 */
require_once 'Zend/Controller/Response/Abstract.php';

/**
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Controller_Dispatcher_Interface
{
    /**
     * Formats a string into a controller name.  This is used to take a raw
     * controller name, such as one that would be packaged inside a request
     * object, and reformat it to a proper class name that a class extending
     * Zend_Controller_Action would use.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatControllerName($unformatted);

    /**
     * Formats a string into a module name.  This is used to take a raw
     * module name, such as one that would be packaged inside a request
     * object, and reformat it to a proper directory/class name that a class extending
     * Zend_Controller_Action would use.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatModuleName($unformatted);

    /**
     * Formats a string into an action name.  This is used to take a raw
     * action name, such as one that would be packaged inside a request
     * object, and reformat into a proper method name that would be found
     * inside a class extending Zend_Controller_Action.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatActionName($unformatted);

    /**
     * Returns TRUE if an action can be dispatched, or FALSE otherwise.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return boolean
     */
    public function isDispatchable(Zend_Controller_Request_Abstract $request);

    /**
     * Add or modify a parameter with which to instantiate an Action Controller
     *
     * @param string $name
     * @param mixed $value
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function setParam($name, $value);

    /**
     * Set an array of a parameters to pass to the Action Controller constructor
     *
     * @param array $params
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function setParams(array $params);

    /**
     * Retrieve a single parameter from the controller parameter stack
     *
     * @param string $name
     * @return mixed
     */
    public function getParam($name);

    /**
     * Retrieve the parameters to pass to the Action Controller constructor
     *
     * @return array
     */
    public function getParams();

    /**
     * Clear the controller parameter stack
     *
     * By default, clears all parameters. If a parameter name is given, clears
     * only that parameter; if an array of parameter names is provided, clears
     * each.
     *
     * @param null|string|array single key or array of keys for params to clear
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function clearParams($name = null);

    /**
     * Set the response object to use, if any
     *
     * @param Zend_Controller_Response_Abstract|null $response
     * @return void
     */
    public function setResponse(Zend_Controller_Response_Abstract $response = null);

    /**
     * Retrieve the response object, if any
     *
     * @return Zend_Controller_Response_Abstract|null
     */
    public function getResponse();

    /**
     * Add a controller directory to the controller directory stack
     *
     * @param string $path
     * @param string $args
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function addControllerDirectory($path, $args = null);

    /**
     * Set the directory where controller files are stored
     *
     * Specify a string or an array; if an array is specified, all paths will be
     * added.
     *
     * @param string|array $dir
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function setControllerDirectory($path);

    /**
     * Return the currently set directory(ies) for controller file lookup
     *
     * @return array
     */
    public function getControllerDirectory();

    /**
     * Dispatches a request object to a controller/action.  If the action
     * requests a forward to another action, a new request will be returned.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @param  Zend_Controller_Response_Abstract $response
     * @return void
     */
    public function dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response);

    /**
     * Whether or not a given module is valid
     *
     * @param string $module
     * @return boolean
     */
    public function isValidModule($module);

    /**
     * Retrieve the default module name
     * 
     * @return string
     */
    public function getDefaultModule();

    /**
     * Retrieve the default controller name
     * 
     * @return string
     */
    public function getDefaultControllerName();

    /**
     * Retrieve the default action
     * 
     * @return string
     */
    public function getDefaultAction();
}
PKpG[F�Fcc#Controller/Dispatcher/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Dispatcher_Exception extends Zend_Controller_Exception
{}

PKpG[��"&=&="Controller/Dispatcher/Standard.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Loader */
require_once 'Zend/Loader.php';

/** Zend_Controller_Dispatcher_Abstract */
require_once 'Zend/Controller/Dispatcher/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Dispatcher_Standard extends Zend_Controller_Dispatcher_Abstract
{
    /**
     * Current dispatchable directory
     * @var string
     */
    protected $_curDirectory;

    /**
     * Current module (formatted)
     * @var string
     */
    protected $_curModule;

    /**
     * Controller directory(ies)
     * @var array
     */
    protected $_controllerDirectory = array();

    /**
     * Constructor: Set current module to default value
     *
     * @param  array $params
     * @return void
     */
    public function __construct(array $params = array())
    {
        parent::__construct($params);
        $this->_curModule = $this->getDefaultModule();
    }

    /**
     * Add a single path to the controller directory stack
     *
     * @param string $path
     * @param string $module
     * @return Zend_Controller_Dispatcher_Standard
     */
    public function addControllerDirectory($path, $module = null)
    {
        if (null === $module) {
            $module = $this->_defaultModule;
        }

        $module = (string) $module;
        $path   = rtrim((string) $path, '/\\');

        $this->_controllerDirectory[$module] = $path;
        return $this;
    }

    /**
     * Set controller directory
     *
     * @param array|string $directory
     * @return Zend_Controller_Dispatcher_Standard
     */
    public function setControllerDirectory($directory, $module = null)
    {
        $this->_controllerDirectory = array();

        if (is_string($directory)) {
            $this->addControllerDirectory($directory, $module);
        } elseif (is_array($directory)) {
            foreach ((array) $directory as $module => $path) {
                $this->addControllerDirectory($path, $module);
            }
        } else {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Controller directory spec must be either a string or an array');
        }

        return $this;
    }

    /**
     * Return the currently set directories for Zend_Controller_Action class
     * lookup
     *
     * If a module is specified, returns just that directory.
     *
     * @param  string $module Module name
     * @return array|string Returns array of all directories by default, single
     * module directory if module argument provided
     */
    public function getControllerDirectory($module = null)
    {
        if (null === $module) {
            return $this->_controllerDirectory;
        }

        $module = (string) $module;
        if (array_key_exists($module, $this->_controllerDirectory)) {
            return $this->_controllerDirectory[$module];
        }

        return null;
    }

    /**
     * Remove a controller directory by module name
     * 
     * @param  string $module 
     * @return bool
     */
    public function removeControllerDirectory($module)
    {
        $module = (string) $module;
        if (array_key_exists($module, $this->_controllerDirectory)) {
            unset($this->_controllerDirectory[$module]);
            return true;
        }
        return false;
    }

    /**
     * Format the module name.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatModuleName($unformatted)
    {
        if (($this->_defaultModule == $unformatted) && !$this->getParam('prefixDefaultModule')) {
            return $unformatted;
        }

        return ucfirst($this->_formatName($unformatted));
    }

    /**
     * Format action class name
     *
     * @param string $moduleName Name of the current module
     * @param string $className Name of the action class
     * @return string Formatted class name
     */
    public function formatClassName($moduleName, $className)
    {
        return $this->formatModuleName($moduleName) . '_' . $className;
    }

    /**
     * Convert a class name to a filename
     *
     * @param string $class
     * @return string
     */
    public function classToFilename($class)
    {
        return str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
    }

    /**
     * Returns TRUE if the Zend_Controller_Request_Abstract object can be
     * dispatched to a controller.
     *
     * Use this method wisely. By default, the dispatcher will fall back to the
     * default controller (either in the module specified or the global default)
     * if a given controller does not exist. This method returning false does
     * not necessarily indicate the dispatcher will not still dispatch the call.
     *
     * @param Zend_Controller_Request_Abstract $action
     * @return boolean
     */
    public function isDispatchable(Zend_Controller_Request_Abstract $request)
    {
        $className = $this->getControllerClass($request);
        if (!$className) {
            return false;
        }

        if (class_exists($className, false)) {
            return true;
        }

        $fileSpec    = $this->classToFilename($className);
        $dispatchDir = $this->getDispatchDirectory();
        $test        = $dispatchDir . DIRECTORY_SEPARATOR . $fileSpec;
        return Zend_Loader::isReadable($test);
    }

    /**
     * Dispatch to a controller/action
     *
     * By default, if a controller is not dispatchable, dispatch() will throw
     * an exception. If you wish to use the default controller instead, set the
     * param 'useDefaultControllerAlways' via {@link setParam()}.
     *
     * @param Zend_Controller_Request_Abstract $request
     * @param Zend_Controller_Response_Abstract $response
     * @return void
     * @throws Zend_Controller_Dispatcher_Exception
     */
    public function dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response)
    {
        $this->setResponse($response);

        /**
         * Get controller class
         */
        if (!$this->isDispatchable($request)) {
            $controller = $request->getControllerName();
            if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
                require_once 'Zend/Controller/Dispatcher/Exception.php';
                throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');
            }

            $className = $this->getDefaultControllerClass($request);
        } else {
            $className = $this->getControllerClass($request);
            if (!$className) {
                $className = $this->getDefaultControllerClass($request);
            }
        }

        /**
         * Load the controller class file
         */
        $className = $this->loadClass($className);

        /**
         * Instantiate controller with request, response, and invocation
         * arguments; throw exception if it's not an action controller
         */
        $controller = new $className($request, $this->getResponse(), $this->getParams());
        if (!$controller instanceof Zend_Controller_Action) {
            require_once 'Zend/Controller/Dispatcher/Exception.php';
            throw new Zend_Controller_Dispatcher_Exception("Controller '$className' is not an instance of Zend_Controller_Action");
        }

        /**
         * Retrieve the action name
         */
        $action = $this->getActionMethod($request);

        /**
         * Dispatch the method call
         */
        $request->setDispatched(true);

        // by default, buffer output
        $disableOb = $this->getParam('disableOutputBuffering');
        $obLevel   = ob_get_level();
        if (empty($disableOb)) {
            ob_start();
        }

        try {
            $controller->dispatch($action);
        } catch (Exception $e) {
            // Clean output buffer on error
            $curObLevel = ob_get_level();
            if ($curObLevel > $obLevel) {
                do {
                    ob_get_clean();
                    $curObLevel = ob_get_level();
                } while ($curObLevel > $obLevel);
            }

            throw $e;
        }

        if (empty($disableOb)) {
            $content = ob_get_clean();
            $response->appendBody($content);
        }

        // Destroy the page controller instance and reflection objects
        $controller = null;
    }

    /**
     * Load a controller class
     *
     * Attempts to load the controller class file from
     * {@link getControllerDirectory()}.  If the controller belongs to a
     * module, looks for the module prefix to the controller class.
     *
     * @param string $className
     * @return string Class name loaded
     * @throws Zend_Controller_Dispatcher_Exception if class not loaded
     */
    public function loadClass($className)
    {
        $finalClass  = $className;
        if (($this->_defaultModule != $this->_curModule) 
            || $this->getParam('prefixDefaultModule')) 
        {
            $finalClass = $this->formatClassName($this->_curModule, $className);
        }
        if (class_exists($finalClass, false)) {
            return $finalClass;
        }

        $dispatchDir = $this->getDispatchDirectory();
        $loadFile    = $dispatchDir . DIRECTORY_SEPARATOR . $this->classToFilename($className);

        if (!include_once $loadFile) {
            require_once 'Zend/Controller/Dispatcher/Exception.php';
            throw new Zend_Controller_Dispatcher_Exception('Cannot load controller class "' . $className . '" from file "' . $loadFile . "'");
        }

        if (!class_exists($finalClass, false)) {
            require_once 'Zend/Controller/Dispatcher/Exception.php';
            throw new Zend_Controller_Dispatcher_Exception('Invalid controller class ("' . $finalClass . '")');
        }

        return $finalClass;
    }

    /**
     * Get controller class name
     *
     * Try request first; if not found, try pulling from request parameter;
     * if still not found, fallback to default
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return string|false Returns class name on success
     */
    public function getControllerClass(Zend_Controller_Request_Abstract $request)
    {
        $controllerName = $request->getControllerName();
        if (empty($controllerName)) {
            if (!$this->getParam('useDefaultControllerAlways')) {
                return false;
            }
            $controllerName = $this->getDefaultControllerName();
            $request->setControllerName($controllerName);
        }

        $className = $this->formatControllerName($controllerName);

        $controllerDirs      = $this->getControllerDirectory();
        $module = $request->getModuleName();
        if ($this->isValidModule($module)) {
            $this->_curModule    = $module;
            $this->_curDirectory = $controllerDirs[$module];
        } elseif ($this->isValidModule($this->_defaultModule)) {
            $request->setModuleName($this->_defaultModule);
            $this->_curModule    = $this->_defaultModule;
            $this->_curDirectory = $controllerDirs[$this->_defaultModule];
        } else {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('No default module defined for this application');
        }

        return $className;
    }

    /**
     * Determine if a given module is valid
     *
     * @param  string $module
     * @return bool
     */
    public function isValidModule($module)
    {
        if (!is_string($module)) {
            return false;
        }

        $module        = strtolower($module);
        $controllerDir = $this->getControllerDirectory();
        foreach (array_keys($controllerDir) as $moduleName) {
            if ($module == strtolower($moduleName)) {
                return true;
            }
        }

        return false;
    }

    /**
     * Retrieve default controller class
     *
     * Determines whether the default controller to use lies within the
     * requested module, or if the global default should be used.
     *
     * By default, will only use the module default unless that controller does
     * not exist; if this is the case, it falls back to the default controller
     * in the default module.
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return string
     */
    public function getDefaultControllerClass(Zend_Controller_Request_Abstract $request)
    {
        $controller = $this->getDefaultControllerName();
        $default    = $this->formatControllerName($controller);
        $request->setControllerName($controller)
                ->setActionName(null);

        $module              = $request->getModuleName();
        $controllerDirs      = $this->getControllerDirectory();
        $this->_curModule    = $this->_defaultModule;
        $this->_curDirectory = $controllerDirs[$this->_defaultModule];
        if ($this->isValidModule($module)) {
            $found = false;
            if (class_exists($default, false)) {
                $found = true;
            } else {
                $moduleDir = $controllerDirs[$module];
                $fileSpec  = $moduleDir . DIRECTORY_SEPARATOR . $this->classToFilename($default);
                if (Zend_Loader::isReadable($fileSpec)) {
                    $found = true;
                    $this->_curDirectory = $moduleDir;
                }
            }
            if ($found) {
                $request->setModuleName($module);
                $this->_curModule    = $this->formatModuleName($module);
            }
        } else {
            $request->setModuleName($this->_defaultModule);
        }

        return $default;
    }

    /**
     * Return the value of the currently selected dispatch directory (as set by
     * {@link getController()})
     *
     * @return string
     */
    public function getDispatchDirectory()
    {
        return $this->_curDirectory;
    }

    /**
     * Determine the action name
     *
     * First attempt to retrieve from request; then from request params
     * using action key; default to default action
     *
     * Returns formatted action name
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return string
     */
    public function getActionMethod(Zend_Controller_Request_Abstract $request)
    {
        $action = $request->getActionName();
        if (empty($action)) {
            $action = $this->getDefaultAction();
            $request->setActionName($action);
        }

        return $this->formatActionName($action);
    }
}
PKpG[vJm�G.G."Controller/Dispatcher/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Dispatcher_Interface */
require_once 'Zend/Controller/Dispatcher/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Dispatcher
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Dispatcher_Abstract implements Zend_Controller_Dispatcher_Interface
{
    /**
     * Default action
     * @var string
     */
    protected $_defaultAction = 'index';

    /**
     * Default controller
     * @var string
     */
    protected $_defaultController = 'index';

    /**
     * Default module
     * @var string
     */
    protected $_defaultModule = 'default';

    /**
     * Front Controller instance
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * Array of invocation parameters to use when instantiating action
     * controllers
     * @var array
     */
    protected $_invokeParams = array();

    /**
     * Path delimiter character
     * @var string
     */
    protected $_pathDelimiter = '_';

    /**
     * Response object to pass to action controllers, if any
     * @var Zend_Controller_Response_Abstract|null
     */
    protected $_response = null;

    /**
     * Word delimiter characters
     * @var array
     */
    protected $_wordDelimiter = array('-', '.');

    /**
     * Constructor
     *
     * @return void
     */
    public function __construct(array $params = array())
    {
        $this->setParams($params);
    }

    /**
     * Formats a string into a controller name.  This is used to take a raw
     * controller name, such as one stored inside a Zend_Controller_Request_Abstract
     * object, and reformat it to a proper class name that a class extending
     * Zend_Controller_Action would use.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatControllerName($unformatted)
    {
        return ucfirst($this->_formatName($unformatted)) . 'Controller';
    }

    /**
     * Formats a string into an action name.  This is used to take a raw
     * action name, such as one that would be stored inside a Zend_Controller_Request_Abstract
     * object, and reformat into a proper method name that would be found
     * inside a class extending Zend_Controller_Action.
     *
     * @param string $unformatted
     * @return string
     */
    public function formatActionName($unformatted)
    {
        $formatted = $this->_formatName($unformatted, true);
        return strtolower(substr($formatted, 0, 1)) . substr($formatted, 1) . 'Action';
    }

    /**
     * Verify delimiter
     *
     * Verify a delimiter to use in controllers or actions. May be a single
     * string or an array of strings.
     *
     * @param string|array $spec
     * @return array
     * @throws Zend_Controller_Dispatcher_Exception with invalid delimiters
     */
    public function _verifyDelimiter($spec)
    {
        if (is_string($spec)) {
            return (array) $spec;
        } elseif (is_array($spec)) {
            $allStrings = true;
            foreach ($spec as $delim) {
                if (!is_string($delim)) {
                    $allStrings = false;
                    break;
                }
            }

            if (!$allStrings) {
                require_once 'Zend/Controller/Dispatcher/Exception.php';
                throw new Zend_Controller_Dispatcher_Exception('Word delimiter array must contain only strings');
            }

            return $spec;
        }

        require_once 'Zend/Controller/Dispatcher/Exception.php';
        throw new Zend_Controller_Dispatcher_Exception('Invalid word delimiter');
    }

    /**
     * Retrieve the word delimiter character(s) used in
     * controller or action names
     *
     * @return array
     */
    public function getWordDelimiter()
    {
        return $this->_wordDelimiter;
    }

    /**
     * Set word delimiter
     *
     * Set the word delimiter to use in controllers and actions. May be a
     * single string or an array of strings.
     *
     * @param string|array $spec
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setWordDelimiter($spec)
    {
        $spec = $this->_verifyDelimiter($spec);
        $this->_wordDelimiter = $spec;

        return $this;
    }

    /**
     * Retrieve the path delimiter character(s) used in
     * controller names
     *
     * @return array
     */
    public function getPathDelimiter()
    {
        return $this->_pathDelimiter;
    }

    /**
     * Set path delimiter
     *
     * Set the path delimiter to use in controllers. May be a single string or
     * an array of strings.
     *
     * @param string $spec
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setPathDelimiter($spec)
    {
        if (!is_string($spec)) {
            require_once 'Zend/Controller/Dispatcher/Exception.php';
            throw new Zend_Controller_Dispatcher_Exception('Invalid path delimiter');
        }
        $this->_pathDelimiter = $spec;

        return $this;
    }

    /**
     * Formats a string from a URI into a PHP-friendly name.
     *
     * By default, replaces words separated by the word separator character(s)
     * with camelCaps. If $isAction is false, it also preserves replaces words
     * separated by the path separation character with an underscore, making
     * the following word Title cased. All non-alphanumeric characters are
     * removed.
     *
     * @param string $unformatted
     * @param boolean $isAction Defaults to false
     * @return string
     */
    protected function _formatName($unformatted, $isAction = false)
    {
        // preserve directories
        if (!$isAction) {
            $segments = explode($this->getPathDelimiter(), $unformatted);
        } else {
            $segments = (array) $unformatted;
        }

        foreach ($segments as $key => $segment) {
            $segment        = str_replace($this->getWordDelimiter(), ' ', strtolower($segment));
            $segment        = preg_replace('/[^a-z0-9 ]/', '', $segment);
            $segments[$key] = str_replace(' ', '', ucwords($segment));
        }

        return implode('_', $segments);
    }

    /**
     * Retrieve front controller instance
     *
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        if (null === $this->_frontController) {
            require_once 'Zend/Controller/Front.php';
            $this->_frontController = Zend_Controller_Front::getInstance();
        }

        return $this->_frontController;
    }

    /**
     * Set front controller instance
     *
     * @param Zend_Controller_Front $controller
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setFrontController(Zend_Controller_Front $controller)
    {
        $this->_frontController = $controller;
        return $this;
    }

    /**
     * Add or modify a parameter to use when instantiating an action controller
     *
     * @param string $name
     * @param mixed $value
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setParam($name, $value)
    {
        $name = (string) $name;
        $this->_invokeParams[$name] = $value;
        return $this;
    }

    /**
     * Set parameters to pass to action controller constructors
     *
     * @param array $params
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setParams(array $params)
    {
        $this->_invokeParams = array_merge($this->_invokeParams, $params);
        return $this;
    }

    /**
     * Retrieve a single parameter from the controller parameter stack
     *
     * @param string $name
     * @return mixed
     */
    public function getParam($name)
    {
        if(isset($this->_invokeParams[$name])) {
            return $this->_invokeParams[$name];
        }

        return null;
    }

    /**
     * Retrieve action controller instantiation parameters
     *
     * @return array
     */
    public function getParams()
    {
        return $this->_invokeParams;
    }

    /**
     * Clear the controller parameter stack
     *
     * By default, clears all parameters. If a parameter name is given, clears
     * only that parameter; if an array of parameter names is provided, clears
     * each.
     *
     * @param null|string|array single key or array of keys for params to clear
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function clearParams($name = null)
    {
        if (null === $name) {
            $this->_invokeParams = array();
        } elseif (is_string($name) && isset($this->_invokeParams[$name])) {
            unset($this->_invokeParams[$name]);
        } elseif (is_array($name)) {
            foreach ($name as $key) {
                if (is_string($key) && isset($this->_invokeParams[$key])) {
                    unset($this->_invokeParams[$key]);
                }
            }
        }

        return $this;
    }

    /**
     * Set response object to pass to action controllers
     *
     * @param Zend_Controller_Response_Abstract|null $response
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setResponse(Zend_Controller_Response_Abstract $response = null)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Return the registered response object
     *
     * @return Zend_Controller_Response_Abstract|null
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Set the default controller (minus any formatting)
     *
     * @param string $controller
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setDefaultControllerName($controller)
    {
        $this->_defaultController = (string) $controller;
        return $this;
    }

    /**
     * Retrieve the default controller name (minus formatting)
     *
     * @return string
     */
    public function getDefaultControllerName()
    {
        return $this->_defaultController;
    }

    /**
     * Set the default action (minus any formatting)
     *
     * @param string $action
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setDefaultAction($action)
    {
        $this->_defaultAction = (string) $action;
        return $this;
    }

    /**
     * Retrieve the default action name (minus formatting)
     *
     * @return string
     */
    public function getDefaultAction()
    {
        return $this->_defaultAction;
    }

    /**
     * Set the default module
     *
     * @param string $module
     * @return Zend_Controller_Dispatcher_Abstract
     */
    public function setDefaultModule($module)
    {
        $this->_defaultModule = (string) $module;
        return $this;
    }

    /**
     * Retrieve the default module
     *
     * @return string
     */
    public function getDefaultModule()
    {
        return $this->_defaultModule;
    }
}
PKpG[fr���#Controller/Request/HttpTestCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Controller_Request_Http
 */
require_once 'Zend/Controller/Request/Http.php';

/**
 * Zend_Controller_Request_HttpTestCase
 *
 * HTTP request object for use with Zend_Controller family.
 *
 * @uses Zend_Controller_Request_Http
 * @package Zend_Controller
 * @subpackage Request
 */
class Zend_Controller_Request_HttpTestCase extends Zend_Controller_Request_Http
{
    /**
     * Request headers
     * @var array
     */
    protected $_headers = array();

    /**
     * Request method
     * @var string
     */
    protected $_method;

    /**
     * Raw POST body
     * @var string|null
     */
    protected $_rawBody;

    /**
     * Valid request method types
     * @var array
     */
    protected $_validMethodTypes = array(
        'DELETE',
        'GET',
        'HEAD',
        'OPTIONS',
        'POST',
        'PUT',
    );

    /**
     * Clear GET values
     * 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function clearQuery()
    {
        $_GET = array();
        return $this;
    }

    /**
     * Clear POST values
     * 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function clearPost()
    {
        $_POST = array();
        return $this;
    }

    /**
     * Set raw POST body
     * 
     * @param  string $content 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function setRawBody($content)
    {
        $this->_rawBody = (string) $content;
        return $this;
    }

    /**
     * Get RAW POST body
     * 
     * @return string|null
     */
    public function getRawBody()
    {
        return $this->_rawBody;
    }

    /**
     * Clear raw POST body
     * 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function clearRawBody()
    {
        $this->_rawBody = null;
        return $this;
    }

    /**
     * Set a cookie
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function setCookie($key, $value)
    {
        $_COOKIE[(string) $key] = $value;
        return $this;
    }

    /**
     * Set multiple cookies at once
     * 
     * @param array $cookies 
     * @return void
     */
    public function setCookies(array $cookies)
    {
        foreach ($cookies as $key => $value) {
            $_COOKIE[$key] = $value;
        }
        return $this;
    }

    /**
     * Clear all cookies
     * 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function clearCookies()
    {
        $_COOKIE = array();
        return $this;
    }

    /**
     * Set request method
     * 
     * @param  string $type 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function setMethod($type)
    {
        $type = strtoupper(trim((string) $type));
        if (!in_array($type, $this->_validMethodTypes)) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Invalid request method specified');
        }
        $this->_method = $type;
        return $this;
    }

    /**
     * Get request method
     * 
     * @return string|null
     */
    public function getMethod()
    {
        return $this->_method;
    }

    /**
     * Set a request header
     * 
     * @param  string $key 
     * @param  string $value 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function setHeader($key, $value)
    {
        $key = $this->_normalizeHeaderName($key);
        $this->_headers[$key] = (string) $value;
        return $this;
    }

    /**
     * Set request headers
     * 
     * @param  array $headers 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function setHeaders(array $headers)
    {
        foreach ($headers as $key => $value) {
            $this->setHeader($key, $value);
        }
        return $this;
    }

    /**
     * Get request header
     * 
     * @param  string $header 
     * @param  mixed $default 
     * @return string|null
     */
    public function getHeader($header, $default = null)
    {
        $header = $this->_normalizeHeaderName($header);
        if (array_key_exists($header, $this->_headers)) {
            return $this->_headers[$header];
        }
        return $default;
    }

    /**
     * Get all request headers
     * 
     * @return array
     */
    public function getHeaders()
    {
        return $this->_headers;
    }

    /**
     * Clear request headers
     * 
     * @return Zend_Controller_Request_HttpTestCase
     */
    public function clearHeaders()
    {
        $this->_headers = array();
        return $this;
    }

    /**
     * Get REQUEST_URI
     * 
     * @return null|string
     */
    public function getRequestUri()
    {
        return $this->_requestUri;
    }

    /**
     * Normalize a header name for setting and retrieval
     * 
     * @param  string $name 
     * @return string
     */
    protected function _normalizeHeaderName($name)
    {
        $name = strtoupper((string) $name);
        $name = str_replace('-', '_', $name);
        return $name;
    }
}
PKpG[a5Q�� Controller/Request/Apache404.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Request_Exception */
require_once 'Zend/Controller/Request/Exception.php';

/** Zend_Controller_Request_Http */
require_once 'Zend/Controller/Request/Http.php';

/** Zend_Uri */
require_once 'Zend/Uri.php';

/**
 * Zend_Controller_Request_Apache404
 *
 * HTTP request object for use with Zend_Controller family. Extends basic HTTP
 * request object to allow for two edge cases when using Apache:
 * - Using Apache's 404 handler instead of mod_rewrite to direct requests
 * - Using the PT flag in rewrite rules
 *
 * In each case, the URL to check against is found in REDIRECT_URL, not
 * REQUEST_URI.
 *
 * @uses       Zend_Controller_Request_Http
 * @package    Zend_Controller
 * @subpackage Request
 */
class Zend_Controller_Request_Apache404 extends Zend_Controller_Request_Http
{
    public function setRequestUri($requestUri = null)
    {
        $parseUriGetVars = false;
        if ($requestUri === null) {
            if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
                $requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
            } elseif (isset($_SERVER['REDIRECT_URL'])) {  // Check if using mod_rewrite
                $requestUri = $_SERVER['REDIRECT_URL'];
                if (isset($_SERVER['REDIRECT_QUERYSTRING'])) {
                    $parseUriGetVars = $_SERVER['REDIRECT_QUERYSTRING'];
                }
            } elseif (isset($_SERVER['REQUEST_URI'])) {
                $requestUri = $_SERVER['REQUEST_URI'];
            } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
                $requestUri = $_SERVER['ORIG_PATH_INFO'];
                if (!empty($_SERVER['QUERY_STRING'])) {
                    $requestUri .= '?' . $_SERVER['QUERY_STRING'];
                }
            } else {
                return $this;
            }
        } elseif (!is_string($requestUri)) {
            return $this;
        } else {
            if (false !== ($pos = strpos($requestUri, '?'))) {
                $parseUriGetVars = substr($requestUri, $pos + 1);
            }
        }

        if ($parseUriGetVars) {
            // Set GET items, if available
            parse_str($parseUriGetVars, $_GET);
        }

        $this->_requestUri = $requestUri;
        return $this;
    }
}
PKpG[Կ�ZZ Controller/Request/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Request_Exception extends Zend_Controller_Exception
{}

PKpG[�C��@@Controller/Request/Simple.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Request_Abstract */
require_once 'Zend/Controller/Request/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Request_Simple extends Zend_Controller_Request_Abstract
{
    
    public function __construct($action = null, $controller = null, $module = null, array $params = array())
    {
        if ($action) {
            $this->setActionName($action);
        }
        
        if ($controller) {
            $this->setControllerName($controller);
        }
        
        if ($module) {
            $this->setModuleName($module);
        }
        
        if ($params) {
            $this->setParams($params);
        }
    }
    
}
PKpG[J��[Controller/Request/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Request_Abstract
{
    /**
     * Has the action been dispatched?
     * @var boolean
     */
    protected $_dispatched = false;

    /**
     * Module
     * @var string
     */
    protected $_module;

    /**
     * Module key for retrieving module from params
     * @var string
     */
    protected $_moduleKey = 'module';

    /**
     * Controller
     * @var string
     */
    protected $_controller;

    /**
     * Controller key for retrieving controller from params
     * @var string
     */
    protected $_controllerKey = 'controller';

    /**
     * Action
     * @var string
     */
    protected $_action;

    /**
     * Action key for retrieving action from params
     * @var string
     */
    protected $_actionKey = 'action';

    /**
     * Request parameters
     * @var array
     */
    protected $_params = array();

    /**
     * Retrieve the module name
     *
     * @return string
     */
    public function getModuleName()
    {
        if (null === $this->_module) {
            $this->_module = $this->getParam($this->getModuleKey());
        }

        return $this->_module;
    }

    /**
     * Set the module name to use
     *
     * @param string $value
     * @return Zend_Controller_Request_Abstract
     */
    public function setModuleName($value)
    {
        $this->_module = $value;
        return $this;
    }

    /**
     * Retrieve the controller name
     *
     * @return string
     */
    public function getControllerName()
    {
        if (null === $this->_controller) {
            $this->_controller = $this->getParam($this->getControllerKey());
        }

        return $this->_controller;
    }

    /**
     * Set the controller name to use
     *
     * @param string $value
     * @return Zend_Controller_Request_Abstract
     */
    public function setControllerName($value)
    {
        $this->_controller = $value;
        return $this;
    }

    /**
     * Retrieve the action name
     *
     * @return string
     */
    public function getActionName()
    {
        if (null === $this->_action) {
            $this->_action = $this->getParam($this->getActionKey());
        }

        return $this->_action;
    }

    /**
     * Set the action name
     *
     * @param string $value
     * @return Zend_Controller_Request_Abstract
     */
    public function setActionName($value)
    {
        $this->_action = $value;
        /**
         * @see ZF-3465
         */
        if (null === $value) {
            $this->setParam($this->getActionKey(), $value);
        }
        return $this;
    }

    /**
     * Retrieve the module key
     *
     * @return string
     */
    public function getModuleKey()
    {
        return $this->_moduleKey;
    }

    /**
     * Set the module key
     *
     * @param string $key
     * @return Zend_Controller_Request_Abstract
     */
    public function setModuleKey($key)
    {
        $this->_moduleKey = (string) $key;
        return $this;
    }

    /**
     * Retrieve the controller key
     *
     * @return string
     */
    public function getControllerKey()
    {
        return $this->_controllerKey;
    }

    /**
     * Set the controller key
     *
     * @param string $key
     * @return Zend_Controller_Request_Abstract
     */
    public function setControllerKey($key)
    {
        $this->_controllerKey = (string) $key;
        return $this;
    }

    /**
     * Retrieve the action key
     *
     * @return string
     */
    public function getActionKey()
    {
        return $this->_actionKey;
    }

    /**
     * Set the action key
     *
     * @param string $key
     * @return Zend_Controller_Request_Abstract
     */
    public function setActionKey($key)
    {
        $this->_actionKey = (string) $key;
        return $this;
    }

    /**
     * Get an action parameter
     *
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed
     */
    public function getParam($key, $default = null)
    {
        $key = (string) $key;
        if (isset($this->_params[$key])) {
            return $this->_params[$key];
        }

        return $default;
    }

    /**
     * Retrieve only user params (i.e, any param specific to the object and not the environment)
     *
     * @return array
     */
    public function getUserParams()
    {
        return $this->_params;
    }

    /**
     * Retrieve a single user param (i.e, a param specific to the object and not the environment)
     *
     * @param string $key
     * @param string $default Default value to use if key not found
     * @return mixed
     */
    public function getUserParam($key, $default = null)
    {
        if (isset($this->_params[$key])) {
            return $this->_params[$key];
        }

        return $default;
    }

    /**
     * Set an action parameter
     *
     * A $value of null will unset the $key if it exists
     *
     * @param string $key
     * @param mixed $value
     * @return Zend_Controller_Request_Abstract
     */
    public function setParam($key, $value)
    {
        $key = (string) $key;

        if ((null === $value) && isset($this->_params[$key])) {
            unset($this->_params[$key]);
        } elseif (null !== $value) {
            $this->_params[$key] = $value;
        }

        return $this;
    }

    /**
     * Get all action parameters
     *
     * @return array
     */
     public function getParams()
     {
         return $this->_params;
     }

    /**
     * Set action parameters en masse; does not overwrite
     *
     * Null values will unset the associated key.
     *
     * @param array $array
     * @return Zend_Controller_Request_Abstract
     */
    public function setParams(array $array)
    {
        $this->_params = $this->_params + (array) $array;

        foreach ($this->_params as $key => $value) {
            if (null === $value) {
                unset($this->_params[$key]);
            }
        }

        return $this;
    }

    /**
     * Set flag indicating whether or not request has been dispatched
     *
     * @param boolean $flag
     * @return Zend_Controller_Request_Abstract
     */
    public function setDispatched($flag = true)
    {
        $this->_dispatched = $flag ? true : false;
        return $this;
    }

    /**
     * Determine if the request has been dispatched
     *
     * @return boolean
     */
    public function isDispatched()
    {
        return $this->_dispatched;
    }
}
PKpG[K��o
l
lController/Request/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Request_Exception */
require_once 'Zend/Controller/Request/Exception.php';

/** Zend_Controller_Request_Abstract */
require_once 'Zend/Controller/Request/Abstract.php';

/** Zend_Uri */
require_once 'Zend/Uri.php';

/**
 * Zend_Controller_Request_Http
 *
 * HTTP request object for use with Zend_Controller family.
 *
 * @uses Zend_Controller_Request_Abstract
 * @package Zend_Controller
 * @subpackage Request
 */
class Zend_Controller_Request_Http extends Zend_Controller_Request_Abstract
{
    /**
     * Scheme for http
     *
     */
    const SCHEME_HTTP  = 'http';
    
    /**
     * Scheme for https
     *
     */
    const SCHEME_HTTPS = 'https';

    /**
     * Allowed parameter sources
     * @var array
     */
    protected $_paramSources = array('_GET', '_POST');

    /**
     * REQUEST_URI
     * @var string;
     */
    protected $_requestUri;

    /**
     * Base URL of request
     * @var string
     */
    protected $_baseUrl = null;

    /**
     * Base path of request
     * @var string
     */
    protected $_basePath = null;

    /**
     * PATH_INFO
     * @var string
     */
    protected $_pathInfo = '';

    /**
     * Instance parameters
     * @var array
     */
    protected $_params = array();

    /**
     * Alias keys for request parameters
     * @var array
     */
    protected $_aliases = array();

    /**
     * Constructor
     *
     * If a $uri is passed, the object will attempt to populate itself using
     * that information.
     *
     * @param string|Zend_Uri $uri
     * @return void
     * @throws Zend_Controller_Request_Exception when invalid URI passed
     */
    public function __construct($uri = null)
    {
        if (null !== $uri) {
            if (!$uri instanceof Zend_Uri) {
                $uri = Zend_Uri::factory($uri);
            }
            if ($uri->valid()) {
                $path  = $uri->getPath();
                $query = $uri->getQuery();
                if (!empty($query)) {
                    $path .= '?' . $query;
                }

                $this->setRequestUri($path);
            } else {
                require_once 'Zend/Controller/Request/Exception.php';
                throw new Zend_Controller_Request_Exception('Invalid URI provided to constructor');
            }
        } else {
            $this->setRequestUri();
        }
    }

    /**
     * Access values contained in the superglobals as public members
     * Order of precedence: 1. GET, 2. POST, 3. COOKIE, 4. SERVER, 5. ENV
     *
     * @see http://msdn.microsoft.com/en-us/library/system.web.httprequest.item.aspx
     * @param string $key
     * @return mixed
     */
    public function __get($key)
    {
        switch (true) {
            case isset($this->_params[$key]):
                return $this->_params[$key];
            case isset($_GET[$key]):
                return $_GET[$key];
            case isset($_POST[$key]):
                return $_POST[$key];
            case isset($_COOKIE[$key]):
                return $_COOKIE[$key];
            case ($key == 'REQUEST_URI'):
                return $this->getRequestUri();
            case ($key == 'PATH_INFO'):
                return $this->getPathInfo();
            case isset($_SERVER[$key]):
                return $_SERVER[$key];
            case isset($_ENV[$key]):
                return $_ENV[$key];
            default:
                return null;
        }
    }

    /**
     * Alias to __get
     *
     * @param string $key
     * @return mixed
     */
    public function get($key)
    {
        return $this->__get($key);
    }

    /**
     * Set values
     *
     * In order to follow {@link __get()}, which operates on a number of
     * superglobals, setting values through overloading is not allowed and will
     * raise an exception. Use setParam() instead.
     *
     * @param string $key
     * @param mixed $value
     * @return void
     * @throws Zend_Controller_Request_Exception
     */
    public function __set($key, $value)
    {
        require_once 'Zend/Controller/Request/Exception.php';
        throw new Zend_Controller_Request_Exception('Setting values in superglobals not allowed; please use setParam()');
    }

    /**
     * Alias to __set()
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function set($key, $value)
    {
        return $this->__set($key, $value);
    }

    /**
     * Check to see if a property is set
     *
     * @param string $key
     * @return boolean
     */
    public function __isset($key)
    {
        switch (true) {
            case isset($this->_params[$key]):
                return true;
            case isset($_GET[$key]):
                return true;
            case isset($_POST[$key]):
                return true;
            case isset($_COOKIE[$key]):
                return true;
            case isset($_SERVER[$key]):
                return true;
            case isset($_ENV[$key]):
                return true;
            default:
                return false;
        }
    }

    /**
     * Alias to __isset()
     *
     * @param string $key
     * @return boolean
     */
    public function has($key)
    {
        return $this->__isset($key);
    }

    /**
     * Set GET values
     * 
     * @param  string|array $spec 
     * @param  null|mixed $value 
     * @return Zend_Controller_Request_Http
     */
    public function setQuery($spec, $value = null)
    {
        if ((null === $value) && !is_array($spec)) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Invalid value passed to setQuery(); must be either array of values or key/value pair');
        }
        if ((null === $value) && is_array($spec)) {
            foreach ($spec as $key => $value) {
                $this->setQuery($key, $value);
            }
            return $this;
        }
        $_GET[(string) $spec] = $value;
        return $this;
    }

    /**
     * Retrieve a member of the $_GET superglobal
     *
     * If no $key is passed, returns the entire $_GET array.
     *
     * @todo How to retrieve from nested arrays
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed Returns null if key does not exist
     */
    public function getQuery($key = null, $default = null)
    {
        if (null === $key) {
            return $_GET;
        }

        return (isset($_GET[$key])) ? $_GET[$key] : $default;
    }

    /**
     * Set POST values
     * 
     * @param  string|array $spec 
     * @param  null|mixed $value 
     * @return Zend_Controller_Request_Http
     */
    public function setPost($spec, $value = null)
    {
        if ((null === $value) && !is_array($spec)) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Invalid value passed to setPost(); must be either array of values or key/value pair');
        }
        if ((null === $value) && is_array($spec)) {
            foreach ($spec as $key => $value) {
                $this->setPost($key, $value);
            }
            return $this;
        }
        $_POST[(string) $spec] = $value;
        return $this;
    }

    /**
     * Retrieve a member of the $_POST superglobal
     *
     * If no $key is passed, returns the entire $_POST array.
     *
     * @todo How to retrieve from nested arrays
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed Returns null if key does not exist
     */
    public function getPost($key = null, $default = null)
    {
        if (null === $key) {
            return $_POST;
        }

        return (isset($_POST[$key])) ? $_POST[$key] : $default;
    }

    /**
     * Retrieve a member of the $_COOKIE superglobal
     *
     * If no $key is passed, returns the entire $_COOKIE array.
     *
     * @todo How to retrieve from nested arrays
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed Returns null if key does not exist
     */
    public function getCookie($key = null, $default = null)
    {
        if (null === $key) {
            return $_COOKIE;
        }

        return (isset($_COOKIE[$key])) ? $_COOKIE[$key] : $default;
    }

    /**
     * Retrieve a member of the $_SERVER superglobal
     *
     * If no $key is passed, returns the entire $_SERVER array.
     *
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed Returns null if key does not exist
     */
    public function getServer($key = null, $default = null)
    {
        if (null === $key) {
            return $_SERVER;
        }

        return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
    }

    /**
     * Retrieve a member of the $_ENV superglobal
     *
     * If no $key is passed, returns the entire $_ENV array.
     *
     * @param string $key
     * @param mixed $default Default value to use if key not found
     * @return mixed Returns null if key does not exist
     */
    public function getEnv($key = null, $default = null)
    {
        if (null === $key) {
            return $_ENV;
        }

        return (isset($_ENV[$key])) ? $_ENV[$key] : $default;
    }

    /**
     * Set the REQUEST_URI on which the instance operates
     *
     * If no request URI is passed, uses the value in $_SERVER['REQUEST_URI'],
     * $_SERVER['HTTP_X_REWRITE_URL'], or $_SERVER['ORIG_PATH_INFO'] + $_SERVER['QUERY_STRING'].
     *
     * @param string $requestUri
     * @return Zend_Controller_Request_Http
     */
    public function setRequestUri($requestUri = null)
    {
        if ($requestUri === null) {
            if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
                $requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
            } elseif (isset($_SERVER['REQUEST_URI'])) {
                $requestUri = $_SERVER['REQUEST_URI'];
                if (isset($_SERVER['HTTP_HOST']) && strstr($requestUri, $_SERVER['HTTP_HOST'])) {
                    $pathInfo    = parse_url($requestUri, PHP_URL_PATH);
                    $queryString = parse_url($requestUri, PHP_URL_QUERY);
                    $requestUri  = $pathInfo
                                 . ((empty($queryString)) ? '' : '?' . $queryString);
                }
            } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
                $requestUri = $_SERVER['ORIG_PATH_INFO'];
                if (!empty($_SERVER['QUERY_STRING'])) {
                    $requestUri .= '?' . $_SERVER['QUERY_STRING'];
                }
            } else {
                return $this;
            }
        } elseif (!is_string($requestUri)) {
            return $this;
        } else {
            // Set GET items, if available
            if (false !== ($pos = strpos($requestUri, '?'))) {
                // Get key => value pairs and set $_GET
                $query = substr($requestUri, $pos + 1);
                parse_str($query, $vars);
                $this->setQuery($vars);
            }
        }

        $this->_requestUri = $requestUri;
        return $this;
    }

    /**
     * Returns the REQUEST_URI taking into account
     * platform differences between Apache and IIS
     *
     * @return string
     */
    public function getRequestUri()
    {
        if (empty($this->_requestUri)) {
            $this->setRequestUri();
        }

        return $this->_requestUri;
    }

    /**
     * Set the base URL of the request; i.e., the segment leading to the script name
     *
     * E.g.:
     * - /admin
     * - /myapp
     * - /subdir/index.php
     *
     * Do not use the full URI when providing the base. The following are
     * examples of what not to use:
     * - http://example.com/admin (should be just /admin)
     * - http://example.com/subdir/index.php (should be just /subdir/index.php)
     *
     * If no $baseUrl is provided, attempts to determine the base URL from the
     * environment, using SCRIPT_FILENAME, SCRIPT_NAME, PHP_SELF, and
     * ORIG_SCRIPT_NAME in its determination.
     *
     * @param mixed $baseUrl
     * @return Zend_Controller_Request_Http
     */
    public function setBaseUrl($baseUrl = null)
    {
        if ((null !== $baseUrl) && !is_string($baseUrl)) {
            return $this;
        }

        if ($baseUrl === null) {
            $filename = (isset($_SERVER['SCRIPT_FILENAME'])) ? basename($_SERVER['SCRIPT_FILENAME']) : '';

            if (isset($_SERVER['SCRIPT_NAME']) && basename($_SERVER['SCRIPT_NAME']) === $filename) {
                $baseUrl = $_SERVER['SCRIPT_NAME'];
            } elseif (isset($_SERVER['PHP_SELF']) && basename($_SERVER['PHP_SELF']) === $filename) {
                $baseUrl = $_SERVER['PHP_SELF'];
            } elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $filename) {
                $baseUrl = $_SERVER['ORIG_SCRIPT_NAME']; // 1and1 shared hosting compatibility
            } else {
                // Backtrack up the script_filename to find the portion matching
                // php_self
                $path    = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
                $file    = isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '';
                $segs    = explode('/', trim($file, '/'));
                $segs    = array_reverse($segs);
                $index   = 0;
                $last    = count($segs);
                $baseUrl = '';
                do {
                    $seg     = $segs[$index];
                    $baseUrl = '/' . $seg . $baseUrl;
                    ++$index;
                } while (($last > $index) && (false !== ($pos = strpos($path, $baseUrl))) && (0 != $pos));
            }

            // Does the baseUrl have anything in common with the request_uri?
            $requestUri = $this->getRequestUri();

            if (0 === strpos($requestUri, $baseUrl)) {
                // full $baseUrl matches
                $this->_baseUrl = $baseUrl;
                return $this;
            }

            if (0 === strpos($requestUri, dirname($baseUrl))) {
                // directory portion of $baseUrl matches
                $this->_baseUrl = rtrim(dirname($baseUrl), '/');
                return $this;
            }

            if (!strpos($requestUri, basename($baseUrl))) {
                // no match whatsoever; set it blank
                $this->_baseUrl = '';
                return $this;
            }

            // If using mod_rewrite or ISAPI_Rewrite strip the script filename
            // out of baseUrl. $pos !== 0 makes sure it is not matching a value
            // from PATH_INFO or QUERY_STRING
            if ((strlen($requestUri) >= strlen($baseUrl))
                && ((false !== ($pos = strpos($requestUri, $baseUrl))) && ($pos !== 0)))
            {
                $baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl));
            }
        }

        $this->_baseUrl = rtrim($baseUrl, '/');
        return $this;
    }

    /**
     * Everything in REQUEST_URI before PATH_INFO
     * <form action="<?=$baseUrl?>/news/submit" method="POST"/>
     *
     * @return string
     */
    public function getBaseUrl()
    {
        if (null === $this->_baseUrl) {
            $this->setBaseUrl();
        }

        return $this->_baseUrl;
    }

    /**
     * Set the base path for the URL
     *
     * @param string|null $basePath
     * @return Zend_Controller_Request_Http
     */
    public function setBasePath($basePath = null)
    {
        if ($basePath === null) {
            $filename = basename($_SERVER['SCRIPT_FILENAME']);

            $baseUrl = $this->getBaseUrl();
            if (empty($baseUrl)) {
                $this->_basePath = '';
                return $this;
            }

            if (basename($baseUrl) === $filename) {
                $basePath = dirname($baseUrl);
            } else {
                $basePath = $baseUrl;
            }
        }
        
        if (substr(PHP_OS, 0, 3) === 'WIN') {
            $basePath = str_replace('\\', '/', $basePath);
        }

        $this->_basePath = rtrim($basePath, '/');
        return $this;
    }

    /**
     * Everything in REQUEST_URI before PATH_INFO not including the filename
     * <img src="<?=$basePath?>/images/zend.png"/>
     *
     * @return string
     */
    public function getBasePath()
    {
        if (null === $this->_basePath) {
            $this->setBasePath();
        }

        return $this->_basePath;
    }

    /**
     * Set the PATH_INFO string
     *
     * @param string|null $pathInfo
     * @return Zend_Controller_Request_Http
     */
    public function setPathInfo($pathInfo = null)
    {
        if ($pathInfo === null) {
            $baseUrl = $this->getBaseUrl();

            if (null === ($requestUri = $this->getRequestUri())) {
                return $this;
            }

            // Remove the query string from REQUEST_URI
            if ($pos = strpos($requestUri, '?')) {
                $requestUri = substr($requestUri, 0, $pos);
            }

            if ((null !== $baseUrl)
                && (false === ($pathInfo = substr($requestUri, strlen($baseUrl)))))
            {
                // If substr() returns false then PATH_INFO is set to an empty string
                $pathInfo = '';
            } elseif (null === $baseUrl) {
                $pathInfo = $requestUri;
            }
        }

        $this->_pathInfo = (string) $pathInfo;
        return $this;
    }

    /**
     * Returns everything between the BaseUrl and QueryString.
     * This value is calculated instead of reading PATH_INFO
     * directly from $_SERVER due to cross-platform differences.
     *
     * @return string
     */
    public function getPathInfo()
    {
        if (empty($this->_pathInfo)) {
            $this->setPathInfo();
        }

        return $this->_pathInfo;
    }

    /**
     * Set allowed parameter sources
     *
     * Can be empty array, or contain one or more of '_GET' or '_POST'.
     * 
     * @param  array $paramSoures 
     * @return Zend_Controller_Request_Http
     */
    public function setParamSources(array $paramSources = array())
    {
        $this->_paramSources = $paramSources;
        return $this;
    }

    /**
     * Get list of allowed parameter sources
     * 
     * @return array
     */
    public function getParamSources()
    {
        return $this->_paramSources;
    }

    /**
     * Set a userland parameter
     *
     * Uses $key to set a userland parameter. If $key is an alias, the actual
     * key will be retrieved and used to set the parameter.
     *
     * @param mixed $key
     * @param mixed $value
     * @return Zend_Controller_Request_Http
     */
    public function setParam($key, $value)
    {
        $key = (null !== ($alias = $this->getAlias($key))) ? $alias : $key;
        parent::setParam($key, $value);
        return $this;
    }

    /**
     * Retrieve a parameter
     *
     * Retrieves a parameter from the instance. Priority is in the order of
     * userland parameters (see {@link setParam()}), $_GET, $_POST. If a
     * parameter matching the $key is not found, null is returned.
     *
     * If the $key is an alias, the actual key aliased will be used.
     *
     * @param mixed $key
     * @param mixed $default Default value to use if key not found
     * @return mixed
     */
    public function getParam($key, $default = null)
    {
        $keyName = (null !== ($alias = $this->getAlias($key))) ? $alias : $key;

        $paramSources = $this->getParamSources();
        if (isset($this->_params[$keyName])) {
            return $this->_params[$keyName];
        } elseif (in_array('_GET', $paramSources) && (isset($_GET[$keyName]))) {
            return $_GET[$keyName];
        } elseif (in_array('_POST', $paramSources) && (isset($_POST[$keyName]))) {
            return $_POST[$keyName];
        }

        return $default;
    }

    /**
     * Retrieve an array of parameters
     *
     * Retrieves a merged array of parameters, with precedence of userland
     * params (see {@link setParam()}), $_GET, $POST (i.e., values in the
     * userland params will take precedence over all others).
     *
     * @return array
     */
    public function getParams()
    {
        $return = $this->_params;
        if (isset($_GET) && is_array($_GET)) {
            $return += $_GET;
        }
        if (isset($_POST) && is_array($_POST)) {
            $return += $_POST;
        }
        return $return;
    }

    /**
     * Set parameters
     *
     * Set one or more parameters. Parameters are set as userland parameters,
     * using the keys specified in the array.
     *
     * @param array $params
     * @return Zend_Controller_Request_Http
     */
    public function setParams(array $params)
    {
        foreach ($params as $key => $value) {
            $this->setParam($key, $value);
        }
        return $this;
    }

    /**
     * Set a key alias
     *
     * Set an alias used for key lookups. $name specifies the alias, $target
     * specifies the actual key to use.
     *
     * @param string $name
     * @param string $target
     * @return Zend_Controller_Request_Http
     */
    public function setAlias($name, $target)
    {
        $this->_aliases[$name] = $target;
        return $this;
    }

    /**
     * Retrieve an alias
     *
     * Retrieve the actual key represented by the alias $name.
     *
     * @param string $name
     * @return string|null Returns null when no alias exists
     */
    public function getAlias($name)
    {
        if (isset($this->_aliases[$name])) {
            return $this->_aliases[$name];
        }

        return null;
    }

    /**
     * Retrieve the list of all aliases
     *
     * @return array
     */
    public function getAliases()
    {
        return $this->_aliases;
    }

    /**
     * Return the method by which the request was made
     *
     * @return string
     */
    public function getMethod()
    {
        return $this->getServer('REQUEST_METHOD');
    }

    /**
     * Was the request made by POST?
     *
     * @return boolean
     */
    public function isPost()
    {
        if ('POST' == $this->getMethod()) {
            return true;
        }

        return false;
    }

    /**
     * Was the request made by GET?
     *
     * @return boolean
     */
    public function isGet()
    {
        if ('GET' == $this->getMethod()) {
            return true;
        }

        return false;
    }

    /**
     * Was the request made by PUT?
     *
     * @return boolean
     */
    public function isPut()
    {
        if ('PUT' == $this->getMethod()) {
            return true;
        }

        return false;
    }

    /**
     * Was the request made by DELETE?
     *
     * @return boolean
     */
    public function isDelete()
    {
        if ('DELETE' == $this->getMethod()) {
            return true;
        }

        return false;
    }

    /**
     * Was the request made by HEAD?
     *
     * @return boolean
     */
    public function isHead()
    {
        if ('HEAD' == $this->getMethod()) {
            return true;
        }

        return false;
    }

    /**
     * Was the request made by OPTIONS?
     *
     * @return boolean
     */
    public function isOptions()
    {
        if ('OPTIONS' == $this->getMethod()) {
            return true;
        }

        return false;
    }
    
    /**
     * Is the request a Javascript XMLHttpRequest?
     *
     * Should work with Prototype/Script.aculo.us, possibly others.
     *
     * @return boolean
     */
    public function isXmlHttpRequest()
    {
        return ($this->getHeader('X_REQUESTED_WITH') == 'XMLHttpRequest');
    }

    /**
     * Is this a Flash request?
     * 
     * @return bool
     */
    public function isFlashRequest()
    {
        $header = strtolower($this->getHeader('USER_AGENT'));
        return (strstr($header, ' flash')) ? true : false;
    }
    
    /**
     * Is https secure request
     *
     * @return boolean
     */
    public function isSecure()
    {
        return ($this->getScheme() === self::SCHEME_HTTPS);
    }
    
    /**
     * Return the raw body of the request, if present
     *
     * @return string|false Raw body, or false if not present
     */
    public function getRawBody()
    {
        $body = file_get_contents('php://input');

        if (strlen(trim($body)) > 0) {
            return $body;
        }

        return false;
    }

    /**
     * Return the value of the given HTTP header. Pass the header name as the
     * plain, HTTP-specified header name. Ex.: Ask for 'Accept' to get the
     * Accept header, 'Accept-Encoding' to get the Accept-Encoding header.
     *
     * @param string $header HTTP header name
     * @return string|false HTTP header value, or false if not found
     * @throws Zend_Controller_Request_Exception
     */
    public function getHeader($header)
    {
        if (empty($header)) {
            require_once 'Zend/Controller/Request/Exception.php';
            throw new Zend_Controller_Request_Exception('An HTTP header name is required');
        }

        // Try to get it from the $_SERVER array first
        $temp = 'HTTP_' . strtoupper(str_replace('-', '_', $header));
        if (!empty($_SERVER[$temp])) {
            return $_SERVER[$temp];
        }

        // This seems to be the only way to get the Authorization header on
        // Apache
        if (function_exists('apache_request_headers')) {
            $headers = apache_request_headers();
            if (!empty($headers[$header])) {
                return $headers[$header];
            }
        }

        return false;
    }
    
    /**
     * Get the request URI scheme
     *
     * @return string
     */
    public function getScheme()
    {
        return ($this->getServer('HTTPS') == 'on') ? self::SCHEME_HTTPS : self::SCHEME_HTTP;
    }
    
    /**
     * Get the HTTP host.
     *
     * "Host" ":" host [ ":" port ] ; Section 3.2.2
     * Note the HTTP Host header is not the same as the URI host.
     * It includes the port while the URI host doesn't.
     *
     * @return string
     */
    public function getHttpHost()
    {
        $host = $this->getServer('HTTP_HOST');
        if (!empty($host)) {
            return $host;
        }
        
        $scheme = $this->getScheme();
        $name   = $this->getServer('SERVER_NAME');
        $port   = $this->getServer('SERVER_PORT'); 

        if (($scheme == self::SCHEME_HTTP && $port == 80) || ($scheme == self::SCHEME_HTTPS && $port == 443)) {
            return $name;
        } else {
            return $name . ':' . $port;
        }
    }
}
PKpG[���@ Controller/Action/Helper/Url.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Url.php 12526 2008-11-10 20:25:20Z ralph $
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Helper for creating URLs for redirects and other tasks
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_Url extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * Create URL based on default route
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array  $params
     * @return string
     */
    public function simple($action, $controller = null, $module = null, array $params = null)
    {
        $request = $this->getRequest();

        if (null === $controller) {
            $controller = $request->getControllerName();
        }

        if (null === $module) {
            $module = $request->getModuleName();
        }

        $url = $controller . '/' . $action;
        if ($module != $this->getFrontController()->getDispatcher()->getDefaultModule()) {
            $url = $module . '/' . $url;
        }
        
        if ('' !== ($baseUrl = $this->getFrontController()->getBaseUrl())) {
        	$url = $baseUrl . '/' . $url;
        }

        if (null !== $params) {
            $paramPairs = array();
            foreach ($params as $key => $value) {
                $paramPairs[] = urlencode($key) . '/' . urlencode($value);
            }
            $paramString = implode('/', $paramPairs);
            $url .= '/' . $paramString;
        }

        $url = '/' . ltrim($url, '/');

        return $url;
    }

    /**
     * Assembles a URL based on a given route
     *
     * This method will typically be used for more complex operations, as it
     * ties into the route objects registered with the router.
     *
     * @param  array   $urlOptions Options passed to the assemble method of the Route object.
     * @param  mixed   $name       The name of a Route to use. If null it will use the current Route
     * @param  boolean $reset
     * @param  boolean $encode
     * @return string Url for the link href attribute.
     */
    public function url($urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $router = $this->getFrontController()->getRouter();
        return $router->assemble($urlOptions, $name, $reset, $encode);
    }
    
    /**
     * Perform helper when called as $this->_helper->url() from an action controller
     *
     * Proxies to {@link simple()}
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array  $params
     * @return string
     */
    public function direct($action, $controller = null, $module = null, array $params = null)
    {
        return $this->simple($action, $controller, $module, $params);
    }
}
PKpG[#/�i�i�*Controller/Action/Helper/ContextSwitch.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ContextSwitch.php 12812 2008-11-24 20:46:45Z matthew $
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Simplify context switching based on requested format
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_ContextSwitch extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * Trigger type constants
     */
    const TRIGGER_INIT = 'TRIGGER_INIT';
    const TRIGGER_POST = 'TRIGGER_POST';

    /**
     * Supported contexts
     * @var array
     */
    protected $_contexts = array();

    /**
     * JSON auto-serialization flag
     * @var boolean
     */
    protected $_autoJsonSerialization = true;

    /**
     * Controller property key to utilize for context switching
     * @var string
     */
    protected $_contextKey = 'contexts';

    /**
     * Request parameter containing requested context
     * @var string
     */
    protected $_contextParam = 'format';

    /**
     * Current context
     * @var string
     */
    protected $_currentContext;

    /**
     * Default context (xml)
     * @var string
     */
    protected $_defaultContext = 'xml';

    /**
     * Whether or not to disable layouts when switching contexts
     * @var boolean
     */
    protected $_disableLayout = true;

    /**
     * Methods that require special configuration
     * @var array
     */
    protected $_specialConfig = array(
        'setSuffix',
        'setHeaders',
        'setCallbacks',
    );

    /**
     * Methods that are not configurable via setOptions and setConfig
     * @var array
     */
    protected $_unconfigurable = array(
        'setOptions',
        'setConfig',
        'setHeader',
        'setCallback',
        'setContext',
        'setActionContext',
        'setActionContexts',
    );

    /**
     * @var Zend_Controller_Action_Helper_ViewRenderer
     */
    protected $_viewRenderer;

    /**
     * Original view suffix prior to detecting context switch
     * @var string
     */
    protected $_viewSuffixOrig;

    /**
     * Constructor
     *
     * @param  array|Zend_Config $options
     * @return void
     */
    public function __construct($options = null)
    {
        if ($options instanceof Zend_Config) {
            $this->setConfig($options);
        } elseif (is_array($options)) {
            $this->setOptions($options);
        }

        if (empty($this->_contexts)) {
            $this->addContexts(array(
                'json' => array(
                    'suffix'    => 'json',
                    'headers'   => array('Content-Type' => 'application/json'),
                    'callbacks' => array(
                        'init' => 'initJsonContext',
                        'post' => 'postJsonContext'
                    )
                ),
                'xml'  => array(
                    'suffix'    => 'xml',
                    'headers'   => array('Content-Type' => 'application/xml'),
                )
            ));
        }

        $this->init();
    }

    /**
     * Initialize at start of action controller
     *
     * Reset the view script suffix to the original state, or store the 
     * original state.
     * 
     * @return void
     */
    public function init()
    {
        if (null === $this->_viewSuffixOrig) {
            $this->_viewSuffixOrig = $this->_getViewRenderer()->getViewSuffix();
        } else {
            $this->_getViewRenderer()->setViewSuffix($this->_viewSuffixOrig);
        }
    }

    /**
     * Configure object from array of options
     *
     * @param  array $options
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setOptions(array $options)
    {
        if (isset($options['contexts'])) {
            $this->setContexts($options['contexts']);
            unset($options['contexts']);
        }

        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $this->_unconfigurable)) {
                continue;
            }

            if (in_array($method, $this->_specialConfig)) {
                $method = '_' . $method;
            }

            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set object state from config object
     *
     * @param  Zend_Config $config
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

    /**
     * Strategy pattern: return object
     *
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function direct()
    {
        return $this;
    }

    /**
     * Initialize context detection and switching
     *
     * @param  mixed $format
     * @throws Zend_Controller_Action_Exception
     * @return void
     */
    public function initContext($format = null)
    {
        $this->_currentContext = null;

        $controller = $this->getActionController();
        $request    = $this->getRequest();
        $action     = $request->getActionName();

        // Return if no context switching enabled, or no context switching
        // enabled for this action
        $contexts = $this->getActionContexts($action);
        if (empty($contexts)) {
            return;
        }

        // Return if no context parameter provided
        if (!$context = $request->getParam($this->getContextParam())) {
            if ($format === null) {
                return;
            }
            $context = $format;
            $format  = null;
        }

        // Check if context allowed by action controller
        if (!$this->hasActionContext($action, $context)) {
            return;
        }

        // Return if invalid context parameter provided and no format or invalid
        // format provided
        if (!$this->hasContext($context)) {
            if (empty($format) || !$this->hasContext($format)) {

                return;
            }
        }

        // Use provided format if passed
        if (!empty($format) && $this->hasContext($format)) {
            $context = $format;
        }

        $suffix = $this->getSuffix($context);

        $this->_getViewRenderer()->setViewSuffix($suffix);

        $headers = $this->getHeaders($context);
        if (!empty($headers)) {
            $response = $this->getResponse();
            foreach ($headers as $header => $content) {
                $response->setHeader($header, $content);
            }
        }

        if ($this->getAutoDisableLayout()) {
            /**
             * @see Zend_Layout
             */
            require_once 'Zend/Layout.php';
            $layout = Zend_Layout::getMvcInstance();
            if (null !== $layout) {
                $layout->disableLayout();
            }
        }

        if (null !== ($callback = $this->getCallback($context, self::TRIGGER_INIT))) {
            if (is_string($callback) && method_exists($this, $callback)) {
                $this->$callback();
            } elseif (is_string($callback) && function_exists($callback)) {
                $callback();
            } elseif (is_array($callback)) {
                call_user_func($callback);
            } else {
                /**
                 * @see Zend_Controller_Action_Exception
                 */
                require_once 'Zend/Controller/Action/Exception.php';
                throw new Zend_Controller_Action_Exception(sprintf('Invalid context callback registered for context "%s"', $context));
            }
        }

        $this->_currentContext = $context;
    }

    /**
     * JSON context extra initialization
     *
     * Turns off viewRenderer auto-rendering
     *
     * @return void
     */
    public function initJsonContext()
    {
        if (!$this->getAutoJsonSerialization()) {
            return;
        }

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        $view = $viewRenderer->view;
        if ($view instanceof Zend_View_Interface) {
            $viewRenderer->setNoRender(true);
        }
    }

    /**
     * Should JSON contexts auto-serialize?
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setAutoJsonSerialization($flag)
    {
        $this->_autoJsonSerialization = (bool) $flag;
        return $this;
    }

    /**
     * Get JSON context auto-serialization flag
     *
     * @return boolean
     */
    public function getAutoJsonSerialization()
    {
        return $this->_autoJsonSerialization;
    }

    /**
     * Set suffix from array
     *
     * @param  array $spec
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    protected function _setSuffix(array $spec)
    {
        foreach ($spec as $context => $suffixInfo) {
            if (!is_string($context)) {
                $context = null;
            }

            if (is_string($suffixInfo)) {
                $this->setSuffix($context, $suffixInfo);
                continue;
            } elseif (is_array($suffixInfo)) {
                if (isset($suffixInfo['suffix'])) {
                    $suffix                    = $suffixInfo['suffix'];
                    $prependViewRendererSuffix = true;

                    if ((null === $context) && isset($suffixInfo['context'])) {
                        $context = $suffixInfo['context'];
                    }

                    if (isset($suffixInfo['prependViewRendererSuffix'])) {
                        $prependViewRendererSuffix = $suffixInfo['prependViewRendererSuffix'];
                    }

                    $this->setSuffix($context, $suffix, $prependViewRendererSuffix);
                    continue;
                }

                $count = count($suffixInfo);
                switch (true) {
                    case (($count < 2) && (null === $context)):
                        /**
                         * @see Zend_Controller_Action_Exception
                         */
                        require_once 'Zend/Controller/Action/Exception.php';
                        throw new Zend_Controller_Action_Exception('Invalid suffix information provided in config');
                    case ($count < 2):
                        $suffix = array_shift($suffixInfo);
                        $this->setSuffix($context, $suffix);
                        break;
                    case (($count < 3) && (null === $context)):
                        $context = array_shift($suffixInfo);
                        $suffix  = array_shift($suffixInfo);
                        $this->setSuffix($context, $suffix);
                        break;
                    case (($count == 3) && (null === $context)):
                        $context = array_shift($suffixInfo);
                        $suffix  = array_shift($suffixInfo);
                        $prependViewRendererSuffix = array_shift($suffixInfo);
                        $this->setSuffix($context, $suffix, $prependViewRendererSuffix);
                        break;
                    case ($count >= 2):
                        $suffix  = array_shift($suffixInfo);
                        $prependViewRendererSuffix = array_shift($suffixInfo);
                        $this->setSuffix($context, $suffix, $prependViewRendererSuffix);
                        break;
                }
            }
        }
        return $this;
    }

    /**
     * Customize view script suffix to use when switching context.
     *
     * Passing an empty suffix value to the setters disables the view script
     * suffix change.
     *
     * @param  string  $context                   Context type for which to set suffix
     * @param  string  $suffix                    Suffix to use
     * @param  boolean $prependViewRendererSuffix Whether or not to prepend the new suffix to the viewrenderer suffix
     * @throws Zend_Controller_Action_Exception
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setSuffix($context, $suffix, $prependViewRendererSuffix = true)
    {
        if (!isset($this->_contexts[$context])) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Cannot set suffix; invalid context type "%s"', $context));
        }

        if (empty($suffix)) {
            $suffix = '';
        }

        if (is_array($suffix)) {
            if (isset($suffix['prependViewRendererSuffix'])) {
                $prependViewRendererSuffix = $suffix['prependViewRendererSuffix'];
            }
            if (isset($suffix['suffix'])) {
                $suffix = $suffix['suffix'];
            } else {
                $suffix = '';
            }
        }

        $suffix = (string) $suffix;

        if ($prependViewRendererSuffix) {
            if (empty($suffix)) {
                $suffix = $this->_getViewRenderer()->getViewSuffix();
            } else {
                $suffix .= '.' . $this->_getViewRenderer()->getViewSuffix();
            }
        }

        $this->_contexts[$context]['suffix'] = $suffix;
        return $this;
    }

    /**
     * Retrieve suffix for given context type
     *
     * @param  string $type Context type
     * @throws Zend_Controller_Action_Exception
     * @return string
     */
    public function getSuffix($type)
    {
        if (!isset($this->_contexts[$type])) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Cannot retrieve suffix; invalid context type "%s"', $type));
        }

        return $this->_contexts[$type]['suffix'];
    }

    /**
     * Does the given context exist?
     *
     * @param  string  $context
     * @param  boolean $throwException
     * @throws Zend_Controller_Action_Exception if context does not exist and throwException is true
     * @return bool
     */
    public function hasContext($context, $throwException = false)
    {
        if (is_string($context)) {
            if (isset($this->_contexts[$context])) {
                return true;
            }
        } elseif (is_array($context)) {
            $error = false;
            foreach ($context as $test) {
                if (!isset($this->_contexts[$test])) {
                    $error = (string) $test;
                    break;
                }
            }
            if (false === $error) {
                return true;
            }
            $context = $error;
        } elseif (true === $context) {
            return true;
        }

        if ($throwException) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Context "%s" does not exist', $context));
        }

        return false;
    }

    /**
     * Add header to context
     *
     * @param  string $context
     * @param  string $header
     * @param  string $content
     * @throws Zend_Controller_Action_Exception
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function addHeader($context, $header, $content)
    {
        $context = (string) $context;
        $this->hasContext($context, true);

        $header  = (string) $header;
        $content = (string) $content;

        if (isset($this->_contexts[$context]['headers'][$header])) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Cannot add "%s" header to context "%s": already exists', $header, $context));
        }

        $this->_contexts[$context]['headers'][$header] = $content;
        return $this;
    }

    /**
     * Customize response header to use when switching context
     *
     * Passing an empty header value to the setters disables the response
     * header.
     *
     * @param  string $type   Context type for which to set suffix
     * @param  string $header Header to set
     * @param  string $content Header content
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setHeader($context, $header, $content)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        $header  = (string) $header;
        $content = (string) $content;

        $this->_contexts[$context]['headers'][$header] = $content;
        return $this;
    }

    /**
     * Add multiple headers at once for a given context
     *
     * @param  string $context
     * @param  array  $headers
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function addHeaders($context, array $headers)
    {
        foreach ($headers as $header => $content) {
            $this->addHeader($context, $header, $content);
        }

        return $this;
    }

    /**
     * Set headers from context => headers pairs
     *
     * @param  array $options
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    protected function _setHeaders(array $options)
    {
        foreach ($options as $context => $headers) {
            if (!is_array($headers)) {
                continue;
            }
            $this->setHeaders($context, $headers);
        }

        return $this;
    }

    /**
     * Set multiple headers at once for a given context
     *
     * @param  string $context
     * @param  array  $headers
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setHeaders($context, array $headers)
    {
        $this->clearHeaders($context);
        foreach ($headers as $header => $content) {
            $this->setHeader($context, $header, $content);
        }

        return $this;
    }

    /**
     * Retrieve context header
     *
     * Returns the value of a given header for a given context type
     *
     * @param  string $context
     * @param  string $header
     * @return string|null
     */
    public function getHeader($context, $header)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        $header  = (string) $header;
        if (isset($this->_contexts[$context]['headers'][$header])) {
            return $this->_contexts[$context]['headers'][$header];
        }

        return null;
    }

    /**
     * Retrieve context headers
     *
     * Returns all headers for a context as key/value pairs
     *
     * @param  string $context
     * @return array
     */
    public function getHeaders($context)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        return $this->_contexts[$context]['headers'];
    }

    /**
     * Remove a single header from a context
     *
     * @param  string $context
     * @param  string $header
     * @return boolean
     */
    public function removeHeader($context, $header)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        $header  = (string) $header;
        if (isset($this->_contexts[$context]['headers'][$header])) {
            unset($this->_contexts[$context]['headers'][$header]);
            return true;
        }

        return false;
    }

    /**
     * Clear all headers for a given context
     *
     * @param  string $context
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function clearHeaders($context)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        $this->_contexts[$context]['headers'] = array();
        return $this;
    }

    /**
     * Validate trigger and return in normalized form
     *
     * @param  string $trigger
     * @throws Zend_Controller_Action_Exception
     * @return string
     */
    protected function _validateTrigger($trigger)
    {
        $trigger = strtoupper($trigger);
        if ('TRIGGER_' !== substr($trigger, 0, 8)) {
            $trigger = 'TRIGGER_' . $trigger;
        }

        if (!in_array($trigger, array(self::TRIGGER_INIT, self::TRIGGER_POST))) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Invalid trigger "%s"', $trigger));
        }

        return $trigger;
    }

    /**
     * Set a callback for a given context and trigger
     *
     * @param  string       $context
     * @param  string       $trigger
     * @param  string|array $callback
     * @throws Zend_Controller_Action_Exception
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setCallback($context, $trigger, $callback)
    {
        $this->hasContext($context, true);
        $trigger = $this->_validateTrigger($trigger);

        if (!is_string($callback)) {
            if (!is_array($callback) || (2 != count($callback))) {
                /**
                 * @see Zend_Controller_Action_Exception
                 */
                require_once 'Zend/Controller/Action/Exception.php';
                throw new Zend_Controller_Action_Exception('Invalid callback specified');
            }
        }

        $this->_contexts[$context]['callbacks'][$trigger] = $callback;
        return $this;
    }

    /**
     * Set callbacks from array of context => callbacks pairs
     *
     * @param  array $options
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    protected function _setCallbacks(array $options)
    {
        foreach ($options as $context => $callbacks) {
            if (!is_array($callbacks)) {
                continue;
            }

            $this->setCallbacks($context, $callbacks);
        }
        return $this;
    }

    /**
     * Set callbacks for a given context
     *
     * Callbacks should be in trigger/callback pairs.
     *
     * @param  string $context
     * @param  array  $callbacks
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setCallbacks($context, array $callbacks)
    {
        $this->hasContext($context, true);
        $context = (string) $context;
        if (!isset($this->_contexts[$context]['callbacks'])) {
            $this->_contexts[$context]['callbacks'] = array();
        }

        foreach ($callbacks as $trigger => $callback) {
            $this->setCallback($context, $trigger, $callback);
        }
        return $this;
    }

    /**
     * Get a single callback for a given context and trigger
     *
     * @param  string $context
     * @param  string $trigger
     * @return string|array|null
     */
    public function getCallback($context, $trigger)
    {
        $this->hasContext($context, true);
        $trigger = $this->_validateTrigger($trigger);
        if (isset($this->_contexts[$context]['callbacks'][$trigger])) {
            return $this->_contexts[$context]['callbacks'][$trigger];
        }

        return null;
    }

    /**
     * Get all callbacks for a given context
     *
     * @param  string $context
     * @return array
     */
    public function getCallbacks($context)
    {
        $this->hasContext($context, true);
        return $this->_contexts[$context]['callbacks'];
    }

    /**
     * Clear a callback for a given context and trigger
     *
     * @param  string $context
     * @param  string $trigger
     * @return boolean
     */
    public function removeCallback($context, $trigger)
    {
        $this->hasContext($context, true);
        $trigger = $this->_validateTrigger($trigger);
        if (isset($this->_contexts[$context]['callbacks'][$trigger])) {
            unset($this->_contexts[$context]['callbacks'][$trigger]);
            return true;
        }

        return false;
    }

    /**
     * Clear all callbacks for a given context
     *
     * @param  string $context
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function clearCallbacks($context)
    {
        $this->hasContext($context, true);
        $this->_contexts[$context]['callbacks'] = array();
        return $this;
    }

    /**
     * Set name of parameter to use when determining context format
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setContextParam($name)
    {
        $this->_contextParam = (string) $name;
        return $this;
    }

    /**
     * Return context format request parameter name
     *
     * @return string
     */
    public function getContextParam()
    {
        return $this->_contextParam;
    }

    /**
     * Indicate default context to use when no context format provided
     *
     * @param  string $type
     * @throws Zend_Controller_Action_Exception
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setDefaultContext($type)
    {
        if (!isset($this->_contexts[$type])) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Cannot set default context; invalid context type "%s"', $type));
        }

        $this->_defaultContext = $type;
        return $this;
    }

    /**
     * Return default context
     *
     * @return string
     */
    public function getDefaultContext()
    {
        return $this->_defaultContext;
    }

    /**
     * Set flag indicating if layout should be disabled
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setAutoDisableLayout($flag)
    {
        $this->_disableLayout = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve auto layout disable flag
     *
     * @return boolean
     */
    public function getAutoDisableLayout()
    {
        return $this->_disableLayout;
    }

    /**
     * Add new context
     *
     * @param  string $context Context type
     * @param  array  $spec    Context specification
     * @throws Zend_Controller_Action_Exception
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function addContext($context, array $spec)
    {
        if ($this->hasContext($context)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf('Cannot add context "%s"; already exists', $context));
        }
        $context = (string) $context;

        $this->_contexts[$context] = array();

        $this->setSuffix($context,    (isset($spec['suffix'])    ? $spec['suffix']    : ''))
             ->setHeaders($context,   (isset($spec['headers'])   ? $spec['headers']   : array()))
             ->setCallbacks($context, (isset($spec['callbacks']) ? $spec['callbacks'] : array()));
        return $this;
    }

    /**
     * Overwrite existing context
     *
     * @param  string $context Context type
     * @param  array  $spec    Context specification
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setContext($context, array $spec)
    {
        $this->removeContext($context);
        return $this->addContext($context, $spec);
    }

    /**
     * Add multiple contexts
     *
     * @param  array $contexts
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function addContexts(array $contexts)
    {
        foreach ($contexts as $context => $spec) {
            $this->addContext($context, $spec);
        }
        return $this;
    }

    /**
     * Set multiple contexts, after first removing all
     *
     * @param  array $contexts
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setContexts(array $contexts)
    {
        $this->clearContexts();
        foreach ($contexts as $context => $spec) {
            $this->addContext($context, $spec);
        }
        return $this;
    }

    /**
     * Retrieve context specification
     *
     * @param  string $context
     * @return array|null
     */
    public function getContext($context)
    {
        if ($this->hasContext($context)) {
            return $this->_contexts[(string) $context];
        }
        return null;
    }

    /**
     * Retrieve context definitions
     *
     * @return array
     */
    public function getContexts()
    {
        return $this->_contexts;
    }

    /**
     * Remove a context
     *
     * @param  string $context
     * @return boolean
     */
    public function removeContext($context)
    {
        if ($this->hasContext($context)) {
            unset($this->_contexts[(string) $context]);
            return true;
        }
        return false;
    }

    /**
     * Remove all contexts
     *
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function clearContexts()
    {
        $this->_contexts = array();
        return $this;
    }

    /**
     * Return current context, if any
     *
     * @return null|string
     */
    public function getCurrentContext()
    {
        return $this->_currentContext;
    }

    /**
     * Post dispatch processing
     *
     * Execute postDispatch callback for current context, if available
     *
     * @throws Zend_Controller_Action_Exception
     * @return void
     */
    public function postDispatch()
    {
        $context = $this->getCurrentContext();
        if (null !== $context) {
            if (null !== ($callback = $this->getCallback($context, self::TRIGGER_POST))) {
                if (is_string($callback) && method_exists($this, $callback)) {
                    $this->$callback();
                } elseif (is_string($callback) && function_exists($callback)) {
                    $callback();
                } elseif (is_array($callback)) {
                    call_user_func($callback);
                } else {
                    /**
                     * @see Zend_Controller_Action_Exception
                     */
                    require_once 'Zend/Controller/Action/Exception.php';
                    throw new Zend_Controller_Action_Exception(sprintf('Invalid postDispatch context callback registered for context "%s"', $context));
                }
            }
        }
    }

    /**
     * JSON post processing
     *
     * JSON serialize view variables to response body
     *
     * @return void
     */
    public function postJsonContext()
    {
        if (!$this->getAutoJsonSerialization()) {
            return;
        }

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        $view = $viewRenderer->view;
        if ($view instanceof Zend_View_Interface) {
            /**
             * @see Zend_Json
             */
            if(method_exists($view, 'getVars')) {
                require_once 'Zend/Json.php';
                $vars = Zend_Json::encode($view->getVars());
                $this->getResponse()->setBody($vars);
            } else {
                require_once 'Zend/Controller/Action/Exception.php';
                throw new Zend_Controller_Action_Exception('View does not implement the getVars() method needed to encode the view into JSON');
            }
        }
    }

    /**
     * Add one or more contexts to an action
     *
     * @param  string       $action
     * @param  string|array $context
     * @return Zend_Controller_Action_Helper_ContextSwitch|void Provides a fluent interface
     */
    public function addActionContext($action, $context)
    {
        $this->hasContext($context, true);
        $controller = $this->getActionController();
        if (null === $controller) {
            return;
        }
        $action     = (string) $action;
        $contextKey = $this->_contextKey;

        if (!isset($controller->$contextKey)) {
            $controller->$contextKey = array();
        }

        if (true === $context) {
            $contexts = $this->getContexts();
            $controller->{$contextKey}[$action] = array_keys($contexts);
            return $this;
        }

        $context = (array) $context;
        if (!isset($controller->{$contextKey}[$action])) {
            $controller->{$contextKey}[$action] = $context;
        } else {
            $controller->{$contextKey}[$action] = array_merge(
                $controller->{$contextKey}[$action],
                $context
            );
        }

        return $this;
    }

    /**
     * Set a context as available for a given controller action
     *
     * @param  string       $action
     * @param  string|array $context
     * @return Zend_Controller_Action_Helper_ContextSwitch|void Provides a fluent interface
     */
    public function setActionContext($action, $context)
    {
        $this->hasContext($context, true);
        $controller = $this->getActionController();
        if (null === $controller) {
            return;
        }
        $action     = (string) $action;
        $contextKey = $this->_contextKey;

        if (!isset($controller->$contextKey)) {
            $controller->$contextKey = array();
        }

        if (true === $context) {
            $contexts = $this->getContexts();
            $controller->{$contextKey}[$action] = array_keys($contexts);
        } else {
            $controller->{$contextKey}[$action] = (array) $context;
        }

        return $this;
    }

    /**
     * Add multiple action/context pairs at once
     *
     * @param  array $contexts
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function addActionContexts(array $contexts)
    {
        foreach ($contexts as $action => $context) {
            $this->addActionContext($action, $context);
        }
        return $this;
    }

    /**
     * Overwrite and set multiple action contexts at once
     *
     * @param  array $contexts
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function setActionContexts(array $contexts)
    {
        foreach ($contexts as $action => $context) {
            $this->setActionContext($action, $context);
        }
        return $this;
    }

    /**
     * Does a particular controller action have the given context(s)?
     *
     * @param  string       $action
     * @param  string|array $context
     * @throws Zend_Controller_Action_Exception
     * @return boolean
     */
    public function hasActionContext($action, $context)
    {
        $this->hasContext($context, true);
        $controller = $this->getActionController();
        if (null === $controller) {
            return false;
        }
        $action     = (string) $action;
        $contextKey = $this->_contextKey;

        if (!isset($controller->{$contextKey})) {
            return false;
        }

        $allContexts = $controller->{$contextKey};

        if (!is_array($allContexts)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception("Invalid contexts found for controller");
        }

        if (!isset($allContexts[$action])) {
            return false;
        }

        if (true === $allContexts[$action]) {
            return true;
        }

        $contexts = $allContexts[$action];

        if (!is_array($contexts)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception(sprintf("Invalid contexts found for action '%s'", $action));
        }

        if (is_string($context) && in_array($context, $contexts)) {
            return true;
        } elseif (is_array($context)) {
            $found = true;
            foreach ($context as $test) {
                if (!in_array($test, $contexts)) {
                    $found = false;
                    break;
                }
            }
            return $found;
        }

        return false;
    }

    /**
     * Get contexts for a given action or all actions in the controller
     *
     * @param  string $action
     * @return array
     */
    public function getActionContexts($action = null)
    {
        $controller = $this->getActionController();
        if (null === $controller) {
            return array();
        }
        $action     = (string) $action;
        $contextKey = $this->_contextKey;

        if (!isset($controller->$contextKey)) {
            return array();
        }

        if (null !== $action) {
            if (isset($controller->{$contextKey}[$action])) {
                return $controller->{$contextKey}[$action];
            } else {
                return array();
            }
        }

        return $controller->$contextKey;
    }

    /**
     * Remove one or more contexts for a given controller action
     *
     * @param  string       $action
     * @param  string|array $context
     * @return boolean
     */
    public function removeActionContext($action, $context)
    {
        if ($this->hasActionContext($action, $context)) {
            $controller     = $this->getActionController();
            $contextKey     = $this->_contextKey;
            $action         = (string) $action;
            $contexts       = $controller->$contextKey;
            $actionContexts = $contexts[$action];
            $contexts       = (array) $context;
            foreach ($contexts as $context) {
                $index = array_search($context, $actionContexts);
                if (false !== $index) {
                    unset($controller->{$contextKey}[$action][$index]);
                }
            }
            return true;
        }
        return false;
    }

    /**
     * Clear all contexts for a given controller action or all actions
     *
     * @param  string $action
     * @return Zend_Controller_Action_Helper_ContextSwitch Provides a fluent interface
     */
    public function clearActionContexts($action = null)
    {
        $controller = $this->getActionController();
        $contextKey = $this->_contextKey;

        if (!isset($controller->$contextKey) || empty($controller->$contextKey)) {
            return $this;
        }

        if (null === $action) {
            $controller->$contextKey = array();
            return $this;
        }

        $action = (string) $action;
        if (isset($controller->{$contextKey}[$action])) {
            unset($controller->{$contextKey}[$action]);
        }

        return $this;
    }

    /**
     * Retrieve ViewRenderer
     *
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    protected function _getViewRenderer()
    {
        if (null === $this->_viewRenderer) {
            $this->_viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        }

        return $this->_viewRenderer;
    }
}

PKpG[I�!ʸ�2Controller/Action/Helper/AutoComplete/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9098 2008-03-30 19:29:10Z thomas $
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Create and send autocompletion lists
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Action_Helper_AutoComplete_Abstract extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * Suppress exit when sendJson() called
     *
     * @var boolean
     */
    public $suppressExit = false;

    /**
     * Validate autocompletion data
     * 
     * @param  mixed $data
     * @return boolean
     */
    abstract public function validateData($data);

    /**
     * Prepare autocompletion data
     * 
     * @param  mixed   $data 
     * @param  boolean $keepLayouts 
     * @return mixed
     */
    abstract public function prepareAutoCompletion($data, $keepLayouts = false);

    /**
     * Disable layouts and view renderer
     * 
     * @return Zend_Controller_Action_Helper_AutoComplete_Abstract Provides a fluent interface
     */
    public function disableLayouts()
    {
        /**
         * @see Zend_Layout
         */
        require_once 'Zend/Layout.php';
        if (null !== ($layout = Zend_Layout::getMvcInstance())) {
            $layout->disableLayout();
        }

        Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);

        return $this;
    }

    /**
     * Encode data to JSON
     * 
     * @param  mixed $data 
     * @param  bool  $keepLayouts 
     * @throws Zend_Controller_Action_Exception
     * @return string
     */
    public function encodeJson($data, $keepLayouts = false)
    {
        if ($this->validateData($data)) {
            return Zend_Controller_Action_HelperBroker::getStaticHelper('Json')->encodeJson($data, $keepLayouts);
        }

        /**
         * @see Zend_Controller_Action_Exception
         */
        require_once 'Zend/Controller/Action/Exception.php';
        throw new Zend_Controller_Action_Exception('Invalid data passed for autocompletion');
    }

    /**
     * Send autocompletion data
     *
     * Calls prepareAutoCompletion, populates response body with this 
     * information, and sends response.
     * 
     * @param  mixed $data 
     * @param  bool  $keepLayouts 
     * @return string|void
     */
    public function sendAutoCompletion($data, $keepLayouts = false)
    {
        $data = $this->prepareAutoCompletion($data, $keepLayouts);

        $response = $this->getResponse();
        $response->setBody($data);

        if (!$this->suppressExit) {
            $response->sendResponse();
            exit;
        }

        return $data;
    }

    /**
     * Strategy pattern: allow calling helper as broker method
     *
     * Prepares autocompletion data and, if $sendNow is true, immediately sends 
     * response.
     * 
     * @param  mixed $data 
     * @param  bool  $sendNow 
     * @param  bool  $keepLayouts 
     * @return string|void
     */
    public function direct($data, $sendNow = true, $keepLayouts = false)
    {
        if ($sendNow) {
            return $this->sendAutoCompletion($data, $keepLayouts);
        }

        return $this->prepareAutoCompletion($data, $keepLayouts);
    }
}
PKpG[2�)�~:~:'Controller/Action/Helper/Redirector.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** 
 * @see Zend_Controller_Action_Exception
 */
require_once 'Zend/Controller/Action/Exception.php';

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_Redirector extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * HTTP status code for redirects
     * @var int
     */
    protected $_code = 302;

    /**
     * Whether or not calls to _redirect() should exit script execution
     * @var boolean
     */
    protected $_exit = true;

    /**
     * Whether or not _redirect() should attempt to prepend the base URL to the
     * passed URL (if it's a relative URL)
     * @var boolean
     */
    protected $_prependBase = true;

    /**
     * Url to which to redirect
     * @var string
     */
    protected $_redirectUrl = null;

    /**
     * Whether or not to use an absolute URI when redirecting
     * @var boolean
     */
    protected $_useAbsoluteUri = false;

    /**
     * Retrieve HTTP status code to emit on {@link _redirect()} call
     *
     * @return int
     */
    public function getCode()
    {
        return $this->_code;
    }

    /**
     * Validate HTTP status redirect code
     *
     * @param  int $code
     * @throws Zend_Controller_Action_Exception on invalid HTTP status code
     * @return true
     */
    protected function _checkCode($code)
    {
        $code = (int)$code;
        if ((300 > $code) || (307 < $code) || (304 == $code) || (306 == $code)) {
            /**
             * @see Zend_Controller_Exception
             */
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Action_Exception('Invalid redirect HTTP status code (' . $code  . ')');
        }

        return true;
    }

    /**
     * Retrieve HTTP status code for {@link _redirect()} behaviour
     *
     * @param  int $code
     * @return Zend_Controller_Action_Helper_Redirector Provides a fluent interface
     */
    public function setCode($code)
    {
        $this->_checkCode($code);
        $this->_code = $code;
        return $this;
    }

    /**
     * Retrieve flag for whether or not {@link _redirect()} will exit when finished.
     *
     * @return boolean
     */
    public function getExit()
    {
        return $this->_exit;
    }

    /**
     * Retrieve exit flag for {@link _redirect()} behaviour
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_Redirector Provides a fluent interface
     */
    public function setExit($flag)
    {
        $this->_exit = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve flag for whether or not {@link _redirect()} will prepend the
     * base URL on relative URLs
     *
     * @return boolean
     */
    public function getPrependBase()
    {
        return $this->_prependBase;
    }

    /**
     * Retrieve 'prepend base' flag for {@link _redirect()} behaviour
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_Redirector Provides a fluent interface
     */
    public function setPrependBase($flag)
    {
        $this->_prependBase = ($flag) ? true : false;
        return $this;
    }

    /**
     * Return use absolute URI flag
     *
     * @return boolean
     */
    public function getUseAbsoluteUri()
    {
        return $this->_useAbsoluteUri;
    }

    /**
     * Set use absolute URI flag
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_Redirector Provides a fluent interface
     */
    public function setUseAbsoluteUri($flag = true)
    {
        $this->_useAbsoluteUri = ($flag) ? true : false;
        return $this;
    }

    /**
     * Set redirect in response object
     *
     * @return void
     */
    protected function _redirect($url)
    {
        if ($this->getUseAbsoluteUri() && !preg_match('#^(https?|ftp)://#', $url)) {
            $host  = (isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'');
            $proto = (isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=="off") ? 'https' : 'http';
            $port  = (isset($_SERVER['SERVER_PORT'])?$_SERVER['SERVER_PORT']:80);
            $uri   = $proto . '://' . $host;
            if ((('http' == $proto) && (80 != $port)) || (('https' == $proto) && (443 != $port))) {
                $uri .= ':' . $port;
            }
            $url = $uri . '/' . ltrim($url, '/');
        }
        $this->_redirectUrl = $url;
        $this->getResponse()->setRedirect($url, $this->getCode());
    }

    /**
     * Retrieve currently set URL for redirect
     *
     * @return string
     */
    public function getRedirectUrl()
    {
        return $this->_redirectUrl;
    }

    /**
     * Determine if the baseUrl should be prepended, and prepend if necessary
     *
     * @param  string $url
     * @return string
     */
    protected function _prependBase($url)
    {
        if ($this->getPrependBase()) {
            $request = $this->getRequest();
            if ($request instanceof Zend_Controller_Request_Http) {
                $base = rtrim($request->getBaseUrl(), '/');
                if (!empty($base) && ('/' != $base)) {
                    $url = $base . '/' . ltrim($url, '/');
                } else {
                    $url = '/' . ltrim($url, '/');
                }
            }
        }

        return $url;
    }

    /**
     * Set a redirect URL of the form /module/controller/action/params
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array  $params
     * @return void
     */
    public function setGotoSimple($action, $controller = null, $module = null, array $params = array())
    {
        $dispatcher = $this->getFrontController()->getDispatcher();
        $request    = $this->getRequest();
        $curModule  = $request->getModuleName();
        $useDefaultController = false;

        if (null === $controller && null !== $module) {
            $useDefaultController = true;
        }

        if (null === $module) {
            $module = $curModule;
        } 
        
        if ($module == $dispatcher->getDefaultModule()) {
            $module = '';
        }

        if (null === $controller && !$useDefaultController) {
            $controller = $request->getControllerName();
            if (empty($controller)) {
                $controller = $dispatcher->getDefaultControllerName();
            }
        }

        $params['module']     = $module;
        $params['controller'] = $controller;
        $params['action']     = $action;

        $router = $this->getFrontController()->getRouter();
        $url    = $router->assemble($params, 'default', true);

        $this->_redirect($url);
    }

    /**
     * Build a URL based on a route
     *
     * @param  array   $urlOptions
     * @param  string  $name Route name
     * @param  boolean $reset
     * @param  boolean $encode
     * @return void
     */
    public function setGotoRoute(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $router = $this->getFrontController()->getRouter();
        $url    = $router->assemble($urlOptions, $name, $reset, $encode);

        $this->_redirect($url);
    }

    /**
     * Set a redirect URL string
     *
     * By default, emits a 302 HTTP status header, prepends base URL as defined
     * in request object if url is relative, and halts script execution by
     * calling exit().
     *
     * $options is an optional associative array that can be used to control
     * redirect behaviour. The available option keys are:
     * - exit: boolean flag indicating whether or not to halt script execution when done
     * - prependBase: boolean flag indicating whether or not to prepend the base URL when a relative URL is provided
     * - code: integer HTTP status code to use with redirect. Should be between 300 and 307.
     *
     * _redirect() sets the Location header in the response object. If you set
     * the exit flag to false, you can override this header later in code
     * execution.
     *
     * If the exit flag is true (true by default), _redirect() will write and
     * close the current session, if any.
     *
     * @param  string $url
     * @param  array  $options
     * @return void
     */
    public function setGotoUrl($url, array $options = array())
    {
        // prevent header injections
        $url = str_replace(array("\n", "\r"), '', $url);

        $exit        = $this->getExit();
        $prependBase = $this->getPrependBase();
        $code        = $this->getCode();
        if (null !== $options) {
            if (isset($options['exit'])) {
                $this->setExit(($options['exit']) ? true : false);
            }
            if (isset($options['prependBase'])) {
                $this->setPrependBase(($options['prependBase']) ? true : false);
            }
            if (isset($options['code'])) {
                $this->setCode($options['code']);
            }
        }

        // If relative URL, decide if we should prepend base URL
        if (!preg_match('|^[a-z]+://|', $url)) {
            $url = $this->_prependBase($url);
        }

        $this->_redirect($url);
    }

    /**
     * Perform a redirect to an action/controller/module with params
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array  $params
     * @return void
     */
    public function gotoSimple($action, $controller = null, $module = null, array $params = array())
    {
        $this->setGotoSimple($action, $controller, $module, $params);

        if ($this->getExit()) {
            $this->redirectAndExit();
        }
    }

    /**
     * Perform a redirect to an action/controller/module with params, forcing an immdiate exit
     *
     * @param  mixed $action
     * @param  mixed $controller
     * @param  mixed $module
     * @param  array $params
     * @return void
     */
    public function gotoSimpleAndExit($action, $controller = null, $module = null, array $params = array())
    {
        $this->setGotoSimple($action, $controller, $module, $params);
        $this->redirectAndExit();
    }

    /**
     * Redirect to a route-based URL
     *
     * Uses route's assemble method tobuild the URL; route is specified by $name;
     * default route is used if none provided.
     *
     * @param  array   $urlOptions Array of key/value pairs used to assemble URL
     * @param  string  $name
     * @param  boolean $reset
     * @param  boolean $encode
     * @return void
     */
    public function gotoRoute(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $this->setGotoRoute($urlOptions, $name, $reset, $encode);

        if ($this->getExit()) {
            $this->redirectAndExit();
        }
    }

    /**
     * Redirect to a route-based URL, and immediately exit
     *
     * Uses route's assemble method tobuild the URL; route is specified by $name;
     * default route is used if none provided.
     *
     * @param  array   $urlOptions Array of key/value pairs used to assemble URL
     * @param  string  $name
     * @param  boolean $reset
     * @return void
     */
    public function gotoRouteAndExit(array $urlOptions = array(), $name = null, $reset = false)
    {
        $this->setGotoRoute($urlOptions, $name, $reset);
        $this->redirectAndExit();
    }

    /**
     * Perform a redirect to a url
     *
     * @param  string $url
     * @param  array  $options
     * @return void
     */
    public function gotoUrl($url, array $options = array())
    {
        $this->setGotoUrl($url, $options);

        if ($this->getExit()) {
            $this->redirectAndExit();
        }
    }

    /**
     * Set a URL string for a redirect, perform redirect, and immediately exit
     *
     * @param  string $url
     * @param  array  $options
     * @return void
     */
    public function gotoUrlAndExit($url, array $options = array())
    {
        $this->gotoUrl($url, $options);
        $this->redirectAndExit();
    }

    /**
     * exit(): Perform exit for redirector
     *
     * @return void
     */
    public function redirectAndExit()
    {
        // Close session, if started
        if (class_exists('Zend_Session', false) && Zend_Session::isStarted()) {
            Zend_Session::writeClose();
        } elseif (isset($_SESSION)) {
            session_write_close();
        }

        $this->getResponse()->sendHeaders();
        exit();
    }

    /**
     * direct(): Perform helper when called as
     * $this->_helper->redirector($action, $controller, $module, $params)
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array  $params
     * @return void
     */
    public function direct($action, $controller = null, $module = null, array $params = array())
    {
        $this->gotoSimple($action, $controller, $module, $params);
    }

    /**
     * Overloading
     *
     * Overloading for old 'goto', 'setGoto', and 'gotoAndExit' methods
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     * @throws Zend_Controller_Action_Exception for invalid methods
     */
    public function __call($method, $args)
    {
        $method = strtolower($method);
        if ('goto' == $method) {
            return call_user_func_array(array($this, 'gotoSimple'), $args);
        }
        if ('setgoto' == $method) {
            return call_user_func_array(array($this, 'setGotoSimple'), $args);
        }
        if ('gotoandexit' == $method) {
            return call_user_func_array(array($this, 'gotoSimpleAndExit'), $args);
        }

        require_once 'Zend/Controller/Action/Exception.php';
        throw new Zend_Controller_Action_Exception(sprintf('Invalid method "%s" called on redirector', $method));
    }
}
PKpG[iT�V%Controller/Action/Helper/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Controller_Exception
 */
require_once 'Zend/Controller/Action/Exception.php';

/**
 * @see Zend_Controller_Action
 */
require_once 'Zend/Controller/Action.php';


/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Action_Helper_Abstract
{
    /**
     * $_actionController
     *
     * @var Zend_Controller_Action $_actionController
     */
    protected $_actionController = null;

    /**
     * @var mixed $_frontController
     */
    protected $_frontController = null;

    /**
     * setActionController()
     *
     * @param  Zend_Controller_Action $actionController
     * @return Zend_Controller_ActionHelper_Abstract Provides a fluent interface
     */
    public function setActionController(Zend_Controller_Action $actionController = null)
    {
        $this->_actionController = $actionController;
        return $this;
    }

    /**
     * Retrieve current action controller
     *
     * @return Zend_Controller_Action
     */
    public function getActionController()
    {
        return $this->_actionController;
    }

    /**
     * Retrieve front controller instance
     * 
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        if (null === $this->_frontController) {
            $this->_frontController = Zend_Controller_Front::getInstance();
        }

        return $this->_frontController;
    }

    /**
     * Hook into action controller initialization
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Hook into action controller preDispatch() workflow
     *
     * @return void
     */
    public function preDispatch()
    {
    }

    /**
     * Hook into action controller postDispatch() workflow
     *
     * @return void
     */
    public function postDispatch()
    {
    }

    /**
     * getRequest() -
     *
     * @return Zend_Controller_Request_Abstract $request
     */
    public function getRequest()
    {
        $controller = $this->getActionController();
        if (null === $controller) {
            $controller = $this->getFrontController();
        }

        return $controller->getRequest();
    }

    /**
     * getResponse() -
     *
     * @return Zend_Controller_Response_Abstract $response
     */
    public function getResponse()
    {
        $controller = $this->getActionController();
        if (null === $controller) {
            $controller = $this->getFrontController();
        }

        return $controller->getResponse();
    }

    /**
     * getName()
     *
     * @return string
     */
    public function getName()
    {
        $full_class_name = get_class($this);

        if (strpos($full_class_name, '_') !== false) {
            $helper_name = strrchr($full_class_name, '_');
            return ltrim($helper_name, '_');
        } else {
            return $full_class_name;
        }
    }
}
PKpG[���
99(Controller/Action/Helper/ActionStack.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ActionStack.php 11493 2008-09-23 14:25:11Z doctorrock83 $
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Add to action stack
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_ActionStack extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * @var Zend_Controller_Plugin_ActionStack
     */
    protected $_actionStack;

    /**
     * Constructor
     *
     * Register action stack plugin
     * 
     * @return void
     */
    public function __construct()
    {
        $front = Zend_Controller_Front::getInstance();
        if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack')) {
            /**
             * @see Zend_Controller_Plugin_ActionStack
             */
            require_once 'Zend/Controller/Plugin/ActionStack.php';
            $this->_actionStack = new Zend_Controller_Plugin_ActionStack();
            $front->registerPlugin($this->_actionStack, 97);
        } else {
            $this->_actionStack = $front->getPlugin('Zend_Controller_Plugin_ActionStack');
        }
    }

    /**
     * Push onto the stack 
     * 
     * @param  Zend_Controller_Request_Abstract $next 
     * @return Zend_Controller_Action_Helper_ActionStack Provides a fluent interface
     */
    public function pushStack(Zend_Controller_Request_Abstract $next)
    {
        $this->_actionStack->pushStack($next);
        return $this;
    }

    /**
     * Push a new action onto the stack
     * 
     * @param  string $action 
     * @param  string $controller 
     * @param  string $module 
     * @param  array  $params
     * @throws Zend_Controller_Action_Exception 
     * @return Zend_Controller_Action_Helper_ActionStack
     */
    public function actionToStack($action, $controller = null, $module = null, array $params = array())
    {
        if ($action instanceof Zend_Controller_Request_Abstract) {
            return $this->pushStack($action);
        } elseif (!is_string($action)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('ActionStack requires either a request object or minimally a string action');
        }

        $request = $this->getRequest();

        if ($request instanceof Zend_Controller_Request_Abstract === false){
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Request object not set yet');
        }
        
        $controller = (null === $controller) ? $request->getControllerName() : $controller;
        $module = (null === $module) ? $request->getModuleName() : $module;

        /**
         * @see Zend_Controller_Request_Simple
         */
        require_once 'Zend/Controller/Request/Simple.php';
        $newRequest = new Zend_Controller_Request_Simple($action, $controller, $module, $params);

        return $this->pushStack($newRequest);
    }

    /**
     * Perform helper when called as $this->_helper->actionStack() from an action controller
     *
     * Proxies to {@link simple()}
     *
     * @param  string $action
     * @param  string $controller
     * @param  string $module
     * @param  array $params
     * @return boolean
     */
    public function direct($action, $controller = null, $module = null, array $params = array())
    {
        return $this->actionToStack($action, $controller, $module, $params);
    }
}
PKpG[�Mׯ�(Controller/Action/Helper/AjaxContext.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AjaxContext.php 9098 2008-03-30 19:29:10Z thomas $
 */

/**
 * @see Zend_Controller_Action_Helper_ContextSwitch
 */
require_once 'Zend/Controller/Action/Helper/ContextSwitch.php';

/**
 * Simplify AJAX context switching based on requested format
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_AjaxContext extends Zend_Controller_Action_Helper_ContextSwitch
{
    /**
     * Controller property to utilize for context switching
     * @var string
     */
    protected $_contextKey = 'ajaxable';

    /**
     * Constructor
     *
     * Add HTML context
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->addContext('html', array('suffix' => 'ajax'));
    }

    /**
     * Initialize AJAX context switching
     *
     * Checks for XHR requests; if detected, attempts to perform context switch.
     * 
     * @param  string $format 
     * @return void
     */
    public function initContext($format = null)
    {
        $this->_currentContext = null;

        if (!$this->getRequest()->isXmlHttpRequest()) {
            return;
        }

        return parent::initContext($format);
    }
}
PKpG[/|F���+Controller/Action/Helper/FlashMessenger.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Flash Messenger - implement session-based messages
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Controller_Action_Helper_FlashMessenger extends Zend_Controller_Action_Helper_Abstract implements IteratorAggregate, Countable
{
    /**
     * $_messages - Messages from previous request
     *
     * @var array
     */
    static protected $_messages = array();

    /**
     * $_session - Zend_Session storage object
     *
     * @var Zend_Session
     */
    static protected $_session = null;

    /**
     * $_messageAdded - Wether a message has been previously added
     *
     * @var boolean
     */
    static protected $_messageAdded = false;

    /**
     * $_namespace - Instance namespace, default is 'default'
     *
     * @var string
     */
    protected $_namespace = 'default';

    /**
     * __construct() - Instance constructor, needed to get iterators, etc
     *
     * @param  string $namespace
     * @return void
     */
    public function __construct()
    {
        if (!self::$_session instanceof Zend_Session_Namespace) {
            self::$_session = new Zend_Session_Namespace($this->getName());
            foreach (self::$_session as $namespace => $messages) {
                self::$_messages[$namespace] = $messages;
                unset(self::$_session->{$namespace});
            }
        }
    }

    /**
     * postDispatch() - runs after action is dispatched, in this
     * case, it is resetting the namespace in case we have forwarded to a different
     * action, Flashmessage will be 'clean' (default namespace)
     *
     * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
     */
    public function postDispatch()
    {
        $this->resetNamespace();
        return $this;
    }

    /**
     * setNamespace() - change the namespace messages are added to, useful for
     * per action controller messaging between requests
     *
     * @param  string $namespace
     * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
     */
    public function setNamespace($namespace = 'default')
    {
        $this->_namespace = $namespace;
        return $this;
    }

    /**
     * resetNamespace() - reset the namespace to the default
     *
     * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
     */
    public function resetNamespace()
    {
        $this->setNamespace();
        return $this;
    }

    /**
     * addMessage() - Add a message to flash message
     *
     * @param  string $message
     * @return Zend_Controller_Action_Helper_FlashMessenger Provides a fluent interface
     */
    public function addMessage($message)
    {
        if (self::$_messageAdded === false) {
            self::$_session->setExpirationHops(1, null, true);
        }

        if (!is_array(self::$_session->{$this->_namespace})) {
            self::$_session->{$this->_namespace} = array();
        }

        self::$_session->{$this->_namespace}[] = $message;

        return $this;
    }

    /**
     * hasMessages() - Wether a specific namespace has messages
     *
     * @return boolean
     */
    public function hasMessages()
    {
        return isset(self::$_messages[$this->_namespace]);
    }

    /**
     * getMessages() - Get messages from a specific namespace
     *
     * @return array
     */
    public function getMessages()
    {
        if ($this->hasMessages()) {
            return self::$_messages[$this->_namespace];
        }

        return array();
    }

    /**
     * Clear all messages from the previous request & current namespace
     *
     * @return boolean True if messages were cleared, false if none existed
     */
    public function clearMessages()
    {
        if ($this->hasMessages()) {
            unset(self::$_messages[$this->_namespace]);
            return true;
        }

        return false;
    }

    /**
     * hasCurrentMessages() - check to see if messages have been added to current
     * namespace within this request
     *
     * @return boolean
     */
    public function hasCurrentMessages()
    {
        return isset(self::$_session->{$this->_namespace});
    }

    /**
     * getCurrentMessages() - get messages that have been added to the current
     * namespace within this request
     *
     * @return array
     */
    public function getCurrentMessages()
    {
        if ($this->hasCurrentMessages()) {
            return self::$_session->{$this->_namespace};
        }

        return array();
    }

    /**
     * clear messages from the current request & current namespace
     *
     * @return boolean
     */
    public function clearCurrentMessages()
    {
        if ($this->hasCurrentMessages()) {
            unset(self::$_session->{$this->_namespace});
            return true;
        }
        
        return false;
    }
    
    /**
     * getIterator() - complete the IteratorAggregate interface, for iterating
     *
     * @return ArrayObject
     */
    public function getIterator()
    {
        if ($this->hasMessages()) {
            return new ArrayObject($this->getMessages());
        }

        return new ArrayObject();
    }

    /**
     * count() - Complete the countable interface
     *
     * @return int
     */
    public function count()
    {
        if ($this->hasMessages()) {
            return count($this->getMessages());
        }

        return 0;
    }

    /**
     * Strategy pattern: proxy to addMessage()
     * 
     * @param  string $message 
     * @return void
     */
    public function direct($message)
    {
        return $this->addMessage($message);
    }
}
PKpG[�9�
epep)Controller/Action/Helper/ViewRenderer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * @see Zend_View
 */
require_once 'Zend/View.php';

/**
 * View script integration
 *
 * Zend_Controller_Action_Helper_ViewRenderer provides transparent view
 * integration for action controllers. It allows you to create a view object
 * once, and populate it throughout all actions. Several global options may be
 * set:
 *
 * - noController: if set true, render() will not look for view scripts in
 *   subdirectories named after the controller
 * - viewSuffix: what view script filename suffix to use
 *
 * The helper autoinitializes the action controller view preDispatch(). It
 * determines the path to the class file, and then determines the view base
 * directory from there. It also uses the module name as a class prefix for
 * helpers and views such that if your module name is 'Search', it will set the
 * helper class prefix to 'Search_View_Helper' and the filter class prefix to ;
 * 'Search_View_Filter'.
 *
 * Usage:
 * <code>
 * // In your bootstrap:
 * Zend_Controller_Action_HelperBroker::addHelper(new Zend_Controller_Action_Helper_ViewRenderer());
 *
 * // In your action controller methods:
 * $viewHelper = $this->_helper->getHelper('view');
 *
 * // Don't use controller subdirectories
 * $viewHelper->setNoController(true);
 *
 * // Specify a different script to render:
 * $this->_helper->view('form');
 *
 * </code>
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_ViewRenderer extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * @var Zend_View_Interface
     */
    public $view;

    /**
     * Word delimiters
     * @var array
     */
    protected $_delimiters;

    /**
     * Front controller instance
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * @var Zend_Filter_Inflector
     */
    protected $_inflector;

    /**
     * Inflector target
     * @var string
     */
    protected $_inflectorTarget = '';

    /**
     * Current module directory
     * @var string
     */
    protected $_moduleDir = '';

    /**
     * Whether or not to autorender using controller name as subdirectory;
     * global setting (not reset at next invocation)
     * @var boolean
     */
    protected $_neverController = false;

    /**
     * Whether or not to autorender postDispatch; global setting (not reset at
     * next invocation)
     * @var boolean
     */
    protected $_neverRender     = false;

    /**
     * Whether or not to use a controller name as a subdirectory when rendering
     * @var boolean
     */
    protected $_noController    = false;

    /**
     * Whether or not to autorender postDispatch; per controller/action setting (reset
     * at next invocation)
     * @var boolean
     */
    protected $_noRender        = false;

    /**
     * Characters representing path delimiters in the controller
     * @var string|array
     */
    protected $_pathDelimiters;

    /**
     * Which named segment of the response to utilize
     * @var string
     */
    protected $_responseSegment = null;

    /**
     * Which action view script to render
     * @var string
     */
    protected $_scriptAction    = null;

    /**
     * View object basePath
     * @var string
     */
    protected $_viewBasePathSpec = ':moduleDir/views';

    /**
     * View script path specification string
     * @var string
     */
    protected $_viewScriptPathSpec = ':controller/:action.:suffix';

    /**
     * View script path specification string, minus controller segment
     * @var string
     */
    protected $_viewScriptPathNoControllerSpec = ':action.:suffix';

    /**
     * View script suffix
     * @var string
     */
    protected $_viewSuffix      = 'phtml';

    /**
     * Constructor
     *
     * Optionally set view object and options.
     *
     * @param  Zend_View_Interface $view
     * @param  array               $options
     * @return void
     */
    public function __construct(Zend_View_Interface $view = null, array $options = array())
    {
        if (null !== $view) {
            $this->setView($view);
        }

        if (!empty($options)) {
            $this->_setOptions($options);
        }
    }
    
    /**
     * Clone - also make sure the view is cloned.
     *
     * @return void
     */
    public function __clone()
    {
        if (isset($this->view) && $this->view instanceof Zend_View_Interface) {
            $this->view = clone $this->view;
            
        }
    }

    /**
     * Set the view object
     *
     * @param  Zend_View_Interface $view
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
        return $this;
    }

    /**
     * Get current module name
     * 
     * @return string
     */
    public function getModule()
    {
        $request = $this->getRequest();
        $module  = $request->getModuleName();
        if (null === $module) {
            $module = $this->getFrontController()->getDispatcher()->getDefaultModule();
        }

        return $module;
    }

    /**
     * Get module directory
     *
     * @throws Zend_Controller_Action_Exception
     * @return string
     */
    public function getModuleDirectory()
    {
        $module    = $this->getModule();
        $moduleDir = $this->getFrontController()->getControllerDirectory($module);
        if ((null === $moduleDir) || is_array($moduleDir)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('ViewRenderer cannot locate module directory');
        }
        $this->_moduleDir = dirname($moduleDir);
        return $this->_moduleDir;
    }

    /**
     * Get inflector
     * 
     * @return Zend_Filter_Inflector
     */
    public function getInflector()
    {
        if (null === $this->_inflector) {
            /**
             * @see Zend_Filter_Inflector
             */
            require_once 'Zend/Filter/Inflector.php';
            /**
             * @see Zend_Filter_PregReplace
             */
            require_once 'Zend/Filter/PregReplace.php';
            /**
             * @see Zend_Filter_Word_UnderscoreToSeparator
             */
            require_once 'Zend/Filter/Word/UnderscoreToSeparator.php';
            $this->_inflector = new Zend_Filter_Inflector();
            $this->_inflector->setStaticRuleReference('moduleDir', $this->_moduleDir) // moduleDir must be specified before the less specific 'module'
                 ->addRules(array(
                     ':module'     => array('Word_CamelCaseToDash', 'StringToLower'),
                     ':controller' => array('Word_CamelCaseToDash', new Zend_Filter_Word_UnderscoreToSeparator('/'), 'StringToLower', new Zend_Filter_PregReplace('/\./', '-')),
                     ':action'     => array('Word_CamelCaseToDash', new Zend_Filter_PregReplace('#[^a-z0-9' . preg_quote('/', '#') . ']+#i', '-'), 'StringToLower'),
                 ))
                 ->setStaticRuleReference('suffix', $this->_viewSuffix)
                 ->setTargetReference($this->_inflectorTarget);
        }

        // Ensure that module directory is current
        $this->getModuleDirectory();

        return $this->_inflector;
    }

    /**
     * Set inflector
     * 
     * @param  Zend_Filter_Inflector $inflector 
     * @param  boolean               $reference Whether the moduleDir, target, and suffix should be set as references to ViewRenderer properties
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setInflector(Zend_Filter_Inflector $inflector, $reference = false)
    {
        $this->_inflector = $inflector;
        if ($reference) {
            $this->_inflector->setStaticRuleReference('suffix', $this->_viewSuffix)
                 ->setStaticRuleReference('moduleDir', $this->_moduleDir)
                 ->setTargetReference($this->_inflectorTarget);
        }
        return $this;
    }

    /**
     * Set inflector target
     * 
     * @param  string $target 
     * @return void
     */
    protected function _setInflectorTarget($target)
    {
        $this->_inflectorTarget = (string) $target;
    }

    /**
     * Set internal module directory representation
     * 
     * @param  string $dir 
     * @return void
     */
    protected function _setModuleDir($dir)
    {
        $this->_moduleDir = (string) $dir;
    }

    /**
     * Get internal module directory representation
     * 
     * @return string
     */
    protected function _getModuleDir()
    {
        return $this->_moduleDir;
    }

    /**
     * Generate a class prefix for helper and filter classes
     *
     * @return string
     */
    protected function _generateDefaultPrefix()
    {
        $default = 'Zend_View';
        if (null === $this->_actionController) {
            return $default;
        }

        $class = get_class($this->_actionController);

        if (!strstr($class, '_')) {
            return $default;
        }

        $module = $this->getModule();
        if ('default' == $module) {
            return $default;
        }

        $prefix = substr($class, 0, strpos($class, '_')) . '_View';

        return $prefix;
    }

    /**
     * Retrieve base path based on location of current action controller
     *
     * @return string
     */
    protected function _getBasePath()
    {
        if (null === $this->_actionController) {
            return './views';
        }

        $inflector = $this->getInflector();
        $this->_setInflectorTarget($this->getViewBasePathSpec());
        
        $dispatcher = $this->_frontController->getDispatcher();
        $request = $this->getRequest();

        $parts = array(
            'module'     => (($moduleName = $request->getModuleName()) != '') ? $dispatcher->formatModuleName($moduleName) : $moduleName,
            'controller' => $request->getControllerName(),
            'action'     => $dispatcher->formatActionName($request->getActionName())
            );

        $path = $inflector->filter($parts);
        return $path;
    }

    /**
     * Set options
     *
     * @param  array $options
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    protected function _setOptions(array $options)
    {
        foreach ($options as $key => $value)
        {
            switch ($key) {
                case 'neverRender':
                case 'neverController':
                case 'noController':
                case 'noRender':
                    $property = '_' . $key;
                    $this->{$property} = ($value) ? true : false;
                    break;
                case 'responseSegment':
                case 'scriptAction':
                case 'viewBasePathSpec':
                case 'viewScriptPathSpec':
                case 'viewScriptPathNoControllerSpec':
                case 'viewSuffix':
                    $property = '_' . $key;
                    $this->{$property} = (string) $value;
                    break;
                default:
                    break;
            }
        }

        return $this;
    }

    /**
     * Initialize the view object
     *
     * $options may contain the following keys:
     * - neverRender - flag dis/enabling postDispatch() autorender (affects all subsequent calls)
     * - noController - flag indicating whether or not to look for view scripts in subdirectories named after the controller
     * - noRender - flag indicating whether or not to autorender postDispatch()
     * - responseSegment - which named response segment to render a view script to
     * - scriptAction - what action script to render
     * - viewBasePathSpec - specification to use for determining view base path
     * - viewScriptPathSpec - specification to use for determining view script paths
     * - viewScriptPathNoControllerSpec - specification to use for determining view script paths when noController flag is set
     * - viewSuffix - what view script filename suffix to use
     *
     * @param  string $path
     * @param  string $prefix
     * @param  array  $options
     * @throws Zend_Controller_Action_Exception
     * @return void
     */
    public function initView($path = null, $prefix = null, array $options = array())
    {
        if (null === $this->view) {
            $this->setView(new Zend_View());
        }

        // Reset some flags every time
        $options['noController'] = (isset($options['noController'])) ? $options['noController'] : false;
        $options['noRender']     = (isset($options['noRender'])) ? $options['noRender'] : false;
        $this->_scriptAction     = null;
        $this->_responseSegment  = null;

        // Set options first; may be used to determine other initializations
        $this->_setOptions($options);

        // Get base view path
        if (empty($path)) {
            $path = $this->_getBasePath();
            if (empty($path)) {
                /**
                 * @see Zend_Controller_Action_Exception
                 */
                require_once 'Zend/Controller/Action/Exception.php';
                throw new Zend_Controller_Action_Exception('ViewRenderer initialization failed: retrieved view base path is empty');
            }
        }

        if (null === $prefix) {
            $prefix = $this->_generateDefaultPrefix();
        }

        // Determine if this path has already been registered
        $currentPaths = $this->view->getScriptPaths();
        $path         = str_replace(array('/', '\\'), '/', $path);
        $pathExists   = false;
        foreach ($currentPaths as $tmpPath) {
            $tmpPath = str_replace(array('/', '\\'), '/', $tmpPath);
            if (strstr($tmpPath, $path)) {
                $pathExists = true;
                break;
            }
        }
        if (!$pathExists) {
            $this->view->addBasePath($path, $prefix);
        }

        // Register view with action controller (unless already registered)
        if ((null !== $this->_actionController) && (null === $this->_actionController->view)) {
            $this->_actionController->view       = $this->view;
            $this->_actionController->viewSuffix = $this->_viewSuffix;
        }
    }

    /**
     * init - initialize view
     *
     * @return void
     */
    public function init()
    {
        if ($this->getFrontController()->getParam('noViewRenderer')) {
            return;
        }

        $this->initView();
    }

    /**
     * Set view basePath specification
     *
     * Specification can contain one or more of the following:
     * - :moduleDir - current module directory
     * - :controller - name of current controller in the request
     * - :action - name of current action in the request
     * - :module - name of current module in the request
     *
     * @param  string $path
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setViewBasePathSpec($path)
    {
        $this->_viewBasePathSpec = (string) $path;
        return $this;
    }

    /**
     * Retrieve the current view basePath specification string
     *
     * @return string
     */
    public function getViewBasePathSpec()
    {
        return $this->_viewBasePathSpec;
    }

    /**
     * Set view script path specification
     *
     * Specification can contain one or more of the following:
     * - :moduleDir - current module directory
     * - :controller - name of current controller in the request
     * - :action - name of current action in the request
     * - :module - name of current module in the request
     *
     * @param  string $path
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setViewScriptPathSpec($path)
    {
        $this->_viewScriptPathSpec = (string) $path;
        return $this;
    }

    /**
     * Retrieve the current view script path specification string
     *
     * @return string
     */
    public function getViewScriptPathSpec()
    {
        return $this->_viewScriptPathSpec;
    }

    /**
     * Set view script path specification (no controller variant)
     *
     * Specification can contain one or more of the following:
     * - :moduleDir - current module directory
     * - :controller - name of current controller in the request
     * - :action - name of current action in the request
     * - :module - name of current module in the request
     *
     * :controller will likely be ignored in this variant.
     *
     * @param  string $path
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setViewScriptPathNoControllerSpec($path)
    {
        $this->_viewScriptPathNoControllerSpec = (string) $path;
        return $this;
    }

    /**
     * Retrieve the current view script path specification string (no controller variant)
     *
     * @return string
     */
    public function getViewScriptPathNoControllerSpec()
    {
        return $this->_viewScriptPathNoControllerSpec;
    }

    /**
     * Get a view script based on an action and/or other variables
     *
     * Uses values found in current request if no values passed in $vars.
     *
     * If {@link $_noController} is set, uses {@link $_viewScriptPathNoControllerSpec};
     * otherwise, uses {@link $_viewScriptPathSpec}.
     *
     * @param  string $action
     * @param  array  $vars
     * @return string
     */
    public function getViewScript($action = null, array $vars = array())
    {
        $request = $this->getRequest();
        if ((null === $action) && (!isset($vars['action']))) {
            $action = $this->getScriptAction();
            if (null === $action) {
                $action = $request->getActionName();
            }
            $vars['action'] = $action;
        } elseif (null !== $action) {
            $vars['action'] = $action;
        }

        $inflector = $this->getInflector();
        if ($this->getNoController() || $this->getNeverController()) {
            $this->_setInflectorTarget($this->getViewScriptPathNoControllerSpec());
        } else {
            $this->_setInflectorTarget($this->getViewScriptPathSpec());
        }
        return $this->_translateSpec($vars);
    }

    /**
     * Set the neverRender flag (i.e., globally dis/enable autorendering)
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setNeverRender($flag = true)
    {
        $this->_neverRender = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve neverRender flag value
     *
     * @return boolean
     */
    public function getNeverRender()
    {
        return $this->_neverRender;
    }

    /**
     * Set the noRender flag (i.e., whether or not to autorender)
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setNoRender($flag = true)
    {
        $this->_noRender = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve noRender flag value
     *
     * @return boolean
     */
    public function getNoRender()
    {
        return $this->_noRender;
    }

    /**
     * Set the view script to use
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setScriptAction($name)
    {
        $this->_scriptAction = (string) $name;
        return $this;
    }

    /**
     * Retrieve view script name
     *
     * @return string
     */
    public function getScriptAction()
    {
        return $this->_scriptAction;
    }

    /**
     * Set the response segment name
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setResponseSegment($name)
    {
        if (null === $name) {
            $this->_responseSegment = null;
        } else {
            $this->_responseSegment = (string) $name;
        }

        return $this;
    }

    /**
     * Retrieve named response segment name
     *
     * @return string
     */
    public function getResponseSegment()
    {
        return $this->_responseSegment;
    }

    /**
     * Set the noController flag (i.e., whether or not to render into controller subdirectories)
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setNoController($flag = true)
    {
        $this->_noController = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve noController flag value
     *
     * @return boolean
     */
    public function getNoController()
    {
        return $this->_noController;
    }

    /**
     * Set the neverController flag (i.e., whether or not to render into controller subdirectories)
     *
     * @param  boolean $flag
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setNeverController($flag = true)
    {
        $this->_neverController = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve neverController flag value
     *
     * @return boolean
     */
    public function getNeverController()
    {
        return $this->_neverController;
    }

    /**
     * Set view script suffix
     *
     * @param  string $suffix
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setViewSuffix($suffix)
    {
        $this->_viewSuffix = (string) $suffix;
        return $this;
    }

    /**
     * Get view script suffix
     *
     * @return string
     */
    public function getViewSuffix()
    {
        return $this->_viewSuffix;
    }

    /**
     * Set options for rendering a view script
     *
     * @param  string  $action       View script to render
     * @param  string  $name         Response named segment to render to
     * @param  boolean $noController Whether or not to render within a subdirectory named after the controller
     * @return Zend_Controller_Action_Helper_ViewRenderer Provides a fluent interface
     */
    public function setRender($action = null, $name = null, $noController = null)
    {
        if (null !== $action) {
            $this->setScriptAction($action);
        }

        if (null !== $name) {
            $this->setResponseSegment($name);
        }

        if (null !== $noController) {
            $this->setNoController($noController);
        }

        return $this;
    }

    /**
     * Inflect based on provided vars
     *
     * Allowed variables are:
     * - :moduleDir - current module directory
     * - :module - current module name
     * - :controller - current controller name
     * - :action - current action name
     * - :suffix - view script file suffix
     *
     * @param  array $vars
     * @return string
     */
    protected function _translateSpec(array $vars = array())
    {
        $inflector  = $this->getInflector();
        $request    = $this->getRequest();
        $dispatcher = $this->_frontController->getDispatcher();
        $module     = $dispatcher->formatModuleName($request->getModuleName());
        $controller = $request->getControllerName();
        $action     = $dispatcher->formatActionName($request->getActionName());

        $params     = compact('module', 'controller', 'action');
        foreach ($vars as $key => $value) {
            switch ($key) {
                case 'module':
                case 'controller':
                case 'action':
                case 'moduleDir':
                case 'suffix':
                    $params[$key] = (string) $value;
                    break;
                default:
                    break;
            }
        }

        if (isset($params['suffix'])) {
            $origSuffix = $this->getViewSuffix();
            $this->setViewSuffix($params['suffix']);
        }
        if (isset($params['moduleDir'])) {
            $origModuleDir = $this->_getModuleDir();
            $this->_setModuleDir($params['moduleDir']);
        }

        $filtered = $inflector->filter($params);

        if (isset($params['suffix'])) {
            $this->setViewSuffix($origSuffix);
        }
        if (isset($params['moduleDir'])) {
            $this->_setModuleDir($origModuleDir);
        }

        return $filtered;
    }

    /**
     * Render a view script (optionally to a named response segment)
     *
     * Sets the noRender flag to true when called.
     *
     * @param  string $script
     * @param  string $name
     * @return void
     */
    public function renderScript($script, $name = null)
    {
        if (null === $name) {
            $name = $this->getResponseSegment();
        }

        $this->getResponse()->appendBody(
            $this->view->render($script),
            $name
        );

        $this->setNoRender();
    }

    /**
     * Render a view based on path specifications
     *
     * Renders a view based on the view script path specifications.
     *
     * @param  string  $action
     * @param  string  $name
     * @param  boolean $noController
     * @return void
     */
    public function render($action = null, $name = null, $noController = null)
    {
        $this->setRender($action, $name, $noController);
        $path = $this->getViewScript();
        $this->renderScript($path, $name);
    }

    /**
     * Render a script based on specification variables
     *
     * Pass an action, and one or more specification variables (view script suffix)
     * to determine the view script path, and render that script.
     *
     * @param  string $action
     * @param  array  $vars
     * @param  string $name
     * @return void
     */
    public function renderBySpec($action = null, array $vars = array(), $name = null)
    {
        if (null !== $name) {
            $this->setResponseSegment($name);
        }

        $path = $this->getViewScript($action, $vars);

        $this->renderScript($path);
    }

    /**
     * postDispatch - auto render a view
     *
     * Only autorenders if:
     * - _noRender is false
     * - action controller is present
     * - request has not been re-dispatched (i.e., _forward() has not been called)
     * - response is not a redirect
     *
     * @return void
     */
    public function postDispatch()
    {
        if ($this->_shouldRender()) {
            $this->render();
        }
    }

    /**
     * Should the ViewRenderer render a view script?
     * 
     * @return boolean
     */
    protected function _shouldRender()
    {
        return (!$this->getFrontController()->getParam('noViewRenderer')
            && !$this->_neverRender
            && !$this->_noRender
            && (null !== $this->_actionController)
            && $this->getRequest()->isDispatched()
            && !$this->getResponse()->isRedirect()
        );
    }

    /**
     * Use this helper as a method; proxies to setRender()
     *
     * @param  string  $action
     * @param  string  $name
     * @param  boolean $noController
     * @return void
     */
    public function direct($action = null, $name = null, $noController = null)
    {
        $this->setRender($action, $name, $noController);
    }
}
PKpG[�U��
�
!Controller/Action/Helper/Json.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Json.php 9098 2008-03-30 19:29:10Z thomas $
 */

/**
 * @see Zend_Controller_Action_Helper_Abstract
 */
require_once 'Zend/Controller/Action/Helper/Abstract.php';

/**
 * Simplify AJAX context switching based on requested format
 *
 * @uses       Zend_Controller_Action_Helper_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_Json extends Zend_Controller_Action_Helper_Abstract
{
    /**
     * Suppress exit when sendJson() called
     * @var boolean
     */
    public $suppressExit = false;

    /**
     * Create JSON response
     *
     * Encodes and returns data to JSON. Content-Type header set to 
     * 'application/json', and disables layouts and viewRenderer (if being 
     * used).
     *
     * @param  mixed   $data
     * @param  boolean $keepLayouts
     * @throws Zend_Controller_Action_Helper_Json
     * @return string
     */
    public function encodeJson($data, $keepLayouts = false)
    {
        /**
         * @see Zend_View_Helper_Json
         */
        require_once 'Zend/View/Helper/Json.php';
        $jsonHelper = new Zend_View_Helper_Json();
        $data = $jsonHelper->json($data, $keepLayouts);

        if (!$keepLayouts) {
            /**
             * @see Zend_Controller_Action_HelperBroker
             */
            require_once 'Zend/Controller/Action/HelperBroker.php';
            Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
        }

        return $data;
    }

    /**
     * Encode JSON response and immediately send
     * 
     * @param  mixed   $data 
     * @param  boolean $keepLayouts 
     * @return string|void
     */
    public function sendJson($data, $keepLayouts = false)
    {
        $data = $this->encodeJson($data, $keepLayouts);
        $response = $this->getResponse();
        $response->setBody($data);

        if (!$this->suppressExit) {
            $response->sendResponse();
            exit;
        }

        return $data;
    }

    /**
     * Strategy pattern: call helper as helper broker method
     *
     * Allows encoding JSON. If $sendNow is true, immediately sends JSON 
     * response. 
     * 
     * @param  mixed   $data 
     * @param  boolean $sendNow 
     * @param  boolean $keepLayouts 
     * @return string|void
     */
    public function direct($data, $sendNow = true, $keepLayouts = false)
    {
        if ($sendNow) {
            return $this->sendJson($data, $keepLayouts);
        }
        return $this->encodeJson($data, $keepLayouts);
    }
}
PKpG[	Ld�-Controller/Action/Helper/AutoCompleteDojo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AutoCompleteDojo.php 12301 2008-11-05 16:04:12Z matthew $
 */

/**
 * @see Zend_Controller_Action_Helper_AutoComplete_Abstract
 */
require_once 'Zend/Controller/Action/Helper/AutoComplete/Abstract.php';

/**
 * Create and send Dojo-compatible autocompletion lists
 *
 * @uses       Zend_Controller_Action_Helper_AutoComplete_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_AutoCompleteDojo extends Zend_Controller_Action_Helper_AutoComplete_Abstract
{
    /**
     * Validate data for autocompletion
     *
     * Stub; unused
     * 
     * @param  mixed $data 
     * @return boolean
     */
    public function validateData($data)
    {
        return true;
    }

    /**
     * Prepare data for autocompletion
     * 
     * @param  mixed   $data 
     * @param  boolean $keepLayouts 
     * @return string
     */
    public function prepareAutoCompletion($data, $keepLayouts = false)
    {
        if (!$data instanceof Zend_Dojo_Data) {
            require_once 'Zend/Dojo/Data.php';
            $items = array();
            foreach ($data as $key => $value) {
                $items[] = array('label' => $value, 'name' => $value);
            }
            $data = new Zend_Dojo_Data('name', $items);
        }

        if (!$keepLayouts) {
            require_once 'Zend/Controller/Action/HelperBroker.php';
            Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);

            require_once 'Zend/Layout.php';
            $layout = Zend_Layout::getMvcInstance();
            if ($layout instanceof Zend_Layout) {
                $layout->disableLayout();
            }
        }

        $response = Zend_Controller_Front::getInstance()->getResponse();
        $response->setHeader('Content-Type', 'application/json');

        return $data->toJson();
    }
}
PKpG[�p��	�	6Controller/Action/Helper/AutoCompleteScriptaculous.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AutoCompleteScriptaculous.php 9098 2008-03-30 19:29:10Z thomas $
 */

/**
 * @see Zend_Controller_Action_Helper_AutoComplete_Abstract
 */
require_once 'Zend/Controller/Action/Helper/AutoComplete/Abstract.php';

/**
 * Create and send Scriptaculous-compatible autocompletion lists
 *
 * @uses       Zend_Controller_Action_Helper_AutoComplete_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action_Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Helper_AutoCompleteScriptaculous extends Zend_Controller_Action_Helper_AutoComplete_Abstract
{
    /**
     * Validate data for autocompletion
     * 
     * @param  mixed $data 
     * @return bool
     */
    public function validateData($data)
    {
        if (!is_array($data) && !is_scalar($data)) {
            return false;
        }

        return true;
    }

    /**
     * Prepare data for autocompletion
     * 
     * @param  mixed   $data 
     * @param  boolean $keepLayouts 
     * @throws Zend_Controller_Action_Exception
     * @return string
     */
    public function prepareAutoCompletion($data, $keepLayouts = false)
    {
        if (!$this->validateData($data)) {
            /**
             * @see Zend_Controller_Action_Exception
             */
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Invalid data passed for autocompletion');
        }

        $data = (array) $data;
        $data = '<ul><li>' . implode('</li><li>', $data) . '</li></ul>';

        if (!$keepLayouts) {
            $this->disableLayouts();
        }

        return $data;
    }
}
PKpG[_Dx Controller/Action/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Controller_Exception
 */
require_once 'Zend/Controller/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_Exception extends Zend_Controller_Exception
{}
PKpG[�\S��!�!0Controller/Action/HelperBroker/PriorityStack.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_HelperBroker_PriorityStack implements IteratorAggregate, ArrayAccess, Countable
{

    /** @protected */
    protected $_helpersByPriority = array();
    protected $_helpersByNameRef  = array();
    protected $_nextDefaultPriority = 1;
    
    /**
     * Magic property overloading for returning helper by name
     *
     * @param string $helperName    The helper name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function __get($helperName)
    {
        if (!array_key_exists($helperName, $this->_helpersByNameRef)) {
            return false;
        }
        
        return $this->_helpersByNameRef[$helperName];
    }
    
    /**
     * Magic property overloading for returning if helper is set by name
     *
     * @param string $helperName    The helper name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function __isset($helperName)
    {
        return array_key_exists($helperName, $this->_helpersByNameRef);
    }
    
    /**
     * Magic property overloading for unsetting if helper is exists by name
     *
     * @param string $helperName    The helper name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function __unset($helperName)
    {
        return $this->offsetUnset($helperName);
    }
    
    /**
     * push helper onto the stack
     *
     * @param Zend_Controller_Action_Helper_Abstract $helper
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public function push(Zend_Controller_Action_Helper_Abstract $helper)
    {
        $this->offsetSet($this->getNextFreeHigherPriority(), $helper);
        return $this;
    }
    
    /**
     * Return something iterable
     *
     * @return array
     */
    public function getIterator()
    {
        return new ArrayObject($this->_helpersByPriority);
    }
    
    /**
     * offsetExists()
     *
     * @param int|string $priorityOrHelperName 
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public function offsetExists($priorityOrHelperName)
    {
        if (is_string($priorityOrHelperName)) {
            return array_key_exists($priorityOrHelperName, $this->_helpersByNameRef);
        } else {
            return array_key_exists($priorityOrHelperName, $this->_helpersByPriority);
        }
    }
    
    /**
     * offsetGet()
     *
     * @param int|string $priorityOrHelperName
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public function offsetGet($priorityOrHelperName)
    {
        if (!$this->offsetExists($priorityOrHelperName)) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('A helper with priority ' . $priority . ' does not exist.');
        }
        
        if (is_string($priorityOrHelperName)) {
            return $this->_helpersByNameRef[$priorityOrHelperName];
        } else {
            return $this->_helpersByPriority[$priorityOrHelperName];
        }
    }
    
    /**
     * offsetSet()
     *
     * @param int $priority
     * @param Zend_Controller_Action_Helper_Abstract $helper
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public function offsetSet($priority, $helper)
    {
        $priority = (int) $priority;

        if (!$helper instanceof Zend_Controller_Action_Helper_Abstract) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('$helper must extend Zend_Controller_Action_Helper_Abstract.');
        }
        
        if (array_key_exists($helper->getName(), $this->_helpersByNameRef)) {
            // remove any object with the same name to retain BC compailitbility
            // @todo At ZF 2.0 time throw an exception here.
            $this->offsetUnset($helper->getName());
        }
        
        if (array_key_exists($priority, $this->_helpersByPriority)) {
            $priority = $this->getNextFreeHigherPriority($priority);  // ensures LIFO
            trigger_error("A helper with the same priority already exists, reassigning to $priority", E_USER_WARNING);
        }
        
        $this->_helpersByPriority[$priority] = $helper;
        $this->_helpersByNameRef[$helper->getName()] = $helper;

        if ($priority == ($nextFreeDefault = $this->getNextFreeHigherPriority($this->_nextDefaultPriority))) {
            $this->_nextDefaultPriority = $nextFreeDefault;
        }
        
        krsort($this->_helpersByPriority);  // always make sure priority and LIFO are both enforced
        return $this;
    }
    
    /**
     * offsetUnset()
     *
     * @param int|string $priorityOrHelperName Priority integer or the helper name
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public function offsetUnset($priorityOrHelperName)
    {
        if (!$this->offsetExists($priorityOrHelperName)) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('A helper with priority or name ' . $priorityOrHelperName . ' does not exist.');
        }
        
        if (is_string($priorityOrHelperName)) {
            $helperName = $priorityOrHelperName;
            $helper = $this->_helpersByNameRef[$helperName];
            $priority = array_search($helper, $this->_helpersByPriority, true);
        } else {
            $priority = $priorityOrHelperName;
            $helperName = $this->_helpersByPriority[$priorityOrHelperName]->getName();
        }
        
        unset($this->_helpersByNameRef[$helperName]);
        unset($this->_helpersByPriority[$priority]);
        return $this;
    }
    
    /**
     * return the count of helpers
     *
     * @return int
     */
    public function count()
    {
        return count($this->_helpersByPriority);
    }
    
    /**
     * Find the next free higher priority.  If an index is given, it will
     * find the next free highest priority after it.
     *
     * @param int $indexPriority OPTIONAL
     * @return int
     */
    public function getNextFreeHigherPriority($indexPriority = null)
    {
        if ($indexPriority == null) {
            $indexPriority = $this->_nextDefaultPriority;
        }
        
        $priorities = array_keys($this->_helpersByPriority);

        while (in_array($indexPriority, $priorities)) {
            $indexPriority++;
        }
        
        return $indexPriority;
    }
    
    /**
     * Find the next free lower priority.  If an index is given, it will
     * find the next free lower priority before it.
     *
     * @param int $indexPriority
     * @return int
     */
    public function getNextFreeLowerPriority($indexPriority = null)
    {
        if ($indexPriority == null) {
            $indexPriority = $this->_nextDefaultPriority;
        }
        
        $priorities = array_keys($this->_helpersByPriority);

        while (in_array($indexPriority, $priorities)) {
            $indexPriority--;
        }
        
        return $indexPriority;        
    }
    
    /**
     * return the highest priority
     *
     * @return int
     */
    public function getHighestPriority()
    {
        return max(array_keys($this->_helpersByPriority));
    }
    
    /**
     * return the lowest priority
     *
     * @return int
     */
    public function getLowestPriority()
    {
        return min(array_keys($this->_helpersByPriority));
    }
    
    /**
     * return the helpers referenced by name
     *
     * @return array
     */
    public function getHelpersByName()
    {
        return $this->_helpersByNameRef;
    }
    
}
PKpG[d�"D)D)"Controller/Action/HelperBroker.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Controller_Action_HelperBroker_PriorityStack
 */
require_once 'Zend/Controller/Action/HelperBroker/PriorityStack.php';

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Zend_Controller_Action
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Action_HelperBroker
{
    /**
     * $_actionController - ActionController reference
     *
     * @var Zend_Controller_Action
     */
    protected $_actionController;

    /**
     * @var Zend_Loader_PluginLoader_Interface
     */
    protected static $_pluginLoader;

    /**
     * $_helpers - Helper array
     *
     * @var Zend_Controller_Action_HelperBroker_PriorityStack
     */
    protected static $_stack = null;

    /**
     * Set PluginLoader for use with broker
     * 
     * @param  Zend_Loader_PluginLoader_Interface $loader 
     * @return void
     */
    public static function setPluginLoader($loader)
    {
        if ((null !== $loader) && (!$loader instanceof Zend_Loader_PluginLoader_Interface)) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Invalid plugin loader provided to HelperBroker');
        }
        self::$_pluginLoader = $loader;
    }

    /**
     * Retrieve PluginLoader
     * 
     * @return Zend_Loader_PluginLoader
     */
    public static function getPluginLoader()
    {
        if (null === self::$_pluginLoader) {
            require_once 'Zend/Loader/PluginLoader.php';
            self::$_pluginLoader = new Zend_Loader_PluginLoader(array(
                'Zend_Controller_Action_Helper' => 'Zend/Controller/Action/Helper/',
            ));
        }
        return self::$_pluginLoader;
    }

    /**
     * addPrefix() - Add repository of helpers by prefix
     *
     * @param string $prefix
     */
    static public function addPrefix($prefix)
    {
        $prefix = rtrim($prefix, '_');
        $path   = str_replace('_', DIRECTORY_SEPARATOR, $prefix);
        self::getPluginLoader()->addPrefixPath($prefix, $path);
    }

    /**
     * addPath() - Add path to repositories where Action_Helpers could be found.
     *
     * @param string $path
     * @param string $prefix Optional; defaults to 'Zend_Controller_Action_Helper'
     * @return void
     */
    static public function addPath($path, $prefix = 'Zend_Controller_Action_Helper')
    {
        self::getPluginLoader()->addPrefixPath($prefix, $path);
    }

    /**
     * addHelper() - Add helper objects
     *
     * @param Zend_Controller_Action_Helper_Abstract $helper
     * @return void
     */
    static public function addHelper(Zend_Controller_Action_Helper_Abstract $helper)
    {
        self::getStack()->push($helper);
        return;
    }

    /**
     * resetHelpers()
     *
     * @return void
     */
    static public function resetHelpers()
    {
        self::$_stack = null;
        return;
    }

    /**
     * Retrieve or initialize a helper statically
     *
     * Retrieves a helper object statically, loading on-demand if the helper
     * does not already exist in the stack. Always returns a helper, unless
     * the helper class cannot be found.
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public static function getStaticHelper($name)
    {
        $name  = self::_normalizeHelperName($name);
        $stack = self::getStack();
        
        if (!isset($stack->{$name})) {
            self::_loadHelper($name);
        }

        return $stack->{$name};
    }

    /**
     * getExistingHelper() - get helper by name
     *
     * Static method to retrieve helper object. Only retrieves helpers already
     * initialized with the broker (either via addHelper() or on-demand loading
     * via getHelper()).
     *
     * Throws an exception if the referenced helper does not exist in the
     * stack; use {@link hasHelper()} to check if the helper is registered
     * prior to retrieving it.
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_Abstract
     * @throws Zend_Controller_Action_Exception
     */
    public static function getExistingHelper($name)
    {
        $name  = self::_normalizeHelperName($name);
        $stack = self::getStack();
        
        if (!isset($stack->{$name})) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Action helper "' . $name . '" has not been registered with the helper broker');
        }

        return $stack->{$name};
    }

    /**
     * Return all registered helpers as helper => object pairs
     *
     * @return array
     */
    public static function getExistingHelpers()
    {
        return self::getStack()->getHelpersByName();
    }

    /**
     * Is a particular helper loaded in the broker?
     *
     * @param  string $name
     * @return boolean
     */
    public static function hasHelper($name)
    {
        $name = self::_normalizeHelperName($name);
        return isset(self::getStack()->{$name});
    }

    /**
     * Remove a particular helper from the broker
     *
     * @param  string $name
     * @return boolean
     */
    public static function removeHelper($name)
    {
        $name = self::_normalizeHelperName($name);
        $stack = self::getStack();
        if (isset($stack->{$name})) {
            unset($stack->{$name});
        }

        return false;
    }

    /**
     * Lazy load the priority stack and return it
     *
     * @return Zend_Controller_Action_HelperBroker_PriorityStack
     */
    public static function getStack()
    {
        if (self::$_stack == null) {
            self::$_stack = new Zend_Controller_Action_HelperBroker_PriorityStack();
        }
        
        return self::$_stack;
    }
    
    /**
     * Constructor
     *
     * @param Zend_Controller_Action $actionController
     * @return void
     */
    public function __construct(Zend_Controller_Action $actionController)
    {
        $this->_actionController = $actionController;
        foreach (self::getStack() as $helper) {
            $helper->setActionController($actionController);
            $helper->init();
        }
    }

    /**
     * notifyPreDispatch() - called by action controller dispatch method
     *
     * @return void
     */
    public function notifyPreDispatch()
    {
        foreach (self::getStack() as $helper) {
            $helper->preDispatch();
        }
    }

    /**
     * notifyPostDispatch() - called by action controller dispatch method
     *
     * @return void
     */
    public function notifyPostDispatch()
    {
        foreach (self::getStack() as $helper) {
            $helper->postDispatch();
        }
    }

    /**
     * getHelper() - get helper by name
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function getHelper($name)
    {
        $name  = self::_normalizeHelperName($name);
        $stack = self::getStack();

        if (!isset($stack->{$name})) {
            self::_loadHelper($name);
        }

        $helper = $stack->{$name};

        $initialize = false;
        if (null === ($actionController = $helper->getActionController())) {
            $initialize = true;
        } elseif ($actionController !== $this->_actionController) {
            $initialize = true;
        }

        if ($initialize) {
            $helper->setActionController($this->_actionController)
                   ->init();
        }

        return $helper;
    }

    /**
     * Method overloading
     *
     * @param  string $method
     * @param  array $args
     * @return mixed
     * @throws Zend_Controller_Action_Exception if helper does not have a direct() method
     */
    public function __call($method, $args)
    {
        $helper = $this->getHelper($method);
        if (!method_exists($helper, 'direct')) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Helper "' . $method . '" does not support overloading via direct()');
        }
        return call_user_func_array(array($helper, 'direct'), $args);
    }

    /**
     * Retrieve helper by name as object property
     *
     * @param  string $name
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function __get($name)
    {
        return $this->getHelper($name);
    }

    /**
     * Normalize helper name for lookups
     *
     * @param  string $name
     * @return string
     */
    protected static function _normalizeHelperName($name)
    {
        if (strpos($name, '_') !== false) {
            $name = str_replace(' ', '', ucwords(str_replace('_', ' ', $name)));
        }

        return ucfirst($name);
    }

    /**
     * Load a helper
     *
     * @param  string $name
     * @return void
     */
    protected static function _loadHelper($name)
    {
        try {
            $class = self::getPluginLoader()->load($name);
        } catch (Zend_Loader_PluginLoader_Exception $e) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Action Helper by name ' . $name . ' not found');
        }

        $helper = new $class();

        if (!$helper instanceof Zend_Controller_Action_Helper_Abstract) {
            require_once 'Zend/Controller/Action/Exception.php';
            throw new Zend_Controller_Action_Exception('Helper name ' . $name . ' -> class ' . $class . ' is not of type Zend_Controller_Action_Helper_Abstract');
        }

        self::getStack()->push($helper);
    }
}
PKpG[$-8��!Controller/Plugin/ActionStack.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';

/** Zend_Registry */
require_once 'Zend/Registry.php';

/**
 * Manage a stack of actions
 *
 * @uses       Zend_Controller_Plugin_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ActionStack.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Controller_Plugin_ActionStack extends Zend_Controller_Plugin_Abstract
{
    /** @var Zend_Registry */
    protected $_registry;

    /**
     * Registry key under which actions are stored
     * @var string
     */
    protected $_registryKey = 'Zend_Controller_Plugin_ActionStack';

    /**
     * Valid keys for stack items
     * @var array
     */
    protected $_validKeys = array(
        'module', 
        'controller',
        'action',
        'params'
    );

    /**
     * Constructor
     *
     * @param  Zend_Registry $registry
     * @param  string $key
     * @return void
     */
    public function __construct(Zend_Registry $registry = null, $key = null)
    {
        if (null === $registry) {
            $registry = Zend_Registry::getInstance();
        }
        $this->setRegistry($registry);

        if (null !== $key) {
            $this->setRegistryKey($key);
        } else {
            $key = $this->getRegistryKey();
        }

        $registry[$key] = array();
    }

    /**
     * Set registry object
     * 
     * @param  Zend_Registry $registry 
     * @return Zend_Controller_Plugin_ActionStack
     */
    public function setRegistry(Zend_Registry $registry)
    {
        $this->_registry = $registry;
        return $this;
    }

    /**
     * Retrieve registry object
     * 
     * @return Zend_Registry
     */
    public function getRegistry()
    {
        return $this->_registry;
    }

    /**
     * Retrieve registry key
     *
     * @return string
     */
    public function getRegistryKey()
    {
        return $this->_registryKey;
    }

    /**
     * Set registry key
     *
     * @param  string $key
     * @return Zend_Controller_Plugin_ActionStack
     */
    public function setRegistryKey($key)
    {
        $this->_registryKey = (string) $key;
        return $this;
    }

    /**
     * Retrieve action stack
     * 
     * @return array
     */
    public function getStack()
    {
        $registry = $this->getRegistry();
        $stack    = $registry[$this->getRegistryKey()];
        return $stack;
    }

    /**
     * Save stack to registry
     * 
     * @param  array $stack 
     * @return Zend_Controller_Plugin_ActionStack
     */
    protected function _saveStack(array $stack)
    {
        $registry = $this->getRegistry();
        $registry[$this->getRegistryKey()] = $stack;
        return $this;
    }

    /**
     * Push an item onto the stack
     * 
     * @param  Zend_Controller_Request_Abstract $next 
     * @return Zend_Controller_Plugin_ActionStack
     */
    public function pushStack(Zend_Controller_Request_Abstract $next)
    {
        $stack = $this->getStack();
        array_push($stack, $next);
        return $this->_saveStack($stack);
    }

    /**
     * Pop an item off the action stack
     * 
     * @return false|Zend_Controller_Request_Abstract
     */
    public function popStack()
    {
        $stack = $this->getStack();
        if (0 == count($stack)) {
            return false;
        }

        $next = array_pop($stack);
        $this->_saveStack($stack);

        if (!$next instanceof Zend_Controller_Request_Abstract) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('ArrayStack should only contain request objects');
        }
        $action = $next->getActionName();
        if (empty($action)) {
            return $this->popStack($stack);
        }

        $request    = $this->getRequest();
        $controller = $next->getControllerName();
        if (empty($controller)) {
            $next->setControllerName($request->getControllerName());
        }

        $module = $next->getModuleName();
        if (empty($module)) {
            $next->setModuleName($request->getModuleName());
        }

        return $next;
    }

    /**
     * postDispatch() plugin hook -- check for actions in stack, and dispatch if any found
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        // Don't move on to next request if this is already an attempt to 
        // forward
        if (!$request->isDispatched()) {
            return;
        }

        $this->setRequest($request);
        $stack = $this->getStack();
        if (empty($stack)) {
            return;
        }
        $next = $this->popStack();
        if (!$next) {
            return;
        }

        $this->forward($next);
    }

    /**
     * Forward request with next action
     * 
     * @param  array $next 
     * @return void
     */
    public function forward(Zend_Controller_Request_Abstract $next)
    {
        $this->getRequest()->setModuleName($next->getModuleName())
                           ->setControllerName($next->getControllerName())
                           ->setActionName($next->getActionName())
                           ->setParams($next->getParams())
                           ->setDispatched(false);
    }
}
PKpG[wt�>d(d(Controller/Plugin/Broker.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';

/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Plugin_Broker extends Zend_Controller_Plugin_Abstract
{

    /**
     * Array of instance of objects extending Zend_Controller_Plugin_Abstract
     *
     * @var array
     */
    protected $_plugins = array();


    /**
     * Register a plugin.
     *
     * @param  Zend_Controller_Plugin_Abstract $plugin
     * @param  int $stackIndex
     * @return Zend_Controller_Plugin_Broker
     */
    public function registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null)
    {
        if (false !== array_search($plugin, $this->_plugins, true)) {
            throw new Zend_Controller_Exception('Plugin already registered');
        }

        $stackIndex = (int) $stackIndex;

        if ($stackIndex) {
            if (isset($this->_plugins[$stackIndex])) {
                throw new Zend_Controller_Exception('Plugin with stackIndex "' . $stackIndex . '" already registered');
            }
            $this->_plugins[$stackIndex] = $plugin;
        } else {
            $stackIndex = count($this->_plugins);
            while (isset($this->_plugins[$stackIndex])) {
                ++$stackIndex;
            }
            $this->_plugins[$stackIndex] = $plugin;
        }

        $request = $this->getRequest();
        if ($request) {
            $this->_plugins[$stackIndex]->setRequest($request);
        }
        $response = $this->getResponse();
        if ($response) {
            $this->_plugins[$stackIndex]->setResponse($response);
        }

        ksort($this->_plugins);

        return $this;
    }

    /**
     * Unregister a plugin.
     *
     * @param string|Zend_Controller_Plugin_Abstract $plugin Plugin object or class name
     * @return Zend_Controller_Plugin_Broker
     */
    public function unregisterPlugin($plugin)
    {
        if ($plugin instanceof Zend_Controller_Plugin_Abstract) {
            // Given a plugin object, find it in the array
            $key = array_search($plugin, $this->_plugins, true);
            if (false === $key) {
                throw new Zend_Controller_Exception('Plugin never registered.');
            }
            unset($this->_plugins[$key]);
        } elseif (is_string($plugin)) {
            // Given a plugin class, find all plugins of that class and unset them
            foreach ($this->_plugins as $key => $_plugin) {
                $type = get_class($_plugin);
                if ($plugin == $type) {
                    unset($this->_plugins[$key]);
                }
            }
        }
        return $this;
    }

    /**
     * Is a plugin of a particular class registered?
     *
     * @param  string $class
     * @return bool
     */
    public function hasPlugin($class)
    {
        foreach ($this->_plugins as $plugin) {
            $type = get_class($plugin);
            if ($class == $type) {
                return true;
            }
        }

        return false;
    }

    /**
     * Retrieve a plugin or plugins by class
     *
     * @param  string $class Class name of plugin(s) desired
     * @return false|Zend_Controller_Plugin_Abstract|array Returns false if none found, plugin if only one found, and array of plugins if multiple plugins of same class found
     */
    public function getPlugin($class)
    {
        $found = array();
        foreach ($this->_plugins as $plugin) {
            $type = get_class($plugin);
            if ($class == $type) {
                $found[] = $plugin;
            }
        }

        switch (count($found)) {
            case 0:
                return false;
            case 1:
                return $found[0];
            default:
                return $found;
        }
    }

    /**
     * Retrieve all plugins
     *
     * @return array
     */
    public function getPlugins()
    {
        return $this->_plugins;
    }

    /**
     * Set request object, and register with each plugin
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return Zend_Controller_Plugin_Broker
     */
    public function setRequest(Zend_Controller_Request_Abstract $request)
    {
        $this->_request = $request;

        foreach ($this->_plugins as $plugin) {
            $plugin->setRequest($request);
        }

        return $this;
    }

    /**
     * Get request object
     *
     * @return Zend_Controller_Request_Abstract $request
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Set response object
     *
     * @param Zend_Controller_Response_Abstract $response
     * @return Zend_Controller_Plugin_Broker
     */
    public function setResponse(Zend_Controller_Response_Abstract $response)
    {
        $this->_response = $response;

        foreach ($this->_plugins as $plugin) {
            $plugin->setResponse($response);
        }


        return $this;
    }

    /**
     * Get response object
     *
     * @return Zend_Controller_Response_Abstract $response
     */
    public function getResponse()
    {
        return $this->_response;
    }


    /**
     * Called before Zend_Controller_Front begins evaluating the
     * request against its routes.
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function routeStartup(Zend_Controller_Request_Abstract $request)
    {
        foreach ($this->_plugins as $plugin) {
            try {
                $plugin->routeStartup($request);
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
        }
    }


    /**
     * Called before Zend_Controller_Front exits its iterations over
     * the route set.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        foreach ($this->_plugins as $plugin) {
            try {
                $plugin->routeShutdown($request);
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
        }
    }


    /**
     * Called before Zend_Controller_Front enters its dispatch loop.
     *
     * During the dispatch loop, Zend_Controller_Front keeps a
     * Zend_Controller_Request_Abstract object, and uses
     * Zend_Controller_Dispatcher to dispatch the
     * Zend_Controller_Request_Abstract object to controllers/actions.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        foreach ($this->_plugins as $plugin) {
            try {
                $plugin->dispatchLoopStartup($request);
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
        }
    }


    /**
     * Called before an action is dispatched by Zend_Controller_Dispatcher.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        foreach ($this->_plugins as $plugin) {
            try {
                $plugin->preDispatch($request);
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
        }
    }


    /**
     * Called after an action is dispatched by Zend_Controller_Dispatcher.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        foreach ($this->_plugins as $plugin) {
            try {
                $plugin->postDispatch($request);
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
        }
    }


    /**
     * Called before Zend_Controller_Front exits its dispatch loop.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function dispatchLoopShutdown()
    {
       foreach ($this->_plugins as $plugin) {
           try {
                $plugin->dispatchLoopShutdown();
            } catch (Exception $e) {
                if (Zend_Controller_Front::getInstance()->throwExceptions()) {
                    throw $e;
                } else {
                    $this->getResponse()->setException($e);
                }
            }
       }
    }
}
PKpG[`���Controller/Plugin/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Plugin_Abstract
{
    /**
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request;

    /**
     * @var Zend_Controller_Response_Abstract
     */
    protected $_response;

    /**
     * Set request object
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return Zend_Controller_Plugin_Abstract
     */
    public function setRequest(Zend_Controller_Request_Abstract $request)
    {
        $this->_request = $request;
        return $this;
    }

    /**
     * Get request object
     *
     * @return Zend_Controller_Request_Abstract $request
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Set response object
     *
     * @param Zend_Controller_Response_Abstract $response
     * @return Zend_Controller_Plugin_Abstract
     */
    public function setResponse(Zend_Controller_Response_Abstract $response)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Get response object
     *
     * @return Zend_Controller_Response_Abstract $response
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Called before Zend_Controller_Front begins evaluating the
     * request against its routes.
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function routeStartup(Zend_Controller_Request_Abstract $request)
    {}

    /**
     * Called after Zend_Controller_Router exits.
     *
     * Called after Zend_Controller_Front exits from the router.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {}

    /**
     * Called before Zend_Controller_Front enters its dispatch loop.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {}

    /**
     * Called before an action is dispatched by Zend_Controller_Dispatcher.
     *
     * This callback allows for proxy or filter behavior.  By altering the
     * request and resetting its dispatched flag (via
     * {@link Zend_Controller_Request_Abstract::setDispatched() setDispatched(false)}),
     * the current action may be skipped.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {}

    /**
     * Called after an action is dispatched by Zend_Controller_Dispatcher.
     *
     * This callback allows for proxy or filter behavior. By altering the
     * request and resetting its dispatched flag (via
     * {@link Zend_Controller_Request_Abstract::setDispatched() setDispatched(false)}),
     * a new action may be specified for dispatching.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {}

    /**
     * Called before Zend_Controller_Front exits its dispatch loop.
     *
     * @return void
     */
    public function dispatchLoopShutdown()
    {}
}
PKpG[̹n<��"Controller/Plugin/ErrorHandler.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';

/**
 * Handle exceptions that bubble up based on missing controllers, actions, or
 * application errors, and forward to an error handler.
 *
 * @uses       Zend_Controller_Plugin_Abstract
 * @category   Zend
 * @package    Zend_Controller
 * @subpackage Plugins
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ErrorHandler.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Controller_Plugin_ErrorHandler extends Zend_Controller_Plugin_Abstract
{
    /**
     * Const - No controller exception; controller does not exist
     */
    const EXCEPTION_NO_CONTROLLER = 'EXCEPTION_NO_CONTROLLER';

    /**
     * Const - No action exception; controller exists, but action does not
     */
    const EXCEPTION_NO_ACTION = 'EXCEPTION_NO_ACTION';

    /**
     * Const - Other Exception; exceptions thrown by application controllers
     */
    const EXCEPTION_OTHER = 'EXCEPTION_OTHER';

    /**
     * Module to use for errors; defaults to default module in dispatcher
     * @var string
     */
    protected $_errorModule;

    /**
     * Controller to use for errors; defaults to 'error'
     * @var string
     */
    protected $_errorController = 'error';

    /**
     * Action to use for errors; defaults to 'error'
     * @var string
     */
    protected $_errorAction = 'error';

    /**
     * Flag; are we already inside the error handler loop?
     * @var bool
     */
    protected $_isInsideErrorHandlerLoop = false;

    /**
     * Exception count logged at first invocation of plugin
     * @var int
     */
    protected $_exceptionCountAtFirstEncounter = 0;

    /**
     * Constructor
     *
     * Options may include:
     * - module
     * - controller
     * - action
     *
     * @param  Array $options
     * @return void
     */
    public function __construct(Array $options = array())
    {
        $this->setErrorHandler($options);
    }

    /**
     * setErrorHandler() - setup the error handling options
     *
     * @param  array $options
     * @return Zend_Controller_Plugin_ErrorHandler
     */
    public function setErrorHandler(Array $options = array())
    {
        if (isset($options['module'])) {
            $this->setErrorHandlerModule($options['module']);
        }
        if (isset($options['controller'])) {
            $this->setErrorHandlerController($options['controller']);
        }
        if (isset($options['action'])) {
            $this->setErrorHandlerAction($options['action']);
        }
        return $this;
    }

    /**
     * Set the module name for the error handler
     *
     * @param  string $module
     * @return Zend_Controller_Plugin_ErrorHandler
     */
    public function setErrorHandlerModule($module)
    {
        $this->_errorModule = (string) $module;
        return $this;
    }

    /**
     * Retrieve the current error handler module
     *
     * @return string
     */
    public function getErrorHandlerModule()
    {
        if (null === $this->_errorModule) {
            $this->_errorModule = Zend_Controller_Front::getInstance()->getDispatcher()->getDefaultModule();
        }
        return $this->_errorModule;
    }

    /**
     * Set the controller name for the error handler
     *
     * @param  string $controller
     * @return Zend_Controller_Plugin_ErrorHandler
     */
    public function setErrorHandlerController($controller)
    {
        $this->_errorController = (string) $controller;
        return $this;
    }

    /**
     * Retrieve the current error handler controller
     *
     * @return string
     */
    public function getErrorHandlerController()
    {
        return $this->_errorController;
    }

    /**
     * Set the action name for the error handler
     *
     * @param  string $action
     * @return Zend_Controller_Plugin_ErrorHandler
     */
    public function setErrorHandlerAction($action)
    {
        $this->_errorAction = (string) $action;
        return $this;
    }

    /**
     * Retrieve the current error handler action
     *
     * @return string
     */
    public function getErrorHandlerAction()
    {
        return $this->_errorAction;
    }

    /**
     * postDispatch() plugin hook -- check for exceptions and dispatch error
     * handler if necessary
     *
     * If the 'noErrorHandler' front controller flag has been set,
     * returns early.
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        $frontController = Zend_Controller_Front::getInstance();
        if ($frontController->getParam('noErrorHandler')) {
            return;
        }

        $response = $this->getResponse();

        if ($this->_isInsideErrorHandlerLoop) {
            $exceptions = $response->getException();
            if (count($exceptions) > $this->_exceptionCountAtFirstEncounter) {
                // Exception thrown by error handler; tell the front controller to throw it
                $frontController->throwExceptions(true);
                throw array_pop($exceptions);
            }
        }

        // check for an exception AND allow the error handler controller the option to forward
        if (($response->isException()) && (!$this->_isInsideErrorHandlerLoop)) {
            $this->_isInsideErrorHandlerLoop = true;

            // Get exception information
            $error            = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);
            $exceptions       = $response->getException();
            $exception        = $exceptions[0];
            $exceptionType    = get_class($exception);
            $error->exception = $exception;
            switch ($exceptionType) {
                case 'Zend_Controller_Dispatcher_Exception':
                    $error->type = self::EXCEPTION_NO_CONTROLLER;
                    break;
                case 'Zend_Controller_Action_Exception':
                    if (404 == $exception->getCode()) {
                        $error->type = self::EXCEPTION_NO_ACTION;
                    } else {
                        $error->type = self::EXCEPTION_OTHER;
                    }
                    break;
                default:
                    $error->type = self::EXCEPTION_OTHER;
                    break;
            }

            // Keep a copy of the original request
            $error->request = clone $request;

            // get a count of the number of exceptions encountered
            $this->_exceptionCountAtFirstEncounter = count($exceptions);

            // Forward to the error handler
            $request->setParam('error_handler', $error)
                    ->setModuleName($this->getErrorHandlerModule())
                    ->setControllerName($this->getErrorHandlerController())
                    ->setActionName($this->getErrorHandlerAction())
                    ->setDispatched(false);
        }
    }
}
PKpG[{��S�SController/Action.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Controller_Action_HelperBroker */
require_once 'Zend/Controller/Action/HelperBroker.php';

/** Zend_Controller_Front */
require_once 'Zend/Controller/Front.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Controller_Action
{
    /**
     * @var array of existing class methods
     */
    protected $_classMethods;

    /**
     * Word delimiters (used for normalizing view script paths)
     * @var array
     */
    protected $_delimiters;

    /**
     * Array of arguments provided to the constructor, minus the
     * {@link $_request Request object}.
     * @var array
     */
    protected $_invokeArgs = array();

    /**
     * Front controller instance
     * @var Zend_Controller_Front
     */
    protected $_frontController;

    /**
     * Zend_Controller_Request_Abstract object wrapping the request environment
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request = null;

    /**
     * Zend_Controller_Response_Abstract object wrapping the response
     * @var Zend_Controller_Response_Abstract
     */
    protected $_response = null;

    /**
     * View script suffix; defaults to 'phtml'
     * @see {render()}
     * @var string
     */
    public $viewSuffix = 'phtml';

    /**
     * View object
     * @var Zend_View_Interface
     */
    public $view;

    /**
     * Helper Broker to assist in routing help requests to the proper object
     *
     * @var Zend_Controller_Action_HelperBroker
     */
    protected $_helper = null;

    /**
     * Class constructor
     *
     * The request and response objects should be registered with the
     * controller, as should be any additional optional arguments; these will be
     * available via {@link getRequest()}, {@link getResponse()}, and
     * {@link getInvokeArgs()}, respectively.
     *
     * When overriding the constructor, please consider this usage as a best
     * practice and ensure that each is registered appropriately; the easiest
     * way to do so is to simply call parent::__construct($request, $response,
     * $invokeArgs).
     *
     * After the request, response, and invokeArgs are set, the
     * {@link $_helper helper broker} is initialized.
     *
     * Finally, {@link init()} is called as the final action of
     * instantiation, and may be safely overridden to perform initialization
     * tasks; as a general rule, override {@link init()} instead of the
     * constructor to customize an action controller's instantiation.
     *
     * @param Zend_Controller_Request_Abstract $request
     * @param Zend_Controller_Response_Abstract $response
     * @param array $invokeArgs Any additional invocation arguments
     * @return void
     */
    public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())
    {
        $this->setRequest($request)
             ->setResponse($response)
             ->_setInvokeArgs($invokeArgs);
        $this->_helper = new Zend_Controller_Action_HelperBroker($this);
        $this->init();
    }

    /**
     * Initialize object
     *
     * Called from {@link __construct()} as final step of object instantiation.
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Initialize View object
     *
     * Initializes {@link $view} if not otherwise a Zend_View_Interface.
     *
     * If {@link $view} is not otherwise set, instantiates a new Zend_View
     * object, using the 'views' subdirectory at the same level as the
     * controller directory for the current module as the base directory.
     * It uses this to set the following:
     * - script path = views/scripts/
     * - helper path = views/helpers/
     * - filter path = views/filters/
     *
     * @return Zend_View_Interface
     * @throws Zend_Controller_Exception if base view directory does not exist
     */
    public function initView()
    {
        if (!$this->getInvokeArg('noViewRenderer') && $this->_helper->hasHelper('viewRenderer')) {
            return $this->view;
        }

        require_once 'Zend/View/Interface.php';
        if (isset($this->view) && ($this->view instanceof Zend_View_Interface)) {
            return $this->view;
        }

        $request = $this->getRequest();
        $module  = $request->getModuleName();
        $dirs    = $this->getFrontController()->getControllerDirectory();
        if (empty($module) || !isset($dirs[$module])) {
            $module = $this->getFrontController()->getDispatcher()->getDefaultModule();
        }
        $baseDir = dirname($dirs[$module]) . DIRECTORY_SEPARATOR . 'views';
        if (!file_exists($baseDir) || !is_dir($baseDir)) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Missing base view directory ("' . $baseDir . '")');
        }

        require_once 'Zend/View.php';
        $this->view = new Zend_View(array('basePath' => $baseDir));

        return $this->view;
    }

    /**
     * Render a view
     *
     * Renders a view. By default, views are found in the view script path as
     * <controller>/<action>.phtml. You may change the script suffix by
     * resetting {@link $viewSuffix}. You may omit the controller directory
     * prefix by specifying boolean true for $noController.
     *
     * By default, the rendered contents are appended to the response. You may
     * specify the named body content segment to set by specifying a $name.
     *
     * @see Zend_Controller_Response_Abstract::appendBody()
     * @param  string|null $action Defaults to action registered in request object
     * @param  string|null $name Response object named path segment to use; defaults to null
     * @param  bool $noController  Defaults to false; i.e. use controller name as subdir in which to search for view script
     * @return void
     */
    public function render($action = null, $name = null, $noController = false)
    {
        if (!$this->getInvokeArg('noViewRenderer') && $this->_helper->hasHelper('viewRenderer')) {
            return $this->_helper->viewRenderer->render($action, $name, $noController);
        }

        $view   = $this->initView();
        $script = $this->getViewScript($action, $noController);

        $this->getResponse()->appendBody(
            $view->render($script),
            $name
        );
    }

    /**
     * Render a given view script
     *
     * Similar to {@link render()}, this method renders a view script. Unlike render(),
     * however, it does not autodetermine the view script via {@link getViewScript()},
     * but instead renders the script passed to it. Use this if you know the
     * exact view script name and path you wish to use, or if using paths that do not
     * conform to the spec defined with getViewScript().
     *
     * By default, the rendered contents are appended to the response. You may
     * specify the named body content segment to set by specifying a $name.
     *
     * @param  string $script
     * @param  string $name
     * @return void
     */
    public function renderScript($script, $name = null)
    {
        if (!$this->getInvokeArg('noViewRenderer') && $this->_helper->hasHelper('viewRenderer')) {
            return $this->_helper->viewRenderer->renderScript($script, $name);
        }

        $view = $this->initView();
        $this->getResponse()->appendBody(
            $view->render($script),
            $name
        );
    }

    /**
     * Construct view script path
     *
     * Used by render() to determine the path to the view script.
     *
     * @param  string $action Defaults to action registered in request object
     * @param  bool $noController  Defaults to false; i.e. use controller name as subdir in which to search for view script
     * @return string
     * @throws Zend_Controller_Exception with bad $action
     */
    public function getViewScript($action = null, $noController = null)
    {
        if (!$this->getInvokeArg('noViewRenderer') && $this->_helper->hasHelper('viewRenderer')) {
            $viewRenderer = $this->_helper->getHelper('viewRenderer');
            if (null !== $noController) {
                $viewRenderer->setNoController($noController);
            }
            return $viewRenderer->getViewScript($action);
        }

        $request = $this->getRequest();
        if (null === $action) {
            $action = $request->getActionName();
        } elseif (!is_string($action)) {
            require_once 'Zend/Controller/Exception.php';
            throw new Zend_Controller_Exception('Invalid action specifier for view render');
        }

        if (null === $this->_delimiters) {
            $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
            $wordDelimiters = $dispatcher->getWordDelimiter();
            $pathDelimiters = $dispatcher->getPathDelimiter();
            $this->_delimiters = array_unique(array_merge($wordDelimiters, (array) $pathDelimiters));
        }

        $action = str_replace($this->_delimiters, '-', $action);
        $script = $action . '.' . $this->viewSuffix;

        if (!$noController) {
            $controller = $request->getControllerName();
            $controller = str_replace($this->_delimiters, '-', $controller);
            $script = $controller . DIRECTORY_SEPARATOR . $script;
        }

        return $script;
    }

    /**
     * Return the Request object
     *
     * @return Zend_Controller_Request_Abstract
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Set the Request object
     *
     * @param Zend_Controller_Request_Abstract $request
     * @return Zend_Controller_Action
     */
    public function setRequest(Zend_Controller_Request_Abstract $request)
    {
        $this->_request = $request;
        return $this;
    }

    /**
     * Return the Response object
     *
     * @return Zend_Controller_Response_Abstract
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Set the Response object
     *
     * @param Zend_Controller_Response_Abstract $response
     * @return Zend_Controller_Action
     */
    public function setResponse(Zend_Controller_Response_Abstract $response)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Set invocation arguments
     *
     * @param array $args
     * @return Zend_Controller_Action
     */
    protected function _setInvokeArgs(array $args = array())
    {
        $this->_invokeArgs = $args;
        return $this;
    }

    /**
     * Return the array of constructor arguments (minus the Request object)
     *
     * @return array
     */
    public function getInvokeArgs()
    {
        return $this->_invokeArgs;
    }

    /**
     * Return a single invocation argument
     *
     * @param string $key
     * @return mixed
     */
    public function getInvokeArg($key)
    {
        if (isset($this->_invokeArgs[$key])) {
            return $this->_invokeArgs[$key];
        }

        return null;
    }

    /**
     * Get a helper by name
     *
     * @param  string $helperName
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function getHelper($helperName)
    {
        return $this->_helper->{$helperName};
    }

    /**
     * Get a clone of a helper by name
     *
     * @param  string $helperName
     * @return Zend_Controller_Action_Helper_Abstract
     */
    public function getHelperCopy($helperName)
    {
        return clone $this->_helper->{$helperName};
    }

    /**
     * Set the front controller instance
     *
     * @param Zend_Controller_Front $front
     * @return Zend_Controller_Action
     */
    public function setFrontController(Zend_Controller_Front $front)
    {
        $this->_frontController = $front;
        return $this;
    }

    /**
     * Retrieve Front Controller
     *
     * @return Zend_Controller_Front
     */
    public function getFrontController()
    {
        // Used cache version if found
        if (null !== $this->_frontController) {
            return $this->_frontController;
        }

        // Grab singleton instance, if class has been loaded
        if (class_exists('Zend_Controller_Front')) {
            $this->_frontController = Zend_Controller_Front::getInstance();
            return $this->_frontController;
        }

        // Throw exception in all other cases
        require_once 'Zend/Controller/Exception.php';
        throw new Zend_Controller_Exception('Front controller class has not been loaded');
    }

    /**
     * Pre-dispatch routines
     *
     * Called before action method. If using class with
     * {@link Zend_Controller_Front}, it may modify the
     * {@link $_request Request object} and reset its dispatched flag in order
     * to skip processing the current action.
     *
     * @return void
     */
    public function preDispatch()
    {
    }

    /**
     * Post-dispatch routines
     *
     * Called after action method execution. If using class with
     * {@link Zend_Controller_Front}, it may modify the
     * {@link $_request Request object} and reset its dispatched flag in order
     * to process an additional action.
     *
     * Common usages for postDispatch() include rendering content in a sitewide
     * template, link url correction, setting headers, etc.
     *
     * @return void
     */
    public function postDispatch()
    {
    }

    /**
     * Proxy for undefined methods.  Default behavior is to throw an
     * exception on undefined methods, however this function can be
     * overridden to implement magic (dynamic) actions, or provide run-time
     * dispatching.
     *
     * @param  string $methodName
     * @param  array $args
     * @return void
     * @throws Zend_Controller_Action_Exception
     */
    public function __call($methodName, $args)
    {
        require_once 'Zend/Controller/Action/Exception.php';
        if ('Action' == substr($methodName, -6)) {
            $action = substr($methodName, 0, strlen($methodName) - 6);
            throw new Zend_Controller_Action_Exception(sprintf('Action "%s" does not exist and was not trapped in __call()', $action), 404);
        }

        throw new Zend_Controller_Action_Exception(sprintf('Method "%s" does not exist and was not trapped in __call()', $methodName), 500);
    }

    /**
     * Dispatch the requested action
     *
     * @param string $action Method name of action
     * @return void
     */
    public function dispatch($action)
    {
        // Notify helpers of action preDispatch state
        $this->_helper->notifyPreDispatch();

        $this->preDispatch();
        if ($this->getRequest()->isDispatched()) {
            if (null === $this->_classMethods) {
                $this->_classMethods = get_class_methods($this);
            }

            // preDispatch() didn't change the action, so we can continue
            if ($this->getInvokeArg('useCaseSensitiveActions') || in_array($action, $this->_classMethods)) {
                if ($this->getInvokeArg('useCaseSensitiveActions')) {
                    trigger_error('Using case sensitive actions without word separators is deprecated; please do not rely on this "feature"');
                }
                $this->$action();
            } else {
                $this->__call($action, array());
            }
            $this->postDispatch();
        }

        // whats actually important here is that this action controller is
        // shutting down, regardless of dispatching; notify the helpers of this
        // state
        $this->_helper->notifyPostDispatch();
    }

    /**
     * Call the action specified in the request object, and return a response
     *
     * Not used in the Action Controller implementation, but left for usage in
     * Page Controller implementations. Dispatches a method based on the
     * request.
     *
     * Returns a Zend_Controller_Response_Abstract object, instantiating one
     * prior to execution if none exists in the controller.
     *
     * {@link preDispatch()} is called prior to the action,
     * {@link postDispatch()} is called following it.
     *
     * @param null|Zend_Controller_Request_Abstract $request Optional request
     * object to use
     * @param null|Zend_Controller_Response_Abstract $response Optional response
     * object to use
     * @return Zend_Controller_Response_Abstract
     */
    public function run(Zend_Controller_Request_Abstract $request = null, Zend_Controller_Response_Abstract $response = null)
    {
        if (null !== $request) {
            $this->setRequest($request);
        } else {
            $request = $this->getRequest();
        }

        if (null !== $response) {
            $this->setResponse($response);
        }

        $action = $request->getActionName();
        if (empty($action)) {
            $action = 'index';
        }
        $action = $action . 'Action';

        $request->setDispatched(true);
        $this->dispatch($action);

        return $this->getResponse();
    }

    /**
     * Gets a parameter from the {@link $_request Request object}.  If the
     * parameter does not exist, NULL will be returned.
     *
     * If the parameter does not exist and $default is set, then
     * $default will be returned instead of NULL.
     *
     * @param string $paramName
     * @param mixed $default
     * @return mixed
     */
    protected function _getParam($paramName, $default = null)
    {
        $value = $this->getRequest()->getParam($paramName);
        if ((null == $value) && (null !== $default)) {
            $value = $default;
        }

        return $value;
    }

    /**
     * Set a parameter in the {@link $_request Request object}.
     *
     * @param string $paramName
     * @param mixed $value
     * @return Zend_Controller_Action
     */
    protected function _setParam($paramName, $value)
    {
        $this->getRequest()->setParam($paramName, $value);

        return $this;
    }

    /**
     * Determine whether a given parameter exists in the
     * {@link $_request Request object}.
     *
     * @param string $paramName
     * @return boolean
     */
    protected function _hasParam($paramName)
    {
        return null !== $this->getRequest()->getParam($paramName);
    }

    /**
     * Return all parameters in the {@link $_request Request object}
     * as an associative array.
     *
     * @return array
     */
    protected function _getAllParams()
    {
        return $this->getRequest()->getParams();
    }


    /**
     * Forward to another controller/action.
     *
     * It is important to supply the unformatted names, i.e. "article"
     * rather than "ArticleController".  The dispatcher will do the
     * appropriate formatting when the request is received.
     *
     * If only an action name is provided, forwards to that action in this
     * controller.
     *
     * If an action and controller are specified, forwards to that action and
     * controller in this module.
     *
     * Specifying an action, controller, and module is the most specific way to
     * forward.
     *
     * A fourth argument, $params, will be used to set the request parameters.
     * If either the controller or module are unnecessary for forwarding,
     * simply pass null values for them before specifying the parameters.
     *
     * @param string $action
     * @param string $controller
     * @param string $module
     * @param array $params
     * @return void
     */
    final protected function _forward($action, $controller = null, $module = null, array $params = null)
    {
        $request = $this->getRequest();

        if (null !== $params) {
            $request->setParams($params);
        }

        if (null !== $controller) {
            $request->setControllerName($controller);

            // Module should only be reset if controller has been specified
            if (null !== $module) {
                $request->setModuleName($module);
            }
        }

        $request->setActionName($action)
                ->setDispatched(false);
    }

    /**
     * Redirect to another URL
     *
     * Proxies to {@link Zend_Controller_Action_Helper_Redirector::gotoUrl()}.
     *
     * @param string $url
     * @param array $options Options to be used when redirecting
     * @return void
     */
    protected function _redirect($url, array $options = array())
    {
        $this->_helper->redirector->gotoUrl($url, $options);
    }
}
PKpG[�V����Controller/LayoutPlugin.phpnu&1i�<?php 
      class Zend_Controller_LayoutPlugin extends Zend_Controller_Plugin_Abstract {
 
          /**
 
           * Array of layout paths associating modules with layouts

           */

          protected $_moduleLayouts;

         

          /**

           * Registers a module layout.

           * This layout will be rendered when the specified module is called.

           * If there is no layout registered for the current module, the default layout as specified

           * in Zend_Layout will be rendered

           *

           * @param String $module        The name of the module

           * @param String $layoutPath    The path to the layout

           * @param String $layout        The name of the layout to render

           */

          public function registerModuleLayout($module, $layoutPath, $layout=null){

              $this->_moduleLayouts[$module] = array(

                  'layoutPath' => $layoutPath,

                  'layout' => $layout

              );

          }

         

          public function preDispatch(Zend_Controller_Request_Abstract $request){

              if(isset($this->_moduleLayouts[$request->getModuleName()])){

                  $config = $this->_moduleLayouts[$request->getModuleName()];

                 

                  $layout = Zend_Layout::getMvcInstance();

                  if($layout->getMvcEnabled()){

                      $layout->setLayoutPath($config['layoutPath']);

                     

                      if($config['layout'] !== null){

                          $layout->setLayout($config['layout']);

                      }

                  }

              }

          }

      }

?>PKpG[��n�n�nController/Front.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Loader */
require_once 'Zend/Loader.php';

/** Zend_Controller_Action_HelperBroker */
require_once 'Zend/Controller/Action/HelperBroker.php';

/** Zend_Controller_Exception */
require_once 'Zend/Controller/Exception.php';

/** Zend_Controller_Plugin_Broker */
require_once 'Zend/Controller/Plugin/Broker.php';

/**
 * @category   Zend
 * @package    Zend_Controller
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Controller_Front
{
    /**
     * Base URL
     * @var string
     */
    protected $_baseUrl = null;

    /**
     * Directory|ies where controllers are stored
     *
     * @var string|array
     */
    protected $_controllerDir = null;

    /**
     * Instance of Zend_Controller_Dispatcher_Interface
     * @var Zend_Controller_Dispatcher_Interface
     */
    protected $_dispatcher = null;

    /**
     * Singleton instance
     *
     * Marked only as protected to allow extension of the class. To extend,
     * simply override {@link getInstance()}.
     *
     * @var Zend_Controller_Front
     */
    protected static $_instance = null;

    /**
     * Array of invocation parameters to use when instantiating action
     * controllers
     * @var array
     */
    protected $_invokeParams = array();

    /**
     * Subdirectory within a module containing controllers; defaults to 'controllers'
     * @var string
     */
    protected $_moduleControllerDirectoryName = 'controllers';

    /**
     * Instance of Zend_Controller_Plugin_Broker
     * @var Zend_Controller_Plugin_Broker
     */
    protected $_plugins = null;

    /**
     * Instance of Zend_Controller_Request_Abstract
     * @var Zend_Controller_Request_Abstract
     */
    protected $_request = null;

    /**
     * Instance of Zend_Controller_Response_Abstract
     * @var Zend_Controller_Response_Abstract
     */
    protected $_response = null;

    /**
     * Whether or not to return the response prior to rendering output while in
     * {@link dispatch()}; default is to send headers and render output.
     * @var boolean
     */
    protected $_returnResponse = false;

    /**
     * Instance of Zend_Controller_Router_Interface
     * @var Zend_Controller_Router_Interface
     */
    protected $_router = null;

    /**
     * Whether or not exceptions encountered in {@link dispatch()} should be
     * thrown or trapped in the response object
     * @var boolean
     */
    protected $_throwExceptions = false;

    /**
     * Constructor
     *
     * Instantiate using {@link getInstance()}; front controller is a singleton
     * object.
     *
     * Instantiates the plugin broker.
     *
     * @return void
     */
    protected function __construct()
    {
        $this->_plugins = new Zend_Controller_Plugin_Broker();
    }

    /**
     * Enforce singleton; disallow cloning 
     * 
     * @return void
     */
    private function __clone()
    {
    }

    /**
     * Singleton instance
     *
     * @return Zend_Controller_Front
     */
    public static function getInstance()
    {
        if (null === self::$_instance) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    /**
     * Resets all object properties of the singleton instance
     *
     * Primarily used for testing; could be used to chain front controllers.
     *
     * Also resets action helper broker, clearing all registered helpers.
     *
     * @return void
     */
    public function resetInstance()
    {
        $reflection = new ReflectionObject($this);
        foreach ($reflection->getProperties() as $property) {
            $name = $property->getName();
            switch ($name) {
                case '_instance':
                    break;
                case '_controllerDir':
                case '_invokeParams':
                    $this->{$name} = array();
                    break;
                case '_plugins':
                    $this->{$name} = new Zend_Controller_Plugin_Broker();
                    break;
                case '_throwExceptions':
                case '_returnResponse':
                    $this->{$name} = false;
                    break;
                case '_moduleControllerDirectoryName':
                    $this->{$name} = 'controllers';
                    break;
                default:
                    $this->{$name} = null;
                    break;
            }
        }
        Zend_Controller_Action_HelperBroker::resetHelpers();
    }

    /**
     * Convenience feature, calls setControllerDirectory()->setRouter()->dispatch()
     *
     * In PHP 5.1.x, a call to a static method never populates $this -- so run()
     * may actually be called after setting up your front controller.
     *
     * @param string|array $controllerDirectory Path to Zend_Controller_Action
     * controller classes or array of such paths
     * @return void
     * @throws Zend_Controller_Exception if called from an object instance
     */
    public static function run($controllerDirectory)
    {
        self::getInstance()
            ->setControllerDirectory($controllerDirectory)
            ->dispatch();
    }

    /**
     * Add a controller directory to the controller directory stack
     *
     * If $args is presented and is a string, uses it for the array key mapping
     * to the directory specified.
     *
     * @param string $directory
     * @param string $module Optional argument; module with which to associate directory. If none provided, assumes 'default'
     * @return Zend_Controller_Front
     * @throws Zend_Controller_Exception if directory not found or readable
     */
    public function addControllerDirectory($directory, $module = null)
    {
        $this->getDispatcher()->addControllerDirectory($directory, $module);
        return $this;
    }

    /**
     * Set controller directory
     *
     * Stores controller directory(ies) in dispatcher. May be an array of
     * directories or a string containing a single directory.
     *
     * @param string|array $directory Path to Zend_Controller_Action controller
     * classes or array of such paths
     * @param  string $module Optional module name to use with string $directory
     * @return Zend_Controller_Front
     */
    public function setControllerDirectory($directory, $module = null)
    {
        $this->getDispatcher()->setControllerDirectory($directory, $module);
        return $this;
    }

    /**
     * Retrieve controller directory
     *
     * Retrieves:
     * - Array of all controller directories if no $name passed
     * - String path if $name passed and exists as a key in controller directory array
     * - null if $name passed but does not exist in controller directory keys
     *
     * @param  string $name Default null
     * @return array|string|null
     */
    public function getControllerDirectory($name = null)
    {
        return $this->getDispatcher()->getControllerDirectory($name);
    }

    /**
     * Remove a controller directory by module name 
     * 
     * @param  string $module 
     * @return bool
     */
    public function removeControllerDirectory($module)
    {
        return $this->getDispatcher()->removeControllerDirectory($module);
    }

    /**
     * Specify a directory as containing modules
     *
     * Iterates through the directory, adding any subdirectories as modules;
     * the subdirectory within each module named after {@link $_moduleControllerDirectoryName}
     * will be used as the controller directory path.
     *
     * @param  string $path
     * @return Zend_Controller_Front
     */
    public function addModuleDirectory($path)
    {
        try{
            $dir = new DirectoryIterator($path);
        }catch(Exception $e){
            throw new Zend_Controller_Exception("Directory $path not readable");
        }
        foreach ($dir as $file) {
            if ($file->isDot() || !$file->isDir()) {
                continue;
            }

            $module    = $file->getFilename();

            // Don't use SCCS directories as modules
            if (preg_match('/^[^a-z]/i', $module) || ('CVS' == $module)) {
                continue;
            }

            $moduleDir = $file->getPathname() . DIRECTORY_SEPARATOR . $this->getModuleControllerDirectoryName();
            $this->addControllerDirectory($moduleDir, $module);
        }

        return $this;
    }

    /**
     * Return the path to a module directory (but not the controllers directory within)
     * 
     * @param  string $module 
     * @return string|null
     */
    public function getModuleDirectory($module = null)
    {
        if (null === $module) {
            $request = $this->getRequest();
            if (null !== $request) {
                $module = $this->getRequest()->getModuleName();
            }
            if (empty($module)) {
                $module = $this->getDispatcher()->getDefaultModule();
            }
        }

        $controllerDir = $this->getControllerDirectory($module);

        if ((null === $controllerDir) || !is_string($controllerDir)) {
            return null;
        }

        return dirname($controllerDir);
    }

    /**
     * Set the directory name within a module containing controllers
     *
     * @param  string $name
     * @return Zend_Controller_Front
     */
    public function setModuleControllerDirectoryName($name = 'controllers')
    {
        $this->_moduleControllerDirectoryName = (string) $name;

        return $this;
    }

    /**
     * Return the directory name within a module containing controllers
     *
     * @return string
     */
    public function getModuleControllerDirectoryName()
    {
        return $this->_moduleControllerDirectoryName;
    }

    /**
     * Set the default controller (unformatted string)
     *
     * @param string $controller
     * @return Zend_Controller_Front
     */
    public function setDefaultControllerName($controller)
    {
        $dispatcher = $this->getDispatcher();
        $dispatcher->setDefaultControllerName($controller);
        return $this;
    }

    /**
     * Retrieve the default controller (unformatted string)
     *
     * @return string
     */
    public function getDefaultControllerName()
    {
        return $this->getDispatcher()->getDefaultControllerName();
    }

    /**
     * Set the default action (unformatted string)
     *
     * @param string $action
     * @return Zend_Controller_Front
     */
    public function setDefaultAction($action)
    {
        $dispatcher = $this->getDispatcher();
        $dispatcher->setDefaultAction($action);
        return $this;
    }

    /**
     * Retrieve the default action (unformatted string)
     *
     * @return string
     */
    public function getDefaultAction()
    {
        return $this->getDispatcher()->getDefaultAction();
    }

    /**
     * Set the default module name
     *
     * @param string $module
     * @return Zend_Controller_Front
     */
    public function setDefaultModule($module)
    {
        $dispatcher = $this->getDispatcher();
        $dispatcher->setDefaultModule($module);
        return $this;
    }

    /**
     * Retrieve the default module
     *
     * @return string
     */
    public function getDefaultModule()
    {
        return $this->getDispatcher()->getDefaultModule();
    }

    /**
     * Set request class/object
     *
     * Set the request object.  The request holds the request environment.
     *
     * If a class name is provided, it will instantiate it
     *
     * @param string|Zend_Controller_Request_Abstract $request
     * @throws Zend_Controller_Exception if invalid request class
     * @return Zend_Controller_Front
     */
    public function setRequest($request)
    {
        if (is_string($request)) {
            Zend_Loader::loadClass($request);
            $request = new $request();
        }
        if (!$request instanceof Zend_Controller_Request_Abstract) {
            throw new Zend_Controller_Exception('Invalid request class');
        }

        $this->_request = $request;

        return $this;
    }

    /**
     * Return the request object.
     *
     * @return null|Zend_Controller_Request_Abstract
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Set router class/object
     *
     * Set the router object.  The router is responsible for mapping
     * the request to a controller and action.
     *
     * If a class name is provided, instantiates router with any parameters
     * registered via {@link setParam()} or {@link setParams()}.
     *
     * @param string|Zend_Controller_Router_Interface $router
     * @throws Zend_Controller_Exception if invalid router class
     * @return Zend_Controller_Front
     */
    public function setRouter($router)
    {
        if (is_string($router)) {
            Zend_Loader::loadClass($router);
            $router = new $router();
        }

        if (!$router instanceof Zend_Controller_Router_Interface) {
            throw new Zend_Controller_Exception('Invalid router class');
        }

        $router->setFrontController($this);
        $this->_router = $router;

        return $this;
    }

    /**
     * Return the router object.
     *
     * Instantiates a Zend_Controller_Router_Rewrite object if no router currently set.
     *
     * @return Zend_Controller_Router_Interface
     */
    public function getRouter()
    {
        if (null == $this->_router) {
            require_once 'Zend/Controller/Router/Rewrite.php';
            $this->setRouter(new Zend_Controller_Router_Rewrite());
        }

        return $this->_router;
    }

    /**
     * Set the base URL used for requests
     *
     * Use to set the base URL segment of the REQUEST_URI to use when
     * determining PATH_INFO, etc. Examples:
     * - /admin
     * - /myapp
     * - /subdir/index.php
     *
     * Note that the URL should not include the full URI. Do not use:
     * - http://example.com/admin
     * - http://example.com/myapp
     * - http://example.com/subdir/index.php
     *
     * If a null value is passed, this can be used as well for autodiscovery (default).
     *
     * @param string $base
     * @return Zend_Controller_Front
     * @throws Zend_Controller_Exception for non-string $base
     */
    public function setBaseUrl($base = null)
    {
        if (!is_string($base) && (null !== $base)) {
            throw new Zend_Controller_Exception('Rewrite base must be a string');
        }

        $this->_baseUrl = $base;

        if ((null !== ($request = $this->getRequest())) && (method_exists($request, 'setBaseUrl'))) {
            $request->setBaseUrl($base);
        }

        return $this;
    }

    /**
     * Retrieve the currently set base URL
     *
     * @return string
     */
    public function getBaseUrl()
    {
        $request = $this->getRequest();
        if ((null !== $request) && method_exists($request, 'getBaseUrl')) {
            return $request->getBaseUrl();
        }

        return $this->_baseUrl;
    }

    /**
     * Set the dispatcher object.  The dispatcher is responsible for
     * taking a Zend_Controller_Dispatcher_Token object, instantiating the controller, and
     * call the action method of the controller.
     *
     * @param Zend_Controller_Dispatcher_Interface $dispatcher
     * @return Zend_Controller_Front
     */
    public function setDispatcher(Zend_Controller_Dispatcher_Interface $dispatcher)
    {
        $this->_dispatcher = $dispatcher;
        return $this;
    }

    /**
     * Return the dispatcher object.
     *
     * @return Zend_Controller_Dispatcher_Interface
     */
    public function getDispatcher()
    {
        /**
         * Instantiate the default dispatcher if one was not set.
         */
        if (!$this->_dispatcher instanceof Zend_Controller_Dispatcher_Interface) {
            require_once 'Zend/Controller/Dispatcher/Standard.php';
            $this->_dispatcher = new Zend_Controller_Dispatcher_Standard();
        }
        return $this->_dispatcher;
    }

    /**
     * Set response class/object
     *
     * Set the response object.  The response is a container for action
     * responses and headers. Usage is optional.
     *
     * If a class name is provided, instantiates a response object.
     *
     * @param string|Zend_Controller_Response_Abstract $response
     * @throws Zend_Controller_Exception if invalid response class
     * @return Zend_Controller_Front
     */
    public function setResponse($response)
    {
        if (is_string($response)) {
            Zend_Loader::loadClass($response);
            $response = new $response();
        }
        if (!$response instanceof Zend_Controller_Response_Abstract) {
            throw new Zend_Controller_Exception('Invalid response class');
        }

        $this->_response = $response;

        return $this;
    }

    /**
     * Return the response object.
     *
     * @return null|Zend_Controller_Response_Abstract
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Add or modify a parameter to use when instantiating an action controller
     *
     * @param string $name
     * @param mixed $value
     * @return Zend_Controller_Front
     */
    public function setParam($name, $value)
    {
        $name = (string) $name;
        $this->_invokeParams[$name] = $value;
        return $this;
    }

    /**
     * Set parameters to pass to action controller constructors
     *
     * @param array $params
     * @return Zend_Controller_Front
     */
    public function setParams(array $params)
    {
        $this->_invokeParams = array_merge($this->_invokeParams, $params);
        return $this;
    }

    /**
     * Retrieve a single parameter from the controller parameter stack
     *
     * @param string $name
     * @return mixed
     */
    public function getParam($name)
    {
        if(isset($this->_invokeParams[$name])) {
            return $this->_invokeParams[$name];
        }

        return null;
    }

    /**
     * Retrieve action controller instantiation parameters
     *
     * @return array
     */
    public function getParams()
    {
        return $this->_invokeParams;
    }

    /**
     * Clear the controller parameter stack
     *
     * By default, clears all parameters. If a parameter name is given, clears
     * only that parameter; if an array of parameter names is provided, clears
     * each.
     *
     * @param null|string|array single key or array of keys for params to clear
     * @return Zend_Controller_Front
     */
    public function clearParams($name = null)
    {
        if (null === $name) {
            $this->_invokeParams = array();
        } elseif (is_string($name) && isset($this->_invokeParams[$name])) {
            unset($this->_invokeParams[$name]);
        } elseif (is_array($name)) {
            foreach ($name as $key) {
                if (is_string($key) && isset($this->_invokeParams[$key])) {
                    unset($this->_invokeParams[$key]);
                }
            }
        }

        return $this;
    }

    /**
     * Register a plugin.
     *
     * @param  Zend_Controller_Plugin_Abstract $plugin
     * @param  int $stackIndex Optional; stack index for plugin
     * @return Zend_Controller_Front
     */
    public function registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null)
    {
        $this->_plugins->registerPlugin($plugin, $stackIndex);
        return $this;
    }

    /**
     * Unregister a plugin.
     *
     * @param  string|Zend_Controller_Plugin_Abstract $plugin Plugin class or object to unregister
     * @return Zend_Controller_Front
     */
    public function unregisterPlugin($plugin)
    {
        $this->_plugins->unregisterPlugin($plugin);
        return $this;
    }

    /**
     * Is a particular plugin registered?
     *
     * @param  string $class
     * @return bool
     */
    public function hasPlugin($class)
    {
        return $this->_plugins->hasPlugin($class);
    }

    /**
     * Retrieve a plugin or plugins by class
     *
     * @param  string $class
     * @return false|Zend_Controller_Plugin_Abstract|array
     */
    public function getPlugin($class)
    {
        return $this->_plugins->getPlugin($class);
    }

    /**
     * Retrieve all plugins
     *
     * @return array
     */
    public function getPlugins()
    {
        return $this->_plugins->getPlugins();
    }

    /**
     * Set the throwExceptions flag and retrieve current status
     *
     * Set whether exceptions encounted in the dispatch loop should be thrown
     * or caught and trapped in the response object.
     *
     * Default behaviour is to trap them in the response object; call this
     * method to have them thrown.
     *
     * Passing no value will return the current value of the flag; passing a 
     * boolean true or false value will set the flag and return the current 
     * object instance.
     *
     * @param boolean $flag Defaults to null (return flag state)
     * @return boolean|Zend_Controller_Front Used as a setter, returns object; as a getter, returns boolean
     */
    public function throwExceptions($flag = null)
    {
        if ($flag !== null) {
            $this->_throwExceptions = (bool) $flag;
            return $this;
        }

        return $this->_throwExceptions;
    }

    /**
     * Set whether {@link dispatch()} should return the response without first
     * rendering output. By default, output is rendered and dispatch() returns
     * nothing.
     *
     * @param boolean $flag
     * @return boolean|Zend_Controller_Front Used as a setter, returns object; as a getter, returns boolean
     */
    public function returnResponse($flag = null)
    {
        if (true === $flag) {
            $this->_returnResponse = true;
            return $this;
        } elseif (false === $flag) {
            $this->_returnResponse = false;
            return $this;
        }

        return $this->_returnResponse;
    }

    /**
     * Dispatch an HTTP request to a controller/action.
     *
     * @param Zend_Controller_Request_Abstract|null $request
     * @param Zend_Controller_Response_Abstract|null $response
     * @return void|Zend_Controller_Response_Abstract Returns response object if returnResponse() is true
     */
    public function dispatch(Zend_Controller_Request_Abstract $request = null, Zend_Controller_Response_Abstract $response = null)
    {
        if (!$this->getParam('noErrorHandler') && !$this->_plugins->hasPlugin('Zend_Controller_Plugin_ErrorHandler')) {
            // Register with stack index of 100
            require_once 'Zend/Controller/Plugin/ErrorHandler.php';
            $this->_plugins->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(), 100);
        }

        if (!$this->getParam('noViewRenderer') && !Zend_Controller_Action_HelperBroker::hasHelper('viewRenderer')) {
            require_once 'Zend/Controller/Action/Helper/ViewRenderer.php';
            Zend_Controller_Action_HelperBroker::getStack()->offsetSet(-80, new Zend_Controller_Action_Helper_ViewRenderer());
        }

        /**
         * Instantiate default request object (HTTP version) if none provided
         */
        if (null !== $request) {
            $this->setRequest($request);
        } elseif ((null === $request) && (null === ($request = $this->getRequest()))) {
            require_once 'Zend/Controller/Request/Http.php';
            $request = new Zend_Controller_Request_Http();
            $this->setRequest($request);
        }

        /**
         * Set base URL of request object, if available
         */
        if (is_callable(array($this->_request, 'setBaseUrl'))) {
            if (null !== $this->_baseUrl) {
                $this->_request->setBaseUrl($this->_baseUrl);
            }
        }

        /**
         * Instantiate default response object (HTTP version) if none provided
         */
        if (null !== $response) {
            $this->setResponse($response);
        } elseif ((null === $this->_response) && (null === ($this->_response = $this->getResponse()))) {
            require_once 'Zend/Controller/Response/Http.php';
            $response = new Zend_Controller_Response_Http();
            $this->setResponse($response);
        }

        /**
         * Register request and response objects with plugin broker
         */
        $this->_plugins
             ->setRequest($this->_request)
             ->setResponse($this->_response);

        /**
         * Initialize router
         */
        $router = $this->getRouter();
        $router->setParams($this->getParams());

        /**
         * Initialize dispatcher
         */
        $dispatcher = $this->getDispatcher();
        $dispatcher->setParams($this->getParams())
                   ->setResponse($this->_response);

        // Begin dispatch
        try {
            /**
             * Route request to controller/action, if a router is provided
             */

            /**
            * Notify plugins of router startup
            */
            $this->_plugins->routeStartup($this->_request);

            $router->route($this->_request);

            /**
            * Notify plugins of router completion
            */
            $this->_plugins->routeShutdown($this->_request);

            /**
             * Notify plugins of dispatch loop startup
             */
            $this->_plugins->dispatchLoopStartup($this->_request);

            /**
             *  Attempt to dispatch the controller/action. If the $this->_request
             *  indicates that it needs to be dispatched, move to the next
             *  action in the request.
             */
            do {
                $this->_request->setDispatched(true);

                /**
                 * Notify plugins of dispatch startup
                 */
                $this->_plugins->preDispatch($this->_request);

                /**
                 * Skip requested action if preDispatch() has reset it
                 */
                if (!$this->_request->isDispatched()) {
                    continue;
                }

                /**
                 * Dispatch request
                 */
                try {
                    $dispatcher->dispatch($this->_request, $this->_response);
                } catch (Exception $e) {
                    if ($this->throwExceptions()) {
                        throw $e;
                    }
                    $this->_response->setException($e);
                }

                /**
                 * Notify plugins of dispatch completion
                 */
                $this->_plugins->postDispatch($this->_request);
            } while (!$this->_request->isDispatched());
        } catch (Exception $e) {
            if ($this->throwExceptions()) {
                throw $e;
            }

            $this->_response->setException($e);
        }

        /**
         * Notify plugins of dispatch loop completion
         */
        try {
            $this->_plugins->dispatchLoopShutdown();
        } catch (Exception $e) {
            if ($this->throwExceptions()) {
                throw $e;
            }

            $this->_response->setException($e);
        }

        if ($this->returnResponse()) {
            return $this->_response;
        }

        $this->_response->sendResponse();
    }
}
PKpG[��3��Pdf/Trailer/Generator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Trailer */
require_once 'Zend/Pdf/Trailer.php';


/**
 * PDF file trailer generator (used for just created PDF)
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Trailer_Generator extends Zend_Pdf_Trailer
{
    /**
     * Object constructor
     *
     * @param Zend_Pdf_Element_Dictionary $dict
     */
    public function __construct(Zend_Pdf_Element_Dictionary $dict)
    {
        parent::__construct($dict);
    }

    /**
     * Get length of source PDF
     *
     * @return string
     */
    public function getPDFLength()
    {
        return strlen(Zend_Pdf::PDF_HEADER);
    }

    /**
     * Get PDF String
     *
     * @return string
     */
    public function getPDFString()
    {
        return Zend_Pdf::PDF_HEADER;
    }

    /**
     * Get header of free objects list
     * Returns object number of last free object
     *
     * @return integer
     */
    public function getLastFreeObject()
    {
        return 0;
    }
}
PKpG[t[�Pdf/Trailer/Keeper.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Trailer */
require_once 'Zend/Pdf/Trailer.php';

/** Zend_Pdf_Element_Reference_Context */
require_once 'Zend/Pdf/Element/Reference/Context.php';


/**
 * PDF file trailer.
 * Stores and provides access to the trailer parced from a PDF file
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Trailer_Keeper extends Zend_Pdf_Trailer
{
    /**
     * Reference context
     *
     * @var Zend_Pdf_Element_Reference_Context
     */
    private $_context;

    /**
     * Previous trailer
     *
     * @var Zend_Pdf_Trailer
     */
    private $_prev;


    /**
     * Object constructor
     *
     * @param Zend_Pdf_Element_Dictionary $dict
     * @param Zend_Pdf_Element_Reference_Context $context
     * @param Zend_Pdf_Trailer $prev
     */
    public function __construct(Zend_Pdf_Element_Dictionary $dict,
                                Zend_Pdf_Element_Reference_Context $context,
                                $prev = null)
    {
        parent::__construct($dict);

        $this->_context = $context;
        $this->_prev    = $prev;
    }

    /**
     * Setter for $this->_prev
     *
     * @param Zend_Pdf_Trailer_Keeper $prev
     */
    public function setPrev(Zend_Pdf_Trailer_Keeper $prev)
    {
        $this->_prev = $prev;
    }

    /**
     * Getter for $this->_prev
     *
     * @return Zend_Pdf_Trailer
     */
    public function getPrev()
    {
        return $this->_prev;
    }

    /**
     * Get length of source PDF
     *
     * @return string
     */
    public function getPDFLength()
    {
        return $this->_context->getParser()->getLength();
    }

    /**
     * Get PDF String
     *
     * @return string
     */
    public function getPDFString()
    {
        return $this->_context->getParser()->getString();
    }

    /**
     * Get reference table, which corresponds to the trailer.
     * Proxy to the $_context member methad call
     *
     * @return Zend_Pdf_Element_Reference_Context
     */
    public function getRefTable()
    {
        return $this->_context->getRefTable();
    }

    /**
     * Get header of free objects list
     * Returns object number of last free object
     *
     * @throws Zend_Pdf_Exception
     * @return integer
     */
    public function getLastFreeObject()
    {
        try {
            $this->_context->getRefTable()->getNextFree('0 65535 R');
        } catch (Zend_Pdf_Exception $e) {
            if ($e->getMessage() == 'Object not found.') {
                /**
                 * Here is work around for some wrong generated PDFs.
                 * We have not found reference to the header of free object list,
                 * thus we treat it as there are no free objects.
                 */
                return 0;
            }

            throw $e;
        }
    }
}
PKpG[��x��
Pdf/Color.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * PDF provides a powerfull facilities for specifying the colors of graphics objects.
 * This class encapsulates color behaviour.
 *
 * Some colors interact with PDF document (create additional objects in a PDF),
 * others don't do it. That is defined in a subclasses.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Color
{
    /**
     * Instructions, which can be directly inserted into content stream
     * to switch color.
     * Color set instructions differ for stroking and nonstroking operations.
     *
     * @param boolean $stroking
     * @return string
     */
    abstract public function instructions($stroking);
}

PKpG[4���
�
Pdf/PhpArray.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * PHP Array (OO wrapper)
 * Used to be returned by reference by __get() methods
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @todo       also implement Countable for PHP 5.1 but not yet to stay 5.0 compatible
 */
class Zend_Pdf_PhpArray implements ArrayAccess, Iterator, Countable {
    /**
     * Array element
     * @var mixed
     */
    protected $_items = array();


    /**
     * Object constructor
     *
     * @param array $srcArray
     */
    public function __construct($srcArray = null)
    {
        if ($srcArray === null) {
            reset($this->_items);
        } else if (is_array($srcArray)) {
            $this->_items = $srcArray;
        } else {
            throw new Exception('Array can be initialized only by other array');
        }
    }


    public function current()
    {
        return current($this->_items);
    }


    public function next()
    {
        return next($this->_items);
    }


    public function key()
    {
        return key($this->_items);
    }


    public function valid() {
        return current($this->_items)!==false;
    }


    public function rewind()
    {
        reset($this->_items);
    }


    public function offsetExists($offset)
    {
        return array_key_exists($offset, $this->_items);
    }


    public function offsetGet($offset)
    {
        return $this->_items[$offset];
    }


    public function offsetSet($offset, $value)
    {
        if ($offset === null) {
            $this->_items[]        = $value;
        } else {
            $this->_items[$offset] = $value;
        }
    }


    public function offsetUnset($offset)
    {
        unset($this->_items[$offset]);
    }


    public function clear()
    {
        $this->_items = array();
    }
    
    /**
     * Defined by Countable interface
     *
     * @return int
     */
    public function count()
    {
        return count($this->_items);
    }
    
}

PKpG[���H�!�!Pdf/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Core
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';


/**
 * Exception class for Zend_Pdf.
 *
 * If you expect a certain type of exception to be caught and handled by the
 * caller, create a constant for it here and include it in the object being
 * thrown. Example:
 *
 *   throw new Zend_Pdf_Exception('foo() is not yet implemented',
 *                                Zend_Pdf_Exception::NOT_IMPLEMENTED);
 *
 * This allows the caller to determine the specific type of exception that was
 * thrown without resorting to parsing the descriptive text.
 *
 * IMPORTANT: Do not rely on numeric values of the constants! They are grouped
 * sequentially below for organizational purposes only. The numbers may come to
 * mean something in the future, but they are subject to renumbering at any
 * time. ALWAYS use the symbolic constant names, which are guaranteed never to
 * change, in logical checks! You have been warned.
 *
 * @package    Zend_Pdf
 * @subpackage Core
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Exception extends Zend_Exception
{
  /**** Class Constants ****/


  /* Generic Exceptions */

    /**
     * The feature or option is planned but has not yet been implemented. It
     * should be available in a future revision of the framework.
     */
    const NOT_IMPLEMENTED = 0x0001;

    /**
     * The feature or option has been deprecated and will be removed in a future
     * revision of the framework. The descriptive text accompanying this
     * exception should explain how to use the replacement features or options.
     */
    const DEPRECATED = 0x0002;

    /**
     * Not enough paramaters were supplied to the method.
     */
    const TOO_FEW_PARAMETERS = 0x0003;

    /**
     * A parameter was of the wrong data type.
     */
    const BAD_PARAMETER_TYPE = 0x0004;

    /**
     * A parameter contained an unusable value.
     */
    const BAD_PARAMETER_VALUE = 0x0005;

    /**
     * A parameter value was not within the expected range.
     */
    const PARAMETER_VALUE_OUT_OF_RANGE = 0x0006;

    /**
     * The method that has multiple signatures could not understand the
     * number and/or types of parameters.
     */
    const BAD_METHOD_SIGNATURE = 0x0007;

    /**
     * An array or string index was out of range.
     */
    const INDEX_OUT_OF_RANGE = 0x0008;



  /* Filesystem I/O */

    /**
     * The file path was unusable or invalid.
     */
    const BAD_FILE_PATH = 0x0101;

    /**
     * The file is not readable by the current user.
     */
    const NOT_READABLE = 0x0102;

    /**
     * The file is not writeable by the current user.
     */
    const NOT_WRITEABLE = 0x0103;

    /**
     * The file resource has been closed unexpectedly.
     */
    const FILE_NOT_OPEN = 0x0104;

    /**
     * An error was encountered while attempting to open the file.
     */
    const CANT_OPEN_FILE = 0x0105;

    /**
     * An error was encountered while attempting to obtain the current file
     * position.
     */
    const CANT_GET_FILE_POSITION = 0x0106;

    /**
     * An error was encountered while attempting to set a new file position.
     */
    const CANT_SET_FILE_POSITION = 0x0107;

    /**
     * An attempt was made to move the current file position before the start
     * of the file.
     */
    const MOVE_BEFORE_START_OF_FILE = 0x0108;

    /**
     * An attempt was made to move the current file position beyond the end of
     * the file.
     */
    const MOVE_BEYOND_END_OF_FILE = 0x0109;

    /**
     * An error was encountered while attempting to obtain the file size.
     */
    const CANT_GET_FILE_SIZE = 0x010a;

    /**
     * An error was encountered while attempting to read data from the file.
     */
    const ERROR_DURING_READ = 0x010b;

    /**
     * An error was encountered while attempting to write data to the file.
     */
    const ERROR_DURING_WRITE = 0x010c;

    /**
     * An incompatible page size was specified for a buffered read operation.
     */
    const INVALID_PAGE_SIZE = 0x010d;

    /**
     * There is insufficient data to fulfill the read request.
     */
    const INSUFFICIENT_DATA = 0x010e;



  /* Zend_Pdf_FileParser */

    /**
     * The file parser data source object was invalid or improperly initialized.
     */
    const BAD_DATA_SOURCE = 0x0201;

    /**
     * An unknown byte order was specified.
     */
    const INVALID_BYTE_ORDER = 0x0202;

    /**
     * An invalid integer size was specified.
     */
    const INVALID_INTEGER_SIZE = 0x0203;

    /**
     * An invalid fixed-point number size was specified.
     */
    const BAD_FIXED_POINT_SIZE = 0x0204;

    /**
     * The string cannot be read.
     */
    const CANT_READ_STRING = 0x0205;

    /**
     * This file type must be parsed in a specific order and a parsing method
     * was called out-of-turn.
     */
    const PARSED_OUT_OF_ORDER = 0x0206;



  /* Zend_Pdf_FileParser_Font and Subclasses */

    /**
     * The font file type is incorrect.
     */
    const WRONG_FONT_TYPE = 0x0301;

    /**
     * The number of tables contained in the font is outside the expected range.
     */
    const BAD_TABLE_COUNT = 0x0302;

    /**
     * A required table was not present in the font.
     */
    const REQUIRED_TABLE_NOT_FOUND = 0x0303;

    /**
     * The parser does not understand this version of this table in the font.
     */
    const DONT_UNDERSTAND_TABLE_VERSION = 0x0303;

    /**
     * The magic number in the font file is incorrect.
     */
    const BAD_MAGIC_NUMBER = 0x0304;

    /**
     * Could not locate a usable character map for this font.
     */
    const CANT_FIND_GOOD_CMAP = 0x0305;



  /* Zend_Pdf_Cmap and Subclasses */

    /**
     * The character map type is currently unsupported.
     */
    const CMAP_TYPE_UNSUPPORTED = 0x0401;

    /**
     * The type of the character map is not understood.
     */
    const CMAP_UNKNOWN_TYPE = 0x0402;

    /**
     * The character map table data is too small.
     */
    const CMAP_TABLE_DATA_TOO_SMALL = 0x0403;

    /**
     * The character map table data is for a different type of table.
     */
    const CMAP_WRONG_TABLE_TYPE = 0x0404;

    /**
     * The character map table data contains in incorrect length.
     */
    const CMAP_WRONG_TABLE_LENGTH = 0x0405;

    /**
     * This character map table is language-dependent. Character maps must be
     * language-independent.
     */
    const CMAP_NOT_LANGUAGE_INDEPENDENT = 0x0406;

    /**
     * The final byte offset when reading the character map table data does not
     * match the reported length of the table.
     */
    const CMAP_FINAL_OFFSET_NOT_LENGTH = 0x0407;

    /**
     * The character map subtable entry count does not match the expected value.
     */
    const CMAP_WRONG_ENTRY_COUNT = 0x0408;



  /* Zend_Pdf_Resource_Font and Subclasses */

    /**
     * The specified glyph number is out of range for this font.
     */
    const GLYPH_OUT_OF_RANGE = 0x0501;

    /**
     * This font program has copyright bits set which prevent it from being
     * embedded in the PDF file. You must specify the no-embed option to use
     * this font.
     */
    const FONT_CANT_BE_EMBEDDED = 0x0502;



  /* Zend_Pdf_Font */

    /**
     * The font name did not match any previously instantiated font and is not
     * one of the standard 14 PDF fonts.
     */
    const BAD_FONT_NAME = 0x0601;

    /**
     * The factory method could not determine the type of the font file.
     */
    const CANT_DETERMINE_FONT_TYPE = 0x0602;


  /* Text Layout System */

    /**
     * The specified attribute value for the text object cannot be used.
     */
    const BAD_ATTRIBUTE_VALUE = 0x0701;


  /* Zend_Pdf_Image and Subclasses */

    const CANT_DETERMINE_IMAGE_TYPE = 0x0801;
    const WRONG_IMAGE_TYPE = 0x0802;
    const UNSUPPORTED_IMAGE_ENCODING_OPTIONS = 0x0803;
    const IMAGE_FILE_CORRUPT = 0x0804;


}

PKpG[�,/�ll Pdf/ElementFactory/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * PDF element factory interface.
 * Responsibility is to log PDF changes
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Pdf_ElementFactory_Interface
{
    /**
     * Close factory and clean-up resources
     *
     * @internal
     */
    public function close();

    /**
     * Get source factory object
     *
     * @return Zend_Pdf_ElementFactory
     */
    public function resolve();

    /**
     * Get factory ID
     *
     * @return integer
     */
    public function getId();

    /**
     * Set object counter
     *
     * @param integer $objCount
     */
    public function setObjectCount($objCount);

    /**
     * Get object counter
     *
     * @return integer
     */
    public function getObjectCount();

    /**
     * Attach factory to the current;
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     */
    public function attach(Zend_Pdf_ElementFactory_Interface $factory);

    /**
     * Calculate object enumeration shift.
     *
     * @internal
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     */
    public function calculateShift(Zend_Pdf_ElementFactory_Interface $factory);

    /**
     * Retrive object enumeration shift.
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function getEnumerationShift(Zend_Pdf_ElementFactory_Interface $factory);

    /**
     * Mark object as modified in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function markAsModified(Zend_Pdf_Element_Object $obj);

    /**
     * Remove object in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function remove(Zend_Pdf_Element_Object $obj);

    /**
     * Generate new Zend_Pdf_Element_Object
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param Zend_Pdf_Element $objectValue
     * @return Zend_Pdf_Element_Object
     */
    public function newObject(Zend_Pdf_Element $objectValue);

    /**
     * Generate new Zend_Pdf_Element_Object_Stream
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param mixed $objectValue
     * @return Zend_Pdf_Element_Object_Stream
     */
    public function newStreamObject($streamValue);

    /**
     * Enumerate modified objects.
     * Returns array of Zend_Pdf_UpdateInfoContainer
     *
     * @param Zend_Pdf_ElementFactory $rootFactory
     * @return array
     */
    public function listModifiedObjects($rootFactory = null);

    /**
     * Check if PDF file was modified
     *
     * @return boolean
     */
    public function isModified();
}

PKpG[RRm�

Pdf/ElementFactory/Proxy.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_ElementFactory_Interface */
require_once 'Zend/Pdf/ElementFactory/Interface.php';


/**
 * PDF element factory interface.
 * Responsibility is to log PDF changes
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_ElementFactory_Proxy implements Zend_Pdf_ElementFactory_Interface
{
    /**
     * Factory object
     *
     * @var Zend_Pdf_ElementFactory_Interface
     */
    private $_factory;


    /**
     * Object constructor
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     */
    public function __construct(Zend_Pdf_ElementFactory_Interface $factory)
    {
        $this->_factory = $factory;
    }

    public function __destruct()
    {
        $this->_factory->close();
        $this->_factory = null;
    }

    /**
     * Close factory and clean-up resources
     *
     * @internal
     */
    public function close()
    {
        // Do nothing
    }

    /**
     * Get source factory object
     *
     * @return Zend_Pdf_ElementFactory
     */
    public function resolve()
    {
        return $this->_factory->resolve();
    }

    /**
     * Get factory ID
     *
     * @return integer
     */
    public function getId()
    {
        return $this->_factory->getId();
    }

    /**
     * Set object counter
     *
     * @param integer $objCount
     */
    public function setObjectCount($objCount)
    {
        $this->_factory->setObjectCount($objCount);
    }

    /**
     * Get object counter
     *
     * @return integer
     */
    public function getObjectCount()
    {
        return $this->_factory->getObjectCount();
    }

    /**
     * Attach factory to the current;
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     */
    public function attach(Zend_Pdf_ElementFactory_Interface $factory)
    {
        $this->_factory->attach($factory);
    }

    /**
     * Calculate object enumeration shift.
     *
     * @internal
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     */
    public function calculateShift(Zend_Pdf_ElementFactory_Interface $factory)
    {
        return $this->_factory->calculateShift($factory);
    }

    /**
     * Retrive object enumeration shift.
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function getEnumerationShift(Zend_Pdf_ElementFactory_Interface $factory)
    {
        return $this->_factory->getEnumerationShift($factory);
    }

    /**
     * Mark object as modified in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function markAsModified(Zend_Pdf_Element_Object $obj)
    {
        $this->_factory->markAsModified($obj);
    }

    /**
     * Remove object in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function remove(Zend_Pdf_Element_Object $obj)
    {
        $this->_factory->remove($obj);
    }

    /**
     * Generate new Zend_Pdf_Element_Object
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param Zend_Pdf_Element $objectValue
     * @return Zend_Pdf_Element_Object
     */
    public function newObject(Zend_Pdf_Element $objectValue)
    {
        return $this->_factory->newObject($objectValue);
    }

    /**
     * Generate new Zend_Pdf_Element_Object_Stream
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param mixed $objectValue
     * @return Zend_Pdf_Element_Object_Stream
     */
    public function newStreamObject($streamValue)
    {
        return $this->_factory->newStreamObject($streamValue);
    }

    /**
     * Enumerate modified objects.
     * Returns array of Zend_Pdf_UpdateInfoContainer
     *
     * @param Zend_Pdf_ElementFactory $rootFactory
     * @return array
     */
    public function listModifiedObjects($rootFactory = null)
    {
        return $this->_factory->listModifiedObjects($rootFactory);
    }

    /**
     * Check if PDF file was modified
     *
     * @return boolean
     */
    public function isModified()
    {
        return $this->_factory->isModified();
    }
}

PKpG[ɕ���Pdf/Parser/Stream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Parser */
require_once 'Zend/Pdf/Parser.php';


/**
 * PDF object stream parser
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Parser_Stream extends Zend_Pdf_Parser
{
    /**
     * Get Trailer object
     *
     * @return Zend_Pdf_Trailer_Keeper
     */
    public function getTrailer()
    {
        throw new Zend_Pdf_Exception('Stream object parser doesn\'t contain trailer information.');
    }

    /**
     * Object constructor
     *
     * @param string $pdfString
     * @param Zend_Pdf_ElementFactory $factory
     * @throws Zend_Exception
     */
    public function __construct(&$source, Zend_Pdf_ElementFactory $factory)
    {
        $this->_current        = 0;
        $this->_currentContext = null;
        $this->_contextStack   = array();
        $this->_elements       = new Zend_Pdf_PhpArray();
        $this->_objFactory     = $factory;
    }
}
PKpG[�g�ffPdf/Resource.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';


/**
 * PDF file Resource abstraction
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource
{
    /**
     * Each Pdf resource (fonts, images, ...) interacts with a PDF itself.
     * It creates appropriate PDF objects, structures and sometime embedded files.
     * Resources are referenced in content streams by names, which are stored in
     * a page resource dictionaries.
     *
     * Thus, resources must be attached to the PDF.
     *
     * Resource abstraction uses own PDF object factory to store all necessary information.
     * At the render time internal object factory is appended to the global PDF file
     * factory.
     *
     * Resource abstraction also cashes information about rendered PDF files and
     * doesn't duplicate resource description each time then Resource is rendered
     * (referenced).
     *
     * @var Zend_Pdf_ElementFactory_Interface
     */
    protected $_objectFactory;

    /**
     * Main resource object
     *
     * @var Zend_Pdf_Element_Object
     */
    protected $_resource;

    /**
     * Object constructor.
     *
     * If resource is not a Zend_Pdf_Element object, then stream object with specified value is
     * generated.
     *
     * @param Zend_Pdf_Element|string $resource
     */
    public function __construct($resource)
    {
        $this->_objectFactory     = Zend_Pdf_ElementFactory::createFactory(1);
        if ($resource instanceof Zend_Pdf_Element) {
            $this->_resource      = $this->_objectFactory->newObject($resource);
        } else {
            $this->_resource      = $this->_objectFactory->newStreamObject($resource);
        }
    }

    /**
     * Get resource.
     * Used to reference resource in an internal PDF data structures (resource dictionaries)
     *
     * @internal
     * @return Zend_Pdf_Element_Object
     */
    public function getResource()
    {
        return $this->_resource;
    }

    /**
     * Get factory.
     *
     * @internal
     * @return Zend_Pdf_ElementFactory_Interface
     */
    public function getFactory()
    {
        return $this->_objectFactory;
    }
}

PKpG[�ED�i]i]Pdf/Font.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParserDataSource */
require_once 'Zend/Pdf/FileParserDataSource.php';

/** Zend_Pdf_FileParserDataSource_File */
require_once 'Zend/Pdf/FileParserDataSource/File.php';

/** Zend_Pdf_FileParserDataSource_String */
require_once 'Zend/Pdf/FileParserDataSource/String.php';

/** Zend_Pdf_FileParser_Font_OpenType_TrueType */
require_once 'Zend/Pdf/FileParser/Font/OpenType/TrueType.php';

/** Zend_Pdf_Resource_Font_Simple_Parsed_TrueType */
require_once 'Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php';

/** Zend_Pdf_Resource_Font_Type0 */
require_once 'Zend/Pdf/Resource/Font/Type0.php';

/** Zend_Pdf_Resource_Font_CidFont_TrueType */
require_once 'Zend/Pdf/Resource/Font/CidFont/TrueType.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_Courier */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/Courier.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_CourierBold */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/CourierBold.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/CourierOblique.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_Helvetica */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/Helvetica.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBold.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/HelveticaOblique.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_Symbol */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/Symbol.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_TimesBold */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/TimesBold.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/TimesItalic.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_TimesRoman */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/TimesRoman.php';

/** Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php';

/** Zend_Pdf_Resource_Font_Extracted */
require_once 'Zend/Pdf/Resource/Font/Extracted.php';


/**
 * Abstract factory class which vends {@link Zend_Pdf_Resource_Font} objects.
 *
 * Font objects themselves are normally instantiated through the factory methods
 * {@link fontWithName()} or {@link fontWithPath()}.
 *
 * This class is also the home for font-related constants because the name of
 * the true base class ({@link Zend_Pdf_Resource_Font}) is not intuitive for the
 * end user.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Font
{
  /**** Class Constants ****/


  /* Font Types */

    /**
     * Unknown font type.
     */
    const TYPE_UNKNOWN = 0;

    /**
     * One of the standard 14 PDF fonts.
     */
    const TYPE_STANDARD = 1;

    /**
     * A PostScript Type 1 font.
     */
    const TYPE_TYPE_1 = 2;

    /**
     * A TrueType font or an OpenType font containing TrueType outlines.
     */
    const TYPE_TRUETYPE = 3;

    /**
     * Type 0 composite font.
     */
    const TYPE_TYPE_0 = 4;
    
    /**
     * CID font containing a PostScript Type 1 font.
     * These fonts are used only to construct Type 0 composite fonts and can't be used directly
     */
    const TYPE_CIDFONT_TYPE_0 = 5;

    /**
     * CID font containing a TrueType font or an OpenType font containing TrueType outlines.
     * These fonts are used only to construct Type 0 composite fonts and can't be used directly
     */
    const TYPE_CIDFONT_TYPE_2 = 6;
    

  /* Names of the Standard 14 PDF Fonts */

    /**
     * Name of the standard PDF font Courier.
     */
    const FONT_COURIER = 'Courier';

    /**
     * Name of the bold style of the standard PDF font Courier.
     */
    const FONT_COURIER_BOLD = 'Courier-Bold';

    /**
     * Name of the italic style of the standard PDF font Courier.
     */
    const FONT_COURIER_OBLIQUE = 'Courier-Oblique';

    /**
     * Convenience constant for a common misspelling of
     * {@link FONT_COURIER_OBLIQUE}.
     */
    const FONT_COURIER_ITALIC = 'Courier-Oblique';

    /**
     * Name of the bold and italic style of the standard PDF font Courier.
     */
    const FONT_COURIER_BOLD_OBLIQUE = 'Courier-BoldOblique';

    /**
     * Convenience constant for a common misspelling of
     * {@link FONT_COURIER_BOLD_OBLIQUE}.
     */
    const FONT_COURIER_BOLD_ITALIC = 'Courier-BoldOblique';

    /**
     * Name of the standard PDF font Helvetica.
     */
    const FONT_HELVETICA = 'Helvetica';

    /**
     * Name of the bold style of the standard PDF font Helvetica.
     */
    const FONT_HELVETICA_BOLD = 'Helvetica-Bold';

    /**
     * Name of the italic style of the standard PDF font Helvetica.
     */
    const FONT_HELVETICA_OBLIQUE = 'Helvetica-Oblique';

    /**
     * Convenience constant for a common misspelling of
     * {@link FONT_HELVETICA_OBLIQUE}.
     */
    const FONT_HELVETICA_ITALIC = 'Helvetica-Oblique';

    /**
     * Name of the bold and italic style of the standard PDF font Helvetica.
     */
    const FONT_HELVETICA_BOLD_OBLIQUE = 'Helvetica-BoldOblique';

    /**
     * Convenience constant for a common misspelling of
     * {@link FONT_HELVETICA_BOLD_OBLIQUE}.
     */
    const FONT_HELVETICA_BOLD_ITALIC = 'Helvetica-BoldOblique';

    /**
     * Name of the standard PDF font Symbol.
     */
    const FONT_SYMBOL = 'Symbol';

    /**
     * Name of the standard PDF font Times.
     */
    const FONT_TIMES_ROMAN = 'Times-Roman';

    /**
     * Convenience constant for a common misspelling of
     * {@link FONT_TIMES_ROMAN}.
     */
    const FONT_TIMES = 'Times-Roman';

    /**
     * Name of the bold style of the standard PDF font Times.
     */
    const FONT_TIMES_BOLD = 'Times-Bold';

    /**
     * Name of the italic style of the standard PDF font Times.
     */
    const FONT_TIMES_ITALIC = 'Times-Italic';

    /**
     * Name of the bold and italic style of the standard PDF font Times.
     */
    const FONT_TIMES_BOLD_ITALIC = 'Times-BoldItalic';

    /**
     * Name of the standard PDF font Zapf Dingbats.
     */
    const FONT_ZAPFDINGBATS = 'ZapfDingbats';


  /* Font Name String Types */

    /**
     * Full copyright notice for the font.
     */
    const NAME_COPYRIGHT =  0;

    /**
     * Font family name. Used to group similar styles of fonts together.
     */
    const NAME_FAMILY =  1;

    /**
     * Font style within the font family. Examples: Regular, Italic, Bold, etc.
     */
    const NAME_STYLE =  2;

    /**
     * Unique font identifier.
     */
    const NAME_ID =  3;

    /**
     * Full font name. Usually a combination of the {@link NAME_FAMILY} and
     * {@link NAME_STYLE} strings.
     */
    const NAME_FULL =  4;

    /**
     * Version number of the font.
     */
    const NAME_VERSION =  5;

    /**
     * PostScript name for the font. This is the name used to identify fonts
     * internally and within the PDF file.
     */
    const NAME_POSTSCRIPT =  6;

    /**
     * Font trademark notice. This is distinct from the {@link NAME_COPYRIGHT}.
     */
    const NAME_TRADEMARK =  7;

    /**
     * Name of the font manufacturer.
     */
    const NAME_MANUFACTURER =  8;

    /**
     * Name of the designer of the font.
     */
    const NAME_DESIGNER =  9;

    /**
     * Description of the font. May contain revision information, usage
     * recommendations, features, etc.
     */
    const NAME_DESCRIPTION = 10;

    /**
     * URL of the font vendor. Some fonts may contain a unique serial number
     * embedded in this URL, which is used for licensing.
     */
    const NAME_VENDOR_URL = 11;

    /**
     * URL of the font designer ({@link NAME_DESIGNER}).
     */
    const NAME_DESIGNER_URL = 12;

    /**
     * Plain language licensing terms for the font.
     */
    const NAME_LICENSE = 13;

    /**
     * URL of more detailed licensing information for the font.
     */
    const NAME_LICENSE_URL = 14;

    /**
     * Preferred font family. Used by some fonts to work around a Microsoft
     * Windows limitation where only four fonts styles can share the same
     * {@link NAME_FAMILY} value.
     */
    const NAME_PREFERRED_FAMILY = 16;

    /**
     * Preferred font style. A more descriptive string than {@link NAME_STYLE}.
     */
    const NAME_PREFERRED_STYLE = 17;

    /**
     * Suggested text to use as a representative sample of the font.
     */
    const NAME_SAMPLE_TEXT = 19;

    /**
     * PostScript CID findfont name.
     */
    const NAME_CID_NAME = 20;


  /* Font Weights */

    /**
     * Thin font weight.
     */
    const WEIGHT_THIN = 100;

    /**
     * Extra-light (Ultra-light) font weight.
     */
    const WEIGHT_EXTRA_LIGHT = 200;

    /**
     * Light font weight.
     */
    const WEIGHT_LIGHT = 300;

    /**
     * Normal (Regular) font weight.
     */
    const WEIGHT_NORMAL = 400;

    /**
     * Medium font weight.
     */
    const WEIGHT_MEDIUM = 500;

    /**
     * Semi-bold (Demi-bold) font weight.
     */
    const WEIGHT_SEMI_BOLD = 600;

    /**
     * Bold font weight.
     */
    const WEIGHT_BOLD = 700;

    /**
     * Extra-bold (Ultra-bold) font weight.
     */
    const WEIGHT_EXTRA_BOLD = 800;

    /**
     * Black (Heavy) font weight.
     */
    const WEIGHT_BLACK = 900;


  /* Font Widths */

    /**
     * Ultra-condensed font width. Typically 50% of normal.
     */
    const WIDTH_ULTRA_CONDENSED = 1;

    /**
     * Extra-condensed font width. Typically 62.5% of normal.
     */
    const WIDTH_EXTRA_CONDENSED = 2;

    /**
     * Condensed font width. Typically 75% of normal.
     */
    const WIDTH_CONDENSED = 3;

    /**
     * Semi-condensed font width. Typically 87.5% of normal.
     */
    const WIDTH_SEMI_CONDENSED = 4;

    /**
     * Normal (Medium) font width.
     */
    const WIDTH_NORMAL = 5;

    /**
     * Semi-expanded font width. Typically 112.5% of normal.
     */
    const WIDTH_SEMI_EXPANDED = 6;

    /**
     * Expanded font width. Typically 125% of normal.
     */
    const WIDTH_EXPANDED = 7;

    /**
     * Extra-expanded font width. Typically 150% of normal.
     */
    const WIDTH_EXTRA_EXPANDED = 8;

    /**
     * Ultra-expanded font width. Typically 200% of normal.
     */
    const WIDTH_ULTRA_EXPANDED = 9;


  /* Font Embedding Options */

    /**
     * Do not embed the font in the PDF document.
     */
    const EMBED_DONT_EMBED = 0x01;

    /**
     * Embed, but do not subset the font in the PDF document.
     */
    const EMBED_DONT_SUBSET = 0x02;

    /**
     * Embed, but do not compress the font in the PDF document.
     */
    const EMBED_DONT_COMPRESS = 0x04;

    /**
     * Suppress the exception normally thrown if the font cannot be embedded
     * due to its copyright bits being set.
     */
    const EMBED_SUPPRESS_EMBED_EXCEPTION = 0x08;



  /**** Class Variables ****/


    /**
     * Array whose keys are the unique PostScript names of instantiated fonts.
     * The values are the font objects themselves.
     * @var array
     */
    private static $_fontNames = array();

    /**
     * Array whose keys are the md5 hash of the full paths on disk for parsed
     * fonts. The values are the font objects themselves.
     * @var array
     */
    private static $_fontFilePaths = array();



  /**** Public Interface ****/


  /* Factory Methods */

    /**
     * Returns a {@link Zend_Pdf_Resource_Font} object by full name.
     *
     * This is the preferred method to obtain one of the standard 14 PDF fonts.
     *
     * The result of this method is cached, preventing unnecessary duplication
     * of font objects. Repetitive calls for a font with the same name will
     * return the same object.
     *
     * The $embeddingOptions parameter allows you to set certain flags related
     * to font embedding. You may combine options by OR-ing them together. See
     * the EMBED_ constants defined in {@link Zend_Pdf_Font} for the list of
     * available options and their descriptions. Note that this value is only
     * used when creating a font for the first time. If a font with the same
     * name already exists, you will get that object and the options you specify
     * here will be ignored. This is because fonts are only embedded within the
     * PDF file once.
     *
     * If the font name supplied does not match the name of a previously
     * instantiated object and it is not one of the 14 standard PDF fonts, an
     * exception will be thrown.
     *
     * @param string $name Full PostScript name of font.
     * @param integer $embeddingOptions (optional) Options for font embedding.
     * @return Zend_Pdf_Resource_Font
     * @throws Zend_Pdf_Exception
     */
    public static function fontWithName($name, $embeddingOptions = 0)
        {
        /* First check the cache. Don't duplicate font objects.
         */
        if (isset(Zend_Pdf_Font::$_fontNames[$name])) {
            return Zend_Pdf_Font::$_fontNames[$name];
        }

        /**
         * @todo It would be cool to be able to have a mapping of font names to
         *   file paths in a configuration file for frequently used custom
         *   fonts. This would allow a user to use custom fonts without having
         *   to hard-code file paths all over the place. Table this idea until
         *   {@link Zend_Config} is ready.
         */

        /* Not an existing font and no mapping in the config file. Check to see
         * if this is one of the standard 14 PDF fonts.
         */
        switch ($name) {
            case Zend_Pdf_Font::FONT_COURIER:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_Courier();
                break;

            case Zend_Pdf_Font::FONT_COURIER_BOLD:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_CourierBold();
                break;

            case Zend_Pdf_Font::FONT_COURIER_OBLIQUE:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique();
                break;

            case Zend_Pdf_Font::FONT_COURIER_BOLD_OBLIQUE:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique();
                break;

            case Zend_Pdf_Font::FONT_HELVETICA:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_Helvetica();
                break;

            case Zend_Pdf_Font::FONT_HELVETICA_BOLD:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold();
                break;

            case Zend_Pdf_Font::FONT_HELVETICA_OBLIQUE:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique();
                break;

            case Zend_Pdf_Font::FONT_HELVETICA_BOLD_OBLIQUE:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique();
                break;

            case Zend_Pdf_Font::FONT_SYMBOL:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_Symbol();
                break;

            case Zend_Pdf_Font::FONT_TIMES_ROMAN:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_TimesRoman();
                break;

            case Zend_Pdf_Font::FONT_TIMES_BOLD:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_TimesBold();
                break;

            case Zend_Pdf_Font::FONT_TIMES_ITALIC:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic();
                break;

            case Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic();
                break;

            case Zend_Pdf_Font::FONT_ZAPFDINGBATS:
                $font = new Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats();
                break;

            default:
                throw new Zend_Pdf_Exception("Unknown font name: $name",
                                             Zend_Pdf_Exception::BAD_FONT_NAME);
        }

        /* Add this new font to the cache array and return it for use.
         */
        Zend_Pdf_Font::$_fontNames[$name] = $font;
        return $font;
    }

    /**
     * Returns a {@link Zend_Pdf_Resource_Font} object by file path.
     *
     * The result of this method is cached, preventing unnecessary duplication
     * of font objects. Repetitive calls for the font with the same path will
     * return the same object.
     *
     * The $embeddingOptions parameter allows you to set certain flags related
     * to font embedding. You may combine options by OR-ing them together. See
     * the EMBED_ constants defined in {@link Zend_Pdf_Font} for the list of
     * available options and their descriptions. Note that this value is only
     * used when creating a font for the first time. If a font with the same
     * name already exists, you will get that object and the options you specify
     * here will be ignored. This is because fonts are only embedded within the
     * PDF file once.
     *
     * If the file path supplied does not match the path of a previously
     * instantiated object or the font type cannot be determined, an exception
     * will be thrown.
     *
     * @param string $filePath Full path to the font file.
     * @param integer $embeddingOptions (optional) Options for font embedding.
     * @return Zend_Pdf_Resource_Font
     * @throws Zend_Pdf_Exception
     */
    public static function fontWithPath($filePath, $embeddingOptions = 0)
    {
        /* First check the cache. Don't duplicate font objects.
         */
        $filePathKey = md5($filePath);
        if (isset(Zend_Pdf_Font::$_fontFilePaths[$filePathKey])) {
            return Zend_Pdf_Font::$_fontFilePaths[$filePathKey];
        }

        /* Create a file parser data source object for this file. File path and
         * access permission checks are handled here.
         */
        $dataSource = new Zend_Pdf_FileParserDataSource_File($filePath);

        /* Attempt to determine the type of font. We can't always trust file
         * extensions, but try that first since it's fastest.
         */
        $fileExtension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));

        /* If it turns out that the file is named improperly and we guess the
         * wrong type, we'll get null instead of a font object.
         */
        switch ($fileExtension) {
            case 'ttf':
                $font = Zend_Pdf_Font::_extractTrueTypeFont($dataSource, $embeddingOptions);
                break;

            default:
                /* Unrecognized extension. Try to determine the type by actually
                 * parsing it below.
                 */
                $font = null;
                break;
        }


        if (is_null($font)) {
            /* There was no match for the file extension or the extension was
             * wrong. Attempt to detect the type of font by actually parsing it.
             * We'll do the checks in order of most likely format to try to
             * reduce the detection time.
             */

            // OpenType

            // TrueType
            if ((is_null($font)) && ($fileExtension != 'ttf')) {
                $font = Zend_Pdf_Font::_extractTrueTypeFont($dataSource, $embeddingOptions);
            }

            // Type 1 PostScript

            // Mac OS X dfont

            // others?
        }


        /* Done with the data source object.
         */
        $dataSource = null;

        if (! is_null($font)) {
            /* Parsing was successful. Add this font instance to the cache arrays
             * and return it for use.
             */
            $fontName = $font->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, '', '');
            Zend_Pdf_Font::$_fontNames[$fontName] = $font;
            $filePathKey = md5($filePath);
            Zend_Pdf_Font::$_fontFilePaths[$filePathKey] = $font;
            return $font;

        } else {
            /* The type of font could not be determined. Give up.
             */
            throw new Zend_Pdf_Exception("Cannot determine font type: $filePath",
                                         Zend_Pdf_Exception::CANT_DETERMINE_FONT_TYPE);
         }

    }



  /**** Internal Methods ****/


  /* Font Extraction Methods */

    /**
     * Attempts to extract a TrueType font from the data source.
     *
     * If the font parser throws an exception that suggests the data source
     * simply doesn't contain a TrueType font, catches it and returns null. If
     * an exception is thrown that suggests the TrueType font is corrupt or
     * otherwise unusable, throws that exception. If successful, returns the
     * font object.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @param integer $embeddingOptions Options for font embedding.
     * @return Zend_Pdf_Resource_Font_OpenType_TrueType May also return null if
     *   the data source does not appear to contain a TrueType font.
     * @throws Zend_Pdf_Exception
     */
    protected static function _extractTrueTypeFont($dataSource, $embeddingOptions)
    {
        try {
            $fontParser = new Zend_Pdf_FileParser_Font_OpenType_TrueType($dataSource);
            
            $fontParser->parse();
            if ($fontParser->isAdobeLatinSubset) {
                $font = new Zend_Pdf_Resource_Font_Simple_Parsed_TrueType($fontParser, $embeddingOptions);
            } else {
                /* Use Composite Type 0 font which supports Unicode character mapping */
                $cidFont = new Zend_Pdf_Resource_Font_CidFont_TrueType($fontParser, $embeddingOptions);
                $font    = new Zend_Pdf_Resource_Font_Type0($cidFont);
            }
        } catch (Zend_Pdf_Exception $exception) {
            /* The following exception codes suggest that this isn't really a
             * TrueType font. If we caught such an exception, simply return
             * null. For all other cases, it probably is a TrueType font but has
             * a problem; throw the exception again.
             */
            $fontParser = null;
            switch ($exception->getCode()) {
                case Zend_Pdf_Exception::WRONG_FONT_TYPE:    // break intentionally omitted
                case Zend_Pdf_Exception::BAD_TABLE_COUNT:    // break intentionally omitted
                case Zend_Pdf_Exception::BAD_MAGIC_NUMBER:
                    return null;

                default:
                    throw $exception;
            }
        }
        return $font;
    }

}
PKpG[4̚´�Pdf/Trailer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';


/**
 * PDF file trailer
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Trailer
{
    private static $_allowedKeys = array('Size', 'Prev', 'Root', 'Encrypt', 'Info', 'ID', 'Index', 'W', 'XRefStm', 'DocChecksum');

    /**
     * Trailer dictionary.
     *
     * @var Zend_Pdf_Element_Dictionary
     */
    private $_dict;

    /**
     * Check if key is correct
     *
     * @param string $key
     * @throws Zend_Pdf_Exception
     */
    private function _checkDictKey($key)
    {
        if ( !in_array($key, self::$_allowedKeys) ) {
            /** @todo Make warning (log entry) instead of an exception */
            throw new Zend_Pdf_Exception("Unknown trailer dictionary key: '$key'.");
        }
    }


    /**
     * Object constructor
     *
     * @param Zend_Pdf_Element_Dictionary $dict
     */
    public function __construct(Zend_Pdf_Element_Dictionary $dict)
    {
        $this->_dict   = $dict;

        foreach ($this->_dict->getKeys() as $dictKey) {
            $this->_checkDictKey($dictKey);
        }
    }

    /**
     * Get handler
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property)
    {
        return $this->_dict->$property;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($property, $value)
    {
        $this->_checkDictKey($property);
        $this->_dict->$property = $value;
    }

    /**
     * Return string trailer representation
     *
     * @return string
     */
    public function toString()
    {
        return "trailer\n" . $this->_dict->toString() . "\n";
    }


    /**
     * Get length of source PDF
     *
     * @return string
     */
    abstract public function getPDFLength();

    /**
     * Get PDF String
     *
     * @return string
     */
    abstract public function getPDFString();

    /**
     * Get header of free objects list
     * Returns object number of last free object
     *
     * @return integer
     */
    abstract public function getLastFreeObject();
}
PKpG[;|™##Pdf/FileParser/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParser */
require_once 'Zend/Pdf/FileParser.php';

/** Zend_Log */
require_once 'Zend/Log.php';


/**
 * FileParser for Zend_Pdf_Image subclasses.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_FileParser_Image extends Zend_Pdf_FileParser
{
    protected $imageType;

    /**
     * Object constructor.
     *
     * Validates the data source and enables debug logging if so configured.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParserDataSource $dataSource)
    {
        parent::__construct($dataSource);
       $this->imageType = Zend_Pdf_Image::TYPE_UNKNOWN;
    }

}


PKpG[���a	a	)Pdf/FileParser/Font/OpenType/TrueType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParser_Font_OpenType */
require_once 'Zend/Pdf/FileParser/Font/OpenType.php';


/**
 * Parses an OpenType font file containing TrueType outlines.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_FileParser_Font_OpenType_TrueType extends Zend_Pdf_FileParser_Font_OpenType
{
  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Verifies that the font file actually contains TrueType outlines.
     *
     * @throws Zend_Pdf_Exception
     */
    public function screen()
    {
        if ($this->_isScreened) {
            return;
        }

        parent::screen();

        switch ($this->_readScalerType()) {
            case 0x00010000:    // version 1.0 - Windows TrueType signature
                break;

            case 0x74727565:    // 'true' - Macintosh TrueType signature
                break;

            default:
                throw new Zend_Pdf_Exception('Not a TrueType font file',
                                             Zend_Pdf_Exception::WRONG_FONT_TYPE);
        }

        $this->fontType = Zend_Pdf_Font::TYPE_TRUETYPE;
        $this->_isScreened = true;
    }

    /**
     * Reads and parses the TrueType font data from the file on disk.
     *
     * @throws Zend_Pdf_Exception
     */
    public function parse()
    {
        if ($this->_isParsed) {
            return;
        }

        parent::parse();

        /* There is nothing additional to parse for TrueType fonts at this time.
         */

        $this->_isParsed = true;
    }
}
PKpG[o�*�*� Pdf/FileParser/Font/OpenType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParser_Font */
require_once 'Zend/Pdf/FileParser/Font.php';

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';


/**
 * Abstract base class for OpenType font file parsers.
 *
 * TrueType was originally developed by Apple and was adopted as the default
 * font format for the Microsoft Windows platform. OpenType is an extension of
 * TrueType, developed jointly by Microsoft and Adobe, which adds support for
 * PostScript font data.
 *
 * This abstract parser class forms the foundation for concrete subclasses which
 * extract either TrueType or PostScript font data from the file.
 *
 * All OpenType files use big-endian byte ordering.
 *
 * The full TrueType and OpenType specifications can be found at:
 * <ul>
 *  <li>{@link http://developer.apple.com/textfonts/TTRefMan/}
 *  <li>{@link http://www.microsoft.com/typography/OTSPEC/}
 *  <li>{@link http://partners.adobe.com/public/developer/opentype/index_spec.html}
 * </ul>
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_FileParser_Font_OpenType extends Zend_Pdf_FileParser_Font
{
  /**** Instance Variables ****/


    /**
     * Stores the scaler type (font type) for the font file. See
     * {@link _readScalerType()}.
     * @var integer
     */
    protected $_scalerType = 0;

    /**
     * Stores the byte offsets to the various information tables.
     * @var array
     */
    protected $_tableDirectory = array();



  /**** Public Interface ****/


  /* Semi-Concrete Class Implementation */

    /**
     * Verifies that the font file is in the expected format.
     *
     * NOTE: This method should be overridden in subclasses to check the
     * specific format and set $this->_isScreened!
     *
     * @throws Zend_Pdf_Exception
     */
    public function screen()
    {
        if ($this->_isScreened) {
            return;
        }
        $this->_readScalerType();
    }

    /**
     * Reads and parses the font data from the file on disk.
     *
     * NOTE: This method should be overridden in subclasses to add type-
     * specific parsing and set $this->isParsed.
     *
     * @throws Zend_Pdf_Exception
     */
    public function parse()
    {
        if ($this->_isParsed) {
            return;
        }

        /* Screen the font file first, if it hasn't been done yet.
        */
        $this->screen();

        /* Start by reading the table directory.
         */
        $this->_parseTableDirectory();

        /* Then parse all of the required tables.
         */
        $this->_parseHeadTable();
        $this->_parseNameTable();
        $this->_parsePostTable();
        $this->_parseHheaTable();
        $this->_parseMaxpTable();
        $this->_parseOs2Table();
        $this->_parseHmtxTable();
        $this->_parseCmapTable();

        /* If present, parse the optional tables.
         */
        /**
         * @todo Add parser for kerning pairs.
         * @todo Add parser for ligatures.
         * @todo Add parser for other useful hinting tables.
         */
    }



  /**** Internal Methods ****/


  /* Parser Methods */

    /**
     * Parses the OpenType table directory.
     *
     * The table directory contains the identifier, checksum, byte offset, and
     * length of each of the information tables housed in the font file.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseTableDirectory()
    {
        $this->moveToOffset(4);

        $tableCount = $this->readUInt(2);
        $this->_debugLog('%d tables', $tableCount);

        /* Sanity check, in case we're not actually reading a OpenType file and
         * the first four bytes coincidentally matched an OpenType signature in
         * screen() above.
         *
         * There are at minimum 7 required tables: cmap, head, hhea, hmtx, maxp,
         * name, and post. In the current OpenType standard, only 32 table types
         * are defined, so use 50 as a practical limit.
         */
        if (($tableCount < 7) || ($tableCount > 50)) {
            throw new Zend_Pdf_Exception('Table count not within expected range',
                                         Zend_Pdf_Exception::BAD_TABLE_COUNT);
        }

        /* Skip the next 6 bytes, which contain values to aid a binary search.
         */
        $this->skipBytes(6);

        /* The directory contains four values: the name of the table, checksum,
         * offset to the table from the beginning of the font, and actual data
         * length of the table.
         */
        for ($tableIndex = 0; $tableIndex < $tableCount; $tableIndex++) {
            $tableName = $this->readBytes(4);

            /* We ignore the checksum here for two reasons: First, the PDF viewer
             * will do this later anyway; Second, calculating the checksum would
             * require unsigned integers, which PHP does not currently provide.
             * We may revisit this in the future.
             */
            $this->skipBytes(4);

            $tableOffset = $this->readUInt(4);
            $tableLength = $this->readUInt(4);
            $this->_debugLog('%s offset: 0x%x; length: %d', $tableName, $tableOffset, $tableLength);

            /* Sanity checks for offset and length values.
             */
            $fileSize = $this->_dataSource->getSize();
            if (($tableOffset < 0) || ($tableOffset > $fileSize)) {
                throw new Zend_Pdf_Exception("Table offset ($tableOffset) not within expected range",
                                             Zend_Pdf_Exception::INDEX_OUT_OF_RANGE);
            }
            if (($tableLength < 0) || (($tableOffset + $tableLength) > $fileSize)) {
                throw new Zend_Pdf_Exception("Table length ($tableLength) not within expected range",
                                             Zend_Pdf_Exception::INDEX_OUT_OF_RANGE);
            }

            $this->_tableDirectory[$tableName]['offset'] = $tableOffset;
            $this->_tableDirectory[$tableName]['length'] = $tableLength;
        }
    }


    /**
     * Parses the OpenType head (Font Header) table.
     *
     * The head table contains global information about the font such as the
     * revision number and global metrics.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseHeadTable()
    {
        $this->_jumpToTable('head');

        /* We can read any version 1 table.
         */
        $tableVersion = $this->_readTableVersion(1, 1);

        /* Skip the font revision number and checksum adjustment.
         */
        $this->skipBytes(8);

        $magicNumber = $this->readUInt(4);
        if ($magicNumber != 0x5f0f3cf5) {
            throw new Zend_Pdf_Exception('Wrong magic number. Expected: 0x5f0f3cf5; actual: '
                                       . sprintf('%x', $magicNumber),
                                         Zend_Pdf_Exception::BAD_MAGIC_NUMBER);
        }

        /* Most of the flags we ignore, but there are a few values that are
         * useful for our layout routines.
         */
        $flags = $this->readUInt(2);
        $this->baselineAtZero    = $this->isBitSet(0, $flags);
        $this->useIntegerScaling = $this->isBitSet(3, $flags);

        $this->unitsPerEm = $this->readUInt(2);
        $this->_debugLog('Units per em: %d', $this->unitsPerEm);

        /* Skip creation and modification date/time.
         */
        $this->skipBytes(16);

        $this->xMin = $this->readInt(2);
        $this->yMin = $this->readInt(2);
        $this->xMax = $this->readInt(2);
        $this->yMax = $this->readInt(2);
        $this->_debugLog('Font bounding box: %d %d %d %d',
                         $this->xMin, $this->yMin, $this->xMax, $this->yMax);

        /* The style bits here must match the fsSelection bits in the OS/2
         * table, if present.
         */
        $macStyleBits = $this->readUInt(2);
        $this->isBold   = $this->isBitSet(0, $macStyleBits);
        $this->isItalic = $this->isBitSet(1, $macStyleBits);

        /* We don't need the remainder of data in this table: smallest readable
         * size, font direction hint, indexToLocFormat, and glyphDataFormat.
         */
    }


    /**
     * Parses the OpenType name (Naming) table.
     *
     * The name table contains all of the identifying strings associated with
     * the font such as its name, copyright, trademark, license, etc.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseNameTable()
    {
        $this->_jumpToTable('name');
        $baseOffset = $this->_tableDirectory['name']['offset'];

        /* The name table begins with a short header, followed by each of the
         * fixed-length name records, followed by the variable-length strings.
         */

        /* We only understand version 0 tables.
         */
        $tableFormat = $this->readUInt(2);
        if ($tableFormat != 0) {
            throw new Zend_Pdf_Exception("Unable to read format $tableFormat table",
                                         Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION);
        }
        $this->_debugLog('Format %d table', $tableFormat);

        $nameCount = $this->readUInt(2);
        $this->_debugLog('%d name strings', $nameCount);

        $storageOffset = $this->readUInt(2) + $baseOffset;
        $this->_debugLog('Storage offset: 0x%x', $storageOffset);

        /* Scan the name records for those we're interested in. We'll skip over
         * encodings and languages we don't understand or support. Prefer the
         * Microsoft Unicode encoding for a given name/language combination, but
         * use Mac Roman if nothing else is available. We will extract the
         * actual strings later.
         */
        $nameRecords = array();
        for ($nameIndex = 0; $nameIndex < $nameCount; $nameIndex++) {

            $platformID = $this->readUInt(2);
            $encodingID = $this->readUInt(2);

            if (! ( (($platformID == 3) && ($encodingID == 1)) ||    // Microsoft Unicode
                    (($platformID == 1) && ($encodingID == 0))       // Mac Roman
                   ) ) {
                $this->skipBytes(8);    // Not a supported encoding. Move on.
                continue;
            }

            $languageID = $this->readUInt(2);
            $nameID     = $this->readUInt(2);
            $nameLength = $this->readUInt(2);
            $nameOffset = $this->readUInt(2);

            $languageCode = $this->_languageCodeForPlatform($platformID, $languageID);
            if (is_null($languageCode)) {
                $this->_debugLog('Skipping languageID: 0x%x; platformID %d', $languageID, $platformID);
                continue;    // Not a supported language. Move on.
            }

            $this->_debugLog('Adding nameID: %d; languageID: 0x%x; platformID: %d; offset: 0x%x (0x%x); length: %d',
                             $nameID, $languageID, $platformID, $baseOffset + $nameOffset, $nameOffset, $nameLength);

            /* Entries in the name table are sorted by platform ID. If an entry
             * exists for both Mac Roman and Microsoft Unicode, the Unicode entry
             * will prevail since it is processed last.
             */
            $nameRecords[$nameID][$languageCode] = array('platform' => $platformID,
                                                         'offset'   => $nameOffset,
                                                         'length'   => $nameLength );
        }

        /* Now go back and extract the interesting strings.
         */
        $fontNames = array();
        foreach ($nameRecords as $name => $languages) {
            foreach ($languages as $language => $attributes) {
                $stringOffset = $storageOffset + $attributes['offset'];
                $this->moveToOffset($stringOffset);
                if ($attributes['platform'] == 3) {
                    $string = $this->readStringUTF16($attributes['length']);
                } else {
                    $string = $this->readStringMacRoman($attributes['length']);
                }
                $fontNames[$name][$language] = $string;
            }
        }

        $this->names = $fontNames;
    }


    /**
     * Parses the OpenType post (PostScript Information) table.
     *
     * The post table contains additional information required for using the font
     * on PostScript printers. It also contains the preferred location and
     * thickness for an underline, which is used by our layout code.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parsePostTable()
    {
        $this->_jumpToTable('post');

        /* We can read versions 1-4 tables.
         */
        $tableVersion = $this->_readTableVersion(1, 4);

        $this->italicAngle = $this->readFixed(16, 16);

        $this->underlinePosition = $this->readInt(2);
        $this->underlineThickness = $this->readInt(2);

        $fixedPitch = $this->readUInt(4);
        $this->isMonospaced = ($fixedPitch !== 0);

        /* Skip over PostScript virtual memory usage.
         */
        $this->skipBytes(16);

        /* The format of the remainder of this table is dependent on the table
         * version. However, since it contains glyph ordering information and
         * PostScript names which we don't use, move on. (This may change at
         * some point in the future though...)
         */
    }


    /**
     * Parses the OpenType hhea (Horizontal Header) table.
     *
     * The hhea table contains information used for horizontal layout. It also
     * contains some vertical layout information for Apple systems. The vertical
     * layout information for the PDF file is usually taken from the OS/2 table.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseHheaTable()
    {
        $this->_jumpToTable('hhea');

        /* We can read any version 1 table.
         */
        $tableVersion = $this->_readTableVersion(1, 1);

        /* The typographic ascent, descent, and line gap values are Apple-
         * specific. Similar values exist in the OS/2 table. We'll use these
         * values unless better values are found in OS/2.
         */
        $this->ascent = $this->readInt(2);
        $this->descent = $this->readInt(2);
        $this->lineGap = $this->readInt(2);

        /* The descent value is supposed to be negative--it's the distance
         * relative to the baseline. However, some fonts improperly store a
         * positive value in this field. If a positive value is found, flip the
         * sign and record a warning in the debug log that we did this.
         */
        if ($this->descent > 0) {
            $this->_debugLog('Warning: Font should specify negative descent. Actual: %d; Using %d',
                             $this->descent, -$this->descent);
            $this->descent = -$this->descent;
        }

        /* Skip over advance width, left and right sidebearing, max x extent,
         * caret slope rise, run, and offset, and the four reserved fields.
         */
        $this->skipBytes(22);

        /* These values are needed to read the hmtx table.
         */
        $this->metricDataFormat = $this->readInt(2);
        $this->numberHMetrics = $this->readUInt(2);
        $this->_debugLog('hmtx data format: %d; number of metrics: %d',
                         $this->metricDataFormat, $this->numberHMetrics);
    }


    /**
     * Parses the OpenType hhea (Horizontal Header) table.
     *
     * The hhea table contains information used for horizontal layout. It also
     * contains some vertical layout information for Apple systems. The vertical
     * layout information for the PDF file is usually taken from the OS/2 table.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseMaxpTable()
    {
        $this->_jumpToTable('maxp');

        /* We don't care about table version.
         */
        $this->_readTableVersion(0, 1);

        /* The number of glyphs in the font.
         */
        $this->numGlyphs = $this->readUInt(2);
        $this->_debugLog('number of glyphs: %d', $this->numGlyphs);
        
        // Skip other maxp table entries (if presented with table version 1.0)...
    }


    /**
     * Parses the OpenType OS/2 (OS/2 and Windows Metrics) table.
     *
     * The OS/2 table contains additional metrics data that is required to use
     * the font on the OS/2 or Microsoft Windows platforms. It is not required
     * for Macintosh fonts, so may not always be present. When available, we use
     * this table to determine most of the vertical layout and stylistic
     * information and for the font.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseOs2Table()
    {
        if (! $this->numberHMetrics) {
            throw new Zend_Pdf_Exception("hhea table must be parsed prior to calling this method",
                                         Zend_Pdf_Exception::PARSED_OUT_OF_ORDER);
        }

        try {
            $this->_jumpToTable('OS/2');
        } catch (Zend_Pdf_Exception $exception) {
            /* This table is not always present. If missing, use default values.
             */
            if ($exception->getCode() == Zend_Pdf_Exception::REQUIRED_TABLE_NOT_FOUND) {
                $this->_debugLog('No OS/2 table found. Using default values');
                $this->fontWeight = Zend_Pdf_Font::WEIGHT_NORMAL;
                $this->fontWidth = Zend_Pdf_Font::WIDTH_NORMAL;
                $this->isEmbeddable = true;
                $this->isSubsettable = true;
                $this->strikeThickness = $this->unitsPerEm * 0.05;
                $this->strikePosition  = $this->unitsPerEm * 0.225;
                $this->isSerifFont      = false;    // the style of the font is unknown
                $this->isSansSerifFont  = false;
                $this->isOrnamentalFont = false;
                $this->isScriptFont     = false;
                $this->isSymbolicFont   = false;
                $this->isAdobeLatinSubset = false;
                $this->vendorID = '';
                $this->xHeight = 0;
                $this->capitalHeight = 0;
                return;
            } else {
                /* Something else went wrong. Throw this exception higher up the chain.
                 */
                throw $exception;
            }
        }

        /* Version 0 tables are becoming rarer these days. They are only found
         * in older fonts.
         *
         * Version 1 formally defines the Unicode character range bits and adds
         * two new fields to the end of the table.
         *
         * Version 2 defines several additional flags to the embedding bits
         * (fsType field) and five new fields to the end of the table.
         *
         * Versions 2 and 3 are structurally identical. There are only two
         * significant differences between the two: First, in version 3, the
         * average character width (xAvgCharWidth field) is calculated using all
         * non-zero width glyphs in the font instead of just the Latin lower-
         * case alphabetic characters; this doesn't affect us. Second, in
         * version 3, the embedding bits (fsType field) have been made mutually
         * exclusive; see additional discusson on this below.
         *
         * We can understand all four of these table versions.
         */
        $tableVersion = $this->readUInt(2);
        if (($tableVersion < 0) || ($tableVersion > 3)) {
            throw new Zend_Pdf_Exception("Unable to read version $tableVersion table",
                                         Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION);
        }
        $this->_debugLog('Version %d table', $tableVersion);

        $this->averageCharWidth = $this->readInt(2);

        /* Indicates the visual weight and aspect ratio of the characters. Used
         * primarily to logically sort fonts in lists. Also used to help choose
         * a more appropriate substitute font when necessary. See the WEIGHT_
         * and WIDTH_ constants defined in Zend_Pdf_Font.
         */
        $this->fontWeight = $this->readUInt(2);
        $this->fontWidth  = $this->readUInt(2);

        /* Describes the font embedding licensing rights. We can only embed and
         * subset a font when given explicit permission.
         *
         * NOTE: We always interpret these bits according to the rules defined
         * in version 3 of this table, regardless of the actual version. This
         * means we will perform our checks in order from the most-restrictive
         * to the least.
         */
        $embeddingFlags = $this->readUInt(2);
        $this->_debugLog('Embedding flags: %d', $embeddingFlags);
        if ($this->isBitSet(9, $embeddingFlags)) {
            /* Only bitmaps may be embedded. We don't have the ability to strip
             * outlines from fonts yet, so this means no embed.
             */
            $this->isEmbeddable = false;
        } else if ($this->isBitSet(1, $embeddingFlags)) {
            /* Restricted license embedding. We currently don't have any way to
             * enforce this, so interpret this as no embed. This may be revised
             * in the future...
             */
            $this->isEmbeddable = false;
        } else {
            /* The remainder of the bit settings grant us permission to embed
             * the font. There may be additional usage rights granted or denied
             * but those only affect the PDF viewer application, not our code.
             */
            $this->isEmbeddable = true;
        }
        $this->_debugLog('Font ' . ($this->isEmbeddable ? 'may' : 'may not') . ' be embedded');
        $isSubsettable = $this->isBitSet($embeddingFlags, 8);

        /* Recommended size and offset for synthesized subscript characters.
         */
        $this->subscriptXSize = $this->readInt(2);
        $this->subscriptYSize = $this->readInt(2);
        $this->subscriptXOffset = $this->readInt(2);
        $this->subscriptYOffset = $this->readInt(2);

        /* Recommended size and offset for synthesized superscript characters.
         */
        $this->superscriptXSize = $this->readInt(2);
        $this->superscriptYSize = $this->readInt(2);
        $this->superscriptXOffset = $this->readInt(2);
        $this->superscriptYOffset = $this->readInt(2);

        /* Size and vertical offset for the strikethrough.
         */
        $this->strikeThickness = $this->readInt(2);
        $this->strikePosition  = $this->readInt(2);

        /* Describes the class of font: serif, sans serif, script. etc. These
         * values are defined here:
         *   http://www.microsoft.com/OpenType/OTSpec/ibmfc.htm
         */
        $familyClass = ($this->readUInt(2) >> 8);    // don't care about subclass
        $this->_debugLog('Font family class: %d', $familyClass);
        $this->isSerifFont      = ((($familyClass >= 1) && ($familyClass <= 5)) ||
                                   ($familyClass == 7));
        $this->isSansSerifFont  = ($familyClass == 8);
        $this->isOrnamentalFont = ($familyClass == 9);
        $this->isScriptFont     = ($familyClass == 10);
        $this->isSymbolicFont   = ($familyClass == 12);

        /* Skip over the PANOSE number. The interesting values for us overlap
         * with the font family class defined above.
         */
        $this->skipBytes(10);

        /* The Unicode range is made up of four 4-byte unsigned long integers
         * which are used as bitfields covering a 128-bit range. Each bit
         * represents a Unicode code block. If the bit is set, this font at
         * least partially covers the characters in that block.
         */
        $unicodeRange1 = $this->readUInt(4);
        $unicodeRange2 = $this->readUInt(4);
        $unicodeRange3 = $this->readUInt(4);
        $unicodeRange4 = $this->readUInt(4);
        $this->_debugLog('Unicode ranges: 0x%x 0x%x 0x%x 0x%x',
                        $unicodeRange1, $unicodeRange2, $unicodeRange3, $unicodeRange4);

        /* The Unicode range is currently only used to decide if the character
         * set covered by the font is a subset of the Adobe Latin set, meaning
         * it only has the basic latin set. If it covers any other characters,
         * even any of the extended latin characters, it is considered symbolic
         * to PDF and must be described differently in the Font Descriptor.
         */
        /** 
         * @todo Font is recognized as Adobe Latin subset font if it only contains
         * Basic Latin characters (only bit 0 of Unicode range bits is set).
         * Actually, other Unicode subranges like General Punctuation (bit 31) also 
         * fall into Adobe Latin characters. So this code has to be modified.
         */
        $this->isAdobeLatinSubset = (($unicodeRange1 == 1) && ($unicodeRange2 == 0) &&
                                      ($unicodeRange3 == 0) && ($unicodeRange4 == 0));
        $this->_debugLog(($this->isAdobeLatinSubset ? 'Is' : 'Is not') . ' a subset of Adobe Latin');

        $this->vendorID = $this->readBytes(4);

        /* Skip the font style bits. We use the values found in the 'head' table.
         * Also skip the first Unicode and last Unicode character indicies. Our
         * cmap implementation does not need these values.
         */
        $this->skipBytes(6);

        /* Typographic ascender, descender, and line gap. These values are
         * preferred to those in the 'hhea' table.
         */
        $this->ascent = $this->readInt(2);
        $this->descent = $this->readInt(2);
        $this->lineGap = $this->readInt(2);

        /* The descent value is supposed to be negative--it's the distance
         * relative to the baseline. However, some fonts improperly store a
         * positive value in this field. If a positive value is found, flip the
         * sign and record a warning in the debug log that we did this.
         */
        if ($this->descent > 0) {
            $this->_debugLog('Warning: Font should specify negative descent. Actual: %d; Using %d',
                             $this->descent, -$this->descent);
            $this->descent = -$this->descent;
        }

        /* Skip over Windows-specific ascent and descent.
         */
        $this->skipBytes(4);

        /* Versions 0 and 1 tables do not contain the x or capital height
         * fields. Record zero for unknown.
         */
        if ($tableVersion < 2) {
            $this->xHeight = 0;
            $this->capitalHeight = 0;
        } else {

            /* Skip over the Windows code page coverages. We are only concerned
             * with Unicode coverage.
             */
            $this->skipBytes(8);

            $this->xHeight = $this->readInt(2);
            $this->capitalHeight = $this->readInt(2);

            /* Ignore the remaining fields in this table. They are Windows-specific.
             */
        }
        /**
         * @todo Obtain the x and capital heights from the 'glyf' table if they
         *   haven't been supplied here instead of storing zero.
         */
    }


    /**
     * Parses the OpenType hmtx (Horizontal Metrics) table.
     *
     * The hmtx table contains the horizontal metrics for every glyph contained
     * within the font. These are the critical values for horizontal layout of
     * text.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseHmtxTable()
    {
        $this->_jumpToTable('hmtx');

        if (! $this->numberHMetrics) {
            throw new Zend_Pdf_Exception("hhea table must be parsed prior to calling this method",
                                         Zend_Pdf_Exception::PARSED_OUT_OF_ORDER);
        }

        /* We only understand version 0 tables.
         */
        if ($this->metricDataFormat != 0) {
            throw new Zend_Pdf_Exception("Unable to read format $this->metricDataFormat table.",
                                         Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION);
        }

        /* The hmtx table has no header. For each glpyh in the font, it contains
         * the glyph's advance width and its left side bearing. We don't use the
         * left side bearing.
         */
        $glyphWidths = array();
        for ($i = 0; $i < $this->numberHMetrics; $i++) {
            $glyphWidths[$i] = $this->readUInt(2);
            $this->skipBytes(2);
        }
        /* Populate last value for the rest of array
         */
        while (count($glyphWidths) < $this->numGlyphs) {
            $glyphWidths[] = end($glyphWidths);
        }
        $this->glyphWidths = $glyphWidths;

        /* There is an optional table of left side bearings which is sometimes
         * used for monospaced fonts. We don't use the left side bearing, so
         * we can safely ignore it.
         */
    }


    /**
     * Parses the OpenType cmap (Character to Glyph Mapping) table.
     *
     * The cmap table provides the maps from character codes to font glyphs.
     * There are usually at least two character maps in a font: Microsoft Unicode
     * and Macintosh Roman. For very complex fonts, there may also be mappings
     * for the characters in the Unicode Surrogates Area, which are UCS-4
     * characters.
     *
     * @todo Need to rework the selection logic for picking a subtable. We should
     *   have an explicit list of preferences, followed by a list of those that
     *   are tolerable. Most specifically, since everything above this layer deals
     *   in Unicode, we need to be sure to only accept format 0 MacRoman tables.
     *
     * @throws Zend_Pdf_Exception
     */
    protected function _parseCmapTable()
    {
        $this->_jumpToTable('cmap');
        $baseOffset = $this->_tableDirectory['cmap']['offset'];

        /* We only understand version 0 tables.
         */
        $tableVersion = $this->readUInt(2);
        if ($tableVersion != 0) {
            throw new Zend_Pdf_Exception("Unable to read version $tableVersion table",
                                         Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION);
        }
        $this->_debugLog('Version %d table', $tableVersion);

        $subtableCount = $this->readUInt(2);
        $this->_debugLog('%d subtables', $subtableCount);

        /* Like the name table, there may be many different encoding subtables
         * present. Ideally, we are looking for an acceptable Unicode table.
         */
        $subtables = array();
        for ($subtableIndex = 0; $subtableIndex < $subtableCount; $subtableIndex++) {

            $platformID = $this->readUInt(2);
            $encodingID = $this->readUInt(2);

            if (! ( (($platformID == 0) && ($encodingID == 3)) ||    // Unicode 2.0 or later
                    (($platformID == 0) && ($encodingID == 0)) ||    // Unicode
                    (($platformID == 3) && ($encodingID == 1)) ||    // Microsoft Unicode
                    (($platformID == 1) && ($encodingID == 0))       // Mac Roman
                   ) ) {
                $this->_debugLog('Unsupported encoding: platformID: %d; encodingID: %d; skipping',
                                 $platformID, $encodingID);
                $this->skipBytes(4);
                continue;
            }

            $subtableOffset = $this->readUInt(4);
            if ($subtableOffset < 0) {    // Sanity check for 4-byte unsigned on 32-bit platform
                $this->_debugLog('Offset 0x%x out of range for platformID: %d; skipping',
                                 $subtableOffset, $platformID);
                continue;
            }

            $this->_debugLog('Found subtable; platformID: %d; encodingID: %d; offset: 0x%x (0x%x)',
                             $platformID, $encodingID, $baseOffset + $subtableOffset, $subtableOffset);

            $subtables[$platformID][$encodingID][] = $subtableOffset;
        }

        /* In preferred order, find a subtable to use.
         */
        $offsets = array();

        /* Unicode 2.0 or later semantics
         */
        if (isset($subtables[0][3])) {
            foreach ($subtables[0][3] as $offset) {
                $offsets[] = $offset;
            }
        }

        /* Unicode default semantics
         */
        if (isset($subtables[0][0])) {
            foreach ($subtables[0][0] as $offset) {
                $offsets[] = $offset;
            }
        }

        /* Microsoft Unicode
         */
        if (isset($subtables[3][1])) {
            foreach ($subtables[3][1] as $offset) {
                $offsets[] = $offset;
            }
        }

        /* Mac Roman.
         */
        if (isset($subtables[1][0])) {
            foreach ($subtables[1][0] as $offset) {
                $offsets[] = $offset;
            }
        }

        $cmapType = -1;

        foreach ($offsets as $offset) {
            $cmapOffset = $baseOffset + $offset;
            $this->moveToOffset($cmapOffset);
            $format = $this->readUInt(2);
            $language = -1;
            switch ($format) {
                case 0x0:
                    $cmapLength = $this->readUInt(2);
                    $language = $this->readUInt(2);
                    if ($language != 0) {
                        $this->_debugLog('Type 0 cmap tables must be language-independent;'
                                         . ' language: %d; skipping', $language);
                        continue;
                    }
                    break;

                case 0x4:    // break intentionally omitted
                case 0x6:
                    $cmapLength = $this->readUInt(2);
                    $language = $this->readUInt(2);
                    if ($language != 0) {
                        $this->_debugLog('Warning: cmap tables must be language-independent - this font'
                                         . ' may not work properly; language: %d', $language);
                    }
                    break;

                case 0x2:    // break intentionally omitted
                case 0x8:    // break intentionally omitted
                case 0xa:    // break intentionally omitted
                case 0xc:
                    $this->_debugLog('Format: 0x%x currently unsupported; skipping', $format);
                    continue;
                    //$this->skipBytes(2);
                    //$cmapLength = $this->readUInt(4);
                    //$language = $this->readUInt(4);
                    //if ($language != 0) {
                    //    $this->_debugLog('Warning: cmap tables must be language-independent - this font'
                    //                     . ' may not work properly; language: %d', $language);
                    //}
                    //break;

                default:
                    $this->_debugLog('Unknown subtable format: 0x%x; skipping', $format);
                    continue;
            }
            $cmapType = $format;
            break;
        }
        if ($cmapType == -1) {
            throw new Zend_Pdf_Exception('Unable to find usable cmap table',
                                         Zend_Pdf_Exception::CANT_FIND_GOOD_CMAP);
        }

        /* Now extract the subtable data and create a Zend_Pdf_FontCmap object.
         */
        $this->_debugLog('Using cmap type %d; offset: 0x%x; length: %d',
                         $cmapType, $cmapOffset, $cmapLength);
        $this->moveToOffset($cmapOffset);
        $cmapData = $this->readBytes($cmapLength);
        $this->cmap = Zend_Pdf_Cmap::cmapWithTypeData($cmapType, $cmapData);
    }


    /**
     * Reads the scaler type from the header of the OpenType font file and
     * returns it as an unsigned long integer.
     *
     * The scaler type defines the type of font: OpenType font files may contain
     * TrueType or PostScript outlines. Throws an exception if the scaler type
     * is not recognized.
     *
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    protected function _readScalerType()
    {
        if ($this->_scalerType != 0) {
            return $this->_scalerType;
        }

        $this->moveToOffset(0);

        $this->_scalerType = $this->readUInt(4);

        switch ($this->_scalerType) {
            case 0x00010000:    // version 1.0 - Windows TrueType signature
                $this->_debugLog('Windows TrueType signature');
                break;

            case 0x74727565:    // 'true' - Macintosh TrueType signature
                $this->_debugLog('Macintosh TrueType signature');
                break;

            case 0x4f54544f:    // 'OTTO' - the CFF signature
                $this->_debugLog('PostScript CFF signature');
                break;

            case 0x74797031:    // 'typ1'
                throw new Zend_Pdf_Exception('Unsupported font type: PostScript in sfnt wrapper',
                                             Zend_Pdf_Exception::WRONG_FONT_TYPE);

            default:
                throw new Zend_Pdf_Exception('Not an OpenType font file',
                                             Zend_Pdf_Exception::WRONG_FONT_TYPE);
        }
        return $this->_scalerType;
    }

    /**
     * Validates a given table's existence, then sets the file pointer to the
     * start of that table.
     *
     * @param string $tableName
     * @throws Zend_Pdf_Exception
     */
    protected function _jumpToTable($tableName)
    {
        if (empty($this->_tableDirectory[$tableName])) {    // do not allow NULL or zero
            throw new Zend_Pdf_Exception("Required table '$tableName' not found!",
                                         Zend_Pdf_Exception::REQUIRED_TABLE_NOT_FOUND);
        }
        $this->_debugLog("Parsing $tableName table...");
        $this->moveToOffset($this->_tableDirectory[$tableName]['offset']);
    }

    /**
     * Reads the fixed 16.16 table version number and checks for compatibility.
     * If the version is incompatible, throws an exception. If it is compatible,
     * returns the version number.
     *
     * @param float $minVersion Minimum compatible version number.
     * @param float $maxVertion Maximum compatible version number.
     * @return float Table version number.
     * @throws Zend_Pdf_Exception
     */
    protected function _readTableVersion($minVersion, $maxVersion)
    {
        $tableVersion = $this->readFixed(16, 16);
        if (($tableVersion < $minVersion) || ($tableVersion > $maxVersion)) {
            throw new Zend_Pdf_Exception("Unable to read version $tableVersion table",
                                         Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION);
        }
        $this->_debugLog('Version %.2f table', $tableVersion);
        return $tableVersion;
    }

    /**
     * Utility method that returns ISO 639 two-letter language codes from the
     * TrueType platform and language ID. Returns NULL for languages that are
     * not supported.
     *
     * @param integer $platformID
     * @param integer $encodingID
     * @return string | null
     */
    protected function _languageCodeForPlatform($platformID, $languageID)
    {
        if ($platformID == 3) {    // Microsoft encoding.
            /* The low-order bytes specify the language, the high-order bytes
             * specify the dialect. We just care about the language. For the
             * complete list, see:
             *   http://www.microsoft.com/globaldev/reference/lcid-all.mspx
             */
            $languageID &= 0xff;
            switch ($languageID) {
                case 0x09:
                    return 'en';
                case 0x0c:
                    return 'fr';
                case 0x07:
                    return 'de';
                case 0x10:
                    return 'it';
                case 0x13:
                    return 'nl';
                case 0x1d:
                    return 'sv';
                case 0x0a:
                    return 'es';
                case 0x06:
                    return 'da';
                case 0x16:
                    return 'pt';
                case 0x14:
                    return 'no';
                case 0x0d:
                    return 'he';
                case 0x11:
                    return 'ja';
                case 0x01:
                    return 'ar';
                case 0x0b:
                    return 'fi';
                case 0x08:
                    return 'el';

                default:
                    return null;
            }

        } else if ($platformID == 1) {    // Macintosh encoding.
            switch ($languageID) {
                case 0:
                    return 'en';
                case 1:
                    return 'fr';
                case 2:
                    return 'de';
                case 3:
                    return 'it';
                case 4:
                    return 'nl';
                case 5:
                    return 'sv';
                case 6:
                    return 'es';
                case 7:
                    return 'da';
                case 8:
                    return 'pt';
                case 9:
                    return 'no';
                case 10:
                    return 'he';
                case 11:
                    return 'ja';
                case 12:
                    return 'ar';
                case 13:
                    return 'fi';
                case 14:
                    return 'el';

                default:
                    return null;
            }

        } else {    // Unknown encoding.
            return null;
        }
    }

}
PKpG[dq�`m+m+Pdf/FileParser/Image/Png.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParser_Image */
require_once 'Zend/Pdf/FileParser/Image.php';


/**
 * Abstract base class for Image file parsers.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_FileParser_Image_Png extends Zend_Pdf_FileParser_Image
{
     protected $_isPNG;
     protected $_width;
     protected $_height;
     protected $_bits;
     protected $_color;
     protected $_compression;
     protected $_preFilter;
     protected $_interlacing;

     protected $_imageData;
     protected $_paletteData;
     protected $_transparencyData;

  /**** Public Interface ****/

     public function getWidth() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_width;
     }

     public function getHeight() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_width;
     }

     public function getBitDepth() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_bits;
     }

     public function getColorSpace() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_color;
     }

     public function getCompressionStrategy() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_compression;
     }

     public function getPaethFilter() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_preFilter;
     }

     public function getInterlacingMode() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_interlacing;
     }

     public function getRawImageData() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_imageData;
     }

     public function getRawPaletteData() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_paletteData;
     }

     public function getRawTransparencyData() {
          if(!$this->_isParsed) {
               $this->parse();
          }
          return $this->_transparencyData;
     }

  /* Semi-Concrete Class Implementation */

    /**
     * Verifies that the image file is in the expected format.
     *
     * @throws Zend_Pdf_Exception
     */
    public function screen()
    {
         if ($this->_isScreened) {
             return;
         }
         return $this->_checkSignature();
    }

    /**
     * Reads and parses the image data from the file on disk.
     *
     * @throws Zend_Pdf_Exception
     */
    public function parse()
    {
        if ($this->_isParsed) {
            return;
        }

        /* Screen the font file first, if it hasn't been done yet.
        */
        $this->screen();

        $this->_parseIHDRChunk();
        $this->_parseChunks();
    }


    protected function _parseSignature() {
         $this->moveToOffset(1); //Skip the first byte (%)
         if('PNG' != $this->readBytes(3)) {
               $this->_isPNG = false;
         } else {
               $this->_isPNG = true;
         }
    }

    protected function _checkSignature() {
         if(!isset($this->_isPNG)) {
              $this->_parseSignature();
         }
         return $this->_isPNG;
    }

    protected function _parseChunks() {
         $this->moveToOffset(33); //Variable chunks start at the end of IHDR

         //Start processing chunks. If there are no more bytes to read parsing is complete.
         $size = $this->getSize();
         while($size - $this->getOffset() >= 8) {
              $chunkLength = $this->readUInt(4);
              if($chunkLength < 0 || ($chunkLength + $this->getOffset() + 4) > $size) {
                   throw new Zend_Pdf_Exception("PNG Corrupt: Invalid Chunk Size In File.");
              }

              $chunkType = $this->readBytes(4);
              $offset = $this->getOffset();

              //If we know how to process the chunk, do it here, else ignore the chunk and move on to the next
              switch($chunkType) {
                   case 'IDAT': // This chunk may appear more than once. It contains the actual image data.
                       $this->_parseIDATChunk($offset, $chunkLength);
                       break;

                   case 'PLTE': // This chunk contains the image palette.
                       $this->_parsePLTEChunk($offset, $chunkLength);
                       break;

                   case 'tRNS': // This chunk contains non-alpha channel transparency data
                       $this->_parseTRNSChunk($offset, $chunkLength);
                       break;

                   case 'IEND':
                       break 2; //End the loop too

                   //@TODO Implement the rest of the PNG chunks. (There are many not implemented here)
              }
              if($offset + $chunkLength + 4 < $size) {
                  $this->moveToOffset($offset + $chunkLength + 4); //Skip past the data finalizer. (Don't rely on the parse to leave the offsets correct)
              }
         }
         if(empty($this->_imageData)) {
              throw new Zend_Pdf_Exception ( "This PNG is corrupt. All png must contain IDAT chunks." );
         }
    }

    protected function _parseIHDRChunk() {
         $this->moveToOffset(12); //IHDR must always start at offset 12 and run for 17 bytes
         if(!$this->readBytes(4) == 'IHDR') {
              throw new Zend_Pdf_Exception( "This PNG is corrupt. The first chunk in a PNG file must be IHDR." );
         }
         $this->_width = $this->readUInt(4);
         $this->_height = $this->readUInt(4);
         $this->_bits = $this->readInt(1);
         $this->_color = $this->readInt(1);
         $this->_compression = $this->readInt(1);
         $this->_preFilter = $this->readInt(1);
         $this->_interlacing = $this->readInt(1);
         if($this->_interlacing != Zend_Pdf_Image::PNG_INTERLACING_DISABLED) {
              throw new Zend_Pdf_Exception( "Only non-interlaced images are currently supported." );
         }
    }

    protected function _parseIDATChunk($chunkOffset, $chunkLength) {
         $this->moveToOffset($chunkOffset);
         if(!isset($this->_imageData)) {
              $this->_imageData = $this->readBytes($chunkLength);
         } else {
              $this->_imageData .= $this->readBytes($chunkLength);
         }
    }

    protected function _parsePLTEChunk($chunkOffset, $chunkLength) {
         $this->moveToOffset($chunkOffset);
         $this->_paletteData = $this->readBytes($chunkLength);
    }

    protected function _parseTRNSChunk($chunkOffset, $chunkLength) {
         $this->moveToOffset($chunkOffset);

         //Processing of tRNS data varies dependending on the color depth

         switch($this->_color) {
             case Zend_Pdf_Image::PNG_CHANNEL_GRAY:
                  $baseColor = $this->readInt(1);
                  $this->_transparencyData = array($baseColor, $baseColor);
                  break;

             case Zend_Pdf_Image::PNG_CHANNEL_RGB:

                  //@TODO Fix this hack.
                  //This parser cheats and only uses the lsb's (and only works with < 16 bit depth images)

                  /*
                       From the standard:

                       For color type 2 (truecolor), the tRNS chunk contains a single RGB color value, stored in the format:

                       Red:   2 bytes, range 0 .. (2^bitdepth)-1
                       Green: 2 bytes, range 0 .. (2^bitdepth)-1
                       Blue:  2 bytes, range 0 .. (2^bitdepth)-1

                       (If the image bit depth is less than 16, the least significant bits are used and the others are 0.)
                       Pixels of the specified color value are to be treated as transparent (equivalent to alpha value 0);
                       all other pixels are to be treated as fully opaque (alpha value 2bitdepth-1).

                  */

                  $red = $this->readInt(1);
                  $this->skipBytes(1);
                  $green = $this->readInt(1);
                  $this->skipBytes(1);
                  $blue = $this->readInt(1);

                  $this->_transparencyData = array($red, $red, $green, $green, $blue, $blue);

                  break;

             case Zend_Pdf_Image::PNG_CHANNEL_INDEXED:

                  //@TODO Fix this hack.
                  //This parser cheats too. It only masks the first color in the palette.

                  /*
                       From the standard:

                       For color type 3 (indexed color), the tRNS chunk contains a series of one-byte alpha values, corresponding to entries in the PLTE chunk:

                          Alpha for palette index 0:  1 byte
                          Alpha for palette index 1:  1 byte
                          ...etc...

                       Each entry indicates that pixels of the corresponding palette index must be treated as having the specified alpha value.
                       Alpha values have the same interpretation as in an 8-bit full alpha channel: 0 is fully transparent, 255 is fully opaque,
                       regardless of image bit depth. The tRNS chunk must not contain more alpha values than there are palette entries,
                       but tRNS can contain fewer values than there are palette entries. In this case, the alpha value for all remaining palette
                       entries is assumed to be 255. In the common case in which only palette index 0 need be made transparent, only a one-byte
                       tRNS chunk is needed.

                  */

                  $tmpData = $this->readBytes($chunkLength);
                  if(($trnsIdx = strpos($tmpData, chr(0))) !== false) {
                       $this->_transparencyData = array($trnsIdx, $trnsIdx);
                  }

                  break;

             case Zend_Pdf_Image::PNG_CHANNEL_GRAY_ALPHA:
                  //Fall through to the next case
             case Zend_Pdf_Image::PING_CHANNEL_RGB_ALPHA:
                  throw new Zend_Pdf_Exception( "tRNS chunk illegal for Alpha Channel Images" );
                  break;
         }
    }
}


PKpG[��,%uuPdf/FileParser/Font.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParser */
require_once 'Zend/Pdf/FileParser.php';

/**
 * Abstract helper class for {@link Zend_Pdf_Font} that parses font files.
 *
 * Defines the public interface for concrete subclasses which are responsible
 * for parsing the raw binary data from the font file on disk. Also provides
 * a debug logging interface and a couple of shared utility methods.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_FileParser_Font extends Zend_Pdf_FileParser
{
  /**** Instance Variables ****/


    /**
     * Array of parsed font properties. Used with {@link __get()} and
     * {@link __set()}.
     * @var array
     */
    private $_fontProperties = array();

    /**
     * Flag indicating whether or not debug logging is active.
     * @var boolean
     */
    private $_debug = false;



  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor.
     *
     * Validates the data source and enables debug logging if so configured.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParserDataSource $dataSource)
    {
        parent::__construct($dataSource);
        $this->fontType = Zend_Pdf_Font::TYPE_UNKNOWN;
    }


  /* Accessors */

    /**
     * Get handler
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property)
    {
        if (isset($this->_fontProperties[$property])) {
            return $this->_fontProperties[$property];
        } else {
            return null;
        }
    }

    /* NOTE: The set handler is defined below in the internal methods group. */


  /* Parser Methods */

    /**
     * Reads the Unicode UTF-16-encoded string from the binary file at the
     * current offset location. Overridden to fix return character set at UTF-16BE.
     *
     * @todo Deal with to-dos in the parent method.
     *
     * @param integer $byteCount Number of bytes (characters * 2) to return.
     * @param integer $byteOrder (optional) Big- or little-endian byte order.
     *   Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. If
     *   omitted, uses big-endian.
     * @param string $characterSet (optional) --Ignored--
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringUTF16($byteCount,
                                    $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN,
                                    $characterSet = '')
    {
        return parent::readStringUTF16($byteCount, $byteOrder, 'UTF-16BE');
    }

    /**
     * Reads the Mac Roman-encoded string from the binary file at the current
     * offset location. Overridden to fix return character set at UTF-16BE.
     *
     * @param integer $byteCount Number of bytes (characters) to return.
     * @param string $characterSet (optional) --Ignored--
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringMacRoman($byteCount, $characterSet = '')
    {
        return parent::readStringMacRoman($byteCount, 'UTF-16BE');
    }

    /**
     * Reads the Pascal string from the binary file at the current offset
     * location. Overridden to fix return character set at UTF-16BE.
     *
     * @param string $characterSet (optional) --Ignored--
     * @param integer $lengthBytes (optional) Number of bytes that make up the
     *   length. Default is 1.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringPascal($characterSet = '', $lengthBytes = 1)
    {
        return parent::readStringPascal('UTF-16BE');
    }


  /* Utility Methods */

    /**
     * Writes the entire font properties array to STDOUT. Used only for debugging.
     */
    public function writeDebug()
    {
        print_r($this->_fontProperties);
    }



  /**** Internal Methods ****/


  /* Internal Accessors */

    /**
     * Set handler
     *
     * NOTE: This method is protected. Other classes may freely interrogate
     * the font properties, but only this and its subclasses may set them.
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($property, $value)
    {
        if (is_null($value)) {
            unset($this->_fontProperties[$property]);
        } else {
            $this->_fontProperties[$property] = $value;
        }
    }


  /* Internal Utility Methods */

    /**
     * If debug logging is enabled, writes the log message.
     *
     * The log message is a sprintf() style string and any number of arguments
     * may accompany it as additional parameters.
     *
     * @param string $message
     * @param mixed (optional, multiple) Additional arguments
     */
    protected function _debugLog($message)
    {
        if (! $this->_debug) {
            return;
        }
        if (func_num_args() > 1) {
            $args = func_get_args();
            $message = array_shift($args);
            $message = vsprintf($message, $args);
        }
        Zend_Log::log($message, Zend_Log::LEVEL_DEBUG, 'ZF');
    }

}
PKpG[��B
Pdf/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Images
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParserDataSource */
require_once 'Zend/Pdf/FileParserDataSource.php';

/** Zend_Pdf_FileParserDataSource_File */
require_once 'Zend/Pdf/FileParserDataSource/File.php';

/** Zend_Pdf_FileParserDataSource_String */
require_once 'Zend/Pdf/FileParserDataSource/String.php';

/**
 * Abstract factory class which vends {@link Zend_Pdf_Resource_Image} objects.
 *
 * This class is also the home for image-related constants because the name of
 * the true base class ({@link Zend_Pdf_Resource_Image}) is not intuitive for the
 * end user.
 *
 * @package    Zend_Pdf
 * @subpackage Images
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Image
{
  /**** Class Constants ****/


  /* Image Types */

    const TYPE_UNKNOWN = 0;
    const TYPE_JPEG = 1;
    const TYPE_PNG = 2;
    const TYPE_TIFF = 3;

  /* TIFF Constants */

    const TIFF_FIELD_TYPE_BYTE=1;
    const TIFF_FIELD_TYPE_ASCII=2;
    const TIFF_FIELD_TYPE_SHORT=3;
    const TIFF_FIELD_TYPE_LONG=4;
    const TIFF_FIELD_TYPE_RATIONAL=5;

    const TIFF_TAG_IMAGE_WIDTH=256;
    const TIFF_TAG_IMAGE_LENGTH=257; //Height
    const TIFF_TAG_BITS_PER_SAMPLE=258;
    const TIFF_TAG_COMPRESSION=259;
    const TIFF_TAG_PHOTOMETRIC_INTERPRETATION=262;
    const TIFF_TAG_STRIP_OFFSETS=273;
    const TIFF_TAG_SAMPLES_PER_PIXEL=277;
    const TIFF_TAG_STRIP_BYTE_COUNTS=279;

    const TIFF_COMPRESSION_UNCOMPRESSED = 1;
    const TIFF_COMPRESSION_CCITT1D = 2;
    const TIFF_COMPRESSION_GROUP_3_FAX = 3;
    const TIFF_COMPRESSION_GROUP_4_FAX  = 4;
    const TIFF_COMPRESSION_LZW = 5;
    const TIFF_COMPRESSION_JPEG = 6;
    const TIFF_COMPRESSION_FLATE = 8;
    const TIFF_COMPRESSION_FLATE_OBSOLETE_CODE = 32946;
    const TIFF_COMPRESSION_PACKBITS = 32773;

    const TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO=0;
    const TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO=1;
    const TIFF_PHOTOMETRIC_INTERPRETATION_RGB=2;
    const TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED=3;
    const TIFF_PHOTOMETRIC_INTERPRETATION_CMYK=5;
    const TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR=6;
    const TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB=8;

  /* PNG Constants */

    const PNG_COMPRESSION_DEFAULT_STRATEGY = 0;
    const PNG_COMPRESSION_FILTERED = 1;
    const PNG_COMPRESSION_HUFFMAN_ONLY = 2;
    const PNG_COMPRESSION_RLE = 3;

    const PNG_FILTER_NONE = 0;
    const PNG_FILTER_SUB = 1;
    const PNG_FILTER_UP = 2;
    const PNG_FILTER_AVERAGE = 3;
    const PNG_FILTER_PAETH = 4;

    const PNG_INTERLACING_DISABLED = 0;
    const PNG_INTERLACING_ENABLED = 1;

    const PNG_CHANNEL_GRAY = 0;
    const PNG_CHANNEL_RGB = 2;
    const PNG_CHANNEL_INDEXED = 3;
    const PNG_CHANNEL_GRAY_ALPHA = 4;
    const PNG_CHANNEL_RGB_ALPHA = 6;

  /**** Public Interface ****/


  /* Factory Methods */

    /**
     * Returns a {@link Zend_Pdf_Resource_Image} object by file path.
     *
     * @param string $filePath Full path to the image file.
     * @return Zend_Pdf_Resource_Image
     * @throws Zend_Pdf_Exception
     */
    public static function imageWithPath($filePath)
    {

        /**
         * use old implementation
         * @todo switch to new implementation
         */
        require_once 'Zend/Pdf/Resource/ImageFactory.php';
        return Zend_Pdf_Resource_ImageFactory::factory($filePath);


        /* Create a file parser data source object for this file. File path and
         * access permission checks are handled here.
         */
        $dataSource = new Zend_Pdf_FileParserDataSource_File($filePath);

        /* Attempt to determine the type of image. We can't always trust file
         * extensions, but try that first since it's fastest.
         */
        $fileExtension = strtolower(pathinfo($filePath, PATHINFO_EXTENSION));

        /* If it turns out that the file is named improperly and we guess the
         * wrong type, we'll get null instead of an image object.
         */
        switch ($fileExtension) {
            case 'tif':
                //Fall through to next case;
            case 'tiff':
                $image = Zend_Pdf_Image::_extractTiffImage($dataSource);
                break;
            case 'png':
                $image = Zend_Pdf_Image::_extractPngImage($dataSource);
                break;
            case 'jpg':
                //Fall through to next case;
            case 'jpe':
                //Fall through to next case;
            case 'jpeg':
                $image = Zend_Pdf_Image::_extractJpegImage($dataSource);
                break;
            default:
                throw new Zend_Pdf_Exception("Cannot create image resource. File extension not known or unsupported type.");
                break;
        }

        /* Done with the data source object.
         */
        $dataSource = null;

        if (! is_null($image)) {
            return $image;

        } else {
            /* The type of image could not be determined. Give up.
             */
            throw new Zend_Pdf_Exception("Cannot determine image type: $filePath",
 Zend_Pdf_Exception::CANT_DETERMINE_IMAGE_TYPE);
         }
    }



  /**** Internal Methods ****/


  /* Image Extraction Methods */

    /**
     * Attempts to extract a JPEG Image from the data source.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @return Zend_Pdf_Resource_Image_Jpeg May also return null if
     *   the data source does not appear to contain valid image data.
     * @throws Zend_Pdf_Exception
     */
    protected static function _extractJpegImage($dataSource)
    {
        $imageParser = new Zend_Pdf_FileParser_Image_Jpeg($dataSource);
        $image = new Zend_Pdf_Resource_Image_Jpeg($imageParser);
        unset($imageParser);

        return $image;
    }

    /**
     * Attempts to extract a PNG Image from the data source.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @return Zend_Pdf_Resource_Image_Png May also return null if
     *   the data source does not appear to contain valid image data.
     * @throws Zend_Pdf_Exception
     */
    protected static function _extractPngImage($dataSource)
    {
        $imageParser = new Zend_Pdf_FileParser_Image_PNG($dataSource);
        $image = new Zend_Pdf_Resource_Image_PNG($imageParser);
        unset($imageParser);

        return $image;
    }

    /**
     * Attempts to extract a TIFF Image from the data source.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @return Zend_Pdf_Resource_Image_Tiff May also return null if
     *   the data source does not appear to contain valid image data.
     * @throws Zend_Pdf_Exception
     */
    protected static function _extractTiffImage($dataSource)
    {
        $imageParser = new Zend_Pdf_FileParser_Image_Tiff($dataSource);
        $image = new Zend_Pdf_Resource_Image_Tiff($imageParser);
        unset($imageParser);

        return $image;
    }

}



PKpG[�x�d== Pdf/Cmap/ByteEncoding/Static.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Cmap_ByteEncoding */
require_once 'Zend/Pdf/Cmap/ByteEncoding.php';


/**
 * Custom cmap type used for the Adobe Standard 14 PDF fonts.
 *
 * Just like {@link Zend_Pdf_Cmap_ByteEncoding} except that the constructor
 * takes a predefined array of glyph numbers and can cover any Unicode character.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Cmap_ByteEncoding_Static extends Zend_Pdf_Cmap_ByteEncoding
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     *
     * @param array $cmapData Array whose keys are Unicode character codes and
     *   values are glyph numbers.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($cmapData)
    {
        if (! is_array($cmapData)) {
            throw new Zend_Pdf_Exception('Constructor parameter must be an array',
                                         Zend_Pdf_Exception::BAD_PARAMETER_TYPE);
        }
        $this->_glyphIndexArray = $cmapData;
    }

}
PKpG[�R1HXHXPdf/Cmap/ByteEncoding.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';


/**
 * Implements the "byte encoding" character map (type 0).
 *
 * This is the (legacy) Apple standard encoding mechanism and provides coverage
 * for characters in the Mac Roman character set only. Consequently, this cmap
 * type should be used only as a last resort.
 *
 * The mapping from Mac Roman to Unicode can be found at
 * {@link http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Cmap_ByteEncoding extends Zend_Pdf_Cmap
{
  /**** Instance Variables ****/


    /**
     * Glyph index array. Stores the actual glyph numbers. The array keys are
     * the translated Unicode code points.
     * @var array
     */
    protected $_glyphIndexArray = array();



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        $glyphNumbers = array();
        foreach ($characterCodes as $key => $characterCode) {

           if (! isset($this->_glyphIndexArray[$characterCode])) {
                $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
                continue;
            }

            $glyphNumbers[$key] = $this->_glyphIndexArray[$characterCode];

        }
        return $glyphNumbers;
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        if (! isset($this->_glyphIndexArray[$characterCode])) {
            return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
        }
        return $this->_glyphIndexArray[$characterCode];
    }

    /**
     * Returns an array containing the Unicode characters that have entries in
     * this character map.
     *
     * @return array Unicode character codes.
     */
    public function getCoveredCharacters()
    {
        return array_keys($this->_glyphIndexArray);
    }

    /**
     * Returns an array containing the glyphs numbers that have entries in this character map.
     * Keys are Unicode character codes (integers)
     * 
     * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
     * call, but this method do it in more effective way (prepare complete list instead of searching 
     * glyph for each character code).
     *
     * @internal
     * @return array Array representing <Unicode character code> => <glyph number> pairs.
     */
    public function getCoveredCharactersGlyphs()
    {
        return $this->_glyphIndexArray;
    }


  /* Object Lifecycle */

    /**
     * Object constructor
     *
     * Parses the raw binary table data. Throws an exception if the table is
     * malformed.
     *
     * @param string $cmapData Raw binary cmap table data.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($cmapData)
    {
        /* Sanity check: This table must be exactly 262 bytes long.
         */
        $actualLength = strlen($cmapData);
        if ($actualLength != 262) {
            throw new Zend_Pdf_Exception('Insufficient table data',
                                         Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL);
        }

        /* Sanity check: Make sure this is right data for this table type.
         */
        $type = $this->_extractUInt2($cmapData, 0);
        if ($type != Zend_Pdf_Cmap::TYPE_BYTE_ENCODING) {
            throw new Zend_Pdf_Exception('Wrong cmap table type',
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE);
        }

        $length = $this->_extractUInt2($cmapData, 2);
        if ($length != $actualLength) {
            throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)",
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH);
        }

        /* Mapping tables should be language-independent. The font may not work
         * as expected if they are not. Unfortunately, many font files in the
         * wild incorrectly record a language ID in this field, so we can't
         * call this a failure.
         */
        $language = $this->_extractUInt2($cmapData, 4);
        if ($language != 0) {
            // Record a warning here somehow?
        }

        /* The mapping between the Mac Roman and Unicode characters is static.
         * For simplicity, just put all 256 glyph indices into one array keyed
         * off the corresponding Unicode character.
         */
        $i = 6;
        $this->_glyphIndexArray[0x00]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x01]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x04]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x05]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x06]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x07]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x08]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x09]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x10]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x11]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x12]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x13]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x14]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x15]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x16]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x17]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x18]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x19]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x20]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x21]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x22]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x23]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x24]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x25]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x26]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x27]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x28]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x29]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x30]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x31]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x32]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x33]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x34]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x35]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x36]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x37]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x38]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x39]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x40]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x41]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x42]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x43]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x44]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x45]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x46]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x47]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x48]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x49]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x50]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x51]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x52]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x53]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x54]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x55]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x56]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x57]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x58]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x59]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x60]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x61]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x62]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x63]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x64]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x65]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x66]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x67]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x68]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x69]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x70]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x71]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x72]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x73]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x74]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x75]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x76]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x77]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x78]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x79]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xea]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xeb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xed]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xec]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xee]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xef]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfa]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2020] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2022] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xae]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2122] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2260] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x221e] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2264] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2265] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2202] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2211] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x220f] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03c0] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x222b] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xaa]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xba]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03a9] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xbf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xac]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x221a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0192] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2248] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2206] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xab]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xbb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2026] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0152] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0153] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2013] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2014] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201c] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201d] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2018] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2019] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x25ca] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xff]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0178] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2044] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x20ac] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2039] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x203a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb01] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb02] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2021] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201e] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2030] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xca]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcd]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xce]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf8ff] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xda]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0131] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02c6] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02dc] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xaf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02d8] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02d9] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02da] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02dd] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02db] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02c7] = ord($cmapData[$i]);
    }

}
PKpG[�ȁ�llPdf/Cmap/TrimmedTable.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';


/**
 * Implements the "trimmed table mapping" character map (type 6).
 *
 * This table type is preferred over the {@link Zend_Pdf_Cmap_SegmentToDelta}
 * table when the Unicode characters covered by the font fall into a single
 * contiguous range.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Cmap_TrimmedTable extends Zend_Pdf_Cmap
{
  /**** Instance Variables ****/


    /**
     * The starting character code covered by this table.
     * @var integer
     */
    protected $_startCode = 0;

    /**
     * The ending character code covered by this table.
     * @var integer
     */
    protected $_endCode = 0;

    /**
     * Glyph index array. Stores the actual glyph numbers.
     * @var array
     */
    protected $_glyphIndexArray = array();



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        $glyphNumbers = array();
        foreach ($characterCodes as $key => $characterCode) {

            if (($characterCode < $this->_startCode) || ($characterCode > $this->_endCode)) {
                $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
                continue;
            }

            $glyphIndex = $characterCode - $this->_startCode;
            $glyphNumbers[$key] = $this->_glyphIndexArray[$glyphIndex];

        }
        return $glyphNumbers;
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        if (($characterCode < $this->_startCode) || ($characterCode > $this->_endCode)) {
            return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
        }
        $glyphIndex = $characterCode - $this->_startCode;
        return $this->_glyphIndexArray[$glyphIndex];
    }

    /**
     * Returns an array containing the Unicode characters that have entries in
     * this character map.
     *
     * @return array Unicode character codes.
     */
    public function getCoveredCharacters()
    {
        $characterCodes = array();
        for ($code = $this->_startCode; $code <= $this->_endCode; $code++) {
            $characterCodes[] = $code;
        }
        return $characterCodes;
    }


    /**
     * Returns an array containing the glyphs numbers that have entries in this character map.
     * Keys are Unicode character codes (integers)
     * 
     * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
     * call, but this method do it in more effective way (prepare complete list instead of searching 
     * glyph for each character code).
     *
     * @internal
     * @return array Array representing <Unicode character code> => <glyph number> pairs.
     */
    public function getCoveredCharactersGlyphs()
    {
        $glyphNumbers = array();
        for ($code = $this->_startCode; $code <= $this->_endCode; $code++) {
            $glyphNumbers[$code] = $this->_glyphIndexArray[$code - $this->_startCode];
        }

        return $glyphNumbers;
    }


  /* Object Lifecycle */

    /**
     * Object constructor
     *
     * Parses the raw binary table data. Throws an exception if the table is
     * malformed.
     *
     * @param string $cmapData Raw binary cmap table data.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($cmapData)
    {
        /* Sanity check: The table should be at least 9 bytes in size.
         */
        $actualLength = strlen($cmapData);
        if ($actualLength < 9) {
            throw new Zend_Pdf_Exception('Insufficient table data',
                                         Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL);
        }

        /* Sanity check: Make sure this is right data for this table type.
         */
        $type = $this->_extractUInt2($cmapData, 0);
        if ($type != Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE) {
            throw new Zend_Pdf_Exception('Wrong cmap table type',
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE);
        }

        $length = $this->_extractUInt2($cmapData, 2);
        if ($length != $actualLength) {
            throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)",
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH);
        }

        /* Mapping tables should be language-independent. The font may not work
         * as expected if they are not. Unfortunately, many font files in the
         * wild incorrectly record a language ID in this field, so we can't
         * call this a failure.
         */
        $language = $this->_extractUInt2($cmapData, 4);
        if ($language != 0) {
            // Record a warning here somehow?
        }

        $this->_startCode = $this->_extractUInt2($cmapData, 6);

        $entryCount = $this->_extractUInt2($cmapData, 8);
        $expectedCount = ($length - 10) >> 1;
        if ($entryCount != $expectedCount) {
            throw new Zend_Pdf_Exception("Entry count is wrong; expected: $expectedCount; actual: $entryCount",
                                         Zend_Pdf_Exception::CMAP_WRONG_ENTRY_COUNT);
        }

        $this->_endCode = $this->_startCode + $entryCount - 1;

        $offset = 10;
        for ($i = 0; $i < $entryCount; $i++, $offset += 2) {
            $this->_glyphIndexArray[] = $this->_extractUInt2($cmapData, $offset);
        }

        /* Sanity check: After reading all of the data, we should be at the end
         * of the table.
         */
        if ($offset != $length) {
            throw new Zend_Pdf_Exception("Ending offset ($offset) does not match length ($length)",
                                         Zend_Pdf_Exception::CMAP_FINAL_OFFSET_NOT_LENGTH);
        }
    }

}
PKpG[7�\�+:+:Pdf/Cmap/SegmentToDelta.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';


/**
 * Implements the "segment mapping to delta values" character map (type 4).
 *
 * This is the Microsoft standard mapping table type for OpenType fonts. It
 * provides the ability to cover multiple contiguous ranges of the Unicode
 * character set, with the exception of Unicode Surrogates (U+D800 - U+DFFF).
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Cmap_SegmentToDelta extends Zend_Pdf_Cmap
{
  /**** Instance Variables ****/


    /**
     * The number of segments in the table.
     * @var integer
     */
    protected $_segmentCount = 0;

    /**
     * The size of the binary search range for segments.
     * @var integer
     */
    protected $_searchRange = 0;

    /**
     * The number of binary search steps required to cover the entire search
     * range.
     * @var integer
     */
    protected $_searchIterations = 0;

    /**
     * Array of ending character codes for each segment.
     * @var array
     */
    protected $_segmentTableEndCodes = array();

    /**
     * The ending character code for the segment at the end of the low search
     * range.
     * @var integer
     */
    protected $_searchRangeEndCode = 0;

    /**
     * Array of starting character codes for each segment.
     * @var array
     */
    protected $_segmentTableStartCodes = array();

    /**
     * Array of character code to glyph delta values for each segment.
     * @var array
     */
    protected $_segmentTableIdDeltas = array();

    /**
     * Array of offsets into the glyph index array for each segment.
     * @var array
     */
    protected $_segmentTableIdRangeOffsets = array();

    /**
     * Glyph index array. Stores glyph numbers, used with range offset.
     * @var array
     */
    protected $_glyphIndexArray = array();



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        $glyphNumbers = array();
        foreach ($characterCodes as $key => $characterCode) {

            /* These tables only cover the 16-bit character range.
             */
            if ($characterCode > 0xffff) {
                $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
                continue;
            }

            /* Determine where to start the binary search. The segments are
             * ordered from lowest-to-highest. We are looking for the first
             * segment whose end code is greater than or equal to our character
             * code.
             *
             * If the end code at the top of the search range is larger, then
             * our target is probably below it.
             *
             * If it is smaller, our target is probably above it, so move the
             * search range to the end of the segment list.
             */
            if ($this->_searchRangeEndCode >= $characterCode) {
                $searchIndex = $this->_searchRange;
            } else {
                $searchIndex = $this->_segmentCount;
            }

            /* Now do a binary search to find the first segment whose end code
             * is greater or equal to our character code. No matter the number
             * of segments (there may be hundreds in a large font), we will only
             * need to perform $this->_searchIterations.
             */
            for ($i = 1; $i <= $this->_searchIterations; $i++) {
                if ($this->_segmentTableEndCodes[$searchIndex] >= $characterCode) {
                    $subtableIndex = $searchIndex;
                    $searchIndex -= $this->_searchRange >> $i;
                } else {
                    $searchIndex += $this->_searchRange >> $i;
                }
            }

            /* If the segment's start code is greater than our character code,
             * that character is not represented in this font. Move on.
             */
            if ($this->_segmentTableStartCodes[$subtableIndex] > $characterCode) {
                $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
                continue;
            }

            if ($this->_segmentTableIdRangeOffsets[$subtableIndex] == 0) {
                /* This segment uses a simple mapping from character code to
                 * glyph number.
                 */
                $glyphNumbers[$key] = ($characterCode + $this->_segmentTableIdDeltas[$subtableIndex]) % 65536;

            } else {
                /* This segment relies on the glyph index array to determine the
                 * glyph number. The calculation below determines the correct
                 * index into that array. It's a little odd because the range
                 * offset in the font file is designed to quickly provide an
                 * address of the index in the raw binary data instead of the
                 * index itself. Since we've parsed the data into arrays, we
                 * must process it a bit differently.
                 */
                $glyphIndex = ($characterCode - $this->_segmentTableStartCodes[$subtableIndex] +
                               $this->_segmentTableIdRangeOffsets[$subtableIndex] - $this->_segmentCount +
                               $subtableIndex - 1);
                $glyphNumbers[$key] = $this->_glyphIndexArray[$glyphIndex];

            }

        }
        return $glyphNumbers;
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        /* This code is pretty much a copy of glyphNumbersForCharacters().
         * See that method for inline documentation.
         */

        if ($characterCode > 0xffff) {
            return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
        }

        if ($this->_searchRangeEndCode >= $characterCode) {
            $searchIndex = $this->_searchRange;
        } else {
            $searchIndex = $this->_segmentCount;
        }

        for ($i = 1; $i <= $this->_searchIterations; $i++) {
            if ($this->_segmentTableEndCodes[$searchIndex] >= $characterCode) {
                $subtableIndex = $searchIndex;
                $searchIndex -= $this->_searchRange >> $i;
            } else {
                $searchIndex += $this->_searchRange >> $i;
            }
        }

        if ($this->_segmentTableStartCodes[$subtableIndex] > $characterCode) {
            return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
        }

        if ($this->_segmentTableIdRangeOffsets[$subtableIndex] == 0) {
            $glyphNumber = ($characterCode + $this->_segmentTableIdDeltas[$subtableIndex]) % 65536;
        } else {
            $glyphIndex = ($characterCode - $this->_segmentTableStartCodes[$subtableIndex] +
                           $this->_segmentTableIdRangeOffsets[$subtableIndex] - $this->_segmentCount +
                           $subtableIndex - 1);
            $glyphNumber = $this->_glyphIndexArray[$glyphIndex];
        }
        return $glyphNumber;
    }

    /**
     * Returns an array containing the Unicode characters that have entries in
     * this character map.
     *
     * @return array Unicode character codes.
     */
    public function getCoveredCharacters()
    {
        $characterCodes = array();
        for ($i = 1; $i <= $this->_segmentCount; $i++) {
            for ($code = $this->_segmentTableStartCodes[$i]; $code <= $this->_segmentTableEndCodes[$i]; $code++) {
                $characterCodes[] = $code;
            }
        }
        return $characterCodes;
    }

    
    /**
     * Returns an array containing the glyphs numbers that have entries in this character map.
     * Keys are Unicode character codes (integers)
     * 
     * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
     * call, but this method do it in more effective way (prepare complete list instead of searching 
     * glyph for each character code).
     *
     * @internal
     * @return array Array representing <Unicode character code> => <glyph number> pairs.
     */
    public function getCoveredCharactersGlyphs()
    {
        $glyphNumbers = array();
        
        for ($segmentNum = 1; $segmentNum <= $this->_segmentCount; $segmentNum++) {
            if ($this->_segmentTableIdRangeOffsets[$segmentNum] == 0) {
                $delta = $this->_segmentTableIdDeltas[$segmentNum];

                for ($code =  $this->_segmentTableStartCodes[$segmentNum];
                     $code <= $this->_segmentTableEndCodes[$segmentNum];
                     $code++) {
                    $glyphNumbers[$code] = ($code + $delta) % 65536;
                }
            } else {
                $code       = $this->_segmentTableStartCodes[$segmentNum];
                $glyphIndex = $this->_segmentTableIdRangeOffsets[$segmentNum] - ($this->_segmentCount - $segmentNum) - 1;

                while ($code <= $this->_segmentTableEndCodes[$segmentNum]) {
                    $glyphNumbers[$code] = $this->_glyphIndexArray[$glyphIndex];

                    $code++;
                    $glyphIndex++;
                }
            }
        }
        
        return $glyphNumbers;
    }



  /* Object Lifecycle */

    /**
     * Object constructor
     *
     * Parses the raw binary table data. Throws an exception if the table is
     * malformed.
     *
     * @param string $cmapData Raw binary cmap table data.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($cmapData)
    {
        /* Sanity check: The table should be at least 23 bytes in size.
         */
        $actualLength = strlen($cmapData);
        if ($actualLength < 23) {
            throw new Zend_Pdf_Exception('Insufficient table data',
                                         Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL);
        }

        /* Sanity check: Make sure this is right data for this table type.
         */
        $type = $this->_extractUInt2($cmapData, 0);
        if ($type != Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA) {
            throw new Zend_Pdf_Exception('Wrong cmap table type',
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE);
        }

        $length = $this->_extractUInt2($cmapData, 2);
        if ($length != $actualLength) {
            throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)",
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH);
        }

        /* Mapping tables should be language-independent. The font may not work
         * as expected if they are not. Unfortunately, many font files in the
         * wild incorrectly record a language ID in this field, so we can't
         * call this a failure.
         */
        $language = $this->_extractUInt2($cmapData, 4);
        if ($language != 0) {
            // Record a warning here somehow?
        }

        /* These two values are stored premultiplied by two which is convienent
         * when using the binary data directly, but we're parsing it out to
         * native PHP data types, so divide by two.
         */
        $this->_segmentCount = $this->_extractUInt2($cmapData, 6) >> 1;
        $this->_searchRange  = $this->_extractUInt2($cmapData, 8) >> 1;

        $this->_searchIterations = $this->_extractUInt2($cmapData, 10) + 1;

        $offset = 14;
        for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) {
            $this->_segmentTableEndCodes[$i] = $this->_extractUInt2($cmapData, $offset);
        }

        $this->_searchRangeEndCode = $this->_segmentTableEndCodes[$this->_searchRange];

        $offset += 2;    // reserved bytes

        for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) {
            $this->_segmentTableStartCodes[$i] = $this->_extractUInt2($cmapData, $offset);
        }

        for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) {
            $this->_segmentTableIdDeltas[$i] = $this->_extractInt2($cmapData, $offset);    // signed
        }

        /* The range offset helps determine the index into the glyph index array.
         * Like the segment count and search range above, it's stored as a byte
         * multiple in the font, so divide by two as we extract the values.
         */
        for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) {
            $this->_segmentTableIdRangeOffsets[$i] = $this->_extractUInt2($cmapData, $offset) >> 1;
        }

        /* The size of the glyph index array varies by font and depends on the
         * extent of the usage of range offsets versus deltas. Some fonts may
         * not have any entries in this array.
         */
        for (; $offset < $length; $offset += 2) {
            $this->_glyphIndexArray[] = $this->_extractUInt2($cmapData, $offset);
        }

        /* Sanity check: After reading all of the data, we should be at the end
         * of the table.
         */
        if ($offset != $length) {
            throw new Zend_Pdf_Exception("Ending offset ($offset) does not match length ($length)",
                                         Zend_Pdf_Exception::CMAP_FINAL_OFFSET_NOT_LENGTH);
        }
    }

}
PKpG[��~�-�-Pdf/ElementFactory.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_ElementFactory_Interface */
require_once 'Zend/Pdf/ElementFactory/Interface.php';

/** Zend_Pdf_ElementFactory_Proxy */
require_once 'Zend/Pdf/ElementFactory/Proxy.php';

/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Array */
require_once 'Zend/Pdf/Element/Array.php';

/** Zend_Pdf_Element_String_Binary */
require_once 'Zend/Pdf/Element/String/Binary.php';

/** Zend_Pdf_Element_Boolean */
require_once 'Zend/Pdf/Element/Boolean.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Reference */
require_once 'Zend/Pdf/Element/Reference.php';

/** Zend_Pdf_Element_Object_Stream */
require_once 'Zend/Pdf/Element/Object/Stream.php';

/** Zend_Pdf_Element_String */
require_once 'Zend/Pdf/Element/String.php';

/** Zend_Pdf_Element_Null */
require_once 'Zend/Pdf/Element/Null.php';

/** Zend_Pdf_UpdateInfoContainer */
require_once 'Zend/Pdf/UpdateInfoContainer.php';


/**
 * PDF element factory.
 * Responsibility is to log PDF changes
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_ElementFactory implements Zend_Pdf_ElementFactory_Interface
{
    /**
     * List of the modified objects.
     * Also contains new and removed objects
     *
     * Array: ojbectNumber => Zend_Pdf_Element_Object
     *
     * @var array
     */
    private $_modifiedObjects = array();

    /**
     * List of the removed objects
     *
     * Array: ojbectNumber => Zend_Pdf_Element_Object
     *
     * @var array
     */
    private $_removedObjects = array();

    /**
     * List of registered objects.
     * Used for resources clean up when factory is destroyed.
     *
     * Array of Zend_Pdf_Element objects
     *
     * @var array
     */
    private $_registeredObjects = array();

    /**
     * PDF object counter.
     * Actually it's an object number for new PDF object
     *
     * @var integer
     */
    private $_objectCount;


    /**
     * List of the attached object factories.
     * Array of Zend_Pdf_ElementFactory_Interface objects
     *
     * @var array
     */
    private $_attachedFactories = array();


    /**
     * Factory internal id
     *
     * @var integer
     */
    private $_factoryId;

    /**
     * Identity, used for factory id generation
     *
     * @var integer
     */
    private static $_identity = 0;


    /**
     * Internal cache to save calculated shifts
     *
     * @var array
     */
    private $_shiftCalculationCache = array();


    /**
     * Object constructor
     *
     * @param integer $objCount
     */
    public function __construct($objCount)
    {
        $this->_objectCount       = (int)$objCount;
        $this->_factoryId         = self::$_identity++;
    }


    /**
     * Factory generator
     *
     * @param integer $objCount
     * @return Zend_Pdf_ElementFactory_Interface
     */
    static public function createFactory($objCount)
    {
        return new Zend_Pdf_ElementFactory_Proxy(new Zend_Pdf_ElementFactory($objCount));
    }

    /**
     * Close factory and clean-up resources
     *
     * @internal
     */
    public function close()
    {
        $this->_modifiedObjects   = null;
        $this->_removedObjects    = null;
        $this->_attachedFactories = null;

        foreach ($this->_registeredObjects as $obj) {
            $obj->cleanUp();
        }
        $this->_registeredObjects = null;
    }

    /**
     * Get source factory object
     *
     * @return Zend_Pdf_ElementFactory
     */
    public function resolve()
    {
        return $this;
    }

    /**
     * Get factory ID
     *
     * @return integer
     */
    public function getId()
    {
        return $this->_factoryId;
    }

    /**
     * Set object counter
     *
     * @param integer $objCount
     */
    public function setObjectCount($objCount)
    {
        $this->_objectCount = (int)$objCount;
    }

    /**
     * Get object counter
     *
     * @return integer
     */
    public function getObjectCount()
    {
        $count = $this->_objectCount;

        foreach ($this->_attachedFactories as $attached) {
            $count += $attached->getObjectCount() - 1; // -1 as "0" object is a special case and shared between factories
        }

        return $count;
    }


    /**
     * Attach factory to the current;
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     */
    public function attach(Zend_Pdf_ElementFactory_Interface $factory)
    {
        if ( $factory === $this || isset($this->_attachedFactories[$factory->getId()])) {
            /**
             * Don't attach factory twice.
             * We do not check recusively because of nature of attach operation
             * (Pages are always attached to the Documents, Fonts are always attached
             * to the pages even if pages already use Document level object factory and so on)
             */
            return;
        }

        $this->_attachedFactories[$factory->getId()] = $factory;
    }


    /**
     * Calculate object enumeration shift.
     *
     * @internal
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     */
    public function calculateShift(Zend_Pdf_ElementFactory_Interface $factory)
    {
        if ($factory === $this) {
            return 0;
        }

        if (isset($this->_shiftCalculationCache[$factory->_factoryId])) {
            return $this->_shiftCalculationCache[$factory->_factoryId];
        }

        $shift = $this->_objectCount - 1;

        foreach ($this->_attachedFactories as $subFactory) {
            $subFactoryShift = $subFactory->calculateShift($factory);

            if ($subFactoryShift != -1) {
                // context found
                $this->_shiftCalculationCache[$factory->_factoryId] = $shift + $subFactoryShift;
                return $shift + $subFactoryShift;
            } else {
                $shift += $subFactory->getObjectCount()-1;
            }
        }

        $this->_shiftCalculationCache[$factory->_factoryId] = -1;
        return -1;
    }

    /**
     * Retrive object enumeration shift.
     *
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function getEnumerationShift(Zend_Pdf_ElementFactory_Interface $factory)
    {
        if (($shift = $this->calculateShift($factory)) == -1) {
            throw new Zend_Pdf_Exception('Wrong object context');
        }

        return $shift;
    }

    /**
     * Mark object as modified in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function markAsModified(Zend_Pdf_Element_Object $obj)
    {
        if ($obj->getFactory() !== $this) {
            throw new Zend_Pdf_Exception('Object is not generated by this factory');
        }

        $this->_modifiedObjects[$obj->getObjNum()] = $obj;
    }


    /**
     * Remove object in context of current factory.
     *
     * @param Zend_Pdf_Element_Object $obj
     * @throws Zend_Pdf_Exception
     */
    public function remove(Zend_Pdf_Element_Object $obj)
    {
        if (!$obj->compareFactory($this)) {
            throw new Zend_Pdf_Exception('Object is not generated by this factory');
        }

        $this->_modifiedObjects[$obj->getObjNum()] = $obj;
        $this-> _removedObjects[$obj->getObjNum()] = $obj;
    }


    /**
     * Generate new Zend_Pdf_Element_Object
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param Zend_Pdf_Element $objectValue
     * @return Zend_Pdf_Element_Object
     */
    public function newObject(Zend_Pdf_Element $objectValue)
    {
        $obj = new Zend_Pdf_Element_Object($objectValue, $this->_objectCount++, 0, $this);
        $this->_modifiedObjects[$obj->getObjNum()] = $obj;
        return $obj;
    }

    /**
     * Generate new Zend_Pdf_Element_Object_Stream
     *
     * @todo Reusage of the freed object. It's not a support of new feature, but only improvement.
     *
     * @param mixed $objectValue
     * @return Zend_Pdf_Element_Object_Stream
     */
    public function newStreamObject($streamValue)
    {
        $obj = new Zend_Pdf_Element_Object_Stream($streamValue, $this->_objectCount++, 0, $this);
        $this->_modifiedObjects[$obj->getObjNum()] = $obj;
        return $obj;
    }


    /**
     * Enumerate modified objects.
     * Returns array of Zend_Pdf_UpdateInfoContainer
     *
     * @param Zend_Pdf_ElementFactory_Interface $rootFactory
     * @return array
     */
    public function listModifiedObjects($rootFactory = null)
    {
        if ($rootFactory == null) {
            $rootFactory = $this;
            $shift = 0;
        } else {
            $shift = $rootFactory->getEnumerationShift($this);
        }

        ksort($this->_modifiedObjects);

        $result = array();
        foreach ($this->_modifiedObjects as $objNum => $obj) {
            if (key_exists($objNum, $this->_removedObjects)) {
                $result[$objNum+$shift] = new Zend_Pdf_UpdateInfoContainer($objNum + $shift,
                                                                           $obj->getGenNum()+1,
                                                                           true);
            } else {
                $result[$objNum+$shift] = new Zend_Pdf_UpdateInfoContainer($objNum + $shift,
                                                                           $obj->getGenNum(),
                                                                           false,
                                                                           $obj->dump($rootFactory));
            }
        }

        foreach ($this->_attachedFactories as $factory) {
            $result += $factory->listModifiedObjects($rootFactory);
        }

        return $result;
    }

    /**
     * Register object in the factory
     *
     * It's used to clear "parent object" referencies when factory is closed and clean up resources
     *
     * @param Zend_Pdf_Element_Object $obj
     */
    public function registerObject($obj)
    {
        $this->_registeredObjects[] = $obj;
    }

    /**
     * Check if PDF file was modified
     *
     * @return boolean
     */
    public function isModified()
    {
        if (count($this->_modifiedObjects) != 0) {
            return true;
        }

        foreach ($this->_attachedFactories as $subFactory) {
            if ($subFactory->isModified()) {
                return true;
            }
        }

        return false;
    }
}

PKpG[�T��S�SPdf/StringParser.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Array */
require_once 'Zend/Pdf/Element/Array.php';

/** Zend_Pdf_Element_String_Binary */
require_once 'Zend/Pdf/Element/String/Binary.php';

/** Zend_Pdf_Element_Boolean */
require_once 'Zend/Pdf/Element/Boolean.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Reference */
require_once 'Zend/Pdf/Element/Reference.php';

/** Zend_Pdf_Element_Object_Stream */
require_once 'Zend/Pdf/Element/Object/Stream.php';

/** Zend_Pdf_Element_String */
require_once 'Zend/Pdf/Element/String.php';

/** Zend_Pdf_Element_Null */
require_once 'Zend/Pdf/Element/Null.php';

/** Zend_Pdf_Element_Reference_Context */
require_once 'Zend/Pdf/Element/Reference/Context.php';

/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';

/** Zend_Pdf_ElementFactory_Interface */
require_once 'Zend/Pdf/ElementFactory/Interface.php';

/** Zend_Pdf_PhpArray */
require_once 'Zend/Pdf/PhpArray.php';


/**
 * PDF string parser
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_StringParser
{
    /**
     * Source PDF
     *
     * @var string
     */
    public $data = '';

    /**
     * Current position in a data
     *
     * @var integer
     */
    public $offset = 0;

    /**
     * Current reference context
     *
     * @var Zend_Pdf_Element_Reference_Context
     */
    private $_context = null;

    /**
     * Array of elements of the currently parsed object/trailer
     *
     * @var array
     */
    private $_elements = array();

    /**
     * PDF objects factory.
     *
     * @var Zend_Pdf_ElementFactory_Interface
     */
    private $_objFactory = null;


    /**
     * Clean up resources.
     *
     * Clear current state to remove cyclic object references
     */
    public function cleanUp()
    {
        $this->_context = null;
        $this->_elements = array();
        $this->_objFactory = null;
    }

    /**
     * Character with code $chCode is white space
     *
     * @param integer $chCode
     * @return boolean
     */
    public static function isWhiteSpace($chCode)
    {
        if ($chCode == 0x00 || // null character
            $chCode == 0x09 || // Tab
            $chCode == 0x0A || // Line feed
            $chCode == 0x0C || // Form Feed
            $chCode == 0x0D || // Carriage return
            $chCode == 0x20    // Space
           ) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * Character with code $chCode is a delimiter character
     *
     * @param integer $chCode
     * @return boolean
     */
    public static function isDelimiter($chCode )
    {
        if ($chCode == 0x28 || // '('
            $chCode == 0x29 || // ')'
            $chCode == 0x3C || // '<'
            $chCode == 0x3E || // '>'
            $chCode == 0x5B || // '['
            $chCode == 0x5D || // ']'
            $chCode == 0x7B || // '{'
            $chCode == 0x7D || // '}'
            $chCode == 0x2F || // '/'
            $chCode == 0x25    // '%'
           ) {
            return true;
        } else {
            return false;
        }
    }


    /**
     * Skip white space
     *
     * @param boolean $skipComment
     */
    public function skipWhiteSpace($skipComment = true)
    {
        while ($this->offset < strlen($this->data)) {
            if (self::isWhiteSpace( ord($this->data[$this->offset]) )) {
                $this->offset++;
            } else if (ord($this->data[$this->offset]) == 0x25 && $skipComment) { // '%'
                $this->skipComment();
            } else {
                return;
            }
        }
    }


    /**
     * Skip comment
     */
    public function skipComment()
    {
        while ($this->offset < strlen($this->data))
        {
            if (ord($this->data[$this->offset]) != 0x0A || // Line feed
                ord($this->data[$this->offset]) != 0x0d    // Carriage return
               ) {
                $this->offset++;
            } else {
                return;
            }
        }
    }


    /**
     * Read comment line
     *
     * @return string
     */
    public function readComment()
    {
        $this->skipWhiteSpace(false);

        /** Check if it's a comment line */
        if ($this->data[$this->offset] != '%') {
            return '';
        }

        for ($start = $this->offset;
             $this->offset < strlen($this->data);
             $this->offset++) {
            if (ord($this->data[$this->offset]) == 0x0A || // Line feed
                ord($this->data[$this->offset]) == 0x0d    // Carriage return
               ) {
                break;
            }
        }

        return substr($this->data, $start, $this->offset-$start);
    }


    /**
     * Returns next lexeme from a pdf stream
     *
     * @return string
     */
    public function readLexeme()
    {
        $this->skipWhiteSpace();

        if ($this->offset >= strlen($this->data)) {
            return '';
        }

        $start = $this->offset;

        if (self::isDelimiter( ord($this->data[$start]) )) {
            if ($this->data[$start] == '<' && $this->offset + 1 < strlen($this->data) && $this->data[$start+1] == '<') {
                $this->offset += 2;
                return '<<';
            } else if ($this->data[$start] == '>' && $this->offset + 1 < strlen($this->data) && $this->data[$start+1] == '>') {
                $this->offset += 2;
                return '>>';
            } else {
                $this->offset++;
                return $this->data[$start];
            }
        } else {
            while ( ($this->offset < strlen($this->data)) &&
                    (!self::isDelimiter(  ord($this->data[$this->offset]) )) &&
                    (!self::isWhiteSpace( ord($this->data[$this->offset]) ))   ) {
                $this->offset++;
            }

            return substr($this->data, $start, $this->offset - $start);
        }
    }


    /**
     * Read elemental object from a PDF stream
     *
     * @return Zend_Pdf_Element
     * @throws Zend_Pdf_Exception
     */
    public function readElement($nextLexeme = null)
    {
        if ($nextLexeme === null) {
            $nextLexeme = $this->readLexeme();
        }

        /**
         * Note: readElement() method is a public method and could be invoked from other classes.
         * If readElement() is used not by Zend_Pdf_StringParser::getObject() method, then we should not care
         * about _elements member management.
         */
        switch ($nextLexeme) {
            case '(':
                return ($this->_elements[] = $this->_readString());

            case '<':
                return ($this->_elements[] = $this->_readBinaryString());

            case '/':
                return ($this->_elements[] = new Zend_Pdf_Element_Name(
                                                Zend_Pdf_Element_Name::unescape( $this->readLexeme() )
                                                                      ));

            case '[':
                return ($this->_elements[] = $this->_readArray());

            case '<<':
                return ($this->_elements[] = $this->_readDictionary());

            case ')':
                // fall through to next case
            case '>':
                // fall through to next case
            case ']':
                // fall through to next case
            case '>>':
                // fall through to next case
            case '{':
                // fall through to next case
            case '}':
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.',
                                                $this->offset));

            default:
                if (strcasecmp($nextLexeme, 'true') == 0) {
                    return ($this->_elements[] = new Zend_Pdf_Element_Boolean(true));
                } else if (strcasecmp($nextLexeme, 'false') == 0) {
                    return ($this->_elements[] = new Zend_Pdf_Element_Boolean(false));
                } else if (strcasecmp($nextLexeme, 'null') == 0) {
                    return ($this->_elements[] = new Zend_Pdf_Element_Null());
                }

                $ref = $this->_readReference($nextLexeme);
                if ($ref !== null) {
                    return ($this->_elements[] = $ref);
                }

                return ($this->_elements[] = $this->_readNumeric($nextLexeme));
        }
    }


    /**
     * Read string PDF object
     * Also reads trailing ')' from a pdf stream
     *
     * @return Zend_Pdf_Element_String
     * @throws Zend_Pdf_Exception
     */
    private function _readString()
    {
        $start = $this->offset;
        $openedBrackets = 1;

        while ($this->offset < strlen($this->data)) {
            switch (ord( $this->data[$this->offset] )) {
                case 0x28: // '(' - opened bracket in the string, needs balanced pair.
                    $openedBrackets++;
                    break;

                case 0x29: // ')' - pair to the opened bracket
                    $openedBrackets--;
                    break;

                case 0x5C: // '\\' - escape sequence, skip next char from a check
                    $this->offset++;
            }

            $this->offset++;
            if ($openedBrackets == 0) {
                break; // end of string
            }
        }
        if ($openedBrackets != 0) {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while string reading. Offset - 0x%X. \')\' expected.', $start));
        }

        return new Zend_Pdf_Element_String(Zend_Pdf_Element_String::unescape( substr($this->data,
                                                                 $start,
                                                                 $this->offset - $start - 1) ));
    }


    /**
     * Read binary string PDF object
     * Also reads trailing '>' from a pdf stream
     *
     * @return Zend_Pdf_Element_String_Binary
     * @throws Zend_Pdf_Exception
     */
    private function _readBinaryString()
    {
        $start = $this->offset;

        while ($this->offset < strlen($this->data)) {
            if (self::isWhiteSpace( ord($this->data[$this->offset]) ) ||
                ctype_xdigit( $this->data[$this->offset] ) ) {
                $this->offset++;
            } else if ($this->data[$this->offset] == '>') {
                $this->offset++;
                return new Zend_Pdf_Element_String_Binary(
                               Zend_Pdf_Element_String_Binary::unescape( substr($this->data,
                                                                    $start,
                                                                    $this->offset - $start - 1) ));
            } else {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected character while binary string reading. Offset - 0x%X.', $this->offset));
            }
        }
        throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while binary string reading. Offset - 0x%X. \'>\' expected.', $start));
    }


    /**
     * Read array PDF object
     * Also reads trailing ']' from a pdf stream
     *
     * @return Zend_Pdf_Element_Array
     * @throws Zend_Pdf_Exception
     */
    private function _readArray()
    {
        $elements = array();

        while ( strlen($nextLexeme = $this->readLexeme()) != 0 ) {
            if ($nextLexeme != ']') {
                $elements[] = $this->readElement($nextLexeme);
            } else {
                return new Zend_Pdf_Element_Array($elements);
            }
        }

        throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while array reading. Offset - 0x%X. \']\' expected.', $this->offset));
    }


    /**
     * Read dictionary PDF object
     * Also reads trailing '>>' from a pdf stream
     *
     * @return Zend_Pdf_Element_Dictionary
     * @throws Zend_Pdf_Exception
     */
    private function _readDictionary()
    {
        $dictionary = new Zend_Pdf_Element_Dictionary();

        while ( strlen($nextLexeme = $this->readLexeme()) != 0 ) {
            if ($nextLexeme != '>>') {
                $nameStart = $this->offset - strlen($nextLexeme);

                $name  = $this->readElement($nextLexeme);
                $value = $this->readElement();

                if (!$name instanceof Zend_Pdf_Element_Name) {
                    throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Name object expected while dictionary reading. Offset - 0x%X.', $nameStart));
                }

                $dictionary->add($name, $value);
            } else {
                return $dictionary;
            }
        }

        throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while dictionary reading. Offset - 0x%X. \'>>\' expected.', $this->offset));
    }


    /**
     * Read reference PDF object
     *
     * @param string $nextLexeme
     * @return Zend_Pdf_Element_Reference
     */
    private function _readReference($nextLexeme = null)
    {
        $start = $this->offset;

        if ($nextLexeme === null) {
            $objNum = $this->readLexeme();
        } else {
            $objNum = $nextLexeme;
        }
        if (!ctype_digit($objNum)) { // it's not a reference
            $this->offset = $start;
            return null;
        }

        $genNum = $this->readLexeme();
        if (!ctype_digit($genNum)) { // it's not a reference
            $this->offset = $start;
            return null;
        }

        $rMark  = $this->readLexeme();
        if ($rMark != 'R') { // it's not a reference
            $this->offset = $start;
            return null;
        }

        $ref = new Zend_Pdf_Element_Reference((int)$objNum, (int)$genNum, $this->_context, $this->_objFactory->resolve());

        return $ref;
    }


    /**
     * Read numeric PDF object
     *
     * @param string $nextLexeme
     * @return Zend_Pdf_Element_Numeric
     */
    private function _readNumeric($nextLexeme = null)
    {
        if ($nextLexeme === null) {
            $nextLexeme = $this->readLexeme();
        }

        return new Zend_Pdf_Element_Numeric($nextLexeme);
    }


    /**
     * Read inderect object from a PDF stream
     *
     * @param integer $offset
     * @param Zend_Pdf_Element_Reference_Context $context
     * @return Zend_Pdf_Element_Object
     */
    public function getObject($offset, Zend_Pdf_Element_Reference_Context $context)
    {
        if ($offset === null ) {
            return new Zend_Pdf_Element_Null();
        }

        // Save current offset to make getObject() reentrant
        $offsetSave = $this->offset;

        $this->offset    = $offset;
        $this->_context  = $context;
        $this->_elements = array();

        $objNum = $this->readLexeme();
        if (!ctype_digit($objNum)) {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Object number expected.', $this->offset - strlen($objNum)));
        }

        $genNum = $this->readLexeme();
        if (!ctype_digit($genNum)) {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Object generation number expected.', $this->offset - strlen($genNum)));
        }

        $objKeyword = $this->readLexeme();
        if ($objKeyword != 'obj') {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'obj\' keyword expected.', $this->offset - strlen($objKeyword)));
        }

        $objValue = $this->readElement();

        $nextLexeme = $this->readLexeme();

        if( $nextLexeme == 'endobj' ) {
            /**
             * Object is not generated by factory (thus it's not marked as modified object).
             * But factory is assigned to the obect.
             */
            $obj = new Zend_Pdf_Element_Object($objValue, (int)$objNum, (int)$genNum, $this->_objFactory->resolve());

            foreach ($this->_elements as $element) {
                $element->setParentObject($obj);
            }

            // Restore offset value
            $this->offset = $offsetSave;

            return $obj;
        }

        /**
         * It's a stream object
         */
        if ($nextLexeme != 'stream') {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endobj\' or \'stream\' keywords expected.', $this->offset - strlen($nextLexeme)));
        }

        if (!$objValue instanceof Zend_Pdf_Element_Dictionary) {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Stream extent must be preceded by stream dictionary.', $this->offset - strlen($nextLexeme)));
        }

        /**
         * References are automatically dereferenced at this moment.
         */
        $streamLength = $objValue->Length->value;

        /**
         * 'stream' keyword must be followed by either cr-lf sequence or lf character only.
         * This restriction gives the possibility to recognize all cases exactly
         */
        if ($this->data[$this->offset] == "\r" &&
            $this->data[$this->offset + 1] == "\n"    ) {
            $this->offset += 2;
        } else if ($this->data[$this->offset] == "\n"    ) {
            $this->offset++;
        } else {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'stream\' must be followed by either cr-lf sequence or lf character only.', $this->offset - strlen($nextLexeme)));
        }

        $dataOffset = $this->offset;

        $this->offset += $streamLength;

        $nextLexeme = $this->readLexeme();
        if ($nextLexeme != 'endstream') {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endstream\' keyword expected.', $this->offset - strlen($nextLexeme)));
        }

        $nextLexeme = $this->readLexeme();
        if ($nextLexeme != 'endobj') {
            throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endobj\' keyword expected.', $this->offset - strlen($nextLexeme)));
        }

        $obj = new Zend_Pdf_Element_Object_Stream(substr($this->data,
                                                         $dataOffset,
                                                         $streamLength),
                                                  (int)$objNum,
                                                  (int)$genNum,
                                                  $this->_objFactory->resolve(),
                                                  $objValue);

        foreach ($this->_elements as $element) {
            $element->setParentObject($obj);
        }

        // Restore offset value
        $this->offset = $offsetSave;

        return $obj;
    }


    /**
     * Get length of source string
     *
     * @return integer
     */
    public function getLength()
    {
        return strlen($this->data);
    }

    /**
     * Get source string
     *
     * @return string
     */
    public function getString()
    {
        return $this->data;
    }


    /**
     * Parse integer value from a binary stream
     *
     * @param string $stream
     * @param integer $offset
     * @param integer $size
     * @return integer
     */
    public static function parseIntFromStream($stream, $offset, $size)
    {
        $value = 0;
        for ($count = 0; $count < $size; $count++) {
            $value *= 256;
            $value += ord($stream[$offset + $count]);
        }

        return $value;
    }



    /**
     * Set current context
     *
     * @param Zend_Pdf_Element_Reference_Context $context
     */
    public function setContext(Zend_Pdf_Element_Reference_Context $context)
    {
        $this->_context = $context;
    }

    /**
     * Object constructor
     *
     * Note: PHP duplicates string, which is sent by value, only of it's updated.
     * Thus we don't need to care about overhead
     *
     * @param string $pdfString
     * @param Zend_Pdf_ElementFactory_Interface $factory
     */
    public function __construct($source, Zend_Pdf_ElementFactory_Interface $factory)
    {
        $this->data         = $source;
        $this->_objFactory  = $factory;
    }
}
PKpG[ѐs��#Pdf/FileParserDataSource/String.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParserDataSource */
require_once 'Zend/Pdf/FileParserDataSource.php';


/**
 * Concrete subclass of {@link Zend_Pdf_FileParserDataSource} that provides an
 * interface to binary strings.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_FileParserDataSource_String extends Zend_Pdf_FileParserDataSource
{
  /**** Instance Variables ****/


    /**
     * The string to parse.
     * @var string
     */
    protected $_string = '';



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Object constructor.
     *
     * Verifies that the string is not empty.
     *
     * @param string $string String to parse.
     */
    public function __construct($string)
    {
        if (empty($string)) {
            throw new Zend_Pdf_Exception('String is empty',
                                         Zend_Pdf_Exception::PARAMETER_VALUE_OUT_OF_RANGE);
        }
        $this->_size = strlen($string);
        $this->_string = $string;
    }

    /**
     * Object destructor.
     */
    public function __destruct()
    {
        $this->_string = '';
    }

    /**
     * Returns the specified number of raw bytes from the string at the byte
     * offset of the current read position.
     *
     * Advances the read position by the number of bytes read.
     *
     * Throws an exception if there is insufficient data to completely fulfill
     * the request.
     *
     * @param integer $byteCount Number of bytes to read.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readBytes($byteCount)
    {
        if (($this->_offset + $byteCount) > $this->_size) {
            throw new Zend_Pdf_Exception("Insufficient data to read $byteCount bytes",
                                         Zend_Pdf_Exception::INSUFFICIENT_DATA);
        }
        $bytes = substr($this->_string, $this->_offset, $byteCount);
        $this->_offset += $byteCount;
        return $bytes;
    }

    /**
     * Returns the entire string.
     *
     * Preserves the current read position.
     *
     * @return string
     */
    public function readAllBytes()
    {
        return $this->_string;
    }


  /* Object Magic Methods */

    /**
     * Returns a string containing the parsed string's length.
     *
     * @return string
     */
    public function __toString()
    {
        return "String ($this->_size bytes)";
    }

}
PKpG[hm0���!Pdf/FileParserDataSource/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_FileParserDataSource */
require_once 'Zend/Pdf/FileParserDataSource.php';


/**
 * Concrete subclass of {@link Zend_Pdf_FileParserDataSource} that provides an
 * interface to filesystem objects.
 *
 * Note that this class cannot be used for other sources that may be supported
 * by {@link fopen()} (through URL wrappers). It may be used for local
 * filesystem objects only.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_FileParserDataSource_File extends Zend_Pdf_FileParserDataSource
{
  /**** Instance Variables ****/


    /**
     * Fully-qualified path to the file.
     * @var string
     */
    protected $_filePath = '';

    /**
     * File resource handle .
     * @var resource
     */
    protected $_fileResource = null;



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Object constructor.
     *
     * Validates the path to the file, ensures that it is readable, then opens
     * it for reading.
     *
     * Throws an exception if the file is missing or cannot be opened.
     *
     * @param string $filePath Fully-qualified path to the file.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($filePath)
    {
        if (! (is_file($filePath) || is_link($filePath))) {
            throw new Zend_Pdf_Exception("Invalid file path: $filePath",
                                         Zend_Pdf_Exception::BAD_FILE_PATH);
        }
        if (! is_readable($filePath)) {
            throw new Zend_Pdf_Exception("File is not readable: $filePath",
                                         Zend_Pdf_Exception::NOT_READABLE);
        }
        if (($this->_size = @filesize($filePath)) === false) {
            throw new Zend_Pdf_Exception("Error while obtaining file size: $filePath",
                                         Zend_Pdf_Exception::CANT_GET_FILE_SIZE);
        }
        if (($this->_fileResource = @fopen($filePath, 'rb')) === false) {
            throw new Zend_Pdf_Exception("Cannot open file for reading: $filePath",
                                         Zend_Pdf_Exception::CANT_OPEN_FILE);
        }
        $this->_filePath = $filePath;
    }

    /**
     * Object destructor.
     *
     * Closes the file if it had been successfully opened.
     */
    public function __destruct()
    {
        if (is_resource($this->_fileResource)) {
            @fclose($this->_fileResource);
        }
    }

    /**
     * Returns the specified number of raw bytes from the file at the byte
     * offset of the current read position.
     *
     * Advances the read position by the number of bytes read.
     *
     * Throws an exception if an error was encountered while reading the file or
     * if there is insufficient data to completely fulfill the request.
     *
     * @param integer $byteCount Number of bytes to read.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readBytes($byteCount)
    {
        $bytes = @fread($this->_fileResource, $byteCount);
        if ($bytes === false) {
            throw new Zend_Pdf_Exception('Unexpected error while reading file',
                                         Zend_Pdf_Exception::ERROR_DURING_READ);
        }
        if (strlen($bytes) != $byteCount) {
            throw new Zend_Pdf_Exception("Insufficient data to read $byteCount bytes",
                                         Zend_Pdf_Exception::INSUFFICIENT_DATA);
        }
        $this->_offset += $byteCount;
        return $bytes;
    }

    /**
     * Returns the entire contents of the file as a string.
     *
     * Preserves the current file seek position.
     *
     * @return string
     */
    public function readAllBytes()
    {
        return file_get_contents($this->_filePath);
    }


  /* Object Magic Methods */

    /**
     * Returns the full filesystem path of the file.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->_filePath;
    }


  /* Primitive Methods */

    /**
     * Seeks the file read position to the specified byte offset.
     *
     * Throws an exception if the file pointer cannot be moved or if it is
     * moved beyond EOF (end of file).
     *
     * @param integer $offset Destination byte offset.
     * @throws Zend_Pdf_Exception
     */
    public function moveToOffset($offset)
    {
        if ($this->_offset == $offset) {
            return;    // Not moving; do nothing.
        }
        parent::moveToOffset($offset);
        $result = @fseek($this->_fileResource, $offset, SEEK_SET);
        if ($result !== 0) {
            throw new Zend_Pdf_Exception('Error while setting new file position',
                                         Zend_Pdf_Exception::CANT_SET_FILE_POSITION);
        }
        if (feof($this->_fileResource)) {
            throw new Zend_Pdf_Exception('Moved beyond the end of the file',
                                         Zend_Pdf_Exception::MOVE_BEYOND_END_OF_FILE);
        }
    }

}
PKpG[�Ƥu�;�;Pdf/Resource/Font.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource */
require_once 'Zend/Pdf/Resource.php';

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';


/**
 * Abstract class which manages PDF fonts.
 *
 * Defines the public interface and creates shared storage for concrete
 * subclasses which are responsible for generating the font's information
 * dictionaries, mapping characters to glyphs, and providing both overall font
 * and glyph-specific metric data.
 *
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Font extends Zend_Pdf_Resource
{
  /**** Instance Variables ****/


    /**
     * The type of font. Use TYPE_ constants defined in {@link Zend_Pdf_Font}.
     * @var integer
     */
    protected $_fontType = Zend_Pdf_Font::TYPE_UNKNOWN;

    /**
     * Array containing descriptive names for the font. See {@link fontName()}.
     * @var array
     */
    protected $_fontNames = array();

    /**
     * Flag indicating whether or not this font is bold.
     * @var boolean
     */
    protected $_isBold = false;

    /**
     * Flag indicating whether or not this font is italic.
     * @var boolean
     */
    protected $_isItalic = false;

    /**
     * Flag indicating whether or not this font is monospaced.
     * @var boolean
     */
    protected $_isMonospace = false;

    /**
     * The position below the text baseline of the underline (in glyph units).
     * @var integer
     */
    protected $_underlinePosition = 0;

    /**
     * The thickness of the underline (in glyph units).
     * @var integer
     */
    protected $_underlineThickness = 0;

    /**
     * The position above the text baseline of the strikethrough (in glyph units).
     * @var integer
     */
    protected $_strikePosition = 0;

    /**
     * The thickness of the strikethrough (in glyph units).
     * @var integer
     */
    protected $_strikeThickness = 0;

    /**
     * Number of glyph units per em. See {@link getUnitsPerEm()}.
     * @var integer
     */
    protected $_unitsPerEm = 0;

    /**
     * Typographical ascent. See {@link getAscent()}.
     * @var integer
     */
    protected $_ascent = 0;

    /**
     * Typographical descent. See {@link getDescent()}.
     * @var integer
     */
    protected $_descent = 0;

    /**
     * Typographical line gap. See {@link getLineGap()}.
     * @var integer
     */
    protected $_lineGap = 0;



  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor.
     *
     */
    public function __construct()
    {
        parent::__construct(new Zend_Pdf_Element_Dictionary());
        $this->_resource->Type = new Zend_Pdf_Element_Name('Font');
    }


  /* Object Magic Methods */

    /**
     * Returns the full name of the font in the encoding method of the current
     * locale. Transliterates any characters that cannot be naturally
     * represented in that character set.
     *
     * @return string
     */
    public function __toString()
    {
        return $this->getFontName(Zend_Pdf_Font::NAME_FULL, '', '//TRANSLIT');
    }


  /* Accessors */

    /**
     * Returns the type of font.
     *
     * @return integer One of the TYPE_ constants defined in
     *   {@link Zend_Pdf_Font}.
     */
    public function getFontType()
    {
        return $this->_fontType;
    }

    /**
     * Returns the specified descriptive name for the font.
     *
     * The font name type is usually one of the following:
     * <ul>
     *  <li>{@link Zend_Pdf_Font::NAME_FULL}
     *  <li>{@link Zend_Pdf_Font::NAME_FAMILY}
     *  <li>{@link Zend_Pdf_Font::NAME_PREFERRED_FAMILY}
     *  <li>{@link Zend_Pdf_Font::NAME_STYLE}
     *  <li>{@link Zend_Pdf_Font::NAME_PREFERRED_STYLE}
     *  <li>{@link Zend_Pdf_Font::NAME_DESCRIPTION}
     *  <li>{@link Zend_Pdf_Font::NAME_SAMPLE_TEXT}
     *  <li>{@link Zend_Pdf_Font::NAME_ID}
     *  <li>{@link Zend_Pdf_Font::NAME_VERSION}
     *  <li>{@link Zend_Pdf_Font::NAME_POSTSCRIPT}
     *  <li>{@link Zend_Pdf_Font::NAME_CID_NAME}
     *  <li>{@link Zend_Pdf_Font::NAME_DESIGNER}
     *  <li>{@link Zend_Pdf_Font::NAME_DESIGNER_URL}
     *  <li>{@link Zend_Pdf_Font::NAME_MANUFACTURER}
     *  <li>{@link Zend_Pdf_Font::NAME_VENDOR_URL}
     *  <li>{@link Zend_Pdf_Font::NAME_COPYRIGHT}
     *  <li>{@link Zend_Pdf_Font::NAME_TRADEMARK}
     *  <li>{@link Zend_Pdf_Font::NAME_LICENSE}
     *  <li>{@link Zend_Pdf_Font::NAME_LICENSE_URL}
     * </ul>
     *
     * Note that not all names are available for all fonts. In addition, some
     * fonts may contain additional names, whose indicies are in the range
     * 256 to 32767 inclusive, which are used for certain font layout features.
     *
     * If the preferred language translation is not available, uses the first
     * available translation for the name, which is usually English.
     *
     * If the requested name does not exist, returns null.
     *
     * All names are stored internally as Unicode strings, using UTF-16BE
     * encoding. You may optionally supply a different resulting character set.
     *
     * @param integer $nameType Type of name requested.
     * @param mixed $language Preferred language (string) or array of languages
     *   in preferred order. Use the ISO 639 standard 2-letter language codes.
     * @param string $characterSet (optional) Desired resulting character set.
     *   You may use any character set supported by {@link iconv()};
     * @return string
     */
    public function getFontName($nameType, $language, $characterSet = null)
    {
        if (! isset($this->_fontNames[$nameType])) {
            return null;
        }
        $name = null;
        if (is_array($language)) {
            foreach ($language as $code) {
                if (isset($this->_fontNames[$nameType][$code])) {
                    $name = $this->_fontNames[$nameType][$code];
                    break;
                }
            }
        } else {
            if (isset($this->_fontNames[$nameType][$language])) {
                $name = $this->_fontNames[$nameType][$language];
            }
        }
        /* If the preferred language could not be found, use whatever is first.
         */
        if (is_null($name)) {
            $names = $this->_fontNames[$nameType];
            $name  = reset($names);
        }
        /* Convert the character set if requested.
         */
        if ((! is_null($characterSet)) && ($characterSet != 'UTF-16BE') && PHP_OS != 'AIX') { // AIX knows not this charset
            $name = iconv('UTF-16BE', $characterSet, $name);
        }
        return $name;
    }

    /**
     * Returns whole set of font names.
     * 
     * @return array
     */
    public function getFontNames()
    {
        return $this->_fontNames;
    }
    
    /**
     * Returns true if font is bold.
     *
     * @return boolean
     */
    public function isBold()
    {
        return $this->_isBold;
    }

    /**
     * Returns true if font is italic.
     *
     * @return boolean
     */
    public function isItalic()
    {
        return $this->_isItalic;
    }
    
    /**
     * Returns true if font is monospace.
     *
     * @return boolean
     */
    public function isMonospace()
    {
        return $this->_isMonospace;
    }

    /**
     * Returns the suggested position below the text baseline of the underline
     * in glyph units.
     *
     * This value is usually negative.
     *
     * @return integer
     */
    public function getUnderlinePosition()
    {
        return $this->_underlinePosition;
    }

    /**
     * Returns the suggested line thickness of the underline in glyph units.
     *
     * @return integer
     */
    public function getUnderlineThickness()
    {
        return $this->_underlineThickness;
    }

    /**
     * Returns the suggested position above the text baseline of the
     * strikethrough in glyph units.
     *
     * @return integer
     */
    public function getStrikePosition()
    {
        return $this->_strikePosition;
    }

    /**
     * Returns the suggested line thickness of the strikethrough in glyph units.
     *
     * @return integer
     */
    public function getStrikeThickness()
    {
        return $this->_strikeThickness;
    }

    /**
     * Returns the number of glyph units per em.
     *
     * Used to convert glyph space to user space. Frequently used in conjunction
     * with {@link widthsForGlyphs()} to calculate the with of a run of text.
     *
     * @return integer
     */
    public function getUnitsPerEm()
    {
        return $this->_unitsPerEm;
    }

    /**
     * Returns the typographic ascent in font glyph units.
     *
     * The typographic ascent is the distance from the font's baseline to the
     * top of the text frame. It is frequently used to locate the initial
     * baseline for a paragraph of text inside a given rectangle.
     *
     * @return integer
     */
    public function getAscent()
    {
        return $this->_ascent;
    }

    /**
     * Returns the typographic descent in font glyph units.
     *
     * The typographic descent is the distance below the font's baseline to the
     * bottom of the text frame. It is always negative.
     *
     * @return integer
     */
    public function getDescent()
    {
        return $this->_descent;
    }

    /**
     * Returns the typographic line gap in font glyph units.
     *
     * The typographic line gap is the distance between the bottom of the text
     * frame of one line to the top of the text frame of the next. It is
     * typically combined with the typographical ascent and descent to determine
     * the font's total line height (or leading).
     *
     * @return integer
     */
    public function getLineGap()
    {
        return $this->_lineGap;
    }

    /**
     * Returns the suggested line height (or leading) in font glyph units.
     *
     * This value is determined by adding together the values of the typographic
     * ascent, descent, and line gap. This value yields the suggested line
     * spacing as determined by the font developer.
     *
     * It should be noted that this is only a guideline; layout engines will
     * frequently modify this value to achieve special effects such as double-
     * spacing.
     *
     * @return integer
     */
    public function getLineHeight()
    {
        return $this->_ascent - $this->_descent + $this->_lineGap;
    }


  /* Information and Conversion Methods */

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    abstract public function glyphNumbersForCharacters($characterCodes);

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    abstract public function glyphNumberForCharacter($characterCode);

    /**
     * Returns a number between 0 and 1 inclusive that indicates the percentage
     * of characters in the string which are covered by glyphs in this font.
     *
     * Since no one font will contain glyphs for the entire Unicode character
     * range, this method can be used to help locate a suitable font when the
     * actual contents of the string are not known.
     *
     * Note that some fonts lie about the characters they support. Additionally,
     * fonts don't usually contain glyphs for control characters such as tabs
     * and line breaks, so it is rare that you will get back a full 1.0 score.
     * The resulting value should be considered informational only.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source text.
     *   If omitted, uses 'current locale'.
     * @return float
     */
    abstract public function getCoveredPercentage($string, $charEncoding = '');

    /**
     * Returns the widths of the glyphs.
     *
     * The widths are expressed in the font's glyph space. You are responsible
     * for converting to user space as necessary. See {@link unitsPerEm()}.
     *
     * See also {@link widthForGlyph()}.
     *
     * @param array $glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     * @throws Zend_Pdf_Exception
     */
    abstract public function widthsForGlyphs($glyphNumbers);

    /**
     * Returns the width of the glyph.
     *
     * Like {@link widthsForGlyphs()} but used for one glyph at a time.
     *
     * @param integer $glyphNumber
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    abstract public function widthForGlyph($glyphNumber);

    /**
     * Convert string to the font encoding.
     * 
     * The method is used to prepare string for text drawing operators 
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    abstract public function encodeString($string, $charEncoding);

    /**
     * Convert string from the font encoding.
     *
     * The method is used to convert strings retrieved from existing content streams
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    abstract public function decodeString($string, $charEncoding);



  /**** Internal Methods ****/


    /**
     * If the font's glyph space is not 1000 units per em, converts the value.
     *
     * @internal
     * @param integer $value
     * @return integer
     */
    public function toEmSpace($value)
    {
        if ($this->_unitsPerEm == 1000) {
            return $value;
        }
        return ceil(($value / $this->_unitsPerEm) * 1000);    // always round up
    }
}

PKpG[ǃP�UUPdf/Resource/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';

/** Zend_Pdf_Resource */
require_once 'Zend/Pdf/Resource.php';


/**
 * Image abstraction.
 *
 * Class is named not in accordance to the name convention.
 * It's "end-user" class, but its ancestor is not.
 * Thus part of the common class name is removed.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Image extends Zend_Pdf_Resource
{
    /**
     * Object constructor.
     */
    public function __construct()
    {
        parent::__construct('');

        $this->_resource->dictionary->Type    = new Zend_Pdf_Element_Name('XObject');
        $this->_resource->dictionary->Subtype = new Zend_Pdf_Element_Name('Image');
    }
    /**
     * get the height in pixels of the image
     *
     * @return integer
     */
    abstract public function getPixelHeight();

    /**
     * get the width in pixels of the image
     *
     * @return integer
     */
    abstract public function getPixelWidth();

    /**
     * gets an associative array of information about an image
     *
     * @return array
     */
    abstract public function getProperties();
}

PKpG[]#CCPdf/Resource/Image/Png.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Resource_Image */
require_once 'Zend/Pdf/Resource/Image.php';

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';

/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';


/**
 * PNG image
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Image_Png extends Zend_Pdf_Resource_Image
{
    const PNG_COMPRESSION_DEFAULT_STRATEGY = 0;
    const PNG_COMPRESSION_FILTERED = 1;
    const PNG_COMPRESSION_HUFFMAN_ONLY = 2;
    const PNG_COMPRESSION_RLE = 3;

    const PNG_FILTER_NONE = 0;
    const PNG_FILTER_SUB = 1;
    const PNG_FILTER_UP = 2;
    const PNG_FILTER_AVERAGE = 3;
    const PNG_FILTER_PAETH = 4;

    const PNG_INTERLACING_DISABLED = 0;
    const PNG_INTERLACING_ENABLED = 1;

    const PNG_CHANNEL_GRAY = 0;
    const PNG_CHANNEL_RGB = 2;
    const PNG_CHANNEL_INDEXED = 3;
    const PNG_CHANNEL_GRAY_ALPHA = 4;
    const PNG_CHANNEL_RGB_ALPHA = 6;

    protected $_width;
    protected $_height;
    protected $_imageProperties;

    /**
     * Object constructor
     *
     * @param string $imageFileName
     * @throws Zend_Pdf_Exception
     * @todo Add compression conversions to support compression strategys other than PNG_COMPRESSION_DEFAULT_STRATEGY.
     * @todo Add pre-compression filtering.
     * @todo Add interlaced image handling.
     * @todo Add support for 16-bit images. Requires PDF version bump to 1.5 at least.
     * @todo Add processing for all PNG chunks defined in the spec. gAMA etc.
     * @todo Fix tRNS chunk support for Indexed Images to a SMask.
     */
    public function __construct($imageFileName)
    {
        if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
            throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
        }

        parent::__construct();

        //Check if the file is a PNG
        fseek($imageFile, 1, SEEK_CUR); //First signature byte (%)
        if ('PNG' != fread($imageFile, 3)) {
            throw new Zend_Pdf_Exception('Image is not a PNG');
        }
        fseek($imageFile, 12, SEEK_CUR); //Signature bytes (Includes the IHDR chunk) IHDR processed linerarly because it doesnt contain a variable chunk length
        $wtmp = unpack('Ni',fread($imageFile, 4)); //Unpack a 4-Byte Long
        $width = $wtmp['i'];
        $htmp = unpack('Ni',fread($imageFile, 4));
        $height = $htmp['i'];
        $bits = ord(fread($imageFile, 1)); //Higher than 8 bit depths are only supported in later versions of PDF.
        $color = ord(fread($imageFile, 1));

        $compression = ord(fread($imageFile, 1));
        $prefilter = ord(fread($imageFile,1));

        if (($interlacing = ord(fread($imageFile,1))) != Zend_Pdf_Resource_Image_Png::PNG_INTERLACING_DISABLED) {
            throw new Zend_Pdf_Exception( "Only non-interlaced images are currently supported." );
        }

        $this->_width = $width;
        $this->_height = $height;
        $this->_imageProperties = array();
        $this->_imageProperties['bitDepth'] = $bits;
        $this->_imageProperties['pngColorType'] = $color;
        $this->_imageProperties['pngFilterType'] = $prefilter;
        $this->_imageProperties['pngCompressionType'] = $compression;
        $this->_imageProperties['pngInterlacingType'] = $interlacing;

        fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence
        $imageData = '';

        /*
         * The following loop processes PNG chunks. 4 Byte Longs are packed first give the chunk length
         * followed by the chunk signature, a four byte code. IDAT and IEND are manditory in any PNG.
         */
        while(($chunkLengthBytes = fread($imageFile, 4)) !== false) {
            $chunkLengthtmp         = unpack('Ni', $chunkLengthBytes);
            $chunkLength            = $chunkLengthtmp['i'];
            $chunkType                      = fread($imageFile, 4);
            switch($chunkType) {
                case 'IDAT': //Image Data
                    /*
                     * Reads the actual image data from the PNG file. Since we know at this point that the compression
                     * strategy is the default strategy, we also know that this data is Zip compressed. We will either copy
                     * the data directly to the PDF and provide the correct FlateDecode predictor, or decompress the data
                     * decode the filters and output the data as a raw pixel map.
                     */
                    $imageData .= fread($imageFile, $chunkLength);
                    fseek($imageFile, 4, SEEK_CUR);
                    break;

                case 'PLTE': //Palette
                    $paletteData = fread($imageFile, $chunkLength);
                    fseek($imageFile, 4, SEEK_CUR);
                    break;

                case 'tRNS': //Basic (non-alpha channel) transparency.
                    $trnsData = fread($imageFile, $chunkLength);
                    switch ($color) {
                        case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY:
                            $baseColor = ord(substr($trnsData, 1, 1));
                            $transparencyData = array(new Zend_Pdf_Element_Numeric($baseColor), new Zend_Pdf_Element_Numeric($baseColor));
                            break;

                        case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB:
                            $red = ord(substr($trnsData,1,1));
                            $green = ord(substr($trnsData,3,1));
                            $blue = ord(substr($trnsData,5,1));
                            $transparencyData = array(new Zend_Pdf_Element_Numeric($red), new Zend_Pdf_Element_Numeric($red), new Zend_Pdf_Element_Numeric($green), new Zend_Pdf_Element_Numeric($green), new Zend_Pdf_Element_Numeric($blue), new Zend_Pdf_Element_Numeric($blue));
                            break;

                        case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED:
                            //Find the first transparent color in the index, we will mask that. (This is a bit of a hack. This should be a SMask and mask all entries values).
                            if(($trnsIdx = strpos($trnsData, chr(0))) !== false) {
                                $transparencyData = array(new Zend_Pdf_Element_Numeric($trnsIdx), new Zend_Pdf_Element_Numeric($trnsIdx));
                            }
                            break;

                        case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA:
                            // Fall through to the next case

                        case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA:
                            throw new Zend_Pdf_Exception( "tRNS chunk illegal for Alpha Channel Images" );
                            break;
                    }
                    fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence
                    break;

                case 'IEND';
                    break 2; //End the loop too

                default:
                    fseek($imageFile, $chunkLength + 4, SEEK_CUR); //Skip the section
                    break;
            }
        }
        fclose($imageFile);

        $compressed = true;
        $imageDataTmp = '';
        $smaskData = '';
        switch ($color) {
            case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB:
                $colorSpace = new Zend_Pdf_Element_Name('DeviceRGB');
                break;

            case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY:
                $colorSpace = new Zend_Pdf_Element_Name('DeviceGray');
                break;

            case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED:
                if(empty($paletteData)) {
                    throw new Zend_Pdf_Exception( "PNG Corruption: No palette data read for indexed type PNG." );
                }
                $colorSpace = new Zend_Pdf_Element_Array();
                $colorSpace->items[] = new Zend_Pdf_Element_Name('Indexed');
                $colorSpace->items[] = new Zend_Pdf_Element_Name('DeviceRGB');
                $colorSpace->items[] = new Zend_Pdf_Element_Numeric((strlen($paletteData)/3-1));
                $paletteObject = $this->_objectFactory->newObject(new Zend_Pdf_Element_String_Binary($paletteData));
                $colorSpace->items[] = $paletteObject;
                break;

            case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA:
                /*
                 * To decode PNG's with alpha data we must create two images from one. One image will contain the Gray data
                 * the other will contain the Gray transparency overlay data. The former will become the object data and the latter
                 * will become the Shadow Mask (SMask).
                 */
                if($bits > 8) {
                    throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported");
                }

                $colorSpace = new Zend_Pdf_Element_Name('DeviceGray');

                $decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1);
                $decodingStream = $decodingObjFactory->newStreamObject($imageData);
                $decodingStream->dictionary->Filter      = new Zend_Pdf_Element_Name('FlateDecode');
                $decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary();
                $decodingStream->dictionary->DecodeParms->Predictor        = new Zend_Pdf_Element_Numeric(15);
                $decodingStream->dictionary->DecodeParms->Columns          = new Zend_Pdf_Element_Numeric($width);
                $decodingStream->dictionary->DecodeParms->Colors           = new Zend_Pdf_Element_Numeric(2);   //GreyAlpha
                $decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
                $decodingStream->skipFilters();

                $pngDataRawDecoded = $decodingStream->value;

                //Iterate every pixel and copy out gray data and alpha channel (this will be slow)
                for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) {
                    $imageDataTmp .= $pngDataRawDecoded[($pixel*2)];
                    $smaskData .= $pngDataRawDecoded[($pixel*2)+1];
                }
                $compressed = false;
                $imageData  = $imageDataTmp; //Overwrite image data with the gray channel without alpha
                break;

            case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA:
                /*
                 * To decode PNG's with alpha data we must create two images from one. One image will contain the RGB data
                 * the other will contain the Gray transparency overlay data. The former will become the object data and the latter
                 * will become the Shadow Mask (SMask).
                 */
                if($bits > 8) {
                    throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported");
                }

                $colorSpace = new Zend_Pdf_Element_Name('DeviceRGB');

                $decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1);
                $decodingStream = $decodingObjFactory->newStreamObject($imageData);
                $decodingStream->dictionary->Filter      = new Zend_Pdf_Element_Name('FlateDecode');
                $decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary();
                $decodingStream->dictionary->DecodeParms->Predictor        = new Zend_Pdf_Element_Numeric(15);
                $decodingStream->dictionary->DecodeParms->Columns          = new Zend_Pdf_Element_Numeric($width);
                $decodingStream->dictionary->DecodeParms->Colors           = new Zend_Pdf_Element_Numeric(4);   //RGBA
                $decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
                $decodingStream->skipFilters();

                $pngDataRawDecoded = $decodingStream->value;

                //Iterate every pixel and copy out rgb data and alpha channel (this will be slow)
                for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) {
                    $imageDataTmp .= $pngDataRawDecoded[($pixel*4)+0] . $pngDataRawDecoded[($pixel*4)+1] . $pngDataRawDecoded[($pixel*4)+2];
                    $smaskData .= $pngDataRawDecoded[($pixel*4)+3];
                }

                $compressed = false;
                $imageData  = $imageDataTmp; //Overwrite image data with the RGB channel without alpha
                break;

            default:
                throw new Zend_Pdf_Exception( "PNG Corruption: Invalid color space." );
        }

        if(empty($imageData)) {
            throw new Zend_Pdf_Exception( "Corrupt PNG Image. Mandatory IDAT chunk not found." );
        }

        $imageDictionary = $this->_resource->dictionary;
        if(!empty($smaskData)) {
            /*
             * Includes the Alpha transparency data as a Gray Image, then assigns the image as the Shadow Mask for the main image data.
             */
            $smaskStream = $this->_objectFactory->newStreamObject($smaskData);
            $smaskStream->dictionary->Type = new Zend_Pdf_Element_Name('XObject');
            $smaskStream->dictionary->Subtype = new Zend_Pdf_Element_Name('Image');
            $smaskStream->dictionary->Width = new Zend_Pdf_Element_Numeric($width);
            $smaskStream->dictionary->Height = new Zend_Pdf_Element_Numeric($height);
            $smaskStream->dictionary->ColorSpace = new Zend_Pdf_Element_Name('DeviceGray');
            $smaskStream->dictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
            $imageDictionary->SMask = $smaskStream;

            // Encode stream with FlateDecode filter
            $smaskStreamDecodeParms = array();
            $smaskStreamDecodeParms['Predictor']        = new Zend_Pdf_Element_Numeric(15);
            $smaskStreamDecodeParms['Columns']          = new Zend_Pdf_Element_Numeric($width);
            $smaskStreamDecodeParms['Colors']           = new Zend_Pdf_Element_Numeric(1);
            $smaskStreamDecodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric(8);
            $smaskStream->dictionary->DecodeParms  = new Zend_Pdf_Element_Dictionary($smaskStreamDecodeParms);
            $smaskStream->dictionary->Filter       = new Zend_Pdf_Element_Name('FlateDecode');
        }

        if(!empty($transparencyData)) {
            //This is experimental and not properly tested.
            $imageDictionary->Mask = new Zend_Pdf_Element_Array($transparencyData);
        }

        $imageDictionary->Width            = new Zend_Pdf_Element_Numeric($width);
        $imageDictionary->Height           = new Zend_Pdf_Element_Numeric($height);
        $imageDictionary->ColorSpace       = $colorSpace;
        $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
        $imageDictionary->Filter       = new Zend_Pdf_Element_Name('FlateDecode');

        $decodeParms = array();
        $decodeParms['Predictor']        = new Zend_Pdf_Element_Numeric(15); // Optimal prediction
        $decodeParms['Columns']          = new Zend_Pdf_Element_Numeric($width);
        $decodeParms['Colors']           = new Zend_Pdf_Element_Numeric((($color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB || $color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA)?(3):(1)));
        $decodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric($bits);
        $imageDictionary->DecodeParms  = new Zend_Pdf_Element_Dictionary($decodeParms);

        //Include only the image IDAT section data.
        $this->_resource->value = $imageData;

        //Skip double compression
        if ($compressed) {
            $this->_resource->skipFilters();
        }
    }

    /**
     * Image width
     */
    public function getPixelWidth() {
    return $this->_width;
    }

    /**
     * Image height
     */
    public function getPixelHeight() {
        return $this->_height;
    }

    /**
     * Image properties
     */
    public function getProperties() {
        return $this->_imageProperties;
    }
}
PKpG[�v��

Pdf/Resource/Image/Jpeg.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Resource_Image */
require_once 'Zend/Pdf/Resource/Image.php';

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';


/**
 * JPEG image
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Image_Jpeg extends Zend_Pdf_Resource_Image
{

    protected $_width;
    protected $_height;
    protected $_imageProperties;

    /**
     * Object constructor
     *
     * @param string $imageFileName
     * @throws Zend_Pdf_Exception
     */
    public function __construct($imageFileName)
    {
        if (!function_exists('gd_info')) {
            throw new Zend_Pdf_Exception('Image extension is not installed.');
        }

        $gd_options = gd_info();
        if (!$gd_options['JPG Support'] ) {
            throw new Zend_Pdf_Exception('JPG support is not configured properly.');
        }

        if (($imageInfo = getimagesize($imageFileName)) === false) {
            throw new Zend_Pdf_Exception('Corrupted image or image doesn\'t exist.');
        }
        if ($imageInfo[2] != IMAGETYPE_JPEG && $imageInfo[2] != IMAGETYPE_JPEG2000) {
            throw new Zend_Pdf_Exception('ImageType is not JPG');
        }

        parent::__construct();

        switch ($imageInfo['channels']) {
            case 3:
                $colorSpace = 'DeviceRGB';
                break;
            case 4:
                $colorSpace = 'DeviceCMYK';
                break;
            default:
                $colorSpace = 'DeviceGray';
                break;
        }

        $imageDictionary = $this->_resource->dictionary;
        $imageDictionary->Width            = new Zend_Pdf_Element_Numeric($imageInfo[0]);
        $imageDictionary->Height           = new Zend_Pdf_Element_Numeric($imageInfo[1]);
        $imageDictionary->ColorSpace       = new Zend_Pdf_Element_Name($colorSpace);
        $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($imageInfo['bits']);
        if ($imageInfo[2] == IMAGETYPE_JPEG) {
            $imageDictionary->Filter       = new Zend_Pdf_Element_Name('DCTDecode');
        } else if ($imageInfo[2] == IMAGETYPE_JPEG2000){
            $imageDictionary->Filter       = new Zend_Pdf_Element_Name('JPXDecode');
        }

        if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
            throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
        }
        $byteCount = filesize($imageFileName);
        $this->_resource->value = '';
        while ( $byteCount > 0 && ($nextBlock = fread($imageFile, $byteCount)) != false ) {
            $this->_resource->value .= $nextBlock;
            $byteCount -= strlen($nextBlock);
        }
        fclose($imageFile);
        $this->_resource->skipFilters();

    $this->_width = $imageInfo[0];
    $this->_height = $imageInfo[1];
    $this->_imageProperties = array();
    $this->_imageProperties['bitDepth'] = $imageInfo['bits'];
    $this->_imageProperties['jpegImageType'] = $imageInfo[2];
    $this->_imageProperties['jpegColorType'] = $imageInfo['channels'];
    }

    /**
     * Image width
     */
    public function getPixelWidth() {
        return $this->_width;
    }

    /**
     * Image height
     */
    public function getPixelHeight() {
        return $this->_height;
    }

    /**
     * Image properties
     */
    public function getProperties() {
        return $this->_imageProperties;
    }
}

PKpG[eh��RRPdf/Resource/Image/Tiff.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Resource_Image */
require_once 'Zend/Pdf/Resource/Image.php';

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';


/**
 * TIFF image
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Image_Tiff extends Zend_Pdf_Resource_Image
{
    const TIFF_FIELD_TYPE_BYTE=1;
    const TIFF_FIELD_TYPE_ASCII=2;
    const TIFF_FIELD_TYPE_SHORT=3;
    const TIFF_FIELD_TYPE_LONG=4;
    const TIFF_FIELD_TYPE_RATIONAL=5;

    const TIFF_TAG_IMAGE_WIDTH=256;
    const TIFF_TAG_IMAGE_LENGTH=257; //Height
    const TIFF_TAG_BITS_PER_SAMPLE=258;
    const TIFF_TAG_COMPRESSION=259;
    const TIFF_TAG_PHOTOMETRIC_INTERPRETATION=262;
    const TIFF_TAG_STRIP_OFFSETS=273;
    const TIFF_TAG_SAMPLES_PER_PIXEL=277;
    const TIFF_TAG_STRIP_BYTE_COUNTS=279;

    const TIFF_COMPRESSION_UNCOMPRESSED = 1;
    const TIFF_COMPRESSION_CCITT1D = 2;
    const TIFF_COMPRESSION_GROUP_3_FAX = 3;
    const TIFF_COMPRESSION_GROUP_4_FAX  = 4;
    const TIFF_COMPRESSION_LZW = 5;
    const TIFF_COMPRESSION_JPEG = 6;
    const TIFF_COMPRESSION_FLATE = 8;
    const TIFF_COMPRESSION_FLATE_OBSOLETE_CODE = 32946;
    const TIFF_COMPRESSION_PACKBITS = 32773;

    const TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO=0;
    const TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO=1;
    const TIFF_PHOTOMETRIC_INTERPRETATION_RGB=2;
    const TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED=3;
    const TIFF_PHOTOMETRIC_INTERPRETATION_CMYK=5;
    const TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR=6;
    const TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB=8;

    protected $_width;
    protected $_height;
    protected $_imageProperties;
    protected $_endianType;
    protected $_fileSize;
    protected $_bitsPerSample;
    protected $_compression;
    protected $_filter;
    protected $_colorCode;
    protected $_whiteIsZero;
    protected $_blackIsZero;
    protected $_colorSpace;
    protected $_imageDataOffset;
    protected $_imageDataLength;

    const TIFF_ENDIAN_BIG=0;
    const TIFF_ENDIAN_LITTLE=1;

    const UNPACK_TYPE_BYTE=0;
    const UNPACK_TYPE_SHORT=1;
    const UNPACK_TYPE_LONG=2;
    const UNPACK_TYPE_RATIONAL=3;

    /**
     * Byte unpacking function
     *
     * Makes it possible to unpack bytes in one statement for enhanced logic readability.
     *
     * @param int $type
     * @param string $bytes
     * @throws Zend_Pdf_Exception
     */
    protected function unpackBytes($type, $bytes) {
        if(!isset($this->_endianType)) {
            throw new Zend_Pdf_Exception("The unpackBytes function can only be used after the endianness of the file is known");
        }
        switch($type) {
            case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE:
                $format = 'C';
                $unpacked = unpack($format, $bytes);
                return $unpacked[1];
                break;
            case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT:
                $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'v':'n';
                $unpacked = unpack($format, $bytes);
                return $unpacked[1];
                break;
            case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG:
                $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V':'N';
                $unpacked = unpack($format, $bytes);
                return $unpacked[1];
                break;
            case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_RATIONAL:
                $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V2':'N2';
                $unpacked = unpack($format, $bytes);
                return ($unpacked[1]/$unpacked[2]);
                break;
        }
    }

    /**
     * Object constructor
     *
     * @param string $imageFileName
     * @throws Zend_Pdf_Exception
     */
    public function __construct($imageFileName)
    {
        if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
            throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
        }

        $byteOrderIndicator = fread($imageFile, 2);
        if($byteOrderIndicator == 'II') {
            $this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE;
        } else if($byteOrderIndicator == 'MM') {
            $this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_BIG;
        } else {
            throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. No byte order indication found" );
        }

        $version = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));

        if($version != 42) {
            throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. Incorrect version number." );
        }
        $ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));

        $fileStats = fstat($imageFile);
        $this->_fileSize = $fileStats['size'];

        /*
         * Tiff files are stored as a series of Image File Directories (IFD) each direcctory
         * has a specific number of entries each 12 bytes in length. At the end of the directories
         * is four bytes pointing to the offset of the next IFD.
         */

        while($ifdOffset > 0) {
            if(fseek($imageFile, $ifdOffset, SEEK_SET) == -1 || $ifdOffset+2 >= $this->_fileSize) {
                throw new Zend_Pdf_Exception("Could not seek to the image file directory as indexed by the file. Likely cause is TIFF corruption. Offset: ". $ifdOffset);
            }

            $numDirEntries = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));

            /*
             * Since we now know how many entries are in this (IFD) we can extract the data.
             * The format of a TIFF directory entry is:
             *
             * 2 bytes (short) tag code; See TIFF_TAG constants at the top for supported values. (There are many more in the spec)
             * 2 bytes (short) field type
             * 4 bytes (long) number of values, or value count.
             * 4 bytes (mixed) data if the data will fit into 4 bytes or an offset if the data is too large.
             */
            for($dirEntryIdx = 1; $dirEntryIdx <= $numDirEntries; $dirEntryIdx++) {
                $tag         = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
                $fieldType   = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
                $valueCount  = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));

                switch($fieldType) {
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE:
                        $fieldLength = $valueCount;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII:
                        $fieldLength = $valueCount;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT:
                        $fieldLength = $valueCount * 2;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG:
                        $fieldLength = $valueCount * 4;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_RATIONAL:
                        $fieldLength = $valueCount * 8;
                        break;
                    default:
                        $fieldLength = $valueCount;
                }

                $offsetBytes = fread($imageFile, 4);

                if($fieldLength <= 4) {
                    switch($fieldType) {
                        case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE:
                            $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE, $offsetBytes);
                            break;
                        case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII:
                            //Fall through to next case
                        case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG:
                            $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes);
                            break;
                        case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT:
                            //Fall through to next case
                        default:
                            $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, $offsetBytes);
                    }
                } else {
                    $refOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes);
                }
                /*
                 * Linear tag processing is probably not the best way to do this. I've processed the tags according to the
                 * Tiff 6 specification and make some assumptions about when tags will be < 4 bytes and fit into $value and when
                 * they will be > 4 bytes and require seek/extraction of the offset. Same goes for extracting arrays of data, like
                 * the data offsets and length. This should be fixed in the future.
                 */
                switch($tag) {
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_WIDTH:
                        $this->_width = $value;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_LENGTH:
                        $this->_height = $value;
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_BITS_PER_SAMPLE:
                        if($valueCount>1) {
                            $fp = ftell($imageFile);
                            fseek($imageFile, $refOffset, SEEK_SET);
                            $this->_bitsPerSample = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
                            fseek($imageFile, $fp, SEEK_SET);
                        } else {
                            $this->_bitsPerSample = $value;
                        }
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_COMPRESSION:
                        $this->_compression = $value;
                        switch($value) {
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_UNCOMPRESSED:
                                $this->_filter = 'None';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_CCITT1D:
                                //Fall through to next case
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_3_FAX:
                                //Fall through to next case
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_4_FAX:
                                $this->_filter = 'CCITTFaxDecode';
                                throw new Zend_Pdf_Exception("CCITTFaxDecode Compression Mode Not Currently Supported");
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_LZW:
                                $this->_filter = 'LZWDecode';
                                throw new Zend_Pdf_Exception("LZWDecode Compression Mode Not Currently Supported");
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_JPEG:
                                $this->_filter = 'DCTDecode'; //Should work, doesnt...
                throw new Zend_Pdf_Exception("JPEG Compression Mode Not Currently Supported");
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE:
                                //fall through to next case
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE_OBSOLETE_CODE:
                                $this->_filter = 'FlateDecode';
                throw new Zend_Pdf_Exception("ZIP/Flate Compression Mode Not Currently Supported");
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_PACKBITS:
                                $this->_filter = 'RunLengthDecode';
                                break;
                        }
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_PHOTOMETRIC_INTERPRETATION:
                        $this->_colorCode = $value;
                        $this->_whiteIsZero = false;
                        $this->_blackIsZero = false;
                        switch($value) {
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO:
                                $this->_whiteIsZero = true;
                                $this->_colorSpace = 'DeviceGray';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO:
                                $this->_blackIsZero = true;
                                $this->_colorSpace = 'DeviceGray';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR:
                                //fall through to next case
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB:
                                $this->_colorSpace = 'DeviceRGB';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED:
                                $this->_colorSpace = 'Indexed';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CMYK:
                                $this->_colorSpace = 'DeviceCMYK';
                                break;
                            case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB:
                                $this->_colorSpace = 'Lab';
                                break;
                            default:
                                throw new Zend_Pdf_Exception('TIFF: Unknown or Unsupported Color Type: '. $value);
                        }
                        break;
                    case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_OFFSETS:
                        if($valueCount>1) {
                            $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*';
                            $fp = ftell($imageFile);
                            fseek($imageFile, $refOffset, SEEK_SET);
                            $stripOffsetsBytes = fread($imageFile, $fieldLength);
                            $this->_imageDataOffset = unpack($format, $stripOffsetsBytes);
                            fseek($imageFile, $fp, SEEK_SET);
                        } else {
                            $this->_imageDataOffset = $value;
                        }
                        break;
                   case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_BYTE_COUNTS:
                        if($valueCount>1) {
                            $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*';
                            $fp = ftell($imageFile);
                            fseek($imageFile, $refOffset, SEEK_SET);
                            $stripByteCountsBytes = fread($imageFile, $fieldLength);
                            $this->_imageDataLength = unpack($format, $stripByteCountsBytes);
                            fseek($imageFile, $fp, SEEK_SET);
                        } else {
                            $this->_imageDataLength = $value;
                        }
                        break;
                    default:
                        //For debugging. It should be harmless to ignore unknown tags, though there is some good info in them.
                        //echo "Unknown tag detected: ". $tag . " value: ". $value;
                }
            }
            $ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));
        }

        if(!isset($this->_imageDataOffset) || !isset($this->_imageDataLength)) {
            throw new Zend_Pdf_Exception("TIFF: The image processed did not contain image data as expected.");
        }

        $imageDataBytes = '';
        if(is_array($this->_imageDataOffset)) {
            if(!is_array($this->_imageDataLength)) {
                throw new Zend_Pdf_Exception("TIFF: The image contained multiple data offsets but not multiple data lengths. Tiff may be corrupt.");
            }
            foreach($this->_imageDataOffset as $idx => $offset) {
                fseek($imageFile, $this->_imageDataOffset[$idx], SEEK_SET);
                $imageDataBytes .= fread($imageFile, $this->_imageDataLength[$idx]);
            }
        } else {
            fseek($imageFile, $this->_imageDataOffset, SEEK_SET);
            $imageDataBytes = fread($imageFile, $this->_imageDataLength);
        }
        if($imageDataBytes === '') {
            throw new Zend_Pdf_Exception("TIFF: No data. Image Corruption");
        }

        fclose($imageFile);

        parent::__construct();

        $imageDictionary = $this->_resource->dictionary;
        if(!isset($this->_width) || !isset($this->_width)) {
            throw new Zend_Pdf_Exception("Problem reading tiff file. Tiff is probably corrupt.");
        }

        $this->_imageProperties = array();
        $this->_imageProperties['bitDepth'] = $this->_bitsPerSample;
        $this->_imageProperties['fileSize'] = $this->_fileSize;
        $this->_imageProperties['TIFFendianType'] = $this->_endianType;
        $this->_imageProperties['TIFFcompressionType'] = $this->_compression;
        $this->_imageProperties['TIFFwhiteIsZero'] = $this->_whiteIsZero;
        $this->_imageProperties['TIFFblackIsZero'] = $this->_blackIsZero;
        $this->_imageProperties['TIFFcolorCode'] = $this->_colorCode;
        $this->_imageProperties['TIFFimageDataOffset'] = $this->_imageDataOffset;
        $this->_imageProperties['TIFFimageDataLength'] = $this->_imageDataLength;
        $this->_imageProperties['PDFfilter'] = $this->_filter;
        $this->_imageProperties['PDFcolorSpace'] = $this->_colorSpace;

        $imageDictionary->Width            = new Zend_Pdf_Element_Numeric($this->_width);
        if($this->_whiteIsZero === true) {
            $imageDictionary->Decode       = new Zend_Pdf_Element_Array(array(new Zend_Pdf_Element_Numeric(1), new Zend_Pdf_Element_Numeric(0)));
        }
        $imageDictionary->Height           = new Zend_Pdf_Element_Numeric($this->_height);
        $imageDictionary->ColorSpace       = new Zend_Pdf_Element_Name($this->_colorSpace);
        $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($this->_bitsPerSample);
        if(isset($this->_filter) && $this->_filter != 'None') {
            $imageDictionary->Filter = new Zend_Pdf_Element_Name($this->_filter);
        }

        $this->_resource->value = $imageDataBytes;
        $this->_resource->skipFilters();
    }
    /**
     * Image width (defined in Zend_Pdf_Resource_Image_Interface)
     */
    public function getPixelWidth() {
        return $this->_width;
    }

    /**
     * Image height (defined in Zend_Pdf_Resource_Image_Interface)
     */
    public function getPixelHeight() {
        return $this->_height;
    }

    /**
     * Image properties (defined in Zend_Pdf_Resource_Image_Interface)
     */
    public function getProperties() {
        return $this->_imageProperties;
    }
}

PKpG[Ys��&�&Pdf/Resource/Font/Extracted.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';



/**
 * Extracted fonts implementation
 * 
 * Thes class allows to extract fonts already mentioned within PDF document and use them
 * for text drawing.
 * 
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Extracted extends Zend_Pdf_Resource_Font
{
    /**
     * Extracted font encoding
     * 
     * Only 'Identity-H' and 'WinAnsiEncoding' encodings are supported now
     * 
     * @var string
     */
    protected $_encoding = null;
    
    /**
     * Object constructor
     * 
     * $fontDictionary is a Zend_Pdf_Element_Reference or Zend_Pdf_Element_Object object
     *
     * @param mixed $fontDictionary
     * @throws Zend_Pdf_Exception
     */
    public function __construct($fontDictionary)
    {
        // Extract object factory and resource object from font dirctionary object 
        $this->_objectFactory = $fontDictionary->getFactory();
        $this->_resource      = $fontDictionary;
        
        if ($fontDictionary->Encoding !== null) {
            $this->_encoding = $fontDictionary->Encoding->value;
        } 

        switch ($fontDictionary->Subtype->value) {
            case 'Type0':
                // Composite type 0 font
                if ($fontDictionary->DescendantFonts->items->count() != 1) {
                    // Multiple descendant fonts are not supported
                    throw new Zend_Pdf_Exception('Unsupported font type.');
                }
                
                $descFontsArrayItems = $fontDictionary->DescendantFonts->items; 
                $descFontsArrayItems->rewind();
                
                $descendantFont = $descFontsArrayItems->current();
                $fontDescriptor = $descendantFont->FontDescriptor;
                break;
                
            case 'Type1':
                if ($fontDictionary->FontDescriptor === null) {
                    // That's one of the standard fonts
                    $standardFont = Zend_Pdf_Font::fontWithName($fontDictionary->BaseFont->value);
                    
                    $this->_fontNames          = $standardFont->getFontNames();
                    $this->_isBold             = $standardFont->isBold();  
                    $this->_isItalic           = $standardFont->isItalic();
                    $this->_isMonospace        = $standardFont->isMonospace();
                    $this->_underlinePosition  = $standardFont->getUnderlinePosition();
                    $this->_underlineThickness = $standardFont->getUnderlineThickness();
                    $this->_strikePosition     = $standardFont->getStrikePosition();
                    $this->_strikeThickness    = $standardFont->getStrikeThickness();
                    $this->_unitsPerEm         = $standardFont->getUnitsPerEm();
                    $this->_ascent             = $standardFont->getAscent();
                    $this->_descent            = $standardFont->getDescent();
                    $this->_lineGap            = $standardFont->getLineGap();

                    return;
                }

                $fontDescriptor = $fontDictionary->FontDescriptor;
                break;

            case 'TrueType':
                $fontDescriptor = $fontDictionary->FontDescriptor;
                break;
                
            default:
                throw new Zend_Pdf_Exception('Unsupported font type.'); 
        }

        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = iconv('UTF-8', 'UTF-16BE', $fontDictionary->BaseFont->value);
        
        $this->_isBold             = false; // this property is actually not used anywhere 
        $this->_isItalic           = ( ($fontDescriptor->Flags->value & (1 << 6)) != 0 ); // Bit-7 is set
        $this->_isMonospace        = ( ($fontDescriptor->Flags->value & (1 << 0)) != 0 ); // Bit-1 is set
        $this->_underlinePosition  = null; // Can't be extracted
        $this->_underlineThickness = null; // Can't be extracted
        $this->_strikePosition     = null; // Can't be extracted
        $this->_strikeThickness    = null; // Can't be extracted
        $this->_unitsPerEm         = null; // Can't be extracted
        $this->_ascent             = $fontDescriptor->Ascent->value;
        $this->_descent            = $fontDescriptor->Descent->value;
        $this->_lineGap            = null; // Can't be extracted
    }

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        throw new Zend_Pdf_Exception('Operation is not supported for extracted fonts');
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        throw new Zend_Pdf_Exception('Operation is not supported for extracted fonts');
    }

    /**
     * Returns a number between 0 and 1 inclusive that indicates the percentage
     * of characters in the string which are covered by glyphs in this font.
     *
     * Since no one font will contain glyphs for the entire Unicode character
     * range, this method can be used to help locate a suitable font when the
     * actual contents of the string are not known.
     *
     * Note that some fonts lie about the characters they support. Additionally,
     * fonts don't usually contain glyphs for control characters such as tabs
     * and line breaks, so it is rare that you will get back a full 1.0 score.
     * The resulting value should be considered informational only.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source text.
     *   If omitted, uses 'current locale'.
     * @return float
     */
    public function getCoveredPercentage($string, $charEncoding = '')
    {
        throw new Zend_Pdf_Exception('Operation is not supported for extracted fonts');
    }

    /**
     * Returns the widths of the glyphs.
     *
     * The widths are expressed in the font's glyph space. You are responsible
     * for converting to user space as necessary. See {@link unitsPerEm()}.
     *
     * See also {@link widthForGlyph()}.
     *
     * @param array $glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     * @throws Zend_Pdf_Exception
     */
    public function widthsForGlyphs($glyphNumbers)
    {
        throw new Zend_Pdf_Exception('Operation is not supported for extracted fonts');
    }

    /**
     * Returns the width of the glyph.
     *
     * Like {@link widthsForGlyphs()} but used for one glyph at a time.
     *
     * @param integer $glyphNumber
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function widthForGlyph($glyphNumber)
    {
        throw new Zend_Pdf_Exception('Operation is not supported for extracted fonts');
    }
    
    /**
     * Convert string to the font encoding.
     * 
     * The method is used to prepare string for text drawing operators 
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        if ($this->_encoding == 'Identity-H') {
            return iconv($charEncoding, 'UTF-16BE', $string);
        }
        
        if ($this->_encoding == 'WinAnsiEncoding') {
            return iconv($charEncoding, 'CP1252//IGNORE', $string);
        }
        
        throw new Zend_Pdf_Exception('Fonf encoding is not supported');
    }

    /**
     * Convert string from the font encoding.
     *
     * The method is used to convert strings retrieved from existing content streams
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    public function decodeString($string, $charEncoding)
    {
        if ($this->_encoding == 'Identity-H') {
            return iconv('UTF-16BE', $charEncoding, $string);
        }
        
        if ($this->_encoding == 'WinAnsiEncoding') {
            return iconv('CP1252', $charEncoding, $string);
        }
        
        throw new Zend_Pdf_Exception('Fonf encoding is not supported');
    }
}
PKpG[+�9�&�&Pdf/Resource/Font/Simple.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';



/**
 * Adobe PDF Simple fonts implementation
 * 
 * PDF simple fonts functionality is presented by Adobe Type 1 
 * (including standard PDF Type1 built-in fonts) and TrueType fonts support.
 *
 * Both fonts have the following properties:
 * - Glyphs in the font are selected by single-byte character codes obtained from a
 *   string that is shown by the text-showing operators. Logically, these codes index
 *   into a table of 256 glyphs; the mapping from codes to glyphs is called the font’s
 *   encoding.
 *   PDF specification provides a possibility to specify any user defined encoding in addition
 *   to the standard built-in encodings: Standard-Encoding, MacRomanEncoding, WinAnsiEncoding, 
 *   and PDFDocEncoding, but Zend_Pdf simple fonts implementation operates only with 
 *   Windows ANSI encoding (except Symbol and ZapfDingbats built-in fonts).
 *
 * - Each glyph has a single set of metrics, including a horizontal displacement or
 *   width. That is, simple fonts support only horizontal writing mode.
 *
 * 
 * The code in this class is common to both types. However, you will only deal
 * directly with subclasses.
 * 
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Font_Simple extends Zend_Pdf_Resource_Font
{
    /**
     * Object representing the font's cmap (character to glyph map).
     * @var Zend_Pdf_Cmap
     */
    protected $_cmap = null;

    /**
     * Array containing the widths of each of the glyphs contained in the font.
     *
     * Keys are integers starting from 0, which coresponds to Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH.
     *
     * Font character map may contain gaps for actually used glyphs, nevertheless glyphWidths array
     * contains widths for all glyphs even they are unused.
     *
     * @var array
     */
    protected $_glyphWidths = null;

    /**
     * Width for glyphs missed in the font
     * 
     * Note: Adobe PDF specfication (V1.4 - V1.6) doesn't define behavior for rendering
     * characters missed in the standard PDF fonts (such us 0x7F (DEL) Windows ANSI code)
     * Adobe Font Metrics files doesn't also define metrics for "missed glyph".
     * We provide character width as "0" for this case, but actually it depends on PDF viewer
     * implementation. 
     *
     * @var integer
     */
    protected $_missingGlyphWidth = 0;


    /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     *
     */
    public function __construct()
    {
        parent::__construct();

        /**
         * @todo
         * It's easy to add other encodings support now (Standard-Encoding, MacRomanEncoding, 
         * PDFDocEncoding, MacExpertEncoding, Symbol, and ZapfDingbats).
         * Steps for the implementation:
         * - completely describe all PDF single byte encodings in the documentation
         * - implement non-WinAnsi encodings processing into encodeString()/decodeString() methods
         * 
         * These encodings will be automatically supported for standard builtin PDF fonts as well 
         * as for external fonts.
         */
        $this->_resource->Encoding = new Zend_Pdf_Element_Name('WinAnsiEncoding');
    }

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        return $this->_cmap->glyphNumbersForCharacters($characterCodes);
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        return $this->_cmap->glyphNumberForCharacter($characterCode);
    }

    /**
     * Returns a number between 0 and 1 inclusive that indicates the percentage
     * of characters in the string which are covered by glyphs in this font.
     *
     * Since no one font will contain glyphs for the entire Unicode character
     * range, this method can be used to help locate a suitable font when the
     * actual contents of the string are not known.
     *
     * Note that some fonts lie about the characters they support. Additionally,
     * fonts don't usually contain glyphs for control characters such as tabs
     * and line breaks, so it is rare that you will get back a full 1.0 score.
     * The resulting value should be considered informational only.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source text.
     *   If omitted, uses 'current locale'.
     * @return float
     */
    public function getCoveredPercentage($string, $charEncoding = '')
    {
        /* Convert the string to UTF-16BE encoding so we can match the string's
         * character codes to those found in the cmap.
         */
        if ($charEncoding != 'UTF-16BE') {
            if (PHP_OS != 'AIX') { // AIX doesnt know what UTF-16BE is
                $string = iconv($charEncoding, 'UTF-16BE', $string);
            }
        }

        $charCount = (PHP_OS != 'AIX') ? iconv_strlen($string, 'UTF-16BE') : strlen($string);
        if ($charCount == 0) {
            return 0;
        }

        /* Fetch the covered character code list from the font's cmap.
         */
        $coveredCharacters = $this->_cmap->getCoveredCharacters();

        /* Calculate the score by doing a lookup for each character.
         */
        $score = 0;
        $maxIndex = strlen($string);
        for ($i = 0; $i < $maxIndex; $i++) {
            /**
             * @todo Properly handle characters encoded as surrogate pairs.
             */
            $charCode = (ord($string[$i]) << 8) | ord($string[++$i]);
            /* This could probably be optimized a bit with a binary search...
             */
            if (in_array($charCode, $coveredCharacters)) {
                $score++;
            }
        }
        return $score / $charCount;
    }

    /**
     * Returns the widths of the glyphs.
     *
     * The widths are expressed in the font's glyph space. You are responsible
     * for converting to user space as necessary. See {@link unitsPerEm()}.
     *
     * See also {@link widthForGlyph()}.
     *
     * @param array &$glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     */
    public function widthsForGlyphs($glyphNumbers)
    {
        $widths = array();
        foreach ($glyphNumbers as $key => $glyphNumber) {
            if (!isset($this->_glyphWidths[$glyphNumber])) {
                $widths[$key] = $this->_missingGlyphWidth;
            } else {
                $widths[$key] = $this->_glyphWidths[$glyphNumber];
            }
        }
        return $widths;
    }

    /**
     * Returns the width of the glyph.
     *
     * Like {@link widthsForGlyphs()} but used for one glyph at a time.
     *
     * @param integer $glyphNumber
     * @return integer
     */
    public function widthForGlyph($glyphNumber)
    {
        if (!isset($this->_glyphWidths[$glyphNumber])) {
            return $this->_missingGlyphWidth;
        }
        return $this->_glyphWidths[$glyphNumber];
    }

    /**
     * Convert string to the font encoding.
     * 
     * The method is used to prepare string for text drawing operators 
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        if (PHP_OS == 'AIX') {
            return $string; // returning here b/c AIX doesnt know what CP1252 is
        }
        
        return iconv($charEncoding, 'CP1252//IGNORE', $string);
    }

    /**
     * Convert string from the font encoding.
     *
     * The method is used to convert strings retrieved from existing content streams
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    public function decodeString($string, $charEncoding)
    {
        return iconv('CP1252', $charEncoding, $string);
    }
}
PKpG[U��I
I
&Pdf/Resource/Font/CidFont/TrueType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_CidFont */
require_once 'Zend/Pdf/Resource/Font/CidFont.php';

/** Zend_Pdf_Resource_Font_FontDescriptor */
require_once 'Zend/Pdf/Resource/Font/FontDescriptor.php';


/**
 * Type 2 CIDFonts implementation
 *
 * For Type 2, the CIDFont program is actually a TrueType font program, which has
 * no native notion of CIDs. In a TrueType font program, glyph descriptions are
 * identified by glyph index values. Glyph indices are internal to the font and are not
 * defined consistently from one font to another. Instead, a TrueType font program
 * contains a 'cmap' table that provides mappings directly from character codes to
 * glyph indices for one or more predefined encodings.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_CidFont_TrueType extends Zend_Pdf_Resource_Font_CidFont
{
    /**
     * Object constructor
     * 
     * @todo Joing this class with Zend_Pdf_Resource_Font_Simple_Parsed_TrueType 
     *
     * @param Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser Font parser
     *   object containing parsed TrueType file.
     * @param integer $embeddingOptions Options for font embedding.
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser, $embeddingOptions)
    {
        parent::__construct($fontParser, $embeddingOptions);

        $this->_fontType = Zend_Pdf_Font::TYPE_CIDFONT_TYPE_2;

        $this->_resource->Subtype  = new Zend_Pdf_Element_Name('CIDFontType2');
        
        $fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions);
        $this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor);

        /* Prepare CIDToGIDMap */
        // Initialize 128K string of null characters (65536 2 byte integers)
        $cidToGidMapData = str_repeat("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 8192);
        // Fill the index
        $charGlyphs = $this->_cmap->getCoveredCharactersGlyphs();
        foreach ($charGlyphs as $charCode => $glyph) {
            $cidToGidMapData[$charCode*2    ] = chr($glyph >> 8);
            $cidToGidMapData[$charCode*2 + 1] = chr($glyph & 0xFF);
        }
        // Store CIDToGIDMap within compressed stream object
        $cidToGidMap = $this->_objectFactory->newStreamObject($cidToGidMapData);
        $cidToGidMap->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
        $this->_resource->CIDToGIDMap = $cidToGidMap;
    }

}
PKpG[��cXIXIPdf/Resource/Font/CidFont.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_FileParser_Font_OpenType */
require_once 'Zend/Pdf/FileParser/Font/OpenType.php';

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';



/**
 * Adobe PDF CIDFont font object implementation
 * 
 * A CIDFont program contains glyph descriptions that are accessed using a CID as
 * the character selector. There are two types of CIDFont. A Type 0 CIDFont contains
 * glyph descriptions based on Adobe’s Type 1 font format, whereas those in a
 * Type 2 CIDFont are based on the TrueType font format.
 *
 * A CIDFont dictionary is a PDF object that contains information about a CIDFont program. 
 * Although its Type value is Font, a CIDFont is not actually a font. It does not have an Encoding 
 * entry, it cannot be listed in the Font subdictionary of a resource dictionary, and it cannot be 
 * used as the operand of the Tf operator. It is used only as a descendant of a Type 0 font. 
 * The CMap in the Type 0 font is what defines the encoding that maps character codes to CIDs 
 * in the CIDFont. 
 * 
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Font_CidFont extends Zend_Pdf_Resource_Font
{
    /**
     * Object representing the font's cmap (character to glyph map).
     * @var Zend_Pdf_Cmap
     */
    protected $_cmap = null;

    /**
     * Array containing the widths of each character that have entries in used character map.
     *
     * @var array
     */
    protected $_charWidths = null;

    /**
     * Width for characters missed in the font
     * 
     * @var integer
     */
    protected $_missingCharWidth = 0;
    

    /**
     * Object constructor
     *
     * @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object
     *   containing OpenType file.
     * @param integer $embeddingOptions Options for font embedding.
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParser_Font_OpenType $fontParser)
    {
        parent::__construct();

        $fontParser->parse();
        

        /* Object properties */

        $this->_fontNames = $fontParser->names;

        $this->_isBold       = $fontParser->isBold;
        $this->_isItalic     = $fontParser->isItalic;
        $this->_isMonospaced = $fontParser->isMonospaced;

        $this->_underlinePosition  = $fontParser->underlinePosition;
        $this->_underlineThickness = $fontParser->underlineThickness;
        $this->_strikePosition     = $fontParser->strikePosition;
        $this->_strikeThickness    = $fontParser->strikeThickness;

        $this->_unitsPerEm = $fontParser->unitsPerEm;

        $this->_ascent  = $fontParser->ascent;
        $this->_descent = $fontParser->descent;
        $this->_lineGap = $fontParser->lineGap;


        $this->_cmap = $fontParser->cmap;


        /* Resource dictionary */

        $baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont);


        /**
         * Prepare widths array.
         */
        /* Constract characters widths array using font CMap and glyphs widths array */
        $glyphWidths = $fontParser->glyphWidths;
        $charGlyphs  = $this->_cmap->getCoveredCharactersGlyphs();
        $charWidths  = array();
        foreach ($charGlyphs as $charCode => $glyph) {
            $charWidths[$charCode] = $glyphWidths[$glyph];
        }
        $this->_charWidths       = $charWidths;
        $this->_missingCharWidth = $glyphWidths[0];  

        /* Width array optimization. Step1: extract default value */
        $widthFrequencies = array_count_values($charWidths);
        $defaultWidth          = null;
        $defaultWidthFrequency = -1;
        foreach ($widthFrequencies as $width => $frequency) {
            if ($frequency > $defaultWidthFrequency) {
                $defaultWidth          = $width;
                $defaultWidthFrequency = $frequency;
            }
        }

        // Store default value in the font dictionary
        $this->_resource->DW = new Zend_Pdf_Element_Numeric($this->toEmSpace($defaultWidth));
        
        // Remove characters which corresponds to default width from the widths array
        $defWidthChars = array_keys($charWidths, $defaultWidth);
        foreach ($defWidthChars as $charCode) {
            unset($charWidths[$charCode]);
        } 

        // Order cheracter widths aray by character codes
        ksort($charWidths, SORT_NUMERIC);

        /* Width array optimization. Step2: Compact character codes sequences */
        $lastCharCode = -1;
        $widthsSequences = array();
        foreach ($charWidths as $charCode => $width) {
            if ($lastCharCode == -1) {
                $charCodesSequense = array();
                $sequenceStartCode = $charCode;
            } else if ($charCode != $lastCharCode + 1) {
                // New chracters sequence detected
                $widthsSequences[$sequenceStartCode] = $charCodesSequense; 
                $charCodesSequense = array();
                $sequenceStartCode = $charCode;
            }
            $charCodesSequense[] = $width;
            $lastCharCode = $charCode;
        }
        // Save last sequence, if widths array is not empty (it may happens for monospaced fonts)
        if (count($charWidths) != 0) {
            $widthsSequences[$sequenceStartCode] = $charCodesSequense;
        } 

        $pdfCharsWidths = array();
        foreach ($widthsSequences as $startCode => $widthsSequence) {
            /* Width array optimization. Step3: Compact widths sequences */
            $pdfWidths        = array();
            $lastWidth        = -1;
            $widthsInSequence = 0;
            foreach ($widthsSequence as $width) {
                if ($lastWidth != $width) {
                    // New width is detected
                    if ($widthsInSequence != 0) {
                        // Previous width value was a part of the widths sequence. Save it as 'c_1st c_last w'.
                        $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode);                         // First character code
                        $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code
                        $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth));       // Width 

                        // Reset widths sequence
                        $startCode = $startCode + $widthsInSequence;
                        $widthsInSequence = 0;
                    }

                    // Collect new width
                    $pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width));

                    $lastWidth = $width;
                } else {
                    // Width is equal to previous
                    if (count($pdfWidths) != 0) {
                        // We already have some widths collected 
                        // So, we've just detected new widths sequence
                        
                        // Remove last element from widths list, since it's a part of widths sequence
                        array_pop($pdfWidths);

                        // and write the rest if it's not empty 
                        if (count($pdfWidths) != 0) {
                            // Save it as 'c_1st [w1 w2 ... wn]'.
                            $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
                            $pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths);   // Widths array

                            // Reset widths collection
                            $startCode += count($pdfWidths);
                            $pdfWidths = array();
                        }

                        $widthsInSequence = 2;
                    } else {
                        // Continue widths sequence
                        $widthsInSequence++;
                    }
                }
            }

            // Check if we have widths collection or widths sequence to wite it down
            if (count($pdfWidths) != 0) {
                // We have some widths collected
                // Save it as 'c_1st [w1 w2 ... wn]'.
                $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
                $pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths);   // Widths array
            } else if ($widthsInSequence != 0){
                // We have widths sequence
                // Save it as 'c_1st c_last w'.
                $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode);                         // First character code
                $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code
                $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth));       // Width 
            }
        }

        /* Create the Zend_Pdf_Element_Array object and add it to the font's
         * object factory and resource dictionary.
         */
        $widthsArrayElement = new Zend_Pdf_Element_Array($pdfCharsWidths);
        $widthsObject = $this->_objectFactory->newObject($widthsArrayElement);
        $this->_resource->W = $widthsObject;

        
        /* CIDSystemInfo dictionary */
        $cidSystemInfo = new Zend_Pdf_Element_Dictionary();
        $cidSystemInfo->Registry   = new Zend_Pdf_Element_String('Adobe');
        $cidSystemInfo->Ordering   = new Zend_Pdf_Element_String('UCS');
        $cidSystemInfo->Supplement = new Zend_Pdf_Element_Numeric(0);
        $cidSystemInfoObject            = $this->_objectFactory->newObject($cidSystemInfo);
        $this->_resource->CIDSystemInfo = $cidSystemInfoObject;
    }

    
    
    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }


    /**
     * Returns a number between 0 and 1 inclusive that indicates the percentage
     * of characters in the string which are covered by glyphs in this font.
     *
     * Since no one font will contain glyphs for the entire Unicode character
     * range, this method can be used to help locate a suitable font when the
     * actual contents of the string are not known.
     *
     * Note that some fonts lie about the characters they support. Additionally,
     * fonts don't usually contain glyphs for control characters such as tabs
     * and line breaks, so it is rare that you will get back a full 1.0 score.
     * The resulting value should be considered informational only.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source text.
     *   If omitted, uses 'current locale'.
     * @return float
     */
    public function getCoveredPercentage($string, $charEncoding = '')
    {
        /* Convert the string to UTF-16BE encoding so we can match the string's
         * character codes to those found in the cmap.
         */
        if ($charEncoding != 'UTF-16BE') {
            $string = iconv($charEncoding, 'UTF-16BE', $string);
        }

        $charCount = iconv_strlen($string, 'UTF-16BE');
        if ($charCount == 0) {
            return 0;
        }

        /* Calculate the score by doing a lookup for each character.
         */
        $score = 0;
        $maxIndex = strlen($string);
        for ($i = 0; $i < $maxIndex; $i++) {
            /**
             * @todo Properly handle characters encoded as surrogate pairs.
             */
            $charCode = (ord($string[$i]) << 8) | ord($string[++$i]);
            /* This could probably be optimized a bit with a binary search...
             */
            if (isset($this->_charWidths[$charCode])) {
                $score++;
            }
        }
        return $score / $charCount;
    }

    /**
     * Returns the widths of the Chars.
     *
     * The widths are expressed in the font's glyph space. You are responsible
     * for converting to user space as necessary. See {@link unitsPerEm()}.
     *
     * See also {@link widthForChar()}.
     *
     * @param array &$glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     */
    public function widthsForChars($charCodes)
    {
        $widths = array();
        foreach ($charCodes as $key => $charCode) {
            if (!isset($this->_charWidths[$charCode])) {
                $widths[$key] = $this->_missingCharWidth;
            } else {
                $widths[$key] = $this->_charWidths[$charCode];
            }
        }
        return $widths;
    }

    /**
     * Returns the width of the character.
     *
     * Like {@link widthsForChars()} but used for one char at a time.
     *
     * @param integer $charCode
     * @return integer
     */
    public function widthForChar($charCode)
    {
        if (!isset($this->_charWidths[$charCode])) {
            return $this->_missingCharWidth;
        }
        return $this->_charWidths[$charCode];
    }
    
    /**
     * Returns the widths of the glyphs.
     *
     * @param array &$glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     * @throws Zend_Pdf_Exception
     */
    public function widthsForGlyphs($glyphNumbers)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }

    /**
     * Returns the width of the glyph.
     *
     * Like {@link widthsForGlyphs()} but used for one glyph at a time.
     *
     * @param integer $glyphNumber
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function widthForGlyph($glyphNumber)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }

    /**
     * Convert string to the font encoding.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     * @throws Zend_Pdf_Exception
     *      */
    public function encodeString($string, $charEncoding)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }

    /**
     * Convert string from the font encoding.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function decodeString($string, $charEncoding)
    {
        /**
         * CIDFont object is not actually a font. It does not have an Encoding entry, 
         * it cannot be listed in the Font subdictionary of a resource dictionary, and 
         * it cannot be used as the operand of the Tf operator.
         * 
         * Throw an exception.
         */
        throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
    }
}
PKpG[�t�7K7K:Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Helvetica-BoldOblique.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
          . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
          . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
          . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
          . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
          . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
          . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
          . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
          . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
          . "\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x33";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00"
          . "\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00"
          . "\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00"
          . "\x6c\x00\x69\x00\x71\x00\x75\x00\x65";

        $this->_isBold = true;
        $this->_isItalic = true;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 718;
        $this->_descent = -207;
        $this->_lineGap = 275;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x014d,   0x03 => 0x01da,
            0x04 => 0x022c,   0x05 => 0x022c,   0x06 => 0x0379,   0x07 => 0x02d2,
            0x08 => 0x0116,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x0185,
            0x0c => 0x0248,   0x0d => 0x0116,   0x0e => 0x014d,   0x0f => 0x0116,
            0x10 => 0x0116,   0x11 => 0x022c,   0x12 => 0x022c,   0x13 => 0x022c,
            0x14 => 0x022c,   0x15 => 0x022c,   0x16 => 0x022c,   0x17 => 0x022c,
            0x18 => 0x022c,   0x19 => 0x022c,   0x1a => 0x022c,   0x1b => 0x014d,
            0x1c => 0x014d,   0x1d => 0x0248,   0x1e => 0x0248,   0x1f => 0x0248,
            0x20 => 0x0263,   0x21 => 0x03cf,   0x22 => 0x02d2,   0x23 => 0x02d2,
            0x24 => 0x02d2,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x0263,
            0x28 => 0x030a,   0x29 => 0x02d2,   0x2a => 0x0116,   0x2b => 0x022c,
            0x2c => 0x02d2,   0x2d => 0x0263,   0x2e => 0x0341,   0x2f => 0x02d2,
            0x30 => 0x030a,   0x31 => 0x029b,   0x32 => 0x030a,   0x33 => 0x02d2,
            0x34 => 0x029b,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x029b,
            0x38 => 0x03b0,   0x39 => 0x029b,   0x3a => 0x029b,   0x3b => 0x0263,
            0x3c => 0x014d,   0x3d => 0x0116,   0x3e => 0x014d,   0x3f => 0x0248,
            0x40 => 0x022c,   0x41 => 0x0116,   0x42 => 0x022c,   0x43 => 0x0263,
            0x44 => 0x022c,   0x45 => 0x0263,   0x46 => 0x022c,   0x47 => 0x014d,
            0x48 => 0x0263,   0x49 => 0x0263,   0x4a => 0x0116,   0x4b => 0x0116,
            0x4c => 0x022c,   0x4d => 0x0116,   0x4e => 0x0379,   0x4f => 0x0263,
            0x50 => 0x0263,   0x51 => 0x0263,   0x52 => 0x0263,   0x53 => 0x0185,
            0x54 => 0x022c,   0x55 => 0x014d,   0x56 => 0x0263,   0x57 => 0x022c,
            0x58 => 0x030a,   0x59 => 0x022c,   0x5a => 0x022c,   0x5b => 0x01f4,
            0x5c => 0x0185,   0x5d => 0x0118,   0x5e => 0x0185,   0x5f => 0x0248,
            0x60 => 0x014d,   0x61 => 0x022c,   0x62 => 0x022c,   0x63 =>   0xa7,
            0x64 => 0x022c,   0x65 => 0x022c,   0x66 => 0x022c,   0x67 => 0x022c,
            0x68 =>   0xee,   0x69 => 0x01f4,   0x6a => 0x022c,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x0263,   0x6e => 0x0263,   0x6f => 0x022c,
            0x70 => 0x022c,   0x71 => 0x022c,   0x72 => 0x0116,   0x73 => 0x022c,
            0x74 => 0x015e,   0x75 => 0x0116,   0x76 => 0x01f4,   0x77 => 0x01f4,
            0x78 => 0x022c,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x0263,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03e8,   0x8b => 0x0172,
            0x8c => 0x0263,   0x8d => 0x030a,   0x8e => 0x03e8,   0x8f => 0x016d,
            0x90 => 0x0379,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x0263,
            0x94 => 0x03b0,   0x95 => 0x0263,   0x96 => 0x0116,   0x97 => 0x022c,
            0x98 => 0x022c,   0x99 => 0x0263,   0x9a => 0x022c,   0x9b => 0x029b,
            0x9c => 0x0248,   0x9d => 0x029b,   0x9e => 0x02d2,   0x9f => 0x022c,
            0xa0 => 0x02d2,   0xa1 => 0x022c,   0xa2 => 0x022c,   0xa3 => 0x022c,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x022c,   0xa7 => 0x02d2,
            0xa8 => 0x0263,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02e1,   0xad => 0x029b,   0xae => 0x022c,   0xaf => 0x022c,
            0xb0 => 0x02d2,   0xb1 => 0x0116,   0xb2 => 0x022c,   0xb3 => 0x0263,
            0xb4 => 0x02d2,   0xb5 => 0x022c,   0xb6 => 0x029b,   0xb7 => 0x022c,
            0xb8 => 0x022c,   0xb9 => 0x0116,   0xba => 0x01ee,   0xbb => 0x02d2,
            0xbc => 0x030a,   0xbd => 0x0263,   0xbe => 0x022c,   0xbf => 0x02d2,
            0xc0 => 0x0185,   0xc1 => 0x022c,   0xc2 => 0x0263,   0xc3 => 0x029b,
            0xc4 => 0x030a,   0xc5 => 0x02d2,   0xc6 => 0x029b,   0xc7 => 0x02e7,
            0xc8 => 0x02d2,   0xc9 => 0x0263,   0xca => 0x014d,   0xcb => 0x030a,
            0xcc => 0x02d2,   0xcd => 0x02d2,   0xce => 0x0248,   0xcf => 0x0263,
            0xd0 => 0x0263,   0xd1 => 0x01ee,   0xd2 => 0x022c,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x022c,   0xd7 => 0x022c,
            0xd8 => 0x022c,   0xd9 => 0x0263,   0xda => 0x0263,   0xdb => 0x02d2,
            0xdc => 0x0116,   0xdd => 0x0248,   0xde => 0x0118,   0xdf => 0x02e1,
            0xe0 => 0x030a,   0xe1 => 0x0116,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x0185,   0xe5 => 0x0263,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x02d2,   0xeb => 0x0116,
            0xec => 0x0185,   0xed => 0x022c,   0xee => 0x02d2,   0xef => 0x02d2,
            0xf0 => 0x02d2,   0xf1 => 0x022c,   0xf2 => 0x01f4,   0xf3 => 0x0116,
            0xf4 => 0x030a,   0xf5 => 0x0263,   0xf6 => 0x022c,   0xf7 => 0x022c,
            0xf8 => 0x0116,   0xf9 => 0x030a,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x0263,   0xfd => 0x014d,   0xfe => 0x030a,   0xff => 0x0263,
          0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263,
          0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2,
          0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
          0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225,
          0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b,
          0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263,
          0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2,
          0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2,
          0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
          0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
          0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263,
          0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263,
          0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4,
          0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-BoldOblique');
    }

}
PKpG[qP;\�J�J6Pdf/Resource/Font/Simple/Standard/HelveticaOblique.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Helvetica-Oblique.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
          . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
          . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
          . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
          . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
          . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
          . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
          . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
          . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
          . "\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x35";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00"
          . "\x65\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00"
          . "\x65";

        $this->_isBold = false;
        $this->_isItalic = true;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 718;
        $this->_descent = -207;
        $this->_lineGap = 275;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x0116,   0x03 => 0x0163,
            0x04 => 0x022c,   0x05 => 0x022c,   0x06 => 0x0379,   0x07 => 0x029b,
            0x08 =>   0xde,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x0185,
            0x0c => 0x0248,   0x0d => 0x0116,   0x0e => 0x014d,   0x0f => 0x0116,
            0x10 => 0x0116,   0x11 => 0x022c,   0x12 => 0x022c,   0x13 => 0x022c,
            0x14 => 0x022c,   0x15 => 0x022c,   0x16 => 0x022c,   0x17 => 0x022c,
            0x18 => 0x022c,   0x19 => 0x022c,   0x1a => 0x022c,   0x1b => 0x0116,
            0x1c => 0x0116,   0x1d => 0x0248,   0x1e => 0x0248,   0x1f => 0x0248,
            0x20 => 0x022c,   0x21 => 0x03f7,   0x22 => 0x029b,   0x23 => 0x029b,
            0x24 => 0x02d2,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x0263,
            0x28 => 0x030a,   0x29 => 0x02d2,   0x2a => 0x0116,   0x2b => 0x01f4,
            0x2c => 0x029b,   0x2d => 0x022c,   0x2e => 0x0341,   0x2f => 0x02d2,
            0x30 => 0x030a,   0x31 => 0x029b,   0x32 => 0x030a,   0x33 => 0x02d2,
            0x34 => 0x029b,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x029b,
            0x38 => 0x03b0,   0x39 => 0x029b,   0x3a => 0x029b,   0x3b => 0x0263,
            0x3c => 0x0116,   0x3d => 0x0116,   0x3e => 0x0116,   0x3f => 0x01d5,
            0x40 => 0x022c,   0x41 =>   0xde,   0x42 => 0x022c,   0x43 => 0x022c,
            0x44 => 0x01f4,   0x45 => 0x022c,   0x46 => 0x022c,   0x47 => 0x0116,
            0x48 => 0x022c,   0x49 => 0x022c,   0x4a =>   0xde,   0x4b =>   0xde,
            0x4c => 0x01f4,   0x4d =>   0xde,   0x4e => 0x0341,   0x4f => 0x022c,
            0x50 => 0x022c,   0x51 => 0x022c,   0x52 => 0x022c,   0x53 => 0x014d,
            0x54 => 0x01f4,   0x55 => 0x0116,   0x56 => 0x022c,   0x57 => 0x01f4,
            0x58 => 0x02d2,   0x59 => 0x01f4,   0x5a => 0x01f4,   0x5b => 0x01f4,
            0x5c => 0x014e,   0x5d => 0x0104,   0x5e => 0x014e,   0x5f => 0x0248,
            0x60 => 0x014d,   0x61 => 0x022c,   0x62 => 0x022c,   0x63 =>   0xa7,
            0x64 => 0x022c,   0x65 => 0x022c,   0x66 => 0x022c,   0x67 => 0x022c,
            0x68 =>   0xbf,   0x69 => 0x014d,   0x6a => 0x022c,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x01f4,   0x6e => 0x01f4,   0x6f => 0x022c,
            0x70 => 0x022c,   0x71 => 0x022c,   0x72 => 0x0116,   0x73 => 0x0219,
            0x74 => 0x015e,   0x75 =>   0xde,   0x76 => 0x014d,   0x77 => 0x014d,
            0x78 => 0x022c,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x0263,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03e8,   0x8b => 0x0172,
            0x8c => 0x022c,   0x8d => 0x030a,   0x8e => 0x03e8,   0x8f => 0x016d,
            0x90 => 0x0379,   0x91 => 0x0116,   0x92 =>   0xde,   0x93 => 0x0263,
            0x94 => 0x03b0,   0x95 => 0x0263,   0x96 => 0x0116,   0x97 => 0x022c,
            0x98 => 0x022c,   0x99 => 0x022c,   0x9a => 0x022c,   0x9b => 0x029b,
            0x9c => 0x0248,   0x9d => 0x029b,   0x9e => 0x029b,   0x9f => 0x022c,
            0xa0 => 0x02d2,   0xa1 => 0x01f4,   0xa2 => 0x01f4,   0xa3 => 0x022c,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x022c,   0xa7 => 0x02d2,
            0xa8 => 0x022c,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02e1,   0xad => 0x029b,   0xae => 0x01f4,   0xaf => 0x022c,
            0xb0 => 0x02d2,   0xb1 =>   0xde,   0xb2 => 0x022c,   0xb3 => 0x0263,
            0xb4 => 0x02d2,   0xb5 => 0x022c,   0xb6 => 0x029b,   0xb7 => 0x01f4,
            0xb8 => 0x01f4,   0xb9 => 0x0116,   0xba => 0x01d7,   0xbb => 0x02d2,
            0xbc => 0x030a,   0xbd => 0x022c,   0xbe => 0x022c,   0xbf => 0x029b,
            0xc0 => 0x014d,   0xc1 => 0x01f4,   0xc2 => 0x0263,   0xc3 => 0x029b,
            0xc4 => 0x030a,   0xc5 => 0x02d2,   0xc6 => 0x029b,   0xc7 => 0x0283,
            0xc8 => 0x02d2,   0xc9 => 0x022c,   0xca => 0x014d,   0xcb => 0x030a,
            0xcc => 0x029b,   0xcd => 0x029b,   0xce => 0x0248,   0xcf => 0x022c,
            0xd0 => 0x0263,   0xd1 => 0x01dc,   0xd2 => 0x01f4,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x022c,   0xd7 => 0x022c,
            0xd8 => 0x01f4,   0xd9 => 0x022c,   0xda => 0x022c,   0xdb => 0x02d2,
            0xdc => 0x0116,   0xdd => 0x0248,   0xde => 0x0104,   0xdf => 0x02e1,
            0xe0 => 0x030a,   0xe1 => 0x0116,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x014d,   0xe5 => 0x022c,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x02d2,   0xeb =>   0xde,
            0xec => 0x013d,   0xed => 0x022c,   0xee => 0x02d2,   0xef => 0x029b,
            0xf0 => 0x029b,   0xf1 => 0x022c,   0xf2 => 0x01f4,   0xf3 =>   0xde,
            0xf4 => 0x030a,   0xf5 => 0x022c,   0xf6 => 0x022c,   0xf7 => 0x01f4,
            0xf8 => 0x0116,   0xf9 => 0x030a,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x022c,   0xfd => 0x014d,   0xfe => 0x030a,   0xff => 0x022c,
          0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c,
          0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b,
          0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
          0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225,
          0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b,
          0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c,
          0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2,
          0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2,
          0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
          0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
          0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c,
          0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c,
          0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4,
          0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-Oblique');
    }

}
PKpG[Z�)��G�G-Pdf/Resource/Font/Simple/Standard/Courier.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Courier.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_Courier extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x20\x00"
          . "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";

        $this->_isBold = false;
        $this->_isItalic = false;
        $this->_isMonospaced = true;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 629;
        $this->_descent = -157;
        $this->_lineGap = 414;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0258,   0x02 => 0x0258,   0x03 => 0x0258,
            0x04 => 0x0258,   0x05 => 0x0258,   0x06 => 0x0258,   0x07 => 0x0258,
            0x08 => 0x0258,   0x09 => 0x0258,   0x0a => 0x0258,   0x0b => 0x0258,
            0x0c => 0x0258,   0x0d => 0x0258,   0x0e => 0x0258,   0x0f => 0x0258,
            0x10 => 0x0258,   0x11 => 0x0258,   0x12 => 0x0258,   0x13 => 0x0258,
            0x14 => 0x0258,   0x15 => 0x0258,   0x16 => 0x0258,   0x17 => 0x0258,
            0x18 => 0x0258,   0x19 => 0x0258,   0x1a => 0x0258,   0x1b => 0x0258,
            0x1c => 0x0258,   0x1d => 0x0258,   0x1e => 0x0258,   0x1f => 0x0258,
            0x20 => 0x0258,   0x21 => 0x0258,   0x22 => 0x0258,   0x23 => 0x0258,
            0x24 => 0x0258,   0x25 => 0x0258,   0x26 => 0x0258,   0x27 => 0x0258,
            0x28 => 0x0258,   0x29 => 0x0258,   0x2a => 0x0258,   0x2b => 0x0258,
            0x2c => 0x0258,   0x2d => 0x0258,   0x2e => 0x0258,   0x2f => 0x0258,
            0x30 => 0x0258,   0x31 => 0x0258,   0x32 => 0x0258,   0x33 => 0x0258,
            0x34 => 0x0258,   0x35 => 0x0258,   0x36 => 0x0258,   0x37 => 0x0258,
            0x38 => 0x0258,   0x39 => 0x0258,   0x3a => 0x0258,   0x3b => 0x0258,
            0x3c => 0x0258,   0x3d => 0x0258,   0x3e => 0x0258,   0x3f => 0x0258,
            0x40 => 0x0258,   0x41 => 0x0258,   0x42 => 0x0258,   0x43 => 0x0258,
            0x44 => 0x0258,   0x45 => 0x0258,   0x46 => 0x0258,   0x47 => 0x0258,
            0x48 => 0x0258,   0x49 => 0x0258,   0x4a => 0x0258,   0x4b => 0x0258,
            0x4c => 0x0258,   0x4d => 0x0258,   0x4e => 0x0258,   0x4f => 0x0258,
            0x50 => 0x0258,   0x51 => 0x0258,   0x52 => 0x0258,   0x53 => 0x0258,
            0x54 => 0x0258,   0x55 => 0x0258,   0x56 => 0x0258,   0x57 => 0x0258,
            0x58 => 0x0258,   0x59 => 0x0258,   0x5a => 0x0258,   0x5b => 0x0258,
            0x5c => 0x0258,   0x5d => 0x0258,   0x5e => 0x0258,   0x5f => 0x0258,
            0x60 => 0x0258,   0x61 => 0x0258,   0x62 => 0x0258,   0x63 => 0x0258,
            0x64 => 0x0258,   0x65 => 0x0258,   0x66 => 0x0258,   0x67 => 0x0258,
            0x68 => 0x0258,   0x69 => 0x0258,   0x6a => 0x0258,   0x6b => 0x0258,
            0x6c => 0x0258,   0x6d => 0x0258,   0x6e => 0x0258,   0x6f => 0x0258,
            0x70 => 0x0258,   0x71 => 0x0258,   0x72 => 0x0258,   0x73 => 0x0258,
            0x74 => 0x0258,   0x75 => 0x0258,   0x76 => 0x0258,   0x77 => 0x0258,
            0x78 => 0x0258,   0x79 => 0x0258,   0x7a => 0x0258,   0x7b => 0x0258,
            0x7c => 0x0258,   0x7d => 0x0258,   0x7e => 0x0258,   0x7f => 0x0258,
            0x80 => 0x0258,   0x81 => 0x0258,   0x82 => 0x0258,   0x83 => 0x0258,
            0x84 => 0x0258,   0x85 => 0x0258,   0x86 => 0x0258,   0x87 => 0x0258,
            0x88 => 0x0258,   0x89 => 0x0258,   0x8a => 0x0258,   0x8b => 0x0258,
            0x8c => 0x0258,   0x8d => 0x0258,   0x8e => 0x0258,   0x8f => 0x0258,
            0x90 => 0x0258,   0x91 => 0x0258,   0x92 => 0x0258,   0x93 => 0x0258,
            0x94 => 0x0258,   0x95 => 0x0258,   0x96 => 0x0258,   0x97 => 0x0258,
            0x98 => 0x0258,   0x99 => 0x0258,   0x9a => 0x0258,   0x9b => 0x0258,
            0x9c => 0x0258,   0x9d => 0x0258,   0x9e => 0x0258,   0x9f => 0x0258,
            0xa0 => 0x0258,   0xa1 => 0x0258,   0xa2 => 0x0258,   0xa3 => 0x0258,
            0xa4 => 0x0258,   0xa5 => 0x0258,   0xa6 => 0x0258,   0xa7 => 0x0258,
            0xa8 => 0x0258,   0xa9 => 0x0258,   0xaa => 0x0258,   0xab => 0x0258,
            0xac => 0x0258,   0xad => 0x0258,   0xae => 0x0258,   0xaf => 0x0258,
            0xb0 => 0x0258,   0xb1 => 0x0258,   0xb2 => 0x0258,   0xb3 => 0x0258,
            0xb4 => 0x0258,   0xb5 => 0x0258,   0xb6 => 0x0258,   0xb7 => 0x0258,
            0xb8 => 0x0258,   0xb9 => 0x0258,   0xba => 0x0258,   0xbb => 0x0258,
            0xbc => 0x0258,   0xbd => 0x0258,   0xbe => 0x0258,   0xbf => 0x0258,
            0xc0 => 0x0258,   0xc1 => 0x0258,   0xc2 => 0x0258,   0xc3 => 0x0258,
            0xc4 => 0x0258,   0xc5 => 0x0258,   0xc6 => 0x0258,   0xc7 => 0x0258,
            0xc8 => 0x0258,   0xc9 => 0x0258,   0xca => 0x0258,   0xcb => 0x0258,
            0xcc => 0x0258,   0xcd => 0x0258,   0xce => 0x0258,   0xcf => 0x0258,
            0xd0 => 0x0258,   0xd1 => 0x0258,   0xd2 => 0x0258,   0xd3 => 0x0258,
            0xd4 => 0x0258,   0xd5 => 0x0258,   0xd6 => 0x0258,   0xd7 => 0x0258,
            0xd8 => 0x0258,   0xd9 => 0x0258,   0xda => 0x0258,   0xdb => 0x0258,
            0xdc => 0x0258,   0xdd => 0x0258,   0xde => 0x0258,   0xdf => 0x0258,
            0xe0 => 0x0258,   0xe1 => 0x0258,   0xe2 => 0x0258,   0xe3 => 0x0258,
            0xe4 => 0x0258,   0xe5 => 0x0258,   0xe6 => 0x0258,   0xe7 => 0x0258,
            0xe8 => 0x0258,   0xe9 => 0x0258,   0xea => 0x0258,   0xeb => 0x0258,
            0xec => 0x0258,   0xed => 0x0258,   0xee => 0x0258,   0xef => 0x0258,
            0xf0 => 0x0258,   0xf1 => 0x0258,   0xf2 => 0x0258,   0xf3 => 0x0258,
            0xf4 => 0x0258,   0xf5 => 0x0258,   0xf6 => 0x0258,   0xf7 => 0x0258,
            0xf8 => 0x0258,   0xf9 => 0x0258,   0xfa => 0x0258,   0xfb => 0x0258,
            0xfc => 0x0258,   0xfd => 0x0258,   0xfe => 0x0258,   0xff => 0x0258,
          0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
          0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
          0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
          0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
          0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
          0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
          0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
          0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
          0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
          0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
          0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
          0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
          0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
          0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
          0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier');
    }

}
PKpG[+�JJ/Pdf/Resource/Font/Simple/Standard/TimesBold.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Times-Bold.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_TimesBold extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
          . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
          . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
          . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
          . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
          . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
          . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
          . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
          . "\x65\x00\x73\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x35";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
          . "\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
          . "\x6c\x00\x64";

        $this->_isBold = true;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 683;
        $this->_descent = -217;
        $this->_lineGap = 300;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 =>   0xfa,   0x02 => 0x014d,   0x03 => 0x022b,
            0x04 => 0x01f4,   0x05 => 0x01f4,   0x06 => 0x03e8,   0x07 => 0x0341,
            0x08 => 0x014d,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x01f4,
            0x0c => 0x023a,   0x0d =>   0xfa,   0x0e => 0x014d,   0x0f =>   0xfa,
            0x10 => 0x0116,   0x11 => 0x01f4,   0x12 => 0x01f4,   0x13 => 0x01f4,
            0x14 => 0x01f4,   0x15 => 0x01f4,   0x16 => 0x01f4,   0x17 => 0x01f4,
            0x18 => 0x01f4,   0x19 => 0x01f4,   0x1a => 0x01f4,   0x1b => 0x014d,
            0x1c => 0x014d,   0x1d => 0x023a,   0x1e => 0x023a,   0x1f => 0x023a,
            0x20 => 0x01f4,   0x21 => 0x03a2,   0x22 => 0x02d2,   0x23 => 0x029b,
            0x24 => 0x02d2,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x0263,
            0x28 => 0x030a,   0x29 => 0x030a,   0x2a => 0x0185,   0x2b => 0x01f4,
            0x2c => 0x030a,   0x2d => 0x029b,   0x2e => 0x03b0,   0x2f => 0x02d2,
            0x30 => 0x030a,   0x31 => 0x0263,   0x32 => 0x030a,   0x33 => 0x02d2,
            0x34 => 0x022c,   0x35 => 0x029b,   0x36 => 0x02d2,   0x37 => 0x02d2,
            0x38 => 0x03e8,   0x39 => 0x02d2,   0x3a => 0x02d2,   0x3b => 0x029b,
            0x3c => 0x014d,   0x3d => 0x0116,   0x3e => 0x014d,   0x3f => 0x0245,
            0x40 => 0x01f4,   0x41 => 0x014d,   0x42 => 0x01f4,   0x43 => 0x022c,
            0x44 => 0x01bc,   0x45 => 0x022c,   0x46 => 0x01bc,   0x47 => 0x014d,
            0x48 => 0x01f4,   0x49 => 0x022c,   0x4a => 0x0116,   0x4b => 0x014d,
            0x4c => 0x022c,   0x4d => 0x0116,   0x4e => 0x0341,   0x4f => 0x022c,
            0x50 => 0x01f4,   0x51 => 0x022c,   0x52 => 0x022c,   0x53 => 0x01bc,
            0x54 => 0x0185,   0x55 => 0x014d,   0x56 => 0x022c,   0x57 => 0x01f4,
            0x58 => 0x02d2,   0x59 => 0x01f4,   0x5a => 0x01f4,   0x5b => 0x01bc,
            0x5c => 0x018a,   0x5d =>   0xdc,   0x5e => 0x018a,   0x5f => 0x0208,
            0x60 => 0x014d,   0x61 => 0x01f4,   0x62 => 0x01f4,   0x63 =>   0xa7,
            0x64 => 0x01f4,   0x65 => 0x01f4,   0x66 => 0x01f4,   0x67 => 0x01f4,
            0x68 => 0x0116,   0x69 => 0x01f4,   0x6a => 0x01f4,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x022c,   0x6e => 0x022c,   0x6f => 0x01f4,
            0x70 => 0x01f4,   0x71 => 0x01f4,   0x72 =>   0xfa,   0x73 => 0x021c,
            0x74 => 0x015e,   0x75 => 0x014d,   0x76 => 0x01f4,   0x77 => 0x01f4,
            0x78 => 0x01f4,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x01f4,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03e8,   0x8b => 0x012c,
            0x8c => 0x029b,   0x8d => 0x030a,   0x8e => 0x03e8,   0x8f => 0x014a,
            0x90 => 0x02d2,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x01f4,
            0x94 => 0x02d2,   0x95 => 0x022c,   0x96 => 0x0185,   0x97 => 0x01bc,
            0x98 => 0x01f4,   0x99 => 0x022c,   0x9a => 0x01bc,   0x9b => 0x02d2,
            0x9c => 0x023a,   0x9d => 0x02d2,   0x9e => 0x02d2,   0x9f => 0x01f4,
            0xa0 => 0x02d2,   0xa1 => 0x01f4,   0xa2 => 0x0185,   0xa3 => 0x01bc,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x01f4,   0xa7 => 0x02d2,
            0xa8 => 0x022c,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02eb,   0xad => 0x029b,   0xae => 0x01bc,   0xaf => 0x01f4,
            0xb0 => 0x02d2,   0xb1 => 0x0116,   0xb2 => 0x01f4,   0xb3 => 0x029b,
            0xb4 => 0x02d2,   0xb5 => 0x01f4,   0xb6 => 0x029b,   0xb7 => 0x0185,
            0xb8 => 0x0185,   0xb9 => 0x0116,   0xba => 0x01ee,   0xbb => 0x02d2,
            0xbc => 0x030a,   0xbd => 0x022c,   0xbe => 0x01f4,   0xbf => 0x02d2,
            0xc0 => 0x01bc,   0xc1 => 0x01bc,   0xc2 => 0x029b,   0xc3 => 0x0263,
            0xc4 => 0x030a,   0xc5 => 0x02d2,   0xc6 => 0x022c,   0xc7 => 0x02a0,
            0xc8 => 0x02d2,   0xc9 => 0x022c,   0xca => 0x012c,   0xcb => 0x030a,
            0xcc => 0x02d2,   0xcd => 0x02d2,   0xce => 0x023a,   0xcf => 0x022c,
            0xd0 => 0x029b,   0xd1 => 0x01ee,   0xd2 => 0x01f4,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x01f4,   0xd7 => 0x01bc,
            0xd8 => 0x01bc,   0xd9 => 0x022c,   0xda => 0x022c,   0xdb => 0x02d2,
            0xdc => 0x0185,   0xdd => 0x023a,   0xde =>   0xdc,   0xdf => 0x02eb,
            0xe0 => 0x030a,   0xe1 => 0x0185,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x01bc,   0xe5 => 0x01f4,   0xe6 => 0x029b,   0xe7 => 0x029b,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x02d2,   0xeb => 0x0116,
            0xec => 0x01a0,   0xed => 0x01bc,   0xee => 0x02d2,   0xef => 0x02d2,
            0xf0 => 0x02d2,   0xf1 => 0x01bc,   0xf2 => 0x01bc,   0xf3 => 0x0116,
            0xf4 => 0x030a,   0xf5 => 0x01f4,   0xf6 => 0x01f4,   0xf7 => 0x0185,
            0xf8 => 0x0116,   0xf9 => 0x030a,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x022c,   0xfd => 0x012c,   0xfe => 0x030a,   0xff => 0x022c,
          0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x022c,
          0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x018a, 0x0107 => 0x030a,
          0x0108 => 0x029b, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185,
          0x010c => 0x0185, 0x010d => 0x029b, 0x010e => 0x02ee, 0x010f => 0x0225,
          0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
          0x0118 => 0x022c, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x01f4,
          0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2,
          0x0120 => 0x01bc, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x02d2,
          0x0124 => 0x029b, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
          0x0128 => 0x030a, 0x0129 => 0x01bc, 0x012a => 0x029b, 0x012b => 0x0185,
          0x012c => 0x022c, 0x012d => 0x023a, 0x012e => 0x0185, 0x012f => 0x022c,
          0x0130 => 0x014d, 0x0131 => 0x023a, 0x0132 => 0x01f4, 0x0133 => 0x022c,
          0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc,
          0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Bold');
    }

}
PKpG[1�|�n�n2Pdf/Resource/Font/Simple/Standard/ZapfDingbats.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font ZapfDingbats.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Instance Variables ****/


    /**
     * Array for conversion from local encoding to special font encoding.
     * See {@link encodeString()}.
     * @var array
     */
    protected $_toFontEncoding = array(
            0x20 => "\x20", 0x2701 => "\x21", 0x2702 => "\x22", 0x2703 => "\x23",
          0x2704 => "\x24", 0x260e => "\x25", 0x2706 => "\x26", 0x2707 => "\x27",
          0x2708 => "\x28", 0x2709 => "\x29", 0x261b => "\x2a", 0x261e => "\x2b",
          0x270c => "\x2c", 0x270d => "\x2d", 0x270e => "\x2e", 0x270f => "\x2f",
          0x2710 => "\x30", 0x2711 => "\x31", 0x2712 => "\x32", 0x2713 => "\x33",
          0x2714 => "\x34", 0x2715 => "\x35", 0x2716 => "\x36", 0x2717 => "\x37",
          0x2718 => "\x38", 0x2719 => "\x39", 0x271a => "\x3a", 0x271b => "\x3b",
          0x271c => "\x3c", 0x271d => "\x3d", 0x271e => "\x3e", 0x271f => "\x3f",
          0x2720 => "\x40", 0x2721 => "\x41", 0x2722 => "\x42", 0x2723 => "\x43",
          0x2724 => "\x44", 0x2725 => "\x45", 0x2726 => "\x46", 0x2727 => "\x47",
          0x2605 => "\x48", 0x2729 => "\x49", 0x272a => "\x4a", 0x272b => "\x4b",
          0x272c => "\x4c", 0x272d => "\x4d", 0x272e => "\x4e", 0x272f => "\x4f",
          0x2730 => "\x50", 0x2731 => "\x51", 0x2732 => "\x52", 0x2733 => "\x53",
          0x2734 => "\x54", 0x2735 => "\x55", 0x2736 => "\x56", 0x2737 => "\x57",
          0x2738 => "\x58", 0x2739 => "\x59", 0x273a => "\x5a", 0x273b => "\x5b",
          0x273c => "\x5c", 0x273d => "\x5d", 0x273e => "\x5e", 0x273f => "\x5f",
          0x2740 => "\x60", 0x2741 => "\x61", 0x2742 => "\x62", 0x2743 => "\x63",
          0x2744 => "\x64", 0x2745 => "\x65", 0x2746 => "\x66", 0x2747 => "\x67",
          0x2748 => "\x68", 0x2749 => "\x69", 0x274a => "\x6a", 0x274b => "\x6b",
          0x25cf => "\x6c", 0x274d => "\x6d", 0x25a0 => "\x6e", 0x274f => "\x6f",
          0x2750 => "\x70", 0x2751 => "\x71", 0x2752 => "\x72", 0x25b2 => "\x73",
          0x25bc => "\x74", 0x25c6 => "\x75", 0x2756 => "\x76", 0x25d7 => "\x77",
          0x2758 => "\x78", 0x2759 => "\x79", 0x275a => "\x7a", 0x275b => "\x7b",
          0x275c => "\x7c", 0x275d => "\x7d", 0x275e => "\x7e", 0x2768 => "\x80",
          0x2769 => "\x81", 0x276a => "\x82", 0x276b => "\x83", 0x276c => "\x84",
          0x276d => "\x85", 0x276e => "\x86", 0x276f => "\x87", 0x2770 => "\x88",
          0x2771 => "\x89", 0x2772 => "\x8a", 0x2773 => "\x8b", 0x2774 => "\x8c",
          0x2775 => "\x8d", 0x2761 => "\xa1", 0x2762 => "\xa2", 0x2763 => "\xa3",
          0x2764 => "\xa4", 0x2765 => "\xa5", 0x2766 => "\xa6", 0x2767 => "\xa7",
          0x2663 => "\xa8", 0x2666 => "\xa9", 0x2665 => "\xaa", 0x2660 => "\xab",
          0x2460 => "\xac", 0x2461 => "\xad", 0x2462 => "\xae", 0x2463 => "\xaf",
          0x2464 => "\xb0", 0x2465 => "\xb1", 0x2466 => "\xb2", 0x2467 => "\xb3",
          0x2468 => "\xb4", 0x2469 => "\xb5", 0x2776 => "\xb6", 0x2777 => "\xb7",
          0x2778 => "\xb8", 0x2779 => "\xb9", 0x277a => "\xba", 0x277b => "\xbb",
          0x277c => "\xbc", 0x277d => "\xbd", 0x277e => "\xbe", 0x277f => "\xbf",
          0x2780 => "\xc0", 0x2781 => "\xc1", 0x2782 => "\xc2", 0x2783 => "\xc3",
          0x2784 => "\xc4", 0x2785 => "\xc5", 0x2786 => "\xc6", 0x2787 => "\xc7",
          0x2788 => "\xc8", 0x2789 => "\xc9", 0x278a => "\xca", 0x278b => "\xcb",
          0x278c => "\xcc", 0x278d => "\xcd", 0x278e => "\xce", 0x278f => "\xcf",
          0x2790 => "\xd0", 0x2791 => "\xd1", 0x2792 => "\xd2", 0x2793 => "\xd3",
          0x2794 => "\xd4", 0x2192 => "\xd5", 0x2194 => "\xd6", 0x2195 => "\xd7",
          0x2798 => "\xd8", 0x2799 => "\xd9", 0x279a => "\xda", 0x279b => "\xdb",
          0x279c => "\xdc", 0x279d => "\xdd", 0x279e => "\xde", 0x279f => "\xdf",
          0x27a0 => "\xe0", 0x27a1 => "\xe1", 0x27a2 => "\xe2", 0x27a3 => "\xe3",
          0x27a4 => "\xe4", 0x27a5 => "\xe5", 0x27a6 => "\xe6", 0x27a7 => "\xe7",
          0x27a8 => "\xe8", 0x27a9 => "\xe9", 0x27aa => "\xea", 0x27ab => "\xeb",
          0x27ac => "\xec", 0x27ad => "\xed", 0x27ae => "\xee", 0x27af => "\xef",
          0x27b1 => "\xf1", 0x27b2 => "\xf2", 0x27b3 => "\xf3", 0x27b4 => "\xf4",
          0x27b5 => "\xf5", 0x27b6 => "\xf6", 0x27b7 => "\xf7", 0x27b8 => "\xf8",
          0x27b9 => "\xf9", 0x27ba => "\xfa", 0x27bb => "\xfb", 0x27bc => "\xfc",
          0x27bd => "\xfd", 0x27be => "\xfe");

    /**
     * Array for conversion from special font encoding to local encoding.
     * See {@link decodeString()}.
     * @var array
     */
    protected $_fromFontEncoding = array(
            0x20 => "\x00\x20",   0x21 => "\x27\x01",   0x22 => "\x27\x02",
            0x23 => "\x27\x03",   0x24 => "\x27\x04",   0x25 => "\x26\x0e",
            0x26 => "\x27\x06",   0x27 => "\x27\x07",   0x28 => "\x27\x08",
            0x29 => "\x27\x09",   0x2a => "\x26\x1b",   0x2b => "\x26\x1e",
            0x2c => "\x27\x0c",   0x2d => "\x27\x0d",   0x2e => "\x27\x0e",
            0x2f => "\x27\x0f",   0x30 => "\x27\x10",   0x31 => "\x27\x11",
            0x32 => "\x27\x12",   0x33 => "\x27\x13",   0x34 => "\x27\x14",
            0x35 => "\x27\x15",   0x36 => "\x27\x16",   0x37 => "\x27\x17",
            0x38 => "\x27\x18",   0x39 => "\x27\x19",   0x3a => "\x27\x1a",
            0x3b => "\x27\x1b",   0x3c => "\x27\x1c",   0x3d => "\x27\x1d",
            0x3e => "\x27\x1e",   0x3f => "\x27\x1f",   0x40 => "\x27\x20",
            0x41 => "\x27\x21",   0x42 => "\x27\x22",   0x43 => "\x27\x23",
            0x44 => "\x27\x24",   0x45 => "\x27\x25",   0x46 => "\x27\x26",
            0x47 => "\x27\x27",   0x48 => "\x26\x05",   0x49 => "\x27\x29",
            0x4a => "\x27\x2a",   0x4b => "\x27\x2b",   0x4c => "\x27\x2c",
            0x4d => "\x27\x2d",   0x4e => "\x27\x2e",   0x4f => "\x27\x2f",
            0x50 => "\x27\x30",   0x51 => "\x27\x31",   0x52 => "\x27\x32",
            0x53 => "\x27\x33",   0x54 => "\x27\x34",   0x55 => "\x27\x35",
            0x56 => "\x27\x36",   0x57 => "\x27\x37",   0x58 => "\x27\x38",
            0x59 => "\x27\x39",   0x5a => "\x27\x3a",   0x5b => "\x27\x3b",
            0x5c => "\x27\x3c",   0x5d => "\x27\x3d",   0x5e => "\x27\x3e",
            0x5f => "\x27\x3f",   0x60 => "\x27\x40",   0x61 => "\x27\x41",
            0x62 => "\x27\x42",   0x63 => "\x27\x43",   0x64 => "\x27\x44",
            0x65 => "\x27\x45",   0x66 => "\x27\x46",   0x67 => "\x27\x47",
            0x68 => "\x27\x48",   0x69 => "\x27\x49",   0x6a => "\x27\x4a",
            0x6b => "\x27\x4b",   0x6c => "\x25\xcf",   0x6d => "\x27\x4d",
            0x6e => "\x25\xa0",   0x6f => "\x27\x4f",   0x70 => "\x27\x50",
            0x71 => "\x27\x51",   0x72 => "\x27\x52",   0x73 => "\x25\xb2",
            0x74 => "\x25\xbc",   0x75 => "\x25\xc6",   0x76 => "\x27\x56",
            0x77 => "\x25\xd7",   0x78 => "\x27\x58",   0x79 => "\x27\x59",
            0x7a => "\x27\x5a",   0x7b => "\x27\x5b",   0x7c => "\x27\x5c",
            0x7d => "\x27\x5d",   0x7e => "\x27\x5e",   0x80 => "\x27\x68",
            0x81 => "\x27\x69",   0x82 => "\x27\x6a",   0x83 => "\x27\x6b",
            0x84 => "\x27\x6c",   0x85 => "\x27\x6d",   0x86 => "\x27\x6e",
            0x87 => "\x27\x6f",   0x88 => "\x27\x70",   0x89 => "\x27\x71",
            0x8a => "\x27\x72",   0x8b => "\x27\x73",   0x8c => "\x27\x74",
            0x8d => "\x27\x75",   0xa1 => "\x27\x61",   0xa2 => "\x27\x62",
            0xa3 => "\x27\x63",   0xa4 => "\x27\x64",   0xa5 => "\x27\x65",
            0xa6 => "\x27\x66",   0xa7 => "\x27\x67",   0xa8 => "\x26\x63",
            0xa9 => "\x26\x66",   0xaa => "\x26\x65",   0xab => "\x26\x60",
            0xac => "\x24\x60",   0xad => "\x24\x61",   0xae => "\x24\x62",
            0xaf => "\x24\x63",   0xb0 => "\x24\x64",   0xb1 => "\x24\x65",
            0xb2 => "\x24\x66",   0xb3 => "\x24\x67",   0xb4 => "\x24\x68",
            0xb5 => "\x24\x69",   0xb6 => "\x27\x76",   0xb7 => "\x27\x77",
            0xb8 => "\x27\x78",   0xb9 => "\x27\x79",   0xba => "\x27\x7a",
            0xbb => "\x27\x7b",   0xbc => "\x27\x7c",   0xbd => "\x27\x7d",
            0xbe => "\x27\x7e",   0xbf => "\x27\x7f",   0xc0 => "\x27\x80",
            0xc1 => "\x27\x81",   0xc2 => "\x27\x82",   0xc3 => "\x27\x83",
            0xc4 => "\x27\x84",   0xc5 => "\x27\x85",   0xc6 => "\x27\x86",
            0xc7 => "\x27\x87",   0xc8 => "\x27\x88",   0xc9 => "\x27\x89",
            0xca => "\x27\x8a",   0xcb => "\x27\x8b",   0xcc => "\x27\x8c",
            0xcd => "\x27\x8d",   0xce => "\x27\x8e",   0xcf => "\x27\x8f",
            0xd0 => "\x27\x90",   0xd1 => "\x27\x91",   0xd2 => "\x27\x92",
            0xd3 => "\x27\x93",   0xd4 => "\x27\x94",   0xd5 => "\x21\x92",
            0xd6 => "\x21\x94",   0xd7 => "\x21\x95",   0xd8 => "\x27\x98",
            0xd9 => "\x27\x99",   0xda => "\x27\x9a",   0xdb => "\x27\x9b",
            0xdc => "\x27\x9c",   0xdd => "\x27\x9d",   0xde => "\x27\x9e",
            0xdf => "\x27\x9f",   0xe0 => "\x27\xa0",   0xe1 => "\x27\xa1",
            0xe2 => "\x27\xa2",   0xe3 => "\x27\xa3",   0xe4 => "\x27\xa4",
            0xe5 => "\x27\xa5",   0xe6 => "\x27\xa6",   0xe7 => "\x27\xa7",
            0xe8 => "\x27\xa8",   0xe9 => "\x27\xa9",   0xea => "\x27\xaa",
            0xeb => "\x27\xab",   0xec => "\x27\xac",   0xed => "\x27\xad",
            0xee => "\x27\xae",   0xef => "\x27\xaf",   0xf1 => "\x27\xb1",
            0xf2 => "\x27\xb2",   0xf3 => "\x27\xb3",   0xf4 => "\x27\xb4",
            0xf5 => "\x27\xb5",   0xf6 => "\x27\xb6",   0xf7 => "\x27\xb7",
            0xf8 => "\x27\xb8",   0xf9 => "\x27\xb9",   0xfa => "\x27\xba",
            0xfb => "\x27\xbb",   0xfc => "\x27\xbc",   0xfd => "\x27\xbd",
            0xfe => "\x27\xbe");



  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x38\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00"
          . "\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00"
          . "\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00"
          . "\x65\x00\x64\x00\x2e\x00\x49\x00\x54\x00\x43\x00\x20\x00\x5a\x00"
          . "\x61\x00\x70\x00\x66\x00\x20\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
          . "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x69\x00\x73\x00\x20\x00"
          . "\x61\x00\x20\x00\x72\x00\x65\x00\x67\x00\x69\x00\x73\x00\x74\x00"
          . "\x65\x00\x72\x00\x65\x00\x64\x00\x20\x00\x74\x00\x72\x00\x61\x00"
          . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
          . "\x66\x00\x20\x00\x49\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\x00"
          . "\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x6c\x00\x20\x00"
          . "\x54\x00\x79\x00\x70\x00\x65\x00\x66\x00\x61\x00\x63\x00\x65\x00"
          . "\x20\x00\x43\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
          . "\x62\x00\x61\x00\x74\x00\x73";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x38\x00\x32";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
          . "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x4d\x00\x65\x00\x64\x00"
          . "\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
          . "\x62\x00\x61\x00\x74\x00\x73";

        $this->_isBold = false;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 1000;
        $this->_descent = 0;
        $this->_lineGap = 200;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x03ce,   0x03 => 0x03c1,
            0x04 => 0x03ce,   0x05 => 0x03d4,   0x06 => 0x02cf,   0x07 => 0x0315,
            0x08 => 0x0316,   0x09 => 0x0317,   0x0a => 0x02b2,   0x0b => 0x03c0,
            0x0c => 0x03ab,   0x0d => 0x0225,   0x0e => 0x0357,   0x0f => 0x038f,
            0x10 => 0x03a5,   0x11 => 0x038f,   0x12 => 0x03b1,   0x13 => 0x03ce,
            0x14 => 0x02f3,   0x15 => 0x034e,   0x16 => 0x02fa,   0x17 => 0x02f9,
            0x18 => 0x023b,   0x19 => 0x02a5,   0x1a => 0x02fb,   0x1b => 0x02f8,
            0x1c => 0x02f7,   0x1d => 0x02f2,   0x1e => 0x01ee,   0x1f => 0x0228,
            0x20 => 0x0219,   0x21 => 0x0241,   0x22 => 0x02b4,   0x23 => 0x0312,
            0x24 => 0x0314,   0x25 => 0x0314,   0x26 => 0x0316,   0x27 => 0x0319,
            0x28 => 0x031a,   0x29 => 0x0330,   0x2a => 0x0337,   0x2b => 0x0315,
            0x2c => 0x0349,   0x2d => 0x0337,   0x2e => 0x0341,   0x2f => 0x0330,
            0x30 => 0x033f,   0x31 => 0x039b,   0x32 => 0x02e8,   0x33 => 0x02d3,
            0x34 => 0x02ed,   0x35 => 0x0316,   0x36 => 0x0318,   0x37 => 0x02b7,
            0x38 => 0x0308,   0x39 => 0x0300,   0x3a => 0x0318,   0x3b => 0x02f7,
            0x3c => 0x02c3,   0x3d => 0x02c4,   0x3e => 0x02aa,   0x3f => 0x02bd,
            0x40 => 0x033a,   0x41 => 0x032f,   0x42 => 0x0315,   0x43 => 0x0315,
            0x44 => 0x02c3,   0x45 => 0x02af,   0x46 => 0x02b8,   0x47 => 0x02b1,
            0x48 => 0x0312,   0x49 => 0x0313,   0x4a => 0x02c9,   0x4b => 0x0317,
            0x4c => 0x0311,   0x4d => 0x0317,   0x4e => 0x0369,   0x4f => 0x02f9,
            0x50 => 0x02fa,   0x51 => 0x02fa,   0x52 => 0x02f7,   0x53 => 0x02f7,
            0x54 => 0x037c,   0x55 => 0x037c,   0x56 => 0x0314,   0x57 => 0x0310,
            0x58 => 0x01b6,   0x59 =>   0x8a,   0x5a => 0x0115,   0x5b => 0x019f,
            0x5c => 0x0188,   0x5d => 0x0188,   0x5e => 0x029c,   0x5f => 0x029c,
            0x60 => 0x0186,   0x61 => 0x0186,   0x62 => 0x013d,   0x63 => 0x013d,
            0x64 => 0x0114,   0x65 => 0x0114,   0x66 => 0x01fd,   0x67 => 0x01fd,
            0x68 => 0x019a,   0x69 => 0x019a,   0x6a =>   0xea,   0x6b =>   0xea,
            0x6c => 0x014e,   0x6d => 0x014e,   0x6e => 0x02dc,   0x6f => 0x0220,
            0x70 => 0x0220,   0x71 => 0x038e,   0x72 => 0x029b,   0x73 => 0x02f8,
            0x74 => 0x02f8,   0x75 => 0x0308,   0x76 => 0x0253,   0x77 => 0x02b6,
            0x78 => 0x0272,   0x79 => 0x0314,   0x7a => 0x0314,   0x7b => 0x0314,
            0x7c => 0x0314,   0x7d => 0x0314,   0x7e => 0x0314,   0x7f => 0x0314,
            0x80 => 0x0314,   0x81 => 0x0314,   0x82 => 0x0314,   0x83 => 0x0314,
            0x84 => 0x0314,   0x85 => 0x0314,   0x86 => 0x0314,   0x87 => 0x0314,
            0x88 => 0x0314,   0x89 => 0x0314,   0x8a => 0x0314,   0x8b => 0x0314,
            0x8c => 0x0314,   0x8d => 0x0314,   0x8e => 0x0314,   0x8f => 0x0314,
            0x90 => 0x0314,   0x91 => 0x0314,   0x92 => 0x0314,   0x93 => 0x0314,
            0x94 => 0x0314,   0x95 => 0x0314,   0x96 => 0x0314,   0x97 => 0x0314,
            0x98 => 0x0314,   0x99 => 0x0314,   0x9a => 0x0314,   0x9b => 0x0314,
            0x9c => 0x0314,   0x9d => 0x0314,   0x9e => 0x0314,   0x9f => 0x0314,
            0xa0 => 0x0314,   0xa1 => 0x037e,   0xa2 => 0x0346,   0xa3 => 0x03f8,
            0xa4 => 0x01ca,   0xa5 => 0x02ec,   0xa6 => 0x039c,   0xa7 => 0x02ec,
            0xa8 => 0x0396,   0xa9 => 0x039f,   0xaa => 0x03a0,   0xab => 0x03a0,
            0xac => 0x0342,   0xad => 0x0369,   0xae => 0x033c,   0xaf => 0x039c,
            0xb0 => 0x039c,   0xb1 => 0x0395,   0xb2 => 0x03a2,   0xb3 => 0x03a3,
            0xb4 => 0x01cf,   0xb5 => 0x0373,   0xb6 => 0x0344,   0xb7 => 0x0344,
            0xb8 => 0x0363,   0xb9 => 0x0363,   0xba => 0x02b8,   0xbb => 0x02b8,
            0xbc => 0x036a,   0xbd => 0x036a,   0xbe => 0x02f8,   0xbf => 0x03b2,
            0xc0 => 0x0303,   0xc1 => 0x0361,   0xc2 => 0x0303,   0xc3 => 0x0378,
            0xc4 => 0x03c7,   0xc5 => 0x0378,   0xc6 => 0x033f,   0xc7 => 0x0369,
            0xc8 => 0x039f,   0xc9 => 0x03ca,   0xca => 0x0396);

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01, 0x2701 =>   0x02, 0x2702 =>   0x03, 0x2703 =>   0x04,
          0x2704 =>   0x05, 0x260e =>   0x06, 0x2706 =>   0x07, 0x2707 =>   0x08,
          0x2708 =>   0x09, 0x2709 =>   0x0a, 0x261b =>   0x0b, 0x261e =>   0x0c,
          0x270c =>   0x0d, 0x270d =>   0x0e, 0x270e =>   0x0f, 0x270f =>   0x10,
          0x2710 =>   0x11, 0x2711 =>   0x12, 0x2712 =>   0x13, 0x2713 =>   0x14,
          0x2714 =>   0x15, 0x2715 =>   0x16, 0x2716 =>   0x17, 0x2717 =>   0x18,
          0x2718 =>   0x19, 0x2719 =>   0x1a, 0x271a =>   0x1b, 0x271b =>   0x1c,
          0x271c =>   0x1d, 0x271d =>   0x1e, 0x271e =>   0x1f, 0x271f =>   0x20,
          0x2720 =>   0x21, 0x2721 =>   0x22, 0x2722 =>   0x23, 0x2723 =>   0x24,
          0x2724 =>   0x25, 0x2725 =>   0x26, 0x2726 =>   0x27, 0x2727 =>   0x28,
          0x2605 =>   0x29, 0x2729 =>   0x2a, 0x272a =>   0x2b, 0x272b =>   0x2c,
          0x272c =>   0x2d, 0x272d =>   0x2e, 0x272e =>   0x2f, 0x272f =>   0x30,
          0x2730 =>   0x31, 0x2731 =>   0x32, 0x2732 =>   0x33, 0x2733 =>   0x34,
          0x2734 =>   0x35, 0x2735 =>   0x36, 0x2736 =>   0x37, 0x2737 =>   0x38,
          0x2738 =>   0x39, 0x2739 =>   0x3a, 0x273a =>   0x3b, 0x273b =>   0x3c,
          0x273c =>   0x3d, 0x273d =>   0x3e, 0x273e =>   0x3f, 0x273f =>   0x40,
          0x2740 =>   0x41, 0x2741 =>   0x42, 0x2742 =>   0x43, 0x2743 =>   0x44,
          0x2744 =>   0x45, 0x2745 =>   0x46, 0x2746 =>   0x47, 0x2747 =>   0x48,
          0x2748 =>   0x49, 0x2749 =>   0x4a, 0x274a =>   0x4b, 0x274b =>   0x4c,
          0x25cf =>   0x4d, 0x274d =>   0x4e, 0x25a0 =>   0x4f, 0x274f =>   0x50,
          0x2750 =>   0x51, 0x2751 =>   0x52, 0x2752 =>   0x53, 0x25b2 =>   0x54,
          0x25bc =>   0x55, 0x25c6 =>   0x56, 0x2756 =>   0x57, 0x25d7 =>   0x58,
          0x2758 =>   0x59, 0x2759 =>   0x5a, 0x275a =>   0x5b, 0x275b =>   0x5c,
          0x275c =>   0x5d, 0x275d =>   0x5e, 0x275e =>   0x5f, 0x2768 =>   0x60,
          0x2769 =>   0x61, 0x276a =>   0x62, 0x276b =>   0x63, 0x276c =>   0x64,
          0x276d =>   0x65, 0x276e =>   0x66, 0x276f =>   0x67, 0x2770 =>   0x68,
          0x2771 =>   0x69, 0x2772 =>   0x6a, 0x2773 =>   0x6b, 0x2774 =>   0x6c,
          0x2775 =>   0x6d, 0x2761 =>   0x6e, 0x2762 =>   0x6f, 0x2763 =>   0x70,
          0x2764 =>   0x71, 0x2765 =>   0x72, 0x2766 =>   0x73, 0x2767 =>   0x74,
          0x2663 =>   0x75, 0x2666 =>   0x76, 0x2665 =>   0x77, 0x2660 =>   0x78,
          0x2460 =>   0x79, 0x2461 =>   0x7a, 0x2462 =>   0x7b, 0x2463 =>   0x7c,
          0x2464 =>   0x7d, 0x2465 =>   0x7e, 0x2466 =>   0x7f, 0x2467 =>   0x80,
          0x2468 =>   0x81, 0x2469 =>   0x82, 0x2776 =>   0x83, 0x2777 =>   0x84,
          0x2778 =>   0x85, 0x2779 =>   0x86, 0x277a =>   0x87, 0x277b =>   0x88,
          0x277c =>   0x89, 0x277d =>   0x8a, 0x277e =>   0x8b, 0x277f =>   0x8c,
          0x2780 =>   0x8d, 0x2781 =>   0x8e, 0x2782 =>   0x8f, 0x2783 =>   0x90,
          0x2784 =>   0x91, 0x2785 =>   0x92, 0x2786 =>   0x93, 0x2787 =>   0x94,
          0x2788 =>   0x95, 0x2789 =>   0x96, 0x278a =>   0x97, 0x278b =>   0x98,
          0x278c =>   0x99, 0x278d =>   0x9a, 0x278e =>   0x9b, 0x278f =>   0x9c,
          0x2790 =>   0x9d, 0x2791 =>   0x9e, 0x2792 =>   0x9f, 0x2793 =>   0xa0,
          0x2794 =>   0xa1, 0x2192 =>   0xa2, 0x2194 =>   0xa3, 0x2195 =>   0xa4,
          0x2798 =>   0xa5, 0x2799 =>   0xa6, 0x279a =>   0xa7, 0x279b =>   0xa8,
          0x279c =>   0xa9, 0x279d =>   0xaa, 0x279e =>   0xab, 0x279f =>   0xac,
          0x27a0 =>   0xad, 0x27a1 =>   0xae, 0x27a2 =>   0xaf, 0x27a3 =>   0xb0,
          0x27a4 =>   0xb1, 0x27a5 =>   0xb2, 0x27a6 =>   0xb3, 0x27a7 =>   0xb4,
          0x27a8 =>   0xb5, 0x27a9 =>   0xb6, 0x27aa =>   0xb7, 0x27ab =>   0xb8,
          0x27ac =>   0xb9, 0x27ad =>   0xba, 0x27ae =>   0xbb, 0x27af =>   0xbc,
          0x27b1 =>   0xbd, 0x27b2 =>   0xbe, 0x27b3 =>   0xbf, 0x27b4 =>   0xc0,
          0x27b5 =>   0xc1, 0x27b6 =>   0xc2, 0x27b7 =>   0xc3, 0x27b8 =>   0xc4,
          0x27b9 =>   0xc5, 0x27ba =>   0xc6, 0x27bb =>   0xc7, 0x27bc =>   0xc8,
          0x27bd =>   0xc9, 0x27be =>   0xca);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('ZapfDingbats');

        /* This font has a built-in custom character encoding method. Don't
         * override with WinAnsi like the other built-in fonts or else it will
         * not work as expected.
         */
        $this->_resource->Encoding = null;
    }


  /* Information and Conversion Methods */

    /**
     * Convert string encoding from local encoding to font encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        /* This isn't the optimal time to perform this conversion, but it must
         * live here until the remainder of the layout code is completed. This,
         * and the $charEncoding parameter, will go away soon...
         */
        if ($charEncoding != 'UTF-16BE') {
            $string = iconv($charEncoding, 'UTF-16BE', $string);
        }
        /**
         * @todo Properly handle characters encoded as surrogate pairs.
         */
        $encodedString = '';
        for ($i = 0; $i < strlen($string); $i++) {
            $characterCode = (ord($string[$i++]) << 8) | ord($string[$i]);
            if (isset($this->_toFontEncoding[$characterCode])) {
                $encodedString .= $this->_toFontEncoding[$characterCode];
            } else {
                /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the well-known substitution character 0x1a
                 * (Control-Z).
                 */
            }
        }
        return $encodedString;
    }

    /**
     * Convert string encoding from font encoding to local encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    public function decodeString($string, $charEncoding)
    {
        $decodedString = '';
        for ($i = 0; $i < strlen($string); $i++) {
            $characterCode = ord($string[$i]);
            if (isset($this->_fromFontEncoding[$characterCode])) {
                $decodedString .= $this->_fromFontEncoding[$characterCode];
            } else {
                /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the Unicode substitution character (U+FFFD).
                 */
            }
        }
        if ($charEncoding != 'UTF-16BE') {
            $decodedString = iconv('UTF-16BE', $charEncoding, $decodedString);
        }
        return $decodedString;
    }

    /**
     * Converts a Latin-encoded string that fakes the font's internal encoding
     * to the proper Unicode characters, in UTF-16BE encoding.
     *
     * Used to maintain backwards compatibility with the 20 year-old legacy
     * method of using this font, which is still employed by recent versions of
     * some popular word processors.
     *
     * Note that using this method adds overhead due to the additional
     * character conversion. Don't use this for new code; it is more efficient
     * to use the appropriate Unicode characters directly.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source
     *   string. Defaults to current locale.
     * @return string
     */
    public function toUnicode($string, $charEncoding = '')
    {
        /* When using these faked strings, the closest match to the font's
         * internal encoding is ISO-8859-1.
         */
        if ($charEncoding != 'ISO-8859-1') {
            $string = iconv($charEncoding, 'ISO-8859-1', $string);
        }
        return $this->decodeString($string, 'UTF-16BE');
    }

}
PKpG[
�gNJNJ0Pdf/Resource/Font/Simple/Standard/TimesRoman.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Times-Roman.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_TimesRoman extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
          . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
          . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
          . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
          . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
          . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
          . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
          . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
          . "\x65\x00\x73\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x52\x00\x6f\x00\x6d\x00\x61\x00\x6e";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x38";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00"
          . "\x6d\x00\x61\x00\x6e\x00\x20\x00\x52\x00\x6f\x00\x6d\x00\x61\x00"
          . "\x6e";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00"
          . "\x6d\x00\x61\x00\x6e";

        $this->_isBold = false;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 683;
        $this->_descent = -217;
        $this->_lineGap = 300;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 =>   0xfa,   0x02 => 0x014d,   0x03 => 0x0198,
            0x04 => 0x01f4,   0x05 => 0x01f4,   0x06 => 0x0341,   0x07 => 0x030a,
            0x08 => 0x014d,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x01f4,
            0x0c => 0x0234,   0x0d =>   0xfa,   0x0e => 0x014d,   0x0f =>   0xfa,
            0x10 => 0x0116,   0x11 => 0x01f4,   0x12 => 0x01f4,   0x13 => 0x01f4,
            0x14 => 0x01f4,   0x15 => 0x01f4,   0x16 => 0x01f4,   0x17 => 0x01f4,
            0x18 => 0x01f4,   0x19 => 0x01f4,   0x1a => 0x01f4,   0x1b => 0x0116,
            0x1c => 0x0116,   0x1d => 0x0234,   0x1e => 0x0234,   0x1f => 0x0234,
            0x20 => 0x01bc,   0x21 => 0x0399,   0x22 => 0x02d2,   0x23 => 0x029b,
            0x24 => 0x029b,   0x25 => 0x02d2,   0x26 => 0x0263,   0x27 => 0x022c,
            0x28 => 0x02d2,   0x29 => 0x02d2,   0x2a => 0x014d,   0x2b => 0x0185,
            0x2c => 0x02d2,   0x2d => 0x0263,   0x2e => 0x0379,   0x2f => 0x02d2,
            0x30 => 0x02d2,   0x31 => 0x022c,   0x32 => 0x02d2,   0x33 => 0x029b,
            0x34 => 0x022c,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x02d2,
            0x38 => 0x03b0,   0x39 => 0x02d2,   0x3a => 0x02d2,   0x3b => 0x0263,
            0x3c => 0x014d,   0x3d => 0x0116,   0x3e => 0x014d,   0x3f => 0x01d5,
            0x40 => 0x01f4,   0x41 => 0x014d,   0x42 => 0x01bc,   0x43 => 0x01f4,
            0x44 => 0x01bc,   0x45 => 0x01f4,   0x46 => 0x01bc,   0x47 => 0x014d,
            0x48 => 0x01f4,   0x49 => 0x01f4,   0x4a => 0x0116,   0x4b => 0x0116,
            0x4c => 0x01f4,   0x4d => 0x0116,   0x4e => 0x030a,   0x4f => 0x01f4,
            0x50 => 0x01f4,   0x51 => 0x01f4,   0x52 => 0x01f4,   0x53 => 0x014d,
            0x54 => 0x0185,   0x55 => 0x0116,   0x56 => 0x01f4,   0x57 => 0x01f4,
            0x58 => 0x02d2,   0x59 => 0x01f4,   0x5a => 0x01f4,   0x5b => 0x01bc,
            0x5c => 0x01e0,   0x5d =>   0xc8,   0x5e => 0x01e0,   0x5f => 0x021d,
            0x60 => 0x014d,   0x61 => 0x01f4,   0x62 => 0x01f4,   0x63 =>   0xa7,
            0x64 => 0x01f4,   0x65 => 0x01f4,   0x66 => 0x01f4,   0x67 => 0x01f4,
            0x68 =>   0xb4,   0x69 => 0x01bc,   0x6a => 0x01f4,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x022c,   0x6e => 0x022c,   0x6f => 0x01f4,
            0x70 => 0x01f4,   0x71 => 0x01f4,   0x72 =>   0xfa,   0x73 => 0x01c5,
            0x74 => 0x015e,   0x75 => 0x014d,   0x76 => 0x01bc,   0x77 => 0x01bc,
            0x78 => 0x01f4,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x01bc,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x0379,   0x8b => 0x0114,
            0x8c => 0x0263,   0x8d => 0x02d2,   0x8e => 0x0379,   0x8f => 0x0136,
            0x90 => 0x029b,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x01f4,
            0x94 => 0x02d2,   0x95 => 0x01f4,   0x96 => 0x014d,   0x97 => 0x01bc,
            0x98 => 0x01bc,   0x99 => 0x01f4,   0x9a => 0x01bc,   0x9b => 0x02d2,
            0x9c => 0x0234,   0x9d => 0x02d2,   0x9e => 0x02d2,   0x9f => 0x01bc,
            0xa0 => 0x02d2,   0xa1 => 0x01f4,   0xa2 => 0x0185,   0xa3 => 0x01bc,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x01bc,   0xa7 => 0x02d2,
            0xa8 => 0x01f4,   0xa9 => 0x0263,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02f8,   0xad => 0x0263,   0xae => 0x01bc,   0xaf => 0x01bc,
            0xb0 => 0x02d2,   0xb1 => 0x0116,   0xb2 => 0x01bc,   0xb3 => 0x0263,
            0xb4 => 0x029b,   0xb5 => 0x01bc,   0xb6 => 0x0263,   0xb7 => 0x0185,
            0xb8 => 0x0185,   0xb9 => 0x0116,   0xba => 0x01d7,   0xbb => 0x029b,
            0xbc => 0x02d2,   0xbd => 0x01f4,   0xbe => 0x01bc,   0xbf => 0x02d2,
            0xc0 => 0x014d,   0xc1 => 0x01bc,   0xc2 => 0x0263,   0xc3 => 0x022c,
            0xc4 => 0x02d2,   0xc5 => 0x029b,   0xc6 => 0x022c,   0xc7 => 0x024c,
            0xc8 => 0x02d2,   0xc9 => 0x01f4,   0xca => 0x012c,   0xcb => 0x02d2,
            0xcc => 0x02d2,   0xcd => 0x02d2,   0xce => 0x0234,   0xcf => 0x01f4,
            0xd0 => 0x0263,   0xd1 => 0x01dc,   0xd2 => 0x01f4,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x0263,   0xd6 => 0x01bc,   0xd7 => 0x01bc,
            0xd8 => 0x01bc,   0xd9 => 0x01f4,   0xda => 0x01f4,   0xdb => 0x02d2,
            0xdc => 0x014d,   0xdd => 0x0234,   0xde =>   0xc8,   0xdf => 0x02f8,
            0xe0 => 0x02d2,   0xe1 => 0x014d,   0xe2 => 0x0258,   0xe3 => 0x0263,
            0xe4 => 0x014d,   0xe5 => 0x01f4,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x029b,   0xeb => 0x0116,
            0xec => 0x0146,   0xed => 0x01bc,   0xee => 0x02d2,   0xef => 0x02d2,
            0xf0 => 0x02d2,   0xf1 => 0x01bc,   0xf2 => 0x01bc,   0xf3 => 0x0116,
            0xf4 => 0x02d2,   0xf5 => 0x01f4,   0xf6 => 0x01bc,   0xf7 => 0x0185,
            0xf8 => 0x0116,   0xf9 => 0x02d2,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x01f4,   0xfd => 0x012c,   0xfe => 0x02d2,   0xff => 0x01f4,
          0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4,
          0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x0158, 0x0107 => 0x02d2,
          0x0108 => 0x0263, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d,
          0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
          0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263,
          0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
          0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
          0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2,
          0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b,
          0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
          0x0128 => 0x02d2, 0x0129 => 0x01bc, 0x012a => 0x0263, 0x012b => 0x014d,
          0x012c => 0x01f4, 0x012d => 0x0234, 0x012e => 0x014d, 0x012f => 0x01f4,
          0x0130 => 0x0116, 0x0131 => 0x0234, 0x0132 => 0x01f4, 0x0133 => 0x01f4,
          0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc,
          0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Roman');
    }

}
PKpG[o�
�J�J3Pdf/Resource/Font/Simple/Standard/HelveticaBold.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Helvetica-Bold.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
          . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
          . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
          . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
          . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
          . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
          . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
          . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
          . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
          . "\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x32";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00"
          . "\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64";

        $this->_isBold = true;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 718;
        $this->_descent = -207;
        $this->_lineGap = 275;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x014d,   0x03 => 0x01da,
            0x04 => 0x022c,   0x05 => 0x022c,   0x06 => 0x0379,   0x07 => 0x02d2,
            0x08 => 0x0116,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x0185,
            0x0c => 0x0248,   0x0d => 0x0116,   0x0e => 0x014d,   0x0f => 0x0116,
            0x10 => 0x0116,   0x11 => 0x022c,   0x12 => 0x022c,   0x13 => 0x022c,
            0x14 => 0x022c,   0x15 => 0x022c,   0x16 => 0x022c,   0x17 => 0x022c,
            0x18 => 0x022c,   0x19 => 0x022c,   0x1a => 0x022c,   0x1b => 0x014d,
            0x1c => 0x014d,   0x1d => 0x0248,   0x1e => 0x0248,   0x1f => 0x0248,
            0x20 => 0x0263,   0x21 => 0x03cf,   0x22 => 0x02d2,   0x23 => 0x02d2,
            0x24 => 0x02d2,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x0263,
            0x28 => 0x030a,   0x29 => 0x02d2,   0x2a => 0x0116,   0x2b => 0x022c,
            0x2c => 0x02d2,   0x2d => 0x0263,   0x2e => 0x0341,   0x2f => 0x02d2,
            0x30 => 0x030a,   0x31 => 0x029b,   0x32 => 0x030a,   0x33 => 0x02d2,
            0x34 => 0x029b,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x029b,
            0x38 => 0x03b0,   0x39 => 0x029b,   0x3a => 0x029b,   0x3b => 0x0263,
            0x3c => 0x014d,   0x3d => 0x0116,   0x3e => 0x014d,   0x3f => 0x0248,
            0x40 => 0x022c,   0x41 => 0x0116,   0x42 => 0x022c,   0x43 => 0x0263,
            0x44 => 0x022c,   0x45 => 0x0263,   0x46 => 0x022c,   0x47 => 0x014d,
            0x48 => 0x0263,   0x49 => 0x0263,   0x4a => 0x0116,   0x4b => 0x0116,
            0x4c => 0x022c,   0x4d => 0x0116,   0x4e => 0x0379,   0x4f => 0x0263,
            0x50 => 0x0263,   0x51 => 0x0263,   0x52 => 0x0263,   0x53 => 0x0185,
            0x54 => 0x022c,   0x55 => 0x014d,   0x56 => 0x0263,   0x57 => 0x022c,
            0x58 => 0x030a,   0x59 => 0x022c,   0x5a => 0x022c,   0x5b => 0x01f4,
            0x5c => 0x0185,   0x5d => 0x0118,   0x5e => 0x0185,   0x5f => 0x0248,
            0x60 => 0x014d,   0x61 => 0x022c,   0x62 => 0x022c,   0x63 =>   0xa7,
            0x64 => 0x022c,   0x65 => 0x022c,   0x66 => 0x022c,   0x67 => 0x022c,
            0x68 =>   0xee,   0x69 => 0x01f4,   0x6a => 0x022c,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x0263,   0x6e => 0x0263,   0x6f => 0x022c,
            0x70 => 0x022c,   0x71 => 0x022c,   0x72 => 0x0116,   0x73 => 0x022c,
            0x74 => 0x015e,   0x75 => 0x0116,   0x76 => 0x01f4,   0x77 => 0x01f4,
            0x78 => 0x022c,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x0263,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03e8,   0x8b => 0x0172,
            0x8c => 0x0263,   0x8d => 0x030a,   0x8e => 0x03e8,   0x8f => 0x016d,
            0x90 => 0x0379,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x0263,
            0x94 => 0x03b0,   0x95 => 0x0263,   0x96 => 0x0116,   0x97 => 0x022c,
            0x98 => 0x022c,   0x99 => 0x0263,   0x9a => 0x022c,   0x9b => 0x029b,
            0x9c => 0x0248,   0x9d => 0x029b,   0x9e => 0x02d2,   0x9f => 0x022c,
            0xa0 => 0x02d2,   0xa1 => 0x022c,   0xa2 => 0x022c,   0xa3 => 0x022c,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x022c,   0xa7 => 0x02d2,
            0xa8 => 0x0263,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02e1,   0xad => 0x029b,   0xae => 0x022c,   0xaf => 0x022c,
            0xb0 => 0x02d2,   0xb1 => 0x0116,   0xb2 => 0x022c,   0xb3 => 0x0263,
            0xb4 => 0x02d2,   0xb5 => 0x022c,   0xb6 => 0x029b,   0xb7 => 0x022c,
            0xb8 => 0x022c,   0xb9 => 0x0116,   0xba => 0x01ee,   0xbb => 0x02d2,
            0xbc => 0x030a,   0xbd => 0x0263,   0xbe => 0x022c,   0xbf => 0x02d2,
            0xc0 => 0x0185,   0xc1 => 0x022c,   0xc2 => 0x0263,   0xc3 => 0x029b,
            0xc4 => 0x030a,   0xc5 => 0x02d2,   0xc6 => 0x029b,   0xc7 => 0x02e7,
            0xc8 => 0x02d2,   0xc9 => 0x0263,   0xca => 0x014d,   0xcb => 0x030a,
            0xcc => 0x02d2,   0xcd => 0x02d2,   0xce => 0x0248,   0xcf => 0x0263,
            0xd0 => 0x0263,   0xd1 => 0x01ee,   0xd2 => 0x022c,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x022c,   0xd7 => 0x022c,
            0xd8 => 0x022c,   0xd9 => 0x0263,   0xda => 0x0263,   0xdb => 0x02d2,
            0xdc => 0x0116,   0xdd => 0x0248,   0xde => 0x0118,   0xdf => 0x02e1,
            0xe0 => 0x030a,   0xe1 => 0x0116,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x0185,   0xe5 => 0x0263,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x02d2,   0xeb => 0x0116,
            0xec => 0x0185,   0xed => 0x022c,   0xee => 0x02d2,   0xef => 0x02d2,
            0xf0 => 0x02d2,   0xf1 => 0x022c,   0xf2 => 0x01f4,   0xf3 => 0x0116,
            0xf4 => 0x030a,   0xf5 => 0x0263,   0xf6 => 0x022c,   0xf7 => 0x022c,
            0xf8 => 0x0116,   0xf9 => 0x030a,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x0263,   0xfd => 0x014d,   0xfe => 0x030a,   0xff => 0x0263,
          0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263,
          0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2,
          0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
          0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225,
          0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b,
          0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263,
          0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2,
          0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2,
          0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
          0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
          0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263,
          0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263,
          0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4,
          0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-Bold');
    }

}
PKpG[�0>�J�J5Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Times-BoldItalic.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
          . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
          . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
          . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
          . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
          . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
          . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
          . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
          . "\x65\x00\x73\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x36";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
          . "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00"
          . "\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
          . "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63";

        $this->_isBold = true;
        $this->_isItalic = true;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 683;
        $this->_descent = -217;
        $this->_lineGap = 300;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 =>   0xfa,   0x02 => 0x0185,   0x03 => 0x022b,
            0x04 => 0x01f4,   0x05 => 0x01f4,   0x06 => 0x0341,   0x07 => 0x030a,
            0x08 => 0x014d,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x01f4,
            0x0c => 0x023a,   0x0d =>   0xfa,   0x0e => 0x014d,   0x0f =>   0xfa,
            0x10 => 0x0116,   0x11 => 0x01f4,   0x12 => 0x01f4,   0x13 => 0x01f4,
            0x14 => 0x01f4,   0x15 => 0x01f4,   0x16 => 0x01f4,   0x17 => 0x01f4,
            0x18 => 0x01f4,   0x19 => 0x01f4,   0x1a => 0x01f4,   0x1b => 0x014d,
            0x1c => 0x014d,   0x1d => 0x023a,   0x1e => 0x023a,   0x1f => 0x023a,
            0x20 => 0x01f4,   0x21 => 0x0340,   0x22 => 0x029b,   0x23 => 0x029b,
            0x24 => 0x029b,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x029b,
            0x28 => 0x02d2,   0x29 => 0x030a,   0x2a => 0x0185,   0x2b => 0x01f4,
            0x2c => 0x029b,   0x2d => 0x0263,   0x2e => 0x0379,   0x2f => 0x02d2,
            0x30 => 0x02d2,   0x31 => 0x0263,   0x32 => 0x02d2,   0x33 => 0x029b,
            0x34 => 0x022c,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x029b,
            0x38 => 0x0379,   0x39 => 0x029b,   0x3a => 0x0263,   0x3b => 0x0263,
            0x3c => 0x014d,   0x3d => 0x0116,   0x3e => 0x014d,   0x3f => 0x023a,
            0x40 => 0x01f4,   0x41 => 0x014d,   0x42 => 0x01f4,   0x43 => 0x01f4,
            0x44 => 0x01bc,   0x45 => 0x01f4,   0x46 => 0x01bc,   0x47 => 0x014d,
            0x48 => 0x01f4,   0x49 => 0x022c,   0x4a => 0x0116,   0x4b => 0x0116,
            0x4c => 0x01f4,   0x4d => 0x0116,   0x4e => 0x030a,   0x4f => 0x022c,
            0x50 => 0x01f4,   0x51 => 0x01f4,   0x52 => 0x01f4,   0x53 => 0x0185,
            0x54 => 0x0185,   0x55 => 0x0116,   0x56 => 0x022c,   0x57 => 0x01bc,
            0x58 => 0x029b,   0x59 => 0x01f4,   0x5a => 0x01bc,   0x5b => 0x0185,
            0x5c => 0x015c,   0x5d =>   0xdc,   0x5e => 0x015c,   0x5f => 0x023a,
            0x60 => 0x0185,   0x61 => 0x01f4,   0x62 => 0x01f4,   0x63 =>   0xa7,
            0x64 => 0x01f4,   0x65 => 0x01f4,   0x66 => 0x01f4,   0x67 => 0x01f4,
            0x68 => 0x0116,   0x69 => 0x01f4,   0x6a => 0x01f4,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x022c,   0x6e => 0x022c,   0x6f => 0x01f4,
            0x70 => 0x01f4,   0x71 => 0x01f4,   0x72 =>   0xfa,   0x73 => 0x01f4,
            0x74 => 0x015e,   0x75 => 0x014d,   0x76 => 0x01f4,   0x77 => 0x01f4,
            0x78 => 0x01f4,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x01f4,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03b0,   0x8b => 0x010a,
            0x8c => 0x0263,   0x8d => 0x02d2,   0x8e => 0x03b0,   0x8f => 0x012c,
            0x90 => 0x02d2,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x01f4,
            0x94 => 0x02d2,   0x95 => 0x01f4,   0x96 => 0x0185,   0x97 => 0x01bc,
            0x98 => 0x01f4,   0x99 => 0x022c,   0x9a => 0x01bc,   0x9b => 0x0263,
            0x9c => 0x023a,   0x9d => 0x0263,   0x9e => 0x029b,   0x9f => 0x01f4,
            0xa0 => 0x02d2,   0xa1 => 0x01bc,   0xa2 => 0x0185,   0xa3 => 0x01bc,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x01f4,   0xa7 => 0x02d2,
            0xa8 => 0x022c,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02eb,   0xad => 0x029b,   0xae => 0x01bc,   0xaf => 0x01f4,
            0xb0 => 0x02d2,   0xb1 => 0x0116,   0xb2 => 0x01f4,   0xb3 => 0x0263,
            0xb4 => 0x029b,   0xb5 => 0x01f4,   0xb6 => 0x029b,   0xb7 => 0x0185,
            0xb8 => 0x0185,   0xb9 => 0x0116,   0xba => 0x01ee,   0xbb => 0x029b,
            0xbc => 0x02d2,   0xbd => 0x022c,   0xbe => 0x01f4,   0xbf => 0x029b,
            0xc0 => 0x0185,   0xc1 => 0x01bc,   0xc2 => 0x0263,   0xc3 => 0x0263,
            0xc4 => 0x02d2,   0xc5 => 0x029b,   0xc6 => 0x022c,   0xc7 => 0x0260,
            0xc8 => 0x02d2,   0xc9 => 0x022c,   0xca => 0x012c,   0xcb => 0x02d2,
            0xcc => 0x029b,   0xcd => 0x029b,   0xce => 0x023a,   0xcf => 0x022c,
            0xd0 => 0x0263,   0xd1 => 0x01ee,   0xd2 => 0x01bc,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x01f4,   0xd7 => 0x01bc,
            0xd8 => 0x01bc,   0xd9 => 0x022c,   0xda => 0x022c,   0xdb => 0x02d2,
            0xdc => 0x0185,   0xdd => 0x023a,   0xde =>   0xdc,   0xdf => 0x02eb,
            0xe0 => 0x02d2,   0xe1 => 0x0185,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x0185,   0xe5 => 0x01f4,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x029b,   0xeb => 0x0116,
            0xec => 0x016e,   0xed => 0x01bc,   0xee => 0x02d2,   0xef => 0x029b,
            0xf0 => 0x029b,   0xf1 => 0x01bc,   0xf2 => 0x0185,   0xf3 => 0x0116,
            0xf4 => 0x02d2,   0xf5 => 0x01f4,   0xf6 => 0x01f4,   0xf7 => 0x0185,
            0xf8 => 0x0116,   0xf9 => 0x02d2,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x01f4,   0xfd => 0x012c,   0xfe => 0x02d2,   0xff => 0x0240,
          0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x01f4,
          0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x017e, 0x0107 => 0x029b,
          0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185,
          0x010c => 0x0185, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
          0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
          0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
          0x011c => 0x029b, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2,
          0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b,
          0x0124 => 0x0263, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
          0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x029b, 0x012b => 0x0185,
          0x012c => 0x01f4, 0x012d => 0x025e, 0x012e => 0x0185, 0x012f => 0x022c,
          0x0130 => 0x0116, 0x0131 => 0x025e, 0x0132 => 0x01f4, 0x0133 => 0x022c,
          0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185,
          0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-BoldItalic');
    }

}
PKpG[9�-̠G�G1Pdf/Resource/Font/Simple/Standard/CourierBold.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Courier-Bold.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_CourierBold extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x34\x00\x38";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00"
          . "\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x42\x00\x6f\x00\x6c\x00\x64";

        $this->_isBold = true;
        $this->_isItalic = false;
        $this->_isMonospaced = true;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 629;
        $this->_descent = -157;
        $this->_lineGap = 414;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0258,   0x02 => 0x0258,   0x03 => 0x0258,
            0x04 => 0x0258,   0x05 => 0x0258,   0x06 => 0x0258,   0x07 => 0x0258,
            0x08 => 0x0258,   0x09 => 0x0258,   0x0a => 0x0258,   0x0b => 0x0258,
            0x0c => 0x0258,   0x0d => 0x0258,   0x0e => 0x0258,   0x0f => 0x0258,
            0x10 => 0x0258,   0x11 => 0x0258,   0x12 => 0x0258,   0x13 => 0x0258,
            0x14 => 0x0258,   0x15 => 0x0258,   0x16 => 0x0258,   0x17 => 0x0258,
            0x18 => 0x0258,   0x19 => 0x0258,   0x1a => 0x0258,   0x1b => 0x0258,
            0x1c => 0x0258,   0x1d => 0x0258,   0x1e => 0x0258,   0x1f => 0x0258,
            0x20 => 0x0258,   0x21 => 0x0258,   0x22 => 0x0258,   0x23 => 0x0258,
            0x24 => 0x0258,   0x25 => 0x0258,   0x26 => 0x0258,   0x27 => 0x0258,
            0x28 => 0x0258,   0x29 => 0x0258,   0x2a => 0x0258,   0x2b => 0x0258,
            0x2c => 0x0258,   0x2d => 0x0258,   0x2e => 0x0258,   0x2f => 0x0258,
            0x30 => 0x0258,   0x31 => 0x0258,   0x32 => 0x0258,   0x33 => 0x0258,
            0x34 => 0x0258,   0x35 => 0x0258,   0x36 => 0x0258,   0x37 => 0x0258,
            0x38 => 0x0258,   0x39 => 0x0258,   0x3a => 0x0258,   0x3b => 0x0258,
            0x3c => 0x0258,   0x3d => 0x0258,   0x3e => 0x0258,   0x3f => 0x0258,
            0x40 => 0x0258,   0x41 => 0x0258,   0x42 => 0x0258,   0x43 => 0x0258,
            0x44 => 0x0258,   0x45 => 0x0258,   0x46 => 0x0258,   0x47 => 0x0258,
            0x48 => 0x0258,   0x49 => 0x0258,   0x4a => 0x0258,   0x4b => 0x0258,
            0x4c => 0x0258,   0x4d => 0x0258,   0x4e => 0x0258,   0x4f => 0x0258,
            0x50 => 0x0258,   0x51 => 0x0258,   0x52 => 0x0258,   0x53 => 0x0258,
            0x54 => 0x0258,   0x55 => 0x0258,   0x56 => 0x0258,   0x57 => 0x0258,
            0x58 => 0x0258,   0x59 => 0x0258,   0x5a => 0x0258,   0x5b => 0x0258,
            0x5c => 0x0258,   0x5d => 0x0258,   0x5e => 0x0258,   0x5f => 0x0258,
            0x60 => 0x0258,   0x61 => 0x0258,   0x62 => 0x0258,   0x63 => 0x0258,
            0x64 => 0x0258,   0x65 => 0x0258,   0x66 => 0x0258,   0x67 => 0x0258,
            0x68 => 0x0258,   0x69 => 0x0258,   0x6a => 0x0258,   0x6b => 0x0258,
            0x6c => 0x0258,   0x6d => 0x0258,   0x6e => 0x0258,   0x6f => 0x0258,
            0x70 => 0x0258,   0x71 => 0x0258,   0x72 => 0x0258,   0x73 => 0x0258,
            0x74 => 0x0258,   0x75 => 0x0258,   0x76 => 0x0258,   0x77 => 0x0258,
            0x78 => 0x0258,   0x79 => 0x0258,   0x7a => 0x0258,   0x7b => 0x0258,
            0x7c => 0x0258,   0x7d => 0x0258,   0x7e => 0x0258,   0x7f => 0x0258,
            0x80 => 0x0258,   0x81 => 0x0258,   0x82 => 0x0258,   0x83 => 0x0258,
            0x84 => 0x0258,   0x85 => 0x0258,   0x86 => 0x0258,   0x87 => 0x0258,
            0x88 => 0x0258,   0x89 => 0x0258,   0x8a => 0x0258,   0x8b => 0x0258,
            0x8c => 0x0258,   0x8d => 0x0258,   0x8e => 0x0258,   0x8f => 0x0258,
            0x90 => 0x0258,   0x91 => 0x0258,   0x92 => 0x0258,   0x93 => 0x0258,
            0x94 => 0x0258,   0x95 => 0x0258,   0x96 => 0x0258,   0x97 => 0x0258,
            0x98 => 0x0258,   0x99 => 0x0258,   0x9a => 0x0258,   0x9b => 0x0258,
            0x9c => 0x0258,   0x9d => 0x0258,   0x9e => 0x0258,   0x9f => 0x0258,
            0xa0 => 0x0258,   0xa1 => 0x0258,   0xa2 => 0x0258,   0xa3 => 0x0258,
            0xa4 => 0x0258,   0xa5 => 0x0258,   0xa6 => 0x0258,   0xa7 => 0x0258,
            0xa8 => 0x0258,   0xa9 => 0x0258,   0xaa => 0x0258,   0xab => 0x0258,
            0xac => 0x0258,   0xad => 0x0258,   0xae => 0x0258,   0xaf => 0x0258,
            0xb0 => 0x0258,   0xb1 => 0x0258,   0xb2 => 0x0258,   0xb3 => 0x0258,
            0xb4 => 0x0258,   0xb5 => 0x0258,   0xb6 => 0x0258,   0xb7 => 0x0258,
            0xb8 => 0x0258,   0xb9 => 0x0258,   0xba => 0x0258,   0xbb => 0x0258,
            0xbc => 0x0258,   0xbd => 0x0258,   0xbe => 0x0258,   0xbf => 0x0258,
            0xc0 => 0x0258,   0xc1 => 0x0258,   0xc2 => 0x0258,   0xc3 => 0x0258,
            0xc4 => 0x0258,   0xc5 => 0x0258,   0xc6 => 0x0258,   0xc7 => 0x0258,
            0xc8 => 0x0258,   0xc9 => 0x0258,   0xca => 0x0258,   0xcb => 0x0258,
            0xcc => 0x0258,   0xcd => 0x0258,   0xce => 0x0258,   0xcf => 0x0258,
            0xd0 => 0x0258,   0xd1 => 0x0258,   0xd2 => 0x0258,   0xd3 => 0x0258,
            0xd4 => 0x0258,   0xd5 => 0x0258,   0xd6 => 0x0258,   0xd7 => 0x0258,
            0xd8 => 0x0258,   0xd9 => 0x0258,   0xda => 0x0258,   0xdb => 0x0258,
            0xdc => 0x0258,   0xdd => 0x0258,   0xde => 0x0258,   0xdf => 0x0258,
            0xe0 => 0x0258,   0xe1 => 0x0258,   0xe2 => 0x0258,   0xe3 => 0x0258,
            0xe4 => 0x0258,   0xe5 => 0x0258,   0xe6 => 0x0258,   0xe7 => 0x0258,
            0xe8 => 0x0258,   0xe9 => 0x0258,   0xea => 0x0258,   0xeb => 0x0258,
            0xec => 0x0258,   0xed => 0x0258,   0xee => 0x0258,   0xef => 0x0258,
            0xf0 => 0x0258,   0xf1 => 0x0258,   0xf2 => 0x0258,   0xf3 => 0x0258,
            0xf4 => 0x0258,   0xf5 => 0x0258,   0xf6 => 0x0258,   0xf7 => 0x0258,
            0xf8 => 0x0258,   0xf9 => 0x0258,   0xfa => 0x0258,   0xfb => 0x0258,
            0xfc => 0x0258,   0xfd => 0x0258,   0xfe => 0x0258,   0xff => 0x0258,
          0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
          0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
          0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
          0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
          0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
          0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
          0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
          0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
          0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
          0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
          0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
          0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
          0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
          0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
          0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-Bold');
    }

}
PKpG[lc��3H3H8Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Courier-BoldOblique.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x34\x00\x39";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00"
          . "\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00"
          . "\x71\x00\x75\x00\x65";

        $this->_isBold = true;
        $this->_isItalic = true;
        $this->_isMonospaced = true;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 629;
        $this->_descent = -157;
        $this->_lineGap = 414;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0258,   0x02 => 0x0258,   0x03 => 0x0258,
            0x04 => 0x0258,   0x05 => 0x0258,   0x06 => 0x0258,   0x07 => 0x0258,
            0x08 => 0x0258,   0x09 => 0x0258,   0x0a => 0x0258,   0x0b => 0x0258,
            0x0c => 0x0258,   0x0d => 0x0258,   0x0e => 0x0258,   0x0f => 0x0258,
            0x10 => 0x0258,   0x11 => 0x0258,   0x12 => 0x0258,   0x13 => 0x0258,
            0x14 => 0x0258,   0x15 => 0x0258,   0x16 => 0x0258,   0x17 => 0x0258,
            0x18 => 0x0258,   0x19 => 0x0258,   0x1a => 0x0258,   0x1b => 0x0258,
            0x1c => 0x0258,   0x1d => 0x0258,   0x1e => 0x0258,   0x1f => 0x0258,
            0x20 => 0x0258,   0x21 => 0x0258,   0x22 => 0x0258,   0x23 => 0x0258,
            0x24 => 0x0258,   0x25 => 0x0258,   0x26 => 0x0258,   0x27 => 0x0258,
            0x28 => 0x0258,   0x29 => 0x0258,   0x2a => 0x0258,   0x2b => 0x0258,
            0x2c => 0x0258,   0x2d => 0x0258,   0x2e => 0x0258,   0x2f => 0x0258,
            0x30 => 0x0258,   0x31 => 0x0258,   0x32 => 0x0258,   0x33 => 0x0258,
            0x34 => 0x0258,   0x35 => 0x0258,   0x36 => 0x0258,   0x37 => 0x0258,
            0x38 => 0x0258,   0x39 => 0x0258,   0x3a => 0x0258,   0x3b => 0x0258,
            0x3c => 0x0258,   0x3d => 0x0258,   0x3e => 0x0258,   0x3f => 0x0258,
            0x40 => 0x0258,   0x41 => 0x0258,   0x42 => 0x0258,   0x43 => 0x0258,
            0x44 => 0x0258,   0x45 => 0x0258,   0x46 => 0x0258,   0x47 => 0x0258,
            0x48 => 0x0258,   0x49 => 0x0258,   0x4a => 0x0258,   0x4b => 0x0258,
            0x4c => 0x0258,   0x4d => 0x0258,   0x4e => 0x0258,   0x4f => 0x0258,
            0x50 => 0x0258,   0x51 => 0x0258,   0x52 => 0x0258,   0x53 => 0x0258,
            0x54 => 0x0258,   0x55 => 0x0258,   0x56 => 0x0258,   0x57 => 0x0258,
            0x58 => 0x0258,   0x59 => 0x0258,   0x5a => 0x0258,   0x5b => 0x0258,
            0x5c => 0x0258,   0x5d => 0x0258,   0x5e => 0x0258,   0x5f => 0x0258,
            0x60 => 0x0258,   0x61 => 0x0258,   0x62 => 0x0258,   0x63 => 0x0258,
            0x64 => 0x0258,   0x65 => 0x0258,   0x66 => 0x0258,   0x67 => 0x0258,
            0x68 => 0x0258,   0x69 => 0x0258,   0x6a => 0x0258,   0x6b => 0x0258,
            0x6c => 0x0258,   0x6d => 0x0258,   0x6e => 0x0258,   0x6f => 0x0258,
            0x70 => 0x0258,   0x71 => 0x0258,   0x72 => 0x0258,   0x73 => 0x0258,
            0x74 => 0x0258,   0x75 => 0x0258,   0x76 => 0x0258,   0x77 => 0x0258,
            0x78 => 0x0258,   0x79 => 0x0258,   0x7a => 0x0258,   0x7b => 0x0258,
            0x7c => 0x0258,   0x7d => 0x0258,   0x7e => 0x0258,   0x7f => 0x0258,
            0x80 => 0x0258,   0x81 => 0x0258,   0x82 => 0x0258,   0x83 => 0x0258,
            0x84 => 0x0258,   0x85 => 0x0258,   0x86 => 0x0258,   0x87 => 0x0258,
            0x88 => 0x0258,   0x89 => 0x0258,   0x8a => 0x0258,   0x8b => 0x0258,
            0x8c => 0x0258,   0x8d => 0x0258,   0x8e => 0x0258,   0x8f => 0x0258,
            0x90 => 0x0258,   0x91 => 0x0258,   0x92 => 0x0258,   0x93 => 0x0258,
            0x94 => 0x0258,   0x95 => 0x0258,   0x96 => 0x0258,   0x97 => 0x0258,
            0x98 => 0x0258,   0x99 => 0x0258,   0x9a => 0x0258,   0x9b => 0x0258,
            0x9c => 0x0258,   0x9d => 0x0258,   0x9e => 0x0258,   0x9f => 0x0258,
            0xa0 => 0x0258,   0xa1 => 0x0258,   0xa2 => 0x0258,   0xa3 => 0x0258,
            0xa4 => 0x0258,   0xa5 => 0x0258,   0xa6 => 0x0258,   0xa7 => 0x0258,
            0xa8 => 0x0258,   0xa9 => 0x0258,   0xaa => 0x0258,   0xab => 0x0258,
            0xac => 0x0258,   0xad => 0x0258,   0xae => 0x0258,   0xaf => 0x0258,
            0xb0 => 0x0258,   0xb1 => 0x0258,   0xb2 => 0x0258,   0xb3 => 0x0258,
            0xb4 => 0x0258,   0xb5 => 0x0258,   0xb6 => 0x0258,   0xb7 => 0x0258,
            0xb8 => 0x0258,   0xb9 => 0x0258,   0xba => 0x0258,   0xbb => 0x0258,
            0xbc => 0x0258,   0xbd => 0x0258,   0xbe => 0x0258,   0xbf => 0x0258,
            0xc0 => 0x0258,   0xc1 => 0x0258,   0xc2 => 0x0258,   0xc3 => 0x0258,
            0xc4 => 0x0258,   0xc5 => 0x0258,   0xc6 => 0x0258,   0xc7 => 0x0258,
            0xc8 => 0x0258,   0xc9 => 0x0258,   0xca => 0x0258,   0xcb => 0x0258,
            0xcc => 0x0258,   0xcd => 0x0258,   0xce => 0x0258,   0xcf => 0x0258,
            0xd0 => 0x0258,   0xd1 => 0x0258,   0xd2 => 0x0258,   0xd3 => 0x0258,
            0xd4 => 0x0258,   0xd5 => 0x0258,   0xd6 => 0x0258,   0xd7 => 0x0258,
            0xd8 => 0x0258,   0xd9 => 0x0258,   0xda => 0x0258,   0xdb => 0x0258,
            0xdc => 0x0258,   0xdd => 0x0258,   0xde => 0x0258,   0xdf => 0x0258,
            0xe0 => 0x0258,   0xe1 => 0x0258,   0xe2 => 0x0258,   0xe3 => 0x0258,
            0xe4 => 0x0258,   0xe5 => 0x0258,   0xe6 => 0x0258,   0xe7 => 0x0258,
            0xe8 => 0x0258,   0xe9 => 0x0258,   0xea => 0x0258,   0xeb => 0x0258,
            0xec => 0x0258,   0xed => 0x0258,   0xee => 0x0258,   0xef => 0x0258,
            0xf0 => 0x0258,   0xf1 => 0x0258,   0xf2 => 0x0258,   0xf3 => 0x0258,
            0xf4 => 0x0258,   0xf5 => 0x0258,   0xf6 => 0x0258,   0xf7 => 0x0258,
            0xf8 => 0x0258,   0xf9 => 0x0258,   0xfa => 0x0258,   0xfb => 0x0258,
            0xfc => 0x0258,   0xfd => 0x0258,   0xfe => 0x0258,   0xff => 0x0258,
          0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
          0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
          0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
          0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
          0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
          0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
          0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
          0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
          0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
          0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
          0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
          0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
          0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
          0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
          0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-BoldOblique');
    }

}
PKpG[� �98H8H4Pdf/Resource/Font/Simple/Standard/CourierOblique.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Courier-Oblique.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x31";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00"
          . "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
          . "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65";

        $this->_isBold = false;
        $this->_isItalic = true;
        $this->_isMonospaced = true;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 629;
        $this->_descent = -157;
        $this->_lineGap = 414;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0258,   0x02 => 0x0258,   0x03 => 0x0258,
            0x04 => 0x0258,   0x05 => 0x0258,   0x06 => 0x0258,   0x07 => 0x0258,
            0x08 => 0x0258,   0x09 => 0x0258,   0x0a => 0x0258,   0x0b => 0x0258,
            0x0c => 0x0258,   0x0d => 0x0258,   0x0e => 0x0258,   0x0f => 0x0258,
            0x10 => 0x0258,   0x11 => 0x0258,   0x12 => 0x0258,   0x13 => 0x0258,
            0x14 => 0x0258,   0x15 => 0x0258,   0x16 => 0x0258,   0x17 => 0x0258,
            0x18 => 0x0258,   0x19 => 0x0258,   0x1a => 0x0258,   0x1b => 0x0258,
            0x1c => 0x0258,   0x1d => 0x0258,   0x1e => 0x0258,   0x1f => 0x0258,
            0x20 => 0x0258,   0x21 => 0x0258,   0x22 => 0x0258,   0x23 => 0x0258,
            0x24 => 0x0258,   0x25 => 0x0258,   0x26 => 0x0258,   0x27 => 0x0258,
            0x28 => 0x0258,   0x29 => 0x0258,   0x2a => 0x0258,   0x2b => 0x0258,
            0x2c => 0x0258,   0x2d => 0x0258,   0x2e => 0x0258,   0x2f => 0x0258,
            0x30 => 0x0258,   0x31 => 0x0258,   0x32 => 0x0258,   0x33 => 0x0258,
            0x34 => 0x0258,   0x35 => 0x0258,   0x36 => 0x0258,   0x37 => 0x0258,
            0x38 => 0x0258,   0x39 => 0x0258,   0x3a => 0x0258,   0x3b => 0x0258,
            0x3c => 0x0258,   0x3d => 0x0258,   0x3e => 0x0258,   0x3f => 0x0258,
            0x40 => 0x0258,   0x41 => 0x0258,   0x42 => 0x0258,   0x43 => 0x0258,
            0x44 => 0x0258,   0x45 => 0x0258,   0x46 => 0x0258,   0x47 => 0x0258,
            0x48 => 0x0258,   0x49 => 0x0258,   0x4a => 0x0258,   0x4b => 0x0258,
            0x4c => 0x0258,   0x4d => 0x0258,   0x4e => 0x0258,   0x4f => 0x0258,
            0x50 => 0x0258,   0x51 => 0x0258,   0x52 => 0x0258,   0x53 => 0x0258,
            0x54 => 0x0258,   0x55 => 0x0258,   0x56 => 0x0258,   0x57 => 0x0258,
            0x58 => 0x0258,   0x59 => 0x0258,   0x5a => 0x0258,   0x5b => 0x0258,
            0x5c => 0x0258,   0x5d => 0x0258,   0x5e => 0x0258,   0x5f => 0x0258,
            0x60 => 0x0258,   0x61 => 0x0258,   0x62 => 0x0258,   0x63 => 0x0258,
            0x64 => 0x0258,   0x65 => 0x0258,   0x66 => 0x0258,   0x67 => 0x0258,
            0x68 => 0x0258,   0x69 => 0x0258,   0x6a => 0x0258,   0x6b => 0x0258,
            0x6c => 0x0258,   0x6d => 0x0258,   0x6e => 0x0258,   0x6f => 0x0258,
            0x70 => 0x0258,   0x71 => 0x0258,   0x72 => 0x0258,   0x73 => 0x0258,
            0x74 => 0x0258,   0x75 => 0x0258,   0x76 => 0x0258,   0x77 => 0x0258,
            0x78 => 0x0258,   0x79 => 0x0258,   0x7a => 0x0258,   0x7b => 0x0258,
            0x7c => 0x0258,   0x7d => 0x0258,   0x7e => 0x0258,   0x7f => 0x0258,
            0x80 => 0x0258,   0x81 => 0x0258,   0x82 => 0x0258,   0x83 => 0x0258,
            0x84 => 0x0258,   0x85 => 0x0258,   0x86 => 0x0258,   0x87 => 0x0258,
            0x88 => 0x0258,   0x89 => 0x0258,   0x8a => 0x0258,   0x8b => 0x0258,
            0x8c => 0x0258,   0x8d => 0x0258,   0x8e => 0x0258,   0x8f => 0x0258,
            0x90 => 0x0258,   0x91 => 0x0258,   0x92 => 0x0258,   0x93 => 0x0258,
            0x94 => 0x0258,   0x95 => 0x0258,   0x96 => 0x0258,   0x97 => 0x0258,
            0x98 => 0x0258,   0x99 => 0x0258,   0x9a => 0x0258,   0x9b => 0x0258,
            0x9c => 0x0258,   0x9d => 0x0258,   0x9e => 0x0258,   0x9f => 0x0258,
            0xa0 => 0x0258,   0xa1 => 0x0258,   0xa2 => 0x0258,   0xa3 => 0x0258,
            0xa4 => 0x0258,   0xa5 => 0x0258,   0xa6 => 0x0258,   0xa7 => 0x0258,
            0xa8 => 0x0258,   0xa9 => 0x0258,   0xaa => 0x0258,   0xab => 0x0258,
            0xac => 0x0258,   0xad => 0x0258,   0xae => 0x0258,   0xaf => 0x0258,
            0xb0 => 0x0258,   0xb1 => 0x0258,   0xb2 => 0x0258,   0xb3 => 0x0258,
            0xb4 => 0x0258,   0xb5 => 0x0258,   0xb6 => 0x0258,   0xb7 => 0x0258,
            0xb8 => 0x0258,   0xb9 => 0x0258,   0xba => 0x0258,   0xbb => 0x0258,
            0xbc => 0x0258,   0xbd => 0x0258,   0xbe => 0x0258,   0xbf => 0x0258,
            0xc0 => 0x0258,   0xc1 => 0x0258,   0xc2 => 0x0258,   0xc3 => 0x0258,
            0xc4 => 0x0258,   0xc5 => 0x0258,   0xc6 => 0x0258,   0xc7 => 0x0258,
            0xc8 => 0x0258,   0xc9 => 0x0258,   0xca => 0x0258,   0xcb => 0x0258,
            0xcc => 0x0258,   0xcd => 0x0258,   0xce => 0x0258,   0xcf => 0x0258,
            0xd0 => 0x0258,   0xd1 => 0x0258,   0xd2 => 0x0258,   0xd3 => 0x0258,
            0xd4 => 0x0258,   0xd5 => 0x0258,   0xd6 => 0x0258,   0xd7 => 0x0258,
            0xd8 => 0x0258,   0xd9 => 0x0258,   0xda => 0x0258,   0xdb => 0x0258,
            0xdc => 0x0258,   0xdd => 0x0258,   0xde => 0x0258,   0xdf => 0x0258,
            0xe0 => 0x0258,   0xe1 => 0x0258,   0xe2 => 0x0258,   0xe3 => 0x0258,
            0xe4 => 0x0258,   0xe5 => 0x0258,   0xe6 => 0x0258,   0xe7 => 0x0258,
            0xe8 => 0x0258,   0xe9 => 0x0258,   0xea => 0x0258,   0xeb => 0x0258,
            0xec => 0x0258,   0xed => 0x0258,   0xee => 0x0258,   0xef => 0x0258,
            0xf0 => 0x0258,   0xf1 => 0x0258,   0xf2 => 0x0258,   0xf3 => 0x0258,
            0xf4 => 0x0258,   0xf5 => 0x0258,   0xf6 => 0x0258,   0xf7 => 0x0258,
            0xf8 => 0x0258,   0xf9 => 0x0258,   0xfa => 0x0258,   0xfb => 0x0258,
            0xfc => 0x0258,   0xfd => 0x0258,   0xfe => 0x0258,   0xff => 0x0258,
          0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
          0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
          0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
          0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
          0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
          0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
          0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
          0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
          0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
          0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
          0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
          0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
          0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
          0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
          0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-Oblique');
    }

}
PKpG[���IJIJ/Pdf/Resource/Font/Simple/Standard/Helvetica.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Helvetica.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_Helvetica extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
          . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
          . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
          . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
          . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
          . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
          . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
          . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
          . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
          . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
          . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
          . "\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x34";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
          . "\x61";

        $this->_isBold = false;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 718;
        $this->_descent = -207;
        $this->_lineGap = 275;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x0116,   0x03 => 0x0163,
            0x04 => 0x022c,   0x05 => 0x022c,   0x06 => 0x0379,   0x07 => 0x029b,
            0x08 =>   0xde,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x0185,
            0x0c => 0x0248,   0x0d => 0x0116,   0x0e => 0x014d,   0x0f => 0x0116,
            0x10 => 0x0116,   0x11 => 0x022c,   0x12 => 0x022c,   0x13 => 0x022c,
            0x14 => 0x022c,   0x15 => 0x022c,   0x16 => 0x022c,   0x17 => 0x022c,
            0x18 => 0x022c,   0x19 => 0x022c,   0x1a => 0x022c,   0x1b => 0x0116,
            0x1c => 0x0116,   0x1d => 0x0248,   0x1e => 0x0248,   0x1f => 0x0248,
            0x20 => 0x022c,   0x21 => 0x03f7,   0x22 => 0x029b,   0x23 => 0x029b,
            0x24 => 0x02d2,   0x25 => 0x02d2,   0x26 => 0x029b,   0x27 => 0x0263,
            0x28 => 0x030a,   0x29 => 0x02d2,   0x2a => 0x0116,   0x2b => 0x01f4,
            0x2c => 0x029b,   0x2d => 0x022c,   0x2e => 0x0341,   0x2f => 0x02d2,
            0x30 => 0x030a,   0x31 => 0x029b,   0x32 => 0x030a,   0x33 => 0x02d2,
            0x34 => 0x029b,   0x35 => 0x0263,   0x36 => 0x02d2,   0x37 => 0x029b,
            0x38 => 0x03b0,   0x39 => 0x029b,   0x3a => 0x029b,   0x3b => 0x0263,
            0x3c => 0x0116,   0x3d => 0x0116,   0x3e => 0x0116,   0x3f => 0x01d5,
            0x40 => 0x022c,   0x41 =>   0xde,   0x42 => 0x022c,   0x43 => 0x022c,
            0x44 => 0x01f4,   0x45 => 0x022c,   0x46 => 0x022c,   0x47 => 0x0116,
            0x48 => 0x022c,   0x49 => 0x022c,   0x4a =>   0xde,   0x4b =>   0xde,
            0x4c => 0x01f4,   0x4d =>   0xde,   0x4e => 0x0341,   0x4f => 0x022c,
            0x50 => 0x022c,   0x51 => 0x022c,   0x52 => 0x022c,   0x53 => 0x014d,
            0x54 => 0x01f4,   0x55 => 0x0116,   0x56 => 0x022c,   0x57 => 0x01f4,
            0x58 => 0x02d2,   0x59 => 0x01f4,   0x5a => 0x01f4,   0x5b => 0x01f4,
            0x5c => 0x014e,   0x5d => 0x0104,   0x5e => 0x014e,   0x5f => 0x0248,
            0x60 => 0x014d,   0x61 => 0x022c,   0x62 => 0x022c,   0x63 =>   0xa7,
            0x64 => 0x022c,   0x65 => 0x022c,   0x66 => 0x022c,   0x67 => 0x022c,
            0x68 =>   0xbf,   0x69 => 0x014d,   0x6a => 0x022c,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x01f4,   0x6e => 0x01f4,   0x6f => 0x022c,
            0x70 => 0x022c,   0x71 => 0x022c,   0x72 => 0x0116,   0x73 => 0x0219,
            0x74 => 0x015e,   0x75 =>   0xde,   0x76 => 0x014d,   0x77 => 0x014d,
            0x78 => 0x022c,   0x79 => 0x03e8,   0x7a => 0x03e8,   0x7b => 0x0263,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x03e8,   0x8a => 0x03e8,   0x8b => 0x0172,
            0x8c => 0x022c,   0x8d => 0x030a,   0x8e => 0x03e8,   0x8f => 0x016d,
            0x90 => 0x0379,   0x91 => 0x0116,   0x92 =>   0xde,   0x93 => 0x0263,
            0x94 => 0x03b0,   0x95 => 0x0263,   0x96 => 0x0116,   0x97 => 0x022c,
            0x98 => 0x022c,   0x99 => 0x022c,   0x9a => 0x022c,   0x9b => 0x029b,
            0x9c => 0x0248,   0x9d => 0x029b,   0x9e => 0x029b,   0x9f => 0x022c,
            0xa0 => 0x02d2,   0xa1 => 0x01f4,   0xa2 => 0x01f4,   0xa3 => 0x022c,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x022c,   0xa7 => 0x02d2,
            0xa8 => 0x022c,   0xa9 => 0x029b,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02e1,   0xad => 0x029b,   0xae => 0x01f4,   0xaf => 0x022c,
            0xb0 => 0x02d2,   0xb1 =>   0xde,   0xb2 => 0x022c,   0xb3 => 0x0263,
            0xb4 => 0x02d2,   0xb5 => 0x022c,   0xb6 => 0x029b,   0xb7 => 0x01f4,
            0xb8 => 0x01f4,   0xb9 => 0x0116,   0xba => 0x01d7,   0xbb => 0x02d2,
            0xbc => 0x030a,   0xbd => 0x022c,   0xbe => 0x022c,   0xbf => 0x029b,
            0xc0 => 0x014d,   0xc1 => 0x01f4,   0xc2 => 0x0263,   0xc3 => 0x029b,
            0xc4 => 0x030a,   0xc5 => 0x02d2,   0xc6 => 0x029b,   0xc7 => 0x0283,
            0xc8 => 0x02d2,   0xc9 => 0x022c,   0xca => 0x014d,   0xcb => 0x030a,
            0xcc => 0x029b,   0xcd => 0x029b,   0xce => 0x0248,   0xcf => 0x022c,
            0xd0 => 0x0263,   0xd1 => 0x01dc,   0xd2 => 0x01f4,   0xd3 => 0x02d2,
            0xd4 => 0x0116,   0xd5 => 0x029b,   0xd6 => 0x022c,   0xd7 => 0x022c,
            0xd8 => 0x01f4,   0xd9 => 0x022c,   0xda => 0x022c,   0xdb => 0x02d2,
            0xdc => 0x0116,   0xdd => 0x0248,   0xde => 0x0104,   0xdf => 0x02e1,
            0xe0 => 0x030a,   0xe1 => 0x0116,   0xe2 => 0x0258,   0xe3 => 0x029b,
            0xe4 => 0x014d,   0xe5 => 0x022c,   0xe6 => 0x0263,   0xe7 => 0x0263,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x02d2,   0xeb =>   0xde,
            0xec => 0x013d,   0xed => 0x022c,   0xee => 0x02d2,   0xef => 0x029b,
            0xf0 => 0x029b,   0xf1 => 0x022c,   0xf2 => 0x01f4,   0xf3 =>   0xde,
            0xf4 => 0x030a,   0xf5 => 0x022c,   0xf6 => 0x022c,   0xf7 => 0x01f4,
            0xf8 => 0x0116,   0xf9 => 0x030a,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x022c,   0xfd => 0x014d,   0xfe => 0x030a,   0xff => 0x022c,
          0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c,
          0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b,
          0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
          0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225,
          0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
          0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b,
          0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c,
          0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2,
          0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2,
          0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
          0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
          0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c,
          0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c,
          0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4,
          0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica');
    }

}
PKpG[���qpJpJ1Pdf/Resource/Font/Simple/Standard/TimesItalic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Times-Italic.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
          . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
          . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
          . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
          . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
          . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
          . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
          . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
          . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
          . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
          . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
          . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
          . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
          . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
          . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
          . "\x65\x00\x73\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x37";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00"
          . "\x61\x00\x6c\x00\x69\x00\x63\x00\x20\x00\x4d\x00\x65\x00\x64\x00"
          . "\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00"
          . "\x61\x00\x6c\x00\x69\x00\x63";

        $this->_isBold = false;
        $this->_isItalic = true;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 683;
        $this->_descent = -217;
        $this->_lineGap = 300;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 =>   0xfa,   0x02 => 0x014d,   0x03 => 0x01a4,
            0x04 => 0x01f4,   0x05 => 0x01f4,   0x06 => 0x0341,   0x07 => 0x030a,
            0x08 => 0x014d,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x01f4,
            0x0c => 0x02a3,   0x0d =>   0xfa,   0x0e => 0x014d,   0x0f =>   0xfa,
            0x10 => 0x0116,   0x11 => 0x01f4,   0x12 => 0x01f4,   0x13 => 0x01f4,
            0x14 => 0x01f4,   0x15 => 0x01f4,   0x16 => 0x01f4,   0x17 => 0x01f4,
            0x18 => 0x01f4,   0x19 => 0x01f4,   0x1a => 0x01f4,   0x1b => 0x014d,
            0x1c => 0x014d,   0x1d => 0x02a3,   0x1e => 0x02a3,   0x1f => 0x02a3,
            0x20 => 0x01f4,   0x21 => 0x0398,   0x22 => 0x0263,   0x23 => 0x0263,
            0x24 => 0x029b,   0x25 => 0x02d2,   0x26 => 0x0263,   0x27 => 0x0263,
            0x28 => 0x02d2,   0x29 => 0x02d2,   0x2a => 0x014d,   0x2b => 0x01bc,
            0x2c => 0x029b,   0x2d => 0x022c,   0x2e => 0x0341,   0x2f => 0x029b,
            0x30 => 0x02d2,   0x31 => 0x0263,   0x32 => 0x02d2,   0x33 => 0x0263,
            0x34 => 0x01f4,   0x35 => 0x022c,   0x36 => 0x02d2,   0x37 => 0x0263,
            0x38 => 0x0341,   0x39 => 0x0263,   0x3a => 0x022c,   0x3b => 0x022c,
            0x3c => 0x0185,   0x3d => 0x0116,   0x3e => 0x0185,   0x3f => 0x01a6,
            0x40 => 0x01f4,   0x41 => 0x014d,   0x42 => 0x01f4,   0x43 => 0x01f4,
            0x44 => 0x01bc,   0x45 => 0x01f4,   0x46 => 0x01bc,   0x47 => 0x0116,
            0x48 => 0x01f4,   0x49 => 0x01f4,   0x4a => 0x0116,   0x4b => 0x0116,
            0x4c => 0x01bc,   0x4d => 0x0116,   0x4e => 0x02d2,   0x4f => 0x01f4,
            0x50 => 0x01f4,   0x51 => 0x01f4,   0x52 => 0x01f4,   0x53 => 0x0185,
            0x54 => 0x0185,   0x55 => 0x0116,   0x56 => 0x01f4,   0x57 => 0x01bc,
            0x58 => 0x029b,   0x59 => 0x01bc,   0x5a => 0x01bc,   0x5b => 0x0185,
            0x5c => 0x0190,   0x5d => 0x0113,   0x5e => 0x0190,   0x5f => 0x021d,
            0x60 => 0x0185,   0x61 => 0x01f4,   0x62 => 0x01f4,   0x63 =>   0xa7,
            0x64 => 0x01f4,   0x65 => 0x01f4,   0x66 => 0x01f4,   0x67 => 0x01f4,
            0x68 =>   0xd6,   0x69 => 0x022c,   0x6a => 0x01f4,   0x6b => 0x014d,
            0x6c => 0x014d,   0x6d => 0x01f4,   0x6e => 0x01f4,   0x6f => 0x01f4,
            0x70 => 0x01f4,   0x71 => 0x01f4,   0x72 =>   0xfa,   0x73 => 0x020b,
            0x74 => 0x015e,   0x75 => 0x014d,   0x76 => 0x022c,   0x77 => 0x022c,
            0x78 => 0x01f4,   0x79 => 0x0379,   0x7a => 0x03e8,   0x7b => 0x01f4,
            0x7c => 0x014d,   0x7d => 0x014d,   0x7e => 0x014d,   0x7f => 0x014d,
            0x80 => 0x014d,   0x81 => 0x014d,   0x82 => 0x014d,   0x83 => 0x014d,
            0x84 => 0x014d,   0x85 => 0x014d,   0x86 => 0x014d,   0x87 => 0x014d,
            0x88 => 0x014d,   0x89 => 0x0379,   0x8a => 0x0379,   0x8b => 0x0114,
            0x8c => 0x022c,   0x8d => 0x02d2,   0x8e => 0x03b0,   0x8f => 0x0136,
            0x90 => 0x029b,   0x91 => 0x0116,   0x92 => 0x0116,   0x93 => 0x01f4,
            0x94 => 0x029b,   0x95 => 0x01f4,   0x96 => 0x014d,   0x97 => 0x01bc,
            0x98 => 0x01f4,   0x99 => 0x01f4,   0x9a => 0x01bc,   0x9b => 0x022c,
            0x9c => 0x02a3,   0x9d => 0x022c,   0x9e => 0x0263,   0x9f => 0x01f4,
            0xa0 => 0x02d2,   0xa1 => 0x01bc,   0xa2 => 0x0185,   0xa3 => 0x01bc,
            0xa4 => 0x02d2,   0xa5 => 0x02d2,   0xa6 => 0x01f4,   0xa7 => 0x02d2,
            0xa8 => 0x01f4,   0xa9 => 0x0263,   0xaa => 0x02d2,   0xab =>   0xfa,
            0xac => 0x02f8,   0xad => 0x0263,   0xae => 0x01bc,   0xaf => 0x01f4,
            0xb0 => 0x029b,   0xb1 => 0x0116,   0xb2 => 0x01f4,   0xb3 => 0x022c,
            0xb4 => 0x029b,   0xb5 => 0x01f4,   0xb6 => 0x0263,   0xb7 => 0x0185,
            0xb8 => 0x0185,   0xb9 => 0x0116,   0xba => 0x01d7,   0xbb => 0x0263,
            0xbc => 0x02d2,   0xbd => 0x01f4,   0xbe => 0x01f4,   0xbf => 0x0263,
            0xc0 => 0x0185,   0xc1 => 0x01bc,   0xc2 => 0x022c,   0xc3 => 0x0263,
            0xc4 => 0x02d2,   0xc5 => 0x0263,   0xc6 => 0x01f4,   0xc7 => 0x0220,
            0xc8 => 0x02d2,   0xc9 => 0x01f4,   0xca => 0x012c,   0xcb => 0x02d2,
            0xcc => 0x0263,   0xcd => 0x0263,   0xce => 0x02a3,   0xcf => 0x01f4,
            0xd0 => 0x022c,   0xd1 => 0x01dc,   0xd2 => 0x01bc,   0xd3 => 0x029b,
            0xd4 => 0x0116,   0xd5 => 0x0263,   0xd6 => 0x01f4,   0xd7 => 0x01bc,
            0xd8 => 0x01bc,   0xd9 => 0x01f4,   0xda => 0x01f4,   0xdb => 0x029b,
            0xdc => 0x014d,   0xdd => 0x02a3,   0xde => 0x0113,   0xdf => 0x02f8,
            0xe0 => 0x02d2,   0xe1 => 0x014d,   0xe2 => 0x0258,   0xe3 => 0x0263,
            0xe4 => 0x0185,   0xe5 => 0x01f4,   0xe6 => 0x022c,   0xe7 => 0x022c,
            0xe8 => 0x0225,   0xe9 => 0x02d2,   0xea => 0x029b,   0xeb => 0x0116,
            0xec => 0x012c,   0xed => 0x01bc,   0xee => 0x02d2,   0xef => 0x0263,
            0xf0 => 0x0263,   0xf1 => 0x01bc,   0xf2 => 0x0185,   0xf3 => 0x0116,
            0xf4 => 0x02d2,   0xf5 => 0x01f4,   0xf6 => 0x01f4,   0xf7 => 0x0185,
            0xf8 => 0x0116,   0xf9 => 0x02d2,   0xfa => 0x02d2,   0xfb => 0x0264,
            0xfc => 0x01f4,   0xfd => 0x012c,   0xfe => 0x02d2,   0xff => 0x01f4,
          0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4,
          0x0104 => 0x02ee, 0x0105 => 0x01f4, 0x0106 => 0x012c, 0x0107 => 0x029b,
          0x0108 => 0x022c, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d,
          0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
          0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263,
          0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x01f4,
          0x0118 => 0x01f4, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
          0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2,
          0x0120 => 0x0185, 0x0121 => 0x029b, 0x0122 => 0x01f4, 0x0123 => 0x0263,
          0x0124 => 0x022c, 0x0125 => 0x0263, 0x0126 => 0x0263, 0x0127 => 0x0263,
          0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x0263, 0x012b => 0x014d,
          0x012c => 0x01bc, 0x012d => 0x02a3, 0x012e => 0x014d, 0x012f => 0x01f4,
          0x0130 => 0x0116, 0x0131 => 0x02a3, 0x0132 => 0x01f4, 0x0133 => 0x01f4,
          0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185,
          0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
        );

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02,   0x22 =>   0x03,   0x23 =>   0x04,
            0x24 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x2019 =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a,   0x2a =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d,   0x2d =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
            0x40 =>   0x21,   0x41 =>   0x22,   0x42 =>   0x23,   0x43 =>   0x24,
            0x44 =>   0x25,   0x45 =>   0x26,   0x46 =>   0x27,   0x47 =>   0x28,
            0x48 =>   0x29,   0x49 =>   0x2a,   0x4a =>   0x2b,   0x4b =>   0x2c,
            0x4c =>   0x2d,   0x4d =>   0x2e,   0x4e =>   0x2f,   0x4f =>   0x30,
            0x50 =>   0x31,   0x51 =>   0x32,   0x52 =>   0x33,   0x53 =>   0x34,
            0x54 =>   0x35,   0x55 =>   0x36,   0x56 =>   0x37,   0x57 =>   0x38,
            0x58 =>   0x39,   0x59 =>   0x3a,   0x5a =>   0x3b,   0x5b =>   0x3c,
            0x5c =>   0x3d,   0x5d =>   0x3e,   0x5e =>   0x3f,   0x5f =>   0x40,
          0x2018 =>   0x41,   0x61 =>   0x42,   0x62 =>   0x43,   0x63 =>   0x44,
            0x64 =>   0x45,   0x65 =>   0x46,   0x66 =>   0x47,   0x67 =>   0x48,
            0x68 =>   0x49,   0x69 =>   0x4a,   0x6a =>   0x4b,   0x6b =>   0x4c,
            0x6c =>   0x4d,   0x6d =>   0x4e,   0x6e =>   0x4f,   0x6f =>   0x50,
            0x70 =>   0x51,   0x71 =>   0x52,   0x72 =>   0x53,   0x73 =>   0x54,
            0x74 =>   0x55,   0x75 =>   0x56,   0x76 =>   0x57,   0x77 =>   0x58,
            0x78 =>   0x59,   0x79 =>   0x5a,   0x7a =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e,   0x7e =>   0x5f,   0xa1 =>   0x60,
            0xa2 =>   0x61,   0xa3 =>   0x62, 0x2044 =>   0x63,   0xa5 =>   0x64,
          0x0192 =>   0x65,   0xa7 =>   0x66,   0xa4 =>   0x67,   0x27 =>   0x68,
          0x201c =>   0x69,   0xab =>   0x6a, 0x2039 =>   0x6b, 0x203a =>   0x6c,
          0xfb01 =>   0x6d, 0xfb02 =>   0x6e, 0x2013 =>   0x6f, 0x2020 =>   0x70,
          0x2021 =>   0x71,   0xb7 =>   0x72,   0xb6 =>   0x73, 0x2022 =>   0x74,
          0x201a =>   0x75, 0x201e =>   0x76, 0x201d =>   0x77,   0xbb =>   0x78,
          0x2026 =>   0x79, 0x2030 =>   0x7a,   0xbf =>   0x7b,   0x60 =>   0x7c,
            0xb4 =>   0x7d, 0x02c6 =>   0x7e, 0x02dc =>   0x7f,   0xaf =>   0x80,
          0x02d8 =>   0x81, 0x02d9 =>   0x82,   0xa8 =>   0x83, 0x02da =>   0x84,
            0xb8 =>   0x85, 0x02dd =>   0x86, 0x02db =>   0x87, 0x02c7 =>   0x88,
          0x2014 =>   0x89,   0xc6 =>   0x8a,   0xaa =>   0x8b, 0x0141 =>   0x8c,
            0xd8 =>   0x8d, 0x0152 =>   0x8e,   0xba =>   0x8f,   0xe6 =>   0x90,
          0x0131 =>   0x91, 0x0142 =>   0x92,   0xf8 =>   0x93, 0x0153 =>   0x94,
            0xdf =>   0x95,   0xcf =>   0x96,   0xe9 =>   0x97, 0x0103 =>   0x98,
          0x0171 =>   0x99, 0x011b =>   0x9a, 0x0178 =>   0x9b,   0xf7 =>   0x9c,
            0xdd =>   0x9d,   0xc2 =>   0x9e,   0xe1 =>   0x9f,   0xdb =>   0xa0,
            0xfd =>   0xa1, 0x0219 =>   0xa2,   0xea =>   0xa3, 0x016e =>   0xa4,
            0xdc =>   0xa5, 0x0105 =>   0xa6,   0xda =>   0xa7, 0x0173 =>   0xa8,
            0xcb =>   0xa9, 0x0110 =>   0xaa, 0xf6c3 =>   0xab,   0xa9 =>   0xac,
          0x0112 =>   0xad, 0x010d =>   0xae,   0xe5 =>   0xaf, 0x0145 =>   0xb0,
          0x013a =>   0xb1,   0xe0 =>   0xb2, 0x0162 =>   0xb3, 0x0106 =>   0xb4,
            0xe3 =>   0xb5, 0x0116 =>   0xb6, 0x0161 =>   0xb7, 0x015f =>   0xb8,
            0xed =>   0xb9, 0x25ca =>   0xba, 0x0158 =>   0xbb, 0x0122 =>   0xbc,
            0xfb =>   0xbd,   0xe2 =>   0xbe, 0x0100 =>   0xbf, 0x0159 =>   0xc0,
            0xe7 =>   0xc1, 0x017b =>   0xc2,   0xde =>   0xc3, 0x014c =>   0xc4,
          0x0154 =>   0xc5, 0x015a =>   0xc6, 0x010f =>   0xc7, 0x016a =>   0xc8,
          0x016f =>   0xc9,   0xb3 =>   0xca,   0xd2 =>   0xcb,   0xc0 =>   0xcc,
          0x0102 =>   0xcd,   0xd7 =>   0xce,   0xfa =>   0xcf, 0x0164 =>   0xd0,
          0x2202 =>   0xd1,   0xff =>   0xd2, 0x0143 =>   0xd3,   0xee =>   0xd4,
            0xca =>   0xd5,   0xe4 =>   0xd6,   0xeb =>   0xd7, 0x0107 =>   0xd8,
          0x0144 =>   0xd9, 0x016b =>   0xda, 0x0147 =>   0xdb,   0xcd =>   0xdc,
            0xb1 =>   0xdd,   0xa6 =>   0xde,   0xae =>   0xdf, 0x011e =>   0xe0,
          0x0130 =>   0xe1, 0x2211 =>   0xe2,   0xc8 =>   0xe3, 0x0155 =>   0xe4,
          0x014d =>   0xe5, 0x0179 =>   0xe6, 0x017d =>   0xe7, 0x2265 =>   0xe8,
            0xd0 =>   0xe9,   0xc7 =>   0xea, 0x013c =>   0xeb, 0x0165 =>   0xec,
          0x0119 =>   0xed, 0x0172 =>   0xee,   0xc1 =>   0xef,   0xc4 =>   0xf0,
            0xe8 =>   0xf1, 0x017a =>   0xf2, 0x012f =>   0xf3,   0xd3 =>   0xf4,
            0xf3 =>   0xf5, 0x0101 =>   0xf6, 0x015b =>   0xf7,   0xef =>   0xf8,
            0xd4 =>   0xf9,   0xd9 =>   0xfa, 0x2206 =>   0xfb,   0xfe =>   0xfc,
            0xb2 =>   0xfd,   0xd6 =>   0xfe,   0xb5 =>   0xff,   0xec => 0x0100,
          0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103,   0xbe => 0x0104,
          0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
          0x2122 => 0x0109, 0x0117 => 0x010a,   0xcc => 0x010b, 0x012a => 0x010c,
          0x013d => 0x010d,   0xbd => 0x010e, 0x2264 => 0x010f,   0xf4 => 0x0110,
            0xf1 => 0x0111, 0x0170 => 0x0112,   0xc9 => 0x0113, 0x0113 => 0x0114,
          0x011f => 0x0115,   0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
          0x0150 => 0x0119,   0xb0 => 0x011a,   0xf2 => 0x011b, 0x010c => 0x011c,
            0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
            0xd1 => 0x0121,   0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
            0xc3 => 0x0125, 0x0104 => 0x0126,   0xc5 => 0x0127,   0xd5 => 0x0128,
          0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
          0x2212 => 0x012d,   0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
            0xac => 0x0131,   0xf6 => 0x0132,   0xfc => 0x0133, 0x2260 => 0x0134,
          0x0123 => 0x0135,   0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
            0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Italic');
    }

}
PKpG[���E�f�f,Pdf/Resource/Font/Simple/Standard/Symbol.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';


/**
 * Implementation for the standard PDF font Symbol.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_Symbol extends Zend_Pdf_Resource_Font_Simple_Standard
{
  /**** Instance Variables ****/


    /**
     * Array for conversion from local encoding to special font encoding.
     * See {@link encodeString()}.
     * @var array
     */
    protected $_toFontEncoding = array(
            0x20 => "\x20",   0x21 => "\x21", 0x2200 => "\x22",   0x23 => "\x23",
          0x2203 => "\x24",   0x25 => "\x25",   0x26 => "\x26", 0x220b => "\x27",
            0x28 => "\x28",   0x29 => "\x29", 0x2217 => "\x2a",   0x2b => "\x2b",
            0x2c => "\x2c", 0x2212 => "\x2d",   0x2e => "\x2e",   0x2f => "\x2f",
            0x30 => "\x30",   0x31 => "\x31",   0x32 => "\x32",   0x33 => "\x33",
            0x34 => "\x34",   0x35 => "\x35",   0x36 => "\x36",   0x37 => "\x37",
            0x38 => "\x38",   0x39 => "\x39",   0x3a => "\x3a",   0x3b => "\x3b",
            0x3c => "\x3c",   0x3d => "\x3d",   0x3e => "\x3e",   0x3f => "\x3f",
          0x2245 => "\x40", 0x0391 => "\x41", 0x0392 => "\x42", 0x03a7 => "\x43",
          0x2206 => "\x44", 0x0395 => "\x45", 0x03a6 => "\x46", 0x0393 => "\x47",
          0x0397 => "\x48", 0x0399 => "\x49", 0x03d1 => "\x4a", 0x039a => "\x4b",
          0x039b => "\x4c", 0x039c => "\x4d", 0x039d => "\x4e", 0x039f => "\x4f",
          0x03a0 => "\x50", 0x0398 => "\x51", 0x03a1 => "\x52", 0x03a3 => "\x53",
          0x03a4 => "\x54", 0x03a5 => "\x55", 0x03c2 => "\x56", 0x2126 => "\x57",
          0x039e => "\x58", 0x03a8 => "\x59", 0x0396 => "\x5a",   0x5b => "\x5b",
          0x2234 => "\x5c",   0x5d => "\x5d", 0x22a5 => "\x5e",   0x5f => "\x5f",
          0xf8e5 => "\x60", 0x03b1 => "\x61", 0x03b2 => "\x62", 0x03c7 => "\x63",
          0x03b4 => "\x64", 0x03b5 => "\x65", 0x03c6 => "\x66", 0x03b3 => "\x67",
          0x03b7 => "\x68", 0x03b9 => "\x69", 0x03d5 => "\x6a", 0x03ba => "\x6b",
          0x03bb => "\x6c",   0xb5 => "\x6d", 0x03bd => "\x6e", 0x03bf => "\x6f",
          0x03c0 => "\x70", 0x03b8 => "\x71", 0x03c1 => "\x72", 0x03c3 => "\x73",
          0x03c4 => "\x74", 0x03c5 => "\x75", 0x03d6 => "\x76", 0x03c9 => "\x77",
          0x03be => "\x78", 0x03c8 => "\x79", 0x03b6 => "\x7a",   0x7b => "\x7b",
            0x7c => "\x7c",   0x7d => "\x7d", 0x223c => "\x7e", 0x20ac => "\xa0",
          0x03d2 => "\xa1", 0x2032 => "\xa2", 0x2264 => "\xa3", 0x2044 => "\xa4",
          0x221e => "\xa5", 0x0192 => "\xa6", 0x2663 => "\xa7", 0x2666 => "\xa8",
          0x2665 => "\xa9", 0x2660 => "\xaa", 0x2194 => "\xab", 0x2190 => "\xac",
          0x2191 => "\xad", 0x2192 => "\xae", 0x2193 => "\xaf",   0xb0 => "\xb0",
            0xb1 => "\xb1", 0x2033 => "\xb2", 0x2265 => "\xb3",   0xd7 => "\xb4",
          0x221d => "\xb5", 0x2202 => "\xb6", 0x2022 => "\xb7",   0xf7 => "\xb8",
          0x2260 => "\xb9", 0x2261 => "\xba", 0x2248 => "\xbb", 0x2026 => "\xbc",
          0xf8e6 => "\xbd", 0xf8e7 => "\xbe", 0x21b5 => "\xbf", 0x2135 => "\xc0",
          0x2111 => "\xc1", 0x211c => "\xc2", 0x2118 => "\xc3", 0x2297 => "\xc4",
          0x2295 => "\xc5", 0x2205 => "\xc6", 0x2229 => "\xc7", 0x222a => "\xc8",
          0x2283 => "\xc9", 0x2287 => "\xca", 0x2284 => "\xcb", 0x2282 => "\xcc",
          0x2286 => "\xcd", 0x2208 => "\xce", 0x2209 => "\xcf", 0x2220 => "\xd0",
          0x2207 => "\xd1", 0xf6da => "\xd2", 0xf6d9 => "\xd3", 0xf6db => "\xd4",
          0x220f => "\xd5", 0x221a => "\xd6", 0x22c5 => "\xd7",   0xac => "\xd8",
          0x2227 => "\xd9", 0x2228 => "\xda", 0x21d4 => "\xdb", 0x21d0 => "\xdc",
          0x21d1 => "\xdd", 0x21d2 => "\xde", 0x21d3 => "\xdf", 0x25ca => "\xe0",
          0x2329 => "\xe1", 0xf8e8 => "\xe2", 0xf8e9 => "\xe3", 0xf8ea => "\xe4",
          0x2211 => "\xe5", 0xf8eb => "\xe6", 0xf8ec => "\xe7", 0xf8ed => "\xe8",
          0xf8ee => "\xe9", 0xf8ef => "\xea", 0xf8f0 => "\xeb", 0xf8f1 => "\xec",
          0xf8f2 => "\xed", 0xf8f3 => "\xee", 0xf8f4 => "\xef", 0x232a => "\xf1",
          0x222b => "\xf2", 0x2320 => "\xf3", 0xf8f5 => "\xf4", 0x2321 => "\xf5",
          0xf8f6 => "\xf6", 0xf8f7 => "\xf7", 0xf8f8 => "\xf8", 0xf8f9 => "\xf9",
          0xf8fa => "\xfa", 0xf8fb => "\xfb", 0xf8fc => "\xfc", 0xf8fd => "\xfd",
          0xf8fe => "\xfe");

    /**
     * Array for conversion from special font encoding to local encoding.
     * See {@link decodeString()}.
     * @var array
     */
    protected $_fromFontEncoding = array(
            0x20 => "\x00\x20",   0x21 => "\x00\x21",   0x22 => "\x22\x00",
            0x23 => "\x00\x23",   0x24 => "\x22\x03",   0x25 => "\x00\x25",
            0x26 => "\x00\x26",   0x27 => "\x22\x0b",   0x28 => "\x00\x28",
            0x29 => "\x00\x29",   0x2a => "\x22\x17",   0x2b => "\x00\x2b",
            0x2c => "\x00\x2c",   0x2d => "\x22\x12",   0x2e => "\x00\x2e",
            0x2f => "\x00\x2f",   0x30 => "\x00\x30",   0x31 => "\x00\x31",
            0x32 => "\x00\x32",   0x33 => "\x00\x33",   0x34 => "\x00\x34",
            0x35 => "\x00\x35",   0x36 => "\x00\x36",   0x37 => "\x00\x37",
            0x38 => "\x00\x38",   0x39 => "\x00\x39",   0x3a => "\x00\x3a",
            0x3b => "\x00\x3b",   0x3c => "\x00\x3c",   0x3d => "\x00\x3d",
            0x3e => "\x00\x3e",   0x3f => "\x00\x3f",   0x40 => "\x22\x45",
            0x41 => "\x03\x91",   0x42 => "\x03\x92",   0x43 => "\x03\xa7",
            0x44 => "\x22\x06",   0x45 => "\x03\x95",   0x46 => "\x03\xa6",
            0x47 => "\x03\x93",   0x48 => "\x03\x97",   0x49 => "\x03\x99",
            0x4a => "\x03\xd1",   0x4b => "\x03\x9a",   0x4c => "\x03\x9b",
            0x4d => "\x03\x9c",   0x4e => "\x03\x9d",   0x4f => "\x03\x9f",
            0x50 => "\x03\xa0",   0x51 => "\x03\x98",   0x52 => "\x03\xa1",
            0x53 => "\x03\xa3",   0x54 => "\x03\xa4",   0x55 => "\x03\xa5",
            0x56 => "\x03\xc2",   0x57 => "\x21\x26",   0x58 => "\x03\x9e",
            0x59 => "\x03\xa8",   0x5a => "\x03\x96",   0x5b => "\x00\x5b",
            0x5c => "\x22\x34",   0x5d => "\x00\x5d",   0x5e => "\x22\xa5",
            0x5f => "\x00\x5f",   0x60 => "\xf8\xe5",   0x61 => "\x03\xb1",
            0x62 => "\x03\xb2",   0x63 => "\x03\xc7",   0x64 => "\x03\xb4",
            0x65 => "\x03\xb5",   0x66 => "\x03\xc6",   0x67 => "\x03\xb3",
            0x68 => "\x03\xb7",   0x69 => "\x03\xb9",   0x6a => "\x03\xd5",
            0x6b => "\x03\xba",   0x6c => "\x03\xbb",   0x6d => "\x00\xb5",
            0x6e => "\x03\xbd",   0x6f => "\x03\xbf",   0x70 => "\x03\xc0",
            0x71 => "\x03\xb8",   0x72 => "\x03\xc1",   0x73 => "\x03\xc3",
            0x74 => "\x03\xc4",   0x75 => "\x03\xc5",   0x76 => "\x03\xd6",
            0x77 => "\x03\xc9",   0x78 => "\x03\xbe",   0x79 => "\x03\xc8",
            0x7a => "\x03\xb6",   0x7b => "\x00\x7b",   0x7c => "\x00\x7c",
            0x7d => "\x00\x7d",   0x7e => "\x22\x3c",   0xa0 => "\x20\xac",
            0xa1 => "\x03\xd2",   0xa2 => "\x20\x32",   0xa3 => "\x22\x64",
            0xa4 => "\x20\x44",   0xa5 => "\x22\x1e",   0xa6 => "\x01\x92",
            0xa7 => "\x26\x63",   0xa8 => "\x26\x66",   0xa9 => "\x26\x65",
            0xaa => "\x26\x60",   0xab => "\x21\x94",   0xac => "\x21\x90",
            0xad => "\x21\x91",   0xae => "\x21\x92",   0xaf => "\x21\x93",
            0xb0 => "\x00\xb0",   0xb1 => "\x00\xb1",   0xb2 => "\x20\x33",
            0xb3 => "\x22\x65",   0xb4 => "\x00\xd7",   0xb5 => "\x22\x1d",
            0xb6 => "\x22\x02",   0xb7 => "\x20\x22",   0xb8 => "\x00\xf7",
            0xb9 => "\x22\x60",   0xba => "\x22\x61",   0xbb => "\x22\x48",
            0xbc => "\x20\x26",   0xbd => "\xf8\xe6",   0xbe => "\xf8\xe7",
            0xbf => "\x21\xb5",   0xc0 => "\x21\x35",   0xc1 => "\x21\x11",
            0xc2 => "\x21\x1c",   0xc3 => "\x21\x18",   0xc4 => "\x22\x97",
            0xc5 => "\x22\x95",   0xc6 => "\x22\x05",   0xc7 => "\x22\x29",
            0xc8 => "\x22\x2a",   0xc9 => "\x22\x83",   0xca => "\x22\x87",
            0xcb => "\x22\x84",   0xcc => "\x22\x82",   0xcd => "\x22\x86",
            0xce => "\x22\x08",   0xcf => "\x22\x09",   0xd0 => "\x22\x20",
            0xd1 => "\x22\x07",   0xd2 => "\xf6\xda",   0xd3 => "\xf6\xd9",
            0xd4 => "\xf6\xdb",   0xd5 => "\x22\x0f",   0xd6 => "\x22\x1a",
            0xd7 => "\x22\xc5",   0xd8 => "\x00\xac",   0xd9 => "\x22\x27",
            0xda => "\x22\x28",   0xdb => "\x21\xd4",   0xdc => "\x21\xd0",
            0xdd => "\x21\xd1",   0xde => "\x21\xd2",   0xdf => "\x21\xd3",
            0xe0 => "\x25\xca",   0xe1 => "\x23\x29",   0xe2 => "\xf8\xe8",
            0xe3 => "\xf8\xe9",   0xe4 => "\xf8\xea",   0xe5 => "\x22\x11",
            0xe6 => "\xf8\xeb",   0xe7 => "\xf8\xec",   0xe8 => "\xf8\xed",
            0xe9 => "\xf8\xee",   0xea => "\xf8\xef",   0xeb => "\xf8\xf0",
            0xec => "\xf8\xf1",   0xed => "\xf8\xf2",   0xee => "\xf8\xf3",
            0xef => "\xf8\xf4",   0xf1 => "\x23\x2a",   0xf2 => "\x22\x2b",
            0xf3 => "\x23\x20",   0xf4 => "\xf8\xf5",   0xf5 => "\x23\x21",
            0xf6 => "\xf8\xf6",   0xf7 => "\xf8\xf7",   0xf8 => "\xf8\xf8",
            0xf9 => "\xf8\xf9",   0xfa => "\xf8\xfa",   0xfb => "\xf8\xfb",
            0xfc => "\xf8\xfc",   0xfd => "\xf8\xfd",   0xfe => "\xf8\xfe",
        );



  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();


        /* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
          . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
          . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
          . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
          . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
          . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
          . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
          . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
          . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00"
          . "\x6c\x00\x6c\x00\x20\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00"
          . "\x73\x00\x20\x00\x72\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00"
          . "\x65\x00\x64\x00\x2e";
        $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";
        $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x34";
        $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c\x00\x20\x00\x4d\x00"
          . "\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
        $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          "\x00\x30\x00\x30\x00\x31\x00\x2e\x00\x30\x00\x30\x00\x38";
        $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";

        $this->_isBold = false;
        $this->_isItalic = false;
        $this->_isMonospaced = false;

        $this->_underlinePosition = -100;
        $this->_underlineThickness = 50;
        $this->_strikePosition = 225;
        $this->_strikeThickness = 50;

        $this->_unitsPerEm = 1000;

        $this->_ascent  = 1000;
        $this->_descent = 0;
        $this->_lineGap = 200;

        /* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        $this->_glyphWidths = array(
            0x00 => 0x01f4,   0x01 =>   0xfa,   0x02 => 0x014d,   0x03 => 0x02c9,
            0x04 => 0x01f4,   0x05 => 0x0225,   0x06 => 0x0341,   0x07 => 0x030a,
            0x08 => 0x01b7,   0x09 => 0x014d,   0x0a => 0x014d,   0x0b => 0x01f4,
            0x0c => 0x0225,   0x0d =>   0xfa,   0x0e => 0x0225,   0x0f =>   0xfa,
            0x10 => 0x0116,   0x11 => 0x01f4,   0x12 => 0x01f4,   0x13 => 0x01f4,
            0x14 => 0x01f4,   0x15 => 0x01f4,   0x16 => 0x01f4,   0x17 => 0x01f4,
            0x18 => 0x01f4,   0x19 => 0x01f4,   0x1a => 0x01f4,   0x1b => 0x0116,
            0x1c => 0x0116,   0x1d => 0x0225,   0x1e => 0x0225,   0x1f => 0x0225,
            0x20 => 0x01bc,   0x21 => 0x0225,   0x22 => 0x02d2,   0x23 => 0x029b,
            0x24 => 0x02d2,   0x25 => 0x0264,   0x26 => 0x0263,   0x27 => 0x02fb,
            0x28 => 0x025b,   0x29 => 0x02d2,   0x2a => 0x014d,   0x2b => 0x0277,
            0x2c => 0x02d2,   0x2d => 0x02ae,   0x2e => 0x0379,   0x2f => 0x02d2,
            0x30 => 0x02d2,   0x31 => 0x0300,   0x32 => 0x02e5,   0x33 => 0x022c,
            0x34 => 0x0250,   0x35 => 0x0263,   0x36 => 0x02b2,   0x37 => 0x01b7,
            0x38 => 0x0300,   0x39 => 0x0285,   0x3a => 0x031b,   0x3b => 0x0263,
            0x3c => 0x014d,   0x3d => 0x035f,   0x3e => 0x014d,   0x3f => 0x0292,
            0x40 => 0x01f4,   0x41 => 0x01f4,   0x42 => 0x0277,   0x43 => 0x0225,
            0x44 => 0x0225,   0x45 => 0x01ee,   0x46 => 0x01b7,   0x47 => 0x0209,
            0x48 => 0x019b,   0x49 => 0x025b,   0x4a => 0x0149,   0x4b => 0x025b,
            0x4c => 0x0225,   0x4d => 0x0225,   0x4e => 0x0240,   0x4f => 0x0209,
            0x50 => 0x0225,   0x51 => 0x0225,   0x52 => 0x0209,   0x53 => 0x0225,
            0x54 => 0x025b,   0x55 => 0x01b7,   0x56 => 0x0240,   0x57 => 0x02c9,
            0x58 => 0x02ae,   0x59 => 0x01ed,   0x5a => 0x02ae,   0x5b => 0x01ee,
            0x5c => 0x01e0,   0x5d =>   0xc8,   0x5e => 0x01e0,   0x5f => 0x0225,
            0x60 => 0x02ee,   0x61 => 0x026c,   0x62 =>   0xf7,   0x63 => 0x0225,
            0x64 =>   0xa7,   0x65 => 0x02c9,   0x66 => 0x01f4,   0x67 => 0x02f1,
            0x68 => 0x02f1,   0x69 => 0x02f1,   0x6a => 0x02f1,   0x6b => 0x0412,
            0x6c => 0x03db,   0x6d => 0x025b,   0x6e => 0x03db,   0x6f => 0x025b,
            0x70 => 0x0190,   0x71 => 0x0225,   0x72 => 0x019b,   0x73 => 0x0225,
            0x74 => 0x0225,   0x75 => 0x02c9,   0x76 => 0x01ee,   0x77 => 0x01cc,
            0x78 => 0x0225,   0x79 => 0x0225,   0x7a => 0x0225,   0x7b => 0x0225,
            0x7c => 0x03e8,   0x7d => 0x025b,   0x7e => 0x03e8,   0x7f => 0x0292,
            0x80 => 0x0337,   0x81 => 0x02ae,   0x82 => 0x031b,   0x83 => 0x03db,
            0x84 => 0x0300,   0x85 => 0x0300,   0x86 => 0x0337,   0x87 => 0x0300,
            0x88 => 0x0300,   0x89 => 0x02c9,   0x8a => 0x02c9,   0x8b => 0x02c9,
            0x8c => 0x02c9,   0x8d => 0x02c9,   0x8e => 0x02c9,   0x8f => 0x02c9,
            0x90 => 0x0300,   0x91 => 0x02c9,   0x92 => 0x0316,   0x93 => 0x0316,
            0x94 => 0x037a,   0x95 => 0x0337,   0x96 => 0x0225,   0x97 =>   0xfa,
            0x98 => 0x02c9,   0x99 => 0x025b,   0x9a => 0x025b,   0x9b => 0x0412,
            0x9c => 0x03db,   0x9d => 0x025b,   0x9e => 0x03db,   0x9f => 0x025b,
            0xa0 => 0x01ee,   0xa1 => 0x0149,   0xa2 => 0x0316,   0xa3 => 0x0316,
            0xa4 => 0x0312,   0xa5 => 0x02c9,   0xa6 => 0x0180,   0xa7 => 0x0180,
            0xa8 => 0x0180,   0xa9 => 0x0180,   0xaa => 0x0180,   0xab => 0x0180,
            0xac => 0x01ee,   0xad => 0x01ee,   0xae => 0x01ee,   0xaf => 0x01ee,
            0xb0 => 0x0149,   0xb1 => 0x0112,   0xb2 => 0x02ae,   0xb3 => 0x02ae,
            0xb4 => 0x02ae,   0xb5 => 0x0180,   0xb6 => 0x0180,   0xb7 => 0x0180,
            0xb8 => 0x0180,   0xb9 => 0x0180,   0xba => 0x0180,   0xbb => 0x01ee,
            0xbc => 0x01ee,   0xbd => 0x01ee,   0xbe => 0x0316);

        /* The cmap table is similarly synthesized.
         */
        $cmapData = array(
            0x20 =>   0x01,   0x21 =>   0x02, 0x2200 =>   0x03,   0x23 =>   0x04,
          0x2203 =>   0x05,   0x25 =>   0x06,   0x26 =>   0x07, 0x220b =>   0x08,
            0x28 =>   0x09,   0x29 =>   0x0a, 0x2217 =>   0x0b,   0x2b =>   0x0c,
            0x2c =>   0x0d, 0x2212 =>   0x0e,   0x2e =>   0x0f,   0x2f =>   0x10,
            0x30 =>   0x11,   0x31 =>   0x12,   0x32 =>   0x13,   0x33 =>   0x14,
            0x34 =>   0x15,   0x35 =>   0x16,   0x36 =>   0x17,   0x37 =>   0x18,
            0x38 =>   0x19,   0x39 =>   0x1a,   0x3a =>   0x1b,   0x3b =>   0x1c,
            0x3c =>   0x1d,   0x3d =>   0x1e,   0x3e =>   0x1f,   0x3f =>   0x20,
          0x2245 =>   0x21, 0x0391 =>   0x22, 0x0392 =>   0x23, 0x03a7 =>   0x24,
          0x2206 =>   0x25, 0x0395 =>   0x26, 0x03a6 =>   0x27, 0x0393 =>   0x28,
          0x0397 =>   0x29, 0x0399 =>   0x2a, 0x03d1 =>   0x2b, 0x039a =>   0x2c,
          0x039b =>   0x2d, 0x039c =>   0x2e, 0x039d =>   0x2f, 0x039f =>   0x30,
          0x03a0 =>   0x31, 0x0398 =>   0x32, 0x03a1 =>   0x33, 0x03a3 =>   0x34,
          0x03a4 =>   0x35, 0x03a5 =>   0x36, 0x03c2 =>   0x37, 0x2126 =>   0x38,
          0x039e =>   0x39, 0x03a8 =>   0x3a, 0x0396 =>   0x3b,   0x5b =>   0x3c,
          0x2234 =>   0x3d,   0x5d =>   0x3e, 0x22a5 =>   0x3f,   0x5f =>   0x40,
          0xf8e5 =>   0x41, 0x03b1 =>   0x42, 0x03b2 =>   0x43, 0x03c7 =>   0x44,
          0x03b4 =>   0x45, 0x03b5 =>   0x46, 0x03c6 =>   0x47, 0x03b3 =>   0x48,
          0x03b7 =>   0x49, 0x03b9 =>   0x4a, 0x03d5 =>   0x4b, 0x03ba =>   0x4c,
          0x03bb =>   0x4d,   0xb5 =>   0x4e, 0x03bd =>   0x4f, 0x03bf =>   0x50,
          0x03c0 =>   0x51, 0x03b8 =>   0x52, 0x03c1 =>   0x53, 0x03c3 =>   0x54,
          0x03c4 =>   0x55, 0x03c5 =>   0x56, 0x03d6 =>   0x57, 0x03c9 =>   0x58,
          0x03be =>   0x59, 0x03c8 =>   0x5a, 0x03b6 =>   0x5b,   0x7b =>   0x5c,
            0x7c =>   0x5d,   0x7d =>   0x5e, 0x223c =>   0x5f, 0x20ac =>   0x60,
          0x03d2 =>   0x61, 0x2032 =>   0x62, 0x2264 =>   0x63, 0x2044 =>   0x64,
          0x221e =>   0x65, 0x0192 =>   0x66, 0x2663 =>   0x67, 0x2666 =>   0x68,
          0x2665 =>   0x69, 0x2660 =>   0x6a, 0x2194 =>   0x6b, 0x2190 =>   0x6c,
          0x2191 =>   0x6d, 0x2192 =>   0x6e, 0x2193 =>   0x6f,   0xb0 =>   0x70,
            0xb1 =>   0x71, 0x2033 =>   0x72, 0x2265 =>   0x73,   0xd7 =>   0x74,
          0x221d =>   0x75, 0x2202 =>   0x76, 0x2022 =>   0x77,   0xf7 =>   0x78,
          0x2260 =>   0x79, 0x2261 =>   0x7a, 0x2248 =>   0x7b, 0x2026 =>   0x7c,
          0xf8e6 =>   0x7d, 0xf8e7 =>   0x7e, 0x21b5 =>   0x7f, 0x2135 =>   0x80,
          0x2111 =>   0x81, 0x211c =>   0x82, 0x2118 =>   0x83, 0x2297 =>   0x84,
          0x2295 =>   0x85, 0x2205 =>   0x86, 0x2229 =>   0x87, 0x222a =>   0x88,
          0x2283 =>   0x89, 0x2287 =>   0x8a, 0x2284 =>   0x8b, 0x2282 =>   0x8c,
          0x2286 =>   0x8d, 0x2208 =>   0x8e, 0x2209 =>   0x8f, 0x2220 =>   0x90,
          0x2207 =>   0x91, 0xf6da =>   0x92, 0xf6d9 =>   0x93, 0xf6db =>   0x94,
          0x220f =>   0x95, 0x221a =>   0x96, 0x22c5 =>   0x97,   0xac =>   0x98,
          0x2227 =>   0x99, 0x2228 =>   0x9a, 0x21d4 =>   0x9b, 0x21d0 =>   0x9c,
          0x21d1 =>   0x9d, 0x21d2 =>   0x9e, 0x21d3 =>   0x9f, 0x25ca =>   0xa0,
          0x2329 =>   0xa1, 0xf8e8 =>   0xa2, 0xf8e9 =>   0xa3, 0xf8ea =>   0xa4,
          0x2211 =>   0xa5, 0xf8eb =>   0xa6, 0xf8ec =>   0xa7, 0xf8ed =>   0xa8,
          0xf8ee =>   0xa9, 0xf8ef =>   0xaa, 0xf8f0 =>   0xab, 0xf8f1 =>   0xac,
          0xf8f2 =>   0xad, 0xf8f3 =>   0xae, 0xf8f4 =>   0xaf, 0x232a =>   0xb0,
          0x222b =>   0xb1, 0x2320 =>   0xb2, 0xf8f5 =>   0xb3, 0x2321 =>   0xb4,
          0xf8f6 =>   0xb5, 0xf8f7 =>   0xb6, 0xf8f8 =>   0xb7, 0xf8f9 =>   0xb8,
          0xf8fa =>   0xb9, 0xf8fb =>   0xba, 0xf8fc =>   0xbb, 0xf8fd =>   0xbc,
          0xf8fe =>   0xbd, 0xf8ff =>   0xbe);
        $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
          Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData);


        /* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Symbol');

        /* This font has a built-in custom character encoding method. Don't
         * override with WinAnsi like the other built-in fonts or else it will
         * not work as expected.
         */
        $this->_resource->Encoding = null;
    }


  /* Information and Conversion Methods */

    /**
     * Convert string encoding from local encoding to font encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        /* This isn't the optimal time to perform this conversion, but it must
         * live here until the remainder of the layout code is completed. This,
         * and the $charEncoding parameter, will go away soon...
         */
        if ($charEncoding != 'UTF-16BE') {
            $string = iconv($charEncoding, 'UTF-16BE', $string);
        }
        /**
         * @todo Properly handle characters encoded as surrogate pairs.
         */
        $encodedString = '';
        for ($i = 0; $i < strlen($string); $i++) {
            $characterCode = (ord($string[$i++]) << 8) | ord($string[$i]);
            if (isset($this->_toFontEncoding[$characterCode])) {
                $encodedString .= $this->_toFontEncoding[$characterCode];
            } else {
                /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the well-known substitution character 0x1a
                 * (Control-Z).
                 */
            }
        }
        return $encodedString;
    }

    /**
     * Convert string encoding from font encoding to local encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    public function decodeString($string, $charEncoding)
    {
        $decodedString = '';
        for ($i = 0; $i < strlen($string); $i++) {
            $characterCode = ord($string[$i]);
            if (isset($this->_fromFontEncoding[$characterCode])) {
                $decodedString .= $this->_fromFontEncoding[$characterCode];
            } else {
                /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the Unicode substitution character (U+FFFD).
                 */
            }
        }
        if ($charEncoding != 'UTF-16BE') {
            $decodedString = iconv('UTF-16BE', $charEncoding, $decodedString);
        }
        return $decodedString;
    }

    /**
     * Converts a Latin-encoded string that fakes the font's internal encoding
     * to the proper Unicode characters, in UTF-16BE encoding.
     *
     * Used to maintain backwards compatibility with the 20 year-old legacy
     * method of using this font, which is still employed by recent versions of
     * some popular word processors.
     *
     * Note that using this method adds overhead due to the additional
     * character conversion. Don't use this for new code; it is more efficient
     * to use the appropriate Unicode characters directly.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source
     *   string. Defaults to current locale.
     * @return string
     */
    public function toUnicode($string, $charEncoding = '')
    {
        /* When using these faked strings, the closest match to the font's
         * internal encoding is ISO-8859-1.
         */
        if ($charEncoding != 'ISO-8859-1') {
            $string = iconv($charEncoding, 'ISO-8859-1', $string);
        }
        return $this->decodeString($string, 'UTF-16BE');
    }

}
PKpG[G���
�
#Pdf/Resource/Font/Simple/Parsed.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple */
require_once 'Zend/Pdf/Resource/Font/Simple.php';

/** Zend_Pdf_FileParser_Font_OpenType */
require_once 'Zend/Pdf/FileParser/Font/OpenType.php';


/**
 * Parsed and (optionaly) embedded fonts implementation
 *
 * OpenType fonts can contain either TrueType or PostScript Type 1 outlines.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Font_Simple_Parsed extends Zend_Pdf_Resource_Font_Simple
{
    /**
     * Object constructor
     *
     * @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object containing OpenType file.
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParser_Font_OpenType $fontParser)
    {
        parent::__construct();
        
        
        $fontParser->parse();

        /* Object properties */

        $this->_fontNames = $fontParser->names;

        $this->_isBold       = $fontParser->isBold;
        $this->_isItalic     = $fontParser->isItalic;
        $this->_isMonospaced = $fontParser->isMonospaced;

        $this->_underlinePosition  = $fontParser->underlinePosition;
        $this->_underlineThickness = $fontParser->underlineThickness;
        $this->_strikePosition     = $fontParser->strikePosition;
        $this->_strikeThickness    = $fontParser->strikeThickness;

        $this->_unitsPerEm = $fontParser->unitsPerEm;

        $this->_ascent  = $fontParser->ascent;
        $this->_descent = $fontParser->descent;
        $this->_lineGap = $fontParser->lineGap;

        $this->_glyphWidths       = $fontParser->glyphWidths;
        $this->_missingGlyphWidth = $this->_glyphWidths[0];


        $this->_cmap = $fontParser->cmap;


        /* Resource dictionary */

        $baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
        $this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont);

        $this->_resource->FirstChar = new Zend_Pdf_Element_Numeric(0);
        $this->_resource->LastChar  = new Zend_Pdf_Element_Numeric(count($this->_glyphWidths) - 1);

        /* Now convert the scalar glyph widths to Zend_Pdf_Element_Numeric objects.
         */
        $pdfWidths = array();
        foreach ($this->_glyphWidths as $width) {
            $pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width));
        }
        /* Create the Zend_Pdf_Element_Array object and add it to the font's
         * object factory and resource dictionary.
         */
        $widthsArrayElement = new Zend_Pdf_Element_Array($pdfWidths);
        $widthsObject = $this->_objectFactory->newObject($widthsArrayElement);
        $this->_resource->Widths = $widthsObject;
    }

}
PKpG[���KK%Pdf/Resource/Font/Simple/Standard.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple */
require_once 'Zend/Pdf/Resource/Font/Simple.php';


/**
 * Abstract class definition for the standard 14 Type 1 PDF fonts.
 *
 * The standard 14 PDF fonts are guaranteed to be availble in any PDF viewer
 * implementation. As such, they do not require much data for the font's
 * resource dictionary. The majority of the data provided by subclasses is for
 * the benefit of our own layout code.
 *
 * The standard fonts and the corresponding subclasses that manage them:
 * <ul>
 *  <li>Courier - {@link Zend_Pdf_Resource_Font_Simple_Standard_Courier}
 *  <li>Courier-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBold}
 *  <li>Courier-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique}
 *  <li>Courier-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique}
 *  <li>Helvetica - {@link Zend_Pdf_Resource_Font_Simple_Standard_Helvetica}
 *  <li>Helvetica-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold}
 *  <li>Helvetica-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique}
 *  <li>Helvetica-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique}
 *  <li>Symbol - {@link Zend_Pdf_Resource_Font_Simple_Standard_Symbol}
 *  <li>Times - {@link Zend_Pdf_Resource_Font_Simple_Standard_Times}
 *  <li>Times-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBold}
 *  <li>Times-Italic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic}
 *  <li>Times-BoldItalic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic}
 *  <li>ZapfDingbats - {@link Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats}
 * </ul>
 *
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Resource_Font_Simple_Standard extends Zend_Pdf_Resource_Font_Simple
{
  /**** Public Interface ****/


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    public function __construct()
    {
        $this->_fontType = Zend_Pdf_Font::TYPE_STANDARD;

        parent::__construct();
        $this->_resource->Subtype  = new Zend_Pdf_Element_Name('Type1');
    }

}
PKpG[6�ܙ�,Pdf/Resource/Font/Simple/Parsed/TrueType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font_Simple_Parsed */
require_once 'Zend/Pdf/Resource/Font/Simple/Parsed.php';

/** Zend_Pdf_Resource_Font_FontDescriptor */
require_once 'Zend/Pdf/Resource/Font/FontDescriptor.php';



/**
 * TrueType fonts implementation
 *
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Parsed_TrueType extends Zend_Pdf_Resource_Font_Simple_Parsed
{
    /**
     * Object constructor
     *
     * @param Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser Font parser
     *   object containing parsed TrueType file.
     * @param integer $embeddingOptions Options for font embedding.
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser, $embeddingOptions)
    {
        parent::__construct($fontParser, $embeddingOptions);

        $this->_fontType = Zend_Pdf_Font::TYPE_TRUETYPE;

        $this->_resource->Subtype  = new Zend_Pdf_Element_Name('TrueType');

        $fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions);
        $this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor);
    }

}
PKpG['��%�%Pdf/Resource/Font/Type0.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_Resource_Font_CidFont */
require_once 'Zend/Pdf/Resource/Font/CidFont.php';

/** Zend_Pdf_Resource_Font_CidFont_TrueType */
require_once 'Zend/Pdf/Resource/Font/CidFont/TrueType.php';


/**
 * Adobe PDF composite fonts implementation
 * 
 * A composite font is one whose glyphs are obtained from other fonts or from fontlike
 * objects called CIDFonts ({@link Zend_Pdf_Resource_Font_CidFont}), organized hierarchically.
 * In PDF, a composite font is represented by a font dictionary whose Subtype value is Type0; 
 * this is also called a Type 0 font (the Type 0 font at the top level of the hierarchy is the 
 * root font).
 * 
 * In PDF, a Type 0 font is a CID-keyed font.
 *
 * CID-keyed fonts provide effective method to operate with multi-byte character encodings.
 *  
 * The CID-keyed font architecture specifies the external representation of certain font programs, 
 * called CMap and CIDFont files, along with some conventions for combining and using those files.
 *  
 * A CID-keyed font is the combination of a CMap with one or more CIDFonts, simple fonts, 
 * or composite fonts containing glyph descriptions.
 * 
 * The term 'CID-keyed font' reflects the fact that CID (character identifier) numbers
 * are used to index and access the glyph descriptions in the font.
 * 
 *  
 * Font objects should be normally be obtained from the factory methods
 * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Type0 extends Zend_Pdf_Resource_Font
{
    /**
     * Descendant CIDFont
     * 
     * @var Zend_Pdf_Resource_Font_CidFont
     */
    private $_descendantFont;


    /**
     * Generate ToUnicode character map data
     * 
     * @return string
     */
    static private function getToUnicodeCMapData()
    {
        return '/CIDInit /ProcSet findresource begin '              . "\n"
             . '12 dict begin '                                     . "\n"
             . 'begincmap '                                         . "\n"
             . '/CIDSystemInfo '                                    . "\n"
             . '<</Registry (Adobe) '                               . "\n"
             . '/Ordering (UCS) '                                   . "\n"
             . '/Supplement 0'                                      . "\n"
             . '>> def'                                             . "\n"
             . '/CMapName /Adobe-Identity-UCS def '                 . "\n"
             . '/CMapType 2 def '                                   . "\n"
             . '1 begincodespacerange'                              . "\n"
             . '<0000> <FFFF> '                                     . "\n"
             . 'endcodespacerange '                                 . "\n"
             . '1 beginbfrange '                                    . "\n"
             . '<0000> <FFFF> <0000> '                              . "\n"
             . 'endbfrange '                                        . "\n"
             . 'endcmap '                                           . "\n"
             . 'CMapName currentdict /CMap defineresource pop '     . "\n"
             . 'end '
             . 'end ';
            }

    /**
     * Object constructor
     *
     */
    public function __construct(Zend_Pdf_Resource_Font_CidFont $descendantFont)
    {
        parent::__construct();
        
        $this->_objectFactory->attach($descendantFont->getFactory());
        
        $this->_fontType       = Zend_Pdf_Font::TYPE_TYPE_0;
        $this->_descendantFont = $descendantFont;


        $this->_fontNames    = $descendantFont->getFontNames();

        $this->_isBold       = $descendantFont->isBold();
        $this->_isItalic     = $descendantFont->isItalic();
        $this->_isMonospaced = $descendantFont->isMonospace();

        $this->_underlinePosition  = $descendantFont->getUnderlinePosition();
        $this->_underlineThickness = $descendantFont->getUnderlineThickness();
        $this->_strikePosition     = $descendantFont->getStrikePosition();
        $this->_strikeThickness    = $descendantFont->getStrikeThickness();

        $this->_unitsPerEm = $descendantFont->getUnitsPerEm();

        $this->_ascent  = $descendantFont->getAscent();
        $this->_descent = $descendantFont->getDescent();
        $this->_lineGap = $descendantFont->getLineGap();
        
        
        $this->_resource->Subtype         = new Zend_Pdf_Element_Name('Type0');
        $this->_resource->BaseFont        = new Zend_Pdf_Element_Name($descendantFont->getResource()->BaseFont->value);
        $this->_resource->DescendantFonts = new Zend_Pdf_Element_Array(array( $descendantFont->getResource() ));
        $this->_resource->Encoding        = new Zend_Pdf_Element_Name('Identity-H');
        
        $toUnicode = $this->_objectFactory->newStreamObject(self::getToUnicodeCMapData());
        $this->_resource->ToUnicode = $toUnicode;
        
    }

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts.
     * So we don't need to perform any conversion 
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        return $characterCodes;
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts.
     * So we don't need to perform any conversion 
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        return $characterCode;
    }
    
    /**
     * Returns a number between 0 and 1 inclusive that indicates the percentage
     * of characters in the string which are covered by glyphs in this font.
     *
     * Since no one font will contain glyphs for the entire Unicode character
     * range, this method can be used to help locate a suitable font when the
     * actual contents of the string are not known.
     *
     * Note that some fonts lie about the characters they support. Additionally,
     * fonts don't usually contain glyphs for control characters such as tabs
     * and line breaks, so it is rare that you will get back a full 1.0 score.
     * The resulting value should be considered informational only.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source text.
     *   If omitted, uses 'current locale'.
     * @return float
     */
    public function getCoveredPercentage($string, $charEncoding = '')
    {
        return $this->_descendantFont->getCoveredPercentage($string, $charEncoding);
    }

    /**
     * Returns the widths of the glyphs.
     *
     * The widths are expressed in the font's glyph space. You are responsible
     * for converting to user space as necessary. See {@link unitsPerEm()}.
     *
     * Throws an exception if the glyph number is out of range.
     *
     * See also {@link widthForGlyph()}.
     *
     * @param array &$glyphNumbers Array of glyph numbers.
     * @return array Array of glyph widths (integers).
     * @throws Zend_Pdf_Exception
     */
    public function widthsForGlyphs($glyphNumbers)
    {
        return $this->_descendantFont->widthsForChars($glyphNumbers);
    }

    /**
     * Returns the width of the glyph.
     *
     * Like {@link widthsForGlyphs()} but used for one glyph at a time.
     *
     * @param integer $glyphNumber
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function widthForGlyph($glyphNumber)
    {
        return $this->_descendantFont->widthForChar($glyphNumber);
    }

    /**
     * Convert string to the font encoding.
     * 
     * The method is used to prepare string for text drawing operators 
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    public function encodeString($string, $charEncoding)
    {
        return iconv($charEncoding, 'UTF-16BE', $string);
    }

    /**
     * Convert string from the font encoding.
     *
     * The method is used to convert strings retrieved from existing content streams
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
        public function decodeString($string, $charEncoding)
    {
        return iconv('UTF-16BE', $charEncoding, $string);
    }
}
PKpG[�g��$$$Pdf/Resource/Font/FontDescriptor.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Font */
require_once 'Zend/Pdf/Font.php';

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_FileParser_Font_OpenType */
require_once 'Zend/Pdf/FileParser/Font/OpenType.php';


/**
 * FontDescriptor implementation
 *
 * A font descriptor specifies metrics and other attributes of a simple font or a 
 * CIDFont as a whole, as distinct from the metrics of individual glyphs. These font
 * metrics provide information that enables a viewer application to synthesize a
 * substitute font or select a similar font when the font program is unavailable. The
 * font descriptor may also be used to embed the font program in the PDF file.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_FontDescriptor
{
    /**
     * Object constructor
     * @throws Zend_Pdf_Exception
     */
    public function __construct()
    {
        throw new Zend_Pdf_Exception('Zend_Pdf_Resource_Font_FontDescriptor is not intended to be instantiated');
    } 
    
    /**
     * Object constructor
     * 
     * The $embeddingOptions parameter allows you to set certain flags related
     * to font embedding. You may combine options by OR-ing them together. See
     * the EMBED_ constants defined in {@link Zend_Pdf_Font} for the list of
     * available options and their descriptions.
     *
     * Note that it is not requried that fonts be embedded within the PDF file
     * to use them. If the recipient of the PDF has the font installed on their
     * computer, they will see the correct fonts in the document. If they don't,
     * the PDF viewer will substitute or synthesize a replacement.
     * 
     * 
     * @param Zend_Pdf_Resource_Font $font Font
     * @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object containing parsed TrueType file.
     * @param integer $embeddingOptions Options for font embedding.
     * @return Zend_Pdf_Element_Dictionary
     * @throws Zend_Pdf_Exception
     */
    static public function factory(Zend_Pdf_Resource_Font $font, Zend_Pdf_FileParser_Font_OpenType $fontParser, $embeddingOptions)
    {
        /* The font descriptor object contains the rest of the font metrics and
         * the information about the embedded font program (if applicible).
         */
        $fontDescriptor = new Zend_Pdf_Element_Dictionary();

        $fontDescriptor->Type     = new Zend_Pdf_Element_Name('FontDescriptor');
        $fontDescriptor->FontName = new Zend_Pdf_Element_Name($font->getResource()->BaseFont->value);

        /* The font flags value is a bitfield that describes the stylistic
         * attributes of the font. We will set as many of the bits as can be
         * determined from the font parser.
         */
        $flags = 0;
        if ($fontParser->isMonospaced) {    // bit 1: FixedPitch
            $flags |= 1 << 0;
        }
        if ($fontParser->isSerifFont) {    // bit 2: Serif
            $flags |= 1 << 1;
        }
        if (! $fontParser->isAdobeLatinSubset) {    // bit 3: Symbolic
            $flags |= 1 << 2;
        }
        if ($fontParser->isScriptFont) {    // bit 4: Script
            $flags |= 1 << 3;
        }
        if ($fontParser->isAdobeLatinSubset) {    // bit 6: Nonsymbolic
            $flags |= 1 << 5;
        }
        if ($fontParser->isItalic) {    // bit 7: Italic
            $flags |= 1 << 6;
        }
        // bits 17-19: AllCap, SmallCap, ForceBold; not available
        $fontDescriptor->Flags = new Zend_Pdf_Element_Numeric($flags);

        $fontBBox = array(new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMin)),
                          new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMin)),
                          new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMax)),
                          new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMax)));
        $fontDescriptor->FontBBox     = new Zend_Pdf_Element_Array($fontBBox);

        $fontDescriptor->ItalicAngle  = new Zend_Pdf_Element_Numeric($fontParser->italicAngle);

        $fontDescriptor->Ascent       = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->ascent));
        $fontDescriptor->Descent      = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->descent));

        $fontDescriptor->CapHeight    = new Zend_Pdf_Element_Numeric($fontParser->capitalHeight);
        /**
         * The vertical stem width is not yet extracted from the OpenType font
         * file. For now, record zero which is interpreted as 'unknown'.
         * @todo Calculate value for StemV.
         */
        $fontDescriptor->StemV        = new Zend_Pdf_Element_Numeric(0);
        
        $fontDescriptor->MissingWidth = new Zend_Pdf_Element_Numeric($fontParser->glyphWidths[0]);

        /* Set up font embedding. This is where the actual font program itself
         * is embedded within the PDF document.
         *
         * Note that it is not requried that fonts be embedded within the PDF
         * document to use them. If the recipient of the PDF has the font
         * installed on their computer, they will see the correct fonts in the
         * document. If they don't, the PDF viewer will substitute or synthesize
         * a replacement.
         *
         * There are several guidelines for font embedding:
         *
         * First, the developer might specifically request not to embed the font.
         */
        if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_EMBED)) {

            /* Second, the font author may have set copyright bits that prohibit
             * the font program from being embedded. Yes this is controversial,
             * but it's the rules:
             *   http://partners.adobe.com/public/developer/en/acrobat/sdk/FontPolicies.pdf
             *
             * To keep the developer in the loop, and to prevent surprising bug
             * reports of "your PDF doesn't have the right fonts," throw an
             * exception if the font cannot be embedded.
             */
            if (! $fontParser->isEmbeddable) {
                /* This exception may be suppressed if the developer decides that
                 * it's not a big deal that the font program can't be embedded.
                 */
                if (!($embeddingOptions & Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION)) {
                    $message = 'This font cannot be embedded in the PDF document. If you would like to use '
                             . 'it anyway, you must pass Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION '
                             . 'in the $options parameter of the font constructor.';
                    throw new Zend_Pdf_Exception($message, Zend_Pdf_Exception::FONT_CANT_BE_EMBEDDED);
                }

            } else {
                /* Otherwise, the default behavior is to embed all custom fonts.
                 */
                /* This section will change soon to a stream object data
                 * provider model so that we don't have to keep a copy of the
                 * entire font in memory.
                 *
                 * We also cannot build font subsetting until the data provider
                 * model is in place.
                 */
                $fontFile = $fontParser->getDataSource()->readAllBytes();
                $fontFileObject = $font->getFactory()->newStreamObject($fontFile);
                $fontFileObject->dictionary->Length1 = new Zend_Pdf_Element_Numeric(strlen($fontFile));
                if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_COMPRESS)) {
                    /* Compress the font file using Flate. This generally cuts file
                     * sizes by about half!
                     */
                    $fontFileObject->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
                }
                if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_Type1 /* not implemented now */) {
                    $fontDescriptor->FontFile  = $fontFileObject;
                } else if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_TrueType) {
                    $fontDescriptor->FontFile2 = $fontFileObject;
                } else {
                    $fontDescriptor->FontFile3 = $fontFileObject;
                }
            }
        }

        return $fontDescriptor;
    }
}
PKpG[��/)	)	Pdf/Resource/ImageFactory.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf */
require_once 'Zend/Pdf.php';


/**
 * Zend_Pdf_ImageFactory
 *
 * Helps manage the diverse set of supported image file types.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @todo       Use Zend_Mime not file extension for type determination.
 */
class Zend_Pdf_Resource_ImageFactory
{
    public static function factory($filename) {
        if(!is_file($filename)) {
            throw new Zend_Pdf_Exception("Cannot create image resource. File not found.");
        }
        $extension = pathinfo($filename, PATHINFO_EXTENSION);
        /*
         * There are plans to use Zend_Mime and not file extension. In the mean time, if you need to
         * use an alternate file extension just spin up the right processor directly.
         */
        switch (strtolower($extension)) {
            case 'tif':
                //Fall through to next case;
            case 'tiff':
                return new Zend_Pdf_Resource_Image_Tiff($filename);
                break;
            case 'png':
                return new Zend_Pdf_Resource_Image_Png($filename);
                break;
            case 'jpg':
                //Fall through to next case;
            case 'jpe':
                //Fall through to next case;
            case 'jpeg':
                return new Zend_Pdf_Resource_Image_Jpeg($filename);
                break;
            default:
                throw new Zend_Pdf_Exception("Cannot create image resource. File extension not known or unsupported type.");
                break;
        }
    }
}

PKpG[�K��Pdf/Page.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';

/** Zend_Pdf_Style */
require_once 'Zend/Pdf/Style.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';

/** Zend_Pdf_Element_Reference */
require_once 'Zend/Pdf/Element/Reference.php';

/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Color_GrayScale */
require_once 'Zend/Pdf/Color/GrayScale.php';

/** Zend_Pdf_Color_Rgb */
require_once 'Zend/Pdf/Color/Rgb.php';

/** Zend_Pdf_Color_Cmyk */
require_once 'Zend/Pdf/Color/Cmyk.php';

/**
 * PDF Page
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Page
{
  /**** Class Constants ****/


  /* Page Sizes */

    /**
     * Size representing an A4 page in portrait (tall) orientation.
     */
    const SIZE_A4                = '595:842:';

    /**
     * Size representing an A4 page in landscape (wide) orientation.
     */
    const SIZE_A4_LANDSCAPE      = '842:595:';

    /**
     * Size representing a US Letter page in portrait (tall) orientation.
     */
    const SIZE_LETTER            = '612:792:';

    /**
     * Size representing a US Letter page in landscape (wide) orientation.
     */
    const SIZE_LETTER_LANDSCAPE  = '792:612:';


  /* Shape Drawing */

    /**
     * Stroke the path only. Do not fill.
     */
    const SHAPE_DRAW_STROKE      = 0;

    /**
     * Fill the path only. Do not stroke.
     */
    const SHAPE_DRAW_FILL        = 1;

    /**
     * Fill and stroke the path.
     */
    const SHAPE_DRAW_FILL_AND_STROKE = 2;


  /* Shape Filling Methods */

    /**
     * Fill the path using the non-zero winding rule.
     */
    const FILL_METHOD_NON_ZERO_WINDING = 0;

    /**
     * Fill the path using the even-odd rule.
     */
    const FILL_METHOD_EVEN_ODD        = 1;


  /* Line Dash Types */

    /**
     * Solid line dash.
     */
    const LINE_DASHING_SOLID = 0;



    /**
     * Reference to the object with page dictionary.
     *
     * @var Zend_Pdf_Element_Reference
     */
    protected $_pageDictionary;

    /**
     * PDF objects factory.
     *
     * @var Zend_Pdf_ElementFactory_Interface
     */
    protected $_objFactory = null;

    /**
     * Flag which signals, that page is created separately from any PDF document or
     * attached to anyone.
     *
     * @var boolean
     */
    protected $_attached;

    /**
     * Stream of the drawing instractions.
     *
     * @var string
     */
    protected $_contents = '';

    /**
     * Current style
     *
     * @var Zend_Pdf_Style
     */
    protected $_style = null;

    /**
     * Counter for the "Save" operations
     *
     * @var integer
     */
    protected $_saveCount = 0;

    /**
     * Safe Graphics State semafore
     *
     * If it's false, than we can't be sure Graphics State is restored withing
     * context of previous contents stream (ex. drawing coordinate system may be rotated).
     * We should encompass existing content with save/restore GS operators
     *
     * @var boolean
     */
    protected $_safeGS;

    /**
     * Current font
     *
     * @var Zend_Pdf_Resource_Font
     */
    protected $_font = null;

    /**
     * Current font size
     *
     * @var float
     */
    protected $_fontSize;

    /**
     * Object constructor.
     * Constructor signatures:
     *
     * 1. Load PDF page from a parsed PDF file.
     *    Object factory is created by PDF parser.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(Zend_Pdf_Element_Dictionary       $pageDict,
     *                   Zend_Pdf_ElementFactory_Interface $factory);
     * ---------------------------------------------------------
     *
     * 2. Clone PDF page.
     *    New page is created in the same context as source page. Object factory is shared.
     *    Thus it will be attached to the document, but need to be placed into Zend_Pdf::$pages array
     *    to be included into output.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(Zend_Pdf_Page $page);
     * ---------------------------------------------------------
     *
     * 3. Create new page with a specified pagesize.
     *    If $factory is null then it will be created and page must be attached to the document to be
     *    included into output.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(string $pagesize, Zend_Pdf_ElementFactory_Interface $factory = null);
     * ---------------------------------------------------------
     *
     * 4. Create new page with a specified pagesize (in default user space units).
     *    If $factory is null then it will be created and page must be attached to the document to be
     *    included into output.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(numeric $width, numeric $height, Zend_Pdf_ElementFactory_Interface $factory = null);
     * ---------------------------------------------------------
     *
     *
     * @param mixed $param1
     * @param mixed $param2
     * @param mixed $param3
     * @throws Zend_Pdf_Exception
     */
    public function __construct($param1, $param2 = null, $param3 = null)
    {
        if ($param1 instanceof Zend_Pdf_Element_Reference &&
            $param1->getType() == Zend_Pdf_Element::TYPE_DICTIONARY &&
            $param2 instanceof Zend_Pdf_ElementFactory_Interface &&
            $param3 === null
           ) {
            $this->_pageDictionary = $param1;
            $this->_objFactory     = $param2;
            $this->_attached       = true;
            $this->_safeGS         = false;

            return;

        } else if ($param1 instanceof Zend_Pdf_Page && $param2 === null && $param3 === null) {
            // Clone existing page.
            // Let already existing content and resources to be shared between pages
            // We don't give existing content modification functionality, so we don't need "deep copy"
            $this->_objFactory = $param1->_objFactory;
            $this->_attached   = &$param1->_attached;
            $this->_safeGS     = false;

            $this->_pageDictionary = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary());

            foreach ($param1->_pageDictionary->getKeys() as $key) {
                if ($key == 'Contents') {
                    // Clone Contents property

                    $this->_pageDictionary->Contents = new Zend_Pdf_Element_Array();

                    if ($param1->_pageDictionary->Contents->getType() != Zend_Pdf_Element::TYPE_ARRAY) {
                        // Prepare array of content streams and add existing stream
                        $this->_pageDictionary->Contents->items[] = $param1->_pageDictionary->Contents;
                    } else {
                        // Clone array of the content streams
                        foreach ($param1->_pageDictionary->Contents->items as $srcContentStream) {
                            $this->_pageDictionary->Contents->items[] = $srcContentStream;
                        }
                    }
                } else {
                    $this->_pageDictionary->$key = $param1->_pageDictionary->$key;
                }
            }

            return;
        } else if (is_string($param1) &&
                   ($param2 === null || $param2 instanceof Zend_Pdf_ElementFactory_Interface) &&
                   $param3 === null) {
            $this->_objFactory = ($param2 !== null)? $param2 : Zend_Pdf_ElementFactory::createFactory(1);
            $this->_attached   = false;
            $this->_safeGS     = true; /** New page created. That's users App responsibility to track GS changes */

            switch (strtolower($param1)) {
                case 'a4':
                    $param1 = Zend_Pdf_Page::SIZE_A4;
                    break;
                case 'a4-landscape':
                    $param1 = Zend_Pdf_Page::SIZE_A4_LANDSCAPE;
                    break;
                case 'letter':
                    $param1 = Zend_Pdf_Page::SIZE_LETTER;
                    break;
                case 'letter-landscape':
                    $param1 = Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE;
                    break;
                default:
                    // should be in "x:y" form
            }

            $pageDim = explode(':', $param1);
            if(count($pageDim) == 3) {
                $pageWidth  = $pageDim[0];
                $pageHeight = $pageDim[1];
            } else {
                /**
                 * @todo support of user defined pagesize notations, like:
                 *       "210x297mm", "595x842", "8.5x11in", "612x792"
                 */
                throw new Zend_Pdf_Exception('Wrong pagesize notation.');
            }
            /**
             * @todo support of pagesize recalculation to "default user space units"
             */

        } else if (is_numeric($param1) && is_numeric($param2) &&
                   ($param3 === null || $param3 instanceof Zend_Pdf_ElementFactory_Interface)) {
            $this->_objFactory = ($param3 !== null)? $param3 : Zend_Pdf_ElementFactory::createFactory(1);
            $this->_attached = false;
            $this->_safeGS   = true; /** New page created. That's users App responsibility to track GS changes */
            $pageWidth  = $param1;
            $pageHeight = $param2;

        } else {
            throw new Zend_Pdf_Exception('Unrecognized method signature, wrong number of arguments or wrong argument types.');
        }

        $this->_pageDictionary = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary());
        $this->_pageDictionary->Type         = new Zend_Pdf_Element_Name('Page');
        $this->_pageDictionary->LastModified = new Zend_Pdf_Element_String(Zend_Pdf::pdfDate());
        $this->_pageDictionary->Resources    = new Zend_Pdf_Element_Dictionary();
        $this->_pageDictionary->MediaBox     = new Zend_Pdf_Element_Array();
        $this->_pageDictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric(0);
        $this->_pageDictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric(0);
        $this->_pageDictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric($pageWidth);
        $this->_pageDictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric($pageHeight);
        $this->_pageDictionary->Contents     = new Zend_Pdf_Element_Array();
    }


    /**
     * Clone operator
     *
     * @throws Zend_Pdf_Exception
     */
    public function __clone()
    {
        throw new Zend_Pdf_Exception('Cloning Zend_Pdf_Page object using \'clone\' keyword is not supported. Use \'new Zend_Pdf_Page($srcPage)\' syntax');
    }

    /**
     * Attach resource to the page
     *
     * @param string $type
     * @param Zend_Pdf_Resource $resource
     * @return string
     */
    protected function _attachResource($type, Zend_Pdf_Resource $resource)
    {
        // Check that Resources dictionary contains appropriate resource set
        if ($this->_pageDictionary->Resources->$type === null) {
            $this->_pageDictionary->Resources->touch();
            $this->_pageDictionary->Resources->$type = new Zend_Pdf_Element_Dictionary();
        } else {
            $this->_pageDictionary->Resources->$type->touch();
        }

        // Check, that resource is already attached to resource set.
        $resObject = $resource->getResource();
        foreach ($this->_pageDictionary->Resources->$type->getKeys() as $ResID) {
            if ($this->_pageDictionary->Resources->$type->$ResID === $resObject) {
                return $ResID;
            }
        }

        $idCounter = 1;
        do {
            $newResName = $type[0] . $idCounter++;
        } while ($this->_pageDictionary->Resources->$type->$newResName !== null);

        $this->_pageDictionary->Resources->$type->$newResName = $resObject;
        $this->_objFactory->attach($resource->getFactory());

        return $newResName;
    }

    /**
     * Add procedureSet to the Page description
     *
     * @param string $procSetName
     */
    protected function _addProcSet($procSetName)
    {
        // Check that Resources dictionary contains ProcSet entry
        if ($this->_pageDictionary->Resources->ProcSet === null) {
            $this->_pageDictionary->Resources->touch();
            $this->_pageDictionary->Resources->ProcSet = new Zend_Pdf_Element_Array();
        } else {
            $this->_pageDictionary->Resources->ProcSet->touch();
        }

        foreach ($this->_pageDictionary->Resources->ProcSet->items as $procSetEntry) {
            if ($procSetEntry->value == $procSetName) {
                // Procset is already included into a ProcSet array
                return;
            }
        }

        $this->_pageDictionary->Resources->ProcSet->items[] = new Zend_Pdf_Element_Name($procSetName);
    }

    /**
     * Retrive PDF file reference to the page
     *
     * @return Zend_Pdf_Element_Dictionary
     */
    public function getPageDictionary()
    {
        return $this->_pageDictionary;
    }

    /**
     * Dump current drawing instructions into the content stream.
     *
     * @todo Don't forget to close all current graphics operations (like path drawing)
     *
     * @throws Zend_Pdf_Exception
     */
    public function flush()
    {
        if ($this->_saveCount != 0) {
            throw new Zend_Pdf_Exception('Saved graphics state is not restored');
        }

        if ($this->_contents == '') {
            return;
        }

        if ($this->_pageDictionary->Contents->getType() != Zend_Pdf_Element::TYPE_ARRAY) {
            /**
             * It's a stream object.
             * Prepare Contents page attribute for update.
             */
            $this->_pageDictionary->touch();

            $currentPageContents = $this->_pageDictionary->Contents;
            $this->_pageDictionary->Contents = new Zend_Pdf_Element_Array();
            $this->_pageDictionary->Contents->items[] = $currentPageContents;
        } else {
            $this->_pageDictionary->Contents->touch();
        }

        if ((!$this->_safeGS)  &&  (count($this->_pageDictionary->Contents->items) != 0)) {
            /**
             * Page already has some content which is not treated as safe.
             *
             * Add save/restore GS operators
             */
            $this->_addProcSet('PDF');

            $newContentsArray = new Zend_Pdf_Element_Array();
            $newContentsArray->items[] = $this->_objFactory->newStreamObject(" q\n");
            foreach ($this->_pageDictionary->Contents->items as $contentStream) {
                $newContentsArray->items[] = $contentStream;
            }
            $newContentsArray->items[] = $this->_objFactory->newStreamObject(" Q\n");

            $this->_pageDictionary->touch();
            $this->_pageDictionary->Contents = $newContentsArray;

            $this->_safeGS = true;
        }

        $this->_pageDictionary->Contents->items[] =
                $this->_objFactory->newStreamObject($this->_contents);

        $this->_contents = '';
    }

    /**
     * Prepare page to be rendered into PDF.
     *
     * @todo Don't forget to close all current graphics operations (like path drawing)
     *
     * @param Zend_Pdf_ElementFactory_Interface $objFactory
     * @throws Zend_Pdf_Exception
     */
    public function render(Zend_Pdf_ElementFactory_Interface $objFactory)
    {
        $this->flush();

        if ($objFactory === $this->_objFactory) {
            // Page is already attached to the document.
            return;
        }

        if ($this->_attached) {
            throw new Zend_Pdf_Exception('Page is attached to one documen, but rendered in context of another.');
            /**
             * @todo Page cloning must be implemented here instead of exception.
             *       PDF objects (ex. fonts) can be shared between pages.
             *       Thus all referenced objects, which can be modified, must be cloned recursively,
             *       to avoid producing wrong object references in a context of source PDF.
             */

            //...
        } else {
            $objFactory->attach($this->_objFactory);
        }
    }



    /**
     * Set fill color.
     *
     * @param Zend_Pdf_Color $color
     * @return Zend_Pdf_Page
     */
    public function setFillColor(Zend_Pdf_Color $color)
    {
        $this->_addProcSet('PDF');
        $this->_contents .= $color->instructions(false);

        return $this;
    }

    /**
     * Set line color.
     *
     * @param Zend_Pdf_Color $color
     * @return Zend_Pdf_Page
     */
    public function setLineColor(Zend_Pdf_Color $color)
    {
        $this->_addProcSet('PDF');
        $this->_contents .= $color->instructions(true);

        return $this;
    }

    /**
     * Set line width.
     *
     * @param float $width
     * @return Zend_Pdf_Page
     */
    public function setLineWidth($width)
    {
        $this->_addProcSet('PDF');
        $widthObj = new Zend_Pdf_Element_Numeric($width);
        $this->_contents .= $widthObj->toString() . " w\n";

        return $this;
    }

    /**
     * Set line dashing pattern
     *
     * Pattern is an array of floats: array(on_length, off_length, on_length, off_length, ...)
     * Phase is shift from the beginning of line.
     *
     * @param array $pattern
     * @param array $phase
     * @return Zend_Pdf_Page
     */
    public function setLineDashingPattern($pattern, $phase = 0)
    {
        $this->_addProcSet('PDF');

        if ($pattern === Zend_Pdf_Page::LINE_DASHING_SOLID) {
            $pattern = array();
            $phase   = 0;
        }

        $dashPattern  = new Zend_Pdf_Element_Array();
        $phaseEleemnt = new Zend_Pdf_Element_Numeric($phase);

        foreach ($pattern as $dashItem) {
            $dashElement = new Zend_Pdf_Element_Numeric($dashItem);
            $dashPattern->items[] = $dashElement;
        }

        $this->_contents .= $dashPattern->toString() . ' '
                         . $phaseEleemnt->toString() . " d\n";

        return $this;
    }

    /**
     * Set current font.
     *
     * @param Zend_Pdf_Resource_Font $font
     * @param float $fontSize
     * @return Zend_Pdf_Page
     */
    public function setFont(Zend_Pdf_Resource_Font $font, $fontSize)
    {
        $this->_addProcSet('Text');
        $fontName = $this->_attachResource('Font', $font);

        $this->_font     = $font;
        $this->_fontSize = $fontSize;

        $fontNameObj = new Zend_Pdf_Element_Name($fontName);
        $fontSizeObj = new Zend_Pdf_Element_Numeric($fontSize);
        $this->_contents .= $fontNameObj->toString() . ' ' . $fontSizeObj->toString() . " Tf\n";

        return $this;
    }

    /**
     * Set the style to use for future drawing operations on this page
     *
     * @param Zend_Pdf_Style $style
     * @return Zend_Pdf_Page
     */
    public function setStyle(Zend_Pdf_Style $style)
    {
        $this->_style = $style;

        $this->_addProcSet('Text');
        $this->_addProcSet('PDF');
        if ($style->getFont() !== null) {
            $this->setFont($style->getFont(), $style->getFontSize());
        }
        $this->_contents .= $style->instructions($this->_pageDictionary->Resources);

        return $this;
    }

    /**
     * Set the transparancy
     *
     * $alpha == 0  - transparent
     * $alpha == 1  - opaque
     *
     * Transparency modes, supported by PDF:
     * Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight,
     * SoftLight, Difference, Exclusion
     *
     * @param float $alpha
     * @param string $mode
     * @throws Zend_Pdf_Exception
     * @return Zend_Pdf_Page
     */
    public function setAlpha($alpha, $mode = 'Normal')
    {
        if (!in_array($mode, array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge',
                                   'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion'))) {
            throw new Zend_Pdf_Exception('Unsupported transparency mode.');
        }
        if (!is_numeric($alpha)  ||  $alpha < 0  ||  $alpha > 1) {
            throw new Zend_Pdf_Exception('Alpha value must be numeric between 0 (transparent) and 1 (opaque).');
        }

        $this->_addProcSet('Text');
        $this->_addProcSet('PDF');

        $resources = $this->_pageDictionary->Resources;

        // Check if Resources dictionary contains ExtGState entry
        if ($resources->ExtGState === null) {
            $resources->touch();
            $resources->ExtGState = new Zend_Pdf_Element_Dictionary();
        } else {
            $resources->ExtGState->touch();
        }

        $idCounter = 1;
        do {
            $gStateName = 'GS' . $idCounter++;
        } while ($resources->ExtGState->$gStateName !== null);


        $gStateDictionary = new Zend_Pdf_Element_Dictionary();
        $gStateDictionary->Type = new Zend_Pdf_Element_Name('ExtGState');
        $gStateDictionary->BM   = new Zend_Pdf_Element_Name($mode);
        $gStateDictionary->CA   = new Zend_Pdf_Element_Numeric($alpha);
        $gStateDictionary->ca   = new Zend_Pdf_Element_Numeric($alpha);

        $resources->ExtGState->$gStateName = $this->_objFactory->newObject($gStateDictionary);

        $gStateNameObj = new Zend_Pdf_Element_Name($gStateName);
        $this->_contents .= $gStateNameObj->toString() . " gs\n";

        return $this;
    }


    /**
     * Get current font.
     *
     * @return Zend_Pdf_Resource_Font $font
     */
    public function getFont()
    {
        return $this->_font;
    }

    /**
     * Extract resources attached to the page
     *
     * This method is not intended to be used in userland, but helps to optimize some document wide operations
     *
     * returns array of Zend_Pdf_Element_Dictionary objects
     *
     * @internal
     * @return array
     */
    public function extractResources()
    {
        return $this->_pageDictionary->Resources;
    }

    /**
     * Extract fonts attached to the page
     *
     * returns array of Zend_Pdf_Resource_Font_Extracted objects
     *
     * @return array
     */
    public function extractFonts()
    {
        if ($this->_pageDictionary->Resources->Font === null) {
            // Page doesn't have any font attached
            // Return empty array
            return array();
        }

        $fontResources = $this->_pageDictionary->Resources->Font;

        $fontResourcesUnique = array();
        foreach ($fontResources->getKeys() as $fontResourceName) {
            $fontDictionary = $fontResources->$fontResourceName;

            if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference  ||
                   $fontDictionary instanceof Zend_Pdf_Element_Object) ) {
                // Font dictionary has to be an indirect object or object reference
                continue;
            }

            $fontResourcesUnique[$fontDictionary->toString($this->_objFactory)] = $fontDictionary;
        }

        $fonts = array();
        foreach ($fontResourcesUnique as $resourceReference => $fontDictionary) {
            try {
                // Try to extract font
                $extractedFont = new Zend_Pdf_Resource_Font_Extracted($fontDictionary);

                $fonts[$resourceReference] = $extractedFont;
            } catch (Zend_Pdf_Exception $e) {
                if ($e->getMessage() != 'Unsupported font type.') {
                    throw $e;
                }
            }
        }

        return $fonts;
    }

    /**
     * Extract font attached to the page by specific font name
     *
     * $fontName should be specified in UTF-8 encoding
     *
     * @return Zend_Pdf_Resource_Font_Extracted|null
     */
    public function extractFont($fontName)
    {
        if ($this->_pageDictionary->Resources->Font === null) {
            // Page doesn't have any font attached
            return null;
        }

        $fontResources = $this->_pageDictionary->Resources->Font;

        foreach ($fontResources->getKeys() as $fontResourceName) {
            $fontDictionary = $fontResources->$fontResourceName;

            if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference  ||
                   $fontDictionary instanceof Zend_Pdf_Element_Object) ) {
                // Font dictionary has to be an indirect object or object reference
                continue;
            }

            if ($fontDictionary->BaseFont->value != $fontName) {
                continue;
            }

            try {
                // Try to extract font
                return new Zend_Pdf_Resource_Font_Extracted($fontDictionary);
            } catch (Zend_Pdf_Exception $e) {
                if ($e->getMessage() != 'Unsupported font type.') {
                    throw $e;
                }

                // Continue searhing font with specified name
            }
        }

        return null;
    }

    /**
     * Get current font size
     *
     * @return float $fontSize
     */
    public function getFontSize()
    {
        return $this->_fontSize;
    }

    /**
     * Return the style, applied to the page.
     *
     * @return Zend_Pdf_Style|null
     */
    public function getStyle()
    {
        return $this->_style;
    }


    /**
     * Save the graphics state of this page.
     * This takes a snapshot of the currently applied style, position, clipping area and
     * any rotation/translation/scaling that has been applied.
     *
     * @todo check for the open paths
     * @throws Zend_Pdf_Exception    - if a save is performed with an open path
     * @return Zend_Pdf_Page
     */
    public function saveGS()
    {
        $this->_saveCount++;

        $this->_addProcSet('PDF');
        $this->_contents .= " q\n";

        return $this;
    }

    /**
     * Restore the graphics state that was saved with the last call to saveGS().
     *
     * @throws Zend_Pdf_Exception   - if there is no previously saved state
     * @return Zend_Pdf_Page
     */
    public function restoreGS()
    {
        if ($this->_saveCount-- <= 0) {
            throw new Zend_Pdf_Exception('Restoring graphics state which is not saved');
        }
        $this->_contents .= " Q\n";

        return $this;
    }


    /**
     * Intersect current clipping area with a circle.
     *
     * @param float $x
     * @param float $y
     * @param float $radius
     * @param float $startAngle
     * @param float $endAngle
     * @return Zend_Pdf_Page
     */
    public function clipCircle($x, $y, $radius, $startAngle = null, $endAngle = null)
    {
        $this->clipEllipse($x - $radius, $y - $radius,
                           $x + $radius, $y + $radius,
                           $startAngle, $endAngle);

        return $this;
    }

    /**
     * Intersect current clipping area with a polygon.
     *
     * Method signatures:
     * drawEllipse($x1, $y1, $x2, $y2);
     * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
     *
     * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0
     *
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @param float $startAngle
     * @param float $endAngle
     * @return Zend_Pdf_Page
     */
    public function clipEllipse($x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null)
    {
        $this->_addProcSet('PDF');

        if ($x2 < $x1) {
            $temp = $x1;
            $x1   = $x2;
            $x2   = $temp;
        }
        if ($y2 < $y1) {
            $temp = $y1;
            $y1   = $y2;
            $y2   = $temp;
        }

        $x = ($x1 + $x2)/2.;
        $y = ($y1 + $y2)/2.;

        $xC = new Zend_Pdf_Element_Numeric($x);
        $yC = new Zend_Pdf_Element_Numeric($y);

        if ($startAngle !== null) {
            if ($startAngle != 0) { $startAngle = fmod($startAngle, M_PI*2); }
            if ($endAngle   != 0) { $endAngle   = fmod($endAngle,   M_PI*2); }

            if ($startAngle > $endAngle) {
                $endAngle += M_PI*2;
            }

            $clipPath    = $xC->toString() . ' ' . $yC->toString() . " m\n";
            $clipSectors = (int)ceil(($endAngle - $startAngle)/M_PI_4);
            $clipRadius  = max($x2 - $x1, $y2 - $y1);

            for($count = 0; $count <= $clipSectors; $count++) {
                $pAngle = $startAngle + ($endAngle - $startAngle)*$count/(float)$clipSectors;

                $pX = new Zend_Pdf_Element_Numeric($x + cos($pAngle)*$clipRadius);
                $pY = new Zend_Pdf_Element_Numeric($y + sin($pAngle)*$clipRadius);
                $clipPath .= $pX->toString() . ' ' . $pY->toString() . " l\n";
            }

            $this->_contents .= $clipPath . "h\nW\nn\n";
        }

        $xLeft  = new Zend_Pdf_Element_Numeric($x1);
        $xRight = new Zend_Pdf_Element_Numeric($x2);
        $yUp    = new Zend_Pdf_Element_Numeric($y2);
        $yDown  = new Zend_Pdf_Element_Numeric($y1);

        $xDelta  = 2*(M_SQRT2 - 1)*($x2 - $x1)/3.;
        $yDelta  = 2*(M_SQRT2 - 1)*($y2 - $y1)/3.;
        $xr = new Zend_Pdf_Element_Numeric($x + $xDelta);
        $xl = new Zend_Pdf_Element_Numeric($x - $xDelta);
        $yu = new Zend_Pdf_Element_Numeric($y + $yDelta);
        $yd = new Zend_Pdf_Element_Numeric($y - $yDelta);

        $this->_contents .= $xC->toString() . ' ' . $yUp->toString() . " m\n"
                         .  $xr->toString() . ' ' . $yUp->toString() . ' '
                         .    $xRight->toString() . ' ' . $yu->toString() . ' '
                         .      $xRight->toString() . ' ' . $yC->toString() . " c\n"
                         .  $xRight->toString() . ' ' . $yd->toString() . ' '
                         .    $xr->toString() . ' ' . $yDown->toString() . ' '
                         .      $xC->toString() . ' ' . $yDown->toString() . " c\n"
                         .  $xl->toString() . ' ' . $yDown->toString() . ' '
                         .    $xLeft->toString() . ' ' . $yd->toString() . ' '
                         .      $xLeft->toString() . ' ' . $yC->toString() . " c\n"
                         .  $xLeft->toString() . ' ' . $yu->toString() . ' '
                         .    $xl->toString() . ' ' . $yUp->toString() . ' '
                         .      $xC->toString() . ' ' . $yUp->toString() . " c\n"
                         .  "h\nW\nn\n";

        return $this;
    }


    /**
     * Intersect current clipping area with a polygon.
     *
     * @param array $x  - array of float (the X co-ordinates of the vertices)
     * @param array $y  - array of float (the Y co-ordinates of the vertices)
     * @param integer $fillMethod
     * @return Zend_Pdf_Page
     */
    public function clipPolygon($x, $y, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING)
    {
        $this->_addProcSet('PDF');

        $firstPoint = true;
        foreach ($x as $id => $xVal) {
            $xObj = new Zend_Pdf_Element_Numeric($xVal);
            $yObj = new Zend_Pdf_Element_Numeric($y[$id]);

            if ($firstPoint) {
                $path = $xObj->toString() . ' ' . $yObj->toString() . " m\n";
                $firstPoint = false;
            } else {
                $path .= $xObj->toString() . ' ' . $yObj->toString() . " l\n";
            }
        }

        $this->_contents .= $path;

        if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) {
            $this->_contents .= " h\n W\nn\n";
        } else {
            // Even-Odd fill method.
            $this->_contents .= " h\n W*\nn\n";
        }

        return $this;
    }

    /**
     * Intersect current clipping area with a rectangle.
     *
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @return Zend_Pdf_Page
     */
    public function clipRectangle($x1, $y1, $x2, $y2)
    {
        $this->_addProcSet('PDF');

        $x1Obj      = new Zend_Pdf_Element_Numeric($x1);
        $y1Obj      = new Zend_Pdf_Element_Numeric($y1);
        $widthObj   = new Zend_Pdf_Element_Numeric($x2 - $x1);
        $height2Obj = new Zend_Pdf_Element_Numeric($y2 - $y1);

        $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' '
                         .      $widthObj->toString() . ' ' . $height2Obj->toString() . " re\n"
                         .  " W\nn\n";

        return $this;
    }

    /**
     * Draw a Zend_Pdf_ContentStream at the specified position on the page
     *
     * @param ZPdfContentStream $cs
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @return Zend_Pdf_Page
     */
    public function drawContentStream($cs, $x1, $y1, $x2, $y2)
    {
    	/** @todo implementation */
    	return $this;
    }

    /**
     * Draw a circle centered on x, y with a radius of radius.
     *
     * Method signatures:
     * drawCircle($x, $y, $radius);
     * drawCircle($x, $y, $radius, $fillType);
     * drawCircle($x, $y, $radius, $startAngle, $endAngle);
     * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
     *
     *
     * It's not a really circle, because PDF supports only cubic Bezier curves.
     * But _very_ good approximation.
     * It differs from a real circle on a maximum 0.00026 radiuses
     * (at PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles).
     * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it's exactly a tangent to a circle.
     *
     * @param float $x
     * @param float $y
     * @param float $radius
     * @param mixed $param4
     * @param mixed $param5
     * @param mixed $param6
     * @return Zend_Pdf_Page
     */
    public function  drawCircle($x, $y, $radius, $param4 = null, $param5 = null, $param6 = null)
    {
        $this->drawEllipse($x - $radius, $y - $radius,
                           $x + $radius, $y + $radius,
                           $param4, $param5, $param6);

        return $this;
    }

    /**
     * Draw an ellipse inside the specified rectangle.
     *
     * Method signatures:
     * drawEllipse($x1, $y1, $x2, $y2);
     * drawEllipse($x1, $y1, $x2, $y2, $fillType);
     * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
     * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
     *
     * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0
     *
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @param mixed $param5
     * @param mixed $param6
     * @param mixed $param7
     * @return Zend_Pdf_Page
     */
    public function drawEllipse($x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null)
    {
        if ($param5 === null) {
            // drawEllipse($x1, $y1, $x2, $y2);
            $startAngle = null;
            $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE;
        } else if ($param6 === null) {
            // drawEllipse($x1, $y1, $x2, $y2, $fillType);
            $startAngle = null;
            $fillType = $param5;
        } else {
            // drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
            // drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
            $startAngle = $param5;
            $endAngle   = $param6;

            if ($param7 === null) {
                $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE;
            } else {
                $fillType = $param7;
            }
        }

        $this->_addProcSet('PDF');

        if ($x2 < $x1) {
            $temp = $x1;
            $x1   = $x2;
            $x2   = $temp;
        }
        if ($y2 < $y1) {
            $temp = $y1;
            $y1   = $y2;
            $y2   = $temp;
        }

        $x = ($x1 + $x2)/2.;
        $y = ($y1 + $y2)/2.;

        $xC = new Zend_Pdf_Element_Numeric($x);
        $yC = new Zend_Pdf_Element_Numeric($y);

        if ($startAngle !== null) {
            if ($startAngle != 0) { $startAngle = fmod($startAngle, M_PI*2); }
            if ($endAngle   != 0) { $endAngle   = fmod($endAngle,   M_PI*2); }

            if ($startAngle > $endAngle) {
                $endAngle += M_PI*2;
            }

            $clipPath    = $xC->toString() . ' ' . $yC->toString() . " m\n";
            $clipSectors = (int)ceil(($endAngle - $startAngle)/M_PI_4);
            $clipRadius  = max($x2 - $x1, $y2 - $y1);

            for($count = 0; $count <= $clipSectors; $count++) {
                $pAngle = $startAngle + ($endAngle - $startAngle)*$count/(float)$clipSectors;

                $pX = new Zend_Pdf_Element_Numeric($x + cos($pAngle)*$clipRadius);
                $pY = new Zend_Pdf_Element_Numeric($y + sin($pAngle)*$clipRadius);
                $clipPath .= $pX->toString() . ' ' . $pY->toString() . " l\n";
            }

            $this->_contents .= "q\n" . $clipPath . "h\nW\nn\n";
        }

        $xLeft  = new Zend_Pdf_Element_Numeric($x1);
        $xRight = new Zend_Pdf_Element_Numeric($x2);
        $yUp    = new Zend_Pdf_Element_Numeric($y2);
        $yDown  = new Zend_Pdf_Element_Numeric($y1);

        $xDelta  = 2*(M_SQRT2 - 1)*($x2 - $x1)/3.;
        $yDelta  = 2*(M_SQRT2 - 1)*($y2 - $y1)/3.;
        $xr = new Zend_Pdf_Element_Numeric($x + $xDelta);
        $xl = new Zend_Pdf_Element_Numeric($x - $xDelta);
        $yu = new Zend_Pdf_Element_Numeric($y + $yDelta);
        $yd = new Zend_Pdf_Element_Numeric($y - $yDelta);

        $this->_contents .= $xC->toString() . ' ' . $yUp->toString() . " m\n"
                         .  $xr->toString() . ' ' . $yUp->toString() . ' '
                         .    $xRight->toString() . ' ' . $yu->toString() . ' '
                         .      $xRight->toString() . ' ' . $yC->toString() . " c\n"
                         .  $xRight->toString() . ' ' . $yd->toString() . ' '
                         .    $xr->toString() . ' ' . $yDown->toString() . ' '
                         .      $xC->toString() . ' ' . $yDown->toString() . " c\n"
                         .  $xl->toString() . ' ' . $yDown->toString() . ' '
                         .    $xLeft->toString() . ' ' . $yd->toString() . ' '
                         .      $xLeft->toString() . ' ' . $yC->toString() . " c\n"
                         .  $xLeft->toString() . ' ' . $yu->toString() . ' '
                         .    $xl->toString() . ' ' . $yUp->toString() . ' '
                         .      $xC->toString() . ' ' . $yUp->toString() . " c\n";

        switch ($fillType) {
            case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE:
                $this->_contents .= " B*\n";
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_FILL:
                $this->_contents .= " f*\n";
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_STROKE:
                $this->_contents .= " S\n";
                break;
        }

        if ($startAngle !== null) {
            $this->_contents .= "Q\n";
        }

        return $this;
    }

    /**
     * Draw an image at the specified position on the page.
     *
     * @param Zend_Pdf_Image $image
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @return Zend_Pdf_Page
     */
    public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2)
    {
        $this->_addProcSet('PDF');

        $imageName    = $this->_attachResource('XObject', $image);
        $imageNameObj = new Zend_Pdf_Element_Name($imageName);

        $x1Obj     = new Zend_Pdf_Element_Numeric($x1);
        $y1Obj     = new Zend_Pdf_Element_Numeric($y1);
        $widthObj  = new Zend_Pdf_Element_Numeric($x2 - $x1);
        $heightObj = new Zend_Pdf_Element_Numeric($y2 - $y1);

        $this->_contents .= "q\n"
                         .  '1 0 0 1 ' . $x1Obj->toString() . ' ' . $y1Obj->toString() . " cm\n"
                         .  $widthObj->toString() . ' 0 0 ' . $heightObj->toString() . " 0 0 cm\n"
                         .  $imageNameObj->toString() . " Do\n"
                         .  "Q\n";

        return $this;
    }

    /**
     * Draw a LayoutBox at the specified position on the page.
     *
     * @param Zend_Pdf_Element_LayoutBox $box
     * @param float $x
     * @param float $y
     * @return Zend_Pdf_Page
     */
    public function drawLayoutBox($box, $x, $y)
    {
    	/** @todo implementation */
    	return $this;
    }

    /**
     * Draw a line from x1,y1 to x2,y2.
     *
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @return Zend_Pdf_Page
     */
    public function drawLine($x1, $y1, $x2, $y2)
    {
        $this->_addProcSet('PDF');

        $x1Obj = new Zend_Pdf_Element_Numeric($x1);
        $y1Obj = new Zend_Pdf_Element_Numeric($y1);
        $x2Obj = new Zend_Pdf_Element_Numeric($x2);
        $y2Obj = new Zend_Pdf_Element_Numeric($y2);

        $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " m\n"
                         .  $x2Obj->toString() . ' ' . $y2Obj->toString() . " l\n S\n";

        return $this;
    }

    /**
     * Draw a polygon.
     *
     * If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or
     * Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed.
     * See detailed description of these methods in a PDF documentation
     * (section 4.4.2 Path painting Operators, Filling)
     *
     * @param array $x  - array of float (the X co-ordinates of the vertices)
     * @param array $y  - array of float (the Y co-ordinates of the vertices)
     * @param integer $fillType
     * @param integer $fillMethod
     * @return Zend_Pdf_Page
     */
    public function drawPolygon($x, $y,
                                $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE,
                                $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING)
    {
        $this->_addProcSet('PDF');

        $firstPoint = true;
        foreach ($x as $id => $xVal) {
            $xObj = new Zend_Pdf_Element_Numeric($xVal);
            $yObj = new Zend_Pdf_Element_Numeric($y[$id]);

            if ($firstPoint) {
                $path = $xObj->toString() . ' ' . $yObj->toString() . " m\n";
                $firstPoint = false;
            } else {
                $path .= $xObj->toString() . ' ' . $yObj->toString() . " l\n";
            }
        }

        $this->_contents .= $path;

        switch ($fillType) {
            case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE:
                if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) {
                    $this->_contents .= " b\n";
                } else {
                    // Even-Odd fill method.
                    $this->_contents .= " b*\n";
                }
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_FILL:
                if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) {
                    $this->_contents .= " h\n f\n";
                } else {
                    // Even-Odd fill method.
                    $this->_contents .= " h\n f*\n";
                }
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_STROKE:
                $this->_contents .= " S\n";
                break;
        }

        return $this;
    }

    /**
     * Draw a rectangle.
     *
     * Fill types:
     * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default)
     * Zend_Pdf_Page::SHAPE_DRAW_STROKE      - stroke rectangle
     * Zend_Pdf_Page::SHAPE_DRAW_FILL        - fill rectangle
     *
     * @param float $x1
     * @param float $y1
     * @param float $x2
     * @param float $y2
     * @param integer $fillType
     * @return Zend_Pdf_Page
     */
    public function drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE)
    {
        $this->_addProcSet('PDF');

        $x1Obj      = new Zend_Pdf_Element_Numeric($x1);
        $y1Obj      = new Zend_Pdf_Element_Numeric($y1);
        $widthObj   = new Zend_Pdf_Element_Numeric($x2 - $x1);
        $height2Obj = new Zend_Pdf_Element_Numeric($y2 - $y1);

        $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' '
                             .  $widthObj->toString() . ' ' . $height2Obj->toString() . " re\n";

        switch ($fillType) {
            case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE:
                $this->_contents .= " B*\n";
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_FILL:
                $this->_contents .= " f*\n";
                break;
            case Zend_Pdf_Page::SHAPE_DRAW_STROKE:
                $this->_contents .= " S\n";
                break;
        }

        return $this;
    }

    /**
     * Draw a line of text at the specified position.
     *
     * @param string $text
     * @param float $x
     * @param float $y
     * @param string $charEncoding (optional) Character encoding of source text.
     *   Defaults to current locale.
     * @throws Zend_Pdf_Exception
     * @return Zend_Pdf_Page
     */
    public function drawText($text, $x, $y, $charEncoding = '')
    {
        if ($this->_font === null) {
            throw new Zend_Pdf_Exception('Font has not been set');
        }

        $this->_addProcSet('Text');

        $textObj = new Zend_Pdf_Element_String($this->_font->encodeString($text, $charEncoding));
        $xObj    = new Zend_Pdf_Element_Numeric($x);
        $yObj    = new Zend_Pdf_Element_Numeric($y);

        $this->_contents .= "BT\n"
                         .  $xObj->toString() . ' ' . $yObj->toString() . " Td\n"
                         .  $textObj->toString() . " Tj\n"
                         .  "ET\n";

        return $this;
    }

    /**
     * Return the height of this page in points.
     *
     * @return float
     */
    public function getHeight()
    {
        return $this->_pageDictionary->MediaBox->items[3]->value -
               $this->_pageDictionary->MediaBox->items[1]->value;
    }

    /**
     * Return the width of this page in points.
     *
     * @return float
     */
    public function getWidth()
    {
        return $this->_pageDictionary->MediaBox->items[2]->value -
               $this->_pageDictionary->MediaBox->items[0]->value;
    }

     /**
     * Close the path by drawing a straight line back to it's beginning.
     *
     * @throws Zend_Pdf_Exception    - if a path hasn't been started with pathMove()
     * @return Zend_Pdf_Page
     */
    public function pathClose()
    {
    	/** @todo implementation */
    	return $this;
    }

    /**
     * Continue the open path in a straight line to the specified position.
     *
     * @param float $x  - the X co-ordinate to move to
     * @param float $y  - the Y co-ordinate to move to
     * @return Zend_Pdf_Page
     */
    public function pathLine($x, $y)
    {
    	/** @todo implementation */
    	return $this;
    }

    /**
     * Start a new path at the specified position. If a path has already been started,
     * move the cursor without drawing a line.
     *
     * @param float $x  - the X co-ordinate to move to
     * @param float $y  - the Y co-ordinate to move to
     * @return Zend_Pdf_Page
     */
    public function pathMove($x, $y)
    {
        /** @todo implementation */
        return $this;
    }

    /**
     * Writes the raw data to the page's content stream.
     *
     * Be sure to consult the PDF reference to ensure your syntax is correct. No
     * attempt is made to ensure the validity of the stream data.
     *
     * @param string $data
     * @param string $procSet (optional) Name of ProcSet to add.
     * @return Zend_Pdf_Page
     */
    public function rawWrite($data, $procSet = null)
    {
        if (! empty($procSet)) {
            $this->_addProcSet($procSet);
        }
        $this->_contents .= $data;

        return $this;
    }

    /**
     * Rotate the page.
     *
     * @param float $angle
     * @return Zend_Pdf_Page
     */
    public function rotate($x, $y, $angle)
    {
        $cos  = new Zend_Pdf_Element_Numeric(cos($angle));
        $sin  = new Zend_Pdf_Element_Numeric(sin($angle));
        $mSin = new Zend_Pdf_Element_Numeric(-$sin->value);

        $xObj = new Zend_Pdf_Element_Numeric($x);
        $yObj = new Zend_Pdf_Element_Numeric($y);

        $mXObj = new Zend_Pdf_Element_Numeric(-$x);
        $mYObj = new Zend_Pdf_Element_Numeric(-$y);


        $this->_addProcSet('PDF');
        $this->_contents .= '1 0 0 1 ' . $xObj->toString() . ' ' . $yObj->toString() . " cm\n"
                         . $cos->toString() . ' ' . $sin->toString() . ' ' . $mSin->toString() . ' ' . $cos->toString() . " 0 0 cm\n"
                         .'1 0 0 1 ' . $mXObj->toString() . ' ' . $mYObj->toString() . " cm\n";

        return $this;
    }
}

PKpG[%Ed��>�>Pdf/FileParser.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';


/**
 * Abstract utility class for parsing binary files.
 *
 * Provides a library of methods to quickly navigate and extract various data
 * types (signed and unsigned integers, floating- and fixed-point numbers,
 * strings, etc.) from the file.
 *
 * File access is managed via a {@link Zend_Pdf_FileParserDataSource} object.
 * This allows the same parser code to work with many different data sources:
 * in-memory objects, filesystem files, etc.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_FileParser
{
  /**** Class Constants ****/

    /**
     * Little-endian byte order (0x04 0x03 0x02 0x01).
     */
    const BYTE_ORDER_LITTLE_ENDIAN = 0;

    /**
     * Big-endian byte order (0x01 0x02 0x03 0x04).
     */
    const BYTE_ORDER_BIG_ENDIAN    = 1;



  /**** Instance Variables ****/


    /**
     * Flag indicating that the file has passed a cursory validation check.
     * @var boolean
     */
    protected $_isScreened = false;

    /**
     * Flag indicating that the file has been sucessfully parsed.
     * @var boolean
     */
    protected $_isParsed = false;

    /**
     * Object representing the data source to be parsed.
     * @var Zend_Pdf_FileParserDataSource
     */
    protected $_dataSource = null;



  /**** Public Interface ****/


  /* Abstract Methods */

    /**
     * Performs a cursory check to verify that the binary file is in the expected
     * format. Intended to quickly weed out obviously bogus files.
     *
     * Must set $this->_isScreened to true if successful.
     *
     * @throws Zend_Pdf_Exception
     */
    abstract public function screen();

    /**
     * Reads and parses the complete binary file.
     *
     * Must set $this->_isParsed to true if successful.
     *
     * @throws Zend_Pdf_Exception
     */
    abstract public function parse();


  /* Object Lifecycle */

    /**
     * Object constructor.
     *
     * Verifies that the data source has been properly initialized.
     *
     * @param Zend_Pdf_FileParserDataSource $dataSource
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_FileParserDataSource $dataSource)
    {
        if ($dataSource->getSize() == 0) {
            throw new Zend_Pdf_Exception('The data source has not been properly initialized',
                                         Zend_Pdf_Exception::BAD_DATA_SOURCE);
        }
        $this->_dataSource = $dataSource;
    }

    /**
     * Object destructor.
     *
     * Discards the data source object.
     */
    public function __destruct()
    {
        $this->_dataSource = null;
    }


  /* Accessors */

    /**
     * Returns true if the file has passed a cursory validation check.
     *
     * @return boolean
     */
    public function isScreened()
    {
        return $this->_isScreened;
    }

    /**
     * Returns true if the file has been successfully parsed.
     *
     * @return boolean
     */
    public function isParsed()
    {
        return $this->_isParsed;
    }

    /**
     * Returns the data source object representing the file being parsed.
     *
     * @return Zend_Pdf_FileParserDataSource
     */
    public function getDataSource()
    {
        return $this->_dataSource;
    }


  /* Primitive Methods */

    /**
     * Convenience wrapper for the data source object's moveToOffset() method.
     *
     * @param integer $offset Destination byte offset.
     * @throws Zend_Pdf_Exception
     */
    public function moveToOffset($offset)
    {
        $this->_dataSource->moveToOffset($offset);
    }

    public function getOffset() {
       return $this->_dataSource->getOffset();
    }

    public function getSize() {
       return $this->_dataSource->getSize();
    }

    /**
     * Convenience wrapper for the data source object's readBytes() method.
     *
     * @param integer $byteCount Number of bytes to read.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readBytes($byteCount)
    {
        return $this->_dataSource->readBytes($byteCount);
    }

    /**
     * Convenience wrapper for the data source object's skipBytes() method.
     *
     * @param integer $byteCount Number of bytes to skip.
     * @throws Zend_Pdf_Exception
     */
    public function skipBytes($byteCount)
    {
        $this->_dataSource->skipBytes($byteCount);
    }


  /* Parser Methods */

    /**
     * Reads the signed integer value from the binary file at the current byte
     * offset.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * @param integer $size Size of integer in bytes: 1-4
     * @param integer $byteOrder (optional) Big- or little-endian byte order.
     *   Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}.
     *   If omitted, uses big-endian.
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function readInt($size, $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN)
    {
        if (($size < 1) || ($size > 4)) {
            throw new Zend_Pdf_Exception("Invalid signed integer size: $size",
                                         Zend_Pdf_Exception::INVALID_INTEGER_SIZE);
        }
        $bytes = $this->_dataSource->readBytes($size);
        /* unpack() will not work for this method because it always works in
         * the host byte order for signed integers. It also does not allow for
         * variable integer sizes.
         */
        if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) {
            $number = ord($bytes[0]);
            if (($number & 0x80) == 0x80) {
                /* This number is negative. Extract the positive equivalent.
                 */
                $number = (~ $number) & 0xff;
                for ($i = 1; $i < $size; $i++) {
                    $number = ($number << 8) | ((~ ord($bytes[$i])) & 0xff);
                }
                /* Now turn this back into a negative number by taking the
                 * two's complement (we didn't add one above so won't
                 * subtract it below). This works reliably on both 32- and
                 * 64-bit systems.
                 */
                $number = ~$number;
            } else {
                for ($i = 1; $i < $size; $i++) {
                    $number = ($number << 8) | ord($bytes[$i]);
                }
            }
        } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) {
            $number = ord($bytes[$size - 1]);
            if (($number & 0x80) == 0x80) {
                /* Negative number. See discussion above.
                 */
                $number = 0;
                for ($i = --$size; $i >= 0; $i--) {
                    $number |= ((~ ord($bytes[$i])) & 0xff) << ($i * 8);
                }
                $number = ~$number;
            } else {
                $number = 0;
                for ($i = --$size; $i >= 0; $i--) {
                    $number |= ord($bytes[$i]) << ($i * 8);
                }
            }
        } else {
            throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder",
                                         Zend_Pdf_Exception::INVALID_BYTE_ORDER);
        }
        return $number;
    }

    /**
     * Reads the unsigned integer value from the binary file at the current byte
     * offset.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * NOTE: If you ask for a 4-byte unsigned integer on a 32-bit machine, the
     * resulting value WILL BE SIGNED because PHP uses signed integers internally
     * for everything. To guarantee portability, be sure to use bitwise operators
     * operators on large unsigned integers!
     *
     * @param integer $size Size of integer in bytes: 1-4
     * @param integer $byteOrder (optional) Big- or little-endian byte order.
     *   Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}.
     *   If omitted, uses big-endian.
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function readUInt($size, $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN)
    {
        if (($size < 1) || ($size > 4)) {
            throw new Zend_Pdf_Exception("Invalid unsigned integer size: $size",
                                         Zend_Pdf_Exception::INVALID_INTEGER_SIZE);
        }
        $bytes = $this->_dataSource->readBytes($size);
        /* unpack() is a bit heavyweight for this simple conversion. Just
         * work the bytes directly.
         */
        if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) {
            $number = ord($bytes[0]);
            for ($i = 1; $i < $size; $i++) {
                $number = ($number << 8) | ord($bytes[$i]);
            }
        } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) {
            $number = 0;
            for ($i = --$size; $i >= 0; $i--) {
                $number |= ord($bytes[$i]) << ($i * 8);
            }
        } else {
            throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder",
                                         Zend_Pdf_Exception::INVALID_BYTE_ORDER);
        }
        return $number;
    }

    /**
     * Returns true if the specified bit is set in the integer bitfield.
     *
     * @param integer $bit Bit number to test (i.e. - 0-31)
     * @param integer $bitField
     * @return boolean
     */
    public function isBitSet($bit, $bitField)
    {
        $bitMask = 1 << $bit;
        $isSet = (($bitField & $bitMask) == $bitMask);
        return $isSet;
    }

    /**
     * Reads the signed fixed-point number from the binary file at the current
     * byte offset.
     *
     * Common fixed-point sizes are 2.14 and 16.16.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * @param integer $mantissaBits Number of bits in the mantissa
     * @param integer $fractionBits Number of bits in the fraction
     * @param integer $byteOrder (optional) Big- or little-endian byte order.
     *   Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}.
     *   If omitted, uses big-endian.
     * @return float
     * @throws Zend_Pdf_Exception
     */
    public function readFixed($mantissaBits, $fractionBits,
                              $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN)
    {
        $bitsToRead = $mantissaBits + $fractionBits;
        if (($bitsToRead % 8) !== 0) {
            throw new Zend_Pdf_Exception('Fixed-point numbers are whole bytes',
                                         Zend_Pdf_Exception::BAD_FIXED_POINT_SIZE);
        }
        $number = $this->readInt(($bitsToRead >> 3), $byteOrder) / (1 << $fractionBits);
        return $number;
    }

    /**
     * Reads the Unicode UTF-16-encoded string from the binary file at the
     * current byte offset.
     *
     * The byte order of the UTF-16 string must be specified. You must also
     * supply the desired resulting character set.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * @todo Consider changing $byteCount to a character count. They are not
     *   always equivalent (in the case of surrogates).
     * @todo Make $byteOrder optional if there is a byte-order mark (BOM) in the
     *   string being extracted.
     *
     * @param integer $byteCount Number of bytes (characters * 2) to return.
     * @param integer $byteOrder (optional) Big- or little-endian byte order.
     *   Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}.
     *   If omitted, uses big-endian.
     * @param string $characterSet (optional) Desired resulting character set.
     *   You may use any character set supported by {@link iconv()}. If omitted,
     *   uses 'current locale'.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringUTF16($byteCount,
                                    $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN,
                                    $characterSet = '')
    {
        if ($byteCount == 0) {
            return '';
        }
        $bytes = $this->_dataSource->readBytes($byteCount);
        if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) {
            if ($characterSet == 'UTF-16BE') {
                return $bytes;
            }
            return iconv('UTF-16BE', $characterSet, $bytes);
        } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) {
            if ($characterSet == 'UTF-16LE') {
                return $bytes;
            }
            return iconv('UTF-16LE', $characterSet, $bytes);
        } else {
            throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder",
                                         Zend_Pdf_Exception::INVALID_BYTE_ORDER);
        }
    }

    /**
     * Reads the Mac Roman-encoded string from the binary file at the current
     * byte offset.
     *
     * You must supply the desired resulting character set.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * @param integer $byteCount Number of bytes (characters) to return.
     * @param string $characterSet (optional) Desired resulting character set.
     *   You may use any character set supported by {@link iconv()}. If omitted,
     *   uses 'current locale'.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringMacRoman($byteCount, $characterSet = '')
    {
        if ($byteCount == 0) {
            return '';
        }
        $bytes = $this->_dataSource->readBytes($byteCount);
        if ($characterSet == 'MacRoman') {
            return $bytes;
        }
        return iconv('MacRoman', $characterSet, $bytes);
    }

    /**
     * Reads the Pascal string from the binary file at the current byte offset.
     *
     * The length of the Pascal string is determined by reading the length bytes
     * which preceed the character data. You must supply the desired resulting
     * character set.
     *
     * Advances the offset by the number of bytes read. Throws an exception if
     * an error occurs.
     *
     * @param string $characterSet (optional) Desired resulting character set.
     *   You may use any character set supported by {@link iconv()}. If omitted,
     *   uses 'current locale'.
     * @param integer $lengthBytes (optional) Number of bytes that make up the
     *   length. Default is 1.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function readStringPascal($characterSet = '', $lengthBytes = 1)
    {
        $byteCount = $this->readUInt($lengthBytes);
        if ($byteCount == 0) {
            return '';
        }
        $bytes = $this->_dataSource->readBytes($byteCount);
        if ($characterSet == 'ASCII') {
            return $bytes;
        }
        return iconv('ASCII', $characterSet, $bytes);
    }

}
PKpG[%�6�6Pdf/Element/Object/Stream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Stream */
require_once 'Zend/Pdf/Element/Stream.php';

/** Zend_Pdf_Filter_Ascii85 */
require_once 'Zend/Pdf/Filter/Ascii85.php';

/** Zend_Pdf_Filter_AsciiHex */
require_once 'Zend/Pdf/Filter/AsciiHex.php';

/** Zend_Pdf_Filter_Compression_Flate */
require_once 'Zend/Pdf/Filter/Compression/Flate.php';

/** Zend_Pdf_Filter_Compression_Lzw */
require_once 'Zend/Pdf/Filter/Compression/Lzw.php';

/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';


/**
 * PDF file 'stream object' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
{
    /**
     * StreamObject dictionary
     * Required enries:
     * Length
     *
     * @var Zend_Pdf_Element_Dictionary
     */
    private $_dictionary;

    /**
     * Flag which signals, that stream is decoded
     *
     * @var boolean
     */
    private $_streamDecoded;

    /**
     * Stored original stream object dictionary.
     * Used to decode stream during an access time.
     *
     * The only properties, which affect decoding, are sored here.
     *
     * @var array|null
     */
    private $_originalDictionary = null;

    /**
     * Object constructor
     *
     * @param mixed $val
     * @param integer $objNum
     * @param integer $genNum
     * @param Zend_Pdf_ElementFactory $factory
     * @param Zend_Pdf_Element_Dictionary|null $dictionary
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val, $objNum, $genNum, Zend_Pdf_ElementFactory $factory, $dictionary = null)
    {
        parent::__construct(new Zend_Pdf_Element_Stream($val), $objNum, $genNum, $factory);

        if ($dictionary === null) {
            $this->_dictionary    = new Zend_Pdf_Element_Dictionary();
            $this->_dictionary->Length = new Zend_Pdf_Element_Numeric(strlen( $val ));
            $this->_streamDecoded = true;
        } else {
            $this->_dictionary    = $dictionary;
            $this->_streamDecoded = false;
        }
    }


    /**
     * Store original dictionary information in $_originalDictionary class member.
     * Used to store information and to normalize filters information before defiltering.
     *
     */
    private function _storeOriginalDictionary()
    {
        $this->_originalDictionary = array();

        $this->_originalDictionary['Filter']      = array();
        $this->_originalDictionary['DecodeParms'] = array();
        if ($this->_dictionary->Filter === null) {
            // Do nothing.
        } else if ($this->_dictionary->Filter->getType() == Zend_Pdf_Element::TYPE_ARRAY) {
            foreach ($this->_dictionary->Filter->items as $id => $filter) {
                $this->_originalDictionary['Filter'][$id]      = $filter->value;
                $this->_originalDictionary['DecodeParms'][$id] = array();

                if ($this->_dictionary->DecodeParms !== null ) {
                    if ($this->_dictionary->DecodeParms->items[$id] !== null &&
                        $this->_dictionary->DecodeParms->items[$id]->value !== null ) {
                        foreach ($this->_dictionary->DecodeParms->items[$id]->getKeys() as $paramKey) {
                            $this->_originalDictionary['DecodeParms'][$id][$paramKey] =
                                  $this->_dictionary->DecodeParms->items[$id]->$paramKey->value;
                        }
                    }
                }
            }
        } else if ($this->_dictionary->Filter->getType() != Zend_Pdf_Element::TYPE_NULL) {
            $this->_originalDictionary['Filter'][0]      = $this->_dictionary->Filter->value;
            $this->_originalDictionary['DecodeParms'][0] = array();
            if ($this->_dictionary->DecodeParms !== null ) {
                foreach ($this->_dictionary->DecodeParms->getKeys() as $paramKey) {
                    $this->_originalDictionary['DecodeParms'][0][$paramKey] =
                          $this->_dictionary->DecodeParms->$paramKey->value;
                }
            }
        }

        if ($this->_dictionary->F !== null) {
            $this->_originalDictionary['F'] = $this->_dictionary->F->value;
        }

        $this->_originalDictionary['FFilter']      = array();
        $this->_originalDictionary['FDecodeParms'] = array();
        if ($this->_dictionary->FFilter === null) {
            // Do nothing.
        } else if ($this->_dictionary->FFilter->getType() == Zend_Pdf_Element::TYPE_ARRAY) {
            foreach ($this->_dictionary->FFilter->items as $id => $filter) {
                $this->_originalDictionary['FFilter'][$id]      = $filter->value;
                $this->_originalDictionary['FDecodeParms'][$id] = array();

                if ($this->_dictionary->FDecodeParms !== null ) {
                    if ($this->_dictionary->FDecodeParms->items[$id] !== null &&
                        $this->_dictionary->FDecodeParms->items[$id]->value !== null) {
                        foreach ($this->_dictionary->FDecodeParms->items[$id]->getKeys() as $paramKey) {
                            $this->_originalDictionary['FDecodeParms'][$id][$paramKey] =
                                  $this->_dictionary->FDecodeParms->items[$id]->items[$paramKey]->value;
                        }
                    }
                }
            }
        } else {
            $this->_originalDictionary['FFilter'][0]      = $this->_dictionary->FFilter->value;
            $this->_originalDictionary['FDecodeParms'][0] = array();
            if ($this->_dictionary->FDecodeParms !== null ) {
                foreach ($this->_dictionary->FDecodeParms->getKeys() as $paramKey) {
                    $this->_originalDictionary['FDecodeParms'][0][$paramKey] =
                          $this->_dictionary->FDecodeParms->items[$paramKey]->value;
                }
            }
        }
    }

    /**
     * Decode stream
     *
     * @throws Zend_Pdf_Exception
     */
    private function _decodeStream()
    {
        if ($this->_originalDictionary === null) {
            $this->_storeOriginalDictionary();
        }

        /**
         * All applied stream filters must be processed to decode stream.
         * If we don't recognize any of applied filetrs an exception should be thrown here
         */
        if (isset($this->_originalDictionary['F'])) {
            /** @todo Check, how external files can be processed. */
            throw new Zend_Pdf_Exception('External filters are not supported now.');
        }

        foreach ($this->_originalDictionary['Filter'] as $id => $filterName ) {
            $valueRef = &$this->_value->value->getRef();
            $this->_value->value->touch();
            switch ($filterName) {
                case 'ASCIIHexDecode':
                    $valueRef = Zend_Pdf_Filter_AsciiHex::decode($valueRef);
                    break;

                case 'ASCII85Decode':
                    $valueRef = Zend_Pdf_Filter_Ascii85::decode($valueRef);
                    break;

                case 'FlateDecode':
                    $valueRef = Zend_Pdf_Filter_Compression_Flate::decode($valueRef,
                                                                          $this->_originalDictionary['DecodeParms'][$id]);
                    break;

                case 'LZWDecode':
                    $valueRef = Zend_Pdf_Filter_Compression_Lzw::decode($valueRef,
                                                                        $this->_originalDictionary['DecodeParms'][$id]);
                    break;

                default:
                    throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.');
            }
        }

        $this->_streamDecoded = true;
    }

    /**
     * Encode stream
     *
     * @throws Zend_Pdf_Exception
     */
    private function _encodeStream()
    {
        /**
         * All applied stream filters must be processed to encode stream.
         * If we don't recognize any of applied filetrs an exception should be thrown here
         */
        if (isset($this->_originalDictionary['F'])) {
            /** @todo Check, how external files can be processed. */
            throw new Zend_Pdf_Exception('External filters are not supported now.');
        }

        $filters = array_reverse($this->_originalDictionary['Filter'], true);

        foreach ($filters as $id => $filterName ) {
            $valueRef = &$this->_value->value->getRef();
            $this->_value->value->touch();
            switch ($filterName) {
                case 'ASCIIHexDecode':
                    $valueRef = Zend_Pdf_Filter_AsciiHex::encode($valueRef);
                    break;

                case 'ASCII85Decode':
                    $valueRef = Zend_Pdf_Filter_Ascii85::encode($valueRef);
                    break;

                case 'FlateDecode':
                    $valueRef = Zend_Pdf_Filter_Compression_Flate::encode($valueRef,
                                                                          $this->_originalDictionary['DecodeParms'][$id]);
                    break;

                case 'LZWDecode':
                    $valueRef = Zend_Pdf_Filter_Compression_Lzw::encode($valueRef,
                                                                        $this->_originalDictionary['DecodeParms'][$id]);
                    break;

                default:
                    throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.');
            }
        }

        $this->_streamDecoded = false;
    }

    /**
     * Get handler
     *
     * @param string $property
     * @return mixed
     * @throws Zend_Pdf_Exception
     */
    public function __get($property)
    {
        if ($property == 'dictionary') {
            /**
             * If stream is note decoded yet, then store original decoding options (do it only once).
             */
            if (( !$this->_streamDecoded ) && ($this->_originalDictionary === null)) {
                $this->_storeOriginalDictionary();
            }

            return $this->_dictionary;
        }

        if ($property == 'value') {
            if (!$this->_streamDecoded) {
                $this->_decodeStream();
            }

            return $this->_value->value->getRef();
        }

        throw new Zend_Pdf_Exception('Unknown stream object property requested.');
    }


    /**
     * Set handler
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($property, $value)
    {
        if ($property == 'value') {
            $valueRef = &$this->_value->value->getRef();
            $valueRef = $value;
            $this->_value->value->touch();

            $this->_streamDecoded = true;

            return;
        }

        throw new Zend_Pdf_Exception('Unknown stream object property: \'' . $property . '\'.');
    }


    /**
     * Treat stream data as already encoded
     */
    public function skipFilters()
    {
        $this->_streamDecoded = false;
    }


    /**
     * Call handler
     *
     * @param string $method
     * @param array  $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (!$this->_streamDecoded) {
            $this->_decodeStream();
        }

        switch (count($args)) {
            case 0:
                return $this->_value->$method();
            case 1:
                return $this->_value->$method($args[0]);
            default:
                throw new Zend_Pdf_Exception('Unsupported number of arguments');
        }
    }

    /**
     * Dump object to a string to save within PDF file
     *
     * $factory parameter defines operation context.
     *
     * @param Zend_Pdf_ElementFactory $factory
     * @return string
     */
    public function dump(Zend_Pdf_ElementFactory $factory)
    {
        $shift = $factory->getEnumerationShift($this->_factory);

        if ($this->_streamDecoded) {
            $this->_storeOriginalDictionary();
            $this->_encodeStream();
        } else if ($this->_originalDictionary != null) {
            $startDictionary = $this->_originalDictionary;
            $this->_storeOriginalDictionary();
            $newDictionary = $this->_originalDictionary;

            if ($startDictionary !== $newDictionary) {
                $this->_originalDictionary = $startDictionary;
                $this->_decodeStream();

                $this->_originalDictionary = $newDictionary;
                $this->_encodeStream();
            }
        }

        // Update stream length
        $this->dictionary->Length->value = $this->_value->length();

        return  $this->_objNum + $shift . " " . $this->_genNum . " obj \n"
             .  $this->dictionary->toString($factory) . "\n"
             .  $this->_value->toString($factory) . "\n"
             . "endobj\n";
    }

    /**
     * Clean up resources, used by object
     */
    public function cleanUp()
    {
        $this->_dictionary = null;
        $this->_value      = null;
    }
}
PKpG[�`���	�	Pdf/Element/Stream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @see Zend_Pdf
 */
require_once 'Zend/Pdf.php';

/**
 * @see Zend_Pdf_Element
 */
require_once 'Zend/Pdf/Element.php';

/**
 * @see Zend_Memory
 */
require_once 'Zend/Memory.php';

/**
 * PDF file 'stream' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Stream extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var Zend_Memory_Container
     */
    public $value;


    /**
     * Object constructor
     *
     * @param string $val
     */
    public function __construct($val)
    {
        $this->value = Zend_Pdf::getMemoryManager()->create($val);
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_STREAM;
    }


    /**
     * Stream length.
     * (Method is used to avoid string copying, which may occurs in some cases)
     *
     * @return integer
     */
    public function length()
    {
        return strlen($this->value->getRef());
    }


    /**
     * Clear stream
     *
     */
    public function clear()
    {
        $ref = &$this->value->getRef();
        $ref = '';
        $this->value->touch();
    }


    /**
     * Append value to a stream
     *
     * @param mixed $val
     */
    public function append($val)
    {
        $ref = &$this->value->getRef();
        $ref .= (string)$val;
        $this->value->touch();
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return "stream\n" . $this->value->getRef() . "\nendstream";
    }
}
PKpG[����DDPdf/Element/String/Binary.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element_String */
require_once 'Zend/Pdf/Element/String.php';


/**
 * PDF file 'binary string' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_String_Binary extends Zend_Pdf_Element_String
{
    /**
     * Object value
     *
     * @var string
     */
    public $value;


    /**
     * Escape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function escape($inStr)
    {
        $outStr = '';

        for ($count = 0; $count < strlen($inStr); $count++) {
            $outStr .= sprintf('%02X', ord($inStr[$count]));
        }
        return $outStr;
    }


    /**
     * Unescape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function unescape($inStr)
    {
        $outStr = '';
        $nextHexCode = '';

        for ($count = 0; $count < strlen($inStr); $count++) {
            $nextCharCode = ord($inStr[$count]);

            if( ($nextCharCode >= 48  /*'0'*/ &&
                 $nextCharCode <= 57  /*'9'*/   ) ||
                ($nextCharCode >= 97  /*'a'*/ &&
                 $nextCharCode <= 102 /*'f'*/   ) ||
                ($nextCharCode >= 65  /*'A'*/ &&
                 $nextCharCode <= 70  /*'F'*/   ) ) {
                $nextHexCode .= $inStr[$count];
            }

            if (strlen($nextHexCode) == 2) {
                $outStr .= chr(intval($nextHexCode, 16));
                $nextHexCode = '';
            }
        }

        if ($nextHexCode != '') {
            // We have odd number of digits.
            // Final digit is assumed to be '0'
            $outStr .= chr(base_convert($nextHexCode . '0', 16, 10));
        }

        return $outStr;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return '<' . self::escape((string)$this->value) . '>';
    }
}
PKpG[
8��77Pdf/Element/Boolean.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'boolean' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Boolean extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var boolean
     */
    public $value;


    /**
     * Object constructor
     *
     * @param boolean $val
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val)
    {
        if (! is_bool($val)) {
            throw new Zend_Pdf_Exception('Argument must be boolean.');
        }

        $this->value   = $val;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_BOOL;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return $this->value ? 'true' : 'false';
    }
}
PKpG["��oo!Pdf/Element/Reference/Context.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_StringParser */
require_once 'Zend/Pdf/StringParser.php';

/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';


/**
 * PDF reference object context
 * Reference context is defined by PDF parser and PDF Refernce table
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Reference_Context
{
    /**
     * PDF parser object.
     *
     * @var Zend_Pdf_Parser
     */
    private $_stringParser;

    /**
     * Reference table
     *
     * @var Zend_Pdf_Element_Reference_Table
     */
    private $_refTable;

    /**
     * Object constructor
     *
     * @param Zend_Pdf_StringParser $parser
     * @param Zend_Pdf_Element_Reference_Table $refTable
     */
    public function __construct(Zend_Pdf_StringParser $parser,
                                Zend_Pdf_Element_Reference_Table $refTable)
    {
        $this->_stringParser = $parser;
        $this->_refTable     = $refTable;
    }


    /**
     * Context parser
     *
     * @return Zend_Pdf_Parser
     */
    public function getParser()
    {
        return $this->_stringParser;
    }


    /**
     * Context reference table
     *
     * @return Zend_Pdf_Element_Reference_Table
     */
    public function getRefTable()
    {
        return $this->_refTable;
    }
}

PKpG[��)��Pdf/Element/Reference/Table.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * PDF file reference table
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Reference_Table
{
    /**
     * Parent reference table
     *
     * @var Zend_Pdf_Element_Reference_Table
     */
    private $_parent;

    /**
     * Free entries
     * 'reference' => next free object number
     *
     * @var array
     */
    private $_free;

    /**
     * Generation numbers for free objects.
     * Array: objNum => nextGeneration
     *
     * @var array
     */
    private $_generations;

    /**
     * In use entries
     * 'reference' => offset
     *
     * @var array
     */
    private $_inuse;

    /**
     * Generation numbers for free objects.
     * Array: objNum => objGeneration
     *
     * @var array
     */
    private $_usedObjects;



    /**
     * Object constructor
     */
    public function  __construct()
    {
        $this->_parent = null;
        $this->_free   = array();  $this->_generations = array();
        $this->_inuse  = array();  $this->_usedObjects = array();
    }


    /**
     * Add reference to the reference table
     *
     * @param string $ref
     * @param integer $offset
     * @param boolean $inuse
     */
    public function addReference($ref, $offset, $inuse = true)
    {
        $refElements = explode(' ', $ref);
        if (!is_numeric($refElements[0]) || !is_numeric($refElements[1]) || $refElements[2] != 'R') {
            throw new Zend_Pdf_Exception("Incorrect reference: '$ref'");
        }
        $objNum = (int)$refElements[0];
        $genNum = (int)$refElements[1];

        if ($inuse) {
            $this->_inuse[$ref]          = $offset;
            $this->_usedObjects[$objNum] = $objNum;
        } else {
            $this->_free[$ref]           = $offset;
            $this->_generations[$objNum] = $genNum;
        }
    }


    /**
     * Set parent reference table
     *
     * @param Zend_Pdf_Element_Reference_Table $parent
     */
    public function setParent(self $parent)
    {
        $this->_parent = $parent;
    }


    /**
     * Get object offset
     *
     * @param string $ref
     * @return integer
     */
    public function getOffset($ref)
    {
        if (isset($this->_inuse[$ref])) {
            return $this->_inuse[$ref];
        }

        if (isset($this->_free[$ref])) {
            return null;
        }

        if (isset($this->_parent)) {
            return $this->_parent->getOffset($ref);
        }

        return null;
    }


    /**
     * Get next object from a list of free objects.
     *
     * @param string $ref
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    public function getNextFree($ref)
    {
        if (isset($this->_inuse[$ref])) {
            throw new Zend_Pdf_Exception('Object is not free');
        }

        if (isset($this->_free[$ref])) {
            return $this->_free[$ref];
        }

        if (isset($this->_parent)) {
            return $this->_parent->getNextFree($ref);
        }

        throw new Zend_Pdf_Exception('Object not found.');
    }


    /**
     * Get next generation number for free object
     *
     * @param integer $objNum
     * @return unknown
     */
    public function getNewGeneration($objNum)
    {
        if (isset($this->_usedObjects[$objNum])) {
            throw new Zend_Pdf_Exception('Object is not free');
        }

        if (isset($this->_generations[$objNum])) {
            return $this->_generations[$objNum];
        }

        if (isset($this->_parent)) {
            return $this->_parent->getNewGeneration($objNum);
        }

        throw new Zend_Pdf_Exception('Object not found.');
    }
}

PKpG[��iiPdf/Element/Null.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'null' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Null extends Zend_Pdf_Element
{
    /**
     * Object value. Always null.
     *
     * @var mixed
     */
    public $value;


    /**
     * Object constructor
     */
    public function __construct()
    {
        $this->value = null;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_NULL;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return 'null';
    }
}
PKpG[m�m��Pdf/Element/Array.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_PhpArray */
require_once 'Zend/Pdf/PhpArray.php';



/**
 * PDF file 'array' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Array extends Zend_Pdf_Element
{
    /**
     * Object value
     * Array of Zend_Pdf_Element objects.
     * Appropriate methods must (!) be used to modify it to provide correct
     * work with objects and references.
     *
     * @var Zend_Pdf_PhpArray
     */
    private $_items;


    /**
     * Object constructor
     *
     * @param array $val   - array of Zend_Pdf_Element objects
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val = null)
    {
        $this->_items = new Zend_Pdf_PhpArray();

        if ($val !== null  &&  is_array($val)) {
            foreach ($val as $element) {
                if (!$element instanceof Zend_Pdf_Element) {
                    throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects');
                }
                $this->_items[] = $element;
            }
        } else if ($val !== null){
            throw new Zend_Pdf_Exception('Argument must be an array');
        }
    }


    /**
     * Provides access to $this->_items
     *
     * @param string $property
     * @return Zend_Pdf_PhpArray
     */
    public function __get($property) {
        if ($property=='items') {
            return $this->_items;
        }
        throw new Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property);
    }


    /**
     * Provides read-only access to $this->_items;
     *
     * @param unknown_type $offset
     * @param unknown_type $value
     */
    public function __set($property, $value) {
        if ($property=='items') {
            throw new Exception('Array container cannot be overwritten');
        }
        throw new Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property);
    }

    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_ARRAY;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        $outStr = '[';
        $lastNL = 0;

        foreach ($this->_items as $element) {
            if (strlen($outStr) - $lastNL > 128)  {
                $outStr .= "\n";
                $lastNL = strlen($outStr);
            }

            $outStr .= $element->toString($factory) . ' ';
        }
        $outStr .= ']';

        return $outStr;
    }

    /**
     * Convert PDF element to PHP type.
     *
     * Dictionary is returned as an associative array
     *
     * @return mixed
     */
    public function toPhp()
    {
        foreach ($this->_items as $item) {
            $phpArray[] = $item->toPhp();
        }

        return $phpArray;
    }
}
PKpG[Ֆ�ttPdf/Element/Object.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';


/**
 * PDF file 'indirect object' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Object extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var Zend_Pdf_Element
     */
    protected $_value;

    /**
     * Object number within PDF file
     *
     * @var integer
     */
    protected $_objNum;

    /**
     * Generation number
     *
     * @var integer
     */
    protected $_genNum;

    /**
     * Reference to the factory.
     *
     * @var Zend_Pdf_ElementFactory
     */
    protected $_factory;

    /**
     * Object constructor
     *
     * @param Zend_Pdf_Element $val
     * @param integer $objNum
     * @param integer $genNum
     * @param Zend_Pdf_ElementFactory $factory
     * @throws Zend_Pdf_Exception
     */
    public function __construct(Zend_Pdf_Element $val, $objNum, $genNum, Zend_Pdf_ElementFactory $factory)
    {
        if ($val instanceof self) {
            throw new Zend_Pdf_Exception('Object number must not be instance of Zend_Pdf_Element_Object.');
        }

        if ( !(is_integer($objNum) && $objNum > 0) ) {
            throw new Zend_Pdf_Exception('Object number must be positive integer.');
        }

        if ( !(is_integer($genNum) && $genNum >= 0) ) {
            throw new Zend_Pdf_Exception('Generation number must be non-negative integer.');
        }

        $this->_value   = $val;
        $this->_objNum  = $objNum;
        $this->_genNum  = $genNum;
        $this->_factory = $factory;

        $factory->registerObject($this);
    }


    /**
     * Check, that object is generated by specified factory
     *
     * @return Zend_Pdf_ElementFactory
     */
    public function getFactory()
    {
        return $this->_factory;
    }

    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return $this->_value->getType();
    }


    /**
     * Get object number
     *
     * @return integer
     */
    public function getObjNum()
    {
        return $this->_objNum;
    }


    /**
     * Get generation number
     *
     * @return integer
     */
    public function getGenNum()
    {
        return $this->_genNum;
    }


    /**
     * Return reference to the object
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        if ($factory === null) {
            $shift = 0;
        } else {
            $shift = $factory->getEnumerationShift($this->_factory);
        }

        return $this->_objNum + $shift . ' ' . $this->_genNum . ' R';
    }


    /**
     * Dump object to a string to save within PDF file.
     *
     * $factory parameter defines operation context.
     *
     * @param Zend_Pdf_ElementFactory $factory
     * @return string
     */
    public function dump(Zend_Pdf_ElementFactory $factory)
    {
        $shift = $factory->getEnumerationShift($this->_factory);

        return  $this->_objNum + $shift . " " . $this->_genNum . " obj \n"
             .  $this->_value->toString($factory) . "\n"
             . "endobj\n";
    }

    /**
     * Get handler
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property)
    {
        return $this->_value->$property;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($property, $value)
    {
        $this->_value->$property = $value;
    }

    /**
     * Call handler
     *
     * @param string $method
     * @param array  $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        switch (count($args)) {
            case 0:
                return $this->_value->$method();
            case 1:
                return $this->_value->$method($args[0]);
            case 2:
                return $this->_value->$method($args[0], $args[1]);
            case 3:
                return $this->_value->$method($args[0], $args[1], $args[2]);
            case 4:
                return $this->_value->$method($args[0], $args[1], $args[2], $args[3]);
            default:
                throw new Zend_Pdf_Exception('Unsupported number of arguments');
        }
    }


    /**
     * Mark object as modified, to include it into new PDF file segment
     */
    public function touch()
    {
        $this->_factory->markAsModified($this);
    }

    /**
     * Clean up resources, used by object
     */
    public function cleanUp()
    {
        $this->_value = null;
    }

    /**
     * Convert PDF element to PHP type.
     *
     * @return mixed
     */
    public function toPhp()
    {
        return $this->_value->toPhp();
    }
}
PKpG[���	��Pdf/Element/Name.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'name' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Name extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var string
     */
    public $value;


    /**
     * Object constructor
     *
     * @param string $val
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val)
    {
        settype($val, 'string');
        if (strpos($val,"\x00") !== false) {
            throw new Zend_Pdf_Exception('Null character is not allowed in PDF Names');
        }
        $this->value   = (string)$val;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_NAME;
    }


    /**
     * Escape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function escape($inStr)
    {
        $outStr = '';

        for ($count = 0; $count < strlen($inStr); $count++) {
            $nextCode = ord($inStr[$count]);

            switch ($inStr[$count]) {
                case '(':
                // fall through to next case
                case ')':
                // fall through to next case
                case '<':
                // fall through to next case
                case '>':
                // fall through to next case
                case '[':
                // fall through to next case
                case ']':
                // fall through to next case
                case '{':
                // fall through to next case
                case '}':
                // fall through to next case
                case '/':
                // fall through to next case
                case '%':
                // fall through to next case
                case '\\':
                // fall through to next case
                case '#':
                    $outStr .= sprintf('#%02X', $nextCode);
                    break;

                default:
                    if ($nextCode >= 33 && $nextCode <= 126 ) {
                        // Visible ASCII symbol
                        $outStr .= $inStr[$count];
                    } else {
                        $outStr .= sprintf('#%02X', $nextCode);
                    }
            }

        }

        return $outStr;
    }


    /**
     * Unescape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function unescape($inStr)
    {
        $outStr = '';

        for ($count = 0; $count < strlen($inStr); $count++) {
            if ($inStr[$count] != '#' )  {
                $outStr .= $inStr[$count];
            } else {
                // Escape sequence
                $outStr .= chr(base_convert(substr($inStr, $count+1, 2), 16, 10 ));
                $count +=2;
            }
        }
        return $outStr;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return '/' . self::escape((string)$this->value);
    }
}
PKpG[�G{��Pdf/Element/String.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'string' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_String extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var string
     */
    public $value;

    /**
     * Object constructor
     *
     * @param string $val
     */
    public function __construct($val)
    {
        $this->value   = (string)$val;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_STRING;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        return '(' . self::escape((string)$this->value) . ')';
    }


    /**
     * Escape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function escape($inStr)
    {
        $outStr = '';
        $lastNL = 0;

        for ($count = 0; $count < strlen($inStr); $count++) {
            if (strlen($outStr) - $lastNL > 128)  {
                $outStr .= "\\\n";
                $lastNL = strlen($outStr);
            }

            $nextCode = ord($inStr[$count]);
            switch ($nextCode) {
                // "\n" - line feed (LF)
                case 10:
                    $outStr .= '\\n';
                    break;

                // "\r" - carriage return (CR)
                case 13:
                    $outStr .= '\\r';
                    break;

                // "\t" - horizontal tab (HT)
                case 9:
                    $outStr .= '\\t';
                    break;

                // "\b" - backspace (BS)
                case 8:
                    $outStr .= '\\b';
                    break;

                // "\f" - form feed (FF)
                case 12:
                    $outStr .= '\\f';
                    break;

                // '(' - left paranthesis
                case 40:
                    $outStr .= '\\(';
                    break;

                // ')' - right paranthesis
                case 41:
                    $outStr .= '\\)';
                    break;

                // '\' - backslash
                case 92:
                    $outStr .= '\\\\';
                    break;

                default:
                    // Don't use non-ASCII characters escaping
                    // if ($nextCode >= 32 && $nextCode <= 126 ) {
                    //     // Visible ASCII symbol
                    //     $outStr .= $inStr[$count];
                    // } else {
                    //     $outStr .= sprintf('\\%03o', $nextCode);
                    // }
                    $outStr .= $inStr[$count];

                    break;
            }
        }

        return $outStr;
    }


    /**
     * Unescape string according to the PDF rules
     *
     * @param string $inStr
     * @return string
     */
    public static function unescape($inStr)
    {
        $outStr = '';

        for ($count = 0; $count < strlen($inStr); $count++) {
            if ($inStr[$count] != '\\' || $count == strlen($inStr)-1)  {
                $outStr .= $inStr[$count];
            } else { // Escape sequence
                switch ($inStr{++$count}) {
                    // '\\n' - line feed (LF)
                    case 'n':
                        $outStr .= "\n";
                        break;

                    // '\\r' - carriage return (CR)
                    case 'r':
                        $outStr .= "\r";
                        break;

                    // '\\t' - horizontal tab (HT)
                    case 't':
                        $outStr .= "\t";
                        break;

                    // '\\b' - backspace (BS)
                    case 'b':
                        $outStr .= "\x08";
                        break;

                    // '\\f' - form feed (FF)
                    case 'f':
                        $outStr .= "\x0C";
                        break;

                    // '\\(' - left paranthesis
                    case '(':
                        $outStr .= '(';
                        break;

                    // '\\)' - right paranthesis
                    case ')':
                        $outStr .= ')';
                        break;

                    // '\\\\' - backslash
                    case '\\':
                        $outStr .= '\\';
                        break;

                    // "\\\n" or "\\\n\r"
                    case "\n":
                        // skip new line symbol
                        if ($inStr[$count+1] == "\r") {
                            $count++;
                        }
                        break;

                    default:
                        if (ord($inStr[$count]) >= ord('0') &&
                            ord($inStr[$count]) <= ord('9')) {
                            // Character in octal representation
                            // '\\xxx'
                            $nextCode = '0' . $inStr[$count];

                            if (ord($inStr[$count+1]) >= ord('0') &&
                                ord($inStr[$count+1]) <= ord('9')) {
                                $nextCode .= $inStr{++$count};

                                if (ord($inStr[$count+1]) >= ord('0') &&
                                    ord($inStr[$count+1]) <= ord('9')) {
                                    $nextCode .= $inStr{++$count};
                                }
                            }

                            $outStr .= chr($nextCode);
                        } else {
                            $outStr .= $inStr[$count];
                        }
                        break;
                }
            }
        }

        return $outStr;
    }

}
PKpG[+�����Pdf/Element/Numeric.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'numeric' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Numeric extends Zend_Pdf_Element
{
    /**
     * Object value
     *
     * @var numeric
     */
    public $value;


    /**
     * Object constructor
     *
     * @param numeric $val
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val)
    {
        if ( !is_numeric($val) ) {
            throw new Zend_Pdf_Exception('Argument must be numeric');
        }

        $this->value   = $val;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_NUMERIC;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        if (is_integer($this->value)) {
            return (string)$this->value;
        }

        /**
         * PDF doesn't support exponental format.
         * Fixed point format must be used instead
         */
        $prec = 0; $v = $this->value;
        while (abs( floor($v) - $v ) > 1e-10) {
            $prec++; $v *= 10;
        }
        return sprintf("%.{$prec}F", $this->value);
    }
}
PKpG[.8��Pdf/Element/Reference.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Reference_Context */
require_once 'Zend/Pdf/Element/Reference/Context.php';

/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';

/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';


/**
 * PDF file 'reference' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Reference extends Zend_Pdf_Element
{
    /**
     * Object value
     * The reference to the object
     *
     * @var mixed
     */
    private $_ref;

    /**
     * Object number within PDF file
     *
     * @var integer
     */
    private $_objNum;

    /**
     * Generation number
     *
     * @var integer
     */
    private $_genNum;

    /**
     * Reference context
     *
     * @var Zend_Pdf_Element_Reference_Context
     */
    private $_context;


    /**
     * Reference to the factory.
     *
     * It's the same as referenced object factory, but we save it here to avoid
     * unnecessary dereferencing, whech can produce cascade dereferencing and parsing.
     * The same for duplication of getFactory() function. It can be processed by __call()
     * method, but we catch it here.
     *
     * @var Zend_Pdf_ElementFactory
     */
    private $_factory;

    /**
     * Object constructor:
     *
     * @param integer $objNum
     * @param integer $genNum
     * @param Zend_Pdf_Element_Reference_Context $context
     * @param Zend_Pdf_ElementFactory $factory
     * @throws Zend_Pdf_Exception
     */
    public function __construct($objNum, $genNum = 0, Zend_Pdf_Element_Reference_Context $context, Zend_Pdf_ElementFactory $factory)
    {
        if ( !(is_integer($objNum) && $objNum > 0) ) {
            throw new Zend_Pdf_Exception('Object number must be positive integer');
        }
        if ( !(is_integer($genNum) && $genNum >= 0) ) {
            throw new Zend_Pdf_Exception('Generation number must be non-negative integer');
        }

        $this->_objNum  = $objNum;
        $this->_genNum  = $genNum;
        $this->_ref     = null;
        $this->_context = $context;
        $this->_factory = $factory;
    }

    /**
     * Check, that object is generated by specified factory
     *
     * @return Zend_Pdf_ElementFactory
     */
    public function getFactory()
    {
        return $this->_factory;
    }


    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        return $this->_ref->getType();
    }


    /**
     * Return reference to the object
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        if ($factory === null) {
            $shift = 0;
        } else {
            $shift = $factory->getEnumerationShift($this->_factory);
        }

        return $this->_objNum + $shift . ' ' . $this->_genNum . ' R';
    }


    /**
     * Dereference.
     * Take inderect object, take $value member of this object (must be Zend_Pdf_Element),
     * take reference to the $value member of this object and assign it to
     * $value member of current PDF Reference object
     * $obj can be null
     *
     * @throws Zend_Pdf_Exception
     */
    private function _dereference()
    {
        $obj = $this->_context->getParser()->getObject(
                       $this->_context->getRefTable()->getOffset($this->_objNum . ' ' . $this->_genNum . ' R'),
                       $this->_context
                                                      );

        if ($obj === null ) {
            $this->_ref = new Zend_Pdf_Element_Null();
            return;
        }

        if ($obj->toString() != $this->_objNum . ' ' . $this->_genNum . ' R') {
            throw new Zend_Pdf_Exception('Incorrect reference to the object');
        }

        $this->_ref = $obj;
        $this->setParentObject($obj);

        $this->_factory->registerObject($this);
    }

    /**
     * Mark object as modified, to include it into new PDF file segment.
     */
    public function touch()
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        $this->_ref->touch();
    }


    /**
     * Get handler
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property)
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        return $this->_ref->$property;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($property, $value)
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        $this->_ref->$property = $value;
    }

    /**
     * Call handler
     *
     * @param string $method
     * @param array  $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        switch (count($args)) {
            case 0:
                return $this->_ref->$method();
            case 1:
                return $this->_ref->$method($args[0]);
            case 2:
                return $this->_ref->$method($args[0], $args[1]);
            case 3:
                return $this->_ref->$method($args[0], $args[1], $args[2]);
            case 4:
                return $this->_ref->$method($args[0], $args[1], $args[2], $args[3]);
            default:
                throw new Zend_Pdf_Exception('Unsupported number of arguments');
        }
    }

    /**
     * Clean up resources
     */
    public function cleanUp()
    {
        $this->_ref = null;
    }

    /**
     * Convert PDF element to PHP type.
     *
     * @return mixed
     */
    public function toPhp()
    {
        if ($this->_ref === null) {
            $this->_dereference();
        }

        return $this->_ref->toPhp();
    }
}
PKpG[(3�###Pdf/Element/Dictionary.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';


/**
 * PDF file 'dictionary' element implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Element_Dictionary extends Zend_Pdf_Element
{
    /**
     * Dictionary elements
     * Array of Zend_Pdf_Element objects ('name' => Zend_Pdf_Element)
     *
     * @var array
     */
    private $_items = array();


    /**
     * Object constructor
     *
     * @param array $val   - array of Zend_Pdf_Element objects
     * @throws Zend_Pdf_Exception
     */
    public function __construct($val = null)
    {
        if ($val === null) {
            return;
        } else if (!is_array($val)) {
            throw new Zend_Pdf_Exception('Argument must be an array');
        }

        foreach ($val as $name => $element) {
            if (!$element instanceof Zend_Pdf_Element) {
                throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects');
            }
            if (!is_string($name)) {
                throw new Zend_Pdf_Exception('Array keys must be strings');
            }
            $this->_items[$name] = $element;
        }
    }


    /**
     * Add element to an array
     *
     * @name Zend_Pdf_Element_Name $name
     * @param Zend_Pdf_Element $val   - Zend_Pdf_Element object
     * @throws Zend_Pdf_Exception
     */
    public function add(Zend_Pdf_Element_Name $name, Zend_Pdf_Element $val)
    {
        $this->_items[$name->value] = $val;
    }

    /**
     * Return dictionary keys
     *
     * @return array
     */
    public function getKeys()
    {
        return array_keys($this->_items);
    }


    /**
     * Get handler
     *
     * @param string $property
     * @return Zend_Pdf_Element | null
     */
    public function __get($item)
    {
        $element = isset($this->_items[$item]) ? $this->_items[$item]
                                               : null;

        return $element;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  mixed $value
     */
    public function __set($item, $value)
    {
        if ($value === null) {
            unset($this->_items[$item]);
        } else {
            $this->_items[$item] = $value;
        }
    }

    /**
     * Return type of the element.
     *
     * @return integer
     */
    public function getType()
    {
        return Zend_Pdf_Element::TYPE_DICTIONARY;
    }


    /**
     * Return object as string
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    public function toString($factory = null)
    {
        $outStr = '<<';
        $lastNL = 0;

        foreach ($this->_items as $name => $element) {
            if (!is_object($element)) {
                throw new Zend_Pdf_Exception('Wrong data');
            }

            if (strlen($outStr) - $lastNL > 128)  {
                $outStr .= "\n";
                $lastNL = strlen($outStr);
            }

            $nameObj = new Zend_Pdf_Element_Name($name);
            $outStr .= $nameObj->toString($factory) . ' ' . $element->toString($factory) . ' ';
        }
        $outStr .= '>>';

        return $outStr;
    }


    /**
     * Convert PDF element to PHP type.
     *
     * Dictionary is returned as an associative array
     *
     * @return mixed
     */
    public function toPhp()
    {
        $phpArray = array();

        foreach ($this->_items as $itemName => $item) {
            $phpArray[$itemName] = $item->toPhp();
        }

        return $phpArray;
    }
}
PKpG[[��?DDPdf/Color/GrayScale.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';


/**
 * GrayScale color implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Color_GrayScale extends Zend_Pdf_Color
{
    /**
     * GrayLevel.
     * 0.0 (black) - 1.0 (white)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_grayLevel;

    /**
     * Object constructor
     *
     * @param float $grayLevel
     */
    public function __construct($grayLevel)
    {
        $this->_grayLevel = new Zend_Pdf_Element_Numeric($grayLevel);

        if ($this->_grayLevel->value < 0) {
            $this->_grayLevel->value = 0;
        }

        if ($this->_grayLevel->value > 1) {
            $this->_grayLevel->value = 1;
        }
    }

    /**
     * Instructions, which can be directly inserted into content stream
     * to switch color.
     * Color set instructions differ for stroking and nonstroking operations.
     *
     * @param boolean $stroking
     * @return string
     */
    public function instructions($stroking)
    {
        return $this->_grayLevel->toString() . ($stroking? " G\n" : " g\n");
    }
}

PKpG[�Ǒ
�
Pdf/Color/Rgb.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';


/**
 * RGB color implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Color_Rgb extends Zend_Pdf_Color
{
    /**
     * Red level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_r;

    /**
     * Green level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_g;

    /**
     * Blue level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_b;


    /**
     * Object constructor
     *
     * @param float $r
     * @param float $g
     * @param float $b
     */
    public function __construct($r, $g, $b)
    {
        /** Clamp values to legal limits. */
        if ($r < 0) { $r = 0; }
        if ($r > 1) { $r = 1; }

        if ($g < 0) { $g = 0; }
        if ($g > 1) { $g = 1; }

        if ($b < 0) { $b = 0; }
        if ($b > 1) { $b = 1; }

        $this->_r = new Zend_Pdf_Element_Numeric($r);
        $this->_g = new Zend_Pdf_Element_Numeric($g);
        $this->_b = new Zend_Pdf_Element_Numeric($b);
    }

    /**
     * Instructions, which can be directly inserted into content stream
     * to switch color.
     * Color set instructions differ for stroking and nonstroking operations.
     *
     * @param boolean $stroking
     * @return string
     */
    public function instructions($stroking)
    {
        return $this->_r->toString() . ' '
             . $this->_g->toString() . ' '
             . $this->_b->toString() .     ($stroking? " RG\n" : " rg\n");
    }
}

PKpG[r[�'��Pdf/Color/Cmyk.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';


/**
 * CMYK color implementation
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Color_Cmyk extends Zend_Pdf_Color
{
    /**
     * Cyan level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_c;

    /**
     * Magenta level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_m;

    /**
     * Yellow level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_y;

    /**
     * Key (BlacK) level.
     * 0.0 (zero concentration) - 1.0 (maximum concentration)
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_k;


    /**
     * Object constructor
     *
     * @param float $c
     * @param float $m
     * @param float $y
     * @param float $k
     */
    public function __construct($c, $m, $y, $k)
    {
        $this->_c = new Zend_Pdf_Element_Numeric($c);
        $this->_m = new Zend_Pdf_Element_Numeric($m);
        $this->_y = new Zend_Pdf_Element_Numeric($y);
        $this->_k = new Zend_Pdf_Element_Numeric($k);

        if ($this->_c->value < 0) { $this->_c->value = 0; }
        if ($this->_c->value > 1) { $this->_c->value = 1; }

        if ($this->_m->value < 0) { $this->_m->value = 0; }
        if ($this->_m->value > 1) { $this->_m->value = 1; }

        if ($this->_y->value < 0) { $this->_y->value = 0; }
        if ($this->_y->value > 1) { $this->_y->value = 1; }

        if ($this->_k->value < 0) { $this->_k->value = 0; }
        if ($this->_k->value > 1) { $this->_k->value = 1; }
    }

    /**
     * Instructions, which can be directly inserted into content stream
     * to switch color.
     * Color set instructions differ for stroking and nonstroking operations.
     *
     * @param boolean $stroking
     * @return string
     */
    public function instructions($stroking)
    {
        return $this->_c->toString() . ' '
             . $this->_m->toString() . ' '
             . $this->_y->toString() . ' '
             . $this->_k->toString() .     ($stroking? " K\n" : " k\n");
    }
}

PKpG[�@7�O>O>Pdf/Color/Html.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Color_Rgb */
require_once 'Zend/Pdf/Color/Rgb.php';

/** Zend_Pdf_GrayScale */
require_once 'Zend/Pdf/Color/GrayScale.php';


/**
 * HTML color implementation
 *
 * Factory class which vends Zend_Pdf_Color objects from typical HTML
 * representations.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Color_Html extends Zend_Pdf_Color
{

    /**
     * Color
     *
     * @var Zend_Pdf_Color
     */
    private $_color;

    /**
     * Class constructor.
     *
     * @param mixed $color
     * @throws Zend_Pdf_Exception
     */
    public function __construct($color)
    {
        $this->_color = self::color($color);
    }


    /**
     * Instructions, which can be directly inserted into content stream
     * to switch color.
     * Color set instructions differ for stroking and nonstroking operations.
     *
     * @param boolean $stroking
     * @return string
     */
    public function instructions($stroking)
    {
        return $this->_color->instructions($stroking);
    }

    /**
     * Creates a Zend_Pdf_Color object from the HTML representation.
     *
     * @param string $color May either be a hexidecimal number of the form
     *    #rrggbb or one of the 140 well-known names (black, white, blue, etc.)
     * @return Zend_Pdf_Color
     */
    public static function color($color)
    {
        $pattern = '/^#([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})$/';
        if (preg_match($pattern, $color, $matches)) {
            $r = round((hexdec($matches[1]) / 255), 3);
            $g = round((hexdec($matches[2]) / 255), 3);
            $b = round((hexdec($matches[3]) / 255), 3);
            if (($r == $g) && ($g == $b)) {
                return new Zend_Pdf_Color_GrayScale($r);
            } else {
                return new Zend_Pdf_Color_Rgb($r, $g, $b);
            }
        } else {
            return Zend_Pdf_Color_Html::namedColor($color);
        }
    }

    /**
     * Creates a Zend_Pdf_Color object from the named color.
     *
     * @param string $color One of the 140 well-known color names (black, white,
     *    blue, etc.)
     * @return Zend_Pdf_Color
     */
    public static function namedColor($color)
    {
        switch (strtolower($color)) {
            case 'aqua':
                $r = 0.0;   $g = 1.0;   $b = 1.0;   break;
            case 'black':
                $r = 0.0;   $g = 0.0;   $b = 0.0;   break;
            case 'blue':
                $r = 0.0;   $g = 0.0;   $b = 1.0;   break;
            case 'fuchsia':
                $r = 1.0;   $g = 0.0;   $b = 1.0;   break;
            case 'gray':
                $r = 0.502; $g = 0.502; $b = 0.502; break;
            case 'green':
                $r = 0.0;   $g = 0.502; $b = 0.0;   break;
            case 'lime':
                $r = 0.0;   $g = 1.0;   $b = 0.0;   break;
            case 'maroon':
                $r = 0.502; $g = 0.0;   $b = 0.0;   break;
            case 'navy':
                $r = 0.0;   $g = 0.0;   $b = 0.502; break;
            case 'olive':
                $r = 0.502; $g = 0.502; $b = 0.0;   break;
            case 'purple':
                $r = 0.502; $g = 0.0;   $b = 0.502; break;
            case 'red':
                $r = 1.0;   $g = 0.0;   $b = 0.0;   break;
            case 'silver':
                $r = 0.753; $g = 0.753; $b = 0.753; break;
            case 'teal':
                $r = 0.0;   $g = 0.502; $b = 0.502; break;
            case 'white':
                $r = 1.0;   $g = 1.0;   $b = 1.0;   break;
            case 'yellow':
                $r = 1.0;   $g = 1.0;   $b = 0.0;   break;

            case 'aliceblue':
                $r = 0.941; $g = 0.973; $b = 1.0;   break;
            case 'antiquewhite':
                $r = 0.980; $g = 0.922; $b = 0.843; break;
            case 'aquamarine':
                $r = 0.498; $g = 1.0;   $b = 0.831; break;
            case 'azure':
                $r = 0.941; $g = 1.0;   $b = 1.0;   break;
            case 'beige':
                $r = 0.961; $g = 0.961; $b = 0.863; break;
            case 'bisque':
                $r = 1.0;   $g = 0.894; $b = 0.769; break;
            case 'blanchedalmond':
                $r = 1.0;   $g = 1.0;   $b = 0.804; break;
            case 'blueviolet':
                $r = 0.541; $g = 0.169; $b = 0.886; break;
            case 'brown':
                $r = 0.647; $g = 0.165; $b = 0.165; break;
            case 'burlywood':
                $r = 0.871; $g = 0.722; $b = 0.529; break;
            case 'cadetblue':
                $r = 0.373; $g = 0.620; $b = 0.627; break;
            case 'chartreuse':
                $r = 0.498; $g = 1.0;   $b = 0.0;   break;
            case 'chocolate':
                $r = 0.824; $g = 0.412; $b = 0.118; break;
            case 'coral':
                $r = 1.0;   $g = 0.498; $b = 0.314; break;
            case 'cornflowerblue':
                $r = 0.392; $g = 0.584; $b = 0.929; break;
            case 'cornsilk':
                $r = 1.0;   $g = 0.973; $b = 0.863; break;
            case 'crimson':
                $r = 0.863; $g = 0.078; $b = 0.235; break;
            case 'cyan':
                $r = 0.0;   $g = 1.0;   $b = 1.0;   break;
            case 'darkblue':
                $r = 0.0;   $g = 0.0;   $b = 0.545; break;
            case 'darkcyan':
                $r = 0.0;   $g = 0.545; $b = 0.545; break;
            case 'darkgoldenrod':
                $r = 0.722; $g = 0.525; $b = 0.043; break;
            case 'darkgray':
                $r = 0.663; $g = 0.663; $b = 0.663; break;
            case 'darkgreen':
                $r = 0.0;   $g = 0.392; $b = 0.0;   break;
            case 'darkkhaki':
                $r = 0.741; $g = 0.718; $b = 0.420; break;
            case 'darkmagenta':
                $r = 0.545; $g = 0.0;   $b = 0.545; break;
            case 'darkolivegreen':
                $r = 0.333; $g = 0.420; $b = 0.184; break;
            case 'darkorange':
                $r = 1.0;   $g = 0.549; $b = 0.0;   break;
            case 'darkorchid':
                $r = 0.6;   $g = 0.196; $b = 0.8;   break;
            case 'darkred':
                $r = 0.545; $g = 0.0;   $b = 0.0;   break;
            case 'darksalmon':
                $r = 0.914; $g = 0.588; $b = 0.478; break;
            case 'darkseagreen':
                $r = 0.561; $g = 0.737; $b = 0.561; break;
            case 'darkslateblue':
                $r = 0.282; $g = 0.239; $b = 0.545; break;
            case 'darkslategray':
                $r = 0.184; $g = 0.310; $b = 0.310; break;
            case 'darkturquoise':
                $r = 0.0;   $g = 0.808; $b = 0.820; break;
            case 'darkviolet':
                $r = 0.580; $g = 0.0;   $b = 0.827; break;
            case 'deeppink':
                $r = 1.0;   $g = 0.078; $b = 0.576; break;
            case 'deepskyblue':
                $r = 0.0;   $g = 0.749; $b = 1.0;   break;
            case 'dimgray':
                $r = 0.412; $g = 0.412; $b = 0.412; break;
            case 'dodgerblue':
                $r = 0.118; $g = 0.565; $b = 1.0;   break;
            case 'firebrick':
                $r = 0.698; $g = 0.133; $b = 0.133; break;
            case 'floralwhite':
                $r = 1.0;   $g = 0.980; $b = 0.941; break;
            case 'forestgreen':
                $r = 0.133; $g = 0.545; $b = 0.133; break;
            case 'gainsboro':
                $r = 0.863; $g = 0.863; $b = 0.863; break;
            case 'ghostwhite':
                $r = 0.973; $g = 0.973; $b = 1.0;   break;
            case 'gold':
                $r = 1.0;   $g = 0.843; $b = 0.0;   break;
            case 'goldenrod':
                $r = 0.855; $g = 0.647; $b = 0.125; break;
            case 'greenyellow':
                $r = 0.678; $g = 1.0;   $b = 0.184; break;
            case 'honeydew':
                $r = 0.941; $g = 1.0;   $b = 0.941; break;
            case 'hotpink':
                $r = 1.0;   $g = 0.412; $b = 0.706; break;
            case 'indianred':
                $r = 0.804; $g = 0.361; $b = 0.361; break;
            case 'indigo':
                $r = 0.294; $g = 0.0;   $b = 0.510; break;
            case 'ivory':
                $r = 1.0;   $g = 0.941; $b = 0.941; break;
            case 'khaki':
                $r = 0.941; $g = 0.902; $b = 0.549; break;
            case 'lavender':
                $r = 0.902; $g = 0.902; $b = 0.980; break;
            case 'lavenderblush':
                $r = 1.0;   $g = 0.941; $b = 0.961; break;
            case 'lawngreen':
                $r = 0.486; $g = 0.988; $b = 0.0;   break;
            case 'lemonchiffon':
                $r = 1.0;   $g = 0.980; $b = 0.804; break;
            case 'lightblue':
                $r = 0.678; $g = 0.847; $b = 0.902; break;
            case 'lightcoral':
                $r = 0.941; $g = 0.502; $b = 0.502; break;
            case 'lightcyan':
                $r = 0.878; $g = 1.0;   $b = 1.0;   break;
            case 'lightgoldenrodyellow':
                $r = 0.980; $g = 0.980; $b = 0.824; break;
            case 'lightgreen':
                $r = 0.565; $g = 0.933; $b = 0.565; break;
            case 'lightgrey':
                $r = 0.827; $g = 0.827; $b = 0.827; break;
            case 'lightpink':
                $r = 1.0;   $g = 0.714; $b = 0.757; break;
            case 'lightsalmon':
                $r = 1.0;   $g = 0.627; $b = 0.478; break;
            case 'lightseagreen':
                $r = 0.125; $g = 0.698; $b = 0.667; break;
            case 'lightskyblue':
                $r = 0.529; $g = 0.808; $b = 0.980; break;
            case 'lightslategray':
                $r = 0.467; $g = 0.533; $b = 0.6;   break;
            case 'lightsteelblue':
                $r = 0.690; $g = 0.769; $b = 0.871; break;
            case 'lightyellow':
                $r = 1.0;   $g = 1.0;   $b = 0.878; break;
            case 'limegreen':
                $r = 0.196; $g = 0.804; $b = 0.196; break;
            case 'linen':
                $r = 0.980; $g = 0.941; $b = 0.902; break;
            case 'magenta':
                $r = 1.0;   $g = 0.0;   $b = 1.0;   break;
            case 'mediumaquamarine':
                $r = 0.4;   $g = 0.804; $b = 0.667; break;
            case 'mediumblue':
                $r = 0.0;   $g = 0.0;   $b = 0.804; break;
            case 'mediumorchid':
                $r = 0.729; $g = 0.333; $b = 0.827; break;
            case 'mediumpurple':
                $r = 0.576; $g = 0.439; $b = 0.859; break;
            case 'mediumseagreen':
                $r = 0.235; $g = 0.702; $b = 0.443; break;
            case 'mediumslateblue':
                $r = 0.482; $g = 0.408; $b = 0.933; break;
            case 'mediumspringgreen':
                $r = 0.0;   $g = 0.980; $b = 0.604; break;
            case 'mediumturquoise':
                $r = 0.282; $g = 0.820; $b = 0.8;   break;
            case 'mediumvioletred':
                $r = 0.780; $g = 0.082; $b = 0.522; break;
            case 'midnightblue':
                $r = 0.098; $g = 0.098; $b = 0.439; break;
            case 'mintcream':
                $r = 0.961; $g = 1.0;   $b = 0.980; break;
            case 'mistyrose':
                $r = 1.0;   $g = 0.894; $b = 0.882; break;
            case 'moccasin':
                $r = 1.0;   $g = 0.894; $b = 0.710; break;
            case 'navajowhite':
                $r = 1.0;   $g = 0.871; $b = 0.678; break;
            case 'oldlace':
                $r = 0.992; $g = 0.961; $b = 0.902; break;
            case 'olivedrab':
                $r = 0.420; $g = 0.557; $b = 0.137; break;
            case 'orange':
                $r = 1.0;   $g = 0.647; $b = 0.0;   break;
            case 'orangered':
                $r = 1.0;   $g = 0.271; $b = 0.0;   break;
            case 'orchid':
                $r = 0.855; $g = 0.439; $b = 0.839; break;
            case 'palegoldenrod':
                $r = 0.933; $g = 0.910; $b = 0.667; break;
            case 'palegreen':
                $r = 0.596; $g = 0.984; $b = 0.596; break;
            case 'paleturquoise':
                $r = 0.686; $g = 0.933; $b = 0.933; break;
            case 'palevioletred':
                $r = 0.859; $g = 0.439; $b = 0.576; break;
            case 'papayawhip':
                $r = 1.0;   $g = 0.937; $b = 0.835; break;
            case 'peachpuff':
                $r = 1.0;   $g = 0.937; $b = 0.835; break;
            case 'peru':
                $r = 0.804; $g = 0.522; $b = 0.247; break;
            case 'pink':
                $r = 1.0;   $g = 0.753; $b = 0.796; break;
            case 'plum':
                $r = 0.867; $g = 0.627; $b = 0.867; break;
            case 'powderblue':
                $r = 0.690; $g = 0.878; $b = 0.902; break;
            case 'rosybrown':
                $r = 0.737; $g = 0.561; $b = 0.561; break;
            case 'royalblue':
                $r = 0.255; $g = 0.412; $b = 0.882; break;
            case 'saddlebrown':
                $r = 0.545; $g = 0.271; $b = 0.075; break;
            case 'salmon':
                $r = 0.980; $g = 0.502; $b = 0.447; break;
            case 'sandybrown':
                $r = 0.957; $g = 0.643; $b = 0.376; break;
            case 'seagreen':
                $r = 0.180; $g = 0.545; $b = 0.341; break;
            case 'seashell':
                $r = 1.0;   $g = 0.961; $b = 0.933; break;
            case 'sienna':
                $r = 0.627; $g = 0.322; $b = 0.176; break;
            case 'skyblue':
                $r = 0.529; $g = 0.808; $b = 0.922; break;
            case 'slateblue':
                $r = 0.416; $g = 0.353; $b = 0.804; break;
            case 'slategray':
                $r = 0.439; $g = 0.502; $b = 0.565; break;
            case 'snow':
                $r = 1.0;   $g = 0.980; $b = 0.980; break;
            case 'springgreen':
                $r = 0.0;   $g = 1.0;   $b = 0.498; break;
            case 'steelblue':
                $r = 0.275; $g = 0.510; $b = 0.706; break;
            case 'tan':
                $r = 0.824; $g = 0.706; $b = 0.549; break;
            case 'thistle':
                $r = 0.847; $g = 0.749; $b = 0.847; break;
            case 'tomato':
                $r = 0.992; $g = 0.388; $b = 0.278; break;
            case 'turquoise':
                $r = 0.251; $g = 0.878; $b = 0.816; break;
            case 'violet':
                $r = 0.933; $g = 0.510; $b = 0.933; break;
            case 'wheat':
                $r = 0.961; $g = 0.871; $b = 0.702; break;
            case 'whitesmoke':
                $r = 0.961; $g = 0.961; $b = 0.961; break;
            case 'yellowgreen':
                $r = 0.604; $g = 0.804; $b = 0.196; break;

            default:
                throw new Zend_Pdf_Exception('Unknown color name: ' . $color);
        }
        if (($r == $g) && ($g == $b)) {
            return new Zend_Pdf_Color_GrayScale($r);
        } else {
            return new Zend_Pdf_Color_Rgb($r, $g, $b);
        }
    }
}

PKpG[��"�
�
 Pdf/Filter/Compression/Flate.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Filter_Compression */
require_once 'Zend/Pdf/Filter/Compression.php';


/**
 * Flate stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Filter_Compression_Flate extends Zend_Pdf_Filter_Compression
{
    /**
     * Encode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function encode($data, $params = null)
    {
        if ($params != null) {
            $data = self::_applyEncodeParams($data, $params);
        }

        if (extension_loaded('zlib')) {
            $trackErrors = ini_get( "track_errors");
            ini_set('track_errors', '1');

            if (($output = @gzcompress($data)) === false) {
                ini_set('track_errors', $trackErrors);
                throw new Zend_Pdf_Exception($php_errormsg);
            }

            ini_set('track_errors', $trackErrors);
        } else {
            throw new Zend_Pdf_Exception('Not implemented yet. You have to use zlib extension.');
        }

        return $output;
    }

    /**
     * Decode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function decode($data, $params = null)
    {
        global $php_errormsg;

        if (extension_loaded('zlib')) {
            $trackErrors = ini_get( "track_errors");
            ini_set('track_errors', '1');

            if (($output = @gzuncompress($data)) === false) {
                ini_set('track_errors', $trackErrors);
                throw new Zend_Pdf_Exception($php_errormsg);
            }

            ini_set('track_errors', $trackErrors);
        } else {
            throw new Zend_Pdf_Exception('Not implemented yet');
        }

        if ($params !== null) {
            return self::_applyDecodeParams($output, $params);
        } else {
            return $output;
        }
    }
}
PKpG[F;��	�	Pdf/Filter/Compression/Lzw.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Filter_Compression */
require_once 'Zend/Pdf/Filter/Compression.php';


/**
 * LZW stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Filter_Compression_Lzw extends Zend_Pdf_Filter_Compression
{
    /**
     * Get EarlyChange decode param value
     *
     * @param array $params
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    private static function _getEarlyChangeValue($params)
    {
        if (isset($params['EarlyChange'])) {
            $earlyChange = $params['EarlyChange'];

            if ($earlyChange != 0  &&  $earlyChange != 1) {
                throw new Zend_Pdf_Exception('Invalid value of \'EarlyChange\' decode param - ' . $earlyChange . '.' );
            }
            return $earlyChange;
        } else {
            return 1;
        }
    }


    /**
     * Encode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function encode($data, $params = null)
    {
        if ($params != null) {
            $data = self::_applyEncodeParams($data, $params);
        }

        throw new Zend_Pdf_Exception('Not implemented yet');
    }

    /**
     * Decode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function decode($data, $params = null)
    {
        throw new Zend_Pdf_Exception('Not implemented yet');

        if ($params !== null) {
            return self::_applyDecodeParams($data, $params);
        } else {
            return $data;
        }
    }
}
PKpG[�L`��Pdf/Filter/AsciiHex.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Filter_Interface */
require_once 'Zend/Pdf/Filter/Interface.php';


/**
 * AsciiHex stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Filter_AsciiHex implements Zend_Pdf_Filter_Interface
{
    /**
     * Encode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function encode($data, $params = null)
    {
        return bin2hex($data) . '>';
    }

    /**
     * Decode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function decode($data, $params = null)
    {
        $output  = '';
        $oddCode = true;
        $commentMode = false;

        for ($count = 0; $count < strlen($data)  &&  $data[$count] != '>'; $count++) {
            $charCode = ord($data[$count]);

            if ($commentMode) {
                if ($charCode == 0x0A  || $charCode == 0x0D ) {
                    $commentMode = false;
                }

                continue;
            }

            switch ($charCode) {
                //Skip white space
                case 0x00: // null character
                    // fall through to next case
                case 0x09: // Tab
                    // fall through to next case
                case 0x0A: // Line feed
                    // fall through to next case
                case 0x0C: // Form Feed
                    // fall through to next case
                case 0x0D: // Carriage return
                    // fall through to next case
                case 0x20: // Space
                    // Do nothing
                    break;

                case 0x25: // '%'
                    // Switch to comment mode
                    $commentMode = true;
                    break;

                default:
                    if ($charCode >= 0x30 /*'0'*/ && $charCode <= 0x39 /*'9'*/) {
                        $code = $charCode - 0x30;
                    } else if ($charCode >= 0x41 /*'A'*/ && $charCode <= 0x46 /*'F'*/) {
                        $code = $charCode - 0x37/*0x41 - 0x0A*/;
                    } else if ($charCode >= 0x61 /*'a'*/ && $charCode <= 0x66 /*'f'*/) {
                        $code = $charCode - 0x57/*0x61 - 0x0A*/;
                    } else {
                        throw new Zend_Pdf_Exception('Wrong character in a encoded stream');
                    }

                    if ($oddCode) {
                        // Odd pass. Store hex digit for next pass
                        // Scope of $hexCodeHigh variable is whole function
                        $hexCodeHigh = $code;
                    } else {
                        // Even pass.
                        // Add decoded character to the output
                        // ($hexCodeHigh is stored in previous pass)
                        $output .= chr($hexCodeHigh*16 + $code);
                    }
                    $oddCode = !$oddCode;

                    break;
            }
        }

        /* Check that stream is terminated by End Of Data marker */
        if ($data[$count] != '>') {
            throw new Zend_Pdf_Exception('Wrong encoded stream End Of Data marker.');
        }

        /* Last '0' character is omitted */
        if (!$oddCode) {
            $output .= chr($hexCodeHigh*16);
        }

        return $output;
    }
}
PKpG[`���BBPdf/Filter/Ascii85.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Filter_Interface */
require_once 'Zend/Pdf/Filter/Interface.php';


/**
 * ASCII85 stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Filter_Ascii85 implements Zend_Pdf_Filter_Interface
{
    /**
     * Encode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function encode($data, $params = null)
    {
        throw new Zend_Pdf_Exception('Not implemented yet');
    }

    /**
     * Decode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function decode($data, $params = null)
    {
        throw new Zend_Pdf_Exception('Not implemented yet');
    }
}
PKpG[@��H��Pdf/Filter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';


/**
 * PDF stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Pdf_Filter_Interface
{
    /**
     * Encode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function encode($data, $params = null);

    /**
     * Decode data
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public static function decode($data, $params = null);
}
PKpG[���h�:�:Pdf/Filter/Compression.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Filter_Interface */
require_once 'Zend/Pdf/Filter/Interface.php';


/**
 * ASCII85 stream filter
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Filter_Compression implements Zend_Pdf_Filter_Interface
{
    /**
     * Paeth prediction function
     *
     * @param integer $a
     * @param integer $b
     * @param integer $c
     * @return integer
     */
    private static function _paeth($a, $b, $c)
    {
        // $a - left, $b - above, $c - upper left
        $p  = $a + $b - $c;       // initial estimate
        $pa = abs($p - $a);       // distances to a, b, c
        $pb = abs($p - $b);
        $pc = abs($p - $c);

        // return nearest of a,b,c,
        // breaking ties in order a,b,c.
        if ($pa <= $pb && $pa <= $pc) {
            return $a;
        } else if ($pb <= $pc) {
            return $b;
        } else {
            return $c;
        }
    }


    /**
     * Get Predictor decode param value
     *
     * @param array $params
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    private static function _getPredictorValue(&$params)
    {
        if (isset($params['Predictor'])) {
            $predictor = $params['Predictor'];

            if ($predictor != 1   &&  $predictor != 2   &&
                $predictor != 10  &&  $predictor != 11  &&   $predictor != 12  &&
                $predictor != 13  &&  $predictor != 14  &&   $predictor != 15) {
                throw new Zend_Pdf_Exception('Invalid value of \'Predictor\' decode param - ' . $predictor . '.' );
            }
            return $predictor;
        } else {
            return 1;
        }
    }

    /**
     * Get Colors decode param value
     *
     * @param array $params
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    private static function _getColorsValue(&$params)
    {
        if (isset($params['Colors'])) {
            $colors = $params['Colors'];

            if ($colors != 1  &&  $colors != 2  &&  $colors != 3  &&  $colors != 4) {
                throw new Zend_Pdf_Exception('Invalid value of \'Color\' decode param - ' . $colors . '.' );
            }
            return $colors;
        } else {
            return 1;
        }
    }

    /**
     * Get BitsPerComponent decode param value
     *
     * @param array $params
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    private static function _getBitsPerComponentValue(&$params)
    {
        if (isset($params['BitsPerComponent'])) {
            $bitsPerComponent = $params['BitsPerComponent'];

            if ($bitsPerComponent != 1  &&  $bitsPerComponent != 2  &&
                $bitsPerComponent != 4  &&  $bitsPerComponent != 8  &&
                $bitsPerComponent != 16 ) {
                throw new Zend_Pdf_Exception('Invalid value of \'BitsPerComponent\' decode param - ' . $bitsPerComponent . '.' );
            }
            return $bitsPerComponent;
        } else {
            return 8;
        }
    }

    /**
     * Get Columns decode param value
     *
     * @param array $params
     * @return integer
     */
    private static function _getColumnsValue(&$params)
    {
        if (isset($params['Columns'])) {
            return $params['Columns'];
        } else {
            return 1;
        }
    }


    /**
     * Convert stream data according to the filter params set before encoding.
     *
     * @param string $data
     * @param array $params
     * @return string
     * @throws Zend_Pdf_Exception
     */
    protected static function _applyEncodeParams($data, $params) {
        $predictor        = self::_getPredictorValue($params);
        $colors           = self::_getColorsValue($params);
        $bitsPerComponent = self::_getBitsPerComponentValue($params);
        $columns          = self::_getColumnsValue($params);

        /** None of prediction */
        if ($predictor == 1) {
            return $data;
        }

        /** TIFF Predictor 2 */
        if ($predictor == 2) {
            throw new Zend_Pdf_Exception('Not implemented yet' );
        }

        /** Optimal PNG prediction */
        if ($predictor == 15) {
            /** Use Paeth prediction as optimal */
            $predictor = 14;
        }

        /** PNG prediction */
        if ($predictor == 10 ||  /** None of prediction */
            $predictor == 11 ||  /** Sub prediction     */
            $predictor == 12 ||  /** Up prediction      */
            $predictor == 13 ||  /** Average prediction */
            $predictor == 14     /** Paeth prediction   */
            ) {
            $predictor -= 10;

            if($bitsPerComponent == 16) {
                throw new Zend_Pdf_Exception("PNG Prediction with bit depth greater than 8 not yet supported.");
            }

            $bitsPerSample  = $bitsPerComponent*$colors;
            $bytesPerSample = (int)(($bitsPerSample + 7)/8);           // (int)ceil(...) emulation
            $bytesPerRow    = (int)(($bitsPerSample*$columns + 7)/8);  // (int)ceil(...) emulation
            $rows           = strlen($data)/$bytesPerRow;
            $output         = '';
            $offset         = 0;

            if (!is_integer($rows)) {
                throw new Zend_Pdf_Exception('Wrong data length.');
            }

            switch ($predictor) {
                case 0: // None of prediction
                    for ($count = 0; $count < $rows; $count++) {
                        $output .= chr($predictor);
                        $output .= substr($data, $offset, $bytesPerRow);
                        $offset += $bytesPerRow;
                    }
                    break;

                case 1: // Sub prediction
                    for ($count = 0; $count < $rows; $count++) {
                        $output .= chr($predictor);

                        $lastSample = array_fill(0, $bytesPerSample, 0);
                        for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
                            $newByte = ord($data[$offset++]);
                            // Note. chr() automatically cuts input to 8 bit
                            $output .= chr($newByte - $lastSample[$count2 % $bytesPerSample]);
                            $lastSample[$count2 % $bytesPerSample] = $newByte;
                        }
                    }
                    break;

                case 2: // Up prediction
                    $lastRow = array_fill(0, $bytesPerRow, 0);
                    for ($count = 0; $count < $rows; $count++) {
                        $output .= chr($predictor);

                        for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
                            $newByte = ord($data[$offset++]);
                            // Note. chr() automatically cuts input to 8 bit
                            $output .= chr($newByte - $lastRow[$count2]);
                            $lastRow[$count2] = $newByte;
                        }
                    }
                    break;

                case 3: // Average prediction
                    $lastRow = array_fill(0, $bytesPerRow, 0);
                    for ($count = 0; $count < $rows; $count++) {
                        $output .= chr($predictor);

                        $lastSample = array_fill(0, $bytesPerSample, 0);
                        for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
                            $newByte = ord($data[$offset++]);
                            // Note. chr() automatically cuts input to 8 bit
                            $output .= chr($newByte - floor(( $lastSample[$count2 % $bytesPerSample] + $lastRow[$count2])/2));
                            $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = $newByte;
                        }
                    }
                    break;

                case 4: // Paeth prediction
                    $lastRow    = array_fill(0, $bytesPerRow, 0);
                    $currentRow = array();
                    for ($count = 0; $count < $rows; $count++) {
                        $output .= chr($predictor);

                        $lastSample = array_fill(0, $bytesPerSample, 0);
                        for ($count2 = 0; $count2 < $bytesPerRow; $count2++) {
                            $newByte = ord($data[$offset++]);
                            // Note. chr() automatically cuts input to 8 bit
                            $output .= chr($newByte - self::_paeth( $lastSample[$count2 % $bytesPerSample],
                                                                    $lastRow[$count2],
                                                                    ($count2 - $bytesPerSample  <  0)?
                                                                         0 : $lastRow[$count2 - $bytesPerSample] ));
                            $lastSample[$count2 % $bytesPerSample] = $currentRow[$count2] = $newByte;
                        }
                        $lastRow = $currentRow;
                    }
                    break;
            }
            return $output;
        }

        throw new Zend_Pdf_Exception('Unknown prediction algorithm - ' . $predictor . '.' );
    }

    /**
     * Convert stream data according to the filter params set after decoding.
     *
     * @param string $data
     * @param array $params
     * @return string
     */
    protected static function _applyDecodeParams($data, $params) {
        $predictor        = self::_getPredictorValue($params);
        $colors           = self::_getColorsValue($params);
        $bitsPerComponent = self::_getBitsPerComponentValue($params);
        $columns          = self::_getColumnsValue($params);

        /** None of prediction */
        if ($predictor == 1) {
            return $data;
        }

        /** TIFF Predictor 2 */
        if ($predictor == 2) {
            throw new Zend_Pdf_Exception('Not implemented yet' );
        }

        /**
         * PNG prediction
         * Prediction code is duplicated on each row.
         * Thus all cases can be brought to one
         */
        if ($predictor == 10 ||  /** None of prediction */
            $predictor == 11 ||  /** Sub prediction     */
            $predictor == 12 ||  /** Up prediction      */
            $predictor == 13 ||  /** Average prediction */
            $predictor == 14 ||  /** Paeth prediction   */
            $predictor == 15     /** Optimal prediction */) {

            $bitsPerSample  = $bitsPerComponent*$colors;
            $bytesPerSample = ceil($bitsPerSample/8);
            $bytesPerRow    = ceil($bitsPerSample*$columns/8);
            $rows           = ceil(strlen($data)/($bytesPerRow + 1));
            $output         = '';
            $offset         = 0;

            $lastRow = array_fill(0, $bytesPerRow, 0);
            for ($count = 0; $count < $rows; $count++) {
                $lastSample = array_fill(0, $bytesPerSample, 0);
                switch (ord($data[$offset++])) {
                    case 0: // None of prediction
                        $output .= substr($data, $offset, $bytesPerRow);
                        for ($count2 = 0; $count2 < $bytesPerRow  &&  $offset < strlen($data); $count2++) {
                            $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = ord($data[$offset++]);
                        }
                        break;

                    case 1: // Sub prediction
                        for ($count2 = 0; $count2 < $bytesPerRow  &&  $offset < strlen($data); $count2++) {
                            $decodedByte = (ord($data[$offset++]) + $lastSample[$count2 % $bytesPerSample]) & 0xFF;
                            $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = $decodedByte;
                            $output .= chr($decodedByte);
                        }
                        break;

                    case 2: // Up prediction
                        for ($count2 = 0; $count2 < $bytesPerRow  &&  $offset < strlen($data); $count2++) {
                            $decodedByte = (ord($data[$offset++]) + $lastRow[$count2]) & 0xFF;
                            $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = $decodedByte;
                            $output .= chr($decodedByte);
                        }
                        break;

                    case 3: // Average prediction
                        for ($count2 = 0; $count2 < $bytesPerRow  &&  $offset < strlen($data); $count2++) {
                            $decodedByte = (ord($data[$offset++]) +
                                            floor(( $lastSample[$count2 % $bytesPerSample] + $lastRow[$count2])/2)
                                           ) & 0xFF;
                            $lastSample[$count2 % $bytesPerSample] = $lastRow[$count2] = $decodedByte;
                            $output .= chr($decodedByte);
                        }
                        break;

                    case 4: // Paeth prediction
                        $currentRow = array();
                        for ($count2 = 0; $count2 < $bytesPerRow  &&  $offset < strlen($data); $count2++) {
                            $decodedByte = (ord($data[$offset++]) +
                                            self::_paeth($lastSample[$count2 % $bytesPerSample],
                                                         $lastRow[$count2],
                                                         ($count2 - $bytesPerSample  <  0)?
                                                              0 : $lastRow[$count2 - $bytesPerSample])
                                           ) & 0xFF;
                            $lastSample[$count2 % $bytesPerSample] = $currentRow[$count2] = $decodedByte;
                            $output .= chr($decodedByte);
                        }
                        $lastRow = $currentRow;
                        break;

                    default:
                        throw new Zend_Pdf_Exception('Unknown prediction tag.');
                }
            }
            return $output;
        }

        throw new Zend_Pdf_Exception('Unknown prediction algorithm - ' . $predictor . '.' );
    }
}
PKpG[��zJ��Pdf/FileParserDataSource.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';


/**
 * Abstract helper class for {@link Zend_Pdf_FileParser} that provides the
 * data source for parsing.
 *
 * Concrete subclasses allow for parsing of in-memory, filesystem, and other
 * sources through a common API. These subclasses also take care of error
 * handling and other mundane tasks.
 *
 * Subclasses must implement at minimum {@link __construct()},
 * {@link __destruct()}, {@link readBytes()}, and {@link readAllBytes()}.
 * Subclasses should also override {@link moveToOffset()} and
 * {@link __toString()} as appropriate.
 *
 * @package    Zend_Pdf
 * @subpackage FileParser
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_FileParserDataSource
{
  /**** Instance Variables ****/


    /**
     * Total size in bytes of the data source.
     * @var integer
     */
    protected $_size = 0;

    /**
     * Byte offset of the current read position within the data source.
     * @var integer
     */
    protected $_offset = 0;



  /**** Public Interface ****/


  /* Abstract Methods */

    /**
     * Object constructor. Opens the data source for parsing.
     *
     * Must set $this->_size to the total size in bytes of the data source.
     *
     * Upon return the data source can be interrogated using the primitive
     * methods described here.
     *
     * If the data source cannot be opened for any reason (such as insufficient
     * permissions, missing file, etc.), will throw an appropriate exception.
     *
     * @throws Zend_Pdf_Exception
     */
    abstract public function __construct();

    /**
     * Object destructor. Closes the data source.
     *
     * May also perform cleanup tasks such as deleting temporary files.
     */
    abstract public function __destruct();

    /**
     * Returns the specified number of raw bytes from the data source at the
     * byte offset of the current read position.
     *
     * Must advance the read position by the number of bytes read by updating
     * $this->_offset.
     *
     * Throws an exception if there is insufficient data to completely fulfill
     * the request or if an error occurs.
     *
     * @param integer $byteCount Number of bytes to read.
     * @return string
     * @throws Zend_Pdf_Exception
     */
    abstract public function readBytes($byteCount);

    /**
     * Returns the entire contents of the data source as a string.
     *
     * This method may be called at any time and so must preserve the byte
     * offset of the read position, both through $this->_offset and whatever
     * other additional pointers (such as the seek position of a file pointer)
     * that might be used.
     *
     * @return string
     */
    abstract public function readAllBytes();


  /* Object Magic Methods */

    /**
     * Returns a description of the object for debugging purposes.
     *
     * Subclasses should override this method to provide a more specific
     * description of the actual object being represented.
     *
     * @return string
     */
    public function __toString()
    {
        return get_class($this);
    }


  /* Accessors */

    /**
     * Returns the byte offset of the current read position within the data
     * source.
     *
     * @return integer
     */
    public function getOffset()
    {
        return $this->_offset;
    }

    /**
     * Returns the total size in bytes of the data source.
     *
     * @return integer
     */
    public function getSize()
    {
        return $this->_size;
    }


  /* Primitive Methods */

    /**
     * Moves the current read position to the specified byte offset.
     *
     * Throws an exception you attempt to move before the beginning or beyond
     * the end of the data source.
     *
     * If a subclass needs to perform additional tasks (such as performing a
     * fseek() on a filesystem source), it should do so after calling this
     * parent method.
     *
     * @param integer $offset Destination byte offset.
     * @throws Zend_Pdf_Exception
     */
    public function moveToOffset($offset)
    {
        if ($this->_offset == $offset) {
            return;    // Not moving; do nothing.
        }
        if ($offset < 0) {
            throw new Zend_Pdf_Exception('Attempt to move before start of data source',
                                         Zend_Pdf_Exception::MOVE_BEFORE_START_OF_FILE);
        }
        if ($offset >= $this->_size) {    // Offsets are zero-based.
            throw new Zend_Pdf_Exception('Attempt to move beyond end of data source',
                                         Zend_Pdf_Exception::MOVE_BEYOND_END_OF_FILE);
        }
        $this->_offset = $offset;
    }

    /**
     * Shifts the current read position within the data source by the specified
     * number of bytes.
     *
     * You may move forward (positive numbers) or backward (negative numbers).
     * Throws an exception you attempt to move before the beginning or beyond
     * the end of the data source.
     *
     * @param integer $byteCount Number of bytes to skip.
     * @throws Zend_Pdf_Exception
     */
    public function skipBytes($byteCount)
    {
        $this->moveToOffset($this->_offset + $byteCount);
    }

}
PKpG[�<�s	L	LPdf/Parser.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Array */
require_once 'Zend/Pdf/Element/Array.php';

/** Zend_Pdf_Element_String_Binary */
require_once 'Zend/Pdf/Element/String/Binary.php';

/** Zend_Pdf_Element_Boolean */
require_once 'Zend/Pdf/Element/Boolean.php';

/** Zend_Pdf_Element_Dictionary */
require_once 'Zend/Pdf/Element/Dictionary.php';

/** Zend_Pdf_Element_Name */
require_once 'Zend/Pdf/Element/Name.php';

/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Pdf_Element_Reference */
require_once 'Zend/Pdf/Element/Reference.php';

/** Zend_Pdf_Element_Object_Stream */
require_once 'Zend/Pdf/Element/Object/Stream.php';

/** Zend_Pdf_Element_String */
require_once 'Zend/Pdf/Element/String.php';

/** Zend_Pdf_Element_Null */
require_once 'Zend/Pdf/Element/Null.php';

/** Zend_Pdf_Element_Reference_Context */
require_once 'Zend/Pdf/Element/Reference/Context.php';

/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';

/** Zend_Pdf_Trailer_Keeper */
require_once 'Zend/Pdf/Trailer/Keeper.php';

/** Zend_Pdf_ElementFactory_Interface */
require_once 'Zend/Pdf/ElementFactory/Interface.php';

/** Zend_Pdf_PhpArray */
require_once 'Zend/Pdf/PhpArray.php';

/** Zend_Pdf_StringParser */
require_once 'Zend/Pdf/StringParser.php';

/** Zend_Pdf_Parser_Stream */
require_once 'Zend/Pdf/Parser/Stream.php';


/**
 * PDF file parser
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Parser
{
    /**
     * String parser
     *
     * @var Zend_Pdf_StringParser
     */
    private $_stringParser;

    /**
     * Last PDF file trailer
     *
     * @var Zend_Pdf_Trailer_Keeper
     */
    private $_trailer;


    /**
     * Get length of source PDF
     *
     * @return integer
     */
    public function getPDFLength()
    {
        return strlen($this->_stringParser->data);
    }

    /**
     * Get PDF String
     *
     * @return string
     */
    public function getPDFString()
    {
        return $this->_stringParser->data;
    }

    /**
     * Load XReference table and referenced objects
     *
     * @param integer $offset
     * @throws Zend_Pdf_Exception
     * @return Zend_Pdf_Trailer_Keeper
     */
    private function _loadXRefTable($offset)
    {
        $this->_stringParser->offset = $offset;

        $refTable = new Zend_Pdf_Element_Reference_Table();
        $context  = new Zend_Pdf_Element_Reference_Context($this->_stringParser, $refTable);
        $this->_stringParser->setContext($context);

        $nextLexeme = $this->_stringParser->readLexeme();
        if ($nextLexeme == 'xref') {
            /**
             * Common cross-reference table
             */
            $this->_stringParser->skipWhiteSpace();
            while ( ($nextLexeme = $this->_stringParser->readLexeme()) != 'trailer' ) {
                if (!ctype_digit($nextLexeme)) {
                    throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference table subheader values must contain only digits.', $this->_stringParser->offset-strlen($nextLexeme)));
                }
                $objNum = (int)$nextLexeme;

                $refCount = $this->_stringParser->readLexeme();
                if (!ctype_digit($refCount)) {
                    throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference table subheader values must contain only digits.', $this->_stringParser->offset-strlen($refCount)));
                }

                $this->_stringParser->skipWhiteSpace();
                while ($refCount > 0) {
                    $objectOffset = substr($this->_stringParser->data, $this->_stringParser->offset, 10);
                    if (!ctype_digit($objectOffset)) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Offset must contain only digits.', $this->_stringParser->offset));
                    }
                    // Force $objectOffset to be treated as decimal instead of octal number
                    for ($numStart = 0; $numStart < strlen($objectOffset)-1; $numStart++) {
                        if ($objectOffset[$numStart] != '0') {
                            break;
                        }
                    }
                    $objectOffset = substr($objectOffset, $numStart);
                    $this->_stringParser->offset += 10;

                    if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset));
                    }
                    $this->_stringParser->offset++;

                    $genNumber = substr($this->_stringParser->data, $this->_stringParser->offset, 5);
                    if (!ctype_digit($objectOffset)) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Offset must contain only digits.', $this->_stringParser->offset));
                    }
                    // Force $objectOffset to be treated as decimal instead of octal number
                    for ($numStart = 0; $numStart < strlen($genNumber)-1; $numStart++) {
                        if ($genNumber[$numStart] != '0') {
                            break;
                        }
                    }
                    $genNumber = substr($genNumber, $numStart);
                    $this->_stringParser->offset += 5;

                    if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset));
                    }
                    $this->_stringParser->offset++;

                    $inUseKey = $this->_stringParser->data[$this->_stringParser->offset];
                    $this->_stringParser->offset++;

                    switch ($inUseKey) {
                        case 'f':
                            // free entry
                            unset( $this->_refTable[$objNum . ' ' . $genNumber . ' R'] );
                            $refTable->addReference($objNum . ' ' . $genNumber . ' R',
                                                    $objectOffset,
                                                    false);
                            break;

                        case 'n':
                            // in-use entry

                            $refTable->addReference($objNum . ' ' . $genNumber . ' R',
                                                    $objectOffset,
                                                    true);
                    }

                    if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset));
                    }
                    $this->_stringParser->offset++;
                    if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) {
                        throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset));
                    }
                    $this->_stringParser->offset++;

                    $refCount--;
                    $objNum++;
                }
            }

            $trailerDictOffset = $this->_stringParser->offset;
            $trailerDict = $this->_stringParser->readElement();
            if (!$trailerDict instanceof Zend_Pdf_Element_Dictionary) {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.  Dictionary expected after \'trailer\' keyword.', $trailerDictOffset));
            }
        } else {
            $xrefStream = $this->_stringParser->getObject($offset, $context);

            if (!$xrefStream instanceof Zend_Pdf_Element_Object_Stream) {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.  Cross-reference stream expected.', $offset));
            }

            $trailerDict = $xrefStream->dictionary;
            if ($trailerDict->Type->value != 'XRef') {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.  Cross-reference stream object must have /Type property assigned to /XRef.', $offset));
            }
            if ($trailerDict->W === null  || $trailerDict->W->getType() != Zend_Pdf_Element::TYPE_ARRAY) {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross reference stream dictionary doesn\'t have W entry or it\'s not an array.', $offset));
            }

            $entryField1Size = $trailerDict->W->items[0]->value;
            $entryField2Size = $trailerDict->W->items[1]->value;
            $entryField3Size = $trailerDict->W->items[2]->value;

            if ($entryField2Size == 0 || $entryField3Size == 0) {
                throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Wrong W dictionary entry. Only type field of stream entries has default value and could be zero length.', $offset));
            }

            $xrefStreamData = &$xrefStream->value;

            if ($trailerDict->Index !== null) {
                if ($trailerDict->Index->getType() != Zend_Pdf_Element::TYPE_ARRAY) {
                    throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross reference stream dictionary Index entry must be an array.', $offset));
                }
                $sections = count($trailerDict->Index->items)/2;
            } else {
                $sections = 1;
            }

            $streamOffset = 0;

            $size    = $entryField1Size + $entryField2Size + $entryField3Size;
            $entries = strlen($xrefStreamData)/$size;

            for ($count = 0; $count < $sections; $count++) {
                if ($trailerDict->Index !== null) {
                    $objNum  = $trailerDict->Index->items[$count*2    ]->value;
                    $entries = $trailerDict->Index->items[$count*2 + 1]->value;
                } else {
                    $objNum  = 0;
                    $entries = $trailerDict->Size->value;
                }

                for ($count2 = 0; $count2 < $entries; $count2++) {
                    if ($entryField1Size == 0) {
                        $type = 1;
                    } else if ($entryField1Size == 1) { // Optimyze one-byte field case
                        $type = ord($xrefStreamData[$streamOffset++]);
                    } else {
                        $type = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField1Size);
                        $streamOffset += $entryField1Size;
                    }

                    if ($entryField2Size == 1) { // Optimyze one-byte field case
                        $field2 = ord($xrefStreamData[$streamOffset++]);
                    } else {
                        $field2 = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField2Size);
                        $streamOffset += $entryField2Size;
                    }

                    if ($entryField3Size == 1) { // Optimyze one-byte field case
                        $field3 = ord($xrefStreamData[$streamOffset++]);
                    } else {
                        $field3 = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField3Size);
                        $streamOffset += $entryField3Size;
                    }

                    switch ($type) {
                        case 0:
                            // Free object
                            $refTable->addReference($objNum . ' ' . $field3 . ' R', $field2, false);
                            // Debug output:
                            // echo "Free object - $objNum $field3 R, next free - $field2\n";
                            break;

                        case 1:
                            // In use object
                            $refTable->addReference($objNum . ' ' . $field3 . ' R', $field2, true);
                            // Debug output:
                            // echo "In-use object - $objNum $field3 R, offset - $field2\n";
                            break;

                        case 2:
                            // Object in an object stream
                            // Debug output:
                            // echo "Compressed object - $objNum 0 R, object stream - $field2 0 R, offset - $field3\n";
                            break;
                    }

                    $objNum++;
                }
            }

            // $streamOffset . ' ' . strlen($xrefStreamData) . "\n";
            // "$entries\n";
            throw new Zend_Pdf_Exception('Cross-reference streams are not supported yet.');
        }


        $trailerObj = new Zend_Pdf_Trailer_Keeper($trailerDict, $context);
        if ($trailerDict->Prev instanceof Zend_Pdf_Element_Numeric ||
            $trailerDict->Prev instanceof Zend_Pdf_Element_Reference ) {
            $trailerObj->setPrev($this->_loadXRefTable($trailerDict->Prev->value));
            $context->getRefTable()->setParent($trailerObj->getPrev()->getRefTable());
        }

        /**
         * We set '/Prev' dictionary property to the current cross-reference section offset.
         * It doesn't correspond to the actual data, but is true when trailer will be used
         * as a trailer for next generated PDF section.
         */
        $trailerObj->Prev = new Zend_Pdf_Element_Numeric($offset);

        return $trailerObj;
    }


    /**
     * Get Trailer object
     *
     * @return Zend_Pdf_Trailer_Keeper
     */
    public function getTrailer()
    {
        return $this->_trailer;
    }

    /**
     * Object constructor
     *
     * Note: PHP duplicates string, which is sent by value, only of it's updated.
     * Thus we don't need to care about overhead
     *
     * @param mixed $source
     * @param Zend_Pdf_ElementFactory_Interface $factory
     * @param boolean $load
     * @throws Zend_Exception
     */
    public function __construct($source, Zend_Pdf_ElementFactory_Interface $factory, $load)
    {
        if ($load) {
            if (($pdfFile = @fopen($source, 'rb')) === false ) {
                throw new Zend_Pdf_Exception( "Can not open '$source' file for reading." );
            }

            $byteCount = filesize($source);

            $data = fread($pdfFile, $byteCount);
            $byteCount -= strlen($data);
            while ( $byteCount > 0 && ($nextBlock = fread($pdfFile, $byteCount)) != false ) {
                $data .= $nextBlock;
                $byteCount -= strlen($nextBlock);
            }
            fclose($pdfFile);

            $this->_stringParser = new Zend_Pdf_StringParser($data, $factory);
        } else {
            $this->_stringParser = new Zend_Pdf_StringParser($source, $factory);
        }

        $pdfVersionComment = $this->_stringParser->readComment();
        if (substr($pdfVersionComment, 0, 5) != '%PDF-') {
            throw new Zend_Pdf_Exception('File is not a PDF.');
        }

        $pdfVersion = (float)substr($pdfVersionComment, 5);
        if ($pdfVersion < 0.9 || $pdfVersion >= 1.61) {
            /**
             * @todo
             * To support PDF versions 1.5 (Acrobat 6) and PDF version 1.7 (Acrobat 7)
             * Stream compression filter must be implemented (for compressed object streams).
             * Cross reference streams must be implemented
             */
            throw new Zend_Pdf_Exception(sprintf('Unsupported PDF version. Zend_Pdf supports PDF 1.0-1.4. Current version - \'%f\'', $pdfVersion));
        }

        $this->_stringParser->offset = strrpos($this->_stringParser->data, '%%EOF');
        if ($this->_stringParser->offset === false ||
            strlen($this->_stringParser->data) - $this->_stringParser->offset > 7) {
            throw new Zend_Pdf_Exception('Pdf file syntax error. End-of-fle marker expected at the end of file.');
        }

        $this->_stringParser->offset--;
        /**
         * Go to end of cross-reference table offset
         */
        while (Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) )&&
               ($this->_stringParser->offset > 0)) {
            $this->_stringParser->offset--;
        }
        /**
         * Go to the start of cross-reference table offset
         */
        while ( (!Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) ))&&
               ($this->_stringParser->offset > 0)) {
            $this->_stringParser->offset--;
        }
        /**
         * Go to the end of 'startxref' keyword
         */
        while (Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) )&&
               ($this->_stringParser->offset > 0)) {
            $this->_stringParser->offset--;
        }
        /**
         * Go to the white space (eol marker) before 'startxref' keyword
         */
        $this->_stringParser->offset -= 9;

        $nextLexeme = $this->_stringParser->readLexeme();
        if ($nextLexeme != 'startxref') {
            throw new Zend_Pdf_Exception(sprintf('Pdf file syntax error. \'startxref\' keyword expected. Offset - 0x%X.', $this->_stringParser->offset-strlen($nextLexeme)));
        }

        $startXref = $this->_stringParser->readLexeme();
        if (!ctype_digit($startXref)) {
            throw new Zend_Pdf_Exception(sprintf('Pdf file syntax error. Cross-reference table offset must contain only digits. Offset - 0x%X.', $this->_stringParser->offset-strlen($nextLexeme)));
        }

        $this->_trailer = $this->_loadXRefTable($startXref);
        $factory->setObjectCount($this->_trailer->Size->value);
    }


    /**
     * Object destructor
     */
    public function __destruct()
    {
        $this->_stringParser->cleanUp();
    }
}
PKpG[�zm�,,Pdf/Cmap.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Cmap_ByteEncoding */
require_once 'Zend/Pdf/Cmap/ByteEncoding.php';

/** Zend_Pdf_Cmap_ByteEncoding_Static */
require_once 'Zend/Pdf/Cmap/ByteEncoding/Static.php';

/** Zend_Pdf_Cmap_SegmentToDelta */
require_once 'Zend/Pdf/Cmap/SegmentToDelta.php';

/** Zend_Pdf_Cmap_TrimmedTable */
require_once 'Zend/Pdf/Cmap/TrimmedTable.php';


/**
 * Abstract helper class for {@link Zend_Pdf_Resource_Font} which manages font
 * character maps.
 *
 * Defines the public interface for concrete subclasses which are responsible
 * for mapping Unicode characters to the font's glyph numbers. Also provides
 * shared utility methods.
 *
 * Cmap objects should ordinarily be obtained through the factory method
 * {@link cmapWithTypeData()}.
 *
 * The supported character map types are those found in the OpenType spec. For
 * additional detail on the internal binary format of these tables, see:
 * <ul>
 *  <li>{@link http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6cmap.html}
 *  <li>{@link http://www.microsoft.com/OpenType/OTSpec/cmap.htm}
 *  <li>{@link http://partners.adobe.com/public/developer/opentype/index_cmap.html}
 * </ul>
 *
 * @todo Write code for Zend_Pdf_FontCmap_HighByteMapping class.
 * @todo Write code for Zend_Pdf_FontCmap_MixedCoverage class.
 * @todo Write code for Zend_Pdf_FontCmap_TrimmedArray class.
 * @todo Write code for Zend_Pdf_FontCmap_SegmentedCoverage class.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Cmap
{
  /**** Class Constants ****/


  /* Cmap Table Types */

    /**
     * Byte Encoding character map table type.
     */
    const TYPE_BYTE_ENCODING = 0x00;

    /**
     * High Byte Mapping character map table type.
     */
    const TYPE_HIGH_BYTE_MAPPING = 0x02;

    /**
     * Segment Value to Delta Mapping character map table type.
     */
    const TYPE_SEGMENT_TO_DELTA = 0x04;

    /**
     * Trimmed Table character map table type.
     */
    const TYPE_TRIMMED_TABLE = 0x06;

    /**
     * Mixed Coverage character map table type.
     */
    const TYPE_MIXED_COVERAGE = 0x08;

    /**
     * Trimmed Array character map table type.
     */
    const TYPE_TRIMMED_ARRAY = 0x0a;

    /**
     * Segmented Coverage character map table type.
     */
    const TYPE_SEGMENTED_COVERAGE = 0x0c;

    /**
     * Static Byte Encoding character map table type. Variant of
     * {@link TYPE_BYTEENCODING}.
     */
    const TYPE_BYTE_ENCODING_STATIC = 0xf1;

    /**
     * Unknown character map table type.
     */
    const TYPE_UNKNOWN = 0xff;


  /* Special Glyph Names */

    /**
     * Glyph representing missing characters.
     */
    const MISSING_CHARACTER_GLYPH = 0x00;



  /**** Public Interface ****/


  /* Factory Methods */

    /**
     * Instantiates the appropriate concrete subclass based on the type of cmap
     * table and returns the instance.
     *
     * The cmap type must be one of the following values:
     * <ul>
     *  <li>{@link Zend_Pdf_Cmap::TYPE_BYTE_ENCODING}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_HIGH_BYTE_MAPPING}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_MIXED_COVERAGE}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_TRIMMED_ARRAY}
     *  <li>{@link Zend_Pdf_Cmap::TYPE_SEGMENTED_COVERAGE}
     * </ul>
     *
     * Throws an exception if the table type is invalid or the cmap table data
     * cannot be validated.
     *
     * @param integer $cmapType Type of cmap.
     * @param mixed $cmapData Cmap table data. Usually a string or array.
     * @return Zend_Pdf_Cmap
     * @throws Zend_Pdf_Exception
     */
    public static function cmapWithTypeData($cmapType, $cmapData)
    {
        switch ($cmapType) {
            case Zend_Pdf_Cmap::TYPE_BYTE_ENCODING:
                return new Zend_Pdf_Cmap_ByteEncoding($cmapData);

            case Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC:
                return new Zend_Pdf_Cmap_ByteEncoding_Static($cmapData);

            case Zend_Pdf_Cmap::TYPE_HIGH_BYTE_MAPPING:
                throw new Zend_Pdf_Exception('High byte mapping cmap currently unsupported',
                                             Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED);

            case Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA:
                return new Zend_Pdf_Cmap_SegmentToDelta($cmapData);

            case Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE:
                return new Zend_Pdf_Cmap_TrimmedTable($cmapData);

            case Zend_Pdf_Cmap::TYPE_MIXED_COVERAGE:
                throw new Zend_Pdf_Exception('Mixed coverage cmap currently unsupported',
                                             Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED);

            case Zend_Pdf_Cmap::TYPE_TRIMMED_ARRAY:
                throw new Zend_Pdf_Exception('Trimmed array cmap currently unsupported',
                                             Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED);

            case Zend_Pdf_Cmap::TYPE_SEGMENTED_COVERAGE:
                throw new Zend_Pdf_Exception('Segmented coverage cmap currently unsupported',
                                             Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED);

            default:
                throw new Zend_Pdf_Exception("Unknown cmap type: $cmapType",
                                             Zend_Pdf_Exception::CMAP_UNKNOWN_TYPE);
        }
    }


  /* Abstract Methods */

    /**
     * Object constructor
     *
     * Parses the raw binary table data. Throws an exception if the table is
     * malformed.
     *
     * @param string $cmapData Raw binary cmap table data.
     * @throws Zend_Pdf_Exception
     */
    abstract public function __construct($cmapData);

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    abstract public function glyphNumbersForCharacters($characterCodes);

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    abstract public function glyphNumberForCharacter($characterCode);

    /**
     * Returns an array containing the Unicode characters that have entries in
     * this character map.
     *
     * @return array Unicode character codes.
     */
    abstract public function getCoveredCharacters();

    /**
     * Returns an array containing the glyphs numbers that have entries in this character map.
     * Keys are Unicode character codes (integers)
     * 
     * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
     * call, but this method do it in more effective way (prepare complete list instead of searching 
     * glyph for each character code).
     *
     * @internal
     * @return array Array representing <Unicode character code> => <glyph number> pairs.
     */
    abstract public function getCoveredCharactersGlyphs();


  /**** Internal Methods ****/


  /* Internal Utility Methods */

    /**
     * Extracts a signed 2-byte integer from a string.
     *
     * Integers are always big-endian. Throws an exception if the index is out
     * of range.
     *
     * @param string &$data
     * @param integer $index Position in string of integer.
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    protected function _extractInt2(&$data, $index)
    {
        if (($index < 0) | (($index + 1) > strlen($data))) {
            throw new Zend_Pdf_Exception("Index out of range: $index",
                                         Zend_Pdf_Exception::INDEX_OUT_OF_RANGE);
        }
        $number = ord($data[$index]);
        if (($number & 0x80) == 0x80) {    // negative
            $number = ~((((~ $number) & 0xff) << 8) | ((~ ord($data[++$index])) & 0xff));
        } else {
            $number = ($number << 8) | ord($data[++$index]);
        }
        return $number;
    }

    /**
     * Extracts an unsigned 2-byte integer from a string.
     *
     * Integers are always big-endian. Throws an exception if the index is out
     * of range.
     *
     * @param string &$data
     * @param integer $index Position in string of integer.
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    protected function _extractUInt2(&$data, $index)
    {
        if (($index < 0) | (($index + 1) > strlen($data))) {
            throw new Zend_Pdf_Exception("Index out of range: $index",
                                         Zend_Pdf_Exception::INDEX_OUT_OF_RANGE);
        }
        $number = (ord($data[$index]) << 8) | ord($data[++$index]);
        return $number;
    }

    /**
     * Extracts an unsigned 4-byte integer from a string.
     *
     * Integers are always big-endian. Throws an exception if the index is out
     * of range.
     *
     * NOTE: If you ask for a 4-byte unsigned integer on a 32-bit machine, the
     * resulting value WILL BE SIGNED because PHP uses signed integers internally
     * for everything. To guarantee portability, be sure to use bitwise or
     * similar operators on large integers!
     *
     * @param string &$data
     * @param integer $index Position in string of integer.
     * @return integer
     * @throws Zend_Pdf_Exception
     */
    protected function _extractUInt4(&$data, $index)
    {
        if (($index < 0) | (($index + 3) > strlen($data))) {
            throw new Zend_Pdf_Exception("Index out of range: $index",
                                         Zend_Pdf_Exception::INDEX_OUT_OF_RANGE);
        }
        $number = (ord($data[$index]) << 24) | (ord($data[++$index]) << 16) |
                  (ord($data[++$index]) << 8) | ord($data[++$index]);
        return $number;
    }

}
PKpG[���,��Pdf/Element.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';


/**
 * PDF file element implementation
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Pdf_Element
{
    const TYPE_BOOL        = 1;
    const TYPE_NUMERIC     = 2;
    const TYPE_STRING      = 3;
    const TYPE_NAME        = 4;
    const TYPE_ARRAY       = 5;
    const TYPE_DICTIONARY  = 6;
    const TYPE_STREAM      = 7;
    const TYPE_NULL        = 11;

    /**
     * Reference to the top level indirect object, which contains this element.
     *
     * @var Zend_Pdf_Element_Object
     */
    private $_parentObject = null;

    /**
     * Return type of the element.
     * See ZPdfPDFConst for possible values
     *
     * @return integer
     */
    abstract public function getType();

    /**
     * Convert element to a string, which can be directly
     * written to a PDF file.
     *
     * $factory parameter defines operation context.
     *
     * @param Zend_Pdf_Factory $factory
     * @return string
     */
    abstract public function toString($factory = null);


    /**
     * Set top level parent indirect object.
     *
     * @param Zend_Pdf_Element_Object $parent
     */
    public function setParentObject(Zend_Pdf_Element_Object &$parent)
    {
        $this->_parentObject = &$parent;
    }


    /**
     * Get top level parent indirect object.
     *
     * @return Zend_Pdf_Element_Object
     */
    public function getParentObject()
    {
        return $this->_parentObject;
    }


    /**
     * Mark object as modified, to include it into new PDF file segment.
     *
     * We don't automate this action to keep control on PDF update process.
     * All new objects are treated as "modified" automatically.
     */
    public function touch()
    {
        if ($this->_parentObject !== null) {
            $this->_parentObject->touch();
        }
    }

    /**
     * Clean up resources, used by object
     */
    public function cleanUp()
    {
        // Do nothing
    }

    /**
     * Convert PDF element to PHP type.
     *
     * @return mixed
     */
    public function toPhp()
    {
        return $this->value;
    }

    /**
     * Convert PHP value into PDF element.
     *
     * @param mixed $input
     * @return Zend_Pdf_Element
     */
    public static function phpToPdf($input)
    {
        if (is_numeric($input)) {
            return new Zend_Pdf_Element_Numeric($input);
        } else if (is_bool($input)) {
            return new Zend_Pdf_Element_Boolean($input);
        } else if (is_array($input)) {
            $pdfElementsArray = array();
            $isDictionary = false;

            foreach ($input as $key => $value) {
                if (is_string($key)) {
                    $isDictionary = true;
                }
                $pdfElementsArray[$key] = Zend_Pdf_Element::phpToPdf($value);
            }

            if ($isDictionary) {
                return new Zend_Pdf_Element_Dictionary($pdfElementsArray);
            } else {
                return new Zend_Pdf_Element_Array($pdfElementsArray);
            }
        } else {
            return new Zend_Pdf_Element_String((string)$input);
        }
    }
}

PKpG[�����
Pdf/Style.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';


/** Zend_Pdf_Element_Numeric */
require_once 'Zend/Pdf/Element/Numeric.php';

/** Zend_Pdf_Element_Array */
require_once 'Zend/Pdf/Element/Array.php';

/** Zend_Pdf_Resource_Font */
require_once 'Zend/Pdf/Resource/Font.php';


/**
 * Style object.
 * Style object doesn't directly correspond to any PDF file object.
 * It's utility class, used as a container for style information.
 * It's used by Zend_Pdf_Page class in draw operations.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Style
{
    /**
     * Fill color.
     * Used to fill geometric shapes or text.
     *
     * @var Zend_Pdf_Color|null
     */
    private $_fillColor = null;

    /**
     * Line color.
     * Current color, used for lines and font outlines.
     *
     * @var Zend_Pdf_Color|null
     */

    private $_color;

    /**
     * Line width.
     *
     * @var Zend_Pdf_Element_Numeric
     */
    private $_lineWidth;

    /**
     * Array which describes line dashing pattern.
     * It's array of numeric:
     * array($on_length, $off_length, $on_length, $off_length, ...)
     *
     * @var array
     */
    private $_lineDashingPattern;

    /**
     * Line dashing phase
     *
     * @var float
     */
    private $_lineDashingPhase;

    /**
     * Current font
     *
     * @var Zend_Pdf_Resource_Font
     */
    private $_font;

    /**
     * Font size
     *
     * @var float
     */
    private $_fontSize;



    /**
     * Create style.
     *
     * @param Zend_Pdf_Style $anotherStyle
     */
    public function __construct($anotherStyle = null)
    {
        if ($anotherStyle !== null) {
            $this->_fillColor          = $anotherStyle->_fillColor;
            $this->_color              = $anotherStyle->_color;
            $this->_lineWidth          = $anotherStyle->_lineWidth;
            $this->_lineDashingPattern = $anotherStyle->_lineDashingPattern;
            $this->_lineDashingPhase   = $anotherStyle->_lineDashingPhase;
            $this->_font               = $anotherStyle->_font;
            $this->_fontSize           = $anotherStyle->_fontSize;
        }
    }


    /**
     * Set fill color.
     *
     * @param Zend_Pdf_Color $color
     */
    public function setFillColor(Zend_Pdf_Color $color)
    {
        $this->_fillColor = $color;
    }

    /**
     * Set line color.
     *
     * @param Zend_Pdf_Color $color
     */
    public function setLineColor(Zend_Pdf_Color $color)
    {
        $this->_color = $color;
    }

    /**
     * Set line width.
     *
     * @param float $width
     */
    public function setLineWidth($width)
    {
        $this->_lineWidth = new Zend_Pdf_Element_Numeric($width);
    }


    /**
     * Set line dashing pattern
     *
     * @param array $pattern
     * @param float $phase
     */
    public function setLineDashingPattern($pattern, $phase = 0)
    {
        if ($pattern === Zend_Pdf_Page::LINE_DASHING_SOLID) {
            $pattern = array();
            $phase   = 0;
        }

        $this->_lineDashingPattern = $pattern;
        $this->_lineDashingPhase   = new Zend_Pdf_Element_Numeric($phase);
    }


    /**
     * Set current font.
     *
     * @param Zend_Pdf_Resource_Font $font
     * @param float $fontSize
     */
    public function setFont(Zend_Pdf_Resource_Font $font, $fontSize)
    {
        $this->_font = $font;
        $this->_fontSize = $fontSize;
    }

    /**
     * Modify current font size
     *
     * @param float $fontSize
     */
    public function setFontSize($fontSize)
    {
        $this->_fontSize = $fontSize;
    }

    /**
     * Get fill color.
     *
     * @return Zend_Pdf_Color|null
     */
    public function getFillColor()
    {
        return $this->_fillColor;
    }

    /**
     * Get line color.
     *
     * @return Zend_Pdf_Color|null
     */
    public function getLineColor()
    {
        return $this->_color;
    }

    /**
     * Get line width.
     *
     * @return float
     */
    public function getLineWidth()
    {
        $this->_lineWidth->value;
    }

    /**
     * Get line dashing pattern
     *
     * @return array
     */
    public function getLineDashingPattern()
    {
        return $this->_lineDashingPattern;
    }


    /**
     * Get current font.
     *
     * @return Zend_Pdf_Resource_Font $font
     */
    public function getFont()
    {
        return $this->_font;
    }

    /**
     * Get current font size
     *
     * @return float $fontSize
     */
    public function getFontSize()
    {
        return $this->_fontSize;
    }

    /**
     * Get line dashing phase
     *
     * @return float
     */
    public function getLineDashingPhase()
    {
        return $this->_lineDashingPhase->value;
    }


    /**
     * Dump style to a string, which can be directly inserted into content stream
     *
     * @return string
     */
    public function instructions()
    {
        $instructions = '';

        if ($this->_fillColor !== null) {
            $instructions .= $this->_fillColor->instructions(false);
        }

        if ($this->_color !== null) {
            $instructions .= $this->_color->instructions(true);
        }

        if ($this->_lineWidth !== null) {
            $instructions .= $this->_lineWidth->toString() . " w\n";
        }

        if ($this->_lineDashingPattern !== null) {
            $dashPattern = new Zend_Pdf_Element_Array();

            foreach ($this->_lineDashingPattern as $dashItem) {
                $dashElement = new Zend_Pdf_Element_Numeric($dashItem);
                $dashPattern->items[] = $dashElement;
            }

            $instructions .= $dashPattern->toString() . ' '
                           . $this->_lineDashingPhase->toString() . " d\n";
        }

        return $instructions;
    }

}

PKpG[�m��Pdf/UpdateInfoContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';

/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';

/** Zend_Memory */
require_once 'Zend/Memory.php';


/**
 * Container which collects updated object info.
 *
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_UpdateInfoContainer
{
    /**
     * Object number
     *
     * @var integer
     */
    private $_objNum;

    /**
     * Generation number
     *
     * @var integer
     */
    private $_genNum;


    /**
     * Flag, which signals, that object is free
     *
     * @var boolean
     */
    private $_isFree;

    /**
     * String representation of the object
     *
     * @var Zend_Memory_Container|null
     */
    private $_dump = null;

    /**
     * Object constructor
     *
     * @param integer $objCount
     */
    public function __construct($objNum, $genNum, $isFree, $dump = null)
    {
        $this->_objNum = $objNum;
        $this->_genNum = $genNum;
        $this->_isFree = $isFree;

        if ($dump !== null) {
            if (strlen($dump) > 1024) {
                $this->_dump = Zend_Pdf::getMemoryManager()->create($dump);
            } else {
                $this->_dump = $dump;
            }
        }
    }


    /**
     * Get object number
     *
     * @return integer
     */
    public function getObjNum()
    {
        return $this->_objNum;
    }

    /**
     * Get generation number
     *
     * @return integer
     */
    public function getGenNum()
    {
        return $this->_genNum;
    }

    /**
     * Check, that object is free
     *
     * @return boolean
     */
    public function isFree()
    {
        return $this->_isFree;
    }

    /**
     * Get string representation of the object
     *
     * @return string
     */
    public function getObjectDump()
    {
        if ($this->_dump === null) {
            return '';
        }

        if (is_string($this->_dump)) {
            return $this->_dump;
        }

        return $this->_dump->getRef();
    }
}

PKpG[�!&g&g
OpenId.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: OpenId.php 12972 2008-12-01 13:26:36Z dmitry $
 */

/**
 * @see Zend_OpenId_Exception
 */
require_once "Zend/OpenId/Exception.php";

/**
 * @see Zend_Controller_Response_Abstract
 */
require_once "Zend/Controller/Response/Abstract.php";

/**
 * Static class that contains common utility functions for
 * {@link Zend_OpenId_Consumer} and {@link Zend_OpenId_Provider}.
 *
 * This class implements common utility functions that are used by both
 * Consumer and Provider. They include functions for Diffie-Hellman keys
 * generation and exchange, URL normalization, HTTP redirection and some others.
 *
 * @category   Zend
 * @package    Zend_OpenId
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_OpenId
{
    /**
     * Default Diffie-Hellman key generator (1024 bit)
     */
    const DH_P   = 'dcf93a0b883972ec0e19989ac5a2ce310e1d37717e8d9571bb7623731866e61ef75a2e27898b057f9891c2e27a639c3f29b60814581cd3b2ca3986d2683705577d45c2e7e52dc81c7a171876e5cea74b1448bfdfaf18828efd2519f14e45e3826634af1949e5b535cc829a483b8a76223e5d490a257f05bdff16f2fb22c583ab';

    /**
     * Default Diffie-Hellman prime number (should be 2 or 5)
     */
    const DH_G   = '02';

    /**
     * OpenID 2.0 namespace. All OpenID 2.0 messages MUST contain variable
     * openid.ns with its value.
     */
    const NS_2_0 = 'http://specs.openid.net/auth/2.0';

    /**
     * Allows enable/disable stoping execution of PHP script after redirect()
     */
    static public $exitOnRedirect = true;
   
    /**
     * Alternative request URL that can be used to override the default 
     * selfUrl() response
     */
    static public $selfUrl = null;

    /**
     * Sets alternative request URL that can be used to override the default
     * selfUrl() response
     *
     * @param string $selfUrl the URL to be set
     * @return string the old value of overriding URL
     */
    static public function setSelfUrl($selfUrl = null)
    {
    	$ret = self::$selfUrl;
		self::$selfUrl = $selfUrl;
		return $ret;
	}

    /**
     * Returns a full URL that was requested on current HTTP request.
     *
     * @return string
     */
    static public function selfUrl()
    {
    	if (self::$selfUrl !== null) {
			return self::$selfUrl;
        } if (isset($_SERVER['SCRIPT_URI'])) {
            return $_SERVER['SCRIPT_URI'];
        }
        $url = '';
        $port = '';
        if (isset($_SERVER['HTTP_HOST'])) {
            if (($pos = strpos($_SERVER['HTTP_HOST'], ':')) === false) {
                if (isset($_SERVER['SERVER_PORT'])) {
                    $port = ':' . $_SERVER['SERVER_PORT'];
                }
                $url = $_SERVER['HTTP_HOST'];
            } else {
                $url = substr($_SERVER['HTTP_HOST'], 0, $pos);
                $port = substr($_SERVER['HTTP_HOST'], $pos);
            }
        } else if (isset($_SERVER['SERVER_NAME'])) {
            $url = $_SERVER['SERVER_NAME'];
            if (isset($_SERVER['SERVER_PORT'])) {
                $port = ':' . $_SERVER['SERVER_PORT'];
            }
        }
        if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
            $url = 'https://' . $url;
            if ($port == ':443') {
                $port = '';
            }
        } else {
            $url = 'http://' . $url;
            if ($port == ':80') {
                $port = '';
            }
        }

        $url .= $port;
        if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
            $url .= $_SERVER['HTTP_X_REWRITE_URL'];
        } elseif (isset($_SERVER['REQUEST_URI'])) {
            $query = strpos($_SERVER['REQUEST_URI'], '?');
            if ($query === false) {
                $url .= $_SERVER['REQUEST_URI'];
            } else {
                $url .= substr($_SERVER['REQUEST_URI'], 0, $query);
            }
        } else if (isset($_SERVER['SCRIPT_URL'])) {
            $url .= $_SERVER['SCRIPT_URL'];
        } else if (isset($_SERVER['REDIRECT_URL'])) {
            $url .= $_SERVER['REDIRECT_URL'];
        } else if (isset($_SERVER['PHP_SELF'])) {
            $url .= $_SERVER['PHP_SELF'];
        } else if (isset($_SERVER['SCRIPT_NAME'])) {
            $url .= $_SERVER['SCRIPT_NAME'];
            if (isset($_SERVER['PATH_INFO'])) {
                $url .= $_SERVER['PATH_INFO'];
            }
        }
        return $url;
    }

    /**
     * Returns an absolute URL for the given one
     *
     * @param string $url absilute or relative URL
     * @return string
     */
    static public function absoluteUrl($url)
    {
        if (empty($url)) {
            return Zend_OpenId::selfUrl();
        } else if (!preg_match('|^([^:]+)://|', $url)) {
            if (preg_match('|^([^:]+)://([^:@]*(?:[:][^@]*)?@)?([^/:@?#]*)(?:[:]([^/?#]*))?(/[^?]*)?((?:[?](?:[^#]*))?(?:#.*)?)$|', Zend_OpenId::selfUrl(), $reg)) {
                $scheme = $reg[1];
                $auth = $reg[2];
                $host = $reg[3];
                $port = $reg[4];
                $path = $reg[5];
                $query = $reg[6];
                if ($url[0] == '/') {
                    return $scheme
                        . '://'
                        . $auth
                        . $host
                        . (empty($port) ? '' : (':' . $port))
                        . $url;
                } else {
                    $dir = dirname($path);
                    return $scheme
                        . '://'
                        . $auth
                        . $host
                        . (empty($port) ? '' : (':' . $port))
                        . (strlen($dir) > 1 ? $dir : '')
                        . '/'
                        . $url;
                }
            }
        }
        return $url;
    }

    /**
     * Converts variable/value pairs into URL encoded query string
     *
     * @param array $params variable/value pairs
     * @return string URL encoded query string
     */
    static public function paramsToQuery($params)
    {
        foreach($params as $key => $value) {
            if (isset($query)) {
                $query .= '&' . $key . '=' . urlencode($value);
            } else {
                $query = $key . '=' . urlencode($value);
            }
        }
        return isset($query) ? $query : '';
    }

    /**
     * Normalizes URL according to RFC 3986 to use it in comparison operations.
     * The function gets URL argument by reference and modifies it.
     * It returns true on success and false of failure.
     *
     * @param string &$id url to be normalized
     * @return bool
     */
    static public function normalizeUrl(&$id)
    {
        // RFC 3986, 6.2.2.  Syntax-Based Normalization

        // RFC 3986, 6.2.2.2 Percent-Encoding Normalization
        $i = 0;
        $n = strlen($id);
        $res = '';
        while ($i < $n) {
            if ($id[$i] == '%') {
                if ($i + 2 >= $n) {
                    return false;
                }
                ++$i;
                if ($id[$i] >= '0' && $id[$i] <= '9') {
                    $c = ord($id[$i]) - ord('0');
                } else if ($id[$i] >= 'A' && $id[$i] <= 'F') {
                    $c = ord($id[$i]) - ord('A') + 10;
                } else if ($id[$i] >= 'a' && $id[$i] <= 'f') {
                    $c = ord($id[$i]) - ord('a') + 10;
                } else {
                    return false;
                }
                ++$i;
                if ($id[$i] >= '0' && $id[$i] <= '9') {
                    $c = ($c << 4) | (ord($id[$i]) - ord('0'));
                } else if ($id[$i] >= 'A' && $id[$i] <= 'F') {
                    $c = ($c << 4) | (ord($id[$i]) - ord('A') + 10);
                } else if ($id[$i] >= 'a' && $id[$i] <= 'f') {
                    $c = ($c << 4) | (ord($id[$i]) - ord('a') + 10);
                } else {
                    return false;
                }
                ++$i;
                $ch = chr($c);
                if (($ch >= 'A' && $ch <= 'Z') ||
                    ($ch >= 'a' && $ch <= 'z') ||
                    $ch == '-' ||
                    $ch == '.' ||
                    $ch == '_' ||
                    $ch == '~') {
                    $res .= $ch;
                } else {
                    $res .= '%';
                    if (($c >> 4) < 10) {
                        $res .= chr(($c >> 4) + ord('0'));
                    } else {
                        $res .= chr(($c >> 4) - 10 + ord('A'));
                    }
                    $c = $c & 0xf;
                    if ($c < 10) {
                        $res .= chr($c + ord('0'));
                    } else {
                        $res .= chr($c - 10 + ord('A'));
                    }
                }
            } else {
                $res .= $id[$i++];
            }
        }

        if (!preg_match('|^([^:]+)://([^:@]*(?:[:][^@]*)?@)?([^/:@?#]*)(?:[:]([^/?#]*))?(/[^?#]*)?((?:[?](?:[^#]*))?)((?:#.*)?)$|', $res, $reg)) {
            return false;
        }
        $scheme = $reg[1];
        $auth = $reg[2];
        $host = $reg[3];
        $port = $reg[4];
        $path = $reg[5];
        $query = $reg[6];
        $fragment = $reg[7]; /* strip it */

        if (empty($scheme) || empty($host)) {
            return false;
        }

        // RFC 3986, 6.2.2.1.  Case Normalization
        $scheme = strtolower($scheme);
        $host = strtolower($host);

        // RFC 3986, 6.2.2.3.  Path Segment Normalization
        if (!empty($path)) {
            $i = 0;
            $n = strlen($path);
            $res = "";
            while ($i < $n) {
                if ($path[$i] == '/') {
                    ++$i;
                    while ($i < $n && $path[$i] == '/') {
                        ++$i;
                    }
                    if ($i < $n && $path[$i] == '.') {
                        ++$i;
                        if ($i < $n && $path[$i] == '.') {
                            ++$i;
                            if ($i == $n || $path[$i] == '/') {
                                if (($pos = strrpos($res, '/')) !== false) {
                                    $res = substr($res, 0, $pos);
                                }
                            } else {
                                    $res .= '/..';
                            }
                        } else if ($i != $n && $path[$i] != '/') {
                            $res .= '/.';
                        }
                    } else {
                        $res .= '/';
                    }
                } else {
                    $res .= $path[$i++];
                }
            }
            $path = $res;
        }

        // RFC 3986,6.2.3.  Scheme-Based Normalization
        if ($scheme == 'http') {
            if ($port == 80) {
                $port = '';
            }
        } else if ($scheme == 'https') {
            if ($port == 443) {
                $port = '';
            }
        }
        if (empty($path)) {
            $path = '/';
        }

        $id = $scheme
            . '://'
            . $auth
            . $host
            . (empty($port) ? '' : (':' . $port))
            . $path
            . $query;
        return true;
    }

    /**
     * Normalizes OpenID identifier that can be URL or XRI name.
     * Returns true on success and false of failure.
     *
     * Normalization is performed according to the following rules:
     * 1. If the user's input starts with one of the "xri://", "xri://$ip*",
     *    or "xri://$dns*" prefixes, they MUST be stripped off, so that XRIs
     *    are used in the canonical form, and URI-authority XRIs are further
     *    considered URL identifiers.
     * 2. If the first character of the resulting string is an XRI Global
     *    Context Symbol ("=", "@", "+", "$", "!"), then the input SHOULD be
     *    treated as an XRI.
     * 3. Otherwise, the input SHOULD be treated as an http URL; if it does
     *    not include a "http" or "https" scheme, the Identifier MUST be
     *    prefixed with the string "http://".
     * 4. URL identifiers MUST then be further normalized by both following
     *    redirects when retrieving their content and finally applying the
     *    rules in Section 6 of [RFC3986] to the final destination URL.
     * @param string &$id identifier to be normalized
     * @return bool
     */
    static public function normalize(&$id)
    {
        $id = trim($id);
        if (strlen($id) === 0) {
            return true;
        }

        // 7.2.1
        if (strpos($id, 'xri://$ip*') === 0) {
            $id = substr($id, strlen('xri://$ip*'));
        } else if (strpos($id, 'xri://$dns*') === 0) {
            $id = substr($id, strlen('xri://$dns*'));
        } else if (strpos($id, 'xri://') === 0) {
            $id = substr($id, strlen('xri://'));
        }

        // 7.2.2
        if ($id[0] == '=' ||
            $id[0] == '@' ||
            $id[0] == '+' ||
            $id[0] == '$' ||
            $id[0] == '!') {
            return true;
        }

        // 7.2.3
        if (strpos($id, "://") === false) {
            $id = 'http://' . $id;
        }

        // 7.2.4
        return self::normalizeURL($id);
    }

    /**
     * Performs a HTTP redirection to specified URL with additional data.
     * It may generate redirected request using GET or POST HTTP method.
     * The function never returns.
     *
     * @param string $url URL to redirect to
     * @param array $params additional variable/value pairs to send
     * @param Zend_Controller_Response_Abstract $response
     * @param string $method redirection method ('GET' or 'POST')
     */
    static public function redirect($url, $params = null,
        Zend_Controller_Response_Abstract $response = null, $method = 'GET')
    {
        $url = Zend_OpenId::absoluteUrl($url);
        $body = "";
        if (null === $response) {
            require_once "Zend/Controller/Response/Http.php";
            $response = new Zend_Controller_Response_Http();
        }

        if ($method == 'POST') {
            $body = "<html><body onLoad=\"document.forms[0].submit();\">\n";
            $body .= "<form method=\"POST\" action=\"$url\">\n";
            if (is_array($params) && count($params) > 0) {
                foreach($params as $key => $value) {
                    $body .= '<input type="hidden" name="' . $key . '" value="' . $value . "\">\n";
                }
            }
            $body .= "<input type=\"submit\" value=\"Continue OpenID transaction\">\n";
            $body .= "</form></body></html>\n";
        } else if (is_array($params) && count($params) > 0) {
            if (strpos($url, '?') === false) {
                $url .= '?' . self::paramsToQuery($params);
            } else {
                $url .= '&' . self::paramsToQuery($params);
            }
        }
        if (!empty($body)) {
            $response->setBody($body);
        } else if (!$response->canSendHeaders()) {
            $response->setBody("<script language=\"JavaScript\"" .
                 " type=\"text/javascript\">window.location='$url';" .
                 "</script>");
        } else {
            $response->setRedirect($url);
        }
        $response->sendResponse();
        if (self::$exitOnRedirect) {
            exit();
        }
    }

    /**
     * Produces string of random byte of given length.
     *
     * @param integer $len length of requested string
     * @return string RAW random binary string
     */
    static public function randomBytes($len)
    {
        $key = '';
        for($i=0; $i < $len; $i++) {
            $key .= chr(mt_rand(0, 255));
        }
        return $key;
    }

    /**
     * Generates a hash value (message digest) according to given algorithm.
     * It returns RAW binary string.
     *
     * This is a wrapper function that uses one of available internal function
     * dependent on given PHP configuration. It may use various functions from
     *  ext/openssl, ext/hash, ext/mhash or ext/standard.
     *
     * @param string $func digest algorithm
     * @param string $data data to sign
     * @return string RAW digital signature
     * @throws Zend_OpenId_Exception
     */
    static public function digest($func, $data)
    {
        if (function_exists('openssl_digest')) {
            return openssl_digest($data, $func, true);
        } else if (function_exists('hash')) {
            return hash($func, $data, true);
        } else if ($func === 'sha1') {
            return sha1($data, true);
        } else if ($func === 'sha256') {
            if (function_exists('mhash')) {
                return mhash(MHASH_SHA256 , $data);
            }
        }
        throw new Zend_OpenId_Exception(
            'Unsupported digest algorithm "' . $func . '".',
            Zend_OpenId_Exception::UNSUPPORTED_DIGEST);
    }

    /**
     * Generates a keyed hash value using the HMAC method. It uses ext/hash
     * if available or user-level PHP implementation, that is not significantly
     * slower.
     *
     * @param string $macFunc name of selected hashing algorithm (sha1, sha256)
     * @param string $data data to sign
     * @param string $secret shared secret key used for generating the HMAC
     *  variant of the message digest
     * @return string RAW HMAC value
     */
    static public function hashHmac($macFunc, $data, $secret)
    {
//        require_once "Zend/Crypt/Hmac.php";
//        return Zend_Crypt_Hmac::compute($secret, $macFunc, $data, Zend_Crypt_Hmac::BINARY);
        if (function_exists('hash_hmac')) {
            return hash_hmac($macFunc, $data, $secret, 1);
        } else {
            if (Zend_OpenId::strlen($secret) > 64) {
                $secret = self::digest($macFunc, $secret);
            }
            $secret = str_pad($secret, 64, chr(0x00));
            $ipad = str_repeat(chr(0x36), 64);
            $opad = str_repeat(chr(0x5c), 64);
            $hash1 = self::digest($macFunc, ($secret ^ $ipad) . $data);
            return self::digest($macFunc, ($secret ^ $opad) . $hash1);
        }
    }

    /**
     * Converts binary representation into ext/gmp or ext/bcmath big integer
     * representation.
     *
     * @param string $bin binary representation of big number
     * @return mixed
     * @throws Zend_OpenId_Exception
     */
    static protected function binToBigNum($bin)
    {
        if (extension_loaded('gmp')) {
            return gmp_init(bin2hex($bin), 16);
        } else if (extension_loaded('bcmath')) {
            $bn = 0;
            $len = Zend_OpenId::strlen($bin);
            for ($i = 0; $i < $len; $i++) {
                $bn = bcmul($bn, 256);
                $bn = bcadd($bn, ord($bin[$i]));
            }
            return $bn;
        }
        throw new Zend_OpenId_Exception(
            'The system doesn\'t have proper big integer extension',
            Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH);
    }

    /**
     * Converts internal ext/gmp or ext/bcmath big integer representation into
     * binary string.
     *
     * @param mixed $bn big number
     * @return string
     * @throws Zend_OpenId_Exception
     */
    static protected function bigNumToBin($bn)
    {
        if (extension_loaded('gmp')) {
            $s = gmp_strval($bn, 16);
            if (strlen($s) % 2 != 0) {
                $s = '0' . $s;
            } else if ($s[0] > '7') {
                $s = '00' . $s;
            }
            return pack("H*", $s);
        } else if (extension_loaded('bcmath')) {
            $cmp = bccomp($bn, 0);
            if ($cmp == 0) {
                return (chr(0));
            } else if ($cmp < 0) {
                throw new Zend_OpenId_Exception(
                    'Big integer arithmetic error',
                    Zend_OpenId_Exception::ERROR_LONG_MATH);
            }
            $bin = "";
            while (bccomp($bn, 0) > 0) {
                $bin = chr(bcmod($bn, 256)) . $bin;
                $bn = bcdiv($bn, 256);
            }
            if (ord($bin[0]) > 127) {
                $bin = chr(0) . $bin;
            }
            return $bin;
        }
        throw new Zend_OpenId_Exception(
            'The system doesn\'t have proper big integer extension',
            Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH);
    }

    /**
     * Performs the first step of a Diffie-Hellman key exchange by generating
     * private and public DH values based on given prime number $p and
     * generator $g. Both sides of key exchange MUST have the same prime number
     * and generator. In this case they will able to create a random shared
     * secret that is never send from one to the other.
     *
     * @param string $p prime number in binary representation
     * @param string $g generator in binary representation
     * @param string $priv_key private key in binary representation
     * @return mixed
     */
    static public function createDhKey($p, $g, $priv_key = null)
    {
        if (function_exists('openssl_dh_compute_key')) {
            $dh_details = array(
                    'p' => $p,
                    'g' => $g
                );
            if (!is_null($priv_key)) {
                $dh_details['priv_key'] = $priv_key;
            }
            return openssl_pkey_new(array('dh'=>$dh_details));
        } else {
            $bn_p        = self::binToBigNum($p);
            $bn_g        = self::binToBigNum($g);
            if (is_null($priv_key)) {
                $priv_key    = self::randomBytes(Zend_OpenId::strlen($p));
            }
            $bn_priv_key = self::binToBigNum($priv_key);
            if (extension_loaded('gmp')) {
                $bn_pub_key  = gmp_powm($bn_g, $bn_priv_key, $bn_p);
            } else if (extension_loaded('bcmath')) {
                $bn_pub_key  = bcpowmod($bn_g, $bn_priv_key, $bn_p);
            }
            $pub_key     = self::bigNumToBin($bn_pub_key);

            return array(
                'p'        => $bn_p,
                'g'        => $bn_g,
                'priv_key' => $bn_priv_key,
                'pub_key'  => $bn_pub_key,
                'details'  => array(
                    'p'        => $p,
                    'g'        => $g,
                    'priv_key' => $priv_key,
                    'pub_key'  => $pub_key));
        }
    }

    /**
     * Returns an associative array with Diffie-Hellman key components in
     * binary representation. The array includes original prime number 'p' and
     * generator 'g', random private key 'priv_key' and corresponding public
     * key 'pub_key'.
     *
     * @param mixed $dh Diffie-Hellman key
     * @return array
     */
    static public function getDhKeyDetails($dh)
    {
        if (function_exists('openssl_dh_compute_key')) {
            $details = openssl_pkey_get_details($dh);
            if (isset($details['dh'])) {
                return $details['dh'];
            }
        } else {
            return $dh['details'];
        }
    }

    /**
     * Computes the shared secret from the private DH value $dh and the other
     * party's public value in $pub_key
     *
     * @param string $pub_key other party's public value
     * @param mixed $dh Diffie-Hellman key
     * @return string
     * @throws Zend_OpenId_Exception
     */
    static public function computeDhSecret($pub_key, $dh)
    {
        if (function_exists('openssl_dh_compute_key')) {
            $ret = openssl_dh_compute_key($pub_key, $dh);
            if (ord($ret[0]) > 127) {
                $ret = chr(0) . $ret;
            }
            return $ret;
        } else if (extension_loaded('gmp')) {
            $bn_pub_key = self::binToBigNum($pub_key);
            $bn_secret  = gmp_powm($bn_pub_key, $dh['priv_key'], $dh['p']);
            return self::bigNumToBin($bn_secret);
        } else if (extension_loaded('bcmath')) {
            $bn_pub_key = self::binToBigNum($pub_key);
            $bn_secret  = bcpowmod($bn_pub_key, $dh['priv_key'], $dh['p']);
            return self::bigNumToBin($bn_secret);
        }
        throw new Zend_OpenId_Exception(
            'The system doesn\'t have proper big integer extension',
            Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH);
    }

    /**
     * Takes an arbitrary precision integer and returns its shortest big-endian
     * two's complement representation.
     *
     * Arbitrary precision integers MUST be encoded as big-endian signed two's
     * complement binary strings. Henceforth, "btwoc" is a function that takes
     * an arbitrary precision integer and returns its shortest big-endian two's
     * complement representation. All integers that are used with
     * Diffie-Hellman Key Exchange are positive. This means that the left-most
     * bit of the two's complement representation MUST be zero. If it is not,
     * implementations MUST add a zero byte at the front of the string.
     *
     * @param string $str binary representation of arbitrary precision integer
     * @return string big-endian signed representation
     */
    static public function btwoc($str)
    {
        if (ord($str[0]) > 127) {
            return chr(0) . $str;
        }
        return $str;
    }

    /**
     * Returns lenght of binary string in bytes
     *
     * @param string $str 
     * @return int the string lenght
     */
    static public function strlen($str)
    {
        if (extension_loaded('mbstring') &&
            (((int)ini_get('mbstring.func_overload')) & 2)) {
            return mb_strlen($str, 'latin1');
        } else {
            return strlen($str);
        }
    }

}
PKpG[Z�.ztztPdf.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Pdf_Exception */
require_once 'Zend/Pdf/Exception.php';

/** Zend_Pdf_Page */
require_once 'Zend/Pdf/Page.php';

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';

/** Zend_Pdf_Font */
require_once 'Zend/Pdf/Font.php';

/** Zend_Pdf_Style */
require_once 'Zend/Pdf/Style.php';

/** Zend_Pdf_Parser */
require_once 'Zend/Pdf/Parser.php';

/** Zend_Pdf_Trailer */
require_once 'Zend/Pdf/Trailer.php';

/** Zend_Pdf_Trailer_Generator */
require_once 'Zend/Pdf/Trailer/Generator.php';

/** Zend_Pdf_Color */
require_once 'Zend/Pdf/Color.php';

/** Zend_Pdf_Color_GrayScale */
require_once 'Zend/Pdf/Color/GrayScale.php';

/** Zend_Pdf_Color_Rgb */
require_once 'Zend/Pdf/Color/Rgb.php';

/** Zend_Pdf_Color_Cmyk */
require_once 'Zend/Pdf/Color/Cmyk.php';

/** Zend_Pdf_Color_Html */
require_once 'Zend/Pdf/Color/Html.php';

/** Zend_Pdf_Image */
require_once 'Zend/Pdf/Resource/Image.php';

/** Zend_Pdf_Image */
require_once 'Zend/Pdf/Image.php';

/** Zend_Pdf_Image_Jpeg */
require_once 'Zend/Pdf/Resource/Image/Jpeg.php';

/** Zend_Pdf_Image_Tiff */
require_once 'Zend/Pdf/Resource/Image/Tiff.php';

/** Zend_Pdf_Image_Png */
require_once 'Zend/Pdf/Resource/Image/Png.php';


/** Zend_Memory */
require_once 'Zend/Memory.php';


/**
 * General entity which describes PDF document.
 * It implements document abstraction with a document level operations.
 *
 * Class is used to create new PDF document or load existing document.
 * See details in a class constructor description
 *
 * Class agregates document level properties and entities (pages, bookmarks,
 * document level actions, attachments, form object, etc)
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf
{
  /**** Class Constants ****/

    /**
     * Version number of generated PDF documents.
     */
    const PDF_VERSION = 1.4;

    /**
     * PDF file header.
     */
    const PDF_HEADER  = "%PDF-1.4\n%\xE2\xE3\xCF\xD3\n";



    /**
     * Pages collection
     *
     * @todo implement it as a class, which supports ArrayAccess and Iterator interfaces,
     *       to provide incremental parsing and pages tree updating.
     *       That will give good performance and memory (PDF size) benefits.
     *
     * @var array   - array of Zend_Pdf_Page object
     */
    public $pages = array();

    /**
     * Document properties
     *
     * It's an associative array with PDF meta information, values may
     * be string, boolean or float.
     * Returned array could be used directly to access, add, modify or remove
     * document properties.
     *
     * Standard document properties: Title (must be set for PDF/X documents), Author,
     * Subject, Keywords (comma separated list), Creator (the name of the application,
     * that created document, if it was converted from other format), Trapped (must be
     * true, false or null, can not be null for PDF/X documents)
     *
     * @var array
     */
    public $properties = array();

    /**
     * Original properties set.
     *
     * Used for tracking properties changes
     *
     * @var array
     */
    protected $_originalProperties = array();

    /**
     * Document level javascript
     *
     * @var string
     */
    protected $_javaScript = null;

    /**
     * Document named actions
     * "GoTo..." actions, used to refer document parts
     * from outside PDF
     *
     * @var array   - array of Zend_Pdf_Action objects
     */
    protected $_namedActions = array();


    /**
     * Pdf trailer (last or just created)
     *
     * @var Zend_Pdf_Trailer
     */
    protected $_trailer = null;


    /**
     * PDF objects factory.
     *
     * @var Zend_Pdf_ElementFactory_Interface
     */
    protected $_objFactory = null;

    /**
     * Memory manager for stream objects
     *
     * @var Zend_Memory_Manager|null
     */
    protected static $_memoryManager = null;

    /**
     * Pdf file parser.
     * It's not used, but has to be destroyed only with Zend_Pdf object
     *
     * @var Zend_Pdf_Parser
     */
    protected $_parser;


    /**
     * List of inheritable attributesfor pages tree
     *
     * @var array
     */
    protected static $_inheritableAttributes = array('Resources', 'MediaBox', 'CropBox', 'Rotate');

    /**
     * Request used memory manager
     *
     * @return Zend_Memory_Manager
     */
    static public function getMemoryManager()
    {
        if (self::$_memoryManager === null) {
            self::$_memoryManager = Zend_Memory::factory('none');
        }

        return self::$_memoryManager;
    }

    /**
     * Set user defined memory manager
     *
     * @param Zend_Memory_Manager $memoryManager
     */
    static public function setMemoryManager(Zend_Memory_Manager $memoryManager)
    {
        self::$_memoryManager = $memoryManager;
    }


    /**
     * Create new PDF document from a $source string
     *
     * @param string $source
     * @param integer $revision
     * @return Zend_Pdf
     */
    public static function parse(&$source = null, $revision = null)
    {
        return new Zend_Pdf($source, $revision);
    }

    /**
     * Load PDF document from a file
     *
     * @param string $source
     * @param integer $revision
     * @return Zend_Pdf
     */
    public static function load($source = null, $revision = null)
    {
        return new Zend_Pdf($source, $revision, true);
    }

    /**
     * Render PDF document and save it.
     *
     * If $updateOnly is true, then it only appends new section to the end of file.
     *
     * @param string $filename
     * @param boolean $updateOnly
     * @throws Zend_Pdf_Exception
     */
    public function save($filename, $updateOnly = false)
    {
        if (($file = @fopen($filename, $updateOnly ? 'ab':'wb')) === false ) {
            throw new Zend_Pdf_Exception( "Can not open '$filename' file for writing." );
        }

        $this->render($updateOnly, $file);

        fclose($file);
    }

    /**
     * Creates or loads PDF document.
     *
     * If $source is null, then it creates a new document.
     *
     * If $source is a string and $load is false, then it loads document
     * from a binary string.
     *
     * If $source is a string and $load is true, then it loads document
     * from a file.

     * $revision used to roll back document to specified version
     * (0 - currtent version, 1 - previous version, 2 - ...)
     *
     * @param string  $source - PDF file to load
     * @param integer $revision
     * @throws Zend_Pdf_Exception
     * @return Zend_Pdf
     */
    public function __construct($source = null, $revision = null, $load = false)
    {
        $this->_objFactory = Zend_Pdf_ElementFactory::createFactory(1);

        if ($source !== null) {
            $this->_parser  = new Zend_Pdf_Parser($source, $this->_objFactory, $load);
            $this->_trailer = $this->_parser->getTrailer();
            if ($this->_trailer->Encrypt !== null) {
            	throw new Zend_Pdf_Exception('Encrypted document modification is not supported');
            }
            if ($revision !== null) {
                $this->rollback($revision);
            } else {
                $this->_loadPages($this->_trailer->Root->Pages);
            }

            if ($this->_trailer->Info !== null) {
                $this->properties = $this->_trailer->Info->toPhp();

                if (isset($this->properties['Trapped'])) {
                    switch ($this->properties['Trapped']) {
                        case 'True':
                            $this->properties['Trapped'] = true;
                            break;

                        case 'False':
                            $this->properties['Trapped'] = false;
                            break;

                        case 'Unknown':
                            $this->properties['Trapped'] = null;
                            break;

                        default:
                            // Wrong property value
                            // Do nothing
                            break;
                    }
                }

                $this->_originalProperties = $this->properties;
            }
        } else {
            $trailerDictionary = new Zend_Pdf_Element_Dictionary();

            /**
             * Document id
             */
            $docId = md5(uniqid(rand(), true));   // 32 byte (128 bit) identifier
            $docIdLow  = substr($docId,  0, 16);  // first 16 bytes
            $docIdHigh = substr($docId, 16, 16);  // second 16 bytes

            $trailerDictionary->ID = new Zend_Pdf_Element_Array();
            $trailerDictionary->ID->items[] = new Zend_Pdf_Element_String_Binary($docIdLow);
            $trailerDictionary->ID->items[] = new Zend_Pdf_Element_String_Binary($docIdHigh);

            $trailerDictionary->Size = new Zend_Pdf_Element_Numeric(0);

            $this->_trailer    = new Zend_Pdf_Trailer_Generator($trailerDictionary);

            /**
             * Document catalog indirect object.
             */
            $docCatalog = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary());
            $docCatalog->Type    = new Zend_Pdf_Element_Name('Catalog');
            $docCatalog->Version = new Zend_Pdf_Element_Name(Zend_Pdf::PDF_VERSION);
            $this->_trailer->Root = $docCatalog;

            /**
             * Pages container
             */
            $docPages = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary());
            $docPages->Type  = new Zend_Pdf_Element_Name('Pages');
            $docPages->Kids  = new Zend_Pdf_Element_Array();
            $docPages->Count = new Zend_Pdf_Element_Numeric(0);
            $docCatalog->Pages = $docPages;
        }
    }

    /**
     * Retrive number of revisions.
     *
     * @return integer
     */
    public function revisions()
    {
        $revisions = 1;
        $currentTrailer = $this->_trailer;

        while ($currentTrailer->getPrev() !== null && $currentTrailer->getPrev()->Root !== null ) {
            $revisions++;
            $currentTrailer = $currentTrailer->getPrev();
        }

        return $revisions++;
    }

    /**
     * Rollback document $steps number of revisions.
     * This method must be invoked before any changes, applied to the document.
     * Otherwise behavior is undefined.
     *
     * @param integer $steps
     */
    public function rollback($steps)
    {
        for ($count = 0; $count < $steps; $count++) {
            if ($this->_trailer->getPrev() !== null && $this->_trailer->getPrev()->Root !== null) {
                $this->_trailer = $this->_trailer->getPrev();
            } else {
                break;
            }
        }
        $this->_objFactory->setObjectCount($this->_trailer->Size->value);

        // Mark content as modified to force new trailer generation at render time
        $this->_trailer->Root->touch();

        $this->pages = array();
        $this->_loadPages($this->_trailer->Root->Pages);
    }


    /**
     * Load pages recursively
     *
     * @param Zend_Pdf_Element_Reference $pages
     * @param array|null $attributes
     */
    protected function _loadPages(Zend_Pdf_Element_Reference $pages, $attributes = array())
    {
        if ($pages->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) {
            throw new Zend_Pdf_Exception('Wrong argument');
        }

        foreach ($pages->getKeys() as $property) {
            if (in_array($property, self::$_inheritableAttributes)) {
                $attributes[$property] = $pages->$property;
                $pages->$property = null;
            }
        }


        foreach ($pages->Kids->items as $child) {
            if ($child->Type->value == 'Pages') {
                $this->_loadPages($child, $attributes);
            } else if ($child->Type->value == 'Page') {
                foreach (self::$_inheritableAttributes as $property) {
                    if ($child->$property === null && array_key_exists($property, $attributes)) {
                        /**
                         * Important note.
                         * If any attribute or dependant object is an indirect object, then it's still
                         * shared between pages.
                         */
                        if ($attributes[$property] instanceof Zend_Pdf_Element_Object) {
                            $child->$property = $attributes[$property];
                        } else {
                            $child->$property = $this->_objFactory->newObject($attributes[$property]);
                        }
                    }
                }
                $this->pages[] = new Zend_Pdf_Page($child, $this->_objFactory);
            }
        }
    }


    /**
     * Orginize pages to tha pages tree structure.
     *
     * @todo atomatically attach page to the document, if it's not done yet.
     * @todo check, that page is attached to the current document
     *
     * @todo Dump pages as a balanced tree instead of a plain set.
     */
    protected function _dumpPages()
    {
        $pagesContainer = $this->_trailer->Root->Pages;
        $pagesContainer->touch();
        $pagesContainer->Kids->items->clear();

        foreach ($this->pages as $page ) {
            $page->render($this->_objFactory);

            $pageDictionary = $page->getPageDictionary();
            $pageDictionary->touch();
            $pageDictionary->Parent = $pagesContainer;

            $pagesContainer->Kids->items[] = $pageDictionary;
        }

        $pagesContainer->Count->touch();
        $pagesContainer->Count->value = count($this->pages);
    }


    /**
     * Create page object, attached to the PDF document.
     * Method signatures:
     *
     * 1. Create new page with a specified pagesize.
     *    If $factory is null then it will be created and page must be attached to the document to be
     *    included into output.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(string $pagesize);
     * ---------------------------------------------------------
     *
     * 2. Create new page with a specified pagesize (in default user space units).
     *    If $factory is null then it will be created and page must be attached to the document to be
     *    included into output.
     * ---------------------------------------------------------
     * new Zend_Pdf_Page(numeric $width, numeric $height);
     * ---------------------------------------------------------
     *
     * @param mixed $param1
     * @param mixed $param2
     * @return Zend_Pdf_Page
     */
    public function newPage($param1, $param2 = null)
    {
        if ($param2 === null) {
            return new Zend_Pdf_Page($param1, $this->_objFactory);
        } else {
            return new Zend_Pdf_Page($param1, $param2, $this->_objFactory);
        }
    }

    /**
     * Return the document-level Metadata
     * or null Metadata stream is not presented
     *
     * @return string
     */
    public function getMetadata()
    {
        if ($this->_trailer->Root->Metadata !== null) {
            return $this->_trailer->Root->Metadata->value;
        } else {
            return null;
        }
    }

    /**
     * Sets the document-level Metadata (mast be valid XMP document)
     *
     * @param string $metadata
     */
    public function setMetadata($metadata)
    {
        $metadataObject = $this->_objFactory->newStreamObject($metadata);
        $metadataObject->dictionary->Type    = new Zend_Pdf_Element_Name('Metadata');
        $metadataObject->dictionary->Subtype = new Zend_Pdf_Element_Name('XML');

        $this->_trailer->Root->Metadata = $metadataObject;
        $this->_trailer->Root->touch();
    }

    /**
     * Return the document-level JavaScript
     * or null if there is no JavaScript for this document
     *
     * @return string
     */
    public function getJavaScript()
    {
        return $this->_javaScript;
    }


    /**
     * Return an associative array containing all the named actions in the PDF.
     * Named actions (it's always "GoTo" actions) can be used to reference from outside
     * the PDF, ex: 'http://www.something.com/mydocument.pdf#MyAction'
     *
     * @return array
     */
    public function getNamedActions()
    {
        return $this->_namedActions;
    }

    /**
     * Extract fonts attached to the document
     *
     * returns array of Zend_Pdf_Resource_Font_Extracted objects
     *
     * @return array
     */
    public function extractFonts()
    {
        $fontResourcesUnique = array();
        foreach ($this->pages as $page) {
            $pageResources = $page->extractResources();

            if ($pageResources->Font === null) {
                // Page doesn't contain have any font reference
                continue;
            }

            $fontResources = $pageResources->Font;

            foreach ($fontResources->getKeys() as $fontResourceName) {
                $fontDictionary = $fontResources->$fontResourceName;

                if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference  ||
                       $fontDictionary instanceof Zend_Pdf_Element_Object) ) {
                    // Font dictionary has to be an indirect object or object reference
                    continue;
                }

                $fontResourcesUnique[$fontDictionary->toString($this->_objFactory)] = $fontDictionary;
            }
        }

        $fonts = array();
        foreach ($fontResourcesUnique as $resourceReference => $fontDictionary) {
            try {
                // Try to extract font
                $extractedFont = new Zend_Pdf_Resource_Font_Extracted($fontDictionary);

                $fonts[$resourceReference] = $extractedFont;
            } catch (Zend_Pdf_Exception $e) {
                if ($e->getMessage() != 'Unsupported font type.') {
                    throw $e;
                }
            }
        }

        return $fonts;
    }

    /**
     * Extract font attached to the page by specific font name
     *
     * $fontName should be specified in UTF-8 encoding
     *
     * @return Zend_Pdf_Resource_Font_Extracted|null
     */
    public function extractFont($fontName)
    {
        $fontResourcesUnique = array();
        foreach ($this->pages as $page) {
            $pageResources = $page->extractResources();

            if ($pageResources->Font === null) {
                // Page doesn't contain have any font reference
                continue;
            }

            $fontResources = $pageResources->Font;

            foreach ($fontResources->getKeys() as $fontResourceName) {
                $fontDictionary = $fontResources->$fontResourceName;

                if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference  ||
                       $fontDictionary instanceof Zend_Pdf_Element_Object) ) {
                    // Font dictionary has to be an indirect object or object reference
                    continue;
                }

                $resourceReference = $fontDictionary->toString($this->_objFactory);
                if (isset($fontResourcesUnique[$resourceReference])) {
                    continue;
                } else {
                    // Mark resource as processed
                    $fontResourcesUnique[$resourceReference] = 1;
                }

                if ($fontDictionary->BaseFont->value != $fontName) {
                    continue;
                }

                try {
                    // Try to extract font
                    return new Zend_Pdf_Resource_Font_Extracted($fontDictionary);
                } catch (Zend_Pdf_Exception $e) {
                    if ($e->getMessage() != 'Unsupported font type.') {
                        throw $e;
                    }
                    // Continue searhing
                }
            }
        }

        return null;
    }

    /**
     * Render the completed PDF to a string.
     * If $newSegmentOnly is true, then only appended part of PDF is returned.
     *
     * @param boolean $newSegmentOnly
     * @param resource $outputStream
     * @return string
     * @throws Zend_Pdf_Exception
     */
    public function render($newSegmentOnly = false, $outputStream = null)
    {
        // Save document properties if necessary
        if ($this->properties != $this->_originalProperties) {
            $docInfo = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary());

            foreach ($this->properties as $key => $value) {
                switch ($key) {
                    case 'Trapped':
                        switch ($value) {
                            case true:
                                $docInfo->$key = new Zend_Pdf_Element_Name('True');
                                break;

                            case false:
                                $docInfo->$key = new Zend_Pdf_Element_Name('False');
                                break;

                            case null:
                                $docInfo->$key = new Zend_Pdf_Element_Name('Unknown');
                                break;

                            default:
                                throw new Zend_Pdf_Exception('Wrong Trapped document property vale: \'' . $value . '\'. Only true, false and null values are allowed.');
                                break;
                        }

                    case 'CreationDate':
                        // break intentionally omitted
                    case 'ModDate':
                        $docInfo->$key = new Zend_Pdf_Element_String((string)$value);
                        break;

                    case 'Title':
                        // break intentionally omitted
                    case 'Author':
                        // break intentionally omitted
                    case 'Subject':
                        // break intentionally omitted
                    case 'Keywords':
                        // break intentionally omitted
                    case 'Creator':
                        // break intentionally omitted
                    case 'Producer':
                        if (extension_loaded('mbstring') === true) {
                            $detected = mb_detect_encoding($value);
                            if ($detected !== 'ASCII') {
                                $value = chr(254) . chr(255) . mb_convert_encoding($value, 'UTF-16', $detected);
                            }
                        }
                    	$docInfo->$key = new Zend_Pdf_Element_String((string)$value);
                        break;

                    default:
                        // Set property using PDF type based on PHP type
                        $docInfo->$key = Zend_Pdf_Element::phpToPdf($value);
                        break;
                }
            }

            $this->_trailer->Info = $docInfo;
        }

        $this->_dumpPages();

        // Check, that PDF file was modified
        // File is always modified by _dumpPages() now, but future implementations may eliminate this.
        if (!$this->_objFactory->isModified()) {
            if ($newSegmentOnly) {
                // Do nothing, return
                return '';
            }

            if ($outputStream === null) {
                return $this->_trailer->getPDFString();
            } else {
                $pdfData = $this->_trailer->getPDFString();
                while ( strlen($pdfData) > 0 && ($byteCount = fwrite($outputStream, $pdfData)) != false ) {
                    $pdfData = substr($pdfData, $byteCount);
                }

                return '';
            }
        }

        // offset (from a start of PDF file) of new PDF file segment
        $offset = $this->_trailer->getPDFLength();
        // Last Object number in a list of free objects
        $lastFreeObject = $this->_trailer->getLastFreeObject();

        // Array of cross-reference table subsections
        $xrefTable = array();
        // Object numbers of first objects in each subsection
        $xrefSectionStartNums = array();

        // Last cross-reference table subsection
        $xrefSection = array();
        // Dummy initialization of the first element (specail case - header of linked list of free objects).
        $xrefSection[] = 0;
        $xrefSectionStartNums[] = 0;
        // Object number of last processed PDF object.
        // Used to manage cross-reference subsections.
        // Initialized by zero (specail case - header of linked list of free objects).
        $lastObjNum = 0;

        if ($outputStream !== null) {
            if (!$newSegmentOnly) {
                $pdfData = $this->_trailer->getPDFString();
                while ( strlen($pdfData) > 0 && ($byteCount = fwrite($outputStream, $pdfData)) != false ) {
                    $pdfData = substr($pdfData, $byteCount);
                }
            }
        } else {
            $pdfSegmentBlocks = ($newSegmentOnly) ? array() : array($this->_trailer->getPDFString());
        }

        // Iterate objects to create new reference table
        foreach ($this->_objFactory->listModifiedObjects() as $updateInfo) {
            $objNum = $updateInfo->getObjNum();

            if ($objNum - $lastObjNum != 1) {
                // Save cross-reference table subsection and start new one
                $xrefTable[] = $xrefSection;
                $xrefSection = array();
                $xrefSectionStartNums[] = $objNum;
            }

            if ($updateInfo->isFree()) {
                // Free object cross-reference table entry
                $xrefSection[]  = sprintf("%010d %05d f \n", $lastFreeObject, $updateInfo->getGenNum());
                $lastFreeObject = $objNum;
            } else {
                // In-use object cross-reference table entry
                $xrefSection[]  = sprintf("%010d %05d n \n", $offset, $updateInfo->getGenNum());

                $pdfBlock = $updateInfo->getObjectDump();
                $offset += strlen($pdfBlock);

                if ($outputStream === null) {
                    $pdfSegmentBlocks[] = $pdfBlock;
                } else {
                    while ( strlen($pdfBlock) > 0 && ($byteCount = fwrite($outputStream, $pdfBlock)) != false ) {
                        $pdfBlock = substr($pdfBlock, $byteCount);
                    }
                }
            }
            $lastObjNum = $objNum;
        }
        // Save last cross-reference table subsection
        $xrefTable[] = $xrefSection;

        // Modify first entry (specail case - header of linked list of free objects).
        $xrefTable[0][0] = sprintf("%010d 65535 f \n", $lastFreeObject);

        $xrefTableStr = "xref\n";
        foreach ($xrefTable as $sectId => $xrefSection) {
            $xrefTableStr .= sprintf("%d %d \n", $xrefSectionStartNums[$sectId], count($xrefSection));
            foreach ($xrefSection as $xrefTableEntry) {
                $xrefTableStr .= $xrefTableEntry;
            }
        }

        $this->_trailer->Size->value = $this->_objFactory->getObjectCount();

        $pdfBlock = $xrefTableStr
                 .  $this->_trailer->toString()
                 . "startxref\n" . $offset . "\n"
                 . "%%EOF\n";

        if ($outputStream === null) {
            $pdfSegmentBlocks[] = $pdfBlock;

            return implode('', $pdfSegmentBlocks);
        } else {
            while ( strlen($pdfBlock) > 0 && ($byteCount = fwrite($outputStream, $pdfBlock)) != false ) {
                $pdfBlock = substr($pdfBlock, $byteCount);
            }

            return '';
        }
    }


    /**
     * Set the document-level JavaScript
     *
     * @param string $javascript
     */
    public function setJavaScript($javascript)
    {
        $this->_javaScript = $javascript;
    }


    /**
     * Convert date to PDF format (it's close to ASN.1 (Abstract Syntax Notation
     * One) defined in ISO/IEC 8824).
     *
     * @todo This really isn't the best location for this method. It should
     *   probably actually exist as Zend_Pdf_Element_Date or something like that.
     *
     * @todo Address the following E_STRICT issue:
     *   PHP Strict Standards:  date(): It is not safe to rely on the system's
     *   timezone settings. Please use the date.timezone setting, the TZ
     *   environment variable or the date_default_timezone_set() function. In
     *   case you used any of those methods and you are still getting this
     *   warning, you most likely misspelled the timezone identifier.
     *
     * @param integer $timestamp (optional) If omitted, uses the current time.
     * @return string
     */
    public static function pdfDate($timestamp = null)
    {
        if (is_null($timestamp)) {
            $date = date('\D\:YmdHisO');
        } else {
            $date = date('\D\:YmdHisO', $timestamp);
        }
        return substr_replace($date, '\'', -2, 0) . '\'';
    }

}
PKpG[�N�Search/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Framework base exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Exception extends Zend_Exception
{}

PKpG[/h�6??Search/Lucene/Proxy.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Search_Lucene_Interface */
require_once 'Zend/Search/Lucene/Interface.php';


/**
 * Proxy class intended to be used in userland.
 *
 * It tracks, when index object goes out of scope and forces ndex closing
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Proxy implements Zend_Search_Lucene_Interface
{
    /**
     * Index object
     *
     * @var Zend_Search_Lucene_Interface
     */
    private $_index;

    /**
     * Object constructor
     *
     * @param Zend_Search_Lucene_Interface $index
     */
    public function __construct(Zend_Search_Lucene_Interface $index)
    {
        $this->_index = $index;
        $this->_index->addReference();
    }

    /**
     * Object destructor
     */
    public function __destruct()
    {
        if ($this->_index !== null) {
            // This code is invoked if Zend_Search_Lucene_Interface object constructor throws an exception
            $this->_index->removeReference();
        }
        $this->_index = null;
    }

    /**
     * Get current generation number
     *
     * Returns generation number
     * 0 means pre-2.1 index format
     * -1 means there are no segments files.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @return integer
     * @throws Zend_Search_Lucene_Exception
     */
    public static function getActualGeneration(Zend_Search_Lucene_Storage_Directory $directory)
    {
        Zend_Search_Lucene::getActualGeneration($directory);
    }

    /**
     * Get segments file name
     *
     * @param integer $generation
     * @return string
     */
    public static function getSegmentFileName($generation)
    {
        Zend_Search_Lucene::getSegmentFileName($generation);
    }

    /**
     * Get index format version
     *
     * @return integer
     */
    public function getFormatVersion()
    {
        return $this->_index->getFormatVersion();
    }

    /**
     * Set index format version.
     * Index is converted to this format at the nearest upfdate time
     *
     * @param int $formatVersion
     * @throws Zend_Search_Lucene_Exception
     */
    public function setFormatVersion($formatVersion)
    {
        $this->_index->setFormatVersion($formatVersion);
    }

    /**
     * Returns the Zend_Search_Lucene_Storage_Directory instance for this index.
     *
     * @return Zend_Search_Lucene_Storage_Directory
     */
    public function getDirectory()
    {
        return $this->_index->getDirectory();
    }

    /**
     * Returns the total number of documents in this index (including deleted documents).
     *
     * @return integer
     */
    public function count()
    {
        return $this->_index->count();
    }

    /**
     * Returns one greater than the largest possible document number.
     * This may be used to, e.g., determine how big to allocate a structure which will have
     * an element for every document number in an index.
     *
     * @return integer
     */
    public function maxDoc()
    {
        return $this->_index->maxDoc();
    }

    /**
     * Returns the total number of non-deleted documents in this index.
     *
     * @return integer
     */
    public function numDocs()
    {
        return $this->_index->numDocs();
    }

    /**
     * Checks, that document is deleted
     *
     * @param integer $id
     * @return boolean
     * @throws Zend_Search_Lucene_Exception    Exception is thrown if $id is out of the range
     */
    public function isDeleted($id)
    {
        return $this->_index->isDeleted($id);
    }

    /**
     * Set default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * Default value is null
     *
     * @param string $fieldName
     */
    public static function setDefaultSearchField($fieldName)
    {
        Zend_Search_Lucene::setDefaultSearchField($fieldName);
    }

    /**
     * Get default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * @return string
     */
    public static function getDefaultSearchField()
    {
        return Zend_Search_Lucene::getDefaultSearchField();
    }

    /**
     * Set result set limit.
     *
     * 0 (default) means no limit
     *
     * @param integer $limit
     */
    public static function setResultSetLimit($limit)
    {
        Zend_Search_Lucene::setResultSetLimit($limit);
    }

    /**
     * Set result set limit.
     *
     * 0 means no limit
     *
     * @return integer
     */
    public static function getResultSetLimit()
    {
        return Zend_Search_Lucene::getResultSetLimit();
    }

    /**
     * Retrieve index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMaxBufferedDocs()
    {
        return $this->_index->getMaxBufferedDocs();
    }

    /**
     * Set index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @param integer $maxBufferedDocs
     */
    public function setMaxBufferedDocs($maxBufferedDocs)
    {
        $this->_index->setMaxBufferedDocs($maxBufferedDocs);
    }


    /**
     * Retrieve index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @return integer
     */
    public function getMaxMergeDocs()
    {
        return $this->_index->getMaxMergeDocs();
    }

    /**
     * Set index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @param integer $maxMergeDocs
     */
    public function setMaxMergeDocs($maxMergeDocs)
    {
        $this->_index->setMaxMergeDocs($maxMergeDocs);
    }


    /**
     * Retrieve index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMergeFactor()
    {
        return $this->_index->getMergeFactor();
    }

    /**
     * Set index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @param integer $maxMergeDocs
     */
    public function setMergeFactor($mergeFactor)
    {
        $this->_index->setMergeFactor($mergeFactor);
    }

    /**
     * Performs a query against the index and returns an array
     * of Zend_Search_Lucene_Search_QueryHit objects.
     * Input is a string or Zend_Search_Lucene_Search_Query.
     *
     * @param mixed $query
     * @return array Zend_Search_Lucene_Search_QueryHit
     * @throws Zend_Search_Lucene_Exception
     */
    public function find($query)
    {
        // actual parameter list
        $parameters = func_get_args();

        // invoke $this->_index->find() method with specified parameters
        return call_user_func_array(array(&$this->_index, 'find'), $parameters);
    }

    /**
     * Returns a list of all unique field names that exist in this index.
     *
     * @param boolean $indexed
     * @return array
     */
    public function getFieldNames($indexed = false)
    {
        return $this->_index->getFieldNames($indexed);
    }

    /**
     * Returns a Zend_Search_Lucene_Document object for the document
     * number $id in this index.
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @return Zend_Search_Lucene_Document
     */
    public function getDocument($id)
    {
        return $this->_index->getDocument($id);
    }

    /**
     * Returns true if index contain documents with specified term.
     *
     * Is used for query optimization.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return boolean
     */
    public function hasTerm(Zend_Search_Lucene_Index_Term $term)
    {
        return $this->_index->hasTerm($term);
    }

    /**
     * Returns IDs of all the documents containing term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termDocs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        return $this->_index->termDocs($term, $docsFilter);
    }

    /**
     * Returns documents filter for all documents containing term.
     *
     * It performs the same operation as termDocs, but return result as
     * Zend_Search_Lucene_Index_DocsFilter object
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return Zend_Search_Lucene_Index_DocsFilter
     */
    public function termDocsFilter(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        return $this->_index->termDocsFilter($term, $docsFilter);
    }

    /**
     * Returns an array of all term freqs.
     * Return array structure: array( docId => freq, ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return integer
     */
    public function termFreqs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        return $this->_index->termFreqs($term, $docsFilter);
    }

    /**
     * Returns an array of all term positions in the documents.
     * Return array structure: array( docId => array( pos1, pos2, ...), ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termPositions(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        return $this->_index->termPositions($term, $docsFilter);
    }

    /**
     * Returns the number of documents in this index containing the $term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return integer
     */
    public function docFreq(Zend_Search_Lucene_Index_Term $term)
    {
        return $this->_index->docFreq($term);
    }

    /**
     * Retrive similarity used by index reader
     *
     * @return Zend_Search_Lucene_Search_Similarity
     */
    public function getSimilarity()
    {
        return $this->_index->getSimilarity();
    }

    /**
     * Returns a normalization factor for "field, document" pair.
     *
     * @param integer $id
     * @param string $fieldName
     * @return float
     */
    public function norm($id, $fieldName)
    {
        return $this->_index->norm($id, $fieldName);
    }

    /**
     * Returns true if any documents have been deleted from this index.
     *
     * @return boolean
     */
    public function hasDeletions()
    {
        return $this->_index->hasDeletions();
    }

    /**
     * Deletes a document from the index.
     * $id is an internal document id
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @throws Zend_Search_Lucene_Exception
     */
    public function delete($id)
    {
        return $this->_index->delete($id);
    }

    /**
     * Adds a document to this index.
     *
     * @param Zend_Search_Lucene_Document $document
     */
    public function addDocument(Zend_Search_Lucene_Document $document)
    {
        $this->_index->addDocument($document);
    }

    /**
     * Commit changes resulting from delete() or undeleteAll() operations.
     */
    public function commit()
    {
        $this->_index->commit();
    }

    /**
     * Optimize index.
     *
     * Merges all segments into one
     */
    public function optimize()
    {
        $this->_index->optimize();
    }

    /**
     * Returns an array of all terms in this index.
     *
     * @return array
     */
    public function terms()
    {
        return $this->_index->terms();
    }


    /**
     * Reset terms stream.
     */
    public function resetTermsStream()
    {
        $this->_index->resetTermsStream();
    }

    /**
     * Skip terms stream up to specified term preffix.
     *
     * Prefix contains fully specified field info and portion of searched term
     *
     * @param Zend_Search_Lucene_Index_Term $prefix
     */
    public function skipTo(Zend_Search_Lucene_Index_Term $prefix)
    {
        return $this->_index->skipTo($prefix);
    }

    /**
     * Scans terms dictionary and returns next term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function nextTerm()
    {
        return $this->_index->nextTerm();
    }

    /**
     * Returns term in current position
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function currentTerm()
    {
        return $this->_index->currentTerm();
    }

    /**
     * Close terms stream
     *
     * Should be used for resources clean up if stream is not read up to the end
     */
    public function closeTermsStream()
    {
        $this->_index->closeTermsStream();
    }


    /**
     * Undeletes all documents currently marked as deleted in this index.
     */
    public function undeleteAll()
    {
        return $this->_index->undeleteAll();
    }

    /**
     * Add reference to the index object
     *
     * @internal
     */
    public function addReference()
    {
        return $this->_index->addReference();
    }

    /**
     * Remove reference from the index object
     *
     * When reference count becomes zero, index is closed and resources are cleaned up
     *
     * @internal
     */
    public function removeReference()
    {
        return $this->_index->removeReference();
    }
}
PKpG[�zv��Search/Lucene/FSMAction.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract Finite State Machine
 *
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_FSMAction
{
    /**
     * Object reference
     *
     * @var object
     */
    private $_object;

    /**
     * Method name
     *
     * @var string
     */
    private $_method;

    /**
     * Object constructor
     *
     * @param object $object
     * @param string $method
     */
    public function __construct($object, $method)
    {
        $this->_object = $object;
        $this->_method = $method;
    }

    public function doAction()
    {
        $methodName = $this->_method;
        $this->_object->$methodName();
    }
}

PKpG[�Mq��Search/Lucene/Document.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Field */
require_once 'Zend/Search/Lucene/Field.php';


/**
 * A Document is a set of fields. Each field has a name and a textual value.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Document
{

    /**
     * Associative array Zend_Search_Lucene_Field objects where the keys to the
     * array are the names of the fields.
     *
     * @var array
     */
    protected $_fields = array();

    /**
     * Field boost factor
     * It's not stored directly in the index, but affects on normalization factor
     *
     * @var float
     */
    public $boost = 1.0;

    /**
     * Proxy method for getFieldValue(), provides more convenient access to
     * the string value of a field.
     *
     * @param  $offset
     * @return string
     */
    public function __get($offset)
    {
        return $this->getFieldValue($offset);
    }


    /**
     * Add a field object to this document.
     *
     * @param Zend_Search_Lucene_Field $field
     * @return Zend_Search_Lucene_Document
     */
    public function addField(Zend_Search_Lucene_Field $field)
    {
        $this->_fields[$field->name] = $field;

        return $this;
    }


    /**
     * Return an array with the names of the fields in this document.
     *
     * @return array
     */
    public function getFieldNames()
    {
        return array_keys($this->_fields);
    }


    /**
     * Returns Zend_Search_Lucene_Field object for a named field in this document.
     *
     * @param string $fieldName
     * @return Zend_Search_Lucene_Field
     */
    public function getField($fieldName)
    {
        if (!array_key_exists($fieldName, $this->_fields)) {
            throw new Zend_Search_Lucene_Exception("Field name \"$fieldName\" not found in document.");
        }
        return $this->_fields[$fieldName];
    }


    /**
     * Returns the string value of a named field in this document.
     *
     * @see __get()
     * @return string
     */
    public function getFieldValue($fieldName)
    {
        return $this->getField($fieldName)->value;
    }

    /**
     * Returns the string value of a named field in UTF-8 encoding.
     *
     * @see __get()
     * @return string
     */
    public function getFieldUtf8Value($fieldName)
    {
        return $this->getField($fieldName)->getUtf8Value();
    }
}
PKpG[$�U�IISearch/Lucene/Document/Pptx.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Document_OpenXml */
require_once 'Zend/Search/Lucene/Document/OpenXml.php';

if (class_exists('ZipArchive', false)) {

/**
 * Pptx document.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Document_Pptx extends Zend_Search_Lucene_Document_OpenXml
{
    /**
     * Xml Schema - PresentationML
     *
     * @var string
     */
    const SCHEMA_PRESENTATIONML = 'http://schemas.openxmlformats.org/presentationml/2006/main';

    /**
     * Xml Schema - DrawingML
     *
     * @var string
     */
    const SCHEMA_DRAWINGML = 'http://schemas.openxmlformats.org/drawingml/2006/main';

    /**
     * Xml Schema - Slide relation
     *
     * @var string
     */
    const SCHEMA_SLIDERELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide';

    /**
     * Xml Schema - Slide notes relation
     *
     * @var string
     */
    const SCHEMA_SLIDENOTESRELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide';

    /**
     * Object constructor
     *
     * @param string  $fileName
     * @param boolean $storeContent
     */
    private function __construct($fileName, $storeContent)
    {
        // Document data holders
        $slides = array();
        $slideNotes = array();
        $documentBody = array();
        $coreProperties = array();

        // Open OpenXML package
        $package = new ZipArchive();
        $package->open($fileName);

        // Read relations and search for officeDocument
        $relations = simplexml_load_string($package->getFromName("_rels/.rels"));
        foreach ($relations->Relationship as $rel) {
            if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_OFFICEDOCUMENT) {
                // Found office document! Search for slides...
                $slideRelations = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/_rels/" . basename($rel["Target"]) . ".rels")) );
                foreach ($slideRelations->Relationship as $slideRel) {
                    if ($slideRel["Type"] == Zend_Search_Lucene_Document_Pptx::SCHEMA_SLIDERELATION) {
                        // Found slide!
                        $slides[ str_replace( 'rId', '', (string)$slideRel["Id"] ) ] = simplexml_load_string(
                            $package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . basename($slideRel["Target"])) )
                        );

                        // Search for slide notes
                        $slideNotesRelations = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/_rels/" . basename($slideRel["Target"]) . ".rels")) );
                        foreach ($slideNotesRelations->Relationship as $slideNoteRel) {
                            if ($slideNoteRel["Type"] == Zend_Search_Lucene_Document_Pptx::SCHEMA_SLIDENOTESRELATION) {
                                // Found slide notes!
                                $slideNotes[ str_replace( 'rId', '', (string)$slideRel["Id"] ) ] = simplexml_load_string(
                                    $package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . dirname($slideNoteRel["Target"]) . "/" . basename($slideNoteRel["Target"])) )
                                );

                                break;
                            }
                        }
                    }
                }

                break;
            }
        }

        // Sort slides
        ksort($slides);
        ksort($slideNotes);

        // Extract contents from slides
        foreach ($slides as $slideKey => $slide) {
            // Register namespaces
            $slide->registerXPathNamespace("p", Zend_Search_Lucene_Document_Pptx::SCHEMA_PRESENTATIONML);
            $slide->registerXPathNamespace("a", Zend_Search_Lucene_Document_Pptx::SCHEMA_DRAWINGML);

            // Fetch all text
            $textElements = $slide->xpath('//a:t');
            foreach ($textElements as $textElement) {
                $documentBody[] = (string)$textElement;
            }

            // Extract contents from slide notes
            if (isset($slideNotes[$slideKey])) {
                // Fetch slide note
                $slideNote = $slideNotes[$slideKey];

                // Register namespaces
                $slideNote->registerXPathNamespace("p", Zend_Search_Lucene_Document_Pptx::SCHEMA_PRESENTATIONML);
                $slideNote->registerXPathNamespace("a", Zend_Search_Lucene_Document_Pptx::SCHEMA_DRAWINGML);

                // Fetch all text
                $textElements = $slideNote->xpath('//a:t');
                foreach ($textElements as $textElement) {
                    $documentBody[] = (string)$textElement;
                }
            }
        }

        // Read core properties
        $coreProperties = $this->extractMetaData($package);

        // Close file
        $package->close();

        // Store filename
        $this->addField(Zend_Search_Lucene_Field::Text('filename', $fileName, 'UTF-8'));

            // Store contents
        if ($storeContent) {
            $this->addField(Zend_Search_Lucene_Field::Text('body', implode(' ', $documentBody), 'UTF-8'));
        } else {
            $this->addField(Zend_Search_Lucene_Field::UnStored('body', implode(' ', $documentBody), 'UTF-8'));
        }

        // Store meta data properties
        foreach ($coreProperties as $key => $value)
        {
            $this->addField(Zend_Search_Lucene_Field::Text($key, $value, 'UTF-8'));
        }

        // Store title (if not present in meta data)
        if (!isset($coreProperties['title']))
        {
            $this->addField(Zend_Search_Lucene_Field::Text('title', $fileName, 'UTF-8'));
        }
    }

    /**
     * Load Pptx document from a file
     *
     * @param string  $fileName
     * @param boolean $storeContent
     * @return Zend_Search_Lucene_Document_Pptx
     */
    public static function loadPptxFile($fileName, $storeContent = false)
    {
        return new Zend_Search_Lucene_Document_Pptx($fileName, $storeContent);
    }
}

} // end if (class_exists('ZipArchive'))
PKpG[�����"Search/Lucene/Document/OpenXml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Document */
require_once 'Zend/Search/Lucene/Document.php';

if (class_exists('ZipArchive', false)) {

/**
 * OpenXML document.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Document_OpenXml extends Zend_Search_Lucene_Document
{
    /**
     * Xml Schema - Relationships
     *
     * @var string
     */
    const SCHEMA_RELATIONSHIP = 'http://schemas.openxmlformats.org/package/2006/relationships';

    /**
     * Xml Schema - Office document
     *
     * @var string
     */
    const SCHEMA_OFFICEDOCUMENT = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument';

    /**
     * Xml Schema - Core properties
     *
     * @var string
     */
    const SCHEMA_COREPROPERTIES = 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties';

    /**
     * Xml Schema - Dublin Core
     *
     * @var string
     */
    const SCHEMA_DUBLINCORE = 'http://purl.org/dc/elements/1.1/';

    /**
     * Xml Schema - Dublin Core Terms
     *
     * @var string
     */
    const SCHEMA_DUBLINCORETERMS = 'http://purl.org/dc/terms/';

    /**
     * Extract metadata from document
     *
     * @param ZipArchive $package    ZipArchive OpenXML package
     * @return array    Key-value pairs containing document meta data
     */
    protected function extractMetaData(ZipArchive $package)
    {
        // Data holders
        $coreProperties = array();
        
        // Read relations and search for core properties
        $relations = simplexml_load_string($package->getFromName("_rels/.rels"));
        foreach ($relations->Relationship as $rel) {
            if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) {
                // Found core properties! Read in contents...
                $contents = simplexml_load_string(
                    $package->getFromName(dirname($rel["Target"]) . "/" . basename($rel["Target"]))
                );

                foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORE) as $child) {
                    $coreProperties[$child->getName()] = (string)$child;
                }
                foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) as $child) {
                    $coreProperties[$child->getName()] = (string)$child;
                }
                foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORETERMS) as $child) {
                    $coreProperties[$child->getName()] = (string)$child;
                }
            }
        }
        
        return $coreProperties;
    }
    
    /**
     * Determine absolute zip path
     *
     * @param string $path
     * @return string
     */
    protected function absoluteZipPath($path) {
        $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
        $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
        $absolutes = array();
        foreach ($parts as $part) {
            if ('.' == $part) continue;
            if ('..' == $part) {
                array_pop($absolutes);
            } else {
                $absolutes[] = $part;
            }
        }
        return implode('/', $absolutes);
    }
}

} // end if (class_exists('ZipArchive'))
PKpG[���l#l#Search/Lucene/Document/Xlsx.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Document_OpenXml */
require_once 'Zend/Search/Lucene/Document/OpenXml.php';

if (class_exists('ZipArchive', false)) {

/**
 * Xlsx document.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Document_Xlsx extends Zend_Search_Lucene_Document_OpenXml
{
    /**
     * Xml Schema - SpreadsheetML
     *
     * @var string
     */
    const SCHEMA_SPREADSHEETML = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main';

    /**
     * Xml Schema - DrawingML
     *
     * @var string
     */
    const SCHEMA_DRAWINGML = 'http://schemas.openxmlformats.org/drawingml/2006/main';

    /**
     * Xml Schema - Shared Strings
     *
     * @var string
     */
    const SCHEMA_SHAREDSTRINGS = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings';

    /**
     * Xml Schema - Worksheet relation
     *
     * @var string
     */
    const SCHEMA_WORKSHEETRELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet';

    /**
     * Xml Schema - Slide notes relation
     *
     * @var string
     */
    const SCHEMA_SLIDENOTESRELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide';

    /**
     * Object constructor
     *
     * @param string  $fileName
     * @param boolean $storeContent
     */
    private function __construct($fileName, $storeContent)
    {
        // Document data holders
        $sharedStrings = array();
        $worksheets = array();
        $documentBody = array();
        $coreProperties = array();

        // Open OpenXML package
        $package = new ZipArchive();
        $package->open($fileName);

        // Read relations and search for officeDocument
        $relations = simplexml_load_string($package->getFromName("_rels/.rels"));
        foreach ($relations->Relationship as $rel) {
            if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_OFFICEDOCUMENT) {
                // Found office document! Read relations for workbook...
                $workbookRelations = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/_rels/" . basename($rel["Target"]) . ".rels")) );
                $workbookRelations->registerXPathNamespace("rel", Zend_Search_Lucene_Document_OpenXml::SCHEMA_RELATIONSHIP);

                // Read shared strings
                $sharedStringsPath = $workbookRelations->xpath("rel:Relationship[@Type='" . Zend_Search_Lucene_Document_Xlsx::SCHEMA_SHAREDSTRINGS . "']");
                $sharedStringsPath = (string)$sharedStringsPath[0]['Target'];
                $xmlStrings = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . $sharedStringsPath)) );
                if (isset($xmlStrings) && isset($xmlStrings->si)) {
                    foreach ($xmlStrings->si as $val) {
                        if (isset($val->t)) {
                            $sharedStrings[] = (string)$val->t;
                        } elseif (isset($val->r)) {
                            $sharedStrings[] = $this->_parseRichText($val);
                        }
                    }
                }

                // Loop relations for workbook and extract worksheets...
                foreach ($workbookRelations->Relationship as $workbookRelation) {
                    if ($workbookRelation["Type"] == Zend_Search_Lucene_Document_Xlsx::SCHEMA_WORKSHEETRELATION) {
                        $worksheets[ str_replace( 'rId', '', (string)$workbookRelation["Id"]) ] = simplexml_load_string(
                            $package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($workbookRelation["Target"]) . "/" . basename($workbookRelation["Target"])) )
                        );
                    }
                }

                break;
            }
        }

        // Sort worksheets
        ksort($worksheets);

        // Extract contents from worksheets
        foreach ($worksheets as $sheetKey => $worksheet) {
            foreach ($worksheet->sheetData->row as $row) {
                foreach ($row->c as $c) {
                    // Determine data type
                    $dataType = (string)$c["t"];
                    switch ($dataType) {
                        case "s":
                            // Value is a shared string
                            if ((string)$c->v != '') {
                                $value = $sharedStrings[intval($c->v)];
                            } else {
                                $value = '';
                            }

                            break;

                        case "b":
                            // Value is boolean
                            $value = (string)$c->v;
                            if ($value == '0') {
                                $value = false;
                            } else if ($value == '1') {
                                $value = true;
                            } else {
                                $value = (bool)$c->v;
                            }

                            break;

                        case "inlineStr":
                            // Value is rich text inline
                            $value = $this->_parseRichText($c->is);

                            break;

                        case "e":
                            // Value is an error message
                            if ((string)$c->v != '') {
                                $value = (string)$c->v;
                            } else {
                                $value = '';
                            }

                            break;

                        default:
                            // Value is a string
                            $value = (string)$c->v;

                            // Check for numeric values
                            if (is_numeric($value) && $dataType != 's') {
                                if ($value == (int)$value) $value = (int)$value;
                                elseif ($value == (float)$value) $value = (float)$value;
                                elseif ($value == (double)$value) $value = (double)$value;
                            }
                    }

                    $documentBody[] = $value;
                }
            }
        }

        // Read core properties
        $coreProperties = $this->extractMetaData($package);

        // Close file
        $package->close();

        // Store filename
        $this->addField(Zend_Search_Lucene_Field::Text('filename', $fileName, 'UTF-8'));

        // Store contents
        if ($storeContent) {
            $this->addField(Zend_Search_Lucene_Field::Text('body', implode(' ', $documentBody), 'UTF-8'));
        } else {
            $this->addField(Zend_Search_Lucene_Field::UnStored('body', implode(' ', $documentBody), 'UTF-8'));
        }

        // Store meta data properties
        foreach ($coreProperties as $key => $value)
        {
            $this->addField(Zend_Search_Lucene_Field::Text($key, $value, 'UTF-8'));
        }

        // Store title (if not present in meta data)
        if (!isset($coreProperties['title']))
        {
            $this->addField(Zend_Search_Lucene_Field::Text('title', $fileName, 'UTF-8'));
        }
    }

    /**
     * Parse rich text XML
     *
     * @param SimpleXMLElement $is
     * @return string
     */
    private function _parseRichText($is = null) {
        $value = array();

        if (isset($is->t)) {
            $value[] = (string)$is->t;
        } else {
            foreach ($is->r as $run) {
                $value[] = (string)$run->t;
            }
        }

        return implode('', $value);
    }

    /**
     * Load Xlsx document from a file
     *
     * @param string  $fileName
     * @param boolean $storeContent
     * @return Zend_Search_Lucene_Document_Xlsx
     */
    public static function loadXlsxFile($fileName, $storeContent = false)
    {
        return new Zend_Search_Lucene_Document_Xlsx($fileName, $storeContent);
    }
}

} // end if (class_exists('ZipArchive'))
PKpG[��!�[&[&Search/Lucene/Document/Html.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Document */
require_once 'Zend/Search/Lucene/Document.php';


/**
 * HTML document.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Document_Html extends Zend_Search_Lucene_Document
{
    /**
     * List of document links
     *
     * @var array
     */
    private $_links = array();

    /**
     * List of document header links
     *
     * @var array
     */
    private $_headerLinks = array();

    /**
     * Stored DOM representation
     *
     * @var DOMDocument
     */
    private $_doc;

    /**
     * Exclud nofollow links flag
     *
     * If true then links with rel='nofollow' attribute are not included into
     * document links.
     *
     * @var boolean
     */
    private static $_excludeNoFollowLinks = false;

    /**
     * Object constructor
     *
     * @param string  $data
     * @param boolean $isFile
     * @param boolean $storeContent
     */
    private function __construct($data, $isFile, $storeContent)
    {
        $this->_doc = new DOMDocument();
        $this->_doc->substituteEntities = true;

        if ($isFile) {
            $htmlData = file_get_contents($data);
        } else {
            $htmlData = $data;
        }
        @$this->_doc->loadHTML($htmlData);

        $xpath = new DOMXPath($this->_doc);

        $docTitle = '';
        $titleNodes = $xpath->query('/html/head/title');
        foreach ($titleNodes as $titleNode) {
            // title should always have only one entry, but we process all nodeset entries
            $docTitle .= $titleNode->nodeValue . ' ';
        }
        $this->addField(Zend_Search_Lucene_Field::Text('title', $docTitle, $this->_doc->actualEncoding));

        $metaNodes = $xpath->query('/html/head/meta[@name]');
        foreach ($metaNodes as $metaNode) {
            $this->addField(Zend_Search_Lucene_Field::Text($metaNode->getAttribute('name'),
                                                           $metaNode->getAttribute('content'),
                                                           $this->_doc->actualEncoding));
        }

        $docBody = '';
        $bodyNodes = $xpath->query('/html/body');
        foreach ($bodyNodes as $bodyNode) {
            // body should always have only one entry, but we process all nodeset entries
            $this->_retrieveNodeText($bodyNode, $docBody);
        }
        if ($storeContent) {
            $this->addField(Zend_Search_Lucene_Field::Text('body', $docBody, $this->_doc->actualEncoding));
        } else {
            $this->addField(Zend_Search_Lucene_Field::UnStored('body', $docBody, $this->_doc->actualEncoding));
        }

        $linkNodes = $this->_doc->getElementsByTagName('a');
        foreach ($linkNodes as $linkNode) {
            if (($href = $linkNode->getAttribute('href')) != '' &&
                (!self::$_excludeNoFollowLinks  ||  strtolower($linkNode->getAttribute('rel')) != 'nofollow' )
               ) {
                $this->_links[] = $href;
            }
        }
        $this->_links = array_unique($this->_links);

        $linkNodes = $xpath->query('/html/head/link');
        foreach ($linkNodes as $linkNode) {
            if (($href = $linkNode->getAttribute('href')) != '') {
                $this->_headerLinks[] = $href;
            }
        }
        $this->_headerLinks = array_unique($this->_headerLinks);
    }

    /**
     * Set exclude nofollow links flag
     *
     * @param boolean $newValue
     */
    public static function setExcludeNoFollowLinks($newValue)
    {
        self::$_excludeNoFollowLinks = $newValue;
    }

    /**
     * Get exclude nofollow links flag
     *
     * @return boolean
     */
    public static function getExcludeNoFollowLinks()
    {
        return self::$_excludeNoFollowLinks;
    }

    /**
     * Get node text
     *
     * We should exclude scripts, which may be not included into comment tags, CDATA sections,
     *
     * @param DOMNode $node
     * @param string &$text
     */
    private function _retrieveNodeText(DOMNode $node, &$text)
    {
        if ($node->nodeType == XML_TEXT_NODE) {
            $text .= $node->nodeValue ;
            $text .= ' ';
        } else if ($node->nodeType == XML_ELEMENT_NODE  &&  $node->nodeName != 'script') {
            foreach ($node->childNodes as $childNode) {
                $this->_retrieveNodeText($childNode, $text);
            }
        }
    }

    /**
     * Get document HREF links
     *
     * @return array
     */
    public function getLinks()
    {
        return $this->_links;
    }

    /**
     * Get document header links
     *
     * @return array
     */
    public function getHeaderLinks()
    {
        return $this->_headerLinks;
    }

    /**
     * Load HTML document from a string
     *
     * @param string $data
     * @param boolean $storeContent
     * @return Zend_Search_Lucene_Document_Html
     */
    public static function loadHTML($data, $storeContent = false)
    {
        return new Zend_Search_Lucene_Document_Html($data, false, $storeContent);
    }

    /**
     * Load HTML document from a file
     *
     * @param string $file
     * @param boolean $storeContent
     * @return Zend_Search_Lucene_Document_Html
     */
    public static function loadHTMLFile($file, $storeContent = false)
    {
        return new Zend_Search_Lucene_Document_Html($file, true, $storeContent);
    }


    /**
     * Highlight text in text node
     *
     * @param DOMText $node
     * @param array   $wordsToHighlight
     * @param string  $color
     */
    public function _highlightTextNode(DOMText $node, $wordsToHighlight, $color)
    {
        $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
        $analyzer->setInput($node->nodeValue, $this->_doc->encoding);

        $matchedTokens = array();

        while (($token = $analyzer->nextToken()) !== null) {
            if (isset($wordsToHighlight[$token->getTermText()])) {
                $matchedTokens[] = $token;
            }
        }

        if (count($matchedTokens) == 0) {
            return;
        }

        $matchedTokens = array_reverse($matchedTokens);

        foreach ($matchedTokens as $token) {
            // Cut text after matched token
            $node->splitText($token->getEndOffset());

            // Cut matched node
            $matchedWordNode = $node->splitText($token->getStartOffset());

            $highlightedNode = $this->_doc->createElement('b', $matchedWordNode->nodeValue);
            $highlightedNode->setAttribute('style', 'color:black;background-color:' . $color);

            $node->parentNode->replaceChild($highlightedNode, $matchedWordNode);
        }
    }


    /**
     * highlight words in content of the specified node
     *
     * @param DOMNode $contextNode
     * @param array $wordsToHighlight
     * @param string $color
     */
    public function _highlightNode(DOMNode $contextNode, $wordsToHighlight, $color)
    {
        $textNodes = array();

        if (!$contextNode->hasChildNodes()) {
            return;
        }

        foreach ($contextNode->childNodes as $childNode) {
            if ($childNode->nodeType == XML_TEXT_NODE) {
                // process node later to leave childNodes structure untouched
                $textNodes[] = $childNode;
            } else {
                // Skip script nodes
                if ($childNode->nodeName != 'script') {
                    $this->_highlightNode($childNode, $wordsToHighlight, $color);
                }
            }
        }

        foreach ($textNodes as $textNode) {
            $this->_highlightTextNode($textNode, $wordsToHighlight, $color);
        }
    }



    /**
     * Highlight text with specified color
     *
     * @param string|array $words
     * @param string $color
     * @return string
     */
    public function highlight($words, $color = '#66ffff')
    {
        if (!is_array($words)) {
            $words = array($words);
        }
        $wordsToHighlight = array();

        $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
        foreach ($words as $wordString) {
            $wordsToHighlight = array_merge($wordsToHighlight, $analyzer->tokenize($wordString));
        }

        if (count($wordsToHighlight) == 0) {
            return $this->_doc->saveHTML();
        }

        $wordsToHighlightFlipped = array();
        foreach ($wordsToHighlight as $id => $token) {
            $wordsToHighlightFlipped[$token->getTermText()] = $id;
        }

        $xpath = new DOMXPath($this->_doc);

        $matchedNodes = $xpath->query("/html/body");
        foreach ($matchedNodes as $matchedNode) {
            $this->_highlightNode($matchedNode, $wordsToHighlightFlipped, $color);
        }

    }

    /**
     * Get HTML
     *
     * @return string
     */
    public function getHTML()
    {
        return $this->_doc->saveHTML();
    }
}

PKpG[���]""Search/Lucene/Document/Docx.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Search_Lucene_Document_OpenXml */
require_once 'Zend/Search/Lucene/Document/OpenXml.php';

if (class_exists ( 'ZipArchive', false)) {

    /**
     * Docx document.
     *
     * @category   Zend
     * @package    Zend_Search_Lucene
     * @subpackage Document
     * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
     * @license    http://framework.zend.com/license/new-bsd     New BSD License
     */
    class Zend_Search_Lucene_Document_Docx extends Zend_Search_Lucene_Document_OpenXml {
        /**
         * Xml Schema - WordprocessingML
         *
         * @var string
         */
        const SCHEMA_WORDPROCESSINGML = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';

        /**
         * Object constructor
         *
         * @param string  $fileName
         * @param boolean $storeContent
         */
        private function __construct($fileName, $storeContent) {
            // Document data holders
            $documentBody = array ( );
            $coreProperties = array ( );

            // Open OpenXML package
            $package = new ZipArchive ( );
            $package->open ( $fileName );

            // Read relations and search for officeDocument
            $relations = simplexml_load_string ( $package->getFromName ( "_rels/.rels" ) );
            foreach ( $relations->Relationship as $rel ) {
                if ($rel ["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_OFFICEDOCUMENT) {
                    // Found office document! Read in contents...
                    $contents = simplexml_load_string ( $package->getFromName ( $this->absoluteZipPath ( dirname ( $rel ["Target"] ) . "/" . basename ( $rel ["Target"] ) ) ) );

                    $contents->registerXPathNamespace ( "w", Zend_Search_Lucene_Document_Docx::SCHEMA_WORDPROCESSINGML );
                    $paragraphs = $contents->xpath ( '//w:body/w:p' );

                    foreach ( $paragraphs as $paragraph ) {
                        $runs = $paragraph->xpath ( './/w:r/w:t' );
                        foreach ( $runs as $run ) {
                            $documentBody [] = ( string ) $run;
                        }
                    }

                    // Add space after each paragraph. So they are not bound together.
                    $documentBody[] = ' ';

                    break;
                }
            }

            // Read core properties
            $coreProperties = $this->extractMetaData ( $package );

            // Close file
            $package->close ();

            // Store filename
            $this->addField ( Zend_Search_Lucene_Field::Text ( 'filename', $fileName, 'UTF-8' ) );

            // Store contents
            if ($storeContent) {
                $this->addField ( Zend_Search_Lucene_Field::Text ( 'body', implode('', $documentBody), 'UTF-8' ) );
            } else {
                $this->addField ( Zend_Search_Lucene_Field::UnStored ( 'body', implode('', $documentBody), 'UTF-8'  ) );
            }

            // Store meta data properties
            foreach ( $coreProperties as $key => $value ) {
                $this->addField ( Zend_Search_Lucene_Field::Text ( $key, $value, 'UTF-8' ) );
            }

            // Store title (if not present in meta data)
            if (! isset ( $coreProperties ['title'] )) {
                $this->addField ( Zend_Search_Lucene_Field::Text ( 'title', $fileName, 'UTF-8' ) );
            }
        }

        /**
         * Load Docx document from a file
         *
         * @param string  $fileName
         * @param boolean $storeContent
         * @return Zend_Search_Lucene_Document_Docx
         */
        public static function loadDocxFile($fileName, $storeContent = false) {
            return new Zend_Search_Lucene_Document_Docx ( $fileName, $storeContent );
        }
    }

} // end if (class_exists('ZipArchive'))
PKpG[�����!�!Search/Lucene/LockManager.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Storage_Directory */
require_once 'Zend/Search/Lucene/Storage/Directory.php';

/** Zend_Search_Lucene_Storage_File */
require_once 'Zend/Search/Lucene/Storage/File.php';



/**
 * This is an utility class which provides index locks processing functionality
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_LockManager
{
    /**
     * consts for name of file to show lock status
     */
    const WRITE_LOCK_FILE                = 'write.lock.file';
    const READ_LOCK_FILE                 = 'read.lock.file';
    const READ_LOCK_PROCESSING_LOCK_FILE = 'read-lock-processing.lock.file';
    const OPTIMIZATION_LOCK_FILE         = 'optimization.lock.file';

    /**
     * Obtain exclusive write lock on the index
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     * @return Zend_Search_Lucene_Storage_File
     * @throws Zend_Search_Lucene_Exception
     */
    public static function obtainWriteLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->createFile(self::WRITE_LOCK_FILE);
        if (!$lock->lock(LOCK_EX)) {
            throw new Zend_Search_Lucene_Exception('Can\'t obtain exclusive index lock');
        }
        return $lock;
    }

    /**
     * Release exclusive write lock
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     */
    public static function releaseWriteLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->getFileObject(self::WRITE_LOCK_FILE);
        $lock->unlock();
    }

    /**
     * Obtain the exclusive "read escalation/de-escalation" lock
     *
     * Required to protect the escalate/de-escalate read lock process
     * on GFS (and potentially other) mounted filesystems.
     *
     * Why we need this:
     *  While GFS supports cluster-wide locking via flock(), it's
     *  implementation isn't quite what it should be.  The locking
     *  semantics that work consistently on a local filesystem tend to
     *  fail on GFS mounted filesystems.  This appears to be a design defect
     *  in the implementation of GFS.  How this manifests itself is that
     *  conditional promotion of a shared lock to exclusive will always
     *  fail, lock release requests are honored but not immediately
     *  processed (causing erratic failures of subsequent conditional
     *  requests) and the releasing of the exclusive lock before the
     *  shared lock is set when a lock is demoted (which can open a window
     *  of opportunity for another process to gain an exclusive lock when
     *  it shoudln't be allowed to).
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     * @return Zend_Search_Lucene_Storage_File
     * @throws Zend_Search_Lucene_Exception
     */

    private static function _startReadLockProcessing(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->createFile(self::READ_LOCK_PROCESSING_LOCK_FILE);
        if (!$lock->lock(LOCK_EX)) {
            throw new Zend_Search_Lucene_Exception('Can\'t obtain exclusive lock for the read lock processing file');
        }
        return $lock;
    }

    /**
     * Release the exclusive "read escalation/de-escalation" lock
     *
     * Required to protect the escalate/de-escalate read lock process
     * on GFS (and potentially other) mounted filesystems.
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     */
    private static function _stopReadLockProcessing(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->getFileObject(self::READ_LOCK_PROCESSING_LOCK_FILE);
        $lock->unlock();
    }


    /**
     * Obtain shared read lock on the index
     *
     * It doesn't block other read or update processes, but prevent index from the premature cleaning-up
     *
     * @param Zend_Search_Lucene_Storage_Directory $defaultLockDirectory
     * @return Zend_Search_Lucene_Storage_File
     * @throws Zend_Search_Lucene_Exception
     */
    public static function obtainReadLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->createFile(self::READ_LOCK_FILE);
        if (!$lock->lock(LOCK_SH)) {
            self::_stopReadLockProcessing($lockDirectory);
            throw new Zend_Search_Lucene_Exception('Can\'t obtain shared reading index lock');
        }
        return $lock;
    }

    /**
     * Release shared read lock
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     */
    public static function releaseReadLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->getFileObject(self::READ_LOCK_FILE);
        $lock->unlock();
    }

    /**
     * Escalate Read lock to exclusive level
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     * @return boolean
     */
    public static function escalateReadLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        self::_startReadLockProcessing($lockDirectory);

        $lock = $lockDirectory->getFileObject(self::READ_LOCK_FILE);

        // First, release the shared lock for the benefit of GFS since
        // it will fail the conditional request to promote the lock to
        // "exclusive" while the shared lock is held (even when we are
        // the only holder).
        $lock->unlock();

        // GFS is really poor.  While the above "unlock" returns, GFS
        // doesn't clean up it's tables right away (which will potentially
        // cause the conditional locking for the "exclusive" lock to fail.
        // We will retry the conditional lock request several times on a
        // failure to get past this.  The performance hit is negligible
        // in the grand scheme of things and only will occur with GFS
        // filesystems or if another local process has the shared lock
        // on local filesystems.
        for ($retries = 0; $retries < 10; $retries++) {
            if ($lock->lock(LOCK_EX, true)) {
                // Exclusive lock is obtained!
                self::_stopReadLockProcessing($lockDirectory);
                return true;
            }

            // wait 1 microsecond
            usleep(1);
        }

        // Restore lock state
        $lock->lock(LOCK_SH);

        self::_stopReadLockProcessing($lockDirectory);
        return false;
    }

    /**
     * De-escalate Read lock to shared level
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     */
    public static function deEscalateReadLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->getFileObject(self::READ_LOCK_FILE);
        $lock->lock(LOCK_SH);
    }

    /**
     * Obtain exclusive optimization lock on the index
     *
     * Returns lock object on success and false otherwise (doesn't block execution)
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     * @return mixed
     */
    public static function obtainOptimizationLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->createFile(self::OPTIMIZATION_LOCK_FILE);
        if (!$lock->lock(LOCK_EX, true)) {
            return false;
        }
        return $lock;
    }

    /**
     * Release exclusive optimization lock
     *
     * @param Zend_Search_Lucene_Storage_Directory $lockDirectory
     */
    public static function releaseOptimizationLock(Zend_Search_Lucene_Storage_Directory $lockDirectory)
    {
        $lock = $lockDirectory->getFileObject(self::OPTIMIZATION_LOCK_FILE);
        $lock->unlock();
    }

}
PKpG[��TTSearch/Lucene/Index/Term.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * A Term represents a word from text.  This is the unit of search.  It is
 * composed of two elements, the text of the word, as a string, and the name of
 * the field that the text occured in, an interned string.
 *
 * Note that terms may represent more than words from text fields, but also
 * things like dates, email addresses, urls, etc.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_Term
{
    /**
     * Field name or field number (depending from context)
     *
     * @var mixed
     */
    public $field;

    /**
     * Term value
     *
     * @var string
     */
    public $text;


    /**
     * Object constructor
     */
    public function __construct($text, $field = null)
    {
        $this->field = ($field === null)?  Zend_Search_Lucene::getDefaultSearchField() : $field;
        $this->text  = $text;
    }


    /**
     * Returns term key
     *
     * @return string
     */
    public function key()
    {
        return $this->field . chr(0) . $this->text;
    }

    /**
     * Get term prefix
     *
     * @param string $str
     * @param integer $length
     * @return string
     */
    public static function getPrefix($str, $length)
    {
        $prefixBytes = 0;
        $prefixChars = 0;
        while ($prefixBytes < strlen($str)  &&  $prefixChars < $length) {
            $charBytes = 1;
            if ((ord($str[$prefixBytes]) & 0xC0) == 0xC0) {
                $charBytes++;
                if (ord($str[$prefixBytes]) & 0x20 ) {
                    $charBytes++;
                    if (ord($str[$prefixBytes]) & 0x10 ) {
                        $charBytes++;
                    }
                }
            }

            if ($prefixBytes + $charBytes > strlen($str)) {
                // wrong character
                break;
            }

            $prefixChars++;
            $prefixBytes += $charBytes;
        }

        return substr($str, 0, $prefixBytes);
    }

    /**
     * Get UTF-8 string length
     *
     * @param string $str
     * @return string
     */
    public static function getLength($str)
    {
        $bytes = 0;
        $chars = 0;
        while ($bytes < strlen($str)) {
            $charBytes = 1;
            if ((ord($str[$bytes]) & 0xC0) == 0xC0) {
                $charBytes++;
                if (ord($str[$bytes]) & 0x20 ) {
                    $charBytes++;
                    if (ord($str[$bytes]) & 0x10 ) {
                        $charBytes++;
                    }
                }
            }

            if ($bytes + $charBytes > strlen($str)) {
                // wrong character
                break;
            }

            $chars++;
            $bytes += $charBytes;
        }

        return $chars;
    }
}

PKpG[χ�m��#Search/Lucene/Index/SegmentInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Search_Lucene_Index_DictionaryLoader */
require_once 'Zend/Search/Lucene/Index/DictionaryLoader.php';


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_LockManager */
require_once 'Zend/Search/Lucene/LockManager.php';

/** Zend_Search_Lucene_Index_DocsFilter */
require_once 'Zend/Search/Lucene/Index/DocsFilter.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_SegmentInfo
{
    /**
     * "Full scan vs fetch" boundary.
     *
     * If filter selectivity is less than this value, then full scan is performed
     * (since term entries fetching has some additional overhead).
     */
    const FULL_SCAN_VS_FETCH_BOUNDARY = 5;

    /**
     * Number of docs in a segment
     *
     * @var integer
     */
    private $_docCount;

    /**
     * Segment name
     *
     * @var string
     */
    private $_name;

    /**
     * Term Dictionary Index
     *
     * Array of arrays (Zend_Search_Lucene_Index_Term objects are represented as arrays because
     * of performance considerations)
     * [0] -> $termValue
     * [1] -> $termFieldNum
     *
     * Corresponding Zend_Search_Lucene_Index_TermInfo object stored in the $_termDictionaryInfos
     *
     * @var array
     */
    private $_termDictionary;

    /**
     * Term Dictionary Index TermInfos
     *
     * Array of arrays (Zend_Search_Lucene_Index_TermInfo objects are represented as arrays because
     * of performance considerations)
     * [0] -> $docFreq
     * [1] -> $freqPointer
     * [2] -> $proxPointer
     * [3] -> $skipOffset
     * [4] -> $indexPointer
     *
     * @var array
     */
    private $_termDictionaryInfos;

    /**
     * Segment fields. Array of Zend_Search_Lucene_Index_FieldInfo objects for this segment
     *
     * @var array
     */
    private $_fields;

    /**
     * Field positions in a dictionary.
     * (Term dictionary contains filelds ordered by names)
     *
     * @var array
     */
    private $_fieldsDicPositions;


    /**
     * Associative array where the key is the file name and the value is data offset
     * in a compound segment file (.csf).
     *
     * @var array
     */
    private $_segFiles;

    /**
     * Associative array where the key is the file name and the value is file size (.csf).
     *
     * @var array
     */
    private $_segFileSizes;

    /**
     * Delete file generation number
     *
     * -2 means autodetect latest delete generation
     * -1 means 'there is no delete file'
     *  0 means pre-2.1 format delete file
     *  X specifies used delete file
     *
     * @var integer
     */
    private $_delGen;

    /**
     * Segment has single norms file
     *
     * If true then one .nrm file is used for all fields
     * Otherwise .fN files are used
     *
     * @var boolean
     */
    private $_hasSingleNormFile;

    /**
     * Use compound segment file (*.cfs) to collect all other segment files
     * (excluding .del files)
     *
     * @var boolean
     */
    private $_isCompound;


    /**
     * File system adapter.
     *
     * @var Zend_Search_Lucene_Storage_Directory_Filesystem
     */
    private $_directory;

    /**
     * Normalization factors.
     * An array fieldName => normVector
     * normVector is a binary string.
     * Each byte corresponds to an indexed document in a segment and
     * encodes normalization factor (float value, encoded by
     * Zend_Search_Lucene_Search_Similarity::encodeNorm())
     *
     * @var array
     */
    private $_norms = array();

    /**
     * List of deleted documents.
     * bitset if bitset extension is loaded or array otherwise.
     *
     * @var mixed
     */
    private $_deleted = null;

    /**
     * $this->_deleted update flag
     *
     * @var boolean
     */
    private $_deletedDirty = false;

    /**
     * True if segment uses shared doc store
     *
     * @var boolean
     */
    private $_usesSharedDocStore;

    /*
     * Shared doc store options.
     * It's an assotiative array with the following items:
     * - 'offset'     => $docStoreOffset           The starting document in the shared doc store files where this segment's documents begin
     * - 'segment'    => $docStoreSegment          The name of the segment that has the shared doc store files.
     * - 'isCompound' => $docStoreIsCompoundFile   True, if compound file format is used for the shared doc store files (.cfx file).
     */
    private $_sharedDocStoreOptions;


    /**
     * Zend_Search_Lucene_Index_SegmentInfo constructor
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param string     $name
     * @param integer    $docCount
     * @param integer    $delGen
     * @param array|null $docStoreOptions
     * @param boolean    $hasSingleNormFile
     * @param boolean    $isCompound
     */
    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name, $docCount, $delGen = 0, $docStoreOptions = null, $hasSingleNormFile = false, $isCompound = null)
    {
        $this->_directory = $directory;
        $this->_name      = $name;
        $this->_docCount  = $docCount;

        if ($docStoreOptions !== null) {
            $this->_usesSharedDocStore    = true;
            $this->_sharedDocStoreOptions = $docStoreOptions;

            if ($docStoreOptions['isCompound']) {
                $cfxFile       = $this->_directory->getFileObject($docStoreOptions['segment'] . '.cfx');
                $cfxFilesCount = $cfxFile->readVInt();

                $cfxFiles     = array();
                $cfxFileSizes = array();

                for ($count = 0; $count < $cfxFilesCount; $count++) {
                    $dataOffset = $cfxFile->readLong();
                    if ($count != 0) {
                        $cfxFileSizes[$fileName] = $dataOffset - end($cfxFiles);
                    }
                    $fileName            = $cfxFile->readString();
                    $cfxFiles[$fileName] = $dataOffset;
                }
                if ($count != 0) {
                    $cfxFileSizes[$fileName] = $this->_directory->fileLength($docStoreOptions['segment'] . '.cfx') - $dataOffset;
                }

                $this->_sharedDocStoreOptions['files']     = $cfxFiles;
                $this->_sharedDocStoreOptions['fileSizes'] = $cfxFileSizes;
            }
        }

        $this->_hasSingleNormFile = $hasSingleNormFile;
        $this->_delGen            = $delGen;
        $this->_termDictionary    = null;


        if ($isCompound !== null) {
            $this->_isCompound    = $isCompound;
        } else {
            // It's a pre-2.1 segment or isCompound is set to 'unknown'
            // Detect if segment uses compound file
            try {
                // Try to open compound file
                $this->_directory->getFileObject($name . '.cfs');

                // Compound file is found
                $this->_isCompound = true;
            } catch (Zend_Search_Lucene_Exception $e) {
                if (strpos($e->getMessage(), 'is not readable') !== false) {
                    // Compound file is not found or is not readable
                    $this->_isCompound = false;
                } else {
                    throw $e;
                }
            }
        }

        $this->_segFiles = array();
        if ($this->_isCompound) {
            $cfsFile = $this->_directory->getFileObject($name . '.cfs');
            $segFilesCount = $cfsFile->readVInt();

            for ($count = 0; $count < $segFilesCount; $count++) {
                $dataOffset = $cfsFile->readLong();
                if ($count != 0) {
                    $this->_segFileSizes[$fileName] = $dataOffset - end($this->_segFiles);
                }
                $fileName = $cfsFile->readString();
                $this->_segFiles[$fileName] = $dataOffset;
            }
            if ($count != 0) {
                $this->_segFileSizes[$fileName] = $this->_directory->fileLength($name . '.cfs') - $dataOffset;
            }
        }

        $fnmFile = $this->openCompoundFile('.fnm');
        $fieldsCount = $fnmFile->readVInt();
        $fieldNames = array();
        $fieldNums  = array();
        $this->_fields = array();
        for ($count=0; $count < $fieldsCount; $count++) {
            $fieldName = $fnmFile->readString();
            $fieldBits = $fnmFile->readByte();
            $this->_fields[$count] = new Zend_Search_Lucene_Index_FieldInfo($fieldName,
                                                                            $fieldBits & 0x01 /* field is indexed */,
                                                                            $count,
                                                                            $fieldBits & 0x02 /* termvectors are stored */,
                                                                            $fieldBits & 0x10 /* norms are omitted */,
                                                                            $fieldBits & 0x20 /* payloads are stored */);
            if ($fieldBits & 0x10) {
                // norms are omitted for the indexed field
                $this->_norms[$count] = str_repeat(chr(Zend_Search_Lucene_Search_Similarity::encodeNorm(1.0)), $docCount);
            }

            $fieldNums[$count]  = $count;
            $fieldNames[$count] = $fieldName;
        }
        array_multisort($fieldNames, SORT_ASC, SORT_REGULAR, $fieldNums);
        $this->_fieldsDicPositions = array_flip($fieldNums);

        if ($this->_delGen == -2) {
            $this->_detectLatestDelGen();
        }

        if ($this->_delGen == -1) {
            // There is no delete file for this segment
            // Do nothing
        } else if ($this->_delGen == 0) {
            // It's a segment with pre-2.1 format delete file
            // Try to find delete file
            try {
                // '.del' files always stored in a separate file
                // Segment compound is not used
                $delFile = $this->_directory->getFileObject($this->_name . '.del');

                $byteCount = $delFile->readInt();
                $byteCount = ceil($byteCount/8);
                $bitCount  = $delFile->readInt();

                if ($bitCount == 0) {
                    $delBytes = '';
                } else {
                    $delBytes = $delFile->readBytes($byteCount);
                }

                if (extension_loaded('bitset')) {
                    $this->_deleted = $delBytes;
                } else {
                    $this->_deleted = array();
                    for ($count = 0; $count < $byteCount; $count++) {
                        $byte = ord($delBytes[$count]);
                        for ($bit = 0; $bit < 8; $bit++) {
                            if ($byte & (1<<$bit)) {
                                $this->_deleted[$count*8 + $bit] = 1;
                            }
                        }
                    }
                }
            } catch(Zend_Search_Exception $e) {
                if (strpos($e->getMessage(), 'is not readable') === false ) {
                    throw $e;
                }
                // There is no delete file
                // Do nothing
            }
        } else {
            // It's 2.1+ format delete file
            $delFile = $this->_directory->getFileObject($this->_name . '_' . base_convert($this->_delGen, 10, 36) . '.del');

            $format = $delFile->readInt();

            if ($format == (int)0xFFFFFFFF) {
                if (extension_loaded('bitset')) {
                    $this->_deleted = bitset_empty();
                } else {
                    $this->_deleted = array();
                }

                $byteCount = $delFile->readInt();
                $bitCount  = $delFile->readInt();

                $delFileSize = $this->_directory->fileLength($this->_name . '_' . base_convert($this->_delGen, 10, 36) . '.del');
                $byteNum = 0;

                do {
                    $dgap = $delFile->readVInt();
                    $nonZeroByte = $delFile->readByte();

                    $byteNum += $dgap;

                    for ($bit = 0; $bit < 8; $bit++) {
                        if ($nonZeroByte & (1<<$bit)) {
                            if (extension_loaded('bitset')) {
                                bitset_incl($this->_deleted, $byteNum*8 + $bit);
                            } else {
                                $this->_deleted[$byteNum*8 + $bit] = 1;
                            }
                        }
                    }
                } while ($delFile->tell() < $delFileSize);

            } else {
                // $format is actually byte count
                $byteCount = ceil($format/8);
                $bitCount  = $delFile->readInt();

                if ($bitCount == 0) {
                    $delBytes = '';
                } else {
                    $delBytes = $delFile->readBytes($byteCount);
                }

                if (extension_loaded('bitset')) {
                    $this->_deleted = $delBytes;
                } else {
                    $this->_deleted = array();
                    for ($count = 0; $count < $byteCount; $count++) {
                        $byte = ord($delBytes[$count]);
                        for ($bit = 0; $bit < 8; $bit++) {
                            if ($byte & (1<<$bit)) {
                                $this->_deleted[$count*8 + $bit] = 1;
                            }
                        }
                    }
                }
            }
        }
    }

    /**
     * Opens index file stoted within compound index file
     *
     * @param string $extension
     * @param boolean $shareHandler
     * @throws Zend_Search_Lucene_Exception
     * @return Zend_Search_Lucene_Storage_File
     */
    public function openCompoundFile($extension, $shareHandler = true)
    {
        if (($extension == '.fdx'  || $extension == '.fdt')  &&  $this->_usesSharedDocStore) {
            $fdxFName = $this->_sharedDocStoreOptions['segment'] . '.fdx';
            $fdtFName = $this->_sharedDocStoreOptions['segment'] . '.fdt';

            if (!$this->_sharedDocStoreOptions['isCompound']) {
                $fdxFile = $this->_directory->getFileObject($fdxFName, $shareHandler);
                $fdxFile->seek($this->_sharedDocStoreOptions['offset']*8, SEEK_CUR);

                if ($extension == '.fdx') {
                    // '.fdx' file is requested
                    return $fdxFile;
                } else {
                    // '.fdt' file is requested
                    $fdtStartOffset = $fdxFile->readLong();

                    $fdtFile = $this->_directory->getFileObject($fdtFName, $shareHandler);
                    $fdtFile->seek($fdtStartOffset, SEEK_CUR);

                    return $fdtFile;
                }
            }

            if( !isset($this->_sharedDocStoreOptions['files'][$fdxFName]) ) {
                throw new Zend_Search_Lucene_Exception('Shared doc storage segment compound file doesn\'t contain '
                                       . $fdxFName . ' file.' );
            }
            if( !isset($this->_sharedDocStoreOptions['files'][$fdtFName]) ) {
                throw new Zend_Search_Lucene_Exception('Shared doc storage segment compound file doesn\'t contain '
                                       . $fdtFName . ' file.' );
            }

            // Open shared docstore segment file
            $cfxFile = $this->_directory->getFileObject($this->_sharedDocStoreOptions['segment'] . '.cfx', $shareHandler);
            // Seek to the start of '.fdx' file within compound file
            $cfxFile->seek($this->_sharedDocStoreOptions['files'][$fdxFName]);
            // Seek to the start of current segment documents section
            $cfxFile->seek($this->_sharedDocStoreOptions['offset']*8, SEEK_CUR);

            if ($extension == '.fdx') {
                // '.fdx' file is requested
                return $cfxFile;
            } else {
                // '.fdt' file is requested
                $fdtStartOffset = $cfxFile->readLong();

                // Seek to the start of '.fdt' file within compound file
                $cfxFile->seek($this->_sharedDocStoreOptions['files'][$fdtFName]);
                // Seek to the start of current segment documents section
                $cfxFile->seek($fdtStartOffset, SEEK_CUR);

                return $fdtFile;
            }
        }

        $filename = $this->_name . $extension;

        if (!$this->_isCompound) {
            return $this->_directory->getFileObject($filename, $shareHandler);
        }

        if( !isset($this->_segFiles[$filename]) ) {
            throw new Zend_Search_Lucene_Exception('Segment compound file doesn\'t contain '
                                       . $filename . ' file.' );
        }

        $file = $this->_directory->getFileObject($this->_name . '.cfs', $shareHandler);
        $file->seek($this->_segFiles[$filename]);
        return $file;
    }

    /**
     * Get compound file length
     *
     * @param string $extension
     * @return integer
     */
    public function compoundFileLength($extension)
    {
        if (($extension == '.fdx'  || $extension == '.fdt')  &&  $this->_usesSharedDocStore) {
            $filename = $this->_sharedDocStoreOptions['segment'] . $extension;

            if (!$this->_sharedDocStoreOptions['isCompound']) {
                return $this->_directory->fileLength($filename);
            }

            if( !isset($this->_sharedDocStoreOptions['fileSizes'][$filename]) ) {
                throw new Zend_Search_Lucene_Exception('Shared doc store compound file doesn\'t contain '
                                           . $filename . ' file.' );
            }

            return $this->_sharedDocStoreOptions['fileSizes'][$filename];
        }


        $filename = $this->_name . $extension;

        // Try to get common file first
        if ($this->_directory->fileExists($filename)) {
            return $this->_directory->fileLength($filename);
        }

        if( !isset($this->_segFileSizes[$filename]) ) {
            throw new Zend_Search_Lucene_Exception('Index compound file doesn\'t contain '
                                       . $filename . ' file.' );
        }

        return $this->_segFileSizes[$filename];
    }

    /**
     * Returns field index or -1 if field is not found
     *
     * @param string $fieldName
     * @return integer
     */
    public function getFieldNum($fieldName)
    {
        foreach( $this->_fields as $field ) {
            if( $field->name == $fieldName ) {
                return $field->number;
            }
        }

        return -1;
    }

    /**
     * Returns field info for specified field
     *
     * @param integer $fieldNum
     * @return Zend_Search_Lucene_Index_FieldInfo
     */
    public function getField($fieldNum)
    {
        return $this->_fields[$fieldNum];
    }

    /**
     * Returns array of fields.
     * if $indexed parameter is true, then returns only indexed fields.
     *
     * @param boolean $indexed
     * @return array
     */
    public function getFields($indexed = false)
    {
        $result = array();
        foreach( $this->_fields as $field ) {
            if( (!$indexed) || $field->isIndexed ) {
                $result[ $field->name ] = $field->name;
            }
        }
        return $result;
    }

    /**
     * Returns array of FieldInfo objects.
     *
     * @return array
     */
    public function getFieldInfos()
    {
        return $this->_fields;
    }

    /**
     * Returns actual deletions file generation number.
     *
     * @return integer
     */
    public function getDelGen()
    {
        return $this->_delGen;
    }

    /**
     * Returns the total number of documents in this segment (including deleted documents).
     *
     * @return integer
     */
    public function count()
    {
        return $this->_docCount;
    }

    /**
     * Returns number of deleted documents.
     *
     * @return integer
     */
    private function _deletedCount()
    {
        if ($this->_deleted === null) {
            return 0;
        }

        if (extension_loaded('bitset')) {
            return count(bitset_to_array($this->_deleted));
        } else {
            return count($this->_deleted);
        }
    }

    /**
     * Returns the total number of non-deleted documents in this segment.
     *
     * @return integer
     */
    public function numDocs()
    {
        if ($this->hasDeletions()) {
            return $this->_docCount - $this->_deletedCount();
        } else {
            return $this->_docCount;
        }
    }

    /**
     * Get field position in a fields dictionary
     *
     * @param integer $fieldNum
     * @return integer
     */
    private function _getFieldPosition($fieldNum) {
        // Treat values which are not in a translation table as a 'direct value'
        return isset($this->_fieldsDicPositions[$fieldNum]) ?
                           $this->_fieldsDicPositions[$fieldNum] : $fieldNum;
    }

    /**
     * Return segment name
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }


    /**
     * TermInfo cache
     *
     * Size is 1024.
     * Numbers are used instead of class constants because of performance considerations
     *
     * @var array
     */
    private $_termInfoCache = array();

    private function _cleanUpTermInfoCache()
    {
        // Clean 256 term infos
        foreach ($this->_termInfoCache as $key => $termInfo) {
            unset($this->_termInfoCache[$key]);

            // leave 768 last used term infos
            if (count($this->_termInfoCache) == 768) {
                break;
            }
        }
    }

    /**
     * Load terms dictionary index
     *
     * @throws Zend_Search_Lucene_Exception
     */
    private function _loadDictionaryIndex()
    {
        // Check, if index is already serialized
        if ($this->_directory->fileExists($this->_name . '.sti')) {
            // Load serialized dictionary index data
            $stiFile = $this->_directory->getFileObject($this->_name . '.sti');
            $stiFileData = $stiFile->readBytes($this->_directory->fileLength($this->_name . '.sti'));

            // Load dictionary index data
            if (($unserializedData = @unserialize($stiFileData)) !== false) {
                list($this->_termDictionary, $this->_termDictionaryInfos) = $unserializedData;
                return;
            }
        }

        // Load data from .tii file and generate .sti file

        // Prefetch dictionary index data
        $tiiFile = $this->openCompoundFile('.tii');
        $tiiFileData = $tiiFile->readBytes($this->compoundFileLength('.tii'));

        // Load dictionary index data
        list($this->_termDictionary, $this->_termDictionaryInfos) =
                    Zend_Search_Lucene_Index_DictionaryLoader::load($tiiFileData);

        $stiFileData = serialize(array($this->_termDictionary, $this->_termDictionaryInfos));
        $stiFile = $this->_directory->createFile($this->_name . '.sti');
        $stiFile->writeBytes($stiFileData);
    }

    /**
     * Scans terms dictionary and returns term info
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return Zend_Search_Lucene_Index_TermInfo
     */
    public function getTermInfo(Zend_Search_Lucene_Index_Term $term)
    {
        $termKey = $term->key();
        if (isset($this->_termInfoCache[$termKey])) {
            $termInfo = $this->_termInfoCache[$termKey];

            // Move termInfo to the end of cache
            unset($this->_termInfoCache[$termKey]);
            $this->_termInfoCache[$termKey] = $termInfo;

            return $termInfo;
        }


        if ($this->_termDictionary === null) {
            $this->_loadDictionaryIndex();
        }

        $searchField = $this->getFieldNum($term->field);

        if ($searchField == -1) {
            return null;
        }
        $searchDicField = $this->_getFieldPosition($searchField);

        // search for appropriate value in dictionary
        $lowIndex = 0;
        $highIndex = count($this->_termDictionary)-1;
        while ($highIndex >= $lowIndex) {
            // $mid = ($highIndex - $lowIndex)/2;
            $mid = ($highIndex + $lowIndex) >> 1;
            $midTerm = $this->_termDictionary[$mid];

            $fieldNum = $this->_getFieldPosition($midTerm[0] /* field */);
            $delta = $searchDicField - $fieldNum;
            if ($delta == 0) {
                $delta = strcmp($term->text, $midTerm[1] /* text */);
            }

            if ($delta < 0) {
                $highIndex = $mid-1;
            } elseif ($delta > 0) {
                $lowIndex  = $mid+1;
            } else {
                // return $this->_termDictionaryInfos[$mid]; // We got it!
                $a = $this->_termDictionaryInfos[$mid];
                $termInfo = new Zend_Search_Lucene_Index_TermInfo($a[0], $a[1], $a[2], $a[3], $a[4]);

                // Put loaded termInfo into cache
                $this->_termInfoCache[$termKey] = $termInfo;

                return $termInfo;
            }
        }

        if ($highIndex == -1) {
            // Term is out of the dictionary range
            return null;
        }

        $prevPosition = $highIndex;
        $prevTerm = $this->_termDictionary[$prevPosition];
        $prevTermInfo = $this->_termDictionaryInfos[$prevPosition];

        $tisFile = $this->openCompoundFile('.tis');
        $tiVersion = $tisFile->readInt();
        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */  &&
            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
            throw new Zend_Search_Lucene_Exception('Wrong TermInfoFile file format');
        }

        $termCount     = $tisFile->readLong();
        $indexInterval = $tisFile->readInt();
        $skipInterval  = $tisFile->readInt();
        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
            $maxSkipLevels = $tisFile->readInt();
        }

        $tisFile->seek($prevTermInfo[4] /* indexPointer */ - (($tiVersion == (int)0xFFFFFFFD)? 24 : 20) /* header size*/, SEEK_CUR);

        $termValue    = $prevTerm[1] /* text */;
        $termFieldNum = $prevTerm[0] /* field */;
        $freqPointer = $prevTermInfo[1] /* freqPointer */;
        $proxPointer = $prevTermInfo[2] /* proxPointer */;
        for ($count = $prevPosition*$indexInterval + 1;
             $count <= $termCount &&
             ( $this->_getFieldPosition($termFieldNum) < $searchDicField ||
              ($this->_getFieldPosition($termFieldNum) == $searchDicField &&
               strcmp($termValue, $term->text) < 0) );
             $count++) {
            $termPrefixLength = $tisFile->readVInt();
            $termSuffix       = $tisFile->readString();
            $termFieldNum     = $tisFile->readVInt();
            $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($termValue, $termPrefixLength) . $termSuffix;

            $docFreq      = $tisFile->readVInt();
            $freqPointer += $tisFile->readVInt();
            $proxPointer += $tisFile->readVInt();
            if( $docFreq >= $skipInterval ) {
                $skipOffset = $tisFile->readVInt();
            } else {
                $skipOffset = 0;
            }
        }

        if ($termFieldNum == $searchField && $termValue == $term->text) {
            $termInfo = new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipOffset);
        } else {
            $termInfo = null;
        }

        // Put loaded termInfo into cache
        $this->_termInfoCache[$termKey] = $termInfo;

        if (count($this->_termInfoCache) == 1024) {
            $this->_cleanUpTermInfoCache();
        }

        return $termInfo;
    }

    /**
     * Returns IDs of all the documents containing term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param integer $shift
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termDocs(Zend_Search_Lucene_Index_Term $term, $shift = 0, $docsFilter = null)
    {
        $termInfo = $this->getTermInfo($term);

        if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
            if ($docsFilter !== null  &&  $docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                $docsFilter->segmentFilters[$this->_name] = array();
            }
            return array();
        }

        $frqFile = $this->openCompoundFile('.frq');
        $frqFile->seek($termInfo->freqPointer,SEEK_CUR);
        $docId  = 0;
        $result = array();

        if ($docsFilter !== null) {
            if (!$docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                throw new Zend_Search_Lucene_Exception('Documents filter must be an instance of Zend_Search_Lucene_Index_DocsFilter or null.');
            }

            if (isset($docsFilter->segmentFilters[$this->_name])) {
                // Filter already has some data for the current segment

                // Make short name for the filter (which doesn't need additional dereferencing)
                $filter = &$docsFilter->segmentFilters[$this->_name];

                // Check if filter is not empty
                if (count($filter) == 0) {
                    return array();
                }

                if ($this->_docCount/count($filter) < self::FULL_SCAN_VS_FETCH_BOUNDARY) {
                    // Perform fetching
// ---------------------------------------------------------------
                    $updatedFilterData = array();

                    for( $count=0; $count < $termInfo->docFreq; $count++ ) {
                        $docDelta = $frqFile->readVInt();
                        if( $docDelta % 2 == 1 ) {
                            $docId += ($docDelta-1)/2;
                        } else {
                            $docId += $docDelta/2;
                            // read freq
                            $frqFile->readVInt();
                        }

                        if (isset($filter[$docId])) {
                           $result[] = $shift + $docId;
                           $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                        }
                    }
                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
// ---------------------------------------------------------------
                } else {
                    // Perform full scan
                    $updatedFilterData = array();

                    for( $count=0; $count < $termInfo->docFreq; $count++ ) {
                        $docDelta = $frqFile->readVInt();
                        if( $docDelta % 2 == 1 ) {
                            $docId += ($docDelta-1)/2;
                        } else {
                            $docId += $docDelta/2;
                            // read freq
                            $frqFile->readVInt();
                        }

                        if (isset($filter[$docId])) {
                           $result[] = $shift + $docId;
                           $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                        }
                    }
                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
                }
            } else {
                // Filter is present, but doesn't has data for the current segment yet
                $filterData = array();
                for( $count=0; $count < $termInfo->docFreq; $count++ ) {
                    $docDelta = $frqFile->readVInt();
                    if( $docDelta % 2 == 1 ) {
                        $docId += ($docDelta-1)/2;
                    } else {
                        $docId += $docDelta/2;
                        // read freq
                        $frqFile->readVInt();
                    }

                    $result[] = $shift + $docId;
                    $filterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                }
                $docsFilter->segmentFilters[$this->_name] = $filterData;
            }
        } else {
            for( $count=0; $count < $termInfo->docFreq; $count++ ) {
                $docDelta = $frqFile->readVInt();
                if( $docDelta % 2 == 1 ) {
                    $docId += ($docDelta-1)/2;
                } else {
                    $docId += $docDelta/2;
                    // read freq
                    $frqFile->readVInt();
                }

                $result[] = $shift + $docId;
            }
        }

        return $result;
    }

    /**
     * Returns term freqs array.
     * Result array structure: array(docId => freq, ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param integer $shift
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return Zend_Search_Lucene_Index_TermInfo
     */
    public function termFreqs(Zend_Search_Lucene_Index_Term $term, $shift = 0, $docsFilter = null)
    {
        $termInfo = $this->getTermInfo($term);

        if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
            if ($docsFilter !== null  &&  $docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                $docsFilter->segmentFilters[$this->_name] = array();
            }
            return array();
        }

        $frqFile = $this->openCompoundFile('.frq');
        $frqFile->seek($termInfo->freqPointer,SEEK_CUR);
        $result = array();
        $docId = 0;

        $result = array();

        if ($docsFilter !== null) {
            if (!$docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                throw new Zend_Search_Lucene_Exception('Documents filter must be an instance of Zend_Search_Lucene_Index_DocsFilter or null.');
            }

            if (isset($docsFilter->segmentFilters[$this->_name])) {
                // Filter already has some data for the current segment

                // Make short name for the filter (which doesn't need additional dereferencing)
                $filter = &$docsFilter->segmentFilters[$this->_name];

                // Check if filter is not empty
                if (count($filter) == 0) {
                    return array();
                }


                if ($this->_docCount/count($filter) < self::FULL_SCAN_VS_FETCH_BOUNDARY) {
                    // Perform fetching
// ---------------------------------------------------------------
                    $updatedFilterData = array();

                    for ($count = 0; $count < $termInfo->docFreq; $count++) {
                        $docDelta = $frqFile->readVInt();
                        if ($docDelta % 2 == 1) {
                            $docId += ($docDelta-1)/2;
                            if (isset($filter[$docId])) {
                                $result[$shift + $docId] = 1;
                                $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                            }
                        } else {
                            $docId += $docDelta/2;
                            if (isset($filter[$docId])) {
                                $result[$shift + $docId] = $frqFile->readVInt();
                                $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                            }
                        }
                    }
                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
// ---------------------------------------------------------------
                } else {
                    // Perform full scan
                    $updatedFilterData = array();

                    for ($count = 0; $count < $termInfo->docFreq; $count++) {
                        $docDelta = $frqFile->readVInt();
                        if ($docDelta % 2 == 1) {
                            $docId += ($docDelta-1)/2;
                            if (isset($filter[$docId])) {
                                $result[$shift + $docId] = 1;
                                $updatedFilterData[$docId] = 1; // 1 is just some constant value, so we don't need additional var dereference here
                            }
                        } else {
                            $docId += $docDelta/2;
                            if (isset($filter[$docId])) {
                                $result[$shift + $docId] = $frqFile->readVInt();
                                $updatedFilterData[$docId] = 1; // 1 is just some constant value, so we don't need additional var dereference here
                            }
                        }
                    }
                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
                }
            } else {
                // Filter doesn't has data for current segment
                $filterData = array();

                for ($count = 0; $count < $termInfo->docFreq; $count++) {
                    $docDelta = $frqFile->readVInt();
                    if ($docDelta % 2 == 1) {
                        $docId += ($docDelta-1)/2;
                        $result[$shift + $docId] = 1;
                        $filterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                    } else {
                        $docId += $docDelta/2;
                        $result[$shift + $docId] = $frqFile->readVInt();
                        $filterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                    }
                }

                $docsFilter->segmentFilters[$this->_name] = $filterData;
            }
        } else {
            for ($count = 0; $count < $termInfo->docFreq; $count++) {
                $docDelta = $frqFile->readVInt();
                if ($docDelta % 2 == 1) {
                    $docId += ($docDelta-1)/2;
                    $result[$shift + $docId] = 1;
                } else {
                    $docId += $docDelta/2;
                    $result[$shift + $docId] = $frqFile->readVInt();
                }
            }
        }

        return $result;
    }

    /**
     * Returns term positions array.
     * Result array structure: array(docId => array(pos1, pos2, ...), ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param integer $shift
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return Zend_Search_Lucene_Index_TermInfo
     */
    public function termPositions(Zend_Search_Lucene_Index_Term $term, $shift = 0, $docsFilter = null)
    {
        $termInfo = $this->getTermInfo($term);

        if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
            if ($docsFilter !== null  &&  $docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                $docsFilter->segmentFilters[$this->_name] = array();
            }
            return array();
        }

        $frqFile = $this->openCompoundFile('.frq');
        $frqFile->seek($termInfo->freqPointer,SEEK_CUR);

        $docId = 0;
        $freqs = array();


        if ($docsFilter !== null) {
            if (!$docsFilter instanceof Zend_Search_Lucene_Index_DocsFilter) {
                throw new Zend_Search_Lucene_Exception('Documents filter must be an instance of Zend_Search_Lucene_Index_DocsFilter or null.');
            }

            if (isset($docsFilter->segmentFilters[$this->_name])) {
                // Filter already has some data for the current segment

                // Make short name for the filter (which doesn't need additional dereferencing)
                $filter = &$docsFilter->segmentFilters[$this->_name];

                // Check if filter is not empty
                if (count($filter) == 0) {
                    return array();
                }

                if ($this->_docCount/count($filter) < self::FULL_SCAN_VS_FETCH_BOUNDARY) {
                    // Perform fetching
// ---------------------------------------------------------------
                    for ($count = 0; $count < $termInfo->docFreq; $count++) {
                        $docDelta = $frqFile->readVInt();
                        if ($docDelta % 2 == 1) {
                            $docId += ($docDelta-1)/2;
                            $freqs[$docId] = 1;
                        } else {
                            $docId += $docDelta/2;
                            $freqs[$docId] = $frqFile->readVInt();
                        }
                    }

                    $updatedFilterData = array();
                    $result = array();
                    $prxFile = $this->openCompoundFile('.prx');
                    $prxFile->seek($termInfo->proxPointer, SEEK_CUR);
                    foreach ($freqs as $docId => $freq) {
                        $termPosition = 0;
                        $positions = array();

                        // we have to read .prx file to get right position for next doc
                        // even filter doesn't match current document
                        for ($count = 0; $count < $freq; $count++ ) {
                            $termPosition += $prxFile->readVInt();
                            $positions[] = $termPosition;
                        }

                        // Include into updated filter and into result only if doc is matched by filter
                        if (isset($filter[$docId])) {
                            $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                            $result[$shift + $docId] = $positions;
                        }
                    }

                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
// ---------------------------------------------------------------
                } else {
                    // Perform full scan
                    for ($count = 0; $count < $termInfo->docFreq; $count++) {
                        $docDelta = $frqFile->readVInt();
                        if ($docDelta % 2 == 1) {
                            $docId += ($docDelta-1)/2;
                            $freqs[$docId] = 1;
                        } else {
                            $docId += $docDelta/2;
                            $freqs[$docId] = $frqFile->readVInt();
                        }
                    }

                    $updatedFilterData = array();
                    $result = array();
                    $prxFile = $this->openCompoundFile('.prx');
                    $prxFile->seek($termInfo->proxPointer, SEEK_CUR);
                    foreach ($freqs as $docId => $freq) {
                        $termPosition = 0;
                        $positions = array();

                        // we have to read .prx file to get right position for next doc
                        // even filter doesn't match current document
                        for ($count = 0; $count < $freq; $count++ ) {
                            $termPosition += $prxFile->readVInt();
                            $positions[] = $termPosition;
                        }

                        // Include into updated filter and into result only if doc is matched by filter
                        if (isset($filter[$docId])) {
                            $updatedFilterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here
                            $result[$shift + $docId] = $positions;
                        }
                    }

                    $docsFilter->segmentFilters[$this->_name] = $updatedFilterData;
                }
            } else {
                // Filter doesn't has data for current segment
                for ($count = 0; $count < $termInfo->docFreq; $count++) {
                    $docDelta = $frqFile->readVInt();
                    if ($docDelta % 2 == 1) {
                        $docId += ($docDelta-1)/2;
                        $freqs[$docId] = 1;
                    } else {
                        $docId += $docDelta/2;
                        $freqs[$docId] = $frqFile->readVInt();
                    }
                }

                $filterData = array();
                $result = array();
                $prxFile = $this->openCompoundFile('.prx');
                $prxFile->seek($termInfo->proxPointer, SEEK_CUR);
                foreach ($freqs as $docId => $freq) {
                    $filterData[$docId] = 1; // 1 is just a some constant value, so we don't need additional var dereference here

                    $termPosition = 0;
                    $positions = array();

                    for ($count = 0; $count < $freq; $count++ ) {
                        $termPosition += $prxFile->readVInt();
                        $positions[] = $termPosition;
                    }

                    $result[$shift + $docId] = $positions;
                }

                $docsFilter->segmentFilters[$this->_name] = $filterData;
            }
        } else {
            for ($count = 0; $count < $termInfo->docFreq; $count++) {
                $docDelta = $frqFile->readVInt();
                if ($docDelta % 2 == 1) {
                    $docId += ($docDelta-1)/2;
                    $freqs[$docId] = 1;
                } else {
                    $docId += $docDelta/2;
                    $freqs[$docId] = $frqFile->readVInt();
                }
            }

            $result = array();
            $prxFile = $this->openCompoundFile('.prx');
            $prxFile->seek($termInfo->proxPointer, SEEK_CUR);
            foreach ($freqs as $docId => $freq) {
                $termPosition = 0;
                $positions = array();

                for ($count = 0; $count < $freq; $count++ ) {
                    $termPosition += $prxFile->readVInt();
                    $positions[] = $termPosition;
                }

                $result[$shift + $docId] = $positions;
            }
        }

        return $result;
    }

    /**
     * Load normalizatin factors from an index file
     *
     * @param integer $fieldNum
     * @throws Zend_Search_Lucene_Exception
     */
    private function _loadNorm($fieldNum)
    {
        if ($this->_hasSingleNormFile) {
            $normfFile = $this->openCompoundFile('.nrm');

            $header              = $normfFile->readBytes(3);
            $headerFormatVersion = $normfFile->readByte();

            if ($header != 'NRM'  ||  $headerFormatVersion != (int)0xFF) {
                throw new  Zend_Search_Lucene_Exception('Wrong norms file format.');
            }

            foreach ($this->_fields as $fNum => $fieldInfo) {
                if ($fieldInfo->isIndexed) {
                    $this->_norms[$fNum] = $normfFile->readBytes($this->_docCount);
                }
            }
        } else {
            $fFile = $this->openCompoundFile('.f' . $fieldNum);
            $this->_norms[$fieldNum] = $fFile->readBytes($this->_docCount);
        }
    }

    /**
     * Returns normalization factor for specified documents
     *
     * @param integer $id
     * @param string $fieldName
     * @return float
     */
    public function norm($id, $fieldName)
    {
        $fieldNum = $this->getFieldNum($fieldName);

        if ( !($this->_fields[$fieldNum]->isIndexed) ) {
            return null;
        }

        if (!isset($this->_norms[$fieldNum])) {
            $this->_loadNorm($fieldNum);
        }

        return Zend_Search_Lucene_Search_Similarity::decodeNorm( ord($this->_norms[$fieldNum][$id]) );
    }

    /**
     * Returns norm vector, encoded in a byte string
     *
     * @param string $fieldName
     * @return string
     */
    public function normVector($fieldName)
    {
        $fieldNum = $this->getFieldNum($fieldName);

        if ($fieldNum == -1  ||  !($this->_fields[$fieldNum]->isIndexed)) {
            $similarity = Zend_Search_Lucene_Search_Similarity::getDefault();

            return str_repeat(chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) )),
                              $this->_docCount);
        }

        if (!isset($this->_norms[$fieldNum])) {
            $this->_loadNorm($fieldNum);
        }

        return $this->_norms[$fieldNum];
    }


    /**
     * Returns true if any documents have been deleted from this index segment.
     *
     * @return boolean
     */
    public function hasDeletions()
    {
        return $this->_deleted !== null;
    }


    /**
     * Returns true if segment has single norms file.
     *
     * @return boolean
     */
    public function hasSingleNormFile()
    {
        return $this->_hasSingleNormFile ? true : false;
    }

    /**
     * Returns true if segment is stored using compound segment file.
     *
     * @return boolean
     */
    public function isCompound()
    {
        return $this->_isCompound;
    }

    /**
     * Deletes a document from the index segment.
     * $id is an internal document id
     *
     * @param integer
     */
    public function delete($id)
    {
        $this->_deletedDirty = true;

        if (extension_loaded('bitset')) {
            if ($this->_deleted === null) {
                $this->_deleted = bitset_empty($id);
            }
            bitset_incl($this->_deleted, $id);
        } else {
            if ($this->_deleted === null) {
                $this->_deleted = array();
            }

            $this->_deleted[$id] = 1;
        }
    }

    /**
     * Checks, that document is deleted
     *
     * @param integer
     * @return boolean
     */
    public function isDeleted($id)
    {
        if ($this->_deleted === null) {
            return false;
        }

        if (extension_loaded('bitset')) {
            return bitset_in($this->_deleted, $id);
        } else {
            return isset($this->_deleted[$id]);
        }
    }


    /**
     * Detect latest delete generation
     *
     * Is actualy used from writeChanges() method or from the constructor if it's invoked from
     * Index writer. In both cases index write lock is already obtained, so we shouldn't care
     * about it
     */
    private function _detectLatestDelGen()
    {
        $delFileList = array();
        foreach ($this->_directory->fileList() as $file) {
            if ($file == $this->_name . '.del') {
                // Matches <segment_name>.del file name
                $delFileList[] = 0;
            } else if (preg_match('/^' . $this->_name . '_([a-zA-Z0-9]+)\.del$/i', $file, $matches)) {
                // Matches <segment_name>_NNN.del file names
                $delFileList[] = (int)base_convert($matches[1], 36, 10);
            }
        }

        if (count($delFileList) == 0) {
            // There is no deletions file for current segment in the directory
            // Set detetions file generation number to 1
            $this->_delGen = -1;
        } else {
            // There are some deletions files for current segment in the directory
            // Set deletions file generation number to the highest nuber
            $this->_delGen = max($delFileList);
        }
    }

    /**
     * Write changes if it's necessary.
     *
     * This method must be invoked only from the Writer _updateSegments() method,
     * so index Write lock has to be already obtained.
     *
     * @internal
     */
    public function writeChanges()
    {
        if (!$this->_deletedDirty) {
            return;
        }

        if (extension_loaded('bitset')) {
            $delBytes = $this->_deleted;
            $bitCount = count(bitset_to_array($delBytes));
        } else {
            $byteCount = floor($this->_docCount/8)+1;
            $delBytes = str_repeat(chr(0), $byteCount);
            for ($count = 0; $count < $byteCount; $count++) {
                $byte = 0;
                for ($bit = 0; $bit < 8; $bit++) {
                    if (isset($this->_deleted[$count*8 + $bit])) {
                        $byte |= (1<<$bit);
                    }
                }
                $delBytes[$count] = chr($byte);
            }
            $bitCount = count($this->_deleted);
        }


        // Get new generation number
        $this->_detectLatestDelGen();

        if ($this->_delGen == -1) {
            // Set delete file generation number to 1
            $this->_delGen = 1;
        } else {
            // Increase delete file generation number by 1
            $this->_delGen++;
        }

        $delFile = $this->_directory->createFile($this->_name . '_' . base_convert($this->_delGen, 10, 36) . '.del');
        $delFile->writeInt($this->_docCount);
        $delFile->writeInt($bitCount);
        $delFile->writeBytes($delBytes);

        $this->_deletedDirty = false;
    }



    /**
     * Term Dictionary File object for stream like terms reading
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_tisFile = null;

    /**
     * Actual offset of the .tis file data
     *
     * @var integer
     */
    private $_tisFileOffset;

    /**
     * Frequencies File object for stream like terms reading
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_frqFile = null;

    /**
     * Actual offset of the .frq file data
     *
     * @var integer
     */
    private $_frqFileOffset;

    /**
     * Positions File object for stream like terms reading
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_prxFile = null;

    /**
     * Actual offset of the .prx file in the compound file
     *
     * @var integer
     */
    private $_prxFileOffset;


    /**
     * Actual number of terms in term stream
     *
     * @var integer
     */
    private $_termCount = 0;

    /**
     * Overall number of terms in term stream
     *
     * @var integer
     */
    private $_termNum = 0;

    /**
     * Segment index interval
     *
     * @var integer
     */
    private $_indexInterval;

    /**
     * Segment skip interval
     *
     * @var integer
     */
    private $_skipInterval;

    /**
     * Last TermInfo in a terms stream
     *
     * @var Zend_Search_Lucene_Index_TermInfo
     */
    private $_lastTermInfo = null;

    /**
     * Last Term in a terms stream
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_lastTerm = null;

    /**
     * Map of the document IDs
     * Used to get new docID after removing deleted documents.
     * It's not very effective from memory usage point of view,
     * but much more faster, then other methods
     *
     * @var array|null
     */
    private $_docMap = null;

    /**
     * An array of all term positions in the documents.
     * Array structure: array( docId => array( pos1, pos2, ...), ...)
     *
     * Is set to null if term positions loading has to be skipped
     *
     * @var array|null
     */
    private $_lastTermPositions;


    /**
     * Terms scan mode
     *
     * Values:
     *
     * self::SM_TERMS_ONLY - terms are scanned, no additional info is retrieved
     * self::SM_FULL_INFO  - terms are scanned, frequency and position info is retrieved
     * self::SM_MERGE_INFO - terms are scanned, frequency and position info is retrieved
     *                       document numbers are compacted (shifted if segment has deleted documents)
     *
     * @var integer
     */
    private $_termsScanMode;

    /** Scan modes */
    const SM_TERMS_ONLY = 0;    // terms are scanned, no additional info is retrieved
    const SM_FULL_INFO  = 1;    // terms are scanned, frequency and position info is retrieved
    const SM_MERGE_INFO = 2;    // terms are scanned, frequency and position info is retrieved
                                // document numbers are compacted (shifted if segment contains deleted documents)

    /**
     * Reset terms stream
     *
     * $startId - id for the fist document
     * $compact - remove deleted documents
     *
     * Returns start document id for the next segment
     *
     * @param integer $startId
     * @param integer $mode
     * @throws Zend_Search_Lucene_Exception
     * @return integer
     */
    public function reset($startId = 0, $mode = self::SM_TERMS_ONLY)
    {
        if ($this->_tisFile !== null) {
            $this->_tisFile = null;
        }

        $this->_tisFile = $this->openCompoundFile('.tis', false);
        $this->_tisFileOffset = $this->_tisFile->tell();

        $tiVersion = $this->_tisFile->readInt();
        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */  &&
            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
            throw new Zend_Search_Lucene_Exception('Wrong TermInfoFile file format');
        }

        $this->_termCount     =
              $this->_termNum = $this->_tisFile->readLong(); // Read terms count
        $this->_indexInterval = $this->_tisFile->readInt();  // Read Index interval
        $this->_skipInterval  = $this->_tisFile->readInt();  // Read skip interval
        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
            $maxSkipLevels = $this->_tisFile->readInt();
        }

        if ($this->_frqFile !== null) {
            $this->_frqFile = null;
        }
        if ($this->_prxFile !== null) {
            $this->_prxFile = null;
        }
        $this->_docMap = array();

        $this->_lastTerm          = new Zend_Search_Lucene_Index_Term('', -1);
        $this->_lastTermInfo      = new Zend_Search_Lucene_Index_TermInfo(0, 0, 0, 0);
        $this->_lastTermPositions = null;

        $this->_termsScanMode = $mode;

        switch ($mode) {
            case self::SM_TERMS_ONLY:
                // Do nothing
                break;

            case self::SM_FULL_INFO:
                // break intentionally omitted
            case self::SM_MERGE_INFO:
                $this->_frqFile = $this->openCompoundFile('.frq', false);
                $this->_frqFileOffset = $this->_frqFile->tell();

                $this->_prxFile = $this->openCompoundFile('.prx', false);
                $this->_prxFileOffset = $this->_prxFile->tell();

                for ($count = 0; $count < $this->_docCount; $count++) {
                    if (!$this->isDeleted($count)) {
                        $this->_docMap[$count] = $startId + (($mode == self::SM_MERGE_INFO) ? count($this->_docMap) : $count);
                    }
                }
                break;

            default:
                throw new Zend_Search_Lucene_Exception('Wrong terms scaning mode specified.');
                break;
        }


        $this->nextTerm();
        return $startId + (($mode == self::SM_MERGE_INFO) ? count($this->_docMap) : $this->_docCount);
    }


    /**
     * Skip terms stream up to specified term preffix.
     *
     * Prefix contains fully specified field info and portion of searched term
     *
     * @param Zend_Search_Lucene_Index_Term $prefix
     * @throws Zend_Search_Lucene_Exception
     */
    public function skipTo(Zend_Search_Lucene_Index_Term $prefix)
    {
        if ($this->_termDictionary === null) {
            $this->_loadDictionaryIndex();
        }

        $searchField = $this->getFieldNum($prefix->field);

        if ($searchField == -1) {
            /**
             * Field is not presented in this segment
             * Go to the end of dictionary
             */
            $this->_tisFile = null;
            $this->_frqFile = null;
            $this->_prxFile = null;

            $this->_lastTerm          = null;
            $this->_lastTermInfo      = null;
            $this->_lastTermPositions = null;

            return;
        }
        $searchDicField = $this->_getFieldPosition($searchField);

        // search for appropriate value in dictionary
        $lowIndex = 0;
        $highIndex = count($this->_termDictionary)-1;
        while ($highIndex >= $lowIndex) {
            // $mid = ($highIndex - $lowIndex)/2;
            $mid = ($highIndex + $lowIndex) >> 1;
            $midTerm = $this->_termDictionary[$mid];

            $fieldNum = $this->_getFieldPosition($midTerm[0] /* field */);
            $delta = $searchDicField - $fieldNum;
            if ($delta == 0) {
                $delta = strcmp($prefix->text, $midTerm[1] /* text */);
            }

            if ($delta < 0) {
                $highIndex = $mid-1;
            } elseif ($delta > 0) {
                $lowIndex  = $mid+1;
            } else {
                // We have reached term we are looking for
                break;
            }
        }

        if ($highIndex == -1) {
            // Term is out of the dictionary range
            $this->_tisFile = null;
            $this->_frqFile = null;
            $this->_prxFile = null;

            $this->_lastTerm          = null;
            $this->_lastTermInfo      = null;
            $this->_lastTermPositions = null;

            return;
        }

        $prevPosition = $highIndex;
        $prevTerm = $this->_termDictionary[$prevPosition];
        $prevTermInfo = $this->_termDictionaryInfos[$prevPosition];

        if ($this->_tisFile === null) {
            // The end of terms stream is reached and terms dictionary file is closed
            // Perform mini-reset operation
            $this->_tisFile = $this->openCompoundFile('.tis', false);

            if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
                $this->_frqFile = $this->openCompoundFile('.frq', false);
                $this->_prxFile = $this->openCompoundFile('.prx', false);
            }
        }
        $this->_tisFile->seek($this->_tisFileOffset + $prevTermInfo[4], SEEK_SET);

        $this->_lastTerm     = new Zend_Search_Lucene_Index_Term($prevTerm[1] /* text */,
                                                                 ($prevTerm[0] == -1) ? '' : $this->_fields[$prevTerm[0] /* field */]->name);
        $this->_lastTermInfo = new Zend_Search_Lucene_Index_TermInfo($prevTermInfo[0] /* docFreq */,
                                                                     $prevTermInfo[1] /* freqPointer */,
                                                                     $prevTermInfo[2] /* proxPointer */,
                                                                     $prevTermInfo[3] /* skipOffset */);
        $this->_termCount  =  $this->_termNum - $prevPosition*$this->_indexInterval;

        if ($highIndex == 0) {
            // skip start entry
            $this->nextTerm();
        } else if ($prefix->field == $this->_lastTerm->field  &&  $prefix->text  == $this->_lastTerm->text) {
            // We got exact match in the dictionary index

            if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
                $this->_lastTermPositions = array();

                $this->_frqFile->seek($this->_lastTermInfo->freqPointer + $this->_frqFileOffset, SEEK_SET);
                $freqs = array();   $docId = 0;
                for( $count = 0; $count < $this->_lastTermInfo->docFreq; $count++ ) {
                    $docDelta = $this->_frqFile->readVInt();
                    if( $docDelta % 2 == 1 ) {
                        $docId += ($docDelta-1)/2;
                        $freqs[ $docId ] = 1;
                    } else {
                        $docId += $docDelta/2;
                        $freqs[ $docId ] = $this->_frqFile->readVInt();
                    }
                }

                $this->_prxFile->seek($this->_lastTermInfo->proxPointer + $this->_prxFileOffset, SEEK_SET);
                foreach ($freqs as $docId => $freq) {
                    $termPosition = 0;  $positions = array();

                    for ($count = 0; $count < $freq; $count++ ) {
                        $termPosition += $this->_prxFile->readVInt();
                        $positions[] = $termPosition;
                    }

                    if (isset($this->_docMap[$docId])) {
                        $this->_lastTermPositions[$this->_docMap[$docId]] = $positions;
                    }
                }
            }

            return;
        }

        // Search term matching specified prefix
        while ($this->_lastTerm !== null) {
            if ( strcmp($this->_lastTerm->field, $prefix->field) > 0  ||
                 ($prefix->field == $this->_lastTerm->field  &&  strcmp($this->_lastTerm->text, $prefix->text) >= 0) ) {
                    // Current term matches or greate than the pattern
                    return;
            }

            $this->nextTerm();
        }
    }


    /**
     * Scans terms dictionary and returns next term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function nextTerm()
    {
        if ($this->_tisFile === null  ||  $this->_termCount == 0) {
            $this->_lastTerm          = null;
            $this->_lastTermInfo      = null;
            $this->_lastTermPositions = null;
            $this->_docMap            = null;

            // may be necessary for "empty" segment
            $this->_tisFile = null;
            $this->_frqFile = null;
            $this->_prxFile = null;

            return null;
        }

        $termPrefixLength = $this->_tisFile->readVInt();
        $termSuffix       = $this->_tisFile->readString();
        $termFieldNum     = $this->_tisFile->readVInt();
        $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($this->_lastTerm->text, $termPrefixLength) . $termSuffix;

        $this->_lastTerm = new Zend_Search_Lucene_Index_Term($termValue, $this->_fields[$termFieldNum]->name);

        $docFreq     = $this->_tisFile->readVInt();
        $freqPointer = $this->_lastTermInfo->freqPointer + $this->_tisFile->readVInt();
        $proxPointer = $this->_lastTermInfo->proxPointer + $this->_tisFile->readVInt();
        if ($docFreq >= $this->_skipInterval) {
            $skipOffset = $this->_tisFile->readVInt();
        } else {
            $skipOffset = 0;
        }

        $this->_lastTermInfo = new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipOffset);


        if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
            $this->_lastTermPositions = array();

            $this->_frqFile->seek($this->_lastTermInfo->freqPointer + $this->_frqFileOffset, SEEK_SET);
            $freqs = array();   $docId = 0;
            for( $count = 0; $count < $this->_lastTermInfo->docFreq; $count++ ) {
                $docDelta = $this->_frqFile->readVInt();
                if( $docDelta % 2 == 1 ) {
                    $docId += ($docDelta-1)/2;
                    $freqs[ $docId ] = 1;
                } else {
                    $docId += $docDelta/2;
                    $freqs[ $docId ] = $this->_frqFile->readVInt();
                }
            }

            $this->_prxFile->seek($this->_lastTermInfo->proxPointer + $this->_prxFileOffset, SEEK_SET);
            foreach ($freqs as $docId => $freq) {
                $termPosition = 0;  $positions = array();

                for ($count = 0; $count < $freq; $count++ ) {
                    $termPosition += $this->_prxFile->readVInt();
                    $positions[] = $termPosition;
                }

                if (isset($this->_docMap[$docId])) {
                    $this->_lastTermPositions[$this->_docMap[$docId]] = $positions;
                }
            }
        }

        $this->_termCount--;
        if ($this->_termCount == 0) {
            $this->_tisFile = null;
            $this->_frqFile = null;
            $this->_prxFile = null;
        }

        return $this->_lastTerm;
    }

    /**
     * Close terms stream
     *
     * Should be used for resources clean up if stream is not read up to the end
     */
    public function closeTermsStream()
    {
        $this->_tisFile = null;
        $this->_frqFile = null;
        $this->_prxFile = null;

        $this->_lastTerm          = null;
        $this->_lastTermInfo      = null;
        $this->_lastTermPositions = null;

        $this->_docMap            = null;
    }


    /**
     * Returns term in current position
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function currentTerm()
    {
        return $this->_lastTerm;
    }


    /**
     * Returns an array of all term positions in the documents.
     * Return array structure: array( docId => array( pos1, pos2, ...), ...)
     *
     * @return array
     */
    public function currentTermPositions()
    {
        return $this->_lastTermPositions;
    }
}

PKpG[(t�%FF0Search/Lucene/Index/SegmentInfoPriorityQueue.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene */
require_once 'Zend/Search/Lucene/PriorityQueue.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_SegmentInfoPriorityQueue extends Zend_Search_Lucene_PriorityQueue
{
    /**
     * Compare elements
     *
     * Returns true, if $el1 is less than $el2; else otherwise
     *
     * @param mixed $segmentInfo1
     * @param mixed $segmentInfo2
     * @return boolean
     */
    protected function _less($segmentInfo1, $segmentInfo2)
    {
        return strcmp($segmentInfo1->currentTerm()->key(), $segmentInfo2->currentTerm()->key()) < 0;
    }

}
PKpG[�>;���2Search/Lucene/Index/SegmentWriter/StreamWriter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';

/** Zend_Search_Lucene_Index_SegmentWriter */
require_once 'Zend/Search/Lucene/Index/SegmentWriter.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_SegmentWriter_StreamWriter extends Zend_Search_Lucene_Index_SegmentWriter
{
    /**
     * Object constructor.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param string $name
     */
    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
    {
        parent::__construct($directory, $name);
    }


    /**
     * Create stored fields files and open them for write
     */
    public function createStoredFieldsFiles()
    {
        $this->_fdxFile = $this->_directory->createFile($this->_name . '.fdx');
        $this->_fdtFile = $this->_directory->createFile($this->_name . '.fdt');

        $this->_files[] = $this->_name . '.fdx';
        $this->_files[] = $this->_name . '.fdt';
    }

    public function addNorm($fieldName, $normVector)
    {
        if (isset($this->_norms[$fieldName])) {
            $this->_norms[$fieldName] .= $normVector;
        } else {
            $this->_norms[$fieldName] = $normVector;
        }
    }

    /**
     * Close segment, write it to disk and return segment info
     *
     * @return Zend_Search_Lucene_Index_SegmentInfo
     */
    public function close()
    {
        if ($this->_docCount == 0) {
            return null;
        }

        $this->_dumpFNM();
        $this->_generateCFS();

        return new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
                                                        $this->_name,
                                                        $this->_docCount,
                                                        -1,
                                                        null,
                                                        true,
                                                        true);
    }
}

PKpG[#$	���4Search/Lucene/Index/SegmentWriter/DocumentWriter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Analysis_Analyzer */
require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';

/** Zend_Search_Lucene_Index_SegmentWriter */
require_once 'Zend/Search/Lucene/Index/SegmentWriter.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter extends Zend_Search_Lucene_Index_SegmentWriter
{
    /**
     * Term Dictionary
     * Array of the Zend_Search_Lucene_Index_Term objects
     * Corresponding Zend_Search_Lucene_Index_TermInfo object stored in the $_termDictionaryInfos
     *
     * @var array
     */
    protected $_termDictionary;

    /**
     * Documents, which contain the term
     *
     * @var array
     */
    protected $_termDocs;

    /**
     * Object constructor.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param string $name
     */
    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
    {
        parent::__construct($directory, $name);

        $this->_termDocs       = array();
        $this->_termDictionary = array();
    }


    /**
     * Adds a document to this segment.
     *
     * @param Zend_Search_Lucene_Document $document
     * @throws Zend_Search_Lucene_Exception
     */
    public function addDocument(Zend_Search_Lucene_Document $document)
    {
        $storedFields = array();
        $docNorms     = array();
        $similarity   = Zend_Search_Lucene_Search_Similarity::getDefault();

        foreach ($document->getFieldNames() as $fieldName) {
            $field = $document->getField($fieldName);
            $this->addField($field);

            if ($field->storeTermVector) {
                /**
                 * @todo term vector storing support
                 */
                throw new Zend_Search_Lucene_Exception('Store term vector functionality is not supported yet.');
            }

            if ($field->isIndexed) {
                if ($field->isTokenized) {
                    $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
                    $analyzer->setInput($field->value, $field->encoding);

                    $position     = 0;
                    $tokenCounter = 0;
                    while (($token = $analyzer->nextToken()) !== null) {
                        $tokenCounter++;

                        $term = new Zend_Search_Lucene_Index_Term($token->getTermText(), $field->name);
                        $termKey = $term->key();

                        if (!isset($this->_termDictionary[$termKey])) {
                            // New term
                            $this->_termDictionary[$termKey] = $term;
                            $this->_termDocs[$termKey] = array();
                            $this->_termDocs[$termKey][$this->_docCount] = array();
                        } else if (!isset($this->_termDocs[$termKey][$this->_docCount])) {
                            // Existing term, but new term entry
                            $this->_termDocs[$termKey][$this->_docCount] = array();
                        }
                        $position += $token->getPositionIncrement();
                        $this->_termDocs[$termKey][$this->_docCount][] = $position;
                    }

                    $docNorms[$field->name] = chr($similarity->encodeNorm( $similarity->lengthNorm($field->name,
                                                                                                   $tokenCounter)*
                                                                           $document->boost*
                                                                           $field->boost ));
                } else {
                    $term = new Zend_Search_Lucene_Index_Term($field->getUtf8Value(), $field->name);
                    $termKey = $term->key();

                    if (!isset($this->_termDictionary[$termKey])) {
                        // New term
                        $this->_termDictionary[$termKey] = $term;
                        $this->_termDocs[$termKey] = array();
                        $this->_termDocs[$termKey][$this->_docCount] = array();
                    } else if (!isset($this->_termDocs[$termKey][$this->_docCount])) {
                        // Existing term, but new term entry
                        $this->_termDocs[$termKey][$this->_docCount] = array();
                    }
                    $this->_termDocs[$termKey][$this->_docCount][] = 0; // position

                    $docNorms[$field->name] = chr($similarity->encodeNorm( $similarity->lengthNorm($field->name, 1)*
                                                                           $document->boost*
                                                                           $field->boost ));
                }
            }

            if ($field->isStored) {
                $storedFields[] = $field;
            }
        }


        foreach ($this->_fields as $fieldName => $field) {
            if (!$field->isIndexed) {
                continue;
            }

            if (!isset($this->_norms[$fieldName])) {
                $this->_norms[$fieldName] = str_repeat(chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) )),
                                                       $this->_docCount);
            }

            if (isset($docNorms[$fieldName])){
                $this->_norms[$fieldName] .= $docNorms[$fieldName];
            } else {
                $this->_norms[$fieldName] .= chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) ));
            }
        }

        $this->addStoredFields($storedFields);
    }


    /**
     * Dump Term Dictionary (.tis) and Term Dictionary Index (.tii) segment files
     */
    protected function _dumpDictionary()
    {
        ksort($this->_termDictionary, SORT_STRING);

        $this->initializeDictionaryFiles();

        foreach ($this->_termDictionary as $termId => $term) {
            $this->addTerm($term, $this->_termDocs[$termId]);
        }

        $this->closeDictionaryFiles();
    }


    /**
     * Close segment, write it to disk and return segment info
     *
     * @return Zend_Search_Lucene_Index_SegmentInfo
     */
    public function close()
    {
        if ($this->_docCount == 0) {
            return null;
        }

        $this->_dumpFNM();
        $this->_dumpDictionary();

        $this->_generateCFS();

        return new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
                                                        $this->_name,
                                                        $this->_docCount,
                                                        -1,
                                                        null,
                                                        true,
                                                        true);
    }

}

PKpG[���cX�X�Search/Lucene/Index/Writer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter */
require_once 'Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';

/** Zend_Search_Lucene_Index_SegmentMerger */
require_once 'Zend/Search/Lucene/Index/SegmentMerger.php';

/** Zend_Search_Lucene_LockManager */
require_once 'Zend/Search/Lucene/LockManager.php';



/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_Writer
{
    /**
     * @todo Implement Analyzer substitution
     * @todo Implement Zend_Search_Lucene_Storage_DirectoryRAM and Zend_Search_Lucene_Storage_FileRAM to use it for
     *       temporary index files
     * @todo Directory lock processing
     */

    /**
     * Number of documents required before the buffered in-memory
     * documents are written into a new Segment
     *
     * Default value is 10
     *
     * @var integer
     */
    public $maxBufferedDocs = 10;

    /**
     * Largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @var integer
     */
    public $maxMergeDocs = PHP_INT_MAX;

    /**
     * Determines how often segment indices are merged by addDocument().
     *
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     *
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     *
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @var integer
     */
    public $mergeFactor = 10;

    /**
     * File system adapter.
     *
     * @var Zend_Search_Lucene_Storage_Directory
     */
    private $_directory = null;


    /**
     * Changes counter.
     *
     * @var integer
     */
    private $_versionUpdate = 0;

    /**
     * List of the segments, created by index writer
     * Array of Zend_Search_Lucene_Index_SegmentInfo objects
     *
     * @var array
     */
    private $_newSegments = array();

    /**
     * List of segments to be deleted on commit
     *
     * @var array
     */
    private $_segmentsToDelete = array();

    /**
     * Current segment to add documents
     *
     * @var Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter
     */
    private $_currentSegment = null;

    /**
     * Array of Zend_Search_Lucene_Index_SegmentInfo objects for this index.
     *
     * It's a reference to the corresponding Zend_Search_Lucene::$_segmentInfos array
     *
     * @var array Zend_Search_Lucene_Index_SegmentInfo
     */
    private $_segmentInfos;

    /**
     * Index target format version
     *
     * @var integer
     */
    private $_targetFormatVersion;

    /**
     * List of indexfiles extensions
     *
     * @var array
     */
    private static $_indexExtensions = array('.cfs' => '.cfs',
                                             '.cfx' => '.cfx',
                                             '.fnm' => '.fnm',
                                             '.fdx' => '.fdx',
                                             '.fdt' => '.fdt',
                                             '.tis' => '.tis',
                                             '.tii' => '.tii',
                                             '.frq' => '.frq',
                                             '.prx' => '.prx',
                                             '.tvx' => '.tvx',
                                             '.tvd' => '.tvd',
                                             '.tvf' => '.tvf',
                                             '.del' => '.del',
                                             '.sti' => '.sti' );


    /**
     * Create empty index
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param integer $generation
     * @param integer $nameCount
     */
    public static function createIndex(Zend_Search_Lucene_Storage_Directory $directory, $generation, $nameCount)
    {
        if ($generation == 0) {
            // Create index in pre-2.1 mode
            foreach ($directory->fileList() as $file) {
                if ($file == 'deletable' ||
                    $file == 'segments'  ||
                    isset(self::$_indexExtensions[ substr($file, strlen($file)-4)]) ||
                    preg_match('/\.f\d+$/i', $file) /* matches <segment_name>.f<decimal_nmber> file names */) {
                        $directory->deleteFile($file);
                    }
            }

            $segmentsFile = $directory->createFile('segments');
            $segmentsFile->writeInt((int)0xFFFFFFFF);

            // write version (is initialized by current time
            // $segmentsFile->writeLong((int)microtime(true));
            $version = microtime(true);
            $segmentsFile->writeInt((int)($version/((double)0xFFFFFFFF + 1)));
            $segmentsFile->writeInt((int)($version & 0xFFFFFFFF));

            // write name counter
            $segmentsFile->writeInt($nameCount);
            // write segment counter
            $segmentsFile->writeInt(0);

            $deletableFile = $directory->createFile('deletable');
            // write counter
            $deletableFile->writeInt(0);
        } else {
            $genFile = $directory->createFile('segments.gen');

            $genFile->writeInt((int)0xFFFFFFFE);
            // Write generation two times
            $genFile->writeLong($generation);
            $genFile->writeLong($generation);

            $segmentsFile = $directory->createFile(Zend_Search_Lucene::getSegmentFileName($generation));
            $segmentsFile->writeInt((int)0xFFFFFFFD);

            // write version (is initialized by current time
            // $segmentsFile->writeLong((int)microtime(true));
            $version = microtime(true);
            $segmentsFile->writeInt((int)($version/((double)0xFFFFFFFF + 1)));
            $segmentsFile->writeInt((int)($version & 0xFFFFFFFF));

            // write name counter
            $segmentsFile->writeInt($nameCount);
            // write segment counter
            $segmentsFile->writeInt(0);
        }
    }

    /**
     * Open the index for writing
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param array $segmentInfos
     * @param integer $targetFormatVersion
     * @param Zend_Search_Lucene_Storage_File $cleanUpLock
     */
    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, &$segmentInfos, $targetFormatVersion)
    {
        $this->_directory           = $directory;
        $this->_segmentInfos        = &$segmentInfos;
        $this->_targetFormatVersion = $targetFormatVersion;
    }

    /**
     * Adds a document to this index.
     *
     * @param Zend_Search_Lucene_Document $document
     */
    public function addDocument(Zend_Search_Lucene_Document $document)
    {
        if ($this->_currentSegment === null) {
            $this->_currentSegment =
                new Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter($this->_directory, $this->_newSegmentName());
        }
        $this->_currentSegment->addDocument($document);

        if ($this->_currentSegment->count() >= $this->maxBufferedDocs) {
            $this->commit();
        }

        $this->_maybeMergeSegments();

        $this->_versionUpdate++;
    }


    /**
     * Check if we have anything to merge
     *
     * @return boolean
     */
    private function _hasAnythingToMerge()
    {
        $segmentSizes = array();
        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            $segmentSizes[$segName] = $segmentInfo->count();
        }

        $mergePool   = array();
        $poolSize    = 0;
        $sizeToMerge = $this->maxBufferedDocs;
        asort($segmentSizes, SORT_NUMERIC);
        foreach ($segmentSizes as $segName => $size) {
            // Check, if segment comes into a new merging block
            while ($size >= $sizeToMerge) {
                // Merge previous block if it's large enough
                if ($poolSize >= $sizeToMerge) {
                    return true;
                }
                $mergePool   = array();
                $poolSize    = 0;

                $sizeToMerge *= $this->mergeFactor;

                if ($sizeToMerge > $this->maxMergeDocs) {
                    return false;
                }
            }

            $mergePool[] = $this->_segmentInfos[$segName];
            $poolSize += $size;
        }

        if ($poolSize >= $sizeToMerge) {
            return true;
        }

        return false;
    }

    /**
     * Merge segments if necessary
     */
    private function _maybeMergeSegments()
    {
        if (Zend_Search_Lucene_LockManager::obtainOptimizationLock($this->_directory) === false) {
            return;
        }

        if (!$this->_hasAnythingToMerge()) {
            Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory);
            return;
        }

        // Update segments list to be sure all segments are not merged yet by another process
        //
        // Segment merging functionality is concentrated in this class and surrounded
        // by optimization lock obtaining/releasing.
        // _updateSegments() refreshes segments list from the latest index generation.
        // So only new segments can be added to the index while we are merging some already existing
        // segments.
        // Newly added segments will be also included into the index by the _updateSegments() call
        // either by another process or by the current process with the commit() call at the end of _mergeSegments() method.
        // That's guaranteed by the serialisation of _updateSegments() execution using exclusive locks.
        $this->_updateSegments();

        // Perform standard auto-optimization procedure
        $segmentSizes = array();
        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            $segmentSizes[$segName] = $segmentInfo->count();
        }

        $mergePool   = array();
        $poolSize    = 0;
        $sizeToMerge = $this->maxBufferedDocs;
        asort($segmentSizes, SORT_NUMERIC);
        foreach ($segmentSizes as $segName => $size) {
            // Check, if segment comes into a new merging block
            while ($size >= $sizeToMerge) {
                // Merge previous block if it's large enough
                if ($poolSize >= $sizeToMerge) {
                    $this->_mergeSegments($mergePool);
                }
                $mergePool   = array();
                $poolSize    = 0;

                $sizeToMerge *= $this->mergeFactor;

                if ($sizeToMerge > $this->maxMergeDocs) {
                    Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory);
                    return;
                }
            }

            $mergePool[] = $this->_segmentInfos[$segName];
            $poolSize += $size;
        }

        if ($poolSize >= $sizeToMerge) {
            $this->_mergeSegments($mergePool);
        }

        Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory);
    }

    /**
     * Merge specified segments
     *
     * $segments is an array of SegmentInfo objects
     *
     * @param array $segments
     */
    private function _mergeSegments($segments)
    {
        $newName = $this->_newSegmentName();
        $merger = new Zend_Search_Lucene_Index_SegmentMerger($this->_directory,
                                                             $newName);
        foreach ($segments as $segmentInfo) {
            $merger->addSource($segmentInfo);
            $this->_segmentsToDelete[$segmentInfo->getName()] = $segmentInfo->getName();
        }

        $newSegment = $merger->merge();
        if ($newSegment !== null) {
            $this->_newSegments[$newSegment->getName()] = $newSegment;
        }

        $this->commit();
    }

    /**
     * Update segments file by adding current segment to a list
     *
     * @throws Zend_Search_Lucene_Exception
     */
    private function _updateSegments()
    {
        // Get an exclusive index lock
        Zend_Search_Lucene_LockManager::obtainWriteLock($this->_directory);

        // Write down changes for the segments
        foreach ($this->_segmentInfos as $segInfo) {
            $segInfo->writeChanges();
        }


        $generation = Zend_Search_Lucene::getActualGeneration($this->_directory);
        $segmentsFile   = $this->_directory->getFileObject(Zend_Search_Lucene::getSegmentFileName($generation), false);
        $newSegmentFile = $this->_directory->createFile(Zend_Search_Lucene::getSegmentFileName(++$generation), false);

        try {
            $genFile = $this->_directory->getFileObject('segments.gen', false);
        } catch (Zend_Search_Lucene_Exception $e) {
            if (strpos($e->getMessage(), 'is not readable') !== false) {
                $genFile = $this->_directory->createFile('segments.gen');
            } else {
                throw $e;
            }
        }

        $genFile->writeInt((int)0xFFFFFFFE);
        // Write generation (first copy)
        $genFile->writeLong($generation);

        try {
            // Write format marker
            if ($this->_targetFormatVersion == Zend_Search_lucene::FORMAT_2_1) {
                $newSegmentFile->writeInt((int)0xFFFFFFFD);
            } else if ($this->_targetFormatVersion == Zend_Search_lucene::FORMAT_2_3) {
                $newSegmentFile->writeInt((int)0xFFFFFFFC);
            }

            // Read src file format identifier
            $format = $segmentsFile->readInt();
            if ($format == (int)0xFFFFFFFF) {
                $srcFormat = Zend_Search_Lucene::FORMAT_PRE_2_1;
            } else if ($format == (int)0xFFFFFFFD) {
                $srcFormat = Zend_Search_Lucene::FORMAT_2_1;
            } else if ($format == (int)0xFFFFFFFC) {
                $srcFormat = Zend_Search_Lucene::FORMAT_2_3;
            } else {
                throw new Zend_Search_Lucene_Exception('Unsupported segments file format');
            }

            // $version = $segmentsFile->readLong() + $this->_versionUpdate;
            // Process version on 32-bit platforms
            $versionHigh = $segmentsFile->readInt();
            $versionLow  = $segmentsFile->readInt();
            $version = $versionHigh * ((double)0xFFFFFFFF + 1) +
                       (($versionLow < 0)? (double)0xFFFFFFFF - (-1 - $versionLow) : $versionLow);
            $version += $this->_versionUpdate;
            $this->_versionUpdate = 0;
            $newSegmentFile->writeInt((int)($version/((double)0xFFFFFFFF + 1)));
            $newSegmentFile->writeInt((int)($version & 0xFFFFFFFF));

            // Write segment name counter
            $newSegmentFile->writeInt($segmentsFile->readInt());

            // Get number of segments offset
            $numOfSegmentsOffset = $newSegmentFile->tell();
            // Write dummy data (segment counter)
            $newSegmentFile->writeInt(0);

            // Read number of segemnts
            $segmentsCount = $segmentsFile->readInt();

            $segments = array();
            for ($count = 0; $count < $segmentsCount; $count++) {
                $segName = $segmentsFile->readString();
                $segSize = $segmentsFile->readInt();

                if ($srcFormat == Zend_Search_Lucene::FORMAT_PRE_2_1) {
                    // pre-2.1 index format
                    $delGenHigh        = 0;
                    $delGenLow         = 0;
                    $hasSingleNormFile = false;
                    $numField          = (int)0xFFFFFFFF;
                    $isCompoundByte    = 0;
                    $docStoreOptions   = null;
                } else {
                    //$delGen          = $segmentsFile->readLong();
                    $delGenHigh        = $segmentsFile->readInt();
                    $delGenLow         = $segmentsFile->readInt();

                    if ($srcFormat == Zend_Search_Lucene::FORMAT_2_3) {
                        $docStoreOffset = $segmentsFile->readInt();

                        if ($docStoreOffset != -1) {
                            $docStoreSegment        = $segmentsFile->readString();
                            $docStoreIsCompoundFile = $segmentsFile->readByte();

                            $docStoreOptions = array('offset'     => $docStoreOffset,
                                                     'segment'    => $docStoreSegment,
                                                     'isCompound' => ($docStoreIsCompoundFile == 1));
                        } else {
                            $docStoreOptions = null;
                        }
                    } else {
                        $docStoreOptions = null;
                    }

                    $hasSingleNormFile = $segmentsFile->readByte();
                    $numField          = $segmentsFile->readInt();

                    $normGens = array();
                    if ($numField != (int)0xFFFFFFFF) {
                        for ($count1 = 0; $count1 < $numField; $count1++) {
                            $normGens[] = $segmentsFile->readLong();
                        }
                    }
                    $isCompoundByte    = $segmentsFile->readByte();
                }

                if (!in_array($segName, $this->_segmentsToDelete)) {
                    // Load segment if necessary
                    if (!isset($this->_segmentInfos[$segName])) {
                        if (PHP_INT_SIZE > 4) {
                        	// 64-bit system
                        	$delGen = $delGenHigh << 32  |
                        	          $delGenLow;
                        } else {
                        	$delGen = $delGenHigh * ((double)0xFFFFFFFF + 1) +
                                         (($delGenLow < 0)? (double)0xFFFFFFFF - (-1 - $delGenLow) : $delGenLow);
                        }
                        if ($isCompoundByte == 0xFF) {
                            // The segment is not a compound file
                            $isCompound = false;
                        } else if ($isCompoundByte == 0x00) {
                            // The status is unknown
                            $isCompound = null;
                        } else if ($isCompoundByte == 0x01) {
                            // The segment is a compound file
                            $isCompound = true;
                        }

                        $this->_segmentInfos[$segName] =
                                    new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
                                                                             $segName,
                                                                             $segSize,
                                                                             $delGen,
                                                                             $docStoreOptions,
                                                                             $hasSingleNormFile,
                                                                             $isCompound);
                    } else {
                        // Retrieve actual deletions file generation number
                        $delGen = $this->_segmentInfos[$segName]->getDelGen();

                        if ($delGen >= 0) {
                            if (PHP_INT_SIZE > 4) {
                                // 64-bit system
                                $delGenHigh = $delGen >> 32  & 0xFFFFFFFF;
                                $delGenLow  = $delGen        & 0xFFFFFFFF;
                            } else {
                                $delGenHigh = (int)($delGen/((double)0xFFFFFFFF + 1));
                                $delGenLow  =(int)($delGen & 0xFFFFFFFF);
                            }
                        } else {
                            $delGenHigh = $delGenLow = (int)0xFFFFFFFF;
                        }
                    }

                    $newSegmentFile->writeString($segName);
                    $newSegmentFile->writeInt($segSize);
                    $newSegmentFile->writeInt($delGenHigh);
                    $newSegmentFile->writeInt($delGenLow);
                    if ($this->_targetFormatVersion == Zend_Search_Lucene::FORMAT_2_3) {
                        if ($docStoreOptions !== null) {
                            $newSegmentFile->writeInt($docStoreOffset);
                            $newSegmentFile->writeString($docStoreSegment);
                            $newSegmentFile->writeByte($docStoreIsCompoundFile);
                        } else {
                            // Set DocStoreOffset to -1
                            $newSegmentFile->writeInt((int)0xFFFFFFFF);
                        }
                    } else if ($docStoreOptions !== null) {
                        // Release index write lock
                        Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);

                        throw new Zend_Search_Lucene_Exception('Index conversion to lower format version is not supported.');
                    }

                    $newSegmentFile->writeByte($hasSingleNormFile);
                    $newSegmentFile->writeInt($numField);
                    if ($numField != (int)0xFFFFFFFF) {
                        foreach ($normGens as $normGen) {
                            $newSegmentFile->writeLong($normGen);
                        }
                    }
                    $newSegmentFile->writeByte($isCompoundByte);

                    $segments[$segName] = $segSize;
                }
            }
            $segmentsFile->close();

            $segmentsCount = count($segments) + count($this->_newSegments);

            foreach ($this->_newSegments as $segName => $segmentInfo) {
                $newSegmentFile->writeString($segName);
                $newSegmentFile->writeInt($segmentInfo->count());

                // delete file generation: -1 (there is no delete file yet)
                $newSegmentFile->writeInt((int)0xFFFFFFFF);$newSegmentFile->writeInt((int)0xFFFFFFFF);
                if ($this->_targetFormatVersion == Zend_Search_Lucene::FORMAT_2_3) {
                    // docStoreOffset: -1 (segment doesn't use shared doc store)
                    $newSegmentFile->writeInt((int)0xFFFFFFFF);
                }
                // HasSingleNormFile
                $newSegmentFile->writeByte($segmentInfo->hasSingleNormFile());
                // NumField
                $newSegmentFile->writeInt((int)0xFFFFFFFF);
                // IsCompoundFile
                $newSegmentFile->writeByte($segmentInfo->isCompound() ? 1 : -1);

                $segments[$segmentInfo->getName()] = $segmentInfo->count();
                $this->_segmentInfos[$segName] = $segmentInfo;
            }
            $this->_newSegments = array();

            $newSegmentFile->seek($numOfSegmentsOffset);
            $newSegmentFile->writeInt($segmentsCount);  // Update segments count
            $newSegmentFile->close();
        } catch (Exception $e) {
            /** Restore previous index generation */
            $generation--;
            $genFile->seek(4, SEEK_SET);
            // Write generation number twice
            $genFile->writeLong($generation); $genFile->writeLong($generation);

            // Release index write lock
            Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);

            // Throw the exception
            throw $e;
        }

        // Write generation (second copy)
        $genFile->writeLong($generation);


        // Check if another update or read process is not running now
        // If yes, skip clean-up procedure
        if (Zend_Search_Lucene_LockManager::escalateReadLock($this->_directory)) {
            /**
             * Clean-up directory
             */
            $filesToDelete = array();
            $filesTypes    = array();
            $filesNumbers  = array();

            // list of .del files of currently used segments
            // each segment can have several generations of .del files
            // only last should not be deleted
            $delFiles = array();

            foreach ($this->_directory->fileList() as $file) {
                if ($file == 'deletable') {
                    // 'deletable' file
                    $filesToDelete[] = $file;
                    $filesTypes[]    = 0; // delete this file first, since it's not used starting from Lucene v2.1
                    $filesNumbers[]  = 0;
                } else if ($file == 'segments') {
                    // 'segments' file
                    $filesToDelete[] = $file;
                    $filesTypes[]    = 1; // second file to be deleted "zero" version of segments file (Lucene pre-2.1)
                    $filesNumbers[]  = 0;
                } else if (preg_match('/^segments_[a-zA-Z0-9]+$/i', $file)) {
                    // 'segments_xxx' file
                    // Check if it's not a just created generation file
                    if ($file != Zend_Search_Lucene::getSegmentFileName($generation)) {
                        $filesToDelete[] = $file;
                        $filesTypes[]    = 2; // first group of files for deletions
                        $filesNumbers[]  = (int)base_convert(substr($file, 9), 36, 10); // ordered by segment generation numbers
                    }
                } else if (preg_match('/(^_([a-zA-Z0-9]+))\.f\d+$/i', $file, $matches)) {
                    // one of per segment files ('<segment_name>.f<decimal_number>')
                    // Check if it's not one of the segments in the current segments set
                    if (!isset($segments[$matches[1]])) {
                        $filesToDelete[] = $file;
                        $filesTypes[]    = 3; // second group of files for deletions
                        $filesNumbers[]  = (int)base_convert($matches[2], 36, 10); // order by segment number
                    }
                } else if (preg_match('/(^_([a-zA-Z0-9]+))(_([a-zA-Z0-9]+))\.del$/i', $file, $matches)) {
                    // one of per segment files ('<segment_name>_<del_generation>.del' where <segment_name> is '_<segment_number>')
                    // Check if it's not one of the segments in the current segments set
                    if (!isset($segments[$matches[1]])) {
                        $filesToDelete[] = $file;
                        $filesTypes[]    = 3; // second group of files for deletions
                        $filesNumbers[]  = (int)base_convert($matches[2], 36, 10); // order by segment number
                    } else {
                        $segmentNumber = (int)base_convert($matches[2], 36, 10);
                        $delGeneration = (int)base_convert($matches[4], 36, 10);
                        if (!isset($delFiles[$segmentNumber])) {
                            $delFiles[$segmentNumber] = array();
                        }
                        $delFiles[$segmentNumber][$delGeneration] = $file;
                    }
                } else if (isset(self::$_indexExtensions[substr($file, strlen($file)-4)])) {
                    // one of per segment files ('<segment_name>.<ext>')
                    $segmentName = substr($file, 0, strlen($file) - 4);
                    // Check if it's not one of the segments in the current segments set
                    if (!isset($segments[$segmentName])  &&
                        ($this->_currentSegment === null  ||  $this->_currentSegment->getName() != $segmentName)) {
                        $filesToDelete[] = $file;
                        $filesTypes[]    = 3; // second group of files for deletions
                        $filesNumbers[]  = (int)base_convert(substr($file, 1 /* skip '_' */, strlen($file)-5), 36, 10); // order by segment number
                    }
                }
            }

            $maxGenNumber = 0;
            // process .del files of currently used segments
            foreach ($delFiles as $segmentNumber => $segmentDelFiles) {
                ksort($delFiles[$segmentNumber], SORT_NUMERIC);
                array_pop($delFiles[$segmentNumber]); // remove last delete file generation from candidates for deleting

                end($delFiles[$segmentNumber]);
                $lastGenNumber = key($delFiles[$segmentNumber]);
                if ($lastGenNumber > $maxGenNumber) {
                    $maxGenNumber = $lastGenNumber;
                }
            }
            foreach ($delFiles as $segmentNumber => $segmentDelFiles) {
                foreach ($segmentDelFiles as $delGeneration => $file) {
                        $filesToDelete[] = $file;
                        $filesTypes[]    = 4; // third group of files for deletions
                        $filesNumbers[]  = $segmentNumber*$maxGenNumber + $delGeneration; // order by <segment_number>,<del_generation> pair
                }
            }

            // Reorder files for deleting
            array_multisort($filesTypes,    SORT_ASC, SORT_NUMERIC,
                            $filesNumbers,  SORT_ASC, SORT_NUMERIC,
                            $filesToDelete, SORT_ASC, SORT_STRING);

            foreach ($filesToDelete as $file) {
                try {
                    /** Skip shared docstore segments deleting */
                    /** @todo Process '.cfx' files to check if them are already unused */
                    if (substr($file, strlen($file)-4) != '.cfx') {
                        $this->_directory->deleteFile($file);
                    }
                } catch (Zend_Search_Lucene_Exception $e) {
                    if (strpos($e->getMessage(), 'Can\'t delete file') === false) {
                        // That's not "file is under processing or already deleted" exception
                        // Pass it through
                        throw $e;
                    }
                }
            }

            // Return read lock into the previous state
            Zend_Search_Lucene_LockManager::deEscalateReadLock($this->_directory);
        } else {
            // Only release resources if another index reader is running now
            foreach ($this->_segmentsToDelete as $segName) {
                foreach (self::$_indexExtensions as $ext) {
                    $this->_directory->purgeFile($segName . $ext);
                }
            }
        }

        // Clean-up _segmentsToDelete container
        $this->_segmentsToDelete = array();


        // Release index write lock
        Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);

        // Remove unused segments from segments list
        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            if (!isset($segments[$segName])) {
                unset($this->_segmentInfos[$segName]);
            }
        }
    }

    /**
     * Commit current changes
     */
    public function commit()
    {
        if ($this->_currentSegment !== null) {
            $newSegment = $this->_currentSegment->close();
            if ($newSegment !== null) {
                $this->_newSegments[$newSegment->getName()] = $newSegment;
            }
            $this->_currentSegment = null;
        }

        $this->_updateSegments();
    }


    /**
     * Merges the provided indexes into this index.
     *
     * @param array $readers
     * @return void
     */
    public function addIndexes($readers)
    {
        /**
         * @todo implementation
         */
    }

    /**
     * Merges all segments together into new one
     *
     * Returns true on success and false if another optimization or auto-optimization process
     * is running now
     *
     * @return boolean
     */
    public function optimize()
    {
        if (Zend_Search_Lucene_LockManager::obtainOptimizationLock($this->_directory) === false) {
            return false;
        }

        // Update segments list to be sure all segments are not merged yet by another process
        //
        // Segment merging functionality is concentrated in this class and surrounded
        // by optimization lock obtaining/releasing.
        // _updateSegments() refreshes segments list from the latest index generation.
        // So only new segments can be added to the index while we are merging some already existing
        // segments.
        // Newly added segments will be also included into the index by the _updateSegments() call
        // either by another process or by the current process with the commit() call at the end of _mergeSegments() method.
        // That's guaranteed by the serialisation of _updateSegments() execution using exclusive locks.
        $this->_updateSegments();

        $this->_mergeSegments($this->_segmentInfos);

        Zend_Search_Lucene_LockManager::releaseOptimizationLock($this->_directory);

        return true;
    }

    /**
     * Get name for new segment
     *
     * @return string
     */
    private function _newSegmentName()
    {
        Zend_Search_Lucene_LockManager::obtainWriteLock($this->_directory);

        $generation = Zend_Search_Lucene::getActualGeneration($this->_directory);
        $segmentsFile = $this->_directory->getFileObject(Zend_Search_Lucene::getSegmentFileName($generation), false);

        $segmentsFile->seek(12); // 12 = 4 (int, file format marker) + 8 (long, index version)
        $segmentNameCounter = $segmentsFile->readInt();

        $segmentsFile->seek(12); // 12 = 4 (int, file format marker) + 8 (long, index version)
        $segmentsFile->writeInt($segmentNameCounter + 1);

        // Flash output to guarantee that wrong value will not be loaded between unlock and
        // return (which calls $segmentsFile destructor)
        $segmentsFile->flush();

        Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);

        return '_' . base_convert($segmentNameCounter, 10, 36);
    }

}
PKpG[!��(((Search/Lucene/Index/DictionaryLoader.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * Dictionary loader
 *
 * It's a dummy class which is created to encapsulate non-good structured code.
 * Manual "method inlining" is performed to increase dictionary index loading operation
 * which is major bottelneck for search performance.
 *
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_DictionaryLoader
{
    /**
     * Dictionary index loader.
     *
     * It takes a string which is actually <segment_name>.tii index file data and
     * returns two arrays - term and tremInfo lists.
     *
     * See Zend_Search_Lucene_Index_SegmintInfo class for details
     *
     * @param string $data
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public static function load($data)
    {
        $termDictionary = array();
        $termInfos      = array();
        $pos = 0;

        // $tiVersion = $tiiFile->readInt();
        $tiVersion = ord($data[0]) << 24 | ord($data[1]) << 16 | ord($data[2]) << 8  | ord($data[3]);
        $pos += 4;
        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */ &&
            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
            throw new Zend_Search_Lucene_Exception('Wrong TermInfoIndexFile file format');
        }

        // $indexTermCount = $tiiFile->readLong();
        if (PHP_INT_SIZE > 4) {
            $indexTermCount = ord($data[$pos]) << 56  |
                              ord($data[$pos+1]) << 48  |
                              ord($data[$pos+2]) << 40  |
                              ord($data[$pos+3]) << 32  |
                              ord($data[$pos+4]) << 24  |
                              ord($data[$pos+5]) << 16  |
                              ord($data[$pos+6]) << 8   |
                              ord($data[$pos+7]);
        } else {
            if ((ord($data[$pos])            != 0) ||
                (ord($data[$pos+1])          != 0) ||
                (ord($data[$pos+2])          != 0) ||
                (ord($data[$pos+3])          != 0) ||
                ((ord($data[$pos+4]) & 0x80) != 0)) {
                     throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
                 }

            $indexTermCount = ord($data[$pos+4]) << 24  |
                              ord($data[$pos+5]) << 16  |
                              ord($data[$pos+6]) << 8   |
                              ord($data[$pos+7]);
        }
        $pos += 8;

        //                  $tiiFile->readInt();  // IndexInterval
        $pos += 4;

        // $skipInterval   = $tiiFile->readInt();
        $skipInterval = ord($data[$pos]) << 24 | ord($data[$pos+1]) << 16 | ord($data[$pos+2]) << 8  | ord($data[$pos+3]);
        $pos += 4;
        if ($indexTermCount < 1) {
            throw new Zend_Search_Lucene_Exception('Wrong number of terms in a term dictionary index');
        }

        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
            /* Skip MaxSkipLevels value */
            $pos += 4;
        }

        $prevTerm     = '';
        $freqPointer  =  0;
        $proxPointer  =  0;
        $indexPointer =  0;
        for ($count = 0; $count < $indexTermCount; $count++) {
            //$termPrefixLength = $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $termPrefixLength = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $termPrefixLength |= ($nbyte & 0x7F) << $shift;
            }

            // $termSuffix       = $tiiFile->readString();
            $nbyte = ord($data[$pos++]);
            $len = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $len |= ($nbyte & 0x7F) << $shift;
            }
            if ($len == 0) {
                $termSuffix = '';
            } else {
                $termSuffix = substr($data, $pos, $len);
                $pos += $len;
                for ($count1 = 0; $count1 < $len; $count1++ ) {
                    if (( ord($termSuffix[$count1]) & 0xC0 ) == 0xC0) {
                        $addBytes = 1;
                        if (ord($termSuffix[$count1]) & 0x20 ) {
                            $addBytes++;

                            // Never used for Java Lucene created index.
                            // Java2 doesn't encode strings in four bytes
                            if (ord($termSuffix[$count1]) & 0x10 ) {
                                $addBytes++;
                            }
                        }
                        $termSuffix .= substr($data, $pos, $addBytes);
                        $pos += $addBytes;
                        $len += $addBytes;

                        // Check for null character. Java2 encodes null character
                        // in two bytes.
                        if (ord($termSuffix[$count1]) == 0xC0 &&
                            ord($termSuffix[$count1+1]) == 0x80   ) {
                            $termSuffix[$count1] = 0;
                            $termSuffix = substr($termSuffix,0,$count1+1)
                                        . substr($termSuffix,$count1+2);
                        }
                        $count1 += $addBytes;
                    }
                }
            }

            // $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($prevTerm, $termPrefixLength) . $termSuffix;
            $pb = 0; $pc = 0;
            while ($pb < strlen($prevTerm)  &&  $pc < $termPrefixLength) {
                $charBytes = 1;
                if ((ord($prevTerm[$pb]) & 0xC0) == 0xC0) {
                    $charBytes++;
                    if (ord($prevTerm[$pb]) & 0x20 ) {
                        $charBytes++;
                        if (ord($prevTerm[$pb]) & 0x10 ) {
                            $charBytes++;
                        }
                    }
                }

                if ($pb + $charBytes > strlen($data)) {
                    // wrong character
                    break;
                }

                $pc++;
                $pb += $charBytes;
            }
            $termValue = substr($prevTerm, 0, $pb) . $termSuffix;

            // $termFieldNum     = $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $termFieldNum = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $termFieldNum |= ($nbyte & 0x7F) << $shift;
            }

            // $docFreq          = $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $docFreq = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $docFreq |= ($nbyte & 0x7F) << $shift;
            }

            // $freqPointer     += $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $vint = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $vint |= ($nbyte & 0x7F) << $shift;
            }
            $freqPointer += $vint;

            // $proxPointer     += $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $vint = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $vint |= ($nbyte & 0x7F) << $shift;
            }
            $proxPointer += $vint;

            if( $docFreq >= $skipInterval ) {
                // $skipDelta = $tiiFile->readVInt();
                $nbyte = ord($data[$pos++]);
                $vint = $nbyte & 0x7F;
                for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                    $nbyte = ord($data[$pos++]);
                    $vint |= ($nbyte & 0x7F) << $shift;
                }
                $skipDelta = $vint;
            } else {
                $skipDelta = 0;
            }

            // $indexPointer += $tiiFile->readVInt();
            $nbyte = ord($data[$pos++]);
            $vint = $nbyte & 0x7F;
            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
                $nbyte = ord($data[$pos++]);
                $vint |= ($nbyte & 0x7F) << $shift;
            }
            $indexPointer += $vint;


            // $this->_termDictionary[] =  new Zend_Search_Lucene_Index_Term($termValue, $termFieldNum);
            $termDictionary[] = array($termFieldNum, $termValue);

            $termInfos[] =
                 // new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipDelta, $indexPointer);
                 array($docFreq, $freqPointer, $proxPointer, $skipDelta, $indexPointer);

            $prevTerm = $termValue;
        }

        // Check special index entry mark
        if ($termDictionary[0][0] != (int)0xFFFFFFFF) {
            throw new Zend_Search_Lucene_Exception('Wrong TermInfoIndexFile file format');
        } else if (PHP_INT_SIZE > 4){
            // Treat 64-bit 0xFFFFFFFF as -1
            $termDictionary[0][0] = -1;
        }

        return array(&$termDictionary, &$termInfos);
    }
}

PKpG[����"Search/Lucene/Index/DocsFilter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * A Zend_Search_Lucene_Index_DocsFilter is used to filter documents while searching.
 *
 * It may or _may_not_ be used for actual filtering, so it's just a hint that upper query limits
 * search result by specified list.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_DocsFilter
{
    /**
     * Set of segment filters:
     *  array( <segmentName> => array(<docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                ...                          ),
     *         <segmentName> => array(<docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                ...                          ),
     *         <segmentName> => array(<docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                <docId> => <undefined_value>,
     *                                ...                          ),
     *         ...
     *       )
     *
     * @var array
     */
    public $segmentFilters = array();
}

PKpG[堵	#	#%Search/Lucene/Index/SegmentMerger.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';

/** Zend_Search_Lucene_Index_SegmentWriter_StreamWriter */
require_once 'Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php';

/** Zend_Search_Lucene_Index_SegmentInfoPriorityQueue */
require_once 'Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_SegmentMerger
{
    /**
     * Target segment writer
     *
     * @var Zend_Search_Lucene_Index_SegmentWriter_StreamWriter
     */
    private $_writer;

    /**
     * Number of docs in a new segment
     *
     * @var integer
     */
    private $_docCount;

    /**
     * A set of segments to be merged
     *
     * @var array Zend_Search_Lucene_Index_SegmentInfo
     */
    private $_segmentInfos = array();

    /**
     * Flag to signal, that merge is already done
     *
     * @var boolean
     */
    private $_mergeDone = false;

    /**
     * Field map
     * [<segment_name>][<field_number>] => <target_field_number>
     *
     * @var array
     */
    private $_fieldsMap = array();



    /**
     * Object constructor.
     *
     * Creates new segment merger with $directory as target to merge segments into
     * and $name as a name of new segment
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param string $name
     */
    public function __construct($directory, $name)
    {
        $this->_writer = new Zend_Search_Lucene_Index_SegmentWriter_StreamWriter($directory, $name);
    }


    /**
     * Add segmnet to a collection of segments to be merged
     *
     * @param Zend_Search_Lucene_Index_SegmentInfo $segment
     */
    public function addSource(Zend_Search_Lucene_Index_SegmentInfo $segmentInfo)
    {
        $this->_segmentInfos[$segmentInfo->getName()] = $segmentInfo;
    }


    /**
     * Do merge.
     *
     * Returns number of documents in newly created segment
     *
     * @return Zend_Search_Lucene_Index_SegmentInfo
     * @throws Zend_Search_Lucene_Exception
     */
    public function merge()
    {
        if ($this->_mergeDone) {
            throw new Zend_Search_Lucene_Exception('Merge is already done.');
        }

        if (count($this->_segmentInfos) < 1) {
            throw new Zend_Search_Lucene_Exception('Wrong number of segments to be merged ('
                                                 . count($this->_segmentInfos)
                                                 . ').');
        }

        $this->_mergeFields();
        $this->_mergeNorms();
        $this->_mergeStoredFields();
        $this->_mergeTerms();

        $this->_mergeDone = true;

        return $this->_writer->close();
    }


    /**
     * Merge fields information
     */
    private function _mergeFields()
    {
        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            foreach ($segmentInfo->getFieldInfos() as $fieldInfo) {
                $this->_fieldsMap[$segName][$fieldInfo->number] = $this->_writer->addFieldInfo($fieldInfo);
            }
        }
    }

    /**
     * Merge field's normalization factors
     */
    private function _mergeNorms()
    {
        foreach ($this->_writer->getFieldInfos() as $fieldInfo) {
            if ($fieldInfo->isIndexed) {
                foreach ($this->_segmentInfos as $segName => $segmentInfo) {
                    if ($segmentInfo->hasDeletions()) {
                        $srcNorm = $segmentInfo->normVector($fieldInfo->name);
                        $norm    = '';
                        $docs    = $segmentInfo->count();
                        for ($count = 0; $count < $docs; $count++) {
                            if (!$segmentInfo->isDeleted($count)) {
                                $norm .= $srcNorm[$count];
                            }
                        }
                        $this->_writer->addNorm($fieldInfo->name, $norm);
                    } else {
                        $this->_writer->addNorm($fieldInfo->name, $segmentInfo->normVector($fieldInfo->name));
                    }
                }
            }
        }
    }

    /**
     * Merge fields information
     */
    private function _mergeStoredFields()
    {
        $this->_docCount = 0;

        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            $fdtFile = $segmentInfo->openCompoundFile('.fdt');

            for ($count = 0; $count < $segmentInfo->count(); $count++) {
                $fieldCount = $fdtFile->readVInt();
                $storedFields = array();

                for ($count2 = 0; $count2 < $fieldCount; $count2++) {
                    $fieldNum = $fdtFile->readVInt();
                    $bits = $fdtFile->readByte();
                    $fieldInfo = $segmentInfo->getField($fieldNum);

                    if (!($bits & 2)) { // Text data
                        $storedFields[] =
                                 new Zend_Search_Lucene_Field($fieldInfo->name,
                                                              $fdtFile->readString(),
                                                              'UTF-8',
                                                              true,
                                                              $fieldInfo->isIndexed,
                                                              $bits & 1 );
                    } else {            // Binary data
                        $storedFields[] =
                                 new Zend_Search_Lucene_Field($fieldInfo->name,
                                                              $fdtFile->readBinary(),
                                                              '',
                                                              true,
                                                              $fieldInfo->isIndexed,
                                                              $bits & 1,
                                                              true);
                    }
                }

                if (!$segmentInfo->isDeleted($count)) {
                    $this->_docCount++;
                    $this->_writer->addStoredFields($storedFields);
                }
            }
        }
    }


    /**
     * Merge fields information
     */
    private function _mergeTerms()
    {
        $segmentInfoQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();

        $segmentStartId = 0;
        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
            $segmentStartId = $segmentInfo->reset($segmentStartId, Zend_Search_Lucene_Index_SegmentInfo::SM_MERGE_INFO);

            // Skip "empty" segments
            if ($segmentInfo->currentTerm() !== null) {
                $segmentInfoQueue->put($segmentInfo);
            }
        }

        $this->_writer->initializeDictionaryFiles();

        $termDocs = array();
        while (($segmentInfo = $segmentInfoQueue->pop()) !== null) {
            // Merge positions array
            $termDocs += $segmentInfo->currentTermPositions();

            if ($segmentInfoQueue->top() === null ||
                $segmentInfoQueue->top()->currentTerm()->key() !=
                            $segmentInfo->currentTerm()->key()) {
                // We got new term
                ksort($termDocs, SORT_NUMERIC);

                // Add term if it's contained in any document
                if (count($termDocs) > 0) {
                    $this->_writer->addTerm($segmentInfo->currentTerm(), $termDocs);
                }
                $termDocs = array();
            }

            $segmentInfo->nextTerm();
            // check, if segment dictionary is finished
            if ($segmentInfo->currentTerm() !== null) {
                // Put segment back into the priority queue
                $segmentInfoQueue->put($segmentInfo);
            }
        }

        $this->_writer->closeDictionaryFiles();
    }
}
PKpG[3R�G Search/Lucene/Index/TermInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * A Zend_Search_Lucene_Index_TermInfo represents a record of information stored for a term.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_TermInfo
{
    /**
     * The number of documents which contain the term.
     *
     * @var integer
     */
    public $docFreq;

    /**
     * Data offset in a Frequencies file.
     *
     * @var integer
     */
    public $freqPointer;

    /**
     * Data offset in a Positions file.
     *
     * @var integer
     */
    public $proxPointer;

    /**
     * ScipData offset in a Frequencies file.
     *
     * @var integer
     */
    public $skipOffset;

    /**
     * Term offset of the _next_ term in a TermDictionary file.
     * Used only for Term Index
     *
     * @var integer
     */
    public $indexPointer;

    public function __construct($docFreq, $freqPointer, $proxPointer, $skipOffset, $indexPointer = null)
    {
        $this->docFreq      = $docFreq;
        $this->freqPointer  = $freqPointer;
        $this->proxPointer  = $proxPointer;
        $this->skipOffset   = $skipOffset;
        $this->indexPointer = $indexPointer;
    }
}

PKpG[j��4O4O%Search/Lucene/Index/SegmentWriter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Index_SegmentWriter
{
    /**
     * Expert: The fraction of terms in the "dictionary" which should be stored
     * in RAM.  Smaller values use more memory, but make searching slightly
     * faster, while larger values use less memory and make searching slightly
     * slower.  Searching is typically not dominated by dictionary lookup, so
     * tweaking this is rarely useful.
     *
     * @var integer
     */
    public static $indexInterval = 128;

    /**
     * Expert: The fraction of TermDocs entries stored in skip tables.
     * Larger values result in smaller indexes, greater acceleration, but fewer
     * accelerable cases, while smaller values result in bigger indexes,
     * less acceleration and more
     * accelerable cases. More detailed experiments would be useful here.
     *
     * 0x7FFFFFFF indicates that we don't use skip data
     *
     * Note: not used in current implementation
     *
     * @var integer
     */
    public static $skipInterval = 0x7FFFFFFF;

    /**
     * Expert: The maximum number of skip levels. Smaller values result in
     * slightly smaller indexes, but slower skipping in big posting lists.
     *
     * 0 indicates that we don't use skip data
     *
     * Note: not used in current implementation
     *
     * @var integer
     */
    public static $maxSkipLevels = 0;

    /**
     * Number of docs in a segment
     *
     * @var integer
     */
    protected $_docCount = 0;

    /**
     * Segment name
     *
     * @var string
     */
    protected $_name;

    /**
     * File system adapter.
     *
     * @var Zend_Search_Lucene_Storage_Directory
     */
    protected $_directory;

    /**
     * List of the index files.
     * Used for automatic compound file generation
     *
     * @var unknown_type
     */
    protected $_files = array();

    /**
     * Segment fields. Array of Zend_Search_Lucene_Index_FieldInfo objects for this segment
     *
     * @var array
     */
    protected $_fields = array();

    /**
     * Normalization factors.
     * An array fieldName => normVector
     * normVector is a binary string.
     * Each byte corresponds to an indexed document in a segment and
     * encodes normalization factor (float value, encoded by
     * Zend_Search_Lucene_Search_Similarity::encodeNorm())
     *
     * @var array
     */
    protected $_norms = array();


    /**
     * '.fdx'  file - Stored Fields, the field index.
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    protected $_fdxFile = null;

    /**
     * '.fdt'  file - Stored Fields, the field data.
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    protected $_fdtFile = null;


    /**
     * Object constructor.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @param string $name
     */
    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
    {
        $this->_directory = $directory;
        $this->_name      = $name;
    }


    /**
     * Add field to the segment
     *
     * Returns actual field number
     *
     * @param Zend_Search_Lucene_Field $field
     * @return integer
     */
    public function addField(Zend_Search_Lucene_Field $field)
    {
        if (!isset($this->_fields[$field->name])) {
            $fieldNumber = count($this->_fields);
            $this->_fields[$field->name] =
                                new Zend_Search_Lucene_Index_FieldInfo($field->name,
                                                                       $field->isIndexed,
                                                                       $fieldNumber,
                                                                       $field->storeTermVector);

            return $fieldNumber;
        } else {
            $this->_fields[$field->name]->isIndexed       |= $field->isIndexed;
            $this->_fields[$field->name]->storeTermVector |= $field->storeTermVector;

            return $this->_fields[$field->name]->number;
        }
    }

    /**
     * Add fieldInfo to the segment
     *
     * Returns actual field number
     *
     * @param Zend_Search_Lucene_Index_FieldInfo $fieldInfo
     * @return integer
     */
    public function addFieldInfo(Zend_Search_Lucene_Index_FieldInfo $fieldInfo)
    {
        if (!isset($this->_fields[$fieldInfo->name])) {
            $fieldNumber = count($this->_fields);
            $this->_fields[$fieldInfo->name] =
                                new Zend_Search_Lucene_Index_FieldInfo($fieldInfo->name,
                                                                       $fieldInfo->isIndexed,
                                                                       $fieldNumber,
                                                                       $fieldInfo->storeTermVector);

            return $fieldNumber;
        } else {
            $this->_fields[$fieldInfo->name]->isIndexed       |= $fieldInfo->isIndexed;
            $this->_fields[$fieldInfo->name]->storeTermVector |= $fieldInfo->storeTermVector;

            return $this->_fields[$fieldInfo->name]->number;
        }
    }

    /**
     * Returns array of FieldInfo objects.
     *
     * @return array
     */
    public function getFieldInfos()
    {
        return $this->_fields;
    }

    /**
     * Add stored fields information
     *
     * @param array $storedFields array of Zend_Search_Lucene_Field objects
     */
    public function addStoredFields($storedFields)
    {
        if (!isset($this->_fdxFile)) {
            $this->_fdxFile = $this->_directory->createFile($this->_name . '.fdx');
            $this->_fdtFile = $this->_directory->createFile($this->_name . '.fdt');

            $this->_files[] = $this->_name . '.fdx';
            $this->_files[] = $this->_name . '.fdt';
        }

        $this->_fdxFile->writeLong($this->_fdtFile->tell());
        $this->_fdtFile->writeVInt(count($storedFields));
        foreach ($storedFields as $field) {
            $this->_fdtFile->writeVInt($this->_fields[$field->name]->number);
            $fieldBits = ($field->isTokenized ? 0x01 : 0x00) |
                         ($field->isBinary ?    0x02 : 0x00) |
                         0x00; /* 0x04 - third bit, compressed (ZLIB) */
            $this->_fdtFile->writeByte($fieldBits);
            if ($field->isBinary) {
                $this->_fdtFile->writeVInt(strlen($field->value));
                $this->_fdtFile->writeBytes($field->value);
            } else {
                $this->_fdtFile->writeString($field->getUtf8Value());
            }
        }

        $this->_docCount++;
    }

    /**
     * Returns the total number of documents in this segment.
     *
     * @return integer
     */
    public function count()
    {
        return $this->_docCount;
    }

    /**
     * Return segment name
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Dump Field Info (.fnm) segment file
     */
    protected function _dumpFNM()
    {
        $fnmFile = $this->_directory->createFile($this->_name . '.fnm');
        $fnmFile->writeVInt(count($this->_fields));

        $nrmFile = $this->_directory->createFile($this->_name . '.nrm');
        // Write header
        $nrmFile->writeBytes('NRM');
        // Write format specifier
        $nrmFile->writeByte((int)0xFF);

        foreach ($this->_fields as $field) {
            $fnmFile->writeString($field->name);
            $fnmFile->writeByte(($field->isIndexed       ? 0x01 : 0x00) |
                                ($field->storeTermVector ? 0x02 : 0x00)
// not supported yet            0x04 /* term positions are stored with the term vectors */ |
// not supported yet            0x08 /* term offsets are stored with the term vectors */   |
                               );

            if ($field->isIndexed) {
                // pre-2.1 index mode (not used now)
                // $normFileName = $this->_name . '.f' . $field->number;
                // $fFile = $this->_directory->createFile($normFileName);
                // $fFile->writeBytes($this->_norms[$field->name]);
                // $this->_files[] = $normFileName;

                $nrmFile->writeBytes($this->_norms[$field->name]);
            }
        }

        $this->_files[] = $this->_name . '.fnm';
        $this->_files[] = $this->_name . '.nrm';
    }



    /**
     * Term Dictionary file
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_tisFile = null;

    /**
     * Term Dictionary index file
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_tiiFile = null;

    /**
     * Frequencies file
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_frqFile = null;

    /**
     * Positions file
     *
     * @var Zend_Search_Lucene_Storage_File
     */
    private $_prxFile = null;

    /**
     * Number of written terms
     *
     * @var integer
     */
    private $_termCount;


    /**
     * Last saved term
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_prevTerm;

    /**
     * Last saved term info
     *
     * @var Zend_Search_Lucene_Index_TermInfo
     */
    private $_prevTermInfo;

    /**
     * Last saved index term
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_prevIndexTerm;

    /**
     * Last saved index term info
     *
     * @var Zend_Search_Lucene_Index_TermInfo
     */
    private $_prevIndexTermInfo;

    /**
     * Last term dictionary file position
     *
     * @var integer
     */
    private $_lastIndexPosition;

    /**
     * Create dicrionary, frequency and positions files and write necessary headers
     */
    public function initializeDictionaryFiles()
    {
        $this->_tisFile = $this->_directory->createFile($this->_name . '.tis');
        $this->_tisFile->writeInt((int)0xFFFFFFFD);
        $this->_tisFile->writeLong(0 /* dummy data for terms count */);
        $this->_tisFile->writeInt(self::$indexInterval);
        $this->_tisFile->writeInt(self::$skipInterval);
        $this->_tisFile->writeInt(self::$maxSkipLevels);

        $this->_tiiFile = $this->_directory->createFile($this->_name . '.tii');
        $this->_tiiFile->writeInt((int)0xFFFFFFFD);
        $this->_tiiFile->writeLong(0 /* dummy data for terms count */);
        $this->_tiiFile->writeInt(self::$indexInterval);
        $this->_tiiFile->writeInt(self::$skipInterval);
        $this->_tiiFile->writeInt(self::$maxSkipLevels);

        /** Dump dictionary header */
        $this->_tiiFile->writeVInt(0);                    // preffix length
        $this->_tiiFile->writeString('');                 // suffix
        $this->_tiiFile->writeInt((int)0xFFFFFFFF);       // field number
        $this->_tiiFile->writeByte((int)0x0F);
        $this->_tiiFile->writeVInt(0);                    // DocFreq
        $this->_tiiFile->writeVInt(0);                    // FreqDelta
        $this->_tiiFile->writeVInt(0);                    // ProxDelta
        $this->_tiiFile->writeVInt(24);                   // IndexDelta

        $this->_frqFile = $this->_directory->createFile($this->_name . '.frq');
        $this->_prxFile = $this->_directory->createFile($this->_name . '.prx');

        $this->_files[] = $this->_name . '.tis';
        $this->_files[] = $this->_name . '.tii';
        $this->_files[] = $this->_name . '.frq';
        $this->_files[] = $this->_name . '.prx';

        $this->_prevTerm          = null;
        $this->_prevTermInfo      = null;
        $this->_prevIndexTerm     = null;
        $this->_prevIndexTermInfo = null;
        $this->_lastIndexPosition = 24;
        $this->_termCount         = 0;

    }

    /**
     * Add term
     *
     * Term positions is an array( docId => array(pos1, pos2, pos3, ...), ... )
     *
     * @param Zend_Search_Lucene_Index_Term $termEntry
     * @param array $termDocs
     */
    public function addTerm($termEntry, $termDocs)
    {
        $freqPointer = $this->_frqFile->tell();
        $proxPointer = $this->_prxFile->tell();

        $prevDoc = 0;
        foreach ($termDocs as $docId => $termPositions) {
            $docDelta = ($docId - $prevDoc)*2;
            $prevDoc = $docId;
            if (count($termPositions) > 1) {
                $this->_frqFile->writeVInt($docDelta);
                $this->_frqFile->writeVInt(count($termPositions));
            } else {
                $this->_frqFile->writeVInt($docDelta + 1);
            }

            $prevPosition = 0;
            foreach ($termPositions as $position) {
                $this->_prxFile->writeVInt($position - $prevPosition);
                $prevPosition = $position;
            }
        }

        if (count($termDocs) >= self::$skipInterval) {
            /**
             * @todo Write Skip Data to a freq file.
             * It's not used now, but make index more optimal
             */
            $skipOffset = $this->_frqFile->tell() - $freqPointer;
        } else {
            $skipOffset = 0;
        }

        $term = new Zend_Search_Lucene_Index_Term($termEntry->text,
                                                  $this->_fields[$termEntry->field]->number);
        $termInfo = new Zend_Search_Lucene_Index_TermInfo(count($termDocs),
                                                          $freqPointer, $proxPointer, $skipOffset);

        $this->_dumpTermDictEntry($this->_tisFile, $this->_prevTerm, $term, $this->_prevTermInfo, $termInfo);

        if (($this->_termCount + 1) % self::$indexInterval == 0) {
            $this->_dumpTermDictEntry($this->_tiiFile, $this->_prevIndexTerm, $term, $this->_prevIndexTermInfo, $termInfo);

            $indexPosition = $this->_tisFile->tell();
            $this->_tiiFile->writeVInt($indexPosition - $this->_lastIndexPosition);
            $this->_lastIndexPosition = $indexPosition;

        }
        $this->_termCount++;
    }

    /**
     * Close dictionary
     */
    public function closeDictionaryFiles()
    {
        $this->_tisFile->seek(4);
        $this->_tisFile->writeLong($this->_termCount);

        $this->_tiiFile->seek(4);
        // + 1 is used to count an additional special index entry (empty term at the start of the list)
        $this->_tiiFile->writeLong(($this->_termCount - $this->_termCount % self::$indexInterval)/self::$indexInterval + 1);
    }


    /**
     * Dump Term Dictionary segment file entry.
     * Used to write entry to .tis or .tii files
     *
     * @param Zend_Search_Lucene_Storage_File $dicFile
     * @param Zend_Search_Lucene_Index_Term $prevTerm
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_TermInfo $prevTermInfo
     * @param Zend_Search_Lucene_Index_TermInfo $termInfo
     */
    protected function _dumpTermDictEntry(Zend_Search_Lucene_Storage_File $dicFile,
                                        &$prevTerm,     Zend_Search_Lucene_Index_Term     $term,
                                        &$prevTermInfo, Zend_Search_Lucene_Index_TermInfo $termInfo)
    {
        if (isset($prevTerm) && $prevTerm->field == $term->field) {
            $matchedBytes = 0;
            $maxBytes = min(strlen($prevTerm->text), strlen($term->text));
            while ($matchedBytes < $maxBytes  &&
                   $prevTerm->text[$matchedBytes] == $term->text[$matchedBytes]) {
                $matchedBytes++;
            }

            // Calculate actual matched UTF-8 pattern
            $prefixBytes = 0;
            $prefixChars = 0;
            while ($prefixBytes < $matchedBytes) {
                $charBytes = 1;
                if ((ord($term->text[$prefixBytes]) & 0xC0) == 0xC0) {
                    $charBytes++;
                    if (ord($term->text[$prefixBytes]) & 0x20 ) {
                        $charBytes++;
                        if (ord($term->text[$prefixBytes]) & 0x10 ) {
                            $charBytes++;
                        }
                    }
                }

                if ($prefixBytes + $charBytes > $matchedBytes) {
                    // char crosses matched bytes boundary
                    // skip char
                    break;
                }

                $prefixChars++;
                $prefixBytes += $charBytes;
            }

            // Write preffix length
            $dicFile->writeVInt($prefixChars);
            // Write suffix
            $dicFile->writeString(substr($term->text, $prefixBytes));
        } else {
            // Write preffix length
            $dicFile->writeVInt(0);
            // Write suffix
            $dicFile->writeString($term->text);
        }
        // Write field number
        $dicFile->writeVInt($term->field);
        // DocFreq (the count of documents which contain the term)
        $dicFile->writeVInt($termInfo->docFreq);

        $prevTerm = $term;

        if (!isset($prevTermInfo)) {
            // Write FreqDelta
            $dicFile->writeVInt($termInfo->freqPointer);
            // Write ProxDelta
            $dicFile->writeVInt($termInfo->proxPointer);
        } else {
            // Write FreqDelta
            $dicFile->writeVInt($termInfo->freqPointer - $prevTermInfo->freqPointer);
            // Write ProxDelta
            $dicFile->writeVInt($termInfo->proxPointer - $prevTermInfo->proxPointer);
        }
        // Write SkipOffset - it's not 0 when $termInfo->docFreq > self::$skipInterval
        if ($termInfo->skipOffset != 0) {
            $dicFile->writeVInt($termInfo->skipOffset);
        }

        $prevTermInfo = $termInfo;
    }


    /**
     * Generate compound index file
     */
    protected function _generateCFS()
    {
        $cfsFile = $this->_directory->createFile($this->_name . '.cfs');
        $cfsFile->writeVInt(count($this->_files));

        $dataOffsetPointers = array();
        foreach ($this->_files as $fileName) {
            $dataOffsetPointers[$fileName] = $cfsFile->tell();
            $cfsFile->writeLong(0); // write dummy data
            $cfsFile->writeString($fileName);
        }

        foreach ($this->_files as $fileName) {
            // Get actual data offset
            $dataOffset = $cfsFile->tell();
            // Seek to the data offset pointer
            $cfsFile->seek($dataOffsetPointers[$fileName]);
            // Write actual data offset value
            $cfsFile->writeLong($dataOffset);
            // Seek back to the end of file
            $cfsFile->seek($dataOffset);

            $dataFile = $this->_directory->getFileObject($fileName);

            $byteCount = $this->_directory->fileLength($fileName);
            while ($byteCount > 0) {
                $data = $dataFile->readBytes(min($byteCount, 131072 /*128Kb*/));
                $byteCount -= strlen($data);
                $cfsFile->writeBytes($data);
            }

            $this->_directory->deleteFile($fileName);
        }
    }


    /**
     * Close segment, write it to disk and return segment info
     *
     * @return Zend_Search_Lucene_Index_SegmentInfo
     */
    abstract public function close();
}

PKpG[�i��!Search/Lucene/Index/FieldInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Index
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Index_FieldInfo
{
    public $name;
    public $isIndexed;
    public $number;
    public $storeTermVector;
    public $normsOmitted;
    public $payloadsStored;

    public function __construct($name, $isIndexed, $number, $storeTermVector, $normsOmitted = false, $payloadsStored = false)
    {
        $this->name            = $name;
        $this->isIndexed       = $isIndexed;
        $this->number          = $number;
        $this->storeTermVector = $storeTermVector;
        $this->normsOmitted    = $normsOmitted;
        $this->payloadsStored  = $payloadsStored;
    }
}

PKpG[����#Search/Lucene/Search/QueryToken.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryToken
{
    /**
     * Token types.
     */
    const TT_WORD                 = 0;  // Word
    const TT_PHRASE               = 1;  // Phrase (one or several quoted words)
    const TT_FIELD                = 2;  // Field name in 'field:word', field:<phrase> or field:(<subquery>) pairs
    const TT_FIELD_INDICATOR      = 3;  // ':'
    const TT_REQUIRED             = 4;  // '+'
    const TT_PROHIBITED           = 5;  // '-'
    const TT_FUZZY_PROX_MARK      = 6;  // '~'
    const TT_BOOSTING_MARK        = 7;  // '^'
    const TT_RANGE_INCL_START     = 8;  // '['
    const TT_RANGE_INCL_END       = 9;  // ']'
    const TT_RANGE_EXCL_START     = 10; // '{'
    const TT_RANGE_EXCL_END       = 11; // '}'
    const TT_SUBQUERY_START       = 12; // '('
    const TT_SUBQUERY_END         = 13; // ')'
    const TT_AND_LEXEME           = 14; // 'AND' or 'and'
    const TT_OR_LEXEME            = 15; // 'OR'  or 'or'
    const TT_NOT_LEXEME           = 16; // 'NOT' or 'not'
    const TT_TO_LEXEME            = 17; // 'TO'  or 'to'
    const TT_NUMBER               = 18; // Number, like: 10, 0.8, .64, ....


    /**
     * Returns all possible lexeme types.
     * It's used for syntax analyzer state machine initialization
     *
     * @return array
     */
    public static function getTypes()
    {
        return array(   self::TT_WORD,
                        self::TT_PHRASE,
                        self::TT_FIELD,
                        self::TT_FIELD_INDICATOR,
                        self::TT_REQUIRED,
                        self::TT_PROHIBITED,
                        self::TT_FUZZY_PROX_MARK,
                        self::TT_BOOSTING_MARK,
                        self::TT_RANGE_INCL_START,
                        self::TT_RANGE_INCL_END,
                        self::TT_RANGE_EXCL_START,
                        self::TT_RANGE_EXCL_END,
                        self::TT_SUBQUERY_START,
                        self::TT_SUBQUERY_END,
                        self::TT_AND_LEXEME,
                        self::TT_OR_LEXEME,
                        self::TT_NOT_LEXEME,
                        self::TT_TO_LEXEME,
                        self::TT_NUMBER
                     );
    }


    /**
     * TokenCategories
     */
    const TC_WORD           = 0;   // Word
    const TC_PHRASE         = 1;   // Phrase (one or several quoted words)
    const TC_NUMBER         = 2;   // Nubers, which are used with syntax elements. Ex. roam~0.8
    const TC_SYNTAX_ELEMENT = 3;   // +  -  ( )  [ ]  { }  !  ||  && ~ ^


    /**
     * Token type.
     *
     * @var integer
     */
    public $type;

    /**
     * Token text.
     *
     * @var integer
     */
    public $text;

    /**
     * Token position within query.
     *
     * @var integer
     */
    public $position;


    /**
     * IndexReader constructor needs token type and token text as a parameters.
     *
     * @param integer $tokenCategory
     * @param string  $tokText
     * @param integer $position
     */
    public function __construct($tokenCategory, $tokenText, $position)
    {
        $this->text     = $tokenText;
        $this->position = $position + 1; // Start from 1

        switch ($tokenCategory) {
            case self::TC_WORD:
                if (  strtolower($tokenText) == 'and') {
                    $this->type = self::TT_AND_LEXEME;
                } else if (strtolower($tokenText) == 'or') {
                    $this->type = self::TT_OR_LEXEME;
                } else if (strtolower($tokenText) == 'not') {
                    $this->type = self::TT_NOT_LEXEME;
                } else if (strtolower($tokenText) == 'to') {
                    $this->type = self::TT_TO_LEXEME;
                } else {
                    $this->type = self::TT_WORD;
                }
                break;

            case self::TC_PHRASE:
                $this->type = self::TT_PHRASE;
                break;

            case self::TC_NUMBER:
                $this->type = self::TT_NUMBER;
                break;

            case self::TC_SYNTAX_ELEMENT:
                switch ($tokenText) {
                    case ':':
                        $this->type = self::TT_FIELD_INDICATOR;
                        break;

                    case '+':
                        $this->type = self::TT_REQUIRED;
                        break;

                    case '-':
                        $this->type = self::TT_PROHIBITED;
                        break;

                    case '~':
                        $this->type = self::TT_FUZZY_PROX_MARK;
                        break;

                    case '^':
                        $this->type = self::TT_BOOSTING_MARK;
                        break;

                    case '[':
                        $this->type = self::TT_RANGE_INCL_START;
                        break;

                    case ']':
                        $this->type = self::TT_RANGE_INCL_END;
                        break;

                    case '{':
                        $this->type = self::TT_RANGE_EXCL_START;
                        break;

                    case '}':
                        $this->type = self::TT_RANGE_EXCL_END;
                        break;

                    case '(':
                        $this->type = self::TT_SUBQUERY_START;
                        break;

                    case ')':
                        $this->type = self::TT_SUBQUERY_END;
                        break;

                    case '!':
                        $this->type = self::TT_NOT_LEXEME;
                        break;

                    case '&&':
                        $this->type = self::TT_AND_LEXEME;
                        break;

                    case '||':
                        $this->type = self::TT_OR_LEXEME;
                        break;

                    default:
                        throw new Zend_Search_Lucene_Exception('Unrecognized query syntax lexeme: \'' . $tokenText . '\'');
                }
                break;

            case self::TC_NUMBER:
                $this->type = self::TT_NUMBER;

            default:
                throw new Zend_Search_Lucene_Exception('Unrecognized lexeme type: \'' . $tokenCategory . '\'');
        }
    }
}

PKpG[�W2G��#Search/Lucene/Search/QueryEntry.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryEntry_Term */
require_once 'Zend/Search/Lucene/Search/QueryEntry/Term.php';

/** Zend_Search_Lucene_Search_QueryEntry_Phrase */
require_once 'Zend/Search/Lucene/Search/QueryEntry/Phrase.php';

/** Zend_Search_Lucene_Search_QueryEntry_Subquery */
require_once 'Zend/Search/Lucene/Search/QueryEntry/Subquery.php';


/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Search_QueryEntry
{
    /**
     * Query entry boost factor
     *
     * @var float
     */
    protected $_boost = 1.0;


    /**
     * Process modifier ('~')
     *
     * @param mixed $parameter
     */
    abstract public function processFuzzyProximityModifier($parameter = null);


    /**
     * Transform entry to a subquery
     *
     * @param string $encoding
     * @return Zend_Search_Lucene_Search_Query
     */
    abstract public function getQuery($encoding);

    /**
     * Boost query entry
     *
     * @param float $boostFactor
     */
    public function boost($boostFactor)
    {
        $this->_boost *= $boostFactor;
    }


}
PKpG[�d_o]
]
+Search/Lucene/Search/Similarity/Default.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Similarity */
require_once 'Zend/Search/Lucene/Search/Similarity.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Similarity_Default extends Zend_Search_Lucene_Search_Similarity
{

    /**
     * Implemented as '1/sqrt(numTerms)'.
     *
     * @param string $fieldName
     * @param integer $numTerms
     * @return float
     */
    public function lengthNorm($fieldName, $numTerms)
    {
        if ($numTerms == 0) {
            return 1E10;
        }

        return 1.0/sqrt($numTerms);
    }

    /**
     * Implemented as '1/sqrt(sumOfSquaredWeights)'.
     *
     * @param float $sumOfSquaredWeights
     * @return float
     */
    public function queryNorm($sumOfSquaredWeights)
    {
        return 1.0/sqrt($sumOfSquaredWeights);
    }

    /**
     * Implemented as 'sqrt(freq)'.
     *
     * @param float $freq
     * @return float
     */
    public function tf($freq)
    {
        return sqrt($freq);
    }

    /**
     * Implemented as '1/(distance + 1)'.
     *
     * @param integer $distance
     * @return float
     */
    public function sloppyFreq($distance)
    {
        return 1.0/($distance + 1);
    }

    /**
     * Implemented as 'log(numDocs/(docFreq+1)) + 1'.
     *
     * @param integer $docFreq
     * @param integer $numDocs
     * @return float
     */
    public function idfFreq($docFreq, $numDocs)
    {
        return log($numDocs/(float)($docFreq+1)) + 1.0;
    }

    /**
     * Implemented as 'overlap/maxOverlap'.
     *
     * @param integer $overlap
     * @param integer $maxOverlap
     * @return float
     */
    public function coord($overlap, $maxOverlap)
    {
        return $overlap/(float)$maxOverlap;
    }
}
PKpG[k#�GW
W
!Search/Lucene/Search/QueryHit.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryHit
{
    /**
     * Object handle of the index
     * @var Zend_Search_Lucene_Interface
     */
    protected $_index = null;

    /**
     * Object handle of the document associated with this hit
     * @var Zend_Search_Lucene_Document
     */
    protected $_document = null;

    /**
     * Number of the document in the index
     * @var integer
     */
    public $id;

    /**
     * Score of the hit
     * @var float
     */
    public $score;


    /**
     * Constructor - pass object handle of Zend_Search_Lucene_Interface index that produced
     * the hit so the document can be retrieved easily from the hit.
     *
     * @param Zend_Search_Lucene_Interface $index
     */

    public function __construct(Zend_Search_Lucene_Interface $index)
    {
        $this->_index = new Zend_Search_Lucene_Proxy($index);
    }


    /**
     * Convenience function for getting fields from the document
     * associated with this hit.
     *
     * @param string $offset
     * @return string
     */
    public function __get($offset)
    {
        return $this->getDocument()->getFieldValue($offset);
    }


    /**
     * Return the document object for this hit
     *
     * @return Zend_Search_Lucene_Document
     */
    public function getDocument()
    {
        if (!$this->_document instanceof Zend_Search_Lucene_Document) {
            $this->_document = $this->_index->getDocument($this->id);
        }

        return $this->_document;
    }


    /**
     * Return the index object for this hit
     *
     * @return Zend_Search_Lucene_Interface
     */
    public function getIndex()
    {
        return $this->_index;
    }
}

PKpG[Z@���Search/Lucene/Search/Query.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Search_Lucene_Document_Html */
require_once 'Zend/Search/Lucene/Document/Html.php';

/** Zend_Search_Lucene_Index_DocsFilter */
require_once 'Zend/Search/Lucene/Index/DocsFilter.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Search_Query
{

    /**
     * query boost factor
     *
     * @var float
     */
    private $_boost = 1;

    /**
     * Query weight
     *
     * @var Zend_Search_Lucene_Search_Weight
     */
    protected $_weight = null;

    /**
     * Current highlight color
     *
     * @var integer
     */
    private $_currentColorIndex = 0;

    /**
     * List of colors for text highlighting
     *
     * @var array
     */
    private $_highlightColors = array('#66ffff', '#ff66ff', '#ffff66',
                                      '#ff8888', '#88ff88', '#8888ff',
                                      '#88dddd', '#dd88dd', '#dddd88',
                                      '#aaddff', '#aaffdd', '#ddaaff', '#ddffaa', '#ffaadd', '#ffddaa');


    /**
     * Gets the boost for this clause.  Documents matching
     * this clause will (in addition to the normal weightings) have their score
     * multiplied by boost.   The boost is 1.0 by default.
     *
     * @return float
     */
    public function getBoost()
    {
        return $this->_boost;
    }

    /**
     * Sets the boost for this query clause to $boost.
     *
     * @param float $boost
     */
    public function setBoost($boost)
    {
        $this->_boost = $boost;
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    abstract public function score($docId, Zend_Search_Lucene_Interface $reader);

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    abstract public function matchedDocs();

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * Query specific implementation
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    abstract public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null);

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    abstract public function createWeight(Zend_Search_Lucene_Interface $reader);

    /**
     * Constructs an initializes a Weight for a _top-level_query_.
     *
     * @param Zend_Search_Lucene_Interface $reader
     */
    protected function _initWeight(Zend_Search_Lucene_Interface $reader)
    {
        // Check, that it's a top-level query and query weight is not initialized yet.
        if ($this->_weight !== null) {
            return $this->_weight;
        }

        $this->createWeight($reader);
        $sum = $this->_weight->sumOfSquaredWeights();
        $queryNorm = $reader->getSimilarity()->queryNorm($sum);
        $this->_weight->normalize($queryNorm);
    }

    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    abstract public function rewrite(Zend_Search_Lucene_Interface $index);

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    abstract public function optimize(Zend_Search_Lucene_Interface $index);

    /**
     * Reset query, so it can be reused within other queries or
     * with other indeces
     */
    public function reset()
    {
        $this->_weight = null;
    }


    /**
     * Print a query
     *
     * @return string
     */
    abstract public function __toString();

    /**
     * Return query terms
     *
     * @return array
     */
    abstract public function getQueryTerms();

    /**
     * Get highlight color and shift to next
     *
     * @param integer &$colorIndex
     * @return string
     */
    protected function _getHighlightColor(&$colorIndex)
    {
        $color = $this->_highlightColors[$colorIndex++];

        $colorIndex %= count($this->_highlightColors);

        return $color;
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    abstract public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex);

    /**
     * Highlight matches in $inputHTML
     *
     * @param string $inputHTML
     * @return string
     */
    public function highlightMatches($inputHTML)
    {
        $doc = Zend_Search_Lucene_Document_Html::loadHTML($inputHTML);

        $colorIndex = 0;
        $this->highlightMatchesDOM($doc, $colorIndex);

        return $doc->getHTML();
    }
}

PKpG[�<��c�c$Search/Lucene/Search/QueryParser.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Search_Query_Term */
require_once 'Zend/Search/Lucene/Search/Query/Term.php';

/** Zend_Search_Lucene_Search_Query_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php';

/** Zend_Search_Lucene_Search_Query_Boolean */
require_once 'Zend/Search/Lucene/Search/Query/Boolean.php';

/** Zend_Search_Lucene_Search_Query_Phrase */
require_once 'Zend/Search/Lucene/Search/Query/Phrase.php';

/** Zend_Search_Lucene_Search_Query_Wildcard */
require_once 'Zend/Search/Lucene/Search/Query/Wildcard.php';

/** Zend_Search_Lucene_Search_Query_Range */
require_once 'Zend/Search/Lucene/Search/Query/Range.php';

/** Zend_Search_Lucene_Search_Query_Fuzzy */
require_once 'Zend/Search/Lucene/Search/Query/Fuzzy.php';

/** Zend_Search_Lucene_Search_Query_Empty */
require_once 'Zend/Search/Lucene/Search/Query/Empty.php';

/** Zend_Search_Lucene_Search_Query_Insignificant */
require_once 'Zend/Search/Lucene/Search/Query/Insignificant.php';


/** Zend_Search_Lucene_Search_QueryLexer */
require_once 'Zend/Search/Lucene/Search/QueryLexer.php';

/** Zend_Search_Lucene_Search_QueryParserContext */
require_once 'Zend/Search/Lucene/Search/QueryParserContext.php';


/** Zend_Search_Lucene_FSM */
require_once 'Zend/Search/Lucene/FSM.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryParser extends Zend_Search_Lucene_FSM
{
    /**
     * Parser instance
     *
     * @var Zend_Search_Lucene_Search_QueryParser
     */
    private static $_instance = null;


    /**
     * Query lexer
     *
     * @var Zend_Search_Lucene_Search_QueryLexer
     */
    private $_lexer;

    /**
     * Tokens list
     * Array of Zend_Search_Lucene_Search_QueryToken objects
     *
     * @var array
     */
    private $_tokens;

    /**
     * Current token
     *
     * @var integer|string
     */
    private $_currentToken;

    /**
     * Last token
     *
     * It can be processed within FSM states, but this addirional state simplifies FSM
     *
     * @var Zend_Search_Lucene_Search_QueryToken
     */
    private $_lastToken = null;

    /**
     * Range query first term
     *
     * @var string
     */
    private $_rqFirstTerm = null;

    /**
     * Current query parser context
     *
     * @var Zend_Search_Lucene_Search_QueryParserContext
     */
    private $_context;

    /**
     * Context stack
     *
     * @var array
     */
    private $_contextStack;

    /**
     * Query string encoding
     *
     * @var string
     */
    private $_encoding;

    /**
     * Query string default encoding
     *
     * @var string
     */
    private $_defaultEncoding = '';

    /**
     * Defines query parsing mode.
     * 
     * If this option is turned on, then query parser suppress query parser exceptions
     * and constructs multi-term query using all words from a query.
     * 
     * That helps to avoid exceptions caused by queries, which don't conform to query language,
     * but limits possibilities to check, that query entered by user has some inconsistencies.
     * 
     * 
     * Default is true.
     * 
     * Use {@link Zend_Search_Lucene::suppressQueryParsingExceptions()},
     * {@link Zend_Search_Lucene::dontSuppressQueryParsingExceptions()} and
     * {@link Zend_Search_Lucene::checkQueryParsingExceptionsSuppressMode()} to operate
     * with this setting.
     * 
     * @var boolean
     */
    private $_suppressQueryParsingExceptions = true;

    /**
     * Boolean operators constants
     */
    const B_OR  = 0;
    const B_AND = 1;

    /**
     * Default boolean queries operator
     *
     * @var integer
     */
    private $_defaultOperator = self::B_OR;


    /** Query parser State Machine states */
    const ST_COMMON_QUERY_ELEMENT       = 0;   // Terms, phrases, operators
    const ST_CLOSEDINT_RQ_START         = 1;   // Range query start (closed interval) - '['
    const ST_CLOSEDINT_RQ_FIRST_TERM    = 2;   // First term in '[term1 to term2]' construction
    const ST_CLOSEDINT_RQ_TO_TERM       = 3;   // 'TO' lexeme in '[term1 to term2]' construction
    const ST_CLOSEDINT_RQ_LAST_TERM     = 4;   // Second term in '[term1 to term2]' construction
    const ST_CLOSEDINT_RQ_END           = 5;   // Range query end (closed interval) - ']'
    const ST_OPENEDINT_RQ_START         = 6;   // Range query start (opened interval) - '{'
    const ST_OPENEDINT_RQ_FIRST_TERM    = 7;   // First term in '{term1 to term2}' construction
    const ST_OPENEDINT_RQ_TO_TERM       = 8;   // 'TO' lexeme in '{term1 to term2}' construction
    const ST_OPENEDINT_RQ_LAST_TERM     = 9;   // Second term in '{term1 to term2}' construction
    const ST_OPENEDINT_RQ_END           = 10;  // Range query end (opened interval) - '}'

    /**
     * Parser constructor
     */
    public function __construct()
    {
        parent::__construct(array(self::ST_COMMON_QUERY_ELEMENT,
                                  self::ST_CLOSEDINT_RQ_START,
                                  self::ST_CLOSEDINT_RQ_FIRST_TERM,
                                  self::ST_CLOSEDINT_RQ_TO_TERM,
                                  self::ST_CLOSEDINT_RQ_LAST_TERM,
                                  self::ST_CLOSEDINT_RQ_END,
                                  self::ST_OPENEDINT_RQ_START,
                                  self::ST_OPENEDINT_RQ_FIRST_TERM,
                                  self::ST_OPENEDINT_RQ_TO_TERM,
                                  self::ST_OPENEDINT_RQ_LAST_TERM,
                                  self::ST_OPENEDINT_RQ_END
                                 ),
                            Zend_Search_Lucene_Search_QueryToken::getTypes());

        $this->addRules(
             array(array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_WORD,             self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_PHRASE,           self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_FIELD,            self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_REQUIRED,         self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_PROHIBITED,       self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_FUZZY_PROX_MARK,  self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_BOOSTING_MARK,    self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_RANGE_INCL_START, self::ST_CLOSEDINT_RQ_START),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_RANGE_EXCL_START, self::ST_OPENEDINT_RQ_START),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_SUBQUERY_START,   self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_SUBQUERY_END,     self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_AND_LEXEME,       self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_OR_LEXEME,        self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_NOT_LEXEME,       self::ST_COMMON_QUERY_ELEMENT),
                   array(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_NUMBER,           self::ST_COMMON_QUERY_ELEMENT)
                  ));
        $this->addRules(
             array(array(self::ST_CLOSEDINT_RQ_START,      Zend_Search_Lucene_Search_QueryToken::TT_WORD,           self::ST_CLOSEDINT_RQ_FIRST_TERM),
                   array(self::ST_CLOSEDINT_RQ_FIRST_TERM, Zend_Search_Lucene_Search_QueryToken::TT_TO_LEXEME,      self::ST_CLOSEDINT_RQ_TO_TERM),
                   array(self::ST_CLOSEDINT_RQ_TO_TERM,    Zend_Search_Lucene_Search_QueryToken::TT_WORD,           self::ST_CLOSEDINT_RQ_LAST_TERM),
                   array(self::ST_CLOSEDINT_RQ_LAST_TERM,  Zend_Search_Lucene_Search_QueryToken::TT_RANGE_INCL_END, self::ST_COMMON_QUERY_ELEMENT)
                  ));
        $this->addRules(
             array(array(self::ST_OPENEDINT_RQ_START,      Zend_Search_Lucene_Search_QueryToken::TT_WORD,           self::ST_OPENEDINT_RQ_FIRST_TERM),
                   array(self::ST_OPENEDINT_RQ_FIRST_TERM, Zend_Search_Lucene_Search_QueryToken::TT_TO_LEXEME,      self::ST_OPENEDINT_RQ_TO_TERM),
                   array(self::ST_OPENEDINT_RQ_TO_TERM,    Zend_Search_Lucene_Search_QueryToken::TT_WORD,           self::ST_OPENEDINT_RQ_LAST_TERM),
                   array(self::ST_OPENEDINT_RQ_LAST_TERM,  Zend_Search_Lucene_Search_QueryToken::TT_RANGE_EXCL_END, self::ST_COMMON_QUERY_ELEMENT)
                  ));



        $addTermEntryAction             = new Zend_Search_Lucene_FSMAction($this, 'addTermEntry');
        $addPhraseEntryAction           = new Zend_Search_Lucene_FSMAction($this, 'addPhraseEntry');
        $setFieldAction                 = new Zend_Search_Lucene_FSMAction($this, 'setField');
        $setSignAction                  = new Zend_Search_Lucene_FSMAction($this, 'setSign');
        $setFuzzyProxAction             = new Zend_Search_Lucene_FSMAction($this, 'processFuzzyProximityModifier');
        $processModifierParameterAction = new Zend_Search_Lucene_FSMAction($this, 'processModifierParameter');
        $subqueryStartAction            = new Zend_Search_Lucene_FSMAction($this, 'subqueryStart');
        $subqueryEndAction              = new Zend_Search_Lucene_FSMAction($this, 'subqueryEnd');
        $logicalOperatorAction          = new Zend_Search_Lucene_FSMAction($this, 'logicalOperator');
        $openedRQFirstTermAction        = new Zend_Search_Lucene_FSMAction($this, 'openedRQFirstTerm');
        $openedRQLastTermAction         = new Zend_Search_Lucene_FSMAction($this, 'openedRQLastTerm');
        $closedRQFirstTermAction        = new Zend_Search_Lucene_FSMAction($this, 'closedRQFirstTerm');
        $closedRQLastTermAction         = new Zend_Search_Lucene_FSMAction($this, 'closedRQLastTerm');


        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_WORD,            $addTermEntryAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_PHRASE,          $addPhraseEntryAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_FIELD,           $setFieldAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_REQUIRED,        $setSignAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_PROHIBITED,      $setSignAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_FUZZY_PROX_MARK, $setFuzzyProxAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_NUMBER,          $processModifierParameterAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_SUBQUERY_START,  $subqueryStartAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_SUBQUERY_END,    $subqueryEndAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_AND_LEXEME,      $logicalOperatorAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_OR_LEXEME,       $logicalOperatorAction);
        $this->addInputAction(self::ST_COMMON_QUERY_ELEMENT, Zend_Search_Lucene_Search_QueryToken::TT_NOT_LEXEME,      $logicalOperatorAction);

        $this->addEntryAction(self::ST_OPENEDINT_RQ_FIRST_TERM, $openedRQFirstTermAction);
        $this->addEntryAction(self::ST_OPENEDINT_RQ_LAST_TERM,  $openedRQLastTermAction);
        $this->addEntryAction(self::ST_CLOSEDINT_RQ_FIRST_TERM, $closedRQFirstTermAction);
        $this->addEntryAction(self::ST_CLOSEDINT_RQ_LAST_TERM,  $closedRQLastTermAction);



        $this->_lexer = new Zend_Search_Lucene_Search_QueryLexer();
    }

    /**
     * Get query parser instance
     * 
     * @return Zend_Search_Lucene_Search_QueryParser
     */
    private static function _getInstance()
    {
        if (self::$_instance === null) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * Set query string default encoding
     *
     * @param string $encoding
     */
    public static function setDefaultEncoding($encoding)
    {
        self::_getInstance()->_defaultEncoding = $encoding;
    }

    /**
     * Get query string default encoding
     *
     * @return string
     */
    public static function getDefaultEncoding()
    {
       return self::_getInstance()->_defaultEncoding;
    }

    /**
     * Set default boolean operator
     *
     * @param integer $operator
     */
    public static function setDefaultOperator($operator)
    {
        self::_getInstance()->_defaultOperator = $operator;
    }

    /**
     * Get default boolean operator
     *
     * @return integer
     */
    public static function getDefaultOperator()
    {
        return self::_getInstance()->_defaultOperator;
    }

    /**
     * Turn on 'suppress query parser exceptions' mode.
     */
    public static function suppressQueryParsingExceptions()
    {
        self::_getInstance()->_suppressQueryParsingExceptions = true;
    }
    /**
     * Turn off 'suppress query parser exceptions' mode.
     */
    public static function dontSuppressQueryParsingExceptions()
    {
        self::_getInstance()->_suppressQueryParsingExceptions = false;
    }
    /**
     * Check 'suppress query parser exceptions' mode.
     * @return boolean
     */
    public static function queryParsingExceptionsSuppressed()
    {
        return self::_getInstance()->_suppressQueryParsingExceptions;
    }
    

    
    /**
     * Parses a query string
     *
     * @param string $strQuery
     * @param string $encoding
     * @return Zend_Search_Lucene_Search_Query
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public static function parse($strQuery, $encoding = null)
    {
        self::_getInstance();
        
        // Reset FSM if previous parse operation didn't return it into a correct state 
        self::$_instance->reset();
        
        try {
            self::$_instance->_encoding     = ($encoding !== null) ? $encoding : self::$_instance->_defaultEncoding;
            self::$_instance->_lastToken    = null;
            self::$_instance->_context      = new Zend_Search_Lucene_Search_QueryParserContext(self::$_instance->_encoding);
            self::$_instance->_contextStack = array();
            self::$_instance->_tokens       = self::$_instance->_lexer->tokenize($strQuery, self::$_instance->_encoding);
    
            // Empty query
            if (count(self::$_instance->_tokens) == 0) {
                return new Zend_Search_Lucene_Search_Query_Insignificant();
            }
    
    
            foreach (self::$_instance->_tokens as $token) {
                try {
                    self::$_instance->_currentToken = $token;
                    self::$_instance->process($token->type);
    
                    self::$_instance->_lastToken = $token;
                } catch (Exception $e) {
                    if (strpos($e->getMessage(), 'There is no any rule for') !== false) {
                        throw new Zend_Search_Lucene_Search_QueryParserException( 'Syntax error at char position ' . $token->position . '.' );
                    }
    
                    throw $e;
                }
            }
    
            if (count(self::$_instance->_contextStack) != 0) {
                throw new Zend_Search_Lucene_Search_QueryParserException('Syntax Error: mismatched parentheses, every opening must have closing.' );
            }
    
            return self::$_instance->_context->getQuery();
        } catch (Zend_Search_Lucene_Search_QueryParserException $e) {
            if (self::$_instance->_suppressQueryParsingExceptions) {
                $queryTokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($strQuery, self::$_instance->_encoding);

                $query = new Zend_Search_Lucene_Search_Query_MultiTerm();
                $termsSign = (self::$_instance->_defaultOperator == self::B_AND) ? true /* required term */ :
                                                                                   null /* optional term */;
                                                                                   
                foreach ($queryTokens as $token) {
                    $query->addTerm(new Zend_Search_Lucene_Index_Term($token->getTermText()), $termsSign);
                }
                
                
                return $query;
            } else {
                throw $e;
            }
        }
    }


    /*********************************************************************
     * Actions implementation
     *
     * Actions affect on recognized lexemes list
     *********************************************************************/

    /**
     * Add term to a query
     */
    public function addTermEntry()
    {
        $entry = new Zend_Search_Lucene_Search_QueryEntry_Term($this->_currentToken->text, $this->_context->getField());
        $this->_context->addEntry($entry);
    }

    /**
     * Add phrase to a query
     */
    public function addPhraseEntry()
    {
        $entry = new Zend_Search_Lucene_Search_QueryEntry_Phrase($this->_currentToken->text, $this->_context->getField());
        $this->_context->addEntry($entry);
    }

    /**
     * Set entry field
     */
    public function setField()
    {
        $this->_context->setNextEntryField($this->_currentToken->text);
    }

    /**
     * Set entry sign
     */
    public function setSign()
    {
        $this->_context->setNextEntrySign($this->_currentToken->type);
    }


    /**
     * Process fuzzy search/proximity modifier - '~'
     */
    public function processFuzzyProximityModifier()
    {
        $this->_context->processFuzzyProximityModifier();
    }

    /**
     * Process modifier parameter
     *
     * @throws Zend_Search_Lucene_Exception
     */
    public function processModifierParameter()
    {
        if ($this->_lastToken === null) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Lexeme modifier parameter must follow lexeme modifier. Char position 0.' );
        }

        switch ($this->_lastToken->type) {
            case Zend_Search_Lucene_Search_QueryToken::TT_FUZZY_PROX_MARK:
                $this->_context->processFuzzyProximityModifier($this->_currentToken->text);
                break;

            case Zend_Search_Lucene_Search_QueryToken::TT_BOOSTING_MARK:
                $this->_context->boost($this->_currentToken->text);
                break;

            default:
                // It's not a user input exception
                throw new Zend_Search_Lucene_Exception('Lexeme modifier parameter must follow lexeme modifier. Char position 0.' );
        }
    }


    /**
     * Start subquery
     */
    public function subqueryStart()
    {
        $this->_contextStack[] = $this->_context;
        $this->_context        = new Zend_Search_Lucene_Search_QueryParserContext($this->_encoding, $this->_context->getField());
    }

    /**
     * End subquery
     */
    public function subqueryEnd()
    {
        if (count($this->_contextStack) == 0) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Syntax Error: mismatched parentheses, every opening must have closing. Char position ' . $this->_currentToken->position . '.' );
        }

        $query          = $this->_context->getQuery();
        $this->_context = array_pop($this->_contextStack);

        $this->_context->addEntry(new Zend_Search_Lucene_Search_QueryEntry_Subquery($query));
    }

    /**
     * Process logical operator
     */
    public function logicalOperator()
    {
        $this->_context->addLogicalOperator($this->_currentToken->type);
    }

    /**
     * Process first range query term (opened interval)
     */
    public function openedRQFirstTerm()
    {
        $this->_rqFirstTerm = $this->_currentToken->text;
    }

    /**
     * Process last range query term (opened interval)
     *
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function openedRQLastTerm()
    {
        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_rqFirstTerm, $this->_encoding);
        if (count($tokens) > 1) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Range query boundary terms must be non-multiple word terms');
        } else if (count($tokens) == 1) {
            $from = new Zend_Search_Lucene_Index_Term(reset($tokens)->getTermText(), $this->_context->getField());
        } else {
            $from = null;
        }

        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_currentToken->text, $this->_encoding);
        if (count($tokens) > 1) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Range query boundary terms must be non-multiple word terms');
        } else if (count($tokens) == 1) {
            $to = new Zend_Search_Lucene_Index_Term(reset($tokens)->getTermText(), $this->_context->getField());
        } else {
            $to = null;
        }

        if ($from === null  &&  $to === null) {
            throw new Zend_Search_Lucene_Search_QueryParserException('At least one range query boundary term must be non-empty term');
        }

        $rangeQuery = new Zend_Search_Lucene_Search_Query_Range($from, $to, false);
        $entry      = new Zend_Search_Lucene_Search_QueryEntry_Subquery($rangeQuery);
        $this->_context->addEntry($entry);
    }

    /**
     * Process first range query term (closed interval)
     */
    public function closedRQFirstTerm()
    {
        $this->_rqFirstTerm = $this->_currentToken->text;
    }

    /**
     * Process last range query term (closed interval)
     *
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function closedRQLastTerm()
    {
        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_rqFirstTerm, $this->_encoding);
        if (count($tokens) > 1) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Range query boundary terms must be non-multiple word terms');
        } else if (count($tokens) == 1) {
            $from = new Zend_Search_Lucene_Index_Term(reset($tokens)->getTermText(), $this->_context->getField());
        } else {
            $from = null;
        }

        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_currentToken->text, $this->_encoding);
        if (count($tokens) > 1) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Range query boundary terms must be non-multiple word terms');
        } else if (count($tokens) == 1) {
            $to = new Zend_Search_Lucene_Index_Term(reset($tokens)->getTermText(), $this->_context->getField());
        } else {
            $to = null;
        }

        if ($from === null  &&  $to === null) {
            throw new Zend_Search_Lucene_Search_QueryParserException('At least one range query boundary term must be non-empty term');
        }

        $rangeQuery = new Zend_Search_Lucene_Search_Query_Range($from, $to, true);
        $entry      = new Zend_Search_Lucene_Search_QueryEntry_Subquery($rangeQuery);
        $this->_context->addEntry($entry);
    }
}

PKpG[���Y��-Search/Lucene/Search/QueryParserException.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Search_Lucene base exception
 */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 *
 * Special exception type, which may be used to intercept wrong user input
 */
class Zend_Search_Lucene_Search_QueryParserException extends Zend_Search_Lucene_Exception
{}

PKpG[/��qbqb#Search/Lucene/Search/QueryLexer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_FSM */
require_once 'Zend/Search/Lucene/FSM.php';

/** Zend_Search_Lucene_Search_QueryParser */
require_once 'Zend/Search/Lucene/Search/QueryToken.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryLexer extends Zend_Search_Lucene_FSM
{
    /** State Machine states */
    const ST_WHITE_SPACE     = 0;
    const ST_SYNT_LEXEME     = 1;
    const ST_LEXEME          = 2;
    const ST_QUOTED_LEXEME   = 3;
    const ST_ESCAPED_CHAR    = 4;
    const ST_ESCAPED_QCHAR   = 5;
    const ST_LEXEME_MODIFIER = 6;
    const ST_NUMBER          = 7;
    const ST_MANTISSA        = 8;
    const ST_ERROR           = 9;

    /** Input symbols */
    const IN_WHITE_SPACE     = 0;
    const IN_SYNT_CHAR       = 1;
    const IN_LEXEME_MODIFIER = 2;
    const IN_ESCAPE_CHAR     = 3;
    const IN_QUOTE           = 4;
    const IN_DECIMAL_POINT   = 5;
    const IN_ASCII_DIGIT     = 6;
    const IN_CHAR            = 7;
    const IN_MUTABLE_CHAR    = 8;

    const QUERY_WHITE_SPACE_CHARS      = " \n\r\t";
    const QUERY_SYNT_CHARS             = ':()[]{}!|&';
    const QUERY_MUTABLE_CHARS          = '+-';
    const QUERY_DOUBLECHARLEXEME_CHARS = '|&';
    const QUERY_LEXEMEMODIFIER_CHARS   = '~^';
    const QUERY_ASCIIDIGITS_CHARS      = '0123456789';

    /**
     * List of recognized lexemes
     *
     * @var array
     */
    private $_lexemes;

    /**
     * Query string (array of single- or non single-byte characters)
     *
     * @var array
     */
    private $_queryString;

    /**
     * Current position within a query string
     * Used to create appropriate error messages
     *
     * @var integer
     */
    private $_queryStringPosition;

    /**
     * Recognized part of current lexeme
     *
     * @var string
     */
    private $_currentLexeme;

    public function __construct()
    {
        parent::__construct( array(self::ST_WHITE_SPACE,
                                   self::ST_SYNT_LEXEME,
                                   self::ST_LEXEME,
                                   self::ST_QUOTED_LEXEME,
                                   self::ST_ESCAPED_CHAR,
                                   self::ST_ESCAPED_QCHAR,
                                   self::ST_LEXEME_MODIFIER,
                                   self::ST_NUMBER,
                                   self::ST_MANTISSA,
                                   self::ST_ERROR),
                             array(self::IN_WHITE_SPACE,
                                   self::IN_SYNT_CHAR,
                                   self::IN_MUTABLE_CHAR,
                                   self::IN_LEXEME_MODIFIER,
                                   self::IN_ESCAPE_CHAR,
                                   self::IN_QUOTE,
                                   self::IN_DECIMAL_POINT,
                                   self::IN_ASCII_DIGIT,
                                   self::IN_CHAR));


        $lexemeModifierErrorAction    = new Zend_Search_Lucene_FSMAction($this, 'lexModifierErrException');
        $quoteWithinLexemeErrorAction = new Zend_Search_Lucene_FSMAction($this, 'quoteWithinLexemeErrException');
        $wrongNumberErrorAction       = new Zend_Search_Lucene_FSMAction($this, 'wrongNumberErrException');



        $this->addRules(array( array(self::ST_WHITE_SPACE,   self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_WHITE_SPACE,   self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_WHITE_SPACE,   self::IN_MUTABLE_CHAR,    self::ST_SYNT_LEXEME),
                               array(self::ST_WHITE_SPACE,   self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),
                               array(self::ST_WHITE_SPACE,   self::IN_ESCAPE_CHAR,     self::ST_ESCAPED_CHAR),
                               array(self::ST_WHITE_SPACE,   self::IN_QUOTE,           self::ST_QUOTED_LEXEME),
                               array(self::ST_WHITE_SPACE,   self::IN_DECIMAL_POINT,   self::ST_LEXEME),
                               array(self::ST_WHITE_SPACE,   self::IN_ASCII_DIGIT,     self::ST_LEXEME),
                               array(self::ST_WHITE_SPACE,   self::IN_CHAR,            self::ST_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_SYNT_LEXEME,   self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_SYNT_LEXEME,   self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_SYNT_LEXEME,   self::IN_MUTABLE_CHAR,    self::ST_SYNT_LEXEME),
                               array(self::ST_SYNT_LEXEME,   self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),
                               array(self::ST_SYNT_LEXEME,   self::IN_ESCAPE_CHAR,     self::ST_ESCAPED_CHAR),
                               array(self::ST_SYNT_LEXEME,   self::IN_QUOTE,           self::ST_QUOTED_LEXEME),
                               array(self::ST_SYNT_LEXEME,   self::IN_DECIMAL_POINT,   self::ST_LEXEME),
                               array(self::ST_SYNT_LEXEME,   self::IN_ASCII_DIGIT,     self::ST_LEXEME),
                               array(self::ST_SYNT_LEXEME,   self::IN_CHAR,            self::ST_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_LEXEME,        self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_LEXEME,        self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_LEXEME,        self::IN_MUTABLE_CHAR,    self::ST_LEXEME),
                               array(self::ST_LEXEME,        self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),
                               array(self::ST_LEXEME,        self::IN_ESCAPE_CHAR,     self::ST_ESCAPED_CHAR),

                               // IN_QUOTE     not allowed
                               array(self::ST_LEXEME,        self::IN_QUOTE,           self::ST_ERROR, $quoteWithinLexemeErrorAction),

                               array(self::ST_LEXEME,        self::IN_DECIMAL_POINT,   self::ST_LEXEME),
                               array(self::ST_LEXEME,        self::IN_ASCII_DIGIT,     self::ST_LEXEME),
                               array(self::ST_LEXEME,        self::IN_CHAR,            self::ST_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_QUOTED_LEXEME, self::IN_WHITE_SPACE,     self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_SYNT_CHAR,       self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_MUTABLE_CHAR,    self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_LEXEME_MODIFIER, self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_ESCAPE_CHAR,     self::ST_ESCAPED_QCHAR),
                               array(self::ST_QUOTED_LEXEME, self::IN_QUOTE,           self::ST_WHITE_SPACE),
                               array(self::ST_QUOTED_LEXEME, self::IN_DECIMAL_POINT,   self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_ASCII_DIGIT,     self::ST_QUOTED_LEXEME),
                               array(self::ST_QUOTED_LEXEME, self::IN_CHAR,            self::ST_QUOTED_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_ESCAPED_CHAR,  self::IN_WHITE_SPACE,     self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_SYNT_CHAR,       self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_MUTABLE_CHAR,    self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_LEXEME_MODIFIER, self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_ESCAPE_CHAR,     self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_QUOTE,           self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_DECIMAL_POINT,   self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_ASCII_DIGIT,     self::ST_LEXEME),
                               array(self::ST_ESCAPED_CHAR,  self::IN_CHAR,            self::ST_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_ESCAPED_QCHAR, self::IN_WHITE_SPACE,     self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_SYNT_CHAR,       self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_MUTABLE_CHAR,    self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_LEXEME_MODIFIER, self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_ESCAPE_CHAR,     self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_QUOTE,           self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_DECIMAL_POINT,   self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_ASCII_DIGIT,     self::ST_QUOTED_LEXEME),
                               array(self::ST_ESCAPED_QCHAR, self::IN_CHAR,            self::ST_QUOTED_LEXEME)
                             ));
        $this->addRules(array( array(self::ST_LEXEME_MODIFIER, self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_LEXEME_MODIFIER, self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_LEXEME_MODIFIER, self::IN_MUTABLE_CHAR,    self::ST_SYNT_LEXEME),
                               array(self::ST_LEXEME_MODIFIER, self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),

                               // IN_ESCAPE_CHAR       not allowed
                               array(self::ST_LEXEME_MODIFIER, self::IN_ESCAPE_CHAR,     self::ST_ERROR, $lexemeModifierErrorAction),

                               // IN_QUOTE             not allowed
                               array(self::ST_LEXEME_MODIFIER, self::IN_QUOTE,           self::ST_ERROR, $lexemeModifierErrorAction),


                               array(self::ST_LEXEME_MODIFIER, self::IN_DECIMAL_POINT,   self::ST_MANTISSA),
                               array(self::ST_LEXEME_MODIFIER, self::IN_ASCII_DIGIT,     self::ST_NUMBER),

                               // IN_CHAR              not allowed
                               array(self::ST_LEXEME_MODIFIER, self::IN_CHAR,            self::ST_ERROR, $lexemeModifierErrorAction),
                             ));
        $this->addRules(array( array(self::ST_NUMBER, self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_NUMBER, self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_NUMBER, self::IN_MUTABLE_CHAR,    self::ST_SYNT_LEXEME),
                               array(self::ST_NUMBER, self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),

                               // IN_ESCAPE_CHAR       not allowed
                               array(self::ST_NUMBER, self::IN_ESCAPE_CHAR,     self::ST_ERROR, $wrongNumberErrorAction),

                               // IN_QUOTE             not allowed
                               array(self::ST_NUMBER, self::IN_QUOTE,           self::ST_ERROR, $wrongNumberErrorAction),

                               array(self::ST_NUMBER, self::IN_DECIMAL_POINT,   self::ST_MANTISSA),
                               array(self::ST_NUMBER, self::IN_ASCII_DIGIT,     self::ST_NUMBER),

                               // IN_CHAR              not allowed
                               array(self::ST_NUMBER, self::IN_CHAR,            self::ST_ERROR, $wrongNumberErrorAction),
                             ));
        $this->addRules(array( array(self::ST_MANTISSA, self::IN_WHITE_SPACE,     self::ST_WHITE_SPACE),
                               array(self::ST_MANTISSA, self::IN_SYNT_CHAR,       self::ST_SYNT_LEXEME),
                               array(self::ST_MANTISSA, self::IN_MUTABLE_CHAR,    self::ST_SYNT_LEXEME),
                               array(self::ST_MANTISSA, self::IN_LEXEME_MODIFIER, self::ST_LEXEME_MODIFIER),

                               // IN_ESCAPE_CHAR       not allowed
                               array(self::ST_MANTISSA, self::IN_ESCAPE_CHAR,     self::ST_ERROR, $wrongNumberErrorAction),

                               // IN_QUOTE             not allowed
                               array(self::ST_MANTISSA, self::IN_QUOTE,           self::ST_ERROR, $wrongNumberErrorAction),

                               // IN_DECIMAL_POINT     not allowed
                               array(self::ST_MANTISSA, self::IN_DECIMAL_POINT,   self::ST_ERROR, $wrongNumberErrorAction),

                               array(self::ST_MANTISSA, self::IN_ASCII_DIGIT,     self::ST_MANTISSA),

                               // IN_CHAR              not allowed
                               array(self::ST_MANTISSA, self::IN_CHAR,            self::ST_ERROR, $wrongNumberErrorAction),
                             ));


        /** Actions */
        $syntaxLexemeAction    = new Zend_Search_Lucene_FSMAction($this, 'addQuerySyntaxLexeme');
        $lexemeModifierAction  = new Zend_Search_Lucene_FSMAction($this, 'addLexemeModifier');
        $addLexemeAction       = new Zend_Search_Lucene_FSMAction($this, 'addLexeme');
        $addQuotedLexemeAction = new Zend_Search_Lucene_FSMAction($this, 'addQuotedLexeme');
        $addNumberLexemeAction = new Zend_Search_Lucene_FSMAction($this, 'addNumberLexeme');
        $addLexemeCharAction   = new Zend_Search_Lucene_FSMAction($this, 'addLexemeChar');


        /** Syntax lexeme */
        $this->addEntryAction(self::ST_SYNT_LEXEME,  $syntaxLexemeAction);
        // Two lexemes in succession
        $this->addTransitionAction(self::ST_SYNT_LEXEME, self::ST_SYNT_LEXEME, $syntaxLexemeAction);


        /** Lexeme */
        $this->addEntryAction(self::ST_LEXEME,                       $addLexemeCharAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_LEXEME, $addLexemeCharAction);
        // ST_ESCAPED_CHAR => ST_LEXEME transition is covered by ST_LEXEME entry action

        $this->addTransitionAction(self::ST_LEXEME, self::ST_WHITE_SPACE,     $addLexemeAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_SYNT_LEXEME,     $addLexemeAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_QUOTED_LEXEME,   $addLexemeAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_LEXEME_MODIFIER, $addLexemeAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_NUMBER,          $addLexemeAction);
        $this->addTransitionAction(self::ST_LEXEME, self::ST_MANTISSA,        $addLexemeAction);


        /** Quoted lexeme */
        // We don't need entry action (skeep quote)
        $this->addTransitionAction(self::ST_QUOTED_LEXEME, self::ST_QUOTED_LEXEME, $addLexemeCharAction);
        $this->addTransitionAction(self::ST_ESCAPED_QCHAR, self::ST_QUOTED_LEXEME, $addLexemeCharAction);
        // Closing quote changes state to the ST_WHITE_SPACE   other states are not used
        $this->addTransitionAction(self::ST_QUOTED_LEXEME, self::ST_WHITE_SPACE,   $addQuotedLexemeAction);


        /** Lexeme modifier */
        $this->addEntryAction(self::ST_LEXEME_MODIFIER, $lexemeModifierAction);


        /** Number */
        $this->addEntryAction(self::ST_NUMBER,                           $addLexemeCharAction);
        $this->addEntryAction(self::ST_MANTISSA,                         $addLexemeCharAction);
        $this->addTransitionAction(self::ST_NUMBER,   self::ST_NUMBER,   $addLexemeCharAction);
        // ST_NUMBER => ST_MANTISSA transition is covered by ST_MANTISSA entry action
        $this->addTransitionAction(self::ST_MANTISSA, self::ST_MANTISSA, $addLexemeCharAction);

        $this->addTransitionAction(self::ST_NUMBER,   self::ST_WHITE_SPACE,     $addNumberLexemeAction);
        $this->addTransitionAction(self::ST_NUMBER,   self::ST_SYNT_LEXEME,     $addNumberLexemeAction);
        $this->addTransitionAction(self::ST_NUMBER,   self::ST_LEXEME_MODIFIER, $addNumberLexemeAction);
        $this->addTransitionAction(self::ST_MANTISSA, self::ST_WHITE_SPACE,     $addNumberLexemeAction);
        $this->addTransitionAction(self::ST_MANTISSA, self::ST_SYNT_LEXEME,     $addNumberLexemeAction);
        $this->addTransitionAction(self::ST_MANTISSA, self::ST_LEXEME_MODIFIER, $addNumberLexemeAction);
    }




    /**
     * Translate input char to an input symbol of state machine
     *
     * @param string $char
     * @return integer
     */
    private function _translateInput($char)
    {
        if        (strpos(self::QUERY_WHITE_SPACE_CHARS,    $char) !== false) { return self::IN_WHITE_SPACE;
        } else if (strpos(self::QUERY_SYNT_CHARS,           $char) !== false) { return self::IN_SYNT_CHAR;
        } else if (strpos(self::QUERY_MUTABLE_CHARS,        $char) !== false) { return self::IN_MUTABLE_CHAR;
        } else if (strpos(self::QUERY_LEXEMEMODIFIER_CHARS, $char) !== false) { return self::IN_LEXEME_MODIFIER;
        } else if (strpos(self::QUERY_ASCIIDIGITS_CHARS,    $char) !== false) { return self::IN_ASCII_DIGIT;
        } else if ($char === '"' )                                            { return self::IN_QUOTE;
        } else if ($char === '.' )                                            { return self::IN_DECIMAL_POINT;
        } else if ($char === '\\')                                            { return self::IN_ESCAPE_CHAR;
        } else                                                                { return self::IN_CHAR;
        }
    }


    /**
     * This method is used to tokenize query string into lexemes
     *
     * @param string $inputString
     * @param string $encoding
     * @return array
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function tokenize($inputString, $encoding)
    {
        $this->reset();

        $this->_lexemes     = array();
        $this->_queryString = array();

        if (PHP_OS == 'AIX' && $encoding == '') {
            $encoding = 'ISO8859-1';
        }
        $strLength = iconv_strlen($inputString, $encoding);

        // Workaround for iconv_substr bug
        $inputString .= ' ';

        for ($count = 0; $count < $strLength; $count++) {
            $this->_queryString[$count] = iconv_substr($inputString, $count, 1, $encoding);
        }

        for ($this->_queryStringPosition = 0;
             $this->_queryStringPosition < count($this->_queryString);
             $this->_queryStringPosition++) {
            $this->process($this->_translateInput($this->_queryString[$this->_queryStringPosition]));
        }

        $this->process(self::IN_WHITE_SPACE);

        if ($this->getState() != self::ST_WHITE_SPACE) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Unexpected end of query');
        }

        $this->_queryString = null;

        return $this->_lexemes;
    }



    /*********************************************************************
     * Actions implementation
     *
     * Actions affect on recognized lexemes list
     *********************************************************************/

    /**
     * Add query syntax lexeme
     *
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function addQuerySyntaxLexeme()
    {
        $lexeme = $this->_queryString[$this->_queryStringPosition];

        // Process two char lexemes
        if (strpos(self::QUERY_DOUBLECHARLEXEME_CHARS, $lexeme) !== false) {
            // increase current position in a query string
            $this->_queryStringPosition++;

            // check,
            if ($this->_queryStringPosition == count($this->_queryString)  ||
                $this->_queryString[$this->_queryStringPosition] != $lexeme) {
                    throw new Zend_Search_Lucene_Search_QueryParserException('Two chars lexeme expected. ' . $this->_positionMsg());
                }

            // duplicate character
            $lexeme .= $lexeme;
        }

        $token = new Zend_Search_Lucene_Search_QueryToken(
                                Zend_Search_Lucene_Search_QueryToken::TC_SYNTAX_ELEMENT,
                                $lexeme,
                                $this->_queryStringPosition);

        // Skip this lexeme if it's a field indicator ':' and treat previous as 'field' instead of 'word'
        if ($token->type == Zend_Search_Lucene_Search_QueryToken::TT_FIELD_INDICATOR) {
            $token = array_pop($this->_lexemes);
            if ($token === null  ||  $token->type != Zend_Search_Lucene_Search_QueryToken::TT_WORD) {
                throw new Zend_Search_Lucene_Search_QueryParserException('Field mark \':\' must follow field name. ' . $this->_positionMsg());
            }

            $token->type = Zend_Search_Lucene_Search_QueryToken::TT_FIELD;
        }

        $this->_lexemes[] = $token;
    }

    /**
     * Add lexeme modifier
     */
    public function addLexemeModifier()
    {
        $this->_lexemes[] = new Zend_Search_Lucene_Search_QueryToken(
                                    Zend_Search_Lucene_Search_QueryToken::TC_SYNTAX_ELEMENT,
                                    $this->_queryString[$this->_queryStringPosition],
                                    $this->_queryStringPosition);
    }


    /**
     * Add lexeme
     */
    public function addLexeme()
    {
        $this->_lexemes[] = new Zend_Search_Lucene_Search_QueryToken(
                                    Zend_Search_Lucene_Search_QueryToken::TC_WORD,
                                    $this->_currentLexeme,
                                    $this->_queryStringPosition - 1);

        $this->_currentLexeme = '';
    }

    /**
     * Add quoted lexeme
     */
    public function addQuotedLexeme()
    {
        $this->_lexemes[] = new Zend_Search_Lucene_Search_QueryToken(
                                    Zend_Search_Lucene_Search_QueryToken::TC_PHRASE,
                                    $this->_currentLexeme,
                                    $this->_queryStringPosition);

        $this->_currentLexeme = '';
    }

    /**
     * Add number lexeme
     */
    public function addNumberLexeme()
    {
        $this->_lexemes[] = new Zend_Search_Lucene_Search_QueryToken(
                                    Zend_Search_Lucene_Search_QueryToken::TC_NUMBER,
                                    $this->_currentLexeme,
                                    $this->_queryStringPosition - 1);
        $this->_currentLexeme = '';
    }

    /**
     * Extend lexeme by one char
     */
    public function addLexemeChar()
    {
        $this->_currentLexeme .= $this->_queryString[$this->_queryStringPosition];
    }


    /**
     * Position message
     *
     * @return string
     */
    private function _positionMsg()
    {
        return 'Position is ' . $this->_queryStringPosition . '.';
    }


    /*********************************************************************
     * Syntax errors actions
     *********************************************************************/
    public function lexModifierErrException()
    {
        throw new Zend_Search_Lucene_Search_QueryParserException('Lexeme modifier character can be followed only by number, white space or query syntax element. ' . $this->_positionMsg());
    }
    public function quoteWithinLexemeErrException()
    {
        throw new Zend_Search_Lucene_Search_QueryParserException('Quote within lexeme must be escaped by \'\\\' char. ' . $this->_positionMsg());
    }
    public function wrongNumberErrException()
    {
        throw new Zend_Search_Lucene_Search_QueryParserException('Wrong number syntax.' . $this->_positionMsg());
    }
}

PKpG[Md�])	)	Search/Lucene/Search/Weight.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Calculate query weights and build query scorers.
 *
 * A Weight is constructed by a query Query->createWeight().
 * The sumOfSquaredWeights() method is then called on the top-level
 * query to compute the query normalization factor Similarity->queryNorm(float).
 * This factor is then passed to normalize(float).  At this point the weighting
 * is complete.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Search_Weight
{
    /**
     * Normalization factor.
     * This value is stored only for query expanation purpose and not used in any other place
     *
     * @var float
     */
    protected $_queryNorm;

    /**
     * Weight value
     *
     * Weight value may be initialized in sumOfSquaredWeights() or normalize()
     * because they both are invoked either in Query::_initWeight (for top-level query) or
     * in corresponding methods of parent query's weights
     *
     * @var float
     */
    protected $_value;


    /**
     * The weight for this query.
     *
     * @return float
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    abstract public function sumOfSquaredWeights();

    /**
     * Assigns the query normalization factor to this.
     *
     * @param $norm
     */
    abstract public function normalize($norm);
}

PKpG[G�(<�`�`#Search/Lucene/Search/Similarity.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Similarity_Default */
require_once 'Zend/Search/Lucene/Search/Similarity/Default.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Search_Similarity
{
    /**
     * The Similarity implementation used by default.
     *
     * @var Zend_Search_Lucene_Search_Similarity
     */
    private static $_defaultImpl;

    /**
     * Cache of decoded bytes.
     * Array of floats
     *
     * @var array
     */
    private static $_normTable = array( 0   => 0.0,
                                        1   => 5.820766E-10,
                                        2   => 6.9849193E-10,
                                        3   => 8.1490725E-10,
                                        4   => 9.313226E-10,
                                        5   => 1.1641532E-9,
                                        6   => 1.3969839E-9,
                                        7   => 1.6298145E-9,
                                        8   => 1.8626451E-9,
                                        9   => 2.3283064E-9,
                                        10  => 2.7939677E-9,
                                        11  => 3.259629E-9,
                                        12  => 3.7252903E-9,
                                        13  => 4.656613E-9,
                                        14  => 5.5879354E-9,
                                        15  => 6.519258E-9,
                                        16  => 7.4505806E-9,
                                        17  => 9.313226E-9,
                                        18  => 1.1175871E-8,
                                        19  => 1.3038516E-8,
                                        20  => 1.4901161E-8,
                                        21  => 1.8626451E-8,
                                        22  => 2.2351742E-8,
                                        23  => 2.6077032E-8,
                                        24  => 2.9802322E-8,
                                        25  => 3.7252903E-8,
                                        26  => 4.4703484E-8,
                                        27  => 5.2154064E-8,
                                        28  => 5.9604645E-8,
                                        29  => 7.4505806E-8,
                                        30  => 8.940697E-8,
                                        31  => 1.0430813E-7,
                                        32  => 1.1920929E-7,
                                        33  => 1.4901161E-7,
                                        34  => 1.7881393E-7,
                                        35  => 2.0861626E-7,
                                        36  => 2.3841858E-7,
                                        37  => 2.9802322E-7,
                                        38  => 3.5762787E-7,
                                        39  => 4.172325E-7,
                                        40  => 4.7683716E-7,
                                        41  => 5.9604645E-7,
                                        42  => 7.1525574E-7,
                                        43  => 8.34465E-7,
                                        44  => 9.536743E-7,
                                        45  => 1.1920929E-6,
                                        46  => 1.4305115E-6,
                                        47  => 1.66893E-6,
                                        48  => 1.9073486E-6,
                                        49  => 2.3841858E-6,
                                        50  => 2.861023E-6,
                                        51  => 3.33786E-6,
                                        52  => 3.8146973E-6,
                                        53  => 4.7683716E-6,
                                        54  => 5.722046E-6,
                                        55  => 6.67572E-6,
                                        56  => 7.6293945E-6,
                                        57  => 9.536743E-6,
                                        58  => 1.1444092E-5,
                                        59  => 1.335144E-5,
                                        60  => 1.5258789E-5,
                                        61  => 1.9073486E-5,
                                        62  => 2.2888184E-5,
                                        63  => 2.670288E-5,
                                        64  => 3.0517578E-5,
                                        65  => 3.8146973E-5,
                                        66  => 4.5776367E-5,
                                        67  => 5.340576E-5,
                                        68  => 6.1035156E-5,
                                        69  => 7.6293945E-5,
                                        70  => 9.1552734E-5,
                                        71  => 1.0681152E-4,
                                        72  => 1.2207031E-4,
                                        73  => 1.5258789E-4,
                                        74  => 1.8310547E-4,
                                        75  => 2.1362305E-4,
                                        76  => 2.4414062E-4,
                                        77  => 3.0517578E-4,
                                        78  => 3.6621094E-4,
                                        79  => 4.272461E-4,
                                        80  => 4.8828125E-4,
                                        81  => 6.1035156E-4,
                                        82  => 7.324219E-4,
                                        83  => 8.544922E-4,
                                        84  => 9.765625E-4,
                                        85  => 0.0012207031,
                                        86  => 0.0014648438,
                                        87  => 0.0017089844,
                                        88  => 0.001953125,
                                        89  => 0.0024414062,
                                        90  => 0.0029296875,
                                        91  => 0.0034179688,
                                        92  => 0.00390625,
                                        93  => 0.0048828125,
                                        94  => 0.005859375,
                                        95  => 0.0068359375,
                                        96  => 0.0078125,
                                        97  => 0.009765625,
                                        98  => 0.01171875,
                                        99  => 0.013671875,
                                        100 => 0.015625,
                                        101 => 0.01953125,
                                        102 => 0.0234375,
                                        103 => 0.02734375,
                                        104 => 0.03125,
                                        105 => 0.0390625,
                                        106 => 0.046875,
                                        107 => 0.0546875,
                                        108 => 0.0625,
                                        109 => 0.078125,
                                        110 => 0.09375,
                                        111 => 0.109375,
                                        112 => 0.125,
                                        113 => 0.15625,
                                        114 => 0.1875,
                                        115 => 0.21875,
                                        116 => 0.25,
                                        117 => 0.3125,
                                        118 => 0.375,
                                        119 => 0.4375,
                                        120 => 0.5,
                                        121 => 0.625,
                                        122 => 0.75,
                                        123 => 0.875,
                                        124 => 1.0,
                                        125 => 1.25,
                                        126 => 1.5,
                                        127 => 1.75,
                                        128 => 2.0,
                                        129 => 2.5,
                                        130 => 3.0,
                                        131 => 3.5,
                                        132 => 4.0,
                                        133 => 5.0,
                                        134 => 6.0,
                                        135 => 7.0,
                                        136 => 8.0,
                                        137 => 10.0,
                                        138 => 12.0,
                                        139 => 14.0,
                                        140 => 16.0,
                                        141 => 20.0,
                                        142 => 24.0,
                                        143 => 28.0,
                                        144 => 32.0,
                                        145 => 40.0,
                                        146 => 48.0,
                                        147 => 56.0,
                                        148 => 64.0,
                                        149 => 80.0,
                                        150 => 96.0,
                                        151 => 112.0,
                                        152 => 128.0,
                                        153 => 160.0,
                                        154 => 192.0,
                                        155 => 224.0,
                                        156 => 256.0,
                                        157 => 320.0,
                                        158 => 384.0,
                                        159 => 448.0,
                                        160 => 512.0,
                                        161 => 640.0,
                                        162 => 768.0,
                                        163 => 896.0,
                                        164 => 1024.0,
                                        165 => 1280.0,
                                        166 => 1536.0,
                                        167 => 1792.0,
                                        168 => 2048.0,
                                        169 => 2560.0,
                                        170 => 3072.0,
                                        171 => 3584.0,
                                        172 => 4096.0,
                                        173 => 5120.0,
                                        174 => 6144.0,
                                        175 => 7168.0,
                                        176 => 8192.0,
                                        177 => 10240.0,
                                        178 => 12288.0,
                                        179 => 14336.0,
                                        180 => 16384.0,
                                        181 => 20480.0,
                                        182 => 24576.0,
                                        183 => 28672.0,
                                        184 => 32768.0,
                                        185 => 40960.0,
                                        186 => 49152.0,
                                        187 => 57344.0,
                                        188 => 65536.0,
                                        189 => 81920.0,
                                        190 => 98304.0,
                                        191 => 114688.0,
                                        192 => 131072.0,
                                        193 => 163840.0,
                                        194 => 196608.0,
                                        195 => 229376.0,
                                        196 => 262144.0,
                                        197 => 327680.0,
                                        198 => 393216.0,
                                        199 => 458752.0,
                                        200 => 524288.0,
                                        201 => 655360.0,
                                        202 => 786432.0,
                                        203 => 917504.0,
                                        204 => 1048576.0,
                                        205 => 1310720.0,
                                        206 => 1572864.0,
                                        207 => 1835008.0,
                                        208 => 2097152.0,
                                        209 => 2621440.0,
                                        210 => 3145728.0,
                                        211 => 3670016.0,
                                        212 => 4194304.0,
                                        213 => 5242880.0,
                                        214 => 6291456.0,
                                        215 => 7340032.0,
                                        216 => 8388608.0,
                                        217 => 1.048576E7,
                                        218 => 1.2582912E7,
                                        219 => 1.4680064E7,
                                        220 => 1.6777216E7,
                                        221 => 2.097152E7,
                                        222 => 2.5165824E7,
                                        223 => 2.9360128E7,
                                        224 => 3.3554432E7,
                                        225 => 4.194304E7,
                                        226 => 5.0331648E7,
                                        227 => 5.8720256E7,
                                        228 => 6.7108864E7,
                                        229 => 8.388608E7,
                                        230 => 1.00663296E8,
                                        231 => 1.17440512E8,
                                        232 => 1.34217728E8,
                                        233 => 1.6777216E8,
                                        234 => 2.01326592E8,
                                        235 => 2.34881024E8,
                                        236 => 2.68435456E8,
                                        237 => 3.3554432E8,
                                        238 => 4.02653184E8,
                                        239 => 4.69762048E8,
                                        240 => 5.3687091E8,
                                        241 => 6.7108864E8,
                                        242 => 8.0530637E8,
                                        243 => 9.395241E8,
                                        244 => 1.07374182E9,
                                        245 => 1.34217728E9,
                                        246 => 1.61061274E9,
                                        247 => 1.87904819E9,
                                        248 => 2.14748365E9,
                                        249 => 2.68435456E9,
                                        250 => 3.22122547E9,
                                        251 => 3.75809638E9,
                                        252 => 4.2949673E9,
                                        253 => 5.3687091E9,
                                        254 => 6.4424509E9,
                                        255 => 7.5161928E9 );


    /**
     * Set the default Similarity implementation used by indexing and search
     * code.
     *
     * @param Zend_Search_Lucene_Search_Similarity $similarity
     */
    public static function setDefault(Zend_Search_Lucene_Search_Similarity $similarity)
    {
        self::$_defaultImpl = $similarity;
    }


    /**
     * Return the default Similarity implementation used by indexing and search
     * code.
     *
     * @return Zend_Search_Lucene_Search_Similarity
     */
    public static function getDefault()
    {
        if (!self::$_defaultImpl instanceof Zend_Search_Lucene_Search_Similarity) {
            self::$_defaultImpl = new Zend_Search_Lucene_Search_Similarity_Default();
        }

        return self::$_defaultImpl;
    }


    /**
     * Computes the normalization value for a field given the total number of
     * terms contained in a field.  These values, together with field boosts, are
     * stored in an index and multipled into scores for hits on each field by the
     * search code.
     *
     * Matches in longer fields are less precise, so implemenations of this
     * method usually return smaller values when 'numTokens' is large,
     * and larger values when 'numTokens' is small.
     *
     * That these values are computed under
     * IndexWriter::addDocument(Document) and stored then using
     * encodeNorm(float).  Thus they have limited precision, and documents
     * must be re-indexed if this method is altered.
     *
     * fieldName - name of field
     * numTokens - the total number of tokens contained in fields named
     *             'fieldName' of 'doc'.
     * Returns a normalization factor for hits on this field of this document
     *
     * @param string $fieldName
     * @param integer $numTokens
     * @return float
     */
    abstract public function lengthNorm($fieldName, $numTokens);

    /**
     * Computes the normalization value for a query given the sum of the squared
     * weights of each of the query terms.  This value is then multipled into the
     * weight of each query term.
     *
     * This does not affect ranking, but rather just attempts to make scores
     * from different queries comparable.
     *
     * sumOfSquaredWeights - the sum of the squares of query term weights
     * Returns a normalization factor for query weights
     *
     * @param float $sumOfSquaredWeights
     * @return float
     */
    abstract public function queryNorm($sumOfSquaredWeights);


    /**
     *  Decodes a normalization factor stored in an index.
     *
     * @param integer $byte
     * @return float
     */
    public static function decodeNorm($byte)
    {
        return self::$_normTable[$byte & 0xFF];
    }


    /**
     * Encodes a normalization factor for storage in an index.
     *
     * The encoding uses a five-bit exponent and three-bit mantissa, thus
     * representing values from around 7x10^9 to 2x10^-9 with about one
     * significant decimal digit of accuracy.  Zero is also represented.
     * Negative numbers are rounded up to zero.  Values too large to represent
     * are rounded down to the largest representable value.  Positive values too
     * small to represent are rounded up to the smallest positive representable
     * value.
     *
     * @param float $f
     * @return integer
     */
    static function encodeNorm($f)
    {
      return self::_floatToByte($f);
    }

    /**
     * Float to byte conversion
     *
     * @param integer $b
     * @return float
     */
    private static function _floatToByte($f)
    {
        // round negatives up to zero
        if ($f <= 0.0) {
            return 0;
        }

        // search for appropriate value
        $lowIndex = 0;
        $highIndex = 255;
        while ($highIndex >= $lowIndex) {
            // $mid = ($highIndex - $lowIndex)/2;
            $mid = ($highIndex + $lowIndex) >> 1;
            $delta = $f - self::$_normTable[$mid];

            if ($delta < 0) {
                $highIndex = $mid-1;
            } elseif ($delta > 0) {
                $lowIndex  = $mid+1;
            } else {
                return $mid; // We got it!
            }
        }

        // round to closest value
        if ($highIndex != 255 &&
            $f - self::$_normTable[$highIndex] > self::$_normTable[$highIndex+1] - $f ) {
            return $highIndex + 1;
        } else {
            return $highIndex;
        }
    }


    /**
     * Computes a score factor based on a term or phrase's frequency in a
     * document.  This value is multiplied by the idf(Term, Searcher)
     * factor for each term in the query and these products are then summed to
     * form the initial score for a document.
     *
     * Terms and phrases repeated in a document indicate the topic of the
     * document, so implementations of this method usually return larger values
     * when 'freq' is large, and smaller values when 'freq'
     * is small.
     *
     * freq - the frequency of a term within a document
     * Returns a score factor based on a term's within-document frequency
     *
     * @param float $freq
     * @return float
     */
    abstract public function tf($freq);

    /**
     * Computes the amount of a sloppy phrase match, based on an edit distance.
     * This value is summed for each sloppy phrase match in a document to form
     * the frequency that is passed to tf(float).
     *
     * A phrase match with a small edit distance to a document passage more
     * closely matches the document, so implementations of this method usually
     * return larger values when the edit distance is small and smaller values
     * when it is large.
     *
     * distance - the edit distance of this sloppy phrase match
     * Returns the frequency increment for this match
     *
     * @param integer $distance
     * @return float
     */
    abstract public function sloppyFreq($distance);


    /**
     * Computes a score factor for a simple term or a phrase.
     *
     * The default implementation is:
     *   return idfFreq(searcher.docFreq(term), searcher.maxDoc());
     *
     * input - the term in question or array of terms
     * reader - reader the document collection being searched
     * Returns a score factor for the term
     *
     * @param mixed $input
     * @param Zend_Search_Lucene_Interface $reader
     * @return a score factor for the term
     */
    public function idf($input, Zend_Search_Lucene_Interface $reader)
    {
        if (!is_array($input)) {
            return $this->idfFreq($reader->docFreq($input), $reader->count());
        } else {
            $idf = 0.0;
            foreach ($input as $term) {
                $idf += $this->idfFreq($reader->docFreq($term), $reader->count());
            }
            return $idf;
        }
    }

    /**
     * Computes a score factor based on a term's document frequency (the number
     * of documents which contain the term).  This value is multiplied by the
     * tf(int) factor for each term in the query and these products are
     * then summed to form the initial score for a document.
     *
     * Terms that occur in fewer documents are better indicators of topic, so
     * implemenations of this method usually return larger values for rare terms,
     * and smaller values for common terms.
     *
     * docFreq - the number of documents which contain the term
     * numDocs - the total number of documents in the collection
     * Returns a score factor based on the term's document frequency
     *
     * @param integer $docFreq
     * @param integer $numDocs
     * @return float
     */
    abstract public function idfFreq($docFreq, $numDocs);

    /**
     * Computes a score factor based on the fraction of all query terms that a
     * document contains.  This value is multiplied into scores.
     *
     * The presence of a large portion of the query terms indicates a better
     * match with the query, so implemenations of this method usually return
     * larger values when the ratio between these parameters is large and smaller
     * values when the ratio between them is small.
     *
     * overlap - the number of query terms matched in the document
     * maxOverlap - the total number of terms in the query
     * Returns a score factor based on term overlap with the query
     *
     * @param integer $overlap
     * @param integer $maxOverlap
     * @return float
     */
    abstract public function coord($overlap, $maxOverlap);
}

PKpG[�`�iQ	Q	,Search/Lucene/Search/QueryEntry/Subquery.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryEntry */
require_once 'Zend/Search/Lucene/Search/QueryEntry.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryEntry_Subquery extends Zend_Search_Lucene_Search_QueryEntry
{
    /**
     * Query
     *
     * @var Zend_Search_Lucene_Search_Query
     */
    private $_query;

    /**
     * Object constractor
     *
     * @param Zend_Search_Lucene_Search_Query $query
     */
    public function __construct(Zend_Search_Lucene_Search_Query $query)
    {
        $this->_query = $query;
    }

    /**
     * Process modifier ('~')
     *
     * @param mixed $parameter
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function processFuzzyProximityModifier($parameter = null)
    {
        throw new Zend_Search_Lucene_Search_QueryParserException('\'~\' sign must follow term or phrase');
    }


    /**
     * Transform entry to a subquery
     *
     * @param string $encoding
     * @return Zend_Search_Lucene_Search_Query
     */
    public function getQuery($encoding)
    {
        $this->_query->setBoost($this->_boost);

        return $this->_query;
    }
}
PKpG[%�Z��(Search/Lucene/Search/QueryEntry/Term.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryEntry */
require_once 'Zend/Search/Lucene/Search/QueryEntry.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';

/** Zend_Search_Lucene_Analysis_Analyzer */
require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';



/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryEntry_Term extends Zend_Search_Lucene_Search_QueryEntry
{
    /**
     * Term value
     *
     * @var string
     */
    private $_term;

    /**
     * Field
     *
     * @var string|null
     */
    private $_field;


    /**
     * Fuzzy search query
     *
     * @var boolean
     */
    private $_fuzzyQuery = false;

    /**
     * Similarity
     *
     * @var float
     */
    private $_similarity = 1.;


    /**
     * Object constractor
     *
     * @param string $term
     * @param string $field
     */
    public function __construct($term, $field)
    {
        $this->_term  = $term;
        $this->_field = $field;
    }

    /**
     * Process modifier ('~')
     *
     * @param mixed $parameter
     */
    public function processFuzzyProximityModifier($parameter = null)
    {
        $this->_fuzzyQuery = true;

        if ($parameter !== null) {
            $this->_similarity = $parameter;
        } else {
            $this->_similarity = Zend_Search_Lucene_Search_Query_Fuzzy::DEFAULT_MIN_SIMILARITY;
        }
    }

    /**
     * Transform entry to a subquery
     *
     * @param string $encoding
     * @return Zend_Search_Lucene_Search_Query
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function getQuery($encoding)
    {
        if (strpos($this->_term, '?') !== false || strpos($this->_term, '*') !== false) {
            if ($this->_fuzzyQuery) {
                throw new Zend_Search_Lucene_Search_QueryParserException('Fuzzy search is not supported for terms with wildcards.');
            }

            $pattern = '';

            $subPatterns = explode('*', $this->_term);

            $astericFirstPass = true;
            foreach ($subPatterns as $subPattern) {
                if (!$astericFirstPass) {
                    $pattern .= '*';
                } else {
                    $astericFirstPass = false;
                }

                $subPatternsL2 = explode('?', $subPattern);

                $qMarkFirstPass = true;
                foreach ($subPatternsL2 as $subPatternL2) {
                    if (!$qMarkFirstPass) {
                        $pattern .= '?';
                    } else {
                        $qMarkFirstPass = false;
                    }

                    $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($subPatternL2, $encoding);
                    if (count($tokens) > 1) {
                        throw new Zend_Search_Lucene_Search_QueryParserException('Wildcard search is supported only for non-multiple word terms');
                    }

                    foreach ($tokens as $token) {
                        $pattern .= $token->getTermText();
                    }
                }
            }

            $term  = new Zend_Search_Lucene_Index_Term($pattern, $this->_field);
            $query = new Zend_Search_Lucene_Search_Query_Wildcard($term);
            $query->setBoost($this->_boost);

            return $query;
        }

        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_term, $encoding);

        if (count($tokens) == 0) {
            return new Zend_Search_Lucene_Search_Query_Insignificant();
        }

        if (count($tokens) == 1  && !$this->_fuzzyQuery) {
            $term  = new Zend_Search_Lucene_Index_Term($tokens[0]->getTermText(), $this->_field);
            $query = new Zend_Search_Lucene_Search_Query_Term($term);
            $query->setBoost($this->_boost);

            return $query;
        }

        if (count($tokens) == 1  && $this->_fuzzyQuery) {
            $term  = new Zend_Search_Lucene_Index_Term($tokens[0]->getTermText(), $this->_field);
            $query = new Zend_Search_Lucene_Search_Query_Fuzzy($term, $this->_similarity);
            $query->setBoost($this->_boost);

            return $query;
        }

        if ($this->_fuzzyQuery) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Fuzzy search is supported only for non-multiple word terms');
        }
        
        //It's not empty or one term query
        $query = new Zend_Search_Lucene_Search_Query_MultiTerm();

        /**
         * @todo Process $token->getPositionIncrement() to support stemming, synonyms and other
         * analizer design features
         */
        foreach ($tokens as $token) {
            $term = new Zend_Search_Lucene_Index_Term($token->getTermText(), $this->_field);
            $query->addTerm($term, true); // all subterms are required
        }

        $query->setBoost($this->_boost);

        return $query;
    }
}
PKpG[~���*Search/Lucene/Search/QueryEntry/Phrase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryEntry */
require_once 'Zend/Search/Lucene/Search/QueryEntry.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';

/** Zend_Search_Lucene_Analysis_Analyzer */
require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';



/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryEntry_Phrase extends Zend_Search_Lucene_Search_QueryEntry
{
    /**
     * Phrase value
     *
     * @var string
     */
    private $_phrase;

    /**
     * Field
     *
     * @var string|null
     */
    private $_field;


    /**
     * Proximity phrase query
     *
     * @var boolean
     */
    private $_proximityQuery = false;

    /**
     * Words distance, used for proximiti queries
     *
     * @var integer
     */
    private $_wordsDistance = 0;


    /**
     * Object constractor
     *
     * @param string $phrase
     * @param string $field
     */
    public function __construct($phrase, $field)
    {
        $this->_phrase = $phrase;
        $this->_field  = $field;
    }

    /**
     * Process modifier ('~')
     *
     * @param mixed $parameter
     */
    public function processFuzzyProximityModifier($parameter = null)
    {
        $this->_proximityQuery = true;

        if ($parameter !== null) {
            $this->_wordsDistance = $parameter;
        }
    }

    /**
     * Transform entry to a subquery
     *
     * @param string $encoding
     * @return Zend_Search_Lucene_Search_Query
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function getQuery($encoding)
    {
        if (strpos($this->_phrase, '?') !== false || strpos($this->_phrase, '*') !== false) {
            throw new Zend_Search_Lucene_Search_QueryParserException('Wildcards are only allowed in a single terms.');
        }

        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($this->_phrase, $encoding);

        if (count($tokens) == 0) {
            return new Zend_Search_Lucene_Search_Query_Insignificant();
        }

        if (count($tokens) == 1) {
            $term  = new Zend_Search_Lucene_Index_Term($tokens[0]->getTermText(), $this->_field);
            $query = new Zend_Search_Lucene_Search_Query_Term($term);
            $query->setBoost($this->_boost);

            return $query;
        }

        //It's not empty or one term query
        $position = -1;
        $query = new Zend_Search_Lucene_Search_Query_Phrase();
        foreach ($tokens as $token) {
            $position += $token->getPositionIncrement();
            $term = new Zend_Search_Lucene_Index_Term($token->getTermText(), $this->_field);
            $query->addTerm($term, $position);
        }

        if ($this->_proximityQuery) {
            $query->setSlop($this->_wordsDistance);
        }

        $query->setBoost($this->_boost);

        return $query;
    }
}
PKpG[
��2�2+Search/Lucene/Search/QueryParserContext.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Search_Lucene_FSM */
require_once 'Zend/Search/Lucene/FSM.php';


/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Search_QueryToken */
require_once 'Zend/Search/Lucene/Search/QueryToken.php';

/** Zend_Search_Lucene_Search_Query_Term */
require_once 'Zend/Search/Lucene/Search/Query/Term.php';

/** Zend_Search_Lucene_Search_Query_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php';

/** Zend_Search_Lucene_Search_Query_Boolean */
require_once 'Zend/Search/Lucene/Search/Query/Boolean.php';

/** Zend_Search_Lucene_Search_Query_Phrase */
require_once 'Zend/Search/Lucene/Search/Query/Phrase.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Search_QueryParserException */
require_once 'Zend/Search/Lucene/Search/QueryParserException.php';

/** Zend_Search_Lucene_Search_BooleanExpressionRecognizer */
require_once 'Zend/Search/Lucene/Search/BooleanExpressionRecognizer.php';

/** Zend_Search_Lucene_Search_QueryEntry */
require_once 'Zend/Search/Lucene/Search/QueryEntry.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_QueryParserContext
{
    /**
     * Default field for the context.
     *
     * null means, that term should be searched through all fields
     * Zend_Search_Lucene_Search_Query::rewriteQuery($index) transletes such queries to several
     *
     * @var string|null
     */
    private $_defaultField;

    /**
     * Field specified for next entry
     *
     * @var string
     */
    private $_nextEntryField = null;

    /**
     * True means, that term is required.
     * False means, that term is prohibited.
     * null means, that term is neither prohibited, nor required
     *
     * @var boolean
     */
    private $_nextEntrySign = null;


    /**
     * Entries grouping mode
     */
    const GM_SIGNS   = 0;  // Signs mode: '+term1 term2 -term3 +(subquery1) -(subquery2)'
    const GM_BOOLEAN = 1;  // Boolean operators mode: 'term1 and term2  or  (subquery1) and not (subquery2)'

    /**
     * Grouping mode
     *
     * @var integer
     */
    private $_mode = null;

    /**
     * Entries signs.
     * Used in GM_SIGNS grouping mode
     *
     * @var arrays
     */
    private $_signs = array();

    /**
     * Query entries
     * Each entry is a Zend_Search_Lucene_Search_QueryEntry object or
     * boolean operator (Zend_Search_Lucene_Search_QueryToken class constant)
     *
     * @var array
     */
    private $_entries = array();

    /**
     * Query string encoding
     *
     * @var string
     */
    private $_encoding;


    /**
     * Context object constructor
     *
     * @param string $encoding
     * @param string|null $defaultField
     */
    public function __construct($encoding, $defaultField = null)
    {
        $this->_encoding     = $encoding;
        $this->_defaultField = $defaultField;
    }


    /**
     * Get context default field
     *
     * @return string|null
     */
    public function getField()
    {
        return ($this->_nextEntryField !== null)  ?  $this->_nextEntryField : $this->_defaultField;
    }

    /**
     * Set field for next entry
     *
     * @param string $field
     */
    public function setNextEntryField($field)
    {
        $this->_nextEntryField = $field;
    }


    /**
     * Set sign for next entry
     *
     * @param integer $sign
     * @throws Zend_Search_Lucene_Exception
     */
    public function setNextEntrySign($sign)
    {
        if ($this->_mode === self::GM_BOOLEAN) {
            throw new Zend_Search_Lucene_Search_QueryParserException('It\'s not allowed to mix boolean and signs styles in the same subquery.');
        }

        $this->_mode = self::GM_SIGNS;

        if ($sign == Zend_Search_Lucene_Search_QueryToken::TT_REQUIRED) {
            $this->_nextEntrySign = true;
        } else if ($sign == Zend_Search_Lucene_Search_QueryToken::TT_PROHIBITED) {
            $this->_nextEntrySign = false;
        } else {
            throw new Zend_Search_Lucene_Exception('Unrecognized sign type.');
        }
    }


    /**
     * Add entry to a query
     *
     * @param Zend_Search_Lucene_Search_QueryEntry $entry
     */
    public function addEntry(Zend_Search_Lucene_Search_QueryEntry $entry)
    {
        if ($this->_mode !== self::GM_BOOLEAN) {
            $this->_signs[] = $this->_nextEntrySign;
        }

        $this->_entries[] = $entry;

        $this->_nextEntryField = null;
        $this->_nextEntrySign  = null;
    }


    /**
     * Process fuzzy search or proximity search modifier
     *
     * @throws Zend_Search_Lucene_Search_QueryParserException
     */
    public function processFuzzyProximityModifier($parameter = null)
    {
        // Check, that modifier has came just after word or phrase
        if ($this->_nextEntryField !== null  ||  $this->_nextEntrySign !== null) {
            throw new Zend_Search_Lucene_Search_QueryParserException('\'~\' modifier must follow word or phrase.');
        }

        $lastEntry = array_pop($this->_entries);

        if (!$lastEntry instanceof Zend_Search_Lucene_Search_QueryEntry) {
            // there are no entries or last entry is boolean operator
            throw new Zend_Search_Lucene_Search_QueryParserException('\'~\' modifier must follow word or phrase.');
        }

        $lastEntry->processFuzzyProximityModifier($parameter);

        $this->_entries[] = $lastEntry;
    }

    /**
     * Set boost factor to the entry
     *
     * @param float $boostFactor
     */
    public function boost($boostFactor)
    {
        // Check, that modifier has came just after word or phrase
        if ($this->_nextEntryField !== null  ||  $this->_nextEntrySign !== null) {
            throw new Zend_Search_Lucene_Search_QueryParserException('\'^\' modifier must follow word, phrase or subquery.');
        }

        $lastEntry = array_pop($this->_entries);

        if (!$lastEntry instanceof Zend_Search_Lucene_Search_QueryEntry) {
            // there are no entries or last entry is boolean operator
            throw new Zend_Search_Lucene_Search_QueryParserException('\'^\' modifier must follow word, phrase or subquery.');
        }

        $lastEntry->boost($boostFactor);

        $this->_entries[] = $lastEntry;
    }

    /**
     * Process logical operator
     *
     * @param integer $operator
     */
    public function addLogicalOperator($operator)
    {
        if ($this->_mode === self::GM_SIGNS) {
            throw new Zend_Search_Lucene_Search_QueryParserException('It\'s not allowed to mix boolean and signs styles in the same subquery.');
        }

        $this->_mode = self::GM_BOOLEAN;

        $this->_entries[] = $operator;
    }


    /**
     * Generate 'signs style' query from the context
     * '+term1 term2 -term3 +(<subquery1>) ...'
     *
     * @return Zend_Search_Lucene_Search_Query
     */
    public function _signStyleExpressionQuery()
    {
        $query = new Zend_Search_Lucene_Search_Query_Boolean();

        if (Zend_Search_Lucene_Search_QueryParser::getDefaultOperator() == Zend_Search_Lucene_Search_QueryParser::B_AND) {
            $defaultSign = true; // required
        } else {
            // Zend_Search_Lucene_Search_QueryParser::B_OR
            $defaultSign = null; // optional
        }

        foreach ($this->_entries as $entryId => $entry) {
            $sign = ($this->_signs[$entryId] !== null) ?  $this->_signs[$entryId] : $defaultSign;
            $query->addSubquery($entry->getQuery($this->_encoding), $sign);
        }

        return $query;
    }


    /**
     * Generate 'boolean style' query from the context
     * 'term1 and term2   or   term3 and (<subquery1>) and not (<subquery2>)'
     *
     * @return Zend_Search_Lucene_Search_Query
     * @throws Zend_Search_Lucene
     */
    private function _booleanExpressionQuery()
    {
        /**
         * We treat each level of an expression as a boolean expression in
         * a Disjunctive Normal Form
         *
         * AND operator has higher precedence than OR
         *
         * Thus logical query is a disjunction of one or more conjunctions of
         * one or more query entries
         */

        $expressionRecognizer = new Zend_Search_Lucene_Search_BooleanExpressionRecognizer();

        try {
            foreach ($this->_entries as $entry) {
                if ($entry instanceof Zend_Search_Lucene_Search_QueryEntry) {
                    $expressionRecognizer->processLiteral($entry);
                } else {
                    switch ($entry) {
                        case Zend_Search_Lucene_Search_QueryToken::TT_AND_LEXEME:
                            $expressionRecognizer->processOperator(Zend_Search_Lucene_Search_BooleanExpressionRecognizer::IN_AND_OPERATOR);
                            break;

                        case Zend_Search_Lucene_Search_QueryToken::TT_OR_LEXEME:
                            $expressionRecognizer->processOperator(Zend_Search_Lucene_Search_BooleanExpressionRecognizer::IN_OR_OPERATOR);
                            break;

                        case Zend_Search_Lucene_Search_QueryToken::TT_NOT_LEXEME:
                            $expressionRecognizer->processOperator(Zend_Search_Lucene_Search_BooleanExpressionRecognizer::IN_NOT_OPERATOR);
                            break;

                        default:
                            throw new Zend_Search_Lucene('Boolean expression error. Unknown operator type.');
                    }
                }
            }

            $conjuctions = $expressionRecognizer->finishExpression();
        } catch (Zend_Search_Exception $e) {
            // throw new Zend_Search_Lucene_Search_QueryParserException('Boolean expression error. Error message: \'' .
            //                                                          $e->getMessage() . '\'.' );
            // It's query syntax error message and it should be user friendly. So FSM message is omitted
            throw new Zend_Search_Lucene_Search_QueryParserException('Boolean expression error.');
        }

        // Remove 'only negative' conjunctions
        foreach ($conjuctions as $conjuctionId => $conjuction) {
            $nonNegativeEntryFound = false;

            foreach ($conjuction as $conjuctionEntry) {
                if ($conjuctionEntry[1]) {
                    $nonNegativeEntryFound = true;
                    break;
                }
            }

            if (!$nonNegativeEntryFound) {
                unset($conjuctions[$conjuctionId]);
            }
        }


        $subqueries = array();
        foreach ($conjuctions as  $conjuction) {
            // Check, if it's a one term conjuction
            if (count($conjuction) == 1) {
                $subqueries[] = $conjuction[0][0]->getQuery($this->_encoding);
            } else {
                $subquery = new Zend_Search_Lucene_Search_Query_Boolean();

                foreach ($conjuction as $conjuctionEntry) {
                    $subquery->addSubquery($conjuctionEntry[0]->getQuery($this->_encoding), $conjuctionEntry[1]);
                }

                $subqueries[] = $subquery;
            }
        }

        if (count($subqueries) == 0) {
            return new Zend_Search_Lucene_Search_Query_Insignificant();
        }

        if (count($subqueries) == 1) {
            return $subqueries[0];
        }


        $query = new Zend_Search_Lucene_Search_Query_Boolean();

        foreach ($subqueries as $subquery) {
            // Non-requirered entry/subquery
            $query->addSubquery($subquery);
        }

        return $query;
    }

    /**
     * Generate query from current context
     *
     * @return Zend_Search_Lucene_Search_Query
     */
    public function getQuery()
    {
        if ($this->_mode === self::GM_BOOLEAN) {
            return $this->_booleanExpressionQuery();
        } else {
            return $this->_signStyleExpressionQuery();
        }
    }
}
PKpG[n�@
�K�K(Search/Lucene/Search/Query/MultiTerm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Weight_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Weight/MultiTerm.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_MultiTerm extends Zend_Search_Lucene_Search_Query
{

    /**
     * Terms to find.
     * Array of Zend_Search_Lucene_Index_Term
     *
     * @var array
     */
    private $_terms = array();

    /**
     * Term signs.
     * If true then term is required.
     * If false then term is prohibited.
     * If null then term is neither prohibited, nor required
     *
     * If array is null then all terms are required
     *
     * @var array
     */
    private $_signs;

    /**
     * Result vector.
     *
     * @var array
     */
    private $_resVector = null;

    /**
     * Terms positions vectors.
     * Array of Arrays:
     * term1Id => (docId => freq, ...)
     * term2Id => (docId => freq, ...)
     *
     * @var array
     */
    private $_termsFreqs = array();


    /**
     * A score factor based on the fraction of all query terms
     * that a document contains.
     * float for conjunction queries
     * array of float for non conjunction queries
     *
     * @var mixed
     */
    private $_coord = null;


    /**
     * Terms weights
     * array of Zend_Search_Lucene_Search_Weight
     *
     * @var array
     */
    private $_weights = array();


    /**
     * Class constructor.  Create a new multi-term query object.
     *
     * if $signs array is omitted then all terms are required
     * it differs from addTerm() behavior, but should never be used
     *
     * @param array $terms    Array of Zend_Search_Lucene_Index_Term objects
     * @param array $signs    Array of signs.  Sign is boolean|null.
     */
    public function __construct($terms = null, $signs = null)
    {
        if (is_array($terms)) {
            $this->_terms = $terms;

            $this->_signs = null;
            // Check if all terms are required
            if (is_array($signs)) {
                foreach ($signs as $sign ) {
                    if ($sign !== true) {
                        $this->_signs = $signs;
                        break;
                    }
                }
            }
        }
    }


    /**
     * Add a $term (Zend_Search_Lucene_Index_Term) to this query.
     *
     * The sign is specified as:
     *     TRUE  - term is required
     *     FALSE - term is prohibited
     *     NULL  - term is neither prohibited, nor required
     *
     * @param  Zend_Search_Lucene_Index_Term $term
     * @param  boolean|null $sign
     * @return void
     */
    public function addTerm(Zend_Search_Lucene_Index_Term $term, $sign = null) {
        if ($sign !== true || $this->_signs !== null) {       // Skip, if all terms are required
            if ($this->_signs === null) {                     // Check, If all previous terms are required
                $this->_signs = array();
                foreach ($this->_terms as $prevTerm) {
                    $this->_signs[] = true;
                }
            }
            $this->_signs[] = $sign;
        }

        $this->_terms[] = $term;
    }


    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        if (count($this->_terms) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }

        // Check, that all fields are qualified
        $allQualified = true;
        foreach ($this->_terms as $term) {
            if ($term->field === null) {
                $allQualified = false;
                break;
            }
        }

        if ($allQualified) {
            return $this;
        } else {
            /** transform multiterm query to boolean and apply rewrite() method to subqueries. */
            $query = new Zend_Search_Lucene_Search_Query_Boolean();
            $query->setBoost($this->getBoost());

            foreach ($this->_terms as $termId => $term) {
                $subquery = new Zend_Search_Lucene_Search_Query_Term($term);

                $query->addSubquery($subquery->rewrite($index),
                                    ($this->_signs === null)?  true : $this->_signs[$termId]);
            }

            return $query;
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        $terms = $this->_terms;
        $signs = $this->_signs;

        foreach ($terms as $id => $term) {
            if (!$index->hasTerm($term)) {
                if ($signs === null  ||  $signs[$id] === true) {
                    // Term is required
                    return new Zend_Search_Lucene_Search_Query_Empty();
                } else {
                    // Term is optional or prohibited
                    // Remove it from terms and signs list
                    unset($terms[$id]);
                    unset($signs[$id]);
                }
            }
        }

        // Check if all presented terms are prohibited
        $allProhibited = true;
        if ($signs === null) {
            $allProhibited = false;
        } else {
            foreach ($signs as $sign) {
                if ($sign !== false) {
                    $allProhibited = false;
                    break;
                }
            }
        }
        if ($allProhibited) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }

        /**
         * @todo make an optimization for repeated terms
         * (they may have different signs)
         */

        if (count($terms) == 1) {
            // It's already checked, that it's not a prohibited term

            // It's one term query with one required or optional element
            $optimizedQuery = new Zend_Search_Lucene_Search_Query_Term(reset($terms));
            $optimizedQuery->setBoost($this->getBoost());

            return $optimizedQuery;
        }

        if (count($terms) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }

        $optimizedQuery = new Zend_Search_Lucene_Search_Query_MultiTerm($terms, $signs);
        $optimizedQuery->setBoost($this->getBoost());
        return $optimizedQuery;
    }


    /**
     * Returns query term
     *
     * @return array
     */
    public function getTerms()
    {
        return $this->_terms;
    }


    /**
     * Return terms signs
     *
     * @return array
     */
    public function getSigns()
    {
        return $this->_signs;
    }


    /**
     * Set weight for specified term
     *
     * @param integer $num
     * @param Zend_Search_Lucene_Search_Weight_Term $weight
     */
    public function setWeight($num, $weight)
    {
        $this->_weights[$num] = $weight;
    }


    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        $this->_weight = new Zend_Search_Lucene_Search_Weight_MultiTerm($this, $reader);
        return $this->_weight;
    }


    /**
     * Calculate result vector for Conjunction query
     * (like '+something +another')
     *
     * @param Zend_Search_Lucene_Interface $reader
     */
    private function _calculateConjunctionResult(Zend_Search_Lucene_Interface $reader)
    {
        $this->_resVector = null;

        if (count($this->_terms) == 0) {
            $this->_resVector = array();
        }

        // Order terms by selectivity
        $docFreqs = array();
        $ids      = array();
        foreach ($this->_terms as $id => $term) {
            $docFreqs[] = $reader->docFreq($term);
            $ids[]      = $id; // Used to keep original order for terms with the same selectivity and omit terms comparison
        }
        array_multisort($docFreqs, SORT_ASC, SORT_NUMERIC,
                        $ids,      SORT_ASC, SORT_NUMERIC,
                        $this->_terms);

        $docsFilter = new Zend_Search_Lucene_Index_DocsFilter();
        foreach ($this->_terms as $termId => $term) {
            $termDocs = $reader->termDocs($term, $docsFilter);
        }
        // Treat last retrieved docs vector as a result set
        // (filter collects data for other terms)
        $this->_resVector = array_flip($termDocs);

        foreach ($this->_terms as $termId => $term) {
            $this->_termsFreqs[$termId] = $reader->termFreqs($term, $docsFilter);
        }

        // ksort($this->_resVector, SORT_NUMERIC);
        // Docs are returned ordered. Used algorithms doesn't change elements order.
    }


    /**
     * Calculate result vector for non Conjunction query
     * (like '+something -another')
     *
     * @param Zend_Search_Lucene_Interface $reader
     */
    private function _calculateNonConjunctionResult(Zend_Search_Lucene_Interface $reader)
    {
        $requiredVectors      = array();
        $requiredVectorsSizes = array();
        $requiredVectorsIds   = array(); // is used to prevent arrays comparison

        $optional   = array();
        $prohibited = array();

        foreach ($this->_terms as $termId => $term) {
            $termDocs = array_flip($reader->termDocs($term));

            if ($this->_signs[$termId] === true) {
                // required
                $requiredVectors[]      = $termDocs;
                $requiredVectorsSizes[] = count($termDocs);
                $requiredVectorsIds[]   = $termId;
            } elseif ($this->_signs[$termId] === false) {
                // prohibited
                // array union
                $prohibited += $termDocs;
            } else {
                // neither required, nor prohibited
                // array union
                $optional += $termDocs;
            }

            $this->_termsFreqs[$termId] = $reader->termFreqs($term);
        }

        // sort resvectors in order of subquery cardinality increasing
        array_multisort($requiredVectorsSizes, SORT_ASC, SORT_NUMERIC,
                        $requiredVectorsIds,   SORT_ASC, SORT_NUMERIC,
                        $requiredVectors);

        $required = null;
        foreach ($requiredVectors as $nextResVector) {
            if($required === null) {
                $required = $nextResVector;
            } else {
                //$required = array_intersect_key($required, $nextResVector);

                /**
                 * This code is used as workaround for array_intersect_key() slowness problem.
                 */
                $updatedVector = array();
                foreach ($required as $id => $value) {
                    if (isset($nextResVector[$id])) {
                        $updatedVector[$id] = $value;
                    }
                }
                $required = $updatedVector;
            }

            if (count($required) == 0) {
                // Empty result set, we don't need to check other terms
                break;
            }
        }

        if ($required !== null) {
            $this->_resVector = $required;
        } else {
            $this->_resVector = $optional;
        }

        if (count($prohibited) != 0) {
            // $this->_resVector = array_diff_key($this->_resVector, $prohibited);

            /**
             * This code is used as workaround for array_diff_key() slowness problem.
             */
            if (count($this->_resVector) < count($prohibited)) {
                $updatedVector = $this->_resVector;
                foreach ($this->_resVector as $id => $value) {
                    if (isset($prohibited[$id])) {
                        unset($updatedVector[$id]);
                    }
                }
                $this->_resVector = $updatedVector;
            } else {
                $updatedVector = $this->_resVector;
                foreach ($prohibited as $id => $value) {
                    unset($updatedVector[$id]);
                }
                $this->_resVector = $updatedVector;
            }
        }

        ksort($this->_resVector, SORT_NUMERIC);
    }


    /**
     * Score calculator for conjunction queries (all terms are required)
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function _conjunctionScore($docId, Zend_Search_Lucene_Interface $reader)
    {
        if ($this->_coord === null) {
            $this->_coord = $reader->getSimilarity()->coord(count($this->_terms),
                                                            count($this->_terms) );
        }

        $score = 0.0;

        foreach ($this->_terms as $termId => $term) {
            /**
             * We don't need to check that term freq is not 0
             * Score calculation is performed only for matched docs
             */
            $score += $reader->getSimilarity()->tf($this->_termsFreqs[$termId][$docId]) *
                      $this->_weights[$termId]->getValue() *
                      $reader->norm($docId, $term->field);
        }

        return $score * $this->_coord * $this->getBoost();
    }


    /**
     * Score calculator for non conjunction queries (not all terms are required)
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function _nonConjunctionScore($docId, $reader)
    {
        if ($this->_coord === null) {
            $this->_coord = array();

            $maxCoord = 0;
            foreach ($this->_signs as $sign) {
                if ($sign !== false /* not prohibited */) {
                    $maxCoord++;
                }
            }

            for ($count = 0; $count <= $maxCoord; $count++) {
                $this->_coord[$count] = $reader->getSimilarity()->coord($count, $maxCoord);
            }
        }

        $score = 0.0;
        $matchedTerms = 0;
        foreach ($this->_terms as $termId=>$term) {
            // Check if term is
            if ($this->_signs[$termId] !== false &&        // not prohibited
                isset($this->_termsFreqs[$termId][$docId]) // matched
               ) {
                $matchedTerms++;

                /**
                 * We don't need to check that term freq is not 0
                 * Score calculation is performed only for matched docs
                 */
                $score +=
                      $reader->getSimilarity()->tf($this->_termsFreqs[$termId][$docId]) *
                      $this->_weights[$termId]->getValue() *
                      $reader->norm($docId, $term->field);
            }
        }

        return $score * $this->_coord[$matchedTerms] * $this->getBoost();
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        if ($this->_signs === null) {
            $this->_calculateConjunctionResult($reader);
        } else {
            $this->_calculateNonConjunctionResult($reader);
        }

        // Initialize weight if it's not done yet
        $this->_initWeight($reader);
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return $this->_resVector;
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        if (isset($this->_resVector[$docId])) {
            if ($this->_signs === null) {
                return $this->_conjunctionScore($docId, $reader);
            } else {
                return $this->_nonConjunctionScore($docId, $reader);
            }
        } else {
            return 0;
        }
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        if ($this->_signs === null) {
            return $this->_terms;
        }

        $terms = array();

        foreach ($this->_signs as $id => $sign) {
            if ($sign !== false) {
                $terms[] = $this->_terms[$id];
            }
        }

        return $terms;
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $words = array();

        if ($this->_signs === null) {
            foreach ($this->_terms as $term) {
                $words[] = $term->text;
            }
        } else {
            foreach ($this->_signs as $id => $sign) {
                if ($sign !== false) {
                    $words[] = $this->_terms[$id]->text;
                }
            }
        }

        $doc->highlight($words, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping

        $query = '';

        foreach ($this->_terms as $id => $term) {
            if ($id != 0) {
                $query .= ' ';
            }

            if ($this->_signs === null || $this->_signs[$id] === true) {
                $query .= '+';
            } else if ($this->_signs[$id] === false) {
                $query .= '-';
            }

            if ($term->field !== null) {
                $query .= $term->field . ':';
            }
            $query .= $term->text;
        }

        if ($this->getBoost() != 1) {
            $query = '(' . $query . ')^' . $this->getBoost();
        }

        return $query;
    }
}

PKpG[�ͯ9�C�C%Search/Lucene/Search/Query/Phrase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Search_Lucene_Search_Query
 */
require_once 'Zend/Search/Lucene/Search/Query.php';

/**
 * Zend_Search_Lucene_Search_Weight_MultiTerm
 */
require_once 'Zend/Search/Lucene/Search/Weight/Phrase.php';


/**
 * A Query that matches documents containing a particular sequence of terms.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Phrase extends Zend_Search_Lucene_Search_Query
{
    /**
     * Terms to find.
     * Array of Zend_Search_Lucene_Index_Term objects.
     *
     * @var array
     */
    private $_terms;

    /**
     * Term positions (relative positions of terms within the phrase).
     * Array of integers
     *
     * @var array
     */
    private $_offsets;

    /**
     * Sets the number of other words permitted between words in query phrase.
     * If zero, then this is an exact phrase search.  For larger values this works
     * like a WITHIN or NEAR operator.
     *
     * The slop is in fact an edit-distance, where the units correspond to
     * moves of terms in the query phrase out of position.  For example, to switch
     * the order of two words requires two moves (the first move places the words
     * atop one another), so to permit re-orderings of phrases, the slop must be
     * at least two.
     * More exact matches are scored higher than sloppier matches, thus search
     * results are sorted by exactness.
     *
     * The slop is zero by default, requiring exact matches.
     *
     * @var integer
     */
    private $_slop;

    /**
     * Result vector.
     *
     * @var array
     */
    private $_resVector = null;

    /**
     * Terms positions vectors.
     * Array of Arrays:
     * term1Id => (docId => array( pos1, pos2, ... ), ...)
     * term2Id => (docId => array( pos1, pos2, ... ), ...)
     *
     * @var array
     */
    private $_termsPositions = array();

    /**
     * Class constructor.  Create a new prase query.
     *
     * @param string $field    Field to search.
     * @param array  $terms    Terms to search Array of strings.
     * @param array  $offsets  Relative term positions. Array of integers.
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct($terms = null, $offsets = null, $field = null)
    {
        $this->_slop = 0;

        if (is_array($terms)) {
            $this->_terms = array();
            foreach ($terms as $termId => $termText) {
                $this->_terms[$termId] = ($field !== null)? new Zend_Search_Lucene_Index_Term($termText, $field):
                                                            new Zend_Search_Lucene_Index_Term($termText);
            }
        } else if ($terms === null) {
            $this->_terms = array();
        } else {
            throw new Zend_Search_Lucene_Exception('terms argument must be array of strings or null');
        }

        if (is_array($offsets)) {
            if (count($this->_terms) != count($offsets)) {
                throw new Zend_Search_Lucene_Exception('terms and offsets arguments must have the same size.');
            }
            $this->_offsets = $offsets;
        } else if ($offsets === null) {
            $this->_offsets = array();
            foreach ($this->_terms as $termId => $term) {
                $position = count($this->_offsets);
                $this->_offsets[$termId] = $position;
            }
        } else {
            throw new Zend_Search_Lucene_Exception('offsets argument must be array of strings or null');
        }
    }

    /**
     * Set slop
     *
     * @param integer $slop
     */
    public function setSlop($slop)
    {
        $this->_slop = $slop;
    }


    /**
     * Get slop
     *
     * @return integer
     */
    public function getSlop()
    {
        return $this->_slop;
    }


    /**
     * Adds a term to the end of the query phrase.
     * The relative position of the term is specified explicitly or the one immediately
     * after the last term added.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param integer $position
     */
    public function addTerm(Zend_Search_Lucene_Index_Term $term, $position = null) {
        if ((count($this->_terms) != 0)&&(end($this->_terms)->field != $term->field)) {
            throw new Zend_Search_Lucene_Exception('All phrase terms must be in the same field: ' .
                                                   $term->field . ':' . $term->text);
        }

        $this->_terms[] = $term;
        if ($position !== null) {
            $this->_offsets[] = $position;
        } else if (count($this->_offsets) != 0) {
            $this->_offsets[] = end($this->_offsets) + 1;
        } else {
            $this->_offsets[] = 0;
        }
    }


    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        if (count($this->_terms) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        } else if ($this->_terms[0]->field !== null) {
            return $this;
        } else {
            $query = new Zend_Search_Lucene_Search_Query_Boolean();
            $query->setBoost($this->getBoost());

            foreach ($index->getFieldNames(true) as $fieldName) {
                $subquery = new Zend_Search_Lucene_Search_Query_Phrase();
                $subquery->setSlop($this->getSlop());

                foreach ($this->_terms as $termId => $term) {
                    $qualifiedTerm = new Zend_Search_Lucene_Index_Term($term->text, $fieldName);

                    $subquery->addTerm($qualifiedTerm, $this->_offsets[$termId]);
                }

                $query->addSubquery($subquery);
            }

            return $query;
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        // Check, that index contains all phrase terms
        foreach ($this->_terms as $term) {
            if (!$index->hasTerm($term)) {
                return new Zend_Search_Lucene_Search_Query_Empty();
            }
        }

        if (count($this->_terms) == 1) {
            // It's one term query
            $optimizedQuery = new Zend_Search_Lucene_Search_Query_Term(reset($this->_terms));
            $optimizedQuery->setBoost($this->getBoost());

            return $optimizedQuery;
        }

        if (count($this->_terms) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }


        return $this;
    }

    /**
     * Returns query term
     *
     * @return array
     */
    public function getTerms()
    {
        return $this->_terms;
    }


    /**
     * Set weight for specified term
     *
     * @param integer $num
     * @param Zend_Search_Lucene_Search_Weight_Term $weight
     */
    public function setWeight($num, $weight)
    {
        $this->_weights[$num] = $weight;
    }


    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        $this->_weight = new Zend_Search_Lucene_Search_Weight_Phrase($this, $reader);
        return $this->_weight;
    }


    /**
     * Score calculator for exact phrase queries (terms sequence is fixed)
     *
     * @param integer $docId
     * @return float
     */
    public function _exactPhraseFreq($docId)
    {
        $freq = 0;

        // Term Id with lowest cardinality
        $lowCardTermId = null;

        // Calculate $lowCardTermId
        foreach ($this->_terms as $termId => $term) {
            if ($lowCardTermId === null ||
                count($this->_termsPositions[$termId][$docId]) <
                count($this->_termsPositions[$lowCardTermId][$docId]) ) {
                    $lowCardTermId = $termId;
                }
        }

        // Walk through positions of the term with lowest cardinality
        foreach ($this->_termsPositions[$lowCardTermId][$docId] as $lowCardPos) {
            // We expect phrase to be found
            $freq++;

            // Walk through other terms
            foreach ($this->_terms as $termId => $term) {
                if ($termId != $lowCardTermId) {
                    $expectedPosition = $lowCardPos +
                                            ($this->_offsets[$termId] -
                                             $this->_offsets[$lowCardTermId]);

                    if (!in_array($expectedPosition, $this->_termsPositions[$termId][$docId])) {
                        $freq--;  // Phrase wasn't found.
                        break;
                    }
                }
            }
        }

        return $freq;
    }

    /**
     * Score calculator for sloppy phrase queries (terms sequence is fixed)
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function _sloppyPhraseFreq($docId, Zend_Search_Lucene_Interface $reader)
    {
        $freq = 0;

        $phraseQueue = array();
        $phraseQueue[0] = array(); // empty phrase
        $lastTerm = null;

        // Walk through the terms to create phrases.
        foreach ($this->_terms as $termId => $term) {
            $queueSize = count($phraseQueue);
            $firstPass = true;

            // Walk through the term positions.
            // Each term position produces a set of phrases.
            foreach ($this->_termsPositions[$termId][$docId] as $termPosition ) {
                if ($firstPass) {
                    for ($count = 0; $count < $queueSize; $count++) {
                        $phraseQueue[$count][$termId] = $termPosition;
                    }
                } else {
                    for ($count = 0; $count < $queueSize; $count++) {
                        if ($lastTerm !== null &&
                            abs( $termPosition - $phraseQueue[$count][$lastTerm] -
                                 ($this->_offsets[$termId] - $this->_offsets[$lastTerm])) > $this->_slop) {
                            continue;
                        }

                        $newPhraseId = count($phraseQueue);
                        $phraseQueue[$newPhraseId]          = $phraseQueue[$count];
                        $phraseQueue[$newPhraseId][$termId] = $termPosition;
                    }

                }

                $firstPass = false;
            }
            $lastTerm = $termId;
        }


        foreach ($phraseQueue as $phrasePos) {
            $minDistance = null;

            for ($shift = -$this->_slop; $shift <= $this->_slop; $shift++) {
                $distance = 0;
                $start = reset($phrasePos) - reset($this->_offsets) + $shift;

                foreach ($this->_terms as $termId => $term) {
                    $distance += abs($phrasePos[$termId] - $this->_offsets[$termId] - $start);

                    if($distance > $this->_slop) {
                        break;
                    }
                }

                if ($minDistance === null || $distance < $minDistance) {
                    $minDistance = $distance;
                }
            }

            if ($minDistance <= $this->_slop) {
                $freq += $reader->getSimilarity()->sloppyFreq($minDistance);
            }
        }

        return $freq;
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        $this->_resVector = null;

        if (count($this->_terms) == 0) {
            $this->_resVector = array();
        }

        $resVectors      = array();
        $resVectorsSizes = array();
        $resVectorsIds   = array(); // is used to prevent arrays comparison
        foreach ($this->_terms as $termId => $term) {
            $resVectors[]      = array_flip($reader->termDocs($term));
            $resVectorsSizes[] = count(end($resVectors));
            $resVectorsIds[]   = $termId;

            $this->_termsPositions[$termId] = $reader->termPositions($term);
        }
        // sort resvectors in order of subquery cardinality increasing
        array_multisort($resVectorsSizes, SORT_ASC, SORT_NUMERIC,
                        $resVectorsIds,   SORT_ASC, SORT_NUMERIC,
                        $resVectors);

        foreach ($resVectors as $nextResVector) {
            if($this->_resVector === null) {
                $this->_resVector = $nextResVector;
            } else {
                //$this->_resVector = array_intersect_key($this->_resVector, $nextResVector);

                /**
                 * This code is used as workaround for array_intersect_key() slowness problem.
                 */
                $updatedVector = array();
                foreach ($this->_resVector as $id => $value) {
                    if (isset($nextResVector[$id])) {
                        $updatedVector[$id] = $value;
                    }
                }
                $this->_resVector = $updatedVector;
            }

            if (count($this->_resVector) == 0) {
                // Empty result set, we don't need to check other terms
                break;
            }
        }

        // ksort($this->_resVector, SORT_NUMERIC);
        // Docs are returned ordered. Used algorithm doesn't change elements order.

        // Initialize weight if it's not done yet
        $this->_initWeight($reader);
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return $this->_resVector;
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        if (isset($this->_resVector[$docId])) {
            if ($this->_slop == 0) {
                $freq = $this->_exactPhraseFreq($docId);
            } else {
                $freq = $this->_sloppyPhraseFreq($docId, $reader);
            }

            if ($freq != 0) {
                $tf = $reader->getSimilarity()->tf($freq);
                $weight = $this->_weight->getValue();
                $norm = $reader->norm($docId, reset($this->_terms)->field);

                return $tf * $weight * $norm * $this->getBoost();
            }

            // Included in result, but culculated freq is zero
            return 0;
        } else {
            return 0;
        }
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        return $this->_terms;
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $words = array();
        foreach ($this->_terms as $term) {
            $words[] = $term->text;
        }

        $doc->highlight($words, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping

        $query = '';

        if (isset($this->_terms[0]) && $this->_terms[0]->field !== null) {
            $query .= $this->_terms[0]->field . ':';
        }

        $query .= '"';

        foreach ($this->_terms as $id => $term) {
            if ($id != 0) {
                $query .= ' ';
            }
            $query .= $term->text;
        }

        $query .= '"';

        if ($this->_slop != 0) {
            $query .= '~' . $this->_slop;
        }

        return $query;
    }
}

PKpG[���DN8N8$Search/Lucene/Search/Query/Fuzzy.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Query_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Fuzzy extends Zend_Search_Lucene_Search_Query
{
    /** Default minimum similarity */
    const DEFAULT_MIN_SIMILARITY = 0.5;

    /**
     * Maximum number of matched terms.
     * Apache Lucene defines this limitation as boolean query maximum number of clauses:
     * org.apache.lucene.search.BooleanQuery.getMaxClauseCount()
     */
    const MAX_CLAUSE_COUNT = 1024;

    /**
     * Array of precalculated max distances
     *
     * keys are integers representing a word size
     */
    private $_maxDistances = array();

    /**
     * Base searching term.
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_term;

    /**
     * A value between 0 and 1 to set the required similarity
     *  between the query term and the matching terms. For example, for a
     *  _minimumSimilarity of 0.5 a term of the same length
     *  as the query term is considered similar to the query term if the edit distance
     *  between both terms is less than length(term)*0.5
     *
     * @var float
     */
    private $_minimumSimilarity;

    /**
     * The length of common (non-fuzzy) prefix
     *
     * @var integer
     */
    private $_prefixLength;

    /**
     * Matched terms.
     *
     * Matched terms list.
     * It's filled during the search (rewrite operation) and may be used for search result
     * post-processing
     *
     * Array of Zend_Search_Lucene_Index_Term objects
     *
     * @var array
     */
    private $_matches = null;

    /**
     * Matched terms scores
     *
     * @var array
     */
    private $_scores = null;

    /**
     * Array of the term keys.
     * Used to sort terms in alphabetical order if terms have the same socres
     *
     * @var array
     */
    private $_termKeys = null;

    /**
     * Zend_Search_Lucene_Search_Query_Wildcard constructor.
     *
     * @param Zend_Search_Lucene_Index_Term $pattern
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct(Zend_Search_Lucene_Index_Term $term, $minimumSimilarity = self::DEFAULT_MIN_SIMILARITY, $prefixLength = 0)
    {
        if ($minimumSimilarity < 0) {
            throw new Zend_Search_Lucene_Exception('minimumSimilarity cannot be less than 0');
        }
        if ($minimumSimilarity >= 1) {
            throw new Zend_Search_Lucene_Exception('minimumSimilarity cannot be greater than or equal to 1');
        }
        if ($prefixLength < 0) {
            throw new Zend_Search_Lucene_Exception('prefixLength cannot be less than 0');
        }

        $this->_term              = $term;
        $this->_minimumSimilarity = $minimumSimilarity;
        $this->_prefixLength      = $prefixLength;
    }

    /**
     * Calculate maximum distance for specified word length
     *
     * @param integer $prefixLength
     * @param integer $termLength
     * @param integer $length
     * @return integer
     */
    private function _calculateMaxDistance($prefixLength, $termLength, $length)
    {
        $this->_maxDistances[$length] = (int) ((1 - $this->_minimumSimilarity)*(min($termLength, $length) + $prefixLength));
        return $this->_maxDistances[$length];
    }

    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        $this->_matches  = array();
        $this->_scores   = array();
        $this->_termKeys = array();

        if ($this->_term->field === null) {
            // Search through all fields
            $fields = $index->getFieldNames(true /* indexed fields list */);
        } else {
            $fields = array($this->_term->field);
        }

        $prefix           = Zend_Search_Lucene_Index_Term::getPrefix($this->_term->text, $this->_prefixLength);
        $prefixByteLength = strlen($prefix);
        $prefixUtf8Length = Zend_Search_Lucene_Index_Term::getLength($prefix);

        $termLength       = Zend_Search_Lucene_Index_Term::getLength($this->_term->text);

        $termRest         = substr($this->_term->text, $prefixByteLength);
        // we calculate length of the rest in bytes since levenshtein() is not UTF-8 compatible
        $termRestLength   = strlen($termRest);

        $scaleFactor = 1/(1 - $this->_minimumSimilarity);

        foreach ($fields as $field) {
            $index->resetTermsStream();

            if ($prefix != '') {
                $index->skipTo(new Zend_Search_Lucene_Index_Term($prefix, $field));

                while ($index->currentTerm() !== null          &&
                       $index->currentTerm()->field == $field  &&
                       substr($index->currentTerm()->text, 0, $prefixByteLength) == $prefix) {
                    // Calculate similarity
                    $target = substr($index->currentTerm()->text, $prefixByteLength);

                    $maxDistance = isset($this->_maxDistances[strlen($target)])?
                                       $this->_maxDistances[strlen($target)] :
                                       $this->_calculateMaxDistance($prefixUtf8Length, $termRestLength, strlen($target));

                    if ($termRestLength == 0) {
                        // we don't have anything to compare.  That means if we just add
                        // the letters for current term we get the new word
                        $similarity = (($prefixUtf8Length == 0)? 0 : 1 - strlen($target)/$prefixUtf8Length);
                    } else if (strlen($target) == 0) {
                        $similarity = (($prefixUtf8Length == 0)? 0 : 1 - $termRestLength/$prefixUtf8Length);
                    } else if ($maxDistance < abs($termRestLength - strlen($target))){
                        //just adding the characters of term to target or vice-versa results in too many edits
                        //for example "pre" length is 3 and "prefixes" length is 8.  We can see that
                        //given this optimal circumstance, the edit distance cannot be less than 5.
                        //which is 8-3 or more precisesly abs(3-8).
                        //if our maximum edit distance is 4, then we can discard this word
                        //without looking at it.
                        $similarity = 0;
                    } else {
                        $similarity = 1 - levenshtein($termRest, $target)/($prefixUtf8Length + min($termRestLength, strlen($target)));
                    }

                    if ($similarity > $this->_minimumSimilarity) {
                        $this->_matches[]  = $index->currentTerm();
                        $this->_termKeys[] = $index->currentTerm()->key();
                        $this->_scores[]   = ($similarity - $this->_minimumSimilarity)*$scaleFactor;
                    }

                    $index->nextTerm();
                }
            } else {
                $index->skipTo(new Zend_Search_Lucene_Index_Term('', $field));

                while ($index->currentTerm() !== null  &&  $index->currentTerm()->field == $field) {
                    // Calculate similarity
                    $target = $index->currentTerm()->text;

                    $maxDistance = isset($this->_maxDistances[strlen($target)])?
                                       $this->_maxDistances[strlen($target)] :
                                       $this->_calculateMaxDistance(0, $termRestLength, strlen($target));

                    if ($maxDistance < abs($termRestLength - strlen($target))){
                        //just adding the characters of term to target or vice-versa results in too many edits
                        //for example "pre" length is 3 and "prefixes" length is 8.  We can see that
                        //given this optimal circumstance, the edit distance cannot be less than 5.
                        //which is 8-3 or more precisesly abs(3-8).
                        //if our maximum edit distance is 4, then we can discard this word
                        //without looking at it.
                        $similarity = 0;
                    } else {
                        $similarity = 1 - levenshtein($termRest, $target)/min($termRestLength, strlen($target));
                    }

                    if ($similarity > $this->_minimumSimilarity) {
                        $this->_matches[]  = $index->currentTerm();
                        $this->_termKeys[] = $index->currentTerm()->key();
                        $this->_scores[]   = ($similarity - $this->_minimumSimilarity)*$scaleFactor;
                    }

                    $index->nextTerm();
                }
            }

            $index->closeTermsStream();
        }

        if (count($this->_matches) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        } else if (count($this->_matches) == 1) {
            return new Zend_Search_Lucene_Search_Query_Term(reset($this->_matches));
        } else {
            $rewrittenQuery = new Zend_Search_Lucene_Search_Query_Boolean();

            array_multisort($this->_scores,   SORT_DESC, SORT_NUMERIC,
                            $this->_termKeys, SORT_ASC,  SORT_STRING,
                            $this->_matches);

            $termCount = 0;
            foreach ($this->_matches as $id => $matchedTerm) {
                $subquery = new Zend_Search_Lucene_Search_Query_Term($matchedTerm);
                $subquery->setBoost($this->_scores[$id]);

                $rewrittenQuery->addSubquery($subquery);

                $termCount++;
                if ($termCount >= self::MAX_CLAUSE_COUNT) {
                    break;
                }
            }

            return $rewrittenQuery;
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Return query terms
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function getQueryTerms()
    {
        if ($this->_matches === null) {
            throw new Zend_Search_Lucene_Exception('Search has to be performed first to get matched terms');
        }

        return $this->_matches;
    }

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     * @throws Zend_Search_Lucene_Exception
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }


    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @throws Zend_Search_Lucene_Exception
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function matchedDocs()
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     * @throws Zend_Search_Lucene_Exception
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $words = array();

        foreach ($this->_matches as $term) {
            $words[] = $term->text;
        }

        $doc->highlight($words, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping
        return (($this->_term->field === null)? '' : $this->_term->field . ':')
             . $this->_term->text . '~'
             . (($this->_minimumSimilarity != self::DEFAULT_MIN_SIMILARITY)? round($this->_minimumSimilarity, 4) : '');
    }
}

PKpG[��8��h�h&Search/Lucene/Search/Query/Boolean.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Weight_Boolean */
require_once 'Zend/Search/Lucene/Search/Weight/Boolean.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Boolean extends Zend_Search_Lucene_Search_Query
{

    /**
     * Subqueries
     * Array of Zend_Search_Lucene_Search_Query
     *
     * @var array
     */
    private $_subqueries = array();

    /**
     * Subqueries signs.
     * If true then subquery is required.
     * If false then subquery is prohibited.
     * If null then subquery is neither prohibited, nor required
     *
     * If array is null then all subqueries are required
     *
     * @var array
     */
    private $_signs = array();

    /**
     * Result vector.
     *
     * @var array
     */
    private $_resVector = null;

    /**
     * A score factor based on the fraction of all query subqueries
     * that a document contains.
     * float for conjunction queries
     * array of float for non conjunction queries
     *
     * @var mixed
     */
    private $_coord = null;


    /**
     * Class constructor.  Create a new Boolean query object.
     *
     * if $signs array is omitted then all subqueries are required
     * it differs from addSubquery() behavior, but should never be used
     *
     * @param array $subqueries    Array of Zend_Search_Search_Query objects
     * @param array $signs    Array of signs.  Sign is boolean|null.
     * @return void
     */
    public function __construct($subqueries = null, $signs = null)
    {
        if (is_array($subqueries)) {
            $this->_subqueries = $subqueries;

            $this->_signs = null;
            // Check if all subqueries are required
            if (is_array($signs)) {
                foreach ($signs as $sign ) {
                    if ($sign !== true) {
                        $this->_signs = $signs;
                        break;
                    }
                }
            }
        }
    }


    /**
     * Add a $subquery (Zend_Search_Lucene_Search_Query) to this query.
     *
     * The sign is specified as:
     *     TRUE  - subquery is required
     *     FALSE - subquery is prohibited
     *     NULL  - subquery is neither prohibited, nor required
     *
     * @param  Zend_Search_Lucene_Search_Query $subquery
     * @param  boolean|null $sign
     * @return void
     */
    public function addSubquery(Zend_Search_Lucene_Search_Query $subquery, $sign=null) {
        if ($sign !== true || $this->_signs !== null) {       // Skip, if all subqueries are required
            if ($this->_signs === null) {                     // Check, If all previous subqueries are required
                $this->_signs = array();
                foreach ($this->_subqueries as $prevSubquery) {
                    $this->_signs[] = true;
                }
            }
            $this->_signs[] = $sign;
        }

        $this->_subqueries[] = $subquery;
    }

    /**
     * Re-write queries into primitive queries
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        $query = new Zend_Search_Lucene_Search_Query_Boolean();
        $query->setBoost($this->getBoost());

        foreach ($this->_subqueries as $subqueryId => $subquery) {
            $query->addSubquery($subquery->rewrite($index),
                                ($this->_signs === null)?  true : $this->_signs[$subqueryId]);
        }

        return $query;
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        $subqueries = array();
        $signs      = array();

        // Optimize all subqueries
        foreach ($this->_subqueries as $id => $subquery) {
            $subqueries[] = $subquery->optimize($index);
            $signs[]      = ($this->_signs === null)? true : $this->_signs[$id];
        }

        // Remove insignificant subqueries
        foreach ($subqueries as $id => $subquery) {
            if ($subquery instanceof Zend_Search_Lucene_Search_Query_Insignificant) {
                // Insignificant subquery has to be removed anyway
                unset($subqueries[$id]);
                unset($signs[$id]);
            }
        }
        if (count($subqueries) == 0) {
            // Boolean query doesn't has non-insignificant subqueries
            return new Zend_Search_Lucene_Search_Query_Insignificant();
        }
        // Check if all non-insignificant subqueries are prohibited
        $allProhibited = true;
        foreach ($signs as $sign) {
            if ($sign !== false) {
                $allProhibited = false;
                break;
            }
        }
        if ($allProhibited) {
            return new Zend_Search_Lucene_Search_Query_Insignificant();
        }


        // Check for empty subqueries
        foreach ($subqueries as $id => $subquery) {
            if ($subquery instanceof Zend_Search_Lucene_Search_Query_Empty) {
                if ($signs[$id] === true) {
                    // Matching is required, but is actually empty
                    return new Zend_Search_Lucene_Search_Query_Empty();
                } else {
                    // Matching is optional or prohibited, but is empty
                    // Remove it from subqueries and signs list
                    unset($subqueries[$id]);
                    unset($signs[$id]);
                }
            }
        }

        // Check, if reduced subqueries list is empty
        if (count($subqueries) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }

        // Check if all non-empty subqueries are prohibited
        $allProhibited = true;
        foreach ($signs as $sign) {
            if ($sign !== false) {
                $allProhibited = false;
                break;
            }
        }
        if ($allProhibited) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }


        // Check, if reduced subqueries list has only one entry
        if (count($subqueries) == 1) {
            // It's a query with only one required or optional clause
            // (it's already checked, that it's not a prohibited clause)

            if ($this->getBoost() == 1) {
                return reset($subqueries);
            }

            $optimizedQuery = clone reset($subqueries);
            $optimizedQuery->setBoost($optimizedQuery->getBoost()*$this->getBoost());

            return $optimizedQuery;
        }


        // Prepare first candidate for optimized query
        $optimizedQuery = new Zend_Search_Lucene_Search_Query_Boolean($subqueries, $signs);
        $optimizedQuery->setBoost($this->getBoost());


        $terms        = array();
        $tsigns       = array();
        $boostFactors = array();

        // Try to decompose term and multi-term subqueries
        foreach ($subqueries as $id => $subquery) {
            if ($subquery instanceof Zend_Search_Lucene_Search_Query_Term) {
                $terms[]        = $subquery->getTerm();
                $tsigns[]       = $signs[$id];
                $boostFactors[] = $subquery->getBoost();

                // remove subquery from a subqueries list
                unset($subqueries[$id]);
                unset($signs[$id]);
           } else if ($subquery instanceof Zend_Search_Lucene_Search_Query_MultiTerm) {
                $subTerms = $subquery->getTerms();
                $subSigns = $subquery->getSigns();

                if ($signs[$id] === true) {
                    // It's a required multi-term subquery.
                    // Something like '... +(+term1 -term2 term3 ...) ...'

                    // Multi-term required subquery can be decomposed only if it contains
                    // required terms and doesn't contain prohibited terms:
                    // ... +(+term1 term2 ...) ... => ... +term1 term2 ...
                    //
                    // Check this
                    $hasRequired   = false;
                    $hasProhibited = false;
                    if ($subSigns === null) {
                        // All subterms are required
                        $hasRequired = true;
                    } else {
                        foreach ($subSigns as $sign) {
                            if ($sign === true) {
                                $hasRequired   = true;
                            } else if ($sign === false) {
                                $hasProhibited = true;
                                break;
                            }
                        }
                    }
                    // Continue if subquery has prohibited terms or doesn't have required terms
                    if ($hasProhibited  ||  !$hasRequired) {
                        continue;
                    }

                    foreach ($subTerms as $termId => $term) {
                        $terms[]        = $term;
                        $tsigns[]       = ($subSigns === null)? true : $subSigns[$termId];
                        $boostFactors[] = $subquery->getBoost();
                    }

                    // remove subquery from a subqueries list
                    unset($subqueries[$id]);
                    unset($signs[$id]);

                } else { // $signs[$id] === null  ||  $signs[$id] === false
                    // It's an optional or prohibited multi-term subquery.
                    // Something like '... (+term1 -term2 term3 ...) ...'
                    // or
                    // something like '... -(+term1 -term2 term3 ...) ...'

                    // Multi-term optional and required subqueries can be decomposed
                    // only if all terms are optional.
                    //
                    // Check if all terms are optional.
                    $onlyOptional = true;
                    if ($subSigns === null) {
                        // All subterms are required
                        $onlyOptional = false;
                    } else {
                        foreach ($subSigns as $sign) {
                            if ($sign !== null) {
                                $onlyOptional = false;
                                break;
                            }
                        }
                    }

                    // Continue if non-optional terms are presented in this multi-term subquery
                    if (!$onlyOptional) {
                        continue;
                    }

                    foreach ($subTerms as $termId => $term) {
                        $terms[]  = $term;
                        $tsigns[] = ($signs[$id] === null)? null  /* optional */ :
                                                            false /* prohibited */;
                        $boostFactors[] = $subquery->getBoost();
                    }

                    // remove subquery from a subqueries list
                    unset($subqueries[$id]);
                    unset($signs[$id]);
                }
            }
        }


        // Check, if there are no decomposed subqueries
        if (count($terms) == 0 ) {
            // return prepared candidate
            return $optimizedQuery;
        }


        // Check, if all subqueries have been decomposed and all terms has the same boost factor
        if (count($subqueries) == 0  &&  count(array_unique($boostFactors)) == 1) {
            $optimizedQuery = new Zend_Search_Lucene_Search_Query_MultiTerm($terms, $tsigns);
            $optimizedQuery->setBoost(reset($boostFactors)*$this->getBoost());

            return $optimizedQuery;
        }


        // This boolean query can't be transformed to Term/MultiTerm query and still contains
        // several subqueries

        // Separate prohibited terms
        $prohibitedTerms        = array();
        foreach ($terms as $id => $term) {
            if ($tsigns[$id] === false) {
                $prohibitedTerms[]        = $term;

                unset($terms[$id]);
                unset($tsigns[$id]);
                unset($boostFactors[$id]);
            }
        }

        if (count($terms) == 1) {
            $clause = new Zend_Search_Lucene_Search_Query_Term(reset($terms));
            $clause->setBoost(reset($boostFactors));

            $subqueries[] = $clause;
            $signs[]      = reset($tsigns);

            // Clear terms list
            $terms = array();
        } else if (count($terms) > 1  &&  count(array_unique($boostFactors)) == 1) {
            $clause = new Zend_Search_Lucene_Search_Query_MultiTerm($terms, $tsigns);
            $clause->setBoost(reset($boostFactors));

            $subqueries[] = $clause;
            // Clause sign is 'required' if clause contains required terms. 'Optional' otherwise.
            $signs[]      = (in_array(true, $tsigns))? true : null;

            // Clear terms list
            $terms = array();
        }

        if (count($prohibitedTerms) == 1) {
            // (boost factors are not significant for prohibited clauses)
            $subqueries[] = new Zend_Search_Lucene_Search_Query_Term(reset($prohibitedTerms));
            $signs[]      = false;

            // Clear prohibited terms list
            $prohibitedTerms = array();
        } else if (count($prohibitedTerms) > 1) {
            // prepare signs array
            $prohibitedSigns = array();
            foreach ($prohibitedTerms as $id => $term) {
                // all prohibited term are grouped as optional into multi-term query
                $prohibitedSigns[$id] = null;
            }

            // (boost factors are not significant for prohibited clauses)
            $subqueries[] = new Zend_Search_Lucene_Search_Query_MultiTerm($prohibitedTerms, $prohibitedSigns);
            // Clause sign is 'prohibited'
            $signs[]      = false;

            // Clear terms list
            $prohibitedTerms = array();
        }

        /** @todo Group terms with the same boost factors together */

        // Check, that all terms are processed
        // Replace candidate for optimized query
        if (count($terms) == 0  &&  count($prohibitedTerms) == 0) {
            $optimizedQuery = new Zend_Search_Lucene_Search_Query_Boolean($subqueries, $signs);
            $optimizedQuery->setBoost($this->getBoost());
        }

        return $optimizedQuery;
    }

    /**
     * Returns subqueries
     *
     * @return array
     */
    public function getSubqueries()
    {
        return $this->_subqueries;
    }


    /**
     * Return subqueries signs
     *
     * @return array
     */
    public function getSigns()
    {
        return $this->_signs;
    }


    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        $this->_weight = new Zend_Search_Lucene_Search_Weight_Boolean($this, $reader);
        return $this->_weight;
    }


    /**
     * Calculate result vector for Conjunction query
     * (like '<subquery1> AND <subquery2> AND <subquery3>')
     */
    private function _calculateConjunctionResult()
    {
        $this->_resVector = null;

        if (count($this->_subqueries) == 0) {
            $this->_resVector = array();
        }

        $resVectors      = array();
        $resVectorsSizes = array();
        $resVectorsIds   = array(); // is used to prevent arrays comparison
        foreach ($this->_subqueries as $subqueryId => $subquery) {
            $resVectors[]      = $subquery->matchedDocs();
            $resVectorsSizes[] = count(end($resVectors));
            $resVectorsIds[]   = $subqueryId;
        }
        // sort resvectors in order of subquery cardinality increasing
        array_multisort($resVectorsSizes, SORT_ASC, SORT_NUMERIC,
                        $resVectorsIds,   SORT_ASC, SORT_NUMERIC,
                        $resVectors);

        foreach ($resVectors as $nextResVector) {
            if($this->_resVector === null) {
                $this->_resVector = $nextResVector;
            } else {
                //$this->_resVector = array_intersect_key($this->_resVector, $nextResVector);

                /**
                 * This code is used as workaround for array_intersect_key() slowness problem.
                 */
                $updatedVector = array();
                foreach ($this->_resVector as $id => $value) {
                    if (isset($nextResVector[$id])) {
                        $updatedVector[$id] = $value;
                    }
                }
                $this->_resVector = $updatedVector;
            }

            if (count($this->_resVector) == 0) {
                // Empty result set, we don't need to check other terms
                break;
            }
        }

        // ksort($this->_resVector, SORT_NUMERIC);
        // Used algorithm doesn't change elements order
    }


    /**
     * Calculate result vector for non Conjunction query
     * (like '<subquery1> AND <subquery2> AND NOT <subquery3> OR <subquery4>')
     */
    private function _calculateNonConjunctionResult()
    {
        $requiredVectors      = array();
        $requiredVectorsSizes = array();
        $requiredVectorsIds   = array(); // is used to prevent arrays comparison

        $optional = array();

        foreach ($this->_subqueries as $subqueryId => $subquery) {
            if ($this->_signs[$subqueryId] === true) {
                // required
                $requiredVectors[]      = $subquery->matchedDocs();
                $requiredVectorsSizes[] = count(end($requiredVectors));
                $requiredVectorsIds[]   = $subqueryId;
            } elseif ($this->_signs[$subqueryId] === false) {
                // prohibited
                // Do nothing. matchedDocs() may include non-matching id's
                // Calculating prohibited vector may take significant time, but do not affect the result
                // Skipped.
            } else {
                // neither required, nor prohibited
                // array union
                $optional += $subquery->matchedDocs();
            }
        }

        // sort resvectors in order of subquery cardinality increasing
        array_multisort($requiredVectorsSizes, SORT_ASC, SORT_NUMERIC,
                        $requiredVectorsIds,   SORT_ASC, SORT_NUMERIC,
                        $requiredVectors);

        $required = null;
        foreach ($requiredVectors as $nextResVector) {
            if($required === null) {
                $required = $nextResVector;
            } else {
                //$required = array_intersect_key($required, $nextResVector);

                /**
                 * This code is used as workaround for array_intersect_key() slowness problem.
                 */
                $updatedVector = array();
                foreach ($required as $id => $value) {
                    if (isset($nextResVector[$id])) {
                        $updatedVector[$id] = $value;
                    }
                }
                $required = $updatedVector;
            }

            if (count($required) == 0) {
                // Empty result set, we don't need to check other terms
                break;
            }
        }


        if ($required !== null) {
            $this->_resVector = &$required;
        } else {
            $this->_resVector = &$optional;
        }

        ksort($this->_resVector, SORT_NUMERIC);
    }


    /**
     * Score calculator for conjunction queries (all subqueries are required)
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function _conjunctionScore($docId, Zend_Search_Lucene_Interface $reader)
    {
        if ($this->_coord === null) {
            $this->_coord = $reader->getSimilarity()->coord(count($this->_subqueries),
                                                            count($this->_subqueries) );
        }

        $score = 0;

        foreach ($this->_subqueries as $subquery) {
            $subscore = $subquery->score($docId, $reader);

            if ($subscore == 0) {
                return 0;
            }

            $score += $subquery->score($docId, $reader) * $this->_coord;
        }

        return $score * $this->_coord * $this->getBoost();
    }


    /**
     * Score calculator for non conjunction queries (not all subqueries are required)
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function _nonConjunctionScore($docId, Zend_Search_Lucene_Interface $reader)
    {
        if ($this->_coord === null) {
            $this->_coord = array();

            $maxCoord = 0;
            foreach ($this->_signs as $sign) {
                if ($sign !== false /* not prohibited */) {
                    $maxCoord++;
                }
            }

            for ($count = 0; $count <= $maxCoord; $count++) {
                $this->_coord[$count] = $reader->getSimilarity()->coord($count, $maxCoord);
            }
        }

        $score = 0;
        $matchedSubqueries = 0;
        foreach ($this->_subqueries as $subqueryId => $subquery) {
            $subscore = $subquery->score($docId, $reader);

            // Prohibited
            if ($this->_signs[$subqueryId] === false && $subscore != 0) {
                return 0;
            }

            // is required, but doen't match
            if ($this->_signs[$subqueryId] === true &&  $subscore == 0) {
                return 0;
            }

            if ($subscore != 0) {
                $matchedSubqueries++;
                $score += $subscore;
            }
        }

        return $score * $this->_coord[$matchedSubqueries] * $this->getBoost();
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        // Initialize weight if it's not done yet
        $this->_initWeight($reader);

        if ($docsFilter === null) {
            // Create local documents filter if it's not provided by upper query
            $docsFilter = new Zend_Search_Lucene_Index_DocsFilter();
        }

        foreach ($this->_subqueries as $subqueryId => $subquery) {
            if ($this->_signs == null  ||  $this->_signs[$subqueryId] === true) {
                // Subquery is required
                $subquery->execute($reader, $docsFilter);
            } else {
                $subquery->execute($reader);
            }
        }

        if ($this->_signs === null) {
            $this->_calculateConjunctionResult();
        } else {
            $this->_calculateNonConjunctionResult();
        }
    }



    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return $this->_resVector;
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        if (isset($this->_resVector[$docId])) {
            if ($this->_signs === null) {
                return $this->_conjunctionScore($docId, $reader);
            } else {
                return $this->_nonConjunctionScore($docId, $reader);
            }
        } else {
            return 0;
        }
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        $terms = array();

        foreach ($this->_subqueries as $id => $subquery) {
            if ($this->_signs === null  ||  $this->_signs[$id] !== false) {
                $terms = array_merge($terms, $subquery->getQueryTerms());
            }
        }

        return $terms;
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        foreach ($this->_subqueries as $id => $subquery) {
            if ($this->_signs === null  ||  $this->_signs[$id] !== false) {
                $subquery->highlightMatchesDOM($doc, $colorIndex);
            }
        }
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping

        $query = '';

        foreach ($this->_subqueries as $id => $subquery) {
            if ($id != 0) {
                $query .= ' ';
            }

            if ($this->_signs === null || $this->_signs[$id] === true) {
                $query .= '+';
            } else if ($this->_signs[$id] === false) {
                $query .= '-';
            }

            $query .= '(' . $subquery->__toString() . ')';

            if ($subquery->getBoost() != 1) {
                $query .= '^' . round($subquery->getBoost(), 4);
            }
        }

        return $query;
    }
}

PKpG[o|��.&.&$Search/Lucene/Search/Query/Range.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Query_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Range extends Zend_Search_Lucene_Search_Query
{
    /**
     * Lower term.
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_lowerTerm;

    /**
     * Upper term.
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_upperTerm;


    /**
     * Search field
     *
     * @var string
     */
    private $_field;

    /**
     * Inclusive
     *
     * @var boolean
     */
    private $_inclusive;

    /**
     * Matched terms.
     *
     * Matched terms list.
     * It's filled during the search (rewrite operation) and may be used for search result
     * post-processing
     *
     * Array of Zend_Search_Lucene_Index_Term objects
     *
     * @var array
     */
    private $_matches;


    /**
     * Zend_Search_Lucene_Search_Query_Range constructor.
     *
     * @param Zend_Search_Lucene_Index_Term|null $lowerTerm
     * @param Zend_Search_Lucene_Index_Term|null $upperTerm
     * @param boolean $inclusive
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct($lowerTerm, $upperTerm, $inclusive)
    {
        if ($lowerTerm === null  &&  $upperTerm === null) {
            throw new Zend_Search_Lucene_Exception('At least one term must be non-null');
        }
        if ($lowerTerm !== null  &&  $upperTerm !== null  &&  $lowerTerm->field != $upperTerm->field) {
            throw new Zend_Search_Lucene_Exception('Both terms must be for the same field');
        }

        $this->_field     = ($lowerTerm !== null)? $lowerTerm->field : $upperTerm->field;
        $this->_lowerTerm = $lowerTerm;
        $this->_upperTerm = $upperTerm;
        $this->_inclusive = $inclusive;
    }

    /**
     * Get query field name
     *
     * @return string|null
     */
    public function getField()
    {
        return $this->_field;
    }

    /**
     * Get lower term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function getLowerTerm()
    {
        return $this->_lowerTerm;
    }

    /**
     * Get upper term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function getUpperTerm()
    {
        return $this->_upperTerm;
    }

    /**
     * Get upper term
     *
     * @return boolean
     */
    public function isInclusive()
    {
        return $this->_inclusive;
    }

    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        $this->_matches = array();

        if ($this->_field === null) {
            // Search through all fields
            $fields = $index->getFieldNames(true /* indexed fields list */);
        } else {
            $fields = array($this->_field);
        }

        foreach ($fields as $field) {
            $index->resetTermsStream();

            if ($this->_lowerTerm !== null) {
                $lowerTerm = new Zend_Search_Lucene_Index_Term($this->_lowerTerm->text, $field);

                $index->skipTo($lowerTerm);

                if (!$this->_inclusive  &&
                    $index->currentTerm() == $lowerTerm) {
                    // Skip lower term
                    $index->nextTerm();
                }
            } else {
                $index->skipTo(new Zend_Search_Lucene_Index_Term('', $field));
            }


            if ($this->_upperTerm !== null) {
                // Walk up to the upper term
                $upperTerm = new Zend_Search_Lucene_Index_Term($this->_upperTerm->text, $field);

                while ($index->currentTerm() !== null          &&
                       $index->currentTerm()->field == $field  &&
                       $index->currentTerm()->text  <  $upperTerm->text) {
                    $this->_matches[] = $index->currentTerm();
                    $index->nextTerm();
                }

                if ($this->_inclusive  &&  $index->currentTerm() == $upperTerm) {
                    // Include upper term into result
                    $this->_matches[] = $upperTerm;
                }
            } else {
                // Walk up to the end of field data
                while ($index->currentTerm() !== null  &&  $index->currentTerm()->field == $field) {
                    $this->_matches[] = $index->currentTerm();
                    $index->nextTerm();
                }
            }

            $index->closeTermsStream();
        }

        if (count($this->_matches) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        } else if (count($this->_matches) == 1) {
            return new Zend_Search_Lucene_Search_Query_Term(reset($this->_matches));
        } else {
            $rewrittenQuery = new Zend_Search_Lucene_Search_Query_MultiTerm();

            foreach ($this->_matches as $matchedTerm) {
                $rewrittenQuery->addTerm($matchedTerm);
            }

            return $rewrittenQuery;
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        throw new Zend_Search_Lucene_Exception('Range query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Return query terms
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function getQueryTerms()
    {
        if ($this->_matches === null) {
            throw new Zend_Search_Lucene_Exception('Search has to be performed first to get matched terms');
        }

        return $this->_matches;
    }

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     * @throws Zend_Search_Lucene_Exception
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Range query should not be directly used for search. Use $query->rewrite($index)');
    }


    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @throws Zend_Search_Lucene_Exception
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        throw new Zend_Search_Lucene_Exception('Range query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function matchedDocs()
    {
        throw new Zend_Search_Lucene_Exception('Range query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     * @throws Zend_Search_Lucene_Exception
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Range query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $words = array();

        foreach ($this->_matches as $term) {
            $words[] = $term->text;
        }

        $doc->highlight($words, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping
        return (($this->_field === null)? '' : $this->_field . ':')
             . (($this->_inclusive)? '[' : '{')
             . (($this->_lowerTerm !== null)?  $this->_lowerTerm->text : 'null')
             . ' TO '
             . (($this->_upperTerm !== null)?  $this->_upperTerm->text : 'null')
             . (($this->_inclusive)? ']' : '}');
    }
}

PKpG[ טu,Search/Lucene/Search/Query/Insignificant.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Weight_Empty */
require_once 'Zend/Search/Lucene/Search/Weight/Empty.php';


/**
 * The insignificant query returns empty result, but doesn't limit result set as a part of other queries
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Insignificant extends Zend_Search_Lucene_Search_Query
{
    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        return $this;
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        return $this;
    }

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        return new Zend_Search_Lucene_Search_Weight_Empty();
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        // Do nothing
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return array();
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        return 0;
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        return array();
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        // Do nothing
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        return '<InsignificantQuery>';
    }
}

PKpG[\�RRR#Search/Lucene/Search/Query/Term.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Weight_Term */
require_once 'Zend/Search/Lucene/Search/Weight/Term.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Term extends Zend_Search_Lucene_Search_Query
{
    /**
     * Term to find.
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_term;

    /**
     * Documents vector.
     *
     * @var array
     */
    private $_docVector = null;

    /**
     * Term freqs vector.
     * array(docId => freq, ...)
     *
     * @var array
     */
    private $_termFreqs;


    /**
     * Zend_Search_Lucene_Search_Query_Term constructor
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param boolean $sign
     */
    public function __construct(Zend_Search_Lucene_Index_Term $term)
    {
        $this->_term = $term;
    }

    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        if ($this->_term->field != null) {
            return $this;
        } else {
            $query = new Zend_Search_Lucene_Search_Query_MultiTerm();
            $query->setBoost($this->getBoost());

            foreach ($index->getFieldNames(true) as $fieldName) {
                $term = new Zend_Search_Lucene_Index_Term($this->_term->text, $fieldName);

                $query->addTerm($term);
            }

            return $query->rewrite($index);
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        // Check, that index contains specified term
        if (!$index->hasTerm($this->_term)) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        }

        return $this;
    }


    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        $this->_weight = new Zend_Search_Lucene_Search_Weight_Term($this->_term, $this, $reader);
        return $this->_weight;
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        $this->_docVector = array_flip($reader->termDocs($this->_term, $docsFilter));
        $this->_termFreqs = $reader->termFreqs($this->_term, $docsFilter);

        // Initialize weight if it's not done yet
        $this->_initWeight($reader);
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return $this->_docVector;
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        if (isset($this->_docVector[$docId])) {
            return $reader->getSimilarity()->tf($this->_termFreqs[$docId]) *
                   $this->_weight->getValue() *
                   $reader->norm($docId, $this->_term->field) *
                   $this->getBoost();
        } else {
            return 0;
        }
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        return array($this->_term);
    }

    /**
     * Return query term
     *
     * @return Zend_Search_Lucene_Index_Term
     */
    public function getTerm()
    {
        return $this->_term;
    }

    /**
     * Returns query term
     *
     * @return array
     */
    public function getTerms()
    {
        return $this->_terms;
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $doc->highlight($this->_term->text, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping
        return (($this->_term->field === null)? '':$this->_term->field . ':') . $this->_term->text;
    }
}

PKpG[���2%2%'Search/Lucene/Search/Query/Wildcard.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Query_MultiTerm */
require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Wildcard extends Zend_Search_Lucene_Search_Query
{
    /**
     * Search pattern.
     *
     * Field has to be fully specified or has to be null
     * Text may contain '*' or '?' symbols
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_pattern;

    /**
     * Matched terms.
     *
     * Matched terms list.
     * It's filled during the search (rewrite operation) and may be used for search result
     * post-processing
     *
     * Array of Zend_Search_Lucene_Index_Term objects
     *
     * @var array
     */
    private $_matches = null;

    /**
     * Zend_Search_Lucene_Search_Query_Wildcard constructor.
     *
     * @param Zend_Search_Lucene_Index_Term $pattern
     */
    public function __construct(Zend_Search_Lucene_Index_Term $pattern)
    {
        $this->_pattern = $pattern;
    }

    /**
     * Get terms prefix
     *
     * @param string $word
     * @return string
     */
    private static function _getPrefix($word)
    {
        $questionMarkPosition = strpos($word, '?');
        $astrericPosition     = strpos($word, '*');

        if ($questionMarkPosition !== false) {
            if ($astrericPosition !== false) {
                return substr($word, 0, min($questionMarkPosition, $astrericPosition));
            }

            return substr($word, 0, $questionMarkPosition);
        } else if ($astrericPosition !== false) {
            return substr($word, 0, $astrericPosition);
        }

        return $word;
    }

    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        $this->_matches = array();

        if ($this->_pattern->field === null) {
            // Search through all fields
            $fields = $index->getFieldNames(true /* indexed fields list */);
        } else {
            $fields = array($this->_pattern->field);
        }

        $prefix          = self::_getPrefix($this->_pattern->text);
        $prefixLength    = strlen($prefix);
        $matchExpression = '/^' . str_replace(array('\\?', '\\*'), array('.', '.*') , preg_quote($this->_pattern->text, '/')) . '$/';

        /** @todo check for PCRE unicode support may be performed through Zend_Environment in some future */
        if (@preg_match('/\pL/u', 'a') == 1) {
            // PCRE unicode support is turned on
            // add Unicode modifier to the match expression
            $matchExpression .= 'u';
        }


        foreach ($fields as $field) {
            $index->resetTermsStream();

            if ($prefix != '') {
                $index->skipTo(new Zend_Search_Lucene_Index_Term($prefix, $field));

                while ($index->currentTerm() !== null          &&
                       $index->currentTerm()->field == $field  &&
                       substr($index->currentTerm()->text, 0, $prefixLength) == $prefix) {
                    if (preg_match($matchExpression, $index->currentTerm()->text) === 1) {
                        $this->_matches[] = $index->currentTerm();
                    }

                    $index->nextTerm();
                }
            } else {
                $index->skipTo(new Zend_Search_Lucene_Index_Term('', $field));

                while ($index->currentTerm() !== null  &&  $index->currentTerm()->field == $field) {
                    if (preg_match($matchExpression, $index->currentTerm()->text) === 1) {
                        $this->_matches[] = $index->currentTerm();
                    }

                    $index->nextTerm();
                }
            }

            $index->closeTermsStream();
        }

        if (count($this->_matches) == 0) {
            return new Zend_Search_Lucene_Search_Query_Empty();
        } else if (count($this->_matches) == 1) {
            return new Zend_Search_Lucene_Search_Query_Term(reset($this->_matches));
        } else {
            $rewrittenQuery = new Zend_Search_Lucene_Search_Query_MultiTerm();

            foreach ($this->_matches as $matchedTerm) {
                $rewrittenQuery->addTerm($matchedTerm);
            }

            return $rewrittenQuery;
        }
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }


    /**
     * Returns query pattern
     *
     * @return Zend_Search_Lucene_Index_Term
     */
    public function getPattern()
    {
        return $this->_pattern;
    }


    /**
     * Return query terms
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function getQueryTerms()
    {
        if ($this->_matches === null) {
            throw new Zend_Search_Lucene_Exception('Search has to be performed first to get matched terms');
        }

        return $this->_matches;
    }

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     * @throws Zend_Search_Lucene_Exception
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }


    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @throws Zend_Search_Lucene_Exception
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function matchedDocs()
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     * @throws Zend_Search_Lucene_Exception
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        throw new Zend_Search_Lucene_Exception('Wildcard query should not be directly used for search. Use $query->rewrite($index)');
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        $words = array();

        $matchExpression = '/^' . str_replace(array('\\?', '\\*'), array('.', '.*') , preg_quote($this->_pattern->text, '/')) . '$/';
        if (@preg_match('/\pL/u', 'a') == 1) {
            // PCRE unicode support is turned on
            // add Unicode modifier to the match expression
            $matchExpression .= 'u';
        }

        $tokens = Zend_Search_Lucene_Analysis_Analyzer::getDefault()->tokenize($doc->getFieldUtf8Value('body'), 'UTF-8');
        foreach ($tokens as $token) {
            if (preg_match($matchExpression, $token->getTermText()) === 1) {
                $words[] = $token->getTermText();
            }
        }

        $doc->highlight($words, $this->_getHighlightColor($colorIndex));
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        // It's used only for query visualisation, so we don't care about characters escaping
        return (($this->_pattern->field === null)? '' : $this->_pattern->field . ':') . $this->_pattern->text;
    }
}

PKpG[��l�PP$Search/Lucene/Search/Query/Empty.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Query */
require_once 'Zend/Search/Lucene/Search/Query.php';

/** Zend_Search_Lucene_Search_Weight_Empty */
require_once 'Zend/Search/Lucene/Search/Weight/Empty.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Query_Empty extends Zend_Search_Lucene_Search_Query
{
    /**
     * Re-write query into primitive queries in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function rewrite(Zend_Search_Lucene_Interface $index)
    {
        return $this;
    }

    /**
     * Optimize query in the context of specified index
     *
     * @param Zend_Search_Lucene_Interface $index
     * @return Zend_Search_Lucene_Search_Query
     */
    public function optimize(Zend_Search_Lucene_Interface $index)
    {
        // "Empty" query is a primitive query and don't need to be optimized
        return $this;
    }

    /**
     * Constructs an appropriate Weight implementation for this query.
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @return Zend_Search_Lucene_Search_Weight
     */
    public function createWeight(Zend_Search_Lucene_Interface $reader)
    {
        return new Zend_Search_Lucene_Search_Weight_Empty();
    }

    /**
     * Execute query in context of index reader
     * It also initializes necessary internal structures
     *
     * @param Zend_Search_Lucene_Interface $reader
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     */
    public function execute(Zend_Search_Lucene_Interface $reader, $docsFilter = null)
    {
        // Do nothing
    }

    /**
     * Get document ids likely matching the query
     *
     * It's an array with document ids as keys (performance considerations)
     *
     * @return array
     */
    public function matchedDocs()
    {
        return array();
    }

    /**
     * Score specified document
     *
     * @param integer $docId
     * @param Zend_Search_Lucene_Interface $reader
     * @return float
     */
    public function score($docId, Zend_Search_Lucene_Interface $reader)
    {
        return 0;
    }

    /**
     * Return query terms
     *
     * @return array
     */
    public function getQueryTerms()
    {
        return array();
    }

    /**
     * Highlight query terms
     *
     * @param integer &$colorIndex
     * @param Zend_Search_Lucene_Document_Html $doc
     */
    public function highlightMatchesDOM(Zend_Search_Lucene_Document_Html $doc, &$colorIndex)
    {
        // Do nothing
    }

    /**
     * Print a query
     *
     * @return string
     */
    public function __toString()
    {
        return '<EmptyQuery>';
    }
}

PKpG[���x$$4Search/Lucene/Search/BooleanExpressionRecognizer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_FSM */
require_once 'Zend/Search/Lucene/FSM.php';

/** Zend_Search_Lucene_Search_QueryToken */
require_once 'Zend/Search/Lucene/Search/QueryToken.php';

/** Zend_Search_Lucene_Search_QueryParser */
require_once 'Zend/Search/Lucene/Search/QueryParser.php';


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_BooleanExpressionRecognizer extends Zend_Search_Lucene_FSM
{
    /** State Machine states */
    const ST_START           = 0;
    const ST_LITERAL         = 1;
    const ST_NOT_OPERATOR    = 2;
    const ST_AND_OPERATOR    = 3;
    const ST_OR_OPERATOR     = 4;

    /** Input symbols */
    const IN_LITERAL         = 0;
    const IN_NOT_OPERATOR    = 1;
    const IN_AND_OPERATOR    = 2;
    const IN_OR_OPERATOR     = 3;


    /**
     * NOT operator signal
     *
     * @var boolean
     */
    private $_negativeLiteral = false;

    /**
     * Current literal
     *
     * @var mixed
     */
    private $_literal;


    /**
     * Set of boolean query conjunctions
     *
     * Each conjunction is an array of conjunction elements
     * Each conjunction element is presented with two-elements array:
     * array(<literal>, <is_negative>)
     *
     * So, it has a structure:
     * array( array( array(<literal>, <is_negative>), // first literal of first conjuction
     *               array(<literal>, <is_negative>), // second literal of first conjuction
     *               ...
     *               array(<literal>, <is_negative>)
     *             ), // end of first conjuction
     *        array( array(<literal>, <is_negative>), // first literal of second conjuction
     *               array(<literal>, <is_negative>), // second literal of second conjuction
     *               ...
     *               array(<literal>, <is_negative>)
     *             ), // end of second conjuction
     *        ...
     *      ) // end of structure
     *
     * @var array
     */
    private $_conjunctions = array();

    /**
     * Current conjuction
     *
     * @var array
     */
    private $_currentConjunction = array();


    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct( array(self::ST_START,
                                   self::ST_LITERAL,
                                   self::ST_NOT_OPERATOR,
                                   self::ST_AND_OPERATOR,
                                   self::ST_OR_OPERATOR),
                             array(self::IN_LITERAL,
                                   self::IN_NOT_OPERATOR,
                                   self::IN_AND_OPERATOR,
                                   self::IN_OR_OPERATOR));

        $emptyOperatorAction    = new Zend_Search_Lucene_FSMAction($this, 'emptyOperatorAction');
        $emptyNotOperatorAction = new Zend_Search_Lucene_FSMAction($this, 'emptyNotOperatorAction');

        $this->addRules(array( array(self::ST_START,        self::IN_LITERAL,        self::ST_LITERAL),
                               array(self::ST_START,        self::IN_NOT_OPERATOR,   self::ST_NOT_OPERATOR),

                               array(self::ST_LITERAL,      self::IN_AND_OPERATOR,   self::ST_AND_OPERATOR),
                               array(self::ST_LITERAL,      self::IN_OR_OPERATOR,    self::ST_OR_OPERATOR),
                               array(self::ST_LITERAL,      self::IN_LITERAL,        self::ST_LITERAL,      $emptyOperatorAction),
                               array(self::ST_LITERAL,      self::IN_NOT_OPERATOR,   self::ST_NOT_OPERATOR, $emptyNotOperatorAction),

                               array(self::ST_NOT_OPERATOR, self::IN_LITERAL,        self::ST_LITERAL),

                               array(self::ST_AND_OPERATOR, self::IN_LITERAL,        self::ST_LITERAL),
                               array(self::ST_AND_OPERATOR, self::IN_NOT_OPERATOR,   self::ST_NOT_OPERATOR),

                               array(self::ST_OR_OPERATOR,  self::IN_LITERAL,        self::ST_LITERAL),
                               array(self::ST_OR_OPERATOR,  self::IN_NOT_OPERATOR,   self::ST_NOT_OPERATOR),
                             ));

        $notOperatorAction     = new Zend_Search_Lucene_FSMAction($this, 'notOperatorAction');
        $orOperatorAction      = new Zend_Search_Lucene_FSMAction($this, 'orOperatorAction');
        $literalAction         = new Zend_Search_Lucene_FSMAction($this, 'literalAction');


        $this->addEntryAction(self::ST_NOT_OPERATOR, $notOperatorAction);
        $this->addEntryAction(self::ST_OR_OPERATOR,  $orOperatorAction);
        $this->addEntryAction(self::ST_LITERAL,      $literalAction);
    }


    /**
     * Process next operator.
     *
     * Operators are defined by class constants: IN_AND_OPERATOR, IN_OR_OPERATOR and IN_NOT_OPERATOR
     *
     * @param integer $operator
     */
    public function processOperator($operator)
    {
        $this->process($operator);
    }

    /**
     * Process expression literal.
     *
     * @param integer $operator
     */
    public function processLiteral($literal)
    {
        $this->_literal = $literal;

        $this->process(self::IN_LITERAL);
    }

    /**
     * Finish an expression and return result
     *
     * Result is a set of boolean query conjunctions
     *
     * Each conjunction is an array of conjunction elements
     * Each conjunction element is presented with two-elements array:
     * array(<literal>, <is_negative>)
     *
     * So, it has a structure:
     * array( array( array(<literal>, <is_negative>), // first literal of first conjuction
     *               array(<literal>, <is_negative>), // second literal of first conjuction
     *               ...
     *               array(<literal>, <is_negative>)
     *             ), // end of first conjuction
     *        array( array(<literal>, <is_negative>), // first literal of second conjuction
     *               array(<literal>, <is_negative>), // second literal of second conjuction
     *               ...
     *               array(<literal>, <is_negative>)
     *             ), // end of second conjuction
     *        ...
     *      ) // end of structure
     *
     * @return array
     * @throws Zend_Search_Lucene_Exception
     */
    public function finishExpression()
    {
        if ($this->getState() != self::ST_LITERAL) {
            throw new Zend_Search_Lucene_Exception('Literal expected.');
        }

        $this->_conjunctions[] = $this->_currentConjunction;

        return $this->_conjunctions;
    }



    /*********************************************************************
     * Actions implementation
     *********************************************************************/

    /**
     * default (omitted) operator processing
     */
    public function emptyOperatorAction()
    {
        if (Zend_Search_Lucene_Search_QueryParser::getDefaultOperator() == Zend_Search_Lucene_Search_QueryParser::B_AND) {
            // Do nothing
        } else {
            $this->orOperatorAction();
        }

        // Process literal
        $this->literalAction();
    }

    /**
     * default (omitted) + NOT operator processing
     */
    public function emptyNotOperatorAction()
    {
        if (Zend_Search_Lucene_Search_QueryParser::getDefaultOperator() == Zend_Search_Lucene_Search_QueryParser::B_AND) {
            // Do nothing
        } else {
            $this->orOperatorAction();
        }

        // Process NOT operator
        $this->notOperatorAction();
    }


    /**
     * NOT operator processing
     */
    public function notOperatorAction()
    {
        $this->_negativeLiteral = true;
    }

    /**
     * OR operator processing
     * Close current conjunction
     */
    public function orOperatorAction()
    {
        $this->_conjunctions[]     = $this->_currentConjunction;
        $this->_currentConjunction = array();
    }

    /**
     * Literal processing
     */
    public function literalAction()
    {
        // Add literal to the current conjunction
        $this->_currentConjunction[] = array($this->_literal, !$this->_negativeLiteral);

        // Switch off negative signal
        $this->_negativeLiteral = false;
    }
}
PKpG[��ω$Search/Lucene/Search/Weight/Term.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Weight */
require_once 'Zend/Search/Lucene/Search/Weight.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Weight_Term extends Zend_Search_Lucene_Search_Weight
{
    /**
     * IndexReader.
     *
     * @var Zend_Search_Lucene_Interface
     */
    private $_reader;

    /**
     * Term
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_term;

    /**
     * The query that this concerns.
     *
     * @var Zend_Search_Lucene_Search_Query
     */
    private $_query;

    /**
     * Score factor
     *
     * @var float
     */
    private $_idf;

    /**
     * Query weight
     *
     * @var float
     */
    private $_queryWeight;


    /**
     * Zend_Search_Lucene_Search_Weight_Term constructor
     * reader - index reader
     *
     * @param Zend_Search_Lucene_Index_Term   $term
     * @param Zend_Search_Lucene_Search_Query $query
     * @param Zend_Search_Lucene_Interface    $reader
     */
    public function __construct(Zend_Search_Lucene_Index_Term   $term,
                                Zend_Search_Lucene_Search_Query $query,
                                Zend_Search_Lucene_Interface    $reader)
    {
        $this->_term   = $term;
        $this->_query  = $query;
        $this->_reader = $reader;
    }


    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    public function sumOfSquaredWeights()
    {
        // compute idf
        $this->_idf = $this->_reader->getSimilarity()->idf($this->_term, $this->_reader);

        // compute query weight
        $this->_queryWeight = $this->_idf * $this->_query->getBoost();

        // square it
        return $this->_queryWeight * $this->_queryWeight;
    }


    /**
     * Assigns the query normalization factor to this.
     *
     * @param float $queryNorm
     */
    public function normalize($queryNorm)
    {
        $this->_queryNorm = $queryNorm;

        // normalize query weight
        $this->_queryWeight *= $queryNorm;

        // idf for documents
        $this->_value = $this->_queryWeight * $this->_idf;
    }
}

PKpG[�o�z�
�
&Search/Lucene/Search/Weight/Phrase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Search_Lucene_Search_Weight
 */
require_once 'Zend/Search/Lucene/Search/Weight.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Weight_Phrase extends Zend_Search_Lucene_Search_Weight
{
    /**
     * IndexReader.
     *
     * @var Zend_Search_Lucene_Interface
     */
    private $_reader;

    /**
     * The query that this concerns.
     *
     * @var Zend_Search_Lucene_Search_Query_Phrase
     */
    private $_query;

    /**
     * Score factor
     *
     * @var float
     */
    private $_idf;

    /**
     * Zend_Search_Lucene_Search_Weight_Phrase constructor
     *
     * @param Zend_Search_Lucene_Search_Query_Phrase $query
     * @param Zend_Search_Lucene_Interface           $reader
     */
    public function __construct(Zend_Search_Lucene_Search_Query_Phrase $query,
                                Zend_Search_Lucene_Interface           $reader)
    {
        $this->_query  = $query;
        $this->_reader = $reader;
    }

    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    public function sumOfSquaredWeights()
    {
        // compute idf
        $this->_idf = $this->_reader->getSimilarity()->idf($this->_query->getTerms(), $this->_reader);

        // compute query weight
        $this->_queryWeight = $this->_idf * $this->_query->getBoost();

        // square it
        return $this->_queryWeight * $this->_queryWeight;
    }


    /**
     * Assigns the query normalization factor to this.
     *
     * @param float $queryNorm
     */
    public function normalize($queryNorm)
    {
        $this->_queryNorm = $queryNorm;

        // normalize query weight
        $this->_queryWeight *= $queryNorm;

        // idf for documents
        $this->_value = $this->_queryWeight * $this->_idf;
    }
}


PKpG[P4|:�
�
'Search/Lucene/Search/Weight/Boolean.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Weight */
require_once 'Zend/Search/Lucene/Search/Weight.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Weight_Boolean extends Zend_Search_Lucene_Search_Weight
{
    /**
     * IndexReader.
     *
     * @var Zend_Search_Lucene_Interface
     */
    private $_reader;

    /**
     * The query that this concerns.
     *
     * @var Zend_Search_Lucene_Search_Query
     */
    private $_query;

    /**
     * Queries weights
     * Array of Zend_Search_Lucene_Search_Weight
     *
     * @var array
     */
    private $_weights;


    /**
     * Zend_Search_Lucene_Search_Weight_Boolean constructor
     * query - the query that this concerns.
     * reader - index reader
     *
     * @param Zend_Search_Lucene_Search_Query $query
     * @param Zend_Search_Lucene_Interface    $reader
     */
    public function __construct(Zend_Search_Lucene_Search_Query $query,
                                Zend_Search_Lucene_Interface    $reader)
    {
        $this->_query   = $query;
        $this->_reader  = $reader;
        $this->_weights = array();

        $signs = $query->getSigns();

        foreach ($query->getSubqueries() as $num => $subquery) {
            if ($signs === null || $signs[$num] === null || $signs[$num]) {
                $this->_weights[$num] = $subquery->createWeight($reader);
            }
        }
    }


    /**
     * The weight for this query
     * Standard Weight::$_value is not used for boolean queries
     *
     * @return float
     */
    public function getValue()
    {
        return $this->_query->getBoost();
    }


    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    public function sumOfSquaredWeights()
    {
        $sum = 0;
        foreach ($this->_weights as $weight) {
            // sum sub weights
            $sum += $weight->sumOfSquaredWeights();
        }

        // boost each sub-weight
        $sum *= $this->_query->getBoost() * $this->_query->getBoost();

        // check for empty query (like '-something -another')
        if ($sum == 0) {
            $sum = 1.0;
        }
        return $sum;
    }


    /**
     * Assigns the query normalization factor to this.
     *
     * @param float $queryNorm
     */
    public function normalize($queryNorm)
    {
        // incorporate boost
        $queryNorm *= $this->_query->getBoost();

        foreach ($this->_weights as $weight) {
            $weight->normalize($queryNorm);
        }
    }
}


PKpG[X�g���%Search/Lucene/Search/Weight/Empty.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Weight */
require_once 'Zend/Search/Lucene/Search/Weight.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Weight_Empty extends Zend_Search_Lucene_Search_Weight
{
    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    public function sumOfSquaredWeights()
    {
        return 1;
    }


    /**
     * Assigns the query normalization factor to this.
     *
     * @param float $queryNorm
     */
    public function normalize($queryNorm)
    {
    }
}

PKpG[#ȉp�
�
)Search/Lucene/Search/Weight/MultiTerm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Search_Weight */
require_once 'Zend/Search/Lucene/Search/Weight.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Search
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Search_Weight_MultiTerm extends Zend_Search_Lucene_Search_Weight
{
    /**
     * IndexReader.
     *
     * @var Zend_Search_Lucene_Interface
     */
    private $_reader;

    /**
     * The query that this concerns.
     *
     * @var Zend_Search_Lucene_Search_Query
     */
    private $_query;

    /**
     * Query terms weights
     * Array of Zend_Search_Lucene_Search_Weight_Term
     *
     * @var array
     */
    private $_weights;


    /**
     * Zend_Search_Lucene_Search_Weight_MultiTerm constructor
     * query - the query that this concerns.
     * reader - index reader
     *
     * @param Zend_Search_Lucene_Search_Query $query
     * @param Zend_Search_Lucene_Interface    $reader
     */
    public function __construct(Zend_Search_Lucene_Search_Query $query,
                                Zend_Search_Lucene_Interface    $reader)
    {
        $this->_query   = $query;
        $this->_reader  = $reader;
        $this->_weights = array();

        $signs = $query->getSigns();

        foreach ($query->getTerms() as $id => $term) {
            if ($signs === null || $signs[$id] === null || $signs[$id]) {
                $this->_weights[$id] = new Zend_Search_Lucene_Search_Weight_Term($term, $query, $reader);
                $query->setWeight($id, $this->_weights[$id]);
            }
        }
    }


    /**
     * The weight for this query
     * Standard Weight::$_value is not used for boolean queries
     *
     * @return float
     */
    public function getValue()
    {
        return $this->_query->getBoost();
    }


    /**
     * The sum of squared weights of contained query clauses.
     *
     * @return float
     */
    public function sumOfSquaredWeights()
    {
        $sum = 0;
        foreach ($this->_weights as $weight) {
            // sum sub weights
            $sum += $weight->sumOfSquaredWeights();
        }

        // boost each sub-weight
        $sum *= $this->_query->getBoost() * $this->_query->getBoost();

        // check for empty query (like '-something -another')
        if ($sum == 0) {
            $sum = 1.0;
        }
        return $sum;
    }


    /**
     * Assigns the query normalization factor to this.
     *
     * @param float $queryNorm
     */
    public function normalize($queryNorm)
    {
        // incorporate boost
        $queryNorm *= $this->_query->getBoost();

        foreach ($this->_weights as $weight) {
            $weight->normalize($queryNorm);
        }
    }
}


PKpG[� S

0Search/Lucene/Analysis/TokenFilter/StopWords.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_TokenFilter */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';
require_once 'Zend/Search/Exception.php';


/**
 * Token filter that removes stop words. These words must be provided as array (set), example:
 * $stopwords = array('the' => 1, 'an' => '1');
 *
 * We do recommend to provide all words in lowercase and concatenate this class after the lowercase filter.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_TokenFilter_StopWords extends Zend_Search_Lucene_Analysis_TokenFilter
{
    /**
     * Stop Words
     * @var array
     */
    private $_stopSet;

    /**
     * Constructs new instance of this filter.
     *
     * @param array $stopwords array (set) of words that will be filtered out
     */
    public function __construct($stopwords = array()) {
        $this->_stopSet = array_flip($stopwords);
    }

    /**
     * Normalize Token or remove it (if null is returned)
     *
     * @param Zend_Search_Lucene_Analysis_Token $srcToken
     * @return Zend_Search_Lucene_Analysis_Token
     */
    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken) {
        if (array_key_exists($srcToken->getTermText(), $this->_stopSet)) {
            return null;
        } else {
            return $srcToken;
        }
    }

    /**
     * Fills stopwords set from a text file. Each line contains one stopword, lines with '#' in the first
     * column are ignored (as comments).
     *
     * You can call this method one or more times. New stopwords are always added to current set.
     *
     * @param string $filepath full path for text file with stopwords
     * @throws Zend_Search_Exception When the file doesn`t exists or is not readable.
     */
    public function loadFromFile($filepath = null) {
        if (! $filepath || ! file_exists($filepath)) {
            throw new Zend_Search_Exception('You have to provide valid file path');
        }
        $fd = fopen($filepath, "r");
        if (! $fd) {
            throw new Zend_Search_Exception('Cannot open file ' . $filepath);
        }
        while (!feof ($fd)) {
            $buffer = trim(fgets($fd));
            if (strlen($buffer) > 0 && $buffer[0] != '#') {
                $this->_stopSet[$buffer] = 1;
            }
        }
        if (!fclose($fd)) {
            throw new Zend_Search_Exception('Cannot close file ' . $filepath);
        }
    }
}

PKpG[/"��1Search/Lucene/Analysis/TokenFilter/ShortWords.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_TokenFilter */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';


/**
 * Token filter that removes short words. What is short word can be configured with constructor.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_TokenFilter_ShortWords extends Zend_Search_Lucene_Analysis_TokenFilter
{
    /**
     * Minimum allowed term length
     * @var integer
     */
    private $length;

    /**
     * Constructs new instance of this filter.
     *
     * @param integer $short  minimum allowed length of term which passes this filter (default 2)
     */
    public function __construct($length = 2) {
        $this->length = $length;
    }

    /**
     * Normalize Token or remove it (if null is returned)
     *
     * @param Zend_Search_Lucene_Analysis_Token $srcToken
     * @return Zend_Search_Lucene_Analysis_Token
     */
    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken) {
        if (strlen($srcToken->getTermText()) < $this->length) {
            return null;
        } else {
            return $srcToken;
        }
    }
}

PKpG[�;�u��4Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_TokenFilter */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';


/**
 * Lower case Token filter.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 extends Zend_Search_Lucene_Analysis_TokenFilter
{
    /**
     * Object constructor
     */
    public function __construct()
    {
        if (!function_exists('mb_strtolower')) {
            // mbstring extension is disabled
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('Utf8 compatible lower case filter needs mbstring extension to be enabled.');
        }
    }
    
    /**
     * Normalize Token or remove it (if null is returned)
     *
     * @param Zend_Search_Lucene_Analysis_Token $srcToken
     * @return Zend_Search_Lucene_Analysis_Token
     */
    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken)
    {
        $newToken = new Zend_Search_Lucene_Analysis_Token(
                                     mb_strtolower($srcToken->getTermText(), 'UTF-8'),
                                     $srcToken->getStartOffset(),
                                     $srcToken->getEndOffset());

        $newToken->setPositionIncrement($srcToken->getPositionIncrement());

        return $newToken;
    }
}

PKpG[�.J�CC0Search/Lucene/Analysis/TokenFilter/LowerCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_TokenFilter */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';


/**
 * Lower case Token filter.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_TokenFilter_LowerCase extends Zend_Search_Lucene_Analysis_TokenFilter
{
    /**
     * Normalize Token or remove it (if null is returned)
     *
     * @param Zend_Search_Lucene_Analysis_Token $srcToken
     * @return Zend_Search_Lucene_Analysis_Token
     */
    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken)
    {
        $newToken = new Zend_Search_Lucene_Analysis_Token(
                                     strtolower( $srcToken->getTermText() ),
                                     $srcToken->getStartOffset(),
                                     $srcToken->getEndOffset());

        $newToken->setPositionIncrement($srcToken->getPositionIncrement());

        return $newToken;
    }
}

PKpG[�
�2RR Search/Lucene/Analysis/Token.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Analysis_Token
{
    /**
     * The text of the term.
     *
     * @var string
     */
    private $_termText;

    /**
     * Start in source text.
     *
     * @var integer
     */
    private $_startOffset;

    /**
     * End in source text
     *
     * @var integer
     */
    private $_endOffset;

    /**
     * The position of this token relative to the previous Token.
     *
     * The default value is one.
     *
     * Some common uses for this are:
     * Set it to zero to put multiple terms in the same position.  This is
     * useful if, e.g., a word has multiple stems.  Searches for phrases
     * including either stem will match.  In this case, all but the first stem's
     * increment should be set to zero: the increment of the first instance
     * should be one.  Repeating a token with an increment of zero can also be
     * used to boost the scores of matches on that token.
     *
     * Set it to values greater than one to inhibit exact phrase matches.
     * If, for example, one does not want phrases to match across removed stop
     * words, then one could build a stop word filter that removes stop words and
     * also sets the increment to the number of stop words removed before each
     * non-stop word.  Then exact phrase queries will only match when the terms
     * occur with no intervening stop words.
     *
     * @var integer
     */
    private $_positionIncrement;


    /**
     * Object constructor
     *
     * @param string  $text
     * @param integer $start
     * @param integer $end
     * @param string  $type
     */
    public function __construct($text, $start, $end)
    {
        $this->_termText    = $text;
        $this->_startOffset = $start;
        $this->_endOffset   = $end;

        $this->_positionIncrement = 1;
    }


    /**
     * positionIncrement setter
     *
     * @param integer $positionIncrement
     */
    public function setPositionIncrement($positionIncrement)
    {
        $this->_positionIncrement = $positionIncrement;
    }

    /**
     * Returns the position increment of this Token.
     *
     * @return integer
     */
    public function getPositionIncrement()
    {
        return $this->_positionIncrement;
    }

    /**
     * Returns the Token's term text.
     *
     * @return string
     */
    public function getTermText()
    {
        return $this->_termText;
    }

    /**
     * Returns this Token's starting offset, the position of the first character
     * corresponding to this token in the source text.
     *
     * Note:
     * The difference between getEndOffset() and getStartOffset() may not be equal
     * to strlen(Zend_Search_Lucene_Analysis_Token::getTermText()), as the term text may have been altered
     * by a stemmer or some other filter.
     *
     * @return integer
     */
    public function getStartOffset()
    {
        return $this->_startOffset;
    }

    /**
     * Returns this Token's ending offset, one greater than the position of the
     * last character corresponding to this token in the source text.
     *
     * @return integer
     */
    public function getEndOffset()
    {
        return $this->_endOffset;
    }
}

PKpG[�է���&Search/Lucene/Analysis/TokenFilter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Token */
require_once 'Zend/Search/Lucene/Analysis/Token.php';


/**
 * Token filter converts (normalizes) Token ore removes it from a token stream.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

abstract class Zend_Search_Lucene_Analysis_TokenFilter
{
    /**
     * Normalize Token or remove it (if null is returned)
     *
     * @param Zend_Search_Lucene_Analysis_Token $srcToken
     * @return Zend_Search_Lucene_Analysis_Token
     */
    abstract public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken);
}

PKpG[+w���	�	*Search/Lucene/Analysis/Analyzer/Common.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer */
require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';


/**
 * Common implementation of the Zend_Search_Lucene_Analysis_Analyzer interface.
 * There are several standard standard subclasses provided by Zend_Search_Lucene/Analysis
 * subpackage: Zend_Search_Lucene_Analysis_Analyzer_Common_Text, ZSearchHTMLAnalyzer, ZSearchXMLAnalyzer.
 *
 * @todo ZSearchHTMLAnalyzer and ZSearchXMLAnalyzer implementation
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Analysis_Analyzer_Common extends Zend_Search_Lucene_Analysis_Analyzer
{
    /**
     * The set of Token filters applied to the Token stream.
     * Array of Zend_Search_Lucene_Analysis_TokenFilter objects.
     *
     * @var array
     */
    private $_filters = array();

    /**
     * Add Token filter to the Analyzer
     *
     * @param Zend_Search_Lucene_Analysis_TokenFilter $filter
     */
    public function addFilter(Zend_Search_Lucene_Analysis_TokenFilter $filter)
    {
        $this->_filters[] = $filter;
    }

    /**
     * Apply filters to the token. Can return null when the token was removed.
     *
     * @param Zend_Search_Lucene_Analysis_Token $token
     * @return Zend_Search_Lucene_Analysis_Token
     */
    public function normalize(Zend_Search_Lucene_Analysis_Token $token)
    {
        foreach ($this->_filters as $filter) {
            $token = $filter->normalize($token);

            // resulting token can be null if the filter removes it
            if (is_null($token)) {
                return null;
            }
        }

        return $token;
    }
}

PKpG[(Q!xx/Search/Lucene/Analysis/Analyzer/Common/Utf8.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 extends Zend_Search_Lucene_Analysis_Analyzer_Common
{
    /**
     * Current char position in an UTF-8 stream
     *
     * @var integer
     */
    private $_position;

    /**
     * Current binary position in an UTF-8 stream
     *
     * @var integer
     */
    private $_bytePosition;
    
    /**
     * Object constructor
     *
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct()
    {
        if (@preg_match('/\pL/u', 'a') != 1) {
            // PCRE unicode support is turned off
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('Utf8 analyzer needs PCRE unicode support to be enabled.');
        }
    }

    /**
     * Reset token stream
     */
    public function reset()
    {
        $this->_position     = 0;
        $this->_bytePosition = 0;

        // convert input into UTF-8
        if (strcasecmp($this->_encoding, 'utf8' ) != 0  &&
            strcasecmp($this->_encoding, 'utf-8') != 0 ) {
                $this->_input = iconv($this->_encoding, 'UTF-8', $this->_input);
                $this->_encoding = 'UTF-8';
        }
    }

    /**
     * Tokenization stream API
     * Get next token
     * Returns null at the end of stream
     *
     * @return Zend_Search_Lucene_Analysis_Token|null
     */
    public function nextToken()
    {
        if ($this->_input === null) {
            return null;
        }

        do {
            if (! preg_match('/[\p{L}]+/u', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_bytePosition)) {
                // It covers both cases a) there are no matches (preg_match(...) === 0)
                // b) error occured (preg_match(...) === FALSE)
                return null;
            }

            // matched string
            $matchedWord = $match[0][0];
            
            // binary position of the matched word in the input stream
            $binStartPos = $match[0][1];
            
            // character position of the matched word in the input stream
            $startPos = $this->_position + 
                        iconv_strlen(substr($this->_input,
                                            $this->_bytePosition,
                                            $binStartPos - $this->_bytePosition),
                                     'UTF-8');
            // character postion of the end of matched word in the input stream
            $endPos = $startPos + iconv_strlen($matchedWord, 'UTF-8');

            $this->_bytePosition = $binStartPos + strlen($matchedWord);
            $this->_position     = $endPos;

            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($matchedWord, $startPos, $endPos));
        } while ($token === null); // try again if token is skipped

        return $token;
    }
}

PKpG[���BSearch/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num
{
    public function __construct()
    {
        parent::__construct();

        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8());
    }
}

PKpG[��*FF
F
/Search/Lucene/Analysis/Analyzer/Common/Text.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_Analyzer_Common_Text extends Zend_Search_Lucene_Analysis_Analyzer_Common
{
    /**
     * Current position in a stream
     *
     * @var integer
     */
    private $_position;

    /**
     * Reset token stream
     */
    public function reset()
    {
        $this->_position = 0;

        if ($this->_input === null) {
            return;
        }

        // convert input into ascii
        if (PHP_OS != 'AIX') {
            $this->_input = iconv($this->_encoding, 'ASCII//TRANSLIT', $this->_input);
        }
        $this->_encoding = 'ASCII';
    }

    /**
     * Tokenization stream API
     * Get next token
     * Returns null at the end of stream
     *
     * @return Zend_Search_Lucene_Analysis_Token|null
     */
    public function nextToken()
    {
        if ($this->_input === null) {
            return null;
        }


        do {
            if (! preg_match('/[a-zA-Z]+/', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_position)) {
                // It covers both cases a) there are no matches (preg_match(...) === 0)
                // b) error occured (preg_match(...) === FALSE)
                return null;
            }

            $str = $match[0][0];
            $pos = $match[0][1];
            $endpos = $pos + strlen($str);

            $this->_position = $endpos;

            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
        } while ($token === null); // try again if token is skipped

        return $token;
    }
}

PKpG[g�]��?Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 
{
    public function __construct()
    {
        parent::__construct();

        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8());
    }
}

PKpG[B�N_��BSearch/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCase */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


class Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum
{
    public function __construct()
    {
        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCase());
    }
}

PKpG[(�*2Search/Lucene/Analysis/Analyzer/Common/Utf8Num.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num extends Zend_Search_Lucene_Analysis_Analyzer_Common
{
    /**
     * Current char position in an UTF-8 stream
     *
     * @var integer
     */
    private $_position;

    /**
     * Current binary position in an UTF-8 stream
     *
     * @var integer
     */
    private $_bytePosition;

    /**
     * Object constructor
     *
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct()
    {
        if (@preg_match('/\pL/u', 'a') != 1) {
            // PCRE unicode support is turned off
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('Utf8Num analyzer needs PCRE unicode support to be enabled.');
        }
    }

    /**
     * Reset token stream
     */
    public function reset()
    {
        $this->_position     = 0;
        $this->_bytePosition = 0;

        // convert input into UTF-8
        if (strcasecmp($this->_encoding, 'utf8' ) != 0  &&
            strcasecmp($this->_encoding, 'utf-8') != 0 ) {
                $this->_input = iconv($this->_encoding, 'UTF-8', $this->_input);
                $this->_encoding = 'UTF-8';
        }
    }

    /**
     * Tokenization stream API
     * Get next token
     * Returns null at the end of stream
     *
     * @return Zend_Search_Lucene_Analysis_Token|null
     */
    public function nextToken()
    {
        if ($this->_input === null) {
            return null;
        }

        do {
            if (! preg_match('/[\p{L}\p{N}]+/u', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_bytePosition)) {
                // It covers both cases a) there are no matches (preg_match(...) === 0)
                // b) error occured (preg_match(...) === FALSE)
                return null;
            }

            // matched string
            $matchedWord = $match[0][0];
            
            // binary position of the matched word in the input stream
            $binStartPos = $match[0][1];
            
            // character position of the matched word in the input stream
            $startPos = $this->_position + 
                        iconv_strlen(substr($this->_input,
                                            $this->_bytePosition,
                                            $binStartPos - $this->_bytePosition),
                                     'UTF-8');
            // character postion of the end of matched word in the input stream
            $endPos = $startPos + iconv_strlen($matchedWord, 'UTF-8');

            $this->_bytePosition = $binStartPos + strlen($matchedWord);
            $this->_position     = $endPos;

            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($matchedWord, $startPos, $endPos));
        } while ($token === null); // try again if token is skipped

        return $token;
    }
}

PKpG[����?Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCase */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


class Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Text
{
    public function __construct()
    {
        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCase());
    }
}

PKpG[tJK
K
2Search/Lucene/Analysis/Analyzer/Common/TextNum.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Analyzer_Common */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum extends Zend_Search_Lucene_Analysis_Analyzer_Common
{
    /**
     * Current position in a stream
     *
     * @var integer
     */
    private $_position;

    /**
     * Reset token stream
     */
    public function reset()
    {
        $this->_position = 0;

        if ($this->_input === null) {
            return;
        }

        // convert input into ascii
        if (PHP_OS != 'AIX') {
            $this->_input = iconv($this->_encoding, 'ASCII//TRANSLIT', $this->_input);
        }
        $this->_encoding = 'ASCII';
    }

    /**
     * Tokenization stream API
     * Get next token
     * Returns null at the end of stream
     *
     * @return Zend_Search_Lucene_Analysis_Token|null
     */
    public function nextToken()
    {
        if ($this->_input === null) {
            return null;
        }

        do {
            if (! preg_match('/[a-zA-Z0-9]+/', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_position)) {
                // It covers both cases a) there are no matches (preg_match(...) === 0)
                // b) error occured (preg_match(...) === FALSE)
                return null;
            }

            $str = $match[0][0];
            $pos = $match[0][1];
            $endpos = $pos + strlen($str);

            $this->_position = $endpos;

            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
        } while ($token === null); // try again if token is skipped

        return $token;
    }
}

PKpG[ʯ��99#Search/Lucene/Analysis/Analyzer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Analysis_Token */
require_once 'Zend/Search/Lucene/Analysis/Token.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php';

/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive */
require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_StopWords */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php';

/** Zend_Search_Lucene_Analysis_TokenFilter_ShortWords */
require_once 'Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php';


/**
 * An Analyzer is used to analyze text.
 * It thus represents a policy for extracting index terms from text.
 *
 * Note:
 * Lucene Java implementation is oriented to streams. It provides effective work
 * with a huge documents (more then 20Mb).
 * But engine itself is not oriented such documents.
 * Thus Zend_Search_Lucene analysis API works with data strings and sets (arrays).
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Analysis
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

abstract class Zend_Search_Lucene_Analysis_Analyzer
{
    /**
     * The Analyzer implementation used by default.
     *
     * @var Zend_Search_Lucene_Analysis_Analyzer
     */
    private static $_defaultImpl;

    /**
     * Input string
     *
     * @var string
     */
    protected $_input = null;

    /**
     * Input string encoding
     *
     * @var string
     */
    protected $_encoding = '';

    /**
     * Tokenize text to a terms
     * Returns array of Zend_Search_Lucene_Analysis_Token objects
     *
     * Tokens are returned in UTF-8 (internal Zend_Search_Lucene encoding)
     *
     * @param string $data
     * @return array
     */
    public function tokenize($data, $encoding = '')
    {
        $this->setInput($data, $encoding);

        $tokenList = array();
        while (($nextToken = $this->nextToken()) !== null) {
            $tokenList[] = $nextToken;
        }

        return $tokenList;
    }


    /**
     * Tokenization stream API
     * Set input
     *
     * @param string $data
     */
    public function setInput($data, $encoding = '')
    {
        $this->_input    = $data;
        $this->_encoding = $encoding;
        $this->reset();
    }

    /**
     * Reset token stream
     */
    abstract public function reset();

    /**
     * Tokenization stream API
     * Get next token
     * Returns null at the end of stream
     *
     * Tokens are returned in UTF-8 (internal Zend_Search_Lucene encoding)
     *
     * @return Zend_Search_Lucene_Analysis_Token|null
     */
    abstract public function nextToken();




    /**
     * Set the default Analyzer implementation used by indexing code.
     *
     * @param Zend_Search_Lucene_Analysis_Analyzer $similarity
     */
    public static function setDefault(Zend_Search_Lucene_Analysis_Analyzer $analyzer)
    {
        self::$_defaultImpl = $analyzer;
    }


    /**
     * Return the default Analyzer implementation used by indexing code.
     *
     * @return Zend_Search_Lucene_Analysis_Analyzer
     */
    public static function getDefault()
    {
        if (!self::$_defaultImpl instanceof Zend_Search_Lucene_Analysis_Analyzer) {
            self::$_defaultImpl = new Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive();
        }

        return self::$_defaultImpl;
    }
}

PKpG[|4��
�
#Search/Lucene/Storage/Directory.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Storage_Directory
{

    /**
     * Closes the store.
     *
     * @return void
     */
    abstract public function close();

    /**
     * Returns an array of strings, one for each file in the directory.
     *
     * @return array
     */
    abstract public function fileList();

    /**
     * Creates a new, empty file in the directory with the given $filename.
     *
     * @param string $filename
     * @return Zend_Search_Lucene_Storage_File
     */
    abstract public function createFile($filename);


    /**
     * Removes an existing $filename in the directory.
     *
     * @param string $filename
     * @return void
     */
    abstract public function deleteFile($filename);

    /**
     * Purge file if it's cached by directory object
     * 
     * Method is used to prevent 'too many open files' error
     *
     * @param string $filename
     * @return void
     */
    abstract public function purgeFile($filename);
    
    /**
     * Returns true if a file with the given $filename exists.
     *
     * @param string $filename
     * @return boolean
     */
    abstract public function fileExists($filename);


    /**
     * Returns the length of a $filename in the directory.
     *
     * @param string $filename
     * @return integer
     */
    abstract public function fileLength($filename);


    /**
     * Returns the UNIX timestamp $filename was last modified.
     *
     * @param string $filename
     * @return integer
     */
    abstract public function fileModified($filename);


    /**
     * Renames an existing file in the directory.
     *
     * @param string $from
     * @param string $to
     * @return void
     */
    abstract public function renameFile($from, $to);


    /**
     * Sets the modified time of $filename to now.
     *
     * @param string $filename
     * @return void
     */
    abstract public function touchFile($filename);


    /**
     * Returns a Zend_Search_Lucene_Storage_File object for a given $filename in the directory.
     *
     * If $shareHandler option is true, then file handler can be shared between File Object
     * requests. It speed-ups performance, but makes problems with file position.
     * Shared handler are good for short atomic requests.
     * Non-shared handlers are useful for stream file reading (especial for compound files).
     *
     * @param string $filename
     * @param boolean $shareHandler
     * @return Zend_Search_Lucene_Storage_File
     */
    abstract public function getFileObject($filename, $shareHandler = true);

}

PKpG[~v�7272Search/Lucene/Storage/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */



/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_Storage_File
{
    /**
     * Reads $length number of bytes at the current position in the
     * file and advances the file pointer.
     *
     * @param integer $length
     * @return string
     */
    abstract protected function _fread($length=1);


    /**
     * Sets the file position indicator and advances the file pointer.
     * The new position, measured in bytes from the beginning of the file,
     * is obtained by adding offset to the position specified by whence,
     * whose values are defined as follows:
     * SEEK_SET - Set position equal to offset bytes.
     * SEEK_CUR - Set position to current location plus offset.
     * SEEK_END - Set position to end-of-file plus offset. (To move to
     * a position before the end-of-file, you need to pass a negative value
     * in offset.)
     * Upon success, returns 0; otherwise, returns -1
     *
     * @param integer $offset
     * @param integer $whence
     * @return integer
     */
    abstract public function seek($offset, $whence=SEEK_SET);

    /**
     * Get file position.
     *
     * @return integer
     */
    abstract public function tell();

    /**
     * Flush output.
     *
     * Returns true on success or false on failure.
     *
     * @return boolean
     */
    abstract public function flush();

    /**
     * Writes $length number of bytes (all, if $length===null) to the end
     * of the file.
     *
     * @param string $data
     * @param integer $length
     */
    abstract protected function _fwrite($data, $length=null);

    /**
     * Lock file
     *
     * Lock type may be a LOCK_SH (shared lock) or a LOCK_EX (exclusive lock)
     *
     * @param integer $lockType
     * @return boolean
     */
    abstract public function lock($lockType, $nonBlockinLock = false);

    /**
     * Unlock file
     */
    abstract public function unlock();

    /**
     * Reads a byte from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     */
    public function readByte()
    {
        return ord($this->_fread(1));
    }

    /**
     * Writes a byte to the end of the file.
     *
     * @param integer $byte
     */
    public function writeByte($byte)
    {
        return $this->_fwrite(chr($byte), 1);
    }

    /**
     * Read num bytes from the current position in the file
     * and advances the file pointer.
     *
     * @param integer $num
     * @return string
     */
    public function readBytes($num)
    {
        return $this->_fread($num);
    }

    /**
     * Writes num bytes of data (all, if $num===null) to the end
     * of the string.
     *
     * @param string $data
     * @param integer $num
     */
    public function writeBytes($data, $num=null)
    {
        $this->_fwrite($data, $num);
    }


    /**
     * Reads an integer from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     */
    public function readInt()
    {
        $str = $this->_fread(4);

        return  ord($str[0]) << 24 |
                ord($str[1]) << 16 |
                ord($str[2]) << 8  |
                ord($str[3]);
    }


    /**
     * Writes an integer to the end of file.
     *
     * @param integer $value
     */
    public function writeInt($value)
    {
        settype($value, 'integer');
        $this->_fwrite( chr($value>>24 & 0xFF) .
                        chr($value>>16 & 0xFF) .
                        chr($value>>8  & 0xFF) .
                        chr($value     & 0xFF),   4  );
    }


    /**
     * Returns a long integer from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     * @throws Zend_Search_Lucene_Exception
     */
    public function readLong()
    {
        $str = $this->_fread(8);

        /**
         * Check, that we work in 64-bit mode.
         * fseek() uses long for offset. Thus, largest index segment file size in 32bit mode is 2Gb
         */
        if (PHP_INT_SIZE > 4) {
            return  ord($str[0]) << 56  |
                    ord($str[1]) << 48  |
                    ord($str[2]) << 40  |
                    ord($str[3]) << 32  |
                    ord($str[4]) << 24  |
                    ord($str[5]) << 16  |
                    ord($str[6]) << 8   |
                    ord($str[7]);
        } else {
            if ((ord($str[0])          != 0) ||
                (ord($str[1])          != 0) ||
                (ord($str[2])          != 0) ||
                (ord($str[3])          != 0) ||
                ((ord($str[0]) & 0x80) != 0)) {
                     throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
                 }

            return  ord($str[4]) << 24  |
                    ord($str[5]) << 16  |
                    ord($str[6]) << 8   |
                    ord($str[7]);
        }
    }

    /**
     * Writes long integer to the end of file
     *
     * @param integer $value
     * @throws Zend_Search_Lucene_Exception
     */
    public function writeLong($value)
    {
        /**
         * Check, that we work in 64-bit mode.
         * fseek() and ftell() use long for offset. Thus, largest index segment file size in 32bit mode is 2Gb
         */
        if (PHP_INT_SIZE > 4) {
            settype($value, 'integer');
            $this->_fwrite( chr($value>>56 & 0xFF) .
                            chr($value>>48 & 0xFF) .
                            chr($value>>40 & 0xFF) .
                            chr($value>>32 & 0xFF) .
                            chr($value>>24 & 0xFF) .
                            chr($value>>16 & 0xFF) .
                            chr($value>>8  & 0xFF) .
                            chr($value     & 0xFF),   8  );
        } else {
            if ($value > 0x7FFFFFFF) {
                throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
            }

            $this->_fwrite( "\x00\x00\x00\x00"     .
                            chr($value>>24 & 0xFF) .
                            chr($value>>16 & 0xFF) .
                            chr($value>>8  & 0xFF) .
                            chr($value     & 0xFF),   8  );
        }
    }



    /**
     * Returns a variable-length integer from the current
     * position in the file and advances the file pointer.
     *
     * @return integer
     */
    public function readVInt()
    {
        $nextByte = ord($this->_fread(1));
        $val = $nextByte & 0x7F;

        for ($shift=7; ($nextByte & 0x80) != 0; $shift += 7) {
            $nextByte = ord($this->_fread(1));
            $val |= ($nextByte & 0x7F) << $shift;
        }
        return $val;
    }

    /**
     * Writes a variable-length integer to the end of file.
     *
     * @param integer $value
     */
    public function writeVInt($value)
    {
        settype($value, 'integer');
        while ($value > 0x7F) {
            $this->_fwrite(chr( ($value & 0x7F)|0x80 ));
            $value >>= 7;
        }
        $this->_fwrite(chr($value));
    }


    /**
     * Reads a string from the current position in the file
     * and advances the file pointer.
     *
     * @return string
     */
    public function readString()
    {
        $strlen = $this->readVInt();
        if ($strlen == 0) {
            return '';
        } else {
            /**
             * This implementation supports only Basic Multilingual Plane
             * (BMP) characters (from 0x0000 to 0xFFFF) and doesn't support
             * "supplementary characters" (characters whose code points are
             * greater than 0xFFFF)
             * Java 2 represents these characters as a pair of char (16-bit)
             * values, the first from the high-surrogates range (0xD800-0xDBFF),
             * the second from the low-surrogates range (0xDC00-0xDFFF). Then
             * they are encoded as usual UTF-8 characters in six bytes.
             * Standard UTF-8 representation uses four bytes for supplementary
             * characters.
             */

            $str_val = $this->_fread($strlen);

            for ($count = 0; $count < $strlen; $count++ ) {
                if (( ord($str_val[$count]) & 0xC0 ) == 0xC0) {
                    $addBytes = 1;
                    if (ord($str_val[$count]) & 0x20 ) {
                        $addBytes++;

                        // Never used. Java2 doesn't encode strings in four bytes
                        if (ord($str_val[$count]) & 0x10 ) {
                            $addBytes++;
                        }
                    }
                    $str_val .= $this->_fread($addBytes);
                    $strlen += $addBytes;

                    // Check for null character. Java2 encodes null character
                    // in two bytes.
                    if (ord($str_val[$count])   == 0xC0 &&
                        ord($str_val[$count+1]) == 0x80   ) {
                        $str_val[$count] = 0;
                        $str_val = substr($str_val,0,$count+1)
                                 . substr($str_val,$count+2);
                    }
                    $count += $addBytes;
                }
            }

            return $str_val;
        }
    }

    /**
     * Writes a string to the end of file.
     *
     * @param string $str
     * @throws Zend_Search_Lucene_Exception
     */
    public function writeString($str)
    {
        /**
         * This implementation supports only Basic Multilingual Plane
         * (BMP) characters (from 0x0000 to 0xFFFF) and doesn't support
         * "supplementary characters" (characters whose code points are
         * greater than 0xFFFF)
         * Java 2 represents these characters as a pair of char (16-bit)
         * values, the first from the high-surrogates range (0xD800-0xDBFF),
         * the second from the low-surrogates range (0xDC00-0xDFFF). Then
         * they are encoded as usual UTF-8 characters in six bytes.
         * Standard UTF-8 representation uses four bytes for supplementary
         * characters.
         */

        // convert input to a string before iterating string characters
        settype($str, 'string');

        $chars = $strlen = strlen($str);
        $containNullChars = false;

        for ($count = 0; $count < $strlen; $count++ ) {
            /**
             * String is already in Java 2 representation.
             * We should only calculate actual string length and replace
             * \x00 by \xC0\x80
             */
            if ((ord($str[$count]) & 0xC0) == 0xC0) {
                $addBytes = 1;
                if (ord($str[$count]) & 0x20 ) {
                    $addBytes++;

                    // Never used. Java2 doesn't encode strings in four bytes
                    // and we dont't support non-BMP characters
                    if (ord($str[$count]) & 0x10 ) {
                        $addBytes++;
                    }
                }
                $chars -= $addBytes;

                if (ord($str[$count]) == 0 ) {
                    $containNullChars = true;
                }
                $count += $addBytes;
            }
        }

        if ($chars < 0) {
            throw new Zend_Search_Lucene_Exception('Invalid UTF-8 string');
        }

        $this->writeVInt($chars);
        if ($containNullChars) {
            $this->_fwrite(str_replace($str, "\x00", "\xC0\x80"));
        } else {
            $this->_fwrite($str);
        }
    }


    /**
     * Reads binary data from the current position in the file
     * and advances the file pointer.
     *
     * @return string
     */
    public function readBinary()
    {
        return $this->_fread($this->readVInt());
    }
}
PKpG[���ss)Search/Lucene/Storage/File/Filesystem.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Storage_File */
require_once 'Zend/Search/Lucene/Storage/File.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Storage_File_Filesystem extends Zend_Search_Lucene_Storage_File
{
    /**
     * Resource of the open file
     *
     * @var resource
     */
    protected $_fileHandle;


    /**
     * Class constructor.  Open the file.
     *
     * @param string $filename
     * @param string $mode
     */
    public function __construct($filename, $mode='r+b')
    {
        global $php_errormsg;

        if (strpos($mode, 'w') === false  &&  !is_readable($filename)) {
            // opening for reading non-readable file
            throw new Zend_Search_Lucene_Exception('File \'' . $filename . '\' is not readable.');
        }

        $trackErrors = ini_get('track_errors');
        ini_set('track_errors', '1');

        $this->_fileHandle = @fopen($filename, $mode);

        if ($this->_fileHandle === false) {
            ini_set('track_errors', $trackErrors);
            throw new Zend_Search_Lucene_Exception($php_errormsg);
        }

        ini_set('track_errors', $trackErrors);
    }

    /**
     * Sets the file position indicator and advances the file pointer.
     * The new position, measured in bytes from the beginning of the file,
     * is obtained by adding offset to the position specified by whence,
     * whose values are defined as follows:
     * SEEK_SET - Set position equal to offset bytes.
     * SEEK_CUR - Set position to current location plus offset.
     * SEEK_END - Set position to end-of-file plus offset. (To move to
     * a position before the end-of-file, you need to pass a negative value
     * in offset.)
     * SEEK_CUR is the only supported offset type for compound files
     *
     * Upon success, returns 0; otherwise, returns -1
     *
     * @param integer $offset
     * @param integer $whence
     * @return integer
     */
    public function seek($offset, $whence=SEEK_SET)
    {
        return fseek($this->_fileHandle, $offset, $whence);
    }


    /**
     * Get file position.
     *
     * @return integer
     */
    public function tell()
    {
        return ftell($this->_fileHandle);
    }

    /**
     * Flush output.
     *
     * Returns true on success or false on failure.
     *
     * @return boolean
     */
    public function flush()
    {
        return fflush($this->_fileHandle);
    }

    /**
     * Close File object
     */
    public function close()
    {
        if ($this->_fileHandle !== null ) {
            @fclose($this->_fileHandle);
            $this->_fileHandle = null;
        }
    }

    /**
     * Get the size of the already opened file
     *
     * @return integer
     */
    public function size()
    {
        $position = ftell($this->_fileHandle);
        fseek($this->_fileHandle, 0, SEEK_END);
        $size = ftell($this->_fileHandle);
        fseek($this->_fileHandle,$position);

        return $size;
    }

    /**
     * Read a $length bytes from the file and advance the file pointer.
     *
     * @param integer $length
     * @return string
     */
    protected function _fread($length=1)
    {
        if ($length == 0) {
            return '';
        }

        if ($length < 1024) {
            return fread($this->_fileHandle, $length);
        }

        $data = '';
        while ( $length > 0 && ($nextBlock = fread($this->_fileHandle, $length)) != false ) {
            $data .= $nextBlock;
            $length -= strlen($nextBlock);
        }
        return $data;
    }


    /**
     * Writes $length number of bytes (all, if $length===null) to the end
     * of the file.
     *
     * @param string $data
     * @param integer $length
     */
    protected function _fwrite($data, $length=null)
    {
        if ($length === null ) {
            fwrite($this->_fileHandle, $data);
        } else {
            fwrite($this->_fileHandle, $data, $length);
        }
    }

    /**
     * Lock file
     *
     * Lock type may be a LOCK_SH (shared lock) or a LOCK_EX (exclusive lock)
     *
     * @param integer $lockType
     * @param boolean $nonBlockingLock
     * @return boolean
     */
    public function lock($lockType, $nonBlockingLock = false)
    {
        if ($nonBlockingLock) {
            return flock($this->_fileHandle, $lockType | LOCK_NB);
        } else {
            return flock($this->_fileHandle, $lockType);
        }
    }

    /**
     * Unlock file
     *
     * Returns true on success
     *
     * @return boolean
     */
    public function unlock()
    {
        if ($this->_fileHandle !== null ) {
            return flock($this->_fileHandle, LOCK_UN);
        } else {
            return true;
        }
    }
}

PKpG[w�k1?1?%Search/Lucene/Storage/File/Memory.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Storage_File */
require_once 'Zend/Search/Lucene/Storage/File.php';

/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Storage_File_Memory extends Zend_Search_Lucene_Storage_File
{
    /**
     * FileData
     *
     * @var string
     */
    private $_data;

    /**
     * File Position
     *
     * @var integer
     */
    private $_position = 0;


    /**
     * Object constractor
     *
     * @param string $data
     */
    public function __construct($data)
    {
        $this->_data = $data;
    }

    /**
     * Reads $length number of bytes at the current position in the
     * file and advances the file pointer.
     *
     * @param integer $length
     * @return string
     */
    protected function _fread($length = 1)
    {
        $returnValue = substr($this->_data, $this->_position, $length);
        $this->_position += $length;
        return $returnValue;
    }


    /**
     * Sets the file position indicator and advances the file pointer.
     * The new position, measured in bytes from the beginning of the file,
     * is obtained by adding offset to the position specified by whence,
     * whose values are defined as follows:
     * SEEK_SET - Set position equal to offset bytes.
     * SEEK_CUR - Set position to current location plus offset.
     * SEEK_END - Set position to end-of-file plus offset. (To move to
     * a position before the end-of-file, you need to pass a negative value
     * in offset.)
     * Upon success, returns 0; otherwise, returns -1
     *
     * @param integer $offset
     * @param integer $whence
     * @return integer
     */
    public function seek($offset, $whence=SEEK_SET)
    {
        switch ($whence) {
            case SEEK_SET:
                $this->_position = $offset;
                break;

            case SEEK_CUR:
                $this->_position += $offset;
                break;

            case SEEK_END:
                $this->_position = strlen($this->_data);
                $this->_position += $offset;
                break;

            default:
                break;
        }
    }

    /**
     * Get file position.
     *
     * @return integer
     */
    public function tell()
    {
        return $this->_position;
    }

    /**
     * Flush output.
     *
     * Returns true on success or false on failure.
     *
     * @return boolean
     */
    public function flush()
    {
        // Do nothing

        return true;
    }

    /**
     * Writes $length number of bytes (all, if $length===null) to the end
     * of the file.
     *
     * @param string $data
     * @param integer $length
     */
    protected function _fwrite($data, $length=null)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        if ($length !== null) {
            $this->_data .= substr($data, 0, $length);
        } else {
            $this->_data .= $data;
        }

        $this->_position = strlen($this->_data);
    }

    /**
     * Lock file
     *
     * Lock type may be a LOCK_SH (shared lock) or a LOCK_EX (exclusive lock)
     *
     * @param integer $lockType
     * @return boolean
     */
    public function lock($lockType, $nonBlockinLock = false)
    {
        // Memory files can't be shared
        // do nothing

        return true;
    }

    /**
     * Unlock file
     */
    public function unlock()
    {
        // Memory files can't be shared
        // do nothing
    }

    /**
     * Reads a byte from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     */
    public function readByte()
    {
        return ord($this->_data[$this->_position++]);
    }

    /**
     * Writes a byte to the end of the file.
     *
     * @param integer $byte
     */
    public function writeByte($byte)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        $this->_data .= chr($byte);
        $this->_position = strlen($this->_data);

        return 1;
    }

    /**
     * Read num bytes from the current position in the file
     * and advances the file pointer.
     *
     * @param integer $num
     * @return string
     */
    public function readBytes($num)
    {
        $returnValue = substr($this->_data, $this->_position, $num);
        $this->_position += $num;

        return $returnValue;
    }

    /**
     * Writes num bytes of data (all, if $num===null) to the end
     * of the string.
     *
     * @param string $data
     * @param integer $num
     */
    public function writeBytes($data, $num=null)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        if ($num !== null) {
            $this->_data .= substr($data, 0, $num);
        } else {
            $this->_data .= $data;
        }

        $this->_position = strlen($this->_data);
    }


    /**
     * Reads an integer from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     */
    public function readInt()
    {
        $str = substr($this->_data, $this->_position, 4);
        $this->_position += 4;

        return  ord($str[0]) << 24 |
                ord($str[1]) << 16 |
                ord($str[2]) << 8  |
                ord($str[3]);
    }


    /**
     * Writes an integer to the end of file.
     *
     * @param integer $value
     */
    public function writeInt($value)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        settype($value, 'integer');
        $this->_data .= chr($value>>24 & 0xFF) .
                        chr($value>>16 & 0xFF) .
                        chr($value>>8  & 0xFF) .
                        chr($value     & 0xFF);

        $this->_position = strlen($this->_data);
    }


    /**
     * Returns a long integer from the current position in the file
     * and advances the file pointer.
     *
     * @return integer
     * @throws Zend_Search_Lucene_Exception
     */
    public function readLong()
    {
        $str = substr($this->_data, $this->_position, 8);
        $this->_position += 8;

        /**
         * Check, that we work in 64-bit mode.
         * fseek() uses long for offset. Thus, largest index segment file size in 32bit mode is 2Gb
         */
        if (PHP_INT_SIZE > 4) {
            return  ord($str[0]) << 56  |
                    ord($str[1]) << 48  |
                    ord($str[2]) << 40  |
                    ord($str[3]) << 32  |
                    ord($str[4]) << 24  |
                    ord($str[5]) << 16  |
                    ord($str[6]) << 8   |
                    ord($str[7]);
        } else {
            if ((ord($str[0])          != 0) ||
                (ord($str[1])          != 0) ||
                (ord($str[2])          != 0) ||
                (ord($str[3])          != 0) ||
                ((ord($str[0]) & 0x80) != 0)) {
                     throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
                 }

            return  ord($str[4]) << 24  |
                    ord($str[5]) << 16  |
                    ord($str[6]) << 8   |
                    ord($str[7]);
        }
    }

    /**
     * Writes long integer to the end of file
     *
     * @param integer $value
     * @throws Zend_Search_Lucene_Exception
     */
    public function writeLong($value)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        /**
         * Check, that we work in 64-bit mode.
         * fseek() and ftell() use long for offset. Thus, largest index segment file size in 32bit mode is 2Gb
         */
        if (PHP_INT_SIZE > 4) {
            settype($value, 'integer');
            $this->_data .= chr($value>>56 & 0xFF) .
                            chr($value>>48 & 0xFF) .
                            chr($value>>40 & 0xFF) .
                            chr($value>>32 & 0xFF) .
                            chr($value>>24 & 0xFF) .
                            chr($value>>16 & 0xFF) .
                            chr($value>>8  & 0xFF) .
                            chr($value     & 0xFF);
        } else {
            if ($value > 0x7FFFFFFF) {
                throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
            }

            $this->_data .= chr(0) . chr(0) . chr(0) . chr(0) .
                            chr($value>>24 & 0xFF) .
                            chr($value>>16 & 0xFF) .
                            chr($value>>8  & 0xFF) .
                            chr($value     & 0xFF);
        }

        $this->_position = strlen($this->_data);
    }



    /**
     * Returns a variable-length integer from the current
     * position in the file and advances the file pointer.
     *
     * @return integer
     */
    public function readVInt()
    {
        $nextByte = ord($this->_data[$this->_position++]);
        $val = $nextByte & 0x7F;

        for ($shift=7; ($nextByte & 0x80) != 0; $shift += 7) {
            $nextByte = ord($this->_data[$this->_position++]);
            $val |= ($nextByte & 0x7F) << $shift;
        }
        return $val;
    }

    /**
     * Writes a variable-length integer to the end of file.
     *
     * @param integer $value
     */
    public function writeVInt($value)
    {
        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        settype($value, 'integer');
        while ($value > 0x7F) {
            $this->_data .= chr( ($value & 0x7F)|0x80 );
            $value >>= 7;
        }
        $this->_data .= chr($value);

        $this->_position = strlen($this->_data);
    }


    /**
     * Reads a string from the current position in the file
     * and advances the file pointer.
     *
     * @return string
     */
    public function readString()
    {
        $strlen = $this->readVInt();
        if ($strlen == 0) {
            return '';
        } else {
            /**
             * This implementation supports only Basic Multilingual Plane
             * (BMP) characters (from 0x0000 to 0xFFFF) and doesn't support
             * "supplementary characters" (characters whose code points are
             * greater than 0xFFFF)
             * Java 2 represents these characters as a pair of char (16-bit)
             * values, the first from the high-surrogates range (0xD800-0xDBFF),
             * the second from the low-surrogates range (0xDC00-0xDFFF). Then
             * they are encoded as usual UTF-8 characters in six bytes.
             * Standard UTF-8 representation uses four bytes for supplementary
             * characters.
             */

            $str_val = substr($this->_data, $this->_position, $strlen);
            $this->_position += $strlen;

            for ($count = 0; $count < $strlen; $count++ ) {
                if (( ord($str_val[$count]) & 0xC0 ) == 0xC0) {
                    $addBytes = 1;
                    if (ord($str_val[$count]) & 0x20 ) {
                        $addBytes++;

                        // Never used. Java2 doesn't encode strings in four bytes
                        if (ord($str_val[$count]) & 0x10 ) {
                            $addBytes++;
                        }
                    }
                    $str_val .= substr($this->_data, $this->_position, $addBytes);
                    $this->_position += $addBytes;
                    $strlen          += $addBytes;

                    // Check for null character. Java2 encodes null character
                    // in two bytes.
                    if (ord($str_val[$count])   == 0xC0 &&
                        ord($str_val[$count+1]) == 0x80   ) {
                        $str_val[$count] = 0;
                        $str_val = substr($str_val,0,$count+1)
                                 . substr($str_val,$count+2);
                    }
                    $count += $addBytes;
                }
            }

            return $str_val;
        }
    }

    /**
     * Writes a string to the end of file.
     *
     * @param string $str
     * @throws Zend_Search_Lucene_Exception
     */
    public function writeString($str)
    {
        /**
         * This implementation supports only Basic Multilingual Plane
         * (BMP) characters (from 0x0000 to 0xFFFF) and doesn't support
         * "supplementary characters" (characters whose code points are
         * greater than 0xFFFF)
         * Java 2 represents these characters as a pair of char (16-bit)
         * values, the first from the high-surrogates range (0xD800-0xDBFF),
         * the second from the low-surrogates range (0xDC00-0xDFFF). Then
         * they are encoded as usual UTF-8 characters in six bytes.
         * Standard UTF-8 representation uses four bytes for supplementary
         * characters.
         */

        // We do not need to check if file position points to the end of "file".
        // Only append operation is supported now

        // convert input to a string before iterating string characters
        settype($str, 'string');

        $chars = $strlen = strlen($str);
        $containNullChars = false;

        for ($count = 0; $count < $strlen; $count++ ) {
            /**
             * String is already in Java 2 representation.
             * We should only calculate actual string length and replace
             * \x00 by \xC0\x80
             */
            if ((ord($str[$count]) & 0xC0) == 0xC0) {
                $addBytes = 1;
                if (ord($str[$count]) & 0x20 ) {
                    $addBytes++;

                    // Never used. Java2 doesn't encode strings in four bytes
                    // and we dont't support non-BMP characters
                    if (ord($str[$count]) & 0x10 ) {
                        $addBytes++;
                    }
                }
                $chars -= $addBytes;

                if (ord($str[$count]) == 0 ) {
                    $containNullChars = true;
                }
                $count += $addBytes;
            }
        }

        if ($chars < 0) {
            throw new Zend_Search_Lucene_Exception('Invalid UTF-8 string');
        }

        $this->writeVInt($chars);
        if ($containNullChars) {
            $this->_data .= str_replace($str, "\x00", "\xC0\x80");

        } else {
            $this->_data .= $str;
        }

        $this->_position = strlen($this->_data);
    }


    /**
     * Reads binary data from the current position in the file
     * and advances the file pointer.
     *
     * @return string
     */
    public function readBinary()
    {
        $length = $this->readVInt();
        $returnValue = substr($this->_data, $this->_position, $length);
        $this->_position += $length;
        return $returnValue;
    }
}

PKpG[+�}��'�'.Search/Lucene/Storage/Directory/Filesystem.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Storage_Directory */
require_once 'Zend/Search/Lucene/Storage/Directory.php';

/** Zend_Search_Lucene_Storage_File_Filesystem */
require_once 'Zend/Search/Lucene/Storage/File/Filesystem.php';


/**
 * FileSystem implementation of Directory abstraction.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Storage_Directory_Filesystem extends Zend_Search_Lucene_Storage_Directory
{
    /**
     * Filesystem path to the directory
     *
     * @var string
     */
    protected $_dirPath = null;

    /**
     * Cache for Zend_Search_Lucene_Storage_File_Filesystem objects
     * Array: filename => Zend_Search_Lucene_Storage_File object
     *
     * @var array
     * @throws Zend_Search_Lucene_Exception
     */
    protected $_fileHandlers;

    /**
     * Default file permissions
     *
     * @var integer
     */
    protected static $_defaultFilePermissions = 0666;


    /**
     * Get default file permissions
     *
     * @return integer
     */
    public static function getDefaultFilePermissions()
    {
        return self::$_defaultFilePermissions;
    }

    /**
     * Set default file permissions
     *
     * @param integer $mode
     */
    public static function setDefaultFilePermissions($mode)
    {
        self::$_defaultFilePermissions = $mode;
    }


    /**
     * Utility function to recursive directory creation
     *
     * @param string $dir
     * @param integer $mode
     * @param boolean $recursive
     * @return boolean
     */

    public static function mkdirs($dir, $mode = 0777, $recursive = true)
    {
        if (is_null($dir) || $dir === '') {
            return false;
        }
        if (is_dir($dir) || $dir === '/') {
            return true;
        }
        if (self::mkdirs(dirname($dir), $mode, $recursive)) {
            return mkdir($dir, $mode);
        }
        return false;
    }


    /**
     * Object constructor
     * Checks if $path is a directory or tries to create it.
     *
     * @param string $path
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct($path)
    {
        if (!is_dir($path)) {
            if (file_exists($path)) {
                require_once 'Zend/Search/Lucene/Exception.php';
                throw new Zend_Search_Lucene_Exception('Path exists, but it\'s not a directory');
            } else {
                if (!self::mkdirs($path)) {
                    require_once 'Zend/Search/Lucene/Exception.php';
                    throw new Zend_Search_Lucene_Exception("Can't create directory '$path'.");
                }
            }
        }
        $this->_dirPath = $path;
        $this->_fileHandlers = array();
    }


    /**
     * Closes the store.
     *
     * @return void
     */
    public function close()
    {
        foreach ($this->_fileHandlers as $fileObject) {
            $fileObject->close();
        }

        $this->_fileHandlers = array();
    }


    /**
     * Returns an array of strings, one for each file in the directory.
     *
     * @return array
     */
    public function fileList()
    {
        $result = array();

        $dirContent = opendir( $this->_dirPath );
        while (($file = readdir($dirContent)) !== false) {
            if (($file == '..')||($file == '.'))   continue;

            if( !is_dir($this->_dirPath . '/' . $file) ) {
                $result[] = $file;
            }
        }
        closedir($dirContent);

        return $result;
    }

    /**
     * Creates a new, empty file in the directory with the given $filename.
     *
     * @param string $filename
     * @return Zend_Search_Lucene_Storage_File
     * @throws Zend_Search_Lucene_Exception
     */
    public function createFile($filename)
    {
        if (isset($this->_fileHandlers[$filename])) {
            $this->_fileHandlers[$filename]->close();
        }
        unset($this->_fileHandlers[$filename]);
        $this->_fileHandlers[$filename] = new Zend_Search_Lucene_Storage_File_Filesystem($this->_dirPath . '/' . $filename, 'w+b');

        // Set file permissions, but don't care about any possible failures, since file may be already
        // created by anther user which has to care about right permissions
        @chmod($this->_dirPath . '/' . $filename, self::$_defaultFilePermissions);

        return $this->_fileHandlers[$filename];
    }


    /**
     * Removes an existing $filename in the directory.
     *
     * @param string $filename
     * @return void
     * @throws Zend_Search_Lucene_Exception
     */
    public function deleteFile($filename)
    {
        if (isset($this->_fileHandlers[$filename])) {
            $this->_fileHandlers[$filename]->close();
        }
        unset($this->_fileHandlers[$filename]);

        global $php_errormsg;
        $trackErrors = ini_get('track_errors'); ini_set('track_errors', '1');
        if (!@unlink($this->_dirPath . '/' . $filename)) {
            ini_set('track_errors', $trackErrors);
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('Can\'t delete file: ' . $php_errormsg);
        }
        ini_set('track_errors', $trackErrors);
    }

    /**
     * Purge file if it's cached by directory object
     *
     * Method is used to prevent 'too many open files' error
     *
     * @param string $filename
     * @return void
     */
    public function purgeFile($filename)
    {
        if (isset($this->_fileHandlers[$filename])) {
            $this->_fileHandlers[$filename]->close();
        }
        unset($this->_fileHandlers[$filename]);
    }


    /**
     * Returns true if a file with the given $filename exists.
     *
     * @param string $filename
     * @return boolean
     */
    public function fileExists($filename)
    {
        return isset($this->_fileHandlers[$filename]) ||
               file_exists($this->_dirPath . '/' . $filename);
    }


    /**
     * Returns the length of a $filename in the directory.
     *
     * @param string $filename
     * @return integer
     */
    public function fileLength($filename)
    {
        if (isset( $this->_fileHandlers[$filename] )) {
            return $this->_fileHandlers[$filename]->size();
        }
        return filesize($this->_dirPath .'/'. $filename);
    }


    /**
     * Returns the UNIX timestamp $filename was last modified.
     *
     * @param string $filename
     * @return integer
     */
    public function fileModified($filename)
    {
        return filemtime($this->_dirPath .'/'. $filename);
    }


    /**
     * Renames an existing file in the directory.
     *
     * @param string $from
     * @param string $to
     * @return void
     * @throws Zend_Search_Lucene_Exception
     */
    public function renameFile($from, $to)
    {
        global $php_errormsg;

        if (isset($this->_fileHandlers[$from])) {
            $this->_fileHandlers[$from]->close();
        }
        unset($this->_fileHandlers[$from]);

        if (isset($this->_fileHandlers[$to])) {
            $this->_fileHandlers[$to]->close();
        }
        unset($this->_fileHandlers[$to]);

        if (file_exists($this->_dirPath . '/' . $to)) {
            if (!unlink($this->_dirPath . '/' . $to)) {
                require_once 'Zend/Search/Lucene/Exception.php';
                throw new Zend_Search_Lucene_Exception('Delete operation failed');
            }
        }

        $trackErrors = ini_get('track_errors');
        ini_set('track_errors', '1');

        $success = @rename($this->_dirPath . '/' . $from, $this->_dirPath . '/' . $to);
        if (!$success) {
            ini_set('track_errors', $trackErrors);
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception($php_errormsg);
        }

        ini_set('track_errors', $trackErrors);

        return $success;
    }


    /**
     * Sets the modified time of $filename to now.
     *
     * @param string $filename
     * @return void
     */
    public function touchFile($filename)
    {
        return touch($this->_dirPath .'/'. $filename);
    }


    /**
     * Returns a Zend_Search_Lucene_Storage_File object for a given $filename in the directory.
     *
     * If $shareHandler option is true, then file handler can be shared between File Object
     * requests. It speed-ups performance, but makes problems with file position.
     * Shared handler are good for short atomic requests.
     * Non-shared handlers are useful for stream file reading (especial for compound files).
     *
     * @param string $filename
     * @param boolean $shareHandler
     * @return Zend_Search_Lucene_Storage_File
     */
    public function getFileObject($filename, $shareHandler = true)
    {
        $fullFilename = $this->_dirPath . '/' . $filename;

        if (!$shareHandler) {
            return new Zend_Search_Lucene_Storage_File_Filesystem($fullFilename);
        }

        if (isset( $this->_fileHandlers[$filename] )) {
            $this->_fileHandlers[$filename]->seek(0);
            return $this->_fileHandlers[$filename];
        }

        $this->_fileHandlers[$filename] = new Zend_Search_Lucene_Storage_File_Filesystem($fullFilename);
        return $this->_fileHandlers[$filename];
    }
}

PKpG[��((Search/Lucene/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Framework base exception
 */
require_once 'Zend/Search/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Exception extends Zend_Search_Exception
{}

PKpG[ޥ\[��Search/Lucene/PriorityQueue.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract Priority Queue
 *
 * It implements a priority queue.
 * Please go to "Data Structures and Algorithms",
 * Aho, Hopcroft, and Ullman, Addison-Wesley, 1983 (corrected 1987 edition),
 * for implementation details.
 *
 * It provides O(log(N)) time of put/pop operations, where N is a size of queue
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_PriorityQueue
{
    /**
     * Queue heap
     *
     * Heap contains balanced partial ordered binary tree represented in array
     * [0] - top of the tree
     * [1] - first child of [0]
     * [2] - second child of [0]
     * ...
     * [2*n + 1] - first child of [n]
     * [2*n + 2] - second child of [n]
     *
     * @var array
     */
    private $_heap = array();


    /**
     * Add element to the queue
     *
     * O(log(N)) time
     *
     * @param mixed $element
     */
    public function put($element)
    {
        $nodeId   = count($this->_heap);
        $parentId = ($nodeId-1) >> 1;   // floor( ($nodeId-1)/2 )

        while ($nodeId != 0  &&  $this->_less($element, $this->_heap[$parentId])) {
            // Move parent node down
            $this->_heap[$nodeId] = $this->_heap[$parentId];

            // Move pointer to the next level of tree
            $nodeId   = $parentId;
            $parentId = ($nodeId-1) >> 1;   // floor( ($nodeId-1)/2 )
        }

        // Put new node into the tree
        $this->_heap[$nodeId] = $element;
    }


    /**
     * Return least element of the queue
     *
     * Constant time
     *
     * @return mixed
     */
    public function top()
    {
        if (count($this->_heap) == 0) {
            return null;
        }

        return $this->_heap[0];
    }


    /**
     * Removes and return least element of the queue
     *
     * O(log(N)) time
     *
     * @return mixed
     */
    public function pop()
    {
        if (count($this->_heap) == 0) {
            return null;
        }

        $top = $this->_heap[0];
        $lastId = count($this->_heap) - 1;

        /**
         * Find appropriate position for last node
         */
        $nodeId  = 0;     // Start from a top
        $childId = 1;     // First child

        // Choose smaller child
        if ($lastId > 2  &&  $this->_less($this->_heap[2], $this->_heap[1])) {
            $childId = 2;
        }

        while ($childId < $lastId  &&
               $this->_less($this->_heap[$childId], $this->_heap[$lastId])
          ) {
            // Move child node up
            $this->_heap[$nodeId] = $this->_heap[$childId];

            $nodeId  = $childId;               // Go down
            $childId = ($nodeId << 1) + 1;     // First child

            // Choose smaller child
            if (($childId+1) < $lastId  &&
                $this->_less($this->_heap[$childId+1], $this->_heap[$childId])
               ) {
                $childId++;
            }
        }

        // Move last element to the new position
        $this->_heap[$nodeId] = $this->_heap[$lastId];
        unset($this->_heap[$lastId]);

        return $top;
    }


    /**
     * Clear queue
     */
    public function clear()
    {
        $this->_heap = array();
    }


    /**
     * Compare elements
     *
     * Returns true, if $el1 is less than $el2; else otherwise
     *
     * @param mixed $el1
     * @param mixed $el2
     * @return boolean
     */
    abstract protected function _less($el1, $el2);
}

PKpG[���X0X0Search/Lucene/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Search_Lucene_Interface
{
    /**
     * Get current generation number
     *
     * Returns generation number
     * 0 means pre-2.1 index format
     * -1 means there are no segments files.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @return integer
     * @throws Zend_Search_Lucene_Exception
     */
    public static function getActualGeneration(Zend_Search_Lucene_Storage_Directory $directory);

    /**
     * Get segments file name
     *
     * @param integer $generation
     * @return string
     */
    public static function getSegmentFileName($generation);

    /**
     * Get index format version
     *
     * @return integer
     */
    public function getFormatVersion();

    /**
     * Set index format version.
     * Index is converted to this format at the nearest upfdate time
     *
     * @param int $formatVersion
     * @throws Zend_Search_Lucene_Exception
     */
    public function setFormatVersion($formatVersion);

    /**
     * Returns the Zend_Search_Lucene_Storage_Directory instance for this index.
     *
     * @return Zend_Search_Lucene_Storage_Directory
     */
    public function getDirectory();

    /**
     * Returns the total number of documents in this index (including deleted documents).
     *
     * @return integer
     */
    public function count();

    /**
     * Returns one greater than the largest possible document number.
     * This may be used to, e.g., determine how big to allocate a structure which will have
     * an element for every document number in an index.
     *
     * @return integer
     */
    public function maxDoc();

    /**
     * Returns the total number of non-deleted documents in this index.
     *
     * @return integer
     */
    public function numDocs();

    /**
     * Checks, that document is deleted
     *
     * @param integer $id
     * @return boolean
     * @throws Zend_Search_Lucene_Exception    Exception is thrown if $id is out of the range
     */
    public function isDeleted($id);

    /**
     * Set default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * Default value is null
     *
     * @param string $fieldName
     */
    public static function setDefaultSearchField($fieldName);

    /**
     * Get default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * @return string
     */
    public static function getDefaultSearchField();

    /**
     * Set result set limit.
     *
     * 0 (default) means no limit
     *
     * @param integer $limit
     */
    public static function setResultSetLimit($limit);

    /**
     * Set result set limit.
     *
     * 0 means no limit
     *
     * @return integer
     */
    public static function getResultSetLimit();

    /**
     * Retrieve index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMaxBufferedDocs();

    /**
     * Set index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @param integer $maxBufferedDocs
     */
    public function setMaxBufferedDocs($maxBufferedDocs);

    /**
     * Retrieve index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @return integer
     */
    public function getMaxMergeDocs();

    /**
     * Set index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @param integer $maxMergeDocs
     */
    public function setMaxMergeDocs($maxMergeDocs);

    /**
     * Retrieve index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMergeFactor();

    /**
     * Set index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @param integer $maxMergeDocs
     */
    public function setMergeFactor($mergeFactor);

    /**
     * Performs a query against the index and returns an array
     * of Zend_Search_Lucene_Search_QueryHit objects.
     * Input is a string or Zend_Search_Lucene_Search_Query.
     *
     * @param mixed $query
     * @return array Zend_Search_Lucene_Search_QueryHit
     * @throws Zend_Search_Lucene_Exception
     */
    public function find($query);

    /**
     * Returns a list of all unique field names that exist in this index.
     *
     * @param boolean $indexed
     * @return array
     */
    public function getFieldNames($indexed = false);

    /**
     * Returns a Zend_Search_Lucene_Document object for the document
     * number $id in this index.
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @return Zend_Search_Lucene_Document
     */
    public function getDocument($id);

    /**
     * Returns true if index contain documents with specified term.
     *
     * Is used for query optimization.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return boolean
     */
    public function hasTerm(Zend_Search_Lucene_Index_Term $term);

    /**
     * Returns IDs of all the documents containing term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termDocs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null);

    /**
     * Returns documents filter for all documents containing term.
     *
     * It performs the same operation as termDocs, but return result as
     * Zend_Search_Lucene_Index_DocsFilter object
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return Zend_Search_Lucene_Index_DocsFilter
     */
    public function termDocsFilter(Zend_Search_Lucene_Index_Term $term, $docsFilter = null);

    /**
     * Returns an array of all term freqs.
     * Return array structure: array( docId => freq, ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return integer
     */
    public function termFreqs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null);

    /**
     * Returns an array of all term positions in the documents.
     * Return array structure: array( docId => array( pos1, pos2, ...), ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termPositions(Zend_Search_Lucene_Index_Term $term, $docsFilter = null);

    /**
     * Returns the number of documents in this index containing the $term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return integer
     */
    public function docFreq(Zend_Search_Lucene_Index_Term $term);

    /**
     * Retrive similarity used by index reader
     *
     * @return Zend_Search_Lucene_Search_Similarity
     */
    public function getSimilarity();

    /**
     * Returns a normalization factor for "field, document" pair.
     *
     * @param integer $id
     * @param string $fieldName
     * @return float
     */
    public function norm($id, $fieldName);

    /**
     * Returns true if any documents have been deleted from this index.
     *
     * @return boolean
     */
    public function hasDeletions();

    /**
     * Deletes a document from the index.
     * $id is an internal document id
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @throws Zend_Search_Lucene_Exception
     */
    public function delete($id);

    /**
     * Adds a document to this index.
     *
     * @param Zend_Search_Lucene_Document $document
     */
    public function addDocument(Zend_Search_Lucene_Document $document);

    /**
     * Commit changes resulting from delete() or undeleteAll() operations.
     */
    public function commit();

    /**
     * Optimize index.
     *
     * Merges all segments into one
     */
    public function optimize();

    /**
     * Returns an array of all terms in this index.
     *
     * @return array
     */
    public function terms();


    /**
     * Reset terms stream.
     */
    public function resetTermsStream();

    /**
     * Skip terms stream up to specified term preffix.
     *
     * Prefix contains fully specified field info and portion of searched term
     *
     * @param Zend_Search_Lucene_Index_Term $prefix
     */
    public function skipTo(Zend_Search_Lucene_Index_Term $prefix);

    /**
     * Scans terms dictionary and returns next term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function nextTerm();

    /**
     * Returns term in current position
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function currentTerm();

    /**
     * Close terms stream
     *
     * Should be used for resources clean up if stream is not read up to the end
     */
    public function closeTermsStream();


    /**
     * Undeletes all documents currently marked as deleted in this index.
     */
    public function undeleteAll();


    /**
     * Add reference to the index object
     *
     * @internal
     */
    public function addReference();

    /**
     * Remove reference from the index object
     *
     * When reference count becomes zero, index is closed and resources are cleaned up
     *
     * @internal
     */
    public function removeReference();
}
PKpG[g�T�6363Search/Lucene/FSM.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_FSMAction */
require_once 'Zend/Search/Lucene/FSMAction.php';

/** Zend_Search_Exception */
require_once 'Zend/Search/Exception.php';


/**
 * Abstract Finite State Machine
 *
 * Take a look on Wikipedia state machine description: http://en.wikipedia.org/wiki/Finite_state_machine
 *
 * Any type of Transducers (Moore machine or Mealy machine) also may be implemented by using this abstract FSM.
 * process() methods invokes a specified actions which may construct FSM output.
 * Actions may be also used to signal, that we have reached Accept State
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Search_Lucene_FSM
{
    /**
     * Machine States alphabet
     *
     * @var array
     */
    private $_states = array();

    /**
     * Current state
     *
     * @var integer|string
     */
    private $_currentState = null;

    /**
     * Input alphabet
     *
     * @var array
     */
    private $_inputAphabet = array();

    /**
     * State transition table
     *
     * [sourceState][input] => targetState
     *
     * @var array
     */
    private $_rules = array();

    /**
     * List of entry actions
     * Each action executes when entering the state
     *
     * [state] => action
     *
     * @var array
     */
    private $_entryActions =  array();

    /**
     * List of exit actions
     * Each action executes when exiting the state
     *
     * [state] => action
     *
     * @var array
     */
    private $_exitActions =  array();

    /**
     * List of input actions
     * Each action executes when entering the state
     *
     * [state][input] => action
     *
     * @var array
     */
    private $_inputActions =  array();

    /**
     * List of input actions
     * Each action executes when entering the state
     *
     * [state1][state2] => action
     *
     * @var array
     */
    private $_transitionActions =  array();

    /**
     * Finite State machine constructor
     *
     * $states is an array of integers or strings with a list of possible machine states
     * constructor treats fist list element as a sturt state (assignes it to $_current state).
     * It may be reassigned by setState() call.
     * States list may be empty and can be extended later by addState() or addStates() calls.
     *
     * $inputAphabet is the same as $states, but represents input alphabet
     * it also may be extended later by addInputSymbols() or addInputSymbol() calls.
     *
     * $rules parameter describes FSM transitions and has a structure:
     * array( array(sourseState, input, targetState[, inputAction]),
     *        array(sourseState, input, targetState[, inputAction]),
     *        array(sourseState, input, targetState[, inputAction]),
     *        ...
     *      )
     * Rules also can be added later by addRules() and addRule() calls.
     *
     * FSM actions are very flexible and may be defined by addEntryAction(), addExitAction(),
     * addInputAction() and addTransitionAction() calls.
     *
     * @param array $states
     * @param array $inputAphabet
     * @param array $rules
     */
    public function __construct($states = array(), $inputAphabet = array(), $rules = array())
    {
        $this->addStates($states);
        $this->addInputSymbols($inputAphabet);
        $this->addRules($rules);
    }

    /**
     * Add states to the state machine
     *
     * @param array $states
     */
    public function addStates($states)
    {
        foreach ($states as $state) {
            $this->addState($state);
        }
    }

    /**
     * Add state to the state machine
     *
     * @param integer|string $state
     */
    public function addState($state)
    {
        $this->_states[$state] = $state;

        if ($this->_currentState === null) {
            $this->_currentState = $state;
        }
    }

    /**
     * Set FSM state.
     * No any action is invoked
     *
     * @param integer|string $state
     * @throws Zend_Search_Exception
     */
    public function setState($state)
    {
        if (!isset($this->_states[$state])) {
            throw new Zend_Search_Exception('State \'' . $state . '\' is not on of the possible FSM states.');
        }

        $this->_currentState = $state;
    }

    /**
     * Get FSM state.
     *
     * @return integer|string $state|null
     */
    public function getState()
    {
        return $this->_currentState;
    }

    /**
     * Add symbols to the input alphabet
     *
     * @param array $inputAphabet
     */
    public function addInputSymbols($inputAphabet)
    {
        foreach ($inputAphabet as $inputSymbol) {
            $this->addInputSymbol($inputSymbol);
        }
    }

    /**
     * Add symbol to the input alphabet
     *
     * @param integer|string $inputSymbol
     */
    public function addInputSymbol($inputSymbol)
    {
        $this->_inputAphabet[$inputSymbol] = $inputSymbol;
    }


    /**
     * Add transition rules
     *
     * array structure:
     * array( array(sourseState, input, targetState[, inputAction]),
     *        array(sourseState, input, targetState[, inputAction]),
     *        array(sourseState, input, targetState[, inputAction]),
     *        ...
     *      )
     *
     * @param array $rules
     */
    public function addRules($rules)
    {
        foreach ($rules as $rule) {
            $this->addrule($rule[0], $rule[1], $rule[2], isset($rule[3])?$rule[3]:null);
        }
    }

    /**
     * Add symbol to the input alphabet
     *
     * @param integer|string $sourceState
     * @param integer|string $input
     * @param integer|string $targetState
     * @param Zend_Search_Lucene_FSMAction|null $inputAction
     * @throws Zend_Search_Exception
     */
    public function addRule($sourceState, $input, $targetState, $inputAction = null)
    {
        if (!isset($this->_states[$sourceState])) {
            throw new Zend_Search_Exception('Undefined source state (' . $sourceState . ').');
        }
        if (!isset($this->_states[$targetState])) {
            throw new Zend_Search_Exception('Undefined target state (' . $targetState . ').');
        }
        if (!isset($this->_inputAphabet[$input])) {
            throw new Zend_Search_Exception('Undefined input symbol (' . $input . ').');
        }

        if (!isset($this->_rules[$sourceState])) {
            $this->_rules[$sourceState] = array();
        }
        if (isset($this->_rules[$sourceState][$input])) {
            throw new Zend_Search_Exception('Rule for {state,input} pair (' . $sourceState . ', '. $input . ') is already defined.');
        }

        $this->_rules[$sourceState][$input] = $targetState;


        if ($inputAction !== null) {
            $this->addInputAction($sourceState, $input, $inputAction);
        }
    }


    /**
     * Add state entry action.
     * Several entry actions are allowed.
     * Action execution order is defined by addEntryAction() calls
     *
     * @param integer|string $state
     * @param Zend_Search_Lucene_FSMAction $action
     */
    public function addEntryAction($state, Zend_Search_Lucene_FSMAction $action)
    {
        if (!isset($this->_states[$state])) {
            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
        }

        if (!isset($this->_entryActions[$state])) {
            $this->_entryActions[$state] = array();
        }

        $this->_entryActions[$state][] = $action;
    }

    /**
     * Add state exit action.
     * Several exit actions are allowed.
     * Action execution order is defined by addEntryAction() calls
     *
     * @param integer|string $state
     * @param Zend_Search_Lucene_FSMAction $action
     */
    public function addExitAction($state, Zend_Search_Lucene_FSMAction $action)
    {
        if (!isset($this->_states[$state])) {
            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
        }

        if (!isset($this->_exitActions[$state])) {
            $this->_exitActions[$state] = array();
        }

        $this->_exitActions[$state][] = $action;
    }

    /**
     * Add input action (defined by {state, input} pair).
     * Several input actions are allowed.
     * Action execution order is defined by addInputAction() calls
     *
     * @param integer|string $state
     * @param integer|string $input
     * @param Zend_Search_Lucene_FSMAction $action
     */
    public function addInputAction($state, $inputSymbol, Zend_Search_Lucene_FSMAction $action)
    {
        if (!isset($this->_states[$state])) {
            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
        }
        if (!isset($this->_inputAphabet[$inputSymbol])) {
            throw new Zend_Search_Exception('Undefined input symbol (' . $inputSymbol. ').');
        }

        if (!isset($this->_inputActions[$state])) {
            $this->_inputActions[$state] = array();
        }
        if (!isset($this->_inputActions[$state][$inputSymbol])) {
            $this->_inputActions[$state][$inputSymbol] = array();
        }

        $this->_inputActions[$state][$inputSymbol][] = $action;
    }

    /**
     * Add transition action (defined by {state, input} pair).
     * Several transition actions are allowed.
     * Action execution order is defined by addTransitionAction() calls
     *
     * @param integer|string $sourceState
     * @param integer|string $targetState
     * @param Zend_Search_Lucene_FSMAction $action
     */
    public function addTransitionAction($sourceState, $targetState, Zend_Search_Lucene_FSMAction $action)
    {
        if (!isset($this->_states[$sourceState])) {
            throw new Zend_Search_Exception('Undefined source state (' . $sourceState. ').');
        }
        if (!isset($this->_states[$targetState])) {
            throw new Zend_Search_Exception('Undefined source state (' . $targetState. ').');
        }

        if (!isset($this->_transitionActions[$sourceState])) {
            $this->_transitionActions[$sourceState] = array();
        }
        if (!isset($this->_transitionActions[$sourceState][$targetState])) {
            $this->_transitionActions[$sourceState][$targetState] = array();
        }

        $this->_transitionActions[$sourceState][$targetState][] = $action;
    }


    /**
     * Process an input
     *
     * @param mixed $input
     * @throws Zend_Search_Exception
     */
    public function process($input)
    {
        if (!isset($this->_rules[$this->_currentState])) {
            throw new Zend_Search_Exception('There is no any rule for current state (' . $this->_currentState . ').');
        }
        if (!isset($this->_rules[$this->_currentState][$input])) {
            throw new Zend_Search_Exception('There is no any rule for {current state, input} pair (' . $this->_currentState . ', ' . $input . ').');
        }

        $sourceState = $this->_currentState;
        $targetState = $this->_rules[$this->_currentState][$input];

        if ($sourceState != $targetState  &&  isset($this->_exitActions[$sourceState])) {
            foreach ($this->_exitActions[$sourceState] as $action) {
                $action->doAction();
            }
        }
        if (isset($this->_inputActions[$sourceState]) &&
            isset($this->_inputActions[$sourceState][$input])) {
            foreach ($this->_inputActions[$sourceState][$input] as $action) {
                $action->doAction();
            }
        }


        $this->_currentState = $targetState;

        if (isset($this->_transitionActions[$sourceState]) &&
            isset($this->_transitionActions[$sourceState][$targetState])) {
            foreach ($this->_transitionActions[$sourceState][$targetState] as $action) {
                $action->doAction();
            }
        }
        if ($sourceState != $targetState  &&  isset($this->_entryActions[$targetState])) {
            foreach ($this->_entryActions[$targetState] as $action) {
                $action->doAction();
            }
        }
    }

    public function reset()
    {
        if (count($this->_states) == 0) {
            throw new Zend_Search_Exception('There is no any state defined for FSM.');
        }

        $this->_currentState = $this->_states[0];
    }
}

PKpG[a�GY��Search/Lucene/Field.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * A field is a section of a Document.  Each field has two parts,
 * a name and a value. Values may be free text or they may be atomic
 * keywords, which are not further processed. Such keywords may
 * be used to represent dates, urls, etc.  Fields are optionally
 * stored in the index, so that they may be returned with hits
 * on the document.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @subpackage Document
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene_Field
{
    /**
     * Field name
     *
     * @var string
     */
    public $name;

    /**
     * Field value
     * 
     * @var boolean
     */
    public $value;
    
    /**
     * Field is to be stored in the index for return with search hits.
     * 
     * @var boolean
     */
    public $isStored    = false;
    
    /**
     * Field is to be indexed, so that it may be searched on.
     * 
     * @var boolean
     */
    public $isIndexed   = true;

    /**
     * Field should be tokenized as text prior to indexing.
     * 
     * @var boolean
     */
    public $isTokenized = true;
    /**
     * Field is stored as binary.
     * 
     * @var boolean
     */
    public $isBinary    = false;

    /**
     * Field are stored as a term vector
     * 
     * @var boolean
     */
    public $storeTermVector = false;

    /**
     * Field boost factor
     * It's not stored directly in the index, but affects on normalization factor
     *
     * @var float
     */
    public $boost = 1.0;

    /**
     * Field value encoding.
     *
     * @var string
     */
    public $encoding;

    /**
     * Object constructor
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @param boolean $isStored
     * @param boolean $isIndexed
     * @param boolean $isTokenized
     * @param boolean $isBinary
     */
    public function __construct($name, $value, $encoding, $isStored, $isIndexed, $isTokenized, $isBinary = false)
    {
        $this->name  = $name;
        $this->value = $value;

        if (!$isBinary) {
            $this->encoding    = $encoding;
            $this->isTokenized = $isTokenized;
        } else {
            $this->encoding    = '';
            $this->isTokenized = false;
        }

        $this->isStored  = $isStored;
        $this->isIndexed = $isIndexed;
        $this->isBinary  = $isBinary;

        $this->storeTermVector = false;
        $this->boost           = 1.0;
    }


    /**
     * Constructs a String-valued Field that is not tokenized, but is indexed
     * and stored.  Useful for non-text fields, e.g. date or url.
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @return Zend_Search_Lucene_Field
     */
    public static function keyword($name, $value, $encoding = '')
    {
        return new self($name, $value, $encoding, true, true, false);
    }


    /**
     * Constructs a String-valued Field that is not tokenized nor indexed,
     * but is stored in the index, for return with hits.
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @return Zend_Search_Lucene_Field
     */
    public static function unIndexed($name, $value, $encoding = '')
    {
        return new self($name, $value, $encoding, true, false, false);
    }


    /**
     * Constructs a Binary String valued Field that is not tokenized nor indexed,
     * but is stored in the index, for return with hits.
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @return Zend_Search_Lucene_Field
     */
    public static function binary($name, $value)
    {
        return new self($name, $value, '', true, false, false, true);
    }

    /**
     * Constructs a String-valued Field that is tokenized and indexed,
     * and is stored in the index, for return with hits.  Useful for short text
     * fields, like "title" or "subject". Term vector will not be stored for this field.
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @return Zend_Search_Lucene_Field
     */
    public static function text($name, $value, $encoding = '')
    {
        return new self($name, $value, $encoding, true, true, true);
    }


    /**
     * Constructs a String-valued Field that is tokenized and indexed,
     * but that is not stored in the index.
     *
     * @param string $name
     * @param string $value
     * @param string $encoding
     * @return Zend_Search_Lucene_Field
     */
    public static function unStored($name, $value, $encoding = '')
    {
        return new self($name, $value, $encoding, false, true, true);
    }

    /**
     * Get field value in UTF-8 encoding
     *
     * @return string
     */
    public function getUtf8Value()
    {
        if (strcasecmp($this->encoding, 'utf8' ) == 0  ||
            strcasecmp($this->encoding, 'utf-8') == 0 ) {
                return $this->value;
        } else {
            
            return (PHP_OS != 'AIX') ? iconv($this->encoding, 'UTF-8', $this->value) : iconv('ISO8859-1', 'UTF-8', $this->value);
        }
    }
}

PKpG[�� /�/�Search/Lucene.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Search_Lucene_Exception */
require_once 'Zend/Search/Lucene/Exception.php';

/** Zend_Search_Lucene_Document */
require_once 'Zend/Search/Lucene/Document.php';

/** Zend_Search_Lucene_Document_Html */
require_once 'Zend/Search/Lucene/Document/Html.php';

/** Zend_Search_Lucene_Document_Docx */
require_once 'Zend/Search/Lucene/Document/Docx.php';

/** Zend_Search_Lucene_Document_Pptx */
require_once 'Zend/Search/Lucene/Document/Pptx.php';

/** Zend_Search_Lucene_Document_Xlsx */
require_once 'Zend/Search/Lucene/Document/Xlsx.php';

/** Zend_Search_Lucene_Storage_Directory_Filesystem */
require_once 'Zend/Search/Lucene/Storage/Directory/Filesystem.php';

/** Zend_Search_Lucene_Storage_File_Memory */
require_once 'Zend/Search/Lucene/Storage/File/Memory.php';

/** Zend_Search_Lucene_Index_Term */
require_once 'Zend/Search/Lucene/Index/Term.php';

/** Zend_Search_Lucene_Index_TermInfo */
require_once 'Zend/Search/Lucene/Index/TermInfo.php';

/** Zend_Search_Lucene_Index_SegmentInfo */
require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';

/** Zend_Search_Lucene_Index_FieldInfo */
require_once 'Zend/Search/Lucene/Index/FieldInfo.php';

/** Zend_Search_Lucene_Index_Writer */
require_once 'Zend/Search/Lucene/Index/Writer.php';

/** Zend_Search_Lucene_Search_QueryParser */
require_once 'Zend/Search/Lucene/Search/QueryParser.php';

/** Zend_Search_Lucene_Search_QueryHit */
require_once 'Zend/Search/Lucene/Search/QueryHit.php';

/** Zend_Search_Lucene_Search_Similarity */
require_once 'Zend/Search/Lucene/Search/Similarity.php';

/** Zend_Search_Lucene_Index_SegmentInfoPriorityQueue */
require_once 'Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php';

/** Zend_Search_Lucene_Index_DocsFilter */
require_once 'Zend/Search/Lucene/Index/DocsFilter.php';

/** Zend_Search_Lucene_LockManager */
require_once 'Zend/Search/Lucene/LockManager.php';



/** Zend_Search_Lucene_Interface */
require_once 'Zend/Search/Lucene/Interface.php';

/** Zend_Search_Lucene_Proxy */
require_once 'Zend/Search/Lucene/Proxy.php';


/**
 * @category   Zend
 * @package    Zend_Search_Lucene
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Search_Lucene implements Zend_Search_Lucene_Interface
{
    /**
     * Default field name for search
     *
     * Null means search through all fields
     *
     * @var string
     */
    private static $_defaultSearchField = null;

    /**
     * Result set limit
     *
     * 0 means no limit
     *
     * @var integer
     */
    private static $_resultSetLimit = 0;

    /**
     * File system adapter.
     *
     * @var Zend_Search_Lucene_Storage_Directory
     */
    private $_directory = null;

    /**
     * File system adapter closing option
     *
     * @var boolean
     */
    private $_closeDirOnExit = true;

    /**
     * Writer for this index, not instantiated unless required.
     *
     * @var Zend_Search_Lucene_Index_Writer
     */
    private $_writer = null;

    /**
     * Array of Zend_Search_Lucene_Index_SegmentInfo objects for this index.
     *
     * @var array Zend_Search_Lucene_Index_SegmentInfo
     */
    private $_segmentInfos = array();

    /**
     * Number of documents in this index.
     *
     * @var integer
     */
    private $_docCount = 0;

    /**
     * Flag for index changes
     *
     * @var boolean
     */
    private $_hasChanges = false;


    /**
     * Signal, that index is already closed, changes are fixed and resources are cleaned up
     *
     * @var boolean
     */
    private $_closed = false;

    /**
     * Number of references to the index object
     *
     * @var integer
     */
    private $_refCount = 0;

    /**
     * Current segment generation
     *
     * @var integer
     */
    private $_generation;

    const FORMAT_PRE_2_1 = 0;
    const FORMAT_2_1     = 1;
    const FORMAT_2_3     = 2;

    /**
     * Index format version
     *
     * @var integer
     */
    private $_formatVersion;

    /**
     * Create index
     *
     * @param mixed $directory
     * @return Zend_Search_Lucene_Interface
     */
    public static function create($directory)
    {
        return new Zend_Search_Lucene_Proxy(new Zend_Search_Lucene($directory, true));
    }

    /**
     * Open index
     *
     * @param mixed $directory
     * @return Zend_Search_Lucene_Interface
     */
    public static function open($directory)
    {
        return new Zend_Search_Lucene_Proxy(new Zend_Search_Lucene($directory, false));
    }

    /** Generation retrieving counter */
    const GENERATION_RETRIEVE_COUNT = 10;

    /** Pause between generation retrieving attempts in milliseconds */
    const GENERATION_RETRIEVE_PAUSE = 50;

    /**
     * Get current generation number
     *
     * Returns generation number
     * 0 means pre-2.1 index format
     * -1 means there are no segments files.
     *
     * @param Zend_Search_Lucene_Storage_Directory $directory
     * @return integer
     * @throws Zend_Search_Lucene_Exception
     */
    public static function getActualGeneration(Zend_Search_Lucene_Storage_Directory $directory)
    {
        /**
         * Zend_Search_Lucene uses segments.gen file to retrieve current generation number
         *
         * Apache Lucene index format documentation mentions this method only as a fallback method
         *
         * Nevertheless we use it according to the performance considerations
         *
         * @todo check if we can use some modification of Apache Lucene generation determination algorithm
         *       without performance problems
         */

        try {
            for ($count = 0; $count < self::GENERATION_RETRIEVE_COUNT; $count++) {
                // Try to get generation file
                $genFile = $directory->getFileObject('segments.gen', false);

                $format = $genFile->readInt();
                if ($format != (int)0xFFFFFFFE) {
                    throw new Zend_Search_Lucene_Exception('Wrong segments.gen file format');
                }

                $gen1 = $genFile->readLong();
                $gen2 = $genFile->readLong();

                if ($gen1 == $gen2) {
                    return $gen1;
                }

                usleep(self::GENERATION_RETRIEVE_PAUSE * 1000);
            }

            // All passes are failed
            throw new Zend_Search_Lucene_Exception('Index is under processing now');
        } catch (Zend_Search_Lucene_Exception $e) {
            if (strpos($e->getMessage(), 'is not readable') !== false) {
                try {
                    // Try to open old style segments file
                    $segmentsFile = $directory->getFileObject('segments', false);

                    // It's pre-2.1 index
                    return 0;
                } catch (Zend_Search_Lucene_Exception $e) {
                    if (strpos($e->getMessage(), 'is not readable') !== false) {
                        return -1;
                    } else {
                        throw $e;
                    }
                }
            } else {
                throw $e;
            }
        }

        return -1;
    }

    /**
     * Get segments file name
     *
     * @param integer $generation
     * @return string
     */
    public static function getSegmentFileName($generation)
    {
        if ($generation == 0) {
            return 'segments';
        }

        return 'segments_' . base_convert($generation, 10, 36);
    }

    /**
     * Get index format version
     *
     * @return integer
     */
    public function getFormatVersion()
    {
        return $this->_formatVersion;
    }

    /**
     * Set index format version.
     * Index is converted to this format at the nearest upfdate time
     *
     * @param int $formatVersion
     * @throws Zend_Search_Lucene_Exception
     */
    public function setFormatVersion($formatVersion)
    {
        if ($formatVersion != self::FORMAT_PRE_2_1  &&
            $formatVersion != self::FORMAT_2_1  &&
            $formatVersion != self::FORMAT_2_3) {
            throw new Zend_Search_Lucene_Exception('Unsupported index format');
        }

        $this->_formatVersion = $formatVersion;
    }

    /**
     * Read segments file for pre-2.1 Lucene index format
     *
     * @throws Zend_Search_Lucene_Exception
     */
    private function _readPre21SegmentsFile()
    {
        $segmentsFile = $this->_directory->getFileObject('segments');

        $format = $segmentsFile->readInt();

        if ($format != (int)0xFFFFFFFF) {
            throw new Zend_Search_Lucene_Exception('Wrong segments file format');
        }

        // read version
        // $segmentsFile->readLong();
        $segmentsFile->readInt(); $segmentsFile->readInt();

        // read segment name counter
        $segmentsFile->readInt();

        $segments = $segmentsFile->readInt();

        $this->_docCount = 0;

        // read segmentInfos
        for ($count = 0; $count < $segments; $count++) {
            $segName = $segmentsFile->readString();
            $segSize = $segmentsFile->readInt();
            $this->_docCount += $segSize;

            $this->_segmentInfos[$segName] =
                                new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
                                                                         $segName,
                                                                         $segSize);
        }

        // Use 2.1 as a target version. Index will be reorganized at update time.
        $this->_formatVersion = self::FORMAT_2_1;
    }

    /**
     * Read segments file
     *
     * @throws Zend_Search_Lucene_Exception
     */
    private function _readSegmentsFile()
    {
        $segmentsFile = $this->_directory->getFileObject(self::getSegmentFileName($this->_generation));

        $format = $segmentsFile->readInt();

        if ($format == (int)0xFFFFFFFC) {
            $this->_formatVersion = self::FORMAT_2_3;
        } else if ($format == (int)0xFFFFFFFD) {
            $this->_formatVersion = self::FORMAT_2_1;
        } else {
            throw new Zend_Search_Lucene_Exception('Unsupported segments file format');
        }

        // read version
        // $segmentsFile->readLong();
        $segmentsFile->readInt(); $segmentsFile->readInt();

        // read segment name counter
        $segmentsFile->readInt();

        $segments = $segmentsFile->readInt();

        $this->_docCount = 0;

        // read segmentInfos
        for ($count = 0; $count < $segments; $count++) {
            $segName = $segmentsFile->readString();
            $segSize = $segmentsFile->readInt();

            // 2.1+ specific properties
            //$delGen          = $segmentsFile->readLong();
            $delGenHigh        = $segmentsFile->readInt();
            $delGenLow         = $segmentsFile->readInt();
            if ($delGenHigh == (int)0xFFFFFFFF  && $delGenLow == (int)0xFFFFFFFF) {
                $delGen = -1; // There are no deletes
            } else {
                $delGen = ($delGenHigh << 32) | $delGenLow;
            }

            if ($this->_formatVersion == self::FORMAT_2_3) {
                $docStoreOffset = $segmentsFile->readInt();

                if ($docStoreOffset != -1) {
                    $docStoreSegment        = $segmentsFile->readString();
                    $docStoreIsCompoundFile = $segmentsFile->readByte();

                    $docStoreOptions = array('offset'     => $docStoreOffset,
                                             'segment'    => $docStoreSegment,
                                             'isCompound' => ($docStoreIsCompoundFile == 1));
                } else {
                    $docStoreOptions = null;
                }
            } else {
                $docStoreOptions = null;
            }

            $hasSingleNormFile = $segmentsFile->readByte();
            $numField          = $segmentsFile->readInt();

            $normGens = array();
            if ($numField != (int)0xFFFFFFFF) {
                for ($count1 = 0; $count1 < $numField; $count1++) {
                    $normGens[] = $segmentsFile->readLong();
                }

                throw new Zend_Search_Lucene_Exception('Separate norm files are not supported. Optimize index to use it with Zend_Search_Lucene.');
            }

            $isCompoundByte     = $segmentsFile->readByte();

            if ($isCompoundByte == 0xFF) {
                // The segment is not a compound file
                $isCompound = false;
            } else if ($isCompoundByte == 0x00) {
                // The status is unknown
                $isCompound = null;
            } else if ($isCompoundByte == 0x01) {
                // The segment is a compound file
                $isCompound = true;
            }

            $this->_docCount += $segSize;

            $this->_segmentInfos[$segName] =
                                new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
                                                                         $segName,
                                                                         $segSize,
                                                                         $delGen,
                                                                         $docStoreOptions,
                                                                         $hasSingleNormFile,
                                                                         $isCompound);
        }
    }

    /**
     * Opens the index.
     *
     * IndexReader constructor needs Directory as a parameter. It should be
     * a string with a path to the index folder or a Directory object.
     *
     * @param mixed $directory
     * @throws Zend_Search_Lucene_Exception
     */
    public function __construct($directory = null, $create = false)
    {
        if ($directory === null) {
            throw new Zend_Search_Exception('No index directory specified');
        }

        if ($directory instanceof Zend_Search_Lucene_Storage_Directory_Filesystem) {
            $this->_directory      = $directory;
            $this->_closeDirOnExit = false;
        } else {
            $this->_directory      = new Zend_Search_Lucene_Storage_Directory_Filesystem($directory);
            $this->_closeDirOnExit = true;
        }

        $this->_segmentInfos = array();

        // Mark index as "under processing" to prevent other processes from premature index cleaning
        Zend_Search_Lucene_LockManager::obtainReadLock($this->_directory);

        $this->_generation = self::getActualGeneration($this->_directory);

        if ($create) {
            try {
                Zend_Search_Lucene_LockManager::obtainWriteLock($this->_directory);
            } catch (Zend_Search_Lucene_Exception $e) {
                Zend_Search_Lucene_LockManager::releaseReadLock($this->_directory);

                if (strpos($e->getMessage(), 'Can\'t obtain exclusive index lock') === false) {
                    throw $e;
                } else {
                    throw new Zend_Search_Lucene_Exception('Can\'t create index. It\'s under processing now');
                }
            }

            if ($this->_generation == -1) {
                // Directory doesn't contain existing index, start from 1
                $this->_generation = 1;
                $nameCounter = 0;
            } else {
                // Directory contains existing index
                $segmentsFile = $this->_directory->getFileObject(self::getSegmentFileName($this->_generation));
                $segmentsFile->seek(12); // 12 = 4 (int, file format marker) + 8 (long, index version)

                $nameCounter = $segmentsFile->readInt();
                $this->_generation++;
            }

            Zend_Search_Lucene_Index_Writer::createIndex($this->_directory, $this->_generation, $nameCounter);

            Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);
        }

        if ($this->_generation == -1) {
            throw new Zend_Search_Lucene_Exception('Index doesn\'t exists in the specified directory.');
        } else if ($this->_generation == 0) {
            $this->_readPre21SegmentsFile();
        } else {
            $this->_readSegmentsFile();
        }
    }

    /**
     * Close current index and free resources
     */
    private function _close()
    {
        if ($this->_closed) {
            // index is already closed and resources are cleaned up
            return;
        }

        $this->commit();

        // Release "under processing" flag
        Zend_Search_Lucene_LockManager::releaseReadLock($this->_directory);

        if ($this->_closeDirOnExit) {
            $this->_directory->close();
        }

        $this->_directory    = null;
        $this->_writer       = null;
        $this->_segmentInfos = null;

        $this->_closed = true;
    }

    /**
     * Add reference to the index object
     *
     * @internal
     */
    public function addReference()
    {
        $this->_refCount++;
    }

    /**
     * Remove reference from the index object
     *
     * When reference count becomes zero, index is closed and resources are cleaned up
     *
     * @internal
     */
    public function removeReference()
    {
        $this->_refCount--;

        if ($this->_refCount == 0) {
            $this->_close();
        }
    }

    /**
     * Object destructor
     */
    public function __destruct()
    {
        $this->_close();
    }

    /**
     * Returns an instance of Zend_Search_Lucene_Index_Writer for the index
     *
     * @return Zend_Search_Lucene_Index_Writer
     */
    private function _getIndexWriter()
    {
        if (!$this->_writer instanceof Zend_Search_Lucene_Index_Writer) {
            $this->_writer = new Zend_Search_Lucene_Index_Writer($this->_directory, $this->_segmentInfos, $this->_formatVersion);
        }

        return $this->_writer;
    }


    /**
     * Returns the Zend_Search_Lucene_Storage_Directory instance for this index.
     *
     * @return Zend_Search_Lucene_Storage_Directory
     */
    public function getDirectory()
    {
        return $this->_directory;
    }


    /**
     * Returns the total number of documents in this index (including deleted documents).
     *
     * @return integer
     */
    public function count()
    {
        return $this->_docCount;
    }

    /**
     * Returns one greater than the largest possible document number.
     * This may be used to, e.g., determine how big to allocate a structure which will have
     * an element for every document number in an index.
     *
     * @return integer
     */
    public function maxDoc()
    {
        return $this->count();
    }

    /**
     * Returns the total number of non-deleted documents in this index.
     *
     * @return integer
     */
    public function numDocs()
    {
        $numDocs = 0;

        foreach ($this->_segmentInfos as $segmentInfo) {
            $numDocs += $segmentInfo->numDocs();
        }

        return $numDocs;
    }

    /**
     * Checks, that document is deleted
     *
     * @param integer $id
     * @return boolean
     * @throws Zend_Search_Lucene_Exception    Exception is thrown if $id is out of the range
     */
    public function isDeleted($id)
    {
        if ($id >= $this->_docCount) {
            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
        }

        $segmentStartId = 0;
        foreach ($this->_segmentInfos as $segmentInfo) {
            if ($segmentStartId + $segmentInfo->count() > $id) {
                break;
            }

            $segmentStartId += $segmentInfo->count();
        }

        return $segmentInfo->isDeleted($id - $segmentStartId);
    }

    /**
     * Set default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * Default value is null
     *
     * @param string $fieldName
     */
    public static function setDefaultSearchField($fieldName)
    {
        self::$_defaultSearchField = $fieldName;
    }

    /**
     * Get default search field.
     *
     * Null means, that search is performed through all fields by default
     *
     * @return string
     */
    public static function getDefaultSearchField()
    {
        return self::$_defaultSearchField;
    }

    /**
     * Set result set limit.
     *
     * 0 (default) means no limit
     *
     * @param integer $limit
     */
    public static function setResultSetLimit($limit)
    {
        self::$_resultSetLimit = $limit;
    }

    /**
     * Set result set limit.
     *
     * 0 means no limit
     *
     * @return integer
     */
    public static function getResultSetLimit()
    {
        return self::$_resultSetLimit;
    }

    /**
     * Retrieve index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMaxBufferedDocs()
    {
        return $this->_getIndexWriter()->maxBufferedDocs;
    }

    /**
     * Set index maxBufferedDocs option
     *
     * maxBufferedDocs is a minimal number of documents required before
     * the buffered in-memory documents are written into a new Segment
     *
     * Default value is 10
     *
     * @param integer $maxBufferedDocs
     */
    public function setMaxBufferedDocs($maxBufferedDocs)
    {
        $this->_getIndexWriter()->maxBufferedDocs = $maxBufferedDocs;
    }

    /**
     * Retrieve index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @return integer
     */
    public function getMaxMergeDocs()
    {
        return $this->_getIndexWriter()->maxMergeDocs;
    }

    /**
     * Set index maxMergeDocs option
     *
     * maxMergeDocs is a largest number of documents ever merged by addDocument().
     * Small values (e.g., less than 10,000) are best for interactive indexing,
     * as this limits the length of pauses while indexing to a few seconds.
     * Larger values are best for batched indexing and speedier searches.
     *
     * Default value is PHP_INT_MAX
     *
     * @param integer $maxMergeDocs
     */
    public function setMaxMergeDocs($maxMergeDocs)
    {
        $this->_getIndexWriter()->maxMergeDocs = $maxMergeDocs;
    }

    /**
     * Retrieve index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @return integer
     */
    public function getMergeFactor()
    {
        return $this->_getIndexWriter()->mergeFactor;
    }

    /**
     * Set index mergeFactor option
     *
     * mergeFactor determines how often segment indices are merged by addDocument().
     * With smaller values, less RAM is used while indexing,
     * and searches on unoptimized indices are faster,
     * but indexing speed is slower.
     * With larger values, more RAM is used during indexing,
     * and while searches on unoptimized indices are slower,
     * indexing is faster.
     * Thus larger values (> 10) are best for batch index creation,
     * and smaller values (< 10) for indices that are interactively maintained.
     *
     * Default value is 10
     *
     * @param integer $maxMergeDocs
     */
    public function setMergeFactor($mergeFactor)
    {
        $this->_getIndexWriter()->mergeFactor = $mergeFactor;
    }

    /**
     * Performs a query against the index and returns an array
     * of Zend_Search_Lucene_Search_QueryHit objects.
     * Input is a string or Zend_Search_Lucene_Search_Query.
     *
     * @param mixed $query
     * @return array Zend_Search_Lucene_Search_QueryHit
     * @throws Zend_Search_Lucene_Exception
     */
    public function find($query)
    {
        if (is_string($query)) {
            $query = Zend_Search_Lucene_Search_QueryParser::parse($query);
        }

        if (!$query instanceof Zend_Search_Lucene_Search_Query) {
            throw new Zend_Search_Lucene_Exception('Query must be a string or Zend_Search_Lucene_Search_Query object');
        }

        $this->commit();

        $hits   = array();
        $scores = array();
        $ids    = array();

        $query = $query->rewrite($this)->optimize($this);

        $query->execute($this);

        $topScore = 0;

        foreach ($query->matchedDocs() as $id => $num) {
            $docScore = $query->score($id, $this);
            if( $docScore != 0 ) {
                $hit = new Zend_Search_Lucene_Search_QueryHit($this);
                $hit->id = $id;
                $hit->score = $docScore;

                $hits[]   = $hit;
                $ids[]    = $id;
                $scores[] = $docScore;

                if ($docScore > $topScore) {
                    $topScore = $docScore;
                }
            }

            if (self::$_resultSetLimit != 0  &&  count($hits) >= self::$_resultSetLimit) {
                break;
            }
        }

        if (count($hits) == 0) {
            // skip sorting, which may cause a error on empty index
            return array();
        }

        if ($topScore > 1) {
            foreach ($hits as $hit) {
                $hit->score /= $topScore;
            }
        }

        if (func_num_args() == 1) {
            // sort by scores
            array_multisort($scores, SORT_DESC, SORT_NUMERIC,
                            $ids,    SORT_ASC,  SORT_NUMERIC,
                            $hits);
        } else {
            // sort by given field names

            $argList    = func_get_args();
            $fieldNames = $this->getFieldNames();
            $sortArgs   = array();

            for ($count = 1; $count < count($argList); $count++) {
                $fieldName = $argList[$count];

                if (!is_string($fieldName)) {
                    throw new Zend_Search_Lucene_Exception('Field name must be a string.');
                }

                if (!in_array($fieldName, $fieldNames)) {
                    throw new Zend_Search_Lucene_Exception('Wrong field name.');
                }

                $valuesArray = array();
                foreach ($hits as $hit) {
                    try {
                        $value = $hit->getDocument()->getFieldValue($fieldName);
                    } catch (Zend_Search_Lucene_Exception $e) {
                        if (strpos($e->getMessage(), 'not found') === false) {
                            throw $e;
                        } else {
                            $value = null;
                        }
                    }

                    $valuesArray[] = $value;
                }

                $sortArgs[] = $valuesArray;

                if ($count + 1 < count($argList)  &&  is_integer($argList[$count+1])) {
                    $count++;
                    $sortArgs[] = $argList[$count];

                    if ($count + 1 < count($argList)  &&  is_integer($argList[$count+1])) {
                        $count++;
                        $sortArgs[] = $argList[$count];
                    } else {
                        if ($argList[$count] == SORT_ASC  || $argList[$count] == SORT_DESC) {
                            $sortArgs[] = SORT_REGULAR;
                        } else {
                            $sortArgs[] = SORT_ASC;
                        }
                    }
                } else {
                    $sortArgs[] = SORT_ASC;
                    $sortArgs[] = SORT_REGULAR;
                }
            }

            // Sort by id's if values are equal
            $sortArgs[] = $ids;
            $sortArgs[] = SORT_ASC;
            $sortArgs[] = SORT_NUMERIC;

            // Array to be sorted
            $sortArgs[] = &$hits;

            // Do sort
            call_user_func_array('array_multisort', $sortArgs);
        }

        return $hits;
    }


    /**
     * Returns a list of all unique field names that exist in this index.
     *
     * @param boolean $indexed
     * @return array
     */
    public function getFieldNames($indexed = false)
    {
        $result = array();
        foreach( $this->_segmentInfos as $segmentInfo ) {
            $result = array_merge($result, $segmentInfo->getFields($indexed));
        }
        return $result;
    }


    /**
     * Returns a Zend_Search_Lucene_Document object for the document
     * number $id in this index.
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @return Zend_Search_Lucene_Document
     */
    public function getDocument($id)
    {
        if ($id instanceof Zend_Search_Lucene_Search_QueryHit) {
            /* @var $id Zend_Search_Lucene_Search_QueryHit */
            $id = $id->id;
        }

        if ($id >= $this->_docCount) {
            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
        }

        $segmentStartId = 0;
        foreach ($this->_segmentInfos as $segmentInfo) {
            if ($segmentStartId + $segmentInfo->count() > $id) {
                break;
            }

            $segmentStartId += $segmentInfo->count();
        }

        $fdxFile = $segmentInfo->openCompoundFile('.fdx');
        $fdxFile->seek(($id-$segmentStartId)*8, SEEK_CUR);
        $fieldValuesPosition = $fdxFile->readLong();

        $fdtFile = $segmentInfo->openCompoundFile('.fdt');
        $fdtFile->seek($fieldValuesPosition, SEEK_CUR);
        $fieldCount = $fdtFile->readVInt();

        $doc = new Zend_Search_Lucene_Document();
        for ($count = 0; $count < $fieldCount; $count++) {
            $fieldNum = $fdtFile->readVInt();
            $bits = $fdtFile->readByte();

            $fieldInfo = $segmentInfo->getField($fieldNum);

            if (!($bits & 2)) { // Text data
                $field = new Zend_Search_Lucene_Field($fieldInfo->name,
                                                      $fdtFile->readString(),
                                                      'UTF-8',
                                                      true,
                                                      $fieldInfo->isIndexed,
                                                      $bits & 1 );
            } else {            // Binary data
                $field = new Zend_Search_Lucene_Field($fieldInfo->name,
                                                      $fdtFile->readBinary(),
                                                      '',
                                                      true,
                                                      $fieldInfo->isIndexed,
                                                      $bits & 1,
                                                      true );
            }

            $doc->addField($field);
        }

        return $doc;
    }


    /**
     * Returns true if index contain documents with specified term.
     *
     * Is used for query optimization.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return boolean
     */
    public function hasTerm(Zend_Search_Lucene_Index_Term $term)
    {
        foreach ($this->_segmentInfos as $segInfo) {
            if ($segInfo->getTermInfo($term) instanceof Zend_Search_Lucene_Index_TermInfo) {
                return true;
            }
        }

        return false;
    }

    /**
     * Returns IDs of all documents containing term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termDocs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        $subResults = array();
        $segmentStartDocId = 0;

        foreach ($this->_segmentInfos as $segmentInfo) {
            $subResults[] = $segmentInfo->termDocs($term, $segmentStartDocId, $docsFilter);

            $segmentStartDocId += $segmentInfo->count();
        }

        if (count($subResults) == 0) {
            return array();
        } else if (count($subResults) == 0) {
            // Index is optimized (only one segment)
            // Do not perform array reindexing
            return reset($subResults);
        } else {
            $result = call_user_func_array('array_merge', $subResults);
        }

        return $result;
    }

    /**
     * Returns documents filter for all documents containing term.
     *
     * It performs the same operation as termDocs, but return result as
     * Zend_Search_Lucene_Index_DocsFilter object
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return Zend_Search_Lucene_Index_DocsFilter
     */
    public function termDocsFilter(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        $segmentStartDocId = 0;
        $result = new Zend_Search_Lucene_Index_DocsFilter();

        foreach ($this->_segmentInfos as $segmentInfo) {
            $subResults[] = $segmentInfo->termDocs($term, $segmentStartDocId, $docsFilter);

            $segmentStartDocId += $segmentInfo->count();
        }

        if (count($subResults) == 0) {
            return array();
        } else if (count($subResults) == 0) {
            // Index is optimized (only one segment)
            // Do not perform array reindexing
            return reset($subResults);
        } else {
            $result = call_user_func_array('array_merge', $subResults);
        }

        return $result;
    }


    /**
     * Returns an array of all term freqs.
     * Result array structure: array(docId => freq, ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return integer
     */
    public function termFreqs(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        $result = array();
        $segmentStartDocId = 0;
        foreach ($this->_segmentInfos as $segmentInfo) {
            $result += $segmentInfo->termFreqs($term, $segmentStartDocId, $docsFilter);

            $segmentStartDocId += $segmentInfo->count();
        }

        return $result;
    }

    /**
     * Returns an array of all term positions in the documents.
     * Result array structure: array(docId => array(pos1, pos2, ...), ...)
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @param Zend_Search_Lucene_Index_DocsFilter|null $docsFilter
     * @return array
     */
    public function termPositions(Zend_Search_Lucene_Index_Term $term, $docsFilter = null)
    {
        $result = array();
        $segmentStartDocId = 0;
        foreach ($this->_segmentInfos as $segmentInfo) {
            $result += $segmentInfo->termPositions($term, $segmentStartDocId, $docsFilter);

            $segmentStartDocId += $segmentInfo->count();
        }

        return $result;
    }


    /**
     * Returns the number of documents in this index containing the $term.
     *
     * @param Zend_Search_Lucene_Index_Term $term
     * @return integer
     */
    public function docFreq(Zend_Search_Lucene_Index_Term $term)
    {
        $result = 0;
        foreach ($this->_segmentInfos as $segInfo) {
            $termInfo = $segInfo->getTermInfo($term);
            if ($termInfo !== null) {
                $result += $termInfo->docFreq;
            }
        }

        return $result;
    }


    /**
     * Retrive similarity used by index reader
     *
     * @return Zend_Search_Lucene_Search_Similarity
     */
    public function getSimilarity()
    {
        return Zend_Search_Lucene_Search_Similarity::getDefault();
    }


    /**
     * Returns a normalization factor for "field, document" pair.
     *
     * @param integer $id
     * @param string $fieldName
     * @return float
     */
    public function norm($id, $fieldName)
    {
        if ($id >= $this->_docCount) {
            return null;
        }

        $segmentStartId = 0;
        foreach ($this->_segmentInfos as $segInfo) {
            if ($segmentStartId + $segInfo->count() > $id) {
                break;
            }

            $segmentStartId += $segInfo->count();
        }

        if ($segInfo->isDeleted($id - $segmentStartId)) {
            return 0;
        }

        return $segInfo->norm($id - $segmentStartId, $fieldName);
    }

    /**
     * Returns true if any documents have been deleted from this index.
     *
     * @return boolean
     */
    public function hasDeletions()
    {
        foreach ($this->_segmentInfos as $segmentInfo) {
            if ($segmentInfo->hasDeletions()) {
                return true;
            }
        }

        return false;
    }


    /**
     * Deletes a document from the index.
     * $id is an internal document id
     *
     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
     * @throws Zend_Search_Lucene_Exception
     */
    public function delete($id)
    {
        if ($id instanceof Zend_Search_Lucene_Search_QueryHit) {
            /* @var $id Zend_Search_Lucene_Search_QueryHit */
            $id = $id->id;
        }

        if ($id >= $this->_docCount) {
            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
        }

        $segmentStartId = 0;
        foreach ($this->_segmentInfos as $segmentInfo) {
            if ($segmentStartId + $segmentInfo->count() > $id) {
                break;
            }

            $segmentStartId += $segmentInfo->count();
        }
        $segmentInfo->delete($id - $segmentStartId);

        $this->_hasChanges = true;
    }



    /**
     * Adds a document to this index.
     *
     * @param Zend_Search_Lucene_Document $document
     */
    public function addDocument(Zend_Search_Lucene_Document $document)
    {
        $this->_getIndexWriter()->addDocument($document);
        $this->_docCount++;

        $this->_hasChanges = true;
    }


    /**
     * Update document counter
     */
    private function _updateDocCount()
    {
        $this->_docCount = 0;
        foreach ($this->_segmentInfos as $segInfo) {
            $this->_docCount += $segInfo->count();
        }
    }

    /**
     * Commit changes resulting from delete() or undeleteAll() operations.
     *
     * @todo undeleteAll processing.
     */
    public function commit()
    {
        if ($this->_hasChanges) {
            $this->_getIndexWriter()->commit();

            $this->_updateDocCount();

            $this->_hasChanges = false;
        }
    }


    /**
     * Optimize index.
     *
     * Merges all segments into one
     */
    public function optimize()
    {
        // Commit changes if any changes have been made
        $this->commit();

        if (count($this->_segmentInfos) > 1 || $this->hasDeletions()) {
            $this->_getIndexWriter()->optimize();
            $this->_updateDocCount();
        }
    }


    /**
     * Returns an array of all terms in this index.
     *
     * @return array
     */
    public function terms()
    {
        $result = array();

        $segmentInfoQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();

        foreach ($this->_segmentInfos as $segmentInfo) {
            $segmentInfo->reset();

            // Skip "empty" segments
            if ($segmentInfo->currentTerm() !== null) {
                $segmentInfoQueue->put($segmentInfo);
            }
        }

        while (($segmentInfo = $segmentInfoQueue->pop()) !== null) {
            if ($segmentInfoQueue->top() === null ||
                $segmentInfoQueue->top()->currentTerm()->key() !=
                            $segmentInfo->currentTerm()->key()) {
                // We got new term
                $result[] = $segmentInfo->currentTerm();
            }

            if ($segmentInfo->nextTerm() !== null) {
                // Put segment back into the priority queue
                $segmentInfoQueue->put($segmentInfo);
            }
        }

        return $result;
    }


    /**
     * Terms stream queue
     *
     * @var Zend_Search_Lucene_Index_SegmentInfoPriorityQueue
     */
    private $_termsStreamQueue = null;

    /**
     * Last Term in a terms stream
     *
     * @var Zend_Search_Lucene_Index_Term
     */
    private $_lastTerm = null;

    /**
     * Reset terms stream.
     */
    public function resetTermsStream()
    {
        $this->_termsStreamQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();

        foreach ($this->_segmentInfos as $segmentInfo) {
            $segmentInfo->reset();

            // Skip "empty" segments
            if ($segmentInfo->currentTerm() !== null) {
                $this->_termsStreamQueue->put($segmentInfo);
            }
        }

        $this->nextTerm();
    }

    /**
     * Skip terms stream up to specified term preffix.
     *
     * Prefix contains fully specified field info and portion of searched term
     *
     * @param Zend_Search_Lucene_Index_Term $prefix
     */
    public function skipTo(Zend_Search_Lucene_Index_Term $prefix)
    {
        $segments = array();

        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
            $segments[] = $segmentInfo;
        }

        foreach ($segments as $segmentInfo) {
            $segmentInfo->skipTo($prefix);

            if ($segmentInfo->currentTerm() !== null) {
                $this->_termsStreamQueue->put($segmentInfo);
            }
        }

        $this->nextTerm();
    }

    /**
     * Scans terms dictionary and returns next term
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function nextTerm()
    {
        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
            if ($this->_termsStreamQueue->top() === null ||
                $this->_termsStreamQueue->top()->currentTerm()->key() !=
                            $segmentInfo->currentTerm()->key()) {
                // We got new term
                $this->_lastTerm = $segmentInfo->currentTerm();

                if ($segmentInfo->nextTerm() !== null) {
                    // Put segment back into the priority queue
                    $this->_termsStreamQueue->put($segmentInfo);
                }

                return $this->_lastTerm;
            }

            if ($segmentInfo->nextTerm() !== null) {
                // Put segment back into the priority queue
                $this->_termsStreamQueue->put($segmentInfo);
            }
        }

        // End of stream
        $this->_lastTerm = null;

        return null;
    }

    /**
     * Returns term in current position
     *
     * @return Zend_Search_Lucene_Index_Term|null
     */
    public function currentTerm()
    {
        return $this->_lastTerm;
    }

    /**
     * Close terms stream
     *
     * Should be used for resources clean up if stream is not read up to the end
     */
    public function closeTermsStream()
    {
        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
            $segmentInfo->closeTermsStream();
        }

        $this->_termsStreamQueue = null;
        $this->_lastTerm         = null;
    }


    /*************************************************************************
    @todo UNIMPLEMENTED
    *************************************************************************/
    /**
     * Undeletes all documents currently marked as deleted in this index.
     *
     * @todo Implementation
     */
    public function undeleteAll()
    {}
}
PKpG[����1�1Json/Encoder.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Json_Exception
 */
require_once 'Zend/Json/Exception.php';


/**
 * Encode PHP constructs to JSON
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Encoder
{
    /**
     * Whether or not to check for possible cycling
     *
     * @var boolean
     */
    protected $_cycleCheck;
    
    /**
     * Additional options used during encoding
     * 
     * @var array
     */
    protected $_options = array();

    /**
     * Array of visited objects; used to prevent cycling.
     *
     * @var array
     */
    protected $_visited = array();

    /**
     * Constructor
     *
     * @param boolean $cycleCheck Whether or not to check for recursion when encoding
     * @param array $options Additional options used during encoding
     * @return void
     */
    protected function __construct($cycleCheck = false, $options = array())
    {
        $this->_cycleCheck = $cycleCheck;
        $this->_options = $options;
    }

    /**
     * Use the JSON encoding scheme for the value specified
     *
     * @param mixed $value The value to be encoded
     * @param boolean $cycleCheck Whether or not to check for possible object recursion when encoding
     * @param array $options Additional options used during encoding
     * @return string  The encoded value
     */
    public static function encode($value, $cycleCheck = false, $options = array())
    {
        $encoder = new self(($cycleCheck) ? true : false, $options);

        return $encoder->_encodeValue($value);
    }

    /**
     * Recursive driver which determines the type of value to be encoded
     * and then dispatches to the appropriate method. $values are either
     *    - objects (returns from {@link _encodeObject()})
     *    - arrays (returns from {@link _encodeArray()})
     *    - basic datums (e.g. numbers or strings) (returns from {@link _encodeDatum()})
     *
     * @param $value mixed The value to be encoded
     * @return string Encoded value
     */
    protected function _encodeValue(&$value)
    {
        if (is_object($value)) {
            return $this->_encodeObject($value);
        } else if (is_array($value)) {
            return $this->_encodeArray($value);
        }

        return $this->_encodeDatum($value);
    }



    /**
     * Encode an object to JSON by encoding each of the public properties
     *
     * A special property is added to the JSON object called '__className'
     * that contains the name of the class of $value. This is used to decode
     * the object on the client into a specific class.
     *
     * @param $value object
     * @return string
     * @throws Zend_Json_Exception If recursive checks are enabled and the object has been serialized previously
     */
    protected function _encodeObject(&$value)
    {
        if ($this->_cycleCheck) {
            if ($this->_wasVisited($value)) {
                
                if (isset($this->_options['silenceCyclicalExceptions'])
                    && $this->_options['silenceCyclicalExceptions']===true) {
                    
                    return '"* RECURSION (' . get_class($value) . ') *"';
                    
                } else {
                    throw new Zend_Json_Exception(
                        'Cycles not supported in JSON encoding, cycle introduced by '
                        . 'class "' . get_class($value) . '"'
                    );
                }
            }

            $this->_visited[] = $value;
        }

        $props = '';
        
        if ($value instanceof Iterator) {
        	$propCollection = $value;
        } else {
        	$propCollection = get_object_vars($value);
        }
        
        foreach ($propCollection as $name => $propValue) {
            if (isset($propValue)) {
                $props .= ','
                        . $this->_encodeValue($name)
                        . ':'
                        . $this->_encodeValue($propValue);
            }
        }

        return '{"__className":"' . get_class($value) . '"'
                . $props . '}';
    }


    /**
     * Determine if an object has been serialized already
     *
     * @param mixed $value
     * @return boolean
     */
    protected function _wasVisited(&$value)
    {
        if (in_array($value, $this->_visited, true)) {
            return true;
        }

        return false;
    }


    /**
     * JSON encode an array value
     *
     * Recursively encodes each value of an array and returns a JSON encoded
     * array string.
     *
     * Arrays are defined as integer-indexed arrays starting at index 0, where
     * the last index is (count($array) -1); any deviation from that is
     * considered an associative array, and will be encoded as such.
     *
     * @param $array array
     * @return string
     */
    protected function _encodeArray(&$array)
    {
        $tmpArray = array();

        // Check for associative array
        if (!empty($array) && (array_keys($array) !== range(0, count($array) - 1))) {
            // Associative array
            $result = '{';
            foreach ($array as $key => $value) {
                $key = (string) $key;
                $tmpArray[] = $this->_encodeString($key)
                            . ':'
                            . $this->_encodeValue($value);
            }
            $result .= implode(',', $tmpArray);
            $result .= '}';
        } else {
            // Indexed array
            $result = '[';
            $length = count($array);
            for ($i = 0; $i < $length; $i++) {
                $tmpArray[] = $this->_encodeValue($array[$i]);
            }
            $result .= implode(',', $tmpArray);
            $result .= ']';
        }

        return $result;
    }


    /**
     * JSON encode a basic data type (string, number, boolean, null)
     *
     * If value type is not a string, number, boolean, or null, the string
     * 'null' is returned.
     *
     * @param $value mixed
     * @return string
     */
    protected function _encodeDatum(&$value)
    {
        $result = 'null';

        if (is_int($value) || is_float($value)) {
            $result = (string) $value;
        } elseif (is_string($value)) {
            $result = $this->_encodeString($value);
        } elseif (is_bool($value)) {
            $result = $value ? 'true' : 'false';
        }

        return $result;
    }


    /**
     * JSON encode a string value by escaping characters as necessary
     *
     * @param $value string
     * @return string
     */
    protected function _encodeString(&$string)
    {
        // Escape these characters with a backslash:
        // " \ / \n \r \t \b \f
        $search  = array('\\', "\n", "\t", "\r", "\b", "\f", '"');
        $replace = array('\\\\', '\\n', '\\t', '\\r', '\\b', '\\f', '\"');
        $string  = str_replace($search, $replace, $string);

        // Escape certain ASCII characters:
        // 0x08 => \b
        // 0x0c => \f
        $string = str_replace(array(chr(0x08), chr(0x0C)), array('\b', '\f'), $string);

        return '"' . $string . '"';
    }


    /**
     * Encode the constants associated with the ReflectionClass
     * parameter. The encoding format is based on the class2 format
     *
     * @param $cls ReflectionClass
     * @return string Encoded constant block in class2 format
     */
    private static function _encodeConstants(ReflectionClass $cls)
    {
        $result    = "constants : {";
        $constants = $cls->getConstants();

        $tmpArray = array();
        if (!empty($constants)) {
            foreach ($constants as $key => $value) {
                $tmpArray[] = "$key: " . self::encode($value);
            }

            $result .= implode(', ', $tmpArray);
        }

        return $result . "}";
    }


    /**
     * Encode the public methods of the ReflectionClass in the
     * class2 format
     *
     * @param $cls ReflectionClass
     * @return string Encoded method fragment
     *
     */
    private static function _encodeMethods(ReflectionClass $cls)
    {
        $methods = $cls->getMethods();
        $result = 'methods:{';

        $started = false;
        foreach ($methods as $method) {
            if (! $method->isPublic() || !$method->isUserDefined()) {
                continue;
            }

            if ($started) {
                $result .= ',';
            }
            $started = true;

            $result .= '' . $method->getName(). ':function(';

            if ('__construct' != $method->getName()) {
                $parameters  = $method->getParameters();
                $paramCount  = count($parameters);
                $argsStarted = false;

                $argNames = "var argNames=[";
                foreach ($parameters as $param) {
                    if ($argsStarted) {
                        $result .= ',';
                    }

                    $result .= $param->getName();

                    if ($argsStarted) {
                        $argNames .= ',';
                    }

                    $argNames .= '"' . $param->getName() . '"';

                    $argsStarted = true;
                }
                $argNames .= "];";

                $result .= "){"
                         . $argNames
                         . 'var result = ZAjaxEngine.invokeRemoteMethod('
                         . "this, '" . $method->getName()
                         . "',argNames,arguments);"
                         . 'return(result);}';
            } else {
                $result .= "){}";
            }
        }

        return $result . "}";
    }


    /**
     * Encode the public properties of the ReflectionClass in the class2
     * format.
     *
     * @param $cls ReflectionClass
     * @return string Encode properties list
     *
     */
    private static function _encodeVariables(ReflectionClass $cls)
    {
        $properties = $cls->getProperties();
        $propValues = get_class_vars($cls->getName());
        $result = "variables:{";
        $cnt = 0;

        $tmpArray = array();
        foreach ($properties as $prop) {
            if (! $prop->isPublic()) {
                continue;
            }

            $tmpArray[] = $prop->getName()
                        . ':'
                        . self::encode($propValues[$prop->getName()]);
        }
        $result .= implode(',', $tmpArray);

        return $result . "}";
    }

    /**
     * Encodes the given $className into the class2 model of encoding PHP
     * classes into JavaScript class2 classes.
     * NOTE: Currently only public methods and variables are proxied onto
     * the client machine
     *
     * @param $className string The name of the class, the class must be
     * instantiable using a null constructor
     * @param $package string Optional package name appended to JavaScript
     * proxy class name
     * @return string The class2 (JavaScript) encoding of the class
     * @throws Zend_Json_Exception
     */
    public static function encodeClass($className, $package = '')
    {
        $cls = new ReflectionClass($className);
        if (! $cls->isInstantiable()) {
            throw new Zend_Json_Exception("$className must be instantiable");
        }

        return "Class.create('$package$className',{"
                . self::_encodeConstants($cls)    .","
                . self::_encodeMethods($cls)      .","
                . self::_encodeVariables($cls)    .'});';
    }


    /**
     * Encode several classes at once
     *
     * Returns JSON encoded classes, using {@link encodeClass()}.
     *
     * @param array $classNames
     * @param string $package
     * @return string
     */
    public static function encodeClasses(array $classNames, $package = '')
    {
        $result = '';
        foreach ($classNames as $className) {
            $result .= self::encodeClass($className, $package);
        }

        return $result;
    }

}

PKpG[m֭��+�+Json/Server/Smd.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Smd
{
    const ENV_JSONRPC_1 = 'JSON-RPC-1.0';
    const ENV_JSONRPC_2 = 'JSON-RPC-2.0';
    const SMD_VERSION   = '2.0';

    /**
     * Content type
     * @var string
     */
    protected $_contentType = 'application/json';

    /**
     * Content type regex
     * @var string
     */
    protected $_contentTypeRegex = '#[a-z]+/[a-z][a-z-]+#i';

    /**
     * Service description
     * @var string
     */
    protected $_description;

    /**
     * Generate Dojo-compatible SMD
     * @var bool
     */
    protected $_dojoCompatible = false;

    /**
     * Current envelope
     * @var string
     */
    protected $_envelope = self::ENV_JSONRPC_1;

    /**
     * Allowed envelope types
     * @var array
     */
    protected $_envelopeTypes = array(
        self::ENV_JSONRPC_1,
        self::ENV_JSONRPC_2,
    );

    /**
     * Service id
     * @var string
     */
    protected $_id;

    /**
     * Services offerred
     * @var array
     */
    protected $_services = array();

    /**
     * Service target
     * @var string
     */
    protected $_target;

    /**
     * Global transport
     * @var string
     */
    protected $_transport = 'POST';

    /**
     * Allowed transport types
     * @var array
     */
    protected $_transportTypes = array('POST');

    /**
     * Set object state via options
     * 
     * @param  array $options 
     * @return Zend_Json_Server_Smd
     */
    public function setOptions(array $options)
    {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set transport
     * 
     * @param  string $transport 
     * @return Zend_Json_Server_Smd
     */
    public function setTransport($transport)
    {
        if (!in_array($transport, $this->_transportTypes)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid transport "%s" specified', $transport));
        }
        $this->_transport = $transport;
        return $this;
    }

    /**
     * Get transport
     * 
     * @return string
     */
    public function getTransport()
    {
        return $this->_transport;
    }

    /**
     * Set envelope
     * 
     * @param  string $envelopeType 
     * @return Zend_Json_Server_Smd
     */
    public function setEnvelope($envelopeType)
    {
        if (!in_array($envelopeType, $this->_envelopeTypes)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid envelope type "%s"', $envelopeType));
        }
        $this->_envelope = $envelopeType;
        return $this;
    }

    /**
     * Retrieve envelope
     * 
     * @return string
     */
    public function getEnvelope()
    {
        return $this->_envelope;
    }

    // Content-Type of response; default to application/json
    /**
     * Set content type
     * 
     * @param  string $type 
     * @return Zend_Json_Server_Smd
     */
    public function setContentType($type)
    {
        if (!preg_match($this->_contentTypeRegex, $type)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid content type "%s" specified', $type));
        }
        $this->_contentType = $type;
        return $this;
    }

    /**
     * Retrieve content type
     * 
     * @return string
     */
    public function getContentType()
    {
        return $this->_contentType;
    }

    /**
     * Set service target
     * 
     * @param  string $target 
     * @return Zend_Json_Server_Smd
     */
    public function setTarget($target)
    {
        $this->_target = (string) $target;
        return $this;
    }

    /**
     * Retrieve service target
     * 
     * @return string
     */
    public function getTarget()
    {
        return $this->_target;
    }

    /**
     * Set service ID
     * 
     * @param  string $Id 
     * @return Zend_Json_Server_Smd
     */
    public function setId($id)
    {
        $this->_id = (string) $id;
        return $this->_id;
    }

    /**
     * Get service id 
     * 
     * @return string
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Set service description
     * 
     * @param  string $description 
     * @return Zend_Json_Server_Smd
     */
    public function setDescription($description)
    {
        $this->_description = (string) $description;
        return $this->_description;
    }

    /**
     * Get service description 
     * 
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Indicate whether or not to generate Dojo-compatible SMD
     * 
     * @param  bool $flag 
     * @return Zend_Json_Server_Smd
     */
    public function setDojoCompatible($flag)
    {
        $this->_dojoCompatible = (bool) $flag;
        return $this;
    }

    /**
     * Is this a Dojo compatible SMD?
     * 
     * @return bool
     */
    public function isDojoCompatible()
    {
        return $this->_dojoCompatible;
    }

    /**
     * Add Service 
     * 
     * @param Zend_Json_Server_Smd_Service|array $service 
     * @return void
     */
    public function addService($service)
    {
        require_once 'Zend/Json/Server/Smd/Service.php';

        if ($service instanceof Zend_Json_Server_Smd_Service) {
            $name = $service->getName();
        } elseif (is_array($service)) {
            $service = new Zend_Json_Server_Smd_Service($service);
            $name = $service->getName();
        } else {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid service passed to addService()');
        }

        if (array_key_exists($name, $this->_services)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Attempt to register a service already registered detected');
        }
        $this->_services[$name] = $service;
        return $this;
    }

    /**
     * Add many services
     * 
     * @param  array $services 
     * @return Zend_Json_Server_Smd
     */
    public function addServices(array $services)
    {
        foreach ($services as $service) {
            $this->addService($service);
        }
        return $this;
    }

    /**
     * Overwrite existing services with new ones
     * 
     * @param  array $services 
     * @return Zend_Json_Server_Smd
     */
    public function setServices(array $services)
    {
        $this->_services = array();
        return $this->addServices($services);
    }

    /**
     * Get service object
     * 
     * @param  string $name 
     * @return false|Zend_Json_Server_Smd_Service
     */
    public function getService($name)
    {
        if (array_key_exists($name, $this->_services)) {
            return $this->_services[$name];
        }
        return false;
    }

    /**
     * Return services
     * 
     * @return array
     */
    public function getServices()
    {
        return $this->_services;
    }

    /**
     * Remove service
     * 
     * @param  string $name 
     * @return boolean
     */
    public function removeService($name)
    {
        if (array_key_exists($name, $this->_services)) {
            unset($this->_services[$name]);
            return true;
        }
        return false;
    }

    /**
     * Cast to array
     * 
     * @return array
     */
    public function toArray()
    {
        if ($this->isDojoCompatible()) {
            return $this->toDojoArray();
        }

        $transport   = $this->getTransport();
        $envelope    = $this->getEnvelope();
        $contentType = $this->getContentType();
        $SMDVersion  = self::SMD_VERSION;
        $service = compact('transport', 'envelope', 'contentType', 'SMDVersion');

        if (null !== ($target = $this->getTarget())) {
            $service['target']     = $target;
        }
        if (null !== ($id = $this->getId())) {
            $service['id'] = $id;
        }

        $services = $this->getServices();
        if (!empty($services)) {
            $service['services'] = array();
            foreach ($services as $name => $svc) {
                $svc->setEnvelope($envelope);
                $service['services'][$name] = $svc->toArray();
            }
            $service['methods'] = $service['services'];
        }

        return $service;
    }

    /**
     * Export to DOJO-compatible SMD array
     * 
     * @return array
     */
    public function toDojoArray()
    {
        $SMDVersion  = '.1';
        $serviceType = 'JSON-RPC';
        $service = compact('SMDVersion', 'serviceType');

        $target = $this->getTarget();

        $services = $this->getServices();
        if (!empty($services)) {
            $service['methods'] = array();
            foreach ($services as $name => $svc) {
                $method = array(
                    'name'       => $name,
                    'serviceURL' => $target,
                );
                $params = array();
                foreach ($svc->getParams() as $param) {
                    $paramName = array_key_exists('name', $param) ? $param['name'] : $param['type'];
                    $params[] = array(
                        'name' => $paramName,
                        'type' => $param['type'],
                    );
                }
                if (!empty($params)) {
                    $method['parameters'] = $params;
                }
                $service['methods'][] = $method;
            }
        }

        return $service;
    }

    /**
     * Cast to JSON
     * 
     * @return string
     */
    public function toJson()
    {
        require_once 'Zend/Json.php';
        return Zend_Json::encode($this->toArray());
    }

    /**
     * Cast to string (JSON)
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }
}

PKpG[?/����Json/Server/Request.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Request
{
    /**
     * Request ID
     * @var mixed
     */
    protected $_id;

    /**
     * Flag
     * @var bool
     */
    protected $_isMethodError = false;

    /**
     * Requested method
     * @var string
     */
    protected $_method;

    /**
     * Regex for method
     * @var string
     */
    protected $_methodRegex = '/^[a-z][a-z0-9_]*$/i';

    /**
     * Request parameters 
     * @var array
     */
    protected $_params = array();

    /**
     * JSON-RPC version of request
     * @var string
     */
    protected $_version = '1.0';

    /**
     * Set request state
     * 
     * @param  array $options 
     * @return Zend_Json_Server_Request
     */
    public function setOptions(array $options)
    {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            } elseif ($key == 'jsonrpc') {
                $this->setVersion($value);
            }
        }
        return $this;
    }

    /**
     * Add a parameter to the request
     * 
     * @param  mixed $value 
     * @param  string $key 
     * @return Zend_Json_Server_Request
     */
    public function addParam($value, $key = null)
    {
        if ((null === $key) || !is_string($key)) {
            $index = count($this->_params);
            $this->_params[$index] = $value;
        } else {
            $this->_params[$key] = $value;
        }

        return $this;
    }

    /**
     * Add many params
     * 
     * @param  array $params 
     * @return Zend_Json_Server_Request
     */
    public function addParams(array $params)
    {
        foreach ($params as $key => $value) {
            $this->addParam($value, $key);
        }
        return $this;
    }

    /**
     * Overwrite params
     * 
     * @param  array $params 
     * @return Zend_Json_Server_Request
     */
    public function setParams(array $params)
    {
        $this->_params = array();
        return $this->addParams($params);
    }

    /**
     * Retrieve param by index or key
     * 
     * @param  int|string $index 
     * @return mixed|null Null when not found
     */
    public function getParam($index)
    {
        if (array_key_exists($index, $this->_params)) {
            return $this->_params[$index];
        }

        return null;
    }

    /**
     * Retrieve parameters 
     * 
     * @return array
     */
    public function getParams()
    {
        return $this->_params;
    }

    /**
     * Set request method
     * 
     * @param  string $name 
     * @return Zend_Json_Server_Request
     */
    public function setMethod($name)
    {
        if (!preg_match($this->_methodRegex, $name)) {
            $this->_isMethodError = true;
        } else {
            $this->_method = $name;
        }
        return $this;
    }

    /**
     * Get request method name
     * 
     * @return string
     */
    public function getMethod()
    {
        return $this->_method;
    }

    /**
     * Was a bad method provided? 
     * 
     * @return bool
     */
    public function isMethodError()
    {
        return $this->_isMethodError;
    }

    /**
     * Set request identifier
     * 
     * @param  mixed $name 
     * @return Zend_Json_Server_Request
     */
    public function setId($name)
    {
        $this->_id = (string) $name;
        return $this;
    }

    /**
     * Retrieve request identifier
     * 
     * @return mixed
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Set JSON-RPC version
     * 
     * @param  string $version 
     * @return Zend_Json_Server_Request
     */
    public function setVersion($version)
    {
        if ('2.0' == $version) {
            $this->_version = '2.0';
        } else {
            $this->_version = '1.0';
        }
        return $this;
    }

    /**
     * Retrieve JSON-RPC version
     * 
     * @return string
     */
    public function getVersion()
    {
        return $this->_version;
    }

    /**
     * Set request state based on JSON
     * 
     * @param  string $json 
     * @return void
     */
    public function loadJson($json)
    {
        require_once 'Zend/Json.php';
        $options = Zend_Json::decode($json);
        $this->setOptions($options);
    }

    /**
     * Cast request to JSON
     * 
     * @return string
     */
    public function toJson()
    {
        $jsonArray = array(
            'method' => $this->getMethod()
        );
        if (null !== ($id = $this->getId())) {
            $jsonArray['id'] = $id;
        }
        $params = $this->getParams();
        if (!empty($params)) {
            $jsonArray['params'] = $params;
        }
        if ('2.0' == $this->getVersion()) {
            $jsonArray['jsonrpc'] = '2.0';
        }

        require_once 'Zend/Json.php';
        return Zend_Json::encode($jsonArray);
    }

    /**
     * Cast request to string (JSON)
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }
}
PKpG[�l�sJson/Server/Error.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Error
{
    const ERROR_PARSE           = -32768;
    const ERROR_INVALID_REQUEST = -32600;
    const ERROR_INVALID_METHOD  = -32601;
    const ERROR_INVALID_PARAMS  = -32602;
    const ERROR_INTERNAL        = -32603;
    const ERROR_OTHER           = -32000;

    /**
     * Allowed error codes
     * @var array
     */
    protected $_allowedCodes = array(
        self::ERROR_PARSE,
        self::ERROR_INVALID_REQUEST,
        self::ERROR_INVALID_METHOD,
        self::ERROR_INVALID_PARAMS,
        self::ERROR_INTERNAL,
        self::ERROR_OTHER,
    );

    /**
     * Current code
     * @var int
     */
    protected $_code = -32000;

    /**
     * Error data
     * @var mixed
     */
    protected $_data;

    /**
     * Error message
     * @var string
     */
    protected $_message;

    /**
     * Constructor
     * 
     * @param  string $message 
     * @param  int $code 
     * @param  mixed $data 
     * @return void
     */
    public function __construct($message = null, $code = -32000, $data = null)
    {
        $this->setMessage($message)
             ->setCode($code)
             ->setData($data);
    }

    /**
     * Set error code
     * 
     * @param  int $code 
     * @return Zend_Json_Server_Error
     */
    public function setCode($code)
    {
        if (!is_scalar($code)) {
            return $this;
        }

        $code = (int) $code;
        if (in_array($code, $this->_allowedCodes)) {
            $this->_code = $code;
        } elseif (in_array($code, range(-32099, -32000))) {
            $this->_code = $code;
        }

        return $this;
    }

    /**
     * Get error code
     * 
     * @return int|null
     */
    public function getCode()
    {
        return $this->_code;
    }

    /**
     * Set error message
     * 
     * @param  string $message 
     * @return Zend_Json_Server_Error
     */
    public function setMessage($message)
    {
        if (!is_scalar($message)) {
            return $this;
        }

        $this->_message = (string) $message;
        return $this;
    }

    /**
     * Get error message
     * 
     * @return string
     */
    public function getMessage()
    {
        return $this->_message;
    }

    /**
     * Set error data
     * 
     * @param  mixed $data 
     * @return Zend_Json_Server_Error
     */
    public function setData($data)
    {
        $this->_data = $data;
        return $this;
    }

    /**
     * Get error data
     * 
     * @return mixed
     */
    public function getData()
    {
        return $this->_data;
    }

    /**
     * Cast error to array
     * 
     * @return array
     */
    public function toArray()
    {
        return array(
            'code'    => $this->getCode(),
            'message' => $this->getMessage(),
            'data'    => $this->getData(),
        );
    }

    /**
     * Cast error to JSON
     * 
     * @return string
     */
    public function toJson()
    {
        require_once 'Zend/Json.php';
        return Zend_Json::encode($this->toArray());
    }

    /**
     * Cast to string (JSON)
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }
}

PKpG[�yMMJson/Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Json_Exception */
require_once 'Zend/Json/Exception.php';

/**
 * Zend_Json_Server exceptions
 * 
 * @uses       Zend_Json_Exception
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Exception extends Zend_Json_Exception
{
}
PKpG[mjJson/Server/Response.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Response
{
    /**
     * Response error
     * @var null|Zend_Json_Server_Error
     */
    protected $_error;

    /**
     * Request ID
     * @var mixed
     */
    protected $_id;

    /**
     * Result
     * @var mixed
     */
    protected $_result;

    /**
     * Service map
     * @var Zend_Json_Server_Smd
     */
    protected $_serviceMap;

    /**
     * JSON-RPC version
     * @var string
     */
    protected $_version;

    /**
     * Set result
     * 
     * @param  mixed $value 
     * @return Zend_Json_Server_Response
     */
    public function setResult($value)
    {
        $this->_result = $value;
        return $this;
    }

    /**
     * Get result
     * 
     * @return mixed
     */
    public function getResult()
    {
        return $this->_result;
    }

    // RPC error, if response results in fault
    /**
     * Set result error
     * 
     * @param  Zend_Json_Server_Error $error 
     * @return Zend_Json_Server_Response
     */
    public function setError(Zend_Json_Server_Error $error)
    {
        $this->_error = $error;
        return $this;
    }

    /**
     * Get response error
     * 
     * @return null|Zend_Json_Server_Error
     */
    public function getError()
    {
        return $this->_error;
    }

    /**
     * Is the response an error?
     * 
     * @return bool
     */
    public function isError()
    {
        return $this->getError() instanceof Zend_Json_Server_Error;
    }

    /**
     * Set request ID
     * 
     * @param  mixed $name 
     * @return Zend_Json_Server_Response
     */
    public function setId($name)
    {
        $this->_id = $name;
        return $this;
    }

    /**
     * Get request ID
     * 
     * @return mixed
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Set JSON-RPC version
     * 
     * @param  string $version 
     * @return Zend_Json_Server_Response
     */
    public function setVersion($version)
    {
        $version = (string) $version;
        if ('2.0' == $version) {
            $this->_version = '2.0';
        } else {
            $this->_version = null;
        }

        return $this;
    }

    /**
     * Retrieve JSON-RPC version
     * 
     * @return string
     */
    public function getVersion()
    {
        return $this->_version;
    }

    /**
     * Cast to JSON
     * 
     * @return string
     */
    public function toJson()
    {
        if ($this->isError()) {
            $response = array(
                'error' => $this->getError()->toArray(),
                'id'    => $this->getId(),
            );
        } else {
            $response = array(
                'result' => $this->getResult(),
                'id'     => $this->getId(),
            );
        }

        if (null !== ($version = $this->getVersion())) {
            $response['jsonrpc'] = $version;
        }

        require_once 'Zend/Json.php';
        return Zend_Json::encode($response);
    }

    /**
     * Retrieve args
     *
     * @return mixed
     */
    public function getArgs()
    {
        return $this->_args;
    }

    /**
     * Set args
     *
     * @param mixed $args
     * @return self
     */
    public function setArgs($args)
    {
        $this->_args = $args;
        return $this;
    }

    /**
     * Set service map object
     *
     * @param  Zend_Json_Server_Smd $serviceMap
     * @return Zend_Json_Server_Response
     */
    public function setServiceMap($serviceMap)
    {
        $this->_serviceMap = $serviceMap;
        return $this;
    }

    /**
     * Retrieve service map
     *
     * @return Zend_Json_Server_Smd|null
     */
    public function getServiceMap()
    {
        return $this->_serviceMap;
    }

    /**
     * Cast to string (JSON)
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }
}

PKpG[�d�/�/Json/Server/Smd/Service.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Json_Server_Smd
 */
require_once 'Zend/Json/Server/Smd.php';

/**
 * Create Service Mapping Description for a method
 * 
 * @package    Zend_Json
 * @subpackage Server
 * @version    $Id: Service.php 12510 2008-11-10 16:29:34Z matthew $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Smd_Service
{
    /**#@+
     * Service metadata
     * @var string
     */
    protected $_envelope  = Zend_Json_Server_Smd::ENV_JSONRPC_1;
    protected $_name;
    protected $_return;
    protected $_target;
    protected $_transport = 'POST';
    /**#@-*/

    /**
     * Allowed envelope types
     * @var array
     */
    protected $_envelopeTypes = array(
        Zend_Json_Server_Smd::ENV_JSONRPC_1,
        Zend_Json_Server_Smd::ENV_JSONRPC_2,
    );

    /**
     * Regex for names
     * @var string
     */
    protected $_nameRegex = '/^[a-z][a-z0-9._]+$/i';

    /**
     * Parameter option types
     * @var array
     */
    protected $_paramOptionTypes = array(
        'name'        => 'is_string',
        'optional'    => 'is_bool',
        'default'     => null,
        'description' => 'is_string',
    );

    /**
     * Service params
     * @var array
     */
    protected $_params = array();

    /**
     * Mapping of parameter types to JSON-RPC types
     * @var array
     */
    protected $_paramMap = array(
        'any'     => 'any',
        'arr'     => 'array',
        'array'   => 'array',
        'assoc'   => 'object',
        'bool'    => 'boolean',
        'boolean' => 'boolean',
        'dbl'     => 'float',
        'double'  => 'float',
        'false'   => 'boolean',
        'float'   => 'float',
        'hash'    => 'object',
        'integer' => 'integer',
        'int'     => 'integer',
        'mixed'   => 'any',
        'nil'     => 'null',
        'null'    => 'null',
        'object'  => 'object',
        'string'  => 'string',
        'str'     => 'string',
        'struct'  => 'object',
        'true'    => 'boolean',
        'void'    => 'null',
    );

    /**
     * Allowed transport types
     * @var array
     */
    protected $_transportTypes = array(
        'POST',
    );

    /**
     * Constructor
     * 
     * @param  string|array $spec 
     * @return void
     * @throws Zend_Json_Server_Exception if no name provided
     */
    public function __construct($spec)
    {
        if (is_string($spec)) {
            $this->setName($spec);
        } elseif (is_array($spec)) {
            $this->setOptions($spec);
        }

        if (null == $this->getName()) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('SMD service description requires a name; none provided');
        }
    }

    /**
     * Set object state
     * 
     * @param  array $options 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setOptions(array $options)
    {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            if ('options' == strtolower($key)) {
                continue;
            }
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set service name
     * 
     * @param  string $name 
     * @return Zend_Json_Server_Smd_Service
     * @throws Zend_Json_Server_Exception
     */
    public function setName($name)
    {
        $name = (string) $name;
        if (!preg_match($this->_nameRegex, $name)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid name "%s" provided for service; must follow PHP method naming conventions', $name));
        }
        $this->_name = $name;
        return $this;
    }

    /**
     * Retrieve name
     * 
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set Transport 
     *
     * Currently limited to POST
     * 
     * @param  string $transport 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setTransport($transport)
    {
        if (!in_array($transport, $this->_transportTypes)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid transport "%s"; please select one of (%s)', $transport, implode(', ', $this->_transportTypes)));
        }

        $this->_transport = $transport;
        return $this;
    }

    /**
     * Get transport
     * 
     * @return string
     */
    public function getTransport()
    {
        return $this->_transport;
    }

    /**
     * Set service target
     * 
     * @param  string $target 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setTarget($target)
    {
        $this->_target = (string) $target;
        return $this;
    }

    /**
     * Get service target
     * 
     * @return string
     */
    public function getTarget()
    {
        return $this->_target;
    }

    /**
     * Set envelope type
     * 
     * @param  string $envelopeType 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setEnvelope($envelopeType)
    {
        if (!in_array($envelopeType, $this->_envelopeTypes)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception(sprintf('Invalid envelope type "%s"; please specify one of (%s)', $envelopeType, implode(', ', $this->_envelopeTypes)));
        }

        $this->_envelope = $envelopeType;
        return $this;
    }

    /**
     * Get envelope type
     * 
     * @return string
     */
    public function getEnvelope()
    {
        return $this->_envelope;
    }

    /**
     * Add a parameter to the service
     * 
     * @param  string|array $type 
     * @param  array $options 
     * @param  int|null $order 
     * @return Zend_Json_Server_Smd_Service
     */
    public function addParam($type, array $options = array(), $order = null)
    {
        if (is_string($type)) {
            $type = $this->_validateParamType($type);
        } elseif (is_array($type)) {
            foreach ($type as $key => $paramType) {
                $type[$key] = $this->_validateParamType($paramType);
            }
        } else {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid param type provided');
        }

        $paramOptions = array(
            'type' => $type,
        );
        foreach ($options as $key => $value) {
            if (in_array($key, array_keys($this->_paramOptionTypes))) {
                if (null !== ($callback = $this->_paramOptionTypes[$key])) {
                    if (!$callback($value)) {
                        continue;
                    }
                }
                $paramOptions[$key] = $value;
            }
        }

        $this->_params[] = array(
            'param' => $paramOptions,
            'order' => $order,
        );

        return $this;
    }

    /**
     * Add params
     *
     * Each param should be an array, and should include the key 'type'.
     * 
     * @param  array $params 
     * @return Zend_Json_Server_Smd_Service
     */
    public function addParams(array $params)
    {
        ksort($params);
        foreach ($params as $options) {
            if (!is_array($options)) {
                continue;
            }
            if (!array_key_exists('type', $options)) {
                continue;
            }
            $type  = $options['type'];
            $order = (array_key_exists('order', $options)) ? $options['order'] : null;
            $this->addParam($type, $options, $order);
        }
        return $this;
    }

    /**
     * Overwrite all parameters
     * 
     * @param  array $params 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setParams(array $params)
    {
        $this->_params = array();
        return $this->addParams($params);
    }

    /**
     * Get all parameters 
     *
     * Returns all params in specified order.
     * 
     * @return array
     */
    public function getParams()
    {
        $params = array();
        $index  = 0;
        foreach ($this->_params as $param) {
            if (null === $param['order']) {
                if (array_search($index, array_keys($params), true)) {
                    ++$index;
                }
                $params[$index] = $param['param'];
                ++$index;
            } else {
                $params[$param['order']] = $param['param'];
            }
        }
        ksort($params);
        return $params;
    }

    /**
     * Set return type
     * 
     * @param  string|array $type 
     * @return Zend_Json_Server_Smd_Service
     */
    public function setReturn($type)
    {
        if (is_string($type)) {
            $type = $this->_validateParamType($type, true);
        } elseif (is_array($type)) {
            foreach ($type as $key => $returnType) {
                $type[$key] = $this->_validateParamType($returnType, true);
            }
        } else {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid param type provided ("' . gettype($type) .'")');
        }
        $this->_return = $type;
        return $this;
    }

    /**
     * Get return type
     * 
     * @return string|array
     */
    public function getReturn()
    {
        return $this->_return;
    }

    /**
     * Cast service description to array
     * 
     * @return array
     */
    public function toArray()
    {
        $name       = $this->getName();
        $envelope   = $this->getEnvelope();
        $target     = $this->getTarget();
        $transport  = $this->getTransport();
        $parameters = $this->getParams();
        $returns    = $this->getReturn();

        if (empty($target)) {
            return compact('envelope', 'transport', 'parameters', 'returns');
        } 

        return $paramInfo = compact('envelope', 'target', 'transport', 'parameters', 'returns');
    }

    /**
     * Return JSON encoding of service
     * 
     * @return string
     */
    public function toJson()
    {
        $service = array($this->getName() => $this->toArray());

        require_once 'Zend/Json.php';
        return Zend_Json::encode($service);
    }

    /**
     * Cast to string
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }

    /**
     * Validate parameter type
     * 
     * @param  string $type 
     * @return true
     * @throws Zend_Json_Server_Exception
     */
    protected function _validateParamType($type, $isReturn = false)
    {
        if (!is_string($type)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid param type provided ("' . $type .'")');
        }

        if (!array_key_exists($type, $this->_paramMap)) {
            $type = 'object';
        }

        $paramType = $this->_paramMap[$type];
        if (!$isReturn && ('null' == $paramType)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid param type provided ("' . $type . '")');
        }

        return $paramType;
    }
}
PKpG[NB�QQJson/Server/Response/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Json_Server_Response
 */
require_once 'Zend/Json/Server/Response.php';

/**
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Response_Http extends Zend_Json_Server_Response
{
    /**
     * Emit JSON
     *
     * Send appropriate HTTP headers. If no Id, then return an empty string.
     * 
     * @return string
     */
    public function toJson()
    {
        $this->sendHeaders();
        if (!$this->isError() && null === $this->getId()) {
            return '';
        }

        return parent::toJson();
    }

    /**
     * Send headers
     *
     * If headers are already sent, do nothing. If null ID, send HTTP 204 
     * header. Otherwise, send content type header based on content type of 
     * service map.
     * 
     * @return void
     */
    public function sendHeaders()
    {
        if (headers_sent()) {
            return;
        }

        if (!$this->isError() && (null === $this->getId())) {
            header('HTTP/1.1 204 No Content');
            return;
        }

        if (null === ($smd = $this->getServiceMap())) {
            return;
        }

        $contentType = $smd->getContentType();
        if (!empty($contentType)) {
            header('Content-Type: ' . $contentType);
        }
    }
}
PKpG[�e2�x
x
Json/Server/Cache.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/** Zend_Server_Cache */
require_once 'Zend/Server/Cache.php';

/**
 * Zend_Json_Server_Cache: cache Zend_Json_Server server definition and SMD
 *
 * @category   Zend
 * @package    Zend_Json
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Cache extends Zend_Server_Cache
{
    /**
     * Cache a service map description (SMD) to a file
     *
     * Returns true on success, false on failure
     * 
     * @param  string $filename 
     * @param  Zend_Json_Server $server 
     * @return boolean
     */
    public static function saveSmd($filename, Zend_Json_Server $server)
    {
        if (!is_string($filename)
            || (!file_exists($filename) && !is_writable(dirname($filename))))
        {
            return false;
        }

        if (0 === @file_put_contents($filename, $server->getServiceMap()->toJson())) {
            return false;
        }

        return true;
    }

    /**
     * Retrieve a cached SMD
     *
     * On success, returns the cached SMD (a JSON string); an failure, returns 
     * boolean false.
     * 
     * @param  string $filename 
     * @return string|false
     */
    public static function getSmd($filename)
    {
        if (!is_string($filename)
            || !file_exists($filename)
            || !is_readable($filename))
        {
            return false;
        }


        if (false === ($smd = @file_get_contents($filename))) {
            return false;
        }

        return $smd;
    }

    /**
     * Delete a file containing a cached SMD
     * 
     * @param  string $filename 
     * @return bool
     */
    public static function deleteSmd($filename)
    {
        if (is_string($filename) && file_exists($filename)) {
            unlink($filename);
            return true;
        }

        return false;
    }
}
PKpG[���P}}Json/Server/Request/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Json_Server_Request
 */
require_once 'Zend/Json/Server/Request.php';

/**
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server_Request_Http extends Zend_Json_Server_Request
{
    /**
     * Raw JSON pulled from POST body
     * @var string
     */
    protected $_rawJson;

    /**
     * Constructor
     *
     * Pull JSON request from raw POST body and use to populate request.
     * 
     * @return void
     */
    public function __construct()
    {
        $json = file_get_contents('php://input');
        $this->_rawJson = $json;
        if (!empty($json)) {
            $this->loadJson($json);
        }
    }

    /**
     * Get JSON from raw POST body
     * 
     * @return string
     */
    public function getRawJson()
    {
        return $this->_rawJson;
    }
}
PKpG[���\��Json/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Exception extends Zend_Exception
{}

PKpG[���ǀ;�;Json/Server.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Server_Abstract
 */
require_once 'Zend/Server/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Server extends Zend_Server_Abstract
{
    /**#@+
     * Version Constants
     * @const string
     */
    const VERSION_1 = '1.0';
    const VERSION_2 = '2.0';
    /**#@-*/

    /**
     * Flag: whether or not to auto-emit the response
     * @var bool
     */
    protected $_autoEmitResponse = true;

    /**
     * @var bool Flag; allow overwriting existing methods when creating server definition
     */
    protected $_overwriteExistingMethods = true;

    /**
     * Request object
     * @var Zend_Json_Server_Request
     */
    protected $_request;

    /**
     * Response object
     * @var Zend_Json_Server_Response
     */
    protected $_response;

    /**
     * SMD object
     * @var Zend_Json_Server_Smd
     */
    protected $_serviceMap;

    /**
     * SMD class accessors
     * @var array
     */
    protected $_smdMethods;

    /**
     * @var Zend_Server_Description
     */
    protected $_table;

    /**
     * Attach a function or callback to the server
     * 
     * @param  string|array $function Valid PHP callback
     * @param  string $namespace  Ignored
     * @return Zend_Json_Server
     */
    public function addFunction($function, $namespace = '')
    {
        if (!is_string($function) && (!is_array($function) || (2 > count($function)))) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Unable to attach function; invalid');
        }

        if (!is_callable($function)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Unable to attach function; does not exist');
        }

        $argv = null;
        if (2 < func_num_args()) {
            $argv = func_get_args();
            $argv = array_slice($argv, 2);
        }

        require_once 'Zend/Server/Reflection.php';
        if (is_string($function)) {
            $method = Zend_Server_Reflection::reflectFunction($function, $argv, $namespace);
        } else {
            $class  = array_shift($function);
            $action = array_shift($function);
            $reflection = Zend_Server_Reflection::reflectClass($class, $argv, $namespace);
            $methods = $reflection->getMethods();
            $found   = false;
            foreach ($methods as $method) {
                if ($action == $method->getName()) {
                    $found = true;
                    break;
                }
            }
            if (!$found) {
                $this->fault('Method not found', -32601);
                return $this;
            }
        }

        $definition = $this->_buildSignature($method);
        $this->_addMethodServiceMap($definition);

        return $this;
    }

    /**
     * Register a class with the server
     * 
     * @param  string $class 
     * @param  string $namespace Ignored
     * @param  mixed $argv Ignored
     * @return Zend_Json_Server
     */
    public function setClass($class, $namespace = '', $argv = null)
    {
        $argv = null;
        if (3 < func_num_args()) {
            $argv = func_get_args();
            $argv = array_slice($argv, 3);
        }

        require_once 'Zend/Server/Reflection.php';
        $reflection = Zend_Server_Reflection::reflectClass($class, $argv, $namespace);

        foreach ($reflection->getMethods() as $method) {
            $definition = $this->_buildSignature($method, $class);
            $this->_addMethodServiceMap($definition);
        }
        return $this;
    }

    /**
     * Indicate fault response
     * 
     * @param  string $fault 
     * @param  int $code 
     * @return false
     */
    public function fault($fault = null, $code = 404, $data = null)
    {
        require_once 'Zend/Json/Server/Error.php';
        $error = new Zend_Json_Server_Error($fault, $code, $data);
        $this->getResponse()->setError($error);
        return $error;
    }

    /**
     * Handle request
     * 
     * @param  Zend_Json_Server_Request $request 
     * @return null|Zend_Json_Server_Response
     */
    public function handle($request = false)
    {
        if ((false !== $request) && (!$request instanceof Zend_Json_Server_Request)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid request type provided; cannot handle');
        } elseif ($request) {
            $this->setRequest($request);
        }

        // Handle request
        $this->_handle();

        // Get response
        $response = $this->_getReadyResponse();

        // Emit response?
        if ($this->autoEmitResponse()) {
            echo $response;
            return;
        }

        // or return it?
        return $response;
    }

    /**
     * Load function definitions
     * 
     * @param  array|Zend_Server_Definition $definition 
     * @return void
     */
    public function loadFunctions($definition)
    {
        if (!is_array($definition) && (!$definition instanceof Zend_Server_Definition)) {
            require_once 'Zend/Json/Server/Exception.php';
            throw new Zend_Json_Server_Exception('Invalid definition provided to loadFunctions()');
        }

        foreach ($definition as $key => $method) {
            $this->_table->addMethod($method, $key);
            $this->_addMethodServiceMap($method);
        }
    }

    public function setPersistence($mode)
    {
    }

    /**
     * Set request object
     * 
     * @param  Zend_Json_Server_Request $request 
     * @return Zend_Json_Server
     */
    public function setRequest(Zend_Json_Server_Request $request)
    {
        $this->_request = $request;
        return $this;
    }

    /**
     * Get JSON-RPC request object
     * 
     * @return Zend_Json_Server_Request
     */
    public function getRequest()
    {
        if (null === ($request = $this->_request)) {
            require_once 'Zend/Json/Server/Request/Http.php';
            $this->setRequest(new Zend_Json_Server_Request_Http());
        }
        return $this->_request;
    }

    /**
     * Set response object
     * 
     * @param  Zend_Json_Server_Response $response 
     * @return Zend_Json_Server
     */
    public function setResponse(Zend_Json_Server_Response $response)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Get response object
     * 
     * @return Zend_Json_Server_Response
     */
    public function getResponse()
    {
        if (null === ($response = $this->_response)) {
            require_once 'Zend/Json/Server/Response/Http.php';
            $this->setResponse(new Zend_Json_Server_Response_Http());
        }
        return $this->_response;
    }

    /**
     * Set flag indicating whether or not to auto-emit response
     * 
     * @param  bool $flag 
     * @return Zend_Json_Server
     */
    public function setAutoEmitResponse($flag)
    {
        $this->_autoEmitResponse = (bool) $flag;
        return $this;
    }

    /**
     * Will we auto-emit the response?
     * 
     * @return bool
     */
    public function autoEmitResponse()
    {
        return $this->_autoEmitResponse;
    }

    // overloading for SMD metadata
    /**
     * Overload to accessors of SMD object
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (preg_match('/^(set|get)/', $method, $matches)) {
            if (in_array($method, $this->_getSmdMethods())) {
                if ('set' == $matches[1]) {
                    $value = array_shift($args);
                    $this->getServiceMap()->$method($value);
                    return $this;
                } else {
                    return $this->getServiceMap()->$method();
                }
            }
        }
        return null;
    }

    /**
     * Retrieve SMD object
     * 
     * @return Zend_Json_Server_Smd
     */
    public function getServiceMap()
    {
        if (null === $this->_serviceMap) {
            require_once 'Zend/Json/Server/Smd.php';
            $this->_serviceMap = new Zend_Json_Server_Smd();
        }
        return $this->_serviceMap;
    }

    /**
     * Add service method to service map
     * 
     * @param  Zend_Server_Reflection_Function $method 
     * @return void
     */
    protected function _addMethodServiceMap(Zend_Server_Method_Definition $method)
    {
        $serviceInfo = array(
            'name'   => $method->getName(),
            'return' => $this->_getReturnType($method),
        );
        $params = $this->_getParams($method);
        $serviceInfo['params'] = $params;
        $serviceMap = $this->getServiceMap();
        if (false !== $serviceMap->getService($serviceInfo['name'])) {
            $serviceMap->removeService($serviceInfo['name']);
        }
        $serviceMap->addService($serviceInfo);
    }

    /**
     * Translate PHP type to JSON type
     * 
     * @param  string $type 
     * @return string
     */
    protected function _fixType($type)
    {
        return $type;
    }

    /**
     * Get default params from signature
     * 
     * @param  array $args 
     * @param  array $params 
     * @return array
     */
    protected function _getDefaultParams(array $args, array $params)
    {
        $defaultParams = array_slice($params, count($args));
        foreach ($defaultParams as $param) {
            $value = null;
            if (array_key_exists('default', $param)) {
                $value = $param['default'];
            }
            array_push($args, $value);
        }
        return $args;
    }

    /**
     * Get method param type
     * 
     * @param  Zend_Server_Reflection_Function_Abstract $method 
     * @return string|array
     */
    protected function _getParams(Zend_Server_Method_Definition $method)
    {
        $params = array();
        foreach ($method->getPrototypes() as $prototype) {
            foreach ($prototype->getParameterObjects() as $key => $parameter) {
                if (!isset($params[$key])) {
                    $params[$key] = array(
                        'type'     => $parameter->getType(),
                        'name'     => $parameter->getName(),
                        'optional' => $parameter->isOptional(),
                    );
                    if (null !== ($default = $parameter->getDefaultValue())) {
                        $params[$key]['default'] = $default;
                    }
                    $description = $parameter->getDescription();
                    if (!empty($description)) {
                        $params[$key]['description'] = $description;
                    }
                    continue;
                }
                $newType = $parameter->getType();
                if (!is_array($params[$key]['type'])) {
                    if ($params[$key]['type'] == $newType) {
                        continue;
                    }
                    $params[$key]['type'] = (array) $params[$key]['type'];
                } elseif (in_array($newType, $params[$key]['type'])) {
                    continue;
                }
                array_push($params[$key]['type'], $parameter->getType());
            }
        }
        return $params;
    }

    /**
     * Set response state
     * 
     * @return Zend_Json_Server_Response
     */
    protected function _getReadyResponse()
    {
        $request  = $this->getRequest();
        $response = $this->getResponse();

        $response->setServiceMap($this->getServiceMap());
        if (null !== ($id = $request->getId())) {
            $response->setId($id);
        }
        if (null !== ($version = $request->getVersion())) {
            $response->setVersion($version);
        }

        return $response;
    }

    /**
     * Get method return type
     * 
     * @param  Zend_Server_Reflection_Function_Abstract $method 
     * @return string|array
     */
    protected function _getReturnType(Zend_Server_Method_Definition $method)
    {
        $return = array();
        foreach ($method->getPrototypes() as $prototype) {
            $return[] = $prototype->getReturnType();
        }
        if (1 == count($return)) {
            return $return[0];
        }
        return $return;
    }

    /**
     * Retrieve list of allowed SMD methods for proxying
     * 
     * @return array
     */
    protected function _getSmdMethods()
    {
        if (null === $this->_smdMethods) {
            $this->_smdMethods = array();
            require_once 'Zend/Json/Server/Smd.php';
            $methods = get_class_methods('Zend_Json_Server_Smd');
            foreach ($methods as $key => $method) {
                if (!preg_match('/^(set|get)/', $method)) {
                    continue;
                }
                if (strstr($method, 'Service')) {
                    continue;
                }
                $this->_smdMethods[] = $method;
            }
        }
        return $this->_smdMethods;
    }

    /**
     * Internal method for handling request
     * 
     * @return void
     */
    protected function _handle()
    {
        $request = $this->getRequest();

        if (!$request->isMethodError() && (null === $request->getMethod())) {
            return $this->fault('Invalid Request', -32600);
        }

        if ($request->isMethodError()) {
            return $this->fault('Invalid Request', -32600);
        }

        $method = $request->getMethod();
        if (!$this->_table->hasMethod($method)) {
            return $this->fault('Method not found', -32601);
        }

        $params        = $request->getParams();
        $invocable     = $this->_table->getMethod($method);
        $serviceMap    = $this->getServiceMap();
        $service       = $serviceMap->getService($method);
        $serviceParams = $service->getParams();

        if (count($params) < count($serviceParams)) {
            $params = $this->_getDefaultParams($params, $serviceParams);
        }

        try {
            $result = $this->_dispatch($invocable, $params);
        } catch (Exception $e) {
            return $this->fault($e->getMessage(), $e->getCode());
        }

        $this->getResponse()->setResult($result);
    }
}
PKpG[�}�5�5Json/Decoder.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Json
 */
require_once 'Zend/Json.php';

/**
 * @see Zend_Json_Exception
 */
require_once 'Zend/Json/Exception.php';


/**
 * Decode JSON encoded string to PHP variable constructs
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json_Decoder
{
    /**
     * Parse tokens used to decode the JSON object. These are not
     * for public consumption, they are just used internally to the
     * class.
     */
    const EOF         = 0;
    const DATUM        = 1;
    const LBRACE    = 2;
    const LBRACKET    = 3;
    const RBRACE     = 4;
    const RBRACKET    = 5;
    const COMMA       = 6;
    const COLON        = 7;

    /**
     * Use to maintain a "pointer" to the source being decoded
     *
     * @var string
     */
    protected $_source;

    /**
     * Caches the source length
     *
     * @var int
     */
    protected $_sourceLength;

    /**
     * The offset within the souce being decoded
     *
     * @var int
     *
     */
    protected $_offset;

    /**
     * The current token being considered in the parser cycle
     *
     * @var int
     */
    protected $_token;

    /**
     * Flag indicating how objects should be decoded
     *
     * @var int
     * @access protected
     */
    protected $_decodeType;

    /**
     * Constructor
     *
     * @param string $source String source to decode
     * @param int $decodeType How objects should be decoded -- see
     * {@link Zend_Json::TYPE_ARRAY} and {@link Zend_Json::TYPE_OBJECT} for
     * valid values
     * @return void
     */
    protected function __construct($source, $decodeType)
    {
        // Set defaults
        $this->_source       = $source;
        $this->_sourceLength = strlen($source);
        $this->_token        = self::EOF;
        $this->_offset       = 0;

        // Normalize and set $decodeType
        if (!in_array($decodeType, array(Zend_Json::TYPE_ARRAY, Zend_Json::TYPE_OBJECT)))
        {
            $decodeType = Zend_Json::TYPE_ARRAY;
        }
        $this->_decodeType   = $decodeType;

        // Set pointer at first token
        $this->_getNextToken();
    }

    /**
     * Decode a JSON source string
     *
     * Decodes a JSON encoded string. The value returned will be one of the
     * following:
     *        - integer
     *        - float
     *        - boolean
     *        - null
     *      - StdClass
     *      - array
     *         - array of one or more of the above types
     *
     * By default, decoded objects will be returned as associative arrays; to
     * return a StdClass object instead, pass {@link Zend_Json::TYPE_OBJECT} to
     * the $objectDecodeType parameter.
     *
     * Throws a Zend_Json_Exception if the source string is null.
     *
     * @static
     * @access public
     * @param string $source String to be decoded
     * @param int $objectDecodeType How objects should be decoded; should be
     * either or {@link Zend_Json::TYPE_ARRAY} or
     * {@link Zend_Json::TYPE_OBJECT}; defaults to TYPE_ARRAY
     * @return mixed
     * @throws Zend_Json_Exception
     */
    public static function decode($source = null, $objectDecodeType = Zend_Json::TYPE_ARRAY)
    {
        if (null === $source) {
            throw new Zend_Json_Exception('Must specify JSON encoded source for decoding');
        } elseif (!is_string($source)) {
            throw new Zend_Json_Exception('Can only decode JSON encoded strings');
        }

        $decoder = new self($source, $objectDecodeType);

        return $decoder->_decodeValue();
    }


    /**
     * Recursive driving rountine for supported toplevel tops
     *
     * @return mixed
     */
    protected function _decodeValue()
    {
        switch ($this->_token) {
            case self::DATUM:
                $result  = $this->_tokenValue;
                $this->_getNextToken();
                return($result);
                break;
            case self::LBRACE:
                return($this->_decodeObject());
                break;
            case self::LBRACKET:
                return($this->_decodeArray());
                break;
            default:
                return null;
                break;
        }
    }

    /**
     * Decodes an object of the form:
     *  { "attribute: value, "attribute2" : value,...}
     *
     * If Zend_Json_Encoder was used to encode the original object then 
     * a special attribute called __className which specifies a class
     * name that should wrap the data contained within the encoded source.
     *
     * Decodes to either an array or StdClass object, based on the value of
     * {@link $_decodeType}. If invalid $_decodeType present, returns as an
     * array.
     *
     * @return array|StdClass
     */
    protected function _decodeObject()
    {
        $members = array();
        $tok = $this->_getNextToken();

        while ($tok && $tok != self::RBRACE) {
            if ($tok != self::DATUM || ! is_string($this->_tokenValue)) {
                throw new Zend_Json_Exception('Missing key in object encoding: ' . $this->_source);
            }

            $key = $this->_tokenValue;
            $tok = $this->_getNextToken();

            if ($tok != self::COLON) {
                throw new Zend_Json_Exception('Missing ":" in object encoding: ' . $this->_source);
            }

            $tok = $this->_getNextToken();
            $members[$key] = $this->_decodeValue();
            $tok = $this->_token;

            if ($tok == self::RBRACE) {
                break;
            }

            if ($tok != self::COMMA) {
                throw new Zend_Json_Exception('Missing "," in object encoding: ' . $this->_source);
            }

            $tok = $this->_getNextToken();
        }

        switch ($this->_decodeType) {
            case Zend_Json::TYPE_OBJECT:
                // Create new StdClass and populate with $members
                $result = new StdClass();
                foreach ($members as $key => $value) {
                    $result->$key = $value;
                }
                break;
            case Zend_Json::TYPE_ARRAY:
            default:
                $result = $members;
                break;
        }

        $this->_getNextToken();
        return $result;
    }

    /**
     * Decodes a JSON array format:
     *    [element, element2,...,elementN]
     *
     * @return array
     */
    protected function _decodeArray()
    {
        $result = array();
        $starttok = $tok = $this->_getNextToken(); // Move past the '['
        $index  = 0;

        while ($tok && $tok != self::RBRACKET) {
            $result[$index++] = $this->_decodeValue();

            $tok = $this->_token;

            if ($tok == self::RBRACKET || !$tok) {
                break;
            }

            if ($tok != self::COMMA) {
                throw new Zend_Json_Exception('Missing "," in array encoding: ' . $this->_source);
            }

            $tok = $this->_getNextToken();
        }

        $this->_getNextToken();
        return($result);
    }


    /**
     * Removes whitepsace characters from the source input
     */
    protected function _eatWhitespace()
    {
        if (preg_match(
                '/([\t\b\f\n\r ])*/s',
                $this->_source,
                $matches,
                PREG_OFFSET_CAPTURE,
                $this->_offset)
            && $matches[0][1] == $this->_offset)
        {
            $this->_offset += strlen($matches[0][0]);
        }
    }


    /**
     * Retrieves the next token from the source stream
     *
     * @return int Token constant value specified in class definition
     */
    protected function _getNextToken()
    {
        $this->_token      = self::EOF;
        $this->_tokenValue = null;
        $this->_eatWhitespace();

        if ($this->_offset >= $this->_sourceLength) {
            return(self::EOF);
        }

        $str        = $this->_source;
        $str_length = $this->_sourceLength;
        $i          = $this->_offset;
        $start      = $i;

        switch ($str{$i}) {
            case '{':
               $this->_token = self::LBRACE;
               break;
            case '}':
                $this->_token = self::RBRACE;
                break;
            case '[':
                $this->_token = self::LBRACKET;
                break;
            case ']':
                $this->_token = self::RBRACKET;
                break;
            case ',':
                $this->_token = self::COMMA;
                break;
            case ':':
                $this->_token = self::COLON;
                break;
            case  '"':
                $result = '';
                do {
                    $i++;
                    if ($i >= $str_length) {
                        break;
                    }

                    $chr = $str{$i};
                    if ($chr == '\\') {
                        $i++;
                        if ($i >= $str_length) {
                            break;
                        }
                        $chr = $str{$i};
                        switch ($chr) {
                            case '"' :
                                $result .= '"';
                                break;
                            case '\\':
                                $result .= '\\';
                                break;
                            case '/' :
                                $result .= '/';
                                break;
                            case 'b' :
                                $result .= chr(8);
                                break;
                            case 'f' :
                                $result .= chr(12);
                                break;
                            case 'n' :
                                $result .= chr(10);
                                break;
                            case 'r' :
                                $result .= chr(13);
                                break;
                            case 't' :
                                $result .= chr(9);
                                break;
                            case '\'' :
                                $result .= '\'';
                                break;
                            default:
                                throw new Zend_Json_Exception("Illegal escape "
                                    .  "sequence '" . $chr . "'");
                            }
                    } elseif ($chr == '"') {
                        break;
                    } else {
                        $result .= $chr;
                    }
                } while ($i < $str_length);

                $this->_token = self::DATUM;
                //$this->_tokenValue = substr($str, $start + 1, $i - $start - 1);
                $this->_tokenValue = $result;
                break;
            case 't':
                if (($i+ 3) < $str_length && substr($str, $start, 4) == "true") {
                    $this->_token = self::DATUM;
                }
                $this->_tokenValue = true;
                $i += 3;
                break;
            case 'f':
                if (($i+ 4) < $str_length && substr($str, $start, 5) == "false") {
                    $this->_token = self::DATUM;
                }
                $this->_tokenValue = false;
                $i += 4;
                break;
            case 'n':
                if (($i+ 3) < $str_length && substr($str, $start, 4) == "null") {
                    $this->_token = self::DATUM;
                }
                $this->_tokenValue = NULL;
                $i += 3;
                break;
        }

        if ($this->_token != self::EOF) {
            $this->_offset = $i + 1; // Consume the last token character
            return($this->_token);
        }

        $chr = $str{$i};
        if ($chr == '-' || $chr == '.' || ($chr >= '0' && $chr <= '9')) {
            if (preg_match('/-?([0-9])*(\.[0-9]*)?((e|E)((-|\+)?)[0-9]+)?/s',
                $str, $matches, PREG_OFFSET_CAPTURE, $start) && $matches[0][1] == $start) {

                $datum = $matches[0][0];

                if (is_numeric($datum)) {
                    if (preg_match('/^0\d+$/', $datum)) {
                        throw new Zend_Json_Exception("Octal notation not supported by JSON (value: $datum)");
                    } else {
                        $val  = intval($datum);
                        $fVal = floatval($datum);
                        $this->_tokenValue = ($val == $fVal ? $val : $fVal);
                    }
                } else {
                    throw new Zend_Json_Exception("Illegal number format: $datum");
                }

                $this->_token = self::DATUM;
                $this->_offset = $start + strlen($datum);
            }
        } else {
            throw new Zend_Json_Exception('Illegal Token');
        }

        return($this->_token);
    }
}

PKpG[� �-��Captcha/Base.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Adapter */
require_once 'Zend/Captcha/Adapter.php';

/** Zend_Validate_Abstract */
require_once 'Zend/Validate/Abstract.php';

/**
 * Base class for Captcha adapters
 * 
 * Provides some utility functionality to build on
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
abstract class Zend_Captcha_Base extends Zend_Validate_Abstract implements Zend_Captcha_Adapter 
{
    /**
     * Element name
     * 
     * Useful to generate/check form fields
     *
     * @var string
     */
    protected $_name;

    /**
     * Captcha options 
     * 
     * @var array
     */
    protected $_options = array();

    /**
     * Options to skip when processing options
     * @var array
     */
    protected $_skipOptions = array(
        'options',
        'config',
    );
    
    /**
     * Get name
     * 
     * @return string
     */
    public function getName() 
    {
        return $this->_name;
    }
    
    /**
     * Set name 
     * 
     * @param string $name
     */
    public function setName($name) 
    {
        $this->_name = $name;
        return $this;
    }

    /**
     * Constructor
     *
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($options = null)
    {
        // Set options
        if (is_array($options)) {
            $this->setOptions($options);
        } else if ($options instanceof Zend_Config) {
            $this->setConfig($options);
        } 
    } 
    
    /**
     * Set single option for the object
     *
     * @param string $key
     * @param string $value
     * @return Zend_Form_Element
     */
    public function setOption($key, $value)
    {
        if (in_array(strtolower($key), $this->_skipOptions)) {
            return $this;
        }

        $method = 'set' . ucfirst ($key);
        if (method_exists ($this, $method)) {
            // Setter exists; use it
            $this->$method ($value);
            $this->_options[$key] = $value;
        } elseif (property_exists($this, $key)) {
            // Assume it's metadata
            $this->$key = $value;
            $this->_options[$key] = $value;
        }
        return $this;
    }
    
    /**
     * Set object state from options array
     * 
     * @param  array $options 
     * @return Zend_Form_Element
     */
    public function setOptions($options = null)
    {
        foreach ($options as $key => $value) {
            $this->setOption($key, $value);
        }
        return $this;
    }
    
    /**
     * Retrieve options representing object state
     * 
     * @return array
     */
    public function getOptions()
    {
        return $this->_options;
    }

    /**
     * Set object state from config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Captcha_Base
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

    /**
     * Get optional decorator
     * 
     * By default, return null, indicating no extra decorator needed.
     *
     * @return null
     */
    public function getDecorator() 
    {
        return null;
    }
}
PKpG[)��HHCaptcha/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @copyright  Copyright (c) 2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once ('Zend/Exception.php');

/**
 * Exception for Zend_Form component.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @copyright  Copyright (c) 2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Captcha_Exception extends Zend_Exception
{
}
PKpG[��;���Captcha/ReCaptcha.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Base */
require_once 'Zend/Captcha/Base.php';

/** Zend_Service_ReCaptcha */
require_once 'Zend/Service/ReCaptcha.php';

/**
 * ReCaptcha adapter
 * 
 * Allows to insert captchas driven by ReCaptcha service
 * 
 * @see http://recaptcha.net/apidocs/captcha/
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Captcha_ReCaptcha extends Zend_Captcha_Base 
{
    /**
     * Recaptcha public key
     *
     * @var string
     */
    protected $_pubkey;

    /**
     * Recaptcha private key
     *
     * @var string
     */
    protected $_privkey;
    
    /**@+
     * ReCaptcha Field names 
     * @var string
     */
    protected $_CHALLENGE = 'recaptcha_challenge_field';
    protected $_RESPONSE  = 'recaptcha_response_field';
    /**@-*/
     
    /**
     * Recaptcha service object
     *
     * @var Zend_Service_Recaptcha
     */
    protected $_service;

    /**
     * Parameters defined by the service
     * 
     * @var array
     */
    protected $_serviceParams = array();

    /**#@+
     * Error codes
     * @const string
     */
    const MISSING_VALUE = 'missingValue';
    const ERR_CAPTCHA   = 'errCaptcha';
    const BAD_CAPTCHA   = 'badCaptcha';
    /**#@-*/

    /**
     * Error messages
     * @var array
     */
    protected $_messageTemplates = array(
        self::MISSING_VALUE => 'Missing captcha fields',
        self::ERR_CAPTCHA   => 'Failed to validate captcha',
        self::BAD_CAPTCHA   => 'Captcha value is wrong: %value%',
    );
    
    /**
     * Retrieve ReCaptcha Private key
     *
     * @return string
     */
    public function getPrivkey() 
    {
        return $this->_privkey;
    }
    
    /**
     * Retrieve ReCaptcha Public key
     *
     * @return string
     */
    public function getPubkey() 
    {
        return $this->_pubkey;
    }
    
    /**
     * Set ReCaptcha Private key
     *
     * @param string $_privkey
     * @return Zend_Captcha_ReCaptcha
     */
    public function setPrivkey($privkey) 
    {
        $this->_privkey = $privkey;
        return $this;
    }
    
    /**
     * Set ReCaptcha public key
     *
     * @param string $_pubkey
     * @return Zend_Captcha_ReCaptcha
     */
    public function setPubkey($pubkey) 
    {
        $this->_pubkey = $pubkey;
        return $this;
    }
    
    /**
     * Constructor
     *
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($options = null)
    {
        parent::__construct($options);

        $this->setService(new Zend_Service_ReCaptcha($this->getPubKey(), $this->getPrivKey()));
        $this->_serviceParams = $this->getService()->getParams();

        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        }
        if (!empty($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * Set service object
     * 
     * @param  Zend_Service_ReCaptcha $service 
     * @return Zend_Captcha_ReCaptcha
     */
    public function setService(Zend_Service_ReCaptcha $service)
    {
        $this->_service = $service;
        return $this;
    }

    /**
     * Retrieve ReCaptcha service object
     * 
     * @return Zend_Service_ReCaptcha
     */
    public function getService()
    {
        return $this->_service;
    }

    /**
     * Set option
     *
     * If option is a service parameter, proxies to the service.
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Captcha_ReCaptcha
     */
    public function setOption($key, $value)
    {
        $service = $this->getService();
        if (isset($this->_serviceParams[$key])) {
            $service->setParam($key, $value);
            return $this;
        }
        return parent::setOption($key, $value);
    }
    
    /**
     * Generate captcha
     *
     * @see Zend_Form_Captcha_Adapter::generate()
     * @return string
     */
    public function generate()
    {
        return "";
    }

    /**
     * Validate captcha
     *
     * @see    Zend_Validate_Interface::isValid()
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value, $context = null)
    {
        if (!is_array($value) && !is_array($context)) {
            $this->_error(self::MISSING_VALUE);
            return false;
        }
        if (!is_array($value) && is_array($context)) {
            $value = $context;
        }

        if (empty($value[$this->_CHALLENGE]) || empty($value[$this->_RESPONSE])) {
            $this->_error(self::MISSING_VALUE);
            return false;
        }

        $service = $this->getService();
        
        $res = $service->verify($value[$this->_CHALLENGE], $value[$this->_RESPONSE]); 
        
        if (!$res) {
            $this->_error(self::ERR_CAPTCHA);
            return false;
        }
        
        if (!$res->isValid()) {
            $this->_error(self::BAD_CAPTCHA, $res->getErrorCode());
            $service->setParam('error', $res->getErrorCode());
            return false;
        }

        return true;
    }
    
    /**
     * Render captcha
     * 
     * @param  Zend_View $view 
     * @param  mixed $element 
     * @return string
     */
    public function render(Zend_View_Interface $view, $element = null)
    {
        return $this->getService()->getHTML();
    }
}
PKpG[w\	��Captcha/Adapter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Validate_Interface */
require_once 'Zend/Validate/Interface.php';

/**
 * Generic Captcha adapter interface
 * 
 * Each specific captcha implementation should implement this interface
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
interface Zend_Captcha_Adapter extends Zend_Validate_Interface 
{
    /**
     * Generate a new captcha
     *
     * @return string new captcha ID
     */
    public function generate();

    /**
     * Display the captcha
     *
     * @param  Zend_View_Interface $view
     * @param  mixed $element
     * @return string
     */
    public function render(Zend_View_Interface $view, $element = null);

    /**
     * Set captcha name
     *
     * @param  string $name
     * @return Zend_Captcha_Adapter
     */
    public function setName($name);

    /**
     * Get captcha name
     * 
     * @return string
     */
    public function getName();

    /**
     * Get optional private decorator for this captcha type
     *
     * @return Zend_Form_Decorator_Interface|string
     */
    public function getDecorator();
}
PKpG[����qqCaptcha/Figlet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Word */
require_once 'Zend/Captcha/Word.php';

/** Zend_Text_Figlet */
require_once 'Zend/Text/Figlet.php';

/**
 * Captcha based on figlet text rendering service
 * 
 * Note that this engine seems not to like numbers
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Captcha_Figlet extends Zend_Captcha_Word
{
    /**
     * Figlet text renderer
     *
     * @var Zend_Text_Figlet
     */
    protected $_figlet;
    
    /**
     * Constructor
     * 
     * @param  null|string|array|Zend_Config $options 
     * @return void
     */
    public function __construct($options = null)
    {
        parent::__construct($options);
        $this->_figlet = new Zend_Text_Figlet($options);
    }
    
    /**
     * Generate new captcha
     *
     * @return string
     */
    public function generate()
    {
        $this->_useNumbers = false;
        return parent::generate();    
    }

    /**
     * Display the captcha
     *
     * @param Zend_View $view
     * @param mixed $element
     * @return string
     */
    public function render(Zend_View_Interface $view, $element = null)
    {
        return '<pre>'
             . $this->_figlet->render($this->getWord())
             . "</pre>\n";
    }
}
PKpG[�\Β!!Captcha/Word.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Base */
require_once 'Zend/Captcha/Base.php';

/**
 * Word-based captcha adapter
 *
 * Generates random word which user should recognise
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
abstract class Zend_Captcha_Word extends Zend_Captcha_Base
{
    /**#@+
     * @var array Character sets
     */
    static $V  = array("a", "e", "i", "o", "u", "y");
    static $VN = array("a", "e", "i", "o", "u", "y","2","3","4","5","6","7","8","9");
    static $C  = array("b","c","d","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","z");
    static $CN = array("b","c","d","f","g","h","j","k","m","n","p","q","r","s","t","u","v","w","x","z","2","3","4","5","6","7","8","9");
    /**#@-*/

    /**
     * Random session ID
     *
     * @var string
     */
    protected $_id;

    /**
     * Generated word
     *
     * @var string
     */
    protected $_word;

    /**
     * Session
     *
     * @var Zend_Session_Namespace
     */
    protected $_session;

    /**
     * Class name for sessions
     *
     * @var string
     */
    protected $_sessionClass = 'Zend_Session_Namespace';

    /**
     * Should the numbers be used or only letters
     *
     * @var boolean
     */
    protected $_useNumbers = true;

    /**
     * Should both cases be used or only lowercase
     *
     * @var boolean
     */
    // protected $_useCase = false;

    /**
     * Session lifetime for the captcha data
     *
     * @var integer
     */
    protected $_timeout = 300;

    /**#@+
     * Error codes
     * @const string
     */
    const MISSING_VALUE = 'missingValue';
    const MISSING_ID    = 'missingID';
    const BAD_CAPTCHA   = 'badCaptcha';
    /**#@-*/

    /**
     * Error messages
     * @var array
     */
    protected $_messageTemplates = array(
        self::MISSING_VALUE => 'Empty captcha value',
        self::MISSING_ID    => 'Captcha ID field is missing',
        self::BAD_CAPTCHA   => 'Captcha value is wrong',
    );

    /**
     * Length of the word to generate
     *
     * @var integer
     */
    protected $_wordlen = 8;

    /**
     * Retrieve session class to utilize
     *
     * @return string
     */
    public function getSessionClass()
    {
        return $this->_sessionClass;
    }

    /**
     * Set session class for persistence
     *
     * @param  string $_sessionClass
     * @return Zend_Captcha_Word
     */
    public function setSessionClass($_sessionClass)
    {
        $this->_sessionClass = $_sessionClass;
        return $this;
    }

    /**
     * Retrieve word length to use when genrating captcha
     *
     * @return integer
     */
    public function getWordlen()
    {
        return $this->_wordlen;
    }

    /**
     * Set word length of captcha
     *
     * @param integer $wordlen
     * @return Zend_Captcha_Word
     */
    public function setWordlen($wordlen)
    {
        $this->_wordlen = $wordlen;
        return $this;
    }

    /**
     * Retrieve captcha ID
     *
     * @return string
     */
    public function getId ()
    {
        if (null === $this->_id) {
            $this->_setId($this->_generateRandomId());
        }
        return $this->_id;
    }

    /**
     * Set captcha identifier
     *
     * @param string $id
     * return Zend_Captcha_Word
     */
    protected function _setId ($id)
    {
        $this->_id = $id;
        return $this;
    }

    /**
     * Set timeout for session token
     *
     * @param  int $ttl
     * @return Zend_Captcha_Word
     */
    public function setTimeout($ttl)
    {
        $this->_timeout = (int) $ttl;
        return $this;
    }

    /**
     * Get session token timeout
     *
     * @return int
     */
    public function getTimeout()
    {
        return $this->_timeout;
    }

    /**
     * Get session object
     *
     * @return Zend_Session_Namespace
     */
    public function getSession()
    {
        if (!isset($this->_session) || (null === $this->_session)) {
            $id = $this->getId();
            $this->_session = new $this->_sessionClass('Zend_Form_Captcha_' . $id);
            $this->_session->setExpirationHops(1, null, true);
            $this->_session->setExpirationSeconds($this->getTimeout());
        }
        return $this->_session;
    }

    /**
     * Set session namespace object
     *
     * @param  Zend_Session_Namespace $session
     * @return Zend_Captcha_Word
     */
    public function setSession(Zend_Session_Namespace $session)
    {
        $this->_session = $session;
        return $this;
    }

    /**
     * Get captcha word
     *
     * @return string
     */
    public function getWord()
    {
        if (empty($this->_word)) {
            $session     = $this->getSession();
            $this->_word = $session->word;
        }
        return $this->_word;
    }

    /**
     * Set captcha word
     *
     * @param  string $word
     * @return Zend_Captcha_Word
     */
    protected function _setWord($word)
    {
        $session       = $this->getSession();
        $session->word = $word;
        $this->_word   = $word;
        return $this;
    }

    /**
     * Generate new random word
     *
     * @return string
     */
    protected function _generateWord()
    {
        $word       = '';
        $wordLen    = $this->getWordLen();
        $vowels     = $this->_useNumbers ? self::$VN : self::$V;
        $consonants = $this->_useNumbers ? self::$CN : self::$C;

        for ($i=0; $i < $wordLen; $i = $i + 2) {
            // generate word with mix of vowels and consonants
            $consonant = $consonants[array_rand($consonants)];
            $vowel     = $vowels[array_rand($vowels)];
            $word     .= $consonant . $vowel;
        }

        if (strlen($word) > $wordLen) {
            $word = substr($word, 0, $wordLen);
        }

        return $word;
    }

    /**
     * Generate new session ID and new word
     *
     * @return string session ID
     */
    public function generate()
    {
        $this->_session = null;
        $id             = $this->_generateRandomId();
        $this->_setId($id);
        $word           = $this->_generateWord();
        $this->_setWord($word);
        return $id;
    }

    protected function _generateRandomId()
    {
        return md5(mt_rand(0, 1000) . microtime(true));
    }

    /**
     * Validate the word
     *
     * @see    Zend_Validate_Interface::isValid()
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value, $context = null)
    {
        if (!is_array($value) && !is_array($context)) {
            $this->_error(self::MISSING_VALUE);
            return false;
        }
        if (!is_array($value) && is_array($context)) {
            $value = $context;
        }

        $name = $this->getName();

        if (isset($value[$name])) {
            $value = $value[$name];
        }

        if (!isset($value['input'])) {
            $this->_error(self::MISSING_VALUE);
            return false;
        }
        $input = strtolower($value['input']);
        $this->_setValue($input);

        if (!isset($value['id'])) {
            $this->_error(self::MISSING_ID);
            return false;
        }

        $this->_id = $value['id'];
        if ($input !== $this->getWord()) {
            $this->_error(self::BAD_CAPTCHA);
            return false;
        }

        return true;
    }

    /**
     * Get captcha decorator
     *
     * @return string
     */
    public function getDecorator()
    {
        return "Captcha_Word";
    }
}
PKpG[S��ڤ8�8Captcha/Image.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Word */
require_once 'Zend/Captcha/Word.php';

/**
 * Image-based captcha element 
 * 
 * Generates image displaying random word
 * 
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */
class Zend_Captcha_Image extends Zend_Captcha_Word
{
    /**
     * Directory for generated images
     *
     * @var string
     */
    protected $_imgDir = "./images/captcha/";

    /**
     * URL for accessing images
     *
     * @var string
     */
    protected $_imgUrl = "/images/captcha/";
    
    /**
     * Image's alt tag content
     *
     * @var string
     */
    protected $_imgAlt = "";

    /**
     * Image suffix (including dot)
     *
     * @var string
     */
    protected $_suffix = ".png";

    /**
     * Image width
     *
     * @var int
     */
    protected $_width = 200;

    /**
     * Image height
     *
     * @var int
     */
    protected $_height = 50;

    /**
     * Font size
     *
     * @var int
     */
    protected $_fsize = 24;

    /**
     * Image font file
     *
     * @var string
     */
    protected $_font;

    /**
     * Image to use as starting point
     * Default is blank image. If ptovided, should be PNG image.
     *
     * @var string
     */
    protected $_startImage;
    /**
     * How frequently to execute garbage collection
     *
     * @var int
     */
    protected $_gcFreq = 10;
    
    /**
     * How long to keep generated images
     *
     * @var int
     */
    protected $_expiration = 600;

    /**
     * Number of noise dots on image 
     * Used twice - before and after transform
     *
     * @var int
     */
    protected $_dotNoiseLevel = 100;
    /**
     * Number of noise lines on image
     * Used twice - before and after transform
     *
     * @var int
     */
    protected $_lineNoiseLevel = 5;
    /**
     * @return string
     */
    public function getImgAlt ()
    {
        return $this->_imgAlt;
    }
    /**
     * @return string
     */
    public function getStartImage ()
    {
        return $this->_startImage;
    }
    /**
     * @return int
     */
    public function getDotNoiseLevel ()
    {
        return $this->_dotNoiseLevel;
    }
    /**
     * @return int
     */
    public function getLineNoiseLevel ()
    {
        return $this->_lineNoiseLevel;
    }
    /**
     * Get captcha expiration
     *
     * @return int
     */
    public function getExpiration() 
    {
        return $this->_expiration;
    }
    
    /**
     * Get garbage collection frequency
     *
     * @return int
     */
    public function getGcFreq() 
    {
        return $this->_gcFreq;
    }
    /**
     * Get font to use when generating captcha
     *
     * @return string
     */
    public function getFont() 
    {
        return $this->_font;
    }
    
    /**
     * Get font size
     *
     * @return int
     */
    public function getFontSize() 
    {
        return $this->_fsize;
    }
    
    /**
     * Get captcha image height
     *
     * @return int
     */
    public function getHeight() 
    {
        return $this->_height;
    }
    
    /**
     * Get captcha image directory
     *
     * @return string
     */
    public function getImgDir() 
    {
        return $this->_imgDir;
    }
    /**
     * Get captcha image base URL
     *
     * @return string
     */
    public function getImgUrl() 
    {
        return $this->_imgUrl;
    }
    /**
     * Get captcha image file suffix
     *
     * @return string
     */
    public function getSuffix() 
    {
        return $this->_suffix;
    }
    /**
     * Get captcha image width
     *
     * @return int
     */
    public function getWidth() 
    {
        return $this->_width;
    }
    /**
     * @param string $startImage
     */
    public function setStartImage ($startImage)
    {
        $this->_startImage = $startImage;
        return $this;
    }
    /**
     * @param int $dotNoiseLevel
     */
    public function setDotNoiseLevel ($dotNoiseLevel)
    {
        $this->_dotNoiseLevel = $dotNoiseLevel;
        return $this;
    }
   /**
     * @param int $lineNoiseLevel
     */
    public function setLineNoiseLevel ($lineNoiseLevel)
    {
        $this->_lineNoiseLevel = $lineNoiseLevel;
        return $this;
    }
    
    /**
     * Set captcha expiration
     *
     * @param int $expiration
     * @return Zend_Captcha_Image
     */
    public function setExpiration($expiration)
    {
        $this->_expiration = $expiration;
        return $this;
    }
    
    /**
     * Set garbage collection frequency
     *
     * @param int $gcFreq
     * @return Zend_Captcha_Image
     */
    public function setGcFreq($gcFreq) 
    {
        $this->_gcFreq = $gcFreq;
        return $this;
    }

    /**
     * Set captcha font
     *
     * @param  string $font
     * @return Zend_Captcha_Image
     */
    public function setFont($font) 
    {
        $this->_font = $font;
        return $this;
    }
    
    /**
     * Set captcha font size
     *
     * @param  int $fsize
     * @return Zend_Captcha_Image
     */
    public function setFontSize($fsize) 
    {
        $this->_fsize = $fsize;
        return $this;
    }
    
    /**
     * Set captcha image height
     *
     * @param  int $height
     * @return Zend_Captcha_Image
     */
    public function setHeight($height) 
    {
        $this->_height = $height;
        return $this;
    }
    
    /**
     * Set captcha image storage directory
     *
     * @param  string $imgDir
     * @return Zend_Captcha_Image
     */
    public function setImgDir($imgDir) 
    {
        $this->_imgDir = rtrim($imgDir, "/\\") . '/';
        return $this;
    }
    
    /**
     * Set captcha image base URL
     *
     * @param  string $imgUrl
     * @return Zend_Captcha_Image
     */
    public function setImgUrl($imgUrl) 
    {
        $this->_imgUrl = rtrim($imgUrl, "/\\") . '/';
        return $this;
    }
    /**
     * @param string $imgAlt
     */
    public function setImgAlt ($imgAlt)
    {
        $this->_imgAlt = $imgAlt;
        return $this;
    }
    
    /**
     * Set captch image filename suffix
     *
     * @param  string $suffix
     * @return Zend_Captcha_Image
     */
    public function setSuffix($suffix) 
    {
        $this->_suffix = $suffix;
        return $this;
    }
    
    /**
     * Set captcha image width
     *
     * @param  int $width
     * @return Zend_Captcha_Image
     */
    public function setWidth($width) 
    {
        $this->_width = $width;
        return $this;
    }
    
    /**
     * Generate random frequency
     * 
     * @return float
     */
    protected function _randomFreq() 
    {
        return mt_rand(700000, 1000000) / 15000000;
    }

    /**
     * Generate random phase
     * 
     * @return float
     */
    protected function _randomPhase() 
    {
        // random phase from 0 to pi
        return mt_rand(0, 3141592) / 1000000;
    }

    /**
     * Generate random character size
     * 
     * @return int
     */
    protected function _randomSize() 
    {
        return mt_rand(300, 700) / 100;
    }
    
    /**
     * Generate captcha
     * 
     * @return string captcha ID
     */
    public function generate()
    {
        $id = parent::generate();
        $this->_generateImage($id, $this->getWord());
        
        if (mt_rand(0, $this->getGcFreq()) == 1) {
            $this->_gc();
        }
        return $id;
    }
    
    /**
     * Generate image captcha
     * 
     * Override this function if you want different image generator
     * Wave transform from http://www.captcha.ru/captchas/multiwave/
     *
     * @param string $id Captcha ID
     * @param string $word Captcha word
     */
    protected function _generateImage($id, $word) 
    { 
        if (!extension_loaded("gd")) {
            require_once 'Zend/Captcha/Exception.php';
            throw new Zend_Captcha_Exception("Image CAPTCHA requires GD extension");
        }

        if (!function_exists("imagepng")) {
            require_once 'Zend/Captcha/Exception.php';
            throw new Zend_Captcha_Exception("Image CAPTCHA requires PNG support");
        }

        if (!function_exists("imageftbbox")) {
            require_once 'Zend/Captcha/Exception.php';
            throw new Zend_Captcha_Exception("Image CAPTCHA requires FT fonts support");
        }

        $font = $this->getFont();

        if (empty($font)) {
            require_once 'Zend/Captcha/Exception.php';
            throw new Zend_Captcha_Exception("Image CAPTCHA requires font");
        }
        
        $w     = $this->getWidth();
        $h     = $this->getHeight();
        $fsize = $this->getFontSize();
        
        $img_file   = $this->getImgDir() . $id . $this->getSuffix();
        if(empty($this->_startImage)) {
            $img        = imagecreatetruecolor($w, $h);
        } else {
            $img = imagecreatefrompng($this->_startImage);
            if(!$img) {
                require_once 'Zend/Captcha/Exception.php';
                throw new Zend_Captcha_Exception("Can not load start image");                
            }
            $w = imagesx($img);
            $h = imagesy($img);
        }
        $text_color = imagecolorallocate($img, 0, 0, 0);
        $bg_color   = imagecolorallocate($img, 255, 255, 255);
        imagefilledrectangle($img, 0, 0, $w-1, $h-1, $bg_color);
        $textbox = imageftbbox($fsize, 0, $font, $word);
        $x = ($w - ($textbox[2] - $textbox[0])) / 2;
        $y = ($h - ($textbox[7] - $textbox[1])) / 2;
        imagefttext($img, $fsize, 0, $x, $y, $text_color, $font, $word);
        
       // generate noise
        for ($i=0; $i<$this->_dotNoiseLevel; $i++) {
           imagefilledellipse($img, mt_rand(0,$w), mt_rand(0,$h), 2, 2, $text_color);
        }
        for($i=0; $i<$this->_lineNoiseLevel; $i++) {
           imageline($img, mt_rand(0,$w), mt_rand(0,$h), mt_rand(0,$w), mt_rand(0,$h), $text_color);
        }
        
        // transformed image
        $img2     = imagecreatetruecolor($w, $h);
        $bg_color = imagecolorallocate($img2, 255, 255, 255);
        imagefilledrectangle($img2, 0, 0, $w-1, $h-1, $bg_color);
        // apply wave transforms
        $freq1 = $this->_randomFreq();
        $freq2 = $this->_randomFreq();
        $freq3 = $this->_randomFreq();
        $freq4 = $this->_randomFreq();

        $ph1 = $this->_randomPhase();
        $ph2 = $this->_randomPhase();
        $ph3 = $this->_randomPhase();
        $ph4 = $this->_randomPhase();

        $szx = $this->_randomSize();
        $szy = $this->_randomSize();
 
        for ($x = 0; $x < $w; $x++) {
            for ($y = 0; $y < $h; $y++) {
                $sx = $x + (sin($x*$freq1 + $ph1) + sin($y*$freq3 + $ph3)) * $szx;
                $sy = $y + (sin($x*$freq2 + $ph2) + sin($y*$freq4 + $ph4)) * $szy;
    
                if ($sx < 0 || $sy < 0 || $sx >= $w - 1 || $sy >= $h - 1) { 
                    continue;
                } else {
                    $color    = (imagecolorat($img, $sx, $sy) >> 16)         & 0xFF;
                    $color_x  = (imagecolorat($img, $sx + 1, $sy) >> 16)     & 0xFF;
                    $color_y  = (imagecolorat($img, $sx, $sy + 1) >> 16)     & 0xFF;
                    $color_xy = (imagecolorat($img, $sx + 1, $sy + 1) >> 16) & 0xFF;
                }
                if ($color == 255 && $color_x == 255 && $color_y == 255 && $color_xy == 255) {
                    // ignore background
                    continue;
                } elseif ($color == 0 && $color_x == 0 && $color_y == 0 && $color_xy == 0) {
                    // transfer inside of the image as-is
                    $newcolor = 0;
                } else {
                    // do antialiasing for border items
                    $frac_x  = $sx-floor($sx);
                    $frac_y  = $sy-floor($sy);
                    $frac_x1 = 1-$frac_x;
                    $frac_y1 = 1-$frac_y;

                    $newcolor = $color    * $frac_x1 * $frac_y1
                              + $color_x  * $frac_x  * $frac_y1
                              + $color_y  * $frac_x1 * $frac_y
                              + $color_xy * $frac_x  * $frac_y;
                }
                imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newcolor, $newcolor, $newcolor));
            }
        }
       
        // generate noise
        for ($i=0; $i<$this->_dotNoiseLevel; $i++) {
            imagefilledellipse($img2, mt_rand(0,$w), mt_rand(0,$h), 2, 2, $text_color);
        }
        for ($i=0; $i<$this->_lineNoiseLevel; $i++) {
           imageline($img2, mt_rand(0,$w), mt_rand(0,$h), mt_rand(0,$w), mt_rand(0,$h), $text_color);
        }
        
        imagepng($img2, $img_file);
        imagedestroy($img);
        imagedestroy($img2);
    }
    
    /**
     * Remove old files from image directory
     *
     */
    protected function _gc()
    {
        $expire = time() - $this->getExpiration();
        foreach (new DirectoryIterator($this->getImgDir()) as $file) {
            if (!$file->isDot() && !$file->isDir()) {
                if ($file->getMTime() < $expire) {
                    unlink($file->getPathname());
                }
            }
        }
    }
    
    /**
     * Display the captcha
     *
     * @param Zend_View $view
     * @param mixed $element
     * @return string
     */
    public function render(Zend_View_Interface $view, $element = null)
    {
        return '<img alt="'.$this->getImgAlt().'" src="' . $this->getImgUrl() . $this->getId() . $this->getSuffix() . '"/><br/>';
    }
}
PKpG[�&M���Captcha/Dumb.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Captcha_Word */
require_once 'Zend/Captcha/Word.php';

/**
 * Example dumb word-based captcha
 * 
 * Note that only rendering is necessary for word-based captcha
 *  
 * @category   Zend
 * @package    Zend_Captcha
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
*/
class Zend_Captcha_Dumb extends Zend_Captcha_Word
{
    /**
     * Render the captcha
     *
     * @param  Zend_View $view
     * @param  mixed $element
     * @return string
     */
    public function render(Zend_View_Interface $view, $element = null)
    {
        return 'Please type this word backwards: <b>'
             . strrev($this->getWord())
             . '</b>';
    }
}
PKpG[�s<���Log/Filter/Message.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Message.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Filter_Interface */
require_once 'Zend/Log/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Message.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Filter_Message implements Zend_Log_Filter_Interface
{
    /**
     * @var string
     */
    protected $_regexp;

    /**
     * Filter out any log messages not matching $regexp.
     *
     * @param  string  $regexp     Regular expression to test the log message
     * @throws Zend_Log_Exception
     */
    public function __construct($regexp)
    {
        if (@preg_match($regexp, '') === false) {
            throw new Zend_Log_Exception("Invalid regular expression '$regexp'");
        }
        $this->_regexp = $regexp;
    }

    /**
     * Returns TRUE to accept the message, FALSE to block it.
     *
     * @param  array    $event    event data
     * @return boolean            accepted?
     */
    public function accept($event)
    {
        return preg_match($this->_regexp, $event['message']) > 0;
    }

}
PKpG[!/F��Log/Filter/Priority.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Priority.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Filter_Interface */
require_once 'Zend/Log/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Priority.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Filter_Priority implements Zend_Log_Filter_Interface
{
    /**
     * @var integer
     */
    protected $_priority;

    /**
     * @var string
     */
    protected $_operator;

    /**
     * Filter logging by $priority.  By default, it will accept any log
     * event whose priority value is less than or equal to $priority.
     *
     * @param  integer  $priority  Priority
     * @param  string   $operator  Comparison operator
     * @throws Zend_Log_Exception
     */
    public function __construct($priority, $operator = '<=')
    {
        if (! is_integer($priority)) {
            throw new Zend_Log_Exception('Priority must be an integer');
        }

        $this->_priority = $priority;
        $this->_operator = $operator;
    }

    /**
     * Returns TRUE to accept the message, FALSE to block it.
     *
     * @param  array    $event    event data
     * @return boolean            accepted?
     */
    public function accept($event)
    {
        return version_compare($event['priority'], $this->_priority, $this->_operator);
    }

}
PKpG[gC��//Log/Filter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */
interface Zend_Log_Filter_Interface
{
    /**
     * Returns TRUE to accept the message, FALSE to block it.
     *
     * @param  array    $event    event data
     * @return boolean            accepted?
     */
    public function accept($event);

}
PKpG[��|exxLog/Filter/Suppress.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Suppress.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Filter_Interface */
require_once 'Zend/Log/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Suppress.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Filter_Suppress implements Zend_Log_Filter_Interface
{
    /**
     * @var boolean
     */
    protected $_accept = true;

    /**
     * This is a simple boolean filter.
     *
     * Call suppress(true) to suppress all log events.
     * Call suppress(false) to accept all log events.
     *
     * @param  boolean  $suppress  Should all log events be suppressed?
     * @return  void
     */
    public function suppress($suppress)
    {
        $this->_accept = (! $suppress);
    }

    /**
     * Returns TRUE to accept the message, FALSE to block it.
     *
     * @param  array    $event    event data
     * @return boolean            accepted?
     */
    public function accept($event)
    {
        return $this->_accept;
    }

}
PKpG[بe!�	�	Log/Formatter/Simple.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Simple.php 10725 2008-08-06 16:01:05Z cadorn $
 */

/** Zend_Log_Formatter_Interface */
require_once 'Zend/Log/Formatter/Interface.php';

/** Zend_Log_Exception */
require_once 'Zend/Log/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Simple.php 10725 2008-08-06 16:01:05Z cadorn $
 */
class Zend_Log_Formatter_Simple implements Zend_Log_Formatter_Interface
{
    /**
     * @var string
     */
    protected $_format;

    const DEFAULT_FORMAT = '%timestamp% %priorityName% (%priority%): %message%';

    /**
     * Class constructor
     *
     * @param  null|string  $format  Format specifier for log messages
     * @throws Zend_Log_Exception
     */
    public function __construct($format = null)
    {
        if ($format === null) {
            $format = self::DEFAULT_FORMAT . PHP_EOL;
        }

        if (! is_string($format)) {
            throw new Zend_Log_Exception('Format must be a string');
        }

        $this->_format = $format;
    }

    /**
     * Formats data into a single line to be written by the writer.
     *
     * @param  array    $event    event data
     * @return string             formatted line to write to the log
     */
    public function format($event)
    {
        $output = $this->_format;
        foreach ($event as $name => $value) {

            if ((is_object($value) && !method_exists($value,'__toString'))
                || is_array($value)) {

                $value = gettype($value);  
            }

            $output = str_replace("%$name%", $value, $output);
        }
        return $output;
    }

}
PKpG[���4�
�
Log/Formatter/Xml.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Xml.php 12363 2008-11-07 10:45:22Z beberlei $
 */

/** Zend_Log_Formatter_Interface */
require_once 'Zend/Log/Formatter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Xml.php 12363 2008-11-07 10:45:22Z beberlei $
 */
class Zend_Log_Formatter_Xml implements Zend_Log_Formatter_Interface
{
    /**
     * @var Relates XML elements to log data field keys.
     */
    protected $_rootElement;

    /**
     * @var Relates XML elements to log data field keys.
     */
    protected $_elementMap;

    /**
     * Class constructor
     *
     * @param array $elementMap
     */
    public function __construct($rootElement = 'logEntry', $elementMap = null)
    {
        $this->_rootElement = $rootElement;
        $this->_elementMap  = $elementMap;
    }

    /**
     * Formats data into a single line to be written by the writer.
     *
     * @param  array    $event    event data
     * @return string             formatted line to write to the log
     */
    public function format($event)
    {
        if ($this->_elementMap === null) {
            $dataToInsert = $event;
        } else {
            $dataToInsert = array();
            foreach ($this->_elementMap as $elementName => $fieldKey) {
                $dataToInsert[$elementName] = $event[$fieldKey];
            }
        }

        $dom = new DOMDocument();
        $elt = $dom->appendChild(new DOMElement($this->_rootElement));

        foreach ($dataToInsert as $key => $value) {
            if($key == "message") {
                $value = htmlspecialchars($value);
            }
            $elt->appendChild(new DOMElement($key, $value));
        }

        $xml = $dom->saveXML();
        $xml = preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $xml);

        return $xml . PHP_EOL;
    }

}
PKpG[�;BGWWLog/Formatter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Formatter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */
interface Zend_Log_Formatter_Interface
{
    /**
     * Formats data into a single line to be written by the writer.
     *
     * @param  array    $event    event data
     * @return string             formatted line to write to the log
     */
    public function format($event);

}
PKpG[�z�ggLog/Writer/Firebug.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Log */
require_once 'Zend/Log.php';

/** Zend_Log_Writer_Abstract */
require_once 'Zend/Log/Writer/Abstract.php';

/** Zend_Wildfire_Plugin_FirePhp */
require_once 'Zend/Wildfire/Plugin/FirePhp.php';

/**
 * Writes log messages to the Firebug Console via FirePHP.
 * 
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Log_Writer_Firebug extends Zend_Log_Writer_Abstract
{

    /**
     * Maps logging priorities to logging display styles
     * @var array
     */
    protected $_priorityStyles = array(Zend_Log::EMERG  => Zend_Wildfire_Plugin_FirePhp::ERROR,
                                       Zend_Log::ALERT  => Zend_Wildfire_Plugin_FirePhp::ERROR,
                                       Zend_Log::CRIT   => Zend_Wildfire_Plugin_FirePhp::ERROR,
                                       Zend_Log::ERR    => Zend_Wildfire_Plugin_FirePhp::ERROR,
                                       Zend_Log::WARN   => Zend_Wildfire_Plugin_FirePhp::WARN,
                                       Zend_Log::NOTICE => Zend_Wildfire_Plugin_FirePhp::INFO,
                                       Zend_Log::INFO   => Zend_Wildfire_Plugin_FirePhp::INFO,
                                       Zend_Log::DEBUG  => Zend_Wildfire_Plugin_FirePhp::LOG);
    
    /**
     * The default logging style for un-mapped priorities
     * @var string
     */    
    protected $_defaultPriorityStyle = Zend_Wildfire_Plugin_FirePhp::LOG;
    
    /**
     * Flag indicating whether the log writer is enabled
     * @var boolean
     */
    protected $_enabled = true;
    
    /**
     * Class constructor
     */
    public function __construct()
    {
        if (php_sapi_name()=='cli') {
            $this->setEnabled(false);
        }
    }
    
    /**
     * Enable or disable the log writer.
     * 
     * @param boolean $enabled Set to TRUE to enable the log writer 
     * @return boolean The previous value.
     */
    public function setEnabled($enabled)
    {
        $previous = $this->_enabled;
        $this->_enabled = $enabled;
        return $previous;
    }
    
    /**
     * Determine if the log writer is enabled.
     * 
     * @return boolean Returns TRUE if the log writer is enabled.
     */
    public function getEnabled()
    {
        return $this->_enabled;
    }
    
    /**
     * Set the default display style for user-defined priorities
     * 
     * @param string $style The default log display style
     * @return string Returns previous default log display style
     */    
    public function setDefaultPriorityStyle($style)
    {
        $previous = $this->_defaultPriorityStyle;
        $this->_defaultPriorityStyle = $style;
        return $previous;
    }
    
    /**
     * Get the default display style for user-defined priorities
     * 
     * @return string Returns the default log display style
     */    
    public function getDefaultPriorityStyle()
    {
        return $this->_defaultPriorityStyle;
    }
    
    /**
     * Set a display style for a logging priority
     * 
     * @param int $priority The logging priority
     * @param string $style The logging display style
     * @return string|boolean The previous logging display style if defined or TRUE otherwise
     */
    public function setPriorityStyle($priority, $style)
    {
        $previous = true;
        if (array_key_exists($priority,$this->_priorityStyles)) {
            $previous = $this->_priorityStyles[$priority];
        }
        $this->_priorityStyles[$priority] = $style;
        return $previous;
    }

    /**
     * Get a display style for a logging priority
     * 
     * @param int $priority The logging priority
     * @return string|boolean The logging display style if defined or FALSE otherwise
     */
    public function getPriorityStyle($priority)
    {
        if (array_key_exists($priority,$this->_priorityStyles)) {
            return $this->_priorityStyles[$priority];
        }
        return false;
    }

    /**
     * Formatting is not possible on this writer
     *
     * @return void
     */
    public function setFormatter($formatter)
    {
        /** @see Zend_Log_Exception */
        require_once 'Zend/Log/Exception.php';
        throw new Zend_Log_Exception(get_class() . ' does not support formatting');
    }

    /**
     * Log a message to the Firebug Console.
     *
     * @param array $event The event data
     * @return void
     */
    protected function _write($event)
    {
        if (!$this->getEnabled()) {
            return;
        }
      
        if (array_key_exists($event['priority'],$this->_priorityStyles)) {
            $type = $this->_priorityStyles[$event['priority']];
        } else {
            $type = $this->_defaultPriorityStyle;
        }
        
        Zend_Wildfire_Plugin_FirePhp::getInstance()->send($event['message'], null, $type);
    }
}
PKpG[ĥ���
�
Log/Writer/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Filter_Priority */
require_once 'Zend/Log/Filter/Priority.php';

/** Zend_Log_Exception */
require_once 'Zend/Log/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $
 */
abstract class Zend_Log_Writer_Abstract
{
    /**
     * @var array of Zend_Log_Filter_Interface
     */
    protected $_filters = array();

    /**
     * Formats the log message before writing.
     * @var Zend_Log_Formatter_Interface
     */
    protected $_formatter;

    /**
     * Add a filter specific to this writer.
     *
     * @param  Zend_Log_Filter_Interface  $filter
     * @return void
     */
    public function addFilter($filter)
    {
        if (is_integer($filter)) {
            $filter = new Zend_Log_Filter_Priority($filter);
        }

        $this->_filters[] = $filter;
    }

    /**
     * Log a message to this writer.
     *
     * @param  array     $event  log data event
     * @return void
     */
    public function write($event)
    {
        foreach ($this->_filters as $filter) {
            if (! $filter->accept($event)) {
                return;
            }
        }

        // exception occurs on error
        $this->_write($event);
    }

    /**
     * Set a new formatter for this writer
     *
     * @param  Zend_Log_Formatter_Interface $formatter
     * @return void
     */
    public function setFormatter($formatter) {
        $this->_formatter = $formatter;
    }

    /**
     * Perform shutdown activites such as closing open resources
     *
     * @return void
     */
    public function shutdown()
    {}

    /**
     * Write a message to the log.
     *
     * @param  array  $event  log data event
     * @return void
     */
    abstract protected function _write($event);

}PKpG[����Log/Writer/Mock.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Null.php 3980 2007-03-15 21:38:38Z mike $
 */

/** Zend_Log_Writer_Abstract */
require_once 'Zend/Log/Writer/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Null.php 3980 2007-03-15 21:38:38Z mike $
 */
class Zend_Log_Writer_Mock extends Zend_Log_Writer_Abstract
{
    /**
     * array of log events
     */
    public $events = array();

    /**
     * shutdown called?
     */
    public $shutdown = false;

    /**
     * Write a message to the log.
     *
     * @param  array  $event  event data
     * @return void
     */
    public function _write($event)
    {
        $this->events[] = $event;
    }

    /**
     * Record shutdown
     *
     * @return void
     */
    public function shutdown()
    {
        $this->shutdown = true;
    }
}PKpG[�T�aaLog/Writer/Stream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Stream.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Writer_Abstract */
require_once 'Zend/Log/Writer/Abstract.php';

/** Zend_Log_Formatter_Simple */
require_once 'Zend/Log/Formatter/Simple.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Stream.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Writer_Stream extends Zend_Log_Writer_Abstract
{
    /**
     * Holds the PHP stream to log to.
     * @var null|stream
     */
    protected $_stream = null;

    /**
     * Class Constructor
     *
     * @param  streamOrUrl     Stream or URL to open as a stream
     * @param  mode            Mode, only applicable if a URL is given
     */
    public function __construct($streamOrUrl, $mode = 'a')
    {
        if (is_resource($streamOrUrl)) {
            if (get_resource_type($streamOrUrl) != 'stream') {
                throw new Zend_Log_Exception('Resource is not a stream');
            }

            if ($mode != 'a') {
                throw new Zend_Log_Exception('Mode cannot be changed on existing streams');
            }

            $this->_stream = $streamOrUrl;
        } else {
            if (! $this->_stream = @fopen($streamOrUrl, $mode, false)) {
                $msg = "\"$streamOrUrl\" cannot be opened with mode \"$mode\"";
                throw new Zend_Log_Exception($msg);
            }
        }

        $this->_formatter = new Zend_Log_Formatter_Simple();
    }

    /**
     * Close the stream resource.
     *
     * @return void
     */
    public function shutdown()
    {
        if (is_resource($this->_stream)) {
            fclose($this->_stream);
        }
    }

    /**
     * Write a message to the log.
     *
     * @param  array  $event  event data
     * @return void
     */
    protected function _write($event)
    {
        $line = $this->_formatter->format($event);

        if (false === @fwrite($this->_stream, $line)) {
            throw new Zend_Log_Exception("Unable to write to stream");
        }
    }

}
PKpG[��aaLog/Writer/Null.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Null.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Writer_Abstract */
require_once 'Zend/Log/Writer/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Null.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Writer_Null extends Zend_Log_Writer_Abstract
{
    /**
     * Write a message to the log.
     *
     * @param  array  $event  event data
     * @return void
     */
    protected function _write($event)
    {
    }

}PKpG[8z#}}Log/Writer/Db.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Db.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Log_Writer_Abstract */
require_once 'Zend/Log/Writer/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @subpackage Writer
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Db.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Writer_Db extends Zend_Log_Writer_Abstract
{
    /**
     * Database adapter instance
     * @var Zend_Db_Adapter
     */
    private $_db;

    /**
     * Name of the log table in the database
     * @var string
     */
    private $_table;

    /**
     * Relates database columns names to log data field keys.
     *
     * @var null|array
     */
    private $_columnMap;

    /**
     * Class constructor
     *
     * @param Zend_Db_Adapter $db   Database adapter instance
     * @param string $table         Log table in database
     * @param array $columnMap
     */
    public function __construct($db, $table, $columnMap = null)
    {
        $this->_db    = $db;
        $this->_table = $table;
        $this->_columnMap = $columnMap;
    }

    /**
     * Formatting is not possible on this writer
     */
    public function setFormatter($formatter)
    {
        throw new Zend_Log_Exception(get_class() . ' does not support formatting');
    }

    /**
     * Remove reference to database adapter
     *
     * @return void
     */
    public function shutdown()
    {
        $this->_db = null;
    }

    /**
     * Write a message to the log.
     *
     * @param  array  $event  event data
     * @return void
     */
    protected function _write($event)
    {
        if ($this->_db === null) {
            throw new Zend_Log_Exception('Database adapter instance has been removed by shutdown');
        }

        if ($this->_columnMap === null) {
            $dataToInsert = $event;
        } else {
            $dataToInsert = array();
            foreach ($this->_columnMap as $columnName => $fieldKey) {
                $dataToInsert[$columnName] = $event[$fieldKey];
            }
        }

        $this->_db->insert($this->_table, $dataToInsert);
    }

}
PKpG[��huuLog/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Log
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Log
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Log_Exception extends Zend_Exception
{}
PKpG[�J��>>Auth/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Exception extends Zend_Exception
{}
PKpG[�If�
�
Auth/Result.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Result.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Result
{
    /**
     * General Failure
     */
    const FAILURE                        =  0;

    /**
     * Failure due to identity not being found.
     */
    const FAILURE_IDENTITY_NOT_FOUND     = -1;

    /**
     * Failure due to identity being ambiguous.
     */
    const FAILURE_IDENTITY_AMBIGUOUS     = -2;

    /**
     * Failure due to invalid credential being supplied.
     */
    const FAILURE_CREDENTIAL_INVALID     = -3;

    /**
     * Failure due to uncategorized reasons.
     */
    const FAILURE_UNCATEGORIZED          = -4;

    /**
     * Authentication success.
     */
    const SUCCESS                        =  1;

    /**
     * Authentication result code
     *
     * @var int
     */
    protected $_code;

    /**
     * The identity used in the authentication attempt
     *
     * @var mixed
     */
    protected $_identity;

    /**
     * An array of string reasons why the authentication attempt was unsuccessful
     *
     * If authentication was successful, this should be an empty array.
     *
     * @var array
     */
    protected $_messages;

    /**
     * Sets the result code, identity, and failure messages
     *
     * @param  int     $code
     * @param  mixed   $identity
     * @param  array   $messages
     * @return void
     */
    public function __construct($code, $identity, array $messages = array())
    {
        $code = (int) $code;

        if ($code < self::FAILURE_UNCATEGORIZED) {
            $code = self::FAILURE;
        } elseif ($code > self::SUCCESS ) {
            $code = 1;
        }

        $this->_code     = $code;
        $this->_identity = $identity;
        $this->_messages = $messages;
    }

    /**
     * Returns whether the result represents a successful authentication attempt
     *
     * @return boolean
     */
    public function isValid()
    {
        return ($this->_code > 0) ? true : false;
    }

    /**
     * getCode() - Get the result code for this authentication attempt
     *
     * @return int
     */
    public function getCode()
    {
        return $this->_code;
    }

    /**
     * Returns the identity used in the authentication attempt
     *
     * @return mixed
     */
    public function getIdentity()
    {
        return $this->_identity;
    }

    /**
     * Returns an array of string reasons why the authentication attempt was unsuccessful
     *
     * If authentication was successful, this method returns an empty array.
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }
}
PKpG[*`* �p�pAuth/Adapter/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Http.php 12503 2008-11-10 16:28:40Z matthew $
 */


/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';


/**
 * HTTP Authentication Adapter
 *
 * Implements a pretty good chunk of RFC 2617.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @todo       Support auth-int
 * @todo       Track nonces, nonce-count, opaque for replay protection and stale support
 * @todo       Support Authentication-Info header
 */
class Zend_Auth_Adapter_Http implements Zend_Auth_Adapter_Interface
{
    /**
     * Reference to the HTTP Request object
     *
     * @var Zend_Controller_Request_Http
     */
    protected $_request;

    /**
     * Reference to the HTTP Response object
     *
     * @var Zend_Controller_Response_Http
     */
    protected $_response;

    /**
     * Object that looks up user credentials for the Basic scheme
     *
     * @var Zend_Auth_Adapter_Http_Resolver_Interface
     */
    protected $_basicResolver;

    /**
     * Object that looks up user credentials for the Digest scheme
     *
     * @var Zend_Auth_Adapter_Http_Resolver_Interface
     */
    protected $_digestResolver;

    /**
     * List of authentication schemes supported by this class
     *
     * @var array
     */
    protected $_supportedSchemes = array('basic', 'digest');

    /**
     * List of schemes this class will accept from the client
     *
     * @var array
     */
    protected $_acceptSchemes;

    /**
     * Space-delimited list of protected domains for Digest Auth
     *
     * @var string
     */
    protected $_domains;

    /**
     * The protection realm to use
     *
     * @var string
     */
    protected $_realm;

    /**
     * Nonce timeout period
     *
     * @var integer
     */
    protected $_nonceTimeout;

    /**
     * Whether to send the opaque value in the header. True by default
     *
     * @var boolean
     */
    protected $_useOpaque;

    /**
     * List of the supported digest algorithms. I want to support both MD5 and
     * MD5-sess, but MD5-sess won't make it into the first version.
     *
     * @var array
     */
    protected $_supportedAlgos = array('MD5');

    /**
     * The actual algorithm to use. Defaults to MD5
     *
     * @var string
     */
    protected $_algo;

    /**
     * List of supported qop options. My intetion is to support both 'auth' and
     * 'auth-int', but 'auth-int' won't make it into the first version.
     *
     * @var array
     */
    protected $_supportedQops = array('auth');

    /**
     * Whether or not to do Proxy Authentication instead of origin server
     * authentication (send 407's instead of 401's). Off by default.
     *
     * @var boolean
     */
    protected $_imaProxy;

    /**
     * Flag indicating the client is IE and didn't bother to return the opaque string
     *
     * @var boolean
     */
    protected $_ieNoOpaque;

    /**
     * Constructor
     *
     * @param  array $config Configuration settings:
     *    'accept_schemes' => 'basic'|'digest'|'basic digest'
     *    'realm' => <string>
     *    'digest_domains' => <string> Space-delimited list of URIs
     *    'nonce_timeout' => <int>
     *    'use_opaque' => <bool> Whether to send the opaque value in the header
     *    'alogrithm' => <string> See $_supportedAlgos. Default: MD5
     *    'proxy_auth' => <bool> Whether to do authentication as a Proxy
     * @throws Zend_Auth_Adapter_Exception
     * @return void
     */
    public function __construct(array $config)
    {
        if (!extension_loaded('hash')) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception(__CLASS__  . ' requires the \'hash\' extension');
        }

        $this->_request  = null;
        $this->_response = null;
        $this->_ieNoOpaque = false;


        if (empty($config['accept_schemes'])) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('Config key \'accept_schemes\' is required');
        }

        $schemes = explode(' ', $config['accept_schemes']);
        $this->_acceptSchemes = array_intersect($schemes, $this->_supportedSchemes);
        if (empty($this->_acceptSchemes)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('No supported schemes given in \'accept_schemes\'. Valid values: '
                                                . implode(', ', $this->_supportedSchemes));
        }

        // Double-quotes are used to delimit the realm string in the HTTP header,
        // and colons are field delimiters in the password file.
        if (empty($config['realm']) ||
            !ctype_print($config['realm']) ||
            strpos($config['realm'], ':') !== false ||
            strpos($config['realm'], '"') !== false) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('Config key \'realm\' is required, and must contain only printable '
                                                . 'characters, excluding quotation marks and colons');
        } else {
            $this->_realm = $config['realm'];
        }

        if (in_array('digest', $this->_acceptSchemes)) {
            if (empty($config['digest_domains']) ||
                !ctype_print($config['digest_domains']) ||
                strpos($config['digest_domains'], '"') !== false) {
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception('Config key \'digest_domains\' is required, and must contain '
                                                    . 'only printable characters, excluding quotation marks');
            } else {
                $this->_domains = $config['digest_domains'];
            }

            if (empty($config['nonce_timeout']) ||
                !is_numeric($config['nonce_timeout'])) {
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception('Config key \'nonce_timeout\' is required, and must be an '
                                                    . 'integer');
            } else {
                $this->_nonceTimeout = (int) $config['nonce_timeout'];
            }

            // We use the opaque value unless explicitly told not to
            if (isset($config['use_opaque']) && false == (bool) $config['use_opaque']) {
                $this->_useOpaque = false;
            } else {
                $this->_useOpaque = true;
            }

            if (isset($config['algorithm']) && in_array($config['algorithm'], $this->_supportedAlgos)) {
                $this->_algo = $config['algorithm'];
            } else {
                $this->_algo = 'MD5';
            }
        }

        // Don't be a proxy unless explicitly told to do so
        if (isset($config['proxy_auth']) && true == (bool) $config['proxy_auth']) {
            $this->_imaProxy = true;  // I'm a Proxy
        } else {
            $this->_imaProxy = false;
        }
    }

    /**
     * Setter for the _basicResolver property
     *
     * @param  Zend_Auth_Adapter_Http_Resolver_Interface $resolver
     * @return Zend_Auth_Adapter_Http Provides a fluent interface
     */
    public function setBasicResolver(Zend_Auth_Adapter_Http_Resolver_Interface $resolver)
    {
        $this->_basicResolver = $resolver;

        return $this;
    }

    /**
     * Getter for the _basicResolver property
     *
     * @return Zend_Auth_Adapter_Http_Resolver_Interface
     */
    public function getBasicResolver()
    {
        return $this->_basicResolver;
    }

    /**
     * Setter for the _digestResolver property
     *
     * @param  Zend_Auth_Adapter_Http_Resolver_Interface $resolver
     * @return Zend_Auth_Adapter_Http Provides a fluent interface
     */
    public function setDigestResolver(Zend_Auth_Adapter_Http_Resolver_Interface $resolver)
    {
        $this->_digestResolver = $resolver;

        return $this;
    }

    /**
     * Getter for the _digestResolver property
     *
     * @return Zend_Auth_Adapter_Http_Resolver_Interface
     */
    public function getDigestResolver()
    {
        return $this->_digestResolver;
    }

    /**
     * Setter for the Request object
     *
     * @param  Zend_Controller_Request_Http $request
     * @return Zend_Auth_Adapter_Http Provides a fluent interface
     */
    public function setRequest(Zend_Controller_Request_Http $request)
    {
        $this->_request = $request;

        return $this;
    }

    /**
     * Getter for the Request object
     *
     * @return Zend_Controller_Request_Http
     */
    public function getRequest()
    {
        return $this->_request;
    }

    /**
     * Setter for the Response object
     *
     * @param  Zend_Controller_Response_Http $response
     * @return Zend_Auth_Adapter_Http Provides a fluent interface
     */
    public function setResponse(Zend_Controller_Response_Http $response)
    {
        $this->_response = $response;

        return $this;
    }

    /**
     * Getter for the Response object
     *
     * @return Zend_Controller_Response_Http
     */
    public function getResponse()
    {
        return $this->_response;
    }

    /**
     * Authenticate
     *
     * @throws Zend_Auth_Adapter_Exception
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
        if (empty($this->_request) ||
            empty($this->_response)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('Request and Response objects must be set before calling '
                                                . 'authenticate()');
        }

        if ($this->_imaProxy) {
            $getHeader = 'Proxy-Authorization';
        } else {
            $getHeader = 'Authorization';
        }

        $authHeader = $this->_request->getHeader($getHeader);
        if (!$authHeader) {
            return $this->_challengeClient();
        }

        list($clientScheme) = explode(' ', $authHeader);
        $clientScheme = strtolower($clientScheme);

        // The server can issue multiple challenges, but the client should
        // answer with only the selected auth scheme.
        if (!in_array($clientScheme, $this->_supportedSchemes)) {
            $this->_response->setHttpResponseCode(400);
            return new Zend_Auth_Result(
                Zend_Auth_Result::FAILURE_UNCATEGORIZED,
                array(),
                array('Client requested an incorrect or unsupported authentication scheme')
            );
        }

        // client sent a scheme that is not the one required
        if (!in_array($clientScheme, $this->_acceptSchemes)) {
            // challenge again the client
            return $this->_challengeClient();
        }
        
        switch ($clientScheme) {
            case 'basic':
                $result = $this->_basicAuth($authHeader);
                break;
            case 'digest':
                $result = $this->_digestAuth($authHeader);
            break;
            default:
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception('Unsupported authentication scheme');
        }

        return $result;
    }

    /**
     * Challenge Client
     *
     * Sets a 401 or 407 Unauthorized response code, and creates the
     * appropriate Authenticate header(s) to prompt for credentials.
     *
     * @return Zend_Auth_Result Always returns a non-identity Auth result
     */
    protected function _challengeClient()
    {
        if ($this->_imaProxy) {
            $statusCode = 407;
            $headerName = 'Proxy-Authenticate';
        } else {
            $statusCode = 401;
            $headerName = 'WWW-Authenticate';
        }

        $this->_response->setHttpResponseCode($statusCode);

        // Send a challenge in each acceptable authentication scheme
        if (in_array('basic', $this->_acceptSchemes)) {
            $this->_response->setHeader($headerName, $this->_basicHeader());
        }
        if (in_array('digest', $this->_acceptSchemes)) {
            $this->_response->setHeader($headerName, $this->_digestHeader());
        }
        return new Zend_Auth_Result(
            Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
            array(),
            array('Invalid or absent credentials; challenging client')
        );
    }

    /**
     * Basic Header
     *
     * Generates a Proxy- or WWW-Authenticate header value in the Basic
     * authentication scheme.
     *
     * @return string Authenticate header value
     */
    protected function _basicHeader()
    {
        return 'Basic realm="' . $this->_realm . '"';
    }

    /**
     * Digest Header
     *
     * Generates a Proxy- or WWW-Authenticate header value in the Digest
     * authentication scheme.
     *
     * @return string Authenticate header value
     */
    protected function _digestHeader()
    {
        $wwwauth = 'Digest realm="' . $this->_realm . '", '
                 . 'domain="' . $this->_domains . '", '
                 . 'nonce="' . $this->_calcNonce() . '", '
                 . ($this->_useOpaque ? 'opaque="' . $this->_calcOpaque() . '", ' : '')
                 . 'algorithm="' . $this->_algo . '", '
                 . 'qop="' . implode(',', $this->_supportedQops) . '"';

        return $wwwauth;
    }

    /**
     * Basic Authentication
     *
     * @param  string $header Client's Authorization header
     * @throws Zend_Auth_Adapter_Exception
     * @return Zend_Auth_Result
     */
    protected function _basicAuth($header)
    {
        if (empty($header)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('The value of the client Authorization header is required');
        }
        if (empty($this->_basicResolver)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('A basicResolver object must be set before doing Basic '
                                                . 'authentication');
        }

        // Decode the Authorization header
        $auth = substr($header, strlen('Basic '));
        $auth = base64_decode($auth);
        if (!$auth) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('Unable to base64_decode Authorization header value');
        }

        // See ZF-1253. Validate the credentials the same way the digest
        // implementation does. If invalid credentials are detected,
        // re-challenge the client.
        if (!ctype_print($auth)) {
            return $this->_challengeClient();
        }
        // Fix for ZF-1515: Now re-challenges on empty username or password
        $creds = array_filter(explode(':', $auth));
        if (count($creds) != 2) {
            return $this->_challengeClient();
        }

        $password = $this->_basicResolver->resolve($creds[0], $this->_realm);
        if ($password && $password == $creds[1]) {
            $identity = array('username'=>$creds[0], 'realm'=>$this->_realm);
            return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $identity);
        } else {
            return $this->_challengeClient();
        }
    }

    /**
     * Digest Authentication
     *
     * @param  string $header Client's Authorization header
     * @throws Zend_Auth_Adapter_Exception
     * @return Zend_Auth_Result Valid auth result only on successful auth
     */
    protected function _digestAuth($header)
    {
        if (empty($header)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('The value of the client Authorization header is required');
        }
        if (empty($this->_digestResolver)) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('A digestResolver object must be set before doing Digest authentication');
        }

        $data = $this->_parseDigestAuth($header);
        if ($data === false) {
            $this->_response->setHttpResponseCode(400);
            return new Zend_Auth_Result(
                Zend_Auth_Result::FAILURE_UNCATEGORIZED,
                array(),
                array('Invalid Authorization header format')
            );
        }

        // See ZF-1052. This code was a bit too unforgiving of invalid
        // usernames. Now, if the username is bad, we re-challenge the client.
        if ('::invalid::' == $data['username']) {
            return $this->_challengeClient();
        }

        // Verify that the client sent back the same nonce
        if ($this->_calcNonce() != $data['nonce']) {
            return $this->_challengeClient();
        }
        // The opaque value is also required to match, but of course IE doesn't
        // play ball.
        if (!$this->_ieNoOpaque && $this->_calcOpaque() != $data['opaque']) {
            return $this->_challengeClient();
        }

        // Look up the user's password hash. If not found, deny access.
        // This makes no assumptions about how the password hash was
        // constructed beyond that it must have been built in such a way as
        // to be recreatable with the current settings of this object.
        $ha1 = $this->_digestResolver->resolve($data['username'], $data['realm']);
        if ($ha1 === false) {
            return $this->_challengeClient();
        }

        // If MD5-sess is used, a1 value is made of the user's password
        // hash with the server and client nonce appended, separated by
        // colons.
        if ($this->_algo == 'MD5-sess') {
            $ha1 = hash('md5', $ha1 . ':' . $data['nonce'] . ':' . $data['cnonce']);
        }

        // Calculate h(a2). The value of this hash depends on the qop
        // option selected by the client and the supported hash functions
        switch ($data['qop']) {
            case 'auth':
                $a2 = $this->_request->getMethod() . ':' . $data['uri'];
                break;
            case 'auth-int':
                // Should be REQUEST_METHOD . ':' . uri . ':' . hash(entity-body),
                // but this isn't supported yet, so fall through to default case
            default:
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception('Client requested an unsupported qop option');
        }
        // Using hash() should make parameterizing the hash algorithm
        // easier
        $ha2 = hash('md5', $a2);


        // Calculate the server's version of the request-digest. This must
        // match $data['response']. See RFC 2617, section 3.2.2.1
        $message = $data['nonce'] . ':' . $data['nc'] . ':' . $data['cnonce'] . ':' . $data['qop'] . ':' . $ha2;
        $digest  = hash('md5', $ha1 . ':' . $message);

        // If our digest matches the client's let them in, otherwise return
        // a 401 code and exit to prevent access to the protected resource.
        if ($digest == $data['response']) {
            $identity = array('username'=>$data['username'], 'realm'=>$data['realm']);
            return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $identity);
        } else {
            return $this->_challengeClient();
        }
    }

    /**
     * Calculate Nonce
     *
     * @return string The nonce value
     */
    protected function _calcNonce()
    {
        // Once subtle consequence of this timeout calculation is that it
        // actually divides all of time into _nonceTimeout-sized sections, such
        // that the value of timeout is the point in time of the next
        // approaching "boundary" of a section. This allows the server to
        // consistently generate the same timeout (and hence the same nonce
        // value) across requests, but only as long as one of those
        // "boundaries" is not crossed between requests. If that happens, the
        // nonce will change on its own, and effectively log the user out. This
        // would be surprising if the user just logged in.
        $timeout = ceil(time() / $this->_nonceTimeout) * $this->_nonceTimeout;

        $nonce = hash('md5', $timeout . ':' . $this->_request->getServer('HTTP_USER_AGENT') . ':' . __CLASS__);
        return $nonce;
    }

    /**
     * Calculate Opaque
     *
     * The opaque string can be anything; the client must return it exactly as
     * it was sent. It may be useful to store data in this string in some
     * applications. Ideally, a new value for this would be generated each time
     * a WWW-Authenticate header is sent (in order to reduce predictability),
     * but we would have to be able to create the same exact value across at
     * least two separate requests from the same client.
     *
     * @return string The opaque value
     */
    protected function _calcOpaque()
    {
        return hash('md5', 'Opaque Data:' . __CLASS__);
    }

    /**
     * Parse Digest Authorization header
     *
     * @param  string $header Client's Authorization: HTTP header
     * @return array|false Data elements from header, or false if any part of
     *         the header is invalid
     */
    protected function _parseDigestAuth($header)
    {
        $temp = null;
        $data = array();

        // See ZF-1052. Detect invalid usernames instead of just returning a
        // 400 code.
        $ret = preg_match('/username="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])
                  || !ctype_print($temp[1])
                  || strpos($temp[1], ':') !== false) {
            $data['username'] = '::invalid::';
        } else {
            $data['username'] = $temp[1];
        }
        $temp = null;

        $ret = preg_match('/realm="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (!ctype_print($temp[1]) || strpos($temp[1], ':') !== false) {
            return false;
        } else {
            $data['realm'] = $temp[1];
        }
        $temp = null;

        $ret = preg_match('/nonce="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (!ctype_xdigit($temp[1])) {
            return false;
        } else {
            $data['nonce'] = $temp[1];
        }
        $temp = null;

        $ret = preg_match('/uri="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        // Section 3.2.2.5 in RFC 2617 says the authenticating server must
        // verify that the URI field in the Authorization header is for the
        // same resource requested in the Request Line.
        $rUri = @parse_url($this->_request->getRequestUri());
        $cUri = @parse_url($temp[1]);
        if (false === $rUri || false === $cUri) {
            return false;
        } else {
            // Make sure the path portion of both URIs is the same
            if ($rUri['path'] != $cUri['path']) {
                return false;
            }
            // Section 3.2.2.5 seems to suggest that the value of the URI
            // Authorization field should be made into an absolute URI if the
            // Request URI is absolute, but it's vague, and that's a bunch of
            // code I don't want to write right now.
            $data['uri'] = $temp[1];
        }
        $temp = null;

        $ret = preg_match('/response="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (32 != strlen($temp[1]) || !ctype_xdigit($temp[1])) {
            return false;
        } else {
            $data['response'] = $temp[1];
        }
        $temp = null;

        // The spec says this should default to MD5 if omitted. OK, so how does
        // that square with the algo we send out in the WWW-Authenticate header,
        // if it can easily be overridden by the client?
        $ret = preg_match('/algorithm="?(' . $this->_algo . ')"?/', $header, $temp);
        if ($ret && !empty($temp[1])
                 && in_array($temp[1], $this->_supportedAlgos)) {
            $data['algorithm'] = $temp[1];
        } else {
            $data['algorithm'] = 'MD5';  // = $this->_algo; ?
        }
        $temp = null;

        // Not optional in this implementation
        $ret = preg_match('/cnonce="([^"]+)"/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (!ctype_print($temp[1])) {
            return false;
        } else {
            $data['cnonce'] = $temp[1];
        }
        $temp = null;

        // If the server sent an opaque value, the client must send it back
        if ($this->_useOpaque) {
            $ret = preg_match('/opaque="([^"]+)"/', $header, $temp);
            if (!$ret || empty($temp[1])) {

                // Big surprise: IE isn't RFC 2617-compliant.
                if (false !== strpos($this->_request->getHeader('User-Agent'), 'MSIE')) {
                    $temp[1] = '';
                    $this->_ieNoOpaque = true;
                } else {
                    return false;
                }
            }
            // This implementation only sends MD5 hex strings in the opaque value
            if (!$this->_ieNoOpaque &&
                (32 != strlen($temp[1]) || !ctype_xdigit($temp[1]))) {
                return false;
            } else {
                $data['opaque'] = $temp[1];
            }
            $temp = null;
        }

        // Not optional in this implementation, but must be one of the supported
        // qop types
        $ret = preg_match('/qop="?(' . implode('|', $this->_supportedQops) . ')"?/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (!in_array($temp[1], $this->_supportedQops)) {
            return false;
        } else {
            $data['qop'] = $temp[1];
        }
        $temp = null;

        // Not optional in this implementation. The spec says this value
        // shouldn't be a quoted string, but apparently some implementations
        // quote it anyway. See ZF-1544.
        $ret = preg_match('/nc="?([0-9A-Fa-f]{8})"?/', $header, $temp);
        if (!$ret || empty($temp[1])) {
            return false;
        }
        if (8 != strlen($temp[1]) || !ctype_xdigit($temp[1])) {
            return false;
        } else {
            $data['nc'] = $temp[1];
        }
        $temp = null;

        return $data;
    }
}
PKpG[Aӟ%Auth/Adapter/Digest.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Digest.php 9668 2008-06-11 08:15:02Z doctorrock83 $
 */


/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_Digest implements Zend_Auth_Adapter_Interface
{
    /**
     * Filename against which authentication queries are performed
     *
     * @var string
     */
    protected $_filename;

    /**
     * Digest authentication realm
     *
     * @var string
     */
    protected $_realm;

    /**
     * Digest authentication user
     *
     * @var string
     */
    protected $_username;

    /**
     * Password for the user of the realm
     *
     * @var string
     */
    protected $_password;

    /**
     * Sets adapter options
     *
     * @param  mixed $filename
     * @param  mixed $realm
     * @param  mixed $username
     * @param  mixed $password
     * @return void
     */
    public function __construct($filename = null, $realm = null, $username = null, $password = null)
    {
        $options = array('filename', 'realm', 'username', 'password');
        foreach ($options as $option) {
            if (null !== $$option) {
                $methodName = 'set' . ucfirst($option);
                $this->$methodName($$option);
            }
        }
    }

    /**
     * Returns the filename option value or null if it has not yet been set
     *
     * @return string|null
     */
    public function getFilename()
    {
        return $this->_filename;
    }

    /**
     * Sets the filename option value
     *
     * @param  mixed $filename
     * @return Zend_Auth_Adapter_Digest Provides a fluent interface
     */
    public function setFilename($filename)
    {
        $this->_filename = (string) $filename;
        return $this;
    }

    /**
     * Returns the realm option value or null if it has not yet been set
     *
     * @return string|null
     */
    public function getRealm()
    {
        return $this->_realm;
    }

    /**
     * Sets the realm option value
     *
     * @param  mixed $realm
     * @return Zend_Auth_Adapter_Digest Provides a fluent interface
     */
    public function setRealm($realm)
    {
        $this->_realm = (string) $realm;
        return $this;
    }

    /**
     * Returns the username option value or null if it has not yet been set
     *
     * @return string|null
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Sets the username option value
     *
     * @param  mixed $username
     * @return Zend_Auth_Adapter_Digest Provides a fluent interface
     */
    public function setUsername($username)
    {
        $this->_username = (string) $username;
        return $this;
    }

    /**
     * Returns the password option value or null if it has not yet been set
     *
     * @return string|null
     */
    public function getPassword()
    {
        return $this->_password;
    }

    /**
     * Sets the password option value
     *
     * @param  mixed $password
     * @return Zend_Auth_Adapter_Digest Provides a fluent interface
     */
    public function setPassword($password)
    {
        $this->_password = (string) $password;
        return $this;
    }

    /**
     * Defined by Zend_Auth_Adapter_Interface
     *
     * @throws Zend_Auth_Adapter_Exception
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
        $optionsRequired = array('filename', 'realm', 'username', 'password');
        foreach ($optionsRequired as $optionRequired) {
            if (null === $this->{"_$optionRequired"}) {
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception("Option '$optionRequired' must be set before authentication");
            }
        }

        if (false === ($fileHandle = @fopen($this->_filename, 'r'))) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception("Cannot open '$this->_filename' for reading");
        }

        $id       = "$this->_username:$this->_realm";
        $idLength = strlen($id);

        $result = array(
            'code'  => Zend_Auth_Result::FAILURE,
            'identity' => array(
                'realm'    => $this->_realm,
                'username' => $this->_username,
                ),
            'messages' => array()
            );

        while ($line = trim(fgets($fileHandle))) {
            if (substr($line, 0, $idLength) === $id) {
                if (substr($line, -32) === md5("$this->_username:$this->_realm:$this->_password")) {
                    $result['code'] = Zend_Auth_Result::SUCCESS;
                } else {
                    $result['code'] = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
                    $result['messages'][] = 'Password incorrect';
                }
                return new Zend_Auth_Result($result['code'], $result['identity'], $result['messages']);
            }
        }

        $result['code'] = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
        $result['messages'][] = "Username '$this->_username' and realm '$this->_realm' combination not found";
        return new Zend_Auth_Result($result['code'], $result['identity'], $result['messages']);
    }
}
PKpG[B����Auth/Adapter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * Zend_Auth_Exception
 */
require_once 'Zend/Auth/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_Exception extends Zend_Auth_Exception
{}
PKpG[}��<<Auth/Adapter/DbTable.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DbTable.php 13202 2008-12-13 19:53:44Z sidhighwind $
 */


/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Auth_Result
 */
require_once 'Zend/Auth/Result.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_DbTable implements Zend_Auth_Adapter_Interface
{
    /**
     * Database Connection
     *
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_zendDb = null;

    /**
     * $_tableName - the table name to check
     *
     * @var string
     */
    protected $_tableName = null;

    /**
     * $_identityColumn - the column to use as the identity
     *
     * @var string
     */
    protected $_identityColumn = null;

    /**
     * $_credentialColumns - columns to be used as the credentials
     *
     * @var string
     */
    protected $_credentialColumn = null;

    /**
     * $_identity - Identity value
     *
     * @var string
     */
    protected $_identity = null;

    /**
     * $_credential - Credential values
     *
     * @var string
     */
    protected $_credential = null;

    /**
     * $_credentialTreatment - Treatment applied to the credential, such as MD5() or PASSWORD()
     *
     * @var string
     */
    protected $_credentialTreatment = null;

    /**
     * $_authenticateResultInfo
     *
     * @var array
     */
    protected $_authenticateResultInfo = null;

    /**
     * $_resultRow - Results of database authentication query
     *
     * @var array
     */
    protected $_resultRow = null;

    /**
     * __construct() - Sets configuration options
     *
     * @param  Zend_Db_Adapter_Abstract $zendDb
     * @param  string                   $tableName
     * @param  string                   $identityColumn
     * @param  string                   $credentialColumn
     * @param  string                   $credentialTreatment
     * @return void
     */
    public function __construct(Zend_Db_Adapter_Abstract $zendDb, $tableName = null, $identityColumn = null,
                                $credentialColumn = null, $credentialTreatment = null)
    {
        $this->_zendDb = $zendDb;

        if (null !== $tableName) {
            $this->setTableName($tableName);
        }

        if (null !== $identityColumn) {
            $this->setIdentityColumn($identityColumn);
        }

        if (null !== $credentialColumn) {
            $this->setCredentialColumn($credentialColumn);
        }

        if (null !== $credentialTreatment) {
            $this->setCredentialTreatment($credentialTreatment);
        }
    }

    /**
     * setTableName() - set the table name to be used in the select query
     *
     * @param  string $tableName
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setTableName($tableName)
    {
        $this->_tableName = $tableName;
        return $this;
    }

    /**
     * setIdentityColumn() - set the column name to be used as the identity column
     *
     * @param  string $identityColumn
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setIdentityColumn($identityColumn)
    {
        $this->_identityColumn = $identityColumn;
        return $this;
    }

    /**
     * setCredentialColumn() - set the column name to be used as the credential column
     *
     * @param  string $credentialColumn
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setCredentialColumn($credentialColumn)
    {
        $this->_credentialColumn = $credentialColumn;
        return $this;
    }

    /**
     * setCredentialTreatment() - allows the developer to pass a parameterized string that is
     * used to transform or treat the input credential data
     *
     * In many cases, passwords and other sensitive data are encrypted, hashed, encoded,
     * obscured, or otherwise treated through some function or algorithm. By specifying a
     * parameterized treatment string with this method, a developer may apply arbitrary SQL
     * upon input credential data.
     *
     * Examples:
     *
     *  'PASSWORD(?)'
     *  'MD5(?)'
     *
     * @param  string $treatment
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setCredentialTreatment($treatment)
    {
        $this->_credentialTreatment = $treatment;
        return $this;
    }

    /**
     * setIdentity() - set the value to be used as the identity
     *
     * @param  string $value
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setIdentity($value)
    {
        $this->_identity = $value;
        return $this;
    }

    /**
     * setCredential() - set the credential value to be used, optionally can specify a treatment
     * to be used, should be supplied in parameterized form, such as 'MD5(?)' or 'PASSWORD(?)'
     *
     * @param  string $credential
     * @return Zend_Auth_Adapter_DbTable Provides a fluent interface
     */
    public function setCredential($credential)
    {
        $this->_credential = $credential;
        return $this;
    }

    /**
     * getResultRowObject() - Returns the result row as a stdClass object
     *
     * @param  string|array $returnColumns
     * @param  string|array $omitColumns
     * @return stdClass|boolean
     */
    public function getResultRowObject($returnColumns = null, $omitColumns = null)
    {
        if (!$this->_resultRow) {
            return false;
        }

        $returnObject = new stdClass();

        if (null !== $returnColumns) {

            $availableColumns = array_keys($this->_resultRow);
            foreach ( (array) $returnColumns as $returnColumn) {
                if (in_array($returnColumn, $availableColumns)) {
                    $returnObject->{$returnColumn} = $this->_resultRow[$returnColumn];
                }
            }
            return $returnObject;

        } elseif (null !== $omitColumns) {

            $omitColumns = (array) $omitColumns;
            foreach ($this->_resultRow as $resultColumn => $resultValue) {
                if (!in_array($resultColumn, $omitColumns)) {
                    $returnObject->{$resultColumn} = $resultValue;
                }
            }
            return $returnObject;

        } else {

            foreach ($this->_resultRow as $resultColumn => $resultValue) {
                $returnObject->{$resultColumn} = $resultValue;
            }
            return $returnObject;

        }
    }

    /**
     * authenticate() - defined by Zend_Auth_Adapter_Interface.  This method is called to
     * attempt an authenication.  Previous to this call, this adapter would have already
     * been configured with all nessissary information to successfully connect to a database
     * table and attempt to find a record matching the provided identity.
     *
     * @throws Zend_Auth_Adapter_Exception if answering the authentication query is impossible
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
        $this->_authenticateSetup();
        $dbSelect = $this->_authenticateCreateSelect();
        $resultIdentities = $this->_authenticateQuerySelect($dbSelect);

        if ( ($authResult = $this->_authenticateValidateResultset($resultIdentities)) instanceof Zend_Auth_Result) {
            return $authResult;
        }

        $authResult = $this->_authenticateValidateResult(array_shift($resultIdentities));
        return $authResult;
    }

    /**
     * _authenticateSetup() - This method abstracts the steps involved with making sure
     * that this adapter was indeed setup properly with all required peices of information.
     *
     * @throws Zend_Auth_Adapter_Exception - in the event that setup was not done properly
     * @return true
     */
    protected function _authenticateSetup()
    {
        $exception = null;

        if ($this->_tableName == '') {
            $exception = 'A table must be supplied for the Zend_Auth_Adapter_DbTable authentication adapter.';
        } elseif ($this->_identityColumn == '') {
            $exception = 'An identity column must be supplied for the Zend_Auth_Adapter_DbTable authentication adapter.';
        } elseif ($this->_credentialColumn == '') {
            $exception = 'A credential column must be supplied for the Zend_Auth_Adapter_DbTable authentication adapter.';
        } elseif ($this->_identity == '') {
            $exception = 'A value for the identity was not provided prior to authentication with Zend_Auth_Adapter_DbTable.';
        } elseif ($this->_credential === null) {
            $exception = 'A credential value was not provided prior to authentication with Zend_Auth_Adapter_DbTable.';
        }

        if (null !== $exception) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception($exception);
        }

        $this->_authenticateResultInfo = array(
            'code'     => Zend_Auth_Result::FAILURE,
            'identity' => $this->_identity,
            'messages' => array()
            );

        return true;
    }

    /**
     * _authenticateCreateSelect() - This method creates a Zend_Db_Select object that
     * is completely configured to be queried against the database.
     *
     * @return Zend_Db_Select
     */
    protected function _authenticateCreateSelect()
    {
        // build credential expression
        if (empty($this->_credentialTreatment) || (strpos($this->_credentialTreatment, '?') === false)) {
            $this->_credentialTreatment = '?';
        }

        $credentialExpression = new Zend_Db_Expr(
            '(CASE WHEN ' .
            $this->_zendDb->quoteInto(
                $this->_zendDb->quoteIdentifier($this->_credentialColumn, true)
                . ' = ' . $this->_credentialTreatment, $this->_credential
                )
            . ' THEN 1 ELSE 0 END) AS '
            . $this->_zendDb->quoteIdentifier('zend_auth_credential_match')
            );

        // get select
        $dbSelect = $this->_zendDb->select();
        $dbSelect->from($this->_tableName, array('*', $credentialExpression))
                 ->where($this->_zendDb->quoteIdentifier($this->_identityColumn, true) . ' = ?', $this->_identity);
        return $dbSelect;
    }

    /**
     * _authenticateQuerySelect() - This method accepts a Zend_Db_Select object and
     * performs a query against the database with that object.
     *
     * @param Zend_Db_Select $dbSelect
     * @throws Zend_Auth_Adapter_Exception - when a invalid select object is encoutered
     * @return array
     */
    protected function _authenticateQuerySelect(Zend_Db_Select $dbSelect)
    {
        try {
            if ($this->_zendDb->getFetchMode() != Zend_DB::FETCH_ASSOC) {
                $origDbFetchMode = $this->_zendDb->getFetchMode();
                $this->_zendDb->setFetchMode(Zend_DB::FETCH_ASSOC);
            }
            $resultIdentities = $this->_zendDb->fetchAll($dbSelect->__toString());
            if (isset($origDbFetchMode)) {
                $this->_zendDb->setFetchMode($origDbFetchMode);
                unset($origDbFetchMode);
            }
        } catch (Exception $e) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('The supplied parameters to Zend_Auth_Adapter_DbTable failed to '
                                                . 'produce a valid sql statement, please check table and column names '
                                                . 'for validity.');
        }
        return $resultIdentities;
    }

    /**
     * _authenticateValidateResultSet() - This method attempts to make certian that only one
     * record was returned in the result set
     *
     * @param array $resultIdentities
     * @return true|Zend_Auth_Result
     */
    protected function _authenticateValidateResultSet(array $resultIdentities)
    {


        if (count($resultIdentities) < 1) {
            $this->_authenticateResultInfo['code'] = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
            $this->_authenticateResultInfo['messages'][] = 'A record with the supplied identity could not be found.';
            return $this->_authenticateCreateAuthResult();
        } elseif (count($resultIdentities) > 1) {
            $this->_authenticateResultInfo['code'] = Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS;
            $this->_authenticateResultInfo['messages'][] = 'More than one record matches the supplied identity.';
            return $this->_authenticateCreateAuthResult();
        }

        return true;
    }

    /**
     * _authenticateValidateResult() - This method attempts to validate that the record in the
     * result set is indeed a record that matched the identity provided to this adapter.
     *
     * @param array $resultIdentity
     * @return Zend_Auth_Result
     */
    protected function _authenticateValidateResult($resultIdentity)
    {
        if ($resultIdentity['zend_auth_credential_match'] != '1') {
            $this->_authenticateResultInfo['code'] = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
            $this->_authenticateResultInfo['messages'][] = 'Supplied credential is invalid.';
            return $this->_authenticateCreateAuthResult();
        }

        unset($resultIdentity['zend_auth_credential_match']);
        $this->_resultRow = $resultIdentity;

        $this->_authenticateResultInfo['code'] = Zend_Auth_Result::SUCCESS;
        $this->_authenticateResultInfo['messages'][] = 'Authentication successful.';
        return $this->_authenticateCreateAuthResult();
    }

    /**
     * _authenticateCreateAuthResult() - This method creates a Zend_Auth_Result object
     * from the information that has been collected during the authenticate() attempt.
     *
     * @return Zend_Auth_Result
     */
    protected function _authenticateCreateAuthResult()
    {
        return new Zend_Auth_Result(
            $this->_authenticateResultInfo['code'],
            $this->_authenticateResultInfo['identity'],
            $this->_authenticateResultInfo['messages']
            );
    }

}
PKpG[߅DgPPAuth/Adapter/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Auth_Result
 */
require_once 'Zend/Auth/Result.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Auth_Adapter_Interface
{
    /**
     * Performs an authentication attempt
     *
     * @throws Zend_Auth_Adapter_Exception If authentication cannot be performed
     * @return Zend_Auth_Result
     */
    public function authenticate();
}
PKpG[��� � Auth/Adapter/OpenId.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: OpenId.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';


/**
 * @see Zend_OpenId_Consumer
 */
require_once 'Zend/OpenId/Consumer.php';


/**
 * A Zend_Auth Authentication Adapter allowing the use of OpenID protocol as an
 * authentication mechanism
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_OpenId implements Zend_Auth_Adapter_Interface
{
    /**
     * The identity value being authenticated
     *
     * @var string
     */
    private $_id = null;

    /**
     * Reference to an implementation of a storage object
     *
     * @var Zend_OpenId_Consumer_Storage
     */
    private $_storage = null;

    /**
     * The URL to redirect response from server to
     *
     * @var string
     */
    private $_returnTo = null;

    /**
     * The HTTP URL to identify consumer on server
     *
     * @var string
     */
    private $_root = null;

    /**
     * Extension object or array of extensions objects
     *
     * @var string
     */
    private $_extensions = null;

    /**
     * The response object to perform HTTP or HTML form redirection
     *
     * @var Zend_Controller_Response_Abstract
     */
    private $_response = null;

    /**
     * Enables or disables interaction with user during authentication on
     * OpenID provider.
     *
     * @var bool
     */
    private $_check_immediate = false;

    /**
     * HTTP client to make HTTP requests
     *
     * @var Zend_Http_Client $_httpClient
     */
    private $_httpClient = null;

    /**
     * Constructor
     *
     * @param string $id the identity value
     * @param Zend_OpenId_Consumer_Storage $storage an optional implementation
     *        of a storage object
     * @param string $returnTo HTTP URL to redirect response from server to
     * @param string $root HTTP URL to identify consumer on server
     * @param mixed $extensions extension object or array of extensions objects
     * @param Zend_Controller_Response_Abstract $response an optional response
     *        object to perform HTTP or HTML form redirection
     * @return void
     */
    public function __construct($id = null,
                                Zend_OpenId_Consumer_Storage $storage = null,
                                $returnTo = null,
                                $root = null,
                                $extensions = null,
                                Zend_Controller_Response_Abstract $response = null) {
        $this->_id         = $id;
        $this->_storage    = $storage;
        $this->_returnTo   = $returnTo;
        $this->_root       = $root;
        $this->_extensions = $extensions;
        $this->_response   = $response;
    }

    /**
     * Sets the value to be used as the identity
     *
     * @param  string $id the identity value
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setIdentity($id)
    {
        $this->_id = $id;
        return $this;
    }

    /**
     * Sets the storage implementation which will be use by OpenId
     *
     * @param  Zend_OpenId_Consumer_Storage $storage
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setStorage(Zend_OpenId_Consumer_Storage $storage)
    {
        $this->_storage = $storage;
        return $this;
    }

    /**
     * Sets the HTTP URL to redirect response from server to
     *
     * @param  string $returnTo
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setReturnTo($returnTo)
    {
        $this->_returnTo = $returnTo;
        return $this;
    }

    /**
     * Sets HTTP URL to identify consumer on server
     *
     * @param  string $root
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setRoot($root)
    {
        $this->_root = $root;
        return $this;
    }

    /**
     * Sets OpenID extension(s)
     *
     * @param  mixed $extensions
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setExtensions($extensions)
    {
        $this->_extensions = $extensions;
        return $this;
    }

    /**
     * Sets an optional response object to perform HTTP or HTML form redirection
     *
     * @param  string $root
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setResponse($response)
    {
        $this->_response = $response;
        return $this;
    }

    /**
     * Enables or disables interaction with user during authentication on
     * OpenID provider.
     *
     * @param  bool $check_immediate
     * @return Zend_Auth_Adapter_OpenId Provides a fluent interface
     */
    public function setCheckImmediate($check_immediate)
    {
        $this->_check_immediate = $check_immediate;
        return $this;
    }

    /**
     * Sets HTTP client object to make HTTP requests
     *
     * @param Zend_Http_Client $client HTTP client object to be used
     */
    public function setHttpClient($client) {
        $this->_httpClient = $client;
    }

    /**
     * Authenticates the given OpenId identity.
     * Defined by Zend_Auth_Adapter_Interface.
     *
     * @throws Zend_Auth_Adapter_Exception If answering the authentication query is impossible
     * @return Zend_Auth_Result
     */
    public function authenticate() {
        $id = $this->_id;
        if (!empty($id)) {
            $consumer = new Zend_OpenId_Consumer($this->_storage);
            $consumer->setHttpClient($this->_httpClient);
            /* login() is never returns on success */
            if (!$this->_check_immediate) {
                if (!$consumer->login($id,
                        $this->_returnTo,
                        $this->_root,
                        $this->_extensions,
                        $this->_response)) {
                    return new Zend_Auth_Result(
                        Zend_Auth_Result::FAILURE,
                        $id,
                        array("Authentication failed", $consumer->getError()));
                }
            } else {
                if (!$consumer->check($id,
                        $this->_returnTo,
                        $this->_root,
                        $this->_extensions,
                        $this->_response)) {
                    return new Zend_Auth_Result(
                        Zend_Auth_Result::FAILURE,
                        $id,
                        array("Authentication failed", $consumer->getError()));
                }
            }
        } else {
            $params = (isset($_SERVER['REQUEST_METHOD']) &&
                       $_SERVER['REQUEST_METHOD']=='POST') ? $_POST: $_GET;
            $consumer = new Zend_OpenId_Consumer($this->_storage);
            $consumer->setHttpClient($this->_httpClient);
            if ($consumer->verify(
                    $params,
                    $id,
                    $this->_extensions)) {
                return new Zend_Auth_Result(
                    Zend_Auth_Result::SUCCESS,
                    $id,
                    array("Authentication successful"));
            } else {
                return new Zend_Auth_Result(
                    Zend_Auth_Result::FAILURE,
                    $id,
                    array("Authentication failed", $consumer->getError()));
            }
        }
    }

}
PKpG[@�
  Auth/Adapter/InfoCard.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: InfoCard.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';

/**
 * @see Zend_Auth_Result
 */
require_once 'Zend/Auth/Result.php';

/**
 * @see Zend_InfoCard
 */
require_once 'Zend/InfoCard.php';

/**
 * A Zend_Auth Authentication Adapter allowing the use of Information Cards as an
 * authentication mechanism
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_InfoCard implements Zend_Auth_Adapter_Interface
{
    /**
     * The XML Token being authenticated
     *
     * @var string
     */
    protected $_xmlToken;

    /**
     * The instance of Zend_InfoCard
     *
     * @var Zend_InfoCard
     */
    protected $_infoCard;

    /**
     * Constructor
     *
     * @param  string $strXmlDocument The XML Token provided by the client
     * @return void
     */
    public function __construct($strXmlDocument)
    {
        $this->_xmlToken = $strXmlDocument;
        $this->_infoCard = new Zend_InfoCard();
    }

    /**
     * Sets the InfoCard component Adapter to use
     *
     * @param  Zend_InfoCard_Adapter_Interface $a
     * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface
     */
    public function setAdapter(Zend_InfoCard_Adapter_Interface $a)
    {
        $this->_infoCard->setAdapter($a);
        return $this;
    }

    /**
     * Retrieves the InfoCard component adapter being used
     *
     * @return Zend_InfoCard_Adapter_Interface
     */
    public function getAdapter()
    {
        return $this->_infoCard->getAdapter();
    }

    /**
     * Retrieves the InfoCard public key cipher object being used
     *
     * @return Zend_InfoCard_Cipher_PKI_Interface
     */
    public function getPKCipherObject()
    {
        return $this->_infoCard->getPKCipherObject();
    }

    /**
     * Sets the InfoCard public key cipher object to use
     *
     * @param  Zend_InfoCard_Cipher_PKI_Interface $cipherObj
     * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface
     */
    public function setPKICipherObject(Zend_InfoCard_Cipher_PKI_Interface $cipherObj)
    {
        $this->_infoCard->setPKICipherObject($cipherObj);
        return $this;
    }

    /**
     * Retrieves the Symmetric cipher object being used
     *
     * @return Zend_InfoCard_Cipher_Symmetric_Interface
     */
    public function getSymCipherObject()
    {
        return $this->_infoCard->getSymCipherObject();
    }

    /**
     * Sets the InfoCard symmetric cipher object to use
     *
     * @param  Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj
     * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface
     */
    public function setSymCipherObject(Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj)
    {
        $this->_infoCard->setSymCipherObject($cipherObj);
        return $this;
    }

    /**
     * Remove a Certificate Pair by Key ID from the search list
     *
     * @param  string $key_id The Certificate Key ID returned from adding the certificate pair
     * @throws Zend_InfoCard_Exception
     * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface
     */
    public function removeCertificatePair($key_id)
    {
        $this->_infoCard->removeCertificatePair($key_id);
        return $this;
    }

    /**
     * Add a Certificate Pair to the list of certificates searched by the component
     *
     * @param  string $private_key_file    The path to the private key file for the pair
     * @param  string $public_key_file     The path to the certificate / public key for the pair
     * @param  string $type                (optional) The URI for the type of key pair this is (default RSA with OAEP padding)
     * @param  string $password            (optional) The password for the private key file if necessary
     * @throws Zend_InfoCard_Exception
     * @return string A key ID representing this key pair in the component
     */
    public function addCertificatePair($private_key_file, $public_key_file, $type = Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P, $password = null)
    {
        return $this->_infoCard->addCertificatePair($private_key_file, $public_key_file, $type, $password);
    }

    /**
     * Return a Certificate Pair from a key ID
     *
     * @param  string $key_id The Key ID of the certificate pair in the component
     * @throws Zend_InfoCard_Exception
     * @return array An array containing the path to the private/public key files,
     *               the type URI and the password if provided
     */
    public function getCertificatePair($key_id)
    {
        return $this->_infoCard->getCertificatePair($key_id);
    }

    /**
     * Set the XML Token to be processed
     *
     * @param  string $strXmlToken The XML token to process
     * @return Zend_Auth_Adapter_InfoCard Provides a fluent interface
     */
    public function setXmlToken($strXmlToken)
    {
        $this->_xmlToken = $strXmlToken;
        return $this;
    }

    /**
     * Get the XML Token being processed
     *
     * @return string The XML token to be processed
     */
    public function getXmlToken()
    {
        return $this->_xmlToken;
    }

    /**
     * Authenticates the XML token
     *
     * @return Zend_Auth_Result The result of the authentication
     */
    public function authenticate()
    {
        try {
            $claims = $this->_infoCard->process($this->getXmlToken());
        } catch(Exception $e) {
            return new Zend_Auth_Result(Zend_Auth_Result::FAILURE , null, array('Exception Thrown',
                                                                                $e->getMessage(),
                                                                                $e->getTraceAsString(),
                                                                                serialize($e)));
        }

        if(!$claims->isValid()) {
            switch($claims->getCode()) {
                case Zend_infoCard_Claims::RESULT_PROCESSING_FAILURE:
                    return new Zend_Auth_Result(
                        Zend_Auth_Result::FAILURE,
                        $claims,
                        array(
                            'Processing Failure',
                            $claims->getErrorMsg()
                        )
                    );
                    break;
                case Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE:
                    return new Zend_Auth_Result(
                        Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
                        $claims,
                        array(
                            'Validation Failure',
                            $claims->getErrorMsg()
                        )
                    );
                    break;
                default:
                    return new Zend_Auth_Result(
                        Zend_Auth_Result::FAILURE,
                        $claims,
                        array(
                            'Unknown Failure',
                            $claims->getErrorMsg()
                        )
                    );
                    break;
            }
        }

        return new Zend_Auth_Result(
            Zend_Auth_Result::SUCCESS,
            $claims
        );
    }
}
PKpG[�L�ܣ(�(Auth/Adapter/Ldap.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ldap.php 11765 2008-10-09 01:53:43Z miallen $
 */

/**
 * @see Zend_Auth_Adapter_Interface
 */
require_once 'Zend/Auth/Adapter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_Ldap implements Zend_Auth_Adapter_Interface
{

    /**
     * The Zend_Ldap context.
     *
     * @var Zend_Ldap
     */
    protected $_ldap = null;

    /**
     * The array of arrays of Zend_Ldap options passed to the constructor.
     *
     * @var array
     */
    protected $_options = null;

    /**
     * The username of the account being authenticated.
     *
     * @var string
     */
    protected $_username = null;

    /**
     * The password of the account being authenticated.
     *
     * @var string
     */
    protected $_password = null;

    /**
     * Constructor
     *
     * @param  array  $options  An array of arrays of Zend_Ldap options
     * @param  string $username The username of the account being authenticated
     * @param  string $password The password of the account being authenticated
     * @return void
     */
    public function __construct(array $options = array(), $username = null, $password = null)
    {
        $this->setOptions($options);
        if ($username !== null) {
            $this->setUsername($username);
        }
        if ($password !== null) {
            $this->setPassword($password);
        }
    }

    /**
     * Returns the array of arrays of Zend_Ldap options of this adapter.
     *
     * @return array|null
     */
    public function getOptions()
    {
        return $this->_options;
    }

    /**
     * Sets the array of arrays of Zend_Ldap options to be used by
     * this adapter.
     *
     * @param  array $options The array of arrays of Zend_Ldap options
     * @return Zend_Auth_Adapter_Ldap Provides a fluent interface
     */
    public function setOptions($options)
    {
        $this->_options = is_array($options) ? $options : array();
        return $this;
    }

    /**
     * Returns the username of the account being authenticated, or
     * NULL if none is set.
     *
     * @return string|null
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Sets the username for binding
     *
     * @param  string $username The username for binding
     * @return Zend_Auth_Adapter_Ldap Provides a fluent interface
     */
    public function setUsername($username)
    {
        $this->_username = (string) $username;
        return $this;
    }

    /**
     * Returns the password of the account being authenticated, or
     * NULL if none is set.
     *
     * @return string|null
     */
    public function getPassword()
    {
        return $this->_password;
    }

    /**
     * Sets the passwort for the account
     *
     * @param  string $password The password of the account being authenticated
     * @return Zend_Auth_Adapter_Ldap Provides a fluent interface
     */
    public function setPassword($password)
    {
        $this->_password = (string) $password;
        return $this;
    }

    /**
     * Returns the LDAP Object
     *
     * @return Zend_Ldap The Zend_Ldap object used to authenticate the credentials
     */
    public function getLdap()
    {
        if ($this->_ldap === null) {
            /**
             * @see Zend_Ldap
             */
            require_once 'Zend/Ldap.php';
            $this->_ldap = new Zend_Ldap();
        }
        return $this->_ldap;
    }

    /**
     * Returns a domain name for the current LDAP options. This is used
     * for skipping redundant operations (e.g. authentications).
     *
     * @return string
     */
    protected function _getAuthorityName()
    {
        $options = $this->getLdap()->getOptions();
        $name = $options['accountDomainName'];
        if (!$name)
            $name = $options['accountDomainNameShort'];
        return $name ? $name : '';
    }

    /**
     * Authenticate the user
     *
     * @throws Zend_Auth_Adapter_Exception
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
        /**
         * @see Zend_Ldap_Exception
         */
        require_once 'Zend/Ldap/Exception.php';

        $messages = array();
        $messages[0] = ''; // reserved
        $messages[1] = ''; // reserved

        $username = $this->_username;
        $password = $this->_password;

        if (!$username) {
            $code = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
            $messages[0] = 'A username is required';
            return new Zend_Auth_Result($code, '', $messages);
        }
        if (!$password) {
            /* A password is required because some servers will
             * treat an empty password as an anonymous bind.
             */
            $code = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
            $messages[0] = 'A password is required';
            return new Zend_Auth_Result($code, '', $messages);
        }

        $ldap = $this->getLdap();

        $code = Zend_Auth_Result::FAILURE;
        $messages[0] = "Authority not found: $username";
        $failedAuthorities = array();

        /* Iterate through each server and try to authenticate the supplied
         * credentials against it.
         */
        foreach ($this->_options as $name => $options) {

            if (!is_array($options)) {
                /**
                 * @see Zend_Auth_Adapter_Exception
                 */
                require_once 'Zend/Auth/Adapter/Exception.php';
                throw new Zend_Auth_Adapter_Exception('Adapter options array not in array');
            }
            $ldap->setOptions($options);
            $dname = '';

            try {
                if ($messages[1])
                    $messages[] = $messages[1];
                $messages[1] = '';
                $messages[] = $this->_optionsToString($options);

                $dname = $this->_getAuthorityName();
                if (isset($failedAuthorities[$dname])) {
                    /* If multiple sets of server options for the same domain
                     * are supplied, we want to skip redundant authentications
                     * where the identity or credentials where found to be
                     * invalid with another server for the same domain. The
                     * $failedAuthorities array tracks this condition (and also
                     * serves to supply the original error message).
                     * This fixes issue ZF-4093.
                     */
                    $messages[1] = $failedAuthorities[$dname];
                    $messages[] = "Skipping previously failed authority: $dname";
                    continue;
                }

                $canonicalName = $ldap->getCanonicalAccountName($username);

                $ldap->bind($canonicalName, $password);

                $messages[0] = '';
                $messages[1] = '';
                $messages[] = "$canonicalName authentication successful";

                return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $canonicalName, $messages);
            } catch (Zend_Ldap_Exception $zle) {

                /* LDAP based authentication is notoriously difficult to diagnose. Therefore
                 * we bend over backwards to capture and record every possible bit of
                 * information when something goes wrong.
                 */

                $err = $zle->getCode();

                if ($err == Zend_Ldap_Exception::LDAP_X_DOMAIN_MISMATCH) {
                    /* This error indicates that the domain supplied in the
                     * username did not match the domains in the server options
                     * and therefore we should just skip to the next set of
                     * server options.
                     */
                    continue;
                } else if ($err == Zend_Ldap_Exception::LDAP_NO_SUCH_OBJECT) {
                    $code = Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND;
                    $messages[0] = "Account not found: $username";
                    $failedAuthorities[$dname] = $zle->getMessage();
                } else if ($err == Zend_Ldap_Exception::LDAP_INVALID_CREDENTIALS) {
                    $code = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
                    $messages[0] = 'Invalid credentials';
                    $failedAuthorities[$dname] = $zle->getMessage();
                } else {
                    $line = $zle->getLine();
                    $messages[] = $zle->getFile() . "($line): " . $zle->getMessage();
                    $messages[] = str_replace($password, '*****', $zle->getTraceAsString());
                    $messages[0] = 'An unexpected failure occurred';
                }
                $messages[1] = $zle->getMessage();
            }
        }

        $msg = isset($messages[1]) ? $messages[1] : $messages[0];
        $messages[] = "$username authentication failed: $msg";

        return new Zend_Auth_Result($code, $username, $messages);
    }

    /**
     * Converts options to string
     *
     * @param  array $options
     * @return string
     */
    private function _optionsToString(array $options)
    {
        $str = '';
        foreach ($options as $key => $val) {
            if ($key === 'password')
                $val = '*****';
            if ($str)
                $str .= ',';
            $str .= $key . '=' . $val;
        }
        return $str;
    }
}
PKpG[�I44(Auth/Adapter/Http/Resolver/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * Auth HTTP Resolver Interface
 *
 * Defines an interace to resolve a username/realm combination into a shared
 * secret usable by HTTP Authentication.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Auth_Adapter_Http_Resolver_Interface
{
    /**
     * Resolve username/realm to password/hash/etc.
     *
     * @param  string $username Username
     * @param  string $realm    Authentication Realm
     * @return string|false User's shared secret, if the user is found in the
     *         realm, false otherwise.
     */
    public function resolve($username, $realm);
}
PKpG[�����(Auth/Adapter/Http/Resolver/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Auth_Exception
 */
require_once 'Zend/Auth/Exception.php';


/**
 * HTTP Auth Resolver Exception
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_Http_Resolver_Exception extends Zend_Auth_Exception
{}
PKpG[�C���#Auth/Adapter/Http/Resolver/File.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: File.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Auth_Adapter_Http_Resolver_Interface
 */
require_once 'Zend/Auth/Adapter/Http/Resolver/Interface.php';


/**
 * HTTP Authentication File Resolver
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Adapter_Http
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Adapter_Http_Resolver_File implements Zend_Auth_Adapter_Http_Resolver_Interface
{
    /**
     * Path to credentials file
     *
     * @var string
     */
    protected $_file;

    /**
     * Constructor
     *
     * @param  string $path Complete filename where the credentials are stored
     * @return void
     */
    public function __construct($path = '')
    {
        if (!empty($path)) {
            $this->setFile($path);
        }
    }

    /**
     * Set the path to the credentials file
     *
     * @param  string $path
     * @throws Zend_Auth_Adapter_Http_Resolver_Exception
     * @return Zend_Auth_Adapter_Http_Resolver_File Provides a fluent interface
     */
    public function setFile($path)
    {
        if (empty($path) || !is_readable($path)) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Path not readable: ' . $path);
        }
        $this->_file = $path;

        return $this;
    }

    /**
     * Returns the path to the credentials file
     *
     * @return string
     */
    public function getFile()
    {
        return $this->_file;
    }

    /**
     * Resolve credentials
     *
     * Only the first matching username/realm combination in the file is
     * returned. If the file contains credentials for Digest authentication,
     * the returned string is the password hash, or h(a1) from RFC 2617. The
     * returned string is the plain-text password for Basic authentication.
     *
     * The expected format of the file is:
     *   username:realm:sharedSecret
     *
     * That is, each line consists of the user's username, the applicable
     * authentication realm, and the password or hash, each delimited by
     * colons.
     *
     * @param  string $username Username
     * @param  string $realm    Authentication Realm
     * @throws Zend_Auth_Adapter_Http_Resolver_Exception
     * @return string|false User's shared secret, if the user is found in the
     *         realm, false otherwise.
     */
    public function resolve($username, $realm)
    {
        if (empty($username)) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Username is required');
        } else if (!ctype_print($username) || strpos($username, ':') !== false) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Username must consist only of printable characters, '
                                                              . 'excluding the colon');
        }
        if (empty($realm)) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Realm is required');
        } else if (!ctype_print($realm) || strpos($realm, ':') !== false) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Realm must consist only of printable characters, '
                                                              . 'excluding the colon.');
        }

        // Open file, read through looking for matching credentials
        $fp = @fopen($this->_file, 'r');
        if (!$fp) {
            /**
             * @see Zend_Auth_Adapter_Http_Resolver_Exception
             */
            require_once 'Zend/Auth/Adapter/Http/Resolver/Exception.php';
            throw new Zend_Auth_Adapter_Http_Resolver_Exception('Unable to open password file: ' . $this->_file);
        }

        // No real validation is done on the contents of the password file. The
        // assumption is that we trust the administrators to keep it secure.
        while (($line = fgetcsv($fp, 512, ':')) !== false) {
            if ($line[0] == $username && $line[1] == $realm) {
                $password = $line[2];
                fclose($fp);
                return $password;
            }
        }

        fclose($fp);
        return false;
    }
}
PKpG[���vC
C
Auth/Storage/NonPersistent.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NonPersistent.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Auth_Storage_Interface
 */
require_once 'Zend/Auth/Storage/Interface.php';


/**
 * Non-Persistent Auth Storage
 *
 * Since HTTP Authentication happens again on each request, this will always be
 * re-populated. So there's no need to use sessions, this simple value class
 * will hold the data for rest of the current request.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Storage_NonPersistent implements Zend_Auth_Storage_Interface
{
    /**
     * Holds the actual auth data
     */
    protected $_data;


    /**
     * Returns true if and only if storage is empty
     *
     * @throws Zend_Auth_Storage_Exception If it is impossible to determine whether storage is empty
     * @return boolean
     */
    public function isEmpty()
    {
        return empty($this->_data);
    }

    /**
     * Returns the contents of storage
     * Behavior is undefined when storage is empty.
     *
     * @throws Zend_Auth_Storage_Exception If reading contents from storage is impossible
     * @return mixed
     */
    public function read()
    {
        return $this->_data;
    }

    /**
     * Writes $contents to storage
     *
     * @param  mixed $contents
     * @throws Zend_Auth_Storage_Exception If writing $contents to storage is impossible
     * @return void
     */
    public function write($contents)
    {
        $this->_data = $contents;
    }

    /**
     * Clears contents from storage
     *
     * @throws Zend_Auth_Storage_Exception If clearing contents from storage is impossible
     * @return void
     */
    public function clear()
    {
        $this->_data = null;
    }
}
PKpG[� ��Auth/Storage/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Auth_Storage_Interface
{
    /**
     * Returns true if and only if storage is empty
     *
     * @throws Zend_Auth_Storage_Exception If it is impossible to determine whether storage is empty
     * @return boolean
     */
    public function isEmpty();

    /**
     * Returns the contents of storage
     *
     * Behavior is undefined when storage is empty.
     *
     * @throws Zend_Auth_Storage_Exception If reading contents from storage is impossible
     * @return mixed
     */
    public function read();

    /**
     * Writes $contents to storage
     *
     * @param  mixed $contents
     * @throws Zend_Auth_Storage_Exception If writing $contents to storage is impossible
     * @return void
     */
    public function write($contents);

    /**
     * Clears contents from storage
     *
     * @throws Zend_Auth_Storage_Exception If clearing contents from storage is impossible
     * @return void
     */
    public function clear();
}
PKpG[��I��Auth/Storage/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @see Zend_Auth_Exception
 */
require_once 'Zend/Auth/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Storage_Exception extends Zend_Auth_Exception
{}
PKpG[��

Auth/Storage/Session.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Session.php 8862 2008-03-16 15:36:00Z thomas $
 */


/**
 * @see Zend_Auth_Storage_Interface
 */
require_once 'Zend/Auth/Storage/Interface.php';


/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth_Storage_Session implements Zend_Auth_Storage_Interface
{
    /**
     * Default session namespace
     */
    const NAMESPACE_DEFAULT = 'Zend_Auth';

    /**
     * Default session object member name
     */
    const MEMBER_DEFAULT = 'storage';

    /**
     * Object to proxy $_SESSION storage
     *
     * @var Zend_Session_Namespace
     */
    protected $_session;

    /**
     * Session namespace
     *
     * @var mixed
     */
    protected $_namespace;

    /**
     * Session object member
     *
     * @var mixed
     */
    protected $_member;

    /**
     * Sets session storage options and initializes session namespace object
     *
     * @param  mixed $namespace
     * @param  mixed $member
     * @return void
     */
    public function __construct($namespace = self::NAMESPACE_DEFAULT, $member = self::MEMBER_DEFAULT)
    {
        $this->_namespace = $namespace;
        $this->_member    = $member;
        $this->_session   = new Zend_Session_Namespace($this->_namespace);
    }

    /**
     * Returns the session namespace
     *
     * @return string
     */
    public function getNamespace()
    {
        return $this->_namespace;
    }

    /**
     * Returns the name of the session object member
     *
     * @return string
     */
    public function getMember()
    {
        return $this->_member;
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return boolean
     */
    public function isEmpty()
    {
        return !isset($this->_session->{$this->_member});
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return mixed
     */
    public function read()
    {
        return $this->_session->{$this->_member};
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @param  mixed $contents
     * @return void
     */
    public function write($contents)
    {
        $this->_session->{$this->_member} = $contents;
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return void
     */
    public function clear()
    {
        unset($this->_session->{$this->_member});
    }
}
PKpG[���$�$	Cache.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Cache.php 12519 2008-11-10 18:41:24Z alexander $
 */


/**
 * @package    Zend_Cache
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Cache
{

    /**
     * Standard frontends
     *
     * @var array
     */
    public static $standardFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page');

    /**
     * Standard backends
     *
     * @var array
     */
    public static $standardBackends = array('File', 'Sqlite', 'Memcached', 'Apc', 'ZendPlatform', 'Xcache', 'TwoLevels');

    /**
     * Standard backends which implement the ExtendedInterface
     * 
     * @var array
     */
    public static $standardExtendedBackends = array('File', 'Apc', 'TwoLevels', 'Memcached', 'Sqlite');
    
    /**
     * Only for backward compatibily (may be removed in next major release)
     *
     * @var array
     * @deprecated
     */
    public static $availableFrontends = array('Core', 'Output', 'Class', 'File', 'Function', 'Page');

    /**
     * Only for backward compatibily (may be removed in next major release)
     *
     * @var array
     * @deprecated
     */
    public static $availableBackends = array('File', 'Sqlite', 'Memcached', 'Apc', 'ZendPlatform', 'Xcache', 'TwoLevels');

    /**
     * Consts for clean() method
     */
    const CLEANING_MODE_ALL              = 'all';
    const CLEANING_MODE_OLD              = 'old';
    const CLEANING_MODE_MATCHING_TAG     = 'matchingTag';
    const CLEANING_MODE_NOT_MATCHING_TAG = 'notMatchingTag';
    const CLEANING_MODE_MATCHING_ANY_TAG = 'matchingAnyTag';
    
    /**
     * Factory
     *
     * @param mixed  $frontend        frontend name (string) or Zend_Cache_Frontend_ object
     * @param mixed  $backend         backend name (string) or Zend_Cache_Backend_ object
     * @param array  $frontendOptions associative array of options for the corresponding frontend constructor
     * @param array  $backendOptions  associative array of options for the corresponding backend constructor
     * @param boolean $customFrontendNaming if true, the frontend argument is used as a complete class name ; if false, the frontend argument is used as the end of "Zend_Cache_Frontend_[...]" class name
     * @param boolean $customBackendNaming if true, the backend argument is used as a complete class name ; if false, the backend argument is used as the end of "Zend_Cache_Backend_[...]" class name
     * @param boolean $autoload if true, there will no require_once for backend and frontend (usefull only for custom backends/frontends)
     * @throws Zend_Cache_Exception
     * @return Zend_Cache_Core|Zend_Cache_Frontend
     */
    public static function factory($frontend, $backend, $frontendOptions = array(), $backendOptions = array(), $customFrontendNaming = false, $customBackendNaming = false, $autoload = false)
    {
        if (is_string($backend)) {
            $backendObject = self::_makeBackend($backend, $backendOptions, $customBackendNaming, $autoload);
        } else {
            if ((is_object($backend)) && (in_array('Zend_Cache_Backend_Interface', class_implements($backend)))) {
                $backendObject = $backend;
            } else {
                self::throwException('backend must be a backend name (string) or an object which implements Zend_Cache_Backend_Interface');
            }
        }
        if (is_string($frontend)) {
            $frontendObject = self::_makeFrontend($frontend, $frontendOptions, $customFrontendNaming, $autoload);
        } else {
            if (is_object($frontend)) {
                $frontendObject = $frontend;
            } else {
                self::throwException('frontend must be a frontend name (string) or an object');
            }
        }
        $frontendObject->setBackend($backendObject);
        return $frontendObject;
    }
    
    /**
     * Frontend Constructor
     *
     * @param string  $backend
     * @param array   $backendOptions
     * @param boolean $customBackendNaming
     * @param boolean $autoload
     * @return Zend_Cache_Backend
     */
    public static function _makeBackend($backend, $backendOptions, $customBackendNaming = false, $autoload = false)
    {
        if (!$customBackendNaming) {
            $backend  = self::_normalizeName($backend);
        }
        if (in_array($backend, Zend_Cache::$standardBackends)) {
            // we use a standard backend
            $backendClass = 'Zend_Cache_Backend_' . $backend;
            // security controls are explicit
            require_once str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php';
        } else {
            // we use a custom backend
            if (!preg_match('~^[\w]+$~D', $backend)) {
                Zend_Cache::throwException("Invalid backend name [$backend]");
            }
            if (!$customBackendNaming) {
                // we use this boolean to avoid an API break
                $backendClass = 'Zend_Cache_Backend_' . $backend;
            } else {
                $backendClass = $backend;
            }
            if (!$autoload) {
                $file = str_replace('_', DIRECTORY_SEPARATOR, $backendClass) . '.php';
                if (!(self::_isReadable($file))) {
                    self::throwException("file $file not found in include_path");
                }
                require_once $file;
            }
        }
        return new $backendClass($backendOptions);
    }
    
    /**
     * Backend Constructor
     *
     * @param string  $frontend
     * @param array   $frontendOptions
     * @param boolean $customFrontendNaming
     * @param boolean $autoload
     * @return Zend_Cache_Core|Zend_Cache_Frontend
     */
    public static function _makeFrontend($frontend, $frontendOptions = array(), $customFrontendNaming = false, $autoload = false)
    {
        if (!$customFrontendNaming) {
            $frontend = self::_normalizeName($frontend);
        }
        if (in_array($frontend, self::$standardFrontends)) {
            // we use a standard frontend
            // For perfs reasons, with frontend == 'Core', we can interact with the Core itself
            $frontendClass = 'Zend_Cache_' . ($frontend != 'Core' ? 'Frontend_' : '') . $frontend;
            // security controls are explicit
            require_once str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php';
        } else {
            // we use a custom frontend
            if (!preg_match('~^[\w]+$~D', $frontend)) {
                Zend_Cache::throwException("Invalid frontend name [$frontend]");
            }
            if (!$customFrontendNaming) {
                // we use this boolean to avoid an API break
                $frontendClass = 'Zend_Cache_Frontend_' . $frontend;
            } else {
                $frontendClass = $frontend;
            }
            if (!$autoload) {
                $file = str_replace('_', DIRECTORY_SEPARATOR, $frontendClass) . '.php';
                if (!(self::_isReadable($file))) {
                    self::throwException("file $file not found in include_path");
                }
                require_once $file;
            }
        }
        return new $frontendClass($frontendOptions);
    }

    /**
     * Throw an exception
     *
     * Note : for perf reasons, the "load" of Zend/Cache/Exception is dynamic
     * @param  string $msg  Message for the exception
     * @throws Zend_Cache_Exception
     */
    public static function throwException($msg)
    {
        // For perfs reasons, we use this dynamic inclusion
        require_once 'Zend/Cache/Exception.php';
        throw new Zend_Cache_Exception($msg);
    }

    /**
     * Normalize frontend and backend names to allow multiple words TitleCased
     *
     * @param  string $name  Name to normalize
     * @return string
     */
    protected static function _normalizeName($name)
    {
        $name = ucfirst(strtolower($name));
        $name = str_replace(array('-', '_', '.'), ' ', $name);
        $name = ucwords($name);
        $name = str_replace(' ', '', $name);
        return $name;
    }

    /**
     * Returns TRUE if the $filename is readable, or FALSE otherwise.
     * This function uses the PHP include_path, where PHP's is_readable()
     * does not.
     *
     * Note : this method comes from Zend_Loader (see #ZF-2891 for details)
     *
     * @param string   $filename
     * @return boolean
     */
    private static function _isReadable($filename)
    {
        if (!$fh = @fopen($filename, 'r', true)) {
            return false;
        }
        @fclose($fh);
        return true;
    }

}
PKpG[P,�)�
�
Dojo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Enable Dojo components
 * 
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Dojo.php 10130 2008-07-16 14:51:08Z matthew $
 */
class Zend_Dojo
{
    /**
     *  @const string Base path to AOL CDN
     */
    const CDN_BASE_AOL = 'http://o.aolcdn.com/dojo/';

    /**
     * @const string Path to dojo on AOL CDN (following version string)
     */
    const CDN_DOJO_PATH_AOL = '/dojo/dojo.xd.js';

    /**
     *  @const string Base path to Google CDN
     */
    const CDN_BASE_GOOGLE = 'http://ajax.googleapis.com/ajax/libs/dojo/';

    /**
     * @const string Path to dojo on Google CDN (following version string)
     */
    const CDN_DOJO_PATH_GOOGLE = '/dojo/dojo.xd.js';

    /**
     * Dojo-enable a form instance
     * 
     * @param  Zend_Form $form 
     * @return void
     */
    public static function enableForm(Zend_Form $form)
    {
        $form->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addPrefixPath('Zend_Dojo_Form_Element', 'Zend/Dojo/Form/Element', 'element')
             ->addElementPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addDisplayGroupPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator')
             ->setDefaultDisplayGroupClass('Zend_Dojo_Form_DisplayGroup');

        foreach ($form->getSubForms() as $subForm) {
            self::enableForm($subForm);
        }

        if (null !== ($view = $form->getView())) {
            self::enableView($view);
        }
    }

    /**
     * Dojo-enable a view instance
     * 
     * @param  Zend_View_Interface $view 
     * @return void
     */
    public static function enableView(Zend_View_Interface $view)
    {
        if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
            $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
        }
    }
}

PKpG[}�9�e�eSession.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Session.php 12723 2008-11-20 20:12:08Z matthew $
 * @since      Preview Release 0.2
 */


/**
 * @see Zend_Session_Abstract
 */
require_once 'Zend/Session/Abstract.php';

/**
 * @see Zend_Session_Namespace
 */
require_once 'Zend/Session/Namespace.php';

/**
 * @see Zend_Session_SaveHandler_Interface
 */
require_once 'Zend/Session/SaveHandler/Interface.php';


/**
 * Zend_Session
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session extends Zend_Session_Abstract
{
    /**
     * Whether or not Zend_Session is being used with unit tests
     *
     * @internal
     * @var bool
     */
    public static $_unitTestEnabled = false;

    /**
     * Check whether or not the session was started
     *
     * @var bool
     */
    private static $_sessionStarted = false;

    /**
     * Whether or not the session id has been regenerated this request.
     *
     * Id regeneration state
     * <0 - regenerate requested when session is started
     * 0  - do nothing
     * >0 - already called session_regenerate_id()
     *
     * @var int
     */
    private static $_regenerateIdState = 0;

    /**
     * Private list of php's ini values for ext/session
     * null values will default to the php.ini value, otherwise
     * the value below will overwrite the default ini value, unless
     * the user has set an option explicity with setOptions()
     *
     * @var array
     */
    private static $_defaultOptions = array(
        'save_path'                 => null,
        'name'                      => null, /* this should be set to a unique value for each application */
        'save_handler'              => null,
        //'auto_start'                => null, /* intentionally excluded (see manual) */
        'gc_probability'            => null,
        'gc_divisor'                => null,
        'gc_maxlifetime'            => null,
        'serialize_handler'         => null,
        'cookie_lifetime'           => null,
        'cookie_path'               => null,
        'cookie_domain'             => null,
        'cookie_secure'             => null,
        'cookie_httponly'           => null,
        'use_cookies'               => null,
        'use_only_cookies'          => 'on',
        'referer_check'             => null,
        'entropy_file'              => null,
        'entropy_length'            => null,
        'cache_limiter'             => null,
        'cache_expire'              => null,
        'use_trans_sid'             => null,
        'bug_compat_42'             => null,
        'bug_compat_warn'           => null,
        'hash_function'             => null,
        'hash_bits_per_character'   => null
    );

    /**
     * List of options pertaining to Zend_Session that can be set by developers
     * using Zend_Session::setOptions(). This list intentionally duplicates
     * the individual declaration of static "class" variables by the same names.
     *
     * @var array
     */
    private static $_localOptions = array(
        'strict'                => '_strict',
        'remember_me_seconds'   => '_rememberMeSeconds'
    );

    /**
     * Whether or not write close has been performed.
     *
     * @var bool
     */
    private static $_writeClosed = false;

    /**
     * Whether or not session id cookie has been deleted
     *
     * @var bool
     */
    private static $_sessionCookieDeleted = false;

    /**
     * Whether or not session has been destroyed via session_destroy()
     *
     * @var bool
     */
    private static $_destroyed = false;

    /**
     * Whether or not session must be initiated before usage
     *
     * @var bool
     */
    private static $_strict = false;

    /**
     * Default number of seconds the session will be remembered for when asked to be remembered
     *
     * @var int
     */
    private static $_rememberMeSeconds = 1209600; // 2 weeks

    /**
     * Whether the default options listed in Zend_Session::$_localOptions have been set
     *
     * @var bool
     */
    private static $_defaultOptionsSet = false;

    /**
     * A reference to the set session save handler
     *
     * @var Zend_Session_SaveHandler_Interface
     */
    private static $_saveHandler = null;


    /**
     * Constructor overriding - make sure that a developer cannot instantiate
     */
    protected function __construct()
    {
    }


    /**
     * setOptions - set both the class specified
     *
     * @param  array $userOptions - pass-by-keyword style array of <option name, option value> pairs
     * @throws Zend_Session_Exception
     * @return void
     */
    public static function setOptions(array $userOptions = array())
    {
        // set default options on first run only (before applying user settings)
        if (!self::$_defaultOptionsSet) {
            foreach (self::$_defaultOptions as $defaultOptionName => $defaultOptionValue) {
                if (isset(self::$_defaultOptions[$defaultOptionName])) {
                    ini_set("session.$defaultOptionName", $defaultOptionValue);
                }
            }

            self::$_defaultOptionsSet = true;
        }

        // set the options the user has requested to set
        foreach ($userOptions as $userOptionName => $userOptionValue) {

            $userOptionName = strtolower($userOptionName);

            // set the ini based values
            if (array_key_exists($userOptionName, self::$_defaultOptions)) {
                ini_set("session.$userOptionName", $userOptionValue);
            }
            elseif (isset(self::$_localOptions[$userOptionName])) {
                self::${self::$_localOptions[$userOptionName]} = $userOptionValue;
            }
            else {
                /** @see Zend_Session_Exception */
                require_once 'Zend/Session/Exception.php';
                throw new Zend_Session_Exception("Unknown option: $userOptionName = $userOptionValue");
            }
        }
    }


    /**
     * setSaveHandler() - Session Save Handler assignment
     *
     * @param Zend_Session_SaveHandler_Interface $interface
     * @return void
     */
    public static function setSaveHandler(Zend_Session_SaveHandler_Interface $saveHandler)
    {
        if (self::$_unitTestEnabled) {
            return;
        }

        session_set_save_handler(
            array(&$saveHandler, 'open'),
            array(&$saveHandler, 'close'),
            array(&$saveHandler, 'read'),
            array(&$saveHandler, 'write'),
            array(&$saveHandler, 'destroy'),
            array(&$saveHandler, 'gc')
            );
        self::$_saveHandler = $saveHandler;
    }


    /**
     * getSaveHandler() - Get the session Save Handler
     *
     * @return Zend_Session_SaveHandler_Interface
     */
    public static function getSaveHandler()
    {
        return self::$_saveHandler;
    }


    /**
     * regenerateId() - Regenerate the session id.  Best practice is to call this after
     * session is started.  If called prior to session starting, session id will be regenerated
     * at start time.
     *
     * @throws Zend_Session_Exception
     * @return void
     */
    public static function regenerateId()
    {
        if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("You must call " . __CLASS__ . '::' . __FUNCTION__ .
                "() before any output has been sent to the browser; output started in {$filename}/{$linenum}");
        }

        if (self::$_sessionStarted && self::$_regenerateIdState <= 0) {
            if (!self::$_unitTestEnabled) {
                session_regenerate_id(true);
            }
            self::$_regenerateIdState = 1;
        } else {
            /**
             * @todo If we can detect that this requester had no session previously,
             *       then why regenerate the id before the session has started?
             *       Feedback wanted for:
             //
            if (isset($_COOKIE[session_name()]) || (!use only cookies && isset($_REQUEST[session_name()]))) {
                self::$_regenerateIdState = 1;
            } else {
                self::$_regenerateIdState = -1;
            }
            //*/
            self::$_regenerateIdState = -1;
        }
    }


    /**
     * rememberMe() - Write a persistent cookie that expires after a number of seconds in the future. If no number of
     * seconds is specified, then this defaults to self::$_rememberMeSeconds.  Due to clock errors on end users' systems,
     * large values are recommended to avoid undesirable expiration of session cookies.
     *
     * @param $seconds integer - OPTIONAL specifies TTL for cookie in seconds from present time
     * @return void
     */
    public static function rememberMe($seconds = null)
    {
        $seconds = (int) $seconds;
        $seconds = ($seconds > 0) ? $seconds : self::$_rememberMeSeconds;

        self::rememberUntil($seconds);
    }


    /**
     * forgetMe() - Write a volatile session cookie, removing any persistent cookie that may have existed. The session
     * would end upon, for example, termination of a web browser program.
     *
     * @return void
     */
    public static function forgetMe()
    {
        self::rememberUntil(0);
    }


    /**
     * rememberUntil() - This method does the work of changing the state of the session cookie and making
     * sure that it gets resent to the browser via regenerateId()
     *
     * @param int $seconds
     * @return void
     */
    public static function rememberUntil($seconds = 0)
    {
        if (self::$_unitTestEnabled) {
            self::regenerateId();
            return;
        }

        $cookieParams = session_get_cookie_params();

        session_set_cookie_params(
            $seconds,
            $cookieParams['path'],
            $cookieParams['domain'],
            $cookieParams['secure']
            );

        // normally "rememberMe()" represents a security context change, so should use new session id
        self::regenerateId();
    }


    /**
     * sessionExists() - whether or not a session exists for the current request
     *
     * @return bool
     */
    public static function sessionExists()
    {
        if (ini_get('session.use_cookies') == '1' && isset($_COOKIE[session_name()])) {
            return true;
        } elseif (!empty($_REQUEST[session_name()])) {
            return true;
        } elseif (self::$_unitTestEnabled) {
            return true;
        }

        return false;
    }


    /**
     * Whether or not session has been destroyed via session_destroy()
     *
     * @return bool
     */
    public static function isDestroyed()
    {
        return self::$_destroyed;
    }


    /**
     * start() - Start the session.
     *
     * @param bool|array $options  OPTIONAL Either user supplied options, or flag indicating if start initiated automatically
     * @throws Zend_Session_Exception
     * @return void
     */
    public static function start($options = false)
    {
        if (self::$_sessionStarted && self::$_destroyed) {
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('The session was explicitly destroyed during this request, attempting to re-start is not allowed.');
        }

        if (self::$_sessionStarted) {
            return; // already started
        }

        // make sure our default options (at the least) have been set
        if (!self::$_defaultOptionsSet) {
            self::setOptions(is_array($options) ? $options : array());
        }

        // In strict mode, do not allow auto-starting Zend_Session, such as via "new Zend_Session_Namespace()"
        if (self::$_strict && $options === true) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('You must explicitly start the session with Zend_Session::start() when session options are set to strict.');
        }

        if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("Session must be started before any output has been sent to the browser;"
               . " output started in {$filename}/{$linenum}");
        }

        // See http://www.php.net/manual/en/ref.session.php for explanation
        if (!self::$_unitTestEnabled && defined('SID')) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('session has already been started by session.auto-start or session_start()');
        }

        /**
         * Hack to throw exceptions on start instead of php errors
         * @see http://framework.zend.com/issues/browse/ZF-1325
         */
        /** @see Zend_Session_Exception */
        if (!self::$_unitTestEnabled) {
            require_once 'Zend/Session/Exception.php';
            set_error_handler(array('Zend_Session_Exception', 'handleSessionStartError'), E_ALL);
            session_start();
            restore_error_handler();
            if (Zend_Session_Exception::$sessionStartError !== null) {
            set_error_handler(array('Zend_Session_Exception', 'handleSilentWriteClose'), E_ALL);
            session_write_close();
            restore_error_handler();
            throw new Zend_Session_Exception(__CLASS__ . '::' . __FUNCTION__ . '() - ' . Zend_Session_Exception::$sessionStartError);
            }
        }

        parent::$_readable = true;
        parent::$_writable = true;
        self::$_sessionStarted = true;
        if (self::$_regenerateIdState === -1) {
            self::regenerateId();
        }

        // run validators if they exist
        if (isset($_SESSION['__ZF']['VALID'])) {
            self::_processValidators();
        }

        self::_processStartupMetadataGlobal();
    }


    /**
     * _processGlobalMetadata() - this method initizes the sessions GLOBAL
     * metadata, mostly global data expiration calculations.
     *
     * @return void
     */
    private static function _processStartupMetadataGlobal()
    {
        // process global metadata
        if (isset($_SESSION['__ZF'])) {

            // expire globally expired values
            foreach ($_SESSION['__ZF'] as $namespace => $namespace_metadata) {

                // Expire Namespace by Time (ENT)
                if (isset($namespace_metadata['ENT']) && ($namespace_metadata['ENT'] > 0) && (time() > $namespace_metadata['ENT']) ) {
                    unset($_SESSION[$namespace]);
                    unset($_SESSION['__ZF'][$namespace]['ENT']);
                }

                // Expire Namespace by Global Hop (ENGH)
                if (isset($namespace_metadata['ENGH']) && $namespace_metadata['ENGH'] >= 1) {
                    $_SESSION['__ZF'][$namespace]['ENGH']--;

                    if ($_SESSION['__ZF'][$namespace]['ENGH'] === 0) {
                        if (isset($_SESSION[$namespace])) {
                            parent::$_expiringData[$namespace] = $_SESSION[$namespace];
                            unset($_SESSION[$namespace]);
                        }
                        unset($_SESSION['__ZF'][$namespace]['ENGH']);
                    }
                }

                // Expire Namespace Variables by Time (ENVT)
                if (isset($namespace_metadata['ENVT'])) {
                    foreach ($namespace_metadata['ENVT'] as $variable => $time) {
                        if (time() > $time) {
                            unset($_SESSION[$namespace][$variable]);
                            unset($_SESSION['__ZF'][$namespace]['ENVT'][$variable]);

                            if (empty($_SESSION['__ZF'][$namespace]['ENVT'])) {
                                unset($_SESSION['__ZF'][$namespace]['ENVT']);
                            }
                        }
                    }
                }

                // Expire Namespace Variables by Global Hop (ENVGH)
                if (isset($namespace_metadata['ENVGH'])) {
                    foreach ($namespace_metadata['ENVGH'] as $variable => $hops) {
                        $_SESSION['__ZF'][$namespace]['ENVGH'][$variable]--;

                        if ($_SESSION['__ZF'][$namespace]['ENVGH'][$variable] === 0) {
                            if (isset($_SESSION[$namespace][$variable])) {
                                parent::$_expiringData[$namespace][$variable] = $_SESSION[$namespace][$variable];
                                unset($_SESSION[$namespace][$variable]);
                            }
                            unset($_SESSION['__ZF'][$namespace]['ENVGH'][$variable]);
                        }
                    }
                }
            }

            if (isset($namespace) && empty($_SESSION['__ZF'][$namespace])) {
                unset($_SESSION['__ZF'][$namespace]);
            }
        }

        if (isset($_SESSION['__ZF']) && empty($_SESSION['__ZF'])) {
            unset($_SESSION['__ZF']);
        }
    }


    /**
     * isStarted() - convenience method to determine if the session is already started.
     *
     * @return bool
     */
    public static function isStarted()
    {
        return self::$_sessionStarted;
    }


    /**
     * isRegenerated() - convenience method to determine if session_regenerate_id()
     * has been called during this request by Zend_Session.
     *
     * @return bool
     */
    public static function isRegenerated()
    {
        return ( (self::$_regenerateIdState > 0) ? true : false );
    }


    /**
     * getId() - get the current session id
     *
     * @return string
     */
    public static function getId()
    {
        return session_id();
    }


    /**
     * setId() - set an id to a user specified id
     *
     * @throws Zend_Session_Exception
     * @param string $id
     * @return void
     */
    public static function setId($id)
    {
        if (!self::$_unitTestEnabled && defined('SID')) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('The session has already been started.  The session id must be set first.');
        }

        if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("You must call ".__CLASS__.'::'.__FUNCTION__.
                "() before any output has been sent to the browser; output started in {$filename}/{$linenum}");
        }

        if (!is_string($id) || $id === '') {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('You must provide a non-empty string as a session identifier.');
        }

        session_id($id);
    }


    /**
     * registerValidator() - register a validator that will attempt to validate this session for
     * every future request
     *
     * @param Zend_Session_Validator_Interface $validator
     * @return void
     */
    public static function registerValidator(Zend_Session_Validator_Interface $validator)
    {
        $validator->setup();
    }


    /**
     * stop() - Disable write access.  Optionally disable read (not implemented).
     *
     * @return void
     */
    public static function stop()
    {
        parent::$_writable = false;
    }


    /**
     * writeClose() - Shutdown the sesssion, close writing and detach $_SESSION from the back-end storage mechanism.
     * This will complete the internal data transformation on this request.
     *
     * @param bool $readonly - OPTIONAL remove write access (i.e. throw error if Zend_Session's attempt writes)
     * @return void
     */
    public static function writeClose($readonly = true)
    {
        if (self::$_unitTestEnabled) {
            return;
        }

        if (self::$_writeClosed) {
            return;
        }

        if ($readonly) {
            parent::$_writable = false;
        }

        session_write_close();
        self::$_writeClosed = true;
    }


    /**
     * destroy() - This is used to destroy session data, and optionally, the session cookie itself
     *
     * @param bool $remove_cookie - OPTIONAL remove session id cookie, defaults to true (remove cookie)
     * @param bool $readonly - OPTIONAL remove write access (i.e. throw error if Zend_Session's attempt writes)
     * @return void
     */
    public static function destroy($remove_cookie = true, $readonly = true)
    {
        if (self::$_unitTestEnabled) {
            return;
        }

        if (self::$_destroyed) {
            return;
        }

        if ($readonly) {
            parent::$_writable = false;
        }

        session_destroy();
        self::$_destroyed = true;

        if ($remove_cookie) {
            self::expireSessionCookie();
        }
    }


    /**
     * expireSessionCookie() - Sends an expired session id cookie, causing the client to delete the session cookie
     *
     * @return void
     */
    public static function expireSessionCookie()
    {
        if (self::$_unitTestEnabled) {
            return;
        }

        if (self::$_sessionCookieDeleted) {
            return;
        }

        self::$_sessionCookieDeleted = true;

        if (isset($_COOKIE[session_name()])) {
            $cookie_params = session_get_cookie_params();

            setcookie(
                session_name(),
                false,
                315554400, // strtotime('1980-01-01'),
                $cookie_params['path'],
                $cookie_params['domain'],
                $cookie_params['secure']
                );
        }
    }


    /**
     * _processValidator() - internal function that is called in the existence of VALID metadata
     *
     * @throws Zend_Session_Exception
     * @return void
     */
    private static function _processValidators()
    {
        if (count($_SESSION['__ZF']['VALID']) > 0) {
            /**
             * @see Zend_Loader
             */
            require_once 'Zend/Loader.php';
        }

        foreach ($_SESSION['__ZF']['VALID'] as $validator_name => $valid_data) {
            Zend_Loader::loadClass($validator_name);
            $validator = new $validator_name;
            if ($validator->validate() === false) {
                /** @see Zend_Session_Exception */
                require_once 'Zend/Session/Exception.php';
                throw new Zend_Session_Exception("This session is not valid according to {$validator_name}.");
            }
        }
    }


    /**
     * namespaceIsset() - check to see if a namespace is set
     *
     * @param string $namespace
     * @return bool
     */
    public static function namespaceIsset($namespace)
    {
        return parent::_namespaceIsset($namespace);
    }


    /**
     * namespaceUnset() - unset a namespace or a variable within a namespace
     *
     * @param string $namespace
     * @throws Zend_Session_Exception
     * @return void
     */
    public static function namespaceUnset($namespace)
    {
        parent::_namespaceUnset($namespace);
    }


    /**
     * namespaceGet() - get all variables in a namespace
     * Deprecated: Use getIterator() in Zend_Session_Namespace.
     *
     * @param string $namespace
     * @return array
     */
    public static function namespaceGet($namespace)
    {
        return parent::_namespaceGetAll($namespace);
    }


    /**
     * getIterator() - return an iteratable object for use in foreach and the like,
     * this completes the IteratorAggregate interface
     *
     * @throws Zend_Session_Exception
     * @return ArrayObject
     */
    public static function getIterator()
    {
        if (parent::$_readable === false) {
            /** @see Zend_Session_Exception */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(parent::_THROW_NOT_READABLE_MSG);
        }

        $spaces  = array();
        if (isset($_SESSION)) {
            $spaces = array_keys($_SESSION);
            foreach($spaces as $key => $space) {
                if (!strncmp($space, '__', 2) || !is_array($_SESSION[$space])) {
                    unset($spaces[$key]);
                }
            }
        }

        return new ArrayObject(array_merge($spaces, array_keys(parent::$_expiringData)));
    }


    /**
     * isWritable() - returns a boolean indicating if namespaces can write (use setters)
     *
     * @return bool
     */
    public static function isWritable()
    {
        return parent::$_writable;
    }


    /**
     * isReadable() - returns a boolean indicating if namespaces can write (use setters)
     *
     * @return bool
     */
    public static function isReadable()
    {
        return parent::$_readable;
    }

}
PKpG[��	X$$Db.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Db.php 9573 2008-05-29 22:25:26Z peptolab $
 */


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * Class for connecting to SQL databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db
{

    /**
     * Use the PROFILER constant in the config of a Zend_Db_Adapter.
     */
    const PROFILER = 'profiler';

    /**
     * Use the CASE_FOLDING constant in the config of a Zend_Db_Adapter.
     */
    const CASE_FOLDING = 'caseFolding';

    /**
     * Use the AUTO_QUOTE_IDENTIFIERS constant in the config of a Zend_Db_Adapter.
     */
    const AUTO_QUOTE_IDENTIFIERS = 'autoQuoteIdentifiers';

    /**
     * Use the INT_TYPE, BIGINT_TYPE, and FLOAT_TYPE with the quote() method.
     */
    const INT_TYPE    = 0;
    const BIGINT_TYPE = 1;
    const FLOAT_TYPE  = 2;

    /**
     * PDO constant values discovered by this script result:
     *
     * $list = array(
     *    'PARAM_BOOL', 'PARAM_NULL', 'PARAM_INT', 'PARAM_STR', 'PARAM_LOB',
     *    'PARAM_STMT', 'PARAM_INPUT_OUTPUT', 'FETCH_LAZY', 'FETCH_ASSOC',
     *    'FETCH_NUM', 'FETCH_BOTH', 'FETCH_OBJ', 'FETCH_BOUND',
     *    'FETCH_COLUMN', 'FETCH_CLASS', 'FETCH_INTO', 'FETCH_FUNC',
     *    'FETCH_GROUP', 'FETCH_UNIQUE', 'FETCH_CLASSTYPE', 'FETCH_SERIALIZE',
     *    'FETCH_NAMED', 'ATTR_AUTOCOMMIT', 'ATTR_PREFETCH', 'ATTR_TIMEOUT',
     *    'ATTR_ERRMODE', 'ATTR_SERVER_VERSION', 'ATTR_CLIENT_VERSION',
     *    'ATTR_SERVER_INFO', 'ATTR_CONNECTION_STATUS', 'ATTR_CASE',
     *    'ATTR_CURSOR_NAME', 'ATTR_CURSOR', 'ATTR_ORACLE_NULLS',
     *    'ATTR_PERSISTENT', 'ATTR_STATEMENT_CLASS', 'ATTR_FETCH_TABLE_NAMES',
     *    'ATTR_FETCH_CATALOG_NAMES', 'ATTR_DRIVER_NAME',
     *    'ATTR_STRINGIFY_FETCHES', 'ATTR_MAX_COLUMN_LEN', 'ERRMODE_SILENT',
     *    'ERRMODE_WARNING', 'ERRMODE_EXCEPTION', 'CASE_NATURAL',
     *    'CASE_LOWER', 'CASE_UPPER', 'NULL_NATURAL', 'NULL_EMPTY_STRING',
     *    'NULL_TO_STRING', 'ERR_NONE', 'FETCH_ORI_NEXT',
     *    'FETCH_ORI_PRIOR', 'FETCH_ORI_FIRST', 'FETCH_ORI_LAST',
     *    'FETCH_ORI_ABS', 'FETCH_ORI_REL', 'CURSOR_FWDONLY', 'CURSOR_SCROLL',
     *    'ERR_CANT_MAP', 'ERR_SYNTAX', 'ERR_CONSTRAINT', 'ERR_NOT_FOUND',
     *    'ERR_ALREADY_EXISTS', 'ERR_NOT_IMPLEMENTED', 'ERR_MISMATCH',
     *    'ERR_TRUNCATED', 'ERR_DISCONNECTED', 'ERR_NO_PERM',
     * );
     *
     * $const = array();
     * foreach ($list as $name) {
     *    $const[$name] = constant("PDO::$name");
     * }
     * var_export($const);
     */
    const ATTR_AUTOCOMMIT = 0;
    const ATTR_CASE = 8;
    const ATTR_CLIENT_VERSION = 5;
    const ATTR_CONNECTION_STATUS = 7;
    const ATTR_CURSOR = 10;
    const ATTR_CURSOR_NAME = 9;
    const ATTR_DRIVER_NAME = 16;
    const ATTR_ERRMODE = 3;
    const ATTR_FETCH_CATALOG_NAMES = 15;
    const ATTR_FETCH_TABLE_NAMES = 14;
    const ATTR_MAX_COLUMN_LEN = 18;
    const ATTR_ORACLE_NULLS = 11;
    const ATTR_PERSISTENT = 12;
    const ATTR_PREFETCH = 1;
    const ATTR_SERVER_INFO = 6;
    const ATTR_SERVER_VERSION = 4;
    const ATTR_STATEMENT_CLASS = 13;
    const ATTR_STRINGIFY_FETCHES = 17;
    const ATTR_TIMEOUT = 2;
    const CASE_LOWER = 2;
    const CASE_NATURAL = 0;
    const CASE_UPPER = 1;
    const CURSOR_FWDONLY = 0;
    const CURSOR_SCROLL = 1;
    const ERR_ALREADY_EXISTS = NULL;
    const ERR_CANT_MAP = NULL;
    const ERR_CONSTRAINT = NULL;
    const ERR_DISCONNECTED = NULL;
    const ERR_MISMATCH = NULL;
    const ERR_NO_PERM = NULL;
    const ERR_NONE = '00000';
    const ERR_NOT_FOUND = NULL;
    const ERR_NOT_IMPLEMENTED = NULL;
    const ERR_SYNTAX = NULL;
    const ERR_TRUNCATED = NULL;
    const ERRMODE_EXCEPTION = 2;
    const ERRMODE_SILENT = 0;
    const ERRMODE_WARNING = 1;
    const FETCH_ASSOC = 2;
    const FETCH_BOTH = 4;
    const FETCH_BOUND = 6;
    const FETCH_CLASS = 8;
    const FETCH_CLASSTYPE = 262144;
    const FETCH_COLUMN = 7;
    const FETCH_FUNC = 10;
    const FETCH_GROUP = 65536;
    const FETCH_INTO = 9;
    const FETCH_LAZY = 1;
    const FETCH_NAMED = 11;
    const FETCH_NUM = 3;
    const FETCH_OBJ = 5;
    const FETCH_ORI_ABS = 4;
    const FETCH_ORI_FIRST = 2;
    const FETCH_ORI_LAST = 3;
    const FETCH_ORI_NEXT = 0;
    const FETCH_ORI_PRIOR = 1;
    const FETCH_ORI_REL = 5;
    const FETCH_SERIALIZE = 524288;
    const FETCH_UNIQUE = 196608;
    const NULL_EMPTY_STRING = 1;
    const NULL_NATURAL = 0;
    const NULL_TO_STRING = NULL;
    const PARAM_BOOL = 5;
    const PARAM_INPUT_OUTPUT = -2147483648;
    const PARAM_INT = 1;
    const PARAM_LOB = 3;
    const PARAM_NULL = 0;
    const PARAM_STMT = 4;
    const PARAM_STR = 2;

    /**
     * Factory for Zend_Db_Adapter_Abstract classes.
     *
     * First argument may be a string containing the base of the adapter class
     * name, e.g. 'Mysqli' corresponds to class Zend_Db_Adapter_Mysqli.  This
     * is case-insensitive.
     *
     * First argument may alternatively be an object of type Zend_Config.
     * The adapter class base name is read from the 'adapter' property.
     * The adapter config parameters are read from the 'params' property.
     *
     * Second argument is optional and may be an associative array of key-value
     * pairs.  This is used as the argument to the adapter constructor.
     *
     * If the first argument is of type Zend_Config, it is assumed to contain
     * all parameters, and the second argument is ignored.
     *
     * @param  mixed $adapter String name of base adapter class, or Zend_Config object.
     * @param  mixed $config  OPTIONAL; an array or Zend_Config object with adapter parameters.
     * @return Zend_Db_Adapter_Abstract
     * @throws Zend_Db_Exception
     */
    public static function factory($adapter, $config = array())
    {
        if ($config instanceof Zend_Config) {
            $config = $config->toArray();
        }

        /*
         * Convert Zend_Config argument to plain string
         * adapter name and separate config object.
         */
        if ($adapter instanceof Zend_Config) {
            if (isset($adapter->params)) {
                $config = $adapter->params->toArray();
            }
            if (isset($adapter->adapter)) {
                $adapter = (string) $adapter->adapter;
            } else {
                $adapter = null;
            }
        }

        /*
         * Verify that adapter parameters are in an array.
         */
        if (!is_array($config)) {
            /**
             * @see Zend_Db_Exception
             */
            require_once 'Zend/Db/Exception.php';
            throw new Zend_Db_Exception('Adapter parameters must be in an array or a Zend_Config object');
        }

        /*
         * Verify that an adapter name has been specified.
         */
        if (!is_string($adapter) || empty($adapter)) {
            /**
             * @see Zend_Db_Exception
             */
            require_once 'Zend/Db/Exception.php';
            throw new Zend_Db_Exception('Adapter name must be specified in a string');
        }

        /*
         * Form full adapter class name
         */
        $adapterNamespace = 'Zend_Db_Adapter';
        if (isset($config['adapterNamespace'])) {
            if ($config['adapterNamespace'] != '') {
                $adapterNamespace = $config['adapterNamespace'];
            }
            unset($config['adapterNamespace']);
        }
        $adapterName = strtolower($adapterNamespace . '_' . $adapter);
        $adapterName = str_replace(' ', '_', ucwords(str_replace('_', ' ', $adapterName)));

        /*
         * Load the adapter class.  This throws an exception
         * if the specified class cannot be loaded.
         */
        @Zend_Loader::loadClass($adapterName);

        /*
         * Create an instance of the adapter class.
         * Pass the config to the adapter class constructor.
         */
        $dbAdapter = new $adapterName($config);

        /*
         * Verify that the object created is a descendent of the abstract adapter type.
         */
        if (! $dbAdapter instanceof Zend_Db_Adapter_Abstract) {
            /**
             * @see Zend_Db_Exception
             */
            require_once 'Zend/Db/Exception.php';
            throw new Zend_Db_Exception("Adapter class '$adapterName' does not extend Zend_Db_Adapter_Abstract");
        }

        return $dbAdapter;
    }

}
PKpG[��+%����Date.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Date
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Date.php 13676 2009-01-17 19:36:30Z alexander $
 */

/**
 * Include needed Date classes
 */
require_once 'Zend/Date/DateObject.php';
require_once 'Zend/Locale.php';
require_once 'Zend/Locale/Format.php';
require_once 'Zend/Locale/Math.php';

/**
 * @category  Zend
 * @package   Zend_Date
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Date extends Zend_Date_DateObject
{
    private $_locale  = null;

    // Fractional second variables
    private $_fractional = 0;
    private $_precision  = 3;

    private static $_options = array(
        'format_type'  => 'iso',      // format for date strings 'iso' or 'php'
        'fix_dst'      => true,       // fix dst on summer/winter time change
        'extend_month' => false,      // false - addMonth like SQL, true like excel
        'cache'        => null,       // cache to set
        'timesync'     => null        // timesync server to set
    );

    // Class wide Date Constants
    // day formats
    const DAY            = 'DAY';            // d - 2 digit day of month, 01-31
    const DAY_SHORT      = 'DAY_SHORT';      // j - 1,2 digit day of month, 1-31

    const DAY_SUFFIX     = 'DAY_SUFFIX';     // S - english suffix day of month, st-th
    const DAY_OF_YEAR    = 'DAY_OF_YEAR';    // z - Number of day of year

    const WEEKDAY        = 'WEEKDAY';        // l - full day name - locale aware, Monday - Sunday
    const WEEKDAY_SHORT  = 'WEEKDAY_SHORT';  // --- 3 letter day of week - locale aware, Mon-Sun
    const WEEKDAY_NARROW = 'WEEKDAY_NARROW'; // --- 1 letter day name - locale aware, M-S
    const WEEKDAY_NAME   = 'WEEKDAY_NAME';   // D - abbreviated day name, 1-3 letters - locale aware, Mon-Sun

    const WEEKDAY_8601   = 'WEEKDAY_8601';   // N - digit weekday ISO 8601, 1-7 1 = monday, 7=sunday
    const WEEKDAY_DIGIT  = 'WEEKDAY_DIGIT';  // w - weekday, 0-6 0=sunday, 6=saturday

    // week formats
    const WEEK           = 'WEEK';           // W - number of week ISO8601, 1-53

    // month formats
    const MONTH          = 'MONTH';          // m - 2 digit month, 01-12
    const MONTH_SHORT    = 'MONTH_SHORT';    // n - 1 digit month, no leading zeros, 1-12

    const MONTH_DAYS     = 'MONTH_DAYS';     // t - Number of days this month

    const MONTH_NAME        = 'MONTH_NAME';         // F - full month name - locale aware, January-December
    const MONTH_NAME_SHORT  = 'MONTH_NAME_SHORT';  // M - 3 letter monthname - locale aware, Jan-Dec
    const MONTH_NAME_NARROW = 'MONTH_NAME_NARROW'; // --- 1 letter month name - locale aware, J-D

    // year formats
    const YEAR           = 'YEAR';           // Y - 4 digit year
    const YEAR_SHORT     = 'YEAR_SHORT';     // y - 2 digit year, leading zeros 00-99

    const YEAR_8601      = 'YEAR_8601';      // o - number of year ISO8601
    const YEAR_SHORT_8601= 'YEAR_SHORT_8601';// --- 2 digit number of year ISO8601

    const LEAPYEAR       = 'LEAPYEAR';       // L - is leapyear ?, 0-1

    // time formats
    const MERIDIEM       = 'MERIDIEM';       // A,a - AM/PM - locale aware, AM/PM
    const SWATCH         = 'SWATCH';         // B - Swatch Internet Time

    const HOUR           = 'HOUR';           // H - 2 digit hour, leading zeros, 00-23
    const HOUR_SHORT     = 'HOUR_SHORT';     // G - 1 digit hour, no leading zero, 0-23

    const HOUR_AM        = 'HOUR_AM';        // h - 2 digit hour, leading zeros, 01-12 am/pm
    const HOUR_SHORT_AM  = 'HOUR_SHORT_AM';  // g - 1 digit hour, no leading zero, 1-12 am/pm

    const MINUTE         = 'MINUTE';         // i - 2 digit minute, leading zeros, 00-59
    const MINUTE_SHORT   = 'MINUTE_SHORT';   // --- 1 digit minute, no leading zero, 0-59

    const SECOND         = 'SECOND';         // s - 2 digit second, leading zeros, 00-59
    const SECOND_SHORT   = 'SECOND_SHORT';   // --- 1 digit second, no leading zero, 0-59

    const MILLISECOND    = 'MILLISECOND';    // --- milliseconds

    // timezone formats
    const TIMEZONE_NAME  = 'TIMEZONE_NAME';  // e - timezone string
    const DAYLIGHT       = 'DAYLIGHT';       // I - is Daylight saving time ?, 0-1
    const GMT_DIFF       = 'GMT_DIFF';       // O - GMT difference, -1200 +1200
    const GMT_DIFF_SEP   = 'GMT_DIFF_SEP';   // P - seperated GMT diff, -12:00 +12:00
    const TIMEZONE       = 'TIMEZONE';       // T - timezone, EST, GMT, MDT
    const TIMEZONE_SECS  = 'TIMEZONE_SECS';  // Z - timezone offset in seconds, -43200 +43200

    // date strings
    const ISO_8601       = 'ISO_8601';       // c - ISO 8601 date string
    const RFC_2822       = 'RFC_2822';       // r - RFC 2822 date string
    const TIMESTAMP      = 'TIMESTAMP';      // U - unix timestamp

    // additional formats
    const ERA            = 'ERA';            // --- short name of era, locale aware,
    const ERA_NAME       = 'ERA_NAME';       // --- full name of era, locale aware,
    const DATES          = 'DATES';          // --- standard date, locale aware
    const DATE_FULL      = 'DATE_FULL';      // --- full date, locale aware
    const DATE_LONG      = 'DATE_LONG';      // --- long date, locale aware
    const DATE_MEDIUM    = 'DATE_MEDIUM';    // --- medium date, locale aware
    const DATE_SHORT     = 'DATE_SHORT';     // --- short date, locale aware
    const TIMES          = 'TIMES';          // --- standard time, locale aware
    const TIME_FULL      = 'TIME_FULL';      // --- full time, locale aware
    const TIME_LONG      = 'TIME_LONG';      // --- long time, locale aware
    const TIME_MEDIUM    = 'TIME_MEDIUM';    // --- medium time, locale aware
    const TIME_SHORT     = 'TIME_SHORT';     // --- short time, locale aware
    const ATOM           = 'ATOM';           // --- DATE_ATOM
    const COOKIE         = 'COOKIE';         // --- DATE_COOKIE
    const RFC_822        = 'RFC_822';        // --- DATE_RFC822
    const RFC_850        = 'RFC_850';        // --- DATE_RFC850
    const RFC_1036       = 'RFC_1036';       // --- DATE_RFC1036
    const RFC_1123       = 'RFC_1123';       // --- DATE_RFC1123
    const RFC_3339       = 'RFC_3339';       // --- DATE_RFC3339
    const RSS            = 'RSS';            // --- DATE_RSS
    const W3C            = 'W3C';            // --- DATE_W3C

    /**
     * Generates the standard date object, could be a unix timestamp, localized date,
     * string, integer, array and so on. Also parts of dates or time are supported
     * Always set the default timezone: http://php.net/date_default_timezone_set
     * For example, in your bootstrap: date_default_timezone_set('America/Los_Angeles');
     * For detailed instructions please look in the docu.
     *
     * @param  string|integer|Zend_Date|array  $date    OPTIONAL Date value or value of date part to set
     *                                                 ,depending on $part. If null the actual time is set
     * @param  string                          $part    OPTIONAL Defines the input format of $date
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function __construct($date = null, $part = null, $locale = null)
    {
        if (($date !== null) and !($date instanceof Zend_TimeSync_Protocol) and (Zend_Locale::isLocale($date, true, false))) {
            $locale = $date;
            $date = null;
            $part = null;
        } else if (($part !== null) and (Zend_Locale::isLocale($part, null, false))) {
            $locale = $part;
            $part   = null;
        }

        if (empty($locale)) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Locale') === true) {
                $locale = Zend_Registry::get('Zend_Locale');
            }
        }

        $this->setLocale($locale);

        if (is_string($date) && defined('self::' . $date)) {
            $part = $date;
            $date = null;
        }

        if (is_null($date)) {
            $date = self::now($locale);
            if (($part !== null) && ($part !== self::TIMESTAMP)) {
                $date = $date->get($part);
            }
        }

        if ($date instanceof Zend_TimeSync_Protocol) {
            $date = $date->getInfo();
            $date = $this->_getTime($date['offset']);
            $part = null;
        } else if (parent::$_defaultOffset != 0) {
            $date = $this->_getTime(parent::$_defaultOffset);
        }

        // set the timezone and offset for $this
        $zone = @date_default_timezone_get();
        $this->setTimezone($zone);

        // try to get timezone from date-string
        if (!is_int($date)) {
            $zone = $this->getTimezoneFromString($date);
            $this->setTimezone($zone);
        }

        // set datepart
        if (($part !== null && $part !== self::TIMESTAMP) or (!is_numeric($date))) {
            // switch off dst handling for value setting
            $this->setUnixTimestamp($this->getGmtOffset());
            $this->set($date, $part, $this->_locale);

            // DST fix
            if ((is_array($date) === true) and (isset($date['hour']) === true)) {
                $hour = $this->toString('H');
                $hour = $date['hour'] - $hour;
                if ($hour !== 0) {
                    $this->addTimestamp($hour * 3600);
                }
            }
        } else {
            $this->setUnixTimestamp($date);
        }
    }

    /**
     * Sets class wide options, if no option was given, the actual set options will be returned
     *
     * @param  array  $options  Options to set
     * @throws Zend_Date_Exception
     * @return Options array if no option was given
     */
    public static function setOptions(array $options = array())
    {
        if (empty($options)) {
            return self::$_options;
        }
        foreach ($options as $name => $value) {
            $name  = strtolower($name);

            if (array_key_exists($name, self::$_options)) {
                switch($name) {
                    case 'format_type' :
                        if ((strtolower($value) != 'php') && (strtolower($value) != 'iso')) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception("Unknown format type ($value) for dates, only 'iso' and 'php' supported", $value);
                        }
                        break;
                    case 'fix_dst' :
                        if (!is_bool($value)) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception("'fix_dst' has to be boolean", $value);
                        }
                        break;
                    case 'extend_month' :
                        if (!is_bool($value)) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception("'extend_month' has to be boolean", $value);
                        }
                        break;
                    case 'cache' :
                        if (!$value instanceof Zend_Cache_Core) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception("Instance of Zend_Cache expected");
                        }
                        parent::$_cache = $value;
                        Zend_Locale_Data::setCache($value);
                        break;
                    case 'timesync' :
                        if (!$value instanceof Zend_TimeSync_Protocol) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception("Instance of Zend_TimeSync expected");
                        }
                        $date = $value->getInfo();
                        parent::$_defaultOffset = $date['offset'];
                        break;
                }
                self::$_options[$name] = $value;
            }
            else {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("Unknown option: $name = $value");
            }
        }
    }

    /**
     * Returns this object's internal UNIX timestamp (equivalent to Zend_Date::TIMESTAMP).
     * If the timestamp is too large for integers, then the return value will be a string.
     * This function does not return the timestamp as an object.
     * Use clone() or copyPart() instead.
     *
     * @return integer|string  UNIX timestamp
     */
    public function getTimestamp()
    {
        return $this->getUnixTimestamp();
    }

    /**
     * Returns the calculated timestamp
     * HINT: timestamps are always GMT
     *
     * @param  string                          $calc    Type of calculation to make
     * @param  string|integer|array|Zend_Date  $stamp   Timestamp to calculate, when null the actual timestamp is calculated
     * @return Zend_Date|integer
     * @throws Zend_Date_Exception
     */
    private function _timestamp($calc, $stamp)
    {
        if ($stamp instanceof Zend_Date) {
            // extract timestamp from object
            $stamp = $stamp->get(self::TIMESTAMP, true);
        }

        if (is_array($stamp)) {
            if (isset($stamp['timestamp']) === true) {
                $stamp = $stamp['timestamp'];
            } else {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('no timestamp given in array');
            }
        }

        if ($calc === 'set') {
            $return = $this->setUnixTimestamp($stamp);
        } else {
            $return = $this->_calcdetail($calc, $stamp, self::TIMESTAMP, null);
        }
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }

    /**
     * Sets a new timestamp
     *
     * @param  integer|string|array|Zend_Date  $timestamp  Timestamp to set
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function setTimestamp($timestamp)
    {
        return $this->_timestamp('set', $timestamp);
    }

    /**
     * Adds a timestamp
     *
     * @param  integer|string|array|Zend_Date  $timestamp  Timestamp to add
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function addTimestamp($timestamp)
    {
        return $this->_timestamp('add', $timestamp);
    }

    /**
     * Subtracts a timestamp
     *
     * @param  integer|string|array|Zend_Date  $timestamp  Timestamp to sub
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function subTimestamp($timestamp)
    {
        return $this->_timestamp('sub', $timestamp);
    }

    /**
     * Compares two timestamps, returning the difference as integer
     *
     * @param  integer|string|array|Zend_Date  $timestamp  Timestamp to compare
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareTimestamp($timestamp)
    {
        return $this->_timestamp('cmp', $timestamp);
    }

    /**
     * Returns a string representation of the object
     * Supported format tokens are:
     * G - era, y - year, Y - ISO year, M - month, w - week of year, D - day of year, d - day of month
     * E - day of week, e - number of weekday (1-7), h - hour 1-12, H - hour 0-23, m - minute, s - second
     * A - milliseconds of day, z - timezone, Z - timezone offset, S - fractional second, a - period of day
     *
     * Additionally format tokens but non ISO conform are:
     * SS - day suffix, eee - php number of weekday(0-6), ddd - number of days per month
     * l - Leap year, B - swatch internet time, I - daylight saving time, X - timezone offset in seconds
     * r - RFC2822 format, U - unix timestamp
     *
     * Not supported ISO tokens are
     * u - extended year, Q - quarter, q - quarter, L - stand alone month, W - week of month
     * F - day of week of month, g - modified julian, c - stand alone weekday, k - hour 0-11, K - hour 1-24
     * v - wall zone
     *
     * @param  string              $format  OPTIONAL Rule for formatting output. If null the default date format is used
     * @param  string              $type    OPTIONAL Type for the format string which overrides the standard setting
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return string
     */
    public function toString($format = null, $type = null, $locale = null)
    {
        if ((strlen($format) != 2) and ($format !== null) and (Zend_Locale::isLocale($format, null, false))) {
            $locale = $format;
            $format = null;
        }

        if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) {
            $locale = $type;
            $type = null;
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($format === null) {
            $format = Zend_Locale_Format::getDateFormat($locale) . ' ' . Zend_Locale_Format::getTimeFormat($locale);
        } else if (((self::$_options['format_type'] == 'php') && ($type === null)) or ($type == 'php')) {
            $format = Zend_Locale_Format::convertPhpToIsoFormat($format);
        }

        // get format tokens
        $j = 0;
        $comment = false;
        $output = array();
        for($i = 0; $i < strlen($format); ++$i) {

            if ($format[$i] == "'") {
                if ($comment == false) {
                    $comment = true;
                    ++$j;
                    $output[$j] = "'";
                } else if (isset($format[$i+1]) and ($format[$i+1] == "'")) {
                    $output[$j] .= "'";
                    ++$i;
                } else {
                    $comment = false;
                }
                continue;
            }

            if (isset($output[$j]) and ($output[$j][0] == $format[$i]) or
                ($comment == true)) {
                $output[$j] .= $format[$i];
            } else {
                ++$j;
                $output[$j] = $format[$i];
            }
        }

        $notset = false;
        // fill format tokens with date information
        for($i = 1; $i <= count($output); ++$i) {
            // fill fixed tokens
            switch ($output[$i]) {

                // special formats
                case 'SS' :
                    $output[$i] = $this->date('S', $this->getUnixTimestamp(), false);
                    break;

                case 'eee' :
                    $output[$i] = $this->date('N', $this->getUnixTimestamp(), false);
                    break;

                case 'ddd' :
                    $output[$i] = $this->date('t', $this->getUnixTimestamp(), false);
                    break;

                case 'l' :
                    $output[$i] = $this->date('L', $this->getUnixTimestamp(), false);
                    break;

                case 'B' :
                    $output[$i] = $this->date('B', $this->getUnixTimestamp(), false);
                    break;

                case 'I' :
                    $output[$i] = $this->date('I', $this->getUnixTimestamp(), false);
                    break;

                case 'X' :
                    $output[$i] = $this->date('Z', $this->getUnixTimestamp(), false);
                    break;

                case 'r' :
                    $output[$i] = $this->date('r', $this->getUnixTimestamp(), false);
                    break;

                case 'U' :
                    $output[$i] = $this->getUnixTimestamp();
                    break;

                    // eras
                case 'GGGGG' :
                    $output[$i] = iconv_substr($this->get(self::ERA, $locale), 0, 1, 'UTF-8') . ".";
                    break;

                case 'GGGG' :
                    $output[$i] = $this->get(self::ERA_NAME, $locale);
                    break;

                case 'GGG' :
                case 'GG'  :
                case 'G'   :
                    $output[$i] = $this->get(self::ERA, $locale);
                    break;

                // years
                case 'yy' :
                    $output[$i] = str_pad($this->get(self::YEAR_SHORT, $locale), 2, '0', STR_PAD_LEFT);
                    break;

                // ISO years
                case 'YY' :
                    $output[$i] = str_pad($this->get(self::YEAR_SHORT_8601, $locale), 2, '0', STR_PAD_LEFT);
                    break;

                // months
                case 'MMMMM' :
                    $output[$i] = iconv_substr($this->get(self::MONTH_NAME_NARROW, $locale), 0, 1, 'UTF-8');
                    break;

                case 'MMMM' :
                    $output[$i] = $this->get(self::MONTH_NAME, $locale);
                    break;

                case 'MMM' :
                    $output[$i] = $this->get(self::MONTH_NAME_SHORT, $locale);
                    break;

                case 'MM' :
                    $output[$i] = $this->get(self::MONTH, $locale);
                    break;

                case 'M' :
                    $output[$i] = $this->get(self::MONTH_SHORT, $locale);
                    break;

                // week
                case 'ww' :
                    $output[$i] = str_pad($this->get(self::WEEK, $locale), 2, '0', STR_PAD_LEFT);
                    break;

                case 'w' :
                    $output[$i] = $this->get(self::WEEK, $locale);
                    break;

                // monthday
                case 'dd' :
                    $output[$i] = $this->get(self::DAY, $locale);
                    break;

                case 'd' :
                    $output[$i] = $this->get(self::DAY_SHORT, $locale);
                    break;

                // yearday
                case 'DDD' :
                    $output[$i] = str_pad($this->get(self::DAY_OF_YEAR, $locale), 3, '0', STR_PAD_LEFT);
                    break;

                case 'DD' :
                    $output[$i] = str_pad($this->get(self::DAY_OF_YEAR, $locale), 2, '0', STR_PAD_LEFT);
                    break;

                case 'D' :
                    $output[$i] = $this->get(self::DAY_OF_YEAR, $locale);
                    break;

                // weekday
                case 'EEEEE' :
                    $output[$i] = $this->get(self::WEEKDAY_NARROW, $locale);
                    break;

                case 'EEEE' :
                    $output[$i] = $this->get(self::WEEKDAY, $locale);
                    break;

                case 'EEE' :
                    $output[$i] = $this->get(self::WEEKDAY_SHORT, $locale);
                    break;

                case 'EE' :
                    $output[$i] = $this->get(self::WEEKDAY_NAME, $locale);
                    break;

                case 'E' :
                    $output[$i] = $this->get(self::WEEKDAY_NARROW, $locale);
                    break;

                // weekday number
                case 'ee' :
                    $output[$i] = str_pad($this->get(self::WEEKDAY_8601, $locale), 2, '0', STR_PAD_LEFT);
                    break;

                case 'e' :
                    $output[$i] = $this->get(self::WEEKDAY_8601, $locale);
                    break;


                // period
                case 'a' :
                    $output[$i] = $this->get(self::MERIDIEM, $locale);
                    break;

                // hour
                case 'hh' :
                    $output[$i] = $this->get(self::HOUR_AM, $locale);
                    break;

                case 'h' :
                    $output[$i] = $this->get(self::HOUR_SHORT_AM, $locale);
                    break;

                case 'HH' :
                    $output[$i] = $this->get(self::HOUR, $locale);
                    break;

                case 'H' :
                    $output[$i] = $this->get(self::HOUR_SHORT, $locale);
                    break;

                // minute
                case 'mm' :
                    $output[$i] = $this->get(self::MINUTE, $locale);
                    break;

                case 'm' :
                    $output[$i] = $this->get(self::MINUTE_SHORT, $locale);
                    break;

                // second
                case 'ss' :
                    $output[$i] = $this->get(self::SECOND, $locale);
                    break;

                case 's' :
                    $output[$i] = $this->get(self::SECOND_SHORT, $locale);
                    break;

                case 'S' :
                    $output[$i] = $this->get(self::MILLISECOND, $locale);
                    break;

                // zone
                // @todo  v needs to be reworked as it's the long wall time and not the timezone
                case 'vvvv' :
                case 'zzzz' :
                    $output[$i] = $this->get(self::TIMEZONE_NAME, $locale);
                    break;

                // @todo  v needs to be reworked as it's the short wall time and not the timezone
                case 'v' :
                case 'zzz' :
                case 'zz'  :
                case 'z'   :
                    $output[$i] = $this->get(self::TIMEZONE, $locale);
                    break;

                // zone offset
                case 'ZZZZ' :
                    $output[$i] = $this->get(self::GMT_DIFF_SEP, $locale);
                    break;

                case 'ZZZ' :
                case 'ZZ'  :
                case 'Z'   :
                    $output[$i] = $this->get(self::GMT_DIFF, $locale);
                    break;

                default :
                    $notset = true;
                    break;
            }

            // fill variable tokens
            if ($notset == true) {
                if (($output[$i][0] !== "'") and (preg_match('/y+/', $output[$i]))) {
                    $length     = iconv_strlen($output[$i], 'UTF-8');
                    $output[$i] = $this->get(self::YEAR, $locale);
                    $output[$i] = str_pad($output[$i], $length, '0', STR_PAD_LEFT);
                }

                if (($output[$i][0] !== "'") and (preg_match('/Y+/', $output[$i]))) {
                    $length     = iconv_strlen($output[$i], 'UTF-8');
                    $output[$i] = $this->get(self::YEAR_8601, $locale);
                    $output[$i] = str_pad($output[$i], $length, '0', STR_PAD_LEFT);
                }

                if (($output[$i][0] !== "'") and (preg_match('/A+/', $output[$i]))) {
                    $length = iconv_strlen($output[$i], 'UTF-8');
                    $hour   = $this->get(self::HOUR,        $locale);
                    $minute = $this->get(self::MINUTE,      $locale);
                    $second = $this->get(self::SECOND,      $locale);
                    $milli  = $this->get(self::MILLISECOND, $locale);

                    $seconds    = $milli + ($second * 1000) + ($minute * 60000) + ($hour * 3600000);
                    $output[$i] = str_pad($seconds, $length, '0', STR_PAD_LEFT);
                }

                if ($output[$i][0] === "'") {
                    $output[$i] = iconv_substr($output[$i],
                                               1,
                                               iconv_strlen($output[$i], 'UTF-8') - 1,
                                               'UTF-8');
                }
            }
            $notset = false;
        }

        return implode('', $output);
    }

    /**
     * Returns a string representation of the date which is equal with the timestamp
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString(null, $this->_locale);
    }

    /**
     * Returns a integer representation of the object
     * But returns false when the given part is no value f.e. Month-Name
     *
     * @param  string|integer|Zend_Date  $part  OPTIONAL Defines the date or datepart to return as integer
     * @return integer|false
     */
    public function toValue($part = null)
    {
        $result = $this->get($part);
        if (is_numeric($result)) {
          return intval("$result");
        } else {
          return false;
        }
    }

    /**
     * Returns an array representation of the object
     *
     * @return array
     */
    public function toArray()
    {
        return array('day'       => $this->get(self::DAY_SHORT),
                     'month'     => $this->get(self::MONTH_SHORT),
                     'year'      => $this->get(self::YEAR),
                     'hour'      => $this->get(self::HOUR_SHORT),
                     'minute'    => $this->get(self::MINUTE_SHORT),
                     'second'    => $this->get(self::SECOND_SHORT),
                     'timezone'  => $this->get(self::TIMEZONE),
                     'timestamp' => $this->get(self::TIMESTAMP),
                     'weekday'   => $this->get(self::WEEKDAY_8601),
                     'dayofyear' => $this->get(self::DAY_OF_YEAR),
                     'week'      => $this->get(self::WEEK),
                     'gmtsecs'   => $this->get(self::TIMEZONE_SECS));
    }

    /**
     * Returns a representation of a date or datepart
     * This could be for example a localized monthname, the time without date,
     * the era or only the fractional seconds. There are about 50 different supported date parts.
     * For a complete list of supported datepart values look into the docu
     *
     * @param  string              $part    OPTIONAL Part of the date to return, if null the timestamp is returned
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return integer|string  date or datepart
     */
    public function get($part = null, $locale = null)
    {
        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if (($part !== null) and (Zend_Locale::isLocale($part, null, false))) {
            $locale = $part;
            $part = null;
        }

        if ($part === null) {
            $part = self::TIMESTAMP;
        }

        if (!defined("self::".$part)) {
            return $this->toString($part, $locale);
        }

        switch($part) {

            // day formats
            case self::DAY :
                return $this->date('d', $this->getUnixTimestamp(), false);
                break;

            case self::WEEKDAY_SHORT :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'wide', $weekday));
                return iconv_substr($day, 0, 3, 'UTF-8');
                break;

            case self::DAY_SHORT :
                return $this->date('j', $this->getUnixTimestamp(), false);
                break;

            case self::WEEKDAY :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                return Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'wide', $weekday));
                break;

            case self::WEEKDAY_8601 :
                return $this->date('N', $this->getUnixTimestamp(), false);
                break;

            case self::DAY_SUFFIX :
                return $this->date('S', $this->getUnixTimestamp(), false);
                break;

            case self::WEEKDAY_DIGIT :
                return $this->date('w', $this->getUnixTimestamp(), false);
                break;

            case self::DAY_OF_YEAR :
                return $this->date('z', $this->getUnixTimestamp(), false);
                break;

            case self::WEEKDAY_NARROW :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                $day = Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'abbreviated', $weekday));
                return iconv_substr($day, 0, 1, 'UTF-8');
                break;

            case self::WEEKDAY_NAME :
                $weekday = strtolower($this->date('D', $this->getUnixTimestamp(), false));
                return Zend_Locale_Data::getContent($locale, 'day', array('gregorian', 'format', 'abbreviated', $weekday));
                break;

            // week formats
            case self::WEEK :
                return $this->date('W', $this->getUnixTimestamp(), false);
                break;

            // month formats
            case self::MONTH_NAME :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                return Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'wide', $month));
                break;

            case self::MONTH :
                return $this->date('m', $this->getUnixTimestamp(), false);
                break;

            case self::MONTH_NAME_SHORT :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                return Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'abbreviated', $month));
                break;

            case self::MONTH_SHORT :
                return $this->date('n', $this->getUnixTimestamp(), false);
                break;

            case self::MONTH_DAYS :
                return $this->date('t', $this->getUnixTimestamp(), false);
                break;

            case self::MONTH_NAME_NARROW :
                $month = $this->date('n', $this->getUnixTimestamp(), false);
                $mon = Zend_Locale_Data::getContent($locale, 'month', array('gregorian', 'format', 'abbreviated', $month));
                return iconv_substr($mon, 0, 1, 'UTF-8');
                break;

            // year formats
            case self::LEAPYEAR :
                return $this->date('L', $this->getUnixTimestamp(), false);
                break;

            case self::YEAR_8601 :
                return $this->date('o', $this->getUnixTimestamp(), false);
                break;

            case self::YEAR :
                return $this->date('Y', $this->getUnixTimestamp(), false);
                break;

            case self::YEAR_SHORT :
                return $this->date('y', $this->getUnixTimestamp(), false);
                break;


            case self::YEAR_SHORT_8601 :
                return substr($this->date('o', $this->getUnixTimestamp(), false), -2, 2);
                break;

            // time formats
            case self::MERIDIEM :
                $am = $this->date('a', $this->getUnixTimestamp(), false);
                if ($am == 'am') {
                    return Zend_Locale_Data::getContent($locale, 'am');
                }
                return Zend_Locale_Data::getContent($locale, 'pm');
                break;

            case self::SWATCH :
                return $this->date('B', $this->getUnixTimestamp(), false);
                break;

            case self::HOUR_SHORT_AM :
                return $this->date('g', $this->getUnixTimestamp(), false);
                break;

            case self::HOUR_SHORT :
                return $this->date('G', $this->getUnixTimestamp(), false);
                break;

            case self::HOUR_AM :
                return $this->date('h', $this->getUnixTimestamp(), false);
                break;

            case self::HOUR :
                return $this->date('H', $this->getUnixTimestamp(), false);
                break;

            case self::MINUTE :
                return $this->date('i', $this->getUnixTimestamp(), false);
                break;

            case self::SECOND :
                return $this->date('s', $this->getUnixTimestamp(), false);
                break;

            case self::MINUTE_SHORT :
                return $this->date('i', $this->getUnixTimestamp(), false);
                break;

            case self::SECOND_SHORT :
                return $this->date('s', $this->getUnixTimestamp(), false);
                break;

            case self::MILLISECOND :
                return $this->_fractional;
                break;

            // timezone formats
            case self::TIMEZONE_NAME :
                return $this->date('e', $this->getUnixTimestamp(), false);
                break;

            case self::DAYLIGHT :
                return $this->date('I', $this->getUnixTimestamp(), false);
                break;

            case self::GMT_DIFF :
                return $this->date('O', $this->getUnixTimestamp(), false);
                break;

            case self::GMT_DIFF_SEP :
                return $this->date('P', $this->getUnixTimestamp(), false);
                break;

            case self::TIMEZONE :
                return $this->date('T', $this->getUnixTimestamp(), false);
                break;

            case self::TIMEZONE_SECS :
                return $this->date('Z', $this->getUnixTimestamp(), false);
                break;

            // date strings
            case self::ISO_8601 :
                return $this->date('c', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_2822 :
                return $this->date('r', $this->getUnixTimestamp(), false);
                break;

            case self::TIMESTAMP :
                return $this->getUnixTimestamp();
                break;

            // additional formats
            case self::ERA :
                $year = $this->date('Y', $this->getUnixTimestamp(), false);
                if ($year < 0) {
                    return Zend_Locale_Data::getContent($locale, 'era', array('gregorian', 'Abbr', '0'));
                }
                return Zend_Locale_Data::getContent($locale, 'era', array('gregorian', 'Abbr', '1'));
                break;

            case self::ERA_NAME :
                $year = $this->date('Y', $this->getUnixTimestamp(), false);
                if ($year < 0) {
                    return Zend_Locale_Data::getContent($locale, 'era', array('gregorian', 'Names', '0'));
                }
                return Zend_Locale_Data::getContent($locale, 'era', array('gregorian', 'Names', '1'));
                break;

            case self::DATES :
                return $this->toString(Zend_Locale_Format::getDateFormat($locale), 'iso', $locale);
                break;

            case self::DATE_FULL :
                $date = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'full'));
                return $this->toString($date, 'iso', $locale);
                break;

            case self::DATE_LONG :
                $date = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'long'));
                return $this->toString($date, 'iso', $locale);
                break;

            case self::DATE_MEDIUM :
                $date = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'medium'));
                return $this->toString($date, 'iso', $locale);
                break;

            case self::DATE_SHORT :
                $date = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'short'));
                return $this->toString($date, 'iso', $locale);
                break;

            case self::TIMES :
                return $this->toString(Zend_Locale_Format::getTimeFormat($locale), 'iso', $locale);
                break;

            case self::TIME_FULL :
                $time = Zend_Locale_Data::getContent($locale, 'time', 'full');
                return $this->toString($time, 'iso', $locale);
                break;

            case self::TIME_LONG :
                $time = Zend_Locale_Data::getContent($locale, 'time', 'long');
                return $this->toString($time, 'iso', $locale);
                break;

            case self::TIME_MEDIUM :
                $time = Zend_Locale_Data::getContent($locale, 'time', 'medium');
                return $this->toString($time, 'iso', $locale);
                break;

            case self::TIME_SHORT :
                $time = Zend_Locale_Data::getContent($locale, 'time', 'short');
                return $this->toString($time, 'iso', $locale);
                break;

            case self::ATOM :
                return $this->date('Y\-m\-d\TH\:i\:sP', $this->getUnixTimestamp(), false);
                break;

            case self::COOKIE :
                return $this->date('l\, d\-M\-y H\:i\:s e', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_822 :
                return $this->date('D\, d M y H\:i\:s O', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_850 :
                return $this->date('l\, d\-M\-y H\:i\:s e', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_1036 :
                return $this->date('D\, d M y H\:i\:s O', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_1123 :
                return $this->date('D\, d M Y H\:i\:s O', $this->getUnixTimestamp(), false);
                break;

            case self::RFC_3339 :
                return $this->date('Y\-m\-d\TH\:i\:sP', $this->getUnixTimestamp(), false);
                break;

            case self::RSS :
                return $this->date('D\, d M Y H\:i\:s O', $this->getUnixTimestamp(), false);
                break;

            case self::W3C :
                return $this->date('Y\-m\-d\TH\:i\:sP', $this->getUnixTimestamp(), false);
                break;
        }
    }

    /**
     * Return digit from standard names (english)
     * Faster implementation than locale aware searching
     *
     * @param  string  $name
     * @return integer  Number of this month
     * @throws Zend_Date_Exception
     */
    private function _getDigitFromName($name)
    {
        switch($name) {
            case "Jan":
                return 1;

            case "Feb":
                return 2;

            case "Mar":
                return 3;

            case "Apr":
                return 4;

            case "May":
                return 5;

            case "Jun":
                return 6;

            case "Jul":
                return 7;

            case "Aug":
                return 8;

            case "Sep":
                return 9;

            case "Oct":
                return 10;

            case "Nov":
                return 11;

            case "Dec":
                return 12;

            default:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('Month ($name) is not a known month');
        }
    }

    /**
     * Counts the exact year number
     * < 70 - 2000 added, >70 < 100 - 1900, others just returned
     *
     * @param  integer  $value year number
     * @return integer  Number of year
     */
    public static function getFullYear($value)
    {
        if ($value >= 0) {
            if ($value < 70) {
                $value += 2000;
            } else if ($value < 100) {
                $value += 1900;
            }
        }
        return $value;
    }

    /**
     * Sets the given date as new date or a given datepart as new datepart returning the new datepart
     * This could be for example a localized dayname, the date without time,
     * the month or only the seconds. There are about 50 different supported date parts.
     * For a complete list of supported datepart values look into the docu
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to set
     * @param  string                          $part    OPTIONAL Part of the date to set, if null the timestamp is set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer|string  new datepart
     * @throws Zend_Date_Exception
     */
    public function set($date, $part = null, $locale = null)
    {
        $zone = $this->getTimezoneFromString($date);
        $this->setTimezone($zone);

        $result = $this->_calculate('set', $date, $part, $locale);
        return $result;
    }

    /**
     * Adds a date or datepart to the existing date, by extracting $part from $date,
     * and modifying this object by adding that part.  The $part is then extracted from
     * this object and returned as an integer or numeric string (for large values, or $part's
     * corresponding to pre-defined formatted date strings).
     * This could be for example a ISO 8601 date, the hour the monthname or only the minute.
     * There are about 50 different supported date parts.
     * For a complete list of supported datepart values look into the docu.
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to add
     * @param  string                          $part    OPTIONAL Part of the date to add, if null the timestamp is added
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer|string  new datepart
     * @throws Zend_Date_Exception
     */
    public function add($date, $part = null, $locale = null)
    {
        $this->_calculate('add', $date, $part, $locale);
        $result = $this->get($part, $locale);

        return $result;
    }

    /**
     * Subtracts a date from another date.
     * This could be for example a RFC2822 date, the time,
     * the year or only the timestamp. There are about 50 different supported date parts.
     * For a complete list of supported datepart values look into the docu
     * Be aware: Adding -2 Months is not equal to Subtracting 2 Months !!!
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to subtract
     * @param  string                          $part    OPTIONAL Part of the date to sub, if null the timestamp is subtracted
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer|string  new datepart
     * @throws Zend_Date_Exception
     */
    public function sub($date, $part = null, $locale = null)
    {
        $this->_calculate('sub', $date, $part, $locale);
        $result = $this->get($part, $locale);

        return $result;
    }

    /**
     * Compares a date or datepart with the existing one.
     * Returns -1 if earlier, 0 if equal and 1 if later.
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to compare with the date object
     * @param  string                          $part    OPTIONAL Part of the date to compare, if null the timestamp is subtracted
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compare($date, $part = null, $locale = null)
    {
        $compare = $this->_calculate('cmp', $date, $part, $locale);

        if ($compare > 0) {
            return 1;
        } else if ($compare < 0) {
            return -1;
        }
        return 0;
    }

    /**
     * Returns a new instance of Zend_Date with the selected part copied.
     * To make an exact copy, use PHP's clone keyword.
     * For a complete list of supported date part values look into the docu.
     * If a date part is copied, all other date parts are set to standard values.
     * For example: If only YEAR is copied, the returned date object is equal to
     * 01-01-YEAR 00:00:00 (01-01-1970 00:00:00 is equal to timestamp 0)
     * If only HOUR is copied, the returned date object is equal to
     * 01-01-1970 HOUR:00:00 (so $this contains a timestamp equal to a timestamp of 0 plus HOUR).
     *
     * @param  string              $part    Part of the date to compare, if null the timestamp is subtracted
     * @param  string|Zend_Locale  $locale  OPTIONAL New object's locale.  No adjustments to timezone are made.
     * @return Zend_Date
     */
    public function copyPart($part, $locale = null)
    {
        $clone = clone $this;           // copy all instance variables
        $clone->setUnixTimestamp(0);    // except the timestamp
        if ($locale != null) {
            $clone->setLocale($locale); // set an other locale if selected
        }
        $clone->set($this, $part);
        return $clone;
    }

    /**
     * Internal function, returns the offset of a given timezone
     *
     * @param string $zone
     * @return integer
     */
    public function getTimezoneFromString($zone)
    {
        if (is_array($zone)) {
            return $this->getTimezone();
        }
        if ($zone instanceof Zend_Date) {
            return $zone->getTimezone();
        }
        preg_match('/([+-]\d{2}):{0,1}\d{2}/', $zone, $match);
        if (!empty($match) and ($match[count($match) - 1] <= 12) and ($match[count($match) - 1] >= -12)) {
            $zone = "Etc/GMT";
            $zone .= ($match[count($match) - 1] < 0) ? "+" : "-";
            $zone .= (int) abs($match[count($match) - 1]);
            return $zone;
        }

        preg_match('/([[:alpha:]\/]{3,30})/', $zone, $match);
        try {
            if (!empty($match) and (!is_int($match[count($match) - 1]))) {
                $oldzone = $this->getTimezone();
                $this->setTimezone($match[count($match) - 1]);
                $result = $this->getTimezone();
                $this->setTimezone($oldzone);
                if ($result !== $oldzone) {
                    return $match[count($match) - 1];
                }
            }
        } catch (Exception $e) {
            // fall through
        }

        return $this->getTimezone();
    }

    /**
     * Calculates the date or object
     *
     * @param  string                    $calc  Calculation to make
     * @param  string|integer            $date  Date for calculation
     * @param  string|integer            $comp  Second date for calculation
     * @param  boolean|integer           $dst   Use dst correction if option is set
     * @return integer|string|Zend_Date  new timestamp or Zend_Date depending on calculation
     */
    private function _assign($calc, $date, $comp = 0, $dst = false)
    {
        switch ($calc) {
            case 'set' :
                if (!empty($comp)) {
                    $this->setUnixTimestamp(call_user_func(Zend_Locale_Math::$sub, $this->getUnixTimestamp(), $comp));
                }
                $this->setUnixTimestamp(call_user_func(Zend_Locale_Math::$add, $this->getUnixTimestamp(), $date));
                $value = $this->getUnixTimestamp();
                break;
            case 'add' :
                $this->setUnixTimestamp(call_user_func(Zend_Locale_Math::$add, $this->getUnixTimestamp(), $date));
                $value = $this->getUnixTimestamp();
                break;
            case 'sub' :
                $this->setUnixTimestamp(call_user_func(Zend_Locale_Math::$sub, $this->getUnixTimestamp(), $date));
                $value = $this->getUnixTimestamp();
                break;
            default :
                // cmp - compare
                return call_user_func(Zend_Locale_Math::$comp, $comp, $date);
                break;
        }

        // dst-correction if 'fix_dst' = true and dst !== false but only for non UTC and non GMT
        if ((self::$_options['fix_dst'] === true) and ($dst !== false) and ($this->_dst === true)) {
            $hour = $this->get(self::HOUR);
            if ($hour != $dst) {
                if (($dst == ($hour + 1)) or ($dst == ($hour - 23))) {
                    $value += 3600;
                } else if (($dst == ($hour - 1)) or ($dst == ($hour + 23))) {
                    $value -= 3600;
                }
                $this->setUnixTimestamp($value);
            }
        }
        return $this->getUnixTimestamp();
    }


    /**
     * Calculates the date or object
     *
     * @param  string                          $calc    Calculation to make, one of: 'add'|'sub'|'cmp'|'copy'|'set'
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to calculate with
     * @param  string                          $part    Part of the date to calculate, if null the timestamp is used
     * @param  string|Zend_Locale              $locale  Locale for parsing input
     * @return integer|string|Zend_Date        new timestamp
     * @throws Zend_Date_Exception
     */
    private function _calculate($calc, $date, $part, $locale)
    {
        if (is_null($date) === true) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $date must be set, null is not allowed');
        }

        if (($part !== null) and (Zend_Locale::isLocale($part, null, false))) {
            $locale = $part;
            $part   = null;
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        $locale = (string) $locale;

        // Create date parts
        $year   = $this->get(self::YEAR);
        $month  = $this->get(self::MONTH_SHORT);
        $day    = $this->get(self::DAY_SHORT);
        $hour   = $this->get(self::HOUR_SHORT);
        $minute = $this->get(self::MINUTE_SHORT);
        $second = $this->get(self::SECOND_SHORT);
        // If object extract value
        if ($date instanceof Zend_Date) {
            $date = $date->get($part, $locale);
        }

        if (is_array($date) === true) {
            if (empty($part) === false) {
                switch($part) {
                    // Fall through
                    case self::DAY:
                    case self::DAY_SHORT:
                        if (isset($date['day']) === true) {
                            $date = $date['day'];
                        }
                        break;
                    // Fall through
                    case self::WEEKDAY_SHORT:
                    case self::WEEKDAY:
                    case self::WEEKDAY_8601:
                    case self::WEEKDAY_DIGIT:
                    case self::WEEKDAY_NARROW:
                    case self::WEEKDAY_NAME:
                        if (isset($date['weekday']) === true) {
                            $date = $date['weekday'];
                            $part = self::WEEKDAY_DIGIT;
                        }
                        break;
                    case self::DAY_OF_YEAR:
                        if (isset($date['day_of_year']) === true) {
                            $date = $date['day_of_year'];
                        }
                        break;
                    // Fall through
                    case self::MONTH:
                    case self::MONTH_SHORT:
                    case self::MONTH_NAME:
                    case self::MONTH_NAME_SHORT:
                    case self::MONTH_NAME_NARROW:
                        if (isset($date['month']) === true) {
                            $date = $date['month'];
                        }
                        break;
                    // Fall through
                    case self::YEAR:
                    case self::YEAR_SHORT:
                    case self::YEAR_8601:
                    case self::YEAR_SHORT_8601:
                        if (isset($date['year']) === true) {
                            $date = $date['year'];
                        }
                        break;
                    // Fall through
                    case self::HOUR:
                    case self::HOUR_AM:
                    case self::HOUR_SHORT:
                    case self::HOUR_SHORT_AM:
                        if (isset($date['hour']) === true) {
                            $date = $date['hour'];
                        }
                        break;
                    // Fall through
                    case self::MINUTE:
                    case self::MINUTE_SHORT:
                        if (isset($date['minute']) === true) {
                            $date = $date['minute'];
                        }
                        break;
                    // Fall through
                    case self::SECOND:
                    case self::SECOND_SHORT:
                        if (isset($date['second']) === true) {
                            $date = $date['second'];
                        }
                        break;
                    // Fall through
                    case self::TIMEZONE:
                    case self::TIMEZONE_NAME:
                        if (isset($date['timezone']) === true) {
                            $date = $date['timezone'];
                        }
                        break;
                    case self::TIMESTAMP:
                        if (isset($date['timestamp']) === true) {
                            $date = $date['timestamp'];
                        }
                        break;
                    case self::WEEK:
                        if (isset($date['week']) === true) {
                            $date = $date['week'];
                        }
                        break;
                    case self::TIMEZONE_SECS:
                        if (isset($date['gmtsecs']) === true) {
                            $date = $date['gmtsecs'];
                        }
                        break;
                    default:
                        require_once 'Zend/Date/Exception.php';
                        throw new Zend_Date_Exception("datepart for part ($part) not found in array");
                        break;
                }
            } else {
                $hours = 0;
                if (isset($date['hour']) === true) {
                    $hours = $date['hour'];
                }
                $minutes = 0;
                if (isset($date['minute']) === true) {
                    $minutes = $date['minute'];
                }
                $seconds = 0;
                if (isset($date['second']) === true) {
                    $seconds = $date['second'];
                }
                $months = 0;
                if (isset($date['month']) === true) {
                    $months = $date['month'];
                }
                $days = 0;
                if (isset($date['day']) === true) {
                    $days = $date['day'];
                }
                $years = 0;
                if (isset($date['year']) === true) {
                    $years = $date['year'];
                }
                return $this->_assign($calc, $this->mktime($hours, $minutes, $seconds, $months, $days, $years, true),
                                             $this->mktime($hour, $minute, $second, $month, $day, $year, true), $hour);
            }
        }

        // $date as object, part of foreign date as own date
        switch($part) {

            // day formats
            case self::DAY:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + intval($date), 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + intval($day), 1970, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, day expected", $date);
                break;

            case self::WEEKDAY_SHORT:
                $daylist = Zend_Locale_Data::getList($locale, 'day');
                $weekday = (int) $this->get(self::WEEKDAY_DIGIT, $locale);
                $cnt = 0;

                foreach ($daylist as $key => $value) {
                    if (strtoupper(iconv_substr($value, 0, 3, 'UTF-8')) == strtoupper($date)) {
                         $found = $cnt;
                        break;
                    }
                    ++$cnt;
                }

                // Weekday found
                if ($cnt < 7) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $found, 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            case self::DAY_SHORT:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + intval($date), 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + intval($day), 1970, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, day expected", $date);
                break;

            case self::WEEKDAY:
                $daylist = Zend_Locale_Data::getList($locale, 'day');
                $weekday = (int) $this->get(self::WEEKDAY_DIGIT, $locale);
                $cnt = 0;

                foreach ($daylist as $key => $value) {
                    if (strtoupper($value) == strtoupper($date)) {
                        $found = $cnt;
                        break;
                    }
                    ++$cnt;
                }

                // Weekday found
                if ($cnt < 7) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $found, 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            case self::WEEKDAY_8601:
                $weekday = (int) $this->get(self::WEEKDAY_8601, $locale);
                if ((intval($date) > 0) and (intval($date) < 8)) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + intval($date), 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            case self::DAY_SUFFIX:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('day suffix not supported', $date);
                break;

            case self::WEEKDAY_DIGIT:
                $weekday = (int) $this->get(self::WEEKDAY_DIGIT, $locale);
                if (is_numeric($date) and (intval($date) >= 0) and (intval($date) < 7)) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $date, 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            case self::DAY_OF_YEAR:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $date, 1970, true),
                                                 $this->mktime(0, 0, 0, $month, 1 + $day, 1970, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, day expected", $date);
                break;

            case self::WEEKDAY_NARROW:
                $daylist = Zend_Locale_Data::getList($locale, 'day', array('gregorian', 'format', 'abbreviated'));
                $weekday = (int) $this->get(self::WEEKDAY_DIGIT, $locale);
                $cnt = 0;
                foreach ($daylist as $key => $value) {
                    if (strtoupper(iconv_substr($value, 0, 1, 'UTF-8')) == strtoupper($date)) {
                        $found = $cnt;
                        break;
                    }
                    ++$cnt;
                }

                // Weekday found
                if ($cnt < 7) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $found, 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            case self::WEEKDAY_NAME:
                $daylist = Zend_Locale_Data::getList($locale, 'day', array('gregorian', 'format', 'abbreviated'));
                $weekday = (int) $this->get(self::WEEKDAY_DIGIT, $locale);
                $cnt = 0;
                foreach ($daylist as $key => $value) {
                    if (strtoupper($value) == strtoupper($date)) {
                        $found = $cnt;
                        break;
                    }
                    ++$cnt;
                }

                // Weekday found
                if ($cnt < 7) {
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1, 1 + $found, 1970, true),
                                                 $this->mktime(0, 0, 0, 1, 1 + $weekday, 1970, true), $hour);
                }

                // Weekday not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, weekday expected", $date);
                break;

            // week formats
            case self::WEEK:
                if (is_numeric($date)) {
                    $week = (int) $this->get(self::WEEK, $locale);
                    return $this->_assign($calc, parent::mktime(0, 0, 0, 1, 1 + ($date * 7), 1970, true),
                                                 parent::mktime(0, 0, 0, 1, 1 + ($week * 7), 1970, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, week expected", $date);
                break;

            // month formats
            case self::MONTH_NAME:
                $monthlist = Zend_Locale_Data::getList($locale, 'month');
                $cnt = 0;
                foreach ($monthlist as $key => $value) {
                    if (strtoupper($value) == strtoupper($date)) {
                        $found = $key;
                        break;
                    }
                    ++$cnt;
                }
                $date = array_search($date, $monthlist);

                // Monthname found
                if ($cnt < 12) {
                    $fixday = 0;
                    if ($calc == 'add') {
                        $date += $found;
                        $calc = 'set';
                        if (self::$_options['extend_month'] == false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    } else if ($calc == 'sub') {
                        $date = $month - $found;
                        $calc = 'set';
                        if (self::$_options['extend_month'] == false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $date,  $day + $fixday, $year, true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year, true), $hour);
                }

                // Monthname not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, month expected", $date);
                break;

            case self::MONTH:
                if (is_numeric($date)) {
                    $fixday = 0;
                    if ($calc == 'add') {
                        $date += $month;
                        $calc = 'set';
                        if (self::$_options['extend_month'] == false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    } else if ($calc == 'sub') {
                        $date = $month - $date;
                        $calc = 'set';
                        if (self::$_options['extend_month'] == false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $date, $day + $fixday, $year, true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, month expected", $date);
                break;

            case self::MONTH_NAME_SHORT:
                $monthlist = Zend_Locale_Data::getList($locale, 'month', array('gregorian', 'format', 'abbreviated'));
                $cnt = 0;
                foreach ($monthlist as $key => $value) {
                    if (strtoupper($value) == strtoupper($date)) {
                        $found = $key;
                        break;
                    }
                    ++$cnt;
                }
                $date = array_search($date, $monthlist);

                // Monthname found
                if ($cnt < 12) {
                    $fixday = 0;
                    if ($calc == 'add') {
                        $date += $found;
                        $calc = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    } else if ($calc == 'sub') {
                        $date = $month - $found;
                        $calc = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $date, $day + $fixday, $year, true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year, true), $hour);
                }

                // Monthname not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, month expected", $date);
                break;

            case self::MONTH_SHORT:
                if (is_numeric($date) === true) {
                    $fixday = 0;
                    if ($calc === 'add') {
                        $date += $month;
                        $calc  = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    } else if ($calc === 'sub') {
                        $date = $month - $date;
                        $calc = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    }

                    return $this->_assign($calc, $this->mktime(0, 0, 0, $date,  $day + $fixday, $year, true),
                                                 $this->mktime(0, 0, 0, $month, $day,           $year, true), $hour);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, month expected", $date);
                break;

            case self::MONTH_DAYS:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('month days not supported', $date);
                break;

            case self::MONTH_NAME_NARROW:
                $monthlist = Zend_Locale_Data::getList($locale, 'month', array('gregorian', 'stand-alone', 'narrow'));
                $cnt       = 0;
                foreach ($monthlist as $key => $value) {
                    if (strtoupper($value) === strtoupper($date)) {
                        $found = $key;
                        break;
                    }
                    ++$cnt;
                }
                $date = array_search($date, $monthlist);

                // Monthname found
                if ($cnt < 12) {
                    $fixday = 0;
                    if ($calc === 'add') {
                        $date += $found;
                        $calc  = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    } else if ($calc === 'sub') {
                        $date = $month - $found;
                        $calc = 'set';
                        if (self::$_options['extend_month'] === false) {
                            $parts = $this->getDateParts($this->mktime(0, 0, 0, $date, $day, $year, false));
                            if ($parts['mday'] != $day) {
                                $fixday = ($parts['mday'] < $day) ? -$parts['mday'] : ($parts['mday'] - $day);
                            }
                        }
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $date,  $day + $fixday, $year, true),
                                                 $this->mktime(0, 0, 0, $month, $day,           $year, true), $hour);
                }

                // Monthname not found
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, month expected", $date);
                break;

            // year formats
            case self::LEAPYEAR:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('leap year not supported', $date);
                break;

            case self::YEAR_8601:
                if (is_numeric($date)) {
                    if ($calc === 'add') {
                        $date += $year;
                        $calc  = 'set';
                    } else if ($calc === 'sub') {
                        $date = $year - $date;
                        $calc = 'set';
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $month, $day, intval($date), true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year,         true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, year expected", $date);
                break;

            case self::YEAR:
                if (is_numeric($date)) {
                    if ($calc === 'add') {
                        $date += $year;
                        $calc  = 'set';
                    } else if ($calc === 'sub') {
                        $date = $year - $date;
                        $calc = 'set';
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $month, $day, intval($date), true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year,         true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, year expected", $date);
                break;

            case self::YEAR_SHORT:
                if (is_numeric($date)) {
                    $date = intval($date);
                    if (($calc == 'set') || ($calc == 'cmp')) {
                        $date = self::getFullYear($date);
                    }
                    if ($calc === 'add') {
                        $date += $year;
                        $calc  = 'set';
                    } else if ($calc === 'sub') {
                        $date = $year - $date;
                        $calc = 'set';
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $month, $day, $date, true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, year expected", $date);
                break;

            case self::YEAR_SHORT_8601:
                if (is_numeric($date)) {
                    $date = intval($date);
                    if (($calc === 'set') || ($calc === 'cmp')) {
                        $date = self::getFullYear($date);
                    }
                    if ($calc === 'add') {
                        $date += $year;
                        $calc  = 'set';
                    } else if ($calc === 'sub') {
                        $date = $year - $date;
                        $calc = 'set';
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, $month, $day, $date, true),
                                                 $this->mktime(0, 0, 0, $month, $day, $year, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, year expected", $date);
                break;

            // time formats
            case self::MERIDIEM:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('meridiem not supported', $date);
                break;

            case self::SWATCH:
                if (is_numeric($date)) {
                    $rest    = intval($date);
                    $hours   = floor($rest * 24 / 1000);
                    $rest    = $rest - ($hours * 1000 / 24);
                    $minutes = floor($rest * 1440 / 1000);
                    $rest    = $rest - ($minutes * 1000 / 1440);
                    $seconds = floor($rest * 86400 / 1000);
                    return $this->_assign($calc, $this->mktime($hours, $minutes, $seconds, 1, 1, 1970, true),
                                                 $this->mktime($hour,  $minute,  $second,  1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, swatchstamp expected", $date);
                break;

            case self::HOUR_SHORT_AM:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(intval($date), 0, 0, 1, 1, 1970, true),
                                                 $this->mktime($hour,         0, 0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, hour expected", $date);
                break;

            case self::HOUR_SHORT:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(intval($date), 0, 0, 1, 1, 1970, true),
                                                 $this->mktime($hour,         0, 0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, hour expected", $date);
                break;

            case self::HOUR_AM:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(intval($date), 0, 0, 1, 1, 1970, true),
                                                 $this->mktime($hour,         0, 0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, hour expected", $date);
                break;

            case self::HOUR:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(intval($date), 0, 0, 1, 1, 1970, true),
                                                 $this->mktime($hour,         0, 0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, hour expected", $date);
                break;

            case self::MINUTE:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, intval($date), 0, 1, 1, 1970, true),
                                                 $this->mktime(0, $minute,       0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, minute expected", $date);
                break;

            case self::SECOND:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, 0, intval($date), 1, 1, 1970, true),
                                                 $this->mktime(0, 0, $second,       1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, second expected", $date);
                break;

            case self::MILLISECOND:
                if (is_numeric($date)) {
                    switch($calc) {
                        case 'set' :
                            return $this->setMillisecond($date);
                            break;
                        case 'add' :
                            return $this->addMillisecond($date);
                            break;
                        case 'sub' :
                            return $this->subMillisecond($date);
                            break;
                    }
                    return $this->compareMillisecond($date);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, milliseconds expected", $date);
                break;

            case self::MINUTE_SHORT:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, intval($date), 0, 1, 1, 1970, true),
                                                 $this->mktime(0, $minute,       0, 1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, minute expected", $date);
                break;

            case self::SECOND_SHORT:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $this->mktime(0, 0, intval($date), 1, 1, 1970, true),
                                                 $this->mktime(0, 0, $second,       1, 1, 1970, true), false);
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, second expected", $date);
                break;

            // timezone formats
            // break intentionally omitted
            case self::TIMEZONE_NAME:
            case self::TIMEZONE:
            case self::TIMEZONE_SECS:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('timezone not supported', $date);
                break;

            case self::DAYLIGHT:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('daylight not supported', $date);
                break;

            case self::GMT_DIFF:
            case self::GMT_DIFF_SEP:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('gmtdiff not supported', $date);
                break;

            // date strings
            case self::ISO_8601:
                // (-)YYYY-MM-dd
                preg_match('/^(-{0,1}\d{4})-(\d{2})-(\d{2})/', $date, $datematch);
                // (-)YY-MM-dd
                if (empty($datematch)) {
                    preg_match('/^(-{0,1}\d{2})-(\d{2})-(\d{2})/', $date, $datematch);
                }
                // (-)YYYYMMdd
                if (empty($datematch)) {
                    preg_match('/^(-{0,1}\d{4})(\d{2})(\d{2})/', $date, $datematch);
                }
                // (-)YYMMdd
                if (empty($datematch)) {
                    preg_match('/^(-{0,1}\d{2})(\d{2})(\d{2})/', $date, $datematch);
                }
                $tmpdate = $date;
                if (!empty($datematch)) {
                    $dateMatchCharCount = iconv_strlen($datematch[0], 'UTF-8');
                    $tmpdate = iconv_substr($date,
                                            $dateMatchCharCount,
                                            iconv_strlen($date, 'UTF-8') - $dateMatchCharCount,
                                            'UTF-8');
                }
                // (T)hh:mm:ss
                preg_match('/[T,\s]{0,1}(\d{2}):(\d{2}):(\d{2})/', $tmpdate, $timematch);
                if (empty($timematch)) {
                    preg_match('/[T,\s]{0,1}(\d{2})(\d{2})(\d{2})/', $tmpdate, $timematch);
                }
                if (empty($datematch) and empty($timematch)) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("unsupported ISO8601 format ($date)", $date);
                }
                if (!empty($timematch)) {
                    $timeMatchCharCount = iconv_strlen($timematch[0], 'UTF-8');
                    $tmpdate = iconv_substr($tmpdate,
                                            $timeMatchCharCount,
                                            iconv_strlen($tmpdate, 'UTF-8') - $timeMatchCharCount,
                                            'UTF-8');
                }
                if (empty($datematch)) {
                    $datematch[1] = 1970;
                    $datematch[2] = 1;
                    $datematch[3] = 1;
                } else if (iconv_strlen($datematch[1], 'UTF-8') == 2) {
                    $datematch[1] = self::getFullYear($datematch[1]);
                }
                if (empty($timematch)) {
                    $timematch[1] = 0;
                    $timematch[2] = 0;
                    $timematch[3] = 0;
                }

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$datematch[2];
                    --$month;
                    --$datematch[3];
                    --$day;
                    $datematch[1] -= 1970;
                    $year         -= 1970;
                }
                return $this->_assign($calc, $this->mktime($timematch[1], $timematch[2], $timematch[3], 1 + $datematch[2], 1 + $datematch[3], 1970 + $datematch[1], false),
                                             $this->mktime($hour,         $minute,       $second,       1 + $month,        1 + $day,          1970 + $year,         false), false);
                break;

            case self::RFC_2822:
                $result = preg_match('/^\w{3},\s(\d{1,2})\s(\w{3})\s(\d{4})\s(\d{2}):(\d{2}):{0,1}(\d{0,2})\s([+-]{1}\d{4})$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("no RFC 2822 format ($date)", $date);
                }

                $months  = $this->_getDigitFromName($match[2]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], false),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     false), false);
                break;

            case self::TIMESTAMP:
                if (is_numeric($date)) {
                    return $this->_assign($calc, $date, $this->getUnixTimestamp());
                }
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("invalid date ($date) operand, timestamp expected", $date);
                break;

            // additional formats
            // break intentionally omitted
            case self::ERA:
            case self::ERA_NAME:
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception('era not supported', $date);
                break;

            case self::DATES:
                try {
                    $parsed = Zend_Locale_Format::getDate($date, array('locale' => $locale, 'format_type' => 'iso', 'fix_date' => true));

                    if (($calc == 'set') || ($calc == 'cmp')) {
                        --$parsed['month'];
                        --$month;
                        --$parsed['day'];
                        --$day;
                        $parsed['year'] -= 1970;
                        $year  -= 1970;
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'], true),
                                                 $this->mktime(0, 0, 0, 1 + $month,           1 + $day,           1970 + $year,           true), $hour);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::DATE_FULL:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'full'));
                    $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));

                    if (($calc == 'set') || ($calc == 'cmp')) {
                        --$parsed['month'];
                        --$month;
                        --$parsed['day'];
                        --$day;
                        $parsed['year'] -= 1970;
                        $year  -= 1970;
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'], true),
                                                 $this->mktime(0, 0, 0, 1 + $month,           1 + $day,           1970 + $year,           true), $hour);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::DATE_LONG:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'long'));
                    $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));

                    if (($calc == 'set') || ($calc == 'cmp')){
                        --$parsed['month'];
                        --$month;
                        --$parsed['day'];
                        --$day;
                        $parsed['year'] -= 1970;
                        $year  -= 1970;
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'], true),
                                                 $this->mktime(0, 0, 0, 1 + $month,           1 + $day,           1970 + $year,           true), $hour);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::DATE_MEDIUM:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'medium'));
                    $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));

                    if (($calc == 'set') || ($calc == 'cmp')) {
                        --$parsed['month'];
                        --$month;
                        --$parsed['day'];
                        --$day;
                        $parsed['year'] -= 1970;
                        $year  -= 1970;
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'], true),
                                                 $this->mktime(0, 0, 0, 1 + $month,           1 + $day,           1970 + $year,           true), $hour);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::DATE_SHORT:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'date', array('gregorian', 'short'));
                    $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));

                    $parsed['year'] = self::getFullYear($parsed['year']);

                    if (($calc == 'set') || ($calc == 'cmp')) {
                        --$parsed['month'];
                        --$month;
                        --$parsed['day'];
                        --$day;
                        $parsed['year'] -= 1970;
                        $year  -= 1970;
                    }
                    return $this->_assign($calc, $this->mktime(0, 0, 0, 1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'], true),
                                                 $this->mktime(0, 0, 0, 1 + $month,           1 + $day,           1970 + $year,           true), $hour);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::TIMES:
                try {
                    if ($calc != 'set') {
                        $month = 1;
                        $day   = 1;
                        $year  = 1970;
                    }
                    $parsed = Zend_Locale_Format::getTime($date, array('locale' => $locale, 'format_type' => 'iso', 'fix_date' => true));
                    return $this->_assign($calc, $this->mktime($parsed['hour'], $parsed['minute'], $parsed['second'], $month, $day, $year, true),
                                                 $this->mktime($hour,           $minute,           $second,           $month, $day, $year, true), false);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::TIME_FULL:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'time', array('gregorian', 'full'));
                    $parsed = Zend_Locale_Format::getTime($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));
                    if ($calc != 'set') {
                        $month = 1;
                        $day   = 1;
                        $year  = 1970;
                    }
                    return $this->_assign($calc, $this->mktime($parsed['hour'], $parsed['minute'], 0,       $month, $day, $year, true),
                                                 $this->mktime($hour,           $minute,           $second, $month, $day, $year, true), false);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::TIME_LONG:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'time', array('gregorian', 'long'));
                    $parsed = Zend_Locale_Format::getTime($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));
                    if ($calc != 'set') {
                        $month = 1;
                        $day   = 1;
                        $year  = 1970;
                    }
                    return $this->_assign($calc, $this->mktime($parsed['hour'], $parsed['minute'], $parsed['second'], $month, $day, $year, true),
                                                 $this->mktime($hour,           $minute,           $second,           $month, $day, $year, true), false);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::TIME_MEDIUM:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'time', array('gregorian', 'medium'));
                    $parsed = Zend_Locale_Format::getTime($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));
                    if ($calc != 'set') {
                        $month = 1;
                        $day   = 1;
                        $year  = 1970;
                    }
                    return $this->_assign($calc, $this->mktime($parsed['hour'], $parsed['minute'], $parsed['second'], $month, $day, $year, true),
                                                 $this->mktime($hour,           $minute,           $second,           $month, $day, $year, true), false);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            case self::TIME_SHORT:
                try {
                    $format = Zend_Locale_Data::getContent($locale, 'time', array('gregorian', 'short'));
                    $parsed = Zend_Locale_Format::getTime($date, array('date_format' => $format, 'format_type' => 'iso', 'locale' => $locale));
                    if ($calc != 'set') {
                        $month = 1;
                        $day   = 1;
                        $year  = 1970;
                    }
                    return $this->_assign($calc, $this->mktime($parsed['hour'], $parsed['minute'], 0,       $month, $day, $year, true),
                                                 $this->mktime($hour,           $minute,           $second, $month, $day, $year, true), false);
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage(), $date);
                }
                break;

            // ATOM and RFC_3339 are identical
            case self::ATOM:
            case self::RFC_3339:
                $result = preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\d{0,4}([+-]{1}\d{2}:\d{2}|Z)$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, ATOM format expected", $date);
                }

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$match[2];
                    --$month;
                    --$match[3];
                    --$day;
                    $match[1] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $match[2], 1 + $match[3], 1970 + $match[1], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,    1 + $day,      1970 + $year,     true), false);
                break;

            case self::COOKIE:
                $result = preg_match("/^\w{6,9},\s(\d{2})-(\w{3})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})\s.{3,20}$/", $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, COOKIE format expected", $date);
                }
                $matchStartPos = iconv_strpos($match[0], ' ', 0, 'UTF-8') + 1;
                $match[0] = iconv_substr($match[0],
                                         $matchStartPos,
                                         iconv_strlen($match[0], 'UTF-8') - $matchStartPos,
                                         'UTF-8');

                $months    = $this->_getDigitFromName($match[2]);
                $match[3] = self::getFullYear($match[3]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     true), false);
                break;

            case self::RFC_822:
            case self::RFC_1036:
                // new RFC 822 format, identical to RFC 1036 standard
                $result = preg_match('/^\w{0,3},{0,1}\s{0,1}(\d{1,2})\s(\w{3})\s(\d{2})\s(\d{2}):(\d{2}):{0,1}(\d{0,2})\s([+-]{1}\d{4}|\w{1,20})$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, RFC 822 date format expected", $date);
                }

                $months    = $this->_getDigitFromName($match[2]);
                $match[3] = self::getFullYear($match[3]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], false),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     false), false);
                break;

            case self::RFC_850:
                $result = preg_match('/^\w{6,9},\s(\d{2})-(\w{3})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})\s.{3,21}$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, RFC 850 date format expected", $date);
                }

                $months    = $this->_getDigitFromName($match[2]);
                $match[3] = self::getFullYear($match[3]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     true), false);
                break;

            case self::RFC_1123:
                $result = preg_match('/^\w{0,3},{0,1}\s{0,1}(\d{1,2})\s(\w{3})\s(\d{2,4})\s(\d{2}):(\d{2}):{0,1}(\d{0,2})\s([+-]{1}\d{4}|\w{1,20})$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, RFC 1123 date format expected", $date);
                }

                $months  = $this->_getDigitFromName($match[2]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     true), false);
                break;

            case self::RSS:
                $result = preg_match('/^\w{3},\s(\d{2})\s(\w{3})\s(\d{2,4})\s(\d{1,2}):(\d{2}):(\d{2})\s.{1,21}$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, RSS date format expected", $date);
                }

                $months  = $this->_getDigitFromName($match[2]);
                $match[3] = self::getFullYear($match[3]);

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$months;
                    --$month;
                    --$match[1];
                    --$day;
                    $match[3] -= 1970;
                    $year  -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $months, 1 + $match[1], 1970 + $match[3], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,  1 + $day,      1970 + $year,     true), false);
                break;

            case self::W3C:
                $result = preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})[+-]{1}\d{2}:\d{2}$/', $date, $match);
                if (!$result) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("invalid date ($date) operand, W3C date format expected", $date);
                }

                if (($calc == 'set') || ($calc == 'cmp')) {
                    --$match[2];
                    --$month;
                    --$match[3];
                    --$day;
                    $match[1] -= 1970;
                    $year     -= 1970;
                }
                return $this->_assign($calc, $this->mktime($match[4], $match[5], $match[6], 1 + $match[2], 1 + $match[3], 1970 + $match[1], true),
                                             $this->mktime($hour,     $minute,   $second,   1 + $month,    1 + $day,      1970 + $year,     true), false);
                break;

            default:
                if (!is_numeric($date) || !empty($part)) {
                    try {
                        if (self::$_options['format_type'] == 'php') {
                            $part = Zend_Locale_Format::convertPhpToIsoFormat($part);
                        }
                        if (empty($part)) {
                            $part  = Zend_Locale_Format::getDateFormat($locale) . " ";
                            $part .= Zend_Locale_Format::getTimeFormat($locale);
                        }
                        $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $part, 'locale' => $locale, 'fix_date' => true, 'format_type' => 'iso'));
                        if ((strpos(strtoupper($part), 'YY') !== false) and (strpos(strtoupper($part), 'YYYY') === false)) {
                            $parsed['year'] = self::getFullYear($parsed['year']);
                        }
                        if (($calc == 'set') || ($calc == 'cmp')) {
                            if (isset($parsed['month'])) {
                                --$parsed['month'];
                            } else {
                                $parsed['month'] = 0;
                            }
                            if (isset($parsed['day'])) {
                                --$parsed['day'];
                            } else {
                                $parsed['day'] = 0;
                            }
                            if (isset($parsed['year'])) {
                                $parsed['year'] -= 1970;
                            } else {
                                $parsed['year'] = 0;
                            }
                        }
                        return $this->_assign($calc, $this->mktime(
                            isset($parsed['hour']) ? $parsed['hour'] : 0,
                            isset($parsed['minute']) ? $parsed['minute'] : 0,
                            isset($parsed['second']) ? $parsed['second'] : 0,
                            1 + $parsed['month'], 1 + $parsed['day'], 1970 + $parsed['year'],
                            false), $this->getUnixTimestamp(), false);
                    } catch (Zend_Locale_Exception $e) {
                        if (!is_numeric($date)) {
                            require_once 'Zend/Date/Exception.php';
                            throw new Zend_Date_Exception($e->getMessage(), $date);
                        }
                    }
                }
                return $this->_assign($calc, $date, $this->getUnixTimestamp(), false);
                break;
        }
    }

    /**
     * Returns true when both date objects or date parts are equal.
     * For example:
     * 15.May.2000 <-> 15.June.2000 Equals only for Day or Year... all other will return false
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to equal with
     * @param  string                          $part    OPTIONAL Part of the date to compare, if null the timestamp is used
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return boolean
     * @throws Zend_Date_Exception
     */
    public function equals($date, $part = null, $locale = null)
    {
        $result = $this->compare($date, $part, $locale);

        if ($result == 0) {
            return true;
        }
        return false;
    }

    /**
     * Returns if the given date or datepart is earlier
     * For example:
     * 15.May.2000 <-> 13.June.1999 will return true for day, year and date, but not for month
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to compare with
     * @param  string                          $part    OPTIONAL Part of the date to compare, if null the timestamp is used
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return boolean
     * @throws Zend_Date_Exception
     */
    public function isEarlier($date, $part = null, $locale = null)
    {
        $result = $this->compare($date, $part, $locale);

        if ($result == -1) {
            return true;
        }
        return false;
    }

    /**
     * Returns if the given date or datepart is later
     * For example:
     * 15.May.2000 <-> 13.June.1999 will return true for month but false for day, year and date
     * Returns if the given date is later
     *
     * @param  string|integer|array|Zend_Date  $date    Date or datepart to compare with
     * @param  string                          $part    OPTIONAL Part of the date to compare, if null the timestamp is used
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return boolean
     * @throws Zend_Date_Exception
     */
    public function isLater($date, $part = null, $locale = null)
    {
        $result = $this->compare($date, $part, $locale);

        if ($result == 1) {
            return true;
        }
        return false;
    }

    /**
     * Returns only the time of the date as new Zend_Date object
     * For example:
     * 15.May.2000 10:11:23 will return a dateobject equal to 01.Jan.1970 10:11:23
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getTime($locale = null)
    {
        return $this->copyPart(self::TIME_MEDIUM, $locale);
    }

    /**
     * Returns the calculated time
     *
     * @param  string                    $calc    Calculation to make
     * @param  string|integer|array|Zend_Date  $time    Time to calculate with, if null the actual time is taken
     * @param  string                          $format  Timeformat for parsing input
     * @param  string|Zend_Locale              $locale  Locale for parsing input
     * @return integer|Zend_Date  new time
     * @throws Zend_Date_Exception
     */
    private function _time($calc, $time, $format, $locale)
    {
        if (is_null($time)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $time must be set, null is not allowed');
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($time instanceof Zend_Date) {
            // extract time from object
            $time = $time->get(self::TIME_MEDIUM, $locale);
        } else {
            if (is_array($time)) {
                if ((isset($time['hour']) === true) or (isset($time['minute']) === true) or
                    (isset($time['second']) === true)) {
                    $parsed = $time;
                } else {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("no hour, minute or second given in array");
                }
            } else {
                if (self::$_options['format_type'] == 'php') {
                    $format = Zend_Locale_Format::convertPhpToIsoFormat($format);
                }
                try {
                    $parsed = Zend_Locale_Format::getTime($time, array('date_format' => $format, 'locale' => $locale, 'format_type' => 'iso'));
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage());
                }
            }
            $time = new self(0, self::TIMESTAMP, $locale);
            $time->setTimezone('UTC');
            $time->set($parsed['hour'],   self::HOUR);
            $time->set($parsed['minute'], self::MINUTE);
            $time->set($parsed['second'], self::SECOND);
            $time = $time->get(self::TIME_MEDIUM, $locale);
        }

        $return = $this->_calcdetail($calc, $time, self::TIME_MEDIUM, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Sets a new time for the date object. Format defines how to parse the time string.
     * Also a complete date can be given, but only the time is used for setting.
     * For example: dd.MMMM.yyTHH:mm' and 'ss sec'-> 10.May.07T25:11 and 44 sec => 1h11min44sec + 1 day
     * Returned is the new date object and the existing date is left as it was before
     *
     * @param  string|integer|array|Zend_Date  $time    Time to set
     * @param  string                          $format  OPTIONAL Timeformat for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new time
     * @throws Zend_Date_Exception
     */
    public function setTime($time, $format = null, $locale = null)
    {
        return $this->_time('set', $time, $format, $locale);
    }


    /**
     * Adds a time to the existing date. Format defines how to parse the time string.
     * If only parts are given the other parts are set to 0.
     * If no format is given, the standardformat of this locale is used.
     * For example: HH:mm:ss -> 10 -> +10 hours
     *
     * @param  string|integer|array|Zend_Date  $time    Time to add
     * @param  string                          $format  OPTIONAL Timeformat for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new time
     * @throws Zend_Date_Exception
     */
    public function addTime($time, $format = null, $locale = null)
    {
        return $this->_time('add', $time, $format, $locale);
    }


    /**
     * Subtracts a time from the existing date. Format defines how to parse the time string.
     * If only parts are given the other parts are set to 0.
     * If no format is given, the standardformat of this locale is used.
     * For example: HH:mm:ss -> 10 -> -10 hours
     *
     * @param  string|integer|array|Zend_Date  $time    Time to sub
     * @param  string                          $format  OPTIONAL Timeformat for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new time
     * @throws Zend_Date_Exception
     */
    public function subTime($time, $format = null, $locale = null)
    {
        return $this->_time('sub', $time, $format, $locale);
    }


    /**
     * Compares the time from the existing date. Format defines how to parse the time string.
     * If only parts are given the other parts are set to default.
     * If no format us given, the standardformat of this locale is used.
     * For example: HH:mm:ss -> 10 -> 10 hours
     *
     * @param  string|integer|array|Zend_Date  $time    Time to compare
     * @param  string                          $format  OPTIONAL Timeformat for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareTime($time, $format = null, $locale = null)
    {
        return $this->_time('cmp', $time, $format, $locale);
    }

    /**
     * Returns a clone of $this, with the time part set to 00:00:00.
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getDate($locale = null)
    {
        $date = $this->copyPart(self::DATE_FULL, $locale);
        $date->addTimestamp($this->getGmtOffset());
        return $date;
    }

    /**
     * Returns the calculated date
     *
     * @param  string                          $calc    Calculation to make
     * @param  string|integer|array|Zend_Date  $date    Date to calculate with, if null the actual date is taken
     * @param  string                          $format  Date format for parsing
     * @param  string|Zend_Locale              $locale  Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    private function _date($calc, $date, $format, $locale)
    {
        if (is_null($date)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $date must be set, null is not allowed');
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($date instanceof Zend_Date) {
            // extract date from object
            $date = $date->get(self::DATE_FULL, $locale);
        } else {
            if (is_array($date)) {
                if ((isset($time['year']) === true) or (isset($time['month']) === true) or
                    (isset($time['day']) === true)) {
                    $parsed = $time;
                } else {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("no day,month or year given in array");
                }
            } else {
                if (self::$_options['format_type'] == 'php') {
                    $format = Zend_Locale_Format::convertPhpToIsoFormat($format);
                }
                try {
                    $parsed = Zend_Locale_Format::getDate($date, array('date_format' => $format, 'locale' => $locale, 'format_type' => 'iso'));
                    if ((strpos(strtoupper($format), 'YY') !== false) and (strpos(strtoupper($format), 'YYYY') === false)) {
                        $parsed['year'] = self::getFullYear($parsed['year']);
                    }
                } catch (Zend_Locale_Exception $e) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception($e->getMessage());
                }
            }
            $date = new self(0, self::TIMESTAMP, $locale);
            $date->setTimezone('UTC');
            $date->set($parsed['year'], self::YEAR);
            $date->set($parsed['month'], self::MONTH);
            $date->set($parsed['day'], self::DAY);
            $date = $date->get(self::DATE_FULL, $locale);
        }

        $return = $this->_calcdetail($calc, $date, self::DATE_FULL, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Sets a new date for the date object. Format defines how to parse the date string.
     * Also a complete date with time can be given, but only the date is used for setting.
     * For example: MMMM.yy HH:mm-> May.07 22:11 => 01.May.07 00:00
     * Returned is the new date object and the existing time is left as it was before
     *
     * @param  string|integer|array|Zend_Date  $date    Date to set
     * @param  string                          $format  OPTIONAL Date format for parsing
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setDate($date, $format = null, $locale = null)
    {
        return $this->_date('set', $date, $format, $locale);
    }


    /**
     * Adds a date to the existing date object. Format defines how to parse the date string.
     * If only parts are given the other parts are set to 0.
     * If no format is given, the standardformat of this locale is used.
     * For example: MM.dd.YYYY -> 10 -> +10 months
     *
     * @param  string|integer|array|Zend_Date  $date    Date to add
     * @param  string                          $format  OPTIONAL Date format for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addDate($date, $format = null, $locale = null)
    {
        return $this->_date('add', $date, $format, $locale);
    }


    /**
     * Subtracts a date from the existing date object. Format defines how to parse the date string.
     * If only parts are given the other parts are set to 0.
     * If no format is given, the standardformat of this locale is used.
     * For example: MM.dd.YYYY -> 10 -> -10 months
     * Be aware: Subtracting 2 months is not equal to Adding -2 months !!!
     *
     * @param  string|integer|array|Zend_Date  $date    Date to sub
     * @param  string                          $format  OPTIONAL Date format for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subDate($date, $format = null, $locale = null)
    {
        return $this->_date('sub', $date, $format, $locale);
    }


    /**
     * Compares the date from the existing date object, ignoring the time.
     * Format defines how to parse the date string.
     * If only parts are given the other parts are set to 0.
     * If no format is given, the standardformat of this locale is used.
     * For example: 10.01.2000 => 10.02.1999 -> false
     *
     * @param  string|integer|array|Zend_Date  $date    Date to compare
     * @param  string                          $format  OPTIONAL Date format for parsing input
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function compareDate($date, $format = null, $locale = null)
    {
        return $this->_date('cmp', $date, $format, $locale);
    }


    /**
     * Returns the full ISO 8601 date from the date object.
     * Always the complete ISO 8601 specifiction is used. If an other ISO date is needed
     * (ISO 8601 defines several formats) use toString() instead.
     * This function does not return the ISO date as object. Use copy() instead.
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return string
     */
    public function getIso($locale = null)
    {
        return $this->get(self::ISO_8601, $locale);
    }


    /**
     * Sets a new date for the date object. Not given parts are set to default.
     * Only supported ISO 8601 formats are accepted.
     * For example: 050901 -> 01.Sept.2005 00:00:00, 20050201T10:00:30 -> 01.Feb.2005 10h00m30s
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    ISO Date to set
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setIso($date, $locale = null)
    {
        return $this->_calcvalue('set', $date, 'iso', self::ISO_8601, $locale);
    }


    /**
     * Adds a ISO date to the date object. Not given parts are set to default.
     * Only supported ISO 8601 formats are accepted.
     * For example: 050901 -> + 01.Sept.2005 00:00:00, 10:00:00 -> +10h
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    ISO Date to add
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addIso($date, $locale = null)
    {
        return $this->_calcvalue('add', $date, 'iso', self::ISO_8601, $locale);
    }


    /**
     * Subtracts a ISO date from the date object. Not given parts are set to default.
     * Only supported ISO 8601 formats are accepted.
     * For example: 050901 -> - 01.Sept.2005 00:00:00, 10:00:00 -> -10h
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    ISO Date to sub
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subIso($date, $locale = null)
    {
        return $this->_calcvalue('sub', $date, 'iso', self::ISO_8601, $locale);
    }


    /**
     * Compares a ISO date with the date object. Not given parts are set to default.
     * Only supported ISO 8601 formats are accepted.
     * For example: 050901 -> - 01.Sept.2005 00:00:00, 10:00:00 -> -10h
     * Returns if equal, earlier or later
     *
     * @param  string|integer|Zend_Date  $date    ISO Date to sub
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareIso($date, $locale = null)
    {
        return $this->_calcvalue('cmp', $date, 'iso', self::ISO_8601, $locale);
    }


    /**
     * Returns a RFC 822 compilant datestring from the date object.
     * This function does not return the RFC date as object. Use copy() instead.
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return string
     */
    public function getArpa($locale = null)
    {
        return $this->get(self::RFC_822, $locale);
    }


    /**
     * Sets a RFC 822 date as new date for the date object.
     * Only RFC 822 compilant date strings are accepted.
     * For example: Sat, 14 Feb 09 00:31:30 +0100
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    RFC 822 to set
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setArpa($date, $locale = null)
    {
        return $this->_calcvalue('set', $date, 'arpa', self::RFC_822, $locale);
    }


    /**
     * Adds a RFC 822 date to the date object.
     * ARPA messages are used in emails or HTTP Headers.
     * Only RFC 822 compilant date strings are accepted.
     * For example: Sat, 14 Feb 09 00:31:30 +0100
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    RFC 822 Date to add
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addArpa($date, $locale = null)
    {
        return $this->_calcvalue('add', $date, 'arpa', self::RFC_822, $locale);
    }


    /**
     * Subtracts a RFC 822 date from the date object.
     * ARPA messages are used in emails or HTTP Headers.
     * Only RFC 822 compilant date strings are accepted.
     * For example: Sat, 14 Feb 09 00:31:30 +0100
     * Returned is the new date object
     *
     * @param  string|integer|Zend_Date  $date    RFC 822 Date to sub
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subArpa($date, $locale = null)
    {
        return $this->_calcvalue('sub', $date, 'arpa', self::RFC_822, $locale);
    }


    /**
     * Compares a RFC 822 compilant date with the date object.
     * ARPA messages are used in emails or HTTP Headers.
     * Only RFC 822 compilant date strings are accepted.
     * For example: Sat, 14 Feb 09 00:31:30 +0100
     * Returns if equal, earlier or later
     *
     * @param  string|integer|Zend_Date  $date    RFC 822 Date to sub
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareArpa($date, $locale = null)
    {
        return $this->_calcvalue('cmp', $date, 'arpa', self::RFC_822, $locale);
    }


    /**
     * Check if location is supported
     *
     * @param $location array - locations array
     * @return $horizon float
     */
    private function _checkLocation($location)
    {
        if (!isset($location['longitude']) or !isset($location['latitude'])) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('Location must include \'longitude\' and \'latitude\'', $location);
        }
        if (($location['longitude'] > 180) or ($location['longitude'] < -180)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('Longitude must be between -180 and 180', $location);
        }
        if (($location['latitude'] > 90) or ($location['latitude'] < -90)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('Latitude must be between -90 and 90', $location);
        }

        if (!isset($location['horizon'])){
            $location['horizon'] = 'effective';
        }

        switch ($location['horizon']) {
            case 'civil' :
                return -0.104528;
                break;
            case 'nautic' :
                return -0.207912;
                break;
            case 'astronomic' :
                return -0.309017;
                break;
            default :
                return -0.0145439;
                break;
        }
    }


    /**
     * Returns the time of sunrise for this date and a given location as new date object
     * For a list of cities and correct locations use the class Zend_Date_Cities
     *
     * @param  $location array - location of sunrise
     *                   ['horizon']   -> civil, nautic, astronomical, effective (default)
     *                   ['longitude'] -> longitude of location
     *                   ['latitude']  -> latitude of location
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function getSunrise($location)
    {
        $horizon = $this->_checkLocation($location);
        $result = clone $this;
        $result->set($this->calcSun($location, $horizon, true), self::TIMESTAMP);
        return $result;
    }


    /**
     * Returns the time of sunset for this date and a given location as new date object
     * For a list of cities and correct locations use the class Zend_Date_Cities
     *
     * @param  $location array - location of sunset
     *                   ['horizon']   -> civil, nautic, astronomical, effective (default)
     *                   ['longitude'] -> longitude of location
     *                   ['latitude']  -> latitude of location
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function getSunset($location)
    {
        $horizon = $this->_checkLocation($location);
        $result = clone $this;
        $result->set($this->calcSun($location, $horizon, false), self::TIMESTAMP);
        return $result;
    }


    /**
     * Returns an array with the sunset and sunrise dates for all horizon types
     * For a list of cities and correct locations use the class Zend_Date_Cities
     *
     * @param  $location array - location of suninfo
     *                   ['horizon']   -> civil, nautic, astronomical, effective (default)
     *                   ['longitude'] -> longitude of location
     *                   ['latitude']  -> latitude of location
     * @return array - [sunset|sunrise][effective|civil|nautic|astronomic]
     * @throws Zend_Date_Exception
     */
    public function getSunInfo($location)
    {
        $suninfo = array();
        for ($i = 0; $i < 4; ++$i) {
            switch ($i) {
                case 0 :
                    $location['horizon'] = 'effective';
                    break;
                case 1 :
                    $location['horizon'] = 'civil';
                    break;
                case 2 :
                    $location['horizon'] = 'nautic';
                    break;
                case 3 :
                    $location['horizon'] = 'astronomic';
                    break;
            }
            $horizon = $this->_checkLocation($location);
            $result = clone $this;
            $result->set($this->calcSun($location, $horizon, true), self::TIMESTAMP);
            $suninfo['sunrise'][$location['horizon']] = $result;
            $result = clone $this;
            $result->set($this->calcSun($location, $horizon, false), self::TIMESTAMP);
            $suninfo['sunset'][$location['horizon']]  = $result;
        }
        return $suninfo;
    }


    /**
     * Check a given year for leap year.
     *
     * @param  integer|array|Zend_Date  $year  Year to check
     * @return boolean
     */
    public static function checkLeapYear($year)
    {
        if ($year instanceof Zend_Date) {
            $year = (int) $year->get(self::YEAR);
        }
        if (is_array($year)) {
            if (isset($year['year']) === true) {
                $year = $year['year'];
            } else {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("no year given in array");
            }
        }
        if (!is_numeric($year)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("year ($year) has to be integer for checkLeapYear()", $year);
        }

        return (bool) parent::isYearLeapYear($year);
    }


    /**
     * Returns true, if the year is a leap year.
     *
     * @return boolean
     */
    public function isLeapYear()
    {
        return self::checkLeapYear($this);
    }


    /**
     * Returns if the set date is todays date
     *
     * @return boolean
     */
    public function isToday()
    {
        $today = $this->date('Ymd', $this->_getTime());
        $day   = $this->date('Ymd', $this->getUnixTimestamp());
        return ($today == $day);
    }


    /**
     * Returns if the set date is yesterdays date
     *
     * @return boolean
     */
    public function isYesterday()
    {
        list($year, $month, $day) = explode('-', $this->date('Y-m-d', $this->_getTime()));
        // adjusts for leap days and DST changes that are timezone specific
        $yesterday = $this->date('Ymd', $this->mktime(0, 0, 0, $month, $day -1, $year));
        $day   = $this->date('Ymd', $this->getUnixTimestamp());
        return $day == $yesterday;
    }


    /**
     * Returns if the set date is tomorrows date
     *
     * @return boolean
     */
    public function isTomorrow()
    {
        list($year, $month, $day) = explode('-', $this->date('Y-m-d', $this->_getTime()));
        // adjusts for leap days and DST changes that are timezone specific
        $tomorrow = $this->date('Ymd', $this->mktime(0, 0, 0, $month, $day +1, $year));
        $day   = $this->date('Ymd', $this->getUnixTimestamp());
        return $day == $tomorrow;
    }

    /**
     * Returns the actual date as new date object
     *
     * @param  string|Zend_Locale        $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public static function now($locale = null)
    {
        return new Zend_Date(time(), self::TIMESTAMP, $locale);
    }

    /**
     * Calculate date details
     *
     * @param  string                          $calc    Calculation to make
     * @param  string|integer|array|Zend_Date  $date    Date or Part to calculate
     * @param  string                          $part    Datepart for Calculation
     * @param  string|Zend_Locale              $locale  Locale for parsing input
     * @return integer|string  new date
     * @throws Zend_Date_Exception
     */
    private function _calcdetail($calc, $date, $type, $locale)
    {
        switch($calc) {
            case 'set' :
                return $this->set($date, $type, $locale);
                break;
            case 'add' :
                return $this->add($date, $type, $locale);
                break;
            case 'sub' :
                return $this->sub($date, $type, $locale);
                break;
        }
        return $this->compare($date, $type, $locale);
    }

    /**
     * Internal calculation, returns the requested date type
     *
     * @param  string                    $calc    Calculation to make
     * @param  string|integer|Zend_Date  $value   Datevalue to calculate with, if null the actual value is taken
     * @param  string|Zend_Locale        $locale  Locale for parsing input
     * @return integer|Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    private function _calcvalue($calc, $value, $type, $parameter, $locale)
    {
        if (is_null($value)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("parameter $type must be set, null is not allowed");
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($value instanceof Zend_Date) {
            // extract value from object
            $value = $value->get($parameter, $locale);
        } else if (!is_array($value) && !is_numeric($value) && ($type != 'iso') && ($type != 'arpa')) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("invalid $type ($value) operand", $value);
        }

        $return = $this->_calcdetail($calc, $value, $parameter, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Returns only the year from the date object as new object.
     * For example: 10.May.2000 10:30:00 -> 01.Jan.2000 00:00:00
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getYear($locale = null)
    {
        return $this->copyPart(self::YEAR, $locale);
    }


    /**
     * Sets a new year
     * If the year is between 0 and 69, 2000 will be set (2000-2069)
     * If the year if between 70 and 99, 1999 will be set (1970-1999)
     * 3 or 4 digit years are set as expected. If you need to set year 0-99
     * use set() instead.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $date    Year to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setYear($year, $locale = null)
    {
        return $this->_calcvalue('set', $year, 'year', self::YEAR, $locale);
    }


    /**
     * Adds the year to the existing date object
     * If the year is between 0 and 69, 2000 will be added (2000-2069)
     * If the year if between 70 and 99, 1999 will be added (1970-1999)
     * 3 or 4 digit years are added as expected. If you need to add years from 0-99
     * use add() instead.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $date    Year to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addYear($year, $locale = null)
    {
        return $this->_calcvalue('add', $year, 'year', self::YEAR, $locale);
    }


    /**
     * Subs the year from the existing date object
     * If the year is between 0 and 69, 2000 will be subtracted (2000-2069)
     * If the year if between 70 and 99, 1999 will be subtracted (1970-1999)
     * 3 or 4 digit years are subtracted as expected. If you need to subtract years from 0-99
     * use sub() instead.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $date    Year to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subYear($year, $locale = null)
    {
        return $this->_calcvalue('sub', $year, 'year', self::YEAR, $locale);
    }


    /**
     * Compares the year with the existing date object, ignoring other date parts.
     * For example: 10.03.2000 -> 15.02.2000 -> true
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $year    Year to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareYear($year, $locale = null)
    {
        return $this->_calcvalue('cmp', $year, 'year', self::YEAR, $locale);
    }


    /**
     * Returns only the month from the date object as new object.
     * For example: 10.May.2000 10:30:00 -> 01.May.1970 00:00:00
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getMonth($locale = null)
    {
        return $this->copyPart(self::MONTH, $locale);
    }


    /**
     * Returns the calculated month
     *
     * @param  string                          $calc    Calculation to make
     * @param  string|integer|array|Zend_Date  $month   Month to calculate with, if null the actual month is taken
     * @param  string|Zend_Locale              $locale  Locale for parsing input
     * @return integer|Zend_Date  new time
     * @throws Zend_Date_Exception
     */
    private function _month($calc, $month, $locale)
    {
        if (is_null($month)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $month must be set, null is not allowed');
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($month instanceof Zend_Date) {
            // extract month from object
            $found = $month->get(self::MONTH_SHORT, $locale);
        } else {
            if (is_numeric($month)) {
                $found = $month;
            } else if (is_array($month)) {
                if (isset($month['month']) === true) {
                    $month = $month['month'];
                } else {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("no month given in array");
                }
            } else {
                $monthlist  = Zend_Locale_Data::getList($locale, 'month');
                $monthlist2 = Zend_Locale_Data::getList($locale, 'month', array('gregorian', 'format', 'abbreviated'));

                $monthlist = array_merge($monthlist, $monthlist2);
                $found = 0;
                $cnt = 0;
                foreach ($monthlist as $key => $value) {
                    if (strtoupper($value) == strtoupper($month)) {
                        $found = $key + 1;
                        break;
                    }
                    ++$cnt;
                }
                if ($found == 0) {
                    foreach ($monthlist2 as $key => $value) {
                        if (strtoupper(iconv_substr($value, 0, 1, 'UTF-8')) == strtoupper($month)) {
                            $found = $key + 1;
                            break;
                        }
                        ++$cnt;
                    }
                }
                if ($found == 0) {
                    require_once 'Zend/Date/Exception.php';
                    throw new Zend_Date_Exception("unknown month name ($month)", $month);
                }
            }
        }
        $return = $this->_calcdetail($calc, $found, self::MONTH_SHORT, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Sets a new month
     * The month can be a number or a string. Setting months lower then 0 and greater then 12
     * will result in adding or subtracting the relevant year. (12 months equal one year)
     * If a localized monthname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $month   Month to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setMonth($month, $locale = null)
    {
        return $this->_month('set', $month, $locale);
    }


    /**
     * Adds months to the existing date object.
     * The month can be a number or a string. Adding months lower then 0 and greater then 12
     * will result in adding or subtracting the relevant year. (12 months equal one year)
     * If a localized monthname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $month   Month to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addMonth($month, $locale = null)
    {
        return $this->_month('add', $month, $locale);
    }


    /**
     * Subtracts months from the existing date object.
     * The month can be a number or a string. Subtracting months lower then 0 and greater then 12
     * will result in adding or subtracting the relevant year. (12 months equal one year)
     * If a localized monthname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     *
     * @param  string|integer|array|Zend_Date  $month   Month to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subMonth($month, $locale = null)
    {
        return $this->_month('sub', $month, $locale);
    }


    /**
     * Compares the month with the existing date object, ignoring other date parts.
     * For example: 10.03.2000 -> 15.03.1950 -> true
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $month   Month to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareMonth($month, $locale = null)
    {
        return $this->_month('cmp', $month, $locale);
    }


    /**
     * Returns the day as new date object
     * Example: 20.May.1986 -> 20.Jan.1970 00:00:00
     *
     * @param $locale  string|Zend_Locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getDay($locale = null)
    {
        return $this->copyPart(self::DAY_SHORT, $locale);
    }


    /**
     * Returns the calculated day
     *
     * @param $calc    string                    Type of calculation to make
     * @param $day     string|integer|Zend_Date  Day to calculate, when null the actual day is calculated
     * @param $locale  string|Zend_Locale        Locale for parsing input
     * @return Zend_Date|integer
     */
    private function _day($calc, $day, $locale)
    {
        if (is_null($day)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $day must be set, null is not allowed');
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($day instanceof Zend_Date) {
            $day = $day->get(self::DAY_SHORT, $locale);
        }

        if (is_numeric($day)) {
            $type = self::DAY_SHORT;
        } else if (is_array($day)) {
            if (isset($day['day']) === true) {
                $day = $day['day'];
                $type = self::WEEKDAY;
            } else {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("no day given in array");
            }
        } else {
            switch (iconv_strlen($day, 'UTF-8')) {
                case 1 :
                   $type = self::WEEKDAY_NARROW;
                    break;
                case 2:
                    $type = self::WEEKDAY_NAME;
                    break;
                case 3:
                    $type = self::WEEKDAY_SHORT;
                    break;
                default:
                    $type = self::WEEKDAY;
                    break;
            }
        }
        $return = $this->_calcdetail($calc, $day, $type, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Sets a new day
     * The day can be a number or a string. Setting days lower then 0 or greater than the number of this months days
     * will result in adding or subtracting the relevant month.
     * If a localized dayname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     * Example: setDay('Montag', 'de_AT'); will set the monday of this week as day.
     *
     * @param  string|integer|array|Zend_Date  $month   Day to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setDay($day, $locale = null)
    {
        return $this->_day('set', $day, $locale);
    }


    /**
     * Adds days to the existing date object.
     * The day can be a number or a string. Adding days lower then 0 or greater than the number of this months days
     * will result in adding or subtracting the relevant month.
     * If a localized dayname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     * Example: addDay('Montag', 'de_AT'); will add the number of days until the next monday
     *
     * @param  string|integer|array|Zend_Date  $month   Day to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addDay($day, $locale = null)
    {
        return $this->_day('add', $day, $locale);
    }


    /**
     * Subtracts days from the existing date object.
     * The day can be a number or a string. Subtracting days lower then 0 or greater than the number of this months days
     * will result in adding or subtracting the relevant month.
     * If a localized dayname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     * Example: subDay('Montag', 'de_AT'); will sub the number of days until the previous monday
     *
     * @param  string|integer|array|Zend_Date  $month   Day to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subDay($day, $locale = null)
    {
        return $this->_day('sub', $day, $locale);
    }


    /**
     * Compares the day with the existing date object, ignoring other date parts.
     * For example: 'Monday', 'en' -> 08.Jan.2007 -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $day     Day to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareDay($day, $locale = null)
    {
        return $this->_day('cmp', $day, $locale);
    }


    /**
     * Returns the weekday as new date object
     * Weekday is always from 1-7
     * Example: 09-Jan-2007 -> 2 = Tuesday -> 02-Jan-1970 (when 02.01.1970 is also Tuesday)
     *
     * @param $locale  string|Zend_Locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getWeekday($locale = null)
    {
        return $this->copyPart(self::WEEKDAY, $locale);
    }


    /**
     * Returns the calculated weekday
     *
     * @param  $calc     string                          Type of calculation to make
     * @param  $weekday  string|integer|array|Zend_Date  Weekday to calculate, when null the actual weekday is calculated
     * @param  $locale   string|Zend_Locale              Locale for parsing input
     * @return Zend_Date|integer
     * @throws Zend_Date_Exception
     */
    private function _weekday($calc, $weekday, $locale)
    {
        if (is_null($weekday)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('parameter $weekday must be set, null is not allowed');
        }

        if ($locale === null) {
            $locale = $this->getLocale();
        }

        if ($weekday instanceof Zend_Date) {
            $weekday = $weekday->get(self::WEEKDAY_8601, $locale);
        }

        if (is_numeric($weekday)) {
            $type = self::WEEKDAY_8601;
        } else if (is_array($weekday)) {
            if (isset($weekday['weekday']) === true) {
                $weekday = $weekday['weekday'];
                $type = self::WEEKDAY;
            } else {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("no weekday given in array");
            }
        } else {
            switch(iconv_strlen($weekday, 'UTF-8')) {
                case 1:
                   $type = self::WEEKDAY_NARROW;
                    break;
                case 2:
                    $type = self::WEEKDAY_NAME;
                    break;
                case 3:
                    $type = self::WEEKDAY_SHORT;
                    break;
                default:
                    $type = self::WEEKDAY;
                    break;
            }
        }
        $return = $this->_calcdetail($calc, $weekday, $type, $locale);
        if ($calc != 'cmp') {
            return $this;
        }
        return $return;
    }


    /**
     * Sets a new weekday
     * The weekday can be a number or a string. If a localized weekday name is given,
     * then it will be parsed as a date in $locale (defaults to the same locale as $this).
     * Returned is the new date object.
     * Example: setWeekday(3); will set the wednesday of this week as day.
     *
     * @param  string|integer|array|Zend_Date  $month   Weekday to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setWeekday($weekday, $locale = null)
    {
        return $this->_weekday('set', $weekday, $locale);
    }


    /**
     * Adds weekdays to the existing date object.
     * The weekday can be a number or a string.
     * If a localized dayname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     * Example: addWeekday(3); will add the difference of days from the begining of the month until
     * wednesday.
     *
     * @param  string|integer|array|Zend_Date  $month   Weekday to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addWeekday($weekday, $locale = null)
    {
        return $this->_weekday('add', $weekday, $locale);
    }


    /**
     * Subtracts weekdays from the existing date object.
     * The weekday can be a number or a string.
     * If a localized dayname is given it will be parsed with the default locale or the optional
     * set locale.
     * Returned is the new date object
     * Example: subWeekday(3); will subtract the difference of days from the begining of the month until
     * wednesday.
     *
     * @param  string|integer|array|Zend_Date  $month   Weekday to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subWeekday($weekday, $locale = null)
    {
        return $this->_weekday('sub', $weekday, $locale);
    }


    /**
     * Compares the weekday with the existing date object, ignoring other date parts.
     * For example: 'Monday', 'en' -> 08.Jan.2007 -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $weekday  Weekday to compare
     * @param  string|Zend_Locale              $locale   OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareWeekday($weekday, $locale = null)
    {
        return $this->_weekday('cmp', $weekday, $locale);
    }


    /**
     * Returns the day of year as new date object
     * Example: 02.Feb.1986 10:00:00 -> 02.Feb.1970 00:00:00
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getDayOfYear($locale = null)
    {
        return $this->copyPart(self::DAY_OF_YEAR, $locale);
    }


    /**
     * Sets a new day of year
     * The day of year is always a number.
     * Returned is the new date object
     * Example: 04.May.2004 -> setDayOfYear(10) -> 10.Jan.2004
     *
     * @param  string|integer|array|Zend_Date  $day     Day of Year to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setDayOfYear($day, $locale = null)
    {
        return $this->_calcvalue('set', $day, 'day of year', self::DAY_OF_YEAR, $locale);
    }


    /**
     * Adds a day of year to the existing date object.
     * The day of year is always a number.
     * Returned is the new date object
     * Example: addDayOfYear(10); will add 10 days to the existing date object.
     *
     * @param  string|integer|array|Zend_Date  $day     Day of Year to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addDayOfYear($day, $locale = null)
    {
        return $this->_calcvalue('add', $day, 'day of year', self::DAY_OF_YEAR, $locale);
    }


    /**
     * Subtracts a day of year from the existing date object.
     * The day of year is always a number.
     * Returned is the new date object
     * Example: subDayOfYear(10); will subtract 10 days from the existing date object.
     *
     * @param  string|integer|array|Zend_Date  $day     Day of Year to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subDayOfYear($day, $locale = null)
    {
        return $this->_calcvalue('sub', $day, 'day of year', self::DAY_OF_YEAR, $locale);
    }


    /**
     * Compares the day of year with the existing date object.
     * For example: compareDayOfYear(33) -> 02.Feb.2007 -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $day     Day of Year to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareDayOfYear($day, $locale = null)
    {
        return $this->_calcvalue('cmp', $day, 'day of year', self::DAY_OF_YEAR, $locale);
    }


    /**
     * Returns the hour as new date object
     * Example: 02.Feb.1986 10:30:25 -> 01.Jan.1970 10:00:00
     *
     * @param $locale  string|Zend_Locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getHour($locale = null)
    {
        return $this->copyPart(self::HOUR, $locale);
    }


    /**
     * Sets a new hour
     * The hour is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> setHour(7); -> 04.May.1993 07:07:25
     *
     * @param  string|integer|array|Zend_Date  $hour    Hour to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setHour($hour, $locale = null)
    {
        return $this->_calcvalue('set', $hour, 'hour', self::HOUR_SHORT, $locale);
    }


    /**
     * Adds hours to the existing date object.
     * The hour is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> addHour(12); -> 05.May.1993 01:07:25
     *
     * @param  string|integer|array|Zend_Date  $hour    Hour to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addHour($hour, $locale = null)
    {
        return $this->_calcvalue('add', $hour, 'hour', self::HOUR_SHORT, $locale);
    }


    /**
     * Subtracts hours from the existing date object.
     * The hour is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> subHour(6); -> 05.May.1993 07:07:25
     *
     * @param  string|integer|array|Zend_Date  $hour    Hour to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subHour($hour, $locale = null)
    {
        return $this->_calcvalue('sub', $hour, 'hour', self::HOUR_SHORT, $locale);
    }


    /**
     * Compares the hour with the existing date object.
     * For example: 10:30:25 -> compareHour(10) -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $hour    Hour to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareHour($hour, $locale = null)
    {
        return $this->_calcvalue('cmp', $hour, 'hour', self::HOUR_SHORT, $locale);
    }


    /**
     * Returns the minute as new date object
     * Example: 02.Feb.1986 10:30:25 -> 01.Jan.1970 00:30:00
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getMinute($locale = null)
    {
        return $this->copyPart(self::MINUTE, $locale);
    }


    /**
     * Sets a new minute
     * The minute is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> setMinute(29); -> 04.May.1993 13:29:25
     *
     * @param  string|integer|array|Zend_Date  $minute  Minute to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setMinute($minute, $locale = null)
    {
        return $this->_calcvalue('set', $minute, 'minute', self::MINUTE_SHORT, $locale);
    }


    /**
     * Adds minutes to the existing date object.
     * The minute is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> addMinute(65); -> 04.May.1993 13:12:25
     *
     * @param  string|integer|array|Zend_Date  $minute  Minute to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addMinute($minute, $locale = null)
    {
        return $this->_calcvalue('add', $minute, 'minute', self::MINUTE_SHORT, $locale);
    }


    /**
     * Subtracts minutes from the existing date object.
     * The minute is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> subMinute(9); -> 04.May.1993 12:58:25
     *
     * @param  string|integer|array|Zend_Date  $minute  Minute to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subMinute($minute, $locale = null)
    {
        return $this->_calcvalue('sub', $minute, 'minute', self::MINUTE_SHORT, $locale);
    }


    /**
     * Compares the minute with the existing date object.
     * For example: 10:30:25 -> compareMinute(30) -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date  $minute  Hour to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareMinute($minute, $locale = null)
    {
        return $this->_calcvalue('cmp', $minute, 'minute', self::MINUTE_SHORT, $locale);
    }


    /**
     * Returns the second as new date object
     * Example: 02.Feb.1986 10:30:25 -> 01.Jan.1970 00:00:25
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getSecond($locale = null)
    {
        return $this->copyPart(self::SECOND, $locale);
    }


    /**
     * Sets new seconds to the existing date object.
     * The second is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> setSecond(100); -> 04.May.1993 13:08:40
     *
     * @param  string|integer|array|Zend_Date $second Second to set
     * @param  string|Zend_Locale             $locale (Optional) Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function setSecond($second, $locale = null)
    {
        return $this->_calcvalue('set', $second, 'second', self::SECOND_SHORT, $locale);
    }


    /**
     * Adds seconds to the existing date object.
     * The second is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> addSecond(65); -> 04.May.1993 13:08:30
     *
     * @param  string|integer|array|Zend_Date $second Second to add
     * @param  string|Zend_Locale             $locale (Optional) Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function addSecond($second, $locale = null)
    {
        return $this->_calcvalue('add', $second, 'second', self::SECOND_SHORT, $locale);
    }


    /**
     * Subtracts seconds from the existing date object.
     * The second is always a number.
     * Returned is the new date object
     * Example: 04.May.1993 13:07:25 -> subSecond(10); -> 04.May.1993 13:07:15
     *
     * @param  string|integer|array|Zend_Date $second Second to sub
     * @param  string|Zend_Locale             $locale (Optional) Locale for parsing input
     * @return Zend_Date  new date
     * @throws Zend_Date_Exception
     */
    public function subSecond($second, $locale = null)
    {
        return $this->_calcvalue('sub', $second, 'second', self::SECOND_SHORT, $locale);
    }


    /**
     * Compares the second with the existing date object.
     * For example: 10:30:25 -> compareSecond(25) -> 0
     * Returns if equal, earlier or later
     *
     * @param  string|integer|array|Zend_Date $second Second to compare
     * @param  string|Zend_Locale             $locale (Optional) Locale for parsing input
     * @return integer  0 = equal, 1 = later, -1 = earlier
     * @throws Zend_Date_Exception
     */
    public function compareSecond($second, $locale = null)
    {
        return $this->_calcvalue('cmp', $second, 'second', self::SECOND_SHORT, $locale);
    }


    /**
     * Returns the precision for fractional seconds
     *
     * @return integer
     */
    public function getFractionalPrecision()
    {
        return $this->_precision;
    }


    /**
     * Sets a new precision for fractional seconds
     *
     * @param  integer $precision Precision for the fractional datepart 3 = milliseconds
     * @throws Zend_Date_Exception
     * @return void
     */
    public function setFractionalPrecision($precision)
    {
        if (!intval($precision) or ($precision < 0) or ($precision > 9)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("precision ($precision) must be a positive integer less than 10", $precision);
        }
        $this->_precision = (int) $precision;
    }


    /**
     * Returns the milliseconds of the date object
     *
     * @return integer
     */
    public function getMilliSecond()
    {
        return $this->_fractional;
    }


    /**
     * Sets new milliseconds for the date object
     * Example: setMilliSecond(550, 2) -> equals +5 Sec +50 MilliSec
     *
     * @param  integer|Zend_Date $milli     (Optional) Millisecond to set, when null the actual millisecond is set
     * @param  integer           $precision (Optional) Fraction precision of the given milliseconds
     * @return integer|string
     */
    public function setMilliSecond($milli = null, $precision = null)
    {
        if ($milli === null) {
            list($milli, $time) = explode(" ", microtime());
            $milli = intval($milli);
            $precision = 6;
        } else if (!is_numeric($milli)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("invalid milli second ($milli) operand", $milli);
        }

        if ($precision === null) {
            $precision = $this->_precision;
        } else if (!is_int($precision) || $precision < 1 || $precision > 9) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("precision ($precision) must be a positive integer less than 10", $precision);
        }

        $this->_fractional = 0;
        $this->addMilliSecond($milli, $precision);
        return $this->_fractional;
    }


    /**
     * Adds milliseconds to the date object
     *
     * @param  integer|Zend_Date $milli     (Optional) Millisecond to add, when null the actual millisecond is added
     * @param  integer           $precision (Optional) Fractional precision for the given milliseconds
     * @return integer|string
     */
    public function addMilliSecond($milli = null, $precision = null)
    {
        if ($milli === null) {
            list($milli, $time) = explode(" ", microtime());
            $milli = intval($milli);
        } else if (!is_numeric($milli)) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("invalid milli second ($milli) operand", $milli);
        }

        if ($precision === null) {
            $precision = $this->_precision;
        } else if (!is_int($precision) || $precision < 1 || $precision > 9) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("precision ($precision) must be a positive integer less than 10", $precision);
        }

        if ($precision != $this->_precision) {
            if ($precision > $this->_precision) {
                $diff = $precision - $this->_precision;
                $milli = (int) ($milli / (10 * $diff));
            } else {
                $diff = $this->_precision - $precision;
                $milli = (int) ($milli * (10 * $diff));
            }
        }

        $this->_fractional += $milli;
        // Add/sub milliseconds + add/sub seconds

        $max = pow(10, $this->_precision);
        // Milli includes seconds
        if ($this->_fractional >= $max) {
            while ($this->_fractional >= $max) {
                $this->addSecond(1);
                $this->_fractional -= $max;
            }
        }

        if ($this->_fractional < 0) {
            while ($this->_fractional < 0) {
                $this->subSecond(1);
                $this->_fractional += $max;
            }
        }

        return $this->_fractional;
    }


    /**
     * Subtracts a millisecond
     *
     * @param  integer|Zend_Date $milli     (Optional) Millisecond to sub, when null the actual millisecond is subtracted
     * @param  integer           $precision (Optional) Fractional precision for the given milliseconds
     * @return integer
     */
    public function subMilliSecond($milli = null, $precision = null)
    {
        return $this->addMilliSecond(0 - $milli);
    }

    /**
     * Compares only the millisecond part, returning the difference
     *
     * @param  integer|Zend_Date  $milli  OPTIONAL Millisecond to compare, when null the actual millisecond is compared
     * @param  integer            $precision  OPTIONAL Fractional precision for the given milliseconds
     * @return integer
     */
    public function compareMilliSecond($milli = null, $precision = null)
    {
        if ($milli === null) {
            list($milli, $time) = explode(" ", microtime());
            $milli = intval($milli);
        } else if (is_numeric($milli) === false) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("invalid milli second ($milli) operand", $milli);
        }

        if ($precision === null) {
            $precision = $this->_precision;
        } else if (!is_int($precision) || $precision < 1 || $precision > 9) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception("precision ($precision) must be a positive integer less than 10", $precision);
        }

        if ($precision === 0) {
            require_once 'Zend/Date/Exception.php';
            throw new Zend_Date_Exception('precision is 0');
        }

        if ($precision != $this->_precision) {
            if ($precision > $this->_precision) {
                $diff = $precision - $this->_precision;
                $milli = (int) ($milli / (10 * $diff));
            } else {
                $diff = $this->_precision - $precision;
                $milli = (int) ($milli * (10 * $diff));
            }
        }

        $comp = $this->_fractional - $milli;
        if ($comp < 0) {
            return -1;
        } else if ($comp > 0) {
            return 1;
        }
        return 0;
    }

    /**
     * Returns the week as new date object using monday as begining of the week
     * Example: 12.Jan.2007 -> 08.Jan.1970 00:00:00
     *
     * @param $locale  string|Zend_Locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     */
    public function getWeek($locale = null)
    {
        return $this->copyPart(self::WEEK, $locale);
    }

    /**
     * Sets a new week. The week is always a number. The day of week is not changed.
     * Returned is the new date object
     * Example: 09.Jan.2007 13:07:25 -> setWeek(1); -> 02.Jan.2007 13:07:25
     *
     * @param  string|integer|array|Zend_Date  $week    Week to set
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function setWeek($week, $locale = null)
    {
        return $this->_calcvalue('set', $week, 'week', self::WEEK, $locale);
    }

    /**
     * Adds a week. The week is always a number. The day of week is not changed.
     * Returned is the new date object
     * Example: 09.Jan.2007 13:07:25 -> addWeek(1); -> 16.Jan.2007 13:07:25
     *
     * @param  string|integer|array|Zend_Date  $week    Week to add
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function addWeek($week, $locale = null)
    {
        return $this->_calcvalue('add', $week, 'week', self::WEEK, $locale);
    }

    /**
     * Subtracts a week. The week is always a number. The day of week is not changed.
     * Returned is the new date object
     * Example: 09.Jan.2007 13:07:25 -> subWeek(1); -> 02.Jan.2007 13:07:25
     *
     * @param  string|integer|array|Zend_Date  $week    Week to sub
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return Zend_Date
     * @throws Zend_Date_Exception
     */
    public function subWeek($week, $locale = null)
    {
        return $this->_calcvalue('sub', $week, 'week', self::WEEK, $locale);
    }

    /**
     * Compares only the week part, returning the difference
     * Returned is the new date object
     * Returns if equal, earlier or later
     * Example: 09.Jan.2007 13:07:25 -> compareWeek(2); -> 0
     *
     * @param  string|integer|array|Zend_Date  $week    Week to compare
     * @param  string|Zend_Locale              $locale  OPTIONAL Locale for parsing input
     * @return integer 0 = equal, 1 = later, -1 = earlier
     */
    public function compareWeek($week, $locale = null)
    {
        return $this->_calcvalue('cmp', $week, 'week', self::WEEK, $locale);
    }

    /**
     * Sets a new standard locale for the date object.
     * This locale will be used for all functions
     * Returned is the really set locale.
     * Example: 'de_XX' will be set to 'de' because 'de_XX' does not exist
     * 'xx_YY' will be set to 'root' because 'xx' does not exist
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for parsing input
     * @throws Zend_Date_Exception When the given locale does not exist
     * @return Zend_Date Provides fluent interface
     */
    public function setLocale($locale = null)
    {
        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("Given locale ({$locale}) does not exist", (string) $locale);
            }

            $locale = new Zend_Locale($locale);
        }

        $this->_locale = (string) $locale;
        return $this;
    }

    /**
     * Returns the actual set locale
     *
     * @return string
     */
    public function getLocale()
    {
        return $this->_locale;
    }

    /**
     * Checks if the given date is a real date or datepart.
     * Returns false if a expected datepart is missing or a datepart exceeds its possible border.
     * But the check will only be done for the expected dateparts which are given by format.
     * If no format is given the standard dateformat for the actual locale is used.
     * f.e. 30.February.2007 will return false if format is 'dd.MMMM.YYYY'
     *
     * @param  string             $date   Date to parse for correctness
     * @param  string             $format (Optional) Format for parsing the date string
     * @param  string|Zend_Locale $locale (Optional) Locale for parsing date parts
     * @return boolean            True when all date parts are correct
     */
    public static function isDate($date, $format = null, $locale = null)
    {
        if (!is_string($date) and !is_numeric($date) and !($date instanceof Zend_Date)) {
            return false;
        }

        if (($format !== null) and (Zend_Locale::isLocale($format, null, false))) {
            $locale = $format;
            $format = null;
        }

        if (empty($locale)) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Locale') === true) {
                $locale = Zend_Registry::get('Zend_Locale');
            }
        }

        if (!Zend_Locale::isLocale($locale, true, false)) {
            if (!Zend_Locale::isLocale($locale, false, false)) {
                require_once 'Zend/Date/Exception.php';
                throw new Zend_Date_Exception("Given locale ({$locale}) does not exist", (string) $locale);
            }

            $locale = new Zend_Locale($locale);
        }

        $locale = (string) $locale;
        if ($format === null) {
            $format = Zend_Locale_Format::getDateFormat($locale);
        } else if (self::$_options['format_type'] == 'php') {
            $format = Zend_Locale_Format::convertPhpToIsoFormat($format);
        }

        try {
            $parsed = Zend_Locale_Format::getDate($date, array('locale' => $locale,
                                                  'date_format' => $format, 'format_type' => 'iso',
                                                  'fix_date' => false));

            if (isset($parsed['year']) and ((strpos(strtoupper($format), 'YY') !== false) and
                (strpos(strtoupper($format), 'YYYY') === false))) {
                $parsed['year'] = self::getFullYear($parsed['year']);
            }
        } catch (Zend_Locale_Exception $e) {
            // Date can not be parsed
            return false;
        }

        if (((strpos($format, 'Y') !== false) or (strpos($format, 'y') !== false)) and
            (!isset($parsed['year']))) {
            // Year expected but not found
            return false;
        }

        if ((strpos($format, 'M') !== false) and (!isset($parsed['month']))) {
            // Month expected but not found
            return false;
        }

        if ((strpos($format, 'd') !== false) and (!isset($parsed['day']))) {
            // Day expected but not found
            return false;
        }

        if (((strpos($format, 'H') !== false) or (strpos($format, 'h') !== false)) and
            (!isset($parsed['hour']))) {
            // Hour expected but not found
            return false;
        }

        if ((strpos($format, 'm') !== false) and (!isset($parsed['minute']))) {
            // Minute expected but not found
            return false;
        }

        if ((strpos($format, 's') !== false) and (!isset($parsed['second']))) {
            // Second expected  but not found
            return false;
        }

        // Set not given dateparts
        if (isset($parsed['hour']) === false) {
            $parsed['hour'] = 0;
        }

        if (isset($parsed['minute']) === false) {
            $parsed['minute'] = 0;
        }

        if (isset($parsed['second']) === false) {
            $parsed['second'] = 0;
        }

        if (isset($parsed['month']) === false) {
            $parsed['month'] = 1;
        }

        if (isset($parsed['day']) === false) {
            $parsed['day'] = 1;
        }

        if (isset($parsed['year']) === false) {
            $parsed['year'] = 1970;
        }

        $date      = new self($parsed, null, $locale);
        $timestamp = $date->mktime($parsed['hour'], $parsed['minute'], $parsed['second'],
                                   $parsed['month'], $parsed['day'], $parsed['year']);
        if ($parsed['year'] != $date->date('Y', $timestamp)) {
            // Given year differs from parsed year
            return false;
        }

        if ($parsed['month'] != $date->date('n', $timestamp)) {
            // Given month differs from parsed month
            return false;
        }

        if ($parsed['day'] != $date->date('j', $timestamp)) {
            // Given day differs from parsed day
            return false;
        }

        if ($parsed['hour'] != $date->date('G', $timestamp)) {
            // Given hour differs from parsed hour
            return false;
        }

        if ($parsed['minute'] != $date->date('i', $timestamp)) {
            // Given minute differs from parsed minute
            return false;
        }

        if ($parsed['second'] != $date->date('s', $timestamp)) {
            // Given second differs from parsed second
            return false;
        }

        return true;
    }

}
PKpG[Da���Acl.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Acl.php 9417 2008-05-08 16:28:31Z darby $
 */


/**
 * @see Zend_Acl_Resource_Interface
 */
require_once 'Zend/Acl/Resource/Interface.php';


/**
 * @see Zend_Acl_Role_Registry
 */
require_once 'Zend/Acl/Role/Registry.php';


/**
 * @see Zend_Acl_Assert_Interface
 */
require_once 'Zend/Acl/Assert/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl
{
    /**
     * Rule type: allow
     */
    const TYPE_ALLOW = 'TYPE_ALLOW';

    /**
     * Rule type: deny
     */
    const TYPE_DENY  = 'TYPE_DENY';

    /**
     * Rule operation: add
     */
    const OP_ADD = 'OP_ADD';

    /**
     * Rule operation: remove
     */
    const OP_REMOVE = 'OP_REMOVE';

    /**
     * Role registry
     *
     * @var Zend_Acl_Role_Registry
     */
    protected $_roleRegistry = null;

    /**
     * Resource tree
     *
     * @var array
     */
    protected $_resources = array();

    /**
     * ACL rules; whitelist (deny everything to all) by default
     *
     * @var array
     */
    protected $_rules = array(
        'allResources' => array(
            'allRoles' => array(
                'allPrivileges' => array(
                    'type'   => self::TYPE_DENY,
                    'assert' => null
                    ),
                'byPrivilegeId' => array()
                ),
            'byRoleId' => array()
            ),
        'byResourceId' => array()
        );

    /**
     * Adds a Role having an identifier unique to the registry
     *
     * The $parents parameter may be a reference to, or the string identifier for,
     * a Role existing in the registry, or $parents may be passed as an array of
     * these - mixing string identifiers and objects is ok - to indicate the Roles
     * from which the newly added Role will directly inherit.
     *
     * In order to resolve potential ambiguities with conflicting rules inherited
     * from different parents, the most recently added parent takes precedence over
     * parents that were previously added. In other words, the first parent added
     * will have the least priority, and the last parent added will have the
     * highest priority.
     *
     * @param  Zend_Acl_Role_Interface              $role
     * @param  Zend_Acl_Role_Interface|string|array $parents
     * @uses   Zend_Acl_Role_Registry::add()
     * @return Zend_Acl Provides a fluent interface
     */
    public function addRole(Zend_Acl_Role_Interface $role, $parents = null)
    {
        $this->_getRoleRegistry()->add($role, $parents);

        return $this;
    }

    /**
     * Returns the identified Role
     *
     * The $role parameter can either be a Role or Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @uses   Zend_Acl_Role_Registry::get()
     * @return Zend_Acl_Role_Interface
     */
    public function getRole($role)
    {
        return $this->_getRoleRegistry()->get($role);
    }

    /**
     * Returns true if and only if the Role exists in the registry
     *
     * The $role parameter can either be a Role or a Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @uses   Zend_Acl_Role_Registry::has()
     * @return boolean
     */
    public function hasRole($role)
    {
        return $this->_getRoleRegistry()->has($role);
    }

    /**
     * Returns true if and only if $role inherits from $inherit
     *
     * Both parameters may be either a Role or a Role identifier. If
     * $onlyParents is true, then $role must inherit directly from
     * $inherit in order to return true. By default, this method looks
     * through the entire inheritance DAG to determine whether $role
     * inherits from $inherit through its ancestor Roles.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @param  Zend_Acl_Role_Interface|string $inherit
     * @param  boolean                        $onlyParents
     * @uses   Zend_Acl_Role_Registry::inherits()
     * @return boolean
     */
    public function inheritsRole($role, $inherit, $onlyParents = false)
    {
        return $this->_getRoleRegistry()->inherits($role, $inherit, $onlyParents);
    }

    /**
     * Removes the Role from the registry
     *
     * The $role parameter can either be a Role or a Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @uses   Zend_Acl_Role_Registry::remove()
     * @return Zend_Acl Provides a fluent interface
     */
    public function removeRole($role)
    {
        $this->_getRoleRegistry()->remove($role);

        if ($role instanceof Zend_Acl_Role_Interface) {
            $roleId = $role->getRoleId();
        } else {
            $roleId = $role;
        }

        foreach ($this->_rules['allResources']['byRoleId'] as $roleIdCurrent => $rules) {
            if ($roleId === $roleIdCurrent) {
                unset($this->_rules['allResources']['byRoleId'][$roleIdCurrent]);
            }
        }
        foreach ($this->_rules['byResourceId'] as $resourceIdCurrent => $visitor) {
            foreach ($visitor['byRoleId'] as $roleIdCurrent => $rules) {
                if ($roleId === $roleIdCurrent) {
                    unset($this->_rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]);
                }
            }
        }

        return $this;
    }

    /**
     * Removes all Roles from the registry
     *
     * @uses   Zend_Acl_Role_Registry::removeAll()
     * @return Zend_Acl Provides a fluent interface
     */
    public function removeRoleAll()
    {
        $this->_getRoleRegistry()->removeAll();

        foreach ($this->_rules['allResources']['byRoleId'] as $roleIdCurrent => $rules) {
            unset($this->_rules['allResources']['byRoleId'][$roleIdCurrent]);
        }
        foreach ($this->_rules['byResourceId'] as $resourceIdCurrent => $visitor) {
            foreach ($visitor['byRoleId'] as $roleIdCurrent => $rules) {
                unset($this->_rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]);
            }
        }

        return $this;
    }

    /**
     * Adds a Resource having an identifier unique to the ACL
     *
     * The $parent parameter may be a reference to, or the string identifier for,
     * the existing Resource from which the newly added Resource will inherit.
     *
     * @param  Zend_Acl_Resource_Interface        $resource
     * @param  Zend_Acl_Resource_Interface|string $parent
     * @throws Zend_Acl_Exception
     * @return Zend_Acl Provides a fluent interface
     */
    public function add(Zend_Acl_Resource_Interface $resource, $parent = null)
    {
        $resourceId = $resource->getResourceId();

        if ($this->has($resourceId)) {
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception("Resource id '$resourceId' already exists in the ACL");
        }

        $resourceParent = null;

        if (null !== $parent) {
            try {
                if ($parent instanceof Zend_Acl_Resource_Interface) {
                    $resourceParentId = $parent->getResourceId();
                } else {
                    $resourceParentId = $parent;
                }
                $resourceParent = $this->get($resourceParentId);
            } catch (Zend_Acl_Exception $e) {
                throw new Zend_Acl_Exception("Parent Resource id '$resourceParentId' does not exist");
            }
            $this->_resources[$resourceParentId]['children'][$resourceId] = $resource;
        }

        $this->_resources[$resourceId] = array(
            'instance' => $resource,
            'parent'   => $resourceParent,
            'children' => array()
            );

        return $this;
    }

    /**
     * Returns the identified Resource
     *
     * The $resource parameter can either be a Resource or a Resource identifier.
     *
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @throws Zend_Acl_Exception
     * @return Zend_Acl_Resource_Interface
     */
    public function get($resource)
    {
        if ($resource instanceof Zend_Acl_Resource_Interface) {
            $resourceId = $resource->getResourceId();
        } else {
            $resourceId = (string) $resource;
        }

        if (!$this->has($resource)) {
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception("Resource '$resourceId' not found");
        }

        return $this->_resources[$resourceId]['instance'];
    }

    /**
     * Returns true if and only if the Resource exists in the ACL
     *
     * The $resource parameter can either be a Resource or a Resource identifier.
     *
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @return boolean
     */
    public function has($resource)
    {
        if ($resource instanceof Zend_Acl_Resource_Interface) {
            $resourceId = $resource->getResourceId();
        } else {
            $resourceId = (string) $resource;
        }

        return isset($this->_resources[$resourceId]);
    }

    /**
     * Returns true if and only if $resource inherits from $inherit
     *
     * Both parameters may be either a Resource or a Resource identifier. If
     * $onlyParent is true, then $resource must inherit directly from
     * $inherit in order to return true. By default, this method looks
     * through the entire inheritance tree to determine whether $resource
     * inherits from $inherit through its ancestor Resources.
     *
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @param  Zend_Acl_Resource_Interface|string $inherit
     * @param  boolean                            $onlyParent
     * @throws Zend_Acl_Resource_Registry_Exception
     * @return boolean
     */
    public function inherits($resource, $inherit, $onlyParent = false)
    {
        try {
            $resourceId     = $this->get($resource)->getResourceId();
            $inheritId = $this->get($inherit)->getResourceId();
        } catch (Zend_Acl_Exception $e) {
            throw $e;
        }

        if (null !== $this->_resources[$resourceId]['parent']) {
            $parentId = $this->_resources[$resourceId]['parent']->getResourceId();
            if ($inheritId === $parentId) {
                return true;
            } else if ($onlyParent) {
                return false;
            }
        } else {
            return false;
        }

        while (null !== $this->_resources[$parentId]['parent']) {
            $parentId = $this->_resources[$parentId]['parent']->getResourceId();
            if ($inheritId === $parentId) {
                return true;
            }
        }

        return false;
    }

    /**
     * Removes a Resource and all of its children
     *
     * The $resource parameter can either be a Resource or a Resource identifier.
     *
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @throws Zend_Acl_Exception
     * @return Zend_Acl Provides a fluent interface
     */
    public function remove($resource)
    {
        try {
            $resourceId = $this->get($resource)->getResourceId();
        } catch (Zend_Acl_Exception $e) {
            throw $e;
        }

        $resourcesRemoved = array($resourceId);
        if (null !== ($resourceParent = $this->_resources[$resourceId]['parent'])) {
            unset($this->_resources[$resourceParent->getResourceId()]['children'][$resourceId]);
        }
        foreach ($this->_resources[$resourceId]['children'] as $childId => $child) {
            $this->remove($childId);
            $resourcesRemoved[] = $childId;
        }

        foreach ($resourcesRemoved as $resourceIdRemoved) {
            foreach ($this->_rules['byResourceId'] as $resourceIdCurrent => $rules) {
                if ($resourceIdRemoved === $resourceIdCurrent) {
                    unset($this->_rules['byResourceId'][$resourceIdCurrent]);
                }
            }
        }

        unset($this->_resources[$resourceId]);

        return $this;
    }

    /**
     * Removes all Resources
     *
     * @return Zend_Acl Provides a fluent interface
     */
    public function removeAll()
    {
        foreach ($this->_resources as $resourceId => $resource) {
            foreach ($this->_rules['byResourceId'] as $resourceIdCurrent => $rules) {
                if ($resourceId === $resourceIdCurrent) {
                    unset($this->_rules['byResourceId'][$resourceIdCurrent]);
                }
            }
        }

        $this->_resources = array();

        return $this;
    }

    /**
     * Adds an "allow" rule to the ACL
     *
     * @param  Zend_Acl_Role_Interface|string|array     $roles
     * @param  Zend_Acl_Resource_Interface|string|array $resources
     * @param  string|array                             $privileges
     * @param  Zend_Acl_Assert_Interface                $assert
     * @uses   Zend_Acl::setRule()
     * @return Zend_Acl Provides a fluent interface
     */
    public function allow($roles = null, $resources = null, $privileges = null, Zend_Acl_Assert_Interface $assert = null)
    {
        return $this->setRule(self::OP_ADD, self::TYPE_ALLOW, $roles, $resources, $privileges, $assert);
    }

    /**
     * Adds a "deny" rule to the ACL
     *
     * @param  Zend_Acl_Role_Interface|string|array     $roles
     * @param  Zend_Acl_Resource_Interface|string|array $resources
     * @param  string|array                             $privileges
     * @param  Zend_Acl_Assert_Interface                $assert
     * @uses   Zend_Acl::setRule()
     * @return Zend_Acl Provides a fluent interface
     */
    public function deny($roles = null, $resources = null, $privileges = null, Zend_Acl_Assert_Interface $assert = null)
    {
        return $this->setRule(self::OP_ADD, self::TYPE_DENY, $roles, $resources, $privileges, $assert);
    }

    /**
     * Removes "allow" permissions from the ACL
     *
     * @param  Zend_Acl_Role_Interface|string|array     $roles
     * @param  Zend_Acl_Resource_Interface|string|array $resources
     * @param  string|array                             $privileges
     * @uses   Zend_Acl::setRule()
     * @return Zend_Acl Provides a fluent interface
     */
    public function removeAllow($roles = null, $resources = null, $privileges = null)
    {
        return $this->setRule(self::OP_REMOVE, self::TYPE_ALLOW, $roles, $resources, $privileges);
    }

    /**
     * Removes "deny" restrictions from the ACL
     *
     * @param  Zend_Acl_Role_Interface|string|array     $roles
     * @param  Zend_Acl_Resource_Interface|string|array $resources
     * @param  string|array                             $privileges
     * @uses   Zend_Acl::setRule()
     * @return Zend_Acl Provides a fluent interface
     */
    public function removeDeny($roles = null, $resources = null, $privileges = null)
    {
        return $this->setRule(self::OP_REMOVE, self::TYPE_DENY, $roles, $resources, $privileges);
    }

    /**
     * Performs operations on ACL rules
     *
     * The $operation parameter may be either OP_ADD or OP_REMOVE, depending on whether the
     * user wants to add or remove a rule, respectively:
     *
     * OP_ADD specifics:
     *
     *      A rule is added that would allow one or more Roles access to [certain $privileges
     *      upon] the specified Resource(s).
     *
     * OP_REMOVE specifics:
     *
     *      The rule is removed only in the context of the given Roles, Resources, and privileges.
     *      Existing rules to which the remove operation does not apply would remain in the
     *      ACL.
     *
     * The $type parameter may be either TYPE_ALLOW or TYPE_DENY, depending on whether the
     * rule is intended to allow or deny permission, respectively.
     *
     * The $roles and $resources parameters may be references to, or the string identifiers for,
     * existing Resources/Roles, or they may be passed as arrays of these - mixing string identifiers
     * and objects is ok - to indicate the Resources and Roles to which the rule applies. If either
     * $roles or $resources is null, then the rule applies to all Roles or all Resources, respectively.
     * Both may be null in order to work with the default rule of the ACL.
     *
     * The $privileges parameter may be used to further specify that the rule applies only
     * to certain privileges upon the Resource(s) in question. This may be specified to be a single
     * privilege with a string, and multiple privileges may be specified as an array of strings.
     *
     * If $assert is provided, then its assert() method must return true in order for
     * the rule to apply. If $assert is provided with $roles, $resources, and $privileges all
     * equal to null, then a rule having a type of:
     *
     *      TYPE_ALLOW will imply a type of TYPE_DENY, and
     *
     *      TYPE_DENY will imply a type of TYPE_ALLOW
     *
     * when the rule's assertion fails. This is because the ACL needs to provide expected
     * behavior when an assertion upon the default ACL rule fails.
     *
     * @param  string                                   $operation
     * @param  string                                   $type
     * @param  Zend_Acl_Role_Interface|string|array     $roles
     * @param  Zend_Acl_Resource_Interface|string|array $resources
     * @param  string|array                             $privileges
     * @param  Zend_Acl_Assert_Interface                $assert
     * @throws Zend_Acl_Exception
     * @uses   Zend_Acl_Role_Registry::get()
     * @uses   Zend_Acl::get()
     * @return Zend_Acl Provides a fluent interface
     */
    public function setRule($operation, $type, $roles = null, $resources = null, $privileges = null,
                            Zend_Acl_Assert_Interface $assert = null)
    {
        // ensure that the rule type is valid; normalize input to uppercase
        $type = strtoupper($type);
        if (self::TYPE_ALLOW !== $type && self::TYPE_DENY !== $type) {
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception("Unsupported rule type; must be either '" . self::TYPE_ALLOW . "' or '"
                                       . self::TYPE_DENY . "'");
        }

        // ensure that all specified Roles exist; normalize input to array of Role objects or null
        if (!is_array($roles)) {
            $roles = array($roles);
        } else if (0 === count($roles)) {
            $roles = array(null);
        }
        $rolesTemp = $roles;
        $roles = array();
        foreach ($rolesTemp as $role) {
            if (null !== $role) {
                $roles[] = $this->_getRoleRegistry()->get($role);
            } else {
                $roles[] = null;
            }
        }
        unset($rolesTemp);

        // ensure that all specified Resources exist; normalize input to array of Resource objects or null
        if (!is_array($resources)) {
            $resources = array($resources);
        } else if (0 === count($resources)) {
            $resources = array(null);
        }
        $resourcesTemp = $resources;
        $resources = array();
        foreach ($resourcesTemp as $resource) {
            if (null !== $resource) {
                $resources[] = $this->get($resource);
            } else {
                $resources[] = null;
            }
        }
        unset($resourcesTemp);

        // normalize privileges to array
        if (null === $privileges) {
            $privileges = array();
        } else if (!is_array($privileges)) {
            $privileges = array($privileges);
        }

        switch ($operation) {

            // add to the rules
            case self::OP_ADD:
                foreach ($resources as $resource) {
                    foreach ($roles as $role) {
                        $rules =& $this->_getRules($resource, $role, true);
                        if (0 === count($privileges)) {
                            $rules['allPrivileges']['type']   = $type;
                            $rules['allPrivileges']['assert'] = $assert;
                            if (!isset($rules['byPrivilegeId'])) {
                                $rules['byPrivilegeId'] = array();
                            }
                        } else {
                            foreach ($privileges as $privilege) {
                                $rules['byPrivilegeId'][$privilege]['type']   = $type;
                                $rules['byPrivilegeId'][$privilege]['assert'] = $assert;
                            }
                        }
                    }
                }
                break;

            // remove from the rules
            case self::OP_REMOVE:
                foreach ($resources as $resource) {
                    foreach ($roles as $role) {
                        $rules =& $this->_getRules($resource, $role);
                        if (null === $rules) {
                            continue;
                        }
                        if (0 === count($privileges)) {
                            if (null === $resource && null === $role) {
                                if ($type === $rules['allPrivileges']['type']) {
                                    $rules = array(
                                        'allPrivileges' => array(
                                            'type'   => self::TYPE_DENY,
                                            'assert' => null
                                            ),
                                        'byPrivilegeId' => array()
                                        );
                                }
                                continue;
                            }
                            if ($type === $rules['allPrivileges']['type']) {
                                unset($rules['allPrivileges']);
                            }
                        } else {
                            foreach ($privileges as $privilege) {
                                if (isset($rules['byPrivilegeId'][$privilege]) &&
                                    $type === $rules['byPrivilegeId'][$privilege]['type']) {
                                    unset($rules['byPrivilegeId'][$privilege]);
                                }
                            }
                        }
                    }
                }
                break;

            default:
                require_once 'Zend/Acl/Exception.php';
                throw new Zend_Acl_Exception("Unsupported operation; must be either '" . self::OP_ADD . "' or '"
                                           . self::OP_REMOVE . "'");
        }

        return $this;
    }

    /**
     * Returns true if and only if the Role has access to the Resource
     *
     * The $role and $resource parameters may be references to, or the string identifiers for,
     * an existing Resource and Role combination.
     *
     * If either $role or $resource is null, then the query applies to all Roles or all Resources,
     * respectively. Both may be null to query whether the ACL has a "blacklist" rule
     * (allow everything to all). By default, Zend_Acl creates a "whitelist" rule (deny
     * everything to all), and this method would return false unless this default has
     * been overridden (i.e., by executing $acl->allow()).
     *
     * If a $privilege is not provided, then this method returns false if and only if the
     * Role is denied access to at least one privilege upon the Resource. In other words, this
     * method returns true if and only if the Role is allowed all privileges on the Resource.
     *
     * This method checks Role inheritance using a depth-first traversal of the Role registry.
     * The highest priority parent (i.e., the parent most recently added) is checked first,
     * and its respective parents are checked similarly before the lower-priority parents of
     * the Role are checked.
     *
     * @param  Zend_Acl_Role_Interface|string     $role
     * @param  Zend_Acl_Resource_Interface|string $resource
     * @param  string                             $privilege
     * @uses   Zend_Acl::get()
     * @uses   Zend_Acl_Role_Registry::get()
     * @return boolean
     */
    public function isAllowed($role = null, $resource = null, $privilege = null)
    {
        if (null !== $role) {
            $role = $this->_getRoleRegistry()->get($role);
        }

        if (null !== $resource) {
            $resource = $this->get($resource);
        }

        if (null === $privilege) {
            // query on all privileges
            do {
                // depth-first search on $role if it is not 'allRoles' pseudo-parent
                if (null !== $role && null !== ($result = $this->_roleDFSAllPrivileges($role, $resource, $privilege))) {
                    return $result;
                }

                // look for rule on 'allRoles' psuedo-parent
                if (null !== ($rules = $this->_getRules($resource, null))) {
                    foreach ($rules['byPrivilegeId'] as $privilege => $rule) {
                        if (self::TYPE_DENY === ($ruleTypeOnePrivilege = $this->_getRuleType($resource, null, $privilege))) {
                            return false;
                        }
                    }
                    if (null !== ($ruleTypeAllPrivileges = $this->_getRuleType($resource, null, null))) {
                        return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
                    }
                }

                // try next Resource
                $resource = $this->_resources[$resource->getResourceId()]['parent'];

            } while (true); // loop terminates at 'allResources' pseudo-parent
        } else {
            // query on one privilege
            do {
                // depth-first search on $role if it is not 'allRoles' pseudo-parent
                if (null !== $role && null !== ($result = $this->_roleDFSOnePrivilege($role, $resource, $privilege))) {
                    return $result;
                }

                // look for rule on 'allRoles' pseudo-parent
                if (null !== ($ruleType = $this->_getRuleType($resource, null, $privilege))) {
                    return self::TYPE_ALLOW === $ruleType;
                } else if (null !== ($ruleTypeAllPrivileges = $this->_getRuleType($resource, null, null))) {
                    return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
                }

                // try next Resource
                $resource = $this->_resources[$resource->getResourceId()]['parent'];

            } while (true); // loop terminates at 'allResources' pseudo-parent
        }
    }

    /**
     * Returns the Role registry for this ACL
     *
     * If no Role registry has been created yet, a new default Role registry
     * is created and returned.
     *
     * @return Zend_Acl_Role_Registry
     */
    protected function _getRoleRegistry()
    {
        if (null === $this->_roleRegistry) {
            $this->_roleRegistry = new Zend_Acl_Role_Registry();
        }
        return $this->_roleRegistry;
    }

    /**
     * Performs a depth-first search of the Role DAG, starting at $role, in order to find a rule
     * allowing/denying $role access to all privileges upon $resource
     *
     * This method returns true if a rule is found and allows access. If a rule exists and denies access,
     * then this method returns false. If no applicable rule is found, then this method returns null.
     *
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @return boolean|null
     */
    protected function _roleDFSAllPrivileges(Zend_Acl_Role_Interface $role, Zend_Acl_Resource_Interface $resource = null)
    {
        $dfs = array(
            'visited' => array(),
            'stack'   => array()
            );

        if (null !== ($result = $this->_roleDFSVisitAllPrivileges($role, $resource, $dfs))) {
            return $result;
        }

        while (null !== ($role = array_pop($dfs['stack']))) {
            if (!isset($dfs['visited'][$role->getRoleId()])) {
                if (null !== ($result = $this->_roleDFSVisitAllPrivileges($role, $resource, $dfs))) {
                    return $result;
                }
            }
        }

        return null;
    }

    /**
     * Visits an $role in order to look for a rule allowing/denying $role access to all privileges upon $resource
     *
     * This method returns true if a rule is found and allows access. If a rule exists and denies access,
     * then this method returns false. If no applicable rule is found, then this method returns null.
     *
     * This method is used by the internal depth-first search algorithm and may modify the DFS data structure.
     *
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  array                  $dfs
     * @return boolean|null
     * @throws Zend_Acl_Exception
     */
    protected function _roleDFSVisitAllPrivileges(Zend_Acl_Role_Interface $role, Zend_Acl_Resource_Interface $resource = null,
                                                 &$dfs = null)
    {
        if (null === $dfs) {
            /**
             * @see Zend_Acl_Exception
             */
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception('$dfs parameter may not be null');
        }

        if (null !== ($rules = $this->_getRules($resource, $role))) {
            foreach ($rules['byPrivilegeId'] as $privilege => $rule) {
                if (self::TYPE_DENY === ($ruleTypeOnePrivilege = $this->_getRuleType($resource, $role, $privilege))) {
                    return false;
                }
            }
            if (null !== ($ruleTypeAllPrivileges = $this->_getRuleType($resource, $role, null))) {
                return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
            }
        }

        $dfs['visited'][$role->getRoleId()] = true;
        foreach ($this->_getRoleRegistry()->getParents($role) as $roleParentId => $roleParent) {
            $dfs['stack'][] = $roleParent;
        }

        return null;
    }

    /**
     * Performs a depth-first search of the Role DAG, starting at $role, in order to find a rule
     * allowing/denying $role access to a $privilege upon $resource
     *
     * This method returns true if a rule is found and allows access. If a rule exists and denies access,
     * then this method returns false. If no applicable rule is found, then this method returns null.
     *
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  string                      $privilege
     * @return boolean|null
     * @throws Zend_Acl_Exception
     */
    protected function _roleDFSOnePrivilege(Zend_Acl_Role_Interface $role, Zend_Acl_Resource_Interface $resource = null,
                                            $privilege = null)
    {
        if (null === $privilege) {
            /**
             * @see Zend_Acl_Exception
             */
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception('$privilege parameter may not be null');
        }

        $dfs = array(
            'visited' => array(),
            'stack'   => array()
            );

        if (null !== ($result = $this->_roleDFSVisitOnePrivilege($role, $resource, $privilege, $dfs))) {
            return $result;
        }

        while (null !== ($role = array_pop($dfs['stack']))) {
            if (!isset($dfs['visited'][$role->getRoleId()])) {
                if (null !== ($result = $this->_roleDFSVisitOnePrivilege($role, $resource, $privilege, $dfs))) {
                    return $result;
                }
            }
        }

        return null;
    }

    /**
     * Visits an $role in order to look for a rule allowing/denying $role access to a $privilege upon $resource
     *
     * This method returns true if a rule is found and allows access. If a rule exists and denies access,
     * then this method returns false. If no applicable rule is found, then this method returns null.
     *
     * This method is used by the internal depth-first search algorithm and may modify the DFS data structure.
     *
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  string                      $privilege
     * @param  array                       $dfs
     * @return boolean|null
     * @throws Zend_Acl_Exception
     */
    protected function _roleDFSVisitOnePrivilege(Zend_Acl_Role_Interface $role, Zend_Acl_Resource_Interface $resource = null,
                                                $privilege = null, &$dfs = null)
    {
        if (null === $privilege) {
            /**
             * @see Zend_Acl_Exception
             */
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception('$privilege parameter may not be null');
        }

        if (null === $dfs) {
            /**
             * @see Zend_Acl_Exception
             */
            require_once 'Zend/Acl/Exception.php';
            throw new Zend_Acl_Exception('$dfs parameter may not be null');
        }

        if (null !== ($ruleTypeOnePrivilege = $this->_getRuleType($resource, $role, $privilege))) {
            return self::TYPE_ALLOW === $ruleTypeOnePrivilege;
        } else if (null !== ($ruleTypeAllPrivileges = $this->_getRuleType($resource, $role, null))) {
            return self::TYPE_ALLOW === $ruleTypeAllPrivileges;
        }

        $dfs['visited'][$role->getRoleId()] = true;
        foreach ($this->_getRoleRegistry()->getParents($role) as $roleParentId => $roleParent) {
            $dfs['stack'][] = $roleParent;
        }

        return null;
    }

    /**
     * Returns the rule type associated with the specified Resource, Role, and privilege
     * combination.
     *
     * If a rule does not exist or its attached assertion fails, which means that
     * the rule is not applicable, then this method returns null. Otherwise, the
     * rule type applies and is returned as either TYPE_ALLOW or TYPE_DENY.
     *
     * If $resource or $role is null, then this means that the rule must apply to
     * all Resources or Roles, respectively.
     *
     * If $privilege is null, then the rule must apply to all privileges.
     *
     * If all three parameters are null, then the default ACL rule type is returned,
     * based on whether its assertion method passes.
     *
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  Zend_Acl_Role_Interface     $role
     * @param  string                      $privilege
     * @return string|null
     */
    protected function _getRuleType(Zend_Acl_Resource_Interface $resource = null, Zend_Acl_Role_Interface $role = null,
                                    $privilege = null)
    {
        // get the rules for the $resource and $role
        if (null === ($rules = $this->_getRules($resource, $role))) {
            return null;
        }

        // follow $privilege
        if (null === $privilege) {
            if (isset($rules['allPrivileges'])) {
                $rule = $rules['allPrivileges'];
            } else {
                return null;
            }
        } else if (!isset($rules['byPrivilegeId'][$privilege])) {
            return null;
        } else {
            $rule = $rules['byPrivilegeId'][$privilege];
        }

        // check assertion if necessary
        if (null === $rule['assert'] || $rule['assert']->assert($this, $role, $resource, $privilege)) {
            return $rule['type'];
        } else if (null !== $resource || null !== $role || null !== $privilege) {
            return null;
        } else if (self::TYPE_ALLOW === $rule['type']) {
            return self::TYPE_DENY;
        } else {
            return self::TYPE_ALLOW;
        }
    }

    /**
     * Returns the rules associated with a Resource and a Role, or null if no such rules exist
     *
     * If either $resource or $role is null, this means that the rules returned are for all Resources or all Roles,
     * respectively. Both can be null to return the default rule set for all Resources and all Roles.
     *
     * If the $create parameter is true, then a rule set is first created and then returned to the caller.
     *
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  Zend_Acl_Role_Interface     $role
     * @param  boolean                     $create
     * @return array|null
     */
    protected function &_getRules(Zend_Acl_Resource_Interface $resource = null, Zend_Acl_Role_Interface $role = null,
                                  $create = false)
    {
        // create a reference to null
        $null = null;
        $nullRef =& $null;

        // follow $resource
        do {
            if (null === $resource) {
                $visitor =& $this->_rules['allResources'];
                break;
            }
            $resourceId = $resource->getResourceId();
            if (!isset($this->_rules['byResourceId'][$resourceId])) {
                if (!$create) {
                    return $nullRef;
                }
                $this->_rules['byResourceId'][$resourceId] = array();
            }
            $visitor =& $this->_rules['byResourceId'][$resourceId];
        } while (false);


        // follow $role
        if (null === $role) {
            if (!isset($visitor['allRoles'])) {
                if (!$create) {
                    return $nullRef;
                }
                $visitor['allRoles']['byPrivilegeId'] = array();
            }
            return $visitor['allRoles'];
        }
        $roleId = $role->getRoleId();
        if (!isset($visitor['byRoleId'][$roleId])) {
            if (!$create) {
                return $nullRef;
            }
            $visitor['byRoleId'][$roleId]['byPrivilegeId'] = array();
        }
        return $visitor['byRoleId'][$roleId];
    }

}
PKpG[��ln�e�eLdap.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Ldap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ldap.php 11765 2008-10-09 01:53:43Z miallen $
 */


/**
 * @category   Zend
 * @package    Zend_Ldap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Ldap
{

    const ACCTNAME_FORM_DN        = 1;
    const ACCTNAME_FORM_USERNAME  = 2;
    const ACCTNAME_FORM_BACKSLASH = 3;
    const ACCTNAME_FORM_PRINCIPAL = 4;

    /**
     * String used with ldap_connect for error handling purposes.
     *
     * @var string
     */
    private $_connectString;

    /**
     * The raw LDAP extension resource.
     *
     * @var resource
     */
    protected $_resource = null;

    /**
     * @param  string $str The string to escape.
     * @return string The escaped string
     */
    public static function filterEscape($str)
    {
        $ret = '';
        $len = strlen($str);
        for ($si = 0; $si < $len; $si++) {
            $ch = $str[$si];
            $ord = ord($ch);
            if ($ord < 0x20 || $ord > 0x7e || strstr('*()\/', $ch)) {
                $ch = '\\' . dechex($ord);
            }
            $ret .= $ch;
        }
        return $ret;
    }

    /**
     * @param  string $dn   The DN to parse
     * @param  array  $keys An optional array to receive DN keys (e.g. CN, OU, DC, ...)
     * @param  array  $vals An optional array to receive DN values
     * @return bool   True if the DN was successfully parsed or false if the string is not a valid DN.
     */
    public static function explodeDn($dn, array &$keys = null, array &$vals = null)
    {
        /* This is a classic state machine parser. Each iteration of the
         * loop processes one character. State 1 collects the key. When equals (=)
         * is encountered the state changes to 2 where the value is collected
         * until a comma (,) or semicolon (;) is encountered after which we switch back
         * to state 1. If a backslash (\) is encountered, state 3 is used to collect the
         * following character without engaging the logic of other states.
         */
        $key = null;
        $slen = strlen($dn);
        $state = 1;
        $ko = $vo = 0;
        for ($di = 0; $di <= $slen; $di++) {
            $ch = $di == $slen ? 0 : $dn[$di];
            switch ($state) {
                case 1: // collect key
                    if ($ch === '=') {
                        $key = trim(substr($dn, $ko, $di - $ko));
                        if ($keys !== null) {
                            $keys[] = $key; 
                        }
                        $state = 2;
                        $vo = $di + 1;
                    } else if ($ch === ',' || $ch === ';') {
                        return false;
                    }
                    break;
                case 2: // collect value
                    if ($ch === '\\') {
                        $state = 3;
                    } else if ($ch === ',' || $ch === ';' || $ch === 0) {
                        if ($vals !== null) {
                            $vals[] = trim(substr($dn, $vo, $di - $vo));
                        }
                        $state = 1;
                        $ko = $di + 1;
                    } else if ($ch === '=') {
                        return false;
                    }
                    break;
                case 3: // escaped
                    $state = 2;
                    break;
            }
        }

        return $state === 1 && $ko > 0; 
    }

    /**
     * @param  array $options Options used in connecting, binding, etc.
     * @return void
     */
    public function __construct(array $options = array())
    {
        $this->setOptions($options);
    }

    /**
     * Sets the options used in connecting, binding, etc.
     *
     * Valid option keys:
     *  host
     *  port
     *  useSsl
     *  username
     *  password
     *  bindRequiresDn
     *  baseDn
     *  accountCanonicalForm
     *  accountDomainName
     *  accountDomainNameShort
     *  accountFilterFormat
     *  allowEmptyPassword
     *  useStartTls
     *  optRefferals
     *
     * @param  array $options Options used in connecting, binding, etc.
     * @return Zend_Ldap Provides a fluent interface
     * @throws Zend_Ldap_Exception
     */
    public function setOptions(array $options)
    {
        $permittedOptions = array(
            'host'                      => null,
            'port'                      => null,
            'useSsl'                    => null,
            'username'                  => null,
            'password'                  => null,
            'bindRequiresDn'            => null,
            'baseDn'                    => null,
            'accountCanonicalForm'      => null,
            'accountDomainName'         => null,
            'accountDomainNameShort'    => null,
            'accountFilterFormat'       => null,
            'allowEmptyPassword'        => null,
            'useStartTls'               => null,
            'optReferrals'              => null,
        );

        $diff = array_diff_key($options, $permittedOptions);
        if ($diff) {
            list($key, $val) = each($diff);
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, "Unknown Zend_Ldap option: $key");
        }

        foreach ($permittedOptions as $key => $val) {
            if (!array_key_exists($key, $options)) {
                $options[$key] = null;
            } else {
                /* Enforce typing. This eliminates issues like Zend_Config_Ini
                 * returning '1' as a string (ZF-3163).
                 */
                switch ($key) {
                    case 'port':
                    case 'accountCanonicalForm':
                        $options[$key] = (int)$options[$key];
                        break;
                    case 'useSsl':
                    case 'bindRequiresDn':
                    case 'allowEmptyPassword':
                    case 'useStartTls':
                    case 'optReferrals':
                        $val = $options[$key];
                        $options[$key] = $val === true ||
                                $val === '1' ||
                                strcasecmp($val, 'true') == 0;
                        break;
                }
            }
        }

        $this->_options = $options;

        return $this;
    }

    /**
     * @return array The current options.
     */
    public function getOptions()
    {
        return $this->_options;
    }

    /**
     * @return resource The raw LDAP extension resource.
     */
    public function getResource()
    {
        /**
         * @todo by reference?
         */
        return $this->_resource;
    }

    /**
     * @return string The hostname of the LDAP server being used to authenticate accounts
     */
    protected function _getHost()
    {
        return $this->_options['host'];
    }

    /**
     * @return int The port of the LDAP server or 0 to indicate that no port value is set
     */
    protected function _getPort()
    {
        if ($this->_options['port'])
            return $this->_options['port'];
        return 0;
    }

    /**
     * @return string The default acctname for binding
     */
    protected function _getUsername()
    {
        return $this->_options['username'];
    }

    /**
     * @return string The default password for binding
     */
    protected function _getPassword()
    {
        return $this->_options['password'];
    }

    /**
     * @return boolean The default SSL / TLS encrypted transport control
     */
    protected function _getUseSsl()
    {
        return $this->_options['useSsl'];
    }

    /**
     * @return string The default base DN under which objects of interest are located
     */
    protected function _getBaseDn()
    {
        return $this->_options['baseDn'];
    }

    /**
     * @return string Either ACCTNAME_FORM_BACKSLASH, ACCTNAME_FORM_PRINCIPAL or ACCTNAME_FORM_USERNAME indicating the form usernames should be canonicalized to.
     */
    protected function _getAccountCanonicalForm()
    {
        /* Account names should always be qualified with a domain. In some scenarios
         * using non-qualified account names can lead to security vulnerabilities. If
         * no account canonical form is specified, we guess based in what domain
         * names have been supplied.
         */

        $accountCanonicalForm = $this->_options['accountCanonicalForm'];
        if (!$accountCanonicalForm) {
            $accountDomainName = $this->_options['accountDomainName'];
            $accountDomainNameShort = $this->_options['accountDomainNameShort'];
            if ($accountDomainNameShort) {
                $accountCanonicalForm = Zend_Ldap::ACCTNAME_FORM_BACKSLASH;
            } else if ($accountDomainName) {
                $accountCanonicalForm = Zend_Ldap::ACCTNAME_FORM_PRINCIPAL;
            } else {
                $accountCanonicalForm = Zend_Ldap::ACCTNAME_FORM_USERNAME;
            }
        }

        return $accountCanonicalForm;
    }


    /**
     * @return string A format string for building an LDAP search filter to match an account
     */
    protected function _getAccountFilterFormat()
    {
        return $this->_options['accountFilterFormat'];
    }

    /**
     * @return string The LDAP search filter for matching directory accounts
     */
    protected function _getAccountFilter($acctname)
    {
        $this->_splitName($acctname, $dname, $aname);
        $accountFilterFormat = $this->_getAccountFilterFormat();
        $aname = Zend_Ldap::filterEscape($aname);
        if ($accountFilterFormat)
            return sprintf($accountFilterFormat, $aname);
        if (!$this->_options['bindRequiresDn']) {
            // is there a better way to detect this?
            return "(&(objectClass=user)(sAMAccountName=$aname))";
        }
        return "(&(objectClass=posixAccount)(uid=$aname))";
    }

    /**
     * @param string $name The name to split
     * @param string $dname The resulting domain name (this is an out parameter)
     * @param string $aname The resulting account name (this is an out parameter)
     */
    protected function _splitName($name, &$dname, &$aname)
    {
        $dname = NULL;
        $aname = $name;

        $pos = strpos($name, '@');
        if ($pos) {
            $dname = substr($name, $pos + 1);
            $aname = substr($name, 0, $pos);
        } else {
            $pos = strpos($name, '\\');
            if ($pos) {
                $dname = substr($name, 0, $pos);
                $aname = substr($name, $pos + 1);
            }
        }
    }

    /**
     * @param string $acctname The name of the account
     * @return string The DN of the specified account
     * @throws Zend_Ldap_Exception
     */
    protected function _getAccountDn($acctname)
    {
        if (Zend_Ldap::explodeDn($acctname))
            return $acctname;
        $acctname = $this->getCanonicalAccountName($acctname, Zend_Ldap::ACCTNAME_FORM_USERNAME);
        $acct = $this->_getAccount($acctname, array('dn'));
        return $acct['dn'];
    }

    /**
     * @param string $dname The domain name to check
     * @return bool
     */
    protected function _isPossibleAuthority($dname)
    {
        if ($dname === null)
            return true;
        $accountDomainName = $this->_options['accountDomainName'];
        $accountDomainNameShort = $this->_options['accountDomainNameShort'];
        if ($accountDomainName === null && $accountDomainNameShort === null)
            return true;
        if (strcasecmp($dname, $accountDomainName) == 0)
            return true;
        if (strcasecmp($dname, $accountDomainNameShort) == 0)
            return true;
        return false;
    }

    /**
     * @param string $acctname The name to canonicalize
     * @param int $type The desired form of canonicalization
     * @return string The canonicalized name in the desired form
     * @throws Zend_Ldap_Exception
     */
    public function getCanonicalAccountName($acctname, $form = 0)
    {
        $this->_splitName($acctname, $dname, $uname);

        if (!$this->_isPossibleAuthority($dname)) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null,
                    "Binding domain is not an authority for user: $acctname",
                    Zend_Ldap_Exception::LDAP_X_DOMAIN_MISMATCH);
        }

        if ($form === Zend_Ldap::ACCTNAME_FORM_DN)
            return $this->_getAccountDn($acctname);

        if (!$uname) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, "Invalid account name syntax: $acctname");
        }

        $uname = strtolower($uname);

        if ($form === 0)
            $form = $this->_getAccountCanonicalForm();

        switch ($form) {
            case Zend_Ldap::ACCTNAME_FORM_USERNAME:
                return $uname;
            case Zend_Ldap::ACCTNAME_FORM_BACKSLASH:
                $accountDomainNameShort = $this->_options['accountDomainNameShort'];
                if (!$accountDomainNameShort) {
                    /**
                     * @see Zend_Ldap_Exception
                     */
                    require_once 'Zend/Ldap/Exception.php';
                    throw new Zend_Ldap_Exception(null, 'Option required: accountDomainNameShort');
                }
                return "$accountDomainNameShort\\$uname";
            case Zend_Ldap::ACCTNAME_FORM_PRINCIPAL:
                $accountDomainName = $this->_options['accountDomainName'];
                if (!$accountDomainName) {
                    /**
                     * @see Zend_Ldap_Exception
                     */
                    require_once 'Zend/Ldap/Exception.php';
                    throw new Zend_Ldap_Exception(null, 'Option required: accountDomainName');
                }
                return "$uname@$accountDomainName";
            default:
                /**
                 * @see Zend_Ldap_Exception
                 */
                require_once 'Zend/Ldap/Exception.php';
                throw new Zend_Ldap_Exception(null, "Unknown canonical name form: $form");
        }
    }

    /**
     * @param array $attrs An array of names of desired attributes
     * @return array An array of the attributes representing the account
     * @throws Zend_Ldap_Exception
     */
    private function _getAccount($acctname, array $attrs = null)
    {
        $baseDn = $this->_getBaseDn();
        if (!$baseDn) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, 'Base DN not set');
        }

        $accountFilter = $this->_getAccountFilter($acctname);
        if (!$accountFilter) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, 'Invalid account filter');
        }

        if (!is_resource($this->_resource))
            $this->bind();

        $resource = $this->_resource;
        $str = $accountFilter;
        $code = 0;

        /**
         * @todo break out search operation into simple function (private for now)
         */

        if (!extension_loaded('ldap')) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, 'LDAP extension not loaded');
        }

        $result = @ldap_search($resource,
                        $baseDn,
                        $accountFilter,
                        $attrs);
        if (is_resource($result) === true) {
            $count = @ldap_count_entries($resource, $result);
            if ($count == 1) {
                $entry = @ldap_first_entry($resource, $result);
                if ($entry) {
                    $acct = array('dn' => @ldap_get_dn($resource, $entry));
                    $name = @ldap_first_attribute($resource, $entry, $berptr);
                    while ($name) {
                        $data = @ldap_get_values_len($resource, $entry, $name);
                        $acct[$name] = $data;
                        $name = @ldap_next_attribute($resource, $entry, $berptr);
                    }
                    @ldap_free_result($result);
                    return $acct;
                }
            } else if ($count == 0) {
                /**
                 * @see Zend_Ldap_Exception
                 */
                require_once 'Zend/Ldap/Exception.php';
                $code = Zend_Ldap_Exception::LDAP_NO_SUCH_OBJECT;
            } else {

                /**
                 * @todo limit search to 1 record and remove some of this logic?
                 */

                $resource = null;
                $str = "$accountFilter: Unexpected result count: $count";
                /**
                 * @see Zend_Ldap_Exception
                 */
                require_once 'Zend/Ldap/Exception.php';
                $code = Zend_Ldap_Exception::LDAP_OPERATIONS_ERROR;
            }
            @ldap_free_result($result);
        }

        /**
         * @see Zend_Ldap_Exception
         */
        require_once 'Zend/Ldap/Exception.php';
        throw new Zend_Ldap_Exception($resource, $str, $code);
    }

    /**
     * @return Zend_Ldap Provides a fluent interface
     */
    public function disconnect()
    {
        if (is_resource($this->_resource)) {
            if (!extension_loaded('ldap')) {
                /**
                 * @see Zend_Ldap_Exception
                 */
                require_once 'Zend/Ldap/Exception.php';
                throw new Zend_Ldap_Exception(null, 'LDAP extension not loaded');
            }
            @ldap_unbind($this->_resource);
        }
        $this->_resource = null;
        return $this;
    }

    /**
     * @param string $host The hostname of the LDAP server to connect to
     * @param int $port The port number of the LDAP server to connect to
     * @return Zend_Ldap Provides a fluent interface
     * @throws Zend_Ldap_Exception
     */
    public function connect($host = null, $port = 0, $useSsl = false)
    {
        if ($host === null)
            $host = $this->_getHost();
        if ($port === 0)
            $port = $this->_getPort();
        if ($useSsl === false)
            $useSsl = $this->_getUseSsl();

        if (!$host) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, 'A host parameter is required');
        }

        /* To connect using SSL it seems the client tries to verify the server
         * certificate by default. One way to disable this behavior is to set
         * 'TLS_REQCERT never' in OpenLDAP's ldap.conf and restarting Apache. Or,
         * if you really care about the server's cert you can put a cert on the
         * web server.
         */
        $url = $useSsl ? "ldaps://$host" : "ldap://$host";
        if ($port) {
            $url .= ":$port";
        }

        /* Because ldap_connect doesn't really try to connect, any connect error
         * will actually occur during the ldap_bind call. Therefore, we save the
         * connect string here for reporting it in error handling in bind().
         */
        $this->_connectString = $url;

        $this->disconnect();

        if (!extension_loaded('ldap')) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
            throw new Zend_Ldap_Exception(null, 'LDAP extension not loaded');
        }

        /* Only OpenLDAP 2.2 + supports URLs so if SSL is not requested, just
         * use the old form.
         */
        $resource = $useSsl ? @ldap_connect($url) : @ldap_connect($host, $port);

        if (is_resource($resource) === true) {

            $this->_resource = $resource;

            $optReferrals = $this->_options['optReferrals'] ? 1 : 0;

            if (@ldap_set_option($resource, LDAP_OPT_PROTOCOL_VERSION, 3) &&
                        @ldap_set_option($resource, LDAP_OPT_REFERRALS, $optReferrals)) {
                if ($useSsl ||
                            $this->_options['useStartTls'] !== true ||
                            @ldap_start_tls($resource)) {
                    return $this;
                }
            }

            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';

            $zle = new Zend_Ldap_Exception($resource, "$host:$port");
            $this->disconnect();
            throw $zle;
        }
        /**
         * @see Zend_Ldap_Exception
         */
        require_once 'Zend/Ldap/Exception.php';
        throw new Zend_Ldap_Exception("Failed to connect to LDAP server: $host:$port");
    }

    /**
     * @param string $username The username for authenticating the bind
     * @param string $password The password for authenticating the bind
     * @return Zend_Ldap Provides a fluent interface
     * @throws Zend_Ldap_Exception
     */
    public function bind($username = null, $password = null)
    {
        $moreCreds = true;

        if ($username === null) {
            $username = $this->_getUsername();
            $password = $this->_getPassword();
            $moreCreds = false;
        }

        if ($username === NULL) {
            /* Perform anonymous bind
             */
            $password = NULL;
        } else {
            /* Check to make sure the username is in DN form.
             */
            if (!Zend_Ldap::explodeDn($username)) {
                if ($this->_options['bindRequiresDn']) {
                    /* moreCreds stops an infinite loop if _getUsername does not
                     * return a DN and the bind requires it
                     */
                    if ($moreCreds) {
                        try {
                            $username = $this->_getAccountDn($username);
                        } catch (Zend_Ldap_Exception $zle) {
                            /**
                             * @todo Temporary measure to deal with exception thrown for ldap extension not loaded
                             */
                            if (strpos($zle->getMessage(), 'LDAP extension not loaded') !== false) {
                                throw $zle;
                            }
                            // end temporary measure
                            switch ($zle->getCode()) {
                                case Zend_Ldap_Exception::LDAP_NO_SUCH_OBJECT:
                                case Zend_Ldap_Exception::LDAP_X_DOMAIN_MISMATCH:
                                    throw $zle;
                            }
                            throw new Zend_Ldap_Exception(null,
                                        'Failed to retrieve DN for account: ' . $zle->getMessage(),
                                        Zend_Ldap_Exception::LDAP_OPERATIONS_ERROR);
                        }
                    } else {
                        /**
                         * @see Zend_Ldap_Exception
                         */
                        require_once 'Zend/Ldap/Exception.php';
                        throw new Zend_Ldap_Exception(null, 'Binding requires username in DN form');
                    }
                } else {
                    $username = $this->getCanonicalAccountName($username,
                                Zend_Ldap::ACCTNAME_FORM_PRINCIPAL);
                }
            }
        }

        if (!is_resource($this->_resource))
            $this->connect();

        if ($username !== null &&
                    $password === '' &&
                    $this->_options['allowEmptyPassword'] !== true) {
            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';

            $zle = new Zend_Ldap_Exception(null,
                    'Empty password not allowed - see allowEmptyPassword option.');
        } else {
            if (@ldap_bind($this->_resource, $username, $password))
                return $this;

            $message = $username === null ? $this->_connectString : $username;

            /**
             * @see Zend_Ldap_Exception
             */
            require_once 'Zend/Ldap/Exception.php';
    
            switch (Zend_Ldap_Exception::getLdapCode($this)) {
                case Zend_Ldap_Exception::LDAP_SERVER_DOWN:
                    /* If the error is related to establishing a connection rather than binding,
                     * the connect string is more informative than the username.
                     */
                    $message = $this->_connectString;
            }
    
            $zle = new Zend_Ldap_Exception($this->_resource, $message);
        }
        $this->disconnect();
        throw $zle;
    }
}
PKpG[�]čEBEBInfoCard.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: InfoCard.php 11010 2008-08-24 19:22:58Z thomas $
 */

/**
 * Zend_InfoCard_Xml_EncryptedData
 */
require_once 'Zend/InfoCard/Xml/EncryptedData.php';

/**
 * Zend_InfoCard_Xml_Assertion
 */
require_once 'Zend/InfoCard/Xml/Assertion.php';

/**
 * Zend_InfoCard_Exception
 */
require_once 'Zend/InfoCard/Exception.php';

/**
 * Zend_InfoCard_Cipher
 */
require_once 'Zend/InfoCard/Cipher.php';

/**
 * Zend_InfoCard_Xml_Security
 */
require_once 'Zend/InfoCard/Xml/Security.php';

/**
 * Zend_InfoCard_Adapter_Interface
 */
require_once 'Zend/InfoCard/Adapter/Interface.php';

/**
 * Zend_InfoCard_Claims
 */
require_once 'Zend/InfoCard/Claims.php';


/**
 * @category   Zend
 * @package    Zend_InfoCard
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_InfoCard
{
    /**
     * URI for XML Digital Signature SHA1 Digests
     */
    const DIGEST_SHA1        = 'http://www.w3.org/2000/09/xmldsig#sha1';

    /**
     * An array of certificate pair files and optional passwords for them to search
     * when trying to determine which certificate was used to encrypt the transient key
     *
     * @var Array
     */
    protected $_keyPairs;

    /**
     * The instance to use to decrypt public-key encrypted data
     *
     * @var Zend_InfoCard_Cipher_Pki_Interface
     */
    protected $_pkiCipherObj;

    /**
     * The instance to use to decrypt symmetric encrypted data
     *
     * @var Zend_InfoCard_Cipher_Symmetric_Interface
     */
    protected $_symCipherObj;

    /**
     * The InfoCard Adapter to use for callbacks into the application using the component
     * such as when storing assertions, etc.
     *
     * @var Zend_InfoCard_Adapter_Interface
     */
    protected $_adapter;


    /**
     * InfoCard Constructor
     *
     * @throws Zend_InfoCard_Exception
     */
    public function __construct()
    {
        $this->_keyPairs = array();

        if(!extension_loaded('mcrypt')) {
            throw new Zend_InfoCard_Exception("Use of the Zend_InfoCard component requires the mcrypt extension to be enabled in PHP");
        }

        if(!extension_loaded('openssl')) {
            throw new Zend_InfoCard_Exception("Use of the Zend_InfoCard component requires the openssl extension to be enabled in PHP");
        }
    }

    /**
     * Sets the adapter uesd for callbacks into the application using the component, used
     * when doing things such as storing / retrieving assertions, etc.
     *
     * @param Zend_InfoCard_Adapter_Interface $a The Adapter instance
     * @return Zend_InfoCard The instnace
     */
    public function setAdapter(Zend_InfoCard_Adapter_Interface $a)
    {
        $this->_adapter = $a;
        return $this;
    }

    /**
     * Retrieves the adapter used for callbacks into the application using the component.
     * If no adapter was set then an instance of Zend_InfoCard_Adapter_Default is used
     *
     * @return Zend_InfoCard_Adapter_Interface The Adapter instance
     */
    public function getAdapter()
    {
        if(is_null($this->_adapter)) {
            require_once 'Zend/InfoCard/Adapter/Default.php';
            $this->setAdapter(new Zend_InfoCard_Adapter_Default());
        }

        return $this->_adapter;
    }

    /**
     * Gets the Public Key Cipher object used in this instance
     *
     * @return Zend_InfoCard_Cipher_Pki_Interface
     */
    public function getPkiCipherObject()
    {
        return $this->_pkiCipherObj;
    }

    /**
     * Sets the Public Key Cipher Object used in this instance
     *
     * @param Zend_InfoCard_Cipher_Pki_Interface $cipherObj
     * @return Zend_InfoCard
     */
    public function setPkiCipherObject(Zend_InfoCard_Cipher_Pki_Interface $cipherObj)
    {
        $this->_pkiCipherObj = $cipherObj;
        return $this;
    }

    /**
     * Get the Symmetric Cipher Object used in this instance
     *
     * @return Zend_InfoCard_Cipher_Symmetric_Interface
     */
    public function getSymCipherObject()
    {
        return $this->_symCipherObj;
    }

    /**
     * Sets the Symmetric Cipher Object used in this instance
     *
     * @param Zend_InfoCard_Cipher_Symmetric_Interface $cipherObj
     * @return Zend_InfoCard
     */
    public function setSymCipherObject($cipherObj)
    {
        $this->_symCipherObj = $cipherObj;
        return $this;
    }

    /**
     * Remove a Certificate Pair by Key ID from the search list
     *
     * @throws Zend_InfoCard_Exception
     * @param string $key_id The Certificate Key ID returned from adding the certificate pair
     * @return Zend_InfoCard
     */
    public function removeCertificatePair($key_id)
    {

        if(!key_exists($key_id, $this->_keyPairs)) {
            throw new Zend_InfoCard_Exception("Attempted to remove unknown key id: $key_id");
        }

        unset($this->_keyPairs[$key_id]);
        return $this;
    }

    /**
     * Add a Certificate Pair to the list of certificates searched by the component
     *
     * @throws Zend_InfoCard_Exception
     * @param string $private_key_file The path to the private key file for the pair
     * @param string $public_key_file The path to the certificate / public key for the pair
     * @param string $type (optional) The URI for the type of key pair this is (default RSA with OAEP padding)
     * @param string $password (optional) The password for the private key file if necessary
     * @return string A key ID representing this key pair in the component
     */
    public function addCertificatePair($private_key_file, $public_key_file, $type = Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P, $password = null)
    {
        if(!file_exists($private_key_file) ||
           !file_exists($public_key_file)) {
               throw new Zend_InfoCard_Exception("Could not locate the public and private certificate pair files: $private_key_file, $public_key_file");
        }

        if(!is_readable($private_key_file) ||
           !is_readable($public_key_file)) {
               throw new Zend_InfoCard_Exception("Could not read the public and private certificate pair files (check permissions): $private_key_file, $public_key_file");
          }

          $key_id = md5($private_key_file.$public_key_file);

          if(key_exists($key_id, $this->_keyPairs)) {
              throw new Zend_InfoCard_Exception("Attempted to add previously existing certificate pair: $private_key_file, $public_key_file");
          }

          switch($type) {
              case Zend_InfoCard_Cipher::ENC_RSA:
              case Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P:
                  $this->_keyPairs[$key_id] = array('private' => $private_key_file,
                                  'public'      => $public_key_file,
                                  'type_uri'    => $type);

                if(!is_null($password)) {
                    $this->_keyPairs[$key_id]['password'] = $password;
                } else {
                    $this->_keyPairs[$key_id]['password'] = null;
                }

                return $key_id;
                  break;
              default:
                  throw new Zend_InfoCard_Exception("Invalid Certificate Pair Type specified: $type");
          }
    }

    /**
     * Return a Certificate Pair from a key ID
     *
     * @throws Zend_InfoCard_Exception
     * @param string $key_id The Key ID of the certificate pair in the component
     * @return array An array containing the path to the private/public key files,
     *               the type URI and the password if provided
     */
    public function getCertificatePair($key_id)
    {
        if(key_exists($key_id, $this->_keyPairs)) {
            return $this->_keyPairs[$key_id];
        }

        throw new Zend_InfoCard_Exception("Invalid Certificate Pair ID provided: $key_id");
    }

    /**
     * Retrieve the digest of a given public key / certificate using the provided digest
     * method
     *
     * @throws Zend_InfoCard_Exception
     * @param string $key_id The certificate key id in the component
     * @param string $digestMethod The URI of the digest method to use (default SHA1)
     * @return string The digest value in binary format
     */
    protected function _getPublicKeyDigest($key_id, $digestMethod = self::DIGEST_SHA1)
    {
        $certificatePair = $this->getCertificatePair($key_id);

        $temp = file($certificatePair['public']);
        unset($temp[count($temp)-1]);
        unset($temp[0]);
        $certificateData = base64_decode(implode("\n", $temp));

        switch($digestMethod) {
            case self::DIGEST_SHA1:
                $digest_retval = sha1($certificateData, true);
                break;
            default:
                throw new Zend_InfoCard_Exception("Invalid Digest Type Provided: $digestMethod");
        }

        return $digest_retval;
    }

    /**
     * Find a certificate pair based on a digest of its public key / certificate file
     *
     * @param string $digest The digest value of the public key wanted in binary form
     * @param string $digestMethod The URI of the digest method used to calculate the digest
     * @return mixed The Key ID of the matching certificate pair or false if not found
     */
    protected function _findCertifiatePairByDigest($digest, $digestMethod = self::DIGEST_SHA1)
    {

        foreach($this->_keyPairs as $key_id => $certificate_data) {

            $cert_digest = $this->_getPublicKeyDigest($key_id, $digestMethod);

            if($cert_digest == $digest) {
                return $key_id;
            }
        }

        return false;
    }

    /**
     * Extracts the Signed Token from an EncryptedData block
     *
     * @throws Zend_InfoCard_Exception
     * @param string $strXmlToken The EncryptedData XML block
     * @return string The XML of the Signed Token inside of the EncryptedData block
     */
    protected function _extractSignedToken($strXmlToken)
    {
        $encryptedData = Zend_InfoCard_Xml_EncryptedData::getInstance($strXmlToken);

        // Determine the Encryption Method used to encrypt the token

        switch($encryptedData->getEncryptionMethod()) {
            case Zend_InfoCard_Cipher::ENC_AES128CBC:
            case Zend_InfoCard_Cipher::ENC_AES256CBC:
                break;
            default:
                throw new Zend_InfoCard_Exception("Unknown Encryption Method used in the secure token");
        }

        // Figure out the Key we are using to decrypt the token

        $keyinfo = $encryptedData->getKeyInfo();

        if(!($keyinfo instanceof Zend_InfoCard_Xml_KeyInfo_XmlDSig)) {
            throw new Zend_InfoCard_Exception("Expected a XML digital signature KeyInfo, but was not found");
        }


        $encryptedKey = $keyinfo->getEncryptedKey();

        switch($encryptedKey->getEncryptionMethod()) {
            case Zend_InfoCard_Cipher::ENC_RSA:
            case Zend_InfoCard_Cipher::ENC_RSA_OAEP_MGF1P:
                break;
            default:
                throw new Zend_InfoCard_Exception("Unknown Key Encryption Method used in secure token");
        }

        $securityTokenRef = $encryptedKey->getKeyInfo()->getSecurityTokenReference();

        $key_id = $this->_findCertifiatePairByDigest($securityTokenRef->getKeyReference());

        if(!$key_id) {
            throw new Zend_InfoCard_Exception("Unable to find key pair used to encrypt symmetric InfoCard Key");
        }

        $certificate_pair = $this->getCertificatePair($key_id);

        // Santity Check

        if($certificate_pair['type_uri'] != $encryptedKey->getEncryptionMethod()) {
            throw new Zend_InfoCard_Exception("Certificate Pair which matches digest is not of same algorithm type as document, check addCertificate()");
        }

        $PKcipher = Zend_InfoCard_Cipher::getInstanceByURI($encryptedKey->getEncryptionMethod());

        $base64DecodeSupportsStrictParam = version_compare(PHP_VERSION, '5.2.0', '>=');

        if ($base64DecodeSupportsStrictParam) {
            $keyCipherValueBase64Decoded = base64_decode($encryptedKey->getCipherValue(), true);
        } else {
            $keyCipherValueBase64Decoded = base64_decode($encryptedKey->getCipherValue());
        }

        $symmetricKey = $PKcipher->decrypt(
            $keyCipherValueBase64Decoded,
            file_get_contents($certificate_pair['private']),
            $certificate_pair['password']
            );

        $symCipher = Zend_InfoCard_Cipher::getInstanceByURI($encryptedData->getEncryptionMethod());

        if ($base64DecodeSupportsStrictParam) {
            $dataCipherValueBase64Decoded = base64_decode($encryptedData->getCipherValue(), true);
        } else {
            $dataCipherValueBase64Decoded = base64_decode($encryptedData->getCipherValue());
        }

        $signedToken = $symCipher->decrypt($dataCipherValueBase64Decoded, $symmetricKey);

        return $signedToken;
    }

    /**
     * Process an input Infomation Card EncryptedData block sent from the client,
     * validate it, and return the claims contained within it on success or an error message on error
     *
     * @param string $strXmlToken The XML token sent to the server from the client
     * @return Zend_Infocard_Claims The Claims object containing the claims, or any errors which occurred
     */
    public function process($strXmlToken)
    {

        $retval = new Zend_InfoCard_Claims();

        try {
            $signedAssertionsXml = $this->_extractSignedToken($strXmlToken);
        } catch(Zend_InfoCard_Exception $e) {
            $retval->setError('Failed to extract assertion document');
            $retval->setCode(Zend_InfoCard_Claims::RESULT_PROCESSING_FAILURE);
            return $retval;
        }

        try {
            $assertions = Zend_InfoCard_Xml_Assertion::getInstance($signedAssertionsXml);
        } catch(Zend_InfoCard_Exception $e) {
            $retval->setError('Failure processing assertion document');
            $retval->setCode(Zend_InfoCard_Claims::RESULT_PROCESSING_FAILURE);
            return $retval;
        }

        if(!($assertions instanceof Zend_InfoCard_Xml_Assertion_Interface)) {
            throw new Zend_InfoCard_Exception("Invalid Assertion Object returned");
        }

        if(!($reference_id = Zend_InfoCard_Xml_Security::validateXMLSignature($assertions->asXML()))) {
            $retval->setError("Failure Validating the Signature of the assertion document");
            $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE);
            return $retval;
        }

        // The reference id should be locally scoped as far as I know
        if($reference_id[0] == '#') {
            $reference_id = substr($reference_id, 1);
        } else {
            $retval->setError("Reference of document signature does not reference the local document");
            $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE);
            return $retval;
        }

        // Make sure the signature is in reference to the same document as the assertions
        if($reference_id != $assertions->getAssertionID()) {
            $retval->setError("Reference of document signature does not reference the local document");
            $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE);
        }

        // Validate we haven't seen this before and the conditions are acceptable
        $conditions = $this->getAdapter()->retrieveAssertion($assertions->getAssertionURI(), $assertions->getAssertionID());

        if($conditions === false) {
            $conditions = $assertions->getConditions();
        }


        if(is_array($condition_error = $assertions->validateConditions($conditions))) {
            $retval->setError("Conditions of assertion document are not met: {$condition_error[1]} ({$condition_error[0]})");
            $retval->setCode(Zend_InfoCard_Claims::RESULT_VALIDATION_FAILURE);
        }

        $attributes = $assertions->getAttributes();

        $retval->setClaims($attributes);

        if($retval->getCode() == 0) {
            $retval->setCode(Zend_InfoCard_Claims::RESULT_SUCCESS);
        }

        return $retval;
    }
}
PKpG[��#cMM#Wildfire/Plugin/FirePhp/Message.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * A message envelope that can be passed to Zend_Wildfire_Plugin_FirePhp to be
 * logged to Firebug instead of a variable.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Plugin_FirePhp_Message
{
    /**
     * The style of the message
     * @var string
     */
    protected $_style = null;
    
    /**
     * The label of the message
     * @var string
     */
    protected $_label = null;
    
    /**
     * The message value
     * @var mixed
     */
    protected $_message = null;
    
    /**
     * Flag indicating if message buffering is enabled
     * @var boolean
     */
    protected $_buffered = false;

    /**
     * Flag indicating if message should be destroyed and not delivered
     * @var boolean
     */
    protected $_destroy = false;
    
    /**
     * Random unique ID used to identify message in comparison operations
     * @var string
     */
    protected $_ruid = false;

    /**
     * Creates a new message with the given style and message
     * 
     * @param string $style Style of the message.
     * @param mixed $message The message
     * @return void
     */
    function __construct($style, $message)
    {
        $this->_style = $style;
        $this->_message = $message;
        $this->_ruid = md5(microtime().mt_rand());
    }
    
    /**
     * Set the label of the message
     * 
     * @param string $label The label to be set
     * @return void
     */
    public function setLabel($label)
    {
        $this->_label = $label;
    }
    
    /**
     * Get the label of the message
     * 
     * @return string The label of the message
     */
    public function getLabel()
    {
        return $this->_label;
    }
    
    /**
     * Enable or disable message buffering
     * 
     * If a message is buffered it can be updated for the duration of the
     * request and is only flushed at the end of the request.
     * 
     * @param boolean $buffered TRUE to enable buffering FALSE otherwise
     * @return boolean Returns previous buffering value
     */
    public function setBuffered($buffered)
    {
        $previous = $this->_buffered;
        $this->_buffered = $buffered;
        return $previous;
    }

    /**
     * Determine if buffering is enabled or disabled
     * 
     * @return boolean Returns TRUE if buffering is enabled, FALSE otherwise. 
     */
    public function getBuffered()
    {
        return $this->_buffered;
    }
    
    /**
     * Destroy the message to prevent delivery
     * 
     * @param boolean $destroy TRUE to destroy FALSE otherwise
     * @return boolean Returns previous destroy value
     */
    public function setDestroy($destroy)
    {
        $previous = $this->_destroy;
        $this->_destroy = $destroy;
        return $previous;
    }
    
    /**
     * Determine if message should be destroyed
     * 
     * @return boolean Returns TRUE if message should be destroyed, FALSE otherwise. 
     */
    public function getDestroy()
    {
        return $this->_destroy;
    }

    /**
     * Set the style of the message
     * 
     * @return void
     */
    public function setStyle($style)
    {
        $this->_style = $style;
    }

    /**
     * Get the style of the message
     * 
     * @return string The style of the message
     */
    public function getStyle()
    {
        return $this->_style;
    }

    /**
     * Set the actual message to be sent in its final format.
     * 
     * @return void
     */
    public function setMessage($message)
    {
        $this->_message = $message;
    }

    /**
     * Get the actual message to be sent in its final format.
     * 
     * @return mixed Returns the message to be sent.
     */
    public function getMessage()
    {
        return $this->_message;
    }
}

PKpG[g�

(Wildfire/Plugin/FirePhp/TableMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Wildfire_Plugin_FirePhp */
require_once 'Zend/Wildfire/Plugin/FirePhp.php';

/** Zend_Wildfire_Plugin_FirePhp_Message */
require_once 'Zend/Wildfire/Plugin/FirePhp/Message.php';

/**
 * A message envelope that can be updated for the duration of the requet before
 * it gets flushed at the end of the request.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Plugin_FirePhp_TableMessage extends Zend_Wildfire_Plugin_FirePhp_Message
{
    /**
     * The header of the table containing all columns
     * @var array
     */
    protected $_header = null;
    
    /**
     * The rows of the table
     * $var array
     */ 
    protected $_rows = array();
    
    /**
     * Constructor
     * 
     * @param string $label The label of the table
     */
    function __construct($label)
    {
        parent::__construct(Zend_Wildfire_Plugin_FirePhp::TABLE, null);
        $this->setLabel($label);
    }
    
    /**
     * Set the table header
     * 
     * @param array $header The header columns
     * @return void
     */
    public function setHeader($header)
    {
        $this->_header = $header;
    }
    
    /**
     * Append a row to the end of the table.
     * 
     * @param array $row An array of column values representing a row.
     * @return void
     */
    public function addRow($row)
    {
        $this->_rows[] = $row;
    }
    
    /**
     * Get the actual message to be sent in its final format.
     * 
     * @return mixed Returns the message to be sent.
     */
    public function getMessage()
    {
        $table = $this->_rows;
        array_unshift($table,$this->_header);
        return $table;
    }

}

PKpG[(״3``Wildfire/Plugin/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Wildfire_Plugin_Interface
{
    
    /**
     * Flush any buffered data.
     * 
     * @param string $protocolUri The URI of the protocol that should be flushed to
     * @return void
     */
    public function flushMessages($protocolUri);
    
    /**
     * Get the unique indentifier for this plugin.
     * 
     * @return string Returns the URI of the plugin.
     */
    public function getUri();
    
}
PKpG[���6K6KWildfire/Plugin/FirePhp.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Loader */
require_once 'Zend/Loader.php';

/** Zend_Wildfire_Exception */
require_once 'Zend/Wildfire/Exception.php';

/** Zend_Controller_Request_Abstract */
require_once('Zend/Controller/Request/Abstract.php');

/** Zend_Controller_Response_Abstract */
require_once('Zend/Controller/Response/Abstract.php');

/** Zend_Wildfire_Channel_HttpHeaders */
require_once 'Zend/Wildfire/Channel/HttpHeaders.php';

/** Zend_Wildfire_Protocol_JsonStream */
require_once 'Zend/Wildfire/Protocol/JsonStream.php';

/** Zend_Wildfire_Plugin_Interface */
require_once 'Zend/Wildfire/Plugin/Interface.php';

/**
 * Primary class for communicating with the FirePHP Firefox Extension.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Plugin
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Plugin_FirePhp implements Zend_Wildfire_Plugin_Interface
{
    /**
     * Plain log style.
     */
    const LOG = 'LOG';
    
    /**
     * Information style.
     */
    const INFO = 'INFO';
    
    /**
     * Warning style.
     */
    const WARN = 'WARN';
    
    /**
     * Error style that increments Firebug's error counter.
     */
    const ERROR = 'ERROR';
    
    /**
     * Trace style showing message and expandable full stack trace.
     */
    const TRACE = 'TRACE';
    
    /**
     * Exception style showing message and expandable full stack trace.
     * Also increments Firebug's error counter.
     */
    const EXCEPTION = 'EXCEPTION';
    
    /**
     * Table style showing summary line and expandable table
     */
    const TABLE = 'TABLE';

    /**
     * Dump variable to Server panel in Firebug Request Inspector
     */
    const DUMP = 'DUMP';
  
    /**
     * Start a group in the Firebug Console
     */
    const GROUP_START = 'GROUP_START';
  
    /**
     * End a group in the Firebug Console
     */
    const GROUP_END = 'GROUP_END';
  
    /**
     * The plugin URI for this plugin
     */
    const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/ZendFramework/FirePHP/1.6.2';
    
    /**
     * The protocol URI for this plugin
     */
    const PROTOCOL_URI = Zend_Wildfire_Protocol_JsonStream::PROTOCOL_URI;
    
    /**
     * The structure URI for the Dump structure
     */
    const STRUCTURE_URI_DUMP = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1';

    /**
     * The structure URI for the Firebug Console structure
     */
    const STRUCTURE_URI_FIREBUGCONSOLE = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1';
  
    /**
     * Singleton instance
     * @var Zend_Wildfire_Plugin_FirePhp
     */
    protected static $_instance = null;

    /**
     * Flag indicating whether FirePHP should send messages to the user-agent.
     * @var boolean
     */
    protected $_enabled = true;
    
    /**
     * The channel via which to send the encoded messages.
     * @var Zend_Wildfire_Channel_Interface
     */
    protected $_channel = null;
    
    /**
     * Messages that are buffered to be sent when protocol flushes
     * @var array
     */
    protected $_messages = array();
    
    /**
     * The maximum depth to traverse objects when encoding
     * @var int
     */    
    protected $_maxObjectDepth = 10;
    
    /**
     * The maximum depth to traverse nested arrays when encoding
     * @var int
     */    
    protected $_maxArrayDepth = 20;
    
    /**
     * A stack of objects used during encoding to detect recursion
     * @var array
     */
    protected $_objectStack = array();
    
    /**
     * Create singleton instance.
     *
     * @param string $class OPTIONAL Subclass of Zend_Wildfire_Plugin_FirePhp
     * @return Zend_Wildfire_Plugin_FirePhp Returns the singleton Zend_Wildfire_Plugin_FirePhp instance
     * @throws Zend_Wildfire_Exception
     */
    public static function init($class = null)
    {
        if (self::$_instance!==null) {
            throw new Zend_Wildfire_Exception('Singleton instance of Zend_Wildfire_Plugin_FirePhp already exists!');
        }
        if ($class!==null) {
            if (!is_string($class)) {
                throw new Zend_Wildfire_Exception('Third argument is not a class string');
            }
            Zend_Loader::loadClass($class);
            self::$_instance = new $class();
            if (!self::$_instance instanceof Zend_Wildfire_Plugin_FirePhp) {
                self::$_instance = null;
                throw new Zend_Wildfire_Exception('Invalid class to third argument. Must be subclass of Zend_Wildfire_Plugin_FirePhp.');
            }
        } else {
            self::$_instance = new self();
        }
        
        return self::$_instance;
    }
    
    /**
     * Constructor
     * @return void
     */
    protected function __construct()
    {
        $this->_channel = Zend_Wildfire_Channel_HttpHeaders::getInstance();
        $this->_channel->getProtocol(self::PROTOCOL_URI)->registerPlugin($this);
    }

    /**
     * Get or create singleton instance
     * 
     * @param $skipCreate boolean True if an instance should not be created
     * @return Zend_Wildfire_Plugin_FirePhp
     */
    public static function getInstance($skipCreate=false)
    {  
        if (self::$_instance===null && $skipCreate!==true) {
            return self::init();               
        }
        return self::$_instance;
    }
    
    /**
     * Destroys the singleton instance
     *
     * Primarily used for testing.
     *
     * @return void
     */
    public static function destroyInstance()
    {
        self::$_instance = null;
    }    
    
    /**
     * Enable or disable sending of messages to user-agent.
     * If disabled all headers to be sent will be removed.
     * 
     * @param boolean $enabled Set to TRUE to enable sending of messages. 
     * @return boolean The previous value.
     */
    public function setEnabled($enabled)
    {
        $previous = $this->_enabled;
        $this->_enabled = $enabled;
        if (!$this->_enabled) {
            $this->_messages = array();
            $this->_channel->getProtocol(self::PROTOCOL_URI)->clearMessages($this);
        }
        return $previous;
    }
    
    /**
     * Determine if logging to user-agent is enabled.
     * 
     * @return boolean Returns TRUE if logging is enabled.
     */
    public function getEnabled()
    {
        return $this->_enabled;
    }
    
    /**
     * Starts a group in the Firebug Console
     * 
     * @param string $title The title of the group
     * @return TRUE if the group instruction was added to the response headers or buffered.
     */
    public static function group($title)
    {
        return self::send(null, $title, self::GROUP_START);
    }
    
    /**
     * Ends a group in the Firebug Console
     * 
     * @return TRUE if the group instruction was added to the response headers or buffered.
     */
    public static function groupEnd()
    {
        return self::send(null, null, self::GROUP_END);
    }
            
    /**
     * Logs variables to the Firebug Console
     * via HTTP response headers and the FirePHP Firefox Extension.
     *
     * @param  mixed  $var   The variable to log.
     * @param  string  $label OPTIONAL Label to prepend to the log event.
     * @param  string  $style  OPTIONAL Style of the log event.
     * @return boolean Returns TRUE if the variable was added to the response headers or buffered.
     * @throws Zend_Wildfire_Exception
     */
    public static function send($var, $label=null, $style=null)
    {
        if (self::$_instance===null) {
            self::getInstance();
        }

        if (!self::$_instance->_enabled) {
            return false; 
        }

        if ($var instanceof Zend_Wildfire_Plugin_FirePhp_Message) {

            if ($var->getBuffered()) {
                if (!in_array($var, self::$_instance->_messages)) {
                    self::$_instance->_messages[] = $var;
                }
                return true;              
            }
            
            if ($var->getDestroy()) {
                return false;  
            }

            $style = $var->getStyle();
            $label = $var->getLabel();
            $var = $var->getMessage();
        }
      
        if (!self::$_instance->_channel->isReady()) {
            return false; 
        }

        if ($var instanceof Exception) {

            $var = array('Class'=>get_class($var),
                         'Message'=>$var->getMessage(),
                         'File'=>$var->getFile(),
                         'Line'=>$var->getLine(),
                         'Type'=>'throw',
                         'Trace'=>$var->getTrace());
  
            $style = self::EXCEPTION;
          
        } else
        if ($style==self::TRACE) {
            
            $trace = debug_backtrace();
            if(!$trace) return false;

            for ( $i=0 ; $i<sizeof($trace) ; $i++ ) {
                if (isset($trace[$i]['class']) &&
                    substr($trace[$i]['class'],0,8)!='Zend_Log' &&
                    substr($trace[$i]['class'],0,13)!='Zend_Wildfire') {
                  
                    $i--;
                    break;
                }
            }

            if ($i==sizeof($trace)) {
                $i = 0;
            }

            $var = array('Class'=>$trace[$i]['class'],
                         'Type'=>$trace[$i]['type'],
                         'Function'=>$trace[$i]['function'],
                         'Message'=>(isset($trace[$i]['args'][0]))?$trace[$i]['args'][0]:'',
                         'File'=>(isset($trace[$i]['file']))?$trace[$i]['file']:'',
                         'Line'=>(isset($trace[$i]['line']))?$trace[$i]['line']:'',
                         'Args'=>$trace[$i]['args'],
                         'Trace'=>array_splice($trace,$i+1));
        } else {
            if ($style===null) {
                $style = self::LOG;
            }
        }

        switch ($style) {
            case self::LOG:
            case self::INFO:
            case self::WARN:
            case self::ERROR:
            case self::EXCEPTION:
            case self::TRACE:
            case self::TABLE:
            case self::DUMP:
            case self::GROUP_START:
            case self::GROUP_END:
                break;
            default:
                throw new Zend_Wildfire_Exception('Log style "'.$style.'" not recognized!');
                break;
        }
        
        if ($style == self::DUMP) {
          
          return self::$_instance->_recordMessage(self::STRUCTURE_URI_DUMP,
                                                  array('key'=>$label,
                                                        'data'=>$var));
          
        } else {

          $meta = array('Type'=>$style);
 
          if ($label!=null) {
              $meta['Label'] = $label;
          }

          return self::$_instance->_recordMessage(self::STRUCTURE_URI_FIREBUGCONSOLE,
                                                  array('data'=>$var,
                                                        'meta'=>$meta));
        }
    }
    
    
    /**
     * Record a message with the given data in the given structure
     * 
     * @param string $structure The structure to be used for the data
     * @param array $data The data to be recorded
     * @return boolean Returns TRUE if message was recorded
     * @throws Zend_Wildfire_Exception
     */
    protected function _recordMessage($structure, $data)
    {
        switch($structure) {

            case self::STRUCTURE_URI_DUMP:
            
                if (!isset($data['key'])) {
                    throw new Zend_Wildfire_Exception('You must supply a key.');
                }
                if (!array_key_exists('data',$data)) {
                    throw new Zend_Wildfire_Exception('You must supply data.');
                }
                
                return $this->_channel->getProtocol(self::PROTOCOL_URI)->
                           recordMessage($this,
                                         $structure,
                                         array($data['key']=>$this->_encodeObject($data['data'])));
                
            case self::STRUCTURE_URI_FIREBUGCONSOLE:
            
                if (!isset($data['meta']) ||
                    !is_array($data['meta']) ||
                    !array_key_exists('Type',$data['meta'])) {
                      
                    throw new Zend_Wildfire_Exception('You must supply a "Type" in the meta information.');
                }
                if (!array_key_exists('data',$data)) {
                    throw new Zend_Wildfire_Exception('You must supply data.');
                }
              
                return $this->_channel->getProtocol(self::PROTOCOL_URI)->
                           recordMessage($this,
                                         $structure,
                                         array($data['meta'],
                                               $this->_encodeObject($data['data'])));

            default:
                throw new Zend_Wildfire_Exception('Structure of name "'.$structure.'" is not recognized.');
                break;  
        }
        return false;      
    }
    
    /**
     * Encode an object by generating an array containing all object members.
     * 
     * All private and protected members are included. Some meta info about
     * the object class is added.
     * 
     * @param mixed $object The object/array/value to be encoded
     * @return array The encoded object
     */
    protected function _encodeObject($object, $depth = 1)
    {
        $return = array();
        
        if (is_resource($object)) {
    
            return '** '.(string)$object.' **';
    
        } else    
        if (is_object($object)) {

            if ($depth > $this->_maxObjectDepth) {
                return '** Max Depth **';
            }
            
            foreach ($this->_objectStack as $refVal) {
                if ($refVal === $object) {
                    return '** Recursion ('.get_class($object).') **';
                }
            }
            array_push($this->_objectStack, $object);
                    
            $return['__className'] = $class = get_class($object);
    
            $reflectionClass = new ReflectionClass($class);  
            $properties = array();
            foreach ( $reflectionClass->getProperties() as $property) {
                $properties[$property->getName()] = $property;
            }
                
            $members = (array)$object;
                
            foreach ($properties as $raw_name => $property) {
    
              $name = $raw_name;
              if ($property->isStatic()) {
                  $name = 'static:'.$name;
              }
              if ($property->isPublic()) {
                  $name = 'public:'.$name;
              } else
              if ($property->isPrivate()) {
                  $name = 'private:'.$name;
                  $raw_name = "\0".$class."\0".$raw_name;
              } else
              if ($property->isProtected()) {
                  $name = 'protected:'.$name;
                  $raw_name = "\0".'*'."\0".$raw_name;
              }
              
              if (array_key_exists($raw_name,$members)
                  && !$property->isStatic()) {
                
                  $return[$name] = $this->_encodeObject($members[$raw_name], $depth + 1);      
              
              } else {
                  if (method_exists($property,'setAccessible')) {
                      $property->setAccessible(true);
                      $return[$name] = $this->_encodeObject($property->getValue($object), $depth + 1);
                  } else
                  if ($property->isPublic()) {
                      $return[$name] = $this->_encodeObject($property->getValue($object), $depth + 1);
                  } else {
                      $return[$name] = '** Need PHP 5.3 to get value **';
                  }
              }
            }
            
            // Include all members that are not defined in the class
            // but exist in the object
            foreach($members as $name => $value) {
                if ($name{0} == "\0") {
                    $parts = explode("\0", $name);
                    $name = $parts[2];
                }
                if (!isset($properties[$name])) {
                    $name = 'undeclared:'.$name;
                    $return[$name] = $this->_encodeObject($value, $depth + 1);
                }
            }
            
            array_pop($this->_objectStack);
            
        } elseif (is_array($object)) {
          
            if ($depth > $this->_maxArrayDepth) {
                return '** Max Depth **';
            }

            foreach ($object as $key => $val) {
              
              // Encoding the $GLOBALS PHP array causes an infinite loop
              // if the recursion is not reset here as it contains
              // a reference to itself. This is the only way I have come up
              // with to stop infinite recursion in this case.
              if ($key=='GLOBALS'
                  && is_array($val)
                  && array_key_exists('GLOBALS',$val)) {
                  
                  $val['GLOBALS'] = '** Recursion (GLOBALS) **';
              }
              $return[$key] = $this->_encodeObject($val, $depth + 1);
            }
        } else {
            return $object;
        }
        return $return;
    }    
    
    
    /*
     * Zend_Wildfire_Plugin_Interface
     */

    /**
     * Get the unique indentifier for this plugin.
     * 
     * @return string Returns the URI of the plugin.
     */
    public function getUri()
    {
        return self::PLUGIN_URI;
    }
    
    /**
     * Flush any buffered data.
     * 
     * @param string $protocolUri The URI of the protocol that should be flushed to
     * @return void
     */
    public function flushMessages($protocolUri)
    {
        if(!$this->_messages || $protocolUri!=self::PROTOCOL_URI) {
            return;
        }

        foreach( $this->_messages as $message ) {
            if (!$message->getDestroy()) {
                $this->send($message->getMessage(), $message->getLabel(), $message->getStyle());
            }
        }
        
        $this->_messages = array();
    }
}
PKpG[P?��BBWildfire/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Exception */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Wildfire
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Exception extends Zend_Exception
{}

PKpG[��_�UUWildfire/Channel/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @category   Zend
 * @package    Zend_Wildfire
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Wildfire_Channel_Interface
{
  
    /**
     * Determine if channel is ready.
     * 
     * @return boolean Returns TRUE if channel is ready.
     */
    public function isReady();
    
}
PKpG[��WD'!'! Wildfire/Channel/HttpHeaders.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Channel
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Wildfire_Channel_Interface */
require_once 'Zend/Wildfire/Channel/Interface.php';

/** Zend_Wildfire_Exception */
require_once 'Zend/Wildfire/Exception.php';

/** Zend_Controller_Request_Abstract */
require_once('Zend/Controller/Request/Abstract.php');

/** Zend_Controller_Response_Abstract */
require_once('Zend/Controller/Response/Abstract.php');

/** Zend_Controller_Plugin_Abstract */
require_once 'Zend/Controller/Plugin/Abstract.php';

/** Zend_Wildfire_Protocol_JsonStream */
require_once 'Zend/Wildfire/Protocol/JsonStream.php';

/** Zend_Controller_Front **/
require_once 'Zend/Controller/Front.php';

/**
 * Implements communication via HTTP request and response headers for Wildfire Protocols.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Channel
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Channel_HttpHeaders extends Zend_Controller_Plugin_Abstract implements Zend_Wildfire_Channel_Interface
{
    /**
     * The string to be used to prefix the headers.
     * @var string
     */
    protected static $_headerPrefix = 'X-WF-';
 
    /**
     * Singleton instance
     * @var Zend_Wildfire_Channel_HttpHeaders
     */
    protected static $_instance = null;
    
    /**
     * The index of the plugin in the controller dispatch loop plugin stack
     * @var integer
     */
    protected static $_controllerPluginStackIndex = 999;
     
    /**
     * The protocol instances for this channel
     * @var array
     */
    protected $_protocols = null;
        
    /**
     * Initialize singleton instance.
     *
     * @param string $class OPTIONAL Subclass of Zend_Wildfire_Channel_HttpHeaders
     * @return Zend_Wildfire_Channel_HttpHeaders Returns the singleton Zend_Wildfire_Channel_HttpHeaders instance
     * @throws Zend_Wildfire_Exception
     */
    public static function init($class = null)
    {
        if (self::$_instance!==null) {
            throw new Zend_Wildfire_Exception('Singleton instance of Zend_Wildfire_Channel_HttpHeaders already exists!');
        }
        if ($class!==null) {
            if (!is_string($class)) {
                throw new Zend_Wildfire_Exception('Third argument is not a class string');
            }
            Zend_Loader::loadClass($class);
            self::$_instance = new $class();
            if (!self::$_instance instanceof Zend_Wildfire_Channel_HttpHeaders) {
                self::$_instance = null;
                throw new Zend_Wildfire_Exception('Invalid class to third argument. Must be subclass of Zend_Wildfire_Channel_HttpHeaders.');
            }
        } else {
          self::$_instance = new self();
        }
        
        return self::$_instance;
    }


    /**
     * Get or create singleton instance
     * 
     * @param $skipCreate boolean True if an instance should not be created
     * @return Zend_Wildfire_Channel_HttpHeaders
     */
    public static function getInstance($skipCreate=false)
    {  
        if (self::$_instance===null && $skipCreate!==true) {
            return self::init();               
        }
        return self::$_instance;
    }
    
    /**
     * Destroys the singleton instance
     *
     * Primarily used for testing.
     *
     * @return void
     */
    public static function destroyInstance()
    {
        self::$_instance = null;
    }
    
    /**
     * Get the instance of a give protocol for this channel
     * 
     * @param string $uri The URI for the protocol
     * @return object Returns the protocol instance for the diven URI
     */
    public function getProtocol($uri)
    {
        if (!isset($this->_protocols[$uri])) {
            $this->_protocols[$uri] = $this->_initProtocol($uri);
        }
 
        $this->_registerControllerPlugin();

        return $this->_protocols[$uri];
    }
    
    /**
     * Initialize a new protocol
     * 
     * @param string $uri The URI for the protocol to be initialized
     * @return object Returns the new initialized protocol instance
     * @throws Zend_Wildfire_Exception
     */
    protected function _initProtocol($uri)
    {
        switch ($uri) {
            case Zend_Wildfire_Protocol_JsonStream::PROTOCOL_URI;
                return new Zend_Wildfire_Protocol_JsonStream();
        }
        throw new Zend_Wildfire_Exception('Tyring to initialize unknown protocol for URI "'.$uri.'".');
    }
    
    
    /**
     * Flush all data from all protocols and send all data to response headers.
     *
     * @return boolean Returns TRUE if data was flushed
     */
    public function flush()
    {
        if (!$this->_protocols || !$this->isReady()) {
            return false;
        }

        foreach ( $this->_protocols as $protocol ) {

            $payload = $protocol->getPayload($this);

            if ($payload) {
                foreach( $payload as $message ) {

                    $this->getResponse()->setHeader(self::$_headerPrefix.$message[0],
                                                    $message[1], true);
                }
            }
        }
        return true;
    }
    
    /**
     * Set the index of the plugin in the controller dispatch loop plugin stack
     * 
     * @param integer $index The index of the plugin in the stack
     * @return integer The previous index.
     */
    public static function setControllerPluginStackIndex($index)
    {
        $previous = self::$_controllerPluginStackIndex;
        self::$_controllerPluginStackIndex = $index;
        return $previous;
    }

    /**
     * Register this object as a controller plugin.
     * 
     * @return void
     */
    protected function _registerControllerPlugin()
    {
        $controller = Zend_Controller_Front::getInstance();
        if (!$controller->hasPlugin(get_class($this))) {
            $controller->registerPlugin($this, self::$_controllerPluginStackIndex);
        }        
    }

    
    /*
     * Zend_Wildfire_Channel_Interface 
     */

    /**
     * Determine if channel is ready.
     * 
     * @return boolean Returns TRUE if channel is ready.
     */
    public function isReady()
    {
        return ($this->getResponse()->canSendHeaders() &&
                preg_match_all('/\s?FirePHP\/([\.|\d]*)\s?/si',
                               $this->getRequest()->getHeader('User-Agent'),$m));
    }


    /*
     * Zend_Controller_Plugin_Abstract 
     */

    /**
     * Flush messages to headers as late as possible but before headers have been sent.
     *
     * @return void
     */
    public function dispatchLoopShutdown()
    {
        $this->flush();
    }
    
    /**
     * Get the request object
     * 
     * @return Zend_Controller_Request_Abstract
     * @throws Zend_Wildfire_Exception
     */
    public function getRequest()
    {
        if (!$this->_request) {
            $controller = Zend_Controller_Front::getInstance();
            $this->setRequest($controller->getRequest());
        }
        if (!$this->_request) {
            throw new Zend_Wildfire_Exception('Request objects not initialized.');
        }
        return $this->_request;
    }

    /**
     * Get the response object
     * 
     * @return Zend_Controller_Response_Abstract
     * @throws Zend_Wildfire_Exception
     */
    public function getResponse()
    {
        if (!$this->_response) {
            $response = Zend_Controller_Front::getInstance()->getResponse();
            if ($response) {
                $this->setResponse($response);
            }
        }
        if (!$this->_response) {
            throw new Zend_Wildfire_Exception('Response objects not initialized.');
        }
        return $this->_response;
    }
}
PKpG[N�r� Wildfire/Protocol/JsonStream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Wildfire_Exception */
require_once 'Zend/Wildfire/Exception.php';

/** Zend_Wildfire_Plugin_Interface */
require_once 'Zend/Wildfire/Plugin/Interface.php';

/** Zend_Wildfire_Channel_Interface */
require_once 'Zend/Wildfire/Channel/Interface.php';

/** Zend_Json */
require_once 'Zend/Json.php';

/**
 * Encodes messages into the Wildfire JSON Stream Communication Protocol.
 * 
 * @category   Zend
 * @package    Zend_Wildfire
 * @subpackage Protocol
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Wildfire_Protocol_JsonStream
{
    /**
     * The protocol URI for this protocol
     */
    const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2';

    /**
     * All messages to be sent.
     * @var array
     */
    protected $_messages = array();

    /**
     * Plugins that are using this protocol
     * @var array
     */
    protected $_plugins = array();
    
    /**
     * Register a plugin that uses this protocol
     * 
     * @param Zend_Wildfire_Plugin_Interface $plugin The plugin to be registered
     * @return boolean Returns TRUE if plugin was registered, false if it was already registered
     */
    public function registerPlugin(Zend_Wildfire_Plugin_Interface $plugin)
    {
        if (in_array($plugin,$this->_plugins)) {
            return false;
        }
        $this->_plugins[] = $plugin;
        return true;
    }

    /**
     * Record a message with the given data in the given structure
     * 
     * @param Zend_Wildfire_Plugin_Interface $plugin The plugin recording the message
     * @param string $structure The structure to be used for the data
     * @param array $data The data to be recorded
     * @return boolean Returns TRUE if message was recorded
     */
    public function recordMessage(Zend_Wildfire_Plugin_Interface $plugin, $structure, $data)
    {
        if(!isset($this->_messages[$structure])) {
            $this->_messages[$structure] = array();  
        }
        
        $uri = $plugin->getUri();
        
        if(!isset($this->_messages[$structure][$uri])) {
            $this->_messages[$structure][$uri] = array();  
        }
        
        $this->_messages[$structure][$uri][] = $this->_encode($data);
        return true;
    }

    /**
     * Remove all qued messages
     * 
     * @param Zend_Wildfire_Plugin_Interface $plugin The plugin for which to clear messages
     * @return boolean Returns TRUE if messages were present
     */
    public function clearMessages(Zend_Wildfire_Plugin_Interface $plugin)
    {
        $uri = $plugin->getUri();
        
        $present = false;
        foreach ($this->_messages as $structure => $messages) {
                
            if(!isset($this->_messages[$structure][$uri])) {
                continue;
            }
            
            $present = true;
            
            unset($this->_messages[$structure][$uri]);
            
            if (!$this->_messages[$structure]) {
                unset($this->_messages[$structure]);
            }
        }
        return $present;
    }

    /**
     * Get all qued messages
     * 
     * @return mixed Returns qued messages or FALSE if no messages are qued
     */
    public function getMessages()
    {
        if (!$this->_messages) {
            return false;
        }
        return $this->_messages;
    }

    /**
     * Use the JSON encoding scheme for the value specified
     *
     * @param mixed $value The value to be encoded
     * @return string  The encoded value
     */
    protected function _encode($value)
    {
        return Zend_Json::encode($value, true, array('silenceCyclicalExceptions'=>true));
    }

    /**
     * Retrieves all formatted data ready to be sent by the channel.
     * 
     * @param Zend_Wildfire_Channel_Interface $channel The instance of the channel that will be transmitting the data
     * @return mixed Returns the data to be sent by the channel.
     * @throws Zend_Wildfire_Exception
     */
    public function getPayload(Zend_Wildfire_Channel_Interface $channel)
    {
        if (!$channel instanceof Zend_Wildfire_Channel_HttpHeaders) {
            throw new Zend_Wildfire_Exception('The '.get_class($channel).' channel is not supported by the '.get_class($this).' protocol.');          
        }
        
        if ($this->_plugins) {
            foreach ($this->_plugins as $plugin) {
                $plugin->flushMessages(self::PROTOCOL_URI);
            }
        }
        
        if (!$this->_messages) {
            return false;
        }
                
        $protocol_index = 1;
        $structure_index = 1;
        $plugin_index = 1;
        $message_index = 1;

        $payload = array();

        $payload[] = array('Protocol-'.$protocol_index, self::PROTOCOL_URI);
        
        foreach ($this->_messages as $structure_uri => $plugin_messages ) {
            
            $payload[] = array($protocol_index.'-Structure-'.$structure_index, $structure_uri);

            foreach ($plugin_messages as $plugin_uri => $messages ) {
                
                $payload[] = array($protocol_index.'-Plugin-'.$plugin_index, $plugin_uri);
          
                foreach ($messages as $message) {
                  
                    $parts = explode("\n",chunk_split($message, 5000, "\n"));
                                    
                    for ($i=0 ; $i<count($parts) ; $i++) {

                        $part = $parts[$i];
                        if ($part) {

                            $msg = '';

                            if (count($parts)>2) {
                                $msg = (($i==0)?strlen($message):'')
                                       . '|' . $part . '|'
                                       . (($i<count($parts)-2)?'\\':'');
                            } else {
                                $msg = strlen($part) . '|' . $part . '|';
                            }

                            $payload[] = array($protocol_index . '-'
                                               . $structure_index . '-'
                                               . $plugin_index . '-'
                                               . $message_index,
                                               $msg);

                            $message_index++;
                            
                            if ($message_index > 99999) {
                                throw new Zend_Wildfire_Exception('Maximum number (99,999) of messages reached!');             
                            }
                        }
                    }
                }
                $plugin_index++;
            }
            $structure_index++;
        }

        return $payload;
    }

}

PKpG[��@�+�+
Config.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Config.php 12204 2008-10-30 20:42:37Z dasprid $
 */


/**
 * @category   Zend
 * @package    Zend_Config
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Config implements Countable, Iterator
{
    /**
     * Whether in-memory modifications to configuration data are allowed
     *
     * @var boolean
     */
    protected $_allowModifications;

    /**
     * Iteration index
     *
     * @var integer
     */
    protected $_index;

    /**
     * Number of elements in configuration data
     *
     * @var integer
     */
    protected $_count;

    /**
     * Contains array of configuration data
     *
     * @var array
     */
    protected $_data;


    /**
     * Contains which config file sections were loaded. This is null
     * if all sections were loaded, a string name if one section is loaded
     * and an array of string names if multiple sections were loaded.
     *
     * @var mixed
     */
    protected $_loadedSection;

    /**
     * This is used to track section inheritance. The keys are names of sections that
     * extend other sections, and the values are the extended sections.
     *
     * @var array
     */
    protected $_extends = array();

    /**
     * Load file error string.
     * 
     * Is null if there was no error while file loading
     *
     * @var string
     */
    protected $_loadFileErrorStr = null;

    /**
     * Zend_Config provides a property based interface to
     * an array. The data are read-only unless $allowModifications
     * is set to true on construction.
     *
     * Zend_Config also implements Countable and Iterator to
     * facilitate easy access to the data.
     *
     * @param  array   $array
     * @param  boolean $allowModifications
     * @return void
     */
    public function __construct(array $array, $allowModifications = false)
    {
        $this->_allowModifications = (boolean) $allowModifications;
        $this->_loadedSection = null;
        $this->_index = 0;
        $this->_data = array();
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                $this->_data[$key] = new self($value, $this->_allowModifications);
            } else {
                $this->_data[$key] = $value;
            }
        }
        $this->_count = count($this->_data);
    }

    /**
     * Retrieve a value and return $default if there is no element set.
     *
     * @param string $name
     * @param mixed $default
     * @return mixed
     */
    public function get($name, $default = null)
    {
        $result = $default;
        if (array_key_exists($name, $this->_data)) {
            $result = $this->_data[$name];
        }
        return $result;
    }

    /**
     * Magic function so that $obj->value will work.
     *
     * @param string $name
     * @return mixed
     */
    public function __get($name)
    {
        return $this->get($name);
    }

    /**
     * Only allow setting of a property if $allowModifications
     * was set to true on construction. Otherwise, throw an exception.
     *
     * @param  string $name
     * @param  mixed  $value
     * @throws Zend_Config_Exception
     * @return void
     */
    public function __set($name, $value)
    {
        if ($this->_allowModifications) {
            if (is_array($value)) {
                $this->_data[$name] = new self($value, true);
            } else {
                $this->_data[$name] = $value;
            }
            $this->_count = count($this->_data);
        } else {
            /** @see Zend_Config_Exception */
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Zend_Config is read only');
        }
    }
    
    /**
     * Deep clone of this instance to ensure that nested Zend_Configs
     * are also cloned.
     * 
     * @return void
     */
    public function __clone()
    {
      $array = array();
      foreach ($this->_data as $key => $value) {
          if ($value instanceof Zend_Config) {
              $array[$key] = clone $value;
          } else {
              $array[$key] = $value;
          }
      }
      $this->_data = $array;
    }

    /**
     * Return an associative array of the stored data.
     *
     * @return array
     */
    public function toArray()
    {
        $array = array();
        foreach ($this->_data as $key => $value) {
            if ($value instanceof Zend_Config) {
                $array[$key] = $value->toArray();
            } else {
                $array[$key] = $value;
            }
        }
        return $array;
    }

    /**
     * Support isset() overloading on PHP 5.1
     *
     * @param string $name
     * @return boolean
     */
    public function __isset($name)
    {
        return isset($this->_data[$name]);
    }

    /**
     * Support unset() overloading on PHP 5.1
     *
     * @param  string $name
     * @throws Zend_Config_Exception
     * @return void
     */
    public function __unset($name)
    {
        if ($this->_allowModifications) {
            unset($this->_data[$name]);
            $this->_count = count($this->_data);
        } else {
            /** @see Zend_Config_Exception */
            require_once 'Zend/Config/Exception.php';
            throw new Zend_Config_Exception('Zend_Config is read only');
        }

    }

    /**
     * Defined by Countable interface
     *
     * @return int
     */
    public function count()
    {
        return $this->_count;
    }

    /**
     * Defined by Iterator interface
     *
     * @return mixed
     */
    public function current()
    {
        return current($this->_data);
    }

    /**
     * Defined by Iterator interface
     *
     * @return mixed
     */
    public function key()
    {
        return key($this->_data);
    }

    /**
     * Defined by Iterator interface
     *
     */
    public function next()
    {
        next($this->_data);
        $this->_index++;
    }

    /**
     * Defined by Iterator interface
     *
     */
    public function rewind()
    {
        reset($this->_data);
        $this->_index = 0;
    }

    /**
     * Defined by Iterator interface
     *
     * @return boolean
     */
    public function valid()
    {
        return $this->_index < $this->_count;
    }

    /**
     * Returns the section name(s) loaded.
     *
     * @return mixed
     */
    public function getSectionName()
    {
        return $this->_loadedSection;
    }

    /**
     * Returns true if all sections were loaded
     *
     * @return boolean
     */
    public function areAllSectionsLoaded()
    {
        return $this->_loadedSection === null;
    }


    /**
     * Merge another Zend_Config with this one. The items
     * in $merge will override the same named items in
     * the current config.
     *
     * @param Zend_Config $merge
     * @return Zend_Config
     */
    public function merge(Zend_Config $merge)
    {
        foreach($merge as $key => $item) {
            if(array_key_exists($key, $this->_data)) {
                if($item instanceof Zend_Config && $this->$key instanceof Zend_Config) {
                    $this->$key = $this->$key->merge(new Zend_Config($item->toArray(), !$this->readOnly()));
                } else {
                    $this->$key = $item;
                }
            } else {
                if($item instanceof Zend_Config) {
                    $this->$key = new Zend_Config($item->toArray(), !$this->readOnly());
                } else {
                    $this->$key = $item;
                }
            }
        }

        return $this;
    }

    /**
     * Prevent any more modifications being made to this instance. Useful
     * after merge() has been used to merge multiple Zend_Config objects
     * into one object which should then not be modified again.
     *
     */
    public function setReadOnly()
    {
        $this->_allowModifications = false;
    }
    
    /**
     * Returns if this Zend_Config object is read only or not.
     *
     * @return boolean
     */
    public function readOnly()
    {
        return !$this->_allowModifications;
    }
    
    /**
     * Get the current extends
     *
     * @return array
     */
    public function getExtends()
    {
        return $this->_extends;
    }
    
    /**
     * Set an extend for Zend_Config_Writer
     *
     * @param  string $extendingSection
     * @param  string $extendedSection
     * @return void
     */
    public function setExtend($extendingSection, $extendedSection = null)
    {
        if ($extendedSection === null && isset($this->_extends[$extendingSection])) {
            unset($this->_extends[$extendingSection]);
        } else if ($extendedSection !== null) {
            $this->_extends[$extendingSection] = $extendedSection;
        }
    }
    
    /**
     * Throws an exception if $extendingSection may not extend $extendedSection,
     * and tracks the section extension if it is valid.
     *
     * @param  string $extendingSection
     * @param  string $extendedSection
     * @throws Zend_Config_Exception
     * @return void
     */
    protected function _assertValidExtend($extendingSection, $extendedSection)
    {
        // detect circular section inheritance
        $extendedSectionCurrent = $extendedSection;
        while (array_key_exists($extendedSectionCurrent, $this->_extends)) {
            if ($this->_extends[$extendedSectionCurrent] == $extendingSection) {
                /** @see Zend_Config_Exception */
                require_once 'Zend/Config/Exception.php';
                throw new Zend_Config_Exception('Illegal circular inheritance detected');
            }
            $extendedSectionCurrent = $this->_extends[$extendedSectionCurrent];
        }
        // remember that this section extends another section
        $this->_extends[$extendingSection] = $extendedSection;
    }

    /**
     * Handle any errors from simplexml_load_file or parse_ini_file
     *
     * @param integer $errno
     * @param string $errstr
     * @param string $errfile
     * @param integer $errline
     */
    protected function _loadFileErrorHandler($errno, $errstr, $errfile, $errline)
    { 
        if ($this->_loadFileErrorStr === null) {
            $this->_loadFileErrorStr = $errstr;
        } else {
            $this->_loadFileErrorStr .= (PHP_EOL . $errstr);
        }
    }

}
PKpG[B0}�IIMemory/Container/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Memory value container interface
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Memory_Container_Interface
{
    /**
     * Get string value reference
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @return &string
     */
    public function &getRef();

    /**
     * Signal, that value is updated by external code.
     *
     * Should be used together with getRef()
     */
    public function touch();

    /**
     * Lock object in memory.
     */
    public function lock();

    /**
     * Unlock object
     */
    public function unlock();

    /**
     * Return true if object is locked
     *
     * @return boolean
     */
    public function isLocked();
}

PKpG[-��a�	�	Memory/Container/Locked.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Memory_Exception */
require_once 'Zend/Memory/Exception.php';

/** Zend_Memory_Container */
require_once 'Zend/Memory/Container.php';


/**
 * Memory value container
 *
 * Locked (always stored in memory).
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory_Container_Locked extends Zend_Memory_Container
{
    /**
     * Value object
     *
     * @var string
     */
    public $value;


    /**
     * Object constructor
     *
     * @param Zend_Memory_Manager $memoryManager
     * @param integer $id
     * @param string $value
     */
    public function __construct($value)
    {
        $this->value = $value;
    }

    /**
     * Lock object in memory.
     */
    public function lock()
    {
        /* Do nothing */
    }

    /**
     * Unlock object
     */
    public function unlock()
    {
        /* Do nothing */
    }

    /**
     * Return true if object is locked
     *
     * @return boolean
     */
    public function isLocked()
    {
        return true;
    }

    /**
     * Get string value reference
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @return &string
     */
    public function &getRef()
    {
        return $this->value;
    }

    /**
     * Signal, that value is updated by external code.
     *
     * Should be used together with getRef()
     */
    public function touch()
    {
        /* Do nothing */
    }

    /**
     * Destroy memory container and remove it from memory manager list
     */
    public function destroy()
    {
        /* Do nothing */
    }
}
PKpG[G��z��Memory/Container/Movable.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Memory_Exception */
require_once 'Zend/Memory/Exception.php';

/** Zend_Memory_Container */
require_once 'Zend/Memory/Container.php';

/** Zend_Memory_Value */
require_once 'Zend/Memory/Value.php';


/**
 * Memory value container
 *
 * Movable (may be swapped with specified backend and unloaded).
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory_Container_Movable extends Zend_Memory_Container {
    /**
     * Internal object Id
     *
     * @var integer
     */
    protected $_id;

    /**
     * Memory manager reference
     *
     * @var Zend_Memory_Manager
     */
    private $_memManager;

    /**
     * Value object
     *
     * @var Zend_Memory_Value
     */
    private $_value;

    /** Value states */
    const LOADED   = 1;
    const SWAPPED  = 2;
    const LOCKED   = 4;

    /**
     * Value state (LOADED/SWAPPED/LOCKED)
     *
     * @var integer
     */
    private $_state;

    /**
     * Object constructor
     *
     * @param Zend_Memory_Manager $memoryManager
     * @param integer $id
     * @param string $value
     */
    public function __construct(Zend_Memory_Manager $memoryManager, $id, $value)
    {
        $this->_memManager = $memoryManager;
        $this->_id    = $id;
        $this->_state = self::LOADED;
        $this->_value = new Zend_Memory_Value($value, $this);
    }

    /**
     * Lock object in memory.
     */
    public function lock()
    {
        if ( !($this->_state & self::LOADED) ) {
            $this->_memManager->load($this, $this->_id);
            $this->_state |= self::LOADED;
        }

        $this->_state |= self::LOCKED;

        /**
         * @todo
         * It's possible to set "value" container attribute to avoid modification tracing, while it's locked
         * Check, if it's  more effective
         */
    }

    /**
     * Unlock object
     */
    public function unlock()
    {
        // Clear LOCKED state bit
        $this->_state &= ~self::LOCKED;
    }

    /**
     * Return true if object is locked
     *
     * @return boolean
     */
    public function isLocked()
    {
        return $this->_state & self::LOCKED;
    }

    /**
     * Get handler
     *
     * Loads object if necessary and moves it to the top of loaded objects list.
     * Swaps objects from the bottom of loaded objects list, if necessary.
     *
     * @param string $property
     * @return string
     * @throws Zend_Memory_Exception
     */
    public function __get($property)
    {
        if ($property != 'value') {
            throw new Zend_Memory_Exception('Unknown property: Zend_Memory_container::$' . $property);
        }

        if ( !($this->_state & self::LOADED) ) {
            $this->_memManager->load($this, $this->_id);
            $this->_state |= self::LOADED;
        }

        return $this->_value;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  string $value
     * @throws Zend_Exception
     */
    public function __set($property, $value)
    {
        if ($property != 'value') {
            throw new Zend_Memory_Exception('Unknown property: Zend_Memory_container::$' . $property);
        }

        $this->_state = self::LOADED;
        $this->_value = new Zend_Memory_Value($value, $this);

        $this->_memManager->processUpdate($this, $this->_id);
    }


    /**
     * Get string value reference
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @return &string
     */
    public function &getRef()
    {
        if ( !($this->_state & self::LOADED) ) {
            $this->_memManager->load($this, $this->_id);
            $this->_state |= self::LOADED;
        }

        return $this->_value->getRef();
    }

    /**
     * Signal, that value is updated by external code.
     *
     * Should be used together with getRef()
     */
    public function touch()
    {
        $this->_memManager->processUpdate($this, $this->_id);
    }

    /**
     * Process container value update.
     * Must be called only by value object
     *
     * @internal
     */
    public function processUpdate()
    {
        // Clear SWAPPED state bit
        $this->_state &= ~self::SWAPPED;

        $this->_memManager->processUpdate($this, $this->_id);
    }

    /**
     * Start modifications trace
     *
     * @internal
     */
    public function startTrace()
    {
        if ( !($this->_state & self::LOADED) ) {
            $this->_memManager->load($this, $this->_id);
            $this->_state |= self::LOADED;
        }

        $this->_value->startTrace();
    }

    /**
     * Set value (used by memory manager when value is loaded)
     *
     * @internal
     */
    public function setValue($value)
    {
        $this->_value = new Zend_Memory_Value($value, $this);
    }

    /**
     * Clear value (used by memory manager when value is swapped)
     *
     * @internal
     */
    public function unloadValue()
    {
        // Clear LOADED state bit
        $this->_state &= ~self::LOADED;

        $this->_value = null;
    }

    /**
     * Mark, that object is swapped
     *
     * @internal
     */
    public function markAsSwapped()
    {
        // Clear LOADED state bit
        $this->_state |= self::LOADED;
    }

    /**
     * Check if object is marked as swapped
     *
     * @internal
     * @return boolean
     */
    public function isSwapped()
    {
        return $this->_state & self::SWAPPED;
    }

    /**
     * Get object id
     *
     * @internal
     * @return integer
     */
    public function getId()
    {
        return $this->_id;
    }
    /**
     * Destroy memory container and remove it from memory manager list
     *
     * @internal
     */
    public function destroy()
    {
        /**
         * We don't clean up swap because of performance considerations
         * Cleaning is performed by Memory Manager destructor
         */

        $this->_memManager->unlink($this, $this->_id);
    }
}
PKpG["�hņ�Memory/Container.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Memory_Exception */
require_once 'Zend/Memory/Exception.php';

/** Zend_Memory_Container_Interface */
require_once 'Zend/Memory/Container/Interface.php';


/**
 * Memory value container
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Memory_Container implements Zend_Memory_Container_Interface
{
}
PKpG[�����Memory/Value.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * String value object
 *
 * It's an OO string wrapper.
 * Used to intercept string updates.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @todo       also implement Countable for PHP 5.1 but not yet to stay 5.0 compatible
 */
class Zend_Memory_Value implements ArrayAccess {
    /**
     * Value
     *
     * @var string
     */
    private $_value;

    /**
     * Container
     *
     * @var Zend_Memory_Container_Interface
     */
    private $_container;

    /**
     * Boolean flag which signals to trace value modifications
     *
     * @var boolean
     */
    private $_trace;


    /**
     * Object constructor
     *
     * @param string $value
     * @param Zend_Memory_Container_Movable $container
     */
    public function __construct($value, Zend_Memory_Container_Movable $container)
    {
        $this->_container = $container;

        $this->_value = (string)$value;

        /**
         * Object is marked as just modified by memory manager
         * So we don't need to trace followed object modifications and
         * object is processed (and marked as traced) when another
         * memory object is modified.
         *
         * It reduces overall numberr of calls necessary to modification trace
         */
        $this->_trace = false;
    }


    /**
     * ArrayAccess interface method
     * returns true if string offset exists
     *
     * @param integer $offset
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return $offset >= 0  &&  $offset < strlen($this->_value);
    }

    /**
     * ArrayAccess interface method
     * Get character at $offset position
     *
     * @param integer $offset
     * @return string
     */
    public function offsetGet($offset)
    {
        return $this->_value[$offset];
    }

    /**
     * ArrayAccess interface method
     * Set character at $offset position
     *
     * @param integer $offset
     * @param string $char
     */
    public function offsetSet($offset, $char)
    {
        $this->_value[$offset] = $char;

        if ($this->_trace) {
            $this->_trace = false;
            $this->_container->processUpdate();
        }
    }

    /**
     * ArrayAccess interface method
     * Unset character at $offset position
     *
     * @param integer $offset
     */
    public function offsetUnset($offset)
    {
        unset($this->_value[$offset]);

        if ($this->_trace) {
            $this->_trace = false;
            $this->_container->processUpdate();
        }
    }


    /**
     * To string conversion
     *
     * @return string
     */
    public function __toString()
    {
        return $this->_value;
    }


    /**
     * Get string value reference
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @internal
     * @return string
     */
    public function &getRef()
    {
        return $this->_value;
    }

    /**
     * Start modifications trace
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @internal
     */
    public function startTrace()
    {
        $this->_trace = true;
    }
}
PKpG[�"�f//Memory/AccessController.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Memory_Container_Interface
 */
require_once 'Zend/Memory/Container/Interface.php';

/**
 * Memory object container access controller.
 *
 * Memory manager stores a list of generated objects to control them.
 * So container objects always have at least one reference and can't be automatically destroyed.
 *
 * This class is intended to be an userland proxy to memory container object.
 * It's not referenced by memory manager and class destructor is invoked immidiately after gouing
 * out of scope or unset operation.
 *
 * Class also provides Zend_Memory_Container_Interface interface and works as proxy for such cases.
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory_AccessController implements Zend_Memory_Container_Interface
{
    /**
     * Memory container object
     *
     * @var Zend_Memory_Container
     */
    private $_memContainer;


    /**
     * Object constructor
     *
     * @param Zend_Memory_Container_Movable $memoryManager
     */
    public function __construct(Zend_Memory_Container_Movable $memContainer)
    {
        $this->_memContainer = $memContainer;
    }

    /**
     * Object destructor
     */
    public function __destruct()
    {
        $this->_memContainer->destroy();
    }


    /**
     * Get string value reference
     *
     * _Must_ be used for value access before PHP v 5.2
     * or _may_ be used for performance considerations
     *
     * @return &string
     */
    public function &getRef()
    {
        return $this->_memContainer->getRef();
    }

    /**
     * Signal, that value is updated by external code.
     *
     * Should be used together with getRef()
     */
    public function touch()
    {
        $this->_memContainer->touch();
    }

    /**
     * Lock object in memory.
     */
    public function lock()
    {
        $this->_memContainer->lock();
    }


    /**
     * Unlock object
     */
    public function unlock()
    {
        $this->_memContainer->unlock();
    }

    /**
     * Return true if object is locked
     *
     * @return boolean
     */
    public function isLocked()
    {
        return $this->_memContainer->isLocked();
    }

    /**
     * Get handler
     *
     * Loads object if necessary and moves it to the top of loaded objects list.
     * Swaps objects from the bottom of loaded objects list, if necessary.
     *
     * @param string $property
     * @return string
     * @throws Zend_Memory_Exception
     */
    public function __get($property)
    {
        return $this->_memContainer->$property;
    }

    /**
     * Set handler
     *
     * @param string $property
     * @param  string $value
     * @throws Zend_Exception
     */
    public function __set($property, $value)
    {
        $this->_memContainer->$property = $value;
    }
}
PKpG[�,g  Memory/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 1972 2006-11-30 18:28:34Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Controller_Exception */
require_once 'Zend/Exception.php';


/**
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory_Exception extends Zend_Exception
{}

PKpG[�����/�/Memory/Manager.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Memory_Container_Movable */
require_once 'Zend/Memory/Container/Movable.php';

/** Zend_Memory_Container_Locked */
require_once 'Zend/Memory/Container/Locked.php';

/** Zend_Memory_AccessController */
require_once 'Zend/Memory/AccessController.php';


/**
 * Memory manager
 *
 * This class encapsulates memory menagement operations, when PHP works
 * in limited memory mode.
 *
 *
 * @category   Zend
 * @package    Zend_Memory
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Memory_Manager
{
    /**
     * Object storage backend
     *
     * @var Zend_Cache_Backend_Interface
     */
    private $_backend = null;

    /**
     * Memory grow limit.
     * Default value is 2/3 of memory_limit php.ini variable
     * Negative value means no limit
     *
     * @var integer
     */
    private $_memoryLimit = -1;

    /**
     * Minimum value size to be swapped.
     * Default value is 16K
     * Negative value means that memory objects are never swapped
     *
     * @var integer
     */
    private $_minSize = 16384;

    /**
     * Overall size of memory, used by values
     *
     * @var integer
     */
    private $_memorySize = 0;

    /**
     * Id for next Zend_Memory object
     *
     * @var integer
     */
    private $_nextId = 0;

    /**
     * List of candidates to unload
     *
     * It also represents objects access history. Last accessed objects are moved to the end of array
     *
     * array(
     *     <id> => <memory container object>,
     *     ...
     *      )
     *
     * @var array
     */
    private $_unloadCandidates = array();

    /**
     * List of object sizes.
     *
     * This list is used to calculate modification of object sizes
     *
     * array( <id> => <size>, ...)
     *
     * @var array
     */
    private $_sizes = array();

    /**
     * Last modified object
     *
     * It's used to reduce number of calls necessary to trace objects' modifications
     * Modification is not processed by memory manager until we do not switch to another
     * object.
     * So we have to trace only _first_ object modification and do nothing for others
     *
     * @var Zend_Memory_Container_Movable
     */
    private $_lastModified = null;

    /**
     * Unique memory manager id
     *
     * @var integer
     */
    private $_managerId;

    /**
     * Tags array, used by backend to categorize stored values
     *
     * @var array
     */
    private $_tags;

    /**
     * This function is intended to generate unique id, used by memory manager
     */
    private function _generateMemManagerId()
    {
        /**
         * @todo !!!
         * uniqid() php function doesn't really garantee the id to be unique
         * it should be changed by something else
         * (Ex. backend interface should be extended to provide this functionality)
         */
        $this->_managerId = uniqid('ZendMemManager', true);
        $this->_tags = array($this->_managerId);
        $this->_managerId .= '_';
    }


    /**
     * Memory manager constructor
     *
     * If backend is not specified, then memory objects are never swapped
     *
     * @param Zend_Cache_Backend $backend
     * @param array $backendOptions associative array of options for the corresponding backend constructor
     */
    public function __construct($backend = null)
    {
        if ($backend === null) {
            return;
        }

        $this->_backend = $backend;
        $this->_generateMemManagerId();

        $memoryLimitStr = trim(ini_get('memory_limit'));
        if ($memoryLimitStr != '') {
            $this->_memoryLimit = (integer)$memoryLimitStr;
            switch (strtolower($memoryLimitStr[strlen($memoryLimitStr)-1])) {
                case 'g':
                    $this->_memoryLimit *= 1024;
                    // Break intentionally omitted
                case 'm':
                    $this->_memoryLimit *= 1024;
                    // Break intentionally omitted
                case 'k':
                    $this->_memoryLimit *= 1024;
                    break;

                default:
                    break;
            }

            $this->_memoryLimit = (int)($this->_memoryLimit*2/3);
        } // No limit otherwise
    }

    /**
     * Object destructor
     *
     * Clean up backend storage
     */
    public function __destruct()
    {
        if ($this->_backend !== null) {
            $this->_backend->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, $this->_tags);
        }
    }

    /**
     * Set memory grow limit
     *
     * @param integer $newLimit
     * @throws Zend_Exception
     */
    public function setMemoryLimit($newLimit)
    {
        $this->_memoryLimit = $newLimit;

        $this->_swapCheck();
    }

    /**
     * Get memory grow limit
     *
     * @return integer
     */
    public function getMemoryLimit()
    {
        return $this->_memoryLimit;
    }

    /**
     * Set minimum size of values, which may be swapped
     *
     * @param integer $newSize
     */
    public function setMinSize($newSize)
    {
        $this->_minSize = $newSize;
    }

    /**
     * Get minimum size of values, which may be swapped
     *
     * @return integer
     */
    public function getMinSize()
    {
        return $this->_minSize;
    }

    /**
     * Create new Zend_Memory value container
     *
     * @param string $value
     * @return Zend_Memory_Container_Interface
     * @throws Zend_Memory_Exception
     */
    public function create($value = '')
    {
        return $this->_create($value,  false);
    }

    /**
     * Create new Zend_Memory value container, which has value always
     * locked in memory
     *
     * @param string $value
     * @return Zend_Memory_Container_Interface
     * @throws Zend_Memory_Exception
     */
    public function createLocked($value = '')
    {
        return $this->_create($value, true);
    }

    /**
     * Create new Zend_Memory object
     *
     * @param string $value
     * @param boolean $locked
     * @return Zend_Memory_Container_Interface
     * @throws Zend_Memory_Exception
     */
    private function _create($value, $locked)
    {
        $id = $this->_nextId++;

        if ($locked  ||  ($this->_backend === null) /* Use only memory locked objects if backend is not specified */) {
            return new Zend_Memory_Container_Locked($value);
        }

        // Commit other objects modifications
        $this->_commit();

        $valueObject = new Zend_Memory_Container_Movable($this, $id, $value);

        // Store last object size as 0
        $this->_sizes[$id] = 0;
        // prepare object for next modifications
        $this->_lastModified = $valueObject;

        return new Zend_Memory_AccessController($valueObject);
    }

    /**
     * Unlink value container from memory manager
     *
     * Used by Memory container destroy() method
     *
     * @internal
     * @param integer $id
     * @return Zend_Memory_Container
     */
    public function unlink(Zend_Memory_Container_Movable $container, $id)
    {
        if ($this->_lastModified === $container) {
            // Drop all object modifications
            $this->_lastModified = null;
            unset($this->_sizes[$id]);
            return;
        }

        if (isset($this->_unloadCandidates[$id])) {
            unset($this->_unloadCandidates[$id]);
        }

        $this->_memorySize -= $this->_sizes[$id];
        unset($this->_sizes[$id]);
    }

    /**
     * Process value update
     *
     * @internal
     * @param Zend_Memory_Container_Movable $container
     * @param integer $id
     */
    public function processUpdate(Zend_Memory_Container_Movable $container, $id)
    {
        /**
         * This method is automatically invoked by memory container only once per
         * "modification session", but user may call memory container touch() method
         * several times depending on used algorithm. So we have to use this check
         * to optimize this case.
         */
        if ($container === $this->_lastModified) {
            return;
        }

        // Remove just updated object from list of candidates to unload
        if( isset($this->_unloadCandidates[$id])) {
            unset($this->_unloadCandidates[$id]);
        }

        // Reduce used memory mark
        $this->_memorySize -= $this->_sizes[$id];

        // Commit changes of previously modified object if necessary
        $this->_commit();

        $this->_lastModified = $container;
    }

    /**
     * Commit modified object and put it back to the loaded objects list
     */
    private function _commit()
    {
        if (($container = $this->_lastModified) === null) {
            return;
        }

        $this->_lastModified = null;

        $id = $container->getId();

        // Calculate new object size and increase used memory size by this value
        $this->_memorySize += ($this->_sizes[$id] = strlen($container->getRef()));

        if ($this->_sizes[$id] > $this->_minSize) {
            // Move object to "unload candidates list"
            $this->_unloadCandidates[$id] = $container;
        }

        $container->startTrace();

        $this->_swapCheck();
    }

    /**
     * Check and swap objects if necessary
     *
     * @throws Zend_MemoryException
     */
    private function _swapCheck()
    {
        if ($this->_memoryLimit < 0  ||  $this->_memorySize < $this->_memoryLimit) {
            // Memory limit is not reached
            // Do nothing
            return;
        }

        // walk through loaded objects in access history order
        foreach ($this->_unloadCandidates as $id => $container) {
            $this->_swap($container, $id);
            unset($this->_unloadCandidates[$id]);

            if ($this->_memorySize < $this->_memoryLimit) {
                // We've swapped enough objects
                return;
            }
        }

        throw new Zend_Memory_Exception('Memory manager can\'t get enough space.');
    }


    /**
     * Swap object data to disk
     * Actualy swaps data or only unloads it from memory,
     * if object is not changed since last swap
     *
     * @param Zend_Memory_Container_Movable $container
     * @param integer $id
     */
    private function _swap(Zend_Memory_Container_Movable $container, $id)
    {
        if ($container->isLocked()) {
            return;
        }

        if (!$container->isSwapped()) {
            $this->_backend->save($container->getRef(), $this->_managerId . $id, $this->_tags);
        }

        $this->_memorySize -= $this->_sizes[$id];

        $container->markAsSwapped();
        $container->unloadValue();
    }

    /**
     * Load value from swap file.
     *
     * @internal
     * @param Zend_Memory_Container_Movable $container
     * @param integer $id
     */
    public function load(Zend_Memory_Container_Movable $container, $id)
    {
        $value = $this->_backend->load($this->_managerId . $id, true);

        // Try to swap other objects if necessary
        // (do not include specified object into check)
        $this->_memorySize += strlen($value);
        $this->_swapCheck();

        // Add loaded obect to the end of loaded objects list
        $container->setValue($value);

        if ($this->_sizes[$id] > $this->_minSize) {
            // Add object to the end of "unload candidates list"
            $this->_unloadCandidates[$id] = $container;
        }
    }
}
PKpG[�ۺe�_�_
Paginator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Paginator.php 12507 2008-11-10 16:29:09Z matthew $
 */

/**
 * @see Zend_Loader_PluginLoader
 */
require_once 'Zend/Loader/PluginLoader.php';

/**
 * @see Zend_Json
 */
require_once 'Zend/Json.php';

/**
 * @category   Zend
 * @package    Zend_Paginator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Paginator implements Countable, IteratorAggregate
{
    /**
     * Specifies that the factory should try to detect the proper adapter type first
     *
     * @var string
     */
    const INTERNAL_ADAPTER = 'Zend_Paginator_Adapter_Internal';
    
    /**
     * Adapter plugin loader
     *
     * @var Zend_Loader_PluginLoader
     */
    protected static $_adapterLoader = null;
    
    /**
     * Configuration file
     *
     * @var Zend_Config
     */
    protected static $_config = null;
    
    /**
     * Default scrolling style
     *
     * @var string
     */
    protected static $_defaultScrollingStyle = 'Sliding';

    /**
     * Scrolling style plugin loader
     *
     * @var Zend_Loader_PluginLoader
     */
    protected static $_scrollingStyleLoader = null;

    /**
     * Adapter
     *
     * @var Zend_Paginator_Adapter_Interface
     */
    protected $_adapter = null;

    /**
     * Number of items in the current page
     *
     * @var integer
     */
    protected $_currentItemCount = null;

    /**
     * Current page items
     *
     * @var Traversable
     */
    protected $_currentItems = null;

    /**
     * Current page number (starting from 1)
     *
     * @var integer
     */
    protected $_currentPageNumber = 1;

    /**
     * Number of items per page
     *
     * @var integer
     */
    protected $_itemCountPerPage = 10;

    /**
     * Number of pages
     *
     * @var integer
     */
    protected $_pageCount = null;

    /**
     * A collection of page items used as temporary page cache
     *
     * @var array
     */
    protected $_pageItems = array();
    
    /**
     * Number of local pages (i.e., the number of discrete page numbers
     * that will be displayed, including the current page number)
     *
     * @var integer
     */
    protected $_pageRange = 10;

    /**
     * Pages
     *
     * @var array
     */
    protected $_pages = null;
    
    /**
     * View instance used for self rendering
     *
     * @var Zend_View_Interface
     */
    protected $_view = null;
    
    /**
     * Adds an adapter prefix path to the plugin loader.
     *
     * @param string $prefix
     * @param string $path
     */
    public static function addAdapterPrefixPath($prefix, $path)
    {
        self::getAdapterLoader()->addPrefixPath($prefix, $path);
    }
    
    /**
     * Adds an array of adapter prefix paths to the plugin 
     * loader.
     *
     * <code>
     * $prefixPaths = array(
     *     'My_Paginator_Adapter'   => 'My/Paginator/Adapter/',
     *     'Your_Paginator_Adapter' => 'Your/Paginator/Adapter/'
     * );
     * </code>
     *
     * @param array $prefixPaths
     */
    public static function addAdapterPrefixPaths(array $prefixPaths)
    {
        if (isset($prefixPaths['prefix']) and isset($prefixPaths['path'])) {
            self::addAdapterPrefixPath($prefixPaths['prefix'], $prefixPaths['path']);
        } else {
            foreach ($prefixPaths as $prefix => $path) {
                if (is_array($path) and isset($path['prefix']) and isset($path['path'])) {
                    $prefix = $path['prefix'];
                    $path   = $path['path'];
                }
                
                self::addAdapterPrefixPath($prefix, $path);
            }
        }
    }
    
    /**
     * Adds a scrolling style prefix path to the plugin loader.
     *
     * @param string $prefix
     * @param string $path
     */
    public static function addScrollingStylePrefixPath($prefix, $path)
    {
        self::getScrollingStyleLoader()->addPrefixPath($prefix, $path);
    }

    /**
     * Adds an array of scrolling style prefix paths to the plugin 
     * loader.
     *
     * <code>
     * $prefixPaths = array(
     *     'My_Paginator_ScrollingStyle'   => 'My/Paginator/ScrollingStyle/',
     *     'Your_Paginator_ScrollingStyle' => 'Your/Paginator/ScrollingStyle/'
     * );
     * </code>
     *
     * @param array $prefixPaths
     */
    public static function addScrollingStylePrefixPaths(array $prefixPaths)
    {
        if (isset($prefixPaths['prefix']) and isset($prefixPaths['path'])) {
            self::addScrollingStylePrefixPath($prefixPaths['prefix'], $prefixPaths['path']);
        } else {
            foreach ($prefixPaths as $prefix => $path) {
                if (is_array($path) and isset($path['prefix']) and isset($path['path'])) {
                    $prefix = $path['prefix'];
                    $path   = $path['path'];
                }
                
                self::addScrollingStylePrefixPath($prefix, $path);
            }
        }
    }
    
    /**
     * Factory.
     *
     * @param  mixed $data
     * @param  string $adapter
     * @param  array $prefixPaths
     * @return Zend_Paginator
     */
    public static function factory($data, $adapter = self::INTERNAL_ADAPTER,
                                   array $prefixPaths = null)
    {
        if ($adapter == self::INTERNAL_ADAPTER) {
            if (is_array($data)) {
                $adapter = 'Array';
            } else if ($data instanceof Zend_Db_Table_Select) {
                $adapter = 'DbTableSelect';
            } else if ($data instanceof Zend_Db_Select) {
                $adapter = 'DbSelect';
            } else if ($data instanceof Iterator) {
                $adapter = 'Iterator';
            } else if (is_integer($data)) {
                $adapter = 'Null';
            } else {
                $type = (is_object($data)) ? get_class($data) : gettype($data);
                
                /**
                 * @see Zend_Paginator_Exception
                 */
                require_once 'Zend/Paginator/Exception.php';
                
                throw new Zend_Paginator_Exception('No adapter for type ' . $type);
            }
        }
        
        $pluginLoader = self::getAdapterLoader();
        
        if (null !== $prefixPaths) {
            foreach ($prefixPaths as $prefix => $path) {
                $pluginLoader->addPrefixPath($prefix, $path);
            }
        }
        
        $adapterClassName = $pluginLoader->load($adapter);
        
        return new self(new $adapterClassName($data));
    }
    
    /**
     * Returns the adapter loader.  If it doesn't exist it's created.
     *
     * @return Zend_Loader_PluginLoader
     */
    public static function getAdapterLoader()
    {
        if (self::$_adapterLoader === null) {
            self::$_adapterLoader = new Zend_Loader_PluginLoader(
                array('Zend_Paginator_Adapter' => 'Zend/Paginator/Adapter')
            );
        }
        
        return self::$_adapterLoader;
    }
    
    /**
     * Set a global config
     *
     * @param Zend_Config $config
     */
    public static function setConfig(Zend_Config $config)
    {
        self::$_config = $config;
        
        $adapterPaths = $config->get('adapterpaths');
        
        if ($adapterPaths != null) {
            self::addAdapterPrefixPaths($adapterPaths->adapterpath->toArray());
        }
        
        $prefixPaths = $config->get('prefixpaths');
        
        if ($prefixPaths != null) {
            self::addScrollingStylePrefixPaths($prefixPaths->prefixpath->toArray());
        }
        
        $scrollingStyle = $config->get('scrollingstyle');
        
        if ($scrollingStyle != null) {
            self::setDefaultScrollingStyle($scrollingStyle);
        }
    }
    
    /**
     * Returns the default scrolling style.
     *
     * @return  string
     */
    public static function getDefaultScrollingStyle()
    {
        return self::$_defaultScrollingStyle;
    }
    
    /**
     * Sets the default scrolling style.
     *
     * @param  string $scrollingStyle
     */
    public static function setDefaultScrollingStyle($scrollingStyle = 'Sliding')
    {
        self::$_defaultScrollingStyle = $scrollingStyle;
    }
    
    /**
     * Returns the scrolling style loader.  If it doesn't exist it's
     * created.
     *
     * @return Zend_Loader_PluginLoader
     */
    public static function getScrollingStyleLoader()
    {
        if (self::$_scrollingStyleLoader === null) {
            self::$_scrollingStyleLoader = new Zend_Loader_PluginLoader(
                array('Zend_Paginator_ScrollingStyle' => 'Zend/Paginator/ScrollingStyle')
            );
        }
        
        return self::$_scrollingStyleLoader;
    }

    /**
     * Constructor.
     */
    public function __construct(Zend_Paginator_Adapter_Interface $adapter)
    {
        $this->_adapter = $adapter;
        
        $config = self::$_config;
        
        if ($config != null) {
            $setupMethods = array('ItemCountPerPage', 'PageRange');
            
            foreach ($setupMethods as $setupMethod) {
                $value = $config->get(strtolower($setupMethod));
                
                if ($value != null) {
                    $setupMethod = 'set' . $setupMethod;
                    $this->$setupMethod($value);
                }
            }
        }
    }
    
    /**
     * Serializes the object as a string.  Proxies to {@link render()}.
     * 
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->render();
            return $return;
        } catch (Exception $e) {
            trigger_error($e->getMessage(), E_USER_WARNING);
        }

        return '';
    }
    
    /**
     * Returns the number of pages.
     *
     * @return integer
     */
    public function count()
    {
        if (!$this->_pageCount) {
            $this->_pageCount = $this->_calculatePageCount();
        }
        
        return $this->_pageCount;
    }

    /**
     * Returns the total number of items available.
     *
     * @return integer
     */
    public function getTotalItemCount()
    {
        return count($this->_adapter);
    }

    /**
     * Clear the page item cache.
     *
     * @param int $pageNumber
     * @return Zend_Paginator
     */
    public function clearPageItemCache($pageNumber = null)
    {
        if (null === $pageNumber) {
            $this->_pageItems = array();
        } else if (isset($this->_pageItems[$pageNumber])) {
            unset($this->_pageItems[$pageNumber]);
        }
        
        return $this;
    }
    
    /**
     * Returns the absolute item number for the specified item.
     *
     * @param  integer $relativeItemNumber Relative item number
     * @param  integer $pageNumber Page number
     * @return integer
     */
    public function getAbsoluteItemNumber($relativeItemNumber, $pageNumber = null)
    {
        $relativeItemNumber = $this->normalizeItemNumber($relativeItemNumber);
        
        if ($pageNumber == null) {
            $pageNumber = $this->getCurrentPageNumber();
        }
        
        $pageNumber = $this->normalizePageNumber($pageNumber);
        
        return (($pageNumber - 1) * $this->getItemCountPerPage()) + $relativeItemNumber;
    }
    
    /**
     * Returns the adapter.
     *
     * @return Zend_Paginator_Adapter_Interface
     */
    public function getAdapter()
    {
        return $this->_adapter;
    }
    
    /**
     * Returns the number of items for the current page.
     *
     * @return integer
     */
    public function getCurrentItemCount()
    {
        if ($this->_currentItemCount === null) {
            $this->_currentItemCount = $this->getItemCount($this->getCurrentItems());
        }
        
        return $this->_currentItemCount;
    }
    
    /**
     * Returns the items for the current page.
     *
     * @return Traversable
     */
    public function getCurrentItems()
    {
        if ($this->_currentItems === null) {
            $this->_currentItems = $this->getItemsByPage($this->getCurrentPageNumber());
        }
        
        return $this->_currentItems;
    }

    /**
     * Returns the current page number.
     *
     * @return integer
     */
    public function getCurrentPageNumber()
    {
        return $this->normalizePageNumber($this->_currentPageNumber);
    }
    
    /**
     * Sets the current page number.
     *
     * @param  integer $pageNumber Page number
     * @return Zend_Paginator $this
     */
    public function setCurrentPageNumber($pageNumber)
    {
        $this->_currentPageNumber = (integer) $pageNumber;
        $this->_currentItems      = null;
        $this->_currentItemCount  = null;
        
        return $this;
    }
    
    /**
     * Returns an item from a page.  The current page is used if there's no 
     * page sepcified.
     *
     * @param  integer $itemNumber Item number (1 to itemCountPerPage)
     * @param  integer $pageNumber
     * @return mixed
     */
    public function getItem($itemNumber, $pageNumber = null)
    {
        $itemNumber = $this->normalizeItemNumber($itemNumber);
        
        if ($pageNumber == null) {
            $pageNumber = $this->getCurrentPageNumber();
        }
        
        $page = $this->getItemsByPage($pageNumber);
        $itemCount = $this->getItemCount($page);
        
        if ($itemCount == 0) {
            /**
             * @see Zend_Paginator_Exception
             */
            require_once 'Zend/Paginator/Exception.php';
            
            throw new Zend_Paginator_Exception('Page ' . $pageNumber . ' does not exist');
        }
        
        if ($itemNumber > $itemCount) {
            /**
             * @see Zend_Paginator_Exception
             */
            require_once 'Zend/Paginator/Exception.php';
            
            throw new Zend_Paginator_Exception('Page ' . $pageNumber . ' does not'
                                             . ' contain item number ' . $itemNumber);
        }
        
        return $page[$itemNumber - 1];
    }

    /**
     * Returns the number of items per page.
     *
     * @return integer
     */
    public function getItemCountPerPage()
    {
        return $this->_itemCountPerPage;
    }
    
    /**
     * Sets the number of items per page.
     *
     * @param  integer $itemCountPerPage
     * @return Zend_Paginator $this
     */
    public function setItemCountPerPage($itemCountPerPage)
    {
        $this->_itemCountPerPage = (integer) $itemCountPerPage;
        if ($this->_itemCountPerPage == 0) {
            $this->_itemCountPerPage = 1;
        }
        $this->_pageCount        = $this->_calculatePageCount();
        $this->_pageItems        = array();
        $this->_currentItems     = null;
        $this->_currentItemCount = null;
        
        return $this;
    }

    /**
     * Returns the number of items in a collection.
     *
     * @param  mixed $items Items
     * @return integer
     */
    public function getItemCount($items)
    {
        $itemCount = 0;
        
        if (is_array($items) or $items instanceof Countable) {
            $itemCount = count($items);
        } else { // $items is something like LimitIterator
            foreach ($items as $item) {
                $itemCount++;
            }
        }

        return $itemCount;
    }

    /**
     * Returns the items for a given page.
     *
     * @return Traversable
     */
    public function getItemsByPage($pageNumber)
    {
        $pageNumber = $this->normalizePageNumber($pageNumber);
        
        if (isset($this->_pageItems[$pageNumber])) {
            return $this->_pageItems[$pageNumber];
        }
        
        $offset = ($pageNumber - 1) * $this->_itemCountPerPage;
        
        $items = $this->_adapter->getItems($offset, $this->_itemCountPerPage);
        
        if (!$items instanceof Traversable) {
            $items = new ArrayIterator($items);
        }
        
        $this->_pageItems[$pageNumber] = $items;
        
        return $items;
    }

    /**
     * Returns a foreach-compatible iterator.
     *
     * @return Traversable
     */
    public function getIterator()
    {
        return $this->getCurrentItems();
    }
    
    /**
     * Returns the page range (see property declaration above).
     *
     * @return integer
     */
    public function getPageRange()
    {
        return $this->_pageRange;
    }
    
    /**
     * Sets the page range (see property declaration above).
     *
     * @param  integer $pageRange
     * @return Zend_Paginator $this
     */
    public function setPageRange($pageRange)
    {
        $this->_pageRange = (integer) $pageRange;
        
        return $this;
    }

    /**
     * Returns the page collection.
     *
     * @param  string $scrollingStyle Scrolling style
     * @return array
     */
    public function getPages($scrollingStyle = null)
    {
        if ($this->_pages === null) {
            $this->_pages = $this->_createPages($scrollingStyle);
        }
        
        return $this->_pages;
    }

    /**
     * Returns a subset of pages within a given range.
     *
     * @param  integer $lowerBound Lower bound of the range
     * @param  integer $upperBound Upper bound of the range
     * @return array
     */
    public function getPagesInRange($lowerBound, $upperBound)
    {
        $lowerBound = $this->normalizePageNumber($lowerBound);
        $upperBound = $this->normalizePageNumber($upperBound);
        
        $pages = array();
        
        for ($pageNumber = $lowerBound; $pageNumber <= $upperBound; $pageNumber++) {
            $pages[$pageNumber] = $pageNumber;
        }
        
        return $pages;
    }
    
    /**
     * Returns the page item cache.
     *
     * @return array
     */
    public function getPageItemCache()
    {
        return $this->_pageItems;
    }
    
    /**
     * Retrieves the view instance.  If none registered, attempts to pull f
     * rom ViewRenderer.
     * 
     * @return Zend_View_Interface|null
     */
    public function getView()
    {
        if ($this->_view === null) {
            /**
             * @see Zend_Controller_Action_HelperBroker
             */
            require_once 'Zend/Controller/Action/HelperBroker.php';
            
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
            if ($viewRenderer->view === null) {
                $viewRenderer->initView();
            }
            $this->_view = $viewRenderer->view;
        }

        return $this->_view;
    }
    
    /**
     * Sets the view object.
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Paginator
     */
    public function setView(Zend_View_Interface $view = null)
    {
        $this->_view = $view;
        
        return $this;
    }
    
    /**
     * Brings the item number in range of the page.
     *
     * @param  integer $itemNumber
     * @return integer
     */
    public function normalizeItemNumber($itemNumber)
    {
        if ($itemNumber < 1) {
            $itemNumber = 1;
        }
        
        if ($itemNumber > $this->_itemCountPerPage) {
            $itemNumber = $this->_itemCountPerPage;
        }
        
        return $itemNumber;
    }
    
    /**
     * Brings the page number in range of the paginator.
     *
     * @param  integer $pageNumber
     * @return integer
     */
    public function normalizePageNumber($pageNumber)
    {
        if ($pageNumber < 1) {
            $pageNumber = 1;
        }
        
        $pageCount = $this->count();
        
        if ($pageCount > 0 and $pageNumber > $pageCount) {
            $pageNumber = $pageCount;
        }
        
        return $pageNumber;
    }
    
    /**
     * Renders the paginator.
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            $this->setView($view);
        }

        $view = $this->getView();
        
        return $view->paginationControl($this);
    }

    /**
     * Returns the items of the current page as JSON.
     *
     * @return string
     */
    public function toJson()
    {
        return Zend_Json::encode($this->getCurrentItems());
    }
    
    /**
     * Calculates the page count.
     *
     * @return integer
     */
    protected function _calculatePageCount()
    {
        return (integer) ceil($this->_adapter->count() / $this->_itemCountPerPage);
    }

    /**
     * Creates the page collection.
     *
     * @param  string $scrollingStyle Scrolling style
     * @return stdClass
     */
    protected function _createPages($scrollingStyle = null)
    {
        $pageCount         = $this->count();
        $currentPageNumber = $this->getCurrentPageNumber();
        
        $pages = new stdClass();
        $pages->pageCount        = $pageCount;
        $pages->itemCountPerPage = $this->getItemCountPerPage();
        $pages->first            = 1;
        $pages->current          = $currentPageNumber;
        $pages->last             = $pageCount;

        // Previous and next
        if ($currentPageNumber - 1 > 0) {
            $pages->previous = $currentPageNumber - 1;
        }

        if ($currentPageNumber + 1 <= $pageCount) {
            $pages->next = $currentPageNumber + 1;
        }

        // Pages in range
        $scrollingStyle = $this->_loadScrollingStyle($scrollingStyle);
        $pages->pagesInRange     = $scrollingStyle->getPages($this);
        $pages->firstPageInRange = min($pages->pagesInRange);
        $pages->lastPageInRange  = max($pages->pagesInRange);

        // Item numbers
        if ($this->getCurrentItems() !== null) {
            $pages->currentItemCount = $this->getCurrentItemCount();
            $pages->itemCountPerPage = $this->getItemCountPerPage();
            $pages->totalItemCount   = $this->getTotalItemCount();
            $pages->firstItemNumber  = (($currentPageNumber - 1) * $this->_itemCountPerPage) + 1;
            $pages->lastItemNumber   = $pages->firstItemNumber + $pages->currentItemCount - 1;
        }

        return $pages;
    }
    
    /**
     * Loads a scrolling style.
     *
     * @param string $scrollingStyle
     * @return Zend_Paginator_ScrollingStyle_Interface
     */
    protected function _loadScrollingStyle($scrollingStyle = null)
    {
        if ($scrollingStyle === null) {
            $scrollingStyle = self::$_defaultScrollingStyle;
        }

        switch (strtolower(gettype($scrollingStyle))) {
            case 'object':
                if (!$scrollingStyle instanceof Zend_Paginator_ScrollingStyle_Interface) {
                    /**
                     * @see Zend_View_Exception
                     */
                    require_once 'Zend/View/Exception.php';

                    throw new Zend_View_Exception('Scrolling style must implement ' .
                        'Zend_Paginator_ScrollingStyle_Interface');
                }

                return $scrollingStyle;

            case 'string':
                $className = self::getScrollingStyleLoader()->load($scrollingStyle);

                return new $className();

            case 'null':
                // Fall through to default case

            default:
                /**
                 * @see Zend_View_Exception
                 */
                require_once 'Zend/View/Exception.php';

                throw new Zend_View_Exception('Scrolling style must be a class ' . 
                    'name or object implementing Zend_Paginator_ScrollingStyle_Interface');
        }
    }
}
PKpG[�s�'��ProgressBar/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_ProgressBar
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @uses      Zend_Exception
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar_Exception extends Zend_Exception
{
}
PKpG[㲖��ProgressBar/Adapter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Adapter.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * Abstract class for Zend_ProgressBar_Adapters
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_ProgressBar_Adapter
{
    /**
     * Option keys to skip when calling setOptions()
     * 
     * @var array
     */
    protected $_skipOptions = array(
        'options',
        'config',
    );

    /**
     * Create a new adapter
     * 
     * $options may be either be an array or a Zend_Config object which
     * specifies adapter related options. 
     *
     * @param null|array|Zend_Config $options
     */
    public function __construct($options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        } elseif ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }
    }
    
    /**
     * Set options via a Zend_Config instance
     *
     * @param  Zend_Config $config
     * @return Zend_ProgressBar_Adapter
     */
    public function setConfig(Zend_Config $config)
    {
        $this->setOptions($config->toArray());
        
        return $this;
    }
    
    /**
     * Set options via an array
     *
     * @param  array $options
     * @return Zend_ProgressBar_Adapter
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            if (in_array(strtolower($key), $this->_skipOptions)) {
                continue;
            }

            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        
        return $this;
    }
    
    /**
     * Notify the adapter about an update
     *
     * @param  float   $current       Current progress value
     * @param  float   $max           Max progress value
     * @param  flaot   $percent       Current percent value
     * @param  integer $timeTaken     Taken time in seconds
     * @param  integer $timeRemaining Remaining time in seconds
     * @param  string  $text          Status text
     * @return void
     */
    abstract public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text);
    
    /**
     * Called when the progress is explicitly finished
     *
     * @return void
     */
    abstract public function finish();
}
PKpG[���8�8ProgressBar/Adapter/Console.phpnu&1i�<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_ProgressBar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Console.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * @see Zend_ProgressBar_Adapter
 */
require_once 'Zend/ProgressBar/Adapter.php';

/**
 * Zend_ProgressBar_Adapter_Console offers a text-based progressbar for console
 * applications
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @uses      Zend_ProgressBar_Adapter_Interface
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar_Adapter_Console extends Zend_ProgressBar_Adapter
{
    /**
     * Percentage value of the progress
     */
    const ELEMENT_PERCENT = 'ELEMENT_PERCENT';
    
    /**
     * Visual value of the progress
     */
    const ELEMENT_BAR = 'ELEMENT_BAR';

    /**
     * ETA of the progress
     */
    const ELEMENT_ETA = 'ELEMENT_ETA';
    
    /**
     * Text part of the progress
     */
    const ELEMENT_TEXT = 'ELEMENT_TEXT';
    
    /**
     * Finish action: End of Line
     */
    const FINISH_ACTION_EOL = 'FINISH_ACTION_EOL';
    
    /**
     * Finish action: Clear Line
     */
    const FINISH_ACTION_CLEAR_LINE = 'FINISH_ACTION_CLEAR_LINE';
    
    /**
     * Finish action: None
     */
    const FINISH_ACTION_NONE = 'FINISH_ACTION_NONE';
    
    /**
     * Width of the progressbar
     *
     * @var integer
     */
    protected $_width = null;
    
    /**
     * Elements to display
     *
     * @var array
     */
    protected $_elements = array(self::ELEMENT_PERCENT,
                                 self::ELEMENT_BAR,
                                 self::ELEMENT_ETA);
    
    /**
     * Which action to do at finish call
     *
     * @var string
     */
    protected $_finishAction = self::FINISH_ACTION_EOL;
    
    /**
     * Width of the bar element
     *
     * @var integer
     */
    protected $_barWidth;
    
    /**
     * Left character(s) within the bar
     *
     * @var string
     */
    protected $_barLeftChar = '#';

    /**
     * Indicator character(s) within the bar
     *
     * @var string
     */
    protected $_barIndicatorChar = '';
    
    /**
     * Right character(s) within the bar
     *
     * @var string
     */
    protected $_barRightChar = '-';
       
    /**
     * Stdout stream, when STDOUT is not defined (e.g. in CGI)
     * 
     * @var resource
     */
    protected $_stdout = null;
       
    /**
     * Width of the text element
     *
     * @var string
     */
    protected $_textWidth = 20;
    
    /**
     * Wether the output started yet or not
     *
     * @var boolean
     */
    protected $_outputStarted = false;
    
    /**
     * Defined by Zend_ProgressBar_Adapter
     *
     * @param null|array|Zend_Config $options
     */
    public function __construct($options = null)
    {       
        // If STDOUT isn't defined, open a local resource
        if (!defined('STDOUT')) {
            $this->_stdout = fopen('php://stdout', 'w');
        }
        
        // Call parent constructor with options
        parent::__construct($options);
        
        // Check if a width was set, else use auto width
        if ($this->_width === null) {
            $this->setWidth();
        }
    }
       
    /**
     * Close local stdout, when open
     */
    public function __destruct()
    {
        if ($this->_stdout !== null) {
            fclose($this->_stdout);
        }
    }
    
    /**
     * Set the width of the progressbar
     *
     * @param  integer $width
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setWidth($width = null)
    {
        if ($width === null || !is_integer($width)) {
            if (substr(PHP_OS, 0, 3) === 'WIN') {
                // We have to default to 79 on windows, because the windows
                // terminal always has a fixed width of 80 characters and the
                // cursor is counted to the line, else windows would line break
                // after every update.
                $this->_width = 79; 
            } else {
                // Set the default width of 80
                $this->_width = 80;
                
                // Try to determine the width through stty
                if (preg_match('#\d+ (\d+)#', @shell_exec('stty size'), $match) === 1) {
                    $this->_width = (int) $match[1];
                } else if (preg_match('#columns = (\d+);#', @shell_exec('stty'), $match) === 1) {                       
                    $this->_width = (int) $match[1];
                }
            }
        } else {
            $this->_width = (int) $width;
        }
        
        $this->_calculateBarWidth();
        
        return $this;
    }
    
    /**
     * Set the elements to display with the progressbar
     *
     * @param  array $elements
     * @throws Zend_ProgressBar_Adapter_Exception When an invalid element is foudn in the array
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setElements(array $elements)
    {
        $allowedElements = array(self::ELEMENT_PERCENT,
                                 self::ELEMENT_BAR,
                                 self::ELEMENT_ETA,
                                 self::ELEMENT_TEXT);
                                 
        if (count(array_diff($elements, $allowedElements)) > 0) {
            require_once 'Zend/ProgressBar/Adapter/Exception.php';
            throw new Zend_ProgressBar_Adapter_Exception('Invalid element found in $elements array');                
        }
        
        $this->_elements = $elements;
        
        $this->_calculateBarWidth();
        
        return $this;
    }
    
    /**
     * Set the left-hand character for the bar
     *
     * @param  string $char
     * @throws Zend_ProgressBar_Adapter_Exception When character is empty
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setBarLeftChar($char)
    {
        if (empty($char)) {
            require_once 'Zend/ProgressBar/Adapter/Exception.php';
            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');                
        }
        
        $this->_barLeftChar = (string) $char;
        
        return $this;
    }
    
    /**
     * Set the right-hand character for the bar
     *
     * @param  string $char
     * @throws Zend_ProgressBar_Adapter_Exception When character is empty
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setBarRightChar($char)
    {
        if (empty($char)) {
            require_once 'Zend/ProgressBar/Adapter/Exception.php';
            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');                
        }
        
        $this->_barRightChar = (string) $char;
        
        return $this;
    }
    
    /**
     * Set the indicator character for the bar
     *
     * @param  string $char
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setBarIndicatorChar($char)
    {
        $this->_barIndicatorChar = (string) $char;
        
        return $this;
    }

    /**
     * Set the width of the text element
     *
     * @param  integer $width
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setTextWidth($width)
    {
        $this->_textWidth = (int) $width;
        
        $this->_calculateBarWidth();
        
        return $this;
    }
    
    /**
     * Set the finish action
     *
     * @param  string $action
     * @throws Zend_ProgressBar_Adapter_Exception When an invalid action is specified
     * @return Zend_ProgressBar_Adapter_Console
     */
    public function setFinishAction($action)
    {
        $allowedActions = array(self::FINISH_ACTION_CLEAR_LINE,
                                self::FINISH_ACTION_EOL,
                                self::FINISH_ACTION_NONE);
                     
        if (!in_array($action, $allowedActions)) {
            require_once 'Zend/ProgressBar/Adapter/Exception.php';
            throw new Zend_ProgressBar_Adapter_Exception('Invalid finish action specified');                
        }
        
        $this->_finishAction = $action;
        
        return $this;
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @param  float   $current       Current progress value
     * @param  float   $max           Max progress value
     * @param  flaot   $percent       Current percent value
     * @param  integer $timeTaken     Taken time in seconds
     * @param  integer $timeRemaining Remaining time in seconds
     * @param  string  $text          Status text
     * @return void
     */
    public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text)
    {
        // See if we must clear the line
        if ($this->_outputStarted) {
            $data = str_repeat("\x08", $this->_width);
        } else {
            $data = '';
            $this->_outputStarted = true;
        }
               
        // Build all elements
        $renderedElements = array();
        
        foreach ($this->_elements as $element) {
            switch ($element) {
                case self::ELEMENT_BAR:
                    $visualWidth = $this->_barWidth - 2;                    
                    $bar         = '[';
                    
                    $indicatorWidth = strlen($this->_barIndicatorChar);
                    
                    $doneWidth = min($visualWidth - $indicatorWidth, round($visualWidth * $percent));
                    if ($doneWidth > 0) {
                        $bar .= substr(str_repeat($this->_barLeftChar, ceil($doneWidth / strlen($this->_barLeftChar))), 0, $doneWidth);
                    }
                    
                    $bar .= $this->_barIndicatorChar;
                    
                    $leftWidth = $visualWidth - $doneWidth - $indicatorWidth;
                    if ($leftWidth > 0) {
                        $bar .= substr(str_repeat($this->_barRightChar, ceil($leftWidth / strlen($this->_barRightChar))), 0, $leftWidth); 
                    }
                    
                    $bar .= ']';
                    
                    $renderedElements[] = $bar;
                    break;
                    
                case self::ELEMENT_PERCENT:
                    $renderedElements[] = str_pad(round($percent * 100), 3, ' ', STR_PAD_LEFT) . '%';
                    break;
                    
                case self::ELEMENT_ETA:
                    // In the first 5 seconds we don't get accurate results,
                    // this skipping technique is found in many progressbar
                    // implementations.
                    if ($timeTaken < 5) {
                        $renderedElements[] = str_repeat(' ', 12);
                        break;
                    }
                                        
                    if ($timeRemaining === null || $timeRemaining > 86400) {
                        $etaFormatted = '??:??:??';
                    } else {
                        $hours   = floor($timeRemaining / 3600);
                        $minutes = floor(($timeRemaining % 3600) / 60);
                        $seconds = ($timeRemaining % 3600 % 60);
                                           
                        $etaFormatted = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
                    }
                    
                    $renderedElements[] = 'ETA ' . $etaFormatted;
                    break;  

                case self::ELEMENT_TEXT:
                    $renderedElements[] = str_pad(substr($text, 0, $this->_textWidth), $this->_textWidth, ' ');
                    break;
            }
        }

        $data .= implode(' ', $renderedElements);
        
        // Output line data
        $this->_outputData($data);
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @return void
     */
    public function finish()
    {
        switch ($this->_finishAction) {
            case self::FINISH_ACTION_EOL:
                $this->_outputData(PHP_EOL);
                break;
                
            case self::FINISH_ACTION_CLEAR_LINE:
                if ($this->_outputStarted) {
                    $data = str_repeat("\x08", $this->_width)
                          . str_repeat(' ', $this->_width)
                          . str_repeat("\x08", $this->_width);
                          
                    $this->_outputData($data);
                }
                break;
                
            case self::FINISH_ACTION_NONE:
                break;
        }
    }
    
    /**
     * Calculate the bar width when other elements changed
     *
     * @return void
     */
    protected function _calculateBarWidth()
    {
        if (in_array(self::ELEMENT_BAR, $this->_elements)) {
            $barWidth = $this->_width;
            
            if (in_array(self::ELEMENT_PERCENT, $this->_elements)) {
                $barWidth -= 4;
            }
            
            if (in_array(self::ELEMENT_ETA, $this->_elements)) {
                $barWidth -= 12;
            }
            
            if (in_array(self::ELEMENT_TEXT, $this->_elements)) {
                $barWidth -= $this->_textWidth;
            }
            
            $this->_barWidth = $barWidth - (count($this->_elements) - 1);
        }
    }
    
    /**
     * Outputs given data to STDOUT.
     * 
     * This split-off is required for unit-testing.
     *
     * @param  string $data
     * @return void
     */
    protected function _outputData($data)
    {
        if ($this->_stdout !== null) {
            fwrite($this->_stdout, $data);
        } else {
            fwrite(STDOUT, $data);
        }            
    }
}PKpG[q.���!ProgressBar/Adapter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * @see Zend_ProgressBar_Exception
 */
require_once 'Zend/ProgressBar/Exception.php';

/**
 * Exception class for Zend_ProgressBar_Adapter
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @uses      Zend_ProgressBar_Exception
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar_Adapter_Exception extends Zend_ProgressBar_Exception
{
}
PKpG[+)�+��ProgressBar/Adapter/JsPull.phpnu&1i�<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_ProgressBar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: JsPush.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * @see Zend_Json
 */
require_once 'Zend/Json.php';

/**
 * @see Zend_ProgressBar_Adapter
 */
require_once 'Zend/ProgressBar/Adapter.php';

/**
 * Zend_ProgressBar_Adapter_JsPull offers a simple method for updating a
 * progressbar in a browser.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @uses      Zend_ProgressBar_Adapter_Interface
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar_Adapter_JsPull extends Zend_ProgressBar_Adapter
{
    /**
     * Wether to exit after json data send or not
     *
     * @var boolean
     */
    protected $_exitAfterSend = true;
    
    /**
     * Set wether to exit after json data send or not
     *
     * @param  boolean $exitAfterSend
     * @return Zend_ProgressBar_Adapter_JsPull
     */
    public function setExitAfterSend($exitAfterSend)
    {
        $this->_exitAfterSend = $exitAfterSend;
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @param  float   $current       Current progress value
     * @param  float   $max           Max progress value
     * @param  flaot   $percent       Current percent value
     * @param  integer $timeTaken     Taken time in seconds
     * @param  integer $timeRemaining Remaining time in seconds
     * @param  string  $text          Status text
     * @return void
     */
    public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text)
    {
        $arguments = array(
            'current'       => $current,
            'max'           => $max,
            'percent'       => ($percent * 100),
            'timeTaken'     => $timeTaken,
            'timeRemaining' => $timeRemaining,
            'text'          => $text,
            'finished'      => false            
        );
        
        $data = Zend_Json::encode($arguments);

        // Output the data
        $this->_outputData($data);
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @return void
     */
    public function finish()
    {
        $data = Zend_Json::encode(array('finished' => true));
              
        $this->_outputData($data);
    }
    
    /**
     * Outputs given data the user agent.
     * 
     * This split-off is required for unit-testing.
     *
     * @param  string $data
     * @return void
     */
    protected function _outputData($data)
    {
        echo $data;   

        if ($this->_exitAfterSend) {
            exit;
        }
    }
}
PKpG[�����ProgressBar/Adapter/JsPush.phpnu&1i�<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_ProgressBar
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: JsPush.php 12233 2008-11-01 00:11:01Z dasprid $
 */

/**
 * @see Zend_Json
 */
require_once 'Zend/Json.php';

/**
 * @see Zend_ProgressBar_Adapter
 */
require_once 'Zend/ProgressBar/Adapter.php';

/**
 * Zend_ProgressBar_Adapter_JsPush offers a simple method for updating a
 * progressbar in a browser.
 *
 * @category  Zend
 * @package   Zend_ProgressBar
 * @uses      Zend_ProgressBar_Adapter_Interface
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_ProgressBar_Adapter_JsPush extends Zend_ProgressBar_Adapter
{
    /**
     * Name of the JavaScript method to call on update
     *
     * @var string
     */
    protected $_updateMethodName = 'Zend_ProgressBar_Update';
    
    /**
     * Name of the JavaScript method to call on finish
     *
     * @var string
     */
    protected $_finishMethodName;
    
    /**
     * Set the update method name
     *
     * @param  string $methodName
     * @return Zend_ProgressBar_Adapter_JsPush
     */
    public function setUpdateMethodName($methodName)
    {
        $this->_updateMethodName = $methodName;

        return $this;
    }

    /**
     * Set the finish method name
     *
     * @param  string $methodName
     * @return Zend_ProgressBar_Adapter_JsPush
     */
    public function setFinishMethodName($methodName)
    {
        $this->_finishMethodName = $methodName;
        
        return $this;
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @param  float   $current       Current progress value
     * @param  float   $max           Max progress value
     * @param  flaot   $percent       Current percent value
     * @param  integer $timeTaken     Taken time in seconds
     * @param  integer $timeRemaining Remaining time in seconds
     * @param  string  $text          Status text
     * @return void
     */
    public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text)
    {
        $arguments = array(
            'current'       => $current,
            'max'           => $max,
            'percent'       => ($percent * 100),
            'timeTaken'     => $timeTaken,
            'timeRemaining' => $timeRemaining,
            'text'          => $text            
        );
        
        $data = '<script type="text/javascript">' 
              . 'parent.' . $this->_updateMethodName . '(' . Zend_Json::encode($arguments) . ');'
              . '</script>';

        // Output the data
        $this->_outputData($data);
    }
    
    /**
     * Defined by Zend_ProgressBar_Adapter_Interface
     *
     * @return void
     */
    public function finish()
    {
        if ($this->_finishMethodName === null) {
            return;
        }
        
        $data = '<script type="text/javascript">' 
              . 'parent.' . $this->_finishMethodName . '();'
              . '</script>';
              
        $this->_outputData($data);
    }
    
    /**
     * Outputs given data the user agent.
     * 
     * This split-off is required for unit-testing.
     *
     * @param  string $data
     * @return void
     */
    protected function _outputData($data)
    {
        // 1024 padding is required for Safari, while 256 padding is required
        // for Internet Explorer. The <br /> is required so Safari actually
        // executes the <script />
        echo str_pad($data . '<br />', 1024, ' ', STR_PAD_RIGHT) . "\n";
        
        flush();
        ob_flush();            
    }
}
PKpG[���View.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract master class for extension.
 */
require_once 'Zend/View/Abstract.php';


/**
 * Concrete class for handling view scripts.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View extends Zend_View_Abstract
{
    /**
     * Whether or not to use streams to mimic short tags
     * @var bool
     */
    private $_useViewStream = false;

    /**
     * Whether or not to use stream wrapper if short_open_tag is false
     * @var bool
     */
    private $_useStreamWrapper = false;

    /**
     * Constructor
     *
     * Register Zend_View_Stream stream wrapper if short tags are disabled.
     * 
     * @param  array $config 
     * @return void
     */
    public function __construct($config = array())
    {
        $this->_useViewStream = (bool) ini_get('short_open_tag') ? false : true;
        if ($this->_useViewStream) {
            if (!in_array('zend.view', stream_get_wrappers())) {
                require_once 'Zend/View/Stream.php';
                stream_wrapper_register('zend.view', 'Zend_View_Stream');
            }
        }

        if (array_key_exists('useStreamWrapper', $config)) {
            $this->setUseStreamWrapper($config['useStreamWrapper']);
        }

        parent::__construct($config);
    }

    /**
     * Set flag indicating if stream wrapper should be used if short_open_tag is off
     * 
     * @param  bool $flag 
     * @return Zend_View
     */
    public function setUseStreamWrapper($flag)
    {
        $this->_useStreamWrapper = (bool) $flag;
        return $this;
    }

    /**
     * Should the stream wrapper be used if short_open_tag is off?
     * 
     * @return bool
     */
    public function useStreamWrapper()
    {
        return $this->_useStreamWrapper;
    }

    /**
     * Includes the view script in a scope with only public $this variables.
     *
     * @param string The view script to execute.
     */
    protected function _run()
    {
        if ($this->_useViewStream && $this->useStreamWrapper()) {
            include 'zend.view://' . func_get_arg(0);
        } else {
            include func_get_arg(0);
        }
    }
}
PKpG[�J�44Currency/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: $
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_Currency
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Currency_Exception extends Zend_Exception
{
}
PKpG[�&�		Session/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 10735 2008-08-06 21:52:47Z ralph $
 * @since      Preview Release 0.2
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * Zend_Session_Exception
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session_Exception extends Zend_Exception
{
    /**
     * sessionStartError
     *
     * @see http://framework.zend.com/issues/browse/ZF-1325
     * @var string PHP Error Message
     */
    static public $sessionStartError = null;

    /**
     * handleSessionStartError() - interface for set_error_handler()
     *
     * @see    http://framework.zend.com/issues/browse/ZF-1325
     * @param  int    $errno
     * @param  string $errstr
     * @return void
     */
    static public function handleSessionStartError($errno, $errstr, $errfile, $errline, $errcontext)
    {
        self::$sessionStartError = $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr . ' ' . $errcontext;
    }

    /**
     * handleSilentWriteClose() - interface for set_error_handler()
     *
     * @see    http://framework.zend.com/issues/browse/ZF-1325
     * @param  int    $errno
     * @param  string $errstr
     * @return void
     */
    static public function handleSilentWriteClose($errno, $errstr, $errfile, $errline, $errcontext)
    {
        self::$sessionStartError .= PHP_EOL . $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr . ' ' . $errcontext;
    }
}

PKpG[L[���Session/Abstract.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $
 * @since      Preview Release 0.2
 */


/**
 * Zend_Session_Abstract
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Session_Abstract
{
    /**
     * Whether or not session permits writing (modification of $_SESSION[])
     *
     * @var bool
     */
    protected static $_writable = false;

    /**
     * Whether or not session permits reading (reading data in $_SESSION[])
     *
     * @var bool
     */
    protected static $_readable = false;

    /**
     * Since expiring data is handled at startup to avoid __destruct difficulties,
     * the data that will be expiring at end of this request is held here
     *
     * @var array
     */
    protected static $_expiringData = array();


    /**
     * Error message thrown when an action requires modification,
     * but current Zend_Session has been marked as read-only.
     */
    const _THROW_NOT_WRITABLE_MSG = 'Zend_Session is currently marked as read-only.';


    /**
     * Error message thrown when an action requires reading session data,
     * but current Zend_Session is not marked as readable.
     */
    const _THROW_NOT_READABLE_MSG = 'Zend_Session is not marked as readable.';


    /**
     * namespaceIsset() - check to see if a namespace or a variable within a namespace is set
     *
     * @param  string $namespace
     * @param  string $name
     * @return bool
     */
    protected static function _namespaceIsset($namespace, $name = null)
    {
        if (self::$_readable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
        }

        if ($name === null) {
            return ( isset($_SESSION[$namespace]) || isset(self::$_expiringData[$namespace]) );
        } else {
            return ( isset($_SESSION[$namespace][$name]) || isset(self::$_expiringData[$namespace][$name]) );
        }
    }


    /**
     * namespaceUnset() - unset a namespace or a variable within a namespace
     *
     * @param  string $namespace
     * @param  string $name
     * @throws Zend_Session_Exception
     * @return void
     */
    protected static function _namespaceUnset($namespace, $name = null)
    {
        if (self::$_writable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(self::_THROW_NOT_WRITABLE_MSG);
        }

        $name = (string) $name;

        // check to see if the api wanted to remove a var from a namespace or a namespace
        if ($name === '') {
            unset($_SESSION[$namespace]);
            unset(self::$_expiringData[$namespace]);
        } else {
            unset($_SESSION[$namespace][$name]);
            unset(self::$_expiringData[$namespace]);
        }

        // if we remove the last value, remove namespace.
        if (empty($_SESSION[$namespace])) {
            unset($_SESSION[$namespace]);
        }
    }


    /**
     * namespaceGet() - Get $name variable from $namespace, returning by reference.
     *
     * @param  string $namespace
     * @param  string $name
     * @return mixed
     */
    protected static function & _namespaceGet($namespace, $name = null)
    {
        if (self::$_readable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
        }

        if ($name === null) {
            if (isset($_SESSION[$namespace])) { // check session first for data requested
                return $_SESSION[$namespace];
            } elseif (isset(self::$_expiringData[$namespace])) { // check expiring data for data reqeusted
                return self::$_expiringData[$namespace];
            } else {
                return $_SESSION[$namespace]; // satisfy return by reference
            }
        } else {
            if (isset($_SESSION[$namespace][$name])) { // check session first
                return $_SESSION[$namespace][$name];
            } elseif (isset(self::$_expiringData[$namespace][$name])) { // check expiring data
                return self::$_expiringData[$namespace][$name];
            } else {
                return $_SESSION[$namespace][$name]; // satisfy return by reference
            }
        }
    }


    /**
     * namespaceGetAll() - Get an array containing $namespace, including expiring data.
     *
     * @param string $namespace
     * @param string $name
     * @return mixed
     */
    protected static function _namespaceGetAll($namespace)
    {
        $currentData  = (isset($_SESSION[$namespace]) && is_array($_SESSION[$namespace])) ?
            $_SESSION[$namespace] : array();
        $expiringData = (isset(self::$_expiringData[$namespace]) && is_array(self::$_expiringData[$namespace])) ?
            self::$_expiringData[$namespace] : array();
        return array_merge($currentData, $expiringData);
    }
}
PKpG[����>�>Session/Namespace.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Namespace.php 13338 2008-12-17 11:13:16Z sidhighwind $
 * @since      Preview Release 0.2
 */


/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';


/**
 * @see Zend_Session_Abstract
 */
require_once 'Zend/Session/Abstract.php';


/**
 * Zend_Session_Namespace
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session_Namespace extends Zend_Session_Abstract implements IteratorAggregate
{

    /**
     * used as option to constructor to prevent additional instances to the same namespace
     */
    const SINGLE_INSTANCE = true;

    /**
     * Namespace - which namespace this instance of zend-session is saving-to/getting-from
     *
     * @var string
     */
    protected $_namespace = "Default";

    /**
     * Namespace locking mechanism
     *
     * @var array
     */
    protected static $_namespaceLocks = array();

    /**
     * Single instance namespace array to ensure data security.
     *
     * @var array
     */
    protected static $_singleInstances = array();

    /**
     * __construct() - Returns an instance object bound to a particular, isolated section
     * of the session, identified by $namespace name (defaulting to 'Default').
     * The optional argument $singleInstance will prevent construction of additional
     * instance objects acting as accessors to this $namespace.
     *
     * @param string $namespace       - programmatic name of the requested namespace
     * @param bool $singleInstance    - prevent creation of additional accessor instance objects for this namespace
     * @return void
     */
    public function __construct($namespace = 'Default', $singleInstance = false)
    {
        if ($namespace === '') {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Session namespace must be a non-empty string.');
        }

        if ($namespace[0] == "_") {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Session namespace must not start with an underscore.');
        }

        if (preg_match('#(^[0-9])#i', $namespace[0])) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Session namespace must not start with a number.');
        }

        if (isset(self::$_singleInstances[$namespace])) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("A session namespace object already exists for this namespace ('$namespace'), and no additional accessors (session namespace objects) for this namespace are permitted.");
        }

        if ($singleInstance === true) {
            self::$_singleInstances[$namespace] = true;
        }

        $this->_namespace = $namespace;

        // Process metadata specific only to this namespace.
        Zend_Session::start(true); // attempt auto-start (throws exception if strict option set)

        if (self::$_readable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG);
        }

        if (!isset($_SESSION['__ZF'])) {
            return; // no further processing needed
        }

        // do not allow write access to namespaces, after stop() or writeClose()
        if (parent::$_writable === true) {
            if (isset($_SESSION['__ZF'][$namespace])) {

                // Expire Namespace by Namespace Hop (ENNH)
                if (isset($_SESSION['__ZF'][$namespace]['ENNH'])) {
                    $_SESSION['__ZF'][$namespace]['ENNH']--;

                    if ($_SESSION['__ZF'][$namespace]['ENNH'] === 0) {
                        if (isset($_SESSION[$namespace])) {
                            self::$_expiringData[$namespace] = $_SESSION[$namespace];
                            unset($_SESSION[$namespace]);
                        }
                        unset($_SESSION['__ZF'][$namespace]['ENNH']);
                    }
                }

                // Expire Namespace Variables by Namespace Hop (ENVNH)
                if (isset($_SESSION['__ZF'][$namespace]['ENVNH'])) {
                    foreach ($_SESSION['__ZF'][$namespace]['ENVNH'] as $variable => $hops) {
                        $_SESSION['__ZF'][$namespace]['ENVNH'][$variable]--;

                        if ($_SESSION['__ZF'][$namespace]['ENVNH'][$variable] === 0) {
                            if (isset($_SESSION[$namespace][$variable])) {
                                self::$_expiringData[$namespace][$variable] = $_SESSION[$namespace][$variable];
                                unset($_SESSION[$namespace][$variable]);
                            }
                            unset($_SESSION['__ZF'][$namespace]['ENVNH'][$variable]);
                        }
                    }
                }
            }

            if (empty($_SESSION['__ZF'][$namespace])) {
                unset($_SESSION['__ZF'][$namespace]);
            }

            if (empty($_SESSION['__ZF'])) {
                unset($_SESSION['__ZF']);
            }
        }
    }


    /**
     * getIterator() - return an iteratable object for use in foreach and the like,
     * this completes the IteratorAggregate interface
     *
     * @return ArrayObject - iteratable container of the namespace contents
     */
    public function getIterator()
    {
        return new ArrayObject(parent::_namespaceGetAll($this->_namespace));
    }


    /**
     * lock() - mark a session/namespace as readonly
     *
     * @return void
     */
    public function lock()
    {
        self::$_namespaceLocks[$this->_namespace] = true;
    }


    /**
     * unlock() - unmark a session/namespace to enable read & write
     *
     * @return void
     */
    public function unlock()
    {
        unset(self::$_namespaceLocks[$this->_namespace]);
    }


    /**
     * unlockAll() - unmark all session/namespaces to enable read & write
     *
     * @return void
     */
    public static function unlockAll()
    {
        self::$_namespaceLocks = array();
    }


    /**
     * isLocked() - return lock status, true if, and only if, read-only
     *
     * @return bool
     */
    public function isLocked()
    {
        return isset(self::$_namespaceLocks[$this->_namespace]);
    }


    /**
     * unsetAll() - unset all variables in this namespace
     *
     * @return true
     */
    public function unsetAll()
    {
        return parent::_namespaceUnset($this->_namespace);
    }


    /**
     * __get() - method to get a variable in this object's current namespace
     *
     * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
     * @return mixed
     */
    public function & __get($name)
    {
        if ($name === '') {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
        }

        return parent::_namespaceGet($this->_namespace, $name);
    }


    /**
     * __set() - method to set a variable/value in this object's namespace
     *
     * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
     * @param mixed $value - value in the <key,value> pair to assign to the $name key
     * @throws Zend_Session_Exception
     * @return true
     */
    public function __set($name, $value)
    {
        if (isset(self::$_namespaceLocks[$this->_namespace])) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('This session/namespace has been marked as read-only.');
        }

        if ($name === '') {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
        }

        if (parent::$_writable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
        }

        $name = (string) $name;

        $_SESSION[$this->_namespace][$name] = $value;
    }


    /**
     * apply() - enables applying user-selected function, such as array_merge() to the namespace
     * Parameters following the $callback argument are passed to the callback function.
     * Caveat: ignores members expiring now.
     *
     * Example:
     *   $namespace->apply('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose'));
     *   $namespace->apply('count');
     *
     * @param string|array $callback - callback function
     */
    public function apply($callback)
    {
        $arg_list = func_get_args();
        $arg_list[0] = $_SESSION[$this->_namespace];
        return call_user_func_array($callback, $arg_list);
    }


    /**
     * applySet() - enables applying user-selected function, and sets entire namespace to the result
     * Result of $callback must be an array.
     * Parameters following the $callback argument are passed to the callback function.
     * Caveat: ignores members expiring now.
     *
     * Example:
     *   $namespace->applySet('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose'));
     *
     * @param string|array $callback - callback function
     */
    public function applySet($callback)
    {
        $arg_list = func_get_args();
        $arg_list[0] = $_SESSION[$this->_namespace];
        $result = call_user_func_array($callback, $arg_list);
        if (!is_array($result)) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Result must be an array. Got: ' . gettype($result));
        }
        $_SESSION[$this->_namespace] = $result;
        return $result;
    }


    /**
     * __isset() - determine if a variable in this object's namespace is set
     *
     * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
     * @return bool
     */
    public function __isset($name)
    {
        if ($name === '') {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
        }

        return parent::_namespaceIsset($this->_namespace, $name);
    }


    /**
     * __unset() - unset a variable in this object's namespace.
     *
     * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace
     * @return true
     */
    public function __unset($name)
    {
        if ($name === '') {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception("The '$name' key must be a non-empty string");
        }

        return parent::_namespaceUnset($this->_namespace, $name);
    }


    /**
     * setExpirationSeconds() - expire the namespace, or specific variables after a specified
     * number of seconds
     *
     * @param int $seconds     - expires in this many seconds
     * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all)
     * @throws Zend_Session_Exception
     * @return void
     */
    public function setExpirationSeconds($seconds, $variables = null)
    {
        if (parent::$_writable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
        }

        if ($seconds <= 0) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Seconds must be positive.');
        }

        if ($variables === null) {

            // apply expiration to entire namespace
            $_SESSION['__ZF'][$this->_namespace]['ENT'] = time() + $seconds;

        } else {

            if (is_string($variables)) {
                $variables = array($variables);
            }

            foreach ($variables as $variable) {
                if (!empty($variable)) {
                    $_SESSION['__ZF'][$this->_namespace]['ENVT'][$variable] = time() + $seconds;
                }
            }
        }
    }


    /**
     * setExpirationHops() - expire the namespace, or specific variables after a specified
     * number of page hops
     *
     * @param int $hops        - how many "hops" (number of subsequent requests) before expiring
     * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all)
     * @param boolean $hopCountOnUsageOnly - OPTIONAL if set, only count a hop/request if this namespace is used
     * @throws Zend_Session_Exception
     * @return void
     */
    public function setExpirationHops($hops, $variables = null, $hopCountOnUsageOnly = false)
    {
        if (parent::$_writable === false) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
        }

        if ($hops <= 0) {
            /**
             * @see Zend_Session_Exception
             */
            require_once 'Zend/Session/Exception.php';
            throw new Zend_Session_Exception('Hops must be positive number.');
        }

        if ($variables === null) {

            // apply expiration to entire namespace
            if ($hopCountOnUsageOnly === false) {
                $_SESSION['__ZF'][$this->_namespace]['ENGH'] = $hops;
            } else {
                $_SESSION['__ZF'][$this->_namespace]['ENNH'] = $hops;
            }

        } else {

            if (is_string($variables)) {
                $variables = array($variables);
            }

            foreach ($variables as $variable) {
                if (!empty($variable)) {
                    if ($hopCountOnUsageOnly === false) {
                        $_SESSION['__ZF'][$this->_namespace]['ENVGH'][$variable] = $hops;
                    } else {
                        $_SESSION['__ZF'][$this->_namespace]['ENVNH'][$variable] = $hops;
                    }
                }
            }
        }
    }

}
PKpG[�[d��E�ESession/SaveHandler/DbTable.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-webat this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DbTable.php 12585 2008-11-12 17:02:49Z alexander $
 */

/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';

/**
 * @see Zend_Db_Table_Abstract
 */
require_once 'Zend/Db/Table/Abstract.php';

/**
 * @see Zend_Db_Table_Row_Abstract
 */
require_once 'Zend/Db/Table/Row/Abstract.php';

/**
 * @see Zend_Config
 */
require_once 'Zend/Config.php';

/**
 * Zend_Session_SaveHandler_DbTable
 *
 * @category   Zend
 * @package    Zend_Session
 * @subpackage SaveHandler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session_SaveHandler_DbTable extends Zend_Db_Table_Abstract implements Zend_Session_SaveHandler_Interface
{
    const PRIMARY_ASSIGNMENT                   = 'primaryAssignment';
    const PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH = 'sessionSavePath';
    const PRIMARY_ASSIGNMENT_SESSION_NAME      = 'sessionName';
    const PRIMARY_ASSIGNMENT_SESSION_ID        = 'sessionId';

    const MODIFIED_COLUMN   = 'modifiedColumn';
    const LIFETIME_COLUMN   = 'lifetimeColumn';
    const DATA_COLUMN       = 'dataColumn';

    const LIFETIME          = 'lifetime';
    const OVERRIDE_LIFETIME = 'overrideLifetime';

    const PRIMARY_TYPE_NUM         = 'PRIMARY_TYPE_NUM';
    const PRIMARY_TYPE_PRIMARYNUM  = 'PRIMARY_TYPE_PRIMARYNUM';
    const PRIMARY_TYPE_ASSOC       = 'PRIMARY_TYPE_ASSOC';
    const PRIMARY_TYPE_WHERECLAUSE = 'PRIMARY_TYPE_WHERECLAUSE';

    /**
     * Session table primary key value assignment
     *
     * @var array
     */
    protected $_primaryAssignment = null;

    /**
     * Session table last modification time column
     *
     * @var string
     */
    protected $_modifiedColumn = null;

    /**
     * Session table lifetime column
     *
     * @var string
     */
    protected $_lifetimeColumn = null;

    /**
     * Session table data column
     *
     * @var string
     */
    protected $_dataColumn = null;

    /**
     * Session lifetime
     *
     * @var int
     */
    protected $_lifetime = false;

    /**
     * Whether or not the lifetime of an existing session should be overridden
     *
     * @var boolean
     */
    protected $_overrideLifetime = false;

    /**
     * Session save path
     *
     * @var string
     */
    protected $_sessionSavePath;

    /**
     * Session name
     *
     * @var string
     */
    protected $_sessionName;

    /**
     * Constructor
     *
     * $config is an instance of Zend_Config or an array of key/value pairs containing configuration options for
     * Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract. These are the configuration options for
     * Zend_Session_SaveHandler_DbTable:
     *
     * primaryAssignment => (string|array) Session table primary key value assignment
     *      (optional; default: 1 => sessionId) You have to assign a value to each primary key of your session table.
     *      The value of this configuration option is either a string if you have only one primary key or an array if
     *      you have multiple primary keys. The array consists of numeric keys starting at 1 and string values. There
     *      are some values which will be replaced by session information:
     *
     *      sessionId       => The id of the current session
     *      sessionName     => The name of the current session
     *      sessionSavePath => The save path of the current session
     *
     *      NOTE: One of your assignments MUST contain 'sessionId' as value!
     *
     * modifiedColumn    => (string) Session table last modification time column
     *
     * lifetimeColumn    => (string) Session table lifetime column
     *
     * dataColumn        => (string) Session table data column
     *
     * lifetime          => (integer) Session lifetime (optional; default: ini_get('session.gc_maxlifetime'))
     *
     * overrideLifetime  => (boolean) Whether or not the lifetime of an existing session should be overridden
     *      (optional; default: false)
     *
     * @param  Zend_Config|array $config      User-provided configuration
     * @return void
     * @throws Zend_Session_SaveHandler_Exception
     */
    public function __construct($config)
    {
        if ($config instanceof Zend_Config) {
            $config = $config->toArray();
        } else if (!is_array($config)) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                '$config must be an instance of Zend_Config or array of key/value pairs containing '
              . 'configuration options for Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract.');
        }

        foreach ($config as $key => $value) {
            do {
                switch ($key) {
                    case self::PRIMARY_ASSIGNMENT:
                        $this->_primaryAssignment = $value;
                        break;
                    case self::MODIFIED_COLUMN:
                        $this->_modifiedColumn = (string) $value;
                        break;
                    case self::LIFETIME_COLUMN:
                        $this->_lifetimeColumn = (string) $value;
                        break;
                    case self::DATA_COLUMN:
                        $this->_dataColumn = (string) $value;
                        break;
                    case self::LIFETIME:
                        $this->setLifetime($value);
                        break;
                    case self::OVERRIDE_LIFETIME:
                        $this->setOverrideLifetime($value);
                        break;
                    default:
                        // unrecognized options passed to parent::__construct()
                        break 2;
                }
                unset($config[$key]);
            } while (false);
        }

        parent::__construct($config);
    }

    /**
     * Destructor
     *
     * @return void
     */
    public function __destruct()
    {
        Zend_Session::writeClose();
    }

    /**
     * Set session lifetime and optional whether or not the lifetime of an existing session should be overridden
     *
     * $lifetime === false resets lifetime to session.gc_maxlifetime
     *
     * @param int $lifetime
     * @param boolean $overrideLifetime (optional)
     * @return Zend_Session_SaveHandler_DbTable
     */
    public function setLifetime($lifetime, $overrideLifetime = null)
    {
        if ($lifetime < 0) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';
            throw new Zend_Session_SaveHandler_Exception();
        } else if (empty($lifetime)) {
            $this->_lifetime = (int) ini_get('session.gc_maxlifetime');
        } else {
            $this->_lifetime = (int) $lifetime;
        }

        if ($overrideLifetime != null) {
            $this->setOverrideLifetime($overrideLifetime);
        }

        return $this;
    }

    /**
     * Retrieve session lifetime
     *
     * @return int
     */
    public function getLifetime()
    {
        return $this->_lifetime;
    }

    /**
     * Set whether or not the lifetime of an existing session should be overridden
     *
     * @param boolean $overrideLifetime
     * @return Zend_Session_SaveHandler_DbTable
     */
    public function setOverrideLifetime($overrideLifetime)
    {
        $this->_overrideLifetime = (boolean) $overrideLifetime;

        return $this;
    }

    /**
     * Retrieve whether or not the lifetime of an existing session should be overridden
     *
     * @return boolean
     */
    public function getOverrideLifetime()
    {
        return $this->_overrideLifetime;
    }

    /**
     * Open Session
     *
     * @param string $save_path
     * @param string $name
     * @return boolean
     */
    public function open($save_path, $name)
    {
        $this->_sessionSavePath = $save_path;
        $this->_sessionName     = $name;

        return true;
    }

    /**
     * Close session
     *
     * @return boolean
     */
    public function close()
    {
        return true;
    }

    /**
     * Read session data
     *
     * @param string $id
     * @return string
     */
    public function read($id)
    {
        $return = '';

        $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id));

        if (count($rows)) {
            if ($this->_getExpirationTime($row = $rows->current()) > time()) {
                $return = $row->{$this->_dataColumn};
            } else {
                $this->destroy($id);
            }
        }

        return $return;
    }

    /**
     * Write session data
     *
     * @param string $id
     * @param string $data
     * @return boolean
     */
    public function write($id, $data)
    {
        $return = false;

        $data = array($this->_modifiedColumn => time(),
                      $this->_dataColumn     => (string) $data);

        $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id));

        if (count($rows)) {
            $data[$this->_lifetimeColumn] = $this->_getLifetime($rows->current());

            if ($this->update($data, $this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) {
                $return = true;
            }
        } else {
            $data[$this->_lifetimeColumn] = $this->_lifetime;

            if ($this->insert(array_merge($this->_getPrimary($id, self::PRIMARY_TYPE_ASSOC), $data))) {
                $return = true;
            }
        }

        return $return;
    }

    /**
     * Destroy session
     *
     * @param string $id
     * @return boolean
     */
    public function destroy($id)
    {
        $return = false;

        if ($this->delete($this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) {
            $return = true;
        }

        return $return;
    }

    /**
     * Garbage Collection
     *
     * @param int $maxlifetime
     * @return true
     */
    public function gc($maxlifetime)
    {
        $this->delete($this->getAdapter()->quoteIdentifier($this->_modifiedColumn) . ' + '
                    . $this->getAdapter()->quoteIdentifier($this->_lifetimeColumn) . ' < '
                    . $this->getAdapter()->quote(time()));

        return true;
    }

    /**
     * Calls other protected methods for individual setup tasks and requirement checks
     *
     * @return void
     */
    protected function _setup()
    {
        parent::_setup();

        $this->_setupPrimaryAssignment();
        $this->setLifetime($this->_lifetime);

        $this->_checkRequiredColumns();
    }

    /**
     * Initialize table and schema names
     *
     * @return void
     * @throws Zend_Session_SaveHandler_Exception
     */
    protected function _setupTableName()
    {
        if (empty($this->_name) && basename(($this->_name = session_save_path())) != $this->_name) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception('session.save_path is a path and not a table name.');
        }

        if (strpos($this->_name, '.')) {
            list($this->_schema, $this->_name) = explode('.', $this->_name);
        }
    }

    /**
     * Initialize session table primary key value assignment
     *
     * @return void
     * @throws Zend_Session_SaveHandler_Exception
     */
    protected function _setupPrimaryAssignment()
    {
        if ($this->_primaryAssignment === null) {
            $this->_primaryAssignment = array(1 => self::PRIMARY_ASSIGNMENT_SESSION_ID);
        } else if (!is_array($this->_primaryAssignment)) {
            $this->_primaryAssignment = array(1 => (string) $this->_primaryAssignment);
        } else if (isset($this->_primaryAssignment[0])) {
            array_unshift($this->_primaryAssignment, null);

            unset($this->_primaryAssignment[0]);
        }

        if (count($this->_primaryAssignment) !== count($this->_primary)) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment "
              . "for each session table primary key.");
        } else if (!in_array(self::PRIMARY_ASSIGNMENT_SESSION_ID, $this->_primaryAssignment)) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment "
              . "for the session id ('" . self::PRIMARY_ASSIGNMENT_SESSION_ID . "').");
        }
    }

    /**
     * Check for required session table columns
     *
     * @return void
     * @throws Zend_Session_SaveHandler_Exception
     */
    protected function _checkRequiredColumns()
    {
        if ($this->_modifiedColumn === null) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                "Configuration must define '" . self::MODIFIED_COLUMN . "' which names the "
              . "session table last modification time column.");
        } else if ($this->_lifetimeColumn === null) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                "Configuration must define '" . self::LIFETIME_COLUMN . "' which names the "
              . "session table lifetime column.");
        } else if ($this->_dataColumn === null) {
            /**
             * @see Zend_Session_SaveHandler_Exception
             */
            require_once 'Zend/Session/SaveHandler/Exception.php';

            throw new Zend_Session_SaveHandler_Exception(
                "Configuration must define '" . self::DATA_COLUMN . "' which names the "
              . "session table data column.");
        }
    }

    /**
     * Retrieve session table primary key values
     *
     * @param string $id
     * @param string $type (optional; default: self::PRIMARY_TYPE_NUM)
     * @return array
     */
    protected function _getPrimary($id, $type = null)
    {
    	$this->_setupPrimaryKey();

        if ($type === null) {
            $type = self::PRIMARY_TYPE_NUM;
        }

        $primaryArray = array();

        foreach ($this->_primary as $index => $primary) {
            switch ($this->_primaryAssignment[$index]) {
                case self::PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH:
                    $value = $this->_sessionSavePath;
                    break;
                case self::PRIMARY_ASSIGNMENT_SESSION_NAME:
                    $value = $this->_sessionName;
                    break;
                case self::PRIMARY_ASSIGNMENT_SESSION_ID:
                    $value = (string) $id;
                    break;
                default:
                    $value = (string) $this->_primaryAssignment[$index];
                    break;
            }

            switch ((string) $type) {
                case self::PRIMARY_TYPE_PRIMARYNUM:
                    $primaryArray[$index] = $value;
                    break;
                case self::PRIMARY_TYPE_ASSOC:
                    $primaryArray[$primary] = $value;
                    break;
                case self::PRIMARY_TYPE_WHERECLAUSE:
                    $primaryArray[] = $this->getAdapter()->quoteIdentifier($primary) . ' = '
                                    . $this->getAdapter()->quote($value);
                    break;
                case self::PRIMARY_TYPE_NUM:
                default:
                    $primaryArray[] = $value;
                    break;
            }
        }

        return $primaryArray;
    }

    /**
     * Retrieve session lifetime considering Zend_Session_SaveHandler_DbTable::OVERRIDE_LIFETIME
     *
     * @param Zend_Db_Table_Row_Abstract $row
     * @return int
     */
    protected function _getLifetime(Zend_Db_Table_Row_Abstract $row)
    {
        $return = $this->_lifetime;

        if (!$this->_overrideLifetime) {
            $return = (int) $row->{$this->_lifetimeColumn};
        }

        return $return;
    }

    /**
     * Retrieve session expiration time
     *
     * @param Zend_Db_Table_Row_Abstract $row
     * @return int
     */
    protected function _getExpirationTime(Zend_Db_Table_Row_Abstract $row)
    {
        return (int) $row->{$this->_modifiedColumn} + $this->_getLifetime($row);
    }
}
PKpG[�as;��!Session/SaveHandler/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 10116 2008-07-16 02:34:10Z matthew $
 */

/**
 * @see Zend_Session_Exception
 */
require_once 'Zend/Session/Exception.php';

/**
 * Zend_Session_SaveHandler_Exception
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session_SaveHandler_Exception extends Zend_Session_Exception
{}
PKpG[��̤!Session/SaveHandler/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9133 2008-04-04 13:06:09Z darby $
 * @since      Preview Release 0.2
 */

/**
 * Zend_Session_SaveHandler_Interface
 *
 * @category   Zend
 * @package    Zend_Session
 * @subpackage SaveHandler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @see        http://php.net/session_set_save_handler
 */
interface Zend_Session_SaveHandler_Interface
{

    /**
     * Open Session - retrieve resources
     *
     * @param string $save_path
     * @param string $name
     */
    public function open($save_path, $name);

    /**
     * Close Session - free resources
     *
     */
    public function close();

    /**
     * Read session data
     *
     * @param string $id
     */
    public function read($id);

    /**
     * Write Session - commit data to resource
     *
     * @param string $id
     * @param mixed $data
     */
    public function write($id, $data);

    /**
     * Destroy Session - remove data from resource for
     * given session id
     *
     * @param string $id
     */
    public function destroy($id);

    /**
     * Garbage Collection - remove old session data older
     * than $maxlifetime (in seconds)
     *
     * @param int $maxlifetime
     */
    public function gc($maxlifetime);

}
PKpG[���99Session/Validator/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 9133 2008-04-04 13:06:09Z darby $
 * @since      Preview Release 0.2
 */

/**
 * Zend_Session_Validator_Interface
 *
 * @category   Zend
 * @package    Zend_Session
 * @subpackage Validator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Session_Validator_Interface
{

    /**
     * Setup() - this method will store the environment variables
     * necessary to be able to validate against in future requests.
     *
     * @return void
     */
    public function setup();

    /**
     * Validate() - this method will be called at the beginning of
     * every session to determine if the current environment matches
     * that which was store in the setup() procedure.
     *
     * @return boolean
     */
    public function validate();

}
PKpG[8ou�;;Session/Validator/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 9133 2008-04-04 13:06:09Z darby $
 * @since      Preview Release 0.2
 */

/**
 * @see Zend_Session_Validator_Interface
 */
require_once 'Zend/Session/Validator/Interface.php';

/**
 * Zend_Session_Validator_Abstract
 *
 * @category   Zend
 * @package    Zend_Session
 * @subpackage Validator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Session_Validator_Abstract implements Zend_Session_Validator_Interface
{

    /**
     * SetValidData() - This method should be used to store the environment variables that
     * will be needed in order to validate the session later in the validate() method.
     * These values are stored in the session in the __ZF namespace, in an array named VALID
     *
     * @param  mixed $data
     * @return void
     */
    protected function setValidData($data)
    {
        $validatorName = get_class($this);

        $_SESSION['__ZF']['VALID'][$validatorName] = $data;
    }


    /**
     * GetValidData() - This method should be used to retrieve the environment variables that
     * will be needed to 'validate' a session.
     *
     * @return mixed
     */
    protected function getValidData()
    {
        $validatorName = get_class($this);

        return $_SESSION['__ZF']['VALID'][$validatorName];
    }

}
PKpG[�F�6��#Session/Validator/HttpUserAgent.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Session
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HttpUserAgent.php 9133 2008-04-04 13:06:09Z darby $
 * @since      Preview Release 0.2
 */

/**
 * @see Zend_Session_Validator_Abstract
 */
require_once 'Zend/Session/Validator/Abstract.php';

/**
 * Zend_Session_Validator_HttpUserAgent
 *
 * @category   Zend
 * @package    Zend_Session
 * @subpackage Validator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Session_Validator_HttpUserAgent extends Zend_Session_Validator_Abstract
{

    /**
     * Setup() - this method will get the current user agent and store it in the session
     * as 'valid data'
     *
     * @return void
     */
    public function setup()
    {
        $this->setValidData( (isset($_SERVER['HTTP_USER_AGENT'])
            ? $_SERVER['HTTP_USER_AGENT'] : null) );
    }

    /**
     * Validate() - this method will determine if the current user agent matches the
     * user agent we stored when we initialized this variable.
     *
     * @return bool
     */
    public function validate()
    {
        $currentBrowser = (isset($_SERVER['HTTP_USER_AGENT'])
            ? $_SERVER['HTTP_USER_AGENT'] : null);

        return $currentBrowser === $this->getValidData();
    }

}
PKpG[դnJjjText/Figlet/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Figlet
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id$
 */

/**
 * @see Zend_Text_Exception
 */
require_once 'Zend/Text/Exception.php';

/**
 * Exception class for Zend_Figlet
 *
 * @category  Zend
 * @package   Zend_Text_Figlet
 * @uses      Zend_Text_Exception
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Figlet_Exception extends Zend_Text_Exception
{
}
PKpG[l�T�!�!Text/Figlet/zend-framework.flfnu&1i�flf2a$ 7 6 10 51 22 0 7987
Author : Wil Sinclair
Date   : 2008/6/26 20:34:25
Version: 1.0

-------------------------------------------------------------------------------
 
 Zend Framework

 LICENSE

 This source file is subject to the new BSD license that is bundled
 with this package in the file LICENSE.txt.
 It is also available through the world-wide-web at this URL:
 http://framework.zend.com/license/new-bsd
 If you did not receive a copy of the license and are unable to
 obtain it through the world-wide-web, please send an email
 to license@zend.com so we can send you a copy immediately.
 
 Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)

-------------------------------------------------------------------------------

$ #
$ #
$ #
$ #
$ #
$ #
$ ##
   __   #
  /  \\ #
  |  || #
  |$ || #
   \//  #
   []|  #
        ##
   __  __ #
  / /// //#
 /_///_// #
 `-` `-`  #
          #
          #
          ##
##
 #
 #
 #
 #
 #
 ##
    _     #
   | ||_  #
  / ___// #
  \___ \\ #
  /  $ // #
 /_   //  #
 `-|_||   ##
%#
 #
 #
 #
 #
 #
 ##
&#
 #
 #
 #
 #
 #
 ##
'#
 #
 #
 #
 #
 #
 ##
(#
 #
 #
 #
 #
 #
 ##
)#
 #
 #
 #
 #
 #
 ##
*#
 #
 #
 #
 #
 #
 ##
          #
    _     #
  _| ||   #
 |_ $ _|| #
 `-|_|-`  #
    -     #
          ##
,#
 #
 #
 #
 #
 #
 ##
          #
          #
 ,------,,#
'======'' #
          #
          #
          ##
.#
 #
 #
 #
 #
 #
 ##
/#
 #
 #
 #
 #
 #
 ##
   ___    #
  / _ \\  #
 | |$| || #
 | |_| || #
  \___//  #
  `---`   #
          ##
   __     #
  /  ||   #
   | ||   #
  _| ||_  #
 |__$__|| #
 `-----`  #
          ##
 _____    #
 \___ \\  #
 / ___//  #
 | $  \\  #
 |_____\\ #
 `------` #
          ##
  _____   #
 |___  \\ #
  __$\ // #
  __$/ \\ #
 |_____// #
 `-----`  #
          ##
    __    #
   /  ||  #
  / /|||_ #
 /__ $ _||#
    |_||  #
    `-`   #
          ##
   _____  #
  / ___// #
 /___ \\  #
  / $ //  #
 /___//   #
`----`    #
          ##
    __   #
   / //  #
  / //   #
 / __ \\ #
 \____// #
  `---`  #
         ##
  ______  #
 |___  // #
    / //  #
   | ||   #
   |_||   #
   `-`    # 
          ##
  ____   #
 /    \\ #
 \ -- // #
 / -- \\ #
 \____// #
 `----`  #
         ##
  ____    #
 / __ \\  #
 \__   || #
    / //  #
   /_//   #
   `-`    #
          ##
       #
       #
   []| #
       #
   []| #
       #
       ##
       #
   _   #
  [_]| #
   _   #
  | ]] #
  |//  #
  '    ##
<#
 #
 #
 #
 #
 #
 ##
          #
  ______  #
 /_____// #
 /_____// #
 `-----`  #
          #
          ##
>#
 #
 #
 #
 #
 #
 ##
?#
 #
 #
 #
 #
 #
 ##
@#
 #
 #
 #
 #
 #
 ##
   ___    #
  / _ \\  #
 / //\ \\ #
|  ___  ||#
|_||  |_||#
`-`   `-` #
          ##
 ______   #
|      \\ #
|  --$  // #
|  --  \\ #
|______// #
`------`  #
          ##
  _____   #
 / ____|| #
/ //---`' #
\ \\___   #
 \_____|| #
  `----`  #
          ##
 _____    #
|  __ \\  #
| |$ \ || #
| |__/ || #
|_____//  #
 -----`   #
          ##
  _____   #
 |  ___|| #
 | ||__   #
 | ||__   #
 |_____|| #
 `-----`  #
          ##
  ______  #
 /_____// #
 `____ `  #
 /___//   #
 `__ `    #
 /_//     #
 `-`      ##
  _____   #
 /  ___|| #
| //$__   #
| \\_\ || #
 \____//  #
  `---`   #
          ##
 __   _   #
| || | || #
| '--' || #
| .--. || #
|_|| |_|| #
`-`  `-`  #
          ##
  ______  #
 /_   _// #
  -| ||-  #
  _| ||_  #
 /_____// #
 `-----`  #
          ##
  ______  #
 /_   _// #
   | ||   #
  _| ||   #
 /__//    #
 `--`     #
          ##
  _  __  #
 | |/ // #
 | ' //  #
 | . \\  #
 |_|\_\\ #
 `-` --` #
         ##
  __     #
 | ||    #
 | ||    #
 | ||__  #
 |____// #
 `----`  #
         ##
 _    _   #
| \  / || #
|  \/  || #
| .  . || #
|_|\/|_|| #
`-`  `-`  #
          ##
  _  _   #
 | \| || #
 |  ' || #
 | .  || #
 |_|\_|| #
 `-` -`  #
         ##
   ___    #
  / _ \\  #
 | /$\ || #
 | \_/ || #
  \___//  #
  `---`   #
          ##
  ____    #
 |  _ \\  #
 | |_| || #
 | .__//  #
 |_|--`   #
 `-`      #
          ##
  ___    #
 / _ \\  #
| /$\ || #
| \_/ || #
 \___ \\ #
 `---`   #
         ##
  ____    #
 |  _ \\  #
 | |_| || #
 | .  //  #
 |_|\_\\  #
 `-` --`  #
          ##
   _____  #
  / ___// #
  \___ \\ #
  /  $ // #
 /____//  #
`-----`   #
          ##
  ______  #
 /_   _// #
 `-| |,-  #
   | ||   #
   |_||   #
   `-`'   #
          ##
 _    _   #
| || | || #
| || | || #
| \\_/ || #
 \____//  #
  `---`   #
          ##
__    __  #
\ \\ / // #
 \ \/ //  #
  \  //   #
   \//    #
    `     #
          ##
 _    _   #
| |  | || #
| |/\| || #
|  /\  || #
|_// \_|| #
`-`   `-` #
          ##
 __   __  #
 \ \\/ // #
  \ $ //  #
  / . \\  #
 /_//\_\\ #
 `-`  --` #
          ##
 __   __  #
 \ \\/ // #
  \ ` //  #
   | ||   #
   |_||   #
   `-`'   #
          ##
 ______   #
|____ //  #
   / //   #
  / //    #
 / //__   #
/______|| #
`------`  ##
[#
 #
 #
 #
 #
 #
 ##
\#
 #
 #
 #
 #
 #
 ##
]#
 #
 #
 #
 #
 #
 ##
^#
 #
 #
 #
 #
 #
 ##
_#
 #
 #
 #
 #
 #
 ##
`#
 #
 #
 #
 #
 #
 ##
   ___    #
  / _ \\  #
 / //\ \\ #
|  ___  ||#
|_||  |_||#
`-`   `-` #
          ##
 ______   #
|      \\ #
|  --$ // #
|  --  \\ #
|______// #
`------`  #
          ##
  _____   #
 / ____|| #
/ //---`' #
\ \\___   #
 \_____|| #
  `----`  #
          ##
 _____    #
|  __ \\  #
| |$ \ || #
| |__/ || #
|_____//  #
 -----`   #
          ##
  _____   #
 |  ___|| #
 | ||__   #
 | ||__   #
 |_____|| #
 `-----`  #
          ##
  ______  #
 /_____// #
 `____ `  #
 /___//   #
 `__ `    #
 /_//     #
 `-`      ##
  _____   #
 /  ___|| #
| //$__   #
| \\_\ || #
 \____//  #
  `---`   #
          ##
 __   _   #
| || | || #
| '--' || #
| .--. || #
|_|| |_|| #
`-`  `-`  #
          ##
  ______  #
 /_   _// #
  -| ||-  #
  _| ||_  #
 /_____// #
 `-----`  #
          ##
  ______  #
 /_   _// #
   | ||   #
  _| ||   #
 /__//    #
 `--`     #
          ##
  _  __  #
 | |/ // #
 | ' //  #
 | . \\  #
 |_|\_\\ #
 `-` --` #
         ##
  __     #
 | ||    #
 | ||    #
 | ||__  #
 |____// #
 `----`  #
         ##
 _    _   #
| \  / || #
|  \/  || #
| .  . || #
|_|\/|_|| #
`-`  `-`  #
          ##
  _  _   #
 | \| || #
 |  ' || #
 | .  || #
 |_|\_|| #
 `-` -`  #
         ##
   ___    #
  / _ \\  #
 | /$\ || #
 | \_/ || #
  \___//  #
  `---`   #
          ##
          #
  ____    #
 |    \\  #
 | [] ||  #
 |  __//  #
 |_|`-`   #
 `-`      ##
          #
    ___   #
   /   || #
  | [] || #
   \__ || #
    -|_|| #
     `-`  ##
  ____    #
 |  _ \\  #
 | |_| || #
 | .  //  #
 |_|\_\\  #
 `-` --`  #
          ##
   _____  #
  / ___// #
  \___ \\ #
  /  $ // #
 /____//  #
`-----`   #
          ##
  ______  #
 /_   _// #
 `-| |,-  #
   | ||   #
   |_||   #
   `-`'   #
          ##
 _    _   #
| || | || #
| || | || #
| \\_/ || #
 \____//  #
  `---`   #
          ##
__    __  #
\ \\ / // #
 \ \/ //  #
  \  //   #
   \//    #
    `     #
          ##
 _    _   #
| |  | || #
| |/\| || #
|  /\  || #
|_// \_|| #
`-`   `-` #
          ##
 __   __  #
 \ \\/ // #
  \ $ //  #
  / . \\  #
 /_//\_\\ #
 `-`  --` #
          ##
 __   __  #
 \ \\/ // #
  \ ` //  #
   | ||   #
   |_||   #
   `-`'   #
          ##
  _____   #
 |__  //  #
   / //   #
  / //__  #
 /_____|| #
 `-----`  #
          ##
{#
 #
 #
 #
 #
 #
 ##
|#
 #
 #
 #
 #
 #
 ##
}#
 #
 #
 #
 #
 #
 ##
~#
 #
 #
 #
 #
 #
 ##
  []|_[]| #
  / _ \\  #
 / //\ \\ #
| $___$ ||#
|_||$ |_||#
`-`   `-` #
          ##
  []|_[]| #
  / _ \\  #
 | /$\ || #
 | \_/ || #
  \___//  #
   ---`   #
          ##
 []| []|  #
| ||$| || #
| ||$| || #
| \\_/ || #
 \____//  #
  `---`   #
          ##
  []|_[]| #
  / _ \\  #
 / //\ \\ #
| $___$ ||#
|_||$ |_||#
`-`   `-` #
          ##
  []|_[]| #
  / _ \\  #
 | /$\ || #
 | \_/ || #
  \___//  #
   ---`   #
          ##
 []| []|  #
| ||$| || #
| ||$| || #
| \\_/ || #
 \____//  #
  `---`   #
          ##
  ,--.    #
 | _$ \\  #
 |    //  #
 | |\ \\  #
 |$ ___\\ #
 |_|----` #
  -       ##
162  CENT SIGN
   _    #
  | ||  #
 / __// #
| (__`  #
 \   \\ #
  |_|`  #
  `-`  ##
215  MULTIPLICATION SIGN
      #  
      #
 \\// #
  \\  #
 //\\ #
      #
      ##PKpG[	oc�T�T�Text/Figlet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Figlet
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id$
 */

/**
 * Zend_Text_Figlet is a PHP implementation of FIGlet
 *
 * @category  Zend
 * @package   Zend_Text_Figlet
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Figlet
{
    /**
     * Smush2 layout modes
     */
    const SM_EQUAL     = 0x01;
    const SM_LOWLINE   = 0x02;
    const SM_HIERARCHY = 0x04;
    const SM_PAIR      = 0x08;
    const SM_BIGX      = 0x10;
    const SM_HARDBLANK = 0x20;
    const SM_KERN      = 0x40;
    const SM_SMUSH     = 0x80;

    /**
     * Smush mode override modes
     */
    const SMO_NO    = 0;
    const SMO_YES   = 1;
    const SMO_FORCE = 2;

    /**
     * Justifications
     */
    const JUSTIFICATION_LEFT   = 0;
    const JUSTIFICATION_CENTER = 1;
    const JUSTIFICATION_RIGHT  = 2;

    /**
     * Write directions
     */
    const DIRECTION_LEFT_TO_RIGHT = 0;
    const DIRECTION_RIGHT_TO_LEFT = 1;

    /**
     * Magic fontfile number
     */
    const FONTFILE_MAGIC_NUMBER = 'flf2';

    /**
     * Array containing all characters of the current font
     *
     * @var array
     */
    protected $_charList = array();

    /**
     * Indicates if a font was loaded yet
     *
     * @var boolean
     */
    protected $_fontLoaded = false;

    /**
     * Latin-1 codes for German letters, respectively:
     *
     * LATIN CAPITAL LETTER A WITH DIAERESIS = A-umlaut
     * LATIN CAPITAL LETTER O WITH DIAERESIS = O-umlaut
     * LATIN CAPITAL LETTER U WITH DIAERESIS = U-umlaut
     * LATIN SMALL LETTER A WITH DIAERESIS = a-umlaut
     * LATIN SMALL LETTER O WITH DIAERESIS = o-umlaut
     * LATIN SMALL LETTER U WITH DIAERESIS = u-umlaut
     * LATIN SMALL LETTER SHARP S = ess-zed
     *
     * @var array
     */
    protected $_germanChars = array(196, 214, 220, 228, 246, 252, 223);

    /**
     * Output width, defaults to 80.
     *
     * @var integer
     */
    protected $_outputWidth = 80;

    /**
     * Hard blank character
     *
     * @var string
     */
    protected $_hardBlank;

    /**
     * Height of the characters
     *
     * @var integer
     */
    protected $_charHeight;

    /**
     * Max length of any character
     *
     * @var integer
     */
    protected $_maxLength;

    /**
     * Smush mode
     *
     * @var integer
     */
    protected $_smushMode = 0;

    /**
     * Smush defined by the font
     *
     * @var integer
     */
    protected $_fontSmush = 0;

    /**
     * Smush defined by the user
     *
     * @var integer
     */
    protected $_userSmush = 0;

    /**
     * Wether to handle paragraphs || not
     *
     * @var boolean
     */
    protected $_handleParagraphs = false;

    /**
     * Justification for the text, according to $_outputWidth
     *
     * For using font default, this parameter should be null, else one of
     * the values of Zend_Text_Figlet::JUSTIFICATION_*
     *
     * @var integer
     */
    protected $_justification = null;

    /**
     * Direction of text-writing, namely right to left
     *
     * For using font default, this parameter should be null, else one of
     * the values of Zend_Text_Figlet::DIRECTION_*
     *
     * @var integer
     */
    protected $_rightToLeft = null;

    /**
     * Override font file smush layout
     *
     * @var integer
     */
    protected $_smushOverride = 0;

    /**
     * Options of the current font
     *
     * @var array
     */
    protected $_fontOptions = array();

    /**
     * Previous character width
     *
     * @var integer
     */
    protected $_previousCharWidth = 0;

    /**
     * Current character width
     *
     * @var integer
     */
    protected $_currentCharWidth = 0;

    /**
     * Current outline length
     *
     * @var integer
     */
    protected $_outlineLength = 0;

    /**
     * Maxmimum outline length
     *
     * @var integer
     */
    protected $_outlineLengthLimit = 0;

    /**
     * In character line
     *
     * @var string
     */
    protected $_inCharLine;

    /**
     * In character line length
     *
     * @var integer
     */
    protected $_inCharLineLength = 0;

    /**
     * Maximum in character line length
     *
     * @var integer
     */
    protected $_inCharLineLengthLimit = 0;

    /**
     * Current char
     *
     * @var array
     */
    protected $_currentChar = null;

    /**
     * Current output line
     *
     * @var array
     */
    protected $_outputLine;

    /**
     * Current output
     *
     * @var string
     */
    protected $_output;

    /**
     * Option keys to skip when calling setOptions()
     * 
     * @var array
     */
    protected $_skipOptions = array(
        'options',
        'config',
    );

    /**
     * Instantiate the FIGlet with a specific font. If no font is given, the
     * standard font is used. You can also supply multiple options via
     * the $options variable, which can either be an array or an instance of
     * Zend_Config.
     *
     * @param array|Zend_Config $options Options for the output
     */
    public function __construct($options = null)
    {
        // Set options
        if (is_array($options)) {
            $this->setOptions($options);
        } else if ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }

        // If no font was defined, load default font
        if (!$this->_fontLoaded) {
            $this->_loadFont(dirname(__FILE__) . '/Figlet/zend-framework.flf');
        }
    }

    /**
     * Set options from array
     *
     * @param  array $options Configuration for Zend_Text_Figlet
     * @return Zend_Text_Figlet
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            if (in_array(strtolower($key), $this->_skipOptions)) {
                continue;
            }

            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set options from config object
     *
     * @param  Zend_Config $config Configuration for Zend_Text_Figlet
     * @return Zend_Text_Figlet
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }

    /**
     * Set a font to use
     *
     * @param  string $font Path to the font
     * @return Zend_Text_Figlet
     */
    public function setFont($font)
    {
        $this->_loadFont($font);
        return $this;
    }

    /**
     * Set handling of paragraphs
     *
     * @param  boolean $handleParagraphs Wether to handle paragraphs or not
     * @return Zend_Text_Figlet
     */
    public function setHandleParagraphs($handleParagraphs)
    {
        $this->_handleParagraphs = (bool) $handleParagraphs;
        return $this;
    }

    /**
     * Set the justification. 0 stands for left aligned, 1 for centered and 2
     * for right aligned.
     *
     * @param  integer $justification Justification of the output text
     * @return Zend_Text_Figlet
     */
    public function setJustification($justification)
    {
        $this->_justification = min(3, max(0, (int) $justification));
        return $this;
    }

    /**
     * Set the output width
     *
     * @param  integer $outputWidth Output with which should be used for word
     *                              wrapping and justification
     * @return Zend_Text_Figlet
     */
    public function setOutputWidth($outputWidth)
    {
        $this->_outputWidth = max(1, (int) $outputWidth);
        return $this;
    }

    /**
     * Set right to left mode. For writing from left to right, use
     * Zend_Text_Figlet::DIRECTION_LEFT_TO_RIGHT. For writing from right to left,
     * use Zend_Text_Figlet::DIRECTION_RIGHT_TO_LEFT.
     *
     * @param  integer $rightToLeft Right-to-left mode
     * @return Zend_Text_Figlet
     */
    public function setRightToLeft($rightToLeft)
    {
        $this->_rightToLeft = min(1, max(0, (int) $rightToLeft));
        return $this;
    }

    /**
     * Set the smush mode.
     *
     * Use one of the constants of Zend_Text_Figlet::SM_*, you may combine them.
     *
     * @param  integer $smushMode Smush mode to use for generating text
     * @return Zend_Text_Figlet
     */
    public function setSmushMode($smushMode)
    {
        $smushMode = (int) $smushMode;

        if ($smushMode < -1) {
            $this->_smushOverride = self::SMO_NO;
        } else {
            if ($smushMode === 0) {
                $this->_userSmush = self::SM_KERN;
            } else if ($smushMode === -1) {
                $this->_userSmush = 0;
            } else {
                $this->_userSmush = (($smushMode & 63) | self::SM_SMUSH);
            }

            $this->_smushOverride = self::SMO_YES;
        }

        $this->_setUsedSmush();

        return $this;
    }

    /**
     * Render a FIGlet text
     *
     * @param  string $text     Text to convert to a figlet text
     * @param  string $encoding Encoding of the input string
     * @throws InvalidArgumentException When $text is not a string
     * @throws Zend_Text_Figlet_Exception    When $text it not properly encoded
     * @return string
     */
    public function render($text, $encoding = 'UTF-8')
    {
        if (!is_string($text)) {
            throw new InvalidArgumentException('$text must be a string');
        }

        if ($encoding !== 'UTF-8') {
            $text = iconv($encoding, 'UTF-8', $text);
        }

        $this->_output     = '';
        $this->_outputLine = array();

        $this->_clearLine();

        $this->_outlineLengthLimit    = ($this->_outputWidth - 1);
        $this->_inCharLineLengthLimit = ($this->_outputWidth * 4 + 100);

        $wordBreakMode  = 0;
        $lastCharWasEol = false;
        $textLength     = @iconv_strlen($text, 'UTF-8');

        if ($textLength === false) {
            require_once 'Zend/Text/Figlet/Exception.php';
            throw new Zend_Text_Figlet_Exception('$text is not encoded with ' . $encoding);
        }

        for ($charNum = 0; $charNum < $textLength; $charNum++) {
            // Handle paragraphs
            $char = iconv_substr($text, $charNum, 1, 'UTF-8');

            if ($char === "\n" && $this->_handleParagraphs && !$lastCharWasEol) {
                $nextChar = iconv_substr($text, ($charNum + 1), 1, 'UTF-8');
                if (!$nextChar) {
                    $nextChar = null;
                }

                $char = (ctype_space($nextChar)) ? "\n" : ' ';
            }

            $lastCharWasEol = (ctype_space($char) && $char !== "\t" && $char !== ' ');

            if (ctype_space($char)) {
                $char = ($char === "\t" || $char === ' ') ? ' ': "\n";
            }

            // Skip unprintable characters
            $ordChar = $this->_uniOrd($char);
            if (($ordChar > 0 && $ordChar < 32 && $char !== "\n") || $ordChar === 127) {
                continue;
            }

            // Build the character
            // Note: The following code is complex and thoroughly tested.
            // Be careful when modifying!
            do {
                $charNotAdded = false;

                if ($wordBreakMode === -1) {
                    if ($char === ' ') {
                        break;
                    } else if ($char === "\n") {
                        $wordBreakMode = 0;
                        break;
                    }

                    $wordBreakMode = 0;
                }

                if ($char === "\n") {
                    $this->_appendLine();
                    $wordBreakMode = false;
                } else if ($this->_addChar($char)) {
                    if ($char !== ' ') {
                        $wordBreakMode = ($wordBreakMode >= 2) ? 3: 1;
                    } else {
                        $wordBreakMode = ($wordBreakMode > 0) ? 2: 0;
                    }
                } else if ($this->_outlineLength === 0) {
                    for ($i = 0; $i < $this->_charHeight; $i++) {
                        if ($this->_rightToLeft === 1 && $this->_outputWidth > 1) {
                            $offset = (strlen($this->_currentChar[$i]) - $this->_outlineLengthLimit);
                            $this->_putString(substr($this->_currentChar[$i], $offset));
                        } else {
                            $this->_putString($this->_currentChar[$i]);
                        }
                    }

                    $wordBreakMode = -1;
                } else if ($char === ' ') {
                    if ($wordBreakMode === 2) {
                        $this->_splitLine();
                    } else {
                        $this->_appendLine();
                    }

                    $wordBreakMode = -1;
                } else {
                    if ($wordBreakMode >= 2) {
                        $this->_splitLine();
                    } else {
                        $this->_appendLine();
                    }

                    $wordBreakMode = ($wordBreakMode === 3) ? 1 : 0;
                    $charNotAdded  = true;
                }
            } while ($charNotAdded);
        }

        if ($this->_outlineLength !== 0) {
            $this->_appendLine();
        }

        return $this->_output;
    }

    /**
     * Puts the given string, substituting blanks for hardblanks. If outputWidth
     * is 1, puts the entire string; otherwise puts at most outputWidth - 1
     * characters. Puts a newline at the end of the string. The string is left-
     * justified, centered or right-justified (taking outputWidth as the screen
     * width) if justification is 0, 1 or 2 respectively.
     *
     * @param  string $string The string to add to the output
     * @return void
     */
    protected function _putString($string)
    {
        $length = strlen($string);

        if ($this->_outputWidth > 1) {
            if ($length > ($this->_outputWidth - 1)) {
                $length = ($this->_outputWidth - 1);
            }

            if ($this->_justification > 0) {
                for ($i = 1;
                     ((3 - $this->_justification) * $i + $length + $this->_justification - 2) < $this->_outputWidth;
                     $i++) {
                    $this->_output .= ' ';
                }
            }
        }

        $this->_output .= str_replace($this->_hardBlank, ' ', $string) . "\n";
    }

    /**
     * Appends the current line to the output
     *
     * @return void
     */
    protected function _appendLine()
    {
        for ($i = 0; $i < $this->_charHeight; $i++) {
            $this->_putString($this->_outputLine[$i]);
        }

        $this->_clearLine();
    }

    /**
     * Splits inCharLine at the last word break (bunch of consecutive blanks).
     * Makes a new line out of the first part and appends it using appendLine().
     * Makes a new line out of the second part and returns.
     *
     * @return void
     */
    protected function _splitLine()
    {
        $gotSpace = false;
        for ($i = ($this->_inCharLineLength - 1); $i >= 0; $i--) {
            if (!$gotSpace && $this->_inCharLine[$i] === ' ') {
                $gotSpace  = true;
                $lastSpace = $i;
            }

            if ($gotSpace && $this->_inCharLine[$i] !== ' ') {
                break;
            }
        }

        $firstLength = ($i + 1);
        $lastLength  = ($this->_inCharLineLength - $lastSpace - 1);

        $firstPart = '';
        for ($i = 0; $i < $firstLength; $i++) {
            $firstPart[$i] = $this->_inCharLine[$i];
        }

        $lastPart = '';
        for ($i = 0; $i < $lastLength; $i++) {
            $lastPart[$i] = $this->_inCharLine[($lastSpace + 1 + $i)];
        }

        $this->_clearLine();

        for ($i = 0; $i < $firstLength; $i++) {
            $this->_addChar($firstPart[$i]);
        }

        $this->_appendLine();

        for ($i = 0; $i < $lastLength; $i++) {
            $this->_addChar($lastPart[$i]);
        }
    }

    /**
     * Clears the current line
     *
     * @return void
     */
    protected function _clearLine()
    {
        for ($i = 0; $i < $this->_charHeight; $i++) {
            $this->_outputLine[$i] = '';
        }

        $this->_outlineLength    = 0;
        $this->_inCharLineLength = 0;
    }

    /**
     * Attempts to add the given character onto the end of the current line.
     * Returns true if this can be done, false otherwise.
     *
     * @param  string $char Character which to add to the output
     * @return boolean
     */
    protected function _addChar($char)
    {
        $this->_getLetter($char);

        if ($this->_currentChar === null) {
            return true;
        }

        $smushAmount = $this->_smushAmount();

        if (($this->_outlineLength + $this->_currentCharWidth - $smushAmount) > $this->_outlineLengthLimit
            || ($this->_inCharLineLength + 1) > $this->_inCharLineLengthLimit) {
            return false;
        }

        $tempLine = '';
        for ($row = 0; $row < $this->_charHeight; $row++) {
            if ($this->_rightToLeft === 1) {
                $tempLine = $this->_currentChar[$row];

                for ($k = 0; $k < $smushAmount; $k++) {
                    $position            = ($this->_currentCharWidth - $smushAmount + $k);
                    $tempLine[$position] = $this->_smushem($tempLine[$position], $this->_outputLine[$row][$k]);
                }

                $this->_outputLine[$row] = $tempLine . substr($this->_outputLine[$row], $smushAmount);
            } else {
                for ($k = 0; $k < $smushAmount; $k++) {
                    if (($this->_outlineLength - $smushAmount + $k) < 0) {
                        continue;
                    }

                    $position = ($this->_outlineLength - $smushAmount + $k);
                    if (isset($this->_outputLine[$row][$position])) {
                        $leftChar = $this->_outputLine[$row][$position];
                    } else {
                        $leftChar = null;
                    }

                    $this->_outputLine[$row][$position] = $this->_smushem($leftChar, $this->_currentChar[$row][$k]);
                }

                $this->_outputLine[$row] .= substr($this->_currentChar[$row], $smushAmount);
            }
        }

        $this->_outlineLength                          = strlen($this->_outputLine[0]);
        $this->_inCharLine[$this->_inCharLineLength++] = $char;

        return true;
    }

    /**
     * Gets the requested character and sets current and previous char width.
     *
     * @param  string $char The character from which to get the letter of
     * @return void
     */
    protected function _getLetter($char)
    {
        if (array_key_exists($this->_uniOrd($char), $this->_charList)) {
            $this->_currentChar       = $this->_charList[$this->_uniOrd($char)];
            $this->_previousCharWidth = $this->_currentCharWidth;
            $this->_currentCharWidth  = strlen($this->_currentChar[0]);
        } else {
            $this->_currentChar = null;
        }
    }

    /**
     * Returns the maximum amount that the current character can be smushed into
     * the current line.
     *
     * @return integer
     */
    protected function _smushAmount()
    {
        if (($this->_smushMode & (self::SM_SMUSH | self::SM_KERN)) === 0) {
            return 0;
        }

        $maxSmush = $this->_currentCharWidth;
        $amount   = $maxSmush;

        for ($row = 0; $row < $this->_charHeight; $row++) {
            if ($this->_rightToLeft === 1) {
                $charbd = strlen($this->_currentChar[$row]);
                while (true) {
                    if (!isset($this->_currentChar[$row][$charbd])) {
                        $leftChar = null;
                    } else {
                        $leftChar = $this->_currentChar[$row][$charbd];
                    }

                    if ($charbd > 0 && ($leftChar === null || $leftChar == ' ')) {
                        $charbd--;
                    } else {
                        break;
                    }
                }

                $linebd = 0;
                while (true) {
                    if (!isset($this->_outputLine[$row][$linebd])) {
                        $rightChar = null;
                    } else {
                        $rightChar = $this->_outputLine[$row][$linebd];
                    }

                    if ($rightChar === ' ') {
                        $linebd++;
                    } else {
                        break;
                    }
                }

                $amount = ($linebd + $this->_currentCharWidth - 1 - $charbd);
            } else {
                $linebd = strlen($this->_outputLine[$row]);
                while (true) {
                    if (!isset($this->_outputLine[$row][$linebd])) {
                        $leftChar = null;
                    } else {
                        $leftChar = $this->_outputLine[$row][$linebd];
                    }

                    if ($linebd > 0 && ($leftChar === null || $leftChar == ' ')) {
                        $linebd--;
                    } else {
                        break;
                    }
                }

                $charbd = 0;
                while (true) {
                    if (!isset($this->_currentChar[$row][$charbd])) {
                        $rightChar = null;
                    } else {
                        $rightChar = $this->_currentChar[$row][$charbd];
                    }

                    if ($rightChar === ' ') {
                        $charbd++;
                    } else {
                        break;
                    }
                }

                $amount = ($charbd + $this->_outlineLength - 1 - $linebd);
            }

            if (empty($leftChar) || $leftChar === ' ') {
                $amount++;
            } else if (!empty($rightChar)) {
                if ($this->_smushem($leftChar, $rightChar) !== null) {
                    $amount++;
                }
            }

            $maxSmush = min($amount, $maxSmush);
        }

        return $maxSmush;
    }

    /**
     * Given two characters, attempts to smush them into one, according to the
     * current smushmode. Returns smushed character or false if no smushing can
     * be done.
     *
     * Smushmode values are sum of following (all values smush blanks):
     *
     *  1: Smush equal chars (not hardblanks)
     *  2: Smush '_' with any char in hierarchy below
     *  4: hierarchy: "|", "/\", "[]", "{}", "()", "<>"
     *     Each class in hier. can be replaced by later class.
     *  8: [ + ] -> |, { + } -> |, ( + ) -> |
     * 16: / + \ -> X, > + < -> X (only in that order)
     * 32: hardblank + hardblank -> hardblank
     *
     * @param  string $leftChar  Left character to smush
     * @param  string $rightChar Right character to smush
     * @return string
     */
    protected function _smushem($leftChar, $rightChar)
    {
        if ($leftChar === ' ') {
            return $rightChar;
        }

        if ($rightChar === ' ') {
            return $leftChar;
        }

        if ($this->_previousCharWidth < 2 || $this->_currentCharWidth < 2) {
            // Disallows overlapping if the previous character or the current
            // character has a width of one or zero.
            return null;
        }

        if (($this->_smushMode & self::SM_SMUSH) === 0) {
            // Kerning
            return null;
        }

        if (($this->_smushMode & 63) === 0) {
            // This is smushing by universal overlapping
            if ($leftChar === ' ') {
                return $rightChar;
            } else if ($rightChar === ' ') {
                return $leftChar;
            } else if ($leftChar === $this->_hardBlank) {
                return $rightChar;
            } else if ($rightChar === $this->_hardBlank) {
                return $rightChar;
            } else if ($this->_rightToLeft === 1) {
                return $leftChar;
            } else {
                // Occurs in the absence of above exceptions
                return $rightChar;
            }
        }

        if (($this->_smushMode & self::SM_HARDBLANK) > 0) {
            if ($leftChar === $this->_hardBlank && $rightChar === $this->_hardBlank) {
                return $leftChar;
            }
        }

        if ($leftChar === $this->_hardBlank && $rightChar === $this->_hardBlank) {
            return null;
        }

        if (($this->_smushMode & self::SM_EQUAL) > 0) {
            if ($leftChar === $rightChar) {
                return $leftChar;
            }
        }

        if (($this->_smushMode & self::SM_LOWLINE) > 0) {
            if ($leftChar === '_' && strchr('|/\\[]{}()<>', $rightChar) !== false) {
                return $rightChar;
            } else if ($rightChar === '_' && strchr('|/\\[]{}()<>', $leftChar) !== false) {
                return $leftChar;
            }
        }

        if (($this->_smushMode & self::SM_HIERARCHY) > 0) {
            if ($leftChar === '|' && strchr('/\\[]{}()<>', $rightChar) !== false) {
                return $rightChar;
            } else if ($rightChar === '|' && strchr('/\\[]{}()<>', $leftChar) !== false) {
                return $leftChar;
            } else if (strchr('/\\', $leftChar) && strchr('[]{}()<>', $rightChar) !== false) {
                return $rightChar;
            } else if (strchr('/\\', $rightChar) && strchr('[]{}()<>', $leftChar) !== false) {
                return $leftChar;
            } else if (strchr('[]', $leftChar) && strchr('{}()<>', $rightChar) !== false) {
                return $rightChar;
            } else if (strchr('[]', $rightChar) && strchr('{}()<>', $leftChar) !== false) {
                return $leftChar;
            } else if (strchr('{}', $leftChar) && strchr('()<>', $rightChar) !== false) {
                return $rightChar;
            } else if (strchr('{}', $rightChar) && strchr('()<>', $leftChar) !== false) {
                return $leftChar;
            } else if (strchr('()', $leftChar) && strchr('<>', $rightChar) !== false) {
                return $rightChar;
            } else if (strchr('()', $rightChar) && strchr('<>', $leftChar) !== false) {
                return $leftChar;
            }
        }

        if (($this->_smushMode & self::SM_PAIR) > 0) {
            if ($leftChar === '[' && $rightChar === ']') {
                return '|';
            } else if ($rightChar === '[' && $leftChar === ']') {
                return '|';
            } else if ($leftChar === '{' && $rightChar === '}') {
                return '|';
            } else if ($rightChar === '{' && $leftChar === '}') {
                return '|';
            } else if ($leftChar === '(' && $rightChar === ')') {
                return '|';
            } else if ($rightChar === '(' && $leftChar === ')') {
                return '|';
            }
        }

        if (($this->_smushMode & self::SM_BIGX) > 0) {
            if ($leftChar === '/' && $rightChar === '\\') {
                return '|';
            } else if ($rightChar === '/' && $leftChar === '\\') {
                return 'Y';
            } else if ($leftChar === '>' && $rightChar === '<') {
                return 'X';
            }
        }

        return null;
    }

    /**
     * Load the specified font
     *
     * @param  string $fontFile Font file to load
     * @throws Zend_Text_Figlet_Exception When font file was not found
     * @throws Zend_Text_Figlet_Exception When GZIP library is required but not found
     * @throws Zend_Text_Figlet_Exception When font file is not readable
     * @return void
     */
    protected function _loadFont($fontFile)
    {
        // Check if the font file exists
        if (!file_exists($fontFile)) {
            require_once 'Zend/Text/Figlet/Exception.php';
            throw new Zend_Text_Figlet_Exception($fontFile . ': Font file not found');
        }

        // Check if gzip support is required
        if (substr($fontFile, -3) === '.gz') {
            if (!function_exists('gzcompress')) {
                require_once 'Zend/Text/Figlet/Exception.php';
                throw new Zend_Text_Figlet_Exception('GZIP library is required for '
                                                     . 'gzip compressed font files');
            }

            $fontFile   = 'compress.zlib://' . $fontFile;
            $compressed = true;
        } else {
            $compressed = false;
        }

        // Try to open the file
        $fp = fopen($fontFile, 'rb');
        if ($fp === false) {
            require_once 'Zend/Text/Figlet/Exception.php';
            throw new Zend_Text_Figlet_Exception($fontFile . ': Could not open file');
        }

        // If the file is not compressed, lock the stream
        if (!$compressed) {
            flock($fp, LOCK_SH);
        }

        // Get magic
        $magic = $this->_readMagic($fp);

        // Get the header
        $numsRead = sscanf(fgets($fp, 1000),
                           '%*c%c %d %*d %d %d %d %d %d',
                           $this->_hardBlank,
                           $this->_charHeight,
                           $this->_maxLength,
                           $smush,
                           $cmtLines,
                           $rightToLeft,
                           $this->_fontSmush);

        if ($magic !== self::FONTFILE_MAGIC_NUMBER || $numsRead < 5) {
            require_once 'Zend/Text/Figlet/Exception.php';
            throw new Zend_Text_Figlet_Exception($fontFile . ': Not a FIGlet 2 font file');
        }

        // Set default right to left
        if ($numsRead < 6) {
            $rightToLeft = 0;
        }

        // If no smush2, decode smush into smush2
        if ($numsRead < 7) {
            if ($smush === 2) {
                $this->_fontSmush = self::SM_KERN;
            } else if ($smush < 0) {
                $this->_fontSmush = 0;
            } else {
                $this->_fontSmush = (($smush & 31) | self::SM_SMUSH);
            }
        }

        // Correct char height && maxlength
        $this->_charHeight = max(1, $this->_charHeight);
        $this->_maxLength  = max(1, $this->_maxLength);

        // Give ourselves some extra room
        $this->_maxLength += 100;

        // See if we have to override smush settings
        $this->_setUsedSmush();

        // Get left to right value
        if ($this->_rightToLeft === null) {
            $this->_rightToLeft = $rightToLeft;
        }

        // Get justification value
        if ($this->_justification === null) {
            $this->_justification = (2 * $this->_rightToLeft);
        }

        // Skip all comment lines
        for ($line = 1; $line <= $cmtLines; $line++) {
            $this->_skipToEol($fp);
        }

        // Fetch all ASCII characters
        for ($asciiCode = 32; $asciiCode < 127; $asciiCode++) {
            $this->_charList[$asciiCode] = $this->_loadChar($fp);
        }

        // Fetch all german characters
        foreach ($this->_germanChars as $uniCode) {
            $char = $this->_loadChar($fp);

            if ($char === false) {
                fclose($fp);
                return;
            }

            if (trim(implode('', $char)) !== '') {
                $this->_charList[$uniCode] = $char;
            }
        }

        // At the end fetch all extended characters
        while (!feof($fp)) {
            // Get the Unicode
            list($uniCode) = explode(' ', fgets($fp, 2048));

            if (empty($uniCode)) {
                continue;
            }

            // Convert it if required
            if (substr($uniCode, 0, 2) === '0x') {
                $uniCode = hexdec(substr($uniCode, 2));
            } else if (substr($uniCode, 0, 1) === '0' and
                       $uniCode !== '0' or
                       substr($uniCode, 0, 2) === '-0') {
                $uniCode = octdec($uniCode);
            } else {
                $uniCode = (int) $uniCode;
            }

            // Now fetch the character
            $char = $this->_loadChar($fp);

            if ($char === false) {
                fclose($fp);
                return;
            }

            $this->_charList[$uniCode] = $char;
        }

        fclose($fp);

        $this->_fontLoaded = true;
    }

    /**
     * Set the used smush mode, according to smush override, user smsush and
     * font smush.
     *
     * @return void
     */
    protected function _setUsedSmush()
    {
        if ($this->_smushOverride === self::SMO_NO) {
            $this->_smushMode = $this->_fontSmush;
        } else if ($this->_smushOverride === self::SMO_YES) {
            $this->_smushMode = $this->_userSmush;
        } else if ($this->_smushOverride === self::SMO_FORCE) {
            $this->_smushMode = ($this->_fontSmush | $this->_userSmush);
        }
    }

    /**
     * Reads a four-character magic string from a stream
     *
     * @param  resource $fp File pointer to the font file
     * @return string
     */
    protected function _readMagic($fp)
    {
        $magic = '';

        for ($i = 0; $i < 4; $i++) {
            $magic .= fgetc($fp);
        }

        return $magic;
    }

    /**
     * Skip a stream to the end of line
     *
     * @param  resource $fp File pointer to the font file
     * @return void
     */
    protected function _skipToEol($fp)
    {
        $dummy = fgetc($fp);
        while ($dummy !== false && !feof($fp)) {
            if ($dummy === "\n") {
                return;
            }

            if ($dummy === "\r") {
                $dummy = fgetc($fp);

                if (!feof($fp) && $dummy !== "\n") {
                    fseek($fp, -1, SEEK_SET);
                }

                return;
            }

            $dummy = fgetc($fp);
        }
    }

    /**
     * Load a single character from the font file
     *
     * @param  resource $fp File pointer to the font file
     * @return array
     */
    protected function _loadChar($fp)
    {
        $char = array();

        for ($i = 0; $i < $this->_charHeight; $i++) {
            if (feof($fp)) {
                return false;
            }

            $line = rtrim(fgets($fp, 2048), "\r\n");

            if (preg_match('#(.)\\1?$#', $line, $result) === 1) {
                $line = str_replace($result[1], '', $line);
            }

            $char[] = $line;
        }

        return $char;
    }

    /**
     * Unicode compatible ord() method
     *
     * @param  string $c The char to get the value from
     * @return integer
     */
    protected function _uniOrd($c)
    {
        $h = ord($c[0]);

        if ($h <= 0x7F) {
            $ord = $h;
        } else if ($h < 0xC2) {
            $ord = 0;
        } else if ($h <= 0xDF) {
            $ord = (($h & 0x1F) << 6 | (ord($c[1]) & 0x3F));
        } else if ($h <= 0xEF) {
            $ord = (($h & 0x0F) << 12 | (ord($c[1]) & 0x3F) << 6 | (ord($c[2]) & 0x3F));
        } else if ($h <= 0xF4) {
            $ord = (($h & 0x0F) << 18 | (ord($c[1]) & 0x3F) << 12 |
                   (ord($c[2]) & 0x3F) << 6 | (ord($c[3]) & 0x3F));
        } else {
            $ord = 0;
        }

        return $ord;
    }
}
PKpG[_Ca�YYText/MultiByte.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id$
 */

/**
 * Zend_Text_MultiByte contains multibyte safe string methods
 *
 * @category  Zend
 * @package   Zend_Text
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_MultiByte
{
    /**
     * Word wrap
     *
     * @param  string  $string
     * @param  integer $width
     * @param  string  $break
     * @param  boolean $cut
     * @param  string  $charset
     * @return string
     */
    public static function wordWrap($string, $width = 75, $break = "\n", $cut = false, $charset = 'UTF-8')
    {
        if ($cut === false) {
            $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){' . $width . ',}\b#U';
        } else {
            $regexp = '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){' . $width . '}#';
        }

        $lines  = explode($break, $string);
        $return = array();

        foreach ($lines as $line) {
            $whileWhat = ceil(iconv_strlen($line, $charset) / $width);
            $i         = 1;
            $result    = '';

            while ($i < $whileWhat) {
                preg_match($regexp, $line, $matches);

                $result .= $matches[0] . $break;
                $line    = substr($string, strlen($matches[0]));

                $i++;
            }

            $return[] = $result . $line;
        }

        return implode($break, $return);
    }

    /**
     * String padding
     *
     * @param  string  $input
     * @param  integer $padLength
     * @param  string  $padString
     * @param  integer $padType
     * @param  string  $charset
     * @return string
     */
    public static function strPad($input, $padLength, $padString = ' ', $padType = STR_PAD_RIGHT, $charset = 'UTF-8')
    {
        $return          = '';
        $lengthOfPadding = $padLength - iconv_strlen($input, $charset);
        $padStringLength = iconv_strlen($padString, $charset);

        if ($padStringLength === 0 || $lengthOfPadding === 0) {
            $return = $input;
        } else {
            $repeatCount = floor($lengthOfPadding / $padStringLength);

            if ($padType === STR_PAD_BOTH) {
                $lastStringLeft  = '';
                $lastStringRight = '';
                $repeatCountLeft = $repeatCountRight = ($repeatCount - $repeatCount % 2) / 2;

                $lastStringLength       = $lengthOfPadding - 2 * $repeatCountLeft * $padStringLength;
                $lastStringLeftLength   = $lastStringRightLength = floor($lastStringLength / 2);
                $lastStringRightLength += $lastStringLength % 2;

                $lastStringLeft  = iconv_substr($padString, 0, $lastStringLeftLength, $charset);
                $lastStringRight = iconv_substr($padString, 0, $lastStringRightLength, $charset);

                $return = str_repeat($padString, $repeatCountLeft) . $lastStringLeft
                        . $input
                        . str_repeat($padString, $repeatCountRight) . $lastStringRight;
            } else {
                $lastString = iconv_substr($padString, 0, $lengthOfPadding % $padStringLength, $charset);

                if ($padType === STR_PAD_LEFT) {
                    $return = str_repeat($padString, $repeatCount) . $lastString . $input;
                } else {
                    $return = $input . str_repeat($padString, $repeatCount) . $lastString;
                }
            }
        }

        return $return;
    }
}
PKpG[r���e@e@Text/Table.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Table.php 12550 2008-11-11 15:26:47Z dasprid $
 */

/**
 * Zend_Text_Table enables developers to create tables out of characters
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table
{
    /**
     * Auto seperator settings
     */
    const AUTO_SEPARATE_NONE   = 0x0;
    const AUTO_SEPARATE_HEADER = 0x1;
    const AUTO_SEPARATE_FOOTER = 0x2;
    const AUTO_SEPARATE_ALL    = 0x4;
    
    /**
     * Decorator used for the table borders
     *
     * @var Zend_Text_Table_Decorator_Interface
     */
    protected $_decorator = null;

    /**
     * List of all column widths
     *
     * @var array
     */
    protected $_columnWidths = null;

    /**
     * Rows of the table
     *
     * @var array
     */
    protected $_rows = array();
    
    /**
     * Auto separation mode
     *
     * @var integer
     */
    protected $_autoSeparate = self::AUTO_SEPARATE_ALL;
    
    /**
     * Padding for columns
     *
     * @var integer
     */
    protected $_padding = 0;
    
    /**
     * Default column aligns for rows created by appendRow(array $data)
     *
     * @var array
     */
    protected $_defaultColumnAligns = array();

    /**
     * Plugin loader for decorators
     *
     * @var string
     */
    protected $_pluginLoader = null;
    
    /**
     * Charset which is used for input by default
     *
     * @var string
     */
    protected static $_inputCharset = 'utf-8';
    
    /**
     * Charset which is used internally
     *
     * @var string
     */
    protected static $_outputCharset = 'utf-8';
    
    /**
     * Option keys to skip when calling setOptions()
     * 
     * @var array
     */
    protected $_skipOptions = array(
        'options',
        'config',
        'defaultColumnAlign',
    );
        
    /**
     * Create a basic table object
     *
     * @param  array             $columnsWidths List of all column widths
     * @param  Zend_Config|array $options       Configuration options
     * @throws Zend_Text_Table_Exception When no columns widths were set
     */
    public function __construct($options = null)
    {       
        // Set options
        if (is_array($options)) {
            $this->setOptions($options);
        } else if ($options instanceof Zend_Config) {
            $this->setConfig($options);
        }

        // Check if column widths were set
        // @todo When column widths were not set, assume auto-sizing
        if ($this->_columnWidths === null) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('You must define the column widths');
        }
        
        // If no decorator was given, use default unicode decorator
        if ($this->_decorator === null) {
            if (self::getOutputCharset() === 'utf-8') {
                $this->setDecorator('unicode');
            } else {
                $this->setDecorator('ascii');
            }
        }
    }
    
    /**
     * Set options from array
     *
     * @param  array $options Configuration for Zend_Text_Table
     * @return Zend_Text_Table
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            if (in_array(strtolower($key), $this->_skipOptions)) {
                continue;
            }

            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        
        return $this;
    }

    /**
     * Set options from config object
     *
     * @param  Zend_Config $config Configuration for Zend_Text_Table
     * @return Zend_Text_Table
     */
    public function setConfig(Zend_Config $config)
    {
        return $this->setOptions($config->toArray());
    }
    
    /**
     * Set column widths
     *
     * @param  array $columnWidths Widths of all columns
     * @throws Zend_Text_Table_Exception When no columns were supplied
     * @throws Zend_Text_Table_Exception When a column has an invalid width
     * @return Zend_Text_Table
     */
    public function setColumnWidths(array $columnWidths)
    {
        if (count($columnWidths) === 0) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('You must supply at least one column');
        }
        
        foreach ($columnWidths as $columnNum => $columnWidth) {
            if (is_int($columnWidth) === false or $columnWidth < 1) {
                require_once 'Zend/Text/Table/Exception.php';
                throw new Zend_Text_Table_Exception('Column ' . $columnNum . ' has an invalid'
                                                    . ' column width');
            }
        }

        $this->_columnWidths = $columnWidths;
        
        return $this;
    }

    /**
     * Set auto separation mode
     *
     * @param  integer $autoSeparate Auto separation mode
     * @return Zend_Text_Table
     */
    public function setAutoSeparate($autoSeparate)
    {
        $this->_autoSeparate = (int) $autoSeparate;
        return $this;
    }
       
    /**
     * Set decorator
     *
     * @param  Zend_Text_Table_Decorator_Interface|string $decorator Decorator to use
     * @return Zend_Text_Table
     */
    public function setDecorator($decorator)
    {
        if ($decorator instanceof Zend_Text_Table_Decorator_Interface) {
            $this->_decorator = $decorator;
        } else {
            $classname        = $this->getPluginLoader()->load($decorator);
            $this->_decorator = new $classname;
        }
        
        return $this;
    }
    
    /**
     * Set the column padding
     *
     * @param  integer $padding The padding for the columns
     * @return Zend_Text_Table
     */
    public function setPadding($padding)
    {
        $this->_padding = max(0, (int) $padding);
        return $this;
    }
    
    /**
     * Get the plugin loader for decorators
     *
     * @return Zend_Loader_PluginLoader
     */
    public function getPluginLoader()
    {
        if ($this->_pluginLoader === null) {
            $prefix     = 'Zend_Text_Table_Decorator_';
            $pathPrefix = 'Zend/Text/Table/Decorator/';
    
            require_once 'Zend/Loader/PluginLoader.php';
            $this->_pluginLoader = new Zend_Loader_PluginLoader(array($prefix => $pathPrefix));
        }
        
        return $this->_pluginLoader;
    }
    
    /**
     * Set default column align for rows created by appendRow(array $data) 
     *
     * @param  integer $columnNum
     * @param  string  $align
     * @return Zend_Text_Table
     */
    public function setDefaultColumnAlign($columnNum, $align) 
    {
        $this->_defaultColumnAligns[$columnNum] = $align;
        
        return $this;
    }

    /**
     * Set the input charset for column contents
     *
     * @param string $charset
     */
    public static function setInputCharset($charset)
    {
        self::$_inputCharset = strtolower($charset);
    }
    
    /**
     * Get the input charset for column contents
     *
     * @param string $charset
     */
    public static function getInputCharset()
    {
        return self::$_inputCharset;
    }
    
    /**
     * Set the output charset for column contents
     *
     * @param string $charset
     */
    public static function setOutputCharset($charset)
    {
        self::$_outputCharset = strtolower($charset);
    }
    
    /**
     * Get the output charset for column contents
     *
     * @param string $charset
     */
    public static function getOutputCharset()
    {
        return self::$_outputCharset;
    }
    
    /**
     * Append a row to the table
     *
     * @param  array|Zend_Text_Table_Row $row The row to append to the table
     * @throws Zend_Text_Table_Exception When $row is neither an array nor Zend_Zext_Table_Row
     * @throws Zend_Text_Table_Exception When a row contains too many columns
     * @return Zend_Text_Table
     */
    public function appendRow($row)
    {
        if (!is_array($row) && !($row instanceof Zend_Text_Table_Row)) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('$row must be an array or instance of Zend_Text_Table_Row');
        }
        
        if (is_array($row)) {
            if (count($row) > count($this->_columnWidths)) {
                require_once 'Zend/Text/Table/Exception.php';
                throw new Zend_Text_Table_Exception('Row contains too many columns');
            }
                        
            require_once 'Zend/Text/Table/Row.php';
            
            $data   = $row;
            $row    = new Zend_Text_Table_Row();
            $colNum = 0;
            foreach ($data as $columnData) {
                if (isset($this->_defaultColumnAligns[$colNum])) {
                    $align = $this->_defaultColumnAligns[$colNum];
                } else {
                    $align = null;
                }
                
                $row->appendColumn(new Zend_Text_Table_Column($columnData, $align));
                $colNum++;    
            }
        }
        
        $this->_rows[] = $row;
        
        return $this;
    }

    /**
     * Render the table
     *
     * @throws Zend_Text_Table_Exception When no rows were added to the table
     * @return string
     */
    public function render()
    {
        // There should be at least one row
        if (count($this->_rows) === 0) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('No rows were added to the table yet');
        }

        // Initiate the result variable
        $result = '';

        // Count total columns
        $totalNumColumns = count($this->_columnWidths);

        // Now render all rows, starting from the first one
        $numRows = count($this->_rows);
        foreach ($this->_rows as $rowNum => $row) {
            // Get all column widths
            if (isset($columnWidths) === true) {
                $lastColumnWidths = $columnWidths;
            }

            $renderedRow  = $row->render($this->_columnWidths, $this->_decorator, $this->_padding);
            $columnWidths = $row->getColumnWidths();
            $numColumns   = count($columnWidths);

            // Check what we have to draw
            if ($rowNum === 0) {
                // If this is the first row, draw the table top
                $result .= $this->_decorator->getTopLeft();

                foreach ($columnWidths as $columnNum => $columnWidth) {
                    $result .= str_repeat($this->_decorator->getHorizontal(),
                                          $columnWidth);

                    if (($columnNum + 1) === $numColumns) {
                        $result .= $this->_decorator->getTopRight();
                    } else {
                        $result .= $this->_decorator->getHorizontalDown();
                    }
                }

                $result .= "\n";
            } else {
                // Else check if we have to draw the row separator
                if ($this->_autoSeparate & self::AUTO_SEPARATE_ALL) {
                    $drawSeparator = true;
                } else if ($rowNum === 1 && $this->_autoSeparate & self::AUTO_SEPARATE_HEADER) {
                    $drawSeparator = true;
                } else if ($rowNum === ($numRows - 1) && $this->_autoSeparate & self::AUTO_SEPARATE_FOOTER) {
                    $drawSeparator = true;
                } else {
                    $drawSeparator = false;
                }
                
                if ($drawSeparator) {             
                    $result .= $this->_decorator->getVerticalRight();
    
                    $currentUpperColumn = 0;
                    $currentLowerColumn = 0;
                    $currentUpperWidth  = 0;
                    $currentLowerWidth  = 0;
    
                    // Loop through all column widths
                    foreach ($this->_columnWidths as $columnNum => $columnWidth) {
                        // Add the horizontal line
                        $result .= str_repeat($this->_decorator->getHorizontal(),
                                              $columnWidth);
    
                        // If this is the last line, break out
                        if (($columnNum + 1) === $totalNumColumns) {
                            break;
                        }
    
                        // Else check, which connector style has to be used
                        $connector          = 0x0;
                        $currentUpperWidth += $columnWidth;
                        $currentLowerWidth += $columnWidth;
    
                        if ($lastColumnWidths[$currentUpperColumn] === $currentUpperWidth) {
                            $connector          |= 0x1;
                            $currentUpperColumn += 1;
                            $currentUpperWidth   = 0;
                        } else {
                            $currentUpperWidth += 1;
                        }
    
                        if ($columnWidths[$currentLowerColumn] === $currentLowerWidth) {
                            $connector          |= 0x2;
                            $currentLowerColumn += 1;
                            $currentLowerWidth   = 0;
                        } else {
                            $currentLowerWidth += 1;
                        }
    
                        switch ($connector) {
                            case 0x0:
                                $result .= $this->_decorator->getHorizontal();
                                break;
    
                            case 0x1:
                                $result .= $this->_decorator->getHorizontalUp();
                                break;
    
                            case 0x2:
                                $result .= $this->_decorator->getHorizontalDown();
                                break;
    
                            case 0x3:
                                $result .= $this->_decorator->getCross();
                                break;
    
                            default:
                                // This can never happen, but the CS tells I have to have it ...
                                break;
                        }
                    }
    
                    $result .= $this->_decorator->getVerticalLeft() . "\n";
                }
            }

            // Add the rendered row to the result
            $result .= $renderedRow;

            // If this is the last row, draw the table bottom
            if (($rowNum + 1) === $numRows) {
                $result .= $this->_decorator->getBottomLeft();

                foreach ($columnWidths as $columnNum => $columnWidth) {
                    $result .= str_repeat($this->_decorator->getHorizontal(),
                                          $columnWidth);

                    if (($columnNum + 1) === $numColumns) {
                        $result .= $this->_decorator->getBottomRight();
                    } else {
                        $result .= $this->_decorator->getHorizontalUp();
                    }
                }

                $result .= "\n";
            }
        }

        return $result;
    }

    /**
     * Magic method which returns the rendered table
     *
     * @return string
     */
    public function __toString()
    {
        try {
            return $this->render();
        } catch (Exception $e) {
            trigger_error($e->getMessage(), E_USER_ERROR);
        }

    }
}
PKpG[)����Text/Table/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Exception.php 12529 2008-11-10 21:05:43Z dasprid $
 */

/**
 * @see Zend_Text_Exception
 */
require_once 'Zend/Text/Exception.php';

/**
 * Exception class for Zend_Text_Table
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @uses      Zend_Text_Exception
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table_Exception extends Zend_Text_Exception
{
}
PKpG[��/VVText/Table/Row.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Row.php 12529 2008-11-10 21:05:43Z dasprid $
 */

/**
 * Row class for Zend_Text_Table
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table_Row
{
    /**
     * List of all columns
     *
     * @var array
     */
    protected $_columns = array();

    /**
     * Temporary stored column widths
     *
     * @var array
     */
    protected $_columnWidths = null;

    /**
     * Create a new column and append it to the row
     *
     * @param  string $content
     * @param  array  $options 
     * @return Zend_Text_Table_Row
     */
    public function createColumn($content, array $options = null)
    {
        $align    = null;
        $colSpan  = null;
        $encoding = null;
        
        if ($options !== null) {
            extract($options, EXTR_IF_EXISTS);
        }
               
        require_once 'Zend/Text/Table/Column.php';
        
        $column = new Zend_Text_Table_Column($content, $align, $colSpan, $encoding);
        
        $this->appendColumn($column);
        
        return $this;
    }
    
    /**
     * Append a column to the row
     *
     * @param  Zend_Text_Table_Column $column The column to append to the row
     * @return Zend_Text_Table_Row
     */
    public function appendColumn(Zend_Text_Table_Column $column)
    {
        $this->_columns[] = $column;
        
        return $this;
    }
    
    /**
     * Get a column by it's index
     * 
     * Returns null, when the index is out of range
     *
     * @param  integer $index
     * @return Zend_Text_Table_Column|null
     */
    public function getColumn($index)
    {
        if (!isset($this->_columns[$index])) {
            return null;
        }
        
        return $this->_columns[$index];
    }
    
    /**
     * Get all columns of the row
     *
     * @return array
     */
    public function getColumns()
    {
        return $this->_columns;
    }

    /**
     * Get the widths of all columns, which were rendered last
     *
     * @throws Zend_Text_Table_Exception When no columns were rendered yet
     * @return integer
     */
    public function getColumnWidths()
    {
        if ($this->_columnWidths === null) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('No columns were rendered yet');
        }

        return $this->_columnWidths;
    }

    /**
     * Render the row
     *
     * @param  array                               $columnWidths Width of all columns
     * @param  Zend_Text_Table_Decorator_Interface $decorator    Decorator for the row borders
     * @param  integer                             $padding      Padding for the columns
     * @throws Zend_Text_Table_Exception When there are too many columns 
     * @return string
     */
    public function render(array $columnWidths,
                           Zend_Text_Table_Decorator_Interface $decorator,
                           $padding = 0)
    {
        // Prepare an array to store all column widths
        $this->_columnWidths = array();

        // If there is no single column, create a column which spans over the
        // entire row
        if (count($this->_columns) === 0) {
            require_once 'Zend/Text/Table/Column.php';
            $this->appendColumn(new Zend_Text_Table_Column(null, null, count($columnWidths)));
        }
        
        // First we have to render all columns, to get the maximum height
        $renderedColumns = array();
        $maxHeight       = 0;
        $colNum          = 0;
        foreach ($this->_columns as $column) {
            // Get the colspan of the column
            $colSpan = $column->getColSpan();

            // Verify if there are enough column widths defined
            if (($colNum + $colSpan) > count($columnWidths)) {
                require_once 'Zend/Text/Table/Exception.php';
                throw new Zend_Text_Table_Exception('Too many columns');
            }

            // Calculate the column width
            $columnWidth = ($colSpan - 1 + array_sum(array_slice($columnWidths,
                                                                 $colNum,
                                                                 $colSpan)));

            // Render the column and split it's lines into an array
            $result = explode("\n", $column->render($columnWidth, $padding));

            // Store the width of the rendered column
            $this->_columnWidths[] = $columnWidth;

            // Store the rendered column and calculate the new max height
            $renderedColumns[] = $result;
            $maxHeight         = max($maxHeight, count($result));

            // Set up the internal column number
            $colNum += $colSpan;
        }

        // If the row doesnt contain enough columns to fill the entire row, fill
        // it with an empty column
        if ($colNum < count($columnWidths)) {
            $remainingWidth = (count($columnWidths) - $colNum - 1) +
                               array_sum(array_slice($columnWidths,
                                                     $colNum));
            $renderedColumns[] = array(str_repeat(' ', $remainingWidth));

            $this->_columnWidths[] = $remainingWidth;
        }

        // Add each single column line to the result
        $result = '';
        for ($line = 0; $line < $maxHeight; $line++) {
            $result .= $decorator->getVertical();

            foreach ($renderedColumns as $renderedColumn) {
                if (isset($renderedColumn[$line]) === true) {
                    $result .= $renderedColumn[$line];
                } else {
                    $result .= str_repeat(' ', strlen($renderedColumn[0]));
                }

                $result .= $decorator->getVertical();
            }

            $result .= "\n";
        }

        return $result;
    }
}
PKpG[�7��Text/Table/Decorator/Ascii.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Ascii.php 12529 2008-11-10 21:05:43Z dasprid $
 */

/**
 * @see Zend_Text_Table_Decorator_Interface
 */
require_once 'Zend/Text/Table/Decorator/Interface.php';

/**
 * ASCII Decorator for Zend_Text_Table
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @uses      Zend_Text_Table_Decorator_Interface
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table_Decorator_Ascii implements Zend_Text_Table_Decorator_Interface
{
    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getTopLeft()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getTopRight()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getBottomLeft()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getBottomRight()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVertical()
    {
        return '|';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontal()
    {
        return '-';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getCross()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVerticalRight()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVerticalLeft()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontalDown()
    {
        return '+';
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontalUp()
    {
        return '+';
    }
}
PKpG[�y��

"Text/Table/Decorator/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Interface.php 12529 2008-11-10 21:05:43Z dasprid $
 */

/**
 * Interface for Zend_Text_Table decorators
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Text_Table_Decorator_Interface
{
    /**
     * Get a single character for the top left corner
     *
     * @return string
     */
    public function getTopLeft();

    /**
     * Get a single character for the top right corner
     *
     * @return string
     */
    public function getTopRight();

    /**
     * Get a single character for the bottom left corner
     *
     * @return string
     */
    public function getBottomLeft();

    /**
     * Get a single character for the bottom right corner
     *
     * @return string
     */
    public function getBottomRight();

    /**
     * Get a single character for a vertical line
     *
     * @return string
     */
    public function getVertical();

    /**
     * Get a single character for a horizontal line
     *
     * @return string
     */
    public function getHorizontal();

    /**
     * Get a single character for a crossing line
     *
     * @return string
     */
    public function getCross();

    /**
     * Get a single character for a vertical divider right
     *
     * @return string
     */
    public function getVerticalRight();

    /**
     * Get a single character for a vertical divider left
     *
     * @return string
     */
    public function getVerticalLeft();

    /**
     * Get a single character for a horizontal divider down
     *
     * @return string
     */
    public function getHorizontalDown();

    /**
     * Get a single character for a horizontal divider up
     *
     * @return string
     */
    public function getHorizontalUp();
}
PKpG[rY�__ Text/Table/Decorator/Unicode.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Unicode.php 12529 2008-11-10 21:05:43Z dasprid $
 */

/**
 * @see Zend_Text_Table_Decorator_Interface
 */
require_once 'Zend/Text/Table/Decorator/Interface.php';

/**
 * Unicode Decorator for Zend_Text_Table
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @uses      Zend_Text_Table_Decorator_Interface
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table_Decorator_Unicode implements Zend_Text_Table_Decorator_Interface
{
    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getTopLeft()
    {
        return $this->_uniChar(0x250C);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getTopRight()
    {
        return $this->_uniChar(0x2510);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getBottomLeft()
    {
        return $this->_uniChar(0x2514);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getBottomRight()
    {
        return $this->_uniChar(0x2518);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVertical()
    {
        return $this->_uniChar(0x2502);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontal()
    {
        return $this->_uniChar(0x2500);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getCross()
    {
        return $this->_uniChar(0x253C);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVerticalRight()
    {
        return $this->_uniChar(0x251C);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getVerticalLeft()
    {
        return $this->_uniChar(0x2524);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontalDown()
    {
        return $this->_uniChar(0x252C);
    }

    /**
     * Defined by Zend_Text_Table_Decorator_Interface
     *
     * @return string
     */
    public function getHorizontalUp()
    {
        return $this->_uniChar(0x2534);
    }

    /**
     * Convert am unicode character code to a character
     *
     * @param  integer $code
     * @return string|false
     */
    protected function _uniChar($code)
    {
        if ($code <= 0x7F) {
            $char = chr($code);
        } else if ($code <= 0x7FF) {
            $char = chr(0xC0 | $code >> 6)
                  . chr(0x80 | $code & 0x3F);
        } else if ($code <= 0xFFFF) {
            $char =  chr(0xE0 | $code >> 12)
                  . chr(0x80 | $code >> 6 & 0x3F)
                  . chr(0x80 | $code & 0x3F);
        } else if ($code <= 0x10FFFF) {
            $char =  chr(0xF0 | $code >> 18)
                  . chr(0x80 | $code >> 12 & 0x3F)
                  . chr(0x80 | $code >> 6 & 0x3F)
                  . chr(0x80 | $code & 0x3F);
        } else {
            return false;
        }

        return $char;
    }
}
PKpG[��ÎText/Table/Column.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Column.php 13557 2009-01-08 18:21:07Z dasprid $
 */

/**
 * @see Zend_Text_Table
 */
require_once 'Zend/Text/Table.php';

/**
 * @see Zend_Text_MultiByte
 */
require_once 'Zend/Text/MultiByte.php';

/**
 * Column class for Zend_Text_Table_Row
 *
 * @category  Zend
 * @package   Zend_Text_Table
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Table_Column
{
    /**
     * Aligns for columns
     */
    const ALIGN_LEFT   = 'left';
    const ALIGN_CENTER = 'center';
    const ALIGN_RIGHT  = 'right';

    /**
     * Content of the column
     *
     * @var string
     */
    protected $_content = '';

    /**
     * Align of the column
     *
     * @var string
     */
    protected $_align = self::ALIGN_LEFT;

    /**
     * Colspan of the column
     *
     * @var integer
     */
    protected $_colSpan = 1;

    /**
     * Allowed align parameters
     *
     * @var array
     */
    protected $_allowedAligns = array(self::ALIGN_LEFT, self::ALIGN_CENTER, self::ALIGN_RIGHT);

    /**
     * Create a column for a Zend_Text_Table_Row object.
     *
     * @param string  $content  The content of the column
     * @param string  $align    The align of the content
     * @param integer $colSpan  The colspan of the column
     * @param string  $charset  The encoding of the content
     */
    public function __construct($content = null, $align = null, $colSpan = null, $charset = null)
    {
        if ($content !== null) {
            $this->setContent($content, $charset);
        }

        if ($align !== null) {
            $this->setAlign($align);
        }

        if ($colSpan !== null) {
            $this->setColSpan($colSpan);
        }
    }

    /**
     * Set the content.
     *
     * If $charset is not defined, it is assumed that $content is encoded in
     * the charset defined via Zend_Text_Table::setInputCharset() (defaults
     * to utf-8).
     *
     * @param  string $content  Content of the column
     * @param  string $charset  The charset of the content
     * @throws Zend_Text_Table_Exception When $content is not a string
     * @return Zend_Text_Table_Column
     */
    public function setContent($content, $charset = null)
    {
        if (is_string($content) === false) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('$content must be a string');
        }

        if ($charset === null) {
            $inputCharset = Zend_Text_Table::getInputCharset();
        } else {
            $inputCharset = strtolower($charset);
        }

        $outputCharset = Zend_Text_Table::getOutputCharset();

        if ($inputCharset !== $outputCharset) {
            if (PHP_OS !== 'AIX') {
                // AIX does not understand these character sets
                $content = iconv($inputCharset, $outputCharset, $content);
            }

        }

        $this->_content = $content;

        return $this;
    }

    /**
     * Set the align
     *
     * @param  string $align Align of the column
     * @throws Zend_Text_Table_Exception When supplied align is invalid
     * @return Zend_Text_Table_Column
     */
    public function setAlign($align)
    {
        if (in_array($align, $this->_allowedAligns) === false) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('Invalid align supplied');
        }

        $this->_align = $align;

        return $this;
    }

    /**
     * Set the colspan
     *
     * @param  int $colSpan
     * @throws Zend_Text_Table_Exception When $colSpan is smaller than 1
     * @return Zend_Text_Table_Column
     */
    public function setColSpan($colSpan)
    {
        if (is_int($colSpan) === false or $colSpan < 1) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('$colSpan must be an integer and greater than 0');
        }

        $this->_colSpan = $colSpan;

        return $this;
    }

    /**
     * Get the colspan
     *
     * @return integer
     */
    public function getColSpan()
    {
        return $this->_colSpan;
    }

    /**
     * Render the column width the given column width
     *
     * @param  integer $columnWidth The width of the column
     * @param  integer $padding     The padding for the column
     * @throws Zend_Text_Table_Exception When $columnWidth is lower than 1
     * @throws Zend_Text_Table_Exception When padding is greater than columnWidth
     * @return string
     */
    public function render($columnWidth, $padding = 0)
    {
        if (is_int($columnWidth) === false or $columnWidth < 1) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('$columnWidth must be an integer and greater than 0');
        }

        $columnWidth -= ($padding * 2);

        if ($columnWidth < 1) {
            require_once 'Zend/Text/Table/Exception.php';
            throw new Zend_Text_Table_Exception('Padding (' . $padding . ') is greater than column width');
        }

        switch ($this->_align) {
            case self::ALIGN_LEFT:
                $padMode = STR_PAD_RIGHT;
                break;

            case self::ALIGN_CENTER:
                $padMode = STR_PAD_BOTH;
                break;

            case self::ALIGN_RIGHT:
                $padMode = STR_PAD_LEFT;
                break;

            default:
                // This can never happen, but the CS tells I have to have it ...
                break;
        }

        $outputCharset = Zend_Text_Table::getOutputCharset();
        $lines         = explode("\n", Zend_Text_MultiByte::wordWrap($this->_content, $columnWidth, "\n", true, $outputCharset));
        $paddedLines   = array();

        foreach ($lines AS $line) {
            $paddedLines[] = str_repeat(' ', $padding)
                           . Zend_Text_MultiByte::strPad($line, $columnWidth, ' ', $padMode, $outputCharset)
                           . str_repeat(' ', $padding);
        }

        $result = implode("\n", $paddedLines);

        return $result;
    }
}
PKpG[���??Text/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Text
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id$
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_Text
 *
 * @category  Zend
 * @package   Zend_Text
 * @uses      Zend_Exception
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Text_Exception extends Zend_Exception
{
}
PKpG[B�g�nnDojo/View/Exception.phpnu&1i�<?php
require_once 'Zend/Dojo/Exception.php';

class Zend_Dojo_View_Exception extends Zend_Dojo_Exception
{
}
PKpG[������ Dojo/View/Helper/ContentPane.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ContentPane.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo ContentPane dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_ContentPane extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.ContentPane';

    /**
     * Module being used
     * @var string
     */
    protected $_module = 'dijit.layout.ContentPane';

    /**
     * dijit.layout.ContentPane
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function contentPane($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[˚#Dojo/View/Helper/DijitContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DijitContainer.php 11744 2008-10-08 18:06:15Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dijit layout container base class
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
abstract class Zend_Dojo_View_Helper_DijitContainer extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Capture locks
     * @var array
     */
    protected $_captureLock = array();

    /**
     * Metadata information to use with captured content
     * @var array
     */
    protected $_captureInfo = array();

    /**
     * Begin capturing content for layout container
     * 
     * @param  string $id 
     * @param  array $params 
     * @param  array $attribs 
     * @return void
     */
    public function captureStart($id, array $params = array(), array $attribs = array())
    {
        if (array_key_exists($id, $this->_captureLock)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception(sprintf('Lock already exists for id "%s"', $id));
        }

        $this->_captureLock[$id] = true;
        $this->_captureInfo[$id] = array(
            'params'  => $params,
            'attribs' => $attribs,
        );

        ob_start();
        return;
    }

    /**
     * Finish capturing content for layout container
     * 
     * @param  string $id 
     * @return string
     */
    public function captureEnd($id)
    {
        if (!array_key_exists($id, $this->_captureLock)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception(sprintf('No capture lock exists for id "%s"; nothing to capture', $id));
        }

        $content = ob_get_clean();
        extract($this->_captureInfo[$id]);
        unset($this->_captureLock[$id], $this->_captureInfo[$id]);
        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[���'Dojo/View/Helper/AccordionContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AccordionContainer.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo AccordionContainer dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_AccordionContainer extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.AccordionContainer';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.layout.AccordionContainer';

    /**
     * dijit.layout.AccordionContainer
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function accordionContainer($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG["={S!S!Dojo/View/Helper/Slider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Slider.php 13658 2009-01-15 23:37:30Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Abstract class for Dojo Slider dijits
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
abstract class Zend_Dojo_View_Helper_Slider extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.Slider';

    /**
     * Required slider parameters
     * @var array
     */
    protected $_requiredParams = array('minimum', 'maximum', 'discreteValues');

    /**
     * Slider type -- vertical or horizontal
     * @var string
     */
    protected $_sliderType;

    /**
     * dijit.form.Slider
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function prepareSlider($id, $value = null, array $params = array(), array $attribs = array())
    {
        $this->_sliderType = strtolower($this->_sliderType);

        // Prepare two items: a hidden element to store the value, and the slider
        $hidden = $this->_renderHiddenElement($id, $value);
        $hidden = preg_replace('/(name=")([^"]*)"/', 'id="$2" $1$2"', $hidden);

        foreach ($this->_requiredParams as $param) {
            if (!array_key_exists($param, $params)) {
                require_once 'Zend/Dojo/View/Exception.php';
                throw new Zend_Dojo_View_Exception('prepareSlider() requires minimally the "minimum", "maximum", and "discreteValues" parameters');
            }
        }

        $content = '';
        $params['value'] = $value;

        if (!array_key_exists('onChange', $attribs)) {
            $attribs['onChange'] = "dojo.byId('" . $id . "').value = arguments[0];";
        }

        $id  = str_replace('][', '-', $id);
        $id  = str_replace(array('[', ']'), '-', $id);
        $id  = rtrim($id, '-');
        $id .= '-slider';

        switch ($this->_sliderType) {
            case 'horizontal':
                if (array_key_exists('topDecoration', $params)) {
                    $content .= $this->_prepareDecoration('topDecoration', $id, $params['topDecoration']);
                    unset($params['topDecoration']);
                }

                if (array_key_exists('bottomDecoration', $params)) {
                    $content .= $this->_prepareDecoration('bottomDecoration', $id, $params['bottomDecoration']);
                    unset($params['bottomDecoration']);
                }

                if (array_key_exists('leftDecoration', $params)) {
                    unset($params['leftDecoration']);
                }

                if (array_key_exists('rightDecoration', $params)) {
                    unset($params['rightDecoration']);
                }
                break;
            case 'vertical':
                if (array_key_exists('leftDecoration', $params)) {
                    $content .= $this->_prepareDecoration('leftDecoration', $id, $params['leftDecoration']);
                    unset($params['leftDecoration']);
                }

                if (array_key_exists('rightDecoration', $params)) {
                    $content .= $this->_prepareDecoration('rightDecoration', $id, $params['rightDecoration']);
                    unset($params['rightDecoration']);
                }

                if (array_key_exists('topDecoration', $params)) {
                    unset($params['topDecoration']);
                }

                if (array_key_exists('bottomDecoration', $params)) {
                    unset($params['bottomDecoration']);
                }
                break;
            default:
                require_once 'Zend/Dojo/View/Exception.php';
                throw new Zend_Dojo_View_Exception('Invalid slider type; slider must be horizontal or vertical');
        }

        return $hidden . $this->_createLayoutContainer($id, $content, $params, $attribs);
    }

    /**
     * Prepare slider decoration
     * 
     * @param  string $position 
     * @param  string $id 
     * @param  array $decInfo 
     * @return string
     */
    protected function _prepareDecoration($position, $id, $decInfo)
    {
        if (!in_array($position, array('topDecoration', 'bottomDecoration', 'leftDecoration', 'rightDecoration'))) {
            return '';
        }

        if (!is_array($decInfo) 
            || !array_key_exists('labels', $decInfo)
            || !is_array($decInfo['labels'])
        ) {
            return '';
        }

        $id .= '-' . $position;

        if (!array_key_exists('dijit', $decInfo)) {
            $dijit = 'dijit.form.' . ucfirst($this->_sliderType) . 'Rule';
        } else {
            $dijit = $decInfo['dijit'];
            if ('dijit.form.' != substr($dijit, 0, 10)) {
                $dijit = 'dijit.form.' . $dijit;
            }
        }

        $params  = array();
        $attribs = array();
        $labels  = $decInfo['labels'];
        if (array_key_exists('params', $decInfo)) {
            $params = $decInfo['params'];
        }
        if (array_key_exists('attribs', $decInfo)) {
            $attribs = $decInfo['attribs'];
        }

        $containerParams = null;
        if (array_key_exists('container', $params)) {
            $containerParams = $params['container'];
            unset($params['container']);
        }

        if (array_key_exists('labels', $params)) {
            $labelsParams = $params['labels'];
            unset($params['labels']);
        } else {
            $labelsParams = $params;
        }

        if (null === $containerParams) {
            $containerParams = $params;
        }

        $containerAttribs = null;
        if (array_key_exists('container', $attribs)) {
            $containerAttribs = $attribs['container'];
            unset($attribs['container']);
        }

        if (array_key_exists('labels', $attribs)) {
            $labelsAttribs = $attribs['labels'];
            unset($attribs['labels']);
        } else {
            $labelsAttribs = $attribs;
        }

        if (null === $containerAttribs) {
            $containerAttribs = $attribs;
        }

        $containerParams['container'] = $position;
        $labelsParams['container']    = $position;

        $labelList = $this->_prepareLabelsList($id, $labelsParams, $labelsAttribs, $labels);

        $dijit = 'dijit.form.' . ucfirst($this->_sliderType) . 'Rule';
        $containerAttribs['id'] = $id;
        $containerAttribs = $this->_prepareDijit($containerAttribs, $containerParams, 'layout', $dijit);
        $containerHtml = '<div' . $this->_htmlAttribs($containerAttribs) . "></div>\n";

        switch ($position) {
            case 'topDecoration':
            case 'leftDecoration':
                return $labelList . $containerHtml;
            case 'bottomDecoration':
            case 'rightDecoration':
                return $containerHtml . $labelList;
        }
    }

    /**
     * Prepare slider label list
     * 
     * @param  string $id 
     * @param  array $params 
     * @param  array $attribs 
     * @param  array $labels 
     * @return string
     */
    protected function _prepareLabelsList($id, array $params, array $attribs, array $labels)
    {
        $attribs['id'] = $id . '-labels';
        $dijit = 'dijit.form.' . ucfirst($this->_sliderType) . 'RuleLabels';
        $attribs = $this->_prepareDijit($attribs, $params, 'layout', $dijit);

        return $this->view->htmlList($labels, true, $attribs);
    }
}
PKpG[ R~Dojo/View/Helper/Dojo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Dojo.php 10024 2008-07-10 14:04:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Registry */
require_once 'Zend/Registry.php';

/**
 * Zend_Dojo_View_Helper_Dojo: Dojo View Helper
 *
 * Allows specifying stylesheets, path to dojo, module paths, and onLoad 
 * events. 
 * 
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Dojo_View_Helper_Dojo 
{ 
    /**#@+
     * @const Programmatic dijit creation style constants
     */
    const PROGRAMMATIC_SCRIPT = 1;
    const PROGRAMMATIC_NOSCRIPT = -1;
    /**#@-*/

    /**
     * @var Zend_View_Interface
     */
    public $view; 

    /**
     * @var Zend_Dojo_View_Helper_Dojo_Container
     */
    protected $_container;

    /**
     * @var bool Whether or not dijits should be declared programmatically
     */
    protected static $_useProgrammatic = true;

    /**
     * Initialize helper
     *
     * Retrieve container from registry or create new container and store in 
     * registry.
     * 
     * @return void
     */
    public function __construct()
    {
        $registry = Zend_Registry::getInstance();
        if (!isset($registry[__CLASS__])) {
            require_once 'Zend/Dojo/View/Helper/Dojo/Container.php';
            $container = new Zend_Dojo_View_Helper_Dojo_Container();
            $registry[__CLASS__] = $container;
        }
        $this->_container = $registry[__CLASS__];
    }

    /**
     * Set view object
     * 
     * @param  Zend_Dojo_View_Interface $view 
     * @return void
     */
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
        $this->_container->setView($view);
    }

    /**
     * Return dojo container
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function dojo()
    {
        return $this->_container;
    }

    /**
     * Proxy to container methods
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     * @throws Zend_Dojo_View_Exception For invalid method calls
     */
    public function __call($method, $args)
    {
        if (!method_exists($this->_container, $method)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception(sprintf('Invalid method "%s" called on dojo view helper', $method));
        }

        return call_user_func_array(array($this->_container, $method), $args);
    }

    /**
     * Set whether or not dijits should be created declaratively
     * 
     * @return void
     */
    public static function setUseDeclarative()
    {
        self::$_useProgrammatic = false;
    }

    /**
     * Set whether or not dijits should be created programmatically
     *
     * Optionally, specifiy whether or not dijit helpers should generate the 
     * programmatic dojo.
     * 
     * @param  int $style 
     * @return void
     */
    public static function setUseProgrammatic($style = self::PROGRAMMATIC_SCRIPT)
    {
        if (!in_array($style, array(self::PROGRAMMATIC_SCRIPT, self::PROGRAMMATIC_NOSCRIPT))) {
            $style = self::PROGRAMMATIC_SCRIPT;
        }
        self::$_useProgrammatic = $style;
    }

    /**
     * Should dijits be created declaratively?
     * 
     * @return bool
     */
    public static function useDeclarative()
    {
        return (false === self::$_useProgrammatic);
    }

    /**
     * Should dijits be created programmatically?
     * 
     * @return bool
     */
    public static function useProgrammatic()
    {
        return (false !== self::$_useProgrammatic);
    }

    /**
     * Should dijits be created programmatically but without scripts?
     * 
     * @return bool
     */
    public static function useProgrammaticNoScript()
    {
        return (self::PROGRAMMATIC_NOSCRIPT === self::$_useProgrammatic);
    }
}
PKpG[��99Dojo/View/Helper/Editor.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/** Zend_Dojo_View_Helper_Textarea */
require_once 'Zend/Dojo/View/Helper/Textarea.php';

/** Zend_Json */
require_once 'Zend/Json.php';

/**
 * Dojo Editor dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Textarea
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Dojo_View_Helper_Editor extends Zend_Dojo_View_Helper_Textarea
{
    /**
     * @param string Dijit type
     */
    protected $_dijit = 'dijit.Editor';

    /**
     * @var string Dijit module to load
     */
    protected $_module = 'dijit.Editor';

    /**
     * JSON-encoded parameters
     * @var array
     */
    protected $_jsonParams = array('captureEvents', 'events', 'plugins');

    /**
     * dijit.Editor
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params 
     * @param  array $attribs 
     * @return string
     */
    public function editor($id, $value = null, $params = array(), $attribs = array())
    {
        $hiddenName = $id;
        if (array_key_exists('id', $attribs)) {
            $hiddenId = $attribs['id'];
        } else {
            $hiddenId = $hiddenName;
        }
        $hiddenId = $this->_normalizeId($hiddenId);

        $textareaName = $this->_normalizeEditorName($hiddenName);
        $textareaId   = $hiddenId . '-Editor';

        $hiddenAttribs = array(
            'id'    => $hiddenId,
            'name'  => $hiddenName,
            'value' => $value,
            'type'  => 'hidden',
        );
        $attribs['id'] = $textareaId;

        $this->_createGetParentFormFunction();
        $this->_createEditorOnSubmit($hiddenId, $textareaId);

        $html = '<input' . $this->_htmlAttribs($hiddenAttribs) . $this->getClosingBracket()
              . $this->textarea($textareaName, $value, $params, $attribs);

        return $html;
    }

    /**
     * Normalize editor element name
     * 
     * @param  string $name 
     * @return string
     */
    protected function _normalizeEditorName($name)
    {
        if ('[]' == substr($name, -2)) {
            $name = substr($name, 0, strlen($name) - 2);
            $name .= '[Editor][]';
        } else {
            $name .= '[Editor]';
        }
        return $name;
    }

    /**
     * Create onSubmit binding for element
     * 
     * @param  string $hiddenId 
     * @param  string $editorId 
     * @return void
     */
    protected function _createEditorOnSubmit($hiddenId, $editorId)
    {
        $this->dojo->onLoadCaptureStart();
        echo <<<EOJ
function() {
    var form = zend.findParentForm(dojo.byId('$hiddenId'));
    dojo.connect(form, 'onsubmit', function () {
        dojo.byId('$hiddenId').value = dijit.byId('$editorId').getValue(false);
    });
}
EOJ;
        $this->dojo->onLoadCaptureEnd();
    }
}
PKpG[̸q�R!R!Dojo/View/Helper/Dijit.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Dijit.php 12281 2008-11-04 14:40:05Z matthew $
 */

/** Zend_View_Helper_HtmlElement */
require_once 'Zend/View/Helper/HtmlElement.php';

/**
 * Dojo dijit base class
 * 
 * @uses       Zend_View_Helper_Abstract
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
abstract class Zend_Dojo_View_Helper_Dijit extends Zend_View_Helper_HtmlElement
{
    /**
     * @var Zend_Dojo_View_Helper_Dojo_Container
     */
    public $dojo;

    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit;

    /**
     * Element type
     * @var string
     */
    protected $_elementType;

    /**
     * Parameters that should be JSON encoded
     * @var array
     */
    protected $_jsonParams = array('constraints');

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module;

    /**
     * Set view
     *
     * Set view and enable dojo
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Dojo_View_Helper_Dijit
     */
    public function setView(Zend_View_Interface $view)
    {
        parent::setView($view);
        $this->dojo = $this->view->dojo();
        $this->dojo->enable();
        return $this;
    }

    /**
     * Whether or not to use declarative dijit creation
     * 
     * @return bool
     */
    protected function _useDeclarative()
    {
        return Zend_Dojo_View_Helper_Dojo::useDeclarative();
    }

    /**
     * Whether or not to use programmatic dijit creation
     * 
     * @return bool
     */
    protected function _useProgrammatic()
    {
        return Zend_Dojo_View_Helper_Dojo::useProgrammatic();
    }

    /**
     * Whether or not to use programmatic dijit creation w/o script creation
     * 
     * @return bool
     */
    protected function _useProgrammaticNoScript()
    {
        return Zend_Dojo_View_Helper_Dojo::useProgrammaticNoScript();
    }

    /**
     * Create a layout container
     * 
     * @param  int $id 
     * @param  string $content 
     * @param  array $params 
     * @param  array $attribs 
     * @param  string|null $dijit 
     * @return string
     */
    protected function _createLayoutContainer($id, $content, array $params, array $attribs, $dijit = null)
    {
        $attribs['id'] = $id;
        $attribs = $this->_prepareDijit($attribs, $params, 'layout', $dijit);
     
        $html = '<div' . $this->_htmlAttribs($attribs) . '>'
              . $content
              . "</div>\n";

        return $html;
    }

    /**
     * Create HTML representation of a dijit form element
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params 
     * @param  array $attribs 
     * @param  string|null $dijit 
     * @return string
     */
    public function _createFormElement($id, $value, array $params, array $attribs, $dijit = null)
    {
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $id;
        }
        $attribs['name']  = $id;
        $attribs['value'] = (string) $value;
        $attribs['type']  = $this->_elementType;

        $attribs = $this->_prepareDijit($attribs, $params, 'element', $dijit);

        $html = '<input' 
              . $this->_htmlAttribs($attribs) 
              . $this->getClosingBracket();
        return $html;
    }

    /**
     * Merge attributes and parameters
     *
     * Also sets up requires
     * 
     * @param  array $attribs 
     * @param  array $params 
     * @param  string $type 
     * @param  string $dijit Dijit type to use (otherwise, pull from $_dijit)
     * @return array
     */
    protected function _prepareDijit(array $attribs, array $params, $type, $dijit = null)
    {
        $this->dojo->requireModule($this->_module);

        switch ($type) {
            case 'layout':
                $stripParams = array('id');
                break;
            case 'element':
                $stripParams = array('id', 'name', 'value', 'type');
                foreach (array('checked', 'disabled', 'readonly') as $attrib) {
                    if (array_key_exists($attrib, $attribs)) {
                        if ($attribs[$attrib]) {
                            $attribs[$attrib] = $attrib;
                        } else {
                            unset($attribs[$attrib]);
                        }
                    }
                }
                break;
            case 'textarea':
                $stripParams = array('id', 'name', 'type');
                break;
            default:
        }

        foreach ($stripParams as $param) {
            if (array_key_exists($param, $params)) {
                unset($params[$param]);
            }
        }

        // Normalize constraints, if present
        foreach ($this->_jsonParams as $param) {
            if (array_key_exists($param, $params)) {
                require_once 'Zend/Json.php';

                if (is_array($params[$param])) {
                    $values = array();
                    foreach ($params[$param] as $key => $value) {
                        if (!is_scalar($value)) {
                            continue;
                        }
                        $values[$key] = $value;
                    }
                } elseif (is_string($params[$param])) {
                    $values = (array) $params[$param];
                } else {
                    $values = array();
                }
                $values = Zend_Json::encode($values);
                if ($this->_useDeclarative()) {
                    $values = str_replace('"', "'", $values);
                }
                $params[$param] = $values;
            }
        }

        $dijit = (null === $dijit) ? $this->_dijit : $dijit;
        if ($this->_useDeclarative()) {
            $attribs = array_merge($attribs, $params);
            $attribs['dojoType'] = $dijit;
        } elseif (!$this->_useProgrammaticNoScript()) {
            $this->_createDijit($dijit, $attribs['id'], $params);
        }

        return $attribs;
    }

    /**
     * Create a dijit programmatically
     * 
     * @param  string $dijit 
     * @param  string $id 
     * @param  array $params 
     * @return void
     */
    protected function _createDijit($dijit, $id, array $params)
    {
        $params['dojoType'] = $dijit;

        array_walk_recursive($params, array($this, '_castBoolToString'));

        $this->dojo->setDijit($id, $params);
    }

    /**
     * Cast a boolean to a string value
     * 
     * @param  mixed $item 
     * @param  string $key 
     * @return void
     */
    protected function _castBoolToString(&$item, $key)
    {
        if (!is_bool($item)) {
            return;
        }
        $item = ($item) ? "true" : "false";
    }

    /**
     * Render a hidden element to hold a value
     * 
     * @param  string $id 
     * @param  string|int|float $value 
     * @return string
     */
    protected function _renderHiddenElement($id, $value)
    {
        $hiddenAttribs = array(
            'name'  => $id,
            'value' => (string) $value,
            'type'  => 'hidden',
        );
        return '<input' . $this->_htmlAttribs($hiddenAttribs) . $this->getClosingBracket();
    }

    /**
     * Create JS function for retrieving parent form
     * 
     * @return void
     */
    protected function _createGetParentFormFunction()
    {
        $function =<<<EOJ
if (zend == undefined) {
    var zend = {};
}
zend.findParentForm = function(elementNode) {
    while (elementNode.nodeName.toLowerCase() != 'form') {
        elementNode = elementNode.parentNode;
    }
    return elementNode;
};
EOJ;

        $this->dojo->addJavascript($function);
    }
}
PKpG[E���$Dojo/View/Helper/FilteringSelect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: FilteringSelect.php 9978 2008-07-07 12:39:39Z matthew $
 */

/** Zend_Dojo_View_Helper_ComboBox */
require_once 'Zend/Dojo/View/Helper/ComboBox.php';

/**
 * Dojo FilteringSelect dijit
 * 
 * @uses       Zend_Dojo_View_Helper_ComboBox
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_FilteringSelect extends Zend_Dojo_View_Helper_ComboBox
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.FilteringSelect';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.FilteringSelect';

    /**
     * dijit.form.FilteringSelect
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @param  array|null $options Select options
     * @return string
     */
    public function filteringSelect($id, $value = null, array $params = array(), array $attribs = array(), array $options = null)
    {
        return $this->comboBox($id, $value, $params, $attribs, $options);
    }
}
PKpG[NJd�YY#Dojo/View/Helper/VerticalSlider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: VerticalSlider.php 9965 2008-07-06 14:46:20Z matthew $
 */

/** Zend_Dojo_View_Helper_Slider */
require_once 'Zend/Dojo/View/Helper/Slider.php';

/**
 * Dojo VerticalSlider dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Slider
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_VerticalSlider extends Zend_Dojo_View_Helper_Slider
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.VerticalSlider';

    /**
     * Slider type
     * @var string
     */
    protected $_sliderType = 'Vertical';

    /**
     * dijit.form.VerticalSlider
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function verticalSlider($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->prepareSlider($id, $value, $params, $attribs);
    }
}
PKpG[�y�
��#Dojo/View/Helper/SimpleTextarea.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * dijit.form.SimpleTextarea view helper
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Dojo_View_Helper_SimpleTextarea extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * @var string Dijit type
     */
    protected $_dijit  = 'dijit.form.SimpleTextarea';

    /**
     * @var string HTML element type
     */
    protected $_elementType = 'textarea';

    /**
     * @var string Dojo module
     */
    protected $_module = 'dijit.form.SimpleTextarea';

    /**
     * dijit.form.SimpleTextarea
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function simpleTextarea($id, $value = null, array $params = array(), array $attribs = array())
    {
        if (!array_key_exists('id', $attribs)) {
            $attribs['id']    = $id;
        }
        $attribs['name']  = $id;
        $attribs['type']  = $this->_elementType;

        $attribs = $this->_prepareDijit($attribs, $params, 'textarea');

        $html = '<textarea' . $this->_htmlAttribs($attribs) . '>'
              . $this->view->escape($value)
              . "</textarea>\n";

        return $html;
    }
}
PKpG[$��|��#Dojo/View/Helper/StackContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StackContainer.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo StackContainer dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_StackContainer extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.StackContainer';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.layout.StackContainer';

    /**
     * dijit.layout.StackContainer
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function stackContainer($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[$�[���Dojo/View/Helper/TextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo TextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_TextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.TextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.TextBox';

    /**
     * dijit.form.TextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function textBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[�,eۼ� Dojo/View/Helper/TimeTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TimeTextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo TimeTextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_TimeTextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.TimeTextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.TimeTextBox';

    /**
     * dijit.form.TimeTextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function timeTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[�Q"IbIb#Dojo/View/Helper/Dojo/Container.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Container.php 11991 2008-10-16 15:12:15Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo */
require_once 'Zend/Dojo.php';

/**
 * Container for  Dojo View Helper
 *
 * 
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (C) 2008 - Present, Zend Technologies, Inc.
 * @license    New BSD {@link http://framework.zend.com/license/new-bsd}
 */
class Zend_Dojo_View_Helper_Dojo_Container
{ 
    /**
     * @var Zend_View_Interface
     */
    public $view; 

    /**
     * addOnLoad capture lock
     * @var bool
     */
    protected $_captureLock = false;

    /**
     * addOnLoad object on which to apply lambda
     * @var string
     */
    protected $_captureObj;

    /**
     * Base CDN url to utilize
     * @var string
     */
    protected $_cdnBase = Zend_Dojo::CDN_BASE_GOOGLE;

    /**
     * Path segment following version string of CDN path
     * @var string
     */
    protected $_cdnDojoPath = Zend_Dojo::CDN_DOJO_PATH_GOOGLE;

    /**
     * Dojo version to use from CDN
     * @var string
     */
    protected $_cdnVersion = '1.2.0';

    /**
     * Has the dijit loader been registered?
     * @var bool
     */
    protected $_dijitLoaderRegistered = false;

    /**
     * Registered programmatic dijits
     * @var array
     */
    protected $_dijits = array();

    /**
     * Dojo configuration
     * @var array
     */
    protected $_djConfig = array();

    /**
     * Whether or not dojo is enabled
     * @var bool
     */
    protected $_enabled = false;

    /**
     * Are we rendering as XHTML?
     * @var bool
     */
    protected $_isXhtml = false;

    /**
     * Arbitrary javascript to include in dojo script
     * @var array
     */
    protected $_javascriptStatements = array();

    /**
     * Dojo layers (custom builds) to use
     * @var array
     */
    protected $_layers = array();

    /**
     * Relative path to dojo
     * @var string
     */
    protected $_localPath = null;

    /**
     * Root of dojo where all dojo files are installed
     * @var string
     */
    protected $_localRelativePath = null;

    /**
     * Modules to require
     * @var array
     */
    protected $_modules = array();

    /**
     * Registered module paths
     * @var array
     */
    protected $_modulePaths = array();

    /**
     * Actions to perform on window load
     * @var array
     */
    protected $_onLoadActions = array();

    /**
     * Register the Dojo stylesheet?
     * @var bool
     */
    protected $_registerDojoStylesheet = false;

    /**
     * Style sheet modules to load
     * @var array
     */
    protected $_stylesheetModules = array();

    /**
     * Local stylesheets
     * @var array
     */
    protected $_stylesheets = array();

    /**
     * Set view object
     * 
     * @param  Zend_Dojo_View_Interface $view 
     * @return void
     */
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

    /**
     * Enable dojo
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function enable()
    {
        $this->_enabled = true;
        return $this;
    }

    /**
     * Disable dojo
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function disable()
    {
        $this->_enabled = false;
        return $this;
    }

    /**
     * Is dojo enabled?
     * 
     * @return bool
     */
    public function isEnabled()
    {
        return $this->_enabled;
    }
 
    /**
     * Specify a module to require
     * 
     * @param  string $module 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function requireModule($module)
    {
        if (!is_string($module) && !is_array($module)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception('Invalid module name specified; must be a string or an array of strings');
        }

        $module = (array) $module;

        foreach ($module as $mod) {
            if (!preg_match('/^[a-z][a-z0-9._-]+$/i', $mod)) {
                require_once 'Zend/Dojo/View/Exception.php';
                throw new Zend_Dojo_View_Exception(sprintf('Module name specified, "%s", contains invalid characters', (string) $mod));
            }

            if (!in_array($mod, $this->_modules)) {
                $this->_modules[] = $mod;
            }
        }

        return $this;
    }

    /**
     * Retrieve list of modules to require
     * 
     * @return array
     */
    public function getModules()
    {
        return $this->_modules;
    }
 
    /**
     * Register a module path
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function registerModulePath($module, $path)
    {
        $path = (string) $path;
        if (!in_array($module, $this->_modulePaths)) {
            $this->_modulePaths[$module] = $path;
        }

        return $this;
    }

    /**
     * List registered module paths
     * 
     * @return array
     */
    public function getModulePaths()
    {
        return $this->_modulePaths;
    }

    /**
     * Add layer (custom build) path
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addLayer($path)
    {
        $path = (string) $path;
        if (!in_array($path, $this->_layers)) {
            $this->_layers[] = $path;
        }
        return $this;
    }

    /**
     * Get registered layers
     * 
     * @return array
     */
    public function getLayers()
    {
        return $this->_layers;
    }

    /**
     * Remove a registered layer
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function removeLayer($path)
    {
        $path = (string) $path;
        $layers = array_flip($this->_layers);
        if (array_key_exists($path, $layers)) {
            unset($layers[$path]);
            $this->_layers = array_keys($layers);
        }
        return $this;
    }

    /**
     * Clear all registered layers
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function clearLayers()
    {
        $this->_layers = array();
        return $this;
    }

    /**
     * Set CDN base path
     * 
     * @param  string $url 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setCdnBase($url)
    {
        $this->_cdnBase = (string) $url;
        return $this;
    }

    /**
     * Return CDN base URL
     * 
     * @return string
     */
    public function getCdnBase()
    {
        return $this->_cdnBase;
    }
 
    /**
     * Use CDN, using version specified
     * 
     * @param  string $version 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setCdnVersion($version = null)
    {
        $this->enable();
        if (preg_match('/^[1-9]\.[0-9](\.[0-9])?$/', $version)) {
            $this->_cdnVersion = $version;
        }
        return $this;
    }
 
    /**
     * Get CDN version
     * 
     * @return string
     */
    public function getCdnVersion()
    {
        return $this->_cdnVersion;
    }

    /**
     * Set CDN path to dojo (relative to CDN base + version)
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setCdnDojoPath($path)
    {
        $this->_cdnDojoPath = (string) $path;
        return $this;
    }

    /**
     * Get CDN path to dojo (relative to CDN base + version)
     * 
     * @return string
     */
    public function getCdnDojoPath()
    {
        return $this->_cdnDojoPath;
    }

    /**
     * Are we using the CDN?
     * 
     * @return bool
     */
    public function useCdn()
    {
        return !$this->useLocalPath();
    }
 
    /**
     * Set path to local dojo
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setLocalPath($path)
    {
        $this->enable();
        $this->_localPath = (string) $path;
        return $this;
    }

    /**
     * Get local path to dojo
     * 
     * @return string
     */
    public function getLocalPath()
    {
        return $this->_localPath;
    }

    /**
     * Are we using a local path?
     * 
     * @return bool
     */
    public function useLocalPath()
    {
        return (null === $this->_localPath) ? false : true;
    }
 
    /**
     * Set Dojo configuration
     * 
     * @param  string $option 
     * @param  mixed $value 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setDjConfig(array $config)
    {
        $this->_djConfig = $config;
        return $this;
    }

    /**
     * Set Dojo configuration option
     * 
     * @param  string $option 
     * @param  mixed $value 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setDjConfigOption($option, $value)
    {
        $option = (string) $option;
        $this->_djConfig[$option] = $value;
        return $this;
    }

    /**
     * Retrieve dojo configuration values
     * 
     * @return array
     */
    public function getDjConfig()
    {
        return $this->_djConfig;
    }

    /**
     * Get dojo configuration value
     * 
     * @param  string $option 
     * @param  mixed $default 
     * @return mixed
     */
    public function getDjConfigOption($option, $default = null)
    {
        $option = (string) $option;
        if (array_key_exists($option, $this->_djConfig)) {
            return $this->_djConfig[$option];
        }
        return $default;
    }
 
    /**
     * Add a stylesheet by module name
     * 
     * @param  string $module 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addStylesheetModule($module)
    {
        if (!preg_match('/^[a-z0-9]+\.[a-z0-9_-]+(\.[a-z0-9_-]+)*$/i', $module)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception('Invalid stylesheet module specified');
        }
        if (in_array($module, $this->_stylesheetModules)) {
            return $this;
        }
        $this->_stylesheetModules[] = $module;
        return $this;
    }

    /**
     * Get all stylesheet modules currently registered
     * 
     * @return array
     */
    public function getStylesheetModules()
    {
        return $this->_stylesheetModules;
    }
 
    /**
     * Add a stylesheet
     * 
     * @param  string $path 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addStylesheet($path)
    {
        $path = (string) $path;
        if (!in_array($path, $this->_stylesheets)) {
            $this->_stylesheets[] = (string) $path;
        }
        return $this;
    }

    /**
     * Register the dojo.css stylesheet?
     *
     * With no arguments, returns the status of the flag; with arguments, sets 
     * the flag and returns the object.
     * 
     * @param  null|bool $flag
     * @return Zend_Dojo_View_Helper_Dojo_Container|bool
     */
    public function registerDojoStylesheet($flag = null)
    {
        if (null === $flag) {
             return $this->_registerDojoStylesheet;
        }

        $this->_registerDojoStylesheet = (bool) $flag;
        return $this;
    }

    /**
     * Retrieve registered stylesheets
     * 
     * @return array
     */
    public function getStylesheets()
    {
        return $this->_stylesheets;
    }

    /**
     * Add a script to execute onLoad
     *
     * dojo.addOnLoad accepts:
     * - function name
     * - lambda
     * 
     * @param  string $callback Lambda
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addOnLoad($callback)
    {
        if (!in_array($callback, $this->_onLoadActions, true)) {
            $this->_onLoadActions[] = $callback;
        }
        return $this;
    }

    /**
     * Retrieve all registered onLoad actions
     * 
     * @return array
     */
    public function getOnLoadActions()
    {
        return $this->_onLoadActions;
    }

    /**
     * Start capturing routines to run onLoad
     * 
     * @return bool
     */
    public function onLoadCaptureStart()
    {
        if ($this->_captureLock) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception('Cannot nest onLoad captures');
        }

        $this->_captureLock = true;
        ob_start();
        return;
    }

    /**
     * Stop capturing routines to run onLoad
     * 
     * @return bool
     */
    public function onLoadCaptureEnd()
    {
        $data               = ob_get_clean();
        $this->_captureLock = false;

        $this->addOnLoad($data);
        return true;
    }

    /**
     * Add a programmatic dijit
     * 
     * @param  string $id 
     * @param  array $params 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addDijit($id, array $params)
    {
        if (array_key_exists($id, $this->_dijits)) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception(sprintf('Duplicate dijit with id "%s" already registered', $id));
        }

        $this->_dijits[$id] = array(
            'id'     => $id,
            'params' => $params,
        );

        return $this;
    }

    /**
     * Set a programmatic dijit (overwrites)
     * 
     * @param  string $id 
     * @param  array $params 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setDijit($id, array $params)
    {
        $this->removeDijit($id);
        return $this->addDijit($id, $params);
    }

    /**
     * Add multiple dijits at once
     *
     * Expects an array of id => array $params pairs
     * 
     * @param  array $dijits 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addDijits(array $dijits)
    {
        foreach ($dijits as $id => $params) {
            $this->addDijit($id, $params);
        }
        return $this;
    }

    /**
     * Set multiple dijits at once (overwrites)
     *
     * Expects an array of id => array $params pairs
     * 
     * @param  array $dijits 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function setDijits(array $dijits)
    {
        $this->clearDijits();
        return $this->addDijits($dijits);
    }

    /**
     * Is the given programmatic dijit already registered?
     * 
     * @param  string $id 
     * @return bool
     */
    public function hasDijit($id)
    {
        return array_key_exists($id, $this->_dijits);
    }

    /**
     * Retrieve a dijit by id
     * 
     * @param  string $id 
     * @return array|null
     */
    public function getDijit($id)
    {
        if ($this->hasDijit($id)) {
            return $this->_dijits[$id]['params'];
        }
        return null;
    }

    /**
     * Retrieve all dijits
     *
     * Returns dijits as an array of assoc arrays
     * 
     * @return array
     */
    public function getDijits()
    {
        return array_values($this->_dijits);
    }

    /**
     * Remove a programmatic dijit if it exists
     * 
     * @param  string $id 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function removeDijit($id)
    {
        if (array_key_exists($id, $this->_dijits)) {
            unset($this->_dijits[$id]);
        }

        return $this;
    }

    /**
     * Clear all dijits
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function clearDijits()
    {
        $this->_dijits = array();
        return $this;
    }

    /**
     * Render dijits as JSON structure
     * 
     * @return string
     */
    public function dijitsToJson()
    {
        require_once 'Zend/Json.php';
        return Zend_Json::encode($this->getDijits());
    }

    /**
     * Create dijit loader functionality
     * 
     * @return void
     */
    public function registerDijitLoader()
    {
        if (!$this->_dijitLoaderRegistered) {
            $js =<<<EOJ
function() {
    dojo.forEach(zendDijits, function(info) {
        var n = dojo.byId(info.id);
        if (null != n) {
            dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
        }
    });
    dojo.parser.parse();
}
EOJ;
            $this->requireModule('dojo.parser');
            $this->addOnLoad($js);
            $this->addJavascript('var zendDijits = ' . $this->dijitsToJson() . ';');
            $this->_dijitLoaderRegistered = true;
        }
    }

    /**
     * Add arbitrary javascript to execute in dojo JS container
     * 
     * @param  string $js 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function addJavascript($js)
    {
        $js = preg_replace('/^\s*(.*?)\s*$/s', '$1', $js);
        if (!in_array(substr($js, -1), array(';', '}'))) {
            $js .= ';';
        }

        if (in_array($js, $this->_javascriptStatements)) {
            return $this;
        }

        $this->_javascriptStatements[] = $js;
        return $this;
    }

    /**
     * Return all registered javascript statements
     * 
     * @return array
     */
    public function getJavascript()
    {
        return $this->_javascriptStatements;
    }

    /**
     * Clear arbitrary javascript stack
     * 
     * @return Zend_Dojo_View_Helper_Dojo_Container
     */
    public function clearJavascript()
    {
        $this->_javascriptStatements = array();
        return $this;
    }

    /**
     * Capture arbitrary javascript to include in dojo script
     * 
     * @return void
     */
    public function javascriptCaptureStart()
    {
        if ($this->_captureLock) {
            require_once 'Zend/Dojo/View/Exception.php';
            throw new Zend_Dojo_View_Exception('Cannot nest captures');
        }

        $this->_captureLock = true;
        ob_start();
        return;
    }

    /**
     * Finish capturing arbitrary javascript to include in dojo script
     * 
     * @return true
     */
    public function javascriptCaptureEnd()
    {
        $data               = ob_get_clean();
        $this->_captureLock = false;

        $this->addJavascript($data);
        return true;
    }

    /**
     * String representation of dojo environment
     * 
     * @return string
     */
    public function __toString()
    {
        if (!$this->isEnabled()) {
            return '';
        }

        $this->_isXhtml = $this->view->doctype()->isXhtml();

        if (Zend_Dojo_View_Helper_Dojo::useDeclarative()) {
            if (null === $this->getDjConfigOption('parseOnLoad')) {
                $this->setDjConfigOption('parseOnLoad', true);
            }
        }

        if (!empty($this->_dijits)) {
            $this->registerDijitLoader();
        }

        $html  = $this->_renderStylesheets() . PHP_EOL
               . $this->_renderDjConfig() . PHP_EOL
               . $this->_renderDojoScriptTag() . PHP_EOL
               . $this->_renderLayers() . PHP_EOL
               . $this->_renderExtras();
        return $html;
    }

    /**
     * Retrieve local path to dojo resources for building relative paths
     * 
     * @return string
     */
    protected function _getLocalRelativePath()
    {
        if (null === $this->_localRelativePath) {
            $localPath = $this->getLocalPath();
            $localPath = preg_replace('|[/\\\\]dojo[/\\\\]dojo.js[^/\\\\]*$|i', '', $localPath);
            $this->_localRelativePath = $localPath;
        }
        return $this->_localRelativePath;
    }

    /**
     * Render dojo stylesheets
     * 
     * @return string
     */
    protected function _renderStylesheets()
    {
        if ($this->useCdn()) {
            $base = $this->getCdnBase()
                  . $this->getCdnVersion();
        } else {
            $base = $this->_getLocalRelativePath();
        }

        $registeredStylesheets = $this->getStylesheetModules();
        foreach ($registeredStylesheets as $stylesheet) {
            $themeName     = substr($stylesheet, strrpos($stylesheet, '.') + 1);
            $stylesheet    = str_replace('.', '/', $stylesheet);
            $stylesheets[] = $base . '/' . $stylesheet . '/' . $themeName . '.css';
        }

        foreach ($this->getStylesheets() as $stylesheet) {
            $stylesheets[] = $stylesheet;
        }

        if ($this->_registerDojoStylesheet) {
            $stylesheets[] = $base . '/dojo/resources/dojo.css';
        }

        if (empty($stylesheets)) {
            return '';
        }

        array_reverse($stylesheets);
        $style = '<style type="text/css">' . PHP_EOL
               . (($this->_isXhtml) ? '<!--' : '<!--') . PHP_EOL;
        foreach ($stylesheets as $stylesheet) {
            $style .= '    @import "' . $stylesheet . '";' . PHP_EOL;
        }
        $style .= (($this->_isXhtml) ? '-->' : '-->') . PHP_EOL
                . '</style>';

        return $style;
    }

    /**
     * Render DjConfig values
     * 
     * @return string
     */
    protected function _renderDjConfig()
    {
        $djConfigValues = $this->getDjConfig();
        if (empty($djConfigValues)) {
            return '';
        }

        require_once 'Zend/Json.php';
        $scriptTag = '<script type="text/javascript">' . PHP_EOL
                   . (($this->_isXhtml) ? '//<![CDATA[' : '//<!--') . PHP_EOL
                   . '    var djConfig = ' . Zend_Json::encode($djConfigValues) . ';' . PHP_EOL
                   . (($this->_isXhtml) ? '//]]>' : '//-->') . PHP_EOL
                   . '</script>';

        return $scriptTag;
    }

    /**
     * Render dojo script tag
     *
     * Renders Dojo script tag by utilizing either local path provided or the 
     * CDN. If any djConfig values were set, they will be serialized and passed 
     * with that attribute.
     * 
     * @return string
     */
    protected function _renderDojoScriptTag()
    {
        if ($this->useCdn()) {
            $source = $this->getCdnBase()
                    . $this->getCdnVersion()
                    . $this->getCdnDojoPath();
        } else {
            $source = $this->getLocalPath();
        }

        $scriptTag = '<script type="text/javascript" src="' . $source . '"></script>';
        return $scriptTag;
    }

    /**
     * Render layers (custom builds) as script tags
     * 
     * @return string
     */
    protected function _renderLayers()
    {
        $layers = $this->getLayers();
        if (empty($layers)) {
            return '';
        }

        $html = array();
        foreach ($layers as $path) {
            $html[] = sprintf(
                '<script type="text/javascript" src="%s"></script>',
                htmlentities($path, ENT_QUOTES)
            );
        }

        return implode("\n", $html);
    }

    /**
     * Render dojo module paths and requires
     * 
     * @return string
     */
    protected function _renderExtras()
    {
        $js = array();
        $modulePaths = $this->getModulePaths();
        if (!empty($modulePaths)) {
            foreach ($modulePaths as $module => $path) {
                $js[] =  'dojo.registerModulePath("' . $this->view->escape($module) . '", "' . $this->view->escape($path) . '");';
            }
        }

        $modules = $this->getModules();
        if (!empty($modules)) {
            foreach ($modules as $module) {
                $js[] = 'dojo.require("' . $this->view->escape($module) . '");';
            }
        }

        $onLoadActions = array();
        foreach ($this->getOnLoadActions() as $callback) {
            $onLoadActions[] = 'dojo.addOnLoad(' . $callback . ');';
        }

        $javascript = implode("\n    ", $this->getJavascript());

        $content = '';
        if (!empty($js)) {
            $content .= implode("\n    ", $js) . "\n";
        }

        if (!empty($onLoadActions)) {
            $content .= implode("\n    ", $onLoadActions) . "\n";
        }

        if (!empty($javascript)) {
            $content .= $javascript . "\n";
        }

        if (preg_match('/^\s*$/s', $content)) {
            return '';
        }

        $html = '<script type="text/javascript">' . PHP_EOL
              . (($this->_isXhtml) ? '//<![CDATA[' : '//<!--') . PHP_EOL
              . $content
              . (($this->_isXhtml) ? '//]]>' : '//-->') . PHP_EOL
              . PHP_EOL . '</script>';
        return $html;
    }
}
PKpG[�-+�	�	$Dojo/View/Helper/BorderContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: BorderContainer.php 12378 2008-11-07 18:39:20Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo BorderContainer dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_BorderContainer extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.BorderContainer';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.layout.BorderContainer';

    /**
     * Ensure style is only registered once
     * @var bool
     */
    protected $_styleIsRegistered = false;

    /**
     * dijit.layout.BorderContainer
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function borderContainer($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        // this will ensure that the border container is viewable:
        if (!$this->_styleIsRegistered) {
            $this->view->headStyle()->appendStyle('html, body { height: 100%; width: 100%; margin: 0; padding: 0; }');
            $this->_styleIsRegistered = true;
        }

        // and now we create it:
        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[B
��NN$Dojo/View/Helper/PasswordTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PasswordTextBox.php 10667 2008-08-05 13:00:56Z matthew $
 */

/** Zend_Dojo_View_Helper_ValidationTextBox */
require_once 'Zend/Dojo/View/Helper/ValidationTextBox.php';

/**
 * Dojo ValidationTextBox dijit tied to password input
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_PasswordTextBox extends Zend_Dojo_View_Helper_ValidationTextBox
{
    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'password';

    /**
     * dijit.form.ValidationTextBox tied to password input
     * 
     * @param  string $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function passwordTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[؁�'' Dojo/View/Helper/RadioButton.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: RadioButton.php 10091 2008-07-15 03:46:37Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo RadioButton dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_RadioButton extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.RadioButton';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.CheckBox';

    /**
     * dijit.form.RadioButton
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @param  array $options Array of radio options
     * @param  string $listsep String with which to separate options
     * @return string
     */
    public function radioButton(
        $id, 
        $value = null, 
        array $params = array(), 
        array $attribs = array(), 
        array $options = null, 
        $listsep = "<br />\n"
    ) {
        $attribs['name'] = $id;
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $id;
        }
        $attribs = $this->_prepareDijit($attribs, $params, 'element');

        if (is_array($options) && $this->_useProgrammatic() && !$this->_useProgrammaticNoScript()) {
            $baseId = $id;
            if (array_key_exists('id', $attribs)) {
                $baseId = $attribs['id'];
            }
            require_once 'Zend/Filter/Alnum.php';
            $filter = new Zend_Filter_Alnum();
            foreach (array_keys($options) as $key) {
                $optId = $baseId . '-' . $filter->filter($key);
                $this->_createDijit($this->_dijit, $optId, array());
            }
        }

        return $this->view->formRadio($id, $value, $attribs, $options, $listsep);
    }
}
PKpG[�s��"Dojo/View/Helper/AccordionPane.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AccordionPane.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo AccordionPane dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_AccordionPane extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.AccordionPane';

    /**
     * Module being used
     * @var string
     */
    protected $_module = 'dijit.layout.AccordionContainer';

    /**
     * dijit.layout.AccordionPane
     * 
     * @param  int $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function accordionPane($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[<;�k��Dojo/View/Helper/Button.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Button.php 10091 2008-07-15 03:46:37Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo Button dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_Button extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.Button';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.Button';

    /**
     * dijit.form.Button
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function button($id, $value = null, array $params = array(), array $attribs = array()) 
    {
        $attribs['name'] = $id;
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $id;
        }
        $attribs = $this->_prepareDijit($attribs, $params, 'element');

        return $this->view->formButton($id, $value, $attribs);
    }
}
PKpG[UqGZ"Dojo/View/Helper/NumberSpinner.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NumberSpinner.php 10043 2008-07-11 15:41:54Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo NumberSpinner dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_NumberSpinner extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.NumberSpinner';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.NumberSpinner';

    /**
     * dijit.form.NumberSpinner
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function numberSpinner($id, $value = null, array $params = array(), array $attribs = array())
    {
        // Get constraints and serialize to JSON if necessary
        if (array_key_exists('constraints', $params)) {
            if (!is_array($params['constraints'])) {
                unset($params['constraints']);
            }
        } else {
            $constraints = array();
            if (array_key_exists('min', $params)) {
                $constraints['min'] = $params['min'];
                unset($params['min']);
            }
            if (array_key_exists('max', $params)) {
                $constraints['max'] = $params['max'];
                unset($params['max']);
            }
            if (array_key_exists('places', $params)) {
                $constraints['places'] = $params['places'];
                unset($params['places']);
            }
            $params['constraints'] = $constraints;
        }

        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[����!Dojo/View/Helper/SubmitButton.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SubmitButton.php 12692 2008-11-18 20:30:09Z matthew $
 */

/** Zend_Dojo_View_Helper_Button */
require_once 'Zend/Dojo/View/Helper/Button.php';

/**
 * Dojo Button dijit tied to submit input
 * 
 * @uses       Zend_Dojo_View_Helper_Button
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_SubmitButton extends Zend_Dojo_View_Helper_Button
{
    /**
     * @var string Submit input
     */
    protected $_elementType = 'submit';

    /**
     * dijit.form.Button tied to submit input
     * 
     * @param  string $id 
     * @param  string $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function submitButton($id, $value = null, array $params = array(), array $attribs = array()) 
    {
        if (!array_key_exists('label', $params)) {
            $params['label'] = $value;
        }
        if (empty($params['label']) && !empty($params['content'])) {
            $params['label'] = $params['content'];
            $value = $params['content'];
        }
        if (empty($params['label']) && !empty($attribs['content'])) {
            $params['label'] = $attribs['content'];
            $value = $attribs['content'];
            unset($attribs['content']);
        }
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[�E����Dojo/View/Helper/CheckBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CheckBox.php 11292 2008-09-08 18:51:39Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo CheckBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_CheckBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.CheckBox';

    /**
     * Element type
     * @var string
     */
    protected $_elementType = 'checkbox';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.CheckBox';

    /**
     * dijit.form.CheckBox
     * 
     * @param  int $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @param  array $checkedOptions Should contain either two items, or the keys checkedValue and unCheckedValue
     * @return string
     */
    public function checkBox($id, $value = null, array $params = array(), array $attribs = array(), array $checkedOptions = null)
    {
        // Prepare the checkbox options
        require_once 'Zend/View/Helper/FormCheckbox.php';
        $checked = false;
        if (isset($attribs['checked']) && $attribs['checked']) {
            $checked = true;
        } elseif (isset($attribs['checked'])) {
            $checked = false;
        }
        $checkboxInfo = Zend_View_Helper_FormCheckbox::determineCheckboxInfo($value, $checked, $checkedOptions);
        $attribs['checked'] = $checkboxInfo['checked'];
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $id;
        }

        $attribs = $this->_prepareDijit($attribs, $params, 'element');

        // strip options so they don't show up in markup
        if (array_key_exists('options', $attribs)) {
            unset($attribs['options']);
        }

        // and now we create it:
        $html = '';
        if (!strstr($id, '[]')) {
            // hidden element for unchecked value
            $html .= $this->_renderHiddenElement($id, $checkboxInfo['unCheckedValue']);
        }

        // and final element
        $html .= $this->_createFormElement($id, $checkboxInfo['checkedValue'], $params, $attribs);

        return $html;
    }
}
PKpG[���

Dojo/View/Helper/Form.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Form.php 10196 2008-07-18 22:01:18Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo Form dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_Form extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.Form';

    /**
     * Module being used
     * @var string
     */
    protected $_module = 'dijit.form.Form';

    /**
     * @var Zend_View_Helper_Form
     */
    protected $_helper;

    /**
     * dijit.form.Form
     * 
     * @param  string $id 
     * @param  null|array $attribs HTML attributes
     * @param  false|string $content 
     * @return string
     */
    public function form($id, $attribs = null, $content = false)
    {
        if (!is_array($attribs)) {
            $attribs = (array) $attribs;
        }
        if (array_key_exists('id', $attribs)) {
            $attribs['name'] = $id;
        } else {
            $attribs['id'] = $id;
        }

        if (false === $content) {
            $content = '';
        }

        $attribs = $this->_prepareDijit($attribs, array(), 'layout');

        return $this->getFormHelper()->form($id, $attribs, $content);
    }

    /**
     * Get standard form helper
     * 
     * @return Zend_View_Helper_Form
     */
    public function getFormHelper()
    {
        if (null === $this->_helper) {
            require_once 'Zend/View/Helper/Form.php';
            $this->_helper = new Zend_View_Helper_Form;
            $this->_helper->setView($this->view);
        }
        return $this->_helper;
    }
}
PKpG[���gg%Dojo/View/Helper/HorizontalSlider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HorizontalSlider.php 9965 2008-07-06 14:46:20Z matthew $
 */

/** Zend_Dojo_View_Helper_Slider */
require_once 'Zend/Dojo/View/Helper/Slider.php';

/**
 * Dojo HorizontalSlider dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Slider
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_HorizontalSlider extends Zend_Dojo_View_Helper_Slider
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.HorizontalSlider';

    /**
     * Slider type
     * @var string
     */
    protected $_sliderType = 'Horizontal';

    /**
     * dijit.form.HorizontalSlider
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function horizontalSlider($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->prepareSlider($id, $value, $params, $attribs);
    }
}
PKpG[���#Dojo/View/Helper/SplitContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SplitContainer.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo SplitContainer dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_SplitContainer extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.SplitContainer';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.layout.SplitContainer';

    /**
     * dijit.layout.SplitContainer
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function splitContainer($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[
��ޑ�Dojo/View/Helper/ComboBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ComboBox.php 11014 2008-08-24 21:15:31Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo ComboBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_ComboBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.ComboBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.ComboBox';

    /**
     * dijit.form.ComboBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @param  array|null $options Select options
     * @return string
     */
    public function comboBox($id, $value = null, array $params = array(), array $attribs = array(), array $options = null)
    {
        $html = '';
        if (!array_key_exists('id', $attribs)) {
            $attribs['id'] = $id;
        }
        if (array_key_exists('store', $params) && is_array($params['store'])) {
            // using dojo.data datastore
            if (false !== ($store = $this->_renderStore($params['store']))) {
                $params['store'] = $params['store']['store'];
                if (is_string($store)) {
                    $html .= $store;
                }
                $html .= $this->_createFormElement($id, $value, $params, $attribs);
                return $html;
            }
            unset($params['store']);
        } elseif (array_key_exists('store', $params)) {
            if (array_key_exists('storeType', $params)) {
                $storeParams = array(
                    'store' => $params['store'],
                    'type'  => $params['storeType'],
                );
                unset($params['storeType']);
                if (array_key_exists('storeParams', $params)) {
                    $storeParams['params'] = $params['storeParams'];
                    unset($params['storeParams']);
                }
                if (false !== ($store = $this->_renderStore($storeParams))) {
                    if (is_string($store)) {
                        $html .= $store;
                    }
                }
            }
            $html .= $this->_createFormElement($id, $value, $params, $attribs);
            return $html;
        }

        // do as normal select
        $attribs = $this->_prepareDijit($attribs, $params, 'element');
        return $this->view->formSelect($id, $value, $attribs, $options);
    }

    /**
     * Render data store element
     *
     * Renders to dojo view helper
     * 
     * @param  array $params 
     * @return string|false
     */
    protected function _renderStore(array $params)
    {
        if (!array_key_exists('store', $params) || !array_key_exists('type', $params)) {
            return false;
        }

        $this->dojo->requireModule($params['type']);

        $extraParams = array();
        $storeParams = array(
            'dojoType' => $params['type'],
            'jsId'     => $params['store'],
        );

        if (array_key_exists('params', $params)) {
            $storeParams = array_merge($storeParams, $params['params']);
            $extraParams = $params['params'];
        }

        if ($this->_useProgrammatic()) {
            if (!$this->_useProgrammaticNoScript()) {
                $this->dojo->addJavascript('var ' . $storeParams['jsId'] . ';');
                require_once 'Zend/Json.php';
                $js = "function() {\n"
                    . '    ' . $storeParams['jsId'] . ' = '
                    . 'new ' . $storeParams['dojoType'] . '('
                    .         Zend_Json::encode($extraParams)
                    . ");\n}";
                $this->dojo->addOnLoad($js);
            }
            return true;
        }

        return '<div' . $this->_htmlAttribs($storeParams) . '></div>';
    }
}
PKpG[y!N��&Dojo/View/Helper/ValidationTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ValidationTextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo ValidationTextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_ValidationTextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.ValidationTextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.ValidationTextBox';

    /**
     * dijit.form.ValidationTextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function validationTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[n�����$Dojo/View/Helper/CurrencyTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CurrencyTextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo CurrencyTextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_CurrencyTextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.CurrencyTextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.CurrencyTextBox';

    /**
     * dijit.form.CurrencyTextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function currencyTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[�O��!Dojo/View/Helper/TabContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TabContainer.php 10067 2008-07-12 21:05:32Z matthew $
 */

/** Zend_Dojo_View_Helper_DijitContainer */
require_once 'Zend/Dojo/View/Helper/DijitContainer.php';

/**
 * Dojo TabContainer dijit
 * 
 * @uses       Zend_Dojo_View_Helper_DijitContainer
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_TabContainer extends Zend_Dojo_View_Helper_DijitContainer
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.layout.TabContainer';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.layout.TabContainer';

    /**
     * dijit.layout.TabContainer
     * 
     * @param  string $id 
     * @param  string $content 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function tabContainer($id = null, $content = '', array $params = array(), array $attribs = array())
    {
        if (0 === func_num_args()) {
            return $this;
        }

        return $this->_createLayoutContainer($id, $content, $params, $attribs);
    }
}
PKpG[qC���"Dojo/View/Helper/NumberTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NumberTextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo NumberTextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_NumberTextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.NumberTextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.NumberTextBox';

    /**
     * dijit.form.NumberTextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function numberTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[	!����Dojo/View/Helper/Textarea.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Textarea.php 10256 2008-07-21 14:09:27Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo Textarea dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_Textarea extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.Textarea';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.Textarea';

    /**
     * dijit.form.Textarea
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function textarea($id, $value = null, array $params = array(), array $attribs = array())
    {
        if (!array_key_exists('id', $attribs)) {
            $attribs['id']    = $id;
        }
        $attribs['name']  = $id;
        $attribs['type']  = $this->_elementType;

        $attribs = $this->_prepareDijit($attribs, $params, 'textarea');

        $html = '<textarea' . $this->_htmlAttribs($attribs) . '>'
              . $value
              . "</textarea>\n";

        return $html;
    }
}
PKpG[�iE�� Dojo/View/Helper/DateTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DateTextBox.php 9998 2008-07-08 19:54:41Z matthew $
 */

/** Zend_Dojo_View_Helper_Dijit */
require_once 'Zend/Dojo/View/Helper/Dijit.php';

/**
 * Dojo DateTextBox dijit
 * 
 * @uses       Zend_Dojo_View_Helper_Dijit
 * @package    Zend_Dojo
 * @subpackage View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
class Zend_Dojo_View_Helper_DateTextBox extends Zend_Dojo_View_Helper_Dijit
{
    /**
     * Dijit being used
     * @var string
     */
    protected $_dijit  = 'dijit.form.DateTextBox';

    /**
     * HTML element type
     * @var string
     */
    protected $_elementType = 'text';

    /**
     * Dojo module to use
     * @var string
     */
    protected $_module = 'dijit.form.DateTextBox';

    /**
     * dijit.form.DateTextBox
     * 
     * @param  int $id 
     * @param  mixed $value 
     * @param  array $params  Parameters to use for dijit creation
     * @param  array $attribs HTML attributes
     * @return string
     */
    public function dateTextBox($id, $value = null, array $params = array(), array $attribs = array())
    {
        return $this->_createFormElement($id, $value, $params, $attribs);
    }
}
PKpG[!>pQ�3�3
Dojo/Data.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Data.php 11282 2008-09-08 16:05:59Z matthew $
 */

/**
 * dojo.data support for Zend Framework
 * 
 * @uses       ArrayAccess
 * @uses       Iterator
 * @uses       Countable
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Dojo_Data implements ArrayAccess,Iterator,Countable 
{
    /**
     * Identifier field of item
     * @var string|int
     */
    protected $_identifier;

    /**
     * Collected items
     * @var array
     */
    protected $_items = array();

    /**
     * Label field of item
     * @var string
     */
    protected $_label;

    /**
     * Data container metadata
     * @var array
     */
    protected $_metadata = array();

    /**
     * Constructor
     * 
     * @param  string|null $identifier 
     * @param  array|Traversable|null $items 
     * @param  string|null $label 
     * @return void
     */
    public function __construct($identifier = null, $items = null, $label = null) 
    { 
        if (null !== $identifier) { 
            $this->setIdentifier($identifier); 
        } 
        if (null !== $items) { 
            $this->setItems($items); 
        } 
        if (null !== $label) { 
            $this->setLabel($label); 
        } 
    } 
 
    /**
     * Set the items to collect
     *
     * @param array|Traversable $items
     * @return Zend_Dojo_Data
     */
    public function setItems($items)
    {
        $this->clearItems();
        return $this->addItems($items);
    }

    /**
     * Set an individual item, optionally by identifier (overwrites)
     *
     * @param  array|object $item
     * @param  string|null $identifier
     * @return Zend_Dojo_Data
     */
    public function setItem($item, $id = null)
    {
        $item = $this->_normalizeItem($item, $id);
        $this->_items[$item['id']] = $item['data'];
        return $this;
    }

    /**
     * Add an individual item, optionally by identifier
     *
     * @param  array|object $item
     * @param  string|null $id
     * @return Zend_Dojo_Data
     */
    public function addItem($item, $id = null)
    {
        $item = $this->_normalizeItem($item, $id);

        if ($this->hasItem($item['id'])) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Overwriting items using addItem() is not allowed');
        }

        $this->_items[$item['id']] = $item['data'];

        return $this;
    }

    /**
     * Add multiple items at once
     *
     * @param  array|Traversable $items
     * @return Zend_Dojo_Data
     */
    public function addItems($items)
    {
        if (!is_array($items) && (!is_object($items) || !($items instanceof Traversable))) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Only arrays and Traversable objects may be added to ' . __CLASS__);
        }

        foreach ($items as $item) {
            $this->addItem($item);
        }

        return $this;
    }

    /**
     * Get all items as an array
     *
     * Serializes items to arrays.
     *
     * @return array
     */
    public function getItems()
    {
        return $this->_items;
    }

    /**
     * Does an item with the given identifier exist?
     * 
     * @param  string|int $id 
     * @return bool
     */
    public function hasItem($id)
    {
        return array_key_exists($id, $this->_items);
    }

    /**
     * Retrieve an item by identifier
     *
     * Item retrieved will be flattened to an array.
     *
     * @param  string $id
     * @return array
     */
    public function getItem($id)
    {
        if (!$this->hasItem($id)) {
            return null;
        }

        return $this->_items[$id];
    }

    /**
     * Remove item by identifier
     *
     * @param  string $id
     * @return Zend_Dojo_Data
     */
    public function removeItem($id)
    {
        if ($this->hasItem($id)) {
            unset($this->_items[$id]);
        }

        return $this;
    }

    /**
     * Remove all items at once
     *
     * @return Zend_Dojo_Data
     */
    public function clearItems()
    {
        $this->_items = array();
        return $this;
    }

 
    /**
     * Set identifier for item lookups
     *
     * @param  string|int|null $identifier
     * @return Zend_Dojo_Data
     */
    public function setIdentifier($identifier)
    {
        if (null === $identifier) {
            $this->_identifier = null;
        } elseif (is_string($identifier)) {
            $this->_identifier = $identifier;
        } elseif (is_numeric($identifier)) {
            $this->_identifier = (int) $identifier;
        } else {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Invalid identifier; please use a string or integer');
        }

        return $this;
    }

    /**
     * Retrieve current item identifier
     *
     * @return string|int|null
     */
    public function getIdentifier()
    {
        return $this->_identifier;
    }

 
    /**
     * Set label to use for displaying item associations
     *
     * @param  string|null $label
     * @return Zend_Dojo_Data
     */
    public function setLabel($label)
    {
        if (null === $label) {
            $this->_label = null;
        } else {
            $this->_label = (string) $label;
        }
        return $this;
    }

    /**
     * Retrieve item association label
     *
     * @return string|null
     */
    public function getLabel()
    {
        return $this->_label;
    }

    /**
     * Set metadata by key or en masse
     * 
     * @param  string|array $spec 
     * @param  mixed $value 
     * @return Zend_Dojo_Data
     */
    public function setMetadata($spec, $value = null)
    {
        if (is_string($spec) && (null !== $value)) {
            $this->_metadata[$spec] = $value;
        } elseif (is_array($spec)) {
            foreach ($spec as $key => $value) {
                $this->setMetadata($key, $value);
            }
        }
        return $this;
    }

    /**
     * Get metadata item or all metadata
     * 
     * @param  null|string $key Metadata key when pulling single metadata item
     * @return mixed
     */
    public function getMetadata($key = null)
    {
        if (null === $key) {
            return $this->_metadata;
        }

        if (array_key_exists($key, $this->_metadata)) {
            return $this->_metadata[$key];
        }

        return null;
    }

    /**
     * Clear individual or all metadata item(s)
     * 
     * @param  null|string $key 
     * @return Zend_Dojo_Data
     */
    public function clearMetadata($key = null)
    {
        if (null === $key) {
            $this->_metadata = array();
        } elseif (array_key_exists($key, $this->_metadata)) {
            unset($this->_metadata[$key]);
        }
        return $this;
    }

    /**
     * Load object from array
     * 
     * @param  array $data 
     * @return Zend_Dojo_Data
     */
    public function fromArray(array $data)
    {
        if (array_key_exists('identifier', $data)) {
            $this->setIdentifier($data['identifier']);
        }
        if (array_key_exists('label', $data)) {
            $this->setLabel($data['label']);
        }
        if (array_key_exists('items', $data) && is_array($data['items'])) {
            $this->setItems($data['items']);
        } else {
            $this->clearItems();
        }
        return $this;
    }

    /**
     * Load object from JSON
     * 
     * @param  string $json 
     * @return Zend_Dojo_Data
     */
    public function fromJson($json)
    {
        if (!is_string($json)) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('fromJson() expects JSON input');
        }
        require_once 'Zend/Json.php';
        $data = Zend_Json::decode($json);
        return $this->fromArray($data);
    }

    /**
     * Seralize entire data structure, including identifier and label, to array
     * 
     * @return array
     */
    public function toArray()
    {
        if (null === ($identifier = $this->getIdentifier())) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Serialization requires that an identifier be present in the object; first call setIdentifier()');
        }

        $array = array(
            'identifier' => $identifier,
            'items'      => array_values($this->getItems()),
        );

        $metadata = $this->getMetadata();
        if (!empty($metadata)) {
            foreach ($metadata as $key => $value) {
                $array[$key] = $value;
            }
        }

        if (null !== ($label = $this->getLabel())) {
            $array['label'] = $label;
        }

        return $array;
    }
 
    /**
     * Serialize to JSON (dojo.data format)
     *
     * @return string
     */
    public function toJson()
    {
        require_once 'Zend/Json.php';
        return Zend_Json::encode($this->toArray());
    }

    /**
     * Serialize to string (proxy to {@link toJson()})
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toJson();
    }

    /**
     * ArrayAccess: does offset exist?
     *
     * @param  string|int $offset
     * @return bool
     */
    public function offsetExists($offset)
    {
        return (null !== $this->getItem($offset));
    }

    /**
     * ArrayAccess: retrieve by offset
     *
     * @param  string|int $offset
     * @return array
     */
    public function offsetGet($offset)
    {
        return $this->getItem($offset);
    }

    /**
     * ArrayAccess: set value by offset
     *
     * @param  string $offset
     * @param  array|object|null $value
     * @return void
     */
    public function offsetSet($offset, $value)
    {
        $this->setItem($value, $offset);
    }

    /**
     * ArrayAccess: unset value by offset
     *
     * @param  string $offset
     * @return void
     */
    public function offsetUnset($offset)
    {
        $this->removeItem($offset);
    }

    /**
     * Iterator: get current value
     *
     * @return array
     */
    public function current()
    {
        return current($this->_items);
    }

    /**
     * Iterator: get current key
     *
     * @return string|int
     */
    public function key()
    {
        return key($this->_items);
    }

    /**
     * Iterator: get next item
     *
     * @return void
     */
    public function next()
    {
        return next($this->_items);
    }

    /**
     * Iterator: rewind to first value in collection
     *
     * @return void
     */
    public function rewind()
    {
        return reset($this->_items);
    }

    /**
     * Iterator: is item valid?
     *
     * @return bool
     */
    public function valid()
    {
        return (bool) $this->current();
    }

    /**
     * Countable: how many items are present
     *
     * @return int
     */
    public function count()
    {
        return count($this->_items);
    }

    /**
     * Normalize an item to attach to the collection 
     * 
     * @param  array|object $item 
     * @param  string|int|null $id 
     * @return array
     */
    protected function _normalizeItem($item, $id)
    {
        if (null === ($identifier = $this->getIdentifier())) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('You must set an identifier prior to adding items');
        }

        if (!is_object($item) && !is_array($item)) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Only arrays and objects may be attached');
        }

        if (is_object($item)) {
            if (method_exists($item, 'toArray')) {
                $item = $item->toArray();
            } else {
                $item = get_object_vars($item);
            }
        }

        if ((null === $id) && !array_key_exists($identifier, $item)) {
            require_once 'Zend/Dojo/Exception.php';
            throw new Zend_Dojo_Exception('Item must contain a column matching the currently set identifier');
        } elseif (null === $id) {
            $id = $item[$identifier];
        } else {
            $item[$identifier] = $id;
        }

        return array(
            'id'   => $id,
            'data' => $item,
        );
    }
} 
PKpG[���77
Dojo/Form.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form */
require_once 'Zend/Form.php';

/**
 * Dijit-enabled Form
 * 
 * @uses       Zend_Form
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Form.php 12373 2008-11-07 16:52:44Z matthew $
 */
class Zend_Dojo_Form extends Zend_Form
{
    /**
     * Constructor
     * 
     * @param  array|Zend_Config|null $options 
     * @return void
     */
    public function __construct($options = null)
    {
        $this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addPrefixPath('Zend_Dojo_Form_Element', 'Zend/Dojo/Form/Element', 'element')
             ->addElementPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addDisplayGroupPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator')
             ->setDefaultDisplayGroupClass('Zend_Dojo_Form_DisplayGroup');
        parent::__construct($options);
    }

    /**
     * Load the default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('FormElements')
                 ->addDecorator('HtmlTag', array('tag' => 'dl', 'class' => 'zend_form_dojo'))
                 ->addDecorator('DijitForm');
        }
    }

    /**
     * Set the view object
     *
     * Ensures that the view object has the dojo view helper path set.
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function setView(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
                $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
            }
        }
        return parent::setView($view);
    }
}
PKpG[���c��!Dojo/Form/Decorator/DijitForm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * Zend_Dojo_Form_Decorator_DijitForm
 *
 * Render a dojo form dijit via a view helper
 *
 * Accepts the following options:
 * - helper:    the name of the view helper to use
 *
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DijitForm.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_DijitForm extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * Render a form
     *
     * Replaces $content entirely from currently set element.
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $dijitParams = $this->getDijitParams();
        $attribs     = array_merge($this->getAttribs(), $this->getOptions());

        return $view->form($element->getName(), $attribs, $content); 
    }
}
PKpG[�B?^��$Dojo/Form/Decorator/DijitElement.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_ViewHelper */
require_once 'Zend/Form/Decorator/ViewHelper.php';

/**
 * Zend_Dojo_Form_Decorator_DijitElement
 *
 * Render a dojo dijit element via a view helper
 *
 * Accepts the following options:
 * - separator: string with which to separate passed in content and generated content
 * - placement: whether to append or prepend the generated content to the passed in content
 * - helper:    the name of the view helper to use
 *
 * Assumes the view helper accepts three parameters, the name, value, and 
 * optional attributes; these will be provided by the element.
 * 
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DijitElement.php 12690 2008-11-18 18:45:28Z alexander $
 */
class Zend_Dojo_Form_Decorator_DijitElement extends Zend_Form_Decorator_ViewHelper
{
    /**
     * Element attributes
     * @var array
     */
    protected $_attribs;

    /**
     * Element types that represent buttons
     * @var array
     */
    protected $_buttonTypes = array(
        'Zend_Dojo_Form_Element_Button',
        'Zend_Form_Element_Button',
        'Zend_Form_Element_Reset',
        'Zend_Form_Element_Submit',
    );

    /**
     * Dijit option parameters
     * @var array
     */
    protected $_dijitParams = array();

    /**
     * Get element attributes
     * 
     * @return array
     */
    public function getElementAttribs()
    {
        if (null === $this->_attribs) {
            $this->_attribs = parent::getElementAttribs();
            if (array_key_exists('dijitParams', $this->_attribs)) {
                $this->setDijitParams($this->_attribs['dijitParams']);
                unset($this->_attribs['dijitParams']);
            }
        }

        return $this->_attribs;
    }

    /**
     * Set a single dijit option parameter
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Dojo_Form_Decorator_DijitContainer
     */
    public function setDijitParam($key, $value)
    {
        $this->_dijitParams[(string) $key] = $value;
        return $this;
    }

    /**
     * Set dijit option parameters
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Decorator_DijitContainer
     */
    public function setDijitParams(array $params)
    {
        $this->_dijitParams = array_merge($this->_dijitParams, $params);
        return $this;
    }

    /**
     * Retrieve a single dijit option parameter
     * 
     * @param  string $key 
     * @return mixed|null
     */
    public function getDijitParam($key)
    {
        $this->getElementAttribs();
        $key = (string) $key;
        if (array_key_exists($key, $this->_dijitParams)) {
            return $this->_dijitParams[$key];
        }

        return null;
    }

    /**
     * Get dijit option parameters
     * 
     * @return array
     */
    public function getDijitParams()
    {
        $this->getElementAttribs();
        return $this->_dijitParams;
    }

    /**
     * Render an element using a view helper
     *
     * Determine view helper from 'helper' option, or, if none set, from 
     * the element type. Then call as 
     * helper($element->getName(), $element->getValue(), $element->getAttribs())
     * 
     * @param  string $content
     * @return string
     * @throws Zend_Form_Decorator_Exception if element or view are not registered
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view = $element->getView();
        if (null === $view) {
            require_once 'Zend/Form/Decorator/Exception.php';
            throw new Zend_Form_Decorator_Exception('DijitElement decorator cannot render without a registered view object');
        }

        $options = null;
        $helper    = $this->getHelper();
        $separator = $this->getSeparator();
        $value     = $this->getValue($element);
        $attribs   = $this->getElementAttribs();
        $name      = $element->getFullyQualifiedName();

        $dijitParams = $this->getDijitParams();
        if ($element->isRequired()) {
            $dijitParams['required'] = true;
        }

        $id = $element->getId();
        if ($view->dojo()->hasDijit($id)) {
            trigger_error(sprintf('Duplicate dijit ID detected for id "%s; temporarily generating uniqid"', $id), E_USER_NOTICE);
            $base = $id;
            do {
                $id = $base . '-' . uniqid();
            } while ($view->dojo()->hasDijit($id));
        }
        $attribs['id'] = $id;
        
        if (array_key_exists('options', $attribs)) {
       		$options = $attribs['options'];
        }
        
        $elementContent = $view->$helper($name, $value, $dijitParams, $attribs, $options);
        switch ($this->getPlacement()) {
            case self::APPEND:
                return $content . $separator . $elementContent;
            case self::PREPEND:
                return $elementContent . $separator . $content;
            default:
                return $elementContent;
        }
    }
}
PKpG[l��uu&Dojo/Form/Decorator/SplitContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * SplitContainer
 *
 * Render a dijit SplitContainer
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SplitContainer.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_SplitContainer extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'SplitContainer';
}
PKpG["غ�&Dojo/Form/Decorator/DijitContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Decorator_Abstract */
require_once 'Zend/Form/Decorator/Abstract.php';

/**
 * Zend_Dojo_Form_Decorator_DijitContainer
 *
 * Render a dojo dijit layout container via a view helper
 *
 * Accepts the following options:
 * - helper:    the name of the view helper to use
 *
 * Assumes the view helper accepts four parameters, the id, content, dijit 
 * parameters, and (X)HTML attributes; these will be provided by the element.
 * 
 * @uses       Zend_Form_Decorator_Abstract
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DijitContainer.php 10032 2008-07-10 16:47:19Z matthew $
 */
abstract class Zend_Dojo_Form_Decorator_DijitContainer extends Zend_Form_Decorator_Abstract
{
    /**
     * View helper
     * @var string
     */
    protected $_helper;

    /**
     * Element attributes 
     * @var array
     */
    protected $_attribs;

    /**
     * Dijit option parameters
     * @var array
     */
    protected $_dijitParams;

    /**
     * Container title
     * @var string
     */
    protected $_title;

    /**
     * Get view helper for rendering container
     * 
     * @return string
     */
    public function getHelper()
    {
        if (null === $this->_helper) {
            require_once 'Zend/Form/Decorator/Exception.php';
            throw new Zend_Form_Decorator_Exception('No view helper specified fo DijitContainer decorator');
        }
        return $this->_helper;
    }

    /**
     * Get element attributes 
     * 
     * @return array
     */
    public function getAttribs()
    {
        if (null === $this->_attribs) {
            $attribs = $this->getElement()->getAttribs();
            if (array_key_exists('dijitParams', $attribs)) {
                unset($attribs['dijitParams']);
            }
            $this->_attribs = $attribs;
        }
        return $this->_attribs;
    }

    /**
     * Get dijit option parameters
     * 
     * @return array
     */
    public function getDijitParams()
    {
        if (null === $this->_dijitParams) {
            $attribs = $this->getElement()->getAttribs();
            if (array_key_exists('dijitParams', $attribs)) {
                $this->_dijitParams = $attribs['dijitParams'];
            } else {
                $this->_dijitParams = array();
            }

            $options = $this->getOptions();
            if (array_key_exists('dijitParams', $options)) {
                $this->_dijitParams = array_merge($this->_dijitParams, $options['dijitParams']);
                $this->removeOption('dijitParams');
            }
        }

        // Ensure we have a title param
        if (!array_key_exists('title', $this->_dijitParams)) {
            $this->_dijitParams['title'] = $this->getTitle();
        }

        return $this->_dijitParams;
    }

    /**
     * Get title
     * 
     * @return string
     */
    public function getTitle()
    {
        if (null === $this->_title) {
            $title = null;
            if (null !== ($element = $this->getElement())) {
                if (method_exists($element, 'getLegend')) {
                    $title = $element->getLegend();
                }
            }
            if (empty($title) && (null !== ($title = $this->getOption('legend')))) {
                $this->removeOption('legend');
            }
            if (empty($title) && (null !== ($title = $this->getOption('title')))) {
                $this->removeOption('title');
            }

            if (!empty($title)) {
                if (null !== ($translator = $element->getTranslator())) {
                    $title = $translator->translate($title);
                }
                $this->_title = $title;
            }
        }

        return (empty($this->_title) ? '' : $this->_title);
    }

    /**
     * Render a dijit layout container
     *
     * Replaces $content entirely from currently set element.
     * 
     * @param  string $content 
     * @return string
     */
    public function render($content)
    {
        $element = $this->getElement();
        $view    = $element->getView();
        if (null === $view) {
            return $content;
        }

        $dijitParams = $this->getDijitParams();
        $attribs     = array_merge($this->getAttribs(), $this->getOptions());

        if (array_key_exists('legend', $attribs)) {
            if (!array_key_exists('title', $dijitParams) || empty($dijitParams['title'])) {
                $dijitParams['title'] = $attribs['legend'];
            }
            unset($attribs['legend']);
        }

        $helper      = $this->getHelper();
        $id          = $element->getId() . '-' . $helper;

        if ($view->dojo()->hasDijit($id)) {
            trigger_error(sprintf('Duplicate dijit ID detected for id "%s; temporarily generating uniqid"', $id), E_USER_WARNING);
            $base = $id;
            do {
                $id = $base . '-' . uniqid();
            } while ($view->dojo()->hasDijit($id));
        }

        return $view->$helper($id, $content, $dijitParams, $attribs); 
    }
}
PKpG[)�zz'Dojo/Form/Decorator/BorderContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * BorderContainer
 *
 * Render a dijit BorderContainer
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: BorderContainer.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_BorderContainer extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'BorderContainer';
}
PKpG[�h��*Dojo/Form/Decorator/AccordionContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * AccordionContainer
 *
 * Render a dijit AccordionContainer
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AccordionContainer.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_AccordionContainer extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'AccordionContainer';
}
PKpG[:�t�pp%Dojo/Form/Decorator/AccordionPane.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * AccordionPane
 *
 * Render a dijit AccordionPane
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AccordionPane.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_AccordionPane extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'AccordionPane';
}
PKpG[J��svv&Dojo/Form/Decorator/StackContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * StackContainer
 *
 * Render a dijit StackContainer
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StackContainer.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_StackContainer extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'StackContainer';
}

PKpG[�&�kk$Dojo/Form/Decorator/TabContainer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * TabContainer
 *
 * Render a dijit TabContainer
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TabContainer.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_TabContainer extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'TabContainer';
}
PKpG[��ff#Dojo/Form/Decorator/ContentPane.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Decorator_DijitContainer */
require_once 'Zend/Dojo/Form/Decorator/DijitContainer.php';

/**
 * ContentPane
 *
 * Render a dijit ContentPane
 *
 * @uses       Zend_Dojo_Form_Decorator_DijitContainer
 * @package    Zend_Dojo
 * @subpackage Form_Decorator
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ContentPane.php 10009 2008-07-09 16:52:18Z matthew $
 */
class Zend_Dojo_Form_Decorator_ContentPane extends Zend_Dojo_Form_Decorator_DijitContainer
{
    /**
     * View helper
     * @var string
     */
    protected $_helper = 'ContentPane';
}
PKpG[�m:��Dojo/Form/DisplayGroup.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_DisplayGroup */
require_once 'Zend/Form/DisplayGroup.php';

/**
 * Dijit-enabled DisplayGroup
 * 
 * @uses       Zend_Form_DisplayGroup
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DisplayGroup.php 10076 2008-07-13 12:58:08Z matthew $
 */
class Zend_Dojo_Form_DisplayGroup extends Zend_Form_DisplayGroup
{
    /**
     * Constructor
     * 
     * @param  string $name
     * @param  Zend_Loader_PluginLoader $loader
     * @param  array|Zend_Config|null $options 
     * @return void
     */
    public function __construct($name, Zend_Loader_PluginLoader $loader, $options = null)
    {
        parent::__construct($name, $loader, $options);
        $this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator');
    }

    /**
     * Set the view object
     *
     * Ensures that the view object has the dojo view helper path set.
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function setView(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
                $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
            }
        }
        return parent::setView($view);
    }
}
PKpG[B��Ї�Dojo/Form/Element/CheckBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * CheckBox dijit
 *
 * Note: this would be easier with mixins or traits...
 * 
 * @uses       Zend_Dojo_Form_Element_Dijit
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CheckBox.php 10001 2008-07-08 21:26:09Z matthew $
 */
class Zend_Dojo_Form_Element_CheckBox extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Is the checkbox checked?
     * @var bool
     */
    public $checked = false;

    /**
     * Use formCheckbox view helper by default
     * @var string
     */
    public $helper = 'CheckBox';

    /**
     * Value when checked
     * @var string
     */
    protected $_checkedValue = '1';

    /**
     * Value when not checked
     * @var string
     */
    protected $_uncheckedValue = '0';

    /**
     * Current value
     * @var string 0 or 1
     */
    protected $_value = '0';

    /**
     * Set options
     *
     * Intercept checked and unchecked values and set them early; test stored 
     * value against checked and unchecked values after configuration.
     * 
     * @param  array $options 
     * @return Zend_Form_Element_Checkbox
     */
    public function setOptions(array $options)
    {
        if (array_key_exists('checkedValue', $options)) {
            $this->setCheckedValue($options['checkedValue']);
            unset($options['checkedValue']);
        }
        if (array_key_exists('uncheckedValue', $options)) {
            $this->setUncheckedValue($options['uncheckedValue']);
            unset($options['uncheckedValue']);
        }
        parent::setOptions($options);

        $curValue = $this->getValue();
        $test     = array($this->getCheckedValue(), $this->getUncheckedValue());
        if (!in_array($curValue, $test)) {
            $this->setValue($curValue);
        }

        return $this;
    }

    /**
     * Set value
     *
     * If value matches checked value, sets to that value, and sets the checked
     * flag to true.
     *
     * Any other value causes the unchecked value to be set as the current 
     * value, and the checked flag to be set as false.
     *
     * 
     * @param  mixed $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setValue($value)
    {
        if ($value == $this->getCheckedValue()) {
            parent::setValue($value);
            $this->checked = true;
        } else {
            parent::setValue($this->getUncheckedValue());
            $this->checked = false;
        }
        return $this;
    }

    /**
     * Set checked value
     * 
     * @param  string $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setCheckedValue($value)
    {
        $this->_checkedValue = (string) $value;
        return $this;
    }

    /**
     * Get value when checked
     * 
     * @return string
     */
    public function getCheckedValue()
    {
        return $this->_checkedValue;
    }

    /**
     * Set unchecked value
     * 
     * @param  string $value 
     * @return Zend_Form_Element_Checkbox
     */
    public function setUncheckedValue($value)
    {
        $this->_uncheckedValue = (string) $value;
        return $this;
    }

    /**
     * Get value when not checked
     * 
     * @return string
     */
    public function getUncheckedValue()
    {
        return $this->_uncheckedValue;
    }

    /**
     * Set checked flag
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element_Checkbox
     */
    public function setChecked($flag)
    {
        $this->checked = (bool) $flag;
        if ($this->checked) {
            $this->setValue($this->getCheckedValue());
        } else {
            $this->setValue($this->getUncheckedValue());
        }
        return $this;
    }

    /**
     * Get checked flag
     * 
     * @return bool
     */
    public function isChecked()
    {
        return $this->checked;
    }

    /**
     * Render
     *
     * Ensure that options property is set when rendering.
     * 
     * @param  Zend_View_Interface $view 
     * @return string
     */
    public function render(Zend_View_Interface $view = null)
    {
        $this->options = array(
            'checked'   => $this->getCheckedValue(),
            'unChecked' => $this->getUncheckedValue(),
        );
        return parent::render($view);
    }
}

PKpG[2�u�^^!Dojo/Form/Element/RadioButton.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_DijitMulti */
require_once 'Zend/Dojo/Form/Element/DijitMulti.php';

/**
 * RadioButton dijit
 * 
 * @uses       Zend_Dojo_Form_Element_DijitMulti
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: RadioButton.php 10003 2008-07-09 02:40:49Z matthew $
 */
class Zend_Dojo_Form_Element_RadioButton extends Zend_Dojo_Form_Element_DijitMulti
{
    /**
     * Use RadioButton dijit view helper
     * @var string
     */
    public $helper = 'RadioButton';
}
PKpG[t���33#Dojo/Form/Element/NumberSpinner.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_ValidationTextBox */
require_once 'Zend/Dojo/Form/Element/ValidationTextBox.php';

/**
 * NumberSpinner dijit
 * 
 * @uses       Zend_Dojo_Form_Element_ValidationTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NumberSpinner.php 10069 2008-07-12 23:48:03Z matthew $
 */
class Zend_Dojo_Form_Element_NumberSpinner extends Zend_Dojo_Form_Element_ValidationTextBox
{
    /**
     * Use NumberSpinner dijit view helper
     * @var string
     */
    public $helper = 'NumberSpinner';

    /**
     * Set defaultTimeout
     *
     * @param  int $timeout
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setDefaultTimeout($timeout)
    {
        $this->setDijitParam('defaultTimeout', (int) $timeout);
        return $this;
    }

    /**
     * Retrieve defaultTimeout
     *
     * @return int|null
     */
    public function getDefaultTimeout()
    {
        return $this->getDijitParam('defaultTimeout');
    }

    /**
     * Set timeoutChangeRate
     *
     * @param  int $rate
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setTimeoutChangeRate($rate)
    {
        $this->setDijitParam('timeoutChangeRate', (int) $rate);
        return $this;
    }

    /**
     * Retrieve timeoutChangeRate
     *
     * @return int|null
     */
    public function getTimeoutChangeRate()
    {
        return $this->getDijitParam('timeoutChangeRate');
    }

    /**
     * Set largeDelta
     *
     * @param  int $delta
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setLargeDelta($delta)
    {
        $this->setDijitParam('largeDelta', (int) $delta);
        return $this;
    }

    /**
     * Retrieve largeDelta
     *
     * @return int|null
     */
    public function getLargeDelta()
    {
        return $this->getDijitParam('largeDelta');
    }

    /**
     * Set smallDelta
     *
     * @param  int $delta
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setSmallDelta($delta)
    {
        $this->setDijitParam('smallDelta', (int) $delta);
        return $this;
    }

    /**
     * Retrieve smallDelta
     *
     * @return int|null
     */
    public function getSmallDelta()
    {
        return $this->getDijitParam('smallDelta');
    }

    /**
     * Set intermediateChanges flag
     *
     * @param  bool $flag
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setIntermediateChanges($flag)
    {
        $this->setDijitParam('intermediateChanges', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve intermediateChanges flag
     *
     * @return bool
     */
    public function getIntermediateChanges()
    {
        if (!$this->hasDijitParam('intermediateChanges')) {
            return false;
        }
        return $this->getDijitParam('intermediateChanges');
    }

    /**
     * Set rangeMessage
     *
     * @param  string $message
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setRangeMessage($message)
    {
        $this->setDijitParam('rangeMessage', (string) $message);
        return $this;
    }

    /**
     * Retrieve rangeMessage
     *
     * @return string|null
     */
    public function getRangeMessage()
    {
        return $this->getDijitParam('rangeMessage');
    }

    /**
     * Set minimum value
     * 
     * @param  int $value 
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setMin($value)
    {
        $constraints = array();
        if ($this->hasDijitParam('constraints')) {
            $constraints = $this->getDijitParam('constraints');
        }
        $constraints['min'] = (int) $value;
        $this->setDijitParam('constraints', $constraints);
        return $this;
    }

    /**
     * Get minimum value
     * 
     * @return null|int
     */
    public function getMin()
    {
        if (!$this->hasDijitParam('constraints')) {
            return null;
        }
        $constraints = $this->getDijitParam('constraints');
        if (!array_key_exists('min', $constraints)) {
            return null;
        }
        return $constraints['min'];
    }

    /**
     * Set maximum value
     * 
     * @param  int $value 
     * @return Zend_Dojo_Form_Element_NumberSpinner
     */
    public function setMax($value)
    {
        $constraints = array();
        if ($this->hasDijitParam('constraints')) {
            $constraints = $this->getDijitParam('constraints');
        }
        $constraints['max'] = (int) $value;
        $this->setDijitParam('constraints', $constraints);
        return $this;
    }

    /**
     * Get maximum value
     * 
     * @return null|int
     */
    public function getMax()
    {
        if (!$this->hasDijitParam('constraints')) {
            return null;
        }
        $constraints = $this->getDijitParam('constraints');
        if (!array_key_exists('max', $constraints)) {
            return null;
        }
        return $constraints['max'];
    }
}
PKpG[~�1ח�%Dojo/Form/Element/CurrencyTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_NumberTextBox */
require_once 'Zend/Dojo/Form/Element/NumberTextBox.php';

/**
 * CurrencyTextBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_NumberTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CurrencyTextBox.php 10079 2008-07-14 10:56:37Z matthew $
 */
class Zend_Dojo_Form_Element_CurrencyTextBox extends Zend_Dojo_Form_Element_NumberTextBox
{
    /**
     * Use CurrencyTextBox dijit view helper
     * @var string
     */
    public $helper = 'CurrencyTextBox';

    /**
     * Set currency
     *
     * @param  string $currency
     * @return Zend_Dojo_Form_Element_CurrencyTextBox
     */
    public function setCurrency($currency)
    {
        $this->setDijitParam('currency', (string) $currency);
        return $this;
    }

    /**
     * Retrieve currency
     *
     * @return string|null
     */
    public function getCurrency()
    {
        return $this->getDijitParam('currency');
    }

    /**
     * Set currency symbol
     *
     * Casts to string, uppercases, and trims to three characters.
     *
     * @param  string $symbol
     * @return Zend_Dojo_Form_Element_CurrencyTextBox
     */
    public function setSymbol($symbol)
    {
        $symbol = strtoupper((string) $symbol);
        $length = strlen($symbol);
        if (3 > $length) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception('Invalid symbol provided; please provide ISO 4217 alphabetic currency code');
        }
        if (3 < $length) {
            $symbol = substr($symbol, 0, 3);
        }

        $this->setConstraint('symbol', $symbol);
        return $this;
    }

    /**
     * Retrieve symbol
     *
     * @return string|null
     */
    public function getSymbol()
    {
        return $this->getConstraint('symbol');
    }

    /**
     * Set whether currency is fractional
     *
     * @param  bool $flag
     * @return Zend_Dojo_Form_Element_CurrencyTextBox
     */
    public function setFractional($flag)
    {
        $this->setConstraint('fractional', (bool) $flag);
        return $this;
    }

    /**
     * Get whether or not to present fractional values
     * 
     * @return bool
     */
    public function getFractional()
    {
        return ('true' == $this->getConstraint('fractional'));
    }
}
PKpG[.��##Dojo/Form/Element/Textarea.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * Textarea dijit
 * 
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Textarea.php 10001 2008-07-08 21:26:09Z matthew $
 */
class Zend_Dojo_Form_Element_Textarea extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Use Textarea dijit view helper
     * @var string
     */
    public $helper = 'Textarea';
}
PKpG[�1z  #Dojo/Form/Element/NumberTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_ValidationTextBox */
require_once 'Zend/Dojo/Form/Element/ValidationTextBox.php';

/**
 * NumberTextBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_ValidationTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NumberTextBox.php 10079 2008-07-14 10:56:37Z matthew $
 */
class Zend_Dojo_Form_Element_NumberTextBox extends Zend_Dojo_Form_Element_ValidationTextBox
{
    /**
     * Use NumberTextBox dijit view helper
     * @var string
     */
    public $helper = 'NumberTextBox';

    /**
     * Allowed numeric type formats
     * @var array
     */
    protected $_allowedTypes = array(
        'decimal',
        'scientific',
        'percent',
        'currency',
    );

    /**
     * Set locale
     *
     * @param  string $locale
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setLocale($locale)
    {
        $this->setConstraint('locale', (string) $locale);
        return $this;
    }

    /**
     * Retrieve locale
     *
     * @return string|null
     */
    public function getLocale()
    {
        return $this->getConstraint('locale');
    }

    /**
     * Set numeric format pattern
     *
     * @param  string $pattern
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setPattern($pattern)
    {
        $this->setConstraint('pattern', (string) $pattern);
        return $this;
    }

    /**
     * Retrieve numeric format pattern
     *
     * @return string|null
     */
    public function getPattern()
    {
        return $this->getConstraint('pattern');
    }

    /**
     * Set numeric format type
     *
     * @see    $_allowedTypes
     * @param  string $type
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setType($type)
    {
        $type = strtolower($type);
        if (!in_array($type, $this->_allowedTypes)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception(sprintf('Invalid numeric type "%s" specified', $type));
        }

        $this->setConstraint('type', $type);
        return $this;
    }

    /**
     * Retrieve type
     *
     * @return string|null
     */
    public function getType()
    {
        return $this->getConstraint('type');
    }

    /**
     * Set decimal places
     *
     * @param  int $places
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setPlaces($places)
    {
        $this->setConstraint('places', (int) $places);
        return $this;
    }

    /**
     * Retrieve decimal places
     *
     * @return int|null
     */
    public function getPlaces()
    {
        return $this->getConstraint('places');
    }

    /**
     * Set strict flag
     *
     * @param  bool $strict
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setStrict($flag)
    {
        $this->setConstraint('strict', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve strict flag
     *
     * @return bool
     */
    public function getStrict()
    {
        if (!$this->hasConstraint('strict')) {
            return false;
        }
        return ('true' == $this->getConstraint('strict'));
    }
}
PKpG[�*���!Dojo/Form/Element/TimeTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_DateTextBox */
require_once 'Zend/Dojo/Form/Element/DateTextBox.php';

/**
 * TimeTextBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_DateTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TimeTextBox.php 10079 2008-07-14 10:56:37Z matthew $
 */
class Zend_Dojo_Form_Element_TimeTextBox extends Zend_Dojo_Form_Element_DateTextBox
{
    /**
     * Use TimeTextBox dijit view helper
     * @var string
     */
    public $helper = 'TimeTextBox';

    /**
     * Validate ISO 8601 time format
     * 
     * @param  string $format 
     * @return true
     * @throws Zend_Form_Element_Exception
     */
    protected function _validateIso8601($format)
    {
        if (!preg_match('/^T\d{2}:\d{2}:\d{2}$/', $format)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception(sprintf('Invalid format "%s" provided; must match T:00:00:00 format', $format));
        }
        return true;
    }

    /**
     * Set time format pattern
     *
     * @param  string $pattern
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setTimePattern($pattern)
    {
        $this->setConstraint('timePattern', (string) $pattern);
        return $this;
    }

    /**
     * Retrieve time format pattern
     *
     * @return string|null
     */
    public function getTimePattern()
    {
        return $this->getConstraint('timePattern');
    }

    /**
     * Set clickableIncrement
     *
     * @param  string $format
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setClickableIncrement($format)
    {
        $format = (string) $format;
        $this->_validateIso8601($format);
        $this->setConstraint('clickableIncrement', $format);
        return $this;
    }

    /**
     * Retrieve clickableIncrement
     *
     * @return string|null
     */
    public function getClickableIncrement()
    {
        return $this->getConstraint('clickableIncrement');
    }

    /**
     * Set visibleIncrement
     *
     * @param  string $format
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setVisibleIncrement($format)
    {
        $format = (string) $format;
        $this->_validateIso8601($format);
        $this->setConstraint('visibleIncrement', $format);
        return $this;
    }

    /**
     * Retrieve visibleIncrement
     *
     * @return string|null
     */
    public function getVisibleIncrement()
    {
        return $this->getConstraint('visibleIncrement');
    }

    /**
     * Set visibleRange
     *
     * @param  string $format
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setVisibleRange($format)
    {
        $format = (string) $format;
        $this->_validateIso8601($format);
        $this->setConstraint('visibleRange', $format);
        return $this;
    }

    /**
     * Retrieve visibleRange
     *
     * @return string|null
     */
    public function getVisibleRange()
    {
        return $this->getConstraint('visibleRange');
    }
}
PKpG[`�j��Dojo/Form/Element/Dijit.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_Element */
require_once 'Zend/Form/Element.php';

/**
 * Base element for dijit elements
 * 
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Dijit.php 13261 2008-12-15 14:32:20Z matthew $
 */
abstract class Zend_Dojo_Form_Element_Dijit extends Zend_Form_Element
{
    /**
     * Dijit parameters
     * @var array
     */
    public $dijitParams = array();

    /**
     * View helper to use
     * @var string
     */
    public $helper;

    /**
     * Constructor
     * 
     * @todo Should we set dojo view helper paths here?
     * @param  mixed $spec 
     * @param  mixed $options 
     * @return void
     */
    public function __construct($spec, $options = null)
    {
        $this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator');
        parent::__construct($spec, $options);
    }

    /**
     * Set a dijit parameter
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function setDijitParam($key, $value)
    {
        $key = (string) $key;
        $this->dijitParams[$key] = $value;
        return $this;
    }

    /**
     * Set multiple dijit params at once
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function setDijitParams(array $params)
    {
        $this->dijitParams = array_merge($this->dijitParams, $params);
        return $this;
    }

    /**
     * Does the given dijit parameter exist?
     * 
     * @param  string $key 
     * @return bool
     */
    public function hasDijitParam($key)
    {
        return array_key_exists($key, $this->dijitParams);
    }

    /**
     * Get a single dijit parameter
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getDijitParam($key)
    {
        $key = (string) $key;
        if ($this->hasDijitParam($key)) {
            return $this->dijitParams[$key];
        }
        return null;
    }

    /**
     * Retrieve all dijit parameters
     * 
     * @return array
     */
    public function getDijitParams()
    {
        return $this->dijitParams;
    }

    /**
     * Remove a single dijit parameter
     * 
     * @param  string $key 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function removeDijitParam($key)
    {
        $key = (string) $key;
        if (array_key_exists($key, $this->dijitParams)) {
            unset($this->dijitParams[$key]);
        }
        return $this;
    }

    /**
     * Clear all dijit parameters
     * 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function clearDijitParams()
    {
        $this->dijitParams = array();
        return $this;
    }

    /**
     * Load default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('DijitElement')
                 ->addDecorator('Errors')
                 ->addDecorator('Description', array('tag' => 'p', 'class' => 'description'))
                 ->addDecorator('HtmlTag', array('tag' => 'dd'))
                 ->addDecorator('Label', array('tag' => 'dt'));
        }
    }

    /**
     * Set the view object
     *
     * Ensures that the view object has the dojo view helper path set.
     * 
     * @param  Zend_View_Interface $view 
     * @return Zend_Dojo_Form_Element_Dijit
     */
    public function setView(Zend_View_Interface $view = null)
    {
        if (null !== $view) {
            if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
                $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
            }
        }
        return parent::setView($view);
    }
}
PKpG[�V�D��Dojo/Form/Element/ComboBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_DijitMulti */
require_once 'Zend/Dojo/Form/Element/DijitMulti.php';

/**
 * ComboBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_DijitMulti
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ComboBox.php 10723 2008-08-06 15:30:18Z matthew $
 */
class Zend_Dojo_Form_Element_ComboBox extends Zend_Dojo_Form_Element_DijitMulti
{
    /**
     * Use ComboBox dijit view helper
     * @var string
     */
    public $helper = 'ComboBox';

    /**
     * Flag: autoregister inArray validator?
     * @var bool
     */
    protected $_registerInArrayValidator = false;

    /**
     * Get datastore information 
     * 
     * @return array
     */
    public function getStoreInfo()
    {
        if (!$this->hasDijitParam('store')) {
            $this->dijitParams['store'] = array();
        }
        return $this->dijitParams['store'];
    }

    /**
     * Set datastore identifier
     * 
     * @param  string $identifier 
     * @return Zend_Dojo_Form_Element_ComboBox
     */
    public function setStoreId($identifier)
    {
        $store = $this->getStoreInfo();
        $store['store'] = (string) $identifier;
        $this->setDijitParam('store', $store);
        return $this;
    }

    /**
     * Get datastore identifier 
     * 
     * @return string|null
     */
    public function getStoreId()
    {
        $store = $this->getStoreInfo();
        if (array_key_exists('store', $store)) {
            return $store['store'];
        }
        return null;
    }

    /**
     * Set datastore dijit type
     * 
     * @param  string $dojoType 
     * @return Zend_Dojo_Form_Element_ComboBox
     */
    public function setStoreType($dojoType)
    {
        $store = $this->getStoreInfo();
        $store['type'] = (string) $dojoType;
        $this->setDijitParam('store', $store);
        return $this;
    }

    /**
     * Get datastore dijit type 
     * 
     * @return string|null
     */
    public function getStoreType()
    {
        $store = $this->getStoreInfo();
        if (array_key_exists('type', $store)) {
            return $store['type'];
        }
        return null;
    }

    /**
     * Set datastore parameters
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_ComboBox
     */
    public function setStoreParams(array $params)
    {
        $store = $this->getStoreInfo();
        $store['params'] = $params;
        $this->setDijitParam('store', $store);
        return $this;
    }

    /**
     * Get datastore params
     * 
     * @return array
     */
    public function getStoreParams()
    {
        $store = $this->getStoreInfo();
        if (array_key_exists('params', $store)) {
            return $store['params'];
        }
        return array();
    }

    /**
     * Set autocomplete flag
     * 
     * @param  bool $flag 
     * @return Zend_Dojo_Form_Element_ComboBox
     */
    public function setAutocomplete($flag)
    {
        $this->setDijitParam('autocomplete', (bool) $flag);
        return $this;
    }

    /**
     * Get autocomplete flag
     * 
     * @return bool
     */
    public function getAutocomplete()
    {
        if (!$this->hasDijitParam('autocomplete')) {
            return false;
        }
        return $this->getDijitParam('autocomplete');
    }

    /**
     * Is the value valid?
     * 
     * @param  string $value 
     * @param  mixed $context 
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        $storeInfo = $this->getStoreInfo();
        if (!empty($storeInfo)) {
            $this->setRegisterInArrayValidator(false);
        }
        return parent::isValid($value, $context);
    }
}
PKpG[$H�cc!Dojo/Form/Element/DateTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_ValidationTextBox */
require_once 'Zend/Dojo/Form/Element/ValidationTextBox.php';

/**
 * DateTextBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_ValidationTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DateTextBox.php 10079 2008-07-14 10:56:37Z matthew $
 */
class Zend_Dojo_Form_Element_DateTextBox extends Zend_Dojo_Form_Element_ValidationTextBox
{
    /**
     * Use DateTextBox dijit view helper
     * @var string
     */
    public $helper = 'DateTextBox';

    /**
     * Allowed formatLength types
     * @var array
     */
    protected $_allowedFormatTypes = array(
        'long',
        'short',
        'medium',
        'full',
    );

    /**
     * Allowed selector types
     * @var array
     */
    protected $_allowedSelectorTypes = array(
        'time',
        'date',
    );

    /**
     * Set am,pm flag
     *
     * @param  bool $am,pm
     * @return Zend_Dojo_Form_Element_DateTextBox
     */
    public function setAmPm($flag)
    {
        $this->setConstraint('am,pm', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve am,pm flag
     *
     * @return bool
     */
    public function getAmPm()
    {
        if (!$this->hasConstraint('am,pm')) {
            return false;
        }
        return ('true' ==$this->getConstraint('am,pm'));
    }

    /**
     * Set strict flag
     *
     * @param  bool $strict
     * @return Zend_Dojo_Form_Element_DateTextBox
     */
    public function setStrict($flag)
    {
        $this->setConstraint('strict', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve strict flag
     *
     * @return bool
     */
    public function getStrict()
    {
        if (!$this->hasConstraint('strict')) {
            return false;
        }
        return ('true' == $this->getConstraint('strict'));
    }

    /**
     * Set locale
     *
     * @param  string $locale
     * @return Zend_Dojo_Form_Element_DateTextBox
     */
    public function setLocale($locale)
    {
        $this->setConstraint('locale', (string) $locale);
        return $this;
    }

    /**
     * Retrieve locale
     *
     * @return string|null
     */
    public function getLocale()
    {
        return $this->getConstraint('locale');
    }

    /**
     * Set date format pattern
     *
     * @param  string $pattern
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setDatePattern($pattern)
    {
        $this->setConstraint('datePattern', (string) $pattern);
        return $this;
    }

    /**
     * Retrieve date format pattern
     *
     * @return string|null
     */
    public function getDatePattern()
    {
        return $this->getConstraint('datePattern');
    }

    /**
     * Set numeric format formatLength
     *
     * @see    $_allowedFormatTypes
     * @param  string $formatLength
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setFormatLength($formatLength)
    {
        $formatLength = strtolower($formatLength);
        if (!in_array($formatLength, $this->_allowedFormatTypes)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception(sprintf('Invalid formatLength "%s" specified', $formatLength));
        }

        $this->setConstraint('formatLength', $formatLength);
        return $this;
    }

    /**
     * Retrieve formatLength
     *
     * @return string|null
     */
    public function getFormatLength()
    {
        return $this->getConstraint('formatLength');
    }

    /**
     * Set numeric format Selector
     *
     * @see    $_allowedSelectorTypes
     * @param  string $selector
     * @return Zend_Dojo_Form_Element_NumberTextBox
     */
    public function setSelector($selector)
    {
        $selector = strtolower($selector);
        if (!in_array($selector, $this->_allowedSelectorTypes)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception(sprintf('Invalid Selector "%s" specified', $selector));
        }

        $this->setConstraint('selector', $selector);
        return $this;
    }

    /**
     * Retrieve selector
     *
     * @return string|null
     */
    public function getSelector()
    {
        return $this->getConstraint('selector');
    }
}
PKpG[�����%Dojo/Form/Element/PasswordTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_ValidationTextBox */
require_once 'Zend/Dojo/Form/Element/ValidationTextBox.php';

/**
 * ValidationTextBox dijit tied to password input
 * 
 * @uses       Zend_Dojo_Form_Element_ValidationTextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PasswordTextBox.php 10667 2008-08-05 13:00:56Z matthew $
 */
class Zend_Dojo_Form_Element_PasswordTextBox extends Zend_Dojo_Form_Element_ValidationTextBox
{
    /**
     * Use PasswordTextBox dijit view helper
     * @var string
     */
    public $helper = 'PasswordTextBox';
}
PKpG[q}���$Dojo/Form/Element/VerticalSlider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Slider */
require_once 'Zend/Dojo/Form/Element/Slider.php';

/**
 * VerticalSlider dijit
 * 
 * @uses       Zend_Dojo_Form_Element_Slider
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: VerticalSlider.php 10012 2008-07-09 20:47:48Z matthew $
 */
class Zend_Dojo_Form_Element_VerticalSlider extends Zend_Dojo_Form_Element_Slider
{
    /**
     * Use VerticalSlider dijit view helper
     * @var string
     */
    public $helper = 'VerticalSlider';

    /**
     * Get left decoration data
     * 
     * @return array
     */
    public function getLeftDecoration()
    {
        if ($this->hasDijitParam('leftDecoration')) {
            return $this->getDijitParam('leftDecoration');
        }
        return array();
    }

    /**
     * Set dijit to use with left decoration
     * 
     * @param mixed $dijit 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setLeftDecorationDijit($dijit)
    {
        $decoration = $this->getLeftDecoration();
        $decoration['dijit'] = (string) $dijit;
        $this->setDijitParam('leftDecoration', $decoration);
        return $this;
    }

    /**
     * Set container to use with left decoration
     * 
     * @param mixed $container 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setLeftDecorationContainer($container)
    {
        $decoration = $this->getLeftDecoration();
        $decoration['container'] = (string) $container;
        $this->setDijitParam('leftDecoration', $decoration);
        return $this;
    }

    /**
     * Set labels to use with left decoration
     * 
     * @param  array $labels 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setLeftDecorationLabels(array $labels)
    {
        $decoration = $this->getLeftDecoration();
        $decoration['labels'] = array_values($labels);
        $this->setDijitParam('leftDecoration', $decoration);
        return $this;
    }

    /**
     * Set params to use with left decoration
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setLeftDecorationParams(array $params)
    {
        $decoration = $this->getLeftDecoration();
        $decoration['params'] = $params;
        $this->setDijitParam('leftDecoration', $decoration);
        return $this;
    }

    /**
     * Set attribs to use with left decoration
     * 
     * @param  array $attribs 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setLeftDecorationAttribs(array $attribs)
    {
        $decoration = $this->getLeftDecoration();
        $decoration['attribs'] = $attribs;
        $this->setDijitParam('leftDecoration', $decoration);
        return $this;
    }

    /**
     * Get right decoration data
     * 
     * @return array
     */
    public function getRightDecoration()
    {
        if ($this->hasDijitParam('rightDecoration')) {
            return $this->getDijitParam('rightDecoration');
        }
        return array();
    }

    /**
     * Set dijit to use with right decoration
     * 
     * @param mixed $dijit 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setRightDecorationDijit($dijit)
    {
        $decoration = $this->getRightDecoration();
        $decoration['dijit'] = (string) $dijit;
        $this->setDijitParam('rightDecoration', $decoration);
        return $this;
    }

    /**
     * Set container to use with right decoration
     * 
     * @param mixed $container 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setRightDecorationContainer($container)
    {
        $decoration = $this->getRightDecoration();
        $decoration['container'] = (string) $container;
        $this->setDijitParam('rightDecoration', $decoration);
        return $this;
    }

    /**
     * Set labels to use with right decoration
     * 
     * @param  array $labels 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setRightDecorationLabels(array $labels)
    {
        $decoration = $this->getRightDecoration();
        $decoration['labels'] = array_values($labels);
        $this->setDijitParam('rightDecoration', $decoration);
        return $this;
    }

    /**
     * Set params to use with right decoration
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setRightDecorationParams(array $params)
    {
        $decoration = $this->getRightDecoration();
        $decoration['params'] = $params;
        $this->setDijitParam('rightDecoration', $decoration);
        return $this;
    }

    /**
     * Set attribs to use with right decoration
     * 
     * @param  array $attribs 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setRightDecorationAttribs(array $attribs)
    {
        $decoration = $this->getRightDecoration();
        $decoration['attribs'] = $attribs;
        $this->setDijitParam('rightDecoration', $decoration);
        return $this;
    }
}
PKpG[�
q--Dojo/Form/Element/Button.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * Button dijit
 * 
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Button.php 10091 2008-07-15 03:46:37Z matthew $
 */
class Zend_Dojo_Form_Element_Button extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Use Button dijit view helper
     * @var string
     */
    public $helper = 'Button';

    /**
     * Constructor
     * 
     * @param  string|array|Zend_Config $spec Element name or configuration
     * @param  string|array|Zend_Config $options Element value or configuration
     * @return void
     */
    public function __construct($spec, $options = null)
    {
        if (is_string($spec) && ((null !== $options) && is_string($options))) {
            $options = array('label' => $options);
        }

        parent::__construct($spec, $options);
    }

    /**
     * Return label
     *
     * If no label is present, returns the currently set name.
     *
     * If a translator is present, returns the translated label.
     * 
     * @return string
     */
    public function getLabel()
    {
        $value = parent::getLabel();

        if (null === $value) {
            $value = $this->getName();
        }

        if (null !== ($translator = $this->getTranslator())) {
            return $translator->translate($value);
        }

        return $value;
    }

    /**
     * Has this submit button been selected?
     * 
     * @return bool
     */
    public function isChecked()
    {
        $value = $this->getValue();

        if (empty($value)) {
            return false;
        }
        if ($value != $this->getLabel()) {
            return false;
        }

        return true;
    }

    /**
     * Default decorators
     *
     * Uses only 'DijitElement' and 'DtDdWrapper' decorators by default.
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('DijitElement')
                 ->addDecorator('DtDdWrapper');
        }
    }
}
PKpG[�����8�8Dojo/Form/Element/Editor.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * Editor dijit
 * 
 * @uses       Zend_Dojo_Form_Element_Dijit
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Dojo_Form_Element_Editor extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * @var string View helper
     */
    public $helper = 'Editor';

    /**
     * Add a single event to connect to the editing area
     * 
     * @param  string $event 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addCaptureEvent($event)
    {
        $event = (string) $event;
        $captureEvents = $this->getCaptureEvents();
        if (in_array($event, $captureEvents)) {
            return $this;
        }

        $captureEvents[] = (string) $event;
        $this->setDijitParam('captureEvents', $captureEvents);
        return $this;
    }

    /**
     * Add multiple capture events
     * 
     * @param  array $events 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addCaptureEvents(array $events)
    {
        foreach ($events as $event) {
            $this->addCaptureEvent($event);
        }
        return $this;
    }

    /**
     * Overwrite many capture events at once
     * 
     * @param  array $events 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setCaptureEvents(array $events)
    {
        $this->clearCaptureEvents();
        $this->addCaptureEvents($events);
        return $this;
    }

    /**
     * Get all capture events
     * 
     * @return array
     */
    public function getCaptureEvents()
    {
        if (!$this->hasDijitParam('captureEvents')) {
            return array();
        }
        return $this->getDijitParam('captureEvents');
    }

    /**
     * Is a given capture event registered?
     * 
     * @param  string $event
     * @return bool
     */
    public function hasCaptureEvent($event)
    {
        $captureEvents = $this->getCaptureEvents();
        return in_array((string) $event, $captureEvents);
    }

    /**
     * Remove a given capture event
     * 
     * @param  string $event
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function removeCaptureEvent($event)
    {
        $event = (string) $event;
        $captureEvents = $this->getCaptureEvents();
        if (false === ($index = array_search($event, $captureEvents))) {
            return $this;
        }
        unset($captureEvents[$index]);
        $this->setDijitParam('captureEvents', $captureEvents);
        return $this;
    }

    /**
     * Clear all capture events
     * 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function clearCaptureEvents()
    {
        return $this->removeDijitParam('captureEvents');
    }

    /**
     * Add a single event to the dijit
     * 
     * @param  string $event 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addEvent($event)
    {
        $event = (string) $event;
        $events = $this->getEvents();
        if (in_array($event, $events)) {
            return $this;
        }

        $events[] = (string) $event;
        $this->setDijitParam('events', $events);
        return $this;
    }

    /**
     * Add multiple events
     * 
     * @param  array $events 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addEvents(array $events)
    {
        foreach ($events as $event) {
            $this->addEvent($event);
        }
        return $this;
    }

    /**
     * Overwrite many events at once
     * 
     * @param  array $events 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setEvents(array $events)
    {
        $this->clearEvents();
        $this->addEvents($events);
        return $this;
    }

    /**
     * Get all events
     * 
     * @return array
     */
    public function getEvents()
    {
        if (!$this->hasDijitParam('events')) {
            return array();
        }
        return $this->getDijitParam('events');
    }

    /**
     * Is a given event registered?
     * 
     * @param  string $event
     * @return bool
     */
    public function hasEvent($event)
    {
        $events = $this->getEvents();
        return in_array((string) $event, $events);
    }

    /**
     * Remove a given event
     * 
     * @param  string $event
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function removeEvent($event)
    {
        $events = $this->getEvents();
        if (false === ($index = array_search($event, $events))) {
            return $this;
        }
        unset($events[$index]);
        $this->setDijitParam('events', $events);
        return $this;
    }

    /**
     * Clear all events
     * 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function clearEvents()
    {
        return $this->removeDijitParam('events');
    }

    /**
     * Add a single editor plugin
     * 
     * @param  string $plugin 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addPlugin($plugin)
    {
        $plugin = (string) $plugin;
        $plugins = $this->getPlugins();
        if (in_array($plugin, $plugins)) {
            return $this;
        }

        $plugins[] = (string) $plugin;
        $this->setDijitParam('plugins', $plugins);
        return $this;
    }

    /**
     * Add multiple plugins
     * 
     * @param  array $plugins 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addPlugins(array $plugins)
    {
        foreach ($plugins as $plugin) {
            $this->addPlugin($plugin);
        }
        return $this;
    }

    /**
     * Overwrite many plugins at once
     * 
     * @param  array $plugins 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setPlugins(array $plugins)
    {
        $this->clearPlugins();
        $this->addPlugins($plugins);
        return $this;
    }

    /**
     * Get all plugins
     * 
     * @return array
     */
    public function getPlugins()
    {
        if (!$this->hasDijitParam('plugins')) {
            return array();
        }
        return $this->getDijitParam('plugins');
    }

    /**
     * Is a given plugin registered?
     * 
     * @param  string $plugin
     * @return bool
     */
    public function hasPlugin($plugin)
    {
        $plugins = $this->getPlugins();
        return in_array((string) $plugin, $plugins);
    }

    /**
     * Remove a given plugin
     * 
     * @param  string $plugin
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function removePlugin($plugin)
    {
        $plugins = $this->getPlugins();
        if (false === ($index = array_search($plugin, $plugins))) {
            return $this;
        }
        unset($plugins[$index]);
        $this->setDijitParam('plugins', $plugins);
        return $this;
    }

    /**
     * Clear all plugins
     * 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function clearPlugins()
    {
        return $this->removeDijitParam('plugins');
    }

    /**
     * Set edit action interval
     * 
     * @param  int $interval 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setEditActionInterval($interval)
    {
        return $this->setDijitParam('editActionInterval', (int) $interval);
    }

    /**
     * Get edit action interval; defaults to 3
     * 
     * @return int
     */
    public function getEditActionInterval()
    {
        if (!$this->hasDijitParam('editActionInterval')) {
            $this->setEditActionInterval(3);
        }
        return $this->getDijitParam('editActionInterval');
    }

    /**
     * Set focus on load flag
     * 
     * @param  bool $flag 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setFocusOnLoad($flag)
    {
        return $this->setDijitParam('focusOnLoad', (bool) $flag);
    }

    /**
     * Retrieve focus on load flag
     * 
     * @return bool
     */
    public function getFocusOnLoad()
    {
        if (!$this->hasDijitParam('focusOnLoad')) {
             return false;
        }
        return $this->getDijitParam('focusOnLoad');
    }

    /**
     * Set editor height
     * 
     * @param  string|int $height 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setHeight($height)
    {
        if (!preg_match('/^\d+(em|px|%)?$/i', $height)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception('Invalid height provided; must be integer or CSS measurement');
        }
        if (!preg_match('/(em|px|%)$/', $height)) {
            $height .= 'px';
        }
        return $this->setDijitParam('height', $height);
    }

    /**
     * Retrieve height
     * 
     * @return string
     */
    public function getHeight()
    {
        if (!$this->hasDijitParam('height')) {
            return '300px';
        }
        return $this->getDijitParam('height');
    }

    /**
     * Set whether or not to inherit parent's width
     * 
     * @param  bool $flag 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setInheritWidth($flag)
    {
        return $this->setDijitParam('inheritWidth', (bool) $flag);
    }

    /**
     * Whether or not to inherit the parent's width
     * 
     * @return bool
     */
    public function getInheritWidth()
    {
        if (!$this->hasDijitParam('inheritWidth')) {
            return false;
        }
        return $this->getDijitParam('inheritWidth');
    }

    /**
     * Set minimum height of editor
     * 
     * @param  string|int $minHeight 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setMinHeight($minHeight)
    {
        if (!preg_match('/^\d+(em)?$/i', $minHeight)) {
            require_once 'Zend/Form/Element/Exception.php';
            throw new Zend_Form_Element_Exception('Invalid minHeight provided; must be integer or CSS measurement');
        }
        if ('em' != substr($minHeight, -2)) {
            $minHeight .= 'em';
        }
        return $this->setDijitParam('minHeight', $minHeight);
    }

    /**
     * Get minimum height of editor
     * 
     * @return string
     */
    public function getMinHeight()
    {
        if (!$this->hasDijitParam('minHeight')) {
            return '1em';
        }
        return $this->getDijitParam('minHeight');
    }

    /**
     * Add a custom stylesheet
     * 
     * @param  string $styleSheet 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addStyleSheet($styleSheet)
    {
        $stylesheets = $this->getStyleSheets();
        if (strstr($stylesheets, ';')) {
            $stylesheets = explode(';', $stylesheets);
        } elseif (!empty($stylesheets)) {
            $stylesheets = (array) $stylesheets;
        } else {
            $stylesheets = array();
        }
        if (!in_array($styleSheet, $stylesheets)) {
            $stylesheets[] = (string) $styleSheet;
        }
        return $this->setDijitParam('styleSheets', implode(';', $stylesheets));
    }

    /**
     * Add multiple custom stylesheets
     * 
     * @param  array $styleSheets 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function addStyleSheets(array $styleSheets)
    {
        foreach ($styleSheets as $styleSheet) {
            $this->addStyleSheet($styleSheet);
        }
        return $this;
    }

    /**
     * Overwrite all stylesheets
     * 
     * @param  array $styleSheets 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setStyleSheets(array $styleSheets)
    {
        $this->clearStyleSheets();
        return $this->addStyleSheets($styleSheets);
    }

    /**
     * Get all stylesheets
     * 
     * @return string
     */
    public function getStyleSheets()
    {
        if (!$this->hasDijitParam('styleSheets')) {
            return '';
        }
        return $this->getDijitParam('styleSheets');
    }

    /**
     * Is a given stylesheet registered?
     * 
     * @param  string $styleSheet 
     * @return bool
     */
    public function hasStyleSheet($styleSheet)
    {
        $styleSheets = $this->getStyleSheets();
        $styleSheets = explode(';', $styleSheets);
        return in_array($styleSheet, $styleSheets);
    }

    /**
     * Remove a single stylesheet
     * 
     * @param  string $styleSheet 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function removeStyleSheet($styleSheet)
    {
        $styleSheets = $this->getStyleSheets();
        $styleSheets = explode(';', $styleSheets);
        if (false !== ($index = array_search($styleSheet, $styleSheets))) {
            unset($styleSheets[$index]);
            $this->setDijitParam('styleSheets', implode(';', $styleSheets));
        }
        return $this;
    }

    /**
     * Clear all stylesheets
     * 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function clearStyleSheets()
    {
        if ($this->hasDijitParam('styleSheets')) {
            $this->removeDijitParam('styleSheets');
        }
        return $this;
    }

    /**
     * Set update interval
     * 
     * @param  int $interval 
     * @return Zend_Dojo_Form_Element_Editor
     */
    public function setUpdateInterval($interval)
    {
        return $this->setDijitParam('updateInterval', (int) $interval);
    }

    /**
     * Get update interval
     * 
     * @return int
     */
    public function getUpdateInterval()
    {
        if (!$this->hasDijitParam('updateInterval')) {
             return 200;
        }
        return $this->getDijitParam('updateInterval');
    }
}
PKpG[fH�H��'Dojo/Form/Element/ValidationTextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_TextBox */
require_once 'Zend/Dojo/Form/Element/TextBox.php';

/**
 * ValidationTextBox dijit
 * 
 * @uses       Zend_Dojo_Form_Element_TextBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ValidationTextBox.php 10079 2008-07-14 10:56:37Z matthew $
 */
class Zend_Dojo_Form_Element_ValidationTextBox extends Zend_Dojo_Form_Element_TextBox
{
    /**
     * Use ValidationTextBox dijit view helper
     * @var string
     */
    public $helper = 'ValidationTextBox';

    /**
     * Set invalidMessage
     *
     * @param  string $message
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function setInvalidMessage($message)
    {
        $this->setDijitParam('invalidMessage', (string) $message);
        return $this;
    }

    /**
     * Retrieve invalidMessage
     *
     * @return string|null
     */
    public function getInvalidMessage()
    {
        return $this->getDijitParam('invalidMessage');
    }

    /**
     * Set promptMessage
     *
     * @param  string $message
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function setPromptMessage($message)
    {
        $this->setDijitParam('promptMessage', (string) $message);
        return $this;
    }

    /**
     * Retrieve promptMessage
     *
     * @return string|null
     */
    public function getPromptMessage()
    {
        return $this->getDijitParam('promptMessage');
    }

    /**
     * Set regExp
     *
     * @param  string $regexp
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function setRegExp($regexp)
    {
        $this->setDijitParam('regExp', (string) $regexp);
        return $this;
    }

    /**
     * Retrieve regExp
     *
     * @return string|null
     */
    public function getRegExp()
    {
        return $this->getDijitParam('regExp');
    }

    /**
     * Set an individual constraint
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function setConstraint($key, $value)
    {
        $constraints = $this->getConstraints();
        $constraints[(string) $key] = $value;
        $this->setConstraints($constraints);
        return $this;
    }

    /**
     * Set validation constraints
     *
     * Refer to Dojo dijit.form.ValidationTextBox documentation for valid 
     * structure.
     * 
     * @param  array $constraints 
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function setConstraints(array $constraints)
    {
        array_walk_recursive($constraints, array($this, '_castBoolToString'));
        $this->setDijitParam('constraints', $constraints);
        return $this;
    }

    /**
     * Is the given constraint set?
     * 
     * @param  string $key 
     * @return bool
     */
    public function hasConstraint($key)
    {
        $constraints = $this->getConstraints();
        return array_key_exists((string)$key, $constraints);
    }

    /**
     * Get an individual constraint
     * 
     * @param  string $key 
     * @return mixed
     */
    public function getConstraint($key)
    {
        $key = (string) $key;
        if (!$this->hasConstraint($key)) {
            return null;
        }
        return $this->dijitParams['constraints'][$key];
    }

    /**
     * Get constraints
     * 
     * @return array
     */
    public function getConstraints()
    {
        if ($this->hasDijitParam('constraints')) {
            return $this->getDijitParam('constraints');
        }
        return array();
    }

    /**
     * Remove a single constraint
     * 
     * @param  string $key 
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function removeConstraint($key)
    {
        $key = (string) $key;
        if ($this->hasConstraint($key)) {
            unset($this->dijitParams['constraints'][$key]);
        }
        return $this;
    }

    /**
     * Clear all constraints
     * 
     * @return Zend_Dojo_Form_Element_ValidationTextBox
     */
    public function clearConstraints()
    {
        return $this->removeDijitParam('constraints');
    }

    /**
     * Cast a boolean value to a string
     * 
     * @param  mixed $item 
     * @param  string $key 
     * @return void
     */
    protected function _castBoolToString(&$item, $key)
    {
        if (is_bool($item)) {
            $item = ($item) ? 'true' : 'false';
        }
    }
}
PKpG[ս�ߛ�&Dojo/Form/Element/HorizontalSlider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Slider */
require_once 'Zend/Dojo/Form/Element/Slider.php';

/**
 * HorizontalSlider dijit
 * 
 * @uses       Zend_Dojo_Form_Element_Slider
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HorizontalSlider.php 10012 2008-07-09 20:47:48Z matthew $
 */
class Zend_Dojo_Form_Element_HorizontalSlider extends Zend_Dojo_Form_Element_Slider
{
    /**
     * Use HorizontalSlider dijit view helper
     * @var string
     */
    public $helper = 'HorizontalSlider';

    /**
     * Get top decoration data
     * 
     * @return array
     */
    public function getTopDecoration()
    {
        if ($this->hasDijitParam('topDecoration')) {
            return $this->getDijitParam('topDecoration');
        }
        return array();
    }

    /**
     * Set dijit to use with top decoration
     * 
     * @param mixed $dijit 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setTopDecorationDijit($dijit)
    {
        $decoration = $this->getTopDecoration();
        $decoration['dijit'] = (string) $dijit;
        $this->setDijitParam('topDecoration', $decoration);
        return $this;
    }

    /**
     * Set container to use with top decoration
     * 
     * @param mixed $container 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setTopDecorationContainer($container)
    {
        $decoration = $this->getTopDecoration();
        $decoration['container'] = (string) $container;
        $this->setDijitParam('topDecoration', $decoration);
        return $this;
    }

    /**
     * Set labels to use with top decoration
     * 
     * @param  array $labels 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setTopDecorationLabels(array $labels)
    {
        $decoration = $this->getTopDecoration();
        $decoration['labels'] = array_values($labels);
        $this->setDijitParam('topDecoration', $decoration);
        return $this;
    }

    /**
     * Set params to use with top decoration
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setTopDecorationParams(array $params)
    {
        $decoration = $this->getTopDecoration();
        $decoration['params'] = $params;
        $this->setDijitParam('topDecoration', $decoration);
        return $this;
    }

    /**
     * Set attribs to use with top decoration
     * 
     * @param  array $attribs 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setTopDecorationAttribs(array $attribs)
    {
        $decoration = $this->getTopDecoration();
        $decoration['attribs'] = $attribs;
        $this->setDijitParam('topDecoration', $decoration);
        return $this;
    }

    /**
     * Get bottom decoration data
     * 
     * @return array
     */
    public function getBottomDecoration()
    {
        if ($this->hasDijitParam('bottomDecoration')) {
            return $this->getDijitParam('bottomDecoration');
        }
        return array();
    }

    /**
     * Set dijit to use with bottom decoration
     * 
     * @param mixed $dijit 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setBottomDecorationDijit($dijit)
    {
        $decoration = $this->getBottomDecoration();
        $decoration['dijit'] = (string) $dijit;
        $this->setDijitParam('bottomDecoration', $decoration);
        return $this;
    }

    /**
     * Set container to use with bottom decoration
     * 
     * @param mixed $container 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setBottomDecorationContainer($container)
    {
        $decoration = $this->getBottomDecoration();
        $decoration['container'] = (string) $container;
        $this->setDijitParam('bottomDecoration', $decoration);
        return $this;
    }

    /**
     * Set labels to use with bottom decoration
     * 
     * @param  array $labels 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setBottomDecorationLabels(array $labels)
    {
        $decoration = $this->getBottomDecoration();
        $decoration['labels'] = array_values($labels);
        $this->setDijitParam('bottomDecoration', $decoration);
        return $this;
    }

    /**
     * Set params to use with bottom decoration
     * 
     * @param  array $params 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setBottomDecorationParams(array $params)
    {
        $decoration = $this->getBottomDecoration();
        $decoration['params'] = $params;
        $this->setDijitParam('bottomDecoration', $decoration);
        return $this;
    }

    /**
     * Set attribs to use with bottom decoration
     * 
     * @param  array $attribs 
     * @return Zend_Dojo_Form_Element_HorizontalSlider
     */
    public function setBottomDecorationAttribs(array $attribs)
    {
        $decoration = $this->getBottomDecoration();
        $decoration['attribs'] = $attribs;
        $this->setDijitParam('bottomDecoration', $decoration);
        return $this;
    }
}
PKpG[Y�64��%Dojo/Form/Element/FilteringSelect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_ComboBox */
require_once 'Zend/Dojo/Form/Element/ComboBox.php';

/**
 * FilteringSelect dijit
 * 
 * @uses       Zend_Dojo_Form_Element_ComboBox
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: FilteringSelect.php 10723 2008-08-06 15:30:18Z matthew $
 */
class Zend_Dojo_Form_Element_FilteringSelect extends Zend_Dojo_Form_Element_ComboBox
{
    /**
     * Use FilteringSelect dijit view helper
     * @var string
     */
    public $helper = 'FilteringSelect';

    /**
     * Flag: autoregister inArray validator?
     * @var bool
     */
    protected $_registerInArrayValidator = true;
}
PKpG[f�j�;;"Dojo/Form/Element/SubmitButton.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Button */
require_once 'Zend/Dojo/Form/Element/Button.php';

/**
 * Submit button dijit
 * 
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SubmitButton.php 10621 2008-08-04 00:05:33Z matthew $
 */
class Zend_Dojo_Form_Element_SubmitButton extends Zend_Dojo_Form_Element_Button
{
    /**
     * Use SubmitButton dijit view helper
     * @var string
     */
    public $helper = 'SubmitButton';
}
PKpG[�4�Y{{ Dojo/Form/Element/DijitMulti.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * CheckBox dijit
 *
 * Note: this would be easier with mixins or traits...
 * 
 * @uses       Zend_Dojo_Form_Element_Dijit
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DijitMulti.php 10646 2008-08-04 20:24:37Z matthew $
 */
abstract class Zend_Dojo_Form_Element_DijitMulti extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Array of options for multi-item
     * @var array
     */
    public $options = array();

    /**
     * Flag: autoregister inArray validator?
     * @var bool
     */
    protected $_registerInArrayValidator = true;

    /**
     * Separator to use between options; defaults to '<br />'.
     * @var string
     */
    protected $_separator = '<br />';

    /**
     * Which values are translated already?
     * @var array
     */
    protected $_translated = array();

    /**
     * Retrieve separator
     *
     * @return mixed
     */
    public function getSeparator()
    {
        return $this->_separator;
    }

    /**
     * Set separator
     *
     * @param mixed $separator
     * @return self
     */
    public function setSeparator($separator)
    {
        $this->_separator = $separator;
        return $this;
    }

    /**
     * Retrieve options array
     * 
     * @return array
     */
    protected function _getMultiOptions()
    {
        if (null === $this->options || !is_array($this->options)) {
            $this->options = array();
        }

        return $this->options;
    }

    /**
     * Add an option
     * 
     * @param  string $option 
     * @param  string $value
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOption($option, $value = '')
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (!$this->_translateOption($option, $value)) {
            $this->options[$option] = $value;
        }

        return $this;
    }

    /**
     * Add many options at once
     * 
     * @param  array $options 
     * @return Zend_Form_Element_Multi
     */
    public function addMultiOptions(array $options)
    {
        foreach ($options as $option => $value) {
            if (is_array($value) 
                && array_key_exists('key', $value)
                && array_key_exists('value', $value)
            ) {
                $this->addMultiOption($value['key'], $value['value']);
            } else {
                $this->addMultiOption($option, $value);
            }
        }
        return $this;
    }

    /**
     * Set all options at once (overwrites)
     *
     * @param  array $options
     * @return Zend_Form_Element_Multi
     */
    public function setMultiOptions(array $options)
    {
        $this->clearMultiOptions();
        return $this->addMultiOptions($options);
    }

    /**
     * Retrieve single multi option
     * 
     * @param  string $option 
     * @return mixed
     */
    public function getMultiOption($option)
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (isset($this->options[$option])) {
            $this->_translateOption($option, $this->options[$option]);
            return $this->options[$option];
        }

        return null;
    }

    /**
     * Retrieve options
     *
     * @return array
     */
    public function getMultiOptions()
    {
        $this->_getMultiOptions();
        foreach ($this->options as $option => $value) {
            $this->_translateOption($option, $value);
        }
        return $this->options;
    }

    /**
     * Remove a single multi option
     * 
     * @param  string $option 
     * @return bool
     */
    public function removeMultiOption($option)
    {
        $option  = (string) $option;
        $this->_getMultiOptions();
        if (isset($this->options[$option])) {
            unset($this->options[$option]);
            if (isset($this->_translated[$option])) {
                unset($this->_translated[$option]);
            }
            return true;
        }

        return false;
    }

    /**
     * Clear all options
     * 
     * @return Zend_Form_Element_Multi
     */
    public function clearMultiOptions()
    {
        $this->options = array();
        $this->_translated = array();
        return $this;
    }

    /**
     * Set flag indicating whether or not to auto-register inArray validator
     * 
     * @param  bool $flag 
     * @return Zend_Form_Element_Multi
     */
    public function setRegisterInArrayValidator($flag)
    {
        $this->_registerInArrayValidator = (bool) $flag;
        return $this;
    }

    /**
     * Get status of auto-register inArray validator flag
     * 
     * @return bool
     */
    public function registerInArrayValidator()
    {
        return $this->_registerInArrayValidator;
    }

    /**
     * Is the value provided valid?
     *
     * Autoregisters InArray validator if necessary.
     * 
     * @param  string $value 
     * @param  mixed $context 
     * @return bool
     */
    public function isValid($value, $context = null)
    {
        if ($this->registerInArrayValidator()) {
            if (!$this->getValidator('InArray')) {
                $options = $this->getMultiOptions();
                $this->addValidator(
                    'InArray',
                    true,
                    array(array_keys($options))
                );
            }
        }
        return parent::isValid($value, $context);
    }

    /**
     * Translate an option
     * 
     * @param  string $option 
     * @param  string $value
     * @return bool
     */
    protected function _translateOption($option, $value)
    {
        if (!isset($this->_translated[$option])) {
            $this->options[$option] = $this->_translateValue($value);
            if ($this->options[$option] === $value) {
                return false;
            }
            $this->_translated[$option] = true;
            return true;
        } 

        return false;
    }

    /**
     * Translate a value
     * 
     * @param  array|string $value 
     * @return array|string
     */
    protected function _translateValue($value)
    {
        if (is_array($value)) {
            foreach ($value as $key => $val) {
                $value[$key] = $this->_translateValue($val);
            }
            return $value;
        } else {
            if (null !== ($translator = $this->getTranslator())) {
                if ($translator->isTranslated($value)) {
                    return $translator->translate($value);
                }
            }
            return $value;
        }
    }
}
PKpG[�Ҧ�Dojo/Form/Element/Slider.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * Abstract Slider dijit
 * 
 * @uses       Zend_Dojo_Form_Element_Dijit
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Slider.php 10003 2008-07-09 02:40:49Z matthew $
 */
abstract class Zend_Dojo_Form_Element_Slider extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Set clickSelect flag
     *
     * @param  bool $clickSelect
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setClickSelect($flag)
    {
        $this->setDijitParam('clickSelect', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve clickSelect flag
     *
     * @return bool
     */
    public function getClickSelect()
    {
        if (!$this->hasDijitParam('clickSelect')) {
            return false;
        }
        return $this->getDijitParam('clickSelect');
    }

    /**
     * Set intermediateChanges flag
     *
     * @param  bool $intermediateChanges
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setIntermediateChanges($flag)
    {
        $this->setDijitParam('intermediateChanges', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve intermediateChanges flag
     *
     * @return bool
     */
    public function getIntermediateChanges()
    {
        if (!$this->hasDijitParam('intermediateChanges')) {
            return false;
        }
        return $this->getDijitParam('intermediateChanges');
    }

    /**
     * Set showButtons flag
     *
     * @param  bool $showButtons
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setShowButtons($flag)
    {
        $this->setDijitParam('showButtons', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve showButtons flag
     *
     * @return bool
     */
    public function getShowButtons()
    {
        if (!$this->hasDijitParam('showButtons')) {
            return false;
        }
        return $this->getDijitParam('showButtons');
    }

    /**
     * Set discreteValues
     *
     * @param  int $value
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setDiscreteValues($value)
    {
        $this->setDijitParam('discreteValues', (int) $value);
        return $this;
    }

    /**
     * Retrieve discreteValues
     *
     * @return int|null
     */
    public function getDiscreteValues()
    {
        return $this->getDijitParam('discreteValues');
    }

    /**
     * Set maximum
     *
     * @param  int $value
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setMaximum($value)
    {
        $this->setDijitParam('maximum', (int) $value);
        return $this;
    }

    /**
     * Retrieve maximum
     *
     * @return int|null
     */
    public function getMaximum()
    {
        return $this->getDijitParam('maximum');
    }

    /**
     * Set minimum
     *
     * @param  int $value
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setMinimum($value)
    {
        $this->setDijitParam('minimum', (int) $value);
        return $this;
    }

    /**
     * Retrieve minimum
     *
     * @return int|null
     */
    public function getMinimum()
    {
        return $this->getDijitParam('minimum');
    }

    /**
     * Set pageIncrement
     *
     * @param  int $value
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setPageIncrement($value)
    {
        $this->setDijitParam('pageIncrement', (int) $value);
        return $this;
    }

    /**
     * Retrieve pageIncrement
     *
     * @return int|null
     */
    public function getPageIncrement()
    {
        return $this->getDijitParam('pageIncrement');
    }
}
PKpG[R-���Dojo/Form/Element/TextBox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Dojo_Form_Element_Dijit */
require_once 'Zend/Dojo/Form/Element/Dijit.php';

/**
 * TextBox dijit
 * 
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form_Element
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TextBox.php 10003 2008-07-09 02:40:49Z matthew $
 */
class Zend_Dojo_Form_Element_TextBox extends Zend_Dojo_Form_Element_Dijit
{
    /**
     * Use TextBox dijit view helper
     * @var string
     */
    public $helper = 'TextBox';

    /**
     * Set lowercase flag
     *
     * @param  bool $lowercase
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setLowercase($flag)
    {
        $this->setDijitParam('lowercase', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve lowercase flag
     *
     * @return bool
     */
    public function getLowercase()
    {
        if (!$this->hasDijitParam('lowercase')) {
            return false;
        }
        return $this->getDijitParam('lowercase');
    }

    /**
     * Set propercase flag
     *
     * @param  bool $propercase
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setPropercase($flag)
    {
        $this->setDijitParam('propercase', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve propercase flag
     *
     * @return bool
     */
    public function getPropercase()
    {
        if (!$this->hasDijitParam('propercase')) {
            return false;
        }
        return $this->getDijitParam('propercase');
    }

    /**
     * Set uppercase flag
     *
     * @param  bool $uppercase
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setUppercase($flag)
    {
        $this->setDijitParam('uppercase', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve uppercase flag
     *
     * @return bool
     */
    public function getUppercase()
    {
        if (!$this->hasDijitParam('uppercase')) {
            return false;
        }
        return $this->getDijitParam('uppercase');
    }

    /**
     * Set trim flag
     *
     * @param  bool $trim
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setTrim($flag)
    {
        $this->setDijitParam('trim', (bool) $flag);
        return $this;
    }

    /**
     * Retrieve trim flag
     *
     * @return bool
     */
    public function getTrim()
    {
        if (!$this->hasDijitParam('trim')) {
            return false;
        }
        return $this->getDijitParam('trim');
    }

    /**
     * Set maxLength
     *
     * @param  int $length
     * @return Zend_Dojo_Form_Element_TextBox
     */
    public function setMaxLength($length)
    {
        $this->setDijitParam('maxLength', (int) $length);
        return $this;
    }

    /**
     * Retrieve maxLength
     *
     * @return int|null
     */
    public function getMaxLength()
    {
        return $this->getDijitParam('maxLength');
    }
}
PKpG[��}}Dojo/Form/SubForm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Form_SubForm */
require_once 'Zend/Form/SubForm.php';

/**
 * Dijit-enabled SubForm
 * 
 * @uses       Zend_Form_SubForm
 * @package    Zend_Dojo
 * @subpackage Form
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SubForm.php 10038 2008-07-10 21:45:16Z matthew $
 */
class Zend_Dojo_Form_SubForm extends Zend_Form_SubForm
{
    /**
     * Has the dojo view helper path been registered?
     * @var bool
     */
    protected $_dojoViewPathRegistered = false;

    /**
     * Constructor
     * 
     * @param  array|Zend_Config|null $options 
     * @return void
     */
    public function __construct($options = null)
    {
        $this->addPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addPrefixPath('Zend_Dojo_Form_Element', 'Zend/Dojo/Form/Element', 'element')
             ->addElementPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator', 'decorator')
             ->addDisplayGroupPrefixPath('Zend_Dojo_Form_Decorator', 'Zend/Dojo/Form/Decorator')
             ->setDefaultDisplayGroupClass('Zend_Dojo_Form_DisplayGroup');
        parent::__construct($options);
    }

    /**
     * Load the default decorators
     * 
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('FormElements')
                 ->addDecorator('HtmlTag', array('tag' => 'dl'))
                 ->addDecorator('ContentPane');
        }
    }

    /**
     * Get view 
     * 
     * @return Zend_View_Interface
     */
    public function getView()
    {
        $view = parent::getView();
        if (!$this->_dojoViewPathRegistered) {
            if (false === $view->getPluginLoader('helper')->getPaths('Zend_Dojo_View_Helper')) {
                $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
            }
            $this->_dojoViewPathRegistered = true;
        }
        return $view;
    }
}
PKpG[Q�[ddDojo/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9854 2008-07-01 15:22:29Z matthew $
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * Exception class for Zend_Dojo
 * 
 * @uses       Zend_Exception
 * @package    Zend_Dojo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Dojo_Exception extends Zend_Exception
{
}
PKpG[�_
��Registry.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Registry
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Registry.php 12065 2008-10-21 20:56:32Z doctorrock83 $
 */

/**
 * Generic storage class helps to manage global data.
 *
 * @category   Zend
 * @package    Zend_Registry
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Registry extends ArrayObject
{
    /**
     * Class name of the singleton registry object.
     * @var string
     */
    private static $_registryClassName = 'Zend_Registry';

    /**
     * Registry object provides storage for shared objects.
     * @var Zend_Registry
     */
    private static $_registry = null;

    /**
     * Retrieves the default registry instance.
     *
     * @return Zend_Registry
     */
    public static function getInstance()
    {
        if (self::$_registry === null) {
            self::init();
        }

        return self::$_registry;
    }

    /**
     * Set the default registry instance to a specified instance.
     *
     * @param Zend_Registry $registry An object instance of type Zend_Registry,
     *   or a subclass.
     * @return void
     * @throws Zend_Exception if registry is already initialized.
     */
    public static function setInstance(Zend_Registry $registry)
    {
        if (self::$_registry !== null) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception('Registry is already initialized');
        }

        self::setClassName(get_class($registry));
        self::$_registry = $registry;
    }

    /**
     * Initialize the default registry instance.
     *
     * @return void
     */
    protected static function init()
    {
        self::setInstance(new self::$_registryClassName());
    }

    /**
     * Set the class name to use for the default registry instance.
     * Does not affect the currently initialized instance, it only applies
     * for the next time you instantiate.
     *
     * @param string $registryClassName
     * @return void
     * @throws Zend_Exception if the registry is initialized or if the
     *   class name is not valid.
     */
    public static function setClassName($registryClassName = 'Zend_Registry')
    {
        if (self::$_registry !== null) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception('Registry is already initialized');
        }

        if (!is_string($registryClassName)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception("Argument is not a class name");
        }

        /**
         * @see Zend_Loader
         */
        require_once 'Zend/Loader.php';
        Zend_Loader::loadClass($registryClassName);

        self::$_registryClassName = $registryClassName;
    }

    /**
     * Unset the default registry instance.
     * Primarily used in tearDown() in unit tests.
     * @returns void
     */
    public static function _unsetInstance()
    {
        self::$_registry = null;
    }

    /**
     * getter method, basically same as offsetGet().
     *
     * This method can be called from an object of type Zend_Registry, or it
     * can be called statically.  In the latter case, it uses the default
     * static instance stored in the class.
     *
     * @param string $index - get the value associated with $index
     * @return mixed
     * @throws Zend_Exception if no entry is registerd for $index.
     */
    public static function get($index)
    {
        $instance = self::getInstance();

        if (!$instance->offsetExists($index)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception("No entry is registered for key '$index'");
        }

        return $instance->offsetGet($index);
    }

    /**
     * setter method, basically same as offsetSet().
     *
     * This method can be called from an object of type Zend_Registry, or it
     * can be called statically.  In the latter case, it uses the default
     * static instance stored in the class.
     *
     * @param string $index The location in the ArrayObject in which to store
     *   the value.
     * @param mixed $value The object to store in the ArrayObject.
     * @return void
     */
    public static function set($index, $value)
    {
        $instance = self::getInstance();
        $instance->offsetSet($index, $value);
    }

    /**
     * Returns TRUE if the $index is a named value in the registry,
     * or FALSE if $index was not found in the registry.
     *
     * @param  string $index
     * @return boolean
     */
    public static function isRegistered($index)
    {
        if (self::$_registry === null) {
            return false;
        }
        return self::$_registry->offsetExists($index);
    }

    /**
     * Constructs a parent ArrayObject with default
     * ARRAY_AS_PROPS to allow acces as an object
     *
     * @param array $array data array
     * @param integer $flags ArrayObject flags
     */
    public function __construct($array = array(), $flags = parent::ARRAY_AS_PROPS)
    {
        parent::__construct($array, $flags);
    }

    /**
     * @param string $index
     * @returns mixed
     *
     * Workaround for http://bugs.php.net/bug.php?id=40442 (ZF-960).
     */
    public function offsetExists($index)
    {
        return array_key_exists($index, $this);
    }

}
PKpG[��4�AA
Translate.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Date.php 2498 2006-12-23 22:13:38Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * @category   Zend
 * @package    Zend_Translate
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Translate {
    /**
     * Adapter names constants
     */
    const AN_ARRAY   = 'Array';
    const AN_CSV     = 'Csv';
    const AN_GETTEXT = 'Gettext';
    const AN_INI     = 'Ini';
    const AN_QT      = 'Qt';
    const AN_TBX     = 'Tbx';
    const AN_TMX     = 'Tmx';
    const AN_XLIFF   = 'Xliff';
    const AN_XMLTM   = 'XmlTm';

    const LOCALE_DIRECTORY = 'directory';
    const LOCALE_FILENAME  = 'filename';

    /**
     * Adapter
     *
     * @var Zend_Translate_Adapter
     */
    private $_adapter;
    private static $_cache = null;

    /**
     * Generates the standard translation object
     *
     * @param  string              $adapter  Adapter to use
     * @param  array               $data     Translation source data for the adapter
     *                                       Depends on the Adapter
     * @param  string|Zend_Locale  $locale   OPTIONAL locale to use
     * @param  array               $options  OPTIONAL options for the adapter
     * @throws Zend_Translate_Exception
     */
    public function __construct($adapter, $data, $locale = null, array $options = array())
    {
        $this->setAdapter($adapter, $data, $locale, $options);
    }

    /**
     * Sets a new adapter
     *
     * @param  string              $adapter  Adapter to use
     * @param  string|array        $data     Translation data
     * @param  string|Zend_Locale  $locale   OPTIONAL locale to use
     * @param  array               $options  OPTIONAL Options to use
     * @throws Zend_Translate_Exception
     */
    public function setAdapter($adapter, $data, $locale = null, array $options = array())
    {
        if (Zend_Loader::isReadable('Zend/Translate/Adapter/' . ucfirst($adapter). '.php')) {
            $adapter = 'Zend_Translate_Adapter_' . ucfirst($adapter);
        }

        Zend_Loader::loadClass($adapter);
        if (self::$_cache !== null) {
            call_user_func(array($adapter, 'setCache'), self::$_cache);
        }
        $this->_adapter = new $adapter($data, $locale, $options);
        if (!$this->_adapter instanceof Zend_Translate_Adapter) {
            require_once 'Zend/Translate/Exception.php';
            throw new Zend_Translate_Exception("Adapter " . $adapter . " does not extend Zend_Translate_Adapter");
        }
    }

    /**
     * Returns the adapters name and it's options
     *
     * @return Zend_Translate_Adapter
     */
    public function getAdapter()
    {
        return $this->_adapter;
    }

    /**
     * Returns the set cache
     *
     * @return Zend_Cache_Core The set cache
     */
    public static function getCache()
    {
        return self::$_cache;
    }

    /**
     * Sets a cache for all instances of Zend_Translate
     *
     * @param  Zend_Cache_Core $cache Cache to store to
     * @return void
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        self::$_cache = $cache;
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        if (self::$_cache !== null) {
            return true;
        }

        return false;
    }

    /**
     * Removes any set cache
     *
     * @return void
     */
    public static function removeCache()
    {
        self::$_cache = null;
    }

    /**
     * Clears all set cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        self::$_cache->clean();
    }

    /**
     * Calls all methods from the adapter
     */
    public function __call($method, array $options)
    {
        if (method_exists($this->_adapter, $method)) {
            return call_user_func_array(array($this->_adapter, $method), $options);
        }
        require_once 'Zend/Translate/Exception.php';
        throw new Zend_Translate_Exception("Unknown method '" . $method . "' called!");
    }
}
PKpG[��j�22Acl/Role.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Role.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Acl_Role_Interface
 */
require_once 'Zend/Acl/Role/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl_Role implements Zend_Acl_Role_Interface
{
    /**
     * Unique id of Role
     *
     * @var string
     */
    protected $_roleId;

    /**
     * Sets the Role identifier
     *
     * @param  string $id
     * @return void
     */
    public function __construct($roleId)
    {
        $this->_roleId = (string) $roleId;
    }

    /**
     * Defined by Zend_Acl_Role_Interface; returns the Role identifier
     *
     * @return string
     */
    public function getRoleId()
    {
        return $this->_roleId;
    }

}
PKpG[q��.;;Acl/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl_Exception extends Zend_Exception
{}
PKpG[&U|=iiAcl/Role/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Acl_Role_Interface
{
    /**
     * Returns the string identifier of the Role
     *
     * @return string
     */
    public function getRoleId();
}
PKpG[Ɉn��!�!Acl/Role/Registry.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Registry.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Acl_Role_Interface
 */
require_once 'Zend/Acl/Role/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl_Role_Registry
{
    /**
     * Internal Role registry data storage
     *
     * @var array
     */
    protected $_roles = array();

    /**
     * Adds a Role having an identifier unique to the registry
     *
     * The $parents parameter may be a reference to, or the string identifier for,
     * a Role existing in the registry, or $parents may be passed as an array of
     * these - mixing string identifiers and objects is ok - to indicate the Roles
     * from which the newly added Role will directly inherit.
     *
     * In order to resolve potential ambiguities with conflicting rules inherited
     * from different parents, the most recently added parent takes precedence over
     * parents that were previously added. In other words, the first parent added
     * will have the least priority, and the last parent added will have the
     * highest priority.
     *
     * @param  Zend_Acl_Role_Interface              $role
     * @param  Zend_Acl_Role_Interface|string|array $parents
     * @throws Zend_Acl_Role_Registry_Exception
     * @return Zend_Acl_Role_Registry Provides a fluent interface
     */
    public function add(Zend_Acl_Role_Interface $role, $parents = null)
    {
        $roleId = $role->getRoleId();

        if ($this->has($roleId)) {
            /**
             * @see Zend_Acl_Role_Registry_Exception
             */
            require_once 'Zend/Acl/Role/Registry/Exception.php';
            throw new Zend_Acl_Role_Registry_Exception("Role id '$roleId' already exists in the registry");
        }

        $roleParents = array();

        if (null !== $parents) {
            if (!is_array($parents)) {
                $parents = array($parents);
            }
            /**
             * @see Zend_Acl_Role_Registry_Exception
             */
            require_once 'Zend/Acl/Role/Registry/Exception.php';
            foreach ($parents as $parent) {
                try {
                    if ($parent instanceof Zend_Acl_Role_Interface) {
                        $roleParentId = $parent->getRoleId();
                    } else {
                        $roleParentId = $parent;
                    }
                    $roleParent = $this->get($roleParentId);
                } catch (Zend_Acl_Role_Registry_Exception $e) {
                    throw new Zend_Acl_Role_Registry_Exception("Parent Role id '$roleParentId' does not exist");
                }
                $roleParents[$roleParentId] = $roleParent;
                $this->_roles[$roleParentId]['children'][$roleId] = $role;
            }
        }

        $this->_roles[$roleId] = array(
            'instance' => $role,
            'parents'  => $roleParents,
            'children' => array()
            );

        return $this;
    }

    /**
     * Returns the identified Role
     *
     * The $role parameter can either be a Role or a Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @throws Zend_Acl_Role_Registry_Exception
     * @return Zend_Acl_Role_Interface
     */
    public function get($role)
    {
        if ($role instanceof Zend_Acl_Role_Interface) {
            $roleId = $role->getRoleId();
        } else {
            $roleId = (string) $role;
        }

        if (!$this->has($role)) {
            /**
             * @see Zend_Acl_Role_Registry_Exception
             */
            require_once 'Zend/Acl/Role/Registry/Exception.php';
            throw new Zend_Acl_Role_Registry_Exception("Role '$roleId' not found");
        }

        return $this->_roles[$roleId]['instance'];
    }

    /**
     * Returns true if and only if the Role exists in the registry
     *
     * The $role parameter can either be a Role or a Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @return boolean
     */
    public function has($role)
    {
        if ($role instanceof Zend_Acl_Role_Interface) {
            $roleId = $role->getRoleId();
        } else {
            $roleId = (string) $role;
        }

        return isset($this->_roles[$roleId]);
    }

    /**
     * Returns an array of an existing Role's parents
     *
     * The array keys are the identifiers of the parent Roles, and the values are
     * the parent Role instances. The parent Roles are ordered in this array by
     * ascending priority. The highest priority parent Role, last in the array,
     * corresponds with the parent Role most recently added.
     *
     * If the Role does not have any parents, then an empty array is returned.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @uses   Zend_Acl_Role_Registry::get()
     * @return array
     */
    public function getParents($role)
    {
        $roleId = $this->get($role)->getRoleId();

        return $this->_roles[$roleId]['parents'];
    }

    /**
     * Returns true if and only if $role inherits from $inherit
     *
     * Both parameters may be either a Role or a Role identifier. If
     * $onlyParents is true, then $role must inherit directly from
     * $inherit in order to return true. By default, this method looks
     * through the entire inheritance DAG to determine whether $role
     * inherits from $inherit through its ancestor Roles.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @param  Zend_Acl_Role_Interface|string $inherit
     * @param  boolean                        $onlyParents
     * @throws Zend_Acl_Role_Registry_Exception
     * @return boolean
     */
    public function inherits($role, $inherit, $onlyParents = false)
    {
        /**
         * @see Zend_Acl_Role_Registry_Exception
         */
        require_once 'Zend/Acl/Role/Registry/Exception.php';
        try {
            $roleId     = $this->get($role)->getRoleId();
            $inheritId = $this->get($inherit)->getRoleId();
        } catch (Zend_Acl_Role_Registry_Exception $e) {
            throw $e;
        }

        $inherits = isset($this->_roles[$roleId]['parents'][$inheritId]);

        if ($inherits || $onlyParents) {
            return $inherits;
        }

        foreach ($this->_roles[$roleId]['parents'] as $parentId => $parent) {
            if ($this->inherits($parentId, $inheritId)) {
                return true;
            }
        }

        return false;
    }

    /**
     * Removes the Role from the registry
     *
     * The $role parameter can either be a Role or a Role identifier.
     *
     * @param  Zend_Acl_Role_Interface|string $role
     * @throws Zend_Acl_Role_Registry_Exception
     * @return Zend_Acl_Role_Registry Provides a fluent interface
     */
    public function remove($role)
    {
        /**
         * @see Zend_Acl_Role_Registry_Exception
         */
        require_once 'Zend/Acl/Role/Registry/Exception.php';
        try {
            $roleId = $this->get($role)->getRoleId();
        } catch (Zend_Acl_Role_Registry_Exception $e) {
            throw $e;
        }

        foreach ($this->_roles[$roleId]['children'] as $childId => $child) {
            unset($this->_roles[$childId]['parents'][$roleId]);
        }
        foreach ($this->_roles[$roleId]['parents'] as $parentId => $parent) {
            unset($this->_roles[$parentId]['children'][$roleId]);
        }

        unset($this->_roles[$roleId]);

        return $this;
    }

    /**
     * Removes all Roles from the registry
     *
     * @return Zend_Acl_Role_Registry Provides a fluent interface
     */
    public function removeAll()
    {
        $this->_roles = array();

        return $this;
    }

}
PKpG[M��UUAcl/Role/Registry/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Acl_Exception
 */
require_once 'Zend/Acl/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl_Role_Registry_Exception extends Zend_Acl_Exception
{}
PKpG[n\o���Acl/Assert/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Acl
 */
require_once 'Zend/Acl.php';


/**
 * @see Zend_Acl_Role_Interface
 */
require_once 'Zend/Acl/Role/Interface.php';


/**
 * @see Zend_Acl_Resource_Interface
 */
require_once 'Zend/Acl/Resource/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Acl_Assert_Interface
{
    /**
     * Returns true if and only if the assertion conditions are met
     *
     * This method is passed the ACL, Role, Resource, and privilege to which the authorization query applies. If the
     * $role, $resource, or $privilege parameters are null, it means that the query applies to all Roles, Resources, or
     * privileges, respectively.
     *
     * @param  Zend_Acl                    $acl
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  string                      $privilege
     * @return boolean
     */
    public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null,
                           $privilege = null);
}
PKpG[ca.bvvAcl/Resource.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Resource.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @see Zend_Acl_Resource_Interface
 */
require_once 'Zend/Acl/Resource/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Acl_Resource implements Zend_Acl_Resource_Interface
{
    /**
     * Unique id of Resource
     *
     * @var string
     */
    protected $_resourceId;

    /**
     * Sets the Resource identifier
     *
     * @param  string $resourceId
     * @return void
     */
    public function __construct($resourceId)
    {
        $this->_resourceId = (string) $resourceId;
    }

    /**
     * Defined by Zend_Acl_Resource_Interface; returns the Resource identifier
     *
     * @return string
     */
    public function getResourceId()
    {
        return $this->_resourceId;
    }

}
PKpG[�b�IuuAcl/Resource/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8861 2008-03-16 14:30:18Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Acl_Resource_Interface
{
    /**
     * Returns the string identifier of the Resource
     *
     * @return string
     */
    public function getResourceId();
}
PKpG[�S!f�f�
Locale.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Locale
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Locale.php 12869 2008-11-26 11:07:02Z thomas $
 */

/**
 * Base class for localization
 *
 * @category  Zend
 * @package   Zend_Locale
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale
{
    /**
     * Class wide Locale Constants
     *
     * @var array $_localeData
     */
    private static $_localeData = array(
        'root'  => true, 'aa_DJ' => true, 'aa_ER' => true, 'aa_ET' => true, 'aa'    => true,
        'af_NA' => true, 'af_ZA' => true, 'af'    => true, 'ak_GH' => true, 'ak'    => true,
        'am_ET' => true, 'am'    => true, 'ar_AE' => true, 'ar_BH' => true, 'ar_DZ' => true,
        'ar_EG' => true, 'ar_IQ' => true, 'ar_JO' => true, 'ar_KW' => true, 'ar_LB' => true,
        'ar_LY' => true, 'ar_MA' => true, 'ar_OM' => true, 'ar_QA' => true, 'ar_SA' => true,
        'ar_SD' => true, 'ar_SY' => true, 'ar_TN' => true, 'ar_YE' => true, 'ar'    => true,
        'as_IN' => true, 'as'    => true, 'az_AZ' => true, 'az'    => true, 'be_BY' => true,
        'be'    => true, 'bg_BG' => true, 'bg'    => true, 'bn_BD' => true, 'bn_IN' => true,
        'bn'    => true, 'bo_CN' => true, 'bo_IN' => true, 'bo'    => true, 'bs_BA' => true,
        'bs'    => true, 'byn_ER'=> true, 'byn'   => true, 'ca_ES' => true, 'ca'    => true,
        'cch_NG'=> true, 'cch'   => true, 'cop_EG'=> true, 'cop_US'=> true, 'cop'   => true,
        'cs_CZ' => true, 'cs'    => true, 'cy_GB' => true, 'cy'    => true, 'da_DK' => true,
        'da'    => true, 'de_AT' => true, 'de_BE' => true, 'de_CH' => true, 'de_DE' => true,
        'de_LI' => true, 'de_LU' => true, 'de'    => true, 'dv_MV' => true, 'dv'    => true,
        'dz_BT' => true, 'dz'    => true, 'ee_GH' => true, 'ee_TG' => true, 'ee'    => true,
        'el_CY' => true, 'el_GR' => true, 'el'    => true, 'en_AS' => true, 'en_AU' => true,
        'en_BE' => true, 'en_BW' => true, 'en_BZ' => true, 'en_CA' => true, 'en_GB' => true,
        'en_GU' => true, 'en_HK' => true, 'en_IE' => true, 'en_IN' => true, 'en_JM' => true,
        'en_MH' => true, 'en_MP' => true, 'en_MT' => true, 'en_NZ' => true, 'en_PH' => true,
        'en_PK' => true, 'en_SG' => true, 'en_TT' => true, 'en_UM' => true, 'en_US' => true,
        'en_VI' => true, 'en_ZA' => true, 'en_ZW' => true, 'en'    => true, 'eo'    => true,
        'es_AR' => true, 'es_BO' => true, 'es_CL' => true, 'es_CO' => true, 'es_CR' => true,
        'es_DO' => true, 'es_EC' => true, 'es_ES' => true, 'es_GT' => true, 'es_HN' => true,
        'es_MX' => true, 'es_NI' => true, 'es_PA' => true, 'es_PE' => true, 'es_PR' => true,
        'es_PY' => true, 'es_SV' => true, 'es_US' => true, 'es_UY' => true, 'es_VE' => true,
        'es'    => true, 'et_EE' => true, 'et'    => true, 'eu_ES' => true, 'eu'    => true,
        'fa_AF' => true, 'fa_IR' => true, 'fa'    => true, 'fi_FI' => true, 'fi'    => true,
        'fil'   => true, 'fo_FO' => true, 'fo'    => true, 'fr_BE' => true, 'fr_CA' => true,
        'fr_CH' => true, 'fr_FR' => true, 'fr_LU' => true, 'fr_MC' => true, 'fr'    => true,
        'fur_IT'=> true, 'fur'   => true, 'ga_IE' => true, 'ga'    => true, 'gaa_GH'=> true,
        'gaa'   => true, 'gez_ER'=> true, 'gez_ET'=> true, 'gez'   => true, 'gl_ES' => true,
        'gl'    => true, 'gu_IN' => true, 'gu'    => true, 'gv_GB' => true, 'gv'    => true,
        'ha_GH' => true, 'ha_NE' => true, 'ha_NG' => true, 'ha'    => true, 'haw_US'=> true,
        'haw'   => true, 'he_IL' => true, 'he'    => true, 'hi_IN' => true, 'hi'    => true,
        'hr_HR' => true, 'hr'    => true, 'hu_HU' => true, 'hu'    => true, 'hy_AM' => true,
        'hy'    => true, 'ia'    => true, 'id_ID' => true, 'id'    => true, 'ig_NG' => true,
        'ig'    => true, 'ii_CN' => true, 'ii'    => true, 'is_IS' => true, 'is'    => true,
        'it_CH' => true, 'it_IT' => true, 'it'    => true, 'iu'    => true, 'ja_JP' => true,
        'ja'    => true, 'ka_GE' => true, 'ka'    => true, 'kaj_NG'=> true, 'kaj'   => true,
        'kam_KE'=> true, 'kam'   => true, 'kcg_NG'=> true, 'kcg'   => true, 'kfo_NG'=> true,
        'kfo'   => true, 'kk_KZ' => true, 'kk'    => true, 'kl_GL' => true, 'kl'    => true,
        'km_KH' => true, 'km'    => true, 'kn_IN' => true, 'kn'    => true, 'ko_KR' => true,
        'ko'    => true, 'kok_IN'=> true, 'kok'   => true, 'kpe_GN'=> true, 'kpe_LR'=> true,
        'kpe'   => true, 'ku_IQ' => true, 'ku_IR' => true, 'ku_SY' => true, 'ku_TR' => true,
        'ku'    => true, 'kw_GB' => true, 'kw'    => true, 'ky_KG' => true, 'ky'    => true,
        'ln_CD' => true, 'ln_CG' => true, 'ln'    => true, 'lo_LA' => true, 'lo'    => true,
        'lt_LT' => true, 'lt'    => true, 'lv_LV' => true, 'lv'    => true, 'mk_MK' => true,
        'mk'    => true, 'ml_IN' => true, 'ml'    => true, 'mn_MN' => true, 'mn'    => true,
        'mr_IN' => true, 'mr'    => true, 'ms_BN' => true, 'ms_MY' => true, 'ms'    => true,
        'mt_MT' => true, 'mt'    => true, 'my_MM' => true, 'my'    => true, 'nb_NO' => true,
        'nb'    => true, 'ne_NP' => true, 'ne'    => true, 'nl_BE' => true, 'nl_NL' => true,
        'nl'    => true, 'nn_NO' => true, 'nn'    => true, 'nr_ZA' => true, 'nr'    => true,
        'nso_ZA'=> true, 'nso'   => true, 'ny_MW' => true, 'ny'    => true, 'om_ET' => true,
        'om_KE' => true, 'om'    => true, 'or_IN' => true, 'or'    => true, 'pa_IN' => true,
        'pa_PK' => true, 'pa'    => true, 'pl_PL' => true, 'pl'    => true, 'ps_AF' => true,
        'ps'    => true, 'pt_BR' => true, 'pt_PT' => true, 'pt'    => true, 'ro_RO' => true,
        'ro'    => true, 'ru_RU' => true, 'ru_UA' => true, 'ru'    => true, 'rw_RW' => true,
        'rw'    => true, 'sa_IN' => true, 'sa'    => true, 'se_FI' => true, 'se_NO' => true,
        'se'    => true, 'sh_BA' => true, 'sh_CS' => true, 'sh_YU' => true, 'sh'    => true,
        'sid_ET'=> true, 'sid'   => true, 'sk_SK' => true, 'sk'    => true, 'sl_SI' => true,
        'sl'    => true, 'so_DJ' => true, 'so_ET' => true, 'so_KE' => true, 'so_SO' => true,
        'so'    => true, 'sq_AL' => true, 'sq'    => true, 'sr_BA' => true, 'sr_CS' => true,
        'sr_ME' => true, 'sr_RS' => true, 'sr_YU' => true, 'sr'    => true, 'ss_ZA' => true,
        'ss'    => true, 'ssy'   => true, 'st_ZA' => true, 'st'    => true, 'sv_FI' => true,
        'sv_SE' => true, 'sv'    => true, 'sw_KE' => true, 'sw_TZ' => true, 'sw'    => true,
        'syr_SY'=> true, 'syr'   => true, 'ta_IN' => true, 'ta'    => true, 'te_IN' => true,
        'te'    => true, 'tg_TJ' => true, 'tg'    => true, 'th_TH' => true, 'th'    => true,
        'ti_ER' => true, 'ti_ET' => true, 'ti'    => true, 'tig_ER'=> true, 'tig'   => true,
        'tn_ZA' => true, 'tn'    => true, 'to_TO' => true, 'to'    => true, 'tr_TR' => true,
        'tr'    => true, 'ts_ZA' => true, 'ts'    => true, 'tt_RU' => true, 'tt'    => true,
        'ug'    => true, 'uk_UA' => true, 'uk'    => true, 'und_ZZ'=> true, 'und'   => true,
        'ur_IN' => true, 'ur_PK' => true, 'ur'    => true, 'uz_AF' => true, 'uz_UZ' => true,
        'uz'    => true, 've_ZA' => true, 've'    => true, 'vi_VN' => true, 'vi'    => true,
        'wal_ET'=> true, 'wal'   => true, 'wo_SN' => true, 'wo'    => true, 'xh_ZA' => true,
        'xh'    => true, 'yo_NG' => true, 'yo'    => true, 'zh_CN' => true, 'zh_HK' => true,
        'zh_MO' => true, 'zh_SG' => true, 'zh_TW' => true, 'zh'    => true, 'zu_ZA' => true,
        'zu'    => true
    );

    /**
     * Autosearch constants
     */
    const BROWSER     = 'browser';
    const ENVIRONMENT = 'environment';
    const ZFDEFAULT   = 'default';

    /**
     * Defines if old behaviour should be supported
     * Old behaviour throws notices and will be deleted in future releases
     *
     * @var boolean
     */
    public static $compatibilityMode = true;

    /**
     * Internal variable
     *
     * @var boolean
     */
    private static $_breakChain = false;

    /**
     * Actual set locale
     *
     * @var string Locale
     */
    protected $_locale;

    /**
     * Automatic detected locale
     *
     * @var string Locales
     */
    protected static $_auto;

    /**
     * Browser detected locale
     *
     * @var string Locales
     */
    protected static $_browser;

    /**
     * Environment detected locale
     *
     * @var string Locales
     */
    protected static $_environment;

    /**
     * Default locale
     *
     * @var string Locales
     */
    protected static $_default = array('en' => true);

    /**
     * Generates a locale object
     * If no locale is given a automatic search is done
     * Then the most probable locale will be automatically set
     * Search order is
     *  1. Given Locale
     *  2. HTTP Client
     *  3. Server Environment
     *  4. Framework Standard
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for parsing input
     * @throws Zend_Locale_Exception When autodetection has been failed
     */
    public function __construct($locale = null)
    {
        $locale = self::_prepareLocale($locale);
        $this->setLocale((string) $locale);
    }

    /**
     * Serialization Interface
     *
     * @return string
     */
    public function serialize()
    {
        return serialize($this);
    }

    /**
     * Returns a string representation of the object
     *
     * @return string
     */
    public function toString()
    {
        return (string) $this->_locale;
    }

    /**
     * Returns a string representation of the object
     * Alias for toString
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }

    /**
     * Return the default locale
     *
     * @return array Returns an array of all locale string
     */
    public static function getDefault()
    {
        if ((self::$compatibilityMode === true) or (func_num_args() > 0)) {
            if (!self::$_breakChain) {
                self::$_breakChain = true;
                trigger_error('You are running Zend_Locale in compatibility mode... please migrate your scripts', E_USER_NOTICE);
                $params = func_get_args();
                $param = null;
                if (isset($params[0])) {
                    $param = $params[0];
                }
                return self::getOrder($param);
            }

            self::$_breakChain = false;
        }

        return self::$_default;
    }

    /**
     * Sets a new default locale
     * If provided you can set a quality between 0 and 1 (or 2 and 100)
     * which represents the percent of quality the browser
     * requested within HTTP
     *
     * @param  string|Zend_Locale $locale  Locale to set
     * @param  float              $quality The quality to set from 0 to 1
     * @throws Zend_Locale_Exception When a autolocale was given
     * @throws Zend_Locale_Exception When a unknown locale was given
     * @return void
     */
    public static function setDefault($locale, $quality = 1)
    {
        if (($locale === 'auto') or ($locale === 'root') or ($locale === 'default') or
            ($locale === 'environment') or ($locale === 'browser')) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception('Only full qualified locales can be used as default!');
        }

        if (($quality < 0.1) or ($quality > 100)) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("Quality must be between 0.1 and 100");
        }

        if ($quality > 1) {
            $quality /= 100;
        }

        if (isset(self::$_localeData[(string) $locale]) === true) {
            self::$_default = array((string) $locale => $quality);
        } else {
            $locale = explode('_', (string) $locale);
            if (isset(self::$_localeData[$locale[0]]) === true) {
                self::$_default = array($locale[0] => $quality);
            } else {
                require_once 'Zend/Locale/Exception.php';
                throw new Zend_Locale_Exception("Unknown locale '" . (string) $locale . "' can not be set as default!");
            }
        }
    }

    /**
     * Expects the Systems standard locale
     *
     * For Windows:
     * f.e.: LC_COLLATE=C;LC_CTYPE=German_Austria.1252;LC_MONETARY=C
     * would be recognised as de_AT
     *
     * @return array
     */
    public static function getEnvironment()
    {
        if (self::$_environment !== null) {
            return self::$_environment;
        }

        require_once 'Zend/Locale/Data/Translation.php';

        $language      = setlocale(LC_ALL, 0);
        $languages     = explode(';', $language);
        $languagearray = array();

        foreach ($languages as $locale) {
            if (strpos($locale, '=') !== false) {
                $language = substr($locale, strpos($locale, '='));
                $language = substr($language, 1);
            }

            if ($language !== 'C') {
                if (strpos($language, '.') !== false) {
                    $language = substr($language, 0, (strpos($language, '.') - 1));
                } else if (strpos($language, '@') !== false) {
                    $language = substr($language, 0, (strpos($language, '@') - 1));
                }

                $splitted = explode('_', $language);
                $language = (string) $language;
                if (isset(self::$_localeData[$language]) === true) {
                    $languagearray[$language] = 1;
                    if (strlen($language) > 4) {
                        $languagearray[substr($language, 0, 2)] = 1;
                    }

                    continue;
                }

                if (empty(Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]]) === false) {
                    if (empty(Zend_Locale_Data_Translation::$localeTranslation[$splitted[1]]) === false) {
                        $languagearray[Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]] . '_' .
                        Zend_Locale_Data_Translation::$localeTranslation[$splitted[1]]] = 1;
                    }

                    $languagearray[Zend_Locale_Data_Translation::$localeTranslation[$splitted[0]]] = 1;
                }
            }
        }

        self::$_environment = $languagearray;
        return $languagearray;
    }

    /**
     * Return an array of all accepted languages of the client
     * Expects RFC compilant Header !!
     *
     * The notation can be :
     * de,en-UK-US;q=0.5,fr-FR;q=0.2
     *
     * @return array - list of accepted languages including quality
     */
    public static function getBrowser()
    {
        if (self::$_browser !== null) {
            return self::$_browser;
        }

        $httplanguages = getenv('HTTP_ACCEPT_LANGUAGE');
        $languages     = array();
        if (empty($httplanguages) === true) {
            return $languages;
        }

        $accepted = preg_split('/,\s*/', $httplanguages);

        foreach ($accepted as $accept) {
            $match  = null;
            $result = preg_match('/^([a-z]{1,8}(?:[-_][a-z]{1,8})*)(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i',
                                 $accept, $match);

            if ($result < 1) {
                continue;
            }

            if (isset($match[2]) === true) {
                $quality = (float) $match[2];
            } else {
                $quality = 1.0;
            }

            $countrys = explode('-', $match[1]);
            $region   = array_shift($countrys);

            $country2 = explode('_', $region);
            $region   = array_shift($country2);

            foreach ($countrys as $country) {
                $languages[$region . '_' . strtoupper($country)] = $quality;
            }

            foreach ($country2 as $country) {
                $languages[$region . '_' . strtoupper($country)] = $quality;
            }

            if ((isset($languages[$region]) === false) || ($languages[$region] < $quality)) {
                $languages[$region] = $quality;
            }
        }

        self::$_browser = $languages;
        return $languages;
    }

    /**
     * Sets a new locale
     *
     * @param  string|Zend_Locale $locale (Optional) New locale to set
     * @return void
     */
    public function setLocale($locale = null)
    {
        $locale = self::_prepareLocale($locale);

        if (isset(self::$_localeData[(string) $locale]) === false) {
            $region = substr((string) $locale, 0, 3);
            if (isset($region[2]) === true) {
                if (($region[2] === '_') or ($region[2] === '-')) {
                    $region = substr($region, 0, 2);
                }
            }

            if (isset(self::$_localeData[(string) $region]) === true) {
                $this->_locale = $region;
            } else {
                $this->_locale = 'root';
            }
        } else {
            $this->_locale = $locale;
        }
    }

    /**
     * Returns the language part of the locale
     *
     * @return language
     */
    public function getLanguage()
    {
        $locale = explode('_', $this->_locale);
        return $locale[0];
    }

    /**
     * Returns the region part of the locale if available
     *
     * @return string|false - Regionstring
     */
    public function getRegion()
    {
        $locale = explode('_', $this->_locale);
        if (isset($locale[1]) === true) {
            return $locale[1];
        }

        return false;
    }

    /**
     * Return the accepted charset of the client
     *
     * @return string
     */
    public static function getHttpCharset()
    {
        $httpcharsets = getenv('HTTP_ACCEPT_CHARSET');

        $charsets = array();
        if ($httpcharsets === false) {
            return $charsets;
        }

        $accepted = preg_split('/,\s*/', $httpcharsets);
        foreach ($accepted as $accept) {
            if (empty($accept) === true) {
                continue;
            }

            if (strpos($accept, ';') !== false) {
                $quality        = (float) substr($accept, (strpos($accept, '=') + 1));
                $pos            = substr($accept, 0, strpos($accept, ';'));
                $charsets[$pos] = $quality;
            } else {
                $quality           = 1.0;
                $charsets[$accept] = $quality;
            }
        }

        return $charsets;
    }

    /**
     * Returns true if both locales are equal
     *
     * @param  Zend_Locale $object Locale to check for equality
     * @return boolean
     */
    public function equals(Zend_Locale $object)
    {
        if ($object->toString() === $this->toString()) {
            return true;
        }

        return false;
    }

    /**
     * Returns localized informations as array, supported are several
     * types of informations.
     * For detailed information about the types look into the documentation
     *
     * @param  string             $path   (Optional) Type of information to return
     * @param  string|Zend_Locale $locale (Optional) Locale|Language for which this informations should be returned
     * @param  string             $value  (Optional) Value for detail list
     * @return array Array with the wished information in the given language
     */
    public static function getTranslationList($path = null, $locale = null, $value = null)
    {
        require_once 'Zend/Locale/Data.php';
        $locale = self::_prepareLocale($locale);
        $result = Zend_Locale_Data::getList($locale, $path, $value);
        if (empty($result) === true) {
            return false;
        }

        return $result;
    }

    /**
     * Returns an array with the name of all languages translated to the given language
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for language translation
     * @return array
     */
    public static function getLanguageTranslationList($locale = null)
    {
        return self::getTranslationList('language', $locale);
    }

    /**
     * Returns an array with the name of all scripts translated to the given language
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for script translation
     * @return array
     */
    public static function getScriptTranslationList($locale = null)
    {
        return self::getTranslationList('script', $locale);
    }

    /**
     * Returns an array with the name of all countries translated to the given language
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for country translation
     * @return array
     */
    public static function getCountryTranslationList($locale = null)
    {
        return self::getTranslationList('territory', $locale, 2);
    }

    /**
     * Returns an array with the name of all territories translated to the given language
     * All territories contains other countries.
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for territory translation
     * @return array
     */
    public static function getTerritoryTranslationList($locale = null)
    {
        return self::getTranslationList('territory', $locale, 1);
    }

    /**
     * Returns a localized information string, supported are several types of informations.
     * For detailed information about the types look into the documentation
     *
     * @param  string             $value  Name to get detailed information about
     * @param  string             $path   (Optional) Type of information to return
     * @param  string|Zend_Locale $locale (Optional) Locale|Language for which this informations should be returned
     * @return string|false The wished information in the given language
     */
    public static function getTranslation($value = null, $path = null, $locale = null)
    {
        require_once 'Zend/Locale/Data.php';
        $locale = self::_prepareLocale($locale);
        $result = Zend_Locale_Data::getContent($locale, $path, $value);
        if (empty($result) === true) {
            return false;
        }

        return $result;
    }

    /**
     * Returns the localized language name
     *
     * @param  string $value  Name to get detailed information about
     * @param  string $locale (Optional) Locale for language translation
     * @return array
     */
    public static function getLanguageTranslation($value, $locale = null)
    {
        return self::getTranslation($value, 'language', $locale);
    }

    /**
     * Returns the localized script name
     *
     * @param  string $value  Name to get detailed information about
     * @param  string $locale (Optional) locale for script translation
     * @return array
     */
    public static function getScriptTranslation($value, $locale = null)
    {
        return self::getTranslation($value, 'script', $locale);
    }

    /**
     * Returns the localized country name
     *
     * @param  string             $value  Name to get detailed information about
     * @param  string|Zend_Locale $locale (Optional) Locale for country translation
     * @return array
     */
    public static function getCountryTranslation($value, $locale = null)
    {
        return self::getTranslation($value, 'country', $locale);
    }

    /**
     * Returns the localized territory name
     * All territories contains other countries.
     *
     * @param  string             $value  Name to get detailed information about
     * @param  string|Zend_Locale $locale (Optional) Locale for territory translation
     * @return array
     */
    public static function getTerritoryTranslation($value, $locale = null)
    {
        return self::getTranslation($value, 'territory', $locale);
    }

    /**
     * Returns an array with translated yes strings
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for language translation (defaults to $this locale)
     * @return array
     */
    public static function getQuestion($locale = null)
    {
        require_once 'Zend/Locale/Data.php';
        $locale            = self::_prepareLocale($locale);
        $quest             = Zend_Locale_Data::getList($locale, 'question');
        $yes               = explode(':', $quest['yes']);
        $no                = explode(':', $quest['no']);
        $quest['yes']      = $yes[0];
        $quest['yesarray'] = $yes;
        $quest['no']       = $no[0];
        $quest['noarray']  = $no;
        $quest['yesexpr']  = self::_prepareQuestionString($yes);
        $quest['noexpr']   = self::_prepareQuestionString($no);

        return $quest;
    }

    /**
     * Internal function for preparing the returned question regex string
     *
     * @param  string $input Regex to parse
     * @return string
     */
    private static function _prepareQuestionString($input)
    {
        $regex = '';
        if (is_array($input) === true) {
            $regex = '^';
            $start = true;
            foreach ($input as $row) {
                if ($start === false) {
                    $regex .= '|';
                }

                $start  = false;
                $regex .= '(';
                $one    = null;
                if (strlen($row) > 2) {
                    $one = true;
                }

                foreach (str_split($row, 1) as $char) {
                    $regex .= '[' . $char;
                    $regex .= strtoupper($char) . ']';
                    if ($one === true) {
                        $one    = false;
                        $regex .= '(';
                    }
                }

                if ($one === false) {
                    $regex .= ')';
                }

                $regex .= '?)';
            }
        }

        return $regex;
    }

    /**
     * Checks if a locale identifier is a real locale or not
     * Examples:
     * "en_XX" refers to "en", which returns true
     * "XX_yy" refers to "root", which returns false
     *
     * @param  string|Zend_Locale $locale     Locale to check for
     * @param  boolean            $strict     (Optional) If true, no rerouting will be done when checking
     * @param  boolean            $compatible (DEPRECIATED) Only for internal usage, brakes compatibility mode
     * @return boolean If the locale is known dependend on the settings
     */
    public static function isLocale($locale, $strict = false, $compatible = true)
    {
        try {
            $locale = self::_prepareLocale($locale, $strict);
        } catch (Zend_Locale_Exception $e) {
            return false;
        }

        if (($compatible === true) and (self::$compatibilityMode === true)) {
            trigger_error('You are running Zend_Locale in compatibility mode... please migrate your scripts', E_USER_NOTICE);
            if (isset(self::$_localeData[$locale]) === true) {
                return $locale;
            } else if (!$strict) {
                $locale = explode('_', $locale);
                if (isset(self::$_localeData[$locale[0]]) === true) {
                    return $locale[0];
                }
            }
        } else {
            if (isset(self::$_localeData[$locale]) === true) {
                return true;
            } else if (!$strict) {
                $locale = explode('_', $locale);
                if (isset(self::$_localeData[$locale[0]]) === true) {
                    return true;
                }
            }
        }

        return false;
    }

    /**
     * Returns a list of all known locales where the locale is the key
     * Only real locales are returned, the internal locales 'root', 'auto', 'browser'
     * and 'environment' are suppressed
     *
     * @return array List of all Locales
     */
    public static function getLocaleList()
    {
        $list = self::$_localeData;
        unset($list['root']);
        unset($list['auto']);
        unset($list['browser']);
        unset($list['environment']);
        return $list;
    }

    /**
     * Returns the set cache
     *
     * @return Zend_Cache_Core The set cache
     */
    public static function getCache()
    {
        require_once 'Zend/Locale/Data.php';
        $cache = Zend_Locale_Data::getCache();

        return $cache;
    }

    /**
     * Sets a cache
     *
     * @param  Zend_Cache_Core $cache Cache to set
     * @return void
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        require_once 'Zend/Locale/Data.php';
        Zend_Locale_Data::setCache($cache);
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        require_once 'Zend/Locale/Data.php';
        return Zend_Locale_Data::hasCache();
    }

    /**
     * Removes any set cache
     *
     * @return void
     */
    public static function removeCache()
    {
        require_once 'Zend/Locale/Data.php';
        Zend_Locale_Data::removeCache();
    }

    /**
     * Clears all set cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        require_once 'Zend/Locale/Data.php';
        Zend_Locale_Data::clearCache();
    }

    /**
     * Internal function, returns a single locale on detection
     *
     * @param  string|Zend_Locale $locale (Optional) Locale to work on
     * @param  boolean            $strict (Optional) Strict preparation
     * @throws Zend_Locale_Exception When no locale is set which is only possible when the class was wrong extended
     * @return string
     */
    private static function _prepareLocale($locale, $strict = false)
    {
        if ($locale instanceof Zend_Locale) {
            $locale = $locale->toString();
        }

        if (is_array($locale)) {
            return '';
        }

        if (empty(self::$_auto) === true) {
            self::$_browser     = self::getBrowser();
            self::$_environment = self::getEnvironment();
            self::$_breakChain  = true;
            self::$_auto        = self::getBrowser() + self::getEnvironment() + self::getDefault();
        }

        if (!$strict) {
            if ($locale === 'browser') {
                $locale = self::$_browser;
            }

            if ($locale === 'environment') {
                $locale = self::$_environment;
            }

            if ($locale === 'default') {
                $locale = self::$_default;
            }

            if (($locale === 'auto') or ($locale === null)) {
                $locale = self::$_auto;
            }

            if (is_array($locale) === true) {
                $locale = key($locale);
            }
        }

        // This can only happen when someone extends Zend_Locale and erases the default
        if ($locale === null) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception('Autodetection of Locale has been failed!');
        }

        if (strpos($locale, '-') !== false) {
            $locale = strtr($locale, '-', '_');
        }

        return (string) $locale;
    }

    /**
     * Search the locale automatically and return all used locales
     * ordered by quality
     *
     * Standard Searchorder is Browser, Environment, Default
     *
     * @param  string  $searchorder (Optional) Searchorder
     * @return array Returns an array of all detected locales
     */
    public static function getOrder($order = null)
    {
        switch ($order) {
            case self::ENVIRONMENT:
                self::$_breakChain = true;
                $languages         = self::getEnvironment() + self::getBrowser() + self::getDefault();
                break;

            case self::ZFDEFAULT:
                self::$_breakChain = true;
                $languages         = self::getDefault() + self::getEnvironment() + self::getBrowser();
                break;

            default:
                self::$_breakChain = true;
                $languages         = self::getBrowser() + self::getEnvironment() + self::getDefault();
                break;
        }

        return $languages;
    }
}
PKpG[�����Version.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Version
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Version.php 13678 2009-01-17 21:34:08Z alexander $
 */

/**
 * Class to store and retrieve the version of Zend Framework.
 *
 * @category   Zend
 * @package    Zend_Version
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
final class Zend_Version
{
    /**
     * Zend Framework version identification - see compareVersion()
     */
    const VERSION = '1.7.3';

    /**
     * Compare the specified Zend Framework version string $version
     * with the current Zend_Version::VERSION of the Zend Framework.
     *
     * @param  string  $version  A version string (e.g. "0.7.1").
     * @return boolean           -1 if the $version is older,
     *                           0 if they are the same,
     *                           and +1 if $version is newer.
     *
     */
    public static function compareVersion($version)
    {
        return version_compare($version, self::VERSION);
    }
}
PKpG[�w|,e,eMail.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mail.php 13589 2009-01-10 13:04:25Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Mail_Transport_Abstract
 */
require_once 'Zend/Mail/Transport/Abstract.php';

/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * @see Zend_Mime_Message
 */
require_once 'Zend/Mime/Message.php';

/**
 * @see Zend_Mime_Part
 */
require_once 'Zend/Mime/Part.php';


/**
 * Class for sending an email.
 *
 * @category   Zend
 * @package    Zend_Mail
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mail extends Zend_Mime_Message
{
    /**#@+
     * @access protected
     */

    /**
     * @var Zend_Mail_Transport_Abstract
     * @static
     */
    protected static $_defaultTransport = null;

    /**
     * Mail character set
     * @var string
     */
    protected $_charset = null;

    /**
     * Mail headers
     * @var array
     */
    protected $_headers = array();

    /**
     * Encoding of Mail headers
     * @var string
     */
    protected $_encodingOfHeaders = Zend_Mime::ENCODING_QUOTEDPRINTABLE;

    /**
     * From: address
     * @var string
     */
    protected $_from = null;

    /**
     * To: addresses
     * @var array
     */
    protected $_to = array();

    /**
     * Array of all recipients
     * @var array
     */
    protected $_recipients = array();

    /**
     * Return-Path header
     * @var string
     */
    protected $_returnPath = null;

    /**
     * Subject: header
     * @var string
     */
    protected $_subject = null;

    /**
     * Date: header
     * @var string
     */
    protected $_date = null;

    /**
     * Message-ID: header
     * @var string
     */
    protected $_messageId = null;

    /**
     * text/plain MIME part
     * @var false|Zend_Mime_Part
     */
    protected $_bodyText = false;

    /**
     * text/html MIME part
     * @var false|Zend_Mime_Part
     */
    protected $_bodyHtml = false;

    /**
     * MIME boundary string
     * @var string
     */
    protected $_mimeBoundary = null;

    /**
     * Content type of the message
     * @var string
     */
    protected $_type = null;

    /**#@-*/

    /**
     * Flag: whether or not email has attachments
     * @var boolean
     */
    public $hasAttachments = false;


    /**
     * Sets the default mail transport for all following uses of
     * Zend_Mail::send();
     *
     * @todo Allow passing a string to indicate the transport to load
     * @todo Allow passing in optional options for the transport to load
     * @param  Zend_Mail_Transport_Abstract $transport
     */
    public static function setDefaultTransport(Zend_Mail_Transport_Abstract $transport)
    {
        self::$_defaultTransport = $transport;
    }

    /**
     * Public constructor
     *
     * @param string $charset
     */
    public function __construct($charset = 'iso-8859-1')
    {
        $this->_charset = $charset;
    }

    /**
     * Return charset string
     *
     * @return string
     */
    public function getCharset()
    {
        return $this->_charset;
    }

    /**
     * Set content type
     *
     * Should only be used for manually setting multipart content types.
     *
     * @param  string $type Content type
     * @return Zend_Mail Implements fluent interface
     * @throws Zend_Mail_Exception for types not supported by Zend_Mime
     */
    public function setType($type)
    {
        $allowed = array(
            Zend_Mime::MULTIPART_ALTERNATIVE,
            Zend_Mime::MULTIPART_MIXED,
            Zend_Mime::MULTIPART_RELATED,
        );
        if (!in_array($type, $allowed)) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Invalid content type "' . $type . '"');
        }

        $this->_type = $type;
        return $this;
    }

    /**
     * Get content type of the message
     *
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Set an arbitrary mime boundary for the message
     *
     * If not set, Zend_Mime will generate one.
     *
     * @param  string    $boundary
     * @return Zend_Mail Provides fluent interface
     */
    public function setMimeBoundary($boundary)
    {
        $this->_mimeBoundary = $boundary;

        return $this;
    }

    /**
     * Return the boundary string used for the message
     *
     * @return string
     */
    public function getMimeBoundary()
    {
        return $this->_mimeBoundary;
    }

    /**
     * Return the encoding of mail headers
     *
     * @return string
     */
    public function getEncodingOfHeaders()
    {
        return $this->_encodingOfHeaders;
    }

    /**
     * Set the encoding of mail headers
     *
     * @param string $encoding
     * @return Zend_Mail Provides fluent interface
     *
     */
    public function setEncodingOfHeaders($encoding)
    {
        $allowed = array(
            Zend_Mime::ENCODING_BASE64,
            Zend_Mime::ENCODING_QUOTEDPRINTABLE
        );
        if (!in_array($encoding, $allowed)) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Invalid encoding "' . $encoding . '"');
        }
        $this->_encodingOfHeaders = $encoding;

        return $this;
    }

    /**
     * Sets the text body for the message.
     *
     * @param  string $txt
     * @param  string $charset
     * @param  string $encoding
     * @return Zend_Mail Provides fluent interface
    */
    public function setBodyText($txt, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($txt);
        $mp->encoding = $encoding;
        $mp->type = Zend_Mime::TYPE_TEXT;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyText = $mp;

        return $this;
    }

    /**
     * Return text body Zend_Mime_Part or string
     *
     * @param  bool textOnly Whether to return just the body text content or the MIME part; defaults to false, the MIME part
     * @return false|Zend_Mime_Part|string
     */
    public function getBodyText($textOnly = false)
    {
        if ($textOnly && $this->_bodyText) {
            $body = $this->_bodyText;
            return $body->getContent();
        }

        return $this->_bodyText;
    }

    /**
     * Sets the HTML body for the message
     *
     * @param  string    $html
     * @param  string    $charset
     * @param  string    $encoding
     * @return Zend_Mail Provides fluent interface
     */
    public function setBodyHtml($html, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($html);
        $mp->encoding = $encoding;
        $mp->type = Zend_Mime::TYPE_HTML;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyHtml = $mp;

        return $this;
    }

    /**
     * Return Zend_Mime_Part representing body HTML
     *
     * @param  bool $htmlOnly Whether to return the body HTML only, or the MIME part; defaults to false, the MIME part
     * @return false|Zend_Mime_Part|string
     */
    public function getBodyHtml($htmlOnly = false)
    {
        if ($htmlOnly && $this->_bodyHtml) {
            $body = $this->_bodyHtml;
            return $body->getContent();
        }

        return $this->_bodyHtml;
    }

    /**
     * Adds an existing attachment to the mail message
     *
     * @param  Zend_Mime_Part $attachment
     * @return Zend_Mail Provides fluent interface
     */
    public function addAttachment(Zend_Mime_Part $attachment)
    {
        $this->addPart($attachment);
        $this->hasAttachments = true;

        return $this;
    }

    /**
     * Creates a Zend_Mime_Part attachment
     *
     * Attachment is automatically added to the mail object after creation. The
     * attachment object is returned to allow for further manipulation.
     *
     * @param  string         $body
     * @param  string         $mimeType
     * @param  string         $disposition
     * @param  string         $encoding
     * @param  string         $filename OPTIONAL A filename for the attachment
     * @return Zend_Mime_Part Newly created Zend_Mime_Part object (to allow
     * advanced settings)
     */
    public function createAttachment($body,
                                     $mimeType    = Zend_Mime::TYPE_OCTETSTREAM,
                                     $disposition = Zend_Mime::DISPOSITION_ATTACHMENT,
                                     $encoding    = Zend_Mime::ENCODING_BASE64,
                                     $filename    = null)
    {

        $mp = new Zend_Mime_Part($body);
        $mp->encoding = $encoding;
        $mp->type = $mimeType;
        $mp->disposition = $disposition;
        $mp->filename = $filename;

        $this->addAttachment($mp);

        return $mp;
    }

    /**
     * Return a count of message parts
     *
     * @return integer
     */
    public function getPartCount()
    {
        return count($this->_parts);
    }

    /**
     * Encode header fields
     *
     * Encodes header content according to RFC1522 if it contains non-printable
     * characters.
     *
     * @param  string $value
     * @return string
     */
    protected function _encodeHeader($value)
    {
      if (Zend_Mime::isPrintable($value)) {
          return $value;
      } elseif ($this->_encodingOfHeaders === Zend_Mime::ENCODING_QUOTEDPRINTABLE) {
          $quotedValue = Zend_Mime::encodeQuotedPrintable($value);
          $quotedValue = str_replace(array('?', ' ', '_'), array('=3F', '=20', '=5F'), $quotedValue);
          return '=?' . $this->_charset . '?Q?' . $quotedValue . '?=';
      } elseif ($this->_encodingOfHeaders === Zend_Mime::ENCODING_BASE64) {
            return '=?' . $this->_charset . '?B?' . Zend_Mime::encodeBase64($value) . '?=';
      } else {
          /**
           * @todo 7Bit and 8Bit is currently handled the same way.
           */
            return $value;
      }
    }

    /**
     * Add a header to the message
     *
     * Adds a header to this message. If append is true and the header already
     * exists, raises a flag indicating that the header should be appended.
     *
     * @param string  $headerName
     * @param string  $value
     * @param bool $append
     */
    protected function _storeHeader($headerName, $value, $append = false)
    {
        if (isset($this->_headers[$headerName])) {
            $this->_headers[$headerName][] = $value;
        } else {
            $this->_headers[$headerName] = array($value);
        }

        if ($append) {
            $this->_headers[$headerName]['append'] = true;
        }

    }

    /**
     * Clear header from the message
     *
     * @param string $headerName
     */
    protected function _clearHeader($headerName)
    {
        if (isset($this->_headers[$headerName])){
            unset($this->_headers[$headerName]);
        }
    }

    /**
     * Add a recipient
     *
     * @param string $email
     * @param boolean $to
     */
    protected function _addRecipient($email, $to = false)
    {
        // prevent duplicates
        $this->_recipients[$email] = 1;

        if ($to) {
            $this->_to[] = $email;
        }
    }

    /**
     * Helper function for adding a recipient and the corresponding header
     *
     * @param string $headerName
     * @param string $name
     * @param string $email
     */
    protected function _addRecipientAndHeader($headerName, $name, $email)
    {
    	$name  = $this->_filterName($name);
        $email = $this->_filterEmail($email);
        $this->_addRecipient($email, ('To' == $headerName) ? true : false);
        if ($name !== '' && $name !== null && $name !== $email) {
            $encodedName = $this->_encodeHeader($name);
            if ($encodedName === $name && strpos($name, ',') !== false) {
                $format = '"%s" <%s>';
            } else {
                $format = '%s <%s>';
            }
            $destination = sprintf($format, $encodedName, $email);
        } else {
            $destination = $email;
        }
        $this->_storeHeader($headerName, $destination, true);
    }

    /**
     * Adds To-header and recipient
     *
     * @param  string $email
     * @param  string $name
     * @return Zend_Mail Provides fluent interface
     */
    public function addTo($email, $name='')
    {
        $this->_addRecipientAndHeader('To', $name, $email);
        return $this;
    }

    /**
     * Adds Cc-header and recipient
     *
     * @param  string    $email
     * @param  string    $name
     * @return Zend_Mail Provides fluent interface
     */
    public function addCc($email, $name='')
    {
        $this->_addRecipientAndHeader('Cc', $name, $email);
        return $this;
    }

    /**
     * Adds Bcc recipient
     *
     * @param  string    $email
     * @return Zend_Mail Provides fluent interface
     */
    public function addBcc($email)
    {
        $this->_addRecipientAndHeader('Bcc', '', $email);
        return $this;
    }

    /**
     * Return list of recipient email addresses
     *
     * @return array (of strings)
     */
    public function getRecipients()
    {
        return array_keys($this->_recipients);
    }

    /**
     * Clears list of recipient email addresses
     *
     * @return Zend_Mail Provides fluent interface
     */
    public function clearRecipients()
    {
        $this->_recipients = array();
        $this->_to = array();

        $this->_clearHeader('To');
        $this->_clearHeader('Cc');
        $this->_clearHeader('Bcc');

        return $this;
    }

    /**
     * Sets From-header and sender of the message
     *
     * @param  string    $email
     * @param  string    $name
     * @return Zend_Mail Provides fluent interface
     * @throws Zend_Mail_Exception if called subsequent times
     */
    public function setFrom($email, $name = null)
    {
        if ($this->_from === null) {
            $email = $this->_filterEmail($email);
            $name  = $this->_filterName($name);
            $this->_from = $email;
            if ($name !== null && $name !== $email) {
                $encodedName = $this->_encodeHeader($name);
                if ($encodedName === $name && strpos($name, ',') !== false) {
                    $format = '"%s" <%s>';
                } else {
                    $format = '%s <%s>';
                }
                $from = sprintf($format, $encodedName, $email);
            } else {
                $from = $email;
            }
            $this->_storeHeader('From', $from, true);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('From Header set twice');
        }
        return $this;
    }

    /**
     * Returns the sender of the mail
     *
     * @return string
     */
    public function getFrom()
    {
        return $this->_from;
    }

    /**
     * Clears the sender from the mail
     *
     * @return Zend_Mail Provides fluent interface
     */
    public function clearFrom()
    {
        $this->_from = null;
        $this->_clearHeader('From');

        return $this;
    }

    /**
     * Sets the Return-Path header of the message
     *
     * @param  string    $email
     * @return Zend_Mail Provides fluent interface
     * @throws Zend_Mail_Exception if set multiple times
     */
    public function setReturnPath($email)
    {
        if ($this->_returnPath === null) {
            $email = $this->_filterEmail($email);
            $this->_returnPath = $email;
            $this->_storeHeader('Return-Path', $email, false);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Return-Path Header set twice');
        }
        return $this;
    }

    /**
     * Returns the current Return-Path address of the message
     *
     * If no Return-Path header is set, returns the value of {@link $_from}.
     *
     * @return string
     */
    public function getReturnPath()
    {
        if (null !== $this->_returnPath) {
            return $this->_returnPath;
        }

        return $this->_from;
    }

    /**
     * Clears the current Return-Path address from the message
     *
     * @return Zend_Mail Provides fluent interface
     */
    public function clearReturnPath()
    {
        $this->_returnPath = null;
        $this->_clearHeader('Return-Path');

        return $this;
    }

    /**
     * Sets the subject of the message
     *
     * @param   string    $subject
     * @return  Zend_Mail Provides fluent interface
     * @throws  Zend_Mail_Exception
     */
    public function setSubject($subject)
    {
        if ($this->_subject === null) {
            $subject = strtr($subject,"\r\n\t",'???');
            $this->_subject = $this->_encodeHeader($subject);
            $this->_storeHeader('Subject', $this->_subject);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Subject set twice');
        }
        return $this;
    }

    /**
     * Returns the encoded subject of the message
     *
     * @return string
     */
    public function getSubject()
    {
        return $this->_subject;
    }

    /**
     * Clears the encoded subject from the message
     *
     * @return  Zend_Mail Provides fluent interface
     */
    public function clearSubject()
    {
        $this->_subject = null;
        $this->_clearHeader('Subject');

        return $this;
    }

    /**
     * Sets Date-header
     *
     * @param  string    $date
     * @return Zend_Mail Provides fluent interface
     * @throws Zend_Mail_Exception if called subsequent times
     */
    public function setDate($date = null)
    {
        if ($this->_date === null) {
            if ($date === null) {
                $date = date('r');
            } else if (is_int($date)) {
                $date = date('r', $date);
            } else if (is_string($date)) {
                $date = strtotime($date);
                if ($date === false || $date < 0) {
		            /**
		             * @see Zend_Mail_Exception
		             */
		            require_once 'Zend/Mail/Exception.php';
                	throw new Zend_Mail_Exception('String representations of Date Header must be ' .
                                                  'strtotime()-compatible');
                }
                $date = date('r', $date);
            } else if ($date instanceof Zend_Date) {
                $date = $date->get(Zend_Date::RFC_2822);
            } else {
	            /**
	             * @see Zend_Mail_Exception
	             */
	            require_once 'Zend/Mail/Exception.php';
            	throw new Zend_Mail_Exception(__METHOD__ . ' only accepts UNIX timestamps, Zend_Date objects, ' .
                                              ' and strtotime()-compatible strings');
            }
            $this->_date = $date;
            $this->_storeHeader('Date', $date);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
        	require_once 'Zend/Mail/Exception.php';
        	throw new Zend_Mail_Exception('Date Header set twice');
        }
        return $this;
    }

    /**
     * Returns the formatted date of the message
     *
     * @return string
     */
    public function getDate()
    {
        return $this->_date;
    }

    /**
     * Clears the formatted date from the message
     *
     * @return Zend_Mail Provides fluent interface
     */
    public function clearDate()
    {
        $this->_date = null;
        $this->_clearHeader('Date');

        return $this;
    }

    /**
     * Sets the Message-ID of the message
     *
     * @param   boolean|string  $id
     * true  :Auto
     * false :No set
     * null  :No set
     * string:Sets string
     * @return  Zend_Mail Provides fluent interface
     * @throws  Zend_Mail_Exception
     */
    public function setMessageId($id = true)
    {
    	if ($id === null || $id === false) {
    		return $this;
    	} elseif ($id === true) {
            $id = $this->createMessageId();
    	}

        if ($this->_messageId === null) {
            $this->_messageId = $id;
            $this->_storeHeader('Message-Id', $this->_messageId);
        } else {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Message-ID set twice');
        }

        return $this;
    }

    /**
     * Returns the Message-ID of the message
     *
     * @return string
     */
    public function getMessageId()
    {
        return $this->_messageId;
    }


    /**
     * Clears the Message-ID from the message
     *
     * @return Zend_Mail Provides fluent interface
     */
    public function clearMessageId()
    {
        $this->_messageId = null;
        $this->_clearHeader('Message-Id');

        return $this;
    }

    /**
     * Creates the Message-ID
     *
     * @return string
     */
    public function createMessageId() {

        $time = time();

        if ($this->_from !== null) {
        	$user = $this->_from;
        } elseif (isset($_SERVER['REMOTE_ADDR'])) {
        	$user = $_SERVER['REMOTE_ADDR'];
        } else {
        	$user = getmypid();
        }

    	$rand = mt_rand();

    	if ($this->_recipients !== array()) {
            $recipient = array_rand($this->_recipients);
    	} else {
    		$recipient = 'unknown';
    	}

    	if (isset($_SERVER["SERVER_NAME"])) {
            $hostName = $_SERVER["SERVER_NAME"];
        } else {
        	$hostName = php_uname('n');
        }

        return sha1($time . $user . $rand . $recipient) . '@' . $hostName;
    }

    /**
     * Add a custom header to the message
     *
     * @param  string              $name
     * @param  string              $value
     * @param  boolean             $append
     * @return Zend_Mail           Provides fluent interface
     * @throws Zend_Mail_Exception on attempts to create standard headers
     */
    public function addHeader($name, $value, $append = false)
    {
        if (in_array(strtolower($name), array('to', 'cc', 'bcc', 'from', 'subject', 'return-path', 'date'))) {
            /**
             * @see Zend_Mail_Exception
             */
            require_once 'Zend/Mail/Exception.php';
            throw new Zend_Mail_Exception('Cannot set standard header from addHeader()');
        }

        $value = strtr($value,"\r\n\t",'???');
        $value = $this->_encodeHeader($value);
        $this->_storeHeader($name, $value, $append);

        return $this;
    }

    /**
     * Return mail headers
     *
     * @return void
     */
    public function getHeaders()
    {
        return $this->_headers;
    }

    /**
     * Sends this email using the given transport or a previously
     * set DefaultTransport or the internal mail function if no
     * default transport had been set.
     *
     * @param  Zend_Mail_Transport_Abstract $transport
     * @return Zend_Mail                    Provides fluent interface
     */
    public function send($transport = null)
    {
        if ($transport === null) {
            if (! self::$_defaultTransport instanceof Zend_Mail_Transport_Abstract) {
                require_once 'Zend/Mail/Transport/Sendmail.php';
                $transport = new Zend_Mail_Transport_Sendmail();
            } else {
                $transport = self::$_defaultTransport;
            }
        }

        if ($this->_date === null) {
            $this->setDate();
        }

        $transport->send($this);

        return $this;
    }

    /**
     * Filter of email data
     *
     * @param string $email
     * @return string
     */
    protected function _filterEmail($email)
    {
    	$rule = array("\r" => '',
    	              "\n" => '',
    	              "\t" => '',
                      '"'  => '',
    	              ','  => '',
                      '<'  => '',
                      '>'  => '',
    	);

        return strtr($email, $rule);
    }

    /**
     * Filter of name data
     *
     * @param string $name
     * @return string
     */
    protected function _filterName($name)
    {
    	$rule = array("\r" => '',
                      "\n" => '',
                      "\t" => '',
                      '"'  => "'",
                      '<'  => '[',
    	              '>'  => ']',
    	);

        return strtr($name, $rule);
    }

}
PKpG[<Ť��Amf/Util/BinaryStream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Util
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Utility class to walk through a data stream byte by byte with conventional names
 *
 * @package    Zend_Amf
 * @subpackage Util
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Util_BinaryStream
{
    /**
     * @var string Byte stream
     */
    protected $_stream;

    /**
     * @var int Length of stream
     */
    protected $_streamLength;

    /**
     * @var bool BigEndian encoding?
     */
    protected $_bigEndian;

    /**
     * @var int Current position in stream
     */
    protected $_needle;

    /**
     * Constructor
     *
     * Create a refrence to a byte stream that is going to be parsed or created 
     * by the methods in the class. Detect if the class should use big or 
     * little Endian encoding.
     *
     * @param  string $stream use '' if creating a new stream or pass a string if reading.
     * @return void
     */
    public function __construct($stream)
    {
        if (!is_string($stream)) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Inputdata is not of type String');
        }

        $this->_stream       = $stream;
        $this->_needle       = 0;
        $this->_streamLength = strlen($stream);
        $testEndian          = unpack("C*", pack("S*", 256));
        $this->_bigEndian    = 1;
    }

    /**
     * Returns the current stream
     *
     * @return string
     */
    public function getStream()
    {
        return $this->_stream;
    }

    /**
     * Read the number of bytes in a row for the length supplied.
     *
     * @todo   Should check that there are enough bytes left in the stream we are about to read.
     * @param  int $length
     * @return string
     * @throws Zend_Amf_Exception for buffer underrun
     */
    public function readBytes($length)
    {
        if (($length + $this->_needle) > strlen($this->_stream)) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception("Buffer underrun at needle position: " . $this->_needle . " while requesting length: " . $length);
        }
        $bytes = substr($this->_stream, $this->_needle, $length);
        $this->_needle += $length;
        return $bytes;
    }

    /**
     * Write any length of bytes to the stream
     *
     * Usually a string.
     *
     * @param  string $bytes
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeBytes($bytes)
    {
        $this->_stream .= $bytes;
        return $this;
    }

    /**
     * Reads a signed byte
     *
     * @return int Value is in the range of -128 to 127.
     */
    public function readByte()
    {
        $byte = ord($this->_stream[$this->_needle++]);
        return $byte;
    }

    /**
     * Writes the passed string into a signed byte on the stream.
     *
     * @param  string $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeByte($stream)
    {
        $this->_stream .= pack("c",$stream);
        return $this;
    }

    /**
     * Reads a signed 32-bit integer from the data stream.
     *
     * @return int Value is in the range of -2147483648 to 2147483647
     */
    public function readInt()
    {
        $int = ($this->readByte() << 8) + $this->readByte();
        return $int;
    }

    /**
     * Write an the integer to the output stream as a 32 bit signed integer
     *
     * @param  int $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeInt($stream)
    {
        $this->_stream .= pack("n", $stream);
        return $this;
    }

    /**
     * Reads a UTF-8 string from the data stream
     *
     * @return string A UTF-8 string produced by the byte representation of characters
     */
    public function readUtf()
    {
        $length = $this->readInt();
        return $this->readBytes($length);
    }

    /**
     * Wite a UTF-8 string to the outputstream
     *
     * @param  string $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeUtf($stream)
    {
        $this->writeInt(strlen($stream));
        $this->_stream .= $stream;
        return $this;
    }


    /**
     * Read a long UTF string
     *
     * @return string
     */
    public function readLongUtf()
    {
        $length = $this->readLong();
        return $this->readBytes($length);
    }

    /**
     * Write a long UTF string to the buffer
     *
     * @param  string $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeLongUtf($stream)
    {
        $this->writeLong(strlen($stream));
        $this->_stream .= $stream;
    }

    /**
     * Read a long numeric value
     *
     * @return double
     */
    public function readLong()
    {
        $long = ($this->readByte() << 24) + ($this->readByte() << 16) + ($this->readByte() << 8) + $this->readByte();
        return $long;
    }

    /**
     * Write long numeric value to output stream
     *
     * @param  int|string $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeLong($stream)
    {
        $this->_stream .= pack("N",$stream);
        return $this;
    }

    /**
     * Read a 16 bit unsigned short.
     *
     * @todo   This could use the unpack() w/ S,n, or v
     * @return double
     */
    public function readUnsignedShort()
    {
        $byte1 = $this->readByte();
        $byte2 = $this->readByte();
        $short = (($byte1 << 8) | $byte2);
        return $short;
    }

    /**
     * Reads an IEEE 754 double-precision floating point number from the data stream.
     *
     * @return double Floating point number
     */
    public function readDouble()
    {
        $bytes          = substr($this->_stream, $this->_needle, 8);
        $this->_needle += 8;
        $double         = unpack("dflt", strrev($bytes));
        return $double['flt'];
    }

    /**
     * Writes an IEEE 754 double-precision floating point number from the data stream.
     *
     * @param  string|double $stream
     * @return Zend_Amf_Util_BinaryStream
     */
    public function writeDouble($stream)
    {
        $stream = pack("d", $stream);
        if ($this->_bigEndian) {
            $stream = strrev($stream);
        }
        $this->_stream .= $stream;
        return $this;
    }
}
PKpG[�,KF		Amf/Request/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Request */
require_once 'Zend/Amf/Request.php';

/**
 * AMF Request object -- Request via HTTP
 *
 * Extends {@link Zend_Amf_Request} to accept a request via HTTP. Request is
 * built at construction time using a raw POST; if no data is available, the
 * request is declared a fault.
 *
 * @package    Zend_Amf
 * @subpackage Request
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Request_Http extends Zend_Amf_Request
{
    /**
     * Raw AMF request
     * @var string
     */
    protected $_rawRequest;

    /**
     * Constructor
     *
     * Attempts to read from php://input to get raw POST request; if an error
     * occurs in doing so, or if the AMF body is invalid, the request is declared a
     * fault.
     *
     * @return void
     */
    public function __construct()
    {
        // php://input allows you to read raw POST data. It is a less memory 
        // intensive alternative to $HTTP_RAW_POST_DATA and does not need any 
        // special php.ini directives
        $amfRequest = file_get_contents('php://input');

        // Check to make sure that we have data on the input stream.
        if ($amfRequest != '') {
            $this->_rawRequest = $amfRequest;
            $this->initialize($amfRequest);
        } else {
            echo '<p>Zend Amf Endpoint</p>' ;
        }
    }

    /**
     * Retrieve raw AMF Request
     * 
     * @return string
     */
    public function getRawRequest()
    {
        return $this->_rawRequest;
    }
}
PKpG[��?33Amf/Response.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Constants */
require_once 'Zend/Amf/Constants.php';

/** Zend_Amf_Parse_OutputStream */
require_once 'Zend/Amf/Parse/OutputStream.php';

/** Zend_Amf_Parse_Amf0_Serializer */
require_once 'Zend/Amf/Parse/Amf0/Serializer.php';

/**
 * Handles converting the PHP object ready for response back into AMF
 *
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Response
{
    /**
     * @var int Object encoding for response
     */
    protected $_objectEncoding = 0;

    /**
     * Array of Zend_Amf_Value_MessageBody objects
     * @var array
     */
    protected $_bodies = array();

    /**
     * Array of Zend_Amf_Value_MessageHeader objects
     * @var array
     */
    protected $_headers = array();

    /**
     * @var Zend_Amf_Parse_OutputStream
     */
    protected $_outputStream;

    /**
     * Instantiate new output stream and start serialization
     *
     * @return Zend_Amf_Response
     */
    public function finalize()
    {
        $this->_outputStream = new Zend_Amf_Parse_OutputStream();
        $this->writeMessage($this->_outputStream);
        return $this;
    }

    /**
     * Serialize the PHP data types back into Actionscript and
     * create and AMF stream.
     *
     * @param  Zend_Amf_Parse_OutputStream $stream
     * @return Zend_Amf_Response
     */
    public function writeMessage(Zend_Amf_Parse_OutputStream $stream)
    {
        $objectEncoding = $this->_objectEncoding;

        //Write encoding to start of stream. Preamble byte is written of two byte Unsigned Short
        $stream->writeByte(0x00);
        $stream->writeByte($objectEncoding);

        // Loop through the AMF Headers that need to be returned.
        $headerCount = count($this->_headers);
        $stream->writeInt($headerCount);
        foreach ($this->getAmfHeaders() as $header) {
            $serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
            $stream->writeUTF($header->name);
            $stream->writeByte($header->mustRead);
            $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
            $serializer->writeTypeMarker($header->data);
        }

        // loop through the AMF bodies that need to be returned.
        $bodyCount = count($this->_bodies);
        $stream->writeInt($bodyCount);
        foreach ($this->_bodies as $body) {
            $serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
            $stream->writeUTF($body->getTargetURI());
            $stream->writeUTF($body->getResponseURI());
            $stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
            if($this->_objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING) {
                $serializer->writeTypeMarker($body->getData());
            } else {
                // Content is AMF3
                $serializer->writeTypeMarker($body->getData(),Zend_Amf_Constants::AMF0_AMF3);
            }
        }

        return $this;
    }

    /**
     * Return the output stream content
     *
     * @return string The contents of the output stream
     */
    public function getResponse()
    {
        return $this->_outputStream->getStream();
    }

    /**
     * Return the output stream content
     *
     * @return string
     */
    public function __toString()
    {
        return $this->getResponse();
    }

    /**
     * Add an AMF body to be sent to the Flash Player
     *
     * @param  Zend_Amf_Value_MessageBody $body
     * @return Zend_Amf_Response
     */
    public function addAmfBody(Zend_Amf_Value_MessageBody $body)
    {
        $this->_bodies[] = $body;
        return $this;
    }

    /**
     * Return an array of AMF bodies to be serialized
     *
     * @return array
     */
    public function getAmfBodies()
    {
        return $this->_bodies;
    }

    /**
     * Add an AMF Header to be sent back to the flash player
     *
     * @param  Zend_Amf_Value_MessageHeader $header
     * @return Zend_Amf_Response
     */
    public function addAmfHeader(Zend_Amf_Value_MessageHeader $header)
    {
        $this->_headers[] = $header;
        return $this;
    }

    /**
     * Retrieve attached AMF message headers
     * 
     * @return array Array of Zend_Amf_Value_MessageHeader objects
     */
    public function getAmfHeaders()
    {
        return $this->_headers;
    }

    /**
     * Set the AMF encoding that will be used for serialization
     *
     * @param  int $encoding
     * @return Zend_Amf_Response
     */
    public function setObjectEncoding($encoding)
    {
        $this->_objectEncoding = $encoding;
        return $this;
    }
}
PKpG[f�@�  Amf/Request.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Parse_InputStream */
require_once 'Zend/Amf/Parse/InputStream.php';

/** Zend_Amf_Parse_Amf0_Deserializer */
require_once 'Zend/Amf/Parse/Amf0/Deserializer.php';

/** Zend_Amf_Constants */
require_once 'Zend/Amf/Constants.php';

/** Zend_Amf_Value_MessageHeader */
require_once 'Zend/Amf/Value/MessageHeader.php';

/** Zend_Amf_Value_MessageBody */
require_once 'Zend/Amf/Value/MessageBody.php';

/**
 * Handle the incoming AMF request by deserializing the data to php object
 * types and storing the data for Zend_Amf_Server to handle for processing.
 *
 * @todo       Currently not checking if the object needs to be Type Mapped to a server object.
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Request
{
    /**
     * @var int AMF client type (AMF0, AMF3)
     */
    protected $_clientType = 0; // default AMF0

    /**
     * @var array Message bodies
     */
    protected $_bodies = array();

    /**
     * @var array Message headers
     */
    protected $_headers = array();

    /**
     * @var int Message encoding to use for objects in response
     */
    protected $_objectEncoding = 0;

    /**
     * @var Zend_Amf_Parse_InputStream
     */
    protected $_inputStream;

    /**
     * @var Zend_Amf_Parse_AMF0_Deserializer
     */
    protected $_deserializer;

    /**
     * Time of the request
     * @var  mixed
     */
    protected $_time;

    /**
     * Prepare the AMF InputStream for parsing.
     *
     * @param  string $request
     * @return Zend_Amf_Request
     */
    public function initialize($request)
    {
        $this->_inputStream  = new Zend_Amf_Parse_InputStream($request);
        $this->_deserializer = new Zend_Amf_Parse_AMF0_Deserializer($this->_inputStream);
        $this->readMessage($this->_inputStream);
        return $this;
    }

    /**
     * Takes the raw AMF input stream and converts it into valid PHP objects
     *
     * @param  Zend_Amf_Parse_InputStream
     * @return Zend_Amf_Request
     */
    public function readMessage(Zend_Amf_Parse_InputStream $stream)
    {
        $clientVersion = $stream->readUnsignedShort();
        if (($clientVersion != Zend_Amf_Constants::AMF0_OBJECT_ENCODING)
            && ($clientVersion != Zend_Amf_Constants::AMF3_OBJECT_ENCODING)
        ) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Unknown Player Version ' . $clientVersion);
        }

        $this->_bodies  = array();
        $this->_headers = array();
        $headerCount    = $stream->readInt();

        // Iterate through the AMF envelope header
        while ($headerCount--) {
            $this->_headers[] = $this->readHeader();
        }

        // Iterate through the AMF envelope body
        $bodyCount = $stream->readInt();
        while ($bodyCount--) {
            $this->_bodies[] = $this->readBody();
        }

        return $this;
    }

    /**
     * Deserialize a message header from the input stream.
     *
     * A message header is structured as:
     * - NAME String
     * - MUST UNDERSTAND Boolean
     * - LENGTH Int
     * - DATA Object
     *
     * @return Zend_Amf_Value_MessageHeader
     */
    public function readHeader()
    {
        $name     = $this->_inputStream->readUTF();
        $mustRead = (bool)$this->_inputStream->readByte();
        $length   = $this->_inputStream->readLong();

        try {
            $data = $this->_deserializer->readTypeMarker();
        } catch (Exception $e) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Unable to parse ' . $name . ' header data: ' . $e->getMessage() . ' '. $e->getLine());
        }

        $header = new Zend_Amf_Value_MessageHeader($name, $mustRead, $data, $length);
        return $header;
    }

    /**
     * Deserialize a message body from the input stream
     *
     * @return Zend_Amf_Value_MessageBody
     */
    public function readBody()
    {
        $targetURI   = $this->_inputStream->readUTF();
        $responseURI = $this->_inputStream->readUTF();
        $length      = $this->_inputStream->readLong();

        try {
            $data = $this->_deserializer->readTypeMarker();
        } catch (Exception $e) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Unable to parse ' . $targetURI . ' body data ' . $e->getMessage());
        }

        // Check for AMF3 objectEncoding
        if ($this->_deserializer->getObjectEncoding() == Zend_Amf_Constants::AMF3_OBJECT_ENCODING) {
            /*
             * When and AMF3 message is sent to the server it is nested inside
             * an AMF0 array called Content. The following code gets the object
             * out of the content array and sets it as the message data.
             */
            if(is_array($data) && is_object($data[0])){
                $data = $data[0];
            }

            // set the encoding so we return our message in AMF3
            $this->_objectEncoding = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
        }

        $body = new Zend_Amf_Value_MessageBody($targetURI, $responseURI, $data);
        return $body;
    }

    /**
     * Return an array of the body objects that were found in the amf request.
     *
     * @return array {target, response, length, content}
     */
    public function getAmfBodies()
    {
        return $this->_bodies;
    }

    /**
     * Accessor to private array of message bodies.
     *
     * @param  Zend_Amf_Value_MessageBody $message
     * @return Zend_Amf_Request
     */
    public function addAmfBody(Zend_Amf_Value_MessageBody $message)
    {
        $this->_bodies[] = $message;
        return $this;
    }

    /**
     * Return an array of headers that were found in the amf request.
     *
     * @return array {operation, mustUnderstand, length, param}
     */
    public function getAmfHeaders()
    {
        return $this->_headers;
    }

    /**
     * Return the either 0 or 3 for respect AMF version
     *
     * @return int
     */
    public function getObjectEncoding()
    {
        return $this->_objectEncoding;
    }

    /**
     * Set the object response encoding
     *
     * @param  mixed $int
     * @return Zend_Amf_Request
     */
    public function setObjectEncoding($int)
    {
        $this->_objectEncoding = $int;
        return $this;
    }
}
PKpG[}�MZ��Amf/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Exception extends Zend_Exception
{
}
PKpG[������Amf/Value/MessageHeader.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Message Headers provide context for the processing of the
 * the AMF Packet and all subsequent Messages.
 * 
 * Multiple Message Headers may be included within an AMF Packet.
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_MessageHeader 
{
    /**
     * Name of the header
     *
     * @var string
     */
    public $name;

    /**
     * Flag if the data has to be parsed on return
     *
     * @var boolean
     */
    public $mustRead;

    /**
     * Length of the data field
     *
     * @var int
     */
    public $length;

    /**
     * Data sent with the header name
     *
     * @var mixed
     */
    public $data;

    /**
     * Used to create and store AMF Header data.
     *
     * @param String $name
     * @param Boolean $mustRead
     * @param misc $content
     * @param integer $length
     */
    public function __construct($name, $mustRead, $data, $length=null)
    {
        $this->name     = $name;
        $this->mustRead = (bool) $mustRead;
        $this->data     = $data;
        if (null !== $length) {
            $this->length = (int) $length;
        }
    }
}
PKpG[�]�'Amf/Value/Messaging/RemotingMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Value_Messaging_AbstractMessage */
require_once 'Zend/Amf/Value/Messaging/AbstractMessage.php';

/**
 * This type of message contains information needed to perform
 * a Remoting invocation.
 *
 * Corresponds to flex.messaging.messages.RemotingMessage
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_RemotingMessage extends Zend_Amf_Value_Messaging_AbstractMessage
{

    /**
     * The name of the service to be called including package name
     * @var String
     */
    public $source;

    /**
     * The name of the method to be called
     * @var string
     */
    public $operation;

    /**
     * The arguments to call the mathod with
     * @var array
     */
    public $parameters;

    /**
     * Create a new Remoting Message
     *
     * @return void
     */
    public function __construct()
    {
        $this->clientId    = $this->generateId();
        $this->destination = null;
        $this->messageId   = $this->generateId();
        $this->timestamp   = time().'00';
        $this->timeToLive  = 0;
        $this->headers     = new stdClass();
        $this->body        = null;
    }
}
PKpG[d&�CC$Amf/Value/Messaging/AsyncMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_Amf_Value_Messaging_AbstractMessage */
require_once 'Zend/Amf/Value/Messaging/AbstractMessage.php';

/**
 * This type of message contains information necessary to perform
 * point-to-point or publish-subscribe messaging.
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_AsyncMessage extends Zend_Amf_Value_Messaging_AbstractMessage
{
    /**
     * The message id to be responded to.
     * @var String
     */
    public $correlationId;
}
PKpG[F�Eb��'Amf/Value/Messaging/AbstractMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * This is the default Implementation of Message, which provides
 * a convenient base for behavior and association of common endpoints
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_AbstractMessage
{
    /**
     * @var string Client identifier
     */
    public $clientId;

    /**
     * @var string Destination
     */
    public $destination;

    /**
     * @var string Message identifier
     */
    public $messageId;

    /**
     * @var int Message timestamp
     */
    public $timestamp;

    /**
     * @var int Message TTL
     */
    public $timeToLive;

    /**
     * @var object Message headers
     */
    public $headers;

    /**
     * @var string Message body
     */
    public $body;

    /**
     * generate a unique id
     *
     * Format is: ########-####-####-####-############
     * Where # is an uppercase letter or number
     * example: 6D9DC7EC-A273-83A9-ABE3-00005FD752D6
     *
     * @return string
     */
    public function generateId()
    {
        return sprintf(
            '%08X-%04X-%04X-%02X%02X-%012X',
            mt_rand(),
            mt_rand(0, 65535),
            bindec(substr_replace(
                sprintf('%016b', mt_rand(0, 65535)), '0100', 11, 4)
            ),
            bindec(substr_replace(sprintf('%08b', mt_rand(0, 255)), '01', 5, 2)),
            mt_rand(0, 255),
            mt_rand()
        );
    }
}
PKpG[��7;``*Amf/Value/Messaging/AcknowledgeMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Value_Messaging_AsyncMessage */
require_once 'Zend/Amf/Value/Messaging/AsyncMessage.php';

/**
 * This is the type of message returned by the MessageBroker
 * to endpoints after the broker has routed an endpoint's message
 * to a service.
 *
 * flex.messaging.messages.AcknowledgeMessage
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_AcknowledgeMessage extends Zend_Amf_Value_Messaging_AsyncMessage
{
    /**
     * Create a new Acknowledge Message
     *
     * @param unknown_type $message
     */
    public function __construct($message)
    {
        $this->clientId    = $this->generateId();
        $this->destination = null;
        $this->messageId   = $this->generateId();
        $this->timestamp   = time().'00';
        $this->timeToLive  = 0;
        $this->headers     = new STDClass();
        $this->body        = null;

        // correleate the two messages
        if ($message) {
            $this->correlationId = $message->messageId;
        }
    }
}
PKpG[�AQ���$Amf/Value/Messaging/ErrorMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Value_Messaging_AcknowledgeMessage */
require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';

/**
 * Creates the error message to report to flex the issue with the call
 *
 * Corresponds to flex.messaging.messages.ErrorMessage
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_ErrorMessage extends Zend_Amf_Value_Messaging_AcknowledgeMessage
{
    /**
     * Additional data with error
     * @var object
     */
    public $extendedData = null;

    /**
     * Error code number
     * @var string
     */
    public $faultCode;

    /**
     * Description as to the cause of the error
     * @var string
     */
    public $faultDetail;

    /**
     * Short description of error
     * @var string
     */
    public $faultString = '';

    /**
     * root cause of error
     * @var object
     */
    public $rootCause = null;
}
PKpG[!26&Amf/Value/Messaging/CommandMessage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Amf/Value/Messaging/AsyncMessage.php';

/**
 * A message that represents an infrastructure command passed between
 * client and server. Subscribe/unsubscribe operations result in
 * CommandMessage transmissions, as do polling operations.
 *
 * Corresponds to flex.messaging.messages.CommandMessage
 *
 * Note: THESE VALUES MUST BE THE SAME ON CLIENT AND SERVER
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_Messaging_CommandMessage extends Zend_Amf_Value_Messaging_AsyncMessage
{
    /**
     *  This operation is used to subscribe to a remote destination.
     *  @const int
     */
    const SUBSCRIBE_OPERATION = 0;

    /**
     * This operation is used to unsubscribe from a remote destination.
     * @const int
     */
    const UNSUSBSCRIBE_OPERATION = 1;

    /**
     * This operation is used to poll a remote destination for pending,
     * undelivered messages.
     * @const int
     */
    const POLL_OPERATION = 2;

    /**
     * This operation is used by a remote destination to sync missed or cached messages
     * back to a client as a result of a client issued poll command.
     * @const int
     */
    const CLIENT_SYNC_OPERATION = 4;

    /**
     * This operation is used to test connectivity over the current channel to
     * the remote endpoint.
     * @const int
     */
    const CLIENT_PING_OPERATION = 5;

    /**
     * This operation is used to request a list of failover endpoint URIs
     * for the remote destination based on cluster membership.
     * @const int
     */
    const CLUSTER_REQUEST_OPERATION = 7;

    /**
     * This operation is used to send credentials to the endpoint so that
     * the user can be logged in over the current channel.
     * The credentials need to be Base64 encoded and stored in the <code>body</code>
     * of the message.
     * @const int
     */
    const LOGIN_OPERATION = 8;

    /**
     * This operation is used to log the user out of the current channel, and
     * will invalidate the server session if the channel is HTTP based.
     * @const int
     */
    const LOGOUT_OPERATION = 9;

    /**
     * This operation is used to indicate that the client's subscription to a
     * remote destination has been invalidated.
     * @const int
     */
    const SESSION_INVALIDATE_OPERATION = 10;

    /**
     * This operation is used by the MultiTopicConsumer to subscribe/unsubscribe
     * from multiple subtopics/selectors in the same message.
     * @const int
     */
    const MULTI_SUBSCRIBE_OPERATION = 11;

    /**
     * This operation is used to indicate that a channel has disconnected
     * @const int
     */
    const DISCONNECT_OPERATION = 12;

    /**
     * This is the default operation for new CommandMessage instances.
     * @const int
     */
    const UNKNOWN_OPERATION = 10000;

    /**
     * The operation to execute for messages of this type
     * @var int
     */
    public $operation = self::UNKNOWN_OPERATION;
}
PKpG[`�ڧ��Amf/Value/ByteArray.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Wrapper class to store an AMF3 flash.utils.ByteArray
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_ByteArray 
{
    /**
     * @var string ByteString Data
     */
    protected $_data = '';

    /**
     * Create a ByteArray
     *
     * @param  string $data
     * @return void
     */
    public function __construct($data)
    {
        $this->_data = $data;
    }

    /**
     * Return the byte stream
     *
     * @return string
     */
    public function getData()
    {
        return $this->_data;
    }
}
PKpG[5qkkAmf/Value/MessageBody.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * An AMF Message contains information about the actual individual
 * transaction that is to be performed. It specifies the remote
 * operation that is to be performed; a local (client) operation
 * to be invoked upon success; and, the data to be used in the
 * operation.
 * <p/>
 * This Message structure defines how a local client would
 * invoke a method/operation on a remote server. Additionally,
 * the response from the Server is structured identically.
 *
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_MessageBody
{
    /**
     * A string describing which operation, function, or method
     * is to be remotley invoked.
     * @var string
     */
    protected $_targetUri = "";

    /**
     * Universal Resource Identifier that uniquely targets the originator's
     * Object that should receive the server's response. The server will
     * use this path specification to target the "OnResult()" or "onStatus()"
     * handlers within the client. For Flash, it specifies an ActionScript
     * Object path only. The NetResponse object pointed to by the Response Uri
     * contains the connection state information. Passing/specifying this
     * provides a convenient mechanism for the client/server to share access
     * to an object that is managing the state of the shared connection.
     * 
     * Since the server will use this field in the event of an error,
     * this field is required even if a successful server request would
     * not be expected to return a value to the client.
     *
     * @var string
     */
    protected $_responseUri = "";

    /**
     * Contains the actual data associated with the operation. It contains
     * the client's parameter data that is passed to the server's operation/method.
     * When serializing a root level data type or a parameter list array, no
     * name field is included. That is, the data is anonomously represented
     * as "Type Marker"/"Value" pairs. When serializing member data, the data is
     * represented as a series of "Name"/"Type"/"Value" combinations.
     *
     * For server generated responses, it may contain any ActionScript
     * data/objects that the server was expected to provide.
     *
     * @var string
     */
    protected $_data;

    /**
     * Constructor
     * 
     * @param  string $targetUri 
     * @param  string $responseUri 
     * @param  string $data 
     * @return void
     */
    public function __construct($targetUri, $responseUri, $data)
    {
        $this->setTargetUri($targetUri);
        $this->setResponseUri($responseUri);
        $this->setData($data);
    }

    /**
     * Retrieve target Uri
     * 
     * @return string
     */
    public function getTargetUri()
    {
        return $this->_targetUri;
    }

    /**
     * Set target Uri
     * 
     * @param  string $targetUri 
     * @return Zend_Amf_Value_MessageBody
     */
    public function setTargetUri($targetUri)
    {
        if (null === $targetUri) {
            $targetUri = '';
        }
        $this->_targetUri = (string) $targetUri;
        return $this;
    }

    /**
     * Get target Uri
     * 
     * @return string
     */
    public function getResponseUri()
    {
        return $this->_responseUri;
    }

    /**
     * Set response Uri
     * 
     * @param  string $responseUri 
     * @return Zend_Amf_Value_MessageBody
     */
    public function setResponseUri($responseUri)
    {
        if (null === $responseUri) {
            $responseUri = '';
        }
        $this->_responseUri = $responseUri;
        return $this;
    }

    /**
     * Retrieve response data
     * 
     * @return string
     */
    public function getData()
    {
        return $this->_data;
    }

    /**
     * Set response data
     * 
     * @param  mixed $data 
     * @return Zend_Amf_Value_MessageBody
     */
    public function setData($data)
    {
        $this->_data = $data;
        return $this;
    }

    /**
     * Set reply method
     * 
     * @param  string $methodName 
     * @return Zend_Amf_Value_MessageBody
     */
    public function setReplyMethod($methodName)
    {
        if (!preg_match('#^[/?]#', $methodName)) {
            $this->_targetUri = rtrim($this->_targetUri, '/') . '/';
        }
        $this->_targetUri = $this->_targetUri . $methodName;
        return $this;
    }
}
PKpG[hx
x
Amf/Value/TraitsInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Amf_Value_TraitsInfo 
 * 
 * @package    Zend_Amf
 * @subpackage Value
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Value_TraitsInfo
{
    /**
     * @var string Class name
     */
    protected $_className;

    /**
     * @var bool Whether or not this is a dynamic class
     */
    protected $_dynamic;

    /**
     * @var bool Whether or not the class is externalizable
     */
    protected $_externalizable;

    /**
     * @var array Class properties
     */
    protected $_properties;

    /**
     * Used to keep track of all class traits of an AMF3 object
     *
     * @param  string $className
     * @param  boolean $dynamic
     * @param  boolean $externalizable
     * @param  boolean $properties
     * @return void
     */
    public function __construct($className, $dynamic=false, $externalizable=false, $properties=null)
    {
        $this->_className      = $className;
        $this->_dynamic        = $dynamic;
        $this->_externalizable = $externalizable;
        $this->_properties     = $properties;
    }

    /**
     * Test if the class is a dynamic class
     *
     * @return boolean
     */
    public function isDynamic()
    {
        return $this->_dynamic;
    }

    /**
     * Test if class is externalizable
     *
     * @return boolean
     */
    public function isExternalizable()
    {
        return $this->_externalizable;
    }

    /**
     * Return the number of properties in the class
     *
     * @return int
     */
    public function length()
    {
        return count($this->_properties);
    }

    /**
     * Return the class name
     *
     * @return string
     */
    public function getClassName()
    {
        return $this->_className;
    }

    /**
     * Add an additional property
     *
     * @param  string $name
     * @return Zend_Amf_Value_TraitsInfo
     */
    public function addProperty($name)
    {
        $this->_properties[] = $name;
        return $this;
    }

    /**
     * Add all properties of the class.
     *
     * @param  array $props
     * @return Zend_Amf_Value_TraitsInfo
     */
    public function addAllProperties(array $props)
    {
        $this->_properties = $props;
        return $this;
    }

    /**
     * Get the property at a given index
     *
     * @param  int $index
     * @return string
     */
    public function getProperty($index)
    {
        return $this->_properties[(int) $index];
    }

    /**
     * Return all properties of the class.
     *
     * @return array
     */
    public function getAllProperties()
    {
        return $this->_properties;
    }
}
PKpG[�����Amf/Parse/OutputStream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Util_BinaryStream */
require_once 'Zend/Amf/Util/BinaryStream.php';

/**
 * Iterate at a binary level through the AMF response
 *
 * OutputStream extends BinaryStream as eventually BinaryStream could be placed 
 * outside of Zend_Amf in order to allow other packages to use the class.
 *
 * @uses       Zend_Amf_Util_BinaryStream
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_OutputStream extends Zend_Amf_Util_BinaryStream
{
    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct('');
    }
}
PKpG[��-�xxAmf/Parse/TypeLoader.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
require_once 'Zend/Amf/Value/Messaging/AsyncMessage.php';
require_once 'Zend/Amf/Value/Messaging/CommandMessage.php';
require_once 'Zend/Amf/Value/Messaging/ErrorMessage.php';
require_once 'Zend/Amf/Value/Messaging/RemotingMessage.php';

/**
 * Loads a local class and executes the instantiation of that class.
 *
 * @todo       PHP 5.3 can drastically change this class w/ namespace and the new call_user_func w/ namespace
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
final class Zend_Amf_Parse_TypeLoader
{
    /**
     * @var string callback class
     */
    public static $callbackClass;

    /**
     * @var array AMF class map
     */
    public static $classMap = array (
        'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
        'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_AsyncMessage',
        'flex.messaging.messages.CommandMessage'     => 'Zend_Amf_Value_Messaging_CommandMessage',
        'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_ErrorMessage',
        'flex.messaging.messages.RemotingMessage'    => 'Zend_Amf_Value_Messaging_RemotingMessage',
    );

    /**
     * @var array Default class map
     */
    protected static $_defaultClassMap = array(
        'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
        'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_AsyncMessage',
        'flex.messaging.messages.CommandMessage'     => 'Zend_Amf_Value_Messaging_CommandMessage',
        'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_ErrorMessage',
        'flex.messaging.messages.RemotingMessage'    => 'Zend_Amf_Value_Messaging_RemotingMessage',
    );

    /**
     * Load the mapped class type into a callback.
     *
     * @param  string $className
     * @return object|false
     */
    public static function loadType($className)
    {
        $class    = false;
        $callBack = false;
        $class    = self::getMappedClassName($className);
        if (!class_exists($class)) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception($className .' mapped class '. $class . ' is not defined');
        }

        return $class;
    }

    /**
     * Looks up the supplied call name to its mapped class name
     *
     * @param  string $className
     * @return string
     */
    public static function getMappedClassName($className)
    {
        $mappedName = array_search($className, self::$classMap);

        if ($mappedName) {
            return $mappedName;
        }

        $mappedName = array_search($className, array_flip(self::$classMap));

        if ($mappedName) {
            return $mappedName;
        }

        return false;
    }

    /**
     * Map PHP class names to ActionScript class names
     *
     * Allows users to map the class names of there action script classes
     * to the equivelent php class name. Used in deserialization to load a class
     * and serialiation to set the class name of the returned object.
     *
     * @param  string $asClassName
     * @param  string $phpClassName
     * @return void
     */
    public static function setMapping($asClassName, $phpClassName)
    {
        self::$classMap[$asClassName] = $phpClassName;
    }

    /**
     * Reset type map
     *
     * @return void
     */
    public static function resetMap()
    {
        self::$classMap = self::$_defaultClassMap;
    }
}
PKpG[��Amf/Parse/InputStream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Util_BinaryStream */
require_once 'Zend/Amf/Util/BinaryStream.php';

/**
 * InputStream is used to iterate at a binary level through the AMF request.
 *
 * InputStream extends BinaryStream as eventually BinaryStream could be placed 
 * outside of Zend_Amf in order to allow other packages to use the class.
 *
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_InputStream extends Zend_Amf_Util_BinaryStream
{
}
PKpG[2n�z�;�;Amf/Parse/Amf3/Deserializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse_Amf3
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Parse_Deserializer */
require_once 'Zend/Amf/Parse/Deserializer.php';

/** Zend_Amf_Parse_TypeLoader */
require_once 'Zend/Amf/Parse/TypeLoader.php';

/**
 * Read an AMF3 input stream and convert it into PHP data types.
 *
 * @todo       readObject to handle Typed Objects
 * @todo       readXMLStrimg to be implemented.
 * @todo       Class could be implmented as Factory Class with each data type it's own class.
 * @package    Zend_Amf
 * @subpackage Parse_Amf3
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_Amf3_Deserializer extends Zend_Amf_Parse_Deserializer
{
    /**
     * Total number of objects in the referenceObject array
     * @var int
     */
    protected $_objectCount;

    /**
     * An array of reference objects per amf body
     * @var array
     */
    protected $_referenceObjects = array();

    /**
     * An array of reference strings per amf body
     * @var array
     */
    protected $_referenceStrings = array();

    /**
     * An array of reference class definitions per body
     * @var array
     */
    protected $_referenceDefinitions = array();

    /**
     * Read AMF markers and dispatch for deserialization
     *
     * Checks for AMF marker types and calls the appropriate methods
     * for deserializing those marker types. markers are the data type of
     * the following value.
     *
     * @param  integer $typeMarker
     * @return mixed Whatever the corresponding PHP data type is
     * @throws Zend_Amf_Exception for unidentified marker type
     */
    public function readTypeMarker($typeMarker = null)
    {
        if(null === $typeMarker) {
            $typeMarker = $this->_stream->readByte();
        }

        switch($typeMarker) {
            case Zend_Amf_Constants::AMF3_UNDEFINED:
                 return null;
            case Zend_Amf_Constants::AMF3_NULL:
                 return null;
            case Zend_Amf_Constants::AMF3_BOOLEAN_FALSE:
                 return false;
            case Zend_Amf_Constants::AMF3_BOOLEAN_TRUE:
                 return true;
            case Zend_Amf_Constants::AMF3_INTEGER:
                 return $this->readInteger();
            case Zend_Amf_Constants::AMF3_NUMBER:
                 return $this->_stream->readDouble();
            case Zend_Amf_Constants::AMF3_STRING:
                 return $this->readString();
            case Zend_Amf_Constants::AMF3_DATE:
                 return $this->readDate();
            case Zend_Amf_Constants::AMF3_ARRAY:
                 return $this->readArray();
            case Zend_Amf_Constants::AMF3_OBJECT:
                 return $this->readObject();
            case Zend_Amf_Constants::AMF3_XML:
            case Zend_Amf_Constants::AMF3_XMLSTRING:
                 return $this->readXmlString();
            case Zend_Amf_Constants::AMF3_BYTEARRAY:
                 return $this->readString();
            default:
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Unsupported type marker: ' . $typeMarker);
        }
    }

    /**
     * Read and deserialize an integer
     *
     * AMF 3 represents smaller integers with fewer bytes using the most
     * significant bit of each byte. The worst case uses 32-bits
     * to represent a 29-bit number, which is what we would have
     * done with no compression.
     * - 0x00000000 - 0x0000007F : 0xxxxxxx
     * - 0x00000080 - 0x00003FFF : 1xxxxxxx 0xxxxxxx
     * - 0x00004000 - 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx
     * - 0x00200000 - 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx
     * - 0x40000000 - 0xFFFFFFFF : throw range exception
     *
     *
     * 0x04 -> integer type code, followed by up to 4 bytes of data.
     *
     * @see:   Parsing integers on OSFlash {http://osflash.org/amf3/parsing_integers>} for the AMF3 integer data format.
     * @return int|float
     */
    public function readInteger()
    {
        $count        = 1;
        $intReference = $this->_stream->readByte();
        $result       = 0;
        while ((($intReference & 0x80) != 0) && $count < 4) {
            $result       <<= 7;
            $result        |= ($intReference & 0x7f);
            $intReference   = $this->_stream->readByte();
            $count++;
        }
        if ($count < 4) {
            $result <<= 7;
            $result  |= $intReference;
        } else {
            // Use all 8 bits from the 4th byte
            $result <<= 8;
            $result  |= $intReference;

            // Check if the integer should be negative
            if (($result & 0x10000000) != 0) {
                //and extend the sign bit
                $result |= 0xe0000000;
            }
        }
        return $result;
    }

    /**
     * Read and deserialize a string
     *
     * Strings can be sent as a reference to a previously
     * occurring String by using an index to the implicit string reference table.
     * Strings are encoding using UTF-8 - however the header may either
     * describe a string literal or a string reference.
     *
     * - string = 0x06 string-data
     * - string-data = integer-data [ modified-utf-8 ]
     * - modified-utf-8 = *OCTET
     *
     * @return String
     */
    public function readString()
    {
        $stringReference = $this->readInteger();

        //Check if this is a reference string
        if (($stringReference & 0x01) == 0) {
            // reference string
            $stringReference = $stringReference >> 1;
            if ($stringReference >= count($this->_referenceStrings)) {
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Undefined string reference: ' . $stringReference);
            }
            // reference string found
            return $this->_referenceStrings[$stringReference];
        }

        $length = $stringReference >> 1;
        if ($length) {
            $string = $this->_stream->readBytes($length);
            $this->_referenceStrings[] = $string;
        } else {
            $string = "";
        }
        return $string;
    }

    /**
     * Read and deserialize a date
     *
     * Data is the number of milliseconds elapsed since the epoch
     * of midnight, 1st Jan 1970 in the UTC time zone.
     * Local time zone information is not sent to flash.
     *
     * - date = 0x08 integer-data [ number-data ]
     *
     * @return Zend_Date
     */
    public function readDate()
    {
        $dateReference = $this->readInteger();
        if (($dateReference & 0x01) == 0) {
            $dateReference = $dateReference >> 1;
            if ($dateReference>=count($this->_referenceObjects)) {
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Undefined date reference: ' . $dateReference);
            }
            return $this->_referenceObjects[$dateReference];
        }

        $timestamp = floor($this->_stream->readDouble() / 1000);

        require_once 'Zend/Date.php';
        $dateTime  = new Zend_Date((int) $timestamp);
        $this->_referenceObjects[] = $dateTime;
        return $dateTime;
    }

    /**
     * Read amf array to PHP array
     *
     * - array = 0x09 integer-data ( [ 1OCTET *amf3-data ] | [OCTET *amf3-data 1] | [ OCTET *amf-data ] )
     *
     * @return array
     */
    public function readArray()
    {
        $arrayReference = $this->readInteger();
        if (($arrayReference & 0x01)==0){
            $arrayReference = $arrayReference >> 1;
            if ($arrayReference>=count($this->_referenceObjects)) {
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Unknow array reference: ' . $arrayReference);
            }
            return $this->_referenceObjects[$arrayReference];
        }

        // Create a holder for the array in the reference list
        $data = array();
        $this->_referenceObjects[] &= $data;
        $key = $this->readString();

        // Iterating for string based keys.
        while ($key != '') {
            $data[$key] = $this->readTypeMarker();
            $key = $this->readString();
        }

        $arrayReference = $arrayReference >>1;

        //We have a dense array
        for ($i=0; $i < $arrayReference; $i++) {
            $data[] = $this->readTypeMarker();
        }

        return $data;
    }

    /**
     * Read an object from the AMF stream and convert it into a PHP object
     *
     * @todo   Rather than using an array of traitsInfo create Zend_Amf_Value_TraitsInfo
     * @return object
     */
    public function readObject()
    {
        $traitsInfo   = $this->readInteger();
        $storedObject = ($traitsInfo & 0x01)==0;
        $traitsInfo   = $traitsInfo >> 1;

        // Check if the Object is in the stored Objects reference table
        if ($storedObject) {
            $ref = $traitsInfo;
            if (!isset($this->_referenceObjects[$ref])) {
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Unknown Object reference: ' . $ref);
            }
            $returnObject = $this->_referenceObjects[$ref];
        } else {
            // Check if the Object is in the stored Definistions reference table
            $storedClass = ($traitsInfo & 0x01) == 0;
            $traitsInfo  = $traitsInfo >> 1;
            if ($storedClass) {
                $ref = $traitsInfo;
                if (!isset($this->_referenceDefinitions[$ref])) {
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Unknows Definition reference: '. $ref);
                }
                // Populate the reference attributes
                $className     = $this->_referenceDefinitions[$ref]['className'];
                $encoding      = $this->_referenceDefinitions[$ref]['encoding'];
                $propertyNames = $this->_referenceDefinitions[$ref]['propertyNames'];
            } else {
                // The class was not in the reference tables. Start reading rawdata to build traits.
                // Create a traits table. Zend_Amf_Value_TraitsInfo would be ideal
                $className     = $this->readString();
                $encoding      = $traitsInfo & 0x03;
                $propertyNames = array();
                $traitsInfo    = $traitsInfo >> 2;
            }

            // We now have the object traits defined in variables. Time to go to work:
            if (!$className) {
                // No class name generic object
                $returnObject = new stdClass();
            } else {
                // Defined object
                // Typed object lookup agsinst registered classname maps
                if ($loader = Zend_Amf_Parse_TypeLoader::loadType($className)) {
                    $returnObject = new $loader();
                } else {
                    //user defined typed object
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Typed object not found: '. $className . ' ');
                }
            }

            // Add the Object ot the reference table
            $this->_referenceObjects[] = $returnObject;

            // Check encoding types for additional processing.
            switch ($encoding) {
                case (Zend_Amf_Constants::ET_EXTERNAL):
                    // Externalizable object such as {ArrayCollection} and {ObjectProxy}
                    if (!$storedClass) {
                        $this->_referenceDefinitions[] = array(
                            'className'     => $className,
                            'encoding'      => $encoding,
                            'propertyNames' => $propertyNames,
                        );
                    }
                    $returnObject->externalizedData = $this->readTypeMarker();
                    break;
                case (Zend_Amf_Constants::ET_DYNAMIC):
                    // used for Name-value encoding
                    if (!$storedClass) {
                        $this->_referenceDefinitions[] = array(
                            'className'     => $className,
                            'encoding'      => $encoding,
                            'propertyNames' => $propertyNames,
                        );
                    }
                    // not a refrence object read name value properties from byte stream
                    $properties = array(); // clear value
                    do {
                        $property = $this->readString();
                        if ($property != "") {
                            $propertyNames[]       = $property;
                            $properties[$property] = $this->readTypeMarker();
                        }
                    } while ($property !="");
                    break;
                default:
                    // basic property list object.
                    if (!$storedClass) {
                        $count = $traitsInfo; // Number of properties in the list
                        for($i=0; $i< $count; $i++) {
                            $propertyNames[] = $this->readString();
                        }
                        // Add a refrence to the class.
                        $this->_referenceDefinitions[] = array(
                            'className'     => $className,
                            'encoding'      => $encoding,
                            'propertyNames' => $propertyNames,
                        );
                    }
                    $properties = array(); // clear value
                    foreach ($propertyNames as $property) {
                        $properties[$property] = $this->readTypeMarker();
                    }
                    break;
            }

            // Add properties back to the return object.
            foreach($properties as $key=>$value) {
                if($key) {
                    $returnObject->$key = $value;
                }
            }
        }
        return $returnObject;
    }

    /**
     * Convert XML to SimpleXml
     * If user wants DomDocument they can use dom_import_simplexml
     *
     * @return SimpleXml Object
     */
    public function readXmlString()
    {
        $xmlReference = $this->readInteger();
        $length = $xmlReference >> 1;
        $string = $this->_stream->readBytes($length);
        return simplexml_load_string($string);
    }
}
PKpG["f&;�+�+Amf/Parse/Amf3/Serializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse_Amf3
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Parse_Serializer */
require_once 'Zend/Amf/Parse/Serializer.php';

/** Zend_Amf_Parse_TypeLoader */
require_once 'Zend/Amf/Parse/TypeLoader.php';

/**
 * Detect PHP object type and convert it to a corresponding AMF3 object type
 *
 * @package    Zend_Amf
 * @subpackage Parse_Amf3
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_Amf3_Serializer extends Zend_Amf_Parse_Serializer
{
    /**
     * Serialize PHP types to AMF3 and write to stream
     *
     * Checks to see if the type was declared and then either
     * auto negotiates the type or use the user defined markerType to
     * serialize the data from php back to AMF3
     *
     * @param  mixed $content
     * @param  int $markerType
     * @return void
     */
    public function writeTypeMarker($data, $markerType=null)
    {
        if (null !== $markerType) {
            // Write the Type Marker to denote the following action script data type
            $this->_stream->writeByte($markerType);

            switch ($markerType) {
                case Zend_Amf_Constants::AMF3_NULL:
                    break;
                case Zend_Amf_Constants::AMF3_BOOLEAN_FALSE:
                    break;
                case Zend_Amf_Constants::AMF3_BOOLEAN_TRUE:
                    break;
                case Zend_Amf_Constants::AMF3_INTEGER:
                    $this->writeInteger($data);
                    break;
                case Zend_Amf_Constants::AMF3_NUMBER:
                    $this->_stream->writeDouble($data);
                    break;
                case Zend_Amf_Constants::AMF3_STRING:
                    $this->writeString($data);
                    break;
                case Zend_Amf_Constants::AMF3_DATE:
                    $this->writeDate($data);
                    break;
                case Zend_Amf_Constants::AMF3_ARRAY:
                    $this->writeArray($data);
                    break;
                case Zend_Amf_Constants::AMF3_OBJECT:
                    $this->writeObject($data);
                    break;
                case Zend_Amf_Constants::AMF3_BYTEARRAY:
                    $this->writeString($data);
                    break;
                default:
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Unknown Type Marker: ' . $markerType);
            }
        } else {
            // Detect Type Marker
             switch (true) {
                case (null === $data):
                    $markerType = Zend_Amf_Constants::AMF3_NULL;
                    break;
                case (is_bool($data)):
                    if ($data){
                        $markerType = Zend_Amf_Constants::AMF3_BOOLEAN_TRUE;
                    } else {
                        $markerType = Zend_Amf_Constants::AMF3_BOOLEAN_FALSE;
                    }
                    break;
                case (is_int($data)):
                    if (($data > 0xFFFFFFF) || ($data < -268435456)) {
                        $markerType = Zend_Amf_Constants::AMF3_NUMBER;
                    } else {
                        $markerType = Zend_Amf_Constants::AMF3_INTEGER;
                    }
                    break;
                case (is_float($data)):
                    $markerType = Zend_Amf_Constants::AMF3_NUMBER;
                    break;
                case (is_string($data)):
                    $markerType = Zend_Amf_Constants::AMF3_STRING;
                    break;
                case (is_array($data)):
                    $markerType = Zend_Amf_Constants::AMF3_ARRAY;
                    break;
                case (is_object($data)):
                    // Handle object types.
                    if (($data instanceof DateTime) || ($data instanceof Zend_Date)) {
                        $markerType = Zend_Amf_Constants::AMF3_DATE;
                    } else if ($data instanceof Zend_Amf_Value_ByteArray) {
                        $markerType = Zend_Amf_Constants::AMF3_BYTEARRAY;
                    } else {
                        $markerType = Zend_Amf_Constants::AMF3_OBJECT;
                    }
                    break;
                default: 
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Unsupported data type: ' . gettype($data));
             }
            $this->writeTypeMarker($data, $markerType);
        }
    }

    /**
     * Write an AMF3 integer
     *
     * @param int|float $data
     * @return Zend_Amf_Parse_Amf3_Serializer
     */
    public function writeInteger($int)
    {
        if (($int & 0xffffff80) == 0) {
            $this->_stream->writeByte($int & 0x7f);
            return $this;
        }

        if (($int & 0xffffc000) == 0 ) {
            $this->_stream->writeByte(($int >> 7 ) | 0x80);
            $this->_stream->writeByte($int & 0x7f);
            return $this;
        }

        if (($int & 0xffe00000) == 0) {
            $this->_stream->writeByte(($int >> 14 ) | 0x80);
            $this->_stream->writeByte(($int >> 7 ) | 0x80);
            $this->_stream->writeByte($int & 0x7f);
            return $this;
        }

        $this->_stream->writeByte(($int >> 22 ) | 0x80);
        $this->_stream->writeByte(($int >> 15 ) | 0x80);
        $this->_stream->writeByte(($int >> 8 ) | 0x80);
        $this->_stream->writeByte($int & 0xff);
        return $this;
    }

    /**
     * Send string to output stream
     *
     * @param  string $string
     * @return Zend_Amf_Parse_Amf3_Serializer
     */
    public function writeString($string)
    {
        $ref = strlen($string) << 1 | 0x01;
        $this->writeInteger($ref);
        $this->_stream->writeBytes($string);
        return $this;
    }

    /**
     * Convert DateTime/Zend_Date to AMF date
     *
     * @param  DateTime|Zend_Date $date
     * @return Zend_Amf_Parse_Amf3_Serializer
     */
    public function writeDate($date)
    {
        if ($date instanceof DateTime) {
            $dateString = $date->format('U') * 1000;
        } elseif ($date instanceof Zend_Date) {
            $dateString = $date->toString('U') * 1000;
        } else {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Invalid date specified; must be a string DateTime or Zend_Date object');
        }

        $this->writeInteger(0x01);
        // write time to stream minus milliseconds
        $this->_stream->writeDouble($dateString);
        return $this;
    }

    /**
     * Write a PHP array back to the amf output stream
     *
     * @param array $array
     * @return Zend_Amf_Parse_Amf3_Serializer
     */
    public function writeArray(array $array)
    {
        // have to seperate mixed from numberic keys.
        $numeric = array();
        $string  = array();
        foreach ($array as $key => $value) {
            if (is_int($key)) {
                $numeric[] = $value;
            } else {
                $string[$key] = $value;
            }
        }

        // write the preamble id of the array
        $length = count($numeric);
        $id     = ($length << 1) | 0x01;
        $this->writeInteger($id);

        //Write the mixed type array to the output stream
        foreach($string as $key => $value) {
            $this->writeString($key)
                 ->writeTypeMarker($value);
        }
        $this->writeString('');

        // Write the numeric array to ouput stream
        foreach($numeric as $value) {
            $this->writeTypeMarker($value);
        }
        return $this;
    }

    /**
     * Write object to ouput stream
     *
     * @param  mixed $data
     * @return Zend_Amf_Parse_Amf3_Serializer
     */
    public function writeObject($object)
    {
        $encoding  = Zend_Amf_Constants::ET_PROPLIST;
        $className = '';

        //Check to see if the object is a typed object and we need to change
        switch (true) {
             // the return class mapped name back to actionscript class name.
            case ($className = Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object))):
                break;

            // Check to see if the user has defined an explicit Action Script type.
            case isset($object->_explicitType):
                $className = $object->_explicitType;
                unset($object->_explicitType);
                break;

            // Check if user has defined a method for accessing the Action Script type
            case method_exists($object, 'getASClassName'):
                $className = $object->getASClassName();
                break;

            // No return class name is set make it a generic object
            default:
                break;
        }

        $traitsInfo  = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
        $traitsInfo |= $encoding << 2;
        try {
            switch($encoding) {
                case Zend_Amf_Constants::ET_PROPLIST:
                    $count = 0;
                    foreach($object as $key => $value) {
                        $count++;
                    }
                    $traitsInfo |= ($count << 4);

                    // Write the object ID
                    $this->writeInteger($traitsInfo);

                    // Write the classname
                    $this->writeString($className);

                    // Write the object Key's to the output stream
                    foreach ($object as $key => $value) {
                        $this->writeString($key);
                    }

                    //Write the object values to the output stream.
                    foreach ($object as $key => $value) {
                        $this->writeTypeMarker($value);
                    }
                    break;
                case Zend_Amf_Constants::ET_EXTERNAL:
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('External Object Encoding not implemented');
                    break;
                default: 
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Unknown Object Encoding type: ' . $encoding);
            }
        } catch (Exception $e) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Unable to writeObject output: ' . $e->getMessage());
        }

        return $this;
    }
}
PKpG[s�VVAmf/Parse/Serializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Base abstract class for all AMF serializers.
 *
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Amf_Parse_Serializer
{
    /**
     * Refrence to the current output stream being constructed
     *
     * @var string
     */
    protected $_stream;

    /**
     * Constructor
     * 
     * @param  Zend_Amf_Parse_OutputStream $stream 
     * @return void
     */
    public function __construct(Zend_Amf_Parse_OutputStream $stream)
    {
        $this->_stream = $stream;
    }

    /**
     * Find the PHP object type and convert it into an AMF object type
     *
     * @param  mixed $content
     * @param  int $markerType
     * @return void
     */
    public abstract function writeTypeMarker($content, $markerType=null);
}
PKpG[�N*�Amf/Parse/Deserializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Abstract cass that all deserializer must implement.
 *
 * Logic for deserialization of the AMF envelop is based on resources supplied 
 * by Adobe Blaze DS. For and example of deserialization please review the BlazeDS 
 * source tree.
 *
 * @see        http://opensource.adobe.com/svn/opensource/blazeds/trunk/modules/core/src/java/flex/messaging/io/amf/
 * @package    Zend_Amf
 * @subpackage Parse
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Amf_Parse_Deserializer
{
    /**
     * The raw string that represents the AMF request.
     *
     * @var Zend_Amf_Parse_InputStream
     */
    protected $_stream;

    /**
     * Constructor
     *
     * @param  Zend_Amf_Parse_InputStream $stream
     * @return void
     */
    public function __construct(Zend_Amf_Parse_InputStream $stream)
    {
        $this->_stream = $stream;
    }

    /**
     * Checks for AMF marker types and calls the appropriate methods
     * for deserializing those marker types. Markers are the data type of
     * the following value.
     *
     * @param  int $typeMarker
     * @return mixed Whatever the data type is of the marker in php
     */
    public abstract function readTypeMarker($markerType = null);
}
PKpG[ڳ=)=)Amf/Parse/Amf0/Serializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse_Amf0
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Parse_Serializer */
require_once 'Zend/Amf/Parse/Serializer.php';

/**
 * Serializer php misc types back to there corresponding AMF0 Type Marker.
 *
 * @uses       Zend_Amf_Parse_Serializer
 * @package    Zend_Amf
 * @subpackage Parse_Amf0
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_Amf0_Serializer extends Zend_Amf_Parse_Serializer
{
    /**
     * @var string Name of the class to be returned
     */
    protected $_className = '';

    /**
     * Determine type and serialize accordingly
     *
     * Checks to see if the type was declared and then either
     * auto negotiates the type or relies on the user defined markerType to
     * serialize the data into amf
     *
     * @param  misc $data
     * @param  misc $markerType
     * @return Zend_Amf_Parse_Amf0_Serializer
     * @throws Zend_Amf_Exception for unrecognized types or data
     */
    public function writeTypeMarker($data, $markerType = null)
    {
        if (null !== $markerType) {
            // Write the Type Marker to denote the following action script data type
            $this->_stream->writeByte($markerType);
            switch($markerType) {
                case Zend_Amf_Constants::AMF0_NUMBER:
                    $this->_stream->writeDouble($data);
                    break;
                case Zend_Amf_Constants::AMF0_BOOLEAN:
                    $this->_stream->writeByte($data);
                    break;
                case Zend_Amf_Constants::AMF0_STRING:
                    $this->_stream->writeUTF($data);
                    break;
                case Zend_Amf_Constants::AMF0_OBJECT:
                    $this->writeObject($data);
                    break;
                case Zend_Amf_Constants::AMF0_NULL:
                    break;
                case Zend_Amf_Constants::AMF0_MIXEDARRAY:
                    // Write length of numeric keys as zero.
                    $this->_stream->writeLong(0);
                    $this->writeObject($data);
                    break;
                case Zend_Amf_Constants::AMF0_ARRAY:
                    $this->writeArray($data);
                    break;
                case Zend_Amf_Constants::AMF0_DATE:
                    $this->writeDate($data);
                    break;
                case Zend_Amf_Constants::AMF0_LONGSTRING:
                    $this->_stream->writeLongUTF($data);
                    break;
                case Zend_Amf_Constants::AMF0_TYPEDOBJECT:
                    $this->writeTypedObject($data);
                    break;
                case Zend_Amf_Constants::AMF0_AMF3:
                    $this->writeAmf3TypeMarker($data);
                    break;
                default:
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception("Unknown Type Marker: " . $markerType);
            }
        } else {
            switch (true) {
                case (is_int($data) || is_float($data)):
                    $markerType = Zend_Amf_Constants::AMF0_NUMBER;
                    break;
                case (is_bool($data)):
                    $markerType = Zend_Amf_Constants::AMF0_BOOLEAN;
                    break;
                case (is_string($data) && (strlen($data) > 65536)):
                    $markerType = Zend_Amf_Constants::AMF0_LONGSTRING;
                    break;
                case (is_string($data)):
                    $markerType = Zend_Amf_Constants::AMF0_STRING;
                    break;
                case (is_object($data)):
                    if (($data instanceof DateTime) || ($data instanceof Zend_Date)) {
                        $markerType = Zend_Amf_Constants::AMF0_DATE;
                    } else {

                        if($className = $this->getClassName($data)){
                            //Object is a Typed object set classname
                            $markerType = Zend_Amf_Constants::AMF0_TYPEDOBJECT;
                            $this->_className = $className;
                        } else {
                            // Object is a generic classname
                            $markerType = Zend_Amf_Constants::AMF0_OBJECT;
                        }
                        break;
                    }
                    break;
                case (null === $data):
                    $markerType = Zend_Amf_Constants::AMF0_NULL;
                    break;
                case (is_array($data)):
                    // check if it is a mixed typed array
                    foreach (array_keys($data) as $key) {
                        if (!is_numeric($key)) {
                            $markerType = Zend_Amf_Constants::AMF0_MIXEDARRAY;
                            break;
                        }
                    }
                    // Dealing with a standard numeric array
                    if(!$markerType){
                        $markerType = Zend_Amf_Constants::AMF0_ARRAY;
                        break;
                    }
                    break;
                default:
                    require_once 'Zend/Amf/Exception.php';
                    throw new Zend_Amf_Exception('Unsupported data type: ' . gettype($data));
            }

            $this->writeTypeMarker($data, $markerType);
        }
        return $this;
    }

    /**
     * Write a php array with string or mixed keys.
     *
     * @param object $data
     * @return Zend_Amf_Parse_Amf0_Serializer
     */
    public function writeObject($object)
    {
        // Loop each element and write the name of the property.
        foreach ($object as $key => $value) {
            $this->_stream->writeUTF($key);
            $this->writeTypeMarker($value);
        }

        // Write the end object flag
        $this->_stream->writeInt(0);
        $this->_stream->writeByte(Zend_Amf_Constants::AMF0_OBJECTTERM);
        return $this;
    }

    /**
     * Write a standard numeric array to the output stream. If a mixed array
     * is encountered call writeTypeMarker with mixed array.
     *
     * @param array $array
     * @return Zend_Amf_Parse_Amf0_Serializer
     */
    public function writeArray($array)
    {
        $length = count($array);
        if (!$length < 0) {
            // write the length of the array
            $this->_stream->writeLong(0);
        } else {
            // Write the length of the numberic array
            $this->_stream->writeLong($length);
            for ($i=0; $i<$length; $i++) {
                $value = isset($array[$i]) ? $array[$i] : null;
                $this->writeTypeMarker($value);
            }
        }
        return $this;
    }

    /**
     * Convert the DateTime into an AMF Date
     *
     * @param  DateTime|Zend_Date $data
     * @return Zend_Amf_Parse_Amf0_Serializer
     */
    public function writeDate($data)
    {
        if ($data instanceof DateTime) {
            $dateString = $data->format('U');
        } elseif ($data instanceof Zend_Date) {
            $dateString = $data->toString('U');
        } else {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Invalid date specified; must be a DateTime or Zend_Date object');
        }
        $dateString *= 1000;

        // Make the conversion and remove milliseconds.
        $this->_stream->writeDouble($dateString);

        // Flash does not respect timezone but requires it.
        $this->_stream->writeInt(0);

        return $this;
    }

    /**
     * Write a class mapped object to the output stream.
     *
     * @param  object $data
     * @return Zend_Amf_Parse_Amf0_Serializer
     */
    public function writeTypedObject($data)
    {
        $this->_stream->writeUTF($this->_className);
        $this->writeObject($data);
        return $this;
    }

    /**
     * Encountered and AMF3 Type Marker use AMF3 serializer. Once AMF3 is
     * enountered it will not return to AMf0.
     *
     * @param  string $data
     * @return Zend_Amf_Parse_Amf0_Serializer
     */
    public function writeAmf3TypeMarker($data)
    {
        require_once 'Zend/Amf/Parse/Amf3/Serializer.php';
        $serializer = new Zend_Amf_Parse_Amf3_Serializer($this->_stream);
        $serializer->writeTypeMarker($data);
        return $this;
    }

    /**
     * Find if the class name is a class mapped name and return the
     * respective classname if it is.
     *
     * @param object $object
     * @return false|string $className
     */
    protected function getClassName($object)
    {
        require_once 'Zend/Amf/Parse/TypeLoader.php';
        //Check to see if the object is a typed object and we need to change
        $className = '';
        switch (true) {
            // the return class mapped name back to actionscript class name.
            case Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object)):
                $className = Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object));
                break;
                // Check to see if the user has defined an explicit Action Script type.
            case isset($object->_explicitType):
                $className = $object->_explicitType;
                unset($object->_explicitType);
                break;
                // Check if user has defined a method for accessing the Action Script type
            case method_exists($object, 'getASClassName'):
                $className = $object->getASClassName();
                break;
                // No return class name is set make it a generic object
            default:
                break;
        }
        if(!$className == '') {
            return $className;
        } else {
            return false;
        }
    }
}
PKpG[�,>�]%]%Amf/Parse/Amf0/Deserializer.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Parse_Amf0
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Parse_Deserializer */
require_once 'Zend/Amf/Parse/Deserializer.php';

/**
 * Read an AMF0 input stream and convert it into PHP data types
 *
 * @todo       Implement Typed Object Class Mapping
 * @todo       Class could be implmented as Factory Class with each data type it's own class
 * @package    Zend_Amf
 * @subpackage Parse_Amf0
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Parse_Amf0_Deserializer extends Zend_Amf_Parse_Deserializer
{
    /**
     * An array of objects used for recursivly deserializing an object.
     * @var array
     */
    protected $_reference = array();

    /**
     * If AMF3 serialization occurs, update to AMF0 0x03
     *
     * @var int
     */
    protected $_objectEncoding = Zend_Amf_Constants::AMF0_OBJECT_ENCODING;

    /**
     * refrence to AMF3 deserializer
     *
     * @var Zend_Amf_Parse_Amf3_Deserializer
     */
    protected $_deserializer = null;

    /**
     * Read AMF markers and dispatch for deserialization
     *
     * Checks for AMF marker types and calls the appropriate methods
     * for deserializing those marker types. Markers are the data type of
     * the following value.
     *
     * @param  integer $typeMarker
     * @return mixed whatever the data type is of the marker in php
     * @return mixed
     * @throws Zend_Amf_Exception for invalid type
     */
    public function readTypeMarker($typeMarker = null)
    {
        if (is_null($typeMarker)) {
            $typeMarker = $this->_stream->readByte();
        }

        switch($typeMarker) {
            // number
            case Zend_Amf_Constants::AMF0_NUMBER:
                return $this->_stream->readDouble();

            // boolean
            case Zend_Amf_Constants::AMF0_BOOLEAN:
                return (boolean) $this->_stream->readByte();

            // string
            case Zend_Amf_Constants::AMF0_STRING:
                return $this->_stream->readUTF();

            // object
            case Zend_Amf_Constants::AMF0_OBJECT:
                return $this->readObject();

            // null
            case Zend_Amf_Constants::AMF0_NULL:
                return null;

            // undefined
            case Zend_Amf_Constants::AMF0_UNDEFINED:
                return null;

            // Circular references are returned here
            case Zend_Amf_Constants::AMF0_REFERENCE:
                return $this->readReference();

            // mixed array with numeric and string keys
            case Zend_Amf_Constants::AMF0_MIXEDARRAY:
                return $this->readMixedArray();

            // array
            case Zend_Amf_Constants::AMF0_ARRAY:
                return $this->readArray();

            // date
            case Zend_Amf_Constants::AMF0_DATE:
                return $this->readDate();

            // longString  strlen(string) > 2^16
            case Zend_Amf_Constants::AMF0_LONGSTRING:
                return $this->_stream->readLongUTF();

            //internal AS object,  not supported
            case Zend_Amf_Constants::AMF0_UNSUPPORTED:
                return null;

            // XML
            case Zend_Amf_Constants::AMF0_XML:
                return $this->readXmlString();

            // typed object ie Custom Class
            case Zend_Amf_Constants::AMF0_TYPEDOBJECT:
                return $this->readTypedObject();

            //AMF3-specific
            case Zend_Amf_Constants::AMF0_AMF3:
                return $this->readAmf3TypeMarker();

            default:
                require_once 'Zend/Amf/Exception.php';
                throw new Zend_Amf_Exception('Unsupported marker type: ' . $typeMarker);
        }
    }

    /**
     * Read AMF objects and convert to PHP objects
     *
     * Read the name value pair objects form the php message and convert them to
     * a php object class.
     *
     * Called when the marker type is 3.
     *
     * @param  array|null $object
     * @return object
     */
    public function readObject($object = null)
    {
        if (is_null($object)) {
            $object = array();
        }

        while (true) {
            $key        = $this->_stream->readUTF();
            $typeMarker = $this->_stream->readByte();
            if ($typeMarker != Zend_Amf_Constants::AMF0_OBJECTTERM ){
                //Recursivly call readTypeMarker to get the types of properties in the object
                $object[$key] = $this->readTypeMarker($typeMarker);
            } else {
                //encountered AMF object terminator
                break;
            }
        }
        $this->_reference[] = $object;
        return (object) $object;
    }

    /**
     * Read reference objects
     *
     * Used to gain access to the private array of refrence objects.
     * Called when marker type is 7.
     *
     * @return object
     * @throws Zend_Amf_Exception for invalid reference keys
     */
    public function readReference()
    {
        $key = $this->_stream->readInt();
        if (!array_key_exists($key, $this->_reference)) {
            require_once 'Zend/Amf/Exception.php';
            throw new Zend_Amf_Exception('Invalid reference key: '. $key);
        }
        return $this->_reference[$key];
    }

    /**
     * Reads an array with numeric and string indexes.
     *
     * Called when marker type is 8
     *
     * @todo   As of Flash Player 9 there is not support for mixed typed arrays
     *         so we handle this as an object. With the introduction of vectors
     *         in Flash Player 10 this may need to be reconsidered.
     * @return array
     */
    public function readMixedArray()
    {
        $length = $this->_stream->readLong();
        return $this->readObject();
    }

    /**
     * Converts numberically indexed actiosncript arrays into php arrays.
     *
     * Called when marker type is 10
     *
     * @return array
     */
    public function readArray()
    {
        $length = $this->_stream->readLong();
        $array = array();
        while ($length--) {
            $array[] = $this->readTypeMarker();
        }
        return $array;
    }

    /**
     * Convert AS Date to Zend_Date
     *
     * @return Zend_Date
     */
    public function readDate()
    {
        // get the unix time stamp. Not sure why ActionScript does not use
        // milliseconds
        $timestamp = floor($this->_stream->readDouble() / 1000);

        // The timezone offset is never returned to the server; it is always 0,
        // so read and ignore.
        $offset = $this->_stream->readInt();

        require_once 'Zend/Date.php';
        $date   = new Zend_Date($timestamp);
        return $date;
    }

    /**
     * Convert XML to SimpleXml
     * If user wants DomDocument they can use dom_import_simplexml
     *
     * @return SimpleXml Object
     */
    public function readXmlString()
    {
        $string = $this->_stream->readLongUTF();
        return simplexml_load_string($string);
    }

    /**
     * Read Class that is to be mapped to a server class.
     *
     * Commonly used for Value Objects on the server
     *
     * @todo   implement Typed Class mapping
     * @return object
     * @throws Zend_Amf_Exception if unable to load type
     */
    public function readTypedObject()
    {
         require_once 'Zend/Amf/Parse/TypeLoader.php';
        // get the remote class name
        $className = $this->_stream->readUTF();
        $loader = Zend_Amf_Parse_TypeLoader::loadType($className);
        $returnObject = new $loader();
        $properties = get_object_vars($this->readObject());
        foreach($properties as $key=>$value) {
            if($key) {
                $returnObject->$key = $value;
            }
        }

        return $returnObject;
    }

    /**
     * AMF3 data type encountered load AMF3 Deserializer to handle
     * type markers.
     *
     * @return string
     */
    public function readAmf3TypeMarker()
    {
        $deserializer = $this->getDeserializer();
        $this->_objectEncoding = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
        return $deserializer->readTypeMarker();
    }

    /**
     * Return the object encoding to check if an AMF3 object
     * is going to be return.
     *
     * @return int
     */
    public function getObjectEncoding()
    {
        return $this->_objectEncoding;
    }

    /**
     * Get deserializer
     *
     * @return Zend_Amf_Parse_Amf3_Deserializer
     */
    public function getDeserializer()
    {
        if (null === $this->_deserializer) {
            require_once 'Zend/Amf/Parse/Amf3/Deserializer.php';
            $this->_deserializer = new Zend_Amf_Parse_Amf3_Deserializer($this->_stream);
        }
        return $this->_deserializer;
    }
}
PKpG[PD��aaAmf/Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to version 1.0 of the Zend Framework
 * license, that is bundled with this package in the file LICENSE.txt, and
 * is available through the world-wide-web at the following URL:
 * http://framework.zend.com/license/new-bsd. If you did not receive
 * a copy of the Zend Framework license and are unable to obtain it
 * through the world-wide-web, please send a note to license@zend.com
 * so we can mail you a copy immediately.
 *
 * @package    Zend_Amf
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Exception */
require_once 'Zend/Amf/Exception.php';

/**
 * Zend_Amf_Server_Exception
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Server_Exception extends Zend_Amf_Exception
{
}
PKpG[�����Amf/Response/Http.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Amf_Response */
require_once 'Zend/Amf/Response.php';

/**
 * Creates the proper http headers and send the serialized AMF stream to standard out.
 *
 * @package    Zend_Amf
 * @subpackage Response
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Response_Http extends Zend_Amf_Response
{
    /**
     * Create the application response header for AMF and sends the serialized AMF string
     *
     * @return string
     */
    public function getResponse()
    {
        if (!headers_sent()) {
            header('Content-Type: application/x-amf');
        }
        return parent::getResponse();
    }
}
PKpG[���</T/TAmf/Server.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Server_Interface */
require_once 'Zend/Server/Interface.php';

/** Zend_Server_Reflection */
require_once 'Zend/Server/Reflection.php';

/** Zend_Amf_Constants */
require_once 'Zend/Amf/Constants.php';

/** Zend_Amf_Value_MessageBody */
require_once 'Zend/Amf/Value/MessageBody.php';

/** Zend_Amf_Value_Messaging_CommandMessage */
require_once 'Zend/Amf/Value/Messaging/CommandMessage.php';

/**
 * An AMF gateway server implementation to allow the connection of the Adobe Flash Player to
 * the Zend Framework
 *
 * @todo       Make the relection methods cache and autoload.
 * @package    Zend_Amf
 * @subpackage Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Amf_Server implements Zend_Server_Interface
{
    /**
     * Array of dispatchables
     * @var array
     */
    protected $_methods = array();

    /**
     * Array of directories to search for loading classes dynamically
     * @var array
     */
    protected $_directories = array();

    /**
     * @var bool Production flag; whether or not to return exception messages
     */
    protected $_production = true;

    /**
     * Request processed
     * @var null|Zend_Amf_Request
     */
    protected $_request = null;

    /**
     * Class to use for responses
     * @var null|Zend_Amf_Response
     */
    protected $_response;

    /**
     * Dispatch table of name => method pairs
     * @var array
     */
    protected $_table = array();

    /**
     * Set production flag
     *
     * @param  bool $flag
     * @return Zend_Amf_Server
     */
    public function setProduction($flag)
    {
        $this->_production = (bool) $flag;
        return $this;
    }

    /**
     * Whether or not the server is in production
     *
     * @return bool
     */
    public function isProduction()
    {
        return $this->_production;
    }


    /**
     * Loads a remote class or method and executes the function and returns
     * the result
     *
     * @param  string $method Is the method to execute
     * @param  mixed $param values for the method
     * @return mixed $response the result of executing the method
     * @throws Zend_Amf_Server_Exception
     */
    protected function _dispatch($method, $params = null, $source = null)
    {
        if (!isset($this->_table[$method])) {
            // if source is null a method that was not defined was called.
            if ($source) {
                $classPath    = array();
                $path         = explode('.', $source);
                $className    = array_pop($path);
                $uriclasspath = implode('/', $path);

                // Take the user supplied directories and add the unique service path to the end.
                foreach ($this->_directories as $dir) {
                    $classPath[] = $dir . $uriclasspath;
                }

                require_once('Zend/Loader.php');
                try {
                    Zend_Loader::loadClass($className, $classPath);
                } catch (Exception $e) {
                    require_once 'Zend/Amf/Server/Exception.php';
                    throw new Zend_Amf_Server_Exception('Class "' . $className . '" does not exist');
                }
                // Add the new loaded class to the server.
                $this->setClass($className);
            } else {
                require_once 'Zend/Amf/Server/Exception.php';
                throw new Zend_Amf_Server_Exception('Method "' . $method . '" does not exist');
            }
        }

        $info = $this->_table[$method];
        $argv = $info->getInvokeArguments();
        if (0 < count($argv)) {
            $params = array_merge($params, $argv);
        }

        if ($info instanceof Zend_Server_Reflection_Function) {
            $func = $info->getName();
            $return = call_user_func_array($func, $params);
        } elseif ($info instanceof Zend_Server_Reflection_Method) {
            // Get class
            $class = $info->getDeclaringClass()->getName();
            if ('static' == $info->isStatic()) {
                // for some reason, invokeArgs() does not work the same as
                // invoke(), and expects the first argument to be an object.
                // So, using a callback if the method is static.
                $return = call_user_func_array(array($class, $info->getName()), $params);
            } else {
                // Object methods
                try {
                    $object = $info->getDeclaringClass()->newInstance();
                } catch (Exception $e) {
                    require_once 'Zend/Amf/Server/Exception.php';
                    throw new Zend_Amf_Server_Exception('Error instantiating class ' . $class . ' to invoke method ' . $info->getName(), 621);
                }
                $return = $info->invokeArgs($object, $params);
            }
        } else {
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Method missing implementation ' . get_class($info));
        }

        return $return;
    }

    /**
     * Handles each of the 11 different command message types.
     *
     * A command message is a flex.messaging.messages.CommandMessage
     *
     * @see    Zend_Amf_Value_Messaging_CommandMessage
     * @param  Zend_Amf_Value_Messaging_CommandMessage $message
     * @return Zend_Amf_Value_Messaging_AcknowledgeMessage
     */
    protected function _loadCommandMessage(Zend_Amf_Value_Messaging_CommandMessage $message)
    {
        switch($message->operation) {
            case Zend_Amf_Value_Messaging_CommandMessage::CLIENT_PING_OPERATION :
                require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
                $return = new Zend_Amf_Value_Messaging_AcknowledgeMessage($message);
                break;
            default :
                require_once 'Zend/Amf/Server/Exception.php';
                throw new Zend_Amf_Server_Exception('CommandMessage::' . $message->operation . ' not implemented');
                break;
        }
        return $return;
    }

    /**
     * Takes the deserialized AMF request and performs any operations.
     *
     * @todo   should implement and SPL observer pattern for custom AMF headers
     * @todo   implement AMF header authentication
     * @param  Zend_Amf_Request $request
     * @return Zend_Amf_Response
     * @throws Zend_Amf_server_Exception|Exception
     */
    protected function _handle(Zend_Amf_Request $request)
    {
        // Get the object encoding of the request.
        $objectEncoding = $request->getObjectEncoding();

        // create a response object to place the output from the services.
        $response = $this->getResponse();

        // set reponse encoding
        $response->setObjectEncoding($objectEncoding);

        $responseBody = $request->getAmfBodies();

        // Iterate through each of the service calls in the AMF request
        foreach($responseBody as $body)
        {
            try {
                if ($objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING) {
                    // AMF0 Object Encoding
                    $targetURI = $body->getTargetURI();

                    // Split the target string into its values.
                    $source = substr($targetURI, 0, strrpos($targetURI, '.'));

                    if ($source) {
                        // Break off method name from namespace into source
                        $method = substr(strrchr($targetURI, '.'), 1);
                        $return = $this->_dispatch($method, $body->getData(), $source);
                    } else {
                        // Just have a method name.
                        $return = $this->_dispatch($targetURI, $body->getData());
                    }
                } else {
                    // AMF3 read message type
                    $message = $body->getData();
                    if ($message instanceof Zend_Amf_Value_Messaging_CommandMessage) {
                        // async call with command message
                        $return = $this->_loadCommandMessage($message);
                    } elseif ($message instanceof Zend_Amf_Value_Messaging_RemotingMessage) {
                        require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
                        $return = new Zend_Amf_Value_Messaging_AcknowledgeMessage($message);
                        $return->body = $this->_dispatch($message->operation, $message->body, $message->source);
                    } else {
                        // Amf3 message sent with netConnection
                        $targetURI = $body->getTargetURI();

                        // Split the target string into its values.
                        $source = substr($targetURI, 0, strrpos($targetURI, '.'));

                        if ($source) {
                            // Break off method name from namespace into source
                            $method = substr(strrchr($targetURI, '.'), 1);
                            $return = $this->_dispatch($method, array($body->getData()), $source);
                        } else {
                            // Just have a method name.
                            $return = $this->_dispatch($targetURI, $body->getData());
                        }
                    }
                }
                $responseType = Zend_AMF_Constants::RESULT_METHOD;
            } catch (Exception $e) {
                switch ($objectEncoding) {
                    case Zend_Amf_Constants::AMF0_OBJECT_ENCODING :
                        $return = array(
                            'description' => ($this->isProduction()) ? '' : $e->getMessage(),
                            'detail'      => ($this->isProduction()) ? '' : $e->getTraceAsString(),
                            'line'        => ($this->isProduction()) ? 0  : $e->getLine(),
                            'code'        => $e->getCode(),
                        );
                        break;
                    case Zend_Amf_Constants::AMF3_OBJECT_ENCODING :
                        require_once 'Zend/Amf/Value/Messaging/ErrorMessage.php';
                        $return = new Zend_Amf_Value_Messaging_ErrorMessage($message);
                        $return->faultString = $this->isProduction() ? '' : $e->getMessage();
                        $return->faultCode   = $e->getCode();
                        $return->faultDetail = $this->isProduction() ? '' : $e->getTraceAsString();
                        break;
                }
                $responseType = Zend_AMF_Constants::STATUS_METHOD;
            }

            $responseURI = $body->getResponseURI() . $responseType;
            $newBody     = new Zend_Amf_Value_MessageBody($responseURI, null, $return);
            $response->addAmfBody($newBody);
        }

        // serialize the response and return serialized body.
        $response->finalize();
    }

    /**
     * Handle an AMF call from the gateway.
     *
     * @param  null|Zend_Amf_Request $request Optional
     * @return Zend_Amf_Response
     */
    public function handle($request = null)
    {
        // Check if request was passed otherwise get it from the server
        if (is_null($request) || !$request instanceof Zend_Amf_Request) {
            $request = $this->getRequest();
        } else {
            $this->setRequest($request);
        }

        // Check for errors that may have happend in deserialization of Request.
        try {
            // Take converted PHP objects and handle service call.
            // Serialize to Zend_Amf_response for output stream
            $this->_handle($request);
            $response = $this->getResponse();
        } catch (Exception $e) {
            // Handle any errors in the serialization and service  calls.
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Handle error: ' . $e->getMessage() . ' ' . $e->getLine());
        }

        // Return the Amf serialized output string
        return $response;
    }

    /**
     * Set request object
     *
     * @param  string|Zend_Amf_Request $request
     * @return Zend_Amf_Server
     */
    public function setRequest($request)
    {
        if (is_string($request) && class_exists($request)) {
            $request = new $request();
            if (!$request instanceof Zend_Amf_Request) {
                require_once 'Zend/Amf/Server/Exception.php';
                throw new Zend_Amf_Server_Exception('Invalid request class');
            }
        } elseif (!$request instanceof Zend_Amf_Request) {
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Invalid request object');
        }
        $this->_request = $request;
        return $this;
    }

    /**
     * Return currently registered request object
     *
     * @return null|Zend_Amf_Request
     */
    public function getRequest()
    {
        if (null === $this->_request) {
            require_once 'Zend/Amf/Request/Http.php';
            $this->setRequest(new Zend_Amf_Request_Http());
        }

        return $this->_request;
    }

    /**
     * Public access method to private Zend_Amf_Server_Response refrence
     *
     * @param  string|Zend_Amf_Server_Response $response
     * @return Zend_Amf_Server
     */
    public function setResponse($response)
    {
        if (is_string($response) && class_exists($response)) {
            $response = new $response();
            if (!$response instanceof Zend_Amf_Response) {
                require_once 'Zend/Amf/Server/Exception.php';
                throw new Zend_Amf_Server_Exception('Invalid response class');
            }
        } elseif (!$response instanceof Zend_Amf_Response) {
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Invalid response object');
        }
        $this->_response = $response;
        return $this;
    }

    /**
     * get a refrence to the Zend_Amf_response instance
     *
     * @return Zend_Amf_Server_Response
     */
    public function getResponse()
    {
        if (null === ($response = $this->_response)) {
            require_once 'Zend/Amf/Response/Http.php';
            $this->setResponse(new Zend_Amf_Response_Http());
        }
        return $this->_response;
    }

    /**
     * Add a file system path to a directory of services.
     * @param string|array $path
     */
    public function setClassPath($path)
    {

    }

    /**
     * Attach a class or object to the server
     *
     * Class may be either a class name or an instantiated object. Reflection
     * is done on the class or object to determine the available public
     * methods, and each is attached to the server as and available method. If
     * a $namespace has been provided, that namespace is used to prefix
     * AMF service call.
     *
     * @param  string|object $class
     * @param  string $namespace Optional
     * @param  mixed $arg Optional arguments to pass to a method
     * @return Zend_Amf_Server
     * @throws Zend_Amf_Server_Exception on invalid input
     */
    public function setClass($class, $namespace = '', $argv = null)
    {
        if (is_string($class) && !class_exists($class)){
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Invalid method or class');
        } elseif (!is_string($class) && !is_object($class)) {
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Invalid method or class; must be a classname or object');
        }

        $argv = null;
        if (2 < func_num_args()) {
            $argv = array_slice(func_get_args(), 2);
        }

        $this->_methods[] = Zend_Server_Reflection::reflectClass($class, $argv, $namespace);
        $this->_buildDispatchTable();

        return $this;
    }

    /**
     * Attach a function to the server
     *
     * Additional arguments to pass to the function at dispatch may be passed;
     * any arguments following the namespace will be aggregated and passed at
     * dispatch time.
     *
     * @param  string|array $function Valid callback
     * @param  string $namespace Optional namespace prefix
     * @return Zend_Amf_Server
     * @throws Zend_Amf_Server_Exception
     */
    public function addFunction($function, $namespace = '')
    {
        if (!is_string($function) && !is_array($function)) {
            require_once 'Zend/Amf/Server/Exception.php';
            throw new Zend_Amf_Server_Exception('Unable to attach function');
        }

        $argv = null;
        if (2 < func_num_args()) {
            $argv = array_slice(func_get_args(), 2);
        }

        $function = (array) $function;
        foreach ($function as $func) {
            if (!is_string($func) || !function_exists($func)) {
                require_once 'Zend/Amf/Server/Exception.php';
                throw new Zend_Amf_Server_Exception('Unable to attach function');
            }
            $this->_methods[] = Zend_Server_Reflection::reflectFunction($func, $argv, $namespace);
        }

        $this->_buildDispatchTable();
        return $this;
    }


    /**
     * Creates an array of directories in which services can reside.
     *
     * @param string $dir
     */
    public function addDirectory($dir)
    {
        $this->_directories[] = $dir;
    }

    /**
     * Returns an array of directories that can hold services.
     *
     * @return array
     */
    public function getDirectory()
    {
        return $_directory;
    }

    /**
     * (Re)Build the dispatch table
     *
     * The dispatch table consists of a an array of method name =>
     * Zend_Server_Reflection_Function_Abstract pairs
     *
     * @return void
     */
    protected function _buildDispatchTable()
    {
        $table = array();
        foreach ($this->_methods as $key => $dispatchable) {
            if ($dispatchable instanceof Zend_Server_Reflection_Function_Abstract) {
                $ns   = $dispatchable->getNamespace();
                $name = $dispatchable->getName();
                $name = empty($ns) ? $name : $ns . '.' . $name;

                if (isset($table[$name])) {
                    require_once 'Zend/Amf/Server/Exception.php';
                    throw new Zend_Amf_Server_Exception('Duplicate method registered: ' . $name);
                }
                $table[$name] = $dispatchable;
                continue;
            }

            if ($dispatchable instanceof Zend_Server_Reflection_Class) {
                foreach ($dispatchable->getMethods() as $method) {
                    $ns   = $method->getNamespace();
                    $name = $method->getName();
                    $name = empty($ns) ? $name : $ns . '.' . $name;

                    if (isset($table[$name])) {
                        require_once 'Zend/Amf/Server/Exception.php';
                        throw new Zend_Amf_Server_Exception('Duplicate method registered: ' . $name);
                    }
                    $table[$name] = $method;
                    continue;
                }
            }
        }
        $this->_table = $table;
    }

    /**
     * Raise a server fault
     *
     * Unimplemented
     *
     * @param  string|Exception $fault
     * @return void
     */
    public function fault($fault = null, $code = 404)
    {
    }

    /**
     * Returns a list of registered methods
     *
     * Returns an array of dispatchables (Zend_Server_Reflection_Function,
     * _Method, and _Class items).
     *
     * @return array
     */
    public function getFunctions()
    {
        return $this->_table;
    }

    /**
     * Set server persistence
     *
     * Unimplemented
     *
     * @param  mixed $mode
     * @return void
     */
    public function setPersistence($mode)
    {
    }

    /**
     * Load server definition
     *
     * Unimplemented
     *
     * @param  array $definition
     * @return void
     */
    public function loadFunctions($definition)
    {
    }

    /**
     * Map ActionScript classes to PHP classes
     *
     * @param  string $asClass
     * @param  string $phpClass
     * @return Zend_Amf_Server
     */
    public function setClassMap($asClass, $phpClass)
    {
        require_once 'Zend/Amf/Parse/TypeLoader.php';
        Zend_Amf_Parse_TypeLoader::setMapping($asClass, $phpClass);
        return $this;
    }

    /**
     * List all available methods
     *
     * Returns an array of method names.
     *
     * @return array
     */
    public function listMethods()
    {
        return array_keys($this->_table);
    }
}
PKpG[e�JBBAmf/Constants.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * The following constants are used throughout serialization and 
 * deserialization to detect the AMF marker and encoding types.
 *
 * @package    Zend_Amf
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
final class Zend_Amf_Constants 
{
    const AMF0_NUMBER            = 0x00;
    const AMF0_BOOLEAN           = 0x01;
    const AMF0_STRING            = 0x02;
    const AMF0_OBJECT            = 0x03;
    const AMF0_MOVIECLIP         = 0x04;
    const AMF0_NULL              = 0x05;
    const AMF0_UNDEFINED         = 0x06;
    const AMF0_REFERENCE         = 0x07;
    const AMF0_MIXEDARRAY        = 0x08;
    const AMF0_OBJECTTERM        = 0x09;
    const AMF0_ARRAY             = 0x0a;
    const AMF0_DATE              = 0x0b;
    const AMF0_LONGSTRING        = 0x0c;
    const AMF0_UNSUPPORTED       = 0x0e;
    const AMF0_XML               = 0x0f;
    const AMF0_TYPEDOBJECT       = 0x10;
    const AMF0_AMF3              = 0x11;
    const AMF0_OBJECT_ENCODING   = 0x00;

    const AMF3_UNDEFINED         = 0x00;
    const AMF3_NULL              = 0x01;
    const AMF3_BOOLEAN_FALSE     = 0x02;
    const AMF3_BOOLEAN_TRUE      = 0x03;
    const AMF3_INTEGER           = 0x04;
    const AMF3_NUMBER            = 0x05;
    const AMF3_STRING            = 0x06;
    const AMF3_XML               = 0x07;
    const AMF3_DATE              = 0x08;
    const AMF3_ARRAY             = 0x09;
    const AMF3_OBJECT            = 0x0A;
    const AMF3_XMLSTRING         = 0x0B;
    const AMF3_BYTEARRAY         = 0x0C;
    const AMF3_OBJECT_ENCODING   = 0x03;

    // Object encodings for AMF3 object types
    const ET_PROPLIST            = 0x00;
    const ET_EXTERNAL            = 0x01;
    const ET_DYNAMIC             = 0x02;
    const ET_PROXY               = 0x03;

    /**
     * Special content length value that indicates "unknown" content length 
     * per AMF Specification
     */
    const UNKNOWN_CONTENT_LENGTH = -1;
    const URL_APPEND_HEADER      = 'AppendToGatewayUrl';
    const RESULT_METHOD          = '/onResult';
    const STATUS_METHOD          = '/onStatus';
}
PKpG[$���+�+Json.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Json_Exception.
 */
require_once 'Zend/Json/Exception.php';

/**
 * Class for encoding to and decoding from JSON.
 *
 * @category   Zend
 * @package    Zend_Json
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Json
{
    /**
     * How objects should be encoded -- arrays or as StdClass. TYPE_ARRAY is 1
     * so that it is a boolean true value, allowing it to be used with
     * ext/json's functions.
     */
    const TYPE_ARRAY  = 1;
    const TYPE_OBJECT = 0;

     /**
      * To check the allowed nesting depth of the XML tree during xml2json conversion.
      * 
      * @var int
      */
    public static $maxRecursionDepthAllowed=25;

    /**
     * @var bool
     */
    public static $useBuiltinEncoderDecoder = false;

    /**
     * Decodes the given $encodedValue string which is
     * encoded in the JSON format
     *
     * Uses ext/json's json_decode if available.
     *
     * @param string $encodedValue Encoded in JSON format
     * @param int $objectDecodeType Optional; flag indicating how to decode
     * objects. See {@link Zend_Json_Decoder::decode()} for details.
     * @return mixed
     */
    public static function decode($encodedValue, $objectDecodeType = Zend_Json::TYPE_ARRAY)
    {
        if (function_exists('json_decode') && self::$useBuiltinEncoderDecoder !== true) {
            return json_decode($encodedValue, $objectDecodeType);
        }

        require_once 'Zend/Json/Decoder.php';
        return Zend_Json_Decoder::decode($encodedValue, $objectDecodeType);
    }


    /**
     * Encode the mixed $valueToEncode into the JSON format
     *
     * Encodes using ext/json's json_encode() if available.
     *
     * NOTE: Object should not contain cycles; the JSON format
     * does not allow object reference.
     *
     * NOTE: Only public variables will be encoded
     *
     * @param mixed $valueToEncode
     * @param boolean $cycleCheck Optional; whether or not to check for object recursion; off by default
     * @param array $options Additional options used during encoding
     * @return string JSON encoded object
     */
    public static function encode($valueToEncode, $cycleCheck = false, $options = array())
    {
        if (is_object($valueToEncode) && method_exists($valueToEncode, 'toJson')) {
            return $valueToEncode->toJson();
        }
        
        if (function_exists('json_encode') && self::$useBuiltinEncoderDecoder !== true) {
            return json_encode($valueToEncode);
        }
    
        require_once 'Zend/Json/Encoder.php';
        return Zend_Json_Encoder::encode($valueToEncode, $cycleCheck, $options);
    }
    
    /**  
     * fromXml - Converts XML to JSON  
     *  
     * Converts a XML formatted string into a JSON formatted string.   
     * The value returned will be a string in JSON format.  
     *  
     * The caller of this function needs to provide only the first parameter,   
     * which is an XML formatted String. The second parameter is optional, which   
     * lets the user to select if the XML attributes in the input XML string  
     * should be included or ignored in xml2json conversion.  
     *   
     * This function converts the XML formatted string into a PHP array by   
     * calling a recursive (protected static) function in this class. Then, it   
     * converts that PHP array into JSON by calling the "encode" static funcion.  
     *  
     * Throws a Zend_Json_Exception if the input not a XML formatted string.  
     *  
     * @static  
     * @access public  
     * @param string $xmlStringContents XML String to be converted  
     * @param boolean $ignoreXmlAttributes Include or exclude XML attributes in  
     * the xml2json conversion process.  
     * @return mixed - JSON formatted string on success  
     * @throws Zend_Json_Exception  
     */  
    public static function fromXml ($xmlStringContents, $ignoreXmlAttributes=true) {   
        // Load the XML formatted string into a Simple XML Element object.    
        $simpleXmlElementObject = simplexml_load_string($xmlStringContents);       
     
        // If it is not a valid XML content, throw an exception.      
        if ($simpleXmlElementObject == null) {      
            throw new Zend_Json_Exception('Function fromXml was called with an invalid XML formatted string.');   
        } // End of if ($simpleXmlElementObject == null)   
       
        $resultArray = null;   
         
        // Call the recursive function to convert the XML into a PHP array.   
        $resultArray = self::_processXml($simpleXmlElementObject, $ignoreXmlAttributes);             
  
        // Convert the PHP array to JSON using Zend_Json encode method.   
        // It is just that simple.   
        $jsonStringOutput = self::encode($resultArray);
        return($jsonStringOutput);       
    } // End of function fromXml.  

    /**  
     * _processXml - Contains the logic for xml2json  
     *  
     * The logic in this function is a recursive one.  
     *    
     * The main caller of this function (i.e. fromXml) needs to provide    
     * only the first two parameters i.e. the SimpleXMLElement object and   
     * the flag for ignoring or not ignoring XML attributes. The third parameter   
     * will be used internally within this function during the recursive calls.  
     *   
     * This function converts the SimpleXMLElement object into a PHP array by   
     * calling a recursive (protected static) function in this class. Once all  
     * the XML elements are stored in the PHP array, it is returned to the caller.  
     *  
     * Throws a Zend_Json_Exception if the XML tree is deeper than the allowed limit.  
     *  
     * @static  
     * @access protected  
     * @param SimpleXMLElement $simpleXmlElementObject XML element to be converted  
     * @param boolean $ignoreXmlAttributes Include or exclude XML attributes in  
     * the xml2json conversion process.  
     * @param int $recursionDepth Current recursion depth of this function
     * @return mixed - On success, a PHP associative array of traversed XML elements  
     * @throws Zend_Json_Exception  
     */  
    protected static function _processXml ($simpleXmlElementObject, $ignoreXmlAttributes, $recursionDepth=0) {       
        // Keep an eye on how deeply we are involved in recursion.      
        if ($recursionDepth > self::$maxRecursionDepthAllowed) {      
            // XML tree is too deep. Exit now by throwing an exception.      
            throw new Zend_Json_Exception(   
                "Function _processXml exceeded the allowed recursion depth of " .   
                self::$maxRecursionDepthAllowed);      
        } // End of if ($recursionDepth > self::$maxRecursionDepthAllowed)     
     
        if ($recursionDepth == 0) {      
            // Store the original SimpleXmlElementObject sent by the caller.      
            // We will need it at the very end when we return from here for good.      
            $callerProvidedSimpleXmlElementObject = $simpleXmlElementObject;      
        } // End of if ($recursionDepth == 0)       
     
        if ($simpleXmlElementObject instanceof SimpleXMLElement) {      
            // Get a copy of the simpleXmlElementObject      
            $copyOfSimpleXmlElementObject = $simpleXmlElementObject;      
            // Get the object variables in the SimpleXmlElement object for us to iterate.      
            $simpleXmlElementObject = get_object_vars($simpleXmlElementObject);      
        } // End of if (get_class($simpleXmlElementObject) == "SimpleXMLElement")   
     
        // It needs to be an array of object variables.      
        if (is_array($simpleXmlElementObject)) {   
            // Initialize a result array.   
            $resultArray = array();      
            // Is the input array size 0? Then, we reached the rare CDATA text if any.      
            if (count($simpleXmlElementObject) <= 0) {      
                // Let us return the lonely CDATA. It could even be      
                // an empty element or just filled with whitespaces.      
                return (trim(strval($copyOfSimpleXmlElementObject)));      
            } // End of if (count($simpleXmlElementObject) <= 0)      
     
            // Let us walk through the child elements now.      
            foreach($simpleXmlElementObject as $key=>$value) {      
                // Check if we need to ignore the XML attributes.      
                // If yes, you can skip processing the XML attributes.      
                // Otherwise, add the XML attributes to the result array.      
                if(($ignoreXmlAttributes == true) && (is_string($key)) && ($key == "@attributes")) {      
                    continue;      
                } // End of if(($ignoreXmlAttributes == true) && ($key == "@attributes"))   
     
                // Let us recursively process the current XML element we just visited.      
                // Increase the recursion depth by one.      
                $recursionDepth++;       
                $resultArray[$key] = self::_processXml ($value, $ignoreXmlAttributes, $recursionDepth);      
     
                // Decrease the recursion depth by one.      
                $recursionDepth--;      
            } // End of foreach($simpleXmlElementObject as $key=>$value) {       
     
            if ($recursionDepth == 0) {      
                // That is it. We are heading to the exit now.      
                // Set the XML root element name as the root [top-level] key of      
                // the associative array that we are going to return to the original      
                // caller of this recursive function.      
                $tempArray = $resultArray;      
                $resultArray = array();      
                $resultArray[$callerProvidedSimpleXmlElementObject->getName()] = $tempArray;   
            } // End of if ($recursionDepth == 0)   
  
            return($resultArray);   
        } else {      
            // We are now looking at either the XML attribute text or      
            // the text between the XML tags.      
            return (trim(strval($simpleXmlElementObject)));      
        } // End of if (is_array($simpleXmlElementObject))      
    } // End of function _processXml. 
}

PKpG[�A5BIBI
Layout.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Layout
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Layout.php 13017 2008-12-04 15:29:24Z doctorrock83 $
 */

/**
 * Provide Layout support for MVC applications
 *
 * @category   Zend
 * @package    Zend_Layout
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Layout
{
    /**
     * Placeholder container for layout variables
     * @var Zend_View_Helper_Placeholder_Container
     */
    protected $_container;

    /**
     * Key used to store content from 'default' named response segment
     * @var string
     */
    protected $_contentKey = 'content';

    /**
     * Are layouts enabled?
     * @var bool
     */
    protected $_enabled = true;

    /**
     * Helper class
     * @var string
     */
    protected $_helperClass = 'Zend_Layout_Controller_Action_Helper_Layout';
 
    /**
     * Inflector used to resolve layout script
     * @var Zend_Filter_Inflector
     */
    protected $_inflector;

    /**
     * Flag: is inflector enabled?
     * @var bool
     */
    protected $_inflectorEnabled = true;

    /**
     * Inflector target
     * @var string
     */
    protected $_inflectorTarget = ':script.:suffix';

    /**
     * Layout view
     * @var string
     */
    protected $_layout = 'layout';

    /**
     * Layout view script path
     * @var string
     */
    protected $_viewScriptPath = null;
    
    protected $_viewBasePath = null;
    protected $_viewBasePrefix = 'Layout_View';

    /**
     * Flag: is MVC integration enabled?
     * @var bool
     */
    protected $_mvcEnabled = true;

    /**
     * Instance registered with MVC, if any
     * @var Zend_Layout
     */
    protected static $_mvcInstance;

    /**
     * Flag: is MVC successful action only flag set?
     * @var bool
     */
    protected $_mvcSuccessfulActionOnly = true;

    /**
     * Plugin class
     * @var string
     */
    protected $_pluginClass = 'Zend_Layout_Controller_Plugin_Layout';
    
    /**
     * @var Zend_View_Interface
     */
    protected $_view;

    /**
     * View script suffix for layout script
     * @var string
     */
    protected $_viewSuffix = 'phtml';

    /**
     * Constructor
     *
     * Accepts either:
     * - A string path to layouts
     * - An array of options
     * - A Zend_Config object with options
     *
     * Layout script path, either as argument or as key in options, is 
     * required.
     *
     * If mvcEnabled flag is false from options, simply sets layout script path. 
     * Otherwise, also instantiates and registers action helper and controller 
     * plugin.
     * 
     * @param  string|array|Zend_Config $options 
     * @return void
     */ 
    public function __construct($options = null, $initMvc = false) 
    { 
        if (null !== $options) {
            if (is_string($options)) {
                $this->setLayoutPath($options);
            } elseif (is_array($options)) {
                $this->setOptions($options);
            } elseif ($options instanceof Zend_Config) {
                $this->setConfig($options);
            } else {
                require_once 'Zend/Layout/Exception.php';
                throw new Zend_Layout_Exception('Invalid option provided to constructor');
            }
        }

        $this->_initVarContainer();

        if ($initMvc) {
            $this->_setMvcEnabled(true);
            $this->_initMvc();
        } else {
            $this->_setMvcEnabled(false);
        }
    }

    /**
     * Static method for initialization with MVC support
     * 
     * @param  string|array|Zend_Config $options 
     * @return Zend_Layout
     */
    public static function startMvc($options = null)
    {
        if (null === self::$_mvcInstance) {
            self::$_mvcInstance = new self($options, true);
        } elseif (is_string($options)) {
            self::$_mvcInstance->setLayoutPath($options);
        } else {
            self::$_mvcInstance->setOptions($options);
        }

        return self::$_mvcInstance;
    }

    /**
     * Retrieve MVC instance of Zend_Layout object
     * 
     * @return Zend_Layout|null
     */
    public static function getMvcInstance()
    {
        return self::$_mvcInstance;
    }

    /**
     * Reset MVC instance
     *
     * Unregisters plugins and helpers, and destroys MVC layout instance.
     * 
     * @return void
     */
    public static function resetMvcInstance()
    {
        if (null !== self::$_mvcInstance) {
            $layout = self::$_mvcInstance;
            $pluginClass = $layout->getPluginClass();
            $front = Zend_Controller_Front::getInstance();
            if ($front->hasPlugin($pluginClass)) {
                $front->unregisterPlugin($pluginClass);
            }

            if (Zend_Controller_Action_HelperBroker::hasHelper('layout')) {
                Zend_Controller_Action_HelperBroker::removeHelper('layout');
            }

            unset($layout);
            self::$_mvcInstance = null;
        }
    }

    /**
     * Set options en masse
     * 
     * @param  array $options 
     * @return void
     */
    public function setOptions($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (!is_array($options)) {
            require_once 'Zend/Layout/Exception.php';
            throw new Zend_Layout_Exception('setOptions() expects either an array or a Zend_Config object');
        }

        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
    }

    /**
     * Initialize MVC integration
     * 
     * @return void
     */
    protected function _initMvc()
    {
        $this->_initPlugin();
        $this->_initHelper();
    }

    /**
     * Initialize front controller plugin
     * 
     * @return void
     */
    protected function _initPlugin()
    {
        $pluginClass = $this->getPluginClass();
        require_once 'Zend/Controller/Front.php';
        $front = Zend_Controller_Front::getInstance();
        if (!$front->hasPlugin($pluginClass)) {
            require_once 'Zend/Loader.php';
            Zend_Loader::loadClass($pluginClass);
            $front->registerPlugin(
                // register to run last | BUT before the ErrorHandler (if its available)
                new $pluginClass($this), 
                99
            );
        }
    }

    /**
     * Initialize action helper
     * 
     * @return void
     */
    protected function _initHelper()
    {
        $helperClass = $this->getHelperClass();
        require_once 'Zend/Controller/Action/HelperBroker.php';
        if (!Zend_Controller_Action_HelperBroker::hasHelper('layout')) {
            require_once 'Zend/Loader.php';
            Zend_Loader::loadClass($helperClass);
            Zend_Controller_Action_HelperBroker::getStack()->offsetSet(-90, new $helperClass($this));
        }
    }

    /**
     * Set options from a config object
     * 
     * @param  Zend_Config $config 
     * @return Zend_Layout
     */
    public function setConfig(Zend_Config $config)
    {
        $this->setOptions($config->toArray());
        return $this;
    }

    /**
     * Initialize placeholder container for layout vars
     * 
     * @return Zend_View_Helper_Placeholder_Container
     */
    protected function _initVarContainer()
    {
        if (null === $this->_container) {
            require_once 'Zend/View/Helper/Placeholder/Registry.php';
            $this->_container = Zend_View_Helper_Placeholder_Registry::getRegistry()->getContainer(__CLASS__);
        }

        return $this->_container;
    }

    /**
     * Set layout script to use
     *
     * Note: enables layout.
     * 
     * @param  string $name 
     * @return Zend_Layout
     */ 
    public function setLayout($name) 
    {
        $this->_layout = (string) $name;
        $this->enableLayout();
        return $this;
    }
 
    /**
     * Get current layout script
     * 
     * @return string
     */ 
    public function getLayout() 
    {
        return $this->_layout;
    } 
 
    /**
     * Disable layout
     *
     * @return Zend_Layout
     */ 
    public function disableLayout() 
    {
        $this->_enabled = false;
        return $this;
    } 

    /**
     * Enable layout 
     * 
     * @return Zend_Layout
     */
    public function enableLayout()
    {
        $this->_enabled = true;
        return $this;
    }

    /**
     * Is layout enabled?
     * 
     * @return bool
     */
    public function isEnabled()
    {
        return $this->_enabled;
    }

    
    public function setViewBasePath($path, $prefix = 'Layout_View')
    {
        $this->_viewBasePath = $path;
        $this->_viewBasePrefix = $prefix;
        return $this;
    }
    
    public function getViewBasePath()
    {
        return $this->_viewBasePath;
    }
    
    public function setViewScriptPath($path)
    {
        $this->_viewScriptPath = $path;
        return $this;
    }
    
    public function getViewScriptPath()
    {
        return $this->_viewScriptPath;
    }
    
    /**
     * Set layout script path
     * 
     * @param  string $path 
     * @return Zend_Layout
     */ 
    public function setLayoutPath($path) 
    {
        return $this->setViewScriptPath($path);
    } 
    
    /**
     * Get current layout script path
     * 
     * @return string
     */ 
    public function getLayoutPath() 
    {
        return $this->getViewScriptPath();
    } 

    /**
     * Set content key
     *
     * Key in namespace container denoting default content
     *
     * @param  string $contentKey
     * @return Zend_Layout
     */
    public function setContentKey($contentKey)
    {
        $this->_contentKey = (string) $contentKey;
        return $this;
    }

    /**
     * Retrieve content key
     *
     * @return string
     */
    public function getContentKey()
    {
        return $this->_contentKey;
    }

    /**
     * Set MVC enabled flag
     *
     * @param  bool $mvcEnabled
     * @return Zend_Layout
     */
    protected function _setMvcEnabled($mvcEnabled)
    {
        $this->_mvcEnabled = ($mvcEnabled) ? true : false;
        return $this;
    }

    /**
     * Retrieve MVC enabled flag
     *
     * @return bool
     */
    public function getMvcEnabled()
    {
        return $this->_mvcEnabled;
    }

    /**
     * Set MVC Successful Action Only flag
     *
     * @param bool $successfulActionOnly
     * @return Zend_Layout
     */
    public function setMvcSuccessfulActionOnly($successfulActionOnly)
    {
        $this->_mvcSuccessfulActionOnly = ($successfulActionOnly) ? true : false;
        return $this;
    }
    
    /**
     * Get MVC Successful Action Only Flag
     *
     * @return bool
     */
    public function getMvcSuccessfulActionOnly()
    {
        return $this->_mvcSuccessfulActionOnly;
    }
    
    /**
     * Set view object
     * 
     * @param  Zend_View_Interface $view
     * @return Zend_Layout
     */ 
    public function setView(Zend_View_Interface $view) 
    {
        $this->_view = $view;
        return $this;
    } 

    /**
     * Retrieve helper class
     *
     * @return string
     */
    public function getHelperClass()
    {
        return $this->_helperClass;
    }

    /**
     * Set helper class
     *
     * @param  string $helperClass
     * @return Zend_Layout
     */
    public function setHelperClass($helperClass)
    {
        $this->_helperClass = (string) $helperClass;
        return $this;
    }

    /**
     * Retrieve plugin class
     *
     * @return string
     */
    public function getPluginClass()
    {
        return $this->_pluginClass;
    }

    /**
     * Set plugin class
     *
     * @param  string $pluginClass
     * @return Zend_Layout
     */
    public function setPluginClass($pluginClass)
    {
        $this->_pluginClass = (string) $pluginClass;
        return $this;
    }
 
    /**
     * Get current view object
     *
     * If no view object currently set, retrieves it from the ViewRenderer.
     * 
     * @todo Set inflector from view renderer at same time
     * @return Zend_View_Interface
     */ 
    public function getView() 
    {
        if (null === $this->_view) {
            require_once 'Zend/Controller/Action/HelperBroker.php';
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
            if (null === $viewRenderer->view) {
                $viewRenderer->initView();
            }
            $this->setView($viewRenderer->view);
        }
        return $this->_view;
    } 

    /**
     * Set layout view script suffix
     *
     * @param  string $viewSuffix
     * @return Zend_Layout
     */
    public function setViewSuffix($viewSuffix)
    {
        $this->_viewSuffix = (string) $viewSuffix;
        return $this;
    }
 
    /**
     * Retrieve layout view script suffix
     *
     * @return string
     */
    public function getViewSuffix()
    {
        return $this->_viewSuffix;
    }

    /**
     * Retrieve inflector target
     *
     * @return string
     */
    public function getInflectorTarget()
    {
        return $this->_inflectorTarget;
    }

    /**
     * Set inflector target
     *
     * @param  string $inflectorTarget
     * @return Zend_Layout
     */
    public function setInflectorTarget($inflectorTarget)
    {
        $this->_inflectorTarget = (string) $inflectorTarget;
        return $this;
    }

    /**
     * Set inflector to use when resolving layout names
     *
     * @param  Zend_Filter_Inflector $inflector
     * @return Zend_Layout
     */
    public function setInflector(Zend_Filter_Inflector $inflector)
    {
        $this->_inflector = $inflector;
        return $this;
    }

    /**
     * Retrieve inflector
     *
     * @return Zend_Filter_Inflector
     */
    public function getInflector()
    {
        if (null === $this->_inflector) {
            require_once 'Zend/Filter/Inflector.php';
            $inflector = new Zend_Filter_Inflector();
            $inflector->setTargetReference($this->_inflectorTarget)
                      ->addRules(array(':script' => array('Word_CamelCaseToDash', 'StringToLower')))
                      ->setStaticRuleReference('suffix', $this->_viewSuffix);
            $this->setInflector($inflector);
        }

        return $this->_inflector;
    }

    /**
     * Enable inflector
     * 
     * @return Zend_Layout
     */
    public function enableInflector()
    {
        $this->_inflectorEnabled = true;
        return $this;
    }

    /**
     * Disable inflector
     * 
     * @return Zend_Layout
     */
    public function disableInflector()
    {
        $this->_inflectorEnabled = false;
        return $this;
    }

    /**
     * Return status of inflector enabled flag
     * 
     * @return bool
     */
    public function inflectorEnabled()
    {
        return $this->_inflectorEnabled;
    }

    /**
     * Set layout variable
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return void
     */ 
    public function __set($key, $value) 
    {
        $this->_container[$key] = $value;
    }
 
    /**
     * Get layout variable
     * 
     * @param  string $key
     * @return mixed
     */ 
    public function __get($key) 
    {
        if (isset($this->_container[$key])) {
            return $this->_container[$key];
        }

        return null;
    }
 
    /**
     * Is a layout variable set?
     *
     * @param  string $key
     * @return bool
     */ 
    public function __isset($key) 
    {
        return (isset($this->_container[$key]));
    } 
 
    /**
     * Unset a layout variable?
     *
     * @param  string $key
     * @return void
     */ 
    public function __unset($key) 
    {
        if (isset($this->_container[$key])) {
            unset($this->_container[$key]);
        }
    } 
 
    /**
     * Assign one or more layout variables
     * 
     * @param  mixed $spec Assoc array or string key; if assoc array, sets each
     * key as a layout variable
     * @param  mixed $value Value if $spec is a key
     * @return Zend_Layout
     * @throws Zend_Layout_Exception if non-array/string value passed to $spec
     */ 
    public function assign($spec, $value = null) 
    {
        if (is_array($spec)) {
            $orig = $this->_container->getArrayCopy();
            $merged = array_merge($orig, $spec);
            $this->_container->exchangeArray($merged);
            return $this;
        }

        if (is_string($spec)) {
            $this->_container[$spec] = $value;
            return $this;
        }

        require_once 'Zend/Layout/Exception.php';
        throw new Zend_Layout_Exception('Invalid values passed to assign()');
    }

    /**
     * Render layout
     *
     * Sets internal script path as last path on script path stack, assigns 
     * layout variables to view, determines layout name using inflector, and 
     * renders layout view script.
     *
     * $name will be passed to the inflector as the key 'script'.
     * 
     * @param  mixed $name 
     * @return mixed
     */ 
    public function render($name = null) 
    { 
        if (null === $name) {
            $name = $this->getLayout();
        }

        if ($this->inflectorEnabled() && (null !== ($inflector = $this->getInflector())))
        {
            $name = $this->_inflector->filter(array('script' => $name));
        }

        $view = $this->getView();

        if (null !== ($path = $this->getViewScriptPath())) {
            if (method_exists($view, 'addScriptPath')) {
                $view->addScriptPath($path);
            } else {
                $view->setScriptPath($path);
            }
        } elseif (null !== ($path = $this->getViewBasePath())) {
            $view->addBasePath($path, $this->_viewBasePrefix);
        }

        return $view->render($name);
    }
}
PKpG[y��L�]�]Db/Adapter/Oracle.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Db_Statement_Oracle
 */
require_once 'Zend/Db/Statement/Oracle.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Oracle extends Zend_Db_Adapter_Abstract
{
    /**
     * User-provided configuration.
     *
     * Basic keys are:
     *
     * username => (string) Connect to the database as this username.
     * password => (string) Password associated with the username.
     * dbname   => Either the name of the local Oracle instance, or the
     *             name of the entry in tnsnames.ora to which you want to connect.
     *
     * @var array
     */
    protected $_config = array(
        'dbname'       => null,
        'username'     => null,
        'password'     => null,
    );

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'BINARY_DOUBLE'      => Zend_Db::FLOAT_TYPE,
        'BINARY_FLOAT'       => Zend_Db::FLOAT_TYPE,
        'NUMBER'             => Zend_Db::FLOAT_TYPE,
    );

    /**
     * @var integer
     */
    protected $_execute_mode = OCI_COMMIT_ON_SUCCESS;

    /**
     * Default class name for a DB statement.
     *
     * @var string
     */
    protected $_defaultStmtClass = 'Zend_Db_Statement_Oracle';

    /**
     * Check if LOB field are returned as string
     * instead of OCI-Lob object
     *
     * @var boolean
     */
    protected $_lobAsString = null;

    /**
     * Creates a connection resource.
     *
     * @return void
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    protected function _connect()
    {
        if (is_resource($this->_connection)) {
            // connection already exists
            return;
        }

        if (!extension_loaded('oci8')) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception('The OCI8 extension is required for this adapter but the extension is not loaded');
        }

        if (isset($this->_config['dbname'])) {
            $this->_connection = @oci_connect(
                $this->_config['username'],
                $this->_config['password'],
                $this->_config['dbname']);
        } else {
            $this->_connection = oci_connect(
                $this->_config['username'],
                $this->_config['password']);
        }

        // check the connection
        if (!$this->_connection) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception(oci_error());
        }
    }

    /**
     * Test if a connection is active
     *
     * @return boolean
     */
    public function isConnected()
    {
        return ((bool) (is_resource($this->_connection)
                     && get_resource_type($this->_connection) == 'oci8 connection'));
    }

    /**
     * Force the connection to close.
     *
     * @return void
     */
    public function closeConnection()
    {
        if ($this->isConnected()) {
            oci_close($this->_connection);
        }
        $this->_connection = null;
    }

    /**
     * Activate/deactivate return of LOB as string
     *
     * @param string $lob_as_string
     * @return Zend_Db_Adapter_Oracle
     */
    public function setLobAsString($lobAsString)
    {
        $this->_lobAsString = (bool) $lobAsString;
        return $this;
    }

    /**
     * Return whether or not LOB are returned as string
     *
     * @return boolean
     */
    public function getLobAsString()
    {
        if ($this->_lobAsString === null) {
            // if never set by user, we use driver option if it exists otherwise false
            if (isset($this->_config['driver_options']) &&
                isset($this->_config['driver_options']['lob_as_string'])) {
                $this->_lobAsString = (bool) $this->_config['driver_options']['lob_as_string'];
            } else {
                $this->_lobAsString = false;
            }
        }
        return $this->_lobAsString;
    }

    /**
     * Returns an SQL statement for preparation.
     *
     * @param string $sql The SQL statement with placeholders.
     * @return Zend_Db_Statement_Oracle
     */
    public function prepare($sql)
    {
        $this->_connect();
        $stmtClass = $this->_defaultStmtClass;
        Zend_Loader::loadClass($stmtClass);
        $stmt = new $stmtClass($this, $sql);
        if ($stmt instanceof Zend_Db_Statement_Oracle) {
            $stmt->setLobAsString($this->getLobAsString());
        }
        $stmt->setFetchMode($this->_fetchMode);
        return $stmt;
    }

    /**
     * Quote a raw string.
     *
     * @param string $value     Raw string
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value) || is_float($value)) {
            return $value;
        }
        $value = str_replace("'", "''", $value);
        return "'" . addcslashes($value, "\000\n\r\\\032") . "'";
    }

    /**
     * Quote a table identifier and alias.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier or expression.
     * @param string $alias An alias for the table.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string The quoted identifier and alias.
     */
    public function quoteTableAs($ident, $alias = null, $auto = false)
    {
        // Oracle doesn't allow the 'AS' keyword between the table identifier/expression and alias.
        return $this->_quoteIdentifierAs($ident, $alias, $auto, ' ');
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function lastSequenceId($sequenceName)
    {
        $this->_connect();
        $sql = 'SELECT '.$this->quoteIdentifier($sequenceName, true).'.CURRVAL FROM dual';
        $value = $this->fetchOne($sql);
        return $value;
    }

    /**
     * Generate a new value from the specified sequence in the database, and return it.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function nextSequenceId($sequenceName)
    {
        $this->_connect();
        $sql = 'SELECT '.$this->quoteIdentifier($sequenceName, true).'.NEXTVAL FROM dual';
        $value = $this->fetchOne($sql);
        return $value;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * Oracle does not support IDENTITY columns, so if the sequence is not
     * specified, this method returns null.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        if ($tableName !== null) {
            $sequenceName = $tableName;
            if ($primaryKey) {
                $sequenceName .= "_$primaryKey";
            }
            $sequenceName .= '_seq';
            return $this->lastSequenceId($sequenceName);
        }

        // No support for IDENTITY columns; return null
        return null;
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $this->_connect();
        $data = $this->fetchCol('SELECT table_name FROM all_tables');
        return $data;
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @todo Discover integer unsigned property.
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        $version = $this->getServerVersion();
        if (is_null($version) || version_compare($version, '9.0.0', '>=')) {
            $sql = "SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE,
                    TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH,
                    TC.DATA_SCALE, TC.DATA_PRECISION, C.CONSTRAINT_TYPE, CC.POSITION
                FROM ALL_TAB_COLUMNS TC
                LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C
                    ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND C.CONSTRAINT_TYPE = 'P'))
                  ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME
                WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)";
            $bind[':TBNAME'] = $tableName;
            if ($schemaName) {
                $sql .= ' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
                $bind[':SCNAME'] = $schemaName;
            }
            $sql .= ' ORDER BY TC.COLUMN_ID';
        } else {
            $subSql="SELECT AC.OWNER, AC.TABLE_NAME, ACC.COLUMN_NAME, AC.CONSTRAINT_TYPE, ACC.POSITION
                from ALL_CONSTRAINTS AC, ALL_CONS_COLUMNS ACC
                  WHERE ACC.CONSTRAINT_NAME = AC.CONSTRAINT_NAME
                    AND ACC.TABLE_NAME = AC.TABLE_NAME
                    AND ACC.OWNER = AC.OWNER
                    AND AC.CONSTRAINT_TYPE = 'P'
                    AND UPPER(AC.TABLE_NAME) = UPPER(:TBNAME)";
            $bind[':TBNAME'] = $tableName;
            if ($schemaName) {
                $subSql .= ' AND UPPER(ACC.OWNER) = UPPER(:SCNAME)';
                $bind[':SCNAME'] = $schemaName;
            }
            $sql="SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE,
                    TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH,
                    TC.DATA_SCALE, TC.DATA_PRECISION, CC.CONSTRAINT_TYPE, CC.POSITION
                FROM ALL_TAB_COLUMNS TC, ($subSql) CC
                WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)
                  AND TC.OWNER = CC.OWNER(+) AND TC.TABLE_NAME = CC.TABLE_NAME(+) AND TC.COLUMN_NAME = CC.COLUMN_NAME(+)";
            if ($schemaName) {
                $sql .= ' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
            }
            $sql .= ' ORDER BY TC.COLUMN_ID';
        }

        $stmt = $this->query($sql, $bind);

        /**
         * Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
         */
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $table_name      = 0;
        $owner           = 1;
        $column_name     = 2;
        $data_type       = 3;
        $data_default    = 4;
        $nullable        = 5;
        $column_id       = 6;
        $data_length     = 7;
        $data_scale      = 8;
        $data_precision  = 9;
        $constraint_type = 10;
        $position        = 11;

        $desc = array();
        foreach ($result as $key => $row) {
            list ($primary, $primaryPosition, $identity) = array(false, null, false);
            if ($row[$constraint_type] == 'P') {
                $primary = true;
                $primaryPosition = $row[$position];
                /**
                 * Oracle does not support auto-increment keys.
                 */
                $identity = false;
            }
            $desc[$this->foldCase($row[$column_name])] = array(
                'SCHEMA_NAME'      => $this->foldCase($row[$owner]),
                'TABLE_NAME'       => $this->foldCase($row[$table_name]),
                'COLUMN_NAME'      => $this->foldCase($row[$column_name]),
                'COLUMN_POSITION'  => $row[$column_id],
                'DATA_TYPE'        => $row[$data_type],
                'DEFAULT'          => $row[$data_default],
                'NULLABLE'         => (bool) ($row[$nullable] == 'Y'),
                'LENGTH'           => $row[$data_length],
                'SCALE'            => $row[$data_scale],
                'PRECISION'        => $row[$data_precision],
                'UNSIGNED'         => null, // @todo
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }
        return $desc;
    }

    /**
     * Leave autocommit mode and begin a transaction.
     *
     * @return void
     */
    protected function _beginTransaction()
    {
        $this->_setExecuteMode(OCI_DEFAULT);
    }

    /**
     * Commit a transaction and return to autocommit mode.
     *
     * @return void
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    protected function _commit()
    {
        if (!oci_commit($this->_connection)) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception(oci_error($this->_connection));
        }
        $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
    }

    /**
     * Roll back a transaction and return to autocommit mode.
     *
     * @return void
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    protected function _rollBack()
    {
        if (!oci_rollback($this->_connection)) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception(oci_error($this->_connection));
        }
        $this->_setExecuteMode(OCI_COMMIT_ON_SUCCESS);
    }

    /**
     * Set the fetch mode.
     *
     * @todo Support FETCH_CLASS and FETCH_INTO.
     *
     * @param integer $mode A fetch mode.
     * @return void
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    public function setFetchMode($mode)
    {
        switch ($mode) {
            case Zend_Db::FETCH_NUM:   // seq array
            case Zend_Db::FETCH_ASSOC: // assoc array
            case Zend_Db::FETCH_BOTH:  // seq+assoc array
            case Zend_Db::FETCH_OBJ:   // object
                $this->_fetchMode = $mode;
                break;
            case Zend_Db::FETCH_BOUND: // bound to PHP variable
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Adapter/Oracle/Exception.php';
                throw new Zend_Db_Adapter_Oracle_Exception('FETCH_BOUND is not supported yet');
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Adapter/Oracle/Exception.php';
                throw new Zend_Db_Adapter_Oracle_Exception("Invalid fetch mode '$mode' specified");
                break;
        }
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @return string
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Adapter/Oracle/Exception.php';
            throw new Zend_Db_Adapter_Oracle_Exception("LIMIT argument offset=$offset is not valid");
        }

        /**
         * Oracle does not implement the LIMIT clause as some RDBMS do.
         * We have to simulate it with subqueries and ROWNUM.
         * Unfortunately because we use the column wildcard "*",
         * this puts an extra column into the query result set.
         */
        $limit_sql = "SELECT z2.*
            FROM (
                SELECT ROWNUM AS zend_db_rownum, z1.*
                FROM (
                    " . $sql . "
                ) z1
            ) z2
            WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count);
        return $limit_sql;
    }

    /**
     * @param integer $mode
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    private function _setExecuteMode($mode)
    {
        switch($mode) {
            case OCI_COMMIT_ON_SUCCESS:
            case OCI_DEFAULT:
            case OCI_DESCRIBE_ONLY:
                $this->_execute_mode = $mode;
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Adapter/Oracle/Exception.php';
                throw new Zend_Db_Adapter_Oracle_Exception("Invalid execution mode '$mode' specified");
                break;
        }
    }

    /**
     * @return int
     */
    public function _getExecuteMode()
    {
        return $this->_execute_mode;
    }

    /**
     * Inserts a table row with specified data.
     *
     * Oracle does not support anonymous ('?') binds.
     *
     * @param mixed $table The table to insert data into.
     * @param array $bind Column-value pairs.
     * @return int The number of affected rows.
     */
    public function insert($table, array $bind)
    {
        $i = 0;
        // extract and quote col names from the array keys
        $cols = array();
        $vals = array();
        foreach ($bind as $col => $val) {
            $cols[] = $this->quoteIdentifier($col, true);
            if ($val instanceof Zend_Db_Expr) {
                $vals[] = $val->__toString();
                unset($bind[$col]);
            } else {
                $vals[] = ':'.$col.$i;
                unset($bind[$col]);
                $bind[':'.$col.$i] = $val;
            }
            $i++;
        }

        // build the statement
        $sql = "INSERT INTO "
             . $this->quoteIdentifier($table, true)
             . ' (' . implode(', ', $cols) . ') '
             . 'VALUES (' . implode(', ', $vals) . ')';

        // execute the statement and return the number of affected rows
        $stmt = $this->query($sql, $bind);
        $result = $stmt->rowCount();
        return $result;
    }

    /**
     * Updates table rows with specified data based on a WHERE clause.
     *
     * @param  mixed        $table The table to update.
     * @param  array        $bind  Column-value pairs.
     * @param  array|string $where UPDATE WHERE clause(s).
     * @return int          The number of affected rows.
     */
    public function update($table, array $bind, $where = '')
    {
        $i = 0;
        // build "col = ?" pairs for the statement
        $set = array();
        foreach ($bind as $col => $val) {
            if ($val instanceof Zend_Db_Expr) {
                $val = $val->__toString();
                unset($bind[$col]);
            } else {
                unset($bind[$col]);
                $bind[':'.$col.$i] = $val;
                $val = ':'.$col.$i;
            }
            $set[] = $this->quoteIdentifier($col, true) . ' = ' . $val;
            $i++;
        }

        if (is_array($where)) {
            $where = implode(' AND ', $where);
        }

        // build the statement
        $sql = "UPDATE "
             . $this->quoteIdentifier($table, true)
             . ' SET ' . implode(', ', $set)
             . (($where) ? " WHERE $where" : '');

        // execute the statement and return the number of affected rows
        $stmt = $this->query($sql, $bind);
        $result = $stmt->rowCount();
        return $result;
    }

    /**
     * Check if the adapter supports real SQL parameters.
     *
     * @param string $type 'positional' or 'named'
     * @return bool
     */
    public function supportsParameters($type)
    {
        switch ($type) {
            case 'named':
                return true;
            case 'positional':
            default:
                return false;
        }
    }

    /**
     * Retrieve server version in PHP style
     *
     * @return string
     */
    public function getServerVersion()
    {
        $this->_connect();
        $version = oci_server_version($this->_connection);
        if ($version !== false) {
            $matches = null;
            if (preg_match('/((?:[0-9]{1,2}\.){1,3}[0-9]{1,2})/', $version, $matches)) {
                return $matches[1];
            } else {
                return null;
            }
        } else {
            return null;
        }
    }
}
PKpG[vϸ�i�iDb/Adapter/Db2.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 *
 */

/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Db_Statement_Db2
 */
require_once 'Zend/Db/Statement/Db2.php';


/**
 * @package    Zend_Db
 * @copyright  Copyright (c) 2005-2008 Zend Technologies Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Adapter_Db2 extends Zend_Db_Adapter_Abstract
{
    /**
     * User-provided configuration.
     *
     * Basic keys are:
     *
     * username   => (string)  Connect to the database as this username.
     * password   => (string)  Password associated with the username.
     * host       => (string)  What host to connect to (default 127.0.0.1)
     * dbname     => (string)  The name of the database to user
     * protocol   => (string)  Protocol to use, defaults to "TCPIP"
     * port       => (integer) Port number to use for TCP/IP if protocol is "TCPIP"
     * persistent => (boolean) Set TRUE to use a persistent connection (db2_pconnect)
     * os         => (string)  This should be set to 'i5' if the db is on an os400/i5
     * schema     => (string)  The default schema the connection should use
     *
     * @var array
     */
    protected $_config = array(
        'dbname'       => null,
        'username'     => null,
        'password'     => null,
        'host'         => 'localhost',
        'port'         => '50000',
        'protocol'     => 'TCPIP',
        'persistent'   => false,
        'os'           => null,
        'schema'       => null
    );

    /**
     * Execution mode
     *
     * @var int execution flag (DB2_AUTOCOMMIT_ON or DB2_AUTOCOMMIT_OFF)
     */
    protected $_execute_mode = DB2_AUTOCOMMIT_ON;

    /**
     * Default class name for a DB statement.
     *
     * @var string
     */
    protected $_defaultStmtClass = 'Zend_Db_Statement_Db2';
    protected $_isI5 = false;

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INTEGER'            => Zend_Db::INT_TYPE,
        'SMALLINT'           => Zend_Db::INT_TYPE,
        'BIGINT'             => Zend_Db::BIGINT_TYPE,
        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
        'NUMERIC'            => Zend_Db::FLOAT_TYPE
    );

    /**
     * Creates a connection resource.
     *
     * @return void
     */
    protected function _connect()
    {
        if (is_resource($this->_connection)) {
            // connection already exists
            return;
        }

        if (!extension_loaded('ibm_db2')) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception('The IBM DB2 extension is required for this adapter but the extension is not loaded');
        }

        $this->_determineI5();
        if ($this->_config['persistent']) {
            // use persistent connection
            $conn_func_name = 'db2_pconnect';
        } else {
            // use "normal" connection
            $conn_func_name = 'db2_connect';
        }

        if (!isset($this->_config['driver_options']['autocommit'])) {
            // set execution mode
            $this->_config['driver_options']['autocommit'] = &$this->_execute_mode;
        }

        if (isset($this->_config['options'][Zend_Db::CASE_FOLDING])) {
            $caseAttrMap = array(
                Zend_Db::CASE_NATURAL => DB2_CASE_NATURAL,
                Zend_Db::CASE_UPPER   => DB2_CASE_UPPER,
                Zend_Db::CASE_LOWER   => DB2_CASE_LOWER
            );
            $this->_config['driver_options']['DB2_ATTR_CASE'] = $caseAttrMap[$this->_config['options'][Zend_Db::CASE_FOLDING]];
        }

        if ($this->_config['host'] !== 'localhost' && !$this->_isI5) {
            // if the host isn't localhost, use extended connection params
            $dbname = 'DRIVER={IBM DB2 ODBC DRIVER}' .
                     ';DATABASE=' . $this->_config['dbname'] .
                     ';HOSTNAME=' . $this->_config['host'] .
                     ';PORT='     . $this->_config['port'] .
                     ';PROTOCOL=' . $this->_config['protocol'] .
                     ';UID='      . $this->_config['username'] .
                     ';PWD='      . $this->_config['password'] .';';
            $this->_connection = $conn_func_name(
                $dbname,
                null,
                null,
                $this->_config['driver_options']
            );
        } else {
            // host is localhost, so use standard connection params
            $this->_connection = $conn_func_name(
                $this->_config['dbname'],
                $this->_config['username'],
                $this->_config['password'],
                $this->_config['driver_options']
            );
        }

        // check the connection
        if (!$this->_connection) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception(db2_conn_errormsg(), db2_conn_error());
        }
    }

    /**
     * Test if a connection is active
     *
     * @return boolean
     */
    public function isConnected()
    {
        return ((bool) (is_resource($this->_connection)
                     && get_resource_type($this->_connection) == 'DB2 Connection'));
    }

    /**
     * Force the connection to close.
     *
     * @return void
     */
    public function closeConnection()
    {
        if ($this->isConnected()) {
            db2_close($this->_connection);
        }
        $this->_connection = null;
    }

    /**
     * Returns an SQL statement for preparation.
     *
     * @param string $sql The SQL statement with placeholders.
     * @return Zend_Db_Statement_Db2
     */
    public function prepare($sql)
    {
        $this->_connect();
        $stmtClass = $this->_defaultStmtClass;
        Zend_Loader::loadClass($stmtClass);
        $stmt = new $stmtClass($this, $sql);
        $stmt->setFetchMode($this->_fetchMode);
        return $stmt;
    }

    /**
     * Gets the execution mode
     *
     * @return int the execution mode (DB2_AUTOCOMMIT_ON or DB2_AUTOCOMMIT_OFF)
     */
    public function _getExecuteMode()
    {
        return $this->_execute_mode;
    }

    /**
     * @param integer $mode
     * @return void
     */
    public function _setExecuteMode($mode)
    {
        switch ($mode) {
            case DB2_AUTOCOMMIT_OFF:
            case DB2_AUTOCOMMIT_ON:
                $this->_execute_mode = $mode;
                db2_autocommit($this->_connection, $mode);
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Db2_Exception
                 */
                require_once 'Zend/Db/Adapter/Db2/Exception.php';
                throw new Zend_Db_Adapter_Db2_Exception("execution mode not supported");
                break;
        }
    }

    /**
     * Quote a raw string.
     *
     * @param string $value     Raw string
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value) || is_float($value)) {
            return $value;
        }
        /**
         * Use db2_escape_string() if it is present in the IBM DB2 extension.
         * But some supported versions of PHP do not include this function,
         * so fall back to default quoting in the parent class.
         */
        if (function_exists('db2_escape_string')) {
            return "'" . db2_escape_string($value) . "'";
        }
        return parent::_quote($value);
    }

    /**
     * @return string
     */
    public function getQuoteIdentifierSymbol()
    {
        $this->_connect();
        $info = db2_server_info($this->_connection);
        if ($info) {
            $identQuote = $info->IDENTIFIER_QUOTE_CHAR;
        } else {
            // db2_server_info() does not return result on some i5 OS version
            if ($this->_isI5) {
                $identQuote ="'";
            }
        }
        return $identQuote;
    }

    /**
     * Returns a list of the tables in the database.
     * @param string $schema OPTIONAL
     * @return array
     */
    public function listTables($schema = null)
    {
        $this->_connect();

        if ($schema === null && $this->_config['schema'] != null) {
            $schema = $this->_config['schema'];
        }

        $tables = array();

        if (!$this->_isI5) {
            if ($schema) {
                $stmt = db2_tables($this->_connection, null, $schema);
            } else {
                $stmt = db2_tables($this->_connection);
            }
            while ($row = db2_fetch_assoc($stmt)) {
                $tables[] = $row['TABLE_NAME'];
            }
        } else {
            $tables = $this->_i5listTables($schema);
        }

        return $tables;
    }


    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     *                     DB2 not supports UNSIGNED integer.
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        // Ensure the connection is made so that _isI5 is set
        $this->_connect();

        if ($schemaName === null && $this->_config['schema'] != null) {
            $schemaName = $this->_config['schema'];
        }
        
        if (!$this->_isI5) {

            $sql = "SELECT DISTINCT c.tabschema, c.tabname, c.colname, c.colno,
                c.typename, c.default, c.nulls, c.length, c.scale,
                c.identity, tc.type AS tabconsttype, k.colseq
                FROM syscat.columns c
                LEFT JOIN (syscat.keycoluse k JOIN syscat.tabconst tc
                ON (k.tabschema = tc.tabschema
                    AND k.tabname = tc.tabname
                    AND tc.type = 'P'))
                ON (c.tabschema = k.tabschema
                    AND c.tabname = k.tabname
                    AND c.colname = k.colname)
                WHERE "
                . $this->quoteInto('UPPER(c.tabname) = UPPER(?)', $tableName);

            if ($schemaName) {
               $sql .= $this->quoteInto(' AND UPPER(c.tabschema) = UPPER(?)', $schemaName);
            }

            $sql .= " ORDER BY c.colno";

        } else {

            // DB2 On I5 specific query
            $sql = "SELECT DISTINCT C.TABLE_SCHEMA, C.TABLE_NAME, C.COLUMN_NAME, C.ORDINAL_POSITION,
                C.DATA_TYPE, C.COLUMN_DEFAULT, C.NULLS ,C.LENGTH, C.SCALE, LEFT(C.IDENTITY,1),
                LEFT(tc.TYPE, 1) AS tabconsttype, k.COLSEQ
                FROM QSYS2.SYSCOLUMNS C
                LEFT JOIN (QSYS2.syskeycst k JOIN QSYS2.SYSCST tc
                    ON (k.TABLE_SCHEMA = tc.TABLE_SCHEMA
                      AND k.TABLE_NAME = tc.TABLE_NAME
                      AND LEFT(tc.type,1) = 'P'))                  
                    ON (C.TABLE_SCHEMA = k.TABLE_SCHEMA
                       AND C.TABLE_NAME = k.TABLE_NAME
                       AND C.COLUMN_NAME = k.COLUMN_NAME)                          
                WHERE "
                 . $this->quoteInto('UPPER(C.TABLE_NAME) = UPPER(?)', $tableName);

            if ($schemaName) {
                $sql .= $this->quoteInto(' AND UPPER(C.TABLE_SCHEMA) = UPPER(?)', $schemaName);
            }

            $sql .= " ORDER BY C.ORDINAL_POSITION FOR FETCH ONLY";
        }

        $desc = array();
        $stmt = $this->query($sql);

        /**
         * To avoid case issues, fetch using FETCH_NUM
         */
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        /**
         * The ordering of columns is defined by the query so we can map
         * to variables to improve readability
         */
        $tabschema      = 0;
        $tabname        = 1;
        $colname        = 2;
        $colno          = 3;
        $typename       = 4;
        $default        = 5;
        $nulls          = 6;
        $length         = 7;
        $scale          = 8;
        $identityCol    = 9;
        $tabconstType   = 10;
        $colseq         = 11;

        foreach ($result as $key => $row) {
            list ($primary, $primaryPosition, $identity) = array(false, null, false);
            if ($row[$tabconstType] == 'P') {
                $primary = true;
                $primaryPosition = $row[$colseq];
            }
            /**
             * In IBM DB2, an column can be IDENTITY
             * even if it is not part of the PRIMARY KEY.
             */
            if ($row[$identityCol] == 'Y') {
                $identity = true;
            }

            // only colname needs to be case adjusted
            $desc[$this->foldCase($row[$colname])] = array(
                'SCHEMA_NAME'      => $this->foldCase($row[$tabschema]),
                'TABLE_NAME'       => $this->foldCase($row[$tabname]),
                'COLUMN_NAME'      => $this->foldCase($row[$colname]),
                'COLUMN_POSITION'  => (!$this->_isI5) ? $row[$colno]+1 : $row[$colno],
                'DATA_TYPE'        => $row[$typename],
                'DEFAULT'          => $row[$default],
                'NULLABLE'         => (bool) ($row[$nulls] == 'Y'),
                'LENGTH'           => $row[$length],
                'SCALE'            => $row[$scale],
                'PRECISION'        => ($row[$typename] == 'DECIMAL' ? $row[$length] : 0),
                'UNSIGNED'         => false,
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }

        return $desc;
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function lastSequenceId($sequenceName)
    {
        $this->_connect();

        if (!$this->_isI5) {
            $quotedSequenceName = $this->quoteIdentifier($sequenceName, true);
            $sql = 'SELECT PREVVAL FOR ' . $quotedSequenceName . ' AS VAL FROM SYSIBM.SYSDUMMY1';
        } else {
            $quotedSequenceName = $sequenceName;
            $sql = 'SELECT PREVVAL FOR ' . $this->quoteIdentifier($sequenceName, true) . ' AS VAL FROM QSYS2.QSQPTABL';
        }

        $value = $this->fetchOne($sql);
        return (string) $value;
    }

    /**
     * Generate a new value from the specified sequence in the database, and return it.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function nextSequenceId($sequenceName)
    {
        $this->_connect();
        $sql = 'SELECT NEXTVAL FOR '.$this->quoteIdentifier($sequenceName, true).' AS VAL FROM SYSIBM.SYSDUMMY1';
        $value = $this->fetchOne($sql);
        return (string) $value;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * The IDENTITY_VAL_LOCAL() function gives the last generated identity value
     * in the current process, even if it was for a GENERATED column.
     *
     * @param string $tableName OPTIONAL
     * @param string $primaryKey OPTIONAL
     * @param string $idType OPTIONAL used for i5 platform to define sequence/idenity unique value
     * @return string
     */

    public function lastInsertId($tableName = null, $primaryKey = null, $idType = null)
    {
        $this->_connect();

        if ($this->_isI5) {
            return (string) $this->_i5LastInsertId($tableName, $idType);
        }

        if ($tableName !== null) {
            $sequenceName = $tableName;
            if ($primaryKey) {
                $sequenceName .= "_$primaryKey";
            }
            $sequenceName .= '_seq';
            return $this->lastSequenceId($sequenceName);
        }

        $sql = 'SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1';
        $value = $this->fetchOne($sql);
        return (string) $value;
    }

    /**
     * Begin a transaction.
     *
     * @return void
     */
    protected function _beginTransaction()
    {
        $this->_setExecuteMode(DB2_AUTOCOMMIT_OFF);
    }

    /**
     * Commit a transaction.
     *
     * @return void
     */
    protected function _commit()
    {
        if (!db2_commit($this->_connection)) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception(
                db2_conn_errormsg($this->_connection),
                db2_conn_error($this->_connection));
        }

        $this->_setExecuteMode(DB2_AUTOCOMMIT_ON);
    }

    /**
     * Rollback a transaction.
     *
     * @return void
     */
    protected function _rollBack()
    {
        if (!db2_rollback($this->_connection)) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception(
                db2_conn_errormsg($this->_connection),
                db2_conn_error($this->_connection));
        }
        $this->_setExecuteMode(DB2_AUTOCOMMIT_ON);
    }

    /**
     * Set the fetch mode.
     *
     * @param integer $mode
     * @return void
     * @throws Zend_Db_Adapter_Db2_Exception
     */
    public function setFetchMode($mode)
    {
        switch ($mode) {
            case Zend_Db::FETCH_NUM:   // seq array
            case Zend_Db::FETCH_ASSOC: // assoc array
            case Zend_Db::FETCH_BOTH:  // seq+assoc array
            case Zend_Db::FETCH_OBJ:   // object
                $this->_fetchMode = $mode;
                break;
            case Zend_Db::FETCH_BOUND:   // bound to PHP variable
                /**
                 * @see Zend_Db_Adapter_Db2_Exception
                 */
                require_once 'Zend/Db/Adapter/Db2/Exception.php';
                throw new Zend_Db_Adapter_Db2_Exception('FETCH_BOUND is not supported yet');
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Db2_Exception
                 */
                require_once 'Zend/Db/Adapter/Db2/Exception.php';
                throw new Zend_Db_Adapter_Db2_Exception("Invalid fetch mode '$mode' specified");
                break;
        }
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /**
             * @see Zend_Db_Adapter_Db2_Exception
             */
            require_once 'Zend/Db/Adapter/Db2/Exception.php';
            throw new Zend_Db_Adapter_Db2_Exception("LIMIT argument offset=$offset is not valid");
        }

        if ($offset == 0) {
            $limit_sql = $sql . " FETCH FIRST $count ROWS ONLY";
            return $limit_sql;
        }

        /**
         * DB2 does not implement the LIMIT clause as some RDBMS do.
         * We have to simulate it with subqueries and ROWNUM.
         * Unfortunately because we use the column wildcard "*",
         * this puts an extra column into the query result set.
         */
        $limit_sql = "SELECT z2.*
            FROM (
                SELECT ROW_NUMBER() OVER() AS \"ZEND_DB_ROWNUM\", z1.*
                FROM (
                    " . $sql . "
                ) z1
            ) z2
            WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count);
        return $limit_sql;
    }

    /**
     * Check if the adapter supports real SQL parameters.
     *
     * @param string $type 'positional' or 'named'
     * @return bool
     */
    public function supportsParameters($type)
    {
        if ($type == 'positional') {
            return true;
        }

        // if its 'named' or anything else
        return false;
    }

    /**
     * Retrieve server version in PHP style
     *
     * @return string
     */
    public function getServerVersion()
    {
        $this->_connect();
        $server_info = db2_server_info($this->_connection);
        if ($server_info !== false) {
            $version = $server_info->DBMS_VER;
            if ($this->_isI5) {
                $version = (int) substr($version, 0, 2) . '.' . (int) substr($version, 2, 2) . '.' . (int) substr($version, 4);
            }
            return $version;
        } else {
            return null;
        }
    }

    /**
     * Return whether or not this is running on i5
     *
     * @return bool
     */
    public function isI5()
    {
        if ($this->_isI5 === null) {
            $this->_determineI5();
        }

        return (bool) $this->_isI5;
    }

    /**
     * Check the connection parameters according to verify
     * type of used OS
     *
     *  @return void
     */
    protected function _determineI5()
    {
        // first us the compiled flag.
        $this->_isI5 = (php_uname('s') == 'OS400') ? true : false;

        // if this is set, then us it
        if (isset($this->_config['os'])){
            if (strtolower($this->_config['os']) === 'i5') {
                $this->_isI5 = true;
            } else {
                // any other value passed in, its null
                $this->_isI5 = false;
            }
        }

    }

    /**
     * Db2 On I5 specific method
     *
     * Returns a list of the tables in the database .
     * Used only for DB2/400.
     *
     * @return array
     */
    protected function _i5listTables($schema = null)
    {
        //list of i5 libraries.
        $tables = array();
        if ($schema) {
            $tablesStatement = db2_tables($this->_connection, null, $schema);
            while ($rowTables = db2_fetch_assoc($tablesStatement) ) {
                if ($rowTables['TABLE_NAME'] !== null) {
                    $tables[] = $rowTables['TABLE_NAME'];
                }
            }
        } else {
            $schemaStatement = db2_tables($this->_connection);
            while ($schema = db2_fetch_assoc($schemaStatement)) {
                if ($schema['TABLE_SCHEM'] !== null) {
                    // list of the tables which belongs to the selected library
                    $tablesStatement = db2_tables($this->_connection, NULL, $schema['TABLE_SCHEM']);
                    if (is_resource($tablesStatement)) {
                        while ($rowTables = db2_fetch_assoc($tablesStatement) ) {
                            if ($rowTables['TABLE_NAME'] !== null) {
                                $tables[] = $rowTables['TABLE_NAME'];
                            }
                        }
                    }
                }
            }
        }

        return $tables;
    }

    protected function _i5LastInsertId($objectName = null, $idType = null)
    {

        if ($objectName === null) {
            $sql = 'SELECT IDENTITY_VAL_LOCAL() AS VAL FROM QSYS2.QSQPTABL';
            $value = $this->fetchOne($sql);
            return $value;
        }

        if (strtoupper($idType) === 'S'){
            //check i5_lib option
            $sequenceName = $objectName;
            return $this->lastSequenceId($sequenceName);
        }

            //returns last identity value for the specified table
        //if (strtoupper($idType) === 'I') {
        $tableName = $objectName;
        return $this->fetchOne('SELECT IDENTITY_VAL_LOCAL() from ' . $this->quoteIdentifier($tableName));
    }

}


PKpG[�T��:�:�Db/Adapter/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 13355 2008-12-18 21:20:16Z mikaelkael $
 */


/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * @see Zend_Db_Select
 */
require_once 'Zend/Db/Select.php';

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * Class for connecting to SQL databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Adapter_Abstract
{

    /**
     * User-provided configuration
     *
     * @var array
     */
    protected $_config = array();

    /**
     * Fetch mode
     *
     * @var integer
     */
    protected $_fetchMode = Zend_Db::FETCH_ASSOC;

    /**
     * Query profiler object, of type Zend_Db_Profiler
     * or a subclass of that.
     *
     * @var Zend_Db_Profiler
     */
    protected $_profiler;

    /**
     * Default class name for a DB statement.
     *
     * @var string
     */
    protected $_defaultStmtClass = 'Zend_Db_Statement';

    /**
     * Default class name for the profiler object.
     *
     * @var string
     */
    protected $_defaultProfilerClass = 'Zend_Db_Profiler';

    /**
     * Database connection
     *
     * @var object|resource|null
     */
    protected $_connection = null;

    /**
     * Specifies the case of column names retrieved in queries
     * Options
     * Zend_Db::CASE_NATURAL (default)
     * Zend_Db::CASE_LOWER
     * Zend_Db::CASE_UPPER
     *
     * @var integer
     */
    protected $_caseFolding = Zend_Db::CASE_NATURAL;

    /**
     * Specifies whether the adapter automatically quotes identifiers.
     * If true, most SQL generated by Zend_Db classes applies
     * identifier quoting automatically.
     * If false, developer must quote identifiers themselves
     * by calling quoteIdentifier().
     *
     * @var bool
     */
    protected $_autoQuoteIdentifiers = true;

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE
    );

    /**
     * Constructor.
     *
     * $config is an array of key/value pairs or an instance of Zend_Config
     * containing configuration options.  These options are common to most adapters:
     *
     * dbname         => (string) The name of the database to user
     * username       => (string) Connect to the database as this username.
     * password       => (string) Password associated with the username.
     * host           => (string) What host to connect to, defaults to localhost
     *
     * Some options are used on a case-by-case basis by adapters:
     *
     * port           => (string) The port of the database
     * persistent     => (boolean) Whether to use a persistent connection or not, defaults to false
     * protocol       => (string) The network protocol, defaults to TCPIP
     * caseFolding    => (int) style of case-alteration used for identifiers
     *
     * @param  array|Zend_Config $config An array or instance of Zend_Config having configuration data
     * @throws Zend_Db_Adapter_Exception
     */
    public function __construct($config)
    {
        /*
         * Verify that adapter parameters are in an array.
         */
        if (!is_array($config)) {
            /*
             * Convert Zend_Config argument to a plain array.
             */
            if ($config instanceof Zend_Config) {
                $config = $config->toArray();
            } else {
                /**
                 * @see Zend_Db_Exception
                 */
                require_once 'Zend/Db/Exception.php';
                throw new Zend_Db_Exception('Adapter parameters must be in an array or a Zend_Config object');
            }
        }

        $this->_checkRequiredOptions($config);

        $options = array(
            Zend_Db::CASE_FOLDING           => $this->_caseFolding,
            Zend_Db::AUTO_QUOTE_IDENTIFIERS => $this->_autoQuoteIdentifiers
        );
        $driverOptions = array();

        /*
         * normalize the config and merge it with the defaults
         */
        if (array_key_exists('options', $config)) {
            // can't use array_merge() because keys might be integers
            foreach ((array) $config['options'] as $key => $value) {
                $options[$key] = $value;
            }
        }
        if (array_key_exists('driver_options', $config)) {
            if (!empty($config['driver_options'])) {
                // can't use array_merge() because keys might be integers
                foreach ((array) $config['driver_options'] as $key => $value) {
                    $driverOptions[$key] = $value;
                }
            }
        }
        $this->_config  = array_merge($this->_config, $config);
        $this->_config['options'] = $options;
        $this->_config['driver_options'] = $driverOptions;

        // obtain the case setting, if there is one
        if (array_key_exists(Zend_Db::CASE_FOLDING, $options)) {
            $case = (int) $options[Zend_Db::CASE_FOLDING];
            switch ($case) {
                case Zend_Db::CASE_LOWER:
                case Zend_Db::CASE_UPPER:
                case Zend_Db::CASE_NATURAL:
                    $this->_caseFolding = $case;
                    break;
                default:
                    /** @see Zend_Db_Adapter_Exception */
                    require_once 'Zend/Db/Adapter/Exception.php';
                    throw new Zend_Db_Adapter_Exception('Case must be one of the following constants: '
                        . 'Zend_Db::CASE_NATURAL, Zend_Db::CASE_LOWER, Zend_Db::CASE_UPPER');
            }
        }

        // obtain quoting property if there is one
        if (array_key_exists(Zend_Db::AUTO_QUOTE_IDENTIFIERS, $options)) {
            $this->_autoQuoteIdentifiers = (bool) $options[Zend_Db::AUTO_QUOTE_IDENTIFIERS];
        }

        // create a profiler object
        $profiler = false;
        if (array_key_exists(Zend_Db::PROFILER, $this->_config)) {
            $profiler = $this->_config[Zend_Db::PROFILER];
            unset($this->_config[Zend_Db::PROFILER]);
        }
        $this->setProfiler($profiler);
    }

    /**
     * Check for config options that are mandatory.
     * Throw exceptions if any are missing.
     *
     * @param array $config
     * @throws Zend_Db_Adapter_Exception
     */
    protected function _checkRequiredOptions(array $config)
    {
        // we need at least a dbname
        if (! array_key_exists('dbname', $config)) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'dbname' that names the database instance");
        }

        if (! array_key_exists('password', $config)) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'password' for login credentials");
        }

        if (! array_key_exists('username', $config)) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'username' for login credentials");
        }
    }

    /**
     * Returns the underlying database connection object or resource.
     * If not presently connected, this initiates the connection.
     *
     * @return object|resource|null
     */
    public function getConnection()
    {
        $this->_connect();
        return $this->_connection;
    }

    /**
     * Returns the configuration variables in this adapter.
     *
     * @return array
     */
    public function getConfig()
    {
        return $this->_config;
    }

    /**
     * Set the adapter's profiler object.
     *
     * The argument may be a boolean, an associative array, an instance of
     * Zend_Db_Profiler, or an instance of Zend_Config.
     *
     * A boolean argument sets the profiler to enabled if true, or disabled if
     * false.  The profiler class is the adapter's default profiler class,
     * Zend_Db_Profiler.
     *
     * An instance of Zend_Db_Profiler sets the adapter's instance to that
     * object.  The profiler is enabled and disabled separately.
     *
     * An associative array argument may contain any of the keys 'enabled',
     * 'class', and 'instance'. The 'enabled' and 'instance' keys correspond to the
     * boolean and object types documented above. The 'class' key is used to name a
     * class to use for a custom profiler. The class must be Zend_Db_Profiler or a
     * subclass. The class is instantiated with no constructor arguments. The 'class'
     * option is ignored when the 'instance' option is supplied.
     *
     * An object of type Zend_Config may contain the properties 'enabled', 'class', and
     * 'instance', just as if an associative array had been passed instead.
     *
     * @param  Zend_Db_Profiler|Zend_Config|array|boolean $profiler
     * @return Zend_Db_Adapter_Abstract Provides a fluent interface
     * @throws Zend_Db_Profiler_Exception if the object instance or class specified
     *         is not Zend_Db_Profiler or an extension of that class.
     */
    public function setProfiler($profiler)
    {
        $enabled          = null;
        $profilerClass    = $this->_defaultProfilerClass;
        $profilerInstance = null;

        if ($profilerIsObject = is_object($profiler)) {
            if ($profiler instanceof Zend_Db_Profiler) {
                $profilerInstance = $profiler;
            } else if ($profiler instanceof Zend_Config) {
                $profiler = $profiler->toArray();
            } else {
                /**
                 * @see Zend_Db_Profiler_Exception
                 */
                require_once 'Zend/Db/Profiler/Exception.php';
                throw new Zend_Db_Profiler_Exception('Profiler argument must be an instance of either Zend_Db_Profiler'
                    . ' or Zend_Config when provided as an object');
            }
        }

        if (is_array($profiler)) {
            if (isset($profiler['enabled'])) {
                $enabled = (bool) $profiler['enabled'];
            }
            if (isset($profiler['class'])) {
                $profilerClass = $profiler['class'];
            }
            if (isset($profiler['instance'])) {
                $profilerInstance = $profiler['instance'];
            }
        } else if (!$profilerIsObject) {
            $enabled = (bool) $profiler;
        }

        if ($profilerInstance === null) {
            @Zend_Loader::loadClass($profilerClass);
            $profilerInstance = new $profilerClass();
        }

        if (!$profilerInstance instanceof Zend_Db_Profiler) {
            /** @see Zend_Db_Profiler_Exception */
            require_once 'Zend/Db/Profiler/Exception.php';
            throw new Zend_Db_Profiler_Exception('Class ' . get_class($profilerInstance) . ' does not extend '
                . 'Zend_Db_Profiler');
        }

        if (null !== $enabled) {
            $profilerInstance->setEnabled($enabled);
        }

        $this->_profiler = $profilerInstance;

        return $this;
    }


    /**
     * Returns the profiler for this adapter.
     *
     * @return Zend_Db_Profiler
     */
    public function getProfiler()
    {
        return $this->_profiler;
    }

    /**
     * Get the default statement class.
     *
     * @return string
     */
    public function getStatementClass()
    {
        return $this->_defaultStmtClass;
    }

    /**
     * Set the default statement class.
     *
     * @return Zend_Db_Adapter_Abstract Fluent interface
     */
    public function setStatementClass($class)
    {
        $this->_defaultStmtClass = $class;
        return $this;
    }

    /**
     * Prepares and executes an SQL statement with bound data.
     *
     * @param  mixed  $sql  The SQL statement with placeholders.
     *                      May be a string or Zend_Db_Select.
     * @param  mixed  $bind An array of data to bind to the placeholders.
     * @return Zend_Db_Statement_Interface
     */
    public function query($sql, $bind = array())
    {
        // connect to the database if needed
        $this->_connect();

        // is the $sql a Zend_Db_Select object?
        if ($sql instanceof Zend_Db_Select) {
            $sql = $sql->assemble();
        }

        // make sure $bind to an array;
        // don't use (array) typecasting because
        // because $bind may be a Zend_Db_Expr object
        if (!is_array($bind)) {
            $bind = array($bind);
        }

        // prepare and execute the statement with profiling
        $stmt = $this->prepare($sql);
        $stmt->execute($bind);

        // return the results embedded in the prepared statement object
        $stmt->setFetchMode($this->_fetchMode);
        return $stmt;
    }

    /**
     * Leave autocommit mode and begin a transaction.
     *
     * @return bool True
     */
    public function beginTransaction()
    {
        $this->_connect();
        $q = $this->_profiler->queryStart('begin', Zend_Db_Profiler::TRANSACTION);
        $this->_beginTransaction();
        $this->_profiler->queryEnd($q);
        return true;
    }

    /**
     * Commit a transaction and return to autocommit mode.
     *
     * @return bool True
     */
    public function commit()
    {
        $this->_connect();
        $q = $this->_profiler->queryStart('commit', Zend_Db_Profiler::TRANSACTION);
        $this->_commit();
        $this->_profiler->queryEnd($q);
        return true;
    }

    /**
     * Roll back a transaction and return to autocommit mode.
     *
     * @return bool True
     */
    public function rollBack()
    {
        $this->_connect();
        $q = $this->_profiler->queryStart('rollback', Zend_Db_Profiler::TRANSACTION);
        $this->_rollBack();
        $this->_profiler->queryEnd($q);
        return true;
    }

    /**
     * Inserts a table row with specified data.
     *
     * @param mixed $table The table to insert data into.
     * @param array $bind Column-value pairs.
     * @return int The number of affected rows.
     */
    public function insert($table, array $bind)
    {
        // extract and quote col names from the array keys
        $cols = array();
        $vals = array();
        foreach ($bind as $col => $val) {
            $cols[] = $this->quoteIdentifier($col, true);
            if ($val instanceof Zend_Db_Expr) {
                $vals[] = $val->__toString();
                unset($bind[$col]);
            } else {
                $vals[] = '?';
            }
        }

        // build the statement
        $sql = "INSERT INTO "
             . $this->quoteIdentifier($table, true)
             . ' (' . implode(', ', $cols) . ') '
             . 'VALUES (' . implode(', ', $vals) . ')';

        // execute the statement and return the number of affected rows
        $stmt = $this->query($sql, array_values($bind));
        $result = $stmt->rowCount();
        return $result;
    }

    /**
     * Updates table rows with specified data based on a WHERE clause.
     *
     * @param  mixed        $table The table to update.
     * @param  array        $bind  Column-value pairs.
     * @param  mixed        $where UPDATE WHERE clause(s).
     * @return int          The number of affected rows.
     */
    public function update($table, array $bind, $where = '')
    {
        /**
         * Build "col = ?" pairs for the statement,
         * except for Zend_Db_Expr which is treated literally.
         */
        $set = array();
        foreach ($bind as $col => $val) {
            if ($val instanceof Zend_Db_Expr) {
                $val = $val->__toString();
                unset($bind[$col]);
            } else {
                $val = '?';
            }
            $set[] = $this->quoteIdentifier($col, true) . ' = ' . $val;
        }

        $where = $this->_whereExpr($where);

        /**
         * Build the UPDATE statement
         */
        $sql = "UPDATE "
             . $this->quoteIdentifier($table, true)
             . ' SET ' . implode(', ', $set)
             . (($where) ? " WHERE $where" : '');

        /**
         * Execute the statement and return the number of affected rows
         */
        $stmt = $this->query($sql, array_values($bind));
        $result = $stmt->rowCount();
        return $result;
    }

    /**
     * Deletes table rows based on a WHERE clause.
     *
     * @param  mixed        $table The table to update.
     * @param  mixed        $where DELETE WHERE clause(s).
     * @return int          The number of affected rows.
     */
    public function delete($table, $where = '')
    {
        $where = $this->_whereExpr($where);

        /**
         * Build the DELETE statement
         */
        $sql = "DELETE FROM "
             . $this->quoteIdentifier($table, true)
             . (($where) ? " WHERE $where" : '');

        /**
         * Execute the statement and return the number of affected rows
         */
        $stmt = $this->query($sql);
        $result = $stmt->rowCount();
        return $result;
    }

    /**
     * Convert an array, string, or Zend_Db_Expr object
     * into a string to put in a WHERE clause.
     *
     * @param mixed $where
     * @return string
     */
    protected function _whereExpr($where)
    {
        if (empty($where)) {
            return $where;
        }
        if (!is_array($where)) {
            $where = array($where);
        }
        foreach ($where as &$term) {
            if ($term instanceof Zend_Db_Expr) {
                $term = $term->__toString();
            }
            $term = '(' . $term . ')';
        }
        $where = implode(' AND ', $where);
        return $where;
    }

    /**
     * Creates and returns a new Zend_Db_Select object for this adapter.
     *
     * @return Zend_Db_Select
     */
    public function select()
    {
        return new Zend_Db_Select($this);
    }

    /**
     * Get the fetch mode.
     *
     * @return int
     */
    public function getFetchMode()
    {
        return $this->_fetchMode;
    }

    /**
     * Fetches all SQL result rows as a sequential array.
     * Uses the current fetchMode for the adapter.
     *
     * @param string|Zend_Db_Select $sql  An SQL SELECT statement.
     * @param mixed                 $bind Data to bind into SELECT placeholders.
     * @param mixed                 $fetchMode Override current fetch mode.
     * @return array
     */
    public function fetchAll($sql, $bind = array(), $fetchMode = null)
    {
        if ($fetchMode === null) {
            $fetchMode = $this->_fetchMode;
        }
        $stmt = $this->query($sql, $bind);
        $result = $stmt->fetchAll($fetchMode);
        return $result;
    }

    /**
     * Fetches the first row of the SQL result.
     * Uses the current fetchMode for the adapter.
     *
     * @param string|Zend_Db_Select $sql An SQL SELECT statement.
     * @param mixed $bind Data to bind into SELECT placeholders.
     * @param mixed                 $fetchMode Override current fetch mode.
     * @return array
     */
    public function fetchRow($sql, $bind = array(), $fetchMode = null)
    {
        if ($fetchMode === null) {
            $fetchMode = $this->_fetchMode;
        }
        $stmt = $this->query($sql, $bind);
        $result = $stmt->fetch($fetchMode);
        return $result;
    }

    /**
     * Fetches all SQL result rows as an associative array.
     *
     * The first column is the key, the entire row array is the
     * value.  You should construct the query to be sure that
     * the first column contains unique values, or else
     * rows with duplicate values in the first column will
     * overwrite previous data.
     *
     * @param string|Zend_Db_Select $sql An SQL SELECT statement.
     * @param mixed $bind Data to bind into SELECT placeholders.
     * @return string
     */
    public function fetchAssoc($sql, $bind = array())
    {
        $stmt = $this->query($sql, $bind);
        $data = array();
        while ($row = $stmt->fetch(Zend_Db::FETCH_ASSOC)) {
            $tmp = array_values(array_slice($row, 0, 1));
            $data[$tmp[0]] = $row;
        }
        return $data;
    }

    /**
     * Fetches the first column of all SQL result rows as an array.
     *
     * The first column in each row is used as the array key.
     *
     * @param string|Zend_Db_Select $sql An SQL SELECT statement.
     * @param mixed $bind Data to bind into SELECT placeholders.
     * @return array
     */
    public function fetchCol($sql, $bind = array())
    {
        $stmt = $this->query($sql, $bind);
        $result = $stmt->fetchAll(Zend_Db::FETCH_COLUMN, 0);
        return $result;
    }

    /**
     * Fetches all SQL result rows as an array of key-value pairs.
     *
     * The first column is the key, the second column is the
     * value.
     *
     * @param string|Zend_Db_Select $sql An SQL SELECT statement.
     * @param mixed $bind Data to bind into SELECT placeholders.
     * @return string
     */
    public function fetchPairs($sql, $bind = array())
    {
        $stmt = $this->query($sql, $bind);
        $data = array();
        while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {
            $data[$row[0]] = $row[1];
        }
        return $data;
    }

    /**
     * Fetches the first column of the first row of the SQL result.
     *
     * @param string|Zend_Db_Select $sql An SQL SELECT statement.
     * @param mixed $bind Data to bind into SELECT placeholders.
     * @return string
     */
    public function fetchOne($sql, $bind = array())
    {
        $stmt = $this->query($sql, $bind);
        $result = $stmt->fetchColumn(0);
        return $result;
    }

    /**
     * Quote a raw string.
     *
     * @param string $value     Raw string
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value)) {
            return $value;
        } elseif (is_float($value)) {
            return sprintf('%F', $value);
        }
        return "'" . addcslashes($value, "\000\n\r\\'\"\032") . "'";
    }

    /**
     * Safely quotes a value for an SQL statement.
     *
     * If an array is passed as the value, the array values are quoted
     * and then returned as a comma-separated string.
     *
     * @param mixed $value The value to quote.
     * @param mixed $type  OPTIONAL the SQL datatype name, or constant, or null.
     * @return mixed An SQL-safe quoted value (or string of separated values).
     */
    public function quote($value, $type = null)
    {
        $this->_connect();

        if ($value instanceof Zend_Db_Select) {
            return '(' . $value->assemble() . ')';
        }

        if ($value instanceof Zend_Db_Expr) {
            return $value->__toString();
        }

        if (is_array($value)) {
            foreach ($value as &$val) {
                $val = $this->quote($val, $type);
            }
            return implode(', ', $value);
        }

        if ($type !== null && array_key_exists($type = strtoupper($type), $this->_numericDataTypes)) {
            $quotedValue = '0';
            switch ($this->_numericDataTypes[$type]) {
                case Zend_Db::INT_TYPE: // 32-bit integer
                    $quotedValue = (string) intval($value);
                    break;
                case Zend_Db::BIGINT_TYPE: // 64-bit integer
                    // ANSI SQL-style hex literals (e.g. x'[\dA-F]+')
                    // are not supported here, because these are string
                    // literals, not numeric literals.
                    if (preg_match('/^(
                          [+-]?                  # optional sign
                          (?:
                            0[Xx][\da-fA-F]+     # ODBC-style hexadecimal
                            |\d+                 # decimal or octal, or MySQL ZEROFILL decimal
                            (?:[eE][+-]?\d+)?    # optional exponent on decimals or octals
                          )
                        )/x',
                        (string) $value, $matches)) {
                        $quotedValue = $matches[1];
                    }
                    break;
                case Zend_Db::FLOAT_TYPE: // float or decimal
                    $quotedValue = sprintf('%F', $value);
            }
            return $quotedValue;
        }

        return $this->_quote($value);
    }

    /**
     * Quotes a value and places into a piece of text at a placeholder.
     *
     * The placeholder is a question-mark; all placeholders will be replaced
     * with the quoted value.   For example:
     *
     * <code>
     * $text = "WHERE date < ?";
     * $date = "2005-01-02";
     * $safe = $sql->quoteInto($text, $date);
     * // $safe = "WHERE date < '2005-01-02'"
     * </code>
     *
     * @param string  $text  The text with a placeholder.
     * @param mixed   $value The value to quote.
     * @param string  $type  OPTIONAL SQL datatype
     * @param integer $count OPTIONAL count of placeholders to replace
     * @return string An SQL-safe quoted value placed into the orignal text.
     */
    public function quoteInto($text, $value, $type = null, $count = null)
    {
        if ($count === null) {
            return str_replace('?', $this->quote($value, $type), $text);
        } else {
            while ($count > 0) {
                if (strpos($text, '?') != false) {
                    $text = substr_replace($text, $this->quote($value, $type), strpos($text, '?'), 1);
                }
                --$count;
            }
            return $text;
        }
    }

    /**
     * Quotes an identifier.
     *
     * Accepts a string representing a qualified indentifier. For Example:
     * <code>
     * $adapter->quoteIdentifier('myschema.mytable')
     * </code>
     * Returns: "myschema"."mytable"
     *
     * Or, an array of one or more identifiers that may form a qualified identifier:
     * <code>
     * $adapter->quoteIdentifier(array('myschema','my.table'))
     * </code>
     * Returns: "myschema"."my.table"
     *
     * The actual quote character surrounding the identifiers may vary depending on
     * the adapter.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string The quoted identifier.
     */
    public function quoteIdentifier($ident, $auto=false)
    {
        return $this->_quoteIdentifierAs($ident, null, $auto);
    }

    /**
     * Quote a column identifier and alias.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier or expression.
     * @param string $alias An alias for the column.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string The quoted identifier and alias.
     */
    public function quoteColumnAs($ident, $alias, $auto=false)
    {
        return $this->_quoteIdentifierAs($ident, $alias, $auto);
    }

    /**
     * Quote a table identifier and alias.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier or expression.
     * @param string $alias An alias for the table.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string The quoted identifier and alias.
     */
    public function quoteTableAs($ident, $alias = null, $auto = false)
    {
        return $this->_quoteIdentifierAs($ident, $alias, $auto);
    }

    /**
     * Quote an identifier and an optional alias.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier or expression.
     * @param string $alias An optional alias.
     * @param string $as The string to add between the identifier/expression and the alias.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string The quoted identifier and alias.
     */
    protected function _quoteIdentifierAs($ident, $alias = null, $auto = false, $as = ' AS ')
    {
        if ($ident instanceof Zend_Db_Expr) {
            $quoted = $ident->__toString();
        } elseif ($ident instanceof Zend_Db_Select) {
            $quoted = '(' . $ident->assemble() . ')';
        } else {
            if (is_string($ident)) {
                $ident = explode('.', $ident);
            }
            if (is_array($ident)) {
                $segments = array();
                foreach ($ident as $segment) {
                    if ($segment instanceof Zend_Db_Expr) {
                        $segments[] = $segment->__toString();
                    } else {
                        $segments[] = $this->_quoteIdentifier($segment, $auto);
                    }
                }
                if ($alias !== null && end($ident) == $alias) {
                    $alias = null;
                }
                $quoted = implode('.', $segments);
            } else {
                $quoted = $this->_quoteIdentifier($ident, $auto);
            }
        }
        if ($alias !== null) {
            $quoted .= $as . $this->_quoteIdentifier($alias, $auto);
        }
        return $quoted;
    }

    /**
     * Quote an identifier.
     *
     * @param  string $value The identifier or expression.
     * @param boolean $auto If true, heed the AUTO_QUOTE_IDENTIFIERS config option.
     * @return string        The quoted identifier and alias.
     */
    protected function _quoteIdentifier($value, $auto=false)
    {
        if ($auto === false || $this->_autoQuoteIdentifiers === true) {
            $q = $this->getQuoteIdentifierSymbol();
            return ($q . str_replace("$q", "$q$q", $value) . $q);
        }
        return $value;
    }

    /**
     * Returns the symbol the adapter uses for delimited identifiers.
     *
     * @return string
     */
    public function getQuoteIdentifierSymbol()
    {
        return '"';
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function lastSequenceId($sequenceName)
    {
        return null;
    }

    /**
     * Generate a new value from the specified sequence in the database, and return it.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function nextSequenceId($sequenceName)
    {
        return null;
    }

    /**
     * Helper method to change the case of the strings used
     * when returning result sets in FETCH_ASSOC and FETCH_BOTH
     * modes.
     *
     * This is not intended to be used by application code,
     * but the method must be public so the Statement class
     * can invoke it.
     *
     * @param string $key
     * @returns string
     */
    public function foldCase($key)
    {
        switch ($this->_caseFolding) {
            case Zend_Db::CASE_LOWER:
                $value = strtolower((string) $key);
                break;
            case Zend_Db::CASE_UPPER:
                $value = strtoupper((string) $key);
                break;
            case Zend_Db::CASE_NATURAL:
            default:
                $value = (string) $key;
        }
        return $value;
    }

    /**
     * Abstract Methods
     */

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    abstract public function listTables();

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME => string; name of database or schema
     * TABLE_NAME  => string;
     * COLUMN_NAME => string; column name
     * COLUMN_POSITION => number; ordinal position of column in table
     * DATA_TYPE   => string; SQL datatype name of column
     * DEFAULT     => string; default expression of column, null if none
     * NULLABLE    => boolean; true if column can have nulls
     * LENGTH      => number; length of CHAR/VARCHAR
     * SCALE       => number; scale of NUMERIC/DECIMAL
     * PRECISION   => number; precision of NUMERIC/DECIMAL
     * UNSIGNED    => boolean; unsigned property of an integer type
     * PRIMARY     => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    abstract public function describeTable($tableName, $schemaName = null);

    /**
     * Creates a connection to the database.
     *
     * @return void
     */
    abstract protected function _connect();

    /**
     * Test if a connection is active
     *
     * @return boolean
     */
    abstract public function isConnected();

    /**
     * Force the connection to close.
     *
     * @return void
     */
    abstract public function closeConnection();

    /**
     * Prepare a statement and return a PDOStatement-like object.
     *
     * @param string|Zend_Db_Select $sql SQL query
     * @return Zend_Db_Statment|PDOStatement
     */
    abstract public function prepare($sql);

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     */
    abstract public function lastInsertId($tableName = null, $primaryKey = null);

    /**
     * Begin a transaction.
     */
    abstract protected function _beginTransaction();

    /**
     * Commit a transaction.
     */
    abstract protected function _commit();

    /**
     * Roll-back a transaction.
     */
    abstract protected function _rollBack();

    /**
     * Set the fetch mode.
     *
     * @param integer $mode
     * @return void
     * @throws Zend_Db_Adapter_Exception
     */
    abstract public function setFetchMode($mode);

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param mixed $sql
     * @param integer $count
     * @param integer $offset
     * @return string
     */
    abstract public function limit($sql, $count, $offset = 0);

    /**
     * Check if the adapter supports real SQL parameters.
     *
     * @param string $type 'positional' or 'named'
     * @return bool
     */
    abstract public function supportsParameters($type);

    /**
     * Retrieve server version in PHP style
     *
     * @return string
     */
    abstract public function getServerVersion();
}
PKpG[>;�ʠ�Db/Adapter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Exception
 */
require_once 'Zend/Db/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Exception extends Zend_Db_Exception
{
    protected $_chainedException = null;

    public function __construct($message = null, Exception $e = null)
    {
        if ($e) {
            $this->_chainedException = $e;
            $this->code = $e->getCode();
        }
        parent::__construct($message);
    }

    public function getChainedException()
    {
        return $this->_chainedException;
    }

}
PKpG[g�
g2g2Db/Adapter/Pdo/Mssql.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mssql.php 13280 2008-12-15 20:48:08Z mikaelkael $
 */


/**
 * @see Zend_Db_Adapter_Pdo_Abstract
 */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';


/**
 * Class for connecting to Microsoft SQL Server databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Mssql extends Zend_Db_Adapter_Pdo_Abstract
{
    /**
     * PDO type.
     *
     * @var string
     */
    protected $_pdoType = 'mssql';

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INT'                => Zend_Db::INT_TYPE,
        'SMALLINT'           => Zend_Db::INT_TYPE,
        'TINYINT'            => Zend_Db::INT_TYPE,
        'BIGINT'             => Zend_Db::BIGINT_TYPE,
        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
        'FLOAT'              => Zend_Db::FLOAT_TYPE,
        'MONEY'              => Zend_Db::FLOAT_TYPE,
        'NUMERIC'            => Zend_Db::FLOAT_TYPE,
        'REAL'               => Zend_Db::FLOAT_TYPE,
        'SMALLMONEY'         => Zend_Db::FLOAT_TYPE
    );

    /**
     * Creates a PDO DSN for the adapter from $this->_config settings.
     *
     * @return string
     */
    protected function _dsn()
    {
        // baseline of DSN parts
        $dsn = $this->_config;

        // don't pass the username and password in the DSN
        unset($dsn['username']);
        unset($dsn['password']);
        unset($dsn['driver_options']);

        if (isset($dsn['port'])) {
            $seperator = ':';
            if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
                $seperator = ',';
            }
            $dsn['host'] .= $seperator . $dsn['port'];
            unset($dsn['port']);
        }

        // this driver supports multiple DSN prefixes
        // @see http://www.php.net/manual/en/ref.pdo-dblib.connection.php
        if (isset($dsn['pdoType'])) {
            switch (strtolower($dsn['pdoType'])) {
                case 'freetds':
                case 'sybase':
                    $this->_pdoType = 'sybase';
                    break;
                case 'mssql':
                    $this->_pdoType = 'mssql';
                    break;
                case 'dblib':
                default:
                    $this->_pdoType = 'dblib';
                    break;
            }
            unset($dsn['pdoType']);
        }

        // use all remaining parts in the DSN
        foreach ($dsn as $key => $val) {
            $dsn[$key] = "$key=$val";
        }

        $dsn = $this->_pdoType . ':' . implode(';', $dsn);
        return $dsn;
    }

    /**
     * @return void
     */
    protected function _connect()
    {
        if ($this->_connection) {
            return;
        }
        parent::_connect();
        $this->_connection->exec('SET QUOTED_IDENTIFIER ON');
    }

    /**
     * Begin a transaction.
     *
     * It is necessary to override the abstract PDO transaction functions here, as
     * the PDO driver for MSSQL does not support transactions.
     */
    protected function _beginTransaction()
    {
        $this->_connect();
        $this->_connection->exec('BEGIN TRANSACTION');
        return true;
    }

    /**
     * Commit a transaction.
     *
     * It is necessary to override the abstract PDO transaction functions here, as
     * the PDO driver for MSSQL does not support transactions.
     */
    protected function _commit()
    {
        $this->_connect();
        $this->_connection->exec('COMMIT TRANSACTION');
        return true;
    }

    /**
     * Roll-back a transaction.
     *
     * It is necessary to override the abstract PDO transaction functions here, as
     * the PDO driver for MSSQL does not support transactions.
     */
    protected function _rollBack() {
        $this->_connect();
        $this->_connection->exec('ROLLBACK TRANSACTION');
        return true;
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $sql = "SELECT name FROM sysobjects WHERE type = 'U' ORDER BY name";
        return $this->fetchCol($sql);
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * PRIMARY_AUTO     => integer; position of auto-generated column in primary key
     *
     * @todo Discover column primary key position.
     * @todo Discover integer unsigned property.
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        /**
         * Discover metadata information about this table.
         */
        $sql = "exec sp_columns @table_name = " . $this->quoteIdentifier($tableName, true);
        $stmt = $this->query($sql);
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $table_name  = 2;
        $column_name = 3;
        $type_name   = 5;
        $precision   = 6;
        $length      = 7;
        $scale       = 8;
        $nullable    = 10;
        $column_def  = 12;
        $column_position = 16;

        /**
         * Discover primary key column(s) for this table.
         */
        $sql = "exec sp_pkeys @table_name = " . $this->quoteIdentifier($tableName, true);
        $stmt = $this->query($sql);
        $primaryKeysResult = $stmt->fetchAll(Zend_Db::FETCH_NUM);
        $primaryKeyColumn = array();
        $pkey_column_name = 3;
        $pkey_key_seq = 4;
        foreach ($primaryKeysResult as $pkeysRow) {
            $primaryKeyColumn[$pkeysRow[$pkey_column_name]] = $pkeysRow[$pkey_key_seq];
        }

        $desc = array();
        $p = 1;
        foreach ($result as $key => $row) {
            $identity = false;
            $words = explode(' ', $row[$type_name], 2);
            if (isset($words[0])) {
                $type = $words[0];
                if (isset($words[1])) {
                    $identity = (bool) preg_match('/identity/', $words[1]);
                }
            }

            $isPrimary = array_key_exists($row[$column_name], $primaryKeyColumn);
            if ($isPrimary) {
                $primaryPosition = $primaryKeyColumn[$row[$column_name]];
            } else {
                $primaryPosition = null;
            }

            $desc[$this->foldCase($row[$column_name])] = array(
                'SCHEMA_NAME'      => null, // @todo
                'TABLE_NAME'       => $this->foldCase($row[$table_name]),
                'COLUMN_NAME'      => $this->foldCase($row[$column_name]),
                'COLUMN_POSITION'  => (int) $row[$column_position],
                'DATA_TYPE'        => $type,
                'DEFAULT'          => $row[$column_def],
                'NULLABLE'         => (bool) $row[$nullable],
                'LENGTH'           => $row[$length],
                'SCALE'            => $row[$scale],
                'PRECISION'        => $row[$precision],
                'UNSIGNED'         => null, // @todo
                'PRIMARY'          => $isPrimary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }
        return $desc;
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @link http://lists.bestpractical.com/pipermail/rt-devel/2005-June/007339.html
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @throws Zend_Db_Adapter_Exception
     * @return string
     */
     public function limit($sql, $count, $offset = 0)
     {
        $count = intval($count);
        if ($count <= 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
        }

        $orderby = stristr($sql, 'ORDER BY');
        if ($orderby !== false) {
            $sort = (stripos($orderby, ' desc') !== false) ? 'desc' : 'asc';
            $order = str_ireplace('ORDER BY', '', $orderby);
            $order = trim(preg_replace('/\bASC\b|\bDESC\b/i', '', $order));
        }

        $sql = preg_replace('/^SELECT\s/i', 'SELECT TOP ' . ($count+$offset) . ' ', $sql);

        $sql = 'SELECT * FROM (SELECT TOP ' . $count . ' * FROM (' . $sql . ') AS inner_tbl';
        if ($orderby !== false) {
            $sql .= ' ORDER BY ' . $order . ' ';
            $sql .= (stripos($sort, 'asc') !== false) ? 'DESC' : 'ASC';
        }
        $sql .= ') AS outer_tbl';
        if ($orderby !== false) {
            $sql .= ' ORDER BY ' . $order . ' ' . $sort;
        }

        return $sql;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * Microsoft SQL Server does not support sequences, so the arguments to
     * this method are ignored.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     * @throws Zend_Db_Adapter_Exception
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        $sql = 'SELECT SCOPE_IDENTITY()';
        return (int)$this->fetchOne($sql);
    }

    /**
     * Retrieve server version in PHP style
     * Pdo_Mssql doesn't support getAttribute(PDO::ATTR_SERVER_VERSION)
     * @return string
     */
    public function getServerVersion()
    {
        try {
            $stmt = $this->query("SELECT SERVERPROPERTY('productversion')");
            $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);
            if (count($result)) {
                return $result[0][0];
            }
            return null;
        } catch (PDOException $e) {
            return null;
        }
    }
}PKpG[x�P�''Db/Adapter/Pdo/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 13281 2008-12-15 20:53:30Z mikaelkael $
 */


/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * @see Zend_Db_Statement_Pdo
 */
require_once 'Zend/Db/Statement/Pdo.php';


/**
 * Class for connecting to SQL databases and performing common operations using PDO.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Adapter_Pdo_Abstract extends Zend_Db_Adapter_Abstract
{

    /**
     * Default class name for a DB statement.
     *
     * @var string
     */
    protected $_defaultStmtClass = 'Zend_Db_Statement_Pdo';

    /**
     * Creates a PDO DSN for the adapter from $this->_config settings.
     *
     * @return string
     */
    protected function _dsn()
    {
        // baseline of DSN parts
        $dsn = $this->_config;

        // don't pass the username, password, and driver_options in the DSN
        unset($dsn['username']);
        unset($dsn['password']);
        unset($dsn['options']);
        unset($dsn['driver_options']);

        // use all remaining parts in the DSN
        foreach ($dsn as $key => $val) {
            $dsn[$key] = "$key=$val";
        }

        return $this->_pdoType . ':' . implode(';', $dsn);
    }

    /**
     * Creates a PDO object and connects to the database.
     *
     * @return void
     * @throws Zend_Db_Adapter_Exception
     */
    protected function _connect()
    {
        // if we already have a PDO object, no need to re-connect.
        if ($this->_connection) {
            return;
        }

        // get the dsn first, because some adapters alter the $_pdoType
        $dsn = $this->_dsn();

        // check for PDO extension
        if (!extension_loaded('pdo')) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception('The PDO extension is required for this adapter but the extension is not loaded');
        }

        // check the PDO driver is available
        if (!in_array($this->_pdoType, PDO::getAvailableDrivers())) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception('The ' . $this->_pdoType . ' driver is not currently installed');
        }

        // create PDO connection
        $q = $this->_profiler->queryStart('connect', Zend_Db_Profiler::CONNECT);

        try {
            $this->_connection = new PDO(
                $dsn,
                $this->_config['username'],
                $this->_config['password'],
                $this->_config['driver_options']
            );

            $this->_profiler->queryEnd($q);

            // set the PDO connection to perform case-folding on array keys, or not
            $this->_connection->setAttribute(PDO::ATTR_CASE, $this->_caseFolding);

            // always use exceptions.
            $this->_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        } catch (PDOException $e) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception($e->getMessage());
        }

    }

    /**
     * Test if a connection is active
     *
     * @return boolean
     */
    public function isConnected()
    {
        return ((bool) ($this->_connection instanceof PDO));
    }

    /**
     * Force the connection to close.
     *
     * @return void
     */
    public function closeConnection()
    {
        $this->_connection = null;
    }

    /**
     * Prepares an SQL statement.
     *
     * @param string $sql The SQL statement with placeholders.
     * @param array $bind An array of data to bind to the placeholders.
     * @return PDOStatement
     */
    public function prepare($sql)
    {
        $this->_connect();
        $stmtClass = $this->_defaultStmtClass;
        Zend_Loader::loadClass($stmtClass);
        $stmt = new $stmtClass($this, $sql);
        $stmt->setFetchMode($this->_fetchMode);
        return $stmt;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * On RDBMS brands that don't support sequences, $tableName and $primaryKey
     * are ignored.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        $this->_connect();
        return $this->_connection->lastInsertId();
    }

    /**
     * Special handling for PDO query().
     * All bind parameter names must begin with ':'
     *
     * @param string|Zend_Db_Select $sql The SQL statement with placeholders.
     * @param array $bind An array of data to bind to the placeholders.
     * @return Zend_Db_Statement_Pdo
     * @throws Zend_Db_Adapter_Exception To re-throw PDOException.
     */
    public function query($sql, $bind = array())
    {
        if (is_array($bind)) {
            foreach ($bind as $name => $value) {
                if (!is_int($name) && !preg_match('/^:/', $name)) {
                    $newName = ":$name";
                    unset($bind[$name]);
                    $bind[$newName] = $value;
                }
            }
        }

        try {
            return parent::query($sql, $bind);
        } catch (PDOException $e) {
            /**
             * @see Zend_Db_Statement_Exception
             */
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Quote a raw string.
     *
     * @param string $value     Raw string
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value) || is_float($value)) {
            return $value;
        }
        $this->_connect();
        return $this->_connection->quote($value);
    }

    /**
     * Begin a transaction.
     */
    protected function _beginTransaction()
    {
        $this->_connect();
        $this->_connection->beginTransaction();
    }

    /**
     * Commit a transaction.
     */
    protected function _commit()
    {
        $this->_connect();
        $this->_connection->commit();
    }

    /**
     * Roll-back a transaction.
     */
    protected function _rollBack() {
        $this->_connect();
        $this->_connection->rollBack();
    }

    /**
     * Set the PDO fetch mode.
     *
     * @todo Support FETCH_CLASS and FETCH_INTO.
     *
     * @param int $mode A PDO fetch mode.
     * @return void
     * @throws Zend_Db_Adapter_Exception
     */
    public function setFetchMode($mode)
    {
        //check for PDO extension
        if (!extension_loaded('pdo')) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception('The PDO extension is required for this adapter but the extension is not loaded');
        }
        switch ($mode) {
            case PDO::FETCH_LAZY:
            case PDO::FETCH_ASSOC:
            case PDO::FETCH_NUM:
            case PDO::FETCH_BOTH:
            case PDO::FETCH_NAMED:
            case PDO::FETCH_OBJ:
                $this->_fetchMode = $mode;
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Exception
                 */
                require_once 'Zend/Db/Adapter/Exception.php';
                throw new Zend_Db_Adapter_Exception("Invalid fetch mode '$mode' specified");
                break;
        }
    }

    /**
     * Check if the adapter supports real SQL parameters.
     *
     * @param string $type 'positional' or 'named'
     * @return bool
     */
    public function supportsParameters($type)
    {
        switch ($type) {
            case 'positional':
            case 'named':
            default:
                return true;
        }
    }

    /**
     * Retrieve server version in PHP style
     *
     * @return string
     */
    public function getServerVersion()
    {
        $this->_connect();
        $version = $this->_connection->getAttribute(PDO::ATTR_SERVER_VERSION);
        $matches = null;
        if (preg_match('/((?:[0-9]{1,2}\.){1,3}[0-9]{1,2})/', $version, $matches)) {
            return $matches[1];
        } else {
            return null;
        }
    }
}

PKpG[���[B.B.Db/Adapter/Pdo/Ibm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Ibm.php 13280 2008-12-15 20:48:08Z mikaelkael $
 */


/** @see Zend_Db_Adapter_Pdo_Abstract */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';

/** @see Zend_Db_Abstract_Pdo_Ibm_Db2 */
require_once 'Zend/Db/Adapter/Pdo/Ibm/Db2.php';

/** @see Zend_Db_Abstract_Pdo_Ibm_Ids */
require_once 'Zend/Db/Adapter/Pdo/Ibm/Ids.php';

/** @see Zend_Db_Statement_Pdo_Ibm */
require_once 'Zend/Db/Statement/Pdo/Ibm.php';


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Ibm extends Zend_Db_Adapter_Pdo_Abstract
{
    /**
     * PDO type.
     *
     * @var string
     */
    protected $_pdoType = 'ibm';

    /**
     * The IBM data server connected to
     *
     * @var string
     */
    protected $_serverType = null;

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
                        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
                        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
                        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
                        'INTEGER'            => Zend_Db::INT_TYPE,
                        'SMALLINT'           => Zend_Db::INT_TYPE,
                        'BIGINT'             => Zend_Db::BIGINT_TYPE,
                        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
                        'DEC'                => Zend_Db::FLOAT_TYPE,
                        'REAL'               => Zend_Db::FLOAT_TYPE,
                        'NUMERIC'            => Zend_Db::FLOAT_TYPE,
                        'DOUBLE PRECISION'   => Zend_Db::FLOAT_TYPE,
                        'FLOAT'              => Zend_Db::FLOAT_TYPE
                        );

    /**
     * Creates a PDO object and connects to the database.
     *
     * The IBM data server is set.
     * Current options are DB2 or IDS
     * @todo also differentiate between z/OS and i/5
     *
     * @return void
     * @throws Zend_Db_Adapter_Exception
     */
    public function _connect()
    {
        if ($this->_connection) {
            return;
        }
        parent::_connect();

        $this->getConnection()->setAttribute(Zend_Db::ATTR_STRINGIFY_FETCHES, true);

        try {
            if ($this->_serverType === null) {
                $server = substr($this->getConnection()->getAttribute(PDO::ATTR_SERVER_INFO), 0, 3);

                switch ($server) {
                    case 'DB2':
                        $this->_serverType = new Zend_Db_Adapter_Pdo_Ibm_Db2($this);

                        // Add DB2-specific numeric types
                        $this->_numericDataTypes['DECFLOAT'] = Zend_Db::FLOAT_TYPE;
                        $this->_numericDataTypes['DOUBLE']   = Zend_Db::FLOAT_TYPE;
                        $this->_numericDataTypes['NUM']      = Zend_Db::FLOAT_TYPE;

                        break;
                    case 'IDS':
                        $this->_serverType = new Zend_Db_Adapter_Pdo_Ibm_Ids($this);

                        // Add IDS-specific numeric types
                        $this->_numericDataTypes['SERIAL']       = Zend_Db::INT_TYPE;
                        $this->_numericDataTypes['SERIAL8']      = Zend_Db::BIGINT_TYPE;
                        $this->_numericDataTypes['INT8']         = Zend_Db::BIGINT_TYPE;
                        $this->_numericDataTypes['SMALLFLOAT']   = Zend_Db::FLOAT_TYPE;
                        $this->_numericDataTypes['MONEY']        = Zend_Db::FLOAT_TYPE;

                        break;
                    }
            }
        } catch (PDOException $e) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            $error = strpos($e->getMessage(), 'driver does not support that attribute');
            if ($error) {
                throw new Zend_Db_Adapter_Exception("PDO_IBM driver extension is downlevel.  Please use driver release version 1.2.1 or later");
            } else {
                throw new Zend_Db_Adapter_Exception($e->getMessage());
            }
        }
    }

    /**
     * Creates a PDO DSN for the adapter from $this->_config settings.
     *
     * @return string
     */
    protected function _dsn()
    {
        $this->_checkRequiredOptions($this->_config);

        // check if using full connection string
        if (array_key_exists('host', $this->_config)) {
            $dsn = ';DATABASE=' . $this->_config['dbname']
            . ';HOSTNAME=' . $this->_config['host']
            . ';PORT='     . $this->_config['port']
            // PDO_IBM supports only DB2 TCPIP protocol
            . ';PROTOCOL=' . 'TCPIP;';
        } else {
            // catalogued connection
            $dsn = $this->_config['dbname'];
        }
        return $this->_pdoType . ': ' . $dsn;
    }

    /**
     * Checks required options
     *
     * @param  array $config
     * @throws Zend_Db_Adapter_Exception
     * @return void
     */
    protected function _checkRequiredOptions(array $config)
    {
        parent::_checkRequiredOptions($config);

        if (array_key_exists('host', $this->_config) &&
        !array_key_exists('port', $config)) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("Configuration must have a key for 'port' when 'host' is specified");
        }
    }

    /**
     * Prepares an SQL statement.
     *
     * @param string $sql The SQL statement with placeholders.
     * @param array $bind An array of data to bind to the placeholders.
     * @return PDOStatement
     */
    public function prepare($sql)
    {
        $this->_connect();
        $stmtClass = $this->_defaultStmtClass;
        $stmt = new $stmtClass($this, $sql);
        $stmt->setFetchMode($this->_fetchMode);
        return $stmt;
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $this->_connect();
        return $this->_serverType->listTables();
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     *
     * @todo Discover integer unsigned property.
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        $this->_connect();
        return $this->_serverType->describeTable($tableName, $schemaName);
    }

    /**
     * Inserts a table row with specified data.
     * Special handling for PDO_IBM
     * remove empty slots
     *
     * @param mixed $table The table to insert data into.
     * @param array $bind Column-value pairs.
     * @return int The number of affected rows.
     */
    public function insert($table, array $bind)
    {
        $this->_connect();
        $newbind = array();
        if (is_array($bind)) {
            foreach ($bind as $name => $value) {
                if(!is_null($value)) {
                    $newbind[$name] = $value;
                }
            }
        }

        return parent::insert($table, $newbind);
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
       $this->_connect();
       return $this->_serverType->limit($sql, $count, $offset);
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT
     * column.
     *
     * @param string $tableName OPTIONAL
     * @param string $primaryKey OPTIONAL
     * @return integer
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        $this->_connect();

         if ($tableName !== null) {
            $sequenceName = $tableName;
            if ($primaryKey) {
                $sequenceName .= "_$primaryKey";
            }
            $sequenceName .= '_seq';
            return $this->lastSequenceId($sequenceName);
        }

        $id = $this->getConnection()->lastInsertId();

        return $id;
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     *
     * @param string $sequenceName
     * @return integer
     */
    public function lastSequenceId($sequenceName)
    {
        $this->_connect();
        return $this->_serverType->lastSequenceId($sequenceName);
    }

    /**
     * Generate a new value from the specified sequence in the database,
     * and return it.
     *
     * @param string $sequenceName
     * @return integer
     */
    public function nextSequenceId($sequenceName)
    {
        $this->_connect();
        return $this->_serverType->nextSequenceId($sequenceName);
    }

    /**
     * Retrieve server version in PHP style
     * Pdo_Idm doesn't support getAttribute(PDO::ATTR_SERVER_VERSION)
     * @return string
     */
    public function getServerVersion()
    {
        try {
            $stmt = $this->query('SELECT service_level, fixpack_num FROM TABLE (sysproc.env_get_inst_info()) as INSTANCEINFO');
            $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);
            if (count($result)) {
                $matches = null;
                if (preg_match('/((?:[0-9]{1,2}\.){1,3}[0-9]{1,2})/', $result[0][0], $matches)) {
                    return $matches[1];
                } else {
                    return null;
                }
            }
            return null;
        } catch (PDOException $e) {
            return null;
        }
    }
}
PKpG[4n2���Db/Adapter/Pdo/Ibm/Db2.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Db2.php 9101 2008-03-30 19:54:38Z thomas $
 */


/** @see Zend_Db_Adapter_Pdo_Ibm */
require_once 'Zend/Db/Adapter/Pdo/Ibm.php';

/** @see Zend_Db_Statement_Pdo_Ibm */
require_once 'Zend/Db/Statement/Pdo/Ibm.php';


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Ibm_Db2
{
    /**
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_adapter = null;

    /**
     * Construct the data server class.
     *
     * It will be used to generate non-generic SQL
     * for a particular data server
     *
     * @param Zend_Db_Adapter_Abstract $adapter
     */
    public function __construct($adapter)
    {
        $this->_adapter = $adapter;
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $sql = "SELECT tabname "
        . "FROM SYSCAT.TABLES ";
        return $this->_adapter->fetchCol($sql);
    }

    /**
     * DB2 catalog lookup for describe table
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        $sql = "SELECT DISTINCT c.tabschema, c.tabname, c.colname, c.colno,
                c.typename, c.default, c.nulls, c.length, c.scale,
                c.identity, tc.type AS tabconsttype, k.colseq
                FROM syscat.columns c
                LEFT JOIN (syscat.keycoluse k JOIN syscat.tabconst tc
                 ON (k.tabschema = tc.tabschema
                   AND k.tabname = tc.tabname
                   AND tc.type = 'P'))
                 ON (c.tabschema = k.tabschema
                 AND c.tabname = k.tabname
                 AND c.colname = k.colname)
            WHERE "
            . $this->_adapter->quoteInto('UPPER(c.tabname) = UPPER(?)', $tableName);
        if ($schemaName) {
            $sql .= $this->_adapter->quoteInto(' AND UPPER(c.tabschema) = UPPER(?)', $schemaName);
        }
        $sql .= " ORDER BY c.colno";

        $desc = array();
        $stmt = $this->_adapter->query($sql);

        /**
         * To avoid case issues, fetch using FETCH_NUM
         */
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        /**
         * The ordering of columns is defined by the query so we can map
         * to variables to improve readability
         */
        $tabschema      = 0;
        $tabname        = 1;
        $colname        = 2;
        $colno          = 3;
        $typename       = 4;
        $default        = 5;
        $nulls          = 6;
        $length         = 7;
        $scale          = 8;
        $identityCol    = 9;
        $tabconstype    = 10;
        $colseq         = 11;

        foreach ($result as $key => $row) {
            list ($primary, $primaryPosition, $identity) = array(false, null, false);
            if ($row[$tabconstype] == 'P') {
                $primary = true;
                $primaryPosition = $row[$colseq];
            }
            /**
             * In IBM DB2, an column can be IDENTITY
             * even if it is not part of the PRIMARY KEY.
             */
            if ($row[$identityCol] == 'Y') {
                $identity = true;
            }

            $desc[$this->_adapter->foldCase($row[$colname])] = array(
            'SCHEMA_NAME'      => $this->_adapter->foldCase($row[$tabschema]),
            'TABLE_NAME'       => $this->_adapter->foldCase($row[$tabname]),
            'COLUMN_NAME'      => $this->_adapter->foldCase($row[$colname]),
            'COLUMN_POSITION'  => $row[$colno]+1,
            'DATA_TYPE'        => $row[$typename],
            'DEFAULT'          => $row[$default],
            'NULLABLE'         => (bool) ($row[$nulls] == 'Y'),
            'LENGTH'           => $row[$length],
            'SCALE'            => $row[$scale],
            'PRECISION'        => ($row[$typename] == 'DECIMAL' ? $row[$length] : 0),
            'UNSIGNED'         => false,
            'PRIMARY'          => $primary,
            'PRIMARY_POSITION' => $primaryPosition,
            'IDENTITY'         => $identity
            );
        }

        return $desc;
    }

    /**
     * Adds a DB2-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @throws Zend_Db_Adapter_Exception
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        } else {
            $offset = intval($offset);
            if ($offset < 0) {
                /** @see Zend_Db_Adapter_Exception */
                require_once 'Zend/Db/Adapter/Exception.php';
                throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
            }

            if ($offset == 0 && $count > 0) {
                $limit_sql = $sql . " FETCH FIRST $count ROWS ONLY";
                return $limit_sql;
            }
            /**
             * DB2 does not implement the LIMIT clause as some RDBMS do.
             * We have to simulate it with subqueries and ROWNUM.
             * Unfortunately because we use the column wildcard "*",
             * this puts an extra column into the query result set.
             */
            $limit_sql = "SELECT z2.*
              FROM (
                  SELECT ROW_NUMBER() OVER() AS \"ZEND_DB_ROWNUM\", z1.*
                  FROM (
                      " . $sql . "
                  ) z1
              ) z2
              WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count);
        }
        return $limit_sql;
    }

    /**
     * DB2-specific last sequence id
     *
     * @param string $sequenceName
     * @return integer
     */
    public function lastSequenceId($sequenceName)
    {
        $sql = 'SELECT PREVVAL FOR '.$this->_adapter->quoteIdentifier($sequenceName).' AS VAL FROM SYSIBM.SYSDUMMY1';
        $value = $this->_adapter->fetchOne($sql);
        return $value;
    }

    /**
     * DB2-specific sequence id value
     *
     *  @param string $sequenceName
     *  @return integer
     */
    public function nextSequenceId($sequenceName)
    {
        $sql = 'SELECT NEXTVAL FOR '.$this->_adapter->quoteIdentifier($sequenceName).' AS VAL FROM SYSIBM.SYSDUMMY1';
        $value = $this->_adapter->fetchOne($sql);
        return $value;
    }
}
PKpG[֓�w$w$Db/Adapter/Pdo/Ibm/Ids.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/** @see Zend_Db_Adapter_Pdo_Ibm */
require_once 'Zend/Db/Adapter/Pdo/Ibm.php';

/** @see Zend_Db_Statement_Pdo_Ibm */
require_once 'Zend/Db/Statement/Pdo/Ibm.php';


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Ibm_Ids
{
    /**
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_adapter = null;

    /**
     * Construct the data server class.
     *
     * It will be used to generate non-generic SQL
     * for a particular data server
     *
     * @param Zend_Db_Adapter_Abstract $adapter
     */
    public function __construct($adapter)
    {
        $this->_adapter = $adapter;
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $sql = "SELECT tabname "
        . "FROM systables ";

        return $this->_adapter->fetchCol($sql);
    }

    /**
     * IDS catalog lookup for describe table
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        // this is still a work in progress

        $sql= "SELECT DISTINCT t.owner, t.tabname, c.colname, c.colno, c.coltype,
               d.default, c.collength, t.tabid
               FROM syscolumns c
               JOIN systables t ON c.tabid = t.tabid
               LEFT JOIN sysdefaults d ON c.tabid = d.tabid AND c.colno = d.colno
               WHERE "
                . $this->_adapter->quoteInto('UPPER(t.tabname) = UPPER(?)', $tableName);
        if ($schemaName) {
            $sql .= $this->_adapter->quoteInto(' AND UPPER(t.owner) = UPPER(?)', $schemaName);
        }
        $sql .= " ORDER BY c.colno";

        $desc = array();
        $stmt = $this->_adapter->query($sql);

        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        /**
         * The ordering of columns is defined by the query so we can map
         * to variables to improve readability
         */
        $tabschema      = 0;
        $tabname        = 1;
        $colname        = 2;
        $colno          = 3;
        $typename       = 4;
        $default        = 5;
        $length         = 6;
        $tabid          = 7;

        $primaryCols = null;

        foreach ($result as $key => $row) {
            $primary = false;
            $primaryPosition = null;

            if (!$primaryCols) {
                $primaryCols = $this->_getPrimaryInfo($row[$tabid]);
            }

            if (array_key_exists($row[$colno], $primaryCols)) {
                $primary = true;
                $primaryPosition = $primaryCols[$row[$colno]];
            }

            $identity = false;
            if ($row[$typename] == 6 + 256 ||
                $row[$typename] == 18 + 256) {
                $identity = true;
            }

            $desc[$this->_adapter->foldCase($row[$colname])] = array (
                'SCHEMA_NAME'       => $this->_adapter->foldCase($row[$tabschema]),
                'TABLE_NAME'        => $this->_adapter->foldCase($row[$tabname]),
                'COLUMN_NAME'       => $this->_adapter->foldCase($row[$colname]),
                'COLUMN_POSITION'   => $row[$colno],
                'DATA_TYPE'         => $this->_getDataType($row[$typename]),
                'DEFAULT'           => $row[$default],
                'NULLABLE'          => (bool) !($row[$typename] - 256 >= 0),
                'LENGTH'            => $row[$length],
                'SCALE'             => ($row[$typename] == 5 ? $row[$length]&255 : 0),
                'PRECISION'         => ($row[$typename] == 5 ? (int)($row[$length]/256) : 0),
                'UNSIGNED'          => false,
                'PRIMARY'           => $primary,
                'PRIMARY_POSITION'  => $primaryPosition,
                'IDENTITY'          => $identity
            );
        }

        return $desc;
    }

    /**
     * Map number representation of a data type
     * to a string
     *
     * @param int $typeNo
     * @return string
     */
    protected function _getDataType($typeNo)
    {
        $typemap = array(
            0       => "CHAR",
            1       => "SMALLINT",
            2       => "INTEGER",
            3       => "FLOAT",
            4       => "SMALLFLOAT",
            5       => "DECIMAL",
            6       => "SERIAL",
            7       => "DATE",
            8       => "MONEY",
            9       => "NULL",
            10      => "DATETIME",
            11      => "BYTE",
            12      => "TEXT",
            13      => "VARCHAR",
            14      => "INTERVAL",
            15      => "NCHAR",
            16      => "NVARCHAR",
            17      => "INT8",
            18      => "SERIAL8",
            19      => "SET",
            20      => "MULTISET",
            21      => "LIST",
            22      => "Unnamed ROW",
            40      => "Variable-length opaque type",
            4118    => "Named ROW"
        );

        if ($typeNo - 256 >= 0) {
            $typeNo = $typeNo - 256;
        }

        return $typemap[$typeNo];
    }

    /**
     * Helper method to retrieve primary key column
     * and column location
     *
     * @param int $tabid
     * @return array
     */
    protected function _getPrimaryInfo($tabid)
    {
        $sql = "SELECT i.part1, i.part2, i.part3, i.part4, i.part5, i.part6,
                i.part7, i.part8, i.part9, i.part10, i.part11, i.part12,
                i.part13, i.part14, i.part15, i.part16
                FROM sysindexes i
                JOIN sysconstraints c ON c.idxname = i.idxname
                WHERE i.tabid = " . $tabid . " AND c.constrtype = 'P'";

        $stmt = $this->_adapter->query($sql);
        $results = $stmt->fetchAll();

        $cols = array();

        // this should return only 1 row
        // unless there is no primary key,
        // in which case, the empty array is returned
        if ($results) {
            $row = $results[0];
        } else {
            return $cols;
        }

        $position = 0;
        foreach ($row as $key => $colno) {
            $position++;
            if ($colno == 0) {
                return $cols;
            } else {
                $cols[$colno] = $position;
            }
        }
    }

    /**
     * Adds an IDS-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @throws Zend_Db_Adapter_Exception
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        } else if ($count == 0) {
              $limit_sql = str_ireplace("SELECT", "SELECT * FROM (SELECT", $sql);
              $limit_sql .= ") WHERE 0 = 1";
        } else {
            $offset = intval($offset);
            if ($offset < 0) {
                /** @see Zend_Db_Adapter_Exception */
                require_once 'Zend/Db/Adapter/Exception.php';
                throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
            }
            if ($offset == 0) {
                $limit_sql = str_ireplace("SELECT", "SELECT FIRST $count", $sql);
            } else {
                $limit_sql = str_ireplace("SELECT", "SELECT SKIP $offset LIMIT $count", $sql);
            }
        }
        return $limit_sql;
    }

    /**
     * IDS-specific last sequence id
     *
     * @param string $sequenceName
     * @return integer
     */
    public function lastSequenceId($sequenceName)
    {
        $sql = 'SELECT '.$this->_adapter->quoteIdentifier($sequenceName).'.CURRVAL FROM '
               .'systables WHERE tabid = 1';
        $value = $this->_adapter->fetchOne($sql);
        return $value;
    }

     /**
     * IDS-specific sequence id value
     *
     *  @param string $sequenceName
     *  @return integer
     */
    public function nextSequenceId($sequenceName)
    {
        $sql = 'SELECT '.$this->_adapter->quoteIdentifier($sequenceName).'.NEXTVAL FROM '
               .'systables WHERE tabid = 1';
        $value = $this->_adapter->fetchOne($sql);
        return $value;
    }
}
PKpG[���o\'\'Db/Adapter/Pdo/Sqlite.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Sqlite.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @see Zend_Db_Adapter_Pdo_Abstract
 */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';


/**
 * Class for connecting to SQLite2 and SQLite3 databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Sqlite extends Zend_Db_Adapter_Pdo_Abstract
{

    /**
     * PDO type
     *
     * @var string
     */
     protected $_pdoType = 'sqlite';

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INTEGER'            => Zend_Db::BIGINT_TYPE,
        'REAL'               => Zend_Db::FLOAT_TYPE
    );

    /**
     * Constructor.
     *
     * $config is an array of key/value pairs containing configuration
     * options.  Note that the SQLite options are different than most of
     * the other PDO adapters in that no username or password are needed.
     * Also, an extra config key "sqlite2" specifies compatibility mode.
     *
     * dbname    => (string) The name of the database to user (required,
     *                       use :memory: for memory-based database)
     *
     * sqlite2   => (boolean) PDO_SQLITE defaults to SQLite 3.  For compatibility
     *                        with an older SQLite 2 database, set this to TRUE.
     *
     * @param array $config An array of configuration keys.
     */
    public function __construct(array $config = array())
    {
        if (isset($config['sqlite2']) && $config['sqlite2']) {
            $this->_pdoType = 'sqlite2';
        }

        // SQLite uses no username/password.  Stub to satisfy parent::_connect()
        $this->_config['username'] = null;
        $this->_config['password'] = null;

        return parent::__construct($config);
    }

    /**
     * Check for config options that are mandatory.
     * Throw exceptions if any are missing.
     *
     * @param array $config
     * @throws Zend_Db_Adapter_Exception
     */
    protected function _checkRequiredOptions(array $config)
    {
        // we need at least a dbname
        if (! array_key_exists('dbname', $config)) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("Configuration array must have a key for 'dbname' that names the database instance");
        }
    }

    /**
     * DSN builder
     */
    protected function _dsn()
    {
        return $this->_pdoType .':'. $this->_config['dbname'];
    }

    /**
     * Special configuration for SQLite behavior: make sure that result sets
     * contain keys like 'column' instead of 'table.column'.
     *
     * @throws Zend_Db_Adapter_Exception
     */
    protected function _connect()
    {
        /**
         * if we already have a PDO object, no need to re-connect.
         */
        if ($this->_connection) {
            return;
        }

        parent::_connect();

        $retval = $this->_connection->exec('PRAGMA full_column_names=0');
        if ($retval === false) {
            $error = $this->_connection->errorInfo();
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception($error[2]);
        }

        $retval = $this->_connection->exec('PRAGMA short_column_names=1');
        if ($retval === false) {
            $error = $this->_connection->errorInfo();
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception($error[2]);
        }
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $sql = "SELECT name FROM sqlite_master WHERE type='table' "
             . "UNION ALL SELECT name FROM sqlite_temp_master "
             . "WHERE type='table' ORDER BY name";

        return $this->fetchCol($sql);
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        if ($schemaName) {
            $sql = "PRAGMA $schemaName.table_info($tableName)";
        } else {
            $sql = "PRAGMA table_info($tableName)";
        }

        $stmt = $this->query($sql);

        /**
         * Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
         */
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $cid        = 0;
        $name       = 1;
        $type       = 2;
        $notnull    = 3;
        $dflt_value = 4;
        $pk         = 5;

        $desc = array();

        $p = 1;
        foreach ($result as $key => $row) {
            list($length, $scale, $precision, $primary, $primaryPosition, $identity) =
                array(null, null, null, false, null, false);
            if (preg_match('/^((?:var)?char)\((\d+)\)/i', $row[$type], $matches)) {
                $row[$type] = $matches[1];
                $length = $matches[2];
            } else if (preg_match('/^decimal\((\d+),(\d+)\)/i', $row[$type], $matches)) {
                $row[$type] = 'DECIMAL';
                $precision = $matches[1];
                $scale = $matches[2];
            }
            if ((bool) $row[$pk]) {
                $primary = true;
                $primaryPosition = $p;
                /**
                 * SQLite INTEGER primary key is always auto-increment.
                 */
                $identity = (bool) ($row[$type] == 'INTEGER');
                ++$p;
            }
            $desc[$this->foldCase($row[$name])] = array(
                'SCHEMA_NAME'      => $this->foldCase($schemaName),
                'TABLE_NAME'       => $this->foldCase($tableName),
                'COLUMN_NAME'      => $this->foldCase($row[$name]),
                'COLUMN_POSITION'  => $row[$cid]+1,
                'DATA_TYPE'        => $row[$type],
                'DEFAULT'          => $row[$dflt_value],
                'NULLABLE'         => ! (bool) $row[$notnull],
                'LENGTH'           => $length,
                'SCALE'            => $scale,
                'PRECISION'        => $precision,
                'UNSIGNED'         => null, // Sqlite3 does not support unsigned data
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }
        return $desc;
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
        }

        $sql .= " LIMIT $count";
        if ($offset > 0) {
            $sql .= " OFFSET $offset";
        }

        return $sql;
    }

}
PKpG[B=y�+�+Db/Adapter/Pdo/Pgsql.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Pgsql.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @see Zend_Db_Adapter_Pdo_Abstract
 */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';


/**
 * Class for connecting to PostgreSQL databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Pgsql extends Zend_Db_Adapter_Pdo_Abstract
{

    /**
     * PDO type.
     *
     * @var string
     */
    protected $_pdoType = 'pgsql';

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INTEGER'            => Zend_Db::INT_TYPE,
        'SERIAL'             => Zend_Db::INT_TYPE,
        'SMALLINT'           => Zend_Db::INT_TYPE,
        'BIGINT'             => Zend_Db::BIGINT_TYPE,
        'BIGSERIAL'          => Zend_Db::BIGINT_TYPE,
        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
        'DOUBLE PRECISION'   => Zend_Db::FLOAT_TYPE,
        'NUMERIC'            => Zend_Db::FLOAT_TYPE,
        'REAL'               => Zend_Db::FLOAT_TYPE
    );

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        // @todo use a better query with joins instead of subqueries
        $sql = "SELECT c.relname AS table_name "
             . "FROM pg_class c, pg_user u "
             . "WHERE c.relowner = u.usesysid AND c.relkind = 'r' "
             . "AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) "
             . "AND c.relname !~ '^(pg_|sql_)' "
             . "UNION "
             . "SELECT c.relname AS table_name "
             . "FROM pg_class c "
             . "WHERE c.relkind = 'r' "
             . "AND NOT EXISTS (SELECT 1 FROM pg_views WHERE viewname = c.relname) "
             . "AND NOT EXISTS (SELECT 1 FROM pg_user WHERE usesysid = c.relowner) "
             . "AND c.relname !~ '^pg_'";

        return $this->fetchCol($sql);
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @todo Discover integer unsigned property.
     *
     * @param  string $tableName
     * @param  string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        $sql = "SELECT
                a.attnum,
                n.nspname,
                c.relname,
                a.attname AS colname,
                t.typname AS type,
                a.atttypmod,
                FORMAT_TYPE(a.atttypid, a.atttypmod) AS complete_type,
                d.adsrc AS default_value,
                a.attnotnull AS notnull,
                a.attlen AS length,
                co.contype,
                ARRAY_TO_STRING(co.conkey, ',') AS conkey
            FROM pg_attribute AS a
                JOIN pg_class AS c ON a.attrelid = c.oid
                JOIN pg_namespace AS n ON c.relnamespace = n.oid
                JOIN pg_type AS t ON a.atttypid = t.oid
                LEFT OUTER JOIN pg_constraint AS co ON (co.conrelid = c.oid
                    AND a.attnum = ANY(co.conkey) AND co.contype = 'p')
                LEFT OUTER JOIN pg_attrdef AS d ON d.adrelid = c.oid AND d.adnum = a.attnum
            WHERE a.attnum > 0 AND c.relname = ".$this->quote($tableName);
        if ($schemaName) {
            $sql .= " AND n.nspname = ".$this->quote($schemaName);
        }
        $sql .= ' ORDER BY a.attnum';

        $stmt = $this->query($sql);

        // Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $attnum        = 0;
        $nspname       = 1;
        $relname       = 2;
        $colname       = 3;
        $type          = 4;
        $atttypemod    = 5;
        $complete_type = 6;
        $default_value = 7;
        $notnull       = 8;
        $length        = 9;
        $contype       = 10;
        $conkey        = 11;

        $desc = array();
        foreach ($result as $key => $row) {
            if ($row[$type] == 'varchar') {
                if (preg_match('/character varying(?:\((\d+)\))?/', $row[$complete_type], $matches)) {
                    if (isset($matches[1])) {
                        $row[$length] = $matches[1];
                    } else {
                        $row[$length] = null; // unlimited
                    }
                }
            }
            list($primary, $primaryPosition, $identity) = array(false, null, false);
            if ($row[$contype] == 'p') {
                $primary = true;
                $primaryPosition = array_search($row[$attnum], explode(',', $row[$conkey])) + 1;
                $identity = (bool) (preg_match('/^nextval/', $row[$default_value]));
            }
            $desc[$this->foldCase($row[$colname])] = array(
                'SCHEMA_NAME'      => $this->foldCase($row[$nspname]),
                'TABLE_NAME'       => $this->foldCase($row[$relname]),
                'COLUMN_NAME'      => $this->foldCase($row[$colname]),
                'COLUMN_POSITION'  => $row[$attnum],
                'DATA_TYPE'        => $row[$type],
                'DEFAULT'          => $row[$default_value],
                'NULLABLE'         => (bool) ($row[$notnull] != 't'),
                'LENGTH'           => $row[$length],
                'SCALE'            => null, // @todo
                'PRECISION'        => null, // @todo
                'UNSIGNED'         => null, // @todo
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }
        return $desc;
    }


    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset OPTIONAL
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /**
             * @see Zend_Db_Adapter_Exception
             */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
        }

        $sql .= " LIMIT $count";
        if ($offset > 0) {
            $sql .= " OFFSET $offset";
        }

        return $sql;
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function lastSequenceId($sequenceName)
    {
        $this->_connect();
        $value = $this->fetchOne("SELECT CURRVAL(".$this->quote($sequenceName).")");
        return $value;
    }

    /**
     * Generate a new value from the specified sequence in the database, and return it.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return string
     */
    public function nextSequenceId($sequenceName)
    {
        $this->_connect();
        $value = $this->fetchOne("SELECT NEXTVAL(".$this->quote($sequenceName).")");
        return $value;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        if ($tableName !== null) {
            $sequenceName = $tableName;
            if ($primaryKey) {
                $sequenceName .= "_$primaryKey";
            }
            $sequenceName .= '_seq';
            return $this->lastSequenceId($sequenceName);
        }
        return $this->_connection->lastInsertId($tableName);
    }

}
PKpG[[��5�5Db/Adapter/Pdo/Oci.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Oci.php 13284 2008-12-15 21:41:49Z mikaelkael $
 */


/**
 * @see Zend_Db_Adapter_Pdo_Abstract
 */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';


/**
 * Class for connecting to Oracle databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Oci extends Zend_Db_Adapter_Pdo_Abstract
{

    /**
     * PDO type.
     *
     * @var string
     */
    protected $_pdoType = 'oci';

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'BINARY_DOUBLE'      => Zend_Db::FLOAT_TYPE,
        'BINARY_FLOAT'       => Zend_Db::FLOAT_TYPE,
        'NUMBER'             => Zend_Db::FLOAT_TYPE
    );

    /**
     * Creates a PDO DSN for the adapter from $this->_config settings.
     *
     * @return string
     */
    protected function _dsn()
    {
        // baseline of DSN parts
        $dsn = $this->_config;

        $tns = 'dbname=(DESCRIPTION=';
        if (isset($dsn['host'])) {
            $tns .= '(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=' . $dsn['host'] . ')';
            if (isset($dsn['port'])) {
                $tns .= '(PORT=' . $dsn['port'] . ')';
            } else {
                $tns .= '(PORT=1521)';
            }
            $tns .= '))';
        }
        $tns .= '(CONNECT_DATA=(SID=' . $dsn['dbname'] . ')))';

        if (isset($dsn['charset']))
        {
            $tns .= ';charset=' . $dsn['charset'];
        }

        return $this->_pdoType . ':' . $tns;
    }

    /**
     * Quote a raw string.
     * Most PDO drivers have an implementation for the quote() method,
     * but the Oracle OCI driver must use the same implementation as the
     * Zend_Db_Adapter_Abstract class.
     *
     * @param string $value     Raw string
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value) || is_float($value)) {
            return $value;
        }
        $value = str_replace("'", "''", $value);
        return "'" . addcslashes($value, "\000\n\r\\\032") . "'";
    }

    /**
     * Quote a table identifier and alias.
     *
     * @param string|array|Zend_Db_Expr $ident The identifier or expression.
     * @param string $alias An alias for the table.
     * @return string The quoted identifier and alias.
     */
    public function quoteTableAs($ident, $alias = null, $auto = false)
    {
        // Oracle doesn't allow the 'AS' keyword between the table identifier/expression and alias.
        return $this->_quoteIdentifierAs($ident, $alias, $auto, ' ');
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $data = $this->fetchCol('SELECT table_name FROM all_tables');
        return $data;
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @todo Discover integer unsigned property.
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        $version = $this->getServerVersion();
        if (is_null($version) || version_compare($version, '9.0.0', '>=')) {
            $sql = "SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE,
                    TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH,
                    TC.DATA_SCALE, TC.DATA_PRECISION, C.CONSTRAINT_TYPE, CC.POSITION
                FROM ALL_TAB_COLUMNS TC
                LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C
                    ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND C.CONSTRAINT_TYPE = 'P'))
                  ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME
                WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)";
            $bind[':TBNAME'] = $tableName;
            if ($schemaName) {
                $sql .= ' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
                $bind[':SCNAME'] = $schemaName;
            }
            $sql .= ' ORDER BY TC.COLUMN_ID';
        } else {
            $subSql="SELECT AC.OWNER, AC.TABLE_NAME, ACC.COLUMN_NAME, AC.CONSTRAINT_TYPE, ACC.POSITION
                from ALL_CONSTRAINTS AC, ALL_CONS_COLUMNS ACC
                  WHERE ACC.CONSTRAINT_NAME = AC.CONSTRAINT_NAME
                    AND ACC.TABLE_NAME = AC.TABLE_NAME
                    AND ACC.OWNER = AC.OWNER
                    AND AC.CONSTRAINT_TYPE = 'P'
                    AND UPPER(AC.TABLE_NAME) = UPPER(:TBNAME)";
            $bind[':TBNAME'] = $tableName;
            if ($schemaName) {
                $subSql .= ' AND UPPER(ACC.OWNER) = UPPER(:SCNAME)';
                $bind[':SCNAME'] = $schemaName;
            }
            $sql="SELECT TC.TABLE_NAME, TC.OWNER, TC.COLUMN_NAME, TC.DATA_TYPE,
                    TC.DATA_DEFAULT, TC.NULLABLE, TC.COLUMN_ID, TC.DATA_LENGTH,
                    TC.DATA_SCALE, TC.DATA_PRECISION, CC.CONSTRAINT_TYPE, CC.POSITION
                FROM ALL_TAB_COLUMNS TC, ($subSql) CC
                WHERE UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)
                  AND TC.OWNER = CC.OWNER(+) AND TC.TABLE_NAME = CC.TABLE_NAME(+) AND TC.COLUMN_NAME = CC.COLUMN_NAME(+)";
            if ($schemaName) {
                $sql .= ' AND UPPER(TC.OWNER) = UPPER(:SCNAME)';
            }
            $sql .= ' ORDER BY TC.COLUMN_ID';
        }

        $stmt = $this->query($sql, $bind);

        /**
         * Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
         */
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $table_name      = 0;
        $owner           = 1;
        $column_name     = 2;
        $data_type       = 3;
        $data_default    = 4;
        $nullable        = 5;
        $column_id       = 6;
        $data_length     = 7;
        $data_scale      = 8;
        $data_precision  = 9;
        $constraint_type = 10;
        $position        = 11;

        $desc = array();
        foreach ($result as $key => $row) {
            list ($primary, $primaryPosition, $identity) = array(false, null, false);
            if ($row[$constraint_type] == 'P') {
                $primary = true;
                $primaryPosition = $row[$position];
                /**
                 * Oracle does not support auto-increment keys.
                 */
                $identity = false;
            }
            $desc[$this->foldCase($row[$column_name])] = array(
                'SCHEMA_NAME'      => $this->foldCase($row[$owner]),
                'TABLE_NAME'       => $this->foldCase($row[$table_name]),
                'COLUMN_NAME'      => $this->foldCase($row[$column_name]),
                'COLUMN_POSITION'  => $row[$column_id],
                'DATA_TYPE'        => $row[$data_type],
                'DEFAULT'          => $row[$data_default],
                'NULLABLE'         => (bool) ($row[$nullable] == 'Y'),
                'LENGTH'           => $row[$data_length],
                'SCALE'            => $row[$data_scale],
                'PRECISION'        => $row[$data_precision],
                'UNSIGNED'         => null, // @todo
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
        }
        return $desc;
    }

    /**
     * Return the most recent value from the specified sequence in the database.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return integer
     */
    public function lastSequenceId($sequenceName)
    {
        $this->_connect();
        $value = $this->fetchOne('SELECT '.$this->quoteIdentifier($sequenceName, true).'.CURRVAL FROM dual');
        return $value;
    }

    /**
     * Generate a new value from the specified sequence in the database, and return it.
     * This is supported only on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2).  Other RDBMS brands return null.
     *
     * @param string $sequenceName
     * @return integer
     */
    public function nextSequenceId($sequenceName)
    {
        $this->_connect();
        $value = $this->fetchOne('SELECT '.$this->quoteIdentifier($sequenceName, true).'.NEXTVAL FROM dual');
        return $value;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * Oracle does not support IDENTITY columns, so if the sequence is not
     * specified, this method returns null.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     * @throws Zend_Db_Adapter_Oracle_Exception
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        if ($tableName !== null) {
            $sequenceName = $tableName;
            if ($primaryKey) {
                $sequenceName .= $this->foldCase("_$primaryKey");
            }
            $sequenceName .= $this->foldCase('_seq');
            return $this->lastSequenceId($sequenceName);
        }
        // No support for IDENTITY columns; return null
        return null;
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param integer $count
     * @param integer $offset
     * @throws Zend_Db_Adapter_Exception
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
        }

        /**
         * Oracle does not implement the LIMIT clause as some RDBMS do.
         * We have to simulate it with subqueries and ROWNUM.
         * Unfortunately because we use the column wildcard "*",
         * this puts an extra column into the query result set.
         */
        $limit_sql = "SELECT z2.*
            FROM (
                SELECT ROWNUM AS zend_db_rownum, z1.*
                FROM (
                    " . $sql . "
                ) z1
            ) z2
            WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count);
        return $limit_sql;
    }

}
PKpG[�9�� � Db/Adapter/Pdo/Mysql.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mysql.php 12842 2008-11-25 22:07:48Z mikaelkael $
 */


/**
 * @see Zend_Db_Adapter_Pdo_Abstract
 */
require_once 'Zend/Db/Adapter/Pdo/Abstract.php';


/**
 * Class for connecting to MySQL databases and performing common operations.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Abstract
{

    /**
     * PDO type.
     *
     * @var string
     */
    protected $_pdoType = 'mysql';

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INT'                => Zend_Db::INT_TYPE,
        'INTEGER'            => Zend_Db::INT_TYPE,
        'MEDIUMINT'          => Zend_Db::INT_TYPE,
        'SMALLINT'           => Zend_Db::INT_TYPE,
        'TINYINT'            => Zend_Db::INT_TYPE,
        'BIGINT'             => Zend_Db::BIGINT_TYPE,
        'SERIAL'             => Zend_Db::BIGINT_TYPE,
        'DEC'                => Zend_Db::FLOAT_TYPE,
        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
        'DOUBLE'             => Zend_Db::FLOAT_TYPE,
        'DOUBLE PRECISION'   => Zend_Db::FLOAT_TYPE,
        'FIXED'              => Zend_Db::FLOAT_TYPE,
        'FLOAT'              => Zend_Db::FLOAT_TYPE
    );

    /**
     * @return string
     */
    public function getQuoteIdentifierSymbol()
    {
        return "`";
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        return $this->fetchCol('SHOW TABLES');
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        // @todo  use INFORMATION_SCHEMA someday when MySQL's
        // implementation has reasonably good performance and
        // the version with this improvement is in wide use.

        if ($schemaName) {
            $sql = 'DESCRIBE ' . $this->quoteIdentifier("$schemaName.$tableName", true);
        } else {
            $sql = 'DESCRIBE ' . $this->quoteIdentifier($tableName, true);
        }
        $stmt = $this->query($sql);

        // Use FETCH_NUM so we are not dependent on the CASE attribute of the PDO connection
        $result = $stmt->fetchAll(Zend_Db::FETCH_NUM);

        $field   = 0;
        $type    = 1;
        $null    = 2;
        $key     = 3;
        $default = 4;
        $extra   = 5;

        $desc = array();
        $i = 1;
        $p = 1;
        foreach ($result as $row) {
            list($length, $scale, $precision, $unsigned, $primary, $primaryPosition, $identity)
                = array(null, null, null, null, false, null, false);
            if (preg_match('/unsigned/', $row[$type])) {
                $unsigned = true;
            }
            if (preg_match('/^((?:var)?char)\((\d+)\)/', $row[$type], $matches)) {
                $row[$type] = $matches[1];
                $length = $matches[2];
            } else if (preg_match('/^decimal\((\d+),(\d+)\)/', $row[$type], $matches)) {
                $row[$type] = 'decimal';
                $precision = $matches[1];
                $scale = $matches[2];
            } else if (preg_match('/^float\((\d+),(\d+)\)/', $row[$type], $matches)) {
                $row[$type] = 'float';
                $precision = $matches[1];
                $scale = $matches[2];
            } else if (preg_match('/^((?:big|medium|small|tiny)?int)\((\d+)\)/', $row[$type], $matches)) {
                $row[$type] = $matches[1];
                // The optional argument of a MySQL int type is not precision
                // or length; it is only a hint for display width.
            }
            if (strtoupper($row[$key]) == 'PRI') {
                $primary = true;
                $primaryPosition = $p;
                if ($row[$extra] == 'auto_increment') {
                    $identity = true;
                } else {
                    $identity = false;
                }
                ++$p;
            }
            $desc[$this->foldCase($row[$field])] = array(
                'SCHEMA_NAME'      => null, // @todo
                'TABLE_NAME'       => $this->foldCase($tableName),
                'COLUMN_NAME'      => $this->foldCase($row[$field]),
                'COLUMN_POSITION'  => $i,
                'DATA_TYPE'        => $row[$type],
                'DEFAULT'          => $row[$default],
                'NULLABLE'         => (bool) ($row[$null] == 'YES'),
                'LENGTH'           => $length,
                'SCALE'            => $scale,
                'PRECISION'        => $precision,
                'UNSIGNED'         => $unsigned,
                'PRIMARY'          => $primary,
                'PRIMARY_POSITION' => $primaryPosition,
                'IDENTITY'         => $identity
            );
            ++$i;
        }
        return $desc;
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param  string $sql
     * @param  integer $count
     * @param  integer $offset OPTIONAL
     * @throws Zend_Db_Adapter_Exception
     * @return string
     */
     public function limit($sql, $count, $offset = 0)
     {
        $count = intval($count);
        if ($count <= 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /** @see Zend_Db_Adapter_Exception */
            require_once 'Zend/Db/Adapter/Exception.php';
            throw new Zend_Db_Adapter_Exception("LIMIT argument offset=$offset is not valid");
        }

        $sql .= " LIMIT $count";
        if ($offset > 0) {
            $sql .= " OFFSET $offset";
        }

        return $sql;
    }

}
PKpG[QwL�CCDb/Adapter/Mysqli.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mysqli.php 13281 2008-12-15 20:53:30Z mikaelkael $
 */


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Db_Profiler
 */
require_once 'Zend/Db/Profiler.php';

/**
 * @see Zend_Db_Select
 */
require_once 'Zend/Db/Select.php';

/**
 * @see Zend_Db_Statement_Mysqli
 */
require_once 'Zend/Db/Statement/Mysqli.php';


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Mysqli extends Zend_Db_Adapter_Abstract
{

    /**
     * Keys are UPPERCASE SQL datatypes or the constants
     * Zend_Db::INT_TYPE, Zend_Db::BIGINT_TYPE, or Zend_Db::FLOAT_TYPE.
     *
     * Values are:
     * 0 = 32-bit integer
     * 1 = 64-bit integer
     * 2 = float or decimal
     *
     * @var array Associative array of datatypes to values 0, 1, or 2.
     */
    protected $_numericDataTypes = array(
        Zend_Db::INT_TYPE    => Zend_Db::INT_TYPE,
        Zend_Db::BIGINT_TYPE => Zend_Db::BIGINT_TYPE,
        Zend_Db::FLOAT_TYPE  => Zend_Db::FLOAT_TYPE,
        'INT'                => Zend_Db::INT_TYPE,
        'INTEGER'            => Zend_Db::INT_TYPE,
        'MEDIUMINT'          => Zend_Db::INT_TYPE,
        'SMALLINT'           => Zend_Db::INT_TYPE,
        'TINYINT'            => Zend_Db::INT_TYPE,
        'BIGINT'             => Zend_Db::BIGINT_TYPE,
        'SERIAL'             => Zend_Db::BIGINT_TYPE,
        'DEC'                => Zend_Db::FLOAT_TYPE,
        'DECIMAL'            => Zend_Db::FLOAT_TYPE,
        'DOUBLE'             => Zend_Db::FLOAT_TYPE,
        'DOUBLE PRECISION'   => Zend_Db::FLOAT_TYPE,
        'FIXED'              => Zend_Db::FLOAT_TYPE,
        'FLOAT'              => Zend_Db::FLOAT_TYPE
    );

    /**
     * @var Zend_Db_Statement_Mysqli
     */
    protected $_stmt = null;

    /**
     * Default class name for a DB statement.
     *
     * @var string
     */
    protected $_defaultStmtClass = 'Zend_Db_Statement_Mysqli';

    /**
     * Quote a raw string.
     *
     * @param mixed $value Raw string
     *
     * @return string           Quoted string
     */
    protected function _quote($value)
    {
        if (is_int($value) || is_float($value)) {
            return $value;
        }
        $this->_connect();
        return "'" . $this->_connection->real_escape_string($value) . "'";
    }

    /**
     * Returns the symbol the adapter uses for delimiting identifiers.
     *
     * @return string
     */
    public function getQuoteIdentifierSymbol()
    {
        return "`";
    }

    /**
     * Returns a list of the tables in the database.
     *
     * @return array
     */
    public function listTables()
    {
        $result = array();
        // Use mysqli extension API, because SHOW doesn't work
        // well as a prepared statement on MySQL 4.1.
        $sql = 'SHOW TABLES';
        if ($queryResult = $this->getConnection()->query($sql)) {
            while ($row = $queryResult->fetch_row()) {
                $result[] = $row[0];
            }
            $queryResult->close();
        } else {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception($this->getConnection()->error);
        }
        return $result;
    }

    /**
     * Returns the column descriptions for a table.
     *
     * The return value is an associative array keyed by the column name,
     * as returned by the RDBMS.
     *
     * The value of each array element is an associative array
     * with the following keys:
     *
     * SCHEMA_NAME      => string; name of database or schema
     * TABLE_NAME       => string;
     * COLUMN_NAME      => string; column name
     * COLUMN_POSITION  => number; ordinal position of column in table
     * DATA_TYPE        => string; SQL datatype name of column
     * DEFAULT          => string; default expression of column, null if none
     * NULLABLE         => boolean; true if column can have nulls
     * LENGTH           => number; length of CHAR/VARCHAR
     * SCALE            => number; scale of NUMERIC/DECIMAL
     * PRECISION        => number; precision of NUMERIC/DECIMAL
     * UNSIGNED         => boolean; unsigned property of an integer type
     * PRIMARY          => boolean; true if column is part of the primary key
     * PRIMARY_POSITION => integer; position of column in primary key
     * IDENTITY         => integer; true if column is auto-generated with unique values
     *
     * @param string $tableName
     * @param string $schemaName OPTIONAL
     * @return array
     */
    public function describeTable($tableName, $schemaName = null)
    {
        /**
         * @todo  use INFORMATION_SCHEMA someday when
         * MySQL's implementation isn't too slow.
         */

        if ($schemaName) {
            $sql = 'DESCRIBE ' . $this->quoteIdentifier("$schemaName.$tableName", true);
        } else {
            $sql = 'DESCRIBE ' . $this->quoteIdentifier($tableName, true);
        }

        /**
         * Use mysqli extension API, because DESCRIBE doesn't work
         * well as a prepared statement on MySQL 4.1.
         */
        if ($queryResult = $this->getConnection()->query($sql)) {
            while ($row = $queryResult->fetch_assoc()) {
                $result[] = $row;
            }
            $queryResult->close();
        } else {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception($this->getConnection()->error);
        }

        $desc = array();

        $row_defaults = array(
            'Length'          => null,
            'Scale'           => null,
            'Precision'       => null,
            'Unsigned'        => null,
            'Primary'         => false,
            'PrimaryPosition' => null,
            'Identity'        => false
        );
        $i = 1;
        $p = 1;
        foreach ($result as $key => $row) {
            $row = array_merge($row_defaults, $row);
            if (preg_match('/unsigned/', $row['Type'])) {
                $row['Unsigned'] = true;
            }
            if (preg_match('/^((?:var)?char)\((\d+)\)/', $row['Type'], $matches)) {
                $row['Type'] = $matches[1];
                $row['Length'] = $matches[2];
            } else if (preg_match('/^decimal\((\d+),(\d+)\)/', $row['Type'], $matches)) {
                $row['Type'] = 'decimal';
                $row['Precision'] = $matches[1];
                $row['Scale'] = $matches[2];
            } else if (preg_match('/^float\((\d+),(\d+)\)/', $row['Type'], $matches)) {
                $row['Type'] = 'float';
                $row['Precision'] = $matches[1];
                $row['Scale'] = $matches[2];
            } else if (preg_match('/^((?:big|medium|small|tiny)?int)\((\d+)\)/', $row['Type'], $matches)) {
                $row['Type'] = $matches[1];
                /**
                 * The optional argument of a MySQL int type is not precision
                 * or length; it is only a hint for display width.
                 */
            }
            if (strtoupper($row['Key']) == 'PRI') {
                $row['Primary'] = true;
                $row['PrimaryPosition'] = $p;
                if ($row['Extra'] == 'auto_increment') {
                    $row['Identity'] = true;
                } else {
                    $row['Identity'] = false;
                }
                ++$p;
            }
            $desc[$this->foldCase($row['Field'])] = array(
                'SCHEMA_NAME'      => null, // @todo
                'TABLE_NAME'       => $this->foldCase($tableName),
                'COLUMN_NAME'      => $this->foldCase($row['Field']),
                'COLUMN_POSITION'  => $i,
                'DATA_TYPE'        => $row['Type'],
                'DEFAULT'          => $row['Default'],
                'NULLABLE'         => (bool) ($row['Null'] == 'YES'),
                'LENGTH'           => $row['Length'],
                'SCALE'            => $row['Scale'],
                'PRECISION'        => $row['Precision'],
                'UNSIGNED'         => $row['Unsigned'],
                'PRIMARY'          => $row['Primary'],
                'PRIMARY_POSITION' => $row['PrimaryPosition'],
                'IDENTITY'         => $row['Identity']
            );
            ++$i;
        }
        return $desc;
    }

    /**
     * Creates a connection to the database.
     *
     * @return void
     * @throws Zend_Db_Adapter_Mysqli_Exception
     */
    protected function _connect()
    {
        if ($this->_connection) {
            return;
        }

        if (!extension_loaded('mysqli')) {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception('The Mysqli extension is required for this adapter but the extension is not loaded');
        }

        if (isset($this->_config['port'])) {
            $port = (integer) $this->_config['port'];
        } else {
            $port = null;
        }

        $this->_connection = mysqli_init();

        if(!empty($this->_config['driver_options'])) {
            foreach($this->_config['driver_options'] as $option=>$value) {
                if(is_string($option)) {
                    // Suppress warnings here
                    // Ignore it if it's not a valid constant
                    $option = @constant(strtoupper($option));
                    if(is_null($option))
                        continue;
                }
                mysqli_options($this->_connection, $option, $value);
            }
        }

        // Suppress connection warnings here.
        // Throw an exception instead.
        $_isConnected = @mysqli_real_connect(
            $this->_connection,
            $this->_config['host'],
            $this->_config['username'],
            $this->_config['password'],
            $this->_config['dbname'],
            $port
        );

        if ($_isConnected === false || mysqli_connect_errno()) {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception(mysqli_connect_error());
        }
    }

    /**
     * Test if a connection is active
     *
     * @return boolean
     */
    public function isConnected()
    {
        return ((bool) ($this->_connection instanceof mysqli));
    }

    /**
     * Force the connection to close.
     *
     * @return void
     */
    public function closeConnection()
    {
        if ($this->isConnected()) {
            $this->_connection->close();
        }
        $this->_connection = null;
    }

    /**
     * Prepare a statement and return a PDOStatement-like object.
     *
     * @param  string  $sql  SQL query
     * @return Zend_Db_Statement_Mysqli
     */
    public function prepare($sql)
    {
        $this->_connect();
        if ($this->_stmt) {
            $this->_stmt->close();
        }
        $stmtClass = $this->_defaultStmtClass;
        Zend_Loader::loadClass($stmtClass);
        $stmt = new $stmtClass($this, $sql);
        if ($stmt === false) {
            return false;
        }
        $stmt->setFetchMode($this->_fetchMode);
        $this->_stmt = $stmt;
        return $stmt;
    }

    /**
     * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.
     *
     * As a convention, on RDBMS brands that support sequences
     * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence
     * from the arguments and returns the last id generated by that sequence.
     * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method
     * returns the last value generated for such a column, and the table name
     * argument is disregarded.
     *
     * MySQL does not support sequences, so $tableName and $primaryKey are ignored.
     *
     * @param string $tableName   OPTIONAL Name of table.
     * @param string $primaryKey  OPTIONAL Name of primary key column.
     * @return string
     * @todo Return value should be int?
     */
    public function lastInsertId($tableName = null, $primaryKey = null)
    {
        $mysqli = $this->_connection;
        return (string) $mysqli->insert_id;
    }

    /**
     * Begin a transaction.
     *
     * @return void
     */
    protected function _beginTransaction()
    {
        $this->_connect();
        $this->_connection->autocommit(false);
    }

    /**
     * Commit a transaction.
     *
     * @return void
     */
    protected function _commit()
    {
        $this->_connect();
        $this->_connection->commit();
        $this->_connection->autocommit(true);
    }

    /**
     * Roll-back a transaction.
     *
     * @return void
     */
    protected function _rollBack()
    {
        $this->_connect();
        $this->_connection->rollback();
        $this->_connection->autocommit(true);
    }

    /**
     * Set the fetch mode.
     *
     * @param int $mode
     * @return void
     * @throws Zend_Db_Adapter_Mysqli_Exception
     */
    public function setFetchMode($mode)
    {
        switch ($mode) {
            case Zend_Db::FETCH_LAZY:
            case Zend_Db::FETCH_ASSOC:
            case Zend_Db::FETCH_NUM:
            case Zend_Db::FETCH_BOTH:
            case Zend_Db::FETCH_NAMED:
            case Zend_Db::FETCH_OBJ:
                $this->_fetchMode = $mode;
                break;
            case Zend_Db::FETCH_BOUND: // bound to PHP variable
                /**
                 * @see Zend_Db_Adapter_Mysqli_Exception
                 */
                require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
                throw new Zend_Db_Adapter_Mysqli_Exception('FETCH_BOUND is not supported yet');
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Mysqli_Exception
                 */
                require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
                throw new Zend_Db_Adapter_Mysqli_Exception("Invalid fetch mode '$mode' specified");
        }
    }

    /**
     * Adds an adapter-specific LIMIT clause to the SELECT statement.
     *
     * @param string $sql
     * @param int $count
     * @param int $offset OPTIONAL
     * @return string
     */
    public function limit($sql, $count, $offset = 0)
    {
        $count = intval($count);
        if ($count <= 0) {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception("LIMIT argument count=$count is not valid");
        }

        $offset = intval($offset);
        if ($offset < 0) {
            /**
             * @see Zend_Db_Adapter_Mysqli_Exception
             */
            require_once 'Zend/Db/Adapter/Mysqli/Exception.php';
            throw new Zend_Db_Adapter_Mysqli_Exception("LIMIT argument offset=$offset is not valid");
        }

        $sql .= " LIMIT $count";
        if ($offset > 0) {
            $sql .= " OFFSET $offset";
        }

        return $sql;
    }

    /**
     * Check if the adapter supports real SQL parameters.
     *
     * @param string $type 'positional' or 'named'
     * @return bool
     */
    public function supportsParameters($type)
    {
        switch ($type) {
            case 'positional':
                return true;
            case 'named':
            default:
                return false;
        }
    }

    /**
     * Retrieve server version in PHP style
     *
     *@return string
     */
    public function getServerVersion()
    {
        $this->_connect();
        $version = $this->_connection->server_version;
        $major = (int) ($version / 10000);
        $minor = (int) ($version % 10000 / 100);
        $revision = (int) ($version % 100);
        return $major . '.' . $minor . '.' . $revision;
    }
}
PKpG[���Db/Adapter/Db2/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Adapter_Exception
 */
require_once 'Zend/Db/Adapter/Exception.php';

/**
 * Zend_Db_Adapter_Db2_Exception
 *
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Db2_Exception extends Zend_Db_Adapter_Exception
{
   protected $code = '00000';
   protected $message = 'unknown exception';

   function __construct($msg = 'unknown exception', $state = '00000') {
       $this->message = $msg;
       $this->code = $state;
   }
}
PKpG[Xڔ
��Db/Adapter/Oracle/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Adapter_Exception
 */
require_once 'Zend/Db/Adapter/Exception.php';

/**
 * Zend_Db_Adapter_Oracle_Exception
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Oracle_Exception extends Zend_Db_Adapter_Exception
{
   protected $message = 'Unknown exception';
   protected $code = 0;

   function __construct($error = null, $code = 0) {
       if (is_array($error)) {
            if (!isset($error['offset'])) {
                $this->message = $error['code'] .' '. $error['message'];
            } else {
                $this->message = $error['code'] .' '. $error['message']." "
                               . substr($error['sqltext'], 0, $error['offset'])
                               . "*"
                               . substr($error['sqltext'], $error['offset']);
            }
            $this->code = $error['code'];
       } else if (is_string($error)) {
           $this->message = $error;
       }
       if (!$this->code && $code) {
           $this->code = $code;
       }
   }
}
PKpG[#``Db/Adapter/Mysqli/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 *
 */

/**
 * Zend
 */
require_once 'Zend/Db/Adapter/Exception.php';

/**
 * Zend_Db_Adapter_Mysqli_Exception
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Adapter_Mysqli_Exception extends Zend_Db_Adapter_Exception
{
}
PKpG[:b�0�5�5Db/Statement/Pdo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mysqli.php 4874 2007-05-19 01:26:32Z bkarwin $
 */

/**
 * @see Zend_Db_Statement
 */
require_once 'Zend/Db/Statement.php';

/**
 * Proxy class to wrap a PDOStatement object.
 * Matches the interface of PDOStatement.  All methods simply proxy to the
 * matching method in PDOStatement.  PDOExceptions thrown by PDOStatement
 * are re-thrown as Zend_Db_Statement_Exception.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Pdo extends Zend_Db_Statement
{

    /**
     * The mysqli_stmt object.
     *
     * @var PDOStatement
     */
    protected $_stmt;

    /**
     * @var int
     */
    protected $_fetchMode = PDO::FETCH_ASSOC;

    /**
     * Prepare a string SQL statement and create a statement object.
     *
     * @param string $sql
     * @return void
     * @throws Zend_Db_Statement_Exception
     */
    protected function _prepare($sql)
    {
        try {
            $this->_stmt = $this->_adapter->getConnection()->prepare($sql);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Bind a column of the statement result set to a PHP variable.
     *
     * @param string $column Name the column in the result set, either by
     *                       position or by name.
     * @param mixed  $param  Reference to the PHP variable containing the value.
     * @param mixed  $type   OPTIONAL
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function bindColumn($column, &$param, $type = null)
    {
        try {
            if (is_null($type)) {
                return $this->_stmt->bindColumn($column, $param);
            } else {
                return $this->_stmt->bindColumn($column, $param, $type);
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    protected function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        try {
            if ($type === null) {
                if (is_bool($variable)) {
                    $type = PDO::PARAM_BOOL;
                } elseif (is_null($variable)) {
                    $type = PDO::PARAM_NULL;
                } elseif (is_integer($variable)) {
                    $type = PDO::PARAM_INT;
                } else {
                    $type = PDO::PARAM_STR;
                }
            }
            return $this->_stmt->bindParam($parameter, $variable, $type, $length, $options);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Binds a value to a parameter.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $value     Scalar value to bind to the parameter.
     * @param mixed $type      OPTIONAL Datatype of the parameter.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function bindValue($parameter, $value, $type = null)
    {
        if (is_string($parameter) && $parameter[0] != ':') {
            $parameter = ":$parameter";
        }
        try {
            if (is_null($type)) {
                return $this->_stmt->bindValue($parameter, $value);
            } else {
                return $this->_stmt->bindValue($parameter, $value, $type);
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Closes the cursor, allowing the statement to be executed again.
     *
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function closeCursor()
    {
        try {
            return $this->_stmt->closeCursor();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Returns the number of columns in the result set.
     * Returns null if the statement has no result set metadata.
     *
     * @return int The number of columns.
     * @throws Zend_Db_Statement_Exception
     */
    public function columnCount()
    {
        try {
            return $this->_stmt->columnCount();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Retrieves the error code, if any, associated with the last operation on
     * the statement handle.
     *
     * @return string error code.
     * @throws Zend_Db_Statement_Exception
     */
    public function errorCode()
    {
        try {
            return $this->_stmt->errorCode();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Retrieves an array of error information, if any, associated with the
     * last operation on the statement handle.
     *
     * @return array
     * @throws Zend_Db_Statement_Exception
     */
    public function errorInfo()
    {
        try {
            return $this->_stmt->errorInfo();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function _execute(array $params = null)
    {
        try {
            if ($params !== null) {
                return $this->_stmt->execute($params);
            } else {
                return $this->_stmt->execute();
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Fetches a row from the result set.
     *
     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
     * @param int $cursor OPTIONAL Absolute, relative, or other.
     * @param int $offset OPTIONAL Number for absolute or relative cursors.
     * @return mixed Array, object, or scalar depending on fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetch($style = null, $cursor = null, $offset = null)
    {
        if ($style === null) {
            $style = $this->_fetchMode;
        }
        try {
            return $this->_stmt->fetch($style, $cursor, $offset);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Returns an array containing all of the result set rows.
     *
     * @param int $style OPTIONAL Fetch mode.
     * @param int $col   OPTIONAL Column number, if fetch mode is by column.
     * @return array Collection of rows, each in a format by the fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchAll($style = null, $col = null)
    {
        if ($style === null) {
            $style = $this->_fetchMode;
        }
        try {
            if ($style == PDO::FETCH_COLUMN) {
                if ($col === null) {
                    $col = 0;
                }
                return $this->_stmt->fetchAll($style, $col);
            } else {
                return $this->_stmt->fetchAll($style);
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Returns a single column from the next row of a result set.
     *
     * @param int $col OPTIONAL Position of the column to fetch.
     * @return string
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchColumn($col = 0)
    {
        try {
            return $this->_stmt->fetchColumn($col);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Fetches the next row and returns it as an object.
     *
     * @param string $class  OPTIONAL Name of the class to create.
     * @param array  $config OPTIONAL Constructor arguments for the class.
     * @return mixed One object instance of the specified class.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchObject($class = 'stdClass', array $config = array())
    {
        try {
            return $this->_stmt->fetchObject($class, $config);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Retrieve a statement attribute.
     *
     * @param integer $key Attribute name.
     * @return mixed      Attribute value.
     * @throws Zend_Db_Statement_Exception
     */
    public function getAttribute($key)
    {
        try {
            return $this->_stmt->getAttribute($key);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Returns metadata for a column in a result set.
     *
     * @param int $column
     * @return mixed
     * @throws Zend_Db_Statement_Exception
     */
    public function getColumnMeta($column)
    {
        try {
            return $this->_stmt->getColumnMeta($column);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Retrieves the next rowset (result set) for a SQL statement that has
     * multiple result sets.  An example is a stored procedure that returns
     * the results of multiple queries.
     *
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function nextRowset()
    {
        try {
            return $this->_stmt->nextRowset();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Returns the number of rows affected by the execution of the
     * last INSERT, DELETE, or UPDATE statement executed by this
     * statement object.
     *
     * @return int     The number of rows affected.
     * @throws Zend_Db_Statement_Exception
     */
    public function rowCount()
    {
        try {
            return $this->_stmt->rowCount();
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Set a statement attribute.
     *
     * @param string $key Attribute name.
     * @param mixed  $val Attribute value.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function setAttribute($key, $val)
    {
        try {
            return $this->_stmt->setAttribute($key, $val);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

    /**
     * Set the default fetch mode for this statement.
     *
     * @param int   $mode The fetch mode.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function setFetchMode($mode)
    {
        $this->_fetchMode = $mode;
        try {
            return $this->_stmt->setFetchMode($mode);
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

}
PKpG[�ʴ'YYDb/Statement/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Db_Exception
 */
require_once 'Zend/Db/Exception.php';

/**
 * Zend_Db_Statement_Exception
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Exception extends Zend_Db_Exception
{
}
PKpG[&,����Db/Statement/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Emulates a PDOStatement for native database adapters.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Db_Statement_Interface
{

    /**
     * Bind a column of the statement result set to a PHP variable.
     *
     * @param string $column Name the column in the result set, either by
     *                       position or by name.
     * @param mixed  $param  Reference to the PHP variable containing the value.
     * @param mixed  $type   OPTIONAL
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function bindColumn($column, &$param, $type = null);

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function bindParam($parameter, &$variable, $type = null, $length = null, $options = null);

    /**
     * Binds a value to a parameter.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $value     Scalar value to bind to the parameter.
     * @param mixed $type      OPTIONAL Datatype of the parameter.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function bindValue($parameter, $value, $type = null);

    /**
     * Closes the cursor, allowing the statement to be executed again.
     *
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function closeCursor();

    /**
     * Returns the number of columns in the result set.
     * Returns null if the statement has no result set metadata.
     *
     * @return int The number of columns.
     * @throws Zend_Db_Statement_Exception
     */
    public function columnCount();

    /**
     * Retrieves the error code, if any, associated with the last operation on
     * the statement handle.
     *
     * @return string error code.
     * @throws Zend_Db_Statement_Exception
     */
    public function errorCode();

    /**
     * Retrieves an array of error information, if any, associated with the
     * last operation on the statement handle.
     *
     * @return array
     * @throws Zend_Db_Statement_Exception
     */
    public function errorInfo();

    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function execute(array $params = array());

    /**
     * Fetches a row from the result set.
     *
     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
     * @param int $cursor OPTIONAL Absolute, relative, or other.
     * @param int $offset OPTIONAL Number for absolute or relative cursors.
     * @return mixed Array, object, or scalar depending on fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetch($style = null, $cursor = null, $offset = null);

    /**
     * Returns an array containing all of the result set rows.
     *
     * @param int $style OPTIONAL Fetch mode.
     * @param int $col   OPTIONAL Column number, if fetch mode is by column.
     * @return array Collection of rows, each in a format by the fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchAll($style = null, $col = null);

    /**
     * Returns a single column from the next row of a result set.
     *
     * @param int $col OPTIONAL Position of the column to fetch.
     * @return string
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchColumn($col = 0);

    /**
     * Fetches the next row and returns it as an object.
     *
     * @param string $class  OPTIONAL Name of the class to create.
     * @param array  $config OPTIONAL Constructor arguments for the class.
     * @return mixed One object instance of the specified class.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchObject($class = 'stdClass', array $config = array());

    /**
     * Retrieve a statement attribute.
     *
     * @param string $key Attribute name.
     * @return mixed      Attribute value.
     * @throws Zend_Db_Statement_Exception
     */
    public function getAttribute($key);

    /**
     * Retrieves the next rowset (result set) for a SQL statement that has
     * multiple result sets.  An example is a stored procedure that returns
     * the results of multiple queries.
     *
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function nextRowset();

    /**
     * Returns the number of rows affected by the execution of the
     * last INSERT, DELETE, or UPDATE statement executed by this
     * statement object.
     *
     * @return int     The number of rows affected.
     * @throws Zend_Db_Statement_Exception
     */
    public function rowCount();

    /**
     * Set a statement attribute.
     *
     * @param string $key Attribute name.
     * @param mixed  $val Attribute value.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function setAttribute($key, $val);

    /**
     * Set the default fetch mode for this statement.
     *
     * @param int   $mode The fetch mode.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function setFetchMode($mode);

}
PKpG[�6F\A\ADb/Statement/Oracle.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Db_Statement
 */
require_once 'Zend/Db/Statement.php';

/**
 * Extends for Oracle.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Oracle extends Zend_Db_Statement
{

    /**
     * The connection_stmt object.
     */
    protected $_stmt;

    /**
     * Column names.
     */
    protected $_keys;

    /**
     * Fetched result values.
     */
    protected $_values;

    /**
     * Check if LOB field are returned as string
     * instead of OCI-Lob object
     *
     * @var boolean
     */
    protected $_lobAsString = false;

    /**
     * Activate/deactivate return of LOB as string
     *
     * @param string $lob_as_string
     * @return Zend_Db_Statement_Oracle
     */
    public function setLobAsString($lob_as_string)
    {
        $this->_lobAsString = (bool) $lob_as_string;
        return $this;
    }

    /**
     * Return whether or not LOB are returned as string
     *
     * @return boolean
     */
    public function getLobAsString()
    {
        return $this->_lobAsString;
    }

    /**
     * Prepares statement handle
     *
     * @param string $sql
     * @return void
     * @throws Zend_Db_Statement_Oracle_Exception
     */
    protected function _prepare($sql)
    {
        $connection = $this->_adapter->getConnection();
        $this->_stmt = oci_parse($connection, $sql);
        if (!$this->_stmt) {
            /**
             * @see Zend_Db_Statement_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($connection));
        }
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    protected function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        // default value
        if ($type === NULL) {
            $type = SQLT_CHR;
        }

        // default value
        if ($length === NULL) {
            $length = -1;
        }

        $retval = @oci_bind_by_name($this->_stmt, $parameter, $variable, $length, $type);
        if ($retval === false) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
        }

        return true;
    }

    /**
     * Closes the cursor, allowing the statement to be executed again.
     *
     * @return bool
     */
    public function closeCursor()
    {
        if (!$this->_stmt) {
            return false;
        }

        oci_free_statement($this->_stmt);
        $this->_stmt = false;
        return true;
    }

    /**
     * Returns the number of columns in the result set.
     * Returns null if the statement has no result set metadata.
     *
     * @return int The number of columns.
     */
    public function columnCount()
    {
        if (!$this->_stmt) {
            return false;
        }

        return oci_num_fields($this->_stmt);
    }


    /**
     * Retrieves the error code, if any, associated with the last operation on
     * the statement handle.
     *
     * @return string error code.
     */
    public function errorCode()
    {
        if (!$this->_stmt) {
            return false;
        }

        $error = oci_error($this->_stmt);

        if (!$error) {
            return false;
        }

        return $error['code'];
    }


    /**
     * Retrieves an array of error information, if any, associated with the
     * last operation on the statement handle.
     *
     * @return array
     */
    public function errorInfo()
    {
        if (!$this->_stmt) {
            return false;
        }

        $error = oci_error($this->_stmt);
        if (!$error) {
            return false;
        }

        if (isset($error['sqltext'])) {
            return array(
                $error['code'],
                $error['message'],
                $error['offset'],
                $error['sqltext'],
            );
        } else {
            return array(
                $error['code'],
                $error['message'],
            );
        }
    }


    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function _execute(array $params = null)
    {
        $connection = $this->_adapter->getConnection();
        if (!$this->_stmt) {
            return false;
        }

        if (! $this->_stmt) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($connection));
        }

        if ($params !== null) {
            if (!is_array($params)) {
                $params = array($params);
            }
            $error = false;
            foreach (array_keys($params) as $name) {
                if (!@oci_bind_by_name($this->_stmt, $name, $params[$name], -1)) {
                    $error = true;
                    break;
                }
            }
            if ($error) {
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Statement/Oracle/Exception.php';
                throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
            }
        }

        $retval = @oci_execute($this->_stmt, $this->_adapter->_getExecuteMode());
        if ($retval === false) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
        }

        $this->_keys = Array();
        if ($field_num = oci_num_fields($this->_stmt)) {
            for ($i = 1; $i <= $field_num; $i++) {
                $name = oci_field_name($this->_stmt, $i);
                $this->_keys[] = $name;
            }
        }

        $this->_values = Array();
        if ($this->_keys) {
            $this->_values = array_fill(0, count($this->_keys), null);
        }

        return $retval;
    }

    /**
     * Fetches a row from the result set.
     *
     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
     * @param int $cursor OPTIONAL Absolute, relative, or other.
     * @param int $offset OPTIONAL Number for absolute or relative cursors.
     * @return mixed Array, object, or scalar depending on fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetch($style = null, $cursor = null, $offset = null)
    {
        if (!$this->_stmt) {
            return false;
        }

        if ($style === null) {
            $style = $this->_fetchMode;
        }

        $lob_as_string = $this->getLobAsString() ? OCI_RETURN_LOBS : 0;

        switch ($style) {
            case Zend_Db::FETCH_NUM:
                $row = oci_fetch_array($this->_stmt, OCI_NUM | $lob_as_string);
                break;
            case Zend_Db::FETCH_ASSOC:
                $row = oci_fetch_array($this->_stmt, OCI_ASSOC | $lob_as_string);
                break;
            case Zend_Db::FETCH_BOTH:
                $row = oci_fetch_array($this->_stmt, OCI_BOTH | $lob_as_string);
                break;
            case Zend_Db::FETCH_OBJ:
                $row = oci_fetch_object($this->_stmt);
                break;
            case Zend_Db::FETCH_BOUND:
                $row = oci_fetch_array($this->_stmt, OCI_BOTH | $lob_as_string);
                if ($row !== false) {
                    return $this->_fetchBound($row);
                }
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Statement/Oracle/Exception.php';
                throw new Zend_Db_Statement_Oracle_Exception(
                    array(
                        'code'    => 'HYC00',
                        'message' => "Invalid fetch mode '$style' specified"
                    )
                );
                break;
        }

        if (! $row && $error = oci_error($this->_stmt)) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception($error);
        }

        return $row;
    }

    /**
     * Returns an array containing all of the result set rows.
     *
     * @param int $style OPTIONAL Fetch mode.
     * @param int $col   OPTIONAL Column number, if fetch mode is by column.
     * @return array Collection of rows, each in a format by the fetch mode.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchAll($style = null, $col = 0)
    {
        if (!$this->_stmt) {
            return false;
        }

        // make sure we have a fetch mode
        if ($style === null) {
            $style = $this->_fetchMode;
        }

        $flags = OCI_FETCHSTATEMENT_BY_ROW;

        switch ($style) {
            case Zend_Db::FETCH_BOTH:
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Statement/Oracle/Exception.php';
                throw new Zend_Db_Statement_Oracle_Exception(
                    array(
                        'code'    => 'HYC00',
                        'message' => "OCI8 driver does not support fetchAll(FETCH_BOTH), use fetch() in a loop instead"
                    )
                );
                // notreached
                $flags |= OCI_NUM;
                $flags |= OCI_ASSOC;
                break;
            case Zend_Db::FETCH_NUM:
                $flags |= OCI_NUM;
                break;
            case Zend_Db::FETCH_ASSOC:
                $flags |= OCI_ASSOC;
                break;
            case Zend_Db::FETCH_OBJ:
                break;
            case Zend_Db::FETCH_COLUMN:
                $flags = $flags &~ OCI_FETCHSTATEMENT_BY_ROW;
                $flags |= OCI_FETCHSTATEMENT_BY_COLUMN;
                $flags |= OCI_NUM;
                break;
            default:
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Statement/Oracle/Exception.php';
                throw new Zend_Db_Statement_Oracle_Exception(
                    array(
                        'code'    => 'HYC00',
                        'message' => "Invalid fetch mode '$style' specified"
                    )
                );
                break;
        }

        $result = Array();
        if ($flags != OCI_FETCHSTATEMENT_BY_ROW) { /* not Zend_Db::FETCH_OBJ */
            if (! ($rows = oci_fetch_all($this->_stmt, $result, 0, -1, $flags) )) {
                if ($error = oci_error($this->_stmt)) {
                    /**
                     * @see Zend_Db_Adapter_Oracle_Exception
                     */
                    require_once 'Zend/Db/Statement/Oracle/Exception.php';
                    throw new Zend_Db_Statement_Oracle_Exception($error);
                }
                if (!$rows) {
                    return array();
                }
            }
            if ($style == Zend_Db::FETCH_COLUMN) {
                $result = $result[$col];
            }
        } else {
            while (($row = oci_fetch_object($this->_stmt)) !== false) {
                $result [] = $row;
            }
            if ($error = oci_error($this->_stmt)) {
                /**
                 * @see Zend_Db_Adapter_Oracle_Exception
                 */
                require_once 'Zend/Db/Statement/Oracle/Exception.php';
                throw new Zend_Db_Statement_Oracle_Exception($error);
            }
        }

        return $result;
    }


    /**
     * Returns a single column from the next row of a result set.
     *
     * @param int $col OPTIONAL Position of the column to fetch.
     * @return string
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchColumn($col = 0)
    {
        if (!$this->_stmt) {
            return false;
        }

        if (!oci_fetch($this->_stmt)) {
            /* TODO ERROR */
        }

        $data = oci_result($this->_stmt, $col+1); //1-based
        if ($data === false) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
        }

        if ($this->getLobAsString()) {
            // instanceof doesn't allow '-', we must use a temporary string
            $type = 'OCI-Lob';
            if ($data instanceof $type) {
                $data = $data->read($data->size());
            }
        }

        return $data;
    }

    /**
     * Fetches the next row and returns it as an object.
     *
     * @param string $class  OPTIONAL Name of the class to create.
     * @param array  $config OPTIONAL Constructor arguments for the class.
     * @return mixed One object instance of the specified class.
     * @throws Zend_Db_Statement_Exception
     */
    public function fetchObject($class = 'stdClass', array $config = array())
    {
        if (!$this->_stmt) {
            return false;
        }

        $obj = oci_fetch_object($this->_stmt);

        if ($obj === false) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
        }

        /* @todo XXX handle parameters */

        return $obj;
    }

    /**
     * Retrieves the next rowset (result set) for a SQL statement that has
     * multiple result sets.  An example is a stored procedure that returns
     * the results of multiple queries.
     *
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function nextRowset()
    {
        /**
         * @see Zend_Db_Statement_Oracle_Exception
         */
        require_once 'Zend/Db/Statement/Oracle/Exception.php';
        throw new Zend_Db_Statement_Oracle_Exception(
            array(
                'code'    => 'HYC00',
                'message' => 'Optional feature not implemented'
            )
        );
    }

    /**
     * Returns the number of rows affected by the execution of the
     * last INSERT, DELETE, or UPDATE statement executed by this
     * statement object.
     *
     * @return int     The number of rows affected.
     * @throws Zend_Db_Statement_Exception
     */
    public function rowCount()
    {
        if (!$this->_stmt) {
            return false;
        }

        $num_rows = oci_num_rows($this->_stmt);

        if ($num_rows === false) {
            /**
             * @see Zend_Db_Adapter_Oracle_Exception
             */
            require_once 'Zend/Db/Statement/Oracle/Exception.php';
            throw new Zend_Db_Statement_Oracle_Exception(oci_error($this->_stmt));
        }

        return $num_rows;
    }

}
PKpG[�	*C�'�'Db/Statement/Db2.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Db_Statement
 */
require_once 'Zend/Db/Statement.php';

/**
 * Extends for DB2 native adapter.
 *
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Db2 extends Zend_Db_Statement
{
    /**
     * Statement resource handle.
     */
    protected $_stmt = null;

    /**
     * Column names.
     */
    protected $_keys;

    /**
     * Fetched result values.
     */
    protected $_values;

    /**
     * Prepare a statement handle.
     *
     * @param string $sql
     * @return void
     * @throws Zend_Db_Statement_Db2_Exception
     */
    public function _prepare($sql)
    {
        $connection = $this->_adapter->getConnection();

        // db2_prepare on i5 emits errors, these need to be
        // suppressed so that proper exceptions can be thrown
        $this->_stmt = @db2_prepare($connection, $sql);

        if (!$this->_stmt) {
            /**
             * @see Zend_Db_Statement_Db2_Exception
             */
            require_once 'Zend/Db/Statement/Db2/Exception.php';
            throw new Zend_Db_Statement_Db2_Exception(
                db2_stmt_errormsg(),
                db2_stmt_error()
            );
        }
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Db2_Exception
     */
    public function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        if ($type === null) {
            $type = DB2_PARAM_IN;
        }

        if (isset($options['data-type'])) {
            $datatype = $options['data-type'];
        } else {
            $datatype = DB2_CHAR;
        }

        if (!db2_bind_param($this->_stmt, $position, "variable", $type, $datatype)) {
            /**
             * @see Zend_Db_Statement_Db2_Exception
             */
            require_once 'Zend/Db/Statement/Db2/Exception.php';
            throw new Zend_Db_Statement_Db2_Exception(
                db2_stmt_errormsg(),
                db2_stmt_error()
            );
        }

        return true;
    }

    /**
     * Closes the cursor, allowing the statement to be executed again.
     *
     * @return bool
     */
    public function closeCursor()
    {
        if (!$this->_stmt) {
            return false;
        }
        db2_free_stmt($this->_stmt);
        $this->_stmt = false;
        return true;
    }


    /**
     * Returns the number of columns in the result set.
     * Returns null if the statement has no result set metadata.
     *
     * @return int The number of columns.
     */
    public function columnCount()
    {
        if (!$this->_stmt) {
            return false;
        }
        return db2_num_fields($this->_stmt);
    }

    /**
     * Retrieves the error code, if any, associated with the last operation on
     * the statement handle.
     *
     * @return string error code.
     */
    public function errorCode()
    {
        if (!$this->_stmt) {
            return false;
        }

        $error = db2_stmt_error();
        if ($error === '') {
        	return false;
        }

        return $error;
    }

    /**
     * Retrieves an array of error information, if any, associated with the
     * last operation on the statement handle.
     *
     * @return array
     */
    public function errorInfo()
    {
    	$error = $this->errorCode();
    	if ($error === false){
    		return false;
    	}

        /*
         * Return three-valued array like PDO.  But DB2 does not distinguish
         * between SQLCODE and native RDBMS error code, so repeat the SQLCODE.
         */
        return array(
            $error,
            $error,
            db2_stmt_errormsg()
        );
    }

    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     * @throws Zend_Db_Statement_Db2_Exception
     */
    public function _execute(array $params = null)
    {
        if (!$this->_stmt) {
            return false;
        }

        $retval = true;
        if ($params !== null) {
            $retval = @db2_execute($this->_stmt, $params);
        } else {
            $retval = @db2_execute($this->_stmt);
        }

        if ($retval === false) {
            /**
             * @see Zend_Db_Statement_Db2_Exception
             */
            require_once 'Zend/Db/Statement/Db2/Exception.php';
            throw new Zend_Db_Statement_Db2_Exception(
                db2_stmt_errormsg(),
                db2_stmt_error());
        }

        $this->_keys = array();
        if ($field_num = $this->columnCount()) {
            for ($i = 0; $i < $field_num; $i++) {
                $name = db2_field_name($this->_stmt, $i);
                $this->_keys[] = $name;
            }
        }

        $this->_values = array();
        if ($this->_keys) {
            $this->_values = array_fill(0, count($this->_keys), null);
        }

        return $retval;
    }

    /**
     * Fetches a row from the result set.
     *
     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
     * @param int $cursor OPTIONAL Absolute, relative, or other.
     * @param int $offset OPTIONAL Number for absolute or relative cursors.
     * @return mixed Array, object, or scalar depending on fetch mode.
     * @throws Zend_Db_Statement_Db2_Exception
     */
    public function fetch($style = null, $cursor = null, $offset = null)
    {
        if (!$this->_stmt) {
            return false;
        }

        if ($style === null) {
            $style = $this->_fetchMode;
        }

        switch ($style) {
            case Zend_Db::FETCH_NUM :
                $row = db2_fetch_array($this->_stmt);
                break;
            case Zend_Db::FETCH_ASSOC :
                $row = db2_fetch_assoc($this->_stmt);
                break;
            case Zend_Db::FETCH_BOTH :
                $row = db2_fetch_both($this->_stmt);
                break;
            case Zend_Db::FETCH_OBJ :
                $row = db2_fetch_object($this->_stmt);
                break;
            case Zend_Db::FETCH_BOUND:
                $row = db2_fetch_both($this->_stmt);
                if ($row !== false) {
                    return $this->_fetchBound($row);
                }
                break;
            default:
                /**
                 * @see Zend_Db_Statement_Db2_Exception
                 */
                require_once 'Zend/Db/Statement/Db2/Exception.php';
                throw new Zend_Db_Statement_Db2_Exception("Invalid fetch mode '$style' specified");
                break;
        }

        return $row;
    }

    /**
     * Fetches the next row and returns it as an object.
     *
     * @param string $class  OPTIONAL Name of the class to create.
     * @param array  $config OPTIONAL Constructor arguments for the class.
     * @return mixed One object instance of the specified class.
     */
    public function fetchObject($class = 'stdClass', array $config = array())
    {
        $obj = $this->fetch(Zend_Db::FETCH_OBJ);
        return $obj;
    }

    /**
     * Retrieves the next rowset (result set) for a SQL statement that has
     * multiple result sets.  An example is a stored procedure that returns
     * the results of multiple queries.
     *
     * @return bool
     * @throws Zend_Db_Statement_Db2_Exception
     */
    public function nextRowset()
    {
        /**
         * @see Zend_Db_Statement_Db2_Exception
         */
        require_once 'Zend/Db/Statement/Db2/Exception.php';
        throw new Zend_Db_Statement_Db2_Exception(__FUNCTION__ . '() is not implemented');
    }

    /**
     * Returns the number of rows affected by the execution of the
     * last INSERT, DELETE, or UPDATE statement executed by this
     * statement object.
     *
     * @return int     The number of rows affected.
     */
    public function rowCount()
    {
        if (!$this->_stmt) {
            return false;
        }

        $num = @db2_num_rows($this->_stmt);

        if ($num === false) {
            return 0;
        }

        return $num;
    }

     /**
     * Returns an array containing all of the result set rows.
     *
     * @param int $style OPTIONAL Fetch mode.
     * @param int $col   OPTIONAL Column number, if fetch mode is by column.
     * @return array Collection of rows, each in a format by the fetch mode.
     *
     * Behaves like parent, but if limit()
     * is used, the final result removes the extra column
     * 'zend_db_rownum'
     */
    public function fetchAll($style = null, $col = null)
    {
        $data = parent::fetchAll($style, $col);
        $results = array();
        $remove = $this->_adapter->foldCase('ZEND_DB_ROWNUM');

        foreach ($data as $row) {
            if (is_array($row) && array_key_exists($remove, $row)) {
                unset($row[$remove]);
            }
            $results[] = $row;
        }
        return $results;
    }
}
PKpG[�€�##!Db/Statement/Oracle/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Statement_Exception
 */
require_once 'Zend/Db/Statement/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Statement_Oracle_Exception extends Zend_Db_Statement_Exception
{
   protected $message = 'Unknown exception';
   protected $code = 0;

   function __construct($error = null, $code = 0)
   {
       if (is_array($error)) {
            if (!isset($error['offset'])) {
                $this->message = $error['code']." ".$error['message'];
            } else {
                $this->message = $error['code']." ".$error['message']." ";
                $this->message .= substr($error['sqltext'], 0, $error['offset']);
                $this->message .= "*";
                $this->message .= substr($error['sqltext'], $error['offset']);
            }
            $this->code = $error['code'];
       }
       if (!$this->code && $code) {
           $this->code = $code;
       }
   }
}

PKpG[�
��+
+
Db/Statement/Pdo/Ibm.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mysqli.php 4874 2007-05-19 01:26:32Z bkarwin $
 */

/**
 * @see Zend_Db_Statement_Pdo
 */
require_once 'Zend/Db/Statement/Pdo.php';

/**
 * Proxy class to wrap a PDOStatement object for IBM Databases.
 * Matches the interface of PDOStatement.  All methods simply proxy to the
 * matching method in PDOStatement.  PDOExceptions thrown by PDOStatement
 * are re-thrown as Zend_Db_Statement_Exception.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Pdo_Ibm extends Zend_Db_Statement_Pdo
{
    /**
    * Returns an array containing all of the result set rows.
    *
    * Behaves like parent, but if limit()
    * is used, the final result removes the extra column
    * 'zend_db_rownum'
    *
    * @param int $style OPTIONAL Fetch mode.
    * @param int $col   OPTIONAL Column number, if fetch mode is by column.
    * @return array Collection of rows, each in a format by the fetch mode.
    * @throws Zend_Db_Statement_Exception
    */
    public function fetchAll($style = null, $col = null)
    {
        $data = parent::fetchAll($style, $col);
        $results = array();
        $remove = $this->_adapter->foldCase('ZEND_DB_ROWNUM');

        foreach ($data as $row) {
            if (is_array($row) && array_key_exists($remove, $row)) {
                unset($row[$remove]);
            }
            $results[] = $row;
        }
        return $results;
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        try {
            if ( is_null($type) && is_null($length) && is_null($options) ) {
                return $this->_stmt->bindParam($parameter, $variable);
            } else {
                return $this->_stmt->bindParam($parameter, $variable, $type, $length, $options);
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage());
        }
    }

}PKpG[�f���)�)Db/Statement/Mysqli.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Mysqli.php 9738 2008-06-19 23:06:36Z peptolab $
 */


/**
 * @see Zend_Db_Statement
 */
require_once 'Zend/Db/Statement.php';

    
/**
 * Extends for Mysqli
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Statement_Mysqli extends Zend_Db_Statement
{

    /**
     * The mysqli_stmt object.
     *
     * @var mysqli_stmt
     */
    protected $_stmt;

    /**
     * Column names.
     *
     * @var array
     */
    protected $_keys;

    /**
     * Fetched result values.
     *
     * @var array
     */
    protected $_values;

    /**
     * @var array
     */
    protected $_meta = null;

    /**
     * @param  string $sql
     * @return void
     * @throws Zend_Db_Statement_Mysqli_Exception
     */
    public function _prepare($sql)
    {
        $mysqli = $this->_adapter->getConnection();

        $this->_stmt = $mysqli->prepare($sql);

        if ($this->_stmt === false || $mysqli->errno) {
            /**
             * @see Zend_Db_Statement_Mysqli_Exception
             */
            require_once 'Zend/Db/Statement/Mysqli/Exception.php';
            throw new Zend_Db_Statement_Mysqli_Exception("Mysqli prepare error: " . $mysqli->error);
        }
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     * @throws Zend_Db_Statement_Mysqli_Exception
     */
    protected function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        return true;
    }

    /**
     * Closes the cursor and the statement.
     *
     * @return bool
     */
    public function close()
    {
        if ($this->_stmt) {
            $r = $this->_stmt->close();
            $this->_stmt = null;
            return $r;
        }
        return false;
    }

    /**
     * Closes the cursor, allowing the statement to be executed again.
     *
     * @return bool
     */
    public function closeCursor()
    {
        if ($stmt = $this->_stmt) {
            $mysqli = $this->_adapter->getConnection();
            while ($mysqli->next_result()) {}
            $this->_stmt->free_result();
            return $this->_stmt->reset();
        }
        return false;
    }

    /**
     * Returns the number of columns in the result set.
     * Returns null if the statement has no result set metadata.
     *
     * @return int The number of columns.
     */
    public function columnCount()
    {
        if (isset($this->_meta) && $this->_meta) {
            return $this->_meta->field_count;
        }
        return 0;
    }

    /**
     * Retrieves the error code, if any, associated with the last operation on
     * the statement handle.
     *
     * @return string error code.
     */
    public function errorCode()
    {
        if (!$this->_stmt) {
            return false;
        }
        return substr($this->_stmt->sqlstate, 0, 5);
    }

    /**
     * Retrieves an array of error information, if any, associated with the
     * last operation on the statement handle.
     *
     * @return array
     */
    public function errorInfo()
    {
        if (!$this->_stmt) {
            return false;
        }
        return array(
            substr($this->_stmt->sqlstate, 0, 5),
            $this->_stmt->errno,
            $this->_stmt->error,
        );
    }

    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     * @throws Zend_Db_Statement_Mysqli_Exception
     */
    public function _execute(array $params = null)
    {
        if (!$this->_stmt) {
            return false;
        }

        // if no params were given as an argument to execute(),
        // then default to the _bindParam array
        if ($params === null) {
            $params = $this->_bindParam;
        }
        // send $params as input parameters to the statement
        if ($params) {
            array_unshift($params, str_repeat('s', count($params)));
            call_user_func_array(
                array($this->_stmt, 'bind_param'),
                $params
            );
        }

        // execute the statement
        $retval = $this->_stmt->execute();
        if ($retval === false) {
            /**
             * @see Zend_Db_Statement_Mysqli_Exception
             */
            require_once 'Zend/Db/Statement/Mysqli/Exception.php';
            throw new Zend_Db_Statement_Mysqli_Exception("Mysqli statement execute error : " . $this->_stmt->error);
        }


        // retain metadata
        if ($this->_meta === null) {
            $this->_meta = $this->_stmt->result_metadata();
            if ($this->_stmt->errno) {
                /**
                 * @see Zend_Db_Statement_Mysqli_Exception
                 */
                require_once 'Zend/Db/Statement/Mysqli/Exception.php';
                throw new Zend_Db_Statement_Mysqli_Exception("Mysqli statement metadata error: " . $this->_stmt->error);
            }
        }

        // statements that have no result set do not return metadata
        if ($this->_meta !== false) {

            // get the column names that will result
            $this->_keys = array();
            foreach ($this->_meta->fetch_fields() as $col) {
                $this->_keys[] = $this->_adapter->foldCase($col->name);
            }

            // set up a binding space for result variables
            $this->_values = array_fill(0, count($this->_keys), null);

            // set up references to the result binding space.
            // just passing $this->_values in the call_user_func_array()
            // below won't work, you need references.
            $refs = array();
            foreach ($this->_values as $i => &$f) {
                $refs[$i] = &$f;
            }

            $this->_stmt->store_result();
            // bind to the result variables
            call_user_func_array(
                array($this->_stmt, 'bind_result'),
                $this->_values
            );
        }
        return $retval;
    }


    /**
     * Fetches a row from the result set.
     *
     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
     * @param int $cursor OPTIONAL Absolute, relative, or other.
     * @param int $offset OPTIONAL Number for absolute or relative cursors.
     * @return mixed Array, object, or scalar depending on fetch mode.
     * @throws Zend_Db_Statement_Mysqli_Exception
     */
    public function fetch($style = null, $cursor = null, $offset = null)
    {
        if (!$this->_stmt) {
            return false;
        }
        // fetch the next result
        $retval = $this->_stmt->fetch();
        switch ($retval) {
        case null: // end of data
        case false: // error occurred
            $this->_stmt->reset();
            return $retval;
        default:
            // fallthrough
        }

        // make sure we have a fetch mode
        if ($style === null) {
            $style = $this->_fetchMode;
        }

        // dereference the result values, otherwise things like fetchAll()
        // return the same values for every entry (because of the reference).
        $values = array();
        foreach ($this->_values as $key => $val) {
            $values[] = $val;
        }

        $row = false;
        switch ($style) {
            case Zend_Db::FETCH_NUM:
                $row = $values;
                break;
            case Zend_Db::FETCH_ASSOC:
                $row = array_combine($this->_keys, $values);
                break;
            case Zend_Db::FETCH_BOTH:
                $assoc = array_combine($this->_keys, $values);
                $row = array_merge($values, $assoc);
                break;
            case Zend_Db::FETCH_OBJ:
                $row = (object) array_combine($this->_keys, $values);
                break;
            case Zend_Db::FETCH_BOUND:
                $assoc = array_combine($this->_keys, $values);
                $row = array_merge($values, $assoc);
                return $this->_fetchBound($row);
                break;
            default:
                /**
                 * @see Zend_Db_Statement_Mysqli_Exception
                 */
                require_once 'Zend/Db/Statement/Mysqli/Exception.php';
                throw new Zend_Db_Statement_Mysqli_Exception("Invalid fetch mode '$style' specified");
                break;
        }
        return $row;
    }

    /**
     * Retrieves the next rowset (result set) for a SQL statement that has
     * multiple result sets.  An example is a stored procedure that returns
     * the results of multiple queries.
     *
     * @return bool
     * @throws Zend_Db_Statement_Mysqli_Exception
     */
    public function nextRowset()
    {
        /**
         * @see Zend_Db_Statement_Mysqli_Exception
         */
        require_once 'Zend/Db/Statement/Mysqli/Exception.php';
        throw new Zend_Db_Statement_Mysqli_Exception(__FUNCTION__.'() is not implemented');
    }

    /**
     * Returns the number of rows affected by the execution of the
     * last INSERT, DELETE, or UPDATE statement executed by this
     * statement object.
     *
     * @return int     The number of rows affected.
     */
    public function rowCount()
    {
        if (!$this->_adapter) {
            return false;
        }
        $mysqli = $this->_adapter->getConnection();
        return $mysqli->affected_rows;
    }

}PKpG[V`r11!Db/Statement/Mysqli/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Statement_Exception
 */
require_once 'Zend/Db/Statement/Exception.php';

/**
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Statement_Mysqli_Exception extends Zend_Db_Statement_Exception
{
}

PKpG[ſ���Db/Statement/Db2/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Statement_Exception
 */
require_once 'Zend/Db/Statement/Exception.php';

/**
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Statement_Db2_Exception extends Zend_Db_Statement_Exception
{
    /**
     * @var string
     */
    protected $code = '00000';

    /**
     * @var string
     */
    protected $message = 'unknown exception';

    /**
     * @param string $msg
     * @param string $state
     */
    function __construct($msg = 'unknown exception', $state = '00000')
    {
        $this->message = $msg;
        $this->code = $state;
    }

}

PKpG[��VPrrDb/Table.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Table_Abstract
 */
require_once 'Zend/Db/Table/Abstract.php';

/**
 * Class for SQL table interface.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @deprecated since 0.9
 */
abstract class Zend_Db_Table extends Zend_Db_Table_Abstract
{
}
PKpG[���o++Db/Select/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Exception
 */
require_once 'Zend/Db/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Select_Exception extends Zend_Db_Exception
{
}

PKpG[��
0
0
Db/Expr.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Expr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Expr.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * Class for SQL SELECT fragments.
 *
 * This class simply holds a string, so that fragments of SQL statements can be
 * distinguished from identifiers and values that should be implicitly quoted
 * when interpolated into SQL statements.
 *
 * For example, when specifying a primary key value when inserting into a new
 * row, some RDBMS brands may require you to use an expression to generate the
 * new value of a sequence.  If this expression is treated as an identifier,
 * it will be quoted and the expression will not be evaluated.  Another example
 * is that you can use Zend_Db_Expr in the Zend_Db_Select::order() method to
 * order by an expression instead of simply a column name.
 *
 * The way this works is that in each context in which a column name can be
 * specified to methods of Zend_Db classes, if the value is an instance of
 * Zend_Db_Expr instead of a plain string, then the expression is not quoted.
 * If it is a plain string, it is assumed to be a plain column name.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Expr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Expr
{
    /**
     * Storage for the SQL expression.
     *
     * @var string
     */
    protected $_expression;

    /**
     * Instantiate an expression, which is just a string stored as
     * an instance member variable.
     *
     * @param string $expression The string containing a SQL expression.
     */
    public function __construct($expression)
    {
        $this->_expression = (string) $expression;
    }

    /**
     * @return string The string of the SQL expression stored in this object.
     */
    public function __toString()
    {
        return $this->_expression;
    }

}
PKpG[�4
OK6K6Db/Profiler.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Profiler.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Profiler
{

    /**
     * A connection operation or selecting a database.
     */
    const CONNECT = 1;

    /**
     * Any general database query that does not fit into the other constants.
     */
    const QUERY = 2;

    /**
     * Adding new data to the database, such as SQL's INSERT.
     */
    const INSERT = 4;

    /**
     * Updating existing information in the database, such as SQL's UPDATE.
     *
     */
    const UPDATE = 8;

    /**
     * An operation related to deleting data in the database,
     * such as SQL's DELETE.
     */
    const DELETE = 16;

    /**
     * Retrieving information from the database, such as SQL's SELECT.
     */
    const SELECT = 32;

    /**
     * Transactional operation, such as start transaction, commit, or rollback.
     */
    const TRANSACTION = 64;


    /**
     * Array of Zend_Db_Profiler_Query objects.
     *
     * @var array
     */
    protected $_queryProfiles = array();

    /**
     * Stores enabled state of the profiler.  If set to False, calls to
     * queryStart() will simply be ignored.
     *
     * @var boolean
     */
    protected $_enabled = false;

    /**
     * Stores the number of seconds to filter.  NULL if filtering by time is
     * disabled.  If an integer is stored here, profiles whose elapsed time
     * is less than this value in seconds will be unset from
     * the self::$_queryProfiles array.
     *
     * @var integer
     */
    protected $_filterElapsedSecs = null;

    /**
     * Logical OR of any of the filter constants.  NULL if filtering by query
     * type is disable.  If an integer is stored here, it is the logical OR of
     * any of the query type constants.  When the query ends, if it is not
     * one of the types specified, it will be unset from the
     * self::$_queryProfiles array.
     *
     * @var integer
     */
    protected $_filterTypes = null;

    /**
     * Class constructor.  The profiler is disabled by default unless it is
     * specifically enabled by passing in $enabled here or calling setEnabled().
     *
     * @param  boolean $enabled
     * @return void
     */
    public function __construct($enabled = false)
    {
        $this->setEnabled($enabled);
    }

    /**
     * Enable or disable the profiler.  If $enable is false, the profiler
     * is disabled and will not log any queries sent to it.
     *
     * @param  boolean $enable
     * @return Zend_Db_Profiler Provides a fluent interface
     */
    public function setEnabled($enable)
    {
        $this->_enabled = (boolean) $enable;

        return $this;
    }

    /**
     * Get the current state of enable.  If True is returned,
     * the profiler is enabled.
     *
     * @return boolean
     */
    public function getEnabled()
    {
        return $this->_enabled;
    }

    /**
     * Sets a minimum number of seconds for saving query profiles.  If this
     * is set, only those queries whose elapsed time is equal or greater than
     * $minimumSeconds will be saved.  To save all queries regardless of
     * elapsed time, set $minimumSeconds to null.
     *
     * @param  integer $minimumSeconds OPTIONAL
     * @return Zend_Db_Profiler Provides a fluent interface
     */
    public function setFilterElapsedSecs($minimumSeconds = null)
    {
        if (null === $minimumSeconds) {
            $this->_filterElapsedSecs = null;
        } else {
            $this->_filterElapsedSecs = (integer) $minimumSeconds;
        }

        return $this;
    }

    /**
     * Returns the minimum number of seconds for saving query profiles, or null if
     * query profiles are saved regardless of elapsed time.
     *
     * @return integer|null
     */
    public function getFilterElapsedSecs()
    {
        return $this->_filterElapsedSecs;
    }

    /**
     * Sets the types of query profiles to save.  Set $queryType to one of
     * the Zend_Db_Profiler::* constants to only save profiles for that type of
     * query.  To save more than one type, logical OR them together.  To
     * save all queries regardless of type, set $queryType to null.
     *
     * @param  integer $queryTypes OPTIONAL
     * @return Zend_Db_Profiler Provides a fluent interface
     */
    public function setFilterQueryType($queryTypes = null)
    {
        $this->_filterTypes = $queryTypes;

        return $this;
    }

    /**
     * Returns the types of query profiles saved, or null if queries are saved regardless
     * of their types.
     *
     * @return integer|null
     * @see    Zend_Db_Profiler::setFilterQueryType()
     */
    public function getFilterQueryType()
    {
        return $this->_filterTypes;
    }

    /**
     * Clears the history of any past query profiles.  This is relentless
     * and will even clear queries that were started and may not have
     * been marked as ended.
     *
     * @return Zend_Db_Profiler Provides a fluent interface
     */
    public function clear()
    {
        $this->_queryProfiles = array();

        return $this;
    }

    /**
     * @param  integer $queryId
     * @return integer or null
     */
    public function queryClone(Zend_Db_Profiler_Query $query)
    {
        $this->_queryProfiles[] = clone $query;

        end($this->_queryProfiles);

        return key($this->_queryProfiles);
    }

    /**
     * Starts a query.  Creates a new query profile object (Zend_Db_Profiler_Query)
     * and returns the "query profiler handle".  Run the query, then call
     * queryEnd() and pass it this handle to make the query as ended and
     * record the time.  If the profiler is not enabled, this takes no
     * action and immediately returns null.
     *
     * @param  string  $queryText   SQL statement
     * @param  integer $queryType   OPTIONAL Type of query, one of the Zend_Db_Profiler::* constants
     * @return integer|null
     */
    public function queryStart($queryText, $queryType = null)
    {
        if (!$this->_enabled) {
            return null;
        }

        // make sure we have a query type
        if (null === $queryType) {
            switch (strtolower(substr($queryText, 0, 6))) {
                case 'insert':
                    $queryType = self::INSERT;
                    break;
                case 'update':
                    $queryType = self::UPDATE;
                    break;
                case 'delete':
                    $queryType = self::DELETE;
                    break;
                case 'select':
                    $queryType = self::SELECT;
                    break;
                default:
                    $queryType = self::QUERY;
                    break;
            }
        }

        /**
         * @see Zend_Db_Profiler_Query
         */
        require_once 'Zend/Db/Profiler/Query.php';
        $this->_queryProfiles[] = new Zend_Db_Profiler_Query($queryText, $queryType);

        end($this->_queryProfiles);

        return key($this->_queryProfiles);
    }

    /**
     * Ends a query.  Pass it the handle that was returned by queryStart().
     * This will mark the query as ended and save the time.
     *
     * @param  integer $queryId
     * @throws Zend_Db_Profiler_Exception
     * @return void
     */
    public function queryEnd($queryId)
    {
        // Don't do anything if the Zend_Db_Profiler is not enabled.
        if (!$this->_enabled) {
            return;
        }

        // Check for a valid query handle.
        if (!isset($this->_queryProfiles[$queryId])) {
            /**
             * @see Zend_Db_Profiler_Exception
             */
            require_once 'Zend/Db/Profiler/Exception.php';
            throw new Zend_Db_Profiler_Exception("Profiler has no query with handle '$queryId'.");
        }

        $qp = $this->_queryProfiles[$queryId];

        // Ensure that the query profile has not already ended
        if ($qp->hasEnded()) {
            /**
             * @see Zend_Db_Profiler_Exception
             */
            require_once 'Zend/Db/Profiler/Exception.php';
            throw new Zend_Db_Profiler_Exception("Query with profiler handle '$queryId' has already ended.");
        }

        // End the query profile so that the elapsed time can be calculated.
        $qp->end();

        /**
         * If filtering by elapsed time is enabled, only keep the profile if
         * it ran for the minimum time.
         */
        if (null !== $this->_filterElapsedSecs && $qp->getElapsedSecs() < $this->_filterElapsedSecs) {
            unset($this->_queryProfiles[$queryId]);
            return;
        }

        /**
         * If filtering by query type is enabled, only keep the query if
         * it was one of the allowed types.
         */
        if (null !== $this->_filterTypes && !($qp->getQueryType() & $this->_filterTypes)) {
            unset($this->_queryProfiles[$queryId]);
            return;
        }
    }

    /**
     * Get a profile for a query.  Pass it the same handle that was returned
     * by queryStart() and it will return a Zend_Db_Profiler_Query object.
     *
     * @param  integer $queryId
     * @throws Zend_Db_Profiler_Exception
     * @return Zend_Db_Profiler_Query
     */
    public function getQueryProfile($queryId)
    {
        if (!array_key_exists($queryId, $this->_queryProfiles)) {
            /**
             * @see Zend_Db_Profiler_Exception
             */
            require_once 'Zend/Db/Profiler/Exception.php';
            throw new Zend_Db_Profiler_Exception("Query handle '$queryId' not found in profiler log.");
        }

        return $this->_queryProfiles[$queryId];
    }

    /**
     * Get an array of query profiles (Zend_Db_Profiler_Query objects).  If $queryType
     * is set to one of the Zend_Db_Profiler::* constants then only queries of that
     * type will be returned.  Normally, queries that have not yet ended will
     * not be returned unless $showUnfinished is set to True.  If no
     * queries were found, False is returned. The returned array is indexed by the query
     * profile handles.
     *
     * @param  integer $queryType
     * @param  boolean $showUnfinished
     * @return array|false
     */
    public function getQueryProfiles($queryType = null, $showUnfinished = false)
    {
        $queryProfiles = array();
        foreach ($this->_queryProfiles as $key => $qp) {
            if ($queryType === null) {
                $condition = true;
            } else {
                $condition = ($qp->getQueryType() & $queryType);
            }

            if (($qp->hasEnded() || $showUnfinished) && $condition) {
                $queryProfiles[$key] = $qp;
            }
        }

        if (empty($queryProfiles)) {
            $queryProfiles = false;
        }

        return $queryProfiles;
    }

    /**
     * Get the total elapsed time (in seconds) of all of the profiled queries.
     * Only queries that have ended will be counted.  If $queryType is set to
     * one or more of the Zend_Db_Profiler::* constants, the elapsed time will be calculated
     * only for queries of the given type(s).
     *
     * @param  integer $queryType OPTIONAL
     * @return float
     */
    public function getTotalElapsedSecs($queryType = null)
    {
        $elapsedSecs = 0;
        foreach ($this->_queryProfiles as $key => $qp) {
            if (null === $queryType) {
                $condition = true;
            } else {
                $condition = ($qp->getQueryType() & $queryType);
            }
            if (($qp->hasEnded()) && $condition) {
                $elapsedSecs += $qp->getElapsedSecs();
            }
        }
        return $elapsedSecs;
    }

    /**
     * Get the total number of queries that have been profiled.  Only queries that have ended will
     * be counted.  If $queryType is set to one of the Zend_Db_Profiler::* constants, only queries of
     * that type will be counted.
     *
     * @param  integer $queryType OPTIONAL
     * @return integer
     */
    public function getTotalNumQueries($queryType = null)
    {
        if (null === $queryType) {
            return count($this->_queryProfiles);
        }

        $numQueries = 0;
        foreach ($this->_queryProfiles as $qp) {
            if ($qp->hasEnded() && ($qp->getQueryType() & $queryType)) {
                $numQueries++;
            }
        }

        return $numQueries;
    }

    /**
     * Get the Zend_Db_Profiler_Query object for the last query that was run, regardless if it has
     * ended or not.  If the query has not ended, its end time will be null.  If no queries have
     * been profiled, false is returned.
     *
     * @return Zend_Db_Profiler_Query|false
     */
    public function getLastQueryProfile()
    {
        if (empty($this->_queryProfiles)) {
            return false;
        }

        end($this->_queryProfiles);

        return current($this->_queryProfiles);
    }

}

PKpG[n�_�>>Db/Table/Select/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Exception
 */
require_once 'Zend/Db/Select/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Db_Table_Select_Exception extends Zend_Db_Select_Exception
{
}

PKpG[���''Db/Table/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Exception
 */
require_once 'Zend/Db/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Exception extends Zend_Db_Exception
{
}

PKpG[�tr�??Db/Table/Rowset/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Table_Exception
 */
require_once 'Zend/Db/Table/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Rowset_Exception extends Zend_Db_Table_Exception
{
}
PKpG[JBI))Db/Table/Rowset/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 5896 2007-07-27 20:04:24Z bkarwin $
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Table_Rowset_Abstract implements SeekableIterator, Countable, ArrayAccess
{
    /**
     * The original data for each row.
     *
     * @var array
     */
    protected $_data = array();

    /**
     * Zend_Db_Table_Abstract object.
     *
     * @var Zend_Db_Table_Abstract
     */
    protected $_table;

    /**
     * Connected is true if we have a reference to a live
     * Zend_Db_Table_Abstract object.
     * This is false after the Rowset has been deserialized.
     *
     * @var boolean
     */
    protected $_connected = true;

    /**
     * Zend_Db_Table_Abstract class name.
     *
     * @var string
     */
    protected $_tableClass;

    /**
     * Zend_Db_Table_Row_Abstract class name.
     *
     * @var string
     */
    protected $_rowClass = 'Zend_Db_Table_Row';

    /**
     * Iterator pointer.
     *
     * @var integer
     */
    protected $_pointer = 0;

    /**
     * How many data rows there are.
     *
     * @var integer
     */
    protected $_count;

    /**
     * Collection of instantiated Zend_Db_Table_Row objects.
     *
     * @var array
     */
    protected $_rows = array();

    /**
     * @var boolean
     */
    protected $_stored = false;

    /**
     * @var boolean
     */
    protected $_readOnly = false;

    /**
     * Constructor.
     *
     * @param array $config
     */
    public function __construct(array $config)
    {
        if (isset($config['table'])) {
            $this->_table      = $config['table'];
            $this->_tableClass = get_class($this->_table);
        }
        if (isset($config['rowClass'])) {
            $this->_rowClass   = $config['rowClass'];
        }
        @Zend_Loader::loadClass($this->_rowClass);
        if (isset($config['data'])) {
            $this->_data       = $config['data'];
        }
        if (isset($config['readOnly'])) {
            $this->_readOnly   = $config['readOnly'];
        }
        if (isset($config['stored'])) {
            $this->_stored     = $config['stored'];
        }

        // set the count of rows
        $this->_count = count($this->_data);
        
        $this->init();
    }

    /**
     * Store data, class names, and state in serialized object
     *
     * @return array
     */
    public function __sleep()
    {
        return array('_data', '_tableClass', '_rowClass', '_pointer', '_count', '_rows', '_stored',
                     '_readOnly');
    }

    /**
     * Setup to do on wakeup.
     * A de-serialized Rowset should not be assumed to have access to a live
     * database connection, so set _connected = false.
     *
     * @return void
     */
    public function __wakeup()
    {
        $this->_connected = false;
    }

    /**
     * Initialize object
     *
     * Called from {@link __construct()} as final step of object instantiation.
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Return the connected state of the rowset.
     *
     * @return boolean
     */
    public function isConnected()
    {
        return $this->_connected;
    }

    /**
     * Returns the table object, or null if this is disconnected rowset
     *
     * @return Zend_Db_Table_Abstract
     */
    public function getTable()
    {
        return $this->_table;
    }

    /**
     * Set the table object, to re-establish a live connection
     * to the database for a Rowset that has been de-serialized.
     *
     * @param Zend_Db_Table_Abstract $table
     * @return boolean
     * @throws Zend_Db_Table_Row_Exception
     */
    public function setTable(Zend_Db_Table_Abstract $table)
    {
        $this->_table = $table;
        $this->_connected = false;
        // @todo This works only if we have iterated through
        // the result set once to instantiate the rows.
        foreach ($this as $row) {
            $connected = $row->setTable($table);
            if ($connected == true) {
                $this->_connected = true;
            }
        }
        return $this->_connected;
    }

    /**
     * Query the class name of the Table object for which this
     * Rowset was created.
     *
     * @return string
     */
    public function getTableClass()
    {
        return $this->_tableClass;
    }

    /**
     * Rewind the Iterator to the first element.
     * Similar to the reset() function for arrays in PHP.
     * Required by interface Iterator.
     *
     * @return Zend_Db_Table_Rowset_Abstract Fluent interface.
     */
    public function rewind()
    {
        $this->_pointer = 0;
        return $this;
    }

    /**
     * Return the current element.
     * Similar to the current() function for arrays in PHP
     * Required by interface Iterator.
     *
     * @return Zend_Db_Table_Row_Abstract current element from the collection
     */
    public function current()
    {
        if ($this->valid() === false) {
            return null;
        }

        // do we already have a row object for this position?
        if (empty($this->_rows[$this->_pointer])) {
            $this->_rows[$this->_pointer] = new $this->_rowClass(
                array(
                    'table'    => $this->_table,
                    'data'     => $this->_data[$this->_pointer],
                    'stored'   => $this->_stored,
                    'readOnly' => $this->_readOnly
                )
            );
        }

        // return the row object
        return $this->_rows[$this->_pointer];
    }

    /**
     * Return the identifying key of the current element.
     * Similar to the key() function for arrays in PHP.
     * Required by interface Iterator.
     *
     * @return int
     */
    public function key()
    {
        return $this->_pointer;
    }

    /**
     * Move forward to next element.
     * Similar to the next() function for arrays in PHP.
     * Required by interface Iterator.
     *
     * @return void
     */
    public function next()
    {
        ++$this->_pointer;
    }

    /**
     * Check if there is a current element after calls to rewind() or next().
     * Used to check if we've iterated to the end of the collection.
     * Required by interface Iterator.
     *
     * @return bool False if there's nothing more to iterate over
     */
    public function valid()
    {
        return $this->_pointer < $this->_count;
    }

    /**
     * Returns the number of elements in the collection.
     *
     * Implements Countable::count()
     *
     * @return int
     */
    public function count()
    {
        return $this->_count;
    }
    
    /**
     * Take the Iterator to position $position
     * Required by interface SeekableIterator.
     *
     * @param int $position the position to seek to
     * @return Zend_Db_Table_Rowset_Abstract
     * @throws Zend_Db_Table_Rowset_Exception
     */
    public function seek($position)
    {
        $position = (int) $position;
        if ($position < 0 || $position > $this->_count) {
            require_once 'Zend/Db/Table/Rowset/Exception.php';
            throw new Zend_Db_Table_Rowset_Exception("Illegal index $position");
        }
        $this->_pointer = $position;
        return $this;        
    }
    
    /**
     * Check if an offset exists
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return isset($this->_data[(int) $offset]);
    }
    
    /**
     * Get the row for the given offset
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     * @return Zend_Db_Table_Row_Abstract
     */
    public function offsetGet($offset)
    {
        $this->_pointer = (int) $offset;

        return $this->current();
    }
    
    /**
     * Does nothing
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     * @param mixed $value
     */
    public function offsetSet($offset, $value)
    {
    }
    
    /**
     * Does nothing
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     */
    public function offsetUnset($offset)
    {
    }

    /**
     * Returns a Zend_Db_Table_Row from a known position into the Iterator
     *
     * @param int $position the position of the row expected
     * @param bool $seek wether or not seek the iterator to that position after
     * @return Zend_Db_Table_Row
     * @throws Zend_Db_Table_Rowset_Exception
     */
    public function getRow($position, $seek = false)
    {
        $key = $this->key();
        try {
            $this->seek($position);
            $row = $this->current();
        } catch (Zend_Db_Table_Rowset_Exception $e) {
            require_once 'Zend/Db/Table/Rowset/Exception.php';
            throw new Zend_Db_Table_Rowset_Exception('No row could be found at position ' . (int) $position);
        }
        if ($seek == false) {
            $this->seek($key);
        }
        return $row;
    }

    /**
     * Returns all data as an array.
     *
     * Updates the $_data property with current row object values.
     *
     * @return array
     */
    public function toArray()
    {
        // @todo This works only if we have iterated through
        // the result set once to instantiate the rows.
        foreach ($this->_rows as $i => $row) {
            $this->_data[$i] = $row->toArray();
        }
        return $this->_data;
    }

}
PKpG[�b�Db/Table/Select.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Select.php 5308 2007-06-14 17:18:45Z bkarwin $
 */


/**
 * @see Zend_Db_Select
 */
require_once 'Zend/Db/Select.php';


/**
 * @see Zend_Db_Table_Abstract
 */
require_once 'Zend/Db/Table/Abstract.php';


/**
 * Class for SQL SELECT query manipulation for the Zend_Db_Table component.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Select extends Zend_Db_Select
{
    /**
     * Table schema for parent Zend_Db_Table.
     *
     * @var array
     */
    protected $_info;

    /**
     * Table integrity override.
     *
     * @var array
     */
    protected $_integrityCheck = true;

    /**
     * Table instance that created this select object
     *
     * @var Zend_Db_Table_Abstract
     */
    protected $_table;
    
    /**
     * Class constructor
     *
     * @param Zend_Db_Table_Abstract $adapter
     */
    public function __construct(Zend_Db_Table_Abstract $table)
    {
        parent::__construct($table->getAdapter());
        $this->setTable($table);
    }

    /**
     * Return the table that created this select object
     *
     * @return Zend_Db_Table_Abstract
     */
    public function getTable()
    {
        return $this->_table;
    }
    
    /**
     * Sets the primary table name and retrieves the table schema.
     *
     * @param Zend_Db_Table_Abstract $adapter
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function setTable(Zend_Db_Table_Abstract $table)
    {
        $this->_adapter = $table->getAdapter();
        $this->_info    = $table->info();
        $this->_table   = $table;
        
        return $this;
    }

    /**
     * Sets the integrity check flag.
     *
     * Setting this flag to false skips the checks for table joins, allowing
     * 'hybrid' table rows to be created.
     *
     * @param Zend_Db_Table_Abstract $adapter
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function setIntegrityCheck($flag = true)
    {
        $this->_integrityCheck = $flag;
        return $this;
    }

    /**
     * Tests query to determine if expressions or aliases columns exist.
     *
     * @return boolean
     */
    public function isReadOnly()
    {
        $readOnly = false;
        $fields   = $this->getPart(Zend_Db_Table_Select::COLUMNS);
        $cols     = $this->_info[Zend_Db_Table_Abstract::COLS];

        if (!count($fields)) {
            return $readOnly;
        }

        foreach ($fields as $columnEntry) {
            $column = $columnEntry[1];
            $alias = $columnEntry[2];

            if ($alias !== null) {
                $column = $alias;
            }
            
            switch (true) {
                case ($column == self::SQL_WILDCARD):
                    break;

                case ($column instanceof Zend_Db_Expr):
                case (!in_array($column, $cols)):
                    $readOnly = true;
                    break 2;
            }
        }

        return $readOnly;
    }

    /**
     * Adds a FROM table and optional columns to the query.
     *
     * The table name can be expressed
     *
     * @param  array|string|Zend_Db_Expr|Zend_Db_Table_Abstract $name The table name or an 
                                                                      associative array relating 
                                                                      table name to correlation
                                                                      name.
     * @param  array|string|Zend_Db_Expr $cols The columns to select from this table.
     * @param  string $schema The schema name to specify, if any.
     * @return Zend_Db_Table_Select This Zend_Db_Table_Select object.
     */
    public function from($name, $cols = self::SQL_WILDCARD, $schema = null)
    {
        if ($name instanceof Zend_Db_Table_Abstract) {
            $info = $name->info();
            $name = $info[Zend_Db_Table_Abstract::NAME];
            if (isset($info[Zend_Db_Table_Abstract::SCHEMA])) {
                $schema = $info[Zend_Db_Table_Abstract::SCHEMA];
            }
        }

        return $this->joinInner($name, null, $cols, $schema);
    }

    /**
     * Performs a validation on the select query before passing back to the parent class.
     * Ensures that only columns from the primary Zend_Db_Table are returned in the result.
     *
     * @return string This object as a SELECT string.
     */
    public function assemble()
    {
        $fields  = $this->getPart(Zend_Db_Table_Select::COLUMNS);
        $primary = $this->_info[Zend_Db_Table_Abstract::NAME];
        $schema  = $this->_info[Zend_Db_Table_Abstract::SCHEMA];

        // If no fields are specified we assume all fields from primary table
        if (!count($fields)) {
            $this->from($primary, self::SQL_WILDCARD, $schema);
            $fields = $this->getPart(Zend_Db_Table_Select::COLUMNS);
        }

        $from = $this->getPart(Zend_Db_Table_Select::FROM);

        if ($this->_integrityCheck !== false) {
            foreach ($fields as $columnEntry) {
                list($table, $column) = $columnEntry;
                
                // Check each column to ensure it only references the primary table
                if ($column) {
                    if (!isset($from[$table]) || $from[$table]['tableName'] != $primary) {
                        require_once 'Zend/Db/Table/Select/Exception.php';
                        throw new Zend_Db_Table_Select_Exception('Select query cannot join with another table');
                    }
                }
            }
        }

        return parent::assemble();
    }
}
PKpG[ܰ�==Db/Table/Row/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Db_Table_Exception
 */
require_once 'Zend/Db/Table/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Row_Exception extends Zend_Db_Table_Exception
{
}

PKpG["*{�N�N�Db/Table/Row/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 6332 2007-09-13 00:35:08Z bkarwin $
 */

/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Table_Row_Abstract implements ArrayAccess
{

    /**
     * The data for each column in the row (column_name => value).
     * The keys must match the physical names of columns in the
     * table for which this row is defined.
     *
     * @var array
     */
    protected $_data = array();

    /**
     * This is set to a copy of $_data when the data is fetched from
     * a database, specified as a new tuple in the constructor, or
     * when dirty data is posted to the database with save().
     *
     * @var array
     */
    protected $_cleanData = array();

    /**
     * Tracks columns where data has been updated. Allows more specific insert and
     * update operations.
     *
     * @var array
     */
    protected $_modifiedFields = array();

    /**
     * Zend_Db_Table_Abstract parent class or instance.
     *
     * @var Zend_Db_Table_Abstract
     */
    protected $_table = null;

    /**
     * Connected is true if we have a reference to a live
     * Zend_Db_Table_Abstract object.
     * This is false after the Rowset has been deserialized.
     *
     * @var boolean
     */
    protected $_connected = true;

    /**
     * A row is marked read only if it contains columns that are not physically represented within
     * the database schema (e.g. evaluated columns/Zend_Db_Expr columns). This can also be passed
     * as a run-time config options as a means of protecting row data.
     *
     * @var boolean
     */
    protected $_readOnly = false;

    /**
     * Name of the class of the Zend_Db_Table_Abstract object.
     *
     * @var string
     */
    protected $_tableClass = null;

    /**
     * Primary row key(s).
     *
     * @var array
     */
    protected $_primary;

    /**
     * Constructor.
     *
     * Supported params for $config are:-
     * - table       = class name or object of type Zend_Db_Table_Abstract
     * - data        = values of columns in this row.
     *
     * @param  array $config OPTIONAL Array of user-specified config options.
     * @return void
     * @throws Zend_Db_Table_Row_Exception
     */
    public function __construct(array $config = array())
    {
        if (isset($config['table']) && $config['table'] instanceof Zend_Db_Table_Abstract) {
            $this->_table = $config['table'];
            $this->_tableClass = get_class($this->_table);
        }

        if (isset($config['data'])) {
            if (!is_array($config['data'])) {
                require_once 'Zend/Db/Table/Row/Exception.php';
                throw new Zend_Db_Table_Row_Exception('Data must be an array');
            }
            $this->_data = $config['data'];
        }
        if (isset($config['stored']) && $config['stored'] === true) {
            $this->_cleanData = $this->_data;
        }

        if (isset($config['readOnly']) && $config['readOnly'] === true) {
            $this->setReadOnly(true);
        }

        // Retrieve primary keys from table schema
        if (($table = $this->_getTable())) {
            $info = $table->info();
            $this->_primary = (array) $info['primary'];
        }

        $this->init();
    }

    /**
     * Transform a column name from the user-specified form
     * to the physical form used in the database.
     * You can override this method in a custom Row class
     * to implement column name mappings, for example inflection.
     *
     * @param string $columnName Column name given.
     * @return string The column name after transformation applied (none by default).
     * @throws Zend_Db_Table_Row_Exception if the $columnName is not a string.
     */
    protected function _transformColumn($columnName)
    {
        if (!is_string($columnName)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('Specified column is not a string');
        }
        // Perform no transformation by default
        return $columnName;
    }

    /**
     * Retrieve row field value
     *
     * @param  string $columnName The user-specified column name.
     * @return string             The corresponding column value.
     * @throws Zend_Db_Table_Row_Exception if the $columnName is not a column in the row.
     */
    public function __get($columnName)
    {
        $columnName = $this->_transformColumn($columnName);
        if (!array_key_exists($columnName, $this->_data)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Specified column \"$columnName\" is not in the row");
        }
        return $this->_data[$columnName];
    }

    /**
     * Set row field value
     *
     * @param  string $columnName The column key.
     * @param  mixed  $value      The value for the property.
     * @return void
     * @throws Zend_Db_Table_Row_Exception
     */
    public function __set($columnName, $value)
    {
        $columnName = $this->_transformColumn($columnName);
        if (!array_key_exists($columnName, $this->_data)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Specified column \"$columnName\" is not in the row");
        }
        $this->_data[$columnName] = $value;
        $this->_modifiedFields[$columnName] = true;
    }

    /**
     * Test existence of row field
     *
     * @param  string  $columnName   The column key.
     * @return boolean
     */
    public function __isset($columnName)
    {
        $columnName = $this->_transformColumn($columnName);
        return array_key_exists($columnName, $this->_data);
    }

    /**
     * Store table, primary key and data in serialized object
     *
     * @return array
     */
    public function __sleep()
    {
        return array('_tableClass', '_primary', '_data', '_cleanData', '_readOnly' ,'_modifiedFields');
    }

    /**
     * Setup to do on wakeup.
     * A de-serialized Row should not be assumed to have access to a live
     * database connection, so set _connected = false.
     *
     * @return void
     */
    public function __wakeup()
    {
        $this->_connected = false;
    }

    /**
     * Proxy to __isset
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     * @return boolean
     */
    public function offsetExists($offset)
    {
        return $this->__isset($offset);
    }

    /**
     * Proxy to __get
     * Required by the ArrayAccess implementation
     *
     * @param string $offset
     * @return string
     */
     public function offsetGet($offset)
     {
         return $this->__get($offset);
     }

     /**
      * Proxy to __set
      * Required by the ArrayAccess implementation
      *
      * @param string $offset
      * @param mixed $value
      */
     public function offsetSet($offset, $value)
     {
         $this->__set($offset, $value);
     }

     /**
      * Does nothing
      * Required by the ArrayAccess implementation
      *
      * @param string $offset
      */
     public function offsetUnset($offset)
     {
     }

    /**
     * Initialize object
     *
     * Called from {@link __construct()} as final step of object instantiation.
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Returns the table object, or null if this is disconnected row
     *
     * @return Zend_Db_Table_Abstract|null
     */
    public function getTable()
    {
        return $this->_table;
    }

    /**
     * Set the table object, to re-establish a live connection
     * to the database for a Row that has been de-serialized.
     *
     * @param Zend_Db_Table_Abstract $table
     * @return boolean
     * @throws Zend_Db_Table_Row_Exception
     */
    public function setTable(Zend_Db_Table_Abstract $table = null)
    {
        if ($table == null) {
            $this->_table = null;
            $this->_connected = false;
            return false;
        }

        $tableClass = get_class($table);
        if (! $table instanceof $this->_tableClass) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("The specified Table is of class $tableClass, expecting class to be instance of $this->_tableClass");
        }

        $this->_table = $table;
        $this->_tableClass = $tableClass;

        $info = $this->_table->info();

        if ($info['cols'] != array_keys($this->_data)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('The specified Table does not have the same columns as the Row');
        }

        if (! array_intersect((array) $this->_primary, $info['primary']) == (array) $this->_primary) {

            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("The specified Table '$tableClass' does not have the same primary key as the Row");
        }

        $this->_connected = true;
        return true;
    }

    /**
     * Query the class name of the Table object for which this
     * Row was created.
     *
     * @return string
     */
    public function getTableClass()
    {
        return $this->_tableClass;
    }

    /**
     * Test the connected status of the row.
     *
     * @return boolean
     */
    public function isConnected()
    {
        return $this->_connected;
    }

    /**
     * Test the read-only status of the row.
     *
     * @return boolean
     */
    public function isReadOnly()
    {
        return $this->_readOnly;
    }

    /**
     * Set the read-only status of the row.
     *
     * @param boolean $flag
     * @return boolean
     */
    public function setReadOnly($flag)
    {
        $this->_readOnly = (bool) $flag;
    }

    /**
     * Returns an instance of the parent table's Zend_Db_Table_Select object.
     *
     * @return Zend_Db_Table_Select
     */
    public function select()
    {
        return $this->getTable()->select();
    }

    /**
     * Saves the properties to the database.
     *
     * This performs an intelligent insert/update, and reloads the
     * properties with fresh data from the table on success.
     *
     * @return mixed The primary key value(s), as an associative array if the
     *     key is compound, or a scalar if the key is single-column.
     */
    public function save()
    {
        /**
         * If the _cleanData array is empty,
         * this is an INSERT of a new row.
         * Otherwise it is an UPDATE.
         */
        if (empty($this->_cleanData)) {
            return $this->_doInsert();
        } else {
            return $this->_doUpdate();
        }
    }

    /**
     * @return mixed The primary key value(s), as an associative array if the
     *     key is compound, or a scalar if the key is single-column.
     */
    protected function _doInsert()
    {
        /**
         * A read-only row cannot be saved.
         */
        if ($this->_readOnly === true) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('This row has been marked read-only');
        }

        /**
         * Run pre-INSERT logic
         */
        $this->_insert();

        /**
         * Execute the INSERT (this may throw an exception)
         */
        $data = array_intersect_key($this->_data, $this->_modifiedFields);
        $primaryKey = $this->_getTable()->insert($data);

        /**
         * Normalize the result to an array indexed by primary key column(s).
         * The table insert() method may return a scalar.
         */
        if (is_array($primaryKey)) {
            $newPrimaryKey = $primaryKey;
        } else {
            $newPrimaryKey = array(current((array) $this->_primary) => $primaryKey);
        }

        /**
         * Save the new primary key value in _data.  The primary key may have
         * been generated by a sequence or auto-increment mechanism, and this
         * merge should be done before the _postInsert() method is run, so the
         * new values are available for logging, etc.
         */
        $this->_data = array_merge($this->_data, $newPrimaryKey);

        /**
         * Run post-INSERT logic
         */
        $this->_postInsert();

        /**
         * Update the _cleanData to reflect that the data has been inserted.
         */
        $this->_refresh();

        return $primaryKey;
    }

    /**
     * @return mixed The primary key value(s), as an associative array if the
     *     key is compound, or a scalar if the key is single-column.
     */
    protected function _doUpdate()
    {
        /**
         * A read-only row cannot be saved.
         */
        if ($this->_readOnly === true) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('This row has been marked read-only');
        }

        /**
         * Get expressions for a WHERE clause
         * based on the primary key value(s).
         */
        $where = $this->_getWhereQuery(false);

        /**
         * Run pre-UPDATE logic
         */
        $this->_update();

        /**
         * Compare the data to the modified fields array to discover
         * which columns have been changed.
         */
        $diffData = array_intersect_key($this->_data, $this->_modifiedFields);

        /**
         * Were any of the changed columns part of the primary key?
         */
        $pkDiffData = array_intersect_key($diffData, array_flip((array)$this->_primary));

        /**
         * Execute cascading updates against dependent tables.
         * Do this only if primary key value(s) were changed.
         */
        if (count($pkDiffData) > 0) {
            $depTables = $this->_getTable()->getDependentTables();
            if (!empty($depTables)) {
                $db = $this->_getTable()->getAdapter();
                $pkNew = $this->_getPrimaryKey(true);
                $pkOld = $this->_getPrimaryKey(false);
                foreach ($depTables as $tableClass) {
                    try {
                        @Zend_Loader::loadClass($tableClass);
                    } catch (Zend_Exception $e) {
                        require_once 'Zend/Db/Table/Row/Exception.php';
                        throw new Zend_Db_Table_Row_Exception($e->getMessage());
                    }
                    $t = new $tableClass(array('db' => $db));
                    $t->_cascadeUpdate($this->getTableClass(), $pkOld, $pkNew);
                }
            }
        }

        /**
         * Execute the UPDATE (this may throw an exception)
         * Do this only if data values were changed.
         * Use the $diffData variable, so the UPDATE statement
         * includes SET terms only for data values that changed.
         */
        if (count($diffData) > 0) {
            $this->_getTable()->update($diffData, $where);
        }

        /**
         * Run post-UPDATE logic.  Do this before the _refresh()
         * so the _postUpdate() function can tell the difference
         * between changed data and clean (pre-changed) data.
         */
        $this->_postUpdate();

        /**
         * Refresh the data just in case triggers in the RDBMS changed
         * any columns.  Also this resets the _cleanData.
         */
        $this->_refresh();

        /**
         * Return the primary key value(s) as an array
         * if the key is compound or a scalar if the key
         * is a scalar.
         */
        $primaryKey = $this->_getPrimaryKey(true);
        if (count($primaryKey) == 1) {
            return current($primaryKey);
        }

        return $primaryKey;
    }

    /**
     * Deletes existing rows.
     *
     * @return int The number of rows deleted.
     */
    public function delete()
    {
        /**
         * A read-only row cannot be deleted.
         */
        if ($this->_readOnly === true) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('This row has been marked read-only');
        }

        $where = $this->_getWhereQuery();

        /**
         * Execute pre-DELETE logic
         */
        $this->_delete();

        /**
         * Execute cascading deletes against dependent tables
         */
        $depTables = $this->_getTable()->getDependentTables();
        if (!empty($depTables)) {
            $db = $this->_getTable()->getAdapter();
            $pk = $this->_getPrimaryKey();
            foreach ($depTables as $tableClass) {
                try {
                    @Zend_Loader::loadClass($tableClass);
                } catch (Zend_Exception $e) {
                    require_once 'Zend/Db/Table/Row/Exception.php';
                    throw new Zend_Db_Table_Row_Exception($e->getMessage());
                }
                $t = new $tableClass(array('db' => $db));
                $t->_cascadeDelete($this->getTableClass(), $pk);
            }
        }

        /**
         * Execute the DELETE (this may throw an exception)
         */
        $result = $this->_getTable()->delete($where);

        /**
         * Execute post-DELETE logic
         */
        $this->_postDelete();

        /**
         * Reset all fields to null to indicate that the row is not there
         */
        $this->_data = array_combine(
            array_keys($this->_data),
            array_fill(0, count($this->_data), null)
        );

        return $result;
    }

    /**
     * Returns the column/value data as an array.
     *
     * @return array
     */
    public function toArray()
    {
        return (array)$this->_data;
    }

    /**
     * Sets all data in the row from an array.
     *
     * @param  array $data
     * @return Zend_Db_Table_Row_Abstract Provides a fluent interface
     */
    public function setFromArray(array $data)
    {
        $data = array_intersect_key($data, $this->_data);

        foreach ($data as $columnName => $value) {
            $this->__set($columnName, $value);
        }

        return $this;
    }

    /**
     * Refreshes properties from the database.
     *
     * @return void
     */
    public function refresh()
    {
        return $this->_refresh();
    }

    /**
     * Retrieves an instance of the parent table.
     *
     * @return Zend_Db_Table_Abstract
     */
    protected function _getTable()
    {
        if (!$this->_connected) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('Cannot save a Row unless it is connected');
        }
        return $this->_table;
    }

    /**
     * Retrieves an associative array of primary keys.
     *
     * @param bool $useDirty
     * @return array
     */
    protected function _getPrimaryKey($useDirty = true)
    {
        if (!is_array($this->_primary)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("The primary key must be set as an array");
        }

        $primary = array_flip($this->_primary);
        if ($useDirty) {
            $array = array_intersect_key($this->_data, $primary);
        } else {
            $array = array_intersect_key($this->_cleanData, $primary);
        }
        if (count($primary) != count($array)) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("The specified Table '$this->_tableClass' does not have the same primary key as the Row");
        }
        return $array;
    }

    /**
     * Constructs where statement for retrieving row(s).
     *
     * @param bool $useDirty
     * @return array
     */
    protected function _getWhereQuery($useDirty = true)
    {
        $where = array();
        $db = $this->_getTable()->getAdapter();
        $primaryKey = $this->_getPrimaryKey($useDirty);
        $info = $this->_getTable()->info();
        $metadata = $info[Zend_Db_Table_Abstract::METADATA];

        // retrieve recently updated row using primary keys
        $where = array();
        foreach ($primaryKey as $column => $value) {
            $tableName = $db->quoteIdentifier($info[Zend_Db_Table_Abstract::NAME], true);
            $type = $metadata[$column]['DATA_TYPE'];
            $columnName = $db->quoteIdentifier($column, true);
            $where[] = $db->quoteInto("{$tableName}.{$columnName} = ?", $value, $type);
        }
        return $where;
    }

    /**
     * Refreshes properties from the database.
     *
     * @return void
     */
    protected function _refresh()
    {
        $where = $this->_getWhereQuery();
        $row = $this->_getTable()->fetchRow($where);

        if (null === $row) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception('Cannot refresh row as parent is missing');
        }

        $this->_data = $row->toArray();
        $this->_cleanData = $this->_data;
        $this->_modifiedFields = array();
    }

    /**
     * Allows pre-insert logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _insert()
    {
    }

    /**
     * Allows post-insert logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _postInsert()
    {
    }

    /**
     * Allows pre-update logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _update()
    {
    }

    /**
     * Allows post-update logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _postUpdate()
    {
    }

    /**
     * Allows pre-delete logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _delete()
    {
    }

    /**
     * Allows post-delete logic to be applied to row.
     * Subclasses may override this method.
     *
     * @return void
     */
    protected function _postDelete()
    {
    }

    /**
     * Prepares a table reference for lookup.
     *
     * Ensures all reference keys are set and properly formatted.
     *
     * @param Zend_Db_Table_Abstract $dependentTable
     * @param Zend_Db_Table_Abstract $parentTable
     * @param string                 $ruleKey
     * @return array
     */
    protected function _prepareReference(Zend_Db_Table_Abstract $dependentTable, Zend_Db_Table_Abstract $parentTable, $ruleKey)
    {
        $map = $dependentTable->getReference(get_class($parentTable), $ruleKey);

        if (!isset($map[Zend_Db_Table_Abstract::REF_COLUMNS])) {
            $parentInfo = $parentTable->info();
            $map[Zend_Db_Table_Abstract::REF_COLUMNS] = array_values((array) $parentInfo['primary']);
        }

        $map[Zend_Db_Table_Abstract::COLUMNS] = (array) $map[Zend_Db_Table_Abstract::COLUMNS];
        $map[Zend_Db_Table_Abstract::REF_COLUMNS] = (array) $map[Zend_Db_Table_Abstract::REF_COLUMNS];

        return $map;
    }

    /**
     * Query a dependent table to retrieve rows matching the current row.
     *
     * @param string|Zend_Db_Table_Abstract  $dependentTable
     * @param string                         OPTIONAL $ruleKey
     * @param Zend_Db_Table_Select           OPTIONAL $select
     * @return Zend_Db_Table_Rowset_Abstract Query result from $dependentTable
     * @throws Zend_Db_Table_Row_Exception If $dependentTable is not a table or is not loadable.
     */
    public function findDependentRowset($dependentTable, $ruleKey = null, Zend_Db_Table_Select $select = null)
    {
        $db = $this->_getTable()->getAdapter();

        if (is_string($dependentTable)) {
            try {
                @Zend_Loader::loadClass($dependentTable);
            } catch (Zend_Exception $e) {
                require_once 'Zend/Db/Table/Row/Exception.php';
                throw new Zend_Db_Table_Row_Exception($e->getMessage());
            }
            $dependentTable = new $dependentTable(array('db' => $db));
        }
        if (! $dependentTable instanceof Zend_Db_Table_Abstract) {
            $type = gettype($dependentTable);
            if ($type == 'object') {
                $type = get_class($dependentTable);
            }
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Dependent table must be a Zend_Db_Table_Abstract, but it is $type");
        }

        if ($select === null) {
            $select = $dependentTable->select();
        } else {
            $select->setTable($dependentTable);
        }

        $map = $this->_prepareReference($dependentTable, $this->_getTable(), $ruleKey);

        for ($i = 0; $i < count($map[Zend_Db_Table_Abstract::COLUMNS]); ++$i) {
            $parentColumnName = $db->foldCase($map[Zend_Db_Table_Abstract::REF_COLUMNS][$i]);
            $value = $this->_data[$parentColumnName];
            // Use adapter from dependent table to ensure correct query construction
            $dependentDb = $dependentTable->getAdapter();
            $dependentColumnName = $dependentDb->foldCase($map[Zend_Db_Table_Abstract::COLUMNS][$i]);
            $dependentColumn = $dependentDb->quoteIdentifier($dependentColumnName, true);
            $dependentInfo = $dependentTable->info();
            $type = $dependentInfo[Zend_Db_Table_Abstract::METADATA][$dependentColumnName]['DATA_TYPE'];
            $select->where("$dependentColumn = ?", $value, $type);
        }

        return $dependentTable->fetchAll($select);
    }

    /**
     * Query a parent table to retrieve the single row matching the current row.
     *
     * @param string|Zend_Db_Table_Abstract $parentTable
     * @param string                        OPTIONAL $ruleKey
     * @return Zend_Db_Table_Row_Abstract   Query result from $parentTable
     * @throws Zend_Db_Table_Row_Exception If $parentTable is not a table or is not loadable.
     */
    public function findParentRow($parentTable, $ruleKey = null, Zend_Db_Table_Select $select = null)
    {
        $db = $this->_getTable()->getAdapter();

        if (is_string($parentTable)) {
            try {
                @Zend_Loader::loadClass($parentTable);
            } catch (Zend_Exception $e) {
                require_once 'Zend/Db/Table/Row/Exception.php';
                throw new Zend_Db_Table_Row_Exception($e->getMessage());
            }
            $parentTable = new $parentTable(array('db' => $db));
        }
        if (! $parentTable instanceof Zend_Db_Table_Abstract) {
            $type = gettype($parentTable);
            if ($type == 'object') {
                $type = get_class($parentTable);
            }
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Parent table must be a Zend_Db_Table_Abstract, but it is $type");
        }

        if ($select === null) {
            $select = $parentTable->select();
        } else {
            $select->setTable($parentTable);
        }

        $map = $this->_prepareReference($this->_getTable(), $parentTable, $ruleKey);

        for ($i = 0; $i < count($map[Zend_Db_Table_Abstract::COLUMNS]); ++$i) {
            $dependentColumnName = $db->foldCase($map[Zend_Db_Table_Abstract::COLUMNS][$i]);
            $value = $this->_data[$dependentColumnName];
            // Use adapter from parent table to ensure correct query construction
            $parentDb = $parentTable->getAdapter();
            $parentColumnName = $parentDb->foldCase($map[Zend_Db_Table_Abstract::REF_COLUMNS][$i]);
            $parentColumn = $parentDb->quoteIdentifier($parentColumnName, true);
            $parentInfo = $parentTable->info();
            $type = $parentInfo[Zend_Db_Table_Abstract::METADATA][$parentColumnName]['DATA_TYPE'];
            $select->where("$parentColumn = ?", $value, $type);
        }

        return $parentTable->fetchRow($select);
    }

    /**
     * @param  string|Zend_Db_Table_Abstract  $matchTable
     * @param  string|Zend_Db_Table_Abstract  $intersectionTable
     * @param  string                         OPTIONAL $primaryRefRule
     * @param  string                         OPTIONAL $matchRefRule
     * @return Zend_Db_Table_Rowset_Abstract Query result from $matchTable
     * @throws Zend_Db_Table_Row_Exception If $matchTable or $intersectionTable is not a table class or is not loadable.
     */
    public function findManyToManyRowset($matchTable, $intersectionTable, $callerRefRule = null,
                                         $matchRefRule = null, Zend_Db_Table_Select $select = null)
    {
        $db = $this->_getTable()->getAdapter();

        if (is_string($intersectionTable)) {
            try {
                @Zend_Loader::loadClass($intersectionTable);
            } catch (Zend_Exception $e) {
                require_once 'Zend/Db/Table/Row/Exception.php';
                throw new Zend_Db_Table_Row_Exception($e->getMessage());
            }
            $intersectionTable = new $intersectionTable(array('db' => $db));
        }
        if (! $intersectionTable instanceof Zend_Db_Table_Abstract) {
            $type = gettype($intersectionTable);
            if ($type == 'object') {
                $type = get_class($intersectionTable);
            }
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Intersection table must be a Zend_Db_Table_Abstract, but it is $type");
        }

        if (is_string($matchTable)) {
            try {
                @Zend_Loader::loadClass($matchTable);
            } catch (Zend_Exception $e) {
                require_once 'Zend/Db/Table/Row/Exception.php';
                throw new Zend_Db_Table_Row_Exception($e->getMessage());
            }
            $matchTable = new $matchTable(array('db' => $db));
        }
        if (! $matchTable instanceof Zend_Db_Table_Abstract) {
            $type = gettype($matchTable);
            if ($type == 'object') {
                $type = get_class($matchTable);
            }
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception("Match table must be a Zend_Db_Table_Abstract, but it is $type");
        }

        if ($select === null) {
            $select = $matchTable->select();
        } else {
            $select->setTable($matchTable);
        }

        // Use adapter from intersection table to ensure correct query construction
        $interInfo = $intersectionTable->info();
        $interDb   = $intersectionTable->getAdapter();
        $interName = $interInfo['name'];
        $interSchema = isset($interInfo['schema']) ? $interInfo['schema'] : null;
        $matchInfo = $matchTable->info();
        $matchName = $matchInfo['name'];
        $matchSchema = isset($matchInfo['schema']) ? $matchInfo['schema'] : null;

        $matchMap = $this->_prepareReference($intersectionTable, $matchTable, $matchRefRule);

        for ($i = 0; $i < count($matchMap[Zend_Db_Table_Abstract::COLUMNS]); ++$i) {
            $interCol = $interDb->quoteIdentifier('i' . '.' . $matchMap[Zend_Db_Table_Abstract::COLUMNS][$i], true);
            $matchCol = $interDb->quoteIdentifier('m' . '.' . $matchMap[Zend_Db_Table_Abstract::REF_COLUMNS][$i], true);
            $joinCond[] = "$interCol = $matchCol";
        }
        $joinCond = implode(' AND ', $joinCond);

        $select->from(array('i' => $interName), Zend_Db_Select::SQL_WILDCARD, $interSchema)
               ->joinInner(array('m' => $matchName), $joinCond, Zend_Db_Select::SQL_WILDCARD, $matchSchema)
               ->setIntegrityCheck(false);

        $callerMap = $this->_prepareReference($intersectionTable, $this->_getTable(), $callerRefRule);

        for ($i = 0; $i < count($callerMap[Zend_Db_Table_Abstract::COLUMNS]); ++$i) {
            $callerColumnName = $db->foldCase($callerMap[Zend_Db_Table_Abstract::REF_COLUMNS][$i]);
            $value = $this->_data[$callerColumnName];
            $interColumnName = $interDb->foldCase($callerMap[Zend_Db_Table_Abstract::COLUMNS][$i]);
            $interCol = $interDb->quoteIdentifier("i.$interColumnName", true);
            $interInfo = $intersectionTable->info();
            $type = $interInfo[Zend_Db_Table_Abstract::METADATA][$interColumnName]['DATA_TYPE'];
            $select->where($interDb->quoteInto("$interCol = ?", $value, $type));
        }

        $stmt = $select->query();

        $config = array(
            'table'    => $matchTable,
            'data'     => $stmt->fetchAll(Zend_Db::FETCH_ASSOC),
            'rowClass' => $matchTable->getRowClass(),
            'readOnly' => false,
            'stored'   => true
        );

        $rowsetClass = $matchTable->getRowsetClass();
        try {
            @Zend_Loader::loadClass($rowsetClass);
        } catch (Zend_Exception $e) {
            require_once 'Zend/Db/Table/Row/Exception.php';
            throw new Zend_Db_Table_Row_Exception($e->getMessage());
        }
        $rowset = new $rowsetClass($config);
        return $rowset;
    }

    /**
     * Turn magic function calls into non-magic function calls
     * to the above methods.
     *
     * @param string $method
     * @param array $args OPTIONAL Zend_Db_Table_Select query modifier
     * @return Zend_Db_Table_Row_Abstract|Zend_Db_Table_Rowset_Abstract
     * @throws Zend_Db_Table_Row_Exception If an invalid method is called.
     */
    public function __call($method, array $args)
    {
        $matches = array();

        if (count($args) && $args[0] instanceof Zend_Db_Table_Select) {
            $select = $args[0];
        } else {
            $select = null;
        }

        /**
         * Recognize methods for Has-Many cases:
         * findParent<Class>()
         * findParent<Class>By<Rule>()
         * Use the non-greedy pattern repeat modifier e.g. \w+?
         */
        if (preg_match('/^findParent(\w+?)(?:By(\w+))?$/', $method, $matches)) {
            $class    = $matches[1];
            $ruleKey1 = isset($matches[2]) ? $matches[2] : null;
            return $this->findParentRow($class, $ruleKey1, $select);
        }

        /**
         * Recognize methods for Many-to-Many cases:
         * find<Class1>Via<Class2>()
         * find<Class1>Via<Class2>By<Rule>()
         * find<Class1>Via<Class2>By<Rule1>And<Rule2>()
         * Use the non-greedy pattern repeat modifier e.g. \w+?
         */
        if (preg_match('/^find(\w+?)Via(\w+?)(?:By(\w+?)(?:And(\w+))?)?$/', $method, $matches)) {
            $class    = $matches[1];
            $viaClass = $matches[2];
            $ruleKey1 = isset($matches[3]) ? $matches[3] : null;
            $ruleKey2 = isset($matches[4]) ? $matches[4] : null;
            return $this->findManyToManyRowset($class, $viaClass, $ruleKey1, $ruleKey2, $select);
        }

        /**
         * Recognize methods for Belongs-To cases:
         * find<Class>()
         * find<Class>By<Rule>()
         * Use the non-greedy pattern repeat modifier e.g. \w+?
         */
        if (preg_match('/^find(\w+?)(?:By(\w+))?$/', $method, $matches)) {
            $class    = $matches[1];
            $ruleKey1 = isset($matches[2]) ? $matches[2] : null;
            return $this->findDependentRowset($class, $ruleKey1, $select);
        }

        require_once 'Zend/Db/Table/Row/Exception.php';
        throw new Zend_Db_Table_Row_Exception("Unrecognized method '$method()'");
    }

}
PKpG[��c�,,Db/Table/Rowset.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Rowset.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Db_Table_Rowset_Abstract
 */
require_once 'Zend/Db/Table/Rowset/Abstract.php';


/**
 * Reference concrete class that extends Zend_Db_Table_Rowset_Abstract.
 * Developers may also create their own classes that extend the abstract class.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Rowset extends Zend_Db_Table_Rowset_Abstract
{
}
PKpG[�WsƫƫDb/Table/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 6320 2007-09-12 00:27:22Z bkarwin $
 */

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Select.php';

/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * Class for SQL table interface.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Table_Abstract
{

    const ADAPTER          = 'db';
    const SCHEMA           = 'schema';
    const NAME             = 'name';
    const PRIMARY          = 'primary';
    const COLS             = 'cols';
    const METADATA         = 'metadata';
    const METADATA_CACHE   = 'metadataCache';
    const METADATA_CACHE_IN_CLASS = 'metadataCacheInClass';
    const ROW_CLASS        = 'rowClass';
    const ROWSET_CLASS     = 'rowsetClass';
    const REFERENCE_MAP    = 'referenceMap';
    const DEPENDENT_TABLES = 'dependentTables';
    const SEQUENCE         = 'sequence';

    const COLUMNS          = 'columns';
    const REF_TABLE_CLASS  = 'refTableClass';
    const REF_COLUMNS      = 'refColumns';
    const ON_DELETE        = 'onDelete';
    const ON_UPDATE        = 'onUpdate';

    const CASCADE          = 'cascade';
    const RESTRICT         = 'restrict';
    const SET_NULL         = 'setNull';

    const DEFAULT_NONE     = 'defaultNone';
    const DEFAULT_CLASS    = 'defaultClass';
    const DEFAULT_DB       = 'defaultDb';

    /**
     * Default Zend_Db_Adapter_Abstract object.
     *
     * @var Zend_Db_Adapter_Abstract
     */
    protected static $_defaultDb;

    /**
     * Default cache for information provided by the adapter's describeTable() method.
     *
     * @var Zend_Cache_Core
     */
    protected static $_defaultMetadataCache = null;

    /**
     * Zend_Db_Adapter_Abstract object.
     *
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_db;

    /**
     * The schema name (default null means current schema)
     *
     * @var array
     */
    protected $_schema = null;

    /**
     * The table name.
     *
     * @var array
     */
    protected $_name = null;

    /**
     * The table column names derived from Zend_Db_Adapter_Abstract::describeTable().
     *
     * @var array
     */
    protected $_cols;

    /**
     * The primary key column or columns.
     * A compound key should be declared as an array.
     * You may declare a single-column primary key
     * as a string.
     *
     * @var mixed
     */
    protected $_primary = null;

    /**
     * If your primary key is a compound key, and one of the columns uses
     * an auto-increment or sequence-generated value, set _identity
     * to the ordinal index in the $_primary array for that column.
     * Note this index is the position of the column in the primary key,
     * not the position of the column in the table.  The primary key
     * array is 1-based.
     *
     * @var integer
     */
    protected $_identity = 1;

    /**
     * Define the logic for new values in the primary key.
     * May be a string, boolean true, or boolean false.
     *
     * @var mixed
     */
    protected $_sequence = true;

    /**
     * Information provided by the adapter's describeTable() method.
     *
     * @var array
     */
    protected $_metadata = array();

    /**
     * Cache for information provided by the adapter's describeTable() method.
     *
     * @var Zend_Cache_Core
     */
    protected $_metadataCache = null;

    /**
     * Flag: whether or not to cache metadata in the class
     * @var bool
     */
    protected $_metadataCacheInClass = true;

    /**
     * Classname for row
     *
     * @var string
     */
    protected $_rowClass = 'Zend_Db_Table_Row';

    /**
     * Classname for rowset
     *
     * @var string
     */
    protected $_rowsetClass = 'Zend_Db_Table_Rowset';

    /**
     * Associative array map of declarative referential integrity rules.
     * This array has one entry per foreign key in the current table.
     * Each key is a mnemonic name for one reference rule.
     *
     * Each value is also an associative array, with the following keys:
     * - columns       = array of names of column(s) in the child table.
     * - refTableClass = class name of the parent table.
     * - refColumns    = array of names of column(s) in the parent table,
     *                   in the same order as those in the 'columns' entry.
     * - onDelete      = "cascade" means that a delete in the parent table also
     *                   causes a delete of referencing rows in the child table.
     * - onUpdate      = "cascade" means that an update of primary key values in
     *                   the parent table also causes an update of referencing
     *                   rows in the child table.
     *
     * @var array
     */
    protected $_referenceMap = array();

    /**
     * Simple array of class names of tables that are "children" of the current
     * table, in other words tables that contain a foreign key to this one.
     * Array elements are not table names; they are class names of classes that
     * extend Zend_Db_Table_Abstract.
     *
     * @var array
     */
    protected $_dependentTables = array();


    protected $_defaultSource = self::DEFAULT_NONE;
    protected $_defaultValues = array();

    /**
     * Constructor.
     *
     * Supported params for $config are:
     * - db              = user-supplied instance of database connector,
     *                     or key name of registry instance.
     * - name            = table name.
     * - primary         = string or array of primary key(s).
     * - rowClass        = row class name.
     * - rowsetClass     = rowset class name.
     * - referenceMap    = array structure to declare relationship
     *                     to parent tables.
     * - dependentTables = array of child tables.
     * - metadataCache   = cache for information from adapter describeTable().
     *
     * @param  mixed $config Array of user-specified config options, or just the Db Adapter.
     * @return void
     */
    public function __construct($config = array())
    {
        /**
         * Allow a scalar argument to be the Adapter object or Registry key.
         */
        if (!is_array($config)) {
            $config = array(self::ADAPTER => $config);
        }

        foreach ($config as $key => $value) {
            switch ($key) {
                case self::ADAPTER:
                    $this->_setAdapter($value);
                    break;
                case self::SCHEMA:
                    $this->_schema = (string) $value;
                    break;
                case self::NAME:
                    $this->_name = (string) $value;
                    break;
                case self::PRIMARY:
                    $this->_primary = (array) $value;
                    break;
                case self::ROW_CLASS:
                    $this->setRowClass($value);
                    break;
                case self::ROWSET_CLASS:
                    $this->setRowsetClass($value);
                    break;
                case self::REFERENCE_MAP:
                    $this->setReferences($value);
                    break;
                case self::DEPENDENT_TABLES:
                    $this->setDependentTables($value);
                    break;
                case self::METADATA_CACHE:
                    $this->_setMetadataCache($value);
                    break;
                case self::METADATA_CACHE_IN_CLASS:
                    $this->setMetadataCacheInClass($value);
                    break;
                case self::SEQUENCE:
                    $this->_setSequence($value);
                    break;
                default:
                    // ignore unrecognized configuration directive
                    break;
            }
        }

        $this->_setup();
        $this->init();
    }

    /**
     * @param  string $classname
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    public function setRowClass($classname)
    {
        $this->_rowClass = (string) $classname;

        return $this;
    }

    /**
     * @return string
     */
    public function getRowClass()
    {
        return $this->_rowClass;
    }

    /**
     * @param  string $classname
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    public function setRowsetClass($classname)
    {
        $this->_rowsetClass = (string) $classname;

        return $this;
    }

    /**
     * @return string
     */
    public function getRowsetClass()
    {
        return $this->_rowsetClass;
    }

    /**
     * @param array $referenceMap
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    public function setReferences(array $referenceMap)
    {
        $this->_referenceMap = $referenceMap;

        return $this;
    }

    /**
     * @param string $tableClassname
     * @param string $ruleKey OPTIONAL
     * @return array
     * @throws Zend_Db_Table_Exception
     */
    public function getReference($tableClassname, $ruleKey = null)
    {
        $thisClass = get_class($this);
        $refMap = $this->_getReferenceMapNormalized();
        if ($ruleKey !== null) {
            if (!isset($refMap[$ruleKey])) {
                require_once "Zend/Db/Table/Exception.php";
                throw new Zend_Db_Table_Exception("No reference rule \"$ruleKey\" from table $thisClass to table $tableClassname");
            }
            if ($refMap[$ruleKey][self::REF_TABLE_CLASS] != $tableClassname) {
                require_once "Zend/Db/Table/Exception.php";
                throw new Zend_Db_Table_Exception("Reference rule \"$ruleKey\" does not reference table $tableClassname");
            }
            return $refMap[$ruleKey];
        }
        foreach ($refMap as $reference) {
            if ($reference[self::REF_TABLE_CLASS] == $tableClassname) {
                return $reference;
            }
        }
        require_once "Zend/Db/Table/Exception.php";
        throw new Zend_Db_Table_Exception("No reference from table $thisClass to table $tableClassname");
    }

    /**
     * @param  array $dependentTables
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    public function setDependentTables(array $dependentTables)
    {
        $this->_dependentTables = $dependentTables;

        return $this;
    }

    /**
     * @return array
     */
    public function getDependentTables()
    {
        return $this->_dependentTables;
    }

    /**
     * set the defaultSource property - this tells the table class where to find default values
     *
     * @param string $defaultSource
     * @return Zend_Db_Table_Abstract
     */
    public function setDefaultSource($defaultSource = self::DEFAULT_NONE)
    {
        if (!in_array($defaultSource, array(self::DEFAULT_CLASS, self::DEFAULT_DB, self::DEFAULT_NONE))) {
            $defaultSource = self::DEFAULT_NONE;
        }

        $this->_defaultSource = $defaultSource;
        return $this;
    }

    /**
     * returns the default source flag that determines where defaultSources come from
     *
     * @return unknown
     */
    public function getDefaultSource()
    {
        return $this->_defaultSource;
    }

    /**
     * set the default values for the table class
     *
     * @param array $defaultValues
     * @return Zend_Db_Table_Abstract
     */
    public function setDefaultValues(Array $defaultValues)
    {
        foreach ($defaultValues as $defaultName => $defaultValue) {
            if (array_key_exists($defaultName, $this->_metadata)) {
                $this->_defaultValues[$defaultName] = $defaultValue;
            }
        }
        return $this;
    }

    public function getDefaultValues()
    {
        return $this->_defaultValues;
    }


    /**
     * Sets the default Zend_Db_Adapter_Abstract for all Zend_Db_Table objects.
     *
     * @param  mixed $db Either an Adapter object, or a string naming a Registry key
     * @return void
     */
    public static function setDefaultAdapter($db = null)
    {
        self::$_defaultDb = self::_setupAdapter($db);
    }

    /**
     * Gets the default Zend_Db_Adapter_Abstract for all Zend_Db_Table objects.
     *
     * @return Zend_Db_Adapter_Abstract or null
     */
    public static function getDefaultAdapter()
    {
        return self::$_defaultDb;
    }

    /**
     * @param  mixed $db Either an Adapter object, or a string naming a Registry key
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    protected function _setAdapter($db)
    {
        $this->_db = self::_setupAdapter($db);
        return $this;
    }

    /**
     * Gets the Zend_Db_Adapter_Abstract for this particular Zend_Db_Table object.
     *
     * @return Zend_Db_Adapter_Abstract
     */
    public function getAdapter()
    {
        return $this->_db;
    }

    /**
     * @param  mixed $db Either an Adapter object, or a string naming a Registry key
     * @return Zend_Db_Adapter_Abstract
     * @throws Zend_Db_Table_Exception
     */
    protected static function _setupAdapter($db)
    {
        if ($db === null) {
            return null;
        }
        if (is_string($db)) {
            require_once 'Zend/Registry.php';
            $db = Zend_Registry::get($db);
        }
        if (!$db instanceof Zend_Db_Adapter_Abstract) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception('Argument must be of type Zend_Db_Adapter_Abstract, or a Registry key where a Zend_Db_Adapter_Abstract object is stored');
        }
        return $db;
    }

    /**
     * Sets the default metadata cache for information returned by Zend_Db_Adapter_Abstract::describeTable().
     *
     * If $defaultMetadataCache is null, then no metadata cache is used by default.
     *
     * @param  mixed $metadataCache Either a Cache object, or a string naming a Registry key
     * @return void
     */
    public static function setDefaultMetadataCache($metadataCache = null)
    {
        self::$_defaultMetadataCache = self::_setupMetadataCache($metadataCache);
    }

    /**
     * Gets the default metadata cache for information returned by Zend_Db_Adapter_Abstract::describeTable().
     *
     * @return Zend_Cache_Core or null
     */
    public static function getDefaultMetadataCache()
    {
        return self::$_defaultMetadataCache;
    }

    /**
     * Sets the metadata cache for information returned by Zend_Db_Adapter_Abstract::describeTable().
     *
     * If $metadataCache is null, then no metadata cache is used. Since there is no opportunity to reload metadata
     * after instantiation, this method need not be public, particularly because that it would have no effect
     * results in unnecessary API complexity. To configure the metadata cache, use the metadataCache configuration
     * option for the class constructor upon instantiation.
     *
     * @param  mixed $metadataCache Either a Cache object, or a string naming a Registry key
     * @return Zend_Db_Table_Abstract Provides a fluent interface
     */
    protected function _setMetadataCache($metadataCache)
    {
        $this->_metadataCache = self::_setupMetadataCache($metadataCache);
        return $this;
    }

    /**
     * Gets the metadata cache for information returned by Zend_Db_Adapter_Abstract::describeTable().
     *
     * @return Zend_Cache_Core or null
     */
    public function getMetadataCache()
    {
        return $this->_metadataCache;
    }

    /**
     * Indicate whether metadata should be cached in the class for the duration 
     * of the instance
     * 
     * @param  bool $flag 
     * @return Zend_Db_Table_Abstract
     */
    public function setMetadataCacheInClass($flag)
    {
        $this->_metadataCacheInClass = (bool) $flag;
        return $this;
    }

    /**
     * Retrieve flag indicating if metadata should be cached for duration of 
     * instance
     * 
     * @return bool
     */
    public function metadataCacheInClass()
    {
        return $this->_metadataCacheInClass;
    }

    /**
     * @param mixed $metadataCache Either a Cache object, or a string naming a Registry key
     * @return Zend_Cache_Core
     * @throws Zend_Db_Table_Exception
     */
    protected static function _setupMetadataCache($metadataCache)
    {
        if ($metadataCache === null) {
            return null;
        }
        if (is_string($metadataCache)) {
            require_once 'Zend/Registry.php';
            $metadataCache = Zend_Registry::get($metadataCache);
        }
        if (!$metadataCache instanceof Zend_Cache_Core) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception('Argument must be of type Zend_Cache_Core, or a Registry key where a Zend_Cache_Core object is stored');
        }
        return $metadataCache;
    }

    /**
     * Sets the sequence member, which defines the behavior for generating
     * primary key values in new rows.
     * - If this is a string, then the string names the sequence object.
     * - If this is boolean true, then the key uses an auto-incrementing
     *   or identity mechanism.
     * - If this is boolean false, then the key is user-defined.
     *   Use this for natural keys, for example.
     *
     * @param mixed $sequence
     * @return Zend_Db_Table_Adapter_Abstract Provides a fluent interface
     */
    protected function _setSequence($sequence)
    {
        $this->_sequence = $sequence;

        return $this;
    }

    /**
     * Turnkey for initialization of a table object.
     * Calls other protected methods for individual tasks, to make it easier
     * for a subclass to override part of the setup logic.
     *
     * @return void
     */
    protected function _setup()
    {
        $this->_setupDatabaseAdapter();
        $this->_setupTableName();
    }

    /**
     * Initialize database adapter.
     *
     * @return void
     */
    protected function _setupDatabaseAdapter()
    {
        if (! $this->_db) {
            $this->_db = self::getDefaultAdapter();
            if (!$this->_db instanceof Zend_Db_Adapter_Abstract) {
                require_once 'Zend/Db/Table/Exception.php';
                throw new Zend_Db_Table_Exception('No adapter found for ' . get_class($this));
            }
        }
    }

    /**
     * Initialize table and schema names.
     *
     * If the table name is not set in the class definition,
     * use the class name itself as the table name.
     *
     * A schema name provided with the table name (e.g., "schema.table") overrides
     * any existing value for $this->_schema.
     *
     * @return void
     */
    protected function _setupTableName()
    {
        if (! $this->_name) {
            $this->_name = get_class($this);
        } else if (strpos($this->_name, '.')) {
            list($this->_schema, $this->_name) = explode('.', $this->_name);
        }
    }

    /**
     * Initializes metadata.
     *
     * If metadata cannot be loaded from cache, adapter's describeTable() method is called to discover metadata
     * information. Returns true if and only if the metadata are loaded from cache.
     *
     * @return boolean
     * @throws Zend_Db_Table_Exception
     */
    protected function _setupMetadata()
    {
        if ($this->metadataCacheInClass() && (count($this->_metadata) > 0)) {
            return true;
        }

        // Assume that metadata will be loaded from cache
        $isMetadataFromCache = true;

        // If $this has no metadata cache but the class has a default metadata cache
        if (null === $this->_metadataCache && null !== self::$_defaultMetadataCache) {
            // Make $this use the default metadata cache of the class
            $this->_setMetadataCache(self::$_defaultMetadataCache);
        }

        // If $this has a metadata cache
        if (null !== $this->_metadataCache) {
            // Define the cache identifier where the metadata are saved
            $cacheId = md5("$this->_schema.$this->_name");
        }

        // If $this has no metadata cache or metadata cache misses
        if (null === $this->_metadataCache || !($metadata = $this->_metadataCache->load($cacheId))) {
            // Metadata are not loaded from cache
            $isMetadataFromCache = false;
            // Fetch metadata from the adapter's describeTable() method
            $metadata = $this->_db->describeTable($this->_name, $this->_schema);
            // If $this has a metadata cache, then cache the metadata
            if (null !== $this->_metadataCache && !$this->_metadataCache->save($metadata, $cacheId)) {
                /**
                 * @see Zend_Db_Table_Exception
                 */
                require_once 'Zend/Db/Table/Exception.php';
                throw new Zend_Db_Table_Exception('Failed saving metadata to metadataCache');
            }
        }

        // Assign the metadata to $this
        $this->_metadata = $metadata;

        // Return whether the metadata were loaded from cache
        return $isMetadataFromCache;
    }

    /**
     * Retrieve table columns
     * 
     * @return array
     */
    protected function _getCols()
    {
        if (null === $this->_cols) {
            $this->_setupMetadata();
            $this->_cols = array_keys($this->_metadata);
        }
        return $this->_cols;
    }

    /**
     * Initialize primary key from metadata.
     * If $_primary is not defined, discover primary keys
     * from the information returned by describeTable().
     *
     * @return void
     * @throws Zend_Db_Table_Exception
     */
    protected function _setupPrimaryKey()
    {
        if (!$this->_primary) {
            $this->_setupMetadata();
            $this->_primary = array();
            foreach ($this->_metadata as $col) {
                if ($col['PRIMARY']) {
                    $this->_primary[ $col['PRIMARY_POSITION'] ] = $col['COLUMN_NAME'];
                    if ($col['IDENTITY']) {
                        $this->_identity = $col['PRIMARY_POSITION'];
                    }
                }
            }
            // if no primary key was specified and none was found in the metadata
            // then throw an exception.
            if (empty($this->_primary)) {
                require_once 'Zend/Db/Table/Exception.php';
                throw new Zend_Db_Table_Exception('A table must have a primary key, but none was found');
            }
        } else if (!is_array($this->_primary)) {
            $this->_primary = array(1 => $this->_primary);
        } else if (isset($this->_primary[0])) {
            array_unshift($this->_primary, null);
            unset($this->_primary[0]);
        }

        $cols = $this->_getCols();
        if (! array_intersect((array) $this->_primary, $cols) == (array) $this->_primary) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception("Primary key column(s) ("
                . implode(',', (array) $this->_primary)
                . ") are not columns in this table ("
                . implode(',', $cols)
                . ")");
        }

        $primary    = (array) $this->_primary;
        $pkIdentity = $primary[(int) $this->_identity];

        /**
         * Special case for PostgreSQL: a SERIAL key implicitly uses a sequence
         * object whose name is "<table>_<column>_seq".
         */
        if ($this->_sequence === true && $this->_db instanceof Zend_Db_Adapter_Pdo_Pgsql) {
            $this->_sequence = "{$this->_name}_{$pkIdentity}_seq";
            if ($this->_schema) {
                $this->_sequence = $this->_schema . '.' . $this->_sequence;
            }
        }
    }

    /**
     * Returns a normalized version of the reference map
     *
     * @return array
     */
    protected function _getReferenceMapNormalized()
    {
        $referenceMapNormalized = array();

        foreach ($this->_referenceMap as $rule => $map) {

            $referenceMapNormalized[$rule] = array();

            foreach ($map as $key => $value) {
                switch ($key) {

                    // normalize COLUMNS and REF_COLUMNS to arrays
                    case self::COLUMNS:
                    case self::REF_COLUMNS:
                        if (!is_array($value)) {
                            $referenceMapNormalized[$rule][$key] = array($value);
                        } else {
                            $referenceMapNormalized[$rule][$key] = $value;
                        }
                        break;

                    // other values are copied as-is
                    default:
                        $referenceMapNormalized[$rule][$key] = $value;
                        break;
                }
            }
        }

        return $referenceMapNormalized;
    }

    /**
     * Initialize object
     *
     * Called from {@link __construct()} as final step of object instantiation.
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Returns table information.
     *
     * You can elect to return only a part of this information by supplying its key name,
     * otherwise all information is returned as an array.
     *
     * @param  $key The specific info part to return OPTIONAL
     * @return mixed
     */
    public function info($key = null)
    {
        $this->_setupPrimaryKey();

        $info = array(
            self::SCHEMA           => $this->_schema,
            self::NAME             => $this->_name,
            self::COLS             => $this->_getCols(),
            self::PRIMARY          => (array) $this->_primary,
            self::METADATA         => $this->_metadata,
            self::ROW_CLASS        => $this->_rowClass,
            self::ROWSET_CLASS     => $this->_rowsetClass,
            self::REFERENCE_MAP    => $this->_referenceMap,
            self::DEPENDENT_TABLES => $this->_dependentTables,
            self::SEQUENCE         => $this->_sequence
        );

        if ($key === null) {
            return $info;
        }

        if (!array_key_exists($key, $info)) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception('There is no table information for the key "' . $key . '"');
        }

        return $info[$key];
    }

    /**
     * Returns an instance of a Zend_Db_Table_Select object.
     *
     * @return Zend_Db_Table_Select
     */
    public function select()
    {
        require_once 'Zend/Db/Table/Select.php';
        return new Zend_Db_Table_Select($this);
    }

    /**
     * Inserts a new row.
     *
     * @param  array  $data  Column-value pairs.
     * @return mixed         The primary key of the row inserted.
     */
    public function insert(array $data)
    {
        $this->_setupPrimaryKey();

        /**
         * Zend_Db_Table assumes that if you have a compound primary key
         * and one of the columns in the key uses a sequence,
         * it's the _first_ column in the compound key.
         */
        $primary = (array) $this->_primary;
        $pkIdentity = $primary[(int)$this->_identity];

        /**
         * If this table uses a database sequence object and the data does not
         * specify a value, then get the next ID from the sequence and add it
         * to the row.  We assume that only the first column in a compound
         * primary key takes a value from a sequence.
         */
        if (is_string($this->_sequence) && !isset($data[$pkIdentity])) {
            $data[$pkIdentity] = $this->_db->nextSequenceId($this->_sequence);
        }

        /**
         * If the primary key can be generated automatically, and no value was
         * specified in the user-supplied data, then omit it from the tuple.
         */
        if (array_key_exists($pkIdentity, $data) && $data[$pkIdentity] === null) {
            unset($data[$pkIdentity]);
        }

        /**
         * INSERT the new row.
         */
        $tableSpec = ($this->_schema ? $this->_schema . '.' : '') . $this->_name;
        $this->_db->insert($tableSpec, $data);

        /**
         * Fetch the most recent ID generated by an auto-increment
         * or IDENTITY column, unless the user has specified a value,
         * overriding the auto-increment mechanism.
         */
        if ($this->_sequence === true && !isset($data[$pkIdentity])) {
            $data[$pkIdentity] = $this->_db->lastInsertId();
        }

        /**
         * Return the primary key value if the PK is a single column,
         * else return an associative array of the PK column/value pairs.
         */
        $pkData = array_intersect_key($data, array_flip($primary));
        if (count($primary) == 1) {
            reset($pkData);
            return current($pkData);
        }

        return $pkData;
    }

    /**
     * Updates existing rows.
     *
     * @param  array        $data  Column-value pairs.
     * @param  array|string $where An SQL WHERE clause, or an array of SQL WHERE clauses.
     * @return int          The number of rows updated.
     */
    public function update(array $data, $where)
    {
        $tableSpec = ($this->_schema ? $this->_schema . '.' : '') . $this->_name;
        return $this->_db->update($tableSpec, $data, $where);
    }

    /**
     * Called by a row object for the parent table's class during save() method.
     *
     * @param  string $parentTableClassname
     * @param  array  $oldPrimaryKey
     * @param  array  $newPrimaryKey
     * @return int
     */
    public function _cascadeUpdate($parentTableClassname, array $oldPrimaryKey, array $newPrimaryKey)
    {
        $this->_setupMetadata();
        $rowsAffected = 0;
        foreach ($this->_getReferenceMapNormalized() as $map) {
            if ($map[self::REF_TABLE_CLASS] == $parentTableClassname && isset($map[self::ON_UPDATE])) {
                switch ($map[self::ON_UPDATE]) {
                    case self::CASCADE:
                        $newRefs = array();
                        $where = array();
                        for ($i = 0; $i < count($map[self::COLUMNS]); ++$i) {
                            $col = $this->_db->foldCase($map[self::COLUMNS][$i]);
                            $refCol = $this->_db->foldCase($map[self::REF_COLUMNS][$i]);
                            if (array_key_exists($refCol, $newPrimaryKey)) {
                                $newRefs[$col] = $newPrimaryKey[$refCol];
                            }
                            $type = $this->_metadata[$col]['DATA_TYPE'];
                            $where[] = $this->_db->quoteInto(
                                $this->_db->quoteIdentifier($col, true) . ' = ?',
                                $oldPrimaryKey[$refCol], $type);
                        }
                        $rowsAffected += $this->update($newRefs, $where);
                        break;
                    default:
                        // no action
                        break;
                }
            }
        }
        return $rowsAffected;
    }

    /**
     * Deletes existing rows.
     *
     * @param  array|string $where SQL WHERE clause(s).
     * @return int          The number of rows deleted.
     */
    public function delete($where)
    {
        $tableSpec = ($this->_schema ? $this->_schema . '.' : '') . $this->_name;
        return $this->_db->delete($tableSpec, $where);
    }

    /**
     * Called by parent table's class during delete() method.
     *
     * @param  string $parentTableClassname
     * @param  array  $primaryKey
     * @return int    Number of affected rows
     */
    public function _cascadeDelete($parentTableClassname, array $primaryKey)
    {
        $this->_setupMetadata();
        $rowsAffected = 0;
        foreach ($this->_getReferenceMapNormalized() as $map) {
            if ($map[self::REF_TABLE_CLASS] == $parentTableClassname && isset($map[self::ON_DELETE])) {
                switch ($map[self::ON_DELETE]) {
                    case self::CASCADE:
                        $where = array();
                        for ($i = 0; $i < count($map[self::COLUMNS]); ++$i) {
                            $col = $this->_db->foldCase($map[self::COLUMNS][$i]);
                            $refCol = $this->_db->foldCase($map[self::REF_COLUMNS][$i]);
                            $type = $this->_metadata[$col]['DATA_TYPE'];
                            $where[] = $this->_db->quoteInto(
                                $this->_db->quoteIdentifier($col, true) . ' = ?',
                                $primaryKey[$refCol], $type);
                        }
                        $rowsAffected += $this->delete($where);
                        break;
                    default:
                        // no action
                        break;
                }
            }
        }
        return $rowsAffected;
    }

    /**
     * Fetches rows by primary key.  The argument specifies one or more primary
     * key value(s).  To find multiple rows by primary key, the argument must
     * be an array.
     *
     * This method accepts a variable number of arguments.  If the table has a
     * multi-column primary key, the number of arguments must be the same as
     * the number of columns in the primary key.  To find multiple rows in a
     * table with a multi-column primary key, each argument must be an array
     * with the same number of elements.
     *
     * The find() method always returns a Rowset object, even if only one row
     * was found.
     *
     * @param  mixed $key The value(s) of the primary keys.
     * @return Zend_Db_Table_Rowset_Abstract Row(s) matching the criteria.
     * @throws Zend_Db_Table_Exception
     */
    public function find()
    {
        $this->_setupPrimaryKey();
        $args = func_get_args();
        $keyNames = array_values((array) $this->_primary);

        if (count($args) < count($keyNames)) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception("Too few columns for the primary key");
        }

        if (count($args) > count($keyNames)) {
            require_once 'Zend/Db/Table/Exception.php';
            throw new Zend_Db_Table_Exception("Too many columns for the primary key");
        }

        $whereList = array();
        $numberTerms = 0;
        foreach ($args as $keyPosition => $keyValues) {
            // Coerce the values to an array.
            // Don't simply typecast to array, because the values
            // might be Zend_Db_Expr objects.
            if (!is_array($keyValues)) {
                $keyValues = array($keyValues);
            }
            if ($numberTerms == 0) {
                $numberTerms = count($keyValues);
            } else if (count($keyValues) != $numberTerms) {
                require_once 'Zend/Db/Table/Exception.php';
                throw new Zend_Db_Table_Exception("Missing value(s) for the primary key");
            }
            for ($i = 0; $i < count($keyValues); ++$i) {
                if (!isset($whereList[$i])) {
                    $whereList[$i] = array();
                }
                $whereList[$i][$keyPosition] = $keyValues[$i];
            }
        }

        $whereClause = null;
        if (count($whereList)) {
            $whereOrTerms = array();
            foreach ($whereList as $keyValueSets) {
                $whereAndTerms = array();
                foreach ($keyValueSets as $keyPosition => $keyValue) {
                    $type = $this->_metadata[$keyNames[$keyPosition]]['DATA_TYPE'];
                    $tableName = $this->_db->quoteTableAs($this->_name, null, true);
                    $columnName = $this->_db->quoteIdentifier($keyNames[$keyPosition], true);
                    $whereAndTerms[] = $this->_db->quoteInto(
                        $tableName . '.' . $columnName . ' = ?',
                        $keyValue, $type);
                }
                $whereOrTerms[] = '(' . implode(' AND ', $whereAndTerms) . ')';
            }
            $whereClause = '(' . implode(' OR ', $whereOrTerms) . ')';
        }

        return $this->fetchAll($whereClause);
    }

    /**
     * Fetches all rows.
     *
     * Honors the Zend_Db_Adapter fetch mode.
     *
     * @param string|array|Zend_Db_Table_Select $where  OPTIONAL An SQL WHERE clause or Zend_Db_Table_Select object.
     * @param string|array                      $order  OPTIONAL An SQL ORDER clause.
     * @param int                               $count  OPTIONAL An SQL LIMIT count.
     * @param int                               $offset OPTIONAL An SQL LIMIT offset.
     * @return Zend_Db_Table_Rowset_Abstract The row results per the Zend_Db_Adapter fetch mode.
     */
    public function fetchAll($where = null, $order = null, $count = null, $offset = null)
    {
        if (!($where instanceof Zend_Db_Table_Select)) {
            $select = $this->select();

            if ($where !== null) {
                $this->_where($select, $where);
            }

            if ($order !== null) {
                $this->_order($select, $order);
            }

            if ($count !== null || $offset !== null) {
                $select->limit($count, $offset);
            }

        } else {
            $select = $where;
        }

        $rows = $this->_fetch($select);

        $data  = array(
            'table'    => $this,
            'data'     => $rows,
            'readOnly' => $select->isReadOnly(),
            'rowClass' => $this->_rowClass,
            'stored'   => true
        );

        @Zend_Loader::loadClass($this->_rowsetClass);
        return new $this->_rowsetClass($data);
    }

    /**
     * Fetches one row in an object of type Zend_Db_Table_Row_Abstract,
     * or returns Boolean false if no row matches the specified criteria.
     *
     * @param string|array|Zend_Db_Table_Select $where  OPTIONAL An SQL WHERE clause or Zend_Db_Table_Select object.
     * @param string|array                      $order  OPTIONAL An SQL ORDER clause.
     * @return Zend_Db_Table_Row_Abstract The row results per the
     *     Zend_Db_Adapter fetch mode, or null if no row found.
     */
    public function fetchRow($where = null, $order = null)
    {
        if (!($where instanceof Zend_Db_Table_Select)) {
            $select = $this->select();

            if ($where !== null) {
                $this->_where($select, $where);
            }

            if ($order !== null) {
                $this->_order($select, $order);
            }

            $select->limit(1);

        } else {
            $select = $where->limit(1);
        }

        $rows = $this->_fetch($select);

        if (count($rows) == 0) {
            return null;
        }

        $data = array(
            'table'   => $this,
            'data'     => $rows[0],
            'readOnly' => $select->isReadOnly(),
            'stored'  => true
        );

        @Zend_Loader::loadClass($this->_rowClass);
        return new $this->_rowClass($data);
    }

    /**
     * Fetches a new blank row (not from the database).
     *
     * @return Zend_Db_Table_Row_Abstract
     * @deprecated since 0.9.3 - use createRow() instead.
     */
    public function fetchNew()
    {
        return $this->createRow();
    }

    /**
     * Fetches a new blank row (not from the database).
     *
     * @param  array $data OPTIONAL data to populate in the new row.
     * @param  string $defaultSource OPTIONAL flag to force default values into new row
     * @return Zend_Db_Table_Row_Abstract
     */
    public function createRow(array $data = array(), $defaultSource = null)
    {
        $cols     = $this->_getCols();
        $defaults = array_combine($cols, array_fill(0, count($cols), null));

        // nothing provided at call-time, take the class value
        if ($defaultSource == null) {
            $defaultSource = $this->_defaultSource;
        }

        if (!in_array($defaultSource, array(self::DEFAULT_CLASS, self::DEFAULT_DB, self::DEFAULT_NONE))) {
            $defaultSource = self::DEFAULT_NONE;
        }

        if ($defaultSource == self::DEFAULT_DB) {
            foreach ($this->_metadata as $metadataName => $metadata) {
                if (($metadata['DEFAULT'] != null) &&
                    ($metadata['NULLABLE'] !== true || ($metadata['NULLABLE'] === true && isset($this->_defaultValues[$metadataName]) && $this->_defaultValues[$metadataName] === true)) &&
                    (!(isset($this->_defaultValues[$metadataName]) && $this->_defaultValues[$metadataName] === false))) {
                    $defaults[$metadataName] = $metadata['DEFAULT'];
                }
            }
        } elseif ($defaultSource == self::DEFAULT_CLASS && $this->_defaultValues) {
            foreach ($this->_defaultValues as $defaultName => $defaultValue) {
                if (array_key_exists($defaultName, $defaults)) {
                    $defaults[$defaultName] = $defaultValue;
                }
            }
        }

        $config = array(
            'table'    => $this,
            'data'     => $defaults,
            'readOnly' => false,
            'stored'   => false
        );

        @Zend_Loader::loadClass($this->_rowClass);
        $row = new $this->_rowClass($config);
        $row->setFromArray($data);
        return $row;
    }

    /**
     * Generate WHERE clause from user-supplied string or array
     *
     * @param  string|array $where  OPTIONAL An SQL WHERE clause.
     * @return Zend_Db_Table_Select
     */
    protected function _where(Zend_Db_Table_Select $select, $where)
    {
        $where = (array) $where;

        foreach ($where as $key => $val) {
            // is $key an int?
            if (is_int($key)) {
                // $val is the full condition
                $select->where($val);
            } else {
                // $key is the condition with placeholder,
                // and $val is quoted into the condition
                $select->where($key, $val);
            }
        }

        return $select;
    }

    /**
     * Generate ORDER clause from user-supplied string or array
     *
     * @param  string|array $order  OPTIONAL An SQL ORDER clause.
     * @return Zend_Db_Table_Select
     */
    protected function _order(Zend_Db_Table_Select $select, $order)
    {
        if (!is_array($order)) {
            $order = array($order);
        }

        foreach ($order as $val) {
            $select->order($val);
        }

        return $select;
    }

    /**
     * Support method for fetching rows.
     *
     * @param  Zend_Db_Table_Select $select  query options.
     * @return array An array containing the row results in FETCH_ASSOC mode.
     */
    protected function _fetch(Zend_Db_Table_Select $select)
    {
        $stmt = $this->_db->query($select);
        $data = $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
        return $data;
    }

}
PKpG[�6$Db/Table/Row.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Row.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @see Zend_Db_Table_Row_Abstract
 */
require_once 'Zend/Db/Table/Row/Abstract.php';


/**
 * Reference concrete class that extends Zend_Db_Table_Row_Abstract.
 * Developers may also create their own classes that extend the abstract class.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Table_Row extends Zend_Db_Table_Row_Abstract
{
}
PKpG[YY����Db/Profiler/Firebug.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Db_Profiler */
require_once 'Zend/Db/Profiler.php';

/** Zend_Wildfire_Plugin_FirePhp */
require_once 'Zend/Wildfire/Plugin/FirePhp.php';

/** Zend_Wildfire_Plugin_FirePhp_TableMessage */
require_once 'Zend/Wildfire/Plugin/FirePhp/TableMessage.php';

/**
 * Writes DB events as log messages to the Firebug Console via FirePHP.
 * 
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Profiler_Firebug extends Zend_Db_Profiler
{
    /**
     * The original label for this profiler.
     * @var string
     */
    protected $_label = null;
    
    /**
     * The label template for this profiler
     * @var string
     */
    protected $_label_template = '%label% (%totalCount% @ %totalDuration% sec)';
  
    /**
     * The message envelope holding the profiling summary
     * @var Zend_Wildfire_Plugin_FirePhp_TableMessage
     */
    protected $_message = null;
  
    /**
     * The total time taken for all profiled queries.
     * @var float
     */
    protected $_totalElapsedTime = 0;
  
    /**
     * Constructor
     *
     * @param string $label OPTIONAL Label for the profiling info.
     * @return void
     */
    public function __construct($label = null)
    {
        $this->_label = $label;
        if(!$this->_label) {
            $this->_label = 'Zend_Db_Profiler_Firebug';
        }
    }

    /**
     * Enable or disable the profiler.  If $enable is false, the profiler
     * is disabled and will not log any queries sent to it.
     *
     * @param  boolean $enable
     * @return Zend_Db_Profiler Provides a fluent interface
     */
    public function setEnabled($enable)
    {
        parent::setEnabled($enable);

        if ($this->getEnabled()) {
          
            if (!$this->_message) {
                $this->_message = new Zend_Wildfire_Plugin_FirePhp_TableMessage($this->_label);
                $this->_message->setBuffered(true);
                $this->_message->setHeader(array('Time','Event','Parameters'));
                $this->_message->setDestroy(true);
                Zend_Wildfire_Plugin_FirePhp::getInstance()->send($this->_message);
            }

        } else {

            if ($this->_message) {
                $this->_message->setDestroy(true);
                $this->_message = null;
            }
          
        }

        return $this;
    }

    /**
     * Intercept the query end and log the profiling data.
     *
     * @param  integer $queryId
     * @throws Zend_Db_Profiler_Exception
     * @return void
     */
    public function queryEnd($queryId)
    {
        parent::queryEnd($queryId);
        
        if (!$this->getEnabled()) {
            return;
        }

        $this->_message->setDestroy(false);

        $profile = $this->getQueryProfile($queryId);
        
        $this->_totalElapsedTime += $profile->getElapsedSecs();
        
        $this->_message->addRow(array((string)round($profile->getElapsedSecs(),5),
                                      $profile->getQuery(),
                                      ($params=$profile->getQueryParams())?$params:null));
                                      
        $this->updateMessageLabel();
    }
    
    /**
     * Update the label of the message holding the profile info.
     * 
     * @return void
     */
    protected function updateMessageLabel()
    {
        if (!$this->_message) {
            return;
        }
        $this->_message->setLabel(str_replace(array('%label%',
                                                    '%totalCount%',
                                                    '%totalDuration%'),
                                              array($this->_label,
                                                    $this->getTotalNumQueries(),
                                                    (string)round($this->_totalElapsedTime,5)),
                                              $this->_label_template));
    }
}
PKpG[�$�>OODb/Profiler/Query.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Query.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Profiler_Query
{

    /**
     * SQL query string or user comment, set by $query argument in constructor.
     *
     * @var string
     */
    protected $_query = '';

    /**
     * One of the Zend_Db_Profiler constants for query type, set by $queryType argument in constructor.
     *
     * @var integer
     */
    protected $_queryType = 0;

    /**
     * Unix timestamp with microseconds when instantiated.
     *
     * @var float
     */
    protected $_startedMicrotime = null;

    /**
     * Unix timestamp with microseconds when self::queryEnd() was called.
     *
     * @var integer
     */
    protected $_endedMicrotime = null;

    /**
     * @var array
     */
    protected $_boundParams = array();

    /**
     * @var array
     */

    /**
     * Class constructor.  A query is about to be started, save the query text ($query) and its
     * type (one of the Zend_Db_Profiler::* constants).
     *
     * @param  string  $query
     * @param  integer $queryType
     * @return void
     */
    public function __construct($query, $queryType)
    {
        $this->_query = $query;
        $this->_queryType = $queryType;
        // by default, and for backward-compatibility, start the click ticking
        $this->start();
    }

    /**
     * Clone handler for the query object.
     * @return void
     */
    public function __clone()
    {
        $this->_boundParams = array();
        $this->_endedMicrotime = null;
        $this->start();
    }

    /**
     * Starts the elapsed time click ticking.
     * This can be called subsequent to object creation,
     * to restart the clock.  For instance, this is useful
     * right before executing a prepared query.
     *
     * @return void
     */
    public function start()
    {
        $this->_startedMicrotime = microtime(true);
    }

    /**
     * Ends the query and records the time so that the elapsed time can be determined later.
     *
     * @return void
     */
    public function end()
    {
        $this->_endedMicrotime = microtime(true);
    }

    /**
     * Returns true if and only if the query has ended.
     *
     * @return boolean
     */
    public function hasEnded()
    {
        return $this->_endedMicrotime !== null;
    }

    /**
     * Get the original SQL text of the query.
     *
     * @return string
     */
    public function getQuery()
    {
        return $this->_query;
    }

    /**
     * Get the type of this query (one of the Zend_Db_Profiler::* constants)
     *
     * @return integer
     */
    public function getQueryType()
    {
        return $this->_queryType;
    }

    /**
     * @param string $param
     * @param mixed $variable
     * @return void
     */
    public function bindParam($param, $variable)
    {
        $this->_boundParams[$param] = $variable;
    }

    /**
     * @param array $param
     * @return void
     */
    public function bindParams(array $params)
    {
        if (array_key_exists(0, $params)) {
            array_unshift($params, null);
            unset($params[0]);
        }
        foreach ($params as $param => $value) {
            $this->bindParam($param, $value);
        }
    }

    /**
     * @return array
     */
    public function getQueryParams()
    {
        return $this->_boundParams;
    }

    /**
     * Get the elapsed time (in seconds) that the query ran.
     * If the query has not yet ended, false is returned.
     *
     * @return float|false
     */
    public function getElapsedSecs()
    {
        if (null === $this->_endedMicrotime) {
            return false;
        }

        return $this->_endedMicrotime - $this->_startedMicrotime;
    }
}

PKpG[�f��||Db/Profiler/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9101 2008-03-30 19:54:38Z thomas $
 */


/**
 * @see Zend_Db_Exception
 */
require_once 'Zend/Db/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Profiler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Profiler_Exception extends Zend_Db_Exception
{
}

PKpG[,�8q�3�3Db/Statement.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Db
 */
require_once 'Zend/Db.php';

/**
 * @see Zend_Db_Statement_Interface
 */
require_once 'Zend/Db/Statement/Interface.php';

/**
 * Abstract class to emulate a PDOStatement for native database adapters.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Statement
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Statement implements Zend_Db_Statement_Interface
{

    /**
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_adapter = null;

    /**
     * The current fetch mode.
     *
     * @var integer
     */
    protected $_fetchMode = Zend_Db::FETCH_ASSOC;

    /**
     * Attributes.
     *
     * @var array
     */
    protected $_attribute = array();

    /**
     * Column result bindings.
     *
     * @var array
     */
    protected $_bindColumn = array();

    /**
     * Query parameter bindings; covers bindParam() and bindValue().
     *
     * @var array
     */
    protected $_bindParam = array();

    /**
     * SQL string split into an array at placeholders.
     *
     * @var array
     */
    protected $_sqlSplit = array();

    /**
     * Parameter placeholders in the SQL string by position in the split array.
     *
     * @var array
     */
    protected $_sqlParam = array();

    /**
     * @var Zend_Db_Profiler_Query
     */
    protected $_queryId = null;

    /**
     * Constructor for a statement.
     *
     * @param Zend_Db_Adapter_Abstract $adapter
     * @param mixed $sql Either a string or Zend_Db_Select.
     */
    public function __construct($adapter, $sql)
    {
        $this->_adapter = $adapter;
        if ($sql instanceof Zend_Db_Select) {
            $sql = $sql->assemble();
        }
        $this->_parseParameters($sql);
        $this->_prepare($sql);

        $this->_queryId = $this->_adapter->getProfiler()->queryStart($sql);
    }

    /**
     * @param string $sql
     * @return void
     */
    protected function _parseParameters($sql)
    {
        $sql = $this->_stripQuoted($sql);

        // split into text and params
        $this->_sqlSplit = preg_split('/(\?|\:[a-zA-Z0-9_]+)/',
            $sql, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);

        // map params
        $this->_sqlParam = array();
        foreach ($this->_sqlSplit as $key => $val) {
            if ($val == '?') {
                if ($this->_adapter->supportsParameters('positional') === false) {
                    /**
                     * @see Zend_Db_Statement_Exception
                     */
                    require_once 'Zend/Db/Statement/Exception.php';
                    throw new Zend_Db_Statement_Exception("Invalid bind-variable position '$val'");
                }
            } else if ($val[0] == ':') {
                if ($this->_adapter->supportsParameters('named') === false) {
                    /**
                     * @see Zend_Db_Statement_Exception
                     */
                    require_once 'Zend/Db/Statement/Exception.php';
                    throw new Zend_Db_Statement_Exception("Invalid bind-variable name '$val'");
                }
            }
            $this->_sqlParam[] = $val;
        }

        // set up for binding
        $this->_bindParam = array();
    }

    /**
     * Remove parts of a SQL string that contain quoted strings
     * of values or identifiers.
     *
     * @param string $sql
     * @return string
     */
    protected function _stripQuoted($sql)
    {
        // get the character for delimited id quotes,
        // this is usually " but in MySQL is `
        $d = $this->_adapter->quoteIdentifier('a');
        $d = $d[0];

        // get the value used as an escaped delimited id quote,
        // e.g. \" or "" or \`
        $de = $this->_adapter->quoteIdentifier($d);
        $de = substr($de, 1, 2);
        $de = str_replace('\\', '\\\\', $de);

        // get the character for value quoting
        // this should be '
        $q = $this->_adapter->quote('a');
        $q = $q[0];

        // get the value used as an escaped quote,
        // e.g. \' or ''
        $qe = $this->_adapter->quote($q);
        $qe = substr($qe, 1, 2);
        $qe = str_replace('\\', '\\\\', $qe);

        // get a version of the SQL statement with all quoted
        // values and delimited identifiers stripped out
        // remove "foo\"bar"
        $sql = preg_replace("/$q($qe|\\\\{2}|[^$q])*$q/", '', $sql);
        // remove 'foo\'bar'
        if (!empty($q)) {
            $sql = preg_replace("/$q($qe|[^$q])*$q/", '', $sql);
        }

        return $sql;
    }

    /**
     * Bind a column of the statement result set to a PHP variable.
     *
     * @param string $column Name the column in the result set, either by
     *                       position or by name.
     * @param mixed  $param  Reference to the PHP variable containing the value.
     * @param mixed  $type   OPTIONAL
     * @return bool
     */
    public function bindColumn($column, &$param, $type = null)
    {
        $this->_bindColumn[$column] =& $param;
        return true;
    }

    /**
     * Binds a parameter to the specified variable name.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $variable  Reference to PHP variable containing the value.
     * @param mixed $type      OPTIONAL Datatype of SQL parameter.
     * @param mixed $length    OPTIONAL Length of SQL parameter.
     * @param mixed $options   OPTIONAL Other options.
     * @return bool
     */
    public function bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
    {
        if (!is_int($parameter) && !is_string($parameter)) {
            /**
             * @see Zend_Db_Statement_Exception
             */
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception('Invalid bind-variable position');
        }

        $position = null;
        if (($intval = (int) $parameter) > 0 && $this->_adapter->supportsParameters('positional')) {
            if ($intval >= 1 || $intval <= count($this->_sqlParam)) {
                $position = $intval;
            }
        } else if ($this->_adapter->supportsParameters('named')) {
            if ($parameter[0] != ':') {
                $parameter = ':' . $parameter;
            }
            if (in_array($parameter, $this->_sqlParam) !== false) {
                $position = $parameter;
            }
        }

        if ($position === null) {
            /**
             * @see Zend_Db_Statement_Exception
             */
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception("Invalid bind-variable position '$parameter'");
        }

        // Finally we are assured that $position is valid
        $this->_bindParam[$position] =& $variable;
        return $this->_bindParam($position, $variable, $type, $length, $options);
    }

    /**
     * Binds a value to a parameter.
     *
     * @param mixed $parameter Name the parameter, either integer or string.
     * @param mixed $value     Scalar value to bind to the parameter.
     * @param mixed $type      OPTIONAL Datatype of the parameter.
     * @return bool
     */
    public function bindValue($parameter, $value, $type = null)
    {
        return $this->bindParam($parameter, $value, $type);
    }

    /**
     * Executes a prepared statement.
     *
     * @param array $params OPTIONAL Values to bind to parameter placeholders.
     * @return bool
     */
    public function execute(array $params = null)
    {
        /*
         * Simple case - no query profiler to manage.
         */
        if ($this->_queryId === null) {
            return $this->_execute($params);
        }

        /*
         * Do the same thing, but with query profiler
         * management before and after the execute.
         */
        $prof = $this->_adapter->getProfiler();
        $qp = $prof->getQueryProfile($this->_queryId);
        if ($qp->hasEnded()) {
            $this->_queryId = $prof->queryClone($qp);
            $qp = $prof->getQueryProfile($this->_queryId);
        }
        if ($params !== null) {
            $qp->bindParams($params);
        } else {
            $qp->bindParams($this->_bindParam);
        }
        $qp->start($this->_queryId);

        $retval = $this->_execute($params);

        $prof->queryEnd($this->_queryId);

        return $retval;
    }

    /**
     * Returns an array containing all of the result set rows.
     *
     * @param int $style OPTIONAL Fetch mode.
     * @param int $col   OPTIONAL Column number, if fetch mode is by column.
     * @return array Collection of rows, each in a format by the fetch mode.
     */
    public function fetchAll($style = null, $col = null)
    {
        $data = array();
        if ($style === Zend_Db::FETCH_COLUMN && $col === null) {
            $col = 0;
        }
        if ($col === null) {
            while ($row = $this->fetch($style)) {
                $data[] = $row;
            }
        } else {
            while ($val = $this->fetchColumn($col)) {
                $data[] = $val;
            }
        }
        return $data;
    }

    /**
     * Returns a single column from the next row of a result set.
     *
     * @param int $col OPTIONAL Position of the column to fetch.
     * @return string One value from the next row of result set, or false.
     */
    public function fetchColumn($col = 0)
    {
        $data = array();
        $col = (int) $col;
        $row = $this->fetch(Zend_Db::FETCH_NUM);
        if (!is_array($row)) {
            return false;
        }
        return $row[$col];
    }

    /**
     * Fetches the next row and returns it as an object.
     *
     * @param string $class  OPTIONAL Name of the class to create.
     * @param array  $config OPTIONAL Constructor arguments for the class.
     * @return mixed One object instance of the specified class, or false.
     */
    public function fetchObject($class = 'stdClass', array $config = array())
    {
        $obj = new $class($config);
        $row = $this->fetch(Zend_Db::FETCH_ASSOC);
        if (!is_array($row)) {
            return false;
        }
        foreach ($row as $key => $val) {
            $obj->$key = $val;
        }
        return $obj;
    }

    /**
     * Retrieve a statement attribute.
     *
     * @param string $key Attribute name.
     * @return mixed      Attribute value.
     */
    public function getAttribute($key)
    {
        if (array_key_exists($key, $this->_attribute)) {
            return $this->_attribute[$key];
        }
    }

    /**
     * Set a statement attribute.
     *
     * @param string $key Attribute name.
     * @param mixed  $val Attribute value.
     * @return bool
     */
    public function setAttribute($key, $val)
    {
        $this->_attribute[$key] = $val;
    }

    /**
     * Set the default fetch mode for this statement.
     *
     * @param int   $mode The fetch mode.
     * @return bool
     * @throws Zend_Db_Statement_Exception
     */
    public function setFetchMode($mode)
    {
        switch ($mode) {
            case Zend_Db::FETCH_NUM:
            case Zend_Db::FETCH_ASSOC:
            case Zend_Db::FETCH_BOTH:
            case Zend_Db::FETCH_OBJ:
                $this->_fetchMode = $mode;
                break;
            case Zend_Db::FETCH_BOUND:
            default:
                $this->closeCursor();
                /**
                 * @see Zend_Db_Statement_Exception
                 */
                require_once 'Zend/Db/Statement/Exception.php';
                throw new Zend_Db_Statement_Exception('invalid fetch mode');
                break;
        }
    }

    /**
     * Helper function to map retrieved row
     * to bound column variables
     *
     * @param array $row
     * @return bool True
     */
    public function _fetchBound($row)
    {
        foreach ($row as $key => $value) {
            // bindColumn() takes 1-based integer positions
            // but fetch() returns 0-based integer indexes
            if (is_int($key)) {
                $key++;
            }
            // set results only to variables that were bound previously
            if (isset($this->_bindColumn[$key])) {
                $this->_bindColumn[$key] = $value;
            }
        }
        return true;
    }

}
PKpG[���U�U�
Db/Select.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Select.php 6897 2007-11-22 08:31:59Z thomas $
 */


/**
 * @see Zend_Db_Adapter_Abstract
 */
require_once 'Zend/Db/Adapter/Abstract.php';

/**
 * @see Zend_Db_Expr
 */
require_once 'Zend/Db/Expr.php';


/**
 * Class for SQL SELECT generation and results.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Select
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Select
{

    const DISTINCT       = 'distinct';
    const COLUMNS        = 'columns';
    const FROM           = 'from';
    const UNION          = 'union';
    const WHERE          = 'where';
    const GROUP          = 'group';
    const HAVING         = 'having';
    const ORDER          = 'order';
    const LIMIT_COUNT    = 'limitcount';
    const LIMIT_OFFSET   = 'limitoffset';
    const FOR_UPDATE     = 'forupdate';

    const INNER_JOIN     = 'inner join';
    const LEFT_JOIN      = 'left join';
    const RIGHT_JOIN     = 'right join';
    const FULL_JOIN      = 'full join';
    const CROSS_JOIN     = 'cross join';
    const NATURAL_JOIN   = 'natural join';

    const SQL_WILDCARD   = '*';
    const SQL_SELECT     = 'SELECT';
    const SQL_UNION      = 'UNION';
    const SQL_UNION_ALL  = 'UNION ALL';
    const SQL_FROM       = 'FROM';
    const SQL_WHERE      = 'WHERE';
    const SQL_DISTINCT   = 'DISTINCT';
    const SQL_GROUP_BY   = 'GROUP BY';
    const SQL_ORDER_BY   = 'ORDER BY';
    const SQL_HAVING     = 'HAVING';
    const SQL_FOR_UPDATE = 'FOR UPDATE';
    const SQL_AND        = 'AND';
    const SQL_AS         = 'AS';
    const SQL_OR         = 'OR';
    const SQL_ON         = 'ON';
    const SQL_ASC        = 'ASC';
    const SQL_DESC       = 'DESC';

    /**
     * Zend_Db_Adapter_Abstract object.
     *
     * @var Zend_Db_Adapter_Abstract
     */
    protected $_adapter;

    /**
     * The initial values for the $_parts array.
     * NOTE: It is important for the 'FOR_UPDATE' part to be last to ensure
     * meximum compatibility with database adapters.
     *
     * @var array
     */
    protected static $_partsInit = array(
        self::DISTINCT     => false,
        self::COLUMNS      => array(),
        self::UNION        => array(),
        self::FROM         => array(),
        self::WHERE        => array(),
        self::GROUP        => array(),
        self::HAVING       => array(),
        self::ORDER        => array(),
        self::LIMIT_COUNT  => null,
        self::LIMIT_OFFSET => null,
        self::FOR_UPDATE   => false
    );

    /**
     * Specify legal join types.
     *
     * @var array
     */
    protected static $_joinTypes = array(
        self::INNER_JOIN,
        self::LEFT_JOIN,
        self::RIGHT_JOIN,
        self::FULL_JOIN,
        self::CROSS_JOIN,
        self::NATURAL_JOIN,
    );

    /**
     * Specify legal union types.
     *
     * @var array
     */
    protected static $_unionTypes = array(
        self::SQL_UNION,
        self::SQL_UNION_ALL
    );

    /**
     * The component parts of a SELECT statement.
     * Initialized to the $_partsInit array in the constructor.
     *
     * @var array
     */
    protected $_parts = array();

    /**
     * Tracks which columns are being select from each table and join.
     *
     * @var array
     */
    protected $_tableCols = array();

    /**
     * Class constructor
     *
     * @param Zend_Db_Adapter_Abstract $adapter
     */
    public function __construct(Zend_Db_Adapter_Abstract $adapter)
    {
        $this->_adapter = $adapter;
        $this->_parts = self::$_partsInit;
    }

    /**
     * Makes the query SELECT DISTINCT.
     *
     * @param bool $flag Whether or not the SELECT is DISTINCT (default true).
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function distinct($flag = true)
    {
        $this->_parts[self::DISTINCT] = (bool) $flag;
        return $this;
    }

    /**
     * Adds a FROM table and optional columns to the query.
     *
     * The first parameter $name can be a simple string, in which case the
     * correlation name is generated automatically.  If you want to specify
     * the correlation name, the first parameter must be an associative
     * array in which the key is the physical table name, and the value is
     * the correlation name.  For example, array('table' => 'alias').
     * The correlation name is prepended to all columns fetched for this
     * table.
     *
     * The second parameter can be a single string or Zend_Db_Expr object,
     * or else an array of strings or Zend_Db_Expr objects.
     *
     * The first parameter can be null or an empty string, in which case
     * no correlation name is generated or prepended to the columns named
     * in the second parameter.
     *
     * @param  array|string|Zend_Db_Expr $name The table name or an associative array relating table name to
     *                                         correlation name.
     * @param  array|string|Zend_Db_Expr $cols The columns to select from this table.
     * @param  string $schema The schema name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function from($name, $cols = '*', $schema = null)
    {
        return $this->joinInner($name, null, $cols, $schema);
    }

    /**
     * Specifies the columns used in the FROM clause.
     *
     * The parameter can be a single string or Zend_Db_Expr object,
     * or else an array of strings or Zend_Db_Expr objects.
     *
     * @param  array|string|Zend_Db_Expr $cols The columns to select from this table.
     * @param  string $correlationName Correlation name of target table. OPTIONAL
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function columns($cols = '*', $correlationName = null)
    {
        if ($correlationName === null && count($this->_parts[self::FROM])) {
            $correlationName = current(array_keys($this->_parts[self::FROM]));
        }

        if (!array_key_exists($correlationName, $this->_parts[self::FROM])) {
            /**
             * @see Zend_Db_Select_Exception
             */
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("No table has been specified for the FROM clause");
        }

        $this->_tableCols($correlationName, $cols);

        return $this;
    }

    /**
     * Adds a UNION clause to the query.
     *
     * The first parameter $select can be a string, an existing Zend_Db_Select
     * object or an array of either of these types.
     *
     * @param  array|string|Zend_Db_Select $select One or more select clauses for the UNION.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function union($select = array(), $type = self::SQL_UNION)
    {
        if (!is_array($select)) {
            $select = array();
        }

        if (!in_array($type, self::$_unionTypes)) {
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("Invalid union type '{$type}'");
        }

        foreach ($select as $target) {
            $this->_parts[self::UNION][] = array($target, $type);
        }

        return $this;
    }

    /**
     * Adds a JOIN table and columns to the query.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  string $cond Join on this condition.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function join($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->joinInner($name, $cond, $cols, $schema);
    }

    /**
     * Add an INNER JOIN table and colums to the query
     * Rows in both tables are matched according to the expression
     * in the $cond argument.  The result set is comprised
     * of all cases where rows from the left table match
     * rows from the right table.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  string $cond Join on this condition.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinInner($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::INNER_JOIN, $name, $cond, $cols, $schema);
    }

    /**
     * Add a LEFT OUTER JOIN table and colums to the query
     * All rows from the left operand table are included,
     * matching rows from the right operand table included,
     * and the columns from the right operand table are filled
     * with NULLs if no row exists matching the left table.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  string $cond Join on this condition.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinLeft($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::LEFT_JOIN, $name, $cond, $cols, $schema);
    }

    /**
     * Add a RIGHT OUTER JOIN table and colums to the query.
     * Right outer join is the complement of left outer join.
     * All rows from the right operand table are included,
     * matching rows from the left operand table included,
     * and the columns from the left operand table are filled
     * with NULLs if no row exists matching the right table.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  string $cond Join on this condition.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinRight($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::RIGHT_JOIN, $name, $cond, $cols, $schema);
    }

    /**
     * Add a FULL OUTER JOIN table and colums to the query.
     * A full outer join is like combining a left outer join
     * and a right outer join.  All rows from both tables are
     * included, paired with each other on the same row of the
     * result set if they satisfy the join condition, and otherwise
     * paired with NULLs in place of columns from the other table.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  string $cond Join on this condition.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinFull($name, $cond, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::FULL_JOIN, $name, $cond, $cols, $schema);
    }

    /**
     * Add a CROSS JOIN table and colums to the query.
     * A cross join is a cartesian product; there is no join condition.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinCross($name, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::CROSS_JOIN, $name, null, $cols, $schema);
    }

    /**
     * Add a NATURAL JOIN table and colums to the query.
     * A natural join assumes an equi-join across any column(s)
     * that appear with the same name in both tables.
     * Only natural inner joins are supported by this API,
     * even though SQL permits natural outer joins as well.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  array|string|Zend_Db_Expr $name The table name.
     * @param  array|string $cols The columns to select from the joined table.
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function joinNatural($name, $cols = self::SQL_WILDCARD, $schema = null)
    {
        return $this->_join(self::NATURAL_JOIN, $name, null, $cols, $schema);
    }

    /**
     * Adds a WHERE condition to the query by AND.
     *
     * If a value is passed as the second param, it will be quoted
     * and replaced into the condition wherever a question-mark
     * appears. Array values are quoted and comma-separated.
     *
     * <code>
     * // simplest but non-secure
     * $select->where("id = $id");
     *
     * // secure (ID is quoted but matched anyway)
     * $select->where('id = ?', $id);
     *
     * // alternatively, with named binding
     * $select->where('id = :id');
     * </code>
     *
     * Note that it is more correct to use named bindings in your
     * queries for values other than strings. When you use named
     * bindings, don't forget to pass the values when actually
     * making a query:
     *
     * <code>
     * $db->fetchAll($select, array('id' => 5));
     * </code>
     *
     * @param string   $cond  The WHERE condition.
     * @param string   $value OPTIONAL A single value to quote into the condition.
     * @param constant $type  OPTIONAL The type of the given value
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function where($cond, $value = null, $type = null)
    {
        $this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, true);

        return $this;
    }

    /**
     * Adds a WHERE condition to the query by OR.
     *
     * Otherwise identical to where().
     *
     * @param string   $cond  The WHERE condition.
     * @param string   $value OPTIONAL A single value to quote into the condition.
     * @param constant $type  OPTIONAL The type of the given value
     * @return Zend_Db_Select This Zend_Db_Select object.
     *
     * @see where()
     */
    public function orWhere($cond, $value = null, $type = null)
    {
        $this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, false);

        return $this;
    }

    /**
     * Adds grouping to the query.
     *
     * @param  array|string $spec The column(s) to group by.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function group($spec)
    {
        if (!is_array($spec)) {
            $spec = array($spec);
        }

        foreach ($spec as $val) {
            if (preg_match('/\(.*\)/', (string) $val)) {
                $val = new Zend_Db_Expr($val);
            }
            $this->_parts[self::GROUP][] = $val;
        }

        return $this;
    }

    /**
     * Adds a HAVING condition to the query by AND.
     *
     * If a value is passed as the second param, it will be quoted
     * and replaced into the condition wherever a question-mark
     * appears. See {@link where()} for an example
     *
     * @param string $cond The HAVING condition.
     * @param string|Zend_Db_Expr $val A single value to quote into the condition.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function having($cond)
    {
        if (func_num_args() > 1) {
            $val = func_get_arg(1);
            $cond = $this->_adapter->quoteInto($cond, $val);
        }

        if ($this->_parts[self::HAVING]) {
            $this->_parts[self::HAVING][] = self::SQL_AND . " ($cond)";
        } else {
            $this->_parts[self::HAVING][] = "($cond)";
        }

        return $this;
    }

    /**
     * Adds a HAVING condition to the query by OR.
     *
     * Otherwise identical to orHaving().
     *
     * @param string $cond The HAVING condition.
     * @param string $val A single value to quote into the condition.
     * @return Zend_Db_Select This Zend_Db_Select object.
     *
     * @see having()
     */
    public function orHaving($cond)
    {
        if (func_num_args() > 1) {
            $val = func_get_arg(1);
            $cond = $this->_adapter->quoteInto($cond, $val);
        }

        if ($this->_parts[self::HAVING]) {
            $this->_parts[self::HAVING][] = self::SQL_OR . " ($cond)";
        } else {
            $this->_parts[self::HAVING][] = "($cond)";
        }

        return $this;
    }

    /**
     * Adds a row order to the query.
     *
     * @param mixed $spec The column(s) and direction to order by.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function order($spec)
    {
        if (!is_array($spec)) {
            $spec = array($spec);
        }

        // force 'ASC' or 'DESC' on each order spec, default is ASC.
        foreach ($spec as $val) {
            if ($val instanceof Zend_Db_Expr) {
                $expr = $val->__toString();
                if (empty($expr)) {
                    continue;
                }
                $this->_parts[self::ORDER][] = $val;
            } else {
                if (empty($val)) {
                    continue;
                }
                $direction = self::SQL_ASC;
                if (preg_match('/(.*\W)(' . self::SQL_ASC . '|' . self::SQL_DESC . ')\b/si', $val, $matches)) {
                    $val = trim($matches[1]);
                    $direction = $matches[2];
                }
                if (preg_match('/\(.*\)/', $val)) {
                    $val = new Zend_Db_Expr($val);
                }
                $this->_parts[self::ORDER][] = array($val, $direction);
            }
        }

        return $this;
    }

    /**
     * Sets a limit count and offset to the query.
     *
     * @param int $count OPTIONAL The number of rows to return.
     * @param int $offset OPTIONAL Start returning after this many rows.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function limit($count = null, $offset = null)
    {
        $this->_parts[self::LIMIT_COUNT]  = (int) $count;
        $this->_parts[self::LIMIT_OFFSET] = (int) $offset;
        return $this;
    }

    /**
     * Sets the limit and count by page number.
     *
     * @param int $page Limit results to this page number.
     * @param int $rowCount Use this many rows per page.
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function limitPage($page, $rowCount)
    {
        $page     = ($page > 0)     ? $page     : 1;
        $rowCount = ($rowCount > 0) ? $rowCount : 1;
        $this->_parts[self::LIMIT_COUNT]  = (int) $rowCount;
        $this->_parts[self::LIMIT_OFFSET] = (int) $rowCount * ($page - 1);
        return $this;
    }

    /**
     * Makes the query SELECT FOR UPDATE.
     *
     * @param bool $flag Whether or not the SELECT is FOR UPDATE (default true).
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function forUpdate($flag = true)
    {
        $this->_parts[self::FOR_UPDATE] = (bool) $flag;
        return $this;
    }

    /**
     * Get part of the structured information for the currect query.
     *
     * @param string $part
     * @return mixed
     * @throws Zend_Db_Select_Exception
     */
    public function getPart($part)
    {
        $part = strtolower($part);
        if (!array_key_exists($part, $this->_parts)) {
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("Invalid Select part '$part'");
        }
        return $this->_parts[$part];
    }

    /**
     * Executes the current select object and returns the result
     *
     * @param integer $fetchMode OPTIONAL
     * @return PDO_Statement|Zend_Db_Statement
     */
    public function query($fetchMode = null)
    {
        $stmt = $this->_adapter->query($this);
        if ($fetchMode == null) {
            $fetchMode = $this->_adapter->getFetchMode();
        }
        $stmt->setFetchMode($fetchMode);
        return $stmt;
    }

    /**
     * Converts this object to an SQL SELECT string.
     *
     * @return string This object as a SELECT string.
     */
    public function assemble()
    {
        $sql = self::SQL_SELECT;
        foreach (array_keys(self::$_partsInit) as $part) {
            $method = '_render' . ucfirst($part);
            if (method_exists($this, $method)) {
                $sql = $this->$method($sql);
            }
        }
        return $sql;
    }

    /**
     * Clear parts of the Select object, or an individual part.
     *
     * @param string $part OPTIONAL
     * @return Zend_Db_Select
     */
    public function reset($part = null)
    {
        if ($part == null) {
            $this->_parts = self::$_partsInit;
        } else if (array_key_exists($part, self::$_partsInit)) {
            $this->_parts[$part] = self::$_partsInit[$part];
        }
        return $this;
    }

    /**
     * Gets the Zend_Db_Adapter_Abstract for this
     * particular Zend_Db_Select object.
     *
     * @return Zend_Db_Adapter_Abstract
     */
    public function getAdapter()
    {
        return $this->_adapter;
    }

    /**
     * Populate the {@link $_parts} 'join' key
     *
     * Does the dirty work of populating the join key.
     *
     * The $name and $cols parameters follow the same logic
     * as described in the from() method.
     *
     * @param  null|string $type Type of join; inner, left, and null are currently supported
     * @param  array|string|Zend_Db_Expr $name Table name
     * @param  string $cond Join on this condition
     * @param  array|string $cols The columns to select from the joined table
     * @param  string $schema The database name to specify, if any.
     * @return Zend_Db_Select This Zend_Db_Select object
     * @throws Zend_Db_Select_Exception
     */
    protected function _join($type, $name, $cond, $cols, $schema = null)
    {
        if (!in_array($type, self::$_joinTypes)) {
            /**
             * @see Zend_Db_Select_Exception
             */
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("Invalid join type '$type'");
        }

        if (count($this->_parts[self::UNION])) {
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("Invalid use of table with " . self::SQL_UNION);
        }

        if (empty($name)) {
            $correlationName = $tableName = '';
        } else if (is_array($name)) {
            // Must be array($correlationName => $tableName) or array($ident, ...)
            foreach ($name as $_correlationName => $_tableName) {
                if (is_string($_correlationName)) {
                    // We assume the key is the correlation name and value is the table name
                    $tableName = $_tableName;
                    $correlationName = $_correlationName;
                } else {
                    // We assume just an array of identifiers, with no correlation name
                    $tableName = $name;
                    $correlationName = $this->_uniqueCorrelation($tableName);
                }
                break;
            }
        } else if ($name instanceof Zend_Db_Expr|| $name instanceof Zend_Db_Select) {
            $tableName = $name;
            $correlationName = $this->_uniqueCorrelation('t');
        } else if (preg_match('/^(.+)\s+AS\s+(.+)$/i', $name, $m)) {
            $tableName = $m[1];
            $correlationName = $m[2];
        } else {
            $tableName = $name;
            $correlationName = $this->_uniqueCorrelation($tableName);
        }

        // Schema from table name overrides schema argument
        if (!is_object($tableName) && false !== strpos($tableName, '.')) {
            list($schema, $tableName) = explode('.', $tableName);
        }

        if (!empty($correlationName)) {
            if (array_key_exists($correlationName, $this->_parts[self::FROM])) {
                /**
                 * @see Zend_Db_Select_Exception
                 */
                require_once 'Zend/Db/Select/Exception.php';
                throw new Zend_Db_Select_Exception("You cannot define a correlation name '$correlationName' more than once");
            }

            $this->_parts[self::FROM][$correlationName] = array(
                'joinType'      => $type,
                'schema'        => $schema,
                'tableName'     => $tableName,
                'joinCondition' => $cond
            );
        }

        // add to the columns from this joined table
        $this->_tableCols($correlationName, $cols);

        return $this;
    }

    /**
     * Handle JOIN... USING... syntax
     *
     * This is functionality identical to the existing JOIN methods, however
     * the join condition can be passed as a single column name. This method
     * then completes the ON condition by using the same field for the FROM
     * table and the JOIN table.
     *
     * <code>
     * $select = $db->select()->from('table1')
     *                        ->joinUsing('table2', 'column1');
     *
     * // SELECT * FROM table1 JOIN table2 ON table1.column1 = table2.column2
     * </code>
     *
     * These joins are called by the developer simply by adding 'Using' to the
     * method name. E.g.
     * * joinUsing
     * * joinInnerUsing
     * * joinFullUsing
     * * joinRightUsing
     * * joinLeftUsing
     *
     * @return Zend_Db_Select This Zend_Db_Select object.
     */
    public function _joinUsing($type, $name, $cond, $cols = '*', $schema = null)
    {
        if (empty($this->_parts[self::FROM])) {
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("You can only perform a joinUsing after specifying a FROM table");
        }

        $join  = $this->_adapter->quoteIdentifier(key($this->_parts[self::FROM]), true);
        $from  = $this->_adapter->quoteIdentifier($this->_uniqueCorrelation($name), true);

        $cond1 = $from . '.' . $cond;
        $cond2 = $join . '.' . $cond;
        $cond  = $cond1 . ' = ' . $cond2;

        return $this->_join($type, $name, $cond, $cols, $schema);
    }

    /**
     * Generate a unique correlation name
     *
     * @param string|array $name A qualified identifier.
     * @return string A unique correlation name.
     */
    private function _uniqueCorrelation($name)
    {
        if (is_array($name)) {
            $c = end($name);
        } else {
            // Extract just the last name of a qualified table name
            $dot = strrpos($name,'.');
            $c = ($dot === false) ? $name : substr($name, $dot+1);
        }
        for ($i = 2; array_key_exists($c, $this->_parts[self::FROM]); ++$i) {
            $c = $name . '_' . (string) $i;
        }
        return $c;
    }

    /**
     * Adds to the internal table-to-column mapping array.
     *
     * @param  string $tbl The table/join the columns come from.
     * @param  array|string $cols The list of columns; preferably as
     * an array, but possibly as a string containing one column.
     * @return void
     */
    protected function _tableCols($correlationName, $cols)
    {
        if (!is_array($cols)) {
            $cols = array($cols);
        }

        if ($correlationName == null) {
            $correlationName = '';
        }

        foreach (array_filter($cols) as $alias => $col) {
            $currentCorrelationName = $correlationName;
            if (is_string($col)) {
                // Check for a column matching "<column> AS <alias>" and extract the alias name
                if (preg_match('/^(.+)\s+' . self::SQL_AS . '\s+(.+)$/i', $col, $m)) {
                    $col = $m[1];
                    $alias = $m[2];
                }
                // Check for columns that look like functions and convert to Zend_Db_Expr
                if (preg_match('/\(.*\)/', $col)) {
                    $col = new Zend_Db_Expr($col);
                } elseif (preg_match('/(.+)\.(.+)/', $col, $m)) {
                    $currentCorrelationName = $m[1];
                    $col = $m[2];
                }
            }
            $this->_parts[self::COLUMNS][] = array($currentCorrelationName, $col, is_string($alias) ? $alias : null);
        }
    }

    /**
     * Internal function for creating the where clause
     *
     * @param string   $condition
     * @param string   $value  optional
     * @param string   $type   optional
     * @param boolean  $bool  true = AND, false = OR
     * @return string  clause
     */
    protected function _where($condition, $value = null, $type = null, $bool = true)
    {
        if (count($this->_parts[self::UNION])) {
            require_once 'Zend/Db/Select/Exception.php';
            throw new Zend_Db_Select_Exception("Invalid use of where clause with " . self::SQL_UNION);
        }

        if ($value !== null) {
            $condition = $this->_adapter->quoteInto($condition, $value, $type);
        }

        $cond = "";
        if ($this->_parts[self::WHERE]) {
            if ($bool === true) {
                $cond = self::SQL_AND . ' ';
            } else {
                $cond = self::SQL_OR . ' ';
            }
        }

        return $cond . "($condition)";
    }

    /**
     * @return array
     */
    protected function _getDummyTable()
    {
        return array();
    }

    /**
     * Return a quoted schema name
     *
     * @param string   $schema  The schema name OPTIONAL
     * @return string|null
     */
    protected function _getQuotedSchema($schema = null)
    {
        if ($schema === null) {
            return null;
        }
        return $this->_adapter->quoteIdentifier($schema, true) . '.';
    }

    /**
     * Return a quoted table name
     *
     * @param string   $tableName        The table name
     * @param string   $correlationName  The correlation name OPTIONAL
     * @return string
     */
    protected function _getQuotedTable($tableName, $correlationName = null)
    {
        return $this->_adapter->quoteTableAs($tableName, $correlationName, true);
    }

    /**
     * Render DISTINCT clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderDistinct($sql)
    {
        if ($this->_parts[self::DISTINCT]) {
            $sql .= ' ' . self::SQL_DISTINCT;
        }

        return $sql;
    }

    /**
     * Render DISTINCT clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderColumns($sql)
    {
        if (!count($this->_parts[self::COLUMNS])) {
            return null;
        }

        $columns = array();
        foreach ($this->_parts[self::COLUMNS] as $columnEntry) {
            list($correlationName, $column, $alias) = $columnEntry;
            if ($column instanceof Zend_Db_Expr) {
                $columns[] = $this->_adapter->quoteColumnAs($column, $alias, true);
            } else {
                if ($column == self::SQL_WILDCARD) {
                    $column = new Zend_Db_Expr(self::SQL_WILDCARD);
                    $alias = null;
                }
                if (empty($correlationName)) {
                    $columns[] = $this->_adapter->quoteColumnAs($column, $alias, true);
                } else {
                    $columns[] = $this->_adapter->quoteColumnAs(array($correlationName, $column), $alias, true);
                }
            }
        }

        return $sql .= ' ' . implode(', ', $columns);
    }

    /**
     * Render FROM clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderFrom($sql)
    {
        /*
         * If no table specified, use RDBMS-dependent solution
         * for table-less query.  e.g. DUAL in Oracle.
         */
        if (empty($this->_parts[self::FROM])) {
            $this->_parts[self::FROM] = $this->_getDummyTable();
        }

        $from = array();

        foreach ($this->_parts[self::FROM] as $correlationName => $table) {
            $tmp = '';

            // Add join clause (if applicable)
            if (! empty($from)) {
                $tmp .= ' ' . strtoupper($table['joinType']) . ' ';
            }

            $tmp .= $this->_getQuotedSchema($table['schema']);
            $tmp .= $this->_getQuotedTable($table['tableName'], $correlationName);

            // Add join conditions (if applicable)
            if (!empty($from) && ! empty($table['joinCondition'])) {
                $tmp .= ' ' . self::SQL_ON . ' ' . $table['joinCondition'];
            }

            // Add the table name and condition add to the list
            $from[] = $tmp;
        }

        // Add the list of all joins
        if (!empty($from)) {
            $sql .= ' ' . self::SQL_FROM . ' ' . implode("\n", $from);
        }

        return $sql;
    }

    /**
     * Render UNION query
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderUnion($sql)
    {
        if ($this->_parts[self::UNION]) {
            $parts = count($this->_parts[self::UNION]);
            foreach ($this->_parts[self::UNION] as $cnt => $union) {
                list($target, $type) = $union;
                if ($target instanceof Zend_Db_Select) {
                    $target = $target->assemble();
                }
                $sql .= $target;
                if ($cnt < $parts - 1) {
                    $sql .= ' ' . $type . ' ';
                }
            }
        }

        return $sql;
    }

    /**
     * Render WHERE clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderWhere($sql)
    {
        if ($this->_parts[self::FROM] && $this->_parts[self::WHERE]) {
            $sql .= ' ' . self::SQL_WHERE . ' ' .  implode(' ', $this->_parts[self::WHERE]);
        }

        return $sql;
    }

    /**
     * Render GROUP clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderGroup($sql)
    {
        if ($this->_parts[self::FROM] && $this->_parts[self::GROUP]) {
            $group = array();
            foreach ($this->_parts[self::GROUP] as $term) {
                $group[] = $this->_adapter->quoteIdentifier($term, true);
            }
            $sql .= ' ' . self::SQL_GROUP_BY . ' ' . implode(",\n\t", $group);
        }

        return $sql;
    }

    /**
     * Render HAVING clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderHaving($sql)
    {
        if ($this->_parts[self::FROM] && $this->_parts[self::HAVING]) {
            $sql .= ' ' . self::SQL_HAVING . ' ' . implode(' ', $this->_parts[self::HAVING]);
        }

        return $sql;
    }

    /**
     * Render ORDER clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderOrder($sql)
    {
        if ($this->_parts[self::ORDER]) {
            $order = array();
            foreach ($this->_parts[self::ORDER] as $term) {
                if (is_array($term)) {
                    $order[] = $this->_adapter->quoteIdentifier($term[0], true) . ' ' . $term[1];
                } else {
                    $order[] = $this->_adapter->quoteIdentifier($term, true);
                }
            }
            $sql .= ' ' . self::SQL_ORDER_BY . ' ' . implode(', ', $order);
        }

        return $sql;
    }

    /**
     * Render LIMIT OFFSET clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderLimitoffset($sql)
    {
        $count = 0;
        $offset = 0;

        if (!empty($this->_parts[self::LIMIT_OFFSET])) {
            $offset = (int) $this->_parts[self::LIMIT_OFFSET];
            // This should reduce to the max integer PHP can support
            $count = intval(9223372036854775807);
        }

        if (!empty($this->_parts[self::LIMIT_COUNT])) {
            $count = (int) $this->_parts[self::LIMIT_COUNT];
        }

        /*
         * Add limits clause
         */
        if ($count > 0) {
            $sql = trim($this->_adapter->limit($sql, $count, $offset));
        }

        return $sql;
    }

    /**
     * Render FOR UPDATE clause
     *
     * @param string   $sql SQL query
     * @return string
     */
    protected function _renderForupdate($sql)
    {
        if ($this->_parts[self::FOR_UPDATE]) {
            $sql .= ' ' . self::SQL_FOR_UPDATE;
        }

        return $sql;
    }

    /**
     * Turn magic function calls into non-magic function calls
     * for joinUsing syntax
     *
     * @param string $method
     * @param array $args OPTIONAL Zend_Db_Table_Select query modifier
     * @return Zend_Db_Select
     * @throws Zend_Db_Select_Exception If an invalid method is called.
     */
    public function __call($method, array $args)
    {
        $matches = array();

        /**
         * Recognize methods for Has-Many cases:
         * findParent<Class>()
         * findParent<Class>By<Rule>()
         * Use the non-greedy pattern repeat modifier e.g. \w+?
         */
        if (preg_match('/^join([a-zA-Z]*?)Using$/', $method, $matches)) {
            $type = strtolower($matches[1]);
            if ($type) {
                $type .= ' join';
                if (!in_array($type, self::$_joinTypes)) {
                    require_once 'Zend/Db/Select/Exception.php';
                    throw new Zend_Db_Select_Exception("Unrecognized method '$method()'");
                }
                if (in_array($type, array(self::CROSS_JOIN, self::NATURAL_JOIN))) {
                    require_once 'Zend/Db/Select/Exception.php';
                    throw new Zend_Db_Select_Exception("Cannot perform a joinUsing with method '$method()'");
                }
            } else {
                $type = self::INNER_JOIN;
            }
            array_unshift($args, $type);
            return call_user_func_array(array($this, '_joinUsing'), $args);
        }

        require_once 'Zend/Db/Select/Exception.php';
        throw new Zend_Db_Select_Exception("Unrecognized method '$method()'");
    }

    /**
     * Implements magic method.
     *
     * @return string This object as a SELECT string.
     */
    public function __toString()
    {
        try {
            $sql = $this->assemble();
        } catch (Exception $e) {
            trigger_error($e->getMessage(), E_USER_WARNING);
            $sql = '';
        }
        return $sql;
    }

}
PKpG[4Aj���Db/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Db
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Db
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Db_Exception extends Zend_Exception
{
}
PKpG[���A"A"
Loader.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Loader.php 12507 2008-11-10 16:29:09Z matthew $
 */

/**
 * Static methods for loading classes and files.
 *
 * @category   Zend
 * @package    Zend_Loader
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Loader
{
    /**
     * Loads a class from a PHP file.  The filename must be formatted
     * as "$class.php".
     *
     * If $dirs is a string or an array, it will search the directories
     * in the order supplied, and attempt to load the first matching file.
     *
     * If $dirs is null, it will split the class name at underscores to
     * generate a path hierarchy (e.g., "Zend_Example_Class" will map
     * to "Zend/Example/Class.php").
     *
     * If the file was not found in the $dirs, or if no $dirs were specified,
     * it will attempt to load it from PHP's include_path.
     *
     * @param string $class      - The full class name of a Zend component.
     * @param string|array $dirs - OPTIONAL Either a path or an array of paths
     *                             to search.
     * @return void
     * @throws Zend_Exception
     */
    public static function loadClass($class, $dirs = null)
    {
        if (class_exists($class, false) || interface_exists($class, false)) {
            return;
        }

        if ((null !== $dirs) && !is_string($dirs) && !is_array($dirs)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception('Directory argument must be a string or an array');
        }

        // autodiscover the path from the class name
        $file = str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
        if (!empty($dirs)) {
            // use the autodiscovered path
            $dirPath = dirname($file);
            if (is_string($dirs)) {
                $dirs = explode(PATH_SEPARATOR, $dirs);
            }
            foreach ($dirs as $key => $dir) {
                if ($dir == '.') {
                    $dirs[$key] = $dirPath;
                } else {
                    $dir = rtrim($dir, '\\/');
                    $dirs[$key] = $dir . DIRECTORY_SEPARATOR . $dirPath;
                }
            }
            $file = basename($file);
            self::loadFile($file, $dirs, true);
        } else {
            self::_securityCheck($file);
            include_once $file;
        }

        if (!class_exists($class, false) && !interface_exists($class, false)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception("File \"$file\" does not exist or class \"$class\" was not found in the file");
        }
    }

    /**
     * Loads a PHP file.  This is a wrapper for PHP's include() function.
     *
     * $filename must be the complete filename, including any
     * extension such as ".php".  Note that a security check is performed that
     * does not permit extended characters in the filename.  This method is
     * intended for loading Zend Framework files.
     *
     * If $dirs is a string or an array, it will search the directories
     * in the order supplied, and attempt to load the first matching file.
     *
     * If the file was not found in the $dirs, or if no $dirs were specified,
     * it will attempt to load it from PHP's include_path.
     *
     * If $once is TRUE, it will use include_once() instead of include().
     *
     * @param  string        $filename
     * @param  string|array  $dirs - OPTIONAL either a path or array of paths
     *                       to search.
     * @param  boolean       $once
     * @return boolean
     * @throws Zend_Exception
     */
    public static function loadFile($filename, $dirs = null, $once = false)
    {
        self::_securityCheck($filename);

        /**
         * Search in provided directories, as well as include_path
         */
        $incPath = false;
        if (!empty($dirs) && (is_array($dirs) || is_string($dirs))) {
            if (is_array($dirs)) {
                $dirs = implode(PATH_SEPARATOR, $dirs);
            }
            $incPath = get_include_path();
            set_include_path($dirs . PATH_SEPARATOR . $incPath);
        }

        /**
         * Try finding for the plain filename in the include_path.
         */
        if ($once) {
            include_once $filename;
        } else {
            include $filename;
        }

        /**
         * If searching in directories, reset include_path
         */
        if ($incPath) {
            set_include_path($incPath);
        }

        return true;
    }

    /**
     * Returns TRUE if the $filename is readable, or FALSE otherwise.
     * This function uses the PHP include_path, where PHP's is_readable()
     * does not.
     *
     * Note from ZF-2900:
     * If you use custom error handler, please check whether return value
     *  from error_reporting() is zero or not.
     * At mark of fopen() can not suppress warning if the handler is used.
     *
     * @param string   $filename
     * @return boolean
     */
    public static function isReadable($filename)
    {
        if (!$fh = @fopen($filename, 'r', true)) {
            return false;
        }
        @fclose($fh);
        return true;
    }

    /**
     * spl_autoload() suitable implementation for supporting class autoloading.
     *
     * Attach to spl_autoload() using the following:
     * <code>
     * spl_autoload_register(array('Zend_Loader', 'autoload'));
     * </code>
     *
     * @param string $class
     * @return string|false Class name on success; false on failure
     */
    public static function autoload($class)
    {
        try {
            self::loadClass($class);
            return $class;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * Register {@link autoload()} with spl_autoload()
     *
     * @param string $class (optional)
     * @param boolean $enabled (optional)
     * @return void
     * @throws Zend_Exception if spl_autoload() is not found
     * or if the specified class does not have an autoload() method.
     */
    public static function registerAutoload($class = 'Zend_Loader', $enabled = true)
    {
        if (!function_exists('spl_autoload_register')) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception('spl_autoload does not exist in this PHP installation');
        }

        self::loadClass($class);
        $methods = get_class_methods($class);
        if (!in_array('autoload', (array) $methods)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception("The class \"$class\" does not have an autoload() method");
        }

        if ($enabled === true) {
            spl_autoload_register(array($class, 'autoload'));
        } else {
            spl_autoload_unregister(array($class, 'autoload'));
        }
    }

    /**
     * Ensure that filename does not contain exploits
     *
     * @param  string $filename
     * @return void
     * @throws Zend_Exception
     */
    protected static function _securityCheck($filename)
    {
        /**
         * Security check
         */
        if (preg_match('/[^a-z0-9\\/\\\\_.-]/i', $filename)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception('Security check: Illegal character in filename');
        }
    }

    /**
     * Attempt to include() the file.
     *
     * include() is not prefixed with the @ operator because if
     * the file is loaded and contains a parse error, execution
     * will halt silently and this is difficult to debug.
     *
     * Always set display_errors = Off on production servers!
     *
     * @param  string  $filespec
     * @param  boolean $once
     * @return boolean
     * @deprecated Since 1.5.0; use loadFile() instead
     */
    protected static function _includeFile($filespec, $once = false)
    {
        if ($once) {
            return include_once $filespec;
        } else {
            return include $filespec ;
        }
    }
}
PKpG[�u�II	Gdata.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Gdata_App
 */
require_once 'Zend/Gdata/App.php';

/**
 * Provides functionality to interact with Google data APIs
 * Subclasses exist to implement service-specific features
 *
 * As the Google data API protocol is based upon the Atom Publishing Protocol
 * (APP), Gdata functionality extends the appropriate Zend_Gdata_App classes
 *
 * @link http://code.google.com/apis/gdata/overview.html
 *
 * @category   Zend
 * @package    Zend_Gdata
 * @subpackage Gdata
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Gdata extends Zend_Gdata_App
{

    /**
     * Service name for use with Google's authentication mechanisms
     *
     * @var string
     */
    const AUTH_SERVICE_NAME = 'xapi';

    /**
     * Default URI to which to POST.
     *
     * @var string
     */
    protected $_defaultPostUri = null;

    /**
     * Packages to search for classes when using magic __call method, in order.
     *
     * @var array
     */
    protected $_registeredPackages = array(
            'Zend_Gdata_Kind',
            'Zend_Gdata_Extension',
            'Zend_Gdata',
            'Zend_Gdata_App_Extension',
            'Zend_Gdata_App');

    /**
     * Namespaces used for Gdata data
     *
     * @var array
     */
    public static $namespaces = array(
        array('gd', 'http://schemas.google.com/g/2005', 1, 0),
        array('openSearch', 'http://a9.com/-/spec/opensearchrss/1.0/', 1, 0),
        array('openSearch', 'http://a9.com/-/spec/opensearch/1.1/', 2, 0),
        array('rss', 'http://blogs.law.harvard.edu/tech/rss', 1, 0)
    );

    /**
     * Client object used to communicate
     *
     * @var Zend_Gdata_HttpClient
     */
    protected $_httpClient;

    /**
     * Client object used to communicate in static context
     *
     * @var Zend_Gdata_HttpClient
     */
    protected static $_staticHttpClient = null;

    /**
     * Create Gdata object
     *
     * @param Zend_Http_Client $client
     * @param string $applicationId The identity of the app in the form of
     *          Company-AppName-Version
     */
    public function __construct($client = null, $applicationId = 'MyCompany-MyApp-1.0')
    {
        parent::__construct($client, $applicationId);
    }

    /**
     * Imports a feed located at $uri.
     *
     * @param  string $uri
     * @param  Zend_Http_Client $client The client used for communication
     * @param  string $className The class which is used as the return type
     * @throws Zend_Gdata_App_Exception
     * @return Zend_Gdata_App_Feed
     */
    public static function import($uri, $client = null, $className='Zend_Gdata_Feed')
    {
        $app = new Zend_Gdata($client);
        $requestData = $app->decodeRequest('GET', $uri);
        $response = $app->performHttpRequest($requestData['method'], $requestData['url']);

        $feedContent = $response->getBody();
        $feed = self::importString($feedContent, $className);
        if ($client != null) {
            $feed->setHttpClient($client);
        }
        return $feed;
    }

    /**
     * Retrieve feed object
     *
     * @param mixed $location The location as string or Zend_Gdata_Query
     * @param string $className The class type to use for returning the feed
     * @throws Zend_Gdata_App_InvalidArgumentException
     * @return Zend_Gdata_Feed
     */
    public function getFeed($location, $className='Zend_Gdata_Feed')
    {
        if (is_string($location)) {
            $uri = $location;
        } elseif ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'You must specify the location as either a string URI ' .
                    'or a child of Zend_Gdata_Query');
        }
        return parent::getFeed($uri, $className);
    }

    /**
     * Retrieve entry object
     *
     * @param mixed $location The location as string or Zend_Gdata_Query
     * @return Zend_Gdata_Feed
     */
    public function getEntry($location, $className='Zend_Gdata_Entry')
    {
        if (is_string($location)) {
            $uri = $location;
        } elseif ($location instanceof Zend_Gdata_Query) {
            $uri = $location->getQueryUrl();
        } else {
            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
            throw new Zend_Gdata_App_InvalidArgumentException(
                    'You must specify the location as either a string URI ' .
                    'or a child of Zend_Gdata_Query');
        }
        return parent::getEntry($uri, $className);
    }

    /**
     * Performs a HTTP request using the specified method.
     *
     * Overrides the definition in the parent (Zend_Gdata_App)
     * and uses the Zend_Gdata_HttpClient functionality
     * to filter the HTTP requests and responses.
     *
     * @param string $method The HTTP method for the request -
     *                       'GET', 'POST', 'PUT', 'DELETE'
     * @param string $url The URL to which this request is being performed,
     *                    or null if found in $data
     * @param array $headers An associative array of HTTP headers
     *                       for this request
     * @param string $body The body of the HTTP request
     * @param string $contentType The value for the content type of the
     *                            request body
     * @param int $remainingRedirects Number of redirects to follow
     *                                if requests results in one
     * @return Zend_Http_Response The response object
     */
    public function performHttpRequest($method, $url, $headers = array(), $body = null, $contentType = null, $remainingRedirects = null)
    {
        if ($this->_httpClient instanceof Zend_Gdata_HttpClient) {
            $filterResult = $this->_httpClient->filterHttpRequest($method, $url, $headers, $body, $contentType);
            $method = $filterResult['method'];
            $url = $filterResult['url'];
            $body = $filterResult['body'];
            $headers = $filterResult['headers'];
            $contentType = $filterResult['contentType'];
            return $this->_httpClient->filterHttpResponse(parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects));
        } else {
            return parent::performHttpRequest($method, $url, $headers, $body, $contentType, $remainingRedirects);
        }
    }

    /**
     * Determines whether service object is authenticated.
     *
     * @return boolean True if service object is authenticated, false otherwise.
     */
    public function isAuthenticated()
    {
        $client = parent::getHttpClient();
        if ($client->getClientLoginToken() ||
            $client->getAuthSubToken()) {
                return true;
        }

        return false;
    }
}
PKpG[aܰ|TTView/Stream.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Stream wrapper to convert markup of mostly-PHP templates into PHP prior to 
 * include().
 * 
 * Based in large part on the example at
 * http://www.php.net/manual/en/function.stream-wrapper-register.php
 * 
 * As well as the example provided at:
 *     http://mikenaberezny.com/2006/02/19/symphony-templates-ruby-erb/
 * written by 
 *     Mike Naberezny (@link http://mikenaberezny.com) 
 *     Paul M. Jones  (@link http://paul-m-jones.com)
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Stream 
{
    /**
     * Current stream position.
     *
     * @var int
     */
    protected $_pos = 0;

    /**
     * Data for streaming.
     *
     * @var string
     */
    protected $_data;

    /**
     * Stream stats.
     *
     * @var array
     */
    protected $_stat;
    
    /**
     * Opens the script file and converts markup.
     */
    public function stream_open($path, $mode, $options, &$opened_path) 
    {
        // get the view script source
        $path        = str_replace('zend.view://', '', $path);
        $this->_data = file_get_contents($path);
        
        /**
         * If reading the file failed, update our local stat store
         * to reflect the real stat of the file, then return on failure
         */
        if ($this->_data === false) {
            $this->_stat = stat($path);
            return false;
        }

        /**
         * Convert <?= ?> to long-form <?php echo ?> and <? ?> to <?php ?>
         * 
         */
        $this->_data = preg_replace('/\<\?\=/',          "<?php echo ",  $this->_data);
        $this->_data = preg_replace('/<\?(?!xml|php)/s', '<?php ',       $this->_data);
                
        /**
         * file_get_contents() won't update PHP's stat cache, so we grab a stat 
         * of the file to prevent additional reads should the script be 
         * requested again, which will make include() happy.
         */
        $this->_stat = stat($path);

        return true;
    }

    /**
     * Included so that __FILE__ returns the appropriate info
     * 
     * @return array
     */
    public function url_stat()
    {
        return $this->_stat;
    }

    /**
     * Reads from the stream.
     */
    public function stream_read($count) 
    {
        $ret = substr($this->_data, $this->_pos, $count);
        $this->_pos += strlen($ret);
        return $ret;
    }

    
    /**
     * Tells the current position in the stream.
     */
    public function stream_tell() 
    {
        return $this->_pos;
    }

    
    /**
     * Tells if we are at the end of the stream.
     */
    public function stream_eof() 
    {
        return $this->_pos >= strlen($this->_data);
    }

    
    /**
     * Stream statistics.
     */
    public function stream_stat() 
    {
        return $this->_stat;
    }

    
    /**
     * Seek to a specific point in the stream.
     */
    public function stream_seek($offset, $whence) 
    {
        switch ($whence) {
            case SEEK_SET:
                if ($offset < strlen($this->_data) && $offset >= 0) {
                $this->_pos = $offset;
                    return true;
                } else {
                    return false;
                }
                break;

            case SEEK_CUR:
                if ($offset >= 0) {
                    $this->_pos += $offset;
                    return true;
                } else {
                    return false;
                }
                break;

            case SEEK_END:
                if (strlen($this->_data) + $offset >= 0) {
                    $this->_pos = strlen($this->_data) + $offset;
                    return true;
                } else {
                    return false;
                }
                break;

            default:
                return false;
        }
    }
}
PKpG[�)�D44View/Helper/FormPassword.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "password" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormPassword extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'password' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formPassword($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // is it disabled?
        $disabled = '';
        if ($disable) {
            // disabled
            $disabled = ' disabled="disabled"';
        }

        // determine the XHTML value
        $valueString = ' value=""';
        if (array_key_exists('renderPassword', $attribs)) {
            if ($attribs['renderPassword']) {
                $valueString = ' value="' . $this->view->escape($value) . '"';
            }
            unset($attribs['renderPassword']);
        }
        
        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // render the element
        $xhtml = '<input type="password"'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $valueString
                . $disabled
                . $this->_htmlAttribs($attribs)
                . $endTag;

        return $xhtml;
    }

}
PKpG[�+8��	�	View/Helper/FormSubmit.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "submit" button
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormSubmit extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'submit' button.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formSubmit($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // check if disabled
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        }

        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // Render the button.
        $xhtml = '<input type="submit"'
               . ' name="' . $this->view->escape($name) . '"'
               . ' id="' . $this->view->escape($id) . '"'
               . ' value="' . $this->view->escape($value) . '"'
               . $disabled
               . $this->_htmlAttribs($attribs) 
               . $endTag;

        return $xhtml;
    }
}
PKpG[(X���View/Helper/FormImage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate an "image" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormImage extends Zend_View_Helper_FormElement
{
    /**
     * Generates an 'image' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The source ('src="..."') for the image.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formImage($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // Determine if we should use the value or the src attribute
        if (isset($attribs['src'])) {
            $src = ' src="' . $this->view->escape($attribs['src']) . '"';
            unset($attribs['src']);
        } else {
            $src = ' src="' . $this->view->escape($value) . '"';
            unset($value);
        }

        // Do we have a value?
        if (isset($value) && !empty($value)) {
            $value = ' value="' . $this->view->escape($value) . '"';
        } else {
            $value = '';
        }

        // Disabled?
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        }
        
        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // build the element
        $xhtml = '<input type="image"'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $src
                . $value
                . $disabled
                . $this->_htmlAttribs($attribs) 
                . $endTag;

        return $xhtml;
    }
}
PKpG[Y7ɭ��View/Helper/DeclareVars.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: DeclareVars.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for declaring default values of template variables
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_DeclareVars extends Zend_View_Helper_Abstract
{
    /**
     * The view object that created this helper object.
     * @var Zend_View
     */
    public $view;

    /**
     * Declare template vars to set default values and avoid notices when using strictVars
     *
     * Primarily for use when using {@link Zend_View_Abstract::strictVars() Zend_View strictVars()},
     * this helper can be used to declare template variables that may or may
     * not already be set in the view object, as well as to set default values.
     * Arrays passed as arguments to the method will be used to set default
     * values; otherwise, if the variable does not exist, it is set to an empty
     * string.
     *
     * Usage:
     * <code>
     * $this->declareVars(
     *     'varName1',
     *     'varName2',
     *     array('varName3' => 'defaultValue',
     *           'varName4' => array()
     *     )
     * );
     * </code>
     *
     * @param string|array variable number of arguments, all string names of variables to test
     * @return void
     */
    public function declareVars()
    {
        $args = func_get_args();
        foreach($args as $key) {
            if (is_array($key)) {
                foreach ($key as $name => $value) {
                    $this->_declareVar($name, $value);
                }
            } else if (!isset($view->$key)) {
                $this->_declareVar($key);
            }
        }
    }

    /**
     * Set a view variable
     *
     * Checks to see if a $key is set in the view object; if not, sets it to $value.
     *
     * @param  string $key
     * @param  string $value Defaults to an empty string
     * @return void
     */
    protected function _declareVar($key, $value = '')
    {
        if (!isset($this->view->$key)) {
            $this->view->$key = $value;
        }
    }
}
PKpG[,VvddView/Helper/PartialLoop.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: PartialLoop.php 13032 2008-12-05 02:43:17Z sidhighwind $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Partial */
require_once 'Zend/View/Helper/Partial.php';

/**
 * Helper for rendering a template fragment in its own variable scope; iterates
 * over data provided and renders for each iteration.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_PartialLoop extends Zend_View_Helper_Partial
{

    /**
     * Marker to where the pointer is at in the loop
     * @var integer
     */
    protected $partialCounter = 0;

    /**
     * Renders a template fragment within a variable scope distinct from the
     * calling View object.
     *
     * If no arguments are provided, returns object instance.
     *
     * @param  string $name Name of view script
     * @param  string|array $module If $model is empty, and $module is an array,
     *                              these are the variables to populate in the
     *                              view. Otherwise, the module in which the
     *                              partial resides
     * @param  array $model Variables to populate in the view
     * @return string
     */
    public function partialLoop($name = null, $module = null, $model = null)
    {
        if (0 == func_num_args()) {
            return $this;
        }

        if ((null === $model) && (null !== $module)) {
            $model  = $module;
            $module = null;
        }

        if (!is_array($model)
            && (!$model instanceof Traversable)
            && (is_object($model) && !method_exists($model, 'toArray'))
        ) {
            require_once 'Zend/View/Helper/Partial/Exception.php';
            throw new Zend_View_Helper_Partial_Exception('PartialLoop helper requires iterable data');
        }

        if (is_object($model)
            && (!$model instanceof Traversable)
            && method_exists($model, 'toArray')
        ) {
            $model = $model->toArray();
        }

        $content = '';
        // reset the counter if it's call again
        $this->partialCounter = 0;
        foreach ($model as $item) {
            // increment the counter variable
            $this->partialCounter++;

            $content .= $this->partial($name, $module, $item);
        }

        return $content;
    }
}
PKpG[�)PI��!View/Helper/Partial/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_View_Exception */
require_once 'Zend/View/Exception.php';


/**
 * Exception for Zend_View_Helper_Partial class.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Partial_Exception extends Zend_View_Exception
{
}
PKpG[��Z�View/Helper/Form.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Form.php 10633 2008-08-04 15:19:53Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_FormElement */
require_once 'Zend/View/Helper/FormElement.php';

/**
 * Helper for rendering HTML forms
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Form extends Zend_View_Helper_FormElement
{
    /**
     * Render HTML form
     *
     * @param  string $name Form name
     * @param  null|array $attribs HTML form attributes
     * @param  false|string $content Form content
     * @return string
     */
    public function form($name, $attribs = null, $content = false)
    {
        $info = $this->_getInfo($name, $content, $attribs);
        extract($info);

        if (!empty($id)) {
            $id = ' id="' . $this->view->escape($id) . '"';
        } else {
            $id = '';
        }

        if (array_key_exists('id', $attribs) && empty($attribs['id'])) {
            unset($attribs['id']);
        }

        $xhtml = '<form'
               . $id
               . $this->_htmlAttribs($attribs)
               . '>';

        if (false !== $content) {
            $xhtml .= $content
                   .  '</form>';
        }

        return $xhtml;
    }
}
PKpG[^!�rddView/Helper/FormLabel.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_FormElement **/
require_once 'Zend/View/Helper/FormElement.php';

/**
 * Form label helper
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormLabel extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'label' element.
     *
     * @param  string $name The form element name for which the label is being generated
     * @param  string $value The label text
     * @param  array $attribs Form element attributes (used to determine if disabled)
     * @return string The element XHTML.
     */
    public function formLabel($name, $value = null, array $attribs = array())
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable, escape

        // build the element
        if ($disable) {
            // disabled; display nothing
            $xhtml = '';
        } else {
            $value = ($escape) ? $this->view->escape($value) : $value;

            // enabled; display label
            $xhtml = '<label'
                   . ' for="' . $this->view->escape($id) . '"'
                   . $this->_htmlAttribs($attribs)
                   . '>' . $value . '</label>';
        }

        return $xhtml;
    }
}
PKpG[�ǘhVVView/Helper/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 10664 2008-08-05 10:56:06Z matthew $
 */

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_View_Helper_Interface
{
    /**
     * Set the View object
     *
     * @param  Zend_View_Interface $view
     * @return Zend_View_Helper_Interface
     */
    public function setView(Zend_View_Interface $view);

    /**
     * Strategy pattern: helper method to invoke
     * 
     * @return mixed
     */
    public function direct();
}
PKpG[q����View/Helper/Action.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Action.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for rendering output of a controller action
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Action extends Zend_View_Helper_Abstract 
{
    /**
     * @var string
     */
    public $defaultModule;

    /**
     * @var Zend_Controller_Dispatcher_Interface
     */
    public $dispatcher;

    /**
     * @var Zend_Controller_Request_Abstract
     */
    public $request;

    /**
     * @var Zend_Controller_Response_Abstract
     */
    public $response;
    
    /**
     * Constructor
     *
     * Grab local copies of various MVC objects
     * 
     * @return void
     */
    public function __construct()
    {
        $front   = Zend_Controller_Front::getInstance(); 
        $modules = $front->getControllerDirectory();
        if (empty($modules)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Action helper depends on valid front controller instance');
        }

        $request  = $front->getRequest(); 
        $response = $front->getResponse(); 

        if (empty($request) || empty($response)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Action view helper requires both a registered request and response object in the front controller instance');
        }

        $this->request       = clone $request;
        $this->response      = clone $response;
        $this->dispatcher    = clone $front->getDispatcher(); 
        $this->defaultModule = $front->getDefaultModule();
    }

    /**
     * Reset object states
     * 
     * @return void
     */
    public function resetObjects() 
    { 
        $params = $this->request->getUserParams(); 
        foreach (array_keys($params) as $key) { 
            $this->request->setParam($key, null); 
        } 
 
        $this->response->clearBody();
        $this->response->clearHeaders() 
                       ->clearRawHeaders(); 
    }

    /**
     * Retrieve rendered contents of a controller action
     *
     * If the action results in a forward or redirect, returns empty string.
     * 
     * @param  string $action 
     * @param  string $controller 
     * @param  string $module Defaults to default module
     * @param  array $params 
     * @return string
     */
    public function action($action, $controller, $module = null, array $params = array())
    {
        $this->resetObjects(); 
        if (null === $module) { 
            $module = $this->defaultModule; 
        } 

        // clone the view object to prevent over-writing of view variables
        $viewRendererObj = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        Zend_Controller_Action_HelperBroker::addHelper(clone $viewRendererObj); 
        
        $this->request->setParams($params) 
                      ->setModuleName($module) 
                      ->setControllerName($controller) 
                      ->setActionName($action) 
                      ->setDispatched(true); 
 
        $this->dispatcher->dispatch($this->request, $this->response); 
 
        // reset the viewRenderer object to it's original state
        Zend_Controller_Action_HelperBroker::addHelper($viewRendererObj);

        
        if (!$this->request->isDispatched() 
            || $this->response->isRedirect()) 
        { 
            // forwards and redirects render nothing 
            return ''; 
        } 
 
        $return = $this->response->getBody();
        $this->resetObjects(); 
        return $return;
    }
    
    /**
     * Clone the current View
     *
     * @return Zend_View_Interface
     */
    public function cloneView()
    {
        $view = clone $this->view;
        $view->clearVars();
        return $view;
    }
}
PKpG[�!��View/Helper/FormHidden.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "hidden" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormHidden extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'hidden' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     * @param mixed $value The element value.
     * @param array $attribs Attributes for the element tag.
     * @return string The element XHTML.
     */
    public function formHidden($name, $value = null, array $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable
        if (isset($id)) {
            if (isset($attribs) && is_array($attribs)) {
                $attribs['id'] = $id;
            } else {
                $attribs = array('id' => $id);
            }
        }
        return $this->_hidden($name, $value, $attribs);
    }
}
PKpG[b�©9�9View/Helper/HeadScript.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Standalone */
require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';

/**
 * Helper for setting and retrieving script elements for HTML head section
 *
 * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HeadScript extends Zend_View_Helper_Placeholder_Container_Standalone
{
    /**#@+
     * Script type contants
     * @const string
     */
    const FILE   = 'FILE';
    const SCRIPT = 'SCRIPT';
    /**#@-*/

    /**
     * Registry key for placeholder
     * @var string
     */
    protected $_regKey = 'Zend_View_Helper_HeadScript';

    /**
     * Are arbitrary attributes allowed?
     * @var bool
     */
    protected $_arbitraryAttributes = false;

    /**#@+
     * Capture type and/or attributes (used for hinting during capture)
     * @var string
     */
    protected $_captureLock;
    protected $_captureScriptType  = null;
    protected $_captureScriptAttrs = null;
    protected $_captureType;
    /**#@-*/

    /**
     * Optional allowed attributes for script tag
     * @var array
     */
    protected $_optionalAttributes = array(
        'charset', 'defer', 'language', 'src'
    );

    /**
     * Required attributes for script tag
     * @var string
     */
    protected $_requiredAttributes = array('type');

    /**
     * Whether or not to format scripts using CDATA; used only if doctype
     * helper is not accessible
     * @var bool
     */
    public $useCdata = false;

    /**
     * Constructor
     *
     * Set separator to PHP_EOL.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->setSeparator(PHP_EOL);
    }

    /**
     * Return headScript object
     *
     * Returns headScript helper object; optionally, allows specifying a script
     * or script file to include.
     *
     * @param  string $mode Script or file
     * @param  string $spec Script/url
     * @param  string $placement Append, prepend, or set
     * @param  array $attrs Array of script attributes
     * @param  string $type Script type and/or array of script attributes
     * @return Zend_View_Helper_HeadScript
     */
    public function headScript($mode = Zend_View_Helper_HeadScript::FILE, $spec = null, $placement = 'APPEND', array $attrs = array(), $type = 'text/javascript')
    {
        if ((null !== $spec) && is_string($spec)) {
            $action    = ucfirst(strtolower($mode));
            $placement = strtolower($placement);
            switch ($placement) {
                case 'set':
                case 'prepend':
                case 'append':
                    $action = $placement . $action;
                    break;
                default:
                    $action = 'append' . $action;
                    break;
            }
            $this->$action($spec, $type, $attrs);
        }

        return $this;
    }

    /**
     * Start capture action
     *
     * @param  mixed $captureType
     * @param  string $typeOrAttrs
     * @return void
     */
    public function captureStart($captureType = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $type = 'text/javascript', $attrs = array())
    {
        if ($this->_captureLock) {
            require_once 'Zend/View/Helper/Placeholder/Container/Exception.php';
            throw new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest headScript captures');
        }

        $this->_captureLock        = true;
        $this->_captureType        = $captureType;
        $this->_captureScriptType  = $type;
        $this->_captureScriptAttrs = $attrs;
        ob_start();
    }

    /**
     * End capture action and store
     *
     * @return void
     */
    public function captureEnd()
    {
        $content                   = ob_get_clean();
        $type                      = $this->_captureScriptType;
        $attrs                     = $this->_captureScriptAttrs;
        $this->_captureScriptType  = null;
        $this->_captureScriptAttrs = null;
        $this->_captureLock        = false;

        switch ($this->_captureType) {
            case Zend_View_Helper_Placeholder_Container_Abstract::SET:
            case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND:
            case Zend_View_Helper_Placeholder_Container_Abstract::APPEND:
                $action = strtolower($this->_captureType) . 'Script';
                break;
            default:
                $action = 'appendScript';
                break;
        }
        $this->$action($content, $type, $attrs);
    }

    /**
     * Overload method access
     *
     * Allows the following method calls:
     * - appendFile($src, $type = 'text/javascript', $attrs = array())
     * - offsetSetFile($index, $src, $type = 'text/javascript', $attrs = array())
     * - prependFile($src, $type = 'text/javascript', $attrs = array())
     * - setFile($src, $type = 'text/javascript', $attrs = array())
     * - appendScript($script, $type = 'text/javascript', $attrs = array())
     * - offsetSetScript($index, $src, $type = 'text/javascript', $attrs = array())
     * - prependScript($script, $type = 'text/javascript', $attrs = array())
     * - setScript($script, $type = 'text/javascript', $attrs = array())
     *
     * @param  string $method
     * @param  array $args
     * @return Zend_View_Helper_HeadScript
     * @throws Zend_View_Exception if too few arguments or invalid method
     */
    public function __call($method, $args)
    {
        if (preg_match('/^(?P<action>set|(ap|pre)pend|offsetSet)(?P<mode>File|Script)$/', $method, $matches)) {
            if (1 > count($args)) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception(sprintf('Method "%s" requires at least one argument', $method));
            }

            $action  = $matches['action'];
            $mode    = strtolower($matches['mode']);
            $type    = 'text/javascript';
            $attrs   = array();

            if ('offsetSet' == $action) {
                $index = array_shift($args);
                if (1 > count($args)) {
                    require_once 'Zend/View/Exception.php';
                    throw new Zend_View_Exception(sprintf('Method "%s" requires at least two arguments, an index and source', $method));
                }
            }

            $content = $args[0];

            if (isset($args[1])) {
                $type = (string) $args[1];
            }
            if (isset($args[2])) {
                $attrs = (array) $args[2];
            }

            switch ($mode) {
                case 'script':
                    $item = $this->createData($type, $attrs, $content);
                    if ('offsetSet' == $action) {
                        $this->offsetSet($index, $item);
                    } else {
                        $this->$action($item);
                    }
                    break;
                case 'file':
                default:
                    if (!$this->_isDuplicate($content)) {
                        $attrs['src'] = $content;
                        $item = $this->createData($type, $attrs);
                        if ('offsetSet' == $action) {
                            $this->offsetSet($index, $item);
                        } else {
                            $this->$action($item);
                        }
                    }
                    break;
            }

            return $this;
        }

        return parent::__call($method, $args);
    }

    /**
     * Is the file specified a duplicate?
     *
     * @param  string $file
     * @return bool
     */
    protected function _isDuplicate($file)
    {
        foreach ($this->getContainer() as $item) {
            if (($item->source === null)
                && array_key_exists('src', $item->attributes)
                && ($file == $item->attributes['src']))
            {
                return true;
            }
        }
        return false;
    }

    /**
     * Is the script provided valid?
     *
     * @param  mixed $value
     * @param  string $method
     * @return bool
     */
    protected function _isValid($value)
    {
        if ((!$value instanceof stdClass)
            || !isset($value->type)
            || (!isset($value->source) && !isset($value->attributes)))
        {
            return false;
        }

        return true;
    }

    /**
     * Override append
     *
     * @param  string $value
     * @return void
     */
    public function append($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid argument passed to append(); please use one of the helper methods, appendScript() or appendFile()');
        }

        return $this->getContainer()->append($value);
    }

    /**
     * Override prepend
     *
     * @param  string $value
     * @return void
     */
    public function prepend($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid argument passed to prepend(); please use one of the helper methods, prependScript() or prependFile()');
        }

        return $this->getContainer()->prepend($value);
    }

    /**
     * Override set
     *
     * @param  string $value
     * @return void
     */
    public function set($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid argument passed to set(); please use one of the helper methods, setScript() or setFile()');
        }

        return $this->getContainer()->set($value);
    }

    /**
     * Override offsetSet
     *
     * @param  string|int $index
     * @param  mixed $value
     * @return void
     */
    public function offsetSet($index, $value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid argument passed to offsetSet(); please use one of the helper methods, offsetSetScript() or offsetSetFile()');
        }

        $this->_isValid($value);
        return $this->getContainer()->offsetSet($index, $value);
    }

    /**
     * Set flag indicating if arbitrary attributes are allowed
     *
     * @param  bool $flag
     * @return Zend_View_Helper_HeadScript
     */
    public function setAllowArbitraryAttributes($flag)
    {
        $this->_arbitraryAttributes = (bool) $flag;
        return $this;
    }

    /**
     * Are arbitrary attributes allowed?
     *
     * @return bool
     */
    public function arbitraryAttributesAllowed()
    {
        return $this->_arbitraryAttributes;
    }

    /**
     * Create script HTML
     *
     * @param  string $type
     * @param  array $attributes
     * @param  string $content
     * @param  string|int $indent
     * @return string
     */
    public function itemToString($item, $indent, $escapeStart, $escapeEnd)
    {
        $attrString = '';
        if (!empty($item->attributes)) {
            foreach ($item->attributes as $key => $value) {
                if (!$this->arbitraryAttributesAllowed()
                    && !in_array($key, $this->_optionalAttributes))
                {
                    continue;
                }
                if ('defer' == $key) {
                    $value = 'defer';
                }
                $attrString .= sprintf(' %s="%s"', $key, ($this->_autoEscape) ? $this->_escape($value) : $value);
            }
        }

        $type = ($this->_autoEscape) ? $this->_escape($item->type) : $item->type;
        $html  = $indent . '<script type="' . $type . '"' . $attrString . '>';
        if (!empty($item->source)) {
              $html .= PHP_EOL . $indent . '    ' . $escapeStart . PHP_EOL . $item->source . $indent . '    ' . $escapeEnd . PHP_EOL . $indent;
        }
        $html .= '</script>';

        if (isset($item->attributes['conditional'])
            && !empty($item->attributes['conditional'])
            && is_string($item->attributes['conditional']))
        {
            $html = '<!--[if ' . $item->attributes['conditional'] . ']> ' . $html . '<![endif]-->';
        }

        return $html;
    }

    /**
     * Retrieve string representation
     *
     * @param  string|int $indent
     * @return string
     */
    public function toString($indent = null)
    {
        $indent = (null !== $indent)
                ? $this->getWhitespace($indent)
                : $this->getIndent();

        if ($this->view) {
            $useCdata = $this->view->doctype()->isXhtml() ? true : false;
        } else {
            $useCdata = $this->useCdata ? true : false;
        }
        $escapeStart = ($useCdata) ? '//<![CDATA[' : '//<!--';
        $escapeEnd   = ($useCdata) ? '//]]>'       : '//-->';

        $items = array();
        foreach ($this as $item) {
            if (!$this->_isValid($item)) {
                continue;
            }

            $items[] = $this->itemToString($item, $indent, $escapeStart, $escapeEnd);
        }

        $return = implode($this->getSeparator(), $items);
        return $return;
    }

    /**
     * Create data item containing all necessary components of script
     *
     * @param  string $type
     * @param  array $attributes
     * @param  string $content
     * @return stdClass
     */
    public function createData($type, array $attributes, $content = null)
    {
        $data             = new stdClass();
        $data->type       = $type;
        $data->attributes = $attributes;
        $data->source     = $content;
        return $data;
    }
}
PKpG[��P�99View/Helper/HeadTitle.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Standalone */
require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';

/**
 * Helper for setting and retrieving title element for HTML head
 *
 * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HeadTitle extends Zend_View_Helper_Placeholder_Container_Standalone
{
    /**
     * Registry key for placeholder
     * @var string
     */
    protected $_regKey = 'Zend_View_Helper_HeadTitle';

    /**
     * Whether or not auto-translation is enabled
     * @var boolean
     */
    protected $_translate = false;

    /**
     * Translation object
     *
     * @var Zend_Translate_Adapter
     */
    protected $_translator;

    /**
     * Retrieve placeholder for title element and optionally set state
     *
     * @param  string $title
     * @param  string $setType
     * @param  string $separator
     * @return Zend_View_Helper_HeadTitle
     */
    public function headTitle($title = null, $setType = Zend_View_Helper_Placeholder_Container_Abstract::APPEND)
    {
        if ($title) {
            if ($setType == Zend_View_Helper_Placeholder_Container_Abstract::SET) {
                $this->set($title);
            } elseif ($setType == Zend_View_Helper_Placeholder_Container_Abstract::PREPEND) {
                $this->prepend($title);
            } else {
                $this->append($title);
            }
        }

        return $this;
    }

    /**
     * Sets a translation Adapter for translation
     *
     * @param  Zend_Translate|Zend_Translate_Adapter $translate
     * @return Zend_View_Helper_HeadTitle
     */
    public function setTranslator($translate)
    {
        if ($translate instanceof Zend_Translate_Adapter) {
            $this->_translator = $translate;
        } elseif ($translate instanceof Zend_Translate) {
            $this->_translator = $translate->getAdapter();
        } else {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception("You must set an instance of Zend_Translate or Zend_Translate_Adapter");
        }
        return $this;
    }

    /*
     * Retrieve translation object
     *
     * If none is currently registered, attempts to pull it from the registry
     * using the key 'Zend_Translate'.
     *
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if (null === $this->_translator) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Translate')) {
                $this->setTranslator(Zend_Registry::get('Zend_Translate'));
            }
        }
        return $this->_translator;
    }

    /**
     * Enables translation
     *
     * @return Zend_View_Helper_HeadTitle
     */
    public function enableTranslation()
    {
        $this->_translate = true;
        return $this;
    }

    /**
     * Disables translation
     *
     * @return Zend_View_Helper_HeadTitle
     */
    public function disableTranslation()
    {
        $this->_translate = false;
        return $this;
    }

    /**
     * Turn helper into string
     *
     * @param  string|null $indent
     * @param  string|null $locale
     * @return string
     */
    public function toString($indent = null, $locale = null)
    {
        $indent = (null !== $indent)
                ? $this->getWhitespace($indent)
                : $this->getIndent();

        $items = array();

        if($this->_translate && $translator = $this->getTranslator()) {
            foreach ($this as $item) {
                $items[] = $translator->translate($item, $locale);
            }
        } else {
            foreach ($this as $item) {
                $items[] = $item;
            }
        }

        $separator = $this->getSeparator();
        $output = '';
        if(($prefix = $this->getPrefix())) {
            $output  .= $prefix;
        }
        $output .= implode($separator, $items);
        if(($postfix = $this->getPostfix())) {
            $output .= $postfix;
        }

        $output = ($this->_autoEscape) ? $this->_escape($output) : $output;

        return $indent . '<title>' . $output . '</title>';
    }
}
PKpG[M�"���View/Helper/HtmlFlash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlFlash.php 11525 2008-09-26 18:40:19Z norm2782 $
 */

/**
 * @see Zend_View_Helper_HtmlObject
 */
require_once 'Zend/View/Helper/HtmlObject.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HtmlFlash extends Zend_View_Helper_HtmlObject
{
    /**
     * Default file type for a flash applet
     *
     */
    const TYPE = 'application/x-shockwave-flash';
    
    /**
     * Output a flash movie object tag
     *
     * @param string $data The flash file
     * @param array  $attribs Attribs for the object tag
     * @param array  $params Params for in the object tag
     * @param string $content Alternative content
     * @return string
     */
    public function htmlFlash($data, array $attribs = array(), array $params = array(), $content = null)
    {
        // Params
        $params = array_merge(array('movie'   => $data,
                                    'quality' => 'high'), $params);

        return $this->htmlObject($data, self::TYPE, $attribs, $params, $content);
    }
}
PKpG[��A^	^	View/Helper/HtmlQuicktime.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlQuicktime.php 10192 2008-07-18 20:14:57Z matthew $
 */

/**
 * @see Zend_View_Helper_HtmlObject
 */
require_once 'Zend/View/Helper/HtmlObject.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HtmlQuicktime extends Zend_View_Helper_HtmlObject
{
    /**
     * Default file type for a movie applet
     *
     */
    const TYPE = 'video/quicktime';

    /**
     * Object classid
     *
     */
    const ATTRIB_CLASSID  = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';

    /**
     * Object Codebase
     *
     */
    const ATTRIB_CODEBASE = 'http://www.apple.com/qtactivex/qtplugin.cab';

    /**
     * Default attributes
     *
     * @var array
     */
    protected $_attribs = array('classid'  => self::ATTRIB_CLASSID,
                                'codebase' => self::ATTRIB_CODEBASE);

    /**
     * Output a quicktime movie object tag
     *
     * @param string $data The quicktime file
     * @param array  $attribs Attribs for the object tag
     * @param array  $params Params for in the object tag
     * @param string $content Alternative content
     * @return string
     */
    public function htmlQuicktime($data, array $attribs = array(), array $params = array(), $content = null)
    {
        // Attrs
        $attribs = array_merge($this->_attribs, $attribs);

        // Params
        $params = array_merge(array('src' => $data), $params);

        return $this->htmlObject($data, self::TYPE, $attribs, $params, $content);
    }
}
PKpG[%3��:
:
View/Helper/HtmlObject.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlObject.php 10192 2008-07-18 20:14:57Z matthew $
 */

/**
 * @see Zend_View_Helper_HtmlElement
 */
require_once 'Zend/View/Helper/HtmlElement.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HtmlObject extends Zend_View_Helper_HtmlElement
{
    /**
     * Output an object set
     *
     * @param string $data The data file
     * @param string $type Data file type
     * @param array  $attribs Attribs for the object tag
     * @param array  $params Params for in the object tag
     * @param string $content Alternative content for object
     * @return string
     */
    public function htmlObject($data, $type, array $attribs = array(), array $params = array(), $content = null)
    {
        // Merge data and type
        $attribs = array_merge(array('data' => $data,
                                     'type' => $type), $attribs);

        // Params
        $paramHtml = array();
        $closingBracket = $this->getClosingBracket();

        foreach ($params as $param => $options) {
            if (is_string($options)) {
                $options = array('value' => $options);
            }

            $options = array_merge(array('name' => $param), $options);

            $paramHtml[] = '<param' . $this->_htmlAttribs($options) . $closingBracket;
        }

        // Content
        if (is_array($content)) {
            $content = implode(self::EOL, $content);
        }

        // Object header
        $xhtml = '<object' . $this->_htmlAttribs($attribs) . '>' . self::EOL
                 . implode(self::EOL, $paramHtml) . self::EOL
                 . ($content ? $content . self::EOL : '')
                 . '</object>';

        return $xhtml;
    }
}
PKpG[kɰ�ddView/Helper/Translate.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Translate.php 12062 2008-10-21 17:28:12Z thomas $
 */

/** Zend_Locale */
require_once 'Zend/Locale.php';

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Translation view helper
 *
 * @category  Zend
 * @package   Zend_View
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Translate extends Zend_View_Helper_Abstract
{
    /**
     * Translation object
     *
     * @var Zend_Translate_Adapter
     */
    protected $_translator;

    /**
     * Constructor for manually handling
     *
     * @param Zend_Translate|Zend_Translate_Adapter $translate Instance of Zend_Translate
     */
    public function __construct($translate = null)
    {
        if (empty($translate) === false) {
            $this->setTranslator($translate);
        }
    }

    /**
     * Translate a message
     * You can give multiple params or an array of params.
     * If you want to output another locale just set it as last single parameter
     * Example 1: translate('%1\$s + %2\$s', $value1, $value2, $locale);
     * Example 2: translate('%1\$s + %2\$s', array($value1, $value2), $locale);
     *
     * @param  string $messageid Id of the message to be translated
     * @return string Translated message
     */
    public function translate($messageid = null)
    {
        if ($messageid === null) {
            return $this;
        }

        $translate = $this->getTranslator();
        if ($translate === null) {
            return $messageid;
        }

        $options = func_get_args();
        array_shift($options);

        $count  = count($options);
        $locale = null;
        if ($count > 0) {
            if (Zend_Locale::isLocale($options[($count - 1)], null, false) !== false) {
                $locale = array_pop($options);
            }
        }

        if ((count($options) === 1) and (is_array($options[0]) === true)) {
            $options = $options[0];
        }

        $message = $translate->translate($messageid, $locale);
        if ($count === 0) {
            return $message;
        }

        return vsprintf($message, $options);
    }

    /**
     * Sets a translation Adapter for translation
     *
     * @param  Zend_Translate|Zend_Translate_Adapter $translate Instance of Zend_Translate
     * @throws Zend_View_Exception When no or a false instance was set
     * @return Zend_View_Helper_Translate
     */
    public function setTranslator($translate)
    {
        if ($translate instanceof Zend_Translate_Adapter) {
            $this->_translator = $translate;
        } else if ($translate instanceof Zend_Translate) {
            $this->_translator = $translate->getAdapter();
        } else {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter');
        }

        return $this;
    }

    /**
     * Retrieve translation object
     *
     * If none is currently registered, attempts to pull it from the registry
     * using the key 'Zend_Translate'.
     *
     * @return Zend_Translate_Adapter|null
     */
    public function getTranslator()
    {
        if ($this->_translator === null) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Translate') === true) {
                $this->setTranslator(Zend_Registry::get('Zend_Translate'));
            }
        }

        return $this->_translator;
    }

    /**
     * Set's an new locale for all further translations
     *
     * @param  string|Zend_Locale $locale New locale to set
     * @throws Zend_View_Exception When no Zend_Translate instance was set
     * @return Zend_View_Helper_Translate
     */
    public function setLocale($locale = null)
    {
        $translate = $this->getTranslator();
        if ($translate === null) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter');
        }

        $translate->setLocale($locale);
        return $this;
    }

    /**
     * Returns the set locale for translations
     *
     * @throws Zend_View_Exception When no Zend_Translate instance was set
     * @return string|Zend_Locale
     */
    public function getLocale()
    {
        $translate = $this->getTranslator();
        if ($translate === null) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter');
        }

        return $translate->getLocale();
    }
}
PKpG[����22View/Helper/HeadLink.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Standalone */
require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';

/**
 * Zend_Layout_View_Helper_HeadLink
 *
 * @see        http://www.w3.org/TR/xhtml1/dtds.html
 * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HeadLink extends Zend_View_Helper_Placeholder_Container_Standalone
{
    /**
     * $_validAttributes
     *
     * @var array
     */
    protected $_itemKeys = array('charset', 'href', 'hreflang', 'media', 'rel', 'rev', 'type', 'title', 'extras');

    /**
     * @var string registry key
     */
    protected $_regKey = 'Zend_View_Helper_HeadLink';

    /**
     * Constructor
     *
     * Use PHP_EOL as separator
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->setSeparator(PHP_EOL);
    }

    /**
     * headLink() - View Helper Method
     *
     * Returns current object instance. Optionally, allows passing array of
     * values to build link.
     *
     * @return Zend_View_Helper_HeadLink
     */
    public function headLink(array $attributes = null, $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND)
    {
        if (null !== $attributes) {
            $item = $this->createData($attributes);
            switch ($placement) {
                case Zend_View_Helper_Placeholder_Container_Abstract::SET:
                    $this->set($item);
                    break;
                case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND:
                    $this->prepend($item);
                    break;
                case Zend_View_Helper_Placeholder_Container_Abstract::APPEND:
                default:
                    $this->append($item);
                    break;
            }
        }
        return $this;
    }

    /**
     * Overload method access
     *
     * Creates the following virtual methods:
     * - appendStylesheet($href, $media, $conditionalStylesheet, $extras)
     * - offsetSetStylesheet($index, $href, $media, $conditionalStylesheet, $extras)
     * - prependStylesheet($href, $media, $conditionalStylesheet, $extras)
     * - setStylesheet($href, $media, $conditionalStylesheet, $extras)
     * - appendAlternate($href, $type, $title, $extras)
     * - offsetSetAlternate($index, $href, $type, $title, $extras)
     * - prependAlternate($href, $type, $title, $extras)
     * - setAlternate($href, $type, $title, $extras)
     *
     * Items that may be added in the future:
     * - Navigation?  need to find docs on this
     *   - public function appendStart()
     *   - public function appendContents()
     *   - public function appendPrev()
     *   - public function appendNext()
     *   - public function appendIndex()
     *   - public function appendEnd()
     *   - public function appendGlossary()
     *   - public function appendAppendix()
     *   - public function appendHelp()
     *   - public function appendBookmark()
     * - Other?
     *   - public function appendCopyright()
     *   - public function appendChapter()
     *   - public function appendSection()
     *   - public function appendSubsection()
     *
     * @param mixed $method
     * @param mixed $args
     * @return void
     */
    public function __call($method, $args)
    {
        if (preg_match('/^(?P<action>set|(ap|pre)pend|offsetSet)(?P<type>Stylesheet|Alternate)$/', $method, $matches)) {
            $argc   = count($args);
            $action = $matches['action'];
            $type   = $matches['type'];
            $index  = null;

            if ('offsetSet' == $action) {
                if (0 < $argc) {
                    $index = array_shift($args);
                    --$argc;
                }
            }

            if (1 > $argc) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception(sprintf('%s requires at least one argument', $method));
            }

            if (is_array($args[0])) {
                $item = $this->createData($args[0]);
            } else {
                $dataMethod = 'createData' . $type;
                $item       = $this->$dataMethod($args);
            }

            if ($item) {
                if ('offsetSet' == $action) {
                    $this->offsetSet($index, $item);
                } else {
                    $this->$action($item);
                }
            }

            return $this;
        }

        return parent::__call($method, $args);
    }

    /**
     * Check if value is valid
     *
     * @param  mixed $value
     * @return boolean
     */
    protected function _isValid($value)
    {
        if (!$value instanceof stdClass) {
            return false;
        }

        $vars         = get_object_vars($value);
        $keys         = array_keys($vars);
        $intersection = array_intersect($this->_itemKeys, $keys);
        if (empty($intersection)) {
            return false;
        }

        return true;
    }

    /**
     * append()
     *
     * @param  array $value
     * @return void
     */
    public function append($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('append() expects a data token; please use one of the custom append*() methods');
        }

        return $this->getContainer()->append($value);
    }

    /**
     * offsetSet()
     *
     * @param  string|int $index
     * @param  array $value
     * @return void
     */
    public function offsetSet($index, $value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('offsetSet() expects a data token; please use one of the custom offsetSet*() methods');
        }

        return $this->getContainer()->offsetSet($index, $value);
    }

    /**
     * prepend()
     *
     * @param  array $value
     * @return Zend_Layout_ViewHelper_HeadLink
     */
    public function prepend($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('prepend() expects a data token; please use one of the custom prepend*() methods');
        }

        return $this->getContainer()->prepend($value);
    }

    /**
     * set()
     *
     * @param  array $value
     * @return Zend_Layout_ViewHelper_HeadLink
     */
    public function set($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('set() expects a data token; please use one of the custom set*() methods');
        }

        return $this->getContainer()->set($value);
    }


    /**
     * Create HTML link element from data item
     *
     * @param  stdClass $item
     * @return string
     */
    public function itemToString(stdClass $item)
    {
        $attributes = (array) $item;
        $link       = '<link ';

        foreach ($this->_itemKeys as $itemKey) {
            if (isset($attributes[$itemKey])) {
                if(is_array($attributes[$itemKey])) {
                    foreach($attributes[$itemKey] as $key => $value) {
                        $link .= sprintf('%s="%s" ', $key, ($this->_autoEscape) ? $this->_escape($value) : $value);
                    }
                } else {
                    $link .= sprintf('%s="%s" ', $itemKey, ($this->_autoEscape) ? $this->_escape($attributes[$itemKey]) : $attributes[$itemKey]);
                }
            }
        }

        if ($this->view instanceof Zend_View_Abstract) {
            $link .= ($this->view->doctype()->isXhtml()) ? '/>' : '>';
        } else {
            $link .= '/>';
        }

        if (($link == '<link />') || ($link == '<link >')) {
            return '';
        }

        if (isset($attributes['conditionalStylesheet'])
            && !empty($attributes['conditionalStylesheet'])
            && is_string($attributes['conditionalStylesheet']))
        {
            $link = '<!--[if ' . $attributes['conditionalStylesheet'] . ']> ' . $link . '<![endif]-->';
        }

        return $link;
    }

    /**
     * Render link elements as string
     *
     * @param  string|int $indent
     * @return string
     */
    public function toString($indent = null)
    {
        $indent = (null !== $indent)
                ? $this->getWhitespace($indent)
                : $this->getIndent();

        $items = array();
        foreach ($this as $item) {
            $items[] = $this->itemToString($item);
        }

        return $indent . implode($this->_escape($this->getSeparator()) . $indent, $items);
    }

    /**
     * Create data item for stack
     *
     * @param  array $attributes
     * @return stdClass
     */
    public function createData(array $attributes)
    {
        $data = (object) $attributes;
        return $data;
    }

    /**
     * Create item for stylesheet link item
     *
     * @param  array $args
     * @return stdClass|false Returns fals if stylesheet is a duplicate
     */
    public function createDataStylesheet(array $args)
    {
        $rel                   = 'stylesheet';
        $type                  = 'text/css';
        $media                 = 'screen';
        $conditionalStylesheet = false;
        $href                  = array_shift($args);

        if ($this->_isDuplicateStylesheet($href)) {
            return false;
        }

        if (0 < count($args)) {
            $media = array_shift($args);
            if(is_array($media)) {
                $media = implode(',', $media);
            } else {
                $media = (string) $media;
            }
        }
        if (0 < count($args)) {
            $conditionalStylesheet = array_shift($args);
            if(!empty($conditionalStylesheet) && is_string($conditionalStylesheet)) {
                $conditionalStylesheet = (string) $conditionalStylesheet;
            } else {
                $conditionalStylesheet = null;
            }
        }

        if(0 < count($args) && is_array($args[0])) {
            $extras = array_shift($args);
            $extras = (array) $extras;
        }

        $attributes = compact('rel', 'type', 'href', 'media', 'conditionalStylesheet', 'extras');
        return $this->createData($attributes);
    }

    /**
     * Is the linked stylesheet a duplicate?
     *
     * @param  string $uri
     * @return bool
     */
    protected function _isDuplicateStylesheet($uri)
    {
        foreach ($this->getContainer() as $item) {
            if (($item->rel == 'stylesheet') && ($item->href == $uri)) {
                return true;
            }
        }
        return false;
    }

    /**
     * Create item for alternate link item
     *
     * @param  array $args
     * @return stdClass
     */
    public function createDataAlternate(array $args)
    {
        if (3 > count($args)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception(sprintf('Alternate tags require 3 arguments; %s provided', count($args)));
        }

        $rel   = 'alternate';
        $href  = array_shift($args);
        $type  = array_shift($args);
        $title = array_shift($args);

        if(0 < count($args) && is_array($args[0])) {
            $extras = array_shift($args);
            $extras = (array) $extras;

            if(isset($extras['media']) && is_array($extras['media'])) {
                $extras['media'] = implode(',', $extras['media']);
            }
        }

        $href  = (string) $href;
        $type  = (string) $type;
        $title = (string) $title;

        $attributes = compact('rel', 'href', 'type', 'title', 'extras');
        return $this->createData($attributes);
    }
}
PKpG[~��-�-View/Helper/HeadStyle.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Standalone */
require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';

/**
 * Helper for setting and retrieving stylesheets
 *
 * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HeadStyle extends Zend_View_Helper_Placeholder_Container_Standalone
{
    /**
     * Registry key for placeholder
     * @var string
     */
    protected $_regKey = 'Zend_View_Helper_HeadStyle';

    /**
     * Allowed optional attributes
     * @var array
     */
    protected $_optionalAttributes = array('lang', 'title', 'media', 'dir');

    /**
     * Allowed media types
     * @var array
     */
    protected $_mediaTypes = array(
        'all', 'aural', 'braille', 'handheld', 'print',
        'projection', 'screen', 'tty', 'tv'
    );

    /**
     * Capture type and/or attributes (used for hinting during capture)
     * @var string
     */
    protected $_captureAttrs = null;

    /**
     * Capture lock
     * @var bool
     */
    protected $_captureLock;

    /**
     * Capture type (append, prepend, set)
     * @var string
     */
    protected $_captureType;

    /**
     * Constructor
     *
     * Set separator to PHP_EOL.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->setSeparator(PHP_EOL);
    }

    /**
     * Return headStyle object
     *
     * Returns headStyle helper object; optionally, allows specifying
     *
     * @param  string $content Stylesheet contents
     * @param  string $placement Append, prepend, or set
     * @param  string|array $attributes Optional attributes to utilize
     * @return Zend_View_Helper_HeadStyle
     */
    public function headStyle($content = null, $placement = 'APPEND', $attributes = array())
    {
        if ((null !== $content) && is_string($content)) {
            switch (strtoupper($placement)) {
                case 'SET':
                    $action = 'setStyle';
                    break;
                case 'PREPEND':
                    $action = 'prependStyle';
                    break;
                case 'APPEND':
                default:
                    $action = 'appendStyle';
                    break;
            }
            $this->$action($content, $attributes);
        }

        return $this;
    }

    /**
     * Overload method calls
     *
     * Allows the following method calls:
     * - appendStyle($content, $attributes = array())
     * - offsetSetStyle($index, $content, $attributes = array())
     * - prependStyle($content, $attributes = array())
     * - setStyle($content, $attributes = array())
     *
     * @param  string $method
     * @param  array $args
     * @return void
     * @throws Zend_View_Exception When no $content provided or invalid method
     */
    public function __call($method, $args)
    {
        if (preg_match('/^(?P<action>set|(ap|pre)pend|offsetSet)(Style)$/', $method, $matches)) {
            $index  = null;
            $argc   = count($args);
            $action = $matches['action'];

            if ('offsetSet' == $action) {
                if (0 < $argc) {
                    $index = array_shift($args);
                    --$argc;
                }
            }

            if (1 > $argc) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception(sprintf('Method "%s" requires minimally content for the stylesheet', $method));
            }

            $content = $args[0];
            $attrs   = array();
            if (isset($args[1])) {
                $attrs = (array) $args[1];
            }

            $item = $this->createData($content, $attrs);

            if ('offsetSet' == $action) {
                $this->offsetSet($index, $item);
            } else {
                $this->$action($item);
            }

            return $this;
        }

        return parent::__call($method, $args);
    }

    /**
     * Determine if a value is a valid style tag
     *
     * @param  mixed $value
     * @param  string $method
     * @return boolean
     */
    protected function _isValid($value)
    {
        if ((!$value instanceof stdClass)
            || !isset($value->content)
            || !isset($value->attributes))
        {
            return false;
        }

        return true;
    }

    /**
     * Override append to enforce style creation
     *
     * @param  mixed $value
     * @return void
     */
    public function append($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to append; please use appendStyle()');
        }

        return $this->getContainer()->append($value);
    }

    /**
     * Override offsetSet to enforce style creation
     *
     * @param  string|int $index
     * @param  mixed $value
     * @return void
     */
    public function offsetSet($index, $value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to offsetSet; please use offsetSetStyle()');
        }

        return $this->getContainer()->offsetSet($index, $value);
    }

    /**
     * Override prepend to enforce style creation
     *
     * @param  mixed $value
     * @return void
     */
    public function prepend($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to prepend; please use prependStyle()');
        }

        return $this->getContainer()->prepend($value);
    }

    /**
     * Override set to enforce style creation
     *
     * @param  mixed $value
     * @return void
     */
    public function set($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to set; please use setStyle()');
        }

        return $this->getContainer()->set($value);
    }

    /**
     * Start capture action
     *
     * @param  mixed $captureType
     * @param  string $typeOrAttrs
     * @return void
     */
    public function captureStart($type = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $attrs = null)
    {
        if ($this->_captureLock) {
            require_once 'Zend/View/Helper/Placeholder/Container/Exception.php';
            throw new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest headStyle captures');
        }

        $this->_captureLock        = true;
        $this->_captureAttrs       = $attrs;
        $this->_captureType        = $type;
        ob_start();
    }

    /**
     * End capture action and store
     *
     * @return void
     */
    public function captureEnd()
    {
        $content             = ob_get_clean();
        $attrs               = $this->_captureAttrs;
        $this->_captureAttrs = null;
        $this->_captureLock  = false;

        switch ($this->_captureType) {
            case Zend_View_Helper_Placeholder_Container_Abstract::SET:
                $this->setStyle($content, $attrs);
                break;
            case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND:
                $this->prependStyle($content, $attrs);
                break;
            case Zend_View_Helper_Placeholder_Container_Abstract::APPEND:
            default:
                $this->appendStyle($content, $attrs);
                break;
        }
    }

    /**
     * Convert content and attributes into valid style tag
     *
     * @param  stdClass $item Item to render
     * @param  string $indent Indentation to use
     * @return string
     */
    public function itemToString(stdClass $item, $indent)
    {
        $attrString = '';
        if (!empty($item->attributes)) {
            foreach ($item->attributes as $key => $value) {
                if (!in_array($key, $this->_optionalAttributes)) {
                    continue;
                }
                if ('media' == $key) {
                    if(false === strpos($value, ',')) {
                        if (!in_array($value, $this->_mediaTypes)) {
                            continue;
                        }
                    } else {
                        $media_types = explode(',', $value);
                        $value = '';
                        foreach($media_types as $type) {
                            if (!in_array($type, $this->_mediaTypes)) {
                                continue;
                            }
                            $value .= $type .',';
                        }
                        $value = substr($value, 0, -1);
                    }
                }
                $attrString .= sprintf(' %s="%s"', $key, htmlspecialchars($value));
            }
        }

        $html = '<style type="text/css"' . $attrString . '>' . PHP_EOL
              . $indent . '<!--' . PHP_EOL . $indent . $item->content . PHP_EOL . $indent . '-->' . PHP_EOL
              . '</style>';

        if (isset($item->attributes['conditional'])
            && !empty($item->attributes['conditional'])
            && is_string($item->attributes['conditional']))
        {
            $html = '<!--[if ' . $item->attributes['conditional'] . ']> ' . $html . '<![endif]-->';
        }

        return $html;
    }

    /**
     * Create string representation of placeholder
     *
     * @param  string|int $indent
     * @return string
     */
    public function toString($indent = null)
    {
        $indent = (null !== $indent)
                ? $this->getWhitespace($indent)
                : $this->getIndent();

        $items = array();
        foreach ($this as $item) {
            if (!$this->_isValid($item)) {
                continue;
            }
            $items[] = $this->itemToString($item, $indent);
        }

        $return = $indent . implode($this->getSeparator() . $indent, $items);
        $return = preg_replace("/(\r\n?|\n)/", '$1' . $indent, $return);
        return $return;
    }

    /**
     * Create data item for use in stack
     *
     * @param  string $content
     * @param  array $attributes
     * @return stdClass
     */
    public function createData($content, array $attributes)
    {
        if (!isset($attributes['media'])) {
            $attributes['media'] = 'screen';
        } else if(is_array($attributes['media'])) {
            $attributes['media'] = implode(',', $attributes['media']);
        }

        $data = new stdClass();
        $data->content    = $content;
        $data->attributes = $attributes;

        return $data;
    }
}
PKpG[̦���	�	View/Helper/Placeholder.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Registry */
require_once 'Zend/View/Helper/Placeholder/Registry.php';

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for passing data between otherwise segregated Views. It's called
 * Placeholder to make its typical usage obvious, but can be used just as easily
 * for non-Placeholder things. That said, the support for this is only
 * guaranteed to effect subsequently rendered templates, and of course Layouts.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */ 
class Zend_View_Helper_Placeholder extends Zend_View_Helper_Abstract
{  
    /**
     * Placeholder items
     * @var array
     */  
    protected $_items = array();  

    /**
     * @var Zend_View_Helper_Placeholder_Registry
     */
    protected $_registry;

    /**
     * Constructor
     *
     * Retrieve container registry from Zend_Registry, or create new one and register it.
     * 
     * @return void
     */
    public function __construct()
    {
        $this->_registry = Zend_View_Helper_Placeholder_Registry::getRegistry();
    }
  
 
    /**
     * Placeholder helper
     * 
     * @param  string $name 
     * @return Zend_View_Helper_Placeholder_Container_Abstract
     */  
    public function placeholder($name)  
    {  
        $name = (string) $name;  
        return $this->_registry->getContainer($name);
    }  

    /**
     * Retrieve the registry
     * 
     * @return Zend_View_Helper_Placeholder_Registry
     */
    public function getRegistry()
    {
        return $this->_registry;
    }
}
PKpG[������View/Helper/FormCheckbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "checkbox" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
{
    /**
     * Default checked/unchecked options
     * @var array
     */
    protected static $_defaultCheckedOptions = array(
        'checked'   => '1',
        'unChecked' => '0'
    );

    /**
     * Generates a 'checkbox' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     * @param mixed $value The element value.
     * @param array $attribs Attributes for the element tag.
     * @return string The element XHTML.
     */
    public function formCheckbox($name, $value = null, $attribs = null, array $checkedOptions = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, id, value, attribs, options, listsep, disable

        $checked = false;
        if (isset($attribs['checked']) && $attribs['checked']) {
            $checked = true;
            unset($attribs['checked']);
        } elseif (isset($attribs['checked'])) {
            $checked = false;
            unset($attribs['checked']);
        }

        $checkedOptions = self::determineCheckboxInfo($value, $checked, $checkedOptions);

        // is the element disabled?
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        }

        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // build the element
        $xhtml = '';
        if (!strstr($name, '[]')) {
            $xhtml = $this->_hidden($name, $checkedOptions['unCheckedValue']);
        }
        $xhtml .= '<input type="checkbox"'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . ' value="' . $this->view->escape($checkedOptions['checkedValue']) . '"'
                . $checkedOptions['checkedString']
                . $disabled
                . $this->_htmlAttribs($attribs)
                . $endTag;

        return $xhtml;
    }

    /**
     * Determine checkbox information
     * 
     * @param  string $value 
     * @param  bool $checked 
     * @param  array|null $checkedOptions 
     * @return array
     */
    public static function determineCheckboxInfo($value, $checked, array $checkedOptions = null)
    {
        // Checked/unchecked values
        $checkedValue   = null;
        $unCheckedValue = null;
        if (is_array($checkedOptions)) {
            if (array_key_exists('checked', $checkedOptions)) {
                $checkedValue = (string) $checkedOptions['checked'];
                unset($checkedOptions['checked']);
            }
            if (array_key_exists('unChecked', $checkedOptions)) {
                $unCheckedValue = (string) $checkedOptions['unChecked'];
                unset($checkedOptions['unChecked']);
            }
            if (null === $checkedValue) {
                $checkedValue = array_shift($checkedOptions);
            }
            if (null === $unCheckedValue) {
                $unCheckedValue = array_shift($checkedOptions);
            }
        } elseif ($value !== null) {
            $unCheckedValue = self::$_defaultCheckedOptions['unChecked'];
        } else {
            $checkedValue   = self::$_defaultCheckedOptions['checked'];
            $unCheckedValue = self::$_defaultCheckedOptions['unChecked'];
        }

        // is the element checked?
        $checkedString = '';
        if ($checked || ($value === $checkedValue)) {
            $checkedString = ' checked="checked"';
            $checked = true;
        } else {
            $checked = false;
        }

        // Checked value should be value if no checked options provided
        if ($checkedValue == null) {
            $checkedValue = $value;
        }

        return array(
            'checked'        => $checked,
            'checkedString'  => $checkedString,
            'checkedValue'   => $checkedValue,
            'unCheckedValue' => $unCheckedValue,
        );
    }
}
PKpG[�)�c��View/Helper/Layout.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Layout.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * View helper for retrieving layout object
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Layout extends Zend_View_Helper_Abstract
{
    /** @var Zend_Layout */
    protected $_layout;

    /**
     * Get layout object
     *
     * @return Zend_Layout
     */
    public function getLayout()
    {
        if (null === $this->_layout) {
            require_once 'Zend/Layout.php';
            $this->_layout = Zend_Layout::getMvcInstance();
            if (null === $this->_layout) {
                // Implicitly creates layout object
                $this->_layout = new Zend_Layout();
            }
        }

        return $this->_layout;
    }

    /**
     * Set layout object
     *
     * @param  Zend_Layout $layout
     * @return Zend_Layout_Controller_Action_Helper_Layout
     */
    public function setLayout(Zend_Layout $layout)
    {
        $this->_layout = $layout;
        return $this;
    }

    /**
     * Return layout object
     *
     * Usage: $this->layout()->setLayout('alternate');
     *
     * @return Zend_Layout
     */
    public function layout()
    {
        return $this->getLayout();
    }
}
PKpG[�l8�::View/Helper/FormButton.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "button" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormButton extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'button' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formButton($name, $value = null, $attribs = null)
    {
        $info    = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, id, value, attribs, options, listsep, disable

        // Get content
        $content = '';
        if (isset($attribs['content'])) {
            $content = $attribs['content'];
            unset($attribs['content']);
        } else {
            $content = $value;
        }

        // Ensure type is sane
        $type = 'button';
        if (isset($attribs['type'])) {
            $attribs['type'] = strtolower($attribs['type']);
            if (in_array($attribs['type'], array('submit', 'reset', 'button'))) {
                $type = $attribs['type'];
            }
            unset($attribs['type']);
        }

        // build the element
        if ($disable) {
            $attribs['disabled'] = 'disabled';
        }

        $content = ($escape) ? $this->view->escape($content) : $content;

        $xhtml = '<button'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . ' type="' . $type . '"';

        // add a value if one is given
        if (!empty($value)) {
            $xhtml .= ' value="' . $this->view->escape($value) . '"';
        }

        // add attributes and close start tag
        $xhtml .= $this->_htmlAttribs($attribs) . '>';

        // add content and end tag
        $xhtml .= $content . '</button>';

        return $xhtml;
    }
}
PKpG[�7���View/Helper/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 10664 2008-08-05 10:56:06Z matthew $
 */

/**
 * @see Zend_View_Helper_Interface
 */
require_once 'Zend/View/Helper/Interface.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_View_Helper_Abstract implements Zend_View_Helper_Interface
{
    /**
     * View object
     *
     * @var Zend_View_Interface
     */
    public $view = null;
    
    /**
     * Set the View object
     *
     * @param  Zend_View_Interface $view
     * @return Zend_View_Helper_Abstract
     */
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
        return $this;
    }

    /**
     * Strategy pattern: currently unutilized
     *
     * @return void
     */
    public function direct()
    {
    }
}
PKpG[j�ooView/Helper/HtmlPage.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlPage.php 10192 2008-07-18 20:14:57Z matthew $
 */

/**
 * @see Zend_View_Helper_HtmlObject
 */
require_once 'Zend/View/Helper/HtmlObject.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HtmlPage extends Zend_View_Helper_HtmlObject
{
    /**
     * Default file type for html
     *
     */
    const TYPE = 'text/html';

    /**
     * Object classid
     *
     */
    const ATTRIB_CLASSID  = 'clsid:25336920-03F9-11CF-8FD0-00AA00686F13';

    /**
     * Default attributes
     *
     * @var array
     */
    protected $_attribs = array('classid' => self::ATTRIB_CLASSID);

    /**
     * Output a html object tag
     *
     * @param string $data The html url
     * @param array  $attribs Attribs for the object tag
     * @param array  $params Params for in the object tag
     * @param string $content Alternative content
     * @return string
     */
    public function htmlPage($data, array $attribs = array(), array $params = array(), $content = null)
    {
        // Attrs
        $attribs = array_merge($this->_attribs, $attribs);

        // Params
        $params = array_merge(array('data' => $data), $params);

        return $this->htmlObject($data, self::TYPE, $attribs, $params, $content);
    }
}
PKpG[�(LN��View/Helper/FormElement.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_View_Helper_HtmlElement
 */
require_once 'Zend/View/Helper/HtmlElement.php';

/**
 * Base helper for form elements.  Extend this, don't use it on its own.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_View_Helper_FormElement extends Zend_View_Helper_HtmlElement
{
    /**
     * Converts parameter arguments to an element info array.
     *
     * E.g, formExample($name, $value, $attribs, $options, $listsep) is
     * the same thing as formExample(array('name' => ...)).
     *
     * Note that you cannot pass a 'disable' param; you need to pass
     * it as an 'attribs' key.
     *
     * @access protected
     *
     * @return array An element info array with keys for name, value,
     * attribs, options, listsep, disable, and escape.
     */
    protected function _getInfo($name, $value = null, $attribs = null,
        $options = null, $listsep = null
    ) {
        // the baseline info.  note that $name serves a dual purpose;
        // if an array, it's an element info array that will override
        // these baseline values.  as such, ignore it for the 'name'
        // if it's an array.
        $info = array(
            'name'    => is_array($name) ? '' : $name,
            'id'      => is_array($name) ? '' : $name,
            'value'   => $value,
            'attribs' => $attribs,
            'options' => $options,
            'listsep' => $listsep,
            'disable' => false,
            'escape'  => true,
        );

        // override with named args
        if (is_array($name)) {
            // only set keys that are already in info
            foreach ($info as $key => $val) {
                if (isset($name[$key])) {
                    $info[$key] = $name[$key];
                }
            }
        }

        // force attribs to an array, per note from Orjan Persson.
        settype($info['attribs'], 'array');

        // Normalize readonly tag
        if (isset($info['attribs']['readonly'])
            && $info['attribs']['readonly'] != 'readonly')
        {
            $info['attribs']['readonly'] = 'readonly';
        }

        // Disable attribute
        if (isset($info['attribs']['disable'])
            && is_scalar($info['attribs']['disable']))
        {
            // disable the element
            $info['disable'] = (bool)$info['attribs']['disable'];
            unset($info['attribs']['disable']);
        } elseif (isset($info['attribs']['disable'])
            && is_array($info['attribs']['disable']))
        {
            $info['disable'] = $info['attribs']['disable'];
            unset($info['attribs']['disable']);
        }

        // Set ID for element
        if (isset($info['attribs']['id'])) {
            $info['id'] = (string) $info['attribs']['id'];
        } elseif (!isset($info['attribs']['id']) && !empty($info['name'])) {
            $id = $info['name'];
            if (substr($id, -2) == '[]') {
                $id = substr($id, 0, strlen($id) - 2);
            }
            if (strstr($id, ']')) {
                $id = trim($id, ']');
                $id = str_replace('][', '-', $id);
                $id = str_replace('[', '-', $id);
            }
            $info['id'] = $id;
        }

        // Determine escaping from attributes
        if (isset($info['attribs']['escape'])) {
            $info['escape'] = (bool) $info['attribs']['escape'];
        }

        // Determine listsetp from attributes
        if (isset($info['attribs']['listsep'])) {
            $info['listsep'] = (string) $info['attribs']['listsep'];
        }

        // Remove attribs that might overwrite the other keys. We do this LAST
        // because we needed the other attribs values earlier.
        foreach ($info as $key => $val) {
            if (isset($info['attribs'][$key])) {
                unset($info['attribs'][$key]);
            }
        }

        // done!
        return $info;
    }

    /**
     * Creates a hidden element.
     *
     * We have this as a common method because other elements often
     * need hidden elements for their operation.
     *
     * @access protected
     *
     * @param $name The element name.
     *
     * @param $value The element value.
     *
     * @param $attribs Attributes for the element.
     *
     * @return string A hidden element.
     */
    protected function _hidden($name, $value = null, $attribs = null)
    {
        return '<input type="hidden"'
             . ' name="' . $this->view->escape($name) . '"'
             . ' value="' . $this->view->escape($value) . '"'
             . $this->_htmlAttribs($attribs) . $this->getClosingBracket();
    }
}
PKpG[��A��%View/Helper/Placeholder/Container.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Container.php 9099 2008-03-30 19:35:47Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Abstract */
require_once 'Zend/View/Helper/Placeholder/Container/Abstract.php';

/**
 * Container for placeholder values
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */ 
class Zend_View_Helper_Placeholder_Container extends Zend_View_Helper_Placeholder_Container_Abstract
{  
}
PKpG[��,��0View/Helper/Placeholder/Container/Standalone.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Standalone.php 13198 2008-12-13 13:51:40Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Registry */
require_once 'Zend/View/Helper/Placeholder/Registry.php';

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Base class for targetted placeholder helpers
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */ 
abstract class Zend_View_Helper_Placeholder_Container_Standalone extends Zend_View_Helper_Abstract implements IteratorAggregate, Countable, ArrayAccess
{  
    /**
     * @var Zend_View_Helper_Placeholder_Container_Abstract
     */
    protected $_container;

    /**
     * @var Zend_View_Helper_Placeholder_Registry
     */
    protected $_registry;

    /**
     * Registry key under which container registers itself
     * @var string
     */
    protected $_regKey;

    /**
     * Flag wheter to automatically escape output, must also be
     * enforced in the child class if __toString/toString is overriden
     * @var book
     */
    protected $_autoEscape = true;

    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        $this->setRegistry(Zend_View_Helper_Placeholder_Registry::getRegistry());
        $this->setContainer($this->getRegistry()->getContainer($this->_regKey));
    }

    /**
     * Retrieve registry
     * 
     * @return Zend_View_Helper_Placeholder_Registry
     */
    public function getRegistry()
    {
        return $this->_registry;
    }

    /**
     * Set registry object 
     * 
     * @param  Zend_View_Helper_Placeholder_Registry $registry 
     * @return Zend_View_Helper_Placeholder_Container_Standalone
     */
    public function setRegistry(Zend_View_Helper_Placeholder_Registry $registry)
    {
        $this->_registry = $registry;
        return $this;
    }

    /**
     * Set whether or not auto escaping should be used
     * 
     * @param  bool $autoEscape whether or not to auto escape output
     * @return Zend_View_Helper_Placeholder_Container_Standalone
     */
    public function setAutoEscape($autoEscape = true)
    {
        $this->_autoEscape = ($autoEscape) ? true : false;
        return $this;
    }
    
    /**
     * Return whether autoEscaping is enabled or disabled
     *
     * return bool
     */
    public function getAutoEscape()
    {
        return $this->_autoEscape;
    }

    /**
     * Escape a string
     * 
     * @param  string $string 
     * @return string
     */
    protected function _escape($string)
    {
        if ($this->view instanceof Zend_View_Interface) {
            return $this->view->escape($string);
        }

        return htmlentities((string) $string, null, 'UTF-8');
    }

    /**
     * Set container on which to operate
     * 
     * @param  Zend_View_Helper_Placeholder_Container_Abstract $container 
     * @return Zend_View_Helper_Placeholder_Container_Standalone
     */
    public function setContainer(Zend_View_Helper_Placeholder_Container_Abstract $container)
    {
        $this->_container = $container;
        return $this;
    }

    /**
     * Retrieve placeholder container
     * 
     * @return Zend_View_Helper_Placeholder_Container_Abstract
     */
    public function getContainer()
    {
        return $this->_container;
    }

    /**
     * Overloading: set property value
     * 
     * @param  string $key 
     * @param  mixed $value 
     * @return void
     */
    public function __set($key, $value)
    {
        $container = $this->getContainer();
        $container[$key] = $value;
    }

    /**
     * Overloading: retrieve property
     * 
     * @param  string $key 
     * @return mixed
     */
    public function __get($key)
    {
        $container = $this->getContainer();
        if (isset($container[$key])) {
            return $container[$key];
        }

        return null;
    }

    /**
     * Overloading: check if property is set
     * 
     * @param  string $key 
     * @return bool
     */
    public function __isset($key)
    {
        $container = $this->getContainer();
        return isset($container[$key]);
    }

    /**
     * Overloading: unset property
     * 
     * @param  string $key 
     * @return void
     */
    public function __unset($key)
    {
        $container = $this->getContainer();
        if (isset($container[$key])) {
            unset($container[$key]);
        }
    }

    /**
     * Overload
     *
     * Proxy to container methods
     * 
     * @param  string $method 
     * @param  array $args 
     * @return mixed
     */
    public function __call($method, $args)
    {
        $container = $this->getContainer();
        if (method_exists($container, $method)) {
            $return = call_user_func_array(array($container, $method), $args);
            if ($return === $container) {
                // If the container is returned, we really want the current object
                return $this;
            }
            return $return;
        }

        require_once 'Zend/View/Exception.php';
        throw new Zend_View_Exception('Method "' . $method . '" does not exist');
    }

    /**
     * String representation
     * 
     * @return string
     */
    public function toString()
    {
        return $this->getContainer()->toString();
    }

    /**
     * Cast to string representation
     * 
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }

    /**
     * Countable
     * 
     * @return int
     */
    public function count()
    {
        $container = $this->getContainer();
        return count($container);
    }

    /**
     * ArrayAccess: offsetExists
     * 
     * @param  string|int $offset 
     * @return bool
     */
    public function offsetExists($offset)
    {
        return $this->getContainer()->offsetExists($offset);
    }

    /**
     * ArrayAccess: offsetGet
     * 
     * @param  string|int $offset 
     * @return mixed
     */
    public function offsetGet($offset)
    {
        return $this->getContainer()->offsetGet($offset);
    }

    /**
     * ArrayAccess: offsetSet
     * 
     * @param  string|int $offset 
     * @param  mixed $value 
     * @return void
     */
    public function offsetSet($offset, $value)
    {
        return $this->getContainer()->offsetSet($offset, $value);
    }

    /**
     * ArrayAccess: offsetUnset
     * 
     * @param  string|int $offset 
     * @return void
     */
    public function offsetUnset($offset)
    {
        return $this->getContainer()->offsetUnset($offset);
    }

    /**
     * IteratorAggregate: get Iterator
     * 
     * @return Iterator
     */
    public function getIterator()
    {
        return $this->getContainer()->getIterator();
    }
}
PKpG[
Go%%.View/Helper/Placeholder/Container/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Abstract.php 9099 2008-03-30 19:35:47Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Abstract class representing container for placeholder values
 *
 * @package    Zend_View
 * @subpackage Helpers
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_View_Helper_Placeholder_Container_Abstract extends ArrayObject
{
    /**
     * Whether or not to override all contents of placeholder
     * @const string
     */
    const SET    = 'SET';

    /**
     * Whether or not to append contents to placeholder
     * @const string
     */
    const APPEND = 'APPEND';

    /**
     * Whether or not to prepend contents to placeholder
     * @const string
     */
    const PREPEND = 'PREPEND';

    /**
     * What text to prefix the placeholder with when rendering
     * @var string
     */
    protected $_prefix    = '';

    /**
     * What text to append the placeholder with when rendering
     * @var string
     */
    protected $_postfix   = '';

    /**
     * What string to use between individual items in the placeholder when rendering
     * @var string
     */
    protected $_separator = '';

    /**
     * What string to use as the indentation of output, this will typically be spaces. Eg: '    '
     * @var string
     */
    protected $_indent = '';
    
    /**
     * Whether or not we're already capturing for this given container
     * @var bool
     */
    protected $_captureLock = false;

    /**
     * What type of capture (overwrite (set), append, prepend) to use
     * @var string
     */
    protected $_captureType;

    /**
     * Key to which to capture content
     * @var string
     */
    protected $_captureKey;
    
    /**
     * Constructor - This is needed so that we can attach a class member as the ArrayObject container
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct(array(), parent::ARRAY_AS_PROPS);
    }
    
    /**
     * Set a single value
     *
     * @param  mixed $value
     * @return void
     */
    public function set($value)
    {
        $this->exchangeArray(array($value));
    }

    /**
     * Prepend a value to the top of the container
     * 
     * @param  mixed $value 
     * @return void
     */
    public function prepend($value)
    {
        $values = $this->getArrayCopy();
        array_unshift($values, $value);
        $this->exchangeArray($values);
    }

    /**
     * Retrieve container value
     *
     * If single element registered, returns that element; otherwise,
     * serializes to array.
     *
     * @return mixed
     */
    public function getValue()
    {
        if (1 == count($this)) {
            $keys = $this->getKeys();
            $key  = array_shift($keys);
            return $this[$key];
        }

        return $this->getArrayCopy();
    }

    /**
     * Set prefix for __toString() serialization
     *
     * @param  string $prefix
     * @return Zend_View_Helper_Placeholder_Container
     */
    public function setPrefix($prefix)
    {
        $this->_prefix = (string) $prefix;
        return $this;
    }

    /**
     * Retrieve prefix
     *
     * @return string
     */
    public function getPrefix()
    {
        return $this->_prefix;
    }

    /**
     * Set postfix for __toString() serialization
     *
     * @param  string $postfix
     * @return Zend_View_Helper_Placeholder_Container
     */
    public function setPostfix($postfix)
    {
        $this->_postfix = (string) $postfix;
        return $this;
    }

    /**
     * Retrieve postfix
     *
     * @return string
     */
    public function getPostfix()
    {
        return $this->_postfix;
    }

    /**
     * Set separator for __toString() serialization
     *
     * Used to implode elements in container
     *
     * @param  string $separator
     * @return Zend_View_Helper_Placeholder_Container
     */
    public function setSeparator($separator)
    {
        $this->_separator = (string) $separator;
        return $this;
    }

    /**
     * Retrieve separator
     *
     * @return string
     */
    public function getSeparator()
    {
        return $this->_separator;
    }

    /**
     * Set the indentation string for __toString() serialization,
     * optionally, if a number is passed, it will be the number of spaces
     *
     * @param  string|int $indent
     * @return Zend_View_Helper_Placeholder_Container_Abstract
     */
    public function setIndent($indent)
    {
        $this->_indent = $this->getWhitespace($indent);
        return $this;
    }

    /**
     * Retrieve indentation
     *
     * @return string
     */
    public function getIndent()
    {
        return $this->_indent;
    }

    /**
     * Retrieve whitespace representation of $indent
     * 
     * @param  int|string $indent 
     * @return string
     */
    public function getWhitespace($indent)
    {
        if (is_int($indent)) {
            $indent = str_repeat(' ', $indent);
        }

        return (string) $indent;
    }
   
    /**
     * Start capturing content to push into placeholder
     *
     * @param  int $type How to capture content into placeholder; append, prepend, or set
     * @return void
     * @throws Zend_View_Helper_Placeholder_Exception if nested captures detected
     */
    public function captureStart($type = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $key = null)
    {
        if ($this->_captureLock) {
            require_once 'Zend/View/Helper/Placeholder/Container/Exception.php';
            throw new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest placeholder captures for the same placeholder');
        }

        $this->_captureLock = true;
        $this->_captureType = $type;
        if ((null !== $key) && is_scalar($key)) {
            $this->_captureKey = (string) $key;
        }
        ob_start();
    }

    /**
     * End content capture
     *
     * @return void
     */
    public function captureEnd()
    {
        $data               = ob_get_clean();
        $key                = null;
        $this->_captureLock = false;
        if (null !== $this->_captureKey) {
            $key = $this->_captureKey;
        }
        switch ($this->_captureType) {
            case self::SET:
                if (null !== $key) {
                    $this[$key] = $data;
                } else {
                    $this->exchangeArray(array($data));
                }
                break;
            case self::PREPEND:
                if (null !== $key) {
                    $array  = array($key => $data);
                    $values = $this->getArrayCopy();
                    $final  = $array + $values;
                    $this->exchangeArray($final);
                } else {
                    $this->prepend($data);
                }
                break;
            case self::APPEND:
            default:
                if (null !== $key) {
                    if (empty($this[$key])) {                                                       
                        $this[$key] = $data;                                                       
                    } else {                                                                       
                        $this[$key] .= $data;                                                      
                    }
                } else {
                    $this[$this->nextIndex()] = $data;
                }
                break;
        }
    }

    /**
     * Get keys
     * 
     * @return array
     */
    public function getKeys()
    {
        $array = $this->getArrayCopy();
        return array_keys($array);
    }

    /**
     * Next Index
     *
     * as defined by the PHP manual
     * @return int
     */
    public function nextIndex()
    {
        $keys = $this->getKeys();
        if (0 == count($keys)) {
            return 0;
        }

        return $nextIndex = max($keys) + 1;
    }
    
    /**
     * Render the placeholder
     *
     * @return string
     */
    public function toString($indent = null)
    {
        $indent = ($indent !== null) 
                ? $this->getWhitespace($indent) 
                : $this->getIndent();
        
        $items  = $this->getArrayCopy();
        $return = $indent 
                . $this->getPrefix()
                . implode($this->getSeparator(), $items)
                . $this->getPostfix();
        $return = preg_replace("/(\r\n?|\n)/", '$1' . $indent, $return);
        return $return;
    }

    /**
     * Serialize object to string
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }
}
PKpG[�E_R��/View/Helper/Placeholder/Container/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_View_Exception */
require_once 'Zend/View/Exception.php';


/**
 * Exception for Zend_View_Helper_Placeholder_Container class.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Placeholder_Container_Exception extends Zend_View_Exception
{
}
PKpG[�k���.View/Helper/Placeholder/Registry/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_View_Exception */
require_once 'Zend/View/Exception.php';


/**
 * Exception for Zend_View_Helper_Placeholder_Registry class.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Placeholder_Registry_Exception extends Zend_View_Exception
{
}
PKpG[F�Ѥ$View/Helper/Placeholder/Registry.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Registry.php 9099 2008-03-30 19:35:47Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Registry */
require_once 'Zend/Registry.php';

/** Zend_View_Helper_Placeholder_Container_Abstract */
require_once 'Zend/View/Helper/Placeholder/Container/Abstract.php';

/** Zend_View_Helper_Placeholder_Container */
require_once 'Zend/View/Helper/Placeholder/Container.php';

/**
 * Registry for placeholder containers
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */ 
class Zend_View_Helper_Placeholder_Registry
{
    /**
     * Zend_Registry key under which placeholder registry exists
     * @const string
     */
    const REGISTRY_KEY = 'Zend_View_Helper_Placeholder_Registry';

    /**
     * Default container class
     * @var string
     */
    protected $_containerClass = 'Zend_View_Helper_Placeholder_Container';

    /**
     * Placeholder containers
     * @var array
     */
    protected $_items = array();

    /**
     * Retrieve or create registry instnace
     * 
     * @return void
     */
    public static function getRegistry()
    {
        if (Zend_Registry::isRegistered(self::REGISTRY_KEY)) {
            $registry = Zend_Registry::get(self::REGISTRY_KEY);
        } else {
            $registry = new self();
            Zend_Registry::set(self::REGISTRY_KEY, $registry);
        }

        return $registry;
    }

    /**
     * createContainer 
     * 
     * @param  string $key 
     * @param  array $value 
     * @return Zend_View_Helper_Placeholder_Container_Abstract
     */
    public function createContainer($key, array $value = array())
    {
        $key = (string) $key;

        $this->_items[$key] = new $this->_containerClass(array());
        return $this->_items[$key];
    }

    /**
     * Retrieve a placeholder container
     * 
     * @param  string $key 
     * @return Zend_View_Helper_Placeholder_Container_Abstract
     */
    public function getContainer($key)
    {
        $key = (string) $key;
        if (isset($this->_items[$key])) {
            return $this->_items[$key];
        }

        $container = $this->createContainer($key);

        return $container;
    }

    /**
     * Does a particular container exist?
     * 
     * @param  string $key 
     * @return bool
     */
    public function containerExists($key)
    {
        $key = (string) $key;
        $return =  array_key_exists($key, $this->_items);
        return $return;
    }

    /**
     * Set the container for an item in the registry
     * 
     * @param  string $key 
     * @param  Zend_View_Placeholder_Container_Abstract $container 
     * @return Zend_View_Placeholder_Registry
     */
    public function setContainer($key, Zend_View_Helper_Placeholder_Container_Abstract $container)
    {
        $key = (string) $key;
        $this->_items[$key] = $container;
        return $this;
    }

    /**
     * Delete a container
     * 
     * @param  string $key 
     * @return bool
     */
    public function deleteContainer($key)
    {
        $key = (string) $key;
        if (isset($this->_items[$key])) {
            unset($this->_items[$key]);
            return true;
        }

        return false;
    }

    /**
     * Set the container class to use
     * 
     * @param  string $name 
     * @return Zend_View_Helper_Placeholder_Registry
     */
    public function setContainerClass($name)
    {
        require_once 'Zend/Loader.php';
        Zend_Loader::loadClass($name);

        $reflection = new ReflectionClass($name);
        if (!$reflection->isSubclassOf(new ReflectionClass('Zend_View_Helper_Placeholder_Container_Abstract'))) {
            require_once 'Zend/View/Helper/Placeholder/Registry/Exception.php';
            throw new Zend_View_Helper_Placeholder_Registry_Exception('Invalid Container class specified');
        }

        $this->_containerClass = $name;
        return $this;
    }

    /**
     * Retrieve the container class
     * 
     * @return string
     */
    public function getContainerClass()
    {
        return $this->_containerClass;
    }
}
PKpG[�(bbView/Helper/InlineScript.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: InlineScript.php 9099 2008-03-30 19:35:47Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_HeadScript */
require_once 'Zend/View/Helper/HeadScript.php';

/**
 * Helper for setting and retrieving script elements for inclusion in HTML body 
 * section
 *
 * @uses       Zend_View_Helper_Head_Script
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_InlineScript extends Zend_View_Helper_HeadScript
{
    /**
     * Registry key for placeholder
     * @var string
     */
    protected $_regKey = 'Zend_View_Helper_InlineScript';

    /**
     * Return InlineScript object
     *
     * Returns InlineScript helper object; optionally, allows specifying a 
     * script or script file to include.
     *
     * @param  string $mode Script or file
     * @param  string $spec Script/url
     * @param  string $placement Append, prepend, or set
     * @param  array $attrs Array of script attributes
     * @param  string $type Script type and/or array of script attributes
     * @return Zend_View_Helper_InlineScript
     */
    public function inlineScript($mode = Zend_View_Helper_HeadScript::FILE, $spec = null, $placement = 'APPEND', array $attrs = array(), $type = 'text/javascript')
    {
        return $this->headScript($mode, $spec, $placement, $attrs, $type);
    }
}
PKpG[�#���View/Helper/FormSelect.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate "select" list of options
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormSelect extends Zend_View_Helper_FormElement
{
    /**
     * Generates 'select' list of options.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The option value to mark as 'selected'; if an
     * array, will mark all values in the array as 'selected' (used for
     * multiple-select elements).
     *
     * @param array|string $attribs Attributes added to the 'select' tag.
     *
     * @param array $options An array of key-value pairs where the array
     * key is the radio value, and the array value is the radio text.
     *
     * @param string $listsep When disabled, use this list separator string
     * between list values.
     *
     * @return string The select tag and options XHTML.
     */
    public function formSelect($name, $value = null, $attribs = null,
        $options = null, $listsep = "<br />\n")
    {
        $info = $this->_getInfo($name, $value, $attribs, $options, $listsep);
        extract($info); // name, id, value, attribs, options, listsep, disable

        // force $value to array so we can compare multiple values to multiple 
        // options; also ensure it's a string for comparison purposes.
        $value = array_map('strval', (array) $value);

        // check if element may have multiple values
        $multiple = '';

        if (substr($name, -2) == '[]') {
            // multiple implied by the name
            $multiple = ' multiple="multiple"';
        }

        if (isset($attribs['multiple'])) {
            // Attribute set
            if ($attribs['multiple']) {
                // True attribute; set multiple attribute
                $multiple = ' multiple="multiple"';

                // Make sure name indicates multiple values are allowed
                if (!empty($multiple) && (substr($name, -2) != '[]')) {
                    $name .= '[]';
                }
            } else {
                // False attribute; ensure attribute not set
                $multiple = '';
            }
            unset($attribs['multiple']);
        } 

        // now start building the XHTML.
        $disabled = '';
        if (true === $disable) {
            $disabled = ' disabled="disabled"';
        }

        // Build the surrounding select element first.
        $xhtml = '<select'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $multiple
                . $disabled
                . $this->_htmlAttribs($attribs)
                . ">\n    ";

        // build the list of options
        $list = array();
        foreach ((array) $options as $opt_value => $opt_label) {
            if (is_array($opt_label)) {
                $opt_disable = '';
                if (is_array($disable) && in_array($opt_value, $disable)) {
                    $opt_disable = ' disabled="disabled"';
                }
                $list[] = '<optgroup'
                        . $opt_disable
                        . ' label="' . $this->view->escape($opt_value) .'">';
                foreach ($opt_label as $val => $lab) {
                    $list[] = $this->_build($val, $lab, $value, $disable);
                }
                $list[] = '</optgroup>';
            } else {
                $list[] = $this->_build($opt_value, $opt_label, $value, $disable);
            }
        }

        // add the options to the xhtml and close the select
        $xhtml .= implode("\n    ", $list) . "\n</select>";

        return $xhtml;
    }

    /**
     * Builds the actual <option> tag
     *
     * @param string $value Options Value
     * @param string $label Options Label
     * @param array  $selected The option value(s) to mark as 'selected'
     * @param array|bool $disable Whether the select is disabled, or individual options are
     * @return string Option Tag XHTML
     */
    protected function _build($value, $label, $selected, $disable)
    {
        if (is_bool($disable)) {
            $disable = array();
        }

        $opt = '<option'
             . ' value="' . $this->view->escape($value) . '"'
             . ' label="' . $this->view->escape($label) . '"';

        // selected?
        if (in_array((string) $value, $selected)) {
            $opt .= ' selected="selected"';
        }

        // disabled?
        if (in_array($value, $disable)) {
            $opt .= ' disabled="disabled"';
        }

        $opt .= '>' . $this->view->escape($label) . "</option>";

        return $opt;
    }

}
PKpG[}�],��!View/Helper/FormMultiCheckbox.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/** Zend_View_Helper_FormRadio */
require_once 'Zend/View/Helper/FormRadio.php';


/**
 * Helper to generate a set of checkbox button elements
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormMultiCheckbox extends Zend_View_Helper_FormRadio
{
    /**
     * Input type to use
     * @var string
     */
    protected $_inputType = 'checkbox';

    /**
     * Whether or not this element represents an array collection by default
     * @var bool
     */
    protected $_isArray = true;

    /**
     * Generates a set of checkbox button elements.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The checkbox value to mark as 'checked'.
     *
     * @param array $options An array of key-value pairs where the array
     * key is the checkbox value, and the array value is the radio text.
     *
     * @param array|string $attribs Attributes added to each radio.
     *
     * @return string The radio buttons XHTML.
     */
    public function formMultiCheckbox($name, $value = null, $attribs = null,
        $options = null, $listsep = "<br />\n")
    {
        return $this->formRadio($name, $value, $attribs, $options, $listsep);
    }
}
PKpG[au��++View/Helper/FormErrors.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to render errors for a form element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormErrors extends Zend_View_Helper_FormElement
{
    /**
     * @var Zend_Form_Element
     */
    protected $_element;

    /**#@+
     * @var string Element block start/end tags and separator
     */
    protected $_htmlElementEnd       = '</li></ul>';
    protected $_htmlElementStart     = '<ul%s><li>';
    protected $_htmlElementSeparator = '</li><li>';
    /**#@-*/

    /**
     * Render form errors
     *
     * @param  string|array $errors Error(s) to render
     * @param  array $options
     * @return string
     */
    public function formErrors($errors, array $options = null)
    {
        $escape = true;
        if (isset($options['escape'])) {
            $escape = (bool) $options['escape'];
            unset($options['escape']);
        }

        if (empty($options['class'])) {
            $options['class'] = 'errors';
        }

        $start = $this->getElementStart();
        if (strstr($start, '%s')) {
            $attribs = $this->_htmlAttribs($options);
            $start   = sprintf($start, $attribs);
        }

        if ($escape) {
            foreach ($errors as $key => $error) {
                $errors[$key] = $this->view->escape($error);
            }
        }

        $html  = $start
               . implode($this->getElementSeparator(), (array) $errors)
               . $this->getElementEnd();

        return $html;
    }

    /**
     * Set end string for displaying errors
     *
     * @param  string $string
     * @return Zend_View_Helper_FormErrors
     */
    public function setElementEnd($string)
    {
        $this->_htmlElementEnd = (string) $string;
        return $this;
    }

    /**
     * Retrieve end string for displaying errors
     *
     * @return string
     */
    public function getElementEnd()
    {
        return $this->_htmlElementEnd;
    }

    /**
     * Set separator string for displaying errors
     *
     * @param  string $string
     * @return Zend_View_Helper_FormErrors
     */
    public function setElementSeparator($string)
    {
        $this->_htmlElementSeparator = (string) $string;
        return $this;
    }

    /**
     * Retrieve separator string for displaying errors
     *
     * @return string
     */
    public function getElementSeparator()
    {
        return $this->_htmlElementSeparator;
    }

    /**
     * Set start string for displaying errors
     *
     * @param  string $string
     * @return Zend_View_Helper_FormErrors
     */
    public function setElementStart($string)
    {
        $this->_htmlElementStart = (string) $string;
        return $this;
    }

    /**
     * Retrieve start string for displaying errors
     *
     * @return string
     */
    public function getElementStart()
    {
        return $this->_htmlElementStart;
    }

}
PKpG[J˵

View/Helper/Json.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Json.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Json */
require_once 'Zend/Json.php';

/** Zend_Controller_Front */
require_once 'Zend/Controller/Front.php';

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for simplifying JSON responses
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Json extends Zend_View_Helper_Abstract
{
    /**
     * Encode data as JSON, disable layouts, and set response header
     *
     * If $keepLayouts is true, does not disable layouts.
     * 
     * @param  mixed $data 
     * @param  bool $keepLayouts
     * @return string|void
     */
    public function json($data, $keepLayouts = false)
    {
        $data = Zend_Json::encode($data);
        if (!$keepLayouts) {
            require_once 'Zend/Layout.php';
            $layout = Zend_Layout::getMvcInstance();
            if ($layout instanceof Zend_Layout) {
                $layout->disableLayout();
            }
        }

        $response = Zend_Controller_Front::getInstance()->getResponse();
        $response->setHeader('Content-Type', 'application/json');
        return $data;
    }
}
PKpG[�y5b##View/Helper/FormRadio.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a set of radio button elements
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormRadio extends Zend_View_Helper_FormElement
{
    /**
     * Input type to use
     * @var string
     */
    protected $_inputType = 'radio';

    /**
     * Whether or not this element represents an array collection by default
     * @var bool
     */
    protected $_isArray = false;

    /**
     * Generates a set of radio button elements.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The radio value to mark as 'checked'.
     *
     * @param array $options An array of key-value pairs where the array
     * key is the radio value, and the array value is the radio text.
     *
     * @param array|string $attribs Attributes added to each radio.
     *
     * @return string The radio buttons XHTML.
     */
    public function formRadio($name, $value = null, $attribs = null,
        $options = null, $listsep = "<br />\n")
    {

        $info = $this->_getInfo($name, $value, $attribs, $options, $listsep);
        extract($info); // name, value, attribs, options, listsep, disable

        // retrieve attributes for labels (prefixed with 'label_' or 'label')
        $label_attribs = array('style' => 'white-space: nowrap;');
        foreach ($attribs as $key => $val) {
            $tmp    = false;
            $keyLen = strlen($key);
            if ((6 < $keyLen) && (substr($key, 0, 6) == 'label_')) {
                $tmp = substr($key, 6);
            } elseif ((5 < $keyLen) && (substr($key, 0, 5) == 'label')) {
                $tmp = substr($key, 5);
            }

            if ($tmp) {
                // make sure first char is lowercase
                $tmp[0] = strtolower($tmp[0]);
                $label_attribs[$tmp] = $val;
                unset($attribs[$key]);
            }
        }

        $labelPlacement = 'append';
        foreach ($label_attribs as $key => $val) {
            switch (strtolower($key)) {
                case 'placement':
                    unset($label_attribs[$key]);
                    $val = strtolower($val);
                    if (in_array($val, array('prepend', 'append'))) {
                        $labelPlacement = $val;
                    }
                    break;
            }
        }

        // the radio button values and labels
        $options = (array) $options;

        // build the element
        $xhtml = '';
        $list  = array();
        
        // should the name affect an array collection?
        $name = $this->view->escape($name);
        if ($this->_isArray && ('[]' != substr($name, -2))) {
            $name .= '[]';
        }

        // ensure value is an array to allow matching multiple times
        $value = (array) $value;

        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // add radio buttons to the list.
        require_once 'Zend/Filter/Alnum.php';
        $filter = new Zend_Filter_Alnum();
        foreach ($options as $opt_value => $opt_label) {

            // Should the label be escaped?
            if ($escape) {
                $opt_label = $this->view->escape($opt_label);
            }

            // is it disabled?
            $disabled = '';
            if (true === $disable) {
                $disabled = ' disabled="disabled"';
            } elseif (is_array($disable) && in_array($opt_value, $disable)) {
                $disabled = ' disabled="disabled"';
            }

            // is it checked?
            $checked = '';
            if (in_array($opt_value, $value)) {
                $checked = ' checked="checked"';
            }

            // generate ID
            $optId = $id . '-' . $filter->filter($opt_value);

            // Wrap the radios in labels
            $radio = '<label'
                    . $this->_htmlAttribs($label_attribs) . '>'
                    . (('prepend' == $labelPlacement) ? $opt_label : '')
                    . '<input type="' . $this->_inputType . '"'
                    . ' name="' . $name . '"'
                    . ' id="' . $optId . '"'
                    . ' value="' . $this->view->escape($opt_value) . '"'
                    . $checked
                    . $disabled
                    . $this->_htmlAttribs($attribs) 
                    . $endTag
                    . (('append' == $labelPlacement) ? $opt_label : '')
                    . '</label>';

            // add to the array of radio buttons
            $list[] = $radio;
        }

        // done!
        $xhtml .= implode($listsep, $list);

        return $xhtml;
    }
}
PKpG[s�c��#View/Helper/RenderToPlaceholder.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id:$
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for making easy links and getting urls that depend on the routes and router
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_View_Helper_RenderToPlaceholder extends Zend_View_Helper_Abstract
{

    public function renderToPlaceholder($script, $placeholder)
    {
        $this->view->placeholder($placeholder)->captureStart();
        echo $this->view->render($script);
        $this->view->placeholder($placeholder)->captureEnd();
    }
}
PKpG[q�-UView/Helper/Doctype.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Registry */
require_once 'Zend/Registry.php';

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for setting and retrieving the doctype
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Doctype extends Zend_View_Helper_Abstract
{
    /**#@+
     * DocType constants
     */
    const XHTML11             = 'XHTML11';
    const XHTML1_STRICT       = 'XHTML1_STRICT';
    const XHTML1_TRANSITIONAL = 'XHTML1_TRANSITIONAL';
    const XHTML1_FRAMESET     = 'XHTML1_FRAMESET';
    const XHTML_BASIC1        = 'XHTML_BASIC1';
    const HTML4_STRICT        = 'HTML4_STRICT';
    const HTML4_LOOSE         = 'HTML4_LOOSE';
    const HTML4_FRAMESET      = 'HTML4_FRAMESET';
    const HTML5               = 'HTML5';
    const CUSTOM_XHTML        = 'CUSTOM_XHTML';
    const CUSTOM              = 'CUSTOM';
    /**#@-*/

    /**
     * Default DocType
     * @var string
     */
    protected $_defaultDoctype = self::HTML4_LOOSE;

    /**
     * Registry containing current doctype and mappings
     * @var ArrayObject
     */
    protected $_registry;

    /**
     * Registry key in which helper is stored
     * @var string
     */
    protected $_regKey = 'Zend_View_Helper_Doctype';

    /**
     * Constructor
     *
     * Map constants to doctype strings, and set default doctype
     *
     * @return void
     */
    public function __construct()
    {
        if (!Zend_Registry::isRegistered($this->_regKey)) {
            $this->_registry = new ArrayObject(array(
                'doctypes' => array(
                    self::XHTML11             => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
                    self::XHTML1_STRICT       => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
                    self::XHTML1_TRANSITIONAL => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
                    self::XHTML1_FRAMESET     => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
                    self::XHTML_BASIC1        => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">',
                    self::HTML4_STRICT        => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
                    self::HTML4_LOOSE         => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
                    self::HTML4_FRAMESET      => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">',
                    self::HTML5               => '<!DOCTYPE html>',
                )
            ));
            Zend_Registry::set($this->_regKey, $this->_registry);
            $this->setDoctype($this->_defaultDoctype);
        } else {
            $this->_registry = Zend_Registry::get($this->_regKey);
        }
    }

    /**
     * Set or retrieve doctype
     *
     * @param  string $doctype
     * @return Zend_View_Helper_Doctype
     */
    public function doctype($doctype = null)
    {
        if (null !== $doctype) {
            switch ($doctype) {
                case self::XHTML11:
                case self::XHTML1_STRICT:
                case self::XHTML1_TRANSITIONAL:
                case self::XHTML1_FRAMESET:
                case self::XHTML_BASIC1:
                case self::HTML4_STRICT:
                case self::HTML4_LOOSE:
                case self::HTML4_FRAMESET:
                case self::HTML5:
                    $this->setDoctype($doctype);
                    break;
                default:
                    if (substr($doctype, 0, 9) != '<!DOCTYPE') {
                        require_once 'Zend/View/Exception.php';
                        throw new Zend_View_Exception('The specified doctype is malformed');
                    }
                    if (stristr($doctype, 'xhtml')) {
                        $type = self::CUSTOM_XHTML;
                    } else {
                        $type = self::CUSTOM;
                    }
                    $this->setDoctype($type);
                    $this->_registry['doctypes'][$type] = $doctype;
                    break;
            }
        }

        return $this;
    }

    /**
     * Set doctype
     *
     * @param  string $doctype
     * @return Zend_View_Helper_Doctype
     */
    public function setDoctype($doctype)
    {
        $this->_registry['doctype'] = $doctype;
        return $this;
    }

    /**
     * Retrieve doctype
     *
     * @return string
     */
    public function getDoctype()
    {
        return $this->_registry['doctype'];
    }

    /**
     * Get doctype => string mappings
     *
     * @return array
     */
    public function getDoctypes()
    {
        return $this->_registry['doctypes'];
    }

    /**
     * Is doctype XHTML?
     *
     * @return boolean
     */
    public function isXhtml()
    {
        return (stristr($this->getDoctype(), 'xhtml') ? true : false);
    }

    /**
     * String representation of doctype
     *
     * @return string
     */
    public function __toString()
    {
        $doctypes = $this->getDoctypes();
        return $doctypes[$this->getDoctype()];
    }
}
PKpG[�d�.�
�
View/Helper/HtmlList.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_View_Helper_FormELement
 */
require_once 'Zend/View/Helper/FormElement.php';

/**
 * Helper for ordered and unordered lists
 *
 * @uses Zend_View_Helper_FormElement
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HtmlList extends Zend_View_Helper_FormElement
{

    /**
     * Generates a 'List' element.
     *
     * @param array   $items   Array with the elements of the list
     * @param boolean $ordered Specifies ordered/unordered list; default unordered
     * @param array   $attribs Attributes for the ol/ul tag.
     * @return string The list XHTML.
     */
    public function htmlList(array $items, $ordered = false, $attribs = false, $escape = true)
    {
        if (!is_array($items)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('First param must be an array', $this);
        }

        $list = '';

        foreach ($items as $item) {
            if (!is_array($item)) {
                if ($escape) {
                    $item = $this->view->escape($item);
                }
                $list .= '<li>' . $item . '</li>' . self::EOL;
            } else {
                if (5 < strlen($list)) {
                    $list = substr($list, 0, strlen($list) - 5)
                     . $this->htmlList($item, $ordered, $attribs, $escape) . '</li>' . self::EOL;
                } else {
                    $list .= '<li>' . $this->htmlList($item, $ordered, $attribs, $escape) . '</li>' . self::EOL;
                }
            }
        }

        if ($attribs) {
            $attribs = $this->_htmlAttribs($attribs);
        } else {
            $attribs = '';
        }

        $tag = 'ul';
        if ($ordered) {
            $tag = 'ol';
        }

        return '<' . $tag . $attribs . '>' . self::EOL . $list . '</' . $tag . '>' . self::EOL;
    }
}
PKpG[μ4U	U	View/Helper/FormFile.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "file" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormFile extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'file' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formFile($name, $attribs = null)
    {
        $info = $this->_getInfo($name, null, $attribs);
        extract($info); // name, id, value, attribs, options, listsep, disable

        // is it disabled?
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        } 

        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // build the element
        $xhtml = '<input type="file"'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $disabled
                . $this->_htmlAttribs($attribs) 
                . $endTag;

        return $xhtml;
    }
}
PKpG[��

View/Helper/FormReset.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "reset" button
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormReset extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'reset' button.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formReset($name = '', $value = 'Reset', $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // check if disabled
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        }

        // get closing tag
        $endTag = '>';
        if ($this->view->doctype()->isXhtml()) {
            $endTag = ' />';
        }

        // Render button
        $xhtml = '<input type="reset"'
               . ' name="' . $this->view->escape($name) . '"'
               . ' id="' . $this->view->escape($id) . '"'
               . $disabled;

        // add a value if one is given
        if (! empty($value)) {
            $xhtml .= ' value="' . $this->view->escape($value) . '"';
        }

        // add attributes, close, and return
        $xhtml .= $this->_htmlAttribs($attribs) . $endTag;
        return $xhtml;
    }
}
PKpG[V�h�,,View/Helper/HtmlElement.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlElement.php 12477 2008-11-09 01:55:35Z yoshida@zend.co.jp $
 */

/**
 * @see Zend_View_Helper_Abstract
 */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_View_Helper_HtmlElement extends Zend_View_Helper_Abstract
{
    /**
     * EOL character
     */
    const EOL = "\n";

    /**
     * The tag closing bracket
     *
     * @var string
     */
    protected $_closingBracket = null;

    /**
     * Get the tag closing bracket
     *
     * @return string
     */
    public function getClosingBracket()
    {
        if (!$this->_closingBracket) {
            if ($this->_isXhtml()) {
                $this->_closingBracket = ' />';
            } else {
                $this->_closingBracket = '>';
            }
        }

        return $this->_closingBracket;
    }

    /**
     * Is doctype XHTML?
     *
     * @return boolean
     */
    protected function _isXhtml()
    {
        $doctype = $this->view->doctype();
        return $doctype->isXhtml();
    }

    /**
     * Converts an associative array to a string of tag attributes.
     *
     * @access public
     *
     * @param array $attribs From this array, each key-value pair is
     * converted to an attribute name and value.
     *
     * @return string The XHTML for the attributes.
     */
    protected function _htmlAttribs($attribs)
    {
        $xhtml = '';
        foreach ((array) $attribs as $key => $val) {
            $key = $this->view->escape($key);

            if (('on' == substr($key, 0, 2)) || ('constraints' == $key)) {
                // Don't escape event attributes; _do_ substitute double quotes with singles
                if (!is_scalar($val)) {
                    // non-scalar data should be cast to JSON first
                    require_once 'Zend/Json.php';
                    $val = Zend_Json::encode($val);
                }
                $val = preg_replace('/"([^"]*)":/', '$1:', $val);
            } else {
                if (is_array($val)) {
                    $val = implode(' ', $val);
                }
                $val = $this->view->escape($val);
            }

            if ('id' == $key) {
                $val = $this->_normalizeId($val);
            }

            if (strpos($val, '"') !== false) {
                $xhtml .= " $key='$val'";
            } else {
                $xhtml .= " $key=\"$val\"";
            }
            
        }
        return $xhtml;
    }

    /**
     * Normalize an ID
     * 
     * @param  string $value 
     * @return string
     */
    protected function _normalizeId($value)
    {
        if (strstr($value, '[')) {
            if ('[]' == substr($value, -2)) {
                $value = substr($value, 0, strlen($value) - 2);
            }
            $value = trim($value, ']');
            $value = str_replace('][', '-', $value);
            $value = str_replace('[', '-', $value);
        }
        return $value;
    }
}
PKpG[pᎯ))View/Helper/HeadMeta.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Placeholder.php 7078 2007-12-11 14:29:33Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Placeholder_Container_Standalone */
require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';

/** Zend_View_Exception */
require_once 'Zend/View/Exception.php';

/**
 * Zend_Layout_View_Helper_HeadMeta
 *
 * @see        http://www.w3.org/TR/xhtml1/dtds.html
 * @uses       Zend_View_Helper_Placeholder_Container_Standalone
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_HeadMeta extends Zend_View_Helper_Placeholder_Container_Standalone
{
    /**
     * Types of attributes
     * @var array
     */
    protected $_typeKeys     = array('name', 'http-equiv');
    protected $_requiredKeys = array('content');
    protected $_modifierKeys = array('lang', 'scheme');

    /**
     * @var string registry key
     */
    protected $_regKey = 'Zend_View_Helper_HeadMeta';

    /**
     * Constructor
     *
     * Set separator to PHP_EOL
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->setSeparator(PHP_EOL);
    }

    /**
     * Retrieve object instance; optionally add meta tag
     *
     * @param  string $content
     * @param  string $keyValue
     * @param  string $keyType
     * @param  array $modifiers
     * @param  string $placement
     * @return Zend_View_Helper_HeadMeta
     */
    public function headMeta($content = null, $keyValue = null, $keyType = 'name', $modifiers = array(), $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND)
    {
        if ((null !== $content) && (null !== $keyValue)) {
            $item   = $this->createData($keyType, $keyValue, $content, $modifiers);
            $action = strtolower($placement);
            switch ($action) {
                case 'append':
                case 'prepend':
                case 'set':
                    $this->$action($item);
                    break;
                default:
                    $this->append($item);
                    break;
            }
        }

        return $this;
    }

    protected function _normalizeType($type)
    {
        switch ($type) {
            case 'Name':
                return 'name';
            case 'HttpEquiv':
                return 'http-equiv';
            default:
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception(sprintf('Invalid type "%s" passed to _normalizeType', $type));
        }
    }

    /**
     * Overload method access
     *
     * Allows the following 'virtual' methods:
     * - appendName($keyValue, $content, $modifiers = array())
     * - offsetGetName($index, $keyValue, $content, $modifers = array())
     * - prependName($keyValue, $content, $modifiers = array())
     * - setName($keyValue, $content, $modifiers = array())
     * - appendHttpEquiv($keyValue, $content, $modifiers = array())
     * - offsetGetHttpEquiv($index, $keyValue, $content, $modifers = array())
     * - prependHttpEquiv($keyValue, $content, $modifiers = array())
     * - setHttpEquiv($keyValue, $content, $modifiers = array())
     *
     * @param  string $method
     * @param  array $args
     * @return Zend_View_Helper_HeadMeta
     */
    public function __call($method, $args)
    {
        if (preg_match('/^(?P<action>set|(pre|ap)pend|offsetSet)(?P<type>Name|HttpEquiv)$/', $method, $matches)) {
            $action = $matches['action'];
            $type   = $this->_normalizeType($matches['type']);
            $argc   = count($args);
            $index  = null;

            if ('offsetSet' == $action) {
                if (0 < $argc) {
                    $index = array_shift($args);
                    --$argc;
                }
            }

            if (2 > $argc) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception('Too few arguments provided; requires key value, and content');
            }

            if (3 > $argc) {
                $args[] = array();
            }

            $item  = $this->createData($type, $args[0], $args[1], $args[2]);

            if ('offsetSet' == $action) {
                return $this->offsetSet($index, $item);
            }

            if ($action == 'set') {
                //var_dump($this->getContainer());
            }

            $this->$action($item);
            return $this;
        }

        return parent::__call($method, $args);
    }

    /**
     * Determine if item is valid
     *
     * @param  mixed $item
     * @return boolean
     */
    protected function _isValid($item)
    {
        if ((!$item instanceof stdClass)
            || !isset($item->type)
            || !isset($item->content)
            || !isset($item->modifiers))
        {
            return false;
        }

        return true;
    }

    /**
     * Append
     *
     * @param  string $value
     * @return void
     * @throws Zend_View_Exception
     */
    public function append($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to append; please use appendMeta()');
        }

        return $this->getContainer()->append($value);
    }

    /**
     * OffsetSet
     *
     * @param  string|int $index
     * @param  string $value
     * @return void
     * @throws Zend_View_Exception
     */
    public function offsetSet($index, $value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to offsetSet; please use offsetSetMeta()');
        }

        return $this->getContainer()->offsetSet($index, $value);
    }

    /**
     * OffsetUnset
     *
     * @param  string|int $index
     * @return void
     * @throws Zend_View_Exception
     */
    public function offsetUnset($index)
    {
        if (!in_array($index, $this->getContainer()->getKeys())) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid index passed to offsetUnset.');
        }

        return $this->getContainer()->offsetUnset($index);
    }

    /**
     * Prepend
     *
     * @param  string $value
     * @return void
     * @throws Zend_View_Exception
     */
    public function prepend($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to prepend; please use prependMeta()');
        }

        return $this->getContainer()->prepend($value);
    }

    /**
     * Set
     *
     * @param  string $value
     * @return void
     * @throws Zend_View_Exception
     */
    public function set($value)
    {
        if (!$this->_isValid($value)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('Invalid value passed to set; please use setMeta()');
        }

        $container = $this->getContainer();
        foreach ($container->getArrayCopy() as $index => $item) {
            if ($item->type == $value->type && $item->{$item->type} == $value->{$value->type}) {
                $this->offsetUnset($index);
            }
        }

        return $this->append($value);
    }

    /**
     * Build meta HTML string
     *
     * @param  string $type
     * @param  string $typeValue
     * @param  string $content
     * @param  array $modifiers
     * @return string
     */
    public function itemToString(stdClass $item)
    {
        if (!in_array($item->type, $this->_typeKeys)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception(sprintf('Invalid type "%s" provided for meta', $item->type));
        }
        $type = $item->type;

        $modifiersString = '';
        foreach ($item->modifiers as $key => $value) {
            if (!in_array($key, $this->_modifierKeys)) {
                continue;
            }
            $modifiersString .= $key . '="' . $this->_escape($value) . '" ';
        }

        if ($this->view instanceof Zend_View_Abstract) {
            $tpl = ($this->view->doctype()->isXhtml())
                 ? '<meta %s="%s" content="%s" %s/>'
                 : '<meta %s="%s" content="%s" %s>';
        } else {
            $tpl = '<meta %s="%s" content="%s" %s/>';
        }

        $meta = sprintf(
            $tpl,
            $type,
            $this->_escape($item->$type),
            $this->_escape($item->content),
            $modifiersString
        );
        return $meta;
    }

    /**
     * Render placeholder as string
     *
     * @param  string|int $indent
     * @return string
     */
    public function toString($indent = null)
    {
        $indent = (null !== $indent)
                ? $this->getWhitespace($indent)
                : $this->getIndent();

        $items = array();
        foreach ($this as $item) {
            $items[] = $this->itemToString($item);
        }
        return $indent . implode($this->_escape($this->getSeparator()) . $indent, $items);
    }

    /**
     * Create data item for inserting into stack
     *
     * @param  string $type
     * @param  string $typeValue
     * @param  string $content
     * @param  array $modifiers
     * @return stdClass
     */
    public function createData($type, $typeValue, $content, array $modifiers)
    {
        $data            = new stdClass;
        $data->type      = $type;
        $data->$type     = $typeValue;
        $data->content   = $content;
        $data->modifiers = $modifiers;
        return $data;
    }
}
PKpG[w-#�	�	View/Helper/FormText.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "text" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormText extends Zend_View_Helper_FormElement
{
    /**
     * Generates a 'text' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are used in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formText($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // build the element
        $disabled = '';
        if ($disable) {
            // disabled
            $disabled = ' disabled="disabled"';
        }
        
        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        $xhtml = '<input type="text"'
                . ' name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . ' value="' . $this->view->escape($value) . '"'
                . $disabled
                . $this->_htmlAttribs($attribs)
                . $endTag;

        return $xhtml;
    }
}
PKpG[�W�dooView/Helper/Partial.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Partial.php 12577 2008-11-12 01:31:34Z sidhighwind $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for rendering a template fragment in its own variable scope.
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Partial extends Zend_View_Helper_Abstract
{
    /**
     * Variable to which object will be assigned
     * @var string
     */
    protected $_objectKey;

    /**
     * Renders a template fragment within a variable scope distinct from the
     * calling View object.
     *
     * If no arguments are passed, returns the helper instance.
     *
     * If the $model is an array, it is passed to the view object's assign()
     * method.
     *
     * If the $model is an object, it first checks to see if the object
     * implements a 'toArray' method; if so, it passes the result of that
     * method to to the view object's assign() method. Otherwise, the result of
     * get_object_vars() is passed.
     *
     * @param  string $name Name of view script
     * @param  string|array $module If $model is empty, and $module is an array,
     *                              these are the variables to populate in the
     *                              view. Otherwise, the module in which the
     *                              partial resides
     * @param  array $model Variables to populate in the view
     * @return string|Zend_View_Helper_Partial
     */
    public function partial($name = null, $module = null, $model = null)
    {
        if (0 == func_num_args()) {
            return $this;
        }

        $view = $this->cloneView();
        if (isset($this->partialCounter)) {
            $view->partialCounter = $this->partialCounter;
        }
        if ((null !== $module) && is_string($module)) {
            require_once 'Zend/Controller/Front.php';
            $moduleDir = Zend_Controller_Front::getInstance()->getControllerDirectory($module);
            if (null === $moduleDir) {
                require_once 'Zend/View/Helper/Partial/Exception.php';
                throw new Zend_View_Helper_Partial_Exception('Cannot render partial; module does not exist');
            }
            $viewsDir = dirname($moduleDir) . '/views';
            $view->addBasePath($viewsDir);
        } elseif ((null == $model) && (null !== $module)
            && (is_array($module) || is_object($module)))
        {
            $model = $module;
        }

        if (!empty($model)) {
            if (is_array($model)) {
                $view->assign($model);
            } elseif (is_object($model)) {
                if (null !== ($objectKey = $this->getObjectKey())) {
                    $view->assign($objectKey, $model);
                } elseif (method_exists($model, 'toArray')) {
                    $view->assign($model->toArray());
                } else {
                    $view->assign(get_object_vars($model));
                }
            }
        }

        return $view->render($name);
    }

    /**
     * Clone the current View
     *
     * @return Zend_View_Interface
     */
    public function cloneView()
    {
        $view = clone $this->view;
        $view->clearVars();
        return $view;
    }

    /**
     * Set object key
     *
     * @param  string $key
     * @return Zend_View_Helper_Partial
     */
    public function setObjectKey($key)
    {
        if (null === $key) {
            $this->_objectKey = null;
        } else {
            $this->_objectKey = (string) $key;
        }

        return $this;
    }

    /**
     * Retrieve object key
     *
     * The objectKey is the variable to which an object in the iterator will be
     * assigned.
     *
     * @return null|string
     */
    public function getObjectKey()
    {
        return $this->_objectKey;
    }
}
PKpG[P%�iiView/Helper/FormTextarea.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to generate a "textarea" element
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormTextarea extends Zend_View_Helper_FormElement
{
    /**
     * The default number of rows for a textarea.
     *
     * @access public
     *
     * @var int
     */
    public $rows = 24;

    /**
     * The default number of columns for a textarea.
     *
     * @access public
     *
     * @var int
     */
    public $cols = 80;

    /**
     * Generates a 'textarea' element.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param mixed $value The element value.
     *
     * @param array $attribs Attributes for the element tag.
     *
     * @return string The element XHTML.
     */
    public function formTextarea($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable

        // is it disabled?
        $disabled = '';
        if ($disable) {
            // disabled.
            $disabled = ' disabled="disabled"';
        }

        // Make sure that there are 'rows' and 'cols' values
        // as required by the spec.  noted by Orjan Persson.
        if (empty($attribs['rows'])) {
            $attribs['rows'] = (int) $this->rows;
        }
        if (empty($attribs['cols'])) {
            $attribs['cols'] = (int) $this->cols;
        }

        // build the element
        $xhtml = '<textarea name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $disabled
                . $this->_htmlAttribs($attribs) . '>'
                . $this->view->escape($value) . '</textarea>';

        return $xhtml;
    }
}
PKpG[@��bI	I	View/Helper/Fieldset.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Fieldset.php 11301 2008-09-08 20:09:10Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_FormElement */
require_once 'Zend/View/Helper/FormElement.php';

/**
 * Helper for rendering fieldsets
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Fieldset extends Zend_View_Helper_FormElement
{
    /**
     * Render HTML form
     *
     * @param  string $name Form name
     * @param  string $content Form content
     * @param  array $attribs HTML form attributes
     * @return string
     */
    public function fieldset($name, $content, $attribs = null)
    {
        $info = $this->_getInfo($name, $content, $attribs);
        extract($info);

        // get legend
        $legend = '';
        if (isset($attribs['legend'])) {
            $legendString = trim($attribs['legend']);
            if (!empty($legendString)) {
                $legend = '<legend>' 
                        . (($escape) ? $this->view->escape($legendString) : $legendString)
                        . '</legend>' . PHP_EOL;
            }
            unset($attribs['legend']);
        }

        // get id
        if (!empty($id)) {
            $id = ' id="' . $this->view->escape($id) . '"';
        } else {
            $id = '';
        }

        // render fieldset
        $xhtml = '<fieldset'
               . $id
               . $this->_htmlAttribs($attribs)
               . '>'
               . $legend
               . $content
               . '</fieldset>';

        return $xhtml;
    }
}
PKpG[côx!View/Helper/PaginationControl.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PaginationControl.php 12321 2008-11-06 10:44:41Z doctorrock83 $
 */

/**
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_PaginationControl
{
    /**
     * View instance
     * 
     * @var Zend_View_Instance
     */
    public $view = null;

    /**
     * Default view partial
     *
     * @var string
     */
    protected static $_defaultViewPartial = null;

    /**
     * Sets the view instance.
     *
     * @param  Zend_View_Interface $view View instance
     * @return Zend_View_Helper_PaginationControl
     */
    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
        return $this;
    }

    /**
     * Sets the default view partial.
     *
     * @param string $partial View partial
     */
    public static function setDefaultViewPartial($partial)
    {
        self::$_defaultViewPartial = $partial;
    }
    
    /**
     * Gets the default view partial
     *
     * @return string
     */
    public static function getDefaultViewPartial()
    {
        return self::$_defaultViewPartial;
    }

    /**
     * Render the provided pages.  This checks if $view->paginator is set and,
     * if so, uses that.  Also, if no scrolling style or partial are specified, 
     * the defaults will be used (if set).
     *
     * @param  Zend_Paginator (Optional) $paginator
     * @param  string $scrollingStyle (Optional) Scrolling style
     * @param  string $partial (Optional) View partial
     * @param  array|string $params (Optional) params to pass to the partial
     * @return string
     * @throws Zend_View_Exception
     */
    public function paginationControl(Zend_Paginator $paginator = null, $scrollingStyle = null, $partial = null, $params = null)
    {
        if ($paginator === null) {
            if (isset($this->view->paginator) and $this->view->paginator !== null and $this->view->paginator instanceof Zend_Paginator) {
                $paginator = $this->view->paginator;
            } else {
                /**
                 * @see Zend_View_Exception
                 */
                require_once 'Zend/View/Exception.php';

                throw new Zend_View_Exception('No paginator instance provided or incorrect type');
            }
        }
        
        if ($partial === null) {
            if (self::$_defaultViewPartial === null) {
                /**
                 * @see Zend_View_Exception
                 */
                require_once 'Zend/View/Exception.php';

                throw new Zend_View_Exception('No view partial provided and no default set');
            }
            
            $partial = self::$_defaultViewPartial;
        }

        $pages = get_object_vars($paginator->getPages($scrollingStyle));
        
        if ($params !== null) {
            $pages = array_merge($pages, (array) $params);
        }

        if (is_array($partial)) {
            if (count($partial) != 2) {
                /**
                 * @see Zend_View_Exception
                 */
                require_once 'Zend/View/Exception.php';

                throw new Zend_View_Exception('A view partial supplied as an array must contain two values: the filename and its module');
            }

            if ($partial[1] !== null) {
                return $this->view->partial($partial[0], $partial[1], $pages);
            }
            
            $partial = $partial[0];
        }
        
        return $this->view->partial($partial, $pages);
    }
}PKpG[���ssView/Helper/Url.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Url.php 10664 2008-08-05 10:56:06Z matthew $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_View_Helper_Abstract.php */
require_once 'Zend/View/Helper/Abstract.php';

/**
 * Helper for making easy links and getting urls that depend on the routes and router
 *
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_Url extends Zend_View_Helper_Abstract
{
    /**
     * Generates an url given the name of a route.
     *
     * @access public
     *
     * @param  array $urlOptions Options passed to the assemble method of the Route object.
     * @param  mixed $name The name of a Route to use. If null it will use the current Route
     * @param  bool $reset Whether or not to reset the route defaults with those provided
     * @return string Url for the link href attribute.
     */
    public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $router = Zend_Controller_Front::getInstance()->getRouter();
        return $router->assemble($urlOptions, $name, $reset, $encode);
    }
}
PKpG[�sj�View/Helper/FormNote.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Abstract class for extension
 */
require_once 'Zend/View/Helper/FormElement.php';


/**
 * Helper to show an HTML note
 *
 * @category   Zend
 * @package    Zend_View
 * @subpackage Helper
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Helper_FormNote extends Zend_View_Helper_FormElement
{
    /**
    * Helper to show a "note" based on a hidden value.
     *
     * @access public
     *
     * @param string|array $name If a string, the element name.  If an
     * array, all other parameters are ignored, and the array elements
     * are extracted in place of added parameters.
     *
     * @param array $value The note to display.  HTML is *not* escaped; the
     * note is displayed as-is.
     *
     * @return string The element XHTML.
     */
    public function formNote($name, $value = null)
    {
        $info = $this->_getInfo($name, $value);
        extract($info); // name, value, attribs, options, listsep, disable
        return $value;
    }
}
PKpG[r�9��View/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Interface class for Zend_View compatible template engine implementations
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_View_Interface
{
    /**
     * Return the template engine object, if any
     *
     * If using a third-party template engine, such as Smarty, patTemplate,
     * phplib, etc, return the template engine object. Useful for calling
     * methods on these objects, such as for setting filters, modifiers, etc.
     *
     * @return mixed
     */
    public function getEngine();

    /**
     * Set the path to find the view script used by render()
     *
     * @param string|array The directory (-ies) to set as the path. Note that
     * the concrete view implentation may not necessarily support multiple
     * directories.
     * @return void
     */
    public function setScriptPath($path);

    /**
     * Retrieve all view script paths
     *
     * @return array
     */
    public function getScriptPaths();

    /**
     * Set a base path to all view resources
     *
     * @param  string $path
     * @param  string $classPrefix
     * @return void
     */
    public function setBasePath($path, $classPrefix = 'Zend_View');

    /**
     * Add an additional path to view resources
     *
     * @param  string $path
     * @param  string $classPrefix
     * @return void
     */
    public function addBasePath($path, $classPrefix = 'Zend_View');

    /**
     * Assign a variable to the view
     *
     * @param string $key The variable name.
     * @param mixed $val The variable value.
     * @return void
     */
    public function __set($key, $val);

    /**
     * Allows testing with empty() and isset() to work
     *
     * @param string $key
     * @return boolean
     */
    public function __isset($key);

    /**
     * Allows unset() on object properties to work
     *
     * @param string $key
     * @return void
     */
    public function __unset($key);

    /**
     * Assign variables to the view script via differing strategies.
     *
     * Suggested implementation is to allow setting a specific key to the
     * specified value, OR passing an array of key => value pairs to set en
     * masse.
     *
     * @see __set()
     * @param string|array $spec The assignment strategy to use (key or array of key
     * => value pairs)
     * @param mixed $value (Optional) If assigning a named variable, use this
     * as the value.
     * @return void
     */
    public function assign($spec, $value = null);

    /**
     * Clear all assigned variables
     *
     * Clears all variables assigned to Zend_View either via {@link assign()} or
     * property overloading ({@link __get()}/{@link __set()}).
     *
     * @return void
     */
    public function clearVars();

    /**
     * Processes a view script and returns the output.
     *
     * @param string $name The script script name to process.
     * @return string The script output.
     */
    public function render($name);
}
PKpG[�L��u�uView/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Loader */
require_once 'Zend/Loader.php';

/** Zend_Loader_PluginLoader */
require_once 'Zend/Loader/PluginLoader.php';

/** Zend_View_Interface */
require_once 'Zend/View/Interface.php';

/**
 * Abstract class for Zend_View to help enforce private constructs.
 *
 * @category   Zend
 * @package    Zend_View
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_View_Abstract implements Zend_View_Interface
{
    /**
     * Path stack for script, helper, and filter directories.
     *
     * @var array
     */
    private $_path = array(
        'script' => array(),
        'helper' => array(),
        'filter' => array(),
    );

    /**
     * Script file name to execute
     *
     * @var string
     */
    private $_file = null;

    /**
     * Instances of helper objects.
     *
     * @var array
     */
    private $_helper = array();

    /**
     * Map of helper => class pairs to help in determining helper class from
     * name
     * @var array
     */
    private $_helperLoaded = array();

    /**
     * Map of helper => classfile pairs to aid in determining helper classfile
     * @var array
     */
    private $_helperLoadedDir = array();

    /**
     * Stack of Zend_View_Filter names to apply as filters.
     * @var array
     */
    private $_filter = array();

    /**
     * Stack of Zend_View_Filter objects that have been loaded
     * @var array
     */
    private $_filterClass = array();

    /**
     * Map of filter => class pairs to help in determining filter class from
     * name
     * @var array
     */
    private $_filterLoaded = array();

    /**
     * Map of filter => classfile pairs to aid in determining filter classfile
     * @var array
     */
    private $_filterLoadedDir = array();

    /**
     * Callback for escaping.
     *
     * @var string
     */
    private $_escape = 'htmlspecialchars';

    /**
     * Encoding to use in escaping mechanisms; defaults to latin1 (ISO-8859-1)
     * @var string
     */
    private $_encoding = 'ISO-8859-1';

    /**
     * Plugin loaders
     * @var array
     */
    private $_loaders = array();

    /**
     * Plugin types
     * @var array
     */
    private $_loaderTypes = array('filter', 'helper');

    /**
     * Strict variables flag; when on, undefined variables accessed in the view
     * scripts will trigger notices
     * @var boolean
     */
    private $_strictVars = false;

    private $_log;

    /**
     * Constructor.
     *
     * @param array $config Configuration key-value pairs.
     */
    public function __construct($config = array())
    {
        // set inital paths and properties
        $this->setScriptPath(null);

        // $this->setHelperPath(null);
        $this->setFilterPath(null);

        // user-defined escaping callback
        if (array_key_exists('escape', $config)) {
            $this->setEscape($config['escape']);
        }

        // encoding
        if (array_key_exists('encoding', $config)) {
            $this->setEncoding($config['encoding']);
        }

        // base path
        if (array_key_exists('basePath', $config)) {
            $prefix = 'Zend_View';
            if (array_key_exists('basePathPrefix', $config)) {
                $prefix = $config['basePathPrefix'];
            }
            $this->setBasePath($config['basePath'], $prefix);
        }

        // user-defined view script path
        if (array_key_exists('scriptPath', $config)) {
            $this->addScriptPath($config['scriptPath']);
        }

        // user-defined helper path
        if (array_key_exists('helperPath', $config)) {
            $prefix = 'Zend_View_Helper';
            if (array_key_exists('helperPathPrefix', $config)) {
                $prefix = $config['helperPathPrefix'];
            }
            $this->addHelperPath($config['helperPath'], $prefix);
        }

        // user-defined filter path
        if (array_key_exists('filterPath', $config)) {
            $prefix = 'Zend_View_Filter';
            if (array_key_exists('filterPathPrefix', $config)) {
                $prefix = $config['filterPathPrefix'];
            }
            $this->addFilterPath($config['filterPath'], $prefix);
        }

        // user-defined filters
        if (array_key_exists('filter', $config)) {
            $this->addFilter($config['filter']);
        }

        // strict vars
        if (array_key_exists('strictVars', $config)) {
            $this->strictVars($config['strictVars']);
        }

        $this->init();
    }

    /**
     * Return the template engine object
     *
     * Returns the object instance, as it is its own template engine
     *
     * @return Zend_View_Abstract
     */
    public function getEngine()
    {
        return $this;
    }

    /**
     * Allow custom object initialization when extending Zend_View_Abstract or
     * Zend_View
     *
     * Triggered by {@link __construct() the constructor} as its final action.
     *
     * @return void
     */
    public function init()
    {
    }

    /**
     * Prevent E_NOTICE for nonexistent values
     *
     * If {@link strictVars()} is on, raises a notice.
     *
     * @param  string $key
     * @return null
     */
    public function __get($key)
    {
        if ($this->_strictVars) {
            trigger_error('Key "' . $key . '" does not exist', E_USER_NOTICE);
        }

        return null;
    }

    /**
     * Allows testing with empty() and isset() to work inside
     * templates.
     *
     * @param  string $key
     * @return boolean
     */
    public function __isset($key)
    {
        if ('_' != substr($key, 0, 1)) {
            return isset($this->$key);
        }

        return false;
    }

    /**
     * Directly assigns a variable to the view script.
     *
     * Checks first to ensure that the caller is not attempting to set a
     * protected or private member (by checking for a prefixed underscore); if
     * not, the public member is set; otherwise, an exception is raised.
     *
     * @param string $key The variable name.
     * @param mixed $val The variable value.
     * @return void
     * @throws Zend_View_Exception if an attempt to set a private or protected
     * member is detected
     */
    public function __set($key, $val)
    {
        if ('_' != substr($key, 0, 1)) {
            $this->$key = $val;
            return;
        }

        require_once 'Zend/View/Exception.php';
        throw new Zend_View_Exception('Setting private or protected class members is not allowed', $this);
    }

    /**
     * Allows unset() on object properties to work
     *
     * @param string $key
     * @return void
     */
    public function __unset($key)
    {
        if ('_' != substr($key, 0, 1) && isset($this->$key)) {
            unset($this->$key);
        }
    }

    /**
     * Accesses a helper object from within a script.
     *
     * If the helper class has a 'view' property, sets it with the current view
     * object.
     *
     * @param string $name The helper name.
     * @param array $args The parameters for the helper.
     * @return string The result of the helper output.
     */
    public function __call($name, $args)
    {
        // is the helper already loaded?
        $helper = $this->getHelper($name);

        // call the helper method
        return call_user_func_array(
            array($helper, $name),
            $args
        );
    }

    /**
     * Given a base path, sets the script, helper, and filter paths relative to it
     *
     * Assumes a directory structure of:
     * <code>
     * basePath/
     *     scripts/
     *     helpers/
     *     filters/
     * </code>
     *
     * @param  string $path
     * @param  string $prefix Prefix to use for helper and filter paths
     * @return Zend_View_Abstract
     */
    public function setBasePath($path, $classPrefix = 'Zend_View')
    {
        $path        = rtrim($path, '/');
        $path        = rtrim($path, '\\');
        $path       .= DIRECTORY_SEPARATOR;
        $classPrefix = rtrim($classPrefix, '_') . '_';
        $this->setScriptPath($path . 'scripts');
        $this->setHelperPath($path . 'helpers', $classPrefix . 'Helper');
        $this->setFilterPath($path . 'filters', $classPrefix . 'Filter');
        return $this;
    }

    /**
     * Given a base path, add script, helper, and filter paths relative to it
     *
     * Assumes a directory structure of:
     * <code>
     * basePath/
     *     scripts/
     *     helpers/
     *     filters/
     * </code>
     *
     * @param  string $path
     * @param  string $prefix Prefix to use for helper and filter paths
     * @return Zend_View_Abstract
     */
    public function addBasePath($path, $classPrefix = 'Zend_View')
    {
        $path        = rtrim($path, '/');
        $path        = rtrim($path, '\\');
        $path       .= DIRECTORY_SEPARATOR;
        $classPrefix = rtrim($classPrefix, '_') . '_';
        $this->addScriptPath($path . 'scripts');
        $this->addHelperPath($path . 'helpers', $classPrefix . 'Helper');
        $this->addFilterPath($path . 'filters', $classPrefix . 'Filter');
        return $this;
    }

    /**
     * Adds to the stack of view script paths in LIFO order.
     *
     * @param string|array The directory (-ies) to add.
     * @return Zend_View_Abstract
     */
    public function addScriptPath($path)
    {
        $this->_addPath('script', $path);
        return $this;
    }

    /**
     * Resets the stack of view script paths.
     *
     * To clear all paths, use Zend_View::setScriptPath(null).
     *
     * @param string|array The directory (-ies) to set as the path.
     * @return Zend_View_Abstract
     */
    public function setScriptPath($path)
    {
        $this->_path['script'] = array();
        $this->_addPath('script', $path);
        return $this;
    }

    /**
     * Return full path to a view script specified by $name
     *
     * @param  string $name
     * @return false|string False if script not found
     * @throws Zend_View_Exception if no script directory set
     */
    public function getScriptPath($name)
    {
        try {
            $path = $this->_script($name);
            return $path;
        } catch (Zend_View_Exception $e) {
            if (strstr($e->getMessage(), 'no view script directory set')) {
                throw $e;
            }

            return false;
        }
    }

    /**
     * Returns an array of all currently set script paths
     *
     * @return array
     */
    public function getScriptPaths()
    {
        return $this->_getPaths('script');
    }

    /**
     * Set plugin loader for a particular plugin type
     *
     * @param  Zend_Loader_PluginLoader $loader
     * @param  string $type
     * @return Zend_View_Abstract
     */
    public function setPluginLoader(Zend_Loader_PluginLoader $loader, $type)
    {
        $type = strtolower($type);
        if (!in_array($type, $this->_loaderTypes)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception(sprintf('Invalid plugin loader type "%s"', $type));
        }

        $this->_loaders[$type] = $loader;
        return $this;
    }

    /**
     * Retrieve plugin loader for a specific plugin type
     *
     * @param  string $type
     * @return Zend_Loader_PluginLoader
     */
    public function getPluginLoader($type)
    {
        $type = strtolower($type);
        if (!in_array($type, $this->_loaderTypes)) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception(sprintf('Invalid plugin loader type "%s"; cannot retrieve', $type));
        }

        if (!array_key_exists($type, $this->_loaders)) {
            $prefix     = 'Zend_View_';
            $pathPrefix = 'Zend/View/';

            $pType = ucfirst($type);
            switch ($type) {
                case 'filter':
                case 'helper':
                default:
                    $prefix     .= $pType;
                    $pathPrefix .= $pType;
                    $loader = new Zend_Loader_PluginLoader(array(
                        $prefix => $pathPrefix
                    ));
                    $this->_loaders[$type] = $loader;
                    break;
            }
        }
        return $this->_loaders[$type];
    }

    /**
     * Adds to the stack of helper paths in LIFO order.
     *
     * @param string|array The directory (-ies) to add.
     * @param string $classPrefix Class prefix to use with classes in this
     * directory; defaults to Zend_View_Helper
     * @return Zend_View_Abstract
     */
    public function addHelperPath($path, $classPrefix = 'Zend_View_Helper_')
    {
        return $this->_addPluginPath('helper', $classPrefix, (array) $path);
    }

    /**
     * Resets the stack of helper paths.
     *
     * To clear all paths, use Zend_View::setHelperPath(null).
     *
     * @param string|array $path The directory (-ies) to set as the path.
     * @param string $classPrefix The class prefix to apply to all elements in
     * $path; defaults to Zend_View_Helper
     * @return Zend_View_Abstract
     */
    public function setHelperPath($path, $classPrefix = 'Zend_View_Helper_')
    {
        unset($this->_loaders['helper']);
        return $this->addHelperPath($path, $classPrefix);
    }

    /**
     * Get full path to a helper class file specified by $name
     *
     * @param  string $name
     * @return string|false False on failure, path on success
     */
    public function getHelperPath($name)
    {
        return $this->_getPluginPath('helper', $name);
    }

    /**
     * Returns an array of all currently set helper paths
     *
     * @return array
     */
    public function getHelperPaths()
    {
        return $this->getPluginLoader('helper')->getPaths();
    }

    /**
     * Get a helper by name
     *
     * @param  string $name
     * @return object
     */
    public function getHelper($name)
    {
        return $this->_getPlugin('helper', $name);
    }

    /**
     * Get array of all active helpers
     *
     * Only returns those that have already been instantiated.
     *
     * @return array
     */
    public function getHelpers()
    {
        return $this->_helper;
    }

    /**
     * Adds to the stack of filter paths in LIFO order.
     *
     * @param string|array The directory (-ies) to add.
     * @param string $classPrefix Class prefix to use with classes in this
     * directory; defaults to Zend_View_Filter
     * @return Zend_View_Abstract
     */
    public function addFilterPath($path, $classPrefix = 'Zend_View_Filter_')
    {
        return $this->_addPluginPath('filter', $classPrefix, (array) $path);
    }

    /**
     * Resets the stack of filter paths.
     *
     * To clear all paths, use Zend_View::setFilterPath(null).
     *
     * @param string|array The directory (-ies) to set as the path.
     * @param string $classPrefix The class prefix to apply to all elements in
     * $path; defaults to Zend_View_Filter
     * @return Zend_View_Abstract
     */
    public function setFilterPath($path, $classPrefix = 'Zend_View_Filter_')
    {
        unset($this->_loaders['filter']);
        return $this->addFilterPath($path, $classPrefix);
    }

    /**
     * Get full path to a filter class file specified by $name
     *
     * @param  string $name
     * @return string|false False on failure, path on success
     */
    public function getFilterPath($name)
    {
        return $this->_getPluginPath('filter', $name);
    }

    /**
     * Get a filter object by name
     *
     * @param  string $name
     * @return object
     */
    public function getFilter($name)
    {
        return $this->_getPlugin('filter', $name);
    }

    /**
     * Return array of all currently active filters
     *
     * Only returns those that have already been instantiated.
     *
     * @return array
     */
    public function getFilters()
    {
        return $this->_filter;
    }

    /**
     * Returns an array of all currently set filter paths
     *
     * @return array
     */
    public function getFilterPaths()
    {
        return $this->getPluginLoader('filter')->getPaths();
    }

    /**
     * Return associative array of path types => paths
     *
     * @return array
     */
    public function getAllPaths()
    {
        $paths = $this->_path;
        $paths['helper'] = $this->getHelperPaths();
        $paths['filter'] = $this->getFilterPaths();
        return $paths;
    }

    /**
     * Add one or more filters to the stack in FIFO order.
     *
     * @param string|array One or more filters to add.
     * @return Zend_View_Abstract
     */
    public function addFilter($name)
    {
        foreach ((array) $name as $val) {
            $this->_filter[] = $val;
        }
        return $this;
    }

    /**
     * Resets the filter stack.
     *
     * To clear all filters, use Zend_View::setFilter(null).
     *
     * @param string|array One or more filters to set.
     * @return Zend_View_Abstract
     */
    public function setFilter($name)
    {
        $this->_filter = array();
        $this->addFilter($name);
        return $this;
    }

    /**
     * Sets the _escape() callback.
     *
     * @param mixed $spec The callback for _escape() to use.
     * @return Zend_View_Abstract
     */
    public function setEscape($spec)
    {
        $this->_escape = $spec;
        return $this;
    }

    /**
     * Assigns variables to the view script via differing strategies.
     *
     * Zend_View::assign('name', $value) assigns a variable called 'name'
     * with the corresponding $value.
     *
     * Zend_View::assign($array) assigns the array keys as variable
     * names (with the corresponding array values).
     *
     * @see    __set()
     * @param  string|array The assignment strategy to use.
     * @param  mixed (Optional) If assigning a named variable, use this
     * as the value.
     * @return Zend_View_Abstract Fluent interface
     * @throws Zend_View_Exception if $spec is neither a string nor an array,
     * or if an attempt to set a private or protected member is detected
     */
    public function assign($spec, $value = null)
    {
        // which strategy to use?
        if (is_string($spec)) {
            // assign by name and value
            if ('_' == substr($spec, 0, 1)) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception('Setting private or protected class members is not allowed', $this);
            }
            $this->$spec = $value;
        } elseif (is_array($spec)) {
            // assign from associative array
            $error = false;
            foreach ($spec as $key => $val) {
                if ('_' == substr($key, 0, 1)) {
                    $error = true;
                    break;
                }
                $this->$key = $val;
            }
            if ($error) {
                require_once 'Zend/View/Exception.php';
                throw new Zend_View_Exception('Setting private or protected class members is not allowed', $this);
            }
        } else {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('assign() expects a string or array, received ' . gettype($spec), $this);
        }

        return $this;
    }

    /**
     * Return list of all assigned variables
     *
     * Returns all public properties of the object. Reflection is not used
     * here as testing reflection properties for visibility is buggy.
     *
     * @return array
     */
    public function getVars()
    {
        $vars   = get_object_vars($this);
        foreach ($vars as $key => $value) {
            if ('_' == substr($key, 0, 1)) {
                unset($vars[$key]);
            }
        }

        return $vars;
    }

    /**
     * Clear all assigned variables
     *
     * Clears all variables assigned to Zend_View either via {@link assign()} or
     * property overloading ({@link __set()}).
     *
     * @return void
     */
    public function clearVars()
    {
        $vars   = get_object_vars($this);
        foreach ($vars as $key => $value) {
            if ('_' != substr($key, 0, 1)) {
                unset($this->$key);
            }
        }
    }

    /**
     * Processes a view script and returns the output.
     *
     * @param string $name The script script name to process.
     * @return string The script output.
     */
    public function render($name)
    {
        // find the script file name using the parent private method
        $this->_file = $this->_script($name);
        unset($name); // remove $name from local scope

        ob_start();
        $this->_run($this->_file);

        return $this->_filter(ob_get_clean()); // filter output
    }

    /**
     * Escapes a value for output in a view script.
     *
     * If escaping mechanism is one of htmlspecialchars or htmlentities, uses
     * {@link $_encoding} setting.
     *
     * @param mixed $var The output to escape.
     * @return mixed The escaped value.
     */
    public function escape($var)
    {
        if (in_array($this->_escape, array('htmlspecialchars', 'htmlentities'))) {
            return call_user_func($this->_escape, $var, ENT_COMPAT, $this->_encoding);
        }

        return call_user_func($this->_escape, $var);
    }

    /**
     * Set encoding to use with htmlentities() and htmlspecialchars()
     *
     * @param string $encoding
     * @return Zend_View_Abstract
     */
    public function setEncoding($encoding)
    {
        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Return current escape encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Enable or disable strict vars
     *
     * If strict variables are enabled, {@link __get()} will raise a notice
     * when a variable is not defined.
     *
     * Use in conjunction with {@link Zend_View_Helper_DeclareVars the declareVars() helper}
     * to enforce strict variable handling in your view scripts.
     *
     * @param  boolean $flag
     * @return Zend_View_Abstract
     */
    public function strictVars($flag = true)
    {
        $this->_strictVars = ($flag) ? true : false;

        return $this;
    }

    /**
     * Finds a view script from the available directories.
     *
     * @param $name string The base name of the script.
     * @return void
     */
    protected function _script($name)
    {
        if (0 == count($this->_path['script'])) {
            require_once 'Zend/View/Exception.php';
            throw new Zend_View_Exception('no view script directory set; unable to determine location for view script',
                $this);
        }

        foreach ($this->_path['script'] as $dir) {
            if (is_readable($dir . $name)) {
                return $dir . $name;
            }
        }

        require_once 'Zend/View/Exception.php';
        $message = "script '$name' not found in path ("
                 . implode(PATH_SEPARATOR, $this->_path['script'])
                 . ")";
        throw new Zend_View_Exception($message, $this);
    }

    /**
     * Applies the filter callback to a buffer.
     *
     * @param string $buffer The buffer contents.
     * @return string The filtered buffer.
     */
    private function _filter($buffer)
    {
        // loop through each filter class
        foreach ($this->_filter as $name) {
            // load and apply the filter class
            $filter = $this->getFilter($name);
            $buffer = call_user_func(array($filter, 'filter'), $buffer);
        }

        // done!
        return $buffer;
    }

    /**
     * Adds paths to the path stack in LIFO order.
     *
     * Zend_View::_addPath($type, 'dirname') adds one directory
     * to the path stack.
     *
     * Zend_View::_addPath($type, $array) adds one directory for
     * each array element value.
     *
     * In the case of filter and helper paths, $prefix should be used to
     * specify what class prefix to use with the given path.
     *
     * @param string $type The path type ('script', 'helper', or 'filter').
     * @param string|array $path The path specification.
     * @param string $prefix Class prefix to use with path (helpers and filters
     * only)
     * @return void
     */
    private function _addPath($type, $path, $prefix = null)
    {
        foreach ((array) $path as $dir) {
            // attempt to strip any possible separator and
            // append the system directory separator
            $dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $dir);
            $dir = rtrim($dir, DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR)
                 . DIRECTORY_SEPARATOR;

            switch ($type) {
                case 'script':
                    // add to the top of the stack.
                    array_unshift($this->_path[$type], $dir);
                    break;
                case 'filter':
                case 'helper':
                default:
                    // add as array with prefix and dir keys
                    array_unshift($this->_path[$type], array('prefix' => $prefix, 'dir' => $dir));
                    break;
            }
        }
    }

    /**
     * Resets the path stack for helpers and filters.
     *
     * @param string $type The path type ('helper' or 'filter').
     * @param string|array $path The directory (-ies) to set as the path.
     * @param string $classPrefix Class prefix to apply to elements of $path
     */
    private function _setPath($type, $path, $classPrefix = null)
    {
        $dir = DIRECTORY_SEPARATOR . ucfirst($type) . DIRECTORY_SEPARATOR;

        switch ($type) {
            case 'script':
                $this->_path[$type] = array(dirname(__FILE__) . $dir);
                $this->_addPath($type, $path);
                break;
            case 'filter':
            case 'helper':
            default:
                $this->_path[$type] = array(array(
                    'prefix' => 'Zend_View_' . ucfirst($type) . '_',
                    'dir'    => dirname(__FILE__) . $dir
                ));
                $this->_addPath($type, $path, $classPrefix);
                break;
        }
    }

    /**
     * Return all paths for a given path type
     *
     * @param string $type The path type  ('helper', 'filter', 'script')
     * @return array
     */
    private function _getPaths($type)
    {
        return $this->_path[$type];
    }

    /**
     * Register helper class as loaded
     *
     * @param  string $name
     * @param  string $class
     * @param  string $file path to class file
     * @return void
     */
    private function _setHelperClass($name, $class, $file)
    {
        $this->_helperLoadedDir[$name] = $file;
        $this->_helperLoaded[$name]    = $class;
    }

    /**
     * Register filter class as loaded
     *
     * @param  string $name
     * @param  string $class
     * @param  string $file path to class file
     * @return void
     */
    private function _setFilterClass($name, $class, $file)
    {
        $this->_filterLoadedDir[$name] = $file;
        $this->_filterLoaded[$name]    = $class;
    }

    /**
     * Add a prefixPath for a plugin type
     *
     * @param  string $type
     * @param  string $classPrefix
     * @param  array $paths
     * @return Zend_View_Abstract
     */
    private function _addPluginPath($type, $classPrefix, array $paths)
    {
        $loader = $this->getPluginLoader($type);
        foreach ($paths as $path) {
            $loader->addPrefixPath($classPrefix, $path);
        }
        return $this;
    }

    /**
     * Get a path to a given plugin class of a given type
     *
     * @param  string $type
     * @param  string $name
     * @return string|false
     */
    private function _getPluginPath($type, $name)
    {
        $loader = $this->getPluginLoader($type);
        if ($loader->isLoaded($name)) {
            return $loader->getClassPath($name);
        }

        try {
            $loader->load($name);
            return $loader->getClassPath($name);
        } catch (Zend_Loader_Exception $e) {
            return false;
        }
    }

    /**
     * Retrieve a plugin object
     *
     * @param  string $type
     * @param  string $name
     * @return object
     */
    private function _getPlugin($type, $name)
    {
        $name = ucfirst($name);
        switch ($type) {
            case 'filter':
                $storeVar = '_filterClass';
                $store    = $this->_filterClass;
                break;
            case 'helper':
                $storeVar = '_helper';
                $store    = $this->_helper;
                break;
        }

        if (!isset($store[$name])) {
            $class = $this->getPluginLoader($type)->load($name);
            $store[$name] = new $class();
            if (method_exists($store[$name], 'setView')) {
                $store[$name]->setView($this);
            }
        }

        $this->$storeVar = $store;
        return $store[$name];
    }

    /**
     * Use to include the view script in a scope that only allows public
     * members.
     *
     * @return mixed
     */
    abstract protected function _run();
}
PKpG[7�9t__View/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Date
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * Exception for Zend_View class.
 *
 * @category   Zend
 * @package    Zend_Date
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_View_Exception extends Zend_Exception
{
    protected $view = null;

    public function __construct($message, Zend_View_Interface $view = null)
    {
        $this->view = $view;
        parent::__construct($message);
    }

    public function getView()
    {
        return $this->view;
    }
}
PKpG[s(��Auth.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Auth.php 11747 2008-10-08 18:33:58Z norm2782 $
 */


/**
 * @category   Zend
 * @package    Zend_Auth
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Auth
{
    /**
     * Singleton instance
     *
     * @var Zend_Auth
     */
    protected static $_instance = null;

    /**
     * Persistent storage handler
     *
     * @var Zend_Auth_Storage_Interface
     */
    protected $_storage = null;

    /**
     * Singleton pattern implementation makes "new" unavailable
     *
     * @return void
     */
    protected function __construct()
    {}

    /**
     * Singleton pattern implementation makes "clone" unavailable
     *
     * @return void
     */
    protected function __clone()
    {}

    /**
     * Returns an instance of Zend_Auth
     *
     * Singleton pattern implementation
     *
     * @return Zend_Auth Provides a fluent interface
     */
    public static function getInstance()
    {
        if (null === self::$_instance) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    /**
     * Returns the persistent storage handler
     *
     * Session storage is used by default unless a different storage adapter has been set.
     *
     * @return Zend_Auth_Storage_Interface
     */
    public function getStorage()
    {
        if (null === $this->_storage) {
            /**
             * @see Zend_Auth_Storage_Session
             */
            require_once 'Zend/Auth/Storage/Session.php';
            $this->setStorage(new Zend_Auth_Storage_Session());
        }

        return $this->_storage;
    }

    /**
     * Sets the persistent storage handler
     *
     * @param  Zend_Auth_Storage_Interface $storage
     * @return Zend_Auth Provides a fluent interface
     */
    public function setStorage(Zend_Auth_Storage_Interface $storage)
    {
        $this->_storage = $storage;
        return $this;
    }

    /**
     * Authenticates against the supplied adapter
     *
     * @param  Zend_Auth_Adapter_Interface $adapter
     * @return Zend_Auth_Result
     */
    public function authenticate(Zend_Auth_Adapter_Interface $adapter)
    {
        $result = $adapter->authenticate();

        if ($result->isValid()) {
            $this->getStorage()->write($result->getIdentity());
        }

        return $result;
    }

    /**
     * Returns true if and only if an identity is available from storage
     *
     * @return boolean
     */
    public function hasIdentity()
    {
        return !$this->getStorage()->isEmpty();
    }

    /**
     * Returns the identity from storage or null if no identity is available
     *
     * @return mixed|null
     */
    public function getIdentity()
    {
        $storage = $this->getStorage();

        if ($storage->isEmpty()) {
            return null;
        }

        return $storage->read();
    }

    /**
     * Clears the identity from persistent storage
     *
     * @return void
     */
    public function clearIdentity()
    {
        $this->getStorage()->clear();
    }
}
PKpG[%� ���Filter/Word/SeparatorToDash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToUnderscore.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_SeperatorToSeparator
 */
require_once 'Zend/Filter/Word/SeparatorToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_SeparatorToDash extends Zend_Filter_Word_SeparatorToSeparator
{
    /**
     * Constructor
     * 
     * @param  string  $searchSeparator  Seperator to search for change
     * @return void
     */
    public function __construct($searchSeparator = ' ')
    {
        parent::__construct($searchSeparator, '-');
    }
    
}PKpG[=�>>$Filter/Word/SeparatorToCamelCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToSeparator.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/Separator/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_SeparatorToCamelCase extends Zend_Filter_Word_Separator_Abstract
{

    public function filter($value)
    {
        // a unicode safe way of converting characters to \x00\x00 notation
        $pregQuotedSeparator = preg_quote($this->_separator, '#');

        if (self::isUnicodeSupportEnabled()) {
            parent::setMatchPattern(array('#('.$pregQuotedSeparator.')(\p{L}{1})#e','#(^\p{Ll}{1})#e'));
            parent::setReplacement(array("strtoupper('\\2')","strtoupper('\\1')"));
        } else {
            parent::setMatchPattern(array('#('.$pregQuotedSeparator.')([A-Z]{1})#e','#(^[a-z]{1})#e'));
            parent::setReplacement(array("strtoupper('\\2')","strtoupper('\\1')"));
        }

        return parent::filter($value);
    }

}
PKpG[
��XX Filter/Word/DashToUnderscore.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToSeparator.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/SeparatorToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_DashToUnderscore extends Zend_Filter_Word_SeparatorToSeparator 
{
    /**
     * Constructor
     * 
     * @param  string $separator Space by default
     * @return void
     */
    public function __construct()
    {
        parent::__construct('-', '_');
    }
}PKpG[Yj���"Filter/Word/Separator/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToUnderscore.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/PregReplace.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @uses       Zend_Filter_PregReplace
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Filter_Word_Separator_Abstract extends Zend_Filter_PregReplace
{

    protected $_separator = null;

    /**
     * Constructor
     * 
     * @param  string $separator Space by default
     * @return void
     */
    public function __construct($separator = ' ')
    {
        $this->setSeparator($separator);
    }

    /**
     * Sets a new seperator
     * 
     * @param  string  $separator  Seperator
     * @return $this
     */
    public function setSeparator($separator)
    {
        if ($separator == null) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('"' . $separator . '" is not a valid separator.');
        }
        $this->_separator = $separator;
        return $this;
    }

    /**
     * Returns the actual set seperator
     * 
     * @return  string
     */
    public function getSeparator()
    {
        return $this->_separator;
    }

}PKpG[��==Filter/Word/DashToSeparator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToSeparator.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/Separator/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_DashToSeparator extends Zend_Filter_Word_Separator_Abstract
{

    public function filter($value)
    {
        $this->setMatchPattern('#-#');
        $this->setReplacement($this->_separator);
        return parent::filter($value);
    }
}
PKpG[$P���$Filter/Word/CamelCaseToSeparator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToSeparator.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/Separator/Abstract.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_CamelCaseToSeparator extends Zend_Filter_Word_Separator_Abstract
{
    
    public function filter($value)
    {
        if (self::isUnicodeSupportEnabled()) {
            parent::setMatchPattern(array('#(?<=(?:\p{Lu}))(\p{Lu}\p{Ll})#','#(?<=(?:\p{Ll}))(\p{Lu})#'));
            parent::setReplacement(array($this->_separator . '\1', $this->_separator . '\1'));
        } else {
            parent::setMatchPattern(array('#(?<=(?:[A-Z]))([A-Z]+)([A-Z][A-z])#', '#(?<=(?:[a-z]))([A-Z])#'));
            parent::setReplacement(array('\1' . $this->_separator . '\2', $this->_separator . '\1'));
        }

        return parent::filter($value);
    }
    
}
PKpG[�k�00%Filter/Word/CamelCaseToUnderscore.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToUnderscore.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_CamelCaseToSeparator
 */
require_once 'Zend/Filter/Word/CamelCaseToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_CamelCaseToUnderscore extends Zend_Filter_Word_CamelCaseToSeparator
{
    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct('_');
    }
}
PKpG[g�v��%Filter/Word/UnderscoreToSeparator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: UnderscoreToPathSeparator.php 6793 2007-11-09 18:10:06Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/SeparatorToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_UnderscoreToSeparator extends Zend_Filter_Word_SeparatorToSeparator
{
    /**
     * Constructor
     * 
     * @param  string $separator Space by default
     * @return void
     */
    public function __construct($replacementSeparator = ' ')
    {
        parent::__construct('_', $replacementSeparator);
    }
}
PKpG[;���\\$Filter/Word/SeparatorToSeparator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToUnderscore.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/PregReplace.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_SeparatorToSeparator extends Zend_Filter_PregReplace
{

    protected $_searchSeparator = null;
    protected $_replacementSeparator = null;

    /**
     * Constructor
     * 
     * @param  string  $searchSeparator      Seperator to search for
     * @param  string  $replacementSeperator Seperator to replace with
     * @return void
     */
    public function __construct($searchSeparator = ' ', $replacementSeparator = '-')
    {
        $this->setSearchSeparator($searchSeparator);
        $this->setReplacementSeparator($replacementSeparator);
    }

    /**
     * Sets a new seperator to search for
     * 
     * @param  string  $separator  Seperator to search for
     * @return $this
     */
    public function setSearchSeparator($separator)
    {
        $this->_searchSeparator = $separator;
        return $this;
    }

    /**
     * Returns the actual set seperator to search for
     * 
     * @return  string
     */
    public function getSearchSeparator()
    {
        return $this->_searchSeparator;
    }

    /**
     * Sets a new seperator which replaces the searched one
     * 
     * @param  string  $separator  Seperator which replaces the searched one
     * @return $this
     */
    public function setReplacementSeparator($separator)
    {
        $this->_replacementSeparator = $separator;
        return $this;
    }

    /**
     * Returns the actual set seperator which replaces the searched one
     * 
     * @return  string
     */
    public function getReplacementSeparator()
    {
        return $this->_replacementSeparator;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, replacing the searched seperators with the defined ones
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        return $this->_separatorToSeparatorFilter($value);
    }

    /**
     * Do the real work, replaces the seperator to search for with the replacement seperator
     *
     * Returns the replaced string
     *
     * @param  string $value
     * @return string
     */
    protected function _separatorToSeparatorFilter($value)
    {
        if ($this->_searchSeparator == null) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('You must provide a search separator for this filter to work.');
        }

        $this->setMatchPattern('#' . preg_quote($this->_searchSeparator, '#') . '#');
        $this->setReplacement($this->_replacementSeparator);
        return parent::filter($value);
    }

}PKpG[4�=Filter/Word/CamelCaseToDash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToDash.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Word/CamelCaseToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_CamelCaseToDash extends Zend_Filter_Word_CamelCaseToSeparator
{
    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct('-');
    }
}
PKpG[Y{/%Filter/Word/UnderscoreToCamelCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToDash.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Word/SeparatorToCamelCase.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_UnderscoreToCamelCase extends Zend_Filter_Word_SeparatorToCamelCase
{
    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct('_');
    }
}
PKpG[���sWW Filter/Word/UnderscoreToDash.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToSeparator.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_PregReplace
 */
require_once 'Zend/Filter/Word/SeparatorToSeparator.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_UnderscoreToDash extends Zend_Filter_Word_SeparatorToSeparator
{
    /**
     * Constructor
     * 
     * @param  string $separator Space by default
     * @return void
     */
    public function __construct()
    {
        parent::__construct('_', '-');
    }
}PKpG[�6�Filter/Word/DashToCamelCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CamelCaseToDash.php 6779 2007-11-08 15:10:41Z matthew $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Word/SeparatorToCamelCase.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Word_DashToCamelCase extends Zend_Filter_Word_SeparatorToCamelCase
{
    /**
     * Constructor
     * 
     * @return void
     */
    public function __construct()
    {
        parent::__construct('-');
    }
}
PKpG[ȁ�NNFilter/RealPath.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: RealPath.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_RealPath implements Zend_Filter_Interface
{
    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns realpath($value)
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        return realpath((string) $value);
    }
}
PKpG[�D ��%�%Filter/StripTags.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StripTags.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_StripTags implements Zend_Filter_Interface
{
    /**
     * Unique ID prefix used for allowing comments
     */
    const UNIQUE_ID_PREFIX = '__Zend_Filter_StripTags__';

    /**
     * Whether comments are allowed
     *
     * If false (the default), then comments are removed from the input string.
     *
     * @var boolean
     */
    public $commentsAllowed;

    /**
     * Array of allowed tags and allowed attributes for each allowed tag
     *
     * Tags are stored in the array keys, and the array values are themselves
     * arrays of the attributes allowed for the corresponding tag.
     *
     * @var array
     */
    protected $_tagsAllowed = array();

    /**
     * Array of allowed attributes for all allowed tags
     *
     * Attributes stored here are allowed for all of the allowed tags.
     *
     * @var array
     */
    protected $_attributesAllowed = array();

    /**
     * Sets the filter options
     *
     * @param  array|string $tagsAllowed
     * @param  array|string $attributesAllowed
     * @param  boolean      $allowComments
     * @return void
     */
    public function __construct($tagsAllowed = null, $attributesAllowed = null, $commentsAllowed = false)
    {
        $this->setTagsAllowed($tagsAllowed);
        $this->setAttributesAllowed($attributesAllowed);
        $this->commentsAllowed = (boolean) $commentsAllowed;
    }

    /**
     * Returns the tagsAllowed option
     *
     * @return array
     */
    public function getTagsAllowed()
    {
        return $this->_tagsAllowed;
    }

    /**
     * Sets the tagsAllowed option
     *
     * @param  array|string $tagsAllowed
     * @return Zend_Filter_StripTags Provides a fluent interface
     */
    public function setTagsAllowed($tagsAllowed)
    {
        if (!is_array($tagsAllowed)) {
            $tagsAllowed = array($tagsAllowed);
        }

        foreach ($tagsAllowed as $index => $element) {
            // If the tag was provided without attributes
            if (is_int($index) && is_string($element)) {
                // Canonicalize the tag name
                $tagName = strtolower($element);
                // Store the tag as allowed with no attributes
                $this->_tagsAllowed[$tagName] = array();
            }
            // Otherwise, if a tag was provided with attributes
            else if (is_string($index) && (is_array($element) || is_string($element))) {
                // Canonicalize the tag name
                $tagName = strtolower($index);
                // Canonicalize the attributes
                if (is_string($element)) {
                    $element = array($element);
                }
                // Store the tag as allowed with the provided attributes
                $this->_tagsAllowed[$tagName] = array();
                foreach ($element as $attribute) {
                    if (is_string($attribute)) {
                        // Canonicalize the attribute name
                        $attributeName = strtolower($attribute);
                        $this->_tagsAllowed[$tagName][$attributeName] = null;
                    }
                }
            }
        }

        return $this;
    }

    /**
     * Returns the attributesAllowed option
     *
     * @return array
     */
    public function getAttributesAllowed()
    {
        return $this->_attributesAllowed;
    }

    /**
     * Sets the attributesAllowed option
     *
     * @param  array|string $attributesAllowed
     * @return Zend_Filter_StripTags Provides a fluent interface
     */
    public function setAttributesAllowed($attributesAllowed)
    {
        if (!is_array($attributesAllowed)) {
            $attributesAllowed = array($attributesAllowed);
        }

        // Store each attribute as allowed
        foreach ($attributesAllowed as $attribute) {
            if (is_string($attribute)) {
                // Canonicalize the attribute name
                $attributeName = strtolower($attribute);
                $this->_attributesAllowed[$attributeName] = null;
            }
        }

        return $this;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * @todo improve docblock descriptions
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        $valueCopy = (string) $value;

        // If comments are allowed, then replace them with unique identifiers
        if ($this->commentsAllowed) {
            preg_match_all('/<\!--.*?--\s*>/s' , (string) $valueCopy, $matches);
            $comments = array_unique($matches[0]);
            foreach ($comments as $k => $v) {
                $valueCopy = str_replace($v, self::UNIQUE_ID_PREFIX . $k, $valueCopy);
            }
        }

        // Initialize accumulator for filtered data
        $dataFiltered = '';
        // Parse the input data iteratively as regular pre-tag text followed by a
        // tag; either may be empty strings
        preg_match_all('/([^<]*)(<?[^>]*>?)/', (string) $valueCopy, $matches);
        // Iterate over each set of matches
        foreach ($matches[1] as $index => $preTag) {
            // If the pre-tag text is non-empty, strip any ">" characters from it
            if (strlen($preTag)) {
                $preTag = str_replace('>', '', $preTag);
            }
            // If a tag exists in this match, then filter the tag
            $tag = $matches[2][$index];
            if (strlen($tag)) {
                $tagFiltered = $this->_filterTag($tag);
            } else {
                $tagFiltered = '';
            }
            // Add the filtered pre-tag text and filtered tag to the data buffer
            $dataFiltered .= $preTag . $tagFiltered;
        }

        // If comments are allowed, then replace the unique identifiers with the corresponding comments
        if ($this->commentsAllowed) {
            foreach ($comments as $k => $v) {
                $dataFiltered = str_replace(self::UNIQUE_ID_PREFIX . $k, $v, $dataFiltered);
            }
        }

        // Return the filtered data
        return $dataFiltered;
    }

    /**
     * Filters a single tag against the current option settings
     *
     * @param  string $tag
     * @return string
     */
    protected function _filterTag($tag)
    {
        // Parse the tag into:
        // 1. a starting delimiter (mandatory)
        // 2. a tag name (if available)
        // 3. a string of attributes (if available)
        // 4. an ending delimiter (if available)
        $isMatch = preg_match('~(</?)(\w*)((/(?!>)|[^/>])*)(/?>)~', $tag, $matches);
        // If the tag does not match, then strip the tag entirely
        if (!$isMatch) {
            return '';
        }
        // Save the matches to more meaningfully named variables
        $tagStart = $matches[1];
        $tagName = strtolower($matches[2]);
        $tagAttributes = $matches[3];
        $tagEnd = $matches[5];
        // If the tag is not an allowed tag, then remove the tag entirely
        if (!isset($this->_tagsAllowed[$tagName])) {
            return '';
        }
        // Trim the attribute string of whitespace at the ends
        $tagAttributes = trim($tagAttributes);
        // If there are non-whitespace characters in the attribute string
        if (strlen($tagAttributes)) {
            // Parse iteratively for well-formed attributes
            preg_match_all('/(\w+)=([\'"])((.(?!=\2))+)\2/s', $tagAttributes, $matches);
            // Initialize valid attribute accumulator
            $tagAttributes = '';
            // Iterate over each matched attribute
            foreach ($matches[1] as $index => $attributeName) {
                $attributeName = strtolower($attributeName);
                $attributeDelimiter = $matches[2][$index];
                $attributeValue = $matches[3][$index];
                // If the attribute is not allowed, then remove it entirely
                if (!array_key_exists($attributeName, $this->_tagsAllowed[$tagName])
                    && !array_key_exists($attributeName, $this->_attributesAllowed)) {
                    continue;
                }
                // Add the attribute to the accumulator
                $tagAttributes .= " $attributeName=" . $attributeDelimiter
                                . $attributeValue . $attributeDelimiter;
            }
        }
        // Reconstruct tags ending with "/>" as backwards-compatible XHTML tag
        if (strpos($tagEnd, '/') !== false) {
            $tagEnd = " $tagEnd";
        }
        // Return the filtered tag
        return $tagStart . $tagName . $tagAttributes . $tagEnd;
    }
}
PKpG[
27((Filter/StringToLower.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StringToLower.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_StringToLower implements Zend_Filter_Interface
{
    /**
     * Encoding for the input string
     *
     * @var string
     */
    protected $_encoding = null;

    /**
     * Set the input encoding for the given string
     *
     * @param  string $encoding
     * @throws Zend_Filter_Exception
     */
    public function setEncoding($encoding = null)
    {
        if (!function_exists('mb_strtolower')) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('mbstring is required for this feature');
        }
        $this->_encoding = $encoding;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, converting characters to lowercase as necessary
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if ($this->_encoding) {
            return mb_strtolower((string) $value, $this->_encoding);
        }

        return strtolower((string) $value);
    }
}
PKpG[Pbӯ((Filter/StringToUpper.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StringToUpper.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_StringToUpper implements Zend_Filter_Interface
{
    /**
     * Encoding for the input string
     *
     * @var string
     */
    protected $_encoding = null;

    /**
     * Set the input encoding for the given string
     *
     * @param  string $encoding
     * @throws Zend_Filter_Exception
     */
    public function setEncoding($encoding = null)
    {
        if (!function_exists('mb_strtoupper')) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('mbstring is required for this feature');
        }
        $this->_encoding = $encoding;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, converting characters to uppercase as necessary
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if ($this->_encoding) {
            return mb_strtoupper((string) $value, $this->_encoding);
        }

        return strtoupper((string) $value);
    }
}
PKpG[Xwy��	�	Filter/File/LowerCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Filter_StringToLower
 */
require_once 'Zend/Filter/StringToLower.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_File_LowerCase extends Zend_Filter_StringToLower
{
    /**
     * Adds options to the filter at initiation
     *
     * @param string $options
     */
    public function __construct($options = null)
    {
        if (!empty($options)) {
            $this->setEncoding($options);
        }
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Does a lowercase on the content of the given file
     *
     * @param  string $value Full path of file to change
     * @return string The given $value
     * @throws Zend_Filter_Exception
     */
    public function filter($value)
    {
        if (!file_exists($value)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("File '$value' not found");
        }

        if (!is_writable($value)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("File '$value' is not writable");
        }

        $content = file_get_contents($value);
        if (!$content) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Problem while reading file '$value'");
        }

        $content = parent::filter($content);
        $result  = file_put_contents($value, $content);

        if (!$result) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Problem while writing file '$value'");
        }

        return $value;
    }
}
PKpG[�$Y^�	�	Filter/File/UpperCase.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Filter_StringToUpper
 */
require_once 'Zend/Filter/StringToUpper.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_File_UpperCase extends Zend_Filter_StringToUpper
{
    /**
     * Adds options to the filter at initiation
     *
     * @param string $options
     */
    public function __construct($options = null)
    {
        if (!empty($options)) {
            $this->setEncoding($options);
        }
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Does a lowercase on the content of the given file
     *
     * @param  string $value Full path of file to change
     * @return string The given $value
     * @throws Zend_Filter_Exception
     */
    public function filter($value)
    {
        if (!file_exists($value)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("File '$value' not found");
        }

        if (!is_writable($value)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("File '$value' is not writable");
        }

        $content = file_get_contents($value);
        if (!$content) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Problem while reading file '$value'");
        }

        $content = parent::filter($content);
        $result  = file_put_contents($value, $content);

        if (!$result) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Problem while writing file '$value'");
        }

        return $value;
    }
}
PKpG[nUYH�!�!Filter/File/Rename.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_File_Rename implements Zend_Filter_Interface
{
    /**
     * Internal array of array(source, target, overwrite)
     */
    protected $_files = array();

    /**
     * Class constructor
     *
     * Options argument may be either a string, a Zend_Config object, or an array.
     * If an array or Zend_Config object, it accepts the following keys:
     * 'source'    => Source filename or directory which will be renamed
     * 'target'    => Target filename or directory, the new name of the sourcefile
     * 'overwrite' => Shall existing files be overwritten ?
     *
     * @param  string|array $options Target file or directory to be renamed
     * @param  string $target Source filename or directory (deprecated)
     * @param  bool $overwrite Should existing files be overwritten (deprecated)
     * @return void
     */
    public function __construct($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        } elseif (is_string($options)) {
            $options = array('target' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('Invalid options argument provided to filter');
        }

        if (1 < func_num_args()) {
            trigger_error('Support for multiple arguments is deprecated in favor of a single options array', E_USER_NOTICE);
            $argv = func_get_args();
            array_shift($argv);
            $source    = array_shift($argv);
            $overwrite = false;
            if (!empty($argv)) {
                $overwrite = array_shift($argv);
            }
            $options['source']    = $source;
            $options['overwrite'] = $overwrite;
        }

        $this->setFile($options);
    }

    /**
     * Returns the files to rename and their new name and location
     *
     * @return array
     */
    public function getFile()
    {
        return $this->_files;
    }

    /**
     * Sets a new file or directory as target, deleting existing ones
     *
     * Array accepts the following keys:
     * 'source'    => Source filename or directory which will be renamed
     * 'target'    => Target filename or directory, the new name of the sourcefile
     * 'overwrite' => Shall existing files be overwritten ?
     *
     * @param  string|array $options Old file or directory to be rewritten
     * @return Zend_Filter_File_Rename
     */
    public function setFile($options)
    {
        $this->_files = array();
        $this->addFile($options);

        return $this;
    }

    /**
     * Adds a new file or directory as target to the existing ones
     *
     * Array accepts the following keys:
     * 'source'    => Source filename or directory which will be renamed
     * 'target'    => Target filename or directory, the new name of the sourcefile
     * 'overwrite' => Shall existing files be overwritten ?
     *
     * @param  string|array $options Old file or directory to be rewritten
     * @return Zend_Filter_File_Rename
     */
    public function addFile($options)
    {
        if (is_string($options)) {
            $options = array('target' => $options);
        } elseif (!is_array($options)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception ('Invalid options to rename filter provided');
        }

        $this->_convertOptions($options);

        return $this;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Renames the file $value to the new name set before
     * Returns the file $value, removing all but digit characters
     *
     * @param  string $value Full path of file to change
     * @return string The new filename which has been set, or false when there were errors
     */
    public function filter($value)
    {
        $file = $this->_getFileName($value);
        if ($file['source'] == $file['target']) {
            return $value;
        }

        if (!file_exists($file['source'])) {
            return $value;
        }

        if (($file['overwrite'] == true) and (file_exists($file['target']))) {
            unlink($file['target']);
        }

        if (file_exists($file['target'])) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. It already exists.", $value));
        }

        $result = rename($file['source'], $file['target']);

        if ($result === true) {
            return $file['target'];
        }

        require_once 'Zend/Filter/Exception.php';
        throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. An error occured while processing the file.", $value));
    }

    /**
     * Internal method for creating the file array
     * Supports single and nested arrays
     *
     * @param  array $options
     * @return array
     */
    protected function _convertOptions($options) {
        $files = array();
        foreach ($options as $key => $value) {
            if (is_array($value)) {
                $this->_convertOptions($value);
                continue;
            }

            switch ($key) {
                case "source":
                    $files['source'] = (string) $value;
                    break;

                case 'target' :
                    $files['target'] = (string) $value;
                    break;

                case 'overwrite' :
                    $files['overwrite'] = (boolean) $value;
                    break;

                default:
                    break;
            }
        }

        if (empty($files)) {
            return $this;
        }

        if (empty($files['source'])) {
            $files['source'] = '*';
        }

        if (empty($files['target'])) {
            $files['target'] = '*';
        }

        if (empty($files['overwrite'])) {
            $files['overwrite'] = false;
        }

        $found = false;
        foreach ($this->_files as $key => $value) {
            if ($value['source'] == $files['source']) {
                $this->_files[$key] = $files;
                $found              = true;
            }
        }

        if (!$found) {
            $count                = count($this->_files);
            $this->_files[$count] = $files;
        }

        return $this;
    }

    /**
     * Internal method to resolve the requested source
     * and return all other related parameters
     *
     * @param  string $file Filename to get the informations for
     * @return array
     */
    protected function _getFileName($file)
    {
        $rename = array();
        foreach ($this->_files as $value) {
            if ($value['source'] == '*') {
                if (!isset($rename['source'])) {
                    $rename           = $value;
                    $rename['source'] = $file;
                }
            }

            if ($value['source'] == $file) {
                $rename = $value;
            }
        }

        if (!isset($rename['source'])) {
            return $file;
        }

        if (!isset($rename['target']) or ($rename['target'] == '*')) {
            $rename['target'] = $rename['source'];
        }

        if (is_dir($rename['target'])) {
            $name = basename($rename['source']);
            $last = $rename['target'][strlen($rename['target']) - 1];
            if (($last != '/') and ($last != '\\')) {
                $rename['target'] .= DIRECTORY_SEPARATOR;
            }

            $rename['target'] .= $name;
        }

        return $rename;
    }
}
PKpG[־�??Filter/Int.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Int.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Int implements Zend_Filter_Interface
{
    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns (int) $value
     *
     * @param  string $value
     * @return integer
     */
    public function filter($value)
    {
        return (int) ((string) $value);
    }
}
PKpG[i�P��Filter/CustomAccent.phpnu&1i�<?php
require_once 'Zend/Filter/Interface.php';
class Zend_Filter_CustomAccent implements Zend_Filter_Interface
{
	public function filter($valeur)
	{
		$accents = array('�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�',
		'�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�','�');
		$sans = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O',
		'U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
		return str_replace($accents, $sans, $valeur);
	}
}
?>PKpG[�ns�NNFilter/StripNewlines.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_StripNewlines implements Zend_Filter_Interface
{

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns $value without newline control characters
     *
     * @param  string $value
     * @return string
     */
    public function filter ($value)
    {
        return str_replace(array("\n", "\r"), '', $value);
    }
}
PKpG[���!#8#8Filter/Inflector.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Inflector.php 12501 2008-11-10 16:28:31Z matthew $
 */

/**
 * @see Zend_Filter
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter.php';

/**
 * @see Zend_Loader_PluginLoader
 */
require_once 'Zend/Loader/PluginLoader.php';

/**
 * Filter chain for string inflection
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Inflector implements Zend_Filter_Interface 
{
    /**
     * @var Zend_Loader_PluginLoader_Interface
     */
    protected $_pluginLoader = null;
    
    /**
     * @var string
     */
    protected $_target = null;
        
    /**
     * @var bool
     */
    protected $_throwTargetExceptionsOn = true;
    
    /**
     * @var string
     */
    protected $_targetReplacementIdentifier = ':';

    /**
     * @var array
     */
    protected $_rules = array();

    /**
     * Constructor
     *
     * @param string $target
     * @param array $rules
     */
    public function __construct($target = null, Array $rules = array(), $throwTargetExceptionsOn = null, $targetReplacementIdentifer = null)
    {
        if ($target instanceof Zend_Config) {
            $this->setConfig($target);
        } else {
            if ((null !== $target) && is_string($target)) {
                $this->setTarget($target);
            }

            if (null !== $rules) {
                $this->addRules($rules);
            }
            
            if ($throwTargetExceptionsOn !== null) {
                $this->setThrowTargetExceptionsOn($throwTargetExceptionsOn);
            }
            
            if ($targetReplacementIdentifer != '') {
                $this->setTargetReplacementIdentifier($targetReplacementIdentifer);
            }
        }
    }
    
    /**
     * Retreive PluginLoader
     *
     * @return Zend_Loader_PluginLoader_Interface
     */
    public function getPluginLoader()
    {
        if (!$this->_pluginLoader instanceof Zend_Loader_PluginLoader_Interface) {
            $this->_pluginLoader = new Zend_Loader_PluginLoader(array('Zend_Filter_' => 'Zend/Filter/'), __CLASS__);
        }
        
        return $this->_pluginLoader;
    }
    
    /**
     * Set PluginLoader
     *
     * @param Zend_Loader_PluginLoader_Interface $pluginLoader
     * @return Zend_Filter_Inflector
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $pluginLoader)
    {
        $this->_pluginLoader = $pluginLoader;
        return $this;
    }

    /**
     * Use Zend_Config object to set object state
     * 
     * @param  Zend_Config $config 
     * @return Zend_Filter_Inflector
     */
    public function setConfig(Zend_Config $config)
    {
        foreach ($config as $key => $value) {
            switch ($key) {
                case 'target':
                    $this->setTarget($value);
                    break;
                case 'filterPrefixPath':
                    if (is_scalar($value)) {
                        break;
                    }
                    $paths = $value->toArray();
                    foreach ($paths as $prefix => $path) {
                        $this->addFilterPrefixPath($prefix, $path);
                    }
                    break;
                case 'throwTargetExceptionsOn':
                    $this->setThrowTargetExceptionsOn($value);
                    break;
                case 'targetReplacementIdentifier':
                    $this->setTargetReplacementIdentifier($value);
                    break;
                case 'rules':
                    $this->addRules($value->toArray());
                    break;
                default:
                    break;
            }
        }
        return $this;
    }
    
    /**
     * Convienence method to add prefix and path to PluginLoader
     *
     * @param string $prefix
     * @param string $path
     * @return Zend_Filter_Inflector
     */
    public function addFilterPrefixPath($prefix, $path)
    {
        $this->getPluginLoader()->addPrefixPath($prefix, $path);
        return $this;
    }

    /**
     * Set Whether or not the inflector should throw an exception when a replacement
     * identifier is still found within an inflected target.
     *
     * @param bool $throwTargetExceptions
     * @return Zend_Filter_Inflector
     */
    public function setThrowTargetExceptionsOn($throwTargetExceptionsOn)
    {
        $this->_throwTargetExceptionsOn = ($throwTargetExceptionsOn == true) ? true : false;
        return $this;
    }
    
    /**
     * Will exceptions be thrown?
     *
     * @return bool
     */
    public function isThrowTargetExceptionsOn()
    {
        return $this->_throwTargetExceptionsOn;
    }

    /**
     * Set the Target Replacement Identifier, by default ':'
     *
     * @param string $targetReplacementIdentifier
     * @return Zend_Filter_Inflector
     */
    public function setTargetReplacementIdentifier($targetReplacementIdentifier)
    {
        $this->_targetReplacementIdentifier = (string) $targetReplacementIdentifier;
        return $this;
    }
    
    /**
     * Get Target Replacement Identifier
     *
     * @return string
     */
    public function getTargetReplacementIdentifier()
    {
        return $this->_targetReplacementIdentifier;
    }
    
    /**
     * Set a Target
     * ex: 'scripts/:controller/:action.:suffix'
     * 
     * @param string
     * @return Zend_Filter_Inflector
     */
    public function setTarget($target)
    {
        $this->_target = (string) $target;
        return $this;
    }

    /**
     * Retrieve target
     * 
     * @return string
     */
    public function getTarget()
    {
        return $this->_target;
    }

    /**
     * Set Target Reference
     *
     * @param reference $target
     * @return Zend_Filter_Inflector
     */
    public function setTargetReference(&$target)
    {
        $this->_target =& $target;
        return $this;
    }

    /**
     * SetRules() is the same as calling addRules() with the exception that it
     * clears the rules before adding them.
     *
     * @param array $rules
     * @return Zend_Filter_Inflector
     */
    public function setRules(Array $rules)
    {
        $this->clearRules();
        $this->addRules($rules);
        return $this;
    }
    
    /**
     * AddRules(): multi-call to setting filter rules.  
     *
     * If prefixed with a ":" (colon), a filter rule will be added.  If not 
     * prefixed, a static replacement will be added.
     * 
     * ex:
     * array(
     *     ':controller' => array('CamelCaseToUnderscore','StringToLower'),
     *     ':action'     => array('CamelCaseToUnderscore','StringToLower'),
     *     'suffix'      => 'phtml'
     *     );
     * 
     * @param array
     * @return Zend_Filter_Inflector
     */
    public function addRules(Array $rules)
    {
        $keys = array_keys($rules);
        foreach ($keys as $spec) {
            if ($spec[0] == ':') {
                $this->addFilterRule($spec, $rules[$spec]);
            } else {
                $this->setStaticRule($spec, $rules[$spec]);
            }
        }
        
        return $this;
    }
    
    /**
     * Get rules
     *
     * By default, returns all rules. If a $spec is provided, will return those 
     * rules if found, false otherwise.
     * 
     * @param  string $spec 
     * @return array|false
     */
    public function getRules($spec = null)
    {
        if (null !== $spec) {
            $spec = $this->_normalizeSpec($spec);
            if (isset($this->_rules[$spec])) {
                return $this->_rules[$spec];
            }
            return false;
        }

        return $this->_rules;
    }
    
    /**
     * getRule() returns a rule set by setFilterRule(), a numeric index must be provided
     *
     * @param string $spec
     * @param int $index
     * @return Zend_Filter_Interface|false
     */
    public function getRule($spec, $index)
    {
        $spec = $this->_normalizeSpec($spec);
        if (isset($this->_rules[$spec]) && is_array($this->_rules[$spec])) {
            if (isset($this->_rules[$spec][$index])) {
                return $this->_rules[$spec][$index];
            }
        }
        return false;
    }
    
    /**
     * ClearRules() clears the rules currently in the inflector
     *
     * @return Zend_Filter_Inflector
     */
    public function clearRules()
    {
        $this->_rules = array();
        return $this;
    }
    
    /**
     * Set a filtering rule for a spec.  $ruleSet can be a string, Filter object
     * or an array of strings or filter objects.
     *
     * @param string $spec
     * @param array|string|Zend_Filter_Interface $ruleSet
     * @return Zend_Filter_Inflector
     */
    public function setFilterRule($spec, $ruleSet)
    {
        $spec = $this->_normalizeSpec($spec);
        $this->_rules[$spec] = array();
        return $this->addFilterRule($spec, $ruleSet);
    }

    /**
     * Add a filter rule for a spec
     * 
     * @param mixed $spec 
     * @param mixed $ruleSet 
     * @return void
     */
    public function addFilterRule($spec, $ruleSet)
    {
        $spec = $this->_normalizeSpec($spec);
        if (!isset($this->_rules[$spec])) {
            $this->_rules[$spec] = array();
        }
        if (!is_array($ruleSet)) {
            $ruleSet = array($ruleSet);
        }
        foreach ($ruleSet as $rule) {
            $this->_rules[$spec][] = $this->_getRule($rule);
        }
        return $this;
    }
    
    /**
     * Set a static rule for a spec.  This is a single string value
     *
     * @param string $name
     * @param string $value
     * @return Zend_Filter_Inflector
     */
    public function setStaticRule($name, $value)
    {
        $name = $this->_normalizeSpec($name);
        $this->_rules[$name] = (string) $value;
        return $this;
    }
    
    /**
     * Set Static Rule Reference. 
     *
     * This allows a consuming class to pass a property or variable
     * in to be referenced when its time to build the output string from the 
     * target.
     *
     * @param string $name
     * @param mixed $reference
     * @return Zend_Filter_Inflector
     */
    public function setStaticRuleReference($name, &$reference)
    {
        $name = $this->_normalizeSpec($name);
        $this->_rules[$name] =& $reference;
        return $this;
    }

    /**
     * Inflect
     *
     * @param  string|array $source
     * @return string
     */
    public function filter($source)
    {
        // clean source
        foreach ( (array) $source as $sourceName => $sourceValue) {
            $source[ltrim($sourceName, ':')] = $sourceValue;
        }

        $pregQuotedTargetReplacementIdentifier = preg_quote($this->_targetReplacementIdentifier, '#');
        $processedParts = array();
        
        foreach ($this->_rules as $ruleName => $ruleValue) {
            if (isset($source[$ruleName])) {
                if (is_string($ruleValue)) {
                    // overriding the set rule
                    $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $source[$ruleName]);
                } elseif (is_array($ruleValue)) {
                    $processedPart = $source[$ruleName];
                    foreach ($ruleValue as $ruleFilter) {
                        $processedPart = $ruleFilter->filter($processedPart);
                    }
                    $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $processedPart);
                }
            } elseif (is_string($ruleValue)) {
                $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $ruleValue);
            }
        }
        
        // all of the values of processedParts would have been str_replace('\\', '\\\\', ..)'d to disable preg_replace backreferences 
        $inflectedTarget = preg_replace(array_keys($processedParts), array_values($processedParts), $this->_target);

        if ($this->_throwTargetExceptionsOn && (preg_match('#(?='.$pregQuotedTargetReplacementIdentifier.'[A-Za-z]{1})#', $inflectedTarget) == true)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('A replacement identifier ' . $this->_targetReplacementIdentifier . ' was found inside the inflected target, perhaps a rule was not satisfied with a target source?  Unsatisfied inflected target: ' . $inflectedTarget);
        }
        
        return $inflectedTarget;
    }
    
    /**
     * Normalize spec string
     * 
     * @param  string $spec 
     * @return string
     */
    protected function _normalizeSpec($spec)
    {
        return ltrim((string) $spec, ':&');
    }
    
    /**
     * Resolve named filters and convert them to filter objects.
     *
     * @param  string $rule
     * @return Zend_Filter_Interface
     */
    protected function _getRule($rule)
    {
        if ($rule instanceof Zend_Filter_Interface) {
            return $rule;
        }
        
        $rule = (string) $rule;
        
        $className  = $this->getPluginLoader()->load($rule);
        $ruleObject = new $className();
        if (!$ruleObject instanceof Zend_Filter_Interface) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('No class named ' . $rule . ' implementing Zend_Filter_Interface could be found');
        }
        
        return $ruleObject;
    }

}
PKpG[�ͳ�p�pFilter/Input.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Input.php 8856 2008-03-16 11:28:48Z thomas $
 */

/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Filter
 */
require_once 'Zend/Filter.php';

/**
 * @see Zend_Validate
 */
require_once 'Zend/Validate.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Input
{

    const ALLOW_EMPTY       = 'allowEmpty';
    const BREAK_CHAIN       = 'breakChainOnFailure';
    const DEFAULT_VALUE     = 'default';
    const MESSAGES          = 'messages';
    const ESCAPE_FILTER     = 'escapeFilter';
    const FIELDS            = 'fields';
    const FILTER            = 'filter';
    const FILTER_CHAIN      = 'filterChain';
    const MISSING_MESSAGE   = 'missingMessage';
    const INPUT_NAMESPACE   = 'inputNamespace';
    const NOT_EMPTY_MESSAGE = 'notEmptyMessage';
    const PRESENCE          = 'presence';
    const PRESENCE_OPTIONAL = 'optional';
    const PRESENCE_REQUIRED = 'required';
    const RULE              = 'rule';
    const RULE_WILDCARD     = '*';
    const VALIDATE          = 'validate';
    const VALIDATOR         = 'validator';
    const VALIDATOR_CHAIN   = 'validatorChain';
    const VALIDATOR_CHAIN_COUNT = 'validatorChainCount';

    /**
     * @var array Input data, before processing.
     */
    protected $_data = array();

    /**
     * @var array Association of rules to filters.
     */
    protected $_filterRules = array();

    /**
     * @var array Association of rules to validators.
     */
    protected $_validatorRules = array();

    /**
     * @var array After processing data, this contains mapping of valid fields
     * to field values.
     */
    protected $_validFields = array();

    /**
     * @var array After processing data, this contains mapping of validation
     * rules that did not pass validation to the array of messages returned
     * by the validator chain.
     */
    protected $_invalidMessages = array();

    /**
     * @var array After processing data, this contains mapping of validation
     * rules that did not pass validation to the array of error identifiers
     * returned by the validator chain.
     */
    protected $_invalidErrors = array();

    /**
     * @var array After processing data, this contains mapping of validation
     * rules in which some fields were missing to the array of messages
     * indicating which fields were missing.
     */
    protected $_missingFields = array();

    /**
     * @var array After processing, this contains a copy of $_data elements
     * that were not mentioned in any validation rule.
     */
    protected $_unknownFields = array();

    /**
     * @var Zend_Filter_Interface The filter object that is run on values
     * returned by the getEscaped() method.
     */
    protected $_defaultEscapeFilter = null;

    /**
     * Plugin loaders
     * @var array
     */
    protected $_loaders = array();

    /**
     * @var array Default values to use when processing filters and validators.
     */
    protected $_defaults = array(
        self::ALLOW_EMPTY         => false,
        self::BREAK_CHAIN         => false,
        self::ESCAPE_FILTER       => 'HtmlEntities',
        self::MISSING_MESSAGE     => "Field '%field%' is required by rule '%rule%', but the field is missing",
        self::NOT_EMPTY_MESSAGE   => "You must give a non-empty value for field '%field%'",
        self::PRESENCE            => self::PRESENCE_OPTIONAL
    );

    /**
     * @var boolean Set to False initially, this is set to True after the
     * input data have been processed.  Reset to False in setData() method.
     */
    protected $_processed = false;

    /**
     * @param array $filterRules
     * @param array $validatorRules
     * @param array $data       OPTIONAL
     * @param array $options    OPTIONAL
     */
    public function __construct($filterRules, $validatorRules, array $data = null, array $options = null)
    {
        if ($options) {
            $this->setOptions($options);
        }

        $this->_filterRules = (array) $filterRules;
        $this->_validatorRules = (array) $validatorRules;

        if ($data) {
            $this->setData($data);
        }
    }

    /**
     * @param mixed $namespaces
     * @return Zend_Filter_Input
     * @deprecated since 1.5.0RC1 - use addFilterPrefixPath() or addValidatorPrefixPath instead.
     */
    public function addNamespace($namespaces)
    {
        if (!is_array($namespaces)) {
            $namespaces = array($namespaces);
        }

        foreach ($namespaces as $namespace) {
            $prefix = $namespace;
            $path = str_replace('_', DIRECTORY_SEPARATOR, $prefix);
            $this->addFilterPrefixPath($prefix, $path);
            $this->addValidatorPrefixPath($prefix, $path);
        }

        return $this;
    }

    /**
     * Add prefix path for all elements
     *
     * @param  string $prefix
     * @param  string $path
     * @return Zend_Filter_Input
     */
    public function addFilterPrefixPath($prefix, $path)
    {
        $this->getPluginLoader(self::FILTER)->addPrefixPath($prefix, $path);

        return $this;
    }

    /**
     * Add prefix path for all elements
     *
     * @param  string $prefix
     * @param  string $path
     * @return Zend_Filter_Input
     */
    public function addValidatorPrefixPath($prefix, $path)
    {
        $this->getPluginLoader(self::VALIDATE)->addPrefixPath($prefix, $path);

        return $this;
    }

    /**
     * Set plugin loaders for use with decorators and elements
     *
     * @param  Zend_Loader_PluginLoader_Interface $loader
     * @param  string $type 'filter' or 'validate'
     * @return Zend_Filter_Input
     * @throws Zend_Filter_Exception on invalid type
     */
    public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type)
    {
        $type = strtolower($type);
        switch ($type) {
            case self::FILTER:
            case self::VALIDATE:
                $this->_loaders[$type] = $loader;
                return $this;
            default:
                require_once 'Zend/Filter/Exception.php';
                throw new Zend_Filter_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type));
        }

        return $this;
    }

    /**
     * Retrieve plugin loader for given type
     *
     * $type may be one of:
     * - filter
     * - validator
     *
     * If a plugin loader does not exist for the given type, defaults are
     * created.
     *
     * @param  string $type 'filter' or 'validate'
     * @return Zend_Loader_PluginLoader_Interface
     * @throws Zend_Filter_Exception on invalid type
     */
    public function getPluginLoader($type)
    {
        $type = strtolower($type);
        if (!isset($this->_loaders[$type])) {
            switch ($type) {
                case self::FILTER:
                    $prefixSegment = 'Zend_Filter_';
                    $pathSegment   = 'Zend/Filter/';
                    break;
                case self::VALIDATE:
                    $prefixSegment = 'Zend_Validate_';
                    $pathSegment   = 'Zend/Validate/';
                    break;
                default:
                    require_once 'Zend/Filter/Exception.php';
                    throw new Zend_Filter_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type));
            }

            require_once 'Zend/Loader/PluginLoader.php';
            $this->_loaders[$type] = new Zend_Loader_PluginLoader(
                array($prefixSegment => $pathSegment)
            );
        }

        return $this->_loaders[$type];
    }

    /**
     * @return array
     */
    public function getMessages()
    {
        $this->_process();
        return array_merge($this->_invalidMessages, $this->_missingFields);
    }

    /**
     * @return array
     */
    public function getErrors()
    {
        $this->_process();
        return $this->_invalidErrors;
    }

    /**
     * @return array
     */
    public function getInvalid()
    {
        $this->_process();
        return $this->_invalidMessages;
    }

    /**
     * @return array
     */
    public function getMissing()
    {
        $this->_process();
        return $this->_missingFields;
    }

    /**
     * @return array
     */
    public function getUnknown()
    {
        $this->_process();
        return $this->_unknownFields;
    }

    /**
     * @param string $fieldName OPTIONAL
     * @return mixed
     */
    public function getEscaped($fieldName = null)
    {
        $this->_process();
        $this->_getDefaultEscapeFilter();

        if ($fieldName === null) {
            return $this->_escapeRecursive($this->_validFields);
        }
        if (array_key_exists($fieldName, $this->_validFields)) {
            return $this->_escapeRecursive($this->_validFields[$fieldName]);
        }
        return null;
    }

    /**
     * @param mixed $value
     * @return mixed
     */
    protected function _escapeRecursive($data)
    {
        if (!is_array($data)) {
            return $this->_getDefaultEscapeFilter()->filter($data);
        }
        foreach ($data as &$element) {
            $element = $this->_escapeRecursive($element);
        }
        return $data;
    }

    /**
     * @param string $fieldName OPTIONAL
     * @return mixed
     */
    public function getUnescaped($fieldName = null)
    {
        $this->_process();
        if ($fieldName === null) {
            return $this->_validFields;
        }
        if (array_key_exists($fieldName, $this->_validFields)) {
            return $this->_validFields[$fieldName];
        }
        return null;
    }

    /**
     * @param string $fieldName
     * @return mixed
     */
    public function __get($fieldName)
    {
        return $this->getEscaped($fieldName);
    }

    /**
     * @return boolean
     */
    public function hasInvalid()
    {
        $this->_process();
        return !(empty($this->_invalidMessages));
    }

    /**
     * @return boolean
     */
    public function hasMissing()
    {
        $this->_process();
        return !(empty($this->_missingFields));
    }

    /**
     * @return boolean
     */
    public function hasUnknown()
    {
        $this->_process();
        return !(empty($this->_unknownFields));
    }

    /**
     * @return boolean
     */
    public function hasValid()
    {
        $this->_process();
        return !(empty($this->_validFields));
    }

    /**
     * @param string $fieldName
     * @return boolean
     */
    public function isValid($fieldName = null)
    {
        $this->_process();
        if ($fieldName === null) {
            return !($this->hasMissing() || $this->hasInvalid());
        }
        return array_key_exists($fieldName, $this->_validFields);
    }

    /**
     * @param string $fieldName
     * @return boolean
     */
    public function __isset($fieldName)
    {
        $this->_process();
        return isset($this->_validFields[$fieldName]);
    }

    /**
     * @return Zend_Filter_Input
     * @throws Zend_Filter_Exception
     */
    public function process()
    {
        $this->_process();
        if ($this->hasInvalid()) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Input has invalid fields");
        }
        if ($this->hasMissing()) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Input has missing fields");
        }

        return $this;
    }

    /**
     * @param array $data
     * @return Zend_Filter_Input
     */
    public function setData(array $data)
    {
        $this->_data = $data;

        /**
         * Reset to initial state
         */
        $this->_validFields = array();
        $this->_invalidMessages = array();
        $this->_invalidErrors = array();
        $this->_missingFields = array();
        $this->_unknownFields = array();

        $this->_processed = false;

        return $this;
    }

    /**
     * @param mixed $escapeFilter
     * @return Zend_Filter_Interface
     */
    public function setDefaultEscapeFilter($escapeFilter)
    {
        if (is_string($escapeFilter) || is_array($escapeFilter)) {
            $escapeFilter = $this->_getFilter($escapeFilter);
        }
        if (!$escapeFilter instanceof Zend_Filter_Interface) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception('Escape filter specified does not implement Zend_Filter_Interface');
        }
        $this->_defaultEscapeFilter = $escapeFilter;
        return $escapeFilter;
    }

    /**
     * @param array $options
     * @return Zend_Filter_Input
     * @throws Zend_Filter_Exception if an unknown option is given
     */
    public function setOptions(array $options)
    {
        foreach ($options as $option => $value) {
            switch ($option) {
                case self::ESCAPE_FILTER:
                    $this->setDefaultEscapeFilter($value);
                    break;
                case self::INPUT_NAMESPACE:
                    $this->addNamespace($value);
                    break;
                case self::ALLOW_EMPTY:
                case self::BREAK_CHAIN:
                case self::MISSING_MESSAGE:
                case self::NOT_EMPTY_MESSAGE:
                case self::PRESENCE:
                    $this->_defaults[$option] = $value;
                    break;
                default:
                    require_once 'Zend/Filter/Exception.php';
                    throw new Zend_Filter_Exception("Unknown option '$option'");
                    break;
            }
        }

        return $this;
    }

    /*
     * Protected methods
     */

    /**
     * @return void
     */
    protected function _filter()
    {
        foreach ($this->_filterRules as $ruleName => &$filterRule) {
            /**
             * Make sure we have an array representing this filter chain.
             * Don't typecast to (array) because it might be a Zend_Filter object
             */
            if (!is_array($filterRule)) {
                $filterRule = array($filterRule);
            }

            /**
             * Filters are indexed by integer, metacommands are indexed by string.
             * Pick out the filters.
             */
            $filterList = array();
            foreach ($filterRule as $key => $value) {
                if (is_int($key)) {
                    $filterList[] = $value;
                }
            }

            /**
             * Use defaults for filter metacommands.
             */
            $filterRule[self::RULE] = $ruleName;
            if (!isset($filterRule[self::FIELDS])) {
                $filterRule[self::FIELDS] = $ruleName;
            }

            /**
             * Load all the filter classes and add them to the chain.
             */
            if (!isset($filterRule[self::FILTER_CHAIN])) {
                $filterRule[self::FILTER_CHAIN] = new Zend_Filter();
                foreach ($filterList as $filter) {
                    if (is_string($filter) || is_array($filter)) {
                        $filter = $this->_getFilter($filter);
                    }
                    $filterRule[self::FILTER_CHAIN]->addFilter($filter);
                }
            }

            /**
             * If the ruleName is the special wildcard rule,
             * then apply the filter chain to all input data.
             * Else just process the field named by the rule.
             */
            if ($ruleName == self::RULE_WILDCARD) {
                foreach (array_keys($this->_data) as $field)  {
                    $this->_filterRule(array_merge($filterRule, array(self::FIELDS => $field)));
                }
            } else {
                $this->_filterRule($filterRule);
            }
        }
    }

    /**
     * @param array $filterRule
     * @return void
     */
    protected function _filterRule(array $filterRule)
    {
        $field = $filterRule[self::FIELDS];
        if (!array_key_exists($field, $this->_data)) {
            return;
        }
        if (is_array($this->_data[$field])) {
            foreach ($this->_data[$field] as $key => $value) {
                $this->_data[$field][$key] = $filterRule[self::FILTER_CHAIN]->filter($value);
            }
        } else {
            $this->_data[$field] =
                $filterRule[self::FILTER_CHAIN]->filter($this->_data[$field]);
        }
    }

    /**
     * @return Zend_Filter_Interface
     */
    protected function _getDefaultEscapeFilter()
    {
        if ($this->_defaultEscapeFilter !== null) {
            return $this->_defaultEscapeFilter;
        }
        return $this->setDefaultEscapeFilter($this->_defaults[self::ESCAPE_FILTER]);
    }

    /**
     * @param string $rule
     * @param string $field
     * @return string
     */
    protected function _getMissingMessage($rule, $field)
    {
        $message = $this->_defaults[self::MISSING_MESSAGE];
        $message = str_replace('%rule%', $rule, $message);
        $message = str_replace('%field%', $field, $message);
        return $message;
    }

    /**
     * @return string
     */
    protected function _getNotEmptyMessage($rule, $field)
    {
        $message = $this->_defaults[self::NOT_EMPTY_MESSAGE];
        $message = str_replace('%rule%', $rule, $message);
        $message = str_replace('%field%', $field, $message);
        return $message;
    }

    /**
     * @return void
     */
    protected function _process()
    {
        if ($this->_processed === false) {
            $this->_filter();
            $this->_validate();
            $this->_processed = true;
        }
    }

    /**
     * @return void
     */
    protected function _validate()
    {
        /**
         * Special case: if there are no validators, treat all fields as valid.
         */
        if (!$this->_validatorRules) {
            $this->_validFields = $this->_data;
            $this->_data = array();
            return;
        }

        foreach ($this->_validatorRules as $ruleName => &$validatorRule) {
            /**
             * Make sure we have an array representing this validator chain.
             * Don't typecast to (array) because it might be a Zend_Validate object
             */
            if (!is_array($validatorRule)) {
                $validatorRule = array($validatorRule);
            }

            /**
             * Validators are indexed by integer, metacommands are indexed by string.
             * Pick out the validators.
             */
            $validatorList = array();
            foreach ($validatorRule as $key => $value) {
                if (is_int($key)) {
                    $validatorList[] = $value;
                }
            }

            /**
             * Use defaults for validation metacommands.
             */
            $validatorRule[self::RULE] = $ruleName;
            if (!isset($validatorRule[self::FIELDS])) {
                $validatorRule[self::FIELDS] = $ruleName;
            }
            if (!isset($validatorRule[self::BREAK_CHAIN])) {
                $validatorRule[self::BREAK_CHAIN] = $this->_defaults[self::BREAK_CHAIN];
            }
            if (!isset($validatorRule[self::PRESENCE])) {
                $validatorRule[self::PRESENCE] = $this->_defaults[self::PRESENCE];
            }
            if (!isset($validatorRule[self::ALLOW_EMPTY])) {
                $validatorRule[self::ALLOW_EMPTY] = $this->_defaults[self::ALLOW_EMPTY];
            }
            if (!isset($validatorRule[self::MESSAGES])) {
                $validatorRule[self::MESSAGES] = array();
            } else if (!is_array($validatorRule[self::MESSAGES])) {
                $validatorRule[self::MESSAGES] = array($validatorRule[self::MESSAGES]);
            } else if (!array_intersect_key($validatorList, $validatorRule[self::MESSAGES])) {
                $validatorRule[self::MESSAGES] = array($validatorRule[self::MESSAGES]);
            }

            /**
             * Load all the validator classes and add them to the chain.
             */
            if (!isset($validatorRule[self::VALIDATOR_CHAIN])) {
                $validatorRule[self::VALIDATOR_CHAIN] = new Zend_Validate();
                $i = 0;
                foreach ($validatorList as $validator) {

                    if (is_string($validator) || is_array($validator)) {
                        $validator = $this->_getValidator($validator);
                    }
                    if (isset($validatorRule[self::MESSAGES][$i])) {
                        $value = $validatorRule[self::MESSAGES][$i];
                        if (is_array($value)) {
                            $validator->setMessages($value);
                        } else {
                            $validator->setMessage($value);
                        }
                    }

                    $validatorRule[self::VALIDATOR_CHAIN]->addValidator($validator, $validatorRule[self::BREAK_CHAIN]);
                    ++$i;
                }
                $validatorRule[self::VALIDATOR_CHAIN_COUNT] = $i;
            }

            /**
             * If the ruleName is the special wildcard rule,
             * then apply the validator chain to all input data.
             * Else just process the field named by the rule.
             */
            if ($ruleName == self::RULE_WILDCARD) {
                foreach (array_keys($this->_data) as $field)  {
                    $this->_validateRule(array_merge($validatorRule, array(self::FIELDS => $field)));
                }
            } else {
                $this->_validateRule($validatorRule);
            }
        }

        /**
         * Unset fields in $_data that have been added to other arrays.
         * We have to wait until all rules have been processed because
         * a given field may be referenced by multiple rules.
         */
        foreach (array_merge(array_keys($this->_missingFields), array_keys($this->_invalidMessages)) as $rule) {
            foreach ((array) $this->_validatorRules[$rule][self::FIELDS] as $field) {
                unset($this->_data[$field]);
            }
        }
        foreach ($this->_validFields as $field => $value) {
            unset($this->_data[$field]);
        }

        /**
         * Anything left over in $_data is an unknown field.
         */
        $this->_unknownFields = $this->_data;
    }

    /**
     * @param array $validatorRule
     * @return void
     */
    protected function _validateRule(array $validatorRule)
    {
        /**
         * Get one or more data values from input, and check for missing fields.
         * Apply defaults if fields are missing.
         */
        $data = array();
        foreach ((array) $validatorRule[self::FIELDS] as $field) {
            if (array_key_exists($field, $this->_data)) {
                $data[$field] = $this->_data[$field];
            } else
            if (array_key_exists(self::DEFAULT_VALUE, $validatorRule)) {
                if (is_array($validatorRule[self::DEFAULT_VALUE])) {
                    $key = array_search($field, (array) $validatorRule[self::FIELDS]);
                    if (array_key_exists($key, $validatorRule[self::DEFAULT_VALUE])) {
                        $data[$field] = $validatorRule[self::DEFAULT_VALUE][$key];
                    }
                } else {
                    $data[$field] = $validatorRule[self::DEFAULT_VALUE];
                }
            } else
            if ($validatorRule[self::PRESENCE] == self::PRESENCE_REQUIRED) {
                $this->_missingFields[$validatorRule[self::RULE]][] =
                    $this->_getMissingMessage($validatorRule[self::RULE], $field);
            }
        }

        /**
         * If any required fields are missing, break the loop.
         */
        if (isset($this->_missingFields[$validatorRule[self::RULE]]) && count($this->_missingFields[$validatorRule[self::RULE]]) > 0) {
            return;
        }

        /**
         * Evaluate the inputs against the validator chain.
         */
        if (count((array) $validatorRule[self::FIELDS]) > 1) {
            if (!$validatorRule[self::VALIDATOR_CHAIN]->isValid($data)) {
                $this->_invalidMessages[$validatorRule[self::RULE]] = $validatorRule[self::VALIDATOR_CHAIN]->getMessages();
                $this->_invalidErrors[$validatorRule[self::RULE]] = $validatorRule[self::VALIDATOR_CHAIN]->getErrors();
                return;
            }
        } else {
            $failed = false;
            foreach ($data as $fieldKey => $field) {
                if (!is_array($field)) {
                    $field = array($field);
                }
                foreach ($field as $value) {
                    if (empty($value)) {
                        if ($validatorRule[self::ALLOW_EMPTY] == true) {
                            continue;
                        }
                        if ($validatorRule[self::VALIDATOR_CHAIN_COUNT] == 0) {
                            $notEmptyValidator = $this->_getValidator('NotEmpty');
                            $notEmptyValidator->setMessage($this->_getNotEmptyMessage($validatorRule[self::RULE], $fieldKey));
                            $validatorRule[self::VALIDATOR_CHAIN]->addValidator($notEmptyValidator);
                        }
                    }
                    if (!$validatorRule[self::VALIDATOR_CHAIN]->isValid($value)) {
                        $this->_invalidMessages[$validatorRule[self::RULE]] =
                            $validatorRule[self::VALIDATOR_CHAIN]->getMessages();
                        $this->_invalidErrors[$validatorRule[self::RULE]] =
                            $validatorRule[self::VALIDATOR_CHAIN]->getErrors();
                        unset($this->_validFields[$fieldKey]);
                        $failed = true;
                        if ($validatorRule[self::BREAK_CHAIN]) {
                            return;
                        }
                    }
                }
            }
            if ($failed) {
                return;
            }
        }

        /**
         * If we got this far, the inputs for this rule pass validation.
         */
        foreach ((array) $validatorRule[self::FIELDS] as $field) {
            if (array_key_exists($field, $data)) {
                $this->_validFields[$field] = $data[$field];
            }
        }
    }

    /**
     * @param mixed $classBaseName
     * @return Zend_Filter_Interface
     */
    protected function _getFilter($classBaseName)
    {
        return $this->_getFilterOrValidator(self::FILTER, $classBaseName);
    }

    /**
     * @param mixed $classBaseName
     * @return Zend_Validate_Interface
     */
    protected function _getValidator($classBaseName)
    {
        return $this->_getFilterOrValidator(self::VALIDATE, $classBaseName);
    }

    /**
     * @param string $type
     * @param mixed $classBaseName
     * @return Zend_Filter_Interface|Zend_Validate_Interface
     * @throws Zend_Filter_Exception
     */
    protected function _getFilterOrValidator($type, $classBaseName)
    {
        $args = array();

        if (is_array($classBaseName)) {
            $args = $classBaseName;
            $classBaseName = array_shift($args);
        }

        $interfaceName = 'Zend_' . ucfirst($type) . '_Interface';
        $className = $this->getPluginLoader($type)->load(ucfirst($classBaseName));

        $class = new ReflectionClass($className);

        if (!$class->implementsInterface($interfaceName)) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception("Class based on basename '$classBaseName' must implement the '$interfaceName' interface");
        }

        if ($class->hasMethod('__construct')) {
            $object = $class->newInstanceArgs($args);
        } else {
            $object = $class->newInstance();
        }

        return $object;
    }

}
PKpG[#vZ6BBFilter/Dir.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Dir.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Dir implements Zend_Filter_Interface
{
    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns dirname($value)
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        return dirname((string) $value);
    }
}
PKpG[���a}}Filter/PregReplace.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PregReplace.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_PregReplace implements Zend_Filter_Interface
{
    /**
     * Pattern to match
     * @var mixed
     */
    protected $_matchPattern = null;

    /**
     * Replacement pattern
     * @var mixed
     */
    protected $_replacement = '';
    
    /**
     * Is unicode enabled?
     *
     * @var bool
     */
    static protected $_unicodeSupportEnabled = null;

    /**
     * Is Unicode Support Enabled Utility function
     *
     * @return bool
     */
    static public function isUnicodeSupportEnabled()
    {
        if (self::$_unicodeSupportEnabled === null) {
            self::_determineUnicodeSupport();
        }
        
        return self::$_unicodeSupportEnabled;
    }
    
    /**
     * Method to cache the regex needed to determine if unicode support is available
     *
     * @return bool
     */
    static protected function _determineUnicodeSupport()
    {
        self::$_unicodeSupportEnabled = (@preg_match('/\pL/u', 'a')) ? true : false;
    }
    
    /**
     * Constructor
     * 
     * @param  string $match 
     * @param  string $replace 
     * @return void
     */
    public function __construct($matchPattern = null, $replacement = null)
    {
        if ($matchPattern) {
            $this->setMatchPattern($matchPattern);
        }
        
        if ($replacement) {
            $this->setReplacement($replacement);
        }
    }
    
    /**
     * Set the match pattern for the regex being called within filter()
     *
     * @param mixed $match - same as the first argument of preg_replace
     * @return Zend_Filter_PregReplace
     */
    public function setMatchPattern($match)
    {
        $this->_matchPattern = $match;
        return $this;
    }

    /**
     * Get currently set match pattern
     * 
     * @return string
     */
    public function getMatchPattern()
    {
        return $this->_matchPattern;
    }
    
    /**
     * Set the Replacement pattern/string for the preg_replace called in filter
     *
     * @param mixed $replacement - same as the second argument of preg_replace
     * @return Zend_Filter_PregReplace
     */
    public function setReplacement($replacement)
    {
        $this->_replacement = $replacement;
        return $this;
    }

    /**
     * Get currently set replacement value
     * 
     * @return string
     */
    public function getReplacement()
    {
        return $this->_replacement;
    }
    
    /**
     * Perform regexp replacement as filter
     * 
     * @param  string $value 
     * @return string
     */
    public function filter($value)
    {
        if ($this->_matchPattern == null) {
            require_once 'Zend/Filter/Exception.php';
            throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
        }
        
        return preg_replace($this->_matchPattern, $this->_replacement, $value);    
    }
    
}
PKpG[&$���Filter/Alpha.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Alpha.php 12751 2008-11-21 18:30:48Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';
/**
 * @see Zend_Locale
 */
require_once 'Zend/Locale.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Alpha implements Zend_Filter_Interface
{
    /**
     * Whether to allow white space characters; off by default
     *
     * @var boolean
     */
    public $allowWhiteSpace;

    /**
     * Is PCRE is compiled with UTF-8 and Unicode support
     *
     * @var mixed
     **/
    protected static $_unicodeEnabled;

    /**
     * Locale in browser.
     *
     * @var Zend_Locale object
     */
    protected $_locale;

    /**
     * The Alphabet means english alphabet.
     *
     * @var boolean
     */
    protected static $_meansEnglishAlphabet;

    /**
     * Sets default option values for this instance
     *
     * @param  boolean $allowWhiteSpace
     * @return void
     */
    public function __construct($allowWhiteSpace = false)
    {
        $this->allowWhiteSpace = (boolean) $allowWhiteSpace;
        if (null === self::$_unicodeEnabled) {
            self::$_unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false;
        }

        if (null === self::$_meansEnglishAlphabet) {
            $this->_locale = new Zend_Locale('auto');
            self::$_meansEnglishAlphabet = in_array($this->_locale->getLanguage(),
                                                    array('ja', 'ko', 'zh')
                                                    );
        }

    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, removing all but alphabetic characters
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        $whiteSpace = $this->allowWhiteSpace ? '\s' : '';
        if (!self::$_unicodeEnabled) {
            // POSIX named classes are not supported, use alternative a-zA-Z match
            $pattern = '/[^a-zA-Z' . $whiteSpace . ']/';
        } else if (self::$_meansEnglishAlphabet) {
            //The Alphabet means english alphabet.
            $pattern = '/[^a-zA-Z'  . $whiteSpace . ']/u';
        } else {
            //The Alphabet means each language's alphabet.
            $pattern = '/[^\p{L}' . $whiteSpace . ']/u';
        }

        return preg_replace($pattern, '', (string) $value);
    }
}
PKpG[�lӺxxFilter/HtmlEntities.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: HtmlEntities.php 11783 2008-10-09 17:38:54Z andries $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_HtmlEntities implements Zend_Filter_Interface
{
    /**
     * Corresponds to second htmlentities() argument
     *
     * @var integer
     */
    protected $_quoteStyle;

    /**
     * Corresponds to third htmlentities() argument
     *
     * @var string
     */
    protected $_charSet;

    /**
     * Sets filter options
     *
     * @param  integer $quoteStyle
     * @param  string  $charSet
     * @return void
     */
    public function __construct($quoteStyle = ENT_COMPAT, $charSet = 'ISO-8859-1')
    {
        $this->_quoteStyle = $quoteStyle;
        $this->_charSet    = $charSet;
    }

    /**
     * Returns the quoteStyle option
     *
     * @return integer
     */
    public function getQuoteStyle()
    {
        return $this->_quoteStyle;
    }

    /**
     * Sets the quoteStyle option
     *
     * @param  integer $quoteStyle
     * @return Zend_Filter_HtmlEntities Provides a fluent interface
     */
    public function setQuoteStyle($quoteStyle)
    {
        $this->_quoteStyle = $quoteStyle;
        return $this;
    }

    /**
     * Returns the charSet option
     *
     * @return string
     */
    public function getCharSet()
    {
        return $this->_charSet;
    }

    /**
     * Sets the charSet option
     *
     * @param  string $charSet
     * @return Zend_Filter_HtmlEntities Provides a fluent interface
     */
    public function setCharSet($charSet)
    {
        $this->_charSet = $charSet;
        return $this;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, converting characters to their corresponding HTML entity
     * equivalents where they exist
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        return htmlentities((string) $value, $this->_quoteStyle, $this->_charSet);
    }
}
PKpG[p$��	�	Filter/StringTrim.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StringTrim.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_StringTrim implements Zend_Filter_Interface
{
    /**
     * List of characters provided to the trim() function
     *
     * If this is null, then trim() is called with no specific character list,
     * and its default behavior will be invoked, trimming whitespace.
     *
     * @var string|null
     */
    protected $_charList;

    /**
     * Sets filter options
     *
     * @param  string $charList
     * @return void
     */
    public function __construct($charList = null)
    {
        $this->_charList = $charList;
    }

    /**
     * Returns the charList option
     *
     * @return string|null
     */
    public function getCharList()
    {
        return $this->_charList;
    }

    /**
     * Sets the charList option
     *
     * @param  string|null $charList
     * @return Zend_Filter_StringTrim Provides a fluent interface
     */
    public function setCharList($charList)
    {
        $this->_charList = $charList;
        return $this;
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value with characters stripped from the beginning and end
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if (null === $this->_charList) {
            return trim((string) $value);
        } else {
            return trim((string) $value, $this->_charList);
        }
    }
}
PKpG[�B%�EEFilter/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Exception extends Zend_Exception
{}
PKpG[�����Filter/Alnum.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Alnum.php 12751 2008-11-21 18:30:48Z yoshida@zend.co.jp $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';
/**
 * @see Zend_Locale
 */
require_once 'Zend/Locale.php';

/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Alnum implements Zend_Filter_Interface
{
    /**
     * Whether to allow white space characters; off by default
     *
     * @var boolean
     */
    public $allowWhiteSpace;

    /**
     * Is PCRE is compiled with UTF-8 and Unicode support
     *
     * @var mixed
     **/
    protected static $_unicodeEnabled;

    /**
     * Locale in browser.
     *
     * @var Zend_Locale object
     */
    protected $_locale;

    /**
     * The Alphabet means english alphabet.
     *
     * @var boolean
     */
    protected static $_meansEnglishAlphabet;

    /**
     * Sets default option values for this instance
     *
     * @param  boolean $allowWhiteSpace
     * @return void
     */
    public function __construct($allowWhiteSpace = false)
    {
        $this->allowWhiteSpace = (boolean) $allowWhiteSpace;
        if (null === self::$_unicodeEnabled) {
            self::$_unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false;
        }

        if (null === self::$_meansEnglishAlphabet) {
            $this->_locale = new Zend_Locale('auto');
            self::$_meansEnglishAlphabet = in_array($this->_locale->getLanguage(),
                                                    array('ja', 'ko', 'zh')
                                                    );
        }

    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, removing all but alphabetic and digit characters
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        $whiteSpace = $this->allowWhiteSpace ? '\s' : '';
        if (!self::$_unicodeEnabled) {
            // POSIX named classes are not supported, use alternative a-zA-Z0-9 match
            $pattern = '/[^a-zA-Z0-9' . $whiteSpace . ']/';
        } else if (self::$_meansEnglishAlphabet) {
            //The Alphabet means english alphabet.
            $pattern = '/[^a-zA-Z0-9'  . $whiteSpace . ']/u';
        } else {
            //The Alphabet means each language's alphabet.
            $pattern = '/[^\p{L}\p{N}' . $whiteSpace . ']/u';
        }

        return preg_replace($pattern, '', (string) $value);
    }
}
PKpG[-0�}��Filter/Digits.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Digits.php 8731 2008-03-10 15:08:03Z darby $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_Digits implements Zend_Filter_Interface
{
    /**
     * Is PCRE is compiled with UTF-8 and Unicode support
     *
     * @var mixed
     **/
    protected static $_unicodeEnabled;

    /**
     * Class constructor
     *
     * Checks if PCRE is compiled with UTF-8 and Unicode support
     *
     * @return void
     */
    public function __construct()
    {
        if (null === self::$_unicodeEnabled) {
            self::$_unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false;
        }
    }

    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns the string $value, removing all but digit characters
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        if (!self::$_unicodeEnabled) {
            // POSIX named classes are not supported, use alternative 0-9 match
            $pattern = '/[^0-9]/';
        } else if (extension_loaded('mbstring')) {
            // Filter for the value with mbstring
            $pattern = '/[^[:digit:]]/';
        } else {
            // Filter for the value without mbstring
            $pattern = '/[\p{^N}]/';
        }

        return preg_replace($pattern, '', (string) $value);
    }
}
PKpG[Z�\$��Filter/Interface.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Filter_Interface
{
    /**
     * Returns the result of filtering $value
     *
     * @param  mixed $value
     * @throws Zend_Filter_Exception If filtering $value is impossible
     * @return mixed
     */
    public function filter($value);
}
PKpG[��N��Filter/CustomAlnum.phpnu&1i�<?php 
require_once 'Zend/Filter/Alnum.php';
 
class Zend_Filter_CustomAlnum extends Zend_Filter_Alnum {
    public function filter($value)
    {
        $whiteSpace = $this->allowWhiteSpace ? '\s' : '';
		$pattern = '/[^a-zA-Z0-9' . $whiteSpace . '�����������������������������������������������������������]/';
        return preg_replace($pattern, '', (string) $value);
    }
}

?>PKpG[#��NNFilter/BaseName.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: BaseName.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Filter_Interface
 */
require_once 'Zend/Filter/Interface.php';


/**
 * @category   Zend
 * @package    Zend_Filter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Filter_BaseName implements Zend_Filter_Interface
{
    /**
     * Defined by Zend_Filter_Interface
     *
     * Returns basename($value)
     *
     * @param  string $value
     * @return string
     */
    public function filter($value)
    {
        return basename((string) $value);
    }
}
PKpG[��̇��Server/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Server_Interface */
require_once 'Zend/Server/Interface.php';

/**
 * Zend_Server_Definition
 */
require_once 'Zend/Server/Definition.php';

/**
 * Zend_Server_Method_Definition
 */
require_once 'Zend/Server/Method/Definition.php';

/**
 * Zend_Server_Method_Callback
 */
require_once 'Zend/Server/Method/Callback.php';

/**
 * Zend_Server_Method_Prototype
 */
require_once 'Zend/Server/Method/Prototype.php';

/**
 * Zend_Server_Method_Parameter
 */
require_once 'Zend/Server/Method/Parameter.php';

/**
 * Zend_Server_Abstract
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 12617 2008-11-13 15:04:07Z alexander $
 */
abstract class Zend_Server_Abstract implements Zend_Server_Interface
{
    /**
     * @deprecated
     * @var array List of PHP magic methods (lowercased)
     */
    protected static $magic_methods = array(
        '__call',
        '__clone',
        '__construct',
        '__destruct',
        '__get',
        '__isset',
        '__set',
        '__set_state',
        '__sleep',
        '__tostring',
        '__unset',
        '__wakeup',
    );

    /**
     * @var bool Flag; whether or not overwriting existing methods is allowed
     */
    protected $_overwriteExistingMethods = false;

    /**
     * @var Zend_Server_Definition
     */
    protected $_table;

    /**
     * Constructor
     *
     * Setup server description
     * 
     * @return void
     */
    public function __construct()
    {
        $this->_table = new Zend_Server_Definition();
        $this->_table->setOverwriteExistingMethods($this->_overwriteExistingMethods);
    }

    /**
     * Returns a list of registered methods
     *
     * Returns an array of method definitions.
     *
     * @return Zend_Server_Definition
     */
    public function getFunctions()
    {
        return $this->_table;
    }

    /**
     * Lowercase a string
     *
     * Lowercase's a string by reference
     * 
     * @deprecated
     * @param  string $string value
     * @param  string $key
     * @return string Lower cased string
     */
    public static function lowerCase(&$value, &$key)
    {
        trigger_error(__CLASS__ . '::' . __METHOD__ . '() is deprecated and will be removed in a future version', E_USER_NOTICE);
        return $value = strtolower($value);
    }

    /**
     * Build callback for method signature
     * 
     * @param  Zend_Server_Reflection_Function_Abstract $reflection 
     * @return Zend_Server_Method_Callback
     */
    protected function _buildCallback(Zend_Server_Reflection_Function_Abstract $reflection)
    {
        $callback = new Zend_Server_Method_Callback();
        if ($reflection instanceof Zend_Server_Reflection_Method) {
            $callback->setType($reflection->isStatic() ? 'static' : 'instance')
                     ->setClass($reflection->getDeclaringClass()->getName())
                     ->setMethod($reflection->getName());
        } elseif ($reflection instanceof Zend_Server_Reflection_Function) {
            $callback->setType('function')
                     ->setFunction($reflection->getName());
        }
        return $callback;
    }

    /**
     * Build a method signature
     * 
     * @param  Zend_Server_Reflection_Function_Abstract $reflection 
     * @param  null|string|object $class
     * @return Zend_Server_Method_Definition
     * @throws Zend_Server_Exception on duplicate entry
     */
    protected function _buildSignature(Zend_Server_Reflection_Function_Abstract $reflection, $class = null)
    {
        $ns         = $reflection->getNamespace();
        $name       = $reflection->getName();
        $method     = empty($ns) ? $name : $ns . '.' . $name;

        if (!$this->_overwriteExistingMethods && $this->_table->hasMethod($method)) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Duplicate method registered: ' . $method);
        }

        $definition = new Zend_Server_Method_Definition();
        $definition->setName($method)
                   ->setCallback($this->_buildCallback($reflection))
                   ->setMethodHelp($reflection->getDescription())
                   ->setInvokeArguments($reflection->getInvokeArguments());

        foreach ($reflection->getPrototypes() as $proto) {
            $prototype = new Zend_Server_Method_Prototype();
            $prototype->setReturnType($this->_fixType($prototype->getReturnType()));
            foreach ($proto->getParameters() as $parameter) {
                $param = new Zend_Server_Method_Parameter(array(
                    'type'     => $this->_fixType($parameter->getType()),
                    'name'     => $parameter->getName(),
                    'optional' => $parameter->isOptional(),
                ));
                if ($parameter->isDefaultValueAvailable()) {
                    $param->setDefaultValue($parameter->getDefaultValue());
                }
                $prototype->addParameter($param);
            }
            $definition->addPrototype($prototype);
        }
        if (is_object($class)) {
            $definition->setObject($class);
        }
        $this->_table->addMethod($definition);
        return $definition;
    }

    /**
     * Dispatch method
     * 
     * @param  Zend_Server_Method_Definition $invocable 
     * @param  array $params 
     * @return mixed
     */
    protected function _dispatch(Zend_Server_Method_Definition $invocable, array $params)
    {
        $callback = $invocable->getCallback();
        $type     = $callback->getType();

        if ('function' == $type) {
            $function = $callback->getFunction();
            return call_user_func_array($function, $params);
        }

        $class  = $callback->getClass();
        $method = $callback->getMethod();

        if ('static' == $type) {
            return call_user_func_array(array($class, $method), $params);
        }

        $object = $invocable->getObject();
        if (!is_object($object)) {
            $invokeArgs = $invocable->getInvokeArguments();
            if (!empty($invokeArgs)) {
                $reflection = new ReflectionClass($class);
                $object     = $reflection->newInstanceArgs($invokeArgs);
            } else {
                $object = new $class;
            }
        }
        return call_user_func_array(array($object, $method), $params);
    }

    /**
     * Map PHP type to protocol type
     * 
     * @param  string $type 
     * @return string
     */
    abstract protected function _fixType($type);
}
PKpG[�q����Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Zend_Server_Reflection exceptions
 *
 * @package Zend_Server
 * @subpackage Reflection
 * @version $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Server_Exception extends Zend_Exception
{
}
PKpG[�v�EEServer/Definition.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Server methods metadata
 *
 * @todo       Implement iterator
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Definition implements Countable, Iterator
{
    /**
     * @var array Array of Zend_Server_Method_Definition objects
     */
    protected $_methods = array();

    /**
     * @var bool Whether or not overwriting existing methods is allowed
     */
    protected $_overwriteExistingMethods = false;

    /**
     * Constructor
     * 
     * @param  null|array $methods 
     * @return void
     */
    public function __construct($methods = null)
    {
        if (is_array($methods)) {
            $this->setMethods($methods);
        }
    }

    /**
     * Set flag indicating whether or not overwriting existing methods is allowed
     * 
     * @param mixed $flag 
     * @return void
     */
    public function setOverwriteExistingMethods($flag)
    {
        $this->_overwriteExistingMethods = (bool) $flag;
        return $this;
    }

    /**
     * Add method to definition
     * 
     * @param  array|Zend_Server_Method_Definition $method 
     * @param  null|string $name 
     * @return Zend_Server_Definition
     * @throws Zend_Server_Exception if duplicate or invalid method provided
     */
    public function addMethod($method, $name = null)
    {
        if (is_array($method)) {
            require_once 'Zend/Server/Method/Definition.php';
            $method = new Zend_Server_Method_Definition($method);
        } elseif (!$method instanceof Zend_Server_Method_Definition) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Invalid method provided');
        }

        if (is_numeric($name)) {
            $name = null;
        }
        if (null !== $name) {
            $method->setName($name);
        } else {
            $name = $method->getName();
        }
        if (null === $name) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('No method name provided');
        }

        if (!$this->_overwriteExistingMethods && array_key_exists($name, $this->_methods)) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception(sprintf('Method by name of "%s" already exists', $name));
        }
        $this->_methods[$name] = $method;
        return $this;
    }

    /**
     * Add multiple methods
     * 
     * @param  array $methods Array of Zend_Server_Method_Definition objects or arrays
     * @return Zend_Server_Definition
     */
    public function addMethods(array $methods)
    {
        foreach ($methods as $key => $method) {
            $this->addMethod($method, $key);
        }
        return $this;
    }

    /**
     * Set all methods at once (overwrite)
     * 
     * @param  array $methods Array of Zend_Server_Method_Definition objects or arrays
     * @return Zend_Server_Definition
     */
    public function setMethods(array $methods)
    {
        $this->clearMethods();
        $this->addMethods($methods);
        return $this;
    }

    /**
     * Does the definition have the given method?
     * 
     * @param  string $method 
     * @return bool
     */
    public function hasMethod($method)
    {
        return array_key_exists($method, $this->_methods);
    }

    /**
     * Get a given method definition
     * 
     * @param  string $method 
     * @return null|Zend_Server_Method_Definition
     */
    public function getMethod($method)
    {
        if ($this->hasMethod($method)) {
            return $this->_methods[$method];
        }
        return false;
    }

    /**
     * Get all method definitions
     * 
     * @return array Array of Zend_Server_Method_Definition objects
     */
    public function getMethods()
    {
        return $this->_methods;
    }

    /**
     * Remove a method definition
     * 
     * @param  string $method 
     * @return Zend_Server_Definition
     */
    public function removeMethod($method)
    {
        if ($this->hasMethod($method)) {
            unset($this->_methods[$method]);
        }
        return $this;
    }

    /**
     * Clear all method definitions
     * 
     * @return Zend_Server_Definition
     */
    public function clearMethods()
    {
        $this->_methods = array();
        return $this;
    }

    /**
     * Cast definition to an array
     * 
     * @return array
     */
    public function toArray()
    {
        $methods = array();
        foreach ($this->getMethods() as $key => $method) {
            $methods[$key] = $method->toArray();
        }
        return $methods;
    }

    /**
     * Countable: count of methods
     * 
     * @return int
     */
    public function count()
    {
        return count($this->_methods);
    }

    /**
     * Iterator: current item
     * 
     * @return mixed
     */
    public function current()
    {
        return current($this->_methods);
    }

    /**
     * Iterator: current item key
     * 
     * @return int|string
     */
    public function key()
    {
        return key($this->_methods);
    }

    /**
     * Iterator: advance to next method
     * 
     * @return void
     */
    public function next()
    {
        return next($this->_methods);
    }

    /**
     * Iterator: return to first method
     * 
     * @return void
     */
    public function rewind()
    {
        return reset($this->_methods);
    }

    /**
     * Iterator: is the current index valid?
     * 
     * @return bool
     */
    public function valid()
    {
        return (bool) $this->current();
    }
}
PKpG[g�v>�
�
Server/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Interface
 *
 * @category Zend
 * @package  Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Interface.php 8064 2008-02-16 10:58:39Z thomas $
 */
interface Zend_Server_Interface
{
    /**
     * Attach a function as a server method
     *
     * Namespacing is primarily for xmlrpc, but may be used with other
     * implementations to prevent naming collisions.
     *
     * @param string $function
     * @param string $namespace
     * @param null|array Optional array of arguments to pass to callbacks at
     * dispatch.
     * @return void
     */
    public function addFunction($function, $namespace = '');

    /**
     * Attach a class to a server
     *
     * The individual implementations should probably allow passing a variable
     * number of arguments in, so that developers may define custom runtime
     * arguments to pass to server methods.
     *
     * Namespacing is primarily for xmlrpc, but could be used for other
     * implementations as well.
     *
     * @param mixed $class Class name or object instance to examine and attach
     * to the server.
     * @param string $namespace Optional namespace with which to prepend method
     * names in the dispatch table.
     * methods in the class will be valid callbacks.
     * @param null|array Optional array of arguments to pass to callbacks at
     * dispatch.
     * @return void
     */
    public function setClass($class, $namespace = '', $argv = null);

    /**
     * Generate a server fault
     *
     * @param mixed $fault
     * @param int $code
     * @return mixed
     */
    public function fault($fault = null, $code = 404);

    /**
     * Handle a request
     *
     * Requests may be passed in, or the server may automagically determine the
     * request based on defaults. Dispatches server request to appropriate
     * method and returns a response
     *
     * @param mixed $request
     * @return mixed
     */
    public function handle($request = false);

    /**
     * Return a server definition array
     *
     * Returns a server definition array as created using
     * {@link * Zend_Server_Reflection}. Can be used for server introspection,
     * documentation, or persistence.
     *
     * @access public
     * @return array
     */
    public function getFunctions();

    /**
     * Load server definition
     *
     * Used for persistence; loads a construct as returned by {@link getFunctions()}.
     *
     * @param array $array
     * @return void
     */
    public function loadFunctions($definition);

    /**
     * Set server persistence
     *
     * @todo Determine how to implement this
     * @param int $mode
     * @return void
     */
    public function setPersistence($mode);
}
PKpG[�8��Server/Reflection.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Zend_Server_Reflection_Function
 */
require_once 'Zend/Server/Reflection/Function.php';

/**
 * Zend_Server_Reflection_Class
 */
require_once 'Zend/Server/Reflection/Class.php';

/**
 * Reflection for determining method signatures to use with server classes
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Reflection.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection
{
    /**
     * Perform class reflection to create dispatch signatures
     *
     * Creates a {@link Zend_Server_Reflection_Class} object for the class or
     * object provided.
     *
     * If extra arguments should be passed to dispatchable methods, these may
     * be provided as an array to $argv.
     *
     * @param string|object $class Class name or object
     * @param null|array $argv Optional arguments to be used during the method call
     * @param string $namespace Optional namespace with which to prefix the
     * method name (used for the signature key). Primarily to avoid collisions,
     * also for XmlRpc namespacing
     * @return Zend_Server_Reflection_Class
     * @throws Zend_Server_Reflection_Exception
     */
    public static function reflectClass($class, $argv = false, $namespace = '')
    {
        if (is_object($class)) {
            $reflection = new ReflectionObject($class);
        } elseif (class_exists($class)) {
            $reflection = new ReflectionClass($class);
        } else {
            throw new Zend_Server_Reflection_Exception('Invalid class or object passed to attachClass()');
        }

        if ($argv && !is_array($argv)) {
            throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass');
        }

        return new Zend_Server_Reflection_Class($reflection, $namespace, $argv);
    }

    /**
     * Perform function reflection to create dispatch signatures
     *
     * Creates dispatch prototypes for a function. It returns a
     * {@link Zend_Server_Reflection_Function} object.
     *
     * If extra arguments should be passed to the dispatchable function, these
     * may be provided as an array to $argv.
     *
     * @param string $function Function name
     * @param null|array $argv Optional arguments to be used during the method call
     * @param string $namespace Optional namespace with which to prefix the
     * function name (used for the signature key). Primarily to avoid
     * collisions, also for XmlRpc namespacing
     * @return Zend_Server_Reflection_Function
     * @throws Zend_Server_Reflection_Exception
     */
    public static function reflectFunction($function, $argv = false, $namespace = '')
    {
        if (!is_string($function) || !function_exists($function)) {
            throw new Zend_Server_Reflection_Exception('Invalid function "' . $function . '" passed to reflectFunction');
        }


        if ($argv && !is_array($argv)) {
            throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass');
        }

        return new Zend_Server_Reflection_Function(new ReflectionFunction($function), $namespace, $argv);
    }
}
PKpG[�IC�\\Server/Cache.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Cache.php 12195 2008-10-30 13:34:35Z matthew $
 */

/**
 * Zend_Server_Cache: cache server definitions
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Cache
{
    /**
     * @var array Methods to skip when caching server
     */
    protected static $_skipMethods = array();

    /**
     * Cache a file containing the dispatch list.
     *
     * Serializes the server definition stores the information
     * in $filename.
     *
     * Returns false on any error (typically, inability to write to file), true
     * on success.
     *
     * @param  string $filename
     * @param  Zend_Server_Interface $server
     * @return bool
     */
    public static function save($filename, Zend_Server_Interface $server)
    {
        if (!is_string($filename)
            || (!file_exists($filename) && !is_writable(dirname($filename))))
        {
            return false;
        }

        $methods = $server->getFunctions();

        if ($methods instanceof Zend_Server_Definition) {
            $definition = new Zend_Server_Definition();
            foreach ($methods as $method) {
                if (in_array($method->getName(), self::$_skipMethods)) {
                    continue;
                }
                $definition->addMethod($method);
            }
            $methods = $definition;
        }

        if (0 === @file_put_contents($filename, serialize($methods))) {
            return false;
        }

        return true;
    }

    /**
     * Load server definition from a file
     *
     * Unserializes a stored server definition from $filename. Returns false if 
     * it fails in any way, true on success.
     *
     * Useful to prevent needing to build the server definition on each 
     * request. Sample usage:
     *
     * <code>
     * if (!Zend_Server_Cache::get($filename, $server)) {
     *     require_once 'Some/Service/Class.php';
     *     require_once 'Another/Service/Class.php';
     *
     *     // Attach Some_Service_Class with namespace 'some'
     *     $server->attach('Some_Service_Class', 'some');
     *
     *     // Attach Another_Service_Class with namespace 'another'
     *     $server->attach('Another_Service_Class', 'another');
     *
     *     Zend_Server_Cache::save($filename, $server);
     * }
     *
     * $response = $server->handle();
     * echo $response;
     * </code>
     *
     * @param  string $filename
     * @param  Zend_Server_Interface $server
     * @return bool
     */
    public static function get($filename, Zend_Server_Interface $server)
    {
        if (!is_string($filename)
            || !file_exists($filename)
            || !is_readable($filename))
        {
            return false;
        }


        if (false === ($dispatch = @file_get_contents($filename))) {
            return false;
        }

        if (false === ($dispatchArray = @unserialize($dispatch))) {
            return false;
        }

        $server->loadFunctions($dispatchArray);

        return true;
    }

    /**
     * Remove a cache file
     *
     * @param  string $filename
     * @return boolean
     */
    public static function delete($filename)
    {
        if (is_string($filename) && file_exists($filename)) {
            unlink($filename);
            return true;
        }

        return false;
    }
}
PKpG[_�?*NNServer/Method/Definition.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Method definition metadata
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Method_Definition
{
    /**
     * @var Zend_Server_Method_Callback
     */
    protected $_callback;

    /**
     * @var array
     */
    protected $_invokeArguments = array();

    /**
     * @var string
     */
    protected $_methodHelp = '';

    /**
     * @var string
     */
    protected $_name;

    /**
     * @var null|object
     */
    protected $_object;

    /**
     * @var array Array of Zend_Server_Method_Prototype objects
     */
    protected $_prototypes = array();

    /**
     * Constructor
     * 
     * @param  null|array $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if ((null !== $options) && is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * Set object state from options
     * 
     * @param  array $options 
     * @return Zend_Server_Method_Definition
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set method name
     * 
     * @param  string $name 
     * @return Zend_Server_Method_Definition
     */
    public function setName($name)
    {
        $this->_name = (string) $name;
        return $this;
    }

    /**
     * Get method name
     * 
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set method callback
     * 
     * @param  array|Zend_Server_Method_Callback $callback 
     * @return Zend_Server_Method_Definition
     */
    public function setCallback($callback)
    {
        if (is_array($callback)) {
            require_once 'Zend/Server/Method/Callback.php';
            $callback = new Zend_Server_Method_Callback($callback);
        } elseif (!$callback instanceof Zend_Server_Method_Callback) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Invalid method callback provided');
        }
        $this->_callback = $callback;
        return $this;
    }

    /**
     * Get method callback
     * 
     * @return Zend_Server_Method_Callback
     */
    public function getCallback()
    {
        return $this->_callback;
    }

    /**
     * Add prototype to method definition
     * 
     * @param  array|Zend_Server_Method_Prototype $prototype 
     * @return Zend_Server_Method_Definition
     */
    public function addPrototype($prototype)
    {
        if (is_array($prototype)) {
            require_once 'Zend/Server/Method/Prototype.php';
            $prototype = new Zend_Server_Method_Prototype($prototype);
        } elseif (!$prototype instanceof Zend_Server_Method_Prototype) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Invalid method prototype provided');
        }
        $this->_prototypes[] = $prototype;
        return $this;
    }

    /**
     * Add multiple prototypes at once
     * 
     * @param  array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
     * @return Zend_Server_Method_Definition
     */
    public function addPrototypes(array $prototypes)
    {
        foreach ($prototypes as $prototype) {
            $this->addPrototype($prototype);
        }
        return $this;
    }

    /**
     * Set all prototypes at once (overwrites)
     * 
     * @param  array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
     * @return Zend_Server_Method_Definition
     */
    public function setPrototypes(array $prototypes)
    {
        $this->_prototypes = array();
        $this->addPrototypes($prototypes);
        return $this;
    }

    /**
     * Get all prototypes
     * 
     * @return array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
     */
    public function getPrototypes()
    {
        return $this->_prototypes;
    }

    /**
     * Set method help
     * 
     * @param  string $methodHelp 
     * @return Zend_Server_Method_Definition
     */
    public function setMethodHelp($methodHelp)
    {
        $this->_methodHelp = (string) $methodHelp;
        return $this;
    }

    /**
     * Get method help
     * 
     * @return string
     */
    public function getMethodHelp()
    {
        return $this->_methodHelp;
    }

    /**
     * Set object to use with method calls
     * 
     * @param  object $object 
     * @return Zend_Server_Method_Definition
     */
    public function setObject($object)
    {
        if (!is_object($object) && (null !== $object)) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Invalid object passed to ' . __CLASS__ . '::' . __METHOD__);
        }
        $this->_object = $object;
        return $this;
    }

    /**
     * Get object to use with method calls
     * 
     * @return null|object
     */
    public function getObject()
    {
        return $this->_object;
    }

    /**
     * Set invoke arguments
     *
     * @param  array $invokeArguments
     * @return Zend_Server_Method_Definition
     */
    public function setInvokeArguments(array $invokeArguments)
    {
        $this->_invokeArguments = $invokeArguments;
        return $this;
    }

    /**
     * Retrieve invoke arguments
     *
     * @return array
     */
    public function getInvokeArguments()
    {
        return $this->_invokeArguments;
    }

    /**
     * Serialize to array
     * 
     * @return array
     */
    public function toArray()
    {
        $prototypes = $this->getPrototypes();
        $signatures = array();
        foreach ($prototypes as $prototype) {
            $signatures[] = $prototype->toArray();
        }

        return array(
            'name'            => $this->getName(),
            'callback'        => $this->getCallback()->toArray(),
            'prototypes'      => $signatures,
            'methodHelp'      => $this->getMethodHelp(),
            'invokeArguments' => $this->getInvokeArguments(),
            'object'          => $this->getObject(),
        );
    }
}
PKpG[J�V��Server/Method/Parameter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Method parameter metadata
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Method_Parameter
{
    /**
     * @var mixed Default parameter value
     */
    protected $_defaultValue;

    /**
     * @var string Parameter description
     */
    protected $_description = '';

    /**
     * @var string Parameter variable name
     */
    protected $_name;

    /**
     * @var bool Is parameter optional?
     */
    protected $_optional = false;

    /**
     * @var string Parameter type
     */
    protected $_type = 'mixed';

    /**
     * Constructor
     * 
     * @param  null|array $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * Set object state from array of options
     * 
     * @param  array $options 
     * @return Zend_Server_Method_Parameter
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set default value
     *
     * @param  mixed $defaultValue
     * @return Zend_Server_Method_Parameter
     */
    public function setDefaultValue($defaultValue)
    {
        $this->_defaultValue = $defaultValue;
        return $this;
    }

    /**
     * Retrieve default value
     *
     * @return mixed
     */
    public function getDefaultValue()
    {
        return $this->_defaultValue;
    }

    /**
     * Set description
     *
     * @param  string $description
     * @return Zend_Server_Method_Parameter
     */
    public function setDescription($description)
    {
        $this->_description = (string) $description;
        return $this;
    }

    /**
     * Retrieve description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set name
     *
     * @param  string $name
     * @return Zend_Server_Method_Parameter
     */
    public function setName($name)
    {
        $this->_name = (string) $name;
        return $this;
    }

    /**
     * Retrieve name
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Set optional flag
     * 
     * @param  bool $flag 
     * @return Zend_Server_Method_Parameter
     */
    public function setOptional($flag)
    {
        $this->_optional = (bool) $flag;
        return $this;
    }

    /**
     * Is the parameter optional?
     * 
     * @return bool
     */
    public function isOptional()
    {
        return $this->_optional;
    }

    /**
     * Set parameter type
     * 
     * @param  string $type 
     * @return Zend_Server_Method_Parameter
     */
    public function setType($type)
    {
        $this->_type = (string) $type;
        return $this;
    }

    /**
     * Retrieve parameter type
     * 
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Cast to array
     * 
     * @return array
     */
    public function toArray()
    {
        return array(
            'type'         => $this->getType(),
            'name'         => $this->getName(),
            'optional'     => $this->isOptional(),
            'defaultValue' => $this->getDefaultValue(),
            'description'  => $this->getDescription(),
        );
    }
}
PKpG[��T���Server/Method/Prototype.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Method prototype metadata
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Method_Prototype
{
    /**
     * @var string Return type
     */
    protected $_returnType = 'void';

    /**
     * @var array Map parameter names to parameter index
     */
    protected $_parameterNameMap = array();

    /**
     * @var array Method parameters
     */
    protected $_parameters = array();

    /**
     * Constructor 
     * 
     * @param  null|array $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if ((null !== $options) && is_array($options)) {
            $this->setOptions($options);
        }
    }

    /**
     * Set return value
     *
     * @param  string $returnType
     * @return Zend_Server_Method_Prototype
     */
    public function setReturnType($returnType)
    {
        $this->_returnType = $returnType;
        return $this;
    }

    /**
     * Retrieve return type
     *
     * @return string
     */
    public function getReturnType()
    {
        return $this->_returnType;
    }

    /**
     * Add a parameter
     * 
     * @param  string $parameter 
     * @return Zend_Server_Method_Prototype
     */
    public function addParameter($parameter)
    {
        if ($parameter instanceof Zend_Server_Method_Parameter) {
            $this->_parameters[] = $parameter;
            if (null !== ($name = $parameter->getName())) {
                $this->_parameterNameMap[$name] = count($this->_parameters) - 1;
            }
        } else {
            require_once 'Zend/Server/Method/Parameter.php';
            $parameter = new Zend_Server_Method_Parameter(array(
                'type' => (string) $parameter,
            ));
            $this->_parameters[] = $parameter;
        }
        return $this;
    }

    /**
     * Add parameters
     * 
     * @param  array $parameter 
     * @return Zend_Server_Method_Prototype
     */
    public function addParameters(array $parameters)
    {
        foreach ($parameters as $parameter) {
            $this->addParameter($parameter);
        }
        return $this;
    }

    /**
     * Set parameters
     *
     * @param  array $parameters
     * @return Zend_Server_Method_Prototype
     */
    public function setParameters(array $parameters)
    {
        $this->_parameters       = array();
        $this->_parameterNameMap = array();
        $this->addParameters($parameters);
        return $this;
    }

    /**
     * Retrieve parameters as list of types
     *
     * @return array
     */
    public function getParameters()
    {
        $types = array();
        foreach ($this->_parameters as $parameter) {
            $types[] = $parameter->getType();
        }
        return $types;
    }

    /**
     * Get parameter objects
     * 
     * @return array
     */
    public function getParameterObjects()
    {
        return $this->_parameters;
    }

    /**
     * Retrieve a single parameter by name or index
     * 
     * @param  string|int $index 
     * @return null|Zend_Server_Method_Parameter
     */
    public function getParameter($index)
    {
        if (!is_string($index) && !is_numeric($index)) {
            return null;
        }
        if (array_key_exists($index, $this->_parameterNameMap)) {
            $index = $this->_parameterNameMap[$index];
        }
        if (array_key_exists($index, $this->_parameters)) {
            return $this->_parameters[$index];
        }
        return null;
    }

    /**
     * Set object state from array
     * 
     * @param  array $options 
     * @return Zend_Server_Method_Prototype
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Serialize to array
     * 
     * @return array
     */
    public function toArray()
    {
        return array(
            'returnType' => $this->getReturnType(),
            'parameters' => $this->getParameters(),
        );
    }
}
PKpG[:�Server/Method/Callback.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Method callback metadata
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Method
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Method_Callback
{
    /**
     * @var string Class name for class method callback
     */
    protected $_class;

    /**
     * @var string Function name for function callback
     */
    protected $_function;

    /**
     * @var string Method name for class method callback
     */
    protected $_method;

    /**
     * @var string Callback type
     */
    protected $_type;

    /**
     * @var array Valid callback types
     */
    protected $_types = array('function', 'static', 'instance');

    /**
     * Constructor
     * 
     * @param  null|array $options 
     * @return void
     */
    public function __construct($options = null)
    {
        if ((null !== $options) && is_array($options))  {
            $this->setOptions($options);
        }
    }

    /**
     * Set object state from array of options
     * 
     * @param  array $options 
     * @return Zend_Server_Method_Callback
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (method_exists($this, $method)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    /**
     * Set callback class
     * 
     * @param  string $class 
     * @return Zend_Server_Method_Callback
     */
    public function setClass($class)
    {
        if (is_object($class)) {
            $class = get_class($class);
        }
        $this->_class = $class;
        return $this;
    }

    /**
     * Get callback class
     * 
     * @return string|null
     */
    public function getClass()
    {
        return $this->_class;
    }

    /**
     * Set callback function
     * 
     * @param  string $function 
     * @return Zend_Server_Method_Callback
     */
    public function setFunction($function)
    {
        $this->_function = (string) $function;
        $this->setType('function');
        return $this;
    }

    /**
     * Get callback function
     * 
     * @return null|string
     */
    public function getFunction()
    {
        return $this->_function;
    }

    /**
     * Set callback class method
     * 
     * @param  string $method 
     * @return Zend_Server_Method_Callback
     */
    public function setMethod($method)
    {
        $this->_method = $method;
        return $this;
    }

    /**
     * Get callback class  method
     * 
     * @return null|string
     */
    public function getMethod()
    {
        return $this->_method;
    }

    /**
     * Set callback type
     * 
     * @param  string $type 
     * @return Zend_Server_Method_Callback
     * @throws Zend_Server_Exception
     */
    public function setType($type)
    {
        if (!in_array($type, $this->_types)) {
            require_once 'Zend/Server/Exception.php';
            throw new Zend_Server_Exception('Invalid method callback type  passed to ' . __CLASS__ . '::' . __METHOD__);
        }
        $this->_type = $type;
        return $this;
    }

    /**
     * Get callback type
     * 
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Cast callback to array
     * 
     * @return array
     */
    public function toArray()
    {
        $type = $this->getType();
        $array = array(
            'type' => $type,
        );
        if ('function' == $type) {
            $array['function'] = $this->getFunction();
        } else {
            $array['class']  = $this->getClass();
            $array['method'] = $this->getMethod();
        }
        return $array;
    }
}
PKpG[nI��
�
Server/Reflection/Prototype.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Zend_Server_Reflection_ReturnValue
 */
require_once 'Zend/Server/Reflection/ReturnValue.php';

/**
 * Zend_Server_Reflection_Parameter
 */
require_once 'Zend/Server/Reflection/Parameter.php';

/**
 * Method/Function prototypes
 *
 * Contains accessors for the return value and all method arguments.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Prototype.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Prototype
{
    /**
     * Constructor
     *
     * @param Zend_Server_Reflection_ReturnValue $return
     * @param array $params
     * @return void
     */
    public function __construct(Zend_Server_Reflection_ReturnValue $return, $params = null)
    {
        $this->_return = $return;

        if (!is_array($params) && (null !== $params)) {
            throw new Zend_Server_Reflection_Exception('Invalid parameters');
        }

        if (is_array($params)) {
            foreach ($params as $param) {
                if (!$param instanceof Zend_Server_Reflection_Parameter) {
                    throw new Zend_Server_Reflection_Exception('One or more params are invalid');
                }
            }
        }

        $this->_params = $params;
    }

    /**
     * Retrieve return type
     *
     * @return string
     */
    public function getReturnType()
    {
        return $this->_return->getType();
    }

    /**
     * Retrieve the return value object
     *
     * @access public
     * @return Zend_Server_Reflection_ReturnValue
     */
    public function getReturnValue()
    {
        return $this->_return;
    }

    /**
     * Retrieve method parameters
     *
     * @return array Array of {@link Zend_Server_Reflection_Parameter}s
     */
    public function getParameters()
    {
        return $this->_params;
    }
}
PKpG[]��
�
!Server/Reflection/ReturnValue.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Return value reflection
 *
 * Stores the return value type and description
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: ReturnValue.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_ReturnValue
{
    /**
     * Return value type
     * @var string
     */
    protected $_type;

    /**
     * Return value description
     * @var string
     */
    protected $_description;

    /**
     * Constructor
     *
     * @param string $type Return value type
     * @param string $description Return value type
     */
    public function __construct($type = 'mixed', $description = '')
    {
        $this->setType($type);
        $this->setDescription($description);
    }

    /**
     * Retrieve parameter type
     *
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Set parameter type
     *
     * @param string|null $type
     * @return void
     */
    public function setType($type)
    {
        if (!is_string($type) && (null !== $type)) {
            throw new Zend_Server_Reflection_Exception('Invalid parameter type');
        }

        $this->_type = $type;
    }

    /**
     * Retrieve parameter description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set parameter description
     *
     * @param string|null $description
     * @return void
     */
    public function setDescription($description)
    {
        if (!is_string($description) && (null !== $description)) {
            throw new Zend_Server_Reflection_Exception('Invalid parameter description');
        }

        $this->_description = $description;
    }
}
PKpG[�3�Server/Reflection/Function.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Function_Abstract
 */
require_once 'Zend/Server/Reflection/Function/Abstract.php';

/**
 * Function Reflection
 *
 * @uses       Zend_Server_Reflection_Function_Abstract
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Function.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Function extends Zend_Server_Reflection_Function_Abstract
{
}
PKpG[mu�v��Server/Reflection/Class.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Method
 */
require_once 'Zend/Server/Reflection/Method.php';

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Class/Object reflection
 *
 * Proxies calls to a ReflectionClass object, and decorates getMethods() by
 * creating its own list of {@link Zend_Server_Reflection_Method}s.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Class.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Class
{
    /**
     * Optional configuration parameters; accessible via {@link __get} and
     * {@link __set()}
     * @var array
     */
    protected $_config = array();

    /**
     * Array of {@link Zend_Server_Reflection_Method}s
     * @var array
     */
    protected $_methods = array();

    /**
     * Namespace
     * @var string
     */
    protected $_namespace = null;

    /**
     * ReflectionClass object
     * @var ReflectionClass
     */
    protected $_reflection;

    /**
     * Constructor
     *
     * Create array of dispatchable methods, each a
     * {@link Zend_Server_Reflection_Method}. Sets reflection object property.
     *
     * @param ReflectionClass $reflection
     * @param string $namespace
     * @param mixed $argv
     * @return void
     */
    public function __construct(ReflectionClass $reflection, $namespace = null, $argv = false)
    {
        $this->_reflection = $reflection;
        $this->setNamespace($namespace);

        foreach ($reflection->getMethods() as $method) {
            // Don't aggregate magic methods
            if ('__' == substr($method->getName(), 0, 2)) {
                continue;
            }

            if ($method->isPublic()) {
                // Get signatures and description
                $this->_methods[] = new Zend_Server_Reflection_Method($this, $method, $this->getNamespace(), $argv);
            }
        }
    }

    /**
     * Proxy reflection calls
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (method_exists($this->_reflection, $method)) {
            return call_user_func_array(array($this->_reflection, $method), $args);
        }

        throw new Zend_Server_Reflection_Exception('Invalid reflection method');
    }

    /**
     * Retrieve configuration parameters
     *
     * Values are retrieved by key from {@link $_config}. Returns null if no
     * value found.
     *
     * @param string $key
     * @return mixed
     */
    public function __get($key)
    {
        if (isset($this->_config[$key])) {
            return $this->_config[$key];
        }

        return null;
    }

    /**
     * Set configuration parameters
     *
     * Values are stored by $key in {@link $_config}.
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function __set($key, $value)
    {
        $this->_config[$key] = $value;
    }

    /**
     * Return array of dispatchable {@link Zend_Server_Reflection_Method}s.
     *
     * @access public
     * @return array
     */
    public function getMethods()
    {
        return $this->_methods;
    }

    /**
     * Get namespace for this class
     *
     * @return string
     */
    public function getNamespace()
    {
        return $this->_namespace;
    }

    /**
     * Set namespace for this class
     *
     * @param string $namespace
     * @return void
     */
    public function setNamespace($namespace)
    {
        if (empty($namespace)) {
            $this->_namespace = '';
            return;
        }

        if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) {
            throw new Zend_Server_Reflection_Exception('Invalid namespace');
        }

        $this->_namespace = $namespace;
    }

    /**
     * Wakeup from serialization
     *
     * Reflection needs explicit instantiation to work correctly. Re-instantiate
     * reflection object on wakeup.
     *
     * @return void
     */
    public function __wakeup()
    {
        $this->_reflection = new ReflectionClass($this->getName());
    }
}
PKpG[�i���Server/Reflection/Node.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Node Tree class for Zend_Server reflection operations
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @version $Id: Node.php 12619 2008-11-13 15:24:29Z alexander $
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Server_Reflection_Node
{
    /**
     * Node value
     * @var mixed
     */
    protected $_value = null;

    /**
     * Array of child nodes (if any)
     * @var array
     */
    protected $_children = array();

    /**
     * Parent node (if any)
     * @var Zend_Server_Reflection_Node
     */
    protected $_parent = null;

    /**
     * Constructor
     *
     * @param mixed $value
     * @param Zend_Server_Reflection_Node $parent Optional
     * @return Zend_Server_Reflection_Node
     */
    public function __construct($value, Zend_Server_Reflection_Node $parent = null)
    {
        $this->_value = $value;
        if (null !== $parent) {
            $this->setParent($parent, true);
        }

        return $this;
    }

    /**
     * Set parent node
     *
     * @param Zend_Server_Reflection_Node $node
     * @param boolean $new Whether or not the child node is newly created
     * and should always be attached
     * @return void
     */
    public function setParent(Zend_Server_Reflection_Node $node, $new = false)
    {
        $this->_parent = $node;

        if ($new) {
            $node->attachChild($this);
            return;
        }
    }

    /**
     * Create and attach a new child node
     *
     * @param mixed $value
     * @access public
     * @return Zend_Server_Reflection_Node New child node
     */
    public function createChild($value)
    {
        $child = new self($value, $this);

        return $child;
    }

    /**
     * Attach a child node
     *
     * @param Zend_Server_Reflection_Node $node
     * @return void
     */
    public function attachChild(Zend_Server_Reflection_Node $node)
    {
        $this->_children[] = $node;

        if ($node->getParent() !== $this) {
            $node->setParent($this);
        }
    }

    /**
     * Return an array of all child nodes
     *
     * @return array
     */
    public function getChildren()
    {
        return $this->_children;
    }

    /**
     * Does this node have children?
     *
     * @return boolean
     */
    public function hasChildren()
    {
        return count($this->_children) > 0;
    }

    /**
     * Return the parent node
     *
     * @return null|Zend_Server_Reflection_Node
     */
    public function getParent()
    {
        return $this->_parent;
    }

    /**
     * Return the node's current value
     *
     * @return mixed
     */
    public function getValue()
    {
        return $this->_value;
    }

    /**
     * Set the node value
     *
     * @param mixed $value
     * @return void
     */
    public function setValue($value)
    {
        $this->_value = $value;
    }

    /**
     * Retrieve the bottommost nodes of this node's tree
     *
     * Retrieves the bottommost nodes of the tree by recursively calling
     * getEndPoints() on all children. If a child is null, it returns the parent
     * as an end point.
     *
     * @return array
     */
    public function getEndPoints()
    {
        $endPoints = array();
        if (!$this->hasChildren()) {
            return $endPoints;
        }

        foreach ($this->_children as $child) {
            $value = $child->getValue();

            if (null === $value) {
                $endPoints[] = $this;
            } elseif ((null !== $value)
                && $child->hasChildren())
            {
                $childEndPoints = $child->getEndPoints();
                if (!empty($childEndPoints)) {
                    $endPoints = array_merge($endPoints, $childEndPoints);
                }
            } elseif ((null !== $value) && !$child->hasChildren()) {
                $endPoints[] = $child;
            }
        }

        return $endPoints;
    }
}
PKpG[:��m��Server/Reflection/Parameter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Parameter Reflection
 *
 * Decorates a ReflectionParameter to allow setting the parameter type
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Parameter.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Parameter
{
    /**
     * @var ReflectionParameter
     */
    protected $_reflection;

    /**
     * Parameter position
     * @var int
     */
    protected $_position;

    /**
     * Parameter type
     * @var string
     */
    protected $_type;

    /**
     * Parameter description
     * @var string
     */
    protected $_description;

    /**
     * Constructor
     *
     * @param ReflectionParameter $r
     * @param string $type Parameter type
     * @param string $description Parameter description
     */
    public function __construct(ReflectionParameter $r, $type = 'mixed', $description = '')
    {
        $this->_reflection = $r;
        $this->setType($type);
        $this->setDescription($description);
    }

    /**
     * Proxy reflection calls
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (method_exists($this->_reflection, $method)) {
            return call_user_func_array(array($this->_reflection, $method), $args);
        }

        throw new Zend_Server_Reflection_Exception('Invalid reflection method');
    }

    /**
     * Retrieve parameter type
     *
     * @return string
     */
    public function getType()
    {
        return $this->_type;
    }

    /**
     * Set parameter type
     *
     * @param string|null $type
     * @return void
     */
    public function setType($type)
    {
        if (!is_string($type) && (null !== $type)) {
            throw new Zend_Server_Reflection_Exception('Invalid parameter type');
        }

        $this->_type = $type;
    }

    /**
     * Retrieve parameter description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Set parameter description
     *
     * @param string|null $description
     * @return void
     */
    public function setDescription($description)
    {
        if (!is_string($description) && (null !== $description)) {
            throw new Zend_Server_Reflection_Exception('Invalid parameter description');
        }

        $this->_description = $description;
    }

    /**
     * Set parameter position
     *
     * @param int $index
     * @return void
     */
    public function setPosition($index)
    {
        $this->_position = (int) $index;
    }

    /**
     * Return parameter position
     *
     * @return int
     */
    public function getPosition()
    {
        return $this->_position;
    }
}
PKpG[*R�Ō�Server/Reflection/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * Zend_Server_Reflection exceptions
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Exception.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Exception extends Zend_Exception
{
}
PKpG[����;�;'Server/Reflection/Function/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Exception
 */
require_once 'Zend/Server/Reflection/Exception.php';

/**
 * Zend_Server_Reflection_Node
 */
require_once 'Zend/Server/Reflection/Node.php';

/**
 * Zend_Server_Reflection_Parameter
 */
require_once 'Zend/Server/Reflection/Parameter.php';

/**
 * Zend_Server_Reflection_Prototype
 */
require_once 'Zend/Server/Reflection/Prototype.php';

/**
 * Function/Method Reflection
 *
 * Decorates a ReflectionFunction. Allows setting and retrieving an alternate
 * 'service' name (i.e., the name to be used when calling via a service),
 * setting and retrieving the description (originally set using the docblock
 * contents), retrieving the callback and callback type, retrieving additional
 * method invocation arguments, and retrieving the
 * method {@link Zend_Server_Reflection_Prototype prototypes}.
 *
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Abstract.php 12619 2008-11-13 15:24:29Z alexander $
 */
abstract class Zend_Server_Reflection_Function_Abstract
{
    /**
     * @var ReflectionFunction
     */
    protected $_reflection;

    /**
     * Additional arguments to pass to method on invocation
     * @var array
     */
    protected $_argv = array();

    /**
     * Used to store extra configuration for the method (typically done by the
     * server class, e.g., to indicate whether or not to instantiate a class).
     * Associative array; access is as properties via {@link __get()} and
     * {@link __set()}
     * @var array
     */
    protected $_config = array();

    /**
     * Declaring class (needed for when serialization occurs)
     * @var string
     */
    protected $_class;

    /**
     * Function/method description
     * @var string
     */
    protected $_description = '';

    /**
     * Namespace with which to prefix function/method name
     * @var string
     */
    protected $_namespace;

    /**
     * Prototypes
     * @var array
     */
    protected $_prototypes = array();

    private $_return;
    private $_returnDesc;
    private $_paramDesc;
    private $_sigParams;
    private $_sigParamsDepth;

    /**
     * Constructor
     *
     * @param ReflectionFunction $r
     */
    public function __construct(Reflector $r, $namespace = null, $argv = array())
    {
        // In PHP 5.1.x, ReflectionMethod extends ReflectionFunction. In 5.2.x,
        // both extend ReflectionFunctionAbstract. So, we can't do normal type
        // hinting in the prototype, but instead need to do some explicit
        // testing here.
        if ((!$r instanceof ReflectionFunction)
            && (!$r instanceof ReflectionMethod)) {
            throw new Zend_Server_Reflection_Exception('Invalid reflection class');
        }
        $this->_reflection = $r;

        // Determine namespace
        if (null !== $namespace){
            $this->setNamespace($namespace);
        }

        // Determine arguments
        if (is_array($argv)) {
            $this->_argv = $argv;
        }

        // If method call, need to store some info on the class
        if ($r instanceof ReflectionMethod) {
            $this->_class = $r->getDeclaringClass()->getName();
        }

        // Perform some introspection
        $this->_reflect();
    }

    /**
     * Create signature node tree
     *
     * Recursive method to build the signature node tree. Increments through
     * each array in {@link $_sigParams}, adding every value of the next level
     * to the current value (unless the current value is null).
     *
     * @param Zend_Server_Reflection_Node $parent
     * @param int $level
     * @return void
     */
    protected function _addTree(Zend_Server_Reflection_Node $parent, $level = 0)
    {
        if ($level >= $this->_sigParamsDepth) {
            return;
        }

        foreach ($this->_sigParams[$level] as $value) {
            $node = new Zend_Server_Reflection_Node($value, $parent);
            if ((null !== $value) && ($this->_sigParamsDepth > $level + 1)) {
                $this->_addTree($node, $level + 1);
            }
        }
    }

    /**
     * Build the signature tree
     *
     * Builds a signature tree starting at the return values and descending
     * through each method argument. Returns an array of
     * {@link Zend_Server_Reflection_Node}s.
     *
     * @return array
     */
    protected function _buildTree()
    {
        $returnTree = array();
        foreach ((array) $this->_return as $value) {
            $node = new Zend_Server_Reflection_Node($value);
            $this->_addTree($node);
            $returnTree[] = $node;
        }

        return $returnTree;
    }

    /**
     * Build method signatures
     *
     * Builds method signatures using the array of return types and the array of
     * parameters types
     *
     * @param array $return Array of return types
     * @param string $returnDesc Return value description
     * @param array $params Array of arguments (each an array of types)
     * @param array $paramDesc Array of parameter descriptions
     * @return array
     */
    protected function _buildSignatures($return, $returnDesc, $paramTypes, $paramDesc)
    {
        $this->_return         = $return;
        $this->_returnDesc     = $returnDesc;
        $this->_paramDesc      = $paramDesc;
        $this->_sigParams      = $paramTypes;
        $this->_sigParamsDepth = count($paramTypes);
        $signatureTrees        = $this->_buildTree();
        $signatures            = array();

        $endPoints = array();
        foreach ($signatureTrees as $root) {
            $tmp = $root->getEndPoints();
            if (empty($tmp)) {
                $endPoints = array_merge($endPoints, array($root));
            } else {
                $endPoints = array_merge($endPoints, $tmp);
            }
        }

        foreach ($endPoints as $node) {
            if (!$node instanceof Zend_Server_Reflection_Node) {
                continue;
            }

            $signature = array();
            do {
                array_unshift($signature, $node->getValue());
                $node = $node->getParent();
            } while ($node instanceof Zend_Server_Reflection_Node);

            $signatures[] = $signature;
        }

        // Build prototypes
        $params = $this->_reflection->getParameters();
        foreach ($signatures as $signature) {
            $return = new Zend_Server_Reflection_ReturnValue(array_shift($signature), $this->_returnDesc);
            $tmp    = array();
            foreach ($signature as $key => $type) {
                $param = new Zend_Server_Reflection_Parameter($params[$key], $type, $this->_paramDesc[$key]);
                $param->setPosition($key);
                $tmp[] = $param;
            }

            $this->_prototypes[] = new Zend_Server_Reflection_Prototype($return, $tmp);
        }
    }

    /**
     * Use code reflection to create method signatures
     *
     * Determines the method help/description text from the function DocBlock
     * comment. Determines method signatures using a combination of
     * ReflectionFunction and parsing of DocBlock @param and @return values.
     *
     * @param ReflectionFunction $function
     * @return array
     */
    protected function _reflect()
    {
        $function           = $this->_reflection;
        $helpText           = '';
        $signatures         = array();
        $returnDesc         = '';
        $paramCount         = $function->getNumberOfParameters();
        $paramCountRequired = $function->getNumberOfRequiredParameters();
        $parameters         = $function->getParameters();
        $docBlock           = $function->getDocComment();

        if (!empty($docBlock)) {
            // Get help text
            if (preg_match(':/\*\*\s*\r?\n\s*\*\s(.*?)\r?\n\s*\*(\s@|/):s', $docBlock, $matches))
            {
                $helpText = $matches[1];
                $helpText = preg_replace('/(^\s*\*\s)/m', '', $helpText);
                $helpText = preg_replace('/\r?\n\s*\*\s*(\r?\n)*/s', "\n", $helpText);
                $helpText = trim($helpText);
            }

            // Get return type(s) and description
            $return     = 'void';
            if (preg_match('/@return\s+(\S+)/', $docBlock, $matches)) {
                $return = explode('|', $matches[1]);
                if (preg_match('/@return\s+\S+\s+(.*?)(@|\*\/)/s', $docBlock, $matches))
                {
                    $value = $matches[1];
                    $value = preg_replace('/\s?\*\s/m', '', $value);
                    $value = preg_replace('/\s{2,}/', ' ', $value);
                    $returnDesc = trim($value);
                }
            }

            // Get param types and description
            if (preg_match_all('/@param\s+([^\s]+)/m', $docBlock, $matches)) {
                $paramTypesTmp = $matches[1];
                if (preg_match_all('/@param\s+\S+\s+(\$^\S+)\s+(.*?)(@|\*\/)/s', $docBlock, $matches))
                {
                    $paramDesc = $matches[2];
                    foreach ($paramDesc as $key => $value) {
                        $value = preg_replace('/\s?\*\s/m', '', $value);
                        $value = preg_replace('/\s{2,}/', ' ', $value);
                        $paramDesc[$key] = trim($value);
                    }
                }
            }
        } else {
            $helpText = $function->getName();
            $return   = 'void';
        }

        // Set method description
        $this->setDescription($helpText);

        // Get all param types as arrays
        if (!isset($paramTypesTmp) && (0 < $paramCount)) {
            $paramTypesTmp = array_fill(0, $paramCount, 'mixed');
        } elseif (!isset($paramTypesTmp)) {
            $paramTypesTmp = array();
        } elseif (count($paramTypesTmp) < $paramCount) {
            $start = $paramCount - count($paramTypesTmp);
            for ($i = $start; $i < $paramCount; ++$i) {
                $paramTypesTmp[$i] = 'mixed';
            }
        }

        // Get all param descriptions as arrays
        if (!isset($paramDesc) && (0 < $paramCount)) {
            $paramDesc = array_fill(0, $paramCount, '');
        } elseif (!isset($paramDesc)) {
            $paramDesc = array();
        } elseif (count($paramDesc) < $paramCount) {
            $start = $paramCount - count($paramDesc);
            for ($i = $start; $i < $paramCount; ++$i) {
                $paramDesc[$i] = '';
            }
        }

        if (count($paramTypesTmp) != $paramCount) {
            throw new Zend_Server_Reflection_Exception(
               'Variable number of arguments is not supported for services (except optional parameters). '
             . 'Number of function arguments must currespond to actual number of arguments described in a docblock.');
        }

        $paramTypes = array();
        foreach ($paramTypesTmp as $i => $param) {
            $tmp = explode('|', $param);
            if ($parameters[$i]->isOptional()) {
                array_unshift($tmp, null);
            }
            $paramTypes[] = $tmp;
        }

        $this->_buildSignatures($return, $returnDesc, $paramTypes, $paramDesc);
    }


    /**
     * Proxy reflection calls
     *
     * @param string $method
     * @param array $args
     * @return mixed
     */
    public function __call($method, $args)
    {
        if (method_exists($this->_reflection, $method)) {
            return call_user_func_array(array($this->_reflection, $method), $args);
        }

        throw new Zend_Server_Reflection_Exception('Invalid reflection method ("' .$method. '")');
    }

    /**
     * Retrieve configuration parameters
     *
     * Values are retrieved by key from {@link $_config}. Returns null if no
     * value found.
     *
     * @param string $key
     * @return mixed
     */
    public function __get($key)
    {
        if (isset($this->_config[$key])) {
            return $this->_config[$key];
        }

        return null;
    }

    /**
     * Set configuration parameters
     *
     * Values are stored by $key in {@link $_config}.
     *
     * @param string $key
     * @param mixed $value
     * @return void
     */
    public function __set($key, $value)
    {
        $this->_config[$key] = $value;
    }

    /**
     * Set method's namespace
     *
     * @param string $namespace
     * @return void
     */
    public function setNamespace($namespace)
    {
        if (empty($namespace)) {
            $this->_namespace = '';
            return;
        }

        if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) {
            throw new Zend_Server_Reflection_Exception('Invalid namespace');
        }

        $this->_namespace = $namespace;
    }

    /**
     * Return method's namespace
     *
     * @return string
     */
    public function getNamespace()
    {
        return $this->_namespace;
    }

    /**
     * Set the description
     *
     * @param string $string
     * @return void
     */
    public function setDescription($string)
    {
        if (!is_string($string)) {
            throw new Zend_Server_Reflection_Exception('Invalid description');
        }

        $this->_description = $string;
    }

    /**
     * Retrieve the description
     *
     * @return void
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Retrieve all prototypes as array of
     * {@link Zend_Server_Reflection_Prototype Zend_Server_Reflection_Prototypes}
     *
     * @return array
     */
    public function getPrototypes()
    {
        return $this->_prototypes;
    }

    /**
     * Retrieve additional invocation arguments
     *
     * @return array
     */
    public function getInvokeArguments()
    {
        return $this->_argv;
    }

    /**
     * Wakeup from serialization
     *
     * Reflection needs explicit instantiation to work correctly. Re-instantiate
     * reflection object on wakeup.
     *
     * @return void
     */
    public function __wakeup()
    {
        if ($this->_reflection instanceof ReflectionMethod) {
            $class = new ReflectionClass($this->_class);
            $this->_reflection = new ReflectionMethod($class->newInstance(), $this->getName());
        } else {
            $this->_reflection = new ReflectionFunction($this->getName());
        }
    }
}
PKpG[qt�rrServer/Reflection/Method.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Server
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Server_Reflection_Function_Abstract
 */
require_once 'Zend/Server/Reflection/Function/Abstract.php';

/**
 * Method Reflection
 *
 * @uses       Zend_Server_Reflection_Function_Abstract
 * @category   Zend
 * @package    Zend_Server
 * @subpackage Reflection
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version $Id: Method.php 12619 2008-11-13 15:24:29Z alexander $
 */
class Zend_Server_Reflection_Method extends Zend_Server_Reflection_Function_Abstract
{
    /**
     * Parent class name
     * @var string
     */
    protected $_class;

    /**
     * Parent class reflection
     * @var Zend_Server_Reflection_Class
     */
    protected $_classReflection;

    /**
     * Constructor
     *
     * @param Zend_Server_Reflection_Class $class
     * @param ReflectionMethod $r
     * @param string $namespace
     * @param array $argv
     * @return void
     */
    public function __construct(Zend_Server_Reflection_Class $class, ReflectionMethod $r, $namespace = null, $argv = array())
    {
        $this->_classReflection = $class;
        $this->_reflection      = $r;

        $classNamespace = $class->getNamespace();

        // Determine namespace
        if (!empty($namespace)) {
            $this->setNamespace($namespace);
        } elseif (!empty($classNamespace)) {
            $this->setNamespace($classNamespace);
        }

        // Determine arguments
        if (is_array($argv)) {
            $this->_argv = $argv;
        }

        // If method call, need to store some info on the class
        $this->_class = $class->getName();

        // Perform some introspection
        $this->_reflect();
    }

    /**
     * Return the reflection for the class that defines this method
     *
     * @return Zend_Server_Reflection_Class
     */
    public function getDeclaringClass()
    {
        return $this->_classReflection;
    }

    /**
     * Wakeup from serialization
     *
     * Reflection needs explicit instantiation to work correctly. Re-instantiate
     * reflection object on wakeup.
     *
     * @return void
     */
    public function __wakeup()
    {
        $this->_classReflection = new Zend_Server_Reflection_Class(new ReflectionClass($this->_class), $this->getNamespace(), $this->getInvokeArguments());
        $this->_reflection = new ReflectionMethod($this->_classReflection->getName(), $this->getName());
    }

}
PKpG[�-+�e�e�Locale/Format.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @subpackage Format
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Format.php 12057 2008-10-21 17:19:43Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * include needed classes
 */
require_once 'Zend/Locale/Data.php';

/**
 * @category   Zend
 * @package    Zend_Locale
 * @subpackage Format
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Format
{
    const STANDARD   = 'STANDARD';

    private static $_options = array('date_format'   => null,
                                     'number_format' => null,
                                     'format_type'   => 'iso',
                                     'fix_date'      => false,
                                     'locale'        => null,
                                     'cache'         => null,
                                     'precision'     => null);

    private static $_signs = array(
        'Latn' => array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'), // Latn - default latin
        'Arab' => array( '٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩'), // 0660 - 0669 arabic
        'Deva' => array( '०', '१', '२', '३', '४', '५', '६', '७', '८', '९'), // 0966 - 096F devanagari
        'Beng' => array( '০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'), // 09E6 - 09EF bengali
        'Guru' => array( '੦', '੧', '੨', '੩', '੪', '੫', '੬', '੭', '੮', '੯'), // 0A66 - 0A6F gurmukhi
        'Gujr' => array( '૦', '૧', '૨', '૩', '૪', '૫', '૬', '૭', '૮', '૯'), // 0AE6 - 0AEF gujarati
        'Orya' => array( '୦', '୧', '୨', '୩', '୪', '୫', '୬', '୭', '୮', '୯'), // 0B66 - 0B6F orija
        'Taml' => array( '௦', '௧', '௨', '௩', '௪', '௫', '௬', '௭', '௮', '௯'), // 0BE6 - 0BEF tamil
        'Telu' => array( '౦', '౧', '౨', '౩', '౪', '౫', '౬', '౭', '౮', '౯'), // 0C66 - 0C6F telugu
        'Knda' => array( '೦', '೧', '೨', '೩', '೪', '೫', '೬', '೭', '೮', '೯'), // 0CE6 - 0CEF kannada
        'Mlym' => array( '൦', '൧', '൨', '൩', '൪', '൫', '൬', '൭', '൮', '൯ '), // 0D66 - 0D6F malayalam
        'Tale' => array( '๐', '๑', '๒', '๓', '๔', '๕', '๖', '๗', '๘', '๙ '), // 0E50 - 0E59 thai
        'Laoo' => array( '໐', '໑', '໒', '໓', '໔', '໕', '໖', '໗', '໘', '໙'), // 0ED0 - 0ED9 lao
        'Tibt' => array( '༠', '༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩ '), // 0F20 - 0F29 tibetan
        'Mymr' => array( '၀', '၁', '၂', '၃', '၄', '၅', '၆', '၇', '၈', '၉'), // 1040 - 1049 myanmar
        'Khmr' => array( '០', '១', '២', '៣', '៤', '៥', '៦', '៧', '៨', '៩'), // 17E0 - 17E9 khmer
        'Mong' => array( '᠐', '᠑', '᠒', '᠓', '᠔', '᠕', '᠖', '᠗', '᠘', '᠙'), // 1810 - 1819 mongolian
        'Limb' => array( '᥆', '᥇', '᥈', '᥉', '᥊', '᥋', '᥌', '᥍', '᥎', '᥏'), // 1946 - 194F limbu
        'Talu' => array( '᧐', '᧑', '᧒', '᧓', '᧔', '᧕', '᧖', '᧗', '᧘', '᧙'), // 19D0 - 19D9 tailue
        'Bali' => array( '᭐', '᭑', '᭒', '᭓', '᭔', '᭕', '᭖', '᭗', '᭘', '᭙'), // 1B50 - 1B59 balinese
        'Nkoo' => array( '߀', '߁', '߂', '߃', '߄', '߅', '߆', '߇', '߈', '߉')  // 07C0 - 07C9 nko
    );

    /**
     * Sets class wide options, if no option was given, the actual set options will be returned
     * The 'precision' option of a value is used to truncate or stretch extra digits. -1 means not to touch the extra digits.
     * The 'locale' option helps when parsing numbers and dates using separators and month names.
     * The date format 'format_type' option selects between CLDR/ISO date format specifier tokens and PHP's date() tokens.
     * The 'fix_date' option enables or disables heuristics that attempt to correct invalid dates.
     * The 'number_format' option can be used to specify a default number format string
     * The 'date_format' option can be used to specify a default date format string, but beware of using getDate(),
     * checkDateFormat() and getTime() after using setOptions() with a 'format'.  To use these four methods
     * with the default date format for a locale, use array('date_format' => null, 'locale' => $locale) for their options.
     *
     * @param  array  $options  Array of options, keyed by option name: format_type = 'iso' | 'php', fix_date = true | false,
     *                          locale = Zend_Locale | locale string, precision = whole number between -1 and 30
     * @throws Zend_Locale_Exception
     * @return Options array if no option was given
     */
    public static function setOptions(array $options = array())
    {
        self::$_options = self::_checkOptions($options) + self::$_options;
        return self::$_options;
    }

    /**
     * Internal function for checking the options array of proper input values
     * See {@link setOptions()} for details.
     *
     * @param  array  $options  Array of options, keyed by option name: format_type = 'iso' | 'php', fix_date = true | false,
     *                          locale = Zend_Locale | locale string, precision = whole number between -1 and 30
     * @throws Zend_Locale_Exception
     * @return Options array if no option was given
     */
    private static function _checkOptions(array $options = array())
    {
        if (count($options) == 0) {
            return self::$_options;
        }
        foreach ($options as $name => $value) {
            $name  = strtolower($name);
            if ($name !== 'locale') {
                if (gettype($value) === 'string') {
                    $value = strtolower($value);
                }
            }

            switch($name) {
                case 'number_format' :
                    if ($value == 'standard') {
                        $locale = self::$_options['locale'];
                        if (isset($options['locale'])) {
                            $locale = $options['locale'];
                        }
                        $options['number_format'] = Zend_Locale_Data::getContent($locale, 'decimalnumber');
                    } else if ((gettype($value) !== 'string') and ($value !== NULL)) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("Unknown number format type '" . gettype($value) . "'. "
                            . "Format '$value' must be a valid number format string.");
                    }
                    break;

                case 'date_format' :
                    if ($value == 'standard') {
                        $locale = self::$_options['locale'];
                        if (isset($options['locale'])) {
                            $locale = $options['locale'];
                        }
                        $options['date_format'] = Zend_Locale_Format::getDateFormat($locale);
                    } else if ((gettype($value) !== 'string') and ($value !== NULL)) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("Unknown dateformat type '" . gettype($value) . "'. "
                            . "Format '$value' must be a valid ISO or PHP date format string.");
                    } else {
                        if (((isset($options['format_type']) === true) and ($options['format_type'] == 'php')) or
                            ((isset($options['format_type']) === false) and (self::$_options['format_type'] == 'php'))) {
                            $options['date_format'] = Zend_Locale_Format::convertPhpToIsoFormat($value);
                        }
                    }
                    break;

                case 'format_type' :
                    if (($value != 'php') && ($value != 'iso')) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("Unknown date format type '$value'. Only 'iso' and 'php'"
                           . " are supported.");
                    }
                    break;

                case 'fix_date' :
                    if (($value !== true) && ($value !== false)) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("Enabling correction of dates must be either true or false"
                            . "(fix_date='$value').");
                    }
                    break;

                case 'locale' :
                    if (gettype($value) === 'string' && strtolower($value) == 'standard') {
                        $options['locale'] = new Zend_Locale();
                    } else if (!empty($value) && (!Zend_Locale::isLocale($value, null, false))) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("'" .
                            (gettype($value) === 'object' ? get_class($value) : $value)
                            . "' is not a known locale.");
                    }
                    break;

                case 'cache' :
                    if ($value instanceof Zend_Cache_Core) {
                        Zend_Locale_Data::setCache($value);
                    }
                    break;

                case 'precision' :
                    if ($value === NULL) {
                        $value = -1;
                    }
                    if (($value < -1) || ($value > 30)) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("'$value' precision is not a whole number less than 30.");
                    }
                    break;

                default:
                    require_once 'Zend/Locale/Exception.php';
                    throw new Zend_Locale_Exception("Unknown option: '$name' = '$value'");
                    break;

            }
        }
        return $options;
    }

    /**
     * Changes the numbers/digits within a given string from one script to another
     * 'Decimal' representated the stardard numbers 0-9, if a script does not exist
     * an exception will be thrown.
     *
     * Examples for conversion from Arabic to Latin numerals:
     *   convertNumerals('١١٠ Tests', 'Arab'); -> returns '100 Tests'
     * Example for conversion from Latin to Arabic numerals:
     *   convertNumerals('100 Tests', 'Latn', 'Arab'); -> returns '١١٠ Tests'
     *
     * @param  string  $input  String to convert
     * @param  string  $from   Script to parse, see {@link Zend_Locale::getScriptList()} for details.
     * @param  string  $to     OPTIONAL Script to convert to
     * @return string  Returns the converted input
     * @throws Zend_Locale_Exception
     */
    public static function convertNumerals($input, $from, $to = null)
    {
        if (is_string($from)) {
            $from = ucfirst(strtolower($from));
        }
        if (isset(self::$_signs[$from]) === false) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("Unknown script '$from'. Use 'Latn' for digits 0,1,2,3,4,5,6,7,8,9.");
        }
        if (is_string($to)) {
            $to = ucfirst(strtolower($to));
        }
        if (($to !== null) and (isset(self::$_signs[$to]) === false)) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("Unknown script '$to'. Use 'Latn' for digits 0,1,2,3,4,5,6,7,8,9.");
        }

        if (isset(self::$_signs[$from])) {
            for ($X = 0; $X < 10; ++$X) {
                $source[$X + 10] = "/" . self::$_signs[$from][$X] . "/u";
            }
        }

        if (isset(self::$_signs[$to])) {
            for ($X = 0; $X < 10; ++$X) {
                $dest[$X + 10] = self::$_signs[$to][$X];
            }
        } else {
            for ($X = 0; $X < 10; ++$X) {
                $dest[$X + 10] = $X;
            }
        }

        return preg_replace($source, $dest, $input);
    }

    /**
     * Returns the first found number from an string
     * Parsing depends on given locale (grouping and decimal)
     *
     * Examples for input:
     * '  2345.4356,1234' = 23455456.1234
     * '+23,3452.123' = 233452.123
     * ' 12343 ' = 12343
     * '-9456km' = -9456
     * '0' = 0
     * '(-){0,1}(\d+(\.){0,1})*(\,){0,1})\d+'
     * '١١٠ Tests' = 110  call: getNumber($string, 'Arab');
     *
     * @param  string         $input    Input string to parse for numbers
     * @param  array          $options  Options: locale, precision. See {@link setOptions()} for details.
     * @return integer|string Returns the extracted number
     * @throws Zend_Locale_Exception
     */
    public static function getNumber($input, array $options = array())
    {
        $options = self::_checkOptions($options) + self::$_options;
        if (!is_string($input)) {
            return $input;
        }

        // Get correct signs for this locale
        $symbols = Zend_Locale_Data::getList($options['locale'],'symbols');

        // Parse input locale aware
        $regex = '/([' . $symbols['minus'] . '-]){0,1}(\d+(\\' . $symbols['group'] . '){0,1})*(\\' .
                        $symbols['decimal'] . '){0,1}\d+/';
        preg_match($regex, $input, $found);
        if (!isset($found[0])) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception('No value in ' . $input . ' found');
        }
        $found = $found[0];
        // Change locale input to be standard number
        if ($symbols['minus'] != "-")
            $found = strtr($found,$symbols['minus'],'-');
        $found = str_replace($symbols['group'],'', $found);

        // Do precision
        if (strpos($found, $symbols['decimal']) !== false) {
            if ($symbols['decimal'] != '.') {
                $found = str_replace($symbols['decimal'], ".", $found);
            }

            $pre = substr($found, strpos($found, '.') + 1);
            if ($options['precision'] === null) {
                $options['precision'] = strlen($pre);
            }

            if (strlen($pre) >= $options['precision']) {
                $found = substr($found, 0, strlen($found) - strlen($pre) + $options['precision']);
            }
        }

        return $found;
    }

    /**
     * Returns a locale formatted number depending on the given options.
     * The seperation and fraction sign is used from the set locale.
     * ##0.#  -> 12345.12345 -> 12345.12345
     * ##0.00 -> 12345.12345 -> 12345.12
     * ##,##0.00 -> 12345.12345 -> 12,345.12
     *
     * @param   string  $input    Localized number string
     * @param   array   $options  Options: number_format, locale, precision. See {@link setOptions()} for details.
     * @return  string  locale formatted number
     * @throws Zend_Locale_Exception
     */
    public static function toNumber($value, array $options = array())
    {
        // load class within method for speed
        require_once 'Zend/Locale/Math.php';

        $value             = Zend_Locale_Math::normalize($value);
        $options           = self::_checkOptions($options) + self::$_options;
        $options['locale'] = (string) $options['locale'];

        // Get correct signs for this locale
        $symbols = Zend_Locale_Data::getList($options['locale'], 'symbols');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        // Get format
        $format = $options['number_format'];
        if ($format === null) {
            $format  = Zend_Locale_Data::getContent($options['locale'], 'decimalnumber');
            if (iconv_strpos($format, ';') !== false) {
                if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
                    $format = iconv_substr($format, iconv_strpos($format, ';') + 1);
                } else {
                    $format = iconv_substr($format, 0, iconv_strpos($format, ';'));
                }
            }
        } else {
            // seperate negative format pattern when available
            if (iconv_strpos($format, ';') !== false) {
                if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
                    $format = iconv_substr($format, iconv_strpos($format, ';') + 1);
                } else {
                    $format = iconv_substr($format, 0, iconv_strpos($format, ';'));
                }
            }

            if (strpos($format, '.')) {
                if (is_numeric($options['precision'])) {
                    $value = Zend_Locale_Math::round($value, $options['precision']);
                } else {
                    if (substr($format, strpos($format, '.') + 1, 3) == '###') {
                        $options['precision'] = null;
                    } else {
                        $options['precision'] = strlen(substr($format, strpos($format, '.') + 1,
                                                              strrpos($format, '0') - strpos($format, '.')));
                        $format = substr($format, 0, strpos($format, '.') + 1) . '###'
                                . substr($format, strrpos($format, '0') + 1);
                    }
                }
            } else {
                $value = Zend_Locale_Math::round($value, 0);
                $options['precision'] = 0;
            }
            $value = Zend_Locale_Math::normalize($value);
        }
        if (strpos($format, '0') === false) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception('Wrong format... missing 0');
        }

        // get number parts
        if (strlen($value) != strlen(Zend_Locale_Math::round($value, 0))) {
            if ($options['precision'] === null) {
                $precstr = iconv_substr($value, strlen(Zend_Locale_Math::round($value, 0)) + 1);
            } else {
                $precstr = iconv_substr($value, strlen(Zend_Locale_Math::round($value, 0)) + 1, $options['precision']);
                if (iconv_strlen($precstr) < $options['precision']) {
                    $precstr = $precstr . str_pad("0", ($options['precision'] - iconv_strlen($precstr)), "0");
                }
            }
        } else {
            if ($options['precision'] > 0) {
                $precstr = str_pad("0", ($options['precision']), "0");
            }
        }

        if ($options['precision'] === null) {
            if (isset($precstr)) {
                $options['precision'] = iconv_strlen($precstr);
            } else {
                $options['precision'] = 0;
            }
        }

        // get fraction and format lengths
        if (strpos($value, '.') !== false) {
            $number = substr((string) $value, 0, strpos($value, '.'));
        } else {
            $number = $value;
        }

        $prec = call_user_func(Zend_Locale_Math::$sub, $value, $number, $options['precision']);
        $prec = Zend_Locale_Math::normalize($prec);
        if (iconv_strpos($prec, '-') !== false) {
            $prec = iconv_substr($prec, 1);
        }
        if (($prec == 0) and ($options['precision'] > 0)) {
            $prec = "0.0";
        }
        if (($options['precision'] + 2) > iconv_strlen($prec)) {
            $prec = str_pad((string) $prec, $options['precision'] + 2, "0", STR_PAD_RIGHT);
        }
        if (iconv_strpos($number, '-') !== false) {
            $number = iconv_substr($number, 1);
        }
        $group  = iconv_strrpos($format, ',');
        $group2 = iconv_strpos ($format, ',');
        $point  = iconv_strpos ($format, '0');
        // Add fraction
        $rest = "";
        if (($value < 0) && (strpos($format, '.'))) {
            $rest   = substr(substr($format, strpos($format, '.') + 1), -1, 1);
        }
        if ($options['precision'] == '0') {
            $format = iconv_substr($format, 0, $point) . iconv_substr($format, iconv_strrpos($format, '#') + 2);
        } else {
            $format = iconv_substr($format, 0, $point) . $symbols['decimal']
                               . iconv_substr($prec, 2) . iconv_substr($format, iconv_strrpos($format, '#') + 2 + strlen($prec) - 2);
        }
        if (($value < 0) and ($rest != '0') and ($rest != '#')) {
            $format .= $rest;
        }
        // Add seperation
        if ($group == 0) {
            // no seperation
            $format = $number . iconv_substr($format, $point);
        } else if ($group == $group2) {
            // only 1 seperation
            $seperation = ($point - $group);
            for ($x = iconv_strlen($number); $x > $seperation; $x -= $seperation) {
                if (iconv_substr($number, 0, $x - $seperation) !== "") {
                    $number = iconv_substr($number, 0, $x - $seperation) . $symbols['group']
                             . iconv_substr($number, $x - $seperation);
                }
            }
            $format = iconv_substr($format, 0, iconv_strpos($format, '#')) . $number . iconv_substr($format, $point);
        } else {

            // 2 seperations
            if (iconv_strlen($number) > ($point - $group)) {
                $seperation = ($point - $group);
                $number = iconv_substr($number, 0, iconv_strlen($number) - $seperation) . $symbols['group']
                        . iconv_substr($number, iconv_strlen($number) - $seperation);

                if ((iconv_strlen($number) - 1) > ($point - $group + 1)) {
                    $seperation2 = ($group - $group2 - 1);

                    for ($x = iconv_strlen($number) - $seperation2 - 2; $x > $seperation2; $x -= $seperation2) {
                         $number = iconv_substr($number, 0, $x - $seperation2) . $symbols['group']
                                 . iconv_substr($number, $x - $seperation2);
                    }
                }

            }
            $format = iconv_substr($format, 0, iconv_strpos($format, '#')) . $number . iconv_substr($format, $point);
        }
        // set negative sign
        if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) {
            if (iconv_strpos($format, '-') === false) {
                $format = $symbols['minus'] . $format;
            } else {
                $format = str_replace('-', $symbols['minus'], $format);
            }
        }
        return (string) $format;
    }

    /**
     * Checks if the input contains a normalized or localized number
     *
     * @param   string  $input    Localized number string
     * @param   array   $options  Options: locale. See {@link setOptions()} for details.
     * @return  boolean           Returns true if a number was found
     */
    public static function isNumber($input, array $options = array())
    {
        $options = self::_checkOptions($options) + self::$_options;

        // Get correct signs for this locale
        $symbols = Zend_Locale_Data::getList($options['locale'],'symbols');

        // Parse input locale aware
        $regex = '/^([' . $symbols['minus'] . '-]){0,1}(\d+(\\' . $symbols['group']
            . '){0,1})*(\\' . $symbols['decimal'] . '){0,1}\d+$/';
        preg_match($regex, $input, $found);

        if (!isset($found[0]))
            return false;
        return true;
    }

    /**
     * Alias for getNumber
     *
     * @param   string  $value    Number to localize
     * @param   array   $options  Options: locale, precision. See {@link setOptions()} for details.
     * @return  float
     */
    public static function getFloat($input, array $options = array())
    {
        return floatval(self::getNumber($input, $options));
    }

    /**
     * Returns a locale formatted integer number
     * Alias for toNumber()
     *
     * @param   string  $value    Number to normalize
     * @param   array   $options  Options: locale, precision. See {@link setOptions()} for details.
     * @return  string  Locale formatted number
     */
    public static function toFloat($value, array $options = array())
    {
        $options['number_format'] = 'standard';
        return self::toNumber($value, $options);
    }

    /**
     * Returns if a float was found
     * Alias for isNumber()
     *
     * @param   string  $input    Localized number string
     * @param   array   $options  Options: locale. See {@link setOptions()} for details.
     * @return  boolean           Returns true if a number was found
     */
    public static function isFloat($value, array $options = array())
    {
        return self::isNumber($value, $options);
    }

    /**
     * Returns the first found integer from an string
     * Parsing depends on given locale (grouping and decimal)
     *
     * Examples for input:
     * '  2345.4356,1234' = 23455456
     * '+23,3452.123' = 233452
     * ' 12343 ' = 12343
     * '-9456km' = -9456
     * '0' = 0
     * '(-){0,1}(\d+(\.){0,1})*(\,){0,1})\d+'
     *
     * @param   string   $input    Input string to parse for numbers
     * @param   array    $options  Options: locale. See {@link setOptions()} for details.
     * @return  integer            Returns the extracted number
     */
    public static function getInteger($input, array $options = array())
    {
        $options['precision'] = 0;
        return intval(self::getFloat($input, $options));
    }

    /**
     * Returns a localized number
     *
     * @param   string  $value    Number to normalize
     * @param   array   $options  Options: locale. See {@link setOptions()} for details.
     * @return  string            Locale formatted number
     */
    public static function toInteger($value, array $options = array())
    {
        $options['precision'] = 0;
        $options['number_format'] = 'standard';
        return self::toNumber($value, $options);
    }

    /**
     * Returns if a integer was found
     *
     * @param   string  $input    Localized number string
     * @param   array   $options  Options: locale. See {@link setOptions()} for details.
     * @return  boolean           Returns true if a integer was found
     */
    public static function isInteger($value, array $options = array())
    {
        $options['precision'] = 0;
        return self::isNumber($value, $options);
    }

    /**
     * Converts a format string from PHP's date format to ISO format
     * Remember that Zend Date always returns localized string, so a month name which returns the english
     * month in php's date() will return the translated month name with this function... use 'en' as locale
     * if you are in need of the original english names
     *
     * The conversion has the following restrictions:
     * 'a', 'A' - Meridiem is not explicit upper/lowercase, you have to upper/lowercase the translated value yourself
     *
     * @param  string  $format  Format string in PHP's date format
     * @return string           Format string in ISO format
     */
    public static function convertPhpToIsoFormat($format)
    {
        $convert = array('d' => 'dd'  , 'D' => 'EE'  , 'j' => 'd'   , 'l' => 'EEEE', 'N' => 'e'   , 'S' => 'SS'  ,
                         'w' => 'eee' , 'z' => 'D'   , 'W' => 'w'   , 'F' => 'MMMM', 'm' => 'MM'  , 'M' => 'MMM' ,
                         'n' => 'M'   , 't' => 'ddd' , 'L' => 'l'   , 'o' => 'YYYY', 'Y' => 'yyyy', 'y' => 'yy'  ,
                         'a' => 'a'   , 'A' => 'a'   , 'B' => 'B'   , 'g' => 'h'   , 'G' => 'H'   , 'h' => 'hh'  ,
                         'H' => 'HH'  , 'i' => 'mm'  , 's' => 'ss'  , 'e' => 'zzzz', 'I' => 'I'   , 'O' => 'Z'   ,
                         'P' => 'ZZZZ', 'T' => 'z'   , 'Z' => 'X'   , 'c' => 'yyyy-MM-ddTHH:mm:ssZZZZ',
                         'r' => 'r'   , 'U' => 'U');
        $values = str_split($format);
        foreach ($values as $key => $value) {
            if (isset($convert[$value]) === true) {
                $values[$key] = $convert[$value];
            }
        }
        return join($values);
    }

    /**
     * Parse date and split in named array fields
     *
     * @param   string  $date     Date string to parse
     * @param   array   $options  Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details.
     * @return  array             Possible array members: day, month, year, hour, minute, second, fixed, format
     */
    private static function _parseDate($date, $options)
    {
        $options = self::_checkOptions($options) + self::$_options;
        $test = array('h', 'H', 'm', 's', 'y', 'Y', 'M', 'd', 'D', 'E', 'S', 'l', 'B', 'I',
                       'X', 'r', 'U', 'G', 'w', 'e', 'a', 'A', 'Z', 'z', 'v');

        $format = $options['date_format'];
        foreach (str_split($format) as $splitted) {
            if ((!in_array($splitted, $test)) and (ctype_alpha($splitted))) {
                require_once 'Zend/Locale/Exception.php';
                throw new Zend_Locale_Exception("Unable to parse the date format string '" . $format
                                              . "' at letter '$splitted'");
            }
        }
        $number = $date; // working copy
        $result['date_format'] = $format; // save the format used to normalize $number (convenience)
        $result['locale'] = $options['locale']; // save the locale used to normalize $number (convenience)

        $day   = iconv_strpos($format, 'd');
        $month = iconv_strpos($format, 'M');
        $year  = iconv_strpos($format, 'y');
        $hour  = iconv_strpos($format, 'H');
        $min   = iconv_strpos($format, 'm');
        $sec   = iconv_strpos($format, 's');
        $am    = null;
        if ($hour === false) {
            $hour = iconv_strpos($format, 'h');
        }
        if ($year === false) {
            $year = iconv_strpos($format, 'Y');
        }
        if ($day === false) {
            $day = iconv_strpos($format, 'E');
            if ($day === false) {
                $day = iconv_strpos($format, 'D');
            }
        }

        if ($day !== false) {
            $parse[$day]   = 'd';
            if (!empty($options['locale']) && ($options['locale'] !== 'root') &&
                (!is_object($options['locale']) || ((string) $options['locale'] !== 'root'))) {
                // erase day string
                    $daylist = Zend_Locale_Data::getList($options['locale'], 'day');
                foreach($daylist as $key => $name) {
                    if (iconv_strpos($number, $name) !== false) {
                        $number = str_replace($name, "EEEE", $number);
                        break;
                    }
                }
            }
        }
        $position = false;

        if ($month !== false) {
            $parse[$month] = 'M';
            if (!empty($options['locale']) && ($options['locale'] !== 'root') &&
                (!is_object($options['locale']) || ((string) $options['locale'] !== 'root'))) {
                    // prepare to convert month name to their numeric equivalents, if requested,
                    // and we have a $options['locale']
                    $position = self::_replaceMonth($number, Zend_Locale_Data::getList($options['locale'],
                        'month'));
                if ($position === false) {
                    $position = self::_replaceMonth($number, Zend_Locale_Data::getList($options['locale'],
                        'month', array('gregorian', 'format', 'abbreviated')));
                }
            }
        }
        if ($year !== false) {
            $parse[$year]  = 'y';
        }
        if ($hour !== false) {
            $parse[$hour] = 'H';
        }
        if ($min !== false) {
            $parse[$min] = 'm';
        }
        if ($sec !== false) {
            $parse[$sec] = 's';
        }

        if (empty($parse)) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("unknown date format, neither date nor time in '" . $format . "' found");
        }
        ksort($parse);

        // get daytime
        if (iconv_strpos($format, 'a') !== false) {
            if (iconv_strpos(strtoupper($number), strtoupper(Zend_Locale_Data::getContent($options['locale'], 'am'))) !== false) {
                $am = true;
            } else if (iconv_strpos(strtoupper($number), strtoupper(Zend_Locale_Data::getContent($options['locale'], 'pm'))) !== false) {
                $am = false;
            }
        }

        // split number parts
        $split = false;
        preg_match_all('/\d+/u', $number, $splitted);

        if (count($splitted[0]) == 0) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("No date part in '$date' found.");
        }
        if (count($splitted[0]) == 1) {
            $split = 0;
        }
        $cnt = 0;
        foreach($parse as $key => $value) {

            switch($value) {
                case 'd':
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['day']    = $splitted[0][$cnt];
                        }
                    } else {
                        $result['day'] = iconv_substr($splitted[0][0], $split, 2);
                        $split += 2;
                    }
                    ++$cnt;
                    break;
                case 'M':
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['month']  = $splitted[0][$cnt];
                        }
                    } else {
                        $result['month'] = iconv_substr($splitted[0][0], $split, 2);
                        $split += 2;
                    }
                    ++$cnt;
                    break;
                case 'y':
                    $length = 2;
                    if ((iconv_substr($format, $year, 4) == 'yyyy')
                     || (iconv_substr($format, $year, 4) == 'YYYY')) {
                        $length = 4;
                    }
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['year']   = $splitted[0][$cnt];
                        }
                    } else {
                        $result['year']   = iconv_substr($splitted[0][0], $split, $length);
                        $split += $length;
                    }
                    ++$cnt;
                    break;
                case 'H':
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['hour']   = $splitted[0][$cnt];
                        }
                    } else {
                        $result['hour']   = iconv_substr($splitted[0][0], $split, 2);
                        $split += 2;
                    }
                    ++$cnt;
                    break;
                case 'm':
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['minute'] = $splitted[0][$cnt];
                        }
                    } else {
                        $result['minute'] = iconv_substr($splitted[0][0], $split, 2);
                        $split += 2;
                    }
                    ++$cnt;
                    break;
                case 's':
                    if ($split === false) {
                        if (count($splitted[0]) > $cnt) {
                            $result['second'] = $splitted[0][$cnt];
                        }
                    } else {
                        $result['second'] = iconv_substr($splitted[0][0], $split, 2);
                        $split += 2;
                    }
                    ++$cnt;
                    break;
            }
        }

        // AM/PM correction
        if ($hour !== false) {
            if (($am === true) and ($result['hour'] == 12)){
                $result['hour'] = 0;
            } else if (($am === false) and ($result['hour'] != 12)) {
                $result['hour'] += 12;
            }
        }

        if ($options['fix_date'] === true) {
            $result['fixed'] = 0; // nothing has been "fixed" by swapping date parts around (yet)
        }

        if ($day !== false) {
            // fix false month
            if (isset($result['day']) and isset($result['month'])) {
                if (($position !== false) and ((iconv_strpos($date, $result['day']) === false) or
                                               (isset($result['year']) and (iconv_strpos($date, $result['year']) === false)))) {
                    if ($options['fix_date'] !== true) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("unable to parse date '$date' using '" . $format
                            . "' (false month, $position, $month)");
                    }
                    $temp = $result['day'];
                    $result['day']   = $result['month'];
                    $result['month'] = $temp;
                    $result['fixed'] = 1;
                }
            }

            // fix switched values d <> y
            if (isset($result['day']) and isset($result['year'])) {
                if ($result['day'] > 31) {
                    if ($options['fix_date'] !== true) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("unable to parse date '$date' using '"
                                                      . $format . "' (d <> y)");
                    }
                    $temp = $result['year'];
                    $result['year'] = $result['day'];
                    $result['day']  = $temp;
                    $result['fixed'] = 2;
                }
            }

            // fix switched values M <> y
            if (isset($result['month']) and isset($result['year'])) {
                if ($result['month'] > 31) {
                    if ($options['fix_date'] !== true) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("unable to parse date '$date' using '"
                                                      . $format . "' (M <> y)");
                    }
                    $temp = $result['year'];
                    $result['year']  = $result['month'];
                    $result['month'] = $temp;
                    $result['fixed'] = 3;
                }
            }

            // fix switched values M <> d
            if (isset($result['month']) and isset($result['day'])) {
                if ($result['month'] > 12) {
                    if ($options['fix_date'] !== true || $result['month'] > 31) {
                        require_once 'Zend/Locale/Exception.php';
                        throw new Zend_Locale_Exception("unable to parse date '$date' using '"
                                                      . $format . "' (M <> d)");
                    }
                    $temp = $result['day'];
                    $result['day']   = $result['month'];
                    $result['month'] = $temp;
                    $result['fixed'] = 4;
                }
            }
        }
        return $result;
    }

    /**
     * Search $number for a month name found in $monthlist, and replace if found.
     *
     * @param  string  $number     Date string (modified)
     * @param  array   $monthlist  List of month names
     *
     * @return int|false           Position of replaced string (false if nothing replaced)
     */
    protected static function _replaceMonth(&$number, $monthlist)
    {
        // If $locale was invalid, $monthlist will default to a "root" identity
        // mapping for each month number from 1 to 12.
        // If no $locale was given, or $locale was invalid, do not use this identity mapping to normalize.
        // Otherwise, translate locale aware month names in $number to their numeric equivalents.
        $position = false;
        if ($monthlist && $monthlist[1] != 1) {
            foreach($monthlist as $key => $name) {
                if (($position = iconv_strpos($number, $name)) !== false) {
                    $number   = str_ireplace($name, $key, $number);
                    return $position;
                }
            }
        }
        return false;
    }

    /**
     * Returns the default date format for $locale.
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale of $number, possibly in string form (e.g. 'de_AT')
     * @return string  format
     * @throws Zend_Locale_Exception  throws an exception when locale data is broken
     */
    public static function getDateFormat($locale = null)
    {
        $format = Zend_Locale_Data::getContent($locale, 'date');
        if (empty($format)) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("failed to receive data from locale $locale");
        }
        return $format;
    }

    /**
     * Returns an array with the normalized date from an locale date
     * a input of 10.01.2006 without a $locale would return:
     * array ('day' => 10, 'month' => 1, 'year' => 2006)
     * The 'locale' option is only used to convert human readable day
     * and month names to their numeric equivalents.
     * The 'format' option allows specification of self-defined date formats,
     * when not using the default format for the 'locale'.
     *
     * @param   string  $date     Date string
     * @param   array   $options  Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details.
     * @return  array             Possible array members: day, month, year, hour, minute, second, fixed, format
     */
    public static function getDate($date, array $options = array())
    {
        $options = self::_checkOptions($options) + self::$_options;
        if (empty($options['date_format'])) {
            $options['format_type'] = 'iso';
            $options['date_format'] = self::getDateFormat($options['locale']);
        }
        return self::_parseDate($date, $options);
    }

    /**
     * Returns if the given datestring contains all date parts from the given format.
     * If no format is given, the standard date format from the locale is used
     * If you want to check if the date is a proper date you should use Zend_Date::isDate()
     *
     * @param   string  $date     Date string
     * @param   array   $options  Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details.
     * @return  boolean
     */
    public static function checkDateFormat($date, array $options = array())
    {
        try {
            $date = self::getDate($date, $options);
        } catch (Exception $e) {
            return false;
        }

        if (empty($options['date_format'])) {
            $options['format_type'] = 'iso';
            $options['date_format'] = self::getDateFormat($options['locale']);
        }
        $options = self::_checkOptions($options) + self::$_options;

        // day expected but not parsed
        if ((iconv_strpos($options['date_format'], 'd') !== false) and (!isset($date['day']) or ($date['day'] == ""))) {
            return false;
        }

        // month expected but not parsed
        if ((iconv_strpos($options['date_format'], 'M') !== false) and (!isset($date['month']) or ($date['month'] == ""))) {
            return false;
        }

        // year expected but not parsed
        if (((iconv_strpos($options['date_format'], 'Y') !== false) or
             (iconv_strpos($options['date_format'], 'y') !== false)) and (!isset($date['year']) or ($date['year'] == ""))) {
            return false;
        }

        // second expected but not parsed
        if ((iconv_strpos($options['date_format'], 's') !== false) and (!isset($date['second']) or ($date['second'] == ""))) {
            return false;
        }

        // minute expected but not parsed
        if ((iconv_strpos($options['date_format'], 'm') !== false) and (!isset($date['minute']) or ($date['minute'] == ""))) {
            return false;
        }

        // hour expected but not parsed
        if (((iconv_strpos($options['date_format'], 'H') !== false) or
             (iconv_strpos($options['date_format'], 'h') !== false)) and (!isset($date['hour']) or ($date['hour'] == ""))) {
            return false;
        }
        return true;
    }

    /**
     * Returns the default time format for $locale.
     *
     * @param  string|Zend_Locale  $locale  OPTIONAL Locale of $number, possibly in string form (e.g. 'de_AT')
     * @return string  format
     */
    public static function getTimeFormat($locale = null)
    {
        $format = Zend_Locale_Data::getContent($locale, 'time');
        if (empty($format)) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("failed to receive data from locale $locale");
        }
        return $format;
    }

    /**
     * Returns an array with 'hour', 'minute', and 'second' elements extracted from $time
     * according to the order described in $format.  For a format of 'H:m:s', and
     * an input of 11:20:55, getTime() would return:
     * array ('hour' => 11, 'minute' => 20, 'second' => 55)
     * The optional $locale parameter may be used to help extract times from strings
     * containing both a time and a day or month name.
     *
     * @param   string  $time     Time string
     * @param   array   $options  Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details.
     * @return  array             Possible array members: day, month, year, hour, minute, second, fixed, format
     */
    public static function getTime($time, array $options = array())
    {
        $options = self::_checkOptions($options) + self::$_options;
        if (empty($options['date_format'])) {
            $options['format_type'] = 'iso';
            $options['date_format'] = self::getTimeFormat($options['locale']);
        }
        return self::_parseDate($time, $options);
    }
}
PKpG[+n�� � Locale/Math/PhpMath.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PhpMath.php 12514 2008-11-10 16:30:24Z matthew $
 */


/**
 * Utility class for proxying math function to bcmath functions, if present,
 * otherwise to PHP builtin math operators, with limited detection of overflow conditions.
 * Sampling of PHP environments and platforms suggests that at least 80% to 90% support bcmath.
 * This file should only be loaded for the 10% to 20% lacking access to the bcmath extension.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Math_PhpMath extends Zend_Locale_Math
{
    public static function disable()
    {
        self::$_bcmathDisabled = true;
        self::$add   = array('Zend_Locale_Math_PhpMath', 'Add');
        self::$sub   = array('Zend_Locale_Math_PhpMath', 'Sub');
        self::$pow   = array('Zend_Locale_Math_PhpMath', 'Pow');
        self::$mul   = array('Zend_Locale_Math_PhpMath', 'Mul');
        self::$div   = array('Zend_Locale_Math_PhpMath', 'Div');
        self::$comp  = array('Zend_Locale_Math_PhpMath', 'Comp');
        self::$sqrt  = array('Zend_Locale_Math_PhpMath', 'Sqrt');
        self::$mod   = array('Zend_Locale_Math_PhpMath', 'Mod');
        self::$scale = array('Zend_Locale_Math_PhpMath', 'Scale');
        
        self::$defaultScale     = 0;
        self::$defaultPrecision = 1;
    }

    public static $defaultScale;
    public static $defaultPrecision;

    
    public static function Add($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale     = Zend_Locale_Math_PhpMath::$defaultScale;
            $precision = Zend_Locale_Math_PhpMath::$defaultPrecision;
        } else {
            $precision = pow(10, -$scale);
        }

        if (empty($op1)) {
            $op1 = 0;
        }
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        $result = $op1 + $op2;
        if (is_infinite($result)  or  (abs($result - $op2 - $op1) > $precision)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("addition overflow: $op1 + $op2 != $result", $op1, $op2, $result);
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Sub($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale     = Zend_Locale_Math_PhpMath::$defaultScale;
            $precision = Zend_Locale_Math_PhpMath::$defaultPrecision;
        } else {
            $precision = pow(10, -$scale);
        }

        if (empty($op1)) {
            $op1 = 0;
        }
        $op1  = self::normalize($op1);
        $op2  = self::normalize($op2);
        $result = $op1 - $op2;
        if (is_infinite($result)  or  (abs($result + $op2 - $op1) > $precision)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("subtraction overflow: $op1 - $op2 != $result", $op1, $op2, $result);
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Pow($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale = Zend_Locale_Math_PhpMath::$defaultScale;
        }
        
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        
        // BCMath extension doesn't use decimal part of the power
        // Provide the same behavior 
        $op2 = ($op2 > 0) ? floor($op2) : ceil($op2);
        
        $result = pow($op1, $op2);
        if (is_infinite($result)  or  is_nan($result)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("power overflow: $op1 ^ $op2", $op1, $op2, $result);
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Mul($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale = Zend_Locale_Math_PhpMath::$defaultScale;
        }

        if (empty($op1)) {
            $op1 = 0;
        }
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        $result = $op1 * $op2;
        if (is_infinite($result)  or  is_nan($result)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("multiplication overflow: $op1 * $op2 != $result", $op1, $op2, $result);
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Div($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale = Zend_Locale_Math_PhpMath::$defaultScale;
        }

        if (empty($op2)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("can not divide by zero", $op1, $op2, null);
        }
        if (empty($op1)) {
            $op1 = 0;
        }
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        $result = $op1 / $op2;
        if (is_infinite($result)  or  is_nan($result)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("division overflow: $op1 / $op2 != $result", $op1, $op2, $result);
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Sqrt($op1, $scale = null)
    {
        if ($scale === null) {
            $scale = Zend_Locale_Math_PhpMath::$defaultScale;
        }

        if (empty($op1)) {
            $op1 = 0;
        }
        $op1 = self::normalize($op1);
        $result = sqrt($op1);
        if (is_nan($result)) {
            return NULL;
        }

        return self::round(self::normalize($result), $scale);
    }

    public static function Mod($op1, $op2)
    {
        if (empty($op1)) {
            $op1 = 0;
        }
        if (empty($op2)) {
            return NULL;
        }
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        if ((int)$op2 == 0) {
            return NULL;
        }
        $result = $op1 % $op2;
        if (is_nan($result)  or  (($op1 - $result) % $op2 != 0)) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("modulus calculation error: $op1 % $op2 != $result", $op1, $op2, $result);
        }

        return self::normalize($result);
    }

    public static function Comp($op1, $op2, $scale = null)
    {
        if ($scale === null) {
            $scale     = Zend_Locale_Math_PhpMath::$defaultScale;
        }
        
        if (empty($op1)) {
            $op1 = 0;
        }
        $op1 = self::normalize($op1);
        $op2 = self::normalize($op2);
        if ($scale <> 0) {
            $op1 = self::round($op1, $scale);
            $op2 = self::round($op2, $scale);
        } else {
            $op1 = ($op1 > 0) ? floor($op1) : ceil($op1);
            $op2 = ($op2 > 0) ? floor($op2) : ceil($op2);
        }
        if ($op1 > $op2) {
            return 1;
        } else if ($op1 < $op2) {
            return -1;
        }
        return 0;
    }

    public static function Scale($scale)
    {
        if ($scale > 9) {
            require_once 'Zend/Locale/Math/Exception.php';
            throw new Zend_Locale_Math_Exception("can not scale to precision $scale", $scale, null, null);
        }
        self::$defaultScale     = $scale;
        self::$defaultPrecision = pow(10, -$scale);
        return true;
    }
}

Zend_Locale_Math_PhpMath::disable(); // disable use of bcmath functions
PKpG[y>�I��Locale/Math/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Math_Exception extends Zend_Exception
{
    protected $op1 = null;
    protected $op2 = null;
    protected $result = null;

    public function __construct($message, $op1 = null, $op2 = null, $result = null)
    {
        $this->op1 = $op1;
        $this->op2 = $op2;
        $this->result = $result;
        parent::__construct($message);
    }

    public function getResults()
    {
        return array($this->op1, $this->op2, $this->result);
    }
}
PKpG[�(@@Locale/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Exception extends Zend_Exception
{
}
PKpG[�ie##Locale/Data/en_UM.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="en"/>
		<territory type="UM"/>
	</identity>
</ldml>
PKpG[���pTpTLocale/Data/lv.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.82 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="lv"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afāru</language>
			<language type="ab">abhāzu</language>
			<language type="ace">ačinu</language>
			<language type="ach">ačolu</language>
			<language type="ada">adangmu</language>
			<language type="ady">adigu</language>
			<language type="ae">avesta</language>
			<language type="af">afrikāņu</language>
			<language type="afa">afroaziātu valoda</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akanu</language>
			<language type="akk">akadiešu</language>
			<language type="ale">aleutu</language>
			<language type="alg">algonkinu valoda</language>
			<language type="alt">dienvidaltajiešu</language>
			<language type="am">amharu</language>
			<language type="an">aragoniešu</language>
			<language type="ang">senangļu</language>
			<language type="anp">angika</language>
			<language type="apa">apaču valoda</language>
			<language type="ar">arābu</language>
			<language type="arc">aramiešu</language>
			<language type="arn">araukāņu</language>
			<language type="arp">arapahu</language>
			<language type="art">mākslīgā valoda</language>
			<language type="arw">aravaku</language>
			<language type="as">asamiešu</language>
			<language type="ast">astūriešu</language>
			<language type="ath">atapasku valoda</language>
			<language type="aus">austrāliešu valoda</language>
			<language type="av">avāru</language>
			<language type="awa">avadhu</language>
			<language type="ay">aimaru</language>
			<language type="az">azerbaidžāņu</language>
			<language type="ba">baškīru</language>
			<language type="bad">bandu</language>
			<language type="bai">bamileku valoda</language>
			<language type="bal">beludžu</language>
			<language type="ban">baliešu</language>
			<language type="bas">basu</language>
			<language type="bat">baltu valodas</language>
			<language type="be">baltkrievu</language>
			<language type="bej">bedžu</language>
			<language type="bem">bembu</language>
			<language type="ber">berberu</language>
			<language type="bg">bulgāru</language>
			<language type="bh">biharu</language>
			<language type="bho">bhodžpūru</language>
			<language type="bi">bišlamā</language>
			<language type="bik">bikolu</language>
			<language type="bin">binu</language>
			<language type="bla">siksiku</language>
			<language type="bm">bambaru</language>
			<language type="bn">bengāļu</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetiešu</language>
			<language type="br">bretoņu</language>
			<language type="bra">bradžiešu</language>
			<language type="bs">bosniešu</language>
			<language type="btk">bataku</language>
			<language type="bua">burjatu</language>
			<language type="bug">bugu</language>
			<language type="byn">bilinu</language>
			<language type="ca">katalāņu</language>
			<language type="cad">kadu</language>
			<language type="cai">Centrālamerikas indiāņu valoda</language>
			<language type="car">karību</language>
			<language type="cau">kaukāziešu valoda</language>
			<language type="ce">čečenu</language>
			<language type="ceb">sebuāņu</language>
			<language type="cel">ķeltu valoda</language>
			<language type="ch">čamorru</language>
			<language type="chb">čibču</language>
			<language type="chg">džagatajs</language>
			<language type="chk">čūku</language>
			<language type="chm">mariešu</language>
			<language type="chn">činuku žargons</language>
			<language type="cho">čoktavu</language>
			<language type="chp">čipevaianu</language>
			<language type="chr">čiroku</language>
			<language type="chy">šejenu</language>
			<language type="cmc">čamiešu valoda</language>
			<language type="co">korsikāņu</language>
			<language type="cop">koptu</language>
			<language type="cpe">angliskās kreoliskās valodas un pidžinvalodas</language>
			<language type="cpf">franciskā kreoliskā vai pidžinvaloda</language>
			<language type="cpp">portugāliskās kreoliskās valodas un pidžinvalodas</language>
			<language type="cr">krī</language>
			<language type="crh">Krimas tatāru</language>
			<language type="crp">kreoliskā vai pidžinvaloda</language>
			<language type="cs">čehu</language>
			<language type="csb">kašubu</language>
			<language type="cu">baznīcslāvu</language>
			<language type="cus">kušītu valodas</language>
			<language type="cv">čuvašu</language>
			<language type="cy">velsiešu</language>
			<language type="da">dāņu</language>
			<language type="dak">dakotu</language>
			<language type="dar">dargu</language>
			<language type="day">dajaku</language>
			<language type="de">vācu</language>
			<language type="de_AT">Austrijas vācu</language>
			<language type="de_CH">Šveices augšvācu</language>
			<language type="del">delavēru</language>
			<language type="den">sleivu</language>
			<language type="dgr">dogribu</language>
			<language type="din">dinku</language>
			<language type="doi">dogru</language>
			<language type="dra">dravīdu valoda</language>
			<language type="dsb">lejassorbu</language>
			<language type="dua">dualu</language>
			<language type="dum">vidusholandiešu</language>
			<language type="dv">maldīviešu</language>
			<language type="dyu">diūlu</language>
			<language type="dz">dzongke</language>
			<language type="ee">evu</language>
			<language type="efi">efiku</language>
			<language type="egy">ēģiptiešu</language>
			<language type="eka">ekadžuku</language>
			<language type="el">grieķu</language>
			<language type="elx">elamiešu</language>
			<language type="en">angļu</language>
			<language type="en_AU">Austrālijas angļu</language>
			<language type="en_CA">Kanādas angļu</language>
			<language type="en_US">angļu (ASV)</language>
			<language type="enm">vidusangļu</language>
			<language type="eo">esperanto</language>
			<language type="es">spāņu</language>
			<language type="es_419">spāņu (Latīņamerika)</language>
			<language type="es_ES">ibēriešu spāņu</language>
			<language type="et">igauņu</language>
			<language type="eu">basku</language>
			<language type="ewo">evondu</language>
			<language type="fa">persiešu</language>
			<language type="fan">fangu</language>
			<language type="fat">fantu</language>
			<language type="ff">fulu</language>
			<language type="fi">somu</language>
			<language type="fil">tagalu</language>
			<language type="fiu">somugru valodas</language>
			<language type="fj">fidžiešu</language>
			<language type="fo">faroisu</language>
			<language type="fon">fonu</language>
			<language type="fr">franču</language>
			<language type="fr_CA">Kanādas franču</language>
			<language type="fr_CH">Šveices franču</language>
			<language type="frm">vidusfranču</language>
			<language type="fro">senfranču</language>
			<language type="frr">ziemeļfrīzu</language>
			<language type="frs">austrumfrīzu</language>
			<language type="fur">friūlu</language>
			<language type="fy">frīzu</language>
			<language type="ga">īru</language>
			<language type="gaa">ga</language>
			<language type="gay">gajo</language>
			<language type="gba">gbaju</language>
			<language type="gd">skotu-ķeltu</language>
			<language type="gem">ģermāņu valoda</language>
			<language type="gez">gēzu</language>
			<language type="gil">kiribatiešu</language>
			<language type="gl">galisiešu</language>
			<language type="gmh">vidusaugšvācu</language>
			<language type="gn">gvaranu</language>
			<language type="goh">senaugšvācu</language>
			<language type="gon">gondu</language>
			<language type="gor">gorontalu</language>
			<language type="got">gotu</language>
			<language type="grb">grebo</language>
			<language type="grc">sengrieķu</language>
			<language type="gsw">Šveices vācu</language>
			<language type="gu">gudžaratu</language>
			<language type="gv">meniešu</language>
			<language type="gwi">kučinu</language>
			<language type="ha">hausu</language>
			<language type="hai">haidu</language>
			<language type="haw">havajiešu</language>
			<language type="he">ivrits</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligainonu</language>
			<language type="him">himačali</language>
			<language type="hit">hetu</language>
			<language type="hmn">hmongu</language>
			<language type="ho">hirimotu</language>
			<language type="hr">horvātu</language>
			<language type="hsb">augšsorbu</language>
			<language type="ht">haitiešu</language>
			<language type="hu">ungāru</language>
			<language type="hup">hupu</language>
			<language type="hy">armēņu</language>
			<language type="hz">hereru</language>
			<language type="ia">interlingva</language>
			<language type="iba">ibanu</language>
			<language type="id">indonēziešu</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">sičuaņas ji</language>
			<language type="ijo">idžbu</language>
			<language type="ik">inupiaku</language>
			<language type="ilo">iloku</language>
			<language type="inc">indoāriešu valodas</language>
			<language type="ine">indoeiropiešu valodas</language>
			<language type="inh">ingušu</language>
			<language type="io">ido</language>
			<language type="ira">irāņu valodas</language>
			<language type="iro">irokēzu valoda</language>
			<language type="is">islandiešu</language>
			<language type="it">itāliešu</language>
			<language type="iu">inuītu</language>
			<language type="ja">japāņu</language>
			<language type="jbo">ložbans</language>
			<language type="jpr">jūdpersiešu</language>
			<language type="jrb">jūdarābu</language>
			<language type="jv">javiešu</language>
			<language type="ka">gruzīnu</language>
			<language type="kaa">karakalpaku</language>
			<language type="kab">kabilu</language>
			<language type="kac">kačinu</language>
			<language type="kam">kambu</language>
			<language type="kar">karenu</language>
			<language type="kaw">kāvi</language>
			<language type="kbd">kabardiešu</language>
			<language type="kfo">koru</language>
			<language type="kg">kongu</language>
			<language type="kha">khasu</language>
			<language type="khi">hojsanu</language>
			<language type="kho">hotaniešu</language>
			<language type="ki">kikuju</language>
			<language type="kj">kvaņamu</language>
			<language type="kk">kazahu</language>
			<language type="kl">grenlandiešu</language>
			<language type="km">khmeru</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">korejiešu</language>
			<language type="kok">konkanu</language>
			<language type="kos">kosrājiešu</language>
			<language type="kpe">kpellu</language>
			<language type="kr">kanuru</language>
			<language type="krc">karačaju un balkāru</language>
			<language type="krl">karēļu</language>
			<language type="kro">krū</language>
			<language type="kru">kuruhu</language>
			<language type="ks">kašmiriešu</language>
			<language type="ku">kurdu</language>
			<language type="kum">kumiku</language>
			<language type="kut">kutenaju</language>
			<language type="kv">komiešu</language>
			<language type="kw">korniešu</language>
			<language type="ky">kirgīzu</language>
			<language type="la">latīņu</language>
			<language type="lad">ladino</language>
			<language type="lah">landu</language>
			<language type="lam">lambu</language>
			<language type="lb">luksemburgiešu</language>
			<language type="lez">lezgīnu</language>
			<language type="lg">gandu</language>
			<language type="li">limburgiešu</language>
			<language type="ln">lingala</language>
			<language type="lo">laosiešu</language>
			<language type="lol">mongu</language>
			<language type="loz">lozu</language>
			<language type="lt">lietuviešu</language>
			<language type="lu">lubakatanga</language>
			<language type="lua">lubalulva</language>
			<language type="lui">luisenu</language>
			<language type="lun">lundu</language>
			<language type="luo">luo</language>
			<language type="lus">lušeju</language>
			<language type="lv">latviešu</language>
			<language type="mad">maduriešu</language>
			<language type="mag">magahiešu</language>
			<language type="mai">maithili</language>
			<language type="mak">makasaru</language>
			<language type="man">mandingu</language>
			<language type="map">austronēziešu valoda</language>
			<language type="mas">masaju</language>
			<language type="mdf">mokšu</language>
			<language type="mdr">mandaru</language>
			<language type="men">mendu</language>
			<language type="mg">malagasu</language>
			<language type="mga">vidusīru</language>
			<language type="mh">māršaliešu</language>
			<language type="mi">maoru</language>
			<language type="mic">mikmaku</language>
			<language type="min">minangkabavu</language>
			<language type="mis">dažādas valodas</language>
			<language type="mk">maķedoniešu</language>
			<language type="mkh">monkhmeru valodas</language>
			<language type="ml">malajalamiešu</language>
			<language type="mn">mongoļu</language>
			<language type="mnc">mandžūru</language>
			<language type="mni">manipūru</language>
			<language type="mno">manobu valoda</language>
			<language type="mo">moldāvu</language>
			<language type="moh">mohauku</language>
			<language type="mos">mosu</language>
			<language type="mr">maratu</language>
			<language type="ms">malajiešu</language>
			<language type="mt">maltiešu</language>
			<language type="mul">vairākas valodas</language>
			<language type="mun">mundu valoda</language>
			<language type="mus">krīku</language>
			<language type="mwl">mirandiešu</language>
			<language type="mwr">marvaru</language>
			<language type="my">birmiešu</language>
			<language type="myn">maiju valoda</language>
			<language type="myv">erzju</language>
			<language type="na">nauruiešu</language>
			<language type="nah">navatlu</language>
			<language type="nai">Ziemeļamerikas indiāņu valodas</language>
			<language type="nap">neapoliešu</language>
			<language type="nb">norvēģu bukmols</language>
			<language type="nd">ziemeļndebelu</language>
			<language type="nds">lejasvācu</language>
			<language type="ne">nepāliešu</language>
			<language type="new">nevaru</language>
			<language type="ng">ndongu</language>
			<language type="nia">njasu</language>
			<language type="nic">nigēriešu-kordofāņu valoda</language>
			<language type="niu">niuāņu</language>
			<language type="nl">holandiešu</language>
			<language type="nl_BE">flāmu</language>
			<language type="nn">jaunnorvēģu</language>
			<language type="no">norvēģu</language>
			<language type="nog">nogaju</language>
			<language type="non">sennorvēģu</language>
			<language type="nr">dienvidndebelu</language>
			<language type="nso">ziemeļsotu</language>
			<language type="nub">nūbiešu valoda</language>
			<language type="nv">navahu</language>
			<language type="nwc">klasiskā nevaru</language>
			<language type="ny">čičeva</language>
			<language type="nym">ņamvezu</language>
			<language type="nyn">ņankolu</language>
			<language type="nyo">ņoru</language>
			<language type="nzi">nzemu</language>
			<language type="oc">provansiešu</language>
			<language type="oj">odžibvu</language>
			<language type="om">oromu</language>
			<language type="or">orisiešu</language>
			<language type="os">osetīnu</language>
			<language type="osa">važāžu</language>
			<language type="ota">turku osmaņu</language>
			<language type="oto">otomu valoda</language>
			<language type="pa">pandžabu</language>
			<language type="paa">papuasu valoda</language>
			<language type="pag">pangasinanu</language>
			<language type="pal">pehlevi</language>
			<language type="pam">pampanganu</language>
			<language type="pap">papjamento</language>
			<language type="pau">palaviešu</language>
			<language type="peo">senpersu</language>
			<language type="phi">filipīniešu valodas</language>
			<language type="phn">feniķiešu</language>
			<language type="pi">pāli</language>
			<language type="pl">poļu</language>
			<language type="pon">ponapiešu</language>
			<language type="pra">prākrita valoda</language>
			<language type="pro">senprovansiešu</language>
			<language type="ps">puštu</language>
			<language type="pt">portugāļu</language>
			<language type="pt_BR">Brazīlijas portugāļu</language>
			<language type="pt_PT">ibēriešu portugāļu</language>
			<language type="qu">kečvu</language>
			<language type="raj">radžastāņu</language>
			<language type="rap">rapanuju</language>
			<language type="rar">rarotongiešu</language>
			<language type="rm">retoromāņu</language>
			<language type="rn">rundu</language>
			<language type="ro">rumāņu</language>
			<language type="roa">romāņu valoda</language>
			<language type="rom">čigānu</language>
			<language type="root">sakne</language>
			<language type="ru">krievu</language>
			<language type="rup">aromūnu</language>
			<language type="rw">kiņaruanda</language>
			<language type="sa">sanskrita</language>
			<language type="sad">sandavu</language>
			<language type="sah">jakutu</language>
			<language type="sai">Dienvidamerikas indiāņu</language>
			<language type="sal">sališu valoda</language>
			<language type="sam">samārijas aramiešu</language>
			<language type="sas">sasaku</language>
			<language type="sat">santalu</language>
			<language type="sc">sardīniešu</language>
			<language type="scn">sicīliešu</language>
			<language type="sco">skotu</language>
			<language type="sd">sindžu</language>
			<language type="se">ziemeļsāmu</language>
			<language type="sel">selkupu</language>
			<language type="sem">semītu valoda</language>
			<language type="sg">sangu</language>
			<language type="sga">senīru</language>
			<language type="sgn">zīmju valodas</language>
			<language type="sh">serbu-horvātu</language>
			<language type="shn">šanu</language>
			<language type="si">sinhalīzu</language>
			<language type="sid">sidamu</language>
			<language type="sio">siū valodas</language>
			<language type="sit">sinotibetiešu valodas</language>
			<language type="sk">slovāku</language>
			<language type="sl">slovēņu</language>
			<language type="sla">slāvu</language>
			<language type="sm">samoāņu</language>
			<language type="sma">dienvidsāmu</language>
			<language type="smi">sāmu valoda</language>
			<language type="smj">Luleo sāmu</language>
			<language type="smn">Inari sāmu</language>
			<language type="sms">skoltsāmu</language>
			<language type="sn">šonu</language>
			<language type="snk">soninku</language>
			<language type="so">somāļu</language>
			<language type="sog">sogdiešu</language>
			<language type="son">songaju</language>
			<language type="sq">albāņu</language>
			<language type="sr">serbu</language>
			<language type="srn">sranantongo</language>
			<language type="srr">serēru</language>
			<language type="ss">svatu</language>
			<language type="ssa">nīlas-sahāras valoda</language>
			<language type="st">sesoto</language>
			<language type="su">sundaniešu</language>
			<language type="suk">sukumu</language>
			<language type="sus">susu</language>
			<language type="sux">šumeru</language>
			<language type="sv">zviedru</language>
			<language type="sw">svahilu</language>
			<language type="syc">klasiskā sīriešu</language>
			<language type="syr">sīriešu</language>
			<language type="ta">tamilu</language>
			<language type="tai">taju valodas</language>
			<language type="te">telugu</language>
			<language type="tem">temnu</language>
			<language type="ter">tereno</language>
			<language type="tet">tetumu</language>
			<language type="tg">tadžiku</language>
			<language type="th">taju</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigru</language>
			<language type="tiv">tivu</language>
			<language type="tk">turkmēņu</language>
			<language type="tkl">tokelaviešu</language>
			<language type="tl">tagalogu</language>
			<language type="tlh">klingoniešu</language>
			<language type="tli">tlinkitu</language>
			<language type="tmh">tuaregu</language>
			<language type="tn">cvanu</language>
			<language type="to">tongu</language>
			<language type="tog">Njasas tongu valoda</language>
			<language type="tpi">tokpisins</language>
			<language type="tr">turku</language>
			<language type="ts">congu</language>
			<language type="tsi">cimšiāņu</language>
			<language type="tt">tatāru</language>
			<language type="tum">tumbuku</language>
			<language type="tup">tupu valoda</language>
			<language type="tut">altajiešu valodas</language>
			<language type="tvl">tuvaliešu</language>
			<language type="tw">čvī</language>
			<language type="ty">taitiešu</language>
			<language type="tyv">tuviešu</language>
			<language type="udm">udmurtu</language>
			<language type="ug">uighuru</language>
			<language type="uga">ugaritiešu</language>
			<language type="uk">ukraiņu</language>
			<language type="umb">umbundu</language>
			<language type="und">nezināma vai nederīga valoda</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbeku</language>
			<language type="vai">vaju</language>
			<language type="ve">vendu</language>
			<language type="vi">vjetnamiešu</language>
			<language type="vo">volapiks</language>
			<language type="vot">votu</language>
			<language type="wa">valoņu</language>
			<language type="wak">vakašu valoda</language>
			<language type="wal">valamu</language>
			<language type="war">varaju</language>
			<language type="was">vašo</language>
			<language type="wen">sorbu</language>
			<language type="wo">volofu</language>
			<language type="xal">kalmiku</language>
			<language type="xh">khosu</language>
			<language type="yao">jao</language>
			<language type="yap">japiešu</language>
			<language type="yi">jidišs</language>
			<language type="yo">jorubu</language>
			<language type="ypk">jupiku valoda</language>
			<language type="za">džuanu</language>
			<language type="zap">sapoteku</language>
			<language type="zen">zenagu</language>
			<language type="zh">ķīniešu</language>
			<language type="zh_Hans">ķīniešu vienkāršotā</language>
			<language type="zh_Hant">ķīniešu tradicionālā</language>
			<language type="znd">zandē</language>
			<language type="zu">zulu</language>
			<language type="zun">zunju</language>
			<language type="zxx">lingvistiska satura nav</language>
		</languages>
		<scripts>
			<script type="Arab">arābu</script>
			<script type="Cyrl">kirilica</script>
			<script type="Latn">latīņu</script>
			<script type="Zxxx">Bez rakstības</script>
			<script type="Zzzz">Nezināma vai nederīga rakstība</script>
		</scripts>
		<territories>
			<territory type="001">Pasaule</territory>
			<territory type="002">Āfrika</territory>
			<territory type="003">Ziemeļamerika</territory>
			<territory type="005">Dienvidamerika</territory>
			<territory type="009">Okeānija</territory>
			<territory type="011">Rietumāfrika</territory>
			<territory type="013">Centrālamerika</territory>
			<territory type="014">Austrumāfrika</territory>
			<territory type="015">Ziemeļāfrika</territory>
			<territory type="017">Vidusāfrika</territory>
			<territory type="018">Āfrikas dienvidi</territory>
			<territory type="019">Amerikas</territory>
			<territory type="021">Amerikas ziemeļi</territory>
			<territory type="029">Karību jūras reģions</territory>
			<territory type="030">Austrumāzija</territory>
			<territory type="034">Āzijas dienvidi</territory>
			<territory type="035">Centrālaustrumāzija</territory>
			<territory type="039">Eiropas dienvidi</territory>
			<territory type="053">Austrālija un Jaunzēlande</territory>
			<territory type="054">Melanēzija</territory>
			<territory type="057">Mikronēzijas reģions</territory>
			<territory type="061">Polinēzija</territory>
			<territory type="062">Centrāldienvidāzija</territory>
			<territory type="142">Āzija</territory>
			<territory type="143">Centrālāzija</territory>
			<territory type="145">Rietumāzija</territory>
			<territory type="150">Eiropa</territory>
			<territory type="151">Austrumeiropa</territory>
			<territory type="154">Eiropas ziemeļi</territory>
			<territory type="155">Rietumeiropa</territory>
			<territory type="172">Neatkarīgo Valstu Savienība</territory>
			<territory type="419">Latīņamerika un Karību jūras reģions</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Apvienotie Arābu Emirāti</territory>
			<territory type="AF">Afganistāna</territory>
			<territory type="AG">Antigva un Barbuda</territory>
			<territory type="AI">Angilja</territory>
			<territory type="AL">Albānija</territory>
			<territory type="AM">Armēnija</territory>
			<territory type="AN">Antiļas</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Argentīna</territory>
			<territory type="AS">Amerikāņu Samoa</territory>
			<territory type="AT">Austrija</territory>
			<territory type="AU">Austrālija</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Olandes salas</territory>
			<territory type="AZ">Azerbaidžāna</territory>
			<territory type="BA">Bosnija un Hercegovina</territory>
			<territory type="BB">Barbadosa</territory>
			<territory type="BD">Bangladeša</territory>
			<territory type="BE">Beļģija</territory>
			<territory type="BF">Burkinafaso</territory>
			<territory type="BG">Bulgārija</territory>
			<territory type="BH">Bahreina</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benina</territory>
			<territory type="BM">Bermudu salas</territory>
			<territory type="BN">Bruneja</territory>
			<territory type="BO">Bolīvija</territory>
			<territory type="BR">Brazīlija</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Butāna</territory>
			<territory type="BV">Buvē sala</territory>
			<territory type="BW">Botsvāna</territory>
			<territory type="BY">Baltkrievija</territory>
			<territory type="BZ">Beliza</territory>
			<territory type="CA">Kanāda</territory>
			<territory type="CC">Kokosu (Kīlinga) salas</territory>
			<territory type="CD">Kongo Demokrātiskā Republika</territory>
			<territory type="CF">Centrālāfrikas Republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Šveice</territory>
			<territory type="CI">Kotdivuāra</territory>
			<territory type="CK">Kuka salas</territory>
			<territory type="CL">Čīle</territory>
			<territory type="CM">Kamerūna</territory>
			<territory type="CN">Ķīna</territory>
			<territory type="CO">Kolumbija</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Serbija un Melnkalne</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kaboverde</territory>
			<territory type="CX">Ziemsvētku sala</territory>
			<territory type="CY">Kipra</territory>
			<territory type="CZ">Čehija</territory>
			<territory type="DE">Vācija</territory>
			<territory type="DJ">Džibutija</territory>
			<territory type="DK">Dānija</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikānas Republika</territory>
			<territory type="DZ">Alžīrija</territory>
			<territory type="EC">Ekvadora</territory>
			<territory type="EE">Igaunija</territory>
			<territory type="EG">Ēģipte</territory>
			<territory type="EH">Rietumsahāra</territory>
			<territory type="ER">Eritreja</territory>
			<territory type="ES">Spānija</territory>
			<territory type="ET">Etiopija</territory>
			<territory type="FI">Somija</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Folklenda salas</territory>
			<territory type="FM">Mikronēzijas Federatīvās Valstis</territory>
			<territory type="FO">Farēru salas</territory>
			<territory type="FR">Francija</territory>
			<territory type="GA">Gabona</territory>
			<territory type="GB">Lielbritānija</territory>
			<territory type="GD">Grenāda</territory>
			<territory type="GE">Gruzija</territory>
			<territory type="GF">Franču Gviāna</territory>
			<territory type="GG">Gērnsija</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltārs</territory>
			<territory type="GL">Grenlande</territory>
			<territory type="GM">Gambija</territory>
			<territory type="GN">Gvineja</territory>
			<territory type="GP">Gvadelupa</territory>
			<territory type="GQ">Ekvatoriālā Gvineja</territory>
			<territory type="GR">Grieķija</territory>
			<territory type="GS">Dienviddžordžija un Dienvidsendviču salas</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Guama</territory>
			<territory type="GW">Gvineja-Bisava</territory>
			<territory type="GY">Gajāna</territory>
			<territory type="HK">Honkonga</territory>
			<territory type="HM">Hērda un Makdonalda salas</territory>
			<territory type="HN">Hondurasa</territory>
			<territory type="HR">Horvātija</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungārija</territory>
			<territory type="ID">Indonēzija</territory>
			<territory type="IE">Īrija</territory>
			<territory type="IL">Izraēla</territory>
			<territory type="IM">Mena</territory>
			<territory type="IN">Indija</territory>
			<territory type="IO">Britu Indijas okeāna teritorija</territory>
			<territory type="IQ">Irāka</territory>
			<territory type="IR">Irāna</territory>
			<territory type="IS">Islande</territory>
			<territory type="IT">Itālija</territory>
			<territory type="JE">Džērsija</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordānija</territory>
			<territory type="JP">Japāna</territory>
			<territory type="KE">Kenija</territory>
			<territory type="KG">Kirgīzija</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoru salas</territory>
			<territory type="KN">Sentkitsa un Nevisa</territory>
			<territory type="KP">Ziemeļkoreja</territory>
			<territory type="KR">Dienvidkoreja</territory>
			<territory type="KW">Kuveita</territory>
			<territory type="KY">Kaimanu salas</territory>
			<territory type="KZ">Kazahstāna</territory>
			<territory type="LA">Laosa</territory>
			<territory type="LB">Libāna</territory>
			<territory type="LC">Sentlūsija</territory>
			<territory type="LI">Lihtenšteina</territory>
			<territory type="LK">Šrilanka</territory>
			<territory type="LR">Libērija</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Lietuva</territory>
			<territory type="LU">Luksemburga</territory>
			<territory type="LV">Latvija</territory>
			<territory type="LY">Lībija</territory>
			<territory type="MA">Maroka</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Melnkalne</territory>
			<territory type="MG">Madagaskara</territory>
			<territory type="MH">Māršala salas</territory>
			<territory type="MK">Maķedonija</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mjanma</territory>
			<territory type="MN">Mongolija</territory>
			<territory type="MO">Makao</territory>
			<territory type="MP">Ziemeļu Marianas</territory>
			<territory type="MQ">Martinika</territory>
			<territory type="MR">Mauritānija</territory>
			<territory type="MS">Montserrata</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Maurīcija</territory>
			<territory type="MV">Maldīvija</territory>
			<territory type="MW">Malāvija</territory>
			<territory type="MX">Meksika</territory>
			<territory type="MY">Malaizija</territory>
			<territory type="MZ">Mozambika</territory>
			<territory type="NA">Namībija</territory>
			<territory type="NC">Jaunkaledonija</territory>
			<territory type="NE">Nigēra</territory>
			<territory type="NF">Norfolka</territory>
			<territory type="NG">Nigērija</territory>
			<territory type="NI">Nikaragva</territory>
			<territory type="NL">Nīderlande</territory>
			<territory type="NO">Norvēģija</territory>
			<territory type="NP">Nepāla</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Jaunzēlande</territory>
			<territory type="OM">Omāna</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Franču Polinēzija</territory>
			<territory type="PG">Papua-Jaungvineja</territory>
			<territory type="PH">Filipīnas</territory>
			<territory type="PK">Pakistāna</territory>
			<territory type="PL">Polija</territory>
			<territory type="PM">Senpjēra un Mikelona</territory>
			<territory type="PN">Pitkērna</territory>
			<territory type="PR">Puertoriko</territory>
			<territory type="PS">Palestīniešu pašpārvaldes teritorija</territory>
			<territory type="PT">Portugāle</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragvaja</territory>
			<territory type="QA">Katara</territory>
			<territory type="QO">ASV Mazās Aizjūras salas</territory>
			<territory type="QU">Eiropas Savienība</territory>
			<territory type="RE">Reinjona</territory>
			<territory type="RO">Rumānija</territory>
			<territory type="RS">Serbija</territory>
			<territory type="RU">Krievija</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saūda Arābija</territory>
			<territory type="SB">Zālamana salas</territory>
			<territory type="SC">Seišeļu salas</territory>
			<territory type="SD">Sudāna</territory>
			<territory type="SE">Zviedrija</territory>
			<territory type="SG">Singapūra</territory>
			<territory type="SH">Sv. Helēnas sala</territory>
			<territory type="SI">Slovēnija</territory>
			<territory type="SJ">Svalbāra un Jana Majena sala</territory>
			<territory type="SK">Slovākija</territory>
			<territory type="SL">Sjerraleone</territory>
			<territory type="SM">Sanmarīno</territory>
			<territory type="SN">Senegāla</territory>
			<territory type="SO">Somālija</territory>
			<territory type="SR">Surinama</territory>
			<territory type="ST">Santome un Prinsipi</territory>
			<territory type="SV">Salvadora</territory>
			<territory type="SY">Sīrija</territory>
			<territory type="SZ">Svazilenda</territory>
			<territory type="TC">Tērksas un Kaikosas salas</territory>
			<territory type="TD">Čada</territory>
			<territory type="TF">Franču dienvidu teritorijas</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Taizeme</territory>
			<territory type="TJ">Tadžikistāna</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Austrumtimora</territory>
			<territory type="TM">Turkmenistāna</territory>
			<territory type="TN">Tunisija</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turcija</territory>
			<territory type="TT">Trinidāda un Tobāgo</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taivāna</territory>
			<territory type="TZ">Tanzānija</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">ASV mazās aizjūras teritorijas</territory>
			<territory type="US">United States</territory>
			<territory type="UY">Urugvaja</territory>
			<territory type="UZ">Uzbekistāna</territory>
			<territory type="VA">Vatikāns</territory>
			<territory type="VC">Sentvinsenta un Grenadīnas</territory>
			<territory type="VE">Venecuēla</territory>
			<territory type="VG">Britu Virdžīnu salas</territory>
			<territory type="VI">Amerikāņu Virdžīnu salas</territory>
			<territory type="VN">Vjetnama</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Volisa un Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemena</territory>
			<territory type="YT">Majota</territory>
			<territory type="ZA">Dienvidāfrika</territory>
			<territory type="ZM">Zambija</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">Nezināms vai nederīgs reģions</territory>
		</territories>
		<keys>
			<key type="calendar">Kalendārs</key>
			<key type="collation">šķirošana komplektos</key>
			<key type="currency">Valūta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Tradicionālās ķīniešu valodas kārtošanas secība - Big5</type>
			<type type="buddhist" key="calendar">Budistu kalendārs</type>
			<type type="chinese" key="calendar">Ķīniešu kalendārs</type>
			<type type="direct" key="collation">Tiešā kārtošanas secība</type>
			<type type="gb2312han" key="collation">Vienkāršotās ķīniešu valodas kārtošanas secība - GB2312</type>
			<type type="gregorian" key="calendar">Gregora kalendārs</type>
			<type type="hebrew" key="calendar">Ebreju kalendārs</type>
			<type type="indian" key="calendar">Indijas nacionālais kalendārs</type>
			<type type="islamic" key="calendar">Islāma kalendārs</type>
			<type type="islamic-civil" key="calendar">Islāma pilsoņu kalendārs</type>
			<type type="japanese" key="calendar">Japāņu kalendārs</type>
			<type type="phonebook" key="collation">Tālruņu grāmatas kārtošanas secība</type>
			<type type="pinyin" key="collation">Pinyin kārtošanas secība</type>
			<type type="roc" key="calendar">Ķīnas Republikas kalendārs</type>
			<type type="stroke" key="collation">Stroke kārtošanas secība</type>
			<type type="traditional" key="collation">Tradicionālā kārtošanas secība</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">britu</measurementSystemName>
			<measurementSystemName type="metric">metriskā</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[y q w x]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">Mai</month>
							<month type="6">Jūn</month>
							<month type="7">Jūl</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">janvāris</month>
							<month type="2">februāris</month>
							<month type="3">marts</month>
							<month type="4">aprīlis</month>
							<month type="5">maijs</month>
							<month type="6">jūnijs</month>
							<month type="7">jūlijs</month>
							<month type="8">augusts</month>
							<month type="9">septembris</month>
							<month type="10">oktobris</month>
							<month type="11">novembris</month>
							<month type="12">decembris</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sv</day>
							<day type="mon">P</day>
							<day type="tue">O</day>
							<day type="wed">T</day>
							<day type="thu">C</day>
							<day type="fri">Pk</day>
							<day type="sat">S</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">svētdiena</day>
							<day type="mon">pirmdiena</day>
							<day type="tue">otrdiena</day>
							<day type="wed">trešdiena</day>
							<day type="thu">ceturtdiena</day>
							<day type="fri">piektdiena</day>
							<day type="sat">sestdiena</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="mon">Pr</day>
							<day type="tue">ot</day>
							<day type="wed">Tr</day>
							<day type="thu">Ce</day>
							<day type="fri">pk</day>
							<day type="sat">Se</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">P</day>
							<day type="tue">O</day>
							<day type="wed">T</day>
							<day type="thu">C</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">C1</quarter>
							<quarter type="2">C2</quarter>
							<quarter type="3">C3</quarter>
							<quarter type="4">C4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. ceturksnis</quarter>
							<quarter type="2">2. ceturksnis</quarter>
							<quarter type="3">3. ceturksnis</quarter>
							<quarter type="4">4. ceturksnis</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">pirms mūsu ēras</era>
						<era type="1">mūsu ērā</era>
					</eraNames>
					<eraAbbr>
						<era type="0">pmē</era>
						<era type="1">mē</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">p.m.ē.</era>
						<era type="1">m.ē.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy. 'gada' d. MMMM</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy. 'gada' d. MMMM</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy.d.M</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy.d.M</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, dd.MM</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E, d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E, d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">mm.yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, dd.mm.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy. MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, dd. MMM, yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy. MMMM</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy. 'g'.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M - E, d.M</greatestDifference>
							<greatestDifference id="d">E, d.M - E, d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M - d.M</greatestDifference>
							<greatestDifference id="d">d.M - d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy.M - yy.M</greatestDifference>
							<greatestDifference id="y">yy.M - yy.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yy.d.M - E, yy.d.M</greatestDifference>
							<greatestDifference id="d">E, yy.d.M - E, yy.d.M</greatestDifference>
							<greatestDifference id="y">E, yy.d.M - E, yy.d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy. 'gada' MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy. 'gada' MMM - yyyy. 'gada' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, yyyy. 'gada' d. MMM - E, yyyy. 'gada' d. MMM</greatestDifference>
							<greatestDifference id="d">E, yyyy. 'gada' d. MMM - E, yyyy. 'gada' d. MMM</greatestDifference>
							<greatestDifference id="y">E, yyyy. 'gada' d. MMM - E, yyyy. 'gada' d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy. 'gada' d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">yyyy. 'gada' d.-d. MMM</greatestDifference>
							<greatestDifference id="y">yyyy. 'gada' d. MMM - yyyy. 'gada' d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy.d.M - yy.d.M</greatestDifference>
							<greatestDifference id="d">yy.d.M - yy.d.M</greatestDifference>
							<greatestDifference id="y">yy.d.M - yy.d.M</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Ēra</displayName>
					</field>
					<field type="year">
						<displayName>Gads</displayName>
					</field>
					<field type="month">
						<displayName>Mēnesis</displayName>
					</field>
					<field type="week">
						<displayName>Nedēļa</displayName>
					</field>
					<field type="day">
						<relative type="0">šodien</relative>
						<relative type="1">rīt</relative>
						<relative type="2">parīt</relative>
						<relative type="3">aizparīt</relative>
						<relative type="-1">vakar</relative>
						<relative type="-2">aizvakar</relative>
					</field>
					<field type="weekday">
						<displayName>Nedēļas diena</displayName>
					</field>
					<field type="hour">
						<displayName>Stundas</displayName>
					</field>
					<field type="minute">
						<displayName>Minūtes</displayName>
					</field>
					<field type="second">
						<displayName>Sekundes</displayName>
					</field>
					<field type="zone">
						<displayName>Josla</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Nezināma</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubaija</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kabula</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Antigva</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Angilja</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirāna</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erevāna</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Nīderlandes Antiļas</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Rotera</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Palmera</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Dienvidpols</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Sjova</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Mavsona</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Deivisa</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Vostoka</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Kesija</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Makmerdo</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Riogaljegosa</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>Mendosa</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>Sanhuana</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ušuaja</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>Larioha</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>Sanluisa</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Katamarka</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>Žužuja</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tukumana</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Kordoba</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Buenosairesa</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Pagopago</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Vīne</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>Pērta</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>Jūkla</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Dārvina</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Adelaida</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Brokenhila</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>Kerija</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Melburna</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>Hobarta</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>Lindemana</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Sidneja</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Brisbena</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Lordhova</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbadosa</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Daka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brisele</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Vagadugu</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofija</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahreina</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Bužumbura</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Portonovo</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudu salas</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Bruneja</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Lapasa</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirenupe</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Riobranko</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Portuvelju</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Boavista</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Manausa</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Kujaba</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Kampugrandi</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belena</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Aragvaina</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Sanpaulu</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Brazīlija (Salvadora)</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Fortalesa</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maseio</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Resifi</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Naso</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Timpu</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Minska</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Beliza</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Dausona</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>Vaithorsa</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>Inuvika</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Vankūvera</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Dousonkrīka</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>Jelounaifa</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Edmontona</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>Sviftkarenta</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Kembridžbeja</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Regīna</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>Vinipega</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>Rezolūta</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>Reinirivera</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>Rankininleta</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>Koralharbora</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>Tanderbeja</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>Nipigona</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Monreāla</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>Ikaluita</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>Pangnirtanga</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>Monktona</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Halifaksa</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Gūsbeja</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Gleisbeja</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>Blanksablona</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Sentdžonsa</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Kokosa</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinšasa</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Lubumbaši</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Bangi</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Brazavila</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Cīrihe</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidžana</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Lieldienu sala</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Santjago</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Duala</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kašgara</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Urumči</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Čuncina</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>Harbina</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kaboverde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Ziemsvētku</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikosija</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlīne</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibutija</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhāgena</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Santodomingo</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžīra</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapagu salas</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Gvajakila</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallina</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kaira</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Ajūna</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanāriju salas</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Seūta</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madride</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Adisabeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Stenlija</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Trūka</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Kosraja</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Farēru salas</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Parīze</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Librevila</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londona</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Grenāda</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Kajenna</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Akra</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibraltārs</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Tūle</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Nūka</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Skoresbisunda</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Denmārkšavna</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Bandžula</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Konakri</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gvadelupa</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atēnas</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Dienviddžordžija</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Guama</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Bisava</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gajāna</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Honkonga</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Portoprensa</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapešta</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Džakarta</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>Pontianaka</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Makasara</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Džajapūra</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dublina</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Čagosa</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdāde</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teherāna</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reikjavīka</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Ammāna</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokija</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biškeka</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Pnompeņa</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Enderburija</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Tarava</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komoru</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Sentkitsa</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Phenjana</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seula</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuveita</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kaimanu Salas</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Orāla</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktobe</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Kizilorda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Almati</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Vjangčana</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beirūta</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Sentlūsija</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Vaduca</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Kolombo</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Monrovija</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Viļņa</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburga</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Rīga</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Tripole</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Kasablanka</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Kišiņeva</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Antananarivu</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Kvadžaleina</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Madžuro</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Jangona</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Hovda</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulanbatora</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Čoibalsana</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makao</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Saipana</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinika</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Nuakšota</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Montserrata</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Maurīcija</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldīvija</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Blantaira</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Tihuāna</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Ermosiljo</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Masatlāna</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Čihuahua</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Montereja</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mehiko</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Kankūna</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Kualalumpura</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Kučinga</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Vindhuka</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Numea</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Niameja</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Norfolka</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Lagosa</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Managva</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Amsterdama</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Četema</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Oklenda</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Muskata</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Taiti</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Markvesa</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Gambjera</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Portmorsbi</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karači</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšava</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Mikelona</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitkērna</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Puertoriko</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azoru salas</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabona</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunsjona</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katara</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reinjona</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukareste</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kaļiņingrada</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Maskava</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Volgograda</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburga</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Omska</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Novosibirska</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarska</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkutska</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutska</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Vladivostoka</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sahalīna</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Magadāna</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadira</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijāda</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Gvadelkanāla</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Hartūma</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stokholma</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapūra</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sv. Helēna</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Frītauna</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Dakāra</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadīšo</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Santome</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvadora</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaska</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Grendturka</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Ndžamena</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Kergvelena</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Bangkoka</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dušanbe</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ašgabata</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunisa</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Istanbula</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Portofspeina</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Taipeja</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Dāresalāma</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užgoroda</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijeva</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Simferopole</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporožje</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Midveja</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Džonstauna</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Veika</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>Adaka</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>Noma</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Aļaskas laiks</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>Jakutata</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>Džuno</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Losandželosa</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Fīniksa</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>Šiproka</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Denvera</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>Ņūsalema</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Centra Ziemeļdakotā</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Čikāga</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>Menominī</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Vinsensa</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Pēterburga</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Tellsitija</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Noksa</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Vinimaka</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Indianapolisa</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Luisvilla</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Viveja</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Montiselo</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Detroita</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Ņujorka</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Samarkanda</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškenta</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Sentvinsenta</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Karakasa</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Senttomasa</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Hošimina</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Vallisa</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Adena</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Majota</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Johannesburga</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>Apvienoto Arābu Emirātu dirhēms</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentīnas peso</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Austrālijas dolārs</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bulgārijas leva</displayName>
			</currency>
			<currency type="BND">
				<displayName>Brunejas dolārs</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolīvijas boliviano</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazīlijas reāls</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanādas dolārs</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Šveices franks</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Čīles peso</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Ķīnas juana</displayName>
			</currency>
			<currency type="COP">
				<displayName>Kolumbijas peso</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Čehijas krona</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Vācijas marka</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Dānijas krona</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Igaunijas krona</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Ēģiptes mārciņa</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Eiro</displayName>
				<symbol>€</symbol>
			</currency>
			<currency type="FJD">
				<displayName>Fidži dolārs</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Francijas franks</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Lielbritānijas sterliņu mārciņa</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Honkongas dolārs</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Horvātijas kuna</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Ungārijas forints</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indonēzijas rūpija</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Izraēlas šekelis</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijas rūpija</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japānas jena</displayName>
			</currency>
			<currency type="KES">
				<displayName>Kenijas šiliņš</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Dienvidkorejas vona</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazahstānas tenge</displayName>
				<displayName count="zero">Kazahstānas tenge</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Lietuvas lits</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latvijas lats</displayName>
				<symbol>Ls</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokas dirhēms</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Maltas lira</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Meksikas peso</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaizijas ringits</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norvēģijas krona</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Jaunzēlandes dolārs</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peru jaunais sols</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipīnu peso</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistānas rūpija</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Polijas zlots</displayName>
			</currency>
			<currency type="RON">
				<displayName>Rumānijas leja</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbijas dinārs</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Krievijas rublis</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saūda riāls</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Zviedrijas krona</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapūras dolārs</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovēnijas tolars</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovakijas krona</displayName>
			</currency>
			<currency type="THB">
				<displayName>Taizemes bāts</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turcijas lira</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Jaunā Turcijas lira</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Jaunais Taivānas dolārs</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainas grivna</displayName>
			</currency>
			<currency type="USD">
				<displayName>ASV dolārs</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venecuēlas bolivārs</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vjetnamas dongi</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Nezināma vai nederīga valūta</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="ZAR">
				<displayName>Dienvidāfrikas rands</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} diena</unitPattern>
			<unitPattern count="other">{0} dienas</unitPattern>
			<unitPattern count="zero">{0} dienu</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} stunda</unitPattern>
			<unitPattern count="other">{0} stundas</unitPattern>
			<unitPattern count="zero">{0} stundu</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minūte</unitPattern>
			<unitPattern count="other">{0} minūtes</unitPattern>
			<unitPattern count="zero">{0} minūšu</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mēnesis</unitPattern>
			<unitPattern count="other">{0} mēneši</unitPattern>
			<unitPattern count="zero">{0} mēnešu</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekunde</unitPattern>
			<unitPattern count="other">{0} sekundes</unitPattern>
			<unitPattern count="zero">{0} sekunžu</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} nedēļa</unitPattern>
			<unitPattern count="other">{0} nedēļas</unitPattern>
			<unitPattern count="zero">{0} nedēļu</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} gads</unitPattern>
			<unitPattern count="other">{0} gadi</unitPattern>
			<unitPattern count="zero">{0} gadu</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>jā:ja:j</yesstr>
			<nostr>nē:ne:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[D�
ռ�Locale/Data/ee.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.28 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="ee"/>
	</identity>
	<characters>
		<exemplarCharacters>[a b d {dz} ɖ e ɛ f ƒ g {gb} ɣ h i k {kp} l-n {ny} ŋ o ɔ p r-t {ts} u v ʋ w-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c j q]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Dzv</month>
							<month type="2">Dzd</month>
							<month type="3">Ted</month>
							<month type="4">Afɔ</month>
							<month type="5">Dam</month>
							<month type="6">Mas</month>
							<month type="7">Sia</month>
							<month type="8">Dea</month>
							<month type="9">Any</month>
							<month type="10">Kel</month>
							<month type="11">Ade</month>
							<month type="12">Dzm</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Dzove</month>
							<month type="2">Dzodze</month>
							<month type="3">Tedoxe</month>
							<month type="4">Afɔfiɛ</month>
							<month type="5">Dama</month>
							<month type="6">Masa</month>
							<month type="7">Siamlɔm</month>
							<month type="8">Deasiamime</month>
							<month type="9">Anyɔnyɔ</month>
							<month type="10">Kele</month>
							<month type="11">Adeɛmekpɔxe</month>
							<month type="12">Dzome</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">D</month>
							<month type="2">D</month>
							<month type="3">T</month>
							<month type="4">A</month>
							<month type="5">D</month>
							<month type="6">M</month>
							<month type="7">S</month>
							<month type="8">D</month>
							<month type="9">A</month>
							<month type="10">K</month>
							<month type="11">A</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Kɔs Kwe</day>
							<day type="mon">Dzo</day>
							<day type="tue">Bra</day>
							<day type="wed">Kuɖ</day>
							<day type="thu">Yaw</day>
							<day type="fri">Fiɖ</day>
							<day type="sat">Mem</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Kɔsiɖa</day>
							<day type="mon">Dzoɖa</day>
							<day type="tue">Braɖa</day>
							<day type="wed">Kuɖa</day>
							<day type="thu">Yawoɖa</day>
							<day type="fri">Fiɖa</day>
							<day type="sat">Memleɖa</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">K</day>
							<day type="mon">D</day>
							<day type="tue">B</day>
							<day type="wed">K</day>
							<day type="thu">Y</day>
							<day type="fri">F</day>
							<day type="sat">M</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AN</am>
				<pm>EW</pm>
				<eras>
					<eraNames>
						<era type="0">Hafi Yesu Va Do ŋgɔ na Yesu</era>
						<era type="1">Yesu Ŋɔli</era>
					</eraNames>
					<eraAbbr>
						<era type="0">HY</era>
						<era type="1">YŊ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="GHC">
				<displayName>Siɖi</displayName>
				<symbol>¢</symbol>
			</currency>
			<currency type="XOF">
				<displayName>Sefa</displayName>
				<symbol>CFA</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�*���Locale/Data/es_US.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.64 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="es"/>
		<territory type="US"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMd">MM/d</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E M/d - E M/d</greatestDifference>
							<greatestDifference id="d">E M/d - E M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d - M/d</greatestDifference>
							<greatestDifference id="d">M/d - M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy - M/yy</greatestDifference>
							<greatestDifference id="y">M/yy - M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E M/d/yy - E M/d/yy</greatestDifference>
							<greatestDifference id="d">E M/d/yy - E M/d/yy</greatestDifference>
							<greatestDifference id="y">E M/d/yy - E M/d/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="y">M/d/yy - M/d/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[��8llLocale/Data/kpe.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kpe"/>
	</identity>
	<characters>
		<exemplarCharacters>[a b ɓ d e ə ɛ f g ĝ {gb} {gw} ɣ h-k {kp} {kw} l-n {ny} ɲ ŋ {ŋw} o ɔ p t-w y z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
</ldml>
PKpG[E<�GmmLocale/Data/bn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.70 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="bn"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">আফার</language>
			<language type="ab">আব্খাজিয়</language>
			<language type="ace">আচিনিয়</language>
			<language type="ach">আকোলী</language>
			<language type="ada">অদাগ্মে</language>
			<language type="ady">আদেগে</language>
			<language type="ae">আবেস্তীয়</language>
			<language type="af">আফ্রিকান্স</language>
			<language type="afa">অফ্রো-এশিয়াটিক</language>
			<language type="afh">আফ্রিহিলি</language>
			<language type="ain">আইনু</language>
			<language type="ak">আকান</language>
			<language type="akk">আক্কাদিয়ান</language>
			<language type="ale">আলেউত</language>
			<language type="alg">আলগোঙকুইআন</language>
			<language type="alt">দক্ষিন আলতাই</language>
			<language type="am">আমহারিক</language>
			<language type="an">আর্গোনিজ</language>
			<language type="ang">প্রাচীন ইংরেজী</language>
			<language type="anp">আঙ্গীকা</language>
			<language type="apa">অ্যাপাচি</language>
			<language type="ar">আরবী</language>
			<language type="arc">আরামাইক</language>
			<language type="arn">অ্যারোকেনিয়</language>
			<language type="arp">আরাপাহো</language>
			<language type="art">কৃত্রিম</language>
			<language type="arw">আরাওয়াক</language>
			<language type="as">আসামি</language>
			<language type="ast">আস্তুরিয়</language>
			<language type="ath">আথাপাস্কান</language>
			<language type="aus">অস্ট্রেলিয়</language>
			<language type="av">আভেরিক</language>
			<language type="awa">আওয়াধি</language>
			<language type="ay">আয়মারা</language>
			<language type="az">আজারবাইজানীয়</language>
			<language type="ba">বাশকির</language>
			<language type="bad">বান্দা</language>
			<language type="bai">বামিলেকে</language>
			<language type="bal">বেলুচীয়</language>
			<language type="ban">বালিনীয়</language>
			<language type="bas">বাসা</language>
			<language type="bat">বাল্টিক</language>
			<language type="be">বেলারুশিয়</language>
			<language type="bej">বেজা</language>
			<language type="bem">বেম্বা</language>
			<language type="ber">বেরবের</language>
			<language type="bg">বুলগেরিয়</language>
			<language type="bh">বিহারি</language>
			<language type="bho">ভোজপুরি</language>
			<language type="bi">বিসলামা</language>
			<language type="bik">বিকোল</language>
			<language type="bin">বিনি</language>
			<language type="bla">সিকসিকা</language>
			<language type="bm">বামবারা</language>
			<language type="bn">বাংলা</language>
			<language type="bnt">বান্টু</language>
			<language type="bo">তিব্বতি</language>
			<language type="br">ব্রেটোন</language>
			<language type="bra">ব্রাজ</language>
			<language type="bs">বসনীয়</language>
			<language type="btk">বাতাক</language>
			<language type="bua">বুরিয়াত</language>
			<language type="bug">বুগিনি</language>
			<language type="byn">ব্লিন</language>
			<language type="ca">কাতালান</language>
			<language type="cad">ক্যাডো</language>
			<language type="cai">মধ্য যুক্তরাষ্ঠের আদিবাসীদের ভাষা</language>
			<language type="car">ক্যারিব</language>
			<language type="cau">ককেশীয</language>
			<language type="cch">আত্সাম</language>
			<language type="ce">চেচেন</language>
			<language type="ceb">চেবুয়ানো</language>
			<language type="cel">কেল্টিক</language>
			<language type="ch">চামেরো</language>
			<language type="chb">চিবচা</language>
			<language type="chg">চাগাতাই</language>
			<language type="chk">চুকি</language>
			<language type="chm">মারি</language>
			<language type="chn">চিনুক পরিভাষা</language>
			<language type="cho">চক্টো</language>
			<language type="chp">চিপেওয়ান</language>
			<language type="chr">চেরোকি</language>
			<language type="chy">শাইয়েন</language>
			<language type="cmc">চামিক ভাষা</language>
			<language type="co">কর্সিকান</language>
			<language type="cop">কপটিক</language>
			<language type="cpe">ইংরেজি জাত ক্রেওল অথবা পিজিন</language>
			<language type="cpf">ফরাসি জাত ক্রেওল অথবা পিজিন</language>
			<language type="cpp">পোর্তুগিজ-ভিত্তিক ক্রেওল বা পিজন</language>
			<language type="cr">ক্রি</language>
			<language type="crh">ক্রাইমিও তুর্কি</language>
			<language type="crp">ক্রেওল অথবা পিজিন</language>
			<language type="cs">চেক</language>
			<language type="csb">কাশুবিয়ান</language>
			<language type="cu">চার্চ স্লাভিও</language>
			<language type="cus">কুশিতিক ভাষা</language>
			<language type="cv">চুবাস</language>
			<language type="cy">ওয়েলশ</language>
			<language type="da">ডেনিশ</language>
			<language type="dak">ডাকোটা</language>
			<language type="dar">দার্গওয়া</language>
			<language type="day">দায়াক</language>
			<language type="de">জার্মান</language>
			<language type="de_AT">অস্ট্রিয়ান জার্মানি</language>
			<language type="de_CH">সুইস উচ্চ জার্মানি</language>
			<language type="del">ডেলাওয়ের</language>
			<language type="den">স্ল্যাভ</language>
			<language type="dgr">দোগ্রীব</language>
			<language type="din">ডিংকা</language>
			<language type="doi">দোগরি</language>
			<language type="dra">দ্রাবীড় ভাষা</language>
			<language type="dsb">নিম্নতর সোর্বিয়ান</language>
			<language type="dua">দুয়ালা</language>
			<language type="dum">মধ্য ডাচ</language>
			<language type="dv">দিবেহি</language>
			<language type="dyu">ডিউলা</language>
			<language type="dz">ভুটানি</language>
			<language type="ee">ইওয়ে</language>
			<language type="efi">এফিক</language>
			<language type="egy">প্রাচীন মিশরীয়</language>
			<language type="eka">ইকাজুক</language>
			<language type="el">গ্রিক</language>
			<language type="elx">এলামাইট</language>
			<language type="en">ইংরেজি</language>
			<language type="en_AU">অস্ট্রেলীয় ইংরেজি</language>
			<language type="en_CA">কানাডীয় ইংরেজি</language>
			<language type="en_GB">ব্রিটিশ ইংরেজি</language>
			<language type="en_US">যুক্তরাষ্ট্র ইংরেজি</language>
			<language type="enm">মধ্য ইংরেজি</language>
			<language type="eo">এস্পেরান্তো</language>
			<language type="es">স্পেনীয়</language>
			<language type="es_419">ল্যাটিন আমেরিকান স্প্যানিশ</language>
			<language type="es_ES">আইবেরিয়ান স্প্যানিশ</language>
			<language type="et">এস্তোনীয়</language>
			<language type="eu">বাস্ক</language>
			<language type="ewo">ইওন্ডো</language>
			<language type="fa">ফার্সি</language>
			<language type="fan">ফ্যাঙ্গ</language>
			<language type="fat">ফান্তি</language>
			<language type="ff">ফুলাহ্</language>
			<language type="fi">ফিনিশ</language>
			<language type="fil">ফিলিপিনো</language>
			<language type="fiu">ফিনো-ইউগ্রিক</language>
			<language type="fj">ফিজিও</language>
			<language type="fo">ফেরাউনি</language>
			<language type="fon">ফন</language>
			<language type="fr">ফরাসি</language>
			<language type="fr_CA">কানাডীয় ফরাসি</language>
			<language type="fr_CH">সুইস ফরাসি</language>
			<language type="frm">মধ্য ফরাসি</language>
			<language type="fro">প্রাচীন ফরাসি</language>
			<language type="frr">উত্তরাঞ্চলীয় ফ্রিসিয়ান</language>
			<language type="frs">পূর্ব ফ্রিসিয়</language>
			<language type="fur">ফ্রিউলিয়ান</language>
			<language type="fy">পশ্চিম ফ্রিসিয়</language>
			<language type="ga">আইরিশ</language>
			<language type="gaa">গা</language>
			<language type="gay">গায়ো</language>
			<language type="gba">বায়া</language>
			<language type="gd">স্কটস-গ্যেলিক</language>
			<language type="gem">জার্মানিক ভাষা</language>
			<language type="gez">গীজ</language>
			<language type="gil">গিলবার্টিজ</language>
			<language type="gl">গ্যালিশিয়</language>
			<language type="gmh">মধ্য-উচ্চ জার্মানি</language>
			<language type="gn">গুয়ারানি</language>
			<language type="goh">প্রাচীন উচ্চ জার্মানি</language>
			<language type="gon">গোন্ডি</language>
			<language type="gor">গোরোন্তালো</language>
			<language type="got">গথিক</language>
			<language type="grb">গ্রেবো</language>
			<language type="grc">প্রাচীন গ্রীক</language>
			<language type="gsw">সুইস জার্মানি</language>
			<language type="gu">গুজরাটি</language>
			<language type="gv">ম্যাঙ্কস</language>
			<language type="gwi">গওইচ্’ইন</language>
			<language type="ha">হাউসা</language>
			<language type="hai">হাইডা</language>
			<language type="haw">হাওয়াইয়ান</language>
			<language type="he">হিব্রু</language>
			<language type="hi">হিন্দি</language>
			<language type="hil">হিলিগ্যায়নোন</language>
			<language type="him">হিমাচালি</language>
			<language type="hit">হিট্টিট</language>
			<language type="hmn">হ্‌মোঙ</language>
			<language type="ho">হিরি মোতু</language>
			<language type="hr">ক্রোয়েশীয়</language>
			<language type="hsb">উচ্চ সোর্বিয়ান</language>
			<language type="ht">হাইতিয়ান</language>
			<language type="hu">হাঙ্গেরীয়</language>
			<language type="hup">হুপা</language>
			<language type="hy">আর্মেনিয়</language>
			<language type="hz">হেরেরো</language>
			<language type="ia">ইন্টারলিঙ্গুয়া</language>
			<language type="iba">ইবান</language>
			<language type="id">ইন্দোনেশীয়</language>
			<language type="ie">ইন্টারলিঙ্গ্</language>
			<language type="ig">ইগ্‌বো</language>
			<language type="ii">সিছুয়ান</language>
			<language type="ijo">ইজো</language>
			<language type="ik">ইনুপিয়াক</language>
			<language type="ilo">ইলোকো</language>
			<language type="inc">ভারতীয় ভাষা</language>
			<language type="ine">ইন্দো-ইউরোপীয় ভাষা</language>
			<language type="inh">ইঙ্গুশ</language>
			<language type="io">ইডো</language>
			<language type="ira">ইরানী ভাষা</language>
			<language type="iro">ইরোকুওইয়ান ভাষা</language>
			<language type="is">আইসল্যান্ডীয়</language>
			<language type="it">ইতালীয়</language>
			<language type="iu">ইনুক্টিটুট</language>
			<language type="ja">জাপানি</language>
			<language type="jbo">লোজবান</language>
			<language type="jpr">জুদেও ফার্সি</language>
			<language type="jrb">জুদেও আরবি</language>
			<language type="jv">জাভানি</language>
			<language type="ka">জর্জিয়ান</language>
			<language type="kaa">কারা-কাল্পাক</language>
			<language type="kab">কাবাইলে</language>
			<language type="kac">কাচিন</language>
			<language type="kaj">অজ্জু</language>
			<language type="kam">কাম্বা</language>
			<language type="kar">কারেন</language>
			<language type="kaw">কাউই</language>
			<language type="kbd">কাবার্ডিয়ান</language>
			<language type="kcg">টাইয়াপ</language>
			<language type="kfo">কোরো</language>
			<language type="kg">কোঙ্গো</language>
			<language type="kha">খাশি</language>
			<language type="khi">খোয়েশান ভাষা</language>
			<language type="kho">খোটানিজ</language>
			<language type="ki">কিকু্ইয়ু</language>
			<language type="kj">কোয়ানিয়ামা</language>
			<language type="kk">কাজাখ</language>
			<language type="kl">ক্যালাল্লিসুট</language>
			<language type="km">খমের</language>
			<language type="kmb">কিম্বুন্দু</language>
			<language type="kn">কান্নাড়ী</language>
			<language type="ko">কোরিয়ান</language>
			<language type="kok">কোঙ্কানি</language>
			<language type="kos">কোস্রাইন</language>
			<language type="kpe">ক্‌পেল্লে</language>
			<language type="kr">কানুরি</language>
			<language type="krc">কারচে-বাল্কার</language>
			<language type="krl">কারেলিয়ান</language>
			<language type="kro">ক্রু</language>
			<language type="kru">কুরুখ</language>
			<language type="ks">কাশ্মীরী</language>
			<language type="ku">কুর্দি</language>
			<language type="kum">কুমিক</language>
			<language type="kut">কুটেনাই</language>
			<language type="kv">কোমি</language>
			<language type="kw">কর্ণিশ</language>
			<language type="ky">কির্গিজ</language>
			<language type="la">লাটিন</language>
			<language type="lad">লাডিনো</language>
			<language type="lah">লান্ডা</language>
			<language type="lam">লাম্বা</language>
			<language type="lb">লুক্সেমবার্গীয়</language>
			<language type="lez">লেজঘিয়ান</language>
			<language type="lg">গ্যান্ডা</language>
			<language type="li">লিম্বুর্গিশ</language>
			<language type="ln">লিঙ্গালা</language>
			<language type="lo">লাও</language>
			<language type="lol">মোঙ্গো</language>
			<language type="loz">লোজি</language>
			<language type="lt">লিথুয়েনীয</language>
			<language type="lu">লুবা-কাটাঙ্গা</language>
			<language type="lua">লুবা-লুলুয়া</language>
			<language type="lui">লুইসেনো</language>
			<language type="lun">লুন্ডা</language>
			<language type="luo">লুয়ো</language>
			<language type="lus">লুশাই</language>
			<language type="lv">লাত্‌ভীয়</language>
			<language type="mad">মাদুরেসে</language>
			<language type="mag">মাঘি</language>
			<language type="mai">মৈথিলি</language>
			<language type="mak">ম্যাকাসার</language>
			<language type="man">ম্যান্ডিঙ্গো</language>
			<language type="map">অস্ট্রোনেশীয়</language>
			<language type="mas">মাসাই</language>
			<language type="mdf">মোকশা</language>
			<language type="mdr">ম্যাণ্ডার</language>
			<language type="men">মেন্ডে</language>
			<language type="mg">মালাগাসি</language>
			<language type="mga">মধ্য আইরিশ</language>
			<language type="mh">মার্শালিজ</language>
			<language type="mi">মাওরি</language>
			<language type="mic">মিকম্যাক</language>
			<language type="min">মিনাঙ্গ্‌কাবাউ</language>
			<language type="mis">বিবিধ ভাষা</language>
			<language type="mk">ম্যাসেডোনীয</language>
			<language type="mkh">মন-খমের ভাষা</language>
			<language type="ml">মালেয়ালাম</language>
			<language type="mn">মঙ্গোলিয়</language>
			<language type="mnc">মাঞ্চু</language>
			<language type="mni">মণিপুরী</language>
			<language type="mno">ম্যানোবো ভাষা</language>
			<language type="mo">মলদাভিয়</language>
			<language type="moh">মোহাওক</language>
			<language type="mos">মসি</language>
			<language type="mr">মারাঠি</language>
			<language type="ms">মালে</language>
			<language type="mt">মল্টিয়</language>
			<language type="mul">বহুগুণিতক ভাষাসমূহ</language>
			<language type="mun">মুণ্ডা ভাষা</language>
			<language type="mus">ক্রিক</language>
			<language type="mwl">মিরান্ডিজ</language>
			<language type="mwr">মারোয়ারি</language>
			<language type="my">বর্মি</language>
			<language type="myn">মায়ান ভাষা</language>
			<language type="myv">এরজিয়া</language>
			<language type="na">নাউরু</language>
			<language type="nah">নাহুৎল</language>
			<language type="nai">উত্তৱ আমেরিকার ইন্ডিয়ান ভাষা</language>
			<language type="nap">নেয়াপোলিটান</language>
			<language type="nb">নরওয়ে বোকমাল</language>
			<language type="nd">উত্তর এন্দেবিলি</language>
			<language type="nds">নিম্ন জার্মানি</language>
			<language type="ne">নেপালী</language>
			<language type="new">নেওয়ারি</language>
			<language type="ng">এন্দোঙ্গা</language>
			<language type="nia">নিয়াস</language>
			<language type="nic">নাইজার-কোর্ডোফানিয়ান ভাষা</language>
			<language type="niu">নিউয়ান</language>
			<language type="nl">ডাচ</language>
			<language type="nl_BE">ফ্লেমিশ</language>
			<language type="nn">নরওয়েজীয় (নিনর্স্ক)</language>
			<language type="no">নরওয়েজীয়</language>
			<language type="nog">নৌগাই</language>
			<language type="non">প্রাচীন নর্স</language>
			<language type="nqo">এন’কো</language>
			<language type="nr">দক্ষিণ এনডেবেলে</language>
			<language type="nso">উত্তরাঞ্চলীয় সোথো</language>
			<language type="nub">নুবিয়ান ভাষা</language>
			<language type="nv">নাভাজো</language>
			<language type="nwc">প্রাচীন নেওয়ারী</language>
			<language type="ny">নায়াঞ্জা</language>
			<language type="nym">নায়ামওয়েজি</language>
			<language type="nyn">নায়াঙ্কোলে</language>
			<language type="nyo">নায়োরো</language>
			<language type="nzi">এন্.জিমা</language>
			<language type="oc">অক্সিটান</language>
			<language type="oj">ওজিবওয়া</language>
			<language type="om">অরোমো</language>
			<language type="or">উড়িয়া</language>
			<language type="os">ওসেটিক</language>
			<language type="osa">ওস্যাগে</language>
			<language type="ota">অটোমান তুর্কি</language>
			<language type="oto">অটোমান ভাষা</language>
			<language type="pa">পাঞ্জাবী</language>
			<language type="paa">পাপুয়ান ভাষা</language>
			<language type="pag">পাঙ্গাসিনান</language>
			<language type="pal">পাহ্লাভি</language>
			<language type="pam">পাম্পাঙ্গা</language>
			<language type="pap">পাপিয়ামেন্টো</language>
			<language type="pau">পালায়ুয়ান</language>
			<language type="peo">প্রাচীন ফার্সি</language>
			<language type="phi">ফিলিপাইন ভাষা</language>
			<language type="phn">ফিনিশীয়</language>
			<language type="pi">পালি</language>
			<language type="pl">পোলিশ</language>
			<language type="pon">পোহ্নপেইয়ান</language>
			<language type="pra">প্রাকৃত ভাষা</language>
			<language type="pro">প্রাচীন প্রোভেনক্যাল</language>
			<language type="ps">পশ্তু</language>
			<language type="pt">পর্তুগীজ</language>
			<language type="pt_BR">ব্রাজিলীয় পর্তুগীজ</language>
			<language type="pt_PT">আইবেরিয়ান পর্তুগিজ</language>
			<language type="qu">কেচুয়া</language>
			<language type="raj">রাজস্থানী</language>
			<language type="rap">রাপানুই</language>
			<language type="rar">রারোটোগ্যান</language>
			<language type="rm">রেটো-রোমানীয়</language>
			<language type="rn">রুন্দি</language>
			<language type="ro">রোমানীয়</language>
			<language type="roa">রোমান ভাষা</language>
			<language type="rom">রোমানি</language>
			<language type="root">মূল</language>
			<language type="ru">রুশ</language>
			<language type="rup">আরোমানিয়</language>
			<language type="rw">কিনয়ারোয়ান্ডা</language>
			<language type="sa">সংষ্কৃত</language>
			<language type="sad">স্যান্ডাওয়ে</language>
			<language type="sah">ইয়াকুট</language>
			<language type="sai">উত্তর আমেরিকান ইন্ডিয়ান ভাষা</language>
			<language type="sal">শালিশান ভাষা</language>
			<language type="sam">সামারিটান আরামিক</language>
			<language type="sas">সাসাক</language>
			<language type="sat">সাঁওতালি</language>
			<language type="sc">সার্ডিনোয়ান</language>
			<language type="scn">সিসিলিয়ান</language>
			<language type="sco">স্কটস</language>
			<language type="sd">সিন্ধি</language>
			<language type="se">উত্তরাঞ্চলীয় সামি</language>
			<language type="sel">সেল্কুপ</language>
			<language type="sem">সেমেটিক ভাষা</language>
			<language type="sg">সাঙ্গো</language>
			<language type="sga">প্রাচীন আইরিশ</language>
			<language type="sgn">চিহ্ন ভাষা</language>
			<language type="sh">সার্বো-ক্রোয়েশিয়</language>
			<language type="shn">শ্যান</language>
			<language type="si">সিংহলী</language>
			<language type="sid">সিডামো</language>
			<language type="sio">সিওয়ুয়ান ভাষা</language>
			<language type="sit">সিনো-তিব্বোতীয় ভাষা</language>
			<language type="sk">স্লোভাক</language>
			<language type="sl">স্লোভেনীয়</language>
			<language type="sla">স্ল্যাভিক ভাষা</language>
			<language type="sm">সামোয়ান</language>
			<language type="sma">দক্ষিণাঞ্চলীয় সামি</language>
			<language type="smi">সামি ভাষা</language>
			<language type="smj">লুলে সামি</language>
			<language type="smn">ইনারি সামি</language>
			<language type="sms">স্কোল্ট সামি</language>
			<language type="sn">শোনা</language>
			<language type="snk">সোনিঙ্কে</language>
			<language type="so">সোমালী</language>
			<language type="sog">সোগডিয়ান</language>
			<language type="son">সোঙ্গহাই</language>
			<language type="sq">আলবেনীয়</language>
			<language type="sr">সার্বীয়</language>
			<language type="srn">স্রানান টোঙ্গো</language>
			<language type="srr">সেরে</language>
			<language type="ss">সোয়াতি</language>
			<language type="ssa">নিলো-সাহারান ভাষা</language>
			<language type="st">দক্ষিন সোথো</language>
			<language type="su">সুদানী</language>
			<language type="suk">সুকুমা</language>
			<language type="sus">সুসু</language>
			<language type="sux">সুমেরীয়</language>
			<language type="sv">সুইডিশ</language>
			<language type="sw">সোয়াহিলি</language>
			<language type="syc">প্রাচীন সিরিও</language>
			<language type="syr">সিরিয়াক</language>
			<language type="ta">তামিল</language>
			<language type="tai">তাই ভাষা</language>
			<language type="te">তেলেগু</language>
			<language type="tem">টাইম্নে</language>
			<language type="ter">তেরেনো</language>
			<language type="tet">তেতুম</language>
			<language type="tg">তাজিক</language>
			<language type="th">থাই</language>
			<language type="ti">তিগরিনিয়া</language>
			<language type="tig">টাইগ্রে</language>
			<language type="tiv">টিভ</language>
			<language type="tk">তুর্কমেনী</language>
			<language type="tkl">টোকেলাউ</language>
			<language type="tl">তাগালগ</language>
			<language type="tlh">ক্লিঙ্গন</language>
			<language type="tli">ত্লিঙ্গিট</language>
			<language type="tmh">তামাশেক</language>
			<language type="tn">ত্‍সওয়ানা</language>
			<language type="to">টঙ্গা</language>
			<language type="tog">নায়াসা টোঙ্গা</language>
			<language type="tpi">টোক পিসিন</language>
			<language type="tr">তুর্কী</language>
			<language type="ts">ত্‍সঙ্গা</language>
			<language type="tsi">সিমশিয়ান</language>
			<language type="tt">তাতার</language>
			<language type="tum">তুম্বুকা</language>
			<language type="tup">তুপি ভাষা</language>
			<language type="tut">আলতায়ীক ভাষা</language>
			<language type="tvl">টুভালু</language>
			<language type="tw">টোয়াই</language>
			<language type="ty">তাহিতিয়ান</language>
			<language type="tyv">টুভিনিয়ান</language>
			<language type="udm">উডমুর্ট</language>
			<language type="ug">উইঘুর</language>
			<language type="uga">উগারিটিক</language>
			<language type="uk">ইউক্রেনীয়</language>
			<language type="umb">উম্বুন্দু</language>
			<language type="und">অজানা বা ভুল ভাষা</language>
			<language type="ur">উর্দু</language>
			<language type="uz">উজবেকীয়</language>
			<language type="vai">ভাই</language>
			<language type="ve">ভেন্ডা</language>
			<language type="vi">ভিয়েতনামী</language>
			<language type="vo">ভোলাপুক</language>
			<language type="vot">ভোটিক</language>
			<language type="wa">ওয়ালুন</language>
			<language type="wak">ওয়াকাশান ভাষা</language>
			<language type="wal">ওয়ালামো</language>
			<language type="war">ওয়ারে</language>
			<language type="was">ওয়াশা</language>
			<language type="wen">সোরবিয়ান ভাষা</language>
			<language type="wo">উওলোফ</language>
			<language type="xal">কাল্মাইক</language>
			<language type="xh">জোসা</language>
			<language type="yao">ইয়াও</language>
			<language type="yap">ইয়াপেসে</language>
			<language type="yi">য়িদ্দিশ</language>
			<language type="yo">ইওরুবা</language>
			<language type="ypk">ইয়ুপিক ভাষা</language>
			<language type="za">ঝু্য়াঙ</language>
			<language type="zap">জাপোটেক</language>
			<language type="zbl">চিত্র ভাষা</language>
			<language type="zen">জেনাগা</language>
			<language type="zh">চীনা</language>
			<language type="zh_Hans">সহজ চীনা</language>
			<language type="zh_Hant">প্রথাগত চীনা</language>
			<language type="znd">জান্ডে</language>
			<language type="zu">জুলু</language>
			<language type="zun">জুনি</language>
			<language type="zxx">ভাষাতাত্তিক বিষয়সূচী বহির্ভুত</language>
			<language type="zza">জাজা</language>
		</languages>
		<scripts>
			<script type="Arab">আরবি</script>
			<script type="Armi">আরমি</script>
			<script type="Armn">আর্মেনীয়</script>
			<script type="Avst">আভেসতান</script>
			<script type="Bali">বালীয়</script>
			<script type="Batk">বাটাক</script>
			<script type="Beng">বাংলা</script>
			<script type="Blis">ব্লিসপ্রতীক</script>
			<script type="Bopo">বোপোমোফো</script>
			<script type="Brah">ব্রাহ্মী</script>
			<script type="Brai">ব্রাইলে</script>
			<script type="Bugi">বুগি</script>
			<script type="Buhd">বুহি্দ</script>
			<script type="Cakm">চাকমা</script>
			<script type="Cans">ক্যান্স</script>
			<script type="Cari">ক্যারিয়ান</script>
			<script type="Cham">চ্যাম</script>
			<script type="Cher">চেরোকি</script>
			<script type="Cirt">কির্ট</script>
			<script type="Copt">কোপ্টিক</script>
			<script type="Cprt">সাইপ্রোয়েট</script>
			<script type="Cyrl">সিরিলিক</script>
			<script type="Cyrs">স্লাবোনিক সিরিলিক (প্রাচীন)</script>
			<script type="Deva">দেবনাগরি</script>
			<script type="Dsrt">দেসেরাত</script>
			<script type="Egyd">মিশরীয় ডেমোটিক</script>
			<script type="Egyh">মিশরীয় হায়রেটিক</script>
			<script type="Egyp">মিশরীয় হায়ারোগ্লিপ</script>
			<script type="Ethi">ইথিওপিয়</script>
			<script type="Geok">জর্জিয় খুৎসুরি</script>
			<script type="Geor">জর্জিয়ান</script>
			<script type="Glag">গ্লাগোলিটিক</script>
			<script type="Goth">গোথিক</script>
			<script type="Grek">গ্রিক</script>
			<script type="Gujr">গুজরাটি</script>
			<script type="Guru">গুরুমুখি</script>
			<script type="Hang">হাঙ্গুল</script>
			<script type="Hani">হ্যান</script>
			<script type="Hano">হ্যানুনু</script>
			<script type="Hans">সরলীকৃত হ্যান</script>
			<script type="Hant">প্রথাগত হ্যান</script>
			<script type="Hebr">হিব্রু</script>
			<script type="Hira">হিরাগানা</script>
			<script type="Hmng">ফাহাও মঙ</script>
			<script type="Hrkt">কাটাকানা অথবা হিরাগানা</script>
			<script type="Hung">পুরোনো হাঙ্গেরীয়</script>
			<script type="Inds">সিন্ধু</script>
			<script type="Ital">প্রাচীন ইতালি</script>
			<script type="Java">জাভা</script>
			<script type="Jpan">জাপানী</script>
			<script type="Kali">কায়াহ লি</script>
			<script type="Kana">কাটাকানা</script>
			<script type="Khar">খরোষ্ঠী</script>
			<script type="Khmr">খমের</script>
			<script type="Knda">কান্নাডা</script>
			<script type="Kore">কোরিয়ান</script>
			<script type="Kthi">কাইথি</script>
			<script type="Lana">লান্না</script>
			<script type="Laoo">লাও</script>
			<script type="Latf">ফ্রাক্টুর ল্যাটিন</script>
			<script type="Latg">গ্যালিক ল্যাটিন</script>
			<script type="Latn">ল্যাটিন</script>
			<script type="Lepc">লেপ্চা</script>
			<script type="Limb">লিম্বু</script>
			<script type="Lina">লিনিয়ার এ</script>
			<script type="Linb">লিনিয়ার বি</script>
			<script type="Lyci">লাইসিয়ান</script>
			<script type="Lydi">লাইডিয়ান</script>
			<script type="Mand">ম্যান্ডায়ীন</script>
			<script type="Mani">ম্যানিচাইন</script>
			<script type="Maya">মায়ান হায়ারোগ্লিপ</script>
			<script type="Mero">মেরোটিক</script>
			<script type="Mlym">মালায়ালাম</script>
			<script type="Mong">মোঙ্গোলীয়</script>
			<script type="Moon">মুন</script>
			<script type="Mtei">মেইটেই মায়েক</script>
			<script type="Mymr">মায়ানমার</script>
			<script type="Nkoo">এনকো</script>
			<script type="Ogam">ওঘাম</script>
			<script type="Olck">ওই চিকি</script>
			<script type="Orkh">অর্খোন</script>
			<script type="Orya">উড়িয়া</script>
			<script type="Osma">ওসমানিয়</script>
			<script type="Perm">প্রাচীন পার্মিক</script>
			<script type="Phag">ফাগ্সপা</script>
			<script type="Phli">খদিত পাহলভি</script>
			<script type="Phlp">সল্টার পাহলভি</script>
			<script type="Phlv">পুস্তক পাহলভি</script>
			<script type="Phnx">ফিনিশিয়</script>
			<script type="Plrd">পোলার্ড ধ্বনিক</script>
			<script type="Prti">পার্থিয়ন</script>
			<script type="Qaai">কাই</script>
			<script type="Rjng">রেজ্যাঙ্গ</script>
			<script type="Roro">রোঙ্গোরোঙ্গো</script>
			<script type="Runr">রুনিক</script>
			<script type="Samr">সমেরিটন</script>
			<script type="Sara">সারাতি</script>
			<script type="Saur">সৌরাষ্ট্র</script>
			<script type="Sgnw">চিহ্ন লিখন</script>
			<script type="Shaw">সাভিয়ান</script>
			<script type="Sinh">সিংহলি</script>
			<script type="Sund">সান্দানিজ</script>
			<script type="Sylo">সিলেটি নাগরি</script>
			<script type="Syrc">সিরিয়াক</script>
			<script type="Syre">এস্ট্রেঙ্গেলো সিরিয়াক</script>
			<script type="Syrj">পশ্চিমাঞ্চলীয় সিরিয়াক</script>
			<script type="Syrn">পূর্বাঞ্চলীয় সিরিয়াক</script>
			<script type="Tagb">টাগোওয়ানা</script>
			<script type="Tale">তাইলে</script>
			<script type="Talu">নতুন তাই লু</script>
			<script type="Taml">তামিল</script>
			<script type="Tavt">তাই ভিয়েৎ</script>
			<script type="Telu">তেলেগু</script>
			<script type="Teng">তেঙ্গোয়ার</script>
			<script type="Tfng">তিফিনাগ</script>
			<script type="Tglg">টাগালগ</script>
			<script type="Thaa">থানা</script>
			<script type="Thai">থাই</script>
			<script type="Tibt">তিব্বতি</script>
			<script type="Ugar">উগারিটিক</script>
			<script type="Vaii">ভাই</script>
			<script type="Visp">দৃশ্যমান ভাষা</script>
			<script type="Xpeo">প্রাচীন ফার্সি</script>
			<script type="Xsux">সুমের-আক্কাদীয় কীলকরূপ</script>
			<script type="Yiii">উই</script>
			<script type="Zmth">গানিতিক চিহ্ন</script>
			<script type="Zsym">প্রতীকসমুহ</script>
			<script type="Zxxx">অলিখিত</script>
			<script type="Zyyy">সাধারন</script>
			<script type="Zzzz">অজানা বা ভুল ভাষা</script>
		</scripts>
		<territories>
			<territory type="001">পৃথিবী</territory>
			<territory type="002">আফ্রিকা</territory>
			<territory type="003">উত্তর আমেরিক</territory>
			<territory type="005">দক্ষিন আমেরিকা</territory>
			<territory type="009">ওসানিয়া</territory>
			<territory type="011">পশ্চিমাঞ্চলীয় আফ্রিকা</territory>
			<territory type="013">মধ্য আমেরিকা</territory>
			<territory type="014">পশ্চিম আফ্রিকা</territory>
			<territory type="015">উত্তর আফ্রিকা</territory>
			<territory type="017">মধ্য আফ্রিকা</territory>
			<territory type="018">দক্ষিণাঞ্চলীয় আফ্রিকা</territory>
			<territory type="019">আমেরিকা</territory>
			<territory type="021">উত্তরাঞ্চলীয় আমেরিকা</territory>
			<territory type="029">ক্যারাবিয়ান</territory>
			<territory type="030">পশ্চিম এশিয়া</territory>
			<territory type="034">দক্ষিণাঞ্চলীয় এশিয়া</territory>
			<territory type="035">দক্ষিন পূর্ব এশিয়া</territory>
			<territory type="039">দক্ষিণাঞ্চলীয় ইউরোপ</territory>
			<territory type="053">অস্ট্রেলিয়া এবং নিউজিল্যান্ড</territory>
			<territory type="054">ম্যালেনিশা</territory>
			<territory type="057">ম্যালেনিশা অঞ্চল</territory>
			<territory type="061">পলিনেশিয়া</territory>
			<territory type="062">দক্ষিন মধ্য এশিয়া</territory>
			<territory type="142">এশিয়া</territory>
			<territory type="143">মধ্য এশিয়া</territory>
			<territory type="145">পশ্চিমাঞ্চলীয় এশিয়া</territory>
			<territory type="150">ইউরোপ</territory>
			<territory type="151">পশ্চিম ইউরোপ</territory>
			<territory type="154">উত্তরাঞ্চলীয় ইউরোপ</territory>
			<territory type="155">পশ্চিমাঞ্চলীয় ইউরোপ</territory>
			<territory type="172">স্বাধীন রাষ্ট্রের কমনওয়েলথ</territory>
			<territory type="419">ল্যাটিন আমেরিকা এবং ক্যারাবিয়ান</territory>
			<territory type="AD">এ্যান্ডোরা</territory>
			<territory type="AE">সংযুক্ত আরব আমিরাত</territory>
			<territory type="AF">আফগানিস্তান</territory>
			<territory type="AG">এন্টিগুয়া ও বারবুডা</territory>
			<territory type="AI">এ্যাঙ্গুইলা</territory>
			<territory type="AL">আলব্যানিয়া</territory>
			<territory type="AM">আর্মেনিয়া</territory>
			<territory type="AN">নেদারল্যান্ডস এ্যান্টিলিস</territory>
			<territory type="AO">এ্যাঙ্গোলা</territory>
			<territory type="AQ">এন্টার্কটিকা</territory>
			<territory type="AR">আর্জেণ্টাইনা</territory>
			<territory type="AS">আমেরিকান সামোয়া</territory>
			<territory type="AT">অস্ট্রিয়া</territory>
			<territory type="AU">অস্ট্রেলিয়া</territory>
			<territory type="AW">আরুবা</territory>
			<territory type="AX">আলান্ড দ্বীপপুঞ্জ</territory>
			<territory type="AZ">আজারবাইজান</territory>
			<territory type="BA">বসনিয়া ও হার্জেগোভিনা</territory>
			<territory type="BB">বারবাদোস</territory>
			<territory type="BD">বাংলাদেশ</territory>
			<territory type="BE">বেল্জিয়ম</territory>
			<territory type="BF">বুরকিনা ফাসো</territory>
			<territory type="BG">বুলগেরিয়া</territory>
			<territory type="BH">বাহরাইন</territory>
			<territory type="BI">বুরুন্ডি</territory>
			<territory type="BJ">বেনিন</territory>
			<territory type="BL">সেন্ট</territory>
			<territory type="BM">বারমুডা</territory>
			<territory type="BN">ব্রুনেই</territory>
			<territory type="BO">বোলিভিয়া</territory>
			<territory type="BR">ব্রাজিল</territory>
			<territory type="BS">বাহামা দ্বীপপুঞ্জ</territory>
			<territory type="BT">ভুটান</territory>
			<territory type="BV">বোভেট দ্বীপ</territory>
			<territory type="BW">বতসোয়ানা</territory>
			<territory type="BY">বেলোরুশিয়া</territory>
			<territory type="BZ">বেলজিয়াম</territory>
			<territory type="CA">কানাডা</territory>
			<territory type="CC">কোকোস দ্বীপপুঞ্জ</territory>
			<territory type="CD">কঙ্গো - কিনসাসা</territory>
			<territory type="CF">মধ্য আফ্রিকান প্রজাতন্ত্র</territory>
			<territory type="CG">কঙ্গো</territory>
			<territory type="CH">সুইজর্লণ্ড</territory>
			<territory type="CI">আইভরি কোস্ট</territory>
			<territory type="CK">কুক দ্বীপপুঞ্জ</territory>
			<territory type="CL">চিলি</territory>
			<territory type="CM">ক্যামেরুন</territory>
			<territory type="CN">চীন</territory>
			<territory type="CO">কোলোম্বিয়া</territory>
			<territory type="CR">কোস্টারিকা</territory>
			<territory type="CU">কিউবা</territory>
			<territory type="CV">কেপভার্দে</territory>
			<territory type="CX">ক্রিসমাস দ্বীপ</territory>
			<territory type="CY">সাইপ্রাস</territory>
			<territory type="CZ">চেক প্রজাতন্ত্র</territory>
			<territory type="DE">জার্মানি</territory>
			<territory type="DJ">জিবুতি</territory>
			<territory type="DK">ডেন্মার্ক</territory>
			<territory type="DM">ডোমেনিকা</territory>
			<territory type="DO">ডোমেনিকান প্রজাতন্ত্র</territory>
			<territory type="DZ">এলজিরিয়া</territory>
			<territory type="EC">ইকোয়াডর</territory>
			<territory type="EE">এস্তোনিয়া</territory>
			<territory type="EG">মিশর</territory>
			<territory type="EH">পশ্চিমী সাহারা</territory>
			<territory type="ER">ইরিত্রিয়া</territory>
			<territory type="ES">স্পেন</territory>
			<territory type="ET">ইফিওপিয়া</territory>
			<territory type="FI">ফিন্ল্যাণ্ড</territory>
			<territory type="FJ">ফিজি</territory>
			<territory type="FK">ফকল্যান্ড দ্বীপপুঞ্জ</territory>
			<territory type="FM">মাইক্রোনেশিয়া</territory>
			<territory type="FO">ফ্যারও দ্বীপপুঞ্জ</territory>
			<territory type="FR">ফ্রান্স</territory>
			<territory type="GA">গ্যাবন</territory>
			<territory type="GB">গ্রেটবৃটেন</territory>
			<territory type="GD">গ্রেনাডা</territory>
			<territory type="GE">জর্জিয়া</territory>
			<territory type="GF">ফরাসী গায়ানা</territory>
			<territory type="GG">গ্রাঞ্জি</territory>
			<territory type="GH">গানা</territory>
			<territory type="GI">জিব্রাল্টার</territory>
			<territory type="GL">গ্রীনল্যান্ড</territory>
			<territory type="GM">গাম্বিয়া</territory>
			<territory type="GN">গিনি</territory>
			<territory type="GP">গুয়াদেলৌপ</territory>
			<territory type="GQ">নিরক্ষীয় গিনি</territory>
			<territory type="GR">গ্রীস্</territory>
			<territory type="GS">দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ</territory>
			<territory type="GT">গোয়াটিমালা</territory>
			<territory type="GU">গুয়াম</territory>
			<territory type="GW">গিনি-বিসাউ</territory>
			<territory type="GY">গিয়ানা</territory>
			<territory type="HK">হংকং</territory>
			<territory type="HM">হার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জ</territory>
			<territory type="HN">হণ্ডুরাস</territory>
			<territory type="HR">ক্রোয়েশিয়া</territory>
			<territory type="HT">হাইতি</territory>
			<territory type="HU">হাঙ্গেরি</territory>
			<territory type="ID">ইন্দোনেশিয়া</territory>
			<territory type="IE">আয়ার্লণ্ড</territory>
			<territory type="IL">ইস্রায়েল</territory>
			<territory type="IM">ম্যানদ্বীপ</territory>
			<territory type="IN">ভারত</territory>
			<territory type="IO">ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল</territory>
			<territory type="IQ">ইরাক</territory>
			<territory type="IR">ইরান</territory>
			<territory type="IS">আইসলণ্ড</territory>
			<territory type="IT">ইতালী</territory>
			<territory type="JE">জার্সি</territory>
			<territory type="JM">জ্যামেকা</territory>
			<territory type="JO">জর্ডন</territory>
			<territory type="JP">জাপান</territory>
			<territory type="KE">কেনিয়া</territory>
			<territory type="KG">কির্গিজিয়া</territory>
			<territory type="KH">কাম্বোজ</territory>
			<territory type="KI">কিরিবাতি</territory>
			<territory type="KM">কমোরোস</territory>
			<territory type="KN">সেন্ট কিটস ও নেভিস</territory>
			<territory type="KP">উত্তর কোরিয়া</territory>
			<territory type="KR">দক্ষিণ কোরিয়া</territory>
			<territory type="KW">কুয়েত</territory>
			<territory type="KY">কেম্যান দ্বীপপুঞ্জ</territory>
			<territory type="KZ">কাজাকস্থান</territory>
			<territory type="LA">লাওস</territory>
			<territory type="LB">লেবানন</territory>
			<territory type="LC">সেন্ট লুসিয়া</territory>
			<territory type="LI">লিচেনস্টেইন</territory>
			<territory type="LK">শ্রীলঙ্কা</territory>
			<territory type="LR">লাইবিরিয়া</territory>
			<territory type="LS">লেসোথো</territory>
			<territory type="LT">লিত্ভা</territory>
			<territory type="LU">লাক্সেমবার্গ</territory>
			<territory type="LV">লাত্ভিয়া</territory>
			<territory type="LY">লিবিয়া</territory>
			<territory type="MA">মোরক্কো</territory>
			<territory type="MC">মোনাকো</territory>
			<territory type="MD">মোল্দাভিয়া</territory>
			<territory type="ME">মন্টিনিগ্রো</territory>
			<territory type="MF">সেন্ট মার্টিন</territory>
			<territory type="MG">মাদাগাস্কার</territory>
			<territory type="MH">মার্শাল দ্বীপপুঞ্জ</territory>
			<territory type="MK">ম্যাসাডোনিয়া</territory>
			<territory type="ML">মালি</territory>
			<territory type="MM">মায়ানমার</territory>
			<territory type="MN">মঙ্গোলিয়া</territory>
			<territory type="MO">ম্যাকাও</territory>
			<territory type="MP">উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ</territory>
			<territory type="MQ">মার্টিনিক</territory>
			<territory type="MR">মরিতানিয়া</territory>
			<territory type="MS">মন্টসেরাট</territory>
			<territory type="MT">মাল্টা</territory>
			<territory type="MU">মরিশাস</territory>
			<territory type="MV">মালদ্বীপ</territory>
			<territory type="MW">মালাউই</territory>
			<territory type="MX">মক্সিকো</territory>
			<territory type="MY">মাল্যাশিয়া</territory>
			<territory type="MZ">মোজাম্বিক</territory>
			<territory type="NA">নামিবিয়া</territory>
			<territory type="NC">নিউ ক্যালেডোনিয়া</territory>
			<territory type="NE">নাইজার</territory>
			<territory type="NF">নিরফোক দ্বীপ</territory>
			<territory type="NG">নাইজেরিয়া</territory>
			<territory type="NI">নিকারাগোয়া</territory>
			<territory type="NL">হলণ্ড</territory>
			<territory type="NO">নরওয়ে</territory>
			<territory type="NP">নেপাল</territory>
			<territory type="NR">নাউরু</territory>
			<territory type="NU">নিউয়ে</territory>
			<territory type="NZ">নিউ জিলণ্ড</territory>
			<territory type="OM">ওমান</territory>
			<territory type="PA">পানামা</territory>
			<territory type="PE">পিরু</territory>
			<territory type="PF">ফরাসী পলিনেশিয়া</territory>
			<territory type="PG">পাপুয়া নিউ গিনি</territory>
			<territory type="PH">ফিলিপাইন</territory>
			<territory type="PK">পাকিস্তান</territory>
			<territory type="PL">পোল্যাণ্ড</territory>
			<territory type="PM">সেন্ট পিয়ের ও মিকুয়েলন</territory>
			<territory type="PN">পিটকেয়ার্ন</territory>
			<territory type="PR">পুয়ের্টোরিকো</territory>
			<territory type="PS">ফিলিস্তিন অঞ্চল</territory>
			<territory type="PT">পর্তুগাল</territory>
			<territory type="PW">পালাউ</territory>
			<territory type="PY">প্যারাগোয়ে</territory>
			<territory type="QA">কাতার</territory>
			<territory type="QO">আউটলাইনিং ওসানিয়া</territory>
			<territory type="QU">ইউরোপীয় ইউনিয়ন</territory>
			<territory type="RE">রিইউনিয়ন</territory>
			<territory type="RO">রুমানিয়া</territory>
			<territory type="RS">সারবিয়া</territory>
			<territory type="RU">রাশিয়া</territory>
			<territory type="RW">রুয়ান্ডা</territory>
			<territory type="SA">সাউদি আরব</territory>
			<territory type="SB">সলোমন দ্বীপপুঞ্জ</territory>
			<territory type="SC">সিসিলি</territory>
			<territory type="SD">সুদান</territory>
			<territory type="SE">সুইডেন</territory>
			<territory type="SG">সিঙ্গাপুর</territory>
			<territory type="SH">সেন্ট হেলেন</territory>
			<territory type="SI">স্লোভানিয়া</territory>
			<territory type="SJ">স্বালবার্ড ও জান মেয়েন</territory>
			<territory type="SK">শ্লোভাকিয়া</territory>
			<territory type="SL">সিয়েরালিওন</territory>
			<territory type="SM">সান মারিনো</territory>
			<territory type="SN">সেনেগাল</territory>
			<territory type="SO">সোমালি</territory>
			<territory type="SR">সুরিনাম</territory>
			<territory type="ST">সাওটোমা ও প্রিন্সিপাল</territory>
			<territory type="SV">সালভেডর</territory>
			<territory type="SY">সিরিয়া</territory>
			<territory type="SZ">সোয়াজিল্যান্ড</territory>
			<territory type="TC">তুর্কস ও কাইকোস দ্বীপপুঞ্জ</territory>
			<territory type="TD">চাদ</territory>
			<territory type="TF">ফরাসী দক্ষিণাঞ্চল</territory>
			<territory type="TG">টোগো</territory>
			<territory type="TH">থাই</territory>
			<territory type="TJ">তাজিকস্থান</territory>
			<territory type="TK">টোকেলাউ</territory>
			<territory type="TL">পূর্ব-তিমুর</territory>
			<territory type="TM">তুর্কমেনিয়া</territory>
			<territory type="TN">টিউনিস্</territory>
			<territory type="TO">টোঙ্গা</territory>
			<territory type="TR">তুরস্ক</territory>
			<territory type="TT">ত্রিনিনাদ ও টোব্যাগো</territory>
			<territory type="TV">টুভালু</territory>
			<territory type="TW">তাইওয়ান</territory>
			<territory type="TZ">তাঞ্জানিয়া</territory>
			<territory type="UA">ইউক্রেইন</territory>
			<territory type="UG">উগান্ডা</territory>
			<territory type="UM">যুক্তরাষ্ট্রের ক্ষুদ্র ও পার্শ্ববর্তী দ্বীপপুঞ্জ</territory>
			<territory type="US">মার্কিন যুক্তরাষ্ট্র</territory>
			<territory type="UY">উরুগোয়ে</territory>
			<territory type="UZ">উজ্বেকিস্থান</territory>
			<territory type="VA">ভ্যাটিকান সিটি</territory>
			<territory type="VC">সেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনস</territory>
			<territory type="VE">ভেনেজুয়েলা</territory>
			<territory type="VG">ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ</territory>
			<territory type="VI">মার্কিন ভার্জিন দ্বীপপুঞ্জ</territory>
			<territory type="VN">ভিয়েতনাম</territory>
			<territory type="VU">ভানুয়াটু</territory>
			<territory type="WF">ওয়ালিস ও ফুটুনা</territory>
			<territory type="WS">সামোয়া</territory>
			<territory type="YE">ইমেন</territory>
			<territory type="YT">মায়োত্তে</territory>
			<territory type="ZA">দক্ষিণ আফ্রিকা</territory>
			<territory type="ZM">জাম্বিয়া</territory>
			<territory type="ZW">জিম্বাবুয়ে</territory>
			<territory type="ZZ">অজানা অথবা ভুল স্থান</territory>
		</territories>
		<keys>
			<key type="calendar">ক্যালেন্ডার</key>
			<key type="collation">সজ্জাক্রম</key>
			<key type="currency">মুদ্রা</key>
		</keys>
		<types>
			<type type="big5han" key="collation">প্রথাগত চীনা সজ্জাক্রম - বিগ৫</type>
			<type type="buddhist" key="calendar">বৌদ্ধ বর্ষপঞ্জী</type>
			<type type="chinese" key="calendar">চীনা বর্ষপঞ্জী</type>
			<type type="direct" key="collation">সঠিক সজ্জাক্রম</type>
			<type type="gb2312han" key="collation">সাধারণ চীনা সজ্জাক্রম জিবি২৩১২</type>
			<type type="gregorian" key="calendar">গ্রিগোরিয়ান বর্ষপঞ্জী</type>
			<type type="hebrew" key="calendar">হিব্রু বর্ষপঞ্জী</type>
			<type type="indian" key="calendar">ভারতীয় জাতীয় বর্ষপঞ্জী</type>
			<type type="islamic" key="calendar">ইসলামিক বর্ষপঞ্জী</type>
			<type type="islamic-civil" key="calendar">ইসলামিক সিভিল বর্ষপঞ্জী</type>
			<type type="japanese" key="calendar">জাপানী বর্ষপঞ্জী</type>
			<type type="phonebook" key="collation">ফোনবুক সজ্জাক্রম</type>
			<type type="pinyin" key="collation">পিনিন সজ্জাক্রম</type>
			<type type="roc" key="calendar">গণপ্রজাতন্ত্রী চীনা বর্ষপঞ্জী</type>
			<type type="stroke" key="collation">আবর্তিত সজ্জাক্রম</type>
			<type type="traditional" key="collation">প্রথাগত সজ্জাক্রম</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">মার্কিন</measurementSystemName>
			<measurementSystemName type="metric">মেট্রিক</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">ভাষা: {0}</codePattern>
			<codePattern type="script">লিপি: {0}</codePattern>
			<codePattern type="territory">অঞ্চল: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[় ঁ-ঃ ৺ অ-ঋ ৠ ঌ ৡ এ ঐ ও-ড {ড়} ঢ {ঢ়} ণ ত ৎ থ-ন প-য {য়} র ল শ-হ ঽ-ৄ ৢ ৣ ে ৈ ো-্ ৗ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ৸ ৹ ৲ ৳ ০-৪৷ ৫-ৱ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[৳]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">জানুয়ারী</month>
							<month type="2">ফেব্রুয়ারী</month>
							<month type="3">মার্চ</month>
							<month type="4">এপ্রিল</month>
							<month type="5">মে</month>
							<month type="6">জুন</month>
							<month type="7">জুলাই</month>
							<month type="8">আগস্ট</month>
							<month type="9">সেপ্টেম্বর</month>
							<month type="10">অক্টোবর</month>
							<month type="11">নভেম্বর</month>
							<month type="12">ডিসেম্বর</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">জানুয়ারী</month>
							<month type="2">ফেব্রুয়ারী</month>
							<month type="3">মার্চ</month>
							<month type="4">এপ্রিল</month>
							<month type="5">মে</month>
							<month type="6">জুন</month>
							<month type="7">জুলাই</month>
							<month type="8">আগস্ট</month>
							<month type="9">সেপ্টেম্বর</month>
							<month type="10">অক্টোবর</month>
							<month type="11">নভেম্বর</month>
							<month type="12">ডিসেম্বর</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">জা</month>
							<month type="2">ফে</month>
							<month type="3">মা</month>
							<month type="4">এ</month>
							<month type="5">মে</month>
							<month type="6">জুন</month>
							<month type="7">জু</month>
							<month type="8">আ</month>
							<month type="9">সে</month>
							<month type="10">অ</month>
							<month type="11">ন</month>
							<month type="12">ডি</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">রবি</day>
							<day type="mon">সোম</day>
							<day type="tue">মঙ্গল</day>
							<day type="wed">বুধ</day>
							<day type="thu">বৃহস্পতি</day>
							<day type="fri">শুক্র</day>
							<day type="sat">শনি</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">রবিবার</day>
							<day type="mon">সোমবার</day>
							<day type="tue">মঙ্গলবার</day>
							<day type="wed">বুধবার</day>
							<day type="thu">বৃহষ্পতিবার</day>
							<day type="fri">শুক্রবার</day>
							<day type="sat">শনিবার</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">র</day>
							<day type="mon">সো</day>
							<day type="tue">ম</day>
							<day type="wed">বু</day>
							<day type="thu">বৃ</day>
							<day type="fri">শু</day>
							<day type="sat">শ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">চতুর্থাংশ ১</quarter>
							<quarter type="2">চতুর্থাংশ ২</quarter>
							<quarter type="3">চতুর্থাংশ ৩</quarter>
							<quarter type="4">চতুর্থাংশ ৪</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">প্রথম চতুর্থাংশ</quarter>
							<quarter type="2">দ্বিতীয় চতুর্থাংশ</quarter>
							<quarter type="3">তৃতীয় চতুর্থাংশ</quarter>
							<quarter type="4">চতুর্থ চতুর্থাংশ</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">১</quarter>
							<quarter type="2">২</quarter>
							<quarter type="3">৩</quarter>
							<quarter type="4">৪</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>পূর্বাহ্ণ</am>
				<pm>অপরাহ্ণ</pm>
				<eras>
					<eraNames>
						<era type="0">খৃষ্টপূর্ব</era>
						<era type="1">খৃষ্টাব্দ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">খৃষ্টপূর্ব</era>
						<era type="1">খৃষ্টাব্দ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d/M/yyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM, yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d/M – E, d/M</greatestDifference>
							<greatestDifference id="d">E, d/M – E, d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM – E, d MMM</greatestDifference>
							<greatestDifference id="d">E,  d MMM – E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">d–d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a – h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a – h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a – h a v</greatestDifference>
							<greatestDifference id="h">h–h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy – M/yy</greatestDifference>
							<greatestDifference id="y">M/yy – M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d/M/yy – E, d/M/yy</greatestDifference>
							<greatestDifference id="d">E, d/M/yy – E, d/M/yy</greatestDifference>
							<greatestDifference id="y">E, d/M/yy – E, d/M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy – MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM – E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">E, d MMM – E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM, yyyy – E, d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM – MM -yyyy</greatestDifference>
							<greatestDifference id="y">MM-yyyy – MM-yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM – d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">d MMM, yyyy – d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="d">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy – d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>যুগ</displayName>
					</field>
					<field type="year">
						<displayName>বছর</displayName>
					</field>
					<field type="month">
						<displayName>মাস</displayName>
					</field>
					<field type="week">
						<displayName>সপ্তাহ</displayName>
					</field>
					<field type="day">
						<displayName>দিন</displayName>
						<relative type="0">আজ</relative>
						<relative type="1">আগামীকাল</relative>
						<relative type="2">আগামী পরশু</relative>
						<relative type="3">আগামী তরশু</relative>
						<relative type="-1">গতকাল</relative>
						<relative type="-2">গত পরশু</relative>
						<relative type="-3">গত তরশু</relative>
					</field>
					<field type="weekday">
						<displayName>সপ্তাহের দিন</displayName>
					</field>
					<field type="dayperiod">
						<displayName>পূর্বাহ্ণ/অপরাহ্ণ</displayName>
					</field>
					<field type="hour">
						<displayName>ঘন্টা</displayName>
					</field>
					<field type="minute">
						<displayName>মিনিট</displayName>
					</field>
					<field type="second">
						<displayName>সেকেন্ড</displayName>
					</field>
					<field type="zone">
						<displayName>এলাকা</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="indian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">চৈত্র</month>
							<month type="2">বৈশাখ</month>
							<month type="3">জৈষ্ঠ্য</month>
							<month type="4">আষাঢ়</month>
							<month type="5">শ্রাবণ</month>
							<month type="6">ভাদ্র</month>
							<month type="7">আশ্বিন</month>
							<month type="8">কার্তিক</month>
							<month type="9">অগ্রহায়ণ</month>
							<month type="10">পৌষ</month>
							<month type="11">মাঘ</month>
							<month type="12">ফাল্গুন</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">১</month>
							<month type="2">২</month>
							<month type="3">৩</month>
							<month type="4">৪</month>
							<month type="5">৫</month>
							<month type="6">৬</month>
							<month type="7">৭</month>
							<month type="8">৮</month>
							<month type="9">৯</month>
							<month type="10">১০</month>
							<month type="11">১১</month>
							<month type="12">১২</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">চৈত্র</month>
							<month type="2">বৈশাখ</month>
							<month type="3">জৈষ্ঠ্য</month>
							<month type="4">আষাঢ়</month>
							<month type="5">শ্রাবণ</month>
							<month type="6">ভাদ্র</month>
							<month type="7">আশ্বিন</month>
							<month type="8">কার্তিক</month>
							<month type="9">অগ্রহায়ণ</month>
							<month type="10">পৌষ</month>
							<month type="11">মাঘ</month>
							<month type="12">ফাল্গুন</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">১</month>
							<month type="2">২</month>
							<month type="3">৩</month>
							<month type="4">৪</month>
							<month type="5">৫</month>
							<month type="6">৬</month>
							<month type="7">৭</month>
							<month type="8">৮</month>
							<month type="9">৯</month>
							<month type="10">১০</month>
							<month type="11">১১</month>
							<month type="12">১২</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">চৈত্র</month>
							<month type="2">বৈশাখ</month>
							<month type="3">জৈষ্ঠ্য</month>
							<month type="4">আষাঢ়</month>
							<month type="5">শ্রাবণ</month>
							<month type="6">ভাদ্র</month>
							<month type="7">আশ্বিন</month>
							<month type="8">কার্তিক</month>
							<month type="9">অগ্রহায়ণ</month>
							<month type="10">পৌষ</month>
							<month type="11">মাঘ</month>
							<month type="12">ফাল্গুন</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>পূর্বাহ্ন</am>
				<pm>অপরাহ্ন</pm>
				<eras>
					<eraNames>
						<era type="0">সাল</era>
					</eraNames>
					<eraAbbr>
						<era type="0">সাল</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">সাল</era>
					</eraNarrow>
				</eras>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">মহরম</month>
							<month type="2">সফর</month>
							<month type="3">রবিউস আউয়াল</month>
							<month type="4">রবিউস সানি</month>
							<month type="5">জমাদিউল আউয়াল</month>
							<month type="6">জমাদিউল সানি</month>
							<month type="7">রজব</month>
							<month type="8">শাবান</month>
							<month type="9">রমজান</month>
							<month type="10">শাওয়াল</month>
							<month type="11">জিলকদ</month>
							<month type="12">জিলহজ</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">১</month>
							<month type="2">২</month>
							<month type="3">৩</month>
							<month type="4">৪</month>
							<month type="5">৫</month>
							<month type="6">৬</month>
							<month type="7">৭</month>
							<month type="8">৮</month>
							<month type="9">৯</month>
							<month type="10">১০</month>
							<month type="11">১১</month>
							<month type="12">১২</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">মহরম</month>
							<month type="2">সফর</month>
							<month type="3">রবিউস আউয়াল</month>
							<month type="4">রবিউস সানি</month>
							<month type="5">জমাদিউল আউয়াল</month>
							<month type="6">জমাদিউল সানি</month>
							<month type="7">রজব</month>
							<month type="8">শাবান</month>
							<month type="9">রমজান</month>
							<month type="10">শাওয়াল</month>
							<month type="11">জিলকদ</month>
							<month type="12">জিলহজ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="4">রবিউস সানি</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">১</month>
							<month type="2">২</month>
							<month type="3">৩</month>
							<month type="4">৪</month>
							<month type="5">৫</month>
							<month type="6">৬</month>
							<month type="7">৭</month>
							<month type="8">৮</month>
							<month type="9">৯</month>
							<month type="10">১০</month>
							<month type="11">১১</month>
							<month type="12">১২</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">মহরম</month>
							<month type="2">সফর</month>
							<month type="3">রবিউস আউয়াল</month>
							<month type="4">রবিউস সানি</month>
							<month type="5">জমাদিউল আউয়াল</month>
							<month type="6">জমাদিউল সানি</month>
							<month type="7">রজব</month>
							<month type="8">শাবান</month>
							<month type="9">রমজান</month>
							<month type="10">শাওয়াল</month>
							<month type="11">জিলকদ</month>
							<month type="12">জিলহজ</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>পূর্বাহ্ন</am>
				<pm>অপরাহ্ন</pm>
				<eras>
					<eraNames>
						<era type="0">যুগ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">যুগ</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">যুগ</era>
					</eraNarrow>
				</eras>
			</calendar>
			<calendar type="islamic-civil">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">মহরম</month>
							<month type="2">সফর</month>
							<month type="3">রবিউস আউয়াল</month>
							<month type="4">রবিউস সানি</month>
							<month type="5">জমাদিউল আউয়াল</month>
							<month type="6">জমাদিউল সানি</month>
							<month type="7">রজব</month>
							<month type="8">শাবান</month>
							<month type="9">রমজান</month>
							<month type="10">শাওয়াল</month>
							<month type="11">জিলকদ</month>
							<month type="12">জিলহজ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">১</month>
							<month type="2">২</month>
							<month type="3">৩</month>
							<month type="4">৪</month>
							<month type="5">৫</month>
							<month type="6">৬</month>
							<month type="7">৭</month>
							<month type="8">৮</month>
							<month type="9">৯</month>
							<month type="10">১০</month>
							<month type="11">১১</month>
							<month type="12">১২</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>অপরাহ্ন</am>
				<pm>অপরাহ্ন</pm>
				<eras>
					<eraAbbr>
						<era type="0">যুগ</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>গ্রীনিচ মান সময় {0}</gmtFormat>
			<regionFormat>{0} সময়</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>অজানা</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>রথেরা</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>পামার</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>দক্ষিণ মেরু</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>সিওয়া</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>মসোন</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>ডেভিস</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ভস্টোক</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>কেইসি</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>ডুমন্ট ডি’উরভিল</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>ম্যাকমুর্ডো</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>রিও গায়েগোস</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>মেন্ডোজা</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>সান হুয়ান</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>উশুয়াইয়া</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>লা রিওহা</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>সান লুইস</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>ক্যাটামার্কা</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>হুহুই</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>টুকুমান</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>কর্ডোবা</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>বুয়েনোস আয়েরেস</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>পার্থ</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>ইউক্লা</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>ডারউইন</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>এ্যাডেলেইড</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ব্রোকেন হিল</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>কিউরি</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>মেলবার্ন</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>হোবার্ট</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>লিনডেম্যান</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>সিডনি</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ব্রিসবেন</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>লর্ড হাও</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>আইরুনেপে</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>রিও ব্রাঙ্কো</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>পোর্তো ভেল্‌হো</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>বোয়া ভিস্তা</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>মানাউস</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>কুইয়াবা</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>কাম্পো গ্রান্ডে</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>বেলেম</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>আরাগুয়াইনা</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>সাও পাউলো</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>বাহিয়া</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>ফোর্টালেজা</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>মাসেয়ো</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>রেসিফে</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>নরোন্‌হা</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>ডসোন</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>হো্য়াইট হর্স</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>ইনুভ্যাক</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>ভ্যাঙ্কুভার</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>ডসোন ক্রিক</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>ইয়েলোনাইফ</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>এডমন্টোন</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>সুইফ্ট কারেন্ট</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>কেমব্রিজ বে</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>রেজিনা</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>উইনিপেগ</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>রেসোলুট</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>রেইনি রিভার</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>র‌্যাঙ্কিন ইনলেট</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>কোরাল হার্বার</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>থান্ডার বে</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>নিপিগোন</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>টোরন্টো</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>মন্ট্রিয়াল</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>ইকুয়ালুইট</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>প্যাঙ্গনির্টুং</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>মঙ্কটোন</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>হ্যালিফ্যাক্স</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>গুস বে</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>গ্লাস বে</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ব্লাঙ্ক-সাব্লোন</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>সেন্ট জন্স</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>কিনশাসা</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>লুবুম্বাশি</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ইস্টার</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>ক্যাশগার</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>উরুমকি</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>চোঙকিং</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>হার্বিন</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>গ্যালাপ্যাগোস</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>কানেরি</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>সেউটা</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ট্রুক</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>পোনাপে</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>কোসরায়</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>থুলি</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>স্কোর্সবায়সুন্ড</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>ডানমার্কশ্যাভন</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>জাকার্তা</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>পন্টিয়ান্যাক</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>মাকাসসার</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>জয়াপুরা</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>এন্ডারবারি</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>কিরিতিমাতি</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>টারাওয়া</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>আকটাউ</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ওরাল</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>আকটোবে</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>কিজিলর্ডা</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>আলমাটি</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>কোয়াজালেইন</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>মাজুরো</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>হোভ্ড</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>উলানবাতার</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>চোইবাল্‌স্যান</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>তিয়াওয়ানা</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>হারমোসিল্লো</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>মাজাটলান</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>চিহুয়াহুয়া</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>মন্টেরি</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>মেক্সিকো সিটি</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>মেরিডা</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>ক্যানকুন</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>কুচিং</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>চ্যাঠাম</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>মার্কেসাস</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>গাম্বিয়ের</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>আজোরেস</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>মাডেইরা</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>কালিনিঙগ্রাড</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>মস্কো</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>ভোল্গোগ্রাদ</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>সামারা</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>ইয়েকাটেরিনবার্গ</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ওম্স্ক</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>নভোসিবির্স্ক</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>ক্রাসনোইয়ার্স্ক</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ইর্কুট্স্ক</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>ইয়াকুট্স্ক</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ভ্লাদিভস্তোক</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>সাখালিন</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>ম্যাগাডান</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>কামচাটকা</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>অ্যানাডির</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>উঝগোরোড</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>কিয়েভ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>সিমফেরোপোল</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>জাপোরোঝা</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>মিডওয়ে</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>জনস্টন</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>ওয়েক</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>আডাক</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>নোম</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>হনোলুলু</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>এনকোরেজ</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>ইয়াকুটাট</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>জুনো</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>লস এ্যাঞ্জেলেস</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>বয়জি</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ফিনিক্স</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>শিপ্রক</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>ডেনভার</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>নিউ সালেম, উত্তর ডাকোটা</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>মধ্য, উত্তর ডাকোটা</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>শিকাগো</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>মেনোমিনি</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>ভিনসেন্নেস, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>পিটারর্সবার্গ, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>টেলসিটি, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>নক্স, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>উইনাম্যাক, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>মারেঙ্গো, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>ইন্ডিয়ানাপোলিস</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>লুইসভিল</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>ভেভেয়, ইন্ডিয়ানা</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>মন্টিচেলো, কেন্টাকি</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>ডেট্রোইট</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>নিউইয়র্ক</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>সমরখন্দ</exemplarCity>
			</zone>
			<metazone type="Bangladesh">
				<long>
					<standard>বাংলাদেশ সময়</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>০</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##,##0.00¤;(#,##,##0.00¤)</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>এ্যান্ডোরান পেসেতা</displayName>
			</currency>
			<currency type="AED">
				<displayName>সংযুক্ত আরব আমিরাত দিরহাম</displayName>
			</currency>
			<currency type="AFA">
				<displayName>আফগানি (১৯২৭-২০০২)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>আফগানি</displayName>
			</currency>
			<currency type="ALL">
				<displayName>আলবেনিয়ান লেক</displayName>
			</currency>
			<currency type="AMD">
				<displayName>আরমেনিয়ান দ্রাম</displayName>
			</currency>
			<currency type="ANG">
				<displayName>নেদারল্যান্ড এ্যান্টিলিয়ান গুল্ডের</displayName>
			</currency>
			<currency type="AOA">
				<displayName>এ্যাঙ্গোলান কওয়ানজা</displayName>
			</currency>
			<currency type="AOK">
				<displayName>এ্যাঙ্গোলান কওয়ানজা (১৯৭৭-১৯৯০)</displayName>
			</currency>
			<currency type="AON">
				<displayName>এ্যাঙ্গোলান নতুন কওয়ানজা (১৯৯৫-২০০০)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>এ্যাঙ্গোলান কওয়ানজা (১৯৯৫-১৯৯৯)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>আর্জেন্টিনা অস্ট্রাল</displayName>
			</currency>
			<currency type="ARP">
				<displayName>আর্জেন্টিনা পেসো (১৯৮৩-১৯৮৫)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>আর্জেন্টিনা পেসো</displayName>
			</currency>
			<currency type="ATS">
				<displayName>অস্ট্রিয়ান শিলিং</displayName>
			</currency>
			<currency type="AUD">
				<displayName>অস্ট্রেলিয়ান ডলার</displayName>
			</currency>
			<currency type="AWG">
				<displayName>আরুবা গিল্ডার</displayName>
			</currency>
			<currency type="AZM">
				<displayName>আজারবাইজান মানাত (১৯৯৩-২০০৬)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>আজারবাইজান মানাত</displayName>
			</currency>
			<currency type="BAD">
				<displayName>বসনিয়া এবং হার্জেগোভিনা দিনার</displayName>
			</currency>
			<currency type="BAM">
				<displayName>বসনিয়া এবং হার্জেগোভিনা মার্ক</displayName>
			</currency>
			<currency type="BBD">
				<displayName>বার্বেডোজ ডলার</displayName>
			</currency>
			<currency type="BDT">
				<displayName>বাংলাদেশ টাকা</displayName>
				<symbol>৳</symbol>
			</currency>
			<currency type="BEC">
				<displayName>বেলজিয়ান ফ্রাঙ্ক (রূপান্তরযোগ্য)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>বেলজিয়ান ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="BEL">
				<displayName>বেলজিয়ান ফ্রাঙ্ক (আর্থিক)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>বুলগেরীয় হার্ড লেভ</displayName>
			</currency>
			<currency type="BGN">
				<displayName>বুলগেরীয় নিউ লেভ</displayName>
			</currency>
			<currency type="BHD">
				<displayName>বাহরাইনি দিনার</displayName>
			</currency>
			<currency type="BIF">
				<displayName>বুরুন্ডি ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="BMD">
				<displayName>বারমিউডান ডলার</displayName>
			</currency>
			<currency type="BND">
				<displayName>ব্রুনেই ডলার</displayName>
			</currency>
			<currency type="BOB">
				<displayName>বলিভিয়ানো</displayName>
			</currency>
			<currency type="BOP">
				<displayName>বলিভিয়ান পেসো</displayName>
			</currency>
			<currency type="BOV">
				<displayName>বলিভিয়ান মভডোল</displayName>
			</currency>
			<currency type="BRB">
				<displayName>ব্রাজিলিয়ান ক্রুজেয়রোনোভো (১৯৬৭-১৯৮৬)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>ব্রাজিলিয়ান ক্রুজেইডাউ</displayName>
			</currency>
			<currency type="BRE">
				<displayName>ব্রাজিলিয়ান ক্রুজেয়রো (১৯৯০-১৯৯৩)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ব্রাজিলিয়ান রিয়েল</displayName>
			</currency>
			<currency type="BRN">
				<displayName>ব্রাজিলিয়ান ক্রুজেইডো নোভো</displayName>
			</currency>
			<currency type="BRR">
				<displayName>ব্রাজিলিয়ান ক্রুজেয়রো</displayName>
			</currency>
			<currency type="BSD">
				<displayName>বাহামিয়ান ডলার</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ভুটান এনগুল্ট্রুম</displayName>
			</currency>
			<currency type="BUK">
				<displayName>বর্মি কিয়াৎ</displayName>
			</currency>
			<currency type="BWP">
				<displayName>বত্সওয়ানা পুলা</displayName>
			</currency>
			<currency type="BYB">
				<displayName>বেলারুশিয়ান নিউ রুবেল (১৯৯৪-১৯৯৯)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>বেলারুশিয়ান রুবেল</displayName>
			</currency>
			<currency type="BZD">
				<displayName>বেলিজ ডলার</displayName>
			</currency>
			<currency type="CAD">
				<displayName>কম্বোডিয়ান ডলার</displayName>
			</currency>
			<currency type="CDF">
				<displayName>কঙ্গো ফ্র্যাঙ্ক কঙ্গোলাইস</displayName>
			</currency>
			<currency type="CHE">
				<displayName>সুইজারল্যান্ড ইউরো</displayName>
			</currency>
			<currency type="CHF">
				<displayName>সুইস ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="CHW">
				<displayName>সুইজারল্যান্ড ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="CLF">
				<displayName>চিলিয়ান উনিদাদেস দি ফোমেন্তো</displayName>
			</currency>
			<currency type="CLP">
				<displayName>চিলি পেসো</displayName>
			</currency>
			<currency type="CNY">
				<displayName>চীনা য়ুয়ান রেন্মিন্‌বি</displayName>
			</currency>
			<currency type="COP">
				<displayName>কলোম্বিয়ান পেসো</displayName>
			</currency>
			<currency type="CRC">
				<displayName>কোস্টা রিকা কোলোন</displayName>
			</currency>
			<currency type="CSD">
				<displayName>প্রাচীন সারবিয়ান দিনার</displayName>
			</currency>
			<currency type="CSK">
				<displayName>চেকোস্লোভাক হার্ড কোরুনা</displayName>
			</currency>
			<currency type="CUP">
				<displayName>কিউবান পেসো</displayName>
			</currency>
			<currency type="CVE">
				<displayName>কেপ ভার্দে এসকুডো</displayName>
			</currency>
			<currency type="CYP">
				<displayName>সাইপ্রাস পাউন্ড</displayName>
			</currency>
			<currency type="CZK">
				<displayName>চেকোস্লোভাক কোরুনা</displayName>
			</currency>
			<currency type="DDM">
				<displayName>পূর্ব জার্মান মার্ক</displayName>
			</currency>
			<currency type="DEM">
				<displayName>ডয়চ্ মার্ক</displayName>
			</currency>
			<currency type="DJF">
				<displayName>জিবুতি ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="DKK">
				<displayName>ড্যানিশ ক্রৌন</displayName>
			</currency>
			<currency type="DOP">
				<displayName>ডোমিনিকান পেসো</displayName>
			</currency>
			<currency type="DZD">
				<displayName>আলজেরীয় দিনার</displayName>
			</currency>
			<currency type="ECS">
				<displayName>ইকুয়াডোর সুক্রে</displayName>
			</currency>
			<currency type="ECV">
				<displayName>ইকুয়াডোর উনিদাদেস দি ভেলর কনসতান্তে (ইউভিসি)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>এস্তোনিয়া ক্রুনি</displayName>
			</currency>
			<currency type="EGP">
				<displayName>মিশরীয় পাউন্ড</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ইকুয়েলে</displayName>
			</currency>
			<currency type="ESA">
				<displayName>স্প্যানিশ পেসেতা (একই হিসাব)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>স্প্যানিশ পেসেতা (রূপান্তরযোগ্য হিসাব)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>স্প্যানিশ পেসেতা</displayName>
			</currency>
			<currency type="EUR">
				<displayName>ইউরো</displayName>
			</currency>
			<currency type="FJD">
				<displayName>ফিজি ডলার</displayName>
			</currency>
			<currency type="FKP">
				<displayName>ফকল্যান্ড দ্বীপপুঞ্জ পাউন্ড</displayName>
			</currency>
			<currency type="FRF">
				<displayName>ফরাসি ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ব্রিটিশ পাউন্ড স্টার্লিং</displayName>
			</currency>
			<currency type="GEK">
				<displayName>জর্জিয়ান কুপন লারিট</displayName>
			</currency>
			<currency type="GEL">
				<displayName>জর্জিয়ান লারি</displayName>
			</currency>
			<currency type="GHC">
				<displayName>ঘানা সেডি (১৯৭৯-২০০৭)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>ঘানা সেডি</displayName>
			</currency>
			<currency type="GIP">
				<displayName>জিব্রাল্টার পাউন্ড</displayName>
			</currency>
			<currency type="GMD">
				<displayName>গাম্বিয়া ডালাসি</displayName>
			</currency>
			<currency type="GNF">
				<displayName>গিনি ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="GNS">
				<displayName>গিনি সাইলি</displayName>
			</currency>
			<currency type="GRD">
				<displayName>গ্রীক দ্রাচমা</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>গুয়াতেমালা কুয়েৎজাল</displayName>
				<displayName count="other">গুয়াতেমালা কুয়েৎজাল</displayName>
			</currency>
			<currency type="GWE">
				<displayName>পর্তুগিজ গিনি এসকুডো</displayName>
			</currency>
			<currency type="GWP">
				<displayName>গিনি বিসাউ পেসো</displayName>
			</currency>
			<currency type="GYD">
				<displayName>গাইয়েনা ডলার</displayName>
			</currency>
			<currency type="HKD">
				<displayName>হংকং ডলার</displayName>
			</currency>
			<currency type="HNL">
				<displayName>হন্ডুরাস লেম্পিরা</displayName>
			</currency>
			<currency type="HRD">
				<displayName>ক্রোয়েশিয়ান দিনার</displayName>
			</currency>
			<currency type="HRK">
				<displayName>ক্রোয়েশিয়ান কুনা</displayName>
				<displayName count="other">ক্রোয়েশিয়ান কুনাস</displayName>
			</currency>
			<currency type="HTG">
				<displayName>হাইতি গৌর্দে</displayName>
			</currency>
			<currency type="HUF">
				<displayName>হাঙ্গেরিয়ান ফোরিন্ট</displayName>
			</currency>
			<currency type="IDR">
				<displayName>ইন্দোনেশিয়া রুপিয়াহ</displayName>
			</currency>
			<currency type="IEP">
				<displayName>ইরিশ পাউন্ড</displayName>
			</currency>
			<currency type="ILP">
				<displayName>ইস্রাইলি পাউন্ড</displayName>
			</currency>
			<currency type="ILS">
				<displayName>ইস্রাইলি নতুন শেকেল</displayName>
			</currency>
			<currency type="INR">
				<displayName>ভারতীয় রুপি</displayName>
				<symbol>টাকা</symbol>
			</currency>
			<currency type="IQD">
				<displayName>ইরাকি দিনার</displayName>
			</currency>
			<currency type="IRR">
				<displayName>ইরানিয়ান রিয়াল</displayName>
			</currency>
			<currency type="ISK">
				<displayName>আইসল্যান্ড ক্রৌন</displayName>
			</currency>
			<currency type="ITL">
				<displayName>ইতালীয় লিরা</displayName>
			</currency>
			<currency type="JMD">
				<displayName>জ্যামাইকান ডলার</displayName>
			</currency>
			<currency type="JOD">
				<displayName>জর্ডানিয়ান দিনার</displayName>
			</currency>
			<currency type="JPY">
				<displayName>জাপানিজ ইয়েন</displayName>
			</currency>
			<currency type="KES">
				<displayName>কেনিয়ান শিলিং</displayName>
			</currency>
			<currency type="KGS">
				<displayName>কিরগিজস্তান সোম</displayName>
			</currency>
			<currency type="KHR">
				<displayName>কম্বোডিয়ান রিয়েল</displayName>
			</currency>
			<currency type="KMF">
				<displayName>কম্বোরো ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="KPW">
				<displayName>নাইজেরিয়ান পাউন্ড</displayName>
			</currency>
			<currency type="KRW">
				<displayName>দক্ষিণ কোরিয়ান ওন</displayName>
			</currency>
			<currency type="KWD">
				<displayName>কুয়েতি দিনার</displayName>
			</currency>
			<currency type="KYD">
				<displayName>কেম্যান দ্বীপপুঞ্জের ডলার</displayName>
			</currency>
			<currency type="KZT">
				<displayName>কাজাক্সটান টেঙ্গে</displayName>
			</currency>
			<currency type="LAK">
				<displayName>লেউশান কিপ</displayName>
			</currency>
			<currency type="LBP">
				<displayName>লেবানিজ পাউন্ড</displayName>
			</currency>
			<currency type="LKR">
				<displayName>শ্রীলঙ্কান রুপি</displayName>
			</currency>
			<currency type="LRD">
				<displayName>লাইবেরিয়ান ডলার</displayName>
			</currency>
			<currency type="LSL">
				<displayName>লেসুটু লোটি</displayName>
			</currency>
			<currency type="LSM">
				<displayName>মালোটি</displayName>
			</currency>
			<currency type="LTL">
				<displayName>লিথুইনিয়ান লিটা</displayName>
			</currency>
			<currency type="LTT">
				<displayName>লিথুইনিয়ান টালোন্যাস</displayName>
			</currency>
			<currency type="LUC">
				<displayName>লুক্সেমবার্গ রুপান্তযোগ্য ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="LUF">
				<displayName>লুক্সেমবার্গ ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="LUL">
				<displayName>লুক্সেমবার্গ ফাইনেনশিয়াল ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="LVL">
				<displayName>ল্যাট্‌স</displayName>
			</currency>
			<currency type="LVR">
				<displayName>ল্যাটভিয়ান রুবল</displayName>
			</currency>
			<currency type="LYD">
				<displayName>লিবিয়ান ডলার</displayName>
			</currency>
			<currency type="MAD">
				<displayName>মোরোক্কান দিরহাম</displayName>
			</currency>
			<currency type="MAF">
				<displayName>মোরোক্কান ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="MDL">
				<displayName>মোল্ডোভান লেয়ু</displayName>
			</currency>
			<currency type="MGA">
				<displayName>মাদাগাস্কার আরিয়ারি</displayName>
			</currency>
			<currency type="MGF">
				<displayName>মাদাগাস্কার ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="MKD">
				<displayName>ম্যাসেডোনিয়ান দিনার</displayName>
			</currency>
			<currency type="MLF">
				<displayName>মালি ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="MMK">
				<displayName>মায়ানমার কিয়াত</displayName>
			</currency>
			<currency type="MNT">
				<displayName>মঙ্গোলিয়ান তুগরিক</displayName>
			</currency>
			<currency type="MOP">
				<displayName>ম্যাক্যাও পাটাকা</displayName>
			</currency>
			<currency type="MRO">
				<displayName>মৌরিতানিয়ান ওউগুইয়া</displayName>
			</currency>
			<currency type="MTL">
				<displayName>মাল্টা লিরা</displayName>
			</currency>
			<currency type="MTP">
				<displayName>মাল্টা পাউন্ড</displayName>
			</currency>
			<currency type="MUR">
				<displayName>মৌরিতানিয়ান রুপি</displayName>
			</currency>
			<currency type="MWK">
				<displayName>মালাউইয়ান কওয়াচ</displayName>
			</currency>
			<currency type="MXN">
				<displayName>ম্যাক্সিকান পেসো</displayName>
			</currency>
			<currency type="MXP">
				<displayName>ম্যাক্সিকান সিলভার পেসো (১৮৬১-১৯৯২)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>মালয়েশিয়ান রিঙ্গিৎ</displayName>
			</currency>
			<currency type="MZE">
				<displayName>মোজাম্বিক এসকুডো</displayName>
			</currency>
			<currency type="MZM">
				<displayName>প্রাচীন মোজাম্বিক মেটিকেল</displayName>
			</currency>
			<currency type="MZN">
				<displayName>মোজাম্বিক মেটিকেল</displayName>
			</currency>
			<currency type="NAD">
				<displayName>নামিবিয়া ডলার</displayName>
			</currency>
			<currency type="NGN">
				<displayName>নাইজেরিয়ান নায়রা</displayName>
			</currency>
			<currency type="NIC">
				<displayName>নিকারাগুয়ান কর্ডোবা</displayName>
			</currency>
			<currency type="NIO">
				<displayName>নিকারাগুয়ান কর্ডোবা ওরো</displayName>
			</currency>
			<currency type="NLG">
				<displayName>নেদারল্যান্ড গুল্ডের</displayName>
			</currency>
			<currency type="NOK">
				<displayName>নরওয়ে ক্রৌন</displayName>
			</currency>
			<currency type="NPR">
				<displayName>নেপালি রুপি</displayName>
			</currency>
			<currency type="NZD">
				<displayName>নিউজিল্যান্ড ডলার</displayName>
			</currency>
			<currency type="OMR">
				<displayName>ওমানি রিয়াল</displayName>
			</currency>
			<currency type="PAB">
				<displayName>পানামা বেলবোয়া</displayName>
			</currency>
			<currency type="PEI">
				<displayName>পেরুভিয়ান ইন্তি</displayName>
			</currency>
			<currency type="PEN">
				<displayName>পেরুভিয়ান সোল নুয়েভো</displayName>
			</currency>
			<currency type="PES">
				<displayName>পেরুভিয়ান সোল</displayName>
			</currency>
			<currency type="PGK">
				<displayName>পপুয়ানিউগিনি কিনা</displayName>
			</currency>
			<currency type="PHP">
				<displayName>ফিলিপাইন পেসো</displayName>
			</currency>
			<currency type="PKR">
				<displayName>পাকিস্তানি রুপি</displayName>
			</currency>
			<currency type="PLN">
				<displayName>পোলিশ জ্লোটি</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>পোলিশ জ্লোটি (১৯৫০-১৯৯৫)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>পর্তুগিজ এসকুডো</displayName>
			</currency>
			<currency type="PYG">
				<displayName>প্যারগুয়ান</displayName>
			</currency>
			<currency type="QAR">
				<displayName>কাতার রিয়্যাল</displayName>
			</currency>
			<currency type="RHD">
				<displayName>রোডেশিয়ান ডলার</displayName>
			</currency>
			<currency type="ROL">
				<displayName>প্রাচীন রুমানিয়া লেয়ু</displayName>
			</currency>
			<currency type="RON">
				<displayName>রুমানিয়া লেয়ু</displayName>
			</currency>
			<currency type="RSD">
				<displayName>সারবিয়ান দিনার</displayName>
			</currency>
			<currency type="RUB">
				<displayName>রাশিয়ান রুবেল</displayName>
			</currency>
			<currency type="RUR">
				<displayName>রাশিয়ান রুবল (১৯৯১-১৯৯৮)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>রুয়ান্ডান ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="SAR">
				<displayName>সৌদি রিয়্যাল</displayName>
			</currency>
			<currency type="SBD">
				<displayName>সলোমন দ্বীপপুঞ্জ ডলার</displayName>
			</currency>
			<currency type="SCR">
				<displayName>সেয়চেল্লোইস রুপি</displayName>
			</currency>
			<currency type="SDD">
				<displayName>প্রাচীন সুদানি দিনার</displayName>
			</currency>
			<currency type="SDG">
				<displayName>সুদানি পাউন্ড</displayName>
				<displayName count="one">সুদানি পাউন্ড</displayName>
			</currency>
			<currency type="SDP">
				<displayName>প্রাচীন সুদানি পাউন্ড</displayName>
			</currency>
			<currency type="SEK">
				<displayName>সুইডেশ ক্রোনা</displayName>
			</currency>
			<currency type="SGD">
				<displayName>সিঙ্গাপুর ডলার</displayName>
			</currency>
			<currency type="SHP">
				<displayName>সেন্ট হেলেনা পাউন্ড</displayName>
			</currency>
			<currency type="SIT">
				<displayName>স্লোভানিয়া টোলার</displayName>
			</currency>
			<currency type="SKK">
				<displayName>স্লোভাক কোরুনা</displayName>
			</currency>
			<currency type="SLL">
				<displayName>সিয়েরালিয়ন লিয়ন</displayName>
			</currency>
			<currency type="SOS">
				<displayName>সোমালি শিলিং</displayName>
			</currency>
			<currency type="SRD">
				<displayName>সুরিনাম ডলার</displayName>
			</currency>
			<currency type="SRG">
				<displayName>সুরিনাম গিল্ডার</displayName>
			</currency>
			<currency type="STD">
				<displayName>সাও টোমে এবং প্রিন্সিপে  ডোবরা</displayName>
			</currency>
			<currency type="SUR">
				<displayName>সোভিয়েত রুবল</displayName>
			</currency>
			<currency type="SVC">
				<displayName>এল স্যালভোডোর কোলোন</displayName>
			</currency>
			<currency type="SYP">
				<displayName>সিরিয়ান পাউন্ড</displayName>
			</currency>
			<currency type="SZL">
				<displayName>সোয়াজিল্যান্ড লিলাঙ্গেনি</displayName>
			</currency>
			<currency type="THB">
				<displayName>থাই বাত</displayName>
			</currency>
			<currency type="TJR">
				<displayName>তাজিকিস্তান রুবল</displayName>
			</currency>
			<currency type="TJS">
				<displayName>তাজিকিস্তান সোমোনি</displayName>
			</currency>
			<currency type="TMM">
				<displayName>তুর্কমেনিস্টানি মানাত</displayName>
			</currency>
			<currency type="TND">
				<displayName>তিউনেশিয়ান দিনার</displayName>
			</currency>
			<currency type="TOP">
				<displayName>টোঙ্গা পা’আঙ্গা</displayName>
			</currency>
			<currency type="TPE">
				<displayName>তিমুর এসকুডো</displayName>
			</currency>
			<currency type="TRL">
				<displayName>প্রাচীন তুর্কি লিরা</displayName>
			</currency>
			<currency type="TRY">
				<displayName>তুর্কি লিরা</displayName>
			</currency>
			<currency type="TTD">
				<displayName>ত্রিনিদাদ এবং টোবাগো ডলার</displayName>
			</currency>
			<currency type="TWD">
				<displayName>নূতন তাইওয়ান ক্যারাবিয়ান ডলার</displayName>
			</currency>
			<currency type="TZS">
				<displayName>তাঞ্জনিয়া শিলিং</displayName>
			</currency>
			<currency type="UAH">
				<displayName>ইউক্রেইন হৃভনিয়া</displayName>
			</currency>
			<currency type="UAK">
				<displayName>ইউক্রেইন কার্বোভ্যান্টস</displayName>
			</currency>
			<currency type="UGS">
				<displayName>উগান্ডান শিলিং (১৯৬৬-১৯৮৭)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>উগান্ডান শিলিং</displayName>
			</currency>
			<currency type="USD">
				<displayName>মার্কিন ডলার</displayName>
			</currency>
			<currency type="USN">
				<displayName>মার্কিন ডলার (পরবর্তী দিন)</displayName>
			</currency>
			<currency type="USS">
				<displayName>মার্কিন ডলার (একই দিন)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>উরুগুয়ে পেসো (১৯৭৫-১৯৯৩)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>উরুগুয়ে পেসো উরুগুয়েও</displayName>
			</currency>
			<currency type="UZS">
				<displayName>উজবেকিস্তানি সোম</displayName>
			</currency>
			<currency type="VEB">
				<displayName>ভেনিজুয়েলান বলিভার</displayName>
			</currency>
			<currency type="VEF">
				<displayName>ভেনিজুয়েলীয় বলিভার র্ফুতে</displayName>
			</currency>
			<currency type="VND">
				<displayName>ভিয়েতনামি ডঙ্গ</displayName>
			</currency>
			<currency type="WST">
				<displayName>পশ্চিমাঞ্চলীয় সামোয়ান টালা</displayName>
			</currency>
			<currency type="XAF">
				<displayName>সিএফএ ফ্র্যাঙ্ক বিইএসি</displayName>
			</currency>
			<currency type="XAG">
				<displayName>সিলভার</displayName>
			</currency>
			<currency type="XAU">
				<displayName>গোল্ড</displayName>
			</currency>
			<currency type="XBB">
				<displayName>ইউরোপীয় আর্থিক একক</displayName>
			</currency>
			<currency type="XCD">
				<displayName>পূর্ব ক্যারাবিয়ান ডলার</displayName>
			</currency>
			<currency type="XEU">
				<displayName>ইউরোপীয় মুদ্রা একক</displayName>
			</currency>
			<currency type="XFO">
				<displayName>ফরাসি গোল্ড ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="XFU">
				<displayName>ফরাসি ইউআইসি - ফ্রাঙ্ক</displayName>
			</currency>
			<currency type="XOF">
				<displayName>সিএফএ ফ্র্যাঙ্ক বিসিইএও</displayName>
			</currency>
			<currency type="XPD">
				<displayName>প্যালেডিয়াম</displayName>
			</currency>
			<currency type="XPF">
				<displayName>সিএফপি ফ্র্যাঙ্ক</displayName>
			</currency>
			<currency type="XPT">
				<displayName>প্লাটিনাম</displayName>
			</currency>
			<currency type="XXX">
				<displayName>অজানা বা ভুল মুদ্রা</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>ইয়েমেনি দিনার</displayName>
			</currency>
			<currency type="YER">
				<displayName>ইয়েমেনি রিয়াল</displayName>
			</currency>
			<currency type="YUD">
				<displayName>যুগোশ্লাভিয় হার্ড দিনার</displayName>
			</currency>
			<currency type="YUM">
				<displayName>যুগোশ্লাভিয় নোভি দিনার</displayName>
			</currency>
			<currency type="YUN">
				<displayName>যুগোশ্লাভিয় রুপান্তরযোগ্য দিনার</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>দক্ষিণ আফ্রিকান র‌্যান্ড</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>দক্ষিণ আফ্রিকান রেন্ড</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>জাম্বিয়ান কওয়াচা</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>জাইরিয়ান নিউ জাইরে</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>জাইরিয়ান জাইরে</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>জিম্বাবুয়ে ডলার</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} দিন</unitPattern>
			<unitPattern count="other">{0} দিন</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} ঘন্টা</unitPattern>
			<unitPattern count="other">{0} ঘন্টা</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} মিনিট</unitPattern>
			<unitPattern count="other">{0} মিনিট</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} মাস</unitPattern>
			<unitPattern count="other">{0} মাস</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} সেকেন্ড</unitPattern>
			<unitPattern count="other">{0} সেকেন্ড</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} সপ্তাহ</unitPattern>
			<unitPattern count="other">{0} সপ্তাহ</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} বছর</unitPattern>
			<unitPattern count="other">{0} বছর</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>হাঁ</yesstr>
			<nostr>না</nostr>
		</messages>
	</posix>
</ldml>
PKpG[`:8���Locale/Data/ar_JO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="JO"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">أيار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">أيار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
</ldml>
PKpG[>lh##Locale/Data/nl_NL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nl"/>
		<territory type="NL"/>
	</identity>
</ldml>
PKpG[�\,�W�W�Locale/Data/ro.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.96 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="ro"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ab">abhază</language>
			<language type="af">afrikaans</language>
			<language type="afa">limbă afro-asiatică</language>
			<language type="ain">ainu</language>
			<language type="akk">akkadiană</language>
			<language type="ale">aleută</language>
			<language type="alt">altaică meridională</language>
			<language type="am">amharică</language>
			<language type="an">aragoneză</language>
			<language type="ang">engleză veche</language>
			<language type="apa">limbă apașă</language>
			<language type="ar">arabă</language>
			<language type="arc">aramaică</language>
			<language type="art">limbă artificială</language>
			<language type="as">asameză</language>
			<language type="aus">limbă australiană</language>
			<language type="av">avară</language>
			<language type="ay">aymara</language>
			<language type="az">azeră</language>
			<language type="ba">bașkiră</language>
			<language type="bat">limbă baltică</language>
			<language type="be">bielorusă</language>
			<language type="ber">berberă</language>
			<language type="bg">bulgară</language>
			<language type="bh">bihari</language>
			<language type="bn">bengaleză</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetană</language>
			<language type="br">bretonă</language>
			<language type="bs">bosniacă</language>
			<language type="ca">catalană</language>
			<language type="cai">limbă central-amerindiană</language>
			<language type="cau">limbă caucaziană</language>
			<language type="ce">cecenă</language>
			<language type="cel">limbă celtică</language>
			<language type="co">corsicană</language>
			<language type="cop">coptă</language>
			<language type="cs">cehă</language>
			<language type="cu">slavonă</language>
			<language type="cv">ciuvașă</language>
			<language type="cy">galeză</language>
			<language type="da">daneză</language>
			<language type="de">germană</language>
			<language type="de_AT">germană austriacă</language>
			<language type="de_CH">germană standard elvețiană</language>
			<language type="dra">limbă dravidiană</language>
			<language type="egy">egipteană veche</language>
			<language type="el">greacă</language>
			<language type="elx">elamită</language>
			<language type="en">engleză</language>
			<language type="en_AU">engleză australiană</language>
			<language type="en_CA">engleză canadiană</language>
			<language type="en_GB">engleză britanică</language>
			<language type="en_US">engleză americană</language>
			<language type="eo">esperanto</language>
			<language type="es">spaniolă</language>
			<language type="es_419">spaniolă latino-americană</language>
			<language type="es_ES">spaniolă iberică</language>
			<language type="et">estonă</language>
			<language type="eu">bască</language>
			<language type="fa">persană</language>
			<language type="fi">finlandeză</language>
			<language type="fil">filipineză</language>
			<language type="fiu">limbă fino-ugrică</language>
			<language type="fj">fijiană</language>
			<language type="fo">faroeză</language>
			<language type="fr">franceză</language>
			<language type="fr_CA">franceză canadiană</language>
			<language type="fr_CH">franceză elvețiană</language>
			<language type="fro">franceză veche</language>
			<language type="fy">friziană</language>
			<language type="ga">irlandeză</language>
			<language type="gd">galică scoțiană</language>
			<language type="gem">limbă germanică</language>
			<language type="gl">galiciană</language>
			<language type="gn">guarani</language>
			<language type="got">gotică</language>
			<language type="grc">greacă veche</language>
			<language type="gsw">germană elvețiană</language>
			<language type="gu">gujarati</language>
			<language type="haw">hawaiană</language>
			<language type="he">ebraică</language>
			<language type="hi">hindi</language>
			<language type="hit">hitită</language>
			<language type="hr">croată</language>
			<language type="ht">haitiană</language>
			<language type="hu">maghiară</language>
			<language type="hy">armeană</language>
			<language type="ia">interlingua</language>
			<language type="id">indoneziană</language>
			<language type="ie">interlingue</language>
			<language type="ik">inupiak</language>
			<language type="inc">limbă indiană</language>
			<language type="ine">limbă indo-europeană</language>
			<language type="ira">limbă iraniană</language>
			<language type="is">islandeză</language>
			<language type="it">italiană</language>
			<language type="ja">japoneză</language>
			<language type="jpr">iudeo-persană</language>
			<language type="jrb">iudeo-arabă</language>
			<language type="jv">javaneză</language>
			<language type="ka">georgiană</language>
			<language type="kg">congoleză</language>
			<language type="kk">cazacă</language>
			<language type="kl">groenlandeză</language>
			<language type="km">khmeră</language>
			<language type="kn">kannada</language>
			<language type="ko">coreeană</language>
			<language type="ks">kashmiri</language>
			<language type="ku">kurdă</language>
			<language type="ky">kirghiză</language>
			<language type="la">latină</language>
			<language type="lb">luxemburgheză</language>
			<language type="ln">lingala</language>
			<language type="lo">laoțiană</language>
			<language type="lt">lituaniană</language>
			<language type="lv">letonă</language>
			<language type="mg">malgașă</language>
			<language type="mi">maori</language>
			<language type="mis">limbi diverse</language>
			<language type="mk">macedoneană</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolă</language>
			<language type="mnc">manciuriană</language>
			<language type="mo">moldovenească</language>
			<language type="mr">marathi</language>
			<language type="ms">malaeziană</language>
			<language type="mt">malteză</language>
			<language type="mul">limbi multiple</language>
			<language type="mun">limbă munda</language>
			<language type="my">birmaneză</language>
			<language type="myn">limbă maya</language>
			<language type="nai">limbă nord-amerindiană</language>
			<language type="nap">napolitană</language>
			<language type="ne">nepaleză</language>
			<language type="nl">olandeză</language>
			<language type="nl_BE">flamandă</language>
			<language type="nn">norvegiană nynorsk</language>
			<language type="no">norvegiană</language>
			<language type="nub">limbă nubiană</language>
			<language type="nv">navajo</language>
			<language type="oc">occitană</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="ota">turcă otomană</language>
			<language type="oto">limbă otomi</language>
			<language type="pa">punjabi</language>
			<language type="paa">limbă papuașă</language>
			<language type="peo">persană veche</language>
			<language type="phi">limbă filipineză</language>
			<language type="phn">feniciană</language>
			<language type="pi">pali</language>
			<language type="pl">poloneză</language>
			<language type="pro">provensală veche</language>
			<language type="ps">pașto</language>
			<language type="pt">portugheză</language>
			<language type="pt_BR">portugheză braziliană</language>
			<language type="pt_PT">portugheză iberică</language>
			<language type="qu">quechua</language>
			<language type="rm">retoromană</language>
			<language type="ro">română</language>
			<language type="roa">limbă romanică</language>
			<language type="ru">rusă</language>
			<language type="rup">aromână</language>
			<language type="sa">sanscrită</language>
			<language type="sai">limbă sud-amerindiană</language>
			<language type="sam">aramaică samariteană</language>
			<language type="sc">sardiniană</language>
			<language type="scn">siciliană</language>
			<language type="sco">scoțiană</language>
			<language type="sd">sindhi</language>
			<language type="sem">limbă semitică</language>
			<language type="sga">irlandeză veche</language>
			<language type="sgn">limbaj mimico-gestual</language>
			<language type="sh">sârbo-croată</language>
			<language type="si">singaleză</language>
			<language type="sit">limbă sino-tibetană</language>
			<language type="sk">slovacă</language>
			<language type="sl">slovenă</language>
			<language type="sla">limbă slavă</language>
			<language type="sm">samoană</language>
			<language type="so">somaleză</language>
			<language type="sq">albaneză</language>
			<language type="sr">sârbă</language>
			<language type="st">sesotho</language>
			<language type="su">sundaneză</language>
			<language type="sux">sumeriană</language>
			<language type="sv">suedeză</language>
			<language type="sw">swahili</language>
			<language type="syr">siriană</language>
			<language type="ta">tamil</language>
			<language type="tai">limbă thailandeză</language>
			<language type="te">telugu</language>
			<language type="tg">tadjică</language>
			<language type="th">thailandeză</language>
			<language type="ti">tigrinya</language>
			<language type="tk">turkmenă</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingoniană</language>
			<language type="tn">setswana</language>
			<language type="tr">turcă</language>
			<language type="tt">tătară</language>
			<language type="tut">limbă altaică</language>
			<language type="tw">twi</language>
			<language type="ty">tahitiană</language>
			<language type="ug">uigură</language>
			<language type="uk">ucraineană</language>
			<language type="und">limbă necunoscută sau incorectă</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbecă</language>
			<language type="vi">vietnameză</language>
			<language type="vo">volapuk</language>
			<language type="wa">valonă</language>
			<language type="wo">wolof</language>
			<language type="xal">calmucă</language>
			<language type="xh">xhosa</language>
			<language type="yi">idiș</language>
			<language type="yo">yoruba</language>
			<language type="zap">zapotecă</language>
			<language type="zh">chineză</language>
			<language type="zh_Hans">chineză simplificată</language>
			<language type="zh_Hant">chineză tradițională</language>
			<language type="zu">zulu</language>
			<language type="zxx">fară conținut lingvistic</language>
		</languages>
		<scripts>
			<script type="Arab">arabă</script>
			<script type="Armn">armeană</script>
			<script type="Bali">balineză</script>
			<script type="Beng">bengali</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brai">braille</script>
			<script type="Cans">simboluri aborigene canadiene unificate</script>
			<script type="Copt">coptă</script>
			<script type="Cprt">cipriotă</script>
			<script type="Cyrl">chirilică</script>
			<script type="Cyrs">slavonă bisericească veche</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">mormonă</script>
			<script type="Egyd">demotică egipteană</script>
			<script type="Egyh">hieratică egipteană</script>
			<script type="Egyp">hieroglife egiptene</script>
			<script type="Ethi">etiopiană</script>
			<script type="Geok">georgiană bisericească</script>
			<script type="Geor">georgiană</script>
			<script type="Glag">glagolitică</script>
			<script type="Goth">gotică</script>
			<script type="Grek">greacă</script>
			<script type="Hang">coreeană</script>
			<script type="Hani">ideografică</script>
			<script type="Hans">ideografică simplificată</script>
			<script type="Hant">ideografică tradițională</script>
			<script type="Hebr">ebraică</script>
			<script type="Hira">hiragana</script>
			<script type="Hrkt">katakana sau hiragana</script>
			<script type="Hung">maghiară veche</script>
			<script type="Inds">valea Indului</script>
			<script type="Ital">italică veche</script>
			<script type="Java">javaneză</script>
			<script type="Jpan">japoneză</script>
			<script type="Kana">katakana</script>
			<script type="Khmr">khmeră</script>
			<script type="Laoo">laoțiană</script>
			<script type="Latf">latină Fraktur</script>
			<script type="Latg">latină galică</script>
			<script type="Latn">latină</script>
			<script type="Lina">grecă lineară A</script>
			<script type="Linb">grecă lineară B</script>
			<script type="Lydi">lidiană</script>
			<script type="Maya">hieroglife maya</script>
			<script type="Mong">mongolă</script>
			<script type="Mymr">birmană</script>
			<script type="Phnx">feniciană</script>
			<script type="Qaai">moștenită</script>
			<script type="Runr">runică</script>
			<script type="Sinh">singaleză</script>
			<script type="Syrc">siriană</script>
			<script type="Syrj">siriană occidentală</script>
			<script type="Syrn">siriană orientală</script>
			<script type="Tfng">berberă</script>
			<script type="Thai">thailandeză</script>
			<script type="Tibt">tibetană</script>
			<script type="Xpeo">persană veche</script>
			<script type="Xsux">cuneiformă sumero-akkadiană</script>
			<script type="Zxxx">nescrisă</script>
			<script type="Zyyy">comună</script>
			<script type="Zzzz">scriere necunoscută sau incorectă</script>
		</scripts>
		<territories>
			<territory type="001">Lume</territory>
			<territory type="002">Africa</territory>
			<territory type="003">America de Nord</territory>
			<territory type="005">America de Sud</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Africa Occidentală</territory>
			<territory type="013">America Centrală</territory>
			<territory type="014">Africa Orientală</territory>
			<territory type="015">Africa Septentrională</territory>
			<territory type="017">Africa Centrală</territory>
			<territory type="018">Africa Meridională</territory>
			<territory type="019">Americi</territory>
			<territory type="021">America Septentrională</territory>
			<territory type="029">Caraibe</territory>
			<territory type="030">Asia Orientală</territory>
			<territory type="034">Asia Meridională</territory>
			<territory type="035">Asia de Sud-Est</territory>
			<territory type="039">Europa Meridională</territory>
			<territory type="053">Australia și Noua Zeelandă</territory>
			<territory type="054">Melanezia</territory>
			<territory type="057">Regiunea Micronezia</territory>
			<territory type="061">Polinezia</territory>
			<territory type="062">Asia Centrală de Sud</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Asia Centrală</territory>
			<territory type="145">Asia Occidentală</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa Orientală</territory>
			<territory type="154">Europa Septentrională</territory>
			<territory type="155">Europa Occidentală</territory>
			<territory type="172">Comunitatea Statelor Independente</territory>
			<territory type="419">America Latină și Caraibe</territory>
			<territory type="830">Insulele Anglo-Normande</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emiratele Arabe Unite</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua și Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antilele Olandeze</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Americană</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Insulele Aland</territory>
			<territory type="AZ">Azerbaidjan</territory>
			<territory type="BA">Bosnia și Herțegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brazilia</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Insula Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorusia</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Insulele Cocos</territory>
			<territory type="CD">Republica Democrată Congo</territory>
			<territory type="CF">Republica Centrafricană</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Eleveția</territory>
			<territory type="CI">Coasta de Fildeș</territory>
			<territory type="CK">Insulele Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Camerun</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Columbia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia și Muntenegru</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Capul Verde</territory>
			<territory type="CX">Insula Christmas</territory>
			<territory type="CY">Cipru</territory>
			<territory type="CZ">Republica Cehă</territory>
			<territory type="DE">Germania</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danemarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Republica Dominicană</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egipt</territory>
			<territory type="EH">Sahara de Vest</territory>
			<territory type="ER">Eritreea</territory>
			<territory type="ES">Spania</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finlanda</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Insulele Falkland</territory>
			<territory type="FM">Micronezia</territory>
			<territory type="FO">Insulele Feroe</territory>
			<territory type="FR">Franța</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Regatul Unit</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guyana Franceză</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groenlanda</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guineea</territory>
			<territory type="GP">Guadelupa</territory>
			<territory type="GQ">Guineea Ecuatorială</territory>
			<territory type="GR">Grecia</territory>
			<territory type="GS">Insulele Georgia de Sud și Sandwich de Sud</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guineea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Insula Heard și Insulele McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croația</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungaria</territory>
			<territory type="ID">Indonezia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Insula Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Teritoriul Britanic din Oceanul Indian</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islanda</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Iordania</territory>
			<territory type="JP">Japonia</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizstan</territory>
			<territory type="KH">Cambodgia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comore</territory>
			<territory type="KN">Saint Kitts și Nevis</territory>
			<territory type="KP">Coreea de Nord</territory>
			<territory type="KR">Coreea de Sud</territory>
			<territory type="KW">Kuweit</territory>
			<territory type="KY">Insulele Cayman</territory>
			<territory type="KZ">Kazahstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liban</territory>
			<territory type="LC">Sfânta Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Letonia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Maroc</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova, Republica</territory>
			<territory type="ME">Muntenegru</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Insulele Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Insulele Mariane de Nord</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldive</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexic</territory>
			<territory type="MY">Malaezia</territory>
			<territory type="MZ">Mozambic</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Noua Caledonie</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Insulele Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Olanda</territory>
			<territory type="NO">Norvegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Noua Zeelandă</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polinezia Franceză</territory>
			<territory type="PG">Papua Noua Guinee</territory>
			<territory type="PH">Filipine</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PM">Saint Pierre și Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Rico</territory>
			<territory type="PS">Teritoriul Palestinian</territory>
			<territory type="PT">Portugalia</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Oceania Periferică</territory>
			<territory type="QU">Uniunea Europeană</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">România</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Rusia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Arabia Saudită</territory>
			<territory type="SB">Insulele Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Suedia</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Sfânta Elena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard și Jan Mayen</territory>
			<territory type="SK">Slovacia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome și Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Siria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Insulele Turks și Caicos</territory>
			<territory type="TD">Ciad</territory>
			<territory type="TF">Teritoriile Australe și Antarctice Franceze</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailanda</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timorul de Est</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turcia</territory>
			<territory type="TT">Trinidad-Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ucraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Teritoriile Îndepărtate ale Statelor Unite</territory>
			<territory type="US">Statele Unite</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatican</territory>
			<territory type="VC">Saint Vincent și Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Insulele Virgine Britanice</territory>
			<territory type="VI">Insulele Virgine S.U.A.</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis și Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Africa de Sud</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Regiune necunoscută sau incorectă</territory>
		</territories>
		<keys>
			<key type="collation">sortare</key>
			<key type="currency">monedă</key>
		</keys>
		<types>
			<type type="big5han" key="collation">sortare pentru chineza tradițională - Big5</type>
			<type type="buddhist" key="calendar">calendar budist</type>
			<type type="chinese" key="calendar">calendar chinezesc</type>
			<type type="direct" key="collation">sortare directă</type>
			<type type="gb2312han" key="collation">sortare pentru chineza simplificată - GB2312</type>
			<type type="gregorian" key="calendar">calendar gregorian</type>
			<type type="hebrew" key="calendar">calendar ebraic</type>
			<type type="islamic" key="calendar">calendar islamic</type>
			<type type="islamic-civil" key="calendar">calendar islamic civil</type>
			<type type="japanese" key="calendar">calendar japonez</type>
			<type type="phonebook" key="collation">sortare după cartea de telefon</type>
			<type type="pinyin" key="collation">sortare pinyin</type>
			<type type="stroke" key="collation">sortare după numărul de linii</type>
			<type type="traditional" key="collation">sortare tradițională</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">american</measurementSystemName>
			<measurementSystemName type="metric">metric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Limbă: {0}</codePattern>
			<codePattern type="script">Scriere: {0}</codePattern>
			<codePattern type="territory">Regiune: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="keys">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="measurementSystemNames">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a ă â b-i î j-p r s ș t ț u v x z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w y]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a ă â b-i î j-s ș t ț u-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>«</alternateQuotationStart>
		<alternateQuotationEnd>»</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<dateRangePattern>{0} – {1}</dateRangePattern>
		<calendars>
			<calendar type="buddhist">
				<eras>
					<eraNames>
						<era type="0">era budistă</era>
					</eraNames>
					<eraAbbr>
						<era type="0">e.b.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ian.</month>
							<month type="2">feb.</month>
							<month type="3">mar.</month>
							<month type="4">apr.</month>
							<month type="5">mai</month>
							<month type="6">iun.</month>
							<month type="7">iul.</month>
							<month type="8">aug.</month>
							<month type="9">sept.</month>
							<month type="10">oct.</month>
							<month type="11">nov.</month>
							<month type="12">dec.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ianuarie</month>
							<month type="2">februarie</month>
							<month type="3">martie</month>
							<month type="4">aprilie</month>
							<month type="5">mai</month>
							<month type="6">iunie</month>
							<month type="7">iulie</month>
							<month type="8">august</month>
							<month type="9">septembrie</month>
							<month type="10">octombrie</month>
							<month type="11">noiembrie</month>
							<month type="12">decembrie</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">I</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">I</month>
							<month type="7">I</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">Ma</day>
							<day type="wed">Mi</day>
							<day type="thu">J</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">duminică</day>
							<day type="mon">luni</day>
							<day type="tue">marți</day>
							<day type="wed">miercuri</day>
							<day type="thu">joi</day>
							<day type="fri">vineri</day>
							<day type="sat">sâmbătă</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">J</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sat">sâmbătă</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">I</quarter>
							<quarter type="2">II</quarter>
							<quarter type="4">IV</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">trimestrul 1</quarter>
							<quarter type="2">trimestrul 2</quarter>
							<quarter type="3">trimestrul 3</quarter>
							<quarter type="4">trimestrul 4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">trimestrul al I-lea</quarter>
							<quarter type="2">trimestrul al II-lea</quarter>
							<quarter type="3">trimestrul al III-lea</quarter>
							<quarter type="4">trimestrul al IV-lea</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">înainte de Hristos</era>
						<era type="1">după Hristos</era>
					</eraNames>
					<eraAbbr>
						<era type="0">î.e.n.</era>
						<era type="1">e.n.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="MEd">E, d MMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yyyy - MM.yyyy</greatestDifference>
							<greatestDifference id="y">MM.yyyy - MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="d">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="d">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>eră</displayName>
					</field>
					<field type="year">
						<displayName>an</displayName>
					</field>
					<field type="month">
						<displayName>lună</displayName>
					</field>
					<field type="week">
						<displayName>săptămână</displayName>
					</field>
					<field type="day">
						<displayName>zi</displayName>
						<relative type="0">azi</relative>
						<relative type="1">mâine</relative>
						<relative type="2">poimâine</relative>
						<relative type="3">răspoimâine</relative>
						<relative type="-1">ieri</relative>
						<relative type="-2">alaltăieri</relative>
						<relative type="-3">răsalaltăieri</relative>
					</field>
					<field type="weekday">
						<displayName>zi a săptămânii</displayName>
					</field>
					<field type="dayperiod">
						<displayName>perioada zilei</displayName>
					</field>
					<field type="hour">
						<displayName>oră</displayName>
					</field>
					<field type="minute">
						<displayName>minut</displayName>
					</field>
					<field type="second">
						<displayName>secundă</displayName>
					</field>
					<field type="zone">
						<displayName>zonă</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Necunoscut</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erevan</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Polul Sud</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viena</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruxelles</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Insula Paștelui</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Capul Verde</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenhaga</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Insulele Canare</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londra</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atena</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Georgia de Sud</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapesta</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Ierusalim</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuweit</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Chișinău</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldive</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Marchize</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varșovia</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azore</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabona</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Quatar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>București</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscova</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Ekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkuțk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Yakuțk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sahalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamciatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riyad</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sf. Elena</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damasc</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporoje</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Ora statului Alaska</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint Vincent și Grenadines</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>pesetă andorrană</displayName>
			</currency>
			<currency type="AED">
				<displayName>dirham Emiratele Arabe Unite</displayName>
			</currency>
			<currency type="ALL">
				<displayName>leka albaneză</displayName>
			</currency>
			<currency type="AMD">
				<displayName>dram armean</displayName>
			</currency>
			<currency type="ANG">
				<displayName>gulden Antilele Olandeze</displayName>
			</currency>
			<currency type="ARP">
				<displayName>peso argentinian (1983–1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>peso argentinian</displayName>
			</currency>
			<currency type="ATS">
				<displayName>șiling austriac</displayName>
			</currency>
			<currency type="AUD">
				<displayName>dolar australian</displayName>
			</currency>
			<currency type="AZN">
				<displayName>manat azerbaidjan</displayName>
			</currency>
			<currency type="BAD">
				<displayName>dinar Bosnia-Herțegovina</displayName>
			</currency>
			<currency type="BAM">
				<displayName>marcă convertibilă bosniacă</displayName>
			</currency>
			<currency type="BBD">
				<displayName>dolar Barbados</displayName>
			</currency>
			<currency type="BDT">
				<displayName>taka Bangladeș</displayName>
			</currency>
			<currency type="BEC">
				<displayName>franc belgian (convertibil)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>franc belgian</displayName>
			</currency>
			<currency type="BEL">
				<displayName>franc belgian (financiar)</displayName>
			</currency>
			<currency type="BGN">
				<displayName>leva bulgărească nouă</displayName>
			</currency>
			<currency type="BIF">
				<displayName>franc Burundi</displayName>
			</currency>
			<currency type="BMD">
				<displayName>dolar Bermude</displayName>
			</currency>
			<currency type="BND">
				<displayName>dolar Brunei</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>peso bolivian</displayName>
			</currency>
			<currency type="BOV">
				<displayName>mvdol bolivian</displayName>
			</currency>
			<currency type="BRE">
				<displayName>cruzeiro brazilian (1990–1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>real brazilian</displayName>
			</currency>
			<currency type="BRR">
				<displayName>cruzeiro brazilian</displayName>
			</currency>
			<currency type="BSD">
				<displayName>dolar Bahamas</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ngultrum Bhutan</displayName>
			</currency>
			<currency type="BUK">
				<displayName>kyat birman</displayName>
			</currency>
			<currency type="BYR">
				<displayName>rublă bielorusă</displayName>
			</currency>
			<currency type="BZD">
				<displayName>dolar Belize</displayName>
			</currency>
			<currency type="CAD">
				<displayName>dolar canadian</displayName>
			</currency>
			<currency type="CDF">
				<displayName>franc congolez</displayName>
			</currency>
			<currency type="CHF">
				<displayName>franc elvețian</displayName>
			</currency>
			<currency type="CLP">
				<displayName>peso chilian</displayName>
			</currency>
			<currency type="CNY">
				<displayName>yuan renminbi chinezesc</displayName>
			</currency>
			<currency type="COP">
				<displayName>peso columbian</displayName>
			</currency>
			<currency type="CRC">
				<displayName>colon costarican</displayName>
			</currency>
			<currency type="CSD">
				<displayName>dinar vechi Serbia și Muntenegru</displayName>
			</currency>
			<currency type="CUP">
				<displayName>peso cubanez</displayName>
			</currency>
			<currency type="CVE">
				<displayName>escudo al Capului Verde</displayName>
			</currency>
			<currency type="CYP">
				<displayName>liră cipriotă</displayName>
			</currency>
			<currency type="CZK">
				<displayName>coroană cehă</displayName>
			</currency>
			<currency type="DDM">
				<displayName>marcă est-germană</displayName>
			</currency>
			<currency type="DEM">
				<displayName>marcă germană</displayName>
			</currency>
			<currency type="DJF">
				<displayName>franc Djibouti</displayName>
			</currency>
			<currency type="DKK">
				<displayName>coroană daneză</displayName>
			</currency>
			<currency type="DOP">
				<displayName>peso dominican</displayName>
			</currency>
			<currency type="DZD">
				<displayName>dinar algerian</displayName>
			</currency>
			<currency type="ECS">
				<displayName>sucre Ecuador</displayName>
			</currency>
			<currency type="EEK">
				<displayName>coroană estoniană</displayName>
			</currency>
			<currency type="EGP">
				<displayName>liră egipteană</displayName>
			</currency>
			<currency type="ESP">
				<displayName>pesetă spaniolă</displayName>
			</currency>
			<currency type="ETB">
				<displayName>birr etiopian</displayName>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<symbol>euro</symbol>
			</currency>
			<currency type="FIM">
				<displayName>marcă finlandeză</displayName>
			</currency>
			<currency type="FJD">
				<displayName>dolar Fiji</displayName>
			</currency>
			<currency type="FKP">
				<displayName>liră Insulele Falkland</displayName>
			</currency>
			<currency type="FRF">
				<displayName>franc francez</displayName>
			</currency>
			<currency type="GBP">
				<displayName>liră sterlină</displayName>
			</currency>
			<currency type="GEL">
				<displayName>lari georgian</displayName>
			</currency>
			<currency type="GHC">
				<displayName>cedi Ghana</displayName>
			</currency>
			<currency type="GIP">
				<displayName>liră Gibraltar</displayName>
			</currency>
			<currency type="GMD">
				<displayName>dalasi Gambia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>franc Guineea</displayName>
			</currency>
			<currency type="GRD">
				<displayName>drahmă grecească</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>quetzal Guatemala</displayName>
			</currency>
			<currency type="GWP">
				<displayName>peso Guineea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>dolar Guyana</displayName>
			</currency>
			<currency type="HKD">
				<displayName>dolar Hong Kong</displayName>
			</currency>
			<currency type="HNL">
				<displayName>lempira Honduras</displayName>
			</currency>
			<currency type="HRD">
				<displayName>dinar croat</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kuna croată</displayName>
			</currency>
			<currency type="HTG">
				<displayName>gourde Haiti</displayName>
			</currency>
			<currency type="HUF">
				<displayName>forint maghiar</displayName>
			</currency>
			<currency type="IDR">
				<displayName>rupie indoneziană</displayName>
			</currency>
			<currency type="IEP">
				<displayName>liră irlandeză</displayName>
			</currency>
			<currency type="ILP">
				<displayName>liră israeliană</displayName>
			</currency>
			<currency type="ILS">
				<displayName>șechel israelian nou</displayName>
			</currency>
			<currency type="INR">
				<displayName>rupie indiană</displayName>
			</currency>
			<currency type="IQD">
				<displayName>dinar irakian</displayName>
			</currency>
			<currency type="IRR">
				<displayName>rial iranian</displayName>
			</currency>
			<currency type="ISK">
				<displayName>coroană islandeză</displayName>
			</currency>
			<currency type="ITL">
				<displayName>liră italiană</displayName>
			</currency>
			<currency type="JMD">
				<displayName>dolar jamaican</displayName>
			</currency>
			<currency type="JOD">
				<displayName>dinar iordanian</displayName>
			</currency>
			<currency type="JPY">
				<displayName>yen japonez</displayName>
			</currency>
			<currency type="KES">
				<displayName>șiling kenyan</displayName>
			</currency>
			<currency type="KGS">
				<displayName>som Kirghizstan</displayName>
			</currency>
			<currency type="KHR">
				<displayName>riel cambodgian</displayName>
			</currency>
			<currency type="KMF">
				<displayName>franc comorian</displayName>
			</currency>
			<currency type="KPW">
				<displayName>won nord-coreean</displayName>
			</currency>
			<currency type="KRW">
				<displayName>won sud-coreean</displayName>
			</currency>
			<currency type="KWD">
				<displayName>dinar kuweitian</displayName>
			</currency>
			<currency type="KYD">
				<displayName>dolar Insulele Cayman</displayName>
			</currency>
			<currency type="LAK">
				<displayName>kip Laos</displayName>
			</currency>
			<currency type="LBP">
				<displayName>liră libaneză</displayName>
			</currency>
			<currency type="LKR">
				<displayName>rupie Sri Lanka</displayName>
			</currency>
			<currency type="LRD">
				<displayName>dolar liberian</displayName>
			</currency>
			<currency type="LTL">
				<displayName>lit lituanian</displayName>
			</currency>
			<currency type="LUC">
				<displayName>franc convertibil luxemburghez</displayName>
			</currency>
			<currency type="LUF">
				<displayName>franc luxemburghez</displayName>
			</currency>
			<currency type="LUL">
				<displayName>franc financiar luxemburghez</displayName>
			</currency>
			<currency type="LVL">
				<displayName>lats Letonia</displayName>
			</currency>
			<currency type="LVR">
				<displayName>rublă Letonia</displayName>
			</currency>
			<currency type="LYD">
				<displayName>dinar libian</displayName>
			</currency>
			<currency type="MAD">
				<displayName>dirham marocan</displayName>
			</currency>
			<currency type="MAF">
				<displayName>franc marocan</displayName>
			</currency>
			<currency type="MDL">
				<displayName>leu moldovenesc</displayName>
			</currency>
			<currency type="MGF">
				<displayName>franc Madagascar</displayName>
			</currency>
			<currency type="MKD">
				<displayName>dinar macedonean</displayName>
			</currency>
			<currency type="MLF">
				<displayName>franc Mali</displayName>
			</currency>
			<currency type="MMK">
				<displayName>kyat Myanmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>tugrik mongol</displayName>
			</currency>
			<currency type="MTL">
				<displayName>liră malteză</displayName>
			</currency>
			<currency type="MXN">
				<displayName>peso mexican</displayName>
			</currency>
			<currency type="MXP">
				<displayName>peso mexican de argint (1861–1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ringgit malaiezian</displayName>
			</currency>
			<currency type="MZE">
				<displayName>escudo Mozambic</displayName>
			</currency>
			<currency type="MZM">
				<displayName>metical Mozambic vechi</displayName>
			</currency>
			<currency type="MZN">
				<displayName>metical Mozambic</displayName>
			</currency>
			<currency type="NAD">
				<displayName>dolar namibian</displayName>
			</currency>
			<currency type="NIC">
				<displayName>cordoba Nicaragua</displayName>
			</currency>
			<currency type="NLG">
				<displayName>gulden olandez</displayName>
			</currency>
			<currency type="NOK">
				<displayName>coroană norvegiană</displayName>
			</currency>
			<currency type="NPR">
				<displayName>rupie nepaleză</displayName>
			</currency>
			<currency type="NZD">
				<displayName>dolar neozeelandez</displayName>
			</currency>
			<currency type="OMR">
				<displayName>riyal Oman</displayName>
			</currency>
			<currency type="PAB">
				<displayName>balboa panamez</displayName>
			</currency>
			<currency type="PEI">
				<displayName>inti Peru</displayName>
			</currency>
			<currency type="PEN">
				<displayName>sol nou Peru</displayName>
			</currency>
			<currency type="PES">
				<displayName>sol Peru</displayName>
			</currency>
			<currency type="PGK">
				<displayName>kina Papua-Noua Guinee</displayName>
			</currency>
			<currency type="PHP">
				<displayName>peso filipinez</displayName>
			</currency>
			<currency type="PKR">
				<displayName>rupie pakistaneză</displayName>
			</currency>
			<currency type="PLN">
				<displayName>zlot nou polonez</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>zlot polonez (1950–1995)</displayName>
			</currency>
			<currency type="PYG">
				<displayName>guarani Paraguay</displayName>
			</currency>
			<currency type="QAR">
				<displayName>riyal Qatar</displayName>
			</currency>
			<currency type="RHD">
				<displayName>dolar rhodesian</displayName>
			</currency>
			<currency type="ROL">
				<displayName>leu vechi</displayName>
				<symbol choice="true">0≤lei vechi|1≤leu vechi|1&lt;lei vechi</symbol>
			</currency>
			<currency type="RON">
				<displayName>leu</displayName>
				<symbol choice="true">0≤lei|1≤leu|1&lt;lei</symbol>
			</currency>
			<currency type="RSD">
				<displayName>dinar sârbesc</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rublă rusească</displayName>
			</currency>
			<currency type="RWF">
				<displayName>franc rwandez</displayName>
			</currency>
			<currency type="SAR">
				<displayName>riyal Arabia Saudită</displayName>
			</currency>
			<currency type="SBD">
				<displayName>dolar Insulele Solomon</displayName>
			</currency>
			<currency type="SCR">
				<displayName>rupie Seychelles</displayName>
			</currency>
			<currency type="SDD">
				<displayName>dinar sudanez</displayName>
			</currency>
			<currency type="SDP">
				<displayName>liră sudaneză</displayName>
			</currency>
			<currency type="SEK">
				<displayName>coroană suedeză</displayName>
			</currency>
			<currency type="SGD">
				<displayName>dolar Singapore</displayName>
			</currency>
			<currency type="SHP">
				<displayName>liră Insula Sf. Elena</displayName>
			</currency>
			<currency type="SIT">
				<displayName>tolar sloven</displayName>
			</currency>
			<currency type="SKK">
				<displayName>coroană slovacă</displayName>
			</currency>
			<currency type="SLL">
				<displayName>leu Sierra Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>șiling somalez</displayName>
			</currency>
			<currency type="SRD">
				<displayName>dolar Surinam</displayName>
			</currency>
			<currency type="SRG">
				<displayName>gulden Surinam</displayName>
			</currency>
			<currency type="STD">
				<displayName>dobra Sao Tome și Principe</displayName>
			</currency>
			<currency type="SUR">
				<displayName>rublă sovietică</displayName>
			</currency>
			<currency type="SVC">
				<displayName>colon El Salvador</displayName>
			</currency>
			<currency type="SYP">
				<displayName>liră siriană</displayName>
			</currency>
			<currency type="THB">
				<displayName>baht thailandez</displayName>
			</currency>
			<currency type="TJR">
				<displayName>rublă Tadjikistan</displayName>
			</currency>
			<currency type="TND">
				<displayName>dinar tunisian</displayName>
			</currency>
			<currency type="TRL">
				<displayName>liră turcească</displayName>
				<displayName count="other">lire turcești</displayName>
			</currency>
			<currency type="TRY">
				<displayName>liră turcească nouă</displayName>
				<displayName count="other">lire turcești noi</displayName>
			</currency>
			<currency type="TTD">
				<displayName>dolar Trinidad-Tobago</displayName>
			</currency>
			<currency type="TWD">
				<displayName>dolar nou Taiwan</displayName>
			</currency>
			<currency type="TZS">
				<displayName>șiling tanzanian</displayName>
			</currency>
			<currency type="UAH">
				<displayName>hryvna ucraineană</displayName>
			</currency>
			<currency type="UAK">
				<displayName>carboavă ucraineană</displayName>
			</currency>
			<currency type="UGS">
				<displayName>șiling ugandez (1966–1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>șiling ugandez</displayName>
			</currency>
			<currency type="USD">
				<displayName>dolar american</displayName>
			</currency>
			<currency type="USN">
				<displayName>dolar american (ziua următoare)</displayName>
			</currency>
			<currency type="USS">
				<displayName>dolar american (aceeași zi)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>peso Uruguay (1975–1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>peso nou Uruguay</displayName>
			</currency>
			<currency type="UZS">
				<displayName>sum Uzbekistan</displayName>
			</currency>
			<currency type="VEB">
				<displayName>bolivar Venezuela</displayName>
			</currency>
			<currency type="VND">
				<displayName>dong vietnamez</displayName>
			</currency>
			<currency type="XAF">
				<displayName>franc Comunitatea Financiară</displayName>
			</currency>
			<currency type="XAG">
				<displayName>argint</displayName>
			</currency>
			<currency type="XAU">
				<displayName>aur</displayName>
			</currency>
			<currency type="XCD">
				<displayName>dolar Caraibele de Est</displayName>
			</currency>
			<currency type="XDR">
				<displayName>drepturi speciale de tragere</displayName>
			</currency>
			<currency type="XFO">
				<displayName>franc francez aur</displayName>
			</currency>
			<currency type="XPD">
				<displayName>paladiu</displayName>
			</currency>
			<currency type="XPT">
				<displayName>platină</displayName>
			</currency>
			<currency type="XTS">
				<displayName>cod monetar de test</displayName>
			</currency>
			<currency type="XXX">
				<displayName>monedă necunoscută sau incorectă</displayName>
			</currency>
			<currency type="YDD">
				<displayName>dinar Yemen</displayName>
			</currency>
			<currency type="YER">
				<displayName>riyal Yemen</displayName>
			</currency>
			<currency type="YUD">
				<displayName>dinar iugoslav greu</displayName>
			</currency>
			<currency type="YUM">
				<displayName>dinar iugoslav nou</displayName>
			</currency>
			<currency type="YUN">
				<displayName>dinar iugoslav convertibil</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>rand sud-african (financiar)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>rand sud-african</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>zair nou</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>dolar Zimbabwe</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>da:d</yesstr>
			<nostr>nu:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ ��i##Locale/Data/ln_CG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ln"/>
		<territory type="CG"/>
	</identity>
</ldml>
PKpG[E�g}@@Locale/Data/ro_MD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.1 $"/>
        <generation date="$Date: 2008/06/02 20:30:10 $"/>
        <language type="ro"/>
        <territory type="MD"/>
    </identity>
</ldml>
PKpG[��R|�|�Locale/Data/el.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.95 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="el"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Αφρικάανς</language>
			<language type="afa">Αφροασιατική Γλώσσα</language>
			<language type="am">Αμαρικά</language>
			<language type="ang">Παλαιά Αγγλικά</language>
			<language type="apa">Γλώσσα Απάτσι</language>
			<language type="ar">Αραβικά</language>
			<language type="arc">Αραμαϊκά</language>
			<language type="arp">Αράπαχο</language>
			<language type="art">Τεχνητή Γλώσσα</language>
			<language type="as">Ασαμέζικα</language>
			<language type="aus">Αυστραλιανή Γλώσσα</language>
			<language type="ay">Αϊμάρα</language>
			<language type="az">Αζερμπαϊτζανικά</language>
			<language type="bat">Βαλτική Γλώσσα</language>
			<language type="be">Λευκορωσικά</language>
			<language type="bg">Βουλγαρικά</language>
			<language type="bh">Μπιχάρι</language>
			<language type="bn">Μπενγκάλι</language>
			<language type="bo">Θιβετιανά</language>
			<language type="br">Βρετονικά</language>
			<language type="bs">Βοσνιακά</language>
			<language type="ca">Καταλανικά</language>
			<language type="cai">Ινδιανική Γλώσσα Κεντρικής Αμερικής</language>
			<language type="cau">Καυκάσια Γλώσσα</language>
			<language type="cel">Κελτική Γλώσσα</language>
			<language type="co">Κορσικανικά</language>
			<language type="cop">Κοπτικά</language>
			<language type="crh">Τουρκικά Κριμαίας</language>
			<language type="cs">Τσεχικά</language>
			<language type="cy">Ουαλικά</language>
			<language type="da">Δανικά</language>
			<language type="de">Γερμανικά</language>
			<language type="de_AT">Γερμανικά Αυστρίας</language>
			<language type="de_CH">Γερμανικά Ελβετίας</language>
			<language type="dum">Μέσα Ολλανδικά</language>
			<language type="egy">Αρχαία Αιγυπτιακά</language>
			<language type="el">Ελληνικά</language>
			<language type="en">Αγγλικά</language>
			<language type="en_AU">Αγγλικά Αυστραλίας</language>
			<language type="en_CA">Αγγλικά Καναδά</language>
			<language type="en_GB">Αγγλικά Ηνωμένου Βασιλείου</language>
			<language type="en_US">Αγγλικά Ηνωμένων Πολιτειών</language>
			<language type="enm">Μέσα Αγγλικά</language>
			<language type="eo">Εσπεράντο</language>
			<language type="es">Ισπανικά</language>
			<language type="es_419">Ισπανικά Λατινικής Αμερικής</language>
			<language type="es_ES">Ισπανικά Ιβηρικής</language>
			<language type="et">Εσθονικά</language>
			<language type="eu">Βασκικά</language>
			<language type="fa">Περσικά</language>
			<language type="fi">Φινλανδικά</language>
			<language type="fil">Φιλιππινέζικα</language>
			<language type="fo">Φαρόε</language>
			<language type="fr">Γαλλικά</language>
			<language type="fr_CA">Γαλλικά Καναδά</language>
			<language type="fr_CH">Γαλλικά Ελβετίας</language>
			<language type="frm">Μέσα Γαλλικά</language>
			<language type="fro">Παλαιά Γαλλικά</language>
			<language type="fy">Φριζιανά</language>
			<language type="ga">Ιρλανδικά</language>
			<language type="gd">Σκωτικά Κελτικά</language>
			<language type="gl">Γαλικιανά</language>
			<language type="gmh">Μέσα Άνω Γερμανικά</language>
			<language type="gn">Γκουαράνι</language>
			<language type="goh">Παλαιά Άνω Γερμανικά</language>
			<language type="got">Γοτθικά</language>
			<language type="grc">Αρχαία Ελληνικά</language>
			<language type="gu">Γκουγιαράτι</language>
			<language type="haw">Χαβανέζικα</language>
			<language type="he">Εβραϊκά</language>
			<language type="hi">Χίντι</language>
			<language type="hr">Κροατικά</language>
			<language type="hu">Ουγγρικά</language>
			<language type="hy">Αρμενικά</language>
			<language type="ia">Ιντερλίνγκουα</language>
			<language type="id">Ινδονησιακά</language>
			<language type="ie">Ιντερλίνγκουε</language>
			<language type="ine">Ινδοευρωπαϊκά (¨Αλλη)</language>
			<language type="ira">ιρανικά</language>
			<language type="is">Ισλανδικά</language>
			<language type="it">Ιταλικά</language>
			<language type="ja">Ιαπωνικά</language>
			<language type="jpr">Ιουδαϊκά-Περσικά</language>
			<language type="jrb">Ιουδαϊκά-Αραβικά</language>
			<language type="jv">Ιαβανέζικα</language>
			<language type="ka">Γεωργιανά</language>
			<language type="km">Καμποτζιανά</language>
			<language type="kn">Κανάντα</language>
			<language type="ko">Κορεατικά</language>
			<language type="ks">Κασμίρι</language>
			<language type="ku">Κουρδικά</language>
			<language type="ky">Κυργιζικά</language>
			<language type="la">Λατινικά</language>
			<language type="lb">Λουξεμβουργικά</language>
			<language type="ln">Λινγκάλα</language>
			<language type="lo">Λαοθιανά</language>
			<language type="lt">Λιθουανικά</language>
			<language type="lv">Λετονικά</language>
			<language type="mga">Μέσα Ιρλανδικά</language>
			<language type="mis">Διάφορες Γλώσσες</language>
			<language type="mk">Σλαβομακεδονικά</language>
			<language type="ml">Μαλαγιαλάμ</language>
			<language type="mn">Μογγολικά</language>
			<language type="mo">Μολδαβικά</language>
			<language type="mr">Μαράθι</language>
			<language type="ms">Μαλάι</language>
			<language type="mt">Μαλτέζικα</language>
			<language type="mul">Πολλαπλές Γλώσσες</language>
			<language type="my">Βιρμανικά</language>
			<language type="nai">Ινδιανικά Βόρειας Αμερικής (Άλλα)</language>
			<language type="ne">Νεπάλι</language>
			<language type="nl">Ολλανδικά</language>
			<language type="nl_BE">Φλαμανδικά</language>
			<language type="nn">Νορβηγικά Νινόρσκ</language>
			<language type="no">Νορβηγικά</language>
			<language type="non">Παλαιά Νορβηγικά</language>
			<language type="oc">Οκσιτανικά</language>
			<language type="or">Ορίγια</language>
			<language type="ota">Τουρκικά Οθωμανικά</language>
			<language type="pa">Παντζαπικά</language>
			<language type="peo">Αρχαία Περσικά</language>
			<language type="phi">Φιλιππινέζικα (Άλλα)</language>
			<language type="phn">Φοινικικά</language>
			<language type="pl">Πολωνικά</language>
			<language type="ps">Πάστο</language>
			<language type="pt">Πορτογαλικά</language>
			<language type="pt_BR">Πορτογαλικά Βραζιλίας</language>
			<language type="pt_PT">Πορτογαλικά Ιβηρικής</language>
			<language type="ro">Ρουμανικά</language>
			<language type="rom">Ρωμανικά</language>
			<language type="ru">Ρωσικά</language>
			<language type="sa">Σανσκριτικά</language>
			<language type="sai">Ινδιανική Γλώσσα Νοτίου Αμερικής</language>
			<language type="sd">Σίντι</language>
			<language type="sem">Σημιτικά (Άλλα)</language>
			<language type="sga">Παλαιά Ιρλανδικά</language>
			<language type="sh">Σερβοκροατικά</language>
			<language type="si">Σινχαλέζικα</language>
			<language type="sit">Σινοθιβετιανή Γλώσσα</language>
			<language type="sk">Σλοβακικά</language>
			<language type="sl">Σλοβενικά</language>
			<language type="sla">Σλαβικά (Άλλα)</language>
			<language type="so">Σομάλι</language>
			<language type="sq">Αλβανικά</language>
			<language type="sr">Σερβικά</language>
			<language type="su">Σουδανικά</language>
			<language type="sv">Σουηδικά</language>
			<language type="sw">Σουαχίλι</language>
			<language type="syr">Συριακά</language>
			<language type="ta">Ταμίλ</language>
			<language type="te">Τελούγκου</language>
			<language type="th">Ταϊλανδικά</language>
			<language type="ti">Τιγκρίνυα</language>
			<language type="tk">Τουρκμενικά</language>
			<language type="tlh">Κλίνγκον</language>
			<language type="tr">Τουρκικά</language>
			<language type="tw">Τούι</language>
			<language type="ug">Ουιγουρικά</language>
			<language type="uk">Ουκρανικά</language>
			<language type="und">Άγνωστη ή Ακατάλληλη Γλώσσα</language>
			<language type="ur">Ουρντού</language>
			<language type="uz">Ουζμπεκικά</language>
			<language type="vi">Βιετναμέζικα</language>
			<language type="wo">Γουόλοφ</language>
			<language type="xh">Ζόσα</language>
			<language type="yi">Ιουδαϊκά</language>
			<language type="zh">Κινεζικά</language>
			<language type="zh_Hans">Κινεζικά Απλοποιημένα</language>
			<language type="zh_Hant">Κινεζικά Παραδοσιακά</language>
			<language type="zu">Ζουλού</language>
			<language type="zxx">Χωρίς γλωσσολογικό περιεχόμενο</language>
		</languages>
		<scripts>
			<script type="Arab">Αραβικό</script>
			<script type="Armn">Αρμενικό</script>
			<script type="Beng">Μπενγκάλι</script>
			<script type="Brai">Μπράιγ</script>
			<script type="Copt">Κοπτικό</script>
			<script type="Cprt">Κυπριακό</script>
			<script type="Cyrl">Κυριλλικό</script>
			<script type="Cyrs">Παλαιό Εκκλησιαστικό Σλαβικό Κυριλλικό</script>
			<script type="Egyd">Αιγυπτιακό Λαϊκό</script>
			<script type="Egyh">Αιγυπτιακό Ιερατικό</script>
			<script type="Egyp">Αιγυπτιακά Ιερογλυφικά</script>
			<script type="Ethi">Αιθιοπικό</script>
			<script type="Geor">Γεωργιανό</script>
			<script type="Goth">Γοτθικό</script>
			<script type="Grek">Ελληνικό</script>
			<script type="Gujr">Γκουγιαράτι</script>
			<script type="Hans">Κινεζικό Απλοποιημένο</script>
			<script type="Hant">Κινεζικό Παραδοσιακό</script>
			<script type="Hebr">Εβραϊκό</script>
			<script type="Hung">Παλαιό Ουγγρικό</script>
			<script type="Ital">Παλαιό Ιταλικό</script>
			<script type="Java">Ιαβανέζικο</script>
			<script type="Jpan">Ιαπωνικό</script>
			<script type="Knda">Καναντικό</script>
			<script type="Latn">Λατινικό</script>
			<script type="Lina">Γραμμική Α</script>
			<script type="Linb">Γραμμική Β</script>
			<script type="Mlym">Μαλαϊκό</script>
			<script type="Mong">Μογγολικό</script>
			<script type="Perm">Παλαιό Περμικό</script>
			<script type="Phnx">Φοινικικό</script>
			<script type="Syrc">Συριακό</script>
			<script type="Syrn">Συριακό Ανατολικό</script>
			<script type="Thai">Ταϊλανδικό</script>
			<script type="Tibt">Θιβετιανό</script>
			<script type="Xpeo">Παλαιό Περσικό</script>
			<script type="Zxxx">Zxxx</script>
			<script type="Zyyy">Κοινό</script>
			<script type="Zzzz">Άγνωστη ή Ακατάλληλη Γραφή</script>
		</scripts>
		<territories>
			<territory type="001">Κόσμος</territory>
			<territory type="002">Αφρική</territory>
			<territory type="003">Βόρεια Αμερική</territory>
			<territory type="005">Νότια Αμερική</territory>
			<territory type="009">Ωκεανία</territory>
			<territory type="011">Δυτική Αφρική</territory>
			<territory type="013">Κεντρική Αμερική</territory>
			<territory type="014">Ανατολική Αφρική</territory>
			<territory type="015">Βόρεια Αφρική</territory>
			<territory type="017">Μέση Αφρική</territory>
			<territory type="018">Νότια Αφρική [018]</territory>
			<territory type="019">Αμερική</territory>
			<territory type="021">Βόρειος Αμερική</territory>
			<territory type="029">Καραϊβική</territory>
			<territory type="030">Ανατολική Ασία</territory>
			<territory type="034">Νότια Ασία</territory>
			<territory type="035">Νοτιοανατολική Ασία</territory>
			<territory type="039">Νότια Ευρώπη</territory>
			<territory type="053">Αυστραλία και Νέα Ζηλανδία</territory>
			<territory type="054">Μελανησία</territory>
			<territory type="057">Περιοχή Μικρονησίας</territory>
			<territory type="061">Πολυνησία</territory>
			<territory type="062">Νότια Κεντρική Ασία</territory>
			<territory type="142">Ασία</territory>
			<territory type="143">Κεντρική Ασία</territory>
			<territory type="145">Δυτική Ασία</territory>
			<territory type="150">Ευρώπη</territory>
			<territory type="151">Ανατολική Ευρώπη</territory>
			<territory type="154">Βόρεια Ευρώπη</territory>
			<territory type="155">Δυτική Ευρώπη</territory>
			<territory type="172">Κοινοπολιτεία Ανεξαρτήτων Πολιτειών</territory>
			<territory type="419">Λατινική Αμερική και Καραϊβική</territory>
			<territory type="830">Νήσοι Καναλιού</territory>
			<territory type="AD">Ανδόρα</territory>
			<territory type="AE">Ηνωμένα Αραβικά Εμιράτα</territory>
			<territory type="AF">Αφγανιστάν</territory>
			<territory type="AG">Αντίγκουα και Μπαρμπούντα</territory>
			<territory type="AI">Ανγκουίλα</territory>
			<territory type="AL">Αλβανία</territory>
			<territory type="AM">Αρμενία</territory>
			<territory type="AN">Ολλανδικές Αντίλλες</territory>
			<territory type="AO">Ανγκόλα</territory>
			<territory type="AQ">Ανταρκτική</territory>
			<territory type="AR">Αργεντινή</territory>
			<territory type="AS">Αμερικανική Σαμόα</territory>
			<territory type="AT">Αυστρία</territory>
			<territory type="AU">Αυστραλία</territory>
			<territory type="AW">Αρούμπα</territory>
			<territory type="AX">Νήσοι Άλαντ</territory>
			<territory type="AZ">Αζερμπαϊτζάν</territory>
			<territory type="BA">Βοσνία - Ερζεγοβίνη</territory>
			<territory type="BB">Μπαρμπάντος</territory>
			<territory type="BD">Μπανγκλαντές</territory>
			<territory type="BE">Βέλγιο</territory>
			<territory type="BF">Μπουρκίνα Φάσο</territory>
			<territory type="BG">Βουλγαρία</territory>
			<territory type="BH">Μπαχρέιν</territory>
			<territory type="BI">Μπουρούντι</territory>
			<territory type="BJ">Μπένιν</territory>
			<territory type="BL">Άγιος Βαρθολομαίος</territory>
			<territory type="BM">Βερμούδες</territory>
			<territory type="BN">Μπρουνέι Νταρουσαλάμ</territory>
			<territory type="BO">Βολιβία</territory>
			<territory type="BR">Βραζιλία</territory>
			<territory type="BS">Μπαχάμες</territory>
			<territory type="BT">Μπουτάν</territory>
			<territory type="BV">Νήσος Μπουβέ</territory>
			<territory type="BW">Μποτσουάνα</territory>
			<territory type="BY">Λευκορωσία</territory>
			<territory type="BZ">Μπελίζ</territory>
			<territory type="CA">Καναδάς</territory>
			<territory type="CC">Νήσοι Κόκος</territory>
			<territory type="CD">Κονγκό - Κινσάσα</territory>
			<territory type="CF">Κεντροαφρικανική Δημοκρατία</territory>
			<territory type="CG">Κονγκό</territory>
			<territory type="CH">Ελβετία</territory>
			<territory type="CI">Ακτή Ελεφαντοστού</territory>
			<territory type="CK">Νήσοι Κουκ</territory>
			<territory type="CL">Χιλή</territory>
			<territory type="CM">Καμερούν</territory>
			<territory type="CN">Κίνα</territory>
			<territory type="CO">Κολομβία</territory>
			<territory type="CR">Κόστα Ρίκα</territory>
			<territory type="CS">Σερβία και Μαυροβούνιο</territory>
			<territory type="CU">Κούβα</territory>
			<territory type="CV">Πράσινο Ακρωτήριο</territory>
			<territory type="CX">Νήσος Χριστουγέννων</territory>
			<territory type="CY">Κύπρος</territory>
			<territory type="CZ">Τσεχία</territory>
			<territory type="DE">Γερμανία</territory>
			<territory type="DJ">Τζιμπουτί</territory>
			<territory type="DK">Δανία</territory>
			<territory type="DM">Ντομίνικα</territory>
			<territory type="DO">Δομινικανή Δημοκρατία</territory>
			<territory type="DZ">Αλγερία</territory>
			<territory type="EC">Ισημερινός</territory>
			<territory type="EE">Εσθονία</territory>
			<territory type="EG">Αίγυπτος</territory>
			<territory type="EH">Δυτική Σαχάρα</territory>
			<territory type="ER">Ερυθραία</territory>
			<territory type="ES">Ισπανία</territory>
			<territory type="ET">Αιθιοπία</territory>
			<territory type="FI">Φινλανδία</territory>
			<territory type="FJ">Φίτζι</territory>
			<territory type="FK">Νήσοι Φώκλαντ</territory>
			<territory type="FM">Μικρονησία</territory>
			<territory type="FO">Νήσοι Φερόες</territory>
			<territory type="FR">Γαλλία</territory>
			<territory type="GA">Γκαμπόν</territory>
			<territory type="GB">Ηνωμένο Βασίλειο</territory>
			<territory type="GD">Γρενάδα</territory>
			<territory type="GE">Γεωργία</territory>
			<territory type="GF">Γαλλική Γουιάνα</territory>
			<territory type="GG">Γκερνσέι</territory>
			<territory type="GH">Γκάνα</territory>
			<territory type="GI">Γιβραλτάρ</territory>
			<territory type="GL">Γροιλανδία</territory>
			<territory type="GM">Γκάμπια</territory>
			<territory type="GN">Γουινέα</territory>
			<territory type="GP">Γουαδελούπη</territory>
			<territory type="GQ">Ισημερινή Γουινέα</territory>
			<territory type="GR">Ελλάδα</territory>
			<territory type="GS">Νότια Γεωργία και Νότιες Νήσοι Σάντουιτς</territory>
			<territory type="GT">Γουατεμάλα</territory>
			<territory type="GU">Γκουάμ</territory>
			<territory type="GW">Γουινέα-Μπισάου</territory>
			<territory type="GY">Γουιάνα</territory>
			<territory type="HK">Χονγκ Κονγκ</territory>
			<territory type="HM">Νήσοι Χερντ και Μακντόναλντ</territory>
			<territory type="HN">Ονδούρα</territory>
			<territory type="HR">Κροατία</territory>
			<territory type="HT">Αϊτή</territory>
			<territory type="HU">Ουγγαρία</territory>
			<territory type="ID">Ινδονησία</territory>
			<territory type="IE">Ιρλανδία</territory>
			<territory type="IL">Ισραήλ</territory>
			<territory type="IM">Νήσος Μαν</territory>
			<territory type="IN">Ινδία</territory>
			<territory type="IO">Βρετανικά Έδάφη Ινδικού Ωκεανού</territory>
			<territory type="IQ">Ιράκ</territory>
			<territory type="IR">Ιράν</territory>
			<territory type="IS">Ισλανδία</territory>
			<territory type="IT">Ιταλία</territory>
			<territory type="JE">Υερσέη</territory>
			<territory type="JM">Τζαμάικα</territory>
			<territory type="JO">Ιορδανία</territory>
			<territory type="JP">Ιαπωνία</territory>
			<territory type="KE">Κένυα</territory>
			<territory type="KG">Κιργιζία</territory>
			<territory type="KH">Καμπότζη</territory>
			<territory type="KI">Κιριμπάτι</territory>
			<territory type="KM">Κομόρες</territory>
			<territory type="KN">Σαιντ Κιτς και Νέβις</territory>
			<territory type="KP">Βόρεια Κορέα</territory>
			<territory type="KR">Νότια Κορέα</territory>
			<territory type="KW">Κουβέιτ</territory>
			<territory type="KY">Νήσοι Κέιμαν</territory>
			<territory type="KZ">Καζακστάν</territory>
			<territory type="LA">Λάος</territory>
			<territory type="LB">Λίβανος</territory>
			<territory type="LC">Αγία Λουκία</territory>
			<territory type="LI">Λιχτενστάιν</territory>
			<territory type="LK">Σρι Λάνκα</territory>
			<territory type="LR">Λιβερία</territory>
			<territory type="LS">Λεσότο</territory>
			<territory type="LT">Λιθουανία</territory>
			<territory type="LU">Λουξεμβούργο</territory>
			<territory type="LV">Λετονία</territory>
			<territory type="LY">Λιβύη</territory>
			<territory type="MA">Μαρόκο</territory>
			<territory type="MC">Μονακό</territory>
			<territory type="MD">Μολδαβία</territory>
			<territory type="ME">Μαυροβούνιο</territory>
			<territory type="MF">Άγιος Μαρτίνος</territory>
			<territory type="MG">Μαδαγασκάρη</territory>
			<territory type="MH">Νήσοι Μάρσαλ</territory>
			<territory type="MK">ΠΓΔ Μακεδονίας</territory>
			<territory type="ML">Μάλι</territory>
			<territory type="MM">Μιανμάρ</territory>
			<territory type="MN">Μογγολία</territory>
			<territory type="MO">Μακάο</territory>
			<territory type="MP">Νήσοι Βόρειες Μαριάνες</territory>
			<territory type="MQ">Μαρτινίκα</territory>
			<territory type="MR">Μαυριτανία</territory>
			<territory type="MS">Μονσεράτ</territory>
			<territory type="MT">Μάλτα</territory>
			<territory type="MU">Μαυρίκιος</territory>
			<territory type="MV">Μαλδίβες</territory>
			<territory type="MW">Μαλάουι</territory>
			<territory type="MX">Μεξικό</territory>
			<territory type="MY">Μαλαισία</territory>
			<territory type="MZ">Μοζαμβίκη</territory>
			<territory type="NA">Ναμίμπια</territory>
			<territory type="NC">Νέα Καληδονία</territory>
			<territory type="NE">Νίγηρ</territory>
			<territory type="NF">Νήσος Νόρφολκ</territory>
			<territory type="NG">Νιγηρία</territory>
			<territory type="NI">Νικαράγουα</territory>
			<territory type="NL">Ολλανδία</territory>
			<territory type="NO">Νορβηγία</territory>
			<territory type="NP">Νεπάλ</territory>
			<territory type="NR">Ναούρου</territory>
			<territory type="NU">Νιούε</territory>
			<territory type="NZ">Νέα Ζηλανδία</territory>
			<territory type="OM">Ομάν</territory>
			<territory type="PA">Παναμάς</territory>
			<territory type="PE">Περού</territory>
			<territory type="PF">Γαλλική Πολυνησία</territory>
			<territory type="PG">Παπούα - Νέα Γουινέα</territory>
			<territory type="PH">Φιλιππίνες</territory>
			<territory type="PK">Πακιστάν</territory>
			<territory type="PL">Πολωνία</territory>
			<territory type="PM">Σαιντ Πιέρ και Μικελόν</territory>
			<territory type="PN">Πίτκερν</territory>
			<territory type="PR">Πουέρτο Ρίκο</territory>
			<territory type="PS">Παλαιστινιακά Εδάφη</territory>
			<territory type="PT">Πορτογαλία</territory>
			<territory type="PW">Παλάου</territory>
			<territory type="PY">Παραγουάη</territory>
			<territory type="QA">Κατάρ</territory>
			<territory type="QO">Περιφερειακή Ωκεανία</territory>
			<territory type="QU">Ευρωπαϊκή Ένωση</territory>
			<territory type="RE">Ρεϋνιόν</territory>
			<territory type="RO">Ρουμανία</territory>
			<territory type="RS">Σερβία</territory>
			<territory type="RU">Ρωσία</territory>
			<territory type="RW">Ρουάντα</territory>
			<territory type="SA">Σαουδική Αραβία</territory>
			<territory type="SB">Νήσοι Σολομώντος</territory>
			<territory type="SC">Σεϋχέλλες</territory>
			<territory type="SD">Σουδάν</territory>
			<territory type="SE">Σουηδία</territory>
			<territory type="SG">Σιγκαπούρη</territory>
			<territory type="SH">Αγία Ελένη</territory>
			<territory type="SI">Σλοβενία</territory>
			<territory type="SJ">Σβαλμπάρντ και Γιαν Μαγιέν</territory>
			<territory type="SK">Σλοβακία</territory>
			<territory type="SL">Σιέρα Λεόνε</territory>
			<territory type="SM">Άγιος Μαρίνος</territory>
			<territory type="SN">Σενεγάλη</territory>
			<territory type="SO">Σομαλία</territory>
			<territory type="SR">Σουρινάμ</territory>
			<territory type="ST">Σάο Τομέ και Πρίνσιπε</territory>
			<territory type="SV">Ελ Σαλβαδόρ</territory>
			<territory type="SY">Συρία</territory>
			<territory type="SZ">Ζουαζηλάνδη</territory>
			<territory type="TC">Νήσοι Τερκς και Κάικος</territory>
			<territory type="TD">Τσαντ</territory>
			<territory type="TF">Γαλλικά Νότια Εδάφη</territory>
			<territory type="TG">Τόγκο</territory>
			<territory type="TH">Ταϊλάνδη</territory>
			<territory type="TJ">Τατζικιστάν</territory>
			<territory type="TK">Τοκελάου</territory>
			<territory type="TL">Ανατολικό Τιμόρ</territory>
			<territory type="TM">Τουρκμενιστάν</territory>
			<territory type="TN">Τυνησία</territory>
			<territory type="TO">Τόνγκα</territory>
			<territory type="TR">Τουρκία</territory>
			<territory type="TT">Τρινιδάδ και Τομπάγκο</territory>
			<territory type="TV">Τουβαλού</territory>
			<territory type="TW">Ταϊβάν</territory>
			<territory type="TZ">Τανζανία</territory>
			<territory type="UA">Ουκρανία</territory>
			<territory type="UG">Ουγκάντα</territory>
			<territory type="UM">Απομακρυσμένες Νησίδες των Ηνωμένων Πολιτειών</territory>
			<territory type="US">Ηνωμένες Πολιτείες</territory>
			<territory type="UY">Ουρουγουάη</territory>
			<territory type="UZ">Ουζμπεκιστάν</territory>
			<territory type="VA">Βατικανό</territory>
			<territory type="VC">Άγιος Βικέντιος και Γρεναδίνες</territory>
			<territory type="VE">Βενεζουέλα</territory>
			<territory type="VG">Βρετανικές Παρθένοι Νήσοι</territory>
			<territory type="VI">Αμερικανικές Παρθένοι Νήσοι</territory>
			<territory type="VN">Βιετνάμ</territory>
			<territory type="VU">Βανουάτου</territory>
			<territory type="WF">Νήσοι Ουαλλίς και Φουτουνά</territory>
			<territory type="WS">Σαμόα</territory>
			<territory type="YE">Υεμένη</territory>
			<territory type="YT">Μαγιότ</territory>
			<territory type="ZA">Νότια Αφρική</territory>
			<territory type="ZM">Ζάμπια</territory>
			<territory type="ZW">Ζιμπάμπουε</territory>
			<territory type="ZZ">Άγνωστη ή Άκυρη Περιοχή</territory>
		</territories>
		<variants>
			<variant type="1901">Παραδοσιακή Γερμανική Ορθογραφία</variant>
			<variant type="1996">Γερμανική Ορθογραφία του 1996</variant>
			<variant type="MONOTON">Μονοτονικό</variant>
			<variant type="POLYTON">Πολυτονικό</variant>
			<variant type="REVISED">Αναθεωρημένη Ορθογραφία</variant>
		</variants>
		<keys>
			<key type="calendar">Ημερολόγιο</key>
			<key type="collation">Τακτοποίηση</key>
			<key type="currency">Νόμισμα</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Κινεζική Παραδοσιακή Σειρά - Big5</type>
			<type type="buddhist" key="calendar">Βουδιστικό Ημερολόγιο</type>
			<type type="chinese" key="calendar">Κινέζικο Ημερολόγιο</type>
			<type type="direct" key="collation">Άμεση σειρά ταξινόμησης</type>
			<type type="gb2312han" key="collation">Κινεζική Απλουστευμένη Σειρά - GB2312</type>
			<type type="gregorian" key="calendar">Γρηγοριανό Ημερολόγιο</type>
			<type type="hebrew" key="calendar">Εβραϊκό Ημερολόγιο</type>
			<type type="indian" key="calendar">Ινδικό Εθνικό Ημερολόγιο</type>
			<type type="islamic" key="calendar">Ισλαμικό Ημερολόγιο</type>
			<type type="islamic-civil" key="calendar">Ισλαμικό-Αστικό Ημερολόγιο</type>
			<type type="japanese" key="calendar">Ιαπωνικό Ημερολόγιο</type>
			<type type="phonebook" key="collation">Σειρά Τηλεφωνικού Καταλόγου</type>
			<type type="pinyin" key="collation">Σειρά Pinyin</type>
			<type type="stroke" key="collation">Σειρά Stroke</type>
			<type type="traditional" key="collation">Παραδοσιακή Σειρά</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Αγγλοσαξωνικό</measurementSystemName>
			<measurementSystemName type="metric">Μετρικό</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Γλώσσα: {0}</codePattern>
			<codePattern type="script">Σύστημα Γραφής: {0}</codePattern>
			<codePattern type="territory">Περιοχή: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[α ά β-ε έ ζ η ή θ ι ί ϊ ΐ κ-ο ό π ρ σ ς τ υ ύ ϋ ΰ φ-ω ώ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ιαν</month>
							<month type="2">Φεβ</month>
							<month type="3">Μαρ</month>
							<month type="4">Απρ</month>
							<month type="5">Μαϊ</month>
							<month type="6">Ιουν</month>
							<month type="7">Ιουλ</month>
							<month type="8">Αυγ</month>
							<month type="9">Σεπ</month>
							<month type="10">Οκτ</month>
							<month type="11">Νοε</month>
							<month type="12">Δεκ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ιανουαρίου</month>
							<month type="2">Φεβρουαρίου</month>
							<month type="3">Μαρτίου</month>
							<month type="4">Απριλίου</month>
							<month type="5">Μαΐου</month>
							<month type="6">Ιουνίου</month>
							<month type="7">Ιουλίου</month>
							<month type="8">Αυγούστου</month>
							<month type="9">Σεπτεμβρίου</month>
							<month type="10">Οκτωβρίου</month>
							<month type="11">Νοεμβρίου</month>
							<month type="12">Δεκεμβρίου</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">Ι</month>
							<month type="2">Φ</month>
							<month type="3">Μ</month>
							<month type="4">Α</month>
							<month type="5">Μ</month>
							<month type="6">Ι</month>
							<month type="7">Ι</month>
							<month type="8">Α</month>
							<month type="9">Σ</month>
							<month type="10">Ο</month>
							<month type="11">Ν</month>
							<month type="12">Δ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ιανουάριος</month>
							<month type="2">Φεβρουάριος</month>
							<month type="3">Μάρτιος</month>
							<month type="4">Απρίλιος</month>
							<month type="5">Μάιος</month>
							<month type="6">Ιούνιος</month>
							<month type="7">Ιούλιος</month>
							<month type="8">Αύγουστος</month>
							<month type="9">Σεπτέμβριος</month>
							<month type="10">Οκτώβριος</month>
							<month type="11">Νοέμβριος</month>
							<month type="12">Δεκέμβριος</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Κυρ</day>
							<day type="mon">Δευ</day>
							<day type="tue">Τρι</day>
							<day type="wed">Τετ</day>
							<day type="thu">Πεμ</day>
							<day type="fri">Παρ</day>
							<day type="sat">Σαβ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Κυριακή</day>
							<day type="mon">Δευτέρα</day>
							<day type="tue">Τρίτη</day>
							<day type="wed">Τετάρτη</day>
							<day type="thu">Πέμπτη</day>
							<day type="fri">Παρασκευή</day>
							<day type="sat">Σάββατο</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Κ</day>
							<day type="mon">Δ</day>
							<day type="tue">Τ</day>
							<day type="wed">Τ</day>
							<day type="thu">Π</day>
							<day type="fri">Π</day>
							<day type="sat">Σ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Τ1</quarter>
							<quarter type="2">Τ2</quarter>
							<quarter type="3">Τ3</quarter>
							<quarter type="4">Τ4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1ο τρίμηνο</quarter>
							<quarter type="2">2ο τρίμηνο</quarter>
							<quarter type="3">3ο τρίμηνο</quarter>
							<quarter type="4">4ο τρίμηνο</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<quarter type="1">Τ1</quarter>
							<quarter type="2">Τ2</quarter>
							<quarter type="3">Τ3</quarter>
							<quarter type="4">Τ4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>π.μ.</am>
				<pm>μ.μ.</pm>
				<eras>
					<eraNames>
						<era type="0">π.Χ.</era>
						<era type="1">μ.Χ.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">π.Χ.</era>
						<era type="1">μ.Χ.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL-LLL yyyy</greatestDifference>
							<greatestDifference id="y">LLL yyyy - LLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, dd MMM yyyy - E, dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Περίοδος</displayName>
					</field>
					<field type="year">
						<displayName>Έτος</displayName>
					</field>
					<field type="month">
						<displayName>Μήνας</displayName>
					</field>
					<field type="week">
						<displayName>Εβδομάδα</displayName>
					</field>
					<field type="day">
						<displayName>Ημέρα</displayName>
						<relative type="0">Σήμερα</relative>
						<relative type="1">Αύριο</relative>
						<relative type="2">Μεθαύριο</relative>
						<relative type="3">Σε τρεις ημέρες από τώρα</relative>
						<relative type="-1">Εχθές</relative>
						<relative type="-2">Προχθές</relative>
						<relative type="-3">Πριν από τρεις ημέρες</relative>
					</field>
					<field type="weekday">
						<displayName>Ημέρα Εβδομάδας</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ΠΜ/ΜΜ</displayName>
					</field>
					<field type="hour">
						<displayName>Ώρα</displayName>
					</field>
					<field type="minute">
						<displayName>Λεπτό</displayName>
					</field>
					<field type="second">
						<displayName>Δευτερόλεπτο</displayName>
					</field>
					<field type="zone">
						<displayName>Ζώνη</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Άγνωστη</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Ανδόρα</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Ντουμπάι</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Καμπούλ</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Αντίγκουα</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Ανγκουίλλα</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Τίρανα</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Γερεβάν</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Κουρακάο</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Αγκόλα</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Ροθέρα</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Πάλμερ</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Νότιος Πόλος</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Σύοβα</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Μόουσον</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Ντέιβις</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Βόστοκ</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Κάσεϊ</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Ντυμόντ Ντερβίλ</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>ΜακΜέρντο</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Μπουένος Άιρες</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Πάγκο Πάγκο</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Βιέννη</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Αδελαΐδα</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Μελβούρνη</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Σύδνεϊ</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Αρούμπα</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Μπακού</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Μπαρμπέιντος</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Ντάκα</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Βρυξέλλες</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Μπουρκίνα Φάσο</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Σόφια</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Μπαχρέιν</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Μπουρούντι</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Μπενίν</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Βερμούδα</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Μπρούνεϊ</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Λα Παζ</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Ρίο Μπράνκο</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Πόρτο Βέλο</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Μπόα Βίστα</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Μανάος</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Κουϊάμπα</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Κάμπο Γκράντε</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Μπέλεμ</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Αραγκουάινα</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Σάο Πάολο</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Μπάχια</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Φορταλέζα</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Μασέιο</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Ρεσίφε</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Νορόνχα</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Νασάου</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Τρίμφου</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Γκαμπορόνε</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Μινσκ</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Μπελίζ</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Βανκούβερ</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>Τορόντο</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Μόντρεαλ</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Κόκος</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Κινσάσα</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Λουμπουμπάσι</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Κεντροαφρικανική Δημοκρατία</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Μπράζαβιλ</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Ζυρίχη</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Ακτή Ελεφαντοστού</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Ραροτόνγκα</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Ανατολική Νήσος</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Σαντιάγκο</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Καμερούν</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Σανγκάη</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Μπογκοτά</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Κόστα Ρίκα</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Αβάνα</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Νήσοι Χριστουγέννων</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Λευκωσία</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Βερολίνο</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Τζιμπουτί</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Κοπεγχάγη</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Δομινίκα</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Σάντο Ντομίνγκο</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Αλγέρι</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Γκαλαπάγκος</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Γκουαγιακύλ</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Ταλίν</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Αίγυπτος</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Δυτική Σαχάρα</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Ασμέρα</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Κανάρια</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Κέουτα</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Μαδρίτη</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Αιθιοπία</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Ελσίνκι</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Φίτζι</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Στάνλεϋ</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Τρουκ</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Πονάπε</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Κοσράη</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Φερόες</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Παρίσι</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Γκαμπόν</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Λονδίνο</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Γρενάδα</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Τμπιλίσι</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Καγιένε</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Άκκρα</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Γιβραλτάρ</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Τούλε</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Γκόνθαμπ</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Σκορεσμπίσουντ</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Ντανμαρκσάβν</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Γκάμπια</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Γουινέα</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Γουαδελούπη</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Ισημερινή Γουινέα</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Α‘θήνα</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Νότια Γεωργία</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Γουατεμάλα</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Γκουάμ</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Γουινέα Μπισσάου</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Γουιάνα</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Χονγκ Κονγκ</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Πορτ-Ο-Πρενς</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Βουδαπέστη</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Τζακάρτα</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Μακασάρ</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Χαγιαπούρα</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Δουβλίνο</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Ιερουσαλήμ</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Τσάγκος</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Βαγδάτη</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Τεχεράνη</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Ρέυκιαβικ</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Ρώμη</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Τζαμάικα</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Αμάν</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Τόκυο</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Κένυα</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Μπισχέκ</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Πιόμ Πενχ</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Εντερμπέρυ</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Κιριτιμάτι</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Ταράουα</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Κομόρο</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Σαιν Κιττς</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Πυόνγκ Γιάνγκ</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Σεούλ</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Κέυμαν</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Ακτάου</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Ακτόμπε</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Αλμάτυ</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Βιεντιάνε</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Βηρυτός</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Αγ. Λουκία</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Βαντούζ</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Κολόμπο</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Λιβερία</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Λεσόθο</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Βίλνιους</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Λουξεμβούργο</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Ρίγα</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Λιβύη</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Καζαμπλάνκα</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Μονακό</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Τσισινάου</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Ανταναναρίβο</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Μαχούρο</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Μπαμάκο</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Ρανγκούν</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Χοβντ</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ουλάν Μπατόρ</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Χόιμπαλσαν</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Μακάο</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Σάιπαν</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Μαρτινίκα</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Μαυριτανία</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Μονσεράτ</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Μάλτα</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Μαυρίκιος</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Μαλδίβες</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Μαλάουι</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Τιχουάνα</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Πόλη του Μεξικού</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Κανκούν</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Κουάλα Λουμπούρ</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Μαπούτο</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Γουιντχόεκ</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Νουμέα</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Νιαμέυ</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Νόρφολκ</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Λάγος</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Μανάγκουα</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Άμστερνταμ</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Όσλο</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Κατμαντού</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Ναούρου</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Νιούε</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Όκλαντ</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Μουσκάτ</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Παναμάς</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Λίμα</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Αϊτή</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Μαρκέσας</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Γκάμπιερ</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Πορτ Μόρεσμπυ</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Μανίλα</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Καράτσι</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Βαρσοβία</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Μικελόν</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Πιτκέιρν</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Πουέρτο Ρίκο</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Γάζα</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Αζόρες</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Μαδέρα</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Λισσαβώνα</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Παλάου</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Ασουνσιόν</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Κατάρ</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Ρεϋνιόν</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Βουκουρέστι</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Καλλίπολη</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Μόσχα</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Σαμάρα</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Αικατερινούπολη</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Ομσκ</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Νοβοσιμπίρσκ</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Ιρκούτσκ</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Βλαδιβοστόκ</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Κιγκάλι</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Ριάντ</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Γκουανταλκανάλ</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Μάχε</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Σουδάν</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Στοκχόλμη</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Σιγκαπούρη</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Αγ. Ελένη</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Σιέρα Λεόνε</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Ντακάρ</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Μογκαντίσου</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Παραμαρίνμπο</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Σάο Τόμε</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Σαλβαδόρ</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Δαμασκός</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Ζουαζιλάνδη</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Γραντ Τουρκ</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Ντζαμένα</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Κέργκουελεν</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Λόμε</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Μπανγκόκ</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Ντουσχάνμπη</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Φακαόφο</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Ντίλι</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ασγκάμπατ</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Τυνησία</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Τονγκατάπου</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Κωνσταντινούπολη</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Πορτ-Οφ-Σπέιν</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Φουναφούτι</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Ταϊπέι</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Νταρ Ες Σαλάμ</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Κίεβο</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Καμπάλα</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Μίντγουεϊ</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Τζόνστον</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Γουέικ</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Χονολουλού</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Άνκορατζ</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Λος Άντζελες</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Φοίνιξ</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Ντένβερ</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Σικάγο</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Ινδιανάπολη</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Ντητρόιτ</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Νέα Υόρκη</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Μοντεβίδεο</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Σαμαρκάνδη</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Τασκένδη</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Αγ. Βικέντιος</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Καράκας</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Τορτόλα</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Σαιντ Τόμας</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Σαϊγκόν</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Εφάτε</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Γουόλις</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Άπια</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Έιντεν</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Μαγιότε</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Γιοχάνεσμπουργκ</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Ζάμπια</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Ζιμπάμπουε</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Πεσέτα Ανδόρας</displayName>
			</currency>
			<currency type="AED">
				<displayName>Ντιράμ Ηνωμένων Αραβικών Εμιράτων</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Λεκ Αλβανίας</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Ντραμ Αρμενίας</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Γκίλντα Ολλανδικών Αντιλλών</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza Ανγκόλας</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Kwanza Ανγκόλας (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Νέα Kwanza Ανγκόλας (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza Reajustado Ανγκόλας (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral Αργεντινής</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Πέσο Αργεντινής (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Πέσο Αργεντινής</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Σελίνι Αυστρίας</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Δολάριο Αυστραλίας</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Γκίλντα Αρούμπα</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Μανάτ Αζερμπαϊτζάν</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Δηνάριο Βοσνίας-Ερζεγοβίνης</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Μάρκο Βοσνίας-Ερζεγοβίνης</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Δολάριο Μπαρμπάντος</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Τάκα Μπαγκλαντές</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Φράγκο Βελγίου (μετατρέψιμο)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Φράγκο Βελγίου</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Φράγκο Βελγίου (οικονομικό)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Μεταλλικό Λεβ Βουλγαρίας</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Νέο Λεβ Βουλγαρίας</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Δηνάριο Μπαχρέιν</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Φράγκο Μπουρούντι</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Δολάριο Βερμούδων</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Δολάριο Μπρουνέι</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Μπολιβιάνο Βολιβίας</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Πέσο Βολιβίας</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol Βολιβίας</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Νέο Cruzeiro Βραζιλίας (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado Βραζιλίας</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro Βραζιλίας (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Ρεάλ Βραζιλίας</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Νέο Cruzado Βραζιλίας</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro Βραζιλίας</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Δολάριο Μπαχάμες</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Νγκούλτρουμ Μπουτάν</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Kyat Βιρμανίας</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Πούλα Μποτσουάνας</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Νέο Ρούβλι Λευκορωσίας (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Ρούβλι Λευκορωσίας</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Δολάριο Μπελίζ</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Δολάριο Καναδά</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Φράγκο Κονγκό</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Φράγκο Ελβετίας</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento Χιλής</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Πέσο Χιλής</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Γιουάν Ρενμίμπι Κίνας</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Πέσο Κολομβίας</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Κολόν Κόστα Ρίκα</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Σκληρή Κορόνα Τσεχοσλοβακίας</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Πέσο Κούβας</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Εσκούδο Πράσινου Ακρωτηρίου</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Λίρα Κύπρου</displayName>
				<symbol>Κυπριακή Λίρα</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Κορόνα Τσέχικης Δημοκρατίας</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Ostmark Ανατολικής Γερμανίας</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Μάρκο Γερμανίας</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Φράγκο Τζιμπουτί</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Κορόνα Δανίας</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Πέσο Δομίνικου</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Δηνάριο Αλγερίας</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Σούκρε Εκουαδόρ</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidad de Valor Constante (UVC) Ισημερινού</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Κορόνα Εσθονίας</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Λίρα Αιγύπτου</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Νάκφα Ερυθραίας</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Πεσέτα Ισπανίας</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Μπιρ Αιθιοπίας</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Ευρώ</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Μάρκο Φινλανδίας</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Δολάριο Φίτζι</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Λίρα Νησιών Φώλκλαντ</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Φράγκο Γαλλίας</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Λίρα Στερλίνα Βρετανίας</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Κούπον Λάρι Γεωργίας</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Λάρι Γεωργίας</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Σέντι Γκάνας</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Λίρα Γιβραλτάρ</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Νταλάσι Γκάμπιας</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Φράγκο Γουινέας</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Syli Γουινέας</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele Guineana Ισημερινής Γουινέας</displayName>
			</currency>
			<currency type="GRD">
				<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				<displayName>Δραχμή Ελλάδας</displayName>
				<symbol>Δρχ</symbol>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
			<currency type="GTQ">
				<displayName>Κουετσάλ Γουατεμάλας</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Γκινέα Εσκούδο Πορτογαλίας</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Πέσο Guinea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Δολάριο Γουιάνας</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Δολάριο Χονγκ Κονγκ</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Δηνάριο Κροατίας</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Κούνα Κροατίας</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Γκουρντ Αϊτής</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Φιορίνι Ουγγαρίας</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Ρούπια Ινδονησίας</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Λίρα Ιρλανδίας</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Λίρα Ισραήλ</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Νέο Σέκελ Ισραήλ</displayName>
			</currency>
			<currency type="INR">
				<displayName>Ρούπια Ινδίας</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Δηνάριο Ιράκ</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Ριάλ Ιράν</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Κορόνα Ισλανδίας</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Λιρέτα Ιταλίας</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Δολάριο Τζαμάικας</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Δηνάριο Ιορδανίας</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Γιεν Ιαπωνίας</displayName>
			</currency>
			<currency type="KES">
				<displayName>Σελίνι Κένυας</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Ρίελ Καμπότζης</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Φράγκο Comoro</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Won Βόρειας Κορέας</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won Νότιας Κορέας</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Δηνάριο Κουβέιτ</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Δολάριο Νήσων Κάιμαν</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Τένγκε Καζακστάν</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Κιπ Λάος</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Λίρα Λιβάνου</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Ρούπια Σρι Λάνκα</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Δολάριο Λιβερίας</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Λίτα Λιθουανίας</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Talonas Λιθουανίας</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Φράγκο Λουξεμβούργου</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lats Λετονίας</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Ρούβλι Λετονίας</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Δηνάριο Λιβύης</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Ντιράμ Μαρόκου</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Φράγκο Μαρόκου</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Λέι Μολδαβίας</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ariary Μαδαγασκάρης</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Φράγκο Μαδαγασκάρης</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Δηνάριο Π.Γ.Δ.Μ.</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Φράγκο Μαλί</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Κυάτ Μιανμάρ</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Τουγκρίκ Μογγολίας</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Πατάκα Μακάο</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ουγκουίγκα Μαυριτανίας</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Λιρέτα Μάλτας</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Λίρα Μάλτας</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Ρούπια Μαυρικίου</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Ρουφίγια Νήσων Μαλδίβων</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Κουάτσα Μαλάουι</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Πέσο Μεξικού</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Ασημένιο Πέσο Μεξικού (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidad de Inversion (UDI) Μεξικού</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ρινγκίτ Μαλαισίας</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Εσκούδο Μοζαμβίκης</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Μετικάλ Μοζαμβίκης</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Δολάριο Ναμίμπια</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Νάιρα Νιγηρίας</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Κόρδοβα Νικαράγουας</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Χρυσή Κόρδοβα Νικαράγουας</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Γκίλντα Ολλανδίας</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Κορόνα Νορβηγίας</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Ρούπια Νεπάλ</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Δολάριο Νέας Ζηλανδίας</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Ριάλ Ομάν</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Μπαλμπόα Παναμά</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti Περού</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Νέο Σολ Περού</displayName>
			</currency>
			<currency type="PES">
				<displayName>Σολ Περού</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina Παπούα Νέα Γουινέα</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Πέσο Φιλιππίνων</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Ρούπια Πακιστάν</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Ζλότυ Πολωνίας</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Ζλότυ Πολωνίας (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Εσκούδο Πορτογαλίας</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Γκουαρανί Παραγουάης</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Rial Κατάρ</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Λέι Ρουμανίας</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Λεβ Ρουμανίας</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Δηνάριο Σερβίας</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ρούβλι Ρωσίας</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Ρούβλι Ρωσίας (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Φράγκο Ρουάντας</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Ριάλ Σαουδικής Αραβίας</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Δολάριο Νήσων Σολομώντος</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Ρούπια Σεϋχέλες</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Δηνάριο Σουδάν</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Λίρα Σουδάν</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Κορόνα Σουηδίας</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Δολάριο Σιγκαπούρης</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Λίρα Αγίας Ελένης</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Τόλαρ Σλοβενίας</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Κορόνα Σλοβενίας</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Λεόνε της Σιέρα Λεόνε</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Σελίνι Σομαλίας</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Γκίλντα Σουρινάμ</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Σοβιετικό Ρούβλι</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Κολόν Ελ Σαλβαδόρ</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Λίρα Συρίας</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Λιλανγκένι Σουαζιλάνδη</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Μπατ Ταϊλάνδης</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Ρούβλι Τατζικιστάν</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Σομόν Τατζικιστάν</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Μανάτ Τουρκμενιστάν</displayName>
			</currency>
			<currency type="TND">
				<displayName>Δηνάριο Τυνησίας</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Εσκούδο Τιμόρ</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Λίρα Τουρκίας</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Νέα Τουρκική Λίρα</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Δολάριο Τρινιδάδ και Τομπάγκο</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Νέο Δολάριο Ταϊβάν</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Σελίνι Τανζανίας</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Χρίφνα Ουκρανίας</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanetz Ουκρανίας</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Σελίνι Ουγκάντας (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Σελίνι Ουγκάντας</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Δολάριο ΗΠΑ</displayName>
			</currency>
			<currency type="USN">
				<displayName>Δολάριο ΗΠΑ (Επόμενη Ημέρα)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Δολάριο ΗΠΑ (Ίδια Ημέρα)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Πέσο Ουρουγουάης (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Πέσο Uruguayo Ουρουγουάης</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Sum Ουζμπεκιστάν</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Μπολιβάρ Βενεζουέλας</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Dong Βιετνάμ</displayName>
			</currency>
			<currency type="WST">
				<displayName>Tala Δυτικής Σαμόα</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Φράγκο BEAC CFA</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Χρυσός</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Ευρωπαϊκή Σύνθετη Μονάδα</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Ευρωπαϊκή Νομισματική Μονάδα</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Ευρωπαϊκή Μονάδα Λογαριασμού (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Ευρωπαϊκή Μονάδα Λογαριασμού (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Δολάριο Ανατολικής Καραϊβικής</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Ειδικά Δικαιώματα Ανάληψης</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Ευρωπαϊκή Συναλλαγματική Μονάδα</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Χρυσό Φράγκο Γαλλίας</displayName>
			</currency>
			<currency type="XFU">
				<displayName>UIC-Φράγκο Γαλλίας</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Φράγκο BCEAO CFA</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Φράγκο CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Άγνωστο ή Ακατάλληλο Νόμισμα</displayName>
				<displayName count="other">Άγνωστο ή Ακατάλληλο Νόμισμα</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>Δηνάριο Υεμένης</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rial Υεμένης</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Μεταλλικό Δηνάριο Γιουγκοσλαβίας</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Νέο Δηνάριο Γιουγκοσλαβίας</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Μετατρέψιμο Δηνάριο Γιουγκοσλαβίας</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Ραντ Νότιας Αφρικής (οικονομικό)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Ραντ Νότιας Αφρικής</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Kwacha Ζάμπιας</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Νέο Zaire Ζαΐρ</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire Ζαΐρ</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Δολάριο Ζιμπάμπουε</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} ημέρα</unitPattern>
			<unitPattern count="other">{0} ημέρες</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} ώρα</unitPattern>
			<unitPattern count="other">{0} ώρες</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} λεπτό</unitPattern>
			<unitPattern count="other">{0} λεπτά</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} μήνας</unitPattern>
			<unitPattern count="other">{0} μήνες</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} δευτερόλεπτο</unitPattern>
			<unitPattern count="other">{0} δευτερόλεπτα</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} εβδομάδα</unitPattern>
			<unitPattern count="other">{0} εβδομάδες</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} έτος</unitPattern>
			<unitPattern count="other">{0} έτη</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ναι:ν</yesstr>
			<nostr>οχι:όχι:ο:ό</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��]5##Locale/Data/am_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="am"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[y����Locale/Data/ar_IQ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="IQ"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[��%'��Locale/Data/fr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.124 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="fr"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhaze</language>
			<language type="ace">aceh</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghéen</language>
			<language type="ae">avestique</language>
			<language type="af">afrikaans</language>
			<language type="afa">langue afro-asiatique</language>
			<language type="afh">afrihili</language>
			<language type="ain">aïnou</language>
			<language type="ak">akan</language>
			<language type="akk">akkadien</language>
			<language type="ale">aléoute</language>
			<language type="alg">langue algonquine</language>
			<language type="alt">altaï du Sud</language>
			<language type="am">amharique</language>
			<language type="an">aragonais</language>
			<language type="ang">ancien anglais</language>
			<language type="anp">angika</language>
			<language type="apa">langue apache</language>
			<language type="ar">arabe</language>
			<language type="arc">araméen</language>
			<language type="arn">araukan</language>
			<language type="arp">arapaho</language>
			<language type="art">langue artificielle</language>
			<language type="arw">arawak</language>
			<language type="as">assamais</language>
			<language type="ast">asturien</language>
			<language type="ath">langue athapascane</language>
			<language type="aus">langue australienne</language>
			<language type="av">avar</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">azéri</language>
			<language type="ba">bachkir</language>
			<language type="bad">banda</language>
			<language type="bai">langue bamilékée</language>
			<language type="bal">baloutchi</language>
			<language type="ban">balinais</language>
			<language type="bas">bassa</language>
			<language type="bat">langue balte</language>
			<language type="be">biélorusse</language>
			<language type="bej">bedja</language>
			<language type="bem">bemba</language>
			<language type="ber">berbère</language>
			<language type="bg">bulgare</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bichelamar ; bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantou</language>
			<language type="bo">tibétain</language>
			<language type="br">breton</language>
			<language type="bra">braj</language>
			<language type="bs">bosniaque</language>
			<language type="btk">batak</language>
			<language type="bua">bouriate</language>
			<language type="bug">bugi</language>
			<language type="byn">blin</language>
			<language type="ca">catalan</language>
			<language type="cad">caddo</language>
			<language type="cai">langue amérindienne centrale</language>
			<language type="car">caribe</language>
			<language type="cau">langue caucasienne</language>
			<language type="cch">atsam</language>
			<language type="ce">tchétchène</language>
			<language type="ceb">cebuano</language>
			<language type="cel">langue celtique</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">tchaghataï</language>
			<language type="chk">chuuk</language>
			<language type="chm">mari</language>
			<language type="chn">jargon chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">langue chame</language>
			<language type="co">corse</language>
			<language type="cop">copte</language>
			<language type="cpe">créole ou pidgin anglais</language>
			<language type="cpf">créole ou pidgin français</language>
			<language type="cpp">créole ou pidgin portugais</language>
			<language type="cr">cree</language>
			<language type="crh">turc de Crimée</language>
			<language type="crp">créole ou pidgin</language>
			<language type="cs">tchèque</language>
			<language type="csb">kachoube</language>
			<language type="cu">slavon d’église</language>
			<language type="cus">langue couchitique</language>
			<language type="cv">tchouvache</language>
			<language type="cy">gallois</language>
			<language type="da">danois</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">allemand</language>
			<language type="de_AT">allemand autrichien</language>
			<language type="de_CH">allemand suisse</language>
			<language type="del">delaware</language>
			<language type="den">slavey</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">langue dravidienne</language>
			<language type="dsb">bas-sorabe</language>
			<language type="dua">douala</language>
			<language type="dum">moyen néerlandais</language>
			<language type="dv">maldivien</language>
			<language type="dyu">dioula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">éwé</language>
			<language type="efi">efik</language>
			<language type="egy">égyptien ancien</language>
			<language type="eka">ekajuk</language>
			<language type="el">grec</language>
			<language type="elx">élamite</language>
			<language type="en">anglais</language>
			<language type="en_AU">anglais australien</language>
			<language type="en_CA">anglais canadien</language>
			<language type="en_GB">anglais britannique</language>
			<language type="en_US">anglais américain</language>
			<language type="enm">moyen anglais</language>
			<language type="eo">espéranto</language>
			<language type="es">espagnol</language>
			<language type="es_419">espagnol latino-américain</language>
			<language type="es_ES">espagnol ibérique</language>
			<language type="et">estonien</language>
			<language type="eu">basque</language>
			<language type="ewo">éwondo</language>
			<language type="fa">persan</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">peul</language>
			<language type="fi">finnois</language>
			<language type="fil">filipino</language>
			<language type="fiu">langue finno-ougrienne</language>
			<language type="fj">fidjien</language>
			<language type="fo">féroïen</language>
			<language type="fon">fon</language>
			<language type="fr">français</language>
			<language type="fr_CA">français canadien</language>
			<language type="fr_CH">français suisse</language>
			<language type="frm">moyen français</language>
			<language type="fro">ancien français</language>
			<language type="frr">frison du Nord</language>
			<language type="frs">frison oriental</language>
			<language type="fur">frioulan</language>
			<language type="fy">frison</language>
			<language type="ga">irlandais</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">gaélique écossais</language>
			<language type="gem">langue germanique</language>
			<language type="gez">guèze</language>
			<language type="gil">gilbertais</language>
			<language type="gl">galicien</language>
			<language type="gmh">moyen haut-allemand</language>
			<language type="gn">guarani</language>
			<language type="goh">ancien haut allemand</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotique</language>
			<language type="grb">grebo</language>
			<language type="grc">grec ancien</language>
			<language type="gsw">alémanique</language>
			<language type="gu">goudjarâtî</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichʼin</language>
			<language type="ha">haoussa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaïen</language>
			<language type="he">hébreu</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hittite</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">croate</language>
			<language type="hsb">haut-sorabe</language>
			<language type="ht">haïtien</language>
			<language type="hu">hongrois</language>
			<language type="hup">hupa</language>
			<language type="hy">arménien</language>
			<language type="hz">héréro</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonésien</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">yi de Sichuan</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiaq</language>
			<language type="ilo">ilokano</language>
			<language type="inc">langue indo-aryenne</language>
			<language type="ine">langue indo-européenne</language>
			<language type="inh">ingouche</language>
			<language type="io">ido</language>
			<language type="ira">langue iranienne</language>
			<language type="iro">langue iroquoienne</language>
			<language type="is">islandais</language>
			<language type="it">italien</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japonais</language>
			<language type="jbo">lojban</language>
			<language type="jpr">judéo-persan</language>
			<language type="jrb">judéo-arabe</language>
			<language type="jv">javanais</language>
			<language type="ka">géorgien</language>
			<language type="kaa">karakalpak</language>
			<language type="kab">kabyle</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardin</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">langue khoïsan</language>
			<language type="kho">khotanais</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kazakh</language>
			<language type="kl">groenlandais</language>
			<language type="km">khmer</language>
			<language type="kmb">kiMboundou</language>
			<language type="kn">kannada</language>
			<language type="ko">coréen</language>
			<language type="kok">konkani</language>
			<language type="kos">kusaien</language>
			<language type="kpe">kpellé</language>
			<language type="kr">kanouri</language>
			<language type="krc">karatchaï balkar</language>
			<language type="krl">carélien</language>
			<language type="kro">krou</language>
			<language type="kru">kurukh</language>
			<language type="ks">kâshmîrî</language>
			<language type="ku">kurde</language>
			<language type="kum">koumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">cornique</language>
			<language type="ky">kirghize</language>
			<language type="la">latin</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxembourgeois</language>
			<language type="lez">lezghien</language>
			<language type="lg">ganda</language>
			<language type="li">limbourgeois</language>
			<language type="ln">lingala</language>
			<language type="lo">lao</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">lituanien</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">letton</language>
			<language type="mad">madurais</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makassar</language>
			<language type="man">mandingue</language>
			<language type="map">malayo-polynésien</language>
			<language type="mas">masai</language>
			<language type="mdf">moksa</language>
			<language type="mdr">mandar</language>
			<language type="men">mendé</language>
			<language type="mg">malgache</language>
			<language type="mga">moyen irlandais</language>
			<language type="mh">marshall</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">langue diverse</language>
			<language type="mk">macédonien</language>
			<language type="mkh">langue mon-khmère</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongol</language>
			<language type="mnc">mandchou</language>
			<language type="mni">manipuri</language>
			<language type="mno">langue manobo</language>
			<language type="mo">moldave</language>
			<language type="moh">mohawk</language>
			<language type="mos">moré</language>
			<language type="mr">marathe</language>
			<language type="ms">malais</language>
			<language type="mt">maltais</language>
			<language type="mul">multilingue</language>
			<language type="mun">langue mounda</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandais</language>
			<language type="mwr">marwarî</language>
			<language type="my">birman</language>
			<language type="myn">langue maya</language>
			<language type="myv">erzya</language>
			<language type="na">nauruan</language>
			<language type="nah">nahuatl</language>
			<language type="nai">langue amérindienne du Nord</language>
			<language type="nap">napolitain</language>
			<language type="nb">norvégien bokmål</language>
			<language type="nd">ndébélé du Nord</language>
			<language type="nds">bas-allemand</language>
			<language type="ne">népalais</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">langue nigéro-congolaise</language>
			<language type="niu">niué</language>
			<language type="nl">néerlandais</language>
			<language type="nl_BE">néerlandais belge</language>
			<language type="nn">norvégien nynorsk</language>
			<language type="no">norvégien</language>
			<language type="nog">nogaï</language>
			<language type="non">vieux norrois</language>
			<language type="nqo">n’ko</language>
			<language type="nr">ndébélé du Sud</language>
			<language type="nso">sotho du Nord</language>
			<language type="nub">langue nubienne</language>
			<language type="nv">navaho</language>
			<language type="nwc">newarî classique</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankolé</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzema</language>
			<language type="oc">occitan</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossète</language>
			<language type="osa">osage</language>
			<language type="ota">turc ottoman</language>
			<language type="oto">langue otomangue</language>
			<language type="pa">pendjabi</language>
			<language type="paa">langue papoue</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampangan</language>
			<language type="pap">papiamento</language>
			<language type="pau">palau</language>
			<language type="peo">persan ancien</language>
			<language type="phi">langue philippine</language>
			<language type="phn">phénicien</language>
			<language type="pi">pali</language>
			<language type="pl">polonais</language>
			<language type="pon">pohnpei</language>
			<language type="pra">langues prâkrit</language>
			<language type="pro">provençal ancien</language>
			<language type="ps">pachto</language>
			<language type="pt">portugais</language>
			<language type="pt_BR">portugais brésilien</language>
			<language type="pt_PT">portugais ibérique</language>
			<language type="qu">langue quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongien</language>
			<language type="rm">rhéto-roman</language>
			<language type="rn">roundi</language>
			<language type="ro">roumain</language>
			<language type="roa">langue romane</language>
			<language type="rom">tzigane</language>
			<language type="root">racine</language>
			<language type="ru">russe</language>
			<language type="rup">valaque</language>
			<language type="rw">rwanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">iakoute</language>
			<language type="sai">langue amérindienne du Sud</language>
			<language type="sal">langue salishenne</language>
			<language type="sam">araméen samaritain</language>
			<language type="sas">sasak</language>
			<language type="sat">santal</language>
			<language type="sc">sarde</language>
			<language type="scn">sicilien</language>
			<language type="sco">écossais</language>
			<language type="sd">sindhî</language>
			<language type="se">sami du Nord</language>
			<language type="sel">selkoupe</language>
			<language type="sem">langue sémitique</language>
			<language type="sg">sangho</language>
			<language type="sga">ancien irlandais</language>
			<language type="sgn">langue des signes</language>
			<language type="sh">serbo-croate</language>
			<language type="shn">shan</language>
			<language type="si">singhalais</language>
			<language type="sid">sidamo</language>
			<language type="sio">langue sioux</language>
			<language type="sit">langue sino-tibétaine</language>
			<language type="sk">slovaque</language>
			<language type="sl">slovène</language>
			<language type="sla">langue slave</language>
			<language type="sm">samoan</language>
			<language type="sma">sami du Sud</language>
			<language type="smi">langue samie</language>
			<language type="smj">sami de Lule</language>
			<language type="smn">sami d’Inari</language>
			<language type="sms">sami skolt</language>
			<language type="sn">shona</language>
			<language type="snk">soninké</language>
			<language type="so">somali</language>
			<language type="sog">sogdien</language>
			<language type="son">songhai</language>
			<language type="sq">albanais</language>
			<language type="sr">serbe</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">sérère</language>
			<language type="ss">swati</language>
			<language type="ssa">langue nilo-saharienne</language>
			<language type="st">sesotho</language>
			<language type="su">soundanais</language>
			<language type="suk">sukuma</language>
			<language type="sus">soussou</language>
			<language type="sux">sumérien</language>
			<language type="sv">suédois</language>
			<language type="sw">swahili</language>
			<language type="syc">syriaque classique</language>
			<language type="syr">syriaque</language>
			<language type="ta">tamoul</language>
			<language type="tai">langue taï</language>
			<language type="te">télougou</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadjik</language>
			<language type="th">thaï</language>
			<language type="ti">tigrigna</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">turkmène</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamacheq</language>
			<language type="tn">tswana</language>
			<language type="to">tongan</language>
			<language type="tog">tonga nyasa</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turc</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatar</language>
			<language type="tum">tumbuka</language>
			<language type="tup">langue tupi</language>
			<language type="tut">langue altaïque</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahitien</language>
			<language type="tyv">touva</language>
			<language type="udm">oudmourte</language>
			<language type="ug">ouïgour</language>
			<language type="uga">ougaritique</language>
			<language type="uk">ukrainien</language>
			<language type="umb">umbundu</language>
			<language type="und">indéterminé</language>
			<language type="ur">ourdou</language>
			<language type="uz">ouzbek</language>
			<language type="vai">vaï</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamien</language>
			<language type="vo">volapuk</language>
			<language type="vot">vote</language>
			<language type="wa">wallon</language>
			<language type="wak">langues wakashennes</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">langue sorabe</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmouk</language>
			<language type="xh">xhosa</language>
			<language type="yao">yao</language>
			<language type="yap">yapois</language>
			<language type="yi">yiddish</language>
			<language type="yo">yoruba</language>
			<language type="ypk">langues yupik</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotèque</language>
			<language type="zbl">symboles Bliss</language>
			<language type="zen">zenaga</language>
			<language type="zh">chinois</language>
			<language type="zh_Hans">chinois simplifié</language>
			<language type="zh_Hant">chinois traditionnel</language>
			<language type="znd">zandé</language>
			<language type="zu">zoulou</language>
			<language type="zun">zuni</language>
			<language type="zxx">sans contenu linguistique</language>
			<language type="zza">zazaki</language>
		</languages>
		<scripts>
			<script type="Arab">arabe</script>
			<script type="Armi">araméen impérial</script>
			<script type="Armn">arménien</script>
			<script type="Avst">avestique</script>
			<script type="Bali">balinais</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengâglî</script>
			<script type="Blis">symboles Bliss</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brâhmî</script>
			<script type="Brai">braille</script>
			<script type="Bugi">bouguis</script>
			<script type="Buhd">bouhide</script>
			<script type="Cakm">chakma</script>
			<script type="Cans">syllabaire autochtone canadien unifié</script>
			<script type="Cari">carien</script>
			<script type="Cham">cham</script>
			<script type="Cher">tchérokî</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">copte</script>
			<script type="Cprt">syllabaire chypriote</script>
			<script type="Cyrl">cyrillique</script>
			<script type="Cyrs">cyrillique (variante slavonne)</script>
			<script type="Deva">dévanâgarî</script>
			<script type="Dsrt">déséret</script>
			<script type="Egyd">démotique égyptien</script>
			<script type="Egyh">hiératique égyptien</script>
			<script type="Egyp">hiéroglyphes égyptiens</script>
			<script type="Ethi">éthiopique</script>
			<script type="Geok">géorgien khoutsouri</script>
			<script type="Geor">géorgien</script>
			<script type="Glag">glagolitique</script>
			<script type="Goth">gotique</script>
			<script type="Grek">grec</script>
			<script type="Gujr">goudjarâtî</script>
			<script type="Guru">gourmoukhî</script>
			<script type="Hang">hangûl</script>
			<script type="Hani">idéogrammes han</script>
			<script type="Hano">hanounóo</script>
			<script type="Hans">idéogrammes han simplifiés</script>
			<script type="Hant">idéogrammes han traditionnels</script>
			<script type="Hebr">hébreu</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana ou hiragana</script>
			<script type="Hung">ancien hongrois</script>
			<script type="Inds">indus</script>
			<script type="Ital">ancien italique</script>
			<script type="Java">javanais</script>
			<script type="Jpan">japonais</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharochthî</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannara</script>
			<script type="Kore">coréen</script>
			<script type="Kthi">kaithî</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">lao</script>
			<script type="Latf">latin (variante brisée)</script>
			<script type="Latg">latin (variante gaélique)</script>
			<script type="Latn">latin</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbou</script>
			<script type="Lina">linéaire A</script>
			<script type="Linb">linéaire B</script>
			<script type="Lyci">lycien</script>
			<script type="Lydi">lydien</script>
			<script type="Mand">mandéen</script>
			<script type="Mani">manichéen</script>
			<script type="Maya">hiéroglyphes mayas</script>
			<script type="Mero">méroïtique</script>
			<script type="Mlym">malayâlam</script>
			<script type="Mong">mongol</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei mayek</script>
			<script type="Mymr">birman</script>
			<script type="Nkoo">n’ko</script>
			<script type="Ogam">ogam</script>
			<script type="Olck">ol tchiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriyâ</script>
			<script type="Osma">osmanais</script>
			<script type="Perm">ancien permien</script>
			<script type="Phag">phags pa</script>
			<script type="Phli">pehlevi des inscriptions</script>
			<script type="Phlp">pehlevi des psautiers</script>
			<script type="Phlv">pehlevi des livres</script>
			<script type="Phnx">phénicien</script>
			<script type="Plrd">phonétique de Pollard</script>
			<script type="Prti">parthe des inscriptions</script>
			<script type="Qaai">hérité</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">runique</script>
			<script type="Samr">samaritain</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">écriture des signes</script>
			<script type="Shaw">shavien</script>
			<script type="Sinh">singhalais</script>
			<script type="Sund">sundanais</script>
			<script type="Sylo">sylotî nâgrî</script>
			<script type="Syrc">syriaque</script>
			<script type="Syre">syriaque estranghélo</script>
			<script type="Syrj">syriaque occidental</script>
			<script type="Syrn">syriaque oriental</script>
			<script type="Tagb">tagbanoua</script>
			<script type="Tale">taï-le</script>
			<script type="Talu">nouveau taï-lue</script>
			<script type="Taml">tamoul</script>
			<script type="Tavt">taï viêt</script>
			<script type="Telu">télougou</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagal</script>
			<script type="Thaa">thâna</script>
			<script type="Thai">thaï</script>
			<script type="Tibt">tibétain</script>
			<script type="Ugar">ougaritique</script>
			<script type="Vaii">vaï</script>
			<script type="Visp">parole visible</script>
			<script type="Xpeo">cunéiforme persépolitain</script>
			<script type="Xsux">cunéiforme suméro-akkadien</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">notation mathématique</script>
			<script type="Zsym">symboles</script>
			<script type="Zxxx">non écrit</script>
			<script type="Zyyy">commun</script>
			<script type="Zzzz">écriture inconnue ou non valide</script>
		</scripts>
		<territories>
			<territory type="001">Monde</territory>
			<territory type="002">Afrique</territory>
			<territory type="003">Amérique du Nord</territory>
			<territory type="005">Amérique du Sud</territory>
			<territory type="009">Océanie</territory>
			<territory type="011">Afrique occidentale</territory>
			<territory type="013">Amérique centrale</territory>
			<territory type="014">Afrique orientale</territory>
			<territory type="015">Afrique septentrionale</territory>
			<territory type="017">Afrique centrale</territory>
			<territory type="018">Afrique australe</territory>
			<territory type="019">Amériques</territory>
			<territory type="021">Amérique septentrionale</territory>
			<territory type="029">Caraïbes</territory>
			<territory type="030">Asie orientale</territory>
			<territory type="034">Asie du Sud</territory>
			<territory type="035">Asie du Sud-Est</territory>
			<territory type="039">Europe méridionale</territory>
			<territory type="053">Australie et Nouvelle-Zélande</territory>
			<territory type="054">Mélanésie</territory>
			<territory type="057">région micronésienne</territory>
			<territory type="061">Polynésie</territory>
			<territory type="062">Asie centrale et du Sud</territory>
			<territory type="142">Asie</territory>
			<territory type="143">Asie centrale</territory>
			<territory type="145">Asie occidentale</territory>
			<territory type="150">Europe</territory>
			<territory type="151">Europe orientale</territory>
			<territory type="154">Europe septentrionale</territory>
			<territory type="155">Europe occidentale</territory>
			<territory type="172">Communauté des États indépendants</territory>
			<territory type="419">Amérique latine et Caraïbes</territory>
			<territory type="830">Îles Anglo-normandes</territory>
			<territory type="AD">Andorre</territory>
			<territory type="AE">Émirats arabes unis</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua-et-Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanie</territory>
			<territory type="AM">Arménie</territory>
			<territory type="AN">Antilles néerlandaises</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctique</territory>
			<territory type="AR">Argentine</territory>
			<territory type="AS">Samoa américaines</territory>
			<territory type="AT">Autriche</territory>
			<territory type="AU">Australie</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Îles Åland</territory>
			<territory type="AZ">Azerbaïdjan</territory>
			<territory type="BA">Bosnie-Herzégovine</territory>
			<territory type="BB">Barbade</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgique</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarie</territory>
			<territory type="BH">Bahreïn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Bénin</territory>
			<territory type="BL">Saint-Barthélémy</territory>
			<territory type="BM">Bermudes</territory>
			<territory type="BN">Brunéi Darussalam</territory>
			<territory type="BO">Bolivie</territory>
			<territory type="BR">Brésil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhoutan</territory>
			<territory type="BV">Île  Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bélarus</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Îles des Cocos (Keeling)</territory>
			<territory type="CD">République démocratique du Congo</territory>
			<territory type="CF">République centrafricaine</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Suisse</territory>
			<territory type="CI">Côte d’Ivoire</territory>
			<territory type="CK">Îles Cook</territory>
			<territory type="CL">Chili</territory>
			<territory type="CM">Cameroun</territory>
			<territory type="CN">Chine</territory>
			<territory type="CO">Colombie</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbie-et-Monténégro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cap-Vert</territory>
			<territory type="CX">Île Christmas</territory>
			<territory type="CY">Chypre</territory>
			<territory type="CZ">République tchèque</territory>
			<territory type="DE">Allemagne</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danemark</territory>
			<territory type="DM">Dominique</territory>
			<territory type="DO">République dominicaine</territory>
			<territory type="DZ">Algérie</territory>
			<territory type="EC">Équateur</territory>
			<territory type="EE">Estonie</territory>
			<territory type="EG">Égypte</territory>
			<territory type="EH">Sahara occidental</territory>
			<territory type="ER">Érythrée</territory>
			<territory type="ES">Espagne</territory>
			<territory type="ET">Éthiopie</territory>
			<territory type="FI">Finlande</territory>
			<territory type="FJ">Fidji</territory>
			<territory type="FK">Îles Malouines</territory>
			<territory type="FM">États fédérés de Micronésie</territory>
			<territory type="FO">Îles Féroé</territory>
			<territory type="FR">France</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Royaume-Uni</territory>
			<territory type="GD">Grenade</territory>
			<territory type="GE">Géorgie</territory>
			<territory type="GF">Guyane française</territory>
			<territory type="GG">Guernesey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groenland</territory>
			<territory type="GM">Gambie</territory>
			<territory type="GN">Guinée</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Guinée équatoriale</territory>
			<territory type="GR">Grèce</territory>
			<territory type="GS">Géorgie du Sud et les îles Sandwich du Sud</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinée-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Îles Heard et MacDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croatie</territory>
			<territory type="HT">Haïti</territory>
			<territory type="HU">Hongrie</territory>
			<territory type="ID">Indonésie</territory>
			<territory type="IE">Irlande</territory>
			<territory type="IL">Israël</territory>
			<territory type="IM">Île de Man</territory>
			<territory type="IN">Inde</territory>
			<territory type="IO">Territoire britannique de l'océan Indien</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islande</territory>
			<territory type="IT">Italie</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaïque</territory>
			<territory type="JO">Jordanie</territory>
			<territory type="JP">Japon</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizistan</territory>
			<territory type="KH">Cambodge</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comores</territory>
			<territory type="KN">Saint-Kitts-et-Nevis</territory>
			<territory type="KP">Corée du Nord</territory>
			<territory type="KR">Corée du Sud</territory>
			<territory type="KW">Koweït</territory>
			<territory type="KY">Îles Caïmans</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liban</territory>
			<territory type="LC">Sainte-Lucie</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Libéria</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituanie</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Lettonie</territory>
			<territory type="LY">Libye</territory>
			<territory type="MA">Maroc</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldavie</territory>
			<territory type="ME">Monténégro</territory>
			<territory type="MF">Saint-Martin</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Îles Marshall</territory>
			<territory type="MK">Macédoine</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolie</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Îles Mariannes du Nord</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritanie</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malte</territory>
			<territory type="MU">Maurice</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexique</territory>
			<territory type="MY">Malaisie</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibie</territory>
			<territory type="NC">Nouvelle-Calédonie</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Île Norfolk</territory>
			<territory type="NG">Nigéria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Pays-Bas</territory>
			<territory type="NO">Norvège</territory>
			<territory type="NP">Népal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nouvelle-Zélande</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Pérou</territory>
			<territory type="PF">Polynésie française</territory>
			<territory type="PG">Papouasie-Nouvelle-Guinée</territory>
			<territory type="PH">Philippines</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Pologne</territory>
			<territory type="PM">Saint-Pierre-et-Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Rico</territory>
			<territory type="PS">Territoire palestinien</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palaos</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">régions éloignées de l’Océanie</territory>
			<territory type="QU">Union européenne</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Roumanie</territory>
			<territory type="RS">Serbie</territory>
			<territory type="RU">Russie</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Arabie saoudite</territory>
			<territory type="SB">Îles Salomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Soudan</territory>
			<territory type="SE">Suède</territory>
			<territory type="SG">Singapour</territory>
			<territory type="SH">Sainte-Hélène</territory>
			<territory type="SI">Slovénie</territory>
			<territory type="SJ">Svalbard et Île Jan Mayen</territory>
			<territory type="SK">Slovaquie</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">Saint-Marin</territory>
			<territory type="SN">Sénégal</territory>
			<territory type="SO">Somalie</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tomé-et-Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syrie</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Îles Turks et Caïques</territory>
			<territory type="TD">Tchad</territory>
			<territory type="TF">Terres australes françaises</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thaïlande</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor oriental</territory>
			<territory type="TM">Turkménistan</territory>
			<territory type="TN">Tunisie</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turquie</territory>
			<territory type="TT">Trinité-et-Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taïwan</territory>
			<territory type="TZ">Tanzanie</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Ouganda</territory>
			<territory type="UM">Îles Mineures Éloignées des États-Unis</territory>
			<territory type="US">États-Unis</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Ouzbékistan</territory>
			<territory type="VA">État de la Cité du Vatican</territory>
			<territory type="VC">Saint-Vincent-et-les Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Îles Vierges britanniques</territory>
			<territory type="VI">Îles Vierges des États-Unis</territory>
			<territory type="VN">Viêt Nam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis-et-Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yémen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Afrique du Sud</territory>
			<territory type="ZM">Zambie</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">région indéterminée</territory>
		</territories>
		<variants>
			<variant type="1901">orthographe allemande traditionnelle</variant>
			<variant type="1994">orthographe normalisée de Resia</variant>
			<variant type="1996">orthographe allemande de 1996</variant>
			<variant type="1606NICT">françoys de 1606</variant>
			<variant type="1694ACAD">françois académique de 1694</variant>
			<variant type="AREVELA">arménien oriental</variant>
			<variant type="AREVMDA">arménien occidental</variant>
			<variant type="BAKU1926">alphabet latin altaïque unifié</variant>
			<variant type="BISKE">dialecte de San Giorgio / Bila</variant>
			<variant type="BOONT">dialecte boontling</variant>
			<variant type="FONIPA">alphabet phonétique international</variant>
			<variant type="FONUPA">alphabet phonétique ouralique</variant>
			<variant type="LIPAW">dialecte lipovaz de Resia</variant>
			<variant type="MONOTON">monotonique</variant>
			<variant type="NEDIS">dialecte de Natisone</variant>
			<variant type="NJIVA">dialecte de Gniva / Njiva</variant>
			<variant type="OSOJS">dialecte d’Oseacco / Osojane</variant>
			<variant type="POLYTON">polytonique</variant>
			<variant type="POSIX">informatique</variant>
			<variant type="REVISED">orthographe révisée</variant>
			<variant type="ROZAJ">dialecte de Resia</variant>
			<variant type="SAAHO">dialecte saho</variant>
			<variant type="SCOTLAND">anglais standard écossais</variant>
			<variant type="SCOUSE">dialecte scouse</variant>
			<variant type="SOLBA">dialecte de Stolvizza / Solbica</variant>
			<variant type="TARASK">orthographe taraskievica</variant>
			<variant type="VALENCIA">valencien</variant>
		</variants>
		<keys>
			<key type="calendar">Calendrier</key>
			<key type="collation">Ordonnancement</key>
			<key type="currency">Devise</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Ordre chinois traditionnel - Big5</type>
			<type type="buddhist" key="calendar">Calendrier bouddhiste</type>
			<type type="chinese" key="calendar">Calendrier chinois</type>
			<type type="direct" key="collation">Ordre direct</type>
			<type type="gb2312han" key="collation">Ordre chinois simplifié - GB2312</type>
			<type type="gregorian" key="calendar">Calendrier grégorien</type>
			<type type="hebrew" key="calendar">Calendrier hébraïque</type>
			<type type="indian" key="calendar">Calendrier indien</type>
			<type type="islamic" key="calendar">Calendrier musulman</type>
			<type type="islamic-civil" key="calendar">Calendrier civil musulman</type>
			<type type="japanese" key="calendar">Calendrier japonais</type>
			<type type="phonebook" key="collation">Ordre de l’annuaire</type>
			<type type="pinyin" key="collation">Ordre pinyin</type>
			<type type="roc" key="calendar">Calendrier républicain chinois</type>
			<type type="stroke" key="collation">Ordre des traits</type>
			<type type="traditional" key="collation">Ordre traditionnel</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">américain</measurementSystemName>
			<measurementSystemName type="metric">métrique</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">langue : {0}</codePattern>
			<codePattern type="script">écriture : {0}</codePattern>
			<codePattern type="territory">région : {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à â æ b c ç d e é è ê ë f-i î ï j-o ô œ p-u ù û ü v-y ÿ z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á å ä ã ā ē í ì ī ñ ó ò ö ø ú ǔ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z ұ Ұ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GaMjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<am>matin</am>
				<pm>soir</pm>
				<eras>
					<eraNames>
						<era type="0">ère bouddhiste</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ère b.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">ÈB</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="ms">m:ss</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="chinese">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1yuè</month>
							<month type="2">2yuè</month>
							<month type="3">3yuè</month>
							<month type="4">4yuè</month>
							<month type="5">5yuè</month>
							<month type="6">6yuè</month>
							<month type="7">7yuè</month>
							<month type="8">8yuè</month>
							<month type="9">9yuè</month>
							<month type="10">10yuè</month>
							<month type="11">11yuè</month>
							<month type="12">12yuè</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">zhēngyuè</month>
							<month type="2">èryuè</month>
							<month type="3">sānyuè</month>
							<month type="4">sìyuè</month>
							<month type="5">wǔyuè</month>
							<month type="6">liùyuè</month>
							<month type="7">qīyuè</month>
							<month type="8">bāyuè</month>
							<month type="9">jiǔyuè</month>
							<month type="10">shíyuè</month>
							<month type="11">shíyīyuè</month>
							<month type="12">shí’èryuè</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>matin</am>
				<pm>soir</pm>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMMl y'x'G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMMl y'x'G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMMl y'x'G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/Ml/y'x'G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="M">Ml</dateFormatItem>
						<dateFormatItem id="MEd">EEE d/Ml</dateFormatItem>
						<dateFormatItem id="MMM">MMMl</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMMl</dateFormatItem>
						<dateFormatItem id="MMMMEd">EEE d MMMMl</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMMl</dateFormatItem>
						<dateFormatItem id="MMMd">d MMMl</dateFormatItem>
						<dateFormatItem id="MMMdd">dd MMMl</dateFormatItem>
						<dateFormatItem id="MMd">d/MMl</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MMl</dateFormatItem>
						<dateFormatItem id="Md">d/Ml</dateFormatItem>
						<dateFormatItem id="ms">m:ss</dateFormatItem>
						<dateFormatItem id="y">y'x'G</dateFormatItem>
						<dateFormatItem id="yM">Ml/y'x'G</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d/Ml/y'x'G</dateFormatItem>
						<dateFormatItem id="yMMM">MMMl y'x'G</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMMl y'x'G</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM y'x'G</dateFormatItem>
						<dateFormatItem id="yQ">'T'Q y'x'G</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ y'x'G</dateFormatItem>
						<dateFormatItem id="yyMM">MMl/y'x'G</dateFormatItem>
						<dateFormatItem id="yyMMM">MMMl yy</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE d MMMl yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">d MMMl yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMMl y'x'G</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">tout</month>
							<month type="2">bâb.</month>
							<month type="3">hât.</month>
							<month type="4">kya.</month>
							<month type="5">toub.</month>
							<month type="6">amsh.</month>
							<month type="7">barma.</month>
							<month type="8">barmo.</month>
							<month type="9">bash.</month>
							<month type="10">ba’o.</month>
							<month type="11">abî.</month>
							<month type="12">mis.</month>
							<month type="13">al-n.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">tout</month>
							<month type="2">bâbâ</month>
							<month type="3">hâtour</month>
							<month type="4">kyakh</month>
							<month type="5">toubah</month>
							<month type="6">amshîr</month>
							<month type="7">barmahât</month>
							<month type="8">barmoudah</month>
							<month type="9">bashans</month>
							<month type="10">ba’ounah</month>
							<month type="11">abîb</month>
							<month type="12">misra</month>
							<month type="13">al-nasi</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">T</month>
							<month type="2">B</month>
							<month type="3">H</month>
							<month type="4">K</month>
							<month type="5">T</month>
							<month type="6">A</month>
							<month type="7">B</month>
							<month type="8">B</month>
							<month type="9">B</month>
							<month type="10">B</month>
							<month type="11">A</month>
							<month type="12">M</month>
							<month type="13">N</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>matin</am>
				<pm>soir</pm>
				<eras>
					<eraNames>
						<era type="0">avant Dioclétien</era>
						<era type="1">après Dioclétien</era>
					</eraNames>
					<eraAbbr>
						<era type="0">av. D.</era>
						<era type="1">ap. D.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">av. D.</era>
						<era type="1">ap. D.</era>
					</eraNarrow>
				</eras>
			</calendar>
			<calendar type="ethiopic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">mäs.</month>
							<month type="2">teq.</month>
							<month type="3">hed.</month>
							<month type="4">tah.</month>
							<month type="5">ter</month>
							<month type="6">yäk.</month>
							<month type="7">mäg.</month>
							<month type="8">miy.</month>
							<month type="9">gue.</month>
							<month type="10">sän.</month>
							<month type="11">ham.</month>
							<month type="12">näh.</month>
							<month type="13">pag.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">mäskäräm</month>
							<month type="2">teqemt</month>
							<month type="3">hedar</month>
							<month type="4">tahesas</month>
							<month type="5">ter</month>
							<month type="6">yäkatit</month>
							<month type="7">mägabit</month>
							<month type="8">miyazya</month>
							<month type="9">guenbot</month>
							<month type="10">säné</month>
							<month type="11">hamlé</month>
							<month type="12">nähasé</month>
							<month type="13">pagumén</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">M</month>
							<month type="2">T</month>
							<month type="3">H</month>
							<month type="4">T</month>
							<month type="5">T</month>
							<month type="6">Y</month>
							<month type="7">M</month>
							<month type="8">M</month>
							<month type="9">G</month>
							<month type="10">S</month>
							<month type="11">H</month>
							<month type="12">N</month>
							<month type="13">P</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>matin</am>
				<eras>
					<eraNames>
						<era type="0">avant l’Incarnation</era>
						<era type="1">après l’Incarnation</era>
					</eraNames>
					<eraAbbr>
						<era type="0">av. Inc.</era>
						<era type="1">ap. Inc.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">av. Inc.</era>
						<era type="1">ap. Inc.</era>
					</eraNarrow>
				</eras>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">janv.</month>
							<month type="2">févr.</month>
							<month type="3">mars</month>
							<month type="4">avr.</month>
							<month type="5">mai</month>
							<month type="6">juin</month>
							<month type="7">juil.</month>
							<month type="8">août</month>
							<month type="9">sept.</month>
							<month type="10">oct.</month>
							<month type="11">nov.</month>
							<month type="12">déc.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">janvier</month>
							<month type="2">février</month>
							<month type="3">mars</month>
							<month type="4">avril</month>
							<month type="5">mai</month>
							<month type="6">juin</month>
							<month type="7">juillet</month>
							<month type="8">août</month>
							<month type="9">septembre</month>
							<month type="10">octobre</month>
							<month type="11">novembre</month>
							<month type="12">décembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dim.</day>
							<day type="mon">lun.</day>
							<day type="tue">mar.</day>
							<day type="wed">mer.</day>
							<day type="thu">jeu.</day>
							<day type="fri">ven.</day>
							<day type="sat">sam.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">dimanche</day>
							<day type="mon">lundi</day>
							<day type="tue">mardi</day>
							<day type="wed">mercredi</day>
							<day type="thu">jeudi</day>
							<day type="fri">vendredi</day>
							<day type="sat">samedi</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">J</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="3">T3</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1er trimestre</quarter>
							<quarter type="2">2e trimestre</quarter>
							<quarter type="3">3e trimestre</quarter>
							<quarter type="4">4e trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">avant Jésus-Christ</era>
						<era type="1">après Jésus-Christ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">av. J.-C.</era>
						<era type="1">ap. J.-C.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">EEE d/M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">EEE d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMMdd">dd MMM</dateFormatItem>
						<dateFormatItem id="MMd">d/MM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">HH:mm</dateFormatItem>
						<dateFormatItem id="hhmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">'T'Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE d MMM yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">d MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">'T'Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M–M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM–MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">'du' E d MMM 'au' E d MMM</greatestDifference>
							<greatestDifference id="d">'du' E d 'au' E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL–LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">'du' d MMM 'au' d MMM</greatestDifference>
							<greatestDifference id="d">d–d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH – HH</greatestDifference>
							<greatestDifference id="h">HH – HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm – HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm – HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm – HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm – HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm – HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH – HH v</greatestDifference>
							<greatestDifference id="h">HH – HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy – MM/yy</greatestDifference>
							<greatestDifference id="y">M/yyyy – M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy – E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy – E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/M/yyyy – E d/M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy – MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM – E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d – E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy – E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MMMM–MMMM yyyy</greatestDifference>
							<greatestDifference id="y">MMMM yyyy – MMMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM – d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy – d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="d">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yyyy – d/M/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ère</displayName>
					</field>
					<field type="year">
						<displayName>année</displayName>
					</field>
					<field type="month">
						<displayName>mois</displayName>
					</field>
					<field type="week">
						<displayName>semaine</displayName>
					</field>
					<field type="day">
						<displayName>jour</displayName>
						<relative type="0">aujourd’hui</relative>
						<relative type="1">demain</relative>
						<relative type="2">après-demain</relative>
						<relative type="3">après-après-demain</relative>
						<relative type="-1">hier</relative>
						<relative type="-2">avant-hier</relative>
						<relative type="-3">avant-avant-hier</relative>
					</field>
					<field type="weekday">
						<displayName>jour de la semaine</displayName>
					</field>
					<field type="dayperiod">
						<displayName>cadran</displayName>
					</field>
					<field type="hour">
						<displayName>heure</displayName>
					</field>
					<field type="minute">
						<displayName>minute</displayName>
					</field>
					<field type="second">
						<displayName>seconde</displayName>
					</field>
					<field type="zone">
						<displayName>fuseau horaire</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">tis.</month>
							<month type="2">hes.</month>
							<month type="3">kis.</month>
							<month type="4">téb.</month>
							<month type="5">sché.</month>
							<month type="6">ad.I</month>
							<month type="7">adar</month>
							<month type="8">nis.</month>
							<month type="9">iyar</month>
							<month type="10">siv.</month>
							<month type="11">tam.</month>
							<month type="12">ab</month>
							<month type="13">ell.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Tisseri</month>
							<month type="2">Hesvan</month>
							<month type="3">kislev</month>
							<month type="4">Tébeth</month>
							<month type="5">Schébat</month>
							<month type="6">Adar</month>
							<month type="7">Adar II</month>
							<month type="8">Nissan</month>
							<month type="9">iyar</month>
							<month type="10">sivan</month>
							<month type="11">Tamouz</month>
							<month type="12">Ab</month>
							<month type="13">Elloul</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">T</month>
							<month type="2">H</month>
							<month type="3">K</month>
							<month type="4">T</month>
							<month type="5">S</month>
							<month type="6">A</month>
							<month type="7">A</month>
							<month type="8">N</month>
							<month type="9">I</month>
							<month type="10">S</month>
							<month type="11">T</month>
							<month type="12">A</month>
							<month type="13">E</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>matin</am>
				<pm>soir</pm>
				<eras>
					<eraNames>
						<era type="0">Anno Mundi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">A.M.</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="indian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">chai.</month>
							<month type="2">vai.</month>
							<month type="3">jyai.</month>
							<month type="4">āsha.</month>
							<month type="5">shrā.</month>
							<month type="6">bhā.</month>
							<month type="7">āshw.</month>
							<month type="8">kār.</month>
							<month type="9">mār.</month>
							<month type="10">pau.</month>
							<month type="11">māgh</month>
							<month type="12">phāl.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">chaitra</month>
							<month type="2">vaishākh</month>
							<month type="3">jyaishtha</month>
							<month type="4">āshādha</month>
							<month type="5">shrāvana</month>
							<month type="6">bhādrapad</month>
							<month type="7">āshwin</month>
							<month type="8">kārtik</month>
							<month type="9">mārgashīrsha</month>
							<month type="10">paush</month>
							<month type="11">māgh</month>
							<month type="12">phālgun</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">C</month>
							<month type="2">V</month>
							<month type="3">J</month>
							<month type="4">Ā</month>
							<month type="5">S</month>
							<month type="6">B</month>
							<month type="7">Ā</month>
							<month type="8">K</month>
							<month type="9">M</month>
							<month type="10">P</month>
							<month type="11">M</month>
							<month type="12">P</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>matin</am>
				<pm>soir</pm>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Mouharram</month>
							<month type="3">Rabiʻ-oul-Aououal</month>
							<month type="4">Rabiʻ-out-Tani</month>
							<month type="5">Djoumada-l-Oula</month>
							<month type="6">Djoumada-t-Tania</month>
							<month type="7">Radjab</month>
							<month type="8">Chaʻban</month>
							<month type="10">Chaououal</month>
							<month type="11">Dou-l-Qaʻda</month>
							<month type="12">Dou-l-Hidjja</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>UTC{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>zone inconnue</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andorre</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubaï</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kaboul</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Saint John’s</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>The Valley</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Pôle Sud</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Showa</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Mac Murdo</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ushuaïa</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumán</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Vienne</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Adélaïde</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Oranjestad</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Bakou</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbade (La)</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Dhâkâ</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruxelles</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahreïn</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudes</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Bandar Seri Begawan</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirunepé</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Manaos</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaína</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Noronha">
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Thimphou</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belmopan</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Régina</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Montréal</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Saint-Jean de Terre-Neuve</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>West Island</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Île de Pâques</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kachgar</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>San José</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>La Havane</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cap Vert</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Flying Fish Cove</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nicosie</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenhague</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominique</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Saint Domingue</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Le Caire</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Laâyoune</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmara</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Îles Canaries</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis-Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidji</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Port Stanley</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
			</zone>
			<zone type="Pacific/Ponape">
			</zone>
			<zone type="Pacific/Kosrae">
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Féroé</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londres</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Grenade</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tbilissi</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>Saint-Pierre-Port</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Thulé</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthåb</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Basse-Terre</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athènes</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Géorgie du Sud</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Hagåtña</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Guyane</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hong-Kong</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Macassar</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jérusalem</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>Douglas</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>Kolkata</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Diego Garcia</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Téhéran</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reykjavík</exemplarCity>
			</zone>
			<zone type="Europe/Jersey">
				<exemplarCity>Saint-Hélier</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaïque</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Bichkek</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Comores (Archipel)</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Saint-Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Séoul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Koweït</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Caïmans</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktaou</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Ouralsk</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktioubinsk</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Kzyl Orda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma Ata</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beyrouth</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Sainte-Lucie</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Oulan-Bator</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Tchoïbalsan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Fort-de-France</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Brades</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Malte</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Maurice (Île)</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Malé</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexico</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Nouméa</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Kingston</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Katmandou</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Yaren</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Alofi</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panamá (Panamá)</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Marquises</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Manille</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karâchi</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsovie</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Saint-Pierre</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairn (Île)</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Rico</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Açores</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Madère</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisbonne</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Melekeok</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Doha</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion (Île de la)</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscou</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Ekaterinbourg</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Novossibirsk</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnoïarsk</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkoutsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Iakoutsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sakhaline</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamtchatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riyad</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Honiara</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Mahé</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapour</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sainte-Hélène</exemplarCity>
			</zone>
			<zone type="Europe/San_Marino">
				<exemplarCity>Saint-Marin</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadiscio</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>São Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damas</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Cockburn Town</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Port-aux-Français</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Lomé</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Douchanbé</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Achgabat</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Nukuʻalofa</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port-d’Espagne</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Oujgorod</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporojie</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem, Dakota du Nord</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Central North Dakota</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
			</zone>
			<zone type="America/Indiana/Tell_City">
			</zone>
			<zone type="America/Indiana/Winamac">
			</zone>
			<zone type="America/Indiana/Vevay">
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Détroit</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Tachkent</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>Cité du Vatican</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint-Vincent</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Road Town</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Saint-Thomas</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Hô-Chi-Minh-Ville</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Efaté</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Matāʻutu</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Mamoudzou</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<generic>heure de l’Acre</generic>
					<standard>heure de l’Acre</standard>
					<daylight>heure avancée de l’Acre</daylight>
				</long>
				<short>
					<generic>HACR</generic>
					<standard>HNACR</standard>
					<daylight>HAACR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<generic>heure d’Afghanistan</generic>
					<standard>heure d’Afghanistan</standard>
					<daylight>heure avancée d’Afghanistan</daylight>
				</long>
				<short>
					<generic>HAF</generic>
					<standard>HNAF</standard>
					<daylight>HAAF</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<generic>heure d’Afrique centrale</generic>
					<standard>heure normale d’Afrique centrale</standard>
					<daylight>heure avancée d’Afrique centrale</daylight>
				</long>
				<short>
					<generic>HAFC</generic>
					<standard>HNAFC</standard>
					<daylight>HAAFC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<generic>heure d’Afrique de l’Est</generic>
					<standard>heure normale d’Afrique de l’Est</standard>
					<daylight>heure avancée d’Afrique de l’Est</daylight>
				</long>
				<short>
					<generic>HAFE</generic>
					<standard>HNAFE</standard>
					<daylight>HAAFE</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<long>
					<generic>heure d’Afrique de l’Ouest sahélien</generic>
					<standard>heure normale d’Afrique de l’Ouest sahélien</standard>
					<daylight>heure avancée d’Afrique de l’Ouest sahélien</daylight>
				</long>
				<short>
					<generic>HAFOS</generic>
					<standard>HNAFOS</standard>
					<daylight>HAAFOS</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>heure d’Afrique méridionale</generic>
					<standard>heure normale d’Afrique méridionale</standard>
					<daylight>heure avancée d’Afrique méridionale</daylight>
				</long>
				<short>
					<generic>HAFM</generic>
					<standard>HNAFM</standard>
					<daylight>HAAFM</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>heure d’Afrique de l’Ouest</generic>
					<standard>heure normale d’Afrique de l’Ouest</standard>
					<daylight>heure avancée d’Afrique de l’Ouest</daylight>
				</long>
				<short>
					<generic>HAFO</generic>
					<standard>HNAFO</standard>
					<daylight>HAAFO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<generic>heure d’Aqtöbe</generic>
					<standard>heure normale d’Aqtöbe</standard>
					<daylight>heure avancée d’Aqtöbe</daylight>
				</long>
				<short>
					<generic>HAQB</generic>
					<standard>HNAQB</standard>
					<daylight>HAAQB</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>heure de l’Alaska</generic>
					<standard>heure normale de l’Alaska</standard>
					<daylight>heure avancée de l’Alaska</daylight>
				</long>
				<short>
					<generic>HAK</generic>
					<standard>HNAK</standard>
					<daylight>HAAK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>heure d’Alaska - Hawaii</generic>
					<standard>heure normale d’Alaska - Hawaii</standard>
					<daylight>heure avancée d’Alaska - Hawaii</daylight>
				</long>
				<short>
					<generic>HAH</generic>
					<standard>HNAH</standard>
					<daylight>HAAH</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<long>
					<generic>heure d’Alma Ata</generic>
					<standard>heure normale d’Alma Ata</standard>
					<daylight>heure avancée d’Alma Ata</daylight>
				</long>
				<short>
					<generic>HALM</generic>
					<standard>HNALM</standard>
					<daylight>HAALM</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<generic>heure de l’Amazonie</generic>
					<standard>heure de l’Amazonie</standard>
					<daylight>heure avancée de l’Amazonie</daylight>
				</long>
				<short>
					<generic>HAMA</generic>
					<standard>HNAMA</standard>
					<daylight>HAAMA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>heure du Centre</generic>
					<standard>heure normale du Centre</standard>
					<daylight>heure avancée du Centre</daylight>
				</long>
				<short>
					<generic>HC</generic>
					<standard>HNC</standard>
					<daylight>HAC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>heure de l’Est</generic>
					<standard>heure normale de l’Est</standard>
					<daylight>heure avancée de l’Est</daylight>
				</long>
				<short>
					<generic>HE</generic>
					<standard>HNE</standard>
					<daylight>HAE</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Heure des Rocheuses</generic>
					<standard>heure normale des Rocheuses</standard>
					<daylight>heure avancée des Rocheuses</daylight>
				</long>
				<short>
					<generic>HR</generic>
					<standard>HNR</standard>
					<daylight>HAR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>heure du Pacifique</generic>
					<standard>heure normale du Pacifique</standard>
					<daylight>heure avancée du Pacifique</daylight>
				</long>
				<short>
					<generic>HP</generic>
					<standard>HNP</standard>
					<daylight>HAP</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<generic>heure d’Anadyr</generic>
					<standard>heure d’Anadyr</standard>
					<daylight>heure avancée d’Anadyr</daylight>
				</long>
				<short>
					<generic>HANA</generic>
					<standard>HNANA</standard>
					<daylight>HAANA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<generic>heure d’Aktaou</generic>
					<standard>heure d’Aktaou</standard>
					<daylight>heure avancée d’Aktaou</daylight>
				</long>
				<short>
					<generic>HAQT</generic>
					<standard>HNAQT</standard>
					<daylight>HAAQT</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<generic>heure d’Aqtöbe</generic>
					<standard>heure d’Aqtöbe</standard>
					<daylight>heure avancé d’Aqtöbe</daylight>
				</long>
				<short>
					<generic>HAQB</generic>
					<standard>HNAQB</standard>
					<daylight>HAAQB</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>heure de l’Arabie</generic>
					<standard>heure normale de l’Arabie</standard>
					<daylight>heure avancée de l’Arabie</daylight>
				</long>
				<short>
					<generic>HA</generic>
					<standard>HNA</standard>
					<daylight>HAA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<long>
					<generic>heure de l’Est argentin</generic>
					<standard>heure d’Argentine</standard>
					<daylight>heure avancée de l’Est argentin</daylight>
				</long>
				<short>
					<generic>HE (AR)</generic>
					<standard>HNE (AR)</standard>
					<daylight>HAE (AR)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<generic>heure de l’Ouest argentin</generic>
					<standard>heure de l’Ouest argentin</standard>
					<daylight>heure avancée de l’Ouest argentin</daylight>
				</long>
				<short>
					<generic>HO (AR)</generic>
					<standard>HNO (AR)</standard>
					<daylight>HAO (AR)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<generic>heure d’Arménie</generic>
					<standard>heure d’Arménie</standard>
					<daylight>heure avancée d’Arménie</daylight>
				</long>
				<short>
					<generic>HAM</generic>
					<standard>HNAM</standard>
					<daylight>HAAM</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<generic>heure d’Achgabat</generic>
					<standard>heure d’Achgabat</standard>
					<daylight>heure avancée d’Achgabat</daylight>
				</long>
				<short>
					<generic>HACH</generic>
					<standard>HNACH</standard>
					<daylight>HAACH</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>heure de l’Atlantique</generic>
					<standard>heure normale de l’Atlantique</standard>
					<daylight>heure avancée de l’Atlantique</daylight>
				</long>
				<short>
					<generic>HA</generic>
					<standard>HNA</standard>
					<daylight>HAA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>heure du Centre australien</generic>
					<standard>heure normale du Centre australien</standard>
					<daylight>heure avancée du Centre australien</daylight>
				</long>
				<short>
					<generic>HC (AU)</generic>
					<standard>HNC (AU)</standard>
					<daylight>HAC (AU)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>heure Centre Ouest australien</generic>
					<standard>heure normale Centre Ouest australien</standard>
					<daylight>heure avancée du Centre Ouest australien</daylight>
				</long>
				<short>
					<generic>HCO (AU)</generic>
					<standard>HNCO (AU)</standard>
					<daylight>HACO (AU)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>heure de l’Est australien</generic>
					<standard>heure normale de l’Est australien</standard>
					<daylight>heure avancée de l’Est australien</daylight>
				</long>
				<short>
					<generic>HE (AU)</generic>
					<standard>HNE (AU)</standard>
					<daylight>HAE (AU)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>heure de l’Ouest australien</generic>
					<standard>heure normale de l’Ouest australien</standard>
					<daylight>heure avancée de l’Ouest australien</daylight>
				</long>
				<short>
					<generic>HO (AU)</generic>
					<standard>HNO (AU)</standard>
					<daylight>HAO (AU)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<generic>heure d’Azerbaïdjan</generic>
					<standard>heure d’Azerbaïdjan</standard>
					<daylight>heure avancée d’Azerbaïdjan</daylight>
				</long>
				<short>
					<generic>HAZ</generic>
					<standard>HNAZ</standard>
					<daylight>HAAZ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<generic>heure des Açores</generic>
					<standard>heure des Açores</standard>
					<daylight>heure avancée des Açores</daylight>
				</long>
				<short>
					<generic>HAC (PT)</generic>
					<standard>HNAC (PT)</standard>
					<daylight>HAAC (PT)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<long>
					<generic>heure de Bakou</generic>
					<standard>heure de Bakou</standard>
					<daylight>heure avancée de Bakou</daylight>
				</long>
				<short>
					<generic>HBAK</generic>
					<standard>HNBAK</standard>
					<daylight>HABAK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<generic>heure du Bangladesh</generic>
					<standard>heure du Bangladesh</standard>
					<daylight>heure avancée du Bangladesh</daylight>
				</long>
				<short>
					<generic>HBD</generic>
					<standard>HNBD</standard>
					<daylight>HABD</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>heure de Bering</generic>
					<standard>heure normale de Bering</standard>
					<daylight>heure avancée de Bering</daylight>
				</long>
				<short>
					<generic>HBER</generic>
					<standard>HNBER</standard>
					<daylight>HABER</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<generic>heure du Bhoutan</generic>
					<standard>heure du Bhoutan</standard>
					<daylight>heure avancée du Bhoutan</daylight>
				</long>
				<short>
					<generic>HBT</generic>
					<standard>HNBT</standard>
					<daylight>HABT</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<generic>heure de Bolivie</generic>
					<standard>heure de Bolivie</standard>
					<daylight>heure avancée de Bolivie</daylight>
				</long>
				<short>
					<generic>HBO</generic>
					<standard>HNBO</standard>
					<daylight>HABO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<long>
					<generic>heure de Bornéo</generic>
					<standard>heure de Bornéo</standard>
					<daylight>heure avancée de Bornéo</daylight>
				</long>
				<short>
					<generic>HBOR</generic>
					<standard>HNBOR</standard>
					<daylight>HABOR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<generic>heure de Brasilia</generic>
					<standard>heure de Brasilia</standard>
					<daylight>heure avancée de Brasilia</daylight>
				</long>
				<short>
					<generic>HBR</generic>
					<standard>HNBR</standard>
					<daylight>HABR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="British">
				<long>
					<generic>heure du Royaume-Uni</generic>
					<standard>heure normale du Royaume-Uni</standard>
					<daylight>heure avancée du Royaume-Uni</daylight>
				</long>
				<short>
					<generic>HGB</generic>
					<standard>HNGB</standard>
					<daylight>HAGB</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<generic>heure du Brunéi</generic>
					<standard>heure du Brunéi</standard>
					<daylight>heure avancée du Brunéi</daylight>
				</long>
				<short>
					<generic>HBN</generic>
					<standard>HNBN</standard>
					<daylight>HABN</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<generic>heure du Cap-Vert</generic>
					<standard>eure du Cap-Vert</standard>
					<daylight>heure avancée du Cap-Vert</daylight>
				</long>
				<short>
					<generic>HCV</generic>
					<standard>HNCV</standard>
					<daylight>HACV</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>heure des Chamorro</generic>
					<standard>heure normale des Chamorro</standard>
					<daylight>heure avancée des Chamorro</daylight>
				</long>
				<short>
					<generic>HCh</generic>
					<standard>HNCh</standard>
					<daylight>HACh</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<long>
					<generic>heure du Changbai</generic>
					<standard>heure du Changbai</standard>
					<daylight>heure avancée du Changbai</daylight>
				</long>
				<short>
					<generic>HCHA (CN)</generic>
					<standard>HNCHA (CN)</standard>
					<daylight>HACHA (CN)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<long>
					<generic>heure des îles Chatham</generic>
					<standard>heure des îles Chatham</standard>
					<daylight>heure avancée des îles Chatham</daylight>
				</long>
				<short>
					<generic>HCHA (NZ)</generic>
					<standard>HNCHA (NZ)</standard>
					<daylight>HACHA (NZ)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<long>
					<generic>heure du Chili</generic>
					<standard>heure du Chili</standard>
					<daylight>heure avancée du Chili</daylight>
				</long>
				<short>
					<generic>HCL</generic>
					<standard>HNCL</standard>
					<daylight>HACL</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<generic>heure de Chine</generic>
					<standard>heure normale de Chine</standard>
					<daylight>heure avancée de Chine</daylight>
				</long>
				<short>
					<generic>HC (CN)</generic>
					<standard>HNC (Chine)</standard>
					<daylight>HAC (Chine)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<long>
					<generic>heure de l’île Christmas</generic>
					<standard>heure de l’île Christmas</standard>
					<daylight>heure avancée de l’île Christmas</daylight>
				</long>
				<short>
					<generic>HCX</generic>
					<standard>HNCX</standard>
					<daylight>HACX</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<long>
					<generic>heure des îles Cocos - Keeling</generic>
					<standard>heure des îles Cocos</standard>
					<daylight>heure avancée des îles Cocos - Keeling</daylight>
				</long>
				<short>
					<generic>HCC</generic>
					<standard>HNCC</standard>
					<daylight>HACC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<long>
					<generic>heure de Colombie</generic>
					<standard>heure de Colombie</standard>
					<daylight>heure avancée de Colombie</daylight>
				</long>
				<short>
					<generic>HCO</generic>
					<standard>HNCO</standard>
					<daylight>HACO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<long>
					<generic>heure des îles Cook</generic>
					<standard>heure des îles Cook</standard>
					<daylight>heure avancée des îles Cook</daylight>
				</long>
				<short>
					<generic>HCK</generic>
					<standard>HNCK</standard>
					<daylight>HACK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>heure de Cuba</generic>
					<standard>heure normale de Cuba</standard>
					<daylight>heure avancée de Cuba</daylight>
				</long>
				<short>
					<generic>HCU</generic>
					<standard>HNCU</standard>
					<daylight>HACU</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<long>
					<generic>heure de Dhâkâ</generic>
					<standard>heure de Dhâkâ</standard>
					<daylight>heure avancée de Dhâkâ</daylight>
				</long>
				<short>
					<generic>HDAC</generic>
					<standard>HNDAC</standard>
					<daylight>HADAC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<long>
					<generic>heure de Davis</generic>
					<standard>heure de Davis</standard>
					<daylight>heure avancée de Davis</daylight>
				</long>
				<short>
					<generic>HDAV</generic>
					<standard>HNDAV</standard>
					<daylight>HADAV</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dominican">
				<long>
					<generic>heure de République dominicaine</generic>
					<standard>heure normale de République dominicaine</standard>
					<daylight>heure avancée de République dominicaine</daylight>
				</long>
				<short>
					<generic>HDO</generic>
					<standard>HNDO</standard>
					<daylight>HADO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<generic>heure de Dumont-d’Urville</generic>
					<standard>heure de Dumont-d’Urville</standard>
					<daylight>heure avancée de Dumont-d’Urville</daylight>
				</long>
				<short>
					<generic>HDDU</generic>
					<standard>HNDDU</standard>
					<daylight>HADDU</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<generic>heure de Duchanbé</generic>
					<standard>heure de Duchanbé</standard>
					<daylight>heure avancée de Duchanbé</daylight>
				</long>
				<short>
					<generic>HDUC</generic>
					<standard>HNDUC</standard>
					<daylight>HADUC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<generic>heure de Guyane néerlandaise</generic>
					<standard>heure de Guyane néerlandaise</standard>
					<daylight>heure avancée de Guyane néerlandaise</daylight>
				</long>
				<short>
					<generic>HGNE</generic>
					<standard>HAGNE</standard>
					<daylight>HAGNE</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<generic>heure du Timor oriental</generic>
					<standard>heure du Timor oriental</standard>
					<daylight>heure avancée du Timor oriental</daylight>
				</long>
				<short>
					<generic>HTL</generic>
					<standard>HNTL</standard>
					<daylight>HATL</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<long>
					<generic>heure de l’île de Pâques</generic>
					<standard>heure de l’île de Pâques</standard>
					<daylight>heure avancée de l’île de Pâques</daylight>
				</long>
				<short>
					<generic>HPAQ</generic>
					<standard>HNPAQ</standard>
					<daylight>HAPAQ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<generic>heure d’Équateur</generic>
					<standard>heure d’Équateur</standard>
					<daylight>heure avancée d’Équateur</daylight>
				</long>
				<short>
					<generic>HEQ</generic>
					<standard>HNEQ</standard>
					<daylight>HAEQ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<generic>Heure de l’Europe centrale</generic>
					<standard>Heure normale de l’Europe centrale</standard>
					<daylight>heure avancée d’Europe centrale</daylight>
				</long>
				<short>
					<generic>HEC</generic>
					<standard>HNEC</standard>
					<daylight>HAEC</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<generic>heure d’Europe de l’Est</generic>
					<standard>Heure normale de l’Europe de l’Est</standard>
					<daylight>heure avancée d’Europe de l’Est</daylight>
				</long>
				<short>
					<generic>HEE</generic>
					<standard>HEE</standard>
					<daylight>HAEE</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<generic>heure d’Europe de l’Ouest</generic>
					<standard>heure d’Europe de l’Ouest</standard>
					<daylight>heure avancée d’Europe de l’Ouest</daylight>
				</long>
				<short>
					<generic>HEO</generic>
					<standard>HNEO</standard>
					<daylight>HAEO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<generic>heure des îles Malouines</generic>
					<standard>heure des îles Malouines</standard>
					<daylight>heure avancée des îles Malouines</daylight>
				</long>
				<short>
					<generic>HFK</generic>
					<standard>HNFK</standard>
					<daylight>HAFK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<long>
					<generic>heure des Îles Fidji</generic>
					<standard>heure des îles Fidji</standard>
					<daylight>heure avancée des îles Fidji</daylight>
				</long>
				<short>
					<generic>HFJ</generic>
					<standard>HNFJ</standard>
					<daylight>HAFJ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<generic>heure de Guyane française</generic>
					<standard>heure de Guyane française</standard>
					<daylight>heure avancée de Guyane française</daylight>
				</long>
				<short>
					<generic>HGF</generic>
					<standard>HNGF</standard>
					<daylight>HAGF</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<generic>heure des Terres australes françaises</generic>
					<standard>heure des Terres australes françaises</standard>
					<daylight>heure avancée des Terres australes françaises</daylight>
				</long>
				<short>
					<generic>HTF</generic>
					<standard>HNTF</standard>
					<daylight>HATF</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<long>
					<generic>heure de Frounzé</generic>
					<standard>heure de Frounzé</standard>
					<daylight>heure avancée de Frounzé</daylight>
				</long>
				<short>
					<generic>HFRU</generic>
					<standard>FNFRU</standard>
					<daylight>HAFRU</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>heure moyenne de Greenwich</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<generic>heure des îles Galápagos</generic>
					<standard>heure des îles Galápagos</standard>
					<daylight>heure avancée des îles Galápagos</daylight>
				</long>
				<short>
					<generic>HGAL</generic>
					<standard>HNGAL</standard>
					<daylight>HAGAL</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gambier">
				<long>
					<generic>heure des îles Gambier</generic>
					<standard>heure des îles Gambier</standard>
					<daylight>heure avancée des îles Gambier</daylight>
				</long>
				<short>
					<generic>HGAM</generic>
					<standard>HNGAM</standard>
					<daylight>HAGAM</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<long>
					<generic>heure de Géorgie</generic>
					<standard>heure de Géorgie</standard>
					<daylight>heure avancée de Géorgie</daylight>
				</long>
				<short>
					<generic>HGE</generic>
					<standard>HNGE</standard>
					<daylight>HAGE</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<generic>heure des îles Gilbert</generic>
					<standard>heure des îles Gilbert</standard>
					<daylight>heure avancée des îles Gilbert</daylight>
				</long>
				<short>
					<generic>HGIL</generic>
					<standard>HNGIL</standard>
					<daylight>HAGIL</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Goose_Bay">
				<long>
					<generic>heure de Goose Bay</generic>
					<standard>heure normale de Goose Bay</standard>
					<daylight>heure avancée de Goose Bay</daylight>
				</long>
				<short>
					<generic>HGOB</generic>
					<standard>HNGOB</standard>
					<daylight>HAGOB</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<generic>heure du Centre du Groenland</generic>
					<standard>heure du Centre du Groenland</standard>
					<daylight>heure avancée du Centre du Groenland</daylight>
				</long>
				<short>
					<generic>HC (GL)</generic>
					<standard>HNC (GL)</standard>
					<daylight>HAC (GL)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<generic>heure de l’Est du Groenland</generic>
					<standard>heure de l’Est du Groenland</standard>
					<daylight>heure avancée de l’Est du Groenland</daylight>
				</long>
				<short>
					<generic>HE (GL)</generic>
					<standard>HNE (GL)</standard>
					<daylight>HAE (GL)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<generic>heure de l’Ouest du Groenland</generic>
					<standard>heure de l’Ouest du Groenland</standard>
					<daylight>heure avancée de l’Ouest du Groenland</daylight>
				</long>
				<short>
					<generic>HO (GL)</generic>
					<standard>HNO (GL)</standard>
					<daylight>HAO (GL)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<long>
					<generic>heure de Guam</generic>
					<standard>heure de Guam</standard>
					<daylight>heure avancée de Guam</daylight>
				</long>
				<short>
					<generic>HGU</generic>
					<standard>HNGU</standard>
					<daylight>HAGU</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>heure du Golfe</generic>
					<standard>heure normale du Golfe</standard>
					<daylight>heure avancée du Golfe</daylight>
				</long>
				<short>
					<generic>HG</generic>
					<standard>HNG</standard>
					<daylight>HAG</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guyana">
				<long>
					<generic>heure du Guyana</generic>
					<standard>heure du Guyana</standard>
					<daylight>heure avancée du Guyana</daylight>
				</long>
				<short>
					<generic>HGY</generic>
					<standard>HNGY</standard>
					<daylight>HAGY</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<generic>heure d’Hawaii - Aléoutiennes</generic>
					<standard>heure normale d’Hawaii - Aléoutiennes</standard>
					<daylight>heure avancée d’Hawaii - Aléoutiennes</daylight>
				</long>
				<short>
					<generic>HH</generic>
					<standard>HNH</standard>
					<daylight>HAH</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<generic>heure de Hong Kong</generic>
					<standard>heure de Hong Kong</standard>
					<daylight>heure avancée de Hong Kong</daylight>
				</long>
				<short>
					<generic>HHK</generic>
					<standard>HNHK</standard>
					<daylight>HAHK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<long>
					<generic>heure de Hovd</generic>
					<standard>heure de Hovd</standard>
					<daylight>heure avancée de Hovd</daylight>
				</long>
				<short>
					<generic>HHOV</generic>
					<standard>HNHOV</standard>
					<daylight>HAHOV</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="India">
				<long>
					<generic>heure de l’Inde</generic>
					<standard>heure normale de l’Inde</standard>
					<daylight>heure avancée de l’Inde</daylight>
				</long>
				<short>
					<generic>HI (IN)</generic>
					<standard>HNI (IN)</standard>
					<daylight>HAI (IN)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<generic>heure du Territoire britannique de l’océan Indien</generic>
					<standard>heure du Territoire britannique de l’océan Indien</standard>
					<daylight>heure avancée du Territoire britannique de l’océan Indien</daylight>
				</long>
				<short>
					<generic>HIO</generic>
					<standard>HNIO</standard>
					<daylight>HAIO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indochina">
				<long>
					<generic>heure d’Indochine</generic>
					<standard>heure d’Indochine</standard>
					<daylight>heure avancée d’Indochine</daylight>
				</long>
				<short>
					<generic>HIDC</generic>
					<standard>HNIDC</standard>
					<daylight>HAIDC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<generic>heure du Centre indonésien</generic>
					<standard>heure normale du Centre indonésien</standard>
					<daylight>heure avancée du Centre indonésien</daylight>
				</long>
				<short>
					<generic>HC (ID)</generic>
					<standard>HNC (ID)</standard>
					<daylight>HAC (ID)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<generic>heure de l’Est indonésien</generic>
					<standard>heure normale de l’Est indonésien</standard>
					<daylight>heure avancée de l’Est indonésien</daylight>
				</long>
				<short>
					<generic>HE (ID)</generic>
					<standard>HNE (ID)</standard>
					<daylight>HAE (ID)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<generic>heure de l’Ouest indonésien</generic>
					<standard>heure normale de l’Ouest indonésien</standard>
					<daylight>heure avancée de l’Ouest indonésien</daylight>
				</long>
				<short>
					<generic>HO (ID)</generic>
					<standard>HNO (ID)</standard>
					<daylight>HAO (ID)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<generic>heure d’Iran</generic>
					<standard>heure normale d’Iran</standard>
					<daylight>heure avancée d’Iran</daylight>
				</long>
				<short>
					<generic>HIR</generic>
					<standard>HNIR</standard>
					<daylight>HAIR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irish">
				<long>
					<generic>heure d’Irlande</generic>
					<standard>heure normale d’Irlande</standard>
					<daylight>heure avancée d’Irlande</daylight>
				</long>
				<short>
					<generic>HIE</generic>
					<standard>HNIE</standard>
					<daylight>HAIE</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<generic>heure d’Irkoutsk</generic>
					<standard>heure d’Irkoutsk</standard>
					<daylight>heure avancée d’Irkoutsk</daylight>
				</long>
				<short>
					<generic>HIRK</generic>
					<standard>HNIRK</standard>
					<daylight>HAIRK</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>heure d’Israël</generic>
					<standard>heure normale d’Israël</standard>
					<daylight>heure avancée d’Israël</daylight>
				</long>
				<short>
					<generic>HI (IL)</generic>
					<standard>HNI</standard>
					<daylight>HAI</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>heure du Japon</generic>
					<standard>heure normale du Japon</standard>
					<daylight>heure avancée du Japon</daylight>
				</long>
				<short>
					<generic>HJ</generic>
					<standard>HNJ</standard>
					<daylight>HAJ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<generic>heure de Petropavlovsk-Kamchatski</generic>
					<standard>heure de Petropavlovsk-Kamchatski</standard>
					<daylight>heure avancée de Petropavlovsk-Kamchatski</daylight>
				</long>
				<short>
					<generic>HPET</generic>
					<standard>HNPET</standard>
					<daylight>HAPET</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<long>
					<generic>heure de Karâchi</generic>
					<standard>heure de Karâchi</standard>
					<daylight>heure avancée de Karâchi</daylight>
				</long>
				<short>
					<generic>HKAR</generic>
					<standard>HNKAR</standard>
					<daylight>HAKAR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<generic>heure de Kachgar</generic>
					<standard>heure de Kachgar</standard>
					<daylight>heure avancée de Kachgar</daylight>
				</long>
				<short>
					<generic>HKAC</generic>
					<standard>HNKAC</standard>
					<daylight>HAKAC</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>heure de l’Est kazakh</generic>
					<standard>heure normale de l’Est kazakh</standard>
					<daylight>heure avancée de l’Est kazakh</daylight>
				</long>
				<short>
					<generic>HE (KZ)</generic>
					<standard>HNE (KZ)</standard>
					<daylight>HAE (KZ)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>heure de l’Ouest kazakh</generic>
					<standard>heure normale de l’Ouest kazakh</standard>
					<daylight>heure avancée de l’Ouest kazakh</daylight>
				</long>
				<short>
					<generic>HO (KZ)</generic>
					<standard>HNO (KZ)</standard>
					<daylight>HAO (KZ)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<generic>heure de Kyzylorda</generic>
					<standard>heure de Kyzylorda</standard>
					<daylight>heure avancée de Kyzylorda</daylight>
				</long>
				<short>
					<generic>HKYZ</generic>
					<standard>HNKYZ</standard>
					<daylight>HAKYZ</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>heure de Corée</generic>
					<standard>heure normale de Corée</standard>
					<daylight>heure avancée de Corée</daylight>
				</long>
				<short>
					<generic>HKR</generic>
					<standard>HNKR</standard>
					<daylight>HAKR</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<generic>heure de Kosrae</generic>
					<standard>heure de Kosrae</standard>
					<daylight>heure avancée de Kosrae</daylight>
				</long>
				<short>
					<generic>HKOS</generic>
					<standard>HNKOS</standard>
					<daylight>HAKOS</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<generic>heure de Krasnoïarsk</generic>
					<standard>heure de Krasnoïarsk</standard>
					<daylight>heure avancée de Krasnoïarsk</daylight>
				</long>
				<short>
					<generic>HKRA</generic>
					<standard>HNKRA</standard>
					<daylight>HAKRA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<generic>heure de Kouïbychev</generic>
					<standard>heure de Kouïbychev</standard>
					<daylight>heure avancée de Kouïbychev</daylight>
				</long>
				<short>
					<generic>HKUY</generic>
					<standard>HNKUY</standard>
					<daylight>HAKUY</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<generic>heure de Kwajalein</generic>
					<standard>heure de Kwajalein</standard>
					<daylight>heure avancée de Kwajalein</daylight>
				</long>
				<short>
					<generic>HKWA</generic>
					<standard>HNKWA</standard>
					<daylight>HAKWA</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Liberia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marquesas">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mawson">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>heure de Moscou</generic>
					<standard>heure normale de Moscou</standard>
					<daylight>heure avancée de Moscou</daylight>
				</long>
				<short>
					<standard>HNMO</standard>
					<daylight>HAMO</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>heure de Terre-Neuve</generic>
					<standard>heure normale de Terre-Neuve</standard>
					<daylight>heure avancée de Terre-Neuve</daylight>
				</long>
				<short>
					<generic>HT</generic>
					<standard>HNT</standard>
					<daylight>HAT</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Niue">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Oral">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Peru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Rothera">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>heure de Samara</standard>
					<daylight>heure avancée de Samara</daylight>
				</long>
				<short>
					<standard>HNSA</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>heure de Géorgie du Sud</standard>
				</long>
				<short>
					<standard>HNG</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Suriname">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tahiti">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>heure de Turquie</standard>
				</long>
				<short>
					<standard>HNTR</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>heure de Volgograd</standard>
					<daylight>heure avancée de Volgograd</daylight>
				</long>
				<short>
					<standard>HNVO</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wallis">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>heure du Yukon</generic>
					<standard>heure normale du Yukon</standard>
					<daylight>heure avancée du Yukon</daylight>
				</long>
				<short>
					<generic>HY</generic>
					<standard>HNY</standard>
					<daylight>HAY</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>peseta andorrane</displayName>
				<displayName count="one">peseta andorrane</displayName>
				<displayName count="other">pesetas andorranes</displayName>
				<symbol>₧A</symbol>
			</currency>
			<currency type="AED">
				<displayName>dirham des Émirats arabes unis</displayName>
				<displayName count="one">dirham des Émirats arabes unis</displayName>
				<displayName count="other">dirhams des Émirats arabes unis</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afghani (1927–2002)</displayName>
				<displayName count="one">afghani (1927–2002)</displayName>
				<displayName count="other">afghanis (1927–2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afghani</displayName>
				<displayName count="one">afghani</displayName>
				<displayName count="other">afghanis</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALK">
				<displayName count="one">lek albanais (1947–1961)</displayName>
				<displayName count="other">leks albanais (1947–1961)</displayName>
			</currency>
			<currency type="ALL">
				<displayName>lek albanais</displayName>
				<displayName count="one">lek albanais</displayName>
				<displayName count="other">leks albanais</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>dram arménien</displayName>
				<displayName count="one">dram arménien</displayName>
				<displayName count="other">drams arméniens</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>florin antillais</displayName>
				<displayName count="one">florin antillais</displayName>
				<displayName count="other">florins antillais</displayName>
				<symbol>f.NA</symbol>
			</currency>
			<currency type="AOA">
				<displayName>kwanza angolais</displayName>
				<displayName count="one">kwanza angolais</displayName>
				<displayName count="other">kwanzas angolais</displayName>
			</currency>
			<currency type="AOK">
				<displayName>kwanza angolais (1977-1990)</displayName>
				<displayName count="one">kwanza angolais (1977–1990)</displayName>
				<displayName count="other">kwanzas angolais (1977–1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>nouveau kwanza angolais (1990-2000)</displayName>
				<displayName count="one">nouveau kwanza angolais (1990–2000)</displayName>
				<displayName count="other">nouveaux kwanzas angolais (1990–2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>kwanza angolais réajusté (1995-1999)</displayName>
				<displayName count="one">kwanza angolais réajusté (1995–1999)</displayName>
				<displayName count="other">kwanzas angolais réajustés (1995–1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>austral argentin</displayName>
				<displayName count="one">austral argentin</displayName>
				<displayName count="other">australs argentins</displayName>
			</currency>
			<currency type="ARP">
				<displayName>peso argentin (1983-1985)</displayName>
				<displayName count="one">peso argentin (1983–1985)</displayName>
				<displayName count="other">pesos argentins (1983–1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>peso argentin</displayName>
				<displayName count="one">peso argentin</displayName>
				<displayName count="other">pesos argentins</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>schilling autrichien</displayName>
				<displayName count="one">schilling autrichien</displayName>
				<displayName count="other">schillings autrichiens</displayName>
				<symbol>öS</symbol>
			</currency>
			<currency type="AUD">
				<displayName>dollar australien</displayName>
				<displayName count="one">dollar australien</displayName>
				<displayName count="other">dollars australiens</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>florin arubais</displayName>
				<displayName count="one">florin arubais</displayName>
				<displayName count="other">florins arubais</displayName>
				<symbol>f.AW</symbol>
			</currency>
			<currency type="AZM">
				<displayName>manat azéri (1993-2006)</displayName>
				<displayName count="one">manat azéri (1993–2006)</displayName>
				<displayName count="other">manats azéris (1993–2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>manat azéri</displayName>
				<displayName count="one">manat azéri</displayName>
				<displayName count="other">manats azéris</displayName>
			</currency>
			<currency type="BAD">
				<displayName>dinar bosniaque</displayName>
				<displayName count="one">dinar bosniaque</displayName>
				<displayName count="other">dinars bosniaques</displayName>
			</currency>
			<currency type="BAM">
				<displayName>mark convertible bosniaque</displayName>
				<displayName count="one">mark convertible bosniaque</displayName>
				<displayName count="other">marks convertibles bosniaques</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>dollar barbadien</displayName>
				<displayName count="one">dollar barbadien</displayName>
				<displayName count="other">dollars barbadiens</displayName>
				<symbol>$Bds</symbol>
			</currency>
			<currency type="BDT">
				<displayName>taka bangladeshi</displayName>
				<displayName count="one">taka bangladeshi</displayName>
				<displayName count="other">takas bangladeshis</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>franc belge (convertible)</displayName>
				<displayName count="one">franc belge (convertible)</displayName>
				<displayName count="other">francs belges (convertibles)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>franc belge</displayName>
				<displayName count="one">franc belge</displayName>
				<displayName count="other">francs belges</displayName>
				<symbol>FB</symbol>
			</currency>
			<currency type="BEL">
				<displayName>franc belge (financier)</displayName>
				<displayName count="one">franc belge (financier)</displayName>
				<displayName count="other">francs belges (financiers)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>lev bulgare (1962–1999)</displayName>
				<displayName count="one">lev bulgare (1962–1999)</displayName>
				<displayName count="other">levs bulgares (1962–1999)</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>nouveau lev bulgare</displayName>
				<displayName count="one">nouveau lev bulgare</displayName>
				<displayName count="other">nouveaux levs bulgares</displayName>
				<symbol>NB</symbol>
			</currency>
			<currency type="BHD">
				<displayName>dinar bahreïni</displayName>
				<displayName count="one">dinar bahreïni</displayName>
				<displayName count="other">dinars bahreïnis</displayName>
				<symbol>DB</symbol>
			</currency>
			<currency type="BIF">
				<displayName>franc burundais</displayName>
				<displayName count="one">franc burundais</displayName>
				<displayName count="other">francs burundais</displayName>
				<symbol>FBu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>dollar bermudien</displayName>
				<displayName count="one">dollar bermudien</displayName>
				<displayName count="other">dollars bermudiens</displayName>
				<symbol>$Bm</symbol>
			</currency>
			<currency type="BND">
				<displayName>dollar brunéien</displayName>
				<displayName count="one">dollar brunéien</displayName>
				<displayName count="other">dollars brunéiens</displayName>
				<symbol>$Bn</symbol>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
				<displayName count="one">boliviano</displayName>
				<displayName count="other">bolivianos</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>peso bolivien</displayName>
				<displayName count="one">peso bolivien</displayName>
				<displayName count="other">pesos boliviens</displayName>
				<symbol>$Bo</symbol>
			</currency>
			<currency type="BOV">
				<displayName>mvdol bolivien</displayName>
				<displayName count="one">mvdol bolivien</displayName>
				<displayName count="other">mvdols boliviens</displayName>
			</currency>
			<currency type="BRB">
				<displayName>nouveau cruzeiro brésilien (1967–1986)</displayName>
				<displayName count="one">nouveau cruzeiro brésilien (1967–1986)</displayName>
				<displayName count="other">nouveaux cruzeiros brésiliens (1967–1986)</displayName>
				<symbol>Cr$</symbol>
			</currency>
			<currency type="BRC">
				<displayName>cruzado brésilien (1986–1989)</displayName>
				<displayName count="one">cruzado brésilien (1986–1989)</displayName>
				<displayName count="other">cruzados brésiliens (1986–1989)</displayName>
				<symbol>Cz</symbol>
			</currency>
			<currency type="BRE">
				<displayName>cruzeiro brésilien (1990–1993)</displayName>
				<displayName count="one">cruzeiro brésilien (1990–1993)</displayName>
				<displayName count="other">cruzeiros brésiliens (1990–1993)</displayName>
				<symbol>Cz$</symbol>
			</currency>
			<currency type="BRL">
				<displayName>réal brésilien</displayName>
				<displayName count="one">réal brésilien</displayName>
				<displayName count="other">réals brésiliens</displayName>
			</currency>
			<currency type="BRN">
				<displayName>nouveau cruzado</displayName>
				<displayName count="one">nouveau cruzado brésilien (1989–1990)</displayName>
				<displayName count="other">nouveaux cruzados brésiliens (1989–1990)</displayName>
				<symbol>NCz$</symbol>
			</currency>
			<currency type="BRR">
				<displayName>cruzeiro</displayName>
				<displayName count="one">cruzeiro réal brésilien (1993–1994)</displayName>
				<displayName count="other">cruzeiros réals brésiliens (1993–1994)</displayName>
				<symbol>CR$</symbol>
			</currency>
			<currency type="BSD">
				<displayName>dollar bahaméen</displayName>
				<displayName count="one">dollar bahaméen</displayName>
				<displayName count="other">dollars bahaméens</displayName>
				<symbol>DBo</symbol>
			</currency>
			<currency type="BTN">
				<displayName>ngultrum bouthanais</displayName>
				<displayName count="one">ngultrum bouthanais</displayName>
				<displayName count="other">ngultrums bouthanais</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>kyat birman</displayName>
				<displayName count="one">kyat birman</displayName>
				<displayName count="other">kyats birmans</displayName>
			</currency>
			<currency type="BWP">
				<displayName>pula botswanais</displayName>
				<displayName count="one">pula botswanais</displayName>
				<displayName count="other">pulas botswanais</displayName>
				<symbol>PBw</symbol>
			</currency>
			<currency type="BYB">
				<displayName>nouveau rouble biélorusse (1994-1999)</displayName>
				<displayName count="one">nouveau rouble biélorusse (1994–1999)</displayName>
				<displayName count="other">nouveaux roubles biélorusses (1994–1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>rouble biélorusse</displayName>
				<displayName count="one">rouble biélorusse</displayName>
				<displayName count="other">roubles biélorusses</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>dollar bélizéen</displayName>
				<displayName count="one">dollar bélizéen</displayName>
				<displayName count="other">dollars bélizéens</displayName>
				<symbol>$Bz</symbol>
			</currency>
			<currency type="CAD">
				<displayName>dollar canadien</displayName>
				<displayName count="one">dollar canadien</displayName>
				<displayName count="other">dollars canadiens</displayName>
				<symbol>$Ca</symbol>
			</currency>
			<currency type="CDF">
				<displayName>franc congolais</displayName>
				<displayName count="one">franc congolais</displayName>
				<displayName count="other">francs congolais</displayName>
				<symbol>FrCD</symbol>
			</currency>
			<currency type="CHE">
				<displayName>euro WIR</displayName>
				<displayName count="one">euro WIR</displayName>
				<displayName count="other">euros WIR</displayName>
			</currency>
			<currency type="CHF">
				<displayName>franc suisse</displayName>
				<displayName count="one">franc suisse</displayName>
				<displayName count="other">francs suisses</displayName>
				<symbol>sFr.</symbol>
			</currency>
			<currency type="CHW">
				<displayName>franc WIR</displayName>
				<displayName count="one">franc WIR</displayName>
				<displayName count="other">francs WIR</displayName>
			</currency>
			<currency type="CLF">
				<displayName>unité d’investissement chilienne</displayName>
				<displayName count="one">unité d’investissement chilienne</displayName>
				<displayName count="other">unités d’investissement chiliennes</displayName>
			</currency>
			<currency type="CLP">
				<displayName>peso chilien</displayName>
				<displayName count="one">peso chilien</displayName>
				<displayName count="other">pesos chiliens</displayName>
				<symbol>$Ch</symbol>
			</currency>
			<currency type="CNY">
				<displayName>yuan renminbi chinois</displayName>
				<displayName count="one">yuan renminbi chinois</displayName>
				<displayName count="other">yuans renminbi chinois</displayName>
				<symbol>Ұ</symbol>
			</currency>
			<currency type="COP">
				<displayName>peso colombien</displayName>
				<displayName count="one">peso colombien</displayName>
				<displayName count="other">peso colombien</displayName>
				<symbol>PsCo</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unité de valeur réelle colombienne</displayName>
				<displayName count="one">unité de valeur réelle colombienne</displayName>
				<displayName count="other">unités de valeur réelle colombiennes</displayName>
			</currency>
			<currency type="CRC">
				<displayName>colón costaricain</displayName>
				<displayName count="one">colón costaricain</displayName>
				<displayName count="other">colóns costaricains</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>dinar serbo-monténégrin</displayName>
				<displayName count="one">dinar serbo-monténégrin</displayName>
				<displayName count="other">dinars serbo-monténégrins</displayName>
				<symbol>DS</symbol>
			</currency>
			<currency type="CSK">
				<displayName>couronne forte tchécoslovaque</displayName>
				<displayName count="one">couronne forte tchécoslovaque</displayName>
				<displayName count="other">couronnes fortes tchécoslovaques</displayName>
				<symbol>KrCs</symbol>
			</currency>
			<currency type="CUP">
				<displayName>peso cubain</displayName>
				<displayName count="one">peso cubain</displayName>
				<displayName count="other">pesos cubains</displayName>
				<symbol>PsCu</symbol>
			</currency>
			<currency type="CVE">
				<displayName>escudo capverdien</displayName>
				<displayName count="one">escudo capverdien</displayName>
				<displayName count="other">escudos capverdiens</displayName>
				<symbol>EscCV</symbol>
			</currency>
			<currency type="CYP">
				<displayName>livre chypriote</displayName>
				<displayName count="one">livre chypriote</displayName>
				<displayName count="other">livres chypriotes</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>couronne tchèque</displayName>
				<displayName count="one">couronne tchèque</displayName>
				<displayName count="other">couronnes tchèques</displayName>
				<symbol>CrCz</symbol>
			</currency>
			<currency type="DDM">
				<displayName>mark est-allemand</displayName>
				<displayName count="one">mark est-allemand</displayName>
				<displayName count="other">marks est-allemands</displayName>
			</currency>
			<currency type="DEM">
				<displayName>mark allemand</displayName>
				<displayName count="one">mark allemand</displayName>
				<displayName count="other">marks allemands</displayName>
				<symbol>DM</symbol>
			</currency>
			<currency type="DJF">
				<displayName>franc djiboutien</displayName>
				<displayName count="one">franc djiboutien</displayName>
				<displayName count="other">francs djiboutiens</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>couronne danoise</displayName>
				<displayName count="one">couronne danoise</displayName>
				<displayName count="other">couronnes danoises</displayName>
				<symbol>CrD</symbol>
			</currency>
			<currency type="DOP">
				<displayName>peso dominicain</displayName>
				<displayName count="one">peso dominicain</displayName>
				<displayName count="other">pesos dominicains</displayName>
				<symbol>$RD</symbol>
			</currency>
			<currency type="DZD">
				<displayName>dinar algérien</displayName>
				<displayName count="one">dinar algérien</displayName>
				<displayName count="other">dinars algériens</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>sucre équatorien</displayName>
				<displayName count="one">sucre équatorien</displayName>
				<displayName count="other">sucres équatoriens</displayName>
				<symbol>SEq</symbol>
			</currency>
			<currency type="ECV">
				<displayName>unité de valeur constante équatoriale (UVC)</displayName>
				<displayName count="one">unité de valeur constante équatorienne (UVC)</displayName>
				<displayName count="other">unités de valeur constante équatoriennes (UVC)</displayName>
				<symbol>UvcÉq</symbol>
			</currency>
			<currency type="EEK">
				<displayName>couronne estonienne</displayName>
				<displayName count="one">couronne estonienne</displayName>
				<displayName count="other">couronnes estoniennes</displayName>
				<symbol>CrE</symbol>
			</currency>
			<currency type="EGP">
				<displayName>livre égyptienne</displayName>
				<displayName count="one">livre égyptienne</displayName>
				<displayName count="other">livres égyptiennes</displayName>
				<symbol>£Eg</symbol>
			</currency>
			<currency type="EQE">
				<displayName>ekwélé</displayName>
				<displayName count="one">ekue</displayName>
				<displayName count="other">ekwélés</displayName>
			</currency>
			<currency type="ERN">
				<displayName>nafka érythréen</displayName>
				<displayName count="one">nafka érythréen</displayName>
				<displayName count="other">nafkas érythréens</displayName>
			</currency>
			<currency type="ESA">
				<displayName>peseta espagnole (compte A)</displayName>
				<displayName count="one">peseta espagnole (compte A)</displayName>
				<displayName count="other">pesetas espagnoles (compte A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>peseta espagnole (compte convertible)</displayName>
				<displayName count="one">peseta espagnole (compte convertible)</displayName>
				<displayName count="other">pesetas espagnoles (compte convertible)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>peseta espagnole</displayName>
				<displayName count="one">peseta espagnole</displayName>
				<displayName count="other">pesetas espagnoles</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>birr éthiopien</displayName>
				<displayName count="one">birr éthiopien</displayName>
				<displayName count="other">birrs éthiopiens</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<displayName count="one">euro</displayName>
				<displayName count="other">euros</displayName>
			</currency>
			<currency type="FIM">
				<displayName>mark finlandais</displayName>
				<displayName count="one">mark finlandais</displayName>
				<displayName count="other">marks finlandais</displayName>
			</currency>
			<currency type="FJD">
				<displayName>dollar fidjien</displayName>
				<displayName count="one">dollar fidjien</displayName>
				<displayName count="other">dollars fidjien</displayName>
				<symbol>$F</symbol>
			</currency>
			<currency type="FKP">
				<displayName>livre des Falkland</displayName>
				<displayName count="one">livre des Falkland</displayName>
				<displayName count="other">livres des Falkland</displayName>
				<symbol>£Fk</symbol>
			</currency>
			<currency type="FRF">
				<displayName>franc français</displayName>
				<displayName count="one">franc français</displayName>
				<displayName count="other">francs français</displayName>
				<symbol>F</symbol>
			</currency>
			<currency type="GBP">
				<displayName>livre sterling</displayName>
				<displayName count="one">livre sterling</displayName>
				<displayName count="other">livres sterling</displayName>
				<symbol>£UK</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgian Kupon Larit</displayName>
				<displayName count="one">coupon de lari géorgien</displayName>
				<displayName count="other">coupons de lari géorgiens</displayName>
				<symbol>KlGe</symbol>
			</currency>
			<currency type="GEL">
				<displayName>lari géorgien</displayName>
				<displayName count="one">lari géorgien</displayName>
				<displayName count="other">laris géorgiens</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>cédi</displayName>
				<displayName count="one">cédi ghanéen (1967–2007)</displayName>
				<displayName count="other">cédis ghanéens (1967–2007)</displayName>
				<symbol>Cd</symbol>
			</currency>
			<currency type="GHS">
				<displayName>cédi ghanéen</displayName>
				<displayName count="one">cédi ghanéen</displayName>
				<displayName count="other">cédis ghanéens</displayName>
			</currency>
			<currency type="GIP">
				<displayName>livre de Gibraltar</displayName>
				<displayName count="one">livre de Gibraltar</displayName>
				<displayName count="other">livres de Gibraltar</displayName>
				<symbol>£Gi</symbol>
			</currency>
			<currency type="GMD">
				<displayName>dalasi gambien</displayName>
				<displayName count="one">dalasi gambien</displayName>
				<displayName count="other">dalasis gambiens</displayName>
				<symbol>Ds</symbol>
			</currency>
			<currency type="GNF">
				<displayName>franc guinéen</displayName>
				<displayName count="one">franc guinéen</displayName>
				<displayName count="other">francs guinéens</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>syli guinéen</displayName>
				<displayName count="one">syli guinéen</displayName>
				<displayName count="other">sylis guinéens</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ekwélé équatoguinéen</displayName>
				<displayName count="one">ekwélé équatoguinéen</displayName>
				<displayName count="other">ekwélés équatoguinéens</displayName>
			</currency>
			<currency type="GRD">
				<displayName>drachme grecque</displayName>
				<displayName count="one">drachme grecque</displayName>
				<displayName count="other">drachmes grecques</displayName>
				<symbol>Dr</symbol>
			</currency>
			<currency type="GTQ">
				<displayName>quetzal guatémaltèque</displayName>
				<displayName count="one">quetzal guatémaltèque</displayName>
				<displayName count="other">quetzals guatémaltèques</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>escudo de Guinée portugaise</displayName>
				<displayName count="one">escudo de Guinée portugaise</displayName>
				<displayName count="other">escudos de Guinée portugaise</displayName>
				<symbol>EscGW</symbol>
			</currency>
			<currency type="GWP">
				<displayName>peso bissau-guinéen</displayName>
				<displayName count="one">peso bissau-guinéen</displayName>
				<displayName count="other">pesos bissau-guinéens</displayName>
				<symbol>PsGW</symbol>
			</currency>
			<currency type="GYD">
				<displayName>dollar du Guyana</displayName>
				<displayName count="one">dollar guyanien</displayName>
				<displayName count="other">dollars guyaniens</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>dollar de Hong Kong</displayName>
				<displayName count="one">dollar de Hong Kong</displayName>
				<displayName count="other">dollars de Hong Kong</displayName>
				<symbol>$HK</symbol>
			</currency>
			<currency type="HNL">
				<displayName>lempira hondurien</displayName>
				<displayName count="one">lempira hondurien</displayName>
				<displayName count="other">lempiras honduriens</displayName>
				<symbol>LH</symbol>
			</currency>
			<currency type="HRD">
				<displayName>dinar croate</displayName>
				<displayName count="one">dinar croate</displayName>
				<displayName count="other">dinars croates</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kuna croate</displayName>
				<displayName count="one">kuna croate</displayName>
				<displayName count="other">kunas croates</displayName>
				<symbol>Ku</symbol>
			</currency>
			<currency type="HTG">
				<displayName>gourde haïtienne</displayName>
				<displayName count="one">gourde haïtienne</displayName>
				<displayName count="other">gourdes haïtiennes</displayName>
				<symbol>Gd</symbol>
			</currency>
			<currency type="HUF">
				<displayName>forint hongrois</displayName>
				<displayName count="one">forint hongrois</displayName>
				<displayName count="other">forints hongrois</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>roupie indonésienne</displayName>
				<displayName count="one">roupie indonésienne</displayName>
				<displayName count="other">roupies indonésiennes</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>livre irlandaise</displayName>
				<displayName count="one">livre irlandaise</displayName>
				<displayName count="other">livres irlandaises</displayName>
				<symbol>£IE</symbol>
			</currency>
			<currency type="ILP">
				<displayName>livre israélienne</displayName>
				<displayName count="one">livre israélienne</displayName>
				<displayName count="other">livres israéliennes</displayName>
				<symbol>£IL</symbol>
			</currency>
			<currency type="ILS">
				<displayName>nouveau shekel israélien</displayName>
				<displayName count="one">nouveau shekel israélien</displayName>
				<displayName count="other">nouveaux shekels israélien</displayName>
				<symbol>₪</symbol>
			</currency>
			<currency type="INR">
				<displayName>roupie indienne</displayName>
				<displayName count="one">roupie indienne</displayName>
				<displayName count="other">roupies indiennes</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>dinar irakien</displayName>
				<displayName count="one">dinar irakien</displayName>
				<displayName count="other">dinars irakiens</displayName>
				<symbol>DI</symbol>
			</currency>
			<currency type="IRR">
				<displayName>rial iranien</displayName>
				<displayName count="one">rial iranien</displayName>
				<displayName count="other">rials iraniens</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>couronne islandaise</displayName>
				<displayName count="one">couronne islandaise</displayName>
				<displayName count="other">couronnes islandaises</displayName>
				<symbol>KrIs</symbol>
			</currency>
			<currency type="ITL">
				<displayName>lire italienne</displayName>
				<displayName count="one">lire italienne</displayName>
				<displayName count="other">lires italiennes</displayName>
				<symbol>₤IT</symbol>
			</currency>
			<currency type="JMD">
				<displayName>dollar jamaïcain</displayName>
				<displayName count="one">dollar jamaïcain</displayName>
				<displayName count="other">dollars jamaïcains</displayName>
				<symbol>$JM</symbol>
			</currency>
			<currency type="JOD">
				<displayName>dinar jordanien</displayName>
				<displayName count="one">dinar jordanien</displayName>
				<displayName count="other">dinars jordaniens</displayName>
				<symbol>DJ</symbol>
			</currency>
			<currency type="JPY">
				<displayName>yen japonais</displayName>
				<displayName count="one">yen japonais</displayName>
				<displayName count="other">yens japonais</displayName>
				<symbol>¥JP</symbol>
			</currency>
			<currency type="KES">
				<displayName>shilling kényan</displayName>
				<displayName count="one">shilling kényan</displayName>
				<displayName count="other">shillings kényans</displayName>
				<symbol>ShK</symbol>
			</currency>
			<currency type="KGS">
				<displayName>som kirghize</displayName>
				<displayName count="one">som kirghize</displayName>
				<displayName count="other">soms kirghizes</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>riel cambodgien</displayName>
				<displayName count="one">riel cambodgien</displayName>
				<displayName count="other">riels cambodgiens</displayName>
				<symbol>RpC</symbol>
			</currency>
			<currency type="KMF">
				<displayName>franc comorien</displayName>
				<displayName count="one">franc comorien</displayName>
				<displayName count="other">francs comoriens</displayName>
				<symbol>FC</symbol>
			</currency>
			<currency type="KPW">
				<displayName>won nord-coréen</displayName>
				<displayName count="one">won nord-coréen</displayName>
				<displayName count="other">wons nord-coréens</displayName>
				<symbol>₩kp</symbol>
			</currency>
			<currency type="KRW">
				<displayName>won sud-coréen</displayName>
				<displayName count="one">won sud-coréen</displayName>
				<displayName count="other">wons sud-coréens</displayName>
				<symbol>₩kr</symbol>
			</currency>
			<currency type="KWD">
				<displayName>dinar koweïtien</displayName>
				<displayName count="one">dinar koweïtien</displayName>
				<displayName count="other">dinar koweïtiens</displayName>
				<symbol>DK</symbol>
			</currency>
			<currency type="KYD">
				<displayName>dollar des îles Caïmanes</displayName>
				<displayName count="one">dollar des îles Caïmanes</displayName>
				<displayName count="other">dollars des îles Caïmanes</displayName>
				<symbol>$KY</symbol>
			</currency>
			<currency type="KZT">
				<displayName>tenge kazakh</displayName>
				<displayName count="one">tenge kazakh</displayName>
				<displayName count="other">tenges kazakhs</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>kip loatien</displayName>
				<displayName count="one">kip loatien</displayName>
				<displayName count="other">kips loatiens</displayName>
				<symbol>KL</symbol>
			</currency>
			<currency type="LBP">
				<displayName>livre libanaise</displayName>
				<displayName count="one">livre libanaise</displayName>
				<displayName count="other">livres libanaises</displayName>
				<symbol>£LB</symbol>
			</currency>
			<currency type="LKR">
				<displayName>roupie srilankaise</displayName>
				<displayName count="one">roupie srilankaise</displayName>
				<displayName count="other">roupies srilankaises</displayName>
				<symbol>ReSL</symbol>
			</currency>
			<currency type="LRD">
				<displayName>dollar libérien</displayName>
				<displayName count="one">dollar libérien</displayName>
				<displayName count="other">dollars libériens</displayName>
				<symbol>$LR</symbol>
			</currency>
			<currency type="LSL">
				<displayName>loti lesothan</displayName>
				<displayName count="one">loti lesothan</displayName>
				<displayName count="other">maloti lesothans</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>maloti</displayName>
				<displayName count="one">LSM</displayName>
				<displayName count="other">lotis lesothans</displayName>
				<symbol>0≤M|1≤L|1&lt;M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>litas lituanien</displayName>
				<displayName count="one">litas lituanien</displayName>
				<displayName count="other">litas lituaniens</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LTT">
				<displayName>talonas lituanien</displayName>
				<displayName count="one">talonas lituanien</displayName>
				<displayName count="other">talonas lituaniens</displayName>
			</currency>
			<currency type="LUC">
				<displayName>franc convertible luxembourgeois</displayName>
				<displayName count="one">franc convertible luxembourgeois</displayName>
				<displayName count="other">francs convertibles luxembourgeois</displayName>
			</currency>
			<currency type="LUF">
				<displayName>franc luxembourgeois</displayName>
				<displayName count="one">franc luxembourgeois</displayName>
				<displayName count="other">francs luxembourgeois</displayName>
				<symbol>FL</symbol>
			</currency>
			<currency type="LUL">
				<displayName>franc financier luxembourgeois</displayName>
				<displayName count="one">franc financier luxembourgeois</displayName>
				<displayName count="other">francs financiers luxembourgeois</displayName>
			</currency>
			<currency type="LVL">
				<displayName>lats letton</displayName>
				<displayName count="one">lats letton</displayName>
				<displayName count="other">lats lettons</displayName>
				<symbol>l$</symbol>
			</currency>
			<currency type="LVR">
				<displayName>rouble letton</displayName>
				<displayName count="one">rouble letton</displayName>
				<displayName count="other">roubles lettons</displayName>
				<symbol>RbL</symbol>
			</currency>
			<currency type="LYD">
				<displayName>dinar lybien</displayName>
				<displayName count="one">dinar lybien</displayName>
				<displayName count="other">dinars lybien</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>dirham marocain</displayName>
				<displayName count="one">dirham marocain</displayName>
				<displayName count="other">dirhams marocains</displayName>
				<symbol>Dm</symbol>
			</currency>
			<currency type="MAF">
				<displayName>franc marocain</displayName>
				<displayName count="one">franc marocain</displayName>
				<displayName count="other">francs marocains</displayName>
				<symbol>FMa</symbol>
			</currency>
			<currency type="MDL">
				<displayName>leu moldave</displayName>
				<displayName count="one">leu moldave</displayName>
				<displayName count="other">leus moldaves</displayName>
				<symbol>LM</symbol>
			</currency>
			<currency type="MGA">
				<displayName>ariary malgache</displayName>
				<displayName count="one">ariary malgache</displayName>
				<displayName count="other">ariarys malgaches</displayName>
				<symbol>Ar</symbol>
			</currency>
			<currency type="MGF">
				<displayName>franc malgache</displayName>
				<displayName count="one">franc malgache</displayName>
				<displayName count="other">francs malgaches</displayName>
				<symbol>FMg</symbol>
			</currency>
			<currency type="MKD">
				<displayName>denar macédonien</displayName>
				<displayName count="one">denar macédonien</displayName>
				<displayName count="other">denars macédoniens</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>franc malien</displayName>
				<displayName count="one">franc malien</displayName>
				<displayName count="other">francs maliens</displayName>
				<symbol>Fml</symbol>
			</currency>
			<currency type="MMK">
				<displayName>kyat myanmarais</displayName>
				<displayName count="one">kyat myanmarais</displayName>
				<displayName count="other">kyats myanmarais</displayName>
				<symbol>KMm</symbol>
			</currency>
			<currency type="MNT">
				<displayName>tugrik mongol</displayName>
				<displayName count="one">tugrik mongol</displayName>
				<displayName count="other">tugriks mongols</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>pataca macanaise</displayName>
				<displayName count="one">pataca macanaise</displayName>
				<displayName count="other">patacas macanaises</displayName>
				<symbol>PMo</symbol>
			</currency>
			<currency type="MRO">
				<displayName>ouguiya mauritanien</displayName>
				<displayName count="one">ouguiya mauritanien</displayName>
				<displayName count="other">ouguiyas mauritaniens</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>lire maltaise</displayName>
				<displayName count="one">lire maltaise</displayName>
				<displayName count="other">lires maltaises</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>livre maltaise</displayName>
				<displayName count="one">livre maltaise</displayName>
				<displayName count="other">livres maltaises</displayName>
				<symbol>£Mt</symbol>
			</currency>
			<currency type="MUR">
				<displayName>roupie mauricienne</displayName>
				<displayName count="one">roupie mauricienne</displayName>
				<displayName count="other">roupies mauriciennes</displayName>
				<symbol>RpMu</symbol>
			</currency>
			<currency type="MVR">
				<displayName>rufiyaa maldivienne</displayName>
				<displayName count="one">rufiyaa maldivienne</displayName>
				<displayName count="other">rufiyaas maldiviennes</displayName>
				<symbol>rf</symbol>
			</currency>
			<currency type="MWK">
				<displayName>kwacha malawite</displayName>
				<displayName count="one">kwacha malawite</displayName>
				<displayName count="other">kwachas malawites</displayName>
				<symbol>KMw</symbol>
			</currency>
			<currency type="MXN">
				<displayName>peso mexicain</displayName>
				<displayName count="one">peso mexicain</displayName>
				<displayName count="other">pesos mexicains</displayName>
				<symbol>$Mex</symbol>
			</currency>
			<currency type="MXP">
				<displayName>peso d’argent mexicain (1861–1992)</displayName>
				<displayName count="one">peso d’argent mexicain (1861–1992)</displayName>
				<displayName count="other">pesos d’argent mexicains (1861–1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>unité de conversion mexicaine (UDI)</displayName>
				<displayName count="one">unité de conversion mexicaine (UDI)</displayName>
				<displayName count="other">unités de conversion mexicaines (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ringgit malais</displayName>
				<displayName count="one">ringgit malais</displayName>
				<displayName count="other">ringgits malais</displayName>
				<symbol>RMy</symbol>
			</currency>
			<currency type="MZE">
				<displayName>escudo mozambicain</displayName>
				<displayName count="one">escudo mozambicain</displayName>
				<displayName count="other">escudos mozambicains</displayName>
				<symbol>EscMz</symbol>
			</currency>
			<currency type="MZM">
				<displayName>métical</displayName>
				<displayName count="one">metical mozambicain (1980–2006)</displayName>
				<displayName count="other">meticais mozambicains (1980–2006)</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>metical mozambicain</displayName>
				<displayName count="one">metical mozambicain</displayName>
				<displayName count="other">meticais mozambicains</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>dollar namibien</displayName>
				<displayName count="one">dollar namibien</displayName>
				<displayName count="other">dollars namibiens</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>naira nigérian</displayName>
				<displayName count="one">naira nigérian</displayName>
				<displayName count="other">nairas nigérians</displayName>
			</currency>
			<currency type="NIC">
				<displayName>cordoba</displayName>
				<displayName count="one">córdoba nicaraguayen (1912–1988)</displayName>
				<displayName count="other">córdobas nicaraguayens (1912–1988)</displayName>
			</currency>
			<currency type="NIO">
				<displayName>córdoba oro nicaraguayen</displayName>
				<displayName count="one">córdoba oro nicaraguayen</displayName>
				<displayName count="other">córdobas oro nicaraguayens</displayName>
			</currency>
			<currency type="NLG">
				<displayName>florin néerlandais</displayName>
				<displayName count="one">florin néerlandais</displayName>
				<displayName count="other">florins néerlandais</displayName>
				<symbol>f.</symbol>
			</currency>
			<currency type="NOK">
				<displayName>couronne norvégienne</displayName>
				<displayName count="one">couronne norvégienne</displayName>
				<displayName count="other">couronnes norvégiennes</displayName>
				<symbol>KrNo</symbol>
			</currency>
			<currency type="NPR">
				<displayName>roupie népalaise</displayName>
				<displayName count="one">roupie népalaise</displayName>
				<displayName count="other">roupies népalaises</displayName>
				<symbol>RsNe</symbol>
			</currency>
			<currency type="NZD">
				<displayName>dollar néo-zélandais</displayName>
				<displayName count="one">dollar néo-zélandais</displayName>
				<displayName count="other">dollars néo-zélandais</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>rial omani</displayName>
				<displayName count="one">rial omani</displayName>
				<displayName count="other">rials omanis</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>balboa panaméen</displayName>
				<displayName count="one">balboa panaméen</displayName>
				<displayName count="other">balboas panaméens</displayName>
				<symbol>B/.</symbol>
			</currency>
			<currency type="PEI">
				<displayName>inti péruvien</displayName>
				<displayName count="one">inti péruvien</displayName>
				<displayName count="other">intis péruviens</displayName>
				<symbol>I/.</symbol>
			</currency>
			<currency type="PEN">
				<displayName>nouveau sol péruvien</displayName>
				<displayName count="one">nouveau sol péruvien</displayName>
				<displayName count="other">nouveaux sols péruviens</displayName>
				<symbol>S./</symbol>
			</currency>
			<currency type="PES">
				<displayName>sol péruvien</displayName>
				<displayName count="one">sol péruvien (1863–1985)</displayName>
				<displayName count="other">sols péruviens (1863–1985)</displayName>
			</currency>
			<currency type="PGK">
				<displayName>kina papouan-néo-guinéen</displayName>
				<displayName count="one">kina papouan-néo-guinéen</displayName>
				<displayName count="other">kinas papouan-néo-guinéens</displayName>
			</currency>
			<currency type="PHP">
				<displayName>peso philippin</displayName>
				<displayName count="one">peso philippin</displayName>
				<displayName count="other">pesos philippins</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>roupie pakistanaise</displayName>
				<displayName count="one">roupie pakistanaise</displayName>
				<displayName count="other">roupies pakistanaises</displayName>
				<symbol>RaP</symbol>
			</currency>
			<currency type="PLN">
				<displayName>zloty polonais</displayName>
				<displayName count="one">zloty polonais</displayName>
				<displayName count="other">zlotys polonais</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>zloty (1950-1995)</displayName>
				<displayName count="one">zloty polonais (1950–1995)</displayName>
				<displayName count="other">zlotys polonais (1950–1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>escudo portugais</displayName>
				<displayName count="one">escudo portugais</displayName>
				<displayName count="other">escudos portugais</displayName>
				<symbol>Esc</symbol>
			</currency>
			<currency type="PYG">
				<displayName>guaraní paraguayen</displayName>
				<displayName count="one">guaraní paraguayen</displayName>
				<displayName count="other">guaranís paraguayens</displayName>
			</currency>
			<currency type="QAR">
				<displayName>rial qatari</displayName>
				<displayName count="one">rial qatari</displayName>
				<displayName count="other">rials qataris</displayName>
				<symbol>RQ</symbol>
			</currency>
			<currency type="RHD">
				<displayName>dollar rhodésien</displayName>
				<displayName count="one">dollar rhodésien</displayName>
				<displayName count="other">dollars rhodésiens</displayName>
				<symbol>$RH</symbol>
			</currency>
			<currency type="ROL">
				<displayName>ancien leu roumain</displayName>
				<displayName count="one">leu roumain (1952–2005)</displayName>
				<displayName count="other">lei roumains (1952–2005)</displayName>
			</currency>
			<currency type="RON">
				<displayName>leu roumain</displayName>
				<displayName count="one">leu roumain</displayName>
				<displayName count="other">lei roumains</displayName>
			</currency>
			<currency type="RSD">
				<displayName>dinar serbe</displayName>
				<displayName count="one">dinar serbe</displayName>
				<displayName count="other">dinars serbes</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rouble russe</displayName>
				<displayName count="one">rouble russe</displayName>
				<displayName count="other">roubles russes</displayName>
				<symbol>Rub</symbol>
			</currency>
			<currency type="RUR">
				<displayName>rouble russe (1991–1998)</displayName>
				<displayName count="one">rouble russe (1991–1998)</displayName>
				<displayName count="other">roubles russes (1991–1998)</displayName>
				<symbol>RuR</symbol>
			</currency>
			<currency type="RWF">
				<displayName>franc rwandais</displayName>
				<displayName count="one">franc rwandais</displayName>
				<displayName count="other">francs rwandais</displayName>
				<symbol>FRw</symbol>
			</currency>
			<currency type="SAR">
				<displayName>rial saoudien</displayName>
				<displayName count="one">rial saoudien</displayName>
				<displayName count="other">rials saoudiens</displayName>
				<symbol>Rls</symbol>
			</currency>
			<currency type="SBD">
				<displayName>dollar des îles Salomon</displayName>
				<displayName count="one">dollar des îles Salomon</displayName>
				<displayName count="other">dollars des îles Salomon</displayName>
				<symbol>$SI</symbol>
			</currency>
			<currency type="SCR">
				<displayName>roupie des Seychelles</displayName>
				<displayName count="one">roupie des Seychelles</displayName>
				<displayName count="other">roupies des Seychelles</displayName>
				<symbol>RpS</symbol>
			</currency>
			<currency type="SDD">
				<displayName>dinar soudanais</displayName>
				<displayName count="one">dinar soudanais (1992–2007)</displayName>
				<displayName count="other">dinars soudanais (1992–2007)</displayName>
			</currency>
			<currency type="SDG">
				<displayName>livre soudanaise</displayName>
				<displayName count="one">livre soudanaise</displayName>
				<displayName count="other">livres soudanaises</displayName>
			</currency>
			<currency type="SDP">
				<displayName>livre soudanaise (1956–2007)</displayName>
				<displayName count="one">livre soudanaise (1956–2007)</displayName>
				<displayName count="other">livres soudanaises (1956–2007)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>couronne suédoise</displayName>
				<displayName count="one">couronne suédoise</displayName>
				<displayName count="other">couronnes suédoises</displayName>
				<symbol>KrSw</symbol>
			</currency>
			<currency type="SGD">
				<displayName>dollar de Singapour</displayName>
				<displayName count="one">dollar de Singapour</displayName>
				<displayName count="other">dollars de Singapour</displayName>
				<symbol>$SG</symbol>
			</currency>
			<currency type="SHP">
				<displayName>livre de Sainte-Hélène</displayName>
				<displayName count="one">livre de Sainte-Hélène</displayName>
				<displayName count="other">livres de Sainte-Hélène</displayName>
				<symbol>£SH</symbol>
			</currency>
			<currency type="SIT">
				<displayName>tolar slovène</displayName>
				<displayName count="one">tolar slovène</displayName>
				<displayName count="other">tolars slovènes</displayName>
				<symbol>TSi</symbol>
			</currency>
			<currency type="SKK">
				<displayName>couronne slovaque</displayName>
				<displayName count="one">couronne slovaque</displayName>
				<displayName count="other">couronnes slovaques</displayName>
				<symbol>KrSk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>leone sierra-léonais</displayName>
				<displayName count="one">leone sierra-léonais</displayName>
				<displayName count="other">leones sierra-léonais</displayName>
				<symbol>Ln</symbol>
			</currency>
			<currency type="SOS">
				<displayName>shilling somalien</displayName>
				<displayName count="one">shilling somalien</displayName>
				<displayName count="other">shillings somaliens</displayName>
				<symbol>ShSo</symbol>
			</currency>
			<currency type="SRD">
				<displayName>dollar surinamais</displayName>
				<displayName count="one">dollar surinamais</displayName>
				<displayName count="other">dollars surinamais</displayName>
				<symbol>$Sr</symbol>
			</currency>
			<currency type="SRG">
				<displayName>florin surinamais</displayName>
				<displayName count="one">florin surinamais</displayName>
				<displayName count="other">florins surinamais</displayName>
				<symbol>f.Sr</symbol>
			</currency>
			<currency type="STD">
				<displayName>dobra santoméen</displayName>
				<displayName count="one">dobra santoméen</displayName>
				<displayName count="other">dobras santoméens</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>rouble soviétique</displayName>
				<displayName count="one">rouble soviétique</displayName>
				<displayName count="other">roubles soviétiques</displayName>
				<symbol>RbS</symbol>
			</currency>
			<currency type="SVC">
				<displayName>colón salvadorien</displayName>
				<displayName count="one">colón salvadorien</displayName>
				<displayName count="other">colóns salvadoriens</displayName>
			</currency>
			<currency type="SYP">
				<displayName>livre syrienne</displayName>
				<displayName count="one">livre syrienne</displayName>
				<displayName count="other">livres syriennes</displayName>
				<symbol>£SY</symbol>
			</currency>
			<currency type="SZL">
				<displayName>lilangeni swazi</displayName>
				<displayName count="one">lilangeni swazi</displayName>
				<displayName count="other">emalangeni swazis</displayName>
				<symbol>Li</symbol>
			</currency>
			<currency type="THB">
				<displayName>baht thaïlandais</displayName>
				<displayName count="one">baht thaïlandais</displayName>
				<displayName count="other">baths thaïlandais</displayName>
				<symbol>B.</symbol>
			</currency>
			<currency type="TJR">
				<displayName>rouble tadjik</displayName>
				<displayName count="one">rouble tadjik</displayName>
				<displayName count="other">roubles tadjiks</displayName>
			</currency>
			<currency type="TJS">
				<displayName>somoni tadjik</displayName>
				<displayName count="one">somoni tadjik</displayName>
				<displayName count="other">somonis tadjiks</displayName>
			</currency>
			<currency type="TMM">
				<displayName>manat turkmène</displayName>
				<displayName count="one">manat turkmène</displayName>
				<displayName count="other">manats turkmènes</displayName>
			</currency>
			<currency type="TND">
				<displayName>dinar tunisien</displayName>
				<displayName count="one">dinar tunisien</displayName>
				<displayName count="other">dinars tunisiens</displayName>
				<symbol>DT</symbol>
			</currency>
			<currency type="TOP">
				<displayName>pa’anga tongan</displayName>
				<displayName count="one">pa’anga tongan</displayName>
				<displayName count="other">pa’angas tongans</displayName>
				<symbol>$To</symbol>
			</currency>
			<currency type="TPE">
				<displayName>escudo timorais</displayName>
				<displayName count="one">escudo timorais</displayName>
				<displayName count="other">escudos timorais</displayName>
			</currency>
			<currency type="TRL">
				<displayName>livre turque</displayName>
				<displayName count="one">livre turque (1844–2005)</displayName>
				<displayName count="other">livres turques</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>nouvelle livre turque</displayName>
				<displayName count="one">nouvelle livre turque</displayName>
				<displayName count="other">nouvelles livres turques</displayName>
				<symbol>YTL</symbol>
			</currency>
			<currency type="TTD">
				<displayName>dollar trinidadien</displayName>
				<displayName count="one">dollar trinidadien</displayName>
				<displayName count="other">dollars trinidadiens</displayName>
				<symbol>$TT</symbol>
			</currency>
			<currency type="TWD">
				<displayName>nouveau dollar taïwanais</displayName>
				<displayName count="one">nouveau dollar taïwanais</displayName>
				<displayName count="other">nouveaux dollars taïwanais</displayName>
				<symbol>N$T</symbol>
			</currency>
			<currency type="TZS">
				<displayName>shilling tanzanien</displayName>
				<displayName count="one">shilling tanzanien</displayName>
				<displayName count="other">shillings tanzaniens</displayName>
				<symbol>ShT</symbol>
			</currency>
			<currency type="UAH">
				<displayName>hryvnia ukrainienne</displayName>
				<displayName count="one">hryvnia ukrainienne</displayName>
				<displayName count="other">hryvnias ukrainiennes</displayName>
				<symbol>hrn</symbol>
			</currency>
			<currency type="UAK">
				<displayName>karbovanetz</displayName>
				<displayName count="one">karbovanets ukrainien (1992–1996)</displayName>
				<displayName count="other">karbovanets ukrainiens (1992–1996)</displayName>
			</currency>
			<currency type="UGS">
				<displayName>shilling ougandais (1966-1987)</displayName>
				<displayName count="one">shilling ougandais (1966–1987)</displayName>
				<displayName count="other">shillings ougandais (1966–1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>shilling ougandais</displayName>
				<displayName count="one">shilling ougandais</displayName>
				<displayName count="other">shillings ougandais</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>dollar des États-Unis</displayName>
				<displayName count="one">dollar des États-Unis</displayName>
				<displayName count="other">dollars des États-Unis</displayName>
				<symbol>$US</symbol>
			</currency>
			<currency type="USN">
				<displayName>dollar des Etats-Unis (jour suivant)</displayName>
				<displayName count="one">dollar des États-Unis (jour suivant)</displayName>
				<displayName count="other">dollars des États-Unis (jour suivant)</displayName>
			</currency>
			<currency type="USS">
				<displayName>dollar des Etats-Unis (jour même)</displayName>
				<displayName count="one">dollar des États-Unis (jour même)</displayName>
				<displayName count="other">dollars des États-Unis (jour même)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>peso uruguayen (unités indexées)</displayName>
				<displayName count="one">peso uruguayen (unités indexées)</displayName>
				<displayName count="other">pesos uruguayen (unités indexées)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>peso uruguayen (1975–1993)</displayName>
				<displayName count="one">peso uruguayen (1975–1993)</displayName>
				<displayName count="other">pesos uruguayens (1975–1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>peso uruguayen</displayName>
				<displayName count="one">peso uruguayen</displayName>
				<displayName count="other">pesos uruguayens</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>sum ouzbek</displayName>
				<displayName count="one">sum ouzbek</displayName>
				<displayName count="other">sums ouzbeks</displayName>
				<symbol>sum</symbol>
			</currency>
			<currency type="VEB">
				<displayName>bolivar</displayName>
				<displayName count="one">bolívar vénézuélien (1879–2008)</displayName>
				<displayName count="other">bolívars vénézuéliens (1879–2008)</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>bolivar fuerte vénézuélien</displayName>
				<displayName count="one">bolivar fuerte vénézuélien</displayName>
				<displayName count="other">bolivar fuertes vénézuélien</displayName>
			</currency>
			<currency type="VND">
				<displayName>dông vietnamien</displayName>
				<displayName count="one">dông vietnamien</displayName>
				<displayName count="other">dôngs vietnamiens</displayName>
				<symbol>₫</symbol>
			</currency>
			<currency type="VUV">
				<displayName>vatu vanuatuan</displayName>
				<displayName count="one">vatu vanuatuan</displayName>
				<displayName count="other">vatus vanuatuans</displayName>
			</currency>
			<currency type="WST">
				<displayName>tala samoan</displayName>
				<displayName count="one">tala samoan</displayName>
				<displayName count="other">talas samoans</displayName>
			</currency>
			<currency type="XAF">
				<displayName>franc CFA (BEAC)</displayName>
				<displayName count="one">franc CFA (BEAC)</displayName>
				<displayName count="other">francs CFA (BEAC)</displayName>
			</currency>
			<currency type="XAG">
				<displayName>argent</displayName>
				<displayName count="one">once troy d’argent</displayName>
				<displayName count="other">onces troy d’argent</displayName>
			</currency>
			<currency type="XAU">
				<displayName>or</displayName>
				<displayName count="one">once troy d’or</displayName>
				<displayName count="other">onces troy d’or</displayName>
			</currency>
			<currency type="XBA">
				<displayName>unité européenne composée</displayName>
				<displayName count="one">unité composée européenne (EURCO)</displayName>
				<displayName count="other">unités composées européennes (EURCO)</displayName>
			</currency>
			<currency type="XBB">
				<displayName>unité monétaire européenne</displayName>
				<displayName count="one">unité monétaire européenne (UME-6)</displayName>
				<displayName count="other">unités monétaires européennes (UME-6)</displayName>
			</currency>
			<currency type="XBC">
				<displayName>unité de compte européenne (XBC)</displayName>
				<displayName count="one">unité de compte 9 européenne (UEC-9)</displayName>
				<displayName count="other">unités de compte 9 européennes (UEC-9)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>unité de compte européenne (XBD)</displayName>
				<displayName count="one">unité de compte 17 européenne (UEC-17)</displayName>
				<displayName count="other">unités de compte 17 européennes (UEC-17)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>dollar des Caraïbes orientales</displayName>
				<displayName count="one">dollar des Caraïbes orientales</displayName>
				<displayName count="other">dollars des Caraïbes orientales</displayName>
				<symbol>$EC</symbol>
			</currency>
			<currency type="XDR">
				<displayName>droit de tirage spécial</displayName>
				<displayName count="one">droit de tirage spécial</displayName>
				<displayName count="other">droits de tirage spéciaux</displayName>
			</currency>
			<currency type="XEU">
				<displayName>unité de compte européenne (ECU)</displayName>
				<displayName count="one">unité de compte européenne (ECU)</displayName>
				<displayName count="other">unités de compte européennes (ECU)</displayName>
			</currency>
			<currency type="XFO">
				<displayName>franc or</displayName>
				<displayName count="one">franc or</displayName>
				<displayName count="other">francs or</displayName>
			</currency>
			<currency type="XFU">
				<displayName>franc UIC</displayName>
				<displayName count="one">franc UIC</displayName>
				<displayName count="other">francs UIC</displayName>
			</currency>
			<currency type="XOF">
				<displayName>franc CFA (BCEAO)</displayName>
				<displayName count="one">franc CFA (BCEAO)</displayName>
				<displayName count="other">francs CFA (BCEAO)</displayName>
			</currency>
			<currency type="XPD">
				<displayName>palladium</displayName>
				<displayName count="one">once troy de palladium</displayName>
				<displayName count="other">onces troy de palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>franc CFP</displayName>
				<displayName count="one">franc CFP</displayName>
				<displayName count="other">francs CFP</displayName>
				<symbol>FCFP</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platine</displayName>
				<displayName count="one">once troy de platine</displayName>
				<displayName count="other">onces troy de platine</displayName>
			</currency>
			<currency type="XRE">
				<displayName>type de fonds RINET</displayName>
				<displayName count="one">type de fonds RINET</displayName>
				<displayName count="other">types de fonds RINET</displayName>
			</currency>
			<currency type="XTS">
				<displayName>(devise de test)</displayName>
				<displayName count="one">(devise de test)</displayName>
				<displayName count="other">(devise de test)</displayName>
			</currency>
			<currency type="XXX">
				<displayName>devise inconnue ou non valide</displayName>
				<displayName count="one">devise inconnue ou non valide</displayName>
				<displayName count="other">devise inconnue ou non valide</displayName>
			</currency>
			<currency type="YDD">
				<displayName>dinar du Yémen</displayName>
				<displayName count="one">dinar nord-yéménite</displayName>
				<displayName count="other">dinars nord-yéménites</displayName>
			</currency>
			<currency type="YER">
				<displayName>rial yéménite</displayName>
				<displayName count="one">rial yéménite</displayName>
				<displayName count="other">rials yéménites</displayName>
				<symbol>RY</symbol>
			</currency>
			<currency type="YUD">
				<displayName>nouveau dinar yougoslave</displayName>
				<displayName count="one">dinar fort yougoslave (1966–1989)</displayName>
				<displayName count="other">dinars forts yougoslaves (1966–1989)</displayName>
			</currency>
			<currency type="YUM">
				<displayName>dinar yougoslave Noviy</displayName>
				<displayName count="one">nouveau dinar yougoslave (1994–2003)</displayName>
				<displayName count="other">nouveaux dinars yougoslaves (1994–2003)</displayName>
			</currency>
			<currency type="YUN">
				<displayName>dinar yougoslave convertible</displayName>
				<displayName count="one">dinar convertible yougoslave (1990–1992)</displayName>
				<displayName count="other">dinars convertibles yougoslaves (1990–1992)</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>rand sud-africain (financier)</displayName>
				<displayName count="one">rand sud-africain (financier)</displayName>
				<displayName count="other">rands sud-africains (financiers)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>rand sud-africain</displayName>
				<displayName count="one">rand sud-africain</displayName>
				<displayName count="other">rands sud-africains</displayName>
				<symbol>R.</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>kwacha zambien</displayName>
				<displayName count="one">kwacha zambien</displayName>
				<displayName count="other">kwachas zambiens</displayName>
				<symbol>KwZ</symbol>
			</currency>
			<currency type="ZRN">
				<displayName>nouveau zaïre zaïrien</displayName>
				<displayName count="one">nouveau zaïre zaïrien</displayName>
				<displayName count="other">nouveaux zaïres zaïriens</displayName>
				<symbol>NZ</symbol>
			</currency>
			<currency type="ZRZ">
				<displayName>zaïre zaïrois</displayName>
				<displayName count="one">zaïre zaïrois</displayName>
				<displayName count="other">zaïres zaïrois</displayName>
				<symbol>Z</symbol>
			</currency>
			<currency type="ZWD">
				<displayName>dollar zimbabwéen</displayName>
				<displayName count="one">dollar zimbabwéen</displayName>
				<displayName count="other">dollars zimbabwéens</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} jour</unitPattern>
			<unitPattern count="other">{0} jours</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} heure</unitPattern>
			<unitPattern count="other">{0} heures</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minute</unitPattern>
			<unitPattern count="other">{0} minutes</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mois</unitPattern>
			<unitPattern count="other">{0} mois</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} seconde</unitPattern>
			<unitPattern count="other">{0} secondes</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} semaine</unitPattern>
			<unitPattern count="other">{0} semaines</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} an</unitPattern>
			<unitPattern count="other">{0} années</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>oui:o</yesstr>
			<nostr>non:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�a##Locale/Data/fi_FI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="fi"/>
		<territory type="FI"/>
	</identity>
</ldml>
PKpG[�E##Locale/Data/ja_JP.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ja"/>
		<territory type="JP"/>
	</identity>
</ldml>
PKpG[�������Locale/Data/bg.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.102 $"/>
		<generation date="$Date: 2008/06/15 18:49:20 $"/>
		<language type="bg"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">афар</language>
			<language type="ab">абхазски</language>
			<language type="ace">ачински</language>
			<language type="ach">аколи</language>
			<language type="ada">адангме</language>
			<language type="ady">адиге</language>
			<language type="ae">авестски</language>
			<language type="af">африканс</language>
			<language type="afa">афро-азиатски</language>
			<language type="afh">африхили</language>
			<language type="ain">айну</language>
			<language type="ak">акан</language>
			<language type="akk">акадски</language>
			<language type="ale">алеутски</language>
			<language type="alg">алгонквин</language>
			<language type="alt">южноалтайски</language>
			<language type="am">амхарски</language>
			<language type="an">арагонски</language>
			<language type="ang">староанглийски (ca.450-1100)</language>
			<language type="apa">езици на апахите</language>
			<language type="ar">арабски</language>
			<language type="arc">арамейски</language>
			<language type="arn">мапуче</language>
			<language type="arp">арапахо</language>
			<language type="art">изкуствен</language>
			<language type="arw">аравак</language>
			<language type="as">асамски</language>
			<language type="ast">астурски</language>
			<language type="ath">атабаски езици</language>
			<language type="aus">австралийски езици</language>
			<language type="av">аварски</language>
			<language type="awa">авади</language>
			<language type="ay">аймара</language>
			<language type="az">азърбайджански</language>
			<language type="ba">башкирски</language>
			<language type="bad">банда</language>
			<language type="bai">бамикеле</language>
			<language type="bal">балучи</language>
			<language type="ban">балинейски</language>
			<language type="bas">баса</language>
			<language type="bat">прибалтийски (други)</language>
			<language type="be">беларуски</language>
			<language type="bej">бея</language>
			<language type="bem">бемба</language>
			<language type="ber">берберски</language>
			<language type="bg">български</language>
			<language type="bh">бихари</language>
			<language type="bho">божпури</language>
			<language type="bi">бислама</language>
			<language type="bik">биколски</language>
			<language type="bin">бини</language>
			<language type="bla">сиксика</language>
			<language type="bm">бамбара</language>
			<language type="bn">бенгалски</language>
			<language type="bnt">банту</language>
			<language type="bo">тибетски</language>
			<language type="br">бретонски</language>
			<language type="bra">брадж</language>
			<language type="bs">босненски</language>
			<language type="btk">батак</language>
			<language type="bua">бурятски</language>
			<language type="bug">бугински</language>
			<language type="byn">биленски</language>
			<language type="ca">каталонски</language>
			<language type="cad">каддо</language>
			<language type="cai">централноамерикански индиански</language>
			<language type="car">карибски</language>
			<language type="cau">кавказски</language>
			<language type="ce">чеченски</language>
			<language type="ceb">себуано</language>
			<language type="cel">келтски</language>
			<language type="ch">чаморо</language>
			<language type="chb">чибча</language>
			<language type="chg">чагатай</language>
			<language type="chk">чуук</language>
			<language type="chm">марийски</language>
			<language type="chn">жаргон чинуук</language>
			<language type="cho">чокто</language>
			<language type="chp">Чиипувски</language>
			<language type="chr">чероки</language>
			<language type="chy">чейенски</language>
			<language type="cmc">чамски</language>
			<language type="co">корсикански</language>
			<language type="cop">коптски</language>
			<language type="cpe">креолски, от английски (други)</language>
			<language type="cpf">креолски, от френски (други)</language>
			<language type="cpp">креолски, от португалски (други)</language>
			<language type="cr">крии</language>
			<language type="crh">кримскотатарски</language>
			<language type="crp">креолски (други)</language>
			<language type="cs">чешки</language>
			<language type="csb">кашубски</language>
			<language type="cu">църковно славянски</language>
			<language type="cus">кушитски езици</language>
			<language type="cv">чувашки</language>
			<language type="cy">уелски</language>
			<language type="da">датски</language>
			<language type="dak">дакотски</language>
			<language type="dar">даргва</language>
			<language type="day">Даякски</language>
			<language type="de">немски</language>
			<language type="del">Делауер</language>
			<language type="den">славянски</language>
			<language type="dgr">догриб</language>
			<language type="din">Динка</language>
			<language type="doi">догри</language>
			<language type="dra">дравидски езици</language>
			<language type="dsb">Долносербски</language>
			<language type="dua">дуала</language>
			<language type="dum">холандски, средновековен (1050-1350)</language>
			<language type="dv">дивехи</language>
			<language type="dyu">диула</language>
			<language type="dz">дзонха</language>
			<language type="ee">еуе</language>
			<language type="efi">ефик</language>
			<language type="egy">египетски</language>
			<language type="eka">екажук</language>
			<language type="el">гръцки</language>
			<language type="elx">еламитски</language>
			<language type="en">английски</language>
			<language type="en_AU">австралийски английски</language>
			<language type="en_GB">британски английски</language>
			<language type="en_US">американски английски</language>
			<language type="enm">английски (1100-1500)</language>
			<language type="eo">есперанто</language>
			<language type="es">испански</language>
			<language type="et">естонски</language>
			<language type="eu">баски</language>
			<language type="ewo">евондо</language>
			<language type="fa">персийски</language>
			<language type="fan">Фанг</language>
			<language type="fat">Фанти</language>
			<language type="ff">Фула</language>
			<language type="fi">фински</language>
			<language type="fil">Филипински</language>
			<language type="fiu">угрофински</language>
			<language type="fj">Фиджийски</language>
			<language type="fo">Фарьорски</language>
			<language type="fon">Фон</language>
			<language type="fr">френски</language>
			<language type="frm">френски (1400-1600)</language>
			<language type="fro">френски (842-1400)</language>
			<language type="fur">Фриулиански</language>
			<language type="fy">фризийски</language>
			<language type="ga">ирландски</language>
			<language type="gaa">га</language>
			<language type="gay">гайо</language>
			<language type="gba">гбая</language>
			<language type="gd">шотландски галски</language>
			<language type="gem">германски (други)</language>
			<language type="gez">Гииз</language>
			<language type="gil">Гилбертски</language>
			<language type="gl">галисийски</language>
			<language type="gmh">немски (1050-1500)</language>
			<language type="gn">гуарани</language>
			<language type="goh">старовисоконемски</language>
			<language type="gon">гонди</language>
			<language type="gor">горонтало</language>
			<language type="got">готически</language>
			<language type="grb">гребо</language>
			<language type="grc">древногръцки</language>
			<language type="gu">гуджарати</language>
			<language type="gv">манкски</language>
			<language type="ha">хауза</language>
			<language type="hai">хайда</language>
			<language type="haw">хавайски</language>
			<language type="he">иврит</language>
			<language type="hi">хинди</language>
			<language type="hil">хилигайнон</language>
			<language type="him">химачали</language>
			<language type="hit">хитски</language>
			<language type="hmn">хмонг</language>
			<language type="ho">хири моту</language>
			<language type="hr">хърватски</language>
			<language type="hsb">Горносербски</language>
			<language type="ht">хаитянски</language>
			<language type="hu">унгарски</language>
			<language type="hup">хупа</language>
			<language type="hy">арменски</language>
			<language type="hz">хереро</language>
			<language type="ia">интерлингва</language>
			<language type="iba">ибан</language>
			<language type="id">индонезийски</language>
			<language type="ie">оксидентал</language>
			<language type="ig">игбо</language>
			<language type="ijo">иджо</language>
			<language type="ik">инупиак</language>
			<language type="ilo">илоко</language>
			<language type="inc">индийски (други)</language>
			<language type="ine">индо-европейски (други)</language>
			<language type="inh">ингушетски</language>
			<language type="io">идо</language>
			<language type="ira">ирански</language>
			<language type="iro">Ироквиански езици</language>
			<language type="is">исландски</language>
			<language type="it">италиански</language>
			<language type="iu">инуктитут</language>
			<language type="ja">японски</language>
			<language type="jbo">лоджбан</language>
			<language type="jpr">еврейско-персийски</language>
			<language type="jrb">еврейско-арабски</language>
			<language type="jv">явански</language>
			<language type="ka">грузински</language>
			<language type="kaa">Каракалпашки</language>
			<language type="kab">кабилски</language>
			<language type="kac">Качински</language>
			<language type="kam">камба</language>
			<language type="kar">каренски</language>
			<language type="kaw">кави</language>
			<language type="kbd">кабардиан</language>
			<language type="kg">конгоански</language>
			<language type="kha">кхаси</language>
			<language type="khi">езици коисан</language>
			<language type="kho">котски</language>
			<language type="ki">кикуйу</language>
			<language type="kj">Кваняма</language>
			<language type="kk">казахски</language>
			<language type="kl">Гренландски ескимоски</language>
			<language type="km">кхмерски</language>
			<language type="kmb">кимбунду</language>
			<language type="kn">каннада</language>
			<language type="ko">корейски</language>
			<language type="kok">конкани</language>
			<language type="kpe">кпеле</language>
			<language type="kr">канури</language>
			<language type="krc">карачай-балкарски</language>
			<language type="kro">Кру</language>
			<language type="kru">Курук</language>
			<language type="ks">кашмирски</language>
			<language type="ku">кюрдски</language>
			<language type="kum">кумикски</language>
			<language type="kut">кутенай</language>
			<language type="kv">Коми</language>
			<language type="kw">корнуолски келтски</language>
			<language type="ky">киргизски</language>
			<language type="la">латински</language>
			<language type="lb">люксембургски</language>
			<language type="ln">лингала</language>
			<language type="lo">лаоски</language>
			<language type="lt">литовски</language>
			<language type="lv">латвийски</language>
			<language type="mas">масайски</language>
			<language type="mg">малгашки</language>
			<language type="mga">ирландски (900-1200)</language>
			<language type="mi">маорски</language>
			<language type="mis">други езици</language>
			<language type="mk">македонски</language>
			<language type="ml">малаялам</language>
			<language type="mn">монголски</language>
			<language type="mo">молдовски</language>
			<language type="mr">маратхи</language>
			<language type="ms">малайски</language>
			<language type="mt">малтийски</language>
			<language type="my">бирмански</language>
			<language type="nai">северноамерикански индиански (други)</language>
			<language type="nap">неаполитански</language>
			<language type="ne">непалски</language>
			<language type="nl">холандски</language>
			<language type="nl_BE">фламандски</language>
			<language type="nn">съвременен норвежки</language>
			<language type="no">норвежки</language>
			<language type="nub">нубийски езици</language>
			<language type="ny">чинянджа</language>
			<language type="oc">окситански</language>
			<language type="or">ория</language>
			<language type="os">осетски</language>
			<language type="ota">турски, отомански (1500-1928)</language>
			<language type="oto">старотурски езици</language>
			<language type="pa">пенджабски</language>
			<language type="paa">папуаски (други)</language>
			<language type="peo">староперсийски (600-400 пр.н.е.)</language>
			<language type="phi">филипински (други)</language>
			<language type="phn">финикийски</language>
			<language type="pl">полски</language>
			<language type="pro">провансалски</language>
			<language type="ps">пущу</language>
			<language type="pt">португалски</language>
			<language type="qu">кечуа</language>
			<language type="raj">раджастански</language>
			<language type="rm">реторомански</language>
			<language type="rn">рунди</language>
			<language type="ro">румънски</language>
			<language type="roa">романски (други)</language>
			<language type="rom">цигански език</language>
			<language type="ru">руски</language>
			<language type="rw">киняруанда</language>
			<language type="sa">санкскритски</language>
			<language type="sah">якутски</language>
			<language type="sai">южноамерикански индиански (други)</language>
			<language type="sc">сардински</language>
			<language type="scn">сицилиански</language>
			<language type="sd">синдхи</language>
			<language type="sem">семитски (други)</language>
			<language type="sg">санго</language>
			<language type="sga">староирландски (до 900)</language>
			<language type="sgn">жестомимичен език</language>
			<language type="sh">сърбохърватски</language>
			<language type="si">синхалски</language>
			<language type="sk">словашки</language>
			<language type="sl">словенски</language>
			<language type="sla">славянски (други)</language>
			<language type="sm">самоански</language>
			<language type="so">сомалийски</language>
			<language type="sq">албански</language>
			<language type="sr">сръбски</language>
			<language type="ss">суази</language>
			<language type="st">сесуто</language>
			<language type="su">сундански</language>
			<language type="sux">шумерски</language>
			<language type="sv">шведски</language>
			<language type="sw">суахили</language>
			<language type="syr">сирийски</language>
			<language type="ta">тамилски</language>
			<language type="tai">тайландски (други)</language>
			<language type="te">телугу</language>
			<language type="tg">таджикски</language>
			<language type="th">таи</language>
			<language type="ti">тигриня</language>
			<language type="tk">туркменски</language>
			<language type="tl">тагалог</language>
			<language type="tlh">клингон</language>
			<language type="tr">турски</language>
			<language type="tt">татарски</language>
			<language type="tut">алтайски</language>
			<language type="tw">туи</language>
			<language type="ty">таитянски</language>
			<language type="ug">уйгурски</language>
			<language type="uk">украински</language>
			<language type="und">неопределен</language>
			<language type="ur">урду</language>
			<language type="uz">узбекски</language>
			<language type="vi">виетнамски</language>
			<language type="wo">волоф</language>
			<language type="xh">ксоса</language>
			<language type="yi">идиш</language>
			<language type="zh">китайски</language>
			<language type="zh_Hans">китайски (опростен)</language>
			<language type="zh_Hant">китайски (традиционен)</language>
			<language type="zu">зулуски</language>
		</languages>
		<scripts>
			<script type="Arab">Арабска</script>
			<script type="Armn">Арменска</script>
			<script type="Bali">Балийски</script>
			<script type="Batk">Батакски</script>
			<script type="Beng">Бенгалска</script>
			<script type="Bopo">Бопомофо</script>
			<script type="Brah">Брахми</script>
			<script type="Brai">Брайлова</script>
			<script type="Bugi">Бугински</script>
			<script type="Buhd">Бухид</script>
			<script type="Cher">Чероки</script>
			<script type="Copt">Коптска</script>
			<script type="Cprt">Кипърски</script>
			<script type="Cyrl">Кирилица</script>
			<script type="Cyrs">Кирилица (Стар църковно-славянски вариант)</script>
			<script type="Deva">Деванагари</script>
			<script type="Egyd">Египетско демотично писмо</script>
			<script type="Egyh">Египетско йератично писмо</script>
			<script type="Egyp">Египетски йероглифи</script>
			<script type="Ethi">Етиопска</script>
			<script type="Geor">Грузинска</script>
			<script type="Glag">Глаголически</script>
			<script type="Goth">Готическа</script>
			<script type="Grek">Гръцка</script>
			<script type="Gujr">Гуджарати</script>
			<script type="Hang">Корейска</script>
			<script type="Hani">Китайска</script>
			<script type="Hans">Опростен китайски</script>
			<script type="Hant">Традиционен китайски</script>
			<script type="Hebr">Иврит</script>
			<script type="Hira">Японски хирагана</script>
			<script type="Hrkt">Катакана или Хирагана</script>
			<script type="Hung">Староунгарски</script>
			<script type="Java">Явански</script>
			<script type="Jpan">Японска</script>
			<script type="Kana">Японски катакана</script>
			<script type="Khmr">Кхмерска</script>
			<script type="Laoo">Лаоска</script>
			<script type="Latn">Латинска</script>
			<script type="Maya">Йероглифи на Маите</script>
			<script type="Mong">Монголска</script>
			<script type="Mymr">Бирманска</script>
			<script type="Phnx">Финикийска</script>
			<script type="Roro">Ронго-ронго</script>
			<script type="Runr">Руническа</script>
			<script type="Taml">Тамилска</script>
			<script type="Telu">Телугу</script>
			<script type="Tglg">Тагалог</script>
			<script type="Thai">Таи</script>
			<script type="Tibt">Тибетска</script>
			<script type="Xpeo">Староперсийски</script>
			<script type="Xsux">Шумеро-акадски клинопис</script>
			<script type="Zxxx">Без писменост</script>
			<script type="Zyyy">Обща</script>
			<script type="Zzzz">Непозната или недействителна писменост</script>
		</scripts>
		<territories>
			<territory type="001">Земята</territory>
			<territory type="002">Африка</territory>
			<territory type="003">Северноамерикански континент</territory>
			<territory type="005">Южна Америка</territory>
			<territory type="009">Океания</territory>
			<territory type="011">Западна Афирка</territory>
			<territory type="013">Централна Америка</territory>
			<territory type="014">Източна Африка</territory>
			<territory type="015">Северна Африка</territory>
			<territory type="017">Централна Африка</territory>
			<territory type="018">Южноафрикански регион</territory>
			<territory type="019">Америка</territory>
			<territory type="021">Северна Америка</territory>
			<territory type="029">Карибски о-ви</territory>
			<territory type="030">Източна Азия</territory>
			<territory type="034">Южна Азия</territory>
			<territory type="035">Югоизточна Азия</territory>
			<territory type="039">Южна Европа</territory>
			<territory type="053">Австралия и Нова Зеландия</territory>
			<territory type="054">Меланезия</territory>
			<territory type="057">Микронезия</territory>
			<territory type="061">Полинезия</territory>
			<territory type="062">Южна Азия [062]</territory>
			<territory type="142">Азия</territory>
			<territory type="143">Централна Азия</territory>
			<territory type="145">Западна Азия</territory>
			<territory type="150">Европа</territory>
			<territory type="151">Източна Европа</territory>
			<territory type="154">Северна Европа</territory>
			<territory type="155">Западна Европа</territory>
			<territory type="172">Общност на независимите държави</territory>
			<territory type="419">Латинска Америка и Карибски басейн</territory>
			<territory type="830">Нормандски о-ви</territory>
			<territory type="AD">Андора</territory>
			<territory type="AE">Обединени Арабски Емирства</territory>
			<territory type="AF">Афганистан</territory>
			<territory type="AG">Антигуа и Барбуда</territory>
			<territory type="AI">Ангуила</territory>
			<territory type="AL">Албания</territory>
			<territory type="AM">Армения</territory>
			<territory type="AN">Холандски Антили</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктика</territory>
			<territory type="AR">Аржентина</territory>
			<territory type="AS">Американско Самоа</territory>
			<territory type="AT">Австрия</territory>
			<territory type="AU">Австралия</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AX">Аландски о-ви</territory>
			<territory type="AZ">Азербайджан</territory>
			<territory type="BA">Босна и Херцеговина</territory>
			<territory type="BB">Барбадос</territory>
			<territory type="BD">Бангладеш</territory>
			<territory type="BE">Белгия</territory>
			<territory type="BF">Буркина Фасо</territory>
			<territory type="BG">България</territory>
			<territory type="BH">Бахрейн</territory>
			<territory type="BI">Бурунди</territory>
			<territory type="BJ">Бенин</territory>
			<territory type="BM">Бермуда</territory>
			<territory type="BN">Бруней Дарусалам</territory>
			<territory type="BO">Боливия</territory>
			<territory type="BR">Бразилия</territory>
			<territory type="BS">Бахами</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Остров Буве</territory>
			<territory type="BW">Ботсуана</territory>
			<territory type="BY">Беларус</territory>
			<territory type="BZ">Белиз</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Кокосови (Кийлинг) острови</territory>
			<territory type="CD">Демократична Република Конго</territory>
			<territory type="CF">Централноафриканска Република</territory>
			<territory type="CG">Конго</territory>
			<territory type="CH">Швейцария</territory>
			<territory type="CI">Бряг на Слоновата кост</territory>
			<territory type="CK">Острови Кук</territory>
			<territory type="CL">Чили</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Китай</territory>
			<territory type="CO">Колумбия</territory>
			<territory type="CR">Коста Рика</territory>
			<territory type="CS">Сърбия и Черна Гора</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Кабо Верде</territory>
			<territory type="CX">Остров Кристмас</territory>
			<territory type="CY">Кипър</territory>
			<territory type="CZ">Чешка Република</territory>
			<territory type="DE">Германия</territory>
			<territory type="DJ">Джибути</territory>
			<territory type="DK">Дания</territory>
			<territory type="DM">Доминика</territory>
			<territory type="DO">Доминиканска Република</territory>
			<territory type="DZ">Алжир</territory>
			<territory type="EC">Еквадор</territory>
			<territory type="EE">Естония</territory>
			<territory type="EG">Египет</territory>
			<territory type="EH">Западна Сахара</territory>
			<territory type="ER">Еритрея</territory>
			<territory type="ES">Испания</territory>
			<territory type="ET">Етиопия</territory>
			<territory type="FI">Финландия</territory>
			<territory type="FJ">Фиджи</territory>
			<territory type="FK">Фолклендски острови</territory>
			<territory type="FM">Микронезия, Обединени Щати</territory>
			<territory type="FO">Фарьорски острови</territory>
			<territory type="FR">Франция</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Обединено кралство</territory>
			<territory type="GD">Гренада</territory>
			<territory type="GE">Грузия</territory>
			<territory type="GF">Френска Гвиана</territory>
			<territory type="GG">о. Гърнзи</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гибралтар</territory>
			<territory type="GL">Гренландия</territory>
			<territory type="GM">Гамбия</territory>
			<territory type="GN">Гвинея</territory>
			<territory type="GP">Гваделупа</territory>
			<territory type="GQ">Екваториална Гвинея</territory>
			<territory type="GR">Гърция</territory>
			<territory type="GS">Южна Джорджия и Южни Сандвичеви Острови</territory>
			<territory type="GT">Гватемала</territory>
			<territory type="GU">Гуам</territory>
			<territory type="GW">Гвинея-Бисау</territory>
			<territory type="GY">Гвиана</territory>
			<territory type="HK">Хонг-Конг</territory>
			<territory type="HM">Остров Хърд и Острови Макдоналд</territory>
			<territory type="HN">Хондурас</territory>
			<territory type="HR">Хърватска</territory>
			<territory type="HT">Хаити</territory>
			<territory type="HU">Унгария</territory>
			<territory type="ID">Индонезия</territory>
			<territory type="IE">Ирландия</territory>
			<territory type="IL">Израел</territory>
			<territory type="IM">о.Ман</territory>
			<territory type="IN">Индия</territory>
			<territory type="IO">Британски територии в Индийския океан</territory>
			<territory type="IQ">Ирак</territory>
			<territory type="IR">Иран, Ислямска република</territory>
			<territory type="IS">Исландия</territory>
			<territory type="IT">Италия</territory>
			<territory type="JE">о. Джързи</territory>
			<territory type="JM">Ямайка</territory>
			<territory type="JO">Йордания</territory>
			<territory type="JP">Япония</territory>
			<territory type="KE">Кения</territory>
			<territory type="KG">Киргизстан</territory>
			<territory type="KH">Камбоджа</territory>
			<territory type="KI">Кирибати</territory>
			<territory type="KM">Комори</territory>
			<territory type="KN">Сейнт Китс и Невис</territory>
			<territory type="KP">Корея, Северна</territory>
			<territory type="KR">Корея, Южна</territory>
			<territory type="KW">Кувейт</territory>
			<territory type="KY">Кайманови острови</territory>
			<territory type="KZ">Казахстан</territory>
			<territory type="LA">Народна Демократична Република Лаос</territory>
			<territory type="LB">Ливан</territory>
			<territory type="LC">Сейнт Лусия</territory>
			<territory type="LI">Лихтенщайн</territory>
			<territory type="LK">Шри Ланка</territory>
			<territory type="LR">Либерия</territory>
			<territory type="LS">Лесото</territory>
			<territory type="LT">Литва</territory>
			<territory type="LU">Люксембург</territory>
			<territory type="LV">Латвия</territory>
			<territory type="LY">Либийска Арабска Джамахирия</territory>
			<territory type="MA">Мароко</territory>
			<territory type="MC">Монако</territory>
			<territory type="MD">Молдова, Република</territory>
			<territory type="ME">Черна Гора</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршалови Острови</territory>
			<territory type="MK">Македония, Република</territory>
			<territory type="ML">Мали</territory>
			<territory type="MM">Мианмар</territory>
			<territory type="MN">Монголия</territory>
			<territory type="MO">Макао</territory>
			<territory type="MP">Северни Мариански Острови</territory>
			<territory type="MQ">Мартиника</territory>
			<territory type="MR">Мавритания</territory>
			<territory type="MS">Монсерат</territory>
			<territory type="MT">Малта</territory>
			<territory type="MU">Мавриций</territory>
			<territory type="MV">Малдиви</territory>
			<territory type="MW">Малави</territory>
			<territory type="MX">Мексико</territory>
			<territory type="MY">Малайзия</territory>
			<territory type="MZ">Мозамбик</territory>
			<territory type="NA">Намибия</territory>
			<territory type="NC">Нова Каледония</territory>
			<territory type="NE">Нигер</territory>
			<territory type="NF">Остров Норфолк</territory>
			<territory type="NG">Нигерия</territory>
			<territory type="NI">Никарагуа</territory>
			<territory type="NL">Холандия</territory>
			<territory type="NO">Норвегия</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Ниуе</territory>
			<territory type="NZ">Нова Зеландия</territory>
			<territory type="OM">Оман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Френска Полинезия</territory>
			<territory type="PG">Папуа Нова Гвинея</territory>
			<territory type="PH">Филипини</territory>
			<territory type="PK">Пакистан</territory>
			<territory type="PL">Полша</territory>
			<territory type="PM">Сен Пиер и Мигелон</territory>
			<territory type="PN">Питкайрн</territory>
			<territory type="PR">Пуерто Рико</territory>
			<territory type="PS">Палестински територии</territory>
			<territory type="PT">Португалия</territory>
			<territory type="PW">Палау</territory>
			<territory type="PY">Парагвай</territory>
			<territory type="QA">Катар</territory>
			<territory type="QO">Океания [QO]</territory>
			<territory type="QU">Европейски съюз</territory>
			<territory type="RE">Реюниън</territory>
			<territory type="RO">Румъния</territory>
			<territory type="RS">Сърбия</territory>
			<territory type="RU">Руска Федерация</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудитска Арабия</territory>
			<territory type="SB">Соломонови Острови</territory>
			<territory type="SC">Сейшели</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Швеция</territory>
			<territory type="SG">Сингапур</territory>
			<territory type="SH">Света Елена</territory>
			<territory type="SI">Словения</territory>
			<territory type="SJ">Свалбард и Ян Майен</territory>
			<territory type="SK">Словакия</territory>
			<territory type="SL">Сиера Леоне</territory>
			<territory type="SM">Сан Марино</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Сомалия</territory>
			<territory type="SR">Суринам</territory>
			<territory type="ST">Сао Томе и Принципе</territory>
			<territory type="SV">Ел Салвадор</territory>
			<territory type="SY">Сирийска Арабска Република</territory>
			<territory type="SZ">Суазиленд</territory>
			<territory type="TC">Острови Туркс и Кайкос</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Френски Южни Територии</territory>
			<territory type="TG">Того</territory>
			<territory type="TH">Тайланд</territory>
			<territory type="TJ">Таджикистан</territory>
			<territory type="TK">Токелау</territory>
			<territory type="TL">Източен Тимор</territory>
			<territory type="TM">Туркменистан</territory>
			<territory type="TN">Тунис</territory>
			<territory type="TO">Тонга</territory>
			<territory type="TR">Турция</territory>
			<territory type="TT">Тринидад и Тобаго</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тайван</territory>
			<territory type="TZ">Танзания</territory>
			<territory type="UA">Украйна</territory>
			<territory type="UG">Уганда</territory>
			<territory type="UM">САЩ - външни острови</territory>
			<territory type="US">САЩ</territory>
			<territory type="UY">Уругвай</territory>
			<territory type="UZ">Узбекистан</territory>
			<territory type="VA">Свещено море (Ватиканска държава)</territory>
			<territory type="VC">Сейнт Винсънт и Гренадини</territory>
			<territory type="VE">Венецуела</territory>
			<territory type="VG">Британски Вирджински Острови</territory>
			<territory type="VI">САЩ, Вирджински Острови</territory>
			<territory type="VN">Виетнам</territory>
			<territory type="VU">Вануату</territory>
			<territory type="WF">Уолис и Футуна</territory>
			<territory type="WS">Самоа</territory>
			<territory type="YE">Йемен</territory>
			<territory type="YT">Мейот</territory>
			<territory type="ZA">Южна Африка</territory>
			<territory type="ZM">Замбия</territory>
			<territory type="ZW">Зимбабве</territory>
			<territory type="ZZ">Непознатa или несъществуваща област</territory>
		</territories>
		<keys>
			<key type="calendar">Календар</key>
			<key type="collation">Сортиране</key>
			<key type="currency">Валута</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Традиционен китайски (Big5)</type>
			<type type="buddhist" key="calendar">Будистки календар</type>
			<type type="chinese" key="calendar">Китайски календар</type>
			<type type="direct" key="collation">Директно</type>
			<type type="gb2312han" key="collation">Опростен китайски (GB2312)</type>
			<type type="gregorian" key="calendar">Григориански календар</type>
			<type type="hebrew" key="calendar">Еврейски календар</type>
			<type type="islamic" key="calendar">Ислямски календар</type>
			<type type="islamic-civil" key="calendar">Ислямски цивилен календар</type>
			<type type="japanese" key="calendar">Японски календар</type>
			<type type="phonebook" key="collation">Азбучен ред</type>
			<type type="pinyin" key="collation">Сортиране Пинин</type>
			<type type="stroke" key="collation">Сортиране по щрих</type>
			<type type="traditional" key="collation">Традиционно</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Американска</measurementSystemName>
			<measurementSystemName type="metric">Метрична</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[а-ъ ь ю я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[i v x {а̀} ѐ ѝ {о̀} {у̀} {ъ̀} ѣ {ю̀} {я̀} ѫ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>„</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ян.</month>
							<month type="2">февр.</month>
							<month type="3">март</month>
							<month type="4">апр.</month>
							<month type="5">май</month>
							<month type="6">юни</month>
							<month type="7">юли</month>
							<month type="8">авг.</month>
							<month type="9">септ.</month>
							<month type="10">окт.</month>
							<month type="11">ноем.</month>
							<month type="12">дек.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">януари</month>
							<month type="2">февруари</month>
							<month type="3">март</month>
							<month type="4">април</month>
							<month type="5">май</month>
							<month type="6">юни</month>
							<month type="7">юли</month>
							<month type="8">август</month>
							<month type="9">септември</month>
							<month type="10">октомври</month>
							<month type="11">ноември</month>
							<month type="12">декември</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">я</month>
							<month type="2">ф</month>
							<month type="3">м</month>
							<month type="4">а</month>
							<month type="5">м</month>
							<month type="6">ю</month>
							<month type="7">ю</month>
							<month type="8">а</month>
							<month type="9">с</month>
							<month type="10">о</month>
							<month type="11">н</month>
							<month type="12">д</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">нд</day>
							<day type="mon">пн</day>
							<day type="tue">вт</day>
							<day type="wed">ср</day>
							<day type="thu">чт</day>
							<day type="fri">пт</day>
							<day type="sat">сб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">неделя</day>
							<day type="mon">понеделник</day>
							<day type="tue">вторник</day>
							<day type="wed">сряда</day>
							<day type="thu">четвъртък</day>
							<day type="fri">петък</day>
							<day type="sat">събота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">н</day>
							<day type="mon">п</day>
							<day type="tue">в</day>
							<day type="wed">с</day>
							<day type="thu">ч</day>
							<day type="fri">п</day>
							<day type="sat">с</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">I трим.</quarter>
							<quarter type="2">II трим.</quarter>
							<quarter type="3">III трим.</quarter>
							<quarter type="4">IV трим.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-во тримесечие</quarter>
							<quarter type="2">2-ро тримесечие</quarter>
							<quarter type="3">3-то тримесечие</quarter>
							<quarter type="4">4-то тримесечие</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>пр. об.</am>
				<pm>сл. об.</pm>
				<eras>
					<eraNames>
						<era type="0">пр.Хр.</era>
						<era type="1">сл.Хр.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">пр. н. е.</era>
						<era type="1">от н. е.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="1">сл.н.е.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>dd MMMM yyyy, EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="hmm">h:mm a</dateFormatItem>
						<dateFormatItem id="hmmss">h:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyMM">yy-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yyyyQQQQ">QQQQ yyyy 'г'.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">dd.MM E - dd.MM E</greatestDifference>
							<greatestDifference id="d">dd.MM E - dd.MM E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">dd MMM E - dd MMM E</greatestDifference>
							<greatestDifference id="d">dd MMM E - dd MMM E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">dd.MM.yy E - dd.MM.yy E</greatestDifference>
							<greatestDifference id="d">dd.MM.yy E - dd.MM.yy E</greatestDifference>
							<greatestDifference id="y">dd.MM.yy E - dd.MM.yy E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">dd MMM yyyy, E - dd MMM yyyy, E</greatestDifference>
							<greatestDifference id="d">dd MMM yyyy, E - dd MMM yyyy, E</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy, E - dd MMM yyyy, E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ера</displayName>
					</field>
					<field type="year">
						<displayName>година</displayName>
					</field>
					<field type="month">
						<displayName>месец</displayName>
					</field>
					<field type="week">
						<displayName>седмица</displayName>
					</field>
					<field type="day">
						<displayName>Ден</displayName>
						<relative type="0">Днес</relative>
						<relative type="1">Утре</relative>
						<relative type="2">Вдругиден</relative>
						<relative type="-1">Вчера</relative>
						<relative type="-2">Онзи ден</relative>
					</field>
					<field type="weekday">
						<displayName>Ден от седмицата</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ден</displayName>
					</field>
					<field type="hour">
						<displayName>час</displayName>
					</field>
					<field type="minute">
						<displayName>минута</displayName>
					</field>
					<field type="second">
						<displayName>секунда</displayName>
					</field>
					<field type="zone">
						<displayName>зона</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>Гриинуич{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Неизвестен</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Андора</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Дубай</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Кабул</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Антигуа</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Ангила</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Тирана</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Ереван</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Кюрасао</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Луанда</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Ротера</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Палмър</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Южен полюс</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Суова</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Моусън</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>База Дейвис</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Восток</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Кейси</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Дюмон Дюрвил</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Мак Мърдоу</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Рио Галегос</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>Мендоса</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>Сан Хуан</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ушуая</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>Ла Риоха</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Катамарка</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>Джуджую</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Тукуман</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Кордоба</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Буенос Айрес</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Паго Паго</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Виена</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>Пърт</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Даруин</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Адълид</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Броукън Хил</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Мелбърн</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>Хоубарт</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>Линдеман</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Сидни</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Бризбейн</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Лорд Хов</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Аруба</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Баку</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Бриджтаун</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Дака</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Брюксел</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Уагадугу</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>София</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Бахрейн</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Бужумбура</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Порто Ново</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Бермудски О-ви</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Бруней</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Ла Пас</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Ейрунепе</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Рио Бранко</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Порту Вельо</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Буа Виста</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Мануас</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Чуяба</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Кампо Гранде</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Белем</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Арагуайна</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Сао Пауло</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Бахиа</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Фортацела</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Масейо</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Ресифе</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Норонха</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Насау</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Тхимпу</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Габороне</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Минск</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Белмопан</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Доусън</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>Уайтхорс</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>Инувик</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Ванкувър</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Доусън Крийк</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>Йелоунайф</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Едмънтън</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>Суифт Кърент</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Кеймбридж Бей</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Регина</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>Уинипег</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>Рейни Ривър</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>Ранкин Инлет</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>Тъндър Бей</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>Нипигон</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>Торонто</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Монреал</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>Иквалуит</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>Пангниртунг</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Халифакс</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Гус Бей</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Глейс Бей</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Сейнт Джоунс</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Кокос</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Киншаса</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Лубумбаши</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Банги</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Бразавил</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Цюрих</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Абиджан</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Раротонга</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Великденски о-ви</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Сантиаго</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Дуала</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Кашгар</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Урумчи</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Чунцин</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Шанхай</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>Харбин</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Богота</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Сан Хосе</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Хавана</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Кабо Верде</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Коледни о-ви</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Никозия</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Берлин</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Джибути</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Копенхаген</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Доминика</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Санто Доминго</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Алжир</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>о-ви Галапагос</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Гуаякил</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Талин</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Кайро</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Ел Аюн</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Асмера</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Канарски о-ви</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Сеута</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Мадрид</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Адис Абеба</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Хелзинки</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Фиджи</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Стенли</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>о-ви Трук</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>о. Понапе</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>о. Косрае</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Фарьорите</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Париж</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Либървил</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Лондон</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Сент Джорджес</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Тбилиси</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Кайен</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Акра</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Гибралтар</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Туле</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Готхоб</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Сгорсбисон</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Данмаркшавн</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Банджул</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Конакри</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Бас Тер</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Малабо</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Атина</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Южна Джорджия</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Гватемала</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Гуам</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Бисау</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Джорджтаун</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Хонг Конг</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Порт-о-Пренс</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Будапеща</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Джакарта</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>Понтианак</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Макасарски проток</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Джаяпура</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Дъблин</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Йерусалим</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Чагос</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Багдад</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Техеран</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Рейкявик</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Рим</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Кингстън</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Аман</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Токио</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Найроби</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Бишкек</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Пном Пен</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>о. Ендърбъри</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>о. Рождество</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>о. Тарава</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Коморски о-ви</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Сейнт Китс</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Пхенян</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Сеул</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Кувейт</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Кайманите</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Аятау</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Арал</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Аятобе</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Язилорда</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Алма Ата</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Виентян</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Бейрут</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Св. Лучия</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Вадуц</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Коломбо</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Монровия</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Масеру</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Вилнюс</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Люксембург</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Рига</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Триполи</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Казабланка</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Монако</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Кишинев</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Антананариво</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Квайджален</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Мажуро</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Бамако</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Рангун</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Кобдо</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Уланбатор</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Чойбалсан</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Макау</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Сайпан</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Мартиник</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Нуакшот</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Монсерат</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Ла Валета</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Мавриций</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Малдивски О-ви</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Блантайр</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Тихуана</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Хермосило</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Мацатлан</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Чиуауа</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Монтерей</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Мексико</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Мерида</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Канкун</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Куала Лумпур</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Кучин</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Мапуту</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Виндхук</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Нумеа</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Ниамей</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Норфолк</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Лагос</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Манагуа</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Амстердам</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Осло</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Катманду</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Науру</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Ниуе</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>о-ви Чатам</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Окланд</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Мускат</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Панама</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Лима</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Таити</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Маркизки о-ви</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Гамбиер</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Порт Морсби</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Манила</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Карачи</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Варшава</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Микелон</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Питкерн</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Пуерто Рико</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Газа</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Азорски о-ви</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Мадейра</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Лисабон</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Палау</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Асунсион</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Катар</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Реюнион</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Букурещ</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Калининград</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Москва</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Самара</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Екатерининбург</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Омск</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Новосибирск</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Красноярск</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Иркутск</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Якутск</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Владивосток</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Сахалин</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Магадан</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>п-в Камчатка</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Анадир</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Кигали</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Рияд</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Гуадалканал</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Махе</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Хартум</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Стокхолм</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Сингапур</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Св. Елена</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>Лонгирбюен</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Фрийтаун</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Дакар</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Могадишо</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Парамарибо</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Сао Томе</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Сан Салвадор</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Дамаск</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Мбабане</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Гранд Тюрк</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Нджамена</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Кергелен</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Ломе</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Бангкок</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Душанбе</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Факаофо</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Дили</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ашхабад</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Тунис</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Тонгатапу</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Истанбул</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Порт ъф Спейн</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Фунафути</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Тайпей</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Дар ес Салаам</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ужгород</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Киев</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Севастопол</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Запорожие</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Кампала</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>о. Мидуей</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>о. Джонсън</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>о. Уейк</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>Адак</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>Ноум</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Хонолулу</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Анкоридж</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>Якутат</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>Джуно</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Лос Анжелис</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>Буаз</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Финикс</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>Шипрок</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Денвър</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Сентър</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Чикаго</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>Меномнии</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Нокс</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Маренго</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Индианополис</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Луизвил</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Веве</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Монтичело</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Детройт</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Ню Йорк</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Монтевидео</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Самарканд</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Ташкент</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Св. Винсент</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Каракас</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Тортола</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Св. Томас</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Сайгон</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Ефате</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Уолис</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Апиа</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Аден</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Майоте</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Йоханесбург</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Лусака</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Хараре</exemplarCity>
			</zone>
			<metazone type="Alaska">
				<long>
					<standard>Часова зона Аляска</standard>
					<daylight>Лятна часова зона Аляска</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<standard>Американска централна часова зона</standard>
					<daylight>Американска централна лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<standard>Американска източна часова зона</standard>
					<daylight>Американска източна лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<standard>Американска планинска часова зона</standard>
					<daylight>Американска планинска лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<standard>Тихоокеанска часова зона</standard>
					<daylight>Тихоокеанска лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<standard>Атлантическа часова зона</standard>
					<daylight>Атлантическа лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Китайска часова зона</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Централноевропейска часова зона</standard>
					<daylight>Централноевропейска лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Източноевропейска часова зона</standard>
					<daylight>Източноевропейска лятна часова зона</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Часова зона Гринуич</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Часова зона Израел</standard>
					<daylight>Лятна часова зона Израел</daylight>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Японска часова зона</standard>
					<daylight>Японска часова зона</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>Часова зона Нюфаундленд</standard>
					<daylight>Лятна часова зона Нюфаундленд</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>Н/Ч</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Андорска песета</displayName>
			</currency>
			<currency type="AED">
				<displayName>Обединени арабски емирства-дирхам</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Афганистански афган (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Афганистански афган</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Албански лек</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Арменски драм</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Антилски гулден</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Анголска кванца</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Анголска кванца (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Анголска нова кванца (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Анголска нова кванца (1995-1999)</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Аржентинско песо (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Аржентинско песо</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Австрийски шилинг</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Австралийски долар</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Арубски гилдер - о. Аруба</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Азербайджански манат</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Босна и Херцеговина-динар</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Босненска конвертируема марка</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Барбейдоски долар</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Бангладешка така</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Белгийски франк (конвертируем)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Белгийски франк</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Белгийски франк (финансов)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Български конвертируем лев (1962-1999)</displayName>
				<symbol>лв</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Български лев</displayName>
				<symbol>лв.</symbol>
			</currency>
			<currency type="BHD">
				<displayName>Бахрейнски динар</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Бурундийски франк</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Бермудски долар</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Брунейски долар</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Боливийско боливиано</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Боливийско песо</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Бразилски реал</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Бахамски долар</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Бутански нгултрум</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BWP">
				<displayName>Ботсуанска пула</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Беларуска нова рубла (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Беларуска рубла</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Белизийски долар</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Канадски долар</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Конгоански франк</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Швейцарски франк</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLP">
				<displayName>Чилийско песо</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Китайски ренминби юан</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Колумбийско песо</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Костарикански колон</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Чехословашка конвертируема крона</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Кубинско песо</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Кабо Верде ескудо</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Кипърска лира</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Чешка крона</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Германска марка</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Джибутски франк</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Датска крона</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Доминиканско песо</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Алжирски динар</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Еквадорско сукре</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Естонска крона</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Египетска лира</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Еритрейска накфа</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Испанска песета</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Етиопски бир</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Евро</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Финландска марка</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Фиджи - долар</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Фолкландска лира</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Френски франк</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Британска лира</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Грузински лари</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ганайски седи</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Гибралтарска лира</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Гамбийски даласи</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Гвинейски франк</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GRD">
				<displayName>Гръцка драхма</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Гватемалски кветзал</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWP">
				<displayName>Гвинея-Бисау песо</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Гаянски долар</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Хонгконгски долар</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Хондураска лемпира</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Хърватски динар</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Хърватска куна</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Хаитски гурд</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Унгарски форинт</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Индонезийска рупия</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Ирландска лира</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Израелска лира</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Израелски нов шекел</displayName>
			</currency>
			<currency type="INR">
				<displayName>Индийска рупия</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Иракски динар</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Ирански риал</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Исландска крона</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Италианска лира</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Ямайски долар</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Йордански динар</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Японска йена</displayName>
			</currency>
			<currency type="KES">
				<displayName>Кенийски шилинг</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Киргистански сом</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Камбоджански риел</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Коморски франк</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Севернокорейски вон</displayName>
			</currency>
			<currency type="KRW">
				<displayName>КНДР вон</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Кувейтски динар</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Кайманови острови - долар</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Казахстанско тенге</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Лаоски кип</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Ливанска лира</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Шриланкска рупия</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Либерийски долар</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Лесотско лоти</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Литовски литаз</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Люксембургски франк</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Латвийски лат</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Латвийска рубла</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Либийски динар</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Марокански дирхам</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Марокански франк</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Молдовско леу</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Малгашки франк - Мадагаскар</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Македонски денар</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MMK">
				<displayName>Миянмарски (Бирма) кият</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Монголски тугрик</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Макао - патака</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Мавританска огия</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Малтийска лира</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MUR">
				<displayName>Маврицийска рупия</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Малдивска руфия</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Малавийска квача</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Мексиканско ново песо</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Мексиканско сребърно песо (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Малайзийски рингит</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Мозамбикско ескудо</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Мозамбикски метикал</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Намибийски долар</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Нигерийска найра</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Никарагуанска кордоба</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Холандски гулден</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Норвежка крона</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Непалска рупия</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Новозеландски долар</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Омански риал</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Панамски балбоа</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Перуански нов сол</displayName>
			</currency>
			<currency type="PES">
				<displayName>Перуански сол</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Папуа-новогвинейска кина</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Филипинско песо</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Пакистанска рупия</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Полска злота</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Полска злота (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Португалско ескудо</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Парагвайско гуарани</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Катарски риал</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Стара румънска лея</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Румънска лея</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Сръбски динар</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Руска рубла</displayName>
				<symbol>Руб.</symbol>
			</currency>
			<currency type="RUR">
				<displayName>Руска рубла (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Руандски франк</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Саудитскоарабски риал</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Соломонови острови - долар</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Сейшелска рупия</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Судански динар</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Суданска лира</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Шведска крона</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Сингапурски долар</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Света Елена лира</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Словенски толар</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Словашка крона</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Сиералеонско леоне</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Сомалийски шилинг</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Суринамски гилдер</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Сао Томе и Принсипи - добра</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Съветска рубла</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Салвадорски колон</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Сирийска лира</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Свазилендски лилангени</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Тайландски бат</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Таджикистанска рубла</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Таджикистански сомони</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Туркменистански манат</displayName>
			</currency>
			<currency type="TND">
				<displayName>Тунизийски динар</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Тонга - па анга</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Тиморско ескудо</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Турска лира</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Нова турска лира</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Тринидат и Тобаго - долар</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Тайвански долар</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Танзанийски шилинг</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Украинска хривня</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Украински карбованец</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Угандийски шилинг (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Угандийски нов шилинг</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>САЩ долар</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Уругвайско песо (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Уругвайско песо</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Узбекистански сум</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Венесуелски боливар</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Виетнамски донг</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Вануату - вату</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Самоа - тала</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Буркина Фасо - CFA - франк</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Злато</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Източнокарибски долар - Антигуа</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XEU">
				<displayName>Еку на ЕИО</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Френски златен франк</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Бенин - CFA франк</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Френскополинезийски франк</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Непозната или невалидна валута</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Йеменски динар</displayName>
			</currency>
			<currency type="YER">
				<displayName>Йеменски риал</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUM">
				<displayName>Югославски динар</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Югославски конвертируем динар</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Южноафрикански ранд (финансов)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Южноафрикански ранд</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Замбийска квача</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Заирско ново зайре</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Заирско зайре</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Зимбабвийски долар</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>да:д</yesstr>
			<nostr>не:н</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���OOLocale/Data/az_AZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.40 $"/>
		<generation date="$Date: 2008/06/24 16:36:03 $"/>
		<language type="az"/>
		<territory type="AZ"/>
	</identity>
	<alias source="az_Latn_AZ" path="//ldml"/>
</ldml>
PKpG[GL�!!Locale/Data/tg_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:41:57 $"/>
		<language type="tg"/>
		<script type="Cyrl"/>
	</identity>
</ldml>
PKpG[Y�OOLocale/Data/zh_MO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.43 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<territory type="MO"/>
	</identity>
	<alias source="zh_Hant_MO" path="//ldml"/>
</ldml>
PKpG[���;;Locale/Data/az_Cyrl_AZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="az"/>
		<script type="Cyrl"/>
		<territory type="AZ"/>
	</identity>
</ldml>
PKpG[(NFm!!Locale/Data/kk_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:18:43 $"/>
		<language type="kk"/>
		<script type="Cyrl"/>
	</identity>
</ldml>
PKpG[��;;Locale/Data/pa_Guru_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.12 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="pa"/>
		<script type="Guru"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[��W�##Locale/Data/et_EE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="et"/>
		<territory type="EE"/>
	</identity>
</ldml>
PKpG[��
�$$Locale/Data/kaj_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="kaj"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[ٵ##Locale/Data/fa_IR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="fa"/>
		<territory type="IR"/>
	</identity>
</ldml>
PKpG[��>�k�kLocale/Data/ko.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.117 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="ko"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0}({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">아파르어</language>
			<language type="ab">압카즈어</language>
			<language type="ace">아체어</language>
			<language type="ach">아콜리어</language>
			<language type="ada">아당메어</language>
			<language type="ady">아닥헤어</language>
			<language type="ae">아베스타어</language>
			<language type="af">남아공 공용어</language>
			<language type="afa">아시아-아프리카어 (기타)</language>
			<language type="afh">아프리히리어</language>
			<language type="ain">아이누어</language>
			<language type="ak">아칸어</language>
			<language type="akk">아카드어</language>
			<language type="ale">알류트어</language>
			<language type="alg">알공킨어족</language>
			<language type="alt">남부 알타이어</language>
			<language type="am">암하라어</language>
			<language type="an">아라곤어</language>
			<language type="ang">고대 영어</language>
			<language type="anp">앙가어</language>
			<language type="apa">아파치어</language>
			<language type="ar">아랍어</language>
			<language type="arc">아람어</language>
			<language type="arn">아라우칸어</language>
			<language type="arp">아라파호어</language>
			<language type="art">기계어 (기타)</language>
			<language type="arw">아라와크어</language>
			<language type="as">아샘어</language>
			<language type="ast">아스투리아어</language>
			<language type="ath">아타파스카어군</language>
			<language type="aus">오스트레일리아어족</language>
			<language type="av">아바릭어</language>
			<language type="awa">아와히어</language>
			<language type="ay">아이마라어</language>
			<language type="az">아제르바이잔어</language>
			<language type="ba">바슈키르어</language>
			<language type="bad">반다어</language>
			<language type="bai">바밀레케어족</language>
			<language type="bal">발루치어</language>
			<language type="ban">발리어</language>
			<language type="bas">바사어</language>
			<language type="bat">발트어 (기타)</language>
			<language type="be">벨로루시어</language>
			<language type="bej">베자어</language>
			<language type="bem">벰바어</language>
			<language type="ber">베르베르어</language>
			<language type="bg">불가리아어</language>
			<language type="bh">비하르어</language>
			<language type="bho">호즈푸리어</language>
			<language type="bi">비슬라마어</language>
			<language type="bik">비콜어</language>
			<language type="bin">비니어</language>
			<language type="bla">식시카어</language>
			<language type="bm">밤바라어</language>
			<language type="bn">벵골어</language>
			<language type="bnt">반투어</language>
			<language type="bo">티베트어</language>
			<language type="br">브르타뉴어</language>
			<language type="bra">브라지어</language>
			<language type="bs">보스니아어</language>
			<language type="btk">바타크어</language>
			<language type="bua">부리아타</language>
			<language type="bug">부기어</language>
			<language type="byn">브린어</language>
			<language type="ca">카탈로니아어</language>
			<language type="cad">카도어</language>
			<language type="cai">중앙 아메리카 인디안어 (기타)</language>
			<language type="car">카리브어</language>
			<language type="cau">카프카스어 (기타)</language>
			<language type="cch">아삼어</language>
			<language type="ce">체첸어</language>
			<language type="ceb">세부아노어</language>
			<language type="cel">켈트어 (기타)</language>
			<language type="ch">차모로어</language>
			<language type="chb">치브차어</language>
			<language type="chg">차가타이어</language>
			<language type="chk">추크어</language>
			<language type="chm">마리어</language>
			<language type="chn">치누크어와 영어 프랑스어의 혼성어</language>
			<language type="cho">촉토어</language>
			<language type="chp">치페우얀</language>
			<language type="chr">체로키어</language>
			<language type="chy">샤이엔어</language>
			<language type="cmc">참어군</language>
			<language type="co">코르시카어</language>
			<language type="cop">콥트어</language>
			<language type="cpe">크리올어 및 피진어 (영어를 기반으로 한 기타)</language>
			<language type="cpf">크리올어 및 피진어 (프랑스어를 기반으로 한 기타)</language>
			<language type="cpp">크리올어 및 피진어 (포르투갈어를 기반으로 한 기타)</language>
			<language type="cr">크리어</language>
			<language type="crh">크리민 터키어; 크리민 타타르어</language>
			<language type="crp">크리올어 및 피진어 (기타)</language>
			<language type="cs">체코어</language>
			<language type="csb">카슈비아어</language>
			<language type="cu">교회 슬라브어</language>
			<language type="cus">쿠시어족</language>
			<language type="cv">추바시어</language>
			<language type="cy">웨일스어</language>
			<language type="da">덴마크어</language>
			<language type="dak">다코타어</language>
			<language type="dar">다르그와어</language>
			<language type="day">다야크어</language>
			<language type="de">독일어</language>
			<language type="de_CH">고지 독일어 (스위스)</language>
			<language type="del">델라웨어어</language>
			<language type="den">슬라브어</language>
			<language type="dgr">도그리브어</language>
			<language type="din">딩카어</language>
			<language type="doi">도그리어</language>
			<language type="dra">드라비다어 (기타)</language>
			<language type="dsb">저지 소르비아어</language>
			<language type="dua">드와라어</language>
			<language type="dum">중세 네덜란드어</language>
			<language type="dv">디베히어</language>
			<language type="dyu">드율라어</language>
			<language type="dz">종카어</language>
			<language type="ee">에웨어</language>
			<language type="efi">이픽어</language>
			<language type="egy">이집트어 (고대)</language>
			<language type="eka">이카죽어</language>
			<language type="el">그리스어</language>
			<language type="elx">엘람어</language>
			<language type="en">영어</language>
			<language type="en_AU">영어(호주)</language>
			<language type="en_GB">영어 (영국식)</language>
			<language type="en_US">영어 (미국식)</language>
			<language type="enm">영어, 중세 (1100-1500)</language>
			<language type="eo">에스페란토어</language>
			<language type="es">스페인어</language>
			<language type="es_419">중남미 스페인어</language>
			<language type="et">에스토니아어</language>
			<language type="eu">바스크어</language>
			<language type="ewo">이원도어</language>
			<language type="fa">페르시아어</language>
			<language type="fan">팡그어</language>
			<language type="fat">판티어</language>
			<language type="ff">풀라어</language>
			<language type="fi">핀란드어</language>
			<language type="fil">필리핀어</language>
			<language type="fiu">피노우그리아어 (기타)</language>
			<language type="fj">피지어</language>
			<language type="fo">페로어</language>
			<language type="fon">폰어</language>
			<language type="fr">프랑스어</language>
			<language type="frm">중세 프랑스어</language>
			<language type="fro">고대 프랑스어</language>
			<language type="frr">북부 프리슬란드어</language>
			<language type="frs">동부 프리슬란드어</language>
			<language type="fur">프리우리안어</language>
			<language type="fy">프리지아어</language>
			<language type="ga">아일랜드어</language>
			<language type="gaa">가어</language>
			<language type="gay">가요어</language>
			<language type="gba">그바야어</language>
			<language type="gd">스코틀랜드 게일어</language>
			<language type="gem">독일어 (기타)</language>
			<language type="gez">게이즈어</language>
			<language type="gil">키리바시어</language>
			<language type="gl">갈리시아어</language>
			<language type="gmh">중세 고지 독일어</language>
			<language type="gn">과라니어</language>
			<language type="goh">고대 고지 독일어</language>
			<language type="gon">곤디어</language>
			<language type="gor">고론탈로어</language>
			<language type="got">고트어</language>
			<language type="grb">게르보어</language>
			<language type="grc">그리스어, 고대 (1453년 까지)</language>
			<language type="gsw">독일어 (스위스)</language>
			<language type="gu">구자라트어</language>
			<language type="gv">맹크스어</language>
			<language type="gwi">그위친어</language>
			<language type="ha">하우사어</language>
			<language type="hai">하이다어</language>
			<language type="haw">하와이어</language>
			<language type="he">히브리어</language>
			<language type="hi">힌디어</language>
			<language type="hil">헤리가뇬어</language>
			<language type="him">히마차리어</language>
			<language type="hit">하타이트어</language>
			<language type="hmn">히몸어</language>
			<language type="ho">히리 모투어</language>
			<language type="hr">크로아티아어</language>
			<language type="hsb">고지 소르비아어</language>
			<language type="ht">아이티어</language>
			<language type="hu">헝가리어</language>
			<language type="hup">후파어</language>
			<language type="hy">아르메니아어</language>
			<language type="hz">헤레로어</language>
			<language type="ia">인테르링구아(국제보조어협회)</language>
			<language type="iba">이반어</language>
			<language type="id">인도네시아어</language>
			<language type="ie">인테르링구에</language>
			<language type="ig">이그보어</language>
			<language type="ii">쓰촨 이어</language>
			<language type="ijo">이조어</language>
			<language type="ik">이누피아크어</language>
			<language type="ilo">이로코어</language>
			<language type="inc">인도어 (기타)</language>
			<language type="ine">인도유럽어 (기타)</language>
			<language type="inh">인귀시어</language>
			<language type="io">이도어</language>
			<language type="ira">이란어 [ira]</language>
			<language type="iro">이러쿼이어</language>
			<language type="is">아이슬란드어</language>
			<language type="it">이탈리아어</language>
			<language type="iu">이눅티투트어</language>
			<language type="ja">일본어</language>
			<language type="jbo">로반어</language>
			<language type="jpr">유대-페르시아어</language>
			<language type="jrb">유대-아라비아어</language>
			<language type="jv">자바어</language>
			<language type="ka">그루지야어</language>
			<language type="kaa">카라칼파크어</language>
			<language type="kab">커바일어</language>
			<language type="kac">카친어</language>
			<language type="kam">캄바어</language>
			<language type="kar">카렌어</language>
			<language type="kaw">카위어</language>
			<language type="kbd">카바르디어</language>
			<language type="kfo">코로어</language>
			<language type="kg">콩고어</language>
			<language type="kha">카시어</language>
			<language type="khi">코이산어 (기타)</language>
			<language type="kho">호탄어</language>
			<language type="ki">키쿠유어</language>
			<language type="kj">쿠안야마어</language>
			<language type="kk">카자흐어</language>
			<language type="kl">그린란드어</language>
			<language type="km">캄보디아어</language>
			<language type="kmb">킴분두어</language>
			<language type="kn">카나다어</language>
			<language type="ko">한국어</language>
			<language type="kok">코카니어</language>
			<language type="kos">코스라이엔어</language>
			<language type="kpe">크펠레어</language>
			<language type="kr">칸누리어</language>
			<language type="krc">카라챠이-발카르어</language>
			<language type="krl">카렐리야어</language>
			<language type="kro">크루어</language>
			<language type="kru">쿠르크어</language>
			<language type="ks">카슈미르어</language>
			<language type="ku">쿠르드어</language>
			<language type="kum">쿠믹어</language>
			<language type="kut">쿠테네어</language>
			<language type="kv">코미어</language>
			<language type="kw">콘월어</language>
			<language type="ky">키르기스어</language>
			<language type="la">라틴어</language>
			<language type="lad">라디노어</language>
			<language type="lah">라한다어</language>
			<language type="lam">람바어</language>
			<language type="lb">룩셈부르크어</language>
			<language type="lez">레즈기안어</language>
			<language type="lg">간다어</language>
			<language type="li">림버거어</language>
			<language type="ln">링갈라어</language>
			<language type="lo">라오어</language>
			<language type="lol">몽구어</language>
			<language type="loz">로지어</language>
			<language type="lt">리투아니아어</language>
			<language type="lu">루바-카탄가어</language>
			<language type="lua">루바-룰루아어</language>
			<language type="lui">루이세노어</language>
			<language type="lun">룬다어</language>
			<language type="luo">루오어</language>
			<language type="lus">루샤이어</language>
			<language type="lv">라트비아어</language>
			<language type="mad">마두라어</language>
			<language type="mag">마가히</language>
			<language type="mai">마이틸리</language>
			<language type="mak">마카사어</language>
			<language type="man">만딩고어</language>
			<language type="map">남도어</language>
			<language type="mas">마사이어</language>
			<language type="mdf">모크샤어</language>
			<language type="mdr">만다르어</language>
			<language type="men">멘데어</language>
			<language type="mg">마다가스카르어</language>
			<language type="mga">아일랜드어, 중세 (900-1200)</language>
			<language type="mh">마셜제도어</language>
			<language type="mi">마오리어</language>
			<language type="mic">미크맥어</language>
			<language type="min">미낭카바우</language>
			<language type="mis">기타 언어</language>
			<language type="mk">마케도니아어</language>
			<language type="mkh">몬크메르어 (기타)</language>
			<language type="ml">말라얄람어</language>
			<language type="mn">몽고어</language>
			<language type="mnc">만주어</language>
			<language type="mni">마니푸리어</language>
			<language type="mno">마노보어</language>
			<language type="mo">몰도바어</language>
			<language type="moh">모호크어</language>
			<language type="mos">모시어</language>
			<language type="mr">마라티어</language>
			<language type="ms">말레이어</language>
			<language type="mt">몰타어</language>
			<language type="mul">다중 언어</language>
			<language type="mun">문다어</language>
			<language type="mus">크리크어</language>
			<language type="mwl">미란데어</language>
			<language type="mwr">마르와리어</language>
			<language type="my">버마어</language>
			<language type="myn">마야어</language>
			<language type="myv">엘즈야어</language>
			<language type="na">나우루어</language>
			<language type="nah">나우아틀어</language>
			<language type="nai">북아메리카 인디언어(기타)</language>
			<language type="nap">나폴리어</language>
			<language type="nb">보크말 노르웨이어</language>
			<language type="nd">은데벨레어, 북부</language>
			<language type="nds">저지 독일어</language>
			<language type="ne">네팔어</language>
			<language type="new">네와르어</language>
			<language type="ng">느동가어</language>
			<language type="nia">니아스어</language>
			<language type="nic">니제르 - 코르도파니아어 (기타)</language>
			<language type="niu">니웨언어</language>
			<language type="nl">네덜란드어</language>
			<language type="nl_BE">플라망어</language>
			<language type="nn">노르웨이어(뉴노시크)</language>
			<language type="no">노르웨이어</language>
			<language type="nog">노가이어</language>
			<language type="non">노르웨이, 고대</language>
			<language type="nqo">응코어</language>
			<language type="nr">은데벨레어, 남부</language>
			<language type="nso">소토어, 북부</language>
			<language type="nub">누비안어</language>
			<language type="nv">나바호어</language>
			<language type="nwc">네와르어 (고전)</language>
			<language type="ny">니안자어; 치츄어; 츄어</language>
			<language type="nym">니암웨지어</language>
			<language type="nyn">니안콜어</language>
			<language type="nyo">뉴로어</language>
			<language type="nzi">느지마어</language>
			<language type="oc">오크어</language>
			<language type="oj">오지브웨이어</language>
			<language type="om">오로모어 (아판)</language>
			<language type="or">오리야어</language>
			<language type="os">오세트어</language>
			<language type="osa">오세이지어</language>
			<language type="ota">터키어, 오스만 (1500-1928)</language>
			<language type="oto">오토미안어</language>
			<language type="pa">펀잡어</language>
			<language type="paa">파푸아어 (기타)</language>
			<language type="pag">판가시난어</language>
			<language type="pal">팔레비어</language>
			<language type="pam">팜팡가어</language>
			<language type="pap">파피아먼토어</language>
			<language type="pau">파라우안어</language>
			<language type="peo">고대 페르시아어</language>
			<language type="phi">필리핀어 (기타)</language>
			<language type="phn">페니키아어</language>
			<language type="pi">팔리어</language>
			<language type="pl">폴란드어</language>
			<language type="pon">폼페이어</language>
			<language type="pra">프라크리트어</language>
			<language type="pro">고대 프로방스어</language>
			<language type="ps">파시토어 (푸시토)</language>
			<language type="pt">포르투갈어</language>
			<language type="pt_BR">포르투갈어 (브라질)</language>
			<language type="qu">케추아어</language>
			<language type="raj">라자스탄어</language>
			<language type="rap">라파뉴이</language>
			<language type="rar">라로통가어</language>
			<language type="rm">레토로만어</language>
			<language type="rn">룬디어</language>
			<language type="ro">루마니아어</language>
			<language type="roa">로망스어 (기타)</language>
			<language type="rom">집시어</language>
			<language type="root">어근</language>
			<language type="ru">러시아어</language>
			<language type="rup">아로마니아어</language>
			<language type="rw">르완다어</language>
			<language type="sa">산스크리트어</language>
			<language type="sad">산다웨어</language>
			<language type="sah">야큐트어</language>
			<language type="sai">남아메리카 인디언어 (기타)</language>
			<language type="sal">샐리시어어</language>
			<language type="sam">사마리아 아랍어</language>
			<language type="sas">사사크어</language>
			<language type="sat">산탈리어</language>
			<language type="sc">사르디니아어</language>
			<language type="scn">시칠리아어</language>
			<language type="sco">스코틀랜드어</language>
			<language type="sd">신디어</language>
			<language type="se">북부 사미어</language>
			<language type="sel">셀쿠프어</language>
			<language type="sem">셈어 (기타)</language>
			<language type="sg">산고어</language>
			<language type="sga">아일랜드, 고대 (900년 까지)</language>
			<language type="sgn">수화</language>
			<language type="sh">세르비아-크로아티아어</language>
			<language type="shn">샨어</language>
			<language type="si">스리랑카어</language>
			<language type="sid">시다모어</language>
			<language type="sio">수족어</language>
			<language type="sit">중국 티베트 어족</language>
			<language type="sk">슬로바키아어</language>
			<language type="sl">슬로베니아어</language>
			<language type="sla">슬라브어 (기타)</language>
			<language type="sm">사모아어</language>
			<language type="sma">남부 사미어</language>
			<language type="smi">사미어 (기타)</language>
			<language type="smj">룰레 사미어</language>
			<language type="smn">이나리 사미어</language>
			<language type="sms">스콜트 사미어</language>
			<language type="sn">쇼나어</language>
			<language type="snk">소닌케어</language>
			<language type="so">소말리아어</language>
			<language type="sog">소그디엔어</language>
			<language type="son">송가이족어</language>
			<language type="sq">알바니아어</language>
			<language type="sr">세르비아어</language>
			<language type="srn">스라난 통가어</language>
			<language type="srr">세레르어</language>
			<language type="ss">시스와티어</language>
			<language type="ssa">니로-사하람어 (기타)</language>
			<language type="st">소토어 (남부)</language>
			<language type="su">순다어</language>
			<language type="suk">수쿠마족어</language>
			<language type="sus">수수어</language>
			<language type="sux">수메르어</language>
			<language type="sv">스웨덴어</language>
			<language type="sw">스와힐리어</language>
			<language type="syc">시리아어 (고전)</language>
			<language type="syr">시리아어</language>
			<language type="ta">타밀어</language>
			<language type="tai">태국어 (기타)</language>
			<language type="te">텔루구어</language>
			<language type="tem">팀니어</language>
			<language type="ter">테레노어</language>
			<language type="tet">테툼어</language>
			<language type="tg">타지키스탄어</language>
			<language type="th">태국어</language>
			<language type="ti">티그리냐어</language>
			<language type="tig">티그레어</language>
			<language type="tiv">티비어</language>
			<language type="tk">투르크멘어</language>
			<language type="tkl">토켈라우제도어</language>
			<language type="tl">타갈로그어</language>
			<language type="tlh">클링온어</language>
			<language type="tli">틀링깃족어</language>
			<language type="tmh">타마섹어</language>
			<language type="tn">세츠와나어</language>
			<language type="to">통가어</language>
			<language type="tog">통가어 (니아살랜드)</language>
			<language type="tpi">토크 피신어</language>
			<language type="tr">터키어</language>
			<language type="ts">총가어</language>
			<language type="tsi">트심시안어</language>
			<language type="tt">타타르어</language>
			<language type="tum">툼부카어</language>
			<language type="tup">투피어</language>
			<language type="tut">알타이어족 (기타)</language>
			<language type="tvl">투발루어</language>
			<language type="tw">트위어</language>
			<language type="ty">타히티어</language>
			<language type="tyv">투비니안어</language>
			<language type="udm">우드말트어</language>
			<language type="ug">위구르어</language>
			<language type="uga">유가리틱어</language>
			<language type="uk">우크라이나어</language>
			<language type="umb">윤번두어</language>
			<language type="und">결정되지않음</language>
			<language type="ur">우르두어</language>
			<language type="uz">우즈베크어</language>
			<language type="vai">바이어</language>
			<language type="ve">벤다어</language>
			<language type="vi">베트남어</language>
			<language type="vo">볼라퓌크어</language>
			<language type="vot">보틱어</language>
			<language type="wa">왈론어</language>
			<language type="wak">와카샨어</language>
			<language type="wal">와라모어</language>
			<language type="war">와라이어</language>
			<language type="was">와쇼어</language>
			<language type="wen">소르브어</language>
			<language type="wo">올로프어</language>
			<language type="xal">칼미크어</language>
			<language type="xh">코사어</language>
			<language type="yao">야오족어</language>
			<language type="yap">얍페세어</language>
			<language type="yi">이디시어</language>
			<language type="yo">요루바어</language>
			<language type="ypk">야픽어</language>
			<language type="za">주앙어</language>
			<language type="zap">사포테크어</language>
			<language type="zbl">블리스 심볼</language>
			<language type="zen">제나가어</language>
			<language type="zh">중국어</language>
			<language type="zh_Hans">중국어(간체)</language>
			<language type="zh_Hant">중국어 (번체)</language>
			<language type="znd">아잔데족어</language>
			<language type="zu">줄루어</language>
			<language type="zun">주니어</language>
			<language type="zza">자자어</language>
		</languages>
		<scripts>
			<script type="Arab">아랍 문자</script>
			<script type="Armn">아르메니아 문자</script>
			<script type="Bali">발리 문자</script>
			<script type="Batk">바타크 문자</script>
			<script type="Beng">벵골 문자</script>
			<script type="Blis">블리스기호 문자</script>
			<script type="Bopo">주음부호</script>
			<script type="Brah">브라미</script>
			<script type="Brai">브라유 점자</script>
			<script type="Bugi">부기 문자</script>
			<script type="Buhd">부히드 문자</script>
			<script type="Cans">통합 캐나다 토착어</script>
			<script type="Cari">카리 문자</script>
			<script type="Cham">칸 고어</script>
			<script type="Cher">체로키 문자</script>
			<script type="Cirt">키르쓰</script>
			<script type="Copt">콥트 문자</script>
			<script type="Cprt">키프로스 문자</script>
			<script type="Cyrl">키릴 문자</script>
			<script type="Cyrs">고대교회슬라브어 키릴문자</script>
			<script type="Deva">데바나가리</script>
			<script type="Dsrt">디저렛 문자</script>
			<script type="Egyd">고대 이집트 민중문자</script>
			<script type="Egyh">고대 이집트 신관문자</script>
			<script type="Egyp">고대 이집트 신성문자</script>
			<script type="Ethi">에티오피아 문자</script>
			<script type="Geor">그루지야 문자</script>
			<script type="Glag">글라골 문자</script>
			<script type="Goth">고트 문자</script>
			<script type="Grek">그리스 문자</script>
			<script type="Gujr">구쟈라티 문자</script>
			<script type="Guru">구르무키 문자</script>
			<script type="Hang">한글</script>
			<script type="Hani">한자</script>
			<script type="Hano">하누누어</script>
			<script type="Hans">중국어 간체</script>
			<script type="Hant">중국어 번체</script>
			<script type="Hebr">히브리어</script>
			<script type="Hira">히라카나</script>
			<script type="Hmng">파하우 몽 문자</script>
			<script type="Hrkt">가나</script>
			<script type="Hung">고대 헝가리 문자</script>
			<script type="Inds">인더스 문자</script>
			<script type="Ital">고이탈리아어</script>
			<script type="Java">자바 문자</script>
			<script type="Jpan">일본 문자</script>
			<script type="Kali">카야 리 문자</script>
			<script type="Kana">가타카나</script>
			<script type="Khar">카로슈티</script>
			<script type="Khmr">크메르어</script>
			<script type="Knda">칸나다</script>
			<script type="Kore">한국어</script>
			<script type="Lana">란나 문자</script>
			<script type="Laoo">라오어</script>
			<script type="Latf">독일식 로마자</script>
			<script type="Latg">아일랜드식 로마자</script>
			<script type="Latn">라틴어</script>
			<script type="Lepc">렙차문자</script>
			<script type="Limb">림부어</script>
			<script type="Lina">선형 문자 A</script>
			<script type="Linb">선형 문자 B</script>
			<script type="Lyci">리키아어</script>
			<script type="Lydi">리디아어</script>
			<script type="Mand">만데아어</script>
			<script type="Maya">마야 상형 문자</script>
			<script type="Mero">메로에 문자</script>
			<script type="Mlym">말라얄람어</script>
			<script type="Mong">몽골어</script>
			<script type="Mymr">미얀마어</script>
			<script type="Nkoo">응코 문자</script>
			<script type="Ogam">오검 문자</script>
			<script type="Olck">올 치키 문자</script>
			<script type="Orkh">오르혼어</script>
			<script type="Orya">오리야어</script>
			<script type="Osma">오스만야어</script>
			<script type="Perm">고대 페름어</script>
			<script type="Phag">파스파 문자</script>
			<script type="Phnx">페니키아 문자</script>
			<script type="Plrd">폴라드 표음 문자</script>
			<script type="Rjng">레장 문자</script>
			<script type="Roro">롱고롱고</script>
			<script type="Runr">룬 문자</script>
			<script type="Sara">사라티</script>
			<script type="Saur">사우라슈트라 문자</script>
			<script type="Sgnw">수화 문자</script>
			<script type="Shaw">샤비안어</script>
			<script type="Sinh">신할라어</script>
			<script type="Sund">순다 문자</script>
			<script type="Sylo">실헤티 나가리</script>
			<script type="Syrc">시리아어</script>
			<script type="Syre">에스트랑겔로식 시리아 문자</script>
			<script type="Syrj">서부 시리아 문자</script>
			<script type="Syrn">동부 시리아 문자</script>
			<script type="Tagb">타반와어</script>
			<script type="Tale">타이 레어</script>
			<script type="Talu">신 타이 루에</script>
			<script type="Taml">타밀어</script>
			<script type="Telu">탤루그어</script>
			<script type="Teng">텡과르</script>
			<script type="Tfng">티피나그</script>
			<script type="Tglg">타갈로그어</script>
			<script type="Thaa">타나어</script>
			<script type="Thai">태국어</script>
			<script type="Tibt">티벳어</script>
			<script type="Ugar">우가릿어</script>
			<script type="Vaii">바이어</script>
			<script type="Visp">시화법</script>
			<script type="Xpeo">고대 페르시아 문자</script>
			<script type="Xsux">수메르-아카드어 설형문자</script>
			<script type="Yiii">이어</script>
			<script type="Zxxx">구전</script>
			<script type="Zyyy">일반 문자</script>
			<script type="Zzzz">기록되지 않은 문자(구전)</script>
		</scripts>
		<territories>
			<territory type="001">세계</territory>
			<territory type="002">아프리카</territory>
			<territory type="003">북아메리카</territory>
			<territory type="005">남아메리카[남미]</territory>
			<territory type="009">오세아니아, 대양주</territory>
			<territory type="011">서아프리카</territory>
			<territory type="013">중앙 아메리카</territory>
			<territory type="014">동부 아프리카</territory>
			<territory type="015">북부 아프리카</territory>
			<territory type="017">중부 아프리카</territory>
			<territory type="018">남부 아프리카</territory>
			<territory type="019">아메리카 대륙</territory>
			<territory type="021">북부 아메리카</territory>
			<territory type="029">카리브 해 제도</territory>
			<territory type="030">동아시아</territory>
			<territory type="034">남아시아</territory>
			<territory type="035">동남 아시아</territory>
			<territory type="039">남유럽</territory>
			<territory type="053">오스트레일리아와 뉴질랜드</territory>
			<territory type="054">멜라네시아</territory>
			<territory type="057">미크로네시아 지역</territory>
			<territory type="061">폴리네시아</territory>
			<territory type="062">중남 아시아</territory>
			<territory type="142">아시아</territory>
			<territory type="143">중앙 아시아</territory>
			<territory type="145">서아시아</territory>
			<territory type="150">유럽</territory>
			<territory type="151">동유럽</territory>
			<territory type="154">북유럽</territory>
			<territory type="155">서유럽</territory>
			<territory type="172">독립 국가 연합</territory>
			<territory type="419">라틴 아메리카 및 카리브 해 제도</territory>
			<territory type="AD">안도라</territory>
			<territory type="AE">아랍에미리트 연합</territory>
			<territory type="AF">아프가니스탄</territory>
			<territory type="AG">앤티가 바부다</territory>
			<territory type="AI">안길라</territory>
			<territory type="AL">알바니아</territory>
			<territory type="AM">아르메니아</territory>
			<territory type="AN">네덜란드령 안틸레스</territory>
			<territory type="AO">앙골라</territory>
			<territory type="AQ">남극 대륙</territory>
			<territory type="AR">아르헨티나</territory>
			<territory type="AS">아메리칸 사모아</territory>
			<territory type="AT">오스트리아</territory>
			<territory type="AU">오스트레일리아</territory>
			<territory type="AW">아루바</territory>
			<territory type="AX">올란드 제도</territory>
			<territory type="AZ">아제르바이잔</territory>
			<territory type="BA">보스니아 헤르체고비나</territory>
			<territory type="BB">바베이도스</territory>
			<territory type="BD">방글라데시</territory>
			<territory type="BE">벨기에</territory>
			<territory type="BF">부르키나파소</territory>
			<territory type="BG">불가리아</territory>
			<territory type="BH">바레인</territory>
			<territory type="BI">부룬디</territory>
			<territory type="BJ">베냉</territory>
			<territory type="BL">생 바르텔르미</territory>
			<territory type="BM">버뮤다</territory>
			<territory type="BN">브루나이</territory>
			<territory type="BO">볼리비아</territory>
			<territory type="BR">브라질</territory>
			<territory type="BS">바하마</territory>
			<territory type="BT">부탄</territory>
			<territory type="BV">부베</territory>
			<territory type="BW">보츠와나</territory>
			<territory type="BY">벨라루스</territory>
			<territory type="BZ">벨리즈</territory>
			<territory type="CA">캐나다</territory>
			<territory type="CC">코코스제도</territory>
			<territory type="CD">콩고 민주공화국</territory>
			<territory type="CF">중앙 아프리카 공화국</territory>
			<territory type="CG">콩고</territory>
			<territory type="CH">스위스</territory>
			<territory type="CI">코트디부아르</territory>
			<territory type="CK">쿡제도</territory>
			<territory type="CL">칠레</territory>
			<territory type="CM">카메룬</territory>
			<territory type="CN">중국</territory>
			<territory type="CO">콜롬비아</territory>
			<territory type="CR">코스타리카</territory>
			<territory type="CS">세르비아 및 몬테네그로</territory>
			<territory type="CU">쿠바</territory>
			<territory type="CV">까뽀베르데</territory>
			<territory type="CX">크리스마스섬</territory>
			<territory type="CY">사이프러스</territory>
			<territory type="CZ">체코</territory>
			<territory type="DE">독일</territory>
			<territory type="DJ">지부티</territory>
			<territory type="DK">덴마크</territory>
			<territory type="DM">도미니카</territory>
			<territory type="DO">도미니카 공화국</territory>
			<territory type="DZ">알제리</territory>
			<territory type="EC">에콰도르</territory>
			<territory type="EE">에스토니아</territory>
			<territory type="EG">이집트</territory>
			<territory type="EH">서사하라</territory>
			<territory type="ER">에리트리아</territory>
			<territory type="ES">스페인</territory>
			<territory type="ET">이디오피아</territory>
			<territory type="FI">핀란드</territory>
			<territory type="FJ">피지</territory>
			<territory type="FK">포클랜드 군도</territory>
			<territory type="FM">마이크로네시아</territory>
			<territory type="FO">페로제도</territory>
			<territory type="FR">프랑스</territory>
			<territory type="GA">가봉</territory>
			<territory type="GB">영국</territory>
			<territory type="GD">그레나다</territory>
			<territory type="GE">그루지야</territory>
			<territory type="GF">프랑스령 기아나</territory>
			<territory type="GG">건지</territory>
			<territory type="GH">가나</territory>
			<territory type="GI">지브롤터</territory>
			<territory type="GL">그린란드</territory>
			<territory type="GM">감비아</territory>
			<territory type="GN">기니</territory>
			<territory type="GP">과달로프</territory>
			<territory type="GQ">적도 기니</territory>
			<territory type="GR">그리스</territory>
			<territory type="GS">사우스조지아-사우스샌드위치제도</territory>
			<territory type="GT">과테말라</territory>
			<territory type="GU">괌</territory>
			<territory type="GW">기네비쏘</territory>
			<territory type="GY">가이아나</territory>
			<territory type="HK">홍콩</territory>
			<territory type="HM">허드섬-맥도널드제도</territory>
			<territory type="HN">온두라스</territory>
			<territory type="HR">크로아티아</territory>
			<territory type="HT">아이티</territory>
			<territory type="HU">헝가리</territory>
			<territory type="ID">인도네시아</territory>
			<territory type="IE">아일랜드</territory>
			<territory type="IL">이스라엘</territory>
			<territory type="IM">맨 섬</territory>
			<territory type="IN">인도</territory>
			<territory type="IO">영국령인도양식민지</territory>
			<territory type="IQ">이라크</territory>
			<territory type="IR">이란</territory>
			<territory type="IS">아이슬란드</territory>
			<territory type="IT">이탈리아</territory>
			<territory type="JE">저지</territory>
			<territory type="JM">자메이카</territory>
			<territory type="JO">요르단</territory>
			<territory type="JP">일본</territory>
			<territory type="KE">케냐</territory>
			<territory type="KG">키르기스스탄</territory>
			<territory type="KH">캄보디아</territory>
			<territory type="KI">키리바시</territory>
			<territory type="KM">코모로스</territory>
			<territory type="KN">세인트크리스토퍼 네비스</territory>
			<territory type="KP">조선 민주주의 인민 공화국</territory>
			<territory type="KR">대한민국</territory>
			<territory type="KW">쿠웨이트</territory>
			<territory type="KY">케이맨제도</territory>
			<territory type="KZ">카자흐스탄</territory>
			<territory type="LA">라오스</territory>
			<territory type="LB">레바논</territory>
			<territory type="LC">세인트루시아</territory>
			<territory type="LI">리히텐슈타인</territory>
			<territory type="LK">스리랑카</territory>
			<territory type="LR">라이베리아</territory>
			<territory type="LS">레소토</territory>
			<territory type="LT">리투아니아</territory>
			<territory type="LU">룩셈부르크</territory>
			<territory type="LV">라트비아</territory>
			<territory type="LY">리비아</territory>
			<territory type="MA">모로코</territory>
			<territory type="MC">모나코</territory>
			<territory type="MD">몰도바</territory>
			<territory type="ME">몬테네그로</territory>
			<territory type="MF">생 마르탱</territory>
			<territory type="MG">마다가스카르</territory>
			<territory type="MH">마샬 군도</territory>
			<territory type="MK">마케도니아</territory>
			<territory type="ML">말리</territory>
			<territory type="MM">미얀마</territory>
			<territory type="MN">몽골</territory>
			<territory type="MO">마카오</territory>
			<territory type="MP">북마리아나제도</territory>
			<territory type="MQ">말티니크</territory>
			<territory type="MR">모리타니</territory>
			<territory type="MS">몬트세라트</territory>
			<territory type="MT">몰타</territory>
			<territory type="MU">모리셔스</territory>
			<territory type="MV">몰디브</territory>
			<territory type="MW">말라위</territory>
			<territory type="MX">멕시코</territory>
			<territory type="MY">말레이시아</territory>
			<territory type="MZ">모잠비크</territory>
			<territory type="NA">나미비아</territory>
			<territory type="NC">뉴 칼레도니아</territory>
			<territory type="NE">니제르</territory>
			<territory type="NF">노퍽섬</territory>
			<territory type="NG">나이지리아</territory>
			<territory type="NI">니카라과</territory>
			<territory type="NL">네덜란드</territory>
			<territory type="NO">노르웨이</territory>
			<territory type="NP">네팔</territory>
			<territory type="NR">나우루</territory>
			<territory type="NU">니우에</territory>
			<territory type="NZ">뉴질랜드</territory>
			<territory type="OM">오만</territory>
			<territory type="PA">파나마</territory>
			<territory type="PE">페루</territory>
			<territory type="PF">프랑스령 폴리네시아</territory>
			<territory type="PG">파푸아뉴기니</territory>
			<territory type="PH">필리핀</territory>
			<territory type="PK">파키스탄</territory>
			<territory type="PL">폴란드</territory>
			<territory type="PM">세인트피에르-미케롱</territory>
			<territory type="PN">핏케언섬</territory>
			<territory type="PR">푸에르토리코</territory>
			<territory type="PS">팔레스타인 지구</territory>
			<territory type="PT">포르투갈</territory>
			<territory type="PW">팔라우</territory>
			<territory type="PY">파라과이</territory>
			<territory type="QA">카타르</territory>
			<territory type="QO">오세아니아 외곽</territory>
			<territory type="QU">유럽 연합</territory>
			<territory type="RE">리유니온</territory>
			<territory type="RO">루마니아</territory>
			<territory type="RS">세르비아</territory>
			<territory type="RU">러시아</territory>
			<territory type="RW">르완다</territory>
			<territory type="SA">사우디아라비아</territory>
			<territory type="SB">솔로몬 제도</territory>
			<territory type="SC">쉐이쉘</territory>
			<territory type="SD">수단</territory>
			<territory type="SE">스웨덴</territory>
			<territory type="SG">싱가포르</territory>
			<territory type="SH">세인트헬레나</territory>
			<territory type="SI">슬로베니아</territory>
			<territory type="SJ">스발바르제도-얀마웬섬</territory>
			<territory type="SK">슬로바키아</territory>
			<territory type="SL">시에라리온</territory>
			<territory type="SM">산마리노</territory>
			<territory type="SN">세네갈</territory>
			<territory type="SO">소말리아</territory>
			<territory type="SR">수리남</territory>
			<territory type="ST">상투메 프린시페</territory>
			<territory type="SV">엘살바도르</territory>
			<territory type="SY">시리아</territory>
			<territory type="SZ">스와질랜드</territory>
			<territory type="TC">터크스케이커스제도</territory>
			<territory type="TD">차드</territory>
			<territory type="TF">프랑스 남부 지방</territory>
			<territory type="TG">토고</territory>
			<territory type="TH">태국</territory>
			<territory type="TJ">타지키스탄</territory>
			<territory type="TK">토켈라우</territory>
			<territory type="TL">동티모르</territory>
			<territory type="TM">투르크메니스탄</territory>
			<territory type="TN">튀니지</territory>
			<territory type="TO">통가</territory>
			<territory type="TR">터키</territory>
			<territory type="TT">트리니다드 토바고</territory>
			<territory type="TV">투발루</territory>
			<territory type="TW">대만</territory>
			<territory type="TZ">탄자니아</territory>
			<territory type="UA">우크라이나</territory>
			<territory type="UG">우간다</territory>
			<territory type="UM">미국령 해외 제도</territory>
			<territory type="US">미국</territory>
			<territory type="UY">우루과이</territory>
			<territory type="UZ">우즈베키스탄</territory>
			<territory type="VA">바티칸</territory>
			<territory type="VC">세인트빈센트그레나딘</territory>
			<territory type="VE">베네수엘라</territory>
			<territory type="VG">영국령 버진 아일랜드</territory>
			<territory type="VI">미국령 버진 아일랜드</territory>
			<territory type="VN">베트남</territory>
			<territory type="VU">바누아투</territory>
			<territory type="WF">왈리스-푸투나 제도</territory>
			<territory type="WS">사모아</territory>
			<territory type="YE">예멘</territory>
			<territory type="YT">마요티</territory>
			<territory type="ZA">남아프리카</territory>
			<territory type="ZM">잠비아</territory>
			<territory type="ZW">짐바브웨</territory>
			<territory type="ZZ">알수없거나 유효하지 않은 지역</territory>
		</territories>
		<variants>
			<variant type="REVISED">개정</variant>
		</variants>
		<keys>
			<key type="calendar">달력</key>
			<key type="collation">정렬</key>
			<key type="currency">통화</key>
		</keys>
		<types>
			<type type="big5han" key="collation">중국어 번체 정렬 순서 - Big5</type>
			<type type="buddhist" key="calendar">불교력</type>
			<type type="chinese" key="calendar">중국력</type>
			<type type="direct" key="collation">순서</type>
			<type type="gb2312han" key="collation">중국어 간체 정렬 순서 - GB2312</type>
			<type type="gregorian" key="calendar">태양력</type>
			<type type="hebrew" key="calendar">히브리력</type>
			<type type="islamic" key="calendar">이슬람력</type>
			<type type="islamic-civil" key="calendar">이슬람 상용력</type>
			<type type="japanese" key="calendar">일본력</type>
			<type type="phonebook" key="collation">전화번호부순</type>
			<type type="pinyin" key="collation">병음순</type>
			<type type="stroke" key="collation">자획순</type>
			<type type="traditional" key="collation">전통 역법</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">미터법</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">언어: {0}</codePattern>
			<codePattern type="script">스크립트: {0}</codePattern>
			<codePattern type="territory">지역: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[가 각 간 갇-갊 감-갗 같-객 갠 갤 갬 갭 갯-갱 갸 갹 갼 걀 걋 걍 걔 걘 걜 거 걱 건 걷 걸 걺 검 겁 것-겆 겉-게 겐 겔 겜 겝 겟-겡 겨-겪 견 겯 결 겸 겹 겻-경 곁 계 곈 곌 곕 곗 고 곡 곤 곧 골 곪 곬 곯-곱 곳 공 곶 과 곽 관 괄 괆 괌 괍 괏 광 괘 괜 괠 괩 괬 괭 괴 괵 괸 괼 굄 굅 굇 굉 교 굔 굘 굡 굣 구 국 군 굳-굶 굻-굽 굿 궁 궂 궈 궉 권 궐 궜 궝 궤 궷 귀 귁 귄 귈 귐 귑 귓 규 균 귤 그 극 근 귿-긁 금 급 긋 긍 긔 기 긱 긴 긷 길 긺 김 깁 깃 깅 깆 깊 까-깎 깐 깔 깖 깜 깝 깟-깡 깥 깨 깩 깬 깰 깸 깹 깻-깽 꺄 꺅 꺌 꺼-꺾 껀 껄 껌 껍 껏-껑 께 껙 껜 껨 껫 껭 껴 껸 껼 꼇 꼈 꼍 꼐 꼬 꼭 꼰 꼲 꼴 꼼 꼽 꼿 꽁-꽃 꽈 꽉 꽐 꽜 꽝 꽤 꽥 꽹 꾀 꾄 꾈 꾐 꾑 꾕 꾜 꾸 꾹 꾼 꿀 꿇-꿉 꿋 꿍 꿎 꿔 꿜 꿨 꿩 꿰 꿱 꿴 꿸 뀀 뀁 뀄 뀌 뀐 뀔 뀜 뀝 뀨 끄 끅 끈 끊 끌 끎 끓-끕 끗 끙 끝 끼 끽 낀 낄 낌 낍 낏 낑 나-낚 난 낟-낢 남 납 낫-낯 낱 낳-낵 낸 낼 냄 냅 냇-냉 냐 냑 냔 냘 냠 냥 너 넉 넋 넌 널 넒 넓 넘 넙 넛-넝 넣-넥 넨 넬 넴 넵 넷-넹 녀 녁 년 녈 념 녑 녔 녕 녘 녜 녠 노 녹 논 놀 놂 놈 놉 놋 농 높-놔 놘 놜 놨 뇌 뇐 뇔 뇜 뇝 뇟 뇨 뇩 뇬 뇰 뇹 뇻 뇽 누 눅 눈 눋 눌 눔 눕 눗 눙 눠 눴 눼 뉘 뉜 뉠 뉨 뉩 뉴 뉵 뉼 늄 늅 늉 느 늑 는 늘-늚 늠 늡 늣 능 늦 늪 늬 늰 늴 니 닉 닌 닐 닒 님 닙 닛 닝 닢 다-닦 단 닫-닯 닳-답 닷-닻 닿-댁 댄 댈 댐 댑 댓-댕 댜 더-덖 던 덛 덜 덞 덟 덤 덥 덧 덩 덫 덮 데 덱 덴 델 뎀 뎁 뎃-뎅 뎌 뎐 뎔 뎠 뎡 뎨 뎬 도 독 돈 돋 돌 돎 돐 돔 돕 돗 동 돛 돝 돠 돤 돨 돼 됐 되 된 될 됨 됩 됫 됴 두 둑 둔 둘 둠 둡 둣 둥 둬 뒀 뒈 뒝 뒤 뒨 뒬 뒵 뒷 뒹 듀 듄 듈 듐 듕 드 득 든 듣 들 듦 듬 듭 듯 등 듸 디 딕 딘 딛 딜 딤 딥 딧-딪 따 딱 딴 딸 땀 땁 땃-땅 땋-땍 땐 땔 땜 땝 땟-땡 떠 떡 떤 떨 떪 떫 떰 떱 떳-떵 떻-떽 뗀 뗄 뗌 뗍 뗏-뗑 뗘 뗬 또 똑 똔 똘 똥 똬 똴 뙈 뙤 뙨 뚜 뚝 뚠 뚤 뚫 뚬 뚱 뛔 뛰 뛴 뛸 뜀 뜁 뜅 뜨 뜩 뜬 뜯 뜰 뜸 뜹 뜻 띄 띈 띌 띔 띕 띠 띤 띨 띰 띱 띳 띵 라 락 란 랄 람 랍 랏-랒 랖-랙 랜 랠 램 랩 랫-랭 랴 략 랸 럇 량 러 럭 런 럴 럼 럽 럿-렁 렇-렉 렌 렐 렘 렙 렛 렝 려 력 련 렬 렴 렵 렷-령 례 롄 롑 롓 로 록 론 롤 롬 롭 롯 롱 롸 롼 뢍 뢨 뢰 뢴 뢸 룀 룁 룃 룅 료 룐 룔 룝 룟 룡 루 룩 룬 룰 룸 룹 룻 룽 뤄 뤘 뤠 뤼 뤽 륀 륄 륌 륏 륑 류 륙 륜 률 륨 륩 륫 륭 르 륵 른 를 름 릅 릇 릉 릊 릍 릎 리 릭 린 릴 림 립 릿 링 마 막 만 많-맒 맘 맙 맛 망 맞 맡 맣-맥 맨 맬 맴 맵 맷-맺 먀 먁 먈 먕 머 먹 먼 멀 멂 멈 멉 멋 멍 멎 멓-멕 멘 멜 멤 멥 멧-멩 며 멱 면 멸 몃-명 몇 몌 모 목 몫 몬 몰 몲 몸 몹 못 몽 뫄 뫈 뫘 뫙 뫼 묀 묄 묍 묏 묑 묘 묜 묠 묩 묫 무-묶 문 묻-묾 뭄 뭅 뭇 뭉 뭍 뭏 뭐 뭔 뭘 뭡 뭣 뭬 뮈 뮌 뮐 뮤 뮨 뮬 뮴 뮷 므 믄 믈 믐 믓 미 믹 민 믿 밀 밂 밈 밉 밋-밍 및 밑 바-반 받-밟 밤 밥 밧 방 밭 배 백 밴 밸 뱀 뱁 뱃-뱅 뱉 뱌 뱍 뱐 뱝 버 벅 번 벋 벌 벎 범 법 벗 벙 벚 베 벡 벤 벧 벨 벰 벱 벳-벵 벼 벽 변 별 볍 볏-병 볕 볘 볜 보-볶 본 볼 봄 봅 봇 봉 봐 봔 봤 봬 뵀 뵈 뵉 뵌 뵐 뵘 뵙 뵤 뵨 부 북 분 붇-붊 붐 붑 붓 붕 붙 붚 붜 붤 붰 붸 뷔 뷕 뷘 뷜 뷩 뷰 뷴 뷸 븀 븃 븅 브 븍 븐 블 븜 븝 븟 비 빅 빈 빌 빎 빔 빕 빗 빙-빛 빠 빡 빤 빨 빪 빰 빱 빳-빵 빻-빽 뺀 뺄 뺌 뺍 뺏-뺑 뺘 뺙 뺨 뻐 뻑 뻔 뻗 뻘 뻠 뻣-뻥 뻬 뼁 뼈 뼉 뼘 뼙 뼛-뼝 뽀 뽁 뽄 뽈 뽐 뽑 뽕 뾔 뾰 뿅 뿌 뿍 뿐 뿔 뿜 뿟 뿡 쀼 쁑 쁘 쁜 쁠 쁨 쁩 삐 삑 삔 삘 삠 삡 삣 삥 사 삭 삯 산 삳-삶 삼 삽 삿-상 샅 새 색 샌 샐 샘 샙 샛-생 샤 샥 샨 샬 샴 샵 샷 샹 섀 섄 섈 섐 섕 서-선 섣 설 섦 섧 섬 섭 섯-성 섶 세 섹 센 셀 셈 셉 셋-셍 셔 셕 션 셜 셤 셥 셧-셩 셰 셴 셸 솅 소-솎 손 솔 솖 솜 솝 솟 송 솥 솨 솩 솬 솰 솽 쇄 쇈 쇌 쇔 쇗 쇘 쇠 쇤 쇨 쇰 쇱 쇳 쇼 쇽 숀 숄 숌 숍 숏 숑 수 숙 순 숟 술 숨 숩 숫 숭 숯 숱 숲 숴 쉈 쉐 쉑 쉔 쉘 쉠 쉥 쉬 쉭 쉰 쉴 쉼 쉽 쉿 슁 슈 슉 슐 슘 슛 슝 스 슥 슨 슬 슭 슴 습 슷 승 시 식 신 싣 실 싫-십 싯 싱 싶 싸 싹 싻 싼 쌀 쌈 쌉 쌌 쌍 쌓-쌕 쌘 쌜 쌤 쌥 쌨 쌩 썅 써 썩 썬 썰 썲 썸 썹 썼 썽 쎄 쎈 쎌 쏀 쏘 쏙 쏜 쏟 쏠 쏢 쏨 쏩 쏭 쏴 쏵 쏸 쐈 쐐 쐤 쐬 쐰 쐴 쐼 쐽 쑈 쑤 쑥 쑨 쑬 쑴 쑵 쑹 쒀 쒔 쒜 쒸 쒼 쓩 쓰 쓱 쓴 쓸 쓺 쓿-씁 씌 씐 씔 씜 씨 씩 씬 씰 씸 씹 씻 씽 아 악 안-않 알-앎 앓-압 앗-앙 앝 앞 애 액 앤 앨 앰 앱 앳-앵 야 약 얀 얄 얇 얌 얍 얏 양 얕 얗 얘 얜 얠 얩 어 억 언 얹 얻-얾 엄-엊 엌 엎 에 엑 엔 엘 엠 엡 엣 엥 여-엮 연 열 엶 엷 염-영 옅-예 옌 옐 옘 옙 옛 옜 오 옥 온 올-옮 옰 옳-옵 옷 옹 옻 와 왁 완 왈 왐 왑 왓-왕 왜 왝 왠 왬 왯 왱 외 왹 왼 욀 욈 욉 욋 욍 요 욕 욘 욜 욤 욥 욧 용 우 욱 운 울-욺 움 웁 웃 웅 워 웍 원 월 웜 웝 웠 웡 웨 웩 웬 웰 웸 웹 웽 위 윅 윈 윌 윔 윕 윗 윙 유 육 윤 율 윰 윱 윳 융 윷 으 윽 은 을 읊 음 읍 읏 응-의 읜 읠 읨 읫 이 익 인 일-읾 잃-입 잇-잊 잎 자 작 잔 잖-잘 잚 잠 잡 잣-잦 재 잭 잰 잴 잼 잽 잿-쟁 쟈 쟉 쟌 쟎 쟐 쟘 쟝 쟤 쟨 쟬 저 적 전 절 젊 점 접 젓 정 젖 제 젝 젠 젤 젬 젭 젯 젱 져 젼 졀 졈 졉 졌 졍 졔 조 족 존 졸 졺 좀 좁 좃 종-좇 좋-좍 좔 좝 좟 좡 좨 좼 좽 죄 죈 죌 죔 죕 죗 죙 죠 죡 죤 죵 주 죽 준 줄-줆 줌 줍 줏 중 줘 줬 줴 쥐 쥑 쥔 쥘 쥠 쥡 쥣 쥬 쥰 쥴 쥼 즈 즉 즌 즐 즘 즙 즛 증 지 직 진 짇 질 짊 짐 집 짓 징 짖 짙 짚 짜 짝 짠 짢 짤 짧 짬 짭 짯-짱 째 짹 짼 쨀 쨈 쨉 쨋-쨍 쨔 쨘 쨩 쩌 쩍 쩐 쩔 쩜 쩝 쩟-쩡 쩨 쩽 쪄 쪘 쪼 쪽 쫀 쫄 쫌 쫍 쫏 쫑 쫓 쫘 쫙 쫠 쫬 쫴 쬈 쬐 쬔 쬘 쬠 쬡 쭁 쭈 쭉 쭌 쭐 쭘 쭙 쭝 쭤 쭸 쭹 쮜 쮸 쯔 쯤 쯧 쯩 찌 찍 찐 찔 찜 찝 찡 찢 찧-착 찬 찮 찰 참 찹 찻-찾 채 책 챈 챌 챔 챕 챗-챙 챠 챤 챦 챨 챰 챵 처 척 천 철 첨 첩 첫-청 체 첵 첸 첼 쳄 쳅 쳇 쳉 쳐 쳔 쳤 쳬 쳰 촁 초 촉 촌 촐 촘 촙 촛 총 촤 촨 촬 촹 최 쵠 쵤 쵬 쵭 쵯 쵱 쵸 춈 추 축 춘 출 춤 춥 춧 충 춰 췄 췌 췐 취 췬 췰 췸 췹 췻 췽 츄 츈 츌 츔 츙 츠 측 츤 츨 츰 츱 츳 층 치 칙 친 칟-칡 침 칩 칫 칭 카 칵 칸 칼 캄 캅 캇 캉 캐 캑 캔 캘 캠 캡 캣-캥 캬 캭 컁 커 컥 컨 컫 컬 컴 컵 컷-컹 케 켁 켄 켈 켐 켑 켓 켕 켜 켠 켤 켬 켭 켯-켱 켸 코 콕 콘 콜 콤 콥 콧 콩 콰 콱 콴 콸 쾀 쾅 쾌 쾡 쾨 쾰 쿄 쿠 쿡 쿤 쿨 쿰 쿱 쿳 쿵 쿼 퀀 퀄 퀑 퀘 퀭 퀴 퀵 퀸 퀼 큄 큅 큇 큉 큐 큔 큘 큠 크 큭 큰 클 큼 큽 킁 키 킥 킨 킬 킴 킵 킷 킹 타 탁 탄 탈 탉 탐 탑 탓-탕 태 택 탠 탤 탬 탭 탯-탱 탸 턍 터 턱 턴 털 턺 텀 텁 텃-텅 테 텍 텐 텔 템 텝 텟 텡 텨 텬 텼 톄 톈 토 톡 톤 톨 톰 톱 톳 통 톺 톼 퇀 퇘 퇴 퇸 툇 툉 툐 투 툭 툰 툴 툼 툽 툿 퉁 퉈 퉜 퉤 튀 튁 튄 튈 튐 튑 튕 튜 튠 튤 튬 튱 트 특 튼 튿 틀 틂 틈 틉 틋 틔 틘 틜 틤 틥 티 틱 틴 틸 팀 팁 팃 팅 파-팎 판 팔 팖 팜 팝 팟-팡 팥 패 팩 팬 팰 팸 팹 팻-팽 퍄 퍅 퍼 퍽 펀 펄 펌 펍 펏-펑 페 펙 펜 펠 펨 펩 펫 펭 펴 편 펼 폄 폅 폈 평 폐 폘 폡 폣 포 폭 폰 폴 폼 폽 폿 퐁 퐈 퐝 푀 푄 표 푠 푤 푭 푯 푸 푹 푼 푿 풀 풂 품 풉 풋 풍 풔 풩 퓌 퓐 퓔 퓜 퓟 퓨 퓬 퓰 퓸 퓻 퓽 프 픈 플 픔 픕 픗 피 픽 핀 필 핌 핍 핏 핑 하 학 한 할 핥 함 합 핫 항 해 핵 핸 핼 햄 햅 햇-행 햐 향 허 헉 헌 헐 헒 험 헙 헛 헝 헤 헥 헨 헬 헴 헵 헷 헹 혀 혁 현 혈 혐 협 혓-형 혜 혠 혤 혭 호 혹 혼 홀 홅 홈 홉 홋 홍 홑 화 확 환 활 홧 황 홰 홱 홴 횃 횅 회 획 횐 횔 횝 횟 횡 효 횬 횰 횹 횻 후 훅 훈 훌 훑 훔 훗 훙 훠 훤 훨 훰 훵 훼 훽 휀 휄 휑 휘 휙 휜 휠 휨 휩 휫 휭 휴 휵 휸 휼 흄 흇 흉 흐 흑 흔 흖-흙 흠 흡 흣 흥 흩 희 흰 흴 흼 흽 힁 히 힉 힌 힐 힘 힙 힛 힝]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[丘 串 乃 久 乖 九 乞 乫 乾 亂 亘 交 京 仇 今 介 件 价 企 伋 伎 伽 佳 佶 侃 來 侊 供 係 俓 俱 個 倞 倦 倨 假 偈 健 傀 傑 傾 僅 僑 價 儆 儉 儺 光 克 兢 內 公 共 其 具 兼 冀 冠 凱 刊 刮 券 刻 剋 剛 劇 劍 劒 功 加 劤 劫 勁 勍 勘 勤 勸 勻 勾 匡 匣 區 南 卦 却 卵 卷 卿 厥 去 及 口 句 叩 叫 可 各 吉 君 告 呱 呵 咎 咬 哥 哭 啓 喀 喇 喝 喫 喬 嗜 嘉 嘔 器 囊 困 固 圈 國 圭 圻 均 坎 坑 坤 坰 坵 垢 基 埼 堀 堅 堈 堪 堺 塊 塏 境 墾 壙 壞 夔 奇 奈 奎 契 奸 妓 妗 姑 姜 姦 娘 娜 嫁 嬌 孔 季 孤 宏 官 客 宮 家 寄 寇 寡 寬 尻 局 居 屆 屈 岐 岡 岬 崎 崑 崗 嵌 嵐 嶇 嶠 工 巧 巨 己 巾 干 幹 幾 庚 庫 康 廊 廐 廓 廣 建 弓 强 彊 徑 忌 急 怪 怯 恐 恝 恪 恭 悸 愆 感 愧 愷 愾 慊 慣 慤 慨 慶 慷 憩 憬 憾 懃 懇 懦 懶 懼 戈 戒 戟 戡 扱 技 抉 拉 拏 拐 拒 拘 括 拮 拱 拳 拷 拿 捏 据 捲 捺 掘 掛 控 揀 揆 揭 擊 擎 擒 據 擧 攪 攷 改 攻 故 敎 救 敢 敬 敲 斛 斤 旗 旣 昆 昑 景 晷 暇 暖 暠 暻 曠 曲 更 曷 朗 朞 期 机 杆 杞 杰 枏 果 枯 架 枸 柑 柩 柬 柯 校 根 格 桀 桂 桔 桿 梏 梗 械 梱 棄 棋 棍 棘 棨 棺 楗 楠 極 槁 構 槐 槨 槪 槻 槿 樂 橄 橋 橘 機 檄 檎 檢 櫃 欄 權 欺 款 歌 歐 ­¸ 殼 毆 毬 氣 求 江 汨 汲 決 汽 沂 沽 洛 洸 浪 涇 淃 淇 減 渠 渴 湳 溝 溪 滑 滾 漑 潔 潰 澗 激 濫 灌 灸 炅 炚 炬 烙 烱 煖 爛 牽 犬 狂 狗 狡 狼 獗 玖 玘 珂 珏 珖 珙 珞 珪 球 琦 琨 琪 琯 琴 瑾 璂 璟 璣 璥 瓊 瓘 瓜 甄 甘 甲 男 畇 界 畸 畺 畿 疆 疥 疳 痂 痙 痼 癎 癩 癸 皆 皎 皐 盖 監 看 眷 睾 瞰 瞼 瞿 矜 矩 矯 硅 硬 碁 碣 磎 磬 磯 磵 祁 祇 祈 祛 祺 禁 禽 科 稈 稼 稽 稿 穀 究 穹 空 窘 窟 窮 窺 竅 竟 竭 競 竿 筋 筐 筠 箇 箕 箝 管 簡 粳 糠 系 糾 紀 納 紘 級 紺 絅 結 絞 給 絳 絹 絿 經 綱 綺 緊 繫 繭 繼 缺 罐 罫 羅 羈 羌 羔 群 羹 翹 考 耆 耉 耕 耭 耿 肌 肝 股 肩 肯 肱 胛 胱 脚 脛 腔 腱 膈 膏 膠 臘 臼 舅 舊 舡 艮 艱 芎 芥 芩 芹 苛 苟 苦 苽 茄 莖 菅 菊 菌 菓 菫 菰 落 葛 葵 蓋 蕎 蕨 薑 藁 藍 藿 蘭 蘿 虔 蚣 蛟 蝎 螺 蠟 蠱 街 衢 衲 衾 衿 袈 袞 袴 裙 裸 褐 襁 襟 襤 見 規 覡 覲 覺 觀 角 計 記 訣 訶 詭 誇 誡 誥 課 諫 諾 謙 講 謳 謹 譏 警 譴 谷 谿 豈 貢 貫 貴 賈 購 赳 起 跏 距 跨 踞 蹇 蹶 躬 軀 車 軌 軍 軻 較 輕 轎 轟 辜 近 迦 迲 适 逑 逕 逵 過 遣 遽 邏 那 邯 邱 郊 郎 郡 郭 酪 醵 金 鈐 鈞 鉀 鉅 鉗 鉤 銶 鋸 鋼 錡 錤 錦 錮 鍋 鍵 鎌 鎧 鏡 鑑 鑒 鑛 開 間 閘 閣 閨 闕 關 降 階 隔 隙 雇 難 鞏 鞠 鞨 鞫 頃 頸 顆 顧 飢 餃 館 饉 饋 饑 駒 駕 駱 騎 騏 騫 驅 驕 驚 驥 骨 高 鬼 魁 鮫 鯤 鯨 鱇 鳩 鵑 鵠 鷄 鷗 鸞 麒 麴 黔 鼓 龕 龜]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<am>오전</am>
				<pm>오후</pm>
				<eras>
					<eraAbbr>
						<era type="0">불기</era>
					</eraAbbr>
				</eras>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
						</dateTimeFormat>
					</dateTimeFormatLength>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<am>오전</am>
			</calendar>
			<calendar type="ethiopic">
				<am>오전</am>
				<pm>오후</pm>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1월</month>
							<month type="2">2월</month>
							<month type="3">3월</month>
							<month type="4">4월</month>
							<month type="5">5월</month>
							<month type="6">6월</month>
							<month type="7">7월</month>
							<month type="8">8월</month>
							<month type="9">9월</month>
							<month type="10">10월</month>
							<month type="11">11월</month>
							<month type="12">12월</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1월</month>
							<month type="2">2월</month>
							<month type="3">3월</month>
							<month type="4">4월</month>
							<month type="5">5월</month>
							<month type="6">6월</month>
							<month type="7">7월</month>
							<month type="8">8월</month>
							<month type="9">9월</month>
							<month type="10">10월</month>
							<month type="11">11월</month>
							<month type="12">12월</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">1월</month>
							<month type="2">2월</month>
							<month type="3">3월</month>
							<month type="4">4월</month>
							<month type="5">5월</month>
							<month type="6">6월</month>
							<month type="7">7월</month>
							<month type="8">8월</month>
							<month type="9">9월</month>
							<month type="10">10월</month>
							<month type="11">11월</month>
							<month type="12">12월</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1월</month>
							<month type="2">2월</month>
							<month type="3">3월</month>
							<month type="4">4월</month>
							<month type="5">5월</month>
							<month type="6">6월</month>
							<month type="7">7월</month>
							<month type="8">8월</month>
							<month type="9">9월</month>
							<month type="10">10월</month>
							<month type="11">11월</month>
							<month type="12">12월</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1월</month>
							<month type="2">2월</month>
							<month type="3">3월</month>
							<month type="4">4월</month>
							<month type="5">5월</month>
							<month type="6">6월</month>
							<month type="7">7월</month>
							<month type="8">8월</month>
							<month type="9">9월</month>
							<month type="10">10월</month>
							<month type="11">11월</month>
							<month type="12">12월</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">일</day>
							<day type="mon">월</day>
							<day type="tue">화</day>
							<day type="wed">수</day>
							<day type="thu">목</day>
							<day type="fri">금</day>
							<day type="sat">토</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">일요일</day>
							<day type="mon">월요일</day>
							<day type="tue">화요일</day>
							<day type="wed">수요일</day>
							<day type="thu">목요일</day>
							<day type="fri">금요일</day>
							<day type="sat">토요일</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">일</day>
							<day type="mon">월</day>
							<day type="tue">화</day>
							<day type="wed">수</day>
							<day type="thu">목</day>
							<day type="fri">금</day>
							<day type="sat">토</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1분기</quarter>
							<quarter type="2">2분기</quarter>
							<quarter type="3">3분기</quarter>
							<quarter type="4">4분기</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">제 1/4분기</quarter>
							<quarter type="2">제 2/4분기</quarter>
							<quarter type="3">제 3/4분기</quarter>
							<quarter type="4">제 4/4분기</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>오전</am>
				<pm>오후</pm>
				<eras>
					<eraNames>
						<era type="0">서력기원전</era>
						<era type="1">서력기원</era>
					</eraNames>
					<eraAbbr>
						<era type="0">기원전</era>
						<era type="1">서기</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy년 M월 d일 EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy년 M월 d일</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy. M. d.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy. M. d.</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>a hh시 mm분 ss초 v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>a hh시 mm분 ss초 z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>a h:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>a h:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">d일 (E)</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="Hms">H시 m분 s초</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">M. d. (E)</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">MMM d일 (E)</dateFormatItem>
						<dateFormatItem id="MMMMEd">MMMM d일 (E)</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d일</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d일</dateFormatItem>
						<dateFormatItem id="MMdd">MM. dd</dateFormatItem>
						<dateFormatItem id="Md">M. d.</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy. M.</dateFormatItem>
						<dateFormatItem id="yMEd">yyyy. M. d. EEE</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy년 MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">yyyy년 MMM d일 EEE</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy년 MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy년 Q분기</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy년 QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">YY. M.</dateFormatItem>
						<dateFormatItem id="yyMMM">yy년 MMM</dateFormatItem>
						<dateFormatItem id="yyQ">yy년 Q분기</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy. MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M월 ~ M월</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">M. d E ~ M. d E</greatestDifference>
							<greatestDifference id="d">M. d E ~ M. d E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM ~ MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">M월 d일 E ~ M월 d일 E</greatestDifference>
							<greatestDifference id="d">M월 d일 E ~ d일 E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">M월 d일 ~ M월 d일</greatestDifference>
							<greatestDifference id="d">M월 d일 ~ d일</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M. d ~ M. d</greatestDifference>
							<greatestDifference id="d">M. d ~ M. d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d일 ~ d일</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">a h ~ a h</greatestDifference>
							<greatestDifference id="h">a h~h</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">a h:mm ~ a h:mm</greatestDifference>
							<greatestDifference id="h">a h:mm~h:mm</greatestDifference>
							<greatestDifference id="m">a h:mm~h:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">a h:mm ~ a h:mm v</greatestDifference>
							<greatestDifference id="h">a h:mm~h:mm v</greatestDifference>
							<greatestDifference id="m">a h:mm~h:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">a h ~ a h v</greatestDifference>
							<greatestDifference id="h">a h~h v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y년 ~ y년</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy. M ~ yyyy. M</greatestDifference>
							<greatestDifference id="y">yyyy. M ~ yyyy. M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yy. M. d. E ~ yy. M. d. E</greatestDifference>
							<greatestDifference id="d">yy. M. d. E ~ yy. M. d. E</greatestDifference>
							<greatestDifference id="y">yy. M. d. E ~ yy. M. d. E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy년 M월~M월</greatestDifference>
							<greatestDifference id="y">yyyy년 M월 ~ yyyy년 M월</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy년 M월 d일 E ~ M월 d일 E</greatestDifference>
							<greatestDifference id="d">yyyy년 M월 d일 E ~ d일 E</greatestDifference>
							<greatestDifference id="y">yyyy년 M월 d일 E ~ yyyy년 M월 d일 E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy년 MM월 ~ MM월</greatestDifference>
							<greatestDifference id="y">yyyy년 MM월 ~ yyyy년 MM월</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy년 M월 d일 ~ M월 d일</greatestDifference>
							<greatestDifference id="d">yyyy년 M월 d일~d일</greatestDifference>
							<greatestDifference id="y">yyyy년 M월 d일 ~ yyyy년 M월 d일</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy. M. d. ~ yy. M. d.</greatestDifference>
							<greatestDifference id="d">yy. M. d. ~ yy. M. d.</greatestDifference>
							<greatestDifference id="y">yy. M. d. ~ yy. M. d.</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>연호</displayName>
					</field>
					<field type="year">
						<displayName>년</displayName>
					</field>
					<field type="month">
						<displayName>월</displayName>
					</field>
					<field type="week">
						<displayName>주</displayName>
					</field>
					<field type="day">
						<displayName>일</displayName>
						<relative type="0">오늘</relative>
						<relative type="1">내일</relative>
						<relative type="2">모레</relative>
						<relative type="3">3일후</relative>
						<relative type="-1">어제</relative>
						<relative type="-2">그저께</relative>
						<relative type="-3">그끄제</relative>
					</field>
					<field type="weekday">
						<displayName>요일</displayName>
					</field>
					<field type="dayperiod">
						<displayName>오전/오후</displayName>
					</field>
					<field type="hour">
						<displayName>시</displayName>
					</field>
					<field type="minute">
						<displayName>분</displayName>
					</field>
					<field type="second">
						<displayName>초</displayName>
					</field>
					<field type="zone">
						<displayName>시간대</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="islamic-civil">
				<am>오전</am>
				<pm>오후</pm>
			</calendar>
			<calendar type="japanese">
				<am>오전</am>
				<pm>오후</pm>
			</calendar>
			<calendar type="persian">
				<am>오전</am>
				<pm>오후</pm>
			</calendar>
			<calendar type="roc">
				<am>오전</am>
				<pm>오후</pm>
				<eras>
					<eraAbbr>
						<era type="0">중화민국전</era>
						<era type="1">중화민국</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>G y년 M월 d일</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>G y년 M월 d일</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>G y. M. d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>G y. M. d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} 시간</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>알 수 없는 장소</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>안도라</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>두바이</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>카불</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>안티과</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>앙귈라</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>티라나</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>예레반</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>쿠라사오</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>루안다</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>로데라</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>파머</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>남극</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>쇼와</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>모슨</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>데이비스</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>보스토크</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>케이시</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>뒤몽 뒤르빌</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>맥머도</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>리오 가예고스</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>멘도사</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>산후안</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>우수아이아</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>라 리오하</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>산루이스</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>카타마르카</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>후후이</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>뚜꾸만</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>코르도바</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>부에노스 아이레스</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>파고파고</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>비엔나</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>퍼스</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>유클라</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>다윈</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>애들레이드</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>브로컨힐</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>퀴리</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>멜버른</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>호바트</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>린데만</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>시드니</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>브리스베인</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>로드 하우</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>아루바</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>바쿠</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>바베이도스</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>다카</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>브뤼셀</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>와가두구</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>소피아</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>바레인</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>부줌부라</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>포르토노보</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>버뮤다</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>브루나이</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>라파스</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>아이루네페</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>리오 브랑코</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>포르토 벨로</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>보아 비스타</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>마나우스</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>쿠이아바</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>캄포 그란데</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>벨렘</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>아라과이나</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>상파울로</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>바히아</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>포르탈레자</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>마세이오</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>레시페</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>노롱야</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>나소</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>팀부</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>가보로네</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>민스크</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>벨리즈</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>도슨</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>화이트호스</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>이누빅</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>벤쿠버</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>도슨크릭</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>옐로나이프</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>에드먼턴</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>스위프트커런트</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>케임브리지 베이</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>리자이나</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>위니펙</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>리졸루트</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>레이니강</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>랭킹 인렛</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>코랄하버</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>선더베이</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>니피곤</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>토론토</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>몬트리올</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>이칼루이트</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>팡니르퉁</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>몽턴</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>핼리팩스</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>구즈베이</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>글라스베이</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>블랑 사블롱</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>코코스</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>킨샤사</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>루붐바시</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>방기</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>브라자빌</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>취리히</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>아비장</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>라로통가</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>이스터 섬</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>산티아고</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>두알라</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>카슈가르</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>우루무치</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>충칭</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>상하이</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>하얼빈</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>보고타</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>코스타리카</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>하바나</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>카보 베르데</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>크리스마스</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>니코시아</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>베를린</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>지부티</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>코펜하겐</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>도미니카</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>산토도밍고</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>알제</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>갈라파고스</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>과야킬</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>탈린</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>카이로</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>엘아이운</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>아스메라</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>카나리아 제도</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>세우타</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>마드리드</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>아디스아바바</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>헬싱키</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>피지</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>스탠리</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>트루크</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>포나페</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>코스레</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>페로</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>파리</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>리브르빌</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>런던</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>그라나다</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>트빌리시</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>샤이엔</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>아크라</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>지브랄타</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>툴레</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>고드호프</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>스코레스바이선드</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>덴마크샤븐</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>반줄</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>코나크리</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>과델로프</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>말라보</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>아테네</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>남부 조지아</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>과테말라</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>괌</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>비사우</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>가이아나</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>홍콩</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>포르토프랭스</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>부다페스트</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>자카르타</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>폰티아나크</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>마카사르</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>자야푸라</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>더블린</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>예루살렘</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>차고스</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>바그다드</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>테헤란</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>레이캬비크</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>로마</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>자메이카</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>암만</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>도쿄</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>나이로비</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>비슈케크</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>프놈펜</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>엔더베리</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>키리티마티</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>타라와</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>코모로</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>세인트 키츠</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>평양</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>서울</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>쿠웨이트</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>카이만</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>아크타우</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>오랄</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>악토브</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>키질로르다</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>알마티</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>비엔티안</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>베이루트</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>세인트 루시아</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>파두츠</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>콜롬보</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>몬로비아</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>마세루</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>빌니우스</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>룩셈부르크</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>리가</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>트리폴리</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>카사블랑카</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>모나코</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>키시나우</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>안타나나리보</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>콰잘렌</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>마주로</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>바마코</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>랑군</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>호브드</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>울란바토르</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>초이발산</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>마카오</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>사이판</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>마티니크</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>누악쇼트</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>몬세라</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>몰타</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>모리셔스</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>몰디브</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>블랜타이어</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>티후아나</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>에르모시요</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>마사틀란</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>치와와</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>몬테레이</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>멕시코 시티</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>메리다</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>칸쿤</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>쿠알라룸푸르</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>쿠칭</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>마푸토</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>빈트후크</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>누메아</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>니아메</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>노퍽</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>라고스</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>마나과</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>암스텔담</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>오슬로</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>카트만두</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>나우루</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>니우에</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>채텀</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>오클랜드</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>무스카트</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>파나마</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>리마</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>타히티</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>마퀘사스</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>감비어</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>포트모르즈비</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>마닐라</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>카라치</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>바르샤바</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>미퀠론</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>피트카이른</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>푸에르토리코</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>가자</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>아조레스</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>마데이라</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>리스본</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>팔라우</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>아순시온</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>카타르</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>불령 리유니온</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>부쿠레슈티</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>칼리닌그라드</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>모스크바</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>볼고그라트</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>사마라</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>예카테린부르크</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>옴스크</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>노보시비르스크</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>크라스노야르스크</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>이르쿠츠크</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>야쿠츠크</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>블라디보스토크</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>사할린</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>마가단</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>캄차카</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>아나디리</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>키갈리</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>리야드</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>과달카날</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>마헤</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>카르툼</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>스톡홀름</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>싱가포르</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>세인트 헬레나</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>프리타운</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>다카르</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>모가디슈</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>파라마리보</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>사오 투메</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>엘살바도르</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>다마스쿠스</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>음바바네</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>그랜드 터크</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>엔자메나</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>케르켈렌</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>로메</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>방콕</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>두샨베</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>파카오푸</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>딜리</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>아쉬가바트</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>튀니스</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>통가타푸</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>이스탄불</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>포트오브스페인</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>푸나푸티</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>타이베이</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>다르에스살람</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>우주고로트</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>키예프</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>심페로폴</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>자포로지예</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>캄팔라</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>미드웨이</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>존스톤</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>웨이크</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>에이닥</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>놈</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>호놀룰루</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>앵커리지</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>야쿠타트</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>주노</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>로스앤젤레스</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>보이시</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>피닉스</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>십록</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>덴버</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>노스 다코타주, 뉴살렘</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>중부, 노스다코타</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>시카고</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>메노미니</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>인디아나주, 뱅센</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>인디애나주, 피츠버그</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>인디아나주, 텔시티</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>인디애나주 녹스</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>인디아나주, 워너맥</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>인디애나주, 마렝고</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>인디애나폴리스</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>루이빌</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>자포로제</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>켄터키주, 몬티첼로</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>디트로이트</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>뉴욕</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>몬테비데오</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>사마르칸트</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>타슈켄트</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>세인트 빈센트</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>카라카스</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>토르톨라</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>세인트 토마스</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>사이공</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>에파테</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>월리스</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>아피아</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>아덴</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>메요트</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>요하네스버그</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>루사카</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>하라레</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>아크레 표준시</standard>
					<daylight>아크레 하계 표준시</daylight>
				</long>
				<short>
					<standard>ACT (아크레)</standard>
					<daylight>ACST (아크레)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>중앙아프리카 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>동아프리카 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>남아프리카 시간</generic>
					<standard>남아프리카 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>서아프리카 시간</standard>
					<daylight>서아프리카 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<standard>알래스카 표준시</standard>
					<daylight>알래스카 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>아마존 표준시</standard>
					<daylight>아마존 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>중부 표준시</generic>
					<standard>중부 표준시</standard>
					<daylight>미 중부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>동부 표준시</generic>
					<standard>동부 표준시</standard>
					<daylight>미 동부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>산지 표준시</generic>
					<standard>산악 표준시</standard>
					<daylight>미 산지 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>태평양 표준시</generic>
					<standard>태평양 표준시</standard>
					<daylight>미 태평양 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>아라비아 시간</generic>
					<standard>아라비아 표준시</standard>
					<daylight>아라비아 하계 표준시</daylight>
				</long>
				<short>
					<generic>AT(아라비아)</generic>
					<standard>AST(아라비아)</standard>
					<daylight>ADT(아라비아)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>대서양 표준시</generic>
					<standard>대서양 표준시</standard>
					<daylight>미 대서양 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>중앙 오스트레일리아 시간</generic>
					<standard>오스트레일리아 중부 표준시</standard>
					<daylight>오스트레일리아 중부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>오스트레일리아 중서부 시간</generic>
					<standard>오스트레일리아 중서부 표준시</standard>
					<daylight>오스트레일리아 중서부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>동부 오스트레일리아 시간</generic>
					<standard>오스트레일리아 동부 표준시</standard>
					<daylight>오스트레일리아 동부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>서부 오스트레일리아 시간</generic>
					<standard>오스트레일리아 서부 표준시</standard>
					<daylight>오스트레일리아 서부 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>아조레스 표준시</standard>
					<daylight>아조레스 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>브라질리아 표준시</standard>
					<daylight>브라질리아 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="British">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>카보 베르데 표준시</standard>
					<daylight>카보 베르데 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>차모로 시간</generic>
					<standard>차모로 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>채텀 표준시</standard>
					<daylight>채텀 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<standard>중국 표준시</standard>
					<daylight>중국 하계 표준시</daylight>
				</long>
				<short>
					<standard>CST (중국)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>크리스마스섬 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>코코스섬 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>쿡제도 표준시</standard>
					<daylight>쿡제도 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cuba">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>데이비스 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dominican">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>뒤몽 뒤르빌 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>이스터섬 표준시</standard>
					<daylight>이스터섬 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>중부유럽 표준시</standard>
					<daylight>중부유럽 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>동부유럽 표준시</standard>
					<daylight>동부유럽 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>서부 유럽 시간</standard>
					<daylight>서부 유럽 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>포클랜드 표준시</standard>
					<daylight>포클랜드 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>피지 표준시</standard>
					<daylight>피지 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>프랑스령 남쪽식민지 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>그리니치 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>갈라파고스 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gambier">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Goose_Bay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gulf">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guyana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>홍콩 시간</standard>
					<daylight>홍콩 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="India">
				<long>
					<standard>인도 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>영국령 인도양 식민지 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>인도차이나 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>중앙인도네시아 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>동인도네시아 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>서인도네시아 시간</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irish">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>이스라엘 표준시</standard>
					<daylight>이스라엘 하계 표준시</daylight>
				</long>
				<short>
					<standard>IST (이스라엘)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>일본 표준시</standard>
					<daylight>일본 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<standard>한국 표준시</standard>
					<daylight>한국 하계 표준시</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Krasnoyarsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Liberia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>로드 하우 시간</generic>
					<standard>로드 하우 표준시</standard>
					<daylight>로드 하우 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>몰디브 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marquesas">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>모리셔스 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>모슨 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<standard>모스크바 표준시</standard>
					<daylight>모스크바 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>뉴질랜드 시간</generic>
					<standard>뉴질랜드 표준시</standard>
					<daylight>뉴질랜드 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>뉴펀들랜드 표준시</standard>
					<daylight>뉴펀들랜드 하계 표준시</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Niue">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Oral">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Peru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>리유니온 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>로데라 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>세이셸 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>사우스 조지아 표준시</standard>
				</long>
				<short>
					<standard>GST (사우스 조지아)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Suriname">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>쇼와 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tahiti">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>모스토크 표준시</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wallis">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>안도라 페세타</displayName>
			</currency>
			<currency type="AED">
				<displayName>아랍에미리트 디르함</displayName>
			</currency>
			<currency type="AFA">
				<displayName>아프가니 (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>아프가니</displayName>
			</currency>
			<currency type="ALL">
				<displayName>알바니아 레크</displayName>
				<symbol>레크</symbol>
			</currency>
			<currency type="AMD">
				<displayName>아르메니아 드람</displayName>
				<symbol>드램</symbol>
			</currency>
			<currency type="ANG">
				<displayName>네덜란드령 안틸레스 길더</displayName>
			</currency>
			<currency type="AOA">
				<displayName>앙골라 콴자</displayName>
			</currency>
			<currency type="AOK">
				<displayName>앙골라 콴자 (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>앙골라 신콴자 (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>앙골라 콴자 Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>아르헨티나 오스트랄</displayName>
			</currency>
			<currency type="ARP">
				<displayName>아르헨티나 페소 (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>아르헨티나 페소</displayName>
			</currency>
			<currency type="ATS">
				<displayName>호주 실링</displayName>
			</currency>
			<currency type="AUD">
				<displayName>호주 달러</displayName>
				<symbol>A$</symbol>
			</currency>
			<currency type="AWG">
				<displayName>아루바 길더</displayName>
			</currency>
			<currency type="AZM">
				<displayName>아제르바이젠 마나트</displayName>
			</currency>
			<currency type="AZN">
				<displayName>아제르바이잔 마나트</displayName>
			</currency>
			<currency type="BAD">
				<displayName>보스니아-헤르체고비나 디나르</displayName>
			</currency>
			<currency type="BAM">
				<displayName>보스니아-헤르체고비나 태환 마르크</displayName>
			</currency>
			<currency type="BBD">
				<displayName>바베이도스 달러</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>방글라데시 타카</displayName>
			</currency>
			<currency type="BEC">
				<displayName>벨기에 프랑 (태환)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>벨기에 프랑</displayName>
			</currency>
			<currency type="BEL">
				<displayName>벨기에 프랑 (금융)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>불가리아 동전 렛</displayName>
			</currency>
			<currency type="BGN">
				<displayName>불가리아 신권 렛</displayName>
			</currency>
			<currency type="BHD">
				<displayName>바레인 디나르</displayName>
			</currency>
			<currency type="BIF">
				<displayName>부룬디 프랑</displayName>
			</currency>
			<currency type="BMD">
				<displayName>버뮤다 달러</displayName>
				<symbol>BM$</symbol>
			</currency>
			<currency type="BND">
				<displayName>부루나이 달러</displayName>
				<symbol>B$</symbol>
			</currency>
			<currency type="BOB">
				<displayName>볼리비아노</displayName>
			</currency>
			<currency type="BOP">
				<displayName>볼리비아노 페소</displayName>
			</currency>
			<currency type="BRB">
				<displayName>볼리비아노 크루제이루 노보 (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>브라질 크루자두</displayName>
			</currency>
			<currency type="BRE">
				<displayName>브라질 크루제이루 (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>브라질 레알</displayName>
			</currency>
			<currency type="BRN">
				<displayName>브라질 크루자두 노보</displayName>
			</currency>
			<currency type="BRR">
				<displayName>브라질 크루제이루</displayName>
			</currency>
			<currency type="BSD">
				<displayName>바하마 달러</displayName>
			</currency>
			<currency type="BTN">
				<displayName>부탄 눌투눔</displayName>
			</currency>
			<currency type="BUK">
				<displayName>버마 차트</displayName>
			</currency>
			<currency type="BWP">
				<displayName>보츠와나 폴라</displayName>
			</currency>
			<currency type="BYB">
				<displayName>벨라루스 신권 루블 (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>벨라루스 루블</displayName>
			</currency>
			<currency type="BZD">
				<displayName>벨리즈 달러</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>캐나다 달러</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>콩고 프랑 콩골라스</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR 유로</displayName>
			</currency>
			<currency type="CHF">
				<displayName>스위스 프랑</displayName>
			</currency>
			<currency type="CHW">
				<displayName>WIR 프랑</displayName>
			</currency>
			<currency type="CLP">
				<displayName>칠레 페소</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>중국 위안 인민폐</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="COP">
				<displayName>콜롬비아 페소</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>코스타리카 콜론</displayName>
			</currency>
			<currency type="CSD">
				<displayName>고 세르비아 디나르</displayName>
			</currency>
			<currency type="CSK">
				<displayName>체코슬로바키아 동전 코루나</displayName>
			</currency>
			<currency type="CUP">
				<displayName>쿠바 페소</displayName>
			</currency>
			<currency type="CVE">
				<displayName>카보베르데 에스쿠도</displayName>
			</currency>
			<currency type="CYP">
				<displayName>싸이프러스 파운드</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>체코 공화국 코루나</displayName>
			</currency>
			<currency type="DDM">
				<displayName>동독 오스트마르크</displayName>
			</currency>
			<currency type="DEM">
				<displayName>독일 마르크</displayName>
			</currency>
			<currency type="DJF">
				<displayName>지부티 프랑</displayName>
			</currency>
			<currency type="DKK">
				<displayName>덴마크 크로네</displayName>
			</currency>
			<currency type="DOP">
				<displayName>도미니카 페소</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>알제리 디나르</displayName>
			</currency>
			<currency type="ECS">
				<displayName>에쿠아도르 수크레</displayName>
			</currency>
			<currency type="EEK">
				<displayName>에스토니아 크룬</displayName>
			</currency>
			<currency type="EGP">
				<displayName>이집트 파운드</displayName>
			</currency>
			<currency type="ERN">
				<displayName>에리트리아 나크파</displayName>
			</currency>
			<currency type="ESA">
				<displayName>스페인 페세타(예금)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>스페인 페세타(변환 예금)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>스페인 페세타</displayName>
			</currency>
			<currency type="ETB">
				<displayName>이디오피아 비르</displayName>
			</currency>
			<currency type="EUR">
				<displayName>유로화</displayName>
			</currency>
			<currency type="FIM">
				<displayName>핀란드 마르카</displayName>
			</currency>
			<currency type="FJD">
				<displayName>피지 달러</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>포클랜드제도 파운드</displayName>
			</currency>
			<currency type="FRF">
				<displayName>프랑스 프랑</displayName>
				<symbol>₣</symbol>
			</currency>
			<currency type="GBP">
				<displayName>영국령 파운드 스털링</displayName>
			</currency>
			<currency type="GEK">
				<displayName>그루지야 지폐 라리트</displayName>
			</currency>
			<currency type="GEL">
				<displayName>그루지야 라리</displayName>
			</currency>
			<currency type="GHC">
				<displayName>가나 시디</displayName>
			</currency>
			<currency type="GIP">
				<displayName>지브롤터 파운드</displayName>
			</currency>
			<currency type="GMD">
				<displayName>감비아 달라시</displayName>
			</currency>
			<currency type="GNF">
				<displayName>기니 프랑</displayName>
			</currency>
			<currency type="GNS">
				<displayName>기니 시리</displayName>
			</currency>
			<currency type="GRD">
				<displayName>그리스 드라크마</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>과테말라 케트살</displayName>
			</currency>
			<currency type="GWE">
				<displayName>포르투갈령 기니 에스쿠도</displayName>
			</currency>
			<currency type="GWP">
				<displayName>기네비쏘 페소</displayName>
			</currency>
			<currency type="GYD">
				<displayName>가이아나 달러</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>홍콩 달러</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>온두라스 렘피라</displayName>
			</currency>
			<currency type="HRD">
				<displayName>크로아티아 디나르</displayName>
			</currency>
			<currency type="HRK">
				<displayName>크로아티아 쿠나</displayName>
			</currency>
			<currency type="HTG">
				<displayName>하이티 구르드</displayName>
			</currency>
			<currency type="HUF">
				<displayName>헝가리 포린트</displayName>
			</currency>
			<currency type="IDR">
				<displayName>인도네시아 루피아</displayName>
			</currency>
			<currency type="IEP">
				<displayName>아일랜드 파운드</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>이스라엘 파운드</displayName>
			</currency>
			<currency type="ILS">
				<displayName>이스라엘 신권 세켈</displayName>
			</currency>
			<currency type="INR">
				<displayName>인도 루피</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>이라크 디나르</displayName>
			</currency>
			<currency type="IRR">
				<displayName>이란 리얄</displayName>
			</currency>
			<currency type="ISK">
				<displayName>아이슬란드 크로나</displayName>
			</currency>
			<currency type="ITL">
				<displayName>이탈리아 리라</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>자메이카 달러</displayName>
			</currency>
			<currency type="JOD">
				<displayName>요르단 디나르</displayName>
			</currency>
			<currency type="JPY">
				<displayName>일본 엔</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>케냐 실링</displayName>
			</currency>
			<currency type="KGS">
				<displayName>키르기스스탄 솜</displayName>
			</currency>
			<currency type="KHR">
				<displayName>캄보디아 리얄</displayName>
			</currency>
			<currency type="KMF">
				<displayName>코모르 프랑</displayName>
			</currency>
			<currency type="KPW">
				<displayName>조선 민주주의 인민 공화국 원</displayName>
				<symbol>₩</symbol>
			</currency>
			<currency type="KRW">
				<displayName>대한민국 원</displayName>
				<symbol>₩</symbol>
			</currency>
			<currency type="KWD">
				<displayName>쿠웨이트 디나르</displayName>
			</currency>
			<currency type="KYD">
				<displayName>케이맨 제도 달러</displayName>
			</currency>
			<currency type="KZT">
				<displayName>카자흐스탄 텐게</displayName>
			</currency>
			<currency type="LAK">
				<displayName>라오스 키프</displayName>
			</currency>
			<currency type="LBP">
				<displayName>레바논 파운드</displayName>
			</currency>
			<currency type="LKR">
				<displayName>스리랑카 루피</displayName>
			</currency>
			<currency type="LRD">
				<displayName>라이베리아 달러</displayName>
			</currency>
			<currency type="LSL">
				<displayName>레소토 로티</displayName>
			</currency>
			<currency type="LSM">
				<displayName>로티</displayName>
			</currency>
			<currency type="LTL">
				<displayName>리투아니아 리타</displayName>
			</currency>
			<currency type="LTT">
				<displayName>룩셈부르크 타로나</displayName>
			</currency>
			<currency type="LUC">
				<displayName>룩셈부르크 변환 프랑</displayName>
			</currency>
			<currency type="LUF">
				<displayName>룩셈부르크 프랑</displayName>
			</currency>
			<currency type="LUL">
				<displayName>룩셈부르크 재정 프랑</displayName>
			</currency>
			<currency type="LVL">
				<displayName>라트비아 라트</displayName>
			</currency>
			<currency type="LVR">
				<displayName>라트비아 루블</displayName>
			</currency>
			<currency type="LYD">
				<displayName>리비아 디나르</displayName>
			</currency>
			<currency type="MAD">
				<displayName>모로코 디렘</displayName>
			</currency>
			<currency type="MAF">
				<displayName>모로코 프랑</displayName>
			</currency>
			<currency type="MDL">
				<displayName>몰도바 레이</displayName>
			</currency>
			<currency type="MGA">
				<displayName>마다가스카르 아리아리</displayName>
			</currency>
			<currency type="MGF">
				<displayName>마다가스카르 프랑</displayName>
			</currency>
			<currency type="MKD">
				<displayName>마케도니아 디나르</displayName>
			</currency>
			<currency type="MLF">
				<displayName>말리 프랑</displayName>
			</currency>
			<currency type="MMK">
				<displayName>미얀마 키얏</displayName>
			</currency>
			<currency type="MNT">
				<displayName>몽골 투그릭</displayName>
			</currency>
			<currency type="MOP">
				<displayName>마카오 파타카</displayName>
			</currency>
			<currency type="MRO">
				<displayName>모리타니 우기야</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>몰타 리라</displayName>
			</currency>
			<currency type="MTP">
				<displayName>몰타 파운드</displayName>
			</currency>
			<currency type="MUR">
				<displayName>모리셔스 루피</displayName>
			</currency>
			<currency type="MVR">
				<displayName>몰디브 제도 루피아</displayName>
			</currency>
			<currency type="MWK">
				<displayName>말라위 콰쳐</displayName>
			</currency>
			<currency type="MXN">
				<displayName>멕시코 페소</displayName>
			</currency>
			<currency type="MXP">
				<displayName>멕시코 실버 페소 (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>멕시코 UDI(Unidad de Inversion)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>말레이시아 링깃</displayName>
			</currency>
			<currency type="MZE">
				<displayName>모잠비크 에스쿠도</displayName>
			</currency>
			<currency type="MZM">
				<displayName>고 모잠비크 메티칼</displayName>
			</currency>
			<currency type="MZN">
				<displayName>모잠비크 메티칼</displayName>
			</currency>
			<currency type="NAD">
				<displayName>나미비아 달러</displayName>
			</currency>
			<currency type="NGN">
				<displayName>니제르 나이라</displayName>
			</currency>
			<currency type="NIC">
				<displayName>니카라과 코르도바</displayName>
			</currency>
			<currency type="NIO">
				<displayName>니카라과 코르도바 오로</displayName>
			</currency>
			<currency type="NLG">
				<displayName>네델란드 길더</displayName>
			</currency>
			<currency type="NOK">
				<displayName>노르웨이 크로네</displayName>
			</currency>
			<currency type="NPR">
				<displayName>네팔 루피</displayName>
			</currency>
			<currency type="NZD">
				<displayName>뉴질랜드 달러</displayName>
			</currency>
			<currency type="OMR">
				<displayName>오만 리얄</displayName>
			</currency>
			<currency type="PAB">
				<displayName>파나마 발보아</displayName>
			</currency>
			<currency type="PEI">
				<displayName>페루 인티</displayName>
			</currency>
			<currency type="PEN">
				<displayName>페루 솔 누에보</displayName>
			</currency>
			<currency type="PES">
				<displayName>페루 솔</displayName>
			</currency>
			<currency type="PGK">
				<displayName>파푸아뉴기니 키나</displayName>
			</currency>
			<currency type="PHP">
				<displayName>필리핀 페소</displayName>
			</currency>
			<currency type="PKR">
				<displayName>파키스탄 루피</displayName>
			</currency>
			<currency type="PLN">
				<displayName>폴란드 즐로티</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>폴란드 즐로티 (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>포르투갈 에스쿠도</displayName>
			</currency>
			<currency type="PYG">
				<displayName>파라과이 과라니</displayName>
			</currency>
			<currency type="QAR">
				<displayName>카타르 리얄</displayName>
			</currency>
			<currency type="RHD">
				<displayName>로디지아 달러</displayName>
			</currency>
			<currency type="ROL">
				<displayName>루마니아 레이</displayName>
			</currency>
			<currency type="RON">
				<displayName>루마니아 레우</displayName>
			</currency>
			<currency type="RSD">
				<displayName>세르비아 디나르</displayName>
			</currency>
			<currency type="RUB">
				<displayName>러시아 루블</displayName>
			</currency>
			<currency type="RUR">
				<displayName>러시아 루블 (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>르완다 프랑</displayName>
			</currency>
			<currency type="SAR">
				<displayName>사우디아라비아 리얄</displayName>
			</currency>
			<currency type="SBD">
				<displayName>솔로몬 제도 달러</displayName>
			</currency>
			<currency type="SCR">
				<displayName>세이쉴 루피</displayName>
			</currency>
			<currency type="SDD">
				<displayName>수단 디나르</displayName>
			</currency>
			<currency type="SDP">
				<displayName>수단 파운드</displayName>
			</currency>
			<currency type="SEK">
				<displayName>스웨덴 크로나</displayName>
			</currency>
			<currency type="SGD">
				<displayName>싱가폴 달러</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>세인트헬레나 파운드</displayName>
			</currency>
			<currency type="SIT">
				<displayName>슬로베니아 톨라르</displayName>
			</currency>
			<currency type="SKK">
				<displayName>슬로바키아 코루나</displayName>
			</currency>
			<currency type="SLL">
				<displayName>시에라리온 리온</displayName>
			</currency>
			<currency type="SOS">
				<displayName>소말리아 실링</displayName>
			</currency>
			<currency type="SRD">
				<displayName>수리남 달러</displayName>
			</currency>
			<currency type="SRG">
				<displayName>수리남 길더</displayName>
			</currency>
			<currency type="STD">
				<displayName>상투메 프린시페 도브라</displayName>
			</currency>
			<currency type="SUR">
				<displayName>소련 루블</displayName>
			</currency>
			<currency type="SVC">
				<displayName>엘살바도르 콜론</displayName>
			</currency>
			<currency type="SYP">
				<displayName>시리아 파운드</displayName>
			</currency>
			<currency type="SZL">
				<displayName>스와질란드 릴랑게니</displayName>
			</currency>
			<currency type="THB">
				<displayName>태국 바트</displayName>
			</currency>
			<currency type="TJR">
				<displayName>타지키스탄 루블</displayName>
			</currency>
			<currency type="TJS">
				<displayName>타지키스탄 소모니</displayName>
			</currency>
			<currency type="TMM">
				<displayName>투르크메니스탄 마나트</displayName>
			</currency>
			<currency type="TND">
				<displayName>튀니지 디나르</displayName>
			</currency>
			<currency type="TOP">
				<displayName>통가 파앙가</displayName>
			</currency>
			<currency type="TPE">
				<displayName>티모르 에스쿠도</displayName>
			</currency>
			<currency type="TRL">
				<displayName>터키 리라</displayName>
			</currency>
			<currency type="TRY">
				<displayName>새로운 터키 리라</displayName>
			</currency>
			<currency type="TTD">
				<displayName>트리니다드 토바고 달러</displayName>
			</currency>
			<currency type="TWD">
				<displayName>대만 신권 달러</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>탄자니아 실링</displayName>
			</currency>
			<currency type="UAH">
				<displayName>우크라이나 그리브나</displayName>
			</currency>
			<currency type="UAK">
				<displayName>우크라이나 카보바네츠</displayName>
			</currency>
			<currency type="UGS">
				<displayName>우간다 실링 (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>우간다 실링</displayName>
			</currency>
			<currency type="USD">
				<displayName>미국 달러</displayName>
			</currency>
			<currency type="USN">
				<displayName>미국 달러(다음날)</displayName>
			</currency>
			<currency type="USS">
				<displayName>미국 달러(당일)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>우루과이 페소 (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>우루과이 페소 우루과요</displayName>
			</currency>
			<currency type="UZS">
				<displayName>우즈베키스탄 숨</displayName>
			</currency>
			<currency type="VEB">
				<displayName>베네주엘라 볼리바르</displayName>
			</currency>
			<currency type="VND">
				<displayName>베트남 동</displayName>
			</currency>
			<currency type="VUV">
				<displayName>바누아투 바투</displayName>
			</currency>
			<currency type="WST">
				<displayName>서 사모아 탈라</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA 프랑 BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>은화</displayName>
			</currency>
			<currency type="XAU">
				<displayName>금</displayName>
			</currency>
			<currency type="XBA">
				<displayName>유르코 (유럽 회계 단위)</displayName>
			</currency>
			<currency type="XBB">
				<displayName>유럽 통화 동맹</displayName>
			</currency>
			<currency type="XBC">
				<displayName>유럽 계산 단위 (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>유럽 계산 단위 (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>동카리브 달러</displayName>
			</currency>
			<currency type="XDR">
				<displayName>특별인출권</displayName>
			</currency>
			<currency type="XEU">
				<displayName>유럽 환율 단위</displayName>
			</currency>
			<currency type="XFO">
				<displayName>프랑스 Gold 프랑</displayName>
			</currency>
			<currency type="XFU">
				<displayName>프랑스 UIC-프랑</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA 프랑 BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>팔라듐</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP 프랑</displayName>
			</currency>
			<currency type="XPT">
				<displayName>백금</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET 기금</displayName>
			</currency>
			<currency type="XTS">
				<displayName>테스트 통화 코드</displayName>
			</currency>
			<currency type="XXX">
				<displayName>알수없거나 유효하지않은 통화단위</displayName>
			</currency>
			<currency type="YDD">
				<displayName>예멘 디나르</displayName>
			</currency>
			<currency type="YER">
				<displayName>예멘 리알</displayName>
			</currency>
			<currency type="YUD">
				<displayName>유고슬라비아 동전 디나르</displayName>
			</currency>
			<currency type="YUM">
				<displayName>유고슬라비아 노비 디나르</displayName>
			</currency>
			<currency type="YUN">
				<displayName>유고슬라비아 전환 디나르</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>남아프리카 랜드 (금융)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>남아프리카 랜드</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>쟘비아 콰쳐</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>자이르 신권 자이르</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>자이르 자이르</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>짐비브웨 달러</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} 일</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} 시</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} 분</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} 월</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} 초</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} 주</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} 년</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>예</yesstr>
			<nostr>아니오</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�""Locale/Data/az_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.28 $"/>
		<generation date="$Date: 2008/06/24 16:36:03 $"/>
		<language type="az"/>
		<script type="Latn"/>
	</identity>
</ldml>
PKpG[դۜ5�5�Locale/Data/fi.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.109 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="fi"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abhaasi</language>
			<language type="ace">aceh</language>
			<language type="ach">atšoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyge</language>
			<language type="ae">avesta</language>
			<language type="af">afrikaans</language>
			<language type="afa">afro-aasialainen kieli</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadi</language>
			<language type="ale">aleutti</language>
			<language type="alg">algonkin-kieli</language>
			<language type="alt">altai</language>
			<language type="am">amhara</language>
			<language type="an">aragonia</language>
			<language type="ang">muinaisenglanti</language>
			<language type="anp">angika</language>
			<language type="apa">apaššikieli</language>
			<language type="ar">arabia</language>
			<language type="arc">aramea</language>
			<language type="arn">araukaani</language>
			<language type="arp">arapaho</language>
			<language type="art">keinotekoinen kieli</language>
			<language type="arw">arawak</language>
			<language type="as">assami</language>
			<language type="ast">asturia</language>
			<language type="ath">athabasca-kieli</language>
			<language type="aus">australialainen kieli</language>
			<language type="av">avaari</language>
			<language type="awa">awadhi</language>
			<language type="ay">aimara</language>
			<language type="az">azeri</language>
			<language type="ba">baškiiri</language>
			<language type="bad">banda</language>
			<language type="bai">bamileke-kieli</language>
			<language type="bal">belutši</language>
			<language type="ban">bali</language>
			<language type="bas">basa</language>
			<language type="bat">balttilainen kieli</language>
			<language type="be">valkovenäjä</language>
			<language type="bej">bedža</language>
			<language type="bem">bemba</language>
			<language type="ber">berberikieli</language>
			<language type="bg">bulgaria</language>
			<language type="bh">bihari</language>
			<language type="bho">bhodžpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">mustajalka</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantukieli</language>
			<language type="bo">tiibet</language>
			<language type="br">bretoni</language>
			<language type="bra">bradž</language>
			<language type="bs">bosnia</language>
			<language type="btk">batak</language>
			<language type="bua">burjaatti</language>
			<language type="bug">bugi</language>
			<language type="byn">bilin</language>
			<language type="ca">katalaani</language>
			<language type="cad">caddo</language>
			<language type="cai">keskiamerikkalainen intiaanikieli</language>
			<language type="car">karibi</language>
			<language type="cau">kaukasialainen kieli</language>
			<language type="cch">atsam</language>
			<language type="ce">tšetšeeni</language>
			<language type="ceb">cebuano</language>
			<language type="cel">kelttiläinen kieli</language>
			<language type="ch">tšamorro</language>
			<language type="chb">tšibtša</language>
			<language type="chg">tšagatai</language>
			<language type="chk">chuuk</language>
			<language type="chm">mari</language>
			<language type="chn">chinook-jargon</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">tšam-kieli</language>
			<language type="co">korsika</language>
			<language type="cop">kopti</language>
			<language type="cpe">englantiin perustuva kreoli- tai pidgin-kieli</language>
			<language type="cpf">ranskaan perustuva kreoli- tai pidgin-kieli</language>
			<language type="cpp">portugaliin perustuva kreoli- tai pidgin-kieli</language>
			<language type="cr">cree</language>
			<language type="crh">krimintataari</language>
			<language type="crp">kreoli- tai pidgin-kieli</language>
			<language type="cs">tšekki</language>
			<language type="csb">kašubi</language>
			<language type="cu">kirkkoslaavi</language>
			<language type="cus">kuušilainen kieli</language>
			<language type="cv">tšuvassi</language>
			<language type="cy">kymri</language>
			<language type="da">tanska</language>
			<language type="dak">dakota</language>
			<language type="dar">dargi</language>
			<language type="day">dajakki</language>
			<language type="de">saksa</language>
			<language type="de_AT">itävallansaksa</language>
			<language type="de_CH">sveitsinyläsaksa</language>
			<language type="del">delaware</language>
			<language type="den">slevi</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">dravidakieli</language>
			<language type="dsb">alasorbi</language>
			<language type="dua">duala</language>
			<language type="dum">keskihollanti</language>
			<language type="dv">divehi</language>
			<language type="dyu">djula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">muinaisegypti</language>
			<language type="eka">ekajuk</language>
			<language type="el">kreikka</language>
			<language type="elx">elami</language>
			<language type="en">englanti</language>
			<language type="en_AU">australianenglanti</language>
			<language type="en_CA">kanadanenglanti</language>
			<language type="en_GB">britannianenglanti</language>
			<language type="en_US">amerikanenglanti</language>
			<language type="enm">keskienglanti</language>
			<language type="eo">esperanto</language>
			<language type="es">espanja</language>
			<language type="es_419">amerikanespanja</language>
			<language type="es_ES">espanjanespanja</language>
			<language type="et">viro</language>
			<language type="eu">baski</language>
			<language type="ewo">ewondo</language>
			<language type="fa">farsi</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">suomi</language>
			<language type="fil">filipino</language>
			<language type="fiu">suomalais-ugrilainen kieli</language>
			<language type="fj">fidži</language>
			<language type="fo">fääri</language>
			<language type="fon">fon</language>
			<language type="fr">ranska</language>
			<language type="fr_CA">kanadanranska</language>
			<language type="fr_CH">sveitsinranska</language>
			<language type="frm">keskiranska</language>
			<language type="fro">muinaisranska</language>
			<language type="frr">pohjoisfriisi</language>
			<language type="frs">itäfriisi</language>
			<language type="fur">friuli</language>
			<language type="fy">länsifriisi</language>
			<language type="ga">iiri</language>
			<language type="gaa">ga</language>
			<language type="gay">gajo</language>
			<language type="gba">gbaja</language>
			<language type="gd">gaeli</language>
			<language type="gem">germaaninen kieli</language>
			<language type="gez">ge’ez</language>
			<language type="gil">kiribati</language>
			<language type="gl">galicia</language>
			<language type="gmh">keskiyläsaksa</language>
			<language type="gn">guarani</language>
			<language type="goh">muinaisyläsaksa</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gootti</language>
			<language type="grb">grebo</language>
			<language type="grc">muinaiskreikka</language>
			<language type="gsw">sveitsinsaksa</language>
			<language type="gu">gudžarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwitšin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">havaiji</language>
			<language type="he">heprea</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaino</language>
			<language type="him">himatšali</language>
			<language type="hit">heetti</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri-motu</language>
			<language type="hr">kroatia</language>
			<language type="hsb">yläsorbi</language>
			<language type="ht">haiti</language>
			<language type="hu">unkari</language>
			<language type="hup">hupa</language>
			<language type="hy">armenia</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesia</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">sichuanin-yi</language>
			<language type="ijo">idžo</language>
			<language type="ik">inupiatun</language>
			<language type="ilo">iloko</language>
			<language type="inc">indoarjalainen kieli</language>
			<language type="ine">indoeurooppalainen kieli</language>
			<language type="inh">inguuši</language>
			<language type="io">ido</language>
			<language type="ira">iranilainen kieli</language>
			<language type="iro">irokeesikieli</language>
			<language type="is">islanti</language>
			<language type="it">italia</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japani</language>
			<language type="jbo">lojban</language>
			<language type="jpr">juutalaispersia</language>
			<language type="jrb">juutalaisarabia</language>
			<language type="jv">jaava</language>
			<language type="ka">georgia</language>
			<language type="kaa">karakalpakki</language>
			<language type="kab">kabyyli</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kavi</language>
			<language type="kbd">kabardi</language>
			<language type="kcg">tyap</language>
			<language type="kfo">norsunluurannikonkoro</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisan-kieli</language>
			<language type="kho">khotani</language>
			<language type="ki">kikuju</language>
			<language type="kj">kuanjama</language>
			<language type="kk">kazakki</language>
			<language type="kl">kalaallisut</language>
			<language type="km">khmer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">korea</language>
			<language type="kok">konkani</language>
			<language type="kos">kosrae</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karatšai-balkaari</language>
			<language type="krl">karjala</language>
			<language type="kro">kru-kieli</language>
			<language type="kru">kurukh</language>
			<language type="ks">kašmiri</language>
			<language type="ku">kurdi</language>
			<language type="kum">kumykki</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">korni</language>
			<language type="ky">kirgiisi</language>
			<language type="la">latina</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburg</language>
			<language type="lez">lezgi</language>
			<language type="lg">ganda</language>
			<language type="li">limburg</language>
			<language type="ln">lingala</language>
			<language type="lo">lao</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">liettua</language>
			<language type="lu">katanganluba</language>
			<language type="lua">luluanluba</language>
			<language type="lui">luiseño</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lusai</language>
			<language type="lv">latvia</language>
			<language type="mad">madura</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makassar</language>
			<language type="man">mandingo</language>
			<language type="map">austronesialainen kieli</language>
			<language type="mas">maasai</language>
			<language type="mdf">mokša</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malagassi</language>
			<language type="mga">keski-iiri</language>
			<language type="mh">marshall</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">luokittelematon kieli</language>
			<language type="mk">makedonia</language>
			<language type="mkh">mon-khmer-kieli</language>
			<language type="ml">malajalam</language>
			<language type="mn">mongoli</language>
			<language type="mnc">mantšu</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobo-kieli</language>
			<language type="mo">moldavia</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malaiji</language>
			<language type="mt">malta</language>
			<language type="mul">monia kieliä</language>
			<language type="mun">mundakieli</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandeesi</language>
			<language type="mwr">marwari</language>
			<language type="my">burma</language>
			<language type="myn">maya-kieli</language>
			<language type="myv">ersä</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">pohjoisamerikkalainen intiaanikieli</language>
			<language type="nap">napoli</language>
			<language type="nb">norjan bokmål</language>
			<language type="nd">pohjois-ndebele</language>
			<language type="nds">alasaksa</language>
			<language type="ne">nepali</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">nigeriläis-kongolainen kieli</language>
			<language type="niu">niue</language>
			<language type="nl">hollanti</language>
			<language type="nl_BE">flaami</language>
			<language type="nn">norjan nynorsk</language>
			<language type="no">norja</language>
			<language type="nog">nogai</language>
			<language type="non">muinaisnorja</language>
			<language type="nqo">n’ko</language>
			<language type="nr">etelä-ndebele</language>
			<language type="nso">pohjoissotho</language>
			<language type="nub">nubialainen kieli</language>
			<language type="nv">navajo</language>
			<language type="nwc">klassinen newari</language>
			<language type="ny">njandža</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">oksitaani</language>
			<language type="oj">odžibwa</language>
			<language type="om">oromo</language>
			<language type="or">orija</language>
			<language type="os">osseetti</language>
			<language type="osa">osage</language>
			<language type="ota">osmani</language>
			<language type="oto">otomi-kieli</language>
			<language type="pa">pandžabi</language>
			<language type="paa">papualaiskieli</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamentu</language>
			<language type="pau">palau</language>
			<language type="peo">muinaispersia</language>
			<language type="phi">filippiiniläinen kieli</language>
			<language type="phn">foinikia</language>
			<language type="pi">paali</language>
			<language type="pl">puola</language>
			<language type="pon">pohnpei</language>
			<language type="pra">prakrit-kieli</language>
			<language type="pro">muinaisprovensaali</language>
			<language type="ps">paštu</language>
			<language type="pt">portugali</language>
			<language type="pt_BR">brasilianportugali</language>
			<language type="pt_PT">portugalinportugali</language>
			<language type="qu">ketšua</language>
			<language type="raj">radžastani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotonga</language>
			<language type="rm">retoromaani</language>
			<language type="rn">rundi</language>
			<language type="ro">romania</language>
			<language type="roa">romaaninen kieli</language>
			<language type="rom">romani</language>
			<language type="root">juuri</language>
			<language type="ru">venäjä</language>
			<language type="rup">aromania</language>
			<language type="rw">ruanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">jakuutti</language>
			<language type="sai">eteläamerikkalainen intiaanikieli</language>
			<language type="sal">sališilainen kieli</language>
			<language type="sam">samarianaramea</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardi</language>
			<language type="scn">sisilia</language>
			<language type="sco">skotti</language>
			<language type="sd">sindhi</language>
			<language type="se">pohjoissaame</language>
			<language type="sel">selkuppi</language>
			<language type="sem">seemiläinen kieli</language>
			<language type="sg">sango</language>
			<language type="sga">muinaisiiri</language>
			<language type="sgn">viittomakieli</language>
			<language type="sh">serbokroaatti</language>
			<language type="shn">shan</language>
			<language type="si">sinhali</language>
			<language type="sid">sidamo</language>
			<language type="sio">sioux-kieli</language>
			<language type="sit">sinotiibetiläinen kieli</language>
			<language type="sk">slovakki</language>
			<language type="sl">sloveeni</language>
			<language type="sla">slaavilainen kieli</language>
			<language type="sm">samoa</language>
			<language type="sma">eteläsaame</language>
			<language type="smi">saamelaiskieli</language>
			<language type="smj">luulajansaame</language>
			<language type="smn">inarinsaame</language>
			<language type="sms">koltansaame</language>
			<language type="sn">šona</language>
			<language type="snk">soninke</language>
			<language type="so">somali</language>
			<language type="sog">sogdi</language>
			<language type="son">songhai</language>
			<language type="sq">albania</language>
			<language type="sr">serbia</language>
			<language type="srn">sranan</language>
			<language type="srr">serer</language>
			<language type="ss">swazi</language>
			<language type="ssa">niililäis-saharalainen kieli</language>
			<language type="st">eteläsotho</language>
			<language type="su">sunda</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumeri</language>
			<language type="sv">ruotsi</language>
			<language type="sw">swahili</language>
			<language type="syc">muinaissyyria</language>
			<language type="syr">syyria</language>
			<language type="ta">tamil</language>
			<language type="tai">thaikieli</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadžikki</language>
			<language type="th">thai</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigre</language>
			<language type="tiv">tiv</language>
			<language type="tk">turkmeeni</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamašek</language>
			<language type="tn">tswana</language>
			<language type="to">tongantonga</language>
			<language type="tog">malawintonga</language>
			<language type="tpi">tok-pisin</language>
			<language type="tr">turkki</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimši</language>
			<language type="tt">tataari</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupi-kieli</language>
			<language type="tut">altailainen kieli</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahiti</language>
			<language type="tyv">tuva</language>
			<language type="udm">udmurtti</language>
			<language type="ug">uiguuri</language>
			<language type="uga">ugarit</language>
			<language type="uk">ukraina</language>
			<language type="umb">umbundu</language>
			<language type="und">määrittämätön</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekki</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnam</language>
			<language type="vo">volapük</language>
			<language type="vot">vatja</language>
			<language type="wa">valloni</language>
			<language type="wak">wakash-kieli</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">sorbin kieli</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmukki</language>
			<language type="xh">xhosa</language>
			<language type="yao">jao</language>
			<language type="yap">japi</language>
			<language type="yi">jiddiš</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupikkikieli</language>
			<language type="za">zhuang</language>
			<language type="zap">sapoteekki</language>
			<language type="zbl">blisskieli</language>
			<language type="zen">zenaga</language>
			<language type="zh">kiina</language>
			<language type="zh_Hans">yksinkertaistettu kiina</language>
			<language type="zh_Hant">perinteinen kiina</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">ei kielellistä sisältöä</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabialainen</script>
			<script type="Armi">valtakunnanaramealainen</script>
			<script type="Armn">armenialainen</script>
			<script type="Avst">avestalainen</script>
			<script type="Bali">balilainen</script>
			<script type="Batk">batakilainen</script>
			<script type="Beng">bengalilainen</script>
			<script type="Blis">bliss-symbolit</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braille-pistekirjoitus</script>
			<script type="Bugi">bugilainen</script>
			<script type="Buhd">buhidilainen</script>
			<script type="Cakm">chakmalainen</script>
			<script type="Cans">Kanadan alkuperäiskansojen yhtenäistetty tavukirjoitus</script>
			<script type="Cari">kaarialainen</script>
			<script type="Cham">tšamilainen</script>
			<script type="Cher">cherokeelainen</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">koptilainen</script>
			<script type="Cprt">muinaiskyproslainen</script>
			<script type="Cyrl">kyrillinen</script>
			<script type="Cyrs">kyrillinen muinaiskirkkoslaavimuunnelma</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egyptiläinen demoottinen</script>
			<script type="Egyh">egyptiläinen hieraattinen</script>
			<script type="Egyp">egyptiläiset hieroglyfit</script>
			<script type="Ethi">etiopialainen</script>
			<script type="Geok">muinaisgeorgialainen</script>
			<script type="Geor">georgialainen</script>
			<script type="Glag">glagoliittinen</script>
			<script type="Goth">goottilainen</script>
			<script type="Grek">kreikkalainen</script>
			<script type="Gujr">gudžaratilainen</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">kiinalainen han</script>
			<script type="Hano">hanunoolainen</script>
			<script type="Hans">kiinalainen yksinkertaistettu han</script>
			<script type="Hant">kiinalainen perinteinen han</script>
			<script type="Hebr">heprealainen</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">hiragana tai katakana</script>
			<script type="Hung">muinaisunkarilainen</script>
			<script type="Inds">induslainen</script>
			<script type="Ital">muinaisitalialainen</script>
			<script type="Java">jaavalainen</script>
			<script type="Jpan">japanilainen</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharosthi</script>
			<script type="Khmr">khmeriläinen</script>
			<script type="Knda">kannadalainen</script>
			<script type="Kore">korealainen</script>
			<script type="Kthi">kaithi</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laolainen</script>
			<script type="Latf">latinalainen fraktuuramuunnelma</script>
			<script type="Latg">latinalainen gaelimuunnelma</script>
			<script type="Latn">latinalainen</script>
			<script type="Lepc">lepchalainen</script>
			<script type="Limb">limbulainen</script>
			<script type="Lina">lineaari-A</script>
			<script type="Linb">lineaari-B</script>
			<script type="Lyci">lyykialainen</script>
			<script type="Lydi">lyydialainen</script>
			<script type="Mand">mandealainen</script>
			<script type="Mani">manikealainen</script>
			<script type="Maya">maya-hieroglyfit</script>
			<script type="Mero">meroiittinen</script>
			<script type="Mlym">malajalamilainen</script>
			<script type="Mong">mongolilainen</script>
			<script type="Moon">moon-kohokirjoitus</script>
			<script type="Mtei">meitei</script>
			<script type="Mymr">burmalainen</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogam</script>
			<script type="Olck">ol chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">orijalainen</script>
			<script type="Osma">osmanjalainen</script>
			<script type="Perm">muinaispermiläinen</script>
			<script type="Phag">phags-pa</script>
			<script type="Phli">piirtokirjoituspahlavilainen</script>
			<script type="Phlp">psalttaripahlavilainen</script>
			<script type="Phlv">kirjapahlavilainen</script>
			<script type="Phnx">foinikialainen</script>
			<script type="Plrd">Pollardin foneettinen</script>
			<script type="Prti">piirtokirjoitusparthialainen</script>
			<script type="Qaai">peritty</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">riimukirjoitus</script>
			<script type="Samr">samarianaramealainen</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">SignWriting</script>
			<script type="Shaw">shaw’lainen</script>
			<script type="Sinh">sinhalilainen</script>
			<script type="Sund">sundalainen</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">syyrialainen</script>
			<script type="Syre">syyrialainen estrangelo-muunnelma</script>
			<script type="Syrj">syyrialainen läntinen muunnelma</script>
			<script type="Syrn">syyrialainen itäinen muunnelma</script>
			<script type="Tagb">tagbanwalainen</script>
			<script type="Tale">tailelainen</script>
			<script type="Talu">uusi tailuelainen</script>
			<script type="Taml">tamililainen</script>
			<script type="Tavt">tai viet</script>
			<script type="Telu">telugulainen</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalogilainen</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">thailainen</script>
			<script type="Tibt">tiibetiläinen</script>
			<script type="Ugar">ugaritilainen</script>
			<script type="Vaii">vailainen</script>
			<script type="Visp">näkyvä puhe</script>
			<script type="Xpeo">muinaispersialainen</script>
			<script type="Xsux">sumerilais-akkadilainen nuolenpääkirjoitus</script>
			<script type="Yiii">yiläinen</script>
			<script type="Zmth">matemaattinen</script>
			<script type="Zsym">symbolit</script>
			<script type="Zxxx">kirjoittamaton</script>
			<script type="Zyyy">määrittämätön</script>
			<script type="Zzzz">tuntematon tai virheellinen kirjoitusjärjestelmä</script>
		</scripts>
		<territories>
			<territory type="001">maailma</territory>
			<territory type="002">Afrikka</territory>
			<territory type="003">Pohjois-Amerikka</territory>
			<territory type="005">Etelä-Amerikka</territory>
			<territory type="009">Oseania</territory>
			<territory type="011">Länsi-Afrikka</territory>
			<territory type="013">Väli-Amerikka</territory>
			<territory type="014">Itä-Afrikka</territory>
			<territory type="015">Pohjois-Afrikka</territory>
			<territory type="017">Keski-Afrikka</territory>
			<territory type="018">eteläinen Afrikka</territory>
			<territory type="019">Amerikka</territory>
			<territory type="021">pohjoinen Amerikka</territory>
			<territory type="029">Karibia</territory>
			<territory type="030">Itä-Aasia</territory>
			<territory type="034">Etelä-Aasia</territory>
			<territory type="035">Kaakkois-Aasia</territory>
			<territory type="039">Etelä-Eurooppa</territory>
			<territory type="053">Australia ja Uusi-Seelanti</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Mikronesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Etelä- ja Keski-Aasia</territory>
			<territory type="142">Aasia</territory>
			<territory type="143">Keski-Aasia</territory>
			<territory type="145">Länsi-Aasia</territory>
			<territory type="150">Eurooppa</territory>
			<territory type="151">Itä-Eurooppa</territory>
			<territory type="154">Pohjois-Eurooppa</territory>
			<territory type="155">Länsi-Eurooppa</territory>
			<territory type="172">Itsenäisten valtioiden yhteisö</territory>
			<territory type="419">Latinalainen Amerikka ja Karibia</territory>
			<territory type="830">Kanaalisaaret</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Arabiemiirikunnat</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua ja Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Alankomaiden Antillit</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentiina</territory>
			<territory type="AS">Amerikan Samoa</territory>
			<territory type="AT">Itävalta</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Ahvenanmaa</territory>
			<territory type="AZ">Azerbaidžan</territory>
			<territory type="BA">Bosnia ja Hertsegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint-Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasilia</territory>
			<territory type="BS">Bahama</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet’nsaari</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Valko-Venäjä</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kookossaaret</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CF">Keski-Afrikan tasavalta</territory>
			<territory type="CG">Kongo-Brazzaville</territory>
			<territory type="CH">Sveitsi</territory>
			<territory type="CI">Norsunluurannikko</territory>
			<territory type="CK">Cookinsaaret</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kiina</territory>
			<territory type="CO">Kolumbia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia ja Montenegro</territory>
			<territory type="CU">Kuuba</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CX">Joulusaari</territory>
			<territory type="CY">Kypros</territory>
			<territory type="CZ">Tšekki</territory>
			<territory type="DE">Saksa</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Tanska</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominikaaninen tasavalta</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Viro</territory>
			<territory type="EG">Egypti</territory>
			<territory type="EH">Länsi-Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Espanja</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Suomi</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandinsaaret</territory>
			<territory type="FM">Mikronesian liittovaltio</territory>
			<territory type="FO">Färsaaret</territory>
			<territory type="FR">Ranska</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Britannia</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Ranskan Guayana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grönlanti</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Päiväntasaajan Guinea</territory>
			<territory type="GR">Kreikka</territory>
			<territory type="GS">Etelä-Georgia ja Eteläiset Sandwichsaaret</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- ja McDonaldinsaaret</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Unkari</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanti</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Mansaari</territory>
			<territory type="IN">Intia</territory>
			<territory type="IO">Brittiläinen Intian valtameren alue</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islanti</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordania</territory>
			<territory type="JP">Japani</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgisia</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorit</territory>
			<territory type="KN">Saint Kitts ja Nevis</territory>
			<territory type="KP">Pohjois-Korea</territory>
			<territory type="KR">Etelä-Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Caymansaaret</territory>
			<territory type="KZ">Kazakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Liettua</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Saint-Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallinsaaret</territory>
			<territory type="MK">Makedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Pohjois-Mariaanit</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Malediivit</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malesia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Uusi-Kaledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkinsaari</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Alankomaat</territory>
			<territory type="NO">Norja</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Uusi-Seelanti</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Ranskan Polynesia</territory>
			<territory type="PG">Papua-Uusi-Guinea</territory>
			<territory type="PH">Filippiinit</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Puola</territory>
			<territory type="PM">Saint-Pierre ja Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestiina</territory>
			<territory type="PT">Portugali</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">ulkomeri</territory>
			<territory type="QU">Euroopan unioni</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Venäjä</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudi-Arabia</territory>
			<territory type="SB">Salomonsaaret</territory>
			<territory type="SC">Seychellit</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Ruotsi</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Huippuvuoret ja Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé ja Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syyria</territory>
			<territory type="SZ">Swazimaa</territory>
			<territory type="TC">Turks- ja Caicossaaret</territory>
			<territory type="TD">Tšad</territory>
			<territory type="TF">Ranskan ulkopuoliset eteläiset alueet</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thaimaa</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Itä-Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkki</territory>
			<territory type="TT">Trinidad ja Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tansania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Yhdysvaltain pienet erillissaaret</territory>
			<territory type="US">Yhdysvallat</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikaani</territory>
			<territory type="VC">Saint Vincent ja Grenadiinit</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Brittiläiset Neitsytsaaret</territory>
			<territory type="VI">Yhdysvaltain Neitsytsaaret</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis ja Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Etelä-Afrikka</territory>
			<territory type="ZM">Sambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">tuntematon tai virheellinen alue</territory>
		</territories>
		<variants>
			<variant type="1901">saksan perinteinen oikeinkirjoitus</variant>
			<variant type="1994">sloveenin resian murteen yhdenmukaistettu oikeinkirjoitus</variant>
			<variant type="1996">saksan uusi oikeinkirjoitus</variant>
			<variant type="1606NICT">myöhäiskeskiranska</variant>
			<variant type="1694ACAD">varhaisnykyranska</variant>
			<variant type="AREVELA">itäarmenialainen</variant>
			<variant type="AREVMDA">länsiarmenialainen</variant>
			<variant type="BAKU1926">yhtenäistetty turkkilainen latinalainen aakkosto</variant>
			<variant type="BISKE">sloveenin resian San Giorgion/Bilan alamurre</variant>
			<variant type="BOONT">englannin boontling-murre</variant>
			<variant type="FONIPA">kansainvälinen foneettinen aakkosto IPA</variant>
			<variant type="FONUPA">uralilainen foneettinen aakkosto UPA</variant>
			<variant type="LIPAW">sloveenin resian Lipovazin/Lipovecin alamurre</variant>
			<variant type="MONOTON">monotoninen kreikka</variant>
			<variant type="NEDIS">sloveenin natisonen murre</variant>
			<variant type="NJIVA">sloveenin resian Gnivan/Njivan alamurre</variant>
			<variant type="OSOJS">sloveenin resian Oseaccon/Osojanen alamurre</variant>
			<variant type="POLYTON">polytoninen kreikka</variant>
			<variant type="POSIX">tietokonemäärittely POSIX</variant>
			<variant type="REVISED">uudistettu oikeinkirjoitus</variant>
			<variant type="ROZAJ">sloveenin resian murre</variant>
			<variant type="SAAHO">afarin saho-murre</variant>
			<variant type="SCOTLAND">skotlanninenglanti</variant>
			<variant type="SCOUSE">englannin scouse-murre</variant>
			<variant type="SOLBA">sloveenin resian Stolvizzan/Solbican alamurre</variant>
			<variant type="TARASK">valkovenäjän taraškevitsa-oikeinkirjoitus</variant>
			<variant type="VALENCIA">katalaanin valencian murre</variant>
		</variants>
		<keys>
			<key type="calendar">kalenteri</key>
			<key type="collation">lajittelu</key>
			<key type="currency">valuutta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">perinteinen kiinalainen järjestys Big5</type>
			<type type="buddhist" key="calendar">buddhalainen kalenteri</type>
			<type type="chinese" key="calendar">kiinalainen kalenteri</type>
			<type type="direct" key="collation">suora järjestys</type>
			<type type="gb2312han" key="collation">yksinkertaistettu kiinalainen järjestys GB2312</type>
			<type type="gregorian" key="calendar">gregoriaaninen kalenteri</type>
			<type type="hebrew" key="calendar">juutalainen kalenteri</type>
			<type type="indian" key="calendar">intialainen kalenteri</type>
			<type type="islamic" key="calendar">islamilainen kalenteri</type>
			<type type="islamic-civil" key="calendar">islamilainen siviilikalenteri</type>
			<type type="japanese" key="calendar">japanilainen kalenteri</type>
			<type type="phonebook" key="collation">puhelinluettelojärjestys</type>
			<type type="pinyin" key="collation">pinyin-järjestys</type>
			<type type="roc" key="calendar">kiinan tasavallan kalenteri 1912–1949</type>
			<type type="stroke" key="collation">piirtojärjestys</type>
			<type type="traditional" key="collation">perinteinen järjestys</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">amerikkalainen</measurementSystemName>
			<measurementSystemName type="metric">metrinen</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">kieli: {0}</codePattern>
			<codePattern type="script">kirjoitusjärjestelmä: {0}</codePattern>
			<codePattern type="territory">alue: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-s š t-z ž å ä ö]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à â ã č ç đ é è ë ǧ ǥ ȟ í ï ǩ ń ñ ŋ ô õ œ ř ŧ ú ü ʒ ǯ æ ø]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>’</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<dateRangePattern>{0}–{1}</dateRangePattern>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">tammi</month>
							<month type="2">helmi</month>
							<month type="3">maalis</month>
							<month type="4">huhti</month>
							<month type="5">touko</month>
							<month type="6">kesä</month>
							<month type="7">heinä</month>
							<month type="8">elo</month>
							<month type="9">syys</month>
							<month type="10">loka</month>
							<month type="11">marras</month>
							<month type="12">joulu</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">tammikuuta</month>
							<month type="2">helmikuuta</month>
							<month type="3">maaliskuuta</month>
							<month type="4">huhtikuuta</month>
							<month type="5">toukokuuta</month>
							<month type="6">kesäkuuta</month>
							<month type="7">heinäkuuta</month>
							<month type="8">elokuuta</month>
							<month type="9">syyskuuta</month>
							<month type="10">lokakuuta</month>
							<month type="11">marraskuuta</month>
							<month type="12">joulukuuta</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">T</month>
							<month type="2">H</month>
							<month type="3">M</month>
							<month type="4">H</month>
							<month type="5">T</month>
							<month type="6">K</month>
							<month type="7">H</month>
							<month type="8">E</month>
							<month type="9">S</month>
							<month type="10">L</month>
							<month type="11">M</month>
							<month type="12">J</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">su</day>
							<day type="mon">ma</day>
							<day type="tue">ti</day>
							<day type="wed">ke</day>
							<day type="thu">to</day>
							<day type="fri">pe</day>
							<day type="sat">la</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sunnuntaina</day>
							<day type="mon">maanantaina</day>
							<day type="tue">tiistaina</day>
							<day type="wed">keskiviikkona</day>
							<day type="thu">torstaina</day>
							<day type="fri">perjantaina</day>
							<day type="sat">lauantaina</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">K</day>
							<day type="thu">T</day>
							<day type="fri">P</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1. nelj.</quarter>
							<quarter type="2">2. nelj.</quarter>
							<quarter type="3">3. nelj.</quarter>
							<quarter type="4">4. nelj.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. neljännes</quarter>
							<quarter type="2">2. neljännes</quarter>
							<quarter type="3">3. neljännes</quarter>
							<quarter type="4">4. neljännes</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ap.</am>
				<pm>ip.</pm>
				<eras>
					<eraNames>
						<era type="0">ennen Kristuksen syntymää</era>
						<era type="1">jälkeen Kristuksen syntymän</era>
					</eraNames>
					<eraAbbr>
						<era type="0">eKr.</era>
						<era type="1">jKr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH.mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH.mm.ss</dateFormatItem>
						<dateFormatItem id="Hm">H.mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d.M.</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="Md">d.M.</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm.ss</dateFormatItem>
						<dateFormatItem id="ms">mm.ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">L.yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">LLL yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d. MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q/yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">M/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q/yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMEEEd">EEE d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yyyyQQQQ">QQQQ yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}–{1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">L.–L.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d.M. – E d.M.</greatestDifference>
							<greatestDifference id="d">E d. – E d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL–LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d. MMMM – E d. MMMM</greatestDifference>
							<greatestDifference id="d">E d. – E d. MMMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLL–LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMMM – d. MMMM</greatestDifference>
							<greatestDifference id="d">d.–d. MMMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M.–d.M.</greatestDifference>
							<greatestDifference id="d">d.–““d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.–d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">H–H</greatestDifference>
							<greatestDifference id="h">H–H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">H.mm–H.mm</greatestDifference>
							<greatestDifference id="h">H.mm–H.mm</greatestDifference>
							<greatestDifference id="m">H.mm–H.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">H.mm–H.mm v</greatestDifference>
							<greatestDifference id="h">H.mm–H.mm v</greatestDifference>
							<greatestDifference id="m">H.mm–H.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">H–H v</greatestDifference>
							<greatestDifference id="h">H–H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">LLL–LLLL yyyy</greatestDifference>
							<greatestDifference id="y">LLLL yyyy – LLLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d.M.yyyy – E d.M.yyyy</greatestDifference>
							<greatestDifference id="d">E d.M.yyyy – E d.M.yyyy</greatestDifference>
							<greatestDifference id="y">E d.M.yyyy – E d.M.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL–LLLL yyyy</greatestDifference>
							<greatestDifference id="y">LLLL yyyy – LLLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d. MMMM – E d. MMMM yyyy</greatestDifference>
							<greatestDifference id="d">E d. – E d. MMMM yyyy</greatestDifference>
							<greatestDifference id="y">E d. MMMM yyyy – E d. MMMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">LLL–LLLL yyyy</greatestDifference>
							<greatestDifference id="y">LLLL yyyy – LLLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMMM – d. MMMM yyyy</greatestDifference>
							<greatestDifference id="d">d.–d. MMMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMMM yyyy – d. MMMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.–d.M.yyyy</greatestDifference>
							<greatestDifference id="d">d.–d.M.yyyy</greatestDifference>
							<greatestDifference id="y">d.M.yyyy–d.M.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>aikakausi</displayName>
					</field>
					<field type="year">
						<displayName>vuosi</displayName>
					</field>
					<field type="month">
						<displayName>kuukausi</displayName>
					</field>
					<field type="week">
						<displayName>viikko</displayName>
					</field>
					<field type="day">
						<displayName>päivä</displayName>
						<relative type="0">tänään</relative>
						<relative type="1">huomenna</relative>
						<relative type="2">ylihuomenna</relative>
						<relative type="-1">eilen</relative>
						<relative type="-2">toissapäivänä</relative>
					</field>
					<field type="weekday">
						<displayName>viikonpäivä</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ap/ip</displayName>
					</field>
					<field type="hour">
						<displayName>tunti</displayName>
					</field>
					<field type="minute">
						<displayName>minuutti</displayName>
					</field>
					<field type="second">
						<displayName>sekunti</displayName>
					</field>
					<field type="zone">
						<displayName>aikavyöhyke</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">tišrí</month>
							<month type="2">hešván</month>
							<month type="3">kislév</month>
							<month type="4">tevét</month>
							<month type="5">ševát</month>
							<month type="6">adár</month>
							<month type="7">adár II</month>
							<month type="8">nisán</month>
							<month type="9">ijjár</month>
							<month type="10">siván</month>
							<month type="11">tammúz</month>
							<month type="12">ab</month>
							<month type="13">elúl</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">tišríkuu</month>
							<month type="2">hešvánkuu</month>
							<month type="3">kislévkuu</month>
							<month type="4">tevétkuu</month>
							<month type="5">ševátkuu</month>
							<month type="6">adárkuu</month>
							<month type="7">adárkuu II</month>
							<month type="8">nisánkuu</month>
							<month type="9">ijjárkuu</month>
							<month type="10">sivánkuu</month>
							<month type="11">tammúzkuu</month>
							<month type="12">abkuu</month>
							<month type="13">elúlkuu</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">muharram</month>
							<month type="2">safar</month>
							<month type="3">rabi’ al-awwal</month>
							<month type="4">rabi’ al-akhir</month>
							<month type="5">džumada-l-ula</month>
							<month type="6">džumada-l-akhira</month>
							<month type="7">radžab</month>
							<month type="8">ša’ban</month>
							<month type="9">ramadan</month>
							<month type="10">šawwal</month>
							<month type="11">dhu-l-qa’da</month>
							<month type="12">dhu-l-hiddža</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic-civil">
				<months>
					<alias source="locale" path="../../calendar[@type='islamic']/months"/>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+H.mm;-H.mm</hourFormat>
			<gmtFormat>UTC{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>tuntematon</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevan</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Etelänapa</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wien</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>Maarianhamina</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bryssel</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Pääsiäissaari</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kap Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Joulu</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikosia</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berliini</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kööpenhamina</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallinna</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanariansaaret</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidzi</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Färsaaret</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Pariisi</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Lontoo</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Qaanaaq</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Nuuk</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Ittoqqortoormiit</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Ateena</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Etelä-Georgia</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>Mansaari</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rooma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komorit</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Saint Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aqtöbe</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Saint Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Vilna</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Riika</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Malediivit</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Ciudad de México</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Niuesaari</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsova</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorit</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Belgrad</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskova</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sahalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamtšatka</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Tukholma</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>San Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskos</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dušanbe</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kiova</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporižžja</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>keskinen Pohjois-Dakota</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>Vatikaani</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Saint Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<standard>Alaskan normaaliaika</standard>
					<daylight>Alaskan kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<standard>Yhdysvaltain keskinen normaaliaika</standard>
					<daylight>Yhdysvaltain keskinen kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<standard>Yhdysvaltain itäinen normaaliaika</standard>
					<daylight>Yhdysvaltain itäinen kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<standard>Kalliovuorten normaaliaika</standard>
					<daylight>Kalliovuorten kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<standard>Yhdysvaltain Tyynenmeren normaaliaika</standard>
					<daylight>Yhdysvaltain Tyynenmeren kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<standard>Kanadan Atlantin normaaliaika</standard>
					<daylight>Kanadan Atlantin kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="British">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Kiinan normaaliaika</standard>
					<daylight>Kiinan kesäaika</daylight>
				</long>
				<short>
					<standard>CST (Kiina)</standard>
					<daylight>CDT (Kiina)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cuba">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dominican">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Keski-Euroopan normaaliaika</standard>
					<daylight>Keski-Euroopan kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Itä-Euroopan normaaliaika</standard>
					<daylight>Itä-Euroopan kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwichin normaaliaika</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gambier">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Goose_Bay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gulf">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guyana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="India">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indochina">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irish">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Israelin normaaliaika</standard>
					<daylight>Israelin kesäaika</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Japanin normaaliaika</standard>
					<daylight>Japanin kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Krasnoyarsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Liberia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marquesas">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mawson">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>Newfoundlandin normaaliaika</standard>
					<daylight>Newfoundlandin kesäaika</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Niue">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Oral">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Peru">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Rothera">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Suriname">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tahiti">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wallis">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>epäluku</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorran peseta</displayName>
				<displayName count="other">Andorran pesetaa</displayName>
			</currency>
			<currency type="AED">
				<displayName>Arabiemiirikuntien dirhami</displayName>
				<displayName count="other">Arabiemiirikuntien dirhamia</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afganistanin afgaani (1927–2002)</displayName>
				<displayName count="other">Afganistanin afgaania (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afganistanin afgaani</displayName>
				<displayName count="other">Afganistanin afgaania</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albanian lek</displayName>
				<displayName count="other">Albanian lekiä</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Armenian dram</displayName>
				<displayName count="other">Armenian dramia</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Alankomaiden Antillien guldeni</displayName>
				<displayName count="other">Alankomaiden Antillien guldenia</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Angolan kwanza</displayName>
				<displayName count="other">Angolan kwanzaa</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolan kwanza (1977–1990)</displayName>
				<displayName count="other">Angolan kwanzaa (1977–1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolan uusi kwanza (1990–2000)</displayName>
				<displayName count="other">Angolan uutta kwanzaa (1990–2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolan kwanza reajustado (1995–1999)</displayName>
				<displayName count="other">Angolan kwanza reajustadoa (1995–1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentiinan austral</displayName>
				<displayName count="other">Argentiinan australia</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentiinan peso (1983–1985)</displayName>
				<displayName count="other">Argentiinan pesoa (1983–1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentiinan peso</displayName>
				<displayName count="other">Argentiinan pesoa</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Itävallan šillinki</displayName>
				<displayName count="other">Itävallan šillinkiä</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australian dollari</displayName>
				<displayName count="other">Australian dollaria</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Aruban guldeni</displayName>
				<displayName count="other">Aruban guldenia</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbaidžanin manat (1993–2006)</displayName>
				<displayName count="other">Azerbaidžanin manatia (1993–2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azerbaidžanin manat</displayName>
				<displayName count="other">Azerbaidžanin manatia</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnia-Hertsegovinan dinaari</displayName>
				<displayName count="other">Bosnia-Hertsegovinan dinaaria</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnia-Hertsegovinan vaihdettava markka</displayName>
				<displayName count="other">Bosnia-Hertsegovinan vaihdettavaa markkaa</displayName>
			</currency>
			<currency type="BBD">
				<displayName>Barbadosin dollari</displayName>
				<displayName count="other">Barbadosin dollaria</displayName>
			</currency>
			<currency type="BDT">
				<displayName>Bangladeshin taka</displayName>
				<displayName count="other">Bangladeshin takaa</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Belgian vaihdettava frangi</displayName>
				<displayName count="other">Belgian vaihdettavaa frangia</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgian frangi</displayName>
				<displayName count="other">Belgian frangia</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Belgian rahoitusfrangi</displayName>
				<displayName count="other">Belgian rahoitusfrangia</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgarian kova lev</displayName>
				<displayName count="other">Bulgarian kovaa levaa</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bulgarian uusi lev</displayName>
				<displayName count="other">Bulgarian uutta levaa</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahrainin dinaari</displayName>
				<displayName count="other">Bahrainin dinaaria</displayName>
			</currency>
			<currency type="BIF">
				<displayName>Burundin frangi</displayName>
				<displayName count="other">Burundin frangia</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermudan dollari</displayName>
				<displayName count="other">Bermudan dollaria</displayName>
			</currency>
			<currency type="BND">
				<displayName>Brunein dollari</displayName>
				<displayName count="other">Brunein dollaria</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolivian boliviano</displayName>
				<displayName count="other">Bolivian bolivianoa</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Bolivian peso</displayName>
				<displayName count="other">Bolivian pesoa</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivian mvdol</displayName>
				<displayName count="other">Bolivian mvdol'ia</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brasilian uusi cruzeiro (1967–1986)</displayName>
				<displayName count="other">Brasilian uutta cruzeiroa (1967–1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brasilian cruzado</displayName>
				<displayName count="other">Brasilian cruzadoa</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brasilian cruzeiro (1990–1993)</displayName>
				<displayName count="other">Brasilian cruzeiroa (1990–1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brasilian real</displayName>
				<displayName count="other">Brasilian realia</displayName>
				<symbol>BRL</symbol>
			</currency>
			<currency type="BRN">
				<displayName>Brasilian uusi cruzado</displayName>
				<displayName count="other">Brasilian uutta cruzadoa</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brasilian cruzeiro</displayName>
				<displayName count="other">Brasilian cruzeiroa</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahaman dollari</displayName>
				<displayName count="other">Bahaman dollaria</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutanin ngultrum</displayName>
				<displayName count="other">Bhutanin ngultrumia</displayName>
			</currency>
			<currency type="BUK">
				<displayName>Burman kyat</displayName>
				<displayName count="other">Burman kyatia</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswanan pula</displayName>
				<displayName count="other">Botswanan pulaa</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Valko-Venäjän uusi rupla (1994–1999)</displayName>
				<displayName count="other">Valko-Venäjän uutta ruplaa (1994–1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Valko-Venäjän rupla</displayName>
				<displayName count="other">Valko-Venäjän ruplaa</displayName>
			</currency>
			<currency type="BZD">
				<displayName>Belizen dollari</displayName>
				<displayName count="other">Belizen dollaria</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanadan dollari</displayName>
				<displayName count="other">Kanadan dollaria</displayName>
			</currency>
			<currency type="CDF">
				<displayName>Kongon frangi</displayName>
				<displayName count="other">Kongon frangia</displayName>
			</currency>
			<currency type="CHE">
				<displayName>Sveitsin WIR-euro</displayName>
				<displayName count="other">Sveitsin WIR-euroa</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Sveitsin frangi</displayName>
				<displayName count="other">Sveitsin frangia</displayName>
			</currency>
			<currency type="CHW">
				<displayName>Sveitsin WIR-frangi</displayName>
				<displayName count="other">Sveitsin WIR-frangia</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Chilen unidades de fomento</displayName>
				<displayName count="other">Chilen unidades de fomentoa</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilen peso</displayName>
				<displayName count="other">Chilen pesoa</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Kiinan yuan</displayName>
				<displayName count="other">Kiinan yuania</displayName>
			</currency>
			<currency type="COP">
				<displayName>Kolumbian peso</displayName>
				<displayName count="other">Kolumbian pesoa</displayName>
			</currency>
			<currency type="COU">
				<displayName>Kolumbian unidad de valor real</displayName>
				<displayName count="other">Kolumbian unidad de valor realia</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Costa Rican colon</displayName>
				<displayName count="other">Costa Rican colonia</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Serbian vanha dinaari</displayName>
				<displayName count="other">Serbian vanhaa dinaaria</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Tšekkoslovakian kova koruna</displayName>
				<displayName count="other">Tšekkoslovakian kovaa korunaa</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kuuban peso</displayName>
				<displayName count="other">Kuuban pesoa</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Kap Verden escudo</displayName>
				<displayName count="other">Kap Verden escudoa</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Kyproksen punta</displayName>
				<displayName count="other">Kyproksen puntaa</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Tšekin koruna</displayName>
				<displayName count="other">Tšekin korunaa</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Itä-Saksan markka</displayName>
				<displayName count="other">Itä-Saksan markkaa</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Saksan markka</displayName>
				<displayName count="other">Saksan markkaa</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djiboutin frangi</displayName>
				<displayName count="other">Djiboutin frangia</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Tanskan kruunu</displayName>
				<displayName count="other">Tanskan kruunua</displayName>
				<symbol>Tkr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominikaanisen tasavallan peso</displayName>
				<displayName count="other">Dominikaanisen tasavallan pesoa</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Algerian dinaari</displayName>
				<displayName count="other">Algerian dinaaria</displayName>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadorin sucre</displayName>
				<displayName count="other">Ecuadorin sucrea</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuadorin UVC</displayName>
				<displayName count="other">Ecuadorin UVC'ta</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Viron kruunu</displayName>
				<displayName count="other">Viron kruunua</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptin punta</displayName>
				<displayName count="other">Egyptin puntaa</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Päiväntasaajan Guinean ekwele (1986–1989)</displayName>
				<displayName count="other">Päiväntasaajan Guinean ekweleä (1986–1989)</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrean nakfa</displayName>
				<displayName count="other">Eritrean nakfaa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Espanjan peseta (A-tili)</displayName>
				<displayName count="other">Espanjan pesetaa (A-tili)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Espanjan peseta (vaihdettava tili)</displayName>
				<displayName count="other">Espanjan pesetaa (vaihdettava tili)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Espanjan peseta</displayName>
				<displayName count="other">Espanjan pesetaa</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Etiopian birr</displayName>
				<displayName count="other">Etiopian birriä</displayName>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<displayName count="other">euroa</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Suomen markka</displayName>
				<displayName count="other">Suomen markkaa</displayName>
				<symbol>mk</symbol>
			</currency>
			<currency type="FJD">
				<displayName>Fidžin dollari</displayName>
				<displayName count="other">Fidžin dollaria</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Falklandinsaarten punta</displayName>
				<displayName count="other">Falklandinsaarten puntaa</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Ranskan frangi</displayName>
				<displayName count="other">Ranskan frangia</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Englannin punta</displayName>
				<displayName count="other">Englannin puntaa</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgian kuponkilari</displayName>
				<displayName count="other">Georgian kuponkilaria</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Georgian lari</displayName>
				<displayName count="other">Georgian laria</displayName>
			</currency>
			<currency type="GHC">
				<displayName>Ghanan cedi (1979–2007)</displayName>
				<displayName count="other">Ghanan cediä (1979–2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghanan cedi</displayName>
				<displayName count="other">Ghanan cediä</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltarin punta</displayName>
				<displayName count="other">Gibraltarin puntaa</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambian dalasi</displayName>
				<displayName count="other">Gambian dalasia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guinean frangi</displayName>
				<displayName count="other">Guinean frangia</displayName>
			</currency>
			<currency type="GNS">
				<displayName>Guinean syli</displayName>
				<displayName count="other">Guinean syliä</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Päiväntasaajan Guinean ekwele (–1986)</displayName>
				<displayName count="other">Päiväntasaajan Guinean ekweleä (–1986)</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Kreikan drakma</displayName>
				<displayName count="other">Kreikan drakmaa</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemalan quetzal</displayName>
				<displayName count="other">Guatemalan quetzalia</displayName>
			</currency>
			<currency type="GWE">
				<displayName>Portugalin Guinean escudo</displayName>
				<displayName count="other">Portugalin Guinean escudoa</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissaun peso</displayName>
				<displayName count="other">Guinea-Bissaun pesoa</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyanan dollari</displayName>
				<displayName count="other">Guyanan dollaria</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Hongkongin dollari</displayName>
				<displayName count="other">Hongkongin dollaria</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Hondurasin lempira</displayName>
				<displayName count="other">Hondurasin lempiraa</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Kroatian dinaari</displayName>
				<displayName count="other">Kroatian dinaaria</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kroatian kuna</displayName>
				<displayName count="other">Kroatian kunaa</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haitin gourde</displayName>
				<displayName count="other">Haitin gourdea</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Unkarin forintti</displayName>
				<displayName count="other">Unkarin forinttia</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indonesian rupia</displayName>
				<displayName count="other">Indonesian rupiaa</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Irlannin punta</displayName>
				<displayName count="other">Irlannin puntaa</displayName>
			</currency>
			<currency type="ILP">
				<displayName>Israelin punta</displayName>
				<displayName count="other">Israelin puntaa</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Israelin uusi sekeli</displayName>
				<displayName count="other">Israelin uutta sekeliä</displayName>
			</currency>
			<currency type="INR">
				<displayName>Intian rupia</displayName>
				<displayName count="other">Intian rupiaa</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Irakin dinaari</displayName>
				<displayName count="other">Irakin dinaaria</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Iranin rial</displayName>
				<displayName count="other">Iranin rialia</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Islannin kruunu</displayName>
				<displayName count="other">Islannin kruunua</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italian liira</displayName>
				<displayName count="other">Italian liiraa</displayName>
				<symbol>ITL</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaikan dollari</displayName>
				<displayName count="other">Jamaikan dollaria</displayName>
			</currency>
			<currency type="JOD">
				<displayName>Jordanian dinaari</displayName>
				<displayName count="other">Jordanian dinaaria</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japanin jeni</displayName>
				<displayName count="other">Japanin jeniä</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenian šillinki</displayName>
				<displayName count="other">Kenian šillinkiä</displayName>
			</currency>
			<currency type="KGS">
				<displayName>Kirgisian som</displayName>
				<displayName count="other">Kirgisian somia</displayName>
			</currency>
			<currency type="KHR">
				<displayName>Kambodžan riel</displayName>
				<displayName count="other">Kambodžan rieliä</displayName>
			</currency>
			<currency type="KMF">
				<displayName>Komorien frangi</displayName>
				<displayName count="other">Komorien frangia</displayName>
			</currency>
			<currency type="KPW">
				<displayName>Pohjois-Korean won</displayName>
				<displayName count="other">Pohjois-Korean wonia</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Etelä-Korean won</displayName>
				<displayName count="other">Etelä-Korean wonia</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuwaitin dinaari</displayName>
				<displayName count="other">Kuwaitin dinaaria</displayName>
			</currency>
			<currency type="KYD">
				<displayName>Caymansaarten dollari</displayName>
				<displayName count="other">Caymansaarten dollaria</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakstanin tenge</displayName>
				<displayName count="other">Kazakstanin tengeä</displayName>
			</currency>
			<currency type="LAK">
				<displayName>Laosin kip</displayName>
				<displayName count="other">Laosin kipiä</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanonin punta</displayName>
				<displayName count="other">Libanonin puntaa</displayName>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lankan rupia</displayName>
				<displayName count="other">Sri Lankan rupiaa</displayName>
			</currency>
			<currency type="LRD">
				<displayName>Liberian dollari</displayName>
				<displayName count="other">Liberian dollaria</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesothon loti</displayName>
				<displayName count="other">Lesothon lotia</displayName>
			</currency>
			<currency type="LSM">
				<displayName>Lesothon maloti</displayName>
				<displayName count="other">Lesothon malotia</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Liettuan liti</displayName>
				<displayName count="other">Liettuan litiä</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Liettuan talonas</displayName>
				<displayName count="other">Liettuan talonasia</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Luxemburgin vaihdettava frangi</displayName>
				<displayName count="other">Luxemburgin vaihdettavaa frangia</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxemburgin frangi</displayName>
				<displayName count="other">Luxemburgin frangia</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Luxemburgin rahoitusfrangi</displayName>
				<displayName count="other">Luxemburgin rahoitusfrangia</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latvian lati</displayName>
				<displayName count="other">Latvian latia</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Latvian rupla</displayName>
				<displayName count="other">Latvian ruplaa</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libyan dinaari</displayName>
				<displayName count="other">Libyan dinaaria</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Marokon dirhami</displayName>
				<displayName count="other">Marokon dirhamia</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokon frangi</displayName>
				<displayName count="other">Marokon frangia</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldovan leu</displayName>
				<displayName count="other">Moldovan leuta</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskarin ariary</displayName>
				<displayName count="other">Madagaskarin ariarya</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskarin frangi</displayName>
				<displayName count="other">Madagaskarin frangia</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedonian dinaari</displayName>
				<displayName count="other">Makedonian dinaaria</displayName>
			</currency>
			<currency type="MLF">
				<displayName>Malin frangi</displayName>
				<displayName count="other">Malin frangia</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmarin kyat</displayName>
				<displayName count="other">Myanmarin kyatia</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolian tugrik</displayName>
				<displayName count="other">Mongolian tugrikia</displayName>
			</currency>
			<currency type="MOP">
				<displayName>Macaon pataca</displayName>
				<displayName count="other">Macaon patacaa</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritanian ouguiya</displayName>
				<displayName count="other">Mauritanian ouguiyaa</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Maltan liira</displayName>
				<displayName count="other">Maltan liiraa</displayName>
			</currency>
			<currency type="MTP">
				<displayName>Maltan punta</displayName>
				<displayName count="other">Maltan puntaa</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritiuksen rupia</displayName>
				<displayName count="other">Mauritiuksen rupiaa</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Malediivien rufiyaa</displayName>
				<displayName count="other">Malediivien rufiyaata</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawin kwacha</displayName>
				<displayName count="other">Malawin kwachaa</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Meksikon peso</displayName>
				<displayName count="other">Meksikon pesoa</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Meksikon hopeapeso (1861–1992)</displayName>
				<displayName count="other">Meksikon hopeapesoa (1861–1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Meksikon UDI</displayName>
				<displayName count="other">Meksikon UDI'ta</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malesian ringgit</displayName>
				<displayName count="other">Malesian ringgitiä</displayName>
			</currency>
			<currency type="MZE">
				<displayName>Mosambikin escudo</displayName>
				<displayName count="other">Mosambikin escudoa</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Mosambikin metical (1980–2006)</displayName>
				<displayName count="other">Mosambikin meticalia (1980–2006)</displayName>
			</currency>
			<currency type="MZN">
				<displayName>Mosambikin metical</displayName>
				<displayName count="other">Mosambikin meticalia</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibian dollari</displayName>
				<displayName count="other">Namibian dollaria</displayName>
			</currency>
			<currency type="NGN">
				<displayName>Nigerian naira</displayName>
				<displayName count="other">Nigerian nairaa</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nicaraguan cordoba</displayName>
				<displayName count="other">Nicaraguan cordobaa</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nicaraguan kultacordoba</displayName>
				<displayName count="other">Nicaraguan kultacordobaa</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Alankomaiden guldeni</displayName>
				<displayName count="other">Alankomaiden guldenia</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norjan kruunu</displayName>
				<displayName count="other">Norjan kruunua</displayName>
				<symbol>Nkr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalin rupia</displayName>
				<displayName count="other">Nepalin rupiaa</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Uuden-Seelannin dollari</displayName>
				<displayName count="other">Uuden-Seelannin dollaria</displayName>
			</currency>
			<currency type="OMR">
				<displayName>Omanin rial</displayName>
				<displayName count="other">Omanin rialia</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Panaman balboa</displayName>
				<displayName count="other">Panaman balboaa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Perun inti</displayName>
				<displayName count="other">Perun intiä</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Perun uusi sol</displayName>
				<displayName count="other">Perun uutta solia</displayName>
			</currency>
			<currency type="PES">
				<displayName>Perun sol</displayName>
				<displayName count="other">Perun solia</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua-Uuden-Guinean kina</displayName>
				<displayName count="other">Papua-Uuden-Guinean kinaa</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filippiinien peso</displayName>
				<displayName count="other">Filippiinien pesoa</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistanin rupia</displayName>
				<displayName count="other">Pakistanin rupiaa</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Puolan zloty</displayName>
				<displayName count="other">Puolan zlotya</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Puolan zloty (1950–1995)</displayName>
				<displayName count="other">Puolan zlotya (1950–1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugalin escudo</displayName>
				<displayName count="other">Portugalin escudoa</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguayn guarani</displayName>
				<displayName count="other">Paraguayn guarania</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Qatarin rial</displayName>
				<displayName count="other">Qatarin rialia</displayName>
			</currency>
			<currency type="RHD">
				<displayName>Rhodesian dollari</displayName>
				<displayName count="other">Rhodesian dollaria</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Romanian vanha leu</displayName>
				<displayName count="other">Romanian vanhaa leuta</displayName>
			</currency>
			<currency type="RON">
				<displayName>Romanian uusi leu</displayName>
				<displayName count="other">Romanian uutta leuta</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbian dinaari</displayName>
				<displayName count="other">Serbian dinaaria</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Venäjän rupla</displayName>
				<displayName count="other">Venäjän ruplaa</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Venäjän rupla (1991–1998)</displayName>
				<displayName count="other">Venäjän ruplaa (1991–1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruandan frangi</displayName>
				<displayName count="other">Ruandan frangia</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi-Arabian rial</displayName>
				<displayName count="other">Saudi-Arabian rialia</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Salomonsaarten dollari</displayName>
				<displayName count="other">Salomonsaarten dollaria</displayName>
			</currency>
			<currency type="SCR">
				<displayName>Seychellien rupia</displayName>
				<displayName count="other">Seychellien rupiaa</displayName>
			</currency>
			<currency type="SDD">
				<displayName>Sudanin dinaari</displayName>
				<displayName count="other">Sudanin dinaaria</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudanin punta</displayName>
				<displayName count="other">Sudanin puntaa</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudanin punta (1957–1999)</displayName>
				<displayName count="other">Sudanin puntaa (1957–1999)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Ruotsin kruunu</displayName>
				<displayName count="other">Ruotsin kruunua</displayName>
				<symbol>Rkr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singaporen dollari</displayName>
				<displayName count="other">Singaporen dollaria</displayName>
			</currency>
			<currency type="SHP">
				<displayName>Saint Helenan punta</displayName>
				<displayName count="other">Saint Helenan puntaa</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovenian tolar</displayName>
				<displayName count="other">Slovenian tolaria</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovakian koruna</displayName>
				<displayName count="other">Slovakian korunaa</displayName>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leonen leone</displayName>
				<displayName count="other">Sierra Leonen leonea</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somalian šillinki</displayName>
				<displayName count="other">Somalian šillinkiä</displayName>
			</currency>
			<currency type="SRD">
				<displayName>Surinamin dollari</displayName>
				<displayName count="other">Surinamin dollaria</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surinamin guldeni</displayName>
				<displayName count="other">Surinamin guldenia</displayName>
			</currency>
			<currency type="STD">
				<displayName>São Tomén ja Príncipen dobra</displayName>
				<displayName count="other">São Tomén ja Príncipen dobraa</displayName>
			</currency>
			<currency type="SUR">
				<displayName>Neuvostoliiton rupla</displayName>
				<displayName count="other">Neuvostoliiton ruplaa</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvadorin colon</displayName>
				<displayName count="other">El Salvadorin colonia</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syyrian punta</displayName>
				<displayName count="other">Syyrian puntaa</displayName>
			</currency>
			<currency type="SZL">
				<displayName>Swazimaan lilangeni</displayName>
				<displayName count="other">Swazimaan lilangenia</displayName>
			</currency>
			<currency type="THB">
				<displayName>Thaimaan baht</displayName>
				<displayName count="other">Thaimaan bahtia</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadžikistanin rupla</displayName>
				<displayName count="other">Tadžikistanin ruplaa</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadžikistanin somoni</displayName>
				<displayName count="other">Tadžikistanin somonia</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmenistanin manat</displayName>
				<displayName count="other">Turkmenistanin manatia</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunisian dinaari</displayName>
				<displayName count="other">Tunisian dinaaria</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tongan pa’anga</displayName>
				<displayName count="other">Tongan pa’angaa</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Timorin escudo</displayName>
				<displayName count="other">Timorin escudoa</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turkin vanha liira</displayName>
				<displayName count="other">Turkin vanhaa liiraa</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Turkin liira</displayName>
				<displayName count="other">Turkin liiraa</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidadin ja Tobagon dollari</displayName>
				<displayName count="other">Trinidadin ja Tobagon dollaria</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Taiwanin uusi dollari</displayName>
				<displayName count="other">Taiwanin uutta dollaria</displayName>
			</currency>
			<currency type="TZS">
				<displayName>Tansanian šillinki</displayName>
				<displayName count="other">Tansanian šillinkiä</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainan hryvnia</displayName>
				<displayName count="other">Ukrainan hryvniaa</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainan karbovanetz</displayName>
				<displayName count="other">Ukrainan karbovanetziä</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandan šillinki (1966–1987)</displayName>
				<displayName count="other">Ugandan šillinkiä (1966–1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandan šillinki</displayName>
				<displayName count="other">Ugandan šillinkiä</displayName>
			</currency>
			<currency type="USD">
				<displayName>Yhdysvaltain dollari</displayName>
				<displayName count="other">Yhdysvaltain dollaria</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>Yhdysvaltain dollari (seuraava päivä)</displayName>
				<displayName count="other">Yhdysvaltain dollaria (seuraava päivä)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Yhdysvaltain dollari (sama päivä)</displayName>
				<displayName count="other">Yhdysvaltain dollaria (sama päivä)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruguayn peso en unidades indexadas</displayName>
				<displayName count="other">Uruguayn pesoa en unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguayn peso (1975–1993)</displayName>
				<displayName count="other">Uruguayn pesoa (1975–1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguayn peso</displayName>
				<displayName count="other">Uruguayn pesoa</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Uzbekistanin som</displayName>
				<displayName count="other">Uzbekistanin somia</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelan bolivar</displayName>
				<displayName count="other">Venezuelan bolivaria</displayName>
			</currency>
			<currency type="VEF">
				<displayName>Venezuelan bolivar fuerte</displayName>
				<displayName count="one">Venezuelan bolivar fuerte</displayName>
				<displayName count="other">Venezuelan bolivar fuertea</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vietnamin dong</displayName>
				<displayName count="other">Vietnamin dongia</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatun vatu</displayName>
				<displayName count="other">Vanuatun vatua</displayName>
			</currency>
			<currency type="WST">
				<displayName>Samoan tala</displayName>
				<displayName count="other">Samoan talaa</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA-frangi BEAC</displayName>
				<displayName count="other">CFA-frangia BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>hopea</displayName>
				<displayName count="one">hopeayksikkö</displayName>
				<displayName count="other">hopeayksikköä</displayName>
			</currency>
			<currency type="XAU">
				<displayName>kulta</displayName>
				<displayName count="one">kultayksikkö</displayName>
				<displayName count="other">kultayksikköä</displayName>
			</currency>
			<currency type="XBA">
				<displayName>EURCO</displayName>
				<displayName count="other">EURCO'a</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Euroopan rahayksikkö (EMU)</displayName>
				<displayName count="other">Euroopan rahayksikköä (EMU)</displayName>
			</currency>
			<currency type="XBC">
				<displayName>EUA (XBC)</displayName>
				<displayName count="other">EUA'ta (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>EUA (XBD)</displayName>
				<displayName count="other">EUA'ta (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Itä-Karibian dollari</displayName>
				<displayName count="other">Itä-Karibian dollaria</displayName>
			</currency>
			<currency type="XDR">
				<displayName>erityisnosto-oikeus (SDR)</displayName>
				<displayName count="other">erityisnosto-oikeutta (SDR)</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Euroopan valuuttayksikkö (ECU)</displayName>
				<displayName count="other">Euroopan valuuttayksikköä (ECU)</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Ranskan kultafrangi</displayName>
				<displayName count="other">Ranskan kultafrangia</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Ranskan UIC-frangi</displayName>
				<displayName count="other">Ranskan UIC-frangia</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA-frangi BCEAO</displayName>
				<displayName count="other">CFA-frangia BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>palladium</displayName>
				<displayName count="one">palladiumyksikkö</displayName>
				<displayName count="other">palladiumyksikköä</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP-frangi</displayName>
				<displayName count="other">CFP-frangia</displayName>
			</currency>
			<currency type="XPT">
				<displayName>platina</displayName>
				<displayName count="one">platinayksikkö</displayName>
				<displayName count="other">platinayksikköä</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET-rahastot</displayName>
				<displayName count="one">RINET-rahastoyksikkö</displayName>
				<displayName count="other">RINET-rahastoyksikköä</displayName>
			</currency>
			<currency type="XTS">
				<displayName>testaustarkoitukseen varattu valuuttakoodi</displayName>
				<displayName count="other">testaustarkoitukseen varattua valuuttakoodi</displayName>
			</currency>
			<currency type="XXX">
				<displayName>tuntematon tai virheellinen rahayksikkö</displayName>
				<displayName count="one">tuntematon tai virheellinen rahayksikkö</displayName>
				<displayName count="other">tuntematonta tai virheellistä rahayksikköä</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemenin dinaari</displayName>
				<displayName count="other">Jemenin dinaaria</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemenin rial</displayName>
				<displayName count="other">Jemenin rialia</displayName>
			</currency>
			<currency type="YUD">
				<displayName>Jugoslavian kova dinaari</displayName>
				<displayName count="other">Jugoslavian kovaa dinaaria</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoslavian uusi dinaari</displayName>
				<displayName count="other">Jugoslavian uutta dinaaria</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslavian vaihdettava dinaari</displayName>
				<displayName count="other">Jugoslavian vaihdettavaa dinaaria</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Etelä-Afrikan rahoitusrandi</displayName>
				<displayName count="other">Etelä-Afrikan rahoitusrandia</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Etelä-Afrikan randi</displayName>
				<displayName count="other">Etelä-Afrikan randia</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Sambian kwacha</displayName>
				<displayName count="other">Sambian kwachaa</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairen uusi zaire</displayName>
				<displayName count="other">Zairen uutta zairea</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairen zaire</displayName>
				<displayName count="other">Zairen zairea</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwen dollari</displayName>
				<displayName count="other">Zimbabwen dollaria</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} päivä</unitPattern>
			<unitPattern count="other">{0} päivää</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} tunti</unitPattern>
			<unitPattern count="other">{0} tuntia</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuutti</unitPattern>
			<unitPattern count="other">{0} minuuttia</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} kuukausi</unitPattern>
			<unitPattern count="other">{0} kuukautta</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekunti</unitPattern>
			<unitPattern count="other">{0} sekuntia</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} viikko</unitPattern>
			<unitPattern count="other">{0} viikkoa</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} vuosi</unitPattern>
			<unitPattern count="other">{0} vuotta</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>kyllä:kylla:k</yesstr>
			<nostr>ei:e</nostr>
		</messages>
	</posix>
</ldml>
PKpG[Mڿ�##Locale/Data/ca_ES.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ca"/>
		<territory type="ES"/>
	</identity>
</ldml>
PKpG[*�+$$Locale/Data/kpe_GN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kpe"/>
		<territory type="GN"/>
	</identity>
</ldml>
PKpG[&u�##Locale/Data/lo_LA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="lo"/>
		<territory type="LA"/>
	</identity>
</ldml>
PKpG[DL##Locale/Data/cy_GB.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="cy"/>
		<territory type="GB"/>
	</identity>
</ldml>
PKpG[���2!!Locale/Data/ar_YE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="YE"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###;#0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[MKO;;Locale/Data/pa_Arab_PK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.12 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="pa"/>
		<script type="Arab"/>
		<territory type="PK"/>
	</identity>
</ldml>
PKpG[�<�::Locale/Data/ug_Arab_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ug"/>
		<script type="Arab"/>
		<territory type="CN"/>
	</identity>
</ldml>
PKpG[���OOLocale/Data/uz_AF.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.39 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<territory type="AF"/>
	</identity>
	<alias source="uz_Arab_AF" path="//ldml"/>
</ldml>
PKpG[�4��;;Locale/Data/aa_DJ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="aa"/>
		<territory type="DJ"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="2">Naharsi Kudo</month>
							<month type="4">Agda Baxisso</month>
							<month type="8">Leqeeni</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="ERN">
				<symbol>$</symbol>
			</currency>
			<currency type="ETB">
				<symbol>ETB</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[Q��##Locale/Data/nb_NO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nb"/>
		<territory type="NO"/>
	</identity>
</ldml>
PKpG[6W�A��Locale/Data/ak.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.28 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="ak"/>
	</identity>
	<characters>
		<exemplarCharacters>[a b d e ɛ f-i k-o ɔ p r-u w y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c j q v z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">S-Ɔ</month>
							<month type="2">K-Ɔ</month>
							<month type="3">E-Ɔ</month>
							<month type="4">E-O</month>
							<month type="5">E-K</month>
							<month type="6">O-A</month>
							<month type="7">A-K</month>
							<month type="8">D-Ɔ</month>
							<month type="9">F-Ɛ</month>
							<month type="10">Ɔ-A</month>
							<month type="11">Ɔ-O</month>
							<month type="12">M-Ɔ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Sanda-Ɔpɛpɔn</month>
							<month type="2">Kwakwar-Ɔgyefuo</month>
							<month type="3">Ebɔw-Ɔbenem</month>
							<month type="4">Ebɔbira-Oforisuo</month>
							<month type="5">Esusow Aketseaba-Kɔtɔnimba</month>
							<month type="6">Obirade-Ayɛwohomumu</month>
							<month type="7">Ayɛwoho-Kitawonsa</month>
							<month type="8">Difuu-Ɔsandaa</month>
							<month type="9">Fankwa-Ɛbɔ</month>
							<month type="10">Ɔbɛsɛ-Ahinime</month>
							<month type="11">Ɔberɛfɛw-Obubuo</month>
							<month type="12">Mumu-Ɔpɛnimba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Kwe</day>
							<day type="mon">Dwo</day>
							<day type="tue">Ben</day>
							<day type="wed">Wuk</day>
							<day type="thu">Yaw</day>
							<day type="fri">Fia</day>
							<day type="sat">Mem</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Kwesida</day>
							<day type="mon">Dwowda</day>
							<day type="tue">Benada</day>
							<day type="wed">Wukuda</day>
							<day type="thu">Yawda</day>
							<day type="fri">Fida</day>
							<day type="sat">Memeneda</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">K</day>
							<day type="mon">D</day>
							<day type="tue">B</day>
							<day type="wed">W</day>
							<day type="thu">Y</day>
							<day type="fri">F</day>
							<day type="sat">M</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AN</am>
				<pm>EW</pm>
				<eras>
					<eraNames>
						<era type="0">Ansa Kristo</era>
						<era type="1">Kristo Ekyiri</era>
					</eraNames>
					<eraAbbr>
						<era type="0">AK</era>
						<era type="1">KE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="GHC">
				<displayName>Sidi</displayName>
				<symbol>GH¢</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�8*�TTLocale/Data/en_Shaw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.5 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="en"/>
		<script type="Shaw"/>
	</identity>
	<characters>
		<exemplarCharacters>[𐑐-𐑿]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a-z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">·𐑡𐑨</month>
							<month type="2">·𐑓𐑧</month>
							<month type="3">·𐑥𐑸</month>
							<month type="4">·𐑱𐑐</month>
							<month type="5">·𐑥𐑱</month>
							<month type="6">·𐑡𐑵</month>
							<month type="7">·𐑡𐑫</month>
							<month type="8">·𐑪𐑜</month>
							<month type="9">·𐑕𐑧</month>
							<month type="10">·𐑷𐑒</month>
							<month type="11">·𐑯𐑴</month>
							<month type="12">·𐑛𐑭</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">·𐑡𐑨𐑙𐑘𐑭𐑢𐑺𐑰</month>
							<month type="2">·𐑓𐑧𐑚𐑘𐑵𐑢𐑺𐑰</month>
							<month type="3">·𐑥𐑸𐑗</month>
							<month type="4">·𐑱𐑐𐑮𐑭𐑤</month>
							<month type="5">·𐑥𐑱</month>
							<month type="6">·𐑡𐑵𐑯</month>
							<month type="7">·𐑡𐑫𐑤𐑲</month>
							<month type="8">·𐑪𐑜𐑭𐑕𐑑</month>
							<month type="9">·𐑕𐑧𐑐𐑑𐑧𐑥𐑚𐑸</month>
							<month type="10">·𐑷𐑒𐑑𐑴𐑚𐑸</month>
							<month type="11">·𐑯𐑴𐑝𐑧𐑥𐑚𐑸</month>
							<month type="12">·𐑛𐑭𐑕𐑧𐑥𐑚𐑸</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">𐑡</month>
							<month type="2">𐑓</month>
							<month type="3">𐑥</month>
							<month type="4">𐑱</month>
							<month type="5">𐑥</month>
							<month type="6">𐑡</month>
							<month type="7">𐑡</month>
							<month type="8">𐑪</month>
							<month type="9">𐑕</month>
							<month type="10">𐑷</month>
							<month type="11">𐑯</month>
							<month type="12">𐑛</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">·𐑕𐑭</day>
							<day type="mon">·𐑥𐑭</day>
							<day type="tue">·𐑑𐑵</day>
							<day type="wed">·𐑢𐑧</day>
							<day type="thu">·𐑔𐑻</day>
							<day type="fri">·𐑓𐑮</day>
							<day type="sat">·𐑕𐑨</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">·𐑕𐑭𐑙𐑛𐑱</day>
							<day type="mon">·𐑥𐑭𐑙𐑛𐑱</day>
							<day type="tue">·𐑑𐑵𐑟𐑛𐑱</day>
							<day type="wed">·𐑢𐑧𐑙𐑟𐑛𐑱</day>
							<day type="thu">·𐑔𐑻𐑟𐑛𐑱</day>
							<day type="fri">·𐑓𐑮𐑲𐑛𐑱</day>
							<day type="sat">·𐑕𐑨𐑛𐑻𐑛𐑱</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">𐑕</day>
							<day type="mon">𐑥</day>
							<day type="tue">𐑑</day>
							<day type="wed">𐑢</day>
							<day type="thu">𐑔</day>
							<day type="fri">𐑓</day>
							<day type="sat">𐑕</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">𐑒1</quarter>
							<quarter type="2">𐑒2</quarter>
							<quarter type="3">𐑒3</quarter>
							<quarter type="4">𐑒4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1𐑕𐑑 𐑒𐑢𐑸𐑛𐑸</quarter>
							<quarter type="2">2𐑯𐑛 𐑒𐑢𐑸𐑛𐑸</quarter>
							<quarter type="3">3𐑻𐑛 𐑒𐑢𐑸𐑛𐑸</quarter>
							<quarter type="4">4𐑹𐑔 𐑒𐑢𐑸𐑛𐑸</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>𐑨𐑥</am>
				<pm>𐑐𐑥</pm>
				<eras>
					<eraNames>
						<era type="0">𐑚𐑰𐑓𐑪𐑮 ·𐑒𐑮𐑲𐑕𐑑</era>
						<era type="1">𐑨𐑙𐑴 𐑛𐑪𐑥𐑦𐑙𐑰</era>
					</eraNames>
					<eraAbbr>
						<era type="0">𐑚·𐑒</era>
						<era type="1">𐑨𐑛</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">𐑚</era>
						<era type="1">𐑨</era>
					</eraNarrow>
				</eras>
				<fields>
					<field type="era">
						<displayName>𐑽𐑭</displayName>
					</field>
					<field type="year">
						<displayName>𐑘𐑽</displayName>
					</field>
					<field type="month">
						<displayName>𐑥𐑭𐑙𐑔</displayName>
					</field>
					<field type="week">
						<displayName>𐑢𐑰𐑒</displayName>
					</field>
					<field type="day">
						<displayName>𐑛𐑱</displayName>
						<relative type="0">𐑑𐑭𐑛𐑱</relative>
						<relative type="2">𐑞 𐑛𐑱 𐑨𐑓𐑑𐑸 𐑑𐑭𐑥𐑸𐑴</relative>
						<relative type="3">𐑔𐑮𐑰 𐑛𐑱𐑟 𐑓𐑮𐑭𐑥 𐑙𐑬</relative>
						<relative type="-1">𐑘𐑧𐑕𐑑𐑸𐑛𐑱</relative>
						<relative type="-2">𐑞 𐑛𐑱 𐑚𐑰𐑓𐑹 𐑘𐑧𐑕𐑑𐑸𐑛𐑱</relative>
						<relative type="-3">𐑔𐑮𐑰 𐑛𐑱𐑟 𐑭𐑜𐑴</relative>
					</field>
					<field type="weekday">
						<displayName>𐑛𐑱 𐑝 𐑞 𐑢𐑰𐑒</displayName>
					</field>
					<field type="dayperiod">
						<displayName>𐑨𐑥/𐑐𐑥</displayName>
					</field>
					<field type="hour">
						<displayName>𐑬𐑮</displayName>
					</field>
					<field type="minute">
						<displayName>𐑥𐑦𐑙𐑦𐑑</displayName>
					</field>
					<field type="second">
						<displayName>𐑕𐑧𐑒𐑭𐑙𐑛</displayName>
					</field>
					<field type="zone">
						<displayName>𐑟𐑴𐑯</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<gmtFormat>·𐑜𐑥𐑑{0}</gmtFormat>
			<regionFormat>{0} 𐑑𐑲𐑥</regionFormat>
		</timeZoneNames>
	</dates>
	<posix>
		<messages>
			<yesstr>𐑘𐑧𐑕:𐑘</yesstr>
			<nostr>𐑯𐑴:𐑯</nostr>
		</messages>
	</posix>
</ldml>

PKpG[���@$$Locale/Data/wal_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wal"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[�
##Locale/Data/gl_ES.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gl"/>
		<territory type="ES"/>
	</identity>
</ldml>
PKpG[���VVLocale/Data/es_AR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="es"/>
		<territory type="AR"/>
	</identity>
	<localeDisplayNames>
		<territories>
			<territory type="HK">Hong Kong</territory>
			<territory type="MO">Macao</territory>
		</territories>
		<variants>
			<variant type="REVISED">Ortografía revisada</variant>
		</variants>
		<measurementSystemNames>
			<measurementSystemName type="US">estadounidense</measurementSystemName>
			<measurementSystemName type="metric">métrico</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<am>a.m.</am>
				<pm>p.m.</pm>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH'h'''mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MEd">E d-M</dateFormatItem>
						<dateFormatItem id="yM">M-yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="ARS">
				<displayName>Peso Argentino</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="TRY">
				<displayName>nueva lira turca</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[>�""Locale/Data/ss_SZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:11:39 $"/>
		<language type="ss"/>
		<territory type="SZ"/>
	</identity>
</ldml>
PKpG[����!!Locale/Data/ar_SA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="SA"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###;#0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[��8�rrLocale/Data/ka.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="ka"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="ab">აფხაზური</language>
			<language type="ady">ადიღეური</language>
			<language type="ae">ავესტა</language>
			<language type="af">აფრიკული</language>
			<language type="ain">აინუ</language>
			<language type="ale">ალეუტური</language>
			<language type="ang">ძველი ინგლისური</language>
			<language type="ar">არაბული</language>
			<language type="arc">არამეული</language>
			<language type="art">ხელოვნური სხვა</language>
			<language type="as">ასამური</language>
			<language type="ast">ავსტრიული</language>
			<language type="az">აზერბაიჯანული</language>
			<language type="be">ბელორუსული</language>
			<language type="bg">ბულგარული</language>
			<language type="bh">ბიჰარი</language>
			<language type="bo">ტიბეტური</language>
			<language type="br">ბრეტონული</language>
			<language type="bs">ბოსნიური</language>
			<language type="bua">ბურიატული</language>
			<language type="ca">კატალანური</language>
			<language type="cau">კავკასიური სხვა</language>
			<language type="ce">ჩეჩნური</language>
			<language type="cel">კელტური სხვა</language>
			<language type="cs">ჩეხური</language>
			<language type="cu">საეკლესიო სლავური</language>
			<language type="cy">უელსური</language>
			<language type="da">დანიური</language>
			<language type="de">გერმანული</language>
			<language type="de_AT">ავსტრიული გერმანული</language>
			<language type="de_CH">შვეიცარიული მაღალი გერმანული</language>
			<language type="egy">ეგვიპტური</language>
			<language type="el">ბერძნული</language>
			<language type="en">ინგლისური</language>
			<language type="en_AU">ავსტრალიური ინგლისური</language>
			<language type="en_CA">კანადური ინგლისური</language>
			<language type="en_GB">ბრიტანული ინგლისური</language>
			<language type="en_US">ამერიკული  ინგლისური</language>
			<language type="eo">ესპერანტო</language>
			<language type="es">ესპანური</language>
			<language type="es_419">ლათინურ ამერიკული ესპანური</language>
			<language type="es_ES">იბერიული ესპანური</language>
			<language type="et">ესტონური</language>
			<language type="eu">ბასკური</language>
			<language type="fa">სპარსული</language>
			<language type="fi">ფინური</language>
			<language type="fil">ფილიპინური</language>
			<language type="fr">ფრანგული</language>
			<language type="fr_CA">კანადური ფრანგული</language>
			<language type="fr_CH">შვეიცარიული ფრანგული</language>
			<language type="fro">ძველი ფრანგული</language>
			<language type="ga">ირლანდიური</language>
			<language type="gd">შოტლანდიურ-გალური</language>
			<language type="gl">გალური</language>
			<language type="gn">გუარანი</language>
			<language type="goh">ძველი გერმანული</language>
			<language type="grc">ძველი ბერძნული</language>
			<language type="gsw">შვეიცარიული გერმანული</language>
			<language type="gu">გუჯარათი</language>
			<language type="he">ებრაული</language>
			<language type="hi">ჰინდი</language>
			<language type="hr">ხორვატიული</language>
			<language type="hu">უნგრული</language>
			<language type="hy">სომხური</language>
			<language type="ia">ინტერლინგუალური</language>
			<language type="id">ინდონეზიური</language>
			<language type="ie">ინტერლინგი</language>
			<language type="ine">ინდო-ევროპული სხვა</language>
			<language type="is">ისლანდიური</language>
			<language type="it">იტალიური</language>
			<language type="ja">იაპონური</language>
			<language type="jv">იავანური</language>
			<language type="ka">ქართული</language>
			<language type="kg">კონგო</language>
			<language type="kk">ყაზახური</language>
			<language type="km">კამბოჯიური</language>
			<language type="ko">კორეული</language>
			<language type="ku">ქურთული</language>
			<language type="ky">ყირგიზული</language>
			<language type="la">ლათინური</language>
			<language type="lb">ლუქსემბურგული</language>
			<language type="ln">ლინგალა</language>
			<language type="lo">ლაოსური</language>
			<language type="lt">ლიტვური</language>
			<language type="lv">ლატვიური</language>
			<language type="mk">მაკედონიური</language>
			<language type="mn">მონღოლური</language>
			<language type="mo">მოლდოვური</language>
			<language type="ms">მალაიზიური</language>
			<language type="myn">მაიას ენები</language>
			<language type="nap">ნეაპოლიტანური</language>
			<language type="ne">ნეპალური</language>
			<language type="nl">ჰოლანდიური</language>
			<language type="nl_BE">ფლომანდიური</language>
			<language type="nn">ნორვეგიული ნინორსკი</language>
			<language type="no">ნორვეგიული</language>
			<language type="nv">ნავახო</language>
			<language type="oc">ოციტანური</language>
			<language type="or">ორიული</language>
			<language type="os">ოსური</language>
			<language type="peo">ძველი სპარსული</language>
			<language type="pl">პოლონური</language>
			<language type="pra">პრაკრიტის ენები</language>
			<language type="ps">პუშტუ</language>
			<language type="pt">პორტუგალიური</language>
			<language type="pt_BR">ბრაზილიური პორტუგალიური</language>
			<language type="pt_PT">იბერიულ-პორტუგალიური</language>
			<language type="ro">რუმინული</language>
			<language type="ru">რუსული</language>
			<language type="sa">სანსკრიტი</language>
			<language type="sc">სარდინიული</language>
			<language type="scn">სიცილიური</language>
			<language type="sd">სინდური</language>
			<language type="sga">ძველი ირლანდიური</language>
			<language type="sh">სერბულ-ხორვატული</language>
			<language type="si">სინჰალური</language>
			<language type="sk">სლოვაკური</language>
			<language type="sl">სლოვენური</language>
			<language type="sla">სლავური სხვა</language>
			<language type="so">სომალიური</language>
			<language type="sq">ალბანური</language>
			<language type="sr">სერბული</language>
			<language type="st">სამხრეთ სოთოს ენა</language>
			<language type="sux">შუმერული</language>
			<language type="sv">შვედური</language>
			<language type="sw">სუაჰილი</language>
			<language type="tg">ტაჯიკური</language>
			<language type="th">ტაილანდური</language>
			<language type="tk">თურქმენული</language>
			<language type="tlh">კლინგონი</language>
			<language type="tn">ტსვანა</language>
			<language type="tr">თურქული</language>
			<language type="tw">თუი</language>
			<language type="udm">უდმურტიული</language>
			<language type="ug">უიგურული</language>
			<language type="uk">უკრაინული</language>
			<language type="und">უცნობი ან არასწორი ენა</language>
			<language type="ur">ურდუ</language>
			<language type="uz">უზბეკური</language>
			<language type="vi">ვიეტნამური</language>
			<language type="xh">ქსოზა</language>
			<language type="yi">იდიში</language>
			<language type="zh">ჩინური</language>
			<language type="zh_Hans">გამარტივებული ჩინური</language>
			<language type="zh_Hant">ტრადიციული ჩინური</language>
			<language type="zu">ზულუ</language>
		</languages>
		<scripts>
			<script type="Arab">არაბული</script>
			<script type="Armn">სომხური</script>
			<script type="Bali">ბალი</script>
			<script type="Batk">ბატაკი</script>
			<script type="Beng">ბენგალური</script>
			<script type="Brai">ბრაილი</script>
			<script type="Copt">კოპტური</script>
			<script type="Cprt">კვიპროსული</script>
			<script type="Cyrl">კირილიცა</script>
			<script type="Cyrs">ძველი საეკლესიო კირილიცა</script>
			<script type="Deva">დევანაგარი</script>
			<script type="Egyd">ეგვიპტური დემოტიკური</script>
			<script type="Egyh">ეგვიპტური ჰიერატიკული</script>
			<script type="Egyp">ეგვიპტური იეროგლიფური</script>
			<script type="Ethi">ეთიოპური</script>
			<script type="Geok">ხუცური</script>
			<script type="Geor">ქართული</script>
			<script type="Glag">გლაგოლიცა</script>
			<script type="Goth">გოთური</script>
			<script type="Grek">ბერძნული</script>
			<script type="Gujr">გუჯარათული</script>
			<script type="Guru">გურმუხული</script>
			<script type="Hani">ჰანი</script>
			<script type="Hans">გამარტივებული ჰანი</script>
			<script type="Hant">ტრადიციული ჰანი</script>
			<script type="Hebr">ებრაული</script>
			<script type="Hira">ჰირაგანა</script>
			<script type="Hrkt">კატაკანა ან ჰირაგანა</script>
			<script type="Hung">ძველი უნგრული</script>
			<script type="Jpan">იაპონური</script>
			<script type="Kana">კატაკანა</script>
			<script type="Khmr">ქჰმერული</script>
			<script type="Laoo">ლაოსური</script>
			<script type="Latn">ლათინური</script>
			<script type="Lina">წრფივი A</script>
			<script type="Linb">წრფივი B</script>
			<script type="Maya">მაიას იეროგლიფები</script>
			<script type="Mong">მონღოლური</script>
			<script type="Phnx">ფინიკიური</script>
			<script type="Runr">რუნული</script>
			<script type="Syrc">სირიული</script>
			<script type="Syre">ესტრანჯელოსეული სირიული</script>
			<script type="Syrj">დასავლეთი სირიული</script>
			<script type="Syrn">აღმოსავლეთი სირიული</script>
			<script type="Taml">ტამილური</script>
			<script type="Thai">ტაილანდური</script>
			<script type="Tibt">ტიბეტური</script>
			<script type="Xpeo">ძველი სპარსული</script>
			<script type="Xsux">შუმერულ-აქადური ლურსმნული</script>
			<script type="Zxxx">დაუწერელი</script>
			<script type="Zzzz">უცნობი ან არასწორი დამწერლობა</script>
		</scripts>
		<territories>
			<territory type="001">მსოფლიო</territory>
			<territory type="002">აფრიკა</territory>
			<territory type="003">ჩრდილოეთ ამერიკა</territory>
			<territory type="005">სამხრეთი ამერიკა</territory>
			<territory type="009">ოკეანეთი</territory>
			<territory type="011">დასავლეთი აფრიკა</territory>
			<territory type="013">ცენტრალური ამერიკა</territory>
			<territory type="014">აღმოსავლეთი აფრიკა</territory>
			<territory type="015">ჩრდილოეთი აფრიკა</territory>
			<territory type="017">შუა აფრიკა</territory>
			<territory type="018">სამხრეთი აფრიკა</territory>
			<territory type="019">ამერიკები</territory>
			<territory type="021">ჩრდილოეთი ამერიკა</territory>
			<territory type="029">კარიბი</territory>
			<territory type="030">აღმოსავლეთი აზია</territory>
			<territory type="034">სამხრეთი აზია</territory>
			<territory type="035">სამხრეთ-აღმოსავლეთი აზია</territory>
			<territory type="039">სამხრეთი ევროპა</territory>
			<territory type="053">ავსტრალია და ახალი ზელანდია</territory>
			<territory type="054">მელანეზია</territory>
			<territory type="057">მირონეზია</territory>
			<territory type="061">პოლინეზია</territory>
			<territory type="062">სამხრეთ-ცენტრალური აზია</territory>
			<territory type="142">აზია</territory>
			<territory type="143">ცენტრალური აზია</territory>
			<territory type="145">დასავლეთი აზია</territory>
			<territory type="150">ევროპა</territory>
			<territory type="151">აღმოსავლეთი ევროპა</territory>
			<territory type="154">ჩრდილოეთი ევროპა</territory>
			<territory type="155">დასავლეთი ევროპა</territory>
			<territory type="172">დამოუკიდებელ სახელმწიფოთა თანამეგობრობა</territory>
			<territory type="419">ლათინური ამერიკა და კარიბი</territory>
			<territory type="AD">ანდორა</territory>
			<territory type="AE">არაბეთის გაერთიანებული ემირატები</territory>
			<territory type="AF">ავღანეთი</territory>
			<territory type="AG">ანტიგუა და ბარბუდა</territory>
			<territory type="AI">ანგვილა</territory>
			<territory type="AL">ალბანეთი</territory>
			<territory type="AM">სომხეთი</territory>
			<territory type="AN">ნიდერლანდების ანტილები</territory>
			<territory type="AO">ანგოლა</territory>
			<territory type="AQ">ანტარქტიკა</territory>
			<territory type="AR">არგენტინა</territory>
			<territory type="AS">ამერიკული სამოა</territory>
			<territory type="AT">ავსტრია</territory>
			<territory type="AU">ავსტრალია</territory>
			<territory type="AW">არუბა</territory>
			<territory type="AX">ალანდის კუნძულები</territory>
			<territory type="AZ">აზერბაიჯანი</territory>
			<territory type="BA">ბოსნია და ჰერცეგოვინა</territory>
			<territory type="BB">ბარბადოსი</territory>
			<territory type="BD">ბანგლადეში</territory>
			<territory type="BE">ბელგია</territory>
			<territory type="BF">ბურკინა-ფასო</territory>
			<territory type="BG">ბულგარეთი</territory>
			<territory type="BH">ბაჰრეინი</territory>
			<territory type="BI">ბურუნდი</territory>
			<territory type="BJ">ბენინი</territory>
			<territory type="BM">ბერმუდა</territory>
			<territory type="BN">ბრუნეი</territory>
			<territory type="BO">ბოლივია</territory>
			<territory type="BR">ბრაზილია</territory>
			<territory type="BS">ბაჰამის კუნძულები</territory>
			<territory type="BT">ბუტანი</territory>
			<territory type="BV">ბუვეს კუნძული</territory>
			<territory type="BW">ბოტსვანა</territory>
			<territory type="BY">ბელორუსია</territory>
			<territory type="BZ">ბელიზი</territory>
			<territory type="CA">კანადა</territory>
			<territory type="CD">კონგო - კინშასა</territory>
			<territory type="CF">ცენტრალური აფრიკის რესპუბლიკა</territory>
			<territory type="CG">კონგო</territory>
			<territory type="CH">შვეიცარია</territory>
			<territory type="CI">სპილოს ძვლის სანაპირო</territory>
			<territory type="CK">კუკის კუნძულები</territory>
			<territory type="CL">ჩილე</territory>
			<territory type="CM">კამერუნი</territory>
			<territory type="CN">ჩინეთი</territory>
			<territory type="CO">კოლუმბია</territory>
			<territory type="CR">კოსტა-რიკა</territory>
			<territory type="CS">სერბია და მონტენეგრო</territory>
			<territory type="CU">კუბა</territory>
			<territory type="CV">კაბო-ვერდე</territory>
			<territory type="CX">შობის კუნძული</territory>
			<territory type="CY">კვიპროსი</territory>
			<territory type="CZ">ჩეხეთის რესპუბლიკა</territory>
			<territory type="DE">გერმანია</territory>
			<territory type="DJ">ჯიბუტი</territory>
			<territory type="DK">დანია</territory>
			<territory type="DM">დომინიკა</territory>
			<territory type="DO">დომინიკანის რესპუბლიკა</territory>
			<territory type="DZ">ალჟირი</territory>
			<territory type="EC">ეკვადორი</territory>
			<territory type="EE">ესტონეთი</territory>
			<territory type="EG">ეგვიპტე</territory>
			<territory type="EH">დასავლეთი საჰარა</territory>
			<territory type="ER">ერიტრეა</territory>
			<territory type="ES">ესპანეთი</territory>
			<territory type="ET">ეთიოპია</territory>
			<territory type="FI">ფინეთი</territory>
			<territory type="FJ">ფიჯი</territory>
			<territory type="FK">ფალკლენდის კუნძულები</territory>
			<territory type="FM">მიკრონეზია</territory>
			<territory type="FO">ფაროს კუნძულები</territory>
			<territory type="FR">საფრანგეთი</territory>
			<territory type="GA">გაბონი</territory>
			<territory type="GB">დიდი ბრიტანეთი</territory>
			<territory type="GD">გრენადა</territory>
			<territory type="GE">საქართველო</territory>
			<territory type="GH">განა</territory>
			<territory type="GI">გიბრალტარი</territory>
			<territory type="GL">გრენლანდია</territory>
			<territory type="GM">გამბია</territory>
			<territory type="GN">გვინეა</territory>
			<territory type="GP">გვადელუპე</territory>
			<territory type="GQ">ეკვატორული გვინეა</territory>
			<territory type="GR">საბერძნეთი</territory>
			<territory type="GS">სამხრეთი ჯორჯია და სამხრეთ სენდვიჩის კუნძულები</territory>
			<territory type="GT">გვატემალა</territory>
			<territory type="GU">გუამი</territory>
			<territory type="GW">გვინეა-ბისაუ</territory>
			<territory type="GY">გაიანა</territory>
			<territory type="HK">ჰონგ კონგი</territory>
			<territory type="HM">ჰერდის კუნძული და მაკდონალდის კუნძულები</territory>
			<territory type="HN">ჰონდურასი</territory>
			<territory type="HR">ჰორვატია</territory>
			<territory type="HT">ჰაიტი</territory>
			<territory type="HU">უნგრეთი</territory>
			<territory type="ID">ინდონეზია</territory>
			<territory type="IE">ირლანდია</territory>
			<territory type="IL">ისრაელი</territory>
			<territory type="IM">მანის კუნძული</territory>
			<territory type="IN">ინდოეთი</territory>
			<territory type="IO">ბრიტანული ტერიტორია ინდოეთის ოკეანეში</territory>
			<territory type="IQ">ერაყი</territory>
			<territory type="IR">ირანი</territory>
			<territory type="IS">ისლანდია</territory>
			<territory type="IT">იტალია</territory>
			<territory type="JE">ჯერსი</territory>
			<territory type="JM">იამაიკა</territory>
			<territory type="JO">იორდანია</territory>
			<territory type="JP">იაპონია</territory>
			<territory type="KE">კენია</territory>
			<territory type="KG">ყირგიზეთი</territory>
			<territory type="KH">კამბოჯა</territory>
			<territory type="KI">კირიბატი</territory>
			<territory type="KM">კომორის კუნძულები</territory>
			<territory type="KN">სენტ-კიტსი და ნევისი</territory>
			<territory type="KP">ჩრდილოეთი კორეა</territory>
			<territory type="KR">სამხრეთი კორეა</territory>
			<territory type="KW">კუვეიტი</territory>
			<territory type="KY">კაიმანის კუნძულები</territory>
			<territory type="KZ">ყაზახეთი</territory>
			<territory type="LA">ლაოსი</territory>
			<territory type="LB">ლიბანი</territory>
			<territory type="LC">სენტ-ლუსია</territory>
			<territory type="LI">ლიხტენშტაინი</territory>
			<territory type="LK">შრი-ლანკა</territory>
			<territory type="LR">ლიბერია</territory>
			<territory type="LS">ლესოთო</territory>
			<territory type="LT">ლიტვა</territory>
			<territory type="LU">ლუქსემბურგი</territory>
			<territory type="LV">ლატვია</territory>
			<territory type="LY">ლიბია</territory>
			<territory type="MA">მაროკო</territory>
			<territory type="MC">მონაკო</territory>
			<territory type="MD">მოლდოვა</territory>
			<territory type="ME">მონტენეგრო</territory>
			<territory type="MG">მადაგასკარი</territory>
			<territory type="MH">მარშალის კუნძულები</territory>
			<territory type="MK">მაკედონია</territory>
			<territory type="ML">მალი</territory>
			<territory type="MM">მიანმარი</territory>
			<territory type="MN">მონღოლეთი</territory>
			<territory type="MO">მაკაო</territory>
			<territory type="MQ">მარტინიკი</territory>
			<territory type="MR">მავრიტანია</territory>
			<territory type="MS">მონსერატი</territory>
			<territory type="MT">მალტა</territory>
			<territory type="MU">მავრიკია</territory>
			<territory type="MV">მალდივის კუნძულები</territory>
			<territory type="MW">მალავი</territory>
			<territory type="MX">მექსიკა</territory>
			<territory type="MY">მალაიზია</territory>
			<territory type="MZ">მოზამბიკი</territory>
			<territory type="NA">ნამიბია</territory>
			<territory type="NC">ახალი კალედონია</territory>
			<territory type="NE">ნიგერი</territory>
			<territory type="NF">ნორფოლკის კუნძული</territory>
			<territory type="NG">ნიგერია</territory>
			<territory type="NI">ნიკარაგუა</territory>
			<territory type="NL">ნიდერლანდები</territory>
			<territory type="NO">ნორვეგია</territory>
			<territory type="NP">ნეპალი</territory>
			<territory type="NR">ნაურუ</territory>
			<territory type="NZ">ახალი ზელანდია</territory>
			<territory type="OM">ომანი</territory>
			<territory type="PA">პანამა</territory>
			<territory type="PE">პერუ</territory>
			<territory type="PF">ფრანგული პოლინეზია</territory>
			<territory type="PG">პაპუა-ახალი გვინეა</territory>
			<territory type="PH">ფილიპინები</territory>
			<territory type="PK">პაკისტანი</territory>
			<territory type="PL">პოლონეთი</territory>
			<territory type="PM">სენტ-პიერი და მიქელონი</territory>
			<territory type="PR">პუერტო რიკო</territory>
			<territory type="PS">პალესტინის ტერიტორია</territory>
			<territory type="PT">პორტუგალია</territory>
			<territory type="PW">პალაუ</territory>
			<territory type="PY">პარაგვაი</territory>
			<territory type="QA">კატარი</territory>
			<territory type="QO">დაშორებული ოკეანია</territory>
			<territory type="QU">ევროკავშირი</territory>
			<territory type="RE">რეიუნიონი</territory>
			<territory type="RO">რუმინეთი</territory>
			<territory type="RS">სერბია</territory>
			<territory type="RU">რუსეთი</territory>
			<territory type="RW">რუანდა</territory>
			<territory type="SA">საუდის არაბეთი</territory>
			<territory type="SB">სოლომონის კუნძულები</territory>
			<territory type="SC">სეიშელის კუნძულები</territory>
			<territory type="SD">სუდანი</territory>
			<territory type="SE">შვეცია</territory>
			<territory type="SG">სინგაპური</territory>
			<territory type="SH">წმინდა ელენეს კუნძული</territory>
			<territory type="SI">სლოვენია</territory>
			<territory type="SK">სლოვაკეთი</territory>
			<territory type="SL">სიერა-ლეონე</territory>
			<territory type="SM">სან-მარინო</territory>
			<territory type="SN">სენეგალი</territory>
			<territory type="SO">სომალი</territory>
			<territory type="SR">სურინამი</territory>
			<territory type="ST">საო-ტომე და პრინსიპი</territory>
			<territory type="SV">სალვადორი</territory>
			<territory type="SY">სირია</territory>
			<territory type="SZ">სვაზილენდი</territory>
			<territory type="TD">ჩადი</territory>
			<territory type="TF">ფრანგული სამხრეთის ტერიტორიები</territory>
			<territory type="TG">ტოგო</territory>
			<territory type="TH">ტაილანდი</territory>
			<territory type="TJ">ტაჯიკეთი</territory>
			<territory type="TL">აღმოსავლეთი ტიმორი</territory>
			<territory type="TM">თურქმენეთი</territory>
			<territory type="TN">ტუნისი</territory>
			<territory type="TO">ტონგა</territory>
			<territory type="TR">თურქეთი</territory>
			<territory type="TT">ტრინიდადი და ტობაგო</territory>
			<territory type="TV">ტუვალუ</territory>
			<territory type="TW">ტაივანი</territory>
			<territory type="TZ">ტანზანია</territory>
			<territory type="UA">უკრაინა</territory>
			<territory type="UG">უგანდა</territory>
			<territory type="UM">შეერთებული შტატების მცირე დაშორებული კუნძულები</territory>
			<territory type="US">ამერიკის შეერთებული შტატები</territory>
			<territory type="UY">ურუგვაი</territory>
			<territory type="UZ">უზბეკეთი</territory>
			<territory type="VA">ვატიკანი</territory>
			<territory type="VC">სენტ-ვინსენტი და გრენადინები</territory>
			<territory type="VE">ვენესუელა</territory>
			<territory type="VN">ვიეტნამი</territory>
			<territory type="VU">ვანუატუ</territory>
			<territory type="WF">ვალისი და ფუტუნა</territory>
			<territory type="WS">სამოა</territory>
			<territory type="YE">იემენი</territory>
			<territory type="ZA">სამხრეთ აფრიკა</territory>
			<territory type="ZM">ზამბია</territory>
			<territory type="ZW">ზიმბაბვე</territory>
			<territory type="ZZ">უცნობი ან არასწორი რეგიონი</territory>
		</territories>
		<keys>
			<key type="calendar">კალენდარი</key>
			<key type="collation">მიმდევრობა</key>
			<key type="currency">ვალუტა</key>
		</keys>
		<types>
			<type type="big5han" key="collation">ტრადიციული ჩინური</type>
			<type type="buddhist" key="calendar">ბუდისტური კალენდარი</type>
			<type type="chinese" key="calendar">ჩინური კალენდარი</type>
			<type type="direct" key="collation">პირდაპირი მიმდევრობა</type>
			<type type="gb2312han" key="collation">გამარტივებული ჩინური</type>
			<type type="gregorian" key="calendar">გრიგორიანული კალენდარი</type>
			<type type="hebrew" key="calendar">ებრაული კალენდარი</type>
			<type type="indian" key="calendar">ინდური ეროვნული კალენდარი</type>
			<type type="islamic" key="calendar">ისლამური კალენდარი</type>
			<type type="islamic-civil" key="calendar">ისლამური სამოქალაქო კალენდარი</type>
			<type type="japanese" key="calendar">იაპონური კალენდარი</type>
			<type type="roc" key="calendar">ჩინეთის რესპუბლიკის კალენდარი</type>
			<type type="traditional" key="collation">ტრადიციული</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ა ⴀ ბ ⴁ გ ⴂ დ ⴃ ე ⴄ ვ ⴅ ზ ⴆ ჱ ⴡ თ ⴇ ი ⴈ კ ⴉ ლ ⴊ მ ⴋ ნ ⴌ ჲ ⴢ ო ⴍ პ ⴎ ჟ ⴏ რ ⴐ ს ⴑ ტ ⴒ ჳ ⴣ უ ⴓ ფ ⴔ ქ ⴕ ღ ⴖ ყ ⴗ შ ⴘ ჩ ⴙ ც ⴚ ძ ⴛ წ ⴜ ჭ ⴝ ხ ⴞ ჴ ⴤ ჯ ⴟ ჰ ⴠ ჵ ⴥ ჶ-ჺ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">იან</month>
							<month type="2">თებ</month>
							<month type="3">მარ</month>
							<month type="4">აპრ</month>
							<month type="5">მაი</month>
							<month type="6">ივნ</month>
							<month type="7">ივლ</month>
							<month type="8">აგვ</month>
							<month type="9">სექ</month>
							<month type="10">ოქტ</month>
							<month type="11">ნოე</month>
							<month type="12">დეკ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">იანვარი</month>
							<month type="2">თებერვალი</month>
							<month type="3">მარტი</month>
							<month type="4">აპრილი</month>
							<month type="5">მაისი</month>
							<month type="6">ივნისი</month>
							<month type="7">ივლისი</month>
							<month type="8">აგვისტო</month>
							<month type="9">სექტემბერი</month>
							<month type="10">ოქტომბერი</month>
							<month type="11">ნოემბერი</month>
							<month type="12">დეკემბერი</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ი</month>
							<month type="2">თ</month>
							<month type="3">მ</month>
							<month type="4">ა</month>
							<month type="5">მ</month>
							<month type="6">ი</month>
							<month type="7">ი</month>
							<month type="8">ა</month>
							<month type="9">ს</month>
							<month type="10">ო</month>
							<month type="11">ნ</month>
							<month type="12">დ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">კვი</day>
							<day type="mon">ორშ</day>
							<day type="tue">სამ</day>
							<day type="wed">ოთხ</day>
							<day type="thu">ხუთ</day>
							<day type="fri">პარ</day>
							<day type="sat">შაბ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">კვირა</day>
							<day type="mon">ორშაბათი</day>
							<day type="tue">სამშაბათი</day>
							<day type="wed">ოთხშაბათი</day>
							<day type="thu">ხუთშაბათი</day>
							<day type="fri">პარასკევი</day>
							<day type="sat">შაბათი</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">კ</day>
							<day type="mon">ო</day>
							<day type="tue">ს</day>
							<day type="wed">ო</day>
							<day type="thu">ხ</day>
							<day type="fri">პ</day>
							<day type="sat">შ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">I კვ.</quarter>
							<quarter type="2">II კვ.</quarter>
							<quarter type="3">III კვ.</quarter>
							<quarter type="4">IV კვ.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-ლი კვარტალი</quarter>
							<quarter type="2">მე-2 კვარტალი</quarter>
							<quarter type="3">მე-3 კვარტალი</quarter>
							<quarter type="4">მე-4 კვარტალი</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="wide">
							<quarter type="1">I კვარტალი</quarter>
							<quarter type="2">II კვარტალი</quarter>
							<quarter type="3">III კვარტალი</quarter>
							<quarter type="4">IV კვარტალი</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>დილის</am>
				<pm>საღამოს</pm>
				<eras>
					<eraNames>
						<era type="0">ჩვენს წელთაღრიცხვამდე</era>
						<era type="1">ჩვენი წელთაღრიცხვით</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ჩვენს წელთაღრიცხვამდე</era>
						<era type="1">ჩვენი წელთაღრიცხვით</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">ჩვენს წელთაღრიცხვამდე</era>
						<era type="1">ჩვენი წელთაღრიცხვით</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMdd">dd MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE, d MMM, yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">d MMM, yy</dateFormatItem>
						<dateFormatItem id="yyMMdd">dd/MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ხანა</displayName>
					</field>
					<field type="year">
						<displayName>წელი</displayName>
					</field>
					<field type="month">
						<displayName>თვე</displayName>
					</field>
					<field type="week">
						<displayName>კვირა</displayName>
					</field>
					<field type="day">
						<displayName>დღე</displayName>
						<relative type="0">დღეს</relative>
						<relative type="1">ხვალ</relative>
						<relative type="2">ზეგ</relative>
						<relative type="3">სამი დღის შემდეგ</relative>
						<relative type="-1">გუშინ</relative>
						<relative type="-2">გუშინწინ</relative>
						<relative type="-3">სამი დღის წინ</relative>
					</field>
					<field type="weekday">
						<displayName>კვირის დღე</displayName>
					</field>
					<field type="dayperiod">
						<displayName>დღის პერიოდი</displayName>
					</field>
					<field type="hour">
						<displayName>საათი</displayName>
					</field>
					<field type="minute">
						<displayName>წუთი</displayName>
					</field>
					<field type="second">
						<displayName>წამი</displayName>
					</field>
					<field type="zone">
						<displayName>ზონა</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>უცნობი</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>ბარბუდა</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>ანგილა</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>ნიდერლანდის</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>ანგოლა</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>როთერა</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>პალმერი</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>სამხრეთი პოლუსი</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>სიოუა</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>მოუსონი</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>დევისი</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ვოსტოკი</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>კეისი</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>დიუმონ დ'ურვილი</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>მაკმურდო</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>რიო გალეგოსი</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>მენდოზა</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>სან ხუანი</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>უშუაია</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ლა რიოხა</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>სან ლუისი</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>კატამარკა</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>ჯუჯუი</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>ტუკუმანი</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>კორდობა</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ბუენოს აირესი</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>პერთი</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>ეუკლა</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>დარვინი</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>ადელაიდა</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ბროუკენ ჰილი</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>ქური</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>მელბურნი</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>ჰობარტი</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>ლინდმანი</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>სიდნეი</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ბრისბეინი</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>ლორდ ჰოუი</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>არუბა</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>ბარბადოსი</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>ბურკინა ფასო</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>ბურუნდი</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>ბენინი</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>ბოლივია</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>ეირუნეპე</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>რიო ბრანკო</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>პორტო ველჰო</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>ბოა ვისტა</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>მანაუსი</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>კუიაბა</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>კამპო გრანდე</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>ბელემი</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>არაგუაინა</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>საო პაულო</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>ბაია</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>ფორტალეზა</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>მასეიო</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>რეციფე</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>ნორონია</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>ბაჰამის კუნძულები</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>ბოტსვანა</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>ბელიზი</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>დოუსონი</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>უაითჰორსი</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>ინუვიკი</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>ვანკუვერი</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>დოუსონ ქრიკი</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>იელოუნაიფი</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>ედმონტონი</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>სვიფტ კარენტი</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>კემბრიჯ ბეი</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>რეჯინა</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>უინიპეგი</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>რეზოლუტე</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>რეინი რივერი</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>რენკინ ინლეტი</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>ქორალ ჰარბორი</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>თანდერ ბეი</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>ნიპიგონი</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>ტორონტო</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>მონრეალი</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>იქალუიტი</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>პანგნირტუნგი</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>მონქტონი</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>ჰალიფაქსი</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>გუზ ბეი</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>გლეის ბეი</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ბლან-საბლონი</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>სენტ ჯონსი</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>კინშასა</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>ლუბუმბაში</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>ცენტრალური აფრიკის რესპუბლიკა</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>კონგო - ბრაზავილი</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>სპილოს ძვლის სანაპირო</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ისთერი</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>კამერუნი</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>კაშგარი</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>ურუმქი</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>ჩონგქინგი</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>ჰარბინი</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>კოლუმბია</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>კოსტა რიკა</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>კუბა</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>ჯიბუტი</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>დომინიკა</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>ალჟირი</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>გალაპაგოსი</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>ეგვიპტე</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>დასავლეთი საჰარა</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>ერითრეა</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>კანარი</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>სეუტა</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>ეთიოპია</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ტრუკი</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>პონაპე</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>კოსრაე</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>გაბონი</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>გრენადა</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>გუიანა</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>განა</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>თულე</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>სკორსბისუნდი</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>დენმარკშავნი</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>გამბია</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>გინეა</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>გუადელუპე</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>ეკვატორული გვინეა</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>გუატემალა</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>გინეა-ბისაუ</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>გუიანა</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>ჯაკარტა</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>პონტიანაკი</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>მაკასარი</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ჯაიაპურა</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>იამაიკა</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>კენია</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>ენდერბური</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>კირიტიმატი</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>ტარაუა</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>კაიმანის</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>აქტაუ</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ორალი</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>აქტობე</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>ყიზილორდა</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>ალმატი</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>ლიბერია</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>ლესოთო</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>ლიბია</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>მაროკო</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>კვაჯალეინი</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>მახურო</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>მალი</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>ჰოვდი</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>ულანბატარი</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>ჩოიბალსანი</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>მარტინიკი</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>მავრიტანია</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>მონსერატი</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>მალავი</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>ტიხუანა</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>ჰერმოსიო</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>მაზატლანი</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>ჩიჰუაჰუა</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>მონტერეი</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>მექსიკო სითი</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>მერიდა</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>კანკუნი</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>კუჩინგი</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>მოზამბიკი</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>ნამიბია</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>ნიგერი</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>ნიგერია</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>ნიკარაგუა</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>ჩათამი</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>პერუ</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>მარკეზასი</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>გამბიერი</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>სენტ პიერი და მიკელონი</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>აზორეს</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>მადეირა</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>პარაგვაი</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>კალინინგრადი</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>მოსკოვი</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>ვოლგოგრადი</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>სამარა</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>ეკატერინბურგი</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ომსკი</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>ნოვოსიბირსკი</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>კრასნოიარსკი</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ირკუტსკი</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>იაკუტსკი</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ვლადივოსტოკი</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>სახალინი</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>მაგადანი</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>კამჩატკა</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>ანადირი</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>რუანდა</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>სუდანი</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>სიერა ლეონე</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>სენეგალი</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>სომალია</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>საო ტომე და პრინსიპე</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>ელ სალვადორი</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>სვაზილენდი</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>ტერკის და კაიკოს</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>ჩადი</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>ტოგო</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>ტუნისი</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>ტანზანია</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>უჟგოროდი</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>კიევი</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>სიმფეროპოლი</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>ზაპოროჟიე</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>უგანდა</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>მიდუეი</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>ჯონსტონი</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>უეიკი</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>ადაკი</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>ნომი</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>ჰონოლულუ</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>ენქორაჯი</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>იაკუტატი</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>ჯუნო</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>ლოს ანჯელესი</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>ბუასი</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ფენიქსი</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>შიპროკი</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>დენვერი</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>ნიუ სალემი, ჩრდილოეთი დაკოტა</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>ცენტრი, ჩრდილოეთი დაკოტა</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>ჩიკაგო</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>მენომინი</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>ვინსენი, ინდიანა</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>პიტერსბურგი</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>თელ სითი, ინდიანა</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>ნოქსი, ინდიანა</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>უინემაკი, ინდიანა</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>მარენგო</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>ინდიანაპოლისი</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>ლუისვილი</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>ვივეი, ინდიანა</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>მონტიჩელო</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>დეტროიტი</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>ნიუ იორკი</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>ურუგვაი</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>სამარყანდი</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>ვენესუელა</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>სამხრეთი აფრიკა</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>ზამბია</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>ზიმბაბვე</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>ანდორული პესეტა</displayName>
			</currency>
			<currency type="AED">
				<displayName>გაერთიანებული არაბული საემიროების დირჰემი</displayName>
			</currency>
			<currency type="AFA">
				<displayName>ავღანი (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>ავღანი</displayName>
			</currency>
			<currency type="ALL">
				<displayName>ალბანური ლეკი</displayName>
			</currency>
			<currency type="AMD">
				<displayName>სომხური დრამი</displayName>
			</currency>
			<currency type="ANG">
				<displayName>ნიდრელანდების ანტილიის გულდენი</displayName>
			</currency>
			<currency type="AOA">
				<displayName>ანგოლური კვანზა</displayName>
			</currency>
			<currency type="AOK">
				<displayName>ანგოლური კვანზა (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>ანგოლური ახალი კვანზა (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>ანგოლური მიტოლებული კვანზა (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>არგენტინული აუსტრალი</displayName>
			</currency>
			<currency type="ARP">
				<displayName>არგენტინული პესო (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>არგენტინული პესო</displayName>
			</currency>
			<currency type="ATS">
				<displayName>ავსტრიული შილინგი</displayName>
			</currency>
			<currency type="AUD">
				<displayName>ავსტრალიური დოლარი</displayName>
			</currency>
			<currency type="AWG">
				<displayName>არუბანული გულდენი</displayName>
			</currency>
			<currency type="AZM">
				<displayName>აზერბაიჯანული მანათი (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>აზერბაიჯანული მანათი</displayName>
			</currency>
			<currency type="BAD">
				<displayName>ბოსნია-ჰერცოგოვინას დინარი</displayName>
			</currency>
			<currency type="BAM">
				<displayName>ბოსნია-ჰერცოგოვინას კონვერტირებადი მარკა</displayName>
			</currency>
			<currency type="BBD">
				<displayName>ბარბადოსული დოლარი</displayName>
			</currency>
			<currency type="BDT">
				<displayName>ბანგლადეშური ტაკა</displayName>
			</currency>
			<currency type="BEC">
				<displayName>ბელგიური ფრანკი (კოვერტირებადი)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>ბელგიური ფრანკი</displayName>
			</currency>
			<currency type="BEL">
				<displayName>ბელგიური ფრანკი (ფინანსური)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>ბულგარული მყარი ლევი</displayName>
			</currency>
			<currency type="BGN">
				<displayName>ბულგარული ახალი ლევი</displayName>
			</currency>
			<currency type="BHD">
				<displayName>ბაჰრეინული დინარი</displayName>
			</currency>
			<currency type="BIF">
				<displayName>ბურუნდიული ფრანკი</displayName>
			</currency>
			<currency type="BMD">
				<displayName>ბერმუდული დინარი</displayName>
			</currency>
			<currency type="BND">
				<displayName>ბრუნეული დოლარი</displayName>
			</currency>
			<currency type="BOB">
				<displayName>ბოლივიანო</displayName>
			</currency>
			<currency type="BOP">
				<displayName>ბოლივიური პესო</displayName>
			</currency>
			<currency type="BRB">
				<displayName>ბრაზილიური კრუზეირო ნოვო (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>ბრაზილიური კრუზადო</displayName>
			</currency>
			<currency type="BRE">
				<displayName>ბრაზილიური კრუზეირო (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ბრაზილიური რეალი</displayName>
			</currency>
			<currency type="BRN">
				<displayName>ბრაზილიური კრუზადო ნოვო</displayName>
			</currency>
			<currency type="BRR">
				<displayName>ბრაზილიური კრუზეირო</displayName>
			</currency>
			<currency type="BSD">
				<displayName>ბაჰამური დოლარი</displayName>
			</currency>
			<currency type="BWP">
				<displayName>ბოტსვანიური პულა</displayName>
			</currency>
			<currency type="BYB">
				<displayName>ახალი ბელარუსიული რუბლი (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>ბელარუსიული რუბლი</displayName>
			</currency>
			<currency type="CAD">
				<displayName>კანადური დოლარი</displayName>
			</currency>
			<currency type="CHF">
				<displayName>შვეიცარიული ფრანკი</displayName>
			</currency>
			<currency type="CNY">
				<displayName>ჩინური უანი</displayName>
			</currency>
			<currency type="CRC">
				<displayName>კოსტა რიკული კოლონი</displayName>
			</currency>
			<currency type="CSD">
				<displayName>ძველი სერბიული დინარი</displayName>
			</currency>
			<currency type="CSK">
				<displayName>ჩეხოსლოვაკიის მყარი კრონა</displayName>
			</currency>
			<currency type="CUP">
				<displayName>კუბური პესო</displayName>
			</currency>
			<currency type="CVE">
				<displayName>კაბო ვერდეს ესკუდო</displayName>
			</currency>
			<currency type="CYP">
				<displayName>კვიპროსის გირვანქა</displayName>
			</currency>
			<currency type="CZK">
				<displayName>ჩეხური კრონა</displayName>
			</currency>
			<currency type="DDM">
				<displayName>აღმოსავლეთ გერმანული მარკა</displayName>
			</currency>
			<currency type="DEM">
				<displayName>გერმანული მარკა</displayName>
			</currency>
			<currency type="DJF">
				<displayName>ჯიბუტის ფრანკი</displayName>
			</currency>
			<currency type="DKK">
				<displayName>დანიური კრონა</displayName>
			</currency>
			<currency type="DOP">
				<displayName>დომინიკური პესო</displayName>
			</currency>
			<currency type="DZD">
				<displayName>ალჟირიული დინარი</displayName>
			</currency>
			<currency type="EEK">
				<displayName>ესტონური კრუნა</displayName>
			</currency>
			<currency type="EGP">
				<displayName>ეგვიპტური გირვანქა</displayName>
			</currency>
			<currency type="ESP">
				<displayName>ესპანური პესეტა</displayName>
			</currency>
			<currency type="EUR">
				<displayName>ევრო</displayName>
			</currency>
			<currency type="FIM">
				<displayName>ფინური მარკა</displayName>
			</currency>
			<currency type="FJD">
				<displayName>ფიჯი დოლარი</displayName>
			</currency>
			<currency type="FRF">
				<displayName>ფრანგული ფრანკი</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ინგლისური გირვანქა სტერლინგი</displayName>
			</currency>
			<currency type="GEK">
				<displayName>ქართული კუპონი ლარით</displayName>
			</currency>
			<currency type="GEL">
				<displayName>ქართული ლარი</displayName>
				<symbol>GEL</symbol>
			</currency>
			<currency type="GRD">
				<displayName>ბერძნული დრაჰმა</displayName>
			</currency>
			<currency type="GWE">
				<displayName>პორტუგალიური გინეა ესკუდო</displayName>
			</currency>
			<currency type="HKD">
				<displayName>ჰონგ კონგის დოლარი</displayName>
			</currency>
			<currency type="HNL">
				<displayName>ჰონდურასის ლემპირა</displayName>
			</currency>
			<currency type="HRD">
				<displayName>ხორვატიული დინარი</displayName>
			</currency>
			<currency type="HRK">
				<displayName>ხორვატიული კუნა</displayName>
			</currency>
			<currency type="HUF">
				<displayName>უნგრული ფორინტი</displayName>
			</currency>
			<currency type="IDR">
				<displayName>ინდონეზიური რუპია</displayName>
			</currency>
			<currency type="IEP">
				<displayName>ირლანდიური გირვანქა</displayName>
			</currency>
			<currency type="INR">
				<displayName>ინდური რუპია</displayName>
			</currency>
			<currency type="ISK">
				<displayName>ისლანდიური კრონა</displayName>
			</currency>
			<currency type="ITL">
				<displayName>იტალიური ლირა</displayName>
			</currency>
			<currency type="JMD">
				<displayName>იამაიკური დოლარი</displayName>
			</currency>
			<currency type="JOD">
				<displayName>იორდანიული დოლარი</displayName>
			</currency>
			<currency type="JPY">
				<displayName>იაპონური იენი</displayName>
			</currency>
			<currency type="KES">
				<displayName>კენიური შილინგი</displayName>
			</currency>
			<currency type="KGS">
				<displayName>ყირღიზული სომი</displayName>
			</currency>
			<currency type="KPW">
				<displayName>ჩრდილოეთ კორეული ვონი</displayName>
			</currency>
			<currency type="KRW">
				<displayName>სამხრეთ კორეული ვონი</displayName>
			</currency>
			<currency type="KWD">
				<displayName>კუვეიტური დინარი</displayName>
			</currency>
			<currency type="KYD">
				<displayName>კაიმანის კუნძულების დოლარი</displayName>
			</currency>
			<currency type="KZT">
				<displayName>ყაზახური ტენგე</displayName>
			</currency>
			<currency type="LKR">
				<displayName>შრი ლანკის რუპია</displayName>
			</currency>
			<currency type="LRD">
				<displayName>ლიბერიული დოლარი</displayName>
			</currency>
			<currency type="LSM">
				<displayName>მალოტი</displayName>
			</currency>
			<currency type="LTL">
				<displayName>ლიტვური ლიტა</displayName>
			</currency>
			<currency type="LTT">
				<displayName>ლიტვური ტალონი</displayName>
			</currency>
			<currency type="LUC">
				<displayName>ლუქსემბურგის კონვერტირებადი ფრანკი</displayName>
			</currency>
			<currency type="LUF">
				<displayName>ლუქსემბურგის ფრანკი</displayName>
			</currency>
			<currency type="LUL">
				<displayName>ლუქსემბურგის ფინანსური ფრანკი</displayName>
			</currency>
			<currency type="LVL">
				<displayName>ლატვიური ლატი</displayName>
			</currency>
			<currency type="LVR">
				<displayName>ლატვიური რუბლი</displayName>
			</currency>
			<currency type="LYD">
				<displayName>ლიბიური დინარი</displayName>
			</currency>
			<currency type="MAD">
				<displayName>მაროკოს დირჰამი</displayName>
			</currency>
			<currency type="MAF">
				<displayName>მაროკოს ფრანკი</displayName>
			</currency>
			<currency type="MDL">
				<displayName>მოლდოვური ლეუ</displayName>
			</currency>
			<currency type="MGA">
				<displayName>მადაგასკარის არიარი</displayName>
			</currency>
			<currency type="MGF">
				<displayName>მადაგასკარის ფრანკი</displayName>
			</currency>
			<currency type="MKD">
				<displayName>მაკედონიური დენარი</displayName>
			</currency>
			<currency type="MLF">
				<displayName>მალის ფრანკი</displayName>
			</currency>
			<currency type="MMK">
				<displayName>მიანმარის კიატი</displayName>
			</currency>
			<currency type="MNT">
				<displayName>მონღოლური ტუგრიკი</displayName>
			</currency>
			<currency type="MTL">
				<displayName>მალტის ლირა</displayName>
			</currency>
			<currency type="MTP">
				<displayName>მალტის გირვანქა</displayName>
			</currency>
			<currency type="MUR">
				<displayName>მავრიტანული რუპია</displayName>
			</currency>
			<currency type="MVR">
				<displayName>მალდივური რუფია</displayName>
			</currency>
			<currency type="MWK">
				<displayName>მალავის კვანჩა</displayName>
			</currency>
			<currency type="MXN">
				<displayName>მექსიკური პესო</displayName>
			</currency>
			<currency type="MXP">
				<displayName>მექსიკური ვერცხლის პესო (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>მალაიზიური რინგიტი</displayName>
			</currency>
			<currency type="MZE">
				<displayName>მოზამბიკური ესკუდო</displayName>
			</currency>
			<currency type="MZM">
				<displayName>ძველი მოზამბიკური მეტიკალი</displayName>
			</currency>
			<currency type="MZN">
				<displayName>მოზამბიკური მეტიკალი</displayName>
			</currency>
			<currency type="NAD">
				<displayName>ნამიბიური დოლარი</displayName>
			</currency>
			<currency type="NGN">
				<displayName>ნიგერიული ნაირა</displayName>
			</currency>
			<currency type="NIC">
				<displayName>ნიკარაგუას კორდობა</displayName>
			</currency>
			<currency type="NIO">
				<displayName>ნიკარაგუას ოქროს კორდობა</displayName>
			</currency>
			<currency type="NLG">
				<displayName>ჰოლანდიური გულდენი</displayName>
			</currency>
			<currency type="NOK">
				<displayName>ნორვეგიული კრონა</displayName>
			</currency>
			<currency type="NPR">
				<displayName>ნეპალური რუპია</displayName>
			</currency>
			<currency type="NZD">
				<displayName>ახალი ზელანდიის დოლარი</displayName>
			</currency>
			<currency type="OMR">
				<displayName>ომანის რეალი</displayName>
			</currency>
			<currency type="PEI">
				<displayName>პერუს ინტი</displayName>
			</currency>
			<currency type="PEN">
				<displayName>პერუს ახალი სოლი</displayName>
			</currency>
			<currency type="PES">
				<displayName>პერუს სოლი</displayName>
			</currency>
			<currency type="PHP">
				<displayName>ფილიპინური პესო</displayName>
			</currency>
			<currency type="PKR">
				<displayName>პაკისტანური რუპია</displayName>
			</currency>
			<currency type="PLN">
				<displayName>პოლონური ზლოტი</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>პოლონური ზლოტი (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>პორტუგალიური ესკუდო</displayName>
			</currency>
			<currency type="QAR">
				<displayName>კატარის რიალი</displayName>
			</currency>
			<currency type="RHD">
				<displayName>როდეზიული დოლარი</displayName>
			</currency>
			<currency type="ROL">
				<displayName>ძველი რუმინული ლეუ</displayName>
			</currency>
			<currency type="RON">
				<displayName>რუმინული ლეუ</displayName>
			</currency>
			<currency type="RUB">
				<displayName>რუსული რუბლი</displayName>
			</currency>
			<currency type="RUR">
				<displayName>რუსული რუბლი (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>რუანდული ფრანკი</displayName>
			</currency>
			<currency type="SCR">
				<displayName>სეიშელის რუპია</displayName>
			</currency>
			<currency type="SDD">
				<displayName>სუდანის დინარი</displayName>
			</currency>
			<currency type="SDP">
				<displayName>სუდანის გირვანქა</displayName>
			</currency>
			<currency type="SEK">
				<displayName>შვედური კრონა</displayName>
			</currency>
			<currency type="SGD">
				<displayName>სინგაპურის დოლარი</displayName>
			</currency>
			<currency type="SLL">
				<displayName>სიერა ლეონეს ლეონე</displayName>
			</currency>
			<currency type="SRD">
				<displayName>სურინამის დოლარი</displayName>
			</currency>
			<currency type="SRG">
				<displayName>სურინამის გულდენი</displayName>
			</currency>
			<currency type="SUR">
				<displayName>საბჭოთა რუბლი</displayName>
			</currency>
			<currency type="SYP">
				<displayName>სირიული გირვანქა</displayName>
			</currency>
			<currency type="TJR">
				<displayName>ტაჯიკური რუბლი</displayName>
			</currency>
			<currency type="TJS">
				<displayName>ტაჯიკური სომონი</displayName>
			</currency>
			<currency type="TMM">
				<displayName>თურქმენული მანათი</displayName>
			</currency>
			<currency type="TND">
				<displayName>ტუნისიური დინარი</displayName>
			</currency>
			<currency type="TRL">
				<displayName>თურქული ლირა</displayName>
			</currency>
			<currency type="TRY">
				<displayName>ახალი თურქული ლირა</displayName>
			</currency>
			<currency type="TTD">
				<displayName>ტრინიდად და ტობაგოს დოლარი</displayName>
			</currency>
			<currency type="TWD">
				<displayName>ტაივანური ახალი დოლარი</displayName>
			</currency>
			<currency type="TZS">
				<displayName>ტანზანიური შილინგი</displayName>
			</currency>
			<currency type="UAH">
				<displayName>უკრაინული გრივნა</displayName>
			</currency>
			<currency type="UAK">
				<displayName>უკრაინული კარბოვანეცი</displayName>
			</currency>
			<currency type="UGS">
				<displayName>უგანდური შილინგი (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>უგანდური შილინგი</displayName>
			</currency>
			<currency type="USD">
				<displayName>აშშ დოლარი</displayName>
			</currency>
			<currency type="USN">
				<displayName>აშშ დოლარი (შემდეგი დღე)</displayName>
			</currency>
			<currency type="USS">
				<displayName>აშშ დოლარი (იგივე დღე)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>ურუგვაის პესო (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>ურუგვაის პესო ურუგვაიო</displayName>
			</currency>
			<currency type="UZS">
				<displayName>უზბეკური სუმი</displayName>
			</currency>
			<currency type="VEB">
				<displayName>ვენესუელის ბოლივარი</displayName>
			</currency>
			<currency type="VND">
				<displayName>ვიეტნამური დონგი</displayName>
			</currency>
			<currency type="VUV">
				<displayName>ვანატუს ვატუ</displayName>
			</currency>
			<currency type="WST">
				<displayName>დასავლეთ სამოას ტალა</displayName>
			</currency>
			<currency type="XAG">
				<displayName>ვერცხლი</displayName>
			</currency>
			<currency type="XBA">
				<displayName>ევროპული კომპპოზიტური ერთეული</displayName>
			</currency>
			<currency type="XBB">
				<displayName>ევროპული ფულადი ერთეული</displayName>
			</currency>
			<currency type="XCD">
				<displayName>აღმოსავლეთ კარიბიული დოლარი</displayName>
			</currency>
			<currency type="XEU">
				<displayName>ევროპული სავალუტო ერთეული</displayName>
			</currency>
			<currency type="XFO">
				<displayName>ფრანგული ოქროს ფრანკი</displayName>
			</currency>
			<currency type="XXX">
				<displayName>უცნობი ან არასწორი ვალუტა</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>იემენის დინარი</displayName>
			</currency>
			<currency type="YER">
				<displayName>იემენის რეალი</displayName>
			</currency>
			<currency type="YUD">
				<displayName>იუგოსლავიური მყარი დინარი</displayName>
			</currency>
			<currency type="YUM">
				<displayName>იუგოსლავიური ახალი დინარი</displayName>
			</currency>
			<currency type="YUN">
				<displayName>იუგოსლავიური კონვერტირებადი დინარი</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>ზამბიური კვანჩა</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>ზაირის ახალი ზაირი</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>ზაირის ზაირი</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>ზიმბაბვეს დოლარი</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} დღე</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} საათი</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} წუთი</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} თვე</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} წამი</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} კვირა</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} წელი</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>დიახ</yesstr>
			<nostr>არა</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�,2����Locale/Data/ml.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="ml"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">അഫാര്‍</language>
			<language type="ab">അബ്ഖാസിയന്‍</language>
			<language type="ace">അചിനീസ്</language>
			<language type="ach">അകോലി</language>
			<language type="ada">അഡാങ്ഗമി</language>
			<language type="ady">അഡൈഗേ</language>
			<language type="ae">അവസ്റ്റാന്‍</language>
			<language type="af">ആഫ്രിക്കാന്‍സ്</language>
			<language type="afa">ആഫ്രോ-ഏഷ്യാറ്റിക് ഭാഷ</language>
			<language type="afh">ആഫ്രിഹിലി</language>
			<language type="ain">അയിനു</language>
			<language type="ak">അഘാന്‍</language>
			<language type="akk">അക്കാഡിയന്‍</language>
			<language type="ale">അലൈട്ട്</language>
			<language type="alg">അല്‍ഗോണ്‍ക്യന്‍ ഭാഷ</language>
			<language type="alt">സതേണ്‍ അള്‍ട്ടായി</language>
			<language type="am">അംഹാറിക്</language>
			<language type="an">അരഗോണീസ്</language>
			<language type="ang">പഴയ ഇംഗ്ലീഷ്</language>
			<language type="anp">ആന്‍ഗിക</language>
			<language type="apa">അപ്പാചേ ഭാഷ</language>
			<language type="ar">അറബി</language>
			<language type="arc">അരമായഭാഷ</language>
			<language type="arn">ആരൌകാനിയന്‍</language>
			<language type="arp">അരപാഹോ</language>
			<language type="art">കൃത്രിമഭാഷ</language>
			<language type="arw">അറാവക്</language>
			<language type="as">ആസ്സാമീസ്</language>
			<language type="ast">ഓസ്‌ട്രിയന്‍</language>
			<language type="ath">അതപാസ്കന്‍ ഭാഷ</language>
			<language type="aus">ഓസ്ട്രേലിയന്‍ ഭാഷ</language>
			<language type="av">അവാരിക്</language>
			<language type="awa">അവധി</language>
			<language type="ay">അയ്മാറ</language>
			<language type="az">അസര്‍ബൈജാനി</language>
			<language type="ba">ബഷ്ഖിര്‍</language>
			<language type="bad">ബന്‍ഡ</language>
			<language type="bai">ബാമിലകേ ഭാഷ</language>
			<language type="bal">ബലൂചി</language>
			<language type="ban">ബാലിനീസ്</language>
			<language type="bas">ബസ</language>
			<language type="bat">ബാള്‍ട്ടിക് ഭാഷ</language>
			<language type="be">ബൈലോറഷ്യന്‍</language>
			<language type="bej">ബജ</language>
			<language type="bem">ബംബ</language>
			<language type="ber">ബര്‍ബര്‍</language>
			<language type="bg">ബള്‍ഗേറിയന്‍</language>
			<language type="bh">ബീഹാറി</language>
			<language type="bho">ഭോജ്‌പൂരി</language>
			<language type="bi">ബിസ്‌ലാമ</language>
			<language type="bik">ബികോല്‍</language>
			<language type="bin">ബിനി</language>
			<language type="bla">സിക്സിക</language>
			<language type="bm">ബംബാറ</language>
			<language type="bn">ബംഗാളി</language>
			<language type="bnt">ബാന്ധു</language>
			<language type="bo">തിബറ്റന്‍</language>
			<language type="br">ബ്രിറ്റോണ്‍</language>
			<language type="bra">ബ്രജ്</language>
			<language type="bs">ബോസ്നിയന്‍</language>
			<language type="btk">ബാറ്റക്</language>
			<language type="bua">ബുറിയത്ത്</language>
			<language type="bug">ബുഗിനീസ്</language>
			<language type="byn">ബ്ലിന്‍</language>
			<language type="ca">കറ്റാലന്‍</language>
			<language type="cad">കാഡോ</language>
			<language type="cai">മദ്ധ്യ അമേരിക്കന്‍ ഇന്‍ഡ്യന്‍ ഭാഷ</language>
			<language type="car">കാരിബ്</language>
			<language type="cau">കാവോകേഷ്യന്‍ ഭാഷ</language>
			<language type="cch">അറ്റ്സാം</language>
			<language type="ce">ചെചന്‍</language>
			<language type="ceb">സെബുവാനോ</language>
			<language type="cel">സെല്‍റ്റിക് ഭാഷ</language>
			<language type="ch">ചമോറോ</language>
			<language type="chb">ചിബ്ച</language>
			<language type="chg">ചഗതൈ</language>
			<language type="chk">ചൂകീസ്</language>
			<language type="chm">മാരി</language>
			<language type="chn">ചിനൂഗ്-ജാര്‍ഗണ്‍</language>
			<language type="cho">ചോക്റ്റാവ്</language>
			<language type="chp">ചിപേവ്യന്‍</language>
			<language type="chr">ചെരോകീ</language>
			<language type="chy">ചിയേന്നേ</language>
			<language type="cmc">ചാമിക് ഭാഷ</language>
			<language type="co">കോര്‍സിക്കന്‍</language>
			<language type="cop">കോപ്റ്റിക്</language>
			<language type="cpe">ഇംഗ്ലീഷ് അധിഷ്ഠിത മിശ്ര ഭാഷ</language>
			<language type="cpf">ഫ്രഞ്ച് അധിഷ്ഠിത മിശ്രഭാഷ</language>
			<language type="cpp">പോര്‍ച്ചുഗീസ് അധിഷ്ടിത മിശ്ര ഭാഷ</language>
			<language type="cr">ക്രീ</language>
			<language type="crh">കൃമിയന്‍ ടര്‍ക്കിഷ്</language>
			<language type="crp">മിശ്രഭാഷ</language>
			<language type="cs">ചെക്ക്</language>
			<language type="csb">കാഷുബിയാന്‍</language>
			<language type="cu">ചര്‍ച്ച് സ്ലാവിക്</language>
			<language type="cus">കുഷിറ്റിക് ഭാഷ</language>
			<language type="cv">ചുവാഷ്</language>
			<language type="cy">വെല്‍ഷ്</language>
			<language type="da">ഡാനിഷ്</language>
			<language type="dak">ഡകോട്ട</language>
			<language type="dar">ഡര്‍ഗ്വാ</language>
			<language type="day">ദയാക്</language>
			<language type="de">ജര്‍മ്മന്‍</language>
			<language type="de_AT">ഓസ്ട്രിയന്‍ ജര്‍മന്‍</language>
			<language type="de_CH">സ്വിസ് ഉച്ച ജര്‍മന്‍</language>
			<language type="del">ദലവാരെ</language>
			<language type="den">സ്ലേവ്</language>
			<language type="dgr">ഡോഗ്രിബ്</language>
			<language type="din">ദിന്‍ക</language>
			<language type="doi">ഡോഗ്രി</language>
			<language type="dra">ദ്രാവിഡഭാഷ</language>
			<language type="dsb">ലോവര്‍ സോര്‍ബിയന്‍</language>
			<language type="dua">ദ്വാല</language>
			<language type="dum">മദ്ധ്യ ഡച്ച്</language>
			<language type="dv">ദിവേഹി</language>
			<language type="dyu">ദ്വൈല</language>
			<language type="dz">ഭൂട്ടാനി</language>
			<language type="ee">എവ്</language>
			<language type="efi">എഫിക്</language>
			<language type="egy">പ്രാചീന ഈജിപ്ത്യന്‍</language>
			<language type="eka">എകാജുക്</language>
			<language type="el">ഗ്രീക്ക്</language>
			<language type="elx">എലാമൈറ്റ്</language>
			<language type="en">ഇംഗ്ലീഷ്</language>
			<language type="en_AU">ഓസ്ട്രേലിയന്‍ ഇംഗ്ലീഷ്</language>
			<language type="en_CA">കനേഡിയന്‍ ഇംഗ്ലീഷ്</language>
			<language type="en_GB">ബ്രിട്ടീഷ് ഇംഗ്ലീഷ്</language>
			<language type="en_US">അമേരിക്കന്‍ ഇംഗ്ലീഷ്</language>
			<language type="enm">മദ്ധ്യ ഇംഗ്ലീഷ്</language>
			<language type="eo">എസ്പരാന്തോ</language>
			<language type="es">സ്പാനിഷ്</language>
			<language type="es_419">ലാറ്റിന്‍ അമേരിക്കന്‍ സ്പാനിഷ്</language>
			<language type="es_ES">ഇബേറിയന്‍ സ്പാനിഷ്</language>
			<language type="et">എസ്റ്റോണിയന്‍</language>
			<language type="eu">ബാസ്ക്</language>
			<language type="ewo">എവോന്‍ഡോ</language>
			<language type="fa">പേര്‍ഷ്യന്‍</language>
			<language type="fan">ഫങ്</language>
			<language type="fat">ഫിലിപ്പീനോ</language>
			<language type="ff">ഫുല</language>
			<language type="fi">ഫിന്നിഷ്</language>
			<language type="fil">ഫിലിപ്പിനോ</language>
			<language type="fiu">ഫിന്നോ-ഉഗ്രിയന്‍ ഭാഷ</language>
			<language type="fj">ഫിജിയന്‍</language>
			<language type="fo">ഫാറോസ്</language>
			<language type="fon">ഫോന്‍</language>
			<language type="fr">ഫ്രഞ്ച്</language>
			<language type="fr_CA">കനേഡിയന്‍ ഫ്രഞ്ച്</language>
			<language type="fr_CH">സ്വിസ് ഫ്രഞ്ച്</language>
			<language type="frm">മദ്ധ്യ ഫ്രഞ്ച്</language>
			<language type="fro">പഴയ ഫ്രഞ്ച്</language>
			<language type="frr">നോര്‍ത്തേന്‍ ഫ്രിഷ്യന്‍</language>
			<language type="frs">ഈസ്റ്റേണ്‍ ഫ്രിഷ്യന്‍</language>
			<language type="fur">ഫ്രിയുലിയാന്‍</language>
			<language type="fy">പശ്ചിമ ഫ്രിഷിയന്‍</language>
			<language type="ga">ഐറിഷ്</language>
			<language type="gaa">ഗാ</language>
			<language type="gay">ഗയൊ</language>
			<language type="gba">ഗബ്യ</language>
			<language type="gd">സ്കോട്ടിഷ് ഗൈലിക്</language>
			<language type="gem">ജര്‍മാനിക് ഭാഷ</language>
			<language type="gez">ഗീസ്</language>
			<language type="gil">ഗില്‍ബര്‍സേ</language>
			<language type="gl">ഗലീഷ്യന്‍</language>
			<language type="gmh">മദ്ധ്യ ഉച്ച ജര്‍മന്‍</language>
			<language type="gn">ഗ്വാറാനി</language>
			<language type="goh">പ്രാചീന ഉച്ച ജര്‍മന്‍</language>
			<language type="gon">ഗോണ്ഡി</language>
			<language type="gor">ഗൊറോന്‍റാലോ</language>
			<language type="got">ഗോഥിക്ക്</language>
			<language type="grb">ഗ്രബൊ</language>
			<language type="grc">പുരാതനയവനഭാഷ</language>
			<language type="gsw">സ്വിസ് ജര്‍മന്‍</language>
			<language type="gu">ഗുജറാത്തി</language>
			<language type="gv">മാന്‍സ്</language>
			<language type="gwi">ഗ്വിച്ച് ഇന്‍</language>
			<language type="ha">ഹൌസ</language>
			<language type="hai">ഹൈഡ</language>
			<language type="haw">ഹവായിയന്‍</language>
			<language type="he">ഹീബ്രു</language>
			<language type="hi">ഹിന്ദി</language>
			<language type="hil">ഹിലിഗയ്നോണ്‍</language>
			<language type="him">ഹിമാചലി</language>
			<language type="hit">ഹിറ്റൈറ്റേ</language>
			<language type="hmn">മോങ്</language>
			<language type="ho">ഹിരി മോതു</language>
			<language type="hr">ക്രൊയേഷ്യന്‍</language>
			<language type="hsb">അപ്പര്‍ സോര്‍ബിയന്‍</language>
			<language type="ht">ഹെയ്തിയാന്‍</language>
			<language type="hu">ഹംഗേറിയന്‍</language>
			<language type="hup">ഹൂപ</language>
			<language type="hy">അര്‍മേനിയന്‍</language>
			<language type="hz">ഹെറീറോ</language>
			<language type="ia">ഇന്‍റര്‍ലിംഗ്വാ</language>
			<language type="iba">ഇബാന്‍</language>
			<language type="id">ഇന്‍ഡോനേഷ്യന്‍</language>
			<language type="ie">ഇന്‍റര്‍ലിംഗ്വി</language>
			<language type="ig">ഇഗ്ബോ</language>
			<language type="ii">ഷുവാന്‍യി</language>
			<language type="ijo">ഇജോ</language>
			<language type="ik">ഇനുപിയാക്</language>
			<language type="ilo">ഇലോകോ</language>
			<language type="inc">ഭാരതീയഭാഷ</language>
			<language type="ine">ഇന്‍ഡോ-യൂറോപ്യന്‍ ഭാഷ</language>
			<language type="inh">ഇംഗ്വിഷ്</language>
			<language type="io">ഇഡോ</language>
			<language type="ira">ഇറാനിയന്‍ ഭാഷ</language>
			<language type="iro">ഇറോക്വായിയന്‍ ഭാഷ</language>
			<language type="is">ഐസ്‌ലാന്‍ഡിക്</language>
			<language type="it">ഇറ്റാലിയന്‍</language>
			<language type="iu">ഇനുക്റ്റിറ്റട്ട്</language>
			<language type="ja">ജപ്പാനീസ്</language>
			<language type="jbo">ലോജ്ബാന്‍</language>
			<language type="jpr">ജൂഡിയോ-പേര്‍ഷ്യന്‍</language>
			<language type="jrb">ജൂഡിയോ-അറബിക്</language>
			<language type="jv">ജാവാനീസ്</language>
			<language type="ka">ജോര്‍ജിയന്‍</language>
			<language type="kaa">കര-കാല്‍പ്പക്</language>
			<language type="kab">കബൈല്‍</language>
			<language type="kac">കാചിന്‍</language>
			<language type="kaj">ജ്ജു</language>
			<language type="kam">കംബ</language>
			<language type="kar">കരേന്‍</language>
			<language type="kaw">കാവി</language>
			<language type="kbd">കബര്‍ഡിയാന്‍</language>
			<language type="kcg">ട്യാപ്</language>
			<language type="kfo">കോറോ</language>
			<language type="kg">കോങ്ഗോ</language>
			<language type="kha">ഘാസി</language>
			<language type="khi">ഘോയിസന്‍ ഭാഷ</language>
			<language type="kho">ഘോറ്റാനേസേ</language>
			<language type="ki">കികൂയു</language>
			<language type="kj">ക്വാന്യമ</language>
			<language type="kk">കസാഖ്</language>
			<language type="kl">കലാല്ലിസട്ട്</language>
			<language type="km">കംബോഡിയന്‍</language>
			<language type="kmb">ക്ലിംഗന്‍</language>
			<language type="kn">കന്നഡ</language>
			<language type="ko">കൊറിയന്‍</language>
			<language type="kok">കൊങ്കണി</language>
			<language type="kos">കൊസറേയന്‍</language>
			<language type="kpe">കപെല്ലേ</language>
			<language type="kr">കനൂറി</language>
			<language type="krc">കരചൈ-ബാല്‍കര്‍</language>
			<language type="krl">കരീലിയന്‍</language>
			<language type="kro">ക്രു</language>
			<language type="kru">കുരുഖ്</language>
			<language type="ks">കാശ്മീരി</language>
			<language type="ku">കുര്‍ദ്ദിഷ്</language>
			<language type="kum">കുമൈക്</language>
			<language type="kut">കുതേനൈ</language>
			<language type="kv">കോമി</language>
			<language type="kw">കോര്‍ണിഷ്</language>
			<language type="ky">കിര്‍ഗിസ്</language>
			<language type="la">ലാറ്റിന്‍</language>
			<language type="lad">ലാഡിനോ</language>
			<language type="lah">ലഹ്‌ന്‍ഡ</language>
			<language type="lam">ലംബ</language>
			<language type="lb">ലക്സംബര്‍ഗിഷ്</language>
			<language type="lez">ലഹ്ഗിയാന്‍</language>
			<language type="lg">ഗന്ധ</language>
			<language type="li">ലിംബര്‍ഗിഷ്</language>
			<language type="ln">ലിംഗാല</language>
			<language type="lo">ലാവോ</language>
			<language type="lol">മോങ്കോ</language>
			<language type="loz">ലോസി</language>
			<language type="lt">ലിത്വേനിയന്‍</language>
			<language type="lu">ലുബ-കറ്റംഗ</language>
			<language type="lua">ലൂബ-ലുലുവ</language>
			<language type="lui">ലൂയിസെനോ</language>
			<language type="lun">ലുന്‍ഡ</language>
			<language type="luo">ലവോ</language>
			<language type="lus">ലുഷായി</language>
			<language type="lv">ലാത്വിയന്‍</language>
			<language type="mad">മദുരേസേ</language>
			<language type="mag">മഗാഹി</language>
			<language type="mai">മൈഥിലി</language>
			<language type="mak">മകാസര്‍</language>
			<language type="man">മണ്ഡിന്‍ഗോ</language>
			<language type="map">ഓസ്ട്രോനേഷ്യന്‍</language>
			<language type="mas">മസൈ</language>
			<language type="mdf">മോക്ഷ</language>
			<language type="mdr">മണ്ഡാര്‍</language>
			<language type="men">മെന്‍ഡെ</language>
			<language type="mg">മലഗാസി</language>
			<language type="mga">മദ്ധ്യ ഐറിഷ്</language>
			<language type="mh">മാര്‍ഷല്ലീസ്</language>
			<language type="mi">മൌറി</language>
			<language type="mic">മിക്മാക്</language>
			<language type="min">മിനാങ്കബൌ</language>
			<language type="mis">ഇതരഭാഷ</language>
			<language type="mk">മാസിഡോണിയന്‍</language>
			<language type="mkh">മോണ്‍-ഖമര്‍ ഭാഷ</language>
			<language type="ml">മലയാളം</language>
			<language type="mn">മംഗോളിയന്‍</language>
			<language type="mnc">മന്‍ചു</language>
			<language type="mni">മണിപ്പൂരി</language>
			<language type="mno">മനോബോ ഭാഷ</language>
			<language type="mo">മൊള്‍ഡോവന്‍</language>
			<language type="moh">മോഹാക്</language>
			<language type="mos">മൊസ്സി</language>
			<language type="mr">മറാഠി</language>
			<language type="ms">മലയ</language>
			<language type="mt">മാള്‍ട്ടീസ്</language>
			<language type="mul">പലഭാഷകള്‍</language>
			<language type="mun">മുണ്ഡ ഭാഷ</language>
			<language type="mus">ക്രീക്ക്</language>
			<language type="mwl">മിരാന്‍റസേ</language>
			<language type="mwr">മര്‍വാരി</language>
			<language type="my">ബര്‍മീസ്</language>
			<language type="myn">മായന്‍ ഭാഷ</language>
			<language type="myv">ഏഴ്സ്യ</language>
			<language type="na">നൌറു</language>
			<language type="nah">നാഹ്വാള്‍‍ട്ട്</language>
			<language type="nai">വടക്കേ അമേരിക്കന്‍ ഇന്‍ഡ്യന്‍ ഭാഷ</language>
			<language type="nap">നെപ്പോളിറ്റാന്‍</language>
			<language type="nb">നോര്‍വീജിയന്‍ ബുക്‌മല്‍</language>
			<language type="nd">നോര്‍ത്ത് ഡെബിള്‍</language>
			<language type="nds">ലോജര്‍മന്‍</language>
			<language type="ne">നേപ്പാളി</language>
			<language type="new">നേവാരി</language>
			<language type="ng">ഡോങ്ക</language>
			<language type="nia">നിയാസ്</language>
			<language type="nic">നൈ‍ജര്‍-കോര്‍‍ഡോഫാനിയന്‍</language>
			<language type="niu">ന്യുവാന്‍</language>
			<language type="nl">ഡച്ച്</language>
			<language type="nl_BE">ഫ്ലമിഷ്</language>
			<language type="nn">നോര്‍വീജിയന്‍ നൈനോര്‍ക്സ്</language>
			<language type="no">നോര്‍വീജിയന്‍</language>
			<language type="nog">നോഗൈ</language>
			<language type="non">പഴയ പേര്‍ഷ്യന്‍</language>
			<language type="nqo">ഇന്‍കോ</language>
			<language type="nr">ദക്ഷിണ നെഡിബിള്‍</language>
			<language type="nso">നോര്‍ത്തേന്‍ സോതോ</language>
			<language type="nub">നുബിയന്‍ ഭാഷ</language>
			<language type="nv">നവജോ</language>
			<language type="nwc">ക്ലാസിക്കല്‍ നേവാരി</language>
			<language type="ny">ന്യന്‍ജ</language>
			<language type="nym">ന്യാംവേസി</language>
			<language type="nyn">ന്യാന്‍കലേ</language>
			<language type="nyo">ന്യോറോ</language>
			<language type="nzi">സിമ</language>
			<language type="oc">ഒസിറ്റാന്‍</language>
			<language type="oj">ഓജിബ്വാ</language>
			<language type="om">ഒറോമൂ</language>
			<language type="or">ഒറിയ</language>
			<language type="os">ഒസ്സെറ്റിക്</language>
			<language type="osa">ഒസേജ്</language>
			<language type="ota">ഓട്ടോമന്‍ തുര്‍ക്കിഷ്</language>
			<language type="oto">ഓട്ടോമിയന്‍ ഭാഷ</language>
			<language type="pa">പഞ്ചാബി</language>
			<language type="paa">പാപുവാന്‍ ഭാഷ</language>
			<language type="pag">പങ്കാസിനന്‍</language>
			<language type="pal">പാഹ്ലവി</language>
			<language type="pam">പാംപന്‍ഗ</language>
			<language type="pap">പാപിയാമെന്‍റൊ</language>
			<language type="pau">പലാവുന്‍</language>
			<language type="peo">പ്രാചീന പേര്‍ഷ്യന്‍</language>
			<language type="phi">ഫിലിപീനി ഭാഷ</language>
			<language type="phn">ഫീനിഷ്യന്‍</language>
			<language type="pi">പാലി</language>
			<language type="pl">പോളിഷ്</language>
			<language type="pon">പൊന്‍പിയന്‍</language>
			<language type="pra">പ്രാകൃതം</language>
			<language type="pro">പ്രൊവന്‍ഷ്ല്‍</language>
			<language type="ps">പഷ്തു</language>
			<language type="pt">പോര്‍ച്ചുഗീസ്</language>
			<language type="pt_BR">ബ്രസീലിയന്‍ പോര്‍ച്ചുഗീസ്</language>
			<language type="pt_PT">ഇബേറിയന്‍ പോര്‍ച്ചുഗീസ്</language>
			<language type="qu">ക്വെച്ചുവ</language>
			<language type="raj">രാജസ്ഥാനി</language>
			<language type="rap">രാപനൂയി</language>
			<language type="rar">രാരോടോങ്കന്‍</language>
			<language type="rm">രഹയ്ട്ടോ-റോമന്‍സ്</language>
			<language type="rn">റുണ്ടി</language>
			<language type="ro">റൊമാനിയന്‍</language>
			<language type="roa">റോമന്‍സ് ഭാഷ</language>
			<language type="rom">റോമനി</language>
			<language type="root">മൂലഭാഷ</language>
			<language type="ru">റഷ്യന്‍</language>
			<language type="rup">ആരോമാനിയന്‍</language>
			<language type="rw">കിന്യര്‍വണ്ട</language>
			<language type="sa">സംസ്കൃതം</language>
			<language type="sad">സാന്‍ഡവേ</language>
			<language type="sah">യാകൂട്</language>
			<language type="sai">ദക്ഷിണ അമേരിക്കന്‍ ഇന്‍ഡ്യന്‍ ഭാഷ</language>
			<language type="sal">സാലിഷാന്‍ ഭാഷ</language>
			<language type="sam">സമരിയാക്കാരുടെ അരമായ</language>
			<language type="sas">സസാക്</language>
			<language type="sat">സന്താലി</language>
			<language type="sc">സര്‍ഡിനിയാന്‍</language>
			<language type="scn">സിസിലിയന്‍</language>
			<language type="sco">സ്കോട്സ്</language>
			<language type="sd">സിന്ധി</language>
			<language type="se">നോര്‍ത്തേന്‍ സമി</language>
			<language type="sel">സെല്‍കപ്</language>
			<language type="sem">സെമറ്റിക് ഭാഷ</language>
			<language type="sg">സാങ്കോ</language>
			<language type="sga">പ്രാചീന ഐറിഷ്</language>
			<language type="sgn">ആംഗ്യഭാഷ</language>
			<language type="shn">ഷാന്‍</language>
			<language type="si">സിംഹള</language>
			<language type="sid">സിഡാമോ</language>
			<language type="sio">സിവോന്‍ ഭാഷ</language>
			<language type="sit">ചീന-ടിബത്തന്‍ ഭാഷ</language>
			<language type="sk">സ്ലോവാക്ക്</language>
			<language type="sl">സ്ലോവേനിയന്‍</language>
			<language type="sla">സ്ലേവിക് ഭാഷ</language>
			<language type="sm">സമോവന്‍</language>
			<language type="sma">സതേണ്‍ സമി</language>
			<language type="smi">സമി ഭാഷ</language>
			<language type="smj">ലൂലീ സമി</language>
			<language type="smn">ഇനാരി സാമി</language>
			<language type="sms">സ്കോള്‍ട്ട് സമി</language>
			<language type="sn">ഷോണാ</language>
			<language type="snk">സോണിന്‍കെ</language>
			<language type="so">സോമാലി</language>
			<language type="sog">സോജിഡിയന്‍</language>
			<language type="son">സോങ്ഗൈ</language>
			<language type="sq">അല്‍ബേനിയന്‍</language>
			<language type="sr">സെര്‍ബിയന്‍</language>
			<language type="srn">ശ്രാനന്‍ ഡോങ്കോ</language>
			<language type="srr">സെറര്‍</language>
			<language type="ss">സ്വാറ്റി</language>
			<language type="ssa">നിളോ-സഹാറന്‍ ഭാഷ</language>
			<language type="st">തെക്കന്‍ സോതോ</language>
			<language type="su">സുഡാനീസ്</language>
			<language type="suk">സുകുമ</language>
			<language type="sus">സുസു</language>
			<language type="sux">സുമേരിയന്‍</language>
			<language type="sv">സ്വീഡിഷ്</language>
			<language type="sw">സ്വാഹിലി</language>
			<language type="syc">പുരാതന സുറിയാനിഭാഷ</language>
			<language type="syr">സുറിയാനി</language>
			<language type="ta">തമിഴ്</language>
			<language type="tai">തായ് ഭാഷ</language>
			<language type="te">തെലുങ്ക്</language>
			<language type="tem">ടിംനേ</language>
			<language type="ter">ടെറേനോ</language>
			<language type="tet">ടെറ്റും</language>
			<language type="tg">താജിക്</language>
			<language type="th">തായ്</language>
			<language type="ti">തിഗ്രിന്യ</language>
			<language type="tig">ടൈഗ്രി</language>
			<language type="tiv">ടിവ്</language>
			<language type="tk">തുര്‍ക്കമന്‍</language>
			<language type="tkl">ടൊക്കേലൌ</language>
			<language type="tl">തഗാലോഗ്</language>
			<language type="tlh">ക്ലിങ്ഗോണ്‍</language>
			<language type="tli">ലിംഗ്വിറ്റ്</language>
			<language type="tmh">ടമഷേക്</language>
			<language type="tn">ത്സ്വാന</language>
			<language type="to">ടോംഗന്‍</language>
			<language type="tog">ന്യാസാ ഡോങ്ക</language>
			<language type="tpi">ടോക് പിസിന്‍</language>
			<language type="tr">തുര്‍ക്കി</language>
			<language type="ts">ത്സോംഗ</language>
			<language type="tsi">സിംഷ്യന്‍</language>
			<language type="tt">ടാട്ടാര്‍</language>
			<language type="tum">തുംബുക</language>
			<language type="tup">തുപി ഭാഷ</language>
			<language type="tut">അറ്റ്ലാന്‍റിക്ക് ഭാഷ</language>
			<language type="tvl">തുവാലു</language>
			<language type="tw">ത്വി</language>
			<language type="ty">ടാഹിത്യന്‍</language>
			<language type="tyv">തുവിനിയന്‍</language>
			<language type="udm">ഉഡ്മുര്‍ട്ട്</language>
			<language type="ug">ഉയ്ഘുര്‍</language>
			<language type="uga">ഉഗറിട്ടിക്</language>
			<language type="uk">ഉക്രേനിയന്‍</language>
			<language type="umb">ഉംബുന്ദു</language>
			<language type="und">അറിയാത്തതോ നിലവിലില്ലാത്തതോ ആയ ഭാഷ</language>
			<language type="ur">ഉറുദു</language>
			<language type="uz">ഉസ്ബെക്</language>
			<language type="vai">വൈ</language>
			<language type="ve">വെന്ദ</language>
			<language type="vi">വിയറ്റ്നാമീസ്</language>
			<language type="vo">വോളാപുക്</language>
			<language type="vot">വോട്ടിക്</language>
			<language type="wa">വല്ലൂണ്‍</language>
			<language type="wak">വകഷന്‍ ഭാഷകള്‍</language>
			<language type="wal">വലമൊ</language>
			<language type="war">വാരേയ്</language>
			<language type="was">വാഷൊ</language>
			<language type="wen">സോര്‍ബിയന്‍ ഭാഷ</language>
			<language type="wo">വൊളോഫ്</language>
			<language type="xal">കല്‍മൈക്</language>
			<language type="xh">ക്ഷോസാ</language>
			<language type="yao">യാവോ</language>
			<language type="yap">യെപ്പീസ്</language>
			<language type="yi">യിദ്ദിഷ്</language>
			<language type="yo">യൊറൂബാ</language>
			<language type="ypk">യുപിക്</language>
			<language type="za">സ്വാംഗ്</language>
			<language type="zap">സാപ്പോടെക്</language>
			<language type="zbl">ബ്ലിസ്സിംബല്‍സ്</language>
			<language type="zen">സെനഗ</language>
			<language type="zh">ചൈനീസ്</language>
			<language type="zh_Hans">ലളിതചീനഭാഷ</language>
			<language type="zh_Hant">പരമ്പരാഗത ചൈനീസ്‌</language>
			<language type="znd">സാന്ദെ</language>
			<language type="zu">സുളു</language>
			<language type="zun">സുനി</language>
			<language type="zxx">ഭാഷയല്ലാത്തവ</language>
			<language type="zza">സാസാ</language>
		</languages>
		<scripts>
			<script type="Arab">അറബി</script>
			<script type="Armi">അര്‍മി</script>
			<script type="Armn">അര്‍മേനിയന്‍</script>
			<script type="Avst">അവെസ്ഥന്‍</script>
			<script type="Bali">ബാലിനീസ്</script>
			<script type="Batk">ബട്ടക്</script>
			<script type="Beng">ബംഗാളി</script>
			<script type="Blis">ബ്ലിസ് ചിത്ര ലിപി</script>
			<script type="Bopo">ബൊപൊമോഫോ</script>
			<script type="Brah">ബ്രാഹ്മി</script>
			<script type="Brai">ബ്രെയ്‌ലി</script>
			<script type="Bugi">ബുഗിനീസ്</script>
			<script type="Buhd">ബുഹിഡ്</script>
			<script type="Cakm">ചകം</script>
			<script type="Cans">ഏകീകൃത കനേഡിയന്‍ ഗോത്രലിപി</script>
			<script type="Cari">ചരിയന്‍</script>
			<script type="Cham">ഛം</script>
			<script type="Cher">ചെരോക്കീ</script>
			<script type="Cirt">ചിര്‍ത്ത്</script>
			<script type="Copt">കോപ്റ്റിക്</script>
			<script type="Cprt">സൈപ്രിയോട്ട്</script>
			<script type="Cyrl">സിറിലിക്</script>
			<script type="Cyrs">പുരാതന ചര്‍ച്ച് സ്ലവോണിക് സിറിലിക്</script>
			<script type="Deva">ദേവനാഗരി</script>
			<script type="Dsrt">ഡെസെര്‍ട്ട്</script>
			<script type="Egyd">ഈജിപ്ഷ്യന്‍ ഡിമോട്ടിക്</script>
			<script type="Egyh">ഈജിപ്ഷ്യന്‍ ഹിരാറ്റിക്</script>
			<script type="Egyp">ഈജിപ്ഷ്യന്‍ ചിത്രലിപി</script>
			<script type="Ethi">എത്യോപിക്</script>
			<script type="Geok">ജോര്‍ജ്ജിയന്‍ ഖുട്സുരി</script>
			<script type="Geor">ജോര്‍ജ്ജിയന്‍</script>
			<script type="Glag">ഗ്ലഗോലിറ്റിക്</script>
			<script type="Goth">ഗോഥിക്</script>
			<script type="Grek">ഗ്രീക്ക്</script>
			<script type="Gujr">ഗുജറാത്തി</script>
			<script type="Guru">ഗുരുമുഖി</script>
			<script type="Hang">ഹാംഗുള്‍</script>
			<script type="Hani">ഹാന്‍</script>
			<script type="Hano">ഹനുനൂ</script>
			<script type="Hans">പരിഷ്കൃത ഹാന്‍</script>
			<script type="Hant">പരമ്പരാഗത ചീനലിപി</script>
			<script type="Hebr">ഹീബ്രു</script>
			<script type="Hira">ഹിരഗാന</script>
			<script type="Hmng">പഹ്വാ ഹമോംഗ്</script>
			<script type="Hrkt">കടകാനയോ ഹിരഗാനയോ</script>
			<script type="Hung">പുരാതന ഹംഗേറിയന്‍</script>
			<script type="Inds">ഇന്‍ഡസ്</script>
			<script type="Ital">പഴയ ഇറ്റാലിയന്‍</script>
			<script type="Java">ജാവനീസ്</script>
			<script type="Jpan">ജാപ്പനീസ്</script>
			<script type="Kali">കയാ ലി</script>
			<script type="Kana">കടകാന</script>
			<script type="Khar">ഖരോഷ്ടി</script>
			<script type="Khmr">ഖമര്‍</script>
			<script type="Knda">കന്നഡ</script>
			<script type="Kore">കൊറിയന്‍</script>
			<script type="Kthi">ക്തി</script>
			<script type="Lana">ലന്ന</script>
			<script type="Laoo">ലാവോ</script>
			<script type="Latf">ഫ്രാക്ടുര്‍ ലാറ്റിന്‍</script>
			<script type="Latg">ഗെയ്‌ലിക് ലാറ്റിന്‍</script>
			<script type="Latn">ലാറ്റിന്‍</script>
			<script type="Lepc">ലെപ്ച</script>
			<script type="Limb">ലിംബു</script>
			<script type="Lina">സമരേഖയിലുള്ള എ</script>
			<script type="Linb">സമരേഖയിലുള്ള ബി</script>
			<script type="Lyci">ലൈസിന്‍</script>
			<script type="Lydi">ലൈഡിയന്‍</script>
			<script type="Mand">മന്‍ഡേയന്‍</script>
			<script type="Mani">മണിചേയന്‍</script>
			<script type="Maya">മായന്‍ ചിത്രലിപി</script>
			<script type="Mero">മെറോയിറ്റിക്</script>
			<script type="Mlym">മലയാളം</script>
			<script type="Mong">മംഗോളിയന്‍</script>
			<script type="Moon">മൂണ്‍</script>
			<script type="Mtei">മേറ്റി മായക്</script>
			<script type="Mymr">മ്യാന്‍മാര്‍</script>
			<script type="Nkoo">ന്‍ കോ</script>
			<script type="Ogam">ഒഖാം</script>
			<script type="Olck">ഒല്‍ ചിക്കി</script>
			<script type="Orkh">ഒര്‍ഖോണ്‍</script>
			<script type="Orya">ഒറിയ</script>
			<script type="Osma">ഒസ്‌മാനിയ</script>
			<script type="Perm">പുരാതന പെര്‍മിക്</script>
			<script type="Phag">ഫഗസ് പ</script>
			<script type="Phli">ഫ്ലി</script>
			<script type="Phlp">ഫ്ല്‍പ്</script>
			<script type="Phlv">പഹല്‍വി ലിപി</script>
			<script type="Phnx">ഫിനീഷ്യന്‍</script>
			<script type="Plrd">പൊള്ളാര്‍ഡ് ശബ്ദലിപി</script>
			<script type="Prti">പൃതി</script>
			<script type="Qaai">പാരമ്പര്യമായ</script>
			<script type="Rjng">റെജാംഗ്</script>
			<script type="Roro">റൊംഗോറൊംഗോ</script>
			<script type="Runr">റുണിക്</script>
			<script type="Samr">സമരിയ</script>
			<script type="Sara">സരതി</script>
			<script type="Saur">സൌരാഷ്ട്ര</script>
			<script type="Sgnw">ചിഹ്നലിപി</script>
			<script type="Shaw">ഷാവിയന്‍</script>
			<script type="Sinh">സിംഹള</script>
			<script type="Sund">സന്താനീസ്</script>
			<script type="Sylo">സൈലോതി നാഗരി</script>
			<script type="Syrc">സിറിയക്ക്</script>
			<script type="Syre">എസ്റ്റ്രാംഗ്ലോ സിറിയക്</script>
			<script type="Syrj">പശ്ചിമസുറിയാനി</script>
			<script type="Syrn">കിഴക്കന്‍ സിറിയക്</script>
			<script type="Tagb">തഗ്ബന്‍വാ</script>
			<script type="Tale">തായ് ലേ</script>
			<script type="Talu">പുതിയ തായ് ല്യൂ</script>
			<script type="Taml">തമിഴ്</script>
			<script type="Tavt">ത്വട്</script>
			<script type="Telu">തെലുങ്ക്</script>
			<script type="Teng">തെംഗ്വര്‍</script>
			<script type="Tfng">തിഫിനാഗ്</script>
			<script type="Tglg">തഗലോഗ്</script>
			<script type="Thaa">ഥാന</script>
			<script type="Thai">തായ്</script>
			<script type="Tibt">ടിബറ്റന്‍</script>
			<script type="Ugar">ഉഗ്രൈറ്റിക്</script>
			<script type="Vaii">വൈ</script>
			<script type="Visp">ദൃശ്യഭാഷ</script>
			<script type="Xpeo">പഴയ പേര്‍ഷ്യന്‍</script>
			<script type="Xsux">സുമേറോ അക്കാഡിയന്‍ ക്യുണിഫോം</script>
			<script type="Yiii">യി</script>
			<script type="Zmth">സ്മത്ത്</script>
			<script type="Zsym">സൈം</script>
			<script type="Zxxx">എഴുതപ്പെടാത്തത്</script>
			<script type="Zyyy">സാധാരണ</script>
			<script type="Zzzz">അറിയപ്പെടാത്തതോ നിലവിലില്ലാത്തതോ ആയ ലിപി</script>
		</scripts>
		<territories>
			<territory type="001">ലോകം</territory>
			<territory type="002">ആഫ്രിക്ക</territory>
			<territory type="003">വടക്കേ അമേരിക്കന്‍ ഭൂഖണ്ഡം</territory>
			<territory type="005">ദക്ഷിണ അമേരിക്ക</territory>
			<territory type="009">ഓഷ്യാനിയ</territory>
			<territory type="011">പശ്ചിമആഫ്രിക്ക</territory>
			<territory type="013">മദ്ധ്യഅമേരിക്ക</territory>
			<territory type="014">കിഴക്കന്‍ ആഫ്രിക്ക</territory>
			<territory type="015">ഉത്തരആഫ്രിക്ക</territory>
			<territory type="017">മദ്ധ്യആഫ്രിക്ക</territory>
			<territory type="018">തെക്കേ ആഫ്രിക്ക</territory>
			<territory type="019">അമേരിക്കന്‍ ഭൂഖണ്ഡം</territory>
			<territory type="021">വടക്കേ അമേരിക്ക</territory>
			<territory type="029">കരീബിയന്‍</territory>
			<territory type="030">കിഴക്കന്‍ ഏഷ്യ</territory>
			<territory type="034">തെക്കേ ഏഷ്യ</territory>
			<territory type="035">തെക്ക്-കിഴക്കന്‍ ഏഷ്യ</territory>
			<territory type="039">തെക്കേ യൂറോപ്പ്</territory>
			<territory type="053">ഓസ്ട്രേലിയയും ന്യൂസിലാന്‍ഡും</territory>
			<territory type="054">മെലനേഷ്യ</territory>
			<territory type="057">മൈക്രോനേഷ്യന്‍ ഭാഗം</territory>
			<territory type="061">പോളിനേഷ്യ</territory>
			<territory type="062">ദക്ഷിണ-മദ്ധ്യ ഏഷ്യ</territory>
			<territory type="142">ഏഷ്യ</territory>
			<territory type="143">മദ്ധ്യേഷ്യ</territory>
			<territory type="145">പശ്ചിമേഷ്യ</territory>
			<territory type="150">യൂറോപ്പ്</territory>
			<territory type="151">കിഴക്കന്‍ യൂറോപ്പ്</territory>
			<territory type="154">വടക്കേ യൂറോപ്പ്</territory>
			<territory type="155">പശ്ചിമ യൂറോപ്പ്</territory>
			<territory type="172">സ്വതന്ത്രരാഷ്ട്രങ്ങളുടെ കോമണ്‍‌വെല്‍ത്ത്</territory>
			<territory type="419">ലാറ്റിനമേരിക്കയും കരീബിയനും</territory>
			<territory type="AD">അന്‍റോറ</territory>
			<territory type="AE">സംയുക്ത അറബ് രാഷ്ട്രം</territory>
			<territory type="AF">അഫ്ഗാനിസ്ഥാന്‍</territory>
			<territory type="AG">ആന്‍റിഗ്വ ആന്‍റ് ബര്‍ബുഡ</territory>
			<territory type="AI">ആന്‍ഗ്വില്ല</territory>
			<territory type="AL">അല്‍ബേനിയ</territory>
			<territory type="AM">അര്‍മേനിയ</territory>
			<territory type="AN">നെതര്‍ലന്‍ഡ്സ് ആന്‍റിലിസ്</territory>
			<territory type="AO">അംഗോള</territory>
			<territory type="AQ">അന്‍റാര്‍ട്ടിക്ക</territory>
			<territory type="AR">അര്‍ജന്‍റീന</territory>
			<territory type="AS">അമേരിക്കന്‍ സാമോവ</territory>
			<territory type="AT">ഓസ്ട്രിയ</territory>
			<territory type="AU">ഓസ്ട്രേലിയ</territory>
			<territory type="AW">അറുബ</territory>
			<territory type="AX">അലന്‍ഡ് ദ്വീപുകള്‍</territory>
			<territory type="AZ">അസര്‍ബൈജാന്‍</territory>
			<territory type="BA">ബോസ്നിയയും ഹെര്‍സഗോവിനയും</territory>
			<territory type="BB">ബാര്‍ബഡോസ്</territory>
			<territory type="BD">ബംഗ്ലാദേശ്</territory>
			<territory type="BE">ബെല്‍ജിയം</territory>
			<territory type="BF">ബുര്‍ക്കിനാ ഫാസോ</territory>
			<territory type="BG">ബള്‍ഗേറിയ</territory>
			<territory type="BH">ബഹ്റൈന്‍</territory>
			<territory type="BI">ബുറുണ്ടി</territory>
			<territory type="BJ">ബെനിന്‍</territory>
			<territory type="BM">ബര്‍മുഡ</territory>
			<territory type="BN">ബ്രൂണയ്</territory>
			<territory type="BO">ബൊളീവിയ</territory>
			<territory type="BR">ബ്രസീല്‍</territory>
			<territory type="BS">ബഹാമാസ്</territory>
			<territory type="BT">ഭൂട്ടാന്‍</territory>
			<territory type="BV">ബൌവെറ്റ് ഐലന്‍റ്</territory>
			<territory type="BW">ബോട്സ്വാന</territory>
			<territory type="BY">ബെലറൂസ്</territory>
			<territory type="BZ">ബെലീസ്</territory>
			<territory type="CA">കാനഡ</territory>
			<territory type="CC">കോക്കസ്</territory>
			<territory type="CD">കോംഗോ - കിന്‍ഷാസ</territory>
			<territory type="CF">സെന്‍ട്രല്‍ ആഫ്രിക്കന്‍ റിപ്പബ്ലിക്</territory>
			<territory type="CG">കോംഗോ - ബ്രാസാവില്‍</territory>
			<territory type="CH">സ്വിറ്റ്സര്‍ലന്‍ഡ്</territory>
			<territory type="CI">ഐവറി കോസ്റ്റ്</territory>
			<territory type="CK">കൂക്ക് ദ്വീപുകള്‍</territory>
			<territory type="CL">ചിലി</territory>
			<territory type="CM">കാമറൂണ്‍</territory>
			<territory type="CN">ചൈന</territory>
			<territory type="CO">കൊളംബിയ</territory>
			<territory type="CR">കോസ്റ്ററിക്ക</territory>
			<territory type="CU">ക്യൂബ</territory>
			<territory type="CV">കേപ്പ് വെര്‍ഡെ</territory>
			<territory type="CX">ക്രിസ്മസ് ദ്വീപ്</territory>
			<territory type="CY">സൈപ്രസ്സ്</territory>
			<territory type="CZ">ചെക്ക് റിപ്പബ്ലിക്</territory>
			<territory type="DE">ജര്‍മനി</territory>
			<territory type="DJ">ജിബൂട്ടി</territory>
			<territory type="DK">ഡെന്‍മാര്‍ക്ക്</territory>
			<territory type="DM">ഡൊമിനിക്ക</territory>
			<territory type="DO">ഡൊമിനിക്കന്‍ റിപ്പബ്ലിക്</territory>
			<territory type="DZ">അള്‍ജീരിയ</territory>
			<territory type="EC">ഇക്വഡോര്‍</territory>
			<territory type="EE">എസ്റ്റോണിയ‍</territory>
			<territory type="EG">ഈജിപ്ത്</territory>
			<territory type="EH">പശ്ചിമ സഹാറ</territory>
			<territory type="ER">എറിത്രിയ</territory>
			<territory type="ES">സ്പെയിന്‍</territory>
			<territory type="ET">എത്യോപ്യ</territory>
			<territory type="FI">ഫിന്‍ലാന്‍ഡ്</territory>
			<territory type="FJ">ഫിജി</territory>
			<territory type="FK">ഫാക്ക്‌ലാന്‍റ് ഐലന്‍റ്</territory>
			<territory type="FM">മൈക്രോനേഷ്യ</territory>
			<territory type="FO">ഫറോയി ദ്വീപുകള്‍</territory>
			<territory type="FR">ഫ്രാന്‍സ്</territory>
			<territory type="GA">ഗാബോണ്‍</territory>
			<territory type="GB">ബ്രിട്ടന്‍</territory>
			<territory type="GD">ഗ്രനേഡ</territory>
			<territory type="GE">ജോര്‍ജിയ</territory>
			<territory type="GF">ഫ്രഞ്ച് ഗയാന</territory>
			<territory type="GG">ഗേണ്‍സി</territory>
			<territory type="GH">ഘാന</territory>
			<territory type="GI">ജിബ്രാള്‍ട്ടര്‍</territory>
			<territory type="GL">ഗ്രീന്‍ലാന്‍റ്</territory>
			<territory type="GM">ഗാംബിയ</territory>
			<territory type="GN">ഗ്വിനിയ</territory>
			<territory type="GP">ഗുവാഡെലോപ്</territory>
			<territory type="GQ">ഇക്വിറ്റോറിയല്‍ ഗ്വിനിയ</territory>
			<territory type="GR">ഗ്രീസ്</territory>
			<territory type="GS">ദക്ഷിണ ജോര്‍ജ്ജിയയും ദക്ഷിണ സാന്‍ഡ്‌വിച്ച് ദ്വീപുകളും</territory>
			<territory type="GT">ഗ്വാട്ടിമാലാ</territory>
			<territory type="GU">ഗ്വാം</territory>
			<territory type="GW">ഗിനി-ബിസോ</territory>
			<territory type="GY">ഗയാന</territory>
			<territory type="HK">ഹോങ് കോങ്</territory>
			<territory type="HN">ഹോണ്ടുറാസ്</territory>
			<territory type="HR">ക്രൊയേഷ്യ</territory>
			<territory type="HT">ഹെയ്തി</territory>
			<territory type="HU">ഹംഗറി</territory>
			<territory type="ID">ഇന്‍ഡോനേഷ്യ</territory>
			<territory type="IE">അയര്‍ലാന്‍ഡ്</territory>
			<territory type="IL">ഇസ്രായേല്‍</territory>
			<territory type="IM">ഐല്‍ ഓഫ് മാന്‍</territory>
			<territory type="IN">ഇന്ത്യ</territory>
			<territory type="IO">ബ്രിട്ടീഷ് ഇന്ത്യന്‍ മഹാസമുദ്ര പ്രദേശം</territory>
			<territory type="IQ">ഇറാക്ക്</territory>
			<territory type="IR">ഇറാന്‍</territory>
			<territory type="IS">ഐസ്‌ലാന്‍റ്</territory>
			<territory type="IT">ഇറ്റലി</territory>
			<territory type="JE">ജേഴ്സി</territory>
			<territory type="JM">ജമൈക്ക</territory>
			<territory type="JO">ജോര്‍ദ്ദാന്‍</territory>
			<territory type="JP">ജപ്പാന്‍</territory>
			<territory type="KE">കെനിയ</territory>
			<territory type="KG">കിര്‍ഗിസ്ഥാന്‍</territory>
			<territory type="KH">കംബോഡിയ</territory>
			<territory type="KI">കിരിബാത്തി</territory>
			<territory type="KM">കോമറോസ്</territory>
			<territory type="KN">സെയ്ന്‍റ് കിറ്റ്സും നെവിസും</territory>
			<territory type="KP">ഉത്തരകൊറിയ</territory>
			<territory type="KR">ദക്ഷിണകൊറിയ</territory>
			<territory type="KW">കുവൈറ്റ്</territory>
			<territory type="KY">കേയ്മാന്‍ ദ്വീപുകള്‍</territory>
			<territory type="KZ">കസാഖിസ്ഥാന്‍</territory>
			<territory type="LA">ലാവോസ്</territory>
			<territory type="LB">ലബനോണ്‍</territory>
			<territory type="LC">സെന്‍റ് ലൂസിയ</territory>
			<territory type="LI">ലൈച്ടെസ്റ്റിന്‍</territory>
			<territory type="LK">ശ്രീലങ്ക</territory>
			<territory type="LR">ലൈബീരിയ</territory>
			<territory type="LS">ലെസോത്തോ</territory>
			<territory type="LT">ലിത്വാനിയ</territory>
			<territory type="LU">ലക്സംബര്‍ഗ്</territory>
			<territory type="LV">ലാത്വിയ</territory>
			<territory type="LY">ലിബിയ</territory>
			<territory type="MA">മൊറോക്കൊ</territory>
			<territory type="MC">മൊണോക്കൊ</territory>
			<territory type="MD">മള്‍ഡോവ</territory>
			<territory type="ME">മോണ്ടേനേഗ്രോ</territory>
			<territory type="MF">സെന്‍റ് മാര്‍ട്ടിന്‍</territory>
			<territory type="MG">മഡഗാസ്കര്‍</territory>
			<territory type="MH">മാര്‍ഷല്‍‍‍ ദ്വീപുകള്‍</territory>
			<territory type="MK">മാസിഡോണിയ</territory>
			<territory type="ML">മാലി</territory>
			<territory type="MM">മ്യാന്‍മാര്‍</territory>
			<territory type="MN">മംഗോളിയ</territory>
			<territory type="MO">മക്കാവോ</territory>
			<territory type="MP">ഉത്തര മറിയാനാ ദ്വീപുകള്‍</territory>
			<territory type="MQ">മാര്‍ട്ടീനിക്</territory>
			<territory type="MR">മൌറിറ്റാനിയ</territory>
			<territory type="MS">മോണ്ട്സെറാറ്റ്</territory>
			<territory type="MT">മാള്‍ട്ട</territory>
			<territory type="MU">മൌറീഷ്യസ്</territory>
			<territory type="MV">മാലിദ്വീപ്</territory>
			<territory type="MW">മലാവി</territory>
			<territory type="MX">മെക്സിക്കോ</territory>
			<territory type="MY">മലേഷ്യ</territory>
			<territory type="MZ">മൊസാംബിക്ക്</territory>
			<territory type="NA">നമീബിയ</territory>
			<territory type="NE">നൈഗര്‍</territory>
			<territory type="NG">നൈജീരിയ</territory>
			<territory type="NI">നിക്കാരഗ്വ</territory>
			<territory type="NL">നെതര്‍ലന്‍ഡ്സ്</territory>
			<territory type="NO">നോര്‍വെ</territory>
			<territory type="NP">നേപ്പാള്‍</territory>
			<territory type="NR">നൌറൂ</territory>
			<territory type="NU">ന്യൂവേ</territory>
			<territory type="NZ">ന്യൂസിലാന്‍റ്</territory>
			<territory type="OM">ഒമാന്‍</territory>
			<territory type="PA">പനാമ</territory>
			<territory type="PE">പെറു</territory>
			<territory type="PF">ഫ്രഞ്ച് പോളിനേഷ്യ</territory>
			<territory type="PG">പപ്പുവ ന്യൂ ഗ്വിനി</territory>
			<territory type="PH">ഫിലിപ്പൈന്‍സ്</territory>
			<territory type="PK">പാക്കിസ്ഥാന്‍</territory>
			<territory type="PL">പോളണ്ട്</territory>
			<territory type="PN">പിറ്റ്കെയ്ന്‍</territory>
			<territory type="PR">പ്യൂര്‍ട്ടോ റിക്കോ</territory>
			<territory type="PS">പാലസ്തീന്‍</territory>
			<territory type="PT">പോര്‍ച്ചുഗല്‍</territory>
			<territory type="PW">പലാവു</territory>
			<territory type="PY">പരാഗ്വേ</territory>
			<territory type="QA">ഖത്തര്‍</territory>
			<territory type="QO">നോര്‍ഫോക് ദ്വീപ്</territory>
			<territory type="QU">യൂറോപ്യന്‍ യൂണിയന്‍</territory>
			<territory type="RE">റീയൂണിയന്‍</territory>
			<territory type="RO">റൊമാനിയ</territory>
			<territory type="RS">സെര്‍ബിയ</territory>
			<territory type="RU">റഷ്യ</territory>
			<territory type="RW">റുവാണ്ട</territory>
			<territory type="SA">സൗദി അറേബ്യ</territory>
			<territory type="SB">സോളമന്‍‍ ദ്വീപുകള്‍</territory>
			<territory type="SC">സെയ്ഷെല്‍സ്</territory>
			<territory type="SD">സുഡാന്‍</territory>
			<territory type="SE">സ്വീഡന്‍</territory>
			<territory type="SG">സിംഗപ്പുര്‍</territory>
			<territory type="SH">സെന്‍റ് ഹെലീന</territory>
			<territory type="SI">സ്ലോവേനിയ</territory>
			<territory type="SJ">സ്വാല്‍ബാഡും ജാന്‍ മായേനും</territory>
			<territory type="SK">സ്ലോവാക്യ</territory>
			<territory type="SL">സിയേറാ ലിയോണ്‍</territory>
			<territory type="SM">സാന്‍ മറിനോ</territory>
			<territory type="SN">സെനഗല്‍</territory>
			<territory type="SO">സോമാലിയ</territory>
			<territory type="SR">സുറിനാം</territory>
			<territory type="ST">സാവോ റ്റമെ ആന്‍ഡ് പ്രിന്‍സിപ്പി</territory>
			<territory type="SV">എല്‍ സാല്‍വദൂര്‍</territory>
			<territory type="SY">സിറിയ</territory>
			<territory type="SZ">സ്വാസിലാന്‍റ്</territory>
			<territory type="TD">ചാഡ്</territory>
			<territory type="TF">ദക്ഷിണ ഫ്രഞ്ച് ഭൂപ്രദേശം</territory>
			<territory type="TG">ടോഗോ</territory>
			<territory type="TH">തായ്‌ലാന്‍ഡ്</territory>
			<territory type="TJ">താജിക്കിസ്ഥാന്‍</territory>
			<territory type="TK">ടൊകെലാവു</territory>
			<territory type="TL">കിഴക്കന്‍ തിമൂര്‍</territory>
			<territory type="TM">തുര്‍ക്ക്മെനിസ്ഥാന്‍</territory>
			<territory type="TN">ടുണീഷ്യ</territory>
			<territory type="TO">ടോംഗ</territory>
			<territory type="TR">തുര്‍ക്കി</territory>
			<territory type="TT">ട്രിനിഡാഡും റ്റൊബാഗോയും</territory>
			<territory type="TV">തുവാലു</territory>
			<territory type="TW">തായ്‌വാന്‍</territory>
			<territory type="TZ">ടാന്‍സാനിയ</territory>
			<territory type="UA">ഉക്രൈന്‍</territory>
			<territory type="UG">ഉഗാണ്ട</territory>
			<territory type="US">അമേരിക്കന്‍ ഐക്യനാടുകള്‍</territory>
			<territory type="UY">ഉറൂഗ്വെ</territory>
			<territory type="UZ">ഉസ്ബെക്കിസ്ഥാന്‍</territory>
			<territory type="VA">വത്തിക്കാന്‍</territory>
			<territory type="VE">വെനിസ്വേല</territory>
			<territory type="VG">ബ്രിട്ടീഷ് വിര്‍ജിന്‍ ദ്വീപുകള്‍</territory>
			<territory type="VI">യു എസ് വെര്‍ജിന്‍ ദ്വീപുകള്‍</territory>
			<territory type="VN">വിയറ്റ്നാം</territory>
			<territory type="VU">വന്വാത്തു</territory>
			<territory type="WF">വാലിസ് ആന്‍ഡ് ഫ്യുചൂന</territory>
			<territory type="WS">സാമോവ</territory>
			<territory type="YE">യമന്‍</territory>
			<territory type="YT">മയോട്ട്</territory>
			<territory type="ZA">ദക്ഷിണാഫ്രിക്ക</territory>
			<territory type="ZM">സാംബിയ</territory>
			<territory type="ZW">സിംബാബ്വേ</territory>
			<territory type="ZZ">അറിയപ്പെടാത്തതോ നിലവിലില്ലാത്തതോ ആയ പ്രദേശം</territory>
		</territories>
		<variants>
			<variant type="1996">1996-ലെ ജര്‍മന്‍ ലിപി</variant>
			<variant type="1606NICT">1606 വരെയുള്ള ആധുനികമദ്ധ്യകാല ഫ്രഞ്ച്</variant>
			<variant type="AREVELA">കിഴക്കന്‍ അര്‍മീനിയന്‍</variant>
			<variant type="BOONT">ബൂണ്ട്‌ലിങ്ങ്</variant>
			<variant type="FONIPA">ഐപി‌എ  സ്വനവ്യവസ്ഥ</variant>
			<variant type="MONOTON">മോണോറ്റോണിക്</variant>
			<variant type="NEDIS">നേറ്റിസോണ്‍ പ്രാദേശികരൂപം</variant>
			<variant type="NJIVA">ഗ്നിവ/നിജിവ പ്രാദേശികരൂപം</variant>
			<variant type="POSIX">കമ്പ്യൂട്ടറിന്റെ ഉപയോഗത്തിന്</variant>
			<variant type="REVISED">പരിഷ്ക്കരിച്ച ലിപി</variant>
		</variants>
		<keys>
			<key type="calendar">കലണ്ടര്‍</key>
			<key type="collation">അകാരാദിക്രമം</key>
			<key type="currency">നാണയം</key>
		</keys>
		<types>
			<type type="big5han" key="collation">പരമ്പരാഗത ചൈനീസ് ക്രമീകരണം - ബിഗµ5</type>
			<type type="buddhist" key="calendar">ബുദ്ധമതകലണ്ടര്‍</type>
			<type type="chinese" key="calendar">ചൈനീസ് കലണ്ടര്‍</type>
			<type type="direct" key="collation">പ്രത്യക്ഷക്രമീകരണം</type>
			<type type="gb2312han" key="collation">ലളിതമായ ചൈനീസ് ക്രമീകരണം - ജീബി2312</type>
			<type type="gregorian" key="calendar">ഇംഗ്ലീഷ് കലണ്ടര്‍</type>
			<type type="hebrew" key="calendar">യഹൂദകലണ്ടര്‍</type>
			<type type="indian" key="calendar">ശകവര്‍ഷ കലണ്ടര്‍</type>
			<type type="islamic" key="calendar">ഇസ്ലാം കലണ്ടര്‍</type>
			<type type="islamic-civil" key="calendar">ഇസ്ലാം-സിവി¿ല്‍ കലണ്ടര്‍</type>
			<type type="japanese" key="calendar">ജപ്പാനീസ് കലണ്ടര്‍</type>
			<type type="phonebook" key="collation">ഫോണ്‍ബുക്കിലെ ക്രമീകരണം</type>
			<type type="pinyin" key="collation">പിന്‍‌യിന്‍ ക്രമീകരണം</type>
			<type type="roc" key="calendar">ചൈനീസ് കലണ്ടര്‍</type>
			<type type="stroke" key="collation">സ്റ്റ്രോക്ക് ക്രമീകരണം</type>
			<type type="traditional" key="collation">പരമ്പരാഗത ക്രമീകരണം</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">യു.എസ്.</measurementSystemName>
			<measurementSystemName type="metric">മെട്രിക്</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">ഭാഷ: {0}</codePattern>
			<codePattern type="script">ലിപി: {0}</codePattern>
			<codePattern type="territory">ദേശം: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[\u200C \u200D അ-ഋ ൠ ഌ ൡ എ-ഐ ഒ-ന പ-ര ല വ ള ഴ റ ശ-ഹ ഃ ം ാ-ൃ െ-ൈ ൊ-ൌ ൗ ്]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a-z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ജനു</month>
							<month type="2">ഫെബ്രു</month>
							<month type="3">മാര്‍</month>
							<month type="4">ഏപ്രി</month>
							<month type="5">മേയ്</month>
							<month type="6">ജൂണ്‍</month>
							<month type="7">ജൂലൈ</month>
							<month type="8">ആഗ</month>
							<month type="9">സെപ്റ്റം</month>
							<month type="10">ഒക്ടോ</month>
							<month type="11">നവം</month>
							<month type="12">ഡിസം</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ജനുവരി</month>
							<month type="2">ഫെബ്രുവരി</month>
							<month type="3">മാര്‍ച്ച്</month>
							<month type="4">ഏപ്രില്‍</month>
							<month type="5">മേയ്</month>
							<month type="6">ജൂണ്‍</month>
							<month type="7">ജൂലൈ</month>
							<month type="8">ഓഗസ്റ്റ്</month>
							<month type="9">സെപ്റ്റംബര്‍</month>
							<month type="10">ഒക്ടോബര്‍</month>
							<month type="11">നവംബര്‍</month>
							<month type="12">ഡിസംബര്‍</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ജ</month>
							<month type="2">ഫെ</month>
							<month type="3">മ</month>
							<month type="4">ഏ</month>
							<month type="5">മേ</month>
							<month type="6">ജൂ</month>
							<month type="7">ജൂ</month>
							<month type="8">ആ</month>
							<month type="9">സെ</month>
							<month type="10">ഒ</month>
							<month type="11">ന</month>
							<month type="12">ഡി</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ഞാ</day>
							<day type="mon">തി</day>
							<day type="tue">ചൊ</day>
							<day type="wed">ബു</day>
							<day type="thu">വ്യാ</day>
							<day type="fri">വെ</day>
							<day type="sat">ശ</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="tue">ചൊ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ഞായര്‍</day>
							<day type="mon">തിങ്കള്‍</day>
							<day type="tue">ചൊവ്വ</day>
							<day type="wed">ബുധന്‍</day>
							<day type="thu">വ്യാഴം</day>
							<day type="fri">വെള്ളി</day>
							<day type="sat">ശനി</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ഞ</day>
							<day type="mon">ത</day>
							<day type="tue">ച</day>
							<day type="wed">ബ</day>
							<day type="thu">വ</day>
							<day type="fri">വ</day>
							<day type="sat">ശ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="mon">തിങ്കളാഴ്ച</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ഒന്നാം പാദം</quarter>
							<quarter type="2">രണ്ടാം പാദം</quarter>
							<quarter type="3">മൂന്നാം പാദം</quarter>
							<quarter type="4">നാലാം പാദം</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>രാവിലെ</am>
				<pm>വൈകുന്നേരം</pm>
				<eras>
					<eraNames>
						<era type="0">ക്രിസ്തുവിനു് മുമ്പ്‌</era>
						<era type="1">ക്രിസ്തുവിനു് പിമ്പ്</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ക്രി.മു.</era>
						<era type="1">ക്രി.പി.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">ക്രി.മു.</era>
						<era type="1">ക്രി.പി.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy, MMMM d, EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy, MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy, MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">h:mm a</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">M/d, E</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">MMM d, E</dateFormatItem>
						<dateFormatItem id="MMMMEd">MMMM d, E</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">yyyy-M-d, EEE</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">yyyy MMM d, EEE</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">d/M, E - d/M, E</greatestDifference>
							<greatestDifference id="d">d/M, E - d/M, E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MMM d, E - MMM d, E</greatestDifference>
							<greatestDifference id="d">MMM d, E - MMM d, E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a – h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a – h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a – h a v</greatestDifference>
							<greatestDifference id="h">h–h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy – M/yy</greatestDifference>
							<greatestDifference id="y">M/yy – M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">d/M/yy, E - d/M/yy, E</greatestDifference>
							<greatestDifference id="d">d/M/yy, E - d/M/yy, E</greatestDifference>
							<greatestDifference id="y">d/M/yy, E - d/M/yy, E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy MMM d, E - MMM d, E</greatestDifference>
							<greatestDifference id="d">yyyy, MMM d, E - d, E</greatestDifference>
							<greatestDifference id="y">yyyy MMM d, E - yyyy MMM d, E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="d">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy – d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>അബ്ദം</displayName>
					</field>
					<field type="year">
						<displayName>വര്‍ഷം</displayName>
					</field>
					<field type="month">
						<displayName>മാസം</displayName>
					</field>
					<field type="week">
						<displayName>ആഴ്ച</displayName>
					</field>
					<field type="day">
						<displayName>ദിവസം</displayName>
						<relative type="0">ഇന്നു്</relative>
						<relative type="1">നാളെ</relative>
						<relative type="2">മറ്റന്നാള്‍</relative>
						<relative type="3">ഇന്നേക്ക് മൂന്നാം‌പക്കം</relative>
						<relative type="-1">ഇന്നലെ</relative>
						<relative type="-2">മിനിഞ്ഞാന്ന്</relative>
						<relative type="-3">മൂന്നുദിവസം മുമ്പ്</relative>
					</field>
					<field type="weekday">
						<displayName>ആഴ്ചയിലെ ദിവസം</displayName>
					</field>
					<field type="dayperiod">
						<displayName>രാവിലെ/വൈകുന്നേരം</displayName>
					</field>
					<field type="hour">
						<displayName>മണിക്കൂര്‍</displayName>
					</field>
					<field type="minute">
						<displayName>മിനിട്ട്</displayName>
					</field>
					<field type="second">
						<displayName>സെക്കന്‍റ്</displayName>
					</field>
					<field type="zone">
						<displayName>മേഖല</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="indian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="3">ജ്യേഷ്ഠം</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="9">അ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ചൈത്രം</month>
							<month type="2">വൈശാഖം</month>
							<month type="3">ജ്യേഷ്ടം</month>
							<month type="4">ആഷാഢം</month>
							<month type="5">ശ്രാവണം</month>
							<month type="6">ഭാദ്രപാദം</month>
							<month type="7">ആശ്വിനം</month>
							<month type="8">കാര്‍ത്തിക</month>
							<month type="9">അഗ്രഹായനം</month>
							<month type="10">പൌഷം</month>
							<month type="11">മാഘം</month>
							<month type="12">ഫല്‍ഗുനം</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ചൈ</month>
							<month type="2">വൈ</month>
							<month type="3">ജ്യേ</month>
							<month type="4">ആ</month>
							<month type="5">ശ്രാ</month>
							<month type="6">ഭാ</month>
							<month type="7">ആ</month>
							<month type="8">കാ</month>
							<month type="9">അ</month>
							<month type="10">പൌ</month>
							<month type="11">മാ</month>
							<month type="12">ഫ</month>
						</monthWidth>
						<monthWidth type="wide">
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">ശക</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">മുഹറം</month>
							<month type="2">സഫര്‍</month>
							<month type="3">റബീഹുല്‍ അവ്വല്‍</month>
							<month type="4">റബീഹുല്‍ ആഖിര്‍</month>
							<month type="5">ജമാദുല്‍ അവ്വല്‍</month>
							<month type="6">ജമാദുല്‍ ആഖിര്‍</month>
							<month type="7">റജബ്</month>
							<month type="8">ശഹബാന്‍</month>
							<month type="9">റമളാന്‍</month>
							<month type="10">ശവ്വാല്‍</month>
							<month type="11">ദുല്‍ ഖഹദ്</month>
							<month type="12">ദുല്‍ ഹിജ്ജ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">മു</month>
							<month type="2">സ</month>
							<month type="3">റ-അ</month>
							<month type="4">റ-ആ</month>
							<month type="5">ജ-അ</month>
							<month type="6">ജ-ആ</month>
							<month type="7">റ</month>
							<month type="8">ശ</month>
							<month type="9">റ</month>
							<month type="10">ശ</month>
							<month type="11">ദു</month>
							<month type="12">ദു-ഹി</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">ഹിജറ</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} സമയം</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>അറിയപ്പെടാത്ത നഗരം</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>റൊതീറ</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>പാമര്‍</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>ദക്ഷിണ ധ്രൂവം</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>സ്യോവ</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>മാവ്സണ്‍</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>ഡെയ്‌വിസ്</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>വോസ്റ്റോക്</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>കാസെ</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>ഡ്യൂമണ്ട് ഡി യുര്‍വില്‍</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>മാക്മര്‍ഡോ</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>റിയോ ഗ്യാലഗോസ്</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>മെന്‍ഡോസ</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>സാന്‍ ജുവാന്‍</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>ഉഷിയ</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ലാ റിയോജ</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>സാന്‍ ലൂയിസ്</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>‍ക്യാറ്റമാര്‍ക്ക</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>ജുജുയ്</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>റ്റുകുമാന്‍</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>കൊര്‍ദോവ</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ബ്യൂനസ് ഐറിസ്</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>പെര്‍ത്ത്</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>യൂക്ല</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>ഡാര്‍വിന്‍</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>അഡലെയ്ഡ്</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ബ്രോക്കണ്‍ ഹില്‍</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>ക്യൂറി</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>മെല്‍ബണ്‍</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>ഹൊബാര്‍ട്ട്</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>ലിന്‍ഡെമാന്‍</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>സിഡ്നി</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ബ്രിസ്‌ബേയ്ന്‍</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>ലോഡ് ഹോവ്</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>യെറുനീപ്പെ</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>റിയോ ബ്രാങ്കോ</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>പോര്‍ട്ടോ വെല്ലോ</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>ബോവ വിസ്റ്റ</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>മനൌസ്</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>കുയ്ബ</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>ക്യാന്പോ ഗ്രാന്‍ഡെ</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>ബെലം</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>അറഗ്വൈന</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>സാവോ പോലോ</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>ബഹിയ</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>ഫോര്‍ട്ടലീസ</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>മാസിയോ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>റെസീഫെ</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>നൊറോന</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>ഡോവ്സണ്‍</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>വൈറ്റ്ഹോഴ്സ്</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>ഇനുവിക്</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>വാന്‍‌കൂവര്‍</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>ഡോവ്സണ്‍ ക്രീക്ക്</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>യെല്ലോനൈഫ്</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>എഡ്മോണ്‍ടണ്‍</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>സ്വിഫ്റ്റ് കറന്‍റ്</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>കെയ്ന്പ്രിഡ്ജ് ബേ</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>റിജീന</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>വിന്നിപെഗ്</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>റെസല്യൂട്ട്</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>റെയ്നി റിവര്‍</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>റാങ്കിന്‍ ഇന്‍ലെറ്റ്</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>കോറല്‍ ഹാര്‍ബര്‍</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>തണ്ടര്‍ ബേ</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>നിപ്പിഗോണ്‍</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>ടൊറണ്ടോ</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>മോണ്ട്രിയാല്‍</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>ഇഖാലിത്</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>പാന്‍ഗ്‌നിറ്റങ്</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>മോങ്റ്റണ്‍</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>ഹാലിഫാക്സ്</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>ഗൂസ് ബേ</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>ഗ്ലെയ്സ് ബേ</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ബ്ലാങ്ക് സാബ്ലോണ്‍</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>സെയ്ന്‍റ് ജോണ്‍സ്</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>കിന്‍ഷാസ</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>ലൂബുംബാഷി</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ഈസ്റ്റര്‍</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>കാഷ്ഗര്‍</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>ഉറുംഖി</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>ചോങ്ഖിങ്</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>ഹാര്‍ബിന്‍</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>ഗാലപ്പാഗോസ്</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>ക്യാനറി</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>ക്യൂട്ട</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ട്രക്</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>പൊനാപ്</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>കൊസ്രേ</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>തൂളി</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>സ്കോര്‍സ്ബൈസണ്ട്</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>ഡാന്‍മാര്‍ക്ക്ഷാവ്ന്‍</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>ജക്കാര്‍ത്ത</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>പൊന്‍റിയാനക്</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>മകസ്സര്‍</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ജയപുര</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>എന്‍ഡബറി</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>കിരിതിമാത്തി</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>തരാവ</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>അഖ്തൌ</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ഓറല്‍</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>അഖ്തോബ്</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>ഖിസിലോര്‍ഡ</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>അല്‍മതി</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>ക്വാജലെയ്ന്‍</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>മജൂറോ</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>ഹൌഡ്</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>ഉലാന്‍ബട്ടൂര്‍</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>ചൊയ്ബല്‍സന്‍</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>തിയുവാന</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>ഹെര്‍മോസില്ലോ</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>മാസറ്റ്ലാന്‍</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>ചിവാവു</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>മോണ്ടര്‍‌റേ</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>മെക്സിക്കോ സിറ്റി</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>മെരിഡ</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>കന്‍കൂന്‍</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>കുചിങ്</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>ചാത്തം</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>മാര്‍ക്യുസാസ്</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>ഗാന്പിയര്‍</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>എയ്സോര്‍സ്</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>മഡെയ്റ</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>ക്യാലിനിന്‍ഗ്രാഡ്</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>മോസ്കോ</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>വോള്‍ഗോഗ്രാഡ്</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>സമാറ</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>യാകാറ്റെറിന്‍ബര്‍ഗ്</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ഒംസ്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>നൊവോസിബിര്‍സ്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>ക്രാസ്നോയാസ്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ഇര്‍കസ്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>യാകസ്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>വ്ളാഡിവോസ്റ്റോക്</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>സഖാലിന്‍</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>മഗഡാന്‍</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>കാംചട്ക</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>അനാഡിര്‍</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>ഉസ്ഗൊറോഡ്</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>കീവ്</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>സിംഫെറോപോള്‍</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>സാപ്പറോസൈ</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>മിഡ്‌വേ</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>ജോണ്‍സ്റ്റണ്‍</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>വെയ്ക്</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>അഡാക്</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>നൌം</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>ഹോണലൂലു</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>ആങ്കറേജ്</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>യാകുറ്റാറ്റ്</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>ജുനിയു</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>ലോസ് എയ്ഞ്ചലസ്</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>ബൊയ്സി</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ഫീനിക്സ്</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>ഷിപ്പ്റോക്ക്</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>ഡെന്‍‌വര്‍</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>ന്യൂ സെയ്‌ലം, നോര്‍ത്ത് ഡക്കോട്ട</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>സെന്‍റര്‍, നോര്‍ത്ത് ഡക്കോട്ട</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>ചിക്കാഗോ</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>മെനോമിനീ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>വിന്‍സെന്‍സ്, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>പീറ്റേഴ്സ്ബര്‍ഗ്, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>റ്റെല്‍ സിറ്റി, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>നോക്സ്, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>വിനാമാക്, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>മരെങ്കോ, ഇന്‍ഡ്യാനാ</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>ഇന്‍ഡ്യാനാപോലീസ്</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>ലൂയിവില്‍</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>വിവെയ്, ഇന്‍ഡ്യാന</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>മോണ്ടിസെല്ലോ, കെന്‍റക്കി</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>ഡെട്രോയിറ്റ്</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>ന്യൂയോര്‍ക്ക്</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>സമര്‍ക്കന്ദ്</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>എയ്ക്കര്‍ സമയം</standard>
					<daylight>എയ്ക്കര്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
				<short>
					<standard>ACT (എയ്ക്കര്‍)</standard>
					<daylight>ACST (എയ്ക്കര്‍)</daylight>
				</short>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>അഫ്ഗാനിസ്ഥാന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>മദ്ധ്യ ആഫ്രിക്കന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>കിഴക്കേ ആഫ്രിക്കന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>ദക്ഷിണാഫ്രിക്കന്‍ സമയം</generic>
					<standard>ദക്ഷിണാഫ്രിക്കന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>പശ്ചിമാഫ്രിക്കന്‍ സമയം</standard>
					<daylight>പശ്ചിമാഫ്രിക്കന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>അക്ത്യുബിന്‍സ്ക് സമയം</standard>
					<daylight>അക്ത്യുബിന്‍സ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>അലാസ്ക്ക  സമയം</generic>
					<standard>അലാസ്ക സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>അലാസ്ക പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>അലാസ്ക-ഹവായി സമയം</generic>
					<standard>അലാസ്ക-ഹവായി സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>അലാസ്ക-ഹവായി പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>അല്‍മതി സമയം</standard>
					<daylight>അല്‍മതി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>ആമസോണ്‍ സമയം</standard>
					<daylight>ആമസോണ്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>സെന്‍ട്രല്‍ സമയം</generic>
					<standard>സെന്‍ട്രല്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>സെന്‍ട്രല്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>കിഴക്കന്‍ സമയം</generic>
					<standard>കിഴക്കന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>കിഴക്കന്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>മൌണ്ടന്‍ സമയം</generic>
					<standard>മൌണ്ടന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>മൌണ്ടന്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>പസഫിക് സമയം</generic>
					<standard>പസഫിക് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>പസഫിക് പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>അനാഡിര്‍ സമയം</standard>
					<daylight>അനാഡിര്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>അഖ്തൌ സമയം</standard>
					<daylight>അഖ്തൌ വേനല്‍ക്കാല സമയം</daylight>
				</long>
				<short>
					<standard>AQTT (അഖ്തൌ)</standard>
					<daylight>AQTST (അഖ്തൌ)</daylight>
				</short>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>അഖ്തോബ് സമയം</standard>
					<daylight>അഖ്തോബ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
				<short>
					<standard>AQTT (അഖ്തോബ്)</standard>
					<daylight>AQTST (അഖ്തോബ്)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>അറേബ്യന്‍ സമയം</generic>
					<standard>അറേബ്യന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>അറേബ്യന്‍ പകല്‍ സമയം</daylight>
				</long>
				<short>
					<generic>AT (അറേബ്യന്‍)</generic>
					<standard>AST (അറേബ്യന്‍)</standard>
					<daylight>ADT (അറേബ്യന്‍)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>അര്‍ജന്‍റീന സമയം</standard>
					<daylight>അര്‍ജന്‍റീന വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>പശ്ചിമ അര്‍ജന്‍റീന സമയം</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>അര്‍മേനിയ സമയം</standard>
					<daylight>അര്‍മേനിയ വേനല്‍ക്കാല സമയം</daylight>
				</long>
				<short>
					<standard>AMT (അര്‍മേനിയ)</standard>
					<daylight>AMST (അര്‍മേനിയ)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>അഷ്ഖാബാദ് സമയം</standard>
					<daylight>അഷ്ഖാബാദ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>അറ്റ്ലാന്‍റിക് സമയം</generic>
					<standard>അറ്റ്ലാന്‍റിക് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>അറ്റ്ലാന്‍റിക് പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>സെന്‍ട്രല്‍ ഓസ്ട്രേലിയ സമയം</generic>
					<standard>ഓസ്ട്രേലിയന്‍ സെന്‍ട്രല്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ഓസ്ട്രേലിയന്‍ സെന്‍ട്രല്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>ഓസ്ട്രേലിയന്‍ സെന്‍ട്രല്‍ വെസ്റ്റേണ്‍ സമയം</generic>
					<standard>ഓസ്ട്രേലിയന്‍ സെന്‍ട്രല്‍ വെസ്റ്റേണ്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ഓസ്ട്രേലിയന്‍ സെന്‍ട്രല്‍ വെസ്റ്റേണ്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>ഈസ്റ്റേണ്‍ ഓസ്ട്രേലിയ സമയം</generic>
					<standard>ഓസ്ട്രേലിയന്‍ ഈസ്റ്റേണ്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ഓസ്ട്രേലിയന്‍ ഈസ്റ്റേണ്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>വെസ്റ്റേണ്‍ ഓസ്ട്രേലിയ സമയം</generic>
					<standard>ഓസ്ട്രേലിയന്‍ ‍വെസ്റ്റേണ്‍  സ്റ്റാന്‍ഡേര്‍ഡ്</standard>
					<daylight>ഓസ്ട്രേലിയന്‍ ‍വെസ്റ്റേണ്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>അസര്‍ബയ്ജാന്‍ സമയം</standard>
					<daylight>അസര്‍ബയ്ജാന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>എയ്സോര്‍സ് സമയം</standard>
					<daylight>എയ്സോര്‍സ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>ബാകു സമയം</standard>
					<daylight>ബാകു വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>ബംഗ്ലാദേശ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>ബെറിങ് സമയം</generic>
					<standard>ബെറിങ് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ബെറിങ് പകല്‍ സമയം</daylight>
				</long>
				<short>
					<generic>BT (ബെറിങ് )</generic>
					<standard>BST (ബെറിങ് )</standard>
					<daylight>BDT (ബെറിങ് )</daylight>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>ഭൂട്ടാന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>ബൊളീവിയ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>ബോര്‍ണിയോ സമയം</standard>
					<daylight>ബോര്‍ണിയോ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>ബ്രസീലിയ സമയം</standard>
					<daylight>ബ്രസീലിയ വേനല്‍ക്കാല  സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>ബ്രൂണെ ഡാറുസ്സലാം സമയം</standard>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>കെയ്പ് വെര്‍ഡെ സമയം</standard>
					<daylight>കെയ്പ് വെര്‍ഡെ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>കമോറോ സമയം</generic>
					<standard>കമോറോ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>ചാങ്ബയ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>ചാതം സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ചാതം വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>ചിലി സമയം</standard>
					<daylight>ചിലി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>ചൈന സമയം</generic>
					<standard>ചൈനാ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ചൈന പകല്‍ സമയം</daylight>
				</long>
				<short>
					<generic>CT (ചൈന)</generic>
					<standard>CST (ചൈന)</standard>
					<daylight>CDT (ചൈന)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>ചോയ്ബല്‍സന്‍ സമയം</standard>
					<daylight>ചോയ്ബല്‍സന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>ക്രിസ്മസ് ദ്വീപ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>കൊക്കോസ് ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>കൊളംബിയ സമയം</standard>
					<daylight>കൊളംബിയ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>കുക്ക് ദ്വീപുകള്‍ സമയം</standard>
					<daylight>കുക്ക് ദ്വീപുകള്‍ അര്‍ദ്ധ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>ക്യൂബ സമയം</generic>
					<standard>ക്യൂബ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ക്യൂബ പകല്‍ സമയം</daylight>
				</long>
				<short>
					<generic>CST (ക്യൂബ )</generic>
					<standard>CST (ക്യൂബ)</standard>
					<daylight>CDT (ക്യൂബ )</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>ഡാക്ക സമയം</standard>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>ഡെയ്‌വിസ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>ഡ്യൂമണ്ട് ഡി യൂര്‍വില്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>ദുഷാന്‍ബെ സമയം</standard>
					<daylight>ദുഷാന്‍ബെ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>ഡച്ച് ഗയാന സമയം</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>കിഴക്കന്‍ തിമൂര്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>ഈസ്റ്റര്‍ ദ്വീപ് സമയം</standard>
					<daylight>ഈസ്റ്റര്‍ ദ്വീപ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>ഇക്വഡോര്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>സെന്‍ട്രല്‍ യൂറോപ്യന്‍ സമയം</standard>
					<daylight>സെന്‍ട്രല്‍ യൂറോപ്യന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>കിഴക്കന്‍ യൂറോപ്യന്‍ സമയം</standard>
					<daylight>കിഴക്കന്‍ യൂറോപ്യന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>ഫാക്‌ലാന്‍ഡ് ദ്വീപുകള്‍ സമയം</standard>
					<daylight>ഫാക്‌ലാന്‍ഡ് ദ്വീപുകള്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>ഫിജി സമയം</standard>
					<daylight>ഫിജി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>ഫ്രെഞ്ച് ഗയാന സമയം</standard>
				</long>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>ഫ്രെഞ്ച് സതേണ്‍ ആന്‍ഡ് അന്‍റാര്‍ട്ടിക് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>ഫ്രൂന്‍സ് സമയം</standard>
					<daylight>ഫ്രൂന്‍സ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>ഗാലപ്പാഗോസ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>ഗാന്പിയര്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>ജോര്‍ജ്ജിയ സമയം</standard>
					<daylight>ജോര്‍ജ്ജിയ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>ഗില്‍ബര്‍ട്ട് ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>സെന്‍ട്രല്‍ ഗ്രീന്‍ലാന്‍ഡ് സമയം</standard>
					<daylight>സെന്‍ട്രല്‍ ഗ്രീന്‍ലാന്‍ഡ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>കിഴക്കന്‍ ഗ്രീന്‍ലാന്‍ഡ് സമയം</standard>
					<daylight>കിഴക്കന്‍ ഗ്രീന്‍ലാന്‍ഡ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>പശ്ചിമ ഗ്രീന്‍ലാന്‍ഡ് സമയം</standard>
					<daylight>പശ്ചിമ ഗ്രീന്‍ലാന്‍ഡ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>ഗ്വാം സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
				<short>
					<standard>GST (ഗ്വാം)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>ഗള്‍ഫ് സമയം</generic>
					<standard>ഗള്‍ഫ് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>ഗയാന സമയം</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>ഹവായി-അലൂഷ്യന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>ഹോങ് കോങ് സമയം</standard>
					<daylight>ഹോങ് കോങ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>ഹൌഡ് സമയം</standard>
					<daylight>ഹൌഡ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>ഇന്‍‌ഡ്യ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>ഇന്‍ഡ്യന്‍ മഹാസമുദ്ര സമയം</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>ഇന്‍ഡോചൈന സമയം</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>സെന്‍ട്രല്‍ ഇന്‍ഡോനേഷ്യ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>കിഴക്കന്‍ ഇന്‍ഡോനേഷ്യ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>പശ്ചിമ ഇന്‍ഡോനേഷ്യ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>ഇറാന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ഇറാന്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>ഇര്‍കസ്ക് സമയം</standard>
					<daylight>ഇര്‍കസ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>ഇസ്രായേല്‍ സമയം</generic>
					<standard>ഇസ്രായേല്‍  സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ഇസ്രായേല്‍ പകല്‍ സമയം</daylight>
				</long>
				<short>
					<standard>IST (ഇസ്രായേല്‍)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>ജപ്പാന്‍ സമയം</generic>
					<standard>ജപ്പാന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ജപ്പാന്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>പെട്രോപാവ്‌ലോസ്ക് കംചാസ്കി സമയം</standard>
					<daylight>പെട്രോപാവ്‌ലോസ്ക് കംചാസ്കി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>കറാച്ചി സമയം</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>കാഷ്ഗര്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>കിഴക്കന്‍ കസാഖ്സ്ഥാന്‍ സമയം</generic>
					<standard>കിഴക്കന്‍ കസാഖ്സ്ഥാന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>പടിഞ്ഞാറന്‍ കസാഖ്സ്ഥാന്‍ സമയം</generic>
					<standard>പടിഞ്ഞാറന്‍ കസാഖ്സ്ഥാന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>കിസിലോര്‍ഡ സമയം</standard>
					<daylight>കിസിലോര്‍ഡ വേ‡നല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>കൊറിയന്‍ സമയം</generic>
					<standard>കൊറിയന്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>കൊറിയന്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>കൊസ്റേ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>ക്രാസ്നോയാഴ്സ്ക് സമയം</standard>
					<daylight>ക്രാസ്നോയാഴ്സ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>കുയ്ബൈഷെവ് സമയം</standard>
					<daylight>കുയ്ബൈഷെവ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>ക്വാജലെയ്ന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>കിര്‍ഗിസ്ഥാന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>ലങ്ക സമയം</standard>
				</long>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>ലൈന്‍ ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>ലോങ്-ഷു സമയം</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>ലോര്‍ഡ് ഹോവ് സമയം</generic>
					<standard>ലോര്‍ഡ് ഹോവ് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ലോര്‍ഡ് ഹോവ് പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>മകൌ സമയം</standard>
					<daylight>മകൌ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>മഗാഡന്‍ സമയം</standard>
					<daylight>മഗാഡന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>മലയ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>മലേഷ്യ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>മാലിദ്വീപ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>മാര്‍ക്യുസാസ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>മാര്‍ഷല്‍ ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>മൌറിഷ്യസ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>മാവ്സണ്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>യുലാന്‍ ബാറ്റര്‍ സമയം</standard>
					<daylight>യുലാന്‍ ബാറ്റര്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>മോസ്കോ സമയം</generic>
					<standard>മോസ്കോ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>മോസ്കോ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>മ്യാന്‍മാര്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>നൌറു സമയം</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>നേപ്പാള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>ന്യൂ കാലിഡോണിയ സമയം</standard>
					<daylight>ന്യൂ കാലിഡോണിയ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>ന്യൂസീലന്‍ഡ് സമയം</generic>
					<standard>ന്യൂസീലന്‍ഡ് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ന്യൂസീലന്‍ഡ് പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>ന്യൂഫൌണ്ട്‌ലാന്‍ഡ് സമയം</generic>
					<standard>ന്യൂഫൌണ്ട്‌ലാന്‍ഡ് സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>ന്യൂഫൌണ്ട്‌ലാന്‍ഡ് പകല്‍‌ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>നിയു സമയം</standard>
				</long>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>നോര്‍ഫോക് ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>ഫെര്‍ണാണ്ടോ ഡി നൊറോന സമയം</standard>
					<daylight>ഫെര്‍ണാണ്ടോ ഡി നൊറോന വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>നോര്‍ത്ത് മറിയാനാ ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>നോവോസിബിര്‍സ്ക് സമയം</standard>
					<daylight>നോവോസിബിര്‍സ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>ഓംസ്ക് സമയം</standard>
					<daylight>ഓംസ്ക്  വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>പാകിസ്ഥാന്‍ സമയം</standard>
					<daylight>പാകിസ്ഥാന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>പലൌ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>പാപ്യു ന്യൂ ഗിനിയ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>പരാഗ്വേ സമയം</standard>
					<daylight>പരാഗ്വേ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>പെറു സമയം</standard>
					<daylight>പെറു വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>ഫിലിപ്പീന്‍ സമയം</standard>
					<daylight>ഫിലിപ്പീന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>ഫീനിക്സ് ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>പിയറി ആന്‍ഡ് മിക്വിലോണ്‍ സമയം</generic>
					<standard>പിയറി ആന്‍ഡ് മിക്വിലോണ്‍ സ്റ്റാന്‍ഡേര്‍ഡ്സമയം</standard>
					<daylight>പിയറി ആന്‍ഡ് മിക്വിലോണ്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>പിറ്റ്കെയ്ന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>പൊനാപ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>ഖിസിലോര്‍ഡ സമയം</standard>
					<daylight>ഖിസിലോര്‍ഡ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>റീയൂണിയന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>റൊതീറ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>സഖാലിന്‍ സമയം</standard>
					<daylight>സഖാലിന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>സമാറ സമയം</standard>
					<daylight>സമാറ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>സമര്‍കന്ദ് സമയം</standard>
					<daylight>സമര്‍കന്ദ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
				<short>
					<standard>SAMT (സമര്‍കന്ദ് )</standard>
					<daylight>SAMST (സമര്‍കന്ദ് )</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>സമോവാ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>സെയ്ഷെല്‍സ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>ഷെവ്ചെങ്കോ സമയം</standard>
					<daylight>ഷെവ്ചെങ്കോ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>സിങ്കപ്പൂര്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>സോളമന്‍ ദ്വീപുകള്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>ദക്ഷിണ ജോര്‍ജ്ജിയ സമയം</standard>
				</long>
				<short>
					<standard>GST (ദക്ഷിണ ജോര്‍ജ്ജിയ)</standard>
				</short>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>സൂറിനാം സമയം</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>സ്‌വേഡ്‌ലോവ്സ്ക് സമയം</standard>
					<daylight>സ്‌വേഡ്‌ലോവ്സ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>സ്യോവ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>തഹിതി സമയം</standard>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>തജികിസ്ഥാന്‍ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>താഷ്കന്ദ് സമയം</standard>
					<daylight>താഷ്കന്ദ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>തിബിലീസി സമയം</standard>
					<daylight>തിബിലീസി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>റ്റോക്കിലൌ സമയം</standard>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>റ്റോംഗാ സമയം</standard>
					<daylight>റ്റോംഗാ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>ട്രക്ക് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>തുര്‍ക്കി സമയം</standard>
					<daylight>തുര്‍ക്കി വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>തുര്‍ക്ക്മെനിസ്ഥാന്‍ സമയം</standard>
					<daylight>തുര്‍ക്ക്മെനിസ്ഥാന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>തുവാലു സമയം</standard>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>യുറാല്‍സ്ക് സമയം</standard>
					<daylight>യുറാല്‍സ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>ഉറുഗ്വെ സമയം</standard>
					<daylight>ഉറുഗ്വെ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>ഉറുംഖി വേനല്‍‌ക്കാല സമയം</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>ഉസ്ബക്കിസ്ഥാന്‍ സമയം</standard>
					<daylight>ഉസ്ബക്കിസ്ഥാന്‍ വേനല്‍‌ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>വന്വാതു സമയം</standard>
					<daylight>വന്വാതു വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>വെനസ്വേല സമയം</standard>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>വ്‌ളാഡിവോസ്റ്റോക് സമയം</standard>
					<daylight>വ്‌ളാഡിവോസ്റ്റോക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>വോള്‍ഗോഗ്രാഡ് സമയം</standard>
					<daylight>വോള്‍ഗോഗ്രാഡ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>വോസ്റ്റോക് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>വെയ്ക് ദ്വീപ് സമയം</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>വാലിസ് ആന്‍ഡ് ഫ്യൂചുന സമയം</standard>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>യാകസ്ക് സമയം</standard>
					<daylight>യാകസ്ക് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>യെക്കാറ്ററിന്‍ബര്‍ഗ് സമയം</standard>
					<daylight>യെക്കാറ്ററിന്‍ബര്‍ഗ് വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>യെരെവാന്‍ സമയം</standard>
					<daylight>യെരെവാന്‍ വേനല്‍ക്കാല സമയം</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>യൂക്കോണ്‍ സമയം</generic>
					<standard>യൂക്കോണ്‍ സ്റ്റാന്‍ഡേര്‍ഡ് സമയം</standard>
					<daylight>യൂക്കണ്‍ പകല്‍ സമയം</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>സംഖ്യയല്ല</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##,##0.00¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>അന്‍ഡോറന്‍ പെസെയ്റ്റ</displayName>
				<displayName count="one">അന്‍ഡോറന്‍ പെസെയ്റ്റ</displayName>
				<displayName count="other">അന്‍ഡോറന്‍ പെസെയ്റ്റാസ്</displayName>
			</currency>
			<currency type="AED">
				<displayName>യു.എ.ഇ. ദിര്‍ഹം</displayName>
				<displayName count="one">യു.എ.ഇ. ദിര്‍ഹം</displayName>
				<displayName count="other">യു.എ.ഇ. ദിര്‍ഹംസ്</displayName>
			</currency>
			<currency type="AFA">
				<displayName>അഫ്ഘാനി (1927-2002)</displayName>
				<displayName count="one">അഫ്ഘാനി (AFA)</displayName>
				<displayName count="other">അഫ്ഘാനിസ് (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>അഫ്ഘാനി</displayName>
				<displayName count="one">അഫ്ഘാനി</displayName>
				<displayName count="other">അഫ്ഘാനിസ്</displayName>
				<symbol>അഫ്</symbol>
			</currency>
			<currency type="ALL">
				<displayName>അല്‍ബേനിയന്‍ ലെക്</displayName>
				<displayName count="one">അല്‍ബേനിയന്‍ ലെക്</displayName>
				<displayName count="other">അല്‍ബേനിയന്‍ ലെക്സ്</displayName>
				<symbol>ലെക്</symbol>
			</currency>
			<currency type="AMD">
				<displayName>അര്‍മേനിയന്‍ ഡ്രാം</displayName>
				<displayName count="one">അര്‍മേനിയന്‍ ഡ്രാം</displayName>
				<displayName count="other">അര്‍മേനിയന്‍ ഡ്രാംസ്</displayName>
				<symbol>ഡ്രാം</symbol>
			</currency>
			<currency type="ANG">
				<displayName>നെതര്‍ലന്‍ഡ്സ് ആന്‍റിലന്‍ ഗില്‍ഡര്‍</displayName>
				<displayName count="one">നെതര്‍ലന്‍ഡ്സ് ആന്‍ഡിലന്‍ ഗില്‍ഡര്‍</displayName>
				<displayName count="other">നെതര്‍ലന്‍ഡ്സ് ആന്‍ഡിലന്‍ ഗില്‍ഡേഴ്സ്</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>അംഗോളന്‍ ‍ക്വാന്‍സ</displayName>
				<displayName count="one">അംഗോളന്‍ ക്വാന്‍സ</displayName>
				<displayName count="other">അംഗോളന്‍ ക്വാന്‍സാസ്</displayName>
			</currency>
			<currency type="AOK">
				<displayName>അംഗോളന്‍ ‍ക്വാന്‍സ (1977-1990)</displayName>
				<displayName count="one">അംഗോളന്‍ ക്വാന്‍സാ (AOK)</displayName>
				<displayName count="other">അംഗോളന്‍ ക്വാന്‍സാസ് (AOK</displayName>
			</currency>
			<currency type="AON">
				<displayName>അംഗോളന്‍ ‍ന്യൂ ക്വാന്‍സ (1990-2000)</displayName>
				<displayName count="one">അംഗോളന്‍ ന്യൂ ക്വാന്‍സാ (AON)</displayName>
				<displayName count="other">അംഗോളന്‍ ന്യൂ ക്വാന്‍സാസ് (AON)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>അംഗോളന്‍ ‍ക്വാന്‍സ റിയാജസ്റ്റാഡോ (1995-1999)</displayName>
				<displayName count="one">അംഗോളന്‍ ക്വാന്‍സ റീഅഡ്ജസ്റ്റാഡോ (AOR)</displayName>
				<displayName count="other">അംഗോളന്‍ ക്വാന്‍സാസ് റീഅഡ്ജസ്റ്റാഡോ (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>അര്‍ജന്‍റീന്‍ ഓസ്ട്രല്‍</displayName>
				<displayName count="one">അര്‍ജന്‍റീന്‍  ഓസ്ട്രല്‍</displayName>
				<displayName count="other">അര്‍ജന്‍റീന്‍  ഓസ്ട്രല്‍സ്</displayName>
			</currency>
			<currency type="ARP">
				<displayName>അര്‍ജന്‍റീന്‍ പെയ്സോ (1983-1985)</displayName>
				<displayName count="one">അര്‍ജന്‍റീന്‍ പെയ്സോ (ARP)</displayName>
				<displayName count="other">അര്‍ജന്‍റീന്‍ പെയ്സോസ് (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>അര്‍ജന്‍റീന്‍ പെയ്സോ</displayName>
				<displayName count="one">അര്‍ജന്‍റീന്‍ പെയ്സോ</displayName>
				<displayName count="other">അര്‍ജന്‍റീന്‍ പെയ്സോസ്</displayName>
				<symbol>അര്‍ജ്$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>ഓസ്ട്രേലിയന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="one">ഓസ്ട്രിയന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="other">ഓസ്ട്രിയന്‍ ഷില്ലിംഗ്സ്</displayName>
			</currency>
			<currency type="AUD">
				<displayName>ആസ്ട്രേലിയന്‍ ഡോളര്‍</displayName>
				<displayName count="one">ഓസ്ട്രേലിയന്‍ ഡോളര്‍</displayName>
				<displayName count="other">ഓസ്ട്രേലിയന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>അറൂബന്‍ ഗില്‍ഡര്‍</displayName>
				<displayName count="one">അറൂബന്‍ ഗില്‍ഡര്‍</displayName>
				<displayName count="other">അറൂബന്‍ ഗില്‍ഡേഴ്സ്</displayName>
			</currency>
			<currency type="AZM">
				<displayName>അസര്‍ബയ്ജാനിയന്‍ മനത് (1993-2006)</displayName>
				<displayName count="one">അസര്‍ബയ്ജാന്‍ മനത്‌ (AZM)</displayName>
				<displayName count="other">അസര്‍ബയ്ജാന്‍ മനത്‌സ് (AZM)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>അസര്‍ബയ്ജാനിയന്‍ മനത്</displayName>
				<displayName count="one">അസര്‍ബയ്ജാന്‍ മനത്</displayName>
				<displayName count="other">അസര്‍ബയ്ജാന്‍ മനത്‌സ്</displayName>
			</currency>
			<currency type="BAD">
				<displayName>ബോസ്നിയ-ഹെര്‍സഗോവിന ദിനാര്‍</displayName>
				<displayName count="one">ബോസ്നിയ ഹെര്‍സഗോവിന ദിനാര്‍</displayName>
				<displayName count="other">ബോസ്നിയ ഹെര്‍സഗോവിന ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="BAM">
				<displayName>ബോസ്നിയ-ഹെര്‍സഗോവിന കണ്‍വേര്‍ട്ടിബിള്‍ മാര്‍ക്ക്</displayName>
				<displayName count="one">ബോസ്നിയ ഹെര്‍സഗോവിന കണ്‍വേര്‍ട്ടിബിള്‍ മാര്‍ക്ക്</displayName>
				<displayName count="other">ബോസ്നിയ ഹെര്‍സഗോവിന കണ്‍വേര്‍ട്ടിബിള്‍ മാര്‍ക്സ്</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>ബാര്‍ബഡോസ് ഡോളര്‍</displayName>
				<displayName count="one">ബാര്‍ബഡോസ് ഡോളര്‍</displayName>
				<displayName count="other">ബാര്‍ബഡോസ് ഡോളേഴ്സ്</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>ബംഗ്ലാദേശി ടാക്ക</displayName>
				<displayName count="one">ബംഗ്ലാദേശ് താക്കാ</displayName>
				<displayName count="other">ബംഗ്ലാദേശ് താക്കാസ്</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>ബെല്‍ജിയന്‍ ഫ്രാങ്ക് (കൈമാറ്റം ചെയ്യാവുന്നത്)</displayName>
				<displayName count="one">ബെല്‍ജിയന്‍ ഫ്രാങ്ക് (കൈമാറ്റം ചെയ്യാവുന്നത്)</displayName>
				<displayName count="other">ബെല്‍ജിയന്‍ ഫ്രാങ്ക്സ് (കൈമാറ്റം ചെയ്യാവുന്നത്)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>ബെല്‍ജിയന്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="one">ബെല്‍ജിയന്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="other">ബെല്‍ജിയന്‍ ഫ്രാങ്ക്സ്</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>ബല്‍ജിയന്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="one">ബെല്‍ജിയന്‍ ഫ്രാങ്ക് (ഫിനാന്‍ഷ്യല്‍)</displayName>
				<displayName count="other">ബെല്‍ജിയന്‍ ഫ്രാങ്ക്സ്(ഫിനാന്‍ഷ്യല്‍)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>ബള്‍ഗേറിയന്‍ ഹാര്‍ഡ് ലെവ്</displayName>
				<displayName count="one">ബള്‍ഗേറിയന്‍ ഹാര്‍ഡ് ലെവ്</displayName>
				<displayName count="other">ബള്‍ഗേറിയന്‍ ഹാര്‍ഡ് ലെവ്സ്</displayName>
				<symbol>ലെവ്</symbol>
			</currency>
			<currency type="BGN">
				<displayName>ബള്‍ഗേറിയന്‍ ന്യൂലവ്</displayName>
				<displayName count="one">ബള്‍ഗേറിയന്‍ ന്യൂ ലെവ്</displayName>
				<displayName count="other">ബള്‍ഗേറിയന്‍ ന്യൂ ലെവ്സ്</displayName>
			</currency>
			<currency type="BHD">
				<displayName>ബഹറിന്‍ ദിനാര്‍</displayName>
				<displayName count="one">ബഹ്റൈന്‍ ദിനാര്‍</displayName>
				<displayName count="other">ബഹ്റൈന്‍ ദിനാര്‍സ്</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>ബുറുണ്ടി ഫ്രാങ്ക്</displayName>
				<displayName count="one">ബുറുണ്ടി ഫ്രാങ്ക്</displayName>
				<displayName count="other">ബുറുണ്ടി ഫ്രാങ്ക്സ്</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>ബെര്‍മുഡന്‍ ഡോളര്‍</displayName>
				<displayName count="one">ബെര്‍മുഡന്‍ ഡോളര്‍</displayName>
				<displayName count="other">ബെര്‍മുഡന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>ബെര്‍$</symbol>
			</currency>
			<currency type="BND">
				<displayName>ബ്രൂണെ ഡോളര്‍</displayName>
				<displayName count="one">ബ്രൂണെ ഡോളര്‍</displayName>
				<displayName count="other">ബ്രൂണെ ഡോളറുകള്‍</displayName>
			</currency>
			<currency type="BOB">
				<displayName>ബൊളീവിയാനോ</displayName>
				<displayName count="one">ബൊളീവിയാനോ</displayName>
				<displayName count="other">ബൊളീവിയാനോസ്</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>ബൊളീവിയന്‍  പെയ്സോ</displayName>
				<displayName count="one">ബൊളീവിയന്‍ പെയ്സോ</displayName>
				<displayName count="other">ബൊളീവിയന്‍ പെയ്സോസ്</displayName>
			</currency>
			<currency type="BOV">
				<displayName>ബൊളീവിയന്‍  എംവിഡോള്‍</displayName>
				<displayName count="one">ബൊളീവിയന്‍ എംവിഡോ</displayName>
				<displayName count="other">ബൊളീവിയന്‍ എംവിഡോസ്</displayName>
			</currency>
			<currency type="BRB">
				<displayName>ബ്രസീലിയന്‍  ക്രുസെയ്റോ നോവോ (1967-1986)</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ ക്രുസെയ്റോ നോവോ (BRB)</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ ക്രുസെയ്റോസ് നോവോ (BRB)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>ബ്രസീലിയന്‍ ക്രുസാഡോ</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ ക്രുസാഡോ</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ ക്രുസാഡോസ്</displayName>
			</currency>
			<currency type="BRE">
				<displayName>ബ്രസീലിയന്‍  ക്രുസെയ്റോ (1990-1993)</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ ക്രുസെയ്റോ (BRE)</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ ക്രുസെയ്റോസ് (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ബ്രസീലിയന്‍ റിയാല്‍</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ റിയാല്‍</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ റിയാല്‍സ്</displayName>
			</currency>
			<currency type="BRN">
				<displayName>ബ്രസീലിയന്‍ ക്രുസാഡോ നോവോ</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ ക്രുസാഡോ നോവോ</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ ക്രുസാഡോ നോവോസ്</displayName>
			</currency>
			<currency type="BRR">
				<displayName>ബ്രസീലിയന്‍  ക്രുസെയ്റോ</displayName>
				<displayName count="one">ബ്രസീലിയന്‍ ക്രുസെയ്റോ</displayName>
				<displayName count="other">ബ്രസീലിയന്‍ ക്രുസെയ്റോസ്</displayName>
			</currency>
			<currency type="BSD">
				<displayName>ബഹാമിയന്‍  ഡോളര്‍</displayName>
				<displayName count="one">ബഹാമിയന്‍ ഡോളര്‍</displayName>
				<displayName count="other">ബഹാമിയന്‍ ഡോളേഴ്സ്</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ഭൂട്ടാന്‍ എന്‍ഗള്‍ട്രം</displayName>
				<displayName count="one">ഭൂട്ടാന്‍ എന്‍ഗള്‍ട്രം</displayName>
				<displayName count="other">ഭൂട്ടാന്‍ എന്‍ഗള്‍ട്രംസ്</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>ബര്‍മീസ് ചാറ്റ്</displayName>
				<displayName count="one">ബര്‍മീസ് ചാറ്റ്</displayName>
				<displayName count="other">ബര്‍മീസ് ചാറ്റ്സ്</displayName>
			</currency>
			<currency type="BWP">
				<displayName>ബോട്സ്വാനന്‍ പ്യൂല</displayName>
				<displayName count="one">ബോട്സ്വാനന്‍ പ്യൂല</displayName>
				<displayName count="other">ബോട്സ്വാനന്‍ പ്യൂലാസ്</displayName>
			</currency>
			<currency type="BYB">
				<displayName>ബെലാറഷ്യന്‍ ന്യൂ റൂബിള്‍ (1994-1999)</displayName>
				<displayName count="one">ബെലാറഷ്യന്‍ ന്യൂ റൂബിള്‍ (BYB)</displayName>
				<displayName count="other">ബെലാറഷ്യന്‍ ന്യൂ റൂബിള്‍സ് (BYB)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>ബെലാറഷ്യന്‍ റൂബിള്‍</displayName>
				<displayName count="one">ബെലാറഷ്യന്‍ റൂബിള്‍</displayName>
				<displayName count="other">ബെലാറഷ്യന്‍ റൂബിള്‍സ്</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>ബെലീസ് ഡോളര്‍</displayName>
				<displayName count="one">ബെലീസ് ഡോളര്‍</displayName>
				<displayName count="other">ബെലീസ് ഡോളേഴ്സ്</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>കനേഡിയന്‍ ഡോളര്‍</displayName>
				<displayName count="one">കനേഡിയന്‍ ഡോളര്‍</displayName>
				<displayName count="other">കനേഡിയന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>കോങ്കളീസ് ഫ്രാങ്ക് കോങ്കൊളൈസ്</displayName>
				<displayName count="one">കോങ്കളീസ് ഫ്രാങ്ക് കോങ്കൊളൈസ്</displayName>
				<displayName count="other">കോങ്കളീസ് ഫ്രാങ്ക്സ് കോങ്കൊളൈസ്</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR യൂറോ</displayName>
				<displayName count="one">WIR യൂറോ</displayName>
				<displayName count="other">WIR യൂറോസ്</displayName>
			</currency>
			<currency type="CHF">
				<displayName>സ്വിസ് ഫ്രാങ്ക്</displayName>
				<displayName count="one">സ്വിസ് ഫ്രാങ്ക്</displayName>
				<displayName count="other">സ്വിസ് ഫ്രാങ്ക്സ്</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR ഫ്രാങ്ക്</displayName>
				<displayName count="one">WIR ഫ്രാങ്ക്</displayName>
				<displayName count="other">WIR ഫ്രാങ്ക്സ്</displayName>
			</currency>
			<currency type="CLF">
				<displayName>ചിലിയന്‍ യൂണിഡാഡ്സ് ഡി ഫോമെന്‍റോ</displayName>
				<displayName count="one">ചിലിയന്‍ യൂണിഡാഡ്സ് ഡി ഫോമെന്‍റോ</displayName>
				<displayName count="other">ചിലിയന്‍ യൂണിഡാഡ്സ് ഡി ഫോമെന്‍റോസ്</displayName>
			</currency>
			<currency type="CLP">
				<displayName>ചിലിയന്‍ പെസോ</displayName>
				<displayName count="one">ചിലിയന്‍ പെസോ</displayName>
				<displayName count="other">ചിലിയന്‍ പെസോസ്</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>ചൈനീസ് യുവാന്‍</displayName>
				<displayName count="one">ചൈനീസ് യുവാന്‍</displayName>
				<displayName count="other">ചൈനീസ് യുവാന്‍</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>കൊളംബിയന്‍ പെസോ</displayName>
				<displayName count="one">കൊളംബിയന്‍ പെസോ</displayName>
				<displayName count="other">കൊളംബിയന്‍ പെസോസ്</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>യൂണിഡാഡ് ഡി വാലര്‍ റിയല്‍</displayName>
				<displayName count="one">യൂണിഡാഡ് ഡി വാലര്‍ റിയല്‍</displayName>
				<displayName count="other">യൂണിഡാഡ് ഡി വാലര്‍ റിയല്‍സ്</displayName>
			</currency>
			<currency type="CRC">
				<displayName>കോസ്റ്റാ റിക്കന്‍ കോളന്‍</displayName>
				<displayName count="one">കോസ്റ്റാ റിക്കന്‍ കോളന്‍</displayName>
				<displayName count="other">കോസ്റ്റാ റിക്കന്‍ കോളന്‍സ്</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>പ്രാചീന സെര്‍ബിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">പ്രാചീന സെര്‍ബിയന്‍ ദിനാര്‍</displayName>
				<displayName count="other">പ്രാചീന സെര്‍ബിയന്‍ ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="CSK">
				<displayName>ചെക്കോസ്ലൊവാക്ക് ഹാര്‍ഡ് കൊരൂന</displayName>
				<displayName count="one">ചെക്കോസ്ലൊവാക്ക് ഹാര്‍ഡ് കൊരൂന</displayName>
				<displayName count="other">ചെക്കോസ്ലൊവാക്ക് ഹാര്‍ഡ് കൊരൂനാസ്</displayName>
			</currency>
			<currency type="CUP">
				<displayName>ക്യൂബന്‍ പെസോ</displayName>
				<displayName count="one">ക്യൂബന്‍ പെസോ</displayName>
				<displayName count="other">ക്യൂബന്‍ പെസോസ്</displayName>
			</currency>
			<currency type="CVE">
				<displayName>കെയ്പ് വെര്‍ഡെ എസ്ക്യുഡോ</displayName>
				<displayName count="one">കെയ്പ് വെര്‍ഡെ എസ്ക്യുഡോ</displayName>
				<displayName count="other">കെയ്പ് വെര്‍ഡെ എസ്ക്യുഡോസ്</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>സൈപ്രസ് പൌണ്ട്</displayName>
				<displayName count="one">സൈപ്രസ് പൌണ്ട്</displayName>
				<displayName count="other">സൈപ്രസ് പൌണ്ട്സ്</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>ചെക്ക് റിപ്പബ്ലിക് കൊരൂന</displayName>
				<displayName count="one">ചെക്ക് റിപ്പബ്ലിക് കൊരൂന</displayName>
				<displayName count="other">ചെക്ക് റിപ്പബ്ലിക് കൊരൂനാസ്</displayName>
			</currency>
			<currency type="DDM">
				<displayName>കിഴക്കന്‍  ജര്‍മന്‍ ഓസ്റ്റ്മാര്‍ക്ക്</displayName>
				<displayName count="one">കിഴക്കന്‍ ജര്‍മന്‍ ഓസ്റ്റ്മാര്‍ക്ക്</displayName>
				<displayName count="other">കിഴക്കന്‍ ജര്‍മന്‍ ഓസ്റ്റ്മാര്‍ക്ക്സ്</displayName>
			</currency>
			<currency type="DEM">
				<displayName>ജര്‍മന്‍ മാര്‍ക്ക്</displayName>
				<displayName count="one">ജര്‍മന്‍ മാര്‍ക്ക്</displayName>
				<displayName count="other">ജര്‍മന്‍ മാര്‍ക്ക്സ്</displayName>
			</currency>
			<currency type="DJF">
				<displayName>ജീബോട്ടി ഫ്രാങ്ക്</displayName>
				<displayName count="one">ജീബോട്ടി ഫ്രാങ്ക്</displayName>
				<displayName count="other">ജീബോട്ടി ഫ്രാങ്ക്സ്</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName count="one">ഡാനിഷ് ക്രോണ്‍</displayName>
				<displayName count="other">ഡാനിഷ് ക്രോണ്‍സ്</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>ഡൊമിനിക്കന്‍ പെയ്സോ</displayName>
				<displayName count="one">ഡൊമിനിക്കന്‍ പെയ്സോ</displayName>
				<displayName count="other">ഡൊമിനിക്കന്‍ പെയ്സോസ്</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>അള്‍ജീരിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">അള്‍ജീരിയന്‍ ദിനാര്‍</displayName>
				<displayName count="other">അള്‍ജീരിയന്‍ ദിനാര്‍സ്</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>ഇക്വഡോര്‍ സൂക്രേ</displayName>
				<displayName count="one">ഇക്വഡോര്‍ സൂക്രേ</displayName>
				<displayName count="other">ഇക്വഡോര്‍ സൂക്രേസ്</displayName>
			</currency>
			<currency type="ECV">
				<displayName>ഇക്വഡോര്‍ യൂണിഡാഡ് വാലര്‍ കോണ്‍സ്റ്റന്‍റെ (UVC)</displayName>
				<displayName count="one">ഇക്വഡോര്‍ യൂണിഡാഡ് ഡി വാലര്‍ കോണ്‍സ്റ്റന്‍റെ (UVC)</displayName>
				<displayName count="other">ഇക്വഡോര്‍ യൂണിഡാഡ്സ് ഡി വാലര്‍ കോണ്‍സ്റ്റന്‍റെ (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>എസ്റ്റൌനിയന്‍ ക്രൂണ്‍</displayName>
				<displayName count="one">എസ്റ്റൌനിയന്‍ ക്രൂണ്‍</displayName>
				<displayName count="other">എസ്റ്റൌനിയന്‍ ക്രൂണ്‍സ്</displayName>
			</currency>
			<currency type="EGP">
				<displayName>ഈജിപ്ഷ്യന്‍ പൌണ്ട്</displayName>
				<displayName count="one">ഈജിപ്ഷ്യന്‍ പൌണ്ട്</displayName>
				<displayName count="other">ഈജിപ്ഷ്യന്‍ പൌണ്ട്സ്</displayName>
			</currency>
			<currency type="EQE">
				<displayName>എക്വീലെ</displayName>
				<displayName count="one">എക്വീലെ</displayName>
				<displayName count="other">എക്വീലെസ്</displayName>
			</currency>
			<currency type="ERN">
				<displayName>എറിത്രിയന്‍ നക്ഫ</displayName>
				<displayName count="one">എറിത്രിയന്‍ നക്ഫ</displayName>
				<displayName count="other">എറിത്രിയന്‍ നക്ഫാസ്</displayName>
			</currency>
			<currency type="ESA">
				<displayName>സ്പാനിഷ് പസെയ്റ്റ (A അക്കൌണ്ട്)</displayName>
				<displayName count="one">സ്പാനിഷ് പസെയ്റ്റ (A അക്കൌണ്ട്)</displayName>
				<displayName count="other">സ്പാനിഷ് പസെയ്റ്റാസ് (A അക്കൌണ്ട്)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>സ്പാനിഷ് പസെയ്റ്റ (കൈമാറ്റം ചെയ്യാവുന്ന അക്കൌണ്ട്)</displayName>
				<displayName count="one">സ്പാനിഷ് പസെയ്റ്റ (കൈമാറ്റം ചെയ്യാവുന്ന അക്കൌണ്ട്)</displayName>
				<displayName count="other">സ്പാനിഷ് പസെയ്റ്റാസ് (കൈമാറ±±±്റം ചെയ്യാവുന്ന അക്കൌണ്ട്)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>സ്പാനിഷ് പസെയ്റ്റ</displayName>
				<displayName count="one">സ്പാനിഷ് പസെയ്റ്റ</displayName>
				<displayName count="other">സ്പാനിഷ് പസെയ്റ്റാസ്</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>എത്യോപ്പിയന്‍ ബിര്‍</displayName>
				<displayName count="one">എത്യോപ്പിയന്‍ ബിര്‍</displayName>
				<displayName count="other">എത്യോപ്പിയന്‍ ബിര്‍സ്</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>യൂറോ</displayName>
				<displayName count="one">യൂറോ</displayName>
				<displayName count="other">യൂറോസ്</displayName>
			</currency>
			<currency type="FIM">
				<displayName>ഫിന്നിഷ് മാര്‍ക്ക</displayName>
				<displayName count="one">ഫിന്നിഷ് മാര്‍ക്ക</displayName>
				<displayName count="other">ഫിന്നിഷ് മാര്‍ക്കാസ്</displayName>
			</currency>
			<currency type="FJD">
				<displayName>ഫിജി ഡോളര്‍</displayName>
				<displayName count="one">ഫിജി ഡോളര്‍</displayName>
				<displayName count="other">ഫിജി ഡോളേഴ്സ്</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>ഫോക്‌ലാന്‍ഡ് ദ്വീപുകളുടെ പൌണ്ട്</displayName>
				<displayName count="one">ഫോക്‌ലാന്‍ഡ് ദ്വീപുകളുടെ പൌണ്ട്</displayName>
				<displayName count="other">ഫോക്‌ലാന്‍ഡ് ദ്വീപുകളുടെ പൌണ്ട്സ്</displayName>
			</currency>
			<currency type="FRF">
				<displayName>ഫ്രാങ്ക്</displayName>
				<displayName count="one">ഫ്രെഞ്ച് ഫ്രാങ്ക്</displayName>
				<displayName count="other">ഫ്രെഞ്ച് ഫ്രാങ്ക്സ്</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെര്‍ലിംങ്</displayName>
				<displayName count="one">ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെര്‍ലിംഗ്</displayName>
				<displayName count="other">ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെര്‍ലിംഗ്സ്</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>ജോര്‍‍ജ്ജിയന്‍  ക്യൂപോണ്‍ ലാരിറ്റ്</displayName>
				<displayName count="one">ജോര്‍‍ജ്ജിയന്‍ ക്യൂപോണ്‍ ലാരിറ്റ്</displayName>
				<displayName count="other">ജോര്‍‍ജ്ജിയന്‍ ക്യൂപോണ്‍ ലാരിറ്റ്സ്</displayName>
			</currency>
			<currency type="GEL">
				<displayName>ജോര്‍‍ജ്ജിയന്‍  ലാരി</displayName>
				<displayName count="one">ജോര്‍‍ജ്ജിയന്‍ ലാരി</displayName>
				<displayName count="other">ജോര്‍‍ജ്ജിയന്‍ ലാരിസ്</displayName>
				<symbol>ലാരി</symbol>
			</currency>
			<currency type="GHC">
				<displayName>ഘാന കെഡി (1979-2007)</displayName>
				<displayName count="one">ഘാന കെഡി (GHC)</displayName>
				<displayName count="other">ഘാന കെഡിസ് (GHC)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>ഘാന കെഡി</displayName>
				<displayName count="one">ഘാന കെഡി</displayName>
				<displayName count="other">ഘാന കെഡിസ്</displayName>
				<symbol>GH¢</symbol>
			</currency>
			<currency type="GIP">
				<displayName>ഗിബ്രാല്‍ട്ടര്‍ പൌണ്ട്</displayName>
				<displayName count="one">ഗിബ്രാല്‍ട്ടര്‍ പൌണ്ട്</displayName>
				<displayName count="other">ഗിബ്രാല്‍ട്ടര്‍ പൌണ്ട്സ്</displayName>
			</currency>
			<currency type="GMD">
				<displayName>ഗാന്പിയ ദലാസി</displayName>
				<displayName count="one">ഗാന്പിയ ദലാസി</displayName>
				<displayName count="other">ഗാന്പിയ ദലാസിസ്</displayName>
			</currency>
			<currency type="GNF">
				<displayName>ഗിനിയ ഫ്രാങ്ക്</displayName>
				<displayName count="one">ഗിനിയ ഫ്രാങ്ക്</displayName>
				<displayName count="other">ഗിനിയ ഫ്രാങ്ക്സ്</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>ഗിനിയ സൈലി</displayName>
				<displayName count="one">ഗിനിയ സൈലി</displayName>
				<displayName count="other">ഗിനിയ സൈലിസ്</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ഇക്വിറ്റോറിയല്‍ ഗിനിയ എക്വീലെ ഗിനിയാന</displayName>
				<displayName count="one">ഇക്വിറ്റോറിയല്‍ ഗിനി എക്വീലെ</displayName>
				<displayName count="other">ഇക്വിറ്റോറിയല്‍ ഗിനി എക്വീലെ</displayName>
			</currency>
			<currency type="GRD">
				<displayName>ഗ്രീക്ക് ഡ്രാക്ക്മ</displayName>
				<displayName count="one">ഗ്രീക്ക് ഡ്രാക്ക്മ</displayName>
				<displayName count="other">ഗ്രീക്ക് ഡ്രാക്ക്മാസ്</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>ഗ്വാട്ടിമാല ക്വെറ്റ്സല്‍</displayName>
				<displayName count="one">ഗ്വാട്ടിമാല ക്വെറ്റ്സല്‍</displayName>
				<displayName count="other">ഗ്വാട്ടിമാല ക്വെറ്റ്സല്‍സ്</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>പോര്‍ച്ചുഗീസ്  ഗിനി എസ്ക്യൂഡോ</displayName>
				<displayName count="one">പോര്‍ച്ചുഗീസ് ഗിനി എസ്ക്യൂഡോ</displayName>
				<displayName count="other">പോര്‍ച്ചുഗീസ് ഗിനി എസ്ക്യൂഡോസ്</displayName>
			</currency>
			<currency type="GWP">
				<displayName>ഗിനിയ-ബിസാവു പെയ്സോ</displayName>
				<displayName count="one">ഗിനി-ബിസാവു പെയ്സോ</displayName>
				<displayName count="other">ഗിനി-ബിസാവു പെയ്സോസ്</displayName>
			</currency>
			<currency type="GYD">
				<displayName>ഗയാന ഡോളര്‍</displayName>
				<displayName count="one">ഗയാന ഡോളര്‍</displayName>
				<displayName count="other">ഗയാന ഡോളേഴ്സ്</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>ഹോങ് കോങ് ഡോളര്‍</displayName>
				<displayName count="one">ഹോങ് കോങ് ഡോളര്‍</displayName>
				<displayName count="other">ഹോങ് കോങ് ഡോളേഴ്സ്</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>ഹോന്‍ഡ്യുറാസ് ലെംപീര</displayName>
				<displayName count="one">ഹോന്‍ഡ്യുറാസ് ലെംപീര</displayName>
				<displayName count="other">ഹോന്‍ഡ്യുറാസ് ലെംപീരാസ്</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>ക്രൊയേഷ്യന്‍ ദിനാര്‍</displayName>
				<displayName count="one">ക്രൊയേഷ്യന്‍ ദിനാര്‍</displayName>
				<displayName count="other">ക്രൊയേഷ്യന്‍ ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="HRK">
				<displayName>ക്രൊയേഷ്യന്‍ ക്യൂന</displayName>
				<displayName count="one">ക്രൊയേഷ്യന്‍ ക്യൂന</displayName>
				<displayName count="other">ക്രൊയേഷ്യന്‍ ക്യൂനാസ്</displayName>
			</currency>
			<currency type="HTG">
				<displayName>ഹെയ്ഷ്യന്‍ ഗൂര്‍ഡ്</displayName>
				<displayName count="one">ഹെയ്ഷ്യന്‍ ഗൂര്‍ഡ്</displayName>
				<displayName count="other">ഹെയ്ഷ്യന്‍ ഗൂര്‍ഡ്സ്</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ഹംഗേറിയന്‍ ഫോറിന്‍റ്</displayName>
				<displayName count="one">ഹംഗേറിയന്‍ ഫോറിന്‍റ്</displayName>
				<displayName count="other">ഹംഗേറിയന്‍ ഫോറിന്‍റ്സ്</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>ഇന്തോനേഷ്യന്‍ രൂപ</displayName>
				<displayName count="one">ഇന്തോനേഷ്യന്‍ രൂപ</displayName>
				<displayName count="other">ഇന്തോനേഷ്യന്‍ രൂപ</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>ഐറിഷ് പൌണ്ട്</displayName>
				<displayName count="one">ഐറിഷ് പൌണ്ട്</displayName>
				<displayName count="other">ഐറിഷ് പൌണ്ട്സ്</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>ഇസ്രയേലി പൌണ്ട്</displayName>
				<displayName count="one">ഇസ്രയേലി പൌണ്ട്</displayName>
				<displayName count="other">ഇസ്രയേലി പൌണ്ട്സ്</displayName>
			</currency>
			<currency type="ILS">
				<displayName>ഇസ്രായേലി ഷക്കേല്‍</displayName>
				<displayName count="one">ഇസ്രായേലി ന്യൂ ഷെക്കല്‍</displayName>
				<displayName count="other">ഇസ്രായേലി ന്യൂ ഷെക്കല്‍സ്</displayName>
			</currency>
			<currency type="INR">
				<displayName>ഇന്ത്യന്‍ രൂപ</displayName>
				<displayName count="one">ഇന്ത്യന്‍ രൂപ</displayName>
				<displayName count="other">ഇന്ത്യന്‍ രൂപ</displayName>
				<symbol>രൂ</symbol>
			</currency>
			<currency type="IQD">
				<displayName>ഇറാക്കി ദിനാര്‍</displayName>
				<displayName count="one">ഇറാക്കി ദിനാര്‍</displayName>
				<displayName count="other">ഇറാക്കി ദിനാര്‍സ്</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>ഇറാനിയന്‍ റിയാല്‍</displayName>
				<displayName count="one">ഇറാനിയന്‍ റിയാല്‍</displayName>
				<displayName count="other">ഇറാനിയന്‍ റിയാല്‍സ്</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>ഐസ്‌ലാന്‍ഡിക് ക്രോണ</displayName>
				<displayName count="one">ഐസ്‌ലാന്‍ഡിക് ക്രോണ</displayName>
				<displayName count="other">ഐസ്‌ലാന്‍ഡിക് ക്രോണാസ്</displayName>
			</currency>
			<currency type="ITL">
				<displayName>ഇറ്റാലിയന്‍ ലിറ</displayName>
				<displayName count="one">ഇറ്റാലിയന്‍ ലിറ</displayName>
				<displayName count="other">ഇറ്റാലിയന്‍ ലിറാസ്</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>ജമൈക്കന്‍ ഡോളര്‍</displayName>
				<displayName count="one">ജമൈക്കന്‍ ഡോളര്‍</displayName>
				<displayName count="other">ജമൈക്കന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>ജോര്‍ദ്ദാന്‍ ദിനാര്‍</displayName>
				<displayName count="one">ജോര്‍ദ്ദാന്‍ ദിനാര്‍</displayName>
				<displayName count="other">ജോര്‍ദ്ദാന്‍ ദിനാര്‍സ്</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>ജപ്പാനീസ് യെന്‍</displayName>
				<displayName count="one">ജാപ്പനീസ് യെന്‍</displayName>
				<displayName count="other">ജാപ്പനീസ് യെന്‍</displayName>
				<symbol>´</symbol>
			</currency>
			<currency type="KES">
				<displayName>കെനിയന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="one">കെനിയന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="other">കെനിയന്‍ ഷില്ലിംഗ്സ്</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>കിര്‍ഗിസ്ഥാന്‍ സോം</displayName>
				<displayName count="one">കിര്‍ഗിസ്ഥാന്‍ സോം</displayName>
				<displayName count="other">കിര്‍ഗിസ്ഥാന്‍ സോംസ്</displayName>
				<symbol>സോം</symbol>
			</currency>
			<currency type="KHR">
				<displayName>കംബോഡിയന്‍ റീല്‍</displayName>
				<displayName count="one">കംബോഡിയന്‍ റീല്‍</displayName>
				<displayName count="other">കംബോഡിയന്‍ റീല്‍സ്</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>കൊമോറോ ഫ്രാങ്ക്</displayName>
				<displayName count="one">കൊമോറോ ഫ്രാങ്ക്</displayName>
				<displayName count="other">കൊമോറോ ഫ്രാങ്´•്‍സ്</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>നോര്‍ത്ത് കൊറിയന്‍ വോണ്‍</displayName>
				<displayName count="one">ഉത്തര കൊറിയന്‍ വോണ്‍</displayName>
				<displayName count="other">ഉത്തര കൊറിയന്‍ വോണ്‍സ്</displayName>
			</currency>
			<currency type="KRW">
				<displayName>ദക്ഷിണ കൊറിയന്‍ വോണ്‍</displayName>
				<displayName count="one">ദക്ഷിണ കൊറിയന്‍ വോണ്‍</displayName>
				<displayName count="other">ദക്ഷിണ കൊറിയന്‍ വോണ്‍സ്</displayName>
			</currency>
			<currency type="KWD">
				<displayName>കുവൈറ്റി ദിനാര്‍</displayName>
				<displayName count="one">KWD</displayName>
				<displayName count="other">കുവൈറ്റി ദിനാര്‍സ്‌</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>കെയ്മന്‍ദ്വീപുകളുടെ ഡോളര്‍‌</displayName>
				<displayName count="one">കെയ്മന്‍ദ്വീപുകളുടെ ഡോളര്‍‌</displayName>
				<displayName count="other">കെയ്മന്‍ദ്വീപുകളുടെ ഡµ‹ളേഴ്സ്</displayName>
			</currency>
			<currency type="KZT">
				<displayName>കസാഖ്സ്ഥാന്‍ റ്റെംഗെ</displayName>
				<displayName count="one">കസാഖ്സ്ഥാന്‍ റ്റെംഗെ</displayName>
				<displayName count="other">കസാഖ്സ്ഥാന്‍ റ്റെംഗെസ്‌</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>ലാവോഷിയന്‍ കിപ്</displayName>
				<displayName count="one">ലാവോഷ്യന്‍ കിപ്‌</displayName>
				<displayName count="other">ലാവോഷ്യന്‍ കിപ്‌സ്‌</displayName>
			</currency>
			<currency type="LBP">
				<displayName>ലെബനീസ് പൌണ്ട്</displayName>
				<displayName count="one">ലെബനീസ് പൌണ്ട്</displayName>
				<displayName count="other">ലെബനീസ് പൌണ്ട്സ്</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>ശ്രീലങ്കന്‍ രൂപ</displayName>
				<displayName count="one">ശ്രീലങ്കന്‍ രൂപ</displayName>
				<displayName count="other">ശ്രീലങ്കന്‍ രൂപ</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>ലൈബീരിയന്‍ ഡോളര്‍</displayName>
				<displayName count="one">ലൈബീരിയന്‍ ഡോളര്‍</displayName>
				<displayName count="other">ലൈബീരിയന്‍ ഡോളേഴ്സ്</displayName>
			</currency>
			<currency type="LSL">
				<displayName>ലെസോതോ ലോത്തി</displayName>
				<displayName count="one">ലെസോതോ ലോത്തി</displayName>
				<displayName count="other">ലെസോതോ ലോത്തിസ്‌</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>മലോത്തി</displayName>
				<displayName count="one">മലോത്തി</displayName>
				<displayName count="other">മലോത്തിസ്‌</displayName>
			</currency>
			<currency type="LTL">
				<displayName>ലിത്വാനിയന്‍ ലിത</displayName>
				<displayName count="one">ലിത്വാനിയന്‍ ലിത</displayName>
				<displayName count="other">ലിത്വാനിയന്‍ ലിതാസ്‌</displayName>
			</currency>
			<currency type="LTT">
				<displayName>ലിത്വാനിയന്‍ തലോനാസ്</displayName>
				<displayName count="one">ലിത്വാനിയന്‍ തലോനാസ്</displayName>
				<displayName count="other">ലിത്വാനിയന്‍ തലോനാസെസ്‌</displayName>
			</currency>
			<currency type="LUC">
				<displayName>ലക്സംബര്‍ഗ് കണ്‍വേര്‍ട്ടിബിള്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="one">ലക്സംബര്‍ഗ് കൈമാറ്റം ചെയ്യാവുന്ന ഫ്രാങ്ക്‌</displayName>
				<displayName count="other">ലക്സംബര്‍ഗ് കൈമാറ്റം ചെയ്യാവുന്ന ഫ്രാങ്ക്‌സ്‌</displayName>
			</currency>
			<currency type="LUF">
				<displayName>ലക്സംബര്‍ഗ് ഫ്രാങ്ക്</displayName>
				<displayName count="one">ലക്സംബര്‍ഗ് ഫ്രാങ്ക്</displayName>
				<displayName count="other">ലക്സംബര്‍ഗ് ഫ്രാങ്ക്‌സ്‌</displayName>
			</currency>
			<currency type="LUL">
				<displayName>ലക്സംബര്‍ഗ് ഫിനാന്‍ഷ്യല്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="one">ലക്സംബര്‍ഗ് ഫിനാന്‍ഷ്യല്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="other">ലക്സംബര്‍ഗ് ഫിനാന്‍ഷ്യല്‍ ഫ്രാങ്ക്‌സ്‌</displayName>
			</currency>
			<currency type="LVL">
				<displayName>ലാറ്റ്വിയന്‍ ലാറ്റ്സ്</displayName>
				<displayName count="one">ലാറ്റ്വിയന്‍ ലാറ്റ്സ്</displayName>
				<displayName count="other">ലാറ്റ്വിയന്‍ ലാറ്റ്സെസ്‌</displayName>
			</currency>
			<currency type="LVR">
				<displayName>ലാറ്റ്വിയന്‍ റൂബിള്‍</displayName>
				<displayName count="one">ലാറ്റ്വിയന്‍ റൂബിള്‍</displayName>
				<displayName count="other">LVR</displayName>
			</currency>
			<currency type="LYD">
				<displayName>ലിബിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">LYD</displayName>
				<displayName count="other">LYD</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>മൊറോക്കന്‍ ദിര്‍ഹം</displayName>
				<displayName count="one">MAD</displayName>
				<displayName count="other">MAD</displayName>
			</currency>
			<currency type="MAF">
				<displayName>മൊറോക്കന്‍  ഫ്രാങ്ക്</displayName>
				<displayName count="one">MAF</displayName>
				<displayName count="other">MAF</displayName>
			</currency>
			<currency type="MDL">
				<displayName>മൊല്‍ഡോവന്‍ ലിയൂ</displayName>
				<displayName count="one">MDL</displayName>
				<displayName count="other">MDL</displayName>
			</currency>
			<currency type="MGA">
				<displayName>മഡഗാസ്കര്‍ ഏരിയറി</displayName>
				<displayName count="one">MGA</displayName>
				<displayName count="other">MGA</displayName>
			</currency>
			<currency type="MGF">
				<displayName>മഡഗാസ്കര്‍  ഫ്രാങ്ക്</displayName>
				<displayName count="one">MGF</displayName>
				<displayName count="other">MGF</displayName>
			</currency>
			<currency type="MKD">
				<displayName>മാസിഡോണിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">MKD</displayName>
				<displayName count="other">MKD</displayName>
				<symbol>Mഡെന്‍</symbol>
			</currency>
			<currency type="MLF">
				<displayName>മാലി ഫ്രാങ്ക്</displayName>
				<displayName count="one">MLF</displayName>
				<displayName count="other">MLF</displayName>
			</currency>
			<currency type="MMK">
				<displayName>മ്യാന്‍മാര്‍ ചാറ്റ്</displayName>
				<displayName count="one">മ്യാന്‍മാര്‍ ചാറ്റ്</displayName>
				<displayName count="other">MMK</displayName>
			</currency>
			<currency type="MNT">
				<displayName>മംഗോളിയന്‍ തുഗ്രിക്</displayName>
				<displayName count="one">MNT</displayName>
				<displayName count="other">MNT</displayName>
				<symbol>റ്റഗ്</symbol>
			</currency>
			<currency type="MOP">
				<displayName>മകൌ പതാക്ക</displayName>
				<displayName count="one">മകൌ പതാക്ക</displayName>
				<displayName count="other">മകൌ പതാക്കാസ്</displayName>
			</currency>
			<currency type="MRO">
				<displayName>മൌറിറ്റേനിയ ഔഗിയ</displayName>
				<displayName count="one">MRO</displayName>
				<displayName count="other">MRO</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>മല്‍ത്തീസ് ലിറ</displayName>
				<displayName count="one">MTL</displayName>
				<displayName count="other">MTL</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>മല്‍ത്തീസ് പൌണ്ട്</displayName>
				<displayName count="one">MTP</displayName>
				<displayName count="other">MTP</displayName>
			</currency>
			<currency type="MUR">
				<displayName>മൌറീഷ്യസ് രൂപ</displayName>
				<displayName count="one">MUR</displayName>
				<displayName count="other">MUR</displayName>
			</currency>
			<currency type="MVR">
				<displayName>മാലദ്വീപ് രൂപ</displayName>
				<displayName count="one">മാലദ്വീപ് രൂപ</displayName>
				<displayName count="other">മാലദ്വീപ് രൂപ</displayName>
			</currency>
			<currency type="MWK">
				<displayName>മലാവി ക്വാച</displayName>
				<displayName count="one">MWK</displayName>
				<displayName count="other">MWK</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>മെക്സിക്കന്‍ പെസോ</displayName>
				<displayName count="one">MXN</displayName>
				<displayName count="other">MXN</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>മെക്സിക്കന്‍ സില്‍വര്‍ പെയ്സോ  (1861-1992)</displayName>
				<displayName count="one">മെക്സിക്കന്‍ സില്‍വര്‍ പെയ്സോ (MXP)</displayName>
				<displayName count="other">മെക്സിക്കന്‍ സില്‍വര്‍ പെയ്സോസ് (MXP)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>മെക്സിക്കന്‍ യൂണിഡാഡ് ഡി ഇന്‍വെര്‍ഷന്‍ (UDI)</displayName>
				<displayName count="one">മെക്സിക്കന്‍ യൂണിഡാഡ് ഡി ഇന്‍വെര്‍ഷന്‍ (UDI)</displayName>
				<displayName count="other">മെക്സിക്കന്‍ യൂണിഡാഡ്സ് ഡി ഇന്‍വെര്‍ഷന്‍ (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>മലേഷ്യന്‍ റിംഗിറ്റ്</displayName>
				<displayName count="one">MYR</displayName>
				<displayName count="other">MYR</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>മൊസാന്പിക്ക് എസ്ക്യുഡോ</displayName>
				<displayName count="one">MZE</displayName>
				<displayName count="other">MZE</displayName>
			</currency>
			<currency type="MZM">
				<displayName>ഓള്‍ഡ് മൊസാന്പിക്ക് മെറ്റിക്കല്‍</displayName>
				<displayName count="one">MZM</displayName>
				<displayName count="other">MZM</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>മൊസാന്പിക്ക് മെറ്റിക്കല്‍</displayName>
				<displayName count="one">MZN</displayName>
				<displayName count="other">MZN</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>നമീബിയന്‍ ഡോളര്‍</displayName>
				<displayName count="one">NAD</displayName>
				<displayName count="other">NAD</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>നൈജീരിയന്‍ നൈറ</displayName>
				<displayName count="one">NGN</displayName>
				<displayName count="other">NGN</displayName>
			</currency>
			<currency type="NIC">
				<displayName>നികരാഗ്വന്‍ കൊര്‍ഡോബ</displayName>
				<displayName count="one">NIC</displayName>
				<displayName count="other">NIC</displayName>
			</currency>
			<currency type="NIO">
				<displayName>നികരാഗ്വന്‍ കൊര്‍ഡോബ ഒരോ</displayName>
				<displayName count="one">NIO</displayName>
				<displayName count="other">NIO</displayName>
			</currency>
			<currency type="NLG">
				<displayName>നെതര്‍ലന്‍ഡ്സ് ഗില്‍ഡര്‍</displayName>
				<displayName count="one">നെതര്‍ലന്‍ഡ്സ് ഗില്‍ഡര്‍</displayName>
				<displayName count="other">നെതര്‍ലന്‍ഡ്സ് ഗില്‍ഡേഴ്സ്</displayName>
			</currency>
			<currency type="NOK">
				<displayName count="one">നോര്‍വീജിയന്‍ ക്രോണ്‍</displayName>
				<displayName count="other">നോര്‍വീജിയന്‍ ക്രോണ്‍സ്</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>നേപ്പാളി രൂപ</displayName>
				<displayName count="one">NPR</displayName>
				<displayName count="other">NPR</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>ന്യൂസിലാന്‍ഡ് ഡോളര്‍</displayName>
				<displayName count="one">ന്യൂസിലന്‍ഡ് ഡോളര്‍</displayName>
				<displayName count="other">ന്യൂസിലന്‍ഡ് ഡോളേഴ്സ്</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>ഒമാന്‍ റിയാല്‍</displayName>
				<displayName count="one">OMR</displayName>
				<displayName count="other">OMR</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>പനാമെയ്നിയന്‍ ബാല്‍ബോവ</displayName>
				<displayName count="one">പനാമെയ്നിയന്‍ ബാല്‍ബോവ</displayName>
				<displayName count="other">പനാമെയ്നിയന്‍ ബാല്‍ബോവാസ്</displayName>
			</currency>
			<currency type="PEI">
				<displayName>പെറൂവിയന്‍ ഇന്‍റി</displayName>
				<displayName count="one">പെറൂവിയന്‍ ഇന്‍റി</displayName>
				<displayName count="other">പെറൂവിയന്‍ ഇന്‍റിസ്</displayName>
			</currency>
			<currency type="PEN">
				<displayName>പെറൂവിയന്‍ സോള്‍ ന്യൂവോ</displayName>
				<displayName count="one">പെറൂവിയന്‍ സോള്‍ ന്യൂവോ</displayName>
				<displayName count="other">പെറൂവിയന്‍ സോള്‍ ന്യൂവോസ്</displayName>
			</currency>
			<currency type="PES">
				<displayName>പെറൂവിയന്‍ സോള്‍</displayName>
				<displayName count="one">പെറൂവിയന്‍ സോള്‍</displayName>
				<displayName count="other">പെറൂവിയന്‍ സോള്‍സ്</displayName>
			</currency>
			<currency type="PGK">
				<displayName>പാപുവ ന്യൂ ഗിനി കിന</displayName>
				<displayName count="one">പാപുവ ന്യൂ ഗിനി കിന</displayName>
				<displayName count="other">പാപുവ ന്യൂ ഗിനി കിനാസ്</displayName>
			</currency>
			<currency type="PHP">
				<displayName>ഫിലിപ്പൈന്‍ പെയ്സോ</displayName>
				<displayName count="one">ഫിലിപ്പൈന്‍ പെയ്സോ</displayName>
				<displayName count="other">ഫിലിപ്പൈന്‍ പെയ്സോസ്</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>പാക്കിസ്ഥാനി രൂപ</displayName>
				<displayName count="one">പാക്കിസ്ഥാനി രൂപ</displayName>
				<displayName count="other">പാക്കിസ്ഥാനി രൂപ</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName count="one">പോളിഷ് സ്ലോട്ടി</displayName>
				<displayName count="other">പോളിഷ് സ്ലോട്ടീസ്</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>പോളിഷ് സ്ലോട്ടി  (1950-1995)</displayName>
				<displayName count="one">PLZ</displayName>
				<displayName count="other">PLZ</displayName>
			</currency>
			<currency type="PTE">
				<displayName>പോര്‍ച്ചുഗീസ് എസ്ക്യുഡോ</displayName>
				<displayName count="one">PTE</displayName>
				<displayName count="other">PTE</displayName>
			</currency>
			<currency type="PYG">
				<displayName>പരാഗ്വേ ഗ്വരനീ</displayName>
				<displayName count="one">PYG</displayName>
				<displayName count="other">PYG</displayName>
			</currency>
			<currency type="QAR">
				<displayName>ഖത്തര്‍ റിയാല്‍</displayName>
				<displayName count="one">QAR</displayName>
				<displayName count="other">QAR</displayName>
			</currency>
			<currency type="RHD">
				<displayName>റൊഡേഷ്യന്‍ ഡോളര്‍</displayName>
				<displayName count="one">RHD</displayName>
				<displayName count="other">RHD</displayName>
			</currency>
			<currency type="ROL">
				<displayName>പ്രാചീന റൊമേനിയന്‍ ലിയു</displayName>
				<displayName count="one">ROL</displayName>
				<displayName count="other">ROL</displayName>
			</currency>
			<currency type="RON">
				<displayName>റൊമേനിയന്‍ ലിയു</displayName>
				<displayName count="one">RON</displayName>
				<displayName count="other">RON</displayName>
			</currency>
			<currency type="RSD">
				<displayName>സെര്‍ബിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">RSD</displayName>
				<displayName count="other">RSD</displayName>
			</currency>
			<currency type="RUB">
				<displayName>റഷ്യന്‍ റൂബിള്‍</displayName>
				<displayName count="one">റഷ്യന്‍ റൂബിള്‍</displayName>
				<displayName count="other">റഷ്യന്‍ റൂബിള്‍സ്</displayName>
			</currency>
			<currency type="RUR">
				<displayName>റഷ്യന്‍ റൂബിള്‍ (1991-1998)</displayName>
				<displayName count="one">RUR</displayName>
				<displayName count="other">RUR</displayName>
			</currency>
			<currency type="RWF">
				<displayName>റുവാണ്ടന്‍ ഫ്രാങ്ക്</displayName>
				<displayName count="one">RWF</displayName>
				<displayName count="other">RWF</displayName>
			</currency>
			<currency type="SAR">
				<displayName>സൌദി റിയാല്‍</displayName>
				<displayName count="one">SAR</displayName>
				<displayName count="other">SAR</displayName>
			</currency>
			<currency type="SBD">
				<displayName>സോളമന്‍ ദ്വീപുകളുടെ ഡോളര്‍</displayName>
				<displayName count="one">SBD</displayName>
				<displayName count="other">SBD</displayName>
			</currency>
			<currency type="SCR">
				<displayName>സെയ്ഷെല്‍സ് രൂപ</displayName>
				<displayName count="one">SCR</displayName>
				<displayName count="other">SCR</displayName>
			</currency>
			<currency type="SDD">
				<displayName>പ്രാചീന സുഡാനീസ് ദിനാര്‍</displayName>
				<displayName count="one">SDD</displayName>
				<displayName count="other">SDD</displayName>
			</currency>
			<currency type="SDG">
				<displayName>സുഡാനീസ് പൌണ്ട്</displayName>
				<displayName count="one">SDG</displayName>
				<displayName count="other">SDG</displayName>
			</currency>
			<currency type="SDP">
				<displayName>പ്രാചീന സുഡാനീസ് പൌണ്ട്</displayName>
				<displayName count="one">SDP</displayName>
				<displayName count="other">SDP</displayName>
			</currency>
			<currency type="SEK">
				<displayName>SEK</displayName>
				<displayName count="one">SEK</displayName>
				<displayName count="other">SEK</displayName>
			</currency>
			<currency type="SGD">
				<displayName>സിംഗപ്പൂര്‍ ഡോളര്‍</displayName>
				<displayName count="one">SGD</displayName>
				<displayName count="other">SGD</displayName>
			</currency>
			<currency type="SHP">
				<displayName>സെയ്ന്‍റ് ഹെലെന പൌണ്ട്</displayName>
				<displayName count="one">SHP</displayName>
				<displayName count="other">SHP</displayName>
			</currency>
			<currency type="SIT">
				<displayName>സ്ലൊവേനിയ റ്റോളര്‍</displayName>
				<displayName count="one">SIT</displayName>
				<displayName count="other">SIT</displayName>
			</currency>
			<currency type="SKK">
				<displayName>സ്ലോവാക് കൊരൂന</displayName>
				<displayName count="one">SKK</displayName>
				<displayName count="other">SKK</displayName>
			</currency>
			<currency type="SLL">
				<displayName>സിയറാ ലിയോണ്‍ ലിയോണ്‍</displayName>
				<displayName count="one">SLL</displayName>
				<displayName count="other">SLL</displayName>
			</currency>
			<currency type="SOS">
				<displayName>സൊമാലി ഷില്ലിംഗ്</displayName>
				<displayName count="one">SOS</displayName>
				<displayName count="other">SOS</displayName>
			</currency>
			<currency type="SRD">
				<displayName>സൂരിനാം ഡോളര്‍</displayName>
				<displayName count="one">SRD</displayName>
				<displayName count="other">SRD</displayName>
			</currency>
			<currency type="SRG">
				<displayName>സൂരിനാം ഗില്‍ഡര്‍</displayName>
				<displayName count="one">SRG</displayName>
				<displayName count="other">SRG</displayName>
			</currency>
			<currency type="STD">
				<displayName>സാവോ റ്റോമി ആന്‍ഡ് പ്രിന്‍സിപ്പി ഡോബ്ര</displayName>
				<displayName count="one">STD</displayName>
				<displayName count="other">STD</displayName>
			</currency>
			<currency type="SUR">
				<displayName>സോവിയറ്റ് റൂബിള്‍</displayName>
				<displayName count="one">SUR</displayName>
				<displayName count="other">SUR</displayName>
			</currency>
			<currency type="SVC">
				<displayName>എല്‍ സാല്‍വഡോര്‍ കോളന്‍</displayName>
				<displayName count="one">SVC</displayName>
				<displayName count="other">SVC</displayName>
			</currency>
			<currency type="SYP">
				<displayName>സിറിയന്‍ പൌണ്ട്</displayName>
				<displayName count="one">SYP</displayName>
				<displayName count="other">സിറിയന്‍ പൌണ്ട്</displayName>
			</currency>
			<currency type="SZL">
				<displayName>സ്വാസിലാന്‍ഡ് ലിലാംഗനി</displayName>
				<displayName count="one">SZL</displayName>
				<displayName count="other">SZL</displayName>
			</currency>
			<currency type="THB">
				<displayName>തായ് ബട്ട്</displayName>
				<displayName count="one">തായ് ബട്ട്</displayName>
				<displayName count="other">തായ് ബട്ട്</displayName>
			</currency>
			<currency type="TJR">
				<displayName>തജിക്സ്ഥാന്‍ റൂബിള്‍</displayName>
				<displayName count="one">തജിക്സ്ഥാന്‍ റൂബിള്‍</displayName>
				<displayName count="other">തജിക്സ്ഥാന്‍ റൂബിള്‍സ്</displayName>
			</currency>
			<currency type="TJS">
				<displayName>തജികിസ്ഥാന്‍ സൊമോനി</displayName>
				<displayName count="one">തജികിസ്ഥാന്‍ സൊമോനി</displayName>
				<displayName count="other">തജികിസ്ഥാന്‍ സൊമോനിസ്</displayName>
			</currency>
			<currency type="TMM">
				<displayName>തുര്‍ക്മെനിസ്ഥാന്‍ മനത്</displayName>
				<displayName count="one">തുര്‍ക്മെനിസ്ഥാന്‍ മനത്</displayName>
				<displayName count="other">തുര്‍ക്മെനിസ്ഥാന്‍ മനത്‌സ്</displayName>
			</currency>
			<currency type="TND">
				<displayName>തുനീസിയന്‍ ദിനാര്‍</displayName>
				<displayName count="one">TND</displayName>
				<displayName count="other">TND</displayName>
			</currency>
			<currency type="TOP">
				<displayName>റ്റോംഗ പാംഗ</displayName>
				<displayName count="one">റ്റോംഗ പാംഗ</displayName>
				<displayName count="other">റ്റോംഗ പാംഗാസ്</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>തിമോര്‍ എസ്ക്യൂഡോ</displayName>
				<displayName count="one">തിമോര്‍ എസ്ക്യൂഡോ</displayName>
				<displayName count="other">തിമോര്‍ എസ്ക്യൂഡോസ്</displayName>
			</currency>
			<currency type="TRL">
				<displayName>പ്രാചീന തുര്‍ക്കിഷ് ലിറ</displayName>
				<displayName count="one">TRL</displayName>
				<displayName count="other">പ്രാചീന തുര്‍ക്കിഷ് ലിറാസ്</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>തുര്‍ക്കിഷ് ലിറ</displayName>
				<displayName count="one">തുര്‍ക്കിഷ് ലിറ</displayName>
				<displayName count="other">തുര്‍ക്കിഷ് ലിറാസ്</displayName>
			</currency>
			<currency type="TTD">
				<displayName>ട്രിനിഡാഡ് ആന്‍ഡ് റ്റൊബാഗോ ഡോളര്‍</displayName>
				<displayName count="one">TTD</displayName>
				<displayName count="other">TTD</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName count="one">തായ്‌വാന്‍ ഡോളര്‍</displayName>
				<displayName count="other">തായ്‌വാന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>റ്റാന്‍സാനിയന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="one">TZS</displayName>
				<displayName count="other">TZS</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>യുക്രേനിയന്‍ ഹ്രിവ്നിയ</displayName>
				<displayName count="one">ഉക്രേനിയന്‍ ഹ്രിവ്നിയ</displayName>
				<displayName count="other">ഉക്രേനിയന്‍ ഹ്രിവ്നിയാസ്</displayName>
			</currency>
			<currency type="UAK">
				<displayName>യുക്രേനിയന്‍ കാര്‍ബോവാനെസ്</displayName>
				<displayName count="one">ഉക്രേനിയന്‍ കാര്‍ബോവാനെസ്</displayName>
				<displayName count="other">ഉക്രേനിയന്‍ കാര്‍ബോവാനെസ്</displayName>
			</currency>
			<currency type="UGS">
				<displayName>ഉഗാണ്ടന്‍ ഷില്ലിംഗ് (1966-1987)</displayName>
				<displayName count="one">UGS</displayName>
				<displayName count="other">UGS</displayName>
			</currency>
			<currency type="UGX">
				<displayName>ഉഗാണ്ടന്‍ ഷില്ലിംഗ്</displayName>
				<displayName count="one">UGX</displayName>
				<displayName count="other">UGX</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>യു.എസ്. ഡോളര്‍</displayName>
				<displayName count="one">യു.എസ് ഡോളര്‍</displayName>
				<displayName count="other">യു.എസ് ഡോളേഴ്സ്</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>യുഎസ് ഡോളര്‍ (അടുത്ത ദിവസം)</displayName>
				<displayName count="one">USN</displayName>
				<displayName count="other">USN</displayName>
			</currency>
			<currency type="USS">
				<displayName>യുഎസ് ഡോളര്‍ (അതേ ദിവസം)</displayName>
				<displayName count="one">USS</displayName>
				<displayName count="other">യുഎസ് ഡോളേഴ്സ് (അതേ ദിവസം)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>ഉറുഗ്വേ പെയ്സോ എന്‍ യൂണിഡാഡ്സ്</displayName>
				<displayName count="one">ഉറുഗ്വേ പെയ്സോ എന്‍ യൂണിഡാഡ്സ് ഇന്‍ഡെക്സാഡാസ്</displayName>
				<displayName count="other">ഉറുഗ്വേ പെയ്സോസ് എന്‍ യൂണിഡാഡ്സ് ഇന്‍ഡെക്സാഡാസ്</displayName>
			</currency>
			<currency type="UYP">
				<displayName>ഉറുഗ്വേ പെയ്സോ (1975-1993)</displayName>
				<displayName count="one">ഉറുഗ്വേ പെയ്സോ (UYP)</displayName>
				<displayName count="other">ഉറുഗ്വേ പെയ്സോസ് (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>ഉറുഗ്വേ പെയ്സോ ഉറുഗായോ</displayName>
				<displayName count="one">ഉറുഗ്വേ പെയ്സോ</displayName>
				<displayName count="other">ഉറുഗ്വേ പെയ്സോ</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>ഉസ്ബക്കിസ്ഥാന്‍ സം</displayName>
				<displayName count="one">ഉസ്ബക്കിസ്ഥാന്‍ സം</displayName>
				<displayName count="other">ഉസ്ബക്കിസ്ഥാന്‍ സംസ്</displayName>
			</currency>
			<currency type="VEB">
				<displayName>വെനസ്വേലന്‍ ബോലിവര്‍</displayName>
				<displayName count="one">വെനസ്വേലന്‍ ബോലിവര്‍</displayName>
				<displayName count="other">വെനസ്വേലന്‍ ബോലിവര്‍സ്</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>വെനസ്വേലന്‍ ബോലിവര്‍ ഫുവെര്‍റ്റെ</displayName>
				<displayName count="one">വെനസ്വേലന്‍ ബോലിവര്‍ ഫുവെര്‍റ്റെ</displayName>
				<displayName count="other">വെനസ്വേലന്‍ ബോലിവര്‍ ഫുവെര്‍റ്റെസ്</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>വിയറ്റ്നാമീസ് ഡോങ്</displayName>
				<displayName count="one">VND</displayName>
				<displayName count="other">VND</displayName>
			</currency>
			<currency type="VUV">
				<displayName>വനുവാതു വാതു</displayName>
				<displayName count="one">വനുവാതു വാതു</displayName>
				<displayName count="other">വനുവാതു വാതൂസ്</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>പശ്ചിമ സമോവ താല</displayName>
				<displayName count="one">പശ്ചിമ സമോവ താല</displayName>
				<displayName count="other">പശ്ചിമ സമോവ താലാസ്</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA  ഫ്രാങ്ക് BEAC</displayName>
				<displayName count="one">CFA ഫ്രാങ്ക് BEAC</displayName>
				<displayName count="other">CFA ഫ്രാങ്ക്സ്  BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>വെള്ളി</displayName>
				<displayName count="one">വെള്ളി</displayName>
				<displayName count="other">വെള്ളി</displayName>
			</currency>
			<currency type="XAU">
				<displayName>സ്വര്‍ണ്ണം</displayName>
				<displayName count="one">സ്വര്‍ണ്ണം</displayName>
				<displayName count="other">സ്വര്‍ണ്ണം</displayName>
			</currency>
			<currency type="XBA">
				<displayName>യൂറോപ്യന്‍ കോന്പസിറ്റ് യൂണിറ്റ്</displayName>
				<displayName count="one">യൂറോപ്യന്‍ കോന്പസിറ്റ് യൂണിറ്റ്</displayName>
				<displayName count="other">യൂറോപ്യന്‍ കോന്പസിറ്റ് യൂണിറ്റ്സ്</displayName>
			</currency>
			<currency type="XBB">
				<displayName>യൂറോപ്യന്‍ മോണിറ്ററി യൂണിറ്റ്</displayName>
				<displayName count="one">യൂറോപ്യന്‍ മോണിറ്ററി യൂണിറ്റ്</displayName>
				<displayName count="other">യൂറോപ്യന്‍ മോണിറ്ററി യൂണിറ്റ്സ്</displayName>
			</currency>
			<currency type="XBC">
				<displayName>യൂറോപ്യന്‍ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട്  (XBC)</displayName>
				<displayName count="one">യൂറോപ്യന്‍ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBC)</displayName>
				<displayName count="other">യൂറോപ്യന്‍ യൂണിറ്റ്സ് ഓഫ് അക്കൌണ്ട് (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>യൂറോപ്യന്‍ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBD)</displayName>
				<displayName count="one">യൂറോപ്യന്‍ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBD)</displayName>
				<displayName count="other">യൂറോപ്യന്‍ യൂണിറ്റ്സ് ഓഫ് അക്കൌണ്ട് (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>കിഴക്കന്‍  കരീബിയന്‍ ഡോളര്‍</displayName>
				<displayName count="one">കിഴക്കന്‍ കരീബിയന്‍ ഡോളര്‍</displayName>
				<displayName count="other">കിഴക്കന്‍ കരീബിയന്‍ ഡോളേഴ്സ്</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>സ്പെഷ്യല്‍ ഡ്രോയിംഗ് റൈറ്റ്സ്</displayName>
				<displayName count="one">സ്പെഷ്യല്‍ ഡ്രോയിംഗ് റൈറ്റ്സ്</displayName>
				<displayName count="other">സ്പെഷ്യല്‍ ഡ്രോയിംഗ് റൈറ്റ്സ്</displayName>
			</currency>
			<currency type="XEU">
				<displayName>യൂറോപ്യന്‍ നാണയ യൂണിറ്റ്</displayName>
				<displayName count="one">യൂറോപ്യന്‍ നാണയ യൂണിറ്റ്</displayName>
				<displayName count="other">യൂറോപ്യന്‍ നാണയ യൂണിറ്റ്സ്</displayName>
			</currency>
			<currency type="XFO">
				<displayName>ഫ്രെഞ്ച് ഗോള്‍ഡ് ഫ്രാങ്ക്</displayName>
				<displayName count="one">ഫ്രെഞ്ച് ഗോള്‍ഡ് ഫ്രാങ്ക്</displayName>
				<displayName count="other">ഫ്രെഞ്ച് ഗോള്‍ഡ് ഫ്രാങ്ക്സ്</displayName>
			</currency>
			<currency type="XFU">
				<displayName>ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക്</displayName>
				<displayName count="one">ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക്</displayName>
				<displayName count="other">ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക്സ്</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA ഫ്രാങ്ക് BCEAO</displayName>
				<displayName count="one">CFA ഫ്രാങ്ക് BCEAO</displayName>
				<displayName count="other">CFA ഫ്രാങ്ക്സ്  BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>പലാഡിയം</displayName>
				<displayName count="one">പലാഡിയം</displayName>
				<displayName count="other">പലാഡിയം</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP  ഫ്രാങ്ക്</displayName>
				<displayName count="one">CFP ഫ്രാങ്ക്</displayName>
				<displayName count="other">CFP ഫ്രാങ്ക്സ്</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>പ്ലാറ്റിനം</displayName>
				<displayName count="one">പ്ലാറ്റിനം</displayName>
				<displayName count="other">പ്ലാറ്റിനം</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET ഫണ്ട്സ്</displayName>
				<displayName count="one">RINET ഫണ്ട്സ്</displayName>
				<displayName count="other">RINET ഫണ്ട്സ്</displayName>
			</currency>
			<currency type="XTS">
				<displayName>റ്റെസ്റ്റിംഗ് കറന്‍സി കോഡ്</displayName>
				<displayName count="one">റ്റെസ്റ്റിംഗ് കറന്‍സി കോഡ്</displayName>
				<displayName count="other">റ്റെസ്റ്റിംഗ് കറന്‍സി കോഡ്</displayName>
			</currency>
			<currency type="XXX">
				<displayName>അറിയപ്പെടാത്തതോ നിലവിലില്ലാത്തതോ ആയ നാണയം</displayName>
				<displayName count="one">അറിയപ്പെടാത്തതോ നിലവിലില്ലാത്തതോ ആയ നാണയം</displayName>
				<displayName count="other">അറിയപ്പെടാത്തതോ നിലവിലില്ലാത്തതോ ആയ നാണയം</displayName>
				<symbol>[നാണയം അറിവില്ല]</symbol>
			</currency>
			<currency type="YDD">
				<displayName>യമനി ദിനാര്‍</displayName>
				<displayName count="one">യമനി ദിനാര്‍</displayName>
				<displayName count="other">യമനി ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="YER">
				<displayName>യമനി റിയാല്‍</displayName>
				<displayName count="one">യമനി റിയാല്‍</displayName>
				<displayName count="other">യമനി റിയാല്‍സ്</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>യൂഗോസ്ലേവിയന്‍ ഹാരഁ€ഡ് ദിനാര്‍</displayName>
				<displayName count="one">യൂഗോസ്ലേവിയന്‍ ഹാര്‍ഡ് ദിനാര്‍</displayName>
				<displayName count="other">യൂഗോസ്ലേവിയന്‍ ഹാര്‍ഡ് ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="YUM">
				<displayName>യൂഗോസ്ലേവിയന്‍ നോവി ദിനാര്‍</displayName>
				<displayName count="one">യൂഗോസ്ലേവിയന്‍ നോവി ദിനാര്‍</displayName>
				<displayName count="other">യൂഗോസ്ലേവിയന്‍ നോവി ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="YUN">
				<displayName>യൂഗോസ്ലേവിയന്‍ കണ്‍വേര്‍ട്ടിബിള്‍ ദിനാര്‍</displayName>
				<displayName count="one">യൂഗോസ്ലേവിയന്‍ കണ്‍വേര്‍ട്ടിബിള്‍ ദിനാര്‍</displayName>
				<displayName count="other">യൂഗോസ്ലേവിയന്‍ കണ്‍വേര്‍ട്ടിബിള്‍ ദിനാര്‍സ്</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>ദക്ഷിണാഫ്രിക്കന്‍ റാന്‍ഡ് (ഫിനാന്‍ഷ്യല്‍)</displayName>
				<displayName count="one">ദക്ഷിണാഫ്രിക്കന്‍ റാന്‍ഡ് (ഫിനാന്‍ഷ്യല്‍)</displayName>
				<displayName count="other">ദക്ഷിണാഫ്രിക്കന്‍ റാന്‍ഡ്സ് (ഫിനാന്‍ഷ്യല്‍)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName count="one">ദക്ഷിണാഫ്രിക്കന്‍ റാന്‍ഡ്</displayName>
				<displayName count="other">ദക്ഷിണാഫ്രിക്കന്‍ റാന്‍ഡ്സ്</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>സാംബിയന്‍ ക്വാച</displayName>
				<displayName count="one">സാംബിയന്‍ ക്വാച</displayName>
				<displayName count="other">സാംബിയന്‍ ക്വാചാസ്</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>സൈറിയന്‍ ന്യൂ സൈര്‍</displayName>
				<displayName count="one">സൈറിയന്‍ ന്യൂ സൈര്‍</displayName>
				<displayName count="other">സൈറിയന്‍ ന്യൂ സൈര്‍സ്</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>സൈറിയന്‍ സൈര്‍</displayName>
				<displayName count="one">സൈറിയന്‍ സൈര്‍</displayName>
				<displayName count="other">സൈറിയന്‍ സൈര്‍സ്</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>സിംബാബ്‌വെ ഡോളര്‍</displayName>
				<displayName count="one">സിംബാബ്‌വെ ഡോളര്‍</displayName>
				<displayName count="other">സിംബാബ്‌വെ ഡോളേഴ്സ്</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} ദിവസം</unitPattern>
			<unitPattern count="other">{0} ദിവസം</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} മണിക്കൂര്‍</unitPattern>
			<unitPattern count="other">{0} മണിക്കൂര്‍</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} മിനിട്ട്</unitPattern>
			<unitPattern count="other">{0} മിനിട്ട്</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} മാസം</unitPattern>
			<unitPattern count="other">{0} മാസം</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} സെക്കന്റ്</unitPattern>
			<unitPattern count="other">{0} സെക്കന്റ്</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} ആഴ്ച</unitPattern>
			<unitPattern count="other">{0} ആഴ്ച</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} വര്‍ഷം</unitPattern>
			<unitPattern count="other">{0} വര്‍ഷം</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>അതെ</yesstr>
			<nostr>അല്ല</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��n##Locale/Data/da_DK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="da"/>
		<territory type="DK"/>
	</identity>
</ldml>
PKpG[Z-�>�&�&Locale/Data/cs.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.117 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="cs"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afarština</language>
			<language type="ab">abcházština</language>
			<language type="ae">avestánština</language>
			<language type="af">afrikánština</language>
			<language type="ain">ainština</language>
			<language type="ak">akanština</language>
			<language type="akk">akkadština</language>
			<language type="am">amharština</language>
			<language type="an">aragonština</language>
			<language type="anp">angika</language>
			<language type="ar">arabština</language>
			<language type="arp">arapažština</language>
			<language type="as">assaméština</language>
			<language type="av">avarština</language>
			<language type="ay">aymárština</language>
			<language type="az">azerbajdžánština</language>
			<language type="ba">baskirština</language>
			<language type="bal">balúčština</language>
			<language type="be">běloruština</language>
			<language type="bg">bulharština</language>
			<language type="bh">biharština</language>
			<language type="bho">bhojpurština</language>
			<language type="bi">bislámština</language>
			<language type="bm">bambarština</language>
			<language type="bn">bengálština</language>
			<language type="bo">tibetština</language>
			<language type="br">bretaňština</language>
			<language type="bs">bosenština</language>
			<language type="ca">katalánština</language>
			<language type="co">korsičtina</language>
			<language type="cs">čeština</language>
			<language type="cy">velština</language>
			<language type="da">dánština</language>
			<language type="de">němčina</language>
			<language type="de_AT">německy (Rakousko)</language>
			<language type="dz">bhútánština</language>
			<language type="el">řečtina</language>
			<language type="en">angličtina</language>
			<language type="en_CA">anglicky (Kanada)</language>
			<language type="en_US">angličtina (USA)</language>
			<language type="eo">esperanto</language>
			<language type="es">španělština</language>
			<language type="et">estonština</language>
			<language type="eu">baskičtina</language>
			<language type="fa">perština</language>
			<language type="fi">finština</language>
			<language type="fil">tagalogština</language>
			<language type="fj">fidži</language>
			<language type="fo">faerština</language>
			<language type="fr">francouzština</language>
			<language type="fr_CA">francouzsky (Kanada)</language>
			<language type="fy">fríština</language>
			<language type="ga">irština</language>
			<language type="gd">skotská galština</language>
			<language type="gl">haličština</language>
			<language type="gn">guaranština</language>
			<language type="grc">starořečtina</language>
			<language type="gu">gujaratština</language>
			<language type="gv">manština</language>
			<language type="ha">hausa</language>
			<language type="haw">havajský</language>
			<language type="he">hebrejština</language>
			<language type="hi">hindština</language>
			<language type="hr">chorvatština</language>
			<language type="hu">maďarština</language>
			<language type="hy">arménština</language>
			<language type="ia">interlingua</language>
			<language type="id">indonéština</language>
			<language type="ie">interlingue</language>
			<language type="ik">inupiakština</language>
			<language type="is">islandština</language>
			<language type="it">italština</language>
			<language type="iu">inuktitutština</language>
			<language type="ja">japonština</language>
			<language type="jv">javánština</language>
			<language type="ka">gruzínština</language>
			<language type="kk">kazachština</language>
			<language type="kl">grónština</language>
			<language type="km">kambodžština</language>
			<language type="kn">kannadština</language>
			<language type="ko">korejština</language>
			<language type="ks">kašmírština</language>
			<language type="ku">kurdština</language>
			<language type="ky">kirgizština</language>
			<language type="la">latina</language>
			<language type="lb">Lucemburština</language>
			<language type="ln">lingalština</language>
			<language type="lo">laoština</language>
			<language type="lt">litevština</language>
			<language type="lv">lotyština</language>
			<language type="mag">magadhiština</language>
			<language type="mai">maithiliština</language>
			<language type="mg">malgaština</language>
			<language type="mi">maorština</language>
			<language type="mk">makedonština</language>
			<language type="ml">malabarština</language>
			<language type="mn">mongolština</language>
			<language type="mo">moldavština</language>
			<language type="mr">marathi</language>
			<language type="ms">malajština</language>
			<language type="mt">maltština</language>
			<language type="my">barmština</language>
			<language type="na">nauru</language>
			<language type="ne">nepálština</language>
			<language type="nl">nizozemština</language>
			<language type="nn">norština (nynorsk)</language>
			<language type="no">norština</language>
			<language type="oc">occitan</language>
			<language type="om">Oromo (Afan)</language>
			<language type="or">oriya</language>
			<language type="pa">paňdžábština</language>
			<language type="pl">polština</language>
			<language type="ps">Pashto (Pushto)</language>
			<language type="pt">portugalština</language>
			<language type="qu">kečuánština</language>
			<language type="rm">rétorománština</language>
			<language type="rn">kirundi</language>
			<language type="ro">rumunština</language>
			<language type="ru">ruština</language>
			<language type="rw">kinyarwandština</language>
			<language type="sa">sanskrt</language>
			<language type="sd">sindhi</language>
			<language type="sg">sangho</language>
			<language type="sh">srbochorvatština</language>
			<language type="si">sinhálština</language>
			<language type="sk">slovenština</language>
			<language type="sl">slovinština</language>
			<language type="sla">slovanský jazyk</language>
			<language type="sm">samoyština</language>
			<language type="sn">shona</language>
			<language type="so">somálština</language>
			<language type="sq">albánština</language>
			<language type="sr">srbština</language>
			<language type="ss">siswatština</language>
			<language type="st">sesotho</language>
			<language type="su">sundanština</language>
			<language type="sux">sumerský</language>
			<language type="sv">švédština</language>
			<language type="sw">svahilština</language>
			<language type="ta">tamilština</language>
			<language type="te">telugština</language>
			<language type="tg">tádžičtina</language>
			<language type="th">thajština</language>
			<language type="ti">tigrinijština</language>
			<language type="tk">turkmenština</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingonština</language>
			<language type="tn">setswanština</language>
			<language type="to">tonga</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turečtina</language>
			<language type="ts">tsonga</language>
			<language type="tt">tatarština</language>
			<language type="tw">twi</language>
			<language type="ty">tahitština</language>
			<language type="ug">uighurština</language>
			<language type="uga">ugaritština</language>
			<language type="uk">ukrajinština</language>
			<language type="und">neznámý nebo neplatný jazyk</language>
			<language type="ur">urdština</language>
			<language type="uz">uzbečtina</language>
			<language type="vi">vietnamština</language>
			<language type="vo">volapuk</language>
			<language type="wa">valonština</language>
			<language type="wo">wolof</language>
			<language type="xh">xhosa</language>
			<language type="yi">jidiš</language>
			<language type="yo">yoruba</language>
			<language type="za">zhuang</language>
			<language type="zh">čínština</language>
			<language type="zh_Hans">čínština (zjednodušená)</language>
			<language type="zh_Hant">čínština (tradiční)</language>
			<language type="zu">zulu</language>
		</languages>
		<scripts>
			<script type="Arab">Arabský</script>
			<script type="Armn">Arménský</script>
			<script type="Bali">Balijský</script>
			<script type="Batk">Batacký</script>
			<script type="Beng">Bengálský</script>
			<script type="Blis">Bliss</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Bráhmí</script>
			<script type="Brai">Braillovo písmo</script>
			<script type="Bugi">Buginský</script>
			<script type="Buhd">Buhid</script>
			<script type="Cans">Slabičné písmo kanadských domorodců</script>
			<script type="Cham">Čam</script>
			<script type="Cher">Čerokí</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Koptský</script>
			<script type="Cyrl">Cyrilice</script>
			<script type="Cyrs">Cyrilice (staroslověnská)</script>
			<script type="Deva">Devanágarí</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Egyptský démotický</script>
			<script type="Egyh">Egyptský hieratický</script>
			<script type="Egyp">Egyptské hieroglyfy</script>
			<script type="Ethi">Etiopský</script>
			<script type="Geor">Gruzínský</script>
			<script type="Glag">Hlaholice</script>
			<script type="Goth">Gotický</script>
			<script type="Grek">Řecký</script>
			<script type="Gujr">Gudžarátí</script>
			<script type="Guru">Gurmukhí</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Han</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hebr">Hebrejský</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Hmongský</script>
			<script type="Hrkt">Katakana nebo Hiragana</script>
			<script type="Hung">Staromaďarský</script>
			<script type="Inds">Harappský</script>
			<script type="Ital">Etruský</script>
			<script type="Java">Jávský</script>
			<script type="Jpan">Japonský</script>
			<script type="Kali">Kayah li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kháróští</script>
			<script type="Khmr">Khmerský</script>
			<script type="Knda">Kannadský</script>
			<script type="Laoo">Laoský</script>
			<script type="Latf">Latinka (fraktura)</script>
			<script type="Latg">Latinka (gaelská)</script>
			<script type="Latn">Latinka</script>
			<script type="Lepc">Lepčský</script>
			<script type="Lina">Lineární A</script>
			<script type="Linb">Lineární B</script>
			<script type="Mand">Mandejský</script>
			<script type="Maya">Mayské hieroglyfy</script>
			<script type="Mero">Meroitický</script>
			<script type="Mlym">Malajálamský</script>
			<script type="Mong">Mongolský</script>
			<script type="Mymr">Barmský</script>
			<script type="Ogam">Ogham</script>
			<script type="Orkh">Orchonský</script>
			<script type="Orya">Urijský</script>
			<script type="Osma">Osmanský</script>
			<script type="Perm">Staropermský</script>
			<script type="Phnx">Fénický</script>
			<script type="Plrd">Pollardova fonetická abeceda</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runové písmo</script>
			<script type="Shaw">Shaw</script>
			<script type="Sinh">Sinhálský</script>
			<script type="Syrc">Syrský</script>
			<script type="Syre">Syrský (estrangelo)</script>
			<script type="Syrj">Syrský (západní)</script>
			<script type="Syrn">Syrský (východní)</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Taml">Tamilský</script>
			<script type="Telu">Telužský</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Berberský</script>
			<script type="Tglg">Tagalský</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thajský</script>
			<script type="Tibt">Tibetský</script>
			<script type="Ugar">Ugaritské klínové písmo</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Viditelná řeč</script>
			<script type="Xpeo">Staroperské klínové písmo</script>
			<script type="Xsux">Sumero-akkadské klínové písmo</script>
			<script type="Yiii">Yi</script>
			<script type="Zyyy">Obecný</script>
			<script type="Zzzz">Neznámý nebo neplatný skript</script>
		</scripts>
		<territories>
			<territory type="001">Svět</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">003</territory>
			<territory type="005">Jižní Amerika</territory>
			<territory type="009">Oceánie</territory>
			<territory type="011">Západní Afrika</territory>
			<territory type="013">Střední Amerika</territory>
			<territory type="014">Východní Afrika</territory>
			<territory type="015">Severní Afrika</territory>
			<territory type="017">Střední Afrika</territory>
			<territory type="018">Jižní Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Severní Amerika</territory>
			<territory type="029">Karibik</territory>
			<territory type="030">Východní Asie</territory>
			<territory type="034">Jižní Asie</territory>
			<territory type="035">Jihovýchodní Asie</territory>
			<territory type="039">Jižní Evropa</territory>
			<territory type="053">Austrálie a Nový Zéland</territory>
			<territory type="054">Melanésie</territory>
			<territory type="057">Mikronésie</territory>
			<territory type="061">Polynésie</territory>
			<territory type="062">Jižní a centrální Asie</territory>
			<territory type="142">Asie</territory>
			<territory type="143">Střední Asie</territory>
			<territory type="145">Západní Asie</territory>
			<territory type="150">Evropa</territory>
			<territory type="151">Východní Evropa</territory>
			<territory type="154">Severní Evropa</territory>
			<territory type="155">Západní Evropa</territory>
			<territory type="200">Československo</territory>
			<territory type="419">Latinská Amerika a Karibské moře</territory>
			<territory type="830">Normanské ostrovy</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Spojené arabské emiráty</territory>
			<territory type="AF">Afghánistán</territory>
			<territory type="AG">Antigua a Barbuda</territory>
			<territory type="AI">Anguila</territory>
			<territory type="AL">Albánie</territory>
			<territory type="AM">Arménie</territory>
			<territory type="AN">Nizozemské Antily</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktida</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Americká Samoa</territory>
			<territory type="AT">Rakousko</territory>
			<territory type="AU">Austrálie</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandy</territory>
			<territory type="AZ">Ázerbájdžán</territory>
			<territory type="BA">Bosna a Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladéš</territory>
			<territory type="BE">Belgie</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulharsko</territory>
			<territory type="BH">Bahrajn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermudy</territory>
			<territory type="BN">Brunej Darussalam</territory>
			<territory type="BO">Bolívie</territory>
			<territory type="BR">Brazílie</territory>
			<territory type="BS">Bahamy</territory>
			<territory type="BT">Bhútán</territory>
			<territory type="BV">Ostrov Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bělorusko</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosové ostrovy</territory>
			<territory type="CD">Demokratická republika Kongo</territory>
			<territory type="CF">Středoafrická republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Švýcarsko</territory>
			<territory type="CI">Pobřeží slonoviny</territory>
			<territory type="CK">Cookovy ostrovy</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Čína</territory>
			<territory type="CO">Kolumbie</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Srbsko a Černá Hora</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kapverdy</territory>
			<territory type="CX">Vánoční ostrovy</territory>
			<territory type="CY">Kypr</territory>
			<territory type="CZ">Česká republika</territory>
			<territory type="DE">Německo</territory>
			<territory type="DJ">Džibuti</territory>
			<territory type="DK">Dánsko</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikánská republika</territory>
			<territory type="DZ">Alžírsko</territory>
			<territory type="EC">Ekvádor</territory>
			<territory type="EE">Estonsko</territory>
			<territory type="EG">Egypt</territory>
			<territory type="EH">Západní Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Španělsko</territory>
			<territory type="ET">Etiopie</territory>
			<territory type="FI">Finsko</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandské ostrovy</territory>
			<territory type="FM">Mikronézie</territory>
			<territory type="FO">Faerské ostrovy</territory>
			<territory type="FR">Francie</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Velká Británie</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzie</territory>
			<territory type="GF">Francouzská Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grónsko</territory>
			<territory type="GM">Gambie</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Rovníková Guinea</territory>
			<territory type="GR">Řecko</territory>
			<territory type="GS">Jižní Georgie a Jižní Sandwichovy ostrovy</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Ostrovy Heard a McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Chorvatsko</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Maďarsko</territory>
			<territory type="ID">Indonésie</territory>
			<territory type="IE">Irsko</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Ostrov Man</territory>
			<territory type="IN">Indie</territory>
			<territory type="IO">Britské území v Indickém oceánu</territory>
			<territory type="IQ">Irák</territory>
			<territory type="IR">Írán</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Itálie</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordánsko</territory>
			<territory type="JP">Japonsko</territory>
			<territory type="KE">Keňa</territory>
			<territory type="KG">Kyrgyzstán</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komory</territory>
			<territory type="KN">Svatý Kitts a Nevis</territory>
			<territory type="KP">Severní Korea</territory>
			<territory type="KR">Jižní Korea</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KY">Kajmanské ostrovy</territory>
			<territory type="KZ">Kazachstán</territory>
			<territory type="LA">Lidově demokratická republika Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Svatá Lucie</territory>
			<territory type="LI">Lichtenštejnsko</territory>
			<territory type="LK">Srí Lanka</territory>
			<territory type="LR">Libérie</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litva</territory>
			<territory type="LU">Lucembursko</territory>
			<territory type="LV">Lotyšsko</territory>
			<territory type="LY">Libye</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavsko, republika</territory>
			<territory type="ME">Černá Hora</territory>
			<territory type="MF">Svatý Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallovy ostrovy</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolsko</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Severní Mariany</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mauritánie</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricius</territory>
			<territory type="MV">Maladivy</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexiko</territory>
			<territory type="MY">Malajsie</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibie</territory>
			<territory type="NC">Nová Kaledonie</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk</territory>
			<territory type="NG">Nigérie</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Nizozemsko</territory>
			<territory type="NO">Norsko</territory>
			<territory type="NP">Nepál</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nový Zéland</territory>
			<territory type="OM">Omán</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francouzská Polynésie</territory>
			<territory type="PG">Papua-Nová Guinea</territory>
			<territory type="PH">Filipíny</territory>
			<territory type="PK">Pákistán</territory>
			<territory type="PL">Polsko</territory>
			<territory type="PM">Svatý Pierre a Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portoriko</territory>
			<territory type="PS">Palestinian Territory</territory>
			<territory type="PT">Portugalsko</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Vnější Oceánie</territory>
			<territory type="QU">Evropská unie</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumunsko</territory>
			<territory type="RS">Srbsko</territory>
			<territory type="RU">Rusko</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saúdská Arábie</territory>
			<territory type="SB">Šalamounovy ostrovy</territory>
			<territory type="SC">Seychely</territory>
			<territory type="SD">Súdán</territory>
			<territory type="SE">Švédsko</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Svatá Helena</territory>
			<territory type="SI">Slovinsko</territory>
			<territory type="SJ">Svalbard a Jan Mayen</territory>
			<territory type="SK">Slovensko</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somálsko</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Svatý Tomáš</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Sýrie</territory>
			<territory type="SZ">Svazijsko</territory>
			<territory type="TC">Ostrovy Caicos a Turks</territory>
			<territory type="TD">Čad</territory>
			<territory type="TF">Francouzská jižní teritoria</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thajsko</territory>
			<territory type="TJ">Tádžikistán</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Východní Timor</territory>
			<territory type="TM">Turkmenistán</territory>
			<territory type="TN">Tunisko</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turecko</territory>
			<territory type="TT">Trinidad a Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tchaj-wan</territory>
			<territory type="TZ">Tanzanie</territory>
			<territory type="UA">Ukrajina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Menší odlehlé ostrovy USA</territory>
			<territory type="US">Spojené státy</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistán</territory>
			<territory type="VA">Svatý stolec</territory>
			<territory type="VC">Svatý Vincent a Grenadiny</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britské Panenské ostrovy</territory>
			<territory type="VI">Americké Panenské ostrovy</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis a Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Jihoafrická republika</territory>
			<territory type="ZM">Zambie</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Neznámá nebo neplatná oblast</territory>
		</territories>
		<keys>
			<key type="calendar">Kalendář</key>
			<key type="collation">Třídění</key>
			<key type="currency">Měna</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">Buddhistický kalendář</type>
			<type type="chinese" key="calendar">Čínský kalendář</type>
			<type type="gregorian" key="calendar">Gregoriánský kalendář</type>
			<type type="hebrew" key="calendar">Hebrejský kalendář</type>
			<type type="islamic" key="calendar">Muslimský kalendář</type>
			<type type="islamic-civil" key="calendar">Muslimský občanský kalendář</type>
			<type type="japanese" key="calendar">Japonský kalendář</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">USA</measurementSystemName>
			<measurementSystemName type="metric">Metrický</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Jazyk: {0}</codePattern>
			<codePattern type="territory">Region: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inList>titlecase-firstword</inList>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á b c č d ď e é ě f-h {ch} i í j-n ň o ó p-r ř s š t ť u ú ů v-y ý z ž]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>‚</alternateQuotationStart>
		<alternateQuotationEnd>‘</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GuMtkHmsSEDFwWahKzUeygAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ledna</month>
							<month type="2">února</month>
							<month type="3">března</month>
							<month type="4">dubna</month>
							<month type="5">května</month>
							<month type="6">června</month>
							<month type="7">července</month>
							<month type="8">srpna</month>
							<month type="9">září</month>
							<month type="10">října</month>
							<month type="11">listopadu</month>
							<month type="12">prosince</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">1.</month>
							<month type="2">2.</month>
							<month type="3">3.</month>
							<month type="4">4.</month>
							<month type="5">5.</month>
							<month type="6">6.</month>
							<month type="7">7.</month>
							<month type="8">8.</month>
							<month type="9">9.</month>
							<month type="10">10.</month>
							<month type="11">11.</month>
							<month type="12">12.</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">l</month>
							<month type="2">ú</month>
							<month type="3">b</month>
							<month type="4">d</month>
							<month type="5">k</month>
							<month type="6">č</month>
							<month type="7">č</month>
							<month type="8">s</month>
							<month type="9">z</month>
							<month type="10">ř</month>
							<month type="11">l</month>
							<month type="12">p</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">leden</month>
							<month type="2">únor</month>
							<month type="3">březen</month>
							<month type="4">duben</month>
							<month type="5">květen</month>
							<month type="6">červen</month>
							<month type="7">červenec</month>
							<month type="8">srpen</month>
							<month type="9">září</month>
							<month type="10">říjen</month>
							<month type="11">listopad</month>
							<month type="12">prosinec</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ne</day>
							<day type="mon">po</day>
							<day type="tue">út</day>
							<day type="wed">st</day>
							<day type="thu">čt</day>
							<day type="fri">pá</day>
							<day type="sat">so</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">neděle</day>
							<day type="mon">pondělí</day>
							<day type="tue">úterý</day>
							<day type="wed">středa</day>
							<day type="thu">čtvrtek</day>
							<day type="fri">pátek</day>
							<day type="sat">sobota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">N</day>
							<day type="mon">P</day>
							<day type="tue">Ú</day>
							<day type="wed">S</day>
							<day type="thu">Č</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. čtvrtletí</quarter>
							<quarter type="2">2. čtvrtletí</quarter>
							<quarter type="3">3. čtvrtletí</quarter>
							<quarter type="4">4. čtvrtletí</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>dop.</am>
				<pm>odp.</pm>
				<eras>
					<eraAbbr>
						<era type="0">př.Kr.</era>
						<era type="1">po Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.-M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M. - E, d.M.</greatestDifference>
							<greatestDifference id="d">E, d.M. - E, d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M. - d.M.</greatestDifference>
							<greatestDifference id="d">d.M. - d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yy - M.yy</greatestDifference>
							<greatestDifference id="y">M.yy - M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="d">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="y">E, d.M.yy - E, d.M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d. MMM yyyy - E, d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">LLLL-LLLL yyyy</greatestDifference>
							<greatestDifference id="y">LLLL yyyy - LLLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="d">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="y">d.M.yy - d.M.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Epocha</displayName>
					</field>
					<field type="year">
						<displayName>Rok</displayName>
					</field>
					<field type="month">
						<displayName>Měsíc</displayName>
					</field>
					<field type="week">
						<displayName>Týden</displayName>
					</field>
					<field type="day">
						<displayName>Den</displayName>
						<relative type="0">Dnes</relative>
						<relative type="1">Zítra</relative>
						<relative type="2">Pozítří</relative>
						<relative type="-1">Včera</relative>
						<relative type="-2">Předevčírem</relative>
					</field>
					<field type="weekday">
						<displayName>Den v týdnu</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Část dne</displayName>
					</field>
					<field type="hour">
						<displayName>Hodina</displayName>
					</field>
					<field type="minute">
						<displayName>Minuta</displayName>
					</field>
					<field type="second">
						<displayName>Sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>Pásmo</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Není známo</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubaj</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kábul</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevan</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Jižní pól</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Kordoba</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Vídeň</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Dháka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brusel</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofie</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrajn</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudy</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Brunej</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Curych</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Velikonoční ostrov</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kašghar</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Šanghaj</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kapverdy</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Vánoční ostrov</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Lefkosía</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlín</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kodaň</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžír</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapágy</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Káhira</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanárské ostrovy</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Paříž</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londýn</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atény</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Jižní Georgia</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapešť</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jeruzalém</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdád</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teherán</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reykjavík</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Řím</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Ammán</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biškek</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Phnompenh</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Pchjongjang</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Soul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvajt</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Bejrút</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Lucembursko</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Tripolis</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Rangún</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulánbátar</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinik</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricius</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maledivy</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Tichuana</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karáčí</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšava</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portoriko</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorské ostrovy</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukurešť</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekatěrinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijád</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Chartúm</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sv. Helena</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadišo</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Svatý Tomáš</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damašek</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dušanbe</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ašgabad</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užhorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kyjev</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Záporoží</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Aljašský čas</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Alaska">
				<long>
					<standard>Aljašský standardní čas</standard>
					<daylight>Aljašský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<standard>Centrální standardní čas</standard>
					<daylight>Centrální letní čas</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<standard>Východní standardní čas</standard>
					<daylight>Východní letní čas</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<standard>Horský standardní čas</standard>
					<daylight>Horský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<standard>Pacifický standardní čas</standard>
					<daylight>Pacifický letní čas</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<standard>Atlantický standardní čas</standard>
					<daylight>Atlantický letní čas</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Čínský standardní čas</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Středoevropský standardní čas</standard>
					<daylight>Středoevropský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Východoevropský standardní čas</standard>
					<daylight>Východoevropský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwichský střední čas</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Izraelský standardní čas</standard>
					<daylight>Izraelský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Japonský standardní čas</standard>
					<daylight>Japonský letní čas</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>Newfoundlandský standardní čas</standard>
					<daylight>Newfoundlandský letní čas</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Peseta andorrská</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirham SAE</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghán (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghán</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dram arménský</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Zlatý Nizozemských Antil</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Kwanza nová (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Peso argentinské (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso argentinské</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Šilink</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dolar australský</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Zlatý arubský</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Manat ázerbajdžánský</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Dinár Bosny a Hercegoviny</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Marka konvertibilní</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Dolar barbadoský</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Frank konvertibilní</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Frank belgický</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Frank finanční</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Lev</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Lev Bulharský</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Dinár bahrajnský</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Frank burundský</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Dolar bermudský</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Dolar brunejský</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Cruzeiro (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real brazilský</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Cruzado nové</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro real</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Dolar bahamský</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Kyat barmský</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Rubl nový běloruský (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Rubl běloruský</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Dolar belizský</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Dolar kanadský</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Frank konžský</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Frank švýcarský</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso chilské</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Juan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Peso kolumbijské</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Colón kostarický</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Koruna československá</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso kubánské</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Escudo kapverdské</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Libra kyperská</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Koruna česká</displayName>
				<symbol>Kč</symbol>
			</currency>
			<currency type="DDM">
				<displayName>Marka NDR</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marka německá</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Frank džibutský</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Koruna dánská</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Peso dominikánské</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Dinár alžírský</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Sucre ekvádorský</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuador Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Libra egyptská</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Nakfa</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Peseta španělská</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Birr etiopský</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Markka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dolar fidžijský</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Libra falklandská</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Frank francouzský</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Libra šterlinků</displayName>
			</currency>
			<currency type="GEK">
				<displayName>Georgian Kupon Larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Libra gibraltarská</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Frank guinejský</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guinea Syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Equatorial Guinea Ekwele Guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Drachma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Escudo guinejské</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Peso Guinnea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Dolar guyanský</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Dolar hongkongský</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Dinar chorvatský</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna chorvatská</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Rupie indonézská</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Libra irská</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Libra izraelská</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Šekel nový izraelský</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupie indická</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Dinár irácký</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Rijál íránský</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Koruna islandská</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lira italská</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Dolar jamajský</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Dinár jordánský</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Jen</displayName>
			</currency>
			<currency type="KES">
				<displayName>Šilink keňský</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Frank komorský</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Won severokorejský</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won jihokorejský</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Dinár kuvajtský</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Dolar Kajmanských ostrovů</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libra libanonská</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Rupie srílanská</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Dolar liberijský</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Litus litevský</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Talon</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Frank lucemburský</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lat lotyšský</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Rubl lotyšský</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Dinár lybijský</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Dirham marocký</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Frank marocký</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Leu moldavský</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ariary madagaskarský</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Frank madagaskarský</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Denár</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Frank malijský</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Lira maltská</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Libra maltská</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Rupie mauricijská</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Kwacha malawská</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Peso mexické</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Peso stříbrné mexické (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexican Unidad de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit malajskijský</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Escudo Mosambiku</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Dolar namibijský</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Cordoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Zlatý holandský</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Koruna norská</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Rupie nepálská</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Dolar novozélandský</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Rijál ománský</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Nuevo sol</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso filipínské</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupie pákistánská</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Zlotý</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Zlotý (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escudo portugalské</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Rijál katarský</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Lei</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Leu rumunské</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Dinár srbský</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rubl ruský</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rubl ruský (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Frank rwandský</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Rijál saudský</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Dolar Šalamounových ostrovů</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Rupie seychelská</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Dinár súdánský</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Libra súdánská</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Koruna švédská</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Dolar singapurský</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Libra Svaté Heleny</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Koruna slovenská</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Šilink somálský</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Zlatý surinamský</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Rubl</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colon salvadorský</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Libra syrská</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tajikistan Ruble</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Dinár tuniský</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Paʻanga</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Escudo timorské</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira turecká</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Lira nová turecká</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Dolar Trinidad a Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Dolar tchajvanský nový</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Šilink tanzanský</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hřivna</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanec</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Šilink ugandský (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Šilink ugandský</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Dolar americký</displayName>
			</currency>
			<currency type="USN">
				<displayName>Dolar americký (příští den)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Dolar americký (týž den)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Peso uruguayské (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Peso uruguayské</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Sum uzbecký</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Dong vietnamský</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Frank BEAC/CFA</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Zlato</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Evropská smíšená jednotka</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Evropská peněžní jednotka</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Evropská jednotka účtu 9 (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Evropská jednotka účtu 17 (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Dolar východokaribský</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>SDR</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Evropská měnová jednotka</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Frank zlatý</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Frank UIC</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Frank BCEAO/CFA</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Frank CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Neznámá nebo neplatná měna</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>Dinár jemenský</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rijál jemenský</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Dinár jugoslávský nový [YUD]</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Dinár jugoslávský nový [YUM]</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Dinár jugoslávský konvertibilní</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Rand finanční</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Kwacha zambijská</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zaire nový</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Dolar zimbabwský</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} dny</unitPattern>
			<unitPattern count="one">{0} den</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hodina</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuta</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} měsíc</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekunda</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} týden</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} rok</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ano:a</yesstr>
			<nostr>ne:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��:�##Locale/Data/km_KH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="km"/>
		<territory type="KH"/>
	</identity>
</ldml>
PKpG[L�@g����Locale/Data/ga.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.65 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="ga"/>
	</identity>
	<fallback>en_IE</fallback>
	<localeDisplayNames>
		<languages>
			<language type="aa">aa</language>
			<language type="ab">Abcáisis</language>
			<language type="ae">Aivéistis</language>
			<language type="af">Afracáinis</language>
			<language type="am">Amarais</language>
			<language type="ar">Araibis</language>
			<language type="as">Asaimis</language>
			<language type="az">Asarbaiseáinis</language>
			<language type="ba">Baiscíris</language>
			<language type="be">Bealarúisis</language>
			<language type="bg">Bulgáiris</language>
			<language type="bh">Bihairis</language>
			<language type="bn">Beangáilis</language>
			<language type="bo">Tibéadais</language>
			<language type="br">Briotáinis</language>
			<language type="bs">Boisnis</language>
			<language type="ca">Catalóinis</language>
			<language type="ce">Sisinis</language>
			<language type="co">Corsaicis</language>
			<language type="cr">Craíais</language>
			<language type="cs">Seicis</language>
			<language type="cu">Slavais na hEaglaise</language>
			<language type="cv">Suvaisis</language>
			<language type="cy">Breatnais</language>
			<language type="da">Danmhairgis</language>
			<language type="de">Gearmáinis</language>
			<language type="el">Gréigis</language>
			<language type="en">Béarla</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spáinnis</language>
			<language type="et">Eastóinis</language>
			<language type="eu">Bascais</language>
			<language type="fa">Peirsis</language>
			<language type="fi">Fionlainnis</language>
			<language type="fil">fil</language>
			<language type="fj">Fidsis</language>
			<language type="fo">Faróis</language>
			<language type="fr">Fraincis</language>
			<language type="fy">Freaslainnis Iartharach</language>
			<language type="ga">Gaeilge</language>
			<language type="gd">Gaeilge na hAlban</language>
			<language type="gl">Gailísis</language>
			<language type="gn">Guaráinis</language>
			<language type="gu">Gúisearáitis</language>
			<language type="gv">Mannainis</language>
			<language type="haw">Haváíais</language>
			<language type="he">Eabhrais</language>
			<language type="hi">Hiondúis</language>
			<language type="hr">Cróitis</language>
			<language type="hu">Ungáiris</language>
			<language type="hy">Airméinis</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indinéisis</language>
			<language type="ie">Interlingue</language>
			<language type="ik">Inupiaq</language>
			<language type="io">Ido</language>
			<language type="is">Íoslainnis</language>
			<language type="it">Iodáilis</language>
			<language type="iu">Ionúitis</language>
			<language type="ja">Seapáinis</language>
			<language type="jv">Iávais</language>
			<language type="ka">Seoirsis</language>
			<language type="kk">Casachais</language>
			<language type="km">Cambóidis</language>
			<language type="kn">Cannadais</language>
			<language type="ko">Cóiréis</language>
			<language type="ks">Caismíris</language>
			<language type="ku">Coirdis</language>
			<language type="kw">Cornais</language>
			<language type="ky">Cirgeasais</language>
			<language type="la">Laidin</language>
			<language type="lb">Leitseabuirgis</language>
			<language type="ln">ln</language>
			<language type="lo">Laosais</language>
			<language type="lt">Liotuáinis</language>
			<language type="lv">Laitvis</language>
			<language type="mg">Malagásais</language>
			<language type="mi">Maorais</language>
			<language type="mk">Macadóinis</language>
			<language type="ml">Mailéalaimis</language>
			<language type="mn">Mongóilis</language>
			<language type="mo">Moldáivis</language>
			<language type="mr">Maraitis</language>
			<language type="ms">Malaeis</language>
			<language type="mt">Maltais</language>
			<language type="my">Burmais</language>
			<language type="na">Nárúis</language>
			<language type="nb">Ioruais Bokmål</language>
			<language type="ne">Neipealais</language>
			<language type="nl">Ollainnis</language>
			<language type="nn">Ioruais Nynorsk</language>
			<language type="no">Ioruais</language>
			<language type="nv">Navachóis</language>
			<language type="oc">Ocatáinis</language>
			<language type="or">Oraisis</language>
			<language type="os">Óiséitis</language>
			<language type="pa">Puinseáibis</language>
			<language type="pl">Polainnis</language>
			<language type="ps">Paistis</language>
			<language type="pt">Portaingéilis</language>
			<language type="pt_BR">Portaingéilis Bhrasaíleach</language>
			<language type="pt_PT">Portaingéilis Ibéireach</language>
			<language type="qu">Ceatsuais</language>
			<language type="ro">Rómáinis</language>
			<language type="ru">Rúisis</language>
			<language type="sa">Sanscrait</language>
			<language type="sc">Sairdínis</language>
			<language type="sd">Sindis</language>
			<language type="se">Sáimis Thuaidh</language>
			<language type="sh">Seirbea-Chróitis</language>
			<language type="si">Siolóinis</language>
			<language type="sk">Slóvaicis</language>
			<language type="sl">Slóivéinis</language>
			<language type="sm">Samóis</language>
			<language type="so">Somáilis</language>
			<language type="sq">Albáinis</language>
			<language type="sr">Seirbis</language>
			<language type="st">Sótais Dheisceartach</language>
			<language type="su">Sundais</language>
			<language type="sv">Sualainnis</language>
			<language type="sw">Svahaílis</language>
			<language type="ta">Tamailis</language>
			<language type="te">Teileagúis</language>
			<language type="th">Téalainnis</language>
			<language type="ti">Tigrinis</language>
			<language type="tk">Tuircméinis</language>
			<language type="tl">Tagálaigis</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Tuircis</language>
			<language type="tt">Tatarais</language>
			<language type="tw">Tvís</language>
			<language type="ty">Taihítis</language>
			<language type="ug">ug</language>
			<language type="uk">Úcráinis</language>
			<language type="und">Teanga Anaithnid nó Neamhbhailí</language>
			<language type="ur">Urdais</language>
			<language type="uz">Úisbéicis</language>
			<language type="vi">Vítneamais</language>
			<language type="wa">Vallúnais</language>
			<language type="xh">Cósais</language>
			<language type="yi">Giúdais</language>
			<language type="zh">Sínis</language>
			<language type="zh_Hans">Sínis Shimplithe</language>
			<language type="zh_Hant">Sínis Thraidisiúnta</language>
			<language type="zu">Súlúis</language>
		</languages>
		<scripts>
			<script type="Arab">Arabach</script>
			<script type="Armn">Airméanach</script>
			<script type="Beng">Beangálach</script>
			<script type="Brai">Braille</script>
			<script type="Cyrl">Coireallach</script>
			<script type="Deva">Déiveanágrach</script>
			<script type="Ethi">Aetópach</script>
			<script type="Goth">Gotach</script>
			<script type="Grek">Gréagach</script>
			<script type="Gujr">Gúisearátach</script>
			<script type="Guru">Gurmúcach</script>
			<script type="Hang">Hangalach</script>
			<script type="Hani">Han</script>
			<script type="Hans">Han Símplithe</script>
			<script type="Hant">Han Traidisiúnta</script>
			<script type="Hebr">Eabhrach</script>
			<script type="Hira">Híreagánach</script>
			<script type="Hrkt">Catacánach nó Híreagánach</script>
			<script type="Jpan">Seapánach</script>
			<script type="Kana">Catacánach</script>
			<script type="Knda">Cannadach</script>
			<script type="Kore">Cóiréach</script>
			<script type="Latg">Cló Gaelach</script>
			<script type="Latn">Laidineach</script>
			<script type="Mlym">Mailéalamach</script>
			<script type="Mong">Mongólach</script>
			<script type="Ogam">Ogham</script>
			<script type="Orya">Oiríseach</script>
			<script type="Runr">Rúnach</script>
			<script type="Taml">Tamalach</script>
			<script type="Telu">Teileagúch</script>
			<script type="Thai">Téallanach</script>
			<script type="Tibt">Tibéadach</script>
			<script type="Zxxx">Gan Scríobh</script>
			<script type="Zzzz">Script Anaithnid nó Neamhbhailí</script>
		</scripts>
		<territories>
			<territory type="001">An Domhan</territory>
			<territory type="002">An Afraic</territory>
			<territory type="009">An Aigéine</territory>
			<territory type="013">Meiriceá Láir</territory>
			<territory type="017">An Afraic Láir</territory>
			<territory type="019">Na Meiriceánna</territory>
			<territory type="053">An Astráil agus an Nua-Shéalainn</territory>
			<territory type="054">An Mheilinéis</territory>
			<territory type="057">An Réigiún Micrinéiseach</territory>
			<territory type="061">An Pholainéis</territory>
			<territory type="142">An Áise</territory>
			<territory type="143">An Áise Láir</territory>
			<territory type="150">An Eoraip</territory>
			<territory type="172">Comhlathas na Stát Neamhspleácha</territory>
			<territory type="419">Meiriceá Laidineach agus an Mhuir Chairib</territory>
			<territory type="AD">Andóra</territory>
			<territory type="AE">Aontas na nÉimíríochtaí Arabacha</territory>
			<territory type="AF">An Afganastáin</territory>
			<territory type="AG">Aintíge agus Barbúda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">An Albáin</territory>
			<territory type="AM">An Airméin</territory>
			<territory type="AN">Antillí na hÍsiltíre</territory>
			<territory type="AO">Angóla</territory>
			<territory type="AQ">An Antartaice</territory>
			<territory type="AR">An Airgintín</territory>
			<territory type="AS">Samó Meiriceánach</territory>
			<territory type="AT">An Ostair</territory>
			<territory type="AU">An Astráil</territory>
			<territory type="AW">Arúba</territory>
			<territory type="AX">Oileáin Alaind</territory>
			<territory type="AZ">An Asarbaiseáin</territory>
			<territory type="BA">An Bhoisnia agus Heirseagóvéin</territory>
			<territory type="BB">Barbadós</territory>
			<territory type="BD">An Bhanglaidéis</territory>
			<territory type="BE">An Bheilg</territory>
			<territory type="BF">Buircíne Fasó</territory>
			<territory type="BG">An Bhulgáir</territory>
			<territory type="BH">Bairéin</territory>
			<territory type="BI">An Bhurúin</territory>
			<territory type="BJ">Beinin</territory>
			<territory type="BM">Beirmiúda</territory>
			<territory type="BN">Brúiné</territory>
			<territory type="BO">An Bholaiv</territory>
			<territory type="BR">An Bhrasaíl</territory>
			<territory type="BS">Na Bahámaí</territory>
			<territory type="BT">An Bhútáin</territory>
			<territory type="BV">Oileán Bouvet</territory>
			<territory type="BW">An Bhotsuáin</territory>
			<territory type="BY">An Bhealarúis</territory>
			<territory type="BZ">An Bheilís</territory>
			<territory type="CA">Ceanada</territory>
			<territory type="CC">Oileáin na gCócónna</territory>
			<territory type="CD">Poblacht Dhaonlathach an Chongó</territory>
			<territory type="CF">Poblacht na hAfraice Láir</territory>
			<territory type="CG">An Congó</territory>
			<territory type="CH">An Eilvéis</territory>
			<territory type="CI">An Cósta Eabhair</territory>
			<territory type="CK">Oileáin Cook</territory>
			<territory type="CL">An tSile</territory>
			<territory type="CM">Camarún</territory>
			<territory type="CN">An tSín</territory>
			<territory type="CO">An Cholóim</territory>
			<territory type="CR">Cósta Ríce</territory>
			<territory type="CS">An tSeirbia agus Montainéagró</territory>
			<territory type="CU">Cúba</territory>
			<territory type="CV">An Rinn Ghlas</territory>
			<territory type="CX">Oileán na Nollag</territory>
			<territory type="CY">An Chipir</territory>
			<territory type="CZ">Poblacht na Seice</territory>
			<territory type="DE">An Ghearmáin</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">An Danmhairg</territory>
			<territory type="DM">Doiminice</territory>
			<territory type="DO">An Phoblacht Dhoiminiceach</territory>
			<territory type="DZ">An Ailgéir</territory>
			<territory type="EC">Eacuadór</territory>
			<territory type="EE">An Eastóin</territory>
			<territory type="EG">An Éigipt</territory>
			<territory type="EH">An Sahára Thiar</territory>
			<territory type="ER">An Eiritré</territory>
			<territory type="ES">An Spáinn</territory>
			<territory type="ET">An Aetóip</territory>
			<territory type="FI">An Fhionlainn</territory>
			<territory type="FJ">Fidsí</territory>
			<territory type="FK">Oileáin Fháclainne</territory>
			<territory type="FM">An Mhicrinéis</territory>
			<territory type="FO">Oileáin Fharó</territory>
			<territory type="FR">An Fhrainc</territory>
			<territory type="GA">An Ghabúin</territory>
			<territory type="GB">An Ríocht Aontaithe</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">An tSeoirsia</territory>
			<territory type="GF">An Ghuáin Fhrancach</territory>
			<territory type="GG">Geansaí</territory>
			<territory type="GH">Gána</territory>
			<territory type="GI">Giobráltar</territory>
			<territory type="GL">An Ghraonlainn</territory>
			<territory type="GM">An Ghaimbia</territory>
			<territory type="GN">An Ghuine</territory>
			<territory type="GP">Guadalúip</territory>
			<territory type="GQ">An Ghuine Mheánchriosach</territory>
			<territory type="GR">An Ghréig</territory>
			<territory type="GS">An tSeoirsia Theas agus Oileáin Sandwich Theas</territory>
			<territory type="GT">Guatamala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">An Ghuine-Bhissau</territory>
			<territory type="GY">An Ghuáin</territory>
			<territory type="HK">Hong Cong</territory>
			<territory type="HM">Oileán Heard agus Oileáin McDonald</territory>
			<territory type="HN">Hondúras</territory>
			<territory type="HR">An Chróit</territory>
			<territory type="HT">Háití</territory>
			<territory type="HU">An Ungáir</territory>
			<territory type="ID">An Indinéis</territory>
			<territory type="IE">Éire</territory>
			<territory type="IL">Iosrael</territory>
			<territory type="IM">Oileán Mhanann</territory>
			<territory type="IN">An India</territory>
			<territory type="IO">Críocha Briotanacha an Aigéin Indiagh</territory>
			<territory type="IQ">An Iaráic</territory>
			<territory type="IR">An Iaráin</territory>
			<territory type="IS">An Íoslainn</territory>
			<territory type="IT">An Iodáil</territory>
			<territory type="JE">Geirsí</territory>
			<territory type="JM">Iamáice</territory>
			<territory type="JO">An Iordáin</territory>
			<territory type="JP">An tSeapáin</territory>
			<territory type="KE">An Chéinia</territory>
			<territory type="KG">An Chirgeastáin</territory>
			<territory type="KH">An Chambóid</territory>
			<territory type="KI">Ciribeas</territory>
			<territory type="KM">Oileáin Chomóra</territory>
			<territory type="KN">Saint Kitts agus Nevis</territory>
			<territory type="KP">An Chóiré Thuaidh</territory>
			<territory type="KR">An Chóiré Theas</territory>
			<territory type="KW">Cuáit</territory>
			<territory type="KY">Oileáin na gCadhman</territory>
			<territory type="KZ">An Chasacstáin</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">An Liobáin</territory>
			<territory type="LC">San Lúisia</territory>
			<territory type="LI">Lichtinstéin</territory>
			<territory type="LK">Srí Lanca</territory>
			<territory type="LR">An Libéir</territory>
			<territory type="LS">Leosóta</territory>
			<territory type="LT">An Liotuáin</territory>
			<territory type="LU">Lucsamburg</territory>
			<territory type="LV">An Laitvia</territory>
			<territory type="LY">An Libia</territory>
			<territory type="MA">Maracó</territory>
			<territory type="MC">Monacó</territory>
			<territory type="MD">An Mholdóiv</territory>
			<territory type="ME">Montainéagró</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Oileáin Marshall</territory>
			<territory type="MK">An Mhacadóin</territory>
			<territory type="ML">Mailí</territory>
			<territory type="MM">Maenmar</territory>
			<territory type="MN">An Mhongóil</territory>
			<territory type="MO">Macáó</territory>
			<territory type="MP">Oileáin Mariana Thuaidh</territory>
			<territory type="MQ">Martainíc</territory>
			<territory type="MR">An Mharatáin</territory>
			<territory type="MS">Montsarat</territory>
			<territory type="MT">Málta</territory>
			<territory type="MU">Oileán Mhuirís</territory>
			<territory type="MV">Na Maildiví</territory>
			<territory type="MW">An Mhaláiv</territory>
			<territory type="MX">Meicsiceo</territory>
			<territory type="MY">An Mhalaeisia</territory>
			<territory type="MZ">Mósaimbíc</territory>
			<territory type="NA">An Namaib</territory>
			<territory type="NC">An Nua-Chaladóin</territory>
			<territory type="NE">An Nígir</territory>
			<territory type="NF">Oileán Norfolk</territory>
			<territory type="NG">An Nigéir</territory>
			<territory type="NI">Nicearagua</territory>
			<territory type="NL">An Ísiltír</territory>
			<territory type="NO">An Iorua</territory>
			<territory type="NP">Neipeal</territory>
			<territory type="NR">Nárú</territory>
			<territory type="NU">Nívé</territory>
			<territory type="NZ">An Nua-Shéalainn</territory>
			<territory type="OM">Óman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peiriú</territory>
			<territory type="PF">An Pholainéis Fhrancach</territory>
			<territory type="PG">Nua-Ghuine Phapua</territory>
			<territory type="PH">Na hOileáin Fhilipíneacha</territory>
			<territory type="PK">An Phacastáin</territory>
			<territory type="PL">An Pholainn</territory>
			<territory type="PM">Saint Pierre agus Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portó Ríce</territory>
			<territory type="PS">Na Críocha Pailistíneacha</territory>
			<territory type="PT">An Phortaingéil</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragua</territory>
			<territory type="QA">Catar</territory>
			<territory type="QO">An Aigéine Imeallach</territory>
			<territory type="QU">An tAontas Eorpach</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">An Rómáin</territory>
			<territory type="RS">An tSeirbia</territory>
			<territory type="RU">Cónaidhm na Rúise</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">An Araib Shádach</territory>
			<territory type="SB">Oileáin Sholaimh</territory>
			<territory type="SC">Na Séiséil</territory>
			<territory type="SD">An tSúdáin</territory>
			<territory type="SE">An tSualainn</territory>
			<territory type="SG">Singeapór</territory>
			<territory type="SH">San Héilin</territory>
			<territory type="SI">An tSlóvéin</territory>
			<territory type="SJ">Svalbard agus Jan Mayen</territory>
			<territory type="SK">An tSlóvaic</territory>
			<territory type="SL">Siarra Leon</territory>
			<territory type="SM">San Mairíne</territory>
			<territory type="SN">An tSeineagáil</territory>
			<territory type="SO">An tSomáil</territory>
			<territory type="SR">Suranam</territory>
			<territory type="ST">Sao Tome agus Principe</territory>
			<territory type="SV">An tSalvadóir</territory>
			<territory type="SY">An tSiria</territory>
			<territory type="SZ">An tSuasalainn</territory>
			<territory type="TC">Oileáin Turks agus Caicos</territory>
			<territory type="TD">Sead</territory>
			<territory type="TF">Críocha Deisceartacha na Fraince</territory>
			<territory type="TG">Tóga</territory>
			<territory type="TH">An Téalainn</territory>
			<territory type="TJ">An Táidsíceastáin</territory>
			<territory type="TK">Tócalá</territory>
			<territory type="TL">Tíomór Thoir</territory>
			<territory type="TM">An Tuircméanastáin</territory>
			<territory type="TN">An Túinéis</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">An Tuirc</territory>
			<territory type="TT">Oileáin na Tríonóide agus Tobága</territory>
			<territory type="TV">Túválú</territory>
			<territory type="TW">An Téaváin</territory>
			<territory type="TZ">An Tansáin</territory>
			<territory type="UA">An Úcráin</territory>
			<territory type="UG">Úganda</territory>
			<territory type="UM">Mion-Oileáin Imeallacha S.A.M.</territory>
			<territory type="US">Stáit Aontaithe Mheiriceá</territory>
			<territory type="UY">Urugua</territory>
			<territory type="UZ">Úisbéiceastáin</territory>
			<territory type="VA">An Vatacáin</territory>
			<territory type="VC">Saint Vincent agus na Grenadines</territory>
			<territory type="VE">Veiniséala</territory>
			<territory type="VG">Oileáin Bhriotanacha na Maighdean</territory>
			<territory type="VI">Oileáin na Maighdean S.A.M.</territory>
			<territory type="VN">Vít Neam</territory>
			<territory type="VU">Vanuatú</territory>
			<territory type="WF">Oileáin Vailís agus Futúna</territory>
			<territory type="WS">Samó</territory>
			<territory type="YE">Éimin</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">An Afraic Theas</territory>
			<territory type="ZM">An tSaimbia</territory>
			<territory type="ZW">An tSiombáib</territory>
			<territory type="ZZ">Réigiún Anaithnid nó Neamhbhailí</territory>
		</territories>
		<keys>
			<key type="calendar">Féilire</key>
			<key type="collation">Comhordú</key>
			<key type="currency">Airgeadra</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Ord sórtála Síneach traidisiúnta - Big5</type>
			<type type="buddhist" key="calendar">Féilire Búdaíoch</type>
			<type type="chinese" key="calendar">Féilire Síneach</type>
			<type type="direct" key="collation">Ord sórtála díreach</type>
			<type type="gb2312han" key="collation">Ord sórtála Síneach simplithe - GB 2312</type>
			<type type="gregorian" key="calendar">Féilire Greagórach</type>
			<type type="hebrew" key="calendar">Féilire Eabhrach</type>
			<type type="islamic" key="calendar">Féilire Ioslamach</type>
			<type type="islamic-civil" key="calendar">Féilire Ioslamach Sibhialta</type>
			<type type="japanese" key="calendar">Féilire Seapánach</type>
			<type type="phonebook" key="collation">Ord sórtála an eolaire teileafóin</type>
			<type type="pinyin" key="collation">Ord sórtála pinyin</type>
			<type type="stroke" key="collation">Ord sórtála stríce</type>
			<type type="traditional" key="collation">Ord sórtála traidisiúnta</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Meiriceánach</measurementSystemName>
			<measurementSystemName type="metric">Méadrach</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á b-e é f-i í j-o ó p-u ú v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ḃ ċ ḋ ḟ ġ ṁ ṗ ṡ ṫ]</exemplarCharacters>
	</characters>
	<dates>
		<localizedPatternChars>RbMLkUnsSElFtTauKcBeyrACvdz</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ean</month>
							<month type="2">Feabh</month>
							<month type="3">Márta</month>
							<month type="4">Aib</month>
							<month type="5">Beal</month>
							<month type="6">Meith</month>
							<month type="7">Iúil</month>
							<month type="8">Lún</month>
							<month type="9">MFómh</month>
							<month type="10">DFómh</month>
							<month type="11">Samh</month>
							<month type="12">Noll</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Eanáir</month>
							<month type="2">Feabhra</month>
							<month type="3">Márta</month>
							<month type="4">Aibreán</month>
							<month type="5">Bealtaine</month>
							<month type="6">Meitheamh</month>
							<month type="7">Iúil</month>
							<month type="8">Lúnasa</month>
							<month type="9">Meán Fómhair</month>
							<month type="10">Deireadh Fómhair</month>
							<month type="11">Samhain</month>
							<month type="12">Nollaig</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">E</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">B</month>
							<month type="6">M</month>
							<month type="7">I</month>
							<month type="8">L</month>
							<month type="9">M</month>
							<month type="10">D</month>
							<month type="11">S</month>
							<month type="12">N</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Domh</day>
							<day type="mon">Luan</day>
							<day type="tue">Máirt</day>
							<day type="wed">Céad</day>
							<day type="thu">Déar</day>
							<day type="fri">Aoine</day>
							<day type="sat">Sath</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Dé Domhnaigh</day>
							<day type="mon">Dé Luain</day>
							<day type="tue">Dé Máirt</day>
							<day type="wed">Dé Céadaoin</day>
							<day type="thu">Déardaoin</day>
							<day type="fri">Dé hAoine</day>
							<day type="sat">Dé Sathairn</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">C</day>
							<day type="thu">D</day>
							<day type="fri">A</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">R1</quarter>
							<quarter type="2">R2</quarter>
							<quarter type="3">R3</quarter>
							<quarter type="4">R4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1ú ráithe</quarter>
							<quarter type="2">2ú ráithe</quarter>
							<quarter type="3">3ú ráithe</quarter>
							<quarter type="4">4ú ráithe</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.m.</am>
				<pm>p.m.</pm>
				<eras>
					<eraNames>
						<era type="0">Roimh Chríost</era>
						<era type="1">Anno Domini</era>
					</eraNames>
					<eraAbbr>
						<era type="0">RC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Ré</displayName>
					</field>
					<field type="year">
						<displayName>Bliain</displayName>
					</field>
					<field type="month">
						<displayName>Mí</displayName>
					</field>
					<field type="week">
						<displayName>Seachtain</displayName>
					</field>
					<field type="day">
						<displayName>Lá</displayName>
						<relative type="0">Inniu</relative>
						<relative type="1">Amárach</relative>
						<relative type="2">Arú amárach</relative>
						<relative type="-1">Inné</relative>
						<relative type="-2">Arú inné</relative>
					</field>
					<field type="weekday">
						<displayName>Lá na seachtaine</displayName>
					</field>
					<field type="dayperiod">
						<displayName>a.m./p.m.</displayName>
					</field>
					<field type="hour">
						<displayName>Uair</displayName>
					</field>
					<field type="minute">
						<displayName>Nóiméad</displayName>
					</field>
					<field type="second">
						<displayName>Soicind</displayName>
					</field>
					<field type="zone">
						<displayName>Crios</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>MAG{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Anaithnid</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<long>
					<daylight>Am Samhraidh na Breataine</daylight>
				</long>
				<short>
					<daylight>ASB</daylight>
				</short>
				<exemplarCity>Londain</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<long>
					<daylight>Am Samhraidh na hÉireann</daylight>
				</long>
				<short>
					<daylight>ASÉ</daylight>
				</short>
				<exemplarCity>Baile Átha Cliath</exemplarCity>
			</zone>
			<metazone type="GMT">
				<long>
					<standard>Meán-Am Greenwich</standard>
				</long>
				<short>
					<standard>MAG</standard>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Peseta Andóra</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirham Aontas na nÉimíríochtaí Arabacha</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afgainí (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afgainí</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Lek Albánach</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dram Airméanach</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Guilder na nAntillí Ísiltíreach</displayName>
				<symbol>AÍ f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza Angólach</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Kwanza Angólach (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Kwanza Nua Angólach (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza Reajustado Angólach (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral Airgintíneach</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Peso na Airgintíne (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso na Airgintíne</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Scilling Ostarach</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dollar Astrálach</displayName>
				<symbol>A$</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Guilder Aruba</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Manat Asarbaiseánach</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Dínear Bhoisnia-Heirseagaivéin</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Marc Inathraithe Bhoisnia-Heirseagaivéin</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Dollar Bharbadóis</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka Bhanglaidéiseach</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Franc Beilgeach (inathraithe)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franc Beilgeach</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Franc Beilgeach (airgeadúil)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Lev Bulgárach Crua</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Lev Nua Bulgárach</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Dínear na Bairéine</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Franc na Burúine</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Dollar Bheirmiúda</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Dollar Bhrúiné</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Peso na Bolaive</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol Bolavach</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Cruzeiro Novo Brasaíleach (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado Brasaíleach</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro Brasaíleach (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real Brasaíleach</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Cruzado Novo Brasaíleach</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro Brasaíleach</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Dollar na mBahámaí</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Ngultrum Bútánach</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Kyat Burmach</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Pula Botsuánach</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Rúbal Nua Béalarúiseach (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Rúbal Béalarúiseach</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Dollar na Beilíse</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Dollar Ceanada</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Franc Congolais an Chongó</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franc na hEilvéise</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento na Sile</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso na Sile</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi Síneach</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Peso na Colóime</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Colon Chósta Ríce</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Koruna Crua na Seicslóvaice</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso Cúba</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Escudo na Rinne Verde</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Punt na Cipire</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Koruna Phoblacht na Seice</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Ostmark na hOirGhearmáine</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Deutsche Mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Franc Djibouti</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Krone Danmhargach</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Peso Doimineacach</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Dínear na hAilgéire</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Sucre Eacuadóir</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidad de Valor Constante (UVC) Eacuadóir</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Kroon na hEastóine</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Punt na hÉigipte</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Peseta Spáinneach</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Birr na hAetóipe</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Markka Fionnlannach</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dollar Fhidsí</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Punt Oileáin Fháclainne</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franc Francach</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Punt Steirling</displayName>
			</currency>
			<currency type="GEK">
				<displayName>Kupon Larit na Grúise</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Lari na Grúise</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Cedi Ghána</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Punt Ghiobráltair</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi Gaimbia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franc Guine</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Syli Guine</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele Guineana na Guine Meánchriosaí</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Drachma Gréagach</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal Guatamala</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Escudo na Guine Portaingéalaí</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Peso Guine-Bhissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Dollar na Guáine</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Dollar Hong Cong</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Lempira Hondúrais</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Dínear na Cróite</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna Crótach</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde Háití</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forint Ungárach</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Rupiah Indinéiseach</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Punt Éireannach</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Punt Iosraelach</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Sheqel Nua Iosraelach</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rúipí India</displayName>
			</currency>
			<currency type="IQD">
				<displayName>Dínear Irácach</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Rial Iaránach</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Krona Íoslannach</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lira Iodálach</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Dollar Iamácach</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Dínear Iordánach</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Yen Seapánach</displayName>
			</currency>
			<currency type="KES">
				<displayName>Scilling Céiniach</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Som na Cirgeastáine</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Riel na Cambóide</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Franc Chomóra</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Won na Cóiré Thuaidh</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won na Cóiré Theas</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Dínear Cuátach</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Dollar Oileáin Cayman</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Tenge Casacstánach</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Kip Laosach</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Punt na Liobáine</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Rúipí Srí Lanca</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Dollar na Libéire</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Loti Leosóta</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Lita Liotuánach</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Talonas Liotuánach</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Franc Lucsamburg</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lats Laitviach</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Rúbal Laitviach</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Dínear Libia</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Dirham Mharacó</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Franc Mharacó</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Leu Moldóvach</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ariary Madagascar</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Franc Madagascar</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Denar na Macadóine</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Franc Mhailí</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Kyat Mhaenmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Tugrik Mongólach</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Pataca Macao</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ouguiya na Maratáine</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Lira Maltach</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Punt Maltach</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Rúipí Oileán Mhuirís</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldive Islands Rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Kwacha na Maláive</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Peso Meicsiceo</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Peso Airgid Meicsiceo (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidad de Inversion (UDI) Meicsiceo</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit Malaeisia</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Escudo Mósaimbíce</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Metical Mósaimbíce</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Dollar na Namaibe</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Naira Nígéarach</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Cordoba Nicearagua</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Cordoba Oro Nicearagua</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Guilder Ísiltíreach</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Krone Ioruach</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Rúipí Neipeáil</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Dollar na Nua-Shéalainne</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Rial Omain</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balboa Panamach</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti Pheiriú</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Sol Nuevo Pheiriú</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol Pheiriú</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina Nua-Ghuine Phapua</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso Filipíneach</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rúipí na Pacastáine</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Zloty Polannach</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Zloty Polannach (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escudo Portaingélach</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Guarani Pharagua</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Rial Catarach</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Leu Rómánach</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RUB">
				<displayName>Rúbal Rúiseach</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rúbal Rúiseach (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Franc Ruanda</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Riyal Sádach</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Dollar Oileáin Solomon</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Rúipí na Séiséil</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Dínear na Súdáine</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Punt na Súdáine</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Krona Sualannach</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Dollar Singeapóir</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Punt San Héilin</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar Slóvénach</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Koruna na Slóvaice</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Leone Shiarra Leon</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Scilling na Sómáile</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Guilder Shuranaim</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra Sao Tome agus Principe</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Rúbal Sóvéadach</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colon na Salvadóire</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Punt Siria</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni na Suasalainne</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Baht na Téalainne</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Rúbal na Táidsíceastáine</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Somoni na Táidsíceastáine</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Manat na An Tuircméanastáine</displayName>
			</currency>
			<currency type="TND">
				<displayName>Dínear na Túinéise</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Paʻanga Tonga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Escudo Tíomóir</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira Turcach</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TTD">
				<displayName>Dollar Oileáin na Tríonóide agus Tobága</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Dollar Nua na Téaváine</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Scilling na Tansáine</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hryvnia Úcránach</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanetz Úcránach</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Scilling Uganda (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Scilling Uganda</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Dollar S.A.M.</displayName>
			</currency>
			<currency type="USN">
				<displayName>Dollar S.A.M. (an chéad lá eile)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Dollar S.A.M. (an la céanna)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Peso Uragua (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Peso Uruguayo Uragua</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Sum na hÚisbéiceastáine</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivar Veiniséala</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Dong Vítneamach</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vatu Vanuatú</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Tala Samó Thiar</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA Franc BEAC</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Ór</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Aonad Ilchodach Eorpach</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Aonad Airgeadaíochta Eorpach</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Aonad Cuntais Eorpach (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Aonad Cuntais Eorpach (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Dollar Oirthear na Cairibe</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Cearta Speisialta Tarraingthe</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Aonad Airgeadra Eorpach</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Franc Ór Francach</displayName>
			</currency>
			<currency type="XFU">
				<displayName>UIC-Franc Francach</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA Franc BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP Franc</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Airgeadra Anaithnid nó Neamhbhailí</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Dínear Éimin</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rial Éimin</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Dínear Crua Iúgslavach</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Noviy Dinar Iúgslavach</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Dínear Inathraithe Iúgslavach</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Rand na hAfraice Theas (airgeadúil)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand na hAfraice Theas</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Kwacha Saimbiach</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zaire Nua Sáíreach</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire Sáíreach</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Dollar Siombábach</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>tá:t</yesstr>
			<nostr>níl:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��#���Locale/Data/nr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nr"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="nr">isiNdebele</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mat</month>
							<month type="4">Apr</month>
							<month type="5">Mey</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Arh</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Usi</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Janabari</month>
							<month type="2">uFeberbari</month>
							<month type="3">uMatjhi</month>
							<month type="4">u-Apreli</month>
							<month type="5">Meyi</month>
							<month type="6">Juni</month>
							<month type="7">Julayi</month>
							<month type="8">Arhostosi</month>
							<month type="9">Septemba</month>
							<month type="10">Oktoba</month>
							<month type="11">Usinyikhaba</month>
							<month type="12">Disemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mvu</day>
							<day type="tue">Bil</day>
							<day type="wed">Tha</day>
							<day type="thu">Ne</day>
							<day type="fri">Hla</day>
							<day type="sat">Gqi</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">uSonto</day>
							<day type="mon">uMvulo</day>
							<day type="tue">uLesibili</day>
							<day type="wed">Lesithathu</day>
							<day type="thu">uLesine</day>
							<day type="fri">ngoLesihlanu</day>
							<day type="sat">umGqibelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[A`�q##Locale/Data/ru_RU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/05/28 15:49:35 $"/>
		<language type="ru"/>
		<territory type="RU"/>
	</identity>
</ldml>
PKpG[��K���Locale/Data/bn_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="bn"/>
		<territory type="IN"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">aa</language>
			<language type="ab">ab</language>
			<language type="ace">ace</language>
			<language type="ach">ach</language>
			<language type="ada">ada</language>
			<language type="ady">ady</language>
			<language type="ae">ae</language>
			<language type="af">af</language>
			<language type="afa">afa</language>
			<language type="afh">afh</language>
			<language type="ain">ain</language>
			<language type="ak">ak</language>
			<language type="akk">akk</language>
			<language type="ale">ale</language>
			<language type="alg">alg</language>
			<language type="alt">alt</language>
			<language type="am">am</language>
			<language type="an">an</language>
			<language type="ang">ang</language>
			<language type="anp">আঙ্গিকা</language>
			<language type="apa">apa</language>
			<language type="ar">ar</language>
			<language type="arc">arc</language>
			<language type="arn">arn</language>
			<language type="arp">arp</language>
			<language type="art">art</language>
			<language type="arw">arw</language>
			<language type="as">as</language>
			<language type="ast">ast</language>
			<language type="ath">ath</language>
			<language type="aus">aus</language>
			<language type="av">av</language>
			<language type="awa">awa</language>
			<language type="ay">ay</language>
			<language type="az">az</language>
			<language type="ba">ba</language>
			<language type="bad">bad</language>
			<language type="bai">bai</language>
			<language type="bal">bal</language>
			<language type="ban">ban</language>
			<language type="bas">bas</language>
			<language type="bat">bat</language>
			<language type="be">be</language>
			<language type="bej">bej</language>
			<language type="bem">bem</language>
			<language type="ber">ber</language>
			<language type="bg">bg</language>
			<language type="bh">bh</language>
			<language type="bho">bho</language>
			<language type="bi">bi</language>
			<language type="bik">bik</language>
			<language type="bin">bin</language>
			<language type="bla">bla</language>
			<language type="bm">bm</language>
			<language type="bnt">bnt</language>
			<language type="bo">bo</language>
			<language type="br">br</language>
			<language type="bra">bra</language>
			<language type="bs">bs</language>
			<language type="btk">btk</language>
			<language type="bua">bua</language>
			<language type="bug">bug</language>
			<language type="byn">byn</language>
			<language type="ca">ca</language>
			<language type="cad">cad</language>
			<language type="cai">cai</language>
			<language type="car">car</language>
			<language type="cau">cau</language>
			<language type="ce">ce</language>
			<language type="ceb">ceb</language>
			<language type="cel">cel</language>
			<language type="ch">চামোরো</language>
			<language type="chn">চিনুক জার্গন</language>
			<language type="cho">চকটোও</language>
			<language type="chp">চিপেওয়াইয়ান</language>
			<language type="chy">চেয়েনি</language>
			<language type="cu">চার্চ স্লাভিক</language>
			<language type="de">de</language>
			<language type="de_AT">অস্ট্রিয়ান জারমান</language>
			<language type="en">en</language>
			<language type="en_AU">অস্ট্রেলিয়ান ইংরাজী</language>
			<language type="en_CA">ক্যানাডিয়ান ইংরেজি</language>
			<language type="en_GB">ব্রিটিশ ইংরেজী</language>
			<language type="es">es</language>
			<language type="fr">fr</language>
			<language type="fr_CA">ক্যানাডিয়ান ফরাসী</language>
			<language type="it">it</language>
			<language type="ja">ja</language>
			<language type="map">অস্ট্রোনেসিয়ান</language>
			<language type="pt">pt</language>
			<language type="ru">ru</language>
			<language type="rup">আরমেনিয়ান</language>
			<language type="tut">আলটাইক</language>
			<language type="zbl">ব্লিসসিম্বলস</language>
			<language type="zh">zh</language>
		</languages>
		<scripts>
			<script type="Arab">Arab</script>
			<script type="Armn">Armn</script>
			<script type="Bali">Bali</script>
			<script type="Batk">Batk</script>
			<script type="Beng">Beng</script>
			<script type="Blis">Blis</script>
			<script type="Bopo">Bopo</script>
			<script type="Brah">Brah</script>
			<script type="Brai">Brai</script>
			<script type="Bugi">Bugi</script>
			<script type="Buhd">Buhd</script>
			<script type="Cans">Cans</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Cher</script>
			<script type="Cirt">Cirt</script>
			<script type="Copt">Copt</script>
			<script type="Cprt">Cprt</script>
			<script type="Cyrl">Cyrl</script>
			<script type="Cyrs">Cyrs</script>
			<script type="Deva">Deva</script>
			<script type="Dsrt">Dsrt</script>
			<script type="Egyd">Egyd</script>
			<script type="Egyh">Egyh</script>
			<script type="Egyp">Egyp</script>
			<script type="Ethi">Ethi</script>
			<script type="Geok">Geok</script>
			<script type="Geor">Geor</script>
			<script type="Glag">Glag</script>
			<script type="Goth">Goth</script>
			<script type="Grek">Grek</script>
			<script type="Gujr">Gujr</script>
			<script type="Guru">Guru</script>
			<script type="Hang">Hang</script>
			<script type="Hani">Hani</script>
			<script type="Hano">Hano</script>
			<script type="Hans">Hans</script>
			<script type="Hant">Hant</script>
			<script type="Hebr">Hebr</script>
			<script type="Hira">Hira</script>
			<script type="Hmng">Hmng</script>
			<script type="Hrkt">Hrkt</script>
			<script type="Hung">Hung</script>
			<script type="Inds">Inds</script>
			<script type="Ital">Ital</script>
			<script type="Java">Java</script>
			<script type="Kali">Kali</script>
			<script type="Kana">Kana</script>
			<script type="Khar">Khar</script>
			<script type="Khmr">Khmr</script>
			<script type="Knda">Knda</script>
			<script type="Laoo">Laoo</script>
			<script type="Latf">Latf</script>
			<script type="Latg">Latg</script>
			<script type="Latn">Latn</script>
			<script type="Lepc">Lepc</script>
			<script type="Limb">Limb</script>
			<script type="Lina">Lina</script>
			<script type="Linb">Linb</script>
			<script type="Mand">Mand</script>
			<script type="Maya">Maya</script>
			<script type="Mero">Mero</script>
			<script type="Mlym">Mlym</script>
			<script type="Mong">Mong</script>
			<script type="Mymr">Mymr</script>
			<script type="Nkoo">Nkoo</script>
			<script type="Ogam">Ogam</script>
			<script type="Orkh">Orkh</script>
			<script type="Orya">Orya</script>
			<script type="Osma">Osma</script>
			<script type="Perm">Perm</script>
			<script type="Phag">Phag</script>
			<script type="Phnx">Phnx</script>
			<script type="Plrd">Plrd</script>
			<script type="Qaai">Qaai</script>
			<script type="Roro">Roro</script>
			<script type="Runr">Runr</script>
			<script type="Sara">Sara</script>
			<script type="Shaw">Shaw</script>
			<script type="Sinh">Sinh</script>
			<script type="Sylo">Sylo</script>
		</scripts>
		<territories>
			<territory type="CY">CY</territory>
		</territories>
	</localeDisplayNames>
</ldml>
PKpG[���Y�Y�Locale/Data/mk.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.74 $"/>
		<generation date="$Date: 2008/06/05 01:32:22 $"/>
		<language type="mk"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">африкански</language>
			<language type="am">амхариски</language>
			<language type="ar">арапски</language>
			<language type="as">асамски</language>
			<language type="az">азербејџански</language>
			<language type="be">белоруски</language>
			<language type="bg">бугарски</language>
			<language type="bh">бихари</language>
			<language type="bn">бенгалски</language>
			<language type="br">бретонски</language>
			<language type="bs">босански</language>
			<language type="ca">каталонски</language>
			<language type="cs">чешки</language>
			<language type="cy">велшки</language>
			<language type="da">дански</language>
			<language type="de">германски</language>
			<language type="el">грчки</language>
			<language type="en">англиски</language>
			<language type="eo">есперанто</language>
			<language type="es">шпански</language>
			<language type="et">естонски</language>
			<language type="eu">баскиски</language>
			<language type="fa">персиски</language>
			<language type="fi">фински</language>
			<language type="fil">тагалог (филипински)</language>
			<language type="fo">фарски</language>
			<language type="fr">француски</language>
			<language type="fy">фризиски</language>
			<language type="ga">ирски</language>
			<language type="gd">шкотско галски</language>
			<language type="gl">галициски</language>
			<language type="gn">гуарани</language>
			<language type="gu">гуџарати</language>
			<language type="he">хебрејски</language>
			<language type="hi">хинди</language>
			<language type="hr">хрватски</language>
			<language type="hu">унгарски</language>
			<language type="hy">ерменски</language>
			<language type="ia">интерлингва</language>
			<language type="id">индонезиски</language>
			<language type="is">исландски</language>
			<language type="it">италијански</language>
			<language type="ja">јапонски</language>
			<language type="jv">јавански</language>
			<language type="ka">грузиски</language>
			<language type="km">камбоџански</language>
			<language type="kn">каннада</language>
			<language type="ko">корејски</language>
			<language type="ku">курдски</language>
			<language type="ky">киргистански</language>
			<language type="la">латински</language>
			<language type="lt">литвански</language>
			<language type="lv">латвиски</language>
			<language type="mk">македонски</language>
			<language type="ml">малајалам</language>
			<language type="mn">монголски</language>
			<language type="mr">марати</language>
			<language type="ms">малезиски</language>
			<language type="mt">малтешки</language>
			<language type="ne">непалски</language>
			<language type="nl">холандски</language>
			<language type="nn">норвешки (Ниноршк)</language>
			<language type="no">норвешки</language>
			<language type="oc">окситански</language>
			<language type="or">орија</language>
			<language type="pa">пунџаби</language>
			<language type="pl">полски</language>
			<language type="ps">пашто</language>
			<language type="pt">португалски</language>
			<language type="pt_BR">португалски (во Бразил)</language>
			<language type="pt_PT">португалски (во Португалија)</language>
			<language type="ro">романски</language>
			<language type="ru">руски</language>
			<language type="sa">санскрит</language>
			<language type="sd">синди</language>
			<language type="sh">српско-хрватски</language>
			<language type="si">синхалиски</language>
			<language type="sk">словачки</language>
			<language type="sl">словенечки јазик</language>
			<language type="so">сомалиски</language>
			<language type="sq">албански</language>
			<language type="sr">српски</language>
			<language type="st">сесото</language>
			<language type="sv">шведски</language>
			<language type="sw">свахили</language>
			<language type="ta">тамилски</language>
			<language type="te">телугу</language>
			<language type="th">тајландски</language>
			<language type="ti">тигрејски</language>
			<language type="tk">туркменистански</language>
			<language type="tlh">клингонски</language>
			<language type="tr">турски</language>
			<language type="tw">тви (диалект на аканскиот јазик)</language>
			<language type="ug">ујгурски</language>
			<language type="uk">украински</language>
			<language type="ur">урду</language>
			<language type="uz">узбечки</language>
			<language type="vi">виетнамски</language>
			<language type="xh">хауса</language>
			<language type="yi">јидски</language>
			<language type="zh">кинески</language>
			<language type="zu">зулу</language>
		</languages>
		<territories>
			<territory type="AD">Андора</territory>
			<territory type="AE">Обединети Арапски Емирати</territory>
			<territory type="AF">Авганистан</territory>
			<territory type="AG">Антигуа и Барбуда</territory>
			<territory type="AI">Ангвила</territory>
			<territory type="AL">Албанија</territory>
			<territory type="AM">Ерменија</territory>
			<territory type="AN">Холандски Антили</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктик</territory>
			<territory type="AR">Аргентина</territory>
			<territory type="AS">Американска Самоа</territory>
			<territory type="AT">Австрија</territory>
			<territory type="AU">Австралија</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AZ">Азејберџан</territory>
			<territory type="BA">Босна и Херцеговина</territory>
			<territory type="BB">Барбадос</territory>
			<territory type="BD">Бангладеш</territory>
			<territory type="BE">Белгија</territory>
			<territory type="BF">Буркина Фасо</territory>
			<territory type="BG">Бугарија</territory>
			<territory type="BH">Бахреин</territory>
			<territory type="BI">Бурунди</territory>
			<territory type="BJ">Бенин</territory>
			<territory type="BM">Бермуди</territory>
			<territory type="BN">Брунеи</territory>
			<territory type="BO">Боливија</territory>
			<territory type="BR">Бразил</territory>
			<territory type="BS">Бахами</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Боувитови острови</territory>
			<territory type="BW">Боцвана</territory>
			<territory type="BY">Белорусија</territory>
			<territory type="BZ">Белизе</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Кокосови острови</territory>
			<territory type="CD">Демократска Република Конго</territory>
			<territory type="CF">Централан Афричка република</territory>
			<territory type="CG">Конго</territory>
			<territory type="CH">Швајцарија</territory>
			<territory type="CI">Брегот на Слоновата Коска</territory>
			<territory type="CK">Кукови Острови</territory>
			<territory type="CL">Чиле</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Кина</territory>
			<territory type="CO">Колумбија</territory>
			<territory type="CR">Костарика</territory>
			<territory type="CS">Србија и Црна Гора</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Зеленортски Острови</territory>
			<territory type="CX">Божиќни Острови</territory>
			<territory type="CY">Кипар</territory>
			<territory type="CZ">Чешка Република</territory>
			<territory type="DE">Германија</territory>
			<territory type="DJ">Џибути</territory>
			<territory type="DK">Данска</territory>
			<territory type="DM">Доминика</territory>
			<territory type="DO">Доминиканска Република</territory>
			<territory type="DZ">Алжир</territory>
			<territory type="EC">Еквадор</territory>
			<territory type="EE">Естонија</territory>
			<territory type="EG">Египет</territory>
			<territory type="EH">Западна Сахара</territory>
			<territory type="ER">Еритреја</territory>
			<territory type="ES">Шпанија</territory>
			<territory type="ET">Етиопија</territory>
			<territory type="FI">Финска</territory>
			<territory type="FJ">Фиџи</territory>
			<territory type="FK">Фокландски Острови</territory>
			<territory type="FM">Микронезија</territory>
			<territory type="FO">Фарски Острови</territory>
			<territory type="FR">Франција</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Велика Британија</territory>
			<territory type="GD">Гренада</territory>
			<territory type="GE">Џорџија</territory>
			<territory type="GF">Француска Гуана</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гилбартар</territory>
			<territory type="GL">Гренланд</territory>
			<territory type="GM">Гамбија</territory>
			<territory type="GN">Гвинеја</territory>
			<territory type="GP">Гвадалупе</territory>
			<territory type="GQ">Екваторска Гвинеја</territory>
			<territory type="GR">Грција</territory>
			<territory type="GS">Јужна Џорџија и Јужни Сендвич Острови</territory>
			<territory type="GT">Гватемала</territory>
			<territory type="GU">Гвам</territory>
			<territory type="GW">Гвинеа-Биса</territory>
			<territory type="GY">Гвајана</territory>
			<territory type="HK">Хон Конг С.А.Р Кина</territory>
			<territory type="HM">Хардови острови и Мекдоналд Острови</territory>
			<territory type="HN">Хондурас</territory>
			<territory type="HR">Хрватска</territory>
			<territory type="HT">Хаити</territory>
			<territory type="HU">Унгарија</territory>
			<territory type="ID">Индонезија</territory>
			<territory type="IE">Ирска</territory>
			<territory type="IL">Израел</territory>
			<territory type="IN">Индија</territory>
			<territory type="IO">Британско Индиско Океанска територија</territory>
			<territory type="IQ">Ирак</territory>
			<territory type="IR">Иран</territory>
			<territory type="IS">Исланд</territory>
			<territory type="IT">Италија</territory>
			<territory type="JM">Јамајка</territory>
			<territory type="JO">Јордан</territory>
			<territory type="JP">Јапонија</territory>
			<territory type="KE">Кенија</territory>
			<territory type="KG">Кургистан</territory>
			<territory type="KH">Камбоџа</territory>
			<territory type="KI">Кирибати</territory>
			<territory type="KM">Коморос</territory>
			<territory type="KN">Сент Кристофер и Невис</territory>
			<territory type="KP">Северна Кореа</territory>
			<territory type="KR">Јужна Кореа</territory>
			<territory type="KW">Кувајт</territory>
			<territory type="KY">Кајманови Острови</territory>
			<territory type="KZ">Казаџстан</territory>
			<territory type="LA">Лаос</territory>
			<territory type="LB">Либанон</territory>
			<territory type="LC">Света Лучија</territory>
			<territory type="LI">Лихтенштајн</territory>
			<territory type="LK">Шри Ланка</territory>
			<territory type="LR">Либериа</territory>
			<territory type="LS">Лешото</territory>
			<territory type="LT">Литванија</territory>
			<territory type="LU">Луксембург</territory>
			<territory type="LV">Латвија</territory>
			<territory type="LY">Либија</territory>
			<territory type="MA">Мароко</territory>
			<territory type="MC">Монако</territory>
			<territory type="MD">Молдова</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршалови ОСтрови</territory>
			<territory type="MK">Македонија</territory>
			<territory type="ML">Мали</territory>
			<territory type="MM">Муанмар</territory>
			<territory type="MN">Монголија</territory>
			<territory type="MO">Макао С.А.Р Кина</territory>
			<territory type="MP">Северни Маријанини Острови</territory>
			<territory type="MQ">Мартиник</territory>
			<territory type="MR">Мавританија</territory>
			<territory type="MS">Монсерат</territory>
			<territory type="MT">Малта</territory>
			<territory type="MU">Мауритус</territory>
			<territory type="MV">Малдиви</territory>
			<territory type="MW">Малави</territory>
			<territory type="MX">Мексико</territory>
			<territory type="MY">Малезија</territory>
			<territory type="MZ">Мозамбе</territory>
			<territory type="NA">Намибија</territory>
			<territory type="NC">Нова Каледонија</territory>
			<territory type="NE">Нигер</territory>
			<territory type="NF">Нофролк Остров</territory>
			<territory type="NG">Нигерија</territory>
			<territory type="NI">Никараква</territory>
			<territory type="NL">Холандија</territory>
			<territory type="NO">Норвешка</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Ние</territory>
			<territory type="NZ">Нов Зеланд</territory>
			<territory type="OM">Оман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Француска Полинезија</territory>
			<territory type="PG">Папуа Нова Гвинеја</territory>
			<territory type="PH">Филипини</territory>
			<territory type="PK">Пакистан</territory>
			<territory type="PL">Полска</territory>
			<territory type="PM">Сент Пјер и Микелан</territory>
			<territory type="PN">Питкарн</territory>
			<territory type="PR">Порторико</territory>
			<territory type="PS">Палестинска Територија</territory>
			<territory type="PT">Португалија</territory>
			<territory type="PW">Палау</territory>
			<territory type="PY">Парагвај</territory>
			<territory type="QA">Кватар</territory>
			<territory type="RE">Рејунион</territory>
			<territory type="RO">Романија</territory>
			<territory type="RU">Русија</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудиска Арабија</territory>
			<territory type="SB">Соломоновите Острови</territory>
			<territory type="SC">Сејшели</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Шведска</territory>
			<territory type="SG">Сингапур</territory>
			<territory type="SH">Света Елена</territory>
			<territory type="SI">Словенија</territory>
			<territory type="SJ">Свалбард и Жан Мијен Острови</territory>
			<territory type="SK">Словачка</territory>
			<territory type="SL">Сиера Леоне</territory>
			<territory type="SM">Сан Марино</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Сомалија</territory>
			<territory type="SR">Суринам</territory>
			<territory type="ST">Сао Томе и Принципе</territory>
			<territory type="SV">Ел Салвадор</territory>
			<territory type="SY">Сирија</territory>
			<territory type="SZ">Свазиленд</territory>
			<territory type="TC">Турк и Каикос Острови</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Француски Јужни територии</territory>
			<territory type="TG">Того</territory>
			<territory type="TH">Тајланд</territory>
			<territory type="TJ">Таџикистан</territory>
			<territory type="TK">Токелау</territory>
			<territory type="TL">Источен Тимор</territory>
			<territory type="TM">Туркменистан</territory>
			<territory type="TN">Тунис</territory>
			<territory type="TO">Тонга</territory>
			<territory type="TR">Турција</territory>
			<territory type="TT">Тринидад и Тобаго</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тајван</territory>
			<territory type="TZ">Танзанија</territory>
			<territory type="UA">Украина</territory>
			<territory type="UG">Уганда</territory>
			<territory type="US">Обединети Држави</territory>
			<territory type="UY">Уругвај</territory>
			<territory type="UZ">Узбекистан</territory>
			<territory type="VA">Ватикан</territory>
			<territory type="VC">Сент Винцент и Гренадините</territory>
			<territory type="VE">Венецуела</territory>
			<territory type="VG">Британски Девствени Острови</territory>
			<territory type="VI">Девствени Острови на САД</territory>
			<territory type="VN">Виетнам</territory>
			<territory type="VU">Ванату</territory>
			<territory type="WF">Волис и Футуна острови</territory>
			<territory type="WS">Самоа</territory>
			<territory type="YE">Јемен</territory>
			<territory type="YT">Мајоте</territory>
			<territory type="ZA">Јужна Африка</territory>
			<territory type="ZM">Замбија</territory>
			<territory type="ZW">Зимбабве</territory>
		</territories>
		<keys>
			<key type="calendar">Календар</key>
			<key type="collation">Сортирање</key>
			<key type="currency">Валута</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">Будистички календар</type>
			<type type="chinese" key="calendar">Кинески Календар</type>
			<type type="direct" key="collation">Директно</type>
			<type type="gregorian" key="calendar">Грегориански Календар</type>
			<type type="hebrew" key="calendar">Еврејски Календар</type>
			<type type="islamic" key="calendar">Исламски Календар</type>
			<type type="islamic-civil" key="calendar">Исламско граѓански Календар</type>
			<type type="japanese" key="calendar">Јапонски Календар</type>
			<type type="phonebook" key="collation">Азбучен редослед</type>
			<type type="pinyin" key="collation">Сортирање Pinyin</type>
			<type type="stroke" key="collation">Ритмички редослед</type>
			<type type="traditional" key="collation">Традиционално</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а-г ѓ д-з ѕ и ј к ќ л љ м н њ о-ч џ ш]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ѐ ѝ]</exemplarCharacters>
	</characters>
	<dates>
		<localizedPatternChars>GuMtkHmsSEDFwWahKzUeygAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">јан.</month>
							<month type="2">фев.</month>
							<month type="3">мар.</month>
							<month type="4">апр.</month>
							<month type="5">мај</month>
							<month type="6">јун.</month>
							<month type="7">јул.</month>
							<month type="8">авг.</month>
							<month type="9">септ.</month>
							<month type="10">окт.</month>
							<month type="11">ноем.</month>
							<month type="12">декем.</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="9">с</month>
							<month type="11">н</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">јануари</month>
							<month type="2">февруари</month>
							<month type="3">март</month>
							<month type="4">април</month>
							<month type="5">мај</month>
							<month type="6">јуни</month>
							<month type="7">јули</month>
							<month type="8">август</month>
							<month type="9">септември</month>
							<month type="10">октомври</month>
							<month type="11">ноември</month>
							<month type="12">декември</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ј</month>
							<month type="2">ф</month>
							<month type="3">м</month>
							<month type="4">а</month>
							<month type="5">м</month>
							<month type="6">ј</month>
							<month type="7">ј</month>
							<month type="8">а</month>
							<month type="9">с</month>
							<month type="10">о</month>
							<month type="11">н</month>
							<month type="12">д</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">нед.</day>
							<day type="mon">пон.</day>
							<day type="tue">вт.</day>
							<day type="wed">сре.</day>
							<day type="thu">чет.</day>
							<day type="fri">пет.</day>
							<day type="sat">саб.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">недела</day>
							<day type="mon">понеделник</day>
							<day type="tue">вторник</day>
							<day type="wed">среда</day>
							<day type="thu">четврток</day>
							<day type="fri">петок</day>
							<day type="sat">сабота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">н</day>
							<day type="mon">п</day>
							<day type="tue">в</day>
							<day type="wed">с</day>
							<day type="thu">ч</day>
							<day type="fri">п</day>
							<day type="sat">с</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">пр.н.е.</era>
						<era type="1">ае.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.M.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="Mdd">dd.M</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.M - E, dd.M</greatestDifference>
							<greatestDifference id="d">E, dd.M - E, dd.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.M - dd.M</greatestDifference>
							<greatestDifference id="d">dd.M - dd.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yy - M.yy</greatestDifference>
							<greatestDifference id="y">M.yy - M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.M.yy - E, dd.M.yy</greatestDifference>
							<greatestDifference id="d">E, dd.M.yy - E, dd.M.yy</greatestDifference>
							<greatestDifference id="y">E, dd.M.yy - E, dd.M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, dd MMM yyyy - E, dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.M.yy - dd.M.yy</greatestDifference>
							<greatestDifference id="d">dd.M.yy - dd.M.yy</greatestDifference>
							<greatestDifference id="y">dd.M.yy - dd.M.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###;(#,##0.###)</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Андорска Пезета</displayName>
			</currency>
			<currency type="AED">
				<displayName>Дирхам</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Авгани (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Авгани</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Албански Лек</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Ермениски Драм</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Анголска Кванза</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Анголска Кванза (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Анголска нова Кванза (1990-2000)</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Аргентински Пезос (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Аргентински Пезос</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Австралиски Шилинг</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Австралиски Долар</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="BAD">
				<displayName>Босанско-Херцеговски Динар</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Босанско-Херцеговски Динар конвертабилна марка</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Барбадоски Долар</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Белгиски Франк (конвертибилен)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Белгиски Франк</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Белгиски Франк (финансиски)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Бугарски цврст лев</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Бугарски нов лев</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Бахраински Динар</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Буриндиски Франк</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Бермудски Долар</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Брунејски долар</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Бахамски Долар</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Боцвантска Пула</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Белоруска нова рубља (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Белоруска Рубља</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Белизиски Долар</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Канадски Долар</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CHF">
				<displayName>Швајцарски Франк</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="COP">
				<displayName>Колумбиски Пезос</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Костарикански Колон</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Чехословачка цврста корона</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Кубански пезос</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Кипарска фунта</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Чешка корона</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Германска Марка</displayName>
			</currency>
			<currency type="DOP">
				<displayName>Доминикански Пезос</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Алгериски Динар</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="EGP">
				<displayName>Египетска Фунта</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Шпанска Пезета</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Етиописки Бир</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Евро</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Финска марка</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Фиџи долар</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Факландска фунта</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Француски франк</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Британска Фунта</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Грузиски лари</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ганајски Седи</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Гибралтарска фунта</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Гамбиски Даласи</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Гвинејски франк</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GRD">
				<displayName>Грчка драхма</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Гватемалски кветцал</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWP">
				<displayName>Гвинејски Бисау пезос</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Гвијански Долар</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Хонгкошки долар</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Хондурска лемпира</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Хрватски динар</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Хрватска Куна</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Хаитски гурд</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Унгарска форинта</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Ирска фунта</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Изрелска фунта</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Израелски нов шекел</displayName>
			</currency>
			<currency type="INR">
				<displayName>Индиска рупија</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Ирачки динар</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Ирански риал</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Исландска крона</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Италијанкса лира</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Јамајкански долар</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Јордански динар</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Јапонски јен</displayName>
			</currency>
			<currency type="KES">
				<displayName>Кениски шилинг</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Киргистански сом</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Камбоџиски рел</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Коморски долар</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Северно корејски вон</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Јужно корејски вон</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Кувајтски динар</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KZT">
				<displayName>Казакстантска тенга</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Лаоски кип</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Либиска фунта</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Шриланканска рупија</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Либериски долар</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Лесотско лоти</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Литваниска лита</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Литваниски литаз</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Луксембуршки франк</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Латвијски лат</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Латвијска рубља</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Либијски динар</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Марокански Дирхам</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Марконски франк</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Молдавски леу</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Македонски денар</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Малски франк</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Монголиски тугрик</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Макао патака</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Малтиска лира</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Малтиска финта</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Мексикански пезос</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Мексикански сребрен пезос (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Малазиски рингит</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Мозамбиско ескудо</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Мозамбиски метикал</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Намибиски долар</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Нигериска наира</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Никарагванска кордоба</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Холандски гилдер</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Норвешка круна</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Непалска рупија</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Новозелански долар</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Омански Риал</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Панамска балбоа</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Перуански нов сол</displayName>
			</currency>
			<currency type="PES">
				<displayName>Перуански сол</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Папуа новогвинејскиа кина</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Филипински пезос</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Пакистанска рупија</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Полска злота</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Полска злота (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Португалско ескудо</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Парагвајска гуарана</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Кватарски риал</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Романска леа</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RUB">
				<displayName>Руска рубља</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Руска рубља (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Руандски франк</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Саудиски риал</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Соломонски долар</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Сејшелска рупија</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Судански динар</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Суданска фунта</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Шведска круна</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Сингапурски доалр</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SIT">
				<displayName>Словенски толар</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Словачка круна</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Сиералеонско леоне</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Сомалијски шилинг</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Суринамски гилдер</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Советска рубља</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Елсавадорски колон</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Сириска фунта</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Свазилендски лилаген</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Таи бат</displayName>
			</currency>
			<currency type="TJR">
				<displayName>таџикистанска рубља</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Таџикистантски сомони</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Турментистантски матат</displayName>
			</currency>
			<currency type="TND">
				<displayName>Тунезиски динар</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Тиморски ескудо</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Турска лира</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Тајвански нов долар</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Танзаниски шилинг</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Украинска хривнија</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Угандиски шилинг (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Угандиски шилинг</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>САД долар</displayName>
			</currency>
			<currency type="USN">
				<displayName>САД долар (Next day)</displayName>
			</currency>
			<currency type="USS">
				<displayName>САД долар (Same day)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Уругвајско песо (1975-1993)</displayName>
			</currency>
			<currency type="UZS">
				<displayName>УЗбекистански Сум</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Венецуелски боливар</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Виетнамски донг</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Ванатски вату</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Самоа тала</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Источно карибиски долар</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="YDD">
				<displayName>Јеменски дианр</displayName>
			</currency>
			<currency type="YER">
				<displayName>Јеменски риал</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Југословенски динар</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Југословенски конвертибилен динар</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Јужно афрички ранд(финансиски)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Јужно афрички ранд</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Замбиска кванча</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Заирско новозаире</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Зирско заире</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Зимбабвиски долар</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>да:д</yesstr>
			<nostr>не:н</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�u�*##Locale/Data/ka_GE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ka"/>
		<territory type="GE"/>
	</identity>
</ldml>
PKpG[h��@@Locale/Data/fil_PH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.1 $"/>
        <generation date="$Date: 2008/06/19 01:39:15 $"/>
        <language type="fil"/>
        <territory type="PH"/>
    </identity>
</ldml>PKpG[PGA���Locale/Data/ar_BH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="BH"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[�I*c9z9zLocale/Data/zh.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.134 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="zh"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0}({1})</localePattern>
			<localeSeparator>、</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">阿法文</language>
			<language type="ab">阿布哈西亚文</language>
			<language type="ace">亚齐文</language>
			<language type="ach">阿乔利文</language>
			<language type="ada">阿当梅文</language>
			<language type="ady">阿迪何文</language>
			<language type="ae">阿维斯塔文</language>
			<language type="af">南非荷兰文</language>
			<language type="afa">其他亚非语系</language>
			<language type="afh">阿弗里希利文</language>
			<language type="ain">阿伊努文</language>
			<language type="ak">阿肯文</language>
			<language type="akk">阿卡德文</language>
			<language type="ale">阿留申文</language>
			<language type="alg">其他阿尔贡语系</language>
			<language type="alt">南阿尔泰文</language>
			<language type="am">阿姆哈拉文</language>
			<language type="an">阿拉贡文</language>
			<language type="ang">古英文</language>
			<language type="anp">安吉卡文</language>
			<language type="apa">阿帕切文</language>
			<language type="ar">阿拉伯文</language>
			<language type="arc">阿拉米文</language>
			<language type="arn">阿劳坎文</language>
			<language type="arp">阿拉帕霍文</language>
			<language type="art">其他人工语系</language>
			<language type="arw">阿拉瓦克文</language>
			<language type="as">阿萨姆文</language>
			<language type="ast">阿斯图里亚思特文</language>
			<language type="ath">阿萨帕斯坎语系</language>
			<language type="aus">澳大利亚语系</language>
			<language type="av">阿瓦尔文</language>
			<language type="awa">阿瓦乔文</language>
			<language type="ay">艾马拉文</language>
			<language type="az">阿塞拜疆文</language>
			<language type="ba">巴什客尔文</language>
			<language type="bad">班达文</language>
			<language type="bai">巴米累克语系</language>
			<language type="bal">俾路支文</language>
			<language type="ban">巴里文</language>
			<language type="bas">巴萨文</language>
			<language type="bat">其他波罗的语系</language>
			<language type="be">白俄罗斯文</language>
			<language type="bej">别札文</language>
			<language type="bem">别姆巴文</language>
			<language type="ber">柏柏尔文</language>
			<language type="bg">保加利亚文</language>
			<language type="bh">比哈尔文</language>
			<language type="bho">博杰普尔文</language>
			<language type="bi">比斯拉马文</language>
			<language type="bik">毕库尔文</language>
			<language type="bin">比尼文</language>
			<language type="bla">司克司卡文</language>
			<language type="bm">班巴拉文</language>
			<language type="bn">孟加拉文</language>
			<language type="bnt">班图文</language>
			<language type="bo">藏文</language>
			<language type="br">布里多尼文</language>
			<language type="bra">布拉杰文</language>
			<language type="bs">波斯尼亚文</language>
			<language type="btk">巴塔克文</language>
			<language type="bua">布里亚特文</language>
			<language type="bug">布吉文</language>
			<language type="byn">布林文</language>
			<language type="ca">加泰罗尼亚文</language>
			<language type="cad">卡多文</language>
			<language type="cai">其他中美印第安语系</language>
			<language type="car">巴勒比文</language>
			<language type="cau">其他高加索语系</language>
			<language type="cch">cch</language>
			<language type="ce">车臣文</language>
			<language type="ceb">宿务文</language>
			<language type="cel">其他凯尔特语系</language>
			<language type="ch">查莫罗文</language>
			<language type="chb">契布卡文</language>
			<language type="chg">查加文</language>
			<language type="chk">楚吾克文</language>
			<language type="chm">马里文</language>
			<language type="chn">契努克文</language>
			<language type="cho">乔克托文</language>
			<language type="chp">佩瓦扬文</language>
			<language type="chr">彻罗基文</language>
			<language type="chy">夏延文</language>
			<language type="cmc">查米克文</language>
			<language type="co">科西嘉文</language>
			<language type="cop">科普特文</language>
			<language type="cpe">其他以英文为基础的克里奥尔混合语系</language>
			<language type="cpf">其他以法文为基础的克里奥尔混合语系</language>
			<language type="cpp">其他以葡萄牙文为基础的克里奥尔混合语系</language>
			<language type="cr">克里族文</language>
			<language type="crh">克里米亚土耳其文;克里米亚塔塔文</language>
			<language type="crp">其他克里奥尔混合语系</language>
			<language type="cs">捷克文</language>
			<language type="csb">卡舒文</language>
			<language type="cu">宗教斯拉夫文</language>
			<language type="cus">其他库施特语系</language>
			<language type="cv">楚瓦什文</language>
			<language type="cy">威尔士文</language>
			<language type="da">丹麦文</language>
			<language type="dak">达科他文</language>
			<language type="dar">达尔格瓦文</language>
			<language type="day">达雅克文</language>
			<language type="de">德文</language>
			<language type="de_AT">德语(奥地利)</language>
			<language type="de_CH">高地德文 (瑞士)</language>
			<language type="del">特拉华文</language>
			<language type="den">司雷夫文</language>
			<language type="dgr">多格里布文</language>
			<language type="din">丁卡文</language>
			<language type="doi">多格拉文</language>
			<language type="dra">其他德拉维语系</language>
			<language type="dsb">下索布文</language>
			<language type="dua">都阿拉文</language>
			<language type="dum">中古荷兰文</language>
			<language type="dv">迪维希文</language>
			<language type="dyu">迪尤拉文</language>
			<language type="dz">不丹文</language>
			<language type="ee">埃维文</language>
			<language type="efi">埃菲克文</language>
			<language type="egy">古埃及文</language>
			<language type="eka">埃克丘克文</language>
			<language type="el">希腊文</language>
			<language type="elx">艾拉米特文</language>
			<language type="en">英文</language>
			<language type="en_AU">英语(澳大利亚)</language>
			<language type="en_CA">英语(加拿大)</language>
			<language type="en_GB">英语(英国)</language>
			<language type="en_US">英语(美国)</language>
			<language type="enm">中古英文</language>
			<language type="eo">世界文</language>
			<language type="es">西班牙文</language>
			<language type="es_419">西班牙语(拉丁美洲)</language>
			<language type="es_ES">西班牙语(伊比利亚)</language>
			<language type="et">爱沙尼亚文</language>
			<language type="eu">巴斯克文</language>
			<language type="ewo">旺杜文</language>
			<language type="fa">波斯文</language>
			<language type="fan">芳格文</language>
			<language type="fat">芳蒂文</language>
			<language type="ff">夫拉文</language>
			<language type="fi">芬兰文</language>
			<language type="fil">菲律宾文</language>
			<language type="fiu">其他芬兰乌戈尔语系</language>
			<language type="fj">斐济文</language>
			<language type="fo">法罗文</language>
			<language type="fon">丰文</language>
			<language type="fr">法文</language>
			<language type="fr_CA">法语(加拿大)</language>
			<language type="fr_CH">法语 (瑞士)</language>
			<language type="frm">中古法文</language>
			<language type="fro">古法文</language>
			<language type="frr">北弗里西亚语</language>
			<language type="frs">东弗里西亚文</language>
			<language type="fur">弗留利文</language>
			<language type="fy">弗里斯兰文</language>
			<language type="ga">爱尔兰文</language>
			<language type="gaa">加文</language>
			<language type="gay">迦约文</language>
			<language type="gba">葛巴亚文</language>
			<language type="gd">苏格兰盖尔文</language>
			<language type="gem">其他日尔曼语系</language>
			<language type="gez">吉兹文</language>
			<language type="gil">吉尔伯特斯文</language>
			<language type="gl">加利西亚文</language>
			<language type="gmh">中古高地德文</language>
			<language type="gn">瓜拉尼文</language>
			<language type="goh">古高地德文</language>
			<language type="gon">岗德文</language>
			<language type="gor">科洛涅达罗文</language>
			<language type="got">哥特文</language>
			<language type="grb">格列博文</language>
			<language type="grc">古希腊文</language>
			<language type="gsw">德文 (瑞士)</language>
			<language type="gu">古加拉提文</language>
			<language type="gv">马恩岛文</language>
			<language type="gwi">吉维克琴文</language>
			<language type="ha">豪撒文</language>
			<language type="hai">海达文</language>
			<language type="haw">夏威夷文</language>
			<language type="he">希伯来文</language>
			<language type="hi">印地文</language>
			<language type="hil">希利盖农文</language>
			<language type="him">赫马查利文</language>
			<language type="hit">赫梯文</language>
			<language type="hmn">赫蒙文</language>
			<language type="ho">希里莫图文</language>
			<language type="hr">克罗地亚文</language>
			<language type="hsb">上索布文</language>
			<language type="ht">海地文</language>
			<language type="hu">匈牙利文</language>
			<language type="hup">胡帕文</language>
			<language type="hy">亚美尼亚文</language>
			<language type="hz">赫雷罗文</language>
			<language type="ia">国际文 A</language>
			<language type="iba">伊班文</language>
			<language type="id">印度尼西亚文</language>
			<language type="ie">国际文 E</language>
			<language type="ig">伊格博文</language>
			<language type="ii">四川话</language>
			<language type="ijo">伊乔文</language>
			<language type="ik">依奴皮维克文</language>
			<language type="ilo">伊洛干诺文</language>
			<language type="inc">其他印度语系</language>
			<language type="ine">其他印欧语系</language>
			<language type="inh">印古什文</language>
			<language type="io">伊多文</language>
			<language type="ira">伊朗文</language>
			<language type="iro">伊洛魁语系</language>
			<language type="is">冰岛文</language>
			<language type="it">意大利文</language>
			<language type="iu">伊努伊特文</language>
			<language type="ja">日文</language>
			<language type="jbo">逻辑文</language>
			<language type="jpr">犹太波斯文</language>
			<language type="jrb">犹太阿拉伯文</language>
			<language type="jv">爪哇文</language>
			<language type="ka">格鲁吉亚文</language>
			<language type="kaa">卡拉卡尔帕克文</language>
			<language type="kab">卡比尔文</language>
			<language type="kac">卡琴文</language>
			<language type="kaj">kaj</language>
			<language type="kam">卡姆巴文</language>
			<language type="kar">喀伦文</language>
			<language type="kaw">卡威文</language>
			<language type="kbd">卡巴尔达文</language>
			<language type="kcg">kcg</language>
			<language type="kfo">科罗文</language>
			<language type="kg">刚果文</language>
			<language type="kha">卡西文</language>
			<language type="khi">其他科伊桑语系</language>
			<language type="kho">和田文</language>
			<language type="ki">吉库尤文</language>
			<language type="kj">宽亚玛文</language>
			<language type="kk">哈萨克文</language>
			<language type="kl">格陵兰文</language>
			<language type="km">柬埔寨文</language>
			<language type="kmb">金邦杜文</language>
			<language type="kn">坎纳达文</language>
			<language type="ko">韩文</language>
			<language type="kok">刚卡尼文</language>
			<language type="kos">科斯拉伊文</language>
			<language type="kpe">克佩列文</language>
			<language type="kr">卡努里文</language>
			<language type="krc">卡拉恰伊巴尔卡尔文</language>
			<language type="krl">卡累利阿文</language>
			<language type="kro">克鲁文</language>
			<language type="kru">库鲁克文</language>
			<language type="ks">克什米尔文</language>
			<language type="ku">库尔德文</language>
			<language type="kum">库梅克文</language>
			<language type="kut">库特内文</language>
			<language type="kv">科米文</language>
			<language type="kw">凯尔特文</language>
			<language type="ky">吉尔吉斯文</language>
			<language type="la">拉丁文</language>
			<language type="lad">拉迪诺文</language>
			<language type="lah">拉亨达文</language>
			<language type="lam">兰巴文</language>
			<language type="lb">卢森堡文</language>
			<language type="lez">莱兹依昂文</language>
			<language type="lg">卢干达文</language>
			<language type="li">淋布尔吉文</language>
			<language type="ln">林加拉文</language>
			<language type="lo">老挝文</language>
			<language type="lol">芒戈文</language>
			<language type="loz">洛兹文</language>
			<language type="lt">立陶宛文</language>
			<language type="lu">鲁巴加丹加文</language>
			<language type="lua">鲁巴鲁瓦文</language>
			<language type="lui">路易塞诺文</language>
			<language type="lun">隆达文</language>
			<language type="luo">卢奥文</language>
			<language type="lus">卢晒文</language>
			<language type="lv">拉脱维亚文</language>
			<language type="mad">马都拉文</language>
			<language type="mag">马加伊文</language>
			<language type="mai">迈蒂利文</language>
			<language type="mak">望加锡文</language>
			<language type="man">曼丁哥文</language>
			<language type="map">澳斯特罗尼西亚语系</language>
			<language type="mas">萨伊语</language>
			<language type="mdf">莫克沙文</language>
			<language type="mdr">曼达尔</language>
			<language type="men">门迪文</language>
			<language type="mg">马尔加什文</language>
			<language type="mga">中古爱尔兰文</language>
			<language type="mh">马绍尔文</language>
			<language type="mi">毛利文</language>
			<language type="mic">米克马克文</language>
			<language type="min">米南卡保文</language>
			<language type="mis">各种不同语系</language>
			<language type="mk">马其顿文</language>
			<language type="mkh">其他孟高棉语系</language>
			<language type="ml">马来亚拉姆文</language>
			<language type="mn">蒙古文</language>
			<language type="mnc">满文</language>
			<language type="mni">曼尼普里文</language>
			<language type="mno">马诺博语系</language>
			<language type="mo">摩尔多瓦文</language>
			<language type="moh">摩霍克文</language>
			<language type="mos">莫西文</language>
			<language type="mr">马拉地文</language>
			<language type="ms">马来文</language>
			<language type="mt">马耳他文</language>
			<language type="mul">多种语系</language>
			<language type="mun">蒙达语系</language>
			<language type="mus">克里克文</language>
			<language type="mwl">米兰德斯文</language>
			<language type="mwr">马尔瓦利文</language>
			<language type="my">缅甸文</language>
			<language type="myn">玛雅语系</language>
			<language type="myv">俄日亚文</language>
			<language type="na">瑙鲁文</language>
			<language type="nah">纳瓦特尔文</language>
			<language type="nai">其他北美印第安语系</language>
			<language type="nap">拿波里文</language>
			<language type="nb">挪威博克马尔文</language>
			<language type="nd">北恩德贝勒文</language>
			<language type="nds">低地德文;低地撒克逊文</language>
			<language type="ne">尼泊尔文</language>
			<language type="new">尼瓦尔文</language>
			<language type="ng">恩东加文</language>
			<language type="nia">尼亚斯文</language>
			<language type="nic">其他尼日尔科尔多凡语系</language>
			<language type="niu">纽埃文</language>
			<language type="nl">荷兰文</language>
			<language type="nl_BE">弗拉芒语</language>
			<language type="nn">挪威尼诺斯克文</language>
			<language type="no">挪威文</language>
			<language type="nog">诺盖文</language>
			<language type="non">古诺尔斯文</language>
			<language type="nqo">西非书面语言</language>
			<language type="nr">南部恩德贝勒文</language>
			<language type="nso">北索托文</language>
			<language type="nub">努比亚语系</language>
			<language type="nv">纳瓦霍文</language>
			<language type="nwc">尼瓦尔文 Classical Newari</language>
			<language type="ny">尼扬贾文;齐切瓦文;切瓦文</language>
			<language type="nym">尼亚姆韦齐文</language>
			<language type="nyn">尼昂科勒文</language>
			<language type="nyo">尼约罗文</language>
			<language type="nzi">恩济马文</language>
			<language type="oc">奥克西唐语</language>
			<language type="oj">奥吉布瓦文</language>
			<language type="om">奥洛莫文</language>
			<language type="or">欧里亚文</language>
			<language type="os">奥塞梯文</language>
			<language type="osa">奥萨格文</language>
			<language type="ota">奥托曼土耳其文</language>
			<language type="oto">奥托米语系</language>
			<language type="pa">旁遮普文</language>
			<language type="paa">其他巴布亚文</language>
			<language type="pag">邦阿西楠语</language>
			<language type="pal">帕拉维文</language>
			<language type="pam">邦板牙文</language>
			<language type="pap">帕皮亚门托文</language>
			<language type="pau">帕劳文</language>
			<language type="peo">古老波斯语</language>
			<language type="phi">其他菲律宾语系</language>
			<language type="phn">腓尼基文</language>
			<language type="pi">巴利文</language>
			<language type="pl">波兰文</language>
			<language type="pon">波纳佩文</language>
			<language type="pra">普拉克里特诸语言</language>
			<language type="pro">普罗文斯文</language>
			<language type="ps">普什图文</language>
			<language type="pt">葡萄牙文</language>
			<language type="pt_BR">葡萄牙语(巴西)</language>
			<language type="pt_PT">依伯利亚葡萄牙文</language>
			<language type="qu">盖丘亚文</language>
			<language type="raj">拉贾斯坦文</language>
			<language type="rap">拉帕努伊文</language>
			<language type="rar">拉罗汤加文</language>
			<language type="rm">列托-罗曼文</language>
			<language type="rn">基隆迪文</language>
			<language type="ro">罗马尼亚文</language>
			<language type="roa">其他拉丁语系</language>
			<language type="rom">吉普赛文</language>
			<language type="root">root</language>
			<language type="ru">俄文</language>
			<language type="rup">亚美尼亚语</language>
			<language type="rw">卢旺达文</language>
			<language type="sa">梵文</language>
			<language type="sad">散达维文</language>
			<language type="sah">雅库特文</language>
			<language type="sai">其他南美印第安文</language>
			<language type="sal">萨利什文</language>
			<language type="sam">萨玛利亚文</language>
			<language type="sas">萨萨克文</language>
			<language type="sat">桑塔利文</language>
			<language type="sc">萨丁文</language>
			<language type="scn">西西里文</language>
			<language type="sco">苏格兰文</language>
			<language type="sd">信德文</language>
			<language type="se">北萨米文</language>
			<language type="sel">塞尔库普文</language>
			<language type="sem">其他闪族语系</language>
			<language type="sg">桑戈文</language>
			<language type="sga">古爱尔兰文</language>
			<language type="sgn">手语</language>
			<language type="sh">塞尔维亚-克罗地亚文</language>
			<language type="shn">掸文</language>
			<language type="si">僧伽罗文</language>
			<language type="sid">悉达摩文</language>
			<language type="sio">苏语诸语言</language>
			<language type="sit">其他汉藏语系</language>
			<language type="sk">斯洛伐克文</language>
			<language type="sl">斯洛文尼亚文</language>
			<language type="sla">其他斯拉夫语系</language>
			<language type="sm">萨摩亚文</language>
			<language type="sma">南萨米文</language>
			<language type="smi">其他萨米文</language>
			<language type="smj">律勒欧萨莫斯语</language>
			<language type="smn">伊纳里萨米语</language>
			<language type="sms">斯科特萨米文</language>
			<language type="sn">绍纳文</language>
			<language type="snk">索尼基文</language>
			<language type="so">索马里文</language>
			<language type="sog">古粟特语</language>
			<language type="son">桑海文</language>
			<language type="sq">阿尔巴尼亚文</language>
			<language type="sr">塞尔维亚文</language>
			<language type="srn">Sranan Tongo(源于克里奥尔语)</language>
			<language type="srr">谢列尔文</language>
			<language type="ss">斯瓦特文</language>
			<language type="ssa">非洲撒哈拉沙漠边缘地带语言</language>
			<language type="st">塞索托文</language>
			<language type="su">巽他文</language>
			<language type="suk">苏库马文</language>
			<language type="sus">苏苏文</language>
			<language type="sux">苏马文</language>
			<language type="sv">瑞典文</language>
			<language type="sw">斯瓦希里文</language>
			<language type="syr">叙利亚文</language>
			<language type="ta">泰米尔文</language>
			<language type="tai">傣语诸语言(其他)</language>
			<language type="te">泰卢固文</language>
			<language type="tem">滕内文</language>
			<language type="ter">特列纳文</language>
			<language type="tet">特塔姆文</language>
			<language type="tg">塔吉克文</language>
			<language type="th">泰文</language>
			<language type="ti">提格里尼亚文</language>
			<language type="tig">提格雷文</language>
			<language type="tiv">蒂夫文</language>
			<language type="tk">土库曼文</language>
			<language type="tkl">托克劳文</language>
			<language type="tl">他加禄文</language>
			<language type="tlh">克林贡文</language>
			<language type="tli">特林吉特文</language>
			<language type="tmh">塔马奇克文</language>
			<language type="tn">塞茨瓦纳文</language>
			<language type="to">汤加文</language>
			<language type="tog">汤加文(尼亚萨地区)</language>
			<language type="tpi">托克皮辛文</language>
			<language type="tr">土耳其文</language>
			<language type="ts">宗加文</language>
			<language type="tsi">蒂姆西亚文</language>
			<language type="tt">塔塔尔文</language>
			<language type="tum">通布卡文</language>
			<language type="tup">图皮语系</language>
			<language type="tut">阿尔泰诸语言(其他)</language>
			<language type="tvl">图瓦卢文</language>
			<language type="tw">特威文</language>
			<language type="ty">塔西提文</language>
			<language type="tyv">图瓦文</language>
			<language type="udm">乌德穆尔特文</language>
			<language type="ug">维吾尔文</language>
			<language type="uga">乌加里特文</language>
			<language type="uk">乌克兰文</language>
			<language type="umb">翁本杜文</language>
			<language type="und">未定语种</language>
			<language type="ur">乌尔都文</language>
			<language type="uz">乌兹别克文</language>
			<language type="vai">瓦伊文</language>
			<language type="ve">文达文</language>
			<language type="vi">越南文</language>
			<language type="vo">沃拉普克文</language>
			<language type="vot">沃提克文</language>
			<language type="wa">瓦隆文</language>
			<language type="wak">瓦卡什诸语言</language>
			<language type="wal">瓦拉莫文</language>
			<language type="war">瓦赖文</language>
			<language type="was">瓦绍文</language>
			<language type="wen">索布诸语言</language>
			<language type="wo">沃洛夫文</language>
			<language type="xal">卡尔梅克文</language>
			<language type="xh">科萨文</language>
			<language type="yao">瑶族文</language>
			<language type="yap">雅浦文</language>
			<language type="yi">依地文</language>
			<language type="yo">约鲁巴文</language>
			<language type="ypk">尤皮克诸语言</language>
			<language type="za">壮语</language>
			<language type="zap">萨波蒂克文</language>
			<language type="zen">泽纳加文</language>
			<language type="zh">中文</language>
			<language type="zh_Hans">中文(简体)</language>
			<language type="zh_Hant">中文(繁体)</language>
			<language type="znd">赞德文</language>
			<language type="zu">祖鲁文</language>
			<language type="zun">祖尼语</language>
			<language type="zxx">无语言内容</language>
			<language type="zza">扎扎文</language>
		</languages>
		<scripts>
			<script type="Arab">阿拉伯语</script>
			<script type="Armn">亚美尼亚语</script>
			<script type="Bali">巴厘语</script>
			<script type="Batk">巴塔克语</script>
			<script type="Beng">孟加拉语</script>
			<script type="Blis">布列斯符号</script>
			<script type="Bopo">汉语拼音</script>
			<script type="Brah">婆罗米文字</script>
			<script type="Brai">布莱叶盲文</script>
			<script type="Bugi">布吉语</script>
			<script type="Buhd">布希德语</script>
			<script type="Cans">加拿大土著统一符号语</script>
			<script type="Cari">卡里亚语</script>
			<script type="Cham">占语</script>
			<script type="Cher">切罗基语</script>
			<script type="Cirt">色斯文</script>
			<script type="Copt">克普特语</script>
			<script type="Cprt">塞浦路斯语</script>
			<script type="Cyrl">西里尔语</script>
			<script type="Cyrs">西里尔文字(古教会斯拉夫语的变体)</script>
			<script type="Deva">梵文</script>
			<script type="Dsrt">德塞莱特文</script>
			<script type="Egyd">后期埃及语</script>
			<script type="Egyh">古埃及僧侣书写体</script>
			<script type="Egyp">古埃及象形文</script>
			<script type="Ethi">埃塞俄比亚语</script>
			<script type="Geok">格鲁吉亚语文字 (Asomtavruli and Nuskhuri)</script>
			<script type="Geor">格鲁吉亚语</script>
			<script type="Glag">格拉哥里语</script>
			<script type="Goth">哥特语</script>
			<script type="Grek">希腊语</script>
			<script type="Gujr">古吉拉特语</script>
			<script type="Guru">果鲁穆奇语</script>
			<script type="Hang">韩语</script>
			<script type="Hani">汉语</script>
			<script type="Hano">汉奴罗语</script>
			<script type="Hans">简体中文</script>
			<script type="Hant">繁体中文</script>
			<script type="Hebr">希伯来语</script>
			<script type="Hira">平假名</script>
			<script type="Hmng">杨松录苗文</script>
			<script type="Hrkt">片假名或平假名</script>
			<script type="Hung">古匈牙利语</script>
			<script type="Inds">古希腊哈拉潘</script>
			<script type="Ital">古意大利语</script>
			<script type="Java">爪哇语</script>
			<script type="Jpan">日语</script>
			<script type="Kali">克耶李文字</script>
			<script type="Kana">片假名</script>
			<script type="Khar">卡罗须提文</script>
			<script type="Khmr">高棉语</script>
			<script type="Knda">卡纳塔克语</script>
			<script type="Kore">朝鲜语</script>
			<script type="Lana">兰拿语</script>
			<script type="Laoo">老挝语</script>
			<script type="Latf">拉丁文(哥特式字体变体)</script>
			<script type="Latg">拉丁文(盖尔语变体)</script>
			<script type="Latn">拉丁语</script>
			<script type="Lepc">雷布查语</script>
			<script type="Limb">林布语</script>
			<script type="Lina">线形文字 A</script>
			<script type="Linb">线形文字 B</script>
			<script type="Lyci">利西亚语</script>
			<script type="Lydi">吕底亚语</script>
			<script type="Mand">阿拉米语</script>
			<script type="Maya">玛雅圣符文</script>
			<script type="Mero">麦若提克文</script>
			<script type="Mlym">马拉亚拉姆语</script>
			<script type="Mong">蒙古语</script>
			<script type="Moon">韩文语系</script>
			<script type="Mtei">曼尼普尔语</script>
			<script type="Mymr">缅甸</script>
			<script type="Nkoo">N’Ko(西非书面语言)</script>
			<script type="Ogam">欧甘语</script>
			<script type="Olck">桑塔利语</script>
			<script type="Orkh">鄂尔浑文</script>
			<script type="Orya">奥里亚语</script>
			<script type="Osma">奥斯曼亚语</script>
			<script type="Perm">古彼尔姆诸语</script>
			<script type="Phag">八思巴文</script>
			<script type="Phnx">腓尼基语</script>
			<script type="Plrd">波拉德音标文字</script>
			<script type="Qaai">遗传学术语</script>
			<script type="Rjng">拉让语</script>
			<script type="Roro">朗格朗格文</script>
			<script type="Runr">古代北欧文</script>
			<script type="Sara">沙拉堤文</script>
			<script type="Saur">索拉什特拉语</script>
			<script type="Sgnw">书写符号</script>
			<script type="Shaw">萧伯纳式语</script>
			<script type="Sinh">辛哈拉语</script>
			<script type="Sund">巽他文</script>
			<script type="Sylo">Syloti Nagri 书写体</script>
			<script type="Syrc">叙利亚语</script>
			<script type="Syre">福音体叙利亚文</script>
			<script type="Syrj">西叙利亚语</script>
			<script type="Syrn">东叙利亚语</script>
			<script type="Tagb">塔格班瓦语</script>
			<script type="Tale">泰乐语</script>
			<script type="Talu">新傣文</script>
			<script type="Taml">泰米尔语</script>
			<script type="Telu">泰卢固语</script>
			<script type="Teng">格瓦文字</script>
			<script type="Tfng">提非纳文</script>
			<script type="Tglg">塔加路语</script>
			<script type="Thaa">塔安娜语</script>
			<script type="Thai">泰语</script>
			<script type="Tibt">藏语</script>
			<script type="Ugar">乌加里特语</script>
			<script type="Vaii">瓦依语</script>
			<script type="Visp">可见语音</script>
			<script type="Xpeo">古波斯语</script>
			<script type="Xsux">苏美尔-阿卡德楔形文字</script>
			<script type="Yiii">彝语</script>
			<script type="Zxxx">撤销写入</script>
			<script type="Zyyy">通用</script>
			<script type="Zzzz">脚本未知或者无效</script>
		</scripts>
		<territories>
			<territory type="001">世界</territory>
			<territory type="002">非洲</territory>
			<territory type="003">北美洲</territory>
			<territory type="005">南美洲</territory>
			<territory type="009">大洋洲</territory>
			<territory type="011">西非</territory>
			<territory type="013">中美洲</territory>
			<territory type="014">东非</territory>
			<territory type="015">北非</territory>
			<territory type="017">中非</territory>
			<territory type="018">南部非洲</territory>
			<territory type="019">美洲</territory>
			<territory type="021">美洲北部</territory>
			<territory type="029">加勒比海</territory>
			<territory type="030">东亚</territory>
			<territory type="034">南亚</territory>
			<territory type="035">东南亚</territory>
			<territory type="039">南欧</territory>
			<territory type="053">澳大利亚和新西兰</territory>
			<territory type="054">美拉尼西亚</territory>
			<territory type="057">密克罗尼西亚</territory>
			<territory type="061">玻利尼西亚</territory>
			<territory type="062">中南亚</territory>
			<territory type="142">亚洲</territory>
			<territory type="143">中亚</territory>
			<territory type="145">西亚</territory>
			<territory type="150">欧洲</territory>
			<territory type="151">东欧</territory>
			<territory type="154">北欧</territory>
			<territory type="155">西欧</territory>
			<territory type="172">独联体</territory>
			<territory type="419">拉丁美洲和加勒比海</territory>
			<territory type="830">海峡群岛</territory>
			<territory type="AD">安道尔</territory>
			<territory type="AE">阿拉伯联合酋长国</territory>
			<territory type="AF">阿富汗</territory>
			<territory type="AG">安提瓜和巴布达</territory>
			<territory type="AI">安圭拉</territory>
			<territory type="AL">阿尔巴尼亚</territory>
			<territory type="AM">亚美尼亚</territory>
			<territory type="AN">荷属安的列斯群岛</territory>
			<territory type="AO">安哥拉</territory>
			<territory type="AQ">南极洲</territory>
			<territory type="AR">阿根廷</territory>
			<territory type="AS">美属萨摩亚</territory>
			<territory type="AT">奥地利</territory>
			<territory type="AU">澳大利亚</territory>
			<territory type="AW">阿鲁巴</territory>
			<territory type="AX">奥兰群岛</territory>
			<territory type="AZ">阿塞拜疆</territory>
			<territory type="BA">波斯尼亚和黑塞哥维那</territory>
			<territory type="BB">巴巴多斯</territory>
			<territory type="BD">孟加拉国</territory>
			<territory type="BE">比利时</territory>
			<territory type="BF">布基纳法索</territory>
			<territory type="BG">保加利亚</territory>
			<territory type="BH">巴林</territory>
			<territory type="BI">布隆迪</territory>
			<territory type="BJ">贝宁</territory>
			<territory type="BL">圣巴泰勒米</territory>
			<territory type="BM">百慕大</territory>
			<territory type="BN">文莱</territory>
			<territory type="BO">玻利维亚</territory>
			<territory type="BR">巴西</territory>
			<territory type="BS">巴哈马</territory>
			<territory type="BT">不丹</territory>
			<territory type="BV">布维特岛</territory>
			<territory type="BW">博茨瓦纳</territory>
			<territory type="BY">白俄罗斯</territory>
			<territory type="BZ">伯利兹</territory>
			<territory type="CA">加拿大</territory>
			<territory type="CC">科科斯群岛</territory>
			<territory type="CD">刚果(金)</territory>
			<territory type="CF">中非共和国</territory>
			<territory type="CG">刚果(布)</territory>
			<territory type="CH">瑞士</territory>
			<territory type="CI">象牙海岸</territory>
			<territory type="CK">库克群岛</territory>
			<territory type="CL">智利</territory>
			<territory type="CM">喀麦隆</territory>
			<territory type="CN">中国</territory>
			<territory type="CO">哥伦比亚</territory>
			<territory type="CR">哥斯达黎加</territory>
			<territory type="CS">塞尔维亚和黑山</territory>
			<territory type="CU">古巴</territory>
			<territory type="CV">佛得角</territory>
			<territory type="CX">圣诞岛</territory>
			<territory type="CY">塞浦路斯</territory>
			<territory type="CZ">捷克共和国</territory>
			<territory type="DE">德国</territory>
			<territory type="DJ">吉布提</territory>
			<territory type="DK">丹麦</territory>
			<territory type="DM">多米尼加</territory>
			<territory type="DO">多米尼加共和国</territory>
			<territory type="DZ">阿尔及利亚</territory>
			<territory type="EC">厄瓜多尔</territory>
			<territory type="EE">爱沙尼亚</territory>
			<territory type="EG">埃及</territory>
			<territory type="EH">西撒哈拉</territory>
			<territory type="ER">厄立特里亚</territory>
			<territory type="ES">西班牙</territory>
			<territory type="ET">埃塞俄比亚</territory>
			<territory type="FI">芬兰</territory>
			<territory type="FJ">斐济</territory>
			<territory type="FK">福克兰群岛</territory>
			<territory type="FM">密克罗尼西亚联邦</territory>
			<territory type="FO">法罗群岛</territory>
			<territory type="FR">法国</territory>
			<territory type="GA">加蓬</territory>
			<territory type="GB">英国</territory>
			<territory type="GD">格林纳达</territory>
			<territory type="GE">格鲁吉亚</territory>
			<territory type="GF">法属圭亚那</territory>
			<territory type="GG">格恩西岛</territory>
			<territory type="GH">加纳</territory>
			<territory type="GI">直布罗陀</territory>
			<territory type="GL">格陵兰</territory>
			<territory type="GM">冈比亚</territory>
			<territory type="GN">几内亚</territory>
			<territory type="GP">瓜德罗普岛</territory>
			<territory type="GQ">赤道几内亚</territory>
			<territory type="GR">希腊</territory>
			<territory type="GS">南佐治亚和南三明治群岛</territory>
			<territory type="GT">危地马拉</territory>
			<territory type="GU">关岛</territory>
			<territory type="GW">几内亚比绍</territory>
			<territory type="GY">圭亚那</territory>
			<territory type="HK">香港</territory>
			<territory type="HM">赫德与麦克唐纳群岛</territory>
			<territory type="HN">洪都拉斯</territory>
			<territory type="HR">克罗地亚</territory>
			<territory type="HT">海地</territory>
			<territory type="HU">匈牙利</territory>
			<territory type="ID">印度尼西亚</territory>
			<territory type="IE">爱尔兰</territory>
			<territory type="IL">以色列</territory>
			<territory type="IM">曼岛</territory>
			<territory type="IN">印度</territory>
			<territory type="IO">英属印度洋领地</territory>
			<territory type="IQ">伊拉克</territory>
			<territory type="IR">伊朗</territory>
			<territory type="IS">冰岛</territory>
			<territory type="IT">意大利</territory>
			<territory type="JE">泽西岛</territory>
			<territory type="JM">牙买加</territory>
			<territory type="JO">约旦</territory>
			<territory type="JP">日本</territory>
			<territory type="KE">肯尼亚</territory>
			<territory type="KG">吉尔吉斯斯坦</territory>
			<territory type="KH">柬埔寨</territory>
			<territory type="KI">基里巴斯</territory>
			<territory type="KM">科摩罗</territory>
			<territory type="KN">圣基茨和尼维斯</territory>
			<territory type="KP">北朝鲜</territory>
			<territory type="KR">韩国</territory>
			<territory type="KW">科威特</territory>
			<territory type="KY">开曼群岛</territory>
			<territory type="KZ">哈萨克斯坦</territory>
			<territory type="LA">老挝人民民主共和国</territory>
			<territory type="LB">黎巴嫩</territory>
			<territory type="LC">圣卢西亚</territory>
			<territory type="LI">列支敦士登</territory>
			<territory type="LK">斯里兰卡</territory>
			<territory type="LR">利比里亚</territory>
			<territory type="LS">莱索托</territory>
			<territory type="LT">立陶宛</territory>
			<territory type="LU">卢森堡</territory>
			<territory type="LV">拉脱维亚</territory>
			<territory type="LY">利比亚</territory>
			<territory type="MA">摩洛哥</territory>
			<territory type="MC">摩纳哥</territory>
			<territory type="MD">摩尔多瓦</territory>
			<territory type="ME">黑山共和国</territory>
			<territory type="MF">圣马丁</territory>
			<territory type="MG">马达加斯加</territory>
			<territory type="MH">马绍尔群岛</territory>
			<territory type="MK">马其顿</territory>
			<territory type="ML">马里</territory>
			<territory type="MM">缅甸</territory>
			<territory type="MN">蒙古</territory>
			<territory type="MO">澳门</territory>
			<territory type="MP">北马里亚纳群岛</territory>
			<territory type="MQ">马提尼克群岛</territory>
			<territory type="MR">毛里塔尼亚</territory>
			<territory type="MS">蒙塞拉特群岛</territory>
			<territory type="MT">马耳他</territory>
			<territory type="MU">毛里求斯</territory>
			<territory type="MV">马尔代夫</territory>
			<territory type="MW">马拉维</territory>
			<territory type="MX">墨西哥</territory>
			<territory type="MY">马来西亚</territory>
			<territory type="MZ">莫桑比克</territory>
			<territory type="NA">纳米比亚</territory>
			<territory type="NC">新喀里多尼亚</territory>
			<territory type="NE">尼日尔</territory>
			<territory type="NF">诺福克岛</territory>
			<territory type="NG">尼日利亚</territory>
			<territory type="NI">尼加拉瓜</territory>
			<territory type="NL">荷兰</territory>
			<territory type="NO">挪威</territory>
			<territory type="NP">尼泊尔</territory>
			<territory type="NR">瑙鲁</territory>
			<territory type="NU">纽埃</territory>
			<territory type="NZ">新西兰</territory>
			<territory type="OM">阿曼</territory>
			<territory type="PA">巴拿马</territory>
			<territory type="PE">秘鲁</territory>
			<territory type="PF">法属波利尼西亚</territory>
			<territory type="PG">巴布亚新几内亚</territory>
			<territory type="PH">菲律宾</territory>
			<territory type="PK">巴基斯坦</territory>
			<territory type="PL">波兰</territory>
			<territory type="PM">圣皮埃尔和密克隆</territory>
			<territory type="PN">皮特凯恩</territory>
			<territory type="PR">波多黎各</territory>
			<territory type="PS">巴勒斯坦领土</territory>
			<territory type="PT">葡萄牙</territory>
			<territory type="PW">帕劳</territory>
			<territory type="PY">巴拉圭</territory>
			<territory type="QA">卡塔尔</territory>
			<territory type="QO">大洋洲边远群岛</territory>
			<territory type="QU">欧盟</territory>
			<territory type="RE">留尼汪</territory>
			<territory type="RO">罗马尼亚</territory>
			<territory type="RS">塞尔维亚</territory>
			<territory type="RU">俄罗斯</territory>
			<territory type="RW">卢旺达</territory>
			<territory type="SA">沙特阿拉伯</territory>
			<territory type="SB">所罗门群岛</territory>
			<territory type="SC">塞舌尔群岛</territory>
			<territory type="SD">苏丹</territory>
			<territory type="SE">瑞典</territory>
			<territory type="SG">新加坡</territory>
			<territory type="SH">圣赫勒拿</territory>
			<territory type="SI">斯洛文尼亚</territory>
			<territory type="SJ">斯瓦尔巴特和扬马延</territory>
			<territory type="SK">斯洛伐克</territory>
			<territory type="SL">塞拉利昂</territory>
			<territory type="SM">圣马力诺</territory>
			<territory type="SN">塞内加尔</territory>
			<territory type="SO">索马里</territory>
			<territory type="SR">苏里南</territory>
			<territory type="ST">圣多美和普林西比</territory>
			<territory type="SV">萨尔瓦多</territory>
			<territory type="SY">叙利亚</territory>
			<territory type="SZ">斯威士兰</territory>
			<territory type="TC">特克斯和凯科斯群岛</territory>
			<territory type="TD">乍得</territory>
			<territory type="TF">法属南部领土</territory>
			<territory type="TG">多哥</territory>
			<territory type="TH">泰国</territory>
			<territory type="TJ">塔吉克斯坦</territory>
			<territory type="TK">托克劳</territory>
			<territory type="TL">东帝汶</territory>
			<territory type="TM">土库曼斯坦</territory>
			<territory type="TN">突尼斯</territory>
			<territory type="TO">汤加</territory>
			<territory type="TR">土耳其</territory>
			<territory type="TT">特立尼达和多巴哥</territory>
			<territory type="TV">图瓦卢</territory>
			<territory type="TW">台湾</territory>
			<territory type="TZ">坦桑尼亚</territory>
			<territory type="UA">乌克兰</territory>
			<territory type="UG">乌干达</territory>
			<territory type="UM">美国边远小岛</territory>
			<territory type="US">美国</territory>
			<territory type="UY">乌拉圭</territory>
			<territory type="UZ">乌兹别克斯坦</territory>
			<territory type="VA">梵蒂冈</territory>
			<territory type="VC">圣文森特和格林纳丁斯</territory>
			<territory type="VE">委内瑞拉</territory>
			<territory type="VG">英属维京群岛</territory>
			<territory type="VI">美属维京群岛</territory>
			<territory type="VN">越南</territory>
			<territory type="VU">瓦努阿图</territory>
			<territory type="WF">瓦利斯和富图纳</territory>
			<territory type="WS">萨摩亚</territory>
			<territory type="YE">也门</territory>
			<territory type="YT">马约特</territory>
			<territory type="ZA">南非</territory>
			<territory type="ZM">赞比亚</territory>
			<territory type="ZW">津巴布韦</territory>
			<territory type="ZZ">未知或无效地区</territory>
		</territories>
		<variants>
			<variant type="1901">传统德语拼字学</variant>
			<variant type="1996">1996 年的德语拼字学</variant>
			<variant type="AREVELA">东亚美尼亚语</variant>
			<variant type="AREVMDA">西亚美尼亚语</variant>
			<variant type="FONIPA">国际音标</variant>
			<variant type="POLYTON">多音</variant>
			<variant type="REVISED">已修订的拼字学</variant>
			<variant type="SAAHO">萨霍</variant>
		</variants>
		<keys>
			<key type="calendar">日历</key>
			<key type="collation">对照</key>
			<key type="currency">货币</key>
		</keys>
		<types>
			<type type="big5han" key="collation">繁体中文(Big5)</type>
			<type type="buddhist" key="calendar">佛教日历</type>
			<type type="chinese" key="calendar">农历</type>
			<type type="direct" key="collation">顺序</type>
			<type type="gb2312han" key="collation">简体中文(GB2312)</type>
			<type type="gregorian" key="calendar">公历</type>
			<type type="hebrew" key="calendar">希伯来日历</type>
			<type type="indian" key="calendar">印度国家日历</type>
			<type type="islamic" key="calendar">伊斯兰日历</type>
			<type type="islamic-civil" key="calendar">伊斯兰希吉来历</type>
			<type type="japanese" key="calendar">日本日历</type>
			<type type="phonebook" key="collation">电话簿顺序</type>
			<type type="pinyin" key="collation">拼音顺序</type>
			<type type="roc" key="calendar">中华民国日历</type>
			<type type="stroke" key="collation">笔划顺序</type>
			<type type="traditional" key="collation">传统历法</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">美制</measurementSystemName>
			<measurementSystemName type="metric">公制</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">语言:{0}</codePattern>
			<codePattern type="script">脚本:{0}</codePattern>
			<codePattern type="territory">区域:{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[一 丁 七 丈-与 专 且 世 丘-业 东 丝 丢 两 严 丧 个 中 丰 串 临 丸-主 丽 举 乃 久 么 义 之-乐 乔 乖 乘 乙 九 也-乡 书 买 乱 乾 了 予 争 事 二 于 亏 云 互 五 井 亚 些 亡 交 亦 亨 享 京 亮 亲 人 亿-仁 仅 仇 今 介 仍 从 仔 他 付 仙 代-以 仪 们 仰 仲 件 任 份 仿 企 伊 伍 伏-休 众 伙 会 伟 传 伤 伦 伯 估 伴 伸 似 伽 但 位-佑 体 何 余 佛 作 你 佤 佩 佳 使 例 供 依 侠 侦-侨 侬 侯 侵 便 促 俄 俊 俗 保 信 俩 修 俱 俾 倍 倒 候 倚 借 倦 值 倾 假 偌 偏 做 停 健 偶 偷 储 催 傲 傻 像 僧 儒 允 元-充 先 光 克 免 兑 兔 入 全 八-兮 兰 共 关-兹 养-兽 内 冈 再 冒 写 军 农 冠 冬 冰 冲 冷 准 凌 凝 几 凡 凤 凭 凯 凰 出 击 函 刀 分 切 刊 刑 划 列-创 初 判 利 别 到 制-券 刺 刻 剂 前 剑 剧 剩 剪 副 割 力 劝-务 劣 动-劫 励-劳 势 勇 勉 勋 勒 勤 勾 勿 包 匆 匈 化 北 匙 匹-医 十 千 升 午 半 华 协 卒 卓 单-南 博 占-卢 卫 印 危 即 卷 厄-历 厉 压-厍 厚 原 去 县 参 又-反 发 叔 取-叙 口-另 叫-叭 可 台 史 右 叶-叹 吃 各 合-吊 同-后 吐 向 吓 吗 君 吝 吟 否 吧 含 吵 吸 吹 吻 吾 呀 呆 呈 告 呐 员 呜 呢 呦 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咯 咱 哀 品 哇-哉 响 哎 哟 哥 哦 哩 哪 哭 哲 唉 唐 唤 唬 售 唯 唱 唷 商 啊 啡 啥 啦 啪 喀 喂 善 喇 喊 喏 喔 喜 喝 喵 喷 喻 嗒 嗨 嗯 嘉 嘛 嘴 嘻 嘿 器 四 回 因 团 园 困 围 固 国 图 圆 圈 土 圣 在 圭 地 场 圾 址 均 坎 坐 坑 块 坚-坜 坡 坤 坦 坪 垂 垃 型 垒 埃 埋 城 埔 域 培 基 堂 堆 堕 堡 堪 塑 塔 塞 填 境 增 墨 壁 士 壮 声 处 备 复 夏 夕 外 多 夜 夥 大 天-夫 央 失 头 夷-夺 奇-奉 奋 奏 契 奔 套 奥 女 奴 奶 她 好 如 妇 妈 妖 妙 妥 妨 妮 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娄 娘 娜 娟 婆 婚 媒 嫁 嫌 嫩 子 孔 孕 字-孙 孜 孝 孟 季 孤 学 孩 宁 它 宇-安 宋 完 宏 宗-实 审-室 宪 害 家 容 宽-宿 寂 寄 密 寇 富 寒 寝-察 寡 寨 寸 对 寻 导 寿 封 射 将 尊 小 少 尔 尖 尘 尚 尝 尤 就 尺 尼-尾 局-层 居 屋 屏 展 属 屠 山 岁 岂 岗 岘 岚 岛 岳 岸 峡 峰 崇 崩 川 州 巡 工-巨 巫 差 己 已 巴 巷 币-布 帅 师 希 帐 帕 帝 带 席 帮 常 帽 幅 幕 干-年 幸 幻-幽 广 庆 床 序 库-底 店 庙 府 庞 废 度 座 庭 康 庸 廉 廖 延 廷 建 开 弃 弄 弊 式 引 弗 弘 弟 张 弥 弦 弯 弱 弹 归 当 彝 形 彩 彬 彭 彰 影 彷 役 彻 彼 往 征 径 待 很 律 後 徐 徒 得 循 微 徵 德 心 必 忆 忌 忍 志-忙 忠 忧 快 念 忽 怀 态 怎 怒 怕 怖 思 怡 急 性 怨 怪 总 恋 恐 恢 恨 恩 恭 息 恰 恶 恼 悄 悉 悔 悟 悠 患 您 悲 情 惑 惜 惠 惧 惨 惯 想 惹 愁 愈 愉 意 愚 感 愧 慈 慎 慕 慢 慧 慰 憾 懂 懒 戈 戏-戒 或 战 截 戴 房-扁 扇 手 才 扎 扑 打 托 扣 执 扩 扫-扯 批 找-技 抄 把 抑 抓 投 抗 折 抢 护 报 披 抬 抱 抵 抹 抽 担 拆 拉 拍 拒 拔 拖 拘 招 拜 拟 拥 拦 拨 择 括 拳 拷 拼 拾 拿 持 指 按 挑 挖 挝 挡 挤 挥 挪 振 挺 捉 捐 捕 损 捡 换 捷 授 掉 掌 排 探 接 控-措 掸 描 提 插 握 援 搜 搞 搬 搭 摄 摆 摊 摔 摘 摩 摸 撒 撞 播 操 擎 擦 支 收 改 攻 放 政 故 效 敌 敏 救 教 敝 敢 散 敦 敬 数 敲 整 文 斋 斐 斗 料 斜 斥 断 斯 新 方 於 施 旁 旅 旋 族 旗 无 既 日-早 旭 时 旺 昂 昆 昌 明 昏 易 星 映 春 昨 昭 是 显 晃 晋 晒 晓 晚 晨 普 景 晴 晶 智 暂 暑 暖 暗 暮 暴 曰 曲 更 曹 曼 曾-最 月 有 朋 服 朗 望 朝 期 木 未-札 术 朱 朵 杀 杂 权 杉 李 材 村 杜 束 条 来 杨 杯 杰 松 板 极 析 林 果 枝 枢 枪 枫 架 柏 某 染 柔 查 柬 柯 柳 柴 标 栋 栏 树 校 样-根 格 桃 框 案 桌 桑 档 桥 梁 梅 梦 梯 械 梵 检 棉 棋 棒 棚 森 椅 植 椰 楚 楼 概 榜 模 樱 檀 欠-欣 欧 欲 欺 款 歉 歌 止-武 歪 死 殊 残 段 毅 母 每 毒 比 毕 毛 毫 氏 民 氛 水 永 求 汉 汗 汝 江-污 汤 汪 汶 汽 沃 沈 沉 沙 沟 沧 河 油 治 沿 泉 泊 法 泛 泡-泣 泥 注 泰 泳 泽 洋 洗 洛 洞 津 洪 洲 活 洽 派 流 浅 测 济 浑 浓 浦 浩 浪 浮 浴 海 涅 消 涉 涛 涨 涯 液 涵 淋 淑 淘 淡 深 混 添 清 渐 渡 渣 温 港 渴 游 湖 湾 源 溜 溪 滋 滑 满 滥 滨 滴 漂 漏 演 漠 漫 潘 潜 潮 澎 澳 激 灌 火 灭 灯 灰 灵 灿 炉 炎 炮 炸 点 烂 烈 烤 烦 烧 热 焦 然 煌 煞 照 煮 熊 熟 燃 燕 爆 爪 爬 爱 爵-爸 爽 片 版 牌 牙 牛 牡 牢 牧 物 牲 牵 特 牺 犯 状 犹 狂 狐 狗 狠 独 狮 狱 狼 猛 猜 献 玄 率 玉 王 玛 玩 玫 环 现 玲 玻 珊 珍 珠 班 球 理 琊 琪 琳 琴 瑙 瑜 瑞 瑟 瑰 瑶 璃 瓜 瓦 瓶 甘 甚 甜 生 用 田-申 电 男 甸 画 畅 界 留 略 番 疆 疏 疑 疗 疯 疲 疼 疾 病 痕 痛 痴 登 白 百 的 皆 皇 皮 盈 益 监 盒 盖 盘 盛 盟 目 直 相 盼 盾 省 眉 看 真 眠 眼 睛 睡 督 瞧 矛 矣 知 短 石 矶 码 砂 砍 研 破 础 硕 硬 碍 碎 碗 碟 碧 碰 磁 磅 磨 示 礼 社 祖 祝 神 祥 票 祸 禁 禅 福 秀 私 秋 种 科 秒 秘 租 秤 秦 秩 积 称 移 稀 程 稍 稣 稳 稿 穆 究 穷 穹 空 穿 突 窗 窝 立 站 竞-章 童 端 竹 笑 笔 笛 符 笨 第 等 筋 答 策 筹 签 简 算 管 箭 箱 篇 篮 簿 籍 米 类 粉 粒 粗 粹 精 糊 糕 糖 糟 系 素 索 紧 紫 累 繁 红 约 级 纪 纯 纲 纳 纵 纷 纸 纽 练 组 细-终 绍 经 结 绕 绘 给 络 统 继 绩 绪 续 维 绵 综 缅 缓 编 缘 缠 缩 缴 缶 缸 缺 罐 罕 罗 罚 罢 罪 置 署 羊 美 羞 群 羯 羽 翁 翅 翔 翘 翠 翰 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 职 联 聚 聪 肉 肚 股 肤 肥 肩 肯 育 胁 胆 背 胎 胖 胞 胡 胶 胸 能 脆 脑 脱 脸 腊 腐 腓 腰 腹 腾 腿 臂 臣 自 臭 至 致 舌 舍 舒 舞 舟 航 般 舰 船 良 色 艺 艾 节 芒 芝 芦 芬 芭 花 芳 苍 苏 苗 若 苦 英 茂 茨 茫 茶 草 荒 荣 药 荷 莉 莎 莪 莫 莱 莲 获 菜 菩 菲 萄 萍 萤 营 萧 萨 落 著 葛 葡 蒂 蒋 蒙 蓉 蓝 蓬 蔑 蔡 薄 薪 藉 藏 藤 虎 虑 虫 虹 虽 虾 蚁 蛇 蛋 蛙 蛮 蜂 蜜 蝶 融 蟹 蠢 血 行 街 衡 衣 补 表 袋 被 袭 裁 裂 装 裕 裤 西 要 覆 见 观 规 视 览 觉 角 解 言 誉 誓 警 计 订 认 讨 让 训-记 讲 许 论 设 访 证 评 识 诉 词 译 试 诗 诚 话 诞 询 该 详 语 误 说 请 诸 诺 读 课 谁 调 谅 谈 谊 谋 谓 谜 谢 谨 谱 谷 豆 象 豪 貌 贝-负 贡-败 货-贪 购 贯 贱 贴 贵 费 贺 贼 贾 资 赋 赌 赏 赐 赔 赖 赚 赛 赞 赠 赢 赤 赫 走 赵 起 趁 超 越 趋 趣 足 跃 跌 跑 距 跟 路 跳 踏 踢 踩 身 躲 车 轨 轩 转 轮-轰 轻 载 较 辅 辆 辈 辉 辑 输 辛 辞 辨 辩 辱 边 达 迁 迅 过 迈 迎 运 近 返 还 这 进-迟 迦 迪 迫 述 迷 追 退 送 逃 逆 选 逊 透 逐 递 途 通 逛 逝 速 造 逢 逸 逻 逼 遇 遍 道 遗 遭 遮 遵 避 邀 邓 那 邦 邪 邮 邱 邻 郎 郑 部 郭 都 鄂 酋 配 酒 酷 酸 醉 醒 采 释 里-量 金 针 钓 钟 钢 钦 钱 钻 铁 铃 铢 铭 银 销 锁 锅 锋 错 锡 锦 键 锺 镇 镜 镭 长 门 闪 闭 问 间 闷 闹 闻 阁 阐 阔 队 阮 防-阶 阻 阿 陀 附-陆 陈 降 限 院 除 险 陪 陵-陷 隆 随 隐 隔 障 难 雄-集 雨 雪 雯 雳 零 雷 雾 需 震 霍 霖 露 霸 霹 青 靖 静 非 靠 面 革 靼 鞋 鞑 韦 韩 音 页 顶 项-须 顽-顿 预 领 颇 频 颗 题 额 风 飘 飙 飞 食 餐 饭 饮 饰 饱 饼 馆 首 香 馨 马 驱 驶 驻 驾 验 骑 骗 骚 骤 骨 高 鬼 魂 魅 魔 鱼 鲁 鲜 鸟 鸣 鸭 鸿 鹅 鹤 鹰 鹿 麦 麻 黄 黎 黑 默 鼓 鼠 鼻 齐 齿 龄 龙 龟]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[侣 傣 卑 厘 吕 堤 奎 巽 录 户 撤 楔 楠 滕 瑚 甫 盲 禄 粟 线 脚 钯 铂 锑 镑 魁]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="chinese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MEd">M-dE</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">一月</month>
							<month type="2">二月</month>
							<month type="3">三月</month>
							<month type="4">四月</month>
							<month type="5">五月</month>
							<month type="6">六月</month>
							<month type="7">七月</month>
							<month type="8">八月</month>
							<month type="9">九月</month>
							<month type="10">十月</month>
							<month type="11">十一月</month>
							<month type="12">十二月</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">一月</month>
							<month type="2">二月</month>
							<month type="3">三月</month>
							<month type="4">四月</month>
							<month type="5">五月</month>
							<month type="6">六月</month>
							<month type="7">七月</month>
							<month type="8">八月</month>
							<month type="9">九月</month>
							<month type="10">十月</month>
							<month type="11">十一月</month>
							<month type="12">十二月</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">周日</day>
							<day type="mon">周一</day>
							<day type="tue">周二</day>
							<day type="wed">周三</day>
							<day type="thu">周四</day>
							<day type="fri">周五</day>
							<day type="sat">周六</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">星期日</day>
							<day type="mon">星期一</day>
							<day type="tue">星期二</day>
							<day type="wed">星期三</day>
							<day type="thu">星期四</day>
							<day type="fri">星期五</day>
							<day type="sat">星期六</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">日</day>
							<day type="mon">一</day>
							<day type="tue">二</day>
							<day type="wed">三</day>
							<day type="thu">四</day>
							<day type="fri">五</day>
							<day type="sat">六</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1季</quarter>
							<quarter type="2">2季</quarter>
							<quarter type="3">3季</quarter>
							<quarter type="4">4季</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">第1季度</quarter>
							<quarter type="2">第2季度</quarter>
							<quarter type="3">第3季度</quarter>
							<quarter type="4">第4季度</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>上午</am>
				<pm>下午</pm>
				<eras>
					<eraNames>
						<era type="0">公元前</era>
						<era type="1">公元</era>
					</eraNames>
					<eraAbbr>
						<era type="0">公元前</era>
						<era type="1">公元</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-M-d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-M-d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>ahh时mm分ss秒v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>ahh时mm分ss秒z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>ahh:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>ah:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">d日E</dateFormatItem>
						<dateFormatItem id="H">H时</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">M-dE</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">MMMd日E</dateFormatItem>
						<dateFormatItem id="MMMMEd">MMMMd日E</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMMd日</dateFormatItem>
						<dateFormatItem id="MMMMdd">MMMMdd日</dateFormatItem>
						<dateFormatItem id="MMMd">MMMd日</dateFormatItem>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d日</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy年</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">yyyy年M月d日,E</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy年MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">yyyy年MMMd日EEE</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy年MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy年QQQ</dateFormatItem>
						<dateFormatItem id="yQQQ">y年QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">yy-MM</dateFormatItem>
						<dateFormatItem id="yyMMM">yy年MMM</dateFormatItem>
						<dateFormatItem id="yyQ">yy年第Q季度</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy年</dateFormatItem>
						<dateFormatItem id="yyyyM">yyyy年M月</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">yyyy年MMMM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}–{1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">L至L</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">M-dE至M-dE</greatestDifference>
							<greatestDifference id="d">M-dE至M-dE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLLL至LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">M月d日E至d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">M月d日至d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M-d至M-d</greatestDifference>
							<greatestDifference id="d">M-d至M-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d日至d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">ah至ah时</greatestDifference>
							<greatestDifference id="h">ah至h时</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">ah:mm至ah:mm</greatestDifference>
							<greatestDifference id="h">ah:mm至h:mm</greatestDifference>
							<greatestDifference id="m">ah:mm至h:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">ah:mm至ah:mmv</greatestDifference>
							<greatestDifference id="h">ah:mm至h:mmv</greatestDifference>
							<greatestDifference id="m">ah:mm至h:mmv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">ah至ah时v</greatestDifference>
							<greatestDifference id="h">ah至h时v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y至y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-M至yy-M</greatestDifference>
							<greatestDifference id="y">yy-M至yy-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yy-M-dE至yy-M-dE</greatestDifference>
							<greatestDifference id="d">yy-M-dE至yy-M-dE</greatestDifference>
							<greatestDifference id="y">yy-M-dE至yy-M-dE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy年M月至M月</greatestDifference>
							<greatestDifference id="y">yyyy年M月至yyyy年M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy年M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">yyyy年M月d日E至d日E</greatestDifference>
							<greatestDifference id="y">yyyy年M月d日E至yyyy年M月d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy年M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">yyyy年M月d日至d日</greatestDifference>
							<greatestDifference id="y">yyyy年M月d日至yyyy年M月d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-M-d至yy-M-d</greatestDifference>
							<greatestDifference id="d">yy-M-d至yy-M-d</greatestDifference>
							<greatestDifference id="y">yy-M-d至yy-M-d</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>时期</displayName>
					</field>
					<field type="year">
						<displayName>年</displayName>
					</field>
					<field type="month">
						<displayName>月</displayName>
					</field>
					<field type="week">
						<displayName>周</displayName>
					</field>
					<field type="day">
						<displayName>日</displayName>
						<relative type="0">今天</relative>
						<relative type="1">明天</relative>
						<relative type="2">后天</relative>
						<relative type="-1">昨天</relative>
						<relative type="-2">前天</relative>
					</field>
					<field type="weekday">
						<displayName>周天</displayName>
					</field>
					<field type="dayperiod">
						<displayName>上午/下午</displayName>
					</field>
					<field type="hour">
						<displayName>小时</displayName>
					</field>
					<field type="minute">
						<displayName>分钟</displayName>
					</field>
					<field type="second">
						<displayName>秒钟</displayName>
					</field>
					<field type="zone">
						<displayName>区域</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="japanese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyyyM">yyyy-M</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="roc">
				<eras>
					<eraAbbr>
						<era type="0">民国前</era>
						<era type="1">民国</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>Gy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>Gy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>Gy-M-d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>Gy-M-d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>格林尼治标准时间{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>未知</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>安道尔</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>迪拜</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>喀布尔</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>安提瓜</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>安圭拉</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>地拉那</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>埃里温</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>库拉卡</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>罗安达</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>罗瑟拉</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>帕默尔</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>南极</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>斯尤瓦</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>莫森</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>戴维斯</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>沃斯托克</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>卡塞</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>杜蒙杜威勒</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>马克默多</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>里奥加耶戈斯</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>门多萨</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>圣胡安</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>乌斯怀亚</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>拉里奥哈</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>卡塔马卡</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>胡胡伊</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>图库曼</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>科尔多瓦</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>布宜诺斯艾利斯</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>帕果-帕果</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>维也纳</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>佩思</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>尤克拉</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>达尔文</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>阿德莱德</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>布罗肯希尔</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>库利</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>墨尔本</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>霍巴特</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>林德曼</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>悉尼</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>布里斯班</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>豪勋爵</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>阿鲁巴</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>玛丽港</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>巴库</exemplarCity>
			</zone>
			<zone type="Europe/Sarajevo">
				<exemplarCity>萨拉热窝</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>巴巴多斯</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>达卡</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>布鲁塞尔</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>瓦加杜古</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>索非亚</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>巴林</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>布琼布拉</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>波多诺伏</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>百慕大</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>文莱</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>拉巴斯</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>依伦尼贝</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>里奥布郎库</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>波多韦柳</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>博阿维斯塔</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>马瑙斯</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>库亚巴</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>大坎普</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>贝伦</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>阿拉瓜伊纳</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>圣保罗</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>巴伊亚</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>福塔雷萨</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>马塞约</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>累西腓</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>洛罗尼亚</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>拿骚</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>廷布</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>哈博罗内</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>明斯克</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>伯利兹</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>道森</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>怀特霍斯</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>伊努维克</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>温哥华</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>道森克里克</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>耶洛奈夫</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>埃德蒙顿</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>斯威夫特卡伦特</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>坎布里季贝</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>里贾纳</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>温尼伯</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>雨河</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>雷今海口</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>珊瑚港</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>桑德贝</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>尼皮贡</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>多伦多</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>蒙特利尔</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>伊魁鲁伊特</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>旁涅唐</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>蒙克顿</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>哈利法克斯</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>古斯湾</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>格莱斯贝</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>圣约翰</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>可可斯</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>金沙萨</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>卢本巴希</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>班吉</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>布拉扎维</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>苏黎世</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>阿比让</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>拉罗汤加</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>复活节岛</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>圣地亚哥</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>杜阿拉</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>喀什葛尔</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>乌鲁木齐</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>重庆</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>上海</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>哈尔滨</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>波哥大</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>哥斯达黎加</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>哈瓦那</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>佛得角</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>圣诞岛</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>尼科西亚</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>布拉格</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>柏林</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>吉布提</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>哥本哈根</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>多米尼加</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>圣多明各</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>阿尔及尔</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>加拉帕哥斯</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>瓜亚基尔</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>塔林</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>开罗</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>阿尤恩</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>阿斯马拉</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>加那利</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>休达</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>马德里</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>亚的斯亚贝巴</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>赫尔辛基</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>斐济</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>史丹利</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>特鲁克群岛</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>波纳佩岛</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>库赛埃</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>法罗</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>巴黎</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>利伯维尔</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<short>
					<daylight>BST</daylight>
				</short>
				<exemplarCity>伦敦</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>格林纳达</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>第比利斯</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>卡宴</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>根西岛</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>阿克拉</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>直布罗陀</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>图勒</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>戈特霍布</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>斯科列斯比桑德</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Danmarkshavn(格陵兰东北城市)</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>班珠尔</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>科纳克里</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>瓜德罗普</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>马拉博</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>雅典</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>南乔治亚</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>危地马拉</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>关岛</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>比绍</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>圭亚那</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>香港</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>特古西加尔巴</exemplarCity>
			</zone>
			<zone type="Europe/Zagreb">
				<exemplarCity>萨格勒布</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>太子港</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>布达佩斯</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>雅加达</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>坤甸</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>望加锡</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>查亚普拉</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>都柏林</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>耶路撒冷</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>马恩岛</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>加尔各答</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>查戈斯</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>巴格达</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>德黑兰</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>雷克雅未克</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>罗马</exemplarCity>
			</zone>
			<zone type="Europe/Jersey">
				<exemplarCity>泽西岛</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>牙买加</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>安曼</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>东京</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>内罗毕</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>比什凯克</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>金边</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>恩德贝里</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>基里地马地岛</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>塔拉瓦</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>科摩罗</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>圣基茨</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>平壤</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>首尔</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>科威特</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>开曼</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>阿克图</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>乌拉尔</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>阿克托别</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>克孜勒奥尔达</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>阿拉木图</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>万象</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>贝鲁特</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>圣卢西亚</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>瓦杜兹</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>科伦坡</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>蒙罗维亚</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>马塞卢</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>维尔纽斯</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>卢森堡</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>里加</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>的黎波里</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>卡萨布兰卡</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>摩纳哥</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>基希讷乌</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>波德戈里察</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>安塔那利佛</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>夸贾林</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>马朱罗</exemplarCity>
			</zone>
			<zone type="Europe/Skopje">
				<exemplarCity>斯科普里</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>巴马科</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>仰光</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>科布多</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>乌兰巴托</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>卓巴尔塞</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>澳门</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>塞班</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>马提尼克</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>努瓦克肖特</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>蒙特塞拉特</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>马耳他</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>毛里求斯</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>马尔代夫</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>布兰太尔</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>提华纳</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>埃莫西约</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>马萨特兰</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>奇瓦瓦</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>蒙特雷</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>墨西哥城</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>梅里达</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>坎昆</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>吉隆坡</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>古晋</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>马普托</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>温得和克</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>努美阿</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>尼亚美</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>诺福克</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>拉各斯</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>马那瓜</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>阿姆斯特丹</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>奥斯陆</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>加德满都</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>瑙鲁</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>纽埃</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>查塔姆</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>奥克兰</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>马斯喀特</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>巴拿马</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>利马</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>塔希提</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>马克萨斯</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>甘比尔</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>莫尔兹比港</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>马尼拉</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>卡拉奇</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>华沙</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>密克隆</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>皮特凯恩</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>波多黎各</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>加沙</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>亚述尔群岛</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>马德拉</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>里斯本</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>帕劳</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>亚松森</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>卡塔尔</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>留尼旺</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>布加勒斯特</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>贝尔格莱德</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>加里宁格勒</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>莫斯科</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>伏尔加格勒</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>萨马拉</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>叶卡捷林堡</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>鄂木斯克</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>诺沃西比尔斯克</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>克拉斯诺亚尔斯克</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>伊尔库茨克</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>雅库茨克</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>符拉迪沃斯托克</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>萨哈林</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>马加丹</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>堪察加</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>阿纳德尔</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>基加利</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>利雅得</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>瓜达尔卡纳尔</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>马埃</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>哈土穆</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>斯德哥尔摩</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>新加坡</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>圣赫勒拿</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>卢布尔维</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>朗伊尔城</exemplarCity>
			</zone>
			<zone type="Europe/Bratislava">
				<exemplarCity>布拉迪斯拉发</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>弗里敦</exemplarCity>
			</zone>
			<zone type="Europe/San_Marino">
				<exemplarCity>圣马力诺</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>达喀尔</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>摩加迪沙</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>帕拉马利玻</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>圣多美</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>萨尔瓦多</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>大马士革</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>姆巴巴纳</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>大土耳其</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>恩贾梅纳</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>凯尔盖朗</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>洛美</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>曼谷</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>杜尚别</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>法考福</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>帝力</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>阿什哈巴德</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>突尼斯</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>东加塔布</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>伊斯坦布尔</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>西班牙港</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>富纳富提</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>台北</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>达累斯萨拉姆</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>乌日戈罗德</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>基辅</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>辛菲罗波尔</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>扎波罗热</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>坎帕拉</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>中途岛</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>约翰斯顿</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>威克</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>艾德克</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>诺姆</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>檀香山</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>安克雷奇</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>亚库塔特</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>朱诺</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>洛杉矶</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>博伊西</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>凤凰城</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>舰石城</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>丹佛</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>北达科他</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>芝加哥</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>密诺米尼</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>温森斯</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>彼得斯堡</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>诺克斯</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>马伦戈</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>印地安纳波利斯</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>路易斯维尔</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>维维市(印第安纳州)</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>蒙蒂塞洛</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>底特律</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>纽约</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>蒙得维的亚</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>撒马尔罕</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>塔什干</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>梵蒂冈</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>圣文森特</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>加拉加斯</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>托尔托拉</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>圣托马斯</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>胡志明市</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>埃法特</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>瓦利斯</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>阿皮亚</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>亚丁</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>马约特</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>约翰内斯堡</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>卢萨卡</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>哈拉雷</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<generic>Acre 时间</generic>
					<standard>Acre 标准时间</standard>
					<daylight>Acre 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>阿富汗時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<generic>非洲中部时间</generic>
					<standard>中部非洲标准时间</standard>
				</long>
				<short>
					<standard>中部非洲时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<generic>非洲东部时间</generic>
					<standard>东部非洲标准时间</standard>
				</long>
				<short>
					<standard>东部非洲时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>非洲南部时间</generic>
					<standard>南部非洲标准时间</standard>
				</long>
				<short>
					<generic>南部非洲时间</generic>
					<standard>南部非洲标准时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>西部非洲时间</generic>
					<standard>西部非洲标准时间</standard>
					<daylight>西部非洲夏令时间</daylight>
				</long>
				<short>
					<standard>南部非洲时间</standard>
					<daylight>西部非洲标准时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<generic>阿尔卑斯时间</generic>
					<standard>阿尔卑斯标准时间</standard>
					<daylight>阿尔卑斯夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>阿拉斯加时间</generic>
					<standard>阿拉斯加标准时间</standard>
					<daylight>阿拉斯加夏令时间</daylight>
				</long>
				<short>
					<standard>阿拉斯加标准时间</standard>
					<daylight>阿拉斯加夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>阿拉斯加-夏威夷时间</generic>
					<standard>阿拉斯加-夏威夷标准时间</standard>
					<daylight>阿拉斯加-夏威夷夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<long>
					<generic>Almaty 时间</generic>
					<standard>Almaty 标准时间</standard>
					<daylight>Almaty 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<generic>亚马逊时间</generic>
					<standard>亚马逊标准时间</standard>
					<daylight>亚马逊夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>美国中部时间</generic>
					<standard>中部标准时间</standard>
					<daylight>中部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>美国东部时间</generic>
					<standard>东部标准时间</standard>
					<daylight>东部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>美国山区时间</generic>
					<standard>山区标准时间</standard>
					<daylight>山区夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>美国太平洋时间</generic>
					<standard>太平洋标准时间</standard>
					<daylight>太平洋夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>阿納德爾時間</standard>
					<daylight>阿納德爾夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<generic>阿克图时间</generic>
					<standard>阿克图标准时间</standard>
					<daylight>阿克图夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<generic>阿克托别时间</generic>
					<standard>阿克托别标准时间</standard>
					<daylight>阿克托别夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>阿拉伯时间</generic>
					<standard>阿拉伯标准时间</standard>
					<daylight>阿拉伯夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<long>
					<generic>阿根廷时间</generic>
					<standard>阿根廷标准时间</standard>
					<daylight>阿根廷夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<generic>阿根廷西部时间</generic>
					<standard>阿根廷西部标准时间</standard>
					<daylight>阿根廷西部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<generic>亚美尼亚时间</generic>
					<standard>亚美尼亚标准时间</standard>
					<daylight>亚美尼亚夏令时间</daylight>
				</long>
				<short>
					<generic>AMT (Armenia)</generic>
					<standard>AMST (Armenia)</standard>
					<daylight>AMDT (Armenia)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<generic>阿什哈巴德时间</generic>
					<standard>阿什哈巴德标准时间</standard>
					<daylight>阿什哈巴德夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>大西洋时间</generic>
					<standard>大西洋标准时间</standard>
					<daylight>大西洋夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>澳大利亚中部时间</generic>
					<standard>澳大利亚中部标准时间</standard>
					<daylight>澳大利亚中部夏令时间</daylight>
				</long>
				<short>
					<generic>澳大利亚中部时间</generic>
					<standard>澳大利亚中部标准时间</standard>
					<daylight>澳大利亚中部夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<standard>澳大利亚中西部标准时间</standard>
					<daylight>澳大利亚中西部夏令时间</daylight>
				</long>
				<short>
					<standard>澳大利亚中西部标准时间</standard>
					<daylight>澳大利亚中西部夏令时间</daylight>
				</short>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>澳大利亚东部时间</generic>
					<standard>澳大利亚东部标准时间</standard>
					<daylight>澳大利亚东部夏令时间</daylight>
				</long>
				<short>
					<generic>澳大利亚东部时间</generic>
					<standard>澳大利亚东部标准时间</standard>
					<daylight>澳大利亚东部夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>澳大利亚西部时间</generic>
					<standard>澳大利亚西部标准时间</standard>
					<daylight>澳大利亚西部夏令时间</daylight>
				</long>
				<short>
					<generic>澳大利亚西部时间</generic>
					<standard>澳大利亚西部标准时间</standard>
					<daylight>澳大利亚西部夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<generic>阿塞拜疆时间</generic>
					<standard>阿塞拜疆标准时间</standard>
					<daylight>阿塞拜疆夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<generic>亚述尔群岛时间</generic>
					<standard>亚述尔群岛时间</standard>
					<daylight>亚述尔群岛夏令时间</daylight>
				</long>
				<short>
					<generic>亚述尔时间</generic>
					<standard>亚述尔群岛时间</standard>
					<daylight>亚述尔群岛夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<long>
					<generic>巴库时间</generic>
					<standard>巴库标准时间</standard>
					<daylight>巴库夏令时间</daylight>
				</long>
				<short>
					<standard>巴库时间</standard>
					<daylight>巴库标准时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<generic>孟加拉时间</generic>
					<standard>孟加拉标准时间</standard>
					<daylight>孟加拉夏令时间</daylight>
				</long>
				<short>
					<standard>孟加拉夏令时间</standard>
					<daylight>BDT</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>白令时间</generic>
					<standard>白令标准时间</standard>
					<daylight>白令夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<generic>不丹时间</generic>
					<standard>不丹标准时间</standard>
					<daylight>不丹夏令时间</daylight>
				</long>
				<short>
					<standard>孟加拉标准时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>玻利維亞時間</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<generic>婆罗洲时间</generic>
					<standard>婆罗洲标准时间</standard>
					<daylight>婆罗洲夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<generic>巴西利亚时间</generic>
					<standard>巴西利亚标准时间</standard>
					<daylight>巴西利亚夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>汶萊時間</standard>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<standard>查莫罗标准时区</standard>
				</long>
				<short>
					<standard>查莫罗标准时区</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>长白山时间</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<generic>智利时间</generic>
					<standard>智利标准时间</standard>
					<daylight>智利夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<generic>中国时间</generic>
					<standard>中国标准时间</standard>
					<daylight>中国夏令时间</daylight>
				</long>
				<short>
					<generic>CT(中国)</generic>
					<standard>CST(中国)</standard>
					<daylight>CDT(中国)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<generic>乔巴山时间</generic>
					<standard>乔巴山标准时间</standard>
					<daylight>乔巴山夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>哥倫比亞時間</standard>
					<daylight>哥倫比亞夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>古巴時間</generic>
					<standard>古巴標準時間</standard>
					<daylight>古巴夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Dacca">
				<long>
					<generic>达卡时间</generic>
					<standard>达卡标准时间</standard>
					<daylight>达卡夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<generic>杜尚别时间</generic>
					<standard>杜尚别标准时间</standard>
					<daylight>杜尚别夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<generic>荷属圭亚那时间</generic>
					<standard>荷属圭亚那标准时间</standard>
					<daylight>荷属圭亚那夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<generic>东帝汶时间</generic>
					<standard>东帝汶标准时间</standard>
					<daylight>东帝汶夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>厄瓜多尔标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<generic>中欧时间</generic>
					<standard>中欧标准时间</standard>
					<daylight>中欧夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<generic>东欧时间</generic>
					<standard>东欧标准时间</standard>
					<daylight>东欧夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<generic>西欧时间</generic>
					<standard>欧洲西部时间</standard>
					<daylight>欧洲西部夏令时间</daylight>
				</long>
				<short>
					<generic>西欧时间</generic>
					<standard>欧洲西部时间</standard>
					<daylight>欧洲西部夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>法屬圭亞那時間</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<generic>伏龙芝时间</generic>
					<standard>伏龙芝标准时间</standard>
					<daylight>伏龙芝夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>格林尼治标准时间</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<generic>加拉帕戈斯时间</generic>
					<standard>加拉帕戈斯时间</standard>
					<daylight>加拉帕戈斯夏令时间</daylight>
				</long>
				<short>
					<generic>加拉帕哥斯时间</generic>
					<standard>加拉帕戈斯时间</standard>
					<daylight>加拉帕哥斯夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<long>
					<generic>格鲁吉亚时间</generic>
					<standard>格鲁吉亚标准时间</standard>
					<daylight>格鲁吉亚夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<generic>格林兰中部时间</generic>
					<standard>格林兰中部标准时间</standard>
					<daylight>格林兰中部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<generic>格林兰东部时间</generic>
					<standard>格林兰东部标准时间</standard>
					<daylight>格林兰东部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<generic>格林兰西部时间</generic>
					<standard>格林兰西部标准时间</standard>
					<daylight>格林兰西部夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<long>
					<generic>关岛时间</generic>
					<standard>关岛标准时间</standard>
					<daylight>关岛夏令时间</daylight>
				</long>
				<short>
					<generic>关岛时间</generic>
					<standard>关岛标准时间</standard>
					<daylight>关岛夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gulf">
				<long>
					<standard>海湾标准时间</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>蓋亞那時間</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>夏威夷—阿留申标准时间</standard>
				</long>
				<short>
					<standard>夏威夷—阿留申标准时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>香港時間</standard>
					<daylight>香港夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>科布多時間</standard>
					<daylight>科布多夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>印度标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>印度尼西亚中部标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>印度尼西亚东部标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>印度尼西亚西部标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>伊朗標準時間</standard>
					<daylight>伊朗夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>伊爾庫茨克時間</standard>
					<daylight>伊爾庫茨克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>以色列时间</generic>
					<standard>以色列标准时间</standard>
					<daylight>以色列夏令时间</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>日本時間</generic>
					<standard>日本标准时间</standard>
					<daylight>日本夏令时间</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<generic>卡拉奇时间</generic>
					<standard>卡拉奇标准时间</standard>
					<daylight>卡拉奇夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>喀什标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>哈萨克斯坦东部时间</generic>
					<standard>哈萨克斯坦东部标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>哈萨克斯坦西部时间</generic>
					<standard>哈萨克斯坦西部标准时间</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<generic>Kizilorda 时间</generic>
					<standard>Kizilorda 标准时间</standard>
					<daylight>Kizilorda 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>韩国时间</generic>
					<standard>韩国标准时间</standard>
					<daylight>韩国夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<generic>古比雪夫时间</generic>
					<standard>古比雪夫时间</standard>
					<daylight>古比雪夫夏令时间</daylight>
				</long>
				<short>
					<standard>古比雪夫时间</standard>
					<daylight>古比雪夫夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<generic>夸贾林时间</generic>
					<standard>夸贾林时间</standard>
					<daylight>夸贾林夏令时间</daylight>
				</long>
				<short>
					<standard>夸贾林时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<generic>Kyrgystan 时间</generic>
					<standard>Kyrgystan 标准时间</standard>
					<daylight>Kyrgystan 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<long>
					<generic>Lanka 时间</generic>
					<standard>Lanka 标准时间</standard>
					<daylight>Lanka 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<generic>Long-Shu 时间</generic>
					<standard>Long-Shu 标准时间</standard>
					<daylight>Long-Shu 夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>罗德毫岛时间</generic>
					<standard>罗德毫岛标准时间</standard>
					<daylight>罗德毫岛夏令时间</daylight>
				</long>
				<short>
					<standard>罗德毫岛标准时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<long>
					<generic>澳门时间</generic>
					<standard>澳门标准时间</standard>
					<daylight>澳门夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>馬加丹時間</standard>
					<daylight>馬加丹夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<generic>马来亚时间</generic>
					<standard>马来亚标准时间</standard>
					<daylight>马来亚夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<generic>马来西亚时间</generic>
					<standard>马来西亚标准时间</standard>
					<daylight>马来西亚夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<generic>马绍尔群岛时间</generic>
					<standard>马绍尔群岛时间</standard>
					<daylight>马绍尔群岛夏令时间</daylight>
				</long>
				<short>
					<standard>马绍尔群岛时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<generic>乌兰巴托时间</generic>
					<standard>乌兰巴托标准时间</standard>
					<daylight>乌兰巴托夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>莫斯科时间</generic>
					<standard>莫斯科标准时间</standard>
					<daylight>莫斯科夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>緬甸時間</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>尼泊爾時間</standard>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>新西兰时间</generic>
					<standard>新西兰标准时间</standard>
					<daylight>新西兰夏令时间</daylight>
				</long>
				<short>
					<generic>新西兰时间</generic>
					<standard>新西兰标准时间</standard>
					<daylight>新西兰夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>纽芬兰时间</generic>
					<standard>纽芬兰标准时间</standard>
					<daylight>纽芬兰夏令时间</daylight>
				</long>
				<short>
					<standard>纽芬兰标准时间</standard>
					<daylight>纽芬兰夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>爾南多-迪諾羅尼亞島時間</standard>
					<daylight>爾南多-迪諾羅尼亞島夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<generic>北马里亚纳群岛时间</generic>
					<standard>北马里亚纳群岛时间</standard>
					<daylight>北马里亚纳群岛夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>新西伯利亞時間</standard>
					<daylight>新西伯利亞夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>鄂木斯克時間</standard>
					<daylight>鄂木斯克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<generic>巴基斯坦时间</generic>
					<standard>巴基斯坦标准时间</standard>
					<daylight>巴基斯坦夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>巴拉圭時間</standard>
					<daylight>巴拉圭夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>秘魯時間</standard>
					<daylight>秘魯夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>菲律賓時間</standard>
					<daylight>菲律賓夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>彼得岛和米克隆岛时间</generic>
					<standard>彼得岛和米克隆岛标准时间</standard>
					<daylight>彼得岛和米克隆岛夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<generic>克孜勒奥尔达时间</generic>
					<standard>克孜勒奥尔达标准时间</standard>
					<daylight>克孜勒奥尔达夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>庫頁島時間</standard>
					<daylight>庫頁島夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<generic>萨马拉时间</generic>
					<standard>萨马拉时间</standard>
					<daylight>萨马拉夏令时间</daylight>
				</long>
				<short>
					<standard>萨马拉时间</standard>
					<daylight>萨马拉夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<generic>撒马尔罕时间</generic>
					<standard>撒马尔罕标准时间</standard>
					<daylight>撒马尔罕夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<long>
					<generic>萨摩亚时间</generic>
					<standard>萨摩亚标准时间</standard>
					<daylight>萨摩亚夏令时间</daylight>
				</long>
				<short>
					<standard>瑞典夏令时间</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>舍甫琴科时间</standard>
					<daylight>舍甫琴科夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>新加坡標準時間</standard>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<generic>苏里南夏令时间</generic>
					<standard>苏里南标准时间</standard>
				</long>
				<short>
					<daylight>蘇利南夏令時間</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<generic>斯维尔德洛夫斯克时间</generic>
					<standard>斯维尔德洛夫斯克标准时间</standard>
					<daylight>斯维尔德洛夫斯克夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<generic>塔吉克斯坦时间</generic>
					<standard>塔吉克斯坦标准时间</standard>
					<daylight>塔吉克斯坦夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<generic>塔什干时间</generic>
					<standard>塔什干标准时间</standard>
					<daylight>塔什干夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<generic>第比利斯时间</generic>
					<standard>第比利斯标准时间</standard>
					<daylight>第比利斯夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<generic>土耳其时间</generic>
					<standard>土耳其时间</standard>
					<daylight>土耳其夏令时间</daylight>
				</long>
				<short>
					<standard>土耳其时间</standard>
					<daylight>土耳其夏令时间</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<generic>土库曼斯坦时间</generic>
					<standard>土库曼斯坦标准时间</standard>
					<daylight>土库曼斯坦夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<generic>乌拉尔斯克时间</generic>
					<standard>乌拉尔斯克标准时间</standard>
					<daylight>乌拉尔斯克夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>烏拉圭時間</standard>
					<daylight>烏拉圭夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<generic>乌鲁木齐时间</generic>
					<standard>乌鲁木齐标准时间</standard>
					<daylight>乌鲁木齐夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<generic>乌兹别克斯坦时间</generic>
					<standard>乌兹别克斯坦标准时间</standard>
					<daylight>乌兹别克斯坦夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>委內瑞拉時間</standard>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>海參崴時間</standard>
					<daylight>海參崴夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>雅庫茨克時間</standard>
					<daylight>雅庫茨克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<generic>叶卡捷琳堡时间</generic>
					<standard>叶卡捷琳堡标准时间</standard>
					<daylight>叶卡捷琳堡夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<generic>埃里温时间</generic>
					<standard>埃里温标准时间</standard>
					<daylight>埃里温夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>育空时间</generic>
					<standard>育空标准时间</standard>
					<daylight>育空夏令时间</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>安道尔比塞塔</displayName>
			</currency>
			<currency type="AED">
				<displayName>阿联酋迪拉姆</displayName>
			</currency>
			<currency type="AFA">
				<displayName>阿富汗尼 (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>阿富汗尼</displayName>
			</currency>
			<currency type="ALL">
				<displayName>阿尔巴尼亚列克</displayName>
			</currency>
			<currency type="AMD">
				<displayName>亚美尼亚德拉姆</displayName>
			</currency>
			<currency type="ANG">
				<displayName>荷兰安替兰盾</displayName>
			</currency>
			<currency type="AOA">
				<displayName>安哥拉宽扎</displayName>
			</currency>
			<currency type="AOK">
				<displayName>安哥拉宽扎 (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>安哥拉新宽扎 (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>安哥拉宽扎 Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>阿根廷奥斯特</displayName>
			</currency>
			<currency type="ARP">
				<displayName>阿根廷比索 (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>阿根廷比索</displayName>
			</currency>
			<currency type="ATS">
				<displayName>奥地利先令</displayName>
			</currency>
			<currency type="AUD">
				<displayName>澳大利亚元</displayName>
			</currency>
			<currency type="AWG">
				<displayName>阿鲁巴基尔德元</displayName>
			</currency>
			<currency type="AZM">
				<displayName>阿塞拜疆马纳特 (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>阿塞拜疆马纳特</displayName>
			</currency>
			<currency type="BAD">
				<displayName>波士尼亚-赫塞哥维纳第纳尔</displayName>
			</currency>
			<currency type="BAM">
				<displayName>波士尼亚-赫塞哥维纳兑换券</displayName>
			</currency>
			<currency type="BBD">
				<displayName>巴巴多斯元</displayName>
			</currency>
			<currency type="BDT">
				<displayName>孟加拉塔卡</displayName>
			</currency>
			<currency type="BEC">
				<displayName>比利时法郎兑换券</displayName>
			</currency>
			<currency type="BEF">
				<displayName>比利时法郎</displayName>
			</currency>
			<currency type="BEL">
				<displayName>比利时法郎(金融)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>保加利亚硬列弗</displayName>
			</currency>
			<currency type="BGN">
				<displayName>保加利亚新列弗</displayName>
			</currency>
			<currency type="BHD">
				<displayName>巴林第纳尔</displayName>
			</currency>
			<currency type="BIF">
				<displayName>布隆迪法郎</displayName>
			</currency>
			<currency type="BMD">
				<displayName>百慕大元</displayName>
			</currency>
			<currency type="BND">
				<displayName>文莱元</displayName>
			</currency>
			<currency type="BOB">
				<displayName>玻利维亚诺</displayName>
			</currency>
			<currency type="BOP">
				<displayName>玻利维亚比索</displayName>
			</currency>
			<currency type="BOV">
				<displayName>玻利维亚 Mvdol(资金)</displayName>
			</currency>
			<currency type="BRB">
				<displayName>巴西克鲁赛罗 Novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>巴西克鲁扎多</displayName>
			</currency>
			<currency type="BRE">
				<displayName>巴西克鲁塞罗 (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>巴西雷亚尔</displayName>
			</currency>
			<currency type="BRN">
				<displayName>巴西克鲁扎多 Novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>巴西克鲁塞罗</displayName>
			</currency>
			<currency type="BSD">
				<displayName>巴哈马元</displayName>
			</currency>
			<currency type="BTN">
				<displayName>不丹努扎姆</displayName>
			</currency>
			<currency type="BUK">
				<displayName>缅元</displayName>
			</currency>
			<currency type="BWP">
				<displayName>博茨瓦纳普拉</displayName>
			</currency>
			<currency type="BYB">
				<displayName>白俄罗斯新卢布 (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>白俄罗斯卢布</displayName>
			</currency>
			<currency type="BZD">
				<displayName>伯利兹元</displayName>
			</currency>
			<currency type="CAD">
				<displayName>加拿大元</displayName>
			</currency>
			<currency type="CDF">
				<displayName>刚果法郎</displayName>
			</currency>
			<currency type="CHF">
				<displayName>瑞士法郎</displayName>
			</currency>
			<currency type="CLF">
				<displayName>智利 Unidades de Fomento(资金)</displayName>
			</currency>
			<currency type="CLP">
				<displayName>智利比索</displayName>
			</currency>
			<currency type="CNY">
				<displayName>人民币</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="COP">
				<displayName>哥伦比亚比索</displayName>
			</currency>
			<currency type="CRC">
				<displayName>哥斯达黎加科朗</displayName>
			</currency>
			<currency type="CSD">
				<displayName>旧塞尔维亚第纳尔</displayName>
			</currency>
			<currency type="CSK">
				<displayName>捷克硬克郎</displayName>
			</currency>
			<currency type="CUP">
				<displayName>古巴比索</displayName>
			</currency>
			<currency type="CVE">
				<displayName>佛得角埃斯库多</displayName>
			</currency>
			<currency type="CYP">
				<displayName>塞浦路斯镑</displayName>
			</currency>
			<currency type="CZK">
				<displayName>捷克克郎</displayName>
			</currency>
			<currency type="DDM">
				<displayName>东德奥斯特马克</displayName>
			</currency>
			<currency type="DEM">
				<displayName>德国马克</displayName>
			</currency>
			<currency type="DJF">
				<displayName>吉布提法郎</displayName>
			</currency>
			<currency type="DKK">
				<displayName>丹麦克朗</displayName>
			</currency>
			<currency type="DOP">
				<displayName>多米尼加比索</displayName>
			</currency>
			<currency type="DZD">
				<displayName>阿尔及利亚第纳尔</displayName>
			</currency>
			<currency type="ECS">
				<displayName>厄瓜多尔苏克雷</displayName>
			</currency>
			<currency type="ECV">
				<displayName>厄瓜多尔 Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>爱沙尼亚克朗</displayName>
			</currency>
			<currency type="EGP">
				<displayName>埃及镑</displayName>
			</currency>
			<currency type="EQE">
				<displayName>埃奎勒</displayName>
			</currency>
			<currency type="ERN">
				<displayName>厄立特里亚纳克法</displayName>
			</currency>
			<currency type="ESA">
				<displayName>西班牙比塞塔(帐户 A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>西班牙比塞塔(兑换帐户)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>西班牙比塞塔</displayName>
			</currency>
			<currency type="ETB">
				<displayName>埃塞俄比亚比尔</displayName>
			</currency>
			<currency type="EUR">
				<displayName>欧元</displayName>
			</currency>
			<currency type="FIM">
				<displayName>芬兰马克</displayName>
			</currency>
			<currency type="FJD">
				<displayName>斐济元</displayName>
			</currency>
			<currency type="FKP">
				<displayName>福克兰镑</displayName>
			</currency>
			<currency type="FRF">
				<displayName>法国法郎</displayName>
			</currency>
			<currency type="GBP">
				<displayName>英镑</displayName>
			</currency>
			<currency type="GEK">
				<displayName>乔治亚库蓬拉瑞特</displayName>
			</currency>
			<currency type="GEL">
				<displayName>乔治亚拉瑞</displayName>
			</currency>
			<currency type="GHC">
				<displayName>加纳塞第</displayName>
			</currency>
			<currency type="GHS">
				<displayName>加纳塞迪</displayName>
			</currency>
			<currency type="GIP">
				<displayName>直布罗陀镑</displayName>
			</currency>
			<currency type="GMD">
				<displayName>冈比亚达拉西</displayName>
			</currency>
			<currency type="GNF">
				<displayName>几内亚法郎</displayName>
			</currency>
			<currency type="GNS">
				<displayName>几内亚西里</displayName>
			</currency>
			<currency type="GQE">
				<displayName>赤道几内亚埃奎勒</displayName>
			</currency>
			<currency type="GRD">
				<displayName>希腊德拉克马</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>危地马拉格查尔</displayName>
			</currency>
			<currency type="GWE">
				<displayName>葡萄牙几内亚埃斯库多</displayName>
			</currency>
			<currency type="GWP">
				<displayName>几内亚比绍比索</displayName>
			</currency>
			<currency type="GYD">
				<displayName>圭亚那元</displayName>
			</currency>
			<currency type="HKD">
				<displayName>港元</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>洪都拉斯拉伦皮拉</displayName>
			</currency>
			<currency type="HRD">
				<displayName>克罗地亚第纳尔</displayName>
			</currency>
			<currency type="HRK">
				<displayName>克罗地亚库纳</displayName>
			</currency>
			<currency type="HTG">
				<displayName>海地古德</displayName>
			</currency>
			<currency type="HUF">
				<displayName>匈牙利福林</displayName>
			</currency>
			<currency type="IDR">
				<displayName>印度尼西亚盾</displayName>
			</currency>
			<currency type="IEP">
				<displayName>爱尔兰镑</displayName>
			</currency>
			<currency type="ILP">
				<displayName>以色列镑</displayName>
			</currency>
			<currency type="ILS">
				<displayName>以色列新谢克尔</displayName>
			</currency>
			<currency type="INR">
				<displayName>印度卢比</displayName>
			</currency>
			<currency type="IQD">
				<displayName>伊拉克第纳尔</displayName>
			</currency>
			<currency type="IRR">
				<displayName>伊朗里亚尔</displayName>
			</currency>
			<currency type="ISK">
				<displayName>冰岛克朗</displayName>
			</currency>
			<currency type="ITL">
				<displayName>意大利里拉</displayName>
				<symbol>ITL</symbol>
			</currency>
			<currency type="JMD">
				<displayName>牙买加元</displayName>
			</currency>
			<currency type="JOD">
				<displayName>约旦第纳尔</displayName>
			</currency>
			<currency type="JPY">
				<displayName>日元</displayName>
			</currency>
			<currency type="KES">
				<displayName>肯尼亚先令</displayName>
			</currency>
			<currency type="KGS">
				<displayName>吉尔吉斯斯坦索姆</displayName>
			</currency>
			<currency type="KHR">
				<displayName>柬埔寨瑞尔</displayName>
			</currency>
			<currency type="KMF">
				<displayName>科摩罗法郎</displayName>
			</currency>
			<currency type="KPW">
				<displayName>朝鲜圆</displayName>
			</currency>
			<currency type="KRW">
				<displayName>韩圆</displayName>
				<symbol>₩</symbol>
			</currency>
			<currency type="KWD">
				<displayName>科威特第纳尔</displayName>
			</currency>
			<currency type="KYD">
				<displayName>开曼元</displayName>
			</currency>
			<currency type="KZT">
				<displayName>哈萨克斯坦坚戈</displayName>
			</currency>
			<currency type="LAK">
				<displayName>老挝基普</displayName>
			</currency>
			<currency type="LBP">
				<displayName>黎巴嫩镑</displayName>
			</currency>
			<currency type="LKR">
				<displayName>斯里兰卡卢比</displayName>
			</currency>
			<currency type="LRD">
				<displayName>利比亚元</displayName>
			</currency>
			<currency type="LSL">
				<displayName>莱索托洛蒂</displayName>
			</currency>
			<currency type="LSM">
				<displayName>马洛蒂</displayName>
			</currency>
			<currency type="LTL">
				<displayName>立陶宛立特</displayName>
			</currency>
			<currency type="LTT">
				<displayName>立陶宛塔咯呐司</displayName>
			</currency>
			<currency type="LUC">
				<displayName>卢森堡可兑换法郎</displayName>
			</currency>
			<currency type="LUF">
				<displayName>卢森堡法郎</displayName>
			</currency>
			<currency type="LUL">
				<displayName>卢森堡金融法郎</displayName>
			</currency>
			<currency type="LVL">
				<displayName>拉脱维亚拉特</displayName>
			</currency>
			<currency type="LVR">
				<displayName>拉脱维亚卢布</displayName>
			</currency>
			<currency type="LYD">
				<displayName>利比亚第纳尔</displayName>
			</currency>
			<currency type="MAD">
				<displayName>摩洛哥迪拉姆</displayName>
			</currency>
			<currency type="MAF">
				<displayName>摩洛哥法郎</displayName>
			</currency>
			<currency type="MDL">
				<displayName>摩尔多瓦列伊</displayName>
			</currency>
			<currency type="MGA">
				<displayName>马达加斯加阿里亚里</displayName>
			</currency>
			<currency type="MGF">
				<displayName>马达加斯加法郎</displayName>
			</currency>
			<currency type="MKD">
				<displayName>马其顿戴代纳尔</displayName>
			</currency>
			<currency type="MLF">
				<displayName>马里法郎</displayName>
			</currency>
			<currency type="MMK">
				<displayName>缅甸开亚特</displayName>
			</currency>
			<currency type="MNT">
				<displayName>蒙古图格里克</displayName>
			</currency>
			<currency type="MOP">
				<displayName>澳门元</displayName>
				<symbol>P</symbol>
			</currency>
			<currency type="MRO">
				<displayName>毛里塔尼亚乌吉亚</displayName>
			</currency>
			<currency type="MTL">
				<displayName>马耳他里拉</displayName>
			</currency>
			<currency type="MTP">
				<displayName>马耳他镑</displayName>
			</currency>
			<currency type="MUR">
				<displayName>毛里求斯卢比</displayName>
			</currency>
			<currency type="MVR">
				<displayName>马尔代夫拉菲亚</displayName>
			</currency>
			<currency type="MWK">
				<displayName>马拉维克瓦查</displayName>
			</currency>
			<currency type="MXN">
				<displayName>墨西哥比索</displayName>
			</currency>
			<currency type="MXP">
				<displayName>墨西哥银比索 (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>墨西哥 Unidad de Inversion (UDI)(资金)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>马来西亚林吉特</displayName>
			</currency>
			<currency type="MZE">
				<displayName>莫桑比克埃斯库多</displayName>
			</currency>
			<currency type="MZM">
				<displayName>莫桑比克梅蒂卡尔</displayName>
			</currency>
			<currency type="MZN">
				<displayName>莫桑比克美提卡</displayName>
			</currency>
			<currency type="NAD">
				<displayName>纳米比亚元</displayName>
			</currency>
			<currency type="NGN">
				<displayName>尼日利亚奈拉</displayName>
			</currency>
			<currency type="NIC">
				<displayName>尼加拉瓜科多巴</displayName>
			</currency>
			<currency type="NIO">
				<displayName>尼加拉瓜金科多巴</displayName>
			</currency>
			<currency type="NLG">
				<displayName>荷兰盾</displayName>
			</currency>
			<currency type="NOK">
				<displayName>挪威克朗</displayName>
			</currency>
			<currency type="NPR">
				<displayName>尼泊尔卢比</displayName>
			</currency>
			<currency type="NZD">
				<displayName>新西兰元</displayName>
			</currency>
			<currency type="OMR">
				<displayName>阿曼里亚尔</displayName>
			</currency>
			<currency type="PAB">
				<displayName>巴拿马巴波亚</displayName>
			</currency>
			<currency type="PEI">
				<displayName>秘鲁印锑</displayName>
			</currency>
			<currency type="PEN">
				<displayName>秘鲁新索尔</displayName>
			</currency>
			<currency type="PES">
				<displayName>秘鲁索尔</displayName>
			</currency>
			<currency type="PGK">
				<displayName>巴布亚新几内亚基那</displayName>
			</currency>
			<currency type="PHP">
				<displayName>菲律宾比索</displayName>
			</currency>
			<currency type="PKR">
				<displayName>巴基斯坦卢比</displayName>
			</currency>
			<currency type="PLN">
				<displayName>波兰兹罗提</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>波兰兹罗提 (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>葡萄牙埃斯库多</displayName>
			</currency>
			<currency type="PYG">
				<displayName>巴拉圭瓜拉尼</displayName>
			</currency>
			<currency type="QAR">
				<displayName>卡塔尔里亚尔</displayName>
			</currency>
			<currency type="RHD">
				<displayName>罗得西亚元</displayName>
			</currency>
			<currency type="ROL">
				<displayName>旧罗马尼亚列伊</displayName>
			</currency>
			<currency type="RON">
				<displayName>罗马尼亚列伊</displayName>
			</currency>
			<currency type="RSD">
				<displayName>塞尔维亚第纳尔</displayName>
			</currency>
			<currency type="RUB">
				<displayName>俄国卢布</displayName>
			</currency>
			<currency type="RUR">
				<displayName>俄国卢布 (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>卢旺达法郎</displayName>
			</currency>
			<currency type="SAR">
				<displayName>沙特里亚尔</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>所罗门群岛元</displayName>
			</currency>
			<currency type="SCR">
				<displayName>塞舌尔卢比</displayName>
			</currency>
			<currency type="SDD">
				<displayName>苏丹第纳尔</displayName>
			</currency>
			<currency type="SDG">
				<displayName>苏丹镑</displayName>
			</currency>
			<currency type="SDP">
				<displayName>旧苏丹镑</displayName>
			</currency>
			<currency type="SEK">
				<displayName>瑞典克朗</displayName>
			</currency>
			<currency type="SGD">
				<displayName>新加坡元</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>圣赫勒拿镑</displayName>
			</currency>
			<currency type="SIT">
				<displayName>斯洛文尼亚托拉尔</displayName>
			</currency>
			<currency type="SKK">
				<displayName>斯洛伐克克朗</displayName>
			</currency>
			<currency type="SLL">
				<displayName>塞拉利昂利昂</displayName>
			</currency>
			<currency type="SOS">
				<displayName>索马里先令</displayName>
			</currency>
			<currency type="SRD">
				<displayName>苏里南元</displayName>
			</currency>
			<currency type="SRG">
				<displayName>苏里南盾</displayName>
			</currency>
			<currency type="STD">
				<displayName>圣多美和普林西比多布拉</displayName>
			</currency>
			<currency type="SUR">
				<displayName>苏联卢布</displayName>
			</currency>
			<currency type="SVC">
				<displayName>萨尔瓦多科朗</displayName>
			</currency>
			<currency type="SYP">
				<displayName>叙利亚镑</displayName>
			</currency>
			<currency type="SZL">
				<displayName>斯威士兰里兰吉尼</displayName>
			</currency>
			<currency type="THB">
				<displayName>泰铢</displayName>
			</currency>
			<currency type="TJR">
				<displayName>塔吉克斯坦卢布</displayName>
			</currency>
			<currency type="TJS">
				<displayName>塔吉克斯坦索莫尼</displayName>
			</currency>
			<currency type="TMM">
				<displayName>土库曼斯坦马纳特</displayName>
			</currency>
			<currency type="TND">
				<displayName>突尼斯第纳尔</displayName>
			</currency>
			<currency type="TOP">
				<displayName>汤加潘加</displayName>
			</currency>
			<currency type="TPE">
				<displayName>帝汶埃斯库多</displayName>
			</currency>
			<currency type="TRL">
				<displayName>土耳其里拉</displayName>
			</currency>
			<currency type="TRY">
				<displayName>新土耳其里拉</displayName>
			</currency>
			<currency type="TTD">
				<displayName>特立尼达和多巴哥元</displayName>
			</currency>
			<currency type="TWD">
				<displayName>新台币元</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>坦桑尼亚先令</displayName>
			</currency>
			<currency type="UAH">
				<displayName>乌克兰格里夫尼亚</displayName>
			</currency>
			<currency type="UAK">
				<displayName>乌克兰币</displayName>
			</currency>
			<currency type="UGS">
				<displayName>乌干达先令 (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>乌干达先令</displayName>
			</currency>
			<currency type="USD">
				<displayName>美元</displayName>
			</currency>
			<currency type="USN">
				<displayName>美元(次日)</displayName>
			</currency>
			<currency type="USS">
				<displayName>美元(当日)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>乌拉圭新比索 (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>乌拉圭比索</displayName>
			</currency>
			<currency type="UZS">
				<displayName>乌兹别克斯苏姆</displayName>
			</currency>
			<currency type="VEB">
				<displayName>委内瑞拉博利瓦</displayName>
			</currency>
			<currency type="VEF">
				<displayName>Venezuelan Bolivar Fuerte</displayName>
			</currency>
			<currency type="VND">
				<displayName>越南盾</displayName>
			</currency>
			<currency type="VUV">
				<displayName>瓦努阿图瓦图</displayName>
			</currency>
			<currency type="WST">
				<displayName>西萨摩亚塔拉</displayName>
			</currency>
			<currency type="XAF">
				<displayName>中非金融合作法郎</displayName>
			</currency>
			<currency type="XAG">
				<displayName>银</displayName>
			</currency>
			<currency type="XAU">
				<displayName>黄金</displayName>
			</currency>
			<currency type="XBA">
				<displayName>欧洲复合单位</displayName>
			</currency>
			<currency type="XBB">
				<displayName>欧洲货币联盟</displayName>
			</currency>
			<currency type="XBC">
				<displayName>欧洲计算单位 (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>欧洲计算单位 (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>东加勒比元</displayName>
			</currency>
			<currency type="XDR">
				<displayName>特别提款权</displayName>
			</currency>
			<currency type="XEU">
				<displayName>欧洲货币单位</displayName>
			</currency>
			<currency type="XFO">
				<displayName>法国金法郎</displayName>
			</currency>
			<currency type="XFU">
				<displayName>法国 UIC 法郎</displayName>
			</currency>
			<currency type="XOF">
				<displayName>非洲金融共同体法郎</displayName>
			</currency>
			<currency type="XPD">
				<displayName>钯</displayName>
			</currency>
			<currency type="XPF">
				<displayName>太平洋法郎</displayName>
			</currency>
			<currency type="XPT">
				<displayName>铂</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET 基金</displayName>
			</currency>
			<currency type="XTS">
				<displayName>为测试保留的代码</displayName>
			</currency>
			<currency type="XXX">
				<displayName>货币未知或无效</displayName>
			</currency>
			<currency type="YDD">
				<displayName>也门第纳尔</displayName>
			</currency>
			<currency type="YER">
				<displayName>也门里亚尔</displayName>
			</currency>
			<currency type="YUD">
				<displayName>南斯拉夫硬第纳尔</displayName>
			</currency>
			<currency type="YUM">
				<displayName>南斯拉夫偌威第纳尔</displayName>
			</currency>
			<currency type="YUN">
				<displayName>南斯拉夫可兑换第纳尔</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>南非兰特 (金融)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>南非兰特</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>赞比亚克瓦查</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>新扎伊尔</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>扎伊尔</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>津巴布韦元</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0}日</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0}时</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0}分</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0}月</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0}秒</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0}周</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0}年</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>是:确定</yesstr>
			<nostr>否:否定</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�v.�##Locale/Data/kl_GL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kl"/>
		<territory type="GL"/>
	</identity>
</ldml>
PKpG[Xj�3NNLocale/Data/ug_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ug"/>
		<territory type="CN"/>
	</identity>
	<alias source="ug_Arab_CN" path="//ldml"/>
</ldml>
PKpG[A�-;;Locale/Data/sr_Latn_BA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.27 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Latn"/>
		<territory type="BA"/>
	</identity>
</ldml>
PKpG[���U��Locale/Data/it_CH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="it"/>
		<territory type="CH"/>
	</identity>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>‹</alternateQuotationStart>
		<alternateQuotationEnd>›</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm:ss 'h' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>'</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[�d'��Locale/Data/ar_LY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="LY"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[S�$��Locale/Data/so_DJ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="so"/>
		<territory type="DJ"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="DJF">
				<symbol>$</symbol>
			</currency>
			<currency type="SOS">
				<symbol>SOS</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[P��ppLocale/Data/dv.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.43 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="dv"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="dv">ދިވެހިބަސް</language>
		</languages>
		<territories>
			<territory type="MV">ދިވެހި ރާއްޖެ</territory>
		</territories>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ހ-ޗ ަ-ް]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ޙ ޚ ޜ ޢ ޣ ޥ ޛ ޘ ޠ ޡ ޤ ޝ-ޟ ޱ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>hh:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>hh:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>hh:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<list>،</list>
			<nativeZeroDigit>٠</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="MVR">
				<symbol>ރ.</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[⾏��Locale/Data/en_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.58 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="en"/>
		<territory type="ZA"/>
	</identity>
	<characters>
		<exemplarCharacters type="auxiliary">[á à ă â å ä ā æ ç ḓ é è ĕ ê ë ē í ì ĭ î ï ī ḽ ñ ṅ ṋ ó ò ŏ ô ö ø ō œ š ß ṱ ú ù ŭ û ü ū ÿ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E MM/dd - E MM/dd</greatestDifference>
							<greatestDifference id="d">E MM/dd - E MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd - MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd - MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy/MM - yyyy/MM</greatestDifference>
							<greatestDifference id="y">yyyy/MM - yyyy/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E yyyy/MM/dd - E yyyy/MM/dd</greatestDifference>
							<greatestDifference id="d">E yyyy/MM/dd - E yyyy/MM/dd</greatestDifference>
							<greatestDifference id="y">E yyyy/MM/dd - E yyyy/MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E dd MMM yyyy - E dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy/MM/dd - yyyy/MM/dd</greatestDifference>
							<greatestDifference id="d">yyyy/MM/dd - yyyy/MM/dd</greatestDifference>
							<greatestDifference id="y">yyyy/MM/dd - yyyy/MM/dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Africa_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[3:�HHLocale/Data/iw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.14 $"/>
        <generation date="$Date: 2008/06/02 20:30:10 $"/>
        <language type="iw"/>
    </identity>
    <alias source="he" path="//ldml"/>
</ldml>PKpG[2���""Locale/Data/ku_Arab.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.17 $"/>
		<generation date="$Date: 2008/06/12 23:34:43 $"/>
		<language type="ku"/>
		<script type="Arab"/>
	</identity>
</ldml>
PKpG[��:##Locale/Data/as_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="as"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[q���Locale/Data/es_PR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="PR"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MM/dd/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>MM/dd/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E MM/dd - E MM/dd</greatestDifference>
							<greatestDifference id="d">E MM/dd - E MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd - MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd - MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E MM/dd/yy - E MM/dd/yy</greatestDifference>
							<greatestDifference id="d">E MM/dd/yy - E MM/dd/yy</greatestDifference>
							<greatestDifference id="y">E MM/dd/yy - E MM/dd/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="d">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="y">MM/dd/yy - MM/dd/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencies>
			<currency type="USD">
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�!5##Locale/Data/uk_UA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uk"/>
		<territory type="UA"/>
	</identity>
</ldml>
PKpG[WWj(`(`Locale/Data/sr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.99 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="sr"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Африканерски</language>
			<language type="akk">Акадијски</language>
			<language type="am">Амхарски</language>
			<language type="ang">Староенглески</language>
			<language type="apa">Апачки језик</language>
			<language type="ar">Арапски</language>
			<language type="as">Асемијски</language>
			<language type="aus">Аустралијски језик</language>
			<language type="av">Аварски</language>
			<language type="az">Азербејџански</language>
			<language type="bat">Балтички језик</language>
			<language type="be">Белоруски</language>
			<language type="bg">Бугарски</language>
			<language type="bh">Бихарски</language>
			<language type="bn">Бенгласки</language>
			<language type="bnt">Банту</language>
			<language type="bo">Тибетански</language>
			<language type="br">Бретонски</language>
			<language type="bs">Босански</language>
			<language type="ca">Каталонски</language>
			<language type="cai">Централно амерички Индијански језик</language>
			<language type="ce">Чеченски</language>
			<language type="cel">Келтски</language>
			<language type="chr">Чероки</language>
			<language type="co">Корзикански</language>
			<language type="cop">Коптски</language>
			<language type="cs">Чешки</language>
			<language type="cu">Старословенски</language>
			<language type="cy">Велшки</language>
			<language type="da">Дански</language>
			<language type="dak">Дакота</language>
			<language type="de">Немачки</language>
			<language type="del">Делавер</language>
			<language type="egy">Староегипатски</language>
			<language type="el">Грчки</language>
			<language type="en">Енглески</language>
			<language type="en_US">Енглески (САД)</language>
			<language type="eo">Есперанто</language>
			<language type="es">Шпански</language>
			<language type="es_419">Шпански (Јужна Америка и Кариби)</language>
			<language type="et">Естонски</language>
			<language type="eu">Баскијски</language>
			<language type="fa">Персијски</language>
			<language type="fi">Фински</language>
			<language type="fil">Тагалог</language>
			<language type="fiu">Угро-фински</language>
			<language type="fo">Фарски</language>
			<language type="fr">Француски</language>
			<language type="fro">Старофранцуски</language>
			<language type="fy">Фризијски</language>
			<language type="ga">Ирски</language>
			<language type="gd">Шкотски Галски</language>
			<language type="gem">Германски језик</language>
			<language type="gl">Галски</language>
			<language type="gn">Гварани</language>
			<language type="goh">Старонемачки</language>
			<language type="got">Готски</language>
			<language type="grc">Старогрчки</language>
			<language type="gsw">Немачки (Швајцарска)</language>
			<language type="gu">Гуџарати</language>
			<language type="haw">Хавајски</language>
			<language type="he">Хебрејски</language>
			<language type="hi">Хинди</language>
			<language type="hr">Хрватски</language>
			<language type="ht">Хаитски</language>
			<language type="hu">Мађарски</language>
			<language type="hy">Јерменски</language>
			<language type="ia">Интерлингва</language>
			<language type="id">Индонежански</language>
			<language type="ie">Међујезички</language>
			<language type="ine">Индо-европски језик</language>
			<language type="ira">Ирански језик</language>
			<language type="is">Исландски</language>
			<language type="it">Италијански</language>
			<language type="ja">Јапански</language>
			<language type="jpr">Јудео-персијски</language>
			<language type="jrb">Јудео-арапски</language>
			<language type="jv">Јавански</language>
			<language type="ka">Грузијски</language>
			<language type="kk">Козачки</language>
			<language type="km">Кмерски</language>
			<language type="kn">Канада</language>
			<language type="ko">Корејски</language>
			<language type="ku">Курдски</language>
			<language type="ky">Киргиски</language>
			<language type="la">Латински</language>
			<language type="lb">Луксембуршки</language>
			<language type="ln">Лингала</language>
			<language type="lo">Лаоски</language>
			<language type="lt">Литвански</language>
			<language type="lv">Летонски</language>
			<language type="mas">Масаи</language>
			<language type="mi">Маорски</language>
			<language type="mk">Македонски</language>
			<language type="ml">Малајалам</language>
			<language type="mn">Монголски</language>
			<language type="mo">Молдавски</language>
			<language type="mr">Марати</language>
			<language type="ms">Малајски</language>
			<language type="mt">Мелтешки</language>
			<language type="my">Бурмански</language>
			<language type="nai">Језик северноамеричких Индијанаца</language>
			<language type="ne">Непалски</language>
			<language type="nl">Холандски</language>
			<language type="nl_BE">Фламански</language>
			<language type="no">Норвешки</language>
			<language type="nv">Навахо</language>
			<language type="oc">Провансалски</language>
			<language type="or">Оријски</language>
			<language type="pa">Панџабски</language>
			<language type="peo">Староперсијски</language>
			<language type="phi">Филипински језик</language>
			<language type="pl">Пољски</language>
			<language type="pro">Старопровансалски</language>
			<language type="ps">Паштунски</language>
			<language type="pt">Португалски</language>
			<language type="pt_PT">Португалски (Португалија)</language>
			<language type="rm">Рето-Романски</language>
			<language type="ro">Румунски</language>
			<language type="ru">Руски</language>
			<language type="sa">Санскрит</language>
			<language type="sai">Језик јужноамеричких Индијанаца</language>
			<language type="sc">Сардињаски</language>
			<language type="scn">Сицилијански</language>
			<language type="sd">Синди</language>
			<language type="sga">Староирски</language>
			<language type="sgn">Знаковни језик</language>
			<language type="sh">Српскохрватски</language>
			<language type="si">Сингалески</language>
			<language type="sk">Словачки</language>
			<language type="sl">Словеначки</language>
			<language type="sla">Словенски језик</language>
			<language type="so">Сомалски</language>
			<language type="sq">Албански</language>
			<language type="sr">Српски</language>
			<language type="st">Сесото</language>
			<language type="su">Судански</language>
			<language type="sux">Сумерски</language>
			<language type="sv">Шведски</language>
			<language type="sw">Свахили</language>
			<language type="ta">Тамилски</language>
			<language type="te">Телугу</language>
			<language type="th">Тајландски</language>
			<language type="ti">Тигриња</language>
			<language type="tk">Туркменски</language>
			<language type="tl">Тагалски</language>
			<language type="tlh">Клингонски</language>
			<language type="tr">Турски</language>
			<language type="tt">Татарски</language>
			<language type="tw">Тви</language>
			<language type="ty">Тахићански</language>
			<language type="ug">Ујгурски</language>
			<language type="uk">Украјински</language>
			<language type="und">Непознат или неважећи језик</language>
			<language type="ur">Урду</language>
			<language type="uz">Узбечки</language>
			<language type="vi">Вијетнамски</language>
			<language type="xh">Хауса</language>
			<language type="yi">Јидиш</language>
			<language type="zh">Кинески</language>
			<language type="zh_Hans">Кинески (поједностављен)</language>
			<language type="zh_Hant">Кинески (традиционални)</language>
			<language type="zu">Зулу</language>
			<language type="zxx">Без лингвистичког садржаја</language>
		</languages>
		<scripts>
			<script type="Arab">арапско писмо</script>
			<script type="Armn">јерменско писмо</script>
			<script type="Beng">бенгалско писмо</script>
			<script type="Brah">браманско писмо</script>
			<script type="Brai">Брајево писмо</script>
			<script type="Cher">Чероки</script>
			<script type="Copt">коптичко писмо</script>
			<script type="Cyrl">Ћирилица</script>
			<script type="Cyrs">Старословенска црквена ћирилица</script>
			<script type="Deva">Деванагари</script>
			<script type="Dsrt">Дезерет</script>
			<script type="Egyp">египатски хијероглифи</script>
			<script type="Ethi">етиопско писмо</script>
			<script type="Geor">грузијско писмо</script>
			<script type="Glag">глагољица</script>
			<script type="Goth">Готика</script>
			<script type="Grek">грчко писмо</script>
			<script type="Hans">поједностављено кинеско писмо</script>
			<script type="Hant">традиционално кинеско писмо</script>
			<script type="Hebr">хебрејско писмо</script>
			<script type="Hira">Хирагана</script>
			<script type="Hrkt">Катакана или Хирагана</script>
			<script type="Hung">старомађарско писмо</script>
			<script type="Kana">Катакана</script>
			<script type="Khmr">кмерско писмо</script>
			<script type="Kore">корејско писмо</script>
			<script type="Latf">латиница (фрактур варијанта)</script>
			<script type="Latg">галска латиница</script>
			<script type="Latn">Латиница</script>
			<script type="Mong">монголско писмо</script>
			<script type="Phnx">Феничанско писмо</script>
			<script type="Runr">рунско писмо</script>
			<script type="Syrj">западносиријско писмо</script>
			<script type="Tglg">Тагалог</script>
			<script type="Thai">тајландско писмо</script>
			<script type="Xpeo">староперсијско писмо</script>
			<script type="Zxxx">Неписани језик</script>
			<script type="Zzzz">Непознато или неважеће писмо</script>
		</scripts>
		<territories>
			<territory type="001">Свет</territory>
			<territory type="002">Африка</territory>
			<territory type="003">Северноамерички континент</territory>
			<territory type="005">Јужна Америка</territory>
			<territory type="009">Океанија</territory>
			<territory type="011">Западна Африка</territory>
			<territory type="013">Централна Америка</territory>
			<territory type="014">Источна Африка</territory>
			<territory type="015">Северна Африка</territory>
			<territory type="017">Централна Африка</territory>
			<territory type="018">Јужна Африка</territory>
			<territory type="019">Америке</territory>
			<territory type="021">Северна Америка</territory>
			<territory type="029">Кариби</territory>
			<territory type="030">Источна Азија</territory>
			<territory type="034">Јужна Азија</territory>
			<territory type="035">Југоисточна Азија</territory>
			<territory type="039">Јужна Европа</territory>
			<territory type="053">Аустралија и Нови Зеланд</territory>
			<territory type="054">Меланезија</territory>
			<territory type="057">Микронезијски регион</territory>
			<territory type="061">Полинезија</territory>
			<territory type="062">Јужно-централна Азија</territory>
			<territory type="142">Азија</territory>
			<territory type="143">Централна Азија</territory>
			<territory type="145">Западна Азија</territory>
			<territory type="150">Европа</territory>
			<territory type="151">Источна Европа</territory>
			<territory type="154">Северна Европа</territory>
			<territory type="155">Западна Европа</territory>
			<territory type="419">Латинска Америка и Кариби</territory>
			<territory type="830">Каналска острва</territory>
			<territory type="AD">Андора</territory>
			<territory type="AE">Уједињени Арапски Емирати</territory>
			<territory type="AF">Авганистан</territory>
			<territory type="AG">Антигве и Барбуда</territory>
			<territory type="AI">Ангвила</territory>
			<territory type="AL">Албанија</territory>
			<territory type="AM">Арменија</territory>
			<territory type="AN">Холандски Антили</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктик</territory>
			<territory type="AR">Аргентина</territory>
			<territory type="AS">Америчка Самоа</territory>
			<territory type="AT">Аустрија</territory>
			<territory type="AU">Аустралија</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AX">Аландска острва</territory>
			<territory type="AZ">Азербејџан</territory>
			<territory type="BA">Босна и Херцеговина</territory>
			<territory type="BB">Барбадос</territory>
			<territory type="BD">Бангладеш</territory>
			<territory type="BE">Белгија</territory>
			<territory type="BF">Буркина Фасо</territory>
			<territory type="BG">Бугарска</territory>
			<territory type="BH">Бахреин</territory>
			<territory type="BI">Бурунди</territory>
			<territory type="BJ">Бенин</territory>
			<territory type="BM">Бермуда</territory>
			<territory type="BN">Брунеј</territory>
			<territory type="BO">Боливија</territory>
			<territory type="BR">Бразил</territory>
			<territory type="BS">Бахами</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Буве Острва</territory>
			<territory type="BW">Боцвана</territory>
			<territory type="BY">Белорусија</territory>
			<territory type="BZ">Белизе</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Кокос (Келинг) Острва</territory>
			<territory type="CD">Демократска република Конго</territory>
			<territory type="CF">Централно Афричка Република</territory>
			<territory type="CG">Конго</territory>
			<territory type="CH">Швајцарска</territory>
			<territory type="CI">Обала Слоноваче</territory>
			<territory type="CK">Кукова Острва</territory>
			<territory type="CL">Чиле</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Кина</territory>
			<territory type="CO">Колумбија</territory>
			<territory type="CR">Костарика</territory>
			<territory type="CS">Србија и Црна Гора</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Капе Верде</territory>
			<territory type="CX">Божићна острва</territory>
			<territory type="CY">Кипар</territory>
			<territory type="CZ">Чешка</territory>
			<territory type="DE">Немачка</territory>
			<territory type="DJ">Џибути</territory>
			<territory type="DK">Данска</territory>
			<territory type="DM">Доминика</territory>
			<territory type="DO">Доминиканска Република</territory>
			<territory type="DZ">Алжир</territory>
			<territory type="EC">Еквадор</territory>
			<territory type="EE">Естонија</territory>
			<territory type="EG">Египат</territory>
			<territory type="EH">Западна Сахара</territory>
			<territory type="ER">Еритреја</territory>
			<territory type="ES">Шпанија</territory>
			<territory type="ET">Етиопија</territory>
			<territory type="FI">Финска</territory>
			<territory type="FJ">Фиџи</territory>
			<territory type="FK">Фолкландска Острва</territory>
			<territory type="FM">Микронезија</territory>
			<territory type="FO">Фарска Острва</territory>
			<territory type="FR">Француска</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Велика Британија</territory>
			<territory type="GD">Гренада</territory>
			<territory type="GE">Грузија</territory>
			<territory type="GF">Француска Гвајана</territory>
			<territory type="GG">Гурнси</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гибралтар</territory>
			<territory type="GL">Гренланд</territory>
			<territory type="GM">Гамбија</territory>
			<territory type="GN">Гвинеја</territory>
			<territory type="GP">Гваделупе</territory>
			<territory type="GQ">Екваторијална Гвинеја</territory>
			<territory type="GR">Грчка</territory>
			<territory type="GS">Јужна Џорџија и Јужна Сендвич Острва</territory>
			<territory type="GT">Гватемала</territory>
			<territory type="GU">Гуам</territory>
			<territory type="GW">Гвинеја-Бисао</territory>
			<territory type="GY">Гвајана</territory>
			<territory type="HK">Хонг Конг</territory>
			<territory type="HM">Херд и Мекдоналд Острва</territory>
			<territory type="HN">Хондурас</territory>
			<territory type="HR">Хрватска</territory>
			<territory type="HT">Хаити</territory>
			<territory type="HU">Мађарска</territory>
			<territory type="ID">Индонезија</territory>
			<territory type="IE">Ирска</territory>
			<territory type="IL">Израел</territory>
			<territory type="IM">Острво Ман</territory>
			<territory type="IN">Индија</territory>
			<territory type="IO">Британско Индијска океанска територија</territory>
			<territory type="IQ">Ирак</territory>
			<territory type="IR">Иран</territory>
			<territory type="IS">Исланд</territory>
			<territory type="IT">Италија</territory>
			<territory type="JE">Џерси</territory>
			<territory type="JM">Јамајка</territory>
			<territory type="JO">Јордан</territory>
			<territory type="JP">Јапан</territory>
			<territory type="KE">Кенија</territory>
			<territory type="KG">Киргизстан</territory>
			<territory type="KH">Камбоџа</territory>
			<territory type="KI">Кирибати</territory>
			<territory type="KM">Коморска Острва</territory>
			<territory type="KN">Сент Китс и Невис</territory>
			<territory type="KP">Северна Кореја</territory>
			<territory type="KR">Јужна Кореја</territory>
			<territory type="KW">Кувајт</territory>
			<territory type="KY">Кајманска Острва</territory>
			<territory type="KZ">Казахстан</territory>
			<territory type="LA">Лаос</territory>
			<territory type="LB">Либан</territory>
			<territory type="LC">Сент Луција</territory>
			<territory type="LI">Лихтенштајн</territory>
			<territory type="LK">Шри Ланка</territory>
			<territory type="LR">Либерија</territory>
			<territory type="LS">Лесото</territory>
			<territory type="LT">Литванија</territory>
			<territory type="LU">Луксембург</territory>
			<territory type="LV">Летонија</territory>
			<territory type="LY">Либија</territory>
			<territory type="MA">Мароко</territory>
			<territory type="MC">Монако</territory>
			<territory type="MD">Молдавија</territory>
			<territory type="ME">Црна Гора</territory>
			<territory type="MF">Сент Мартин</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршалска Острва</territory>
			<territory type="MK">Македонија</territory>
			<territory type="ML">Мали</territory>
			<territory type="MM">Мијанмар</territory>
			<territory type="MN">Монголија</territory>
			<territory type="MO">Макао</territory>
			<territory type="MP">Северна Маријанска Острва</territory>
			<territory type="MQ">Мартиник</territory>
			<territory type="MR">Мауританија</territory>
			<territory type="MS">Монсерат</territory>
			<territory type="MT">Малта</territory>
			<territory type="MU">Маурицијус</territory>
			<territory type="MV">Малдиви</territory>
			<territory type="MW">Малави</territory>
			<territory type="MX">Мексико</territory>
			<territory type="MY">Малезија</territory>
			<territory type="MZ">Мозамбик</territory>
			<territory type="NA">Намибија</territory>
			<territory type="NC">Нова Каледонија</territory>
			<territory type="NE">Нигер</territory>
			<territory type="NF">Норфолк Острво</territory>
			<territory type="NG">Нигерија</territory>
			<territory type="NI">Никарагва</territory>
			<territory type="NL">Холандија</territory>
			<territory type="NO">Норвешка</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Ниуе</territory>
			<territory type="NZ">Нови Зеланд</territory>
			<territory type="OM">Оман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Француска Полинезија</territory>
			<territory type="PG">Папуа Нова Гвинеја</territory>
			<territory type="PH">Филипини</territory>
			<territory type="PK">Пакистан</territory>
			<territory type="PL">Пољска</territory>
			<territory type="PM">Сен Пјер и Микелон</territory>
			<territory type="PN">Питкерн</territory>
			<territory type="PR">Порто Рико</territory>
			<territory type="PS">Палестинска територија</territory>
			<territory type="PT">Португал</territory>
			<territory type="PW">Палау</territory>
			<territory type="PY">Парагвај</territory>
			<territory type="QA">Катар</territory>
			<territory type="QO">Остала океанија</territory>
			<territory type="QU">Европска унија</territory>
			<territory type="RE">Реинион</territory>
			<territory type="RO">Румунија</territory>
			<territory type="RS">Србија</territory>
			<territory type="RU">Русија</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудијска Арабија</territory>
			<territory type="SB">Соломонска Острва</territory>
			<territory type="SC">Сејшели</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Шведска</territory>
			<territory type="SG">Сингапур</territory>
			<territory type="SH">Света Јелена</territory>
			<territory type="SI">Словенија</territory>
			<territory type="SJ">Свалбард и Јанмајен Острва</territory>
			<territory type="SK">Словачка</territory>
			<territory type="SL">Сијера Леоне</territory>
			<territory type="SM">Сан Марино</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Сомалија</territory>
			<territory type="SR">Суринам</territory>
			<territory type="ST">Сао Томе и Принципе</territory>
			<territory type="SV">Салвадор</territory>
			<territory type="SY">Сирија</territory>
			<territory type="SZ">Свазиленд</territory>
			<territory type="TC">Туркс и Кајкос Острва</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Француске Јужне Територије</territory>
			<territory type="TG">Того</territory>
			<territory type="TH">Тајланд</territory>
			<territory type="TJ">Таџикистан</territory>
			<territory type="TK">Токелау</territory>
			<territory type="TL">Тимор-Лесте</territory>
			<territory type="TM">Туркменистан</territory>
			<territory type="TN">Тунис</territory>
			<territory type="TO">Тонга</territory>
			<territory type="TR">Турска</territory>
			<territory type="TT">Тринидад и Тобаго</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тајван</territory>
			<territory type="TZ">Танзанија</territory>
			<territory type="UA">Украјина</territory>
			<territory type="UG">Уганда</territory>
			<territory type="UM">Мања удаљена острва САД</territory>
			<territory type="US">Сједињене Америчке Државе</territory>
			<territory type="UY">Уругвај</territory>
			<territory type="UZ">Узбекистан</territory>
			<territory type="VA">Ватикан</territory>
			<territory type="VC">Сент Винсент и Гренадини</territory>
			<territory type="VE">Венецуела</territory>
			<territory type="VG">Британска Девичанска Острва</territory>
			<territory type="VI">С.А.Д. Девичанска Острва</territory>
			<territory type="VN">Вијетнам</territory>
			<territory type="VU">Вануату</territory>
			<territory type="WF">Валис и Футуна Острва</territory>
			<territory type="WS">Самоа</territory>
			<territory type="YE">Јемен</territory>
			<territory type="YT">Мајоте</territory>
			<territory type="ZA">Јужноафричка Република</territory>
			<territory type="ZM">Замбија</territory>
			<territory type="ZW">Зимбабве</territory>
			<territory type="ZZ">Непозната или неважећа област</territory>
		</territories>
		<variants>
			<variant type="1606NICT">Француски из касног средњег века до 1606.</variant>
			<variant type="SCOTLAND">Шкотски стандардни Енглески</variant>
		</variants>
		<keys>
			<key type="calendar">Календар</key>
			<key type="collation">Сортирање</key>
			<key type="currency">Валута</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Традиционално кинеско сортирање</type>
			<type type="buddhist" key="calendar">Будистички календар</type>
			<type type="chinese" key="calendar">Кинески календар</type>
			<type type="direct" key="collation">Директно сортирање</type>
			<type type="gb2312han" key="collation">Поједностављено кинеско сортирање</type>
			<type type="gregorian" key="calendar">Грегоријански календар</type>
			<type type="hebrew" key="calendar">Хебрејски календар</type>
			<type type="islamic" key="calendar">Исламски календар</type>
			<type type="islamic-civil" key="calendar">Исламски цивилни календар</type>
			<type type="japanese" key="calendar">Јапански календар</type>
			<type type="phonebook" key="collation">Сортирање као телефонски именик</type>
			<type type="pinyin" key="collation">Пињин сортирање</type>
			<type type="stroke" key="collation">Сортирање по броју црта</type>
			<type type="traditional" key="collation">Традиционално сортирање</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">САД</measurementSystemName>
			<measurementSystemName type="metric">Метрички</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">{0}</codePattern>
			<codePattern type="territory">{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а-д ђ е-и ј к л љ м н њ о-т ћ у-ч џ ш]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a á à ă â å ä ā æ b c ç d e é è ĕ ê ë ē f-i í ì ĭ î ï ī j-n ñ o ó ò ŏ ô ö ø ō œ p-s ß t u ú ù ŭ û ü ū v-y ÿ z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">јан</month>
							<month type="2">феб</month>
							<month type="3">мар</month>
							<month type="4">апр</month>
							<month type="5">мај</month>
							<month type="6">јун</month>
							<month type="7">јул</month>
							<month type="8">авг</month>
							<month type="9">сеп</month>
							<month type="10">окт</month>
							<month type="11">нов</month>
							<month type="12">дец</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">јануар</month>
							<month type="2">фебруар</month>
							<month type="3">март</month>
							<month type="4">април</month>
							<month type="5">мај</month>
							<month type="6">јун</month>
							<month type="7">јул</month>
							<month type="8">август</month>
							<month type="9">септембар</month>
							<month type="10">октобар</month>
							<month type="11">новембар</month>
							<month type="12">децембар</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ј</month>
							<month type="2">ф</month>
							<month type="3">м</month>
							<month type="4">а</month>
							<month type="5">м</month>
							<month type="6">ј</month>
							<month type="7">ј</month>
							<month type="8">а</month>
							<month type="9">с</month>
							<month type="10">о</month>
							<month type="11">н</month>
							<month type="12">д</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">нед</day>
							<day type="mon">пон</day>
							<day type="tue">уто</day>
							<day type="wed">сре</day>
							<day type="thu">чет</day>
							<day type="fri">пет</day>
							<day type="sat">суб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">недеља</day>
							<day type="mon">понедељак</day>
							<day type="tue">уторак</day>
							<day type="wed">среда</day>
							<day type="thu">четвртак</day>
							<day type="fri">петак</day>
							<day type="sat">субота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">н</day>
							<day type="mon">п</day>
							<day type="tue">у</day>
							<day type="wed">с</day>
							<day type="thu">ч</day>
							<day type="fri">п</day>
							<day type="sat">с</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">К1</quarter>
							<quarter type="2">К2</quarter>
							<quarter type="3">К3</quarter>
							<quarter type="4">К4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Прво тромесечје</quarter>
							<quarter type="2">Друго тромесечје</quarter>
							<quarter type="3">Треће тромесечје</quarter>
							<quarter type="4">Четврто тромесечје</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>преподне</am>
				<pm>поподне</pm>
				<eras>
					<eraNames>
						<era type="0">Пре нове ере</era>
						<era type="1">Нове ере</era>
					</eraNames>
					<eraAbbr>
						<era type="0">п. н. е.</era>
						<era type="1">н. е</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">п.н.е.</era>
						<era type="1">н.е.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd. MMMM yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd. MMMM yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yy.</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d.</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MMMEd">E d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d.</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d.</dateFormatItem>
						<dateFormatItem id="MMMdd">dd.MMM</dateFormatItem>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy.</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d. M. yyyy.</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d. MMM yyyy.</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">d. MMM yy.</dateFormatItem>
						<dateFormatItem id="yyMMdd">dd.MM.yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy.</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M - E, d.M</greatestDifference>
							<greatestDifference id="d">E, d.M - E, d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M - d.M</greatestDifference>
							<greatestDifference id="d">d.M - d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy M - M</greatestDifference>
							<greatestDifference id="y">yyyy M - M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yy. - E, d.M.yy.</greatestDifference>
							<greatestDifference id="d">E, d.M.yy. - E, d.M.yy.</greatestDifference>
							<greatestDifference id="y">E, d.M.yy. - E, d.M.yy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy.</greatestDifference>
							<greatestDifference id="y">MMM yyyy. - MMM yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="y">E, dd. MMM yyyy. - E, dd. MMM yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="y">dd. MMM yyyy. - dd. MMM yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yy. - d.M.yy.</greatestDifference>
							<greatestDifference id="d">d.M.yy. - d.M.yy.</greatestDifference>
							<greatestDifference id="y">d.M.yy. - d.M.yy.</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ера</displayName>
					</field>
					<field type="year">
						<displayName>година</displayName>
					</field>
					<field type="month">
						<displayName>месец</displayName>
					</field>
					<field type="week">
						<displayName>недеља</displayName>
					</field>
					<field type="day">
						<displayName>дан</displayName>
						<relative type="0">данас</relative>
						<relative type="1">сутра</relative>
						<relative type="2">прекосутра</relative>
						<relative type="3">за три дана</relative>
						<relative type="-1">јуче</relative>
						<relative type="-2">прекјуче</relative>
						<relative type="-3">пре три дана</relative>
					</field>
					<field type="weekday">
						<displayName>дан у недељи</displayName>
					</field>
					<field type="dayperiod">
						<displayName>доба дана</displayName>
					</field>
					<field type="hour">
						<displayName>час</displayName>
					</field>
					<field type="minute">
						<displayName>минут</displayName>
					</field>
					<field type="second">
						<displayName>секунд</displayName>
					</field>
					<field type="zone">
						<displayName>зона</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Непознат или неважећи град</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Андора</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Дубаи</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Кабул</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Антигва</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Ангвила</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Тирана</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Јереван</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Кирасо</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Луанда</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Ротера</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Палмер</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Јужни пол</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Шова</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Мосон</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Дејвис</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Восток</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Касеј</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Димон д’Урвил</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Макмурдо</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>Мендоза</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>Сан Хуан</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Катамарка</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Кордоба</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Буенос Аирес</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Паго Паго</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Беч</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>Перт</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>Иукла</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Дарвин</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Аделајд</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Брокен Хил</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>Курие</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Мелбурн</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>Хобарт</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Сиднеј</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Бризбејн</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Аруба</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Баку</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Барбадос</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Дака</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Брисел</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Уагадугу</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Софија</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Бахреин</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Буџумбура</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Порто Ново</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Бермуди</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Брунеји</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Ла Паз</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Еирунепе</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Рио Бранко</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Порто Вељо</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Боа Виста</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Манаус</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Куиаба</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Кампо Гранде</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Белем</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Арагвајана</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Сао Паоло</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Бахиа</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Форталеза</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Масејо</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Ресифе</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Нороња</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Насау</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Тхимпху</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Габорон</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Минск</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Белизе</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Досон</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>Инувик</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Ванкувер</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Досон Крик</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Едмонтон</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Кембриџ Беј</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>Винипег</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>Корал Харбур</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>Торонто</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Монтреал</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Халифакс</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Гус Беј</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Глејс Беј</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>Бланк-Сејблон</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Св. Џон</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Кокосова острва</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Киншаса</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Лумумбаши</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Бангуи</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Бразавил</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Цирих</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Абиџан</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Раротонга</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Ускршње острво</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Сантијаго</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Дуала</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Кашгар</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Чонгкинг</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Шангај</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>Харбин</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Богота</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Костарика</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Хавана</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Капе Верде</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Божићно острво</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Никозија</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Берлин</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Џибути</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Копенхаген</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Доминика</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Санто Доминго</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Алжир</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Галапагос</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Гвајакил</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Талин</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Каиро</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Ел Ајун</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Асмера</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Канарска острва</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Сеута</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Мадрид</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Адис Абеба</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Хелсинки</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Фиџи</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Стенли</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Трук</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Понапе</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Кошре</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Фарска Острва</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Париз</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Либревил</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Лондон</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Гренада</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Тбилиси</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Кајен</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Акра</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Гибралтар</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Туле</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Нук</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Скорезбисунд</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Данмарксхаген</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Банжул</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Конакри</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Гвадалупе</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Малабо</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Атина</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Јужна Џорџија</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Гватемала</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Гуам</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Бисао</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Гуана</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Хонг Конг</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Порт-о-Пренс</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Будимпешта</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Џакарта</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Макасар</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Џајапура</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Даблин</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Чагос</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Багдад</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Техеран</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Рејкјавик</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Рим</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Јамајка</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Аман</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Токио</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Најроби</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Бишкек</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Пном Пен</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Ендербери</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Киритимати</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Тарава</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Коморо</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Сент Китс</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Пјонгјанг</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Сеул</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Кувајт</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Кајманска острва</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Актау</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Орал</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Акутобе</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Алма-Ата</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Вијетијан</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Бејрут</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Св. Луција</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Вадуц</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Коломбо</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Монровија</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Масеру</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Виљнус</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Луксембург</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Рига</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Триполи</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Казабланка</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Монако</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Кишњев</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Антананариво</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Кваџалејин</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Мајуро</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Бамако</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Рангун</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Ховд</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Улан Батор</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Чојбалсан</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Макау</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Сајпан</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Мартиник</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Навакшут</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Монтсерат</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Малта</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Маурицијус</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Малдиви</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Блантир</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Тихуана</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Хермосиљо</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Мазатлан</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Чихуахуа</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Монтереј</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Мексико Сити</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Мерида</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Канкун</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Куала Лумпур</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Мапуто</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Виндхук</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Нумеа</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Нијамеј</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Норфолк</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Лагос</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Манагва</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Амстердам</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Осло</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Катманду</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Науру</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Ниуе</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Катхам</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Окланд</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Мускат</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Панама</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Лима</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Тахити</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Маркиз</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Гамбије</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Порт Морзби</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Манила</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Карачи</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Варшава</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Микелон</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Питкаирн</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Порто Рико</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Газа</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Азори</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Лисабон</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Палау</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Асунсион</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Катар</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Уједињење</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Букурешт</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Москва</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Волгоград</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Самара</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Јекатеринбург</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Омск</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Новосибирск</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Краснојарск</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Иркуцк</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Јакутск</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Владивосток</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Сахалин</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Магадан</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Камчатка</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Анадир</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Кигали</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Ријад</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Гвадалканал</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Махе</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Картум</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Стокхолм</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Сингапур</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Света Јелена</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Фритаун</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Дакар</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Могадиш</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Парамирбо</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Сао Томе</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Салвадор</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Дамаск</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Мбабане</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Гранд Турк</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Нџамена</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Кергелен</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Ломе</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Банкок</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Душанбе</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Факаофо</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Дили</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ашхабад</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Тунис</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Тонгатапу</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Истанбул</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Порт оф Спејн</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Фанафути</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Тајпеј</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Дар-ес-Салам</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ужгород</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Кијев</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Запорожје</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Кампала</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Мидвеј</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Џонстон</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Ваке</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>Адак</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Хонолулу</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Енкориџ</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Лос Анђелес</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>Бојзи</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Феникс</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>Шипрок</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Денвер</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>Нови Салем, Северна Даткоа</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Центар, Северна Дакота</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Чикаго</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Петерсбург, Индијана</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Тел Сити</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Кнокс, Индијана</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Маренго, Индијана</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Индианаполис</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Луивиле</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Монтичело, Кентаки</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Детроит</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Њујорк</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Монтевидео</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Самарканд</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Ташкент</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Сент Винсент</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Каракас</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Тортола</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Св. Тома</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Ефате</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Валис</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Апија</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Аден</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Мајоте</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Јоханесбург</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Лусака</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Хараре</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Средњеевропско време</standard>
					<daylight>Средњеевропско  летње време</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Источноевропско време</standard>
					<daylight>Источноевропско летње време</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>е</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="few">{0} {1}</unitPattern>
			<unitPattern count="many">{0} {1}</unitPattern>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>Уједињени арапски емирати дирхам</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Албански лек</displayName>
				<displayName count="few">Албанске леке</displayName>
				<displayName count="many">Албанских лека</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Јерменски драм</displayName>
				<displayName count="few">Јерменска драма</displayName>
				<displayName count="many">Јерменских драма</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Аргентински пезо</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Аустријски шилинг</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Аустралијски долар</displayName>
				<displayName count="few">Аустралијска долара</displayName>
				<displayName count="many">Аустралијских долара</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="BAD">
				<displayName>Босанско-Херцеговачки динар</displayName>
				<displayName count="few">Босанско-Херцеговачка динара</displayName>
				<displayName count="many">Босанско-Херцеговачких динара</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Конвертибилна марка</displayName>
				<displayName count="few">Босанско-Херцеговачке конвертибилне марке</displayName>
				<displayName count="many">Босанско-Херцеговачких конвертабилних марака</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BEF">
				<displayName>Белгијски франак</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Бугарски лев</displayName>
				<displayName count="few">Бугарска лева</displayName>
				<displayName count="many">Бугарских лева</displayName>
			</currency>
			<currency type="BND">
				<displayName>Брунејски долар</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Боливијски Боливиано</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Бразилски Реал</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Канадски долар</displayName>
				<displayName count="few">Канадска долара</displayName>
				<displayName count="many">Канадских долара</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CHF">
				<displayName>Швајцарски франак</displayName>
				<displayName count="few">Швајцарска франка</displayName>
				<displayName count="many">Швајцарских франака</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLP">
				<displayName>Чилеански пезо</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Кинески Јуан Ренминби</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Колумбијски пезо</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Српски Динар (Србија и Црна Гора)</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Чешка круна</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Немачка марка</displayName>
				<displayName count="few">Немачке марке</displayName>
				<displayName count="many">Немачких марака</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Данска круна</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="EEK">
				<displayName>Естонска кроон</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Египатска фунта</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Шпанска пезета</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Евро</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Финска марка</displayName>
				<displayName count="few">Финске марке</displayName>
				<displayName count="many">Финских марака</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Фиџи долар</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Француски франак</displayName>
				<displayName count="few">Француска франка</displayName>
				<displayName count="many">Француских франака</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Фунта стерлинга</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Драхма</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Хонг Конгски Долари</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Хрватски динар</displayName>
				<displayName count="few">Хрватска динара</displayName>
				<displayName count="many">Хрватских динара</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Куна</displayName>
				<displayName count="few">Хрватске куне</displayName>
				<displayName count="many">Хрватских куна</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Мађарска форинта</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Индонезијска рупиах</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Ирска фунта</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILS">
				<displayName>Израелски шекел</displayName>
			</currency>
			<currency type="INR">
				<displayName>Индијски Рупи</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="ITL">
				<displayName>Италијанска лира</displayName>
				<displayName count="few">Италијанске лире</displayName>
				<displayName count="many">Италијанских лира</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Јен</displayName>
				<displayName count="few">Јапанска јена</displayName>
				<displayName count="many">Јапанских јена</displayName>
			</currency>
			<currency type="KES">
				<displayName>Кенијски шилинг</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Јужнокорејски Вон</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Кувајтски динар</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Литвански литас</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Луксембуршки франак</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Либијски динар</displayName>
				<displayName count="few">Либијска динара</displayName>
				<displayName count="many">Либијских динара</displayName>
				<displayName count="one">Либијски динар</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Марокански дирхам</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Македонијски денар</displayName>
				<displayName count="few">Македонијска денара</displayName>
				<displayName count="many">Македонијских денара</displayName>
				<displayName count="one">Македонијски денар</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Малтешка лира</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Мексички песо</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Малезијски ринггит</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Холандски гулден</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Норвешка круна</displayName>
				<displayName count="few">Норвешке круне</displayName>
				<displayName count="many">Норвешких круна</displayName>
				<displayName count="one">Норвешка круна</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Новозеландски долар</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Перуански нуево сол</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Филипински песо</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Пакистански рупи</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Португалски ескудо</displayName>
			</currency>
			<currency type="RON">
				<displayName>Румунски леу</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Српски Динар</displayName>
				<displayName count="few">Српска динара</displayName>
				<displayName count="many">Српских динара</displayName>
				<displayName count="one">Српски динар</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Руска рубља</displayName>
				<displayName count="few">Руске рубље</displayName>
				<displayName count="many">Руских рубљи</displayName>
				<displayName count="one">Руска рубља</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Руска рубља (1991-1998)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Шведска круна</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Сингапурски долар</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Толар</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Словачка круна</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Стара Турска Лира</displayName>
				<displayName count="few">Старе турске лире</displayName>
				<displayName count="many">Старих турских лира</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Нова турска лира</displayName>
				<displayName count="few">Турске лире</displayName>
				<displayName count="many">Турских лира</displayName>
				<displayName count="one">Турска лира</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Нови тајвански долар</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Украјинска хривња</displayName>
			</currency>
			<currency type="USD">
				<displayName>Амерички долар</displayName>
				<displayName count="few">Америчка долара</displayName>
				<displayName count="many">Америчких долара</displayName>
				<displayName count="one">Амерички долар</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Венецуелански боливар</displayName>
			</currency>
			<currency type="VND">
				<displayName>Вијетнамски донг</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Непозната или неважећа валута</displayName>
				<displayName count="few">Непознате или неважеће валуте</displayName>
				<displayName count="many">Непознатих или неважећих валута</displayName>
			</currency>
			<currency type="YUN">
				<symbol>Дин</symbol>
			</currency>
			<currency type="ZAR">
				<displayName>Јужно Афрички Ранд</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} дана</unitPattern>
			<unitPattern count="many">{0} дана</unitPattern>
			<unitPattern count="one">{0} дан</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} сата</unitPattern>
			<unitPattern count="many">{0} сати</unitPattern>
			<unitPattern count="one">{0} сат</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} минута</unitPattern>
			<unitPattern count="many">{0} минута</unitPattern>
			<unitPattern count="one">{0} минут</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} месеца</unitPattern>
			<unitPattern count="many">{0} месеци</unitPattern>
			<unitPattern count="one">{0} месец</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} секунде</unitPattern>
			<unitPattern count="many">{0} секунди</unitPattern>
			<unitPattern count="one">{0} секунда</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} недеље</unitPattern>
			<unitPattern count="many">{0} недеља</unitPattern>
			<unitPattern count="one">{0} недеља</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} године</unitPattern>
			<unitPattern count="many">{0} година</unitPattern>
			<unitPattern count="one">{0} година</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>да:д</yesstr>
			<nostr>не:н</nostr>
		</messages>
	</posix>
</ldml>

PKpG[��T�##Locale/Data/wo_SN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wo"/>
		<territory type="SN"/>
	</identity>
</ldml>
PKpG[��##Locale/Data/xh_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="xh"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[m7�IILocale/Data/en_PK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.31 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="en"/>
		<territory type="PK"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, M/d - E, M/d</greatestDifference>
							<greatestDifference id="d">E, M/d - E, M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d - M/d</greatestDifference>
							<greatestDifference id="d">M/d - M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy - M/yy</greatestDifference>
							<greatestDifference id="y">M/yy - M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="d">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="y">E, M/d/yy - E, M/d/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy - E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d - MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d-d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy - MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="y">M/d/yy - M/d/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[��ERLocale/Data/es_DO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="DO"/>
	</identity>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[R6X��Locale/Data/pl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.107 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="pl"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abchaski</language>
			<language type="ace">aceh</language>
			<language type="ach">aczoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adygejski</language>
			<language type="ae">awestyjski</language>
			<language type="af">afrikaans</language>
			<language type="afa">afro-azjatycki</language>
			<language type="afh">afrihili</language>
			<language type="ain">ajnu</language>
			<language type="ak">akan</language>
			<language type="akk">akadyjski</language>
			<language type="ale">aleucki</language>
			<language type="alg">języki algonkin</language>
			<language type="alt">południowoałtajski</language>
			<language type="am">amharski</language>
			<language type="an">aragoński</language>
			<language type="ang">staroangielski</language>
			<language type="anp">angika</language>
			<language type="apa">język Apaczów</language>
			<language type="ar">arabski</language>
			<language type="arc">aramejski</language>
			<language type="arn">araukański</language>
			<language type="arp">arapaho</language>
			<language type="art">sztuczny</language>
			<language type="arw">arawak</language>
			<language type="as">asamski</language>
			<language type="ast">asturyjski</language>
			<language type="ath">język Atapasków</language>
			<language type="aus">język australijski</language>
			<language type="av">awarski</language>
			<language type="awa">awadhi</language>
			<language type="ay">ajmara</language>
			<language type="az">azerski</language>
			<language type="ba">baszkirski</language>
			<language type="bad">język banda</language>
			<language type="bai">język bamileke</language>
			<language type="bal">beludżi</language>
			<language type="ban">balijski</language>
			<language type="bas">basa</language>
			<language type="bat">bałtycki</language>
			<language type="be">białoruski</language>
			<language type="bej">bedża</language>
			<language type="bem">bemba</language>
			<language type="ber">berberski</language>
			<language type="bg">bułgarski</language>
			<language type="bh">biharski</language>
			<language type="bho">bhodźpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalski</language>
			<language type="bnt">bantu</language>
			<language type="bo">tybetański</language>
			<language type="br">bretoński</language>
			<language type="bra">bradź</language>
			<language type="bs">bośniacki</language>
			<language type="btk">batak</language>
			<language type="bua">buriacki</language>
			<language type="bug">bugiński</language>
			<language type="byn">blin</language>
			<language type="ca">kataloński</language>
			<language type="cad">kaddo</language>
			<language type="cai">język Indian środkowoamerykańskich</language>
			<language type="car">karibi</language>
			<language type="cau">kaukaski</language>
			<language type="cch">atsam</language>
			<language type="ce">czeczeński</language>
			<language type="ceb">cebuano</language>
			<language type="cel">celtycki</language>
			<language type="ch">chamorro</language>
			<language type="chb">czibcza</language>
			<language type="chg">czagatajski</language>
			<language type="chk">truk</language>
			<language type="chm">maryjski</language>
			<language type="chn">żargon Chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">czirokezki</language>
			<language type="chy">język Czejenów</language>
			<language type="cmc">czam</language>
			<language type="co">korsykański</language>
			<language type="cop">koptyjski</language>
			<language type="cpe">angielski kreolski lub pidżin</language>
			<language type="cpf">francuski kreolski lub pidżin</language>
			<language type="cpp">portugalski kreolski lub pidżin</language>
			<language type="cr">kri</language>
			<language type="crh">krymski turecki</language>
			<language type="crp">kreolski lub pidżin</language>
			<language type="cs">czeski</language>
			<language type="csb">kaszubski</language>
			<language type="cu">staro-cerkiewno-słowiański</language>
			<language type="cus">kuszycki</language>
			<language type="cv">czuwaski</language>
			<language type="cy">walijski</language>
			<language type="da">duński</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwijski</language>
			<language type="day">dajak</language>
			<language type="de">niemiecki</language>
			<language type="de_AT">austriacki niemiecki</language>
			<language type="de_CH">wysokoniemiecki (Szwajcaria)</language>
			<language type="del">delaware</language>
			<language type="den">slave</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">drawidyjski</language>
			<language type="dsb">dolnołużycki</language>
			<language type="dua">duala</language>
			<language type="dum">średniowieczny niderlandzki</language>
			<language type="dv">malediwski</language>
			<language type="dyu">dyula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">starożytny egipski</language>
			<language type="eka">ekajuk</language>
			<language type="el">grecki</language>
			<language type="elx">elamicki</language>
			<language type="en">angielski</language>
			<language type="en_GB">brytyjski angielski</language>
			<language type="en_US">angielski (USA)</language>
			<language type="enm">średnioangielski</language>
			<language type="eo">esperanto</language>
			<language type="es">hiszpański</language>
			<language type="es_419">hiszpański (Ameryka Łacińska)</language>
			<language type="et">estoński</language>
			<language type="eu">baskijski</language>
			<language type="ewo">ewondo</language>
			<language type="fa">perski</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">fiński</language>
			<language type="fil">filipino</language>
			<language type="fiu">ugrofiński</language>
			<language type="fj">fidżijski</language>
			<language type="fo">farerski</language>
			<language type="fon">fon</language>
			<language type="fr">francuski</language>
			<language type="fr_CA">kanadyjski francuski</language>
			<language type="frm">średniofrancuski</language>
			<language type="fro">starofrancuski</language>
			<language type="frr">północnofryzyjski</language>
			<language type="frs">fryzyjski wschodni</language>
			<language type="fur">friulijski</language>
			<language type="fy">fryzyjski</language>
			<language type="ga">irlandzki</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">szkocki gaelicki</language>
			<language type="gem">germański</language>
			<language type="gez">gyyz</language>
			<language type="gil">gilbertański</language>
			<language type="gl">galisyjski</language>
			<language type="gmh">średnio-wysoko-niemiecki</language>
			<language type="gn">guarani</language>
			<language type="goh">staro-wysoko-niemiecki</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gocki</language>
			<language type="grb">grebo</language>
			<language type="grc">starogrecki</language>
			<language type="gsw">niemiecki szwajcarski</language>
			<language type="gu">gudźaracki</language>
			<language type="gv">manx</language>
			<language type="gwi">Gwichʼin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawajski</language>
			<language type="he">hebrajski</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligajnon</language>
			<language type="him">himachali</language>
			<language type="hit">hetycki</language>
			<language type="hmn">hmongijski</language>
			<language type="ho">hiri motu</language>
			<language type="hr">chorwacki</language>
			<language type="hsb">górnołużycki</language>
			<language type="ht">haitański</language>
			<language type="hu">węgierski</language>
			<language type="hup">hupa</language>
			<language type="hy">ormiański</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">ibanag</language>
			<language type="id">indonezyjski</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">syczuański</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiak</language>
			<language type="ilo">ilokano</language>
			<language type="inc">indoaryjski</language>
			<language type="ine">indoeuropejski</language>
			<language type="inh">inguski</language>
			<language type="io">ido</language>
			<language type="ira">irański</language>
			<language type="iro">irokeski</language>
			<language type="is">islandzki</language>
			<language type="it">włoski</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japoński</language>
			<language type="jbo">lojban</language>
			<language type="jpr">judeoperski</language>
			<language type="jrb">judeoarabski</language>
			<language type="jv">jawajski</language>
			<language type="ka">gruziński</language>
			<language type="kaa">karakałpacki</language>
			<language type="kab">kabylski</language>
			<language type="kac">kaczin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">kareński</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardyjski</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisan</language>
			<language type="kho">chotański</language>
			<language type="ki">kikuju</language>
			<language type="kj">kwanyama</language>
			<language type="kk">kazachski</language>
			<language type="kl">grenlandzki</language>
			<language type="km">khmerski</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">koreański</language>
			<language type="kok">konkani</language>
			<language type="kos">kosrae</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karaczajsko-bałkarski</language>
			<language type="krl">karelski</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kaszmirski</language>
			<language type="ku">kurdyjski</language>
			<language type="kum">kumycki</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">kornijski</language>
			<language type="ky">kirgiski</language>
			<language type="la">łaciński</language>
			<language type="lad">ladyński</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luksemburski</language>
			<language type="lez">lezgijski</language>
			<language type="lg">ganda</language>
			<language type="li">limburgijski</language>
			<language type="ln">lingala</language>
			<language type="lo">laotański</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litewski</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">łotewski</language>
			<language type="mad">madurajski</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandingo</language>
			<language type="map">austronezyjski</language>
			<language type="mas">masajski</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malgaski</language>
			<language type="mga">średnioirlandzki</language>
			<language type="mh">marshall</language>
			<language type="mi">maoryjski</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabu</language>
			<language type="mis">inny język</language>
			<language type="mk">macedoński</language>
			<language type="mkh">mon-khmer</language>
			<language type="ml">malajalam</language>
			<language type="mn">mongolski</language>
			<language type="mnc">manchu</language>
			<language type="mni">manipuryjski</language>
			<language type="mno">manobo</language>
			<language type="mo">mołdawski</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malajski</language>
			<language type="mt">maltański</language>
			<language type="mul">wiele języków</language>
			<language type="mun">mundajski</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandese</language>
			<language type="mwr">marwari</language>
			<language type="my">birmański</language>
			<language type="myn">język Majów</language>
			<language type="myv">erzya</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">język Indian północnoamerykańskich</language>
			<language type="nap">neapolitański</language>
			<language type="nb">norweski Bokmål</language>
			<language type="nd">ndebele północny</language>
			<language type="nds">dolnosaksoński</language>
			<language type="ne">nepalski</language>
			<language type="new">newarski</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">nigrokordofański</language>
			<language type="niu">niue</language>
			<language type="nl">niderlandzki</language>
			<language type="nl_BE">flamandzki (Belgia)</language>
			<language type="nn">norweski Nynorsk</language>
			<language type="no">norweski</language>
			<language type="nog">nogajski</language>
			<language type="non">staronordyjski</language>
			<language type="nqo">n’ko</language>
			<language type="nr">ndebele południowy</language>
			<language type="nso">sotho północny</language>
			<language type="nub">nubijski</language>
			<language type="nv">nawaho</language>
			<language type="nwc">newarski klasyczny</language>
			<language type="ny">njandża</language>
			<language type="nym">niamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzema</language>
			<language type="oc">prowansalski</language>
			<language type="oj">odżibwa</language>
			<language type="om">oromski</language>
			<language type="or">orija</language>
			<language type="os">osetyjski</language>
			<language type="osa">osage</language>
			<language type="ota">osmańsko-turecki</language>
			<language type="oto">otomi</language>
			<language type="pa">pendżabski</language>
			<language type="paa">papuaski</language>
			<language type="pag">pangasino</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampango</language>
			<language type="pap">papiamento</language>
			<language type="pau">palau</language>
			<language type="peo">staroperski</language>
			<language type="phi">filipiński</language>
			<language type="phn">fenicki</language>
			<language type="pi">palijski</language>
			<language type="pl">polski</language>
			<language type="pon">ponpejski</language>
			<language type="pra">prakryty</language>
			<language type="pro">staroprowansalski</language>
			<language type="ps">paszto</language>
			<language type="pt">portugalski</language>
			<language type="qu">keczua</language>
			<language type="raj">radźasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotonga</language>
			<language type="rm">retoromański</language>
			<language type="rn">rundi</language>
			<language type="ro">rumuński</language>
			<language type="roa">romański</language>
			<language type="rom">cygański</language>
			<language type="root">język bazowy</language>
			<language type="ru">rosyjski</language>
			<language type="rup">arumuński</language>
			<language type="rw">kinya-ruanda</language>
			<language type="sa">sanskryt</language>
			<language type="sad">sandawe</language>
			<language type="sah">jakucki</language>
			<language type="sai">język Indian południowoamerykańskich</language>
			<language type="sal">salisz</language>
			<language type="sam">samarytański aramejski</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardyński</language>
			<language type="scn">sycylijski</language>
			<language type="sco">szkocki</language>
			<language type="sd">sindhi</language>
			<language type="se">lapoński północny</language>
			<language type="sel">selkupski</language>
			<language type="sem">semicki</language>
			<language type="sg">sango</language>
			<language type="sga">staroirlandzki</language>
			<language type="sgn">migowy</language>
			<language type="sh">serbsko-chorwacki</language>
			<language type="shn">shan</language>
			<language type="si">syngaleski</language>
			<language type="sid">sidamo</language>
			<language type="sio">siouański</language>
			<language type="sit">chińsko-tybetański</language>
			<language type="sk">słowacki</language>
			<language type="sl">słoweński</language>
			<language type="sla">słowiański</language>
			<language type="sm">samoański</language>
			<language type="sma">lapoński południowy</language>
			<language type="smi">lapoński</language>
			<language type="smj">lapoński Lule</language>
			<language type="smn">lapoński Inari</language>
			<language type="sms">lapoński Skolt</language>
			<language type="sn">szona</language>
			<language type="snk">soninke</language>
			<language type="so">somalijski</language>
			<language type="sog">sogdyjski</language>
			<language type="son">songhaj</language>
			<language type="sq">albański</language>
			<language type="sr">serbski</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">siswati</language>
			<language type="ssa">nilosaharyjski</language>
			<language type="st">sotho południowy</language>
			<language type="su">sundajski</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumeryjski</language>
			<language type="sv">szwedzki</language>
			<language type="sw">suahili</language>
			<language type="syc">syriacki</language>
			<language type="syr">syryjski</language>
			<language type="ta">tamilski</language>
			<language type="tai">tai</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadżycki</language>
			<language type="th">tajski</language>
			<language type="ti">tigrinia</language>
			<language type="tig">tigre</language>
			<language type="tiv">tiw</language>
			<language type="tk">turkmeński</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalski</language>
			<language type="tlh">klingoński</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamaszek</language>
			<language type="tn">setswana</language>
			<language type="to">tonga</language>
			<language type="tog">tonga (Niasa)</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turecki</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatarski</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupi</language>
			<language type="tut">ałtajski</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahitański</language>
			<language type="tyv">tuwiński</language>
			<language type="udm">udmurcki</language>
			<language type="ug">ujgurski</language>
			<language type="uga">ugarycki</language>
			<language type="uk">ukraiński</language>
			<language type="umb">umbundu</language>
			<language type="und">nieznany lub niepoprawny język</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbecki</language>
			<language type="vai">wai</language>
			<language type="ve">venda</language>
			<language type="vi">wietnamski</language>
			<language type="vo">volapuk</language>
			<language type="vot">wotiacki</language>
			<language type="wa">waloński</language>
			<language type="wak">wakasz</language>
			<language type="wal">walamo</language>
			<language type="war">waraj</language>
			<language type="was">washo</language>
			<language type="wen">łużycki</language>
			<language type="wo">wolof</language>
			<language type="xal">kałmucki</language>
			<language type="xh">khosa</language>
			<language type="yao">yao</language>
			<language type="yap">japski</language>
			<language type="yi">jidysz</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupik</language>
			<language type="za">czuang</language>
			<language type="zap">zapotecki</language>
			<language type="zbl">bliss</language>
			<language type="zen">zenaga</language>
			<language type="zh">chiński</language>
			<language type="zh_Hans">chiński (uproszczony)</language>
			<language type="zh_Hant">chiński (tradycyjny)</language>
			<language type="znd">azande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">brak kontekstu lingwistycznego</language>
			<language type="zza">zazaki</language>
		</languages>
		<scripts>
			<script type="Arab">arabskie</script>
			<script type="Armi">armi</script>
			<script type="Armn">ormiańskie</script>
			<script type="Avst">awestyjskie</script>
			<script type="Bali">balijskie</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengalskie</script>
			<script type="Blis">symbole Blissa</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">Braille’a</script>
			<script type="Bugi">bugińskie</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">chakma</script>
			<script type="Cans">Zunifikowane symbole kanadyjskich autochtonów</script>
			<script type="Cari">karyjskie</script>
			<script type="Cham">czamskie</script>
			<script type="Cher">Irokeski</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">koptyjskie</script>
			<script type="Cprt">cypryjskie</script>
			<script type="Cyrl">cyrylica</script>
			<script type="Cyrs">cyrylica staro-cerkiewno-słowiańska</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egipskie demotyczne</script>
			<script type="Egyh">egipskie hieratyczne</script>
			<script type="Egyp">hieroglify egipskie</script>
			<script type="Ethi">etiopskie</script>
			<script type="Geok">gruzińskie chucuri</script>
			<script type="Geor">gruzińskie</script>
			<script type="Glag">głagolica</script>
			<script type="Goth">gotyckie</script>
			<script type="Grek">greckie</script>
			<script type="Gujr">gudźarackie</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangyl</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">Uproszczony Han</script>
			<script type="Hant">Tradycyjny Han</script>
			<script type="Hebr">hebrajskie</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana lub hiragana</script>
			<script type="Hung">starowęgierskie</script>
			<script type="Inds">indus</script>
			<script type="Ital">starowłoskie</script>
			<script type="Java">jawajskie</script>
			<script type="Jpan">japońskie</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">charosti</script>
			<script type="Khmr">khmerskie</script>
			<script type="Knda">kannada</script>
			<script type="Kore">koreańskie</script>
			<script type="Kthi">kaithi</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laotańskie</script>
			<script type="Latf">łaciński - fraktura</script>
			<script type="Latg">łaciński - odmiana gaelicka</script>
			<script type="Latn">łacińskie</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">linearne A</script>
			<script type="Linb">linearne B</script>
			<script type="Lyci">likijskie</script>
			<script type="Lydi">lidyjskie</script>
			<script type="Mand">mandejskie</script>
			<script type="Mani">manichejskie</script>
			<script type="Maya">hieroglify Majów</script>
			<script type="Mero">meroickie</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongolskie</script>
			<script type="Moon">Moon'a</script>
			<script type="Mtei">meitei mayek</script>
			<script type="Mymr">birmańskie</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">ol chiki</script>
			<script type="Orkh">orchońskie</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanya</script>
			<script type="Perm">staropermskie</script>
			<script type="Phag">phags-pa</script>
			<script type="Phli">inskrypcyjne pahlawi</script>
			<script type="Phlp">pahlawi psałterzowy</script>
			<script type="Phlv">pahlawi książkowy</script>
			<script type="Phnx">fenicki</script>
			<script type="Plrd">fonetyczny Pollard'a</script>
			<script type="Prti">partyjski inskrypcyjny</script>
			<script type="Qaai">dziedziczone</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">runiczne</script>
			<script type="Samr">samarytański</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">pismo znakowe</script>
			<script type="Shaw">shawa</script>
			<script type="Sinh">syngaleskie</script>
			<script type="Sund">sundajskie</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">Syryjski</script>
			<script type="Syre">syriacki estrangelo</script>
			<script type="Syrj">Syryjski (odmiana zachodnia)</script>
			<script type="Syrn">Syryjski (odmiana wschodnia)</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">nowy tai lue</script>
			<script type="Taml">tamilskie</script>
			<script type="Tavt">tai viet</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">Tifinagh (berberski)</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">tajskie</script>
			<script type="Tibt">tybetańskie</script>
			<script type="Ugar">ugaryckie</script>
			<script type="Vaii">vai</script>
			<script type="Visp">Visible Speech</script>
			<script type="Xpeo">staroperskie</script>
			<script type="Xsux">klinowe sumero-akadyjskie</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">notacja matematyczna</script>
			<script type="Zsym">Symbols</script>
			<script type="Zxxx">język bez systemu pisma</script>
			<script type="Zyyy">wspólne</script>
			<script type="Zzzz">nieznane lub niepoprawne</script>
		</scripts>
		<territories>
			<territory type="001">Świat</territory>
			<territory type="002">Afryka</territory>
			<territory type="003">Ameryka Północna</territory>
			<territory type="005">Ameryka Południowa</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Afryka Zachodnia</territory>
			<territory type="013">Ameryka Środkowa</territory>
			<territory type="014">Afryka Wschodnia</territory>
			<territory type="015">Afryka Północna</territory>
			<territory type="017">Afryka Środkowa</territory>
			<territory type="018">Afryka Południowa</territory>
			<territory type="019">Ameryka</territory>
			<territory type="021">Ameryka Północna - Kanada, USA</territory>
			<territory type="029">Karaiby</territory>
			<territory type="030">Azja Wschodnia</territory>
			<territory type="034">Azja Południowa</territory>
			<territory type="035">Azja Południowo-Wschodnia</territory>
			<territory type="039">Europa Południowa</territory>
			<territory type="053">Australia i Nowa Zelandia</territory>
			<territory type="054">Melanezja</territory>
			<territory type="057">Region Mikronezji</territory>
			<territory type="061">Polinezja</territory>
			<territory type="062">Azja Południowo-Środkowa</territory>
			<territory type="142">Azja</territory>
			<territory type="143">Azja Środkowa</territory>
			<territory type="145">Azja Zachodnia</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa Wschodnia</territory>
			<territory type="154">Europa Północna</territory>
			<territory type="155">Europa Zachodnia</territory>
			<territory type="172">Wspólnota Niezależnych Państw</territory>
			<territory type="419">Ameryka Łacińska i Karaiby</territory>
			<territory type="830">Wyspy Normandzkie</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Zjednoczone Emiraty Arabskie</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua i Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antyle Holenderskie</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktyka</territory>
			<territory type="AR">Argentyna</territory>
			<territory type="AS">Samoa Amerykańskie</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Wyspy Alandzkie</territory>
			<territory type="AZ">Azerbejdżan</territory>
			<territory type="BA">Bośnia i Hercegowina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesz</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bułgaria</territory>
			<territory type="BH">Bahrajn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermudy</territory>
			<territory type="BN">Brunei Darussalam</territory>
			<territory type="BO">Boliwia</territory>
			<territory type="BR">Brazylia</territory>
			<territory type="BS">Bahamy</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Wyspa Bouveta</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Białoruś</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Wyspy Kokosowe</territory>
			<territory type="CD">Demokratyczna Republika Konga</territory>
			<territory type="CF">Republika Środkowej Afryki</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Szwajcaria</territory>
			<territory type="CI">Wybrzeże Kości Słoniowej</territory>
			<territory type="CK">Wyspy Cooka</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Chiny</territory>
			<territory type="CO">Kolumbia</territory>
			<territory type="CR">Kostaryka</territory>
			<territory type="CS">Serbia i Czarnogóra</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Wyspy Zielonego Przylądka</territory>
			<territory type="CX">Wyspa Bożego Narodzenia</territory>
			<territory type="CY">Cypr</territory>
			<territory type="CZ">Czechy</territory>
			<territory type="DE">Niemcy</territory>
			<territory type="DJ">Dżibuti</territory>
			<territory type="DK">Dania</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Republika Dominikańska</territory>
			<territory type="DZ">Algieria</territory>
			<territory type="EC">Ekwador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egipt</territory>
			<territory type="EH">Sahara Zachodnia</territory>
			<territory type="ER">Erytrea</territory>
			<territory type="ES">Hiszpania</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FJ">Fidżi</territory>
			<territory type="FK">Falklandy</territory>
			<territory type="FM">Mikronezja</territory>
			<territory type="FO">Wyspy Owcze</territory>
			<territory type="FR">Francja</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Wielka Brytania</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzja</territory>
			<territory type="GF">Gujana Francuska</territory>
			<territory type="GG">Wyspa Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Gwinea</territory>
			<territory type="GP">Gwadelupa</territory>
			<territory type="GQ">Gwinea Równikowa</territory>
			<territory type="GR">Grecja</territory>
			<territory type="GS">Georgia Południowa i Sandwich Południowy</territory>
			<territory type="GT">Gwatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Gwinea Bissau</territory>
			<territory type="GY">Gujana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Wyspy Heard i McDonalda</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Chorwacja</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Węgry</territory>
			<territory type="ID">Indonezja</territory>
			<territory type="IE">Irlandia</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Wyspa Man</territory>
			<territory type="IN">Indie</territory>
			<territory type="IO">Terytorium Brytyjskie Oceanu Indyjskiego</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islandia</territory>
			<territory type="IT">Włochy</territory>
			<territory type="JE">Wyspa Jersey</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordania</territory>
			<territory type="JP">Japonia</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgistan</territory>
			<territory type="KH">Kambodża</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komory</territory>
			<territory type="KN">Saint Kitts i Nevis</territory>
			<territory type="KP">Korea Północna</territory>
			<territory type="KR">Korea Południowa</territory>
			<territory type="KW">Kuwejt</territory>
			<territory type="KY">Kajmany</territory>
			<territory type="KZ">Kazachstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liban</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litwa</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="LV">Łotwa</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Mołdawia</territory>
			<territory type="ME">Czarnogóra</territory>
			<territory type="MF">Sint Maarten</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Wyspy Marshalla</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Birma</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Makau</territory>
			<territory type="MP">Mariany Północne</territory>
			<territory type="MQ">Martynika</territory>
			<territory type="MR">Mauretania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Malediwy</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Meksyk</territory>
			<territory type="MY">Malezja</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nowa Kaledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Wyspa Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Holandia</territory>
			<territory type="NO">Norwegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nowa Zelandia</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polinezja Francuska</territory>
			<territory type="PG">Papua Nowa Gwinea</territory>
			<territory type="PH">Filipiny</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polska</territory>
			<territory type="PM">Saint-Pierre i Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portoryko</territory>
			<territory type="PS">Terytoria Palestyńskie</territory>
			<territory type="PT">Portugalia</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragwaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Oceania inne</territory>
			<territory type="QU">Unia Europejska</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Rumunia</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Rosja</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Arabia Saudyjska</territory>
			<territory type="SB">Wyspy Salomona</territory>
			<territory type="SC">Seszele</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Szwecja</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Wyspa Świętej Heleny</territory>
			<territory type="SI">Słowenia</territory>
			<territory type="SJ">Svalbard i Jan Mayen</territory>
			<territory type="SK">Słowacja</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Wyspy Świętego Tomasza i Książęca</territory>
			<territory type="SV">Salwador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Suazi</territory>
			<territory type="TC">Turks i Caicos</territory>
			<territory type="TD">Czad</territory>
			<territory type="TF">Francuskie Terytoria Południowe</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajlandia</territory>
			<territory type="TJ">Tadżykistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Wschodni</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunezja</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turcja</territory>
			<territory type="TT">Trynidad i Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Dalekie Wyspy Mniejsze Stanów Zjednoczonych</territory>
			<territory type="US">Stany Zjednoczone</territory>
			<territory type="UY">Urugwaj</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Watykan</territory>
			<territory type="VC">Saint Vincent i Grenadyny</territory>
			<territory type="VE">Wenezuela</territory>
			<territory type="VG">Brytyjskie Wyspy Dziewicze</territory>
			<territory type="VI">Wyspy Dziewicze Stanów Zjednoczonych</territory>
			<territory type="VN">Wietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis i Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Majotta</territory>
			<territory type="ZA">Republika Południowej Afryki</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Nieznany lub nieprawidłowy region</territory>
		</territories>
		<variants>
			<variant type="1901">tradycyjna ortografia niemiecka</variant>
			<variant type="1994">standardowa ortografia regionu Resia</variant>
			<variant type="1996">ortografia niemiecka z 1996 r.</variant>
			<variant type="1606NICT">szesnastowieczny francuski</variant>
			<variant type="1694ACAD">siedemnastowieczny francuski</variant>
			<variant type="AREVELA">ormiański wchodni</variant>
			<variant type="AREVMDA">ormiański zachodni</variant>
			<variant type="BAKU1926">turecki zunifikowany alfabet łaciński</variant>
			<variant type="BISKE">dialekt San Giorgio/Bila</variant>
			<variant type="BOONT">dialekt Boontling</variant>
			<variant type="FONIPA">fonetyczny międzynarodowy</variant>
			<variant type="FONUPA">fonetyczny</variant>
			<variant type="LIPAW">dialekt Lipovaz w regionie Resia</variant>
			<variant type="MONOTON">monotoniczny</variant>
			<variant type="NEDIS">dialekt Natisone</variant>
			<variant type="NJIVA">dialekt Gniva/Njiva</variant>
			<variant type="OSOJS">dialekt Oseacco/Osojane</variant>
			<variant type="POLYTON">politoniczny</variant>
			<variant type="POSIX">komputerowy</variant>
			<variant type="REVISED">ortografia zreformowana</variant>
			<variant type="ROZAJ">dialekt regionu Resia</variant>
			<variant type="SAAHO">dialekt Saho</variant>
			<variant type="SCOTLAND">standardowy szkocki angielski</variant>
			<variant type="SCOUSE">dialekt Scouse</variant>
			<variant type="SOLBA">dialekt Stolvizza/Solbica</variant>
			<variant type="TARASK">ortografia taraszkiewicka</variant>
			<variant type="VALENCIA">walencki</variant>
		</variants>
		<keys>
			<key type="calendar">kalendarz</key>
			<key type="collation">sortowanie</key>
			<key type="currency">waluta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">chiński tradycyjny porządek sortowania - Big5</type>
			<type type="buddhist" key="calendar">kalendarz buddyjski</type>
			<type type="chinese" key="calendar">kalendarz chiński</type>
			<type type="direct" key="collation">bezpośredni porządek sortowania</type>
			<type type="gb2312han" key="collation">chiński uproszczony porządek sortowania - GB2312</type>
			<type type="gregorian" key="calendar">kalendarz gregoriański</type>
			<type type="hebrew" key="calendar">kalendarz hebrajski</type>
			<type type="indian" key="calendar">narodowy kalendarz hinduski</type>
			<type type="islamic" key="calendar">kalendarz islamski</type>
			<type type="islamic-civil" key="calendar">cywilny kalendarz islamski</type>
			<type type="japanese" key="calendar">kalendarz japoński</type>
			<type type="phonebook" key="collation">porządek sortowania książki telefonicznej</type>
			<type type="pinyin" key="collation">porządek sortowania pinyin</type>
			<type type="roc" key="calendar">kalendarz Republiki Chińskiej</type>
			<type type="stroke" key="collation">porządek akcentów</type>
			<type type="traditional" key="collation">tradycyjny porządek sortowania</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">anglosaski</measurementSystemName>
			<measurementSystemName type="metric">metryczny</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Język: {0}</codePattern>
			<codePattern type="script">Pismo: {0}</codePattern>
			<codePattern type="territory">Region: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a ą b c ć d e ę f-l ł m n ń o ó p r s ś t u w y z ź ż]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q v x]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">sty</month>
							<month type="2">lut</month>
							<month type="3">mar</month>
							<month type="4">kwi</month>
							<month type="5">maj</month>
							<month type="6">cze</month>
							<month type="7">lip</month>
							<month type="8">sie</month>
							<month type="9">wrz</month>
							<month type="10">paź</month>
							<month type="11">lis</month>
							<month type="12">gru</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">stycznia</month>
							<month type="2">lutego</month>
							<month type="3">marca</month>
							<month type="4">kwietnia</month>
							<month type="5">maja</month>
							<month type="6">czerwca</month>
							<month type="7">lipca</month>
							<month type="8">sierpnia</month>
							<month type="9">września</month>
							<month type="10">października</month>
							<month type="11">listopada</month>
							<month type="12">grudnia</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">s</month>
							<month type="2">l</month>
							<month type="3">m</month>
							<month type="4">k</month>
							<month type="5">m</month>
							<month type="6">c</month>
							<month type="7">l</month>
							<month type="8">s</month>
							<month type="9">w</month>
							<month type="10">p</month>
							<month type="11">l</month>
							<month type="12">g</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">styczeń</month>
							<month type="2">luty</month>
							<month type="3">marzec</month>
							<month type="4">kwiecień</month>
							<month type="5">maj</month>
							<month type="6">czerwiec</month>
							<month type="7">lipiec</month>
							<month type="8">sierpień</month>
							<month type="9">wrzesień</month>
							<month type="10">październik</month>
							<month type="11">listopad</month>
							<month type="12">grudzień</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">niedz.</day>
							<day type="mon">pon.</day>
							<day type="tue">wt.</day>
							<day type="wed">śr.</day>
							<day type="thu">czw.</day>
							<day type="fri">pt.</day>
							<day type="sat">sob.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">niedziela</day>
							<day type="mon">poniedziałek</day>
							<day type="tue">wtorek</day>
							<day type="wed">środa</day>
							<day type="thu">czwartek</day>
							<day type="fri">piątek</day>
							<day type="sat">sobota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">N</day>
							<day type="mon">P</day>
							<day type="tue">W</day>
							<day type="wed">Ś</day>
							<day type="thu">C</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">I kwartał</quarter>
							<quarter type="2">II kwartał</quarter>
							<quarter type="3">III kwartał</quarter>
							<quarter type="4">IV kwartał</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<quarter type="1">1 kw.</quarter>
							<quarter type="2">2 kw.</quarter>
							<quarter type="3">3 kw.</quarter>
							<quarter type="4">4 kw.</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">p.n.e.</era>
						<era type="1">n.e.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">p.n.e.</era>
						<era type="1">n.e.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">d MMM E</dateFormatItem>
						<dateFormatItem id="MMMMEd">d MMMM E</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">LLLL yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, MM-d – E, MM-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM-dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM-dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy-MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy-MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yyyy - E, dd.MM.yyyy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yyyy - E, dd.MM.yyyy</greatestDifference>
							<greatestDifference id="y">E, dd-MM-yyyy-E, dd-MM-yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL-LLL yyyy</greatestDifference>
							<greatestDifference id="y">LLL yyyy - LLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM.yyyy - MM.yyyy</greatestDifference>
							<greatestDifference id="y">MM.yyyy - MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM-dd.MM.yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy-dd.MM.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Rok</displayName>
					</field>
					<field type="month">
						<displayName>Miesiąc</displayName>
					</field>
					<field type="week">
						<displayName>Tydzień</displayName>
					</field>
					<field type="day">
						<displayName>Dzień</displayName>
						<relative type="0">Dzisiaj</relative>
						<relative type="1">Jutro</relative>
						<relative type="2">Pojutrze</relative>
						<relative type="3">Za trzy dni</relative>
						<relative type="-1">Wczoraj</relative>
						<relative type="-2">Przedwczoraj</relative>
						<relative type="-3">Trzy dni temu</relative>
					</field>
					<field type="weekday">
						<displayName>Dzień tygodnia</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dayperiod</displayName>
					</field>
					<field type="hour">
						<displayName>Godzina</displayName>
					</field>
					<field type="minute">
						<displayName>Minuta</displayName>
					</field>
					<field type="second">
						<displayName>Sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>Strefa</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Czas: {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Nieznane</exemplarCity>
			</zone>
			<zone type="Etc/GMT-1">
				<exemplarCity>GMT-01:0</exemplarCity>
			</zone>
			<zone type="Etc/GMT-2">
				<exemplarCity>GMT-02:00</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubaj</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Afganistan</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Antigua i Barbuda</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erewan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Stacja Naukowa Rothera</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Archipelag Palmera</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Biegun południowy</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Stacja Syowa</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Wybrzeże Mawsona</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Stacja Davis</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Stacja Vostok</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Stacja Casey</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Mc Murdo</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Samoa Amerykańskie</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wiedeń</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Adelajda</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Wyspa Lord Howe</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>Maarianhamina</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Azerbejdżan</exemplarCity>
			</zone>
			<zone type="Europe/Sarajevo">
				<exemplarCity>Sarajewo</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Dakka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruksela</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Wagadugu</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Bułgaria</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrajn</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Bużumbura</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novo</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudy</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Boliwia</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Pôrto Velho</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Săo Paulo</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Bahamy</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Bhutan</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Mińsk</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Wyspy Kokosowe</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinszasa</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Bangi</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Kongo Brazzaville</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zurych</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidżan</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Wyspy Cooka</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Wyspa Wielkanocna</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Duala</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kaszgar</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Urumczi</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Czunking</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Szanghaj</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Kolumbia</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostaryka</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Hawana</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Zielony Przylądek</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Wyspa Bożego Narodzenia</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikozja</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Praga</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Niemcy</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Dżibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhaga</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Republika Dominikańska</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Algier</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Ekwador</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kair</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Ujun</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmara</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Wyspy Kanaryjskie</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madryt</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Finlandia</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidżi</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Falklandy (Malwiny)</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Wyspy Owcze</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Paryż</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londyn</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Gruzja</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Kajenna</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Akra</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Grenlandia</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Bandżul</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Konakri</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gwadelupa</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Ateny</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Georgia Południowa</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gwatemala</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gujana</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>Honduras</exemplarCity>
			</zone>
			<zone type="Europe/Zagreb">
				<exemplarCity>Zagrzeb</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Haiti</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapeszt</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Dżakarta</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Irlandia</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jerozolima</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>Wyspa Man</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>Kalkuta</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Czagos</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Rejkiawik</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rzym</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Jordania</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biszkek</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Kambodża</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komory</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Saint Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Korea Północna</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuwejt</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kajmany</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Uralsk</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktiubińsk</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Kyzył Orda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Ałma Ata</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Wientian</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Bejrut</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Saint Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Liechtenstein</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Kolombo</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Wilno</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburg</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Ryga</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Trypolis</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Kiszyniów</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>Czarnogóra</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Antananarywa</exemplarCity>
			</zone>
			<zone type="Europe/Skopje">
				<exemplarCity>Macedonia</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Rangun</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Howd</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ułan Bator</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Czojbalsan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makau</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Mariany Północne</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martynika</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Nawakszut</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Malediwy</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Meksyk</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Kuczing</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Windhuk</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Numea</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Niamej</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Wyspa Norfolk</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Nikaragua</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Holandia</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Norwegia</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Nepal</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Maskat</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Peru</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Markizy</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Papua Nowa Gwinea</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Filipiny</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karaczi</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warszawa</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Saint Pierre i Miquelon</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Wyspy Pitcairn</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portoryko</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Terytoria Palestyńskie</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azory</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Madera</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lizbona</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukareszt</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Belgrad</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskwa</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Wołgograd</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterynburg</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Nowosybirsk</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkuck</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakuck</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Władywostok</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamczatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijad</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Wyspy Salomona</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Mahé</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Chartum</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Sztokholm</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Święta Helena</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>Lublana</exemplarCity>
			</zone>
			<zone type="Europe/Bratislava">
				<exemplarCity>Bratysława</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadiszu</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Surinam</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Săo Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salwador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaszek</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Turks i Caicos</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Ndżamena</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Wyspy Kerguelena</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Lomé</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Tajlandia</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Duszanbe</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Tokelau</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Timor Wschodni</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Aszchabad</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Tonga</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Stambuł</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port-of-Spain</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Tuvalu</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Tajpej</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Dar es-Salaam</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Użgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijów</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Symferopol</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporoże</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Vincennes</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Petersburg</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Knox</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Winamac</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marengo</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Vevay</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Monticello</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Nowy Jork</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Urugwaj</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Samarkanda</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taszkient</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>Watykan</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint Vincent</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Wenezuela</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Brytyjskie Wyspy Dziewicze</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Saint Thomas</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Sajgon</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Vanuatu</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Wallis i Futuna</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Samoa</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Jemen</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Majotta</exemplarCity>
			</zone>
			<metazone type="Acre">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Czas środkowoeuropejski</standard>
					<daylight>Czas środkowoeuropejski letni</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Czas wschodnioeuropejski</standard>
					<daylight>Czas wschodnioeuropejski letni</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Czas zachodnioeuropejski</standard>
					<daylight>Czas zachodnioeuropejski letni</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>peseta andorska</displayName>
				<displayName count="few">pesety andorskie</displayName>
				<displayName count="other">peset andorskich</displayName>
			</currency>
			<currency type="AED">
				<displayName>dirham arabski</displayName>
				<displayName count="few">dirhamy arabskie</displayName>
				<displayName count="other">dirhamów arabskich</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afgani (1927-2002)</displayName>
				<displayName count="few">afgani (1927-2002)</displayName>
				<displayName count="other">afgani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afgani</displayName>
				<displayName count="few">afgani</displayName>
				<displayName count="other">afgani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>lek albański</displayName>
				<displayName count="few">leki albańskie</displayName>
				<displayName count="other">leków albańskich</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>dram armeński</displayName>
				<displayName count="few">dramy armeńskie</displayName>
				<displayName count="other">dramów armeńskich</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>gulden Antyle Holenderskie</displayName>
				<displayName count="few">guldeny Antyle Holenderskie</displayName>
				<displayName count="other">guldenów (Antyle Holenderskie)</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>kwanza angolańska</displayName>
				<displayName count="few">kwanzy angolańskie</displayName>
				<displayName count="other">kwanz angolańskich</displayName>
			</currency>
			<currency type="AOK">
				<displayName>kwanza angolańska (1977-1990)</displayName>
				<displayName count="few">kwanzy angolańskie (1977-1990)</displayName>
				<displayName count="other">kwanz angolańskich (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>nowa kwanza angolańska (1990-2000)</displayName>
				<displayName count="few">nowe kwanzy angolańskie (1990-2000)</displayName>
				<displayName count="other">nowych kwanz angolańskich (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>kwanza angolańska Reajustado (1995-1999)</displayName>
				<displayName count="few">kwanzy angolańskie Reajustado (1995-1999)</displayName>
				<displayName count="other">kwanz angolańskich Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>austral argentyński</displayName>
			</currency>
			<currency type="ARP">
				<displayName>peso argentyńskie (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>peso argentyńskie</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>szyling austriacki </displayName>
			</currency>
			<currency type="AUD">
				<displayName>dolar australijski</displayName>
				<displayName count="few">dolary australijskie</displayName>
				<displayName count="one">dolar australijski</displayName>
				<displayName count="other">dolarów australijskich</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>gulden arubski</displayName>
			</currency>
			<currency type="AZM">
				<displayName>manat azerbejdżański</displayName>
			</currency>
			<currency type="AZN">
				<displayName>manat azerski</displayName>
				<displayName count="few">manaty azerskie</displayName>
				<displayName count="one">manat azerski</displayName>
				<displayName count="other">manatów azerskich</displayName>
			</currency>
			<currency type="BAD">
				<displayName>dinar Bośni i Hercegowiny</displayName>
			</currency>
			<currency type="BAM">
				<displayName>marka konwertybilna Bośni i Hercegowiny</displayName>
				<displayName count="few">marki wymienne Bośni i Hercegowiny</displayName>
				<displayName count="one">marka wymienna Bośni i Hercegowiny</displayName>
				<displayName count="other">marek wymiennych Bośni i Hercegowiny</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>dolar Barbadosu</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>taka bengalska</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>frank belgijski (zamienny)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>frank belgijski</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>frank belgijski (finansowy)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>lew bułgarski</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>nowy lew bułgarski</displayName>
			</currency>
			<currency type="BHD">
				<displayName>dinar bahrański</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>frank burundyjski</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>dolar bermudzki</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>dolar brunejski</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>peso boliwijskie</displayName>
			</currency>
			<currency type="BOV">
				<displayName>mvdol boliwijski</displayName>
			</currency>
			<currency type="BRB">
				<displayName>cruzeiro novo brazylijskie (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>cruzado brazylijskie</displayName>
			</currency>
			<currency type="BRE">
				<displayName>cruzeiro brazylijskie (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>real brazylijski</displayName>
			</currency>
			<currency type="BRN">
				<displayName>nowe cruzado brazylijskie</displayName>
			</currency>
			<currency type="BRR">
				<displayName>cruzeiro brazylijskie</displayName>
			</currency>
			<currency type="BSD">
				<displayName>dolar bahamski</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ngultrum Bhutanu</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>kyat birmański</displayName>
			</currency>
			<currency type="BWP">
				<displayName>pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>rubel białoruski (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>rubel białoruski</displayName>
				<displayName count="few">ruble białoruskie</displayName>
				<displayName count="one">rubel białoruski</displayName>
				<displayName count="other">rubli białoruskich</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>dolar belizeński</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>dolar kanadyjski</displayName>
				<displayName count="few">dolary kanadyjskie</displayName>
				<displayName count="one">dolar kanadyjski</displayName>
				<displayName count="other">dolarów kanadyjskich</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>frank kongijski</displayName>
			</currency>
			<currency type="CHF">
				<displayName>frank szwajcarski</displayName>
				<displayName count="few">franki szwajcarskie</displayName>
				<displayName count="one">frank szwajcarski</displayName>
				<displayName count="other">franków szwajcarskich</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLP">
				<displayName>peso chilijskie</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>juan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>peso kolumbijskie</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>colon kostarykański</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>stary dinar serbski</displayName>
			</currency>
			<currency type="CSK">
				<displayName>korona czechosłowacka</displayName>
				<displayName count="few">korony czechosłowackie</displayName>
				<displayName count="one">korona czechosłowacka</displayName>
				<displayName count="other">koron czechosłowackich</displayName>
			</currency>
			<currency type="CUP">
				<displayName>peso kubańskie</displayName>
			</currency>
			<currency type="CVE">
				<displayName>escudo Zielonego Przylądka</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>funt cypryjski</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>korona czeska</displayName>
				<displayName count="few">korony czeskie</displayName>
				<displayName count="one">korona czeska</displayName>
				<displayName count="other">koron czeskich</displayName>
			</currency>
			<currency type="DDM">
				<displayName>wschodnia marka wschodnioniemiecka</displayName>
			</currency>
			<currency type="DEM">
				<displayName>marka niemiecka</displayName>
				<displayName count="few">marki niemieckie</displayName>
				<displayName count="one">marka niemiecka</displayName>
				<displayName count="other">marek niemieckich</displayName>
			</currency>
			<currency type="DJF">
				<displayName>frank Dżibuti</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>korona duńska</displayName>
				<displayName count="few">korony duńskie</displayName>
				<displayName count="one">korona duńska</displayName>
				<displayName count="other">koron duńskich</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>peso dominikańskie</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>dinar algierski</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>sucre ekwadorski</displayName>
			</currency>
			<currency type="EEK">
				<displayName>korona estońska</displayName>
				<displayName count="few">korony estońskie</displayName>
				<displayName count="one">korona estońska</displayName>
				<displayName count="other">koron estońskich</displayName>
			</currency>
			<currency type="EGP">
				<displayName>funt egipski</displayName>
			</currency>
			<currency type="ERN">
				<displayName>nakfa erytrejska</displayName>
			</currency>
			<currency type="ESA">
				<displayName>peseta hiszpańska (Konto A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>peseta hiszpańska (konto wymienne)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>peseta hiszpańska</displayName>
			</currency>
			<currency type="ETB">
				<displayName>birr etiopski</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<displayName count="few">euro</displayName>
				<displayName count="one">euro</displayName>
				<displayName count="other">euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>marka fińska</displayName>
			</currency>
			<currency type="FJD">
				<displayName>dolar fidżi</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>funt Wysp Falklandzkich</displayName>
			</currency>
			<currency type="FRF">
				<displayName>frank francuski </displayName>
				<displayName count="few">franki francuskie</displayName>
				<displayName count="one">frank francuski</displayName>
				<displayName count="other">franków francuskich</displayName>
			</currency>
			<currency type="GBP">
				<displayName>funt szterling</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>kupon gruziński larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>lari gruzińskie</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>cedi ghańskie</displayName>
			</currency>
			<currency type="GHS">
				<displayName>cedi Ghany</displayName>
			</currency>
			<currency type="GIP">
				<displayName>funt gibraltarski</displayName>
			</currency>
			<currency type="GMD">
				<displayName>dalasi gambijskie</displayName>
			</currency>
			<currency type="GNF">
				<displayName>frank gwinejski</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>syli gwinejskie</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ekwele gwinejskie Gwinei Równikowej</displayName>
			</currency>
			<currency type="GRD">
				<displayName>drachma grecka</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>quetzal gwatemalski</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>escudo Gwinea Portugalska</displayName>
			</currency>
			<currency type="GWP">
				<displayName>peso Guinea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>dolar gujański</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>dolar hongkoński</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>lempira Hondurasu</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>dinar chorwacki</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kuna chorwacka</displayName>
			</currency>
			<currency type="HTG">
				<displayName>gourde haitańskie</displayName>
			</currency>
			<currency type="HUF">
				<displayName>forint węgierski </displayName>
				<displayName count="few">forinty węgierskie</displayName>
				<displayName count="one">forint węgierski</displayName>
				<displayName count="other">forintów węgierskich</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>rupia indonezyjska</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>funt irlandzki</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>funt izraelski</displayName>
			</currency>
			<currency type="ILS">
				<displayName>nowy szekel izraelski</displayName>
			</currency>
			<currency type="INR">
				<displayName>rupia indyjska</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>dinar iracki</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>rial irański</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>korona islandzka</displayName>
			</currency>
			<currency type="ITL">
				<displayName>lir włoski</displayName>
			</currency>
			<currency type="JMD">
				<displayName>dolar jamajski</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>dinar jordański</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>jen japoński</displayName>
				<displayName count="few">jeny japońskie</displayName>
				<displayName count="one">jen japoński</displayName>
				<displayName count="other">jenów japońskich</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>szyling kenijski</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>som kirgiski</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>riel kambodżański</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>frank komoryjski</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>won północnokoreański</displayName>
			</currency>
			<currency type="KRW">
				<displayName>won południowokoreański</displayName>
			</currency>
			<currency type="KWD">
				<displayName>dinar kuwejcki</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>dolar kajmański</displayName>
			</currency>
			<currency type="KZT">
				<displayName>tenge kazachskie</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>kip laotański</displayName>
			</currency>
			<currency type="LBP">
				<displayName>funt libański</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>rupia lankijska</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>dolar liberyjski</displayName>
			</currency>
			<currency type="LSL">
				<displayName>loti Lesoto</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>lit litewski</displayName>
			</currency>
			<currency type="LTT">
				<displayName>talon litewski</displayName>
			</currency>
			<currency type="LUF">
				<displayName>frank luksemburski</displayName>
			</currency>
			<currency type="LVL">
				<displayName>łat łotewski</displayName>
			</currency>
			<currency type="LVR">
				<displayName>rubel łotewski</displayName>
			</currency>
			<currency type="LYD">
				<displayName>dinar libijski</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>dirham marokański</displayName>
			</currency>
			<currency type="MAF">
				<displayName>frank marokański</displayName>
				<displayName count="few">franki marokańskie</displayName>
				<displayName count="one">frank marokański</displayName>
				<displayName count="other">franków marokańskich</displayName>
			</currency>
			<currency type="MDL">
				<displayName>lej mołdawski</displayName>
			</currency>
			<currency type="MGA">
				<displayName>ariar malgaski</displayName>
			</currency>
			<currency type="MGF">
				<displayName>frank malgaski</displayName>
			</currency>
			<currency type="MKD">
				<displayName>denar macedoński</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>frank malijski</displayName>
			</currency>
			<currency type="MMK">
				<displayName>kyat Myanmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>tugrik mongolski</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>pataka Macao</displayName>
			</currency>
			<currency type="MRO">
				<displayName>ouguiya mauterańska</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>lira maltańska</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>funt maltański</displayName>
			</currency>
			<currency type="MUR">
				<displayName>rupia Mauritius</displayName>
			</currency>
			<currency type="MVR">
				<displayName>rufiyaa malediwska</displayName>
			</currency>
			<currency type="MWK">
				<displayName>kwacha malawska</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>peso meksykańskie</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>peso srebrne meksykańskie (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ringgit malezyjski</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>escudo mozambickie</displayName>
			</currency>
			<currency type="MZM">
				<displayName>metical Mozambik</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>metical Mozambiku</displayName>
			</currency>
			<currency type="NAD">
				<displayName>dolar namibijski</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>naira nigeryjska</displayName>
			</currency>
			<currency type="NIC">
				<displayName>cordoba nikaraguańska</displayName>
			</currency>
			<currency type="NIO">
				<displayName>cordoba oro nikaraguańska</displayName>
			</currency>
			<currency type="NLG">
				<displayName>gulden holenderski </displayName>
			</currency>
			<currency type="NOK">
				<displayName>korona norweska</displayName>
				<displayName count="few">korony norweskie</displayName>
				<displayName count="one">korona norweska</displayName>
				<displayName count="other">koron norweskich</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>rupia nepalska</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>dolar nowozelandzki</displayName>
				<displayName count="few">dolary nowozelandzkie</displayName>
				<displayName count="one">dolar nowozelandzki</displayName>
				<displayName count="other">dolarów nowozelandzkich</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>rial Omanu</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>balboa panamski</displayName>
			</currency>
			<currency type="PEI">
				<displayName>inti peruwiański</displayName>
			</currency>
			<currency type="PEN">
				<displayName>nowy sol peruwiański</displayName>
			</currency>
			<currency type="PES">
				<displayName>sol peruwiański</displayName>
			</currency>
			<currency type="PGK">
				<displayName>kina Papua Nowa Gwinea</displayName>
			</currency>
			<currency type="PHP">
				<displayName>peso filipińskie</displayName>
			</currency>
			<currency type="PKR">
				<displayName>rupia pakistańska</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>złoty polski</displayName>
				<displayName count="few">złote polskie</displayName>
				<displayName count="one">złoty polski</displayName>
				<displayName count="other">złotych polskich</displayName>
				<symbol>zł</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>złoty polski (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>escudo portugalskie</displayName>
			</currency>
			<currency type="PYG">
				<displayName>guarani paragwajskie</displayName>
			</currency>
			<currency type="QAR">
				<displayName>rial katarski</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>dolar rodezyjski</displayName>
			</currency>
			<currency type="ROL">
				<displayName>lej rumuński</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>nowa leja rumuńska</displayName>
			</currency>
			<currency type="RSD">
				<displayName>dinar serbski</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rubel rosyjski</displayName>
				<displayName count="few">ruble rosyjskie</displayName>
				<displayName count="one">rubel rosyjski</displayName>
				<displayName count="other">rubli rosyjskich</displayName>
			</currency>
			<currency type="RUR">
				<displayName>rubel rosyjski (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>frank ruandyjski</displayName>
			</currency>
			<currency type="SAR">
				<displayName>rial saudyjski</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>dolar Wysp Salomona</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>rupia seszelska</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>dinar sudański</displayName>
			</currency>
			<currency type="SDG">
				<displayName>funt sudański</displayName>
			</currency>
			<currency type="SDP">
				<displayName>stary funt sudański</displayName>
			</currency>
			<currency type="SEK">
				<displayName>korona szwedzka</displayName>
				<displayName count="few">korony szwedzkie</displayName>
				<displayName count="one">korona szwedzka</displayName>
				<displayName count="other">koron szwedzkich</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>dolar singapurski</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>funt Wyspy Świętej Heleny</displayName>
			</currency>
			<currency type="SIT">
				<displayName>tolar słoweński</displayName>
				<displayName count="few">tolary słoweńskie</displayName>
				<displayName count="one">tolar słoweński</displayName>
				<displayName count="other">tolarów słoweńskich</displayName>
			</currency>
			<currency type="SKK">
				<displayName>korona słowacka</displayName>
				<displayName count="few">korony słowackie</displayName>
				<displayName count="one">korona słowacka</displayName>
				<displayName count="other">koron słowackich</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>leone Sierra Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>szyling somalijski</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>dolar surinamski</displayName>
				<displayName count="few">dolary surinamskie</displayName>
				<displayName count="one">dolar surinamski</displayName>
				<displayName count="other">dolarów surinamskich</displayName>
			</currency>
			<currency type="SRG">
				<displayName>gulden surinamski</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>dobra Wysp Świętego Tomasza i Książęcej</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>rubel radziecki</displayName>
				<displayName count="few">ruble radzieckie</displayName>
				<displayName count="one">rubel radziecki</displayName>
				<displayName count="other">rubli radzieckich</displayName>
			</currency>
			<currency type="SVC">
				<displayName>colon salwadorski</displayName>
			</currency>
			<currency type="SYP">
				<displayName>funt syryjski</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>lilangeni Suazi</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>baht tajski</displayName>
			</currency>
			<currency type="TJR">
				<displayName>rubel tadżycki</displayName>
			</currency>
			<currency type="TJS">
				<displayName>somoni tadżyckie</displayName>
			</currency>
			<currency type="TMM">
				<displayName>manat turkmeński</displayName>
			</currency>
			<currency type="TND">
				<displayName>dinar tunezyjski</displayName>
			</currency>
			<currency type="TOP">
				<displayName>paʻanga Tonga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>escudo timorskie</displayName>
			</currency>
			<currency type="TRL">
				<displayName>lir turecki</displayName>
				<displayName count="few">liry tureckie</displayName>
				<displayName count="one">lira turecka</displayName>
				<displayName count="other">lir tureckich</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>nowa lira turecka</displayName>
				<displayName count="few">nowe liry tureckie</displayName>
				<displayName count="one">nowa lira turecka</displayName>
				<displayName count="other">nowych lir tureckich</displayName>
			</currency>
			<currency type="TTD">
				<displayName>dolar Trynidadu i Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>nowy dolar tajwański</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>szyling tanzański</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>hrywna ukraińska</displayName>
				<displayName count="few">hrywny ukraińskie</displayName>
				<displayName count="one">hrywna ukraińska</displayName>
				<displayName count="other">hrywien ukraińskich</displayName>
			</currency>
			<currency type="UAK">
				<displayName>karbowaniec ukraiński</displayName>
				<displayName count="few">karbowańce ukraińskie</displayName>
				<displayName count="one">karbowaniec ukraiński</displayName>
				<displayName count="other">karbowańców ukraińskich</displayName>
			</currency>
			<currency type="UGS">
				<displayName>szyling ugandyjski (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>szyling ugandyjski</displayName>
				<symbol>USh</symbol>
			</currency>
			<currency type="USD">
				<displayName>dolar amerykański </displayName>
				<displayName count="few">dolary amerykańskie</displayName>
				<displayName count="one">dolar amerykański</displayName>
				<displayName count="other">dolarów amerykańskich</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="UYP">
				<displayName>peso urugwajskie (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>peso urugwajskie</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>som uzbecki</displayName>
			</currency>
			<currency type="VEB">
				<displayName>boliwar wenezuelski</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>boliwar fuerte</displayName>
			</currency>
			<currency type="VND">
				<displayName>dong wietnamski</displayName>
			</currency>
			<currency type="VUV">
				<displayName>vatu Vanuatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>tala samoańska</displayName>
			</currency>
			<currency type="XAF">
				<displayName>frank CFA BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>srebro</displayName>
			</currency>
			<currency type="XAU">
				<displayName>złoto</displayName>
			</currency>
			<currency type="XCD">
				<displayName>dolar wschodniokaraibski</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>specjalne prawa ciągnienia</displayName>
			</currency>
			<currency type="XEU">
				<displayName>ECU</displayName>
			</currency>
			<currency type="XFO">
				<displayName>frank złoty francuski</displayName>
			</currency>
			<currency type="XFU">
				<displayName>UIC-frank francuski</displayName>
			</currency>
			<currency type="XOF">
				<displayName>frank CFA</displayName>
			</currency>
			<currency type="XPD">
				<displayName>pallad</displayName>
			</currency>
			<currency type="XPF">
				<displayName>frank CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platyna</displayName>
			</currency>
			<currency type="XXX">
				<displayName>nieznana/nieprawidłowa waluta</displayName>
				<displayName count="few">XXX</displayName>
				<displayName count="one">nieznana/nieprawidłowa waluta</displayName>
				<displayName count="other">XXX</displayName>
			</currency>
			<currency type="YDD">
				<displayName>dinar jemeński</displayName>
			</currency>
			<currency type="YER">
				<displayName>rial jemeński</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUM">
				<displayName>nowy dinar jugosławiański</displayName>
			</currency>
			<currency type="YUN">
				<displayName>dinar jugosławiański wymienny</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>rand południowoafrykański (finansowy)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>rand południowoafrykański</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>kwacha zambijska</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>nowy zair zairski</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>zair zairski</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>dolar Zimbabwe</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} dni</unitPattern>
			<unitPattern count="one">{0} dzień</unitPattern>
			<unitPattern count="other">{0} dni</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} godziny</unitPattern>
			<unitPattern count="one">{0} godzina</unitPattern>
			<unitPattern count="other">{0} godzin</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} minuty</unitPattern>
			<unitPattern count="one">{0} minuta</unitPattern>
			<unitPattern count="other">{0} minut</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} miesiące</unitPattern>
			<unitPattern count="one">{0} miesiąc</unitPattern>
			<unitPattern count="other">{0} miesięcy</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} sekundy</unitPattern>
			<unitPattern count="one">{0} sekunda</unitPattern>
			<unitPattern count="other">{0} sekund</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} tygodnie</unitPattern>
			<unitPattern count="one">{0} tydzień</unitPattern>
			<unitPattern count="other">{0} tygodni</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} lata</unitPattern>
			<unitPattern count="one">{0} rok</unitPattern>
			<unitPattern count="other">{0} lat</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>tak:t</yesstr>
			<nostr>nie:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ti G##Locale/Data/ti_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ti"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[��R##Locale/Data/dv_MV.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="dv"/>
		<territory type="MV"/>
	</identity>
</ldml>
PKpG[pm�##Locale/Data/he_IL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="he"/>
		<territory type="IL"/>
	</identity>
</ldml>
PKpG[�H�$q1q1Locale/Data/te.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.65 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="te"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">అరబిక్</language>
			<language type="bh">బీహారి</language>
			<language type="bn">బెంగాలి</language>
			<language type="cs">చెక్</language>
			<language type="da">డానిష్</language>
			<language type="de">ఙర్మన్</language>
			<language type="el">గ్రీకు</language>
			<language type="en">ఆంగ్లం</language>
			<language type="es">స్పానిష్</language>
			<language type="et">ఈస్టోనియను</language>
			<language type="fa">పార్శీ</language>
			<language type="fi">ఫిన్నిష్</language>
			<language type="fr">ఫ్రెంచ్</language>
			<language type="ga">ఐరిష్</language>
			<language type="gu">గుజరాతి</language>
			<language type="he">హీబ్రూ</language>
			<language type="hi">హిందీ</language>
			<language type="hu">హంగేరియను</language>
			<language type="id">ఇండొనేసియన్</language>
			<language type="is">ఐస్ లాండు</language>
			<language type="it">ఇటాలియన్ భాష</language>
			<language type="ja">జపాను భాష</language>
			<language type="kn">కన్నడ</language>
			<language type="la">లాటిన్</language>
			<language type="lt">లిథువేనియను</language>
			<language type="lv">లాత్వియను</language>
			<language type="ml">మలయాళం</language>
			<language type="mn">మంగోలియన్</language>
			<language type="mr">మరాఠి</language>
			<language type="ne">నేపాలి</language>
			<language type="nl">డచ్</language>
			<language type="no">నార్వేజియన్</language>
			<language type="pa">పంజాబి</language>
			<language type="pl">పోలిష్</language>
			<language type="pt">పొర్చుగల్ భాష</language>
			<language type="ro">రొమేనియను</language>
			<language type="ru">రష్యన్ భాష</language>
			<language type="si">సింహళీ</language>
			<language type="sv">స్వీడిష్</language>
			<language type="sw">స్వాహిలి</language>
			<language type="ta">తమిళం</language>
			<language type="te">తెలుగు</language>
			<language type="th">థాయి</language>
			<language type="ur">ఉర్దు</language>
			<language type="xh">ఖోస</language>
			<language type="zh">చైనా భాష</language>
			<language type="zu">జూలూ</language>
		</languages>
		<scripts>
			<script type="Arab">అరబ్బి లిపి</script>
			<script type="Beng">Beng</script>
			<script type="Cyrl">సిరిలిక్ లిపి</script>
			<script type="Hans">సరళమైన చైనా లిపి</script>
			<script type="Hant">ప్రాచీన చైనా లిపి</script>
			<script type="Latn">లాటిన్</script>
			<script type="Telu">తెలుగు</script>
		</scripts>
		<territories>
			<territory type="BR">బ్రజిల్</territory>
			<territory type="CN">చైనా</territory>
			<territory type="DE">ఙర్మని</territory>
			<territory type="FR">ఫ్రాన్స్‌</territory>
			<territory type="GB">బ్రిటన్</territory>
			<territory type="IN">భారత దేళం</territory>
			<territory type="IT">ఇటలి</territory>
			<territory type="JP">జపాసు</territory>
			<territory type="RU">రష్య</territory>
			<territory type="TO">ఠాఙ్గ</territory>
			<territory type="US">ఐక్య రాష్ట్ర అమెరిక</territory>
		</territories>
		<variants>
			<variant type="1901">ప్రాచీన ఙర్మన వర్ణక్రమం</variant>
			<variant type="1996">1996 ఙర్మన వర్ణక్రమం</variant>
			<variant type="REVISED">సవరించబడిన వర్ణక్రమం</variant>
		</variants>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[అ-ఋ ౠ ఌ ౡ ఎ-ఐ ఒ-న ప-ళ వ-హ ఁ-ః ్ ా-ౄ ె-ై ొ-ౌ ౕ ౖ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ౦-౯ b c e g m q t]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">జనవరి</month>
							<month type="2">ఫిబ్రవరి</month>
							<month type="3">మార్చి</month>
							<month type="4">ఏప్రిల్</month>
							<month type="5">మే</month>
							<month type="6">జూన్</month>
							<month type="7">జూలై</month>
							<month type="8">ఆగస్టు</month>
							<month type="9">సెప్టెంబర్</month>
							<month type="10">అక్టోబర్</month>
							<month type="11">నవంబర్</month>
							<month type="12">డిసెంబర్</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">జనవరి</month>
							<month type="2">ఫిబ్రవరి</month>
							<month type="3">మార్చి</month>
							<month type="4">ఏప్రిల్</month>
							<month type="5">మే</month>
							<month type="6">జూన్</month>
							<month type="7">జూలై</month>
							<month type="8">ఆగస్టు</month>
							<month type="9">సెప్టెంబర్</month>
							<month type="10">అక్టోబర్</month>
							<month type="11">నవంబర్</month>
							<month type="12">డిసెంబర్</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">జ</month>
							<month type="2">ఫి</month>
							<month type="3">మ</month>
							<month type="4">ఎ</month>
							<month type="5">మె</month>
							<month type="6">జు</month>
							<month type="7">జు</month>
							<month type="8">ఆ</month>
							<month type="9">సె</month>
							<month type="10">అ</month>
							<month type="11">న</month>
							<month type="12">డి</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ఆది</day>
							<day type="mon">సోమ</day>
							<day type="tue">మంగళ</day>
							<day type="wed">బుధ</day>
							<day type="thu">గురు</day>
							<day type="fri">శుక్ర</day>
							<day type="sat">శని</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ఆదివారం</day>
							<day type="mon">సోమవారం</day>
							<day type="tue">మంగళవారం</day>
							<day type="wed">బుధవారం</day>
							<day type="thu">గురువారం</day>
							<day type="fri">శుక్రవారం</day>
							<day type="sat">శనివారం</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ఆ</day>
							<day type="mon">2</day>
							<day type="tue">సొ</day>
							<day type="wed">భు</day>
							<day type="thu">గు</day>
							<day type="fri">శు</day>
							<day type="sat">శ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ఒకటి  1</quarter>
							<quarter type="2">రెండు  2</quarter>
							<quarter type="3">మూడు 3</quarter>
							<quarter type="4">నాలుగు 4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>పూర్వాహ్నం</am>
				<pm>అపరాహ్నం</pm>
				<eras>
					<eraNames>
						<era type="0">ఈసాపూర్వ.</era>
						<era type="1">సన్.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<nativeZeroDigit>౦</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>బ్రజిల్ దేశ రియాల్</displayName>
				<symbol>రి$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>చైనా  దేశ యువాన్ రెన్‌మిన్‌బి</displayName>
				<symbol>యు</symbol>
			</currency>
			<currency type="EUR">
				<displayName>యురొ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>బ్ిటిష్ పౌన్డ స్టెర్లిగ్</displayName>
			</currency>
			<currency type="INR">
				<displayName>రూపాయి</displayName>
				<symbol>రూ.</symbol>
			</currency>
			<currency type="JPY">
				<displayName>జపాను దేశ యెస్</displayName>
			</currency>
			<currency type="RUB">
				<displayName>రష్య దేశ రూబల్</displayName>
				<symbol>రూబల్</symbol>
			</currency>
			<currency type="USD">
				<displayName>ఐక్య రాష్ట్ర అమెరిక డాలర్</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>అవను</yesstr>
			<nostr>కాదు</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��88Locale/Data/en_CA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.60 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="en"/>
		<territory type="CA"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM-yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-MM - yy-MM</greatestDifference>
							<greatestDifference id="y">yy-MM - yy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy - E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d - MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d-d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy - MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="d">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="y">yy-MM-dd - yy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Newfoundland">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="CAD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG['�G$$Locale/Data/my.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.26 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="my"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localeSeparator>၊</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="ang">အင်္ဂလိပ်စာဟောင်း</language>
			<language type="ar">အာရေဗီ</language>
			<language type="art">အယောင်ဆောင် ဘာသာစကား</language>
			<language type="ban">ဘာလီ</language>
			<language type="bas">ဘာဆာ</language>
			<language type="bat">ဘော်လတစ် ဘာသာစကား</language>
			<language type="be">ဘီလာရု</language>
			<language type="bg">ဘူဂေးရီးယား</language>
			<language type="bn">ဘင်္ဂါလီ</language>
			<language type="bo">တိဘက်</language>
			<language type="bs">ဘော့စ်နီးယား</language>
			<language type="cai">အလယ်ပိုင်း အမေရိကန် အိန္ဒြိယ ဘာသာစကား</language>
			<language type="cau">ကောက်ကေးရှပ် ဘာသာစကား</language>
			<language type="ce">ချေချင်း</language>
			<language type="chr">ချာရိုကီ</language>
			<language type="cpp">ပေါ်တူဂီ အခြေခံ အနောက်အိန္ဒြိယ ကျွန်းစုသား သို့မဟုတ် ဗန်းစကား</language>
			<language type="cr">ခရီး</language>
			<language type="crp">အနောက်အိန္ဒြိယ ကျွန်းစုသား သို့မဟုတ် ဗန်းစကား</language>
			<language type="cs">ချက်</language>
			<language type="cy">ဝေလ</language>
			<language type="da">ဒိန်းမတ်</language>
			<language type="dak">ဒါကိုတာ</language>
			<language type="de">ဂျာမန်</language>
			<language type="de_AT">ဩစတြီးယ ဂျာမန်</language>
			<language type="de_CH">ဆွစ် အမြင့် ဂျာမန်</language>
			<language type="del">ဒီလာဝဲ</language>
			<language type="dum">အလယ်ပိုင်း ဒတ်ချ်</language>
			<language type="dz">ဒွန်ကာ</language>
			<language type="egy">ရှေးဟောင်း အီဂျစ်</language>
			<language type="el">ဂရိ</language>
			<language type="en">အင်္ဂလိပ်</language>
			<language type="en_AU">ဩစတြေးလျှ အင်္ဂလိပ်</language>
			<language type="en_CA">ကနေဒါ အင်္ဂလိပ်</language>
			<language type="en_GB">ဗြိတိသျှ အင်္ဂလိပ်</language>
			<language type="en_US">အမေရိကန် အင်္ဂလိပ်</language>
			<language type="enm">အလယ်ပိုင်း အင်္ဂလိပ်</language>
			<language type="es">စပိန်</language>
			<language type="es_419">လက်တင်အမေရိက စပိန်</language>
			<language type="et">အက်စ်တိုးနီးရန်း</language>
			<language type="fa">ပါရှန်</language>
			<language type="fi">ဖင်နစ်ရှ်</language>
			<language type="fil">ဖိလစ်ပီနို</language>
			<language type="fj">ဖီဂျီ</language>
			<language type="fr">ပြင်သစ်</language>
			<language type="fr_CA">ကနေဒါ ပြင်သစ်</language>
			<language type="fr_CH">ဆွစ် ပြင်သစ်</language>
			<language type="frm">အလယ်ပိုင်းပြင်သစ်</language>
			<language type="fro">ပြင်သစ်ဟောင်း</language>
			<language type="frr">မြောက်ပိုင်း ဖရီစီရန်</language>
			<language type="frs">အရှေ့ပိုင်း ဖရီစီရန်</language>
			<language type="fy">အနောက်ပိုင်း ဖရီစီရန်</language>
			<language type="ga">အိုင်းရစ်</language>
			<language type="gem">ဂျာမန် အခြေခံဘာသာစကား</language>
			<language type="gmh">အလယ်ပိုင်းအမြင့်ဂျာမန်</language>
			<language type="grc">ရှေးဟောင်း ဂရိ</language>
			<language type="gsw">ဆွစ် ဂျာမန်</language>
			<language type="gu">ဂူဂျာရသီ</language>
			<language type="haw">ဟာဝေယံ</language>
			<language type="he">ဟီးဘရူး</language>
			<language type="hi">ဟိန္ဒီ</language>
			<language type="hr">ခရိုအေရှန်</language>
			<language type="hu">ဟန်ဂေရီ</language>
			<language type="id">အင်ဒိုနီးရှား</language>
			<language type="ii">စီချွမ် ရီ</language>
			<language type="ine">အင်ဒို ဥရောပ ဘာသာစကား</language>
			<language type="ira">အီရန် အခြေခံ ဘာသာစကား</language>
			<language type="it">အီတလီ</language>
			<language type="ja">ဂျပန်</language>
			<language type="jpr">ဂျူဒီယို-ပါရှန်</language>
			<language type="jrb">ဂျူဒီယို-အာရေဗျ</language>
			<language type="jv">ဂျာဗားနီးစ်</language>
			<language type="ka">ဂျော်ဂျီယန်</language>
			<language type="kac">ကချင်</language>
			<language type="kar">ကရင်</language>
			<language type="kg">ကွန်ဂို</language>
			<language type="kha">ခါစီ</language>
			<language type="km">ခမာ</language>
			<language type="kn">ကန်နာဒါ</language>
			<language type="ko">ကိုးရီးယား</language>
			<language type="ku">ကဒ်</language>
			<language type="la">လက်တင်</language>
			<language type="lo">လာအို</language>
			<language type="mga">အလယ်ပိုင်း အိုင်းရစ်</language>
			<language type="mis">အမျိုးမျိုးသော ဘာသာစကား</language>
			<language type="mkh">မွန်-ခမာ ဘာသာစကား</language>
			<language type="ml">မလေးရာလမ်</language>
			<language type="mn">မွန်ဂိုလီးယန်း</language>
			<language type="mnc">မန်ချူး</language>
			<language type="mni">မနိပူရီ</language>
			<language type="mno">မနိုဘို ဘာသာစကား</language>
			<language type="mr">မာရသီ</language>
			<language type="ms">မလေး</language>
			<language type="mul">အကြိမ်များစွာ ဘာသာစကားများ</language>
			<language type="my">ဗမာ</language>
			<language type="nds">အနိမ့် ဂျာမန်</language>
			<language type="ne">နီပေါလ်</language>
			<language type="nl">ဒတ်ချ်</language>
			<language type="no">နော်ဝေး</language>
			<language type="pa">ပန်ဂျာပီ</language>
			<language type="paa">ပါပူရန် ဘာသာစကား</language>
			<language type="peo">ပါရှန် အဟောင်း</language>
			<language type="phi">ဖိလစ်ပိုင် ဘာသာစကား</language>
			<language type="pi">ပါဠိ</language>
			<language type="pl">ပိုလန်</language>
			<language type="pt">ပေါ်တူဂီ</language>
			<language type="pt_BR">ဘရာဇီး ပေါ်တူဂီ</language>
			<language type="ro">ရိုမေနီယား</language>
			<language type="root">မူလရင်းမြစ်</language>
			<language type="ru">ရုရှ</language>
			<language type="sa">သင်္သကရိုက်</language>
			<language type="sai">တောင် အမေရိကန် အိန္ဒြိယ ဘာသာစကား</language>
			<language type="sco">စကော့</language>
			<language type="sd">စင်ဒီ</language>
			<language type="sga">အိုင်းရစ် ဟောင်း</language>
			<language type="sgn">အချက်ပြ ဘာသာစကား</language>
			<language type="shn">ရှမ်း</language>
			<language type="si">ဆင်ဟာလ</language>
			<language type="sit">တရုတ်-တိဘက် ဘာသာစကား</language>
			<language type="sk">စလိုဗက်</language>
			<language type="sl">စလိုဗေးနီးယမ်း</language>
			<language type="sla">စလိုဗစ် ဘာသာစကား</language>
			<language type="sma">တောင်ပိုင်း ဆာမိ</language>
			<language type="smi">ဆာမိ ဘာသာစကား</language>
			<language type="so">ဆိုမာလီ</language>
			<language type="sq">အယ်လ်ဘေးနီးယန်း</language>
			<language type="sr">ဆားဗီးယန်း</language>
			<language type="su">ဆူဒန်</language>
			<language type="sv">ဆွီဒင်</language>
			<language type="ta">တမီးလ်</language>
			<language type="tai">တိုင် ဘာသာစကား</language>
			<language type="th">ထိုင်း</language>
			<language type="tup">တူပီ ဘာသာစကား</language>
			<language type="uk">ယူကရိန်း</language>
			<language type="und">မသိ သို့မဟုတ် မရှိ သော ဘာသာစကား</language>
			<language type="vi">ဗီယက်နမ်</language>
			<language type="zh">တရုတ်</language>
			<language type="zh_Hans">ရိုးရှင်းသော တရုတ်</language>
			<language type="zh_Hant">ရှေးရိုးစဉ်လာ တရုတ်</language>
			<language type="zu">ဇူလူ</language>
			<language type="zxx">ဘာသာစကား နှင့် ပတ်သက် သောအရာမရှိ</language>
		</languages>
		<scripts>
			<script type="Arab">အာရေဗျ</script>
			<script type="Armn">အာမေးနီးယား</script>
			<script type="Beng">ဘင်္ဂါလီ</script>
			<script type="Brah">ဗြဟ္မမီ</script>
			<script type="Cyrl">စစ်ရိလစ်</script>
			<script type="Deva">ဒီဗနာဂရီ</script>
			<script type="Ethi">အီသီယိုးပီးယား</script>
			<script type="Geor">ဂျော်ဂျီယန်</script>
			<script type="Grek">ဂရိ</script>
			<script type="Gujr">ဂုဂျာရသီ</script>
			<script type="Hang">ဟန်ဂူးလ်</script>
			<script type="Hani">ဟန်</script>
			<script type="Hans">ရိုးရှင်းသော တရုတ်</script>
			<script type="Hant">ရှေးရိုးစဉ်လာ တရုတ်</script>
			<script type="Hebr">ဟီဗရူး</script>
			<script type="Hira">ဟိရဂဏ</script>
			<script type="Hrkt">ခတခဏ သို့မဟုတ် ဟိရဂဏ</script>
			<script type="Java">ဂျာဗားနီးစ်</script>
			<script type="Jpan">ဂျပန်</script>
			<script type="Kali">ကယားလီ</script>
			<script type="Kana">ခတခဏ</script>
			<script type="Khmr">ခမာ</script>
			<script type="Kore">ကိုးရီးယား</script>
			<script type="Laoo">လာအို</script>
			<script type="Latn">လက်တင်</script>
			<script type="Mong">မွန်ဂိုလီးယား</script>
			<script type="Mymr">မြန်မာ</script>
			<script type="Sinh">ဆင်ဟာလ</script>
			<script type="Sund">ဆူဒန်</script>
			<script type="Tale">တိုင်လီ</script>
			<script type="Taml">တမီးလ်</script>
			<script type="Tglg">တဂလော့ဂ်</script>
			<script type="Thai">ထိုင်း</script>
			<script type="Tibt">တိဘက်</script>
			<script type="Visp">မြင်နိုင်သော စကား</script>
			<script type="Xpeo">ပါရှန် အဟောင်း</script>
			<script type="Yiii">ရီ</script>
			<script type="Zxxx">မရေးထားသော</script>
			<script type="Zzzz">မသိ သို့မဟုတ် မရှိသော စကားလုံး</script>
		</scripts>
		<territories>
			<territory type="001">ကမ္ဘာ</territory>
			<territory type="002">အာဖရိက</territory>
			<territory type="003">မြောက် အမေရိက</territory>
			<territory type="005">တောင် အမေရိက</territory>
			<territory type="009">သမုဒ္ဒရာဒေသ</territory>
			<territory type="011">အနောက် အာဖရိက</territory>
			<territory type="013">အလယ်ပိုင်း အမေရိက</territory>
			<territory type="014">အရှေ့ပိုင်း အာဖရိက</territory>
			<territory type="015">မြောက်ပိုင်း အာဖရိက</territory>
			<territory type="017">အလယ်ပိုင်း အာဖရိက</territory>
			<territory type="018">တောင်ပိုင်း အာဖရိက</territory>
			<territory type="019">အမေရိကများ</territory>
			<territory type="021">မြောက်ပိုင်း အမေရိက</territory>
			<territory type="029">ကာရီဘီယံ</territory>
			<territory type="030">အရှေ့ပိုင်း အာရှ</territory>
			<territory type="034">တောင်ပိုင်း အာရှ</territory>
			<territory type="035">အ‌ရှေ့တောင်ပိုင်း အာရှ</territory>
			<territory type="039">တောင်ပိုင်း ဥရောပ</territory>
			<territory type="053">ဩစတြေးလျှ နှင့် နယူးဇီလန်</territory>
			<territory type="062">တောင်-အလယ် အာရှ</territory>
			<territory type="142">အာရှ</territory>
			<territory type="143">အလယ် အာရှ</territory>
			<territory type="145">အနောက် အာရှ</territory>
			<territory type="150">ဥရောပ</territory>
			<territory type="151">အရှေ့ပိုင်း ဥရောပ</territory>
			<territory type="154">မြောက်ပိုင်း ဥရောပ</territory>
			<territory type="155">အနောက်ပိုင်း ဥရောပ</territory>
			<territory type="172">လွတ်လပ်သော ပြည်ထောင်စုများ၏ ဓနသဟာယအဖွဲ့</territory>
			<territory type="419">လက်တင် အမေရိက နှင့် ကာရီဘီယန်</territory>
			<territory type="AE">ယူအေအီး</territory>
			<territory type="AF">အာဖဂန်နစ္စတန်</territory>
			<territory type="AI">အန်ကွီလာ</territory>
			<territory type="AM">အာမေနီးယား</territory>
			<territory type="AO">အင်ဂိုလာ</territory>
			<territory type="AQ">အန္တာတိက</territory>
			<territory type="AR">အာဂျင်တီးနား</territory>
			<territory type="AS">အမေရိကန် စမိုအ</territory>
			<territory type="AT">ဩစတြီးယား</territory>
			<territory type="AU">ဩစတြေးလျှား</territory>
			<territory type="AZ">အဇာဘိုင်ဂျန်</territory>
			<territory type="BA">ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနား</territory>
			<territory type="BD">ဘင်္ဂလားဒေ့ရှ်</territory>
			<territory type="BE">ဘယ်လ်ဂျီယမ်</territory>
			<territory type="BG">ဘူဂေးရီးယား</territory>
			<territory type="BH">ဘာရိန်း</territory>
			<territory type="BM">ဘာမူဒါ</territory>
			<territory type="BN">ဘရူနိုင်း</territory>
			<territory type="BO">ဘိုလီးဘီးယား</territory>
			<territory type="BR">ဘရာဇီး</territory>
			<territory type="BS">ဘဟားမား</territory>
			<territory type="BT">ဘူတန်</territory>
			<territory type="BW">ဘော့စ်ဝါနာ</territory>
			<territory type="BY">ဘီလာရုစ်</territory>
			<territory type="BZ">ဘေလီဇ်</territory>
			<territory type="CA">ကနေဒါ</territory>
			<territory type="CC">ကိုကိုး ကျွန်းစု</territory>
			<territory type="CF">အလယ်ပိုင်း အာဖရိက ပြည်ထောင်စု</territory>
			<territory type="CH">ဆွစ်ဇလန်</territory>
			<territory type="CI">အိုင်ဗရီကိုစ့်</territory>
			<territory type="CK">ကွတ် ကျွန်းစု</territory>
			<territory type="CL">ချီလီ</territory>
			<territory type="CM">ကင်မရွန်း</territory>
			<territory type="CN">တရုတ်</territory>
			<territory type="CO">ကိုလံဘီယာ</territory>
			<territory type="CR">ကော့စ်တာရီကာ</territory>
			<territory type="CU">ကျူးဘား</territory>
			<territory type="CX">ခရစ်စမတ် ကျွန်း</territory>
			<territory type="CY">ဆိုက်ပရက်စ်</territory>
			<territory type="CZ">ချက် ပြည်ထောင်စု</territory>
			<territory type="DE">ဂျာမဏီ</territory>
			<territory type="DK">ဒိန်းမတ်</territory>
			<territory type="DM">ဒိုမီနီကာ</territory>
			<territory type="DO">ဒိုမီနီကန်</territory>
			<territory type="DZ">အယ်လ်ဂျီးရီးယား</territory>
			<territory type="EC">အီကွေဒေါ</territory>
			<territory type="EE">အက်စတိုးနီးယား</territory>
			<territory type="EG">အီဂျစ်</territory>
			<territory type="EH">အနောက်ပိုင်း ဆာဟာရ</territory>
			<territory type="ES">စပိန်</territory>
			<territory type="ET">အီသီယိုးပီးယား</territory>
			<territory type="FI">ဖင်လန်</territory>
			<territory type="FJ">ဖီဂျီ</territory>
			<territory type="FK">ဖောက်ကလန် ကျွန်းစု</territory>
			<territory type="FO">ဖာရိုး ကျွန်းစုများ</territory>
			<territory type="FR">ပြင်သစ်</territory>
			<territory type="GB">ယူနိုက်တက်ကင်းဒမ်း</territory>
			<territory type="GE">ဂျော်ဂျီယာ</territory>
			<territory type="GF">ပြင်သစ် ဂီယာနာ</territory>
			<territory type="GH">ဂါနာ</territory>
			<territory type="GI">ဂျီဘရော်လ်တာ</territory>
			<territory type="GL">ဂရင်းလန်း</territory>
			<territory type="GM">ဂန်ဘီရာ</territory>
			<territory type="GN">ဂီရာနာ</territory>
			<territory type="GQ">အီကွေတာ ဂီရာနာ</territory>
			<territory type="GR">ဂရိ</territory>
			<territory type="GS">တောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများ</territory>
			<territory type="GT">ဂွာတီမာလာ</territory>
			<territory type="GU">ဂူအမ်</territory>
			<territory type="HK">ဟောင်ကောင်</territory>
			<territory type="HN">ဟွန်ဒူးရပ်စ်</territory>
			<territory type="HR">ခရိုအေးရှား</territory>
			<territory type="HT">ဟေတီ</territory>
			<territory type="HU">ဟန်ဂေရီ</territory>
			<territory type="ID">အင်ဒိုနီးရှား</territory>
			<territory type="IE">အိုင်ယာလန်</territory>
			<territory type="IL">အစ္စရေး</territory>
			<territory type="IN">အိန္ဒိယ</territory>
			<territory type="IO">ဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်</territory>
			<territory type="IQ">အီရတ်</territory>
			<territory type="IR">အီရန်</territory>
			<territory type="IS">အိုက်စလန်</territory>
			<territory type="IT">အီတလီ</territory>
			<territory type="JE">ဂျာစီ</territory>
			<territory type="JM">ဂျမေနီကာ</territory>
			<territory type="JO">ဂျော်ဒန်</territory>
			<territory type="JP">ဂျပန်</territory>
			<territory type="KE">ကင်ညာ</territory>
			<territory type="KG">ခယ်ကစ်စတန်</territory>
			<territory type="KH">ကမ္ဘောဒီးယား</territory>
			<territory type="KP">မြောက်ကိုရီးယား</territory>
			<territory type="KR">တောင်ကိုရီးယား</territory>
			<territory type="KW">ကူဝိတ်</territory>
			<territory type="KY">ကေမန် ကျွန်းစု</territory>
			<territory type="KZ">ကာဇက်စတန်</territory>
			<territory type="LA">လာအို</territory>
			<territory type="LB">လက်ဘနွန်</territory>
			<territory type="LK">သီရိလင်္ကာ</territory>
			<territory type="LR">လိုင်ဘေးရီးယား</territory>
			<territory type="LT">လစ်သူယေးနီးယား</territory>
			<territory type="LU">လူဇင်ဘတ်</territory>
			<territory type="LV">လတ်ဗီးယား</territory>
			<territory type="MA">မော်ရိုကို</territory>
			<territory type="MC">မိုနကို</territory>
			<territory type="ME">မွန်တီနိဂရိုး</territory>
			<territory type="MF">စိန့်မာတင်</territory>
			<territory type="MG">မဒဂတ်စကာ</territory>
			<territory type="MH">မာရှယ် ကျွန်းစု</territory>
			<territory type="MK">မာစီဒိုးနီးယား</territory>
			<territory type="ML">မာလီ</territory>
			<territory type="MM">မြန်မာ</territory>
			<territory type="MN">မွန်ဂိုးလီးယား</territory>
			<territory type="MO">မကာအို</territory>
			<territory type="MV">မော်လဒိုက်</territory>
			<territory type="MW">မာလာဝီ</territory>
			<territory type="MX">မက္ကဆီကို</territory>
			<territory type="MY">မလေးရှား</territory>
			<territory type="MZ">မိုဇန်ဘစ်</territory>
			<territory type="NA">နမ်မီးဘီးယား</territory>
			<territory type="NC">နယူး ကယ်လီဒိုနီးယား</territory>
			<territory type="NE">နိုင်ဂျာ</territory>
			<territory type="NG">နိုင်ဂျီးရီးယား</territory>
			<territory type="NI">နီကာရာဂွာ</territory>
			<territory type="NL">နယ်သာလန်</territory>
			<territory type="NO">နော်ဝေ</territory>
			<territory type="NP">နီပေါ</territory>
			<territory type="NZ">နယူးဇီလန်</territory>
			<territory type="OM">အိုမန်</territory>
			<territory type="PA">ပနားမား</territory>
			<territory type="PE">ပီရူး</territory>
			<territory type="PF">ပြင်သစ် ပေါ်လီနေးရှား</territory>
			<territory type="PG">ပါပူရာနယူးဂီနီ</territory>
			<territory type="PH">ဖိလစ်ပိုင်</territory>
			<territory type="PK">ပါကစ္စတန်</territory>
			<territory type="PL">ပိုလန်</territory>
			<territory type="PR">ပေါ်တူရီကို</territory>
			<territory type="PS">ပါလက်စတိုင်း ပိုင်နက်</territory>
			<territory type="PT">ပေါ်တူဂီ</territory>
			<territory type="PY">ပါရာဂွေး</territory>
			<territory type="QA">ကာတာ</territory>
			<territory type="QU">ဥရောပသမဂ္ဂ</territory>
			<territory type="RO">ရိုမေးနီးယား</territory>
			<territory type="RS">ဆားဘီးယား</territory>
			<territory type="RU">ရုရှ</territory>
			<territory type="RW">ရဝန်ဒါ</territory>
			<territory type="SA">ဆော်ဒီအာရေးဗီးယား</territory>
			<territory type="SB">ဆော်လမွန်ကျွန်းစု</territory>
			<territory type="SD">ဆူဒန်</territory>
			<territory type="SE">ဆွီဒင်</territory>
			<territory type="SG">စင်္ကာပူ</territory>
			<territory type="SI">စလိုဗေးနီးယား</territory>
			<territory type="SK">စလိုဗေးကီးယား</territory>
			<territory type="SN">ဆီနီဂေါ</territory>
			<territory type="SO">ဆိုမာလီယာ</territory>
			<territory type="SV">အယ်လ်ဆာဗေးဒိုး</territory>
			<territory type="SY">ဆီးရီးယား</territory>
			<territory type="TD">ချဒ်</territory>
			<territory type="TF">ပြင်သစ် တောင်ပိုင်း ပိုင်နက်များ</territory>
			<territory type="TH">ထိုင်း</territory>
			<territory type="TJ">တာဂျီကစ္စတန်</territory>
			<territory type="TL">အရှေ့တီမော</territory>
			<territory type="TN">တူနီးရှား</territory>
			<territory type="TO">တွန်ဂါ</territory>
			<territory type="TR">တူရကီ</territory>
			<territory type="TW">ထိုင်ဝမ်</territory>
			<territory type="TZ">တန်ဇန်နီးယား</territory>
			<territory type="UA">ယူကရိန်း</territory>
			<territory type="UG">ယူဂန္ဒာ</territory>
			<territory type="UM">ယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများ</territory>
			<territory type="US">ယူနိုက်တက်စတိတ်</territory>
			<territory type="UY">ဥရုဂွေး</territory>
			<territory type="UZ">ဥဘက်ကစ္စတန်</territory>
			<territory type="VA">ဗာတီကန်</territory>
			<territory type="VE">ဗင်နီဇွဲလား</territory>
			<territory type="VG">ဗြိတိသျှ ဗာဂျင်း ကျွန်းစု</territory>
			<territory type="VI">ယူအက်စ် ဗာဂျင်း ကျွန်းစု</territory>
			<territory type="VN">ဗီယက်နမ်</territory>
			<territory type="YE">ယီမင်</territory>
			<territory type="ZA">တောင်အာဖရိက</territory>
			<territory type="ZM">ဇမ်ဘီယာ</territory>
			<territory type="ZW">ဇင်ဘာဘွေ</territory>
			<territory type="ZZ">မသိ သို့မဟုတ် မရှိ သော နေရာ</territory>
		</territories>
		<variants>
			<variant type="1901">ရှေးရိုးစဉ်လာ ဂျာမန် ရေးထုံး</variant>
			<variant type="1996">၁၉၉၆ ဂျာမန် ရေးထုံး</variant>
			<variant type="1606NICT">အလယ်ပိုင်းနောက်ကျသောပြင်သစ်မှ ၁၆၀၆</variant>
			<variant type="1694ACAD">၁၆၉၄ACAD</variant>
			<variant type="AREVELA">အရှေ့ပိုင်းအာမေးနီးယန်း</variant>
			<variant type="BAKU1926">ပေါင်းစပ်ထားသော တူရကီ လက်တင်စကားလုံး</variant>
			<variant type="FONIPA">IPA အသံထွက်</variant>
			<variant type="FONUPA">UPA အသံထွက်</variant>
			<variant type="POSIX">ကွန်ပျူတာ</variant>
			<variant type="REVISED">ပြန်လည်စီစစ်ထားသော ရေးထုံး</variant>
			<variant type="SCOTLAND">စကော့ စံ အင်္ဂလိပ်</variant>
		</variants>
		<keys>
			<key type="calendar">ပြက္ခဒိန်</key>
			<key type="collation">စနစ်တကျစီသော</key>
			<key type="currency">ငွေကြေး</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">ဗုဒ္ဓ ပြက္ခဒိန်</type>
			<type type="chinese" key="calendar">တရုတ် ပြက္ခဒိန်</type>
			<type type="direct" key="collation">တိုက်ရိုက်အစဉ်</type>
			<type type="gregorian" key="calendar">နိုင်ငံတကာသုံး ပြက္ခဒိန်</type>
			<type type="hebrew" key="calendar">ဟီဗရူး ပြက္ခဒိန်</type>
			<type type="indian" key="calendar">အိန္ဒြိယ အမျိုးသား ပြက္ခဒိန်</type>
			<type type="islamic" key="calendar">အစ္စလာမ် ပြက္ခဒိန်</type>
			<type type="japanese" key="calendar">ဂျပန် ပြက္ခဒိန်</type>
			<type type="phonebook" key="collation">ဖုန်းစာအုပ် အစီအစဉ်</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">အမေရိကန်စနစ်</measurementSystemName>
			<measurementSystemName type="metric">မက်ထရစ်စနစ်</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">ဘာသာစကား - {0}</codePattern>
			<codePattern type="script">စာ - {0}</codePattern>
			<codePattern type="territory">နယ်ပယ်ဒေသ - {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[က-အ ဣ-ဧ ဩ ဪ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ံ-း ျ-ှ ာ ါ ိ-ဲ ္ ်]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="coptic">
				<am>နံနက်</am>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ဇန်</month>
							<month type="2">ဖေ</month>
							<month type="3">မတ်</month>
							<month type="4">ဧ</month>
							<month type="5">မေ</month>
							<month type="6">ဇွန်</month>
							<month type="7">ဇူ</month>
							<month type="8">ဩ</month>
							<month type="9">စက်</month>
							<month type="10">အောက်</month>
							<month type="11">နို</month>
							<month type="12">ဒီ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ဇန်နဝါရီ</month>
							<month type="2">ဖေဖော်ဝါရီ</month>
							<month type="3">မတ်</month>
							<month type="4">ဧပြီ</month>
							<month type="5">မေ</month>
							<month type="6">ဇွန်</month>
							<month type="7">ဇူလိုင်</month>
							<month type="8">ဩဂုတ်</month>
							<month type="9">စက်တင်ဘာ</month>
							<month type="10">အောက်တိုဘာ</month>
							<month type="11">နိုဝင်ဘာ</month>
							<month type="12">ဒီဇင်ဘာ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ဇ</month>
							<month type="2">ဖ</month>
							<month type="3">မ</month>
							<month type="4">ဧ</month>
							<month type="5">မ</month>
							<month type="6">ဇ</month>
							<month type="7">ဇ</month>
							<month type="8">ဩ</month>
							<month type="9">စ</month>
							<month type="10">အ</month>
							<month type="11">န</month>
							<month type="12">ဒ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">နွေ</day>
							<day type="mon">လာ</day>
							<day type="tue">ဂါ</day>
							<day type="wed">ဟူး</day>
							<day type="thu">တေး</day>
							<day type="fri">ကြာ</day>
							<day type="sat">နေ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">တနင်္ဂနွေ</day>
							<day type="mon">တနင်္လာ</day>
							<day type="tue">အင်္ဂါ</day>
							<day type="wed">ဗုဒ္ဓဟူး</day>
							<day type="thu">ကြာသပတေး</day>
							<day type="fri">သောကြာ</day>
							<day type="sat">စနေ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">တ</day>
							<day type="mon">တ</day>
							<day type="tue">အ</day>
							<day type="wed">ဗ</day>
							<day type="thu">က</day>
							<day type="fri">သ</day>
							<day type="sat">စ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">ပ-စိတ်</quarter>
							<quarter type="2">ဒု-စိတ်</quarter>
							<quarter type="3">တ-စိတ်</quarter>
							<quarter type="4">စ-စိတ်</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ပထမ သုံးလပတ်</quarter>
							<quarter type="2">ဒုတိယ သုံးလပတ်</quarter>
							<quarter type="3">တတိယ သုံးလပတ်</quarter>
							<quarter type="4">စတုတ္ထ သုံးလပတ်</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<quarter type="1">ပ-စိတ်</quarter>
							<quarter type="2">ဒု-စိတ်</quarter>
							<quarter type="3">တ-စိတ်</quarter>
							<quarter type="4">စ-စိတ်</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">ပ</quarter>
							<quarter type="2">ဒု</quarter>
							<quarter type="3">တ</quarter>
							<quarter type="4">စ</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ပထမ သုံးလပတ်</quarter>
							<quarter type="2">ဒုတိယ သုံးလပတ်</quarter>
							<quarter type="3">တတိယ သုံးလပတ်</quarter>
							<quarter type="4">စတုတ္ထ သုံးလပတ်</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>နံနက်</am>
				<pm>ညနေ</pm>
				<eras>
					<eraNames>
						<era type="0">ခရစ်တော် မပေါ်မီကာလ</era>
						<era type="1">ခရစ်တော် ပေါ်ထွန်းပြီးကာလ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ဘီစီ</era>
						<era type="1">အေဒီ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">EEEE၊ d/M – EEEE၊ d/M</greatestDifference>
							<greatestDifference id="d">EEEE၊ d/M – EEEE၊ d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MMM d၊ EEEE – MMM d၊ EEEE</greatestDifference>
							<greatestDifference id="d">MMM d၊ EEEE – MMM d၊ EEEE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M – d/M</greatestDifference>
							<greatestDifference id="d">d/M – d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">EEEE၊ d/M/yy – EEEE၊ d/M/yy</greatestDifference>
							<greatestDifference id="d">EEEE၊ d/M/yy – EEEE၊ d/M/yy</greatestDifference>
							<greatestDifference id="y">EEEE၊ d-M-yyyy – EEEE၊ d-M-yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy၊ MMM d၊ EEEE – MMM d၊ EEEE</greatestDifference>
							<greatestDifference id="d">yyyy၊ MMM d၊ EEEE – MMM d၊ EEEE</greatestDifference>
							<greatestDifference id="y">yyyy၊ MMM d၊ EEEE – yyyy၊ MMM d၊ EEEE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy၊ MMM d – MMM d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d – yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="d">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy – d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ခေတ်</displayName>
					</field>
					<field type="year">
						<displayName>နှစ်</displayName>
					</field>
					<field type="month">
						<displayName>လ</displayName>
					</field>
					<field type="week">
						<displayName>ပတ်</displayName>
					</field>
					<field type="day">
						<displayName>ရက်</displayName>
						<relative type="0">ယနေ့</relative>
						<relative type="1">မနက်ဖြန်</relative>
						<relative type="2">သဘက်ခါ</relative>
						<relative type="-1">မနေ့က</relative>
						<relative type="-2">တနေ့က</relative>
					</field>
					<field type="weekday">
						<displayName>နေ့</displayName>
					</field>
					<field type="dayperiod">
						<displayName>နံနက်/ညနေ</displayName>
					</field>
					<field type="hour">
						<displayName>နာရီ</displayName>
					</field>
					<field type="minute">
						<displayName>မိနစ်</displayName>
					</field>
					<field type="second">
						<displayName>စက္ကန့်</displayName>
					</field>
					<field type="zone">
						<displayName>ဇုန်</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} အချိန်</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>မသိသော</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>ရီယို ဗြန်ကို</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>ကိမ်ပို ဂရန်ဒ</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>ဆာပိုလို</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>ဟိုနိုလူလူ</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>အန်ကာရေ့ဂျ်</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>လော့စ်အိန်ဂျယ်လိစ်</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ဖီးနစ်</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>ဒင်ဗာ</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>ချီကာကို</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>အင်ဒီယားနားပိုလစ်</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>နယူးယောက်</exemplarCity>
			</zone>
			<metazone type="Afghanistan">
				<long>
					<standard>အာဖဂန်နစ္စတန် အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>အလယ်ပိုင်း အာဖရိက အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>အရှေ့ပိုင်း အာဖရိက အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>တောင်အာဖရိက အချိန်</generic>
					<standard>တောင်အာဖရိက စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>အနောက်ပိုင်း အာဖရိက အချိန်</standard>
					<daylight>အနောက်ပိုင်း အာဖရိက နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>အလယ်ပိုင်း အမေရိက အချိန်</generic>
					<standard>အလယ်ပိုင်း အမေရိက စံတော်ချိန်</standard>
					<daylight>အလယ်ပိုင်း အမေရိက နွေရာသီ အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>အရှေ့ပိုင်း အမေရိက အချိန်</generic>
					<standard>အရှေ့ပိုင်း အမေရိက စံတော်ချိန်</standard>
					<daylight>အရှေ့ပိုင်း အမေရိက အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>အမေရိက တောင် အချိန်</generic>
					<standard>အမေရိက တောင် စံတော်ချိန်</standard>
					<daylight>အမေရိက တောင် နေ့ပိုင်း အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>ပစိဖိတ် အချိန်</generic>
					<standard>ပစိဖိတ် စံတော်ချိန်</standard>
					<daylight>ပစိဖိတ် နေ့ပိုင်း အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>အာရေဗျ အချိန်</generic>
					<standard>အာရေဗျ စံတော်ချိန်</standard>
					<daylight>အာရေဗျ နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>အာဂျင်တီးနား အချိန်</standard>
					<daylight>အာဂျင်တီးနား နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>အနောက် အာဂျင်တီးနား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>အာမေနီးယား အချိန်</standard>
					<daylight>အာမေနီးယား နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>အတ္ထလန်တစ် အချိန်</generic>
					<standard>အတ္ထလန်တစ် စံတော်ချိန်</standard>
					<daylight>အတ္ထလန်တစ် နေ့ပိုင်း အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>အလယ်ဩစတြေးလျှား အချိန်</generic>
					<standard>အလယ်ပိုင်း ဩစတြေးလျှား စံတော်ချိန်</standard>
					<daylight>အလယ်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>အလယ်အနောက်ပိုင်း ဩစတြေးလျှား အချိန်</generic>
					<standard>အလယ်အနောက်ပိုင်း ဩစတြေးလျှား စံတော်ချိန်</standard>
					<daylight>အလယ်အနောက်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>အရှေ့ဩစတြေးလျှား အချိန်</generic>
					<standard>အရှေ့ပိုင်း ဩစတြေးလျှား စံတော်ချိန်</standard>
					<daylight>အရှေ့ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>အနောက် ဩစတြေးလျှား အချိန်</generic>
					<standard>အနောက်ပိုင်း ဩစတြေးလျှား စံတော်ချိန်</standard>
					<daylight>အနောက်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>အဇာဘိုင်ဂျန် အချိန်</standard>
					<daylight>အဇာဘိုင်ဂျန် နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>ဘင်္ဂလားဒေ့ရှ် အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>ဘူတန် အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>ဘိုလီးဘီးယား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>ဘရာဇီး အချိန်</standard>
					<daylight>ဘရာဇီး နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="British">
				<long>
					<generic>ဗြိတိသျှ အချိန်</generic>
					<daylight>ဗြိတိသျှ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>ဘရူနိုင်း စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>ချီလီ အချိန်</standard>
					<daylight>ချီလီ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>တရုတ် အချိန်</generic>
					<standard>တရုတ် စံတော်ချိန်</standard>
					<daylight>တရုတ် နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>ကိုလံဘီယာ အချိန်</standard>
					<daylight>ကိုလံဘီယာ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>ကျူးဘား အချိန်</generic>
					<standard>ကျူးဘား စံတော်ချိန်</standard>
					<daylight>ကျူးဘား နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>ဒတ်ချ် ဂီယာနာ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>အရှေ့တီမော အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>အီကွေဒေါ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<generic>ပြင်သစ် အချိန်</generic>
					<standard>ဥရောပ အလယ်ပိုင်း အချိန်</standard>
					<daylight>ဥရောပ အလယ်ပိုင်း နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<generic>ရိုမေးနီးယား အချိန်</generic>
					<standard>အရှေ့ဥရောပ အချိန်</standard>
					<daylight>အရှေ့ဥရောပ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>အနောက်ပိုင်း ဥရောပ အချိန်</standard>
					<daylight>အနောက်ပိုင်း ဥရောပ နွေရာသီ အချိန်</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>ဖောင်ကလန်ကျွန်းစု အချိန်</standard>
					<daylight>ဖောင်ကလန်ကျွန်းစု နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>ပြင်သစ် ဂီယာနာ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>ဂရင်းနစ် စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>ဂျော်ဂျီယာ အချိန်</standard>
					<daylight>ဂျော်ဂျီယာ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>အလယ်ဂရင်းလန်း အချိန်</standard>
					<daylight>အလယ်ဂရင်းလန်း နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>အရှေ့ဂရင်းလန်း အချိန်</standard>
					<daylight>အရှေ့ဂရင်းလန်း နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>အနောက် ဂရင်းလန်း အချိန်</standard>
					<daylight>အနောက် ဂရင်းလန်း နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>ပင်လယ်ဂွေ့ အချိန်</generic>
					<standard>ပင်လယ်ဂွေ့ စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>ဟောင်ကောင် အချိန်</standard>
					<daylight>ဟောင်ကောင် နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>အိန္ဒြိယ စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>အိန္ဒြိယ သမုဒ္ဒရာ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>အင်ဒိုချိုင်းနား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>အလယ်ပိုင်း အင်ဒိုနီးရှား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>အရှေ့ပိုင်း အင်ဒိုနီးရှား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>အနောက်ပိုင်း အင်ဒိုနီးရှား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>အီရန် စံတော်ချိန်</standard>
					<daylight>အီရန် နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Irish">
				<long>
					<generic>အိုင်ယာလန် အချိန်</generic>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>အစ္စရေး အချိန်</generic>
					<standard>အစ္စရေး စံတော်ချိန်</standard>
					<daylight>အစ္စရေး နေ့ပိုင်း အချိန်</daylight>
				</long>
				<short>
					<standard>IST (အစ္စရေး)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>ဂျပန် အချိန်</generic>
					<standard>ဂျပန် စံတော်ချိန်</standard>
					<daylight>ဂျပန် နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>အရှေ့ကာဇက်စတန် အချိန်</generic>
					<standard>အရှေ့ကာဇက်စတန် စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>ကိုးရီးယား အချိန်</generic>
					<standard>ကိုးရီးယား စံတော်ချိန်</standard>
					<daylight>ကိုးရီးယား နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>သီရိလင်္ကာ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>မကာအို အချိန်</standard>
					<daylight>မကာအို နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>မလေးရှား အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>မော်စကို အချိန်</generic>
					<standard>မော်စကို စံတော်ချိန်</standard>
					<daylight>မော်စကို နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>မြန်မာ အချိန်</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>နီပေါ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>နယူးဇီလန် အချိန်</generic>
					<standard>နယူးဇီလန် စံတော်ချိန်</standard>
					<daylight>နယူးဇီလန် နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>နယူးဖောင်လန် အချိန်</generic>
					<standard>နယူးဖောင်လန် စံတော်ချိန်</standard>
					<daylight>နယူးဖောင်လန် နေ့ပိုင်း အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>ပါကစ္စတန် အချိန်</standard>
					<daylight>ပါကစ္စတန် နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>ပါပူရာနယူးဂီနီ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>ပါရာဂွေး အချိန်</standard>
					<daylight>ပါရာဂွေး နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>ပီရူး အချိန်</standard>
					<daylight>ပီရူး နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>ဖိလစ်ပိုင် အချိန်</standard>
					<daylight>ဖိလစ်ပိုင် နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>စင်္ကာပူ စံတော်ချိန်</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>တောင်ဂျော်ဂျီယာ အချိန်</standard>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>တူရကီ စံတော်ချိန် အချိန်</standard>
					<daylight>တူရကီ နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>ဥရုဂွေး အချိန်</standard>
					<daylight>ဥရုဂွေး နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>ဥဘက်ကစ္စတန် အချိန်</standard>
					<daylight>ဥဘက်ကစ္စတန် နွေရာသီ အချိန်</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>ဗင်နီဇွဲလား အချိန်</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>၊</list>
			<nativeZeroDigit>၀</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ANG">
				<displayName>နယ်သာလန် အန်တီလန် ဂင်းဒါး</displayName>
			</currency>
			<currency type="ARP">
				<displayName>အာဂျင်တီးနား ပီဆို (၁၉၈၃-၁၉၈၅)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>အာဂျင်တီးနား ပီဆို</displayName>
			</currency>
			<currency type="AUD">
				<displayName>ဩစတြေးလျှား ဒေါ်လာ</displayName>
			</currency>
			<currency type="AWG">
				<displayName>အရူဘန် ဂင်းဒါး</displayName>
			</currency>
			<currency type="BDT">
				<displayName>ဘင်္ဂလားဒေ့ရှ် တာကာ</displayName>
			</currency>
			<currency type="BEF">
				<displayName>ဘယ်လ်ဂျီယမ် ဖရန့်</displayName>
			</currency>
			<currency type="BIF">
				<displayName>ဘူရွန်ဒီ ဖရန့်</displayName>
			</currency>
			<currency type="BMD">
				<displayName>ဘာမူဒါ ဒေါ်လာ</displayName>
			</currency>
			<currency type="BND">
				<displayName>ဘရူနိုင်း ဒေါ်လာ</displayName>
			</currency>
			<currency type="BOP">
				<displayName>ဘိုလီးဘီးယား ပီဆို</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ဘရာဇီး ရီးယဲ</displayName>
			</currency>
			<currency type="BSD">
				<displayName>ဘဟားမား ဒေါ်လာ</displayName>
			</currency>
			<currency type="BUK">
				<displayName>ဗမာ ကျပ်</displayName>
			</currency>
			<currency type="BWP">
				<displayName>ဘော့စ်ဝါနာ ပုလ</displayName>
			</currency>
			<currency type="BYB">
				<displayName>ဘီလာရုစ် ရူဘယ်အသစ် (၁၉၉၄-၁၉၉၉)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>ဘီလာရုစ် ရူဘယ်</displayName>
			</currency>
			<currency type="BZD">
				<displayName>ဘေလီဇ် ဒေါ်လာ</displayName>
			</currency>
			<currency type="CAD">
				<displayName>ကနေဒါ ဒေါ်လာ</displayName>
			</currency>
			<currency type="CHF">
				<displayName>ဆွစ် ဖရန့်</displayName>
			</currency>
			<currency type="CLP">
				<displayName>ချီလီ ပီဆို</displayName>
			</currency>
			<currency type="CNY">
				<displayName>တရုတ် ယွမ်</displayName>
			</currency>
			<currency type="COP">
				<displayName>ကိုလံဘီယာ ပီဆို</displayName>
			</currency>
			<currency type="CUP">
				<displayName>ကျူးဘား ပီဆို</displayName>
			</currency>
			<currency type="CYP">
				<displayName>ဆိုက်ပရက်စ် ပေါင်</displayName>
			</currency>
			<currency type="DEM">
				<displayName>ဂျာမဏီ မတ်</displayName>
			</currency>
			<currency type="DKK">
				<displayName>ဒိန်းမတ် ခရိုဏာ</displayName>
			</currency>
			<currency type="DOP">
				<displayName>ဒိုမီနီကန် ပီဆို</displayName>
			</currency>
			<currency type="EGP">
				<displayName>အီဂျစ် ပေါင်</displayName>
			</currency>
			<currency type="ESP">
				<displayName>စပိန် ပယ်စေးတာ</displayName>
			</currency>
			<currency type="EUR">
				<displayName>ယူရို</displayName>
			</currency>
			<currency type="FJD">
				<displayName>ဖီဂျီ ဒေါ်လာ</displayName>
			</currency>
			<currency type="FKP">
				<displayName>ဖောက်ကလန် ကျွန်းစု ပေါင်</displayName>
			</currency>
			<currency type="FRF">
				<displayName>ပြင်သစ် ဖရန့်</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ဗြိတိသျှ ပေါင်</displayName>
			</currency>
			<currency type="GIP">
				<displayName>ဂျီဘရော်လ်တာ ပေါင်</displayName>
			</currency>
			<currency type="GNF">
				<displayName>ဂီရာနာ ဖရန့်</displayName>
			</currency>
			<currency type="HKD">
				<displayName>ဟောင်ကောင် ဒေါ်လာ</displayName>
			</currency>
			<currency type="IDR">
				<displayName>အင်ဒိုနီးရှား ရူပီးယား</displayName>
			</currency>
			<currency type="ILP">
				<displayName>အစ္စရေး ပေါင်</displayName>
			</currency>
			<currency type="INR">
				<displayName>အိန္ဒြိယ ရူပီး</displayName>
			</currency>
			<currency type="JMD">
				<displayName>ဂျမေနီကာ ဒေါ်လာ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>ဂျပန်ယန်း</displayName>
			</currency>
			<currency type="KHR">
				<displayName>ကမ္ဘောဒီးယား ရီးယဲ</displayName>
			</currency>
			<currency type="KPW">
				<displayName>မြောက်ကိုးရီးယား ဝမ်</displayName>
			</currency>
			<currency type="KRW">
				<displayName>တောင်ကိုးရီးယား ဝမ်</displayName>
			</currency>
			<currency type="KYD">
				<displayName>ကေမန် ကျွန်းစု ဒေါ်လာ</displayName>
			</currency>
			<currency type="LBP">
				<displayName>လက်ဘနွန် ပေါင်</displayName>
			</currency>
			<currency type="LKR">
				<displayName>သီရိလင်္ကာ ရူပီး</displayName>
			</currency>
			<currency type="LRD">
				<displayName>လိုင်ဘေးရီးယား ဒေါ်လာ</displayName>
			</currency>
			<currency type="MMK">
				<displayName>မြန်မာ ကျပ်</displayName>
				<symbol>K</symbol>
			</currency>
			<currency type="MXN">
				<displayName>မက္ကဆီကို ပီဆို</displayName>
			</currency>
			<currency type="MYR">
				<displayName>မလေးရှား ရင်းဂစ်</displayName>
			</currency>
			<currency type="NAD">
				<displayName>နမ်မီးဘီးယား ဒေါ်လာ</displayName>
			</currency>
			<currency type="NOK">
				<displayName>နော်ဝေ ခရိုဏာ</displayName>
			</currency>
			<currency type="NPR">
				<displayName>နီပေါ ရူပီး</displayName>
			</currency>
			<currency type="NZD">
				<displayName>နယူးဇီလန် ဒေါ်လာ</displayName>
			</currency>
			<currency type="PHP">
				<displayName>ဖိလစ်ပိုင် ပီဆို</displayName>
			</currency>
			<currency type="PKR">
				<displayName>ပါကစ္စတန် ရူပီး</displayName>
			</currency>
			<currency type="PLN">
				<displayName>ပိုလန် ဇ‌လော့တီ</displayName>
			</currency>
			<currency type="RUB">
				<displayName>ရုရှ ရူဘယ်</displayName>
			</currency>
			<currency type="RUR">
				<displayName>ရုရှ ရူဘယ် (၁၉၉၁-၁၉၉၈)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>ရဝန်ဒါ ဖရန့်</displayName>
			</currency>
			<currency type="SBD">
				<displayName>ဆော်လမွန်ကျွန်းစု ဒေါ်လာ</displayName>
			</currency>
			<currency type="SDG">
				<displayName>ဆူဒန် ပေါင်</displayName>
			</currency>
			<currency type="SDP">
				<displayName>ဆူဒန် ပေါင်အဟောင်း</displayName>
			</currency>
			<currency type="SEK">
				<displayName>ဆွီဒင် ခရိုဏာ</displayName>
			</currency>
			<currency type="SGD">
				<displayName>စင်္ကာပူ ဒေါ်လာ</displayName>
			</currency>
			<currency type="SRD">
				<displayName>ဆူရိနမ် ဒေါ်လာ</displayName>
			</currency>
			<currency type="SUR">
				<displayName>ဆိုဗီယက် ရူဗယ်</displayName>
			</currency>
			<currency type="THB">
				<displayName>ထိုင်းဘတ်</displayName>
			</currency>
			<currency type="TRL">
				<displayName>ရှေးဟောင်းတူရကီ လိုင်ရာ</displayName>
			</currency>
			<currency type="TRY">
				<displayName>တူရကီ လိုင်ရာ</displayName>
			</currency>
			<currency type="TWD">
				<displayName>ထိုင်ဝမ် ဒေါ်လာအသစ်</displayName>
			</currency>
			<currency type="USD">
				<displayName>အမေရိကန် ဒေါ်လာ</displayName>
			</currency>
			<currency type="USN">
				<displayName>အမေရိကန် ဒေါ်လာ (နောက်နေ့)</displayName>
			</currency>
			<currency type="USS">
				<displayName>အမေရိကန် ဒေါ်လာ (တနေ့တည်း)</displayName>
			</currency>
			<currency type="VND">
				<displayName>ဗီယက်နမ် ဒေါင်</displayName>
			</currency>
			<currency type="XAG">
				<displayName>ငွေ</displayName>
			</currency>
			<currency type="XAU">
				<displayName>ရွှေ</displayName>
			</currency>
			<currency type="XBB">
				<displayName>ဥရောပငွေကြေးစံနစ်</displayName>
			</currency>
			<currency type="XDR">
				<displayName>အထူးထုတ်ယူခွင့်</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA ဖရန့် BCEAO</displayName>
			</currency>
			<currency type="XPT">
				<displayName>ပလက်တီနမ်</displayName>
			</currency>
			<currency type="XTS">
				<displayName>စမ်းသပ် ငွေကြေး ကုဒ်</displayName>
			</currency>
			<currency type="XXX">
				<displayName>မသိ သို့မဟုတ် မရှိသော ငွေကြေး</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>ဇင်ဘာဘွေ ဒေါ်လာ</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} ရက်</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} နာရီ</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} မိနစ်</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} လ</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} စက္ကန့်</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} ပတ်</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} နှစ်</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ဟုတ်တယ်</yesstr>
			<nostr>မဟုတ်ဘူး</nostr>
		</messages>
	</posix>
</ldml>

PKpG[+;P##Locale/Data/tt_RU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tt"/>
		<territory type="RU"/>
	</identity>
</ldml>
PKpG[��TLocale/Data/fr_LU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="fr"/>
		<territory type="LU"/>
	</identity>
	<numbers>
		<symbols>
			<group>.</group>
		</symbols>
		<currencies>
			<currency type="FRF">
				<symbol>FRF</symbol>
			</currency>
			<currency type="LUF">
				<symbol>F</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�o��Locale/Data/si.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="si"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="si">සිංහල</language>
		</languages>
		<scripts>
			<script type="Sinh">සිංහල</script>
		</scripts>
		<territories>
			<territory type="LK">ශ්‍රී ලංකාව</territory>
		</territories>
		<keys>
			<key type="calendar">දිනදසුන</key>
			<key type="currency">මුදල්</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">බුද්‍ධ දිනදසුන</type>
			<type type="gregorian" key="calendar">දිනදසුන</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[\u200C \u200D ං ඃ අ-ඖ ක-න ඳ-ර ල ව-ෆ ් ා-ු ූ ෘ-ෟ ෲ ෳ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ජන</month>
							<month type="2">පෙබ</month>
							<month type="3">මාර්ත</month>
							<month type="4">අප්‍රේල</month>
							<month type="5">මැය</month>
							<month type="6">ජූන</month>
							<month type="7">ජූල</month>
							<month type="8">අගෝ</month>
							<month type="9">සැප</month>
							<month type="10">ඔක</month>
							<month type="11">නොවැ</month>
							<month type="12">දෙසැ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ජනවාර</month>
							<month type="2">පෙබරවාර</month>
							<month type="3">මාර්ත</month>
							<month type="4">අප්‍රේල්</month>
							<month type="5">මැයි</month>
							<month type="6">ජූන</month>
							<month type="7">ජූලි</month>
							<month type="8">අගෝස්තු</month>
							<month type="9">සැප්තැම්බර්</month>
							<month type="10">ඔක්තෝබර්</month>
							<month type="11">නොවැම්බර්</month>
							<month type="12">දෙසැම්බර්</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ජ</month>
							<month type="2">පෙ</month>
							<month type="3">මා</month>
							<month type="4">අ</month>
							<month type="5">මැ</month>
							<month type="6">ජූ</month>
							<month type="7">ජූ</month>
							<month type="8">අ</month>
							<month type="9">සැ</month>
							<month type="10">ඔ</month>
							<month type="11">නො</month>
							<month type="12">දෙ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ඉරි</day>
							<day type="mon">සඳු</day>
							<day type="tue">අඟ</day>
							<day type="wed">බදා</day>
							<day type="thu">බ්‍රහ</day>
							<day type="fri">සිකු</day>
							<day type="sat">සෙන</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ඉරිදා</day>
							<day type="mon">සඳුදා</day>
							<day type="tue">අඟහරුවාදා</day>
							<day type="wed">බදාදා</day>
							<day type="thu">බ්‍රහස්පතින්දා</day>
							<day type="fri">සිකුරාදා</day>
							<day type="sat">සෙනසුරාදා</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ඉ</day>
							<day type="mon">ස</day>
							<day type="tue">අ</day>
							<day type="wed">බ</day>
							<day type="thu">බ්‍ර</day>
							<day type="fri">සි</day>
							<day type="sat">සෙ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">කාර්:1</quarter>
							<quarter type="2">කාර්:2</quarter>
							<quarter type="3">කාර්:3</quarter>
							<quarter type="4">කාර්:4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1 වන කාර්තුව</quarter>
							<quarter type="2">2 වන කාර්තුව</quarter>
							<quarter type="3">3 වන කාර්තුව</quarter>
							<quarter type="4">4 වන කාර්තුව</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>පෙ.ව.</am>
				<pm>ප.ව.</pm>
				<eras>
					<eraNames>
						<era type="0">ක්‍රිස්තු පූර්‍ව</era>
						<era type="1">ක්‍රිස්තු වර්‍ෂ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ක්‍රි.පූ.</era>
						<era type="1">ක්‍රි.ව.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<fields>
					<field type="day">
						<relative type="0">අද</relative>
						<relative type="1">හෙට</relative>
						<relative type="-1">ඊයෙ</relative>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Lanka">
				<long>
					<standard>ශ්‍රී ලංකා වේලාව</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##,##0.00;(¤#,##,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="LKR">
				<displayName>ලංකා රුපියල</displayName>
				<symbol>SL Re</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ඔව්:ඔ</yesstr>
			<nostr>නැත:නැ</nostr>
		</messages>
	</posix>
</ldml>
PKpG[������Locale/Data/zh_Hans_SG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.58 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="zh"/>
		<script type="Hans"/>
		<territory type="SG"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>ahh:mm:ssz</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>ahh:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Md">M月d日</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}至{1}</intervalFormatFallback>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">dd/MME至dd/MME</greatestDifference>
							<greatestDifference id="d">dd/MME至dd/MME</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">ddMMME至ddMMME</greatestDifference>
							<greatestDifference id="d">ddMMME至ddMMME</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">ddMMM至dMMM</greatestDifference>
							<greatestDifference id="d">dd至ddMMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM至dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM至dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">ahh至ahh</greatestDifference>
							<greatestDifference id="h">ahh至hh</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">ahh:mm至ahh:mm</greatestDifference>
							<greatestDifference id="h">ahh:mm至hh:mm</greatestDifference>
							<greatestDifference id="m">ahh:mm至hh:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">ahh:mm至ahh:mmv</greatestDifference>
							<greatestDifference id="h">ahh:mm至hh:mmv</greatestDifference>
							<greatestDifference id="m">ahh:mm至hh:mmv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">ahh至ahhv</greatestDifference>
							<greatestDifference id="h">ahh至hhv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy至MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy至MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">dd/MM/yyE至dd/MM/yyE</greatestDifference>
							<greatestDifference id="d">dd/MM/yyE至dd/MM/yyE</greatestDifference>
							<greatestDifference id="y">dd/MM/yyE至dd/MM/yyE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM至MMMyyyy</greatestDifference>
							<greatestDifference id="y">MMMyyyy至MMMyyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">ddMMM至ddMMMyyyy</greatestDifference>
							<greatestDifference id="d">dd至ddMMMyyyy</greatestDifference>
							<greatestDifference id="y">ddMMMyyyy至ddMMMyyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy至dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy至dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy至dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
</ldml>

PKpG[!""Locale/Data/si_LK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="si"/>
		<territory type="LK"/>
	</identity>
</ldml>
PKpG[	Ȗ�D�D�Locale/Data/ca.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.90 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="ca"/>
	</identity>
	<fallback>es_ES</fallback>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">àfar</language>
			<language type="ab">abkhaz</language>
			<language type="ady">adigué</language>
			<language type="ae">avèstic</language>
			<language type="af">afrikaans</language>
			<language type="afa">llengua afroasiàtica</language>
			<language type="afh">afrihili</language>
			<language type="ak">àkan</language>
			<language type="ale">aleuta</language>
			<language type="alg">llengua algonquina</language>
			<language type="alt">altaic meridional</language>
			<language type="am">amhàric</language>
			<language type="an">aragonès</language>
			<language type="ang">anglès antic</language>
			<language type="apa">llengua apatxe</language>
			<language type="ar">àrab</language>
			<language type="arc">arameu</language>
			<language type="arn">araucà</language>
			<language type="arp">arapaho</language>
			<language type="art">llengua artificial</language>
			<language type="arw">arauac</language>
			<language type="as">assamès</language>
			<language type="ast">asturià</language>
			<language type="ath">llengua atapascana</language>
			<language type="aus">llengua australiana</language>
			<language type="av">àvar</language>
			<language type="ay">aimara</language>
			<language type="az">àzeri</language>
			<language type="ba">baixkir</language>
			<language type="bai">bamileké</language>
			<language type="bal">balutxi</language>
			<language type="ban">balinès</language>
			<language type="bat">llengua bàltica</language>
			<language type="be">bielorús</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berber</language>
			<language type="bg">búlgar</language>
			<language type="bh">bihari</language>
			<language type="bi">bislama</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalí</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetà</language>
			<language type="br">bretó</language>
			<language type="bs">bosnià</language>
			<language type="btk">batak</language>
			<language type="bua">buriat</language>
			<language type="bug">bugui</language>
			<language type="ca">català</language>
			<language type="cad">caddo</language>
			<language type="cai">llengua ameríndia d'Amèrica Central</language>
			<language type="car">carib</language>
			<language type="cau">llengua caucàsica</language>
			<language type="ce">txetxè</language>
			<language type="cel">llengua cèltica</language>
			<language type="ch">chamorro</language>
			<language type="chg">txagatai</language>
			<language type="chm">mari</language>
			<language type="chn">pidgin chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">xeienne</language>
			<language type="co">cors</language>
			<language type="cop">copte</language>
			<language type="cpe">crioll - basat en l'anglès</language>
			<language type="cpf">crioll - basat en el francès</language>
			<language type="cpp">crioll - basat en el portuguès</language>
			<language type="cr">cree</language>
			<language type="crh">tàtar de Crimea</language>
			<language type="crp">llengua criolla o pidgin</language>
			<language type="cs">txec</language>
			<language type="csb">caixubi</language>
			<language type="cu">eslau eclesiàstic</language>
			<language type="cus">llengua cuixítica</language>
			<language type="cv">txuvaix</language>
			<language type="cy">gal·lès</language>
			<language type="da">danès</language>
			<language type="dak">dakota</language>
			<language type="dar">darguà</language>
			<language type="day">daiak</language>
			<language type="de">alemany</language>
			<language type="de_AT">alemany austriac</language>
			<language type="de_CH">alemany suís</language>
			<language type="del">delaware</language>
			<language type="din">dinka</language>
			<language type="dra">llengua dravidiana</language>
			<language type="dsb">baix sòrab</language>
			<language type="dum">neerlandès mitjà</language>
			<language type="dv">divehi</language>
			<language type="dz">bhutanès</language>
			<language type="ee">ewe</language>
			<language type="egy">egipci antic</language>
			<language type="el">grec</language>
			<language type="elx">elamita</language>
			<language type="en">anglès</language>
			<language type="en_AU">anglès australià</language>
			<language type="en_CA">anglès canadenc</language>
			<language type="en_GB">anglès britànic</language>
			<language type="en_US">anglès americà</language>
			<language type="enm">anglès mitjà</language>
			<language type="eo">esperanto</language>
			<language type="es">espanyol</language>
			<language type="es_419">castellà americà</language>
			<language type="es_ES">castellà ibèric</language>
			<language type="et">estonià</language>
			<language type="eu">basc</language>
			<language type="fa">persa</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">ful</language>
			<language type="fi">finès</language>
			<language type="fil">filipí</language>
			<language type="fiu">llengua finoúgrica</language>
			<language type="fj">fijià</language>
			<language type="fo">feroès</language>
			<language type="fr">francès</language>
			<language type="fr_CH">francès suís</language>
			<language type="frm">francès mitjà</language>
			<language type="fro">francès antic</language>
			<language type="frr">frisó septentrional</language>
			<language type="frs">frisó occidental</language>
			<language type="fur">friülà</language>
			<language type="fy">frisó</language>
			<language type="ga">irlandès</language>
			<language type="gd">escocès</language>
			<language type="gem">llengua germànica</language>
			<language type="gez">gueez</language>
			<language type="gil">gilbertès</language>
			<language type="gl">gallec</language>
			<language type="gmh">alt alemany mitjà</language>
			<language type="gn">guaraní</language>
			<language type="goh">alt alemany antic</language>
			<language type="got">gòtic</language>
			<language type="grc">grec antic</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaià</language>
			<language type="he">hebreu</language>
			<language type="hi">hindi</language>
			<language type="hit">hitita</language>
			<language type="hr">croat</language>
			<language type="hsb">alt sòrab</language>
			<language type="ht">haitià</language>
			<language type="hu">hongarès</language>
			<language type="hup">hupa</language>
			<language type="hy">armeni</language>
			<language type="ia">interlingua</language>
			<language type="id">indonesi</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ik">inupiak</language>
			<language type="ilo">ilocà</language>
			<language type="inc">llengua índica</language>
			<language type="ine">llengua indoeuropea</language>
			<language type="inh">ingúix</language>
			<language type="io">ido</language>
			<language type="ira">llengua irànica</language>
			<language type="iro">iroquès</language>
			<language type="is">islandès</language>
			<language type="it">italià</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japonès</language>
			<language type="jbo">judeopersa</language>
			<language type="jrb">judeoàrab</language>
			<language type="jv">javanès</language>
			<language type="ka">georgià</language>
			<language type="kaa">karakalpak</language>
			<language type="kab">cabilenc</language>
			<language type="kar">karen</language>
			<language type="kbd">kabardí</language>
			<language type="khi">llengua khoisana</language>
			<language type="kho">khotanès</language>
			<language type="ki">kikuiu</language>
			<language type="kk">kazakh</language>
			<language type="kl">greenlandès</language>
			<language type="km">cambodjà</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">coreà</language>
			<language type="kpe">kpelle</language>
			<language type="krc">karatxai</language>
			<language type="ks">caixmiri</language>
			<language type="ku">kurd</language>
			<language type="kum">kúmik</language>
			<language type="kv">komi</language>
			<language type="ky">kirguís</language>
			<language type="la">llatí</language>
			<language type="lad">ladí</language>
			<language type="lah">panjabi occidental</language>
			<language type="lb">luxemburguès</language>
			<language type="lez">lesguià</language>
			<language type="lg">ganda</language>
			<language type="li">limburguès</language>
			<language type="ln">lingala</language>
			<language type="lo">laosià</language>
			<language type="lt">lituà</language>
			<language type="luo">luo</language>
			<language type="lv">letó</language>
			<language type="mad">madurès</language>
			<language type="man">mandinga</language>
			<language type="map">llengua autronèsia</language>
			<language type="mas">massai</language>
			<language type="mdf">mordovià moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malgaix</language>
			<language type="mga">gaèlic irlàndès mitjà</language>
			<language type="mh">marshallès</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="mis">llengua miscel·lània</language>
			<language type="mk">macedoni</language>
			<language type="mkh">llengua monkhmer</language>
			<language type="ml">malaialam</language>
			<language type="mn">mongol</language>
			<language type="mnc">manxú</language>
			<language type="mno">llengua manobo</language>
			<language type="mo">moldau</language>
			<language type="mr">marathi</language>
			<language type="ms">malai</language>
			<language type="mt">maltès</language>
			<language type="mul">varies llengües</language>
			<language type="mun">llengua munda</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandès</language>
			<language type="my">birmà</language>
			<language type="myn">llengua maia</language>
			<language type="myv">mirandès erzya</language>
			<language type="na">nauruà</language>
			<language type="nah">nàhuatl</language>
			<language type="nai">llengua ameríndia septentrional</language>
			<language type="nap">napolità</language>
			<language type="nb">noruec bokmål</language>
			<language type="nd">ndebele septentrional</language>
			<language type="nds">baix alemany</language>
			<language type="ne">nepalès</language>
			<language type="new">newari</language>
			<language type="nic">llengua nigerokurdufaniana</language>
			<language type="nl">neerlandès</language>
			<language type="nl_BE">flamenc</language>
			<language type="nn">noruec nynorsk</language>
			<language type="no">noruec</language>
			<language type="nog">nogai</language>
			<language type="non">noruec antic</language>
			<language type="nr">ndebele meridional</language>
			<language type="nso">sotho septentrional</language>
			<language type="nub">llengua nubiana</language>
			<language type="nv">navaho</language>
			<language type="nwc">newari clàssic</language>
			<language type="ny">nyanja</language>
			<language type="oc">occità</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo (afan)</language>
			<language type="or">oriya</language>
			<language type="os">osset</language>
			<language type="ota">turc otomà</language>
			<language type="pa">panjabi</language>
			<language type="paa">llengua papú</language>
			<language type="pal">pahlavi</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauà</language>
			<language type="peo">persa antic</language>
			<language type="phn">fenici</language>
			<language type="pi">pali</language>
			<language type="pl">polonès</language>
			<language type="pon">ponapeà</language>
			<language type="pra">pràcrit</language>
			<language type="pro">provençal antic</language>
			<language type="ps">paixto</language>
			<language type="pt">portuguès</language>
			<language type="pt_BR">portuguès (brasil)</language>
			<language type="pt_PT">portuguès (portugal)</language>
			<language type="qu">quètxua</language>
			<language type="raj">rajasthani</language>
			<language type="rm">retoromànic</language>
			<language type="rn">kirundi</language>
			<language type="ro">romanès</language>
			<language type="roa">llengua romànica</language>
			<language type="rom">romaní</language>
			<language type="ru">rus</language>
			<language type="rup">aromanès</language>
			<language type="rw">kinyarwanda</language>
			<language type="sa">sànscrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">iacut</language>
			<language type="sai">llengua ameríndia meridional</language>
			<language type="sal">llengua salish</language>
			<language type="sam">arameu samarità</language>
			<language type="sas">sasak</language>
			<language type="sc">sard</language>
			<language type="scn">sicilià</language>
			<language type="sd">sindhi</language>
			<language type="se">sami septentrional</language>
			<language type="sem">llengua semítica</language>
			<language type="sg">sango</language>
			<language type="sga">irlandès antic</language>
			<language type="sgn">llengua de signes</language>
			<language type="sh">serbo-croat</language>
			<language type="si">sinhalès</language>
			<language type="sio">llengua sioux</language>
			<language type="sit">llengua sinotibetana</language>
			<language type="sk">eslovac</language>
			<language type="sl">eslovè</language>
			<language type="sla">llengua eslava</language>
			<language type="sm">samoà</language>
			<language type="sma">sami meridional</language>
			<language type="smi">llengua sami</language>
			<language type="smn">sami d'Inari</language>
			<language type="sms">sami skolt</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somali</language>
			<language type="sog">sogdià</language>
			<language type="son">songhai</language>
			<language type="sq">albanès</language>
			<language type="sr">serbi</language>
			<language type="ss">siswati</language>
			<language type="st">sotho</language>
			<language type="su">sundanès</language>
			<language type="sux">sumeri</language>
			<language type="sv">suec</language>
			<language type="sw">swahili</language>
			<language type="syr">siríac</language>
			<language type="ta">tàmil</language>
			<language type="tai">llengua tai</language>
			<language type="te">telugu</language>
			<language type="tg">tadjik</language>
			<language type="th">thai</language>
			<language type="ti">tigrinya</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">turcman</language>
			<language type="tkl">tokelauès</language>
			<language type="tl">tagàlog</language>
			<language type="tlh">klingonià</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamazight</language>
			<language type="tn">tswana</language>
			<language type="to">tonga</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turc</language>
			<language type="ts">tsonga</language>
			<language type="tt">tàtar</language>
			<language type="tup">llengua tupí</language>
			<language type="tut">llengua altaïca</language>
			<language type="tvl">tuvaluà</language>
			<language type="tw">twi</language>
			<language type="ty">tahitià</language>
			<language type="tyv">tuvinià</language>
			<language type="ug">uigur</language>
			<language type="uga">ugarític</language>
			<language type="uk">ucraïnès</language>
			<language type="umb">umbundu</language>
			<language type="und">idioma desconegut o no vàlid</language>
			<language type="ur">urdú</language>
			<language type="uz">uzbek</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamita</language>
			<language type="vo">volapuk</language>
			<language type="wa">való</language>
			<language type="wak">llengua wakashan</language>
			<language type="wen">sòrab</language>
			<language type="wo">wòlof</language>
			<language type="xal">calmuc</language>
			<language type="xh">xosa</language>
			<language type="yap">yapeà</language>
			<language type="yi">jiddish</language>
			<language type="yo">ioruba</language>
			<language type="za">zhuang</language>
			<language type="zap">zapoteca</language>
			<language type="zen">zenaga</language>
			<language type="zh">xinès</language>
			<language type="zh_Hans">xinès simplificat</language>
			<language type="zh_Hant">xinès tradicional</language>
			<language type="zu">zulu</language>
			<language type="zxx">sense contingut lingüístic</language>
		</languages>
		<scripts>
			<script type="Arab">Àrab</script>
			<script type="Armn">Armeni</script>
			<script type="Bali">Balinès</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengalí</script>
			<script type="Brai">Braille</script>
			<script type="Cher">Cherokee</script>
			<script type="Copt">Copte</script>
			<script type="Cyrl">Ciríl·lic</script>
			<script type="Deva">Devanagari</script>
			<script type="Grek">Grec</script>
			<script type="Hans">Xinès Simplificat (Han)</script>
			<script type="Hant">Xinès Tradicional (Han)</script>
			<script type="Hebr">Hebreu</script>
			<script type="Jpan">Japonès</script>
			<script type="Kana">Katakana</script>
			<script type="Latn">Llatí</script>
			<script type="Lina">Lineal A</script>
			<script type="Linb">Lineal B</script>
			<script type="Mong">Mongol</script>
			<script type="Runr">Rúnic</script>
			<script type="Taml">Tàmil</script>
			<script type="Zxxx">Sense escriptura</script>
			<script type="Zyyy">Comú</script>
			<script type="Zzzz">escriptura desconeguda o no vàlida</script>
		</scripts>
		<territories>
			<territory type="001">Món</territory>
			<territory type="002">Àfrica</territory>
			<territory type="003">Amèrica del Nord</territory>
			<territory type="005">Sudamèrica</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Àfrica Occidental</territory>
			<territory type="013">Amèrica Central</territory>
			<territory type="014">Àfrica Oriental</territory>
			<territory type="015">Àfrica septentrional</territory>
			<territory type="017">Àfrica Central</territory>
			<territory type="018">Àfrica meridional</territory>
			<territory type="019">Amèrica</territory>
			<territory type="021">Amèrica septentrional</territory>
			<territory type="029">Carib</territory>
			<territory type="030">Àsia Oriental</territory>
			<territory type="034">Sud d'Àsia</territory>
			<territory type="035">Àsia Sud-oriental</territory>
			<territory type="039">Europa meridional</territory>
			<territory type="053">Austràlia i Nova Zelanda</territory>
			<territory type="054">Melanèsia</territory>
			<territory type="057">Regió de la Micronèsia</territory>
			<territory type="061">Polinèsia</territory>
			<territory type="062">Àsia Sud-central</territory>
			<territory type="142">Àsia</territory>
			<territory type="143">Àsia Central</territory>
			<territory type="145">Àsia Occidental</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa Oriental</territory>
			<territory type="154">Europa septentrional</territory>
			<territory type="155">Europa Occidental</territory>
			<territory type="172">Comunitat d'Estats Independents</territory>
			<territory type="419">Amèrica Llatina i Carib</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Unió dels Emirats Àrabs</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua i Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albània</territory>
			<territory type="AM">Armènia</territory>
			<territory type="AN">Antilles Holandeses</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antàrtida</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa americana</territory>
			<territory type="AT">Àustria</territory>
			<territory type="AU">Austràlia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Illes Aland</territory>
			<territory type="AZ">Azerbaidjan</territory>
			<territory type="BA">Bòsnia i Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangla Desh</territory>
			<territory type="BE">Bèlgica</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgària</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermudes</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolívia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahames</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Illa Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorússia</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canadà</territory>
			<territory type="CC">Illes Cocos</territory>
			<territory type="CD">República Democràtica del Congo</territory>
			<territory type="CF">República Centrafricana</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Switzerland</territory>
			<territory type="CI">Costa d’Ivori</territory>
			<territory type="CK">Illes Cook</territory>
			<territory type="CL">Xile</territory>
			<territory type="CM">Camerun</territory>
			<territory type="CN">Xina</territory>
			<territory type="CO">Colòmbia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Sèrbia i Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cap Verd</territory>
			<territory type="CX">Illa Christmas</territory>
			<territory type="CY">Xipre</territory>
			<territory type="CZ">República Txeca</territory>
			<territory type="DE">Alemanya</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Dinamarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">República Dominicana</territory>
			<territory type="DZ">Algèria</territory>
			<territory type="EC">Equador</territory>
			<territory type="EE">Estònia</territory>
			<territory type="EG">Egipte</territory>
			<territory type="EH">Sàhara Occidental</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Espanya</territory>
			<territory type="ET">Etiòpia</territory>
			<territory type="FI">Finlàndia</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Illes Malvines</territory>
			<territory type="FM">Micronèsia</territory>
			<territory type="FO">Illes Fèroe</territory>
			<territory type="FR">França</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Regne Unit</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Geòrgia</territory>
			<territory type="GF">Guaiana Francesa</territory>
			<territory type="GG">Batllia de Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groenlàndia</territory>
			<territory type="GM">Gàmbia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Guinea Equatorial</territory>
			<territory type="GR">Grècia</territory>
			<territory type="GS">Illes Geòrgia del Sud i Sandwich del Sud</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Illa Heard i Illes McDonald</territory>
			<territory type="HN">Hondures</territory>
			<territory type="HR">Croàcia</territory>
			<territory type="HT">Haití</territory>
			<territory type="HU">Hongria</territory>
			<territory type="ID">Indonèsia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Illa de Man</territory>
			<territory type="IN">Índia</territory>
			<territory type="IO">Territori Britànic de l'Oceà Índic</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islàndia</territory>
			<territory type="IT">Itàlia</territory>
			<territory type="JE">Batllia de Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordània</territory>
			<territory type="JP">Japó</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgizistan</territory>
			<territory type="KH">Cambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comores</territory>
			<territory type="KN">Saint Kitts i Nevis</territory>
			<territory type="KP">Corea del Nord</territory>
			<territory type="KR">Corea del Sud</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Illes Caiman</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Líban</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Libèria</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituània</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Letònia</territory>
			<territory type="LY">Líbia</territory>
			<territory type="MA">Marroc</territory>
			<territory type="MC">Mònaco</territory>
			<territory type="MD">Moldàvia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Illes Marshall</territory>
			<territory type="MK">Macedònia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongòlia</territory>
			<territory type="MO">Macau</territory>
			<territory type="MP">Illes Mariannes del Nord</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritània</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Maurici</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mèxic</territory>
			<territory type="MY">Malàisia</territory>
			<territory type="MZ">Moçambic</territory>
			<territory type="NA">Namíbia</territory>
			<territory type="NC">Nova Caledònia</territory>
			<territory type="NE">Níger</territory>
			<territory type="NF">Illa Norfolk</territory>
			<territory type="NG">Nigèria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Països Baixos</territory>
			<territory type="NO">Noruega</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nova Zelanda</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panamà</territory>
			<territory type="PE">Perú</territory>
			<territory type="PF">Polinèsia Francesa</territory>
			<territory type="PG">Papua Nova Guinea</territory>
			<territory type="PH">Filipines</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polònia</territory>
			<territory type="PM">Saint Pierre i Miquelon</territory>
			<territory type="PN">Illes Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Territori Palestí</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguai</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QU">Unió Europea</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Sèrbia</territory>
			<territory type="RU">Rússia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Aràbia Saudí</territory>
			<territory type="SB">Illes Salomó</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Suècia</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Eslovènia</territory>
			<territory type="SJ">Svalbard i Jan Mayen</territory>
			<territory type="SK">Eslovàquia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somàlia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé i Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Síria</territory>
			<territory type="SZ">Swazilàndia</territory>
			<territory type="TC">Illes Turks i Caicos</territory>
			<territory type="TD">Txad</territory>
			<territory type="TF">Territoris Meridionals Francesos</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailàndia</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunísia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turquia</territory>
			<territory type="TT">Trinitat i Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzània</territory>
			<territory type="UA">Ucraïna</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Illes Perifèriques Menors dels EUA</territory>
			<territory type="US">Estats Units</territory>
			<territory type="UY">Uruguai</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vaticà</territory>
			<territory type="VC">Saint Vincent i les Grenadines</territory>
			<territory type="VE">Veneçuela</territory>
			<territory type="VG">Illes Verges Britàniques</territory>
			<territory type="VI">Illes Verges dels USA</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis i Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Iemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sud-àfrica</territory>
			<territory type="ZM">Zàmbia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Regió desconeguda o no vàlida</territory>
		</territories>
		<variants>
			<variant type="1901">ortografia alemana tradicional</variant>
			<variant type="1996">ortografia alemana de 1996</variant>
			<variant type="FONIPA">alfabet fonètic internacional</variant>
			<variant type="POSIX">ordenador</variant>
		</variants>
		<keys>
			<key type="calendar">calendari</key>
			<key type="collation">ordre alfabètic</key>
			<key type="currency">moneda</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">calendari budista</type>
			<type type="chinese" key="calendar">calendari xinès</type>
			<type type="gregorian" key="calendar">calendari gregorià</type>
			<type type="hebrew" key="calendar">calendari hebreu</type>
			<type type="indian" key="calendar">calendari hindú</type>
			<type type="islamic" key="calendar">calendari musulmà</type>
			<type type="japanese" key="calendar">calendari japonès</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">imperial</measurementSystemName>
			<measurementSystemName type="metric">mètric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Idioma: {0}</codePattern>
			<codePattern type="script">Escriptura: {0}</codePattern>
			<codePattern type="territory">Regió: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b c ç d e é è f-i í ï j-l ŀ m-o ó ò p-u ú ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á ñ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GuMtkHmsSEDFwWahKzUeygAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">gen.</month>
							<month type="2">febr.</month>
							<month type="3">març</month>
							<month type="4">abr.</month>
							<month type="5">maig</month>
							<month type="6">juny</month>
							<month type="7">jul.</month>
							<month type="8">ag.</month>
							<month type="9">set.</month>
							<month type="10">oct.</month>
							<month type="11">nov.</month>
							<month type="12">des.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">gener</month>
							<month type="2">febrer</month>
							<month type="3">març</month>
							<month type="4">abril</month>
							<month type="5">maig</month>
							<month type="6">juny</month>
							<month type="7">juliol</month>
							<month type="8">agost</month>
							<month type="9">setembre</month>
							<month type="10">octubre</month>
							<month type="11">novembre</month>
							<month type="12">desembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">g</month>
							<month type="2">f</month>
							<month type="3">m</month>
							<month type="4">a</month>
							<month type="5">m</month>
							<month type="6">j</month>
							<month type="7">j</month>
							<month type="8">a</month>
							<month type="9">s</month>
							<month type="10">o</month>
							<month type="11">n</month>
							<month type="12">d</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dg.</day>
							<day type="mon">dl.</day>
							<day type="tue">dt.</day>
							<day type="wed">dc.</day>
							<day type="thu">dj.</day>
							<day type="fri">dv.</day>
							<day type="sat">ds.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">diumenge</day>
							<day type="mon">dilluns</day>
							<day type="tue">dimarts</day>
							<day type="wed">dimecres</day>
							<day type="thu">dijous</day>
							<day type="fri">divendres</day>
							<day type="sat">dissabte</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="sun">dg</day>
							<day type="mon">dl</day>
							<day type="tue">dt</day>
							<day type="wed">dc</day>
							<day type="thu">dj</day>
							<day type="fri">dv</day>
							<day type="sat">ds</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">g</day>
							<day type="mon">l</day>
							<day type="tue">t</day>
							<day type="wed">c</day>
							<day type="thu">j</day>
							<day type="fri">v</day>
							<day type="sat">s</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1T</quarter>
							<quarter type="2">2T</quarter>
							<quarter type="3">3T</quarter>
							<quarter type="4">4T</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1r trimestre</quarter>
							<quarter type="2">2n trimestre</quarter>
							<quarter type="3">3r trimestre</quarter>
							<quarter type="4">4t trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">aC</era>
						<era type="1">dC</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d/M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">E d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">LLLL 'del' yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM - E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d - E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM - d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy - MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM - E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy - E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM - d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy - d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>any</displayName>
					</field>
					<field type="month">
						<displayName>mes</displayName>
					</field>
					<field type="week">
						<displayName>setmana</displayName>
					</field>
					<field type="day">
						<displayName>dia</displayName>
						<relative type="0">avui</relative>
						<relative type="1">demà</relative>
						<relative type="2">demà passat</relative>
						<relative type="3">d'aquí a tres dies</relative>
						<relative type="-1">ahir</relative>
						<relative type="-2">abans d'ahir</relative>
						<relative type="-3">fa tres dies</relative>
					</field>
					<field type="weekday">
						<displayName>dia de la setmana</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>hora</displayName>
					</field>
					<field type="minute">
						<displayName>minut</displayName>
					</field>
					<field type="second">
						<displayName>segon</displayName>
					</field>
					<field type="zone">
						<displayName>zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Hora de: {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Zona desconeguda</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Pol sud</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viena</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brussel·les</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belise</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zuric</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Illa de Pasqua</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotà</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cap Verd</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Pasqua</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Praga</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlín</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenhaguen</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>El Caire</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Illes Canàries</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Hèlsinki</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Fèroe</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>París</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londres</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Granada</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atenes</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Geòrgia del Sud</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Port Príncep</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Djakarta</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dublín</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tòquio</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seül</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Caiman</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Mònaco</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Maurici</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Les Maldives</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mèxic Districte Federal</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Numea</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Katmandú</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panamà</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Tahití</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsòvia</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Açores</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisboa</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reunió</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucarest</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Estocolm</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Sao Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damasc</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Illes Turks i Caicos</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunísia</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port Espanya</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kíev</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Hora d'Alaska</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Nova York</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Sant Vicenç</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Sant Tomàs</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<generic>Hora d'Espanya</generic>
					<standard>Hora Central Europea</standard>
					<daylight>Hora Central Europea de l'estiu</daylight>
				</long>
				<short>
					<generic>Hora d'Espanya</generic>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Pesseta d'Andorra</displayName>
				<displayName count="one">Pesseta andorrana</displayName>
				<displayName count="other">Pessetes andorranes</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirhem dels Emirats Àrabs Units</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso argentí</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Xíling austríac</displayName>
				<displayName count="one">Xíling austríac</displayName>
				<displayName count="other">Xílings austríacs</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dòlar australià</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franc belga</displayName>
				<displayName count="one">Franc belga</displayName>
				<displayName count="other">Francs belges</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Lev búlgar</displayName>
			</currency>
			<currency type="BND">
				<displayName>Dòlar de Brunei</displayName>
			</currency>
			<currency type="BOB">
				<displayName>peso bolivià</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real brasiler</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Dòlar canadenc</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franc suís</displayName>
				<displayName count="one">Franc suís</displayName>
				<displayName count="other">Francs suíssos</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso xilè</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Iuan renmimbi xinès</displayName>
			</currency>
			<currency type="COP">
				<displayName>Peso colombià</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Lliura xipriota</displayName>
				<displayName count="one">Lliura xipriota</displayName>
				<displayName count="other">Lliures xipriotes</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Corona txeca</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marc alemany</displayName>
				<displayName count="one">Marc alemany</displayName>
				<displayName count="other">Marcs alemanys</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Corona danesa</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Dinar algerià</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Corona estoniana</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Lliura egípcia</displayName>
			</currency>
			<currency type="ESP">
				<pattern>¤ #,##0;-¤ #,##0</pattern>
				<displayName>Pesseta espanyola</displayName>
				<displayName count="one">Pesseta espanyola</displayName>
				<displayName count="other">Pessetes espanyoles</displayName>
				<symbol>₧</symbol>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<displayName count="one">Euro</displayName>
				<displayName count="other">Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Marc finlandès</displayName>
				<displayName count="one">Marc finlandès</displayName>
				<displayName count="other">Marcs finlandèsos</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dòlar fijià</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franc francès</displayName>
				<displayName count="one">Franc francès</displayName>
				<displayName count="other">Francs francèsos</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Lliura esterlina britànica</displayName>
				<displayName count="one">Lliura esterlina</displayName>
				<displayName count="other">Lliures esterlines</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Dracma grega</displayName>
				<displayName count="one">Dracma grega</displayName>
				<displayName count="other">Dracmes gregues</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Dòlar De Hong Kong</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna croata</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forint hongarès</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Rupia indonèsia</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Lliura irlandesa</displayName>
				<displayName count="one">Lliura irlandesa</displayName>
				<displayName count="other">Lliures irlandeses</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILS">
				<displayName>Xéquel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupia índia</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lira italiana</displayName>
				<displayName count="one">Lira italiana</displayName>
				<displayName count="other">Lires italianes</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Ien japonès</displayName>
			</currency>
			<currency type="KES">
				<displayName>Xíling kenyà</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won (Corea Del Sud)</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litas lituà</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Franc luxemburguès</displayName>
				<displayName count="one">Franc luxemburguès</displayName>
				<displayName count="other">Francs luxemburguèsos</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lats</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Dirhem marroquí</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Lira maltesa</displayName>
				<displayName count="one">Lira maltesa</displayName>
				<displayName count="other">Lires malteses</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Peso mexicà</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit de Malàisia</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Florí neerlandès</displayName>
				<displayName count="one">Florí neerlandès</displayName>
				<displayName count="other">Florís neerlandèsos</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Corona noruega</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Dòlar Neozelandès</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Nou sol peruà</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Pes filipí</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupia paquistanesa</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Nou zloty polonès</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escut portuguès</displayName>
				<displayName count="one">Escut portuguès</displayName>
				<displayName count="other">Escuts portuguèsos</displayName>
			</currency>
			<currency type="RON">
				<displayName>Nou leu romanès</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Dinar serbi</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ruble rus</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Rial saudí</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Corona sueca</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Dòlar De Singapur</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar eslovè</displayName>
				<displayName count="one">Tolar eslovè</displayName>
				<displayName count="other">Tolars eslovens</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Corona eslovaca</displayName>
			</currency>
			<currency type="THB">
				<displayName>Baht tailandès</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira turca (vella)</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Nova lira turca</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Dòlar Taiwanès</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Hrívnia d’Ucraïna</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dòlar EUA</displayName>
				<displayName count="one">Dòlar EUA</displayName>
				<displayName count="other">Dòlars EUA</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolívar veneçolà</displayName>
			</currency>
			<currency type="VND">
				<displayName>Dong de Vietnam</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Unitat de compte europea</displayName>
				<displayName count="one">Unitat de compte europea</displayName>
				<displayName count="other">Unitats de compte europea</displayName>
			</currency>
			<currency type="XXX">
				<displayName>sense moneda</displayName>
				<displayName count="one">sense moneda</displayName>
				<displayName count="other">sense moneda</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dia</unitPattern>
			<unitPattern count="other">{0} dies</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hora</unitPattern>
			<unitPattern count="other">{0} hores</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minut</unitPattern>
			<unitPattern count="other">{0} minuts</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mes</unitPattern>
			<unitPattern count="other">{0} mesos</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} segon</unitPattern>
			<unitPattern count="other">{0} segons</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} setmana</unitPattern>
			<unitPattern count="other">{0} setmanes</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} any</unitPattern>
			<unitPattern count="other">{0} anys</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>sí:s</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[��ˀ		Locale/Data/ar_LB.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="ar"/>
		<territory type="LB"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">نوار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">نوار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<exponential>E</exponential>
		</symbols>
	</numbers>
</ldml>

PKpG[���3����Locale/Data/fil.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.18 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="fil"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikaans</language>
			<language type="am">Amharic</language>
			<language type="ar">Arabic</language>
			<language type="as">Assamese</language>
			<language type="az">Azerbaijani</language>
			<language type="be">Belarusian</language>
			<language type="bg">Bulgarian</language>
			<language type="bh">Bihari</language>
			<language type="bn">Bengali; Bangla</language>
			<language type="br">Breton</language>
			<language type="bs">Bosnian</language>
			<language type="ca">Catalan</language>
			<language type="cs">Czech</language>
			<language type="cy">Welsh</language>
			<language type="da">Danish</language>
			<language type="de">Aleman</language>
			<language type="el">Griyego</language>
			<language type="en">Ingles</language>
			<language type="en_GB">Ingles (UK)</language>
			<language type="en_US">Ingles (US)</language>
			<language type="eo">Esperanto</language>
			<language type="es">Espanyol</language>
			<language type="et">Estonian</language>
			<language type="eu">Basque</language>
			<language type="fa">Persian</language>
			<language type="fi">Finnish</language>
			<language type="fil">Filipino</language>
			<language type="fo">Faroeso</language>
			<language type="fr">Pranses</language>
			<language type="fy">Prisian</language>
			<language type="ga">Irish</language>
			<language type="gd">Scots Gaelic</language>
			<language type="gl">Galician</language>
			<language type="gn">Guarani</language>
			<language type="gu">Gujarati</language>
			<language type="he">Hebreo</language>
			<language type="hi">Hindu</language>
			<language type="hr">Croatian</language>
			<language type="hu">Hungarian</language>
			<language type="hy">Armenian</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesian</language>
			<language type="ie">Interlingue</language>
			<language type="is">Icelandic</language>
			<language type="it">Italyano</language>
			<language type="ja">Japanese</language>
			<language type="jv">Javanese</language>
			<language type="ka">Georgian</language>
			<language type="km">Khmer</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korean</language>
			<language type="ku">Kurdish</language>
			<language type="ky">Kirghiz</language>
			<language type="la">Latin</language>
			<language type="ln">Lingala</language>
			<language type="lo">Lao</language>
			<language type="lt">Lithuanian</language>
			<language type="lv">Latvian</language>
			<language type="mk">Macedonian</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongolian</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malay</language>
			<language type="mt">Maltese</language>
			<language type="ne">Nepali</language>
			<language type="nl">Olandes</language>
			<language type="nn">Norwegian Nynorsk</language>
			<language type="no">Norwegian</language>
			<language type="oc">Occitan</language>
			<language type="or">Oriya</language>
			<language type="pa">Punjabi</language>
			<language type="pl">Polish</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portuges</language>
			<language type="pt_BR">Portuges (Brasil)</language>
			<language type="rm">Rhaeto-Romance</language>
			<language type="ro">Romanian</language>
			<language type="ru">Ruso</language>
			<language type="sa">Sanskrit</language>
			<language type="sd">Sindhi</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="si">Sinhalese</language>
			<language type="sk">Eslobak</language>
			<language type="sl">Eslobenyan</language>
			<language type="so">Somali</language>
			<language type="sq">Albanian</language>
			<language type="sr">Serbiran</language>
			<language type="st">Sesoto</language>
			<language type="su">Taga Sundan</language>
			<language type="sv">Suwiso</language>
			<language type="sw">Swahili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Thai</language>
			<language type="ti">Tigrinya</language>
			<language type="tk">Turkmen</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Turko</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Ukranian</language>
			<language type="und">und</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbeko</language>
			<language type="vi">Vietnamese</language>
			<language type="wo">Wolof</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Yiddish</language>
			<language type="zh">zh</language>
			<language type="zh_Hans">Intsik (Pinadali)</language>
			<language type="zh_Hant">Intsik (Tradisyunal)</language>
			<language type="zu">Zulu</language>
		</languages>
		<scripts>
			<script type="Arab">Arab</script>
			<script type="Armi">Armi</script>
			<script type="Armn">Armn</script>
			<script type="Avst">Avst</script>
			<script type="Bali">Bali</script>
			<script type="Batk">Batk</script>
			<script type="Beng">Beng</script>
			<script type="Blis">Blis</script>
			<script type="Bopo">Bopo</script>
			<script type="Brah">Brah</script>
			<script type="Brai">Brai</script>
			<script type="Bugi">Bugi</script>
			<script type="Buhd">Buhd</script>
			<script type="Cakm">Cakm</script>
			<script type="Cari">Cari</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Cher</script>
			<script type="Cirt">Cirt</script>
			<script type="Copt">Copt</script>
			<script type="Cprt">Cprt</script>
			<script type="Cyrl">Cyrl</script>
			<script type="Deva">Deva</script>
			<script type="Dsrt">Dsrt</script>
			<script type="Egyd">Egyd</script>
			<script type="Egyh">Egyh</script>
			<script type="Egyp">Egyp</script>
			<script type="Ethi">Ethi</script>
			<script type="Geok">Geok</script>
			<script type="Geor">Geor</script>
			<script type="Glag">Glag</script>
			<script type="Goth">Goth</script>
			<script type="Grek">Grek</script>
			<script type="Gujr">Gujr</script>
			<script type="Guru">Guru</script>
			<script type="Hang">Hang</script>
			<script type="Hani">Hani</script>
			<script type="Hano">Hano</script>
			<script type="Hans">Hans</script>
			<script type="Hant">Hant</script>
			<script type="Hebr">Hebr</script>
			<script type="Hira">Hira</script>
			<script type="Hrkt">Hrkt</script>
			<script type="Inds">Inds</script>
			<script type="Java">Java</script>
			<script type="Jpan">Jpan</script>
			<script type="Kali">Kali</script>
			<script type="Kana">Kana</script>
			<script type="Khar">Khar</script>
			<script type="Khmr">Khmr</script>
			<script type="Knda">Knda</script>
			<script type="Kore">Kore</script>
			<script type="Kthi">Kthi</script>
			<script type="Lana">Lana</script>
			<script type="Laoo">Laoo</script>
			<script type="Latf">Latf</script>
			<script type="Latg">Latg</script>
			<script type="Latn">Latn</script>
			<script type="Lepc">Lepc</script>
			<script type="Limb">Limb</script>
			<script type="Lina">Lina</script>
			<script type="Linb">Linb</script>
			<script type="Lyci">Lyci</script>
			<script type="Lydi">Lydi</script>
			<script type="Mand">Mand</script>
			<script type="Mani">Mani</script>
			<script type="Maya">Maya</script>
			<script type="Mero">Mero</script>
			<script type="Mlym">Mlym</script>
			<script type="Mong">Mong</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Mtei</script>
			<script type="Mymr">Mymr</script>
			<script type="Nkoo">Nkoo</script>
			<script type="Phlv">Phlv</script>
			<script type="Qaai">Qaai</script>
			<script type="Syre">Syre</script>
			<script type="Syrn">Syrn</script>
			<script type="Zxxx">Zxxx</script>
			<script type="Zyyy">Zyyy</script>
			<script type="Zzzz">Zzzz</script>
		</scripts>
		<territories>
			<territory type="001">Mundo</territory>
			<territory type="002">Africa</territory>
			<territory type="003">North America</territory>
			<territory type="005">South America</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Kanlurang Africa</territory>
			<territory type="013">Gitnang Amerika</territory>
			<territory type="014">Silangang Africa</territory>
			<territory type="015">Hilagang Africa</territory>
			<territory type="017">Gitnang Africa</territory>
			<territory type="018">Katimugang Africa</territory>
			<territory type="019">Americas</territory>
			<territory type="021">Hilagang Amerika</territory>
			<territory type="029">Carribbean</territory>
			<territory type="030">Silangang Asya</territory>
			<territory type="034">Katimugang Asya</territory>
			<territory type="035">Timog-Silangang Asya</territory>
			<territory type="039">Katimugang Europa</territory>
			<territory type="053">Australia at New Zealand</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Rehiyong Micronesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Timog-Gitnang Asya</territory>
			<territory type="142">Asya</territory>
			<territory type="143">Gitnang Asya</territory>
			<territory type="145">Kanlurang Asya</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Silangang Europa</territory>
			<territory type="154">Hilagang Europa</territory>
			<territory type="155">Kanlurang Europa</territory>
			<territory type="419">Latin America at ang Caribbean</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">United Arab Emirates</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua at Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Netherlands Antilles</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antartica</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">American Samoa</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland Islands</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia and Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgium</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet Island</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Belarus</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Cocos Islands</territory>
			<territory type="CD">Congo - Kinshasa</territory>
			<territory type="CF">Central African Republic</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Switzerland</territory>
			<territory type="CI">Côte d'Ivoire</territory>
			<territory type="CK">Cook Islands</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Cameroon</territory>
			<territory type="CN">Tsina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia at Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cape Verde</territory>
			<territory type="CX">Christmas Island</territory>
			<territory type="CY">Cyprus</territory>
			<territory type="CZ">Czech Republic</territory>
			<territory type="DE">Alemaya</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Denmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominican Republic</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Ehipto</territory>
			<territory type="EH">Western Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Espanya</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falkland Islands</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Faroe Islands</territory>
			<territory type="FR">Pranses</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">French Guiana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GL">Greenland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GQ">Equatorial Guinea</territory>
			<territory type="GR">Griyego</territory>
			<territory type="GS">South Georgia and the South Sandwich Islands</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="HK">Hong KOng</territory>
			<territory type="HM">Heard Island and McDonald Islands</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungary</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Ireland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">British Indian Ocean Territory</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Iceland</territory>
			<territory type="IT">Italya</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kyrgyzstan</territory>
			<territory type="KH">Cambodia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoros</territory>
			<territory type="KN">Saint Kitts and Nevis</territory>
			<territory type="KP">Hilagang Korea</territory>
			<territory type="KR">Timog Korea</territory>
			<territory type="KY">Cayman Islands</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lebanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lithuania</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Morocco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Marshall Islands</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Northern Mariana Islands</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mehiko</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">New Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk Island</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Netherlands</territory>
			<territory type="NO">Norway</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">French Polynesia</territory>
			<territory type="PG">Papua New Guinea</territory>
			<territory type="PH">Pilipinas</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poland</territory>
			<territory type="PM">Saint Pierre at Miquelon</territory>
			<territory type="PS">Palestine</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QO">Malayong bahagi ng Oceania</territory>
			<territory type="QU">European Union</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Russia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi Arabya</territory>
			<territory type="SB">Solomon Islands</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sweden</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard and Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tome and Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks and Caicos Islands</territory>
			<territory type="TD">Chad</territory>
			<territory type="TF">French Southern Territories</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tajikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">East Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkey</territory>
			<territory type="TT">Trinidad and Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">United States minor outlying islands</territory>
			<territory type="US">United States</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatican City</territory>
			<territory type="VC">Saint Vincent and the Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">British Virgin Islands</territory>
			<territory type="VI">U.S. Virgin Islands</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis and Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="ZA">Timog Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Hindi kilala o Hindi wastong Rehiyon</territory>
		</territories>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">{0}</codePattern>
			<codePattern type="script">{0}</codePattern>
			<codePattern type="territory">{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-n ñ {ng} o-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à â é è ê í ì î ó ò ô ú ù û]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ene</month>
							<month type="2">Peb</month>
							<month type="3">Mar</month>
							<month type="4">Abr</month>
							<month type="5">May</month>
							<month type="6">Hun</month>
							<month type="7">Hul</month>
							<month type="8">Ago</month>
							<month type="9">Set</month>
							<month type="10">Okt</month>
							<month type="11">Nob</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Enero</month>
							<month type="2">Pebrero</month>
							<month type="3">Marso</month>
							<month type="4">Abril</month>
							<month type="5">Mayo</month>
							<month type="6">Hunyo</month>
							<month type="7">Hulyo</month>
							<month type="8">Agosto</month>
							<month type="9">Setyembre</month>
							<month type="10">Oktubre</month>
							<month type="11">Nobyembre</month>
							<month type="12">Disyembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">E</month>
							<month type="2">P</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">H</month>
							<month type="7">H</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Enero</month>
							<month type="2">Pebrero</month>
							<month type="3">Marso</month>
							<month type="4">Abril</month>
							<month type="5">Mayo</month>
							<month type="6">Hunyo</month>
							<month type="7">Hulyo</month>
							<month type="8">Agosto</month>
							<month type="9">Setyembre</month>
							<month type="10">Oktubre</month>
							<month type="11">Nobyembre</month>
							<month type="12">Disyembre</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Lin</day>
							<day type="mon">Lun</day>
							<day type="tue">Mar</day>
							<day type="wed">Mye</day>
							<day type="thu">Huw</day>
							<day type="fri">Bye</day>
							<day type="sat">Sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Linggo</day>
							<day type="mon">Lunes</day>
							<day type="tue">Martes</day>
							<day type="wed">Miyerkules</day>
							<day type="thu">Huwebes</day>
							<day type="fri">Biyernes</day>
							<day type="sat">Sabado</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="wed">Miy</day>
							<day type="fri">Biy</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">L</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">H</day>
							<day type="fri">B</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM dd yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">yy-MM</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Taon</displayName>
					</field>
					<field type="month">
						<displayName>Buwan</displayName>
					</field>
					<field type="week">
						<displayName>Linggo</displayName>
					</field>
					<field type="day">
						<displayName>Araw</displayName>
						<relative type="0">Today</relative>
						<relative type="1">Tomorrow</relative>
						<relative type="-1">Yesterday</relative>
					</field>
					<field type="weekday">
						<displayName>Araw ng Linggo</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dayperiod</displayName>
					</field>
					<field type="hour">
						<displayName>Oras</displayName>
					</field>
					<field type="minute">
						<displayName>Minuto</displayName>
					</field>
					<field type="second">
						<displayName>Segundo</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Unknown</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto - Novo</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Pasko.</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tbilisi.</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Conarky</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Maseru.</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dushanbe.</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port nang Espanya</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Harare.</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>United Arab Emirates Dirham</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentine Peso</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australian Dollar</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bulgarian Lev</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolivian Boliviano</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Canadian Dollar</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Swiss Francs</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilean Peso</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi</displayName>
			</currency>
			<currency type="COP">
				<displayName>Colombian Peso</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Czech Koruna</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Deutsche Marks</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Denmark Kroner</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estonian Kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptian Pound</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euros</displayName>
			</currency>
			<currency type="FRF">
				<displayName>French Franc</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pounds Sterling</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kong Dollars</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Croatian Kuna</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Hungarian Forint</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indonesian Rupiah</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Israeli Shekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
			</currency>
			<currency type="KRW">
				<displayName>South Korean Won</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Lithuanian Litas</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Moroccan Dirham</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Mexico Peso</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysian Ringgit</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norwegian Kroner</displayName>
			</currency>
			<currency type="NZD">
				<displayName>New Zealand Dollars</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruvian Nuevo Sol</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Philippine Peso</displayName>
				<symbol>PhP</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakistan Rupee</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Polish NewZloty</displayName>
			</currency>
			<currency type="RON">
				<displayName>Romanian Leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbian Dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi Riyal</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Sweden Kronor</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapore Dollars</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovenian Tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovak Koruna</displayName>
			</currency>
			<currency type="THB">
				<displayName>Thai Baht</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Turkish Lira</displayName>
			</currency>
			<currency type="TWD">
				<displayName>New Taiwan Dollar</displayName>
			</currency>
			<currency type="USD">
				<displayName>US Dollar</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuela Bolivar</displayName>
			</currency>
			<currency type="XXX">
				<displayName>XXX</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>South African Rand</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} a</unitPattern>
			<unitPattern count="other">{0} a</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} o</unitPattern>
			<unitPattern count="other">{0} o</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} l</unitPattern>
			<unitPattern count="other">{0} l</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} t</unitPattern>
			<unitPattern count="other">{0} t</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[*�F��Locale/Data/en_SG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="SG"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>a hh:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>a hh:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>a hh:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>a hh:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, M/d - E, M/d</greatestDifference>
							<greatestDifference id="d">E, M/d - E, M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d - M/d</greatestDifference>
							<greatestDifference id="d">M/d - M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy - M/yy</greatestDifference>
							<greatestDifference id="y">M/yy - M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="d">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="y">E, M/d/yy - E, M/d/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy - E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d - MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d-d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy - MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="y">M/d/yy - M/d/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="SGD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<displayName>USD</displayName>
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[)6V##Locale/Data/gv_GB.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gv"/>
		<territory type="GB"/>
	</identity>
</ldml>
PKpG[�����Locale/Data/en_IE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="en"/>
		<territory type="IE"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<am>a.m.</am>
				<pm>p.m.</pm>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MEd">E, d/M</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM - E d MMM</greatestDifference>
							<greatestDifference id="d">E d - E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="GBP">
				<symbol>GBP</symbol>
			</currency>
			<currency type="IEP">
				<symbol>£</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[4��##Locale/Data/ps_AF.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:35 $"/>
		<language type="ps"/>
		<territory type="AF"/>
	</identity>
</ldml>
PKpG[2K'##Locale/Data/hy_AM.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="hy"/>
		<territory type="AM"/>
	</identity>
</ldml>
PKpG[�FEx����Locale/Data/nn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.87 $"/>
		<generation date="$Date: 2008/06/17 14:12:13 $"/>
		<language type="nn"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhasisk</language>
			<language type="ace">achinesisk</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avestisk</language>
			<language type="af">afrikaans</language>
			<language type="afa">afroasiatisk språk</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadisk</language>
			<language type="ale">aleutisk</language>
			<language type="alg">algonkinsk språk</language>
			<language type="alt">sør-altai</language>
			<language type="am">amharisk</language>
			<language type="an">aragonsk</language>
			<language type="ang">gammalengelsk</language>
			<language type="anp">angika</language>
			<language type="apa">apache-språk</language>
			<language type="ar">arabisk</language>
			<language type="arc">arameisk</language>
			<language type="arn">araukansk</language>
			<language type="arp">arapaho</language>
			<language type="art">kunstig språk</language>
			<language type="arw">arawak</language>
			<language type="as">assamisk</language>
			<language type="ast">asturisk</language>
			<language type="ath">athapaskansk språk</language>
			<language type="aus">australsk språk</language>
			<language type="av">avarisk</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">aserbajdsjansk</language>
			<language type="ba">basjkirsk</language>
			<language type="bad">banda</language>
			<language type="bai">bamilekisk språk</language>
			<language type="bal">baluchi</language>
			<language type="ban">balinesisk</language>
			<language type="bas">basa</language>
			<language type="bat">baltisk språk</language>
			<language type="be">kviterussisk</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berbisk</language>
			<language type="bg">bulgarsk</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetansk</language>
			<language type="br">bretonsk</language>
			<language type="bra">braj</language>
			<language type="bs">bosnisk</language>
			<language type="btk">batak</language>
			<language type="bua">burjatisk</language>
			<language type="bug">buginesisk</language>
			<language type="byn">blin</language>
			<language type="ca">katalansk</language>
			<language type="cad">caddo</language>
			<language type="cai">sentralamerikansk indiansk språk</language>
			<language type="car">karibisk</language>
			<language type="cau">kaukasisk språk</language>
			<language type="cch">atsam</language>
			<language type="ce">tsjetsjensk</language>
			<language type="ceb">cebuansk</language>
			<language type="cel">keltisk språk</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatai</language>
			<language type="chk">chuukesisk</language>
			<language type="chm">mari</language>
			<language type="chn">chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewiansk</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">kamisk språk</language>
			<language type="co">korsikansk</language>
			<language type="cop">koptisk</language>
			<language type="cpe">engelskbasert kreol- eller pidginspråk</language>
			<language type="cpf">franskbasert kreol- eller pidginspråk</language>
			<language type="cpp">portugisiskbasert kreol- eller pidginspråk</language>
			<language type="cr">cree</language>
			<language type="crh">krimtatarisk</language>
			<language type="crp">kreol- eller pidginspråk</language>
			<language type="cs">tsjekkisk</language>
			<language type="csb">kasjubisk</language>
			<language type="cu">kyrkjeslavisk</language>
			<language type="cus">kusjitisk språk</language>
			<language type="cv">tsjuvansk</language>
			<language type="cy">walisisk</language>
			<language type="da">dansk</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">tysk</language>
			<language type="del">delaware</language>
			<language type="den">slavej</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">dravidisk språk</language>
			<language type="dsb">lågsorbisk</language>
			<language type="dua">duala</language>
			<language type="dum">mellumnederlandsk</language>
			<language type="dv">divehi</language>
			<language type="dyu">dyula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">gammalegyptisk</language>
			<language type="eka">ekajuk</language>
			<language type="el">gresk</language>
			<language type="elx">elamittisk</language>
			<language type="en">engelsk</language>
			<language type="en_US">engelsk (amerikansk)</language>
			<language type="enm">mellomengelsk</language>
			<language type="eo">esperanto</language>
			<language type="es">spansk</language>
			<language type="et">estisk</language>
			<language type="eu">baskisk</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persisk</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">finsk</language>
			<language type="fil">filippinsk</language>
			<language type="fiu">finsk-ugrisk språk</language>
			<language type="fj">fijiansk</language>
			<language type="fo">færøysk</language>
			<language type="fon">fon</language>
			<language type="fr">fransk</language>
			<language type="frm">mellomfransk</language>
			<language type="fro">gammalfransk</language>
			<language type="frr">nordfrisisk</language>
			<language type="frs">austfrisisk</language>
			<language type="fur">friuliansk</language>
			<language type="fy">vestfrisisk</language>
			<language type="ga">irsk</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">skotsk-gælisk</language>
			<language type="gem">germansk språk</language>
			<language type="gez">ges</language>
			<language type="gil">kiribatisk</language>
			<language type="gl">galicisk</language>
			<language type="gmh">mellomhøgtysk</language>
			<language type="gn">guarani</language>
			<language type="goh">gammalhøgtysk</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotisk</language>
			<language type="grb">grebo</language>
			<language type="grc">gammalgresk</language>
			<language type="gsw">sveitsertysk</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiisk</language>
			<language type="he">hebraisk</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hettittisk</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">kroatisk</language>
			<language type="hsb">høgsorbisk</language>
			<language type="ht">haitisk</language>
			<language type="hu">ungarsk</language>
			<language type="hup">hupa</language>
			<language type="hy">armensk</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesisk</language>
			<language type="ie">interlingue</language>
			<language type="ig">ibo</language>
			<language type="ii">sichuan-yi</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiak</language>
			<language type="ilo">iloko</language>
			<language type="inc">indisk språk</language>
			<language type="ine">indo-europeisk språk</language>
			<language type="inh">ingusjisk</language>
			<language type="io">ido</language>
			<language type="ira">iransk</language>
			<language type="iro">irokansk språk</language>
			<language type="is">islandsk</language>
			<language type="it">italiensk</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japansk</language>
			<language type="jbo">lojban</language>
			<language type="jpr">jødepersisk</language>
			<language type="jrb">jødearabisk</language>
			<language type="jv">javanesisk</language>
			<language type="ka">georgisk</language>
			<language type="kaa">karakalpakisk</language>
			<language type="kab">kabylsk</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karensk</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardisk</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kikongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisanspråk</language>
			<language type="kho">khotanesisk</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kasakhisk</language>
			<language type="kl">kalaallisut; grønlandsk</language>
			<language type="km">khmer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">koreansk</language>
			<language type="kok">konkani</language>
			<language type="kos">kosraeansk</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karachay-balkar</language>
			<language type="krl">karelsk</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kasjmiri</language>
			<language type="ku">kurdisk</language>
			<language type="kum">kumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">kornisk</language>
			<language type="ky">kirgisisk</language>
			<language type="la">latin</language>
			<language type="lad">ladinsk</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburgsk</language>
			<language type="lez">lezghian</language>
			<language type="lg">ganda</language>
			<language type="li">limburgisk</language>
			<language type="ln">lingala</language>
			<language type="lo">laotisk</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litauisk</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">latvisk</language>
			<language type="mad">maduresisk</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandingo</language>
			<language type="map">austronesisk</language>
			<language type="mas">masai</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">madagassisk</language>
			<language type="mga">mellomirsk</language>
			<language type="mh">marshallesisk</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">anna språk</language>
			<language type="mk">makedonsk</language>
			<language type="mkh">mon-khmerspråk</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolsk</language>
			<language type="mnc">mandsju</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobospråk</language>
			<language type="mo">moldavisk</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malayisk</language>
			<language type="mt">maltesisk</language>
			<language type="mul">fleire språk</language>
			<language type="mun">mundaspråk</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandesisk</language>
			<language type="mwr">marwari</language>
			<language type="my">burmesisk</language>
			<language type="myn">mayaspråk</language>
			<language type="myv">erzya</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">nordamerikansk indiansk språk</language>
			<language type="nap">napolitansk</language>
			<language type="nb">bokmål</language>
			<language type="nd">nord-ndebele</language>
			<language type="nds">lågtysk</language>
			<language type="ne">nepalsk</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">niger-kordofaniansk språk</language>
			<language type="niu">niueansk</language>
			<language type="nl">nederlandsk</language>
			<language type="nn">nynorsk</language>
			<language type="no">norsk</language>
			<language type="nog">nogai</language>
			<language type="non">gammalnorsk</language>
			<language type="nqo">n'ko</language>
			<language type="nr">sør-ndebele</language>
			<language type="nso">nordsotho</language>
			<language type="nub">nubisk språk</language>
			<language type="nv">navajo</language>
			<language type="nwc">klassisk newarisk</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">oksitansk</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetisk</language>
			<language type="osa">osage</language>
			<language type="ota">ottomansk tyrkisk</language>
			<language type="oto">otomisk språk</language>
			<language type="pa">panjabi</language>
			<language type="paa">papuisk språk</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauisk</language>
			<language type="peo">gammalpersisk</language>
			<language type="phi">filippinsk språk</language>
			<language type="phn">fønikisk</language>
			<language type="pi">pali</language>
			<language type="pl">polsk</language>
			<language type="pon">ponapisk</language>
			<language type="pra">prakrit-språk</language>
			<language type="pro">gammalprovençalsk</language>
			<language type="ps">pashto</language>
			<language type="pt">portugisisk</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongansk</language>
			<language type="rm">retoromansk</language>
			<language type="rn">rundi</language>
			<language type="ro">rumensk</language>
			<language type="roa">romansk språk</language>
			<language type="rom">romani</language>
			<language type="root">rot</language>
			<language type="ru">russisk</language>
			<language type="rup">aromansk</language>
			<language type="rw">kinjarwanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">jakutsk</language>
			<language type="sai">søramerikansk indiansk språk</language>
			<language type="sal">salishansk språk</language>
			<language type="sam">samaritansk arameisk</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardinsk</language>
			<language type="scn">siciliansk</language>
			<language type="sco">skotsk</language>
			<language type="sd">sindhi</language>
			<language type="se">nordsamisk</language>
			<language type="sel">selkupisk</language>
			<language type="sem">semittisk språk</language>
			<language type="sg">sango</language>
			<language type="sga">gammalirsk</language>
			<language type="sgn">teiknspråk</language>
			<language type="sh">serbokroatisk</language>
			<language type="shn">shan</language>
			<language type="si">singalesisk</language>
			<language type="sid">sidamo</language>
			<language type="sio">sioux-språk</language>
			<language type="sit">sino-tibetansk språk</language>
			<language type="sk">slovakisk</language>
			<language type="sl">slovensk</language>
			<language type="sla">slavisk språk</language>
			<language type="sm">samoansk</language>
			<language type="sma">sørsamisk</language>
			<language type="smi">samisk språk</language>
			<language type="smj">lulesamisk</language>
			<language type="smn">enaresamisk</language>
			<language type="sms">skoltesamisk</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somali</language>
			<language type="sog">sogdisk</language>
			<language type="son">songhai</language>
			<language type="sq">albansk</language>
			<language type="sr">serbisk</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">swati</language>
			<language type="ssa">nilo-saharaspråk</language>
			<language type="st">sørsotho</language>
			<language type="su">sundanesisk</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumerisk</language>
			<language type="sv">svensk</language>
			<language type="sw">swahili</language>
			<language type="syc">klassisk syrisk</language>
			<language type="syr">syrisk</language>
			<language type="ta">tamil</language>
			<language type="tai">taispråk</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tatsjikisk</language>
			<language type="th">thai</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigré</language>
			<language type="tiv">tivi</language>
			<language type="tk">turkmensk</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamasjek</language>
			<language type="tn">tswana</language>
			<language type="to">tonga (Tonga-øyane)</language>
			<language type="tog">tonga (Nyasa)</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">tyrkisk</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatarisk</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupi-språk</language>
			<language type="tut">altaisk språk</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahitisk</language>
			<language type="tyv">tuvinisk</language>
			<language type="udm">udmurt</language>
			<language type="ug">uigurisk</language>
			<language type="uga">ugaritisk</language>
			<language type="uk">ukrainsk</language>
			<language type="umb">umbundu</language>
			<language type="und">ikkje bestemt</language>
			<language type="ur">urdu</language>
			<language type="uz">usbekisk</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamesisk</language>
			<language type="vo">volapyk</language>
			<language type="vot">votisk</language>
			<language type="wa">vallonsk</language>
			<language type="wak">wakasjansk språk</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">sorbisk språk</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xhosa</language>
			<language type="yao">yao</language>
			<language type="yap">yapesisk</language>
			<language type="yi">jiddisk</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupisk språk</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotec</language>
			<language type="zbl">blissymbol</language>
			<language type="zen">zenaga</language>
			<language type="zh">kinesisk</language>
			<language type="zh_Hans">forenkla kinesisk</language>
			<language type="zh_Hant">tradisjonell kinesisk</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">utan språkleg innhald</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabisk</script>
			<script type="Armi">armisk</script>
			<script type="Armn">armensk</script>
			<script type="Avst">avestisk</script>
			<script type="Bali">balinesisk</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengali</script>
			<script type="Blis">blissymbol</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braille</script>
			<script type="Bugi">buginesisk</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">chakma</script>
			<script type="Cans">felles kanadiske urspråksstavingar</script>
			<script type="Cari">karisk</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">koptisk</script>
			<script type="Cprt">kypriotisk</script>
			<script type="Cyrl">kyrillisk</script>
			<script type="Cyrs">kyrillisk (kyrkjeslavisk variant)</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egyptisk demotisk</script>
			<script type="Egyh">egyptisk hieratisk</script>
			<script type="Egyp">egyptiske hieroglyfar</script>
			<script type="Ethi">etiopisk</script>
			<script type="Geok">khutsuri (asomtavruli og nuskhuri)</script>
			<script type="Geor">georgisk</script>
			<script type="Glag">glagolittisk</script>
			<script type="Goth">gotisk</script>
			<script type="Grek">gresk</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">forenkla kinesisk</script>
			<script type="Hant">tradisjonell kinesisk</script>
			<script type="Hebr">hebraisk</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawk hmong</script>
			<script type="Hrkt">katakana eller hiragana</script>
			<script type="Hung">gammalungarsk</script>
			<script type="Inds">indus (Harappan)</script>
			<script type="Ital">gammalitalisk</script>
			<script type="Java">javanesisk</script>
			<script type="Jpan">japansk</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshthi</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannada</script>
			<script type="Kore">koreansk</script>
			<script type="Kthi">kaithisk</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laotisk</script>
			<script type="Latf">latinsk (frakturvariant)</script>
			<script type="Latg">latinsk (gælisk variant)</script>
			<script type="Latn">latinsk</script>
			<script type="Lepc">lepcha (róng)</script>
			<script type="Limb">lumbu</script>
			<script type="Lina">lineær A</script>
			<script type="Linb">lineær B</script>
			<script type="Lyci">lykisk</script>
			<script type="Lydi">lydisk</script>
			<script type="Mand">mandaisk</script>
			<script type="Mani">manikeisk</script>
			<script type="Maya">maya-hieroglyfar</script>
			<script type="Mero">meroitisk</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongolsk</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei-mayek</script>
			<script type="Mymr">myanmar</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol-chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanya</script>
			<script type="Perm">gammalpermisk</script>
			<script type="Phag">phags-pa</script>
			<script type="Phnx">fønikisk</script>
			<script type="Plrd">pollard-fonetisk</script>
			<script type="Qaai">nedarva</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">runer</script>
			<script type="Samr">samaritansk</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">teiknskrift</script>
			<script type="Shaw">shavisk</script>
			<script type="Sinh">sinhala</script>
			<script type="Sund">sundanesisk</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">syriakisk</script>
			<script type="Syre">syriakisk (estrangelo-variant)</script>
			<script type="Syrj">syriakisk (vestleg variant)</script>
			<script type="Syrn">syriakisk (austleg variant)</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">ny tai lue</script>
			<script type="Taml">tamilsk</script>
			<script type="Tavt">tai viet</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh (berber)</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">thai</script>
			<script type="Tibt">tibetansk</script>
			<script type="Ugar">ugaritisk</script>
			<script type="Vaii">vai</script>
			<script type="Visp">synleg tale</script>
			<script type="Xpeo">gammalpersisk</script>
			<script type="Xsux">sumero-akkadisk kileskrift</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">matematisk notasjon</script>
			<script type="Zsym">symbol</script>
			<script type="Zxxx">kode for språk utan skrift</script>
			<script type="Zyyy">felles</script>
			<script type="Zzzz">ukjend eller ugyldig skrift</script>
		</scripts>
		<territories>
			<territory type="001">verda</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Nord-Amerika</territory>
			<territory type="005">Sør-Amerika</territory>
			<territory type="009">Oseania</territory>
			<territory type="011">Vest-Afrika</territory>
			<territory type="013">Sentral-Amerika</territory>
			<territory type="014">Aust-Afrika</territory>
			<territory type="015">Nord-Afrika</territory>
			<territory type="017">Sentral-Afrika</territory>
			<territory type="018">Sørlege Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">nordlege Amerika</territory>
			<territory type="029">Karibia</territory>
			<territory type="030">Aust-Asia</territory>
			<territory type="034">Sør-Asia</territory>
			<territory type="035">Søraust-Asia</territory>
			<territory type="039">Sør-Europa</territory>
			<territory type="053">Australia og New Zealand</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Mikronesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Sørlege Sentral-Asia</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Sentral-Asia</territory>
			<territory type="145">Vest-Asia</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Aust-Europa</territory>
			<territory type="154">Nord-Europa</territory>
			<territory type="155">Vest-Europa</territory>
			<territory type="172">Samveldet av uavhengige statar</territory>
			<territory type="419">Latin-Amerika og Karibia</territory>
			<territory type="830">Kanaløyane</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Dei sameinte arabiske emirata</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua og Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Dei nederlandske Antillane</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerikansk Samoa</territory>
			<territory type="AT">Austerrike</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Åland</territory>
			<territory type="AZ">Aserbajdsjan</territory>
			<territory type="BA">Bosnia og Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei Darussalam</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvetøya</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Kviterussland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Kokosøyane</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CF">Den sentralafrikanske republikken</territory>
			<territory type="CG">Kongo-Brazzaville</territory>
			<territory type="CH">Sveits</territory>
			<territory type="CI">Elfenbeinskysten</territory>
			<territory type="CK">Cookøyane</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia og Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Kapp Verde</territory>
			<territory type="CX">Christmasøya</territory>
			<territory type="CY">Kypros</territory>
			<territory type="CZ">Tsjekkia</territory>
			<territory type="DE">Tyskland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Den dominikanske republikken</territory>
			<territory type="DZ">Algerie</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egypt</territory>
			<territory type="EH">Vest-Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spania</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falklandsøyane</territory>
			<territory type="FM">Mikronesiaføderasjonen</territory>
			<territory type="FO">Færøyane</territory>
			<territory type="FR">Frankrike</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Storbritannia</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Fransk Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grønland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatorial-Guinea</territory>
			<territory type="GR">Hellas</territory>
			<territory type="GS">Sør-Georgia og Sør-Sandwich-øyane</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- og McDonaldsøyane</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungarn</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Britiske område i Det indiske hav</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Kambodsja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorene</territory>
			<territory type="KN">St. Christopher og Nevis</territory>
			<territory type="KP">Nord-Korea</territory>
			<territory type="KR">Sør-Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Caymanøyane</territory>
			<territory type="KZ">Kasakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">St. Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litauen</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalløyane</territory>
			<territory type="MK">Makedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Nord-Marianane</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldivane</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Ny-Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkøyane</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederland</territory>
			<territory type="NO">Noreg</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Fransk Polynesia</territory>
			<territory type="PG">Papua Ny-Guinea</territory>
			<territory type="PH">Filippinane</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">St. Pierre og Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinsk territorium</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Ytre Oseania</territory>
			<territory type="QU">Den europeiske unionen</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Russland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi Arabia</territory>
			<territory type="SB">Salomonøyane</territory>
			<territory type="SC">Seychellane</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sverige</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard og Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé og Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks- og Caicosøyane</territory>
			<territory type="TD">Tchad</territory>
			<territory type="TF">Franske sørområde</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadsjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Aust-Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Tyrkia</territory>
			<territory type="TT">Trinidad og Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">USAs ytre småøyar</territory>
			<territory type="US">USA</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikanstaten</territory>
			<territory type="VC">St. Vincent og Grenadinane</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Jomfruøyane (britisk)</territory>
			<territory type="VI">Jomfruøyane (USA)</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis og Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sør-Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">(ukjent eller ugyldig område)</territory>
		</territories>
		<variants>
			<variant type="1901">tradisjonell tysk ortografi</variant>
			<variant type="1996">tysk ortografi frå 1996</variant>
			<variant type="AREVELA">austarmensk</variant>
			<variant type="AREVMDA">vestarmensk</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">det internasjonale fonetiske alfabetet (IPA)</variant>
			<variant type="FONUPA">det uralske fonetiske alfabetet UPA</variant>
			<variant type="MONOTON">monotonisk rettskriving</variant>
			<variant type="POLYTON">polytonisk rettskriving</variant>
			<variant type="REVISED">revidert rettskriving</variant>
			<variant type="ROZAJ">resisk dialekt</variant>
			<variant type="SAAHO">saaho-dialekt</variant>
			<variant type="SCOUSE">scouse-dialekt</variant>
			<variant type="VALENCIA">valensisk dialekt</variant>
		</variants>
		<keys>
			<key type="calendar">kalender</key>
			<key type="collation">kollasjon</key>
			<key type="currency">valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">tradisjonell kinesisk sortering</type>
			<type type="buddhist" key="calendar">buddhistisk kalender</type>
			<type type="chinese" key="calendar">kinesisk kalender</type>
			<type type="direct" key="collation">direkte sortering</type>
			<type type="gb2312han" key="collation">forenkla kinesisk sortering</type>
			<type type="gregorian" key="calendar">gregoriansk kalender</type>
			<type type="hebrew" key="calendar">hebraisk kalender</type>
			<type type="islamic" key="calendar">islamsk kalender</type>
			<type type="islamic-civil" key="calendar">islamsk sivil kalender</type>
			<type type="japanese" key="calendar">japansk kalender</type>
			<type type="phonebook" key="collation">telefonkatalogsortering</type>
			<type type="pinyin" key="collation">pinyin-sortering</type>
			<type type="stroke" key="collation">streksortering</type>
			<type type="traditional" key="collation">tradisjonell sortering</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">amerikansk</measurementSystemName>
			<measurementSystemName type="metric">metrisk</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b-e é f-o ó ò ô p-z æ ø å]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">mai</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">mars</month>
							<month type="4">april</month>
							<month type="5">mai</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sø.</day>
							<day type="mon">må</day>
							<day type="tue">ty</day>
							<day type="wed">on</day>
							<day type="thu">to</day>
							<day type="fri">fr</day>
							<day type="sat">la</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">søndag</day>
							<day type="mon">måndag</day>
							<day type="tue">tysdag</day>
							<day type="wed">onsdag</day>
							<day type="thu">torsdag</day>
							<day type="fri">fredag</day>
							<day type="sat">laurdag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="mon">må.</day>
							<day type="sat">la.</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">O</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>formiddag</am>
				<pm>ettermiddag</pm>
				<eras>
					<eraNames>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM. yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>'kl'. HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="mmss">mm.ss</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd.MM - E dd.MM</greatestDifference>
							<greatestDifference id="d">E dd.MM - E dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d. MMM - E d. MMM</greatestDifference>
							<greatestDifference id="d">E d. - E d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd.MM.yy - E dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E dd.MM.yy - E dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E dd.MM.yy - E dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d. MMM - E d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d. - E d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d. MMM yyyy - E d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>æra</displayName>
					</field>
					<field type="year">
						<displayName>år</displayName>
					</field>
					<field type="month">
						<displayName>månad</displayName>
					</field>
					<field type="week">
						<displayName>veke</displayName>
					</field>
					<field type="day">
						<displayName>dag</displayName>
						<relative type="0">i dag</relative>
						<relative type="1">i morgon</relative>
						<relative type="-1">i går</relative>
					</field>
					<field type="weekday">
						<displayName>vekedag</displayName>
					</field>
					<field type="dayperiod">
						<displayName>f.m./e.m.-val</displayName>
					</field>
					<field type="hour">
						<displayName>time</displayName>
					</field>
					<field type="minute">
						<displayName>minutt</displayName>
					</field>
					<field type="second">
						<displayName>sekund</displayName>
					</field>
					<field type="zone">
						<displayName>sone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH.mm;-HH.mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>ukjend</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Sørpolen</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Påskeøya</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kapp Verde</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanariøyane</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthåb</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauritania</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivane</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexico by</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorane</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisboa</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Tasjkent</exemplarCity>
			</zone>
			<metazone type="Africa_Central">
				<long>
					<standard>sentralafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>austafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>sørafrikansk tid</generic>
					<standard>sørafrikansk standardtid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>vestafrikansk tid</standard>
					<daylight>vestafrikansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>sentralaustralsk tid</generic>
					<standard>sentralaustralsk standardtid</standard>
					<daylight>sentralaustralsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>vest-sentralaustralsk tid</generic>
					<standard>vest-sentralaustralsk standardtid</standard>
					<daylight>vest-sentralaustralsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>austaustralsk tid</generic>
					<standard>austaustralsk standardtid</standard>
					<daylight>austaustralsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>vestaustralsk tid</generic>
					<standard>vestaustralsk standardtid</standard>
					<daylight>vestaustralsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>sentraleuropeisk tid</standard>
					<daylight>sentraleuropeisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>austeuropeisk tid</standard>
					<daylight>austeuropeisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>vesteuropeisk tid</standard>
					<daylight>vesteuropeisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich middeltid</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>andorransk peseta</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afghani</displayName>
			</currency>
			<currency type="ALL">
				<displayName>albansk lek</displayName>
			</currency>
			<currency type="AMD">
				<displayName>armensk dram</displayName>
			</currency>
			<currency type="ANG">
				<displayName>nederlansk antillegylden</displayName>
			</currency>
			<currency type="AOA">
				<displayName>angolsk kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>angolsk kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>angolsk ny kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>angolsk kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>argentisk austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>argentinsk peso (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>argentinsk peso</displayName>
			</currency>
			<currency type="ATS">
				<displayName>austerriksk schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>australsk dollar</displayName>
			</currency>
			<currency type="AWG">
				<displayName>arubisk gylden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>aserbaijansk manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>bosnisk-hercegovinsk dinar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>bosnisk-hercegovinsk mark (konvertibel)</displayName>
			</currency>
			<currency type="BBD">
				<displayName>barbadisk dollar</displayName>
			</currency>
			<currency type="BDT">
				<displayName>bangladeshisk taka</displayName>
			</currency>
			<currency type="BEC">
				<displayName>belgisk franc (konvertibel)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>belgisk franc</displayName>
			</currency>
			<currency type="BEL">
				<displayName>belgisk franc (finansiell)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>bulgarsk hard lev</displayName>
			</currency>
			<currency type="BGN">
				<displayName>bulgarsk ny lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>bahrainsk dinar</displayName>
			</currency>
			<currency type="BIF">
				<displayName>burundisk franc</displayName>
			</currency>
			<currency type="BMD">
				<displayName>bermudisk dollar</displayName>
			</currency>
			<currency type="BND">
				<displayName>bruneisk dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>bolivisk peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>bolivisk mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>brasiliansk cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>brasiliansk cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>brasiliansk cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>brasiliansk real</displayName>
				<symbol>BRL</symbol>
			</currency>
			<currency type="BRN">
				<displayName>brasiliansk cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>brasiliansk cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>bahamisk dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>bhutansk ngultrum</displayName>
			</currency>
			<currency type="BUK">
				<displayName>burmesisk kyat</displayName>
			</currency>
			<currency type="CNY">
				<displayName>kinesisk yuan renminbi</displayName>
			</currency>
			<currency type="CVE">
				<displayName>kappverdisk escudo</displayName>
			</currency>
			<currency type="DKK">
				<displayName>dansk krone</displayName>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<symbol>EUR</symbol>
			</currency>
			<currency type="GBP">
				<displayName>britisk pund sterling</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau-peso</displayName>
			</currency>
			<currency type="INR">
				<displayName>indisk rupi</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="JPY">
				<displayName>japansk yen</displayName>
				<symbol>JPY</symbol>
			</currency>
			<currency type="MZN">
				<displayName>mosambikisk metical</displayName>
			</currency>
			<currency type="NOK">
				<displayName>norsk krone</displayName>
				<symbol>kr</symbol>
			</currency>
			<currency type="RUB">
				<displayName>russisk rubel</displayName>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome og Principe-dobra</displayName>
			</currency>
			<currency type="USD">
				<displayName>amerikansk dollar</displayName>
				<symbol>USD</symbol>
			</currency>
			<currency type="XOF">
				<displayName>CFA franc BCEAO</displayName>
			</currency>
			<currency type="XXX">
				<displayName>ukjend eller ugyldig valuta</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>sørafrikansk rand (finansiell)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>sørafrikansk rand</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>zambisk kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>zairisk ny zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>zairisk zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>zimbabwisk dollar</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nei:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[F�i�##Locale/Data/or_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="or"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[j^u�HHLocale/Data/tl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.6 $"/>
        <generation date="$Date: 2008/06/02 20:30:10 $"/>
        <language type="tl"/>
    </identity>
    <alias source="fil" path="//ldml"/>
</ldml>PKpG[���]]Locale/Data/de_CH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="de"/>
		<territory type="CH"/>
	</identity>
	<localeDisplayNames>
		<territories>
			<territory type="BD">Bangladesh</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BW">Botswana</territory>
			<territory type="CV">Kapverden</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="GB">Grossbritannien</territory>
			<territory type="MH">Marshall-Inseln</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SB">Salomon-Inseln</territory>
			<territory type="ST">Sao Tomé und Principe</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
	</localeDisplayNames>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>‹</alternateQuotationStart>
		<alternateQuotationEnd>›</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>'</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[S���##Locale/Data/eu_ES.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="eu"/>
		<territory type="ES"/>
	</identity>
</ldml>
PKpG[�tj+""Locale/Data/ug_Arab.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.3 $"/>
		<generation date="$Date: 2008/06/17 14:12:16 $"/>
		<language type="ug"/>
		<script type="Arab"/>
	</identity>
</ldml>

PKpG[?�0##Locale/Data/fo_FO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="fo"/>
		<territory type="FO"/>
	</identity>
</ldml>
PKpG[���i�
�
Locale/Data/nl_BE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.65 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="nl"/>
		<territory type="BE"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="lv">Lets</language>
			<language type="oc">Occitaans (na 1500); Provençaals</language>
			<language type="sh">Servo-Kroatisch</language>
			<language type="ssa">Nilo-Saharaans</language>
		</languages>
		<territories>
			<territory type="013">Centraal-Amerika</territory>
			<territory type="IM">Het Eiland Man</territory>
			<territory type="MV">Malediven</territory>
			<territory type="SB">Salomoneilanden</territory>
		</territories>
		<types>
			<type type="traditional" key="collation">Traditioneel</type>
		</types>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[.��?##Locale/Data/en_MP.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="MP"/>
	</identity>
</ldml>
PKpG[=�*�##Locale/Data/cs_CZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="cs"/>
		<territory type="CZ"/>
	</identity>
</ldml>
PKpG[�ue7��Locale/Data/am.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.77 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="am"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">አፋርኛ</language>
			<language type="ab">አብሐዚኛ</language>
			<language type="af">አፍሪካንስኛ</language>
			<language type="am">አማርኛ</language>
			<language type="ar">ዐርቢኛ</language>
			<language type="as">አሳሜዛዊ</language>
			<language type="ay">አያማርኛ</language>
			<language type="az">አዜርባይጃንኛ</language>
			<language type="ba">ባስኪርኛ</language>
			<language type="be">ቤላራሻኛ</language>
			<language type="bg">ቡልጋሪኛ</language>
			<language type="bh">ቢሃሪ</language>
			<language type="bi">ቢስላምኛ</language>
			<language type="bn">በንጋሊኛ</language>
			<language type="bo">ትበትንኛ</language>
			<language type="br">ብሬቶንኛ</language>
			<language type="bs">ቦስኒያንኛ</language>
			<language type="byn">ብሊን</language>
			<language type="ca">ካታላንኛ</language>
			<language type="co">ኮርሲካኛ</language>
			<language type="cs">ቼክኛ</language>
			<language type="cy">ወልሽ</language>
			<language type="da">ዴኒሽ</language>
			<language type="de">ጀርመን</language>
			<language type="dz">ድዞንግኻኛ</language>
			<language type="el">ግሪክኛ</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="eo">ኤስፐራንቶ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="et">ኤስቶኒአን</language>
			<language type="eu">ባስክኛ</language>
			<language type="fa">ፐርሲያኛ</language>
			<language type="fi">ፊኒሽ</language>
			<language type="fil">ፊሊፕንኛ</language>
			<language type="fj">ፊጂኛ</language>
			<language type="fo">ፋሮኛ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="fy">ፍሪስኛ</language>
			<language type="ga">አይሪሽ</language>
			<language type="gd">እስኮትስ ጌልክኛ</language>
			<language type="gez">ግዕዝኛ</language>
			<language type="gl">ጋለጋኛ</language>
			<language type="gn">ጓራኒኛ</language>
			<language type="gu">ጉጃርቲኛ</language>
			<language type="ha">ሃውሳኛ</language>
			<language type="he">ዕብራስጥ</language>
			<language type="hi">ሐንድኛ</language>
			<language type="hr">ክሮሽያንኛ</language>
			<language type="hu">ሀንጋሪኛ</language>
			<language type="hy">አርመናዊ</language>
			<language type="ia">ኢንቴርሊንጓ</language>
			<language type="id">እንዶኒሲኛ</language>
			<language type="ie">እንተርሊንግወ</language>
			<language type="ik">እኑፒያቅኛ</language>
			<language type="is">አይስላንድኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="iu">እኑክቲቱትኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="jv">ጃቫንኛ</language>
			<language type="ka">ጊዮርጊያን</language>
			<language type="kk">ካዛክኛ</language>
			<language type="kl">ካላሊሱትኛ</language>
			<language type="km">ክመርኛ</language>
			<language type="kn">ካናዳኛ</language>
			<language type="ko">ኮሪያኛ</language>
			<language type="ks">ካሽሚርኛ</language>
			<language type="ku">ኩርድሽኛ</language>
			<language type="ky">ኪርጊዝኛ</language>
			<language type="la">ላቲንኛ</language>
			<language type="ln">ሊንጋላኛ</language>
			<language type="lo">ላውስኛ</language>
			<language type="lt">ሊቱአኒያን</language>
			<language type="lv">ላትቪያን</language>
			<language type="mg">ማላጋስኛ</language>
			<language type="mi">ማዮሪኛ</language>
			<language type="mk">ማከዶኒኛ</language>
			<language type="ml">ማላያላምኛ</language>
			<language type="mn">ሞንጎላዊኛ</language>
			<language type="mo">ሞልዳቫዊና</language>
			<language type="mr">ማራዚኛ</language>
			<language type="ms">ማላይኛ</language>
			<language type="mt">ማልቲስኛ</language>
			<language type="my">ቡርማኛ</language>
			<language type="na">ናኡሩ</language>
			<language type="ne">ኔፓሊኛ</language>
			<language type="nl">ደች</language>
			<language type="nn">የኖርዌ አዲሱ ኖርዌጅያንኛ</language>
			<language type="no">ኖርዌጂያን</language>
			<language type="oc">ኦኪታንኛ</language>
			<language type="om">ኦሮምኛ</language>
			<language type="or">ኦሪያኛ</language>
			<language type="pa">ፓንጃቢኛ</language>
			<language type="pl">ፖሊሽ</language>
			<language type="ps">ፑሽቶኛ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="pt_BR">ፖርቱጋሊኛ (የብራዚል)</language>
			<language type="pt_PT">ፖርቱጋሊኛ (የፖርቱጋል)</language>
			<language type="qu">ኵቿኛ</language>
			<language type="rm">ሮማንስ</language>
			<language type="rn">ሩንዲኛ</language>
			<language type="ro">ሮማኒያን</language>
			<language type="ru">ራሽኛ</language>
			<language type="rw">ኪንያርዋንድኛ</language>
			<language type="sa">ሳንስክሪትኛ</language>
			<language type="sd">ሲንድሂኛ</language>
			<language type="sg">ሳንጎኛ</language>
			<language type="sh">ሰርቦ-ክሮኤሽያኛ</language>
			<language type="si">ስንሃልኛ</language>
			<language type="sid">ሲዳምኛ</language>
			<language type="sk">ስሎቫክኛ</language>
			<language type="sl">ስሎቪኛ</language>
			<language type="sm">ሳሞአኛ</language>
			<language type="sn">ሾናኛ</language>
			<language type="so">ሱማልኛ</language>
			<language type="sq">ልቤኒኛ</language>
			<language type="sr">ሰርቢኛ</language>
			<language type="ss">ስዋቲኛ</language>
			<language type="st">ሶዞኛ</language>
			<language type="su">ሱዳንኛ</language>
			<language type="sv">ስዊድንኛ</language>
			<language type="sw">ስዋሂሊኛ</language>
			<language type="ta">ታሚልኛ</language>
			<language type="te">ተሉጉኛ</language>
			<language type="tg">ታጂኪኛ</language>
			<language type="th">ታይኛ</language>
			<language type="ti">ትግርኛ</language>
			<language type="tig">ትግረ</language>
			<language type="tk">ቱርክመንኛ</language>
			<language type="tl">ታጋሎገኛ</language>
			<language type="tlh">ክሊንግኦንኛ</language>
			<language type="tn">ጽዋናዊኛ</language>
			<language type="to">ቶንጋ</language>
			<language type="tr">ቱርክኛ</language>
			<language type="ts">ጾንጋኛ</language>
			<language type="tt">ታታርኛ</language>
			<language type="tw">ትዊኛ</language>
			<language type="ug">ኡዊግሁርኛ</language>
			<language type="uk">ዩክረኒኛ</language>
			<language type="und">ያልተወሰነ</language>
			<language type="ur">ኡርዱኛ</language>
			<language type="uz">ኡዝበክኛ</language>
			<language type="vi">ቪትናምኛ</language>
			<language type="vo">ቮላፑክኛ</language>
			<language type="wo">ዎሎፍኛ</language>
			<language type="xh">ዞሳኛ</language>
			<language type="yi">ይዲሻዊኛ</language>
			<language type="yo">ዮሩባዊኛ</language>
			<language type="za">ዡዋንግኛ</language>
			<language type="zh">ቻይንኛ</language>
			<language type="zu">ዙሉኛ</language>
		</languages>
		<scripts>
			<script type="Arab">አረቢክ</script>
			<script type="Armn">የአርማኒያ ፊደል</script>
			<script type="Beng">ቤንጃሊ</script>
			<script type="Bopo">ቡፖሞፎ</script>
			<script type="Brai">ብሬይል</script>
			<script type="Buhd">ቡሂድ</script>
			<script type="Cans">የተዋሐዱ የካናዳ ጥንታዊ ምልክቶች</script>
			<script type="Cher">ቼሮኪ</script>
			<script type="Copt">ኮፕቲክ</script>
			<script type="Cprt">ሲፕሪኦት</script>
			<script type="Cyrl">ሲርሊክ</script>
			<script type="Deva">ዴቫናጋሪ</script>
			<script type="Dsrt">ዴዘረት</script>
			<script type="Ethi">ፊደል</script>
			<script type="Geor">የጆርጂያ ፊደል</script>
			<script type="Goth">ጐቲክ</script>
			<script type="Grek">ግሪክ</script>
			<script type="Gujr">ጉጃራቲ</script>
			<script type="Guru">ጉርሙኪ</script>
			<script type="Hang">ሀንጉል</script>
			<script type="Hani">ሀን</script>
			<script type="Hano">ሀኑኦ</script>
			<script type="Hans">ቀላል ሀን</script>
			<script type="Hant">ባሕላዊ ሀን</script>
			<script type="Hebr">እብራይስጥ</script>
			<script type="Hira">ሂራጋና</script>
			<script type="Hrkt">ካታካና ወይንም ሂራጋና</script>
			<script type="Kana">ክአታካና</script>
			<script type="Khmr">ካኽሜር</script>
			<script type="Knda">ካናዳ</script>
			<script type="Laoo">ላኦ</script>
			<script type="Latn">ላቲን</script>
			<script type="Limb">ሊምቡ</script>
			<script type="Lina">ሊኒያር ኤ</script>
			<script type="Linb">ሊኒያር ቢ</script>
			<script type="Mlym">ማላያላም</script>
			<script type="Mong">የሞንጎሊያ ፊደል</script>
			<script type="Mymr">ሚአንማር</script>
			<script type="Ogam">ኦግሀም</script>
			<script type="Orya">ኦሪያ</script>
			<script type="Osma">ኦስማኒያ</script>
			<script type="Qaai">የተወረሰ</script>
			<script type="Runr">ሩኒክ</script>
			<script type="Shaw">የሻቪያ ፊደል</script>
			<script type="Sinh">ሲንሃላ</script>
			<script type="Syrc">ሲሪክ</script>
			<script type="Tagb">ትአግባንዋ</script>
			<script type="Tale">ታኢ ለ</script>
			<script type="Talu">አዲስ ታኢ ሉ</script>
			<script type="Taml">ታሚል</script>
			<script type="Telu">ቴሉጉ</script>
			<script type="Tglg">ታጋሎግ</script>
			<script type="Thaa">ታኸና</script>
			<script type="Thai">ታኢ</script>
			<script type="Tibt">ቲቤታን</script>
			<script type="Ugar">ኡጋሪቲክ</script>
			<script type="Vaii">ቫይ</script>
			<script type="Yiii">ዪ</script>
		</scripts>
		<territories>
			<territory type="001">ዓለም</territory>
			<territory type="002">አፍሪካ</territory>
			<territory type="005">ደቡባዊ አሜሪካ</territory>
			<territory type="009">ኦሽኒያ</territory>
			<territory type="011">ምዕራባዊ አፍሪካ</territory>
			<territory type="013">መካከለኛ አሜሪካ [013]</territory>
			<territory type="014">ምስራቃዊ አፍሪካ</territory>
			<territory type="015">ሰሜናዊ አፍሪካ</territory>
			<territory type="017">መካከለኛ አፍሪካ</territory>
			<territory type="018">ደቡባዊ አፍሪካ</territory>
			<territory type="019">አሜሪካዎች</territory>
			<territory type="021">ሰሜናዊ አሜሪካ</territory>
			<territory type="029">ካሪቢያን</territory>
			<territory type="030">ደቡብ-ምሥራቃዊ እስያ [030]</territory>
			<territory type="034">ምሥራቃዊ እስያ</territory>
			<territory type="035">ደቡብ-ምሥራቃዊ እስያ [035]</territory>
			<territory type="039">ደቡባዊ አውሮፓ</territory>
			<territory type="053">አውስትራሊያ እና ኒው ዚላንድ</territory>
			<territory type="054">ሜላኔሲያ</territory>
			<territory type="057">ሚክሮኔዢያ [057]</territory>
			<territory type="061">ፖሊኔዢያ</territory>
			<territory type="142">እስያ</territory>
			<territory type="143">መካከለኛ አሜሪካ [143]</territory>
			<territory type="145">ምዕራባዊ እስያ</territory>
			<territory type="150">አውሮፓ</territory>
			<territory type="151">ምስራቃዊ አውሮፓ</territory>
			<territory type="154">ሰሜናዊ አውሮፓ</territory>
			<territory type="155">ምዕራባዊ አውሮፓ</territory>
			<territory type="AD">አንዶራ</territory>
			<territory type="AE">የተባበሩት አረብ ኤምሬትስ</territory>
			<territory type="AF">አፍጋኒስታን</territory>
			<territory type="AG">አንቲጓ እና ባሩዳ</territory>
			<territory type="AI">አንጉኢላ</territory>
			<territory type="AL">አልባኒያ</territory>
			<territory type="AM">አርሜኒያ</territory>
			<territory type="AN">ኔዘርላንድስ አንቲልስ</territory>
			<territory type="AO">አንጐላ</territory>
			<territory type="AQ">አንታርክቲካ</territory>
			<territory type="AR">አርጀንቲና</territory>
			<territory type="AS">የአሜሪካ ሳሞአ</territory>
			<territory type="AT">ኦስትሪያ</territory>
			<territory type="AU">አውስትሬሊያ</territory>
			<territory type="AW">አሩባ</territory>
			<territory type="AX">የአላንድ ደሴቶች</territory>
			<territory type="AZ">አዘርባጃን</territory>
			<territory type="BA">ቦስኒያ እና ሄርዞጎቪኒያ</territory>
			<territory type="BB">ባርቤዶስ</territory>
			<territory type="BD">ባንግላዲሽ</territory>
			<territory type="BE">ቤልጄም</territory>
			<territory type="BF">ቡርኪና ፋሶ</territory>
			<territory type="BG">ቡልጌሪያ</territory>
			<territory type="BH">ባህሬን</territory>
			<territory type="BI">ብሩንዲ</territory>
			<territory type="BJ">ቤኒን</territory>
			<territory type="BM">ቤርሙዳ</territory>
			<territory type="BN">ብሩኒ</territory>
			<territory type="BO">ቦሊቪያ</territory>
			<territory type="BR">ብራዚል</territory>
			<territory type="BS">ባሃማስ</territory>
			<territory type="BT">ቡህታን</territory>
			<territory type="BV">የቦውቬት ደሴት</territory>
			<territory type="BW">ቦትስዋና</territory>
			<territory type="BY">ቤላሩስ</territory>
			<territory type="BZ">ቤሊዘ</territory>
			<territory type="CA">ካናዳ</territory>
			<territory type="CC">ኮኮስ ኬሊንግ ደሴቶች</territory>
			<territory type="CD">ኮንጎ</territory>
			<territory type="CF">የመካከለኛው አፍሪካ ሪፐብሊክ</territory>
			<territory type="CG">ኮንጐ</territory>
			<territory type="CH">ስዊዘርላንድ</territory>
			<territory type="CI">ኮት ዲቯር</territory>
			<territory type="CK">ኩክ ደሴቶች</territory>
			<territory type="CL">ቺሊ</territory>
			<territory type="CM">ካሜሩን</territory>
			<territory type="CN">ቻይና</territory>
			<territory type="CO">ኮሎምቢያ</territory>
			<territory type="CR">ኮስታ ሪካ</territory>
			<territory type="CS">ሰርቢያ</territory>
			<territory type="CU">ኩባ</territory>
			<territory type="CV">ኬፕ ቬርዴ</territory>
			<territory type="CX">የገና ደሴቶች</territory>
			<territory type="CY">ሳይፕረስ</territory>
			<territory type="CZ">ቼክ ሪፑብሊክ</territory>
			<territory type="DE">ጀርመን</territory>
			<territory type="DJ">ጂቡቲ</territory>
			<territory type="DK">ዴንማርክ</territory>
			<territory type="DM">ዶሚኒካ</territory>
			<territory type="DO">ዶሚኒክ ሪፑብሊክ</territory>
			<territory type="DZ">አልጄሪያ</territory>
			<territory type="EC">ኢኳዶር</territory>
			<territory type="EE">ኤስቶኒያ</territory>
			<territory type="EG">ግብጽ</territory>
			<territory type="EH">ምዕራባዊ ሳህራ</territory>
			<territory type="ER">ኤርትራ</territory>
			<territory type="ES">ስፔን</territory>
			<territory type="ET">ኢትዮጵያ</territory>
			<territory type="FI">ፊንላንድ</territory>
			<territory type="FJ">ፊጂ</territory>
			<territory type="FK">የፎልክላንድ ደሴቶች</territory>
			<territory type="FM">ሚክሮኔዢያ</territory>
			<territory type="FO">የፋሮይ ደሴቶች</territory>
			<territory type="FR">ፈረንሳይ</territory>
			<territory type="GA">ጋቦን</territory>
			<territory type="GB">እንግሊዝ</territory>
			<territory type="GD">ግሬናዳ</territory>
			<territory type="GE">ጆርጂያ</territory>
			<territory type="GF">የፈረንሳይ ጉዊአና</territory>
			<territory type="GH">ጋና</territory>
			<territory type="GI">ጊብራልታር</territory>
			<territory type="GL">ግሪንላንድ</territory>
			<territory type="GM">ጋምቢያ</territory>
			<territory type="GN">ጊኒ</territory>
			<territory type="GP">ጉዋደሉፕ</territory>
			<territory type="GQ">ኢኳቶሪያል ጊኒ</territory>
			<territory type="GR">ግሪክ</territory>
			<territory type="GS">ደቡብ ጆርጂያ እና የደቡድ ሳንድዊች ደሴቶች</territory>
			<territory type="GT">ጉዋቲማላ</territory>
			<territory type="GU">ጉዋም</territory>
			<territory type="GW">ቢሳዎ</territory>
			<territory type="GY">ጉያና</territory>
			<territory type="HK">ሆንግ ኮንግ</territory>
			<territory type="HM">የኧርድ እና የማክዶናልድ ደሴቶች</territory>
			<territory type="HN">ሆንዱራስ</territory>
			<territory type="HR">ክሮኤሽያ</territory>
			<territory type="HT">ሀይቲ</territory>
			<territory type="HU">ሀንጋሪ</territory>
			<territory type="ID">ኢንዶኔዢያ</territory>
			<territory type="IE">አየርላንድ</territory>
			<territory type="IL">እስራኤል</territory>
			<territory type="IN">ህንድ</territory>
			<territory type="IO">የብሪታኒያ ህንድ ውቂያኖስ ግዛት</territory>
			<territory type="IQ">ኢራቅ</territory>
			<territory type="IR">ኢራን</territory>
			<territory type="IS">አይስላንድ</territory>
			<territory type="IT">ጣሊያን</territory>
			<territory type="JM">ጃማይካ</territory>
			<territory type="JO">ጆርዳን</territory>
			<territory type="JP">ጃፓን</territory>
			<territory type="KE">ኬንያ</territory>
			<territory type="KH">ካምቦዲያ</territory>
			<territory type="KI">ኪሪባቲ</territory>
			<territory type="KM">ኮሞሮስ</territory>
			<territory type="KN">ቅዱስ ኪትስ እና ኔቪስ</territory>
			<territory type="KP">ሰሜን ኮሪያ</territory>
			<territory type="KR">ደቡብ ኮሪያ</territory>
			<territory type="KW">ክዌት</territory>
			<territory type="KY">ካይማን ደሴቶች</territory>
			<territory type="LA">ላኦስ</territory>
			<territory type="LB">ሊባኖስ</territory>
			<territory type="LC">ሴንት ሉቺያ</territory>
			<territory type="LI">ሊችተንስታይን</territory>
			<territory type="LK">ሲሪላንካ</territory>
			<territory type="LR">ላይቤሪያ</territory>
			<territory type="LS">ሌሶቶ</territory>
			<territory type="LT">ሊቱዌኒያ</territory>
			<territory type="LU">ሉክሰምበርግ</territory>
			<territory type="LV">ላትቪያ</territory>
			<territory type="LY">ሊቢያ</territory>
			<territory type="MA">ሞሮኮ</territory>
			<territory type="MC">ሞናኮ</territory>
			<territory type="MD">ሞልዶቫ</territory>
			<territory type="MG">ማዳጋስካር</territory>
			<territory type="MH">ማርሻል አይላንድ</territory>
			<territory type="MK">ማከዶኒያ</territory>
			<territory type="ML">ማሊ</territory>
			<territory type="MM">ማያንማር</territory>
			<territory type="MN">ሞንጎሊያ</territory>
			<territory type="MO">ማካዎ</territory>
			<territory type="MP">የሰሜናዊ ማሪያና ደሴቶች</territory>
			<territory type="MQ">ማርቲኒክ</territory>
			<territory type="MR">ሞሪቴኒያ</territory>
			<territory type="MS">ሞንትሴራት</territory>
			<territory type="MT">ማልታ</territory>
			<territory type="MU">ማሩሸስ</territory>
			<territory type="MV">ማልዲቭስ</territory>
			<territory type="MW">ማላዊ</territory>
			<territory type="MX">ሜክሲኮ</territory>
			<territory type="MY">ማሌዢያ</territory>
			<territory type="MZ">ሞዛምቢክ</territory>
			<territory type="NA">ናሚቢያ</territory>
			<territory type="NC">ኒው ካሌዶኒያ</territory>
			<territory type="NE">ኒጀር</territory>
			<territory type="NF">ኖርፎልክ ደሴት</territory>
			<territory type="NG">ናይጄሪያ</territory>
			<territory type="NI">ኒካራጓ</territory>
			<territory type="NL">ኔዘርላንድ</territory>
			<territory type="NO">ኖርዌ</territory>
			<territory type="NP">ኔፓል</territory>
			<territory type="NR">ናኡሩ</territory>
			<territory type="NU">ኒኡይ</territory>
			<territory type="NZ">ኒው ዚላንድ</territory>
			<territory type="OM">ኦማን</territory>
			<territory type="PA">ፓናማ</territory>
			<territory type="PE">ፔሩ</territory>
			<territory type="PF">የፈረንሳይ ፖሊኔዢያ</territory>
			<territory type="PG">ፓፑዋ ኒው ጊኒ</territory>
			<territory type="PH">ፊሊፒንስ</territory>
			<territory type="PK">ፓኪስታን</territory>
			<territory type="PL">ፖላንድ</territory>
			<territory type="PM">ቅዱስ ፒዬር እና ሚኩኤሎን</territory>
			<territory type="PN">ፒትካኢርን</territory>
			<territory type="PR">ፖርታ ሪኮ</territory>
			<territory type="PS">የፍልስጤም ግዛት</territory>
			<territory type="PT">ፖርቱጋል</territory>
			<territory type="PW">ፓላው</territory>
			<territory type="PY">ፓራጓይ</territory>
			<territory type="QA">ኳታር</territory>
			<territory type="QO">ወጣ ያለ ኦሽኒያ</territory>
			<territory type="RE">ሪዩኒየን</territory>
			<territory type="RO">ሮሜኒያ</territory>
			<territory type="RU">ራሺያ</territory>
			<territory type="RW">ሩዋንዳ</territory>
			<territory type="SA">ሳውድአረቢያ</territory>
			<territory type="SB">ሰሎሞን ደሴት</territory>
			<territory type="SC">ሲሼልስ</territory>
			<territory type="SD">ሱዳን</territory>
			<territory type="SE">ስዊድን</territory>
			<territory type="SG">ሲንጋፖር</territory>
			<territory type="SH">ሴንት ሄለና</territory>
			<territory type="SI">ስሎቬኒያ</territory>
			<territory type="SJ">የስቫልባርድ እና ዣን ማየን ደሴቶች</territory>
			<territory type="SK">ስሎቫኪያ</territory>
			<territory type="SL">ሴራሊዮን</territory>
			<territory type="SM">ሳን ማሪኖ</territory>
			<territory type="SN">ሴኔጋል</territory>
			<territory type="SO">ሱማሌ</territory>
			<territory type="SR">ሱሪናም</territory>
			<territory type="ST">ሳኦ ቶሜ እና ፕሪንሲፔ</territory>
			<territory type="SV">ኤል ሳልቫዶር</territory>
			<territory type="SY">ሲሪያ</territory>
			<territory type="SZ">ሱዋዚላንድ</territory>
			<territory type="TC">የቱርኮችና የካኢኮስ ደሴቶች</territory>
			<territory type="TD">ቻድ</territory>
			<territory type="TF">የፈረንሳይ ደቡባዊ ግዛቶች</territory>
			<territory type="TG">ቶጐ</territory>
			<territory type="TH">ታይላንድ</territory>
			<territory type="TJ">ታጃኪስታን</territory>
			<territory type="TK">ቶክላው</territory>
			<territory type="TL">ምስራቅ ቲሞር</territory>
			<territory type="TM">ቱርክሜኒስታን</territory>
			<territory type="TN">ቱኒዚያ</territory>
			<territory type="TO">ቶንጋ</territory>
			<territory type="TR">ቱርክ</territory>
			<territory type="TT">ትሪኒዳድ እና ቶባጎ</territory>
			<territory type="TV">ቱቫሉ</territory>
			<territory type="TW">ታይዋን</territory>
			<territory type="TZ">ታንዛኒያ</territory>
			<territory type="UA">ዩክሬን</territory>
			<territory type="UG">ዩጋንዳ</territory>
			<territory type="UM">የአሜሪካ ራቅ ያሉ አናሳ ደሴቶች</territory>
			<territory type="US">አሜሪካ</territory>
			<territory type="UY">ኡራጓይ</territory>
			<territory type="UZ">ዩዝበኪስታን</territory>
			<territory type="VA">ቫቲካን</territory>
			<territory type="VC">ቅዱስ ቪንሴንት እና ግሬናዲንስ</territory>
			<territory type="VE">ቬንዙዌላ</territory>
			<territory type="VG">የእንግሊዝ ድንግል ደሴቶች</territory>
			<territory type="VI">የአሜሪካ ቨርጂን ደሴቶች</territory>
			<territory type="VN">ቬትናም</territory>
			<territory type="VU">ቫኑአቱ</territory>
			<territory type="WF">ዋሊስ እና ፉቱና ደሴቶች</territory>
			<territory type="WS">ሳሞአ</territory>
			<territory type="YE">የመን</territory>
			<territory type="YT">ሜይኦቴ</territory>
			<territory type="ZA">ደቡብ አፍሪካ</territory>
			<territory type="ZM">ዛምቢያ</territory>
			<territory type="ZW">ዚምቧቤ</territory>
		</territories>
		<keys>
			<key type="calendar">የቀን መቁጠሪያ</key>
			<key type="collation">የጽሑፎች ንፅፅር</key>
			<key type="currency">ገንዘብ</key>
		</keys>
		<types>
			<type type="big5han" key="collation">የቻይና ባህላዊ ቅደም ተከተል (Big5)</type>
			<type type="buddhist" key="calendar">የቡድሐ የቀን መቁጠሪያ</type>
			<type type="chinese" key="calendar">የቻይና የቀን መቁጠሪያ</type>
			<type type="direct" key="collation">ቀጥታ የቃላት ንፅፅር</type>
			<type type="gb2312han" key="collation">የቀለል ያለ ቻይንኛ (GB2312) ቅደም ተከተል</type>
			<type type="gregorian" key="calendar">የግሪጐሪ የቀን መቁጠሪያ</type>
			<type type="hebrew" key="calendar">የእብራይስጥ የቀን መቁጠሪያ</type>
			<type type="islamic" key="calendar">የእስላም የቀን መቁጠሪያ</type>
			<type type="islamic-civil" key="calendar">የእስላም ሕዝባዊ የቀን መቁጠሪያ</type>
			<type type="japanese" key="calendar">የጃፓን የቀን መቁጠሪያ</type>
			<type type="phonebook" key="collation">የስልክ ማውጫ ቅደም ተከተል</type>
			<type type="pinyin" key="collation">የፒንዪን ቅደም ተከተል</type>
			<type type="stroke" key="collation">የጭረት/የመቀቢያ ቅደም ተከተል</type>
			<type type="traditional" key="collation">ባህላዊ ቅደም ተከተል</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="metric">ሜትሪክ</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ሀ-ሆ ለ-ቆ ቈ ቊ-ቍ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ወ-ዎ ዐ-ዖ ዘ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጠ-ፚ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[᎐-᎙ ሇ ⶀ ᎀ-ᎃ ⶁ-ⶄ ቇ ቐ-ቖ ቘ ቚ-ቝ ᎄ-ᎇ ⶅ-ⶇ ኇ ⶈ-ⶊ ኯ ዀ ዂ-ዅ ዏ ⶋ ⶌ ዸ-ዿ ⶍ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ⶏ-ⶑ ᎈ-ᎏ ⶒ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>‹</alternateQuotationStart>
		<alternateQuotationEnd>›</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="coptic">
				<eras>
					<eraAbbr>
						<era type="0">ዓ/ዓ</era>
						<era type="1">ዓ/ም</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="ethiopic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">መስከ</month>
							<month type="2">ጥቅም</month>
							<month type="3">ኅዳር</month>
							<month type="4">ታኅሣ</month>
							<month type="5">ጥር</month>
							<month type="6">የካቲ</month>
							<month type="7">መጋቢ</month>
							<month type="8">ሚያዝ</month>
							<month type="9">ግንቦ</month>
							<month type="10">ሰኔ</month>
							<month type="11">ሐምሌ</month>
							<month type="12">ነሐሴ</month>
							<month type="13">ጳጉሜ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">መስከረም</month>
							<month type="2">ጥቅምት</month>
							<month type="3">ኅዳር</month>
							<month type="4">ታኅሣሥ</month>
							<month type="5">ጥር</month>
							<month type="6">የካቲት</month>
							<month type="7">መጋቢት</month>
							<month type="8">ሚያዝያ</month>
							<month type="9">ግንቦት</month>
							<month type="10">ሰኔ</month>
							<month type="11">ሐምሌ</month>
							<month type="12">ነሐሴ</month>
							<month type="13">ጳጉሜን</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጃንዩ</month>
							<month type="2">ፌብሩ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረ</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስ</month>
							<month type="9">ሴፕቴ</month>
							<month type="10">ኦክተ</month>
							<month type="11">ኖቬም</month>
							<month type="12">ዲሴም</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጃንዩወሪ</month>
							<month type="2">ፌብሩወሪ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረል</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስት</month>
							<month type="9">ሴፕቴምበር</month>
							<month type="10">ኦክተውበር</month>
							<month type="11">ኖቬምበር</month>
							<month type="12">ዲሴምበር</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ጃ</month>
							<month type="2">ፌ</month>
							<month type="3">ማ</month>
							<month type="4">ኤ</month>
							<month type="5">ሜ</month>
							<month type="6">ጁ</month>
							<month type="7">ጁ</month>
							<month type="8">ኦ</month>
							<month type="9">ሴ</month>
							<month type="10">ኦ</month>
							<month type="11">ኖ</month>
							<month type="12">ዲ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">እሑድ</day>
							<day type="mon">ሰኞ</day>
							<day type="tue">ማክሰ</day>
							<day type="wed">ረቡዕ</day>
							<day type="thu">ሐሙስ</day>
							<day type="fri">ዓርብ</day>
							<day type="sat">ቅዳሜ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">እሑድ</day>
							<day type="mon">ሰኞ</day>
							<day type="tue">ማክሰኞ</day>
							<day type="wed">ረቡዕ</day>
							<day type="thu">ሐሙስ</day>
							<day type="fri">ዓርብ</day>
							<day type="sat">ቅዳሜ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">እ</day>
							<day type="mon">ሰ</day>
							<day type="tue">ማ</day>
							<day type="wed">ረ</day>
							<day type="thu">ሐ</day>
							<day type="fri">ዓ</day>
							<day type="sat">ቅ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ጡዋት</am>
				<pm>ከሳዓት</pm>
				<eras>
					<eraAbbr>
						<era type="0">ዓ/ዓ</era>
						<era type="1">ዓ/ም</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፣ dd MMMM ቀን yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>hh:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM - yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="d">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="y">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ዘመን</displayName>
					</field>
					<field type="year">
						<displayName>ዓመት</displayName>
					</field>
					<field type="month">
						<displayName>ወር</displayName>
					</field>
					<field type="week">
						<displayName>ሳምንት</displayName>
					</field>
					<field type="day">
						<displayName>ቀን</displayName>
					</field>
					<field type="hour">
						<displayName>ሰዓት</displayName>
					</field>
					<field type="minute">
						<displayName>ደቂቃ</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">ሙሀረም</month>
							<month type="2">ሳፈር</month>
							<month type="3">ረቢዑል አወል</month>
							<month type="4">ረቢዑል አኺር</month>
							<month type="5">ጀማደል አወል</month>
							<month type="6">ጀማደል አኺር</month>
							<month type="7">ረጀብ</month>
							<month type="8">ሻእባን</month>
							<month type="9">ረመዳን</month>
							<month type="10">ሸዋል</month>
							<month type="11">ዙልቂዳህ</month>
							<month type="12">ዙልሂጃህ</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Antarctica/Rothera">
				<exemplarCity>ሮተራ</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>ፓልመር</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>South_Pole</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>ስዮዋ</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>ማውሰን</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>ዴቪስ</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ቮስቱክ</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>ቼሲ</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>ዱሞንትዱርቪል</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>ማክሙርዶ</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Rio_Gallegos</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>ሜንዶዛ</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>San_Juan</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>La_Rioja</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>ካታማርካ</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>ጁጁይ</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>ኮርዶባ</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ቡኤኖስ-ኤይሪስ</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>ፕርዝ</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>ዳርዊን</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>አዴላኢደ</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ብሮከን ሂል</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>ሜልቦኡመ</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>ሆባርት</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>ሊንደማን</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>ሲድኒ</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ቢሪስባን</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>ሎርድ ሆዌ</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>ኢሩኔፕ</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>ሪኦ ብራንኮ</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>ፖርቶ ቨልሆ</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>ቦአ ቪስታ</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>ማናኡስ</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>ኩባ</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Campo_Grande</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>በለም</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>አራጉአኢና</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>ሳኦ ፓውሎ</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>America/Bahia</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>ፎርታለዛ</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>ማቺዎ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>ሪሲፋይ</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>ኖሮሃ</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>ዳውሰን</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>ሁዋይትሆርስ</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>ኢኑቪክ</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>ቫንኩቨር</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>ዳውሰን ክሪክ</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>የሎውናይፍ</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>ኤድመንተን</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>ስዊፍት ከረንት</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>ካምብሪጅ ቤይ</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>ሬጂና</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>ዊኒፔግ</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>ሬኒ ሪቨር</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>ራንኪን ኢንሌት</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>ተንደር ቤይ</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>ኒፒጎን</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>ቶሮንቶ</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>ሞንትሪያል</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>ኢካሊኡት</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>ፓንግኒርቱንግ</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>ሀሊፋክስ</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>ጉዝ ቤይ</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>ግሌስ ቤይ</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>ሴንት ጆንስ</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>ኪንሻሳ</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>ሉቡምባሺ</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ኢስተር</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>ሳንቲያጎ</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>ካሽጋር</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>ኡሩምኪ</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>ቾንግኪንግ</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>ሻንጋይ</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>ባርቢን</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>ጋላፓጎስ</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>ጓያኪል</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>ካናሪ</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>ኬውታ</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>ማርድሪድ</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ትሩክ</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>ፖኔፕ</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>ኮስራይ</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>ሎንዶን</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>ቱለ</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>ጐድታኽብ</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>ስኮረስቢሱንድ</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>ዴንማርክ</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>ጃካርታ</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>ፖንቲአንካ</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>ማካሳር</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ጃያፑራ</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>እንደርቡርይ</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>ኪሪቲማቲ</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>ታራዋ</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>አክታው</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ኦራል</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>አክቶቤ</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>ኪዝያሎርዳ</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>አልማቲ</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>ክዋጃላይን</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>ማጁሮ</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>ባማኮ</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>ሆቭድ</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>ኡላንባታር</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>ቾይባልሳን</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>ቲጁአና</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>ሄርሞሲሎ</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>ማዛቲአን</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>ቺኽዋኽዋ</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>ሞንተሪ</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>ሜክሲኮ ሲቲ</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>ሜሪዳ</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>ካንኩን</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>ኳላልምፑር</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>ኩቺንግ</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>ቻትሃም</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>ኦክላንድ</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>ታሂቲ</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>ማሩኩሳስ</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>ጋምባየር</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>አዞረስ</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>ማዴኢራ</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>ሊስቦን</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>ካሊኒንጋርድ</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>ማስኮ</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>ሳማራ</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>የካተሪንበርግ</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ኦምስክ</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>ኖቮሲቢርስክ</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>ክራስኖያሽክ</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ኢርኩትስክ</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>ያኩትስክ</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ቭላዲቮስቱክ</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>ሳክሃሊን</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>ማጋዳን</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>ካምቻትካ</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>አናዲር</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>ኡዝጎሩድ</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>ካይቭ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>ሲምፈሮፖል</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>ዛፖሮዝሂይ</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>ሚድዌ</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>ጆንስቶን</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>ዌክ</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>አዳክ</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>ኖሜ</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>ሆኖሉሉ</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>አንኮራጅ</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>ያኩታት</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>ጁነአኡ</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>ሎስ አንጀለስ</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>ቦይስ</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ፎኔክስ</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>ዴንቨር</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>መካከል</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>ቺካጐ</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>መኖሚኔ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>ክኖክስ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>ማሬንጎ</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>ኢንዲያናፖሊስ</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>ሉዊስቪለ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>ቬቫይ</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>ሞንቲሴሎ</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>ዲትሮይት</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>ኒውዮርክ</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>ሳማርካንድ</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>ታሽኬንት</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
				<symbol>ብር</symbol>
			</currency>
			<currency type="EUR">
				<displayName>ዩሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
				<symbol>USD</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>አዎን:y</yesstr>
			<nostr>አይ:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�ɼ##Locale/Data/bn_BD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.23 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="bn"/>
		<territory type="BD"/>
	</identity>
</ldml>
PKpG[�X�##Locale/Data/en_VI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="en"/>
		<territory type="VI"/>
	</identity>
</ldml>
PKpG[��E>##Locale/Data/zu_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zu"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[+��1""Locale/Data/ne_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ne"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[�Ť����Locale/Data/fa.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.92 $"/>
		<generation date="$Date: 2008/06/17 14:12:13 $"/>
		<language type="fa"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>، </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">آفاری</language>
			<language type="ab">آبخازی</language>
			<language type="ace">آچئی</language>
			<language type="ach">آچولیایی</language>
			<language type="ada">آدانگمه‌ای</language>
			<language type="ady">آدیجیایی</language>
			<language type="ae">اوستایی</language>
			<language type="af">آفریکانس</language>
			<language type="afa">زبان افریقا و آسیایی</language>
			<language type="afh">آفریهیلی</language>
			<language type="ain">آینو</language>
			<language type="ak">آکان</language>
			<language type="akk">آکدی</language>
			<language type="ale">آلئوتی</language>
			<language type="alg">زبان آلگونکینی</language>
			<language type="alt">alt</language>
			<language type="am">امهری</language>
			<language type="an">an</language>
			<language type="ang">انگلیسی باستان</language>
			<language type="anp">آنگیکا</language>
			<language type="apa">زبان آپاچیایی</language>
			<language type="ar">عربی</language>
			<language type="arc">آرامی</language>
			<language type="arn">آروکانیایی</language>
			<language type="arp">آراپاهویی</language>
			<language type="art">زبان ساختگی</language>
			<language type="arw">آراواکی</language>
			<language type="as">آسامی</language>
			<language type="ast">ast</language>
			<language type="ath">زبان آتاپاسکایی</language>
			<language type="aus">زبان استرالیایی</language>
			<language type="av">آواری</language>
			<language type="awa">awa</language>
			<language type="ay">آیمارایی</language>
			<language type="az">ترکی آذربایجانی</language>
			<language type="ba">باشغیری</language>
			<language type="bad">باندایی</language>
			<language type="bai">bai</language>
			<language type="bal">بلوچی</language>
			<language type="ban">بالیایی</language>
			<language type="bas">باسایی</language>
			<language type="bat">زبان بالتیکی</language>
			<language type="be">بلوروسی</language>
			<language type="bej">بجایی</language>
			<language type="bem">بمبایی</language>
			<language type="ber">بربری</language>
			<language type="bg">بلغاری</language>
			<language type="bh">بیهاری</language>
			<language type="bho">بوجپوری</language>
			<language type="bi">بیسلاما</language>
			<language type="bik">بیکولی</language>
			<language type="bin">بینی</language>
			<language type="bla">bla</language>
			<language type="bm">بامبارایی</language>
			<language type="bn">بنگالی</language>
			<language type="bnt">بانتویی</language>
			<language type="bo">تبتی</language>
			<language type="br">برتانیایی</language>
			<language type="bra">براج</language>
			<language type="bs">بوسنیایی</language>
			<language type="btk">باتاکی</language>
			<language type="bua">بوریاتی</language>
			<language type="bug">بوگیایی</language>
			<language type="byn">بلین</language>
			<language type="ca">کاتالونیایی</language>
			<language type="cad">کادویی</language>
			<language type="cai">زبان سرخپوستی امریکای مرکزی</language>
			<language type="car">کاریبی</language>
			<language type="cau">زبان قفقازی</language>
			<language type="cch">cch</language>
			<language type="ce">چچنی</language>
			<language type="ceb">سبویی</language>
			<language type="cel">زبان سلتی</language>
			<language type="ch">چامورویی</language>
			<language type="chb">چیبچا</language>
			<language type="chg">چاگاتایی</language>
			<language type="chk">چوکزی</language>
			<language type="chm">ماریایی</language>
			<language type="chn">chn</language>
			<language type="cho">چوکتویی</language>
			<language type="chp">چیپه‌ویه‌ای</language>
			<language type="chr">چروکیایی</language>
			<language type="chy">شایانی</language>
			<language type="cmc">cmc</language>
			<language type="co">کورسی</language>
			<language type="cop">قبطی</language>
			<language type="cpe">کریول یا پیجین مبتنی بر انگلیسی</language>
			<language type="cpf">کریول یا پیجین مبتنی بر فرانسوی</language>
			<language type="cpp">کریول یا پیجین مبتنی بر پرتغالی</language>
			<language type="cr">کریایی</language>
			<language type="crh">ترکی کریمه</language>
			<language type="crp">کریول یا پیجین</language>
			<language type="cs">چکی</language>
			<language type="csb">کاشوبی</language>
			<language type="cu">اسلاوی کلیسایی</language>
			<language type="cus">زبان کوشی</language>
			<language type="cv">چوواشی</language>
			<language type="cy">ویلزی</language>
			<language type="da">دانمارکی</language>
			<language type="dak">داکوتایی</language>
			<language type="dar">دارگوا</language>
			<language type="day">دایاک</language>
			<language type="de">آلمانی</language>
			<language type="de_AT">آلمانی اتریش</language>
			<language type="de_CH">آلمانی علیای سوئیس</language>
			<language type="del">دلاواری</language>
			<language type="den">den</language>
			<language type="dgr">دوگریب</language>
			<language type="din">دینکایی</language>
			<language type="doi">دوگری</language>
			<language type="dra">زبان دراویدی</language>
			<language type="dsb">صُربی سفلی</language>
			<language type="dua">دوآلایی</language>
			<language type="dum">هلندی میانه</language>
			<language type="dv">dv</language>
			<language type="dyu">دایولایی</language>
			<language type="dz">جونخایی</language>
			<language type="ee">اوه‌ای</language>
			<language type="efi">افیکی</language>
			<language type="egy">مصری کهن</language>
			<language type="eka">اکاجوک</language>
			<language type="el">یونانی</language>
			<language type="elx">عیلامی</language>
			<language type="en">انگلیسی</language>
			<language type="en_AU">انگلیسی استرالیا</language>
			<language type="en_CA">انگلیسی کانادا</language>
			<language type="en_GB">نگلیسی بریتانیا</language>
			<language type="en_US">انگلیسی امریکا</language>
			<language type="enm">انگلیسی میانه</language>
			<language type="eo">اسپرانتو</language>
			<language type="es">اسپانیایی</language>
			<language type="es_419">اسپانیایی امریکای لاتین</language>
			<language type="es_ES">اسپانیایی اسپانیا</language>
			<language type="et">استونیایی</language>
			<language type="eu">باسکی</language>
			<language type="ewo">اواندو</language>
			<language type="fa">فارسی</language>
			<language type="fan">فانکی</language>
			<language type="fat">فانتیایی</language>
			<language type="ff">فولایی</language>
			<language type="fi">فنلاندی</language>
			<language type="fil">فیلیپینی</language>
			<language type="fiu">زبان فین و اوگرایی</language>
			<language type="fj">فیجیایی</language>
			<language type="fo">فارویی</language>
			<language type="fon">فونی</language>
			<language type="fr">فرانسوی</language>
			<language type="fr_CA">فرانسوی کانادا</language>
			<language type="fr_CH">فرانسوی سوئیس</language>
			<language type="frm">فرانسوی میانه</language>
			<language type="fro">فرانسوی باستان</language>
			<language type="frr">فریزی شمالی</language>
			<language type="frs">فریزی شرقی</language>
			<language type="fur">فریولیایی</language>
			<language type="fy">فریزی غربی</language>
			<language type="ga">ایرلندی</language>
			<language type="gaa">گایی</language>
			<language type="gay">گایو</language>
			<language type="gba">گبایایی</language>
			<language type="gd">گیلی اسکاتلندی</language>
			<language type="gem">زبان ژرمنی</language>
			<language type="gez">گی‌ئزی</language>
			<language type="gil">گیلبرتی</language>
			<language type="gl">گالیسیایی</language>
			<language type="gmh">آلمانی علیای میانه</language>
			<language type="gn">گوارانی</language>
			<language type="goh">آلمانی علیای باستان</language>
			<language type="gon">گوندی</language>
			<language type="gor">گورونتالو</language>
			<language type="got">گاتیک</language>
			<language type="grb">گریبویی</language>
			<language type="grc">یونانی کهن</language>
			<language type="gsw">آلمانی سوئیسی</language>
			<language type="gu">گجراتی</language>
			<language type="gv">مانی</language>
			<language type="gwi">گویچ این</language>
			<language type="ha">هوسیایی</language>
			<language type="hai">هایدایی</language>
			<language type="haw">هاوائیایی</language>
			<language type="he">عبری</language>
			<language type="hi">هندی</language>
			<language type="hil">هیلی‌گاینونی</language>
			<language type="him">هیماچالی</language>
			<language type="hit">هیتی</language>
			<language type="hmn">همونگ</language>
			<language type="ho">هیری موتو</language>
			<language type="hr">کرواتی</language>
			<language type="hsb">صُربی علیا</language>
			<language type="ht">هائیتیایی</language>
			<language type="hu">مجاری</language>
			<language type="hup">هوپا</language>
			<language type="hy">ارمنی</language>
			<language type="hz">هریرویی</language>
			<language type="ia">میان‌زبان</language>
			<language type="iba">آیبن</language>
			<language type="id">اندونزیایی</language>
			<language type="ie">بین زبانی</language>
			<language type="ig">ایگبویی</language>
			<language type="ii">یی سیچوان</language>
			<language type="ijo">ایجویی</language>
			<language type="ik">اینوپیک</language>
			<language type="ilo">ایلوکویی</language>
			<language type="inc">زبان هندیک</language>
			<language type="ine">زبان هند و اروپایی</language>
			<language type="inh">اینگوشی</language>
			<language type="io">ایدو</language>
			<language type="ira">زبان ایرانی</language>
			<language type="iro">زبان ایروکوایی</language>
			<language type="is">ایسلندی</language>
			<language type="it">ایتالیایی</language>
			<language type="iu">اینوکتیتوت</language>
			<language type="ja">ژاپنی</language>
			<language type="jbo">لوجبان</language>
			<language type="jpr">فارسی یهودی</language>
			<language type="jrb">عربی یهودی</language>
			<language type="jv">جاوه‌ای</language>
			<language type="ka">گرجی</language>
			<language type="kaa">قره‌قالپاقی</language>
			<language type="kab">قبایلی</language>
			<language type="kac">کاچینی</language>
			<language type="kaj">جو</language>
			<language type="kam">کامبایی</language>
			<language type="kar">کارنی</language>
			<language type="kaw">کاوی</language>
			<language type="kbd">کاباردینی</language>
			<language type="kcg">kcg</language>
			<language type="kfo">کورو</language>
			<language type="kg">کنگویی</language>
			<language type="kha">خازیایی</language>
			<language type="khi">زبان خواسی</language>
			<language type="kho">ختنی</language>
			<language type="ki">کیکویویی</language>
			<language type="kj">کوانیاما</language>
			<language type="kk">قزاقی</language>
			<language type="kl">گرینلندی</language>
			<language type="km">خمری</language>
			<language type="kmb">کیمبوندویی</language>
			<language type="kn">کاناده‌ای</language>
			<language type="ko">کره‌ای</language>
			<language type="kok">کنکانی</language>
			<language type="kos">kos</language>
			<language type="kpe">کپله‌ای</language>
			<language type="kr">کانوریایی</language>
			<language type="krc">قره‌چایی‐بالکاری</language>
			<language type="krl">krl</language>
			<language type="kro">کرویی</language>
			<language type="kru">کوروخی</language>
			<language type="ks">کشمیری</language>
			<language type="ku">کردی</language>
			<language type="kum">کومیکی</language>
			<language type="kut">کوتنی</language>
			<language type="kv">کومیایی</language>
			<language type="kw">کرنوالی</language>
			<language type="ky">قرقیزی</language>
			<language type="la">لاتینی</language>
			<language type="lad">لادینو</language>
			<language type="lah">لاهندا</language>
			<language type="lam">لامبا</language>
			<language type="lb">لوگزامبورگی</language>
			<language type="lez">لزگی</language>
			<language type="lg">گاندایی</language>
			<language type="li">لیمبورگی</language>
			<language type="ln">لینگالا</language>
			<language type="lo">لائوسی</language>
			<language type="lol">مونگویی</language>
			<language type="loz">لوزیایی</language>
			<language type="lt">لیتوانیایی</language>
			<language type="lu">لوبایی‐کاتانگا</language>
			<language type="lua">لوبایی‐لولوا</language>
			<language type="lui">لویسنو</language>
			<language type="lun">لوندایی</language>
			<language type="luo">لوئویی</language>
			<language type="lus">لوشه‌ای</language>
			<language type="lv">لتونیایی</language>
			<language type="mad">مادورایی</language>
			<language type="mag">ماگاهیایی</language>
			<language type="mai">مایدیلی</language>
			<language type="mak">ماکاسار</language>
			<language type="man">ماندینگویی</language>
			<language type="map">آسترونیزیایی</language>
			<language type="mas">ماسایی</language>
			<language type="mdf">مکشایی</language>
			<language type="mdr">ماندار</language>
			<language type="men">منده‌ای</language>
			<language type="mg">مالاگاسیایی</language>
			<language type="mga">ایرلندی میانه</language>
			<language type="mh">مارشالی</language>
			<language type="mi">مائوریایی</language>
			<language type="mic">میکماکی</language>
			<language type="min">مینانگ‌کابویی</language>
			<language type="mis">زبان متفرقه</language>
			<language type="mk">مقدونی</language>
			<language type="mkh">زبان مون‌خمری</language>
			<language type="ml">مالایالامی</language>
			<language type="mn">مغولی</language>
			<language type="mnc">مانچویی</language>
			<language type="mni">مانیپوری</language>
			<language type="mno">زبان مانوبو</language>
			<language type="mo">مولداویایی</language>
			<language type="moh">موهاکی</language>
			<language type="mos">ماسیایی</language>
			<language type="mr">مراتی</language>
			<language type="ms">مالزیایی</language>
			<language type="mt">مالتی</language>
			<language type="mul">چندین زبان</language>
			<language type="mun">زبان موندایی</language>
			<language type="mus">کریکی</language>
			<language type="mwl">mwl</language>
			<language type="mwr">مارواری</language>
			<language type="my">برمه‌ای</language>
			<language type="myn">زبان مایایی</language>
			<language type="myv">ارزیایی</language>
			<language type="na">نائورویی</language>
			<language type="nah">ناواتلی</language>
			<language type="nai">زبان سرخپوستی امریکای شمالی</language>
			<language type="nap">ناپلی</language>
			<language type="nb">بوکسمال نروژی</language>
			<language type="nd">انده‌بله‌ای شمالی</language>
			<language type="nds">آلمانی سفلی</language>
			<language type="ne">نپالی</language>
			<language type="new">نواریایی</language>
			<language type="ng">ندونگایی</language>
			<language type="nia">نیاس</language>
			<language type="nic">nic</language>
			<language type="niu">نیویی</language>
			<language type="nl">هلندی</language>
			<language type="nl_BE">هلندی بلژیک</language>
			<language type="nn">نرس جدید نروژی</language>
			<language type="no">نروژی</language>
			<language type="nog">نغایی</language>
			<language type="non">نرس باستان</language>
			<language type="nqo">nqo</language>
			<language type="nr">انده‌بله‌ای جنوبی</language>
			<language type="nso">سوتویی شمالی</language>
			<language type="nub">زبان نوبیایی</language>
			<language type="nv">ناواهویی</language>
			<language type="nwc">نواریایی کلاسیک</language>
			<language type="ny">نیانجایی</language>
			<language type="nym">nym</language>
			<language type="nyn">نیانکوله‌ای</language>
			<language type="nyo">نیورویی</language>
			<language type="nzi">نزیمایی</language>
			<language type="oc">اوکیتایی</language>
			<language type="oj">اوجیبوایی</language>
			<language type="om">اورومویی</language>
			<language type="or">اوریه‌ای</language>
			<language type="os">آسی</language>
			<language type="osa">اوسیجی</language>
			<language type="ota">ترکی عثمانی</language>
			<language type="oto">زبان اتومیایی</language>
			<language type="pa">پنجابی</language>
			<language type="paa">زبان پاپوایی</language>
			<language type="pag">پانگاسینانی</language>
			<language type="pal">پهلوی</language>
			<language type="pam">پامپانگایی</language>
			<language type="pap">پاپیامنتو</language>
			<language type="pau">پالائویی</language>
			<language type="peo">فارسی باستان</language>
			<language type="phi">زبان فیلیپینی</language>
			<language type="phn">فنیقی</language>
			<language type="pi">پالی</language>
			<language type="pl">لهستانی</language>
			<language type="pon">pon</language>
			<language type="pra">زبان پراکریتی</language>
			<language type="pro">pro</language>
			<language type="ps">پشتو</language>
			<language type="pt">پرتغالی</language>
			<language type="pt_BR">پرتغالی برزیل</language>
			<language type="pt_PT">پرتغالی پرتغال</language>
			<language type="qu">کچوایی</language>
			<language type="raj">راجستانی</language>
			<language type="rap">راپانویی</language>
			<language type="rar">راروتونگایی</language>
			<language type="rm">رتو‐رومیایی</language>
			<language type="rn">روندیایی</language>
			<language type="ro">رومانیایی</language>
			<language type="roa">زبان رومیایی</language>
			<language type="rom">رومانویی</language>
			<language type="root">ریشه</language>
			<language type="ru">روسی</language>
			<language type="rup">rup</language>
			<language type="rw">کینیارواندایی</language>
			<language type="sa">سنسکریت</language>
			<language type="sad">سانداوه‌ای</language>
			<language type="sah">یاقوتی</language>
			<language type="sai">زبان سرخپوستی امریکای جنوبی</language>
			<language type="sal">زبان سالیشی</language>
			<language type="sam">sam</language>
			<language type="sas">ساساک</language>
			<language type="sat">سانتالی</language>
			<language type="sc">ساردینیایی</language>
			<language type="scn">سیسیلی</language>
			<language type="sco">اسکاتلندی</language>
			<language type="sd">سندی</language>
			<language type="se">سامی شمالی</language>
			<language type="sel">سلکوپی</language>
			<language type="sem">زبان سامی</language>
			<language type="sg">سانگویی</language>
			<language type="sga">ایرلندی باستان</language>
			<language type="sgn">زبان نشانه‌ای</language>
			<language type="sh">صرب و کرواتی</language>
			<language type="shn">شانی</language>
			<language type="si">سینهالی</language>
			<language type="sid">سیدامویی</language>
			<language type="sio">زبان سویی</language>
			<language type="sit">زبان چین و تبتی</language>
			<language type="sk">اسلواکی</language>
			<language type="sl">اسلووینیایی</language>
			<language type="sla">زبان اسلاوی</language>
			<language type="sm">ساموآیی</language>
			<language type="sma">سامی جنوبی</language>
			<language type="smi">smi</language>
			<language type="smj">سامی لول</language>
			<language type="smn">سامی ایناری</language>
			<language type="sms">سامی اسکالت</language>
			<language type="sn">شونایی</language>
			<language type="snk">سونینکه‌ای</language>
			<language type="so">سومالیایی</language>
			<language type="sog">سغدی</language>
			<language type="son">سونغایی</language>
			<language type="sq">آلبانیایی</language>
			<language type="sr">صربی</language>
			<language type="srr">سریری</language>
			<language type="ss">ss</language>
			<language type="ssa">زبان نیلی و صحرایی</language>
			<language type="st">سوتویی جنوبی</language>
			<language type="su">سوندایی</language>
			<language type="suk">سوکومایی</language>
			<language type="sus">سوسویی</language>
			<language type="sux">سومری</language>
			<language type="sv">سوئدی</language>
			<language type="sw">سواحلی</language>
			<language type="syc">سریانی کلاسیک</language>
			<language type="syr">سریانی</language>
			<language type="ta">تامیلی</language>
			<language type="tai">زبان تایی</language>
			<language type="te">تلوگویی</language>
			<language type="tem">تیمنه‌ای</language>
			<language type="ter">ترنو</language>
			<language type="tet">تتومی</language>
			<language type="tg">تاجیکی</language>
			<language type="th">تایلندی</language>
			<language type="ti">تیگرینیایی</language>
			<language type="tig">تیگره‌ای</language>
			<language type="tiv">تیوی</language>
			<language type="tk">ترکمنی</language>
			<language type="tkl">توکلوی</language>
			<language type="tl">تاگالوگی</language>
			<language type="tlh">کلینگون</language>
			<language type="tli">تلین‌گیتی</language>
			<language type="tmh">تاماشقی</language>
			<language type="tn">تسوانایی</language>
			<language type="to">تونگایی</language>
			<language type="tog">تونگایی نیاسا</language>
			<language type="tpi">tpi</language>
			<language type="tr">ترکی استانبولی</language>
			<language type="ts">تسونگایی</language>
			<language type="tsi">تسیم‌شیانی</language>
			<language type="tt">تاتاری</language>
			<language type="tum">تومبوکایی</language>
			<language type="tup">زبان توپیایی</language>
			<language type="tut">زبان آلتاییک</language>
			<language type="tvl">تووالویی</language>
			<language type="tw">توی‌یایی</language>
			<language type="ty">تاهیتیایی</language>
			<language type="tyv">تووایی</language>
			<language type="udm">اودمورتی</language>
			<language type="ug">اویغوری</language>
			<language type="uga">اوگاریتی</language>
			<language type="uk">اوکراینی</language>
			<language type="umb">امبندویی</language>
			<language type="und">زبان نامشخص یا نامعتبر</language>
			<language type="ur">اردو</language>
			<language type="uz">ازبکی</language>
			<language type="vai">ویایی</language>
			<language type="ve">وندایی</language>
			<language type="vi">ویتنامی</language>
			<language type="vo">ولاپوک</language>
			<language type="vot">وتیک</language>
			<language type="wa">والونی</language>
			<language type="wak">زبان واکاشی</language>
			<language type="wal">والامو</language>
			<language type="war">وارایی</language>
			<language type="was">واشویی</language>
			<language type="wen">زبان صُربی</language>
			<language type="wo">ولوفی</language>
			<language type="xal">قلموقی</language>
			<language type="xh">خوسایی</language>
			<language type="yao">یائویی</language>
			<language type="yap">یاپی</language>
			<language type="yi">یدی</language>
			<language type="yo">یوروبایی</language>
			<language type="ypk">زبان یوپیکی</language>
			<language type="za">چوانگی</language>
			<language type="zap">زاپوتکی</language>
			<language type="zbl">zbl</language>
			<language type="zen">زناگا</language>
			<language type="zh">چینی</language>
			<language type="zh_Hans">چینی ساده‌شده</language>
			<language type="zh_Hant">چینی سنتی</language>
			<language type="znd">زانده‌ای</language>
			<language type="zu">زولویی</language>
			<language type="zun">زونیایی</language>
			<language type="zxx">zxx</language>
			<language type="zza">زازایی</language>
		</languages>
		<scripts>
			<script type="Arab">عربی</script>
			<script type="Armi">آرمی</script>
			<script type="Armn">ارمنی</script>
			<script type="Avst">اوستایی</script>
			<script type="Bali">بالیایی</script>
			<script type="Batk">باتاکی</script>
			<script type="Beng">بنگالی</script>
			<script type="Blis">نمادهای بلیس</script>
			<script type="Bopo">بوپوموفو</script>
			<script type="Brah">براهمی</script>
			<script type="Brai">بریل</script>
			<script type="Bugi">بوگیایی</script>
			<script type="Buhd">بوهید</script>
			<script type="Cakm">کاکم</script>
			<script type="Cans">Cans</script>
			<script type="Cari">کاری</script>
			<script type="Cham">چمی</script>
			<script type="Cher">چروکیایی</script>
			<script type="Cirt">Cirt</script>
			<script type="Copt">قبطی</script>
			<script type="Cprt">Cprt</script>
			<script type="Cyrl">سیریلی</script>
			<script type="Cyrs">Cyrs</script>
			<script type="Deva">دوناگری</script>
			<script type="Dsrt">دیسرتی</script>
			<script type="Egyd">Egyd</script>
			<script type="Egyh">کاهنی مصری</script>
			<script type="Egyp">هیروگلیف مصری</script>
			<script type="Ethi">اتیوپیایی</script>
			<script type="Geok">گرجی خوتسوری</script>
			<script type="Geor">گرجی</script>
			<script type="Glag">گلاگولیتیک</script>
			<script type="Goth">گوتیک</script>
			<script type="Grek">یونانی</script>
			<script type="Gujr">گجراتی</script>
			<script type="Guru">گورموخی</script>
			<script type="Hang">هانگول</script>
			<script type="Hani">هان</script>
			<script type="Hano">هانونویی</script>
			<script type="Hans">هان ساده‌شده</script>
			<script type="Hant">هان سنتی</script>
			<script type="Hebr">عبری</script>
			<script type="Hira">هیراگانا</script>
			<script type="Hmng">Hmng</script>
			<script type="Hrkt">کاتاکانا یا هیراگانا</script>
			<script type="Hung">مجاری باستان</script>
			<script type="Inds">ایندوس</script>
			<script type="Ital">Ital</script>
			<script type="Java">جاوه‌ای</script>
			<script type="Jpan">ژاپنی</script>
			<script type="Kali">کایالی</script>
			<script type="Kana">کاتاکانا</script>
			<script type="Khar">Khar</script>
			<script type="Khmr">خمری</script>
			<script type="Knda">کاناده‌ای</script>
			<script type="Kore">کره‌ای</script>
			<script type="Kthi">کثی</script>
			<script type="Lana">لانایی</script>
			<script type="Laoo">لائوسی</script>
			<script type="Latf">Latf</script>
			<script type="Latg">لاتینی گیلی</script>
			<script type="Latn">لاتینی</script>
			<script type="Lepc">Lepc</script>
			<script type="Limb">لیمبایی</script>
			<script type="Lina">خطی الف</script>
			<script type="Linb">خطی ب</script>
			<script type="Lyci">لسیایی</script>
			<script type="Lydi">لدیایی</script>
			<script type="Mand">منده‌ای</script>
			<script type="Mani">مانوی</script>
			<script type="Maya">هیروگلیف مایایی</script>
			<script type="Mero">مروییتی</script>
			<script type="Mlym">مالایالامی</script>
			<script type="Mong">مغولی</script>
			<script type="Moon">مونی</script>
			<script type="Mtei">مایک میتی</script>
			<script type="Mymr">میانمار</script>
			<script type="Nkoo">Nkoo</script>
			<script type="Ogam">اوگامی</script>
			<script type="Olck">Olck</script>
			<script type="Orkh">اورخونی</script>
			<script type="Orya">اوریه‌ای</script>
			<script type="Osma">Osma</script>
			<script type="Perm">Perm</script>
			<script type="Phli">Phli</script>
			<script type="Phlv">پهلوی کتابی</script>
			<script type="Phnx">فنیقی</script>
			<script type="Plrd">Plrd</script>
			<script type="Prti">پرتی</script>
			<script type="Qaai">موروثی</script>
			<script type="Rjng">رجنگی</script>
			<script type="Roro">Roro</script>
			<script type="Runr">رونی</script>
			<script type="Samr">ساماراتی</script>
			<script type="Sara">ساراتی</script>
			<script type="Saur">سوراشترایی</script>
			<script type="Sgnw">Sgnw</script>
			<script type="Shaw">شاوی</script>
			<script type="Sinh">سینهالی</script>
			<script type="Sund">Sund</script>
			<script type="Sylo">سیلوتی نگاری</script>
			<script type="Syrc">سریانی</script>
			<script type="Syre">Syre</script>
			<script type="Syrj">سریانی غربی</script>
			<script type="Syrn">سریانی شرقی</script>
			<script type="Tagb">تگبنوایی</script>
			<script type="Tale">Tale</script>
			<script type="Talu">Talu</script>
			<script type="Taml">تامیلی</script>
			<script type="Telu">تلوگویی</script>
			<script type="Teng">تنگوار</script>
			<script type="Tfng">Tfng</script>
			<script type="Tglg">تاگالوگی</script>
			<script type="Thaa">ثانایی</script>
			<script type="Thai">تایلندی</script>
			<script type="Tibt">تبتی</script>
			<script type="Vaii">ویایی</script>
			<script type="Visp">گفتار قابل مشاهده</script>
			<script type="Xpeo">فارسی باستان</script>
			<script type="Xsux">میخی سومری‐آکدی</script>
			<script type="Yiii">یی</script>
			<script type="Zxxx">نوشته‌نشده</script>
			<script type="Zyyy">مشترک</script>
			<script type="Zzzz">خط نامشخص یا نامعتبر</script>
		</scripts>
		<territories>
			<territory type="001">جهان</territory>
			<territory type="002">افریقا</territory>
			<territory type="003">امریکای شمالی</territory>
			<territory type="005">امریکای جنوبی</territory>
			<territory type="009">اقیانوسیه</territory>
			<territory type="011">غرب افریقا</territory>
			<territory type="013">امریکای مرکزی</territory>
			<territory type="014">شرق افریقا</territory>
			<territory type="015">شمال افریقا</territory>
			<territory type="017">مرکز افریقا</territory>
			<territory type="018">جنوب افریقا</territory>
			<territory type="019">امریکا</territory>
			<territory type="021">شمال امریکا</territory>
			<territory type="029">کارائیب</territory>
			<territory type="030">شرق آسیا</territory>
			<territory type="034">جنوب آسیا</territory>
			<territory type="035">جنوب شرقی آسیا</territory>
			<territory type="039">جنوب اروپا</territory>
			<territory type="053">استرالیا و زلاند نو</territory>
			<territory type="054">ملانزی</territory>
			<territory type="057">ناحیهٔ میکرونزی</territory>
			<territory type="061">پلی‌نزی</territory>
			<territory type="062">جنوب آسیا و آسیای میانه</territory>
			<territory type="142">آسیا</territory>
			<territory type="143">آسیای مرکزی</territory>
			<territory type="145">غرب آسیا</territory>
			<territory type="150">اروپا</territory>
			<territory type="151">شرق اروپا</territory>
			<territory type="154">شمال اروپا</territory>
			<territory type="155">غرب اروپا</territory>
			<territory type="172">کشورهای مستقل مشترک‌المنافع</territory>
			<territory type="419">امریکای لاتین و کارائیب</territory>
			<territory type="AD">آندورا</territory>
			<territory type="AE">امارات متحدهٔ عربی</territory>
			<territory type="AF">افغانستان</territory>
			<territory type="AG">آنتیگوا و باربودا</territory>
			<territory type="AI">آنگیل</territory>
			<territory type="AL">آلبانی</territory>
			<territory type="AM">ارمنستان</territory>
			<territory type="AN">آنتیل هلند</territory>
			<territory type="AO">آنگولا</territory>
			<territory type="AQ">جنوبگان</territory>
			<territory type="AR">آرژانتین</territory>
			<territory type="AS">ساموای امریکا</territory>
			<territory type="AT">اتریش</territory>
			<territory type="AU">استرالیا</territory>
			<territory type="AW">آروبا</territory>
			<territory type="AX">جزایر آلاند</territory>
			<territory type="AZ">جمهوری آذربایجان</territory>
			<territory type="BA">بوسنی و هرزگوین</territory>
			<territory type="BB">باربادوس</territory>
			<territory type="BD">بنگلادش</territory>
			<territory type="BE">بلژیک</territory>
			<territory type="BF">بورکینافاسو</territory>
			<territory type="BG">بلغارستان</territory>
			<territory type="BH">بحرین</territory>
			<territory type="BI">بوروندی</territory>
			<territory type="BJ">بنین</territory>
			<territory type="BL">سنت بارتلیمی</territory>
			<territory type="BM">برمودا</territory>
			<territory type="BN">برونئی</territory>
			<territory type="BO">بولیوی</territory>
			<territory type="BR">برزیل</territory>
			<territory type="BS">باهاما</territory>
			<territory type="BT">بوتان</territory>
			<territory type="BV">جزیرهٔ بووت</territory>
			<territory type="BW">بوتسوانا</territory>
			<territory type="BY">بیلوروسی</territory>
			<territory type="BZ">بلیز</territory>
			<territory type="CA">کانادا</territory>
			<territory type="CC">جزایر کوکوس</territory>
			<territory type="CD">کنگو کینشاسا</territory>
			<territory type="CF">جمهوری افریقای مرکزی</territory>
			<territory type="CG">کنگو برازویل</territory>
			<territory type="CH">سوئیس</territory>
			<territory type="CI">ساحل عاج</territory>
			<territory type="CK">جزایر کوک</territory>
			<territory type="CL">شیلی</territory>
			<territory type="CM">کامرون</territory>
			<territory type="CN">چین</territory>
			<territory type="CO">کلمبیا</territory>
			<territory type="CR">کاستاریکا</territory>
			<territory type="CS">صربستان و مونته‌نگرو</territory>
			<territory type="CU">کوبا</territory>
			<territory type="CV">کیپ ورد</territory>
			<territory type="CX">جزیرهٔ کریسمس</territory>
			<territory type="CY">قبرس</territory>
			<territory type="CZ">جمهوری چک</territory>
			<territory type="DE">آلمان</territory>
			<territory type="DJ">جیبوتی</territory>
			<territory type="DK">دانمارک</territory>
			<territory type="DM">دومینیک</territory>
			<territory type="DO">جمهوری دومینیکن</territory>
			<territory type="DZ">الجزایر</territory>
			<territory type="EC">اکوادر</territory>
			<territory type="EE">استونی</territory>
			<territory type="EG">مصر</territory>
			<territory type="EH">صحرای غربی</territory>
			<territory type="ER">اریتره</territory>
			<territory type="ES">اسپانیا</territory>
			<territory type="ET">اتیوپی</territory>
			<territory type="FI">فنلاند</territory>
			<territory type="FJ">فیجی</territory>
			<territory type="FK">جزایر فالکلند</territory>
			<territory type="FM">میکرونزی</territory>
			<territory type="FO">جزایر فارو</territory>
			<territory type="FR">فرانسه</territory>
			<territory type="GA">گابون</territory>
			<territory type="GB">بریتانیا</territory>
			<territory type="GD">گرانادا</territory>
			<territory type="GE">گرجستان</territory>
			<territory type="GF">گویان فرانسه</territory>
			<territory type="GG">گورنسی</territory>
			<territory type="GH">غنا</territory>
			<territory type="GI">گیبرالتار</territory>
			<territory type="GL">گروئنلند</territory>
			<territory type="GM">گامبیا</territory>
			<territory type="GN">گینه</territory>
			<territory type="GP">گوادلوپ</territory>
			<territory type="GQ">گینهٔ استوایی</territory>
			<territory type="GR">یونان</territory>
			<territory type="GS">جورجیای جنوبی و جزایر ساندویچ جنوبی</territory>
			<territory type="GT">گواتمالا</territory>
			<territory type="GU">گوام</territory>
			<territory type="GW">گینهٔ بیسائو</territory>
			<territory type="GY">گویان</territory>
			<territory type="HK">هنگ‌کنگ</territory>
			<territory type="HM">جزیرهٔ هرد و جزایر مک‌دونالد</territory>
			<territory type="HN">هندوراس</territory>
			<territory type="HR">کرواسی</territory>
			<territory type="HT">هاییتی</territory>
			<territory type="HU">مجارستان</territory>
			<territory type="ID">اندونزی</territory>
			<territory type="IE">ایرلند</territory>
			<territory type="IL">اسرائیل</territory>
			<territory type="IM">IM</territory>
			<territory type="IN">هند</territory>
			<territory type="IO">مستعمره‌های انگلستان در اقیانوس هند</territory>
			<territory type="IQ">عراق</territory>
			<territory type="IR">ایران</territory>
			<territory type="IS">ایسلند</territory>
			<territory type="IT">ایتالیا</territory>
			<territory type="JE">جرسی</territory>
			<territory type="JM">جامائیکا</territory>
			<territory type="JO">اردن</territory>
			<territory type="JP">ژاپن</territory>
			<territory type="KE">کنیا</territory>
			<territory type="KG">قرقیزستان</territory>
			<territory type="KH">کامبوج</territory>
			<territory type="KI">کیریباتی</territory>
			<territory type="KM">کومورو</territory>
			<territory type="KN">سنت کیتس و نویس</territory>
			<territory type="KP">کرهٔ شمالی</territory>
			<territory type="KR">کرهٔ جنوبی</territory>
			<territory type="KW">کویت</territory>
			<territory type="KY">جزایر کِیمن</territory>
			<territory type="KZ">قزاقستان</territory>
			<territory type="LA">لائوس</territory>
			<territory type="LB">لبنان</territory>
			<territory type="LC">سنت لوسیا</territory>
			<territory type="LI">لیختن‌اشتاین</territory>
			<territory type="LK">سری‌لانکا</territory>
			<territory type="LR">لیبریا</territory>
			<territory type="LS">لسوتو</territory>
			<territory type="LT">لیتوانی</territory>
			<territory type="LU">لوکزامبورگ</territory>
			<territory type="LV">لتونی</territory>
			<territory type="LY">لیبی</territory>
			<territory type="MA">مراکش</territory>
			<territory type="MC">موناکو</territory>
			<territory type="MD">مولدووا</territory>
			<territory type="ME">مونته‌نگرو</territory>
			<territory type="MF">سنت مارتین</territory>
			<territory type="MG">ماداگاسکار</territory>
			<territory type="MH">جزایر مارشال</territory>
			<territory type="MK">مقدونیه</territory>
			<territory type="ML">مالی</territory>
			<territory type="MM">میانمار</territory>
			<territory type="MN">مغولستان</territory>
			<territory type="MO">ماکائو</territory>
			<territory type="MP">جزایر ماریانای شمالی</territory>
			<territory type="MQ">مارتینیک</territory>
			<territory type="MR">موریتانی</territory>
			<territory type="MS">مونت‌سرات</territory>
			<territory type="MT">مالت</territory>
			<territory type="MU">موریتیوس</territory>
			<territory type="MV">مالدیو</territory>
			<territory type="MW">مالاوی</territory>
			<territory type="MX">مکزیک</territory>
			<territory type="MY">مالزی</territory>
			<territory type="MZ">موزامبیک</territory>
			<territory type="NA">نامیبیا</territory>
			<territory type="NC">کالدونیای جدید</territory>
			<territory type="NE">نیجر</territory>
			<territory type="NF">جزیرهٔ نورفولک</territory>
			<territory type="NG">نیجریه</territory>
			<territory type="NI">نیکاراگوئه</territory>
			<territory type="NL">هلند</territory>
			<territory type="NO">نروژ</territory>
			<territory type="NP">نپال</territory>
			<territory type="NR">نائورو</territory>
			<territory type="NU">نیوئه</territory>
			<territory type="NZ">زلاند نو</territory>
			<territory type="OM">عمان</territory>
			<territory type="PA">پاناما</territory>
			<territory type="PE">پرو</territory>
			<territory type="PF">پلی‌نزی فرانسه</territory>
			<territory type="PG">پاپوا گینهٔ نو</territory>
			<territory type="PH">فیلیپین</territory>
			<territory type="PK">پاکستان</territory>
			<territory type="PL">لهستان</territory>
			<territory type="PM">سنت پیر و میکلون</territory>
			<territory type="PN">پیتکایرن</territory>
			<territory type="PR">پورتو ریکو</territory>
			<territory type="PS">فلسطین</territory>
			<territory type="PT">پرتغال</territory>
			<territory type="PW">پالائو</territory>
			<territory type="PY">پاراگوئه</territory>
			<territory type="QA">قطر</territory>
			<territory type="QO">اقیانوسیهٔ دوردست</territory>
			<territory type="QU">اتحادیهٔ اروپا</territory>
			<territory type="RE">ریونیون</territory>
			<territory type="RO">رومانی</territory>
			<territory type="RS">صربستان</territory>
			<territory type="RU">روسیه</territory>
			<territory type="RW">رواندا</territory>
			<territory type="SA">عربستان سعودی</territory>
			<territory type="SB">جزایر سلیمان</territory>
			<territory type="SC">سیشل</territory>
			<territory type="SD">سودان</territory>
			<territory type="SE">سوئد</territory>
			<territory type="SG">سنگاپور</territory>
			<territory type="SH">سنت هلن</territory>
			<territory type="SI">اسلوونی</territory>
			<territory type="SJ">اسوالبارد و جان ماین</territory>
			<territory type="SK">اسلواکی</territory>
			<territory type="SL">سیرالئون</territory>
			<territory type="SM">سان مارینو</territory>
			<territory type="SN">سنگال</territory>
			<territory type="SO">سومالی</territory>
			<territory type="SR">سورینام</territory>
			<territory type="ST">سائو تومه و پرینسیپه</territory>
			<territory type="SV">السالوادور</territory>
			<territory type="SY">سوریه</territory>
			<territory type="SZ">سوازیلند</territory>
			<territory type="TC">جزایر ترک و کایکوس</territory>
			<territory type="TD">چاد</territory>
			<territory type="TF">مستعمره‌های جنوبی فرانسه</territory>
			<territory type="TG">توگو</territory>
			<territory type="TH">تایلند</territory>
			<territory type="TJ">تاجیکستان</territory>
			<territory type="TK">توکلائو</territory>
			<territory type="TL">تیمور شرقی</territory>
			<territory type="TM">ترکمنستان</territory>
			<territory type="TN">تونس</territory>
			<territory type="TO">تونگا</territory>
			<territory type="TR">ترکیه</territory>
			<territory type="TT">ترینیداد و توباگو</territory>
			<territory type="TV">تووالو</territory>
			<territory type="TW">تایوان</territory>
			<territory type="TZ">تانزانیا</territory>
			<territory type="UA">اوکراین</territory>
			<territory type="UG">اوگاندا</territory>
			<territory type="UM">جزایر کوچک دورافتادهٔ ایالات متحده</territory>
			<territory type="US">ایالات متحدهٔ امریکا</territory>
			<territory type="UY">اوروگوئه</territory>
			<territory type="UZ">ازبکستان</territory>
			<territory type="VA">واتیکان</territory>
			<territory type="VC">سنت وینسنت و گرنادین</territory>
			<territory type="VE">ونزوئلا</territory>
			<territory type="VG">جزایر ویرجین بریتانیا</territory>
			<territory type="VI">جزایر ویرجین ایالات متحده</territory>
			<territory type="VN">ویتنام</territory>
			<territory type="VU">وانواتو</territory>
			<territory type="WF">والیس و فیوتونا</territory>
			<territory type="WS">ساموا</territory>
			<territory type="YE">یمن</territory>
			<territory type="YT">مایوت</territory>
			<territory type="ZA">افریقای جنوبی</territory>
			<territory type="ZM">زامبیا</territory>
			<territory type="ZW">زیمبابوه</territory>
			<territory type="ZZ">ناحیهٔ نامشخص یا نامعتبر</territory>
		</territories>
		<variants>
			<variant type="1901">رسم‌الخط سنتی آلمانی</variant>
			<variant type="1996">رسم‌الخط آلمانی ۱۹۹۶ میلادی</variant>
			<variant type="AREVELA">ارمنی شرقی</variant>
			<variant type="POSIX">کامپیوتری</variant>
			<variant type="REVISED">رسم‌الخط تجدیدنظرشده</variant>
			<variant type="SCOTLAND">انگلیسی معیار اسکاتلند</variant>
		</variants>
		<keys>
			<key type="calendar">تقویم</key>
			<key type="collation">ترتیب‌بندی</key>
			<key type="currency">واحد پول</key>
		</keys>
		<types>
			<type type="big5han" key="collation">ترتیب چینی سنتی  Big5</type>
			<type type="buddhist" key="calendar">تقویم بودایی</type>
			<type type="chinese" key="calendar">تقویم چینی</type>
			<type type="direct" key="collation">ترتیب مستقیم</type>
			<type type="gb2312han" key="collation">ترتیب چینی ساده‌شده GB2312</type>
			<type type="gregorian" key="calendar">تقویم میلادی</type>
			<type type="hebrew" key="calendar">تقویم عبری</type>
			<type type="indian" key="calendar">تقویم ملی هند</type>
			<type type="islamic" key="calendar">تقویم هجری قمری</type>
			<type type="islamic-civil" key="calendar">تقویم هجری قمری مدنی</type>
			<type type="japanese" key="calendar">تقویم ژاپنی</type>
			<type type="persian" key="calendar">تقویم هجری شمسی</type>
			<type type="phonebook" key="collation">ترتیب دفتر تلفن</type>
			<type type="roc" key="calendar">تقویم جمهوری چین</type>
			<type type="traditional" key="collation">ترتیب سنتی</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">امریکایی</measurementSystemName>
			<measurementSystemName type="metric">متریک</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">زبان: {0}</codePattern>
			<codePattern type="script">خط: {0}</codePattern>
			<codePattern type="territory">ناحیه: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[َ ِ ُ ً ٍ ٌ ّ ْ ٔ آ ا ء أ ؤ ئ ب پ ت-ج چ ح-ز ژ س-غ ف ق ک گ ل-ن و ه ة ی]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ٖ ٰ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z ﷼]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>‹</alternateQuotationStart>
		<alternateQuotationEnd>›</alternateQuotationEnd>
	</delimiters>
	<dates>
		<dateRangePattern>{0} تا {1}</dateRangePattern>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ژانویهٔ</month>
							<month type="2">فوریهٔ</month>
							<month type="3">مارس</month>
							<month type="4">آوریل</month>
							<month type="5">مهٔ</month>
							<month type="6">ژوئن</month>
							<month type="7">ژوئیهٔ</month>
							<month type="8">اوت</month>
							<month type="9">سپتامبر</month>
							<month type="10">اکتبر</month>
							<month type="11">نوامبر</month>
							<month type="12">دسامبر</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ژانویهٔ</month>
							<month type="2">فوریهٔ</month>
							<month type="3">مارس</month>
							<month type="4">آوریل</month>
							<month type="5">مهٔ</month>
							<month type="6">ژوئن</month>
							<month type="7">ژوئیهٔ</month>
							<month type="8">اوت</month>
							<month type="9">سپتامبر</month>
							<month type="10">اکتبر</month>
							<month type="11">نوامبر</month>
							<month type="12">دسامبر</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">ژ</month>
							<month type="2">ف</month>
							<month type="3">م</month>
							<month type="4">آ</month>
							<month type="5">م</month>
							<month type="6">ژ</month>
							<month type="7">ژ</month>
							<month type="8">ا</month>
							<month type="9">س</month>
							<month type="10">ا</month>
							<month type="11">ن</month>
							<month type="12">د</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ژانویه</month>
							<month type="2">فوریه</month>
							<month type="3">مارس</month>
							<month type="4">آوریل</month>
							<month type="5">مه</month>
							<month type="6">ژوئن</month>
							<month type="7">ژوئیه</month>
							<month type="8">اوت</month>
							<month type="9">سپتامبر</month>
							<month type="10">اکتبر</month>
							<month type="11">نوامبر</month>
							<month type="12">دسامبر</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">یکشنبه</day>
							<day type="mon">دوشنبه</day>
							<day type="tue">سه‌شنبه</day>
							<day type="wed">چهارشنبه</day>
							<day type="thu">پنجشنبه</day>
							<day type="fri">جمعه</day>
							<day type="sat">شنبه</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">یکشنبه</day>
							<day type="mon">دوشنبه</day>
							<day type="tue">سه‌شنبه</day>
							<day type="wed">چهارشنبه</day>
							<day type="thu">پنجشنبه</day>
							<day type="fri">جمعه</day>
							<day type="sat">شنبه</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ی</day>
							<day type="mon">د</day>
							<day type="tue">س</day>
							<day type="wed">چ</day>
							<day type="thu">پ</day>
							<day type="fri">ج</day>
							<day type="sat">ش</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">سه‌ماههٔ اول</quarter>
							<quarter type="2">سه‌ماههٔ دوم</quarter>
							<quarter type="3">سه‌ماههٔ سوم</quarter>
							<quarter type="4">سه‌ماههٔ چهارم</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">۱</quarter>
							<quarter type="2">۲</quarter>
							<quarter type="3">۳</quarter>
							<quarter type="4">۴</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>قبل از ظهر</am>
				<pm>بعد از ظهر</pm>
				<eras>
					<eraNames>
						<era type="0">قبل از میلاد</era>
						<era type="1">میلادی</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ق.م.</era>
						<era type="1">م.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<default choice="long"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy GGGG</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss (vvvv)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss (zzzz)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}، ساعت {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="GGGGyyyyMMMMd">d MMMM yyyy GGGG</dateFormatItem>
						<dateFormatItem id="HHmmZ">HH:mm (Z)</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E M/d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d LLL</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d LLLL</dateFormatItem>
						<dateFormatItem id="MMMMd">d LLLL</dateFormatItem>
						<dateFormatItem id="MMMd">d LLL</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy/M</dateFormatItem>
						<dateFormatItem id="yMEd">E yyyy/M/d</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">E d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMMEEEEd">EEEE d MMMM yyyy</dateFormatItem>
					</availableFormats>
					<appendItems>
						<appendItem request="Day-Of-Week">{1} {0}</appendItem>
					</appendItems>
					<intervalFormats>
						<intervalFormatFallback>{0} تا {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M تا M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E M/d تا E M/d</greatestDifference>
							<greatestDifference id="d">E M/d تا E M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL تا LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d LLL تا E d LLL</greatestDifference>
							<greatestDifference id="d">E d LLL تا E d LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL تا LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d LLL تا d LLL</greatestDifference>
							<greatestDifference id="d">d تا d LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d تا M/d</greatestDifference>
							<greatestDifference id="d">d تا M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d تا d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">H تا H</greatestDifference>
							<greatestDifference id="h">H تا H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">H:mm تا H:mm</greatestDifference>
							<greatestDifference id="h">H:mm تا H:mm</greatestDifference>
							<greatestDifference id="m">H:mm تا H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">H:mm تا H:mm (v)</greatestDifference>
							<greatestDifference id="h">H:mm تا H:mm (v)</greatestDifference>
							<greatestDifference id="m">H:mm تا H:mm (v)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">H تا H (v)</greatestDifference>
							<greatestDifference id="h">H تا H (v)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">yyyy تا yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy/M تا yyyy/M</greatestDifference>
							<greatestDifference id="y">yyyy/M تا yyyy/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E yyyy/M/d تا E yyyy/M/d</greatestDifference>
							<greatestDifference id="d">E yyyy/M/d تا E yyyy/M/d</greatestDifference>
							<greatestDifference id="y">E yyyy/M/d تا E yyyy/M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL تا MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy تا MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d LLL تا E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d LLL تا E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy تا E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">LLLL تا MMMM yyyy</greatestDifference>
							<greatestDifference id="y">MMMM yyyy تا MMMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d LLL تا d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d تا d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy تا d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy/M/d تا yyyy/M/d</greatestDifference>
							<greatestDifference id="d">yyyy/M/d تا yyyy/M/d</greatestDifference>
							<greatestDifference id="y">yyyy/M/d تا yyyy/M/d</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>دوره</displayName>
					</field>
					<field type="year">
						<displayName>سال</displayName>
					</field>
					<field type="month">
						<displayName>ماه</displayName>
					</field>
					<field type="week">
						<displayName>هفته</displayName>
					</field>
					<field type="day">
						<displayName>روز</displayName>
						<relative type="0">امروز</relative>
						<relative type="1">فردا</relative>
						<relative type="2">پس‌فردا</relative>
						<relative type="-1">دیروز</relative>
						<relative type="-2">پریروز</relative>
					</field>
					<field type="weekday">
						<displayName>روز هفته</displayName>
					</field>
					<field type="dayperiod">
						<displayName>قبل/بعد از ظهر</displayName>
					</field>
					<field type="hour">
						<displayName>ساعت</displayName>
					</field>
					<field type="minute">
						<displayName>دقیقه</displayName>
					</field>
					<field type="second">
						<displayName>ثانیه</displayName>
					</field>
					<field type="zone">
						<displayName>منطقهٔ زمانی</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">تشری</month>
							<month type="2">حشوان</month>
							<month type="3">کسلو</month>
							<month type="4">طوت</month>
							<month type="5">شباط</month>
							<month type="6">آذار</month>
							<month type="7">واذار</month>
							<month type="8">نیسان</month>
							<month type="9">ایار</month>
							<month type="10">سیوان</month>
							<month type="11">تموز</month>
							<month type="12">آب</month>
							<month type="13">ایلول</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">ت</month>
							<month type="2">ح</month>
							<month type="3">ک</month>
							<month type="4">ط</month>
							<month type="5">ش</month>
							<month type="7">و</month>
							<month type="8">ن</month>
							<month type="9">ا</month>
							<month type="10">س</month>
							<month type="11">ت</month>
							<month type="12">آ</month>
							<month type="13">ا</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">تشری</month>
							<month type="2">حشوان</month>
							<month type="3">کسلو</month>
							<month type="4">طوت</month>
							<month type="5">شباط</month>
							<month type="6">آذار</month>
							<month type="7">واذار</month>
							<month type="8">نیسان</month>
							<month type="9">ایار</month>
							<month type="10">سیوان</month>
							<month type="11">تموز</month>
							<month type="12">آب</month>
							<month type="13">ایلول</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="6">آ</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">ت</month>
							<month type="2">ح</month>
							<month type="3">ک</month>
							<month type="4">ط</month>
							<month type="5">ش</month>
							<month type="6">آ</month>
							<month type="7">و</month>
							<month type="8">ن</month>
							<month type="9">ا</month>
							<month type="10">س</month>
							<month type="11">ت</month>
							<month type="12">آ</month>
							<month type="13">ا</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">تشری</month>
							<month type="2">حشوان</month>
							<month type="3">کسلو</month>
							<month type="4">طوت</month>
							<month type="5">شباط</month>
							<month type="6">آذار</month>
							<month type="7">واذار</month>
							<month type="8">نیسان</month>
							<month type="9">ایار</month>
							<month type="10">سیوان</month>
							<month type="11">تموز</month>
							<month type="12">آب</month>
							<month type="13">ایلول</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">محرم</month>
							<month type="2">صفر</month>
							<month type="3">ربیع الاول</month>
							<month type="4">ربیع الثانی</month>
							<month type="5">جمادی الاول</month>
							<month type="6">جمادی الثانی</month>
							<month type="7">رجب</month>
							<month type="8">شعبان</month>
							<month type="9">رمضان</month>
							<month type="10">شوال</month>
							<month type="11">ذیقعدهٔ</month>
							<month type="12">ذیحجهٔ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">م</month>
							<month type="2">ص</month>
							<month type="3">ر</month>
							<month type="4">ر</month>
							<month type="5">ج</month>
							<month type="6">ج</month>
							<month type="7">ر</month>
							<month type="8">ش</month>
							<month type="9">ر</month>
							<month type="10">ش</month>
							<month type="11">ذ</month>
							<month type="12">ذ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">محرم</month>
							<month type="2">صفر</month>
							<month type="3">ربیع الاول</month>
							<month type="4">ربیع الثانی</month>
							<month type="5">جمادی الاول</month>
							<month type="6">جمادی الثانی</month>
							<month type="7">رجب</month>
							<month type="8">شعبان</month>
							<month type="9">رمضان</month>
							<month type="10">شوال</month>
							<month type="11">ذیقعده</month>
							<month type="12">ذیحجه</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>قبل از ظهر</am>
				<eras>
					<eraNames>
						<era type="0">هجری قمری</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ه‍. ق.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<default choice="long"/>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/M/d G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/M/d G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="islamic-civil">
				<pm>بعد از ظهر</pm>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">فروردین</month>
							<month type="2">اردیبهشت</month>
							<month type="3">خرداد</month>
							<month type="4">تیر</month>
							<month type="5">مرداد</month>
							<month type="6">شهریور</month>
							<month type="7">مهر</month>
							<month type="8">آبان</month>
							<month type="9">آذر</month>
							<month type="10">دی</month>
							<month type="11">بهمن</month>
							<month type="12">اسفند</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ف</month>
							<month type="2">ا</month>
							<month type="3">خ</month>
							<month type="4">ت</month>
							<month type="5">م</month>
							<month type="6">ش</month>
							<month type="7">م</month>
							<month type="8">آ</month>
							<month type="9">آ</month>
							<month type="10">د</month>
							<month type="11">ب</month>
							<month type="12">ا</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">فروردین</month>
							<month type="2">اردیبهشت</month>
							<month type="3">خرداد</month>
							<month type="4">تیر</month>
							<month type="5">مرداد</month>
							<month type="6">شهریور</month>
							<month type="7">مهر</month>
							<month type="8">آبان</month>
							<month type="9">آذر</month>
							<month type="10">دی</month>
							<month type="11">بهمن</month>
							<month type="12">اسفند</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>قبل از ظهر</am>
				<pm>بعد از ظهر</pm>
				<eras>
					<eraNames>
						<era type="0">هجری شمسی</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ه‍. ش.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>وقت {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>نامشخص</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>آندورا</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>کابل</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>آنگویلا</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>روترا</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>پالمر</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>قطب جنوب</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>سی ووا</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>ماوسون</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>دیویس</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ووستوک</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>کیسی</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>دومونت د اورویل</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>مک موردو</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>ریو گالگوس</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>مندوسا</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>سن خوان</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>اوشوایا</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>لاریوجا</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>سن لوئیس</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>کاتامارکا</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>خوخوئی</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>توکومن</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>کوردووا</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>بوئنوس‌آیرس</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>پرت</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>اوکلا</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>داروین</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>آدلاید</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>بروکن هیل</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>کوری</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>ملبورن</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>هوبارت</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>لیندمن</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>سیدنی</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>بریسبین</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>لردهاو</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>آروبا</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>باربادس</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>بحرین</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>برمودا</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>ایرونپه</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>ریو برانکو</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>پورتوولیو</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>بوئاویشتا</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>ماناوس</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>کویاوا</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>کمپو گرانده</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>بلم</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>آراگواینا</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>سائوپائولو</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>باهیا</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>فورتالزا</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>ماسیو</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>ریسایف</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>نورونیا</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>بلیز</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>داوسن</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>وایت‌هورس</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>اینوویک</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>ونکوور</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>داوسن کریک</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>یلونایف</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>ادمونتون</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>سوئیفت کورنت</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>خلیج کمبریج</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>رجاینا</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>وینیپگ</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>رسولوت</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>رینی‌ریور</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>خلیجک رنکین</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>کورال هاربر</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>ثاندر بی</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>نیپیگان</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>تورنتو</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>مونرئال</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>ایکلوئت</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>پانگنیرتونگ</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>مانکتون</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>هلیفکس</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>خلیج گوس</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>گلیس بی</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>بلنک-سابلن</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>سنت جان</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>کینشاسا</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>لوبومباشی</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ایستر</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>سانتیاگو</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>کاشغر</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>ارومچی</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>چونگ کینگ</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>شانگهای</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>هاربین</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>کستا ریکا</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>کیپ ورد</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>دجیبوتی</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>دمونیکا</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>گالاپاگوس</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>گوایاکیل</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>قناری</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>سئوتا</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>مادرید</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>فیجی</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>تراک</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>پناپه</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>کوساره</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>گرینادا</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>جبل الطارق</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>تول</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>گودهوب</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>اسکورسبیساند</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>دانمارک شاون</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>گوادلوپ</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>گواتمالا</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>گوام</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>گویانا</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>هونگ کنگ</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>جاکارتا</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>پونتیاناک</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>ماکاسار</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>جیاپورا</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>تهران</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>جامایکا</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>اندربری</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>کریتیماتی</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>تاراوا</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>کویت</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>آکتا</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>اورال</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>آکتوبه</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>کویزیلوردا</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>آلماتی</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>لاکسمبورگ</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>موناکو</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>کواجالین</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>ماجورو</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>هود</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>اولان باتار</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>چیو بال سان</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>مکاو</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>مارتینیکو</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>منتسرات</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>مالتا</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>ماوریتیوس</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>مالدیو</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>تی جوانا</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>ارموسیو</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>ماساتلان</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>چیئوائوا</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>مونترئی</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>مکزیکوسیتی</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>مریدا</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>کانکون</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>کوچینگ</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>ناورو</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>نیوه</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>چاتام</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>پاناما</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>تاهیتی</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>مارکوس</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>گامبیر</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>پیتکیرن</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>پورتو ریکو</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>آزورس</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>مادریا</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>لیسبون</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>پالاو</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>قطر</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>ریونیون</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>کالینینگراد</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>مسکو</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>ولگاگراد</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>سامارا</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>یکاترینبرگ</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>اومسک</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>نووسیبیریسک</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>کراسنویارسک</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ایرکوتسک</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>یاکوتسک</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ولادی‌وستوک</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>ساخالین</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>مگادن</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>کامچاتکا</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>آنادیر</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>سنگاپور</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>ال سالوادر</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>اوژگورود</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>کیف</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>سیمفروپل</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>زاپوروژی</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>میدوی</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>جانستون</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>ویک</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>ایدک</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>نوم</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>هونولولو</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>انکریج</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>یاکوتات</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>جونو</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>لوس‌آنجلس</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>بویسی</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>فینکس</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>شیپراک</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>دنور</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>سالم جدید، داکوتای شمالی</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>سنتر، داکوتای شمالی</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>شیکاگو</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>منامینی</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>وینسنس ایندیانا</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>پترزبرگ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>تل‌سیتی، ایندیانا</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>ناکس</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>ویناماک ایندیانا</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>مارنگو</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>ایندیاناپولیس</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>لوئیزویل</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>ویوی</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>مانتیسلو</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>دترویت</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>نیویورک</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>سمرقند</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>تاشکند</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>مایوته</exemplarCity>
			</zone>
			<metazone type="Afghanistan">
				<long>
					<generic>وقت افغانستان</generic>
					<standard>وقت افغانستان</standard>
					<daylight>وقت تابستانی افغانستان</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>وقت مرکز افریقا</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>وقت شرق افریقا</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>وقت جنوب افریقا</generic>
					<standard>وقت عادی جنوب افریقا</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>وقت غرب افریقا</standard>
					<daylight>وقت تابستانی غرب افریقا</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>وقت آلاسکا</generic>
					<standard>وقت عادی آلاسکا</standard>
					<daylight>وقت تابستانی آلاسکا</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>وقت آلاسکا‐هاوائی</generic>
					<standard>وقت عادی آلاسکا‐هاوائی</standard>
					<daylight>وقت تابستانی آلاسکا‐هاوائی</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>وقت آمازون</standard>
					<daylight>وقت تابستانی آمازون</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>وقت مرکز امریکا</generic>
					<standard>وقت عادی مرکز امریکا</standard>
					<daylight>وقت تابستانی مرکز امریکا</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>وقت شرق امریکا</generic>
					<standard>وقت عادی شرق امریکا</standard>
					<daylight>وقت تابستانی شرق امریکا</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>وقت کوهستانی امریکا</generic>
					<standard>وقت عادی کوهستانی امریکا</standard>
					<daylight>وقت تابستانی کوهستانی امریکا</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>وقت غرب امریکا</generic>
					<standard>وقت عادی غرب امریکا</standard>
					<daylight>وقت تابستانی غرب امریکا</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>وقت عربستان</generic>
					<standard>وقت عادی عربستان</standard>
					<daylight>وقت تابستانی عربستان</daylight>
				</long>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>وقت آرژانتین</standard>
					<daylight>وقت تابستانی آرژانتین</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>وقت غرب آرژانتین</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>وقت ارمنستان</standard>
					<daylight>وقت تابستانی ارمنستان</daylight>
				</long>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>وقت عشق‌آباد</standard>
					<daylight>وقت تابستانی عشق‌آباد</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>وقت آتلانتیک</generic>
					<standard>وقت عادی آتلانتیک</standard>
					<daylight>وقت تابستانی آتلانتیک</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>وقت مرکز استرالیا</generic>
					<standard>وقت عادی مرکز استرالیا</standard>
					<daylight>وقت تابستانی مرکز استرالیا</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>وقت شرق استرالیا</generic>
					<standard>وقت عادی شرق استرالیا</standard>
					<daylight>وقت تابستانی شرق استرالیا</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>وقت غرب استرالیا</generic>
					<standard>وقت عادی غرب استرالیا</standard>
					<daylight>وقت تابستانی غرب استرالیا</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>وقت جمهوری آذربایجان</standard>
					<daylight>وقت تابستانی جمهوری آذربایجان</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>وقت باکو</standard>
					<daylight>وقت تابستانی باکو</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>وقت بنگلادش</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>وقت برینگ</generic>
					<standard>وقت عادی برینگ</standard>
					<daylight>وقت تابستانی برینگ</daylight>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>وقت بوتان</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>وقت بولیوی</standard>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>وقت برازیلیا</standard>
					<daylight>وقت تابستانی برازیلیا</daylight>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>وقت کیپ ورد</standard>
					<daylight>وقت تابستانی کیپ ورد</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>وقت شیلی</standard>
					<daylight>وقت تابستانی شیلی</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>وقت چین</generic>
					<standard>وقت عادی چین</standard>
					<daylight>وقت تابستانی چین</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>وقت جزیرهٔ کریسمس</standard>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>وقت جزایر کوکوس</standard>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>وقت کلمبیا</standard>
					<daylight>وقت تابستانی کلمبیا</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>وقت جزایر کوک</standard>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>وقت کوبا</generic>
					<standard>وقت عادی کوبا</standard>
					<daylight>وقت تابستانی کوبا</daylight>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>وقت دیویس</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>وقت دوشنبه</standard>
					<daylight>وقت تابستانی دوشنبه</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>وقت گویان هلند</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>وقت تیمور شرقی</standard>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>وقت جزیرهٔ ایستر</standard>
					<daylight>وقت تابستانی جزیرهٔ ایستر</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>وقت اکوادور</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>وقت مرکز اروپا</standard>
					<daylight>وقت تابستانی مرکز اروپا</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>وقت شرق اروپا</standard>
					<daylight>وقت تابستانی شرق اروپا</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>وقت غرب اروپا</standard>
					<daylight>وقت تابستانی غرب اروپا</daylight>
				</long>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>وقت جزایر فالکلند</standard>
					<daylight>وقت تابستانی جزایر فالکلند</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>وقت فیجی</standard>
					<daylight>وقت تابستانی فیجی</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>وقت گویان فرانسه</standard>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>وقت گرینویچ</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>وقت گالاپاگوس</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>وقت گرجستان</standard>
					<daylight>وقت تابستانی گرجستان</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>وقت مرکز گروئنلند</standard>
					<daylight>وقت تابستانی مرکز گروئنلند</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>وقت شرق گروئنلند</standard>
					<daylight>وقت تابستانی شرق گروئنلند</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>وقت غرب گروئنلند</standard>
					<daylight>وقت تابستانی غرب گروئنلند</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>وقت عادی گوام</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>وقت گویان</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>وقت هنگ‌کنگ</standard>
					<daylight>وقت تابستانی هنگ‌کنگ</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>وقت عادی هند</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>وقت اقیانوس هند</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>وقت هندوچین</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>وقت مرکز اندونزی</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>وقت شرق اندونزی</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>وقت غرب اندونزی</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<generic>وقت ایران</generic>
					<standard>وقت عادی ایران</standard>
					<daylight>وقت تابستانی ایران</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>وقت ایرکوتسک</standard>
					<daylight>وقت تابستانی ایرکوتسک</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>وقت اسرائیل</generic>
					<standard>وقت عادی اسرائیل</standard>
					<daylight>وقت تابستانی اسرائیل</daylight>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>وقت ژاپن</generic>
					<standard>وقت عادی ژاپن</standard>
					<daylight>وقت تابستانی ژاپن</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>وقت کراچی</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>وقت کاشغر</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>وقت شرق قزاقستان</generic>
					<standard>وقت عادی شرق قزاقستان</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>وقت غرب قزاقستان</generic>
					<standard>وقت عادی غرب قزاقستان</standard>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>وقت کره</generic>
					<standard>وقت عادی کره</standard>
					<daylight>وقت تابستانی کره</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>وقت قرقیزستان</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>وقت لانکا</standard>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>وقت ماکائو</standard>
					<daylight>وقت تابستانی ماکائو</daylight>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>وقت مالزی</standard>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>وقت مالدیو</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>وقت جزایر مارشال</standard>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>وقت مسکو</generic>
					<standard>وقت عادی مسکو</standard>
					<daylight>وقت تابستانی مسکو</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>وقت میانمار</standard>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>وقت نائورو</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>وقت نپال</standard>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>وقت زلاند نو</generic>
					<standard>وقت عادی زلاند نو</standard>
					<daylight>وقت تابستانی زلاند نو</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>وقت جزایر ماریانای شمالی</standard>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>وقت پاکستان</standard>
					<daylight>وقت تابستانی پاکستان</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>وقت پالائو</standard>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>وقت پاپوا گینهٔ نو</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>وقت پاراگوئه</standard>
					<daylight>وقت تابستانی پاراگوئه</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>وقت پرو</standard>
					<daylight>وقت تابستانی پرو</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>وقت فیلیپین</standard>
					<daylight>وقت تابستانی فیلیپین</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>وقت سمرقند</standard>
					<daylight>وقت تابستانی سمرقند</daylight>
				</long>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>وقت عادی ساموا</standard>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>وقت سیشل</standard>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>وقت عادی سنگاپور</standard>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>وقت جزایر سلیمان</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>وقت جورجیای جنوبی</standard>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>وقت سورینام</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>وقت تاهیتی</standard>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>وقت تاجیکستان</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>وقت تاشکند</standard>
					<daylight>وقت تابستانی تاشکند</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>وقت تفلیس</standard>
					<daylight>وقت تابستانی تفلیس</daylight>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>وقت تونگا</standard>
					<daylight>وقت تابستانی تونگا</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>وقت ترکیه</standard>
					<daylight>وقت تابستانی ترکیه</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>وقت ترکمنستان</standard>
					<daylight>وقت تابستانی ترکمنستان</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>وقت تووالو</standard>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>وقت اروگوئه</standard>
					<daylight>وقت تابستانی اروگوئه</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>وقت ارومچی</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>وقت ازبکستان</standard>
					<daylight>وقت تابستانی ازبکستان</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>وقت واناتو</standard>
					<daylight>وقت تابستانی واناتو</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>وقت ونزوئلا</standard>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>وقت جزیرهٔ ویک</standard>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>وقت یاکوتسک</standard>
					<daylight>وقت تابستانی یاکوتسک</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>وقت ایروان</standard>
					<daylight>وقت تابستانی ایروان</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>٫</decimal>
			<group>٬</group>
			<list>؛</list>
			<percentSign>٪</percentSign>
			<nativeZeroDigit>۰</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>−</minusSign>
			<exponential>×۱۰^</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###;'‪'-#,##0.###'‬'</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>'‪'%#,##0'‬'</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤;'‪'-#,##0.00'‬' ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>درهم امارات متحدهٔ عربی</displayName>
			</currency>
			<currency type="AFA">
				<displayName>افغانی قدیم</displayName>
			</currency>
			<currency type="AFN">
				<displayName>افغانی</displayName>
			</currency>
			<currency type="ALL">
				<displayName>لک آلبانی</displayName>
			</currency>
			<currency type="AMD">
				<displayName>درم ارمنستان</displayName>
			</currency>
			<currency type="ARP">
				<displayName>پزوی آرژانتین (۱۹۸۳ تا ۱۹۸۵)‏</displayName>
			</currency>
			<currency type="ARS">
				<displayName>پزوی آرژانتین</displayName>
			</currency>
			<currency type="ATS">
				<displayName>شیلینگ اتریش</displayName>
			</currency>
			<currency type="AUD">
				<displayName>دلار استرالیا</displayName>
			</currency>
			<currency type="AZM">
				<displayName>منات قدیم جمهوری آذربایجان</displayName>
			</currency>
			<currency type="AZN">
				<displayName>منات جمهوری آذربایجان</displayName>
			</currency>
			<currency type="BAD">
				<displayName>دینار بوسنی و هرزگوین</displayName>
			</currency>
			<currency type="BBD">
				<displayName>دلار باربادوس</displayName>
			</currency>
			<currency type="BEF">
				<displayName>فرانک بلژیک</displayName>
			</currency>
			<currency type="BHD">
				<displayName>دینار بحرین</displayName>
			</currency>
			<currency type="BIF">
				<displayName>فرانک بوروندی</displayName>
			</currency>
			<currency type="BMD">
				<displayName>دلار برمودا</displayName>
			</currency>
			<currency type="BND">
				<displayName>دلار برونئی</displayName>
			</currency>
			<currency type="BOP">
				<displayName>پزوی بولیوی</displayName>
			</currency>
			<currency type="BRL">
				<displayName>رئال برزیل</displayName>
			</currency>
			<currency type="BSD">
				<displayName>دلار باهاما</displayName>
			</currency>
			<currency type="BYR">
				<displayName>روبل بیلوروسی</displayName>
			</currency>
			<currency type="BZD">
				<displayName>دلار بلیز</displayName>
			</currency>
			<currency type="CAD">
				<displayName>دلار کانادا</displayName>
			</currency>
			<currency type="CHF">
				<displayName>فرانک سوئیس</displayName>
			</currency>
			<currency type="CLP">
				<displayName>پزوی شیلی</displayName>
			</currency>
			<currency type="CNY">
				<displayName>یوآن چین</displayName>
			</currency>
			<currency type="COP">
				<displayName>پزوی کلمبیا</displayName>
			</currency>
			<currency type="CSD">
				<displayName>دینار قدیم صربستان</displayName>
			</currency>
			<currency type="CUP">
				<displayName>پزوی کوبا</displayName>
			</currency>
			<currency type="DEM">
				<displayName>مارک آلمان</displayName>
			</currency>
			<currency type="DJF">
				<displayName>فرانک جیبوتی</displayName>
			</currency>
			<currency type="DKK">
				<displayName>کرون دانمارک</displayName>
			</currency>
			<currency type="DOP">
				<displayName>پزوی دومینیکا</displayName>
			</currency>
			<currency type="DZD">
				<displayName>دینار الجزایر</displayName>
			</currency>
			<currency type="EUR">
				<displayName>یورو</displayName>
			</currency>
			<currency type="FJD">
				<displayName>دلار فیجی</displayName>
			</currency>
			<currency type="FRF">
				<displayName>فرانک فرانسه</displayName>
			</currency>
			<currency type="GBP">
				<displayName>پوند بریتانیا</displayName>
			</currency>
			<currency type="GNF">
				<displayName>فرانک گینه</displayName>
			</currency>
			<currency type="GRD">
				<displayName>دراخمای یونان</displayName>
			</currency>
			<currency type="GWP">
				<displayName>پزوی گینهٔ بیسائو</displayName>
			</currency>
			<currency type="GYD">
				<displayName>دلار گویان</displayName>
			</currency>
			<currency type="HKD">
				<displayName>دلار هنگ‌کنگ</displayName>
			</currency>
			<currency type="HRD">
				<displayName>دینار کرواسی</displayName>
			</currency>
			<currency type="HUF">
				<displayName>فورینت مجارستان</displayName>
			</currency>
			<currency type="IDR">
				<displayName>روپیهٔ اندونزی</displayName>
			</currency>
			<currency type="IEP">
				<displayName>پوند ایرلند</displayName>
			</currency>
			<currency type="INR">
				<displayName>روپیهٔ هند</displayName>
			</currency>
			<currency type="IQD">
				<displayName>دینار عراق</displayName>
			</currency>
			<currency type="IRR">
				<displayName>ریال ایران</displayName>
				<symbol>﷼</symbol>
			</currency>
			<currency type="ITL">
				<displayName>لیرهٔ ایتالیا</displayName>
			</currency>
			<currency type="JMD">
				<displayName>دلار جامائیکا</displayName>
			</currency>
			<currency type="JOD">
				<displayName>دینار اردن</displayName>
			</currency>
			<currency type="JPY">
				<displayName>ین ژاپن</displayName>
			</currency>
			<currency type="KES">
				<displayName>شیلینگ کنیا</displayName>
			</currency>
			<currency type="KMF">
				<displayName>فرانک کومورو</displayName>
			</currency>
			<currency type="KWD">
				<displayName>دینار کویت</displayName>
			</currency>
			<currency type="KYD">
				<displayName>دلار جزایر کِیمن</displayName>
			</currency>
			<currency type="LKR">
				<displayName>روپیهٔ سری‌لانکا</displayName>
			</currency>
			<currency type="LRD">
				<displayName>دلار لیبریا</displayName>
			</currency>
			<currency type="LUF">
				<displayName>فرانک لوکزامبورگ</displayName>
			</currency>
			<currency type="LVR">
				<displayName>روبل لتونی</displayName>
			</currency>
			<currency type="LYD">
				<displayName>دینار لیبی</displayName>
			</currency>
			<currency type="MAD">
				<displayName>درهم مراکش</displayName>
			</currency>
			<currency type="MAF">
				<displayName>فرانک مراکش</displayName>
			</currency>
			<currency type="MGF">
				<displayName>فرانک ماداگاسکار</displayName>
			</currency>
			<currency type="MLF">
				<displayName>فرانک مالی</displayName>
			</currency>
			<currency type="MTL">
				<displayName>لیرهٔ مالت</displayName>
			</currency>
			<currency type="MTP">
				<displayName>پوند مالت</displayName>
			</currency>
			<currency type="MXN">
				<displayName>پزوی مکزیک</displayName>
			</currency>
			<currency type="NAD">
				<displayName>دلار نامیبیا</displayName>
			</currency>
			<currency type="NLG">
				<displayName>گیلدر هلند</displayName>
			</currency>
			<currency type="NOK">
				<displayName>کرون نروژ</displayName>
			</currency>
			<currency type="NPR">
				<displayName>روپیهٔ نپال</displayName>
			</currency>
			<currency type="NZD">
				<displayName>دلار زلاند نو</displayName>
			</currency>
			<currency type="OMR">
				<displayName>ریال عمان</displayName>
			</currency>
			<currency type="PHP">
				<displayName>پزوی فیلیپین</displayName>
			</currency>
			<currency type="PKR">
				<displayName>روپیهٔ پاکستان</displayName>
			</currency>
			<currency type="PLN">
				<displayName>زواتی لهستان</displayName>
			</currency>
			<currency type="QAR">
				<displayName>ریال قطر</displayName>
			</currency>
			<currency type="RHD">
				<displayName>دلار رودزیا</displayName>
			</currency>
			<currency type="RSD">
				<displayName>دینار صربستان</displayName>
			</currency>
			<currency type="RUB">
				<displayName>روبل روسیه</displayName>
			</currency>
			<currency type="RUR">
				<displayName>روبل قدیم روسیه</displayName>
			</currency>
			<currency type="RWF">
				<displayName>فرانک رواندا</displayName>
			</currency>
			<currency type="SAR">
				<displayName>ریال سعودی</displayName>
			</currency>
			<currency type="SBD">
				<displayName>دلار جزایر سلیمان</displayName>
			</currency>
			<currency type="SDD">
				<displayName>دینار قدیم سودان</displayName>
			</currency>
			<currency type="SEK">
				<displayName>کرون سوئد</displayName>
			</currency>
			<currency type="SGD">
				<displayName>دلار سنگاپور</displayName>
			</currency>
			<currency type="SRD">
				<displayName>دلار سورینام</displayName>
			</currency>
			<currency type="SRG">
				<displayName>گیلدر سورینام</displayName>
			</currency>
			<currency type="SUR">
				<displayName>روبل شوروی</displayName>
			</currency>
			<currency type="SYP">
				<displayName>لیرهٔ سوریه</displayName>
			</currency>
			<currency type="THB">
				<displayName>بات تایلند</displayName>
			</currency>
			<currency type="TJR">
				<displayName>روبل تاجیکستان</displayName>
			</currency>
			<currency type="TJS">
				<displayName>سامانی تاجیکستان</displayName>
			</currency>
			<currency type="TMM">
				<displayName>منات ترکمنستان</displayName>
			</currency>
			<currency type="TND">
				<displayName>دینار تونس</displayName>
			</currency>
			<currency type="TRL">
				<displayName>لیرهٔ قدیم ترکیه</displayName>
			</currency>
			<currency type="TRY">
				<displayName>لیرهٔ ترکیه</displayName>
			</currency>
			<currency type="TTD">
				<displayName>دلار ترینیداد و توباگو</displayName>
			</currency>
			<currency type="TWD">
				<displayName>دلار جدید تایوان</displayName>
			</currency>
			<currency type="TZS">
				<displayName>شیلینگ تانزانیا</displayName>
			</currency>
			<currency type="UGS">
				<displayName>شیلینگ قدیم اوگاندا</displayName>
			</currency>
			<currency type="UGX">
				<displayName>شیلینگ اوگاندا</displayName>
			</currency>
			<currency type="USD">
				<displayName>دلار امریکا</displayName>
			</currency>
			<currency type="UZS">
				<displayName>سوم ازبکستان</displayName>
			</currency>
			<currency type="XAG">
				<displayName>نقره</displayName>
			</currency>
			<currency type="XAU">
				<displayName>طلا</displayName>
			</currency>
			<currency type="XCD">
				<displayName>دلار شرق کارائیب</displayName>
			</currency>
			<currency type="XFO">
				<displayName>فرانک طلای فرانسه</displayName>
			</currency>
			<currency type="XPD">
				<displayName>پالادیم</displayName>
			</currency>
			<currency type="XPT">
				<displayName>پلاتین</displayName>
			</currency>
			<currency type="XXX">
				<displayName>ارز نامشخص یا نامعتبر</displayName>
			</currency>
			<currency type="YDD">
				<displayName>دینار یمن</displayName>
			</currency>
			<currency type="YER">
				<displayName>ریال یمن</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>راند افریقای جنوبی</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>دلار زیمبابوه</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} روز</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} ساعت</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} دقیقه</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} ماه</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} ثانیه</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} هفته</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} سال</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>بله:ب:آری:آ:y:yes</yesstr>
			<nostr>نه:ن:خیر:خ:n:no</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�zQzzLocale/Data/or.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/06/15 09:11:18 $"/>
		<language type="or"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="or">ଓଡ଼ିଆ</language>
		</languages>
		<territories>
			<territory type="IN">ଭାରତ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[୦-୯ ଅ-ଋ ଏ ଐ ଓ-ନ ପ-ର ଲ ଳ ଶ-ହ {ଡ଼}ଡ଼ {ଢ଼}ଢ଼ ୟ ୱ ଵ ଂ ଃ ଁ ୍ ଼ ା-ୃ େ ୈ ୋ ୌ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ଜାନୁଆରୀ</month>
							<month type="2">ଫେବ୍ରୁୟାରୀ</month>
							<month type="3">ମାର୍ଚ୍ଚ</month>
							<month type="4">ଅପ୍ରେଲ</month>
							<month type="5">ମେ</month>
							<month type="6">ଜୁନ</month>
							<month type="7">ଜୁଲାଇ</month>
							<month type="8">ଅଗଷ୍ଟ</month>
							<month type="9">ସେପ୍ଟେମ୍ବର</month>
							<month type="10">ଅକ୍ଟୋବର</month>
							<month type="11">ନଭେମ୍ବର</month>
							<month type="12">ଡିସେମ୍ବର</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ଜାନୁଆରୀ</month>
							<month type="2">ଫେବ୍ରୁୟାରୀ</month>
							<month type="3">ମାର୍ଚ୍ଚ</month>
							<month type="4">ଅପ୍ରେଲ</month>
							<month type="5">ମେ</month>
							<month type="6">ଜୁନ</month>
							<month type="7">ଜୁଲାଇ</month>
							<month type="8">ଅଗଷ୍ଟ</month>
							<month type="9">ସେପ୍ଟେମ୍ବର</month>
							<month type="10">ଅକ୍ଟୋବର</month>
							<month type="11">ନଭେମ୍ବର</month>
							<month type="12">ଡିସେମ୍ବର</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ରବି</day>
							<day type="mon">ସୋମ</day>
							<day type="tue">ମଙ୍ଗଳ</day>
							<day type="wed">ବୁଧ</day>
							<day type="thu">ଗୁରୁ</day>
							<day type="fri">ଶୁକ୍ର</day>
							<day type="sat">ଶନି</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ରବିବାର</day>
							<day type="mon">ସୋମବାର</day>
							<day type="tue">ମଙ୍ଗଳବାର</day>
							<day type="wed">ବୁଧବାର</day>
							<day type="thu">ଗୁରୁବାର</day>
							<day type="fri">ଶୁକ୍ରବାର</day>
							<day type="sat">ଶନିବାର</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>MMMM d,EEEE, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<nativeZeroDigit>୦</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<displayName>ଟଙକା</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ହଁ</yesstr>
			<nostr>ନା</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���N##Locale/Data/tn_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tn"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[��K�,�,Locale/Data/bs.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.32 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="bs"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikaans</language>
			<language type="am">amharski</language>
			<language type="ar">arapski</language>
			<language type="as">asameski</language>
			<language type="az">azerbejdžanski</language>
			<language type="be">bjeloruski</language>
			<language type="bg">bugarski</language>
			<language type="bh">bihari</language>
			<language type="bn">bengalski</language>
			<language type="bo">tibetanski</language>
			<language type="br">bretonac</language>
			<language type="bs">bosanski</language>
			<language type="ca">katalonski</language>
			<language type="cs">češki</language>
			<language type="cy">velški</language>
			<language type="da">danski</language>
			<language type="de">njemački</language>
			<language type="el">grčki</language>
			<language type="en">engleski</language>
			<language type="eo">esperanto</language>
			<language type="es">španjolski</language>
			<language type="et">estonski</language>
			<language type="eu">baskijski</language>
			<language type="fa">perzijski</language>
			<language type="fi">finski</language>
			<language type="fil">filipinski</language>
			<language type="fo">farski</language>
			<language type="fr">francuski</language>
			<language type="fy">frizijski</language>
			<language type="ga">irski</language>
			<language type="gd">škotski gelski</language>
			<language type="gl">galicijski</language>
			<language type="gn">guarani</language>
			<language type="gu">gudžarati</language>
			<language type="he">hebrejski</language>
			<language type="hi">hindu</language>
			<language type="hr">hrvatski</language>
			<language type="hu">mađarski</language>
			<language type="hy">armenski</language>
			<language type="ia">interlingua</language>
			<language type="id">indonezijski</language>
			<language type="ie">međujezični</language>
			<language type="is">islandski</language>
			<language type="it">talijanski</language>
			<language type="ja">japanski</language>
			<language type="jv">javanski</language>
			<language type="ka">gruzijski</language>
			<language type="km">kambodžanski</language>
			<language type="kn">kannada</language>
			<language type="ko">koreanski</language>
			<language type="ku">kurdski</language>
			<language type="ky">kirgiski</language>
			<language type="la">latinski</language>
			<language type="ln">n/a</language>
			<language type="lo">laothian</language>
			<language type="lt">litvanski</language>
			<language type="lv">latvijski</language>
			<language type="mk">makedonski</language>
			<language type="ml">malajalamski</language>
			<language type="mn">mongolski</language>
			<language type="mr">marati</language>
			<language type="ms">malajski</language>
			<language type="mt">malteški</language>
			<language type="ne">nepalski</language>
			<language type="nl">holandski</language>
			<language type="nn">norveški (novonorveški)</language>
			<language type="no">norveški</language>
			<language type="oc">oksitanski</language>
			<language type="or">indijski</language>
			<language type="pa">pendžabi</language>
			<language type="pl">poljski</language>
			<language type="ps">pakistanski</language>
			<language type="pt">portugalski</language>
			<language type="pt_BR">portugalski (Brazil)</language>
			<language type="pt_PT">portugalski (Portugal)</language>
			<language type="ro">rumunski</language>
			<language type="ru">ruski</language>
			<language type="sa">sanskrit</language>
			<language type="sd">sindi</language>
			<language type="sh">srpsko-hrvatski</language>
			<language type="si">sinhaleski</language>
			<language type="sk">slovački</language>
			<language type="sl">slovenački</language>
			<language type="so">somalski</language>
			<language type="sq">albanski</language>
			<language type="sr">srpski</language>
			<language type="st">sesoto</language>
			<language type="su">sudanski</language>
			<language type="sv">švedski</language>
			<language type="sw">svahili</language>
			<language type="ta">tamilski</language>
			<language type="te">telugu</language>
			<language type="th">tajlandski</language>
			<language type="ti">tigrinya (eritrejski)</language>
			<language type="tk">turkmenski</language>
			<language type="tlh">klingonski</language>
			<language type="tr">turski</language>
			<language type="tw">twi</language>
			<language type="ug">uighur</language>
			<language type="uk">ukrajinski</language>
			<language type="und">nepoznati ili nevažeći jezik</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekistanski</language>
			<language type="vi">vijetnamski</language>
			<language type="xh">bantu</language>
			<language type="yi">jidiš</language>
			<language type="zh">kineski</language>
			<language type="zu">zulu</language>
		</languages>
		<scripts>
			<script type="Zxxx">nepisani jezik</script>
			<script type="Zzzz">nepoznato ili nevažeće pismo</script>
		</scripts>
		<territories>
			<territory type="BA">Bosna i Hercegovina</territory>
			<territory type="ME">Crna Gora</territory>
			<territory type="RS">Srbija</territory>
			<territory type="TO">Tonga</territory>
			<territory type="ZZ">Nepoznata ili nevažeća oblast</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ć č d đ {dž} e-l {lj} m n {nj} o p r s š t-v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">Maj</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Avg</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januar</month>
							<month type="2">Februar</month>
							<month type="3">Mart</month>
							<month type="4">April</month>
							<month type="5">Maj</month>
							<month type="6">Juni</month>
							<month type="7">Juli</month>
							<month type="8">Avgust</month>
							<month type="9">Septembar</month>
							<month type="10">Oktobar</month>
							<month type="11">Novembar</month>
							<month type="12">Decembar</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ned</day>
							<day type="mon">Pon</day>
							<day type="tue">Uto</day>
							<day type="wed">Sri</day>
							<day type="thu">Čet</day>
							<day type="fri">Pet</day>
							<day type="sat">Sub</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Nedjelja</day>
							<day type="mon">Ponedjeljak</day>
							<day type="tue">Utorak</day>
							<day type="wed">Srijeda</day>
							<day type="thu">Četvrtak</day>
							<day type="fri">Petak</day>
							<day type="sat">Subota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Prvi kvartal</quarter>
							<quarter type="2">Drugi kvartal</quarter>
							<quarter type="3">Treći kvartal</quarter>
							<quarter type="4">Četvrti kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Nepoznati ili nevažeći grad</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencies>
			<currency type="BAM">
				<displayName>Konvertibilna marka</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Nepoznata ili nevažeća valuta</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>da:d</yesstr>
			<nostr>ne:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���))Locale/Data/haw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="haw"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="haw">ʻōlelo Hawaiʻi</language>
		</languages>
		<territories>
			<territory type="AU">Nūhōlani</territory>
			<territory type="CA">Kanakā</territory>
			<territory type="CN">Kina</territory>
			<territory type="DE">Kelemānia</territory>
			<territory type="DK">Kenemaka</territory>
			<territory type="ES">Kepania</territory>
			<territory type="FR">Palani</territory>
			<territory type="GB">Aupuni Mōʻī Hui Pū ʻIa</territory>
			<territory type="GR">Helene</territory>
			<territory type="IE">ʻIlelani</territory>
			<territory type="IL">ʻIseraʻela</territory>
			<territory type="IN">ʻĪnia</territory>
			<territory type="IT">ʻĪkālia</territory>
			<territory type="JP">Iāpana</territory>
			<territory type="MX">Mekiko</territory>
			<territory type="NL">Hōlani</territory>
			<territory type="NZ">Aotearoa</territory>
			<territory type="PH">ʻĀina Pilipino</territory>
			<territory type="RU">Lūkia</territory>
			<territory type="US">ʻAmelika Hui Pū ʻIa</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a ā e ē i ī o ō u ū h k-n p w ʻ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[b-d f g j q-t v x-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ian.</month>
							<month type="2">Pep.</month>
							<month type="3">Mal.</month>
							<month type="4">ʻAp.</month>
							<month type="5">Mei</month>
							<month type="6">Iun.</month>
							<month type="7">Iul.</month>
							<month type="8">ʻAu.</month>
							<month type="9">Kep.</month>
							<month type="10">ʻOk.</month>
							<month type="11">Now.</month>
							<month type="12">Kek.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ianuali</month>
							<month type="2">Pepeluali</month>
							<month type="3">Malaki</month>
							<month type="4">ʻApelila</month>
							<month type="5">Mei</month>
							<month type="6">Iune</month>
							<month type="7">Iulai</month>
							<month type="8">ʻAukake</month>
							<month type="9">Kepakemapa</month>
							<month type="10">ʻOkakopa</month>
							<month type="11">Nowemapa</month>
							<month type="12">Kekemapa</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">LP</day>
							<day type="mon">P1</day>
							<day type="tue">P2</day>
							<day type="wed">P3</day>
							<day type="thu">P4</day>
							<day type="fri">P5</day>
							<day type="sat">P6</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Lāpule</day>
							<day type="mon">Poʻakahi</day>
							<day type="tue">Poʻalua</day>
							<day type="wed">Poʻakolu</day>
							<day type="thu">Poʻahā</day>
							<day type="fri">Poʻalima</day>
							<day type="sat">Poʻaono</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="yyM">M/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;(¤#,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[�U<�"" Locale/Data/supplementalData.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldmlSupplemental.dtd">

<supplementalData>
	<version number="$Revision: 1.180 $"/>
	<generation date="$Date: 2008/07/09 17:41:17 $"/>
	<cldrVersion version="1.6"/>
    <currencyData>
        <fractions>
            <info iso4217="ADP" digits="0" rounding="0"/>
            <info iso4217="AFN" digits="0" rounding="0"/>
            <info iso4217="ALL" digits="0" rounding="0"/>
            <info iso4217="AMD" digits="0" rounding="0"/>
            <info iso4217="BHD" digits="3" rounding="0"/>
            <info iso4217="BIF" digits="0" rounding="0"/>
            <info iso4217="BYR" digits="0" rounding="0"/>
            <info iso4217="CHF" digits="2" rounding="5"/>
            <info iso4217="CLF" digits="0" rounding="0"/>
            <info iso4217="CLP" digits="0" rounding="0"/>
            <info iso4217="COP" digits="0" rounding="0"/>
            <info iso4217="CRC" digits="0" rounding="0"/>
            <info iso4217="DEFAULT" digits="2" rounding="0"/>
            <info iso4217="DJF" digits="0" rounding="0"/>
            <info iso4217="ESP" digits="0" rounding="0"/>
            <info iso4217="GNF" digits="0" rounding="0"/>
            <info iso4217="GYD" digits="0" rounding="0"/>
            <info iso4217="HUF" digits="0" rounding="0"/>
            <info iso4217="IDR" digits="0" rounding="0"/>
            <info iso4217="IQD" digits="0" rounding="0"/>
            <info iso4217="IRR" digits="0" rounding="0"/>
            <info iso4217="ISK" digits="0" rounding="0"/>
            <info iso4217="ITL" digits="0" rounding="0"/>
            <info iso4217="JOD" digits="3" rounding="0"/>
            <info iso4217="JPY" digits="0" rounding="0"/>
            <info iso4217="KMF" digits="0" rounding="0"/>
            <info iso4217="KPW" digits="0" rounding="0"/>
            <info iso4217="KRW" digits="0" rounding="0"/>
            <info iso4217="KWD" digits="3" rounding="0"/>
            <info iso4217="LAK" digits="0" rounding="0"/>
            <info iso4217="LBP" digits="0" rounding="0"/>
            <info iso4217="LUF" digits="0" rounding="0"/>
            <info iso4217="LYD" digits="3" rounding="0"/>
            <info iso4217="MGA" digits="0" rounding="0"/>
            <info iso4217="MGF" digits="0" rounding="0"/>
            <info iso4217="MMK" digits="0" rounding="0"/>
            <info iso4217="MNT" digits="0" rounding="0"/>
            <info iso4217="MRO" digits="0" rounding="0"/>
            <info iso4217="MUR" digits="0" rounding="0"/>
            <info iso4217="OMR" digits="3" rounding="0"/>
            <info iso4217="PKR" digits="0" rounding="0"/>
            <info iso4217="PYG" digits="0" rounding="0"/>
            <info iso4217="RSD" digits="0" rounding="0"/>
            <info iso4217="RWF" digits="0" rounding="0"/>
            <info iso4217="SLL" digits="0" rounding="0"/>
            <info iso4217="SOS" digits="0" rounding="0"/>
            <info iso4217="STD" digits="0" rounding="0"/>
            <info iso4217="SYP" digits="0" rounding="0"/>
            <info iso4217="TMM" digits="0" rounding="0"/>
            <info iso4217="TND" digits="3" rounding="0"/>
            <info iso4217="TRL" digits="0" rounding="0"/>
            <info iso4217="TWD" digits="0" rounding="0"/>
            <info iso4217="TZS" digits="0" rounding="0"/>
            <info iso4217="UGX" digits="0" rounding="0"/>
            <info iso4217="UZS" digits="0" rounding="0"/>
            <info iso4217="VND" digits="0" rounding="0"/>
            <info iso4217="VUV" digits="0" rounding="0"/>
            <info iso4217="XAF" digits="0" rounding="0"/>
            <info iso4217="XOF" digits="0" rounding="0"/>
            <info iso4217="XPF" digits="0" rounding="0"/>
            <info iso4217="YER" digits="0" rounding="0"/>
            <info iso4217="ZMK" digits="0" rounding="0"/>
            <info iso4217="ZWD" digits="0" rounding="0"/>
        </fractions>
        <region iso3166="AD">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ESP" from="1873" to="2002-02-28"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
            <currency iso4217="ADP" from="1936" to="2001-12-31"/>
        </region>
        <region iso3166="AE">
            <currency iso4217="AED" from="1973-05-19"/>
        </region>
        <region iso3166="AF">
            <currency iso4217="AFN" from="2002-10-07"/>
            <currency iso4217="AFA" from="1927-03-14" to="2002-12-31"/>
        </region>
        <region iso3166="AG">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="AI">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="AL">
            <currency iso4217="ALL" from="1965-08-16"/>
            <currency iso4217="ALK" from="1946-11-01" to="1965-08-16"/>
        </region>
        <region iso3166="AM">
            <currency iso4217="AMD" from="1993-11-22"/>
            <currency iso4217="RUR" from="1991-12-25" to="1993-11-22"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="AN">
            <currency iso4217="ANG" from="1940-05-10"/>
        </region>
        <region iso3166="AO">
            <currency iso4217="AOA" from="1999-12-13"/>
            <currency iso4217="AOR" from="1995-07-01" to="2000-02"/>
            <currency iso4217="AON" from="1990-09-25" to="2000-02"/>
            <currency iso4217="AOK" from="1977-01-08" to="1991-03"/>
        </region>
        <region iso3166="AQ">
        <currency iso4217="XXX"/>
        </region>
        <region iso3166="AR">
            <currency iso4217="ARS" from="1992-01-01"/>
            <currency iso4217="ARA" from="1985-06-14" to="1992-01-01"/>
            <currency iso4217="ARP" from="1983-06-01" to="1985-06-14"/>
        </region>
        <region iso3166="AS">
            <currency iso4217="USD" from="1904-07-16"/>
        </region>
        <region iso3166="AT">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ATS" from="1947-12-04" to="2002-02-28"/>
        </region>
        <region iso3166="AU">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="AW">
            <currency iso4217="AWG" from="1986-01-01"/>
            <currency iso4217="ANG" from="1940-05-10" to="1986-01-01"/>
        </region>
        <region iso3166="AX">
            <currency iso4217="EUR" from="1999-01-01"/>
        </region>
        <region iso3166="AZ">
            <currency iso4217="AZN" from="2006-01-01"/>
            <currency iso4217="AZM" from="1993-11-22" to="2006-12-31"/>
            <currency iso4217="RUR" from="1991-12-25" to="1994-01-01"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="BA">
            <currency iso4217="BAM" from="1995-01-01"/>
            <currency iso4217="BAD" from="1992-07-01" to="1997-07"/>
            <currency iso4217="YUN" from="1990-01-01" to="1992-07-01"/>
            <currency iso4217="YUD" from="1966-01-01" to="1990-01-01"/>
        </region>
        <region iso3166="BB">
            <currency iso4217="BBD" from="1973-12-03"/>
            <currency iso4217="XCD" from="1965-10-06" to="1973-12-03"/>
        </region>
        <region iso3166="BD">
            <currency iso4217="BDT" from="1972-01-01"/>
            <currency iso4217="PKR" from="1948-04-01" to="1972-01-01"/>
            <currency iso4217="INR" from="1835-08-17" to="1948-04-01"/>
        </region>
        <region iso3166="BE">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="BEF" from="1831-02-07" to="2002-02-28"/>
            <currency iso4217="NLG" from="1816-12-15" to="1831-02-07"/>
        </region>
        <region iso3166="BF">
            <currency iso4217="XOF" from="1984-08-04"/>
        </region>
        <region iso3166="BG">
            <currency iso4217="BGN" from="1999-07-05"/>
            <currency iso4217="BGL" from="1962-01-01" to="1999-07-05"/>
            <currency iso4217="BGM" from="1952-05-12" to="1962-01-01"/>
        </region>
        <region iso3166="BH">
            <currency iso4217="BHD" from="1965-10-16"/>
        </region>
        <region iso3166="BI">
            <currency iso4217="BIF" from="1964-05-19"/>
        </region>
        <region iso3166="BJ">
            <currency iso4217="XOF" from="1975-11-30"/>
        </region>
        <region iso3166="BL">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="BM">
            <currency iso4217="BMD" from="1970-02-06"/>
        </region>
        <region iso3166="BN">
            <currency iso4217="BND" from="1967-06-12"/>
            <currency iso4217="MYR" from="1963-09-16" to="1967-06-12"/>
        </region>
        <region iso3166="BO">
            <currency iso4217="BOB" from="1987-01-01"/>
            <currency iso4217="BOP" from="1963-01-01" to="1986-12-31"/>
        </region>
        <region iso3166="BR">
            <currency iso4217="BRL" from="1994-07-01"/>
            <currency iso4217="BRR" from="1993-08-01" to="1994-07-01"/>
            <currency iso4217="BRE" from="1990-03-16" to="1993-08-01"/>
            <currency iso4217="BRN" from="1989-01-15" to="1990-03-16"/>
            <currency iso4217="BRC" from="1986-02-28" to="1989-01-15"/>
            <currency iso4217="BRB" from="1967-02-13" to="1986-02-28"/>
        </region>
        <region iso3166="BS">
            <currency iso4217="BSD" from="1966-05-25"/>
        </region>
        <region iso3166="BT">
            <currency iso4217="INR" from="1907"/>
            <currency iso4217="BTN" from="1974-04-16"/>
        </region>
        <region iso3166="BU">
            <currency iso4217="BUK" from="1952-07-01" to="1989-06-18"/>
        </region>
        <region iso3166="BV">
            <currency iso4217="NOK" from="1905-06-07"/>
        </region>
        <region iso3166="BW">
            <currency iso4217="BWP" from="1976-08-23"/>
            <currency iso4217="ZAR" from="1961-02-14" to="1976-08-23"/>
        </region>
        <region iso3166="BY">
            <currency iso4217="BYR" from="2000-01-01"/>
            <currency iso4217="BYB" from="1994-08" to="2000-12-31"/>
            <currency iso4217="RUR" from="1991-12-25" to="1994-11-08"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="BZ">
            <currency iso4217="BZD" from="1974-01-01"/>
        </region>
        <region iso3166="CA">
            <currency iso4217="CAD" from="1858-01-01"/>
        </region>
        <region iso3166="CC">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="CD">
            <currency iso4217="CDF" from="1998-07"/>
            <currency iso4217="ZRN" from="1993-11-01" to="1998-07"/>
            <currency iso4217="ZRZ" from="1971-10-27" to="1993-11-01"/>
        </region>
        <region iso3166="CF">
            <currency iso4217="XAF" from="1993-01-01"/>
        </region>
        <region iso3166="CG">
            <currency iso4217="XAF" from="1993"/>
        </region>
        <region iso3166="CH">
            <currency iso4217="CHF" from="1799-03-17"/>
        </region>
        <region iso3166="CI">
            <currency iso4217="XOF" from="1958-12-04"/>
        </region>
        <region iso3166="CK">
            <currency iso4217="NZD" from="1967-7-10"/>
        </region>
        <region iso3166="CL">
            <currency iso4217="CLP" from="1975-09-29"/>
        </region>
        <region iso3166="CM">
            <currency iso4217="XAF" from="1973-04-01"/>
        </region>
        <region iso3166="CN">
            <currency iso4217="CNY" from="1953-03-01"/>
        </region>
        <region iso3166="CO">
            <currency iso4217="COP" from="1905"/>
        </region>
        <region iso3166="CR">
            <currency iso4217="CRC" from="1896-10-26"/>
        </region>
        <region iso3166="CS">
            <currency iso4217="CSD" from="2002-05-15" to="2006-06-03"/>
            <currency iso4217="EUR" from="2003-02-04" to="2006-06-03"/>
            <currency iso4217="YUM" from="1994-01-24" to="2002-05-15"/>
        </region>
        <region iso3166="CU">
            <currency iso4217="CUP" from="1859-01-01"/>
            <currency iso4217="USD" from="1899" to="1959"/>
        </region>
        <region iso3166="CV">
            <currency iso4217="CVE" from="1914-01-01"/>
            <currency iso4217="PTE" from="1911-05-22" to="1975-07-05"/>
        </region>
        <region iso3166="CX">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="CY">
            <currency iso4217="EUR" from="2008-01-01"/>
            <currency iso4217="CYP" from="1914-09-10" to="2008-01-31"/>
        </region>
        <region iso3166="CZ">
            <currency iso4217="CZK" from="1993-01-01"/>
            <currency iso4217="CSK" from="1953-06-01" to="1993-03"/>
        </region>
        <region iso3166="DD">
            <currency iso4217="DDM" from="1948-07-20" to="1990-10-02"/>
        </region>
        <region iso3166="DE">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="DEM" from="1948-06-20" to="2002-02-28"/>
        </region>
        <region iso3166="DJ">
            <currency iso4217="DJF" from="1977-06-27"/>
        </region>
        <region iso3166="DK">
            <currency iso4217="DKK" from="1873-05-27"/>
        </region>
        <region iso3166="DM">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="DO">
            <currency iso4217="DOP" from="1947-10"/>
            <currency iso4217="USD" from="1905-06-21" to="1947-10"/>
        </region>
        <region iso3166="DZ">
            <currency iso4217="DZD" from="1964-04-01"/>
        </region>
        <region iso3166="EC">
            <currency iso4217="USD" from="2000-10-02"/>
            <currency iso4217="ECS" from="1884-04-01" to="2000-10-02"/>
        </region>
        <region iso3166="EE">
            <currency iso4217="EEK" from="1992-06-21"/>
            <currency iso4217="SUR" from="1961-1-1" to="1992-06-20"/>
        </region>
        <region iso3166="EG">
            <currency iso4217="EGP" from="1885-11-14"/>
        </region>
        <region iso3166="EH">
            <currency iso4217="MAD" from="1976-02-26"/>
        </region>
        <region iso3166="ER">
            <currency iso4217="ERN" from="1997-11-08"/>
        </region>
        <region iso3166="ES">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ESP" from="1868-10-19" to="2002-02-28"/>
        </region>
        <region iso3166="ET">
            <currency iso4217="ETB" from="1976-09-15"/>
        </region>
        <region iso3166="FI">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FIM" from="1963-01-01" to="2002-02-28"/>
        </region>
        <region iso3166="FJ">
            <currency iso4217="FJD" from="1969-01-13"/>
        </region>
        <region iso3166="FK">
            <currency iso4217="FKP" from="1901"/>
        </region>
        <region iso3166="FM">
            <currency iso4217="USD" from="1944"/>
            <currency iso4217="JPY" from="1914-10-03" to="1944"/>
        </region>
        <region iso3166="FO">
            <currency iso4217="DKK" from="1948"/>
        </region>
        <region iso3166="FR">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="GA">
            <currency iso4217="XAF" from="1993-01-01"/>
        </region>
        <region iso3166="GB">
            <currency iso4217="GBP" from="1694-07-27"/>
        </region>
        <region iso3166="GD">
            <currency iso4217="XCD" from="1967-02-27"/>
        </region>
        <region iso3166="GE">
            <currency iso4217="GEL" from="1995-09-23"/>
            <currency iso4217="GEK" from="1993-04-05" to="1995-09-25"/>
            <currency iso4217="RUR" from="1991-12-25" to="1993-06-11"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="GF">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="GG">
            <currency iso4217="GBP" from="1830"/>
        </region>
        <region iso3166="GH">
          <currency iso4217="GHS" from="2007-07-03"/>
          <currency iso4217="GHC" from="1979-03-09" to="2007-12-31"/>
        </region>
        <region iso3166="GI">
            <currency iso4217="GIP" from="1713"/>
        </region>
        <region iso3166="GL">
            <currency iso4217="DKK" from="1873-05-27"/>
        </region>
        <region iso3166="GM">
            <currency iso4217="GMD" from="1971-07-01"/>
        </region>
        <region iso3166="GN">
            <currency iso4217="GNF" from="1986-01-06"/>
            <currency iso4217="GNS" from="1972-10-02" to="1986-01-06"/>
        </region>
        <region iso3166="GP">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="GQ">
            <currency iso4217="XAF" from="1993-01-01"/>
            <currency iso4217="GQE" from="1975-07-07" to="1986-06"/>
        </region>
        <region iso3166="GR">
            <currency iso4217="EUR" from="2001-01-01"/>
            <currency iso4217="GRD" from="1954-05-01" to="2002-02-28"/>
        </region>
        <region iso3166="GS">
            <currency iso4217="GBP" from="1908"/>
        </region>
        <region iso3166="GT">
            <currency iso4217="GTQ" from="1925-05-27"/>
        </region>
        <region iso3166="GU">
            <currency iso4217="USD" from="1944-08-21"/>
        </region>
        <region iso3166="GW">
            <currency iso4217="GWP" from="1976-02-28"/>
            <currency iso4217="XOF" from="1997-01-01"/>
            <currency iso4217="GWE" from="1914-01-01" to="1976-02-28"/>
        </region>
        <region iso3166="GY">
            <currency iso4217="GYD" from="1966-05-26"/>
        </region>
        <region iso3166="HK">
            <currency iso4217="HKD" from="1895-02-02"/>
        </region>
        <region iso3166="HM">
            <currency iso4217="AUD" from="1967-02-16"/>
        </region>
        <region iso3166="HN">
            <currency iso4217="HNL" from="1926-04-03"/>
        </region>
        <region iso3166="HR">
            <currency iso4217="HRK" from="1994-05-30"/>
            <currency iso4217="HRD" from="1991-12-23" to="1995-01"/>
            <currency iso4217="YUN" from="1990-01-01" to="1991-12-23"/>
            <currency iso4217="YUD" from="1966-01-01" to="1990-01-01"/>
        </region>
        <region iso3166="HT">
            <currency iso4217="HTG" from="1872-08-26"/>
            <currency iso4217="USD" from="1915"/>
        </region>
        <region iso3166="HU">
            <currency iso4217="HUF" from="1946-07-23"/>
        </region>
        <region iso3166="ID">
            <currency iso4217="IDR" from="1965-12-13"/>
        </region>
        <region iso3166="IE">
            <currency iso4217="EUR" from="1999"/>
            <currency iso4217="IEP" from="1922" to="2002-02-09"/>
            <currency iso4217="GBP" from="1800" to="1922"/>
        </region>
        <region iso3166="IL">
            <currency iso4217="ILS" from="1985-09-04"/>
            <currency iso4217="ILP" from="1948-08-16" to="1980-02-22"/>
        </region>
        <region iso3166="IM">
            <currency iso4217="GBP" from="1840-01-03"/>
        </region>
        <region iso3166="IN">
            <currency iso4217="INR" from="1835-08-17"/>
        </region>
        <region iso3166="IO">
            <currency iso4217="USD" from="1965-11-08"/>
            <currency iso4217="GBP" from="1965-11-08"/>
        </region>
        <region iso3166="IQ">
            <currency iso4217="IQD" from="1931-04-19"/>
            <currency iso4217="EGP" from="1920-11-11" to="1931-04-19"/>
            <currency iso4217="INR" from="1920-11-11" to="1931-04-19"/>
        </region>
        <region iso3166="IR">
            <currency iso4217="IRR" from="1932-05-13"/>
        </region>
        <region iso3166="IS">
            <currency iso4217="ISK" from="1981-01-01"/>
            <currency iso4217="DKK" from="1873-05-27" to="1918-12-01"/>
        </region>
        <region iso3166="IT">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ITL" from="1862-8-24" to="2002-02-28"/>
        </region>
        <region iso3166="JE">
            <currency iso4217="GBP" from="1837"/>
        </region>
        <region iso3166="JM">
            <currency iso4217="JMD" from="1969-09-08"/>
        </region>
        <region iso3166="JO">
            <currency iso4217="JOD" from="1950-07-01"/>
        </region>
        <region iso3166="JP">
            <currency iso4217="JPY" from="1871-06"/>
        </region>
        <region iso3166="KE">
            <currency iso4217="KES" from="1966-09-14"/>
        </region>
        <region iso3166="KG">
            <currency iso4217="KGS" from="1993-05-10"/>
            <currency iso4217="RUR" from="1991-12-25" to="1993-05-10"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="KH">
            <currency iso4217="KHR" from="1980-03-20"/>
        </region>
        <region iso3166="KI">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="KM">
            <currency iso4217="KMF" from="1975-07-06"/>
        </region>
        <region iso3166="KN">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="KP">
            <currency iso4217="KPW" from="1959-04-17"/>
        </region>
        <region iso3166="KR">
            <currency iso4217="KRW" from="1962-06-10"/>
        </region>
        <region iso3166="KW">
            <currency iso4217="KWD" from="1961-04-01"/>
        </region>
        <region iso3166="KY">
            <currency iso4217="KYD" from="1971"/>
            <currency iso4217="JMD" from="1969-09-08" to="1971"/>
        </region>
        <region iso3166="KZ">
            <currency iso4217="KZT" from="1993-11-05"/>
        </region>
        <region iso3166="LA">
            <currency iso4217="LAK" from="1979-12-10"/>
        </region>
        <region iso3166="LB">
            <currency iso4217="LBP" from="1948-02-02"/>
        </region>
        <region iso3166="LC">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="LI">
            <currency iso4217="CHF" from="1921-02"/>
        </region>
        <region iso3166="LK">
            <currency iso4217="LKR" from="1978-05-22"/>
        </region>
        <region iso3166="LR">
            <currency iso4217="LRD" from="1944-01-01"/>
        </region>
        <region iso3166="LS">
            <currency iso4217="ZAR" from="1961-02-14"/>
            <currency iso4217="LSL" from="1980-01-22"/>
        </region>
        <region iso3166="LT">
            <currency iso4217="LTL" from="1993-06-25"/>
            <currency iso4217="LTT" from="1992-10-1" to="1993-06-25"/>
            <currency iso4217="SUR" from="1961-1-1" to="1992-10-01"/>
        </region>
        <region iso3166="LU">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="LUF" from="1944-09-4" to="2002-02-28"/>
        </region>
        <region iso3166="LV">
            <currency iso4217="LVL" from="1993-06-28"/>
            <currency iso4217="LVR" from="1992-05-07" to="1993-10-17"/>
            <currency iso4217="SUR" from="1961-01-01" to="1992-07-20"/>
        </region>
        <region iso3166="LY">
            <currency iso4217="LYD" from="1971-09-01"/>
        </region>
        <region iso3166="MA">
            <currency iso4217="MAD" from="1959-10-17"/>
        </region>
        <region iso3166="MC">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="MD">
            <currency iso4217="MDL" from="1993-11-29"/>
        </region>
        <region iso3166="ME">
            <currency iso4217="EUR" from="2002-01-01"/>
            <currency iso4217="DEM" from="1999-10-02" to="2002-05-15"/>
            <currency iso4217="YUM" from="1994-01-24" to="2002-05-15"/>
        </region>
        <region iso3166="MF">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="MG">
            <currency iso4217="MGA" from="1983-11-01"/>
            <currency iso4217="MGF" from="1963-07-01" to="2004-12-31"/>
        </region>
        <region iso3166="MH">
            <currency iso4217="USD" from="1944"/>
        </region>
        <region iso3166="MK">
            <currency iso4217="MKD" from="1993-05-20"/>
        </region>
        <region iso3166="ML">
            <currency iso4217="XOF" from="1984-06-01"/>
            <currency iso4217="MLF" from="1962-07-02" to="1984-08-31"/>
            <currency iso4217="XOF" from="1958-11-24" to="1962-07-02"/>
        </region>
        <region iso3166="MM">
            <currency iso4217="MMK" from="1989-06-18"/>
            <currency iso4217="BUK" from="1952-07-01" to="1989-06-18"/>
        </region>
        <region iso3166="MN">
            <currency iso4217="MNT" from="1915-03"/>
        </region>
        <region iso3166="MO">
            <currency iso4217="MOP" from="1901"/>
        </region>
        <region iso3166="MP">
            <currency iso4217="USD" from="1944"/>
        </region>
        <region iso3166="MQ">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1960-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="MR">
            <currency iso4217="MRO" from="1973-06-29"/>
            <currency iso4217="XOF" from="1958-11-28" to="1973-06-29"/>
        </region>
        <region iso3166="MS">
            <currency iso4217="XCD" from="1967-02-27"/>
        </region>
        <region iso3166="MT">
            <currency iso4217="EUR" from="2008-01-01"/>
            <currency iso4217="MTL" from="1968-06-07" to="2008-01-31"/>
            <currency iso4217="MTP" from="1914-08-13" to="1968-06-07"/>
        </region>
        <region iso3166="MU">
            <currency iso4217="MUR" from="1934-04-01"/>
        </region>
        <region iso3166="MV">
            <currency iso4217="MVR" from="1981-07-01"/>
        </region>
        <region iso3166="MW">
            <currency iso4217="MWK" from="1971-02-15"/>
        </region>
        <region iso3166="MX">
            <currency iso4217="MXN" from="1993-01-01"/>
            <currency iso4217="MXP" from="1822" to="1992-12-31"/>
        </region>
        <region iso3166="MY">
            <currency iso4217="MYR" from="1963-9-16"/>
        </region>
        <region iso3166="MZ">
            <currency iso4217="MZN" from="2006-07-01"/>
            <currency iso4217="MZM" from="1980-06-16" to="2006-12-31"/>
            <currency iso4217="MZE" from="1975-06-25" to="1980-06-16"/>
        </region>
        <region iso3166="NA">
            <currency iso4217="ZAR" from="1961-02-14"/>
            <currency iso4217="NAD" from="1993"/>
        </region>
        <region iso3166="NC">
            <currency iso4217="XPF" from="1985"/>
        </region>
        <region iso3166="NE">
            <currency iso4217="XOF" from="1958-12-19"/>
        </region>
        <region iso3166="NF">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="NG">
            <currency iso4217="NGN" from="1973-01-01"/>
        </region>
        <region iso3166="NI">
            <currency iso4217="NIO" from="1991-04-30"/>
            <currency iso4217="NIC" from="1988-02-15" to="1991-04-30"/>
        </region>
        <region iso3166="NL">
            <currency iso4217="EUR" from="1999-1-1"/>
            <currency iso4217="NLG" from="1813" to="2002-02-28"/>
        </region>
        <region iso3166="NO">
            <currency iso4217="NOK" from="1905-06-07"/>
            <currency iso4217="SEK" from="1873-5-27" to="1905-06-07"/>
        </region>
        <region iso3166="NP">
            <currency iso4217="NPR" from="1933"/>
            <currency iso4217="INR" from="1870" to="1966-10-17"/>
        </region>
        <region iso3166="NR">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="NU">
            <currency iso4217="NZD" from="1967-07-10"/>
        </region>
        <region iso3166="NZ">
            <currency iso4217="NZD" from="1967-07-10"/>
        </region>
        <region iso3166="OM">
            <currency iso4217="OMR" from="1972-11-11"/>
        </region>
        <region iso3166="PA">
            <currency iso4217="PAB" from="1903-11-04"/>
            <currency iso4217="USD" from="1903-11-18"/>
        </region>
        <region iso3166="PE">
            <currency iso4217="PEN" from="1991-07-01"/>
            <currency iso4217="PEI" from="1985-02-01" to="1991-07-01"/>
            <currency iso4217="PES" from="1863-02-14" to="1985-02-01"/>
        </region>
        <region iso3166="PF">
            <currency iso4217="XPF" from="1945-12-26"/>
        </region>
        <region iso3166="PG">
            <currency iso4217="PGK" from="1975-09-16"/>
            <currency iso4217="AUD" from="1966-02-14" to="1975-09-16"/>
        </region>
        <region iso3166="PH">
            <currency iso4217="PHP" from="1946-07-04"/>
        </region>
        <region iso3166="PK">
            <currency iso4217="PKR" from="1948-04-01"/>
            <currency iso4217="INR" from="1835-08-17" to="1947-08-15"/>
        </region>
        <region iso3166="PL">
            <currency iso4217="PLN" from="1995-01-01"/>
            <currency iso4217="PLZ" from="1950-10-28" to="1994-12-31"/>
        </region>
        <region iso3166="PM">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1972-12-21" to="2002-02-17"/>
        </region>
        <region iso3166="PN">
            <currency iso4217="NZD" from="1969-01-13"/>
        </region>
        <region iso3166="PR">
            <currency iso4217="USD" from="1898-12-10"/>
            <currency iso4217="ESP" from="1800" to="1898-12-10"/>
        </region>
        <region iso3166="PS">
            <currency iso4217="JOD" from="1996-02-12"/>
            <currency iso4217="ILS" from="1985-09-04"/>
            <currency iso4217="ILP" from="1967-06" to="1980-02-22"/>
            <currency iso4217="JOD" from="1950-07-01" to="1967-06"/>
        </region>
        <region iso3166="PT">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="PTE" from="1911-05-22" to="2002-02-28"/>
        </region>
        <region iso3166="PW">
            <currency iso4217="USD" from="1944"/>
        </region>
        <region iso3166="PY">
            <currency iso4217="PYG" from="1943-11"/>
        </region>
        <region iso3166="QA">
            <currency iso4217="QAR" from="1973-05-19"/>
        </region>
        <region iso3166="QU">
            <currency iso4217="EUR" from="1999-01-01"/>
        </region>
        <region iso3166="RE">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1975-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="RO">
            <currency iso4217="RON" from="2005-07-01"/>
            <currency iso4217="ROL" from="1952-01-28" to="2006-12-31"/>
        </region>
        <region iso3166="RS">
            <currency iso4217="RSD" from="2006-10-25"/>
            <currency iso4217="CSD" from="2002-05-15" to="2006-10-25"/>
            <currency iso4217="YUM" from="1994-01-24" to="2002-05-15"/>
        </region>
        <region iso3166="RU">
            <currency iso4217="RUB" from="1999-01-01"/>
            <currency iso4217="RUR" from="1991-12-25" to="1998-12-31"/>
        </region>
        <region iso3166="RW">
            <currency iso4217="RWF" from="1964-05-19"/>
        </region>
        <region iso3166="SA">
            <currency iso4217="SAR" from="1952-10-22"/>
        </region>
        <region iso3166="SB">
            <currency iso4217="SBD" from="1977-10-24"/>
            <currency iso4217="AUD" from="1966-02-14" to="1978-06-30"/>
        </region>
        <region iso3166="SC">
            <currency iso4217="SCR" from="1903-11"/>
        </region>
        <region iso3166="SD">
            <currency iso4217="SDG" from="2007-01-10"/>
            <currency iso4217="SDD" from="1992-06-08" to="2007-06-30"/>
            <currency iso4217="SDP" from="1957-04-08" to="1998-06"/>
            <currency iso4217="EGP" from="1889-01-19" to="1958-01-01"/>
            <currency iso4217="GBP" from="1889-01-19" to="1958-01-01"/>
        </region>
        <region iso3166="SE">
            <currency iso4217="SEK" from="1873-5-27"/>
        </region>
        <region iso3166="SG">
            <currency iso4217="SGD" from="1967-06-12"/>
            <currency iso4217="MYR" from="1963-09-16" to="1967-06-12"/>
        </region>
        <region iso3166="SH">
            <currency iso4217="SHP" from="1917-02-15"/>
        </region>
        <region iso3166="SI">
            <currency iso4217="EUR" from="2007-01-01"/>
            <currency iso4217="SIT" from="1992-10-07" to="2007-01-14"/>
        </region>
        <region iso3166="SJ">
            <currency iso4217="NOK" from="1905-06-07"/>
        </region>
        <region iso3166="SK">
            <currency iso4217="SKK" from="1992-12-31"/>
            <currency iso4217="CSK" from="1953-06-01" to="1992-12-31"/>
        </region>
        <region iso3166="SL">
            <currency iso4217="SLL" from="1964-08-04"/>
            <currency iso4217="GBP" from="1808-11-30" to="1966-02-04"/>
        </region>
        <region iso3166="SM">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ITL" from="1865-12-23" to="2001-02-28"/>
        </region>
        <region iso3166="SN">
            <currency iso4217="XOF" from="1959-04-04"/>
        </region>
        <region iso3166="SO">
            <currency iso4217="SOS" from="1960-07-01"/>
        </region>
        <region iso3166="SR">
            <currency iso4217="SRD" from="2004-01-01"/>
            <currency iso4217="SRG" from="1940-05-10" to="2003-12-31"/>
            <currency iso4217="NLG" from="1815-11-20" to="1940-05-10"/>
        </region>
        <region iso3166="ST">
            <currency iso4217="STD" from="1977-09-08"/>
        </region>
        <region iso3166="SU">
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="SV">
            <currency iso4217="SVC" from="1919-11-11"/>
            <currency iso4217="USD" from="2001-01-01"/>
        </region>
        <region iso3166="SY">
            <currency iso4217="SYP" from="1948-01-01"/>
        </region>
        <region iso3166="SZ">
            <currency iso4217="SZL" from="1974-09-06"/>
        </region>
        <region iso3166="TC">
            <currency iso4217="USD" from="1969-09-08"/>
        </region>
        <region iso3166="TD">
            <currency iso4217="XAF" from="1993-01-01"/>
        </region>
        <region iso3166="TF">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1959-01-01" to="2002-02-17"/>
        </region>
        <region iso3166="TG">
            <currency iso4217="XOF" from="1958-11-28"/>
        </region>
        <region iso3166="TH">
            <currency iso4217="THB" from="1928-04-15"/>
        </region>
        <region iso3166="TJ">
            <currency iso4217="TJS" from="2000-10-26"/>
            <currency iso4217="TJR" from="1995-05-10" to="2000-10-25"/>
        </region>
        <region iso3166="TK">
            <currency iso4217="NZD" from="1967-07-10"/>
        </region>
        <region iso3166="TL">
            <currency iso4217="USD" from="1999-10-20"/>
            <currency iso4217="TPE" from="1959-01-02" to="2002-05-20"/>
            <currency iso4217="IDR" from="1975-12-07" to="2002-05-20"/>
        </region>
        <region iso3166="TM">
            <currency iso4217="TMM" from="1993-11-01"/>
            <currency iso4217="RUR" from="1991-12-25" to="1993-11-01"/>
            <currency iso4217="SUR" from="1961-01-01" to="1991-12-25"/>
        </region>
        <region iso3166="TN">
            <currency iso4217="TND" from="1958-11-01"/>
        </region>
        <region iso3166="TO">
            <currency iso4217="TOP" from="1966-02-14"/>
        </region>
        <region iso3166="TP">
            <currency iso4217="TPE" from="1959-01-02" to="2002-05-20"/>
            <currency iso4217="IDR" from="1975-12-07" to="2002-05-20"/>
        </region>
        <region iso3166="TR">
            <currency iso4217="TRY" from="2005-01-01"/>
            <currency iso4217="TRL" from="1922-11-01" to="2005-12-31"/>
        </region>
        <region iso3166="TT">
            <currency iso4217="TTD" from="1964"/>
        </region>
        <region iso3166="TV">
            <currency iso4217="AUD" from="1966-02-14"/>
        </region>
        <region iso3166="TW">
            <currency iso4217="TWD" from="1949-06-15"/>
        </region>
        <region iso3166="TZ">
            <currency iso4217="TZS" from="1966-06-14"/>
        </region>
        <region iso3166="UA">
            <currency iso4217="UAH" from="1996-09-02"/>
            <currency iso4217="UAK" from="1992-11-13" to="1993-10-17"/>
            <currency iso4217="RUR" from="1991-12-25" to="1992-11-13"/>
            <currency iso4217="SUR" from="1961-1-1" to="1991-12-25"/>
        </region>
        <region iso3166="UG">
            <currency iso4217="UGX" from="1987-05-15"/>
            <currency iso4217="UGS" from="1966-08-15" to="1987-05-15"/>
        </region>
        <region iso3166="UM">
            <currency iso4217="USD" from="1944"/>
        </region>
        <region iso3166="US">
            <currency iso4217="USD" from="1792"/>
        </region>
        <region iso3166="UY">
            <currency iso4217="UYU" from="1993-03-01"/>
            <currency iso4217="UYP" from="1975-07-01" to="1993-03-01"/>
        </region>
        <region iso3166="UZ">
            <currency iso4217="UZS" from="1994-07-01"/>
        </region>
        <region iso3166="VA">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="ITL" from="1870-10-19" to="2002-02-28"/>
        </region>
        <region iso3166="VC">
            <currency iso4217="XCD" from="1965-10-06"/>
        </region>
        <region iso3166="VE">
            <currency iso4217="VEF" from="2008-01-01"/>
            <currency iso4217="VEB" from="1871-05-11" to="2008-06-30"/>
        </region>
        <region iso3166="VG">
            <currency iso4217="USD" from="1833"/>
            <currency iso4217="GBP" from="1833" to="1959"/>
        </region>
        <region iso3166="VI">
            <currency iso4217="USD" from="1837"/>
        </region>
        <region iso3166="VN">
            <currency iso4217="VND" from="1985-09-14"/>
        </region>
        <region iso3166="VU">
            <currency iso4217="VUV" from="1981-01-01"/>
        </region>
        <region iso3166="WF">
            <currency iso4217="XPF" from="1961-07-30"/>
        </region>
        <region iso3166="WS">
            <currency iso4217="WST" from="1967-07-10"/>
        </region>
        <region iso3166="YE">
            <currency iso4217="YER" from="1990-05-22"/>
        </region>
        <region iso3166="YT">
            <currency iso4217="EUR" from="1999-01-01"/>
            <currency iso4217="FRF" from="1976-02-23" to="2002-02-17"/>
            <currency iso4217="KMF" from="1975-01-01" to="1976-02-23"/>
        </region>
        <region iso3166="YU">
            <currency iso4217="YUM" from="1994-01-24" to="2002-05-15"/>
            <currency iso4217="YUN" from="1990-01-01" to="1992-07-24"/>
            <currency iso4217="YUD" from="1966-01-01" to="1990-01-01"/>
        </region>
        <region iso3166="ZA">
            <currency iso4217="ZAR" from="1961-02-14"/>
        </region>
        <region iso3166="ZM">
            <currency iso4217="ZMK" from="1968-01-16"/>
        </region>
        <region iso3166="ZR">
            <currency iso4217="ZRN" from="1993-11-01" to="1998-07"/>
            <currency iso4217="ZRZ" from="1971-10-27" to="1993-11-01"/>
        </region>
        <region iso3166="ZW">
            <currency iso4217="ZWD" from="1980-04-18"/>
        </region>
    </currencyData>
	<territoryContainment>
		<group type="001" contains="002 009 019 142 150"/>
		<group type="011" contains="BF BJ CI CV GH GM GN GW LR ML MR NE NG SH SL SN TG"/>
		<group type="013" contains="BZ CR GT HN MX NI PA SV"/>
		<group type="014" contains="BI DJ ER ET KE KM MG MU MW MZ RE RW SC SO TZ UG YT ZM ZW"/>
		<group type="142" contains="030 035 143 145 034 062"/>
		<group type="143" contains="TM TJ KG KZ UZ"/>
		<group type="145" contains="AE AM AZ BH CY GE IL IQ JO KW LB OM PS QA SA NT SY TR YE YD"/>
		<group type="015" contains="DZ EG EH LY MA SD TN"/>
		<group type="150" contains="039 151 154 155 QU"/>
		<group type="151" contains="BG BY CZ HU MD PL RO RU SU SK UA"/>
		<group type="154" contains="GG IM JE AX DK EE FI FO GB IE IM IS LT LV NO SE SJ"/>
		<group type="830" contains="GG JE"/>
		<group type="155" contains="AT BE CH DE DD FR FX LI LU MC NL"/>
		<group type="017" contains="AO CD ZR CF CG CM GA GQ ST TD"/>
		<group type="172" contains="AM AZ BY GE KG KZ MD RU TJ TM UA UZ"/>
		<group type="018" contains="BW LS NA SZ ZA"/>
		<group type="019" contains="005 013 021 029 003 419"/>
		<group type="002" contains="011 014 015 017 018"/>
		<group type="021" contains="BM CA GL PM US"/>
		<group type="029" contains="AG AI AN AW BB BL BS CU DM DO GD GP HT JM KN KY LC MF MQ MS PR TC TT VC VG VI"/>
		<group type="003" contains="013 021 029"/>
		<group type="030" contains="CN HK JP KP KR MN MO TW"/>
		<group type="035" contains="BN ID KH LA MM BU MY PH SG TH TL TP VN"/>
		<group type="039" contains="AD AL BA ES GI GR HR IT ME MK MT CS RS PT SI SM VA YU"/>
		<group type="419" contains="005 013 029"/>
		<group type="005" contains="AR BO BR CL CO EC FK GF GY PE PY SR UY VE"/>
		<group type="053" contains="AU NF NZ"/>
		<group type="054" contains="FJ NC PG SB VU"/>
		<group type="057" contains="FM GU KI MH MP NR PW"/>
		<group type="061" contains="AS CK NU PF PN TK TO TV WF WS"/>
		<group type="062" contains="034 143"/>
		<group type="034" contains="AF BD BT IN IR LK MV NP PK"/>
		<group type="009" contains="053 054 057 061 QO"/>
		<group type="QO" contains="AQ BV CC CX GS HM IO TF UM"/>
		<group type="QU" contains="AT BE CY CZ DE DK EE ES FI FR GB GR HU IE IT LT LU LV MT NL PL PT SE SI SK BG RO"/>
	</territoryContainment>
	<languageData>
		<language type="aa" scripts="Latn"/>
		<language type="aa" territories="DJ" alt="secondary"/>
		<language type="ab" scripts="Cyrl"/>
		<language type="ab" territories="GE" alt="secondary"/>
		<language type="abq" scripts="Cyrl"/>
		<language type="abr" territories="GH" alt="secondary"/>
		<language type="ace" scripts="Latn"/>
		<language type="ace" territories="ID" alt="secondary"/>
		<language type="ady" scripts="Cyrl"/>
		<language type="ady" territories="RU" alt="secondary"/>
		<language type="af" scripts="Latn" territories="ZA"/>
		<language type="aii" scripts="Cyrl"/>
		<language type="aii" scripts="Syrc" alt="secondary"/>
		<language type="ain" scripts="Kana Latn" alt="secondary"/>
		<language type="ak" scripts="Latn"/>
		<language type="ak" territories="GH" alt="secondary"/>
		<language type="akk" scripts="Xsux" alt="secondary"/>
		<language type="am" scripts="Ethi" territories="ET"/>
		<language type="amo" scripts="Latn"/>
		<language type="ar" scripts="Arab" territories="AE BH DJ DZ EG EH ER IL IQ JO KM KW LB LY MA MR OM PS QA SA SD SY TD TN YE"/>
		<language type="ar" territories="IR" alt="secondary"/>
		<language type="as" scripts="Beng" territories="IN"/>
		<language type="ast" scripts="Latn"/>
		<language type="ast" territories="ES" alt="secondary"/>
		<language type="av" scripts="Cyrl"/>
		<language type="av" territories="RU" alt="secondary"/>
		<language type="awa" scripts="Deva"/>
		<language type="awa" territories="IN" alt="secondary"/>
		<language type="ay" scripts="Latn" territories="BO"/>
		<language type="az" scripts="Arab Cyrl Latn" territories="AZ"/>
		<language type="az" territories="IR" alt="secondary"/>
		<language type="ba" scripts="Cyrl"/>
		<language type="ba" territories="RU" alt="secondary"/>
		<language type="bal" scripts="Arab Latn"/>
		<language type="bal" territories="IR PK" alt="secondary"/>
		<language type="ban" scripts="Latn"/>
		<language type="ban" scripts="Bali" territories="ID" alt="secondary"/>
		<language type="bbc" scripts="Latn"/>
		<language type="bbc" scripts="Batk" territories="ID" alt="secondary"/>
		<language type="bcl" territories="PH" alt="secondary"/>
		<language type="be" scripts="Cyrl" territories="BY"/>
		<language type="bem" scripts="Latn"/>
		<language type="bem" territories="ZM" alt="secondary"/>
		<language type="bew" territories="ID" alt="secondary"/>
		<language type="bfq" scripts="Taml"/>
		<language type="bft" scripts="Deva"/>
		<language type="bfy" scripts="Deva"/>
		<language type="bg" scripts="Cyrl" territories="BG"/>
		<language type="bgc" territories="IN" alt="secondary"/>
		<language type="bh" scripts="Deva" alt="secondary"/>
		<language type="bhb" scripts="Deva"/>
		<language type="bhb" territories="IN" alt="secondary"/>
		<language type="bhi" territories="IN" alt="secondary"/>
		<language type="bhk" territories="PH" alt="secondary"/>
		<language type="bho" scripts="Deva"/>
		<language type="bho" territories="IN MU NP" alt="secondary"/>
		<language type="bi" scripts="Latn" territories="VU"/>
		<language type="bin" scripts="Latn"/>
		<language type="bin" territories="NG" alt="secondary"/>
		<language type="bjj" scripts="Deva"/>
		<language type="bjj" territories="IN" alt="secondary"/>
		<language type="bjn" territories="ID" alt="secondary"/>
		<language type="bku" scripts="Buhd" alt="secondary"/>
		<language type="bm" scripts="Latn"/>
		<language type="bm" territories="ML" alt="secondary"/>
		<language type="bn" scripts="Beng" territories="BD IN"/>
		<language type="bo" scripts="Tibt"/>
		<language type="bo" territories="CN" alt="secondary"/>
		<language type="bqi" territories="IR" alt="secondary"/>
		<language type="br" scripts="Latn"/>
		<language type="bra" scripts="Deva"/>
		<language type="brh" territories="PK" alt="secondary"/>
		<language type="bs" scripts="Latn" territories="BA"/>
		<language type="btv" scripts="Deva"/>
		<language type="buc" scripts="Latn"/>
		<language type="buc" territories="YT" alt="secondary"/>
		<language type="bug" scripts="Latn"/>
		<language type="bug" scripts="Bugi" territories="ID" alt="secondary"/>
		<language type="bxr" scripts="Cyrl"/>
		<language type="bya" scripts="Latn"/>
		<language type="bya" scripts="Batk" territories="ID" alt="secondary"/>
		<language type="byn" scripts="Ethi"/>
		<language type="ca" scripts="Latn" territories="AD"/>
		<language type="ca" territories="ES" alt="secondary"/>
		<language type="cch" scripts="Latn"/>
		<language type="ccp" scripts="Beng"/>
		<language type="ce" scripts="Cyrl"/>
		<language type="ce" territories="RU" alt="secondary"/>
		<language type="ceb" scripts="Latn"/>
		<language type="ceb" territories="PH" alt="secondary"/>
		<language type="cgg" territories="UG" alt="secondary"/>
		<language type="ch" scripts="Latn" territories="GU"/>
		<language type="chk" scripts="Latn" territories="FM"/>
		<language type="chm" scripts="Cyrl Latn"/>
		<language type="chr" scripts="Cher Latn"/>
		<language type="cja" scripts="Cham"/>
		<language type="cja" scripts="Deva" alt="secondary"/>
		<language type="cjm" scripts="Arab"/>
		<language type="cjm" scripts="Cham" alt="secondary"/>
		<language type="cjs" scripts="Cyrl"/>
		<language type="ckt" scripts="Cyrl"/>
		<language type="co" scripts="Latn"/>
		<language type="cop" scripts="Arab Copt Grek" alt="secondary"/>
		<language type="cpe" scripts="Latn"/>
		<language type="cr" scripts="Cans Latn"/>
		<language type="crk" scripts="Cans"/>
		<language type="crk" territories="CA" alt="secondary"/>
		<language type="cs" scripts="Latn" territories="CZ"/>
		<language type="cu" scripts="Glag" alt="secondary"/>
		<language type="cv" scripts="Cyrl"/>
		<language type="cv" territories="RU" alt="secondary"/>
		<language type="cwd" scripts="Cans"/>
		<language type="cwd" territories="CA" alt="secondary"/>
		<language type="cy" scripts="Latn"/>
		<language type="cy" territories="GB" alt="secondary"/>
		<language type="da" scripts="Latn" territories="DK GL"/>
		<language type="dar" scripts="Cyrl"/>
		<language type="dcc" territories="IN" alt="secondary"/>
		<language type="de" scripts="Latn" territories="AT BE CH DE LI LU"/>
		<language type="de" scripts="Runr" territories="BR US" alt="secondary"/>
		<language type="dgr" scripts="Latn"/>
		<language type="dhd" territories="IN" alt="secondary"/>
		<language type="diq" territories="TR" alt="secondary"/>
		<language type="dje" territories="NE" alt="secondary"/>
		<language type="dng" scripts="Cyrl"/>
		<language type="doi" scripts="Arab"/>
		<language type="doi" territories="IN" alt="secondary"/>
		<language type="dsb" scripts="Latn"/>
		<language type="dv" scripts="Thaa" territories="MV"/>
		<language type="dyu" scripts="Latn"/>
		<language type="dyu" territories="BF" alt="secondary"/>
		<language type="dz" scripts="Tibt" territories="BT"/>
		<language type="ee" scripts="Latn"/>
		<language type="ee" territories="GH" alt="secondary"/>
		<language type="efi" scripts="Latn" territories="NG"/>
		<language type="el" scripts="Grek" territories="CY GR"/>
		<language type="emk" scripts="Nkoo"/>
		<language type="emk" territories="GN" alt="secondary"/>
		<language type="en" scripts="Latn" territories="AG AI AS AU BB BM BS BW BZ CA CC CK CM CX DM FJ FK FM GB GD GG GH GI GM GU GY HK HN IE IM JE JM KE KI KN KY LC LR LS MH MP MS MT MU MW NA NF NG NR NU NZ PG PH PK PN PR RW SB SC SG SH SL SZ TC TK TO TT TV TZ UG UM US VC VG VI VU WS ZA ZM ZW"/>
		<language type="en" territories="BE DE ES FR IN IT MY NL PW" alt="secondary"/>
		<language type="eo" scripts="Latn"/>
		<language type="es" scripts="Latn" territories="AR BO CL CO CR CU DO EC ES GQ GT HN MX NI PA PE PH PR PY SV UY VE"/>
		<language type="es" territories="AD BZ US" alt="secondary"/>
		<language type="et" scripts="Latn" territories="EE"/>
		<language type="ett" scripts="Ital Latn" alt="secondary"/>
		<language type="eu" scripts="Latn"/>
		<language type="eu" territories="ES" alt="secondary"/>
		<language type="evn" scripts="Cyrl"/>
		<language type="fa" scripts="Arab" territories="AF IR"/>
		<language type="fa" territories="PK" alt="secondary"/>
		<language type="fan" scripts="Latn"/>
		<language type="fan" territories="GQ" alt="secondary"/>
		<language type="fi" scripts="Latn" territories="FI"/>
		<language type="fi" territories="SE" alt="secondary"/>
		<language type="fil" scripts="Latn" territories="PH"/>
		<language type="fiu" scripts="Latn" alt="secondary"/>
		<language type="fj" scripts="Latn" territories="FJ"/>
		<language type="fo" scripts="Latn" territories="FO"/>
		<language type="fon" scripts="Latn"/>
		<language type="fon" territories="BJ" alt="secondary"/>
		<language type="fr" scripts="Latn" territories="BE BF BI BJ BL CA CD CF CG CH CI CM DJ DZ FR GA GF GN GP GQ HT KM LU MA MC MF MG ML MQ MU NC NE PF PM RE RW SC SN SY TD TG TN VU WF YT"/>
		<language type="fr" territories="GB US" alt="secondary"/>
		<language type="frr" scripts="Latn"/>
		<language type="frs" scripts="Latn"/>
		<language type="fud" territories="WF" alt="secondary"/>
		<language type="fur" scripts="Latn"/>
		<language type="fuv" territories="NG" alt="secondary"/>
		<language type="fy" scripts="Latn"/>
		<language type="fy" territories="NL" alt="secondary"/>
		<language type="ga" scripts="Latn" territories="IE"/>
		<language type="ga" territories="GB" alt="secondary"/>
		<language type="gaa" scripts="Latn"/>
		<language type="gaa" territories="GH" alt="secondary"/>
		<language type="gag" scripts="Latn"/>
		<language type="gag" scripts="Cyrl" alt="secondary"/>
		<language type="gbm" scripts="Deva"/>
		<language type="gbm" territories="IN" alt="secondary"/>
		<language type="gcr" scripts="Latn"/>
		<language type="gcr" territories="GF" alt="secondary"/>
		<language type="gd" scripts="Latn"/>
		<language type="gd" territories="GB" alt="secondary"/>
		<language type="gez" scripts="Ethi" alt="secondary"/>
		<language type="gil" scripts="Latn" territories="KI"/>
		<language type="gl" scripts="Latn"/>
		<language type="gl" territories="ES" alt="secondary"/>
		<language type="gld" scripts="Cyrl"/>
		<language type="glk" territories="IR" alt="secondary"/>
		<language type="gn" scripts="Latn" territories="PY"/>
		<language type="gno" territories="IN" alt="secondary"/>
		<language type="gon" scripts="Deva Telu"/>
		<language type="gon" territories="IN" alt="secondary"/>
		<language type="gor" scripts="Latn"/>
		<language type="got" scripts="Goth" alt="secondary"/>
		<language type="grc" scripts="Cprt Grek Linb" alt="secondary"/>
		<language type="grt" scripts="Beng"/>
		<language type="gsw" scripts="Latn"/>
		<language type="gsw" territories="CH LI" alt="secondary"/>
		<language type="gu" scripts="Gujr" territories="IN"/>
		<language type="guz" territories="KE" alt="secondary"/>
		<language type="gv" scripts="Latn"/>
		<language type="gwi" scripts="Latn"/>
		<language type="ha" scripts="Arab Latn" territories="NG"/>
		<language type="ha" territories="NE" alt="secondary"/>
		<language type="hai" scripts="Latn"/>
		<language type="haw" scripts="Latn"/>
		<language type="haw" territories="US" alt="secondary"/>
		<language type="haz" territories="AF" alt="secondary"/>
		<language type="he" scripts="Hebr" territories="IL"/>
		<language type="hi" scripts="Deva" territories="IN"/>
		<language type="hi" territories="FJ" alt="secondary"/>
		<language type="hil" scripts="Latn"/>
		<language type="hil" territories="PH" alt="secondary"/>
		<language type="hmn" scripts="Latn"/>
		<language type="hmn" scripts="Hmng" alt="secondary"/>
		<language type="hne" scripts="Deva"/>
		<language type="hne" territories="IN" alt="secondary"/>
		<language type="hnn" scripts="Latn"/>
		<language type="hnn" scripts="Hano" alt="secondary"/>
		<language type="hno" territories="PK" alt="secondary"/>
		<language type="ho" scripts="Latn" territories="PG"/>
		<language type="hoc" scripts="Deva"/>
		<language type="hoc" territories="IN" alt="secondary"/>
		<language type="hoj" scripts="Deva"/>
		<language type="hop" scripts="Latn"/>
		<language type="hr" scripts="Latn" territories="BA HR"/>
		<language type="hr" territories="AT" alt="secondary"/>
		<language type="hsb" scripts="Latn"/>
		<language type="ht" scripts="Latn" territories="HT"/>
		<language type="hu" scripts="Latn" territories="HU"/>
		<language type="hu" territories="AT RO RS" alt="secondary"/>
		<language type="hy" scripts="Armn" territories="AM"/>
		<language type="ia" scripts="Latn" alt="secondary"/>
		<language type="ibb" scripts="Latn"/>
		<language type="ibb" territories="NG" alt="secondary"/>
		<language type="id" scripts="Latn" territories="ID"/>
		<language type="id" scripts="Arab" alt="secondary"/>
		<language type="ig" scripts="Latn" territories="NG"/>
		<language type="ii" scripts="Latn Yiii"/>
		<language type="ii" territories="CN" alt="secondary"/>
		<language type="ik" scripts="Latn"/>
		<language type="ilo" scripts="Latn"/>
		<language type="ilo" territories="PH" alt="secondary"/>
		<language type="inh" scripts="Cyrl"/>
		<language type="inh" scripts="Arab Latn" territories="RU" alt="secondary"/>
		<language type="is" scripts="Latn" territories="IS"/>
		<language type="it" scripts="Latn" territories="CH IT SM"/>
		<language type="it" territories="FR HR US VA" alt="secondary"/>
		<language type="iu" scripts="Cans"/>
		<language type="iu" scripts="Cyrl Latn" territories="CA GL" alt="secondary"/>
		<language type="ja" scripts="Jpan" territories="JP"/>
		<language type="jv" scripts="Latn"/>
		<language type="jv" scripts="Java" territories="ID" alt="secondary"/>
		<language type="ka" scripts="Geor" territories="GE"/>
		<language type="kaa" scripts="Cyrl"/>
		<language type="kab" scripts="Latn"/>
		<language type="kab" territories="DZ" alt="secondary"/>
		<language type="kaj" scripts="Latn"/>
		<language type="kam" scripts="Latn"/>
		<language type="kam" territories="KE" alt="secondary"/>
		<language type="kbd" scripts="Cyrl"/>
		<language type="kbd" territories="RU" alt="secondary"/>
		<language type="kca" scripts="Cyrl"/>
		<language type="kcg" scripts="Latn"/>
		<language type="kdt" scripts="Thai"/>
		<language type="kfo" scripts="Latn"/>
		<language type="kfr" scripts="Deva"/>
		<language type="kfy" territories="IN" alt="secondary"/>
		<language type="kg" scripts="Latn"/>
		<language type="kg" territories="CD" alt="secondary"/>
		<language type="kha" scripts="Latn"/>
		<language type="kha" scripts="Beng" territories="IN" alt="secondary"/>
		<language type="khb" scripts="Talu"/>
		<language type="khn" territories="IN" alt="secondary"/>
		<language type="kht" scripts="Mymr"/>
		<language type="ki" scripts="Latn"/>
		<language type="ki" territories="KE" alt="secondary"/>
		<language type="kj" scripts="Latn"/>
		<language type="kj" territories="NA" alt="secondary"/>
		<language type="kjh" scripts="Cyrl"/>
		<language type="kk" scripts="Cyrl" territories="KZ"/>
		<language type="kk" territories="CN" alt="secondary"/>
		<language type="kl" scripts="Latn" territories="GL"/>
		<language type="kl" territories="DK" alt="secondary"/>
		<language type="kln" territories="KE" alt="secondary"/>
		<language type="km" scripts="Khmr" territories="KH"/>
		<language type="kmb" scripts="Latn"/>
		<language type="kmb" territories="AO" alt="secondary"/>
		<language type="kn" scripts="Knda" territories="IN"/>
		<language type="ko" scripts="Kore" territories="KP KR"/>
		<language type="ko" territories="CN" alt="secondary"/>
		<language type="koi" scripts="Cyrl"/>
		<language type="koi" territories="RU" alt="secondary"/>
		<language type="kok" scripts="Deva"/>
		<language type="kok" territories="IN" alt="secondary"/>
		<language type="kos" scripts="Latn" territories="FM"/>
		<language type="kpe" scripts="Latn"/>
		<language type="kpv" scripts="Cyrl"/>
		<language type="kpv" territories="RU" alt="secondary"/>
		<language type="kpy" scripts="Cyrl"/>
		<language type="kr" scripts="Latn"/>
		<language type="krc" scripts="Cyrl"/>
		<language type="krc" territories="RU" alt="secondary"/>
		<language type="kri" territories="SL" alt="secondary"/>
		<language type="krl" scripts="Cyrl Latn"/>
		<language type="kru" scripts="Deva"/>
		<language type="kru" territories="IN" alt="secondary"/>
		<language type="ks" scripts="Arab Deva" territories="IN"/>
		<language type="ku" scripts="Arab Cyrl Latn"/>
		<language type="ku" territories="IQ IR SY TR" alt="secondary"/>
		<language type="kum" scripts="Cyrl"/>
		<language type="kum" territories="RU" alt="secondary"/>
		<language type="kv" scripts="Cyrl Latn"/>
		<language type="kw" scripts="Latn"/>
		<language type="kxm" territories="TH" alt="secondary"/>
		<language type="ky" scripts="Arab Cyrl" territories="KG"/>
		<language type="ky" scripts="Latn" alt="secondary"/>
		<language type="la" scripts="Latn" territories="VA"/>
		<language type="lad" scripts="Hebr"/>
		<language type="lah" scripts="Arab"/>
		<language type="lah" territories="PK" alt="secondary"/>
		<language type="lb" scripts="Latn" territories="LU"/>
		<language type="lbe" scripts="Cyrl"/>
		<language type="lbe" territories="RU" alt="secondary"/>
		<language type="lcp" scripts="Thai"/>
		<language type="lep" scripts="Lepc"/>
		<language type="lez" scripts="Cyrl"/>
		<language type="lez" territories="RU" alt="secondary"/>
		<language type="lg" scripts="Latn"/>
		<language type="lg" territories="UG" alt="secondary"/>
		<language type="li" scripts="Latn"/>
		<language type="lif" scripts="Deva Limb"/>
		<language type="lis" scripts="Latn"/>
		<language type="ljp" territories="ID" alt="secondary"/>
		<language type="lmn" scripts="Telu"/>
		<language type="lmn" territories="IN" alt="secondary"/>
		<language type="ln" scripts="Latn" territories="CD CG"/>
		<language type="lo" scripts="Laoo" territories="LA"/>
		<language type="lol" scripts="Latn"/>
		<language type="lrc" territories="IR" alt="secondary"/>
		<language type="lt" scripts="Latn" territories="LT"/>
		<language type="lu" scripts="Latn"/>
		<language type="lu" territories="CD" alt="secondary"/>
		<language type="lua" scripts="Latn"/>
		<language type="lua" territories="CD" alt="secondary"/>
		<language type="luo" scripts="Latn"/>
		<language type="luo" territories="KE" alt="secondary"/>
		<language type="lut" scripts="Latn"/>
		<language type="luy" territories="KE" alt="secondary"/>
		<language type="lv" scripts="Latn" territories="LV"/>
		<language type="lwl" scripts="Thai"/>
		<language type="mad" scripts="Latn"/>
		<language type="mad" territories="ID" alt="secondary"/>
		<language type="mag" scripts="Deva"/>
		<language type="mag" territories="IN" alt="secondary"/>
		<language type="mai" scripts="Deva"/>
		<language type="mai" territories="IN NP" alt="secondary"/>
		<language type="mak" scripts="Latn"/>
		<language type="mak" territories="ID" alt="secondary"/>
		<language type="mdf" scripts="Cyrl"/>
		<language type="mdf" territories="RU" alt="secondary"/>
		<language type="mdh" scripts="Latn"/>
		<language type="mdh" territories="PH" alt="secondary"/>
		<language type="mdr" scripts="Bugi" alt="secondary"/>
		<language type="men" scripts="Latn"/>
		<language type="men" territories="SL" alt="secondary"/>
		<language type="mer" territories="KE" alt="secondary"/>
		<language type="mfa" territories="TH" alt="secondary"/>
		<language type="mfe" scripts="Latn"/>
		<language type="mfe" territories="MU" alt="secondary"/>
		<language type="mg" scripts="Latn" territories="MG"/>
		<language type="mh" scripts="Latn" territories="MH"/>
		<language type="mi" scripts="Latn" territories="NZ"/>
		<language type="min" scripts="Latn"/>
		<language type="min" territories="ID" alt="secondary"/>
		<language type="mk" scripts="Cyrl" territories="MK"/>
		<language type="ml" scripts="Mlym" territories="IN"/>
		<language type="mn" scripts="Cyrl Mong" territories="MN"/>
		<language type="mn" scripts="Phag" territories="CN" alt="secondary"/>
		<language type="mnc" scripts="Mong"/>
		<language type="mni" scripts="Beng"/>
		<language type="mni" territories="IN" alt="secondary"/>
		<language type="mns" scripts="Cyrl"/>
		<language type="mnw" scripts="Mymr"/>
		<language type="mo" scripts="Latn"/>
		<language type="mos" scripts="Latn"/>
		<language type="mos" territories="BF" alt="secondary"/>
		<language type="mr" scripts="Deva" territories="IN"/>
		<language type="ms" scripts="Latn" territories="BN MY SG"/>
		<language type="ms" scripts="Arab" territories="CC ID" alt="secondary"/>
		<language type="mt" scripts="Latn" territories="MT"/>
		<language type="mtr" territories="IN" alt="secondary"/>
		<language type="mup" territories="IN" alt="secondary"/>
		<language type="muw" territories="IN" alt="secondary"/>
		<language type="mwr" scripts="Deva"/>
		<language type="my" scripts="Mymr" territories="MM"/>
		<language type="myv" scripts="Cyrl"/>
		<language type="myv" territories="RU" alt="secondary"/>
		<language type="na" scripts="Latn" territories="NR"/>
		<language type="nap" scripts="Latn"/>
		<language type="nap" territories="IT" alt="secondary"/>
		<language type="nb" scripts="Latn" territories="NO SJ"/>
		<language type="nbf" scripts="Latn"/>
		<language type="nd" scripts="Latn"/>
		<language type="nd" territories="ZW" alt="secondary"/>
		<language type="ndc" territories="MZ" alt="secondary"/>
		<language type="nds" scripts="Latn"/>
		<language type="ne" scripts="Deva" territories="NP"/>
		<language type="ne" territories="IN" alt="secondary"/>
		<language type="new" scripts="Deva"/>
		<language type="ng" scripts="Latn"/>
		<language type="ng" territories="NA" alt="secondary"/>
		<language type="ngl" territories="MZ" alt="secondary"/>
		<language type="niu" scripts="Latn" territories="NU"/>
		<language type="nl" scripts="Latn" territories="AN AW BE NL SR"/>
		<language type="nn" scripts="Latn" territories="NO"/>
		<language type="no" scripts="Latn"/>
		<language type="nod" territories="TH" alt="secondary"/>
		<language type="noe" territories="IN" alt="secondary"/>
		<language type="nog" scripts="Cyrl"/>
		<language type="nqo" scripts="Nkoo"/>
		<language type="nr" scripts="Latn"/>
		<language type="nso" scripts="Latn" territories="ZA"/>
		<language type="nv" scripts="Latn"/>
		<language type="ny" scripts="Latn" territories="MW"/>
		<language type="ny" territories="ZM" alt="secondary"/>
		<language type="nym" scripts="Latn"/>
		<language type="nym" territories="TZ" alt="secondary"/>
		<language type="nyn" scripts="Latn"/>
		<language type="nyn" territories="UG" alt="secondary"/>
		<language type="oc" scripts="Latn"/>
		<language type="oc" territories="FR" alt="secondary"/>
		<language type="om" scripts="Latn"/>
		<language type="om" scripts="Ethi" territories="ET" alt="secondary"/>
		<language type="or" scripts="Orya" territories="IN"/>
		<language type="os" scripts="Cyrl Latn"/>
		<language type="os" territories="GE" alt="secondary"/>
		<language type="osc" scripts="Ital Latn" alt="secondary"/>
		<language type="pa" scripts="Guru" territories="IN"/>
		<language type="pa" scripts="Arab" alt="secondary"/>
		<language type="pag" scripts="Latn"/>
		<language type="pag" territories="PH" alt="secondary"/>
		<language type="pam" scripts="Latn"/>
		<language type="pam" territories="PH" alt="secondary"/>
		<language type="pap" scripts="Latn" territories="AN"/>
		<language type="pap" territories="AW" alt="secondary"/>
		<language type="pau" scripts="Latn" territories="PW"/>
		<language type="peo" scripts="Xpeo" alt="secondary"/>
		<language type="phn" scripts="Phnx" alt="secondary"/>
		<language type="pi" scripts="Deva Sinh Thai" alt="secondary"/>
		<language type="pl" scripts="Latn" territories="PL"/>
		<language type="pl" territories="UA" alt="secondary"/>
		<language type="pon" scripts="Latn" territories="FM"/>
		<language type="pra" scripts="Khar" alt="secondary"/>
		<language type="prd" scripts="Arab"/>
		<language type="prg" scripts="Latn" alt="secondary"/>
		<language type="ps" scripts="Arab" territories="AF"/>
		<language type="ps" territories="PK" alt="secondary"/>
		<language type="pt" scripts="Latn" territories="AO BR CV GW MZ PT ST TL"/>
		<language type="qu" scripts="Latn" territories="BO PE"/>
		<language type="rcf" scripts="Latn"/>
		<language type="rcf" territories="RE" alt="secondary"/>
		<language type="rej" territories="ID" alt="secondary"/>
		<language type="rif" territories="MA" alt="secondary"/>
		<language type="ril" scripts="Beng"/>
		<language type="rjb" territories="IN" alt="secondary"/>
		<language type="rm" scripts="Latn" territories="CH"/>
		<language type="rmt" territories="IR" alt="secondary"/>
		<language type="rn" scripts="Latn" territories="BI"/>
		<language type="ro" scripts="Latn" territories="MD RO"/>
		<language type="ro" scripts="Cyrl" territories="RS" alt="secondary"/>
		<language type="rom" scripts="Cyrl Latn"/>
		<language type="ru" scripts="Cyrl" territories="BY KG KZ RU"/>
		<language type="ru" territories="EE LV SJ UA UZ" alt="secondary"/>
		<language type="rw" scripts="Latn" territories="RW"/>
		<language type="sa" territories="IN"/>
		<language type="sa" scripts="Deva Sinh" alt="secondary"/>
		<language type="sah" scripts="Cyrl"/>
		<language type="sah" territories="RU" alt="secondary"/>
		<language type="sam" scripts="Hebr" alt="secondary"/>
		<language type="sas" scripts="Latn"/>
		<language type="sas" territories="ID" alt="secondary"/>
		<language type="sat" scripts="Beng Deva Olck Orya" territories="IN" alt="secondary"/>
		<language type="sck" territories="IN" alt="secondary"/>
		<language type="scn" scripts="Latn"/>
		<language type="scn" territories="IT" alt="secondary"/>
		<language type="sco" scripts="Latn"/>
		<language type="sco" territories="GB" alt="secondary"/>
		<language type="sd" scripts="Arab Deva" territories="IN"/>
		<language type="sd" territories="PK" alt="secondary"/>
		<language type="se" scripts="Latn"/>
		<language type="se" scripts="Cyrl" territories="NO" alt="secondary"/>
		<language type="sel" scripts="Cyrl"/>
		<language type="sg" scripts="Latn" territories="CF"/>
		<language type="sga" scripts="Latn Ogam" alt="secondary"/>
		<language type="shn" scripts="Mymr"/>
		<language type="shn" territories="MM" alt="secondary"/>
		<language type="si" scripts="Sinh" territories="LK"/>
		<language type="sid" scripts="Latn"/>
		<language type="sid" territories="ET" alt="secondary"/>
		<language type="sk" scripts="Latn" territories="SK"/>
		<language type="sk" territories="RS" alt="secondary"/>
		<language type="sl" scripts="Latn" territories="SI"/>
		<language type="sl" territories="AT" alt="secondary"/>
		<language type="sm" scripts="Latn" territories="AS WS"/>
		<language type="sma" scripts="Latn"/>
		<language type="smi" scripts="Latn" alt="secondary"/>
		<language type="smj" scripts="Latn"/>
		<language type="smn" scripts="Latn"/>
		<language type="sms" scripts="Latn"/>
		<language type="sn" scripts="Latn"/>
		<language type="sn" territories="ZW" alt="secondary"/>
		<language type="snk" scripts="Latn"/>
		<language type="so" scripts="Latn" territories="SO"/>
		<language type="so" scripts="Osma" territories="DJ ET" alt="secondary"/>
		<language type="son" scripts="Latn"/>
		<language type="sou" territories="TH" alt="secondary"/>
		<language type="sq" scripts="Latn" territories="AL MK"/>
		<language type="sq" territories="RS" alt="secondary"/>
		<language type="sr" scripts="Cyrl Latn" territories="BA ME RS"/>
		<language type="srn" scripts="Latn"/>
		<language type="srn" territories="SR" alt="secondary"/>
		<language type="srr" scripts="Latn"/>
		<language type="srr" territories="SN" alt="secondary"/>
		<language type="ss" scripts="Latn" territories="SZ"/>
		<language type="ss" territories="ZA" alt="secondary"/>
		<language type="st" scripts="Latn" territories="LS ZA"/>
		<language type="su" scripts="Latn" territories="ID"/>
		<language type="suk" scripts="Latn"/>
		<language type="suk" territories="TZ" alt="secondary"/>
		<language type="sus" scripts="Latn"/>
		<language type="sus" scripts="Arab" alt="secondary"/>
		<language type="sv" scripts="Latn" territories="AX FI SE"/>
		<language type="sw" scripts="Latn" territories="KE TZ UG"/>
		<language type="sw" territories="CD SO" alt="secondary"/>
		<language type="swb" scripts="Arab" territories="KM"/>
		<language type="swb" territories="YT" alt="secondary"/>
		<language type="swv" territories="IN" alt="secondary"/>
		<language type="syl" scripts="Beng"/>
		<language type="syl" scripts="Sylo" territories="BD" alt="secondary"/>
		<language type="syr" scripts="Syrc" alt="secondary"/>
		<language type="ta" scripts="Taml" territories="IN LK SG"/>
		<language type="ta" territories="MY" alt="secondary"/>
		<language type="tab" scripts="Cyrl"/>
		<language type="tbw" scripts="Latn"/>
		<language type="tbw" scripts="Tagb" alt="secondary"/>
		<language type="tcy" scripts="Knda"/>
		<language type="tcy" territories="IN" alt="secondary"/>
		<language type="tdd" scripts="Tale"/>
		<language type="te" scripts="Telu" territories="IN"/>
		<language type="tem" scripts="Latn"/>
		<language type="tem" territories="SL" alt="secondary"/>
		<language type="tet" scripts="Latn" territories="TL"/>
		<language type="tg" scripts="Arab Cyrl Latn" territories="TJ"/>
		<language type="th" scripts="Thai" territories="TH"/>
		<language type="ti" scripts="Ethi" territories="ER"/>
		<language type="ti" territories="ET" alt="secondary"/>
		<language type="tig" scripts="Ethi"/>
		<language type="tiv" scripts="Latn"/>
		<language type="tiv" territories="NG" alt="secondary"/>
		<language type="tk" scripts="Arab Cyrl Latn" territories="TM"/>
		<language type="tk" territories="IR" alt="secondary"/>
		<language type="tkl" scripts="Latn" territories="TK"/>
		<language type="tl" scripts="Latn"/>
		<language type="tl" territories="PH US" alt="secondary"/>
		<language type="tmh" scripts="Latn"/>
		<language type="tn" scripts="Latn" territories="BW ZA"/>
		<language type="to" scripts="Latn" territories="TO"/>
		<language type="tpi" scripts="Latn" territories="PG"/>
		<language type="tr" scripts="Latn" territories="CY TR"/>
		<language type="tr" territories="DE MK" alt="secondary"/>
		<language type="tru" scripts="Latn"/>
		<language type="tru" scripts="Syrc" alt="secondary"/>
		<language type="ts" scripts="Latn" territories="ZA"/>
		<language type="ts" territories="MZ" alt="secondary"/>
		<language type="tsg" scripts="Latn"/>
		<language type="tsg" territories="PH" alt="secondary"/>
		<language type="tt" scripts="Cyrl"/>
		<language type="tt" territories="RU" alt="secondary"/>
		<language type="tts" scripts="Thai"/>
		<language type="tts" territories="TH" alt="secondary"/>
		<language type="ttt" scripts="Cyrl"/>
		<language type="tum" scripts="Latn"/>
		<language type="tut" scripts="Cyrl" alt="secondary"/>
		<language type="tvl" scripts="Latn" territories="TV"/>
		<language type="tw" scripts="Latn"/>
		<language type="tw" territories="GH" alt="secondary"/>
		<language type="ty" scripts="Latn" territories="PF"/>
		<language type="tyv" scripts="Cyrl"/>
		<language type="tyv" territories="RU" alt="secondary"/>
		<language type="tzm" scripts="Latn Tfng"/>
		<language type="tzm" territories="MA" alt="secondary"/>
		<language type="ude" scripts="Cyrl"/>
		<language type="udm" scripts="Cyrl"/>
		<language type="udm" scripts="Latn" territories="RU" alt="secondary"/>
		<language type="ug" scripts="Arab"/>
		<language type="ug" scripts="Cyrl Latn" territories="CN" alt="secondary"/>
		<language type="uga" scripts="Ugar" alt="secondary"/>
		<language type="uk" scripts="Cyrl" territories="UA"/>
		<language type="uli" scripts="Latn" territories="FM"/>
		<language type="umb" scripts="Latn"/>
		<language type="umb" territories="AO" alt="secondary"/>
		<language type="und" territories="AQ BV GS HM IO TF" alt="secondary"/>
		<language type="ur" scripts="Arab" territories="IN PK"/>
		<language type="uz" scripts="Arab Cyrl Latn" territories="UZ"/>
		<language type="uz" territories="AF" alt="secondary"/>
		<language type="vai" scripts="Vaii" alt="secondary"/>
		<language type="ve" scripts="Latn" territories="ZA"/>
		<language type="vi" scripts="Latn" territories="VN"/>
		<language type="vi" territories="US" alt="secondary"/>
		<language type="vmw" territories="MZ" alt="secondary"/>
		<language type="vo" scripts="Latn" alt="secondary"/>
		<language type="wa" scripts="Latn"/>
		<language type="wal" scripts="Ethi"/>
		<language type="wal" territories="ET" alt="secondary"/>
		<language type="war" scripts="Latn"/>
		<language type="war" territories="PH" alt="secondary"/>
		<language type="wbq" territories="IN" alt="secondary"/>
		<language type="wbr" territories="IN" alt="secondary"/>
		<language type="wls" territories="WF" alt="secondary"/>
		<language type="wo" scripts="Latn" territories="SN"/>
		<language type="wo" scripts="Arab" alt="secondary"/>
		<language type="wtm" territories="IN" alt="secondary"/>
		<language type="xal" scripts="Cyrl"/>
		<language type="xh" scripts="Latn" territories="ZA"/>
		<language type="xnr" territories="IN" alt="secondary"/>
		<language type="xog" territories="UG" alt="secondary"/>
		<language type="xsr" scripts="Deva"/>
		<language type="xum" scripts="Ital Latn" alt="secondary"/>
		<language type="yao" scripts="Latn"/>
		<language type="yap" scripts="Latn" territories="FM"/>
		<language type="yi" scripts="Hebr"/>
		<language type="yo" scripts="Latn" territories="NG"/>
		<language type="yrk" scripts="Cyrl"/>
		<language type="za" scripts="Hans"/>
		<language type="za" territories="CN" alt="secondary"/>
		<language type="zbl" scripts="Blis"/>
		<language type="zh" scripts="Hans Hant" territories="CN HK MO SG TW"/>
		<language type="zh" scripts="Bopo Phag" territories="ID MY TH US" alt="secondary"/>
		<language type="zu" scripts="Latn" territories="ZA"/>
	</languageData>
 	<territoryInfo>
		<territory type="AD" gdp="1840000000" literacyPercent="100" population="66000">
			<languagePopulation type="ca" populationPercent="50" officialStatus="official"/>
			<languagePopulation type="es" populationPercent="39.4"/>
			<languagePopulation type="fr" populationPercent="3.94"/>
		</territory>
		<territory type="AE" gdp="111300000000" literacyPercent="78" population="4300000">
			<languagePopulation type="ar" populationPercent="17.4" officialStatus="official"/>
			<languagePopulation type="ml" populationPercent="6.98"/>
			<languagePopulation type="ps" populationPercent="3.02"/>
			<languagePopulation type="bal" populationPercent="2.33"/>
			<languagePopulation type="fa" populationPercent="1.86"/>
		</territory>
		<territory type="AF" gdp="21500000000" literacyPercent="28.1" population="30000000">
			<languagePopulation type="fa" populationPercent="50" officialStatus="official"/>
			<languagePopulation type="ps" populationPercent="43.3" officialStatus="official"/>
			<languagePopulation type="haz" populationPercent="6"/>
			<languagePopulation type="uz_Arab" populationPercent="4.67"/>
			<languagePopulation type="tk" populationPercent="1.67"/>
			<languagePopulation type="prd" populationPercent="1.17"/>
			<languagePopulation type="bal" populationPercent="0.667"/>
			<languagePopulation type="ug" populationPercent="0.01"/>
			<languagePopulation type="kk_Arab" populationPercent="0.007"/>
		</territory>
		<territory type="AG" gdp="750000000" literacyPercent="85.8" population="80000">
			<languagePopulation type="en" populationPercent="86.3" officialStatus="official"/>
			<languagePopulation type="pt" populationPercent="2"/>
		</territory>
		<territory type="AI" gdp="112000000" literacyPercent="95" population="13000">
			<languagePopulation type="en" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="AL" gdp="18970000000" literacyPercent="98.7" population="3200000">
			<languagePopulation type="sq" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="el" populationPercent="1.88"/>
			<languagePopulation type="mk" populationPercent="0.469"/>
		</territory>
		<territory type="AM" gdp="13460000000" literacyPercent="99.4" population="3000000">
			<languagePopulation type="hy" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="az_Latn" populationPercent="5.33"/>
			<languagePopulation type="ku_Latn" populationPercent="3.33"/>
		</territory>
		<territory type="AN" gdp="2800000000" literacyPercent="97" population="220000">
			<languagePopulation type="pap" populationPercent="81.8" officialStatus="de_facto_official"/>
			<languagePopulation type="nl" populationPercent="1.82" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.818"/>
		</territory>
		<territory type="AO" gdp="45930000000" literacyPercent="67.4" population="14000000">
			<languagePopulation type="pt" populationPercent="67.1" officialStatus="official"/>
			<languagePopulation type="umb" populationPercent="28.6"/>
			<languagePopulation type="kmb" populationPercent="25"/>
		</territory>
		<territory type="AQ" gdp="0" literacyPercent="100" population="1">
			<languagePopulation type="und" populationPercent="100"/>
		</territory>
		<territory type="AR" gdp="518100000000" literacyPercent="97.2" population="38000000">
			<languagePopulation type="es" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="cy" populationPercent="0.066"/>
			<languagePopulation type="gn" populationPercent="0.047"/>
		</territory>
		<territory type="AS" gdp="500000000" literacyPercent="97" population="57000">
			<languagePopulation type="sm" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="96.5" officialStatus="de_facto_official"/>
		</territory>
		<territory type="AT" gdp="267600000000" literacyPercent="98" population="8300000">
			<languagePopulation type="de" populationPercent="97.6" officialStatus="official"/>
			<languagePopulation type="hr" populationPercent="1.2" officialStatus="official_regional"/>
			<languagePopulation type="sl" populationPercent="0.373" officialStatus="official_regional"/>
			<languagePopulation type="hu" populationPercent="0.265" officialStatus="official_regional"/>
		</territory>
		<territory type="AU" gdp="640100000000" literacyPercent="99" population="20000000">
			<languagePopulation type="en" populationPercent="95" officialStatus="de_facto_official"/>
			<languagePopulation type="zh_Hant" populationPercent="2.15"/>
			<languagePopulation type="it" populationPercent="1.95"/>
		</territory>
		<territory type="AW" gdp="2130000000" literacyPercent="97.3" population="99000">
			<languagePopulation type="nl" populationPercent="97" officialStatus="official"/>
			<languagePopulation type="pap" populationPercent="60.6"/>
			<languagePopulation type="en" populationPercent="3.03"/>
		</territory>
		<territory type="AX" gdp="0" literacyPercent="99" population="27000">
			<languagePopulation type="sv" populationPercent="96.3" officialStatus="official"/>
		</territory>
		<territory type="AZ" gdp="37920000000" literacyPercent="98.8" population="8300000">
			<languagePopulation type="az_Latn" populationPercent="90" officialStatus="official"/>
			<languagePopulation type="az_Cyrl" populationPercent="10" officialStatus="official"/>
			<languagePopulation type="ku_Latn" populationPercent="0.241"/>
		</territory>
		<territory type="BA" gdp="22890000000" literacyPercent="96.7" population="3800000">
			<languagePopulation type="bs" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="hr" populationPercent="12.4" officialStatus="official"/>
			<languagePopulation type="sr_Cyrl" populationPercent="10.5" officialStatus="official"/>
			<languagePopulation type="sr_Latn" writingPercent="5" populationPercent="10.5" officialStatus="official"/>
		</territory>
		<territory type="BB" gdp="4745000000" literacyPercent="99" population="270000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="BD" gdp="304300000000" literacyPercent="43" population="140000000">
			<languagePopulation type="bn" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="syl" populationPercent="5"/>
			<languagePopulation type="ccp" populationPercent="0.221"/>
			<languagePopulation type="my" populationPercent="0.214"/>
			<languagePopulation type="grt" populationPercent="0.071"/>
			<languagePopulation type="mni" populationPercent="0.011"/>
		</territory>
		<territory type="BE" gdp="325000000000" literacyPercent="99" population="10000000">
			<languagePopulation type="nl" populationPercent="57" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="51"/>
			<languagePopulation type="fr" populationPercent="40" officialStatus="official"/>
			<languagePopulation type="wa" writingPercent="5" populationPercent="6"/>
			<languagePopulation type="de" populationPercent="1.5" officialStatus="official"/>
		</territory>
		<territory type="BF" gdp="16950000000" literacyPercent="21.8" population="12000000">
			<languagePopulation type="mos" populationPercent="41.7"/>
			<languagePopulation type="dyu" populationPercent="33.3"/>
			<languagePopulation type="fr" populationPercent="22.5" officialStatus="official"/>
		</territory>
		<territory type="BG" gdp="71540000000" literacyPercent="98.2" population="7800000">
			<languagePopulation type="bg" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="tr" populationPercent="10.9"/>
		</territory>
		<territory type="BH" gdp="15830000000" literacyPercent="86.6" population="730000">
			<languagePopulation type="ar" populationPercent="86.3" officialStatus="official"/>
			<languagePopulation type="ml" populationPercent="3.29"/>
		</territory>
		<territory type="BI" gdp="5654000000" literacyPercent="59.3" population="7300000">
			<languagePopulation type="rn" populationPercent="63" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="60.3" officialStatus="official"/>
			<languagePopulation type="sw" populationPercent="0.088"/>
		</territory>
		<territory type="BJ" gdp="8553000000" literacyPercent="34.7" population="6900000">
			<languagePopulation type="fr" populationPercent="33.3" officialStatus="official"/>
			<languagePopulation type="fon" populationPercent="24.6"/>
			<languagePopulation type="yo" populationPercent="6.81"/>
		</territory>
		<territory type="BL" gdp="207387200" literacyPercent="99" population="6900">
			<languagePopulation type="fr" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="BM" gdp="4500000000" literacyPercent="98" population="64000">
			<languagePopulation type="en" populationPercent="92.2" officialStatus="de_facto_official"/>
		</territory>
		<territory type="BN" gdp="6842000000" literacyPercent="92.7" population="360000">
			<languagePopulation type="ms" populationPercent="94.4" officialStatus="official"/>
			<languagePopulation type="zh_Hant" populationPercent="11.1"/>
			<languagePopulation type="en" populationPercent="2.22"/>
		</territory>
		<territory type="BO" gdp="25950000000" literacyPercent="86.7" population="9000000">
			<languagePopulation type="es" populationPercent="38.9" officialStatus="official"/>
			<languagePopulation type="qu" populationPercent="32.2" officialStatus="official"/>
			<languagePopulation type="ay" populationPercent="20" officialStatus="official"/>
			<languagePopulation type="gn" populationPercent="0.456"/>
		</territory>
		<territory type="BR" gdp="1556000000000" literacyPercent="88.6" population="180000000">
			<languagePopulation type="pt" populationPercent="88.9" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="0.833"/>
			<languagePopulation type="it" populationPercent="0.278"/>
			<languagePopulation type="ja" populationPercent="0.211"/>
			<languagePopulation type="ko" populationPercent="0.021"/>
			<languagePopulation type="amd" populationPercent="0.014"/>
			<languagePopulation type="kgp" populationPercent="0.01"/>
			<languagePopulation type="gub" populationPercent="0.008"/>
			<languagePopulation type="xav" populationPercent="0.006"/>
		</territory>
		<territory type="BS" gdp="6098000000" literacyPercent="95" population="320000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="BT" gdp="2900000000" literacyPercent="47" population="900000">
			<languagePopulation type="ne" populationPercent="17.8"/>
			<languagePopulation type="tsj" populationPercent="15.6"/>
			<languagePopulation type="dz" populationPercent="14.4" officialStatus="official"/>
			<languagePopulation type="lep" populationPercent="3.89"/>
		</territory>
		<territory type="BV" gdp="0" literacyPercent="100" population="1">
			<languagePopulation type="und" populationPercent="100"/>
		</territory>
		<territory type="BW" gdp="17240000000" literacyPercent="81.2" population="1700000">
			<languagePopulation type="en" populationPercent="82.4" officialStatus="official"/>
			<languagePopulation type="tn" populationPercent="64.7" officialStatus="official"/>
			<languagePopulation type="af" populationPercent="0.353"/>
		</territory>
		<territory type="BY" gdp="70680000000" literacyPercent="99.6" population="9800000">
			<languagePopulation type="be" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="11.2" officialStatus="official"/>
		</territory>
		<territory type="BZ" gdp="1778000000" literacyPercent="94" population="280000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="es" populationPercent="28.6"/>
		</territory>
		<territory type="CA" gdp="1114000000000" literacyPercent="99" population="32000000">
			<languagePopulation type="en" populationPercent="78.1" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="22.2" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="1.75"/>
			<languagePopulation type="cwd" populationPercent="0.109" officialStatus="official_regional"/>
			<languagePopulation type="crk" populationPercent="0.106" officialStatus="official_regional"/>
			<languagePopulation type="iu" writingPercent="30" populationPercent="0.056" officialStatus="official_regional"/>
			<languagePopulation type="dgr" populationPercent="0.007"/>
		</territory>
		<territory type="CC" gdp="0" literacyPercent="99.1" population="630">
			<languagePopulation type="ms" populationPercent="79.4"/>
			<languagePopulation type="en" populationPercent="20.6" officialStatus="de_facto_official"/>
		</territory>
		<territory type="CD" gdp="36564210000" literacyPercent="67.2" population="66000000">
			<languagePopulation type="lua" populationPercent="9.55"/>
			<languagePopulation type="sw" populationPercent="9.09"/>
			<languagePopulation type="fr" populationPercent="3.79" officialStatus="official"/>
			<languagePopulation type="ln" populationPercent="3.03" officialStatus="official"/>
			<languagePopulation type="lu" populationPercent="2.27"/>
			<languagePopulation type="kg" populationPercent="1.52"/>
			<languagePopulation type="lol" populationPercent="0.606"/>
			<languagePopulation type="rw" populationPercent="0.379"/>
		</territory>
		<territory type="CF" gdp="4784000000" literacyPercent="48.6" population="3900000">
			<languagePopulation type="sg" populationPercent="51.3" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.231" officialStatus="official"/>
		</territory>
		<territory type="CG" gdp="4490494000" literacyPercent="75" population="3800000">
			<languagePopulation type="ln" populationPercent="2.39" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.737" officialStatus="official"/>
		</territory>
		<territory type="CH" gdp="241800000000" literacyPercent="99" population="7400000">
			<languagePopulation type="de" populationPercent="56.8" officialStatus="official"/>
			<languagePopulation type="gsw" writingPercent="5" populationPercent="56.8"/>
			<languagePopulation type="fr" populationPercent="17.6" officialStatus="official"/>
			<languagePopulation type="lmo" populationPercent="4.05"/>
			<languagePopulation type="it" populationPercent="2.7" officialStatus="official"/>
			<languagePopulation type="rm" populationPercent="0.541" officialStatus="official"/>
			<languagePopulation type="rmo" populationPercent="0.284"/>
			<languagePopulation type="wae" populationPercent="0.135"/>
		</territory>
		<territory type="CI" gdp="28520000000" literacyPercent="48.7" population="17000000">
			<languagePopulation type="kfo" populationPercent="0.235"/>
			<languagePopulation type="fr" populationPercent="0.1" officialStatus="official"/>
		</territory>
		<territory type="CK" gdp="105000000" literacyPercent="95" population="21000">
			<languagePopulation type="en" populationPercent="3.24" officialStatus="de_facto_official"/>
		</territory>
		<territory type="CL" gdp="187100000000" literacyPercent="95.7" population="16000000">
			<languagePopulation type="es" populationPercent="87.5" officialStatus="official"/>
		</territory>
		<territory type="CM" gdp="40830000000" literacyPercent="67.9" population="16000000">
			<languagePopulation type="fr" populationPercent="68.8" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="14.4" officialStatus="official"/>
			<languagePopulation type="ar" populationPercent="0.4"/>
			<languagePopulation type="ha_Arab" populationPercent="0.15"/>
		</territory>
		<territory type="CN" gdp="8859000000000" literacyPercent="90.9" population="1300000000">
			<languagePopulation type="zh_Hans" populationPercent="92.3" officialStatus="official"/>
			<languagePopulation type="ii" populationPercent="0.6"/>
			<languagePopulation type="ug" populationPercent="0.554" officialStatus="official_regional"/>
			<languagePopulation type="za" populationPercent="0.308" officialStatus="official_regional"/>
			<languagePopulation type="mn_Mong" populationPercent="0.262" officialStatus="official_regional"/>
			<languagePopulation type="bo" populationPercent="0.2" officialStatus="official_regional"/>
			<languagePopulation type="ko" populationPercent="0.146" officialStatus="official_regional"/>
			<languagePopulation type="kk_Arab" populationPercent="0.085"/>
			<languagePopulation type="lis" populationPercent="0.045"/>
			<languagePopulation type="ky_Arab" populationPercent="0.034"/>
			<languagePopulation type="nbf" populationPercent="0.024"/>
			<languagePopulation type="khb" populationPercent="0.019"/>
			<languagePopulation type="tdd" populationPercent="0.019"/>
			<languagePopulation type="lcp" populationPercent="0.006"/>
			<languagePopulation type="en" populationPercent="0.005"/>
			<languagePopulation type="ru" populationPercent="0.001"/>
			<languagePopulation type="vi" populationPercent="0.001"/>
			<languagePopulation type="uz_Cyrl" populationPercent="0"/>
		</territory>
		<territory type="CO" gdp="337500000000" literacyPercent="92.8" population="45000000">
			<languagePopulation type="es" populationPercent="93.3" officialStatus="official"/>
		</territory>
		<territory type="CR" gdp="44680000000" literacyPercent="94.9" population="4100000">
			<languagePopulation type="es" populationPercent="80.5" officialStatus="official"/>
		</territory>
		<territory type="CU" gdp="39170000000" literacyPercent="99.8" population="11000000">
			<languagePopulation type="es" populationPercent="90.9" officialStatus="official"/>
		</territory>
		<territory type="CV" gdp="2990000000" literacyPercent="76" population="480000">
			<languagePopulation type="pt" populationPercent="3.13" officialStatus="official"/>
		</territory>
		<territory type="CX" gdp="0" literacyPercent="99.1" population="1500">
			<languagePopulation type="en" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="CY" gdp="16780000000" literacyPercent="96.8" population="780000">
			<languagePopulation type="el" populationPercent="74.4" officialStatus="official"/>
			<languagePopulation type="tr" populationPercent="23.1" officialStatus="official"/>
			<languagePopulation type="hy" populationPercent="0.346"/>
			<languagePopulation type="ar" populationPercent="0.167"/>
		</territory>
		<territory type="CZ" gdp="199400000000" literacyPercent="99" population="10000000">
			<languagePopulation type="cs" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="0.5"/>
			<languagePopulation type="pl" populationPercent="0.5"/>
		</territory>
		<territory type="DE" gdp="2504000000000" literacyPercent="99" population="83000000">
			<languagePopulation type="de" populationPercent="90.4" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="43.4"/>
			<languagePopulation type="tr" populationPercent="2.53"/>
			<languagePopulation type="hr" populationPercent="0.783"/>
			<languagePopulation type="it" populationPercent="0.663"/>
			<languagePopulation type="ku_Latn" populationPercent="0.663"/>
			<languagePopulation type="ru" populationPercent="0.434"/>
			<languagePopulation type="el" populationPercent="0.373"/>
			<languagePopulation type="pl" populationPercent="0.289"/>
			<languagePopulation type="es" populationPercent="0.157"/>
			<languagePopulation type="nl" populationPercent="0.12"/>
		</territory>
		<territory type="DJ" gdp="619000000" literacyPercent="78" population="720000">
			<languagePopulation type="aa" populationPercent="41.7"/>
			<languagePopulation type="so" populationPercent="40.3"/>
			<languagePopulation type="ar" populationPercent="7.22" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="2.08" officialStatus="official"/>
		</territory>
		<territory type="DK" gdp="188100000000" literacyPercent="99" population="5400000">
			<languagePopulation type="da" populationPercent="92.6" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="0.426"/>
			<languagePopulation type="kl" populationPercent="0.13" officialStatus="official_regional"/>
		</territory>
		<territory type="DM" gdp="384000000" literacyPercent="94" population="71000">
			<languagePopulation type="en" populationPercent="14.1" officialStatus="official"/>
		</territory>
		<territory type="DO" gdp="63730000000" literacyPercent="87" population="8900000">
			<languagePopulation type="es" populationPercent="77.5" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.09"/>
		</territory>
		<territory type="DZ" gdp="233200000000" literacyPercent="69.9" population="32000000">
			<languagePopulation type="ar" populationPercent="75" officialStatus="official"/>
			<languagePopulation type="kab" populationPercent="7.81"/>
			<languagePopulation type="fr" populationPercent="0.344" officialStatus="official"/>
		</territory>
		<territory type="EC" gdp="56900000000" literacyPercent="91" population="13000000">
			<languagePopulation type="es" populationPercent="73.1" officialStatus="official"/>
		</territory>
		<territory type="EE" gdp="22290000000" literacyPercent="99.8" population="1300000">
			<languagePopulation type="et" populationPercent="73.1" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="30.8"/>
		</territory>
		<territory type="EG" gdp="303500000000" literacyPercent="71.4" population="69000000">
			<languagePopulation type="ar" populationPercent="92.8" officialStatus="official"/>
			<languagePopulation type="el" populationPercent="0.061"/>
		</territory>
		<territory type="EH" gdp="0" literacyPercent="99.1" population="270000">
			<languagePopulation type="ar" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="ER" gdp="4471000000" literacyPercent="59" population="4500000">
			<languagePopulation type="ti" populationPercent="26.7" officialStatus="de_facto_official"/>
			<languagePopulation type="tig" populationPercent="17.8"/>
			<languagePopulation type="ar" writingPercent="5" populationPercent="4.89" officialStatus="de_facto_official"/>
			<languagePopulation type="aa" populationPercent="3.56"/>
			<languagePopulation type="byn" populationPercent="1.56"/>
		</territory>
		<territory type="ES" gdp="1029000000000" literacyPercent="97.9" population="41000000">
			<languagePopulation type="es" populationPercent="68.3" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="24.4"/>
			<languagePopulation type="ca" populationPercent="15.9" officialStatus="official_regional"/>
			<languagePopulation type="gl" populationPercent="7.8" officialStatus="official_regional"/>
			<languagePopulation type="eu" populationPercent="1.41" officialStatus="official_regional"/>
			<languagePopulation type="ast" populationPercent="1.34" officialStatus="official_regional"/>
		</territory>
		<territory type="ET" gdp="62880000000" literacyPercent="43" population="70000000">
			<languagePopulation type="am" populationPercent="24.3" officialStatus="official"/>
			<languagePopulation type="om" populationPercent="24.3"/>
			<languagePopulation type="so" populationPercent="4.71"/>
			<languagePopulation type="ti" populationPercent="4.57"/>
			<languagePopulation type="sid" populationPercent="2.71"/>
			<languagePopulation type="wal" populationPercent="1.71"/>
			<languagePopulation type="aa" populationPercent="1.4"/>
			<languagePopulation type="en" populationPercent="0.003"/>
		</territory>
		<territory type="FI" gdp="161500000000" literacyPercent="100" population="5200000">
			<languagePopulation type="fi" populationPercent="90.4" officialStatus="official"/>
			<languagePopulation type="sv" populationPercent="5.77" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="0.808"/>
			<languagePopulation type="en" populationPercent="0.187"/>
			<languagePopulation type="et" populationPercent="0.115"/>
			<languagePopulation type="rmf" populationPercent="0.096"/>
			<languagePopulation type="se" populationPercent="0.038"/>
			<languagePopulation type="smn" populationPercent="0.012"/>
			<languagePopulation type="sms" populationPercent="0.012"/>
		</territory>
		<territory type="FJ" gdp="5380000000" literacyPercent="93" population="850000">
			<languagePopulation type="hi" populationPercent="43.5"/>
			<languagePopulation type="fj" populationPercent="38.8" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.576" officialStatus="official"/>
		</territory>
		<territory type="FK" gdp="75000000" literacyPercent="99" population="3000">
			<languagePopulation type="en" populationPercent="66.7" officialStatus="de_facto_official"/>
		</territory>
		<territory type="FM" gdp="277000000" literacyPercent="89" population="130000">
			<languagePopulation type="chk" populationPercent="29.2" officialStatus="official"/>
			<languagePopulation type="pon" populationPercent="22.3" officialStatus="official"/>
			<languagePopulation type="kos" populationPercent="6.15" officialStatus="official"/>
			<languagePopulation type="yap" populationPercent="5.08" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="4.08" officialStatus="official"/>
			<languagePopulation type="uli" populationPercent="2.31" officialStatus="official"/>
		</territory>
		<territory type="FO" gdp="1000000000" literacyPercent="100" population="48000">
			<languagePopulation type="fo" populationPercent="93.8" officialStatus="official"/>
		</territory>
		<territory type="FR" gdp="1816000000000" literacyPercent="99" population="60000000">
			<languagePopulation type="fr" populationPercent="85" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="26.7"/>
			<languagePopulation type="oc" writingPercent="5" populationPercent="3"/>
			<languagePopulation type="it" populationPercent="1.67"/>
			<languagePopulation type="pt" populationPercent="1.25"/>
			<languagePopulation type="br" populationPercent="0.833"/>
			<languagePopulation type="co" writingPercent="5" populationPercent="0.567"/>
			<languagePopulation type="ca" populationPercent="0.167"/>
			<languagePopulation type="nl" populationPercent="0.133"/>
			<languagePopulation type="eu" populationPercent="0.127"/>
		</territory>
		<territory type="GA" gdp="9535000000" literacyPercent="63.2" population="1400000">
			<languagePopulation type="puu" populationPercent="8.57"/>
			<languagePopulation type="mdt" populationPercent="7.86"/>
			<languagePopulation type="fr" populationPercent="2.71" officialStatus="official"/>
		</territory>
		<territory type="GB" gdp="1830000000000" literacyPercent="99" population="59000000">
			<languagePopulation type="en" populationPercent="93.2" officialStatus="de_facto_official"/>
			<languagePopulation type="sco" writingPercent="5" populationPercent="2.71"/>
			<languagePopulation type="cy" populationPercent="0.983" officialStatus="official_regional"/>
			<languagePopulation type="pa_Guru" populationPercent="0.797"/>
			<languagePopulation type="bn" populationPercent="0.678"/>
			<languagePopulation type="zh_Hant" populationPercent="0.542"/>
			<languagePopulation type="syl" populationPercent="0.508"/>
			<languagePopulation type="el" populationPercent="0.339"/>
			<languagePopulation type="it" populationPercent="0.339"/>
			<languagePopulation type="ks" populationPercent="0.203"/>
			<languagePopulation type="ga" populationPercent="0.161" officialStatus="official_regional"/>
			<languagePopulation type="gd" writingPercent="5" populationPercent="0.1" officialStatus="official_regional"/>
			<languagePopulation type="ml" populationPercent="0.036"/>
			<languagePopulation type="fr" populationPercent="0.024" officialStatus="official_regional"/>
			<languagePopulation type="gv" populationPercent="0.003"/>
		</territory>
		<territory type="GD" gdp="440000000" literacyPercent="96" population="110000">
			<languagePopulation type="en" populationPercent="90.9" officialStatus="official"/>
		</territory>
		<territory type="GE" gdp="15560000000" literacyPercent="99" population="4500000">
			<languagePopulation type="ka" populationPercent="86.7" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="9.11"/>
			<languagePopulation type="hy" populationPercent="7.11"/>
			<languagePopulation type="ab" populationPercent="2.22" officialStatus="official_regional"/>
			<languagePopulation type="os" populationPercent="2.22" officialStatus="official_regional"/>
			<languagePopulation type="ku_Latn" populationPercent="0.889"/>
		</territory>
		<territory type="GF" gdp="1551000000" literacyPercent="83" population="200000">
			<languagePopulation type="fr" populationPercent="75" officialStatus="official"/>
			<languagePopulation type="gcr" populationPercent="25"/>
			<languagePopulation type="zh_Hant" populationPercent="2.5"/>
		</territory>
		<territory type="GG" gdp="2590000000" literacyPercent="99" population="65000">
			<languagePopulation type="en" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="GH" gdp="54450000000" literacyPercent="57.9" population="21000000">
			<languagePopulation type="ak" populationPercent="39.5"/>
			<languagePopulation type="tw" populationPercent="33.3" officialStatus="official_regional"/>
			<languagePopulation type="ee" populationPercent="11" officialStatus="official_regional"/>
			<languagePopulation type="abr" populationPercent="5.24"/>
			<languagePopulation type="en" populationPercent="4.76" officialStatus="official"/>
			<languagePopulation type="gaa" populationPercent="2.86" officialStatus="official_regional"/>
		</territory>
		<territory type="GI" gdp="769000000" literacyPercent="80" population="28000">
			<languagePopulation type="en" populationPercent="78.6" officialStatus="official"/>
		</territory>
		<territory type="GL" gdp="1100000000" literacyPercent="100" population="57000">
			<languagePopulation type="iu" populationPercent="84.2"/>
			<languagePopulation type="kl" populationPercent="84.2" officialStatus="official"/>
			<languagePopulation type="da" populationPercent="13.7" officialStatus="official"/>
		</territory>
		<territory type="GM" gdp="3024000000" literacyPercent="40" population="1400000">
			<languagePopulation type="en" populationPercent="0.071" officialStatus="official"/>
		</territory>
		<territory type="GN" gdp="18990000000" literacyPercent="29.5" population="8100000">
			<languagePopulation type="fr" populationPercent="29.6" officialStatus="official"/>
			<languagePopulation type="emk" populationPercent="23.5"/>
			<languagePopulation type="sus" populationPercent="11.2"/>
			<languagePopulation type="kpe" populationPercent="3.83"/>
		</territory>
		<territory type="GP" gdp="3513000000" literacyPercent="90" population="450000">
			<languagePopulation type="fr" populationPercent="88.9" officialStatus="official"/>
		</territory>
		<territory type="GQ" gdp="25690000000" literacyPercent="87" population="510000">
			<languagePopulation type="fan" populationPercent="51"/>
			<languagePopulation type="fr" populationPercent="8.82" officialStatus="official"/>
			<languagePopulation type="bvb" populationPercent="7.84"/>
			<languagePopulation type="es" populationPercent="2.35" officialStatus="official"/>
			<languagePopulation type="syi" populationPercent="2.16"/>
		</territory>
		<territory type="GR" gdp="236800000000" literacyPercent="96" population="11000000">
			<languagePopulation type="el" populationPercent="90" officialStatus="official"/>
			<languagePopulation type="mk" populationPercent="1.64"/>
			<languagePopulation type="tr" populationPercent="1.18"/>
			<languagePopulation type="bg" populationPercent="0.273"/>
			<languagePopulation type="sq" populationPercent="0.091"/>
		</territory>
		<territory type="GS" gdp="0" literacyPercent="99.1" population="1">
			<languagePopulation type="und" writingPercent="100" populationPercent="100"/>
		</territory>
		<territory type="GT" gdp="56860000000" literacyPercent="69.1" population="13000000">
			<languagePopulation type="es" populationPercent="66.9" officialStatus="official"/>
		</territory>
		<territory type="GU" gdp="2500000000" literacyPercent="99" population="160000">
			<languagePopulation type="ch" populationPercent="37.5" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="18.1" officialStatus="de_facto_official"/>
		</territory>
		<territory type="GW" gdp="1185000000" literacyPercent="42.4" population="1500000">
			<languagePopulation type="pt" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="GY" gdp="3549000000" literacyPercent="99" population="770000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="HK" gdp="227300000000" literacyPercent="93.5" population="6800000">
			<languagePopulation type="zh_Hant" populationPercent="95.6" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="51.5" officialStatus="official"/>
		</territory>
		<territory type="HM" gdp="0" literacyPercent="99.1" population="1">
			<languagePopulation type="und" writingPercent="100" populationPercent="100"/>
		</territory>
		<territory type="HN" gdp="20590000000" literacyPercent="80" population="7100000">
			<languagePopulation type="es" populationPercent="78.9" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.451" officialStatus="official"/>
		</territory>
		<territory type="HR" gdp="55760000000" literacyPercent="98.2" population="4500000">
			<languagePopulation type="hr" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="it" populationPercent="1.56" officialStatus="official_regional"/>
		</territory>
		<territory type="HT" gdp="14150000000" literacyPercent="53.9" population="8600000">
			<languagePopulation type="ht" writingPercent="53" populationPercent="81.4" officialStatus="official"/>
			<languagePopulation type="fr" writingPercent="100" populationPercent="4.65" officialStatus="official"/>
		</territory>
		<territory type="HU" gdp="162600000000" literacyPercent="99" population="10000000">
			<languagePopulation type="hu" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="2.5"/>
			<languagePopulation type="ro" populationPercent="1"/>
			<languagePopulation type="hr" populationPercent="0.32"/>
			<languagePopulation type="sk" populationPercent="0.12"/>
			<languagePopulation type="sl" populationPercent="0.05"/>
		</territory>
		<territory type="ID" gdp="865600000000" literacyPercent="90.4" population="220000000">
			<languagePopulation type="id" populationPercent="63.6" officialStatus="official"/>
			<languagePopulation type="jv" populationPercent="34.1"/>
			<languagePopulation type="su" populationPercent="12.3" officialStatus="official"/>
			<languagePopulation type="mad" populationPercent="6.36"/>
			<languagePopulation type="ms" populationPercent="4.55"/>
			<languagePopulation type="min" populationPercent="2.95"/>
			<languagePopulation type="bya" populationPercent="2.32"/>
			<languagePopulation type="bjn" populationPercent="2.27"/>
			<languagePopulation type="ban" populationPercent="1.77"/>
			<languagePopulation type="bug" populationPercent="1.59"/>
			<languagePopulation type="ace" populationPercent="1.36"/>
			<languagePopulation type="bew" populationPercent="1.23"/>
			<languagePopulation type="sas" populationPercent="0.955"/>
			<languagePopulation type="bbc" populationPercent="0.909"/>
			<languagePopulation type="zh_Hant" populationPercent="0.909"/>
			<languagePopulation type="mak" populationPercent="0.727"/>
			<languagePopulation type="ljp" populationPercent="0.682"/>
			<languagePopulation type="rej" populationPercent="0.455"/>
			<languagePopulation type="gor" populationPercent="0.409"/>
			<languagePopulation type="nij" populationPercent="0.364"/>
			<languagePopulation type="kge" populationPercent="0.318"/>
			<languagePopulation type="aoz" populationPercent="0.268"/>
			<languagePopulation type="mgy" populationPercent="0.227"/>
			<languagePopulation type="kvr" populationPercent="0.136"/>
			<languagePopulation type="lbw" populationPercent="0.127"/>
			<languagePopulation type="rob" populationPercent="0.114"/>
			<languagePopulation type="mdr" populationPercent="0.091"/>
			<languagePopulation type="sxn" populationPercent="0.091"/>
		</territory>
		<territory type="IE" gdp="164600000000" literacyPercent="99" population="4000000">
			<languagePopulation type="en" populationPercent="65" officialStatus="official"/>
			<languagePopulation type="ga" populationPercent="40" officialStatus="official"/>
		</territory>
		<territory type="IL" gdp="154500000000" literacyPercent="97.2" population="6800000">
			<languagePopulation type="he" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="ar" populationPercent="20.6" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="11"/>
			<languagePopulation type="ro" populationPercent="3.68"/>
			<languagePopulation type="en" populationPercent="1.47"/>
			<languagePopulation type="pl" populationPercent="1.47"/>
			<languagePopulation type="hu" populationPercent="1.03"/>
			<languagePopulation type="am" populationPercent="0.588"/>
			<languagePopulation type="ti" populationPercent="0.147"/>
			<languagePopulation type="ml" populationPercent="0.118"/>
		</territory>
		<territory type="IM" gdp="2113000000" literacyPercent="99" population="75000">
			<languagePopulation type="en" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="IN" gdp="3611000000000" literacyPercent="61" population="1100000000">
			<languagePopulation type="hi" populationPercent="16.4" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="10.9"/>
			<languagePopulation type="bn" populationPercent="6.45" officialStatus="official"/>
			<languagePopulation type="te" populationPercent="6.36" officialStatus="official"/>
			<languagePopulation type="mr" populationPercent="6.18" officialStatus="official"/>
			<languagePopulation type="ta" populationPercent="6" officialStatus="official"/>
			<languagePopulation type="ur" populationPercent="4.36" officialStatus="official"/>
			<languagePopulation type="gu" populationPercent="4.18" officialStatus="official"/>
			<languagePopulation type="ml" populationPercent="3.18" officialStatus="official"/>
			<languagePopulation type="kn" populationPercent="3.18" officialStatus="official"/>
			<languagePopulation type="or" populationPercent="2.91" officialStatus="official"/>
			<languagePopulation type="pa_Guru" populationPercent="2.45" officialStatus="official"/>
			<languagePopulation type="bho" populationPercent="2.27"/>
			<languagePopulation type="mai" populationPercent="2" officialStatus="official_regional"/>
			<languagePopulation type="awa" populationPercent="1.82"/>
			<languagePopulation type="as" populationPercent="1.36" officialStatus="official"/>
			<languagePopulation type="bgc" populationPercent="1.18"/>
			<languagePopulation type="mag" populationPercent="1.18"/>
			<languagePopulation type="hne" populationPercent="1.09"/>
			<languagePopulation type="dcc" populationPercent="1"/>
			<languagePopulation type="dhd" populationPercent="0.818"/>
			<languagePopulation type="bjj" populationPercent="0.545"/>
			<languagePopulation type="ne" populationPercent="0.545" officialStatus="official_regional"/>
			<languagePopulation type="sat" populationPercent="0.545" officialStatus="official_regional"/>
			<languagePopulation type="wtm" populationPercent="0.455"/>
			<languagePopulation type="ks" populationPercent="0.4" officialStatus="official"/>
			<languagePopulation type="kok" populationPercent="0.364" officialStatus="official_regional"/>
			<languagePopulation type="swv" populationPercent="0.273"/>
			<languagePopulation type="gbm" populationPercent="0.264"/>
			<languagePopulation type="lmn" populationPercent="0.264"/>
			<languagePopulation type="rjb" populationPercent="0.255"/>
			<languagePopulation type="sd_Arab" populationPercent="0.255" officialStatus="official"/>
			<languagePopulation type="gon" populationPercent="0.236"/>
			<languagePopulation type="kfy" populationPercent="0.218"/>
			<languagePopulation type="doi" populationPercent="0.191"/>
			<languagePopulation type="muw" populationPercent="0.191"/>
			<languagePopulation type="kru" populationPercent="0.191"/>
			<languagePopulation type="sck" populationPercent="0.182"/>
			<languagePopulation type="gno" populationPercent="0.182"/>
			<languagePopulation type="tcy" populationPercent="0.173"/>
			<languagePopulation type="wbq" populationPercent="0.173"/>
			<languagePopulation type="xnr" populationPercent="0.155"/>
			<languagePopulation type="wbr" populationPercent="0.145"/>
			<languagePopulation type="khn" populationPercent="0.145"/>
			<languagePopulation type="noe" populationPercent="0.127"/>
			<languagePopulation type="bhb" populationPercent="0.118"/>
			<languagePopulation type="mni" populationPercent="0.109"/>
			<languagePopulation type="mup" populationPercent="0.1"/>
			<languagePopulation type="hoc" populationPercent="0.1"/>
			<languagePopulation type="mtr" populationPercent="0.1"/>
			<languagePopulation type="bhi" populationPercent="0.091"/>
			<languagePopulation type="hoj" populationPercent="0.081"/>
			<languagePopulation type="kha" writingPercent="29" populationPercent="0.079" officialStatus="official_regional"/>
			<languagePopulation type="kfr" populationPercent="0.074"/>
			<languagePopulation type="grt" populationPercent="0.053"/>
			<languagePopulation type="bfy" populationPercent="0.036"/>
			<languagePopulation type="saz" populationPercent="0.028"/>
			<languagePopulation type="ccp" populationPercent="0.027"/>
			<languagePopulation type="sd_Deva" populationPercent="0.026" officialStatus="official"/>
			<languagePopulation type="bfq" populationPercent="0.023"/>
			<languagePopulation type="ria" populationPercent="0.013"/>
			<languagePopulation type="bo" populationPercent="0.011"/>
			<languagePopulation type="bft" populationPercent="0.006"/>
			<languagePopulation type="bra" populationPercent="0.004"/>
			<languagePopulation type="lep" populationPercent="0.003"/>
			<languagePopulation type="btv" populationPercent="0.003"/>
			<languagePopulation type="lif" populationPercent="0.003"/>
			<languagePopulation type="lah" populationPercent="0.002"/>
			<languagePopulation type="kht" populationPercent="0.001"/>
			<languagePopulation type="sa" populationPercent="0.001" officialStatus="official"/>
			<languagePopulation type="dv" populationPercent="0"/>
			<languagePopulation type="dz" populationPercent="0"/>
		</territory>
		<territory type="IO" gdp="0" literacyPercent="99.1" population="1">
			<languagePopulation type="und" writingPercent="100" populationPercent="100"/>
		</territory>
		<territory type="IQ" gdp="94100000000" literacyPercent="74.1" population="26000000">
			<languagePopulation type="ar" populationPercent="69.2" officialStatus="official"/>
			<languagePopulation type="ku_Arab" populationPercent="20" officialStatus="official_regional"/>
			<languagePopulation type="fa" populationPercent="0.885"/>
		</territory>
		<territory type="IR" gdp="561600000000" literacyPercent="76.7" population="70000000">
			<languagePopulation type="fa" populationPercent="75.7" officialStatus="official"/>
			<languagePopulation type="az_Arab" populationPercent="24.3"/>
			<languagePopulation type="ku_Arab" populationPercent="7"/>
			<languagePopulation type="glk" populationPercent="4.71"/>
			<languagePopulation type="tk" populationPercent="2.86"/>
			<languagePopulation type="lrc" populationPercent="2.14"/>
			<languagePopulation type="ar" populationPercent="2"/>
			<languagePopulation type="bal" populationPercent="2"/>
			<languagePopulation type="rmt" populationPercent="1.86"/>
			<languagePopulation type="bqi" populationPercent="1.43"/>
			<languagePopulation type="luz" populationPercent="1.26"/>
			<languagePopulation type="prd" populationPercent="0.5"/>
			<languagePopulation type="hy" populationPercent="0.243"/>
			<languagePopulation type="ps" populationPercent="0.157"/>
			<languagePopulation type="ka" populationPercent="0.071"/>
			<languagePopulation type="kk_Arab" populationPercent="0.004"/>
		</territory>
		<territory type="IS" gdp="10570000000" literacyPercent="99.1" population="320000">
			<languagePopulation type="is" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="da" populationPercent="0.719"/>
		</territory>
		<territory type="IT" gdp="1698000000000" literacyPercent="98.4" population="58000000">
			<languagePopulation type="it" populationPercent="94.8" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="24.1"/>
			<languagePopulation type="nap" populationPercent="12.1"/>
			<languagePopulation type="scn" populationPercent="8.28"/>
			<languagePopulation type="fur" populationPercent="1.36"/>
			<languagePopulation type="de" populationPercent="0.397"/>
			<languagePopulation type="fr" populationPercent="0.172"/>
			<languagePopulation type="sl" populationPercent="0.172"/>
			<languagePopulation type="ca" populationPercent="0.034"/>
			<languagePopulation type="el" populationPercent="0.034"/>
			<languagePopulation type="hr" populationPercent="0.006"/>
		</territory>
		<territory type="JE" gdp="3600000000" literacyPercent="99" population="91000">
			<languagePopulation type="en" populationPercent="94.5" officialStatus="de_facto_official"/>
		</territory>
		<territory type="JM" gdp="12170000000" literacyPercent="79.9" population="2700000">
			<languagePopulation type="en" populationPercent="96.3" officialStatus="official"/>
		</territory>
		<territory type="JO" gdp="26800000000" literacyPercent="89.9" population="5400000">
			<languagePopulation type="ar" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="JP" gdp="4018000000000" literacyPercent="99" population="130000000">
			<languagePopulation type="ja" populationPercent="92.3" officialStatus="official"/>
			<languagePopulation type="ryu" populationPercent="0.754"/>
			<languagePopulation type="ko" populationPercent="0.515"/>
		</territory>
		<territory type="KE" gdp="37150000000" literacyPercent="73.6" population="32000000">
			<languagePopulation type="en" populationPercent="87.5" officialStatus="official"/>
			<languagePopulation type="ki" populationPercent="16.6"/>
			<languagePopulation type="luy" populationPercent="10.6"/>
			<languagePopulation type="luo" populationPercent="10"/>
			<languagePopulation type="kln" populationPercent="7.81"/>
			<languagePopulation type="kam" populationPercent="7.5"/>
			<languagePopulation type="guz" populationPercent="5"/>
			<languagePopulation type="mer" populationPercent="4.06"/>
			<languagePopulation type="so" populationPercent="1.31"/>
			<languagePopulation type="om" populationPercent="0.469"/>
			<languagePopulation type="sw" populationPercent="0.406" officialStatus="official"/>
			<languagePopulation type="ar" populationPercent="0.047"/>
			<languagePopulation type="pa_Guru" populationPercent="0.031"/>
			<languagePopulation type="gu" populationPercent="0.016"/>
		</territory>
		<territory type="KG" gdp="10650000000" literacyPercent="98.7" population="5100000">
			<languagePopulation type="ky_Cyrl" populationPercent="47.1" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="27.5" officialStatus="official"/>
		</territory>
		<territory type="KH" gdp="30650000000" literacyPercent="73.6" population="14000000">
			<languagePopulation type="km" populationPercent="85.7" officialStatus="official"/>
			<languagePopulation type="cja" populationPercent="1.57"/>
			<languagePopulation type="kdt" populationPercent="0.107"/>
		</territory>
		<territory type="KI" gdp="79000000" literacyPercent="93" population="98000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="gil" populationPercent="59.2" officialStatus="official"/>
		</territory>
		<territory type="KM" gdp="441000000" literacyPercent="66" population="610000">
			<languagePopulation type="ar" populationPercent="67.2" officialStatus="official"/>
			<languagePopulation type="swb" populationPercent="37.7" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.279" officialStatus="official"/>
		</territory>
		<territory type="KN" gdp="339000000" literacyPercent="97.8" population="47000">
			<languagePopulation type="en" populationPercent="0.426" officialStatus="official"/>
		</territory>
		<territory type="KP" gdp="40000000000" literacyPercent="99" population="23000000">
			<languagePopulation type="ko" populationPercent="87" officialStatus="official"/>
		</territory>
		<territory type="KR" gdp="965300000000" literacyPercent="97.9" population="48000000">
			<languagePopulation type="ko" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="KW" gdp="44770000000" literacyPercent="93.3" population="2500000">
			<languagePopulation type="ar" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="KY" gdp="1391000000" literacyPercent="98" population="44000">
			<languagePopulation type="en" populationPercent="45.5" officialStatus="de_facto_official"/>
		</territory>
		<territory type="KZ" gdp="124300000000" literacyPercent="99.5" population="15000000">
			<languagePopulation type="ru" populationPercent="93.3" officialStatus="official"/>
			<languagePopulation type="kk_Cyrl" populationPercent="64" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="6.4"/>
			<languagePopulation type="ug" populationPercent="2"/>
		</territory>
		<territory type="LA" gdp="12130000000" literacyPercent="68.7" population="5800000">
			<languagePopulation type="lo" populationPercent="51.7" officialStatus="official"/>
			<languagePopulation type="kdt" populationPercent="0.879"/>
		</territory>
		<territory type="LB" gdp="23690000000" literacyPercent="87" population="4600000">
			<languagePopulation type="ar" populationPercent="84.8" officialStatus="official"/>
			<languagePopulation type="hy" populationPercent="5"/>
			<languagePopulation type="ku_Arab" populationPercent="1.63"/>
			<languagePopulation type="fr" populationPercent="0.37"/>
			<languagePopulation type="en" populationPercent="0.072"/>
		</territory>
		<territory type="LC" gdp="866000000" literacyPercent="90" population="160000">
			<languagePopulation type="en" populationPercent="1" officialStatus="official"/>
		</territory>
		<territory type="LI" gdp="1786000000" literacyPercent="100" population="34000">
			<languagePopulation type="de" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="gsw" populationPercent="85.3"/>
			<languagePopulation type="wae" populationPercent="3.82"/>
		</territory>
		<territory type="LK" gdp="85340000000" literacyPercent="90.7" population="19000000">
			<languagePopulation type="si" populationPercent="68.4" officialStatus="official"/>
			<languagePopulation type="ta" populationPercent="15.8" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.389"/>
		</territory>
		<territory type="LR" gdp="2755000000" literacyPercent="43" population="3400000">
			<languagePopulation type="en" populationPercent="20.3" officialStatus="official"/>
			<languagePopulation type="kpe" populationPercent="14.4"/>
			<languagePopulation type="vai" populationPercent="2.65"/>
			<languagePopulation type="men" populationPercent="0.588"/>
		</territory>
		<territory type="LS" gdp="5124000000" literacyPercent="82.2" population="1800000">
			<languagePopulation type="st" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="zu" populationPercent="13.9"/>
			<languagePopulation type="ss" populationPercent="2.39"/>
			<languagePopulation type="en" populationPercent="2.28" officialStatus="official"/>
			<languagePopulation type="xh" populationPercent="1"/>
		</territory>
		<territory type="LT" gdp="49210000000" literacyPercent="99.7" population="3400000">
			<languagePopulation type="lt" populationPercent="88.2" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="8.24"/>
		</territory>
		<territory type="LU" gdp="30740000000" literacyPercent="100" population="450000">
			<languagePopulation type="fr" populationPercent="86.7" officialStatus="official"/>
			<languagePopulation type="lb" writingPercent="5" populationPercent="66.7" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="62.2" officialStatus="official"/>
		</territory>
		<territory type="LV" gdp="30290000000" literacyPercent="99.8" population="2300000">
			<languagePopulation type="lv" populationPercent="60.9" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="37.4"/>
		</territory>
		<territory type="LY" gdp="65790000000" literacyPercent="83" population="5700000">
			<languagePopulation type="ar" populationPercent="73.7" officialStatus="official"/>
		</territory>
		<territory type="MA" gdp="138300000000" literacyPercent="52.3" population="31000000">
			<languagePopulation type="ar" populationPercent="61.3" officialStatus="official"/>
			<languagePopulation type="tzm" populationPercent="9.68"/>
			<languagePopulation type="rif" populationPercent="4.84"/>
			<languagePopulation type="fr" populationPercent="0.258" officialStatus="de_facto_official"/>
			<languagePopulation type="es" populationPercent="0.064"/>
		</territory>
		<territory type="MC" gdp="870000000" literacyPercent="99" population="33000">
			<languagePopulation type="fr" populationPercent="51.5" officialStatus="official"/>
		</territory>
		<territory type="MD" gdp="8175000000" literacyPercent="98.4" population="4200000">
			<languagePopulation type="ro" populationPercent="64.3" officialStatus="official"/>
			<languagePopulation type="bg" populationPercent="9.29"/>
			<languagePopulation type="ru" populationPercent="3.1"/>
		</territory>
		<territory type="ME" gdp="2412000000" literacyPercent="96.4" population="630000">
			<languagePopulation type="sr_Cyrl" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="sq" populationPercent="7.94"/>
		</territory>
		<territory type="MF" gdp="1001887200" literacyPercent="99" population="33000">
			<languagePopulation type="fr" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="MG" gdp="16360000000" literacyPercent="70.7" population="17000000">
			<languagePopulation type="mg" populationPercent="58.8" officialStatus="official"/>
			<languagePopulation type="kk_Arab" populationPercent="1.06"/>
			<languagePopulation type="fr" populationPercent="0.106" officialStatus="official"/>
		</territory>
		<territory type="MH" gdp="115000000" literacyPercent="93.7" population="60000">
			<languagePopulation type="mh" populationPercent="73.3" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="1" officialStatus="official"/>
		</territory>
		<territory type="MK" gdp="16030000000" literacyPercent="96.1" population="2100000">
			<languagePopulation type="mk" populationPercent="66.7" officialStatus="official"/>
			<languagePopulation type="sq" populationPercent="24.8" officialStatus="de_facto_official"/>
			<languagePopulation type="tr" populationPercent="9.52" officialStatus="official_regional"/>
		</territory>
		<territory type="ML" gdp="13560000000" literacyPercent="19" population="12000000">
			<languagePopulation type="bm" populationPercent="22.5"/>
			<languagePopulation type="ffm" populationPercent="7.58"/>
			<languagePopulation type="snk" populationPercent="5.83"/>
			<languagePopulation type="mwk" populationPercent="5"/>
			<languagePopulation type="ses" populationPercent="3.33"/>
			<languagePopulation type="tmh" populationPercent="2.08"/>
			<languagePopulation type="khq" populationPercent="1.67"/>
			<languagePopulation type="dtm" populationPercent="1.08"/>
			<languagePopulation type="kao" populationPercent="1"/>
			<languagePopulation type="bzx" populationPercent="1"/>
			<languagePopulation type="ar" populationPercent="0.917"/>
			<languagePopulation type="bmq" populationPercent="0.833"/>
			<languagePopulation type="bze" populationPercent="0.833"/>
			<languagePopulation type="fr" populationPercent="0.075" officialStatus="official"/>
		</territory>
		<territory type="MM" gdp="78740000000" literacyPercent="89.9" population="50000000">
			<languagePopulation type="my" populationPercent="64" officialStatus="official"/>
			<languagePopulation type="shn" populationPercent="6.4"/>
			<languagePopulation type="mnw" populationPercent="1.48"/>
			<languagePopulation type="kht" populationPercent="0.008"/>
		</territory>
		<territory type="MN" gdp="5242000000" literacyPercent="97.8" population="2500000">
			<languagePopulation type="mn_Cyrl" populationPercent="92" officialStatus="official"/>
			<languagePopulation type="zh_Hans" populationPercent="1.4"/>
			<languagePopulation type="ru" populationPercent="0.16"/>
			<languagePopulation type="ug" populationPercent="0.04"/>
		</territory>
		<territory type="MO" gdp="10000000000" literacyPercent="91.3" population="450000">
			<languagePopulation type="zh_Hant" populationPercent="97.8" officialStatus="official"/>
			<languagePopulation type="pt" populationPercent="4.89"/>
		</territory>
		<territory type="MP" gdp="900000000" literacyPercent="97" population="77000">
			<languagePopulation type="en" populationPercent="97.4" officialStatus="de_facto_official"/>
			<languagePopulation type="ch" populationPercent="18.2"/>
		</territory>
		<territory type="MQ" gdp="6117000000" literacyPercent="97.7" population="430000">
			<languagePopulation type="fr" populationPercent="2.09" officialStatus="official"/>
		</territory>
		<territory type="MR" gdp="6891000000" literacyPercent="51.2" population="2900000">
			<languagePopulation type="ar" populationPercent="86.2" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="16.9"/>
			<languagePopulation type="wo" populationPercent="0.345"/>
		</territory>
		<territory type="MS" gdp="29000000" literacyPercent="97" population="9300">
			<languagePopulation type="en" populationPercent="82.8" officialStatus="de_facto_official"/>
		</territory>
		<territory type="MT" gdp="7926000000" literacyPercent="87.9" population="400000">
			<languagePopulation type="mt" populationPercent="75" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.6" officialStatus="official"/>
		</territory>
		<territory type="MU" gdp="16090000000" literacyPercent="84.4" population="1200000">
			<languagePopulation type="mfe" populationPercent="50"/>
			<languagePopulation type="bho" populationPercent="28.3"/>
			<languagePopulation type="ur" populationPercent="5.33"/>
			<languagePopulation type="en" populationPercent="3.08" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="3.08" officialStatus="official"/>
			<languagePopulation type="ta" populationPercent="2.58"/>
		</territory>
		<territory type="MV" gdp="1250000000" literacyPercent="96.3" population="300000">
			<languagePopulation type="dv" populationPercent="93.3" officialStatus="official"/>
		</territory>
		<territory type="MW" gdp="7524000000" literacyPercent="64.1" population="11000000">
			<languagePopulation type="ny" populationPercent="63.6" officialStatus="official"/>
			<languagePopulation type="tum" populationPercent="8.55"/>
			<languagePopulation type="zu" populationPercent="0.336"/>
			<languagePopulation type="en" populationPercent="0.145" officialStatus="official"/>
		</territory>
		<territory type="MX" gdp="1067000000000" literacyPercent="91" population="100000000">
			<languagePopulation type="es" populationPercent="86" officialStatus="de_facto_official"/>
			<languagePopulation type="yua" populationPercent="0.7"/>
			<languagePopulation type="nhe" populationPercent="0.41"/>
			<languagePopulation type="nhw" populationPercent="0.4"/>
			<languagePopulation type="maz" populationPercent="0.35"/>
			<languagePopulation type="nch" populationPercent="0.2"/>
		</territory>
		<territory type="MY" gdp="290200000000" literacyPercent="88.7" population="25000000">
			<languagePopulation type="ms" populationPercent="76" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="29.6"/>
			<languagePopulation type="zh_Hant" populationPercent="17.6"/>
			<languagePopulation type="ta" populationPercent="4.4"/>
			<languagePopulation type="bjn" populationPercent="3.6"/>
			<languagePopulation type="jv" populationPercent="1.2"/>
			<languagePopulation type="zmi" populationPercent="1.2"/>
			<languagePopulation type="ml" populationPercent="0.148"/>
			<languagePopulation type="bug" populationPercent="0.08"/>
		</territory>
		<territory type="MZ" gdp="26030000000" literacyPercent="48" population="19000000">
			<languagePopulation type="pt" populationPercent="27.4" officialStatus="official"/>
			<languagePopulation type="vmw" populationPercent="13.2"/>
			<languagePopulation type="ndc" populationPercent="10"/>
			<languagePopulation type="ts" populationPercent="7.89"/>
			<languagePopulation type="ngl" populationPercent="6.84"/>
			<languagePopulation type="seh" populationPercent="4.63"/>
			<languagePopulation type="rng" populationPercent="3.37"/>
			<languagePopulation type="ny" populationPercent="2.63"/>
			<languagePopulation type="yao" populationPercent="2.37"/>
			<languagePopulation type="sw" populationPercent="0.048"/>
			<languagePopulation type="zu" populationPercent="0.009"/>
		</territory>
		<territory type="NA" gdp="14230000000" literacyPercent="85" population="2000000">
			<languagePopulation type="kj" populationPercent="35.5"/>
			<languagePopulation type="ng" populationPercent="21.5"/>
			<languagePopulation type="en" populationPercent="7" officialStatus="official"/>
			<languagePopulation type="af" populationPercent="6.5"/>
			<languagePopulation type="de" populationPercent="0.65"/>
			<languagePopulation type="tn" populationPercent="0.305"/>
		</territory>
		<territory type="NC" gdp="3158000000" literacyPercent="96.2" population="230000">
			<languagePopulation type="fr" populationPercent="23" officialStatus="official"/>
		</territory>
		<territory type="NE" gdp="11280000000" literacyPercent="28.7" population="12000000">
			<languagePopulation type="ha_Latn" populationPercent="41.7"/>
			<languagePopulation type="fr" populationPercent="29.2" officialStatus="official"/>
			<languagePopulation type="dje" populationPercent="17.5"/>
			<languagePopulation type="fuq" populationPercent="7.08"/>
			<languagePopulation type="tmh" populationPercent="6"/>
			<languagePopulation type="ar" populationPercent="0.208"/>
		</territory>
		<territory type="NF" gdp="0" literacyPercent="99.1" population="1800">
			<languagePopulation type="en" populationPercent="94.4" officialStatus="de_facto_official"/>
		</territory>
		<territory type="NG" gdp="174100000000" literacyPercent="68" population="140000000">
			<languagePopulation type="yo" populationPercent="13.6" officialStatus="official"/>
			<languagePopulation type="ha_Latn" populationPercent="13.6" officialStatus="official"/>
			<languagePopulation type="ig" populationPercent="12.9" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="6.79" officialStatus="official"/>
			<languagePopulation type="fuv" populationPercent="6.64"/>
			<languagePopulation type="tiv" writingPercent="25" populationPercent="1.57"/>
			<languagePopulation type="efi" populationPercent="1.43" officialStatus="official"/>
			<languagePopulation type="ibb" populationPercent="1.43"/>
			<languagePopulation type="bin" populationPercent="0.714"/>
			<languagePopulation type="kaj" populationPercent="0.214"/>
			<languagePopulation type="kcg" populationPercent="0.093"/>
			<languagePopulation type="ar" populationPercent="0.071"/>
			<languagePopulation type="cch" populationPercent="0.021"/>
			<languagePopulation type="amo" populationPercent="0.009"/>
		</territory>
		<territory type="NI" gdp="16090000000" literacyPercent="76.7" population="5600000">
			<languagePopulation type="es" populationPercent="76.8" officialStatus="official"/>
		</territory>
		<territory type="NL" gdp="499800000000" literacyPercent="99" population="16000000">
			<languagePopulation type="nl" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="75"/>
			<languagePopulation type="li" writingPercent="5" populationPercent="5.63"/>
			<languagePopulation type="fy" populationPercent="4.38" officialStatus="official_regional"/>
			<languagePopulation type="gos" populationPercent="3.69"/>
			<languagePopulation type="id" populationPercent="1.88"/>
			<languagePopulation type="zea" populationPercent="1.38"/>
			<languagePopulation type="rif" populationPercent="1.25"/>
			<languagePopulation type="tr" populationPercent="1.19"/>
		</territory>
		<territory type="NO" gdp="194100000000" literacyPercent="100" population="4600000">
			<languagePopulation type="nb" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="nn" populationPercent="23.9" officialStatus="official"/>
			<languagePopulation type="se" populationPercent="3.26" officialStatus="official_regional"/>
		</territory>
		<territory type="NP" gdp="39900000000" literacyPercent="48.6" population="25000000">
			<languagePopulation type="ne" populationPercent="44" officialStatus="official"/>
			<languagePopulation type="mai" populationPercent="11.2"/>
			<languagePopulation type="bho" populationPercent="6.8"/>
			<languagePopulation type="new" populationPercent="3.32"/>
			<languagePopulation type="jml" populationPercent="3.2"/>
			<languagePopulation type="taj" populationPercent="3.04"/>
			<languagePopulation type="awa" populationPercent="2.24"/>
			<languagePopulation type="thl" populationPercent="2"/>
			<languagePopulation type="bap" populationPercent="1.48"/>
			<languagePopulation type="lif" populationPercent="1.32"/>
			<languagePopulation type="tdg" populationPercent="1.28"/>
			<languagePopulation type="thr" populationPercent="1.2"/>
			<languagePopulation type="mgp" populationPercent="1.16"/>
			<languagePopulation type="thq" populationPercent="1.04"/>
			<languagePopulation type="mrd" populationPercent="0.84"/>
			<languagePopulation type="bfy" populationPercent="0.56"/>
			<languagePopulation type="rjb" populationPercent="0.52"/>
			<languagePopulation type="xsr" populationPercent="0.52"/>
			<languagePopulation type="tsf" populationPercent="0.44"/>
			<languagePopulation type="hi" populationPercent="0.44"/>
			<languagePopulation type="ggn" populationPercent="0.44"/>
			<languagePopulation type="gvr" populationPercent="0.288"/>
			<languagePopulation type="bo" populationPercent="0.24"/>
			<languagePopulation type="tkt" populationPercent="0.24"/>
			<languagePopulation type="tdh" populationPercent="0.12"/>
			<languagePopulation type="bn" populationPercent="0.096"/>
			<languagePopulation type="muw" populationPercent="0.023"/>
			<languagePopulation type="lep" populationPercent="0.011"/>
		</territory>
		<territory type="NR" gdp="60000000" literacyPercent="99.1" population="13000">
			<languagePopulation type="na" populationPercent="46.2" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="5.46" officialStatus="official"/>
		</territory>
		<territory type="NU" gdp="7600000" literacyPercent="95" population="2200">
			<languagePopulation type="niu" populationPercent="77.3" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="3.55" officialStatus="official"/>
		</territory>
		<territory type="NZ" gdp="101800000000" literacyPercent="99" population="4100000">
			<languagePopulation type="en" populationPercent="78" officialStatus="de_facto_official"/>
			<languagePopulation type="mi" populationPercent="2.44" officialStatus="official"/>
		</territory>
		<territory type="OM" gdp="39650000000" literacyPercent="81.4" population="2700000">
			<languagePopulation type="ar" populationPercent="44.4" officialStatus="official"/>
			<languagePopulation type="bal" populationPercent="4.81"/>
			<languagePopulation type="fa" populationPercent="0.926"/>
		</territory>
		<territory type="PA" gdp="22760000000" literacyPercent="91.9" population="3000000">
			<languagePopulation type="es" populationPercent="70" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="14"/>
			<languagePopulation type="zh_Hant" populationPercent="0.2"/>
		</territory>
		<territory type="PE" gdp="164500000000" literacyPercent="87.7" population="28000000">
			<languagePopulation type="es" populationPercent="71.4" officialStatus="official"/>
			<languagePopulation type="qu" populationPercent="15" officialStatus="official"/>
			<languagePopulation type="ay" populationPercent="1.57"/>
		</territory>
		<territory type="PF" gdp="4580000000" literacyPercent="98" population="250000">
			<languagePopulation type="ty" populationPercent="48" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="10.4" officialStatus="official"/>
			<languagePopulation type="zh_Hant" populationPercent="7.6"/>
		</territory>
		<territory type="PG" gdp="14370000000" literacyPercent="57.3" population="5600000">
			<languagePopulation type="tpi" writingPercent="45" populationPercent="71.4" officialStatus="official"/>
			<languagePopulation type="ho" writingPercent="5" populationPercent="2.14" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.893" officialStatus="official"/>
		</territory>
		<territory type="PH" gdp="451300000000" literacyPercent="92.6" population="83000000">
			<languagePopulation type="fil" populationPercent="60.2" officialStatus="official"/>
			<languagePopulation type="tl" populationPercent="60.2" officialStatus="official_regional"/>
			<languagePopulation type="en" populationPercent="55.4" officialStatus="official"/>
			<languagePopulation type="ceb" populationPercent="24.1" officialStatus="official_regional"/>
			<languagePopulation type="ilo" populationPercent="9.64" officialStatus="official_regional"/>
			<languagePopulation type="hil" populationPercent="8.43" officialStatus="official_regional"/>
			<languagePopulation type="bcl" populationPercent="3.01"/>
			<languagePopulation type="war" populationPercent="2.89" officialStatus="official_regional"/>
			<languagePopulation type="bhk" populationPercent="2.29"/>
			<languagePopulation type="pam" populationPercent="2.29"/>
			<languagePopulation type="pag" populationPercent="1.45" officialStatus="official_regional"/>
			<languagePopulation type="mdh" populationPercent="1.2" officialStatus="official_regional"/>
			<languagePopulation type="tsg" populationPercent="1.08" officialStatus="official_regional"/>
			<languagePopulation type="zh_Hant" populationPercent="0.723"/>
			<languagePopulation type="bto" populationPercent="0.277"/>
			<languagePopulation type="hnn" populationPercent="0.016"/>
			<languagePopulation type="tbw" writingPercent="36" populationPercent="0.012"/>
			<languagePopulation type="bku" populationPercent="0.01"/>
			<languagePopulation type="es" populationPercent="0.003" officialStatus="official"/>
		</territory>
		<territory type="PK" gdp="393400000000" literacyPercent="49.9" population="150000000">
			<languagePopulation type="ur" populationPercent="93.3" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="50.7" officialStatus="official"/>
			<languagePopulation type="lah" populationPercent="40.7"/>
			<languagePopulation type="ps" populationPercent="15.3"/>
			<languagePopulation type="sd_Arab" populationPercent="12.7"/>
			<languagePopulation type="bal" populationPercent="3.8"/>
			<languagePopulation type="brh" populationPercent="1.33"/>
			<languagePopulation type="hno" populationPercent="1.27"/>
			<languagePopulation type="fa" populationPercent="0.667"/>
			<languagePopulation type="hnd" populationPercent="0.42"/>
			<languagePopulation type="tg_Arab" populationPercent="0.333"/>
			<languagePopulation type="gju" populationPercent="0.2"/>
			<languagePopulation type="bft" populationPercent="0.18"/>
			<languagePopulation type="kvx" populationPercent="0.167"/>
			<languagePopulation type="khw" populationPercent="0.147"/>
			<languagePopulation type="mvy" populationPercent="0.147"/>
			<languagePopulation type="kxp" populationPercent="0.12"/>
			<languagePopulation type="gjk" populationPercent="0.113"/>
			<languagePopulation type="ks" populationPercent="0.073"/>
			<languagePopulation type="btv" populationPercent="0.019"/>
		</territory>
		<territory type="PL" gdp="514000000000" literacyPercent="99.8" population="38000000">
			<languagePopulation type="pl" populationPercent="97.4" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="1.32"/>
			<languagePopulation type="be" populationPercent="0.579"/>
			<languagePopulation type="uk" populationPercent="0.395"/>
		</territory>
		<territory type="PM" gdp="48300000" literacyPercent="99" population="7000">
			<languagePopulation type="fr" populationPercent="72.9" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="2.71"/>
		</territory>
		<territory type="PN" gdp="0" literacyPercent="99.1" population="46">
			<languagePopulation type="en" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="PR" gdp="72700000000" literacyPercent="94.1" population="3900000">
			<languagePopulation type="es" populationPercent="87.2" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="48.7" officialStatus="de_facto_official"/>
		</territory>
		<territory type="PS" gdp="1800000000" literacyPercent="92.4" population="3500000">
			<languagePopulation type="ar" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="PT" gdp="204400000000" literacyPercent="92.4" population="10000000">
			<languagePopulation type="pt" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="gl" populationPercent="0.15"/>
		</territory>
		<territory type="PW" gdp="174000000" literacyPercent="92" population="20000">
			<languagePopulation type="pau" populationPercent="75" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="9.5" officialStatus="official_regional"/>
		</territory>
		<territory type="PY" gdp="29080000000" literacyPercent="94" population="5800000">
			<languagePopulation type="gn" populationPercent="79.3" officialStatus="official"/>
			<languagePopulation type="es" populationPercent="3.28" officialStatus="official"/>
			<languagePopulation type="de" populationPercent="2.93"/>
		</territory>
		<territory type="QA" gdp="23640000000" literacyPercent="89" population="640000">
			<languagePopulation type="ar" populationPercent="15.6" officialStatus="official"/>
			<languagePopulation type="fa" populationPercent="11.4"/>
			<languagePopulation type="ml" populationPercent="1.02"/>
		</territory>
		<territory type="RE" gdp="4790000000" literacyPercent="88.9" population="780000">
			<languagePopulation type="rcf" populationPercent="70.5"/>
			<languagePopulation type="ta" populationPercent="15.4"/>
			<languagePopulation type="fr" populationPercent="0.308" officialStatus="official"/>
		</territory>
		<territory type="RO" gdp="183600000000" literacyPercent="97.3" population="22000000">
			<languagePopulation type="ro" populationPercent="90.9" officialStatus="official"/>
			<languagePopulation type="hu" populationPercent="6.36"/>
			<languagePopulation type="de" populationPercent="0.205"/>
			<languagePopulation type="tr" populationPercent="0.132"/>
			<languagePopulation type="sr_Latn" populationPercent="0.123"/>
			<languagePopulation type="bg" populationPercent="0.031"/>
			<languagePopulation type="el" populationPercent="0.019"/>
			<languagePopulation type="pl" populationPercent="0.013"/>
		</territory>
		<territory type="RS" gdp="41150000000" literacyPercent="96.4" population="9400000">
			<languagePopulation type="sr_Cyrl" populationPercent="98.9" officialStatus="official"/>
			<languagePopulation type="sr_Latn" writingPercent="5" populationPercent="98.9" officialStatus="official"/>
			<languagePopulation type="sq" populationPercent="18.1" officialStatus="official_regional"/>
			<languagePopulation type="hu" populationPercent="4.79" officialStatus="official_regional"/>
			<languagePopulation type="ro" populationPercent="2.13" officialStatus="official_regional"/>
			<languagePopulation type="sk" populationPercent="0.851" officialStatus="official_regional"/>
		</territory>
		<territory type="RU" gdp="1589000000000" literacyPercent="99.4" population="140000000">
			<languagePopulation type="ru" populationPercent="85.7" officialStatus="official"/>
			<languagePopulation type="ba" populationPercent="1.29" officialStatus="official_regional"/>
			<languagePopulation type="cv" populationPercent="1.29"/>
			<languagePopulation type="ce" populationPercent="0.671" officialStatus="official_regional"/>
			<languagePopulation type="av" populationPercent="0.4" officialStatus="official_regional"/>
			<languagePopulation type="udm" populationPercent="0.393" officialStatus="official_regional"/>
			<languagePopulation type="chm" populationPercent="0.379"/>
			<languagePopulation type="mhr" populationPercent="0.379"/>
			<languagePopulation type="tt" populationPercent="0.329" officialStatus="official_regional"/>
			<languagePopulation type="kbd" populationPercent="0.314" officialStatus="official_regional"/>
			<languagePopulation type="myv" populationPercent="0.314" officialStatus="official_regional"/>
			<languagePopulation type="dar" populationPercent="0.264"/>
			<languagePopulation type="sah" populationPercent="0.257" officialStatus="official_regional"/>
			<languagePopulation type="bxr" populationPercent="0.229"/>
			<languagePopulation type="mdf" populationPercent="0.214" officialStatus="official_regional"/>
			<languagePopulation type="kum" populationPercent="0.2" officialStatus="official_regional"/>
			<languagePopulation type="kpv" populationPercent="0.186" officialStatus="official_regional"/>
			<languagePopulation type="lez" populationPercent="0.186" officialStatus="official_regional"/>
			<languagePopulation type="krc" populationPercent="0.171" officialStatus="official_regional"/>
			<languagePopulation type="inh" populationPercent="0.164" officialStatus="official_regional"/>
			<languagePopulation type="tyv" populationPercent="0.129" officialStatus="official_regional"/>
			<languagePopulation type="ady" populationPercent="0.093" officialStatus="official_regional"/>
			<languagePopulation type="krl" populationPercent="0.086"/>
			<languagePopulation type="koi" populationPercent="0.086" officialStatus="official_regional"/>
			<languagePopulation type="lbe" populationPercent="0.079" officialStatus="official_regional"/>
			<languagePopulation type="mrj" populationPercent="0.047"/>
			<languagePopulation type="alt" populationPercent="0.014"/>
			<languagePopulation type="fi" populationPercent="0.012"/>
			<languagePopulation type="sr_Latn" populationPercent="0.004"/>
			<languagePopulation type="mn_Cyrl" populationPercent="0.001"/>
		</territory>
		<territory type="RW" gdp="12650000000" literacyPercent="64.9" population="8400000">
			<languagePopulation type="rw" populationPercent="77.4" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.027" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.004" officialStatus="official"/>
		</territory>
		<territory type="SA" gdp="338000000000" literacyPercent="79.4" population="23000000">
			<languagePopulation type="ar" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="SB" gdp="800000000" literacyPercent="76.6" population="470000">
			<languagePopulation type="en" populationPercent="100" officialStatus="official"/>
		</territory>
		<territory type="SC" gdp="626000000" literacyPercent="91.8" population="85000">
			<languagePopulation type="en" populationPercent="1.88" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="1.15" officialStatus="official"/>
		</territory>
		<territory type="SD" gdp="85650000000" literacyPercent="60.9" population="34000000">
			<languagePopulation type="ar" populationPercent="44.1" officialStatus="official"/>
			<languagePopulation type="ha_Arab" populationPercent="1.44"/>
		</territory>
		<territory type="SE" gdp="268000000000" literacyPercent="99" population="9000000">
			<languagePopulation type="sv" populationPercent="86.7" officialStatus="de_facto_official"/>
			<languagePopulation type="fi" populationPercent="2.22" officialStatus="official_regional"/>
			<languagePopulation type="se" populationPercent="0.044"/>
			<languagePopulation type="smj" populationPercent="0.017"/>
			<languagePopulation type="sma" writingPercent="75" populationPercent="0.003"/>
		</territory>
		<territory type="SG" gdp="124300000000" literacyPercent="92.6" population="4300000">
			<languagePopulation type="en" populationPercent="81.4" officialStatus="official"/>
			<languagePopulation type="zh_Hans" populationPercent="76.7" officialStatus="official"/>
			<languagePopulation type="ms" populationPercent="14.2" officialStatus="official"/>
			<languagePopulation type="ta" populationPercent="2.09" officialStatus="official"/>
			<languagePopulation type="ml" populationPercent="0.233"/>
			<languagePopulation type="pa_Guru" populationPercent="0.221"/>
		</territory>
		<territory type="SH" gdp="18000000" literacyPercent="97" population="7500">
			<languagePopulation type="en" populationPercent="72" officialStatus="de_facto_official"/>
		</territory>
		<territory type="SI" gdp="43360000000" literacyPercent="99" population="2000000">
			<languagePopulation type="sl" populationPercent="85" officialStatus="official"/>
			<languagePopulation type="hu" populationPercent="0.46"/>
			<languagePopulation type="it" populationPercent="0.2"/>
		</territory>
		<territory type="SJ" gdp="0" literacyPercent="99.1" population="2700">
			<languagePopulation type="nb" populationPercent="55.6" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="44.4"/>
		</territory>
		<territory type="SK" gdp="87320000000" literacyPercent="99.6" population="5400000">
			<languagePopulation type="sk" populationPercent="90.7" officialStatus="official"/>
			<languagePopulation type="hu" populationPercent="11.1"/>
			<languagePopulation type="uk" populationPercent="1.85"/>
			<languagePopulation type="pl" populationPercent="0.926"/>
			<languagePopulation type="de" populationPercent="0.278"/>
		</territory>
		<territory type="SL" gdp="4921000000" literacyPercent="35.1" population="5400000">
			<languagePopulation type="kri" populationPercent="96.3"/>
			<languagePopulation type="men" populationPercent="27.8"/>
			<languagePopulation type="tem" writingPercent="6" populationPercent="25.9"/>
			<languagePopulation type="en" populationPercent="1.85" officialStatus="official"/>
		</territory>
		<territory type="SM" gdp="940000000" literacyPercent="96" population="28000">
			<languagePopulation type="it" populationPercent="89.3" officialStatus="official"/>
		</territory>
		<territory type="SN" gdp="20530000000" literacyPercent="39.3" population="11000000">
			<languagePopulation type="fr" populationPercent="37.3" officialStatus="official"/>
			<languagePopulation type="wo" populationPercent="32.7" officialStatus="official"/>
			<languagePopulation type="srr" populationPercent="10.9"/>
		</territory>
		<territory type="SO" gdp="4809000000" literacyPercent="37.8" population="9900000">
			<languagePopulation type="sw" populationPercent="89.9"/>
			<languagePopulation type="so" populationPercent="78.8" officialStatus="official"/>
			<languagePopulation type="om" populationPercent="0.424"/>
		</territory>
		<territory type="SR" gdp="2818000000" literacyPercent="89.6" population="440000">
			<languagePopulation type="srn" writingPercent="75" populationPercent="68.2"/>
			<languagePopulation type="nl" populationPercent="45.5" officialStatus="official"/>
			<languagePopulation type="zh_Hant" populationPercent="1.59"/>
		</territory>
		<territory type="ST" gdp="214000000" literacyPercent="79.3" population="160000">
			<languagePopulation type="pt" populationPercent="1.63" officialStatus="official"/>
		</territory>
		<territory type="SV" gdp="31240000000" literacyPercent="80" population="6700000">
			<languagePopulation type="es" populationPercent="88.1" officialStatus="official"/>
		</territory>
		<territory type="SY" gdp="72330000000" literacyPercent="79.6" population="18000000">
			<languagePopulation type="ar" populationPercent="53.9" officialStatus="official"/>
			<languagePopulation type="ku_Arab" populationPercent="7.78"/>
			<languagePopulation type="fr" populationPercent="6.11" officialStatus="official"/>
			<languagePopulation type="hy" populationPercent="1.78"/>
			<languagePopulation type="syr" writingPercent="5" populationPercent="0.083"/>
		</territory>
		<territory type="SZ" gdp="5658000000" literacyPercent="79.6" population="1100000">
			<languagePopulation type="en" populationPercent="80.9" officialStatus="official"/>
			<languagePopulation type="ss" populationPercent="59.1" officialStatus="official"/>
			<languagePopulation type="zu" populationPercent="6.91"/>
			<languagePopulation type="ts" populationPercent="1.73"/>
		</territory>
		<territory type="TC" gdp="216000000" literacyPercent="98" population="21000">
			<languagePopulation type="en" populationPercent="4.38" officialStatus="de_facto_official"/>
		</territory>
		<territory type="TD" gdp="14790000000" literacyPercent="25.7" population="8800000">
			<languagePopulation type="ar" populationPercent="17" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.034" officialStatus="official"/>
		</territory>
		<territory type="TF" gdp="0" literacyPercent="99.1" population="1">
			<languagePopulation type="und" writingPercent="100" populationPercent="100"/>
		</territory>
		<territory type="TG" gdp="8965000000" literacyPercent="53.2" population="5000000">
			<languagePopulation type="ee" populationPercent="17.2"/>
			<languagePopulation type="fr" populationPercent="0.06" officialStatus="official"/>
		</territory>
		<territory type="TH" gdp="560700000000" literacyPercent="92.7" population="62000000">
			<languagePopulation type="th" populationPercent="32.3" officialStatus="official"/>
			<languagePopulation type="tts" populationPercent="24.2"/>
			<languagePopulation type="nod" populationPercent="9.68"/>
			<languagePopulation type="sou" populationPercent="8.06"/>
			<languagePopulation type="mfa" populationPercent="5"/>
			<languagePopulation type="zh_Hant" populationPercent="1.94"/>
			<languagePopulation type="kxm" populationPercent="1.77"/>
			<languagePopulation type="kdt" writingPercent="50" populationPercent="0.484"/>
			<languagePopulation type="mnw" populationPercent="0.177"/>
			<languagePopulation type="shn" populationPercent="0.097"/>
			<languagePopulation type="lcp" writingPercent="25" populationPercent="0.011"/>
			<languagePopulation type="lwl" populationPercent="0.011"/>
		</territory>
		<territory type="TJ" gdp="8730000000" literacyPercent="99.5" population="6400000">
			<languagePopulation type="tg_Cyrl" populationPercent="51.6" officialStatus="official"/>
			<languagePopulation type="fa" populationPercent="0.781"/>
			<languagePopulation type="ar" populationPercent="0.016"/>
		</territory>
		<territory type="TK" gdp="1500000" literacyPercent="94" population="410">
			<languagePopulation type="tkl" writingPercent="5" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="9.76" officialStatus="official"/>
		</territory>
		<territory type="TL" gdp="370000000" literacyPercent="58.6" population="930000">
			<languagePopulation type="tet" populationPercent="5.38" officialStatus="official"/>
			<languagePopulation type="pt" writingPercent="100" populationPercent="2.04" officialStatus="official"/>
		</territory>
		<territory type="TM" gdp="39540000000" literacyPercent="98.8" population="4900000">
			<languagePopulation type="tk" populationPercent="69.4" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="12"/>
			<languagePopulation type="uz_Latn" populationPercent="8.98"/>
			<languagePopulation type="ku_Latn" populationPercent="0.408"/>
		</territory>
		<territory type="TN" gdp="83540000000" literacyPercent="74.3" population="10000000">
			<languagePopulation type="ar" populationPercent="90" officialStatus="official"/>
			<languagePopulation type="fr" populationPercent="0.11" officialStatus="official"/>
		</territory>
		<territory type="TO" gdp="244000000" literacyPercent="98.9" population="100000">
			<languagePopulation type="to" populationPercent="96" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="29" officialStatus="official"/>
		</territory>
		<territory type="TR" gdp="572000000000" literacyPercent="87.4" population="72000000">
			<languagePopulation type="tr" populationPercent="63.9" officialStatus="official"/>
			<languagePopulation type="ku_Latn" populationPercent="5.56"/>
			<languagePopulation type="diq" populationPercent="1.39"/>
			<languagePopulation type="kbd" populationPercent="0.764"/>
			<languagePopulation type="az_Latn" populationPercent="0.736"/>
			<languagePopulation type="ar" populationPercent="0.556"/>
			<languagePopulation type="bgx" populationPercent="0.458"/>
			<languagePopulation type="bg" populationPercent="0.417"/>
			<languagePopulation type="ady" populationPercent="0.389"/>
			<languagePopulation type="hy" populationPercent="0.056"/>
			<languagePopulation type="ka" populationPercent="0.056"/>
			<languagePopulation type="sr_Latn" writingPercent="5" populationPercent="0.028"/>
			<languagePopulation type="sq" populationPercent="0.021"/>
			<languagePopulation type="ab" populationPercent="0.006"/>
			<languagePopulation type="el" populationPercent="0.006"/>
			<languagePopulation type="uz_Latn" populationPercent="0.003"/>
			<languagePopulation type="ky_Latn" populationPercent="0.002"/>
			<languagePopulation type="kk_Latn" populationPercent="0.001"/>
		</territory>
		<territory type="TT" gdp="18010000000" literacyPercent="98" population="1300000">
			<languagePopulation type="es" populationPercent="0.315"/>
			<languagePopulation type="en" populationPercent="0.2" officialStatus="official"/>
		</territory>
		<territory type="TV" gdp="12200000" literacyPercent="96" population="12000">
			<languagePopulation type="tvl" populationPercent="91.7" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="9.17" officialStatus="official"/>
		</territory>
		<territory type="TW" gdp="631200000000" literacyPercent="96" population="23000000">
			<languagePopulation type="zh_Hant" populationPercent="95.7" officialStatus="official"/>
			<languagePopulation type="trv" populationPercent="0.021"/>
		</territory>
		<territory type="TZ" gdp="27070000000" literacyPercent="69.4" population="37000000">
			<languagePopulation type="en" populationPercent="67.6" officialStatus="official"/>
			<languagePopulation type="suk" populationPercent="8.65"/>
			<languagePopulation type="nym" populationPercent="3.24"/>
			<languagePopulation type="sw" populationPercent="1.46" officialStatus="official"/>
		</territory>
		<territory type="UA" gdp="340400000000" literacyPercent="99.4" population="48000000">
			<languagePopulation type="uk" populationPercent="64.6" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="22.9"/>
			<languagePopulation type="pl" populationPercent="2.29"/>
			<languagePopulation type="yi" populationPercent="1.31"/>
			<languagePopulation type="rue" populationPercent="1.17"/>
			<languagePopulation type="be" populationPercent="0.833"/>
			<languagePopulation type="ro" populationPercent="0.521"/>
			<languagePopulation type="bg" populationPercent="0.479"/>
			<languagePopulation type="tr" populationPercent="0.417"/>
			<languagePopulation type="hu" populationPercent="0.375"/>
			<languagePopulation type="el" populationPercent="0.015"/>
		</territory>
		<territory type="UG" gdp="48730000000" literacyPercent="66.8" population="26000000">
			<languagePopulation type="lg" populationPercent="11.5"/>
			<languagePopulation type="nyn" populationPercent="6.15"/>
			<languagePopulation type="cgg" populationPercent="5.38"/>
			<languagePopulation type="xog" populationPercent="5.38"/>
			<languagePopulation type="en" populationPercent="3.85" officialStatus="official"/>
			<languagePopulation type="teo" populationPercent="3.85"/>
			<languagePopulation type="laj" populationPercent="3.77"/>
			<languagePopulation type="myx" populationPercent="2.88"/>
			<languagePopulation type="rw" populationPercent="2.04"/>
			<languagePopulation type="ttj" populationPercent="1.88"/>
			<languagePopulation type="sw" populationPercent="0.009" officialStatus="official"/>
			<languagePopulation type="hi" populationPercent="0.008"/>
		</territory>
		<territory type="UM" gdp="0" literacyPercent="99.1" population="2000">
			<languagePopulation type="en" populationPercent="95" officialStatus="de_facto_official"/>
		</territory>
		<territory type="US" gdp="12360000000000" literacyPercent="99" population="290000000">
			<languagePopulation type="en" populationPercent="93.1" officialStatus="de_facto_official"/>
			<languagePopulation type="es" populationPercent="9.66" officialStatus="official_regional"/>
			<languagePopulation type="zh_Hant" populationPercent="0.69"/>
			<languagePopulation type="fr" populationPercent="0.552"/>
			<languagePopulation type="de" populationPercent="0.483"/>
			<languagePopulation type="tl" populationPercent="0.414"/>
			<languagePopulation type="vi" populationPercent="0.345"/>
			<languagePopulation type="it" populationPercent="0.345"/>
			<languagePopulation type="ko" populationPercent="0.307"/>
			<languagePopulation type="ru" populationPercent="0.245"/>
			<languagePopulation type="chr" writingPercent="5" populationPercent="0.008"/>
			<languagePopulation type="haw" populationPercent="0.003" officialStatus="official_regional"/>
			<languagePopulation type="ik" writingPercent="5" populationPercent="0.003"/>
		</territory>
		<territory type="UY" gdp="32960000000" literacyPercent="98" population="3400000">
			<languagePopulation type="es" populationPercent="88.2" officialStatus="official"/>
		</territory>
		<territory type="UZ" gdp="48240000000" literacyPercent="99" population="26000000">
			<languagePopulation type="uz_Cyrl" populationPercent="53.8" officialStatus="official"/>
			<languagePopulation type="uz_Latn" populationPercent="19.2" officialStatus="official"/>
			<languagePopulation type="ru" populationPercent="13.8"/>
			<languagePopulation type="kaa" populationPercent="1.58"/>
			<languagePopulation type="tr" populationPercent="0.769"/>
		</territory>
		<territory type="VA" gdp="0" literacyPercent="100" population="930">
			<languagePopulation type="it" populationPercent="100"/>
			<languagePopulation type="la" populationPercent="100" officialStatus="de_facto_official"/>
		</territory>
		<territory type="VC" gdp="342000000" literacyPercent="6" population="110000">
			<languagePopulation type="en" populationPercent="0.364" officialStatus="official"/>
		</territory>
		<territory type="VE" gdp="153700000000" literacyPercent="93" population="26000000">
			<languagePopulation type="es" populationPercent="80.8" officialStatus="official"/>
		</territory>
		<territory type="VG" gdp="853400000" literacyPercent="97.8" population="23000">
			<languagePopulation type="en" populationPercent="95.7" officialStatus="de_facto_official"/>
		</territory>
		<territory type="VI" gdp="1577000000" literacyPercent="90" population="110000">
			<languagePopulation type="en" populationPercent="7.64" officialStatus="de_facto_official"/>
		</territory>
		<territory type="VN" gdp="232200000000" literacyPercent="90.3" population="82000000">
			<languagePopulation type="vi" populationPercent="80.5" officialStatus="official"/>
			<languagePopulation type="zh_Hant" populationPercent="1.05"/>
			<languagePopulation type="cjm" writingPercent="60" populationPercent="0.089"/>
		</territory>
		<territory type="VU" gdp="580000000" literacyPercent="74" population="210000">
			<languagePopulation type="fr" populationPercent="3" officialStatus="official"/>
			<languagePopulation type="bi" populationPercent="2.38" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.905" officialStatus="official"/>
		</territory>
		<territory type="WF" gdp="60000000" literacyPercent="50" population="16000">
			<languagePopulation type="wls" populationPercent="58.8"/>
			<languagePopulation type="fud" populationPercent="30"/>
			<languagePopulation type="fr" populationPercent="10.6" officialStatus="official"/>
		</territory>
		<territory type="WS" gdp="1000000000" literacyPercent="99" population="180000">
			<languagePopulation type="sm" populationPercent="100" officialStatus="official"/>
			<languagePopulation type="en" populationPercent="0.111" officialStatus="official"/>
		</territory>
		<territory type="YE" gdp="19370000000" literacyPercent="50" population="20000000">
			<languagePopulation type="ar" populationPercent="75" officialStatus="official"/>
		</territory>
		<territory type="YT" gdp="466800000" literacyPercent="32" population="170000">
			<languagePopulation type="swb" populationPercent="54.7"/>
			<languagePopulation type="fr" populationPercent="35.3" officialStatus="official"/>
			<languagePopulation type="buc" populationPercent="22.9"/>
			<languagePopulation type="sw" populationPercent="1.59"/>
		</territory>
		<territory type="ZA" gdp="533200000000" literacyPercent="82.4" population="46000000">
			<languagePopulation type="en" writingPercent="99" populationPercent="30.4" officialStatus="official"/>
			<languagePopulation type="zu" writingPercent="50" populationPercent="23.9" officialStatus="official"/>
			<languagePopulation type="xh" writingPercent="50" populationPercent="17.8" officialStatus="official"/>
			<languagePopulation type="af" writingPercent="99" populationPercent="12.6" officialStatus="official"/>
			<languagePopulation type="nso" writingPercent="50" populationPercent="8.04" officialStatus="official"/>
			<languagePopulation type="tn" writingPercent="50" populationPercent="7.17" officialStatus="official"/>
			<languagePopulation type="st" writingPercent="50" populationPercent="6.74" officialStatus="official"/>
			<languagePopulation type="ts" writingPercent="50" populationPercent="3.91" officialStatus="official"/>
			<languagePopulation type="ss" writingPercent="50" populationPercent="2.17"/>
			<languagePopulation type="hi" writingPercent="69" populationPercent="1.93"/>
			<languagePopulation type="ve" writingPercent="50" populationPercent="1.91" officialStatus="official"/>
			<languagePopulation type="nr" writingPercent="50" populationPercent="1.28"/>
			<languagePopulation type="sw" writingPercent="50" populationPercent="0.002"/>
		</territory>
		<territory type="ZM" gdp="10590000000" literacyPercent="68" population="11000000">
			<languagePopulation type="bem" populationPercent="30"/>
			<languagePopulation type="ny" populationPercent="14.5"/>
			<languagePopulation type="en" populationPercent="0.373" officialStatus="official"/>
		</territory>
		<territory type="ZW" gdp="28370000000" literacyPercent="92" population="13000000">
			<languagePopulation type="sn" populationPercent="84.6"/>
			<languagePopulation type="nd" populationPercent="12.3"/>
			<languagePopulation type="mxc" populationPercent="6.62"/>
			<languagePopulation type="ndc" populationPercent="6.15"/>
			<languagePopulation type="kck" populationPercent="5.38"/>
			<languagePopulation type="en" populationPercent="2.92" officialStatus="official"/>
			<languagePopulation type="ny" populationPercent="1.92"/>
			<languagePopulation type="ve" populationPercent="0.646"/>
			<languagePopulation type="tn" populationPercent="0.223"/>
		</territory>
		<territory type="ZZ" gdp="0" literacyPercent="0" population="0">
			<languagePopulation type="eo" writingPercent="99" populationPercent="100"/>
			<languagePopulation type="vo" writingPercent="99" populationPercent="100"/>
			<languagePopulation type="ia" writingPercent="99" populationPercent="100"/>
		</territory>
	</territoryInfo>
   	<calendarData>
   		<calendar type="gregorian" territories="all">
   		   <calendarSystem type="solar" />
   		   <eras>
   		       <era type="0" end="0" />
   		       <era type="1" start="1" />
   		   </eras>
   		</calendar>
		<calendar type="japanese" territories="JP">
		  <calendarSystem type="solar" />
		  <eras>
              <era type="0" start="645-6-19"/>
              <era type="1" start="650-2-15"/>
              <era type="2" start="672-1-1"/>
              <era type="3" start="686-7-20"/>
              <era type="4" start="701-3-21"/>
              <era type="5" start="704-5-10"/>
              <era type="6" start="708-1-11"/>
              <era type="7" start="715-9-2"/>
              <era type="8" start="717-11-17"/>
              <era type="9" start="724-2-4"/>
              <era type="10" start="729-8-5"/>
              <era type="11" start="749-4-14"/>
              <era type="12" start="749-7-2"/>
              <era type="13" start="757-8-18"/>
              <era type="14" start="765-1-7"/>
              <era type="15" start="767-8-16"/>
              <era type="16" start="770-10-1"/>
              <era type="17" start="781-1-1"/>
              <era type="18" start="782-8-19"/>
              <era type="19" start="806-5-18"/>
              <era type="20" start="810-9-19"/>
              <era type="21" start="824-1-5"/>
              <era type="22" start="834-1-3"/>
              <era type="23" start="848-6-13"/>
              <era type="24" start="851-4-28"/>
              <era type="25" start="854-11-30"/>
              <era type="26" start="857-2-21"/>
              <era type="27" start="859-4-15"/>
              <era type="28" start="877-4-16"/>
              <era type="29" start="885-2-21"/>
              <era type="30" start="889-4-27"/>
              <era type="31" start="898-4-26"/>
              <era type="32" start="901-7-15"/>
              <era type="33" start="923-4-11"/>
              <era type="34" start="931-4-26"/>
              <era type="35" start="938-5-22"/>
              <era type="36" start="947-4-22"/>
              <era type="37" start="957-10-27"/>
              <era type="38" start="961-2-16"/>
              <era type="39" start="964-7-10"/>
              <era type="40" start="968-8-13"/>
              <era type="41" start="970-3-25"/>
              <era type="42" start="973-12-20"/>
              <era type="43" start="976-7-13"/>
              <era type="44" start="978-11-29"/>
              <era type="45" start="983-4-15"/>
              <era type="46" start="985-4-27"/>
              <era type="47" start="987-4-5"/>
              <era type="48" start="989-8-8"/>
              <era type="49" start="990-11-7"/>
              <era type="50" start="995-2-22"/>
              <era type="51" start="999-1-13"/>
              <era type="52" start="1004-7-20"/>
              <era type="53" start="1012-12-25"/>
              <era type="54" start="1017-4-23"/>
              <era type="55" start="1021-2-2"/>
              <era type="56" start="1024-7-13"/>
              <era type="57" start="1028-7-25"/>
              <era type="58" start="1037-4-21"/>
              <era type="59" start="1040-11-10"/>
              <era type="60" start="1044-11-24"/>
              <era type="61" start="1046-4-14"/>
              <era type="62" start="1053-1-11"/>
              <era type="63" start="1058-8-29"/>
              <era type="64" start="1065-8-2"/>
              <era type="65" start="1069-4-13"/>
              <era type="66" start="1074-8-23"/>
              <era type="67" start="1077-11-17"/>
              <era type="68" start="1081-2-10"/>
              <era type="69" start="1084-2-7"/>
              <era type="70" start="1087-4-7"/>
              <era type="71" start="1094-12-15"/>
              <era type="72" start="1096-12-17"/>
              <era type="73" start="1097-11-21"/>
              <era type="74" start="1099-8-28"/>
              <era type="75" start="1104-2-10"/>
              <era type="76" start="1106-4-9"/>
              <era type="77" start="1108-8-3"/>
              <era type="78" start="1110-7-13"/>
              <era type="79" start="1113-7-13"/>
              <era type="80" start="1118-4-3"/>
              <era type="81" start="1120-4-10"/>
              <era type="82" start="1124-4-3"/>
              <era type="83" start="1126-1-22"/>
              <era type="84" start="1131-1-29"/>
              <era type="85" start="1132-8-11"/>
              <era type="86" start="1135-4-27"/>
              <era type="87" start="1141-7-10"/>
              <era type="88" start="1142-4-28"/>
              <era type="89" start="1144-2-23"/>
              <era type="90" start="1145-7-22"/>
              <era type="91" start="1151-1-26"/>
              <era type="92" start="1154-10-28"/>
              <era type="93" start="1156-4-27"/>
              <era type="94" start="1159-4-20"/>
              <era type="95" start="1160-1-10"/>
              <era type="96" start="1161-9-4"/>
              <era type="97" start="1163-3-29"/>
              <era type="98" start="1165-6-5"/>
              <era type="99" start="1166-8-27"/>
              <era type="100" start="1169-4-8"/>
              <era type="101" start="1171-4-21"/>
              <era type="102" start="1175-7-28"/>
              <era type="103" start="1177-8-4"/>
              <era type="104" start="1181-7-14"/>
              <era type="105" start="1182-5-27"/>
              <era type="106" start="1184-4-16"/>
              <era type="107" start="1185-8-14"/>
              <era type="108" start="1190-4-11"/>
              <era type="109" start="1199-4-27"/>
              <era type="110" start="1201-2-13"/>
              <era type="111" start="1204-2-20"/>
              <era type="112" start="1206-4-27"/>
              <era type="113" start="1207-10-25"/>
              <era type="114" start="1211-3-9"/>
              <era type="115" start="1213-12-6"/>
              <era type="116" start="1219-4-12"/>
              <era type="117" start="1222-4-13"/>
              <era type="118" start="1224-11-20"/>
              <era type="119" start="1225-4-20"/>
              <era type="120" start="1227-12-10"/>
              <era type="121" start="1229-3-5"/>
              <era type="122" start="1232-4-2"/>
              <era type="123" start="1233-4-15"/>
              <era type="124" start="1234-11-5"/>
              <era type="125" start="1235-9-19"/>
              <era type="126" start="1238-11-23"/>
              <era type="127" start="1239-2-7"/>
              <era type="128" start="1240-7-16"/>
              <era type="129" start="1243-2-26"/>
              <era type="130" start="1247-2-28"/>
              <era type="131" start="1249-3-18"/>
              <era type="132" start="1256-10-5"/>
              <era type="133" start="1257-3-14"/>
              <era type="134" start="1259-3-26"/>
              <era type="135" start="1260-4-13"/>
              <era type="136" start="1261-2-20"/>
              <era type="137" start="1264-2-28"/>
              <era type="138" start="1275-4-25"/>
              <era type="139" start="1278-2-29"/>
              <era type="140" start="1288-4-28"/>
              <era type="141" start="1293-8-55"/>
              <era type="142" start="1299-4-25"/>
              <era type="143" start="1302-11-21"/>
              <era type="144" start="1303-8-5"/>
              <era type="145" start="1306-12-14"/>
              <era type="146" start="1308-10-9"/>
              <era type="147" start="1311-4-28"/>
              <era type="148" start="1312-3-20"/>
              <era type="149" start="1317-2-3"/>
              <era type="150" start="1319-4-28"/>
              <era type="151" start="1321-2-23"/>
              <era type="152" start="1324-12-9"/>
              <era type="153" start="1326-4-26"/>
              <era type="154" start="1329-8-29"/>
              <era type="155" start="1331-8-9"/>
              <era type="156" start="1334-1-29"/>
              <era type="157" start="1336-2-29"/>
              <era type="158" start="1340-4-28"/>
              <era type="159" start="1346-12-8"/>
              <era type="160" start="1370-7-24"/>
              <era type="161" start="1372-4-1"/>
              <era type="162" start="1375-5-27"/>
              <era type="163" start="1379-3-22"/>
              <era type="164" start="1381-2-10"/>
              <era type="165" start="1384-4-28"/>
              <era type="166" start="1384-2-27"/>
              <era type="167" start="1387-8-23"/>
              <era type="168" start="1389-2-9"/>
              <era type="169" start="1390-3-26"/>
              <era type="170" start="1394-7-5"/>
              <era type="171" start="1428-4-27"/>
              <era type="172" start="1429-9-5"/>
              <era type="173" start="1441-2-17"/>
              <era type="174" start="1444-2-5"/>
              <era type="175" start="1449-7-28"/>
              <era type="176" start="1452-7-25"/>
              <era type="177" start="1455-7-25"/>
              <era type="178" start="1457-9-28"/>
              <era type="179" start="1460-12-21"/>
              <era type="180" start="1466-2-28"/>
              <era type="181" start="1467-3-3"/>
              <era type="182" start="1469-4-28"/>
              <era type="183" start="1487-7-29"/>
              <era type="184" start="1489-8-21"/>
              <era type="185" start="1492-7-19"/>
              <era type="186" start="1501-2-29"/>
              <era type="187" start="1504-2-30"/>
              <era type="188" start="1521-8-23"/>
              <era type="189" start="1528-8-20"/>
              <era type="190" start="1532-7-29"/>
              <era type="191" start="1555-10-23"/>
              <era type="192" start="1558-2-28"/>
              <era type="193" start="1570-4-23"/>
              <era type="194" start="1573-7-28"/>
              <era type="195" start="1592-12-8"/>
              <era type="196" start="1596-10-27"/>
              <era type="197" start="1615-7-13"/>
              <era type="198" start="1624-2-30"/>
              <era type="199" start="1644-12-16"/>
              <era type="200" start="1648-2-15"/>
              <era type="201" start="1652-9-18"/>
              <era type="202" start="1655-4-13"/>
              <era type="203" start="1658-7-23"/>
              <era type="204" start="1661-4-25"/>
              <era type="205" start="1673-9-21"/>
              <era type="206" start="1681-9-29"/>
              <era type="207" start="1684-2-21"/>
              <era type="208" start="1688-9-30"/>
              <era type="209" start="1704-3-13"/>
              <era type="210" start="1711-4-25"/>
              <era type="211" start="1716-6-22"/>
              <era type="212" start="1736-4-28"/>
              <era type="213" start="1741-2-27"/>
              <era type="214" start="1744-2-21"/>
              <era type="215" start="1748-7-12"/>
              <era type="216" start="1751-10-27"/>
              <era type="217" start="1764-6-2"/>
              <era type="218" start="1772-11-16"/>
              <era type="219" start="1781-4-2"/>
              <era type="220" start="1789-1-25"/>
              <era type="221" start="1801-2-5"/>
              <era type="222" start="1804-2-11"/>
              <era type="223" start="1818-4-22"/>
              <era type="224" start="1830-12-10"/>
              <era type="225" start="1844-12-2"/>
              <era type="226" start="1848-2-28"/>
              <era type="227" start="1854-11-27"/>
              <era type="228" start="1860-3-18"/>
              <era type="229" start="1861-2-19"/>
              <era type="230" start="1864-2-20"/>
              <era type="231" start="1865-4-7"/>
              <era type="232" start="1868-9-8"/>
              <era type="233" start="1912-7-30"/>
              <era type="234" start="1926-12-25"/>
              <era type="235" start="1989-1-8"/>
		  </eras>
		</calendar>
		<calendar type="islamic-civil" territories="AE BH DJ DZ EG EH ER IL IQ JO KM KW LB LY MA MR OM PS QA SA SD SY TD TN YE AF IR">
		  <calendarSystem type="lunar" />
		  <eras>
              <era type="0" start="622-7-15"/>
		  </eras>
		</calendar>
		<calendar type="islamic" territories="AE BH DJ DZ EG EH ER IL IQ JO KM KW LB LY MA MR OM PS QA SA SD SY TD TN YE AF IR">
		  <calendarSystem type="lunar" />
		  <eras>
              <era type="0" start="622-7-15"/>
		  </eras>
		</calendar>
		<calendar type="chinese" territories="CN CX HK MO SG TW">
		  <calendarSystem type="lunisolar"/>
		  <eras>
		      <era type="0" start="-2636"/>
		  </eras>
		</calendar>
		<calendar type="hebrew" territories="IL">
		  <calendarSystem type="lunisolar"/>
		  <eras>
              <era type="0" start="-3760-10-7"/>
		  </eras>
		</calendar>
		<calendar type="buddhist" territories="TH">
		  <calendarSystem type="solar" />
		  <eras>
		      <era type="0" start="-542"/>
		  </eras>
		</calendar>
		<calendar type="coptic" territories="EG"/>
		<calendar type="persian" territories="AF IR">
		  <calendarSystem type="solar"/>
		  <eras>
		      <era type="0" start="622"/>
		  </eras>
		</calendar>
		<calendar type="ethiopic" territories="ET"/>
		<calendar type="indian" territories="IN">
		  <eras>
		      <era type="0" start="79"/>
		  </eras>
		</calendar>
		<calendar type="roc" territories="TW">
		  <eras>
		      <era type="0" end="1911"/>
		      <era type="1" start="1912"/>
		  </eras>
		</calendar>
	</calendarData>
    <weekData>
          <minDays count="1" territories="001" />
          <minDays count="4" territories="AT BE CA CH DE DK FI FR IT LI LT LU MC MT NL NO SE SK" />
          <minDays count="4" territories="CD" />

          <firstDay day="mon"  territories="001" />
          <firstDay day="fri"  territories="MV" />
          <firstDay day="sat"  territories="AF BH DJ DZ EG ER ET IQ IR JO KE KW LY MA OM QA SA SD SO TN YE" />
          <firstDay day="sun"  territories="AS AZ BW CA CN FO GE GL GU HK IE IL IS JM JP KG KR LA MH MN MO MP MT NZ PH PK SG SY TH TT TW UM US UZ VI ZW" />
          <firstDay day="sun"  territories="ET MW NG TJ" />
		  <firstDay day="sun"  territories="GB"  alt="variant" references="Shorter Oxford Dictionary (5th edition, 2002)"/>

          <weekendStart day="thu"  territories="DZ KW OM SA SD YE AF IR"/>
          <weekendStart day="fri"  territories="AE BH EG IL IQ JO LY MA QA SY TN"/>
          <weekendStart day="sat"  territories="001"/>
          <weekendStart day="sun"  territories="IN"/>

          <weekendEnd day="fri"  territories="DZ KW OM SA SD YE AF IR"/>
          <weekendEnd day="sat"  territories="AE BH EG IL IQ JO LY MA QA SY TN"/>
          <weekendEnd day="sun"  territories="001"/>
    </weekData>

    <measurementData>
          <measurementSystem type="metric"  territories="001"/>
          <measurementSystem type="US"  territories="US"/>
          <paperSize type="A4"  territories="001"/>
          <paperSize type="US-Letter"  territories="CA US"/>
    </measurementData>
	<timezoneData>
		<mapTimezones type="windows">
			<mapZone other="Afghanistan Standard Time" type="Asia/Kabul"/>
			<mapZone other="Alaskan Standard Time" type="America/Anchorage"/>
			<mapZone other="Arab Standard Time" type="Asia/Riyadh"/>
			<mapZone other="Arabian Standard Time" type="Asia/Dubai"/>
			<mapZone other="Arabic Standard Time" type="Asia/Baghdad"/>
			<mapZone other="Argentina Standard Time" type="America/Buenos_Aires"/>
			<mapZone other="Armenian Standard Time" type="Asia/Yerevan"/>
			<mapZone other="Atlantic Standard Time" type="America/Halifax"/>
			<mapZone other="AUS Central Standard Time" type="Australia/Darwin"/>
			<mapZone other="AUS Eastern Standard Time" type="Australia/Sydney"/>
			<mapZone other="Azerbaijan Standard Time" type="Asia/Baku"/>
			<mapZone other="Azores Standard Time" type="Atlantic/Azores"/>
			<mapZone other="Canada Central Standard Time" type="America/Regina"/>
			<mapZone other="Cape Verde Standard Time" type="Atlantic/Cape_Verde"/>
			<mapZone other="Caucasus Standard Time" type="Asia/Tbilisi"/>
			<mapZone other="Cen. Australia Standard Time" type="Australia/Adelaide"/>
			<mapZone other="Central America Standard Time" type="America/Guatemala"/>
			<mapZone other="Central Asia Standard Time" type="Asia/Dhaka"/>
			<mapZone other="Central Brazilian Standard Time" type="America/Manaus"/>
			<mapZone other="Central Europe Standard Time" type="Europe/Budapest"/>
			<mapZone other="Central European Standard Time" type="Europe/Warsaw"/>
			<mapZone other="Central Pacific Standard Time" type="Pacific/Guadalcanal"/>
			<mapZone other="Central Standard Time" type="America/Chicago"/>
			<mapZone other="Central Standard Time (Mexico)" type="America/Mexico_City"/>
			<mapZone other="China Standard Time" type="Asia/Shanghai"/>
			<mapZone other="Dateline Standard Time" type="Etc/GMT+12"/>
			<mapZone other="E. Africa Standard Time" type="Africa/Nairobi"/>
			<mapZone other="E. Australia Standard Time" type="Australia/Brisbane"/>
			<mapZone other="E. Europe Standard Time" type="Europe/Minsk"/>
			<mapZone other="E. South America Standard Time" type="America/Sao_Paulo"/>
			<mapZone other="Eastern Standard Time" type="America/New_York"/>
			<mapZone other="Egypt Standard Time" type="Africa/Cairo"/>
			<mapZone other="Ekaterinburg Standard Time" type="Asia/Yekaterinburg"/>
			<mapZone other="Fiji Standard Time" type="Pacific/Fiji"/>
			<mapZone other="FLE Standard Time" type="Europe/Kiev"/>
			<mapZone other="Georgian Standard Time" type="Etc/GMT-3"/>
			<mapZone other="GMT Standard Time" type="Europe/London"/>
			<mapZone other="Greenland Standard Time" type="America/Godthab"/>
			<mapZone other="Greenwich Standard Time" type="Africa/Casablanca"/>
			<mapZone other="GTB Standard Time" type="Europe/Istanbul"/>
			<mapZone other="Hawaiian Standard Time" type="Pacific/Honolulu"/>
			<mapZone other="India Standard Time" type="Asia/Calcutta"/>
			<mapZone other="Iran Standard Time" type="Asia/Tehran"/>
			<mapZone other="Israel Standard Time" type="Asia/Jerusalem"/>
			<mapZone other="Jordan Standard Time" type="Asia/Amman"/>
			<mapZone other="Korea Standard Time" type="Asia/Seoul"/>
			<mapZone other="Mexico Standard Time" type="America/Mexico_City"/>
			<mapZone other="Mexico Standard Time 2" type="America/Chihuahua"/>
			<mapZone other="Mid-Atlantic Standard Time" type="Atlantic/South_Georgia"/>
			<mapZone other="Middle East Standard Time" type="Asia/Beirut"/>
			<mapZone other="Montevideo Standard Time" type="America/Montevideo"/>
			<mapZone other="Mountain Standard Time" type="America/Denver"/>
			<mapZone other="Mountain Standard Time (Mexico)" type="America/Chihuahua"/>
			<mapZone other="Myanmar Standard Time" type="Asia/Rangoon"/>
			<mapZone other="N. Central Asia Standard Time" type="Asia/Novosibirsk"/>
			<mapZone other="Namibia Standard Time" type="Africa/Windhoek"/>
			<mapZone other="Nepal Standard Time" type="Asia/Katmandu"/>
			<mapZone other="New Zealand Standard Time" type="Pacific/Auckland"/>
			<mapZone other="Newfoundland Standard Time" type="America/St_Johns"/>
			<mapZone other="North Asia East Standard Time" type="Asia/Irkutsk"/>
			<mapZone other="North Asia Standard Time" type="Asia/Krasnoyarsk"/>
			<mapZone other="Pacific SA Standard Time" type="America/Santiago"/>
			<mapZone other="Pacific Standard Time" type="America/Los_Angeles"/>
			<mapZone other="Pacific Standard Time (Mexico)" type="America/Tijuana"/>
			<mapZone other="Romance Standard Time" type="Europe/Paris"/>
			<mapZone other="Russian Standard Time" type="Europe/Moscow"/>
			<mapZone other="SA Eastern Standard Time" type="Etc/GMT+3"/>
			<mapZone other="SA Pacific Standard Time" type="America/Bogota"/>
			<mapZone other="SA Western Standard Time" type="America/La_Paz"/>
			<mapZone other="Samoa Standard Time" type="Pacific/Apia"/>
			<mapZone other="SE Asia Standard Time" type="Asia/Bangkok"/>
			<mapZone other="Singapore Standard Time" type="Asia/Singapore"/>
			<mapZone other="South Africa Standard Time" type="Africa/Johannesburg"/>
			<mapZone other="Sri Lanka Standard Time" type="Asia/Colombo"/>
			<mapZone other="Taipei Standard Time" type="Asia/Taipei"/>
			<mapZone other="Tasmania Standard Time" type="Australia/Hobart"/>
			<mapZone other="Tokyo Standard Time" type="Asia/Tokyo"/>
			<mapZone other="Tonga Standard Time" type="Pacific/Tongatapu"/>
			<mapZone other="US Eastern Standard Time" type="Etc/GMT+5"/>
			<mapZone other="US Mountain Standard Time" type="America/Phoenix"/>
			<mapZone other="Venezuela Standard Time" type="America/Caracas"/>
			<mapZone other="Vladivostok Standard Time" type="Asia/Vladivostok"/>
			<mapZone other="W. Australia Standard Time" type="Australia/Perth"/>
			<mapZone other="W. Central Africa Standard Time" type="Africa/Lagos"/>
			<mapZone other="W. Europe Standard Time" type="Europe/Berlin"/>
			<mapZone other="West Asia Standard Time" type="Asia/Karachi"/>
			<mapZone other="West Pacific Standard Time" type="Pacific/Port_Moresby"/>
			<mapZone other="Yakutsk Standard Time" type="Asia/Yakutsk"/>
		</mapTimezones>
		<mapTimezones type="metazones">
			<mapZone other="Acre" territory="001" type="America/Rio_Branco"/>
			<mapZone other="Afghanistan" territory="001" type="Asia/Kabul"/>
			<mapZone other="Africa_Central" territory="001" type="Africa/Maputo"/>
			<mapZone other="Africa_Central" territory="BI" type="Africa/Bujumbura"/>
			<mapZone other="Africa_Central" territory="BW" type="Africa/Gaborone"/>
			<mapZone other="Africa_Central" territory="CD" type="Africa/Lubumbashi"/>
			<mapZone other="Africa_Central" territory="MW" type="Africa/Blantyre"/>
			<mapZone other="Africa_Central" territory="RW" type="Africa/Kigali"/>
			<mapZone other="Africa_Central" territory="ZM" type="Africa/Lusaka"/>
			<mapZone other="Africa_Central" territory="ZW" type="Africa/Harare"/>
			<mapZone other="Africa_Eastern" territory="001" type="Africa/Nairobi"/>
			<mapZone other="Africa_Eastern" territory="DJ" type="Africa/Djibouti"/>
			<mapZone other="Africa_Eastern" territory="ER" type="Africa/Asmera"/>
			<mapZone other="Africa_Eastern" territory="ET" type="Africa/Addis_Ababa"/>
			<mapZone other="Africa_Eastern" territory="KM" type="Indian/Comoro"/>
			<mapZone other="Africa_Eastern" territory="MG" type="Indian/Antananarivo"/>
			<mapZone other="Africa_Eastern" territory="SO" type="Africa/Mogadishu"/>
			<mapZone other="Africa_Eastern" territory="TZ" type="Africa/Dar_es_Salaam"/>
			<mapZone other="Africa_Eastern" territory="UG" type="Africa/Kampala"/>
			<mapZone other="Africa_Eastern" territory="YT" type="Indian/Mayotte"/>
			<mapZone other="Africa_FarWestern" territory="001" type="Africa/El_Aaiun"/>
			<mapZone other="Africa_FarWestern" territory="GW" type="Africa/Bissau"/>
			<mapZone other="Africa_Southern" territory="001" type="Africa/Johannesburg"/>
			<mapZone other="Africa_Southern" territory="LS" type="Africa/Maseru"/>
			<mapZone other="Africa_Southern" territory="SZ" type="Africa/Mbabane"/>
			<mapZone other="Africa_Western" territory="001" type="Africa/Lagos"/>
			<mapZone other="Africa_Western" territory="AO" type="Africa/Luanda"/>
			<mapZone other="Africa_Western" territory="BJ" type="Africa/Porto-Novo"/>
			<mapZone other="Africa_Western" territory="CD" type="Africa/Kinshasa"/>
			<mapZone other="Africa_Western" territory="CF" type="Africa/Bangui"/>
			<mapZone other="Africa_Western" territory="CG" type="Africa/Brazzaville"/>
			<mapZone other="Africa_Western" territory="CM" type="Africa/Douala"/>
			<mapZone other="Africa_Western" territory="GA" type="Africa/Libreville"/>
			<mapZone other="Africa_Western" territory="GQ" type="Africa/Malabo"/>
			<mapZone other="Africa_Western" territory="NE" type="Africa/Niamey"/>
			<mapZone other="Africa_Western" territory="TD" type="Africa/Ndjamena"/>
			<mapZone other="Aktyubinsk" territory="001" type="Asia/Aqtobe"/>
			<mapZone other="Alaska" territory="001" type="America/Juneau"/>
			<mapZone other="Alaska_Hawaii" territory="001" type="America/Anchorage"/>
			<mapZone other="Almaty" territory="001" type="Asia/Almaty"/>
			<mapZone other="Amazon" territory="001" type="America/Manaus"/>
			<mapZone other="America_Central" territory="001" type="America/Chicago"/>
			<mapZone other="America_Central" territory="BZ" type="America/Belize"/>
			<mapZone other="America_Central" territory="CA" type="America/Winnipeg"/>
			<mapZone other="America_Central" territory="CR" type="America/Costa_Rica"/>
			<mapZone other="America_Central" territory="GT" type="America/Guatemala"/>
			<mapZone other="America_Central" territory="HN" type="America/Tegucigalpa"/>
			<mapZone other="America_Central" territory="MX" type="America/Mexico_City"/>
			<mapZone other="America_Central" territory="SV" type="America/El_Salvador"/>
			<mapZone other="America_Eastern" territory="001" type="America/New_York"/>
			<mapZone other="America_Eastern" territory="BS" type="America/Nassau"/>
			<mapZone other="America_Eastern" territory="CA" type="America/Toronto"/>
			<mapZone other="America_Eastern" territory="HT" type="America/Port-au-Prince"/>
			<mapZone other="America_Eastern" territory="JM" type="America/Jamaica"/>
			<mapZone other="America_Eastern" territory="KY" type="America/Cayman"/>
			<mapZone other="America_Eastern" territory="PA" type="America/Panama"/>
			<mapZone other="America_Eastern" territory="TC" type="America/Grand_Turk"/>
			<mapZone other="America_Mountain" territory="001" type="America/Denver"/>
			<mapZone other="America_Mountain" territory="CA" type="America/Edmonton"/>
			<mapZone other="America_Mountain" territory="MX" type="America/Hermosillo"/>
			<mapZone other="America_Pacific" territory="001" type="America/Los_Angeles"/>
			<mapZone other="America_Pacific" territory="CA" type="America/Vancouver"/>
			<mapZone other="America_Pacific" territory="MX" type="America/Tijuana"/>
			<mapZone other="Anadyr" territory="001" type="Asia/Anadyr"/>
			<mapZone other="Aqtau" territory="001" type="Asia/Aqtau"/>
			<mapZone other="Aqtobe" territory="001" type="Asia/Aqtobe"/>
			<mapZone other="Arabian" territory="001" type="Asia/Riyadh"/>
			<mapZone other="Arabian" territory="BH" type="Asia/Bahrain"/>
			<mapZone other="Arabian" territory="IQ" type="Asia/Baghdad"/>
			<mapZone other="Arabian" territory="KW" type="Asia/Kuwait"/>
			<mapZone other="Arabian" territory="QA" type="Asia/Qatar"/>
			<mapZone other="Arabian" territory="YE" type="Asia/Aden"/>
			<mapZone other="Argentina" territory="001" type="America/Buenos_Aires"/>
			<mapZone other="Argentina_Western" territory="001" type="America/Mendoza"/>
			<mapZone other="Armenia" territory="001" type="Asia/Yerevan"/>
			<mapZone other="Ashkhabad" territory="001" type="Asia/Ashgabat"/>
			<mapZone other="Atlantic" territory="001" type="America/Halifax"/>
			<mapZone other="Atlantic" territory="AG" type="America/Antigua"/>
			<mapZone other="Atlantic" territory="AI" type="America/Anguilla"/>
			<mapZone other="Atlantic" territory="AN" type="America/Curacao"/>
			<mapZone other="Atlantic" territory="AW" type="America/Aruba"/>
			<mapZone other="Atlantic" territory="BB" type="America/Barbados"/>
			<mapZone other="Atlantic" territory="BM" type="America/Bermuda"/>
			<mapZone other="Atlantic" territory="DM" type="America/Dominica"/>
			<mapZone other="Atlantic" territory="GD" type="America/Grenada"/>
			<mapZone other="Atlantic" territory="GL" type="America/Thule"/>
			<mapZone other="Atlantic" territory="GP" type="America/Guadaloupe"/>
			<mapZone other="Atlantic" territory="KN" type="America/St_Kitts"/>
			<mapZone other="Atlantic" territory="LC" type="America/St_Lucia"/>
			<mapZone other="Atlantic" territory="MQ" type="America/Martinique"/>
			<mapZone other="Atlantic" territory="MS" type="America/Montserrat"/>
			<mapZone other="Atlantic" territory="PR" type="America/Puerto_Rico"/>
			<mapZone other="Atlantic" territory="TT" type="America/Port_of_Spain"/>
			<mapZone other="Atlantic" territory="VC" type="America/St_Vincent"/>
			<mapZone other="Atlantic" territory="VG" type="America/Tortola"/>
			<mapZone other="Atlantic" territory="VI" type="America/St_Thomas"/>
			<mapZone other="Australia_Central" territory="001" type="Australia/Adelaide"/>
			<mapZone other="Australia_CentralWestern" territory="001" type="Australia/Eucla"/>
			<mapZone other="Australia_Eastern" territory="001" type="Australia/Sydney"/>
			<mapZone other="Australia_Western" territory="001" type="Australia/Perth"/>
			<mapZone other="Azerbaijan" territory="001" type="Asia/Baku"/>
			<mapZone other="Azores" territory="001" type="Atlantic/Azores"/>
			<mapZone other="Baku" territory="001" type="Asia/Baku"/>
			<mapZone other="Bangladesh" territory="001" type="Asia/Dhaka"/>
			<mapZone other="Bering" territory="001" type="America/Adak"/>
			<mapZone other="Bhutan" territory="001" type="Asia/Thimphu"/>
			<mapZone other="Bolivia" territory="001" type="America/La_Paz"/>
			<mapZone other="Borneo" territory="001" type="Asia/Kuching"/>
			<mapZone other="Brasilia" territory="001" type="America/Sao_Paulo"/>
			<mapZone other="British" territory="001" type="Europe/London"/>
			<mapZone other="Brunei" territory="001" type="Asia/Brunei"/>
			<mapZone other="Cape_Verde" territory="001" type="Atlantic/Cape_Verde"/>
			<mapZone other="Chamorro" territory="001" type="Pacific/Saipan"/>
			<mapZone other="Chamorro" territory="GU" type="Pacific/Guam"/>
			<mapZone other="Changbai" territory="001" type="Asia/Harbin"/>
			<mapZone other="Chatham" territory="001" type="Pacific/Chatham"/>
			<mapZone other="Chile" territory="001" type="America/Santiago"/>
			<mapZone other="Chile" territory="AQ" type="Antarctica/Palmer"/>
			<mapZone other="China" territory="001" type="Asia/Shanghai"/>
			<mapZone other="China" territory="MO" type="Asia/Macau"/>
			<mapZone other="China" territory="TW" type="Asia/Taipei"/>
			<mapZone other="Choibalsan" territory="001" type="Asia/Choibalsan"/>
			<mapZone other="Christmas" territory="001" type="Indian/Christmas"/>
			<mapZone other="Cocos" territory="001" type="Indian/Cocos"/>
			<mapZone other="Colombia" territory="001" type="America/Bogota"/>
			<mapZone other="Cook" territory="001" type="Pacific/Rarotonga"/>
			<mapZone other="Cuba" territory="001" type="America/Havana"/>
			<mapZone other="Dacca" territory="001" type="Asia/Dhaka"/>
			<mapZone other="Davis" territory="001" type="Antarctica/Davis"/>
			<mapZone other="Dominican" territory="001" type="America/Santo_Domingo"/>
			<mapZone other="DumontDUrville" territory="001" type="Antarctica/DumontDUrville"/>
			<mapZone other="Dushanbe" territory="001" type="Asia/Dushanbe"/>
			<mapZone other="Dutch_Guiana" territory="001" type="America/Paramaribo"/>
			<mapZone other="East_Timor" territory="001" type="Asia/Dili"/>
			<mapZone other="Easter" territory="001" type="Pacific/Easter"/>
			<mapZone other="Ecuador" territory="001" type="America/Guayaquil"/>
			<mapZone other="Europe_Central" territory="001" type="Europe/Paris"/>
			<mapZone other="Europe_Central" territory="AD" type="Europe/Andorra"/>
			<mapZone other="Europe_Central" territory="AL" type="Europe/Tirane"/>
			<mapZone other="Europe_Central" territory="AT" type="Europe/Vienna"/>
			<mapZone other="Europe_Central" territory="BA" type="Europe/Sarajevo"/>
			<mapZone other="Europe_Central" territory="BE" type="Europe/Brussels"/>
			<mapZone other="Europe_Central" territory="CH" type="Europe/Zurich"/>
			<mapZone other="Europe_Central" territory="CZ" type="Europe/Prague"/>
			<mapZone other="Europe_Central" territory="DE" type="Europe/Berlin"/>
			<mapZone other="Europe_Central" territory="DK" type="Europe/Copenhagen"/>
			<mapZone other="Europe_Central" territory="ES" type="Europe/Madrid"/>
			<mapZone other="Europe_Central" territory="GI" type="Europe/Gibraltar"/>
			<mapZone other="Europe_Central" territory="HR" type="Europe/Zagreb"/>
			<mapZone other="Europe_Central" territory="HU" type="Europe/Budapest"/>
			<mapZone other="Europe_Central" territory="IT" type="Europe/Rome"/>
			<mapZone other="Europe_Central" territory="LI" type="Europe/Vaduz"/>
			<mapZone other="Europe_Central" territory="LU" type="Europe/Luxembourg"/>
			<mapZone other="Europe_Central" territory="MC" type="Europe/Monaco"/>
			<mapZone other="Europe_Central" territory="ME" type="Europe/Podgorica"/>
			<mapZone other="Europe_Central" territory="MK" type="Europe/Skopje"/>
			<mapZone other="Europe_Central" territory="MT" type="Europe/Malta"/>
			<mapZone other="Europe_Central" territory="NL" type="Europe/Amsterdam"/>
			<mapZone other="Europe_Central" territory="NO" type="Europe/Oslo"/>
			<mapZone other="Europe_Central" territory="PL" type="Europe/Warsaw"/>
			<mapZone other="Europe_Central" territory="RS" type="Europe/Belgrade"/>
			<mapZone other="Europe_Central" territory="SE" type="Europe/Stockholm"/>
			<mapZone other="Europe_Central" territory="SI" type="Europe/Ljubljana"/>
			<mapZone other="Europe_Central" territory="SK" type="Europe/Bratislava"/>
			<mapZone other="Europe_Central" territory="TN" type="Africa/Tunis"/>
			<mapZone other="Europe_Eastern" territory="001" type="Europe/Bucharest"/>
			<mapZone other="Europe_Eastern" territory="BG" type="Europe/Sofia"/>
			<mapZone other="Europe_Eastern" territory="CY" type="Asia/Nicosia"/>
			<mapZone other="Europe_Eastern" territory="EG" type="Africa/Cairo"/>
			<mapZone other="Europe_Eastern" territory="FI" type="Europe/Helsinki"/>
			<mapZone other="Europe_Eastern" territory="GR" type="Europe/Athens"/>
			<mapZone other="Europe_Eastern" territory="JO" type="Asia/Amman"/>
			<mapZone other="Europe_Eastern" territory="LB" type="Asia/Beirut"/>
			<mapZone other="Europe_Eastern" territory="SY" type="Asia/Damascus"/>
			<mapZone other="Europe_Western" territory="001" type="Atlantic/Canary"/>
			<mapZone other="Europe_Western" territory="FO" type="Atlantic/Faeroe"/>
			<mapZone other="Falkland" territory="001" type="Atlantic/Stanley"/>
			<mapZone other="Fiji" territory="001" type="Pacific/Fiji"/>
			<mapZone other="French_Guiana" territory="001" type="America/Cayenne"/>
			<mapZone other="French_Southern" territory="001" type="Indian/Kerguelen"/>
			<mapZone other="Frunze" territory="001" type="Asia/Bishkek"/>
			<mapZone other="Gambier" territory="001" type="Pacific/Gambier"/>
			<mapZone other="GMT" territory="001" type="Atlantic/Reykjavik"/>
			<mapZone other="GMT" territory="BF" type="Africa/Ouagadougou"/>
			<mapZone other="GMT" territory="CI" type="Africa/Abidjan"/>
			<mapZone other="GMT" territory="GB" type="Europe/London"/>
			<mapZone other="GMT" territory="GH" type="Africa/Accra"/>
			<mapZone other="GMT" territory="GM" type="Africa/Banjul"/>
			<mapZone other="GMT" territory="GN" type="Africa/Conakry"/>
			<mapZone other="GMT" territory="GW" type="Africa/Bissau"/>
			<mapZone other="GMT" territory="IE" type="Europe/Dublin"/>
			<mapZone other="GMT" territory="LR" type="Africa/Monrovia"/>
			<mapZone other="GMT" territory="ML" type="Africa/Bamako"/>
			<mapZone other="GMT" territory="MR" type="Africa/Nouakchott"/>
			<mapZone other="GMT" territory="SH" type="Atlantic/St_Helena"/>
			<mapZone other="GMT" territory="SL" type="Africa/Freetown"/>
			<mapZone other="GMT" territory="SN" type="Africa/Dakar"/>
			<mapZone other="GMT" territory="ST" type="Africa/Sao_Tome"/>
			<mapZone other="GMT" territory="TG" type="Africa/Lome"/>
			<mapZone other="Galapagos" territory="001" type="Pacific/Galapagos"/>
			<mapZone other="Georgia" territory="001" type="Asia/Tbilisi"/>
			<mapZone other="Gilbert_Islands" territory="001" type="Pacific/Tarawa"/>
			<mapZone other="Goose_Bay" territory="001" type="America/Goose_Bay"/>
			<mapZone other="Greenland_Central" territory="001" type="America/Scoresbysund"/>
			<mapZone other="Greenland_Eastern" territory="001" type="America/Scoresbysund"/>
			<mapZone other="Greenland_Western" territory="001" type="America/Godthab"/>
			<mapZone other="Guam" territory="001" type="Pacific/Guam"/>
			<mapZone other="Gulf" territory="001" type="Asia/Dubai"/>
			<mapZone other="Gulf" territory="OM" type="Asia/Muscat"/>
			<mapZone other="Guyana" territory="001" type="America/Guyana"/>
			<mapZone other="Hawaii_Aleutian" territory="001" type="Pacific/Honolulu"/>
			<mapZone other="Hong_Kong" territory="001" type="Asia/Hong_Kong"/>
			<mapZone other="Hovd" territory="001" type="Asia/Hovd"/>
			<mapZone other="India" territory="001" type="Asia/Calcutta"/>
			<mapZone other="India" territory="LK" type="Asia/Colombo"/>
			<mapZone other="Indian_Ocean" territory="001" type="Indian/Chagos"/>
			<mapZone other="Indochina" territory="001" type="Asia/Saigon"/>
			<mapZone other="Indochina" territory="KH" type="Asia/Phnom_Penh"/>
			<mapZone other="Indochina" territory="LA" type="Asia/Vientiane"/>
			<mapZone other="Indochina" territory="TH" type="Asia/Bangkok"/>
			<mapZone other="Indonesia_Central" territory="001" type="Asia/Makassar"/>
			<mapZone other="Indonesia_Eastern" territory="001" type="Asia/Jayapura"/>
			<mapZone other="Indonesia_Western" territory="001" type="Asia/Jakarta"/>
			<mapZone other="Iran" territory="001" type="Asia/Tehran"/>
			<mapZone other="Irkutsk" territory="001" type="Asia/Irkutsk"/>
			<mapZone other="Irish" territory="001" type="Europe/Dublin"/>
			<mapZone other="Israel" territory="001" type="Asia/Jerusalem"/>
			<mapZone other="Japan" territory="001" type="Asia/Tokyo"/>
			<mapZone other="Kamchatka" territory="001" type="Asia/Kamchatka"/>
			<mapZone other="Karachi" territory="001" type="Asia/Karachi"/>
			<mapZone other="Kashgar" territory="001" type="Asia/Kashgar"/>
			<mapZone other="Kazakhstan_Eastern" territory="001" type="Asia/Almaty"/>
			<mapZone other="Kazakhstan_Western" territory="001" type="Asia/Aqtobe"/>
			<mapZone other="Kizilorda" territory="001" type="Asia/Qyzylorda"/>
			<mapZone other="Korea" territory="001" type="Asia/Seoul"/>
			<mapZone other="Korea" territory="KP" type="Asia/Pyongyang"/>
			<mapZone other="Kosrae" territory="001" type="Pacific/Kosrae"/>
			<mapZone other="Krasnoyarsk" territory="001" type="Asia/Krasnoyarsk"/>
			<mapZone other="Kuybyshev" territory="001" type="Europe/Samara"/>
			<mapZone other="Kwajalein" territory="001" type="Pacific/Kwajalein"/>
			<mapZone other="Kyrgystan" territory="001" type="Asia/Bishkek"/>
			<mapZone other="Lanka" territory="001" type="Asia/Colombo"/>
			<mapZone other="Liberia" territory="001" type="Africa/Monrovia"/>
			<mapZone other="Line_Islands" territory="001" type="Pacific/Kiritimati"/>
			<mapZone other="Long_Shu" territory="001" type="Asia/Chongqing"/>
			<mapZone other="Lord_Howe" territory="001" type="Australia/Lord_Howe"/>
			<mapZone other="Macau" territory="001" type="Asia/Macau"/>
			<mapZone other="Magadan" territory="001" type="Asia/Magadan"/>
			<mapZone other="Malaya" territory="001" type="Asia/Kuala_Lumpur"/>
			<mapZone other="Malaysia" territory="001" type="Asia/Kuching"/>
			<mapZone other="Maldives" territory="001" type="Indian/Maldives"/>
			<mapZone other="Marquesas" territory="001" type="Pacific/Marquesas"/>
			<mapZone other="Marshall_Islands" territory="001" type="Pacific/Majuro"/>
			<mapZone other="Mauritius" territory="001" type="Indian/Mauritius"/>
			<mapZone other="Mawson" territory="001" type="Antarctica/Mawson"/>
			<mapZone other="Mongolia" territory="001" type="Asia/Ulaanbaatar"/>
			<mapZone other="Moscow" territory="001" type="Europe/Moscow"/>
			<mapZone other="Myanmar" territory="001" type="Asia/Rangoon"/>
			<mapZone other="Nauru" territory="001" type="Pacific/Nauru"/>
			<mapZone other="Nepal" territory="001" type="Asia/Katmandu"/>
			<mapZone other="New_Caledonia" territory="001" type="Pacific/Noumea"/>
			<mapZone other="New_Zealand" territory="001" type="Pacific/Auckland"/>
			<mapZone other="New_Zealand" territory="AQ" type="Antarctica/McMurdo"/>
			<mapZone other="Newfoundland" territory="001" type="America/St_Johns"/>
			<mapZone other="Niue" territory="001" type="Pacific/Niue"/>
			<mapZone other="Norfolk" territory="001" type="Pacific/Norfolk"/>
			<mapZone other="North_Mariana" territory="001" type="Pacific/Saipan"/>
			<mapZone other="Noronha" territory="001" type="America/Noronha"/>
			<mapZone other="Novosibirsk" territory="001" type="Asia/Novosibirsk"/>
			<mapZone other="Omsk" territory="001" type="Asia/Omsk"/>
			<mapZone other="Oral" territory="001" type="Asia/Oral"/>
			<mapZone other="Pakistan" territory="001" type="Asia/Karachi"/>
			<mapZone other="Palau" territory="001" type="Pacific/Palau"/>
			<mapZone other="Papua_New_Guinea" territory="001" type="Pacific/Port_Moresby"/>
			<mapZone other="Paraguay" territory="001" type="America/Asuncion"/>
			<mapZone other="Peru" territory="001" type="America/Lima"/>
			<mapZone other="Philippines" territory="001" type="Asia/Manila"/>
			<mapZone other="Phoenix_Islands" territory="001" type="Pacific/Enderbury"/>
			<mapZone other="Pierre_Miquelon" territory="001" type="America/Miquelon"/>
			<mapZone other="Pitcairn" territory="001" type="Pacific/Pitcairn"/>
			<mapZone other="Ponape" territory="001" type="Pacific/Ponape"/>
			<mapZone other="Qyzylorda" territory="001" type="Asia/Qyzylorda"/>
			<mapZone other="Reunion" territory="001" type="Indian/Reunion"/>
			<mapZone other="Rothera" territory="001" type="Antarctica/Rothera"/>
			<mapZone other="Sakhalin" territory="001" type="Asia/Sakhalin"/>
			<mapZone other="Samara" territory="001" type="Europe/Samara"/>
			<mapZone other="Samarkand" territory="001" type="Asia/Samarkand"/>
			<mapZone other="Samoa" territory="001" type="Pacific/Apia"/>
			<mapZone other="Seychelles" territory="001" type="Indian/Mahe"/>
			<mapZone other="Shevchenko" territory="001" type="Asia/Aqtau"/>
			<mapZone other="Singapore" territory="001" type="Asia/Singapore"/>
			<mapZone other="Solomon" territory="001" type="Pacific/Guadalcanal"/>
			<mapZone other="South_Georgia" territory="001" type="Atlantic/South_Georgia"/>
			<mapZone other="Suriname" territory="001" type="America/Paramaribo"/>
			<mapZone other="Sverdlovsk" territory="001" type="Asia/Yekaterinburg"/>
			<mapZone other="Syowa" territory="001" type="Antarctica/Syowa"/>
			<mapZone other="Tahiti" territory="001" type="Pacific/Tahiti"/>
			<mapZone other="Tajikistan" territory="001" type="Asia/Dushanbe"/>
			<mapZone other="Tashkent" territory="001" type="Asia/Tashkent"/>
			<mapZone other="Tbilisi" territory="001" type="Asia/Tbilisi"/>
			<mapZone other="Tokelau" territory="001" type="Pacific/Fakaofo"/>
			<mapZone other="Tonga" territory="001" type="Pacific/Tongatapu"/>
			<mapZone other="Truk" territory="001" type="Pacific/Truk"/>
			<mapZone other="Turkey" territory="001" type="Europe/Istanbul"/>
			<mapZone other="Turkmenistan" territory="001" type="Asia/Ashgabat"/>
			<mapZone other="Tuvalu" territory="001" type="Pacific/Funafuti"/>
			<mapZone other="Uralsk" territory="001" type="Asia/Oral"/>
			<mapZone other="Uruguay" territory="001" type="America/Montevideo"/>
			<mapZone other="Urumqi" territory="001" type="Asia/Urumqi"/>
			<mapZone other="Uzbekistan" territory="001" type="Asia/Tashkent"/>
			<mapZone other="Vanuatu" territory="001" type="Pacific/Efate"/>
			<mapZone other="Venezuela" territory="001" type="America/Caracas"/>
			<mapZone other="Vladivostok" territory="001" type="Asia/Vladivostok"/>
			<mapZone other="Volgograd" territory="001" type="Europe/Volgograd"/>
			<mapZone other="Vostok" territory="001" type="Antarctica/Vostok"/>
			<mapZone other="Wake" territory="001" type="Pacific/Wake"/>
			<mapZone other="Wallis" territory="001" type="Pacific/Wallis"/>
			<mapZone other="Yakutsk" territory="001" type="Asia/Yakutsk"/>
			<mapZone other="Yekaterinburg" territory="001" type="Asia/Yekaterinburg"/>
			<mapZone other="Yerevan" territory="001" type="Asia/Yerevan"/>
			<mapZone other="Yukon" territory="001" type="America/Yakutat"/>
		</mapTimezones>
        <zoneFormatting multizone="001 AQ AR AU BR CA CD CL CN EC ES FM GL ID KI KZ MH MN MX MY NZ PF PT RU UA UM US UZ" tzidVersion="2008d">
            <zoneItem type="Africa/Abidjan" territory="CI"/>
            <zoneItem type="Africa/Accra" territory="GH"/>
            <zoneItem type="Africa/Addis_Ababa" territory="ET"/>
            <zoneItem type="Africa/Algiers" territory="DZ"/>
            <zoneItem type="Africa/Asmera" territory="ER" aliases="Africa/Asmara"/>
            <zoneItem type="Africa/Bamako" territory="ML" aliases="Africa/Timbuktu"/>
            <zoneItem type="Africa/Bangui" territory="CF"/>
            <zoneItem type="Africa/Banjul" territory="GM"/>
            <zoneItem type="Africa/Bissau" territory="GW"/>
            <zoneItem type="Africa/Blantyre" territory="MW"/>
            <zoneItem type="Africa/Brazzaville" territory="CG"/>
            <zoneItem type="Africa/Bujumbura" territory="BI"/>
            <zoneItem type="Africa/Cairo" territory="EG" aliases="Egypt"/>
            <zoneItem type="Africa/Casablanca" territory="MA"/>
            <zoneItem type="Africa/Ceuta" territory="ES"/>
            <zoneItem type="Africa/Conakry" territory="GN"/>
            <zoneItem type="Africa/Dakar" territory="SN"/>
            <zoneItem type="Africa/Dar_es_Salaam" territory="TZ"/>
            <zoneItem type="Africa/Djibouti" territory="DJ"/>
            <zoneItem type="Africa/Douala" territory="CM"/>
            <zoneItem type="Africa/El_Aaiun" territory="EH"/>
            <zoneItem type="Africa/Freetown" territory="SL"/>
            <zoneItem type="Africa/Gaborone" territory="BW"/>
            <zoneItem type="Africa/Harare" territory="ZW"/>
            <zoneItem type="Africa/Johannesburg" territory="ZA"/>
            <zoneItem type="Africa/Kampala" territory="UG"/>
            <zoneItem type="Africa/Khartoum" territory="SD"/>
            <zoneItem type="Africa/Kigali" territory="RW"/>
            <zoneItem type="Africa/Kinshasa" territory="CD"/>
            <zoneItem type="Africa/Lagos" territory="NG"/>
            <zoneItem type="Africa/Libreville" territory="GA"/>
            <zoneItem type="Africa/Lome" territory="TG"/>
            <zoneItem type="Africa/Luanda" territory="AO"/>
            <zoneItem type="Africa/Lubumbashi" territory="CD"/>
            <zoneItem type="Africa/Lusaka" territory="ZM"/>
            <zoneItem type="Africa/Malabo" territory="GQ"/>
            <zoneItem type="Africa/Maputo" territory="MZ"/>
            <zoneItem type="Africa/Maseru" territory="LS"/>
            <zoneItem type="Africa/Mbabane" territory="SZ"/>
            <zoneItem type="Africa/Mogadishu" territory="SO"/>
            <zoneItem type="Africa/Monrovia" territory="LR"/>
            <zoneItem type="Africa/Nairobi" territory="KE"/>
            <zoneItem type="Africa/Ndjamena" territory="TD"/>
            <zoneItem type="Africa/Niamey" territory="NE"/>
            <zoneItem type="Africa/Nouakchott" territory="MR"/>
            <zoneItem type="Africa/Ouagadougou" territory="BF"/>
            <zoneItem type="Africa/Porto-Novo" territory="BJ"/>
            <zoneItem type="Africa/Sao_Tome" territory="ST"/>
            <zoneItem type="Africa/Tripoli" territory="LY" aliases="Libya"/>
            <zoneItem type="Africa/Tunis" territory="TN"/>
            <zoneItem type="Africa/Windhoek" territory="NA"/>
            <zoneItem type="America/Adak" territory="US" aliases="America/Atka US/Aleutian"/>
            <zoneItem type="America/Anchorage" territory="US" aliases="SystemV/YST9YDT US/Alaska"/>
            <zoneItem type="America/Anguilla" territory="AI"/>
            <zoneItem type="America/Antigua" territory="AG"/>
            <zoneItem type="America/Araguaina" territory="BR"/>
            <zoneItem type="America/Argentina/La_Rioja" territory="AR"/>
            <zoneItem type="America/Argentina/Rio_Gallegos" territory="AR"/>
            <zoneItem type="America/Argentina/San_Juan" territory="AR"/>
            <zoneItem type="America/Argentina/San_Luis" territory="AR"/>
            <zoneItem type="America/Argentina/Tucuman" territory="AR"/>
            <zoneItem type="America/Argentina/Ushuaia" territory="AR"/>
            <zoneItem type="America/Aruba" territory="AW"/>
            <zoneItem type="America/Asuncion" territory="PY"/>
            <zoneItem type="America/Bahia" territory="BR"/>
            <zoneItem type="America/Barbados" territory="BB"/>
            <zoneItem type="America/Belem" territory="BR"/>
            <zoneItem type="America/Belize" territory="BZ"/>
            <zoneItem type="America/Blanc-Sablon" territory="CA"/>
            <zoneItem type="America/Boa_Vista" territory="BR"/>
            <zoneItem type="America/Bogota" territory="CO"/>
            <zoneItem type="America/Boise" territory="US"/>
            <zoneItem type="America/Buenos_Aires" territory="AR" aliases="America/Argentina/Buenos_Aires"/>
            <zoneItem type="America/Cambridge_Bay" territory="CA"/>
            <zoneItem type="America/Campo_Grande" territory="BR"/>
            <zoneItem type="America/Cancun" territory="MX"/>
            <zoneItem type="America/Caracas" territory="VE"/>
            <zoneItem type="America/Catamarca" territory="AR" aliases="America/Argentina/Catamarca America/Argentina/ComodRivadavia"/>
            <zoneItem type="America/Cayenne" territory="GF"/>
            <zoneItem type="America/Cayman" territory="KY"/>
            <zoneItem type="America/Chicago" territory="US" aliases="CST6CDT SystemV/CST6CDT US/Central"/>
            <zoneItem type="America/Chihuahua" territory="MX"/>
            <zoneItem type="America/Coral_Harbour" territory="CA" aliases="America/Atikokan"/>
            <zoneItem type="America/Cordoba" territory="AR" aliases="America/Argentina/Cordoba America/Rosario"/>
            <zoneItem type="America/Costa_Rica" territory="CR"/>
            <zoneItem type="America/Cuiaba" territory="BR"/>
            <zoneItem type="America/Curacao" territory="AN"/>
            <zoneItem type="America/Danmarkshavn" territory="GL"/>
            <zoneItem type="America/Dawson" territory="CA"/>
            <zoneItem type="America/Dawson_Creek" territory="CA"/>
            <zoneItem type="America/Denver" territory="US" aliases="MST7MDT SystemV/MST7MDT US/Mountain"/>
            <zoneItem type="America/Detroit" territory="US" aliases="US/Michigan"/>
            <zoneItem type="America/Dominica" territory="DM"/>
            <zoneItem type="America/Edmonton" territory="CA" aliases="Canada/Mountain"/>
            <zoneItem type="America/Eirunepe" territory="BR"/>
            <zoneItem type="America/El_Salvador" territory="SV"/>
            <zoneItem type="America/Fortaleza" territory="BR"/>
            <zoneItem type="America/Glace_Bay" territory="CA"/>
            <zoneItem type="America/Godthab" territory="GL"/>
            <zoneItem type="America/Goose_Bay" territory="CA"/>
            <zoneItem type="America/Grand_Turk" territory="TC"/>
            <zoneItem type="America/Grenada" territory="GD"/>
            <zoneItem type="America/Guadeloupe" territory="GP"/>
            <zoneItem type="America/Guatemala" territory="GT"/>
            <zoneItem type="America/Guayaquil" territory="EC"/>
            <zoneItem type="America/Guyana" territory="GY"/>
            <zoneItem type="America/Halifax" territory="CA" aliases="Canada/Atlantic SystemV/AST4ADT"/>
            <zoneItem type="America/Havana" territory="CU" aliases="Cuba"/>
            <zoneItem type="America/Hermosillo" territory="MX"/>
            <zoneItem type="America/Indiana/Knox" territory="US" aliases="America/Knox_IN US/Indiana-Starke"/>
            <zoneItem type="America/Indiana/Marengo" territory="US"/>
            <zoneItem type="America/Indiana/Petersburg" territory="US"/>
            <zoneItem type="America/Indiana/Tell_City" territory="US"/>
            <zoneItem type="America/Indiana/Vevay" territory="US"/>
            <zoneItem type="America/Indiana/Vincennes" territory="US"/>
            <zoneItem type="America/Indiana/Winamac" territory="US"/>
            <zoneItem type="America/Indianapolis" territory="US" aliases="America/Fort_Wayne America/Indiana/Indianapolis US/East-Indiana"/>
            <zoneItem type="America/Inuvik" territory="CA"/>
            <zoneItem type="America/Iqaluit" territory="CA"/>
            <zoneItem type="America/Jamaica" territory="JM" aliases="Jamaica"/>
            <zoneItem type="America/Jujuy" territory="AR" aliases="America/Argentina/Jujuy"/>
            <zoneItem type="America/Juneau" territory="US"/>
            <zoneItem type="America/Kentucky/Monticello" territory="US"/>
            <zoneItem type="America/La_Paz" territory="BO"/>
            <zoneItem type="America/Lima" territory="PE"/>
            <zoneItem type="America/Los_Angeles" territory="US" aliases="PST8PDT SystemV/PST8PDT US/Pacific US/Pacific-New"/>
            <zoneItem type="America/Louisville" territory="US" aliases="America/Kentucky/Louisville"/>
            <zoneItem type="America/Maceio" territory="BR"/>
            <zoneItem type="America/Managua" territory="NI"/>
            <zoneItem type="America/Manaus" territory="BR" aliases="Brazil/West"/>
            <zoneItem type="America/Marigot" territory="MF"/>
            <zoneItem type="America/Martinique" territory="MQ"/>
            <zoneItem type="America/Mazatlan" territory="MX" aliases="Mexico/BajaSur"/>
            <zoneItem type="America/Mendoza" territory="AR" aliases="America/Argentina/Mendoza"/>
            <zoneItem type="America/Menominee" territory="US"/>
            <zoneItem type="America/Merida" territory="MX"/>
            <zoneItem type="America/Mexico_City" territory="MX" aliases="Mexico/General"/>
            <zoneItem type="America/Miquelon" territory="PM"/>
            <zoneItem type="America/Moncton" territory="CA"/>
            <zoneItem type="America/Monterrey" territory="MX"/>
            <zoneItem type="America/Montevideo" territory="UY"/>
            <zoneItem type="America/Montreal" territory="CA"/>
            <zoneItem type="America/Montserrat" territory="MS"/>
            <zoneItem type="America/Nassau" territory="BS"/>
            <zoneItem type="America/New_York" territory="US" aliases="EST5EDT SystemV/EST5EDT US/Eastern"/>
            <zoneItem type="America/Nipigon" territory="CA"/>
            <zoneItem type="America/Nome" territory="US"/>
            <zoneItem type="America/Noronha" territory="BR" aliases="Brazil/DeNoronha"/>
            <zoneItem type="America/North_Dakota/Center" territory="US"/>
            <zoneItem type="America/North_Dakota/New_Salem" territory="US"/>
            <zoneItem type="America/Panama" territory="PA"/>
            <zoneItem type="America/Pangnirtung" territory="CA"/>
            <zoneItem type="America/Paramaribo" territory="SR"/>
            <zoneItem type="America/Phoenix" territory="US" aliases="US/Arizona"/>
            <zoneItem type="America/Port_of_Spain" territory="TT"/>
            <zoneItem type="America/Port-au-Prince" territory="HT"/>
            <zoneItem type="America/Porto_Velho" territory="BR"/>
            <zoneItem type="America/Puerto_Rico" territory="PR"/>
            <zoneItem type="America/Rainy_River" territory="CA"/>
            <zoneItem type="America/Rankin_Inlet" territory="CA"/>
            <zoneItem type="America/Recife" territory="BR"/>
            <zoneItem type="America/Regina" territory="CA" aliases="Canada/East-Saskatchewan Canada/Saskatchewan"/>
            <zoneItem type="America/Resolute" territory="CA"/>
            <zoneItem type="America/Rio_Branco" territory="BR" aliases="America/Porto_Acre Brazil/Acre"/>
            <zoneItem type="America/Santarem" territory="BR"/>
            <zoneItem type="America/Santiago" territory="CL" aliases="Chile/Continental"/>
            <zoneItem type="America/Santo_Domingo" territory="DO"/>
            <zoneItem type="America/Sao_Paulo" territory="BR" aliases="Brazil/East"/>
            <zoneItem type="America/Scoresbysund" territory="GL"/>
            <zoneItem type="America/Shiprock" territory="US" aliases="Navajo"/>
            <zoneItem type="America/St_Barthelemy" territory="BL"/>
            <zoneItem type="America/St_Johns" territory="CA" aliases="Canada/Newfoundland"/>
            <zoneItem type="America/St_Kitts" territory="KN"/>
            <zoneItem type="America/St_Lucia" territory="LC"/>
            <zoneItem type="America/St_Thomas" territory="VI" aliases="America/Virgin"/>
            <zoneItem type="America/St_Vincent" territory="VC"/>
            <zoneItem type="America/Swift_Current" territory="CA"/>
            <zoneItem type="America/Tegucigalpa" territory="HN"/>
            <zoneItem type="America/Thule" territory="GL"/>
            <zoneItem type="America/Thunder_Bay" territory="CA"/>
            <zoneItem type="America/Tijuana" territory="MX" aliases="America/Ensenada Mexico/BajaNorte"/>
            <zoneItem type="America/Toronto" territory="CA" aliases="Canada/Eastern"/>
            <zoneItem type="America/Tortola" territory="VG"/>
            <zoneItem type="America/Vancouver" territory="CA" aliases="Canada/Pacific"/>
            <zoneItem type="America/Whitehorse" territory="CA" aliases="Canada/Yukon"/>
            <zoneItem type="America/Winnipeg" territory="CA" aliases="Canada/Central"/>
            <zoneItem type="America/Yakutat" territory="US"/>
            <zoneItem type="America/Yellowknife" territory="CA"/>
            <zoneItem type="Antarctica/Casey" territory="AQ"/>
            <zoneItem type="Antarctica/Davis" territory="AQ"/>
            <zoneItem type="Antarctica/DumontDUrville" territory="AQ"/>
            <zoneItem type="Antarctica/Mawson" territory="AQ"/>
            <zoneItem type="Antarctica/McMurdo" territory="AQ"/>
            <zoneItem type="Antarctica/Palmer" territory="AQ"/>
            <zoneItem type="Antarctica/Rothera" territory="AQ"/>
            <zoneItem type="Antarctica/South_Pole" territory="AQ"/>
            <zoneItem type="Antarctica/Syowa" territory="AQ"/>
            <zoneItem type="Antarctica/Vostok" territory="AQ"/>
            <zoneItem type="Arctic/Longyearbyen" territory="SJ" aliases="Atlantic/Jan_Mayen"/>
            <zoneItem type="Asia/Aden" territory="YE"/>
            <zoneItem type="Asia/Almaty" territory="KZ"/>
            <zoneItem type="Asia/Amman" territory="JO"/>
            <zoneItem type="Asia/Anadyr" territory="RU"/>
            <zoneItem type="Asia/Aqtau" territory="KZ"/>
            <zoneItem type="Asia/Aqtobe" territory="KZ"/>
            <zoneItem type="Asia/Ashgabat" territory="TM" aliases="Asia/Ashkhabad"/>
            <zoneItem type="Asia/Baghdad" territory="IQ"/>
            <zoneItem type="Asia/Bahrain" territory="BH"/>
            <zoneItem type="Asia/Baku" territory="AZ"/>
            <zoneItem type="Asia/Bangkok" territory="TH"/>
            <zoneItem type="Asia/Beirut" territory="LB"/>
            <zoneItem type="Asia/Bishkek" territory="KG"/>
            <zoneItem type="Asia/Brunei" territory="BN"/>
            <zoneItem type="Asia/Calcutta" territory="IN" aliases="Asia/Kolkata"/>
            <zoneItem type="Asia/Choibalsan" territory="MN"/>
            <zoneItem type="Asia/Chongqing" territory="CN" aliases="Asia/Chungking"/>
            <zoneItem type="Asia/Colombo" territory="LK"/>
            <zoneItem type="Asia/Damascus" territory="SY"/>
            <zoneItem type="Asia/Dhaka" territory="BD" aliases="Asia/Dacca"/>
            <zoneItem type="Asia/Dili" territory="TL"/>
            <zoneItem type="Asia/Dubai" territory="AE"/>
            <zoneItem type="Asia/Dushanbe" territory="TJ"/>
            <zoneItem type="Asia/Gaza" territory="PS"/>
            <zoneItem type="Asia/Harbin" territory="CN"/>
            <zoneItem type="Asia/Hong_Kong" territory="HK" aliases="Hongkong"/>
            <zoneItem type="Asia/Hovd" territory="MN"/>
            <zoneItem type="Asia/Irkutsk" territory="RU"/>
            <zoneItem type="Asia/Jakarta" territory="ID"/>
            <zoneItem type="Asia/Jayapura" territory="ID"/>
            <zoneItem type="Asia/Jerusalem" territory="IL" aliases="Asia/Tel_Aviv Israel"/>
            <zoneItem type="Asia/Kabul" territory="AF"/>
            <zoneItem type="Asia/Kamchatka" territory="RU"/>
            <zoneItem type="Asia/Karachi" territory="PK"/>
            <zoneItem type="Asia/Kashgar" territory="CN"/>
            <zoneItem type="Asia/Katmandu" territory="NP"/>
            <zoneItem type="Asia/Krasnoyarsk" territory="RU"/>
            <zoneItem type="Asia/Kuala_Lumpur" territory="MY"/>
            <zoneItem type="Asia/Kuching" territory="MY"/>
            <zoneItem type="Asia/Kuwait" territory="KW"/>
            <zoneItem type="Asia/Macau" territory="MO" aliases="Asia/Macao"/>
            <zoneItem type="Asia/Magadan" territory="RU"/>
            <zoneItem type="Asia/Makassar" territory="ID" aliases="Asia/Ujung_Pandang"/>
            <zoneItem type="Asia/Manila" territory="PH"/>
            <zoneItem type="Asia/Muscat" territory="OM"/>
            <zoneItem type="Asia/Nicosia" territory="CY" aliases="Europe/Nicosia"/>
            <zoneItem type="Asia/Novosibirsk" territory="RU"/>
            <zoneItem type="Asia/Omsk" territory="RU"/>
            <zoneItem type="Asia/Oral" territory="KZ"/>
            <zoneItem type="Asia/Phnom_Penh" territory="KH"/>
            <zoneItem type="Asia/Pontianak" territory="ID"/>
            <zoneItem type="Asia/Pyongyang" territory="KP"/>
            <zoneItem type="Asia/Qatar" territory="QA"/>
            <zoneItem type="Asia/Qyzylorda" territory="KZ"/>
            <zoneItem type="Asia/Rangoon" territory="MM"/>
            <zoneItem type="Asia/Riyadh" territory="SA"/>
            <zoneItem type="Asia/Saigon" territory="VN" aliases="Asia/Ho_Chi_Minh"/>
            <zoneItem type="Asia/Sakhalin" territory="RU"/>
            <zoneItem type="Asia/Samarkand" territory="UZ"/>
            <zoneItem type="Asia/Seoul" territory="KR" aliases="ROK"/>
            <zoneItem type="Asia/Shanghai" territory="CN" aliases="PRC"/>
            <zoneItem type="Asia/Singapore" territory="SG" aliases="Singapore"/>
            <zoneItem type="Asia/Taipei" territory="TW" aliases="ROC"/>
            <zoneItem type="Asia/Tashkent" territory="UZ"/>
            <zoneItem type="Asia/Tbilisi" territory="GE"/>
            <zoneItem type="Asia/Tehran" territory="IR" aliases="Iran"/>
            <zoneItem type="Asia/Thimphu" territory="BT" aliases="Asia/Thimbu"/>
            <zoneItem type="Asia/Tokyo" territory="JP" aliases="Japan"/>
            <zoneItem type="Asia/Ulaanbaatar" territory="MN" aliases="Asia/Ulan_Bator"/>
            <zoneItem type="Asia/Urumqi" territory="CN"/>
            <zoneItem type="Asia/Vientiane" territory="LA"/>
            <zoneItem type="Asia/Vladivostok" territory="RU"/>
            <zoneItem type="Asia/Yakutsk" territory="RU"/>
            <zoneItem type="Asia/Yekaterinburg" territory="RU"/>
            <zoneItem type="Asia/Yerevan" territory="AM"/>
            <zoneItem type="Atlantic/Azores" territory="PT"/>
            <zoneItem type="Atlantic/Bermuda" territory="BM"/>
            <zoneItem type="Atlantic/Canary" territory="ES"/>
            <zoneItem type="Atlantic/Cape_Verde" territory="CV"/>
            <zoneItem type="Atlantic/Faeroe" territory="FO" aliases="Atlantic/Faroe"/>
            <zoneItem type="Atlantic/Madeira" territory="PT"/>
            <zoneItem type="Atlantic/Reykjavik" territory="IS" aliases="Iceland"/>
            <zoneItem type="Atlantic/South_Georgia" territory="GS"/>
            <zoneItem type="Atlantic/St_Helena" territory="SH"/>
            <zoneItem type="Atlantic/Stanley" territory="FK"/>
            <zoneItem type="Australia/Adelaide" territory="AU" aliases="Australia/South"/>
            <zoneItem type="Australia/Brisbane" territory="AU" aliases="Australia/Queensland"/>
            <zoneItem type="Australia/Broken_Hill" territory="AU" aliases="Australia/Yancowinna"/>
            <zoneItem type="Australia/Currie" territory="AU"/>
            <zoneItem type="Australia/Darwin" territory="AU" aliases="Australia/North"/>
            <zoneItem type="Australia/Eucla" territory="AU"/>
            <zoneItem type="Australia/Hobart" territory="AU" aliases="Australia/Tasmania"/>
            <zoneItem type="Australia/Lindeman" territory="AU"/>
            <zoneItem type="Australia/Lord_Howe" territory="AU" aliases="Australia/LHI"/>
            <zoneItem type="Australia/Melbourne" territory="AU" aliases="Australia/Victoria"/>
            <zoneItem type="Australia/Perth" territory="AU" aliases="Australia/West"/>
            <zoneItem type="Australia/Sydney" territory="AU" aliases="Australia/ACT Australia/Canberra Australia/NSW"/>
            <zoneItem type="Etc/GMT" territory="001" aliases="Etc/GMT+0 Etc/GMT-0 Etc/GMT0 Etc/Greenwich Etc/UCT Etc/UTC Etc/Universal Etc/Zulu GMT GMT+0 GMT-0 GMT0 Greenwich UCT UTC Universal Zulu"/>
            <zoneItem type="Etc/GMT-1" territory="001"/>
            <zoneItem type="Etc/GMT-2" territory="001"/>
            <zoneItem type="Etc/GMT-3" territory="001"/>
            <zoneItem type="Etc/GMT-4" territory="001"/>
            <zoneItem type="Etc/GMT-5" territory="001"/>
            <zoneItem type="Etc/GMT-6" territory="001"/>
            <zoneItem type="Etc/GMT-7" territory="001"/>
            <zoneItem type="Etc/GMT-8" territory="001"/>
            <zoneItem type="Etc/GMT-9" territory="001"/>
            <zoneItem type="Etc/GMT-10" territory="001"/>
            <zoneItem type="Etc/GMT-11" territory="001"/>
            <zoneItem type="Etc/GMT-12" territory="001"/>
            <zoneItem type="Etc/GMT-13" territory="001"/>
            <zoneItem type="Etc/GMT-14" territory="001"/>
            <zoneItem type="Etc/GMT+1" territory="001"/>
            <zoneItem type="Etc/GMT+2" territory="001"/>
            <zoneItem type="Etc/GMT+3" territory="001"/>
            <zoneItem type="Etc/GMT+4" territory="001" aliases="SystemV/AST4"/>
            <zoneItem type="Etc/GMT+5" territory="001" aliases="EST SystemV/EST5"/>
            <zoneItem type="Etc/GMT+6" territory="001" aliases="SystemV/CST6"/>
            <zoneItem type="Etc/GMT+7" territory="001" aliases="MST SystemV/MST7"/>
            <zoneItem type="Etc/GMT+8" territory="001" aliases="SystemV/PST8"/>
            <zoneItem type="Etc/GMT+9" territory="001" aliases="SystemV/YST9"/>
            <zoneItem type="Etc/GMT+10" territory="001" aliases="HST SystemV/HST10"/>
            <zoneItem type="Etc/GMT+11" territory="001"/>
            <zoneItem type="Etc/GMT+12" territory="001"/>
            <zoneItem type="Etc/Unknown" territory="001"/>
            <zoneItem type="Europe/Amsterdam" territory="NL"/>
            <zoneItem type="Europe/Andorra" territory="AD"/>
            <zoneItem type="Europe/Athens" territory="GR"/>
            <zoneItem type="Europe/Belgrade" territory="RS"/>
            <zoneItem type="Europe/Berlin" territory="DE"/>
            <zoneItem type="Europe/Bratislava" territory="SK"/>
            <zoneItem type="Europe/Brussels" territory="BE"/>
            <zoneItem type="Europe/Bucharest" territory="RO"/>
            <zoneItem type="Europe/Budapest" territory="HU"/>
            <zoneItem type="Europe/Chisinau" territory="MD" aliases="Europe/Tiraspol"/>
            <zoneItem type="Europe/Copenhagen" territory="DK"/>
            <zoneItem type="Europe/Dublin" territory="IE" aliases="Eire"/>
            <zoneItem type="Europe/Gibraltar" territory="GI"/>
            <zoneItem type="Europe/Guernsey" territory="GG"/>
            <zoneItem type="Europe/Helsinki" territory="FI"/>
            <zoneItem type="Europe/Isle_of_Man" territory="IM"/>
            <zoneItem type="Europe/Istanbul" territory="TR" aliases="Asia/Istanbul Turkey"/>
            <zoneItem type="Europe/Jersey" territory="JE"/>
            <zoneItem type="Europe/Kaliningrad" territory="RU"/>
            <zoneItem type="Europe/Kiev" territory="UA"/>
            <zoneItem type="Europe/Lisbon" territory="PT" aliases="Portugal"/>
            <zoneItem type="Europe/Ljubljana" territory="SI"/>
            <zoneItem type="Europe/London" territory="GB" aliases="Europe/Belfast GB GB-Eire"/>
            <zoneItem type="Europe/Luxembourg" territory="LU"/>
            <zoneItem type="Europe/Madrid" territory="ES"/>
            <zoneItem type="Europe/Malta" territory="MT"/>
            <zoneItem type="Europe/Mariehamn" territory="AX"/>
            <zoneItem type="Europe/Minsk" territory="BY"/>
            <zoneItem type="Europe/Monaco" territory="MC"/>
            <zoneItem type="Europe/Moscow" territory="RU" aliases="W-SU"/>
            <zoneItem type="Europe/Oslo" territory="NO"/>
            <zoneItem type="Europe/Paris" territory="FR"/>
            <zoneItem type="Europe/Podgorica" territory="ME"/>
            <zoneItem type="Europe/Prague" territory="CZ"/>
            <zoneItem type="Europe/Riga" territory="LV"/>
            <zoneItem type="Europe/Rome" territory="IT"/>
            <zoneItem type="Europe/Samara" territory="RU"/>
            <zoneItem type="Europe/San_Marino" territory="SM"/>
            <zoneItem type="Europe/Sarajevo" territory="BA"/>
            <zoneItem type="Europe/Simferopol" territory="UA"/>
            <zoneItem type="Europe/Skopje" territory="MK"/>
            <zoneItem type="Europe/Sofia" territory="BG"/>
            <zoneItem type="Europe/Stockholm" territory="SE"/>
            <zoneItem type="Europe/Tallinn" territory="EE"/>
            <zoneItem type="Europe/Tirane" territory="AL"/>
            <zoneItem type="Europe/Uzhgorod" territory="UA"/>
            <zoneItem type="Europe/Vaduz" territory="LI"/>
            <zoneItem type="Europe/Vatican" territory="VA"/>
            <zoneItem type="Europe/Vienna" territory="AT"/>
            <zoneItem type="Europe/Vilnius" territory="LT"/>
            <zoneItem type="Europe/Volgograd" territory="RU"/>
            <zoneItem type="Europe/Warsaw" territory="PL" aliases="Poland"/>
            <zoneItem type="Europe/Zagreb" territory="HR"/>
            <zoneItem type="Europe/Zaporozhye" territory="UA"/>
            <zoneItem type="Europe/Zurich" territory="CH"/>
            <zoneItem type="Indian/Antananarivo" territory="MG"/>
            <zoneItem type="Indian/Chagos" territory="IO"/>
            <zoneItem type="Indian/Christmas" territory="CX"/>
            <zoneItem type="Indian/Cocos" territory="CC"/>
            <zoneItem type="Indian/Comoro" territory="KM"/>
            <zoneItem type="Indian/Kerguelen" territory="TF"/>
            <zoneItem type="Indian/Mahe" territory="SC"/>
            <zoneItem type="Indian/Maldives" territory="MV"/>
            <zoneItem type="Indian/Mauritius" territory="MU"/>
            <zoneItem type="Indian/Mayotte" territory="YT"/>
            <zoneItem type="Indian/Reunion" territory="RE"/>
            <zoneItem type="Pacific/Apia" territory="WS"/>
            <zoneItem type="Pacific/Auckland" territory="NZ" aliases="NZ"/>
            <zoneItem type="Pacific/Chatham" territory="NZ" aliases="NZ-CHAT"/>
            <zoneItem type="Pacific/Easter" territory="CL" aliases="Chile/EasterIsland"/>
            <zoneItem type="Pacific/Efate" territory="VU"/>
            <zoneItem type="Pacific/Enderbury" territory="KI"/>
            <zoneItem type="Pacific/Fakaofo" territory="TK"/>
            <zoneItem type="Pacific/Fiji" territory="FJ"/>
            <zoneItem type="Pacific/Funafuti" territory="TV"/>
            <zoneItem type="Pacific/Galapagos" territory="EC"/>
            <zoneItem type="Pacific/Gambier" territory="PF"/>
            <zoneItem type="Pacific/Guadalcanal" territory="SB"/>
            <zoneItem type="Pacific/Guam" territory="GU"/>
            <zoneItem type="Pacific/Honolulu" territory="US" aliases="US/Hawaii"/>
            <zoneItem type="Pacific/Johnston" territory="UM"/>
            <zoneItem type="Pacific/Kiritimati" territory="KI"/>
            <zoneItem type="Pacific/Kosrae" territory="FM"/>
            <zoneItem type="Pacific/Kwajalein" territory="MH" aliases="Kwajalein"/>
            <zoneItem type="Pacific/Majuro" territory="MH"/>
            <zoneItem type="Pacific/Marquesas" territory="PF"/>
            <zoneItem type="Pacific/Midway" territory="UM"/>
            <zoneItem type="Pacific/Nauru" territory="NR"/>
            <zoneItem type="Pacific/Niue" territory="NU"/>
            <zoneItem type="Pacific/Norfolk" territory="NF"/>
            <zoneItem type="Pacific/Noumea" territory="NC"/>
            <zoneItem type="Pacific/Pago_Pago" territory="AS" aliases="Pacific/Samoa US/Samoa"/>
            <zoneItem type="Pacific/Palau" territory="PW"/>
            <zoneItem type="Pacific/Pitcairn" territory="PN"/>
            <zoneItem type="Pacific/Ponape" territory="FM"/>
            <zoneItem type="Pacific/Port_Moresby" territory="PG"/>
            <zoneItem type="Pacific/Rarotonga" territory="CK"/>
            <zoneItem type="Pacific/Saipan" territory="MP"/>
            <zoneItem type="Pacific/Tahiti" territory="PF"/>
            <zoneItem type="Pacific/Tarawa" territory="KI"/>
            <zoneItem type="Pacific/Tongatapu" territory="TO"/>
            <zoneItem type="Pacific/Truk" territory="FM" aliases="Pacific/Yap"/>
            <zoneItem type="Pacific/Wake" territory="UM"/>
            <zoneItem type="Pacific/Wallis" territory="WF"/>
        </zoneFormatting>
	</timezoneData>
	<codeMappings>
		<territoryCodes type="AA" numeric="958" alpha3="AAA"/>
		<territoryCodes type="AD" numeric="020" alpha3="AND" fips10="AN"/>
		<territoryCodes type="AE" numeric="784" alpha3="ARE"/>
		<territoryCodes type="AF" numeric="004" alpha3="AFG"/>
		<territoryCodes type="AG" numeric="028" alpha3="ATG" fips10="AC"/>
		<territoryCodes type="AI" numeric="660" alpha3="AIA" fips10="AV"/>
		<territoryCodes type="AL" numeric="008" alpha3="ALB"/>
		<territoryCodes type="AM" numeric="051" alpha3="ARM"/>
		<territoryCodes type="AN" numeric="530" alpha3="ANT" fips10="NT"/>
		<territoryCodes type="AO" numeric="024" alpha3="AGO"/>
		<territoryCodes type="AQ" numeric="010" alpha3="ATA" fips10="AY"/>
		<territoryCodes type="AR" numeric="032" alpha3="ARG"/>
		<territoryCodes type="AS" numeric="016" alpha3="ASM" fips10="AQ"/>
		<territoryCodes type="AT" numeric="040" alpha3="AUT" fips10="AU"/>
		<territoryCodes type="AU" numeric="036" alpha3="AUS" fips10="AS"/>
		<territoryCodes type="AW" numeric="533" alpha3="ABW" fips10="AA"/>
		<territoryCodes type="AX" numeric="248" alpha3="ALA"/>
		<territoryCodes type="AZ" numeric="031" alpha3="AZE" fips10="AJ"/>
		<territoryCodes type="BA" numeric="070" alpha3="BIH" fips10="BK"/>
		<territoryCodes type="BB" numeric="052" alpha3="BRB"/>
		<territoryCodes type="BD" numeric="050" alpha3="BGD" fips10="BG"/>
		<territoryCodes type="BE" numeric="056" alpha3="BEL"/>
		<territoryCodes type="BF" numeric="854" alpha3="BFA" fips10="UV"/>
		<territoryCodes type="BG" numeric="100" alpha3="BGR" fips10="BU"/>
		<territoryCodes type="BH" numeric="048" alpha3="BHR" fips10="BA"/>
		<territoryCodes type="BI" numeric="108" alpha3="BDI" fips10="BY"/>
		<territoryCodes type="BJ" numeric="204" alpha3="BEN" fips10="BN"/>
		<territoryCodes type="BL" numeric="652" alpha3="BLM"/>
		<territoryCodes type="BM" numeric="060" alpha3="BMU" fips10="BD"/>
		<territoryCodes type="BN" numeric="096" alpha3="BRN" fips10="BX"/>
		<territoryCodes type="BO" numeric="068" alpha3="BOL" fips10="BL"/>
		<territoryCodes type="BR" numeric="076" alpha3="BRA"/>
		<territoryCodes type="BS" numeric="044" alpha3="BHS" fips10="BF"/>
		<territoryCodes type="BT" numeric="064" alpha3="BTN"/>
		<territoryCodes type="BU" numeric="104" alpha3="BUR"/>
		<territoryCodes type="BV" numeric="074" alpha3="BVT"/>
		<territoryCodes type="BW" numeric="072" alpha3="BWA" fips10="BC"/>
		<territoryCodes type="BY" numeric="112" alpha3="BLR" fips10="BO"/>
		<territoryCodes type="BZ" numeric="084" alpha3="BLZ" fips10="BH"/>
		<territoryCodes type="CA" numeric="124" alpha3="CAN"/>
		<territoryCodes type="CC" numeric="166" alpha3="CCK" fips10="CK"/>
		<territoryCodes type="CD" numeric="180" alpha3="COD" fips10="CG"/>
		<territoryCodes type="CF" numeric="140" alpha3="CAF" fips10="CT"/>
		<territoryCodes type="CG" numeric="178" alpha3="COG" fips10="CF"/>
		<territoryCodes type="CH" numeric="756" alpha3="CHE" fips10="SZ"/>
		<territoryCodes type="CI" numeric="384" alpha3="CIV" fips10="IV"/>
		<territoryCodes type="CK" numeric="184" alpha3="COK" fips10="CW"/>
		<territoryCodes type="CL" numeric="152" alpha3="CHL" fips10="CI"/>
		<territoryCodes type="CM" numeric="120" alpha3="CMR"/>
		<territoryCodes type="CN" numeric="156" alpha3="CHN" fips10="CH"/>
		<territoryCodes type="CO" numeric="170" alpha3="COL"/>
		<territoryCodes type="CR" numeric="188" alpha3="CRI" fips10="CS"/>
		<territoryCodes type="CS" numeric="891" alpha3="SCG" fips10="YI" internet="CS YU"/>
		<territoryCodes type="CU" numeric="192" alpha3="CUB"/>
		<territoryCodes type="CV" numeric="132" alpha3="CPV"/>
		<territoryCodes type="CX" numeric="162" alpha3="CXR" fips10="KT"/>
		<territoryCodes type="CY" numeric="196" alpha3="CYP"/>
		<territoryCodes type="CZ" numeric="203" alpha3="CZE" fips10="EZ"/>
		<territoryCodes type="DD" numeric="278" alpha3="DDR"/>
		<territoryCodes type="DE" numeric="276" alpha3="DEU" fips10="GM"/>
		<territoryCodes type="DJ" numeric="262" alpha3="DJI"/>
		<territoryCodes type="DK" numeric="208" alpha3="DNK" fips10="DA"/>
		<territoryCodes type="DM" numeric="212" alpha3="DMA" fips10="DO"/>
		<territoryCodes type="DO" numeric="214" alpha3="DOM" fips10="DR"/>
		<territoryCodes type="DZ" numeric="012" alpha3="DZA" fips10="AG"/>
		<territoryCodes type="EC" numeric="218" alpha3="ECU"/>
		<territoryCodes type="EE" numeric="233" alpha3="EST" fips10="EN"/>
		<territoryCodes type="EG" numeric="818" alpha3="EGY"/>
		<territoryCodes type="EH" numeric="732" alpha3="ESH" fips10="WI"/>
		<territoryCodes type="ER" numeric="232" alpha3="ERI"/>
		<territoryCodes type="ES" numeric="724" alpha3="ESP" fips10="SP"/>
		<territoryCodes type="ET" numeric="231" alpha3="ETH"/>
		<territoryCodes type="FI" numeric="246" alpha3="FIN"/>
		<territoryCodes type="FJ" numeric="242" alpha3="FJI"/>
		<territoryCodes type="FK" numeric="238" alpha3="FLK"/>
		<territoryCodes type="FM" numeric="583" alpha3="FSM"/>
		<territoryCodes type="FO" numeric="234" alpha3="FRO"/>
		<territoryCodes type="FR" numeric="250" alpha3="FRA"/>
		<territoryCodes type="FX" numeric="249" alpha3="FXX"/>
		<territoryCodes type="GA" numeric="266" alpha3="GAB" fips10="GB"/>
		<territoryCodes type="GB" numeric="826" alpha3="GBR" fips10="UK" internet="UK GB"/>
		<territoryCodes type="GD" numeric="308" alpha3="GRD" fips10="GJ"/>
		<territoryCodes type="GE" numeric="268" alpha3="GEO" fips10="GG"/>
		<territoryCodes type="GF" numeric="254" alpha3="GUF" fips10="FG"/>
		<territoryCodes type="GG" numeric="831" alpha3="GGY" fips10="GK"/>
		<territoryCodes type="GH" numeric="288" alpha3="GHA"/>
		<territoryCodes type="GI" numeric="292" alpha3="GIB"/>
		<territoryCodes type="GL" numeric="304" alpha3="GRL"/>
		<territoryCodes type="GM" numeric="270" alpha3="GMB" fips10="GA"/>
		<territoryCodes type="GN" numeric="324" alpha3="GIN" fips10="GV"/>
		<territoryCodes type="GP" numeric="312" alpha3="GLP"/>
		<territoryCodes type="GQ" numeric="226" alpha3="GNQ" fips10="EK"/>
		<territoryCodes type="GR" numeric="300" alpha3="GRC"/>
		<territoryCodes type="GS" numeric="239" alpha3="SGS" fips10="SX"/>
		<territoryCodes type="GT" numeric="320" alpha3="GTM"/>
		<territoryCodes type="GU" numeric="316" alpha3="GUM" fips10="GQ"/>
		<territoryCodes type="GW" numeric="624" alpha3="GNB" fips10="PU"/>
		<territoryCodes type="GY" numeric="328" alpha3="GUY"/>
		<territoryCodes type="HK" numeric="344" alpha3="HKG"/>
		<territoryCodes type="HM" numeric="334" alpha3="HMD"/>
		<territoryCodes type="HN" numeric="340" alpha3="HND" fips10="HO"/>
		<territoryCodes type="HR" numeric="191" alpha3="HRV"/>
		<territoryCodes type="HT" numeric="332" alpha3="HTI" fips10="HA"/>
		<territoryCodes type="HU" numeric="348" alpha3="HUN"/>
		<territoryCodes type="ID" numeric="360" alpha3="IDN"/>
		<territoryCodes type="IE" numeric="372" alpha3="IRL" fips10="EI"/>
		<territoryCodes type="IL" numeric="376" alpha3="ISR" fips10="IS"/>
		<territoryCodes type="IM" numeric="833" alpha3="IMN"/>
		<territoryCodes type="IN" numeric="356" alpha3="IND"/>
		<territoryCodes type="IO" numeric="086" alpha3="IOT"/>
		<territoryCodes type="IQ" numeric="368" alpha3="IRQ" fips10="IZ"/>
		<territoryCodes type="IR" numeric="364" alpha3="IRN"/>
		<territoryCodes type="IS" numeric="352" alpha3="ISL" fips10="IC"/>
		<territoryCodes type="IT" numeric="380" alpha3="ITA"/>
		<territoryCodes type="JE" numeric="832" alpha3="JEY"/>
		<territoryCodes type="JM" numeric="388" alpha3="JAM"/>
		<territoryCodes type="JO" numeric="400" alpha3="JOR"/>
		<territoryCodes type="JP" numeric="392" alpha3="JPN" fips10="JA"/>
		<territoryCodes type="KE" numeric="404" alpha3="KEN"/>
		<territoryCodes type="KG" numeric="417" alpha3="KGZ"/>
		<territoryCodes type="KH" numeric="116" alpha3="KHM" fips10="CB"/>
		<territoryCodes type="KI" numeric="296" alpha3="KIR" fips10="KR"/>
		<territoryCodes type="KM" numeric="174" alpha3="COM" fips10="CN"/>
		<territoryCodes type="KN" numeric="659" alpha3="KNA" fips10="SC"/>
		<territoryCodes type="KP" numeric="408" alpha3="PRK" fips10="KN"/>
		<territoryCodes type="KR" numeric="410" alpha3="KOR" fips10="KS"/>
		<territoryCodes type="KW" numeric="414" alpha3="KWT" fips10="KU"/>
		<territoryCodes type="KY" numeric="136" alpha3="CYM" fips10="CJ"/>
		<territoryCodes type="KZ" numeric="398" alpha3="KAZ"/>
		<territoryCodes type="LA" numeric="418" alpha3="LAO"/>
		<territoryCodes type="LB" numeric="422" alpha3="LBN" fips10="LE"/>
		<territoryCodes type="LC" numeric="662" alpha3="LCA" fips10="ST"/>
		<territoryCodes type="LI" numeric="438" alpha3="LIE" fips10="LS"/>
		<territoryCodes type="LK" numeric="144" alpha3="LKA" fips10="CE"/>
		<territoryCodes type="LR" numeric="430" alpha3="LBR" fips10="LI"/>
		<territoryCodes type="LS" numeric="426" alpha3="LSO" fips10="LT"/>
		<territoryCodes type="LT" numeric="440" alpha3="LTU" fips10="LH"/>
		<territoryCodes type="LU" numeric="442" alpha3="LUX"/>
		<territoryCodes type="LV" numeric="428" alpha3="LVA" fips10="LG"/>
		<territoryCodes type="LY" numeric="434" alpha3="LBY"/>
		<territoryCodes type="MA" numeric="504" alpha3="MAR" fips10="MO"/>
		<territoryCodes type="MC" numeric="492" alpha3="MCO" fips10="MN"/>
		<territoryCodes type="MD" numeric="498" alpha3="MDA"/>
		<territoryCodes type="ME" numeric="499" alpha3="MNE" fips10="MJ"/>
		<territoryCodes type="MG" numeric="450" alpha3="MDG" fips10="MA"/>
		<territoryCodes type="MF" numeric="663" alpha3="MAF"/>
		<territoryCodes type="MH" numeric="584" alpha3="MHL" fips10="RM"/>
		<territoryCodes type="MK" numeric="807" alpha3="MKD"/>
		<territoryCodes type="ML" numeric="466" alpha3="MLI"/>
		<territoryCodes type="MM" numeric="104" alpha3="MMR" fips10="BM"/>
		<territoryCodes type="MN" numeric="496" alpha3="MNG" fips10="MG"/>
		<territoryCodes type="MO" numeric="446" alpha3="MAC" fips10="MC"/>
		<territoryCodes type="MP" numeric="580" alpha3="MNP" fips10="CQ"/>
		<territoryCodes type="MQ" numeric="474" alpha3="MTQ" fips10="MB"/>
		<territoryCodes type="MR" numeric="478" alpha3="MRT"/>
		<territoryCodes type="MS" numeric="500" alpha3="MSR" fips10="MH"/>
		<territoryCodes type="MT" numeric="470" alpha3="MLT"/>
		<territoryCodes type="MU" numeric="480" alpha3="MUS" fips10="MP"/>
		<territoryCodes type="MV" numeric="462" alpha3="MDV"/>
		<territoryCodes type="MW" numeric="454" alpha3="MWI" fips10="MI"/>
		<territoryCodes type="MX" numeric="484" alpha3="MEX"/>
		<territoryCodes type="MY" numeric="458" alpha3="MYS"/>
		<territoryCodes type="MZ" numeric="508" alpha3="MOZ"/>
		<territoryCodes type="NA" numeric="516" alpha3="NAM" fips10="WA"/>
		<territoryCodes type="NC" numeric="540" alpha3="NCL"/>
		<territoryCodes type="NE" numeric="562" alpha3="NER" fips10="NG"/>
		<territoryCodes type="NF" numeric="574" alpha3="NFK"/>
		<territoryCodes type="NG" numeric="566" alpha3="NGA" fips10="NI"/>
		<territoryCodes type="NI" numeric="558" alpha3="NIC" fips10="NU"/>
		<territoryCodes type="NL" numeric="528" alpha3="NLD"/>
		<territoryCodes type="NO" numeric="578" alpha3="NOR"/>
		<territoryCodes type="NP" numeric="524" alpha3="NPL"/>
		<territoryCodes type="NR" numeric="520" alpha3="NRU"/>
		<territoryCodes type="NT" numeric="536" alpha3="NTZ"/>
		<territoryCodes type="NU" numeric="570" alpha3="NIU" fips10="NE"/>
		<territoryCodes type="NZ" numeric="554" alpha3="NZL"/>
		<territoryCodes type="OM" numeric="512" alpha3="OMN" fips10="MU"/>
		<territoryCodes type="PA" numeric="591" alpha3="PAN" fips10="PM"/>
		<territoryCodes type="PE" numeric="604" alpha3="PER"/>
		<territoryCodes type="PF" numeric="258" alpha3="PYF" fips10="FP"/>
		<territoryCodes type="PG" numeric="598" alpha3="PNG" fips10="PP"/>
		<territoryCodes type="PH" numeric="608" alpha3="PHL" fips10="RP"/>
		<territoryCodes type="PK" numeric="586" alpha3="PAK"/>
		<territoryCodes type="PL" numeric="616" alpha3="POL"/>
		<territoryCodes type="PM" numeric="666" alpha3="SPM" fips10="SB"/>
		<territoryCodes type="PN" numeric="612" alpha3="PCN" fips10="PC"/>
		<territoryCodes type="PR" numeric="630" alpha3="PRI" fips10="RQ"/>
		<territoryCodes type="PS" numeric="275" alpha3="PSE" fips10="GZ"/>
		<territoryCodes type="PT" numeric="620" alpha3="PRT" fips10="PO"/>
		<territoryCodes type="PW" numeric="585" alpha3="PLW" fips10="PS"/>
		<territoryCodes type="PY" numeric="600" alpha3="PRY" fips10="PA"/>
		<territoryCodes type="QA" numeric="634" alpha3="QAT"/>
		<territoryCodes type="QM" numeric="959" alpha3="QMM"/>
		<territoryCodes type="QN" numeric="960" alpha3="QNN"/>
		<territoryCodes type="QO" numeric="961" alpha3="QOO"/>
		<territoryCodes type="QP" numeric="962" alpha3="QPP"/>
		<territoryCodes type="QQ" numeric="963" alpha3="QQQ"/>
		<territoryCodes type="QR" numeric="964" alpha3="QRR"/>
		<territoryCodes type="QS" numeric="965" alpha3="QSS"/>
		<territoryCodes type="QT" numeric="966" alpha3="QTT"/>
		<territoryCodes type="QU" numeric="967" alpha3="QUU" internet="EU"/>
		<territoryCodes type="QV" numeric="968" alpha3="QVV"/>
		<territoryCodes type="QW" numeric="969" alpha3="QWW"/>
		<territoryCodes type="QX" numeric="970" alpha3="QXX"/>
		<territoryCodes type="QY" numeric="971" alpha3="QYY"/>
		<territoryCodes type="QZ" numeric="972" alpha3="QZZ"/>
		<territoryCodes type="RE" numeric="638" alpha3="REU"/>
		<territoryCodes type="RO" numeric="642" alpha3="ROU"/>
		<territoryCodes type="RS" numeric="688" alpha3="SRB" fips10="RB"/>
		<territoryCodes type="RU" numeric="643" alpha3="RUS" fips10="RS" internet="RU RU"/>
		<territoryCodes type="RW" numeric="646" alpha3="RWA"/>
		<territoryCodes type="SA" numeric="682" alpha3="SAU"/>
		<territoryCodes type="SB" numeric="090" alpha3="SLB" fips10="BP"/>
		<territoryCodes type="SC" numeric="690" alpha3="SYC" fips10="SE"/>
		<territoryCodes type="SD" numeric="736" alpha3="SDN" fips10="SU"/>
		<territoryCodes type="SE" numeric="752" alpha3="SWE" fips10="SW"/>
		<territoryCodes type="SG" numeric="702" alpha3="SGP" fips10="SN"/>
		<territoryCodes type="SH" numeric="654" alpha3="SHN" internet="SH AC"/>
		<territoryCodes type="SI" numeric="705" alpha3="SVN"/>
		<territoryCodes type="SJ" numeric="744" alpha3="SJM" fips10="SV"/>
		<territoryCodes type="SK" numeric="703" alpha3="SVK" fips10="LO"/>
		<territoryCodes type="SL" numeric="694" alpha3="SLE"/>
		<territoryCodes type="SM" numeric="674" alpha3="SMR"/>
		<territoryCodes type="SN" numeric="686" alpha3="SEN" fips10="SG"/>
		<territoryCodes type="SO" numeric="706" alpha3="SOM"/>
		<territoryCodes type="SR" numeric="740" alpha3="SUR" fips10="NS"/>
		<territoryCodes type="ST" numeric="678" alpha3="STP" fips10="TP"/>
		<territoryCodes type="SU" numeric="810" alpha3="SUN"/>
		<territoryCodes type="SV" numeric="222" alpha3="SLV" fips10="ES"/>
		<territoryCodes type="SY" numeric="760" alpha3="SYR"/>
		<territoryCodes type="SZ" numeric="748" alpha3="SWZ" fips10="WZ"/>
		<territoryCodes type="TC" numeric="796" alpha3="TCA" fips10="TK"/>
		<territoryCodes type="TD" numeric="148" alpha3="TCD" fips10="CD"/>
		<territoryCodes type="TF" numeric="260" alpha3="ATF" fips10="FS"/>
		<territoryCodes type="TG" numeric="768" alpha3="TGO" fips10="TO"/>
		<territoryCodes type="TH" numeric="764" alpha3="THA"/>
		<territoryCodes type="TJ" numeric="762" alpha3="TJK" fips10="TI"/>
		<territoryCodes type="TK" numeric="772" alpha3="TKL" fips10="TL"/>
		<territoryCodes type="TL" numeric="626" alpha3="TLS" fips10="TT" internet="TL TP"/>
		<territoryCodes type="TM" numeric="795" alpha3="TKM" fips10="TX"/>
		<territoryCodes type="TN" numeric="788" alpha3="TUN" fips10="TS"/>
		<territoryCodes type="TO" numeric="776" alpha3="TON" fips10="TN"/>
		<territoryCodes type="TP" numeric="626" alpha3="TMP"/>
		<territoryCodes type="TR" numeric="792" alpha3="TUR" fips10="TU"/>
		<territoryCodes type="TT" numeric="780" alpha3="TTO" fips10="TD"/>
		<territoryCodes type="TV" numeric="798" alpha3="TUV"/>
		<territoryCodes type="TW" numeric="158" alpha3="TWN"/>
		<territoryCodes type="TZ" numeric="834" alpha3="TZA"/>
		<territoryCodes type="UA" numeric="804" alpha3="UKR" fips10="UP"/>
		<territoryCodes type="UG" numeric="800" alpha3="UGA"/>
		<territoryCodes type="UM" numeric="581" alpha3="UMI"/>
		<territoryCodes type="US" numeric="840" alpha3="USA"/>
		<territoryCodes type="UY" numeric="858" alpha3="URY"/>
		<territoryCodes type="UZ" numeric="860" alpha3="UZB"/>
		<territoryCodes type="VA" numeric="336" alpha3="VAT" fips10="VT"/>
		<territoryCodes type="VC" numeric="670" alpha3="VCT"/>
		<territoryCodes type="VE" numeric="862" alpha3="VEN"/>
		<territoryCodes type="VG" numeric="092" alpha3="VGB" fips10="VI"/>
		<territoryCodes type="VI" numeric="850" alpha3="VIR" fips10="VQ"/>
		<territoryCodes type="VN" numeric="704" alpha3="VNM" fips10="VM"/>
		<territoryCodes type="VU" numeric="548" alpha3="VUT" fips10="NH"/>
		<territoryCodes type="WF" numeric="876" alpha3="WLF"/>
		<territoryCodes type="WS" numeric="882" alpha3="WSM"/>
		<territoryCodes type="XA" numeric="973" alpha3="XAA"/>
		<territoryCodes type="XB" numeric="974" alpha3="XBB"/>
		<territoryCodes type="XC" numeric="975" alpha3="XCC"/>
		<territoryCodes type="XD" numeric="976" alpha3="XDD"/>
		<territoryCodes type="XE" numeric="977" alpha3="XEE"/>
		<territoryCodes type="XF" numeric="978" alpha3="XFF"/>
		<territoryCodes type="XG" numeric="979" alpha3="XGG"/>
		<territoryCodes type="XH" numeric="980" alpha3="XHH"/>
		<territoryCodes type="XI" numeric="981" alpha3="XII"/>
		<territoryCodes type="XJ" numeric="982" alpha3="XJJ"/>
		<territoryCodes type="XK" numeric="983" alpha3="XKK"/>
		<territoryCodes type="XL" numeric="984" alpha3="XLL"/>
		<territoryCodes type="XM" numeric="985" alpha3="XMM"/>
		<territoryCodes type="XN" numeric="986" alpha3="XNN"/>
		<territoryCodes type="XO" numeric="987" alpha3="XOO"/>
		<territoryCodes type="XP" numeric="988" alpha3="XPP"/>
		<territoryCodes type="XQ" numeric="989" alpha3="XQQ"/>
		<territoryCodes type="XR" numeric="990" alpha3="XRR"/>
		<territoryCodes type="XS" numeric="991" alpha3="XSS"/>
		<territoryCodes type="XT" numeric="992" alpha3="XTT"/>
		<territoryCodes type="XU" numeric="993" alpha3="XUU"/>
		<territoryCodes type="XV" numeric="994" alpha3="XVV"/>
		<territoryCodes type="XW" numeric="995" alpha3="XWW"/>
		<territoryCodes type="XX" numeric="996" alpha3="XXX"/>
		<territoryCodes type="XY" numeric="997" alpha3="XYY"/>
		<territoryCodes type="XZ" numeric="998" alpha3="XZZ"/>
		<territoryCodes type="YD" numeric="720" alpha3="YMD"/>
		<territoryCodes type="YE" numeric="887" alpha3="YEM" fips10="YM"/>
		<territoryCodes type="YT" numeric="175" alpha3="MYT" fips10="MF"/>
		<territoryCodes type="YU" numeric="891" alpha3="YUG"/>
		<territoryCodes type="ZA" numeric="710" alpha3="ZAF" fips10="SF"/>
		<territoryCodes type="ZM" numeric="894" alpha3="ZMB" fips10="ZA"/>
		<territoryCodes type="ZR" numeric="180" alpha3="ZAR"/>
		<territoryCodes type="ZW" numeric="716" alpha3="ZWE" fips10="ZI"/>
		<territoryCodes type="ZZ" numeric="999" alpha3="ZZZ" internet="AERO ARPA BIZ CAT COM COOP EDU GOV INFO INT JOBS MIL MOBI MUSEUM NAME NET ORG PRO TRAVEL"/>
	</codeMappings>
</supplementalData>
PKpG[^��0����Locale/Data/vi.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.70 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="vi"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="af">Tiếng Nam Phi</language>
			<language type="am">Tiếng Amharic</language>
			<language type="ar">Tiếng A-rập</language>
			<language type="as">Tiếng Assam</language>
			<language type="ay">Tiếng Aymara</language>
			<language type="az">Tiếng Ai-déc-bai-gian</language>
			<language type="be">Tiếng Bê-la-rút</language>
			<language type="bg">Tiếng Bun-ga-ri</language>
			<language type="bh">Tiếng Bihari</language>
			<language type="bn">Tiếng Bengali (Ấn Độ)</language>
			<language type="bo">Tiếng Tây Tạng</language>
			<language type="br">Tiếng Breton</language>
			<language type="bs">Tiếng Nam Tư</language>
			<language type="ca">Tiếng Ca-ta-lăng</language>
			<language type="cs">Tiếng Séc</language>
			<language type="cy">Tiếng Xentơ</language>
			<language type="da">Tiếng Đan Mạch</language>
			<language type="de">Tiếng Đức</language>
			<language type="el">Tiếng Hy Lạp</language>
			<language type="en">Tiếng Anh</language>
			<language type="en_GB">Tiếng Anh (Anh)</language>
			<language type="en_US">Tiếng Anh (Mỹ)</language>
			<language type="eo">Tiếng Quốc Tế Ngữ</language>
			<language type="es">Tiếng Tây Ban Nha</language>
			<language type="et">Tiếng E-xtô-ni-a</language>
			<language type="eu">Tiếng Basque</language>
			<language type="fa">Tiếng Ba Tư</language>
			<language type="fi">Tiếng Phần Lan</language>
			<language type="fil">Tiếng Philipin</language>
			<language type="fo">Tiếng Faore</language>
			<language type="fr">Tiếng Pháp</language>
			<language type="fy">Tiếng Frisian</language>
			<language type="ga">Tiếng Ai-len</language>
			<language type="gd">Tiếng Xentơ (Xcốt len)</language>
			<language type="gl">Tiếng Galician</language>
			<language type="gn">Tiếng Guarani</language>
			<language type="gu">Tiếng  Gujarati</language>
			<language type="he">Tiếng Hê-brơ</language>
			<language type="hi">Tiếng Hin-đi</language>
			<language type="hr">Tiếng Crô-a-ti-a</language>
			<language type="hu">Tiếng Hung-ga-ri</language>
			<language type="hy">Tiếng Ác-mê-ni</language>
			<language type="ia">Tiếng Khoa Học Quốc Tế</language>
			<language type="id">Tiếng In-đô-nê-xia</language>
			<language type="ie">Tiếng Khoa học quốc tế</language>
			<language type="is">Tiếng Ai-xơ-len</language>
			<language type="it">Tiếng Ý</language>
			<language type="ja">Tiếng Nhật</language>
			<language type="jv">Tiếng Gia-va</language>
			<language type="ka">Tiếng Georgian</language>
			<language type="km">Tiếng Campuchia</language>
			<language type="kn">Tiếng Kan-na-đa</language>
			<language type="ko">Tiếng Hàn Quốc</language>
			<language type="ks">Tiếng Kashmiri</language>
			<language type="ku">Tiếng Kurd (Iran)</language>
			<language type="ky">Tiếng Kyrgyz</language>
			<language type="la">Tiếng La-tinh</language>
			<language type="ln">Tiếng Lingala</language>
			<language type="lo">Tiếng Lào</language>
			<language type="lt">Tiếng Lít-va</language>
			<language type="lv">Tiếng Lát-vi-a</language>
			<language type="mk">Tiếng Ma-xê-đô-ni-a</language>
			<language type="ml">Tiếng Malayalam</language>
			<language type="mn">Tiếng Mông Cổ</language>
			<language type="mr">Tiếng Marathi</language>
			<language type="ms">Tiếng Ma-lay-xi-a</language>
			<language type="mt">Tiếng Mantơ</language>
			<language type="ne">Tiếng Nê-pan</language>
			<language type="nl">Tiếng Hà Lan</language>
			<language type="nn">Tiếng Na Uy (Nynorsk)</language>
			<language type="no">Tiếng Na Uy</language>
			<language type="oc">Tiếng Occitan</language>
			<language type="or">Tiếng Ô-ri-a</language>
			<language type="pa">Tiếng Punjabi</language>
			<language type="pl">Tiếng Ba Lan</language>
			<language type="ps">Tiếng Pa-tô</language>
			<language type="pt">Tiếng Bồ Đào Nha</language>
			<language type="pt_BR">Tiếng Bồ Đào Nha (Braxin)</language>
			<language type="pt_PT">Tiếng Bồ Đào Nha (I-bê-ri)</language>
			<language type="rm">Tiếng Rhaeto-Romance</language>
			<language type="ro">Tiếng Ru-ma-ni</language>
			<language type="ru">Tiếng Nga</language>
			<language type="sa">Tiếng Phạn</language>
			<language type="sd">Tiếng Sin-hi</language>
			<language type="sh">Tiếng Xéc bi - Croatia</language>
			<language type="si">Tiếng Sinhala</language>
			<language type="sk">Tiếng Xlô-vác</language>
			<language type="sl">Tiếng Xlô-ven</language>
			<language type="so">Tiếng Xô-ma-li</language>
			<language type="sq">Tiếng An-ba-ni</language>
			<language type="sr">Tiếng Séc-bi</language>
			<language type="st">Tiếng Sesotho</language>
			<language type="su">Tiếng Xu đăng</language>
			<language type="sv">Tiếng Thụy Điển</language>
			<language type="sw">Tiếng Bantu (Đông Phi)</language>
			<language type="ta">Tiếng Tamil</language>
			<language type="te">Tiếng Telugu</language>
			<language type="th">Tiếng Thái</language>
			<language type="ti">Tiếng Tigrigya</language>
			<language type="tk">Tiếng Tuôc-men</language>
			<language type="tl">Tiếng Tagalog</language>
			<language type="tlh">Tiếng Klingon</language>
			<language type="tr">Tiếng Thổ Nhĩ Kỳ</language>
			<language type="tw">Tiếng Twi</language>
			<language type="ug">Tiếng Uighur</language>
			<language type="uk">Tiếng U-crai-na</language>
			<language type="und">und</language>
			<language type="ur">Tiếng Uđu</language>
			<language type="uz">Tiếng U-dơ-bếch</language>
			<language type="vi">Tiếng Việt</language>
			<language type="wo">Tiếng Wolof</language>
			<language type="xh">Tiếng Bantu</language>
			<language type="yi">Tiếng Y-đit</language>
			<language type="zh">Tiếng Trung Quốc</language>
			<language type="zh_Hans">Tiếng Trung Quốc (Giản thể)</language>
			<language type="zh_Hant">Tiếng Trung Quốc (Phồn thể)</language>
			<language type="zu">Tiếng Zulu</language>
		</languages>
		<scripts>
			<script type="Zxxx">Zxxx</script>
			<script type="Zzzz">Zzzz</script>
		</scripts>
		<territories>
			<territory type="001">Thế giới</territory>
			<territory type="002">Châu Phi</territory>
			<territory type="003">Bắc Mỹ</territory>
			<territory type="005">Nam Mỹ</territory>
			<territory type="009">Châu Đại Dương</territory>
			<territory type="011">Tây Phi</territory>
			<territory type="013">Trung Mỹ</territory>
			<territory type="014">Đông Phí</territory>
			<territory type="015">Bắc Phi</territory>
			<territory type="017">Trung Phi</territory>
			<territory type="018">Miền Nam Châu Phi</territory>
			<territory type="019">Châu Mỹ</territory>
			<territory type="021">Miền Bắc Châu Mỹ</territory>
			<territory type="029">Ca-ri-bê</territory>
			<territory type="030">Đông Á</territory>
			<territory type="034">Nam Á</territory>
			<territory type="035">Đông Nam Á</territory>
			<territory type="039">Nam Âu</territory>
			<territory type="053">Úc và New Zealand</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Vùng Micronesian</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Trung Nam Á</territory>
			<territory type="142">Châu Á</territory>
			<territory type="143">Trung Á</territory>
			<territory type="145">Tây Á</territory>
			<territory type="150">Âu Châu</territory>
			<territory type="151">Đông Âu</territory>
			<territory type="154">Miền Bắc Châu Âu</territory>
			<territory type="155">Tây Âu</territory>
			<territory type="419">Châu Mỹ La-tinh và Ca-ri-be</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Các Tiểu Vương quốc A-rập Thống nhất</territory>
			<territory type="AF">Áp-ga-ni-xtan</territory>
			<territory type="AG">An-ti-gu-a và Ba-bu-đa</territory>
			<territory type="AL">An-ba-ni</territory>
			<territory type="AM">Ác-mê-ni-a</territory>
			<territory type="AN">Tây Ấn Hà Lan</territory>
			<territory type="AO">Ăng-gô-la</territory>
			<territory type="AQ">Nam Cực</territory>
			<territory type="AR">Ác-hen-ti-na</territory>
			<territory type="AS">Đảo Somoa thuộc Mỹ</territory>
			<territory type="AT">Áo</territory>
			<territory type="AU">Úc</territory>
			<territory type="AX">Quần đảo Aland</territory>
			<territory type="AZ">Ai-déc-bai-gian</territory>
			<territory type="BA">Bô-xni-a Héc-xê-gô-vi-na</territory>
			<territory type="BB">Bác-ba-đốt</territory>
			<territory type="BD">Băng-la-đét</territory>
			<territory type="BE">Bỉ</territory>
			<territory type="BF">Buốc-ki-na Pha-xô</territory>
			<territory type="BG">Bun-ga-ri</territory>
			<territory type="BH">Ba-ren</territory>
			<territory type="BI">Bu-run-đi</territory>
			<territory type="BJ">Bê-nanh</territory>
			<territory type="BL">BL</territory>
			<territory type="BN">Bru-nây</territory>
			<territory type="BO">Bô-li-vi-a</territory>
			<territory type="BR">Bra-xin</territory>
			<territory type="BS">Ba-ha-ma</territory>
			<territory type="BT">Bu-tan (Bhutan)</territory>
			<territory type="BV">Đảo Bouvet (Na Uy)</territory>
			<territory type="BW">Bốt-xoa-na</territory>
			<territory type="BY">Bê-la-rút</territory>
			<territory type="BZ">Bê-li-xê</territory>
			<territory type="CA">Ca-na-đa</territory>
			<territory type="CC">Quần đảo Cocos</territory>
			<territory type="CD">Cộng hoà dân chủ Côngô</territory>
			<territory type="CF">Cộng hòa Trung Phi</territory>
			<territory type="CG">Công-gô</territory>
			<territory type="CH">Thụy Sĩ</territory>
			<territory type="CI">Bờ Biển Ngà</territory>
			<territory type="CK">Quần Đảo Cook</territory>
			<territory type="CL">Chi-lê</territory>
			<territory type="CM">Ca-mơ-run</territory>
			<territory type="CN">Trung Quốc</territory>
			<territory type="CO">Cô-lôm-bi-a</territory>
			<territory type="CR">Cốt-xta Ri-ca</territory>
			<territory type="CS">Séc-bia</territory>
			<territory type="CU">Cu Ba</territory>
			<territory type="CV">Cáp-ve</territory>
			<territory type="CX">Đảo Giáng Sinh</territory>
			<territory type="CY">Síp</territory>
			<territory type="CZ">Cộng hòa Séc</territory>
			<territory type="DE">Đức</territory>
			<territory type="DJ">Gi-bu-ti</territory>
			<territory type="DK">Đan Mạch</territory>
			<territory type="DO">Cộng hoà Đô-mi-ni-ca</territory>
			<territory type="DZ">An-giê-ri</territory>
			<territory type="EC">Ê-cu-a-đo</territory>
			<territory type="EE">E-xtô-ni-a</territory>
			<territory type="EG">Ai Cập</territory>
			<territory type="EH">Tây Sahara</territory>
			<territory type="ER">Ê-ri-tơ-rê-a</territory>
			<territory type="ES">Tây Ban Nha</territory>
			<territory type="ET">Ê-ti-ô-pi-a</territory>
			<territory type="FI">Phần Lan</territory>
			<territory type="FJ">Phi-gi</territory>
			<territory type="FK">Quần Đảo Falkland</territory>
			<territory type="FM">Mi-crô-nê-xi-a</territory>
			<territory type="FO">Quần Đảo Faroe</territory>
			<territory type="FR">Pháp</territory>
			<territory type="GA">Ga-bông</territory>
			<territory type="GB">Vương quốc Anh</territory>
			<territory type="GD">Grê-na-đa</territory>
			<territory type="GE">Gru-di-a</territory>
			<territory type="GF">Quiana thuộc Pháp</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gha-na</territory>
			<territory type="GL">Băng Đảo</territory>
			<territory type="GM">Găm-bi-a</territory>
			<territory type="GN">Ghi-nê</territory>
			<territory type="GQ">Ghi-nê Xích-đạo</territory>
			<territory type="GR">Hy Lạp</territory>
			<territory type="GS">Quần đảo Nam Georgia và Nam Sandwich</territory>
			<territory type="GT">Goa-tê-ma-la</territory>
			<territory type="GU">Đảo Gu-am</territory>
			<territory type="GW">Ghi-nê Bít-xao</territory>
			<territory type="GY">Guy-a-na</territory>
			<territory type="HK">Hồng Kông</territory>
			<territory type="HM">Đảo Heard và Quần đảo McDonald</territory>
			<territory type="HN">Hôn-đu-rát</territory>
			<territory type="HR">Crô-a-ti-a</territory>
			<territory type="HT">Ha-i-ti</territory>
			<territory type="HU">Hung-ga-ri</territory>
			<territory type="ID">Nam Dương</territory>
			<territory type="IE">Ai-len</territory>
			<territory type="IL">I-xra-en</territory>
			<territory type="IM">Đảo Man</territory>
			<territory type="IN">Ấn Độ</territory>
			<territory type="IO">Thuộc địa Anh tại Ấn Độ Dương</territory>
			<territory type="IQ">I-rắc</territory>
			<territory type="IR">I-ran</territory>
			<territory type="IS">Ai-xơ-len</territory>
			<territory type="IT">Ý</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Ha-mai-ca</territory>
			<territory type="JO">Gióc-đa-ni</territory>
			<territory type="JP">Nhật Bản</territory>
			<territory type="KE">Kê-ni-a</territory>
			<territory type="KG">Cư-rơ-gư-xtan</territory>
			<territory type="KH">Campuchia</territory>
			<territory type="KI">Ki-ri-ba-ti</territory>
			<territory type="KM">Cô-mô</territory>
			<territory type="KN">Xan-kít và Nê-vi</territory>
			<territory type="KP">Bắc Triều Tiên</territory>
			<territory type="KR">Hàn Quốc</territory>
			<territory type="KW">Cô-oét</territory>
			<territory type="KY">Quần Đảo Cayman</territory>
			<territory type="KZ">Ka-dắc-xtan</territory>
			<territory type="LA">Lào</territory>
			<territory type="LB">Li-băng</territory>
			<territory type="LC">Xan Lu-xi</territory>
			<territory type="LI">Lich-ten-xtên</territory>
			<territory type="LK">Xri Lan-ca</territory>
			<territory type="LR">Li-bê-ri-a</territory>
			<territory type="LS">Lê-xô-thô</territory>
			<territory type="LT">Li-tu-a-ni-a</territory>
			<territory type="LU">Lúc-xăm-bua</territory>
			<territory type="LV">Lát-vi-a</territory>
			<territory type="LY">Li-bi</territory>
			<territory type="MA">Ma-rốc</territory>
			<territory type="MC">Mô-na-cô</territory>
			<territory type="MD">Môn-đô-va</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">MF</territory>
			<territory type="MG">Ma-đa-gát-xca</territory>
			<territory type="MH">Quần đảo Mác-san</territory>
			<territory type="MK">Ma-xê-đô-ni-a</territory>
			<territory type="ML">Ma-li</territory>
			<territory type="MM">Mi-an-ma</territory>
			<territory type="MN">Mông Cổ</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Quần Đảo Bắc Mariana</territory>
			<territory type="MQ">MQ</territory>
			<territory type="MR">Mô-ri-ta-ni</territory>
			<territory type="MT">Man-ta</territory>
			<territory type="MU">Mô-ri-xơ</territory>
			<territory type="MV">Man-đi-vơ</territory>
			<territory type="MW">Ma-la-uy</territory>
			<territory type="MX">Mê-hi-cô</territory>
			<territory type="MY">Ma-lay-xi-a</territory>
			<territory type="MZ">Mô-dăm-bích</territory>
			<territory type="NA">Nam-mi-bi-a</territory>
			<territory type="NC">New Caledonia</territory>
			<territory type="NE">Ni-giê</territory>
			<territory type="NF">Đảo Norfolk</territory>
			<territory type="NG">Ni-giê-ri-a</territory>
			<territory type="NI">Ni-ca-ra-goa</territory>
			<territory type="NL">Hà Lan</territory>
			<territory type="NO">Na Uy</territory>
			<territory type="NP">Nê-pan</territory>
			<territory type="NZ">Niu Di-lân</territory>
			<territory type="OM">Ô-man</territory>
			<territory type="PA">Pa-na-ma</territory>
			<territory type="PE">Pê-ru</territory>
			<territory type="PF">Polynesia thuộc Pháp</territory>
			<territory type="PG">Pa-pu-a Niu Ghi-nê</territory>
			<territory type="PH">Phi-lip-pin</territory>
			<territory type="PK">Pa-ki-xtan</territory>
			<territory type="PL">Ba Lan</territory>
			<territory type="PM">Saint Pierre và Miquelon</territory>
			<territory type="PS">Lãnh thổ Palestine</territory>
			<territory type="PT">Bồ Đào Nha</territory>
			<territory type="PY">Pa-ra-goay</territory>
			<territory type="QA">Ca-ta</territory>
			<territory type="QO">Vùng xa xôi thuộc Châu Đại Dương</territory>
			<territory type="QU">Liên Minh Châu Âu</territory>
			<territory type="RE">RE</territory>
			<territory type="RO">Ru-ma-ni</territory>
			<territory type="RS">Xéc-bi</territory>
			<territory type="RU">Nga</territory>
			<territory type="RW">Ru-an-đa</territory>
			<territory type="SA">A-rập Xê-út</territory>
			<territory type="SB">Quần đảo Xô-lô-mông</territory>
			<territory type="SC">Xây-sen</territory>
			<territory type="SD">Xu-đăng</territory>
			<territory type="SE">Thụy Điển</territory>
			<territory type="SG">Xin-ga-po</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Xlô-ven-ni-a</territory>
			<territory type="SJ">Svalbard và Jan Mayen</territory>
			<territory type="SK">Xlô-va-ki-a</territory>
			<territory type="SL">Xi-ê-ra Lê-ôn</territory>
			<territory type="SM">Xan Ma-ri-nô</territory>
			<territory type="SN">Xê-nê-gan</territory>
			<territory type="SO">Xô-ma-li</territory>
			<territory type="SR">Xu-ri-nam</territory>
			<territory type="ST">Xao Tô-mê và Prin-xi-pê</territory>
			<territory type="SV">En-san-va-đo</territory>
			<territory type="SY">Xi-ri</territory>
			<territory type="SZ">Xoa-di-len</territory>
			<territory type="TC">Quần Đảo Turk và Caicos</territory>
			<territory type="TD">Sát</territory>
			<territory type="TF">Thuộc Địa Nam của Pháp</territory>
			<territory type="TG">Tô-gô</territory>
			<territory type="TH">Thái Lan</territory>
			<territory type="TJ">Tát-gi-ki-xtan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Đông Ti-mo</territory>
			<territory type="TM">Tuốc-mê-ni-xtan</territory>
			<territory type="TN">Tuy-ni-di</territory>
			<territory type="TO">Tông-ga</territory>
			<territory type="TR">Thổ Nhĩ Kỳ</territory>
			<territory type="TT">Tri-ni-đát và Tô-ba-gô</territory>
			<territory type="TV">Tu-va-lu</territory>
			<territory type="TW">Đài Loan</territory>
			<territory type="TZ">Tan-da-ni-a</territory>
			<territory type="UA">U-crai-na</territory>
			<territory type="UG">U-gan-đa</territory>
			<territory type="UM">Các đảo nhỏ xa trung tâm thuộc Mỹ</territory>
			<territory type="US">Hoa Kỳ</territory>
			<territory type="UY">U-ru-goay</territory>
			<territory type="UZ">U-dơ-bê-ki-xtan</territory>
			<territory type="VA">Va-ti-căng</territory>
			<territory type="VC">Xan Vin-xen và Grê-na-din</territory>
			<territory type="VE">Vê-nê-zu-ê-la</territory>
			<territory type="VG">Đảo Virgin, thuộc Anh</territory>
			<territory type="VI">Quần đảo Virgin, Mỹ</territory>
			<territory type="VN">Việt Nam</territory>
			<territory type="VU">Va-nu-a-tu</territory>
			<territory type="WF">Wallis và Futuna</territory>
			<territory type="WS">Xa-moa</territory>
			<territory type="YE">Y-ê-men</territory>
			<territory type="YT">YT</territory>
			<territory type="ZA">Nam Phi</territory>
			<territory type="ZM">Dăm-bi-a</territory>
			<territory type="ZW">Dim-ba-bu-ê</territory>
			<territory type="ZZ">Vùng Chưa biết hoặc không Hợp lệ</territory>
		</territories>
		<types>
			<type type="gregorian" key="calendar">gregorian</type>
		</types>
		<codePatterns>
			<codePattern type="language">Ngôn ngữ: {0}</codePattern>
			<codePattern type="script">Chữ viết: {0}</codePattern>
			<codePattern type="territory">Vùng: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à ả ã á ạ ă ằ ẳ ẵ ắ ặ â ầ ẩ ẫ ấ ậ b-d đ e è ẻ ẽ é ẹ ê ề ể ễ ế ệ f-i ì ỉ ĩ í ị j-o ò ỏ õ ó ọ ô ồ ổ ỗ ố ộ ơ ờ ở ỡ ớ ợ p-u ù ủ ũ ú ụ ư ừ ử ữ ứ ự v-y ỳ ỷ ỹ ý ỵ z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[f j w z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-d đ e-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">thg 1</month>
							<month type="2">thg 2</month>
							<month type="3">thg 3</month>
							<month type="4">thg 4</month>
							<month type="5">thg 5</month>
							<month type="6">thg 6</month>
							<month type="7">thg 7</month>
							<month type="8">thg 8</month>
							<month type="9">thg 9</month>
							<month type="10">thg 10</month>
							<month type="11">thg 11</month>
							<month type="12">thg 12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">tháng một</month>
							<month type="2">tháng hai</month>
							<month type="3">tháng ba</month>
							<month type="4">tháng tư</month>
							<month type="5">tháng năm</month>
							<month type="6">tháng sáu</month>
							<month type="7">tháng bảy</month>
							<month type="8">tháng tám</month>
							<month type="9">tháng chín</month>
							<month type="10">tháng mười</month>
							<month type="11">tháng mười một</month>
							<month type="12">tháng mười hai</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">CN</day>
							<day type="mon">Th 2</day>
							<day type="tue">Th 3</day>
							<day type="wed">Th 4</day>
							<day type="thu">Th 5</day>
							<day type="fri">Th 6</day>
							<day type="sat">Th 7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Chủ nhật</day>
							<day type="mon">Thứ hai</day>
							<day type="tue">Thứ ba</day>
							<day type="wed">Thứ tư</day>
							<day type="thu">Thứ năm</day>
							<day type="fri">Thứ sáu</day>
							<day type="sat">Thứ bảy</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>SA</am>
				<pm>CH</pm>
				<eras>
					<eraAbbr>
						<era type="0">tr. CN</era>
						<era type="1">sau CN</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, 'ngày' dd MMMM 'năm' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>'Ngày' dd 'tháng' M 'năm' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{0} {1}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">'Tháng' M - 'Tháng' M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">EEEE, dd/MM - EEEE, dd/MM</greatestDifference>
							<greatestDifference id="d">EEEE, dd/MM - EEEE, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">EEEE, 'ngày' dd 'tháng' M - EEEE, 'ngày' dd 'tháng' M</greatestDifference>
							<greatestDifference id="d">EEEE, 'ngày' dd - EEEE, 'ngày' dd 'tháng' M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M</greatestDifference>
							<greatestDifference id="d">'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">'Ngày' d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH'h' - HH'h'</greatestDifference>
							<greatestDifference id="h">HH'h' - HH'h'</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH'h'-HH'h' v</greatestDifference>
							<greatestDifference id="h">HH'h'-HH'h' v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">'Tháng' M - 'Tháng' M 'năm' yyyy</greatestDifference>
							<greatestDifference id="y">'Tháng' M 'năm' yyyy - 'Tháng' M 'năm' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' yyyy</greatestDifference>
							<greatestDifference id="d">EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' yyyy</greatestDifference>
							<greatestDifference id="y">EEEE, 'ngày' dd MMM 'năm' yyyy - EEEE, 'ngày' dd MMM 'năm' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' yyyy</greatestDifference>
							<greatestDifference id="d">'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' yyyy</greatestDifference>
							<greatestDifference id="y">'Ngày' dd 'tháng' M 'năm' yyyy - 'Ngày' dd 'tháng' M 'năm' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Không rõ</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andorra Time</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbados Time</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrain Time</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belize Time</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Costa Rica Time</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cape Verde Time</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Djibouti Time</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominica Time</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Quần Đảo Canary</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fiji Time</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Grenada Time</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>South Georgia and the South Sandwich Islands Time</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Guatemala Time</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Guyana Time</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hong Kong SAR China Time</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaica Time</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Saint Kitts and Nevis Time</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuwait Time</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Laos Time</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Saint Lucia Time</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxembourg Time</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monaco Time</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Malta Time</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauritius Time</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldives Time</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Nauru Time</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panama Time</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Palau Time</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Qatar Time</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapore Time</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>El Salvador Time</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Taiwan Time</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint Vincent and the Grenadines Time</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>U.S. Virgin Islands Time</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Giờ Việt Nam</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>Điram UAE</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Lép Bungari</displayName>
			</currency>
			<currency type="BRL">
				<displayName>BRL</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franc Thụy sĩ</displayName>
			</currency>
			<currency type="CNY">
				<displayName>CNY</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Crun Extônia</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Đô-la Fi-ji</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franc Pháp</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Bảng Anh</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Lari Georgia</displayName>
			</currency>
			<currency type="GHC">
				<displayName>Cedi Ghana (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Cedi Ghana</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Pao Gibraltar</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franc Guinea</displayName>
			</currency>
			<currency type="GNS">
				<displayName>Syli Guinea</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Drachma Hy Lạp</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal Guatemala</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Peso Guinea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Đô-la Guyana</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Đô-la Hồng Kông</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Honduras Lempira</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde Haiti</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Phôrin Hungari</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Rupia Inđônêxia</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Pao Ai-len</displayName>
			</currency>
			<currency type="ILP">
				<displayName>Pao Ixraen</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Sêken Ixraen</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupi Ấn Độ</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Dinar I-rắc</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Rial I-ran</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lia Ý</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Đô la Jamaica</displayName>
			</currency>
			<currency type="JOD">
				<displayName>Dinar Jordan</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yên Nhật</displayName>
			</currency>
			<currency type="KES">
				<displayName>Si-ling Kê-ny-a</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won Hàn Quốc</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakhstan Tenge</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litat Lituani</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Điaham Marốc</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Lia xứ Man-tơ</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Peso Mêhicô</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Rinhgit Malaixia</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Curon Na Uy</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Đô-la New Zealand</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Nuevo Sol Pêru</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso Philíppin</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupi Pakistan</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Zloty Ba Lan</displayName>
			</currency>
			<currency type="RON">
				<displayName>Lây Rumani</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Đina Xéc-bi</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rúp Nga</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Rian Ả rập Xêút</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Cua-ron Thuỵ Điển</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Đô-la Singapore</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tôla Xlôvênia</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Cuaron Xlôvác</displayName>
			</currency>
			<currency type="THB">
				<displayName>Bạt Thái Lan</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lia Thổ Nhĩ Kỳ</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Lia Thổ Nhĩ Kỳ Mới</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Đô-la Đài Loan</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Rúp U-crai-na</displayName>
			</currency>
			<currency type="USD">
				<displayName>Đô-la Mỹ</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bôliva Vênêduêla</displayName>
			</currency>
			<currency type="VND">
				<displayName>đồng</displayName>
				<symbol>₫</symbol>
			</currency>
			<currency type="XAU">
				<displayName>Vàng</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Tiền tệ chưa biết hoặc không hợp lệ</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Ran Nam Phi</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} ngày</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} giờ</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} phút</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} tháng</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} giây</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} tuần</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} năm</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[y#ΤOOLocale/Data/uz_UZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<territory type="UZ"/>
	</identity>
	<alias source="uz_Cyrl_UZ" path="//ldml"/>
</ldml>
PKpG[�v@##Locale/Data/kn_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kn"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[��w�hhLocale/Data/hy.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.64 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="hy"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Աֆրիկանս</language>
			<language type="am">Հաբեշերեն</language>
			<language type="ar">Արաբերեն</language>
			<language type="as">Ասամերեն</language>
			<language type="az">Ադրբեջաներեն</language>
			<language type="be">Բելարուսերեն</language>
			<language type="bg">Բուլղարերեն</language>
			<language type="bh">Բիհարերեն</language>
			<language type="bn">Բենգալերեն</language>
			<language type="br">Բրետոներեն</language>
			<language type="bs">Բոսներեն</language>
			<language type="ca">Կատալոներեն</language>
			<language type="cs">Չեխերեն</language>
			<language type="cy">Վալերեն</language>
			<language type="da">Դանիերեն</language>
			<language type="de">Գերմաներեն</language>
			<language type="el">Հունարեն</language>
			<language type="en">Անգլերեն</language>
			<language type="eo">Էսպերանտո</language>
			<language type="es">Իսպաներեն</language>
			<language type="et">Էստոներեն</language>
			<language type="eu">Բասկերեն</language>
			<language type="fa">Պարսկերեն</language>
			<language type="fi">Ֆիններեն</language>
			<language type="fil">Տագալերեն</language>
			<language type="fo">Ֆարվերեն</language>
			<language type="fr">Ֆրանսերեն</language>
			<language type="fy">Ֆրիսերեն</language>
			<language type="ga">Իռլանդերեն</language>
			<language type="gd">Գաելյան Շոտլանդերեն</language>
			<language type="gl">Գալիսերեն</language>
			<language type="gn">Գուարաներեն</language>
			<language type="gu">Գուջարատերեն</language>
			<language type="he">Եբրայերեն</language>
			<language type="hi">Հնդկերեն</language>
			<language type="hr">Խորվաթերեն</language>
			<language type="hu">Հունգարերեն</language>
			<language type="hy">Հայերէն</language>
			<language type="ia">Ինտերլինգուա</language>
			<language type="id">Ինդոնեզերեն</language>
			<language type="ie">Ինտերլինգ</language>
			<language type="is">Իսլանդերեն</language>
			<language type="it">Իտալերեն</language>
			<language type="ja">Ճապոներեն</language>
			<language type="jv">Ճավայերեն</language>
			<language type="ka">Վրացերեն</language>
			<language type="km">Կամբոջերեն</language>
			<language type="kn">Կաննադա</language>
			<language type="ko">Կորեերեն</language>
			<language type="ku">Քրդերեն</language>
			<language type="ky">Ղրղզերեն</language>
			<language type="la">Լատիներեն</language>
			<language type="ln">Լինգալա</language>
			<language type="lo">Լաոսերեն</language>
			<language type="lt">Լիտվերեն</language>
			<language type="lv">Լատվերեն</language>
			<language type="mk">Մակեդոներեն</language>
			<language type="ml">Կերալերեն</language>
			<language type="mn">Մոնղոլերեն</language>
			<language type="mr">Մարաթի</language>
			<language type="ms">Մալայերեն</language>
			<language type="mt">Մալթերեն</language>
			<language type="ne">Նեպալերեն</language>
			<language type="nl">Հոլանդերեն</language>
			<language type="nn">Նորվեգերեն (Նյունորսկ)</language>
			<language type="no">Նորվեգերեն</language>
			<language type="oc">Ակվիտաներեն</language>
			<language type="or">Օրիսերեն</language>
			<language type="pa">Փենջաբերեն</language>
			<language type="pl">Լեհերեն</language>
			<language type="ps">Փաշտուներեն</language>
			<language type="pt">Պորտուգալերեն</language>
			<language type="ro">Ռումիներեն</language>
			<language type="ru">Ռուսերեն</language>
			<language type="sa">Սանսկրիտերեն</language>
			<language type="sd">Սինդհի</language>
			<language type="sh">Սերբա-Խորվաթերեն</language>
			<language type="si">Սինհալերեն</language>
			<language type="sk">Սլովակերեն</language>
			<language type="sl">Սլովեներեն</language>
			<language type="so">Սոմալերեն</language>
			<language type="sq">Ալբաներեն</language>
			<language type="sr">Սերբերեն</language>
			<language type="st">Սեսոտո</language>
			<language type="su">Սունդաներեն</language>
			<language type="sv">Շվեդերեն</language>
			<language type="sw">Սուահիլի</language>
			<language type="ta">Թամիլերեն</language>
			<language type="te">Տելուգու</language>
			<language type="th">Թայերեն</language>
			<language type="ti">Էրիտրերեն</language>
			<language type="tk">Թուրքմեներեն</language>
			<language type="tlh">Կլինգոն</language>
			<language type="tr">Թուրքերեն</language>
			<language type="tw">Տուի</language>
			<language type="ug">Ույղուրերեն</language>
			<language type="uk">Ուկրաիներեն</language>
			<language type="ur">Ուրդու</language>
			<language type="uz">Ուզբեկերեն</language>
			<language type="vi">Վիետնամերեն</language>
			<language type="xh">Խոշերեն</language>
			<language type="yi">Իդիշ</language>
			<language type="zh">Չինարեն</language>
			<language type="zu">Զուլուսերեն</language>
		</languages>
		<territories>
			<territory type="001">Աշխարհ</territory>
			<territory type="002">Աֆրիկա</territory>
			<territory type="005">Հարավային Ամերիկա</territory>
			<territory type="011">Արևմտյան Աֆրիկա</territory>
			<territory type="014">Արևելյան Աֆրիկա</territory>
			<territory type="015">Հյուսիսային Աֆրիկա</territory>
			<territory type="018">Հարավային Աֆրիկա [018]</territory>
			<territory type="AD">Անդորա</territory>
			<territory type="AE">Միացյալ Արաբական Էմիրաթներ</territory>
			<territory type="AF">Աֆղանստան</territory>
			<territory type="AG">Անտիգուա-Բարբուդա</territory>
			<territory type="AL">Ալբանիա</territory>
			<territory type="AM">Հայաստանի Հանրապետութիւն</territory>
			<territory type="AO">Անգոլա</territory>
			<territory type="AR">Արգենտինա</territory>
			<territory type="AT">Ավստրիա</territory>
			<territory type="AU">Ավստրալիա</territory>
			<territory type="AZ">Ադրբեջան</territory>
			<territory type="BA">Բոսնիա-Հերցեգովինա</territory>
			<territory type="BB">Բարբադոս</territory>
			<territory type="BD">Բանգլադեշ</territory>
			<territory type="BE">Բելգիա</territory>
			<territory type="BF">Բուրկինա Ֆասո</territory>
			<territory type="BG">Բուլղարիա</territory>
			<territory type="BH">Բահրեյն</territory>
			<territory type="BI">Բուրունդի</territory>
			<territory type="BJ">Բենին</territory>
			<territory type="BN">Բրունեյ</territory>
			<territory type="BO">Բոլիվիա</territory>
			<territory type="BR">Բրազիլիա</territory>
			<territory type="BS">Բահամներ</territory>
			<territory type="BT">Բուտան</territory>
			<territory type="BW">Բոտսվանա</territory>
			<territory type="BY">Բելոռուս</territory>
			<territory type="BZ">Բելիզ</territory>
			<territory type="CA">Կանադա</territory>
			<territory type="CF">Կենտրոնական Աֆրիկյան Հանրապետություն</territory>
			<territory type="CG">Կոնգո</territory>
			<territory type="CH">Շվեյցարիա</territory>
			<territory type="CI">Փղոսկրի Ափ</territory>
			<territory type="CL">Չիլի</territory>
			<territory type="CM">Կամերուն</territory>
			<territory type="CN">Չինաստան</territory>
			<territory type="CO">Կոլումբիա</territory>
			<territory type="CR">Կոստա-Ռիկա</territory>
			<territory type="CS">Սերբիա և Մոնտենեգրո</territory>
			<territory type="CU">Կուբա</territory>
			<territory type="CV">Կաբո-Վերդե</territory>
			<territory type="CY">Կիպրոս</territory>
			<territory type="CZ">Չեխիայի Հանրապետություն</territory>
			<territory type="DE">Գերմանիա</territory>
			<territory type="DJ">Ջիբուտի</territory>
			<territory type="DK">Դանիա</territory>
			<territory type="DM">Դոմինիկա</territory>
			<territory type="DO">Դոմինիկյան Հանրապետություն</territory>
			<territory type="DZ">Ալժիր</territory>
			<territory type="EC">Էկվադոր</territory>
			<territory type="EE">Էստոնիա</territory>
			<territory type="EG">Եգիպտոս</territory>
			<territory type="EH">Արեվմտյան Սահարա</territory>
			<territory type="ER">Էրիտրեա</territory>
			<territory type="ES">Իսպանիա</territory>
			<territory type="ET">Եթովպիա</territory>
			<territory type="FI">Ֆինլանդիա</territory>
			<territory type="FJ">Ֆիջի</territory>
			<territory type="FM">Միկրոնեզիա</territory>
			<territory type="FR">Ֆրանսիա</territory>
			<territory type="GA">Գաբոն</territory>
			<territory type="GB">Մեծ Բրիտանիա</territory>
			<territory type="GD">Գրենադա</territory>
			<territory type="GE">Վրաստան</territory>
			<territory type="GH">Գանա</territory>
			<territory type="GM">Գամբիա</territory>
			<territory type="GN">Գվինեա</territory>
			<territory type="GQ">Հասարակածային Գվինեա</territory>
			<territory type="GR">Հունաստան</territory>
			<territory type="GT">Գվատեմալա</territory>
			<territory type="GW">Գվինեա-Բիսաու</territory>
			<territory type="GY">Գայանա</territory>
			<territory type="HN">Հոնդուրաս</territory>
			<territory type="HR">Հորվաթիա</territory>
			<territory type="HT">Հաիթի</territory>
			<territory type="HU">Հունգարիա</territory>
			<territory type="ID">Ինդոնեզիա</territory>
			<territory type="IE">Իռլանդիա</territory>
			<territory type="IL">Իսրայել</territory>
			<territory type="IN">Հնդկաստան</territory>
			<territory type="IQ">Իրաք</territory>
			<territory type="IR">Իրան</territory>
			<territory type="IS">Իսլանդիա</territory>
			<territory type="IT">Իտալիա</territory>
			<territory type="JM">Ջամայկա</territory>
			<territory type="JO">Հորդանան</territory>
			<territory type="JP">Ճապոնիա</territory>
			<territory type="KE">Քենիա</territory>
			<territory type="KG">Կիրգիզստան</territory>
			<territory type="KH">Կամբոջա</territory>
			<territory type="KI">Կիրիբատի</territory>
			<territory type="KM">Կոմորոս</territory>
			<territory type="KN">Սենտ Կիտս-Նեվիս</territory>
			<territory type="KP">Հյուսիսային Կորեա</territory>
			<territory type="KR">Հարավային Կորեա</territory>
			<territory type="KW">Քուվեյթ</territory>
			<territory type="KZ">Ղազախստան</territory>
			<territory type="LA">Լաոս</territory>
			<territory type="LB">Լիբանան</territory>
			<territory type="LC">Սանտա Լուչիա</territory>
			<territory type="LI">Լիխտենշտեյն</territory>
			<territory type="LK">Շրի Լանկա</territory>
			<territory type="LR">Լիբերիա</territory>
			<territory type="LS">Լեսոտո</territory>
			<territory type="LT">Լիտվա</territory>
			<territory type="LU">Լյուքսեմբուրգ</territory>
			<territory type="LV">Լատվիա</territory>
			<territory type="LY">Լիբիա</territory>
			<territory type="MA">Մարոկո</territory>
			<territory type="MC">Մոնակո</territory>
			<territory type="MD">Մոլդովա</territory>
			<territory type="MG">Մադագասկար</territory>
			<territory type="MH">Մարշալյան կղզիներ</territory>
			<territory type="MK">Մակեդոնիա</territory>
			<territory type="ML">Մալի</territory>
			<territory type="MM">Մյանմա</territory>
			<territory type="MN">Մոնղոլիա</territory>
			<territory type="MR">Մավրիտանիա</territory>
			<territory type="MT">Մալթա</territory>
			<territory type="MU">Մավրիտոս</territory>
			<territory type="MV">Մալդիվներ</territory>
			<territory type="MW">Մալավի</territory>
			<territory type="MX">Մեքսիկա</territory>
			<territory type="MY">Մալայզիա</territory>
			<territory type="MZ">Մոզամբիկ</territory>
			<territory type="NA">Նամիբիա</territory>
			<territory type="NE">Նիգեր</territory>
			<territory type="NG">Նիգերիա</territory>
			<territory type="NI">Նիկարագուա</territory>
			<territory type="NL">Նիդերլանդեր</territory>
			<territory type="NO">Նորվեգիա</territory>
			<territory type="NP">Նեպալ</territory>
			<territory type="NR">Նաուրու</territory>
			<territory type="NZ">Նոր Զելանդիա</territory>
			<territory type="OM">Օման</territory>
			<territory type="PA">Պանամա</territory>
			<territory type="PE">Պերու</territory>
			<territory type="PG">Պապուա Նոր Գվինեա</territory>
			<territory type="PH">Ֆիլիպիններ</territory>
			<territory type="PK">Պակիստան</territory>
			<territory type="PL">Լեհաստան</territory>
			<territory type="PT">Պորտուգալիա</territory>
			<territory type="PW">Պալաու</territory>
			<territory type="PY">Պարագվայ</territory>
			<territory type="QA">Կատար</territory>
			<territory type="RO">Ռումինիա</territory>
			<territory type="RU">Ռուսաստան</territory>
			<territory type="RW">Ռուանդա</territory>
			<territory type="SA">Սաուդիան Արաբիա</territory>
			<territory type="SB">Սոլոմոնյան կղզիներ</territory>
			<territory type="SC">Սեյշելներ</territory>
			<territory type="SD">Սուդան</territory>
			<territory type="SE">Շվեդիա</territory>
			<territory type="SG">Սինգապուր</territory>
			<territory type="SI">Սլովենիա</territory>
			<territory type="SK">Սլովակիա</territory>
			<territory type="SL">Սյերա-Լեոնե</territory>
			<territory type="SM">Սան Մարինո</territory>
			<territory type="SN">Սենեգալ</territory>
			<territory type="SO">Սոմալի</territory>
			<territory type="SR">Սուրինամ</territory>
			<territory type="ST">Սան-Թոմե-Փրինսիպի</territory>
			<territory type="SV">Սալվադոր</territory>
			<territory type="SY">Սիրիա</territory>
			<territory type="SZ">Սվազիլենդ</territory>
			<territory type="TD">Չադ</territory>
			<territory type="TG">Տոգո</territory>
			<territory type="TH">Թաիլանդ</territory>
			<territory type="TJ">Տաճիկստան</territory>
			<territory type="TM">Թուրքմենստան</territory>
			<territory type="TN">Թունիս</territory>
			<territory type="TO">Տոնգա</territory>
			<territory type="TR">Թուրքիա</territory>
			<territory type="TT">Տրինիդադ-Տոբագո</territory>
			<territory type="TV">Տուվալու</territory>
			<territory type="TW">Թայվան</territory>
			<territory type="TZ">Տանզանիա</territory>
			<territory type="UA">Ուկրաինա</territory>
			<territory type="UG">Ուգանդա</territory>
			<territory type="US">Ամէրիկայի Միացյալ Նահանգնէր</territory>
			<territory type="UY">Ուրուգվայ</territory>
			<territory type="UZ">Ուզբեկստան</territory>
			<territory type="VA">Վատիկան</territory>
			<territory type="VC">Սենտ Վիսենտ-Գրենադիններ</territory>
			<territory type="VE">Վենեսուելա</territory>
			<territory type="VN">Վիետնամ</territory>
			<territory type="VU">Վանուատու</territory>
			<territory type="WS">Սամոա</territory>
			<territory type="YE">Եմեն</territory>
			<territory type="ZA">Հարավային Աֆրիկա</territory>
			<territory type="ZM">Զամբիա</territory>
			<territory type="ZW">Զիմբաբվե</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[֊ ՝ ՜ ՞ ՚ ՛ ՟ ա-ե և զ-ֆ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Յնր</month>
							<month type="2">Փտր</month>
							<month type="3">Մրտ</month>
							<month type="4">Ապր</month>
							<month type="5">Մյս</month>
							<month type="6">Յնս</month>
							<month type="7">Յլս</month>
							<month type="8">Օգս</month>
							<month type="9">Սեպ</month>
							<month type="10">Հոկ</month>
							<month type="11">Նոյ</month>
							<month type="12">Դեկ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Յունուար</month>
							<month type="2">Փետրուար</month>
							<month type="3">Մարտ</month>
							<month type="4">Ապրիլ</month>
							<month type="5">Մայիս</month>
							<month type="6">Յունիս</month>
							<month type="7">Յուլիս</month>
							<month type="8">Օգոստոս</month>
							<month type="9">Սեպտեմբեր</month>
							<month type="10">Հոկտեմբեր</month>
							<month type="11">Նոյեմբեր</month>
							<month type="12">Դեկտեմբեր</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Կիր</day>
							<day type="mon">Երկ</day>
							<day type="tue">Երք</day>
							<day type="wed">Չոր</day>
							<day type="thu">Հնգ</day>
							<day type="fri">Ուր</day>
							<day type="sat">Շաբ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Կիրակի</day>
							<day type="mon">Երկուշաբթի</day>
							<day type="tue">Երեքշաբթի</day>
							<day type="wed">Չորեքշաբթի</day>
							<day type="thu">Հինգշաբթի</day>
							<day type="fri">Ուրբաթ</day>
							<day type="sat">Շաբաթ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>Առ․</am>
				<pm>Եր․</pm>
				<eras>
					<eraAbbr>
						<era type="0">Ք․Ա․</era>
						<era type="1">Ք․Ե․</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>MM/dd/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">MMMM dd</dateFormatItem>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM/dd - E, MM/dd</greatestDifference>
							<greatestDifference id="d">E, MM/dd - E, MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM dd - E, MMM dd</greatestDifference>
							<greatestDifference id="d">E, MMM dd - E, MMM dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM dd - MMM dd</greatestDifference>
							<greatestDifference id="d">MMM dd-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd - MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd - MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, MM/dd/yy - E, MM/dd/yy</greatestDifference>
							<greatestDifference id="d">E, MM/dd/yy - E, MM/dd/yy</greatestDifference>
							<greatestDifference id="y">E, MM/dd/yy - E, MM/dd/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy - E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM dd - MMM dd, yyyy</greatestDifference>
							<greatestDifference id="d">MMM dd-dd, yyyy</greatestDifference>
							<greatestDifference id="y">MMM dd, yyyy - MMM dd, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="d">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="y">MM/dd/yy - MM/dd/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AMD">
				<symbol>դր.</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[����##Locale/Data/ko_KR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ko"/>
		<territory type="KR"/>
	</identity>
</ldml>
PKpG[����##Locale/Data/ss_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="ss"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[��v�vLocale/Data/ru.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.126 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="ru"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">афар</language>
			<language type="ab">абхазский</language>
			<language type="ace">ачехский</language>
			<language type="ach">ачоли</language>
			<language type="ada">адангме</language>
			<language type="ady">адыгейский</language>
			<language type="ae">авестийский</language>
			<language type="af">африкаанс</language>
			<language type="afa">афразийский язык</language>
			<language type="afh">африхили</language>
			<language type="ain">айну</language>
			<language type="ak">акан</language>
			<language type="akk">аккадский</language>
			<language type="ale">алеутский</language>
			<language type="alg">алгонкинские языки</language>
			<language type="alt">южноалтайский</language>
			<language type="am">амхарский</language>
			<language type="an">арагонский</language>
			<language type="ang">староанглийский</language>
			<language type="anp">ангика</language>
			<language type="apa">апачские языки</language>
			<language type="ar">арабский</language>
			<language type="arc">арамейский</language>
			<language type="arn">арауканский</language>
			<language type="arp">арапахо</language>
			<language type="art">искусственный язык</language>
			<language type="arw">аравакский</language>
			<language type="as">ассамский</language>
			<language type="ast">астурийский</language>
			<language type="ath">атапачские языки</language>
			<language type="aus">австралийский язык</language>
			<language type="av">аварский</language>
			<language type="awa">авадхи</language>
			<language type="ay">аймара</language>
			<language type="az">азербайджанский</language>
			<language type="ba">башкирский</language>
			<language type="bad">банда</language>
			<language type="bai">бамилеке языки</language>
			<language type="bal">белуджский</language>
			<language type="ban">балийский</language>
			<language type="bas">баса</language>
			<language type="bat">балтийский язык</language>
			<language type="be">белорусский</language>
			<language type="bej">беджа</language>
			<language type="bem">бемба</language>
			<language type="ber">берберский</language>
			<language type="bg">болгарский</language>
			<language type="bh">бихари</language>
			<language type="bho">бходжпури</language>
			<language type="bi">бислама</language>
			<language type="bik">бикольский</language>
			<language type="bin">бини</language>
			<language type="bla">сиксика</language>
			<language type="bm">бамбарийский</language>
			<language type="bn">бенгальский</language>
			<language type="bnt">банту</language>
			<language type="bo">тибетский</language>
			<language type="br">бретонский</language>
			<language type="bra">брауи</language>
			<language type="bs">боснийский</language>
			<language type="btk">батакский</language>
			<language type="bua">бурятский</language>
			<language type="bug">бугийский</language>
			<language type="byn">билин (блин)</language>
			<language type="ca">каталанский</language>
			<language type="cad">каддо</language>
			<language type="cai">язык индейцев Центральной Америки</language>
			<language type="car">кариб</language>
			<language type="cau">кавказский язык</language>
			<language type="cch">атсам</language>
			<language type="ce">чеченский</language>
			<language type="ceb">кебуано</language>
			<language type="cel">кельтские другие</language>
			<language type="ch">чаморро</language>
			<language type="chb">чибча</language>
			<language type="chg">чагатайский</language>
			<language type="chk">чукотский</language>
			<language type="chm">марийский (черемисский)</language>
			<language type="chn">чинук жаргон</language>
			<language type="cho">чоктав</language>
			<language type="chp">чипевайян</language>
			<language type="chr">чероки</language>
			<language type="chy">чейенн</language>
			<language type="cmc">чамский язык</language>
			<language type="co">корсиканский</language>
			<language type="cop">коптский</language>
			<language type="cpe">англо-креольские и пиджин</language>
			<language type="cpf">франко-креольские и пиджины</language>
			<language type="cpp">португало-креольские и пиджины</language>
			<language type="cr">криийский</language>
			<language type="crh">крымско-татарский</language>
			<language type="crp">креольские и пиджины</language>
			<language type="cs">чешский</language>
			<language type="csb">кашубианский</language>
			<language type="cu">церковнославянский</language>
			<language type="cus">кушитский язык</language>
			<language type="cv">чувашский</language>
			<language type="cy">валлийский</language>
			<language type="da">датский</language>
			<language type="dak">дакота</language>
			<language type="dar">даргва</language>
			<language type="day">даяк</language>
			<language type="de">немецкий</language>
			<language type="de_AT">австрийский немецкий</language>
			<language type="de_CH">Швейцарский верхненемецкий</language>
			<language type="del">делаварский</language>
			<language type="den">славянский</language>
			<language type="dgr">догриб</language>
			<language type="din">динка</language>
			<language type="doi">догри</language>
			<language type="dra">дравидийский язык</language>
			<language type="dsb">нижнелужицкий</language>
			<language type="dua">дуала</language>
			<language type="dum">средненидерландский</language>
			<language type="dv">мальдивский</language>
			<language type="dyu">диула (дьюла)</language>
			<language type="dz">дзонг-кэ</language>
			<language type="ee">эве</language>
			<language type="efi">эфик</language>
			<language type="egy">древнеегипетский</language>
			<language type="eka">экаджук</language>
			<language type="el">греческий</language>
			<language type="elx">эламский</language>
			<language type="en">английский</language>
			<language type="en_AU">австралийский английский</language>
			<language type="en_CA">Канадский английский</language>
			<language type="en_GB">британский английский</language>
			<language type="en_US">американский английский</language>
			<language type="enm">среднеанглийский</language>
			<language type="eo">эсперанто</language>
			<language type="es">испанский</language>
			<language type="es_419">Латино-американский испанский</language>
			<language type="es_ES">Испанский иберийский</language>
			<language type="et">эстонский</language>
			<language type="eu">баскский</language>
			<language type="ewo">эвондо</language>
			<language type="fa">персидский</language>
			<language type="fan">фанг</language>
			<language type="fat">фанти</language>
			<language type="ff">фулах</language>
			<language type="fi">финский</language>
			<language type="fil">филиппинский</language>
			<language type="fiu">финно-угорский язык</language>
			<language type="fj">фиджи</language>
			<language type="fo">фарерский</language>
			<language type="fon">фон</language>
			<language type="fr">французский</language>
			<language type="fr_CA">Канадский французский</language>
			<language type="fr_CH">Швейцарский французский</language>
			<language type="frm">среднефранцузский</language>
			<language type="fro">старофранцузский</language>
			<language type="frr">фризский северный</language>
			<language type="frs">восточный фризский</language>
			<language type="fur">фриульский</language>
			<language type="fy">фризский</language>
			<language type="ga">ирландский</language>
			<language type="gaa">га</language>
			<language type="gay">гайо</language>
			<language type="gba">гбая</language>
			<language type="gd">гэльский</language>
			<language type="gem">германский язык</language>
			<language type="gez">геэз</language>
			<language type="gil">гильбертский</language>
			<language type="gl">галисийский</language>
			<language type="gmh">средневерхненемецкий</language>
			<language type="gn">гуарани</language>
			<language type="goh">древневерхненемецкий</language>
			<language type="gon">гонди</language>
			<language type="gor">горонтало</language>
			<language type="got">готский</language>
			<language type="grb">гребо</language>
			<language type="grc">древнегреческий</language>
			<language type="gsw">Швейцарский немецкий</language>
			<language type="gu">гуджарати</language>
			<language type="gv">мэнский</language>
			<language type="gwi">гвичин</language>
			<language type="ha">хауса</language>
			<language type="hai">хайда</language>
			<language type="haw">гавайский</language>
			<language type="he">иврит</language>
			<language type="hi">хинди</language>
			<language type="hil">хилигайнон</language>
			<language type="him">химачали</language>
			<language type="hit">хеттский</language>
			<language type="hmn">хмонг</language>
			<language type="ho">хиримоту</language>
			<language type="hr">хорватский</language>
			<language type="hsb">верхнелужицкий</language>
			<language type="ht">гаитянский</language>
			<language type="hu">венгерский</language>
			<language type="hup">хупа</language>
			<language type="hy">армянский</language>
			<language type="hz">гереро</language>
			<language type="ia">интерлингва</language>
			<language type="iba">ибанский</language>
			<language type="id">индонезийский</language>
			<language type="ie">интерлингве</language>
			<language type="ig">игбо</language>
			<language type="ii">сычуань</language>
			<language type="ijo">иджо</language>
			<language type="ik">инупиак</language>
			<language type="ilo">илоко</language>
			<language type="inc">индийский язык</language>
			<language type="ine">индоевропейский язык</language>
			<language type="inh">ингушский</language>
			<language type="io">идо</language>
			<language type="ira">иранский язык</language>
			<language type="iro">ирокезские языки</language>
			<language type="is">исландский</language>
			<language type="it">итальянский</language>
			<language type="iu">инуктитут</language>
			<language type="ja">японский</language>
			<language type="jbo">ложбан</language>
			<language type="jpr">еврейско-персидский</language>
			<language type="jrb">еврейско-арабский</language>
			<language type="jv">яванский</language>
			<language type="ka">грузинский</language>
			<language type="kaa">каракалпакский</language>
			<language type="kab">кабильский</language>
			<language type="kac">качинский</language>
			<language type="kaj">каджи</language>
			<language type="kam">камба</language>
			<language type="kar">каренский</language>
			<language type="kaw">кави</language>
			<language type="kbd">кабардинский</language>
			<language type="kcg">тьяп</language>
			<language type="kfo">коро</language>
			<language type="kg">конго</language>
			<language type="kha">кхаси</language>
			<language type="khi">койсанский язык</language>
			<language type="kho">хотанский</language>
			<language type="ki">кикуйю</language>
			<language type="kj">кунама</language>
			<language type="kk">казахский</language>
			<language type="kl">эскимосский (гренландский)</language>
			<language type="km">кхмерский</language>
			<language type="kmb">кимбундийский</language>
			<language type="kn">каннада</language>
			<language type="ko">корейский</language>
			<language type="kok">конкани</language>
			<language type="kos">косраенский</language>
			<language type="kpe">кпелле</language>
			<language type="kr">канури</language>
			<language type="krc">карачаево-балкарский</language>
			<language type="krl">карельский</language>
			<language type="kro">кру</language>
			<language type="kru">курух</language>
			<language type="ks">кашмири</language>
			<language type="ku">курдский</language>
			<language type="kum">кумыкский</language>
			<language type="kut">кутенаи</language>
			<language type="kv">коми</language>
			<language type="kw">корнийский</language>
			<language type="ky">киргизский</language>
			<language type="la">латинский</language>
			<language type="lad">ладино</language>
			<language type="lah">лахнда</language>
			<language type="lam">ламба</language>
			<language type="lb">люксембургский</language>
			<language type="lez">лезгинский</language>
			<language type="lg">ганда</language>
			<language type="li">лимбургский</language>
			<language type="ln">лингала</language>
			<language type="lo">лаосский</language>
			<language type="lol">монго</language>
			<language type="loz">лози</language>
			<language type="lt">литовский</language>
			<language type="lu">луба-катанга</language>
			<language type="lua">луба-лулуа</language>
			<language type="lui">луисеньо</language>
			<language type="lun">лунда</language>
			<language type="luo">луо (Кения и Танзания)</language>
			<language type="lus">лушай</language>
			<language type="lv">латышский</language>
			<language type="mad">мадурский</language>
			<language type="mag">магахи</language>
			<language type="mai">майтхили</language>
			<language type="mak">макассарский</language>
			<language type="man">мандинго</language>
			<language type="map">австронезийский</language>
			<language type="mas">масаи</language>
			<language type="mdf">мокшанский</language>
			<language type="mdr">мандарский</language>
			<language type="men">менде</language>
			<language type="mg">малагасийский</language>
			<language type="mga">среднеирландский</language>
			<language type="mh">маршалльский</language>
			<language type="mi">маори</language>
			<language type="mic">микмак</language>
			<language type="min">минангкабау</language>
			<language type="mis">смешанные языки</language>
			<language type="mk">македонский</language>
			<language type="mkh">монкхмерский язык</language>
			<language type="ml">малаялам</language>
			<language type="mn">монгольский</language>
			<language type="mnc">маньчжурский</language>
			<language type="mni">манипурский</language>
			<language type="mno">манобо языки</language>
			<language type="mo">молдавский</language>
			<language type="moh">мохаук</language>
			<language type="mos">моси</language>
			<language type="mr">маратхи</language>
			<language type="ms">малайский</language>
			<language type="mt">мальтийский</language>
			<language type="mul">несколько языков</language>
			<language type="mun">мунда языки</language>
			<language type="mus">крик</language>
			<language type="mwl">мирандийский</language>
			<language type="mwr">марвари</language>
			<language type="my">бирманский</language>
			<language type="myn">майя языки</language>
			<language type="myv">эрзя</language>
			<language type="na">науру</language>
			<language type="nah">ацтекский</language>
			<language type="nai">язык индейцев Северной Америки</language>
			<language type="nap">неаполитанский</language>
			<language type="nb">норвежский букмол</language>
			<language type="nd">ндебели (северный)</language>
			<language type="nds">нижнегерманский</language>
			<language type="ne">непальский</language>
			<language type="new">неварский</language>
			<language type="ng">ндонга</language>
			<language type="nia">ниас</language>
			<language type="nic">нигер-кордофанский язык</language>
			<language type="niu">ниуэ</language>
			<language type="nl">голландский</language>
			<language type="nl_BE">Бельгийский фламандский</language>
			<language type="nn">норвежский нюнорск</language>
			<language type="no">норвежский</language>
			<language type="nog">ногайский</language>
			<language type="non">старонорвежский</language>
			<language type="nqo">нко</language>
			<language type="nr">ндебели южный</language>
			<language type="nso">сото северный</language>
			<language type="nub">нубийские языки</language>
			<language type="nv">навахо</language>
			<language type="nwc">невари (классический)</language>
			<language type="ny">ньянджа</language>
			<language type="nym">ньямвези</language>
			<language type="nyn">ньянколе</language>
			<language type="nyo">ньоро</language>
			<language type="nzi">нзима</language>
			<language type="oc">окситанский</language>
			<language type="oj">оджибва</language>
			<language type="om">оромо</language>
			<language type="or">ория</language>
			<language type="os">осетинский</language>
			<language type="osa">оседжи</language>
			<language type="ota">старотурецкий</language>
			<language type="oto">отомангские языки</language>
			<language type="pa">панджаби (пенджаби)</language>
			<language type="paa">папуасский язык</language>
			<language type="pag">пангасинан</language>
			<language type="pal">пехлевийский</language>
			<language type="pam">пампанга</language>
			<language type="pap">папьяменто</language>
			<language type="pau">палау</language>
			<language type="peo">староперсидский</language>
			<language type="phi">филиппинский язык</language>
			<language type="phn">финикийский</language>
			<language type="pi">пали</language>
			<language type="pl">польский</language>
			<language type="pon">понапе</language>
			<language type="pra">пракриты языки</language>
			<language type="pro">старопровансальский</language>
			<language type="ps">пашто (пушту)</language>
			<language type="pt">португальский</language>
			<language type="pt_BR">бразильский португальский</language>
			<language type="pt_PT">Португальский иберийский</language>
			<language type="qu">кечуа</language>
			<language type="raj">раджастхани</language>
			<language type="rap">рапануи</language>
			<language type="rar">раротонганский</language>
			<language type="rm">ретороманский</language>
			<language type="rn">рунди</language>
			<language type="ro">румынский</language>
			<language type="roa">романский язык</language>
			<language type="rom">цыганский</language>
			<language type="root">корневой язык</language>
			<language type="ru">русский</language>
			<language type="rup">арумынский</language>
			<language type="rw">киньяруанда</language>
			<language type="sa">санскрит</language>
			<language type="sad">сандаве</language>
			<language type="sah">якутский</language>
			<language type="sai">язык индейцев Южной Америки</language>
			<language type="sal">салишские языки</language>
			<language type="sam">самаритянский арамейский</language>
			<language type="sas">сасаки</language>
			<language type="sat">сантали</language>
			<language type="sc">сардинский</language>
			<language type="scn">сицилийский</language>
			<language type="sco">шотландский</language>
			<language type="sd">синдхи</language>
			<language type="se">саамский (северный)</language>
			<language type="sel">селькупский</language>
			<language type="sem">семитский язык</language>
			<language type="sg">санго</language>
			<language type="sga">староирландский</language>
			<language type="sgn">язык глухонемых</language>
			<language type="sh">сербскохорватский</language>
			<language type="shn">шанский</language>
			<language type="si">сингальский</language>
			<language type="sid">сидама</language>
			<language type="sio">сиу языки</language>
			<language type="sit">синотибетский язык</language>
			<language type="sk">словацкий</language>
			<language type="sl">словенский</language>
			<language type="sla">славянский язык</language>
			<language type="sm">самоанский</language>
			<language type="sma">саамский (южный)</language>
			<language type="smi">саамские языки</language>
			<language type="smj">луле-саамский</language>
			<language type="smn">инари-саамский</language>
			<language type="sms">скольт-саамский</language>
			<language type="sn">шона</language>
			<language type="snk">сонинке</language>
			<language type="so">сомали</language>
			<language type="sog">согдийский</language>
			<language type="son">cонгаи</language>
			<language type="sq">албанский</language>
			<language type="sr">сербский</language>
			<language type="srn">сранан тонго</language>
			<language type="srr">серер</language>
			<language type="ss">свази</language>
			<language type="ssa">нило-сахарский язык</language>
			<language type="st">сото южный</language>
			<language type="su">сунданский</language>
			<language type="suk">сукума</language>
			<language type="sus">сусу</language>
			<language type="sux">шумерский</language>
			<language type="sv">шведский</language>
			<language type="sw">суахили</language>
			<language type="syc">классический сирийский</language>
			<language type="syr">сирийский</language>
			<language type="ta">тамильский</language>
			<language type="tai">тайский язык</language>
			<language type="te">телугу</language>
			<language type="tem">темне</language>
			<language type="ter">терено</language>
			<language type="tet">тетум</language>
			<language type="tg">таджикский</language>
			<language type="th">тайский</language>
			<language type="ti">тигринья</language>
			<language type="tig">тигре</language>
			<language type="tiv">тиви</language>
			<language type="tk">туркменский</language>
			<language type="tkl">токелайский</language>
			<language type="tl">тагалог</language>
			<language type="tlh">клингонский</language>
			<language type="tli">тлингит</language>
			<language type="tmh">тамашек</language>
			<language type="tn">тсвана</language>
			<language type="to">тонга</language>
			<language type="tog">ньяса (тонга)</language>
			<language type="tpi">ток-писин</language>
			<language type="tr">турецкий</language>
			<language type="ts">тсонга</language>
			<language type="tsi">цимшиан</language>
			<language type="tt">татарский</language>
			<language type="tum">тумбука</language>
			<language type="tup">тупи</language>
			<language type="tut">алтайский язык</language>
			<language type="tvl">тувалу</language>
			<language type="tw">тви</language>
			<language type="ty">таитянский</language>
			<language type="tyv">тувинский</language>
			<language type="udm">удмуртский</language>
			<language type="ug">уйгурский</language>
			<language type="uga">угаритский</language>
			<language type="uk">украинский</language>
			<language type="umb">умбунду</language>
			<language type="und">неизвестный или недействительный язык</language>
			<language type="ur">урду</language>
			<language type="uz">узбекский</language>
			<language type="vai">ваи</language>
			<language type="ve">венда</language>
			<language type="vi">вьетнамский</language>
			<language type="vo">волапюк</language>
			<language type="vot">водский</language>
			<language type="wa">валлонский</language>
			<language type="wak">вакашские языки</language>
			<language type="wal">воламо</language>
			<language type="war">варай</language>
			<language type="was">вашо</language>
			<language type="wen">лужицкие языки</language>
			<language type="wo">волоф</language>
			<language type="xal">калмыцкий</language>
			<language type="xh">ксоза</language>
			<language type="yao">яо</language>
			<language type="yap">яп</language>
			<language type="yi">идиш</language>
			<language type="yo">йоруба</language>
			<language type="ypk">юпикский язык</language>
			<language type="za">чжуань</language>
			<language type="zap">сапотекский</language>
			<language type="zbl">блиссимволика</language>
			<language type="zen">зенагский</language>
			<language type="zh">китайский</language>
			<language type="zh_Hans">упрощенный китайский</language>
			<language type="zh_Hant">Традиционный китайский</language>
			<language type="znd">занде</language>
			<language type="zu">зулу</language>
			<language type="zun">зуньи</language>
			<language type="zxx">без языкового содержания</language>
			<language type="zza">заза</language>
		</languages>
		<scripts>
			<script type="Arab">Арабская</script>
			<script type="Armi">Арамейская</script>
			<script type="Armn">Армянская</script>
			<script type="Avst">Авестийская</script>
			<script type="Bali">Балийская</script>
			<script type="Batk">Батакская</script>
			<script type="Beng">Бенгальская</script>
			<script type="Blis">Блиссимволика</script>
			<script type="Bopo">Бопомофо</script>
			<script type="Brah">Брахми</script>
			<script type="Brai">Брайля</script>
			<script type="Bugi">Бугинизийская</script>
			<script type="Buhd">Бухид</script>
			<script type="Cakm">Чакмийская</script>
			<script type="Cans">Унифицированные Символы Канадских Аборигенов</script>
			<script type="Cari">Карийская</script>
			<script type="Cham">Чамская</script>
			<script type="Cher">Чероки</script>
			<script type="Cirt">Кирт</script>
			<script type="Copt">Коптская</script>
			<script type="Cprt">Кипрская</script>
			<script type="Cyrl">Кириллица</script>
			<script type="Cyrs">Старославянская</script>
			<script type="Deva">Деванагари</script>
			<script type="Dsrt">Дезерет</script>
			<script type="Egyd">Египетская демотическая</script>
			<script type="Egyh">Египетская иератическая</script>
			<script type="Egyp">Египетская иероглифическая</script>
			<script type="Ethi">Эфиопская</script>
			<script type="Geok">Грузинская хуцури</script>
			<script type="Geor">Грузинская</script>
			<script type="Glag">Глаголица</script>
			<script type="Goth">Готская</script>
			<script type="Grek">Греческая</script>
			<script type="Gujr">Гуджарати</script>
			<script type="Guru">Гурмукхи</script>
			<script type="Hang">Хангул</script>
			<script type="Hani">Китайская</script>
			<script type="Hano">Хануну</script>
			<script type="Hans">Упрощенная китайская</script>
			<script type="Hant">Традиционная китайская</script>
			<script type="Hebr">Иврит</script>
			<script type="Hira">Хирагана</script>
			<script type="Hmng">Пахау хмонг</script>
			<script type="Hrkt">Катакана или хирагана</script>
			<script type="Hung">Старовенгерская</script>
			<script type="Inds">Хараппская (письменность долины Инда)</script>
			<script type="Ital">Староитальянская</script>
			<script type="Java">Яванская</script>
			<script type="Jpan">Японская</script>
			<script type="Kali">Кайа</script>
			<script type="Kana">Катакана</script>
			<script type="Khar">Кхароштхи</script>
			<script type="Khmr">Кхмерская</script>
			<script type="Knda">Каннада</script>
			<script type="Kore">Корейская</script>
			<script type="Kthi">Кайтхи</script>
			<script type="Lana">Ланна</script>
			<script type="Laoo">Лаосская</script>
			<script type="Latf">Латинская фрактура</script>
			<script type="Latg">Гэльская латинская</script>
			<script type="Latn">Латиница</script>
			<script type="Lepc">Лепха</script>
			<script type="Limb">Лимбу</script>
			<script type="Lina">Линейное письмо А</script>
			<script type="Linb">Линейное письмо Б</script>
			<script type="Lyci">Лициан</script>
			<script type="Lydi">Лидийская</script>
			<script type="Mand">Мандейская</script>
			<script type="Mani">Манихейская</script>
			<script type="Maya">Майя</script>
			<script type="Mero">Мероитская</script>
			<script type="Mlym">Малаяльская</script>
			<script type="Mong">Монгольская</script>
			<script type="Moon">Азбука Муна</script>
			<script type="Mtei">Манипури</script>
			<script type="Mymr">Майанмарская</script>
			<script type="Nkoo">Нко</script>
			<script type="Ogam">Огамическая</script>
			<script type="Olck">Ол Чики</script>
			<script type="Orkh">Орхоно-енисейская</script>
			<script type="Orya">Ория</script>
			<script type="Osma">Османская</script>
			<script type="Perm">Древнепермская</script>
			<script type="Phag">Пагспа</script>
			<script type="Phlv">Пахлави книжная</script>
			<script type="Phnx">Финикийская</script>
			<script type="Plrd">Поллардовская фонетика</script>
			<script type="Qaai">Унаследованная</script>
			<script type="Rjng">Реджангская</script>
			<script type="Roro">Ронго-ронго</script>
			<script type="Runr">Руническая</script>
			<script type="Samr">Самаритянская</script>
			<script type="Sara">Сарати</script>
			<script type="Saur">Саураштра</script>
			<script type="Sgnw">Язык знаков</script>
			<script type="Shaw">Алфавит Шоу</script>
			<script type="Sinh">Сингальская</script>
			<script type="Sund">Сунданская</script>
			<script type="Sylo">Силоти Нагри</script>
			<script type="Syrc">Сирийская</script>
			<script type="Syre">Сирийская эстрангело</script>
			<script type="Syrj">Западносирийская</script>
			<script type="Syrn">Восточно-сирийская</script>
			<script type="Tagb">Тагбанва</script>
			<script type="Tale">Тайский Ле</script>
			<script type="Talu">Новый Тайский Ле</script>
			<script type="Taml">Тамильская</script>
			<script type="Telu">Телугу</script>
			<script type="Teng">Тенгварская</script>
			<script type="Tfng">Древнеливийская</script>
			<script type="Tglg">Тагалог</script>
			<script type="Thaa">Таана</script>
			<script type="Thai">Тайская</script>
			<script type="Tibt">Тибетская</script>
			<script type="Ugar">Угаритская</script>
			<script type="Vaii">Вайская</script>
			<script type="Visp">Видимая речь</script>
			<script type="Xpeo">Староперсидская</script>
			<script type="Xsux">Шумеро-аккадская клинопись</script>
			<script type="Yiii">Йи (ицзу)</script>
			<script type="Zxxx">Ненаписанная</script>
			<script type="Zyyy">Общепринятая</script>
			<script type="Zzzz">Неизвестная или недействительная письменность</script>
		</scripts>
		<territories>
			<territory type="001">Мир</territory>
			<territory type="002">Африка</territory>
			<territory type="003">Северная Америка</territory>
			<territory type="005">Южная Америка</territory>
			<territory type="009">Океания</territory>
			<territory type="011">Западная Африка</territory>
			<territory type="013">Центральная Америка</territory>
			<territory type="014">Восточная Африка</territory>
			<territory type="015">Северная Африка</territory>
			<territory type="017">Центральная Африка</territory>
			<territory type="018">Южная Африка [018]</territory>
			<territory type="019">Центральная и Южная Америка</territory>
			<territory type="021">Северная Америка (021)</territory>
			<territory type="029">Карибы</territory>
			<territory type="030">Восточная Азия</territory>
			<territory type="034">Южная Азия</territory>
			<territory type="035">Юго-Восточная Азия</territory>
			<territory type="039">Южная Европа</territory>
			<territory type="053">Австралия и Новая Зеландия</territory>
			<territory type="054">Меланезия</territory>
			<territory type="057">Микронезия</territory>
			<territory type="061">Полинезия</territory>
			<territory type="062">Юг Средней Азии</territory>
			<territory type="142">Азия</territory>
			<territory type="143">Средняя Азия</territory>
			<territory type="145">Ближний и Средний Восток</territory>
			<territory type="150">Европа</territory>
			<territory type="151">Восточная Европа</territory>
			<territory type="154">Северная Европа</territory>
			<territory type="155">Западная Европа</territory>
			<territory type="172">СНГ</territory>
			<territory type="419">Латинская Америка и Карибские о-ва</territory>
			<territory type="830">Нормандские острова</territory>
			<territory type="AD">Андорра</territory>
			<territory type="AE">Объединенные Арабские Эмираты</territory>
			<territory type="AF">Афганистан</territory>
			<territory type="AG">Антигуа и Барбуда</territory>
			<territory type="AI">Ангуилла</territory>
			<territory type="AL">Албания</territory>
			<territory type="AM">Армения</territory>
			<territory type="AN">Нидерландские Антильские острова</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктика</territory>
			<territory type="AR">Аргентина</territory>
			<territory type="AS">Американское Самоа</territory>
			<territory type="AT">Австрия</territory>
			<territory type="AU">Австралия</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AX">Аландские острова</territory>
			<territory type="AZ">Азербайджан</territory>
			<territory type="BA">Босния и Герцеговина</territory>
			<territory type="BB">Барбадос</territory>
			<territory type="BD">Бангладеш</territory>
			<territory type="BE">Бельгия</territory>
			<territory type="BF">Буркина Фасо</territory>
			<territory type="BG">Болгария</territory>
			<territory type="BH">Бахрейн</territory>
			<territory type="BI">Бурунди</territory>
			<territory type="BJ">Бенин</territory>
			<territory type="BL">Остров Святого Бартоломея</territory>
			<territory type="BM">Бермудские Острова</territory>
			<territory type="BN">Бруней Даруссалам</territory>
			<territory type="BO">Боливия</territory>
			<territory type="BR">Бразилия</territory>
			<territory type="BS">Багамские острова</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Остров Буве</territory>
			<territory type="BW">Ботсвана</territory>
			<territory type="BY">Беларусь</territory>
			<territory type="BZ">Белиз</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Кокосовые острова</territory>
			<territory type="CD">Демократическая Республика Конго</territory>
			<territory type="CF">Центрально-Африканская Республика</territory>
			<territory type="CG">Конго</territory>
			<territory type="CH">Швейцария</territory>
			<territory type="CI">Кот д’Ивуар</territory>
			<territory type="CK">Острова Кука</territory>
			<territory type="CL">Чили</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Китай</territory>
			<territory type="CO">Колумбия</territory>
			<territory type="CR">Коста-Рика</territory>
			<territory type="CS">Сербия и Черногория</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Острова Зеленого Мыса</territory>
			<territory type="CX">Остров Рождества</territory>
			<territory type="CY">Кипр</territory>
			<territory type="CZ">Чешская республика</territory>
			<territory type="DE">Германия</territory>
			<territory type="DJ">Джибути</territory>
			<territory type="DK">Дания</territory>
			<territory type="DM">Остров Доминика</territory>
			<territory type="DO">Доминиканская Республика</territory>
			<territory type="DZ">Алжир</territory>
			<territory type="EC">Эквадор</territory>
			<territory type="EE">Эстония</territory>
			<territory type="EG">Египет</territory>
			<territory type="EH">Западная Сахара</territory>
			<territory type="ER">Эритрея</territory>
			<territory type="ES">Испания</territory>
			<territory type="ET">Эфиопия</territory>
			<territory type="FI">Финляндия</territory>
			<territory type="FJ">Фиджи</territory>
			<territory type="FK">Фолклендские острова</territory>
			<territory type="FM">Федеративные Штаты Микронезии</territory>
			<territory type="FO">Фарерские острова</territory>
			<territory type="FR">Франция</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Великобритания</territory>
			<territory type="GD">Гренада</territory>
			<territory type="GE">Грузия</territory>
			<territory type="GF">Французская Гвиана</territory>
			<territory type="GG">Гернси</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гибралтар</territory>
			<territory type="GL">Гренландия</territory>
			<territory type="GM">Гамбия</territory>
			<territory type="GN">Гвинея</territory>
			<territory type="GP">Гваделупа</territory>
			<territory type="GQ">Экваториальная Гвинея</territory>
			<territory type="GR">Греция</territory>
			<territory type="GS">Южная Джорджия и Южные Сандвичевы Острова</territory>
			<territory type="GT">Гватемала</territory>
			<territory type="GU">Гуам</territory>
			<territory type="GW">Гвинея-Биссау</territory>
			<territory type="GY">Гайана</territory>
			<territory type="HK">Гонконг</territory>
			<territory type="HM">Острова Херд и Макдональд</territory>
			<territory type="HN">Гондурас</territory>
			<territory type="HR">Хорватия</territory>
			<territory type="HT">Гаити</territory>
			<territory type="HU">Венгрия</territory>
			<territory type="ID">Индонезия</territory>
			<territory type="IE">Ирландия</territory>
			<territory type="IL">Израиль</territory>
			<territory type="IM">Остров Мэн</territory>
			<territory type="IN">Индия</territory>
			<territory type="IO">Британская территория в Индийском океане</territory>
			<territory type="IQ">Ирак</territory>
			<territory type="IR">Иран</territory>
			<territory type="IS">Исландия</territory>
			<territory type="IT">Италия</territory>
			<territory type="JE">Джерси</territory>
			<territory type="JM">Ямайка</territory>
			<territory type="JO">Иордания</territory>
			<territory type="JP">Япония</territory>
			<territory type="KE">Кения</territory>
			<territory type="KG">Кыргызстан</territory>
			<territory type="KH">Камбоджа</territory>
			<territory type="KI">Кирибати</territory>
			<territory type="KM">Коморские Острова</territory>
			<territory type="KN">Сент-Киттс и Невис</territory>
			<territory type="KP">Корейская Народно-Демократическая Республика</territory>
			<territory type="KR">Республика Корея</territory>
			<territory type="KW">Кувейт</territory>
			<territory type="KY">Каймановы острова</territory>
			<territory type="KZ">Казахстан</territory>
			<territory type="LA">Лаос</territory>
			<territory type="LB">Ливан</territory>
			<territory type="LC">Сент-Люсия</territory>
			<territory type="LI">Лихтенштейн</territory>
			<territory type="LK">Шри-Ланка</territory>
			<territory type="LR">Либерия</territory>
			<territory type="LS">Лесото</territory>
			<territory type="LT">Литва</territory>
			<territory type="LU">Люксембург</territory>
			<territory type="LV">Латвия</territory>
			<territory type="LY">Ливия</territory>
			<territory type="MA">Марокко</territory>
			<territory type="MC">Монако</territory>
			<territory type="MD">Молдова</territory>
			<territory type="ME">Черногория</territory>
			<territory type="MF">Остров Святого Мартина</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршалловы Острова</territory>
			<territory type="MK">Македония</territory>
			<territory type="ML">Мали</territory>
			<territory type="MM">Мьянма</territory>
			<territory type="MN">Монголия</territory>
			<territory type="MO">Макао</territory>
			<territory type="MP">Северные Марианские Острова</territory>
			<territory type="MQ">Мартиник</territory>
			<territory type="MR">Мавритания</territory>
			<territory type="MS">Монсеррат</territory>
			<territory type="MT">Мальта</territory>
			<territory type="MU">Маврикий</territory>
			<territory type="MV">Мальдивы</territory>
			<territory type="MW">Малави</territory>
			<territory type="MX">Мексика</territory>
			<territory type="MY">Малайзия</territory>
			<territory type="MZ">Мозамбик</territory>
			<territory type="NA">Намибия</territory>
			<territory type="NC">Новая Каледония</territory>
			<territory type="NE">Нигер</territory>
			<territory type="NF">Остров Норфолк</territory>
			<territory type="NG">Нигерия</territory>
			<territory type="NI">Никарагуа</territory>
			<territory type="NL">Нидерланды</territory>
			<territory type="NO">Норвегия</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Ниуе</territory>
			<territory type="NZ">Новая Зеландия</territory>
			<territory type="OM">Оман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Французская Полинезия</territory>
			<territory type="PG">Папуа-Новая Гвинея</territory>
			<territory type="PH">Филиппины</territory>
			<territory type="PK">Пакистан</territory>
			<territory type="PL">Польша</territory>
			<territory type="PM">Сен-Пьер и Микелон</territory>
			<territory type="PN">Питкерн</territory>
			<territory type="PR">Пуэрто-Рико</territory>
			<territory type="PS">Палестинская автономия</territory>
			<territory type="PT">Португалия</territory>
			<territory type="PW">Палау</territory>
			<territory type="PY">Парагвай</territory>
			<territory type="QA">Катар</territory>
			<territory type="QO">Внешняя Океания</territory>
			<territory type="QU">Европейский союз</territory>
			<territory type="RE">Реюньон</territory>
			<territory type="RO">Румыния</territory>
			<territory type="RS">Сербия</territory>
			<territory type="RU">Россия</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудовская Аравия</territory>
			<territory type="SB">Соломоновы Острова</territory>
			<territory type="SC">Сейшельские Острова</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Швеция</territory>
			<territory type="SG">Сингапур</territory>
			<territory type="SH">Остров Святой Елены</territory>
			<territory type="SI">Словения</territory>
			<territory type="SJ">Свальбард и Ян-Майен</territory>
			<territory type="SK">Словакия</territory>
			<territory type="SL">Сьерра-Леоне</territory>
			<territory type="SM">Сан-Марино</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Сомали</territory>
			<territory type="SR">Суринам</territory>
			<territory type="ST">Сан-Томе и Принсипи</territory>
			<territory type="SV">Сальвадор</territory>
			<territory type="SY">Сирийская Арабская Республика</territory>
			<territory type="SZ">Свазиленд</territory>
			<territory type="TC">Острова Тёркс и Кайкос</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Французские Южные Территории</territory>
			<territory type="TG">Того</territory>
			<territory type="TH">Таиланд</territory>
			<territory type="TJ">Таджикистан</territory>
			<territory type="TK">Токелау</territory>
			<territory type="TL">Восточный Тимор</territory>
			<territory type="TM">Туркменистан</territory>
			<territory type="TN">Тунис</territory>
			<territory type="TO">Тонга</territory>
			<territory type="TR">Турция</territory>
			<territory type="TT">Тринидад и Тобаго</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тайвань</territory>
			<territory type="TZ">Танзания</territory>
			<territory type="UA">Украина</territory>
			<territory type="UG">Уганда</territory>
			<territory type="UM">Внешние малые острова (США)</territory>
			<territory type="US">США</territory>
			<territory type="UY">Уругвай</territory>
			<territory type="UZ">Узбекистан</territory>
			<territory type="VA">Ватикан</territory>
			<territory type="VC">Сент-Винсент и Гренадины</territory>
			<territory type="VE">Венесуэла</territory>
			<territory type="VG">Британские Виргинские Острова</territory>
			<territory type="VI">Американские Виргинские Острова</territory>
			<territory type="VN">Вьетнам</territory>
			<territory type="VU">Вануату</territory>
			<territory type="WF">Уоллис и Футуна</territory>
			<territory type="WS">Самоа</territory>
			<territory type="YE">Йемен</territory>
			<territory type="YT">Майотта</territory>
			<territory type="ZA">Южная Африка</territory>
			<territory type="ZM">Замбия</territory>
			<territory type="ZW">Зимбабве</territory>
			<territory type="ZZ">Неизвестный или недействительный регион</territory>
		</territories>
		<variants>
			<variant type="1901">Традиционная немецкая орфография</variant>
			<variant type="1994">Стандартизированная резьянская орфография</variant>
			<variant type="1996">Правила немецкой орфографии установленные с 1996 года</variant>
			<variant type="1606NICT">Поздне-средневековый французский до 1606 г.</variant>
			<variant type="AREVELA">Восточно-армянский</variant>
			<variant type="AREVMDA">Западно-армянский</variant>
			<variant type="BAKU1926">Унифицированный тюрско-латинский алфавит</variant>
			<variant type="FONIPA">Международный фонетический алфавит</variant>
			<variant type="MONOTON">Монотонный</variant>
			<variant type="POLYTON">Многотональный</variant>
			<variant type="POSIX">Компьютерный</variant>
			<variant type="ROZAJ">Резьянский</variant>
			<variant type="SAAHO">Сахо</variant>
			<variant type="SCOTLAND">Англо-шотландский</variant>
			<variant type="TARASK">Тарашкевица</variant>
			<variant type="VALENCIA">Валенсийский</variant>
		</variants>
		<keys>
			<key type="calendar">Календарь</key>
			<key type="collation">Сопоставление</key>
			<key type="currency">Валюта</key>
		</keys>
		<types>
			<type type="big5han" key="collation">традиционный китайский - Big5</type>
			<type type="buddhist" key="calendar">Буддийский календарь</type>
			<type type="chinese" key="calendar">Китайский календарь</type>
			<type type="direct" key="collation">прямой порядок</type>
			<type type="gb2312han" key="collation">упрощенный китайский - GB2312</type>
			<type type="gregorian" key="calendar">Григорианский календарь</type>
			<type type="hebrew" key="calendar">Еврейский календарь</type>
			<type type="indian" key="calendar">Национальный календарь Индии</type>
			<type type="islamic" key="calendar">Исламский календарь</type>
			<type type="islamic-civil" key="calendar">Исламский гражданский календарь</type>
			<type type="japanese" key="calendar">Японский календарь</type>
			<type type="phonebook" key="collation">порядок телефонной книги</type>
			<type type="pinyin" key="collation">пиньинь</type>
			<type type="roc" key="calendar">Китайский календарь</type>
			<type type="stroke" key="collation">по чертам</type>
			<type type="traditional" key="collation">традиционный порядок</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Англо-американская</measurementSystemName>
			<measurementSystemName type="metric">Метрическая</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Язык: {0}</codePattern>
			<codePattern type="script">Написание: {0}</codePattern>
			<codePattern type="territory">Регион: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inList>titlecase-firstword</inList>
	</layout>
	<characters>
		<exemplarCharacters>[а-е ё ж-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a-e g i m n p r t-x]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>“</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">янв.</month>
							<month type="2">февр.</month>
							<month type="3">марта</month>
							<month type="4">апр.</month>
							<month type="5">мая</month>
							<month type="6">июня</month>
							<month type="7">июля</month>
							<month type="8">авг.</month>
							<month type="9">сент.</month>
							<month type="10">окт.</month>
							<month type="11">нояб.</month>
							<month type="12">дек.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">января</month>
							<month type="2">февраля</month>
							<month type="3">марта</month>
							<month type="4">апреля</month>
							<month type="5">мая</month>
							<month type="6">июня</month>
							<month type="7">июля</month>
							<month type="8">августа</month>
							<month type="9">сентября</month>
							<month type="10">октября</month>
							<month type="11">ноября</month>
							<month type="12">декабря</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">янв.</month>
							<month type="2">февр.</month>
							<month type="3">март</month>
							<month type="4">апр.</month>
							<month type="5">май</month>
							<month type="6">июнь</month>
							<month type="7">июль</month>
							<month type="8">авг.</month>
							<month type="9">сент.</month>
							<month type="10">окт.</month>
							<month type="11">нояб.</month>
							<month type="12">дек.</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">Я</month>
							<month type="2">Ф</month>
							<month type="3">М</month>
							<month type="4">А</month>
							<month type="5">М</month>
							<month type="6">И</month>
							<month type="7">И</month>
							<month type="8">А</month>
							<month type="9">С</month>
							<month type="10">О</month>
							<month type="11">Н</month>
							<month type="12">Д</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Январь</month>
							<month type="2">Февраль</month>
							<month type="3">Март</month>
							<month type="4">Апрель</month>
							<month type="5">Май</month>
							<month type="6">Июнь</month>
							<month type="7">Июль</month>
							<month type="8">Август</month>
							<month type="9">Сентябрь</month>
							<month type="10">Октябрь</month>
							<month type="11">Ноябрь</month>
							<month type="12">Декабрь</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Вс</day>
							<day type="mon">Пн</day>
							<day type="tue">Вт</day>
							<day type="wed">Ср</day>
							<day type="thu">Чт</day>
							<day type="fri">Пт</day>
							<day type="sat">Сб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">воскресенье</day>
							<day type="mon">понедельник</day>
							<day type="tue">вторник</day>
							<day type="wed">среда</day>
							<day type="thu">четверг</day>
							<day type="fri">пятница</day>
							<day type="sat">суббота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">В</day>
							<day type="mon">П</day>
							<day type="tue">В</day>
							<day type="wed">С</day>
							<day type="thu">Ч</day>
							<day type="fri">П</day>
							<day type="sat">С</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Воскресенье</day>
							<day type="mon">Понедельник</day>
							<day type="tue">Вторник</day>
							<day type="wed">Среда</day>
							<day type="thu">Четверг</day>
							<day type="fri">Пятница</day>
							<day type="sat">Суббота</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1-й кв.</quarter>
							<quarter type="2">2-й кв.</quarter>
							<quarter type="3">3-й кв.</quarter>
							<quarter type="4">4-й кв.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-й квартал</quarter>
							<quarter type="2">2-й квартал</quarter>
							<quarter type="3">3-й квартал</quarter>
							<quarter type="4">4-й квартал</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">до н.э.</era>
						<era type="1">н.э.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">до н.э.</era>
						<era type="1">н.э.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy 'г'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy 'г'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">MMM. y</dateFormatItem>
						<dateFormatItem id="yMMMEd">E, d MMM. y</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM y</dateFormatItem>
						<dateFormatItem id="yQ">Q y</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE, d MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyLLLL">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yyyyQQQQ">QQQQ yyyy 'г'.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd – E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd – E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy 'г'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">d MMM - d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy 'г'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">LLLL-LLLL yyyy 'г'.</greatestDifference>
							<greatestDifference id="y">LLLL yyyy - LLLL yyyy 'г'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy 'г'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Эра</displayName>
					</field>
					<field type="year">
						<displayName>Год</displayName>
					</field>
					<field type="month">
						<displayName>Месяц</displayName>
					</field>
					<field type="week">
						<displayName>Неделя</displayName>
					</field>
					<field type="day">
						<displayName>День</displayName>
						<relative type="0">Сегодня</relative>
						<relative type="1">Завтра</relative>
						<relative type="2">Послезавтра</relative>
						<relative type="-1">Вчера</relative>
						<relative type="-2">Позавчера</relative>
					</field>
					<field type="weekday">
						<displayName>День недели</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>Час</displayName>
					</field>
					<field type="minute">
						<displayName>Минута</displayName>
					</field>
					<field type="second">
						<displayName>Секунда</displayName>
					</field>
					<field type="zone">
						<displayName>Часовой пояс</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Тишрей</month>
							<month type="2">Хешван</month>
							<month type="3">Кислев</month>
							<month type="4">Тевет</month>
							<month type="5">Шеват</month>
							<month type="7">Адар</month>
							<month type="8">Нисан</month>
							<month type="9">Ияр</month>
							<month type="10">Сиван</month>
							<month type="11">Таммуз</month>
							<month type="12">Ав</month>
							<month type="13">Элул</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Тишрей</month>
							<month type="2">Хешван</month>
							<month type="3">Кислев</month>
							<month type="4">Тевет</month>
							<month type="5">Шеват</month>
							<month type="7">Адар</month>
							<month type="8">Нисан</month>
							<month type="9">Ияр</month>
							<month type="10">Сиван</month>
							<month type="11">Таммуз</month>
							<month type="12">Ав</month>
							<month type="13">Элул</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Мухаррам</month>
							<month type="2">Сафар</month>
							<month type="3">Раби-уль-авваль</month>
							<month type="4">Раби-уль-ахир</month>
							<month type="5">Джумад-уль-авваль</month>
							<month type="6">Джумад-уль-ахир</month>
							<month type="7">Раджаб</month>
							<month type="8">Шаабан</month>
							<month type="9">Рамадан</month>
							<month type="10">Шавваль</month>
							<month type="11">Зуль-Каада</month>
							<month type="12">Зуль-Хиджжа</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Мухаррам</month>
							<month type="2">Сафар</month>
							<month type="3">Раби-уль-авваль</month>
							<month type="4">Раби-уль-ахир</month>
							<month type="5">Джумад-уль-авваль</month>
							<month type="6">Джумад-уль-ахир</month>
							<month type="7">Раджаб</month>
							<month type="8">Шаабан</month>
							<month type="9">Рамадан</month>
							<month type="10">Шавваль</month>
							<month type="11">Зуль-Каада</month>
							<month type="12">Зуль-Хиджжа</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Фарвардин</month>
							<month type="2">Ордибехешт</month>
							<month type="3">Хордад</month>
							<month type="4">Тир</month>
							<month type="5">Мордад</month>
							<month type="6">Шахривер</month>
							<month type="7">Мехр</month>
							<month type="8">Абан</month>
							<month type="9">Азер</month>
							<month type="10">Дей</month>
							<month type="11">Бахман</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Фарвардин</month>
							<month type="2">Ордибехешт</month>
							<month type="3">Хордад</month>
							<month type="4">Тир</month>
							<month type="5">Мордад</month>
							<month type="6">Шахривер</month>
							<month type="7">Мехр</month>
							<month type="8">Абан</month>
							<month type="9">Азер</month>
							<month type="10">Дей</month>
							<month type="11">Бахман</month>
							<month type="12">Эсфанд</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Неизвестный</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Андорра</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Дубай</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Кабул</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Антигуа</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Ангилья</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Тирана</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Ереван</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Кюрасао</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Луанда</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Ротера</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Палмер</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Южный полюс</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Сева</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Моусон</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Дейвис</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Восток</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Кейси</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Дюмон-д'Юрвиль</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Мак-Мердо</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Рио-Гальегос</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>Мендоса</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>Сан-Хуан</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ушуая</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>Ла-Риоха</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>Сан-Луис</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Катамарка</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>Жужуй</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Тукуман</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Кордова</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Буэнос-Айрес</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Паго-Паго</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Вена</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>Перт</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>Юкла</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Дарвин</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Аделаида</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Брокен-Хилл</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>Керри</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Мельбурн</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>Хобарт</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>Линдеман</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Сидней</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Брисбен</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Лорд-Хау, о-в</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Аруба</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>Мариехамн</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Баку</exemplarCity>
			</zone>
			<zone type="Europe/Sarajevo">
				<exemplarCity>Сараево</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Барбадос</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Дакка</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Брюссель</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Уагадугу</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>София</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Бахрейн</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Бужумбура</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Порто-Ново</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Бермуды</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Бруней</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Ла-Пас</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Эйрунепе</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Риу-Бранку</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Порту-Велью</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Боа-Виста</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Манаус</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Куяба</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Кампу-Гранди</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Белен</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Арагуаина</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Сан-Паулу</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Баия</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Форталеза</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Масейо</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Ресифи</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Норонха</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Нассау</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Тимпу</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Габороне</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Минск</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Белиз</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Доусон</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>Уайтхорс</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>Инувик</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Ванкувер</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Досон-Крик</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>Йеллоунайф</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Эдмонтон</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>Свифт-Карент</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Кеймбридж-Бей</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Реджайна</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>Виннипег</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>Резолют</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>Рейни-Ривер</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>Ранкин-Инлет</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>Корал-Харбор</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>Тандер-Бей</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>Нипигон</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>Торонто</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Монреаль</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>Икалуит</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>Пангниртанг</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>Монктон</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Галифакс</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Гус-Бей</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Глейс-Бей</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>Бланк-Саблон</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Сент-Джонс</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Кокосовые острова</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Киншаса</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Лубумбаши</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Банги</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Браззавиль</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Цюрих</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Абиджан</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Раротонга</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Пасхи, о-в</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Сантьяго</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Дуала</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Кашгар</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Урумчи</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Чунцин</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Шанхай</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>Харбин</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Богота</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Коста-Рика</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Гавана</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Острова Зеленого Мыса</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Рождества, о-в</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Никосия</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Прага</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Берлин</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Джибути</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Копенгаген</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Доминика</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Санто-Доминго</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Алжир</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Галапагос, о-ва</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Гуаякиль</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Таллин</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Каир</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Эль-Аюн</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Асмера</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Канарские о-ва</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Сеута</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Мадрид</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Аддис-Абеба</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Хельсинки</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Фиджи</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Стэнли</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Трук, о-ва</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Понапе, о-в</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Косрае</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Фарерские острова</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Париж</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Либревиль</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Лондон</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Гренада</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Тбилиси</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Кайенна</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>Гернси</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Аккра</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Гибралтар</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Туле</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Готхоб</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Скорсбисунн</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Денмарксхавн</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Банжул</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Конакри</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Гваделупа</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Малабо</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Афины</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Ю.Джорджия и Ю.Сэндвинчевы о-ва</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Гватемала</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Гуам</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Бисау</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Гайана</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Гонконг</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>Тегусигальпа</exemplarCity>
			</zone>
			<zone type="Europe/Zagreb">
				<exemplarCity>Загреб</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Порт-о-Пренс</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Будапешт</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Джакарта</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>Понтианак</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Макасар</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Джайпур</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Дублин</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Иерусалим</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>Мэн, о-в</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>Калькутта</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Чагос</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Багдад</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Тегеран</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Рейкьявик</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Рим</exemplarCity>
			</zone>
			<zone type="Europe/Jersey">
				<exemplarCity>Джерси</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Ямайка</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Амман</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Токио</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Найроби</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Бишкек</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Пномпень</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Эндербери, о-в</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Киритимати</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Тарава</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Коморские острова</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Сент-Китс</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Пхеньян</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Сеул</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Кувейт</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Каймановы острова</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Актау</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Орал (Уральск)</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Актобе (Актюбинск)</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Кызылорда</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Алматы</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Вьентьян</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Бейрут</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Сент-Люсия</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Вадуц</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Коломбо</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Монровия</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Масеру</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Вильнюс</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Люксембург</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Рига</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Триполи</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Касабланка</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Монако</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Кишинев</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>Подгорица</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Антананариву</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Кваджалейн</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Маджуро</exemplarCity>
			</zone>
			<zone type="Europe/Skopje">
				<exemplarCity>Скопье</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Бамако</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Рангун</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Ховд</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Улан-Батор</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Чойбалсан</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Макао</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Сайпан</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Мартиника</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Нуакшот</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Монсеррат</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Мальта</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Маврикий</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Мальдивы</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Блантайр</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Тихуана</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Эрмосильо</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Масатлан</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Чиуауа</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Монтеррей</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Мехико</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Мерида</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Канкун</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Куала-Лумпур</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Кучинг</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Мапуту</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Виндхук</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Нумеа</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Ниамей</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Норфолк</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Лагос</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Манагуа</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Амстердам</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Осло</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Катманду</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Науру</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Ниуэ</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Чатем, о-в</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Окленд</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Маскат</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Панама</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Лима</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Таити, о-в</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Маркизские о-ва</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Гамбье, о-ва</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Порт-Морсби</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Манила</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Карачи</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Варшава</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Микелон</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Питкерн</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Пуэрто-Рико</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Газа</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Азорские о-ва</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Мадейра, о-в</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Лиссабон</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Палау</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Асунсьон</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Катар</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Реюньон</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Бухарест</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Белград</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Калининград</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Москва</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Волгоград</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Самара</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Екатеринбург</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Омск</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Новосибирск</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Красноярск</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Иркутск</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Якутск</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Владивосток</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Сахалин, о-в</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Магадан</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Петропавловск-Камчатский</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Анадырь</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Кигали</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Эр-Рияд</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Гвадалканал</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Маэ</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Хартум</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Стокгольм</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Сингапур</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Св. Елены, о-в</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>Любляна</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>Лонгйир</exemplarCity>
			</zone>
			<zone type="Europe/Bratislava">
				<exemplarCity>Братислава</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Фритаун</exemplarCity>
			</zone>
			<zone type="Europe/San_Marino">
				<exemplarCity>Сан-Марино</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Дакар</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Могадишо</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Парамарибо</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Сан-Томе</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Сальвадор</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Дамаск</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Мбабане</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Гранд Турк</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Нджамена</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Кергелен</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Ломе</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Бангкок</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Душанбе</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Факаофо</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Дили</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ашгабат</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Тунис</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Тонгатапу</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Стамбул</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Порт-оф-Спейн</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Фунафути</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Тайбэй</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Дар-эс-Салам</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ужгород</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Киев</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Симферополь</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Запорожье</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Кампала</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Мидуэй, о-ва</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Джонстон, ат.</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Уэйк, о-в</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>Адак, о-в</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>Ном</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Гонолулу</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Анкоридж</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>Якутат</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>Джуно</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Лос-Анджелес</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>Бойсе</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Финикс</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>Шипрок</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Денвер</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>Нью-Салем</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Северная Дакота - Центр</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Чикаго</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>Меномини</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Винсенс</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Петерсбург</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Телл-Сити</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Нокс</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Винамак</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Маренго</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Индианаполис</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Луисвилл</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Вивэй</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Монтиселло</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Детройт</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Нью-Йорк</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Монтевидео</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Самарканд</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Ташкент</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>Ватикан</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Сент-Винсент</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Каракас</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Тортола</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Сент-Томас</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Сайгон</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Эфате</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Уоллис</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Апия</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Аден</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Майорка</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Йоханнесбург</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Лусака</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Хараре</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<generic>Акри время</generic>
					<standard>Акри стандартное время</standard>
					<daylight>Акри летнее время</daylight>
				</long>
				<short>
					<generic>Акри время</generic>
					<standard>Акри стандартное время</standard>
					<daylight>Акри летнее время</daylight>
				</short>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Афганистан время</standard>
				</long>
				<short>
					<standard>Афганистан время</standard>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Центральноафриканское время</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Восточноафриканское время</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>Южноафриканское время</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Западноафриканское время</standard>
					<daylight>Западноафриканское летнее время</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Актюбинск стандартное время</standard>
					<daylight>Актюбинск летнее время</daylight>
				</long>
				<short>
					<standard>Актюбинск стандартное время</standard>
					<daylight>Актюбинск летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Аляска время</generic>
					<standard>Аляска стандартное время</standard>
					<daylight>Аляска летнее время</daylight>
				</long>
				<short>
					<generic>Аляска время</generic>
					<standard>Аляска стандартное время</standard>
					<daylight>Аляска летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Алма-Ата стандартное время</standard>
					<daylight>Алма-Ата летнее время</daylight>
				</long>
				<short>
					<standard>Алма-Ата стандартное время</standard>
					<daylight>Алма-Ата летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Средне-американское время</generic>
					<standard>Средне-американское стандартное время</standard>
					<daylight>Средне-американское летнее время</daylight>
				</long>
				<short>
					<generic>Средне-американское время</generic>
					<standard>Средне-американское стандартное время</standard>
					<daylight>Средне-американское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Восточно-американское время</generic>
					<standard>Восточно-американское стандартное время</standard>
					<daylight>Восточно-американское летнее время</daylight>
				</long>
				<short>
					<generic>Восточно-американское время</generic>
					<standard>Восточно-американское стандартное время</standard>
					<daylight>Восточно-американское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Горное время (США)</generic>
					<standard>Горное стандартное время (США)</standard>
					<daylight>Горное летнее время (США)</daylight>
				</long>
				<short>
					<generic>Горное время (США)</generic>
					<standard>Горное стандартное время (США)</standard>
					<daylight>Горное летнее время (США)</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Тихоокеанское время</generic>
					<standard>Тихоокеанское стандартное время</standard>
					<daylight>Тихоокеанское летнее время</daylight>
				</long>
				<short>
					<generic>Тихоокеанское время</generic>
					<standard>Тихоокеанское стандартное время</standard>
					<daylight>Тихоокеанское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Анадырь стандартное время</standard>
					<daylight>Анадырь летнее время</daylight>
				</long>
				<short>
					<standard>Анадырь стандартное время</standard>
					<daylight>Анадырь летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Актау стандартное время</standard>
					<daylight>Актау летнее время</daylight>
				</long>
				<short>
					<standard>Актау стандартное время</standard>
					<daylight>Актау летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Актобе стандартное время</standard>
					<daylight>Актобе летнее время</daylight>
				</long>
				<short>
					<standard>Актобе стандартное время</standard>
					<daylight>Актобе летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Саудовская Аравия время</generic>
					<standard>Саудовская Аравия стандартное время</standard>
					<daylight>Саудовская Аравия летнее время</daylight>
				</long>
				<short>
					<generic>Саудовская Аравия время</generic>
					<standard>Саудовская Аравия стандартное время</standard>
					<daylight>Саудовская Аравия летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Аргентина стандартное время</standard>
					<daylight>Аргентина летнее время</daylight>
				</long>
				<short>
					<standard>Аргентина стандартное время</standard>
					<daylight>Аргентина летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Аргентина (запад) стандартное время</standard>
				</long>
				<short>
					<standard>Аргентина (запад) стандартное время</standard>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<generic>Армения время</generic>
					<standard>Армения стандартное время</standard>
					<daylight>Армения летнее время</daylight>
				</long>
				<short>
					<generic>Армения время</generic>
					<standard>Армения стандартное время</standard>
					<daylight>Армения летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Атлантическое время</generic>
					<standard>Атлантическое стандартное время</standard>
					<daylight>Атлантическое летнее время</daylight>
				</long>
				<short>
					<generic>Атлантическое время</generic>
					<standard>Атлантическое стандартное время</standard>
					<daylight>Атлантическое летнее время</daylight>
				</short>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Бразилия стандартное время</standard>
					<daylight>Бразилия дневное время</daylight>
				</long>
				<short>
					<standard>Бразилия стандартное время</standard>
					<daylight>Бразилия дневное время</daylight>
				</short>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Китайское стандартное время</standard>
				</long>
				<short>
					<standard>Китайское стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Центральноевропейское время</standard>
					<daylight>Центральноевропейское летнее время</daylight>
				</long>
				<short>
					<standard>Центральноевропейское время</standard>
					<daylight>Центральноевропейское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Восточноевропейское время</standard>
					<daylight>Восточноевропейское летнее время</daylight>
				</long>
				<short>
					<standard>Восточноевропейское время</standard>
					<daylight>Восточноевропейское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Гонконгское стандартное время</standard>
					<daylight>Гонконгское летнее время</daylight>
				</long>
				<short>
					<standard>Гонконгское стандартное время</standard>
					<daylight>Гонконгское летнее время</daylight>
				</short>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Индийское стандартное время</standard>
				</long>
				<short>
					<standard>Индийское стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Индокитайское стандартное время</standard>
				</long>
				<short>
					<standard>Индокитайское стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Центральная Индонезия стандартное время</standard>
				</long>
				<short>
					<standard>Центральная Индонезия стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Восточная Индонезия стандартное время</standard>
				</long>
				<short>
					<standard>Восточная Индонезия стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Западная Индонезия стандартное время</standard>
				</long>
				<short>
					<standard>Западная Индонезия стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Израиль стандартное время</standard>
					<daylight>Израиль летнее время</daylight>
				</long>
				<short>
					<standard>Израиль стандартное время</standard>
					<daylight>Израиль летнее время</daylight>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Японское стандартное время</standard>
				</long>
				<short>
					<standard>Японское стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Korea">
				<long>
					<standard>Корейское стандартное время</standard>
				</long>
				<short>
					<standard>Корейское стандартное время</standard>
				</short>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Куйбышевское время</standard>
					<daylight>Куйбышевское летнее время</daylight>
				</long>
				<short>
					<standard>Куйбышевское время</standard>
					<daylight>Куйбышевское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Московское время</generic>
					<standard>Московское стандартное время</standard>
					<daylight>Московское летнее время</daylight>
				</long>
				<short>
					<generic>Московское время</generic>
					<standard>Московское стандартное время</standard>
					<daylight>Московское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Самарское стандартное время</standard>
					<daylight>Самарское летнее время</daylight>
				</long>
				<short>
					<standard>Самарское стандартное время</standard>
					<daylight>Самарское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<generic>Турецкое время</generic>
					<standard>Турецкое стандартное время</standard>
					<daylight>Турецкое летнее время</daylight>
				</long>
				<short>
					<generic>Турецкое время</generic>
					<standard>Турецкое стандартное время</standard>
					<daylight>Турецкое летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Волгоградское время</standard>
					<daylight>Волгоградское летнее время</daylight>
				</long>
				<short>
					<standard>Волгоградское время</standard>
					<daylight>Волгоградское летнее время</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Андоррская песета</displayName>
				<displayName count="few">андоррские песеты</displayName>
				<displayName count="other">андоррских песет</displayName>
				<symbol>андоррских песет</symbol>
			</currency>
			<currency type="AED">
				<displayName>Дирхам (ОАЭ)</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Афгани (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Афгани</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Албанский лек</displayName>
				<displayName count="few">албанских лека</displayName>
				<displayName count="other">албанских леков</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Армянский драм</displayName>
				<displayName count="few">армянских драма</displayName>
				<displayName count="other">армянских драмов</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Нидерландский антильский гульден</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Ангольская кванза</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Ангольская кванза (1977-1990)</displayName>
				<displayName count="few">ангольские кванзы</displayName>
				<displayName count="other">ангольских кванз</displayName>
			</currency>
			<currency type="AON">
				<displayName>Ангольская новая кванза (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Ангольская кванза реюстадо (1995-1999)</displayName>
				<displayName count="few">ангольские кванзы реюстадо (1995-1999)</displayName>
				<displayName count="other">ангольских кванз реюстадо (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Аргентинский аустрал</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Аргентинское песо (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Аргентинское песо</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Австрийский шиллинг</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Австралийский доллар</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Арубанский гульден</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Старый азербайджанский манат</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Азербайджанский манат</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Динар Боснии и Герцеговины</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Конвертируемая марка Боснии и Герцеговины</displayName>
			</currency>
			<currency type="BBD">
				<displayName>Барбадосский доллар</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Бангладешская така</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Бельгийский франк (конвертируемый)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Бельгийский франк</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Бельгийский франк (финансовый)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Лев</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Болгарский лев</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Бахрейнский динар</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Бурундийский франк</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Бермудский доллар</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Брунейский доллар</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Боливиано</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Боливийское песо</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Боливийский мвдол</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Бразильский новый крузейро (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Бразильское крузадо</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Бразильский крузейро (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Бразильский реал</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Бразильское новое крузадо</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Бразильский крузейро</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Багамский доллар</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Нгултрум</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Джа</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Ботсванская пула</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Белорусский рубль (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Белорусский рубль</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Белизский доллар</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Канадский доллар</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Конголезский франк</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR евро</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Швейцарский франк</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR франк</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Условная расчетная единица Чили</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Чилийское песо</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Юань Ренминби</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Колумбийское песо</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Единица реальной стоимости Колумбии</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Костариканский колон</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Старый Сербский динар</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Чехословацкая твердая крона</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Кубинское песо</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Эскудо Кабо-Верде</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Кипрский фунт</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Чешская крона</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Восточногерманская марка</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Немецкая марка</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Франк Джибути</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Датская крона</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Доминиканское песо</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Алжирский динар</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Эквадорский сукре</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Постоянная единица стоимости Эквадора</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Эстонская крона</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Египетский фунт</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Эквеле</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Накфа</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Испанская песета (А)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Испанская песета (конвертируемая)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Испанская песета</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Эфиопский быр</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Евро</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Финская марка</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Доллар Фиджи</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Фунт Фолклендских островов</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Французский франк</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Английский фунт стерлингов</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Грузинский купон</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Грузинский лари</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ганский седи</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Седи Ганы</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Гибралтарский фунт</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Гамбийский даласи</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Гвинейский франк</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Гвинейская сили</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Эквеле экваториальной Гвинеи</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Греческая драхма</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Гватемальский кетсаль</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Эскудо Португальской Гвинеи</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Песо Гвинеи-Бисау</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Гайанский доллар</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Гонконгский доллар</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Гондурасская лемпира</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Хорватский динар</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Хорватская куна</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Гаитянский гурд</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Венгерский форинт</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Индонезийская рупия</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Ирландский фунт</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Израильский фунт</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Новый израильский шекель</displayName>
			</currency>
			<currency type="INR">
				<displayName>Индийская рупия</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Иракский динар</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Иранский риал</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Исландская крона</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Итальянская лира</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Ямайский доллар</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Иорданский динар</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Японская иена</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Кенийский шиллинг</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Киргизский сом</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Камбоджийский риель</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Франк Коморских островов</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Северо-корейская вона</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Вона Республики Кореи</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Кувейтский динар</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Доллар Каймановых островов</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Казахский тенге</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Кип ЛНДР</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Ливанский фунт</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Шри-Ланкийская рупия</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Либерийский доллар</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Лоти</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Малоти</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Литовский лит</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Литовский талон</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Конвертируемый франк Люксембурга</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Люксембургский франк</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Финансовый франк Люксембурга</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Латвийский лат</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Латвийский рубль</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Ливийский динар</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Марокканский дирхам</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Марокканский франк</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Молдавский лей</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ариари</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Малагасийский франк</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Македонский динар</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Малийский франк</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Кьят</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Монгольский тугрик</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Патака</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Мавританская угия</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Мальтийская лира</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Мальтийский фунт</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Маврикийская рупия</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Мальдивская руфия</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Малавийская квача</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Мексиканское новое песо</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Мексиканское серебряное песо (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Мексиканская пересчетная единица (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Малайзийский ринггит</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Мозамбикское эскудо</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Старый мозамбикский метикал</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Метикал</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Доллар Намибии</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Нигерийская найра</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Никарагуанская кордоба</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Золотая кордоба</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Нидерландский гульден</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Норвежская крона</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Непальская рупия</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Новозеландский доллар</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Оманский риал</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Панамское бальбоа</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Перуанское инти</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Перуанский новый соль</displayName>
			</currency>
			<currency type="PES">
				<displayName>Перуанский соль</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Кина</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Филиппинское песо</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Пакистанская рупия</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Польский злотый</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Злотый</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Португальское эскудо</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Парагвайский гуарани</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Катарский риал</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Родезийский доллар</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Старый Румынский лей</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Румынский лей</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Сербский динар</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Российский рубль</displayName>
				<displayName count="few">Российских рубля</displayName>
				<displayName count="many">Российских рублей</displayName>
				<displayName count="one">Российский рубль</displayName>
				<displayName count="other">Российского рубля</displayName>
				<symbol>руб.</symbol>
			</currency>
			<currency type="RUR">
				<displayName>Российский рубль (1991-1998)</displayName>
				<symbol>р.</symbol>
			</currency>
			<currency type="RWF">
				<displayName>Франк Руанды</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Саудовский риал</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Доллар Соломоновых островов</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Сейшельская рупия</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Суданский динар</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Суданский фунт</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Шведская крона</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Сингапурский доллар</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Фунт острова Святой Елены</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Словенский толар</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Словацкая крона</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Леоне</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Сомалийский шиллинг</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Суринамский доллар</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Суринамский гульден</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Добра</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Рубль СССР</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Сальвадорский колон</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Сирийский фунт</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Свазилендский лилангени</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Таиландский бат</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Таджикский рубль</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Таджикский сомони</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Туркменский манат</displayName>
			</currency>
			<currency type="TND">
				<displayName>Тунисский динар</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Паанга</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Тиморское эскудо</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Турецкая лира</displayName>
				<displayName count="few">турецкие лиры</displayName>
				<displayName count="many">турецких лир</displayName>
				<displayName count="one">туркцкая лира</displayName>
				<displayName count="other">турецких лир</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Новая турецкая лира</displayName>
				<displayName count="few">новые турецкие лиры</displayName>
				<displayName count="many">Новых турецких лир</displayName>
				<displayName count="one">Новая турецкая лира</displayName>
				<displayName count="other">новых турецких лир</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Доллар Тринидада и Тобаго</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Новый тайваньский доллар</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Танзанийский шиллинг</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Украинская гривна</displayName>
				<symbol>грн.</symbol>
			</currency>
			<currency type="UAK">
				<displayName>Карбованец (украинский)</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Старый угандийский шиллинг</displayName>
			</currency>
			<currency type="UGX">
				<displayName>У£гандийский шиллинг</displayName>
			</currency>
			<currency type="USD">
				<displayName>Доллар США</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>Доллар США следующего дня</displayName>
			</currency>
			<currency type="USS">
				<displayName>Доллар США текущего дня</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Уругвайское старое песо (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Уругвайское песо</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Узбекский сум</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Венесуэльский боливар</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Вьетнамский донг</displayName>
				<symbol>Донг</symbol>
			</currency>
			<currency type="VUV">
				<displayName>Вату</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Тала</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Франк КФА ВЕАС</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Серебро</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Золото</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Европейская составная единица</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Европейская денежная единица</displayName>
			</currency>
			<currency type="XBC">
				<displayName>расчетная единица европейского валютного соглашения (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>расчетная единица европейского валютного соглашения (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Восточно-карибский доллар</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>СДР (специальные права заимствования)</displayName>
			</currency>
			<currency type="XEU">
				<displayName>ЭКЮ (единица европейской валюты)</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Французский золотой франк</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Французский UIC-франк</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Франк КФА ВСЕАО</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Палладий</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Франк КФП</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Платина</displayName>
			</currency>
			<currency type="XRE">
				<displayName>единица RINET-фондов</displayName>
			</currency>
			<currency type="XTS">
				<displayName>тестовый валютный код</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Неизвестная или недействительная валюта</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Йеменский динар</displayName>
			</currency>
			<currency type="YER">
				<displayName>Йеменский риал</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Югославский твердый динар</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Югославский новый динар</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Югославский динар</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Южноафриканский рэнд (финансовый)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Южноафриканский рэнд</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Квача (замбийская)</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Новый заир</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Заир</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Доллар Зимбабве</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>да:д</yesstr>
			<nostr>нет:н</nostr>
		</messages>
	</posix>
</ldml>
PKpG[.�##Locale/Data/el_GR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="el"/>
		<territory type="GR"/>
	</identity>
</ldml>
PKpG[�q�OOLocale/Data/tg_TJ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/06/18 21:41:57 $"/>
		<language type="tg"/>
		<territory type="TJ"/>
	</identity>
	<alias source="tg_Cyrl_TJ" path="//ldml"/>
</ldml>
PKpG[��� QQLocale/Data/kcg.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kcg"/>
	</identity>
	<characters>
		<exemplarCharacters>[a {a̱} b {ch} {chy} d-g {gb} {gh} {ghw} {ghy} i {i̱} j {jhy} k {kh} {kp} l-n {ng} {ny} o p r s {sh} {shy} t {ts} u-w y z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Juw</month>
							<month type="2">Swi</month>
							<month type="3">Tsa</month>
							<month type="4">Nya</month>
							<month type="5">Tsw</month>
							<month type="6">Ata</month>
							<month type="7">Ana</month>
							<month type="8">Ari</month>
							<month type="9">Aku</month>
							<month type="10">Swa</month>
							<month type="11">Man</month>
							<month type="12">Mas</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Zwat Juwung</month>
							<month type="2">Zwat Swiyang</month>
							<month type="3">Zwat Tsat</month>
							<month type="4">Zwat Nyai</month>
							<month type="5">Zwat Tswon</month>
							<month type="6">Zwat Ataah</month>
							<month type="7">Zwat Anatat</month>
							<month type="8">Zwat Arinai</month>
							<month type="9">Zwat Akubunyung</month>
							<month type="10">Zwat Swag</month>
							<month type="11">Zwat Mangjuwang</month>
							<month type="12">Zwat Swag-Ma-Suyang</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Lad</day>
							<day type="mon">Tan</day>
							<day type="tue">Tal</day>
							<day type="wed">Lar</day>
							<day type="thu">Lam</day>
							<day type="fri">Jum</day>
							<day type="sat">Asa</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Ladi</day>
							<day type="mon">Tanii</day>
							<day type="tue">Talata</day>
							<day type="wed">Larba</day>
							<day type="thu">Lamit</day>
							<day type="fri">Juma</day>
							<day type="sat">Asabat</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Gabanin Miladi</era>
						<era type="1">Miladi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">GM</era>
						<era type="1">M</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>Nera</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�:-N��Locale/Data/az_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.28 $"/>
		<generation date="$Date: 2008/06/24 16:36:03 $"/>
		<language type="az"/>
		<script type="Cyrl"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="az">Азәрбајҹан</language>
			<language type="de">алманҹа</language>
			<language type="en">инҝилисҹә</language>
			<language type="es">испанҹа</language>
			<language type="fr">франсызҹа</language>
			<language type="it">италјанҹа</language>
			<language type="ja">јапонҹа</language>
			<language type="pt">португалҹа</language>
			<language type="ru">русҹа</language>
			<language type="zh">чинҹә</language>
		</languages>
		<territories>
			<territory type="AZ">Азәрбајҹан</territory>
			<territory type="BR">Бразилија</territory>
			<territory type="CN">Чин</territory>
			<territory type="DE">Алманија</territory>
			<territory type="FR">Франса</territory>
			<territory type="IN">Һиндистан</territory>
			<territory type="IT">Италија</territory>
			<territory type="JP">Јапонија</territory>
			<territory type="RU">Русија</territory>
			<territory type="US">Америка Бирләшмиш Штатлары</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а ә б-г ғ д-й ј к ҝ л-о ө п-у ү ф х һ ч ҹ ш ы]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ц щ ъ ь-я]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">јанвар</month>
							<month type="2">феврал</month>
							<month type="3">март</month>
							<month type="4">апрел</month>
							<month type="5">май</month>
							<month type="6">ијун</month>
							<month type="7">ијул</month>
							<month type="8">август</month>
							<month type="9">сентјабр</month>
							<month type="10">октјабр</month>
							<month type="11">нојабр</month>
							<month type="12">декабр</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="wide">
							<day type="sun">базар</day>
							<day type="mon">базар ертәси</day>
							<day type="tue">чәршәнбә ахшамы</day>
							<day type="wed">чәршәнбә</day>
							<day type="thu">ҹүмә ахшамы</day>
							<day type="fri">ҹүмә</day>
							<day type="sat">шәнбә</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="AZM">
				<displayName>манат</displayName>
				<symbol>ман.</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[VnAC��Locale/Data/ku_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/06/17 14:12:13 $"/>
		<language type="ku"/>
		<script type="Latn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">erebî</language>
			<language type="en">îngilîzî</language>
			<language type="ja">japonî</language>
			<language type="ku">kurdî</language>
		</languages>
		<scripts>
			<script type="Arab">erebî</script>
		</scripts>
		<territories>
			<territory type="001">Cîhan</territory>
			<territory type="TR">Tirkiye</territory>
		</territories>
		<keys>
			<key type="calendar">salname</key>
			<key type="collation">rêzkirin</key>
		</keys>
		<types>
			<type type="gregorian" key="calendar">mîladî</type>
			<type type="islamic" key="calendar">hîcrî</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d e ê f-i î j-s ş t u û v-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">çil</month>
							<month type="2">sib</month>
							<month type="3">adr</month>
							<month type="4">nîs</month>
							<month type="5">gul</month>
							<month type="6">hez</month>
							<month type="7">tîr</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">çile</month>
							<month type="2">sibat</month>
							<month type="3">adar</month>
							<month type="4">nîsan</month>
							<month type="5">gulan</month>
							<month type="6">hezîran</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ç</month>
							<month type="2">s</month>
							<month type="3">a</month>
							<month type="4">n</month>
							<month type="5">g</month>
							<month type="6">h</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">yş</day>
							<day type="mon">dş</day>
							<day type="tue">sş</day>
							<day type="wed">çş</day>
							<day type="thu">pş</day>
							<day type="fri">în</day>
							<day type="sat">ş</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">yekşem</day>
							<day type="mon">duşem</day>
							<day type="tue">şê</day>
							<day type="wed">çarşem</day>
							<day type="thu">pêncşem</day>
							<day type="fri">în</day>
							<day type="sat">şemî</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">y</day>
							<day type="mon">d</day>
							<day type="tue">s</day>
							<day type="wed">ç</day>
							<day type="thu">p</day>
							<day type="fri">î</day>
							<day type="sat">ş</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Ç1</quarter>
							<quarter type="2">Ç2</quarter>
							<quarter type="3">Ç3</quarter>
							<quarter type="4">Ç4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Ç1</quarter>
							<quarter type="2">Ç2</quarter>
							<quarter type="3">Ç3</quarter>
							<quarter type="4">Ç4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>BN</am>
				<pm>PN</pm>
				<eras>
					<eraAbbr>
						<era type="0">BZ</era>
						<era type="1">PZ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<fields>
					<field type="year">
						<displayName>sal</displayName>
					</field>
					<field type="month">
						<displayName>meh</displayName>
					</field>
					<field type="week">
						<displayName>hefte</displayName>
					</field>
					<field type="day">
						<displayName>roj</displayName>
					</field>
					<field type="hour">
						<displayName>demjimêr</displayName>
					</field>
					<field type="minute">
						<displayName>xulek</displayName>
					</field>
					<field type="second">
						<displayName>çirke</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">muẖerem</month>
							<month type="2">sefer</month>
							<month type="3">rebîʿulewel</month>
							<month type="4">rebîʿulaxer</month>
							<month type="5">cemazîyelewel</month>
							<month type="6">cemazîyelaxer</month>
							<month type="7">receb</month>
							<month type="8">şeʿban</month>
							<month type="9">remezan</month>
							<month type="10">şewal</month>
							<month type="11">zîlqeʿde</month>
							<month type="12">zîlẖece</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
	</dates>
	<posix>
		<messages>
			<yesstr>erê:e</yesstr>
			<nostr>na:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�^�##Locale/Data/ee_GH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="ee"/>
		<territory type="GH"/>
	</identity>
</ldml>
PKpG[�-�E]]Locale/Data/es_HN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="HN"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E dd 'de' MMM 'al' E dd 'de' MMM</greatestDifference>
							<greatestDifference id="d">E dd 'al' E dd 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd 'de' MMM 'al' dd 'de' MMM</greatestDifference>
							<greatestDifference id="d">dd-dd 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd 'de' MMM 'al' E dd 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E dd 'al' E dd 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E dd 'de' MMM 'de' yyyy 'al' E dd 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd 'de' MMM 'al' dd 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">dd 'de' MMM 'de' yyyy 'al' dd 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[���t��Locale/Data/en_BZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="BZ"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, M/d - E, M/d</greatestDifference>
							<greatestDifference id="d">E, M/d - E, M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d - M/d</greatestDifference>
							<greatestDifference id="d">M/d - M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy - M/yy</greatestDifference>
							<greatestDifference id="y">M/yy - M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="d">E, M/d/yy - E, M/d/yy</greatestDifference>
							<greatestDifference id="y">E, M/d/yy - E, M/d/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy - E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d - MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d-d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy - MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy - M/d/yy</greatestDifference>
							<greatestDifference id="y">M/d/yy - M/d/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BZD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[��{i`d`dLocale/Data/fo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.61 $"/>
		<generation date="$Date: 2008/06/17 18:53:46 $"/>
		<language type="fo"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afríska</language>
			<language type="am">amhariskt</language>
			<language type="ar">arabiskt</language>
			<language type="as">assamesiskt</language>
			<language type="az">azerbaijaniskt</language>
			<language type="be">belarussiskt</language>
			<language type="bg">bulgarskum</language>
			<language type="bh">bihariskt</language>
			<language type="bn">bengaliskt</language>
			<language type="br">bretonskt</language>
			<language type="bs">bosniskt</language>
			<language type="ca">katalanskt</language>
			<language type="cs">kekkiskt</language>
			<language type="cy">valisiskt</language>
			<language type="da">danskt</language>
			<language type="de">týskt</language>
			<language type="el">grikskt</language>
			<language type="en">enskt</language>
			<language type="eo">esperanto</language>
			<language type="es">spanskt</language>
			<language type="et">estlendskt</language>
			<language type="eu">baskiskt</language>
			<language type="fa">persiskt</language>
			<language type="fi">finskt</language>
			<language type="fil">tagalog</language>
			<language type="fo">føroyskt</language>
			<language type="fr">franskt</language>
			<language type="fy">frisiskt</language>
			<language type="ga">írskt</language>
			<language type="gd">skotskt gæliskt</language>
			<language type="gl">galliskt</language>
			<language type="gn">guarani</language>
			<language type="gu">gujariti</language>
			<language type="he">hebraiskt</language>
			<language type="hi">hindi</language>
			<language type="hr">kroatiskum</language>
			<language type="hu">ungarskt</language>
			<language type="hy">armenskum</language>
			<language type="ia">interlingua</language>
			<language type="id">indonesiskum</language>
			<language type="ie">interlingue</language>
			<language type="is">íslendskt</language>
			<language type="it">italskt</language>
			<language type="ja">japanskt</language>
			<language type="jv">javanesiskt</language>
			<language type="ka">georgiskt</language>
			<language type="km">kambodjanskt</language>
			<language type="kn">kannada</language>
			<language type="ko">koreanskt</language>
			<language type="ku">kurdiskt</language>
			<language type="ky">kyrgyz</language>
			<language type="la">latín</language>
			<language type="ln">lingala</language>
			<language type="lo">laothian</language>
			<language type="lt">litavskt</language>
			<language type="lv">latviskt</language>
			<language type="mk">makedonskt</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongoliskt</language>
			<language type="mr">marathiskt</language>
			<language type="ms">malay</language>
			<language type="mt">maltesiskt</language>
			<language type="nb">norskt bokmål</language>
			<language type="ne">nepalskt</language>
			<language type="nl">hollendskt</language>
			<language type="nn">nýnorskt</language>
			<language type="no">norskt</language>
			<language type="oc">occitan</language>
			<language type="or">oriya</language>
			<language type="pa">punjabi</language>
			<language type="pl">polskt</language>
			<language type="ps">pashto</language>
			<language type="pt">portugisiskt</language>
			<language type="ro">romanskt</language>
			<language type="ru">russiskt</language>
			<language type="sa">sanskrit</language>
			<language type="sd">sindhi</language>
			<language type="sh">serbokroatiskt</language>
			<language type="si">sinhalesiskt</language>
			<language type="sk">slovakiskum</language>
			<language type="sl">slovenskum</language>
			<language type="so">somaliskt</language>
			<language type="sq">albanskt</language>
			<language type="sr">serbiskum</language>
			<language type="st">sesotho</language>
			<language type="su">sundanesiskt</language>
			<language type="sv">svenskt</language>
			<language type="sw">swahili</language>
			<language type="ta">tamilskt</language>
			<language type="te">telugu</language>
			<language type="th">thailendskt</language>
			<language type="ti">tigrinya</language>
			<language type="tk">turkmenskt</language>
			<language type="tlh">klingonskt</language>
			<language type="tr">turkiskt</language>
			<language type="tw">twi</language>
			<language type="ug">uighur</language>
			<language type="uk">ukrainskt</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekiskt</language>
			<language type="vi">vietnamesiskt</language>
			<language type="xh">xhosa</language>
			<language type="yi">jiddiskt</language>
			<language type="zu">sulu</language>
		</languages>
		<territories>
			<territory type="002">Africa</territory>
			<territory type="003">Norðuramerika</territory>
			<territory type="005">Suðuramerika</territory>
			<territory type="009">Kyrrahavsoyggjarnar</territory>
			<territory type="011">Vesturafrika</territory>
			<territory type="013">Sentralamerika</territory>
			<territory type="014">Eysturafrika</territory>
			<territory type="015">Norðurafrika</territory>
			<territory type="017">Miðafrika</territory>
			<territory type="018">Suður Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="029">Karibia</territory>
			<territory type="030">Eysturasia</territory>
			<territory type="034">Suðurasia</territory>
			<territory type="035">Suðureysturasia</territory>
			<territory type="039">Suðurevropa</territory>
			<territory type="053">Avstralia og Nýsæland</territory>
			<territory type="054">Melanesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Suðursentralasia</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Sentralasia</territory>
			<territory type="145">Vesturasia</territory>
			<territory type="150">Evropa</territory>
			<territory type="151">Eysturevropa</territory>
			<territory type="154">Norðurevropa</territory>
			<territory type="155">Vesturevropa</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Sameindu Emirríkini</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua og Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AT">Eysturríki</territory>
			<territory type="AU">Avstralia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Áland</territory>
			<territory type="AZ">Aserbajdsjan</territory>
			<territory type="BA">Bosnia-Hersegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesj</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasilia</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Butan</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Hvítarussland</territory>
			<territory type="BZ">Belis</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CF">Miðafrikalýðveldið</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Sveis</territory>
			<territory type="CI">Fílabeinsstrondin</territory>
			<territory type="CL">Kili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Kolombia</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Grønhøvdaoyggjarnar</territory>
			<territory type="CY">Kýpros</territory>
			<territory type="CZ">Kekkia</territory>
			<territory type="DE">Týskland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danmørk</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Domingo lýðveldið</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egyptaland</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spania</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finnland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FM">Mikronesia</territory>
			<territory type="FO">Føroyar</territory>
			<territory type="FR">Frakland</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Stóra Bretland</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grønland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvator Guinea</territory>
			<territory type="GR">Grikkaland</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea Bissau</territory>
			<territory type="GY">Gujana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungarn</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Írland</territory>
			<territory type="IL">Ísrael</territory>
			<territory type="IN">India</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Ísland</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jameika</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenja</territory>
			<territory type="KG">Kirgisia</territory>
			<territory type="KH">Kambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorooyggjarnar</territory>
			<territory type="KN">Saint Kitts og Nevis</territory>
			<territory type="KP">Norður-Korea</territory>
			<territory type="KR">Suður-Korea</territory>
			<territory type="KW">Kuvait</territory>
			<territory type="KZ">Kasakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lusia</territory>
			<territory type="LI">Liktenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litava</territory>
			<territory type="LU">Luksemborg</territory>
			<territory type="LV">Lettland</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalloyggjarnar</territory>
			<territory type="MK">Makedónia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Burma</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Makao</territory>
			<territory type="MR">Móritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Móritius</territory>
			<territory type="MV">Maldivuoyggjarnar</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Maleisia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Niðurlond</territory>
			<territory type="NO">Noreg</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Ný Sæland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Perú</territory>
			<territory type="PG">Papua Nýguinea</territory>
			<territory type="PH">Filipsoyggjar</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Pólland</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguei</territory>
			<territory type="QA">Katar</territory>
			<territory type="QU">EU</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumenia</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Russland</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudi-Arábia</territory>
			<territory type="SB">Sálomonoyggjarnar</territory>
			<territory type="SC">Seyskelloyggjarnar</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Svøríki</territory>
			<territory type="SG">Singapor</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome og Prinsipi</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Svasiland</territory>
			<territory type="TD">Kjad</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Teiland</territory>
			<territory type="TJ">Tadsjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TN">Tunesia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkaland</territory>
			<territory type="TT">Trinidad og Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Teivan</territory>
			<territory type="TZ">Tansania</territory>
			<territory type="UA">Ukreina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="US">Sambandsríki Amerika</territory>
			<territory type="UY">Uruguei</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vinsent og Grenadinoyggjar</territory>
			<territory type="VE">Venesuela</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WS">Sámoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="ZA">Suðurafrika</territory>
			<territory type="ZM">Sambia</territory>
			<territory type="ZW">Simbabvi</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á b d ð e-i í j-o ó p r-u ú v x y ý æ ø]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c q w z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>’</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>”</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">mai</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">mars</month>
							<month type="4">apríl</month>
							<month type="5">mai</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sun</day>
							<day type="mon">mán</day>
							<day type="tue">týs</day>
							<day type="wed">mik</day>
							<day type="thu">hós</day>
							<day type="fri">frí</day>
							<day type="sat">ley</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sunnudagur</day>
							<day type="mon">mánadagur</day>
							<day type="tue">týsdagur</day>
							<day type="wed">mikudagur</day>
							<day type="thu">hósdagur</day>
							<day type="fri">fríggjadagur</day>
							<day type="sat">leygardagur</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMM">MMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd-MM - E dd-MM</greatestDifference>
							<greatestDifference id="d">E dd-MM - E dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d. MMM - E d. MMM</greatestDifference>
							<greatestDifference id="d">E d. - E d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd-MM - dd-MM</greatestDifference>
							<greatestDifference id="d">dd-MM - dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM-yy - MM-yy</greatestDifference>
							<greatestDifference id="y">MM-yy - MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="d">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="y">E dd-MM-yy - E dd-MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E dd MMM yyyy - E dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="d">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="y">dd-MM-yy - dd-MM-yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="DKK">
				<symbol>kr</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�]Y�R�RLocale/Data/kn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.60 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="kn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">ಅಫ್ರಿಕಾನ್ಸ್‍</language>
			<language type="am">ಅಮ್ಹಾರಿಕ್</language>
			<language type="ar">ಅರೇಬಿಕ್</language>
			<language type="as">ಅಸ್ಸಾಮೀಸ್</language>
			<language type="ast">ಆಸ್ಟುರಿಯನ್</language>
			<language type="az">ಅಜರ್ಬೈಜಾನಿ</language>
			<language type="be">ಬೆಲರೂಸಿಯನ್</language>
			<language type="bg">ಬಲ್ಗೇರಿಯನ್</language>
			<language type="bh">ಬಿಹಾರಿ</language>
			<language type="bn">ಬಂಗಾಳಿ</language>
			<language type="br">ಬ್ರೆಟನ್</language>
			<language type="bs">ಬೋಸ್ನಿಯನ್</language>
			<language type="ca">ಕ್ಯಾಟಲನ್</language>
			<language type="cs">ಚೆಕ್</language>
			<language type="cy">ವೆಲ್ಶ್</language>
			<language type="da">ಡ್ಯಾನಿಷ್</language>
			<language type="de">ಜರ್ಮನ್</language>
			<language type="el">ಗ್ರೀಕ್</language>
			<language type="en">ಇಂಗ್ಲೀಷ್</language>
			<language type="eo">ಎಸ್ಪರಾಂಟೋ</language>
			<language type="es">ಸ್ಪ್ಯಾನಿಷ್</language>
			<language type="et">ಎಸ್ಟೋನಿಯನ್</language>
			<language type="eu">ಬಾಸ್ಕ್</language>
			<language type="fa">ಪರ್ಷಿಯನ್</language>
			<language type="fi">ಫಿನ್ನಿಷ್</language>
			<language type="fil">ಟ್ಯಾಗಲಾಗ್</language>
			<language type="fo">ಫೆರೋಯಿಸ್</language>
			<language type="fr">ಫ್ರೆಂಚ್</language>
			<language type="fy">ಫ್ರಿಸಿಯನ್</language>
			<language type="ga">ಐರಿಷ್</language>
			<language type="gd">ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್</language>
			<language type="gl">ಗ್ಯಾಲೀಷಿಯನ್</language>
			<language type="gn">ಗ್ವಾರಾನಿ</language>
			<language type="gu">ಗುಜರಾತಿ</language>
			<language type="he">ಹಿಬ್ರೂ</language>
			<language type="hi">ಹಿಂದಿ</language>
			<language type="hr">ಕ್ರೊಯೇಶಿಯನ್</language>
			<language type="hu">ಹಂಗೇರಿಯನ್</language>
			<language type="hy">ಆರ್ಮೇನಿಯನ್</language>
			<language type="ia">ಇಂಟರ್ಲಿಂಗುವಾ</language>
			<language type="id">ಇಂಡೋನೇಷ್ಯನ್</language>
			<language type="is">ಐಸ್ಲ್ಯಾಂಡಿಕ್</language>
			<language type="it">ಇಟಾಲಿಯನ್</language>
			<language type="ja">ಜಪಾನೀಸ್</language>
			<language type="jv">ಜಾವನೀಸ್</language>
			<language type="ka">ಜಾರ್ಜಿಯನ್</language>
			<language type="km">ಕಾಂಬೋಡಿಯನ್</language>
			<language type="kn">ಕನ್ನಡ</language>
			<language type="ko">ಕೊರಿಯನ್</language>
			<language type="ku">ಕುರ್ದಿಶ್</language>
			<language type="ky">ಕಿರ್ಗಿಜ್</language>
			<language type="la">ಲ್ಯಾಟಿನ್</language>
			<language type="ln">ಲಿಂಗಾಲ</language>
			<language type="lo">ಲಾವೋ</language>
			<language type="lt">ಲಿತುವೇನಿಯನ್</language>
			<language type="lv">ಲಾಟ್ವಿಯನ್</language>
			<language type="mk">ಮ್ಯಾಸೆಡೋನಿಯನ್</language>
			<language type="ml">ಮಲೆಯಾಳಂ</language>
			<language type="mn">ಮಂಗೋಲಿಯನ್</language>
			<language type="mr">ಮರಾಠಿ</language>
			<language type="ms">ಮಲಯ</language>
			<language type="mt">ಮಾಲ್ಟೀಸ್</language>
			<language type="ne">ನೇಪಾಳಿ</language>
			<language type="nl">ಡಚ್</language>
			<language type="nn">ನಾರ್ವೇಜಿಯನ್ (ನೂನಾರ್ಸ್ಕ್‍)</language>
			<language type="no">ನಾರ್ವೇಜಿಯನ್</language>
			<language type="oc">ಆಕ್ಸಿಟಾನ್</language>
			<language type="or">ಒರಿಯಾ</language>
			<language type="pa">ಪಂಜಾಬಿ</language>
			<language type="pl">ಪೋಲಿಷ್</language>
			<language type="ps">ಪಶ್ತೊ</language>
			<language type="pt">ಪೋರ್ಚುಗೀಸ್</language>
			<language type="pt_BR">ಪೋರ್ಚುಗೀಸ್(ಬ್ರೆಜಿಲ್)</language>
			<language type="pt_PT">ಪೋರ್ಚುಗೀಸ್ (ಪೋರ್ಚುಗಲ್)</language>
			<language type="ro">ರೊಮೇನಿಯನ್</language>
			<language type="ru">ರಷಿಯನ್</language>
			<language type="sa">ಸಂಸ್ಕೃತ</language>
			<language type="sd">ಸಿಂಧಿ</language>
			<language type="sh">ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್</language>
			<language type="si">ಸಿಂಹಳ</language>
			<language type="sk">ಸ್ಲೊವಾಕ್</language>
			<language type="sl">ಸ್ಲೊವೇನಿಯನ್</language>
			<language type="so">ಸೊಮಾಲಿ</language>
			<language type="sq">ಆಲ್ಬೇನಿಯನ್</language>
			<language type="sr">ಸರ್ಬಿಯನ್</language>
			<language type="st">ಸೆಸೊತೊ</language>
			<language type="su">ಸುಂದನೀಸ್</language>
			<language type="sv">ಸ್ವೀಡಿಷ್</language>
			<language type="sw">ಸ್ವಾಹಿಲಿ</language>
			<language type="ta">ತಮಿಳು</language>
			<language type="te">ತೆಲುಗು</language>
			<language type="th">ಥಾಯ್</language>
			<language type="ti">ತಿಗ್ರಿನ್ಯ</language>
			<language type="tk">ತುರ್ಕ್ಮನ್</language>
			<language type="tlh">ಕ್ಲಿಂಗನ್</language>
			<language type="tr">ಟರ್ಕಿಷ್</language>
			<language type="tw">ಟ್ವಿ</language>
			<language type="uk">ಉಕ್ರೇನಿಯನ್</language>
			<language type="und">ಗೊತ್ತಿರದ ಅಥವ ಅಮಾನ್ಯ ಭಾಷೆ</language>
			<language type="ur">ಉರ್ದು</language>
			<language type="uz">ಉಜ್ಬೆಕ್</language>
			<language type="vi">ವಿಯೆಟ್ನಾಮಿ</language>
			<language type="xh">ಕ್ಷೋಸ</language>
			<language type="yi">ಯಿದ್ದಿಶ್</language>
			<language type="zh">ಚೈನೀಸ್</language>
			<language type="zh_Hans">ಸಿಂಪ್ಲಿಫೈಡ್ ಚೈನೀಸ್</language>
			<language type="zh_Hant">ಟ್ರೆಡೀಶನಲ್ ಚೈನೀಸ್</language>
			<language type="zu">ಜುಲು</language>
		</languages>
		<scripts>
			<script type="Arab">ಅರೇಬಿಕ್</script>
			<script type="Armi">ಅರ್ಮಿ</script>
			<script type="Armn">ಅರ್ಮೇನಿಯನ್</script>
			<script type="Avst">ಅವೆಸ್ತಾನ್</script>
			<script type="Bali">ಬಾಲಿನೀಸ್</script>
			<script type="Batk">ಬಾಟಕ್</script>
			<script type="Beng">ಬೆಂಗಾಲಿ</script>
			<script type="Blis">ಬ್ಲಿಸಿಂಬಲ್ಸ್‍</script>
			<script type="Bopo">ಬೋಪೊಮೋಫೋ</script>
			<script type="Brah">ಬ್ರಾಹ್ಮಿ</script>
			<script type="Brai">ಬ್ರೈಲ್</script>
			<script type="Bugi">ಬಗಿನೀಸ್</script>
			<script type="Buhd">ಬುಹಿದ್</script>
			<script type="Cakm">ಕಾಕಂ</script>
			<script type="Cari">ಕರೇನ್</script>
			<script type="Cham">ಚಾಮ್</script>
			<script type="Cher">ಚೆರೋಕೀ</script>
			<script type="Cirt">ಸಿರ್ಥ್</script>
			<script type="Copt">ಕಾಪ್ಟಿಕ್</script>
			<script type="Cprt">ಸಿಪ್ರಿಯಾಟ್</script>
			<script type="Cyrl">ಸಿರಿಲಿಕ್</script>
			<script type="Deva">ದೇವನಾಗರಿ</script>
			<script type="Dsrt">ಡಸರ್ಟ್</script>
			<script type="Egyd">ಈಜಿಪ್ಟಿಯನ್ ಡೆಮೋಟಿಕ್</script>
			<script type="Egyh">ಈಜಿಪ್ಟಿಯನ್ ಹಿಯಾರ್ಟಿಕ್</script>
			<script type="Egyp">ಈಜಿಪ್ಟಿಯನ್ ಹೀರೋಗ್ಲಿಫ್ಸ್‍</script>
			<script type="Ethi">ಇಥಿಯೋಪಿಯಾ</script>
			<script type="Geok">ಜಾರ್ಜಿಯನ್ ಖುಸ್ತುರಿ</script>
			<script type="Geor">ಜಾರ್ಜಿಯನ್</script>
			<script type="Glag">ಗ್ಲಾಗೋಲಿಟಿಕ್</script>
			<script type="Goth">ಗೋತಿಕ್</script>
			<script type="Grek">ಗ್ರೀಕ್</script>
			<script type="Gujr">ಗುಜರಾತಿ</script>
			<script type="Guru">ಗುರುಮುಖಿ</script>
			<script type="Hang">ಹ್ಯಾಂಗಲ್</script>
			<script type="Hani">ಹಾನ್</script>
			<script type="Hano">ಹನೂನೂ</script>
			<script type="Hans">ಸರಳೀಕೃತ ಹಾನ್</script>
			<script type="Hant">ಸಾಂಪ್ರದಾಯಿಕ ಹಾನ್</script>
			<script type="Hebr">ಹೀಬ್ರೂ</script>
			<script type="Hira">ಹಿರಗಾನಾ</script>
			<script type="Hrkt">ಕಟಕಾನಾ ಅಥವ ಹಿರಗಾನಾ</script>
			<script type="Inds">ಇಂಡಸ್</script>
			<script type="Java">ಜಾವನೀಸ್</script>
			<script type="Jpan">ಜಾಪನೀಸ್</script>
			<script type="Kali">ಕೆಯಾ ಲಿ</script>
			<script type="Kana">ಕಟಕಾನಾ</script>
			<script type="Khar">ಖರೋಶ್ತಿ</script>
			<script type="Khmr">ಖಮೇರ್</script>
			<script type="Knda">ಕನ್ನಡ</script>
			<script type="Kore">ಕೊರಿಯನ್</script>
			<script type="Kthi">ಕೈಥಿ</script>
			<script type="Lana">ಲಾನಾ</script>
			<script type="Laoo">ಲಾವೋ</script>
			<script type="Latf">ಫ್ರಾಕ್ತರ್ ಲ್ಯಾಟಿನ್</script>
			<script type="Latg">ಗೇಲಿಕ್ ಲ್ಯಾಟಿನ್</script>
			<script type="Latn">ಲ್ಯಾಟಿನ್</script>
			<script type="Lepc">ಲೆಪ್ಚಾ</script>
			<script type="Limb">ಲಿಂಬು</script>
			<script type="Lina">ಲೀನಯರ್ ಎ</script>
			<script type="Linb">ಲೀನಯರ್ ಬಿ</script>
			<script type="Lyci">ಲೈಸಿಯನ್</script>
			<script type="Lydi">ಲಿಡಿಯನ್</script>
			<script type="Mand">ಮಂಡೇಯನ್</script>
			<script type="Mani">ಮನಿಚಯೇಯನ್</script>
			<script type="Maya">ಮಯಾನ್ ಹೈರೋಗ್ಲಿಫ್ಸ್‍</script>
			<script type="Mero">ಮೆರೊಯಿಟಿಕ್</script>
			<script type="Mlym">ಮಲೆಯಾಳಂ</script>
			<script type="Mong">ಮಂಗೋಲಿಯನ್</script>
			<script type="Moon">ಮೂನ್</script>
			<script type="Mtei">ಮೈತಿ ಮಯೆಕ್</script>
			<script type="Mymr">ಮ್ಯಾನ್ಮಾರ್</script>
			<script type="Nkoo">ಎನ್‍ಕೋ</script>
			<script type="Phlv">ಬುಕ್ ಪಾಹ್ಲವಿ</script>
			<script type="Qaai">ಇನ್‍ಹೆರಿಟೆಡ್</script>
			<script type="Syre">ಎಸ್ಟ್ರಾಂಜಿಲೋ ಸಿರಿಯಾಕ್</script>
			<script type="Syrn">ಪೂರ್ವ ಸಿರಿಯಾಕ್</script>
			<script type="Zxxx">ಬರೆಯದೆ ಇರುವ</script>
			<script type="Zyyy">ಸಾಮಾನ್ಯ</script>
			<script type="Zzzz">ಅಜ್ಞಾತ ಅಥವ ಅಮಾನ್ಯವಾದ ಲಿಪಿ</script>
		</scripts>
		<territories>
			<territory type="002">ಆಫ್ರಿಕಾ</territory>
			<territory type="013">ಮಧ್ಯ ಅಮೇರಿಕಾ</territory>
			<territory type="014">ಪೂರ್ವ ಆಫ್ರಿಕಾ</territory>
			<territory type="019">ಅಮೆರಿಕಾಸ್</territory>
			<territory type="029">ಕೆರೇಬಿಯನ್</territory>
			<territory type="030">ಪೂರ್ವ ಎಶಿಯಾ</territory>
			<territory type="053">ಆಸ್ಟ್ರೇಲಿಯಾ ಹಾಗು ನ್ಯೂಝಿಲ್ಯಾಂಡ್</territory>
			<territory type="142">ಏಶಿಯಾ</territory>
			<territory type="143">ಮಧ್ಯ ಏಶಿಯಾ</territory>
			<territory type="150">ಯೂರೋಪ್</territory>
			<territory type="151">ಪೂರ್ವ ಯೂರೋಪ್</territory>
			<territory type="AQ">ಅಂಟಾರ್ಟಿಕಾ</territory>
			<territory type="AT">ಆಸ್ಟ್ರಿಯಾ</territory>
			<territory type="AU">ಆಸ್ಟ್ರೆಲಿಯ</territory>
			<territory type="BE">ಬೆಲ್ಜಿಯಮ್</territory>
			<territory type="BG">ಬಲ್ಗೇರಿಯನ್</territory>
			<territory type="BR">ಬ್ರಝಿಲ್</territory>
			<territory type="BV">ಬೋವೆಟ್ ಐಲ್ಯಾಂಡ್</territory>
			<territory type="CN">ಚೀನ</territory>
			<territory type="CY">ಸೈಪ್ರಸ್</territory>
			<territory type="CZ">ಚೆಕ್ ರಿಪಬ್ಲಿಕ್</territory>
			<territory type="DE">ಜರ್ಮನಿ</territory>
			<territory type="DK">ಡೆನ್ಮಾರ್ಕ್</territory>
			<territory type="EE">ಎಸ್ತೊನಿಯ</territory>
			<territory type="FI">ಫಿನ್‍‍ಲ್ಯಾಂಡ್</territory>
			<territory type="FR">ಫ್ರಾನ್ಸ್‍</territory>
			<territory type="GR">ಗ್ರೀಸ್</territory>
			<territory type="IN">ಭಾರತ</territory>
			<territory type="IO">ಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಓಶಿಯನ್ ಟೆರಿಟರಿ</territory>
			<territory type="MV">ಮಾಲ್ಡಿವ ದ್ವೀಪಗಳು</territory>
			<territory type="NP">ನೆಪಾಳ</territory>
			<territory type="QU">ಯುರೋಪಿಯನ್ ಯೂನಿಯನ್</territory>
			<territory type="SG">ಸಿಂಗಪುರ</territory>
			<territory type="TF">ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳು</territory>
			<territory type="TO">ಟೊಂಗ</territory>
			<territory type="TR">ತುರ್ಕಿ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[಼ ಂ ಃ ೦-೯ ಅ-ಋ ೠ ಌ ೡ ಎ-ಐ ಒ-ನ ಪ-ಲ ವ-ಹ ಳ ೞ ಽ-ೄ ೆ-ೈ ೊ-್ ೕ ೖ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ಜನವರೀ</month>
							<month type="2">ಫೆಬ್ರವರೀ</month>
							<month type="3">ಮಾರ್ಚ್</month>
							<month type="4">ಎಪ್ರಿಲ್</month>
							<month type="5">ಮೆ</month>
							<month type="6">ಜೂನ್</month>
							<month type="7">ಜುಲೈ</month>
							<month type="8">ಆಗಸ್ಟ್</month>
							<month type="9">ಸಪ್ಟೆಂಬರ್</month>
							<month type="10">ಅಕ್ಟೋಬರ್</month>
							<month type="11">ನವೆಂಬರ್</month>
							<month type="12">ಡಿಸೆಂಬರ್</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ಜನವರೀ</month>
							<month type="2">ಫೆಬ್ರವರೀ</month>
							<month type="3">ಮಾರ್ಚ್</month>
							<month type="4">ಎಪ್ರಿಲ್</month>
							<month type="5">ಮೆ</month>
							<month type="6">ಜೂನ್</month>
							<month type="7">ಜುಲೈ</month>
							<month type="8">ಆಗಸ್ಟ್</month>
							<month type="9">ಸಪ್ಟೆಂಬರ್</month>
							<month type="10">ಅಕ್ಟೋಬರ್</month>
							<month type="11">ನವೆಂಬರ್</month>
							<month type="12">ಡಿಸೆಂಬರ್</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ರ.</day>
							<day type="mon">ಸೋ.</day>
							<day type="tue">ಮಂ.</day>
							<day type="wed">ಬು.</day>
							<day type="thu">ಗು.</day>
							<day type="fri">ಶು.</day>
							<day type="sat">ಶನಿ.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ರವಿವಾರ</day>
							<day type="mon">ಸೋಮವಾರ</day>
							<day type="tue">ಮಂಗಳವಾರ</day>
							<day type="wed">ಬುಧವಾರ</day>
							<day type="thu">ಗುರುವಾರ</day>
							<day type="fri">ಶುಕ್ರವಾರ</day>
							<day type="sat">ಶನಿವಾರ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ಒಂದು  1</quarter>
							<quarter type="2">ಎರಡು 2</quarter>
							<quarter type="3">ಮೂರು 3</quarter>
							<quarter type="4">ನಾಲೃಕ  4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ಪೂರ್ವಾಹ್ನ</am>
				<pm>ಅಪರಾಹ್ನ</pm>
				<eras>
					<eraNames>
						<era type="0">ಈಸಪೂವ೯.</era>
						<era type="1">ಸನ್.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>hh:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>hh:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>hh:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>रु</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ಹೌದು</yesstr>
			<nostr>ಇಲ್ಲ:ಅಲ್ಲ</nostr>
		</messages>
	</posix>
</ldml>

PKpG[��f��Locale/Data/es_VE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/17 18:53:46 $"/>
		<language type="es"/>
		<territory type="VE"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[~�*__Locale/Data/ku.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/06/16 03:11:01 $"/>
		<language type="ku"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">ئه‌فریكای</language>
			<language type="am">ئه‌مهه‌رینجی</language>
			<language type="ar">عه‌ره‌بی</language>
			<language type="as">ئا سسامی (زوبان)</language>
			<language type="az">ئازه‌ربایجانی</language>
			<language type="be">بێلاڕووسی</language>
			<language type="bg">بۆلگاری</language>
			<language type="bh">بیهاری</language>
			<language type="bn">به‌نگلادێشی</language>
			<language type="br">برێتونی</language>
			<language type="bs">بۆسنی</language>
			<language type="ca">كاتالۆنی</language>
			<language type="cs">چه‌كی</language>
			<language type="cy">وێلزی</language>
			<language type="da">دانماركی</language>
			<language type="de">ئاڵمانی</language>
			<language type="el">یۆنانی</language>
			<language type="en">ئینگلیزی</language>
			<language type="eo">ئێسپیرانتۆ</language>
			<language type="es">ئیسپانی</language>
			<language type="et">ئیستۆنی</language>
			<language type="eu">باسكی</language>
			<language type="fa">فارسی</language>
			<language type="fi">فینله‌ندی</language>
			<language type="fil">تاگالۆگی</language>
			<language type="fo">فه‌رئۆیی</language>
			<language type="fr">فه‌رانسی</language>
			<language type="fy">فریسی</language>
			<language type="ga">ئیرله‌ندی</language>
			<language type="gd">گه‌لیكی سكۆتله‌ندی</language>
			<language type="gl">گالیسی</language>
			<language type="gn">گووارانی</language>
			<language type="gu">گوجاراتی</language>
			<language type="he">هیبرێ</language>
			<language type="hi">هیندی</language>
			<language type="hr">كرواتی</language>
			<language type="hu">هه‌نگاری (مه‌جاری)</language>
			<language type="hy">ئه رمه نی</language>
			<language type="ia">ئینترلینگوی</language>
			<language type="id">ئێه‌ندونیزی</language>
			<language type="ie">ئه نته ر لينگ (زوبان)</language>
			<language type="is">ئیسله‌ندی</language>
			<language type="it">ئیتالی</language>
			<language type="ja">ژاپۆنی</language>
			<language type="jv">جاڤانی</language>
			<language type="ka">گۆرجستانی</language>
			<language type="km">کامبۆجی (زوبان)</language>
			<language type="kn">كه‌نه‌دایی</language>
			<language type="ko">كۆری</language>
			<language type="ku">كوردی</language>
			<language type="ky">كرگیزی</language>
			<language type="la">لاتینی</language>
			<language type="ln">لينگالا</language>
			<language type="lo">لاو‏ى</language>
			<language type="lt">لیتوانی</language>
			<language type="lv">لێتۆنی</language>
			<language type="mk">ماكێدۆنی</language>
			<language type="ml">مالایلام</language>
			<language type="mn">مه‌نگۆلی</language>
			<language type="mr">ماراتی</language>
			<language type="ms">مالیزی</language>
			<language type="mt">ماڵتایی</language>
			<language type="ne">نێپالی</language>
			<language type="nl">هۆڵه‌ندی</language>
			<language type="no">نۆروێژی</language>
			<language type="oc">ئۆسیتانی</language>
			<language type="or">ئۆرییا</language>
			<language type="pa">په‌نجابی</language>
			<language type="pl">پۆڵۆنیایی (له‌هستانی)</language>
			<language type="ps">په‌شتوو</language>
			<language type="pt">پۆرتۆگالی</language>
			<language type="pt_BR">پورتوگاڵی (برازیل)</language>
			<language type="pt_PT">پورتوگاڵی (پورتوگاڵ)</language>
			<language type="ro">ڕۆمانی</language>
			<language type="ru">ڕووسی</language>
			<language type="sa">سانسکريت</language>
			<language type="sd">سيندی(زوبان)</language>
			<language type="sh">سێربۆكرواتی</language>
			<language type="si">سینهه‌لی</language>
			<language type="sk">سلۆڤاكی</language>
			<language type="sl">سلۆڤێنی</language>
			<language type="so">سۆمالی</language>
			<language type="sq">ئاڵبانی</language>
			<language type="sr">سه‌ربی</language>
			<language type="st">سێسۆتۆ</language>
			<language type="su">سودانی</language>
			<language type="sv">سویدی</language>
			<language type="sw">سواهیلی</language>
			<language type="ta">تامیلی</language>
			<language type="te">ته‌لۆگوی</language>
			<language type="th">تایله‌ندی</language>
			<language type="ti">تیگرینیای</language>
			<language type="tk">تروكمانی</language>
			<language type="tlh">كلینگۆن</language>
			<language type="tr">توركی</language>
			<language type="tw">توی</language>
			<language type="ug">ئويخووری</language>
			<language type="uk">ئۆكراینی</language>
			<language type="ur">ئۆردو‌و</language>
			<language type="uz">ئۆزبه‌كی</language>
			<language type="vi">ڤیه‌تنامی</language>
			<language type="xh">سسوسا</language>
			<language type="yi">یوددی</language>
			<language type="zu">زولو</language>
		</languages>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ئ-ب پ ت ج چ ح-د ر ز ڕ ژ س ش ع غ ف ڤ ق ک گ ل ڵ م-ه ھ و ۆ ی ێ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ً-ْ ء-ة ث ذ ص-ظ ك ى ي]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
</ldml>

PKpG[4un##Locale/Data/vi_VN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.39 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="vi"/>
		<territory type="VN"/>
	</identity>
</ldml>
PKpG[c 4콿��Locale/Data/characters.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldmlSupplemental.dtd">

<supplementalData>
	<version number="$Revision: 1.15 $"/>
	<generation date="$Date: 2008/06/12 17:39:05 $"/>
	<characters>
		<character-fallback>
			<character value = " ">
				<substitute> </substitute>
			</character>
			<character value = "©">
				<substitute>(C)</substitute>
			</character>
			<character value = "«">
				<substitute>&lt;&lt;</substitute>
			</character>
			<character value = "­">
				<substitute>-</substitute>
			</character>
			<character value = "®">
				<substitute>(R)</substitute>
			</character>
			<character value = "µ">
				<substitute>μ</substitute>
			</character>
			<character value = "»">
				<substitute>&gt;&gt;</substitute>
			</character>
			<character value = "¼">
				<substitute> 1/4</substitute>
			</character>
			<character value = "½">
				<substitute> 1/2</substitute>
			</character>
			<character value = "¾">
				<substitute> 3/4</substitute>
			</character>
			<character value = "Æ">
				<substitute>AE</substitute>
			</character>
			<character value = "ß">
				<substitute>ss</substitute>
			</character>
			<character value = "æ">
				<substitute>ae</substitute>
			</character>
			<character value = "IJ">
				<substitute>IJ</substitute>
			</character>
			<character value = "ij">
				<substitute>ij</substitute>
			</character>
			<character value = "ʼn">
				<substitute>&apos;n</substitute>
			</character>
			<character value = "Œ">
				<substitute>OE</substitute>
			</character>
			<character value = "œ">
				<substitute>oe</substitute>
			</character>
			<character value = "ſ">
				<substitute>s</substitute>
			</character>
			<character value = "DŽ">
				<substitute>DŽ</substitute>
			</character>
			<character value = "Dž">
				<substitute>Dž</substitute>
			</character>
			<character value = "dž">
				<substitute>dž</substitute>
			</character>
			<character value = "LJ">
				<substitute>LJ</substitute>
			</character>
			<character value = "Lj">
				<substitute>Lj</substitute>
			</character>
			<character value = "lj">
				<substitute>lj</substitute>
			</character>
			<character value = "NJ">
				<substitute>NJ</substitute>
			</character>
			<character value = "Nj">
				<substitute>Nj</substitute>
			</character>
			<character value = "nj">
				<substitute>nj</substitute>
			</character>
			<character value = "DZ">
				<substitute>DZ</substitute>
			</character>
			<character value = "Dz">
				<substitute>Dz</substitute>
			</character>
			<character value = "dz">
				<substitute>dz</substitute>
			</character>
			<character value = "Ș">
				<substitute>Ş</substitute>
			</character>
			<character value = "ș">
				<substitute>ş</substitute>
			</character>
			<character value = "Ț">
				<substitute>Ţ</substitute>
			</character>
			<character value = "ț">
				<substitute>ţ</substitute>
			</character>
			<character value="־">
				<substitute>‐</substitute>
				<substitute>-</substitute>
			</character>
			<character value = "٫">
				<substitute>,</substitute>
			</character>
			<character value = "٬">
				<substitute>&apos;</substitute>
			</character>
			<character value = ";">
				<substitute>;</substitute>
			</character>
			<character value = "‐">
				<substitute>-</substitute>
			</character>
			<character value = "–">
				<substitute>-</substitute>
			</character>
			<character value = "—">
				<substitute>-</substitute>
			</character>
			<character value = "―">
				<substitute>—</substitute>
				<substitute>-</substitute>
			</character>
			<character value = "‘">
				<substitute>&apos;</substitute>
			</character>
			<character value = "’">
				<substitute>&apos;</substitute>
			</character>
			<character value = "“">
				<substitute>&quot;</substitute>
			</character>
			<character value = "”">
				<substitute>&quot;</substitute>
			</character>
			<character value = "․">
				<substitute>.</substitute>
			</character>
			<character value = "‥">
				<substitute>..</substitute>
			</character>
			<character value = "…">
				<substitute>...</substitute>
			</character>
			<character value = "‼">
				<substitute>!!</substitute>
			</character>
			<character value = "⁄">
				<substitute>/</substitute>
			</character>
			<character value = "⁇">
				<substitute>??</substitute>
			</character>
			<character value = "⁈">
				<substitute>?!</substitute>
			</character>
			<character value = "⁉">
				<substitute>!?</substitute>
			</character>
			<character value = "₠">
				<substitute>CE</substitute>
			</character>
			<character value = "₢">
				<substitute>Cr</substitute>
			</character>
			<character value = "₣">
				<substitute>Fr.</substitute>
			</character>
			<character value = "₤">
				<substitute>L.</substitute>
				<substitute>£</substitute>
			</character>
			<character value = "₦">
				<substitute>NGN</substitute>
			</character>
			<character value = "₧">
				<substitute>Pts</substitute>
			</character>
			<character value = "₨">
				<substitute>Rs</substitute>
			</character>
			<character value = "₩">
				<substitute>KRW</substitute>
			</character>
			<character value = "₪">
				<substitute>שח</substitute>
				<substitute>ILS</substitute>
			</character>
			<character value = "₫">
				<substitute>đ</substitute>
				<substitute>VND</substitute>
			</character>
			<character value = "€">
				<substitute>EUR</substitute>
			</character>
			<character value = "₭">
				<substitute>LAK</substitute>
			</character>
			<character value = "₮">
				<substitute>MNT</substitute>
			</character>
			<character value = "₯">
				<substitute>GRD</substitute>
			</character>
			<character value = "₱">
				<substitute>PHP</substitute>
			</character>
			<character value = "₲">
				<substitute>PYG</substitute>
			</character>
			<character value = "₵">
				<substitute>Ȼ</substitute>
				<substitute>GHS</substitute>
			</character>
			<character value = "℀">
				<substitute>a/c</substitute>
			</character>
			<character value = "℁">
				<substitute>a/s</substitute>
			</character>
			<character value = "℃">
				<substitute>°C</substitute>
			</character>
			<character value = "℅">
				<substitute>c/o</substitute>
			</character>
			<character value = "℆">
				<substitute>c/u</substitute>
			</character>
			<character value = "℉">
				<substitute>°F</substitute>
			</character>
			<character value = "№">
				<substitute>No</substitute>
			</character>
			<character value = "℞">
				<substitute>Rx</substitute>
			</character>
			<character value = "℠">
				<substitute>SM</substitute>
			</character>
			<character value = "℡">
				<substitute>TEL</substitute>
			</character>
			<character value = "™">
				<substitute>TM</substitute>
			</character>
			<character value = "Ω">
				<substitute>Ω</substitute>
			</character>
			<character value = "K">
				<substitute>K</substitute>
			</character>
			<character value = "Å">
				<substitute>Å</substitute>
			</character>
			<character value = "℻">
				<substitute>FAX</substitute>
			</character>
			<character value = "⅓">
				<substitute> 1/3</substitute>
			</character>
			<character value = "⅔">
				<substitute> 2/3</substitute>
			</character>
			<character value = "⅕">
				<substitute> 1/5</substitute>
			</character>
			<character value = "⅖">
				<substitute> 2/5</substitute>
			</character>
			<character value = "⅗">
				<substitute> 3/5</substitute>
			</character>
			<character value = "⅘">
				<substitute> 4/5</substitute>
			</character>
			<character value = "⅙">
				<substitute> 1/6</substitute>
			</character>
			<character value = "⅚">
				<substitute> 5/6</substitute>
			</character>
			<character value = "⅛">
				<substitute> 1/8</substitute>
			</character>
			<character value = "⅜">
				<substitute> 3/8</substitute>
			</character>
			<character value = "⅝">
				<substitute> 5/8</substitute>
			</character>
			<character value = "⅞">
				<substitute> 7/8</substitute>
			</character>
			<character value = "⅟">
				<substitute> 1/</substitute>
			</character>
			<character value = "Ⅰ">
				<substitute>I</substitute>
			</character>
			<character value = "Ⅱ">
				<substitute>II</substitute>
			</character>
			<character value = "Ⅲ">
				<substitute>III</substitute>
			</character>
			<character value = "Ⅳ">
				<substitute>IV</substitute>
			</character>
			<character value = "Ⅴ">
				<substitute>V</substitute>
			</character>
			<character value = "Ⅵ">
				<substitute>VI</substitute>
			</character>
			<character value = "Ⅶ">
				<substitute>VII</substitute>
			</character>
			<character value = "Ⅷ">
				<substitute>VIII</substitute>
			</character>
			<character value = "Ⅸ">
				<substitute>IX</substitute>
			</character>
			<character value = "Ⅹ">
				<substitute>X</substitute>
			</character>
			<character value = "Ⅺ">
				<substitute>XI</substitute>
			</character>
			<character value = "Ⅻ">
				<substitute>XII</substitute>
			</character>
			<character value = "Ⅼ">
				<substitute>L</substitute>
			</character>
			<character value = "Ⅽ">
				<substitute>C</substitute>
			</character>
			<character value = "Ⅾ">
				<substitute>D</substitute>
			</character>
			<character value = "Ⅿ">
				<substitute>M</substitute>
			</character>
			<character value = "ⅰ">
				<substitute>i</substitute>
			</character>
			<character value = "ⅱ">
				<substitute>ii</substitute>
			</character>
			<character value = "ⅲ">
				<substitute>iii</substitute>
			</character>
			<character value = "ⅳ">
				<substitute>iv</substitute>
			</character>
			<character value = "ⅴ">
				<substitute>v</substitute>
			</character>
			<character value = "ⅵ">
				<substitute>vi</substitute>
			</character>
			<character value = "ⅶ">
				<substitute>vii</substitute>
			</character>
			<character value = "ⅷ">
				<substitute>viii</substitute>
			</character>
			<character value = "ⅸ">
				<substitute>ix</substitute>
			</character>
			<character value = "ⅹ">
				<substitute>x</substitute>
			</character>
			<character value = "ⅺ">
				<substitute>xi</substitute>
			</character>
			<character value = "ⅻ">
				<substitute>xii</substitute>
			</character>
			<character value = "ⅼ">
				<substitute>l</substitute>
			</character>
			<character value = "ⅽ">
				<substitute>c</substitute>
			</character>
			<character value = "ⅾ">
				<substitute>d</substitute>
			</character>
			<character value = "ⅿ">
				<substitute>m</substitute>
			</character>
			<character value = "∏">
				<substitute>Π</substitute>
			</character>
			<character value = "∑">
				<substitute>Σ</substitute>
			</character>
			<character value = "−">
				<substitute>-</substitute>
			</character>
			<character value = "∕">
				<substitute>/</substitute>
			</character>
			<character value = "∖">
				<substitute>\</substitute>
			</character>
			<character value = "∣">
				<substitute>|</substitute>
			</character>
			<character value = "∥">
				<substitute>‖</substitute>
				<substitute>||</substitute>
			</character>
			<character value = "⑴">
				<substitute>(1)</substitute>
			</character>
			<character value = "⑵">
				<substitute>(2)</substitute>
			</character>
			<character value = "⑶">
				<substitute>(3)</substitute>
			</character>
			<character value = "⑷">
				<substitute>(4)</substitute>
			</character>
			<character value = "⑸">
				<substitute>(5)</substitute>
			</character>
			<character value = "⑹">
				<substitute>(6)</substitute>
			</character>
			<character value = "⑺">
				<substitute>(7)</substitute>
			</character>
			<character value = "⑻">
				<substitute>(8)</substitute>
			</character>
			<character value = "⑼">
				<substitute>(9)</substitute>
			</character>
			<character value = "⑽">
				<substitute>(10)</substitute>
			</character>
			<character value = "⑾">
				<substitute>(11)</substitute>
			</character>
			<character value = "⑿">
				<substitute>(12)</substitute>
			</character>
			<character value = "⒀">
				<substitute>(13)</substitute>
			</character>
			<character value = "⒁">
				<substitute>(14)</substitute>
			</character>
			<character value = "⒂">
				<substitute>(15)</substitute>
			</character>
			<character value = "⒃">
				<substitute>(16)</substitute>
			</character>
			<character value = "⒄">
				<substitute>(17)</substitute>
			</character>
			<character value = "⒅">
				<substitute>(18)</substitute>
			</character>
			<character value = "⒆">
				<substitute>(19)</substitute>
			</character>
			<character value = "⒇">
				<substitute>(20)</substitute>
			</character>
			<character value = "⒈">
				<substitute>1.</substitute>
			</character>
			<character value = "⒉">
				<substitute>2.</substitute>
			</character>
			<character value = "⒊">
				<substitute>3.</substitute>
			</character>
			<character value = "⒋">
				<substitute>4.</substitute>
			</character>
			<character value = "⒌">
				<substitute>5.</substitute>
			</character>
			<character value = "⒍">
				<substitute>6.</substitute>
			</character>
			<character value = "⒎">
				<substitute>7.</substitute>
			</character>
			<character value = "⒏">
				<substitute>8.</substitute>
			</character>
			<character value = "⒐">
				<substitute>9.</substitute>
			</character>
			<character value = "⒑">
				<substitute>10.</substitute>
			</character>
			<character value = "⒒">
				<substitute>11.</substitute>
			</character>
			<character value = "⒓">
				<substitute>12.</substitute>
			</character>
			<character value = "⒔">
				<substitute>13.</substitute>
			</character>
			<character value = "⒕">
				<substitute>14.</substitute>
			</character>
			<character value = "⒖">
				<substitute>15.</substitute>
			</character>
			<character value = "⒗">
				<substitute>16.</substitute>
			</character>
			<character value = "⒘">
				<substitute>17.</substitute>
			</character>
			<character value = "⒙">
				<substitute>18.</substitute>
			</character>
			<character value = "⒚">
				<substitute>19.</substitute>
			</character>
			<character value = "⒛">
				<substitute>20.</substitute>
			</character>
			<character value = "⒜">
				<substitute>(a)</substitute>
			</character>
			<character value = "⒝">
				<substitute>(b)</substitute>
			</character>
			<character value = "⒞">
				<substitute>(c)</substitute>
			</character>
			<character value = "⒟">
				<substitute>(d)</substitute>
			</character>
			<character value = "⒠">
				<substitute>(e)</substitute>
			</character>
			<character value = "⒡">
				<substitute>(f)</substitute>
			</character>
			<character value = "⒢">
				<substitute>(g)</substitute>
			</character>
			<character value = "⒣">
				<substitute>(h)</substitute>
			</character>
			<character value = "⒤">
				<substitute>(i)</substitute>
			</character>
			<character value = "⒥">
				<substitute>(j)</substitute>
			</character>
			<character value = "⒦">
				<substitute>(k)</substitute>
			</character>
			<character value = "⒧">
				<substitute>(l)</substitute>
			</character>
			<character value = "⒨">
				<substitute>(m)</substitute>
			</character>
			<character value = "⒩">
				<substitute>(n)</substitute>
			</character>
			<character value = "⒪">
				<substitute>(o)</substitute>
			</character>
			<character value = "⒫">
				<substitute>(p)</substitute>
			</character>
			<character value = "⒬">
				<substitute>(q)</substitute>
			</character>
			<character value = "⒭">
				<substitute>(r)</substitute>
			</character>
			<character value = "⒮">
				<substitute>(s)</substitute>
			</character>
			<character value = "⒯">
				<substitute>(t)</substitute>
			</character>
			<character value = "⒰">
				<substitute>(u)</substitute>
			</character>
			<character value = "⒱">
				<substitute>(v)</substitute>
			</character>
			<character value = "⒲">
				<substitute>(w)</substitute>
			</character>
			<character value = "⒳">
				<substitute>(x)</substitute>
			</character>
			<character value = "⒴">
				<substitute>(y)</substitute>
			</character>
			<character value = "⒵">
				<substitute>(z)</substitute>
			</character>
			<character value = "㋀">
				<substitute>1月</substitute>
			</character>
			<character value = "㋁">
				<substitute>2月</substitute>
			</character>
			<character value = "㋂">
				<substitute>3月</substitute>
			</character>
			<character value = "㋃">
				<substitute>4月</substitute>
			</character>
			<character value = "㋄">
				<substitute>5月</substitute>
			</character>
			<character value = "㋅">
				<substitute>6月</substitute>
			</character>
			<character value = "㋆">
				<substitute>7月</substitute>
			</character>
			<character value = "㋇">
				<substitute>8月</substitute>
			</character>
			<character value = "㋈">
				<substitute>9月</substitute>
			</character>
			<character value = "㋉">
				<substitute>10月</substitute>
			</character>
			<character value = "㋊">
				<substitute>11月</substitute>
			</character>
			<character value = "㋋">
				<substitute>12月</substitute>
			</character>
			<character value = "㋌">
				<substitute>Hg</substitute>
			</character>
			<character value = "㋍">
				<substitute>erg</substitute>
			</character>
			<character value = "㋎">
				<substitute>eV</substitute>
			</character>
			<character value = "㋏">
				<substitute>LTD</substitute>
			</character>
			<character value = "㍘">
				<substitute>0点</substitute>
			</character>
			<character value = "㍙">
				<substitute>1点</substitute>
			</character>
			<character value = "㍚">
				<substitute>2点</substitute>
			</character>
			<character value = "㍛">
				<substitute>3点</substitute>
			</character>
			<character value = "㍜">
				<substitute>4点</substitute>
			</character>
			<character value = "㍝">
				<substitute>5点</substitute>
			</character>
			<character value = "㍞">
				<substitute>6点</substitute>
			</character>
			<character value = "㍟">
				<substitute>7点</substitute>
			</character>
			<character value = "㍠">
				<substitute>8点</substitute>
			</character>
			<character value = "㍡">
				<substitute>9点</substitute>
			</character>
			<character value = "㍢">
				<substitute>10点</substitute>
			</character>
			<character value = "㍣">
				<substitute>11点</substitute>
			</character>
			<character value = "㍤">
				<substitute>12点</substitute>
			</character>
			<character value = "㍥">
				<substitute>13点</substitute>
			</character>
			<character value = "㍦">
				<substitute>14点</substitute>
			</character>
			<character value = "㍧">
				<substitute>15点</substitute>
			</character>
			<character value = "㍨">
				<substitute>16点</substitute>
			</character>
			<character value = "㍩">
				<substitute>17点</substitute>
			</character>
			<character value = "㍪">
				<substitute>18点</substitute>
			</character>
			<character value = "㍫">
				<substitute>19点</substitute>
			</character>
			<character value = "㍬">
				<substitute>20点</substitute>
			</character>
			<character value = "㍭">
				<substitute>21点</substitute>
			</character>
			<character value = "㍮">
				<substitute>22点</substitute>
			</character>
			<character value = "㍯">
				<substitute>23点</substitute>
			</character>
			<character value = "㍰">
				<substitute>24点</substitute>
			</character>
			<character value = "㍱">
				<substitute>hPa</substitute>
			</character>
			<character value = "㍲">
				<substitute>da</substitute>
			</character>
			<character value = "㍳">
				<substitute>AU</substitute>
			</character>
			<character value = "㍴">
				<substitute>bar</substitute>
			</character>
			<character value = "㍵">
				<substitute>oV</substitute>
			</character>
			<character value = "㍶">
				<substitute>pc</substitute>
			</character>
			<character value = "㍷">
				<substitute>dm</substitute>
			</character>
			<character value = "㍸">
				<substitute>dm²</substitute>
			</character>
			<character value = "㍹">
				<substitute>dm³</substitute>
			</character>
			<character value = "㍺">
				<substitute>IU</substitute>
			</character>
			<character value = "㎀">
				<substitute>pA</substitute>
			</character>
			<character value = "㎁">
				<substitute>nA</substitute>
			</character>
			<character value = "㎂">
				<substitute>μA</substitute>
			</character>
			<character value = "㎃">
				<substitute>mA</substitute>
			</character>
			<character value = "㎄">
				<substitute>kA</substitute>
			</character>
			<character value = "㎅">
				<substitute>KB</substitute>
			</character>
			<character value = "㎆">
				<substitute>MB</substitute>
			</character>
			<character value = "㎇">
				<substitute>GB</substitute>
			</character>
			<character value = "㎈">
				<substitute>cal</substitute>
			</character>
			<character value = "㎉">
				<substitute>kcal</substitute>
			</character>
			<character value = "㎊">
				<substitute>pF</substitute>
			</character>
			<character value = "㎋">
				<substitute>nF</substitute>
			</character>
			<character value = "㎌">
				<substitute>μF</substitute>
			</character>
			<character value = "㎍">
				<substitute>μg</substitute>
			</character>
			<character value = "㎎">
				<substitute>mg</substitute>
			</character>
			<character value = "㎏">
				<substitute>kg</substitute>
			</character>
			<character value = "㎐">
				<substitute>Hz</substitute>
			</character>
			<character value = "㎑">
				<substitute>kHz</substitute>
			</character>
			<character value = "㎒">
				<substitute>MHz</substitute>
			</character>
			<character value = "㎓">
				<substitute>GHz</substitute>
			</character>
			<character value = "㎔">
				<substitute>THz</substitute>
			</character>
			<character value = "㎕">
				<substitute>μℓ</substitute>
				<substitute>μl</substitute>
			</character>
			<character value = "㎖">
				<substitute>mℓ</substitute>
				<substitute>ml</substitute>
			</character>
			<character value = "㎗">
				<substitute>dℓ</substitute>
				<substitute>dl</substitute>
			</character>
			<character value = "㎘">
				<substitute>kℓ</substitute>
				<substitute>kl</substitute>
			</character>
			<character value = "㎙">
				<substitute>fm</substitute>
			</character>
			<character value = "㎚">
				<substitute>nm</substitute>
			</character>
			<character value = "㎛">
				<substitute>μm</substitute>
			</character>
			<character value = "㎜">
				<substitute>mm</substitute>
			</character>
			<character value = "㎝">
				<substitute>cm</substitute>
			</character>
			<character value = "㎞">
				<substitute>km</substitute>
			</character>
			<character value = "㎟">
				<substitute>mm²</substitute>
			</character>
			<character value = "㎠">
				<substitute>cm²</substitute>
			</character>
			<character value = "㎡">
				<substitute>m²</substitute>
			</character>
			<character value = "㎢">
				<substitute>km²</substitute>
			</character>
			<character value = "㎣">
				<substitute>mm³</substitute>
			</character>
			<character value = "㎤">
				<substitute>cm³</substitute>
			</character>
			<character value = "㎥">
				<substitute>m³</substitute>
			</character>
			<character value = "㎦">
				<substitute>km³</substitute>
			</character>
			<character value = "㎧">
				<substitute>m∕s</substitute>
				<substitute>m/s</substitute>
			</character>
			<character value = "㎨">
				<substitute>m∕s²</substitute>
				<substitute>m/s²</substitute>
			</character>
			<character value = "㎩">
				<substitute>Pa</substitute>
			</character>
			<character value = "㎪">
				<substitute>kPa</substitute>
			</character>
			<character value = "㎫">
				<substitute>MPa</substitute>
			</character>
			<character value = "㎬">
				<substitute>GPa</substitute>
			</character>
			<character value = "㎭">
				<substitute>rad</substitute>
			</character>
			<character value = "㎮">
				<substitute>rad∕s</substitute>
				<substitute>rad/s</substitute>
			</character>
			<character value = "㎯">
				<substitute>rad∕s²</substitute>
				<substitute>rad/s²</substitute>
			</character>
			<character value = "㎰">
				<substitute>ps</substitute>
			</character>
			<character value = "㎱">
				<substitute>ns</substitute>
			</character>
			<character value = "㎲">
				<substitute>μs</substitute>
			</character>
			<character value = "㎳">
				<substitute>ms</substitute>
			</character>
			<character value = "㎴">
				<substitute>pV</substitute>
			</character>
			<character value = "㎵">
				<substitute>nV</substitute>
			</character>
			<character value = "㎶">
				<substitute>μV</substitute>
			</character>
			<character value = "㎷">
				<substitute>mV</substitute>
			</character>
			<character value = "㎸">
				<substitute>kV</substitute>
			</character>
			<character value = "㎹">
				<substitute>MV</substitute>
			</character>
			<character value = "㎺">
				<substitute>pW</substitute>
			</character>
			<character value = "㎻">
				<substitute>nW</substitute>
			</character>
			<character value = "㎼">
				<substitute>μW</substitute>
			</character>
			<character value = "㎽">
				<substitute>mW</substitute>
			</character>
			<character value = "㎾">
				<substitute>kW</substitute>
			</character>
			<character value = "㎿">
				<substitute>MW</substitute>
			</character>
			<character value = "㏀">
				<substitute>kΩ</substitute>
			</character>
			<character value = "㏁">
				<substitute>MΩ</substitute>
			</character>
			<character value = "㏂">
				<substitute>a.m.</substitute>
			</character>
			<character value = "㏃">
				<substitute>Bq</substitute>
			</character>
			<character value = "㏄">
				<substitute>CC</substitute>
			</character>
			<character value = "㏅">
				<substitute>cd</substitute>
			</character>
			<character value = "㏆">
				<substitute>C∕kg</substitute>
				<substitute>C/kg</substitute>
			</character>
			<character value = "㏇">
				<substitute>Co.</substitute>
			</character>
			<character value = "㏈">
				<substitute>dB</substitute>
			</character>
			<character value = "㏉">
				<substitute>Gy</substitute>
			</character>
			<character value = "㏊">
				<substitute>ha</substitute>
			</character>
			<character value = "㏋">
				<substitute>HP</substitute>
			</character>
			<character value = "㏌">
				<substitute>in</substitute>
			</character>
			<character value = "㏍">
				<substitute>KK</substitute>
			</character>
			<character value = "㏎">
				<substitute>KM</substitute>
			</character>
			<character value = "㏏">
				<substitute>kt</substitute>
			</character>
			<character value = "㏐">
				<substitute>lm</substitute>
			</character>
			<character value = "㏑">
				<substitute>ln</substitute>
			</character>
			<character value = "㏒">
				<substitute>log</substitute>
			</character>
			<character value = "㏓">
				<substitute>lx</substitute>
			</character>
			<character value = "㏔">
				<substitute>mb</substitute>
			</character>
			<character value = "㏕">
				<substitute>mil</substitute>
			</character>
			<character value = "㏖">
				<substitute>mol</substitute>
			</character>
			<character value = "㏗">
				<substitute>pH</substitute>
			</character>
			<character value = "㏘">
				<substitute>p.m.</substitute>
			</character>
			<character value = "㏙">
				<substitute>PPM</substitute>
			</character>
			<character value = "㏚">
				<substitute>PR</substitute>
			</character>
			<character value = "㏛">
				<substitute>sr</substitute>
			</character>
			<character value = "㏜">
				<substitute>Sv</substitute>
			</character>
			<character value = "㏝">
				<substitute>Wb</substitute>
			</character>
			<character value = "㏞">
				<substitute>V∕m</substitute>
				<substitute>V/m</substitute>
			</character>
			<character value = "㏟">
				<substitute>A∕m</substitute>
				<substitute>A/m</substitute>
			</character>
			<character value = "㏠">
				<substitute>1日</substitute>
			</character>
			<character value = "㏡">
				<substitute>2日</substitute>
			</character>
			<character value = "㏢">
				<substitute>3日</substitute>
			</character>
			<character value = "㏣">
				<substitute>4日</substitute>
			</character>
			<character value = "㏤">
				<substitute>5日</substitute>
			</character>
			<character value = "㏥">
				<substitute>6日</substitute>
			</character>
			<character value = "㏦">
				<substitute>7日</substitute>
			</character>
			<character value = "㏧">
				<substitute>8日</substitute>
			</character>
			<character value = "㏨">
				<substitute>9日</substitute>
			</character>
			<character value = "㏩">
				<substitute>10日</substitute>
			</character>
			<character value = "㏪">
				<substitute>11日</substitute>
			</character>
			<character value = "㏫">
				<substitute>12日</substitute>
			</character>
			<character value = "㏬">
				<substitute>13日</substitute>
			</character>
			<character value = "㏭">
				<substitute>14日</substitute>
			</character>
			<character value = "㏮">
				<substitute>15日</substitute>
			</character>
			<character value = "㏯">
				<substitute>16日</substitute>
			</character>
			<character value = "㏰">
				<substitute>17日</substitute>
			</character>
			<character value = "㏱">
				<substitute>18日</substitute>
			</character>
			<character value = "㏲">
				<substitute>19日</substitute>
			</character>
			<character value = "㏳">
				<substitute>20日</substitute>
			</character>
			<character value = "㏴">
				<substitute>21日</substitute>
			</character>
			<character value = "㏵">
				<substitute>22日</substitute>
			</character>
			<character value = "㏶">
				<substitute>23日</substitute>
			</character>
			<character value = "㏷">
				<substitute>24日</substitute>
			</character>
			<character value = "㏸">
				<substitute>25日</substitute>
			</character>
			<character value = "㏹">
				<substitute>26日</substitute>
			</character>
			<character value = "㏺">
				<substitute>27日</substitute>
			</character>
			<character value = "㏻">
				<substitute>28日</substitute>
			</character>
			<character value = "㏼">
				<substitute>29日</substitute>
			</character>
			<character value = "㏽">
				<substitute>30日</substitute>
			</character>
			<character value = "㏾">
				<substitute>31日</substitute>
			</character>
			<character value = "㏿">
				<substitute>gal</substitute>
			</character>
			<character value = "ff">
				<substitute>ff</substitute>
			</character>
			<character value = "fi">
				<substitute>fi</substitute>
			</character>
			<character value = "fl">
				<substitute>fl</substitute>
			</character>
			<character value = "ffi">
				<substitute>ffi</substitute>
			</character>
			<character value = "ffl">
				<substitute>ffl</substitute>
			</character>
			<character value = "ſt">
				<substitute>ſt</substitute>
			</character>
			<character value = "st">
				<substitute>st</substitute>
			</character>
			<character value = "!">
				<substitute>!</substitute>
			</character>
			<character value = """>
				<substitute>&quot;</substitute>
			</character>
			<character value = "#">
				<substitute>#</substitute>
			</character>
			<character value = "$">
				<substitute>$</substitute>
			</character>
			<character value = "%">
				<substitute>%</substitute>
			</character>
			<character value = "&">
				<substitute>&amp;</substitute>
			</character>
			<character value = "'">
				<substitute>&apos;</substitute>
			</character>
			<character value = "(">
				<substitute>(</substitute>
			</character>
			<character value = ")">
				<substitute>)</substitute>
			</character>
			<character value = "*">
				<substitute>*</substitute>
			</character>
			<character value = "+">
				<substitute>+</substitute>
			</character>
			<character value = ",">
				<substitute>,</substitute>
			</character>
			<character value = "-">
				<substitute>-</substitute>
			</character>
			<character value = ".">
				<substitute>.</substitute>
			</character>
			<character value = "/">
				<substitute>/</substitute>
			</character>
			<character value = "0">
				<substitute>0</substitute>
			</character>
			<character value = "1">
				<substitute>1</substitute>
			</character>
			<character value = "2">
				<substitute>2</substitute>
			</character>
			<character value = "3">
				<substitute>3</substitute>
			</character>
			<character value = "4">
				<substitute>4</substitute>
			</character>
			<character value = "5">
				<substitute>5</substitute>
			</character>
			<character value = "6">
				<substitute>6</substitute>
			</character>
			<character value = "7">
				<substitute>7</substitute>
			</character>
			<character value = "8">
				<substitute>8</substitute>
			</character>
			<character value = "9">
				<substitute>9</substitute>
			</character>
			<character value = ":">
				<substitute>:</substitute>
			</character>
			<character value = ";">
				<substitute>;</substitute>
			</character>
			<character value = "<">
				<substitute>&lt;</substitute>
			</character>
			<character value = "=">
				<substitute>=</substitute>
			</character>
			<character value = ">">
				<substitute>&gt;</substitute>
			</character>
			<character value = "?">
				<substitute>?</substitute>
			</character>
			<character value = "@">
				<substitute>@</substitute>
			</character>
			<character value = "A">
				<substitute>A</substitute>
			</character>
			<character value = "B">
				<substitute>B</substitute>
			</character>
			<character value = "C">
				<substitute>C</substitute>
			</character>
			<character value = "D">
				<substitute>D</substitute>
			</character>
			<character value = "E">
				<substitute>E</substitute>
			</character>
			<character value = "F">
				<substitute>F</substitute>
			</character>
			<character value = "G">
				<substitute>G</substitute>
			</character>
			<character value = "H">
				<substitute>H</substitute>
			</character>
			<character value = "I">
				<substitute>I</substitute>
			</character>
			<character value = "J">
				<substitute>J</substitute>
			</character>
			<character value = "K">
				<substitute>K</substitute>
			</character>
			<character value = "L">
				<substitute>L</substitute>
			</character>
			<character value = "M">
				<substitute>M</substitute>
			</character>
			<character value = "N">
				<substitute>N</substitute>
			</character>
			<character value = "O">
				<substitute>O</substitute>
			</character>
			<character value = "P">
				<substitute>P</substitute>
			</character>
			<character value = "Q">
				<substitute>Q</substitute>
			</character>
			<character value = "R">
				<substitute>R</substitute>
			</character>
			<character value = "S">
				<substitute>S</substitute>
			</character>
			<character value = "T">
				<substitute>T</substitute>
			</character>
			<character value = "U">
				<substitute>U</substitute>
			</character>
			<character value = "V">
				<substitute>V</substitute>
			</character>
			<character value = "W">
				<substitute>W</substitute>
			</character>
			<character value = "X">
				<substitute>X</substitute>
			</character>
			<character value = "Y">
				<substitute>Y</substitute>
			</character>
			<character value = "Z">
				<substitute>Z</substitute>
			</character>
			<character value = "[">
				<substitute>[</substitute>
			</character>
			<character value = "\">
				<substitute>\</substitute>
			</character>
			<character value = "]">
				<substitute>]</substitute>
			</character>
			<character value = "^">
				<substitute>^</substitute>
			</character>
			<character value = "_">
				<substitute>_</substitute>
			</character>
			<character value = "`">
				<substitute>`</substitute>
			</character>
			<character value = "a">
				<substitute>a</substitute>
			</character>
			<character value = "b">
				<substitute>b</substitute>
			</character>
			<character value = "c">
				<substitute>c</substitute>
			</character>
			<character value = "d">
				<substitute>d</substitute>
			</character>
			<character value = "e">
				<substitute>e</substitute>
			</character>
			<character value = "f">
				<substitute>f</substitute>
			</character>
			<character value = "g">
				<substitute>g</substitute>
			</character>
			<character value = "h">
				<substitute>h</substitute>
			</character>
			<character value = "i">
				<substitute>i</substitute>
			</character>
			<character value = "j">
				<substitute>j</substitute>
			</character>
			<character value = "k">
				<substitute>k</substitute>
			</character>
			<character value = "l">
				<substitute>l</substitute>
			</character>
			<character value = "m">
				<substitute>m</substitute>
			</character>
			<character value = "n">
				<substitute>n</substitute>
			</character>
			<character value = "o">
				<substitute>o</substitute>
			</character>
			<character value = "p">
				<substitute>p</substitute>
			</character>
			<character value = "q">
				<substitute>q</substitute>
			</character>
			<character value = "r">
				<substitute>r</substitute>
			</character>
			<character value = "s">
				<substitute>s</substitute>
			</character>
			<character value = "t">
				<substitute>t</substitute>
			</character>
			<character value = "u">
				<substitute>u</substitute>
			</character>
			<character value = "v">
				<substitute>v</substitute>
			</character>
			<character value = "w">
				<substitute>w</substitute>
			</character>
			<character value = "x">
				<substitute>x</substitute>
			</character>
			<character value = "y">
				<substitute>y</substitute>
			</character>
			<character value = "z">
				<substitute>z</substitute>
			</character>
			<character value = "{">
				<substitute>{</substitute>
			</character>
			<character value = "|">
				<substitute>|</substitute>
			</character>
			<character value = "}">
				<substitute>}</substitute>
			</character>
			<character value = "~">
				<substitute>~</substitute>
			</character>
			<character value = "⦅">
				<substitute>⦅</substitute>
				<substitute>((</substitute>
			</character>
			<character value = "⦆">
				<substitute>⦆</substitute>
				<substitute>))</substitute>
			</character>
			<character value = "。">
				<substitute>。</substitute>
			</character>
			<character value = "「">
				<substitute>「</substitute>
			</character>
			<character value = "」">
				<substitute>」</substitute>
			</character>
			<character value = "、">
				<substitute>、</substitute>
			</character>
			<character value = "・">
				<substitute>・</substitute>
			</character>
			<character value = "ヲ">
				<substitute>ヲ</substitute>
			</character>
			<character value = "ァ">
				<substitute>ァ</substitute>
			</character>
			<character value = "ィ">
				<substitute>ィ</substitute>
			</character>
			<character value = "ゥ">
				<substitute>ゥ</substitute>
			</character>
			<character value = "ェ">
				<substitute>ェ</substitute>
			</character>
			<character value = "ォ">
				<substitute>ォ</substitute>
			</character>
			<character value = "ャ">
				<substitute>ャ</substitute>
			</character>
			<character value = "ュ">
				<substitute>ュ</substitute>
			</character>
			<character value = "ョ">
				<substitute>ョ</substitute>
			</character>
			<character value = "ッ">
				<substitute>ッ</substitute>
			</character>
			<character value = "ー">
				<substitute>ー</substitute>
			</character>
			<character value = "ア">
				<substitute>ア</substitute>
			</character>
			<character value = "イ">
				<substitute>イ</substitute>
			</character>
			<character value = "ウ">
				<substitute>ウ</substitute>
			</character>
			<character value = "エ">
				<substitute>エ</substitute>
			</character>
			<character value = "オ">
				<substitute>オ</substitute>
			</character>
			<character value = "カ">
				<substitute>カ</substitute>
			</character>
			<character value = "キ">
				<substitute>キ</substitute>
			</character>
			<character value = "ク">
				<substitute>ク</substitute>
			</character>
			<character value = "ケ">
				<substitute>ケ</substitute>
			</character>
			<character value = "コ">
				<substitute>コ</substitute>
			</character>
			<character value = "サ">
				<substitute>サ</substitute>
			</character>
			<character value = "シ">
				<substitute>シ</substitute>
			</character>
			<character value = "ス">
				<substitute>ス</substitute>
			</character>
			<character value = "セ">
				<substitute>セ</substitute>
			</character>
			<character value = "ソ">
				<substitute>ソ</substitute>
			</character>
			<character value = "タ">
				<substitute>タ</substitute>
			</character>
			<character value = "チ">
				<substitute>チ</substitute>
			</character>
			<character value = "ツ">
				<substitute>ツ</substitute>
			</character>
			<character value = "テ">
				<substitute>テ</substitute>
			</character>
			<character value = "ト">
				<substitute>ト</substitute>
			</character>
			<character value = "ナ">
				<substitute>ナ</substitute>
			</character>
			<character value = "ニ">
				<substitute>ニ</substitute>
			</character>
			<character value = "ヌ">
				<substitute>ヌ</substitute>
			</character>
			<character value = "ネ">
				<substitute>ネ</substitute>
			</character>
			<character value = "ノ">
				<substitute>ノ</substitute>
			</character>
			<character value = "ハ">
				<substitute>ハ</substitute>
			</character>
			<character value = "ヒ">
				<substitute>ヒ</substitute>
			</character>
			<character value = "フ">
				<substitute>フ</substitute>
			</character>
			<character value = "ヘ">
				<substitute>ヘ</substitute>
			</character>
			<character value = "ホ">
				<substitute>ホ</substitute>
			</character>
			<character value = "マ">
				<substitute>マ</substitute>
			</character>
			<character value = "ミ">
				<substitute>ミ</substitute>
			</character>
			<character value = "ム">
				<substitute>ム</substitute>
			</character>
			<character value = "メ">
				<substitute>メ</substitute>
			</character>
			<character value = "モ">
				<substitute>モ</substitute>
			</character>
			<character value = "ヤ">
				<substitute>ヤ</substitute>
			</character>
			<character value = "ユ">
				<substitute>ユ</substitute>
			</character>
			<character value = "ヨ">
				<substitute>ヨ</substitute>
			</character>
			<character value = "ラ">
				<substitute>ラ</substitute>
			</character>
			<character value = "リ">
				<substitute>リ</substitute>
			</character>
			<character value = "ル">
				<substitute>ル</substitute>
			</character>
			<character value = "レ">
				<substitute>レ</substitute>
			</character>
			<character value = "ロ">
				<substitute>ロ</substitute>
			</character>
			<character value = "ワ">
				<substitute>ワ</substitute>
			</character>
			<character value = "ン">
				<substitute>ン</substitute>
			</character>
			<character value = "゙">
				<substitute>゛</substitute>
			</character>
			<character value = "゚">
				<substitute>゜</substitute>
			</character>
			<character value = "ᅠ">
				<substitute>ㅤ</substitute>
			</character>
			<character value = "ᄀ">
				<substitute>ㄱ</substitute>
			</character>
			<character value = "ᄁ">
				<substitute>ㄲ</substitute>
			</character>
			<character value = "ᆪ">
				<substitute>ㄳ</substitute>
			</character>
			<character value = "ᄂ">
				<substitute>ㄴ</substitute>
			</character>
			<character value = "ᆬ">
				<substitute>ㄵ</substitute>
			</character>
			<character value = "ᆭ">
				<substitute>ㄶ</substitute>
			</character>
			<character value = "ᄃ">
				<substitute>ㄷ</substitute>
			</character>
			<character value = "ᄄ">
				<substitute>ㄸ</substitute>
			</character>
			<character value = "ᄅ">
				<substitute>ㄹ</substitute>
			</character>
			<character value = "ᆰ">
				<substitute>ㄺ</substitute>
			</character>
			<character value = "ᆱ">
				<substitute>ㄻ</substitute>
			</character>
			<character value = "ᆲ">
				<substitute>ㄼ</substitute>
			</character>
			<character value = "ᆳ">
				<substitute>ㄽ</substitute>
			</character>
			<character value = "ᆴ">
				<substitute>ㄾ</substitute>
			</character>
			<character value = "ᆵ">
				<substitute>ㄿ</substitute>
			</character>
			<character value = "ᄚ">
				<substitute>ㅀ</substitute>
			</character>
			<character value = "ᄆ">
				<substitute>ㅁ</substitute>
			</character>
			<character value = "ᄇ">
				<substitute>ㅂ</substitute>
			</character>
			<character value = "ᄈ">
				<substitute>ㅃ</substitute>
			</character>
			<character value = "ᄡ">
				<substitute>ㅄ</substitute>
			</character>
			<character value = "ᄉ">
				<substitute>ㅅ</substitute>
			</character>
			<character value = "ᄊ">
				<substitute>ㅆ</substitute>
			</character>
			<character value = "ᄋ">
				<substitute>ㅇ</substitute>
			</character>
			<character value = "ᄌ">
				<substitute>ㅈ</substitute>
			</character>
			<character value = "ᄍ">
				<substitute>ㅉ</substitute>
			</character>
			<character value = "ᄎ">
				<substitute>ㅊ</substitute>
			</character>
			<character value = "ᄏ">
				<substitute>ㅋ</substitute>
			</character>
			<character value = "ᄐ">
				<substitute>ㅌ</substitute>
			</character>
			<character value = "ᄑ">
				<substitute>ㅍ</substitute>
			</character>
			<character value = "ᄒ">
				<substitute>ㅎ</substitute>
			</character>
			<character value = "ᅡ">
				<substitute>ㅏ</substitute>
			</character>
			<character value = "ᅢ">
				<substitute>ㅐ</substitute>
			</character>
			<character value = "ᅣ">
				<substitute>ㅑ</substitute>
			</character>
			<character value = "ᅤ">
				<substitute>ㅒ</substitute>
			</character>
			<character value = "ᅥ">
				<substitute>ㅓ</substitute>
			</character>
			<character value = "ᅦ">
				<substitute>ㅔ</substitute>
			</character>
			<character value = "ᅧ">
				<substitute>ㅕ</substitute>
			</character>
			<character value = "ᅨ">
				<substitute>ㅖ</substitute>
			</character>
			<character value = "ᅩ">
				<substitute>ㅗ</substitute>
			</character>
			<character value = "ᅪ">
				<substitute>ㅘ</substitute>
			</character>
			<character value = "ᅫ">
				<substitute>ㅙ</substitute>
			</character>
			<character value = "ᅬ">
				<substitute>ㅚ</substitute>
			</character>
			<character value = "ᅭ">
				<substitute>ㅛ</substitute>
			</character>
			<character value = "ᅮ">
				<substitute>ㅜ</substitute>
			</character>
			<character value = "ᅯ">
				<substitute>ㅝ</substitute>
			</character>
			<character value = "ᅰ">
				<substitute>ㅞ</substitute>
			</character>
			<character value = "ᅱ">
				<substitute>ㅟ</substitute>
			</character>
			<character value = "ᅲ">
				<substitute>ㅠ</substitute>
			</character>
			<character value = "ᅳ">
				<substitute>ㅡ</substitute>
			</character>
			<character value = "ᅴ">
				<substitute>ㅢ</substitute>
			</character>
			<character value = "ᅵ">
				<substitute>ㅣ</substitute>
			</character>
			<character value = "¢">
				<substitute>¢</substitute>
			</character>
			<character value = "£">
				<substitute>£</substitute>
			</character>
			<character value = "¬">
				<substitute>¬</substitute>
			</character>
			<character value = " ̄">
				<substitute>¯</substitute>
			</character>
			<character value = "¦">
				<substitute>¦</substitute>
			</character>
			<character value = "¥">
				<substitute>¥</substitute>
			</character>
			<character value = "₩">
				<substitute>₩</substitute>
			</character>
			<character value = "│">
				<substitute>│</substitute>
			</character>
			<character value = "←">
				<substitute>←</substitute>
			</character>
			<character value = "↑">
				<substitute>↑</substitute>
			</character>
			<character value = "→">
				<substitute>→</substitute>
			</character>
			<character value = "↓">
				<substitute>↓</substitute>
			</character>
			<character value = "■">
				<substitute>■</substitute>
			</character>
			<character value = "○">
				<substitute>○</substitute>
			</character>
			<character value = "₵">
				<substitute>¢</substitute>
			</character>
			<character value = "₲">
				<substitute>G</substitute>
			</character>
			<character value = "₡">
				<substitute>C</substitute>
			</character>
		</character-fallback>
	</characters>
</supplementalData>
PKpG[m9��##Locale/Data/ne_NP.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ne"/>
		<territory type="NP"/>
	</identity>
</ldml>
PKpG[,or���Locale/Data/en_HK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="HK"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="HKD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<displayName>USD</displayName>
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�?���Locale/Data/sr_Latn_ME.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.18 $"/>
		<generation date="$Date: 2008/06/17 14:12:16 $"/>
		<language type="sr"/>
		<script type="Latn"/>
		<territory type="ME"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d.MM.yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d.MM - E, d.MM</greatestDifference>
							<greatestDifference id="d">E, d.MM - E, d.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d.MM - d.MM</greatestDifference>
							<greatestDifference id="d">d.MM - d.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MM.yyyy - MM.yyyy</greatestDifference>
							<greatestDifference id="y">MM.yyyy - MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d.MM.yyyy. - d.MM.yyyy.</greatestDifference>
							<greatestDifference id="d">d.MM.yyyy. - d.MM.yyyy.</greatestDifference>
							<greatestDifference id="y">d.MM.yyyy. - d.MM.yyyy.</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[z�TTLocale/Data/tig.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tig"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">አፋርኛ</language>
			<language type="ab">አብሐዚኛ</language>
			<language type="af">አፍሪቃንስኛ</language>
			<language type="am">አምሐረኛ</language>
			<language type="ar">ዐርቢኛ</language>
			<language type="as">አሳሜዛዊ</language>
			<language type="ay">አያማርኛ</language>
			<language type="az">አዜርባይጃንኛ</language>
			<language type="ba">ባስኪርኛ</language>
			<language type="be">ቤላራሻኛ</language>
			<language type="bg">ቡልጋሪኛ</language>
			<language type="bh">ቢሃሪ</language>
			<language type="bi">ቢስላምኛ</language>
			<language type="bn">በንጋሊኛ</language>
			<language type="bo">ትበትንኛ</language>
			<language type="br">ብሬቶንኛ</language>
			<language type="byn">ብሊን</language>
			<language type="ca">ካታላንኛ</language>
			<language type="co">ኮርሲካኛ</language>
			<language type="cs">ቼክኛ</language>
			<language type="cy">ወልሽ</language>
			<language type="da">ዴኒሽ</language>
			<language type="de">ጀርመን</language>
			<language type="dz">ድዞንግኻኛ</language>
			<language type="el">ግሪክኛ</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="eo">ኤስፐራንቶ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="et">ኤስቶኒአን</language>
			<language type="eu">ባስክኛ</language>
			<language type="fa">ፐርሲያኛ</language>
			<language type="fi">ፊኒሽ</language>
			<language type="fj">ፊጂኛ</language>
			<language type="fo">ፋሮኛ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="fy">ፍሪስኛ</language>
			<language type="ga">አይሪሽ</language>
			<language type="gd">እስኮትስ ጌልክኛ</language>
			<language type="gez">ግዕዝኛ</language>
			<language type="gl">ጋለጋኛ</language>
			<language type="gn">ጓራኒኛ</language>
			<language type="gu">ጉጃርቲኛ</language>
			<language type="ha">ሃውሳኛ</language>
			<language type="he">ዕብራስጥ</language>
			<language type="hi">ሐንድኛ</language>
			<language type="hr">ክሮሽያንኛ</language>
			<language type="hu">ሀንጋሪኛ</language>
			<language type="hy">አርመናዊ</language>
			<language type="ia">ኢንቴርሊንጓ</language>
			<language type="id">እንዶኒሲኛ</language>
			<language type="ie">እንተርሊንግወ</language>
			<language type="ik">እኑፒያቅኛ</language>
			<language type="is">አይስላንድኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="iu">እኑክቲቱትኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="jv">ጃቫንኛ</language>
			<language type="ka">ጊዮርጊያን</language>
			<language type="kk">ካዛክኛ</language>
			<language type="kl">ካላሊሱትኛ</language>
			<language type="km">ክመርኛ</language>
			<language type="kn">ካናዳኛ</language>
			<language type="ko">ኮሪያኛ</language>
			<language type="ks">ካሽሚርኛ</language>
			<language type="ku">ኩርድሽኛ</language>
			<language type="ky">ኪርጊዝኛ</language>
			<language type="la">ላቲንኛ</language>
			<language type="ln">ሊንጋላኛ</language>
			<language type="lo">ላውስኛ</language>
			<language type="lt">ሊቱአኒያን</language>
			<language type="lv">ላትቪያን</language>
			<language type="mg">ማላጋስኛ</language>
			<language type="mi">ማዮሪኛ</language>
			<language type="mk">ማከዶኒኛ</language>
			<language type="ml">ማላያላምኛ</language>
			<language type="mn">ሞንጎላዊኛ</language>
			<language type="mo">ሞልዳቫዊና</language>
			<language type="mr">ማራዚኛ</language>
			<language type="ms">ማላይኛ</language>
			<language type="mt">ማልቲስኛ</language>
			<language type="my">ቡርማኛ</language>
			<language type="na">ናኡሩ</language>
			<language type="ne">ኔፓሊኛ</language>
			<language type="nl">ደች</language>
			<language type="no">ኖርዌጂያን</language>
			<language type="oc">ኦኪታንኛ</language>
			<language type="om">ኦሮምኛ</language>
			<language type="or">ኦሪያኛ</language>
			<language type="pa">ፓንጃቢኛ</language>
			<language type="pl">ፖሊሽ</language>
			<language type="ps">ፑሽቶኛ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="qu">ኵቿኛ</language>
			<language type="rm">ሮማንስ</language>
			<language type="rn">ሩንዲኛ</language>
			<language type="ro">ሮማኒያን</language>
			<language type="ru">ራሽኛ</language>
			<language type="rw">ኪንያርዋንድኛ</language>
			<language type="sa">ሳንስክሪትኛ</language>
			<language type="sd">ሲንድሂኛ</language>
			<language type="sg">ሳንጎኛ</language>
			<language type="si">ስንሃልኛ</language>
			<language type="sid">ሲዳምኛ</language>
			<language type="sk">ስሎቫክኛ</language>
			<language type="sl">ስሎቪኛ</language>
			<language type="sm">ሳሞአኛ</language>
			<language type="sn">ሾናኛ</language>
			<language type="so">ሱማልኛ</language>
			<language type="sq">ልቤኒኛ</language>
			<language type="sr">ሰርቢኛ</language>
			<language type="ss">ስዋቲኛ</language>
			<language type="st">ሶዞኛ</language>
			<language type="su">ሱዳንኛ</language>
			<language type="sv">ስዊድንኛ</language>
			<language type="sw">ስዋሂሊኛ</language>
			<language type="ta">ታሚልኛ</language>
			<language type="te">ተሉጉኛ</language>
			<language type="tg">ታጂኪኛ</language>
			<language type="th">ታይኛ</language>
			<language type="ti">ትግርኛ</language>
			<language type="tig">ትግረ</language>
			<language type="tk">ቱርክመንኛ</language>
			<language type="tl">ታጋሎገኛ</language>
			<language type="tn">ጽዋናዊኛ</language>
			<language type="to">ቶንጋ</language>
			<language type="tr">ቱርክኛ</language>
			<language type="ts">ጾንጋኛ</language>
			<language type="tt">ታታርኛ</language>
			<language type="tw">ትዊኛ</language>
			<language type="ug">ኡዊግሁርኛ</language>
			<language type="uk">ዩክረኒኛ</language>
			<language type="ur">ኡርዱኛ</language>
			<language type="uz">ኡዝበክኛ</language>
			<language type="vi">ቪትናምኛ</language>
			<language type="vo">ቮላፑክኛ</language>
			<language type="wo">ዎሎፍኛ</language>
			<language type="xh">ዞሳኛ</language>
			<language type="yi">ይዲሻዊኛ</language>
			<language type="yo">ዮሩባዊኛ</language>
			<language type="za">ዡዋንግኛ</language>
			<language type="zh">ቻይንኛ</language>
			<language type="zu">ዙሉኛ</language>
		</languages>
		<scripts>
			<script type="Latn">ላቲን</script>
		</scripts>
		<territories>
			<territory type="AD">አንዶራ</territory>
			<territory type="AE">የተባበሩት አረብ ኤምሬትስ</territory>
			<territory type="AL">አልባኒያ</territory>
			<territory type="AM">አርሜኒያ</territory>
			<territory type="AN">ኔዘርላንድስ አንቲልስ</territory>
			<territory type="AR">አርጀንቲና</territory>
			<territory type="AT">ኦስትሪያ</territory>
			<territory type="AU">አውስትሬሊያ</territory>
			<territory type="AZ">አዘርባጃን</territory>
			<territory type="BA">ቦስኒያ እና ሄርዞጎቪኒያ</territory>
			<territory type="BB">ባርቤዶስ</territory>
			<territory type="BE">ቤልጄም</territory>
			<territory type="BG">ቡልጌሪያ</territory>
			<territory type="BH">ባህሬን</territory>
			<territory type="BM">ቤርሙዳ</territory>
			<territory type="BO">ቦሊቪያ</territory>
			<territory type="BR">ብራዚል</territory>
			<territory type="BT">ቡህታን</territory>
			<territory type="BY">ቤላሩስ</territory>
			<territory type="BZ">ቤሊዘ</territory>
			<territory type="CD">ኮንጎ</territory>
			<territory type="CF">የመካከለኛው አፍሪካ ሪፐብሊክ</territory>
			<territory type="CH">ስዊዘርላንድ</territory>
			<territory type="CL">ቺሊ</territory>
			<territory type="CM">ካሜሩን</territory>
			<territory type="CN">ቻይና</territory>
			<territory type="CO">ኮሎምቢያ</territory>
			<territory type="CS">ሰርቢያ</territory>
			<territory type="CV">ኬፕ ቬርዴ</territory>
			<territory type="CY">ሳይፕረስ</territory>
			<territory type="CZ">ቼክ ሪፑብሊክ</territory>
			<territory type="DE">ጀርመን</territory>
			<territory type="DK">ዴንማርክ</territory>
			<territory type="DM">ዶሚኒካ</territory>
			<territory type="DO">ዶሚኒክ ሪፑብሊክ</territory>
			<territory type="DZ">አልጄሪያ</territory>
			<territory type="EC">ኢኳዶር</territory>
			<territory type="EE">ኤስቶኒያ</territory>
			<territory type="EG">ግብጽ</territory>
			<territory type="EH">ምዕራባዊ ሳህራ</territory>
			<territory type="ER">ኤርትራ</territory>
			<territory type="ES">ስፔን</territory>
			<territory type="ET">ኢትዮጵያ</territory>
			<territory type="FI">ፊንላንድ</territory>
			<territory type="FJ">ፊጂ</territory>
			<territory type="FM">ሚክሮኔዢያ</territory>
			<territory type="FR">ፈረንሳይ</territory>
			<territory type="GB">እንግሊዝ</territory>
			<territory type="GE">ጆርጂያ</territory>
			<territory type="GF">የፈረንሳይ ጉዊአና</territory>
			<territory type="GM">ጋምቢያ</territory>
			<territory type="GN">ጊኒ</territory>
			<territory type="GQ">ኢኳቶሪያል ጊኒ</territory>
			<territory type="GR">ግሪክ</territory>
			<territory type="GW">ቢሳዎ</territory>
			<territory type="GY">ጉያና</territory>
			<territory type="HK">ሆንግ ኮንግ</territory>
			<territory type="HR">ክሮኤሽያ</territory>
			<territory type="HT">ሀይቲ</territory>
			<territory type="HU">ሀንጋሪ</territory>
			<territory type="ID">ኢንዶኔዢያ</territory>
			<territory type="IE">አየርላንድ</territory>
			<territory type="IL">እስራኤል</territory>
			<territory type="IN">ህንድ</territory>
			<territory type="IQ">ኢራቅ</territory>
			<territory type="IS">አይስላንድ</territory>
			<territory type="IT">ጣሊያን</territory>
			<territory type="JM">ጃማይካ</territory>
			<territory type="JO">ጆርዳን</territory>
			<territory type="JP">ጃፓን</territory>
			<territory type="KH">ካምቦዲያ</territory>
			<territory type="KM">ኮሞሮስ</territory>
			<territory type="KP">ደቡብ ኮሪያ</territory>
			<territory type="KR">ሰሜን ኮሪያ</territory>
			<territory type="KW">ክዌት</territory>
			<territory type="LB">ሊባኖስ</territory>
			<territory type="LT">ሊቱዌኒያ</territory>
			<territory type="LV">ላትቪያ</territory>
			<territory type="LY">ሊቢያ</territory>
			<territory type="MA">ሞሮኮ</territory>
			<territory type="MD">ሞልዶቫ</territory>
			<territory type="MK">ማከዶኒያ</territory>
			<territory type="MN">ሞንጎሊያ</territory>
			<territory type="MO">ማካዎ</territory>
			<territory type="MR">ሞሪቴኒያ</territory>
			<territory type="MT">ማልታ</territory>
			<territory type="MU">ማሩሸስ</territory>
			<territory type="MX">ሜክሲኮ</territory>
			<territory type="MY">ማሌዢያ</territory>
			<territory type="NA">ናሚቢያ</territory>
			<territory type="NC">ኒው ካሌዶኒያ</territory>
			<territory type="NG">ናይጄሪያ</territory>
			<territory type="NL">ኔዘርላንድ</territory>
			<territory type="NO">ኖርዌ</territory>
			<territory type="NP">ኔፓል</territory>
			<territory type="NZ">ኒው ዚላንድ</territory>
			<territory type="PE">ፔሩ</territory>
			<territory type="PF">የፈረንሳይ ፖሊኔዢያ</territory>
			<territory type="PG">ፓፑዋ ኒው ጊኒ</territory>
			<territory type="PL">ፖላንድ</territory>
			<territory type="PR">ፖርታ ሪኮ</territory>
			<territory type="RO">ሮሜኒያ</territory>
			<territory type="RU">ራሺያ</territory>
			<territory type="SA">ሳውድአረቢያ</territory>
			<territory type="SD">ሱዳን</territory>
			<territory type="SE">ስዊድን</territory>
			<territory type="SG">ሲንጋፖር</territory>
			<territory type="SI">ስሎቬኒያ</territory>
			<territory type="SK">ስሎቫኪያ</territory>
			<territory type="SN">ሴኔጋል</territory>
			<territory type="SO">ሱማሌ</territory>
			<territory type="SY">ሲሪያ</territory>
			<territory type="TD">ቻድ</territory>
			<territory type="TF">የፈረንሳይ ደቡባዊ ግዛቶች</territory>
			<territory type="TH">ታይላንድ</territory>
			<territory type="TJ">ታጃኪስታን</territory>
			<territory type="TL">ምስራቅ ቲሞር</territory>
			<territory type="TN">ቱኒዚያ</territory>
			<territory type="TR">ቱርክ</territory>
			<territory type="TT">ትሪኒዳድ እና ቶባጎ</territory>
			<territory type="TZ">ታንዛኒያ</territory>
			<territory type="UG">ዩጋንዳ</territory>
			<territory type="US">አሜሪካ</territory>
			<territory type="UZ">ዩዝበኪስታን</territory>
			<territory type="VE">ቬንዙዌላ</territory>
			<territory type="VG">የእንግሊዝ ድንግል ደሴቶች</territory>
			<territory type="VI">የአሜሪካ ቨርጂን ደሴቶች</territory>
			<territory type="YE">የመን</territory>
			<territory type="ZA">ደቡብ አፍሪካ</territory>
			<territory type="ZM">ዛምቢያ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ፡ ፣-፧ ። ፠ ፨ ᎐-᎙ ፲-፼ ፩-፱ ሀ-ሏ ⶀ ሐ-ሟ ᎀ-ᎃ ⶁ ሠ-ሯ ⶂ ሰ-ሷ ⶃ ሸ-ሿ ⶄ ቀ-ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ቧ ᎄ-ᎇ ⶅ ቨ-ቷ ⶆ ቸ-ቿ ⶇ ኀ-ኈ ኊ-ኍ ነ-ኗ ⶈ ኘ-ኟ ⶉ አ-ኧ ⶊ ከ-ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዖ ዘ-ዟ ⶋ ዠ-ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ገ-ጐ ጒ-ጕ ጘ-ጟ ⶓ-ⶖ ጠ-ጧ ⶏ ጨ-ጯ ⶐ ጰ-ጷ ⶑ ጸ-ፏ ᎈ-ᎋ ፐ-ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጃንዩ</month>
							<month type="2">ፌብሩ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረ</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስ</month>
							<month type="9">ሴፕቴ</month>
							<month type="10">ኦክተ</month>
							<month type="11">ኖቬም</month>
							<month type="12">ዲሴም</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጃንዩወሪ</month>
							<month type="2">ፌብሩወሪ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረል</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስት</month>
							<month type="9">ሴፕቴምበር</month>
							<month type="10">ኦክተውበር</month>
							<month type="11">ኖቬምበር</month>
							<month type="12">ዲሴምበር</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ጃ</month>
							<month type="2">ፌ</month>
							<month type="3">ማ</month>
							<month type="4">ኤ</month>
							<month type="5">ሜ</month>
							<month type="6">ጁ</month>
							<month type="7">ጁ</month>
							<month type="8">ኦ</month>
							<month type="9">ሴ</month>
							<month type="10">ኦ</month>
							<month type="11">ኖ</month>
							<month type="12">ዲ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ሰ/ዓ</day>
							<day type="mon">ሰኖ</day>
							<day type="tue">ታላሸ</day>
							<day type="wed">ኣረር</day>
							<day type="thu">ከሚሽ</day>
							<day type="fri">ጅምዓ</day>
							<day type="sat">ሰ/ን</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ሰንበት ዓባይ</day>
							<day type="mon">ሰኖ</day>
							<day type="tue">ታላሸኖ</day>
							<day type="wed">ኣረርባዓ</day>
							<day type="thu">ከሚሽ</day>
							<day type="fri">ጅምዓት</day>
							<day type="sat">ሰንበት ንኢሽ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ሰ</day>
							<day type="mon">ሰ</day>
							<day type="tue">ታ</day>
							<day type="wed">ኣ</day>
							<day type="thu">ከ</day>
							<day type="fri">ጅ</day>
							<day type="sat">ሰ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ቀደም ሰርምዕል</am>
				<pm>ሓቆ ስርምዕል</pm>
				<eras>
					<eraAbbr>
						<era type="0">ዓ/ዓ</era>
						<era type="1">ዓ/ም</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፡ dd MMMM ዮም yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ERN">
				<symbol>$</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
			</currency>
			<currency type="EUR">
				<displayName>አውሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�Y�$$Locale/Data/es_ES.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/06/19 01:24:40 $"/>
		<language type="es"/>
		<territory type="ES"/>
	</identity>
</ldml>

PKpG[n>?�::Locale/Data/ha_Arab_SD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:08:12 $"/>
		<language type="ha"/>
		<script type="Arab"/>
		<territory type="SD"/>
	</identity>
</ldml>
PKpG[NP��##Locale/Data/lv_LV.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="lv"/>
		<territory type="LV"/>
	</identity>
</ldml>
PKpG[I!u##Locale/Data/hi_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="hi"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[U/x�S�SLocale/Data/byn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="byn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">አፋርኛ</language>
			<language type="ab">አብሐዚኛ</language>
			<language type="af">አፍሪቃንስኛ</language>
			<language type="am">አማርኛ</language>
			<language type="ar">ዐርቢኛ</language>
			<language type="as">አሳሜዛዊ</language>
			<language type="ay">አያማርኛ</language>
			<language type="az">አዜርባይጃንኛ</language>
			<language type="ba">ባስኪርኛ</language>
			<language type="be">ቤላራሻኛ</language>
			<language type="bg">ቡልጋሪኛ</language>
			<language type="bh">ቢሃሪ</language>
			<language type="bi">ቢስላምኛ</language>
			<language type="bn">በንጋሊኛ</language>
			<language type="bo">ትበትንኛ</language>
			<language type="br">ብሬቶንኛ</language>
			<language type="byn">ብሊን</language>
			<language type="ca">ካታላንኛ</language>
			<language type="co">ኮርሲካኛ</language>
			<language type="cs">ቼክኛ</language>
			<language type="cy">ወልሽ</language>
			<language type="da">ዴኒሽ</language>
			<language type="de">ጀርመን</language>
			<language type="dz">ድዞንግኻኛ</language>
			<language type="el">ግሪክኛ</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="eo">ኤስፐራንቶ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="et">ኤስቶኒአን</language>
			<language type="eu">ባስክኛ</language>
			<language type="fa">ፐርሲያኛ</language>
			<language type="fi">ፊኒሽ</language>
			<language type="fj">ፊጂኛ</language>
			<language type="fo">ፋሮኛ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="fy">ፍሪስኛ</language>
			<language type="ga">አይሪሽ</language>
			<language type="gd">እስኮትስ ጌልክኛ</language>
			<language type="gez">ግዕዝኛ</language>
			<language type="gl">ጋለጋኛ</language>
			<language type="gn">ጓራኒኛ</language>
			<language type="gu">ጉጃርቲኛ</language>
			<language type="ha">ሃውሳኛ</language>
			<language type="he">ዕብራስጥ</language>
			<language type="hi">ሐንድኛ</language>
			<language type="hr">ክሮሽያንኛ</language>
			<language type="hu">ሀንጋሪኛ</language>
			<language type="hy">አርመናዊ</language>
			<language type="ia">ኢንቴርሊንጓ</language>
			<language type="id">እንዶኒሲኛ</language>
			<language type="ie">እንተርሊንግወ</language>
			<language type="ik">እኑፒያቅኛ</language>
			<language type="is">አይስላንድኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="iu">እኑክቲቱትኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="jv">ጃቫንኛ</language>
			<language type="ka">ጊዮርጊያን</language>
			<language type="kk">ካዛክኛ</language>
			<language type="kl">ካላሊሱትኛ</language>
			<language type="km">ክመርኛ</language>
			<language type="kn">ካናዳኛ</language>
			<language type="ko">ኮሪያኛ</language>
			<language type="ks">ካሽሚርኛ</language>
			<language type="ku">ኩርድሽኛ</language>
			<language type="ky">ኪርጊዝኛ</language>
			<language type="la">ላቲንኛ</language>
			<language type="ln">ሊንጋላኛ</language>
			<language type="lo">ላውስኛ</language>
			<language type="lt">ሊቱአኒያን</language>
			<language type="lv">ላትቪያን</language>
			<language type="mg">ማላጋስኛ</language>
			<language type="mi">ማዮሪኛ</language>
			<language type="mk">ማከዶኒኛ</language>
			<language type="ml">ማላያላምኛ</language>
			<language type="mn">ሞንጎላዊኛ</language>
			<language type="mo">ሞልዳቫዊና</language>
			<language type="mr">ማራዚኛ</language>
			<language type="ms">ማላይኛ</language>
			<language type="mt">ማልቲስኛ</language>
			<language type="my">ቡርማኛ</language>
			<language type="na">ናኡሩ</language>
			<language type="ne">ኔፓሊኛ</language>
			<language type="nl">ደች</language>
			<language type="no">ኖርዌጂያን</language>
			<language type="oc">ኦኪታንኛ</language>
			<language type="om">ኦሮምኛ</language>
			<language type="or">ኦሪያኛ</language>
			<language type="pa">ፓንጃቢኛ</language>
			<language type="pl">ፖሊሽ</language>
			<language type="ps">ፑሽቶኛ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="qu">ኵቿኛ</language>
			<language type="rm">ሮማንስ</language>
			<language type="rn">ሩንዲኛ</language>
			<language type="ro">ሮማኒያን</language>
			<language type="ru">ራሽኛ</language>
			<language type="rw">ኪንያርዋንድኛ</language>
			<language type="sa">ሳንስክሪትኛ</language>
			<language type="sd">ሲንድሂኛ</language>
			<language type="sg">ሳንጎኛ</language>
			<language type="si">ስንሃልኛ</language>
			<language type="sid">ሲዳምኛ</language>
			<language type="sk">ስሎቫክኛ</language>
			<language type="sl">ስሎቪኛ</language>
			<language type="sm">ሳሞአኛ</language>
			<language type="sn">ሾናኛ</language>
			<language type="so">ሱማልኛ</language>
			<language type="sq">ልቤኒኛ</language>
			<language type="sr">ሰርቢኛ</language>
			<language type="ss">ስዋቲኛ</language>
			<language type="st">ሶዞኛ</language>
			<language type="su">ሱዳንኛ</language>
			<language type="sv">ስዊድንኛ</language>
			<language type="sw">ስዋሂሊኛ</language>
			<language type="ta">ታሚልኛ</language>
			<language type="te">ተሉጉኛ</language>
			<language type="tg">ታጂኪኛ</language>
			<language type="th">ታይኛ</language>
			<language type="ti">ትግርኛ</language>
			<language type="tig">ትግረ</language>
			<language type="tk">ቱርክመንኛ</language>
			<language type="tl">ታጋሎገኛ</language>
			<language type="tn">ጽዋናዊኛ</language>
			<language type="to">ቶንጋ</language>
			<language type="tr">ቱርክኛ</language>
			<language type="ts">ጾንጋኛ</language>
			<language type="tt">ታታርኛ</language>
			<language type="tw">ትዊኛ</language>
			<language type="ug">ኡዊግሁርኛ</language>
			<language type="uk">ዩክረኒኛ</language>
			<language type="ur">ኡርዱኛ</language>
			<language type="uz">ኡዝበክኛ</language>
			<language type="vi">ቪትናምኛ</language>
			<language type="vo">ቮላፑክኛ</language>
			<language type="wo">ዎሎፍኛ</language>
			<language type="xh">ዞሳኛ</language>
			<language type="yi">ይዲሻዊኛ</language>
			<language type="yo">ዮሩባዊኛ</language>
			<language type="za">ዡዋንግኛ</language>
			<language type="zh">ቻይንኛ</language>
			<language type="zu">ዙሉኛ</language>
		</languages>
		<scripts>
			<script type="Latn">ላቲን</script>
		</scripts>
		<territories>
			<territory type="AD">አንዶራ</territory>
			<territory type="AE">የተባበሩት አረብ ኤምሬትስ</territory>
			<territory type="AL">አልባኒያ</territory>
			<territory type="AM">አርሜኒያ</territory>
			<territory type="AN">ኔዘርላንድስ አንቲልስ</territory>
			<territory type="AR">አርጀንቲና</territory>
			<territory type="AT">ኦስትሪያ</territory>
			<territory type="AU">አውስትሬሊያ</territory>
			<territory type="AZ">አዘርባጃን</territory>
			<territory type="BA">ቦስኒያ እና ሄርዞጎቪኒያ</territory>
			<territory type="BB">ባርቤዶስ</territory>
			<territory type="BE">ቤልጄም</territory>
			<territory type="BG">ቡልጌሪያ</territory>
			<territory type="BH">ባህሬን</territory>
			<territory type="BM">ቤርሙዳ</territory>
			<territory type="BO">ቦሊቪያ</territory>
			<territory type="BR">ብራዚል</territory>
			<territory type="BT">ቡህታን</territory>
			<territory type="BY">ቤላሩስ</territory>
			<territory type="BZ">ቤሊዘ</territory>
			<territory type="CD">ኮንጎ</territory>
			<territory type="CF">የመካከለኛው አፍሪካ ሪፐብሊክ</territory>
			<territory type="CH">ስዊዘርላንድ</territory>
			<territory type="CL">ቺሊ</territory>
			<territory type="CM">ካሜሩን</territory>
			<territory type="CN">ቻይና</territory>
			<territory type="CO">ኮሎምቢያ</territory>
			<territory type="CS">ሰርቢያ</territory>
			<territory type="CV">ኬፕ ቬርዴ</territory>
			<territory type="CY">ሳይፕረስ</territory>
			<territory type="CZ">ቼክ ሪፑብሊክ</territory>
			<territory type="DE">ጀርመን</territory>
			<territory type="DK">ዴንማርክ</territory>
			<territory type="DM">ዶሚኒካ</territory>
			<territory type="DO">ዶሚኒክ ሪፑብሊክ</territory>
			<territory type="DZ">አልጄሪያ</territory>
			<territory type="EC">ኢኳዶር</territory>
			<territory type="EE">ኤስቶኒያ</territory>
			<territory type="EG">ግብጽ</territory>
			<territory type="EH">ምዕራባዊ ሳህራ</territory>
			<territory type="ER">ኤርትራ</territory>
			<territory type="ES">ስፔን</territory>
			<territory type="ET">ኢትዮጵያ</territory>
			<territory type="FI">ፊንላንድ</territory>
			<territory type="FJ">ፊጂ</territory>
			<territory type="FM">ሚክሮኔዢያ</territory>
			<territory type="FR">ፈረንሳይ</territory>
			<territory type="GB">እንግሊዝ</territory>
			<territory type="GE">ጆርጂያ</territory>
			<territory type="GF">የፈረንሳይ ጉዊአና</territory>
			<territory type="GM">ጋምቢያ</territory>
			<territory type="GN">ጊኒ</territory>
			<territory type="GQ">ኢኳቶሪያል ጊኒ</territory>
			<territory type="GR">ግሪክ</territory>
			<territory type="GW">ቢሳዎ</territory>
			<territory type="GY">ጉያና</territory>
			<territory type="HK">ሆንግ ኮንግ</territory>
			<territory type="HR">ክሮኤሽያ</territory>
			<territory type="HT">ሀይቲ</territory>
			<territory type="HU">ሀንጋሪ</territory>
			<territory type="ID">ኢንዶኔዢያ</territory>
			<territory type="IE">አየርላንድ</territory>
			<territory type="IL">እስራኤል</territory>
			<territory type="IN">ህንድ</territory>
			<territory type="IQ">ኢራቅ</territory>
			<territory type="IS">አይስላንድ</territory>
			<territory type="IT">ጣሊያን</territory>
			<territory type="JM">ጃማይካ</territory>
			<territory type="JO">ጆርዳን</territory>
			<territory type="JP">ጃፓን</territory>
			<territory type="KH">ካምቦዲያ</territory>
			<territory type="KM">ኮሞሮስ</territory>
			<territory type="KP">ደቡብ ኮሪያ</territory>
			<territory type="KR">ሰሜን ኮሪያ</territory>
			<territory type="KW">ክዌት</territory>
			<territory type="LB">ሊባኖስ</territory>
			<territory type="LT">ሊቱዌኒያ</territory>
			<territory type="LV">ላትቪያ</territory>
			<territory type="LY">ሊቢያ</territory>
			<territory type="MA">ሞሮኮ</territory>
			<territory type="MD">ሞልዶቫ</territory>
			<territory type="MK">ማከዶኒያ</territory>
			<territory type="MN">ሞንጎሊያ</territory>
			<territory type="MO">ማካዎ</territory>
			<territory type="MR">ሞሪቴኒያ</territory>
			<territory type="MT">ማልታ</territory>
			<territory type="MU">ማሩሸስ</territory>
			<territory type="MX">ሜክሲኮ</territory>
			<territory type="MY">ማሌዢያ</territory>
			<territory type="NA">ናሚቢያ</territory>
			<territory type="NC">ኒው ካሌዶኒያ</territory>
			<territory type="NG">ናይጄሪያ</territory>
			<territory type="NL">ኔዘርላንድ</territory>
			<territory type="NO">ኖርዌ</territory>
			<territory type="NP">ኔፓል</territory>
			<territory type="NZ">ኒው ዚላንድ</territory>
			<territory type="PE">ፔሩ</territory>
			<territory type="PF">የፈረንሳይ ፖሊኔዢያ</territory>
			<territory type="PG">ፓፑዋ ኒው ጊኒ</territory>
			<territory type="PL">ፖላንድ</territory>
			<territory type="PR">ፖርታ ሪኮ</territory>
			<territory type="RO">ሮሜኒያ</territory>
			<territory type="RU">ራሺያ</territory>
			<territory type="SA">ሳውድአረቢያ</territory>
			<territory type="SD">ሱዳን</territory>
			<territory type="SE">ስዊድን</territory>
			<territory type="SG">ሲንጋፖር</territory>
			<territory type="SI">ስሎቬኒያ</territory>
			<territory type="SK">ስሎቫኪያ</territory>
			<territory type="SN">ሴኔጋል</territory>
			<territory type="SO">ሱማሌ</territory>
			<territory type="SY">ሲሪያ</territory>
			<territory type="TD">ቻድ</territory>
			<territory type="TF">የፈረንሳይ ደቡባዊ ግዛቶች</territory>
			<territory type="TH">ታይላንድ</territory>
			<territory type="TJ">ታጃኪስታን</territory>
			<territory type="TL">ምስራቅ ቲሞር</territory>
			<territory type="TN">ቱኒዚያ</territory>
			<territory type="TR">ቱርክ</territory>
			<territory type="TT">ትሪኒዳድ እና ቶባጎ</territory>
			<territory type="TZ">ታንዛኒያ</territory>
			<territory type="UG">ዩጋንዳ</territory>
			<territory type="US">አሜሪካ</territory>
			<territory type="UZ">ዩዝበኪስታን</territory>
			<territory type="VE">ቬንዙዌላ</territory>
			<territory type="VG">የእንግሊዝ ድንግል ደሴቶች</territory>
			<territory type="VI">የአሜሪካ ቨርጂን ደሴቶች</territory>
			<territory type="YE">የመን</territory>
			<territory type="ZA">ደቡብ አፍሪካ</territory>
			<territory type="ZM">ዛምቢያ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ሀ-ሆ ለ-ሟ ረ-ቆ ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዎ ዐ-ዖ ዘ-ዮ ደ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጘ-ጟ ⶓ-ⶖ ጠ-ጯ ጸ-ጿ ፈ-ፗ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[᎐-᎙ ሇ ⶀ ᎀ-ᎃ ⶁ ሠ-ሧ ⶂ-ⶄ ቇ ᎄ-ᎇ ⶅ-ⶇ ኇ ⶈ-ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ-ዿ ⶍ ⶎ ጏ ⶏ-ⶑ ፇ ᎈ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ልደት</month>
							<month type="2">ካብኽ</month>
							<month type="3">ክብላ</month>
							<month type="4">ፋጅኺ</month>
							<month type="5">ክቢቅ</month>
							<month type="6">ም/ት</month>
							<month type="7">ኰር</month>
							<month type="8">ማርያ</month>
							<month type="9">ያኸኒ</month>
							<month type="10">መተሉ</month>
							<month type="11">ም/ም</month>
							<month type="12">ተሕሳ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ልደትሪ</month>
							<month type="2">ካብኽብቲ</month>
							<month type="3">ክብላ</month>
							<month type="4">ፋጅኺሪ</month>
							<month type="5">ክቢቅሪ</month>
							<month type="6">ምኪኤል ትጟኒሪ</month>
							<month type="7">ኰርኩ</month>
							<month type="8">ማርያም ትሪ</month>
							<month type="9">ያኸኒ መሳቅለሪ</month>
							<month type="10">መተሉ</month>
							<month type="11">ምኪኤል መሽወሪ</month>
							<month type="12">ተሕሳስሪ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ል</month>
							<month type="2">ካ</month>
							<month type="3">ክ</month>
							<month type="4">ፋ</month>
							<month type="5">ክ</month>
							<month type="6">ም</month>
							<month type="7">ኰ</month>
							<month type="8">ማ</month>
							<month type="9">ያ</month>
							<month type="10">መ</month>
							<month type="11">ም</month>
							<month type="12">ተ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ሰ/ቅ</day>
							<day type="mon">ሰኑ</day>
							<day type="tue">ሰሊጝ</day>
							<day type="wed">ለጓ</day>
							<day type="thu">ኣምድ</day>
							<day type="fri">ኣርብ</day>
							<day type="sat">ሰ/ሽ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ሰንበር ቅዳዅ</day>
							<day type="mon">ሰኑ</day>
							<day type="tue">ሰሊጝ</day>
							<day type="wed">ለጓ ወሪ ለብዋ</day>
							<day type="thu">ኣምድ</day>
							<day type="fri">ኣርብ</day>
							<day type="sat">ሰንበር ሽጓዅ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ሰ</day>
							<day type="mon">ሰ</day>
							<day type="tue">ሰ</day>
							<day type="wed">ለ</day>
							<day type="thu">ኣ</day>
							<day type="fri">ኣ</day>
							<day type="sat">ሰ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ፋዱስ ጃብ</am>
				<pm>ፋዱስ ደምቢ</pm>
				<eras>
					<eraAbbr>
						<era type="0">ይጅ</era>
						<era type="1">ኣድ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፡ dd MMMM ግርጋ yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>አውሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[hm0##Locale/Data/hu_HU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="hu"/>
		<territory type="HU"/>
	</identity>
</ldml>
PKpG[hǐ�;;Locale/Data/uz_Latn_UZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<script type="Latn"/>
		<territory type="UZ"/>
	</identity>
</ldml>
PKpG[�6�$$Locale/Data/sid_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.34 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sid"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[ݮ2h##Locale/Data/bs_BA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="bs"/>
		<territory type="BA"/>
	</identity>
</ldml>
PKpG[l�~�ggLocale/Data/sr_Cyrl_YU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.29 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
		<territory type="YU"/>
	</identity>
	<alias source="sr_Cyrl_RS" path="//ldml"/>
</ldml>
PKpG[C+ffLocale/Data/uk.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.113 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="uk"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">афарська</language>
			<language type="ab">абхазька</language>
			<language type="ace">ачехська</language>
			<language type="ach">ачолі</language>
			<language type="ada">адангме</language>
			<language type="ady">адигейська</language>
			<language type="ae">авестійська</language>
			<language type="af">африкаанс</language>
			<language type="afa">афро-азійська мова</language>
			<language type="afh">африхілі</language>
			<language type="ain">айнська</language>
			<language type="ak">акан</language>
			<language type="akk">аккадська</language>
			<language type="ale">алеутська</language>
			<language type="alg">алгонкінські мови</language>
			<language type="alt">південноалтайська</language>
			<language type="am">амхарська</language>
			<language type="an">арагонська</language>
			<language type="ang">давньоанглійська</language>
			<language type="anp">ангіка</language>
			<language type="apa">апачі мови</language>
			<language type="ar">арабська</language>
			<language type="arc">арамейська</language>
			<language type="arn">арауканська</language>
			<language type="arp">арапахо</language>
			<language type="art">штучна мова</language>
			<language type="arw">аравакська</language>
			<language type="as">ассамська</language>
			<language type="ast">астурська</language>
			<language type="ath">атапаскські мови</language>
			<language type="aus">австралійські мови</language>
			<language type="av">аварська</language>
			<language type="awa">авадхі</language>
			<language type="ay">аймара</language>
			<language type="az">азербайджанська</language>
			<language type="ba">башкирська</language>
			<language type="bad">банда</language>
			<language type="bai">бамілеке мови</language>
			<language type="bal">балучі</language>
			<language type="ban">балійська</language>
			<language type="bas">баса</language>
			<language type="bat">балтійська мова</language>
			<language type="be">білоруська</language>
			<language type="bej">беджа</language>
			<language type="bem">бемба</language>
			<language type="ber">берберська</language>
			<language type="bg">болгарська</language>
			<language type="bh">біхарі</language>
			<language type="bho">бходжпурі</language>
			<language type="bi">біслама</language>
			<language type="bik">бікольська</language>
			<language type="bin">біні</language>
			<language type="bla">сіксіка</language>
			<language type="bm">бамбара</language>
			<language type="bn">бенгальська</language>
			<language type="bnt">банту</language>
			<language type="bo">тибетська</language>
			<language type="br">бретонська</language>
			<language type="bra">брадж</language>
			<language type="bs">боснійська</language>
			<language type="btk">батак</language>
			<language type="bua">бурятська</language>
			<language type="bug">бугійська</language>
			<language type="byn">блін</language>
			<language type="ca">каталонська</language>
			<language type="cad">каддо</language>
			<language type="cai">центральноамериканьских індіанців мова</language>
			<language type="car">карібська</language>
			<language type="cau">кавказька мова</language>
			<language type="cch">атсам</language>
			<language type="ce">чеченська</language>
			<language type="ceb">себуанська</language>
			<language type="cel">кельтська мова</language>
			<language type="ch">чаморро</language>
			<language type="chb">чібча</language>
			<language type="chg">чагатайська</language>
			<language type="chk">чуукська</language>
			<language type="chm">марійська</language>
			<language type="chn">чинук жаргон</language>
			<language type="cho">чокто</language>
			<language type="chp">чіпев’ян</language>
			<language type="chr">черокі</language>
			<language type="chy">чейєнн</language>
			<language type="cmc">хамітські мови</language>
			<language type="co">корсиканська</language>
			<language type="cop">коптська</language>
			<language type="cpe">англо-креольські та піджінізовані англійські мови</language>
			<language type="cpf">франко-креольські та піджінізовані франкофонні мови</language>
			<language type="cpp">португальсько-креольські та піджінізовані португальські мови</language>
			<language type="cr">крі</language>
			<language type="crh">кримськотатарська</language>
			<language type="crp">креольські та піджінізовані мови</language>
			<language type="cs">чеська</language>
			<language type="csb">кашубська</language>
			<language type="cu">церковнослов’янська</language>
			<language type="cus">кушітська мова</language>
			<language type="cv">чуваська</language>
			<language type="cy">валлійська</language>
			<language type="da">данська</language>
			<language type="dak">дакота</language>
			<language type="dar">даргінська</language>
			<language type="day">даяк</language>
			<language type="de">німецька</language>
			<language type="de_AT">німецька австрійська</language>
			<language type="de_CH">верхньонімецька швейцарська</language>
			<language type="del">делаварська</language>
			<language type="den">слейв</language>
			<language type="dgr">догрибська</language>
			<language type="din">дінка</language>
			<language type="doi">догрі</language>
			<language type="dra">дравідійська мова</language>
			<language type="dsb">нижньолужицька</language>
			<language type="dua">дуала</language>
			<language type="dum">середньонідерландська</language>
			<language type="dv">дівехі</language>
			<language type="dyu">діула</language>
			<language type="dz">дзонг-ке</language>
			<language type="ee">еве</language>
			<language type="efi">ефік</language>
			<language type="egy">давньоєгипетська</language>
			<language type="eka">екаджук</language>
			<language type="el">грецька</language>
			<language type="elx">еламська</language>
			<language type="en">англійська</language>
			<language type="en_AU">англійська австралійська</language>
			<language type="en_CA">англійська канадська</language>
			<language type="en_GB">англійська британська</language>
			<language type="enm">середньоанглійська</language>
			<language type="eo">есперанто</language>
			<language type="es">іспанська</language>
			<language type="es_419">латиноамериканська іспанська</language>
			<language type="es_ES">іберійська іспанська</language>
			<language type="et">естонська</language>
			<language type="eu">басків</language>
			<language type="ewo">евондо</language>
			<language type="fa">перська</language>
			<language type="fan">фанг</language>
			<language type="fat">фанті</language>
			<language type="ff">фула</language>
			<language type="fi">фінська</language>
			<language type="fil">філіппінська</language>
			<language type="fiu">фінно-угорські мови</language>
			<language type="fj">фіджі</language>
			<language type="fo">фарерська</language>
			<language type="fon">фон</language>
			<language type="fr">французька</language>
			<language type="fr_CA">французька канадська</language>
			<language type="fr_CH">французька швейцарська</language>
			<language type="frm">середньофранцузька</language>
			<language type="fro">давньофранцузька</language>
			<language type="frr">фризька північна</language>
			<language type="frs">фризька східна</language>
			<language type="fur">фріульська</language>
			<language type="fy">фризька</language>
			<language type="ga">ірландська</language>
			<language type="gaa">га</language>
			<language type="gay">гайо</language>
			<language type="gba">гбайя</language>
			<language type="gd">гаельська</language>
			<language type="gem">германська мова</language>
			<language type="gez">гєез</language>
			<language type="gil">гільбертська</language>
			<language type="gl">галісійська</language>
			<language type="gmh">середньоверхньонімецька</language>
			<language type="gn">гуарані</language>
			<language type="goh">давньоверхньонімецька</language>
			<language type="gon">гонді</language>
			<language type="gor">горонтало</language>
			<language type="got">готська</language>
			<language type="grb">гребо</language>
			<language type="grc">давньогрецька</language>
			<language type="gsw">німецька швейцарська</language>
			<language type="gu">гуджараті</language>
			<language type="gv">менкська</language>
			<language type="gwi">кучін</language>
			<language type="ha">хауса</language>
			<language type="hai">хайда</language>
			<language type="haw">гавайська</language>
			<language type="he">іврит</language>
			<language type="hi">гінді</language>
			<language type="hil">хілігайнон</language>
			<language type="him">хімачалі</language>
			<language type="hit">хітіті</language>
			<language type="hmn">хмонг</language>
			<language type="ho">хірі-моту</language>
			<language type="hr">хорватська</language>
			<language type="hsb">верхньолужицька</language>
			<language type="ht">гаїтянська</language>
			<language type="hu">угорська</language>
			<language type="hup">хупа</language>
			<language type="hy">вірменська</language>
			<language type="hz">гереро</language>
			<language type="ia">інтерлінгва</language>
			<language type="iba">ібанська</language>
			<language type="id">індонезійська</language>
			<language type="ie">інтерлінгве</language>
			<language type="ig">ігбо</language>
			<language type="ii">сичуань</language>
			<language type="ijo">іджо</language>
			<language type="ik">інупіак</language>
			<language type="ilo">ілоканська</language>
			<language type="inc">індійські мови</language>
			<language type="ine">індоєвропейські мови</language>
			<language type="inh">інгуська</language>
			<language type="io">ідо</language>
			<language type="ira">іранська</language>
			<language type="iro">ірокезькі мови</language>
			<language type="is">ісландська</language>
			<language type="it">італійська</language>
			<language type="iu">інуктітут</language>
			<language type="ja">японська</language>
			<language type="jbo">ложбан</language>
			<language type="jpr">іудео-перська</language>
			<language type="jrb">іудео-арабська</language>
			<language type="jv">яванська</language>
			<language type="ka">грузинська</language>
			<language type="kaa">каракалпацька</language>
			<language type="kab">кабильська</language>
			<language type="kac">качін</language>
			<language type="kaj">йю</language>
			<language type="kam">камба</language>
			<language type="kar">каренська</language>
			<language type="kaw">каві</language>
			<language type="kbd">кабардинська</language>
			<language type="kcg">тіап</language>
			<language type="kfo">коро</language>
			<language type="kg">конґолезька</language>
			<language type="kha">кхасі</language>
			<language type="khi">койсанські мови</language>
			<language type="kho">хотаносакська</language>
			<language type="ki">кікуйю</language>
			<language type="kj">кунама</language>
			<language type="kk">казахська</language>
			<language type="kl">калааллісут</language>
			<language type="km">кхмерська</language>
			<language type="kmb">кімбунду</language>
			<language type="kn">каннада</language>
			<language type="ko">корейська</language>
			<language type="kok">конкані</language>
			<language type="kos">косрае</language>
			<language type="kpe">кпеллє</language>
			<language type="kr">канурі</language>
			<language type="krc">карачаєво-балкарська</language>
			<language type="krl">карельська</language>
			<language type="kro">кру</language>
			<language type="kru">курукх</language>
			<language type="ks">кашмірська</language>
			<language type="ku">курдська</language>
			<language type="kum">кумицька</language>
			<language type="kut">кутенаї</language>
			<language type="kv">комі</language>
			<language type="kw">корнійська</language>
			<language type="ky">киргизька</language>
			<language type="la">латинська</language>
			<language type="lad">ладіно</language>
			<language type="lah">ланда</language>
			<language type="lam">ламба</language>
			<language type="lb">люксембурзька</language>
			<language type="lez">лезгінська</language>
			<language type="lg">ганда</language>
			<language type="li">лімбургійська</language>
			<language type="ln">лінгала</language>
			<language type="lo">лаоська</language>
			<language type="lol">монго</language>
			<language type="loz">лозі</language>
			<language type="lt">литовська</language>
			<language type="lu">луба-катанга</language>
			<language type="lua">луба-лулуа</language>
			<language type="lui">луїсеньо</language>
			<language type="lun">лунда</language>
			<language type="luo">луо</language>
			<language type="lus">лушей</language>
			<language type="lv">латвійська</language>
			<language type="mad">мадурська</language>
			<language type="mag">магадхі</language>
			<language type="mai">майтхілі</language>
			<language type="mak">макасарська</language>
			<language type="man">мандінго</language>
			<language type="map">австронезійська мова</language>
			<language type="mas">масаї</language>
			<language type="mdf">мокша</language>
			<language type="mdr">мандарська</language>
			<language type="men">менде</language>
			<language type="mg">малагасійська</language>
			<language type="mga">середньоірландська</language>
			<language type="mh">маршалльська</language>
			<language type="mi">маорі</language>
			<language type="mic">мікмак</language>
			<language type="min">мінангкабау</language>
			<language type="mis">інші мови</language>
			<language type="mk">македонська</language>
			<language type="mkh">мон-кхмерські мови</language>
			<language type="ml">малайялам</language>
			<language type="mn">монгольська</language>
			<language type="mnc">манчжурська</language>
			<language type="mni">маніпурі</language>
			<language type="mno">манобо мови</language>
			<language type="mo">молдавська</language>
			<language type="moh">магавк</language>
			<language type="mos">моссі</language>
			<language type="mr">маратхі</language>
			<language type="ms">малайська</language>
			<language type="mt">мальтійська</language>
			<language type="mul">декілька мов</language>
			<language type="mun">мунда мови</language>
			<language type="mus">крік</language>
			<language type="mwl">мірандська</language>
			<language type="mwr">марварі</language>
			<language type="my">бірманська</language>
			<language type="myn">майя мови</language>
			<language type="myv">ерзя</language>
			<language type="na">науру</language>
			<language type="nah">нахуатль</language>
			<language type="nai">північноамериканських індіанців мови</language>
			<language type="nap">неаполітанська</language>
			<language type="nb">норвезька букмол</language>
			<language type="nd">ндебелє північна</language>
			<language type="nds">нижньонімецька</language>
			<language type="ne">непальська</language>
			<language type="new">неварі</language>
			<language type="ng">ндонга</language>
			<language type="nia">ніаська</language>
			<language type="nic">ніґеро-кордофанські мови</language>
			<language type="niu">ніуе</language>
			<language type="nl">голландська</language>
			<language type="nl_BE">фламандська</language>
			<language type="nn">норвезька нюнорськ</language>
			<language type="no">норвезька</language>
			<language type="nog">ногайська</language>
			<language type="non">давньонорвезька</language>
			<language type="nqo">нко</language>
			<language type="nr">ндебелє південна</language>
			<language type="nso">сото північна</language>
			<language type="nub">нубійські мови</language>
			<language type="nv">навахо</language>
			<language type="nwc">неварі класична</language>
			<language type="ny">ньянджа</language>
			<language type="nym">ньямвезі</language>
			<language type="nyn">ньянколе</language>
			<language type="nyo">ньоро</language>
			<language type="nzi">нзіма</language>
			<language type="oc">окитан</language>
			<language type="oj">оджібва</language>
			<language type="om">оромо</language>
			<language type="or">орія</language>
			<language type="os">осетинська</language>
			<language type="osa">осейдж</language>
			<language type="ota">османська</language>
			<language type="oto">отомі мови</language>
			<language type="pa">панджабі</language>
			<language type="paa">папуаські мови</language>
			<language type="pag">пангасінанська</language>
			<language type="pal">пехлеві</language>
			<language type="pam">пампанга</language>
			<language type="pap">пап’яменто</language>
			<language type="pau">палауанська</language>
			<language type="peo">давньоперська</language>
			<language type="phi">філіппінські мови</language>
			<language type="phn">фінікійсько-пунічна</language>
			<language type="pi">палі</language>
			<language type="pl">польська</language>
			<language type="pon">понапе</language>
			<language type="pra">пракріті мови</language>
			<language type="pro">давньопровансальська</language>
			<language type="ps">пушту</language>
			<language type="pt">португальська</language>
			<language type="pt_BR">португальська бразильська</language>
			<language type="pt_PT">португальська іберійська</language>
			<language type="qu">кечуа</language>
			<language type="raj">раджастхані</language>
			<language type="rap">рапануї</language>
			<language type="rar">раротонга</language>
			<language type="rm">ретороманська</language>
			<language type="rn">рунді</language>
			<language type="ro">румунська</language>
			<language type="roa">романські мови</language>
			<language type="rom">циганська</language>
			<language type="root">корінь</language>
			<language type="ru">російська</language>
			<language type="rup">арумунська</language>
			<language type="rw">кіньяруанда</language>
			<language type="sa">санскрит</language>
			<language type="sad">сандаве</language>
			<language type="sah">якутська</language>
			<language type="sai">південноамериканських індіанців мови</language>
			<language type="sal">салішські мови</language>
			<language type="sam">самаритянська арамейська</language>
			<language type="sas">сасакська</language>
			<language type="sat">сантальська</language>
			<language type="sc">сардинська</language>
			<language type="scn">сицилійська</language>
			<language type="sco">шотландська</language>
			<language type="sd">сіндхі</language>
			<language type="se">саамська північна</language>
			<language type="sel">селькупська</language>
			<language type="sem">семітські мови</language>
			<language type="sg">санго</language>
			<language type="sga">давньоірландська</language>
			<language type="sgn">знакові мови</language>
			<language type="sh">сербсько-хорватська</language>
			<language type="shn">шанська</language>
			<language type="si">сингальська</language>
			<language type="sid">сідамо</language>
			<language type="sio">сіу мови</language>
			<language type="sit">китайсько-тибетські мови</language>
			<language type="sk">словацька</language>
			<language type="sl">словенська</language>
			<language type="sla">слов’янські мови</language>
			<language type="sm">самоанська</language>
			<language type="sma">саамська південна</language>
			<language type="smi">саамські мови</language>
			<language type="smj">саамська луле</language>
			<language type="smn">саамська інарі</language>
			<language type="sms">саамська скольт</language>
			<language type="sn">шона</language>
			<language type="snk">сонінке</language>
			<language type="so">сомалі</language>
			<language type="sog">согдійська</language>
			<language type="son">сонгай</language>
			<language type="sq">албанська</language>
			<language type="sr">сербська</language>
			<language type="srn">сранан тонго</language>
			<language type="srr">серер</language>
			<language type="ss">сісваті</language>
			<language type="ssa">ніло-сахарські мови</language>
			<language type="st">сото південна</language>
			<language type="su">сунданська</language>
			<language type="suk">сукума</language>
			<language type="sus">сусу</language>
			<language type="sux">шумерська</language>
			<language type="sv">шведська</language>
			<language type="sw">суахілі</language>
			<language type="syc">сирійська класична</language>
			<language type="syr">сирійська</language>
			<language type="ta">тамільська</language>
			<language type="tai">тайські мови</language>
			<language type="te">телугу</language>
			<language type="tem">темне</language>
			<language type="ter">терено</language>
			<language type="tet">тетум</language>
			<language type="tg">таджицька</language>
			<language type="th">тайська</language>
			<language type="ti">тигріні</language>
			<language type="tig">тигре</language>
			<language type="tiv">тів</language>
			<language type="tk">туркменська</language>
			<language type="tkl">токелау</language>
			<language type="tl">тагальська</language>
			<language type="tlh">клінгон</language>
			<language type="tli">тлінгіт</language>
			<language type="tmh">тамашек</language>
			<language type="tn">тсвана</language>
			<language type="to">Тонга</language>
			<language type="tog">ньяса тонга</language>
			<language type="tpi">ток-пісін</language>
			<language type="tr">турецька</language>
			<language type="ts">тсонга</language>
			<language type="tsi">цимшиан</language>
			<language type="tt">татарська</language>
			<language type="tum">тумбука</language>
			<language type="tup">тупі</language>
			<language type="tut">алтайська мова</language>
			<language type="tvl">тувалу</language>
			<language type="tw">тві</language>
			<language type="ty">таїтянська</language>
			<language type="tyv">тувинська</language>
			<language type="udm">удмуртська</language>
			<language type="ug">уйгурська</language>
			<language type="uga">угаритська</language>
			<language type="uk">українська</language>
			<language type="umb">умбунду</language>
			<language type="und">невизначена мова</language>
			<language type="ur">урду</language>
			<language type="uz">узбецька</language>
			<language type="vai">ваї</language>
			<language type="ve">венда</language>
			<language type="vi">вʼєтнамська</language>
			<language type="vo">волап’юк</language>
			<language type="vot">водська</language>
			<language type="wa">валлонська</language>
			<language type="wak">вакашські мови</language>
			<language type="wal">валамо</language>
			<language type="war">варай</language>
			<language type="was">вашо</language>
			<language type="wen">лужицькі мови</language>
			<language type="wo">волоф</language>
			<language type="xal">калмицька</language>
			<language type="xh">кхоса</language>
			<language type="yao">яо</language>
			<language type="yap">яп</language>
			<language type="yi">ідиш</language>
			<language type="yo">йоруба</language>
			<language type="ypk">юпік мови</language>
			<language type="za">чжуан</language>
			<language type="zap">сапотекська</language>
			<language type="zbl">блісса мова</language>
			<language type="zen">зенага</language>
			<language type="zh">китайська</language>
			<language type="zh_Hans">китайська спрощена</language>
			<language type="zh_Hant">китайська традиційна</language>
			<language type="znd">занде</language>
			<language type="zu">зулуська</language>
			<language type="zun">зуньї</language>
			<language type="zxx">немає мовного вмісту</language>
			<language type="zza">заза</language>
		</languages>
		<scripts>
			<script type="Arab">Арабський</script>
			<script type="Armi">Армі</script>
			<script type="Armn">Вірменський</script>
			<script type="Avst">Авестійський</script>
			<script type="Bali">Балійський</script>
			<script type="Batk">Батак</script>
			<script type="Beng">Бенгальський</script>
			<script type="Blis">Символи Блісса</script>
			<script type="Bopo">Бопомофо</script>
			<script type="Brah">Брахмі</script>
			<script type="Brai">Шрифт Брайля</script>
			<script type="Bugi">Бугійський</script>
			<script type="Buhd">Бухід</script>
			<script type="Cakm">Чакма</script>
			<script type="Cans">Уніфіковані символи канадських тубільців</script>
			<script type="Cari">Каріанський</script>
			<script type="Cham">Хамітський</script>
			<script type="Cher">Черокі</script>
			<script type="Cirt">Кирт</script>
			<script type="Copt">Коптський</script>
			<script type="Cprt">Кіпрський</script>
			<script type="Cyrl">Кириличний</script>
			<script type="Cyrs">Давньоцерковнослов'янський</script>
			<script type="Deva">Деванагарі</script>
			<script type="Dsrt">Дезерет</script>
			<script type="Egyd">Єгипетський демотичний</script>
			<script type="Egyh">Єгипетський ієратичний</script>
			<script type="Egyp">Єгипетський ієрогліфічний</script>
			<script type="Ethi">Ефіопський</script>
			<script type="Geok">Кхутсурі</script>
			<script type="Geor">Грузинський</script>
			<script type="Glag">Глаголичний</script>
			<script type="Goth">Готичний</script>
			<script type="Grek">Грецький</script>
			<script type="Gujr">Гуджараті</script>
			<script type="Guru">Гурмухі</script>
			<script type="Hang">Хангул</script>
			<script type="Hani">Китайський</script>
			<script type="Hano">Хануну</script>
			<script type="Hans">Китайський спрощений</script>
			<script type="Hant">Китайський традиційний</script>
			<script type="Hebr">Іврит</script>
			<script type="Hira">Хірагана</script>
			<script type="Hmng">Пахау хмонг</script>
			<script type="Hrkt">Катакана чи хірагана</script>
			<script type="Hung">Давньоугорський</script>
			<script type="Inds">Харапський</script>
			<script type="Ital">Давньоіталійський</script>
			<script type="Java">Яванський</script>
			<script type="Jpan">Японський</script>
			<script type="Kali">Кая Лі</script>
			<script type="Kana">Катакана</script>
			<script type="Khar">Кхароштхі</script>
			<script type="Khmr">Кхмерський</script>
			<script type="Knda">Каннада</script>
			<script type="Kore">Корейський</script>
			<script type="Kthi">Каїті</script>
			<script type="Lana">Ланна</script>
			<script type="Laoo">Лаоський</script>
			<script type="Latf">Латинський фрактурний</script>
			<script type="Latg">Латинський гельський</script>
			<script type="Latn">Латинський</script>
			<script type="Lepc">Лепча</script>
			<script type="Limb">Лімбу</script>
			<script type="Lina">Лінійний А</script>
			<script type="Linb">Лінійний В</script>
			<script type="Lyci">Лікійський</script>
			<script type="Lydi">Лідійський</script>
			<script type="Mand">Мандейський</script>
			<script type="Mani">Маніхейський</script>
			<script type="Maya">Майя ієрогліфічний</script>
			<script type="Mero">Мероїтський</script>
			<script type="Mlym">Малайялам</script>
			<script type="Mong">Монгольський</script>
			<script type="Moon">Мун</script>
			<script type="Mtei">Мейтей майєк</script>
			<script type="Mymr">Мʼянмар</script>
			<script type="Nkoo">Нко</script>
			<script type="Ogam">Огамічний</script>
			<script type="Olck">Сантальський</script>
			<script type="Orkh">Орхонський</script>
			<script type="Orya">Орія</script>
			<script type="Osma">Османський</script>
			<script type="Perm">Давньопермський</script>
			<script type="Phag">Пхагс-па</script>
			<script type="Phli">Пехлеві написів</script>
			<script type="Phlp">Пехлеві релігійний</script>
			<script type="Phlv">Пехлеві літературний</script>
			<script type="Phnx">Фінікійський</script>
			<script type="Plrd">Писемність Полларда</script>
			<script type="Prti">Парфянський</script>
			<script type="Qaai">Успадкований</script>
			<script type="Rjng">Реджанг</script>
			<script type="Roro">Ронго-ронго</script>
			<script type="Runr">Рунічний</script>
			<script type="Samr">Самаритянський</script>
			<script type="Sara">Сараті</script>
			<script type="Saur">Саураштра</script>
			<script type="Sgnw">Знаковий</script>
			<script type="Shaw">Шоу</script>
			<script type="Sinh">Сингальський</script>
			<script type="Sund">Сунданський</script>
			<script type="Sylo">Сілоті нагрі</script>
			<script type="Syrc">Сирійський</script>
			<script type="Syre">Давньосирійський естрангело</script>
			<script type="Syrj">Давньосирійський західний</script>
			<script type="Syrn">Давньосирійський східний</script>
			<script type="Tagb">Тагбанва</script>
			<script type="Tale">Тай-лі</script>
			<script type="Talu">Новий тайський луе</script>
			<script type="Taml">Тамільський</script>
			<script type="Tavt">Тай-в'єт</script>
			<script type="Telu">Телугу</script>
			<script type="Teng">Тенгвар</script>
			<script type="Tfng">Тифінаг</script>
			<script type="Tglg">Тагальський</script>
			<script type="Thaa">Таана</script>
			<script type="Thai">Тайський</script>
			<script type="Tibt">Тибетський</script>
			<script type="Ugar">Угаритський</script>
			<script type="Vaii">Ваї</script>
			<script type="Visp">Фонетична транскрипція Белла</script>
			<script type="Xpeo">Давньоперський</script>
			<script type="Xsux">Шумеро-аккадський клінопис</script>
			<script type="Yiii">Йї</script>
			<script type="Zmth">Математичний</script>
			<script type="Zsym">Символьний</script>
			<script type="Zxxx">Безписемний</script>
			<script type="Zyyy">Невизначений</script>
			<script type="Zzzz">Невідомий</script>
		</scripts>
		<territories>
			<territory type="001">Світ</territory>
			<territory type="002">Африка</territory>
			<territory type="003">Північноамериканський континент</territory>
			<territory type="005">Південна Америка</territory>
			<territory type="009">Океанія</territory>
			<territory type="011">Західна Африка</territory>
			<territory type="013">Центральна Америка</territory>
			<territory type="014">Східна Африка</territory>
			<territory type="015">Північна Африка</territory>
			<territory type="017">Центральна Африка</territory>
			<territory type="018">Південна Африка</territory>
			<territory type="019">Америки</territory>
			<territory type="021">Північна Америка</territory>
			<territory type="029">Карибський басейн</territory>
			<territory type="030">Східна Азія</territory>
			<territory type="034">Південна Азія</territory>
			<territory type="035">Південно-Східна Азія</territory>
			<territory type="039">Південна Європа</territory>
			<territory type="053">Австралія та Нова Зеландія</territory>
			<territory type="054">Меланезія</territory>
			<territory type="057">Мікронезійський регіон</territory>
			<territory type="061">Полінезія</territory>
			<territory type="062">Південно-Центральна Азія</territory>
			<territory type="142">Азія</territory>
			<territory type="143">Центральна Азія</territory>
			<territory type="145">Західна Азія</territory>
			<territory type="150">Європа</territory>
			<territory type="151">Східна Європа</territory>
			<territory type="154">Північна Європа</territory>
			<territory type="155">Західна Європа</territory>
			<territory type="172">Співдружність Незалежних Держав</territory>
			<territory type="419">Латинська Америка і Карибський басейн</territory>
			<territory type="830">Нормандські острови</territory>
			<territory type="AD">Андорра</territory>
			<territory type="AE">Обʼєднані Арабські Емірати</territory>
			<territory type="AF">Афганістан</territory>
			<territory type="AG">Антигуа і Барбуда</territory>
			<territory type="AI">Ангілья</territory>
			<territory type="AL">Албанія</territory>
			<territory type="AM">Вірменія</territory>
			<territory type="AN">Нідерландські Антильські Острови</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктида</territory>
			<territory type="AR">Аргентина</territory>
			<territory type="AS">Американське Самоа</territory>
			<territory type="AT">Австрія</territory>
			<territory type="AU">Австралія</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AX">Аландські острови</territory>
			<territory type="AZ">Азербайджан</territory>
			<territory type="BA">Боснія і Герцоговина</territory>
			<territory type="BB">Барбадос</territory>
			<territory type="BD">Бангладеш</territory>
			<territory type="BE">Бельгія</territory>
			<territory type="BF">Буркіна-Фасо</territory>
			<territory type="BG">Болгарія</territory>
			<territory type="BH">Бахрейн</territory>
			<territory type="BI">Бурунді</territory>
			<territory type="BJ">Бенін</territory>
			<territory type="BL">Острів Святого Бартоломея</territory>
			<territory type="BM">Бермуди</territory>
			<territory type="BN">Бруней</territory>
			<territory type="BO">Болівія</territory>
			<territory type="BR">Бразилія</territory>
			<territory type="BS">Багами</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Острів Буве</territory>
			<territory type="BW">Ботсвана</territory>
			<territory type="BY">Білорусь</territory>
			<territory type="BZ">Беліз</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Кокосові острови</territory>
			<territory type="CD">Демократична Республіка Конґо</territory>
			<territory type="CF">Центральноафриканська Республіка</territory>
			<territory type="CG">Конґо - Браззавіль</territory>
			<territory type="CH">Швейцарія</territory>
			<territory type="CI">Кот-д’Івуар</territory>
			<territory type="CK">Острови Кука</territory>
			<territory type="CL">Чилі</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Китай</territory>
			<territory type="CO">Колумбія</territory>
			<territory type="CR">Коста-Рика</territory>
			<territory type="CS">Сербія та Чорногорія</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Кабо-Верде</territory>
			<territory type="CX">Острів Різдва</territory>
			<territory type="CY">Кіпр</territory>
			<territory type="CZ">Чеська республіка</territory>
			<territory type="DE">Німеччина</territory>
			<territory type="DJ">Джібуті</territory>
			<territory type="DK">Данія</territory>
			<territory type="DM">Домінік</territory>
			<territory type="DO">Домініканська Республіка</territory>
			<territory type="DZ">Алжир</territory>
			<territory type="EC">Еквадор</territory>
			<territory type="EE">Естонія</territory>
			<territory type="EG">Єгипет</territory>
			<territory type="EH">Західна Сахара</territory>
			<territory type="ER">Еритрея</territory>
			<territory type="ES">Іспанія</territory>
			<territory type="ET">Ефіопія</territory>
			<territory type="FI">Фінляндія</territory>
			<territory type="FJ">Фіджі</territory>
			<territory type="FK">Фолклендські острови</territory>
			<territory type="FM">Мікронезія</territory>
			<territory type="FO">Фарерські острови</territory>
			<territory type="FR">Франція</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Великобританія</territory>
			<territory type="GD">Гренада</territory>
			<territory type="GE">Грузія</territory>
			<territory type="GF">Французька Гвіана</territory>
			<territory type="GG">Гернсі</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гібралтар</territory>
			<territory type="GL">Гренландія</territory>
			<territory type="GM">Гамбія</territory>
			<territory type="GN">Гвінея</territory>
			<territory type="GP">Гваделупа</territory>
			<territory type="GQ">Екваторіальна Гвінея</territory>
			<territory type="GR">Греція</territory>
			<territory type="GS">Південна Джорджія та Південні Сандвічеві Острови</territory>
			<territory type="GT">Гватемала</territory>
			<territory type="GU">Гуам</territory>
			<territory type="GW">Гвінея-Біссау</territory>
			<territory type="GY">Гайана</territory>
			<territory type="HK">Гонконґ</territory>
			<territory type="HM">Острови Херд і Мак-Дональд</territory>
			<territory type="HN">Гондурас</territory>
			<territory type="HR">Хорватія</territory>
			<territory type="HT">Гаїті</territory>
			<territory type="HU">Угорщина</territory>
			<territory type="ID">Індонезія</territory>
			<territory type="IE">Ірландія</territory>
			<territory type="IL">Ізраїль</territory>
			<territory type="IM">Острів Мен</territory>
			<territory type="IN">Індія</territory>
			<territory type="IO">Британські території Індійського океану</territory>
			<territory type="IQ">Ірак</territory>
			<territory type="IR">Іран</territory>
			<territory type="IS">Ісландія</territory>
			<territory type="IT">Італія</territory>
			<territory type="JE">Джерсі</territory>
			<territory type="JM">Ямайка</territory>
			<territory type="JO">Йорданія</territory>
			<territory type="JP">Японія</territory>
			<territory type="KE">Кенія</territory>
			<territory type="KG">Киргизстан</territory>
			<territory type="KH">Камбоджа</territory>
			<territory type="KI">Кірибаті</territory>
			<territory type="KM">Коморські Острови</territory>
			<territory type="KN">Сент-Кітс і Невіс</territory>
			<territory type="KP">Північна Корея</territory>
			<territory type="KR">Південна Корея</territory>
			<territory type="KW">Кувейт</territory>
			<territory type="KY">Кайманові острови</territory>
			<territory type="KZ">Казахстан</territory>
			<territory type="LA">Лаос</territory>
			<territory type="LB">Ліван</territory>
			<territory type="LC">Сент-Люсія</territory>
			<territory type="LI">Ліхтенштейн</territory>
			<territory type="LK">Шрі-Ланка</territory>
			<territory type="LR">Ліберія</territory>
			<territory type="LS">Лесото</territory>
			<territory type="LT">Литва</territory>
			<territory type="LU">Люксембург</territory>
			<territory type="LV">Латвія</territory>
			<territory type="LY">Лівія</territory>
			<territory type="MA">Марокко</territory>
			<territory type="MC">Монако</territory>
			<territory type="MD">Молдова</territory>
			<territory type="ME">Чорногорія</territory>
			<territory type="MF">Острів Святого Мартіна</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршаллові Острови</territory>
			<territory type="MK">Македонія</territory>
			<territory type="ML">Малі</territory>
			<territory type="MM">Мʼянма</territory>
			<territory type="MN">Монголія</territory>
			<territory type="MO">Макао</territory>
			<territory type="MP">Північні Маріанські Острови</territory>
			<territory type="MQ">Мартиніка</territory>
			<territory type="MR">Мавританія</territory>
			<territory type="MS">Монсеррат</territory>
			<territory type="MT">Мальта</territory>
			<territory type="MU">Маврикій</territory>
			<territory type="MV">Мальдіви</territory>
			<territory type="MW">Малаві</territory>
			<territory type="MX">Мексика</territory>
			<territory type="MY">Малайзія</territory>
			<territory type="MZ">Мозамбік</territory>
			<territory type="NA">Намібія</territory>
			<territory type="NC">Нова Каледонія</territory>
			<territory type="NE">Нігер</territory>
			<territory type="NF">Острів Норфолк</territory>
			<territory type="NG">Нігерія</territory>
			<territory type="NI">Нікарагуа</territory>
			<territory type="NL">Нідерланди</territory>
			<territory type="NO">Норвегія</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Нія</territory>
			<territory type="NZ">Нова Зеландія</territory>
			<territory type="OM">Оман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Французька Полінезія</territory>
			<territory type="PG">Папуа Нова Гвінея</territory>
			<territory type="PH">Філіппіни</territory>
			<territory type="PK">Пакистан</territory>
			<territory type="PL">Польща</territory>
			<territory type="PM">Сен-Пʼєр і Мікелон</territory>
			<territory type="PN">Піткерн</territory>
			<territory type="PR">Пуерто-Ріко</territory>
			<territory type="PS">Палестина</territory>
			<territory type="PT">Португалія</territory>
			<territory type="PW">Палау</territory>
			<territory type="PY">Парагвай</territory>
			<territory type="QA">Катар</territory>
			<territory type="QO">Інша Океанія</territory>
			<territory type="QU">Європейський Союз</territory>
			<territory type="RE">Реюньйон</territory>
			<territory type="RO">Румунія</territory>
			<territory type="RS">Сербія</territory>
			<territory type="RU">Росія</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудівська Аравія</territory>
			<territory type="SB">Соломонові Острови</territory>
			<territory type="SC">Сейшели</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Швеція</territory>
			<territory type="SG">Сінгапур</territory>
			<territory type="SH">Острів Святої Єлени</territory>
			<territory type="SI">Словенія</territory>
			<territory type="SJ">Острови Свальбард та Ян-Маєн</territory>
			<territory type="SK">Словакія</territory>
			<territory type="SL">Сьєрра-Леоне</territory>
			<territory type="SM">Сан-Марино</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Сомалі</territory>
			<territory type="SR">Суринам</territory>
			<territory type="ST">Сан-Томе і Прінсіпі</territory>
			<territory type="SV">Сальвадор</territory>
			<territory type="SY">Сирія</territory>
			<territory type="SZ">Свазіленд</territory>
			<territory type="TC">Теркс і Кайкос</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Французькі Південні Території</territory>
			<territory type="TG">Того</territory>
			<territory type="TH">Таїланд</territory>
			<territory type="TJ">Таджикистан</territory>
			<territory type="TK">Токелау</territory>
			<territory type="TL">Східний Тимор</territory>
			<territory type="TM">Туркменистан</territory>
			<territory type="TN">Туніс</territory>
			<territory type="TO">Тонга</territory>
			<territory type="TR">Туреччина</territory>
			<territory type="TT">Тринідад і Тобаго</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тайвань</territory>
			<territory type="TZ">Танзанія</territory>
			<territory type="UA">Україна</territory>
			<territory type="UG">Уганда</territory>
			<territory type="UM">Віддалені Острови США</territory>
			<territory type="US">США</territory>
			<territory type="UY">Уругвай</territory>
			<territory type="UZ">Узбекистан</territory>
			<territory type="VA">Ватикан</territory>
			<territory type="VC">Сент-Вінсент і Гренадини</territory>
			<territory type="VE">Венесуела</territory>
			<territory type="VG">Віргінські острови Британії</territory>
			<territory type="VI">Віргінські острови США</territory>
			<territory type="VN">Вʼєтнам</territory>
			<territory type="VU">Вануату</territory>
			<territory type="WF">Уолліс і Футуна</territory>
			<territory type="WS">Самоа</territory>
			<territory type="YE">Ємен</territory>
			<territory type="YT">Майот</territory>
			<territory type="ZA">ПАР</territory>
			<territory type="ZM">Замбія</territory>
			<territory type="ZW">Зімбабве</territory>
			<territory type="ZZ">Невідомий або неправильний регіон</territory>
		</territories>
		<variants>
			<variant type="1901">Традиційна німецька орфографія</variant>
			<variant type="1994">Стандартизована резьянська орфографія</variant>
			<variant type="1996">Нова німецька орфографія з 1996 р.</variant>
			<variant type="1606NICT">Пізньосередньофранцузська до 1606</variant>
			<variant type="AREVELA">Східновірменський</variant>
			<variant type="AREVMDA">Західновірменський</variant>
			<variant type="BAKU1926">Уніфікований турецький латинський алфавіт</variant>
			<variant type="BISKE">Діалект Сан-Джорджіо/Біла</variant>
			<variant type="BOONT">Бунтлінг</variant>
			<variant type="FONIPA">Міжнародний фонетичний алфавіт</variant>
			<variant type="FONUPA">Уральський фонетичний алфавіт</variant>
			<variant type="LIPAW">Ліповазський діалект резьянської мови</variant>
			<variant type="MONOTON">Монотонічний</variant>
			<variant type="NEDIS">Натісонський діалект</variant>
			<variant type="NJIVA">Діалект Нджіва</variant>
			<variant type="OSOJS">Осоянський діалект</variant>
			<variant type="POLYTON">Політонічний</variant>
			<variant type="POSIX">Комп'ютерний</variant>
			<variant type="REVISED">Нова орфографія</variant>
			<variant type="ROZAJ">Резьянський</variant>
			<variant type="SAAHO">Сахо</variant>
			<variant type="SCOTLAND">Шотландська англійська</variant>
			<variant type="SCOUSE">Ліверпульський</variant>
			<variant type="SOLBA">Діалект Столвіца/Солбіка</variant>
			<variant type="TARASK">Орфографія Тараскевича</variant>
		</variants>
		<keys>
			<key type="calendar">Календар</key>
			<key type="collation">Сортування</key>
			<key type="currency">Валюта</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Китайський традиційний</type>
			<type type="buddhist" key="calendar">Буддійський календар</type>
			<type type="chinese" key="calendar">Китайський календар</type>
			<type type="direct" key="collation">Прямий порядок</type>
			<type type="gb2312han" key="collation">Китайський спрощений</type>
			<type type="gregorian" key="calendar">Григоріанський календар</type>
			<type type="hebrew" key="calendar">Єврейський календар</type>
			<type type="indian" key="calendar">Індійський світський календар</type>
			<type type="islamic" key="calendar">Мусульманський календар</type>
			<type type="islamic-civil" key="calendar">Мусульманський світський календар</type>
			<type type="japanese" key="calendar">Японський календар</type>
			<type type="phonebook" key="collation">Телефонна книга</type>
			<type type="pinyin" key="collation">Порядок піньїн</type>
			<type type="roc" key="calendar">Китайський григоріанський</type>
			<type type="stroke" key="collation">Порядок ключів</type>
			<type type="traditional" key="collation">Традиційний</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">США</measurementSystemName>
			<measurementSystemName type="metric">Метрична</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Мова з кодом {0}</codePattern>
			<codePattern type="script">Скрипт із кодом {0}</codePattern>
			<codePattern type="territory">Територія з кодом {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="currency">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[ʼ а-г ґ д е є ж-и і ї й-щ ь ю я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[i v x]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>“</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Тот</month>
							<month type="2">Бабе</month>
							<month type="3">Хатур</month>
							<month type="4">Кіхак</month>
							<month type="5">Тобе</month>
							<month type="6">Амшир</month>
							<month type="7">Барамхат</month>
							<month type="8">Бармуда</month>
							<month type="9">Башнас</month>
							<month type="10">Бауна</month>
							<month type="11">Абіб</month>
							<month type="12">Мисра</month>
							<month type="13">Насі</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Тот</month>
							<month type="2">Бабе</month>
							<month type="3">Хатур</month>
							<month type="4">Кіхак</month>
							<month type="5">Тобе</month>
							<month type="6">Амшир</month>
							<month type="7">Барамхат</month>
							<month type="8">Бармуда</month>
							<month type="9">Башнас</month>
							<month type="10">Бауна</month>
							<month type="11">Абіб</month>
							<month type="12">Мисра</month>
							<month type="13">Насі</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">січ.</month>
							<month type="2">лют.</month>
							<month type="3">бер.</month>
							<month type="4">квіт.</month>
							<month type="5">трав.</month>
							<month type="6">черв.</month>
							<month type="7">лип.</month>
							<month type="8">серп.</month>
							<month type="9">вер.</month>
							<month type="10">жовт.</month>
							<month type="11">лист.</month>
							<month type="12">груд.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">січня</month>
							<month type="2">лютого</month>
							<month type="3">березня</month>
							<month type="4">квітня</month>
							<month type="5">травня</month>
							<month type="6">червня</month>
							<month type="7">липня</month>
							<month type="8">серпня</month>
							<month type="9">вересня</month>
							<month type="10">жовтня</month>
							<month type="11">листопада</month>
							<month type="12">грудня</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">Січ</month>
							<month type="2">Лют</month>
							<month type="3">Бер</month>
							<month type="4">Кві</month>
							<month type="5">Тра</month>
							<month type="6">Чер</month>
							<month type="7">Лип</month>
							<month type="8">Сер</month>
							<month type="9">Вер</month>
							<month type="10">Жов</month>
							<month type="11">Лис</month>
							<month type="12">Гру</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">С</month>
							<month type="2">Л</month>
							<month type="3">Б</month>
							<month type="4">К</month>
							<month type="5">Т</month>
							<month type="6">Ч</month>
							<month type="7">Л</month>
							<month type="8">С</month>
							<month type="9">В</month>
							<month type="10">Ж</month>
							<month type="11">Л</month>
							<month type="12">Г</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Січень</month>
							<month type="2">Лютий</month>
							<month type="3">Березень</month>
							<month type="4">Квітень</month>
							<month type="5">Травень</month>
							<month type="6">Червень</month>
							<month type="7">Липень</month>
							<month type="8">Серпень</month>
							<month type="9">Вересень</month>
							<month type="10">Жовтень</month>
							<month type="11">Листопад</month>
							<month type="12">Грудень</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Нд</day>
							<day type="mon">Пн</day>
							<day type="tue">Вт</day>
							<day type="wed">Ср</day>
							<day type="thu">Чт</day>
							<day type="fri">Пт</day>
							<day type="sat">Сб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Неділя</day>
							<day type="mon">Понеділок</day>
							<day type="tue">Вівторок</day>
							<day type="wed">Середа</day>
							<day type="thu">Четвер</day>
							<day type="fri">Пʼятниця</day>
							<day type="sat">Субота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Н</day>
							<day type="mon">П</day>
							<day type="tue">В</day>
							<day type="wed">С</day>
							<day type="thu">Ч</day>
							<day type="fri">П</day>
							<day type="sat">С</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">I кв.</quarter>
							<quarter type="2">II кв.</quarter>
							<quarter type="3">III кв.</quarter>
							<quarter type="4">IV кв.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">I квартал</quarter>
							<quarter type="2">II квартал</quarter>
							<quarter type="3">III квартал</quarter>
							<quarter type="4">IV квартал</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<quarter type="1">I кв.</quarter>
							<quarter type="2">II кв.</quarter>
							<quarter type="3">III кв.</quarter>
							<quarter type="4">IV кв.</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>дп</am>
				<pm>пп</pm>
				<eras>
					<eraNames>
						<era type="0">до нашої ери</era>
						<era type="1">нашої ери</era>
					</eraNames>
					<eraAbbr>
						<era type="0">до н.е.</era>
						<era type="1">н.е.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy 'р'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy 'р'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E, d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E, d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">LLL yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">LLLL yyyy</dateFormatItem>
						<dateFormatItem id="yyyyQQQQ">QQQQ yyyy 'р'.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M–M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM – E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM – E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL–LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM – E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d – E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">d–d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM – dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM – dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH–HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm–HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm–HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH–HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy – MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy – MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy – E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy – E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy – E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL–LLL yyyy</greatestDifference>
							<greatestDifference id="y">LLL yyyy – LLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM – E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d – E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy – E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM – d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy – d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy – dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy – dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy – dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Ера</displayName>
					</field>
					<field type="year">
						<displayName>Рік</displayName>
					</field>
					<field type="month">
						<displayName>Місяць</displayName>
					</field>
					<field type="week">
						<displayName>Тиждень</displayName>
					</field>
					<field type="day">
						<displayName>День</displayName>
						<relative type="0">Сьогодні</relative>
						<relative type="1">Завтра</relative>
						<relative type="2">Післязавтра</relative>
						<relative type="-1">Вчора</relative>
						<relative type="-2">Позавчора</relative>
					</field>
					<field type="weekday">
						<displayName>День тижня</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Частина доби</displayName>
					</field>
					<field type="hour">
						<displayName>Година</displayName>
					</field>
					<field type="minute">
						<displayName>Хвилина</displayName>
					</field>
					<field type="second">
						<displayName>Секунда</displayName>
					</field>
					<field type="zone">
						<displayName>Зона</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Тішри</month>
							<month type="2">Марчешван</month>
							<month type="3">Числьов</month>
							<month type="4">Тебет</month>
							<month type="5">Шеват</month>
							<month type="6">Адар Ⅰ</month>
							<month type="7">Адар</month>
							<month type="8">Нісан</month>
							<month type="10">Сиван</month>
							<month type="11">Таммуз</month>
							<month type="12">Аб</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Тішри</month>
							<month type="2">Марчешван</month>
							<month type="3">Числьов</month>
							<month type="4">Тебет</month>
							<month type="5">Шеват</month>
							<month type="6">Адар Ⅰ</month>
							<month type="7">Адар</month>
							<month type="8">Нісан</month>
							<month type="9">Іар</month>
							<month type="10">Сиван</month>
							<month type="11">Таммуз</month>
							<month type="12">Аб</month>
							<month type="13">Елул</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="6">Адар I</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="6">Адар I</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Мухаррам</month>
							<month type="2">Сафар</month>
							<month type="3">Рабі I</month>
							<month type="4">Рабі II</month>
							<month type="5">Джумада I</month>
							<month type="6">Джумада II</month>
							<month type="7">Раджаб</month>
							<month type="8">Шаабан</month>
							<month type="9">Рамадан</month>
							<month type="10">Даввал</month>
							<month type="11">Зу-ль-каада</month>
							<month type="12">Зу-ль-хіджа</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Фарвардін</month>
							<month type="2">Ордібехешт</month>
							<month type="3">Хордад</month>
							<month type="4">Тір</month>
							<month type="5">Мордад</month>
							<month type="6">Шахрівер</month>
							<month type="7">Мехр</month>
							<month type="8">Абан</month>
							<month type="9">Азер</month>
							<month type="10">Дей</month>
							<month type="11">Бахман</month>
							<month type="12">Есфанд</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Невідомо</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Андора</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Дубаї</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Кабул</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Антигуа</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Анґілья</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Тірана</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Єреван</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Кюрасао</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Луанда</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Ротера</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Палмер</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Південний полюс</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Сьова</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Моусон</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Девіс</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Восток</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Кейсі</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Дюмон-д'Юрвіль</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>Мак-Мердо</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Ріо-Ґалеґос</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>Мендоса</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>Сан-Хуан</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ушуая</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>Ла-Ріоха</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>Сан-Луїс</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Катамарка</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>Жужуй</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Тукуман</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Кордоба</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Буенос-Айрес</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Паго Паго</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Відень</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>Перт</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>Евкла</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Дарвін</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Аделаїда</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Брокен-Гіл</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>Каррі</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>Мельбурн</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>Хобарт</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>Ліндеман</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Сідней</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Брисбен</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Лорд-Хау</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Аруба</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>Аландські острови</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Баку</exemplarCity>
			</zone>
			<zone type="Europe/Sarajevo">
				<exemplarCity>Сараєво</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Барбадос</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Дака</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Брюссель</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Уагадугу</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Софія</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Бахрейн</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Бужумбура</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Порто-Ново</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Бермуди</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Бруней</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>Ла-Пас</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Ейрунепе</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Ріо-Бранко</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Порто-Велью</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Боа-Віста</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Манаус</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Куяба</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Кампу-Гранді</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Белен</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Арагуайна</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Сан-Паулу</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Байя</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Форталеза</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Масейо</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Ресіфі</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Норонья</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Насау</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Тхімпху</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Габороне</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Мінськ</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Беліз</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Доусон</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>Вайтгорс</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>Інувік</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>Ванкувер</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Доусон-Крік</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>Єллоунайф</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Едмонтон</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>Свіфт-Каррент</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Кембридж-Бей</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Реджайна</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>Вінніпеґ</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>Резолют</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>Рейні-Рівер</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>Ренкін-Інлет</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>Корал-Харбор</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>Тандер-Бей</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>Ніпігон</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>Торонто</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Монреаль</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>Ікалуіт</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>Панґніртунґ</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>Монктон</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Галіфакс</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Гуз-Бей</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Глейс-Бей</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>Бланк-Саблон</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>Сент-Джонс</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Кокосові острови</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Кіншаса</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Лубумбаші</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Бангі</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Браззавіль</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Цюріх</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Абіджан</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Раротонга</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Острів Пасхи</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Сантьяго</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Дуала</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Кашгар</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Урумчі</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Чунцин</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Шанхай</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>Харбін</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Богота</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Коста Ріка</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Гавана</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Кабо-Верде</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Острів Різдва</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Нікосія</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Прага</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Берлін</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Джибуті</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Копенгаген</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Домініка</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Санто-Домінго</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Алжир</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Ґалапагос</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Гуаякіль</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Таллін</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Каїр</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>Ель-Аюн</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Асмера</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Канари</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Сеута</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Мадрид</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Аддис-Абеба</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Гельсінкі</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Фіджи</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Стенлі</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Трук</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Понапе</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Косрае</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Фарерські острови</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Париж</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Лібревіль</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Лондон</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Гренада</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Тбілісі</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Кайенна</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>Ґернсі</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Аккра</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Гібралтар</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Туле</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Готхоб</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Скорсбисун</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Денмарксхавн</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Банжул</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Конакрі</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Ґваделупа</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Малабо</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Афіни</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Південна Джорджія</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Гватемала</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Гуам</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Бісау</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Ґайана</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Гонконг</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>Тегусігальпа</exemplarCity>
			</zone>
			<zone type="Europe/Zagreb">
				<exemplarCity>Загреб</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Порт-о-Пренс</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Будапешт</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Джакарта</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>Понтіанак</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Макасар</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Джайпур</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Дублін</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Єрусалим</exemplarCity>
			</zone>
			<zone type="Europe/Isle_of_Man">
				<exemplarCity>Острів Мен</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>Калькутта</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Чагос</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Багдад</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Тегеран</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Рейк'явік</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Рим</exemplarCity>
			</zone>
			<zone type="Europe/Jersey">
				<exemplarCity>Джерсі</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Ямайка</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Амман</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Токіо</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Найробі</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Бішкек</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Пномпень</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Ендербері</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Кірітіматі</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Тарава</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Комори</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Сент-Кітс і Невіс</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Пхеньян</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Сеул</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Кувейт</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Кайманові острови</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Актау</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Орал</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Актобе</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Кзил-Орда</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Алмати</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>В’єнтьян</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Бейрут</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Сент-Лусія</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Вадуц</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Коломбо</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Монровія</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Масеру</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Вільнюс</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Люксембург</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Рига</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Тріполі</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Касабланка</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Монако</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Кишинів</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>Подгориця</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Антананаріву</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Кваджалейн</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Маджуро</exemplarCity>
			</zone>
			<zone type="Europe/Skopje">
				<exemplarCity>Скоп'є</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Бамако</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Рангун</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Говд</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Улан-Батор</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Чойбалсан</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Макао</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Сайпан</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Мартініка</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Нуакшот</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Монсерат</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Мальта</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Маврикій</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Мальдіви</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Блантир</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>Тіхуана</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Ермосільйо</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Масатлан</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Чіуауа</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Монтерей</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Мехіко</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Меріда</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Канкун</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Куала-Лумпур</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Кучінґ</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Мапуту</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Віндхук</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Нумеа</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Ніамей</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Норфолк</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Лагос</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Манагуа</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Амстердам</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Осло</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Катманду</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Науру</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Ніуе</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Чатем</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Окленд</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Маскат</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Панама</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Ліма</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Таїті</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Маркизькі о-ви</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Гамбер</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Порт-Морсбі</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Маніла</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Карачі</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Варшава</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Мікелон</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Піткерн</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Пуерто Ріко</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Газа</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Азорські острови</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Мадейра</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Лісабон</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Палау</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Асунсьйон</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Катар</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Реюньйон</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Бухарест</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Белград</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Калінінград</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Москва</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Волгоград</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Самара</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Єкатеринбург</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Омськ</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Новосибірськ</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Красноярськ</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Іркутськ</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Якутськ</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Владивосток</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Сахалін</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Магадан</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Камчатка</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Анадир</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Кігалі</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Ер-Ріяд</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Гвадалканал</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Махе</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Хартум</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Стокгольм</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Сингапур</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Острів Святої Єлени</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>Любляна</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>Лонгербюйн</exemplarCity>
			</zone>
			<zone type="Europe/Bratislava">
				<exemplarCity>Братислава</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Фрітаун</exemplarCity>
			</zone>
			<zone type="Europe/San_Marino">
				<exemplarCity>Сан-Маріно</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Дакар</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Могадішо</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Парамарібо</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Сан-Томе і Принсіпі</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Сальвадор</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Дамаск</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Мбабане</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Гранд-Терк</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Нджамена</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Острів Кергелен</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Ломе</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Бангкок</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Душанбе</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Факаофо</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Ділі</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ашгабат</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Туніс</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Тонгатапу</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Стамбул</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Порт-оф-Спейн</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Фунафуті</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Тайпей</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Дар-ес-Салаам</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ужгород</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Київ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Сімферополь</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Запоріжжя</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Кампала</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Мідуей</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Джонстон</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Вей΀º</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>Адак</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>Ном</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Гонолулу</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Анкоридж</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>Якутат</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>Джуно</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Лос-Анджелес</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>Бойсе</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Фінікс</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>Шипрок</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Денвер</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>Нью-Салем</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Центр</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Чикаго</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>Меноміні</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Вінсенс</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Петербург</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Телл-сіті</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Нокс</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Вінамак</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Маренго</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Індіанаполіс</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Луїсвілль</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Вівей</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Монтичелло</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Детройт</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Нью-Йорк</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Монтевідео</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Самарканд</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Ташкент</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>Ватикан</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Сент-Вінсент</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Каракас</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Тортола</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Сент-Томас</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Сайгон</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Ефате</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Уолліс</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Апіа</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Аден</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Майорка</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Йоганнесбург</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Лусака</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Хараре</exemplarCity>
			</zone>
			<metazone type="Africa_Central">
				<long>
					<standard>за центральноафриканським часом</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>за східноафриканським часом</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>за південноафриканським часом</generic>
					<standard>за південноафриканським стандартним часом</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>за західноафриканським часом</standard>
					<daylight>за західноафриканським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>за північноамериканським центральним часом</generic>
					<standard>за північноамериканським центральним стандартним часом</standard>
					<daylight>за північноамериканськ΀¸м центральним літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>за північноамериканським східним часом</generic>
					<standard>за північноамериканським східним стандартним часом</standard>
					<daylight>за північноамериканським східним літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>за північноамериканським гірним часом</generic>
					<standard>за північноамериканським гірним стандартним часом</standard>
					<daylight>за північноамериканським гірним літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>за північноамериканським тихоокеанським часом</generic>
					<standard>за північноамериканським тихоокеанським стандартним часом</standard>
					<daylight>за північноамериканським тихоокеанським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>за вірменським часом</standard>
					<daylight>за вірменським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>за атлантичним часом</generic>
					<standard>за атлантичним стандартним часом</standard>
					<daylight>за атлантичним літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>за центральноєвропейським часом</standard>
					<daylight>за центральноєвропейським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>за східноєвропейським часом</standard>
					<daylight>за східноєвропейським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>за західноєвропейським часом</standard>
					<daylight>за західноєвропейським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>за Грінвічем</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>за іранським стандартним часом</standard>
					<daylight>за іранським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>за іркутським часом</standard>
					<daylight>за іркутським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>за ізраїльським часом</generic>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>за японським часом</generic>
					<daylight>за японським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>за камчатським часом</standard>
					<daylight>за камчатським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>за красноярським часом</standard>
					<daylight>за красноярським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>за куйбишевським часом</standard>
					<daylight>за куйбишевським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>за магаданським часом</standard>
					<daylight>за магаданським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>за московським часом</generic>
					<standard>за московським стандартним часом</standard>
					<daylight>за московським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>за новосибірським часом</standard>
					<daylight>за новосибірським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>за омським часом</standard>
					<daylight>за омським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>за самарським часом</standard>
					<daylight>за самарським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>за турецьким часом</standard>
					<daylight>за турецьким літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>за владивостоцьким часом</standard>
					<daylight>за владивостоцьким літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>за волгоградським часом</standard>
					<daylight>за волгоградським літнім часом</daylight>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>за якутським часом</standard>
					<daylight>за якутським літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>за єкатеринбурзьким часом</standard>
					<daylight>за єкатеринбурзьким літнім часом</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="few">{0} {1}</unitPattern>
			<unitPattern count="many">{0} {1}</unitPattern>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Андоррська песета</displayName>
			</currency>
			<currency type="AED">
				<displayName>Дирхем ОАЕ</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Афгані (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Афгані</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Албанський лек</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Вірменський драм</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Гульден Нідерландських Антіл</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Ангольська кванза</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Ангольська кванза (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Ангольська нова кванза (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Ангольська кванза реаджастадо (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Аргентинський австрал</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Аргентинський песо (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Аргентинський песо</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Австрійський шилінг</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Австралійський долар</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Арубський гульден</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Азербайджанський манат (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Азербайджанський манат</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Динар (Боснія і Герцеговина)</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Конвертована марка Боснії і Герцоговини</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Барбадоський долар</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Бангладеська така</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Бельгійський франк (конвертований)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Бельгійський франк</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Бельгійський франк (фінансовий)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Болгарський твердий лев</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Болгарський новий лев</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Бахрейнський динар</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Бурундійський франк</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Бермудський долар</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Брунейський долар</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Болівіано</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Болівійське песо</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Болівійський мвдол</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Бразильське нове крузейро (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Бразильське крузадо</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Бразильське крузейро (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Бразильський реал</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Бразильське нове крузадо</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Бразильське крузейро</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Багамський долар</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Бутанський нгултрум</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Бірманський кіат</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Ботсванська пула</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Білоруський новий рубль (1994-1999)</displayName>
				<displayName count="few">білоруські нові рублі (1994-1999)</displayName>
				<displayName count="many">білоруських нових рублів (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Білоруський рубль</displayName>
				<displayName count="few">білоруські рублі</displayName>
				<displayName count="many">білоруських рублів</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Белізький долар</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Канадський долар</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Конголезький франк</displayName>
			</currency>
			<currency type="CHE">
				<displayName>Євро WIR</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Швейцарський франк</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>Франк WIR</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Чилійський юнідадес де фоменто</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Чілійський песо</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Китайський юань</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Колумбійський песо</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Юнідад де валор ріал</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Костариканський колон</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Старий сербський динар</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Чехословацька тверда крона</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Кубинський песо</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Ескудо Кабо-Верде</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Кіпрський фунт</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Чеська крона</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Марка НДР</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Німецька марка</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Джибутійський франк</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Датська крона</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Домініканський песо</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Алжирський динар</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Еквадорський сукре</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Еквадорський юнідад де валор константе</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Естонська крона</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Єгипетський фунт</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Еквеле</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Еритрейська накфа</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Іспанська песета (&quot;А&quot; рахунок)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Іспанська песета (конвертовані рахунки)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Іспанська песета</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Ефіопський бір</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Євро</displayName>
				<displayName count="few">євро</displayName>
				<displayName count="many">євро</displayName>
				<displayName count="one">євро</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Фінляндська марка</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Долар Фіджі</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Фолклендський фунт</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Французький франк</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Англійський фунт стерлінгів</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Грузинський купон</displayName>
				<displayName count="few">грузинські купони</displayName>
				<displayName count="many">грузинських купонів</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Грузинський ларі</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ганський седі (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ганський седі</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Гібралтарський фунт</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Гамбійська даласі</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Гвійнейський франк</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Гвінейське сілі</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Еквеле (Екваторіальна Ґвінея)</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Грецька драхма</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Гватемальський кетсаль</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Ескудо Португальської Гвінеї</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Песо Гвінеї-Бісау</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Гайянський долар</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Гонконгівський долар</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Гондураська лемпіра</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Хорватський динар</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Хорватська куна</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Гаїтянський гурд</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Угорський форинт</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Індонезійська рупія</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Ірландський фунт</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Ізраїльський фунт</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Ізраїльський новий шекель</displayName>
			</currency>
			<currency type="INR">
				<displayName>Індійська рупія</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Іракський динар</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Іранський ріал</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Ісландська крона</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Італійська ліра</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Ямайський долар</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Йорданський динар</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Японська єна</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Кенійський шилінг</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Киргизький сом</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Камбоджійський рієль</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Коморський франк</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Вона Північної Кореї</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Вона Південної Кореї</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Кувейтський динар</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Долар Кайманових островів</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Казахстанський тенге</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Лаоський кіп</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Ліванський фунт</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Шрі-ланкійська рупія</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Ліберійський долар</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Лесотський лоті</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Малоті</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Литовський літ</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Литовський талон</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Люксембурґський франк (Конвертований)</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Люксембурзький франк</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Люксембурґський франк (Фінансовий)</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Латвійський лат</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Латвійський рубль</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Лівійський динар</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Марокканський дирхем</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Марокканський франк</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Молдовський лей</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Мадагаскарський аріарі</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Мадагаскарський франк</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Македонський динар</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Малійський франк</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Кʼят Мʼянми</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Монгольський тугрик</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Макао патака</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Мавританська угія</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Мальтійська ліра</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Мальтійський фунт</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Маврикійська рупія</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Мальдівська руфія</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Квача (Малаві)</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Мексиканське песо</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Мексиканське срібне песо (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Мексиканський юнідад де інверсіон</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Малайзійський рингіт</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Мозамбіцький ескудо</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Старий мозамбіцький метикал</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Мозамбіцький метикал</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Намібійський долар</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Нігерійська найра</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Нікарагуанська кордоба</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Нікарагуанська кордоба оро</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Нідерландський гульден</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Норвезька крона</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Непальська рупія</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Новозеландський долар</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Оманський ріал</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Панамська бальбоа</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Перуанський інті</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Перуанський новий сол</displayName>
			</currency>
			<currency type="PES">
				<displayName>Перуанський сол</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Кіна Папуа Нової Гвінеї</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Філіппінське песо</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Пакистанська рупія</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Польський злотий</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Польський злотий (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Португальський ескудо</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Парагвайський гуарані</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Катарський ріал</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Родезійський долар</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Старий румунський лей</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Румунський лей</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Сербський динар</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Російський рубль</displayName>
				<displayName count="few">російські рублі</displayName>
				<displayName count="many">російських рублів</displayName>
				<displayName count="one">Російський рубль</displayName>
				<symbol>руб.</symbol>
			</currency>
			<currency type="RUR">
				<displayName>Російський рубль (1991-1998)</displayName>
				<displayName count="few">російські рублі (RUR)</displayName>
				<displayName count="many">російських рублів (RUR)</displayName>
				<displayName count="one">Російсьий рубль RUR</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Руандійський франк</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Саудівський ріал</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Долар Соломонових Островів</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Сейшельська рупія</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Суданський динар</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Суданський фунт</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Старий суданський фунт</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Шведська крона</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Сінгапурський долар</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Фунт Святої Єлени</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Словенський толар</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Словацька крона</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Леоне Сьєрра-Леоне</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Сомалійський шилінг</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Суринамський долар</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Суринамський гульден</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Добра Сан-Томе і Прінсіпі</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Радянський рубль</displayName>
				<displayName count="few">радянські рублі</displayName>
				<displayName count="many">радянських рублів</displayName>
				<displayName count="one">радянський рубль</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Сальвадорський колон</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Сирійський фунт</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Свазілендські лілангені</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Таїландський бат</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Таджицький рубль</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Таджицький сомоні</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Туркменський манат</displayName>
			</currency>
			<currency type="TND">
				<displayName>Туніський динар</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Паанга Тонго</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Тіморський ескудо</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Стара турецька ліра</displayName>
				<displayName count="few">старі турецькі ліри</displayName>
				<displayName count="many">старих турецьких лір</displayName>
				<displayName count="one">стара турецька ліра</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Турецька ліра</displayName>
				<displayName count="few">турецькі ліри</displayName>
				<displayName count="many">турецьких лір</displayName>
				<displayName count="one">турецька ліра</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Долар Тринідаду і Тобаго</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Новий тайванський долар</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Танзанійський шилінг</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Українська гривня</displayName>
				<displayName count="few">гривні</displayName>
				<displayName count="many">гривень</displayName>
				<displayName count="one">гривня</displayName>
				<displayName count="other">гривні</displayName>
				<symbol>грн.</symbol>
			</currency>
			<currency type="UAK">
				<displayName>Український карбованець</displayName>
				<displayName count="few">українські карбованці</displayName>
				<displayName count="many">українських карбованців</displayName>
				<displayName count="one">український карбованець</displayName>
				<displayName count="other">українського карбованця</displayName>
				<symbol>крб.</symbol>
			</currency>
			<currency type="UGS">
				<displayName>Угандійський шилінг (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Угандійський шилінг</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Долар США</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>Долар США (наступного дня)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Долар США (цього дня)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Уругвайський песо в індексованих одиницях</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Уругвайське песо (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Уругвайське песо</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Узбецький сум</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Венесуельський болівар</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Венесуельський болівар фуерте</displayName>
			</currency>
			<currency type="VND">
				<displayName>Вʼєтнамський донг</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Вануатська вату</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Тала Західного Самоа</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Франк Центральноафриканського фінансового товариства</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Срібло</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Золото</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Європейська складена валютна одиниця</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Одиниця Європейського валютного фонду</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Європейська розрахункова одиниця XBC</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Європейська розрахункова одиниця XBD</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Східнокарибський долар</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Спеціальні права запозичення</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Європейська валютна одиниця</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Французький золотий франк</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Французький франк UIC</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Франк Західноафриканського фінансового товариства</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Паладій</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Французький тихоокеанський франк</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Платина</displayName>
			</currency>
			<currency type="XRE">
				<displayName>Фонди RINET</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Код тестування валюти</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Невідома грошова одиниця</displayName>
				<displayName count="few">невідомі грошові одиниці</displayName>
				<displayName count="many">невідомих грошових одиниць</displayName>
				<displayName count="one">невідома грошова одиниця</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Єменський динар</displayName>
			</currency>
			<currency type="YER">
				<displayName>Єменський ріал</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Югославський твердий динар</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Югославський новий динар</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Югославський конвертований динар</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Південноафриканський фінансовий ранд</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Південноафриканський ранд</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Квача (Замбія)</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Заїрський новий заїр</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Заїрський заїр</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Зімбабвійський долар</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} дні</unitPattern>
			<unitPattern count="many">{0} днів</unitPattern>
			<unitPattern count="one">{0} день</unitPattern>
			<unitPattern count="other">{0} дня</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} години</unitPattern>
			<unitPattern count="many">{0} годин</unitPattern>
			<unitPattern count="one">{0} година</unitPattern>
			<unitPattern count="other">{0} години</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} хвилини</unitPattern>
			<unitPattern count="many">{0} хвилин</unitPattern>
			<unitPattern count="one">{0} хвилина</unitPattern>
			<unitPattern count="other">{0} хвилини</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} місяці</unitPattern>
			<unitPattern count="many">{0} місяців</unitPattern>
			<unitPattern count="one">{0} місяць</unitPattern>
			<unitPattern count="other">{0} місяця</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} секунди</unitPattern>
			<unitPattern count="many">{0} секунд</unitPattern>
			<unitPattern count="one">{0} секунда</unitPattern>
			<unitPattern count="other">{0} секунди</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} тижні</unitPattern>
			<unitPattern count="many">{0} тижнів</unitPattern>
			<unitPattern count="one">{0} тиждень</unitPattern>
			<unitPattern count="other">{0} тижня</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} роки</unitPattern>
			<unitPattern count="many">{0} років</unitPattern>
			<unitPattern count="one">{0} рік</unitPattern>
			<unitPattern count="other">{0} року</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>так:т</yesstr>
			<nostr>ні:н</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��lggLocale/Data/sr_Latn_CS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.34 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Latn"/>
		<territory type="CS"/>
	</identity>
	<alias source="sr_Latn_RS" path="//ldml"/>
</ldml>
PKpG[7#Bg##Locale/Data/ur_PK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.33 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ur"/>
		<territory type="PK"/>
	</identity>
</ldml>
PKpG[��OOLocale/Data/kk_KZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.40 $"/>
		<generation date="$Date: 2008/06/18 21:18:43 $"/>
		<language type="kk"/>
		<territory type="KZ"/>
	</identity>
	<alias source="kk_Cyrl_KZ" path="//ldml"/>
</ldml>
PKpG[CEu�%%Locale/Data/cop.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="cop"/>
	</identity>
	<characters>
		<exemplarCharacters>[α-ρ σ ϲ τ-ω ϣ ϥ ϧ ϩ ϫ ϭ ϯ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">ωογτ</month>
							<month type="2">Παοπι</month>
							<month type="3">Αθορ</month>
							<month type="4">Χοιακ</month>
							<month type="5">Τωβι</month>
							<month type="6">Μεϣιρ</month>
							<month type="7">Παρεμϩατ</month>
							<month type="8">Φαρμοθι</month>
							<month type="9">Παϣαν</month>
							<month type="10">Παωνι</month>
							<month type="11">Επηπ</month>
							<month type="12">Μεϲωρη</month>
							<month type="13">Πικογϫι μαβοτ</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
</ldml>
PKpG[��>i��Locale/Data/sid.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sid"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">Arabic</language>
			<language type="de">German</language>
			<language type="en">English</language>
			<language type="es">Spanish</language>
			<language type="fr">French</language>
			<language type="hi">Hindi</language>
			<language type="it">Italian</language>
			<language type="ja">Japanese</language>
			<language type="pt">Portuguese</language>
			<language type="ru">Russian</language>
			<language type="sid">Sidaamu Afo</language>
			<language type="zh">Chinese</language>
		</languages>
		<scripts>
			<script type="Latn">Latin</script>
		</scripts>
		<territories>
			<territory type="BR">Brazil</territory>
			<territory type="CN">China</territory>
			<territory type="DE">Germany</territory>
			<territory type="ET">Itiyoophiya</territory>
			<territory type="FR">France</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="IN">India</territory>
			<territory type="IT">Italy</territory>
			<territory type="JP">Japan</territory>
			<territory type="RU">Russia</territory>
			<territory type="US">United States</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">May</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Oct</month>
							<month type="11">Nov</month>
							<month type="12">Dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">January</month>
							<month type="2">February</month>
							<month type="3">March</month>
							<month type="4">April</month>
							<month type="5">May</month>
							<month type="6">June</month>
							<month type="7">July</month>
							<month type="8">August</month>
							<month type="9">September</month>
							<month type="10">October</month>
							<month type="11">November</month>
							<month type="12">December</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sam</day>
							<day type="mon">San</day>
							<day type="tue">Mak</day>
							<day type="wed">Row</day>
							<day type="thu">Ham</day>
							<day type="fri">Arb</day>
							<day type="sat">Qid</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sambata</day>
							<day type="mon">Sanyo</day>
							<day type="tue">Maakisanyo</day>
							<day type="wed">Roowe</day>
							<day type="thu">Hamuse</day>
							<day type="fri">Arbe</day>
							<day type="sat">Qidaame</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">S</day>
							<day type="tue">M</day>
							<day type="wed">R</day>
							<day type="thu">H</day>
							<day type="fri">A</day>
							<day type="sat">Q</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>soodo</am>
				<pm>hawwaro</pm>
				<eras>
					<eraAbbr>
						<era type="0">YIA</era>
						<era type="1">YIG</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Chinese Yuan Renminbi</displayName>
			</currency>
			<currency type="ETB">
				<symbol>$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pound Sterling</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
			</currency>
			<currency type="USD">
				<displayName>US Dollar</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[3NT::Locale/Data/zh_Hans_HK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<script type="Hans"/>
		<territory type="HK"/>
	</identity>
</ldml>
PKpG[T�Ck�k�Locale/Data/he.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.105 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="he"/>
	</identity>
	<fallback>en</fallback>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">אתיופית</language>
			<language type="ab">אבחזית</language>
			<language type="ace">ace</language>
			<language type="ach">ach</language>
			<language type="ada">ada</language>
			<language type="ady">אדיגית</language>
			<language type="ae">אבסטן</language>
			<language type="af">אפריקאנס</language>
			<language type="afa">אפרו-אסיאתית (אחר)</language>
			<language type="afh">אפריהילי</language>
			<language type="ain">אינו</language>
			<language type="ak">אקאן</language>
			<language type="akk">אכדית</language>
			<language type="ale">ale</language>
			<language type="alg">alg</language>
			<language type="am">אמהרית</language>
			<language type="an">an</language>
			<language type="ang">אנגלית עתיקה</language>
			<language type="anp">anp</language>
			<language type="apa">שפות אפצ'יות</language>
			<language type="ar">ערבית</language>
			<language type="arc">ארמית</language>
			<language type="arn">arn</language>
			<language type="arp">arp</language>
			<language type="art">שפה מלאכותית אחרת</language>
			<language type="arw">arw</language>
			<language type="as">אסאמית</language>
			<language type="ast">אסטורית</language>
			<language type="ath">ath</language>
			<language type="aus">שפות אוסטרליות</language>
			<language type="av">av</language>
			<language type="awa">אוואדית</language>
			<language type="ay">איימארית</language>
			<language type="az">אזרית</language>
			<language type="ba">בשקירית</language>
			<language type="bad">bad</language>
			<language type="bai">bai</language>
			<language type="bal">באלוצ'י</language>
			<language type="ban">בלינזית</language>
			<language type="bas">bas</language>
			<language type="bat">bat</language>
			<language type="be">בלארוסית</language>
			<language type="bej">בז'ה</language>
			<language type="bem">bem</language>
			<language type="ber">ברברית</language>
			<language type="bg">בולגרית</language>
			<language type="bh">ביהארי</language>
			<language type="bho">bho</language>
			<language type="bi">ביסלמה</language>
			<language type="bik">bik</language>
			<language type="bin">bin</language>
			<language type="bm">bm</language>
			<language type="bn">בנגלית</language>
			<language type="bnt">בנטו</language>
			<language type="bo">טיבטית</language>
			<language type="br">ברטונית</language>
			<language type="bra">bra</language>
			<language type="bs">בוסנית</language>
			<language type="btk">btk</language>
			<language type="bua">bua</language>
			<language type="bug">bug</language>
			<language type="byn">byn</language>
			<language type="ca">קטלונית</language>
			<language type="cad">קאדו</language>
			<language type="cai">אינדיאנית מרכז אמריקאית אחרת</language>
			<language type="car">car</language>
			<language type="cau">קווקזית אחרת</language>
			<language type="cch">cch</language>
			<language type="ce">צ'צ'נית</language>
			<language type="ceb">קבואנו</language>
			<language type="cel">קלטית</language>
			<language type="ch">ch</language>
			<language type="chb">chb</language>
			<language type="chg">צ'אגאטאי</language>
			<language type="chk">chk</language>
			<language type="chn">chn</language>
			<language type="cho">cho</language>
			<language type="chp">chp</language>
			<language type="chr">צ'ירוקית</language>
			<language type="chy">chy</language>
			<language type="cmc">cmc</language>
			<language type="co">קורסיקאית</language>
			<language type="cop">קופטית</language>
			<language type="cpe">cpe</language>
			<language type="cpf">cpf</language>
			<language type="cr">cr</language>
			<language type="crh">טטרית של קרים</language>
			<language type="crp">crp</language>
			<language type="cs">צ׳כית</language>
			<language type="cu">סלאבית כנסייתית עתיקה</language>
			<language type="cus">cus</language>
			<language type="cv">cv</language>
			<language type="cy">וולשית</language>
			<language type="da">דנית</language>
			<language type="dak">דקוטה</language>
			<language type="dar">dar</language>
			<language type="day">day</language>
			<language type="de">גרמנית</language>
			<language type="de_AT">גרמנית אוסטרית</language>
			<language type="del">דלאוור</language>
			<language type="den">סלאבית</language>
			<language type="dgr">dgr</language>
			<language type="din">din</language>
			<language type="doi">דוגרי</language>
			<language type="dra">dra</language>
			<language type="dua">dua</language>
			<language type="dum">הולנדית תיכונה</language>
			<language type="dv">דיבהי</language>
			<language type="dyu">dyu</language>
			<language type="dz">דזונקה</language>
			<language type="ee">ee</language>
			<language type="efi">efi</language>
			<language type="egy">מצרית עתיקה</language>
			<language type="eka">eka</language>
			<language type="el">יוונית</language>
			<language type="elx">עילמית</language>
			<language type="en">אנגלית</language>
			<language type="en_AU">אנגלית אוסטרלית</language>
			<language type="en_CA">אנגלית קנדית</language>
			<language type="en_GB">אנגלית בריטית</language>
			<language type="en_US">אנגלית אמריקנית</language>
			<language type="enm">אנגלית תיכונה</language>
			<language type="eo">אספרנטו</language>
			<language type="es">ספרדית</language>
			<language type="es_419">ספרדית לטינו־אמריקאית</language>
			<language type="es_ES">ספרדית איברית</language>
			<language type="et">אסטונית</language>
			<language type="eu">בסקית</language>
			<language type="ewo">ewo</language>
			<language type="fa">פרסית</language>
			<language type="fan">fan</language>
			<language type="fat">fat</language>
			<language type="ff">ff</language>
			<language type="fi">פינית</language>
			<language type="fil">פיליפינית</language>
			<language type="fiu">fiu</language>
			<language type="fj">פיג'ית</language>
			<language type="fo">פארואזית</language>
			<language type="fon">fon</language>
			<language type="fr">צרפתית</language>
			<language type="fr_CA">צרפתית קנדית</language>
			<language type="fr_CH">צרפתית שוויצרית</language>
			<language type="frm">צרפתית תיכונה</language>
			<language type="fro">צרפתית עתיקה</language>
			<language type="frs">frs</language>
			<language type="fur">fur</language>
			<language type="fy">פריזית</language>
			<language type="ga">אירית</language>
			<language type="gaa">gaa</language>
			<language type="gay">gay</language>
			<language type="gba">gba</language>
			<language type="gd">סקוטית גאלית</language>
			<language type="gem">גרמאנית אחרת</language>
			<language type="gez">געז</language>
			<language type="gil">gil</language>
			<language type="gl">גליציאנית</language>
			<language type="gn">גוארני</language>
			<language type="gon">גונדי</language>
			<language type="gor">gor</language>
			<language type="got">גותית</language>
			<language type="grb">grb</language>
			<language type="grc">יוונית עתיקה</language>
			<language type="gsw">גרמנית שוויצרית</language>
			<language type="gu">גוג'ראטית</language>
			<language type="gv">מאנית</language>
			<language type="ha">האוסה</language>
			<language type="haw">הוואית</language>
			<language type="he">עברית</language>
			<language type="hi">הינדית</language>
			<language type="hit">חיתית</language>
			<language type="ho">הארי מוטו</language>
			<language type="hr">קרואטית</language>
			<language type="ht">האיטית</language>
			<language type="hu">הונגרית</language>
			<language type="hy">ארמנית</language>
			<language type="ia">אינטרלינגוה</language>
			<language type="id">אינדונזית</language>
			<language type="ie">אינטרלינגואה</language>
			<language type="ine">אינדו-אירופית אחרת</language>
			<language type="inh">אינגושית</language>
			<language type="io">אידו</language>
			<language type="ira">איראנית</language>
			<language type="is">איסלנדית</language>
			<language type="it">איטלקית</language>
			<language type="ja">יפנית</language>
			<language type="jpr">עברית-פרסית</language>
			<language type="jrb">עברית-ערבית</language>
			<language type="jv">ג'אווהנית</language>
			<language type="ka">גרוזינית</language>
			<language type="kab">קבילה</language>
			<language type="kk">קזחית</language>
			<language type="km">קמרית</language>
			<language type="kn">קאנאדה</language>
			<language type="ko">קוריאנית</language>
			<language type="ks">קשמירית</language>
			<language type="ku">כורדית</language>
			<language type="kw">קורנית</language>
			<language type="ky">קירגיזית</language>
			<language type="la">לטינית</language>
			<language type="lad">לדינו</language>
			<language type="lb">לוקסמבורגית</language>
			<language type="lg">lg</language>
			<language type="ln">לינגאלה</language>
			<language type="lo">לאו</language>
			<language type="lt">ליטאית</language>
			<language type="lv">לטבית</language>
			<language type="mag">מאגאהית</language>
			<language type="mai">מאיטילית</language>
			<language type="map">אוסטרונזית</language>
			<language type="mas">מאסאית</language>
			<language type="mg">מלגשית</language>
			<language type="mga">אירית תיכונה</language>
			<language type="mi">מאורית</language>
			<language type="mis">שפה שונה</language>
			<language type="mk">מקדונית</language>
			<language type="ml">מלאיאלם</language>
			<language type="mn">מונגולית</language>
			<language type="mni">מניפורית</language>
			<language type="mo">מולדבית</language>
			<language type="mr">מארתית</language>
			<language type="ms">מאלזית</language>
			<language type="mt">מלטזית</language>
			<language type="mul">מספר שפות</language>
			<language type="mus">mus</language>
			<language type="my">בורמזית</language>
			<language type="myn">מאיה</language>
			<language type="myv">myv</language>
			<language type="na">נאורית</language>
			<language type="nah">נאהואטל</language>
			<language type="nai">אינדיאנית צפון אמריקאית אחרת</language>
			<language type="nap">נפוליטנית</language>
			<language type="nb">נורבגית שפה הספר - בוקמול</language>
			<language type="nds">גרמנית תחתית</language>
			<language type="ne">נפאלית</language>
			<language type="nl">הולנדית</language>
			<language type="nl_BE">פלמית</language>
			<language type="nn">נורבגית חדשה - נינורשק</language>
			<language type="no">נורווגית</language>
			<language type="nub">שפות נבטיות</language>
			<language type="nv">נבחו</language>
			<language type="nwc">נווארית קלאסית</language>
			<language type="oc">אוקסיטנית</language>
			<language type="or">אוריה</language>
			<language type="ota">טורקית עותומנית</language>
			<language type="pa">פונג'אבית</language>
			<language type="peo">פרסית עתיקה</language>
			<language type="phi">פיליפינית אחרת</language>
			<language type="phn">פניקית</language>
			<language type="pl">פולנית</language>
			<language type="ps">פאשטו</language>
			<language type="pt">פורטוגזית</language>
			<language type="pt_BR">פורטוגזית ברזילאית</language>
			<language type="raj">ראג'סטן</language>
			<language type="ro">רומנית</language>
			<language type="rom">רומאנית</language>
			<language type="ru">רוסית</language>
			<language type="rup">ארומנית</language>
			<language type="rw">קיניהרואנדה</language>
			<language type="sa">סנסקריט</language>
			<language type="sai">שפה אינדיאנית דרום אמריקאית</language>
			<language type="sam">ארמית שומרונית</language>
			<language type="sat">סאנטלי</language>
			<language type="sc">סרדינית</language>
			<language type="scn">סיציליאנית</language>
			<language type="sco">סקוטית</language>
			<language type="sd">סינדהית</language>
			<language type="sem">שפה שמית</language>
			<language type="sga">אירית עתיקה</language>
			<language type="sgn">שפת סימנים</language>
			<language type="sh">סרבו-קרואטית</language>
			<language type="si">סינהלה</language>
			<language type="sid">סידמו</language>
			<language type="sit">שפה סינו־טיבטית</language>
			<language type="sk">סלובקית</language>
			<language type="sl">סלובנית</language>
			<language type="sla">שפה סלאבית</language>
			<language type="sm">סמואית</language>
			<language type="smi">שפות סאמיות אחרות</language>
			<language type="so">סומלית</language>
			<language type="sq">אלבנית</language>
			<language type="sr">סרבית</language>
			<language type="st">ססות'ו</language>
			<language type="su">סודנית</language>
			<language type="sux">שומרית</language>
			<language type="sv">שוודית</language>
			<language type="sw">סווהילית</language>
			<language type="syc">syc</language>
			<language type="syr">סורית</language>
			<language type="ta">טמילית</language>
			<language type="te">טלוגו</language>
			<language type="th">תאי</language>
			<language type="ti">טיגרינאית</language>
			<language type="tk">טורקמנית</language>
			<language type="tl">טגלוג</language>
			<language type="tlh">קלינגונית</language>
			<language type="tr">טורקית</language>
			<language type="tt">טטרית</language>
			<language type="tut">tut</language>
			<language type="tw">טווי</language>
			<language type="ty">טהיטית</language>
			<language type="ug">אויגהור</language>
			<language type="uga">אוגריתית</language>
			<language type="uk">אוקראינית</language>
			<language type="und">שפה לא ידועה או לא תקפה</language>
			<language type="ur">אורדו</language>
			<language type="uz">אוזבקית</language>
			<language type="vi">ויאטנמית</language>
			<language type="wo">ג'ולוף</language>
			<language type="xh">קוהסה</language>
			<language type="yap">יאפזית</language>
			<language type="yi">יידיש</language>
			<language type="yo">יורובה</language>
			<language type="zap">זאפוטק</language>
			<language type="zbl">zbl</language>
			<language type="zen">זנאגה</language>
			<language type="zh">סינית</language>
			<language type="zh_Hans">סינית (מפושטת)</language>
			<language type="zh_Hant">סינית מסורתית</language>
			<language type="zu">זולו</language>
			<language type="zxx">ללא תוכן לשוני</language>
		</languages>
		<scripts>
			<script type="Arab">ערבי</script>
			<script type="Armi">Armi</script>
			<script type="Armn">ארמני</script>
			<script type="Avst">Avst</script>
			<script type="Bali">באלינזי</script>
			<script type="Batk">Batk</script>
			<script type="Beng">בנגלי</script>
			<script type="Blis">Blis</script>
			<script type="Bopo">Bopo</script>
			<script type="Brah">Brah</script>
			<script type="Brai">ברייל</script>
			<script type="Bugi">Bugi</script>
			<script type="Buhd">Buhd</script>
			<script type="Cakm">Cakm</script>
			<script type="Cari">Cari</script>
			<script type="Cham">Cham</script>
			<script type="Cher">צ׳ירוקי</script>
			<script type="Cirt">Cirt</script>
			<script type="Copt">קופטי</script>
			<script type="Cprt">קפריסאי</script>
			<script type="Cyrl">קירילי</script>
			<script type="Cyrs">קירילי סלאבוני כנסייתי עתיק</script>
			<script type="Deva">דוואנגרי</script>
			<script type="Dsrt">Dsrt</script>
			<script type="Egyd">Egyd</script>
			<script type="Egyh">Egyh</script>
			<script type="Egyp">כתב חרטומים</script>
			<script type="Ethi">אתיופי</script>
			<script type="Geok">Geok</script>
			<script type="Geor">גאורגי</script>
			<script type="Glag">Glag</script>
			<script type="Goth">גותי</script>
			<script type="Grek">יווני</script>
			<script type="Gujr">Gujr</script>
			<script type="Guru">Guru</script>
			<script type="Hang">האנגול</script>
			<script type="Hani">האן</script>
			<script type="Hano">Hano</script>
			<script type="Hans">האן מפושט</script>
			<script type="Hant">האן מסורתי</script>
			<script type="Hebr">עברי</script>
			<script type="Hira">Hira</script>
			<script type="Hrkt">Hrkt</script>
			<script type="Hung">הונגרי עתיק</script>
			<script type="Inds">אינדוס</script>
			<script type="Ital">איטלקי עתיק</script>
			<script type="Java">Java</script>
			<script type="Jpan">יפני</script>
			<script type="Kali">Kali</script>
			<script type="Kana">Kana</script>
			<script type="Khar">Khar</script>
			<script type="Khmr">קמרית</script>
			<script type="Knda">קאנדה</script>
			<script type="Kore">קוריאני</script>
			<script type="Kthi">Kthi</script>
			<script type="Lana">Lana</script>
			<script type="Laoo">לאית</script>
			<script type="Latf">Latf</script>
			<script type="Latg">לטיני גאלי</script>
			<script type="Latn">לטיני</script>
			<script type="Lepc">Lepc</script>
			<script type="Mong">מונגולי</script>
			<script type="Orya">אורייה</script>
			<script type="Phlv">Phlv</script>
			<script type="Phnx">פיניקי</script>
			<script type="Qaai">Qaai</script>
			<script type="Runr">רוני</script>
			<script type="Syrc">סורי</script>
			<script type="Syre">Syre</script>
			<script type="Syrj">סורי מערבי</script>
			<script type="Syrn">סורי מזרחי</script>
			<script type="Taml">טמיל</script>
			<script type="Telu">טלוגו</script>
			<script type="Thai">תאי</script>
			<script type="Tibt">טיבטי</script>
			<script type="Ugar">אוגריתי</script>
			<script type="Xpeo">פרסי עתיק</script>
			<script type="Zxxx">לא כתוב</script>
			<script type="Zyyy">Zyyy</script>
			<script type="Zzzz">כתב לא ידוע או לא תקף</script>
		</scripts>
		<territories>
			<territory type="001">העולם</territory>
			<territory type="002">אפריקה</territory>
			<territory type="003">צפון אמריקה</territory>
			<territory type="005">דרום אמריקה</territory>
			<territory type="009">אוקיאניה</territory>
			<territory type="011">מערב אפריקה</territory>
			<territory type="013">מרכז אמריקה</territory>
			<territory type="014">מזרח אפריקה</territory>
			<territory type="015">צפון אפריקה</territory>
			<territory type="017">מרכז אפריקה</territory>
			<territory type="018">דרום יבשת אפריקה</territory>
			<territory type="019">אמריקה</territory>
			<territory type="021">אמריקה הצפונית</territory>
			<territory type="029">קריביים</territory>
			<territory type="030">מזרח אסיה</territory>
			<territory type="034">דרום אסיה</territory>
			<territory type="035">דרום-מזרח אסיה</territory>
			<territory type="039">דרום אירופה</territory>
			<territory type="053">אוסטרליה וניו-זילנד</territory>
			<territory type="054">מלנסיה</territory>
			<territory type="057">האיזור המיקרונזי</territory>
			<territory type="061">פולינזיה</territory>
			<territory type="062">דרום-מרכז אסיה</territory>
			<territory type="142">אסיה</territory>
			<territory type="143">מרכז אסיה</territory>
			<territory type="145">מערב אסיה</territory>
			<territory type="150">אירופה</territory>
			<territory type="151">מזרח אירופה</territory>
			<territory type="154">צפון אירופה</territory>
			<territory type="155">מערב אירופה</territory>
			<territory type="172">חבר המדינות העצמאיות</territory>
			<territory type="419">אמריקה הלטינית והקריביים</territory>
			<territory type="830">איי התעלה</territory>
			<territory type="AD">אנדורה</territory>
			<territory type="AE">איחוד האמירויות הערביות</territory>
			<territory type="AF">אפגניסטן</territory>
			<territory type="AG">אנטיגואה וברבודה</territory>
			<territory type="AI">אנגילה</territory>
			<territory type="AL">אלבניה</territory>
			<territory type="AM">ארמניה</territory>
			<territory type="AN">אנטילים הולנדיים</territory>
			<territory type="AO">אנגולה</territory>
			<territory type="AQ">אנטארקטיקה</territory>
			<territory type="AR">ארגנטינה</territory>
			<territory type="AS">סמואה האמריקנית</territory>
			<territory type="AT">אוסטריה</territory>
			<territory type="AU">אוסטרליה</territory>
			<territory type="AW">ארובה</territory>
			<territory type="AX">איי אלנד</territory>
			<territory type="AZ">אזרביג'ן</territory>
			<territory type="BA">בוסניה והרצגובינה</territory>
			<territory type="BB">ברבדוס</territory>
			<territory type="BD">בנגלדש</territory>
			<territory type="BE">בלגיה</territory>
			<territory type="BF">בורקינה פאסו</territory>
			<territory type="BG">בולגריה</territory>
			<territory type="BH">בחריין</territory>
			<territory type="BI">בורונדי</territory>
			<territory type="BJ">בנין</territory>
			<territory type="BL">סנט ברתולומיאו</territory>
			<territory type="BM">ברמודה</territory>
			<territory type="BN">ברוניי</territory>
			<territory type="BO">בוליביה</territory>
			<territory type="BR">ברזיל</territory>
			<territory type="BS">איי באהאמה</territory>
			<territory type="BT">בהוטן</territory>
			<territory type="BV">איי בובה</territory>
			<territory type="BW">בוטסוואנה</territory>
			<territory type="BY">בלארוס</territory>
			<territory type="BZ">בליז</territory>
			<territory type="CA">קנדה</territory>
			<territory type="CC">איי קוקוס</territory>
			<territory type="CD">הרפובליקה הדמוקרטית של קונגו</territory>
			<territory type="CF">הרפובליקה של מרכז אפריקה</territory>
			<territory type="CG">קונגו</territory>
			<territory type="CH">שווייץ</territory>
			<territory type="CI">חוף השנהב</territory>
			<territory type="CK">איי קוק</territory>
			<territory type="CL">צ׳ילה</territory>
			<territory type="CM">קמרון</territory>
			<territory type="CN">סין</territory>
			<territory type="CO">קולומביה</territory>
			<territory type="CR">קוסטה ריקה</territory>
			<territory type="CS">סרביה ומונטנגרו</territory>
			<territory type="CU">קובה</territory>
			<territory type="CV">כף ורדה</territory>
			<territory type="CX">איי כריסטמס</territory>
			<territory type="CY">קפריסין</territory>
			<territory type="CZ">צ׳כיה</territory>
			<territory type="DE">גרמניה</territory>
			<territory type="DJ">ג׳יבוטי</territory>
			<territory type="DK">דנמרק</territory>
			<territory type="DM">דומיניקה</territory>
			<territory type="DO">הרפובליקה הדומיניקנית</territory>
			<territory type="DZ">אלג׳יריה</territory>
			<territory type="EC">אקוודור</territory>
			<territory type="EE">אסטוניה</territory>
			<territory type="EG">מצרים</territory>
			<territory type="EH">סהרה המערבית</territory>
			<territory type="ER">אריתראה</territory>
			<territory type="ES">ספרד</territory>
			<territory type="ET">אתיופיה</territory>
			<territory type="FI">פינלנד</territory>
			<territory type="FJ">פיג׳י</territory>
			<territory type="FK">איי פוקלנד</territory>
			<territory type="FM">מיקרונזיה</territory>
			<territory type="FO">איי פארו</territory>
			<territory type="FR">צרפת</territory>
			<territory type="GA">גאבון</territory>
			<territory type="GB">בריטניה</territory>
			<territory type="GD">גרנדה</territory>
			<territory type="GE">גאורגיה</territory>
			<territory type="GF">גיאנה הצרפתית</territory>
			<territory type="GG">גרנסי</territory>
			<territory type="GH">גאנה</territory>
			<territory type="GI">גיברלטר</territory>
			<territory type="GL">גרינלנד</territory>
			<territory type="GM">גמביה</territory>
			<territory type="GN">גיניאה</territory>
			<territory type="GP">גוואדלופ</territory>
			<territory type="GQ">גיניאה המשוונית</territory>
			<territory type="GR">יוון</territory>
			<territory type="GS">ג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומיים</territory>
			<territory type="GT">גווטמלה</territory>
			<territory type="GU">גואם</territory>
			<territory type="GW">גיניאה-ביסאו</territory>
			<territory type="GY">גיאנה</territory>
			<territory type="HK">הונג קונג</territory>
			<territory type="HM">איי הרד ואיי מקדונלנד</territory>
			<territory type="HN">הונדורס</territory>
			<territory type="HR">קרואטיה</territory>
			<territory type="HT">האיטי</territory>
			<territory type="HU">הונגריה</territory>
			<territory type="ID">אינדונזיה</territory>
			<territory type="IE">אירלנד</territory>
			<territory type="IL">ישראל</territory>
			<territory type="IM">האי מאן</territory>
			<territory type="IN">הודו</territory>
			<territory type="IO">טריטוריה בריטית באוקיאנוס ההודי</territory>
			<territory type="IQ">עירק</territory>
			<territory type="IR">איראן</territory>
			<territory type="IS">איסלנד</territory>
			<territory type="IT">איטליה</territory>
			<territory type="JE">ג'רסי</territory>
			<territory type="JM">ג׳מייקה</territory>
			<territory type="JO">ירדן</territory>
			<territory type="JP">יפן</territory>
			<territory type="KE">קניה</territory>
			<territory type="KG">קירגיזסטן</territory>
			<territory type="KH">קמבודיה</territory>
			<territory type="KI">קיריבאטי</territory>
			<territory type="KM">קומורוס</territory>
			<territory type="KN">סנט קיטס ונוויס</territory>
			<territory type="KP">צפון קוריאה</territory>
			<territory type="KR">דרום קוריאה</territory>
			<territory type="KW">כווית</territory>
			<territory type="KY">איי קיימן</territory>
			<territory type="KZ">קזחסטן</territory>
			<territory type="LA">לאוס</territory>
			<territory type="LB">לבנון</territory>
			<territory type="LC">סנט לוסיה</territory>
			<territory type="LI">ליכטנשטיין</territory>
			<territory type="LK">סרי לנקה</territory>
			<territory type="LR">ליבריה</territory>
			<territory type="LS">לסוטו</territory>
			<territory type="LT">ליטא</territory>
			<territory type="LU">לוקסמבורג</territory>
			<territory type="LV">לטביה</territory>
			<territory type="LY">לוב</territory>
			<territory type="MA">מרוקו</territory>
			<territory type="MC">מונקו</territory>
			<territory type="MD">מולדובה</territory>
			<territory type="ME">מונטנגרו</territory>
			<territory type="MF">סנט מרטין</territory>
			<territory type="MG">מדגסקר</territory>
			<territory type="MH">איי מרשל</territory>
			<territory type="MK">מקדוניה</territory>
			<territory type="ML">מאלי</territory>
			<territory type="MM">מייאנמאר</territory>
			<territory type="MN">מונגוליה</territory>
			<territory type="MO">מקאו</territory>
			<territory type="MP">איי מריאנה הצפוניים</territory>
			<territory type="MQ">מרטיניק</territory>
			<territory type="MR">מאוריטניה</territory>
			<territory type="MS">מונסראט</territory>
			<territory type="MT">מלטה</territory>
			<territory type="MU">מאוריציוס</territory>
			<territory type="MV">מלדיבים</territory>
			<territory type="MW">מלאווי</territory>
			<territory type="MX">מקסיקו</territory>
			<territory type="MY">מלזיה</territory>
			<territory type="MZ">מוזמביק</territory>
			<territory type="NA">נמיביה</territory>
			<territory type="NC">קלדוניה החדשה</territory>
			<territory type="NE">ניז׳ר</territory>
			<territory type="NF">איי נורפוק</territory>
			<territory type="NG">ניגריה</territory>
			<territory type="NI">ניקרגואה</territory>
			<territory type="NL">הולנד</territory>
			<territory type="NO">נורווגיה</territory>
			<territory type="NP">נפאל</territory>
			<territory type="NR">נאורו</territory>
			<territory type="NU">ניווה</territory>
			<territory type="NZ">ניו זילנד</territory>
			<territory type="OM">עומאן</territory>
			<territory type="PA">פנמה</territory>
			<territory type="PE">פרו</territory>
			<territory type="PF">פולינזיה הצרפתית</territory>
			<territory type="PG">פפואה גיניאה החדשה</territory>
			<territory type="PH">פיליפינים</territory>
			<territory type="PK">פקיסטן</territory>
			<territory type="PL">פולין</territory>
			<territory type="PM">סנט פייר ומיקלון</territory>
			<territory type="PN">פיטקרן</territory>
			<territory type="PR">פורטו ריקו</territory>
			<territory type="PS">הרשות הפלשתינית</territory>
			<territory type="PT">פורטוגל</territory>
			<territory type="PW">פאלאו</territory>
			<territory type="PY">פרגוואי</territory>
			<territory type="QA">קטר</territory>
			<territory type="QO">QO</territory>
			<territory type="QU">האיחוד האירופי</territory>
			<territory type="RE">ראוניון</territory>
			<territory type="RO">רומניה</territory>
			<territory type="RS">סרביה</territory>
			<territory type="RU">רוסיה</territory>
			<territory type="RW">רואנדה</territory>
			<territory type="SA">ערב הסעודית</territory>
			<territory type="SB">איי שלמה</territory>
			<territory type="SC">איי סיישל</territory>
			<territory type="SD">סודן</territory>
			<territory type="SE">שוודיה</territory>
			<territory type="SG">סינגפור</territory>
			<territory type="SH">סנט הלנה</territory>
			<territory type="SI">סלובניה</territory>
			<territory type="SJ">סוולבארד וז׳אן מאיין</territory>
			<territory type="SK">סלובקיה</territory>
			<territory type="SL">סיירה לאונה</territory>
			<territory type="SM">סן מרינו</territory>
			<territory type="SN">סנגל</territory>
			<territory type="SO">סומליה</territory>
			<territory type="SR">סורינם</territory>
			<territory type="ST">סאו טומה ופרינסיפה</territory>
			<territory type="SV">אל סלבדור</territory>
			<territory type="SY">סוריה</territory>
			<territory type="SZ">סווזילנד</territory>
			<territory type="TC">איי טורקס וקאיקוס</territory>
			<territory type="TD">צ׳אד</territory>
			<territory type="TF">טריטוריות דרומיות של צרפת</territory>
			<territory type="TG">טוגו</territory>
			<territory type="TH">תאילנד</territory>
			<territory type="TJ">טג׳יקיסטן</territory>
			<territory type="TK">טוקלאו</territory>
			<territory type="TL">מזרח טימור</territory>
			<territory type="TM">טורקמניסטן</territory>
			<territory type="TN">תוניסיה</territory>
			<territory type="TO">טונגה</territory>
			<territory type="TR">טורקיה</territory>
			<territory type="TT">טרינידד וטובגו</territory>
			<territory type="TV">טובלו</territory>
			<territory type="TW">טייוואן</territory>
			<territory type="TZ">טנזניה</territory>
			<territory type="UA">אוקראינה</territory>
			<territory type="UG">אוגנדה</territory>
			<territory type="UM">איים קטנים שלחוף ארצות הברית</territory>
			<territory type="US">ארצות הברית</territory>
			<territory type="UY">אורוגוואי</territory>
			<territory type="UZ">אוזבקיסטן</territory>
			<territory type="VA">ותיקן</territory>
			<territory type="VC">סנט וינסנט והגרנדינים</territory>
			<territory type="VE">ונצואלה</territory>
			<territory type="VG">איי הבתולה הבריטיים</territory>
			<territory type="VI">איי הבתולה האמריקניים</territory>
			<territory type="VN">וייטנאם</territory>
			<territory type="VU">ונואטו</territory>
			<territory type="WF">איי ווליס ופוטונה</territory>
			<territory type="WS">סמואה</territory>
			<territory type="YE">תימן</territory>
			<territory type="YT">מאיוט</territory>
			<territory type="ZA">דרום אפריקה</territory>
			<territory type="ZM">זמביה</territory>
			<territory type="ZW">זימבאבווה</territory>
			<territory type="ZZ">איזור לא ידוע או לא תקף</territory>
		</territories>
		<variants>
			<variant type="1901">כתיב גרמני מסורתי</variant>
			<variant type="AREVELA">מזרח ארמנית</variant>
			<variant type="AREVMDA">מערב ארמנית</variant>
			<variant type="MONOTON">מונוטונית</variant>
			<variant type="POSIX">מחשב</variant>
		</variants>
		<keys>
			<key type="calendar">לוח שנה</key>
			<key type="collation">מיון</key>
			<key type="currency">מטבע</key>
		</keys>
		<types>
			<type type="big5han" key="collation">מיון סינית מסורתית</type>
			<type type="buddhist" key="calendar">לוח שנה בודהיסטי</type>
			<type type="chinese" key="calendar">לוח שנה סיני</type>
			<type type="direct" key="collation">מיון ישיר</type>
			<type type="gb2312han" key="collation">מיון סינית מודרנית</type>
			<type type="gregorian" key="calendar">לוח שנה גרגוריאני</type>
			<type type="hebrew" key="calendar">לוח שנה עברי</type>
			<type type="islamic" key="calendar">לוח שנה מוסלמי</type>
			<type type="islamic-civil" key="calendar">לוח שנה מוסלמי-אזרחי</type>
			<type type="japanese" key="calendar">לוח שנה יפני</type>
			<type type="phonebook" key="collation">מיון ספר טלפונים</type>
			<type type="pinyin" key="collation">מיון פיניין</type>
			<type type="traditional" key="collation">מיון מסורתי</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ארה&quot;ב</measurementSystemName>
			<measurementSystemName type="metric">מטרי</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">{0}</codePattern>
			<codePattern type="script">{0}</codePattern>
			<codePattern type="territory">{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[א-י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק-ת]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ֽ ׄ ְ-ֹ ֻ ׂ ׁ ּ ֿ ־ ׳ ״ a-z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ינו</month>
							<month type="2">פבר</month>
							<month type="3">מרץ</month>
							<month type="4">אפר</month>
							<month type="5">מאי</month>
							<month type="6">יונ</month>
							<month type="7">יול</month>
							<month type="8">אוג</month>
							<month type="9">ספט</month>
							<month type="10">אוק</month>
							<month type="11">נוב</month>
							<month type="12">דצמ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ינואר</month>
							<month type="2">פברואר</month>
							<month type="3">מרץ</month>
							<month type="4">אפריל</month>
							<month type="5">מאי</month>
							<month type="6">יוני</month>
							<month type="7">יולי</month>
							<month type="8">אוגוסט</month>
							<month type="9">ספטמבר</month>
							<month type="10">אוקטובר</month>
							<month type="11">נובמבר</month>
							<month type="12">דצמבר</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="3">מרס</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="3">מרס</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">א</day>
							<day type="mon">ב</day>
							<day type="tue">ג</day>
							<day type="wed">ד</day>
							<day type="thu">ה</day>
							<day type="fri">ו</day>
							<day type="sat">ש</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">יום ראשון</day>
							<day type="mon">יום שני</day>
							<day type="tue">יום שלישי</day>
							<day type="wed">יום רביעי</day>
							<day type="thu">יום חמישי</day>
							<day type="fri">יום שישי</day>
							<day type="sat">שבת</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">א</day>
							<day type="mon">ב</day>
							<day type="tue">ג</day>
							<day type="wed">ד</day>
							<day type="thu">ה</day>
							<day type="fri">ו</day>
							<day type="sat">ש</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">רבעון 1</quarter>
							<quarter type="2">רבעון 2</quarter>
							<quarter type="3">רבעון 3</quarter>
							<quarter type="4">רבעון 4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">רבעון 1</quarter>
							<quarter type="2">רבעון 2</quarter>
							<quarter type="3">רבעון 3</quarter>
							<quarter type="4">רבעון 4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>לפנה&quot;צ</am>
				<pm>אחה&quot;צ</pm>
				<eras>
					<eraNames>
						<era type="0">לפני הספירה</era>
						<era type="1">לספירה</era>
					</eraNames>
					<eraAbbr>
						<era type="0">לפנה״ס</era>
						<era type="1">לסה״נ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">EEEE dd/MM - EEEE dd/MM</greatestDifference>
							<greatestDifference id="d">EEEE dd/MM - EEEE dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">EEEE d MMM - EEEE d MMM</greatestDifference>
							<greatestDifference id="d">EEEE d MMM - EEEE d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH–HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm–HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm–HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH–HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">EEEE dd/MM/yy - EEEE dd/MM/yy</greatestDifference>
							<greatestDifference id="d">EEEE dd/MM/yy - EEEE dd/MM/yy</greatestDifference>
							<greatestDifference id="y">EEEE dd/MM/yy - EEEE dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">EEEE d MMM - EEEE d MMM yyyy</greatestDifference>
							<greatestDifference id="d">EEEE d MMM - EEEE d MMM yyyy</greatestDifference>
							<greatestDifference id="y">EEEE d MMM yyyy - EEEE d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>תקופה</displayName>
					</field>
					<field type="year">
						<displayName>שנה</displayName>
					</field>
					<field type="month">
						<displayName>חודש</displayName>
					</field>
					<field type="week">
						<displayName>שבוע</displayName>
					</field>
					<field type="day">
						<displayName>יום</displayName>
						<relative type="0">היום</relative>
						<relative type="1">מחר</relative>
						<relative type="2">מחרתיים</relative>
						<relative type="3">בעוד שלושה ימים</relative>
						<relative type="-1">אתמול</relative>
						<relative type="-2">שלשום</relative>
						<relative type="-3">לפני שלושה ימים</relative>
					</field>
					<field type="weekday">
						<displayName>יום בשבוע</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dayperiod</displayName>
					</field>
					<field type="hour">
						<displayName>שעה</displayName>
					</field>
					<field type="minute">
						<displayName>דקה</displayName>
					</field>
					<field type="second">
						<displayName>שנייה</displayName>
					</field>
					<field type="zone">
						<displayName>אזור</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">תשרי</month>
							<month type="2">חשון</month>
							<month type="3">כסלו</month>
							<month type="4">טבת</month>
							<month type="5">שבט</month>
							<month type="6">אדר ראשון</month>
							<month type="7">אדר שני</month>
							<month type="8">ניסן</month>
							<month type="9">אייר</month>
							<month type="10">סיון</month>
							<month type="11">תמוז</month>
							<month type="12">אב</month>
							<month type="13">אלול</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>לפנה&quot;צ</am>
				<pm>אחה&quot;צ</pm>
				<eras>
					<eraAbbr>
						<era type="0">לבה&quot;ע</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">מוחרם</month>
							<month type="2">ספר</month>
							<month type="3">רביע אל-אוואל</month>
							<month type="4">רביע אל-תני</month>
							<month type="5">ג׳ומדה אל-אוואל</month>
							<month type="6">ג׳ומדה אל-תני</month>
							<month type="7">רג׳אב</month>
							<month type="8">שעבאן</month>
							<month type="9">ראמדן</month>
							<month type="10">שוואל</month>
							<month type="11">זו אל-QI'DAH</month>
							<month type="12">זו אל-חיג׳ה</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">שנת היג׳רה</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="japanese">
				<eras>
					<eraAbbr>
						<era type="0">טאיקה</era>
						<era type="24">נינג'ו</era>
						<era type="73">שוטוקו</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>שעון {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>לא ידוע</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>אנדורה</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>דובאי</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>קאבול</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>אנטיגואה</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>אנגווילה</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>טירנה</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>ירבאן</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>קורסאו</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>לואנדה</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>רות'רה</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>אמריקה/פאלמר</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>הקוטב הדרומי</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>שויה</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>מאוסון</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>דייויס</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ווסטוק</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>קאסיי</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>דומון ד'אורווי</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>מקמרדו</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>אמריקה/מנדוזה</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>אמריקה/ארגנטינה/סאן-חואן</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>אמריקה/קורדובה</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>בואנוס איירס</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>פאגו פאגו</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>וינה</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>אוסטרליה/פרת'</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>אוסטרליה/דרווין</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>אדלייד</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>אוסטרליה/ברוקן-היל</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>אוסטרליה/מלבורן</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>אוסטרליה/הוברט</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>אוסטרליה/סידני</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>אוסטרליה/בריסבן</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>ארובה</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>באקו</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>ברבדוס</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>דאקה</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>בריסל</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>ואגאדוגו</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>סופיה</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>בהרין</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>בוג'ומבורה</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>פורטו-נובו</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>ברמודה</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>ברוניי</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>לה פאז</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>ריאו ברנצ'ו</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>פורטו וולהו</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>בואה ויסטה</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>מנאוס</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>קויאבה</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>קמפו גרנדה</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>בלם</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>אראגואינה</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>אמריקה/סאן-פאולו</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>אמריקה/בהיאה</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>פורטאלזה</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>מאסיו</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>רסיפה</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>נורונהה</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>נסאו</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>טימפו</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>גאבורונה</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>מינסק</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>בליז</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>אמריקה/ונקובר</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>אמריקה/דוסון-קריק</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>אמריקה/אדמנטון</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>אמריקה/וויניפוג</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>אמריקה/טורנטו</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>אמריקה/מונטריאול</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>אמריקה/הליפקס</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>קוקוס</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>קינשסה</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>לובומבאשי</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>בנגואי</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>בראזאווייל</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>ציריך</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>אבידג'ן</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>רארוטונגה</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>איי הפסחא</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>אמריקה/סנטיאגו</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>דואלה</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>אסיה/שנחאי</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>בוגוטה</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>קוסטה ריקה</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>הוואנה</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>קייפ ורדה</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>איי חג המולד</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>ניקוסיה</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>ברלין</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>ג'יבאוטי</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>קופנהגן</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>דומיניקה</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>סנטו דומינגו</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>אלג'יר</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>פסיפי/גלאפגוס</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>גוויקיל</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>טאלין</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>קהיר</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>אל עיון</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>אסמרה</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>אטלנטי/קנרי</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>סאוטה</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>אירופה/מדריד</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>אדיס אבבה</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>הלסינקי</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>פיג'י</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>סטנלי</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>טרוק</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>פונפה</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>קוסרה</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>פארו</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>פריס</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>ליברווייל</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>אירופה/לונדון</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>גרנדה</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>טביליסי</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>קאיין</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>אקרה</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>גיברלטר</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>טולה</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>גודת'אב</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>סקורסביסונד</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>דנמרקסהוון</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>באנג'ול</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>קונאקרי</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>גוואדלופ</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>מאלאבו</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>אתונה</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>איי ג'ורג'יה הדרומית</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>גוואטמלה</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>גואם</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>ביסאו</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>גוינה</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>הונג קונג</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>פורט או פרינס</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>בודפשט</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>אסיה/ג'קרטה</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>מאקאסאר</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ג'איאפורה</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>דבלין</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>ירושלים</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>איי צ'גוס</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>בגדד</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>טהרן</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>רייקיאוויק</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>רומא</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>ג'מייקה</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>רבת עמון</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>טוקיו</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>ניירובי</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>בישקק</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>פנום פן</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>אנדרבורי</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>קיריטימאטי</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>טאראווה</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>קומורו</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>סנט קיטס</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>צפון קוריאה</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>דרום קוריאה</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>כווית</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>קיימן</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>אקטאו</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>אסיה/אורל</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>אקטובה</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>אלמאטי</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>וינטיאן</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>ביירות</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>סנט לוצ'יה</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>ואדוז</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>קולומבו</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>מונרוביה</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>מאסרו</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>וילניאוס</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>לוקסמבורג</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>ריגה</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>טריפולי</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>קזבלנקה</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>מונקו</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>קישינב</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>אנטננרבינו</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>מאג'ורו</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>באמאקו</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>ראנגון</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>חובד</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>אולאאנבטאר</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>צ'ואיבלסאן</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>מקאו</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>סאיפאן</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>מרטיניק</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>נוקשוט</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>מונטסראט</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>מאלטה</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>מאוריטיוס</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>מולדוביה</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>בלנטיר</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>אמריקה/מזטלן</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>אמריקה/מונטריי</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>אמריקה/מקסיקו סיטי</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>אמריקה/קנקון</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>קואלה לומפור</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>מאפוטו</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>ווינדהוק</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>נומאה</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>ניאמיי</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>איי נורפוק</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>לאגוס</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>מנאגואה</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>אמסטרדם</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>אוסלו</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>קטמנדו</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>נאורו</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>ניווה</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>פסיפי/אוקלנד</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>מוסקט</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>פנמה</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>לימה</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>פסיפי/טהיטי</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>איי מרקיז</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>איי גמביר</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>פורט מורנסבי</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>מנילה</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>קאראצ'י</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>ורשה</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>מיקלון</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>פיטקרן</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>פוארטו ריקו</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>עזה</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>האיים האזורים</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>אירופה/ליסבון</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>פלאו</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>אסונסיון</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>קתר</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>ריונין</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>בוקרשט</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>אירופה/מוסקבה</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>אירופה/סמרה</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>איה/אומסק</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>אסיה/נובוסיבירסק</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>קיגאלי</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>ריאד</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>גואדלקנל</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>מאהה</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>חרטום</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>שטוקהולם</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>סינגפור</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>סנט הלנה</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>פריטאון</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>דאקאר</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>מוגדישו</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>פרמאריבו</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>סאו טומה</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>סלבדור</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>דמשק</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>מבאבאנה</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>גרנד טורק</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>נג'מנה</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>קרגואלן</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>לומה</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>בנקוק</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>דושנבה</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>פאקאופו</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>דילי</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>אשחבאד</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>תוניסיה</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>טונגטאפו</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>איסטנבול</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>נמל ספרד</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>פונאפוטי</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>טייפה</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>דאר א-סאלם</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>אירופה/קייב</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>קמפלה</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>מידוויי</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>ג'ונסטון</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>וואק</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>פסיפי/הונולולו</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>זמן אלסקה</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>אמריקה/לוס-אנג'לס</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>אמריקה/פיניקס</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>אמריקה/שיפרוק</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>אמריקה/דנוור</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>אמריקה/צפון דקוטה/מרכז</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>אמריקה/שיקגו</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>אינדיאנפוליס</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>אמריקה/לואיסוויל</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>אמריקה/דטרויט</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>אמריקה/ניו-יורק</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>מונטווידאו</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>אסיה/סמרקנד</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>אסיה/טשקנט</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>סנט וינסנט</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>קאראקאס</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>טורטולה</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>סנט תומאס</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>סייגון</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>אפטה</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>ואליס</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>אפיה</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>עדן</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>מאיוט</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>יוהנסבורג</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>לוסאקה</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>הררה</exemplarCity>
			</zone>
			<metazone type="India">
				<short>
					<standard>IST (הודו)</standard>
				</short>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>שעון ישראל</generic>
				</long>
				<short>
					<standard>IST</standard>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>פזו אנדורי</displayName>
			</currency>
			<currency type="AED">
				<displayName>דירהם של איחוד הנסיכויות הערביות</displayName>
			</currency>
			<currency type="AFN">
				<displayName>אפגני</displayName>
			</currency>
			<currency type="ALL">
				<displayName>לק אלבני</displayName>
			</currency>
			<currency type="AMD">
				<displayName>דראם ארמני</displayName>
			</currency>
			<currency type="ANG">
				<displayName>גילדר [ANG]</displayName>
			</currency>
			<currency type="AOA">
				<displayName>קואנזה אנגולי</displayName>
			</currency>
			<currency type="AON">
				<displayName>קואנזה חדש אנגולי</displayName>
			</currency>
			<currency type="AOR">
				<displayName>קואנזה רג'וסטדו</displayName>
			</currency>
			<currency type="ARP">
				<displayName>פזו ארגנטינאי (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>פזו ארגנטינאי</displayName>
			</currency>
			<currency type="ATS">
				<displayName>שילינג אוסטרי</displayName>
			</currency>
			<currency type="AUD">
				<displayName>דולר אוסטרלי</displayName>
			</currency>
			<currency type="AWG">
				<displayName>פלורין</displayName>
			</currency>
			<currency type="AZM">
				<displayName>מאנאט</displayName>
			</currency>
			<currency type="AZN">
				<displayName>מאנאט אזרביג׳ני</displayName>
			</currency>
			<currency type="BAD">
				<displayName>דינר של בוסניה־הרצגובינה</displayName>
			</currency>
			<currency type="BAM">
				<displayName>מארק בר המרה</displayName>
			</currency>
			<currency type="BBD">
				<displayName>דולר ברבדיאני</displayName>
			</currency>
			<currency type="BDT">
				<displayName>טאקה</displayName>
			</currency>
			<currency type="BEC">
				<displayName>פרנק בלגי (בר המרה)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>פרנק בלגי</displayName>
			</currency>
			<currency type="BGL">
				<displayName>לב</displayName>
			</currency>
			<currency type="BGN">
				<displayName>לב בולגרי</displayName>
			</currency>
			<currency type="BHD">
				<displayName>דינר בחרייני</displayName>
			</currency>
			<currency type="BIF">
				<displayName>פרנק בורונדי</displayName>
			</currency>
			<currency type="BMD">
				<displayName>דולר ברמודה</displayName>
			</currency>
			<currency type="BND">
				<displayName>דולר ברוניי</displayName>
			</currency>
			<currency type="BOB">
				<displayName>בוליביאנו</displayName>
			</currency>
			<currency type="BOP">
				<displayName>פזו בוליבי</displayName>
			</currency>
			<currency type="BRB">
				<displayName>קרוזיארו</displayName>
			</currency>
			<currency type="BRC">
				<displayName>קרוזדו</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ריאל ברזילאי</displayName>
			</currency>
			<currency type="BSD">
				<displayName>דולר בהאמי</displayName>
			</currency>
			<currency type="BTN">
				<displayName>נגולטרום</displayName>
			</currency>
			<currency type="BWP">
				<displayName>פולה</displayName>
			</currency>
			<currency type="BZD">
				<displayName>דולר בליזאי</displayName>
			</currency>
			<currency type="CAD">
				<displayName>דולר קנדי</displayName>
			</currency>
			<currency type="CDF">
				<displayName>פרנק קונגיני</displayName>
			</currency>
			<currency type="CHF">
				<displayName>פרנק שוויצרי</displayName>
			</currency>
			<currency type="CLP">
				<displayName>פזו צ'ילאני</displayName>
			</currency>
			<currency type="CNY">
				<displayName>יואן</displayName>
			</currency>
			<currency type="COP">
				<displayName>פזו קולומביאני</displayName>
			</currency>
			<currency type="CRC">
				<displayName>קולון</displayName>
			</currency>
			<currency type="CSD">
				<displayName>דינר סרבי ישן</displayName>
			</currency>
			<currency type="CSK">
				<displayName>קורונה צ'כית [1953-1992]</displayName>
			</currency>
			<currency type="CUP">
				<displayName>פזו קובני</displayName>
			</currency>
			<currency type="CYP">
				<displayName>לירה קפריסאית</displayName>
			</currency>
			<currency type="CZK">
				<displayName>קורונה צ'כית</displayName>
			</currency>
			<currency type="DDM">
				<displayName>מרק מזרח גרמני</displayName>
			</currency>
			<currency type="DEM">
				<displayName>מרק גרמני</displayName>
			</currency>
			<currency type="DJF">
				<displayName>פרנק [DJF]</displayName>
			</currency>
			<currency type="DKK">
				<displayName>כתר דני</displayName>
			</currency>
			<currency type="DOP">
				<displayName>פזו</displayName>
			</currency>
			<currency type="DZD">
				<displayName>דינר אלג'ירי</displayName>
			</currency>
			<currency type="ECS">
				<displayName>סוקר</displayName>
			</currency>
			<currency type="EEK">
				<displayName>קרון אסטוני</displayName>
			</currency>
			<currency type="EGP">
				<displayName>לירה מיצרית</displayName>
			</currency>
			<currency type="EQE">
				<displayName>אקוולה</displayName>
			</currency>
			<currency type="ERN">
				<displayName>נאקפה</displayName>
			</currency>
			<currency type="ESA">
				<displayName>פזטה [ESA]</displayName>
			</currency>
			<currency type="ESB">
				<displayName>פזטה [ESB]</displayName>
			</currency>
			<currency type="ESP">
				<displayName>פסטה ספרדי</displayName>
			</currency>
			<currency type="ETB">
				<displayName>ביר</displayName>
			</currency>
			<currency type="EUR">
				<displayName>אירו</displayName>
			</currency>
			<currency type="FIM">
				<displayName>מרק פיני</displayName>
			</currency>
			<currency type="FJD">
				<displayName>דולר פיג'י</displayName>
			</currency>
			<currency type="FKP">
				<displayName>פאונד</displayName>
			</currency>
			<currency type="FRF">
				<displayName>פרנק צרפתי</displayName>
			</currency>
			<currency type="GBP">
				<displayName>לירה שטרלינג</displayName>
			</currency>
			<currency type="GEL">
				<displayName>לרי</displayName>
			</currency>
			<currency type="GIP">
				<displayName>פאונד גיברלטר</displayName>
			</currency>
			<currency type="GMD">
				<displayName>דלסי</displayName>
			</currency>
			<currency type="GNF">
				<displayName>פרנק גינאי</displayName>
			</currency>
			<currency type="GRD">
				<displayName>דרכמה</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>קצאל</displayName>
			</currency>
			<currency type="GWP">
				<displayName>פזו גינאי</displayName>
			</currency>
			<currency type="GYD">
				<displayName>דולר גיאני</displayName>
			</currency>
			<currency type="HKD">
				<displayName>דולר הונג קונגי</displayName>
			</currency>
			<currency type="HNL">
				<displayName>למפירה</displayName>
			</currency>
			<currency type="HRK">
				<displayName>קונה קרואטי</displayName>
			</currency>
			<currency type="HTG">
				<displayName>גארד</displayName>
			</currency>
			<currency type="HUF">
				<displayName>פורינט הונגרי</displayName>
			</currency>
			<currency type="IDR">
				<displayName>רופיה אינדונזית</displayName>
			</currency>
			<currency type="IEP">
				<displayName>לירה אירית</displayName>
			</currency>
			<currency type="ILP">
				<displayName>לירה ישראלית</displayName>
				<symbol>ל״י</symbol>
			</currency>
			<currency type="ILS">
				<displayName>ש&quot;ח</displayName>
				<displayName count="other">שקלים חדשים</displayName>
				<symbol>₪</symbol>
			</currency>
			<currency type="INR">
				<displayName>רופי הודית</displayName>
			</currency>
			<currency type="IQD">
				<displayName>דינר עירקי</displayName>
			</currency>
			<currency type="IRR">
				<displayName>ריאל איראני</displayName>
			</currency>
			<currency type="ISK">
				<displayName>קרונה איסלנדית</displayName>
			</currency>
			<currency type="ITL">
				<displayName>לירה איטלקית</displayName>
			</currency>
			<currency type="JMD">
				<displayName>דולר ג'מאיקני</displayName>
			</currency>
			<currency type="JOD">
				<displayName>דינר ירדני</displayName>
			</currency>
			<currency type="JPY">
				<displayName>ין יפני</displayName>
			</currency>
			<currency type="KES">
				<displayName>שילינג קנייאתי</displayName>
			</currency>
			<currency type="KGS">
				<displayName>סום קירגיזי</displayName>
			</currency>
			<currency type="KHR">
				<displayName>ריל</displayName>
			</currency>
			<currency type="KMF">
				<displayName>פרנק קומורואי</displayName>
			</currency>
			<currency type="KPW">
				<displayName>וון צפון קוראני</displayName>
			</currency>
			<currency type="KRW">
				<displayName>וון דרום קוראני</displayName>
			</currency>
			<currency type="KWD">
				<displayName>דינר כוויתי</displayName>
			</currency>
			<currency type="KYD">
				<displayName>דולר קיימאני</displayName>
			</currency>
			<currency type="KZT">
				<displayName>טנגה</displayName>
			</currency>
			<currency type="LAK">
				<displayName>קיפ</displayName>
			</currency>
			<currency type="LBP">
				<displayName>לירה לבנונית</displayName>
			</currency>
			<currency type="LKR">
				<displayName>רופי סרי לנקי</displayName>
			</currency>
			<currency type="LRD">
				<displayName>דולר ליברי</displayName>
			</currency>
			<currency type="LSL">
				<displayName>לוטי</displayName>
			</currency>
			<currency type="LTL">
				<displayName>ליטא ליטאי</displayName>
			</currency>
			<currency type="LUF">
				<displayName>פרנק לוקסמבורגי</displayName>
			</currency>
			<currency type="LVL">
				<displayName>לט</displayName>
			</currency>
			<currency type="LYD">
				<displayName>דינר לובי</displayName>
			</currency>
			<currency type="MAD">
				<displayName>דירהם מרוקאי</displayName>
			</currency>
			<currency type="MAF">
				<displayName>פרנק מאלי</displayName>
			</currency>
			<currency type="MDL">
				<displayName>ליאו מולדובני</displayName>
			</currency>
			<currency type="MGF">
				<displayName>פרנק מדגסקארי</displayName>
			</currency>
			<currency type="MMK">
				<displayName>קיאט</displayName>
			</currency>
			<currency type="MNT">
				<displayName>טוגרוג</displayName>
			</currency>
			<currency type="MOP">
				<displayName>פטקה</displayName>
			</currency>
			<currency type="MTL">
				<displayName>לירה מלטית</displayName>
			</currency>
			<currency type="MUR">
				<displayName>רופי מאוריציני</displayName>
			</currency>
			<currency type="MVR">
				<displayName>רופיה</displayName>
			</currency>
			<currency type="MWK">
				<displayName>קאווצ'ה</displayName>
			</currency>
			<currency type="MXN">
				<displayName>פזו מקסיקני</displayName>
			</currency>
			<currency type="MXP">
				<displayName>פזו מקסיקני (1861 - 1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>רינגיט מלזי</displayName>
			</currency>
			<currency type="MZM">
				<displayName>מטיקל</displayName>
			</currency>
			<currency type="NAD">
				<displayName>דולר נמיבי</displayName>
			</currency>
			<currency type="NGN">
				<displayName>נאירה</displayName>
			</currency>
			<currency type="NIO">
				<displayName>קורדובה</displayName>
			</currency>
			<currency type="NLG">
				<displayName>גילדר</displayName>
			</currency>
			<currency type="NOK">
				<displayName>כתר נורבגי</displayName>
			</currency>
			<currency type="NPR">
				<displayName>רופי נפאלי</displayName>
			</currency>
			<currency type="NZD">
				<displayName>דולר ניו זילנדי</displayName>
			</currency>
			<currency type="PAB">
				<displayName>בלבואה</displayName>
			</currency>
			<currency type="PEN">
				<displayName>סול פרואני חדש</displayName>
			</currency>
			<currency type="PGK">
				<displayName>קינה</displayName>
			</currency>
			<currency type="PHP">
				<displayName>פזו פיליפיני</displayName>
			</currency>
			<currency type="PKR">
				<displayName>רופי פקיסטני</displayName>
			</currency>
			<currency type="PLN">
				<displayName>זלוטי פולני</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>זלוטי (1950 - 1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>אסקודו</displayName>
			</currency>
			<currency type="PYG">
				<displayName>גווארני</displayName>
			</currency>
			<currency type="QAR">
				<displayName>ריאל קטארי</displayName>
			</currency>
			<currency type="ROL">
				<displayName>לאו</displayName>
			</currency>
			<currency type="RON">
				<displayName>לאו רומני חדש</displayName>
			</currency>
			<currency type="RSD">
				<displayName>דינר סרבי</displayName>
			</currency>
			<currency type="RUB">
				<displayName>רובל</displayName>
			</currency>
			<currency type="RUR">
				<displayName>רובל רוסי (1991 - 1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>פרנק רואנדי</displayName>
			</currency>
			<currency type="SAR">
				<displayName>ריאל סעודי</displayName>
			</currency>
			<currency type="SBD">
				<displayName>דולר איי שלמה</displayName>
			</currency>
			<currency type="SCR">
				<displayName>רופי סיישלי</displayName>
			</currency>
			<currency type="SDD">
				<displayName>דינר סודני</displayName>
			</currency>
			<currency type="SDP">
				<displayName>לירה סודנית</displayName>
			</currency>
			<currency type="SEK">
				<displayName>כתר שוודי</displayName>
			</currency>
			<currency type="SGD">
				<displayName>דולר סינגפורי</displayName>
			</currency>
			<currency type="SHP">
				<displayName>פאונד סנט הלני</displayName>
			</currency>
			<currency type="SIT">
				<displayName>טולאר סלובני</displayName>
			</currency>
			<currency type="SKK">
				<displayName>קורונה סלובקי</displayName>
			</currency>
			<currency type="SLL">
				<displayName>ליאון</displayName>
			</currency>
			<currency type="SOS">
				<displayName>שילינג סומאלי</displayName>
			</currency>
			<currency type="SRD">
				<displayName>דולר סורינאמי</displayName>
			</currency>
			<currency type="SRG">
				<displayName>גילדר סורינאמי</displayName>
			</currency>
			<currency type="STD">
				<displayName>דוברה</displayName>
			</currency>
			<currency type="SUR">
				<displayName>רובל סובייטי</displayName>
			</currency>
			<currency type="SYP">
				<displayName>לירה סורית</displayName>
			</currency>
			<currency type="SZL">
				<displayName>לילנגני</displayName>
			</currency>
			<currency type="THB">
				<displayName>בהט תאילנדי</displayName>
			</currency>
			<currency type="TJS">
				<displayName>סומוני טג'קיסטני</displayName>
			</currency>
			<currency type="TMM">
				<displayName>מנאט טורקמאני</displayName>
			</currency>
			<currency type="TND">
				<displayName>דינר טוניסאי</displayName>
			</currency>
			<currency type="TOP">
				<displayName>פאנגה</displayName>
			</currency>
			<currency type="TPE">
				<displayName>אסקודו טימוראי</displayName>
			</currency>
			<currency type="TRL">
				<displayName>לירה טורקית</displayName>
			</currency>
			<currency type="TRY">
				<displayName>לירה טורקית חדשה</displayName>
			</currency>
			<currency type="TTD">
				<displayName>דולר טרינידדי</displayName>
			</currency>
			<currency type="TWD">
				<displayName>דולר טאייוני חדש</displayName>
			</currency>
			<currency type="TZS">
				<displayName>שילינג טנזני</displayName>
			</currency>
			<currency type="UAH">
				<displayName>גריבנה אוקראיני</displayName>
			</currency>
			<currency type="UGS">
				<displayName>שילינג אוגנדי (1966 - 1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>שילינג אוגנדי</displayName>
			</currency>
			<currency type="USD">
				<displayName>דולר אמריקאי</displayName>
			</currency>
			<currency type="USN">
				<displayName>דולר אמריקאי (היום הבא)</displayName>
			</currency>
			<currency type="USS">
				<displayName>דולר אמריקאי (היום הזה)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>פזו אורוגוואי</displayName>
			</currency>
			<currency type="UZS">
				<displayName>סום אוזבקי</displayName>
			</currency>
			<currency type="VEB">
				<displayName>בוליבר ונצואלי</displayName>
			</currency>
			<currency type="VND">
				<displayName>דונג וייטנאמי</displayName>
			</currency>
			<currency type="VUV">
				<displayName>ואטו</displayName>
			</currency>
			<currency type="WST">
				<displayName>טלה</displayName>
			</currency>
			<currency type="XAF">
				<displayName>פרנק</displayName>
			</currency>
			<currency type="XAG">
				<displayName>כסף</displayName>
			</currency>
			<currency type="XAU">
				<displayName>זהב</displayName>
			</currency>
			<currency type="XCD">
				<displayName>דולר מזרח קריבי</displayName>
			</currency>
			<currency type="XDR">
				<displayName>זכויות משיכה מיוחדות</displayName>
			</currency>
			<currency type="XFO">
				<displayName>פרנק זהב</displayName>
			</currency>
			<currency type="XPD">
				<displayName>פלדיום</displayName>
			</currency>
			<currency type="XPT">
				<displayName>פלטינה</displayName>
			</currency>
			<currency type="XTS">
				<displayName>סימון למטרות בדיקה</displayName>
			</currency>
			<currency type="XXX">
				<displayName>סימון &quot;ללא מטבע&quot;</displayName>
			</currency>
			<currency type="YDD">
				<displayName>דינר תימני</displayName>
			</currency>
			<currency type="YER">
				<displayName>ריאל תימני</displayName>
			</currency>
			<currency type="YUD">
				<displayName>דינר יגוסלבי חדש</displayName>
			</currency>
			<currency type="YUM">
				<displayName>דינר יגוסלבי</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>ראנד דרום אפריקאי (כספי)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>ראנד דרום אפריקאי</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>קוואצ'ה</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>זאיר חדש</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>דולר זימבבואי</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} ימים</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} שעות</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} דקות</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} חודשים</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} שניות</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} שבועות</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} שנים</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>כן:כ</yesstr>
			<nostr>לא:ל</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�w##Locale/Data/sq_AL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sq"/>
		<territory type="AL"/>
	</identity>
</ldml>
PKpG[Q�'�wwLocale/Data/fr_BE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="fr"/>
		<territory type="BE"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H 'h' mm 'min' ss 's' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>du {0} au {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM 'au' E d MMM</greatestDifference>
							<greatestDifference id="d">E d 'au' E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM 'au' d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy 'a`' MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM 'au' E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d 'au' E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy 'au' E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM 'au' d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy 'au' d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<group>.</group>
		</symbols>
	</numbers>
</ldml>

PKpG[\��##Locale/Data/my_MM.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="my"/>
		<territory type="MM"/>
	</identity>
</ldml>
PKpG[t�Qѯ�Locale/Data/kam.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kam"/>
	</identity>
	<characters>
		<exemplarCharacters>[a-e g-o r-w y z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Mwei wa mbee</month>
							<month type="2">Mwei wa keli</month>
							<month type="3">Mwei wa katatu</month>
							<month type="4">Mwei wa kanne</month>
							<month type="5">Mwei wa katano</month>
							<month type="6">Mwei wa thanthatu</month>
							<month type="7">Mwei wa muonza</month>
							<month type="8">Mwei wa nyanya</month>
							<month type="9">Mwei wa kenda</month>
							<month type="10">Mwei wa ikumi</month>
							<month type="11">Mwei wa ikumi na imwe</month>
							<month type="12">Mwei wa ikumi na ili</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Mwei wa mbee</month>
							<month type="2">Mwei wa keli</month>
							<month type="3">Mwei wa katatu</month>
							<month type="4">Mwei wa kanne</month>
							<month type="5">Mwei wa katano</month>
							<month type="6">Mwei wa thanthatu</month>
							<month type="7">Mwei wa muonza</month>
							<month type="8">Mwei wa nyanya</month>
							<month type="9">Mwei wa kenda</month>
							<month type="10">Mwei wa ikumi</month>
							<month type="11">Mwei wa ikumi na imwe</month>
							<month type="12">Mwei wa ikumi na ili</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Jpl</day>
							<day type="mon">Jtt</day>
							<day type="tue">Jnn</day>
							<day type="wed">Jtn</day>
							<day type="thu">Alh</day>
							<day type="fri">Ijm</day>
							<day type="sat">Jms</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Jumapili</day>
							<day type="mon">Jumatatu</day>
							<day type="tue">Jumanne</day>
							<day type="wed">Jumatano</day>
							<day type="thu">Alamisi</day>
							<day type="fri">Ijumaa</day>
							<day type="sat">Jumamosi</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">mbee wa yesu</era>
						<era type="1">IY</era>
					</eraNames>
					<eraAbbr>
						<era type="0">MY</era>
						<era type="1">IY</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="KES">
				<displayName>Silingi ya Kenya</displayName>
				<symbol>KSh</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[!v]B##Locale/Data/sa_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sa"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[a�'OOLocale/Data/ha_GH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<territory type="GH"/>
	</identity>
	<alias source="ha_Latn_GH" path="//ldml"/>
</ldml>
PKpG[���u����Locale/Data/de.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.116 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="de"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abchasisch</language>
			<language type="ace">Aceh-Sprache</language>
			<language type="ach">Acholi-Sprache</language>
			<language type="ada">Adangme</language>
			<language type="ady">Adygai</language>
			<language type="ae">Avestisch</language>
			<language type="af">Afrikaans</language>
			<language type="afa">Afro-Asiatische Sprache</language>
			<language type="afh">Afrihili</language>
			<language type="ain">Ainu-Sprache</language>
			<language type="ak">Akan</language>
			<language type="akk">Akkadisch</language>
			<language type="ale">Aleutisch</language>
			<language type="alg">Algonkin-Sprachen</language>
			<language type="alt">Süd-Altaisch</language>
			<language type="am">Amharisch</language>
			<language type="an">Aragonesisch</language>
			<language type="ang">Altenglisch</language>
			<language type="anp">Angika</language>
			<language type="apa">Apachen-Sprache</language>
			<language type="ar">Arabisch</language>
			<language type="arc">Aramäisch</language>
			<language type="arn">Araukanisch</language>
			<language type="arp">Arapaho-Sprache</language>
			<language type="art">Kunstsprache</language>
			<language type="arw">Arawak-Sprachen</language>
			<language type="as">Assamesisch</language>
			<language type="ast">Asturianisch</language>
			<language type="ath">Athapaskische Sprachen</language>
			<language type="aus">Australische Sprachen</language>
			<language type="av">Awarisch</language>
			<language type="awa">Awadhi</language>
			<language type="ay">Aymara</language>
			<language type="az">Aserbaidschanisch</language>
			<language type="ba">Baschkirisch</language>
			<language type="bad">Banda-Sprache</language>
			<language type="bai">Bamileke-Sprache</language>
			<language type="bal">Belutschisch</language>
			<language type="ban">Balinesisch</language>
			<language type="bas">Basaa-Sprache</language>
			<language type="bat">Baltische Sprache</language>
			<language type="be">Weißrussisch</language>
			<language type="bej">Bedauye</language>
			<language type="bem">Bemba-Sprache</language>
			<language type="ber">Berbersprache</language>
			<language type="bg">Bulgarisch</language>
			<language type="bh">Biharisch</language>
			<language type="bho">Bhodschpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol-Sprache</language>
			<language type="bin">Bini-Sprache</language>
			<language type="bla">Blackfoot-Sprache</language>
			<language type="bm">Bambara-Sprache</language>
			<language type="bn">Bengalisch</language>
			<language type="bnt">Bantusprache</language>
			<language type="bo">Tibetisch</language>
			<language type="br">Bretonisch</language>
			<language type="bra">Braj-Bhakha</language>
			<language type="bs">Bosnisch</language>
			<language type="btk">Batak</language>
			<language type="bua">Burjatisch</language>
			<language type="bug">Buginesisch</language>
			<language type="byn">Blin</language>
			<language type="ca">Katalanisch</language>
			<language type="cad">Caddo</language>
			<language type="cai">Zentralamerikanische Indianersprache</language>
			<language type="car">Karibische Sprachen</language>
			<language type="cau">Kaukasische Sprache</language>
			<language type="cch">Atsam</language>
			<language type="ce">Tschetschenisch</language>
			<language type="ceb">Cebuano</language>
			<language type="cel">Keltische Sprache</language>
			<language type="ch">Chamorro-Sprache</language>
			<language type="chb">Chibcha-Sprachen</language>
			<language type="chg">Tschagataisch</language>
			<language type="chk">Trukesisch</language>
			<language type="chm">Tscheremissisch</language>
			<language type="chn">Chinook</language>
			<language type="cho">Choctaw</language>
			<language type="chp">Chipewyan</language>
			<language type="chr">Cherokee</language>
			<language type="chy">Cheyenne</language>
			<language type="cmc">Cham-Sprachen</language>
			<language type="co">Korsisch</language>
			<language type="cop">Koptisch</language>
			<language type="cpe">Kreolisch-Englische Sprache</language>
			<language type="cpf">Kreolisch-Französische Sprache</language>
			<language type="cpp">Kreolisch-Portugiesische Sprache</language>
			<language type="cr">Cree</language>
			<language type="crh">Krimtatarisch</language>
			<language type="crp">Kreolische Sprachen</language>
			<language type="cs">Tschechisch</language>
			<language type="csb">Kaschubisch</language>
			<language type="cu">Kirchenslawisch</language>
			<language type="cus">Kuschitische Sprache</language>
			<language type="cv">Tschuwaschisch</language>
			<language type="cy">Kymrisch</language>
			<language type="da">Dänisch</language>
			<language type="dak">Dakota-Sprache</language>
			<language type="dar">Darginisch</language>
			<language type="day">Dajak</language>
			<language type="de">Deutsch</language>
			<language type="de_AT">Österreichisches Deutsch</language>
			<language type="de_CH">Schweizer Hochdeutsch</language>
			<language type="del">Delaware-Sprache</language>
			<language type="den">Slavey</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka-Sprache</language>
			<language type="doi">Dogri</language>
			<language type="dra">Drawidische Sprache</language>
			<language type="dsb">Niedersorbisch</language>
			<language type="dua">Duala</language>
			<language type="dum">Mittelniederländisch</language>
			<language type="dv">Maledivisch</language>
			<language type="dyu">Dyula-Sprache</language>
			<language type="dz">Bhutanisch</language>
			<language type="ee">Ewe-Sprache</language>
			<language type="efi">Efik</language>
			<language type="egy">Ägyptisch</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Griechisch</language>
			<language type="elx">Elamisch</language>
			<language type="en">Englisch</language>
			<language type="en_AU">Australisches Englisch</language>
			<language type="en_CA">Kanadisches Englisch</language>
			<language type="en_GB">Britisches Englisch</language>
			<language type="en_US">Englisch (USA)</language>
			<language type="enm">Mittelenglisch</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanisch</language>
			<language type="es_419">Lateinamerikanisches Spanisch</language>
			<language type="es_ES">Iberisches Spanisch</language>
			<language type="et">Estnisch</language>
			<language type="eu">Baskisch</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Persisch</language>
			<language type="fan">Pangwe-Sprache</language>
			<language type="fat">Fanti-Sprache</language>
			<language type="ff">Ful</language>
			<language type="fi">Finnisch</language>
			<language type="fil">Filipino</language>
			<language type="fiu">Finnougrische Sprache</language>
			<language type="fj">Fidschianisch</language>
			<language type="fo">Färöisch</language>
			<language type="fon">Fon-Sprache</language>
			<language type="fr">Französisch</language>
			<language type="fr_CA">Kanadisches Französisch</language>
			<language type="fr_CH">Schweizer Französisch</language>
			<language type="frm">Mittelfranzösisch</language>
			<language type="fro">Altfranzösisch</language>
			<language type="frr">Nordfriesisch</language>
			<language type="frs">Ostfriesisch</language>
			<language type="fur">Friulisch</language>
			<language type="fy">Friesisch</language>
			<language type="ga">Irisch</language>
			<language type="gaa">Ga-Sprache</language>
			<language type="gay">Gayo</language>
			<language type="gba">Gbaya-Sprache</language>
			<language type="gd">Schottisches Gälisch</language>
			<language type="gem">Germanische Sprache</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbertesisch</language>
			<language type="gl">Galizisch</language>
			<language type="gmh">Mittelhochdeutsch</language>
			<language type="gn">Guarani</language>
			<language type="goh">Althochdeutsch</language>
			<language type="gon">Gondi-Sprache</language>
			<language type="gor">Mongondou</language>
			<language type="got">Gotisch</language>
			<language type="grb">Grebo-Sprache</language>
			<language type="grc">Altgriechisch</language>
			<language type="gsw">Schweizerdeutsch</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manx</language>
			<language type="gwi">Kutchin-Sprache</language>
			<language type="ha">Hausa</language>
			<language type="hai">Haida-Sprache</language>
			<language type="haw">Hawaiianisch</language>
			<language type="he">Hebräisch</language>
			<language type="hi">Hindi</language>
			<language type="hil">Hiligaynon-Sprache</language>
			<language type="him">Himachali</language>
			<language type="hit">Hethitisch</language>
			<language type="hmn">Miao-Sprachen</language>
			<language type="ho">Hiri-Motu</language>
			<language type="hr">Kroatisch</language>
			<language type="hsb">Obersorbisch</language>
			<language type="ht">Kreolisch</language>
			<language type="hu">Ungarisch</language>
			<language type="hup">Hupa</language>
			<language type="hy">Armenisch</language>
			<language type="hz">Herero-Sprache</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Indonesisch</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo-Sprache</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Ijo-Sprache</language>
			<language type="ik">Inupiak</language>
			<language type="ilo">Ilokano-Sprache</language>
			<language type="inc">Indoarische Sprache</language>
			<language type="ine">Indogermanische Sprache</language>
			<language type="inh">Ingush</language>
			<language type="io">Ido-Sprache</language>
			<language type="ira">Iranische Sprache</language>
			<language type="iro">Irokesische Sprachen</language>
			<language type="is">Isländisch</language>
			<language type="it">Italienisch</language>
			<language type="iu">Inukitut</language>
			<language type="ja">Japanisch</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Jüdisch-Persisch</language>
			<language type="jrb">Jüdisch-Arabisch</language>
			<language type="jv">Javanisch</language>
			<language type="ka">Georgisch</language>
			<language type="kaa">Karakalpakisch</language>
			<language type="kab">Kabylisch</language>
			<language type="kac">Kachin-Sprache</language>
			<language type="kaj">Jju</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karenisch</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardinisch</language>
			<language type="kcg">Tyap</language>
			<language type="kfo">Koro</language>
			<language type="kg">Kongo</language>
			<language type="kha">Khasi-Sprache</language>
			<language type="khi">Khoisan-Sprache</language>
			<language type="kho">Sakisch</language>
			<language type="ki">Kikuyu-Sprache</language>
			<language type="kj">Kwanyama</language>
			<language type="kk">Kasachisch</language>
			<language type="kl">Grönländisch</language>
			<language type="km">Kambodschanisch</language>
			<language type="kmb">Kimbundu-Sprache</language>
			<language type="kn">Kannada</language>
			<language type="ko">Koreanisch</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosraeanisch</language>
			<language type="kpe">Kpelle-Sprache</language>
			<language type="kr">Kanuri-Sprache</language>
			<language type="krc">Karatschaiisch-Balkarisch</language>
			<language type="krl">Karelisch</language>
			<language type="kro">Kru-Sprachen</language>
			<language type="kru">Oraon-Sprache</language>
			<language type="ks">Kaschmirisch</language>
			<language type="ku">Kurdisch</language>
			<language type="kum">Kumükisch</language>
			<language type="kut">Kutenai-Sprache</language>
			<language type="kv">Komi-Sprache</language>
			<language type="kw">Kornisch</language>
			<language type="ky">Kirgisisch</language>
			<language type="la">Latein</language>
			<language type="lad">Judenspanisch</language>
			<language type="lah">Lahnda</language>
			<language type="lam">Lamba-Sprache</language>
			<language type="lb">Luxemburgisch</language>
			<language type="lez">Lesgisch</language>
			<language type="lg">Ganda-Sprache</language>
			<language type="li">Limburgisch</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laotisch</language>
			<language type="lol">Mongo</language>
			<language type="loz">Rotse-Sprache</language>
			<language type="lt">Litauisch</language>
			<language type="lu">Luba</language>
			<language type="lua">Luba-Lulua</language>
			<language type="lui">Luiseno-Sprache</language>
			<language type="lun">Lunda-Sprache</language>
			<language type="luo">Luo-Sprache</language>
			<language type="lus">Lushai-Sprache</language>
			<language type="lv">Lettisch</language>
			<language type="mad">Maduresisch</language>
			<language type="mag">Khotta</language>
			<language type="mai">Maithili</language>
			<language type="mak">Makassarisch</language>
			<language type="man">Manding-Sprache</language>
			<language type="map">Austronesische Sprachen</language>
			<language type="mas">Massai-Sprache</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandaresisch</language>
			<language type="men">Mende-Sprache</language>
			<language type="mg">Malagassi-Sprache</language>
			<language type="mga">Mittelirisch</language>
			<language type="mh">Marschallesisch</language>
			<language type="mi">Maori</language>
			<language type="mic">Micmac-Sprache</language>
			<language type="min">Minangkabau-Sprache</language>
			<language type="mis">Verschiedene Sprachen</language>
			<language type="mk">Mazedonisch</language>
			<language type="mkh">Mon-Khmer-Sprache</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongolisch</language>
			<language type="mnc">Mandschurisch</language>
			<language type="mni">Meithei-Sprache</language>
			<language type="mno">Manobo-Sprache</language>
			<language type="mo">Moldauisch</language>
			<language type="moh">Mohawk-Sprache</language>
			<language type="mos">Mossi-Sprache</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malaiisch</language>
			<language type="mt">Maltesisch</language>
			<language type="mul">Mehrsprachig</language>
			<language type="mun">Munda-Sprachen</language>
			<language type="mus">Muskogee-Sprachen</language>
			<language type="mwl">Mirandesisch</language>
			<language type="mwr">Marwari</language>
			<language type="my">Birmanisch</language>
			<language type="myn">Maya-Sprachen</language>
			<language type="myv">Erzya</language>
			<language type="na">Nauruisch</language>
			<language type="nah">Nahuatl</language>
			<language type="nai">Nordamerikanische Indianersprache</language>
			<language type="nap">Neapolitanisch</language>
			<language type="nb">Norwegisch Bokmål</language>
			<language type="nd">Nord-Ndebele-Sprache</language>
			<language type="nds">Niederdeutsch</language>
			<language type="ne">Nepalesisch</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nias-Sprache</language>
			<language type="nic">Nigerkordofanische Sprache</language>
			<language type="niu">Niue-Sprache</language>
			<language type="nl">Niederländisch</language>
			<language type="nl_BE">Flämisch</language>
			<language type="nn">Norwegisch Nynorsk</language>
			<language type="no">Norwegisch</language>
			<language type="nog">Nogai</language>
			<language type="non">Altnordisch</language>
			<language type="nqo">N’Ko</language>
			<language type="nr">Süd-Ndebele-Sprache</language>
			<language type="nso">Nord-Sotho-Sprache</language>
			<language type="nub">Nubische Sprachen</language>
			<language type="nv">Navajo-Sprache</language>
			<language type="nwc">Alt-Newari</language>
			<language type="ny">Chewa-Sprache</language>
			<language type="nym">Nyamwezi-Sprache</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Nyoro</language>
			<language type="nzi">Nzima</language>
			<language type="oc">Okzitanisch</language>
			<language type="oj">Ojibwa-Sprache</language>
			<language type="om">Oromo</language>
			<language type="or">Orija</language>
			<language type="os">Ossetisch</language>
			<language type="osa">Osage-Sprache</language>
			<language type="ota">Osmanisch</language>
			<language type="oto">Otomangue-Sprachen</language>
			<language type="pa">Pandschabisch</language>
			<language type="paa">Papuasprache</language>
			<language type="pag">Pangasinan-Sprache</language>
			<language type="pal">Mittelpersisch</language>
			<language type="pam">Pampanggan-Sprache</language>
			<language type="pap">Papiamento</language>
			<language type="pau">Palau</language>
			<language type="peo">Altpersisch</language>
			<language type="phi">Philippinen-Austronesische Sprache</language>
			<language type="phn">Phönikisch</language>
			<language type="pi">Pali</language>
			<language type="pl">Polnisch</language>
			<language type="pon">Ponapeanisch</language>
			<language type="pra">Prakrit</language>
			<language type="pro">Altprovenzalisch</language>
			<language type="ps">Paschtu</language>
			<language type="pt">Portugiesisch</language>
			<language type="pt_BR">Brasilianisches Portugiesisch</language>
			<language type="pt_PT">Iberisches Portugiesisch</language>
			<language type="qu">Quechua</language>
			<language type="raj">Rajasthani</language>
			<language type="rap">Osterinsel-Sprache</language>
			<language type="rar">Rarotonganisch</language>
			<language type="rm">Rätoromanisch</language>
			<language type="rn">Rundi-Sprache</language>
			<language type="ro">Rumänisch</language>
			<language type="roa">Romanische Sprache</language>
			<language type="rom">Zigeunersprache</language>
			<language type="root">Root</language>
			<language type="ru">Russisch</language>
			<language type="rup">Aromunisch</language>
			<language type="rw">Ruandisch</language>
			<language type="sa">Sanskrit</language>
			<language type="sad">Sandawe-Sprache</language>
			<language type="sah">Jakutisch</language>
			<language type="sai">Südamerikanische Indianersprache</language>
			<language type="sal">Salish-Sprache</language>
			<language type="sam">Samaritanisch</language>
			<language type="sas">Sasak</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardisch</language>
			<language type="scn">Sizilianisch</language>
			<language type="sco">Schottisch</language>
			<language type="sd">Sindhi</language>
			<language type="se">Nord-Samisch</language>
			<language type="sel">Selkupisch</language>
			<language type="sem">Semitische Sprache</language>
			<language type="sg">Sango</language>
			<language type="sga">Altirisch</language>
			<language type="sgn">Gebärdensprache</language>
			<language type="sh">Serbo-Kroatisch</language>
			<language type="shn">Schan-Sprache</language>
			<language type="si">Singhalesisch</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Sioux-Sprachen</language>
			<language type="sit">Sinotibetische Sprache</language>
			<language type="sk">Slowakisch</language>
			<language type="sl">Slowenisch</language>
			<language type="sla">Slawische Sprache</language>
			<language type="sm">Samoanisch</language>
			<language type="sma">Süd-Samisch</language>
			<language type="smi">Lappisch</language>
			<language type="smj">Lule-Lappisch</language>
			<language type="smn">Inari-Lappisch</language>
			<language type="sms">Skolt-Lappisch</language>
			<language type="sn">Shona</language>
			<language type="snk">Soninke-Sprache</language>
			<language type="so">Somali</language>
			<language type="sog">Sogdisch</language>
			<language type="son">Songhai-Sprache</language>
			<language type="sq">Albanisch</language>
			<language type="sr">Serbisch</language>
			<language type="srn">Srananisch</language>
			<language type="srr">Serer-Sprache</language>
			<language type="ss">Swazi</language>
			<language type="ssa">Nilosaharanische Sprache</language>
			<language type="st">Süd-Sotho-Sprache</language>
			<language type="su">Sundanesisch</language>
			<language type="suk">Sukuma-Sprache</language>
			<language type="sus">Susu</language>
			<language type="sux">Sumerisch</language>
			<language type="sv">Schwedisch</language>
			<language type="sw">Suaheli</language>
			<language type="syc">Altsyrisch</language>
			<language type="syr">Syrisch</language>
			<language type="ta">Tamilisch</language>
			<language type="tai">Thaisprache</language>
			<language type="te">Telugu</language>
			<language type="tem">Temne</language>
			<language type="ter">Tereno-Sprache</language>
			<language type="tet">Tetum-Sprache</language>
			<language type="tg">Tadschikisch</language>
			<language type="th">Thailändisch</language>
			<language type="ti">Tigrinja</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv-Sprache</language>
			<language type="tk">Turkmenisch</language>
			<language type="tkl">Tokelauanisch</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingonisch</language>
			<language type="tli">Tlingit-Sprache</language>
			<language type="tmh">Tamaseq</language>
			<language type="tn">Tswana-Sprache</language>
			<language type="to">Tongaisch</language>
			<language type="tog">Tsonga-Sprache</language>
			<language type="tpi">Neumelanesisch</language>
			<language type="tr">Türkisch</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Tsimshian-Sprache</language>
			<language type="tt">Tatarisch</language>
			<language type="tum">Tumbuka-Sprache</language>
			<language type="tup">Tupi-Sprachen</language>
			<language type="tut">Altaische Sprache</language>
			<language type="tvl">Elliceanisch</language>
			<language type="tw">Twi</language>
			<language type="ty">Tahitisch</language>
			<language type="tyv">Tuwinisch</language>
			<language type="udm">Udmurtisch</language>
			<language type="ug">Uigurisch</language>
			<language type="uga">Ugaritisch</language>
			<language type="uk">Ukrainisch</language>
			<language type="umb">Mbundu-Sprache</language>
			<language type="und">Unbestimmte Sprache</language>
			<language type="ur">Urdu</language>
			<language type="uz">Usbekisch</language>
			<language type="vai">Vai-Sprache</language>
			<language type="ve">Venda-Sprache</language>
			<language type="vi">Vietnamesisch</language>
			<language type="vo">Volapük</language>
			<language type="vot">Wotisch</language>
			<language type="wa">Wallonisch</language>
			<language type="wak">Wakashanisch</language>
			<language type="wal">Walamo-Sprache</language>
			<language type="war">Waray</language>
			<language type="was">Washo-Sprache</language>
			<language type="wen">Sorbisch</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmückisch</language>
			<language type="xh">Xhosa</language>
			<language type="yao">Yao-Sprache</language>
			<language type="yap">Yapesisch</language>
			<language type="yi">Jiddisch</language>
			<language type="yo">Yoruba</language>
			<language type="ypk">Yupik-Sprache</language>
			<language type="za">Zhuang</language>
			<language type="zap">Zapotekisch</language>
			<language type="zbl">Bliss-Symbole</language>
			<language type="zen">Zenaga</language>
			<language type="zh">Chinesisch</language>
			<language type="zh_Hans">Vereinfachtes Chinesisch</language>
			<language type="zh_Hant">Traditionelles Chinesisch</language>
			<language type="znd">Zande-Sprache</language>
			<language type="zu">Zulu</language>
			<language type="zun">Zuni-Sprache</language>
			<language type="zxx">Keine Sprachinhalte</language>
			<language type="zza">Zaza</language>
		</languages>
		<scripts>
			<script type="Arab">Arabisch</script>
			<script type="Armi">Armi</script>
			<script type="Armn">Armenisch</script>
			<script type="Avst">Avestisch</script>
			<script type="Bali">Balinesisch</script>
			<script type="Batk">Battakisch</script>
			<script type="Beng">Bengalisch</script>
			<script type="Blis">Bliss-Symbole</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brahmi</script>
			<script type="Brai">Blindenschrift</script>
			<script type="Bugi">Buginesisch</script>
			<script type="Buhd">Buhid</script>
			<script type="Cakm">Cakm</script>
			<script type="Cans">UCAS</script>
			<script type="Cari">Karisch</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Cherokee</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Koptisch</script>
			<script type="Cprt">Zypriotisch</script>
			<script type="Cyrl">Kyrillisch</script>
			<script type="Cyrs">Altkirchenslawisch</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Ägyptisch - Demotisch</script>
			<script type="Egyh">Ägyptisch - Hieratisch</script>
			<script type="Egyp">Ägyptische Hieroglyphen</script>
			<script type="Ethi">Äthiopisch</script>
			<script type="Geok">Khutsuri</script>
			<script type="Geor">Georgisch</script>
			<script type="Glag">Glagolitisch</script>
			<script type="Goth">Gotisch</script>
			<script type="Grek">Griechisch</script>
			<script type="Gujr">Gujarati</script>
			<script type="Guru">Gurmukhi</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Chinesisch</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Vereinfachte Chinesische Schrift</script>
			<script type="Hant">Traditionelle Chinesische Schrift</script>
			<script type="Hebr">Hebräisch</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh Hmong</script>
			<script type="Hrkt">Katakana oder Hiragana</script>
			<script type="Hung">Altungarisch</script>
			<script type="Inds">Indus-Schrift</script>
			<script type="Ital">Altitalisch</script>
			<script type="Java">Javanesisch</script>
			<script type="Jpan">Japanisch</script>
			<script type="Kali">Kayah Li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Kore">Koreanisch</script>
			<script type="Kthi">Kthi</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Laotisch</script>
			<script type="Latf">Lateinisch - Fraktur-Variante</script>
			<script type="Latg">Lateinisch - Gälische Variante</script>
			<script type="Latn">Lateinisch</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Linear A</script>
			<script type="Linb">Linear B</script>
			<script type="Lyci">Lykisch</script>
			<script type="Lydi">Lydisch</script>
			<script type="Mand">Mandäisch</script>
			<script type="Mani">Manichäisch</script>
			<script type="Maya">Maya-Hieroglyphen</script>
			<script type="Mero">Meroitisch</script>
			<script type="Mlym">Malaysisch</script>
			<script type="Mong">Mongolisch</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei Mayek</script>
			<script type="Mymr">Burmesisch</script>
			<script type="Nkoo">N’Ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Ol Chiki</script>
			<script type="Orkh">Orchon-Runen</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Osmanisch</script>
			<script type="Perm">Altpermisch</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phli">Phli</script>
			<script type="Phlp">Phlp</script>
			<script type="Phlv">Pahlavi</script>
			<script type="Phnx">Phönizisch</script>
			<script type="Plrd">Pollard Phonetisch</script>
			<script type="Prti">Prti</script>
			<script type="Qaai">Geerbter Schriftwert</script>
			<script type="Rjng">Rejang</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runenschrift</script>
			<script type="Samr">Samaritanisch</script>
			<script type="Sara">Sarati</script>
			<script type="Saur">Saurashtra</script>
			<script type="Sgnw">Gebärdensprache</script>
			<script type="Shaw">Shaw-Alphabet</script>
			<script type="Sinh">Singhalesisch</script>
			<script type="Sund">Sundanesisch</script>
			<script type="Sylo">Syloti Nagri</script>
			<script type="Syrc">Syrisch</script>
			<script type="Syre">Syrisch - Estrangelo-Variante</script>
			<script type="Syrj">Westsyrisch</script>
			<script type="Syrn">Ostsyrisch</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">Tai Lue</script>
			<script type="Taml">Tamilisch</script>
			<script type="Tavt">Tavt</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Tifinagh</script>
			<script type="Tglg">Tagalog</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thai</script>
			<script type="Tibt">Tibetisch</script>
			<script type="Ugar">Ugaritisch</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Visible Speech</script>
			<script type="Xpeo">Altpersisch</script>
			<script type="Xsux">Sumerisch-akkadische Keilschrift</script>
			<script type="Yiii">Yi</script>
			<script type="Zmth">Zmth</script>
			<script type="Zsym">Zsym</script>
			<script type="Zxxx">Schriftlose Sprachen</script>
			<script type="Zyyy">Unbestimmt</script>
			<script type="Zzzz">Uncodierte Schrift</script>
		</scripts>
		<territories>
			<territory type="001">Welt</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Nordamerika</territory>
			<territory type="005">Südamerika</territory>
			<territory type="009">Ozeanien</territory>
			<territory type="011">Westafrika</territory>
			<territory type="013">Mittelamerika</territory>
			<territory type="014">Ostafrika</territory>
			<territory type="015">Nordafrika</territory>
			<territory type="017">Zentralafrika</territory>
			<territory type="018">Südliches Afrika</territory>
			<territory type="019">Nord-, Mittel- und Südamerika</territory>
			<territory type="021">Nördliches Amerika</territory>
			<territory type="029">Karibik</territory>
			<territory type="030">Ostasien</territory>
			<territory type="034">Südasien</territory>
			<territory type="035">Südostasien</territory>
			<territory type="039">Südeuropa</territory>
			<territory type="053">Australien und Neuseeland</territory>
			<territory type="054">Melanesien</territory>
			<territory type="057">Mikronesisches Inselgebiet</territory>
			<territory type="061">Polynesien</territory>
			<territory type="062">Süd-Zentralasien</territory>
			<territory type="142">Asien</territory>
			<territory type="143">Zentralasien</territory>
			<territory type="145">Westasien</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Osteuropa</territory>
			<territory type="154">Nordeuropa</territory>
			<territory type="155">Westeuropa</territory>
			<territory type="172">Gemeinschaft Unabhängiger Staaten</territory>
			<territory type="419">Lateinamerika und Karibik</territory>
			<territory type="830">Kanalinseln</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Vereinigte Arabische Emirate</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua und Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanien</territory>
			<territory type="AM">Armenien</territory>
			<territory type="AN">Niederländische Antillen</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentinien</territory>
			<territory type="AS">Amerikanisch-Samoa</territory>
			<territory type="AT">Österreich</territory>
			<territory type="AU">Australien</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandinseln</territory>
			<territory type="AZ">Aserbaidschan</territory>
			<territory type="BA">Bosnien und Herzegowina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesch</territory>
			<territory type="BE">Belgien</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarien</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">St. Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei Darussalam</territory>
			<territory type="BO">Bolivien</territory>
			<territory type="BR">Brasilien</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvetinsel</territory>
			<territory type="BW">Botsuana</territory>
			<territory type="BY">Weißrussland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosinseln</territory>
			<territory type="CD">Demokratische Republik Kongo</territory>
			<territory type="CF">Zentralafrikanische Republik</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Schweiz</territory>
			<territory type="CI">Côte d’Ivoire</territory>
			<territory type="CK">Cookinseln</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Kolumbien</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbien und Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CX">Weihnachtsinsel</territory>
			<territory type="CY">Zypern</territory>
			<territory type="CZ">Tschechische Republik</territory>
			<territory type="DE">Deutschland</territory>
			<territory type="DJ">Dschibuti</territory>
			<territory type="DK">Dänemark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominikanische Republik</territory>
			<territory type="DZ">Algerien</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Ägypten</territory>
			<territory type="EH">Westsahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanien</territory>
			<territory type="ET">Äthiopien</territory>
			<territory type="FI">Finnland</territory>
			<territory type="FJ">Fidschi</territory>
			<territory type="FK">Falklandinseln</territory>
			<territory type="FM">Mikronesien</territory>
			<territory type="FO">Färöer</territory>
			<territory type="FR">Frankreich</territory>
			<territory type="GA">Gabun</territory>
			<territory type="GB">Vereinigtes Königreich</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgien</territory>
			<territory type="GF">Französisch-Guayana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grönland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Äquatorialguinea</territory>
			<territory type="GR">Griechenland</territory>
			<territory type="GS">Südgeorgien und die Südlichen Sandwichinseln</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- und McDonald-Inseln</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatien</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungarn</territory>
			<territory type="ID">Indonesien</territory>
			<territory type="IE">Irland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">Indien</territory>
			<territory type="IO">Britisches Territorium im Indischen Ozean</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italien</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordanien</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Kambodscha</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoren</territory>
			<territory type="KN">St. Kitts und Nevis</territory>
			<territory type="KP">Demokratische Volksrepublik Korea</territory>
			<territory type="KR">Republik Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Kaimaninseln</territory>
			<territory type="KZ">Kasachstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">St. Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litauen</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Lettland</territory>
			<territory type="LY">Libyen</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Republik Moldau</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">St. Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallinseln</territory>
			<territory type="MK">Mazedonien</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolei</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Nördliche Marianen</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauretanien</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Malediven</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexiko</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Neukaledonien</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkinsel</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Niederlande</territory>
			<territory type="NO">Norwegen</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Neuseeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Französisch-Polynesien</territory>
			<territory type="PG">Papua-Neuguinea</territory>
			<territory type="PH">Philippinen</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">St. Pierre und Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palästinensische Gebiete</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Äußeres Ozeanien</territory>
			<territory type="QU">Europäische Union</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumänien</territory>
			<territory type="RS">Serbien</territory>
			<territory type="RU">Russische Föderation</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudi-Arabien</territory>
			<territory type="SB">Salomonen</territory>
			<territory type="SC">Seychellen</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Schweden</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">St. Helena</territory>
			<territory type="SI">Slowenien</territory>
			<territory type="SJ">Svalbard und Jan Mayen</territory>
			<territory type="SK">Slowakei</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">São Tomé und Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syrien</territory>
			<territory type="SZ">Swasiland</territory>
			<territory type="TC">Turks- und Caicosinseln</territory>
			<territory type="TD">Tschad</territory>
			<territory type="TF">Französische Süd- und Antarktisgebiete</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadschikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Osttimor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunesien</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Türkei</territory>
			<territory type="TT">Trinidad und Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tansania</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Amerikanisch-Ozeanien</territory>
			<territory type="US">Vereinigte Staaten</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikanstadt</territory>
			<territory type="VC">St. Vincent und die Grenadinen</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britische Jungferninseln</territory>
			<territory type="VI">Amerikanische Jungferninseln</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis und Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Südafrika</territory>
			<territory type="ZM">Sambia</territory>
			<territory type="ZW">Simbabwe</territory>
			<territory type="ZZ">Unbekannte oder ungültige Region</territory>
		</territories>
		<variants>
			<variant type="1901">Alte deutsche Rechtschreibung</variant>
			<variant type="1994">Standardisierte Resianische Rechtschreibung</variant>
			<variant type="1996">Neue deutsche Rechtschreibung</variant>
			<variant type="1606NICT">Spätes Mittelfranzösisch</variant>
			<variant type="AREVELA">Ostarmenisch</variant>
			<variant type="AREVMDA">Westarmenisch</variant>
			<variant type="BAKU1926">Einheitliches Türkisches Alphabet</variant>
			<variant type="BISKE">Bela-Dialekt</variant>
			<variant type="BOONT">Boontling</variant>
			<variant type="FONIPA">IPA Phonetisch</variant>
			<variant type="FONUPA">Phonetisch (UPA)</variant>
			<variant type="LIPAW">Lipovaz-Dialekt</variant>
			<variant type="MONOTON">Monotonisch</variant>
			<variant type="NEDIS">Natisone-Dialekt</variant>
			<variant type="NJIVA">Njiva-Dialekt</variant>
			<variant type="OSOJS">Osojane-Dialekt</variant>
			<variant type="POLYTON">Polytonisch</variant>
			<variant type="POSIX">Posix</variant>
			<variant type="REVISED">Revidierte Rechtschreibung</variant>
			<variant type="ROZAJ">Resianisch</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOTLAND">Schottisches Standardenglisch</variant>
			<variant type="SCOUSE">Scouse-Dialekt</variant>
			<variant type="SOLBA">Solbica-Dialekt</variant>
			<variant type="TARASK">Taraskievica-Orthographie</variant>
		</variants>
		<keys>
			<key type="calendar">Kalender</key>
			<key type="collation">Sortierung</key>
			<key type="currency">Währung</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Traditionelles Chinesisch - Big5</type>
			<type type="buddhist" key="calendar">Buddhistischer Kalender</type>
			<type type="chinese" key="calendar">Chinesischer Kalender</type>
			<type type="direct" key="collation">Direkte Sortierregeln</type>
			<type type="gb2312han" key="collation">Vereinfachtes Chinesisch - GB2312</type>
			<type type="gregorian" key="calendar">Gregorianischer Kalender</type>
			<type type="hebrew" key="calendar">Hebräischer Kalender</type>
			<type type="indian" key="calendar">Indischer Nationalkalender</type>
			<type type="islamic" key="calendar">Islamischer Kalender</type>
			<type type="islamic-civil" key="calendar">Bürgerlicher islamischer Kalender</type>
			<type type="japanese" key="calendar">Japanischer Kalender</type>
			<type type="phonebook" key="collation">Telefonbuch-Sortierregeln</type>
			<type type="pinyin" key="collation">Pinyin-Sortierregeln</type>
			<type type="roc" key="calendar">Kalender der Republik China</type>
			<type type="stroke" key="collation">Strichfolge</type>
			<type type="traditional" key="collation">Traditionelle Sortierregeln</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">angloamerikanisch</measurementSystemName>
			<measurementSystemName type="metric">metrisch</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Sprache: {0}</codePattern>
			<codePattern type="script">Schrift: {0}</codePattern>
			<codePattern type="territory">Region: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
	</layout>
	<characters>
		<exemplarCharacters>[a ä b-o ö p-s ß t u ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à ă â å ä ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ß ú ù ŭ û ü ū ÿ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>‚</alternateQuotationStart>
		<alternateQuotationEnd>‘</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GjMtkHmsSEDFwWahKzJeugAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<am>vorm.</am>
				<pm>nachm.</pm>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="chinese">
				<am>vorm.</am>
				<pm>nachm.</pm>
			</calendar>
			<calendar type="coptic">
				<am>vorm.</am>
				<pm>nachm.</pm>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mrz</month>
							<month type="4">Apr</month>
							<month type="5">Mai</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dez</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januar</month>
							<month type="2">Februar</month>
							<month type="3">März</month>
							<month type="4">April</month>
							<month type="5">Mai</month>
							<month type="6">Juni</month>
							<month type="7">Juli</month>
							<month type="8">August</month>
							<month type="9">September</month>
							<month type="10">Oktober</month>
							<month type="11">November</month>
							<month type="12">Dezember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="3">Mär</month>
							<month type="7">Jul</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dez</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">So.</day>
							<day type="mon">Mo.</day>
							<day type="tue">Di.</day>
							<day type="wed">Mi.</day>
							<day type="thu">Do.</day>
							<day type="fri">Fr.</day>
							<day type="sat">Sa.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sonntag</day>
							<day type="mon">Montag</day>
							<day type="tue">Dienstag</day>
							<day type="wed">Mittwoch</day>
							<day type="thu">Donnerstag</day>
							<day type="fri">Freitag</day>
							<day type="sat">Samstag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">D</day>
							<day type="wed">M</day>
							<day type="thu">D</day>
							<day type="fri">F</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. Quartal</quarter>
							<quarter type="2">2. Quartal</quarter>
							<quarter type="3">3. Quartal</quarter>
							<quarter type="4">4. Quartal</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>vorm.</am>
				<pm>nachm.</pm>
				<eras>
					<eraNames>
						<era type="0">v. Chr.</era>
						<era type="1">n. Chr.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">v. Chr.</era>
						<era type="1">n. Chr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d.</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d.M.</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="MMd">d.MM.</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM.</dateFormatItem>
						<dateFormatItem id="Md">d.M.</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">HH:mm</dateFormatItem>
						<dateFormatItem id="hhmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d. MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyMMdd">dd.MM.yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.-M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM. - E, dd.MM.</greatestDifference>
							<greatestDifference id="d">E, dd.MM. - E, dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM. - dd.MM.</greatestDifference>
							<greatestDifference id="d">dd.MM. - dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d. MMM yyyy - E, d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM – MM.yyyy</greatestDifference>
							<greatestDifference id="y">MM.yyyy – MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Epoche</displayName>
					</field>
					<field type="year">
						<displayName>Jahr</displayName>
					</field>
					<field type="month">
						<displayName>Monat</displayName>
					</field>
					<field type="week">
						<displayName>Woche</displayName>
					</field>
					<field type="day">
						<displayName>Tag</displayName>
						<relative type="0">Heute</relative>
						<relative type="1">Morgen</relative>
						<relative type="2">Übermorgen</relative>
						<relative type="3">In drei Tagen</relative>
						<relative type="-1">Gestern</relative>
						<relative type="-2">Vorgestern</relative>
						<relative type="-3">Vor drei Tagen</relative>
					</field>
					<field type="weekday">
						<displayName>Wochentag</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Tageshälfte</displayName>
					</field>
					<field type="hour">
						<displayName>Stunde</displayName>
					</field>
					<field type="minute">
						<displayName>Minute</displayName>
					</field>
					<field type="second">
						<displayName>Sekunde</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<am>vorm.</am>
				<pm>nachm.</pm>
			</calendar>
			<calendar type="islamic">
				<am>vorm.</am>
				<pm>nachm.</pm>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Unbekannt</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erivan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Südpol</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Wostok</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wien</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brüssel</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Wagadugu</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudas</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Osterinsel</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kap Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Weihnachts-Inseln</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikosia</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Dschibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhagen</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Algier</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>El Aaiún</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanaren</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidschi</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Färöer</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tiflis</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Akkra</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athen</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Süd-Georgien</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rom</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Bischkek</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komoren</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Pjöngjang</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kaimaninseln</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktobe</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Wilna</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Tripolis</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Kischinau</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Malediven</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexiko-Stadt</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Niger</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Muskat</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warschau</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azoren</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskau</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Nowosibirsk</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsk</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Wladiwostok</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamtschatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riad</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Khartum</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>St. Helena</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadischu</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>São Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskus</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Duschanbe</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port-of-Spain</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Taipeh</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Daressalam</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Uschgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kiew</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Saporischja</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taschkent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre-Zeit</standard>
					<daylight>Acre-Sommerzeit</daylight>
				</long>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afghanistan-Zeit</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Zentralafrikanische Zeit</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Ostafrikanische Zeit</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Südafrikanische Zeit</generic>
					<standard>Südafrikanische Standardzeit</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Westafrikanische Zeit</standard>
					<daylight>Westafrikanische Sommerzeit</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk-Zeit</standard>
					<daylight>Aktyubinsk-Sommerzeit</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska-Zeit</generic>
					<standard>Alaska-Standardzeit</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaska-Hawaii-Zeit</generic>
					<standard>Alaska-Hawaii-Standardzeit</standard>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Almaty-Zeit</standard>
					<daylight>Almaty-Sommerzeit</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<daylight>Amazonas-Sommerzeit</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Mitteleuropäische Zeit</standard>
					<daylight>Mitteleuropäische Sommerzeit</daylight>
				</long>
				<short>
					<standard>MEZ</standard>
					<daylight>MESZ</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Osteuropäische Zeit</standard>
					<daylight>Osteuropäische Sommerzeit</daylight>
				</long>
				<short>
					<standard>OEZ</standard>
					<daylight>OESZ</daylight>
				</short>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Westeuropäische Zeit</standard>
					<daylight>Westeuropäische Sommerzeit</daylight>
				</long>
				<short>
					<standard>WEZ</standard>
					<daylight>WESZ</daylight>
				</short>
			</metazone>
			<metazone type="Moscow">
				<long>
					<standard>Moskauer Zeit</standard>
					<daylight>Moskauer Sommerzeit</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorranische Pesete</displayName>
				<displayName count="other">Andorranische Peseten</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE Dirham</displayName>
				<displayName count="other">UAE Dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghani (1927-2002)</displayName>
				<displayName count="other">Afghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghani</displayName>
				<displayName count="other">Afghani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Lek</displayName>
				<displayName count="other">Albanische Lek</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Dram</displayName>
				<displayName count="other">Armenische Dram</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Niederl. Antillen Gulden</displayName>
				<displayName count="other">Niederländische-Antillen-Gulden</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza</displayName>
				<displayName count="other">Angolanische Kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolanischer Kwanza (1977-1990)</displayName>
				<displayName count="other">Angolanische Kwanza (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Neuer Kwanza</displayName>
				<displayName count="other">Angolanische Neue Kwanza (AON)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza Reajustado</displayName>
				<displayName count="other">Angolanische Kwanza Reajustado (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentinischer Austral</displayName>
				<displayName count="other">Argentinische Austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentinischer Peso (1983-1985)</displayName>
				<displayName count="other">Argentinische Peso (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinischer Peso</displayName>
				<displayName count="other">Argentinische Peso</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Österreichischer Schilling</displayName>
				<displayName count="other">Österreichische Schilling</displayName>
				<symbol>öS</symbol>
			</currency>
			<currency type="AUD">
				<displayName>Australischer Dollar</displayName>
				<displayName count="other">Australische Dollar</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Aruba Florin</displayName>
				<displayName count="other">Aruba Florin</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Aserbeidschan Manat</displayName>
				<displayName count="other">Aserbaidschan-Manat (AZM)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Aserbaidschan-Manat</displayName>
				<displayName count="other">Aserbaidschan-Manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnien und Herzegowina Dinar</displayName>
				<displayName count="other">Bosnien und Herzegowina Dinar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Konvertierbare Mark</displayName>
				<displayName count="other">Bosnien und Herzegowina Konvertierbare Mark</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbados-Dollar</displayName>
				<displayName count="other">Barbados-Dollar</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka</displayName>
				<displayName count="other">Taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belgischer Franc (konvertibel)</displayName>
				<displayName count="other">Belgische Franc (konvertibel)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgischer Franc</displayName>
				<displayName count="other">Belgische Franc</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belgischer Finanz-Franc</displayName>
				<displayName count="other">Belgische Finanz-Franc</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Lew (1962-1999)</displayName>
				<displayName count="other">Bulgarische Lew</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Lew</displayName>
				<displayName count="other">Bulgarische Lew (BGN)</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahrain-Dinar</displayName>
				<displayName count="other">Bahrain-Dinar</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundi-Franc</displayName>
				<displayName count="other">Burundi-Franc</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda-Dollar</displayName>
				<displayName count="other">Bermuda-Dollar</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunei-Dollar</displayName>
				<displayName count="other">Brunei-Dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="other">Boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Bolivianischer Peso</displayName>
				<displayName count="other">Bolivianische Peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol</displayName>
				<displayName count="other">Bolivianische Mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brasilianischer Cruzeiro Novo (1967-1986)</displayName>
				<displayName count="other">Brasilianische Cruzeiro Novo (BRB)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brasilianischer Cruzado</displayName>
				<displayName count="other">Brasilianische Cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brasilianischer Cruzeiro (1990-1993)</displayName>
				<displayName count="other">Brasilianische Cruzeiro (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real</displayName>
				<displayName count="other">Brasilianische Real</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Brasilianischer Cruzado Novo</displayName>
				<displayName count="other">Brasilianische Cruzado Novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brasilianischer Cruzeiro</displayName>
				<displayName count="other">Brasilianische Cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahama-Dollar</displayName>
				<displayName count="other">Bahama-Dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Ngultrum</displayName>
				<displayName count="other">Bhutanische Ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Birmanischer Kyat</displayName>
				<displayName count="other">Birmanische Kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Pula</displayName>
				<displayName count="other">Botswanische Pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Belarus Rubel (alt)</displayName>
				<displayName count="other">Belarus-Rubel (BYB)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Belarus Rubel (neu)</displayName>
				<displayName count="other">Belarus-Rubel</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belize-Dollar</displayName>
				<displayName count="other">Belize-Dollar</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Kanadischer Dollar</displayName>
				<displayName count="other">Kanadische Dollar</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Franc congolais</displayName>
				<displayName count="other">Franc congolais</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR-Euro</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Schweizer Franken</displayName>
				<displayName count="other">Schweizer Franken</displayName>
				<symbol>SFr.</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR Franken</displayName>
				<displayName count="other">WIR Franken</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento</displayName>
				<displayName count="other">Chilenische Unidades de Fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilenischer Peso</displayName>
				<displayName count="other">Chilenische Pesos</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Renminbi Yuan</displayName>
				<displayName count="other">Renminbi Yuan</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kolumbianischer Peso</displayName>
				<displayName count="other">Kolumbianische Pesos</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidad de Valor Real</displayName>
				<displayName count="other">Unidad de Valor Real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Costa Rica Colon</displayName>
				<displayName count="other">Costa Rica Colon</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Alter Serbischer Dinar</displayName>
				<displayName count="other">Alte Serbische Dinar</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Tschechoslowakische Krone</displayName>
				<displayName count="other">Tschechoslowakische Kronen</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kubanischer Peso</displayName>
				<displayName count="other">Kubanische Pesos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Kap Verde Escudo</displayName>
				<displayName count="other">Kap Verde Escudo</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Zypern Pfund</displayName>
				<displayName count="other">Zypern Pfund</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Tschechische Krone</displayName>
				<displayName count="other">Tschechische Kronen</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Mark der DDR</displayName>
				<displayName count="other">Mark der DDR</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Deutsche Mark</displayName>
				<displayName count="other">Deutsche Mark</displayName>
				<symbol>DM</symbol>
			</currency>
			<currency type="DJF">
				<displayName>Dschibuti-Franc</displayName>
				<displayName count="other">Dschibuti-Franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Dänische Krone</displayName>
				<displayName count="other">Dänische Kronen</displayName>
			</currency>
			<currency type="DOP">
				<displayName>Dominikanischer Peso</displayName>
				<displayName count="other">Dominikanische Pesos</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Algerischer Dinar</displayName>
				<displayName count="other">Algerische Dinar</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadorianischer Sucre</displayName>
				<displayName count="other">Ecuadorianische Sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Verrechnungseinheit für EC</displayName>
				<displayName count="other">Verrechnungseinheiten für EC</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estnische Krone</displayName>
				<displayName count="other">Estnische Kronen</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Ägyptisches Pfund</displayName>
				<displayName count="other">Ägyptische Pfund</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Ekwele</displayName>
				<displayName count="other">Ekwele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Nakfa</displayName>
				<displayName count="other">Eritreische Nakfa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Spanische Peseta (A-Konten)</displayName>
				<displayName count="other">Spanische Peseten (A-Konten)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Spanische Peseta (konvertibel)</displayName>
				<displayName count="other">Spanische Peseten (konvertibel)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spanische Pesete</displayName>
				<displayName count="other">Spanische Peseten</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Birr</displayName>
				<displayName count="other">Äthiopische Birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<displayName count="other">Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finnische Mark</displayName>
				<displayName count="other">Finnische Mark</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidschi Dollar</displayName>
				<displayName count="other">Fidschi Dollar</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falkland Pfund</displayName>
				<displayName count="other">Falkland Pfund</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Französischer Franc</displayName>
				<displayName count="other">Französische Franc</displayName>
				<symbol>FF</symbol>
			</currency>
			<currency type="GBP">
				<displayName>Pfund Sterling</displayName>
				<displayName count="other">Pfund Sterling</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgischer Kupon Larit</displayName>
				<displayName count="other">Georgische Kupon Larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Georgischer Lari</displayName>
				<displayName count="other">Georgische Lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Cedi</displayName>
				<displayName count="other">Cedi</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghanaische Cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltar Pfund</displayName>
				<displayName count="other">Gibraltar Pfund</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi</displayName>
				<displayName count="other">Gambische Dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guinea Franc</displayName>
				<displayName count="other">Guinea Franc</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guineischer Syli</displayName>
				<displayName count="other">Guineische Syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Äquatorialguinea Ekwele Guineana</displayName>
				<displayName count="other">Äquatorialguinea-Ekwele</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Griechische Drachme</displayName>
				<displayName count="other">Griechische Drachmen</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal</displayName>
				<displayName count="other">Quetzal</displayName>
			</currency>
			<currency type="GWE">
				<displayName>Portugiesisch Guinea Escudo</displayName>
				<displayName count="other">Portugiesisch Guinea Escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea Bissau Peso</displayName>
				<displayName count="other">Guinea-Bissau Pesos</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyana Dollar</displayName>
				<displayName count="other">Guyana Dollar</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hongkong-Dollar</displayName>
				<displayName count="other">Hongkong-Dollar</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Lempira</displayName>
				<displayName count="other">Lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Kroatischer Dinar</displayName>
				<displayName count="other">Kroatische Dinar</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna</displayName>
				<displayName count="other">Kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde</displayName>
				<displayName count="other">Gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forint</displayName>
				<displayName count="other">Forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Rupiah</displayName>
				<displayName count="other">Rupiah</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Irisches Pfund</displayName>
				<displayName count="other">Irische Pfund</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Israelisches Pfund</displayName>
				<displayName count="other">Israelische Pfund</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Schekel</displayName>
				<displayName count="other">Neue Schekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indische Rupie</displayName>
				<displayName count="other">Indische Rupien</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Irak Dinar</displayName>
				<displayName count="other">Irak Dinar</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Rial</displayName>
				<displayName count="other">Rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Isländische Krone</displayName>
				<displayName count="other">Isländische Kronen</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italienische Lire</displayName>
				<displayName count="other">Italienische Lire</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaika Dollar</displayName>
				<displayName count="other">Jamaika Dollar</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordanischer Dinar</displayName>
				<displayName count="other">Jordanische Dinar</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Yen</displayName>
				<displayName count="other">Yen</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenia Schilling</displayName>
				<displayName count="other">Kenia Schilling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Som</displayName>
				<displayName count="other">Som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Riel</displayName>
				<displayName count="other">Riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Komoren Franc</displayName>
				<displayName count="other">Komoren-Franc</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Nordkoreanischer Won</displayName>
				<displayName count="other">Nordkoreanische Won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Südkoreanischer Won</displayName>
				<displayName count="other">Südkoreanische Won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuwait Dinar</displayName>
				<displayName count="other">Kuwait Dinar</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Kaiman-Dollar</displayName>
				<displayName count="other">Kaiman-Dollar</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Tenge</displayName>
				<displayName count="other">Tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Kip</displayName>
				<displayName count="other">Kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanesisches Pfund</displayName>
				<displayName count="other">Libanesische Pfund</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lanka Rupie</displayName>
				<displayName count="other">Sri Lanka Rupie</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberianischer Dollar</displayName>
				<displayName count="other">Liberianische Dollar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Loti</displayName>
				<displayName count="other">Loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
				<displayName count="other">Maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litauischer Litas</displayName>
				<displayName count="other">Litauische Litas</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litauischer Talonas</displayName>
				<displayName count="other">Litauische Talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Luxemburgischer Franc (konvertibel)</displayName>
				<displayName count="other">Luxemburgische Franc (konvertibel)</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxemburgischer Franc</displayName>
				<displayName count="other">Luxemburgische Franc</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Luxemburgischer Finanz-Franc</displayName>
				<displayName count="other">Luxemburgische Finanz-Franc</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lettischer Lats</displayName>
				<displayName count="other">Lettische Lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Lettischer Rubel</displayName>
				<displayName count="other">Lettische Rubel</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libyscher Dinar</displayName>
				<displayName count="other">Libysche Dinar</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokkanischer Dirham</displayName>
				<displayName count="other">Marokkanische Dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokkanischer Franc</displayName>
				<displayName count="other">Marokkanische Franc</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldau Leu</displayName>
				<displayName count="other">Moldau Leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskar Ariary</displayName>
				<displayName count="other">Madagaskar Ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskar Franc</displayName>
				<displayName count="other">Madagaskar-Franc</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Denar</displayName>
				<displayName count="other">Denar</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Malischer Franc</displayName>
				<displayName count="other">Malische Franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Kyat</displayName>
				<displayName count="other">Kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Tugrik</displayName>
				<displayName count="other">Tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Pataca</displayName>
				<displayName count="other">Pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ouguiya</displayName>
				<displayName count="other">Ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Maltesische Lira</displayName>
				<displayName count="other">Maltesische Lira</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltesisches Pfund</displayName>
				<displayName count="other">Maltesische Pfund</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritius Rupie</displayName>
				<displayName count="other">Mauritius Rupie</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Rufiyaa</displayName>
				<displayName count="other">Rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawi Kwacha</displayName>
				<displayName count="other">Malawi-Kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexikanischer Peso</displayName>
				<displayName count="other">Mexikanische Pesos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexikanischer Silber-Peso (1861-1992)</displayName>
				<displayName count="other">Mexikanische Silber-Pesos (MXP)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexican Unidad de Inversion (UDI)</displayName>
				<displayName count="other">Mexikanische Unidad de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysischer Ringgit</displayName>
				<displayName count="other">Malaysische Ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mosambikanischer Escudo</displayName>
				<displayName count="other">Mozambikanische Escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Alter Metical</displayName>
				<displayName count="other">Alte Metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Metical</displayName>
				<displayName count="other">Metical</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibia Dollar</displayName>
				<displayName count="other">Namibia-Dollar</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Naira</displayName>
				<displayName count="other">Naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Cordoba</displayName>
				<displayName count="other">Cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Gold-Cordoba</displayName>
				<displayName count="other">Gold-Cordoba</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Holländischer Gulden</displayName>
				<displayName count="other">Holländische Gulden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norwegische Krone</displayName>
				<displayName count="other">Norwegische Kronen</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalesische Rupie</displayName>
				<displayName count="other">Nepalesische Rupien</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Neuseeland-Dollar</displayName>
				<displayName count="other">Neuseeland-Dollar</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Rial Omani</displayName>
				<displayName count="other">Rial Omani</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balboa</displayName>
				<displayName count="other">Balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruanischer Inti</displayName>
				<displayName count="other">Peruanische Inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Neuer Sol</displayName>
				<displayName count="other">Neue Sol</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol</displayName>
				<displayName count="other">Sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina</displayName>
				<displayName count="other">Kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Philippinischer Peso</displayName>
				<displayName count="other">Philippinische Peso</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakistanische Rupie</displayName>
				<displayName count="other">Pakistanische Rupien</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Zloty</displayName>
				<displayName count="other">Zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Zloty (1950-1995)</displayName>
				<displayName count="other">Zloty (PLZ)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugiesischer Escudo</displayName>
				<displayName count="other">Portugiesische Escudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Guarani</displayName>
				<displayName count="other">Guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Katar Riyal</displayName>
				<displayName count="other">Katar Riyal</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Rhodesischer Dollar</displayName>
				<displayName count="other">Rhodesische Dollar</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Leu</displayName>
				<displayName count="other">Leu</displayName>
			</currency>
			<currency type="RON">
				<displayName>Rumänischer Leu</displayName>
				<displayName count="other">Rumänische Leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbischer Dinar</displayName>
				<displayName count="other">Serbische Dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russischer Rubel (neu)</displayName>
				<displayName count="other">Russische Rubel (neu)</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Russischer Rubel (alt)</displayName>
				<displayName count="other">Russische Rubel (alt)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruanda Franc</displayName>
				<displayName count="other">Ruanda-Franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi Riyal</displayName>
				<displayName count="other">Saudi Riyal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salomonen Dollar</displayName>
				<displayName count="other">Salomonen-Dollar</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychellen Rupie</displayName>
				<displayName count="other">Seychellen-Rupien</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Sudanesischer Dinar</displayName>
				<displayName count="other">Sudanesische Dinar</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudanesisches Pfund</displayName>
				<displayName count="other">Sudanesische Pfund</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudanesisches Pfund (alt)</displayName>
				<displayName count="other">Sudanesische Pfund (alt)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Schwedische Krone</displayName>
				<displayName count="other">Schwedische Kronen</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapur-Dollar</displayName>
				<displayName count="other">Singapur-Dollar</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>St. Helena Pfund</displayName>
				<displayName count="other">St. Helena-Pfund</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar</displayName>
				<displayName count="other">Tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slowakische Krone</displayName>
				<displayName count="other">Slowakische Kronen</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Leone</displayName>
				<displayName count="other">Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somalia Schilling</displayName>
				<displayName count="other">Somalia-Schilling</displayName>
			</currency>
			<currency type="SRD">
				<displayName>Surinamischer Dollar</displayName>
				<displayName count="other">Surinamische Dollar</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Suriname Gulden</displayName>
				<displayName count="other">Suriname-Gulden</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra</displayName>
				<displayName count="other">Dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Sowjetischer Rubel</displayName>
				<displayName count="other">Sowjetische Rubel</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvador Colon</displayName>
				<displayName count="other">El Salvador-Colon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syrisches Pfund</displayName>
				<displayName count="other">Syrische Pfund</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni</displayName>
				<displayName count="other">Lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Baht</displayName>
				<displayName count="other">Baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadschikistan Rubel</displayName>
				<displayName count="other">Tadschikistan-Rubel</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadschikistan Somoni</displayName>
				<displayName count="other">Tadschikistan-Somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmenistan-Manat</displayName>
				<displayName count="other">Turkmenistan-Manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunesischer Dinar</displayName>
				<displayName count="other">Tunesische Dinar</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Paʻanga</displayName>
				<displayName count="other">Paʻanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timor Escudo</displayName>
				<displayName count="other">Timor-Escudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Türkische Lira</displayName>
				<displayName count="one">Türkische Lira</displayName>
				<displayName count="other">Türkische Lire</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Neue Türkische Lira</displayName>
				<displayName count="one">Neue Türkische Lira</displayName>
				<displayName count="other">Neue Türkische Lire</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad und Tobago Dollar</displayName>
				<displayName count="other">Trinidad und Tobago-Dollar</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Neuer Taiwan Dollar</displayName>
				<displayName count="other">Neuer Taiwan Dollar</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tansania Schilling</displayName>
				<displayName count="other">Tansania-Schilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hryvnia</displayName>
				<displayName count="other">Hryvnia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainischer Karbovanetz</displayName>
				<displayName count="other">Ukrainische Karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Uganda Schilling (1966-1987)</displayName>
				<displayName count="other">Uganda-Schilling (UGS)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Uganda Schilling</displayName>
				<displayName count="other">Uganda-Schilling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>US-Dollar</displayName>
				<displayName count="other">US-Dollar</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>US Dollar (Nächster Tag)</displayName>
				<displayName count="other">US-Dollar (Nächster Tag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>US Dollar (Gleicher Tag)</displayName>
				<displayName count="other">US-Dollar (Gleicher Tag)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguayischer Neuer Peso (1975-1993)</displayName>
				<displayName count="other">Uruguayische Pesos (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguayischer Peso</displayName>
				<displayName count="other">Uruguayische Pesos</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Usbekistan Sum</displayName>
				<displayName count="other">Usbekistan-Sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivar</displayName>
				<displayName count="other">Bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Bolívar Fuerte</displayName>
			</currency>
			<currency type="VND">
				<displayName>Dong</displayName>
				<displayName count="other">Dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vatu</displayName>
				<displayName count="other">Vatu</displayName>
			</currency>
			<currency type="WST">
				<displayName>Tala</displayName>
				<displayName count="other">Tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA Franc (Äquatorial)</displayName>
				<displayName count="other">CFA-Franc (BEAC)</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Silber</displayName>
				<displayName count="other">Silber</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Gold</displayName>
				<displayName count="other">Gold</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Europäische Rechnungseinheit</displayName>
				<displayName count="other">Europäische Rechnungseinheiten</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Europäische Währungseinheit (XBB)</displayName>
				<displayName count="other">Europäische Währungseinheiten (XBB)</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Europäische Rechnungseinheit (XBC)</displayName>
				<displayName count="other">Europäische Rechnungseinheiten (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Europäische Rechnungseinheit (XBD)</displayName>
				<displayName count="other">Europäische Rechnungseinheiten (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Ostkaribischer Dollar</displayName>
				<displayName count="other">Ostkaribische Dollar</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Sonderziehungsrechte</displayName>
				<displayName count="other">Sonderziehungsrechte</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Europäische Währungseinheit (XEU)</displayName>
				<displayName count="other">Europäische Währungseinheiten (XEU)</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Französischer Gold-Franc</displayName>
				<displayName count="other">Französische Gold-Franc</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Französischer UIC-Franc</displayName>
				<displayName count="other">Französische UIC-Franc</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA Franc (West)</displayName>
				<displayName count="other">CFA-Franc (BCEAO)</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Palladium</displayName>
				<displayName count="other">Palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP Franc</displayName>
				<displayName count="other">CFP-Franc</displayName>
			</currency>
			<currency type="XPT">
				<displayName>Platin</displayName>
				<displayName count="other">Platin</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET Funds</displayName>
				<displayName count="other">RINET Funds</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Testwährung</displayName>
				<displayName count="other">Testwährung</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Unbekannte Währung</displayName>
				<displayName count="one">Unbekannte Währung</displayName>
				<displayName count="other">Unbekannte Währung</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemen Dinar</displayName>
				<displayName count="other">Jemen-Dinar</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemen Rial</displayName>
				<displayName count="other">Jemen-Rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Jugoslawischer Dinar (1966-1990)</displayName>
				<displayName count="other">Jugoslawische Dinar</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Neuer Dinar</displayName>
				<displayName count="other">Jugoslawische Neue Dinar</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslawischer Dinar (konvertibel)</displayName>
				<displayName count="other">Jugoslawische Dinar (konvertibel)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand</displayName>
				<displayName count="other">Rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Kwacha</displayName>
				<displayName count="other">Kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Neuer Zaire</displayName>
				<displayName count="other">Neue Zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire</displayName>
				<displayName count="other">Zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Simbabwe Dollar</displayName>
				<displayName count="other">Simbabwe-Dollar</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} Tag</unitPattern>
			<unitPattern count="other">{0} Tage</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} Stunde</unitPattern>
			<unitPattern count="other">{0} Stunden</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} Minute</unitPattern>
			<unitPattern count="other">{0} Minuten</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} Monat</unitPattern>
			<unitPattern count="other">{0} Monate</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} Sekunde</unitPattern>
			<unitPattern count="other">{0} Sekunden</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} Woche</unitPattern>
			<unitPattern count="other">{0} Wochen</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} Jahr</unitPattern>
			<unitPattern count="other">{0} Jahre</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nein:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�]�##Locale/Data/de_DE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="de"/>
		<territory type="DE"/>
	</identity>
</ldml>
PKpG[����Locale/Data/id.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.66 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="id"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abkhaz</language>
			<language type="ace">Aceh</language>
			<language type="ach">Acoli</language>
			<language type="ada">Adangme</language>
			<language type="ady">Adyghe</language>
			<language type="ae">Avestan</language>
			<language type="af">Afrikaans</language>
			<language type="afa">Afro-Asiatik (Lainnya)</language>
			<language type="afh">Afrihili</language>
			<language type="ain">Ainu</language>
			<language type="ak">Akan</language>
			<language type="akk">Akkadien</language>
			<language type="ale">Aleut</language>
			<language type="alg">Bahasa Algonquia</language>
			<language type="alt">Altai Selatan</language>
			<language type="am">Amharik</language>
			<language type="an">Aragon</language>
			<language type="ang">Inggris Kuno (kl.450-1100)</language>
			<language type="anp">Angika</language>
			<language type="apa">Bahasa-bahasa Apache</language>
			<language type="ar">Arab</language>
			<language type="arc">Aram</language>
			<language type="arn">Araucan</language>
			<language type="arp">Arapaho</language>
			<language type="art">Buatan (Lainnya)</language>
			<language type="arw">Arawak</language>
			<language type="as">Assam</language>
			<language type="ast">Astur</language>
			<language type="ath">Bahasa-bahasa Athapaska</language>
			<language type="aus">Bahasa-bahasa Australia</language>
			<language type="av">Avarik</language>
			<language type="awa">Awadhi</language>
			<language type="ay">Aymara</language>
			<language type="az">Azerbaijan</language>
			<language type="ba">Bashkir</language>
			<language type="bad">Banda</language>
			<language type="bai">Bahasa-bahasa Bamileke</language>
			<language type="bal">Baluchi</language>
			<language type="ban">Balin</language>
			<language type="bas">Basa</language>
			<language type="bat">Baltik (Lainnya)</language>
			<language type="be">Belarusia</language>
			<language type="bej">Beja</language>
			<language type="bem">Bemba</language>
			<language type="ber">Berber</language>
			<language type="bg">Bulgaria</language>
			<language type="bh">Bihari</language>
			<language type="bho">Bhojpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol</language>
			<language type="bin">Bini</language>
			<language type="bla">Siksika</language>
			<language type="bm">Bambara</language>
			<language type="bn">Bengal</language>
			<language type="bnt">Bantu</language>
			<language type="bo">Tibet</language>
			<language type="br">Breton</language>
			<language type="bra">Braj</language>
			<language type="bs">Bosnia</language>
			<language type="btk">Batak</language>
			<language type="bua">Buriat</language>
			<language type="bug">Bugis</language>
			<language type="byn">Blin</language>
			<language type="ca">Catalan</language>
			<language type="cad">Caddo</language>
			<language type="cai">India Amerika Tengah (Lainnnya)</language>
			<language type="car">Karib</language>
			<language type="cau">Kaukasia (Lainnya)</language>
			<language type="cch">Atsam</language>
			<language type="ce">Chechen</language>
			<language type="ceb">Cebuano</language>
			<language type="cel">Celtic (Lainnya)</language>
			<language type="ch">Chamorro</language>
			<language type="chb">Chibcha</language>
			<language type="chg">Chagatai</language>
			<language type="chk">Chuuke</language>
			<language type="chm">Mari</language>
			<language type="chn">Jargon Chinook</language>
			<language type="cho">Choctaw</language>
			<language type="chp">Chipewyan</language>
			<language type="chr">Cherokee</language>
			<language type="chy">Cheyenne</language>
			<language type="cmc">Bahasa Chamic</language>
			<language type="co">Korsika</language>
			<language type="cop">Koptik</language>
			<language type="cpe">Kreol dan Pidgins Lain Berbasis Inggris</language>
			<language type="cpf">Kreol dan Pidgins Lain berbasis Prancis</language>
			<language type="cpp">Kreol dan Pidgins Lain berbasis Portugis</language>
			<language type="cr">Cree</language>
			<language type="crh">Turki Krimea</language>
			<language type="crp">Kreol dan Pidgins Lain</language>
			<language type="cs">Ceko</language>
			<language type="csb">Kashubian</language>
			<language type="cu">Church Slavic</language>
			<language type="cus">Cushitic Lain</language>
			<language type="cv">Chuvash</language>
			<language type="cy">Welsh</language>
			<language type="da">Denmark</language>
			<language type="dak">Dakota</language>
			<language type="dar">Dargwa</language>
			<language type="day">Dayak</language>
			<language type="de">Jerman</language>
			<language type="de_AT">Jerman Austria</language>
			<language type="de_CH">Jerman Tinggi Swiss</language>
			<language type="del">Delaware</language>
			<language type="den">Slave</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka</language>
			<language type="doi">Dogri</language>
			<language type="dra">Dravidia Lain</language>
			<language type="dsb">Sorbia Rendahan</language>
			<language type="dua">Duala</language>
			<language type="dum">Belanda Menengah</language>
			<language type="dv">Divehi</language>
			<language type="dyu">Dyula</language>
			<language type="dz">Dzongkha</language>
			<language type="ee">Ewe</language>
			<language type="efi">Efik</language>
			<language type="egy">Mesir Kuno</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Yunani</language>
			<language type="elx">Elamite</language>
			<language type="en">Inggris</language>
			<language type="en_AU">Inggris Australia</language>
			<language type="en_CA">Inggris Kanada</language>
			<language type="en_GB">Inggris (British)</language>
			<language type="en_US">Inggris A.S.</language>
			<language type="enm">Inggris, Abad Pertengahan (1100-1500)</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanyol</language>
			<language type="es_419">Spanyol Amerika Latin</language>
			<language type="es_ES">Spanyol (Iberia)</language>
			<language type="et">Estonian</language>
			<language type="eu">Basque</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Persia</language>
			<language type="fan">Fang</language>
			<language type="fat">Fanti</language>
			<language type="ff">Fulah</language>
			<language type="fi">Finlandia</language>
			<language type="fil">Filipina</language>
			<language type="fiu">Finno - Ugria Lain</language>
			<language type="fj">Fiji</language>
			<language type="fo">Faro</language>
			<language type="fon">Fon</language>
			<language type="fr">Perancis</language>
			<language type="fr_CA">Prancis Kanada</language>
			<language type="fr_CH">Prancis Swiss</language>
			<language type="frm">Perancis, Abad Pertengahan (kl.1400-1600)</language>
			<language type="fro">Perancis Kuno (842-kl.1400)</language>
			<language type="frr">Frisia Utara</language>
			<language type="frs">Frisia Timur</language>
			<language type="fur">Friuli</language>
			<language type="fy">Frisi</language>
			<language type="ga">Irlandia</language>
			<language type="gaa">Ga</language>
			<language type="gay">Gayo</language>
			<language type="gba">Gbaya</language>
			<language type="gd">Gaelik Skotlandia</language>
			<language type="gem">Jermanik (Lainnya)</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbert</language>
			<language type="gl">Gallegan</language>
			<language type="gmh">Jerman, Abad Pertengahan (kl.1050-1500)</language>
			<language type="gn">Guarani</language>
			<language type="goh">Jerman Kuno (kl.750-1050)</language>
			<language type="gon">Gondi</language>
			<language type="gor">Gorontalo</language>
			<language type="got">Gothik</language>
			<language type="grb">Grebo</language>
			<language type="grc">Yunani Kuno (sd 1453)</language>
			<language type="gsw">Jerman Swiss</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manx</language>
			<language type="gwi">Gwich'in</language>
			<language type="ha">Hausa</language>
			<language type="hai">Haida</language>
			<language type="haw">Hawaii</language>
			<language type="he">Ibrani</language>
			<language type="hi">Hindi</language>
			<language type="hil">Hiligaynon</language>
			<language type="him">Himachali</language>
			<language type="hit">Hittite</language>
			<language type="hmn">Hmong</language>
			<language type="ho">Hiri Motu</language>
			<language type="hr">Kroasia</language>
			<language type="hsb">Sorbia Atas</language>
			<language type="ht">Haiti</language>
			<language type="hu">Hungaria</language>
			<language type="hup">Hupa</language>
			<language type="hy">Armenia</language>
			<language type="hz">Herero</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Bahasa Indonesia</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Ijo</language>
			<language type="ik">Inupiaq</language>
			<language type="ilo">Iloko</language>
			<language type="inc">Indic Lain</language>
			<language type="ine">Indo-Eropa Lain</language>
			<language type="inh">Ingush</language>
			<language type="io">Ido</language>
			<language type="ira">Iran Lain</language>
			<language type="iro">Bahasa Iroquoia</language>
			<language type="is">Icelandic</language>
			<language type="it">Italian</language>
			<language type="iu">Inuktitut</language>
			<language type="ja">Japanese</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Judeo-Persia</language>
			<language type="jrb">Judeo-Arab</language>
			<language type="jv">Jawa</language>
			<language type="ka">Georgian</language>
			<language type="kaa">Kara-Kalpak</language>
			<language type="kab">Kabyle</language>
			<language type="kac">Kachin</language>
			<language type="kaj">Jju</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karen</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardian</language>
			<language type="kcg">Tyap</language>
			<language type="kfo">Koro</language>
			<language type="kg">Kongo</language>
			<language type="kha">Khasi</language>
			<language type="khi">Khoisa Lain</language>
			<language type="kho">Khotan</language>
			<language type="ki">Kikuyu</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">Kazakh</language>
			<language type="kl">Kalaallisut</language>
			<language type="km">Khmer</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korea</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosrae</language>
			<language type="kpe">Kpelle</language>
			<language type="kr">Kanuri</language>
			<language type="krc">Karachay-Balkar</language>
			<language type="krl">Karelian</language>
			<language type="kro">Kru</language>
			<language type="kru">Kurukh</language>
			<language type="ks">Kashmir</language>
			<language type="ku">Kurdi</language>
			<language type="kum">Kumyk</language>
			<language type="kut">Kutenai</language>
			<language type="kv">Komi</language>
			<language type="kw">Cornish</language>
			<language type="ky">Kirghiz</language>
			<language type="la">Latin</language>
			<language type="lad">Ladino</language>
			<language type="lah">Lahnda</language>
			<language type="lam">Lamba</language>
			<language type="lb">Luxembourg</language>
			<language type="lez">Lezghia</language>
			<language type="lg">Ganda</language>
			<language type="li">Limburg</language>
			<language type="ln">Lingala</language>
			<language type="lo">Lao</language>
			<language type="lol">Mongo</language>
			<language type="loz">Lozi</language>
			<language type="lt">Lithuania</language>
			<language type="lu">Luba-Katanga</language>
			<language type="lua">Luba-Lulua</language>
			<language type="lui">Luiseno</language>
			<language type="lun">Lunda</language>
			<language type="luo">Luo</language>
			<language type="lus">Lushai</language>
			<language type="lv">Latvian</language>
			<language type="mad">Madura</language>
			<language type="mag">Magahi</language>
			<language type="mai">Maithili</language>
			<language type="mak">Makassar</language>
			<language type="man">Mandingo</language>
			<language type="map">Austronesia</language>
			<language type="mas">Masai</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandar</language>
			<language type="men">Mende</language>
			<language type="mg">Malagasi</language>
			<language type="mga">Irlandia Abad Pertengahan (900-1200)</language>
			<language type="mh">Marshall</language>
			<language type="mi">Maori</language>
			<language type="mic">Micmac</language>
			<language type="min">Minangkabau</language>
			<language type="mis">Bahasa Lain-lain</language>
			<language type="mk">Macedonian</language>
			<language type="mkh">Mon-Khmer (Lainnya)</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongolian</language>
			<language type="mnc">Manchu</language>
			<language type="mni">Manipuri</language>
			<language type="mno">Bahasa Manobo</language>
			<language type="mo">Moldavian</language>
			<language type="moh">Mohawk</language>
			<language type="mos">Mossi</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malay</language>
			<language type="mt">Maltese</language>
			<language type="mul">Beberapa Bahasa</language>
			<language type="mun">Bahasa Munda</language>
			<language type="mus">Creek</language>
			<language type="mwl">Mirand</language>
			<language type="mwr">Marwari</language>
			<language type="my">Burma</language>
			<language type="myn">Bahasa Mayan</language>
			<language type="myv">Erzya</language>
			<language type="na">Nauru</language>
			<language type="nah">Nahuati</language>
			<language type="nai">Indian Amerika Utara Lain</language>
			<language type="nap">Neapolitan</language>
			<language type="nb">Norwegian Bokmål</language>
			<language type="nd">Ndebele Utara</language>
			<language type="nds">Jerman Rendah</language>
			<language type="ne">Nepal</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nias</language>
			<language type="nic">Niger - Kordofania Lain</language>
			<language type="niu">Niuea</language>
			<language type="nl">Belanda</language>
			<language type="nl_BE">Flemish</language>
			<language type="nn">Norwegian Nynorsk</language>
			<language type="no">Norwegian</language>
			<language type="nog">Nogai</language>
			<language type="non">Norse Lama</language>
			<language type="nqo">N'Ko</language>
			<language type="nr">Ndebele Selatan</language>
			<language type="nso">Sotho Utara</language>
			<language type="nub">Bahasa Nubia</language>
			<language type="nv">Navajo</language>
			<language type="nwc">Newari Klasik</language>
			<language type="ny">Nyanja; Chichewa; Chewa</language>
			<language type="nym">Nyamwezi</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Nyoro</language>
			<language type="nzi">Nzima</language>
			<language type="oc">Bahasa Occit</language>
			<language type="oj">Ojibwa</language>
			<language type="om">Oromo</language>
			<language type="or">Oriya</language>
			<language type="os">Ossetic</language>
			<language type="osa">Osage</language>
			<language type="ota">Turki Ottoman</language>
			<language type="oto">Bahasa Otomia</language>
			<language type="pa">Punjabi</language>
			<language type="paa">Papuan (Lainnya)</language>
			<language type="pag">Pangasina</language>
			<language type="pal">Pahlavi</language>
			<language type="pam">Pampanga</language>
			<language type="pap">Papiamento</language>
			<language type="pau">Palaua</language>
			<language type="peo">Persia Kuno (kl.600-400 SM.)</language>
			<language type="phi">Filipina (Lainnya)</language>
			<language type="phn">Phoenicia</language>
			<language type="pi">Pali</language>
			<language type="pl">Polish</language>
			<language type="pon">Pohnpeia</language>
			<language type="pra">Bahasa Prakrit</language>
			<language type="pro">Provençal Lama</language>
			<language type="ps">Pashto (Pushto)</language>
			<language type="pt">Portugis</language>
			<language type="pt_BR">Portugis Brasil</language>
			<language type="pt_PT">Portugis (Iberia)</language>
			<language type="qu">Quechua</language>
			<language type="raj">Rajasthani</language>
			<language type="rap">Rapanui</language>
			<language type="rar">Rarotongan</language>
			<language type="rm">Rhaeto-Romance</language>
			<language type="rn">Rundi</language>
			<language type="ro">Romanian</language>
			<language type="roa">Romance Lain</language>
			<language type="rom">Romany</language>
			<language type="root">Root</language>
			<language type="ru">Russian</language>
			<language type="rup">Aromanian</language>
			<language type="rw">Kinyarwanda</language>
			<language type="sa">Sanskrit</language>
			<language type="sad">Sandawe</language>
			<language type="sah">Yakut</language>
			<language type="sai">Indian Amerika Selatan Lain</language>
			<language type="sal">Bahasa Salisha</language>
			<language type="sam">Aramaic Samaritan</language>
			<language type="sas">Sasak</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardinian</language>
			<language type="scn">Sisilia</language>
			<language type="sco">Skotlandia</language>
			<language type="sd">Sindhi</language>
			<language type="se">Northern Sami</language>
			<language type="sel">Selkup</language>
			<language type="sem">Semitic Lain</language>
			<language type="sg">Sango</language>
			<language type="sga">Irlandia Lama</language>
			<language type="sgn">Bahasa Isyarat</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="shn">Shan</language>
			<language type="si">Sinhalese</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Bahasa Siouan</language>
			<language type="sit">Sino-Tibet Lain</language>
			<language type="sk">Slovak</language>
			<language type="sl">Slovenian</language>
			<language type="sla">Slavic Lain</language>
			<language type="sm">Samoan</language>
			<language type="sma">Sami Selatan</language>
			<language type="smi">Bahasa Sami Lain</language>
			<language type="smj">Lule Sami</language>
			<language type="smn">Inari Sami</language>
			<language type="sms">Skolt Sami</language>
			<language type="sn">Shona</language>
			<language type="snk">Soninke</language>
			<language type="so">Somali</language>
			<language type="sog">Sogdien</language>
			<language type="son">Songhai</language>
			<language type="sq">Albanian</language>
			<language type="sr">Serbian</language>
			<language type="srn">Sranan Tongo</language>
			<language type="srr">Serer</language>
			<language type="ss">Swati</language>
			<language type="ssa">Nilo-Sahara Lain</language>
			<language type="st">Sotho Selatan</language>
			<language type="su">Sundan</language>
			<language type="suk">Sukuma</language>
			<language type="sus">Susu</language>
			<language type="sux">Sumeria</language>
			<language type="sv">Swedia</language>
			<language type="sw">Swahili</language>
			<language type="syr">Syria</language>
			<language type="ta">Tamil</language>
			<language type="tai">Tai Lain</language>
			<language type="te">Telugu</language>
			<language type="tem">Timne</language>
			<language type="ter">Tereno</language>
			<language type="tet">Tetum</language>
			<language type="tg">Tajik</language>
			<language type="th">Thai</language>
			<language type="ti">Tigrinya</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv</language>
			<language type="tk">Turkmen</language>
			<language type="tkl">Tokelau</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tli">Tingit</language>
			<language type="tmh">Tamashek</language>
			<language type="tn">Tswana</language>
			<language type="to">Tonga</language>
			<language type="tog">Nyasa Tonga</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">Turkish</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Tsimshian</language>
			<language type="tt">Tatar</language>
			<language type="tum">Tumbuka</language>
			<language type="tup">Bahasa Tupi</language>
			<language type="tut">Altaic Lain</language>
			<language type="tvl">Tuvalu</language>
			<language type="tw">Twi</language>
			<language type="ty">Tahitian</language>
			<language type="tyv">Tuvinia</language>
			<language type="udm">Udmurt</language>
			<language type="ug">Uighur</language>
			<language type="uga">Ugaritik</language>
			<language type="uk">Ukrainian</language>
			<language type="umb">Umbundu</language>
			<language type="und">Bahasa Tidak Dikenal atau Tidak Valid</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbek</language>
			<language type="vai">Vai</language>
			<language type="ve">Venda</language>
			<language type="vi">Vietnamese</language>
			<language type="vo">Volapük</language>
			<language type="vot">Votik</language>
			<language type="wa">Walloon</language>
			<language type="wak">Bahasa Wakasha</language>
			<language type="wal">Walamo</language>
			<language type="war">Waray</language>
			<language type="was">Washo</language>
			<language type="wen">Bahasa Serbia</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmyk</language>
			<language type="xh">Xhosa</language>
			<language type="yao">Yao</language>
			<language type="yap">Yap</language>
			<language type="yi">Yiddish</language>
			<language type="yo">Yoruba</language>
			<language type="ypk">Bahasa Yupik</language>
			<language type="za">Zhuang</language>
			<language type="zap">Zapotek</language>
			<language type="zen">Zenaga</language>
			<language type="zh">Cina</language>
			<language type="zh_Hans">Cina Sederhana</language>
			<language type="zh_Hant">Cina Tradisional</language>
			<language type="znd">Zande</language>
			<language type="zu">Zulu</language>
			<language type="zun">Zuni</language>
			<language type="zxx">Tidak ada konten linguistik</language>
			<language type="zza">Zaza</language>
		</languages>
		<scripts>
			<script type="Armn">Armenia</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengali</script>
			<script type="Blis">Blissymbols</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brahmi</script>
			<script type="Brai">Braile</script>
			<script type="Bugi">Bugis</script>
			<script type="Buhd">Buhid</script>
			<script type="Cans">Simbol Aborigin Kanada Kesatuan</script>
			<script type="Cari">Carian</script>
			<script type="Cher">Cherokee</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Coptic</script>
			<script type="Cprt">Cypriot</script>
			<script type="Cyrl">Cyrillic</script>
			<script type="Cyrs">Church Slavonic Cyrillic Lama</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Demotik Mesir</script>
			<script type="Egyh">Hieratik Mesir</script>
			<script type="Egyp">Hieroglip Mesir</script>
			<script type="Ethi">Ethiopic</script>
			<script type="Geok">Georgian Khutsuri</script>
			<script type="Geor">Georgian</script>
			<script type="Glag">Glagolitic</script>
			<script type="Goth">Gothic</script>
			<script type="Grek">Yunani</script>
			<script type="Gujr">Gujarat</script>
			<script type="Guru">Gurmukhi</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Han</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Han Sederhana</script>
			<script type="Hant">Han Tradisional</script>
			<script type="Hebr">Ibrani</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh Hmong</script>
			<script type="Hrkt">Katakana atau Hiragana</script>
			<script type="Hung">Hongaria Lama</script>
			<script type="Inds">Indus</script>
			<script type="Ital">Italia Lama</script>
			<script type="Java">Jawa</script>
			<script type="Jpan">Jepang</script>
			<script type="Kali">Kayah Li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Lao</script>
			<script type="Latf">Latin Fraktur</script>
			<script type="Latg">Latin Gaelic</script>
			<script type="Latn">Latin</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Linear A</script>
			<script type="Linb">Linear B</script>
			<script type="Lyci">Lycian</script>
			<script type="Lydi">Lydian</script>
			<script type="Mand">Mandaean</script>
			<script type="Maya">Hieroglip Maya</script>
			<script type="Mero">Meroitic</script>
			<script type="Mlym">Malayalam</script>
			<script type="Mong">Mongol</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei Mayek</script>
			<script type="Mymr">Myanmar</script>
			<script type="Nkoo">N'Ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Chiki Lama</script>
			<script type="Orkh">Orkhon</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Osmanya</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phnx">Phoenix</script>
			<script type="Plrd">Fonetik Pollard</script>
			<script type="Qaai">Warisan</script>
			<script type="Rjng">Rejang</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runic</script>
			<script type="Sara">Sarati</script>
			<script type="Saur">Saurashtra</script>
			<script type="Sgnw">Tulisan Isyarat</script>
			<script type="Shaw">Shavian</script>
			<script type="Sinh">Sinhala</script>
			<script type="Sund">Sunda</script>
			<script type="Sylo">Syloti Nagri</script>
			<script type="Syrc">Syriac</script>
			<script type="Syre">Siria Estrangelo</script>
			<script type="Syrj">Syriac Barat</script>
			<script type="Syrn">Siria Timur</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">Tai Lue Baru</script>
			<script type="Taml">Tamil</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tenghwar</script>
			<script type="Tfng">Tifinagh</script>
			<script type="Tglg">Tagalog</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thai</script>
			<script type="Tibt">Tibet</script>
			<script type="Ugar">Ugaritic</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Ucapan Terlihat</script>
			<script type="Xsux">Sumero-Akkadian Cuneiform</script>
			<script type="Yiii">Yi</script>
			<script type="Zxxx">Tidak tertulis</script>
			<script type="Zyyy">Common</script>
			<script type="Zzzz">Skrip tidak diketahui atau tidak valid</script>
		</scripts>
		<territories>
			<territory type="AD">Andora</territory>
			<territory type="AE">Uni Emirat Arab</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua dan Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antilles Belanda</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Amerika</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">�Land Islands</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia dan Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Kepulauan Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Belarusia</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kepulauan Cocos</territory>
			<territory type="CD">Republik Demokratik Kongo</territory>
			<territory type="CF">Republik Afrika Tengah</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Swiss</territory>
			<territory type="CI">Pantai Gading</territory>
			<territory type="CK">Kepulauan Cook</territory>
			<territory type="CL">Chili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Cina</territory>
			<territory type="CO">Kolombia</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Serbia dan Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Tanjung Verde</territory>
			<territory type="CX">Pulau Christmas</territory>
			<territory type="CY">Siprus</territory>
			<territory type="CZ">Republik Ceko</territory>
			<territory type="DE">Jerman</territory>
			<territory type="DJ">Jibouti</territory>
			<territory type="DK">Denmark</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Republik Dominika</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ekuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Mesir</territory>
			<territory type="EH">Sahara Barat</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanyol</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Kepulauan Falkland</territory>
			<territory type="FM">Mikronesia</territory>
			<territory type="FO">Kepulauan Faroe</territory>
			<territory type="FR">Perancis</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Inggris Raya</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guyana Perancis</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Greenland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Guinea Khatulistiwa</territory>
			<territory type="GR">Yunani</territory>
			<territory type="GS">Georgia Selatan dan Kepulauan Sandwich Selatan</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong S.A.R., Cina</territory>
			<territory type="HM">Pulau Heard dan Kepulauan McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroasia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungaria</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlandia</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">British Indian Ocean Territory</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islandia</territory>
			<territory type="IT">Itali</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Yordania</territory>
			<territory type="JP">Jepang</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kyrgyzstan</territory>
			<territory type="KH">Kamboja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoros</territory>
			<territory type="KN">Saint Kitts dan Nevis</territory>
			<territory type="KP">Korea Utara</territory>
			<territory type="KR">Korea Selatan</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Kepulauan Kayman</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lebanon</territory>
			<territory type="LC">Santa Lusia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lithuania</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Kepulauan Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Makao S.A.R. Cina</territory>
			<territory type="MP">Kepualuan Mariana Utara</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Kaledonia Baru</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Kepulauan Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Netherlands</territory>
			<territory type="NO">Norwegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Selandia Baru</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polynesia Perancis</territory>
			<territory type="PG">Papua Nugini</territory>
			<territory type="PH">Filipina</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polandia</territory>
			<territory type="PM">Saint Pierre dan Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Riko</territory>
			<territory type="PS">Otoritas Palestina</territory>
			<territory type="PT">Portugis</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Rusia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Arab Saudi</territory>
			<territory type="SB">Kepulauan Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sweden</territory>
			<territory type="SG">Singapura</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard dan Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tome dan Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Kepulauan Turks dan Caicos</territory>
			<territory type="TD">Chad</territory>
			<territory type="TF">Wilayah Prancis Selatan</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tajikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Timur</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkey</territory>
			<territory type="TT">Trinidad dan Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Kepulauan minor sekitar Amerika Serikat</territory>
			<territory type="US">Amerika Serikat</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent dan Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Kepulauan British Virgin</territory>
			<territory type="VI">Kepulauan U.S. Virgin</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis dan Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yaman</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Afrika Selatan</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-n {ng} {ny} o p r-w y]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Agu</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januari</month>
							<month type="2">Februari</month>
							<month type="3">Maret</month>
							<month type="4">April</month>
							<month type="5">Mei</month>
							<month type="6">Juni</month>
							<month type="7">Juli</month>
							<month type="8">Agustus</month>
							<month type="9">September</month>
							<month type="10">Oktober</month>
							<month type="11">November</month>
							<month type="12">Desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Min</day>
							<day type="mon">Sen</day>
							<day type="tue">Sel</day>
							<day type="wed">Rab</day>
							<day type="thu">Kam</day>
							<day type="fri">Jum</day>
							<day type="sat">Sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Minggu</day>
							<day type="mon">Senin</day>
							<day type="tue">Selasa</day>
							<day type="wed">Rabu</day>
							<day type="thu">Kamis</day>
							<day type="fri">Jumat</day>
							<day type="sat">Sabtu</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">kuartal pertama</quarter>
							<quarter type="2">kuartal kedua</quarter>
							<quarter type="3">kuartal ketiga</quarter>
							<quarter type="4">kuartal keempat</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Anguila</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Kutub Selatan</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Easter Island</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kosta Rika</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Canary Islands</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makau</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapura</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska Time</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>Dirham Uni Emirat Arab</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso Argentina</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dolar Australia</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Lev Bulgaria</displayName>
			</currency>
			<currency type="BND">
				<displayName>Dollar Brunei</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano Bolivia</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real Brazil</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Dolar Kanada</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franc Swiss</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso Chili</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi</displayName>
			</currency>
			<currency type="COP">
				<displayName>Peso Kolombia</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Koruna Czech</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Mark Jerman</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Kroner Denmark</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Kroon Estonia</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Pound Mesir</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dollar Fiji</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Frank Prancis</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Pondsterling Inggris</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Dolar Hong Kong</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna Kroasia</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forint Hungaria</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Rupiah Indonesia</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="ILS">
				<displayName>Shekel Israel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupee India</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yen Jepang</displayName>
			</currency>
			<currency type="KES">
				<displayName>Shilling Kenya</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won Korea Selatan</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litas Lithuania</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Dirham Maroko</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Lira Malta</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Peso Meksiko</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit Malaysia</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Kroner Norwegia</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Dolar New Zealand</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Nuevo Sol Peruvian</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso Filipina</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupee Pakistan</displayName>
			</currency>
			<currency type="PLN">
				<displayName>NewZloty Polandia</displayName>
			</currency>
			<currency type="RON">
				<displayName>Leu Rumania Baru</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Dinar Serbia</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rubel Rusia</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Real Saudi</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Kronor Swedia</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Dolar Singapura</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar Slovenia</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Koruna Slovakia</displayName>
			</currency>
			<currency type="THB">
				<displayName>Baht Thailand</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira Turki</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Lira Turki Baru</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Dolar Taiwan Baru</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Hryvnia Ukrania</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dolar Amerika</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivar Venezuela</displayName>
			</currency>
			<currency type="VND">
				<displayName>Dong Vietnam</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand Afrika Selatan</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ya:y</yesstr>
			<nostr>tidak:t</nostr>
		</messages>
	</posix>
</ldml>
PKpG[C��""Locale/Data/wo_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.12 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wo"/>
		<script type="Latn"/>
	</identity>
</ldml>
PKpG[>#$�]]Locale/Data/Translation.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Locale
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Locale.php 5357 2007-06-16 19:56:21Z thomas $
 */

/**
 * Definition class for all Windows locales
 *
 * @category  Zend
 * @package   Zend_Locale
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Data_Translation
{
    /**
     * Locale Translation for Full Named Locales
     *
     * @var array $localeTranslation
     */
    public static $localeTranslation = array(
        'Australia'       => 'AU',
        'Austria'         => 'AT',
        'Belgium'         => 'BE',
        'Brazil'          => 'BR',
        'Canada'          => 'CA',
        'China'           => 'CN',
        'Czech Republic'  => 'CZ',
        'Denmark'         => 'DK',
        'Finland'         => 'FI',
        'France'          => 'FR',
        'Germany'         => 'DE',
        'Greece'          => 'GR',
        'Hong Kong SAR'   => 'HK',
        'Hungary'         => 'HU',
        'Iceland'         => 'IS',
        'Ireland'         => 'IE',
        'Italy'           => 'IT',
        'Japan'           => 'JP',
        'Korea'           => 'KP',
        'Mexiko'          => 'MX',
        'The Netherlands' => 'NL',
        'New Zealand'     => 'NZ',
        'Norway'          => 'NO',
        'Poland'          => 'PL',
        'Portugal'        => 'PT',
        'Russia'          => 'RU',
        'Singapore'       => 'SG',
        'Slovakia'        => 'SK',
        'Spain'           => 'ES',
        'Sweden'          => 'SE',
        'Taiwan'          => 'TW',
        'Turkey'          => 'TR',
        'United Kingdom'  => 'GB',
        'United States'   => 'US',

        'Chinese'         => 'zh',
        'Czech'           => 'cs',
        'Danish'          => 'da',
        'Dutch'           => 'nl',
        'English'         => 'en',
        'Finnish'         => 'fi',
        'French'          => 'fr',
        'German'          => 'de',
        'Greek'           => 'el',
        'Hungarian'       => 'hu',
        'Icelandic'       => 'is',
        'Italian'         => 'it',
        'Japanese'        => 'ja',
        'Korean'          => 'ko',
        'Norwegian'       => 'no',
        'Polish'          => 'pl',
        'Portuguese'      => 'pt',
        'Russian'         => 'ru',
        'Slovak'          => 'sk',
        'Spanish'         => 'es',
        'Swedish'         => 'sv',
        'Turkish'         => 'tr'
    );
}
PKpG[��9�00Locale/Data/zu.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zu"/>
	</identity>
	<fallback>en_ZA</fallback>
	<localeDisplayNames>
		<languages>
			<language type="af">isiBhunu</language>
			<language type="am">Isi-Amaharikhi</language>
			<language type="ar">isi-Alabhu</language>
			<language type="as">Assamese</language>
			<language type="az">Isi-Azebhayijani</language>
			<language type="be">IsiBhelarashiyani</language>
			<language type="bg">Isi-Bulgaria</language>
			<language type="bh">IsiBhihari</language>
			<language type="bn">IsiBhengali</language>
			<language type="br">isihlobo sase Britain</language>
			<language type="bs">IsiBhosiniyani</language>
			<language type="ca">IsiKhathalani</language>
			<language type="cs">Isi-Czech</language>
			<language type="cy">IsiWelshi</language>
			<language type="da">IsiDenishi</language>
			<language type="de">isiJalimani</language>
			<language type="el">IsiGreki</language>
			<language type="en">isiNgisi</language>
			<language type="eo">Isi-Esperanto</language>
			<language type="es">isiSpeyini</language>
			<language type="et">Isi-Esistoniya</language>
			<language type="eu">Isi-Basque</language>
			<language type="fa">IsiPheshiyani</language>
			<language type="fi">isiFinnish</language>
			<language type="fil">IsiThagalogi</language>
			<language type="fo">Isifaro</language>
			<language type="fr">isiFulentshi</language>
			<language type="fy">IsiFriziyani</language>
			<language type="ga">Isi-Irishi</language>
			<language type="gd">I-Scots Gaelic</language>
			<language type="gl">Isi-Galashiya</language>
			<language type="gn">Gurani</language>
			<language type="gu">IsiGujarati</language>
			<language type="he">IsiHebheru</language>
			<language type="hi">isiHindi</language>
			<language type="hr">Isi-Croatia</language>
			<language type="hu">IsiHangari</language>
			<language type="hy">Armenian</language>
			<language type="ia">Izilimi ezihlangene</language>
			<language type="id">Isi-Indonesia</language>
			<language type="ie">Izilimu</language>
			<language type="is">Isi-Icelandic</language>
			<language type="it">isItalian</language>
			<language type="ja">IsiJaphani</language>
			<language type="jv">IsiJavanisi</language>
			<language type="ka">IsiJojiyani</language>
			<language type="km">Cambodian</language>
			<language type="kn">Ikhanada</language>
			<language type="ko">IsiKoriya</language>
			<language type="ku">ulimu lwama Kudishi</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">IsiLathini</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laothian</language>
			<language type="lt">Isi-Lithuanian</language>
			<language type="lv">Isi-Latvian</language>
			<language type="mk">IsiMakhedoniya</language>
			<language type="ml">IsiMalayami</language>
			<language type="mn">Mongolian</language>
			<language type="mr">IsiMarathi</language>
			<language type="ms">IsiMalayi</language>
			<language type="mt">IsiMalithize</language>
			<language type="ne">IsiNepali</language>
			<language type="nl">Isi-Dutch</language>
			<language type="nn">IsiNowejiyani (Nynorsk)</language>
			<language type="no">IsiNoweyi</language>
			<language type="oc">Isi-Osithani</language>
			<language type="or">Oriya</language>
			<language type="pa">IsiPhunjabi</language>
			<language type="pl">IsiPholisi</language>
			<language type="ps">Pashto</language>
			<language type="pt">IsiPotukezi</language>
			<language type="pt_BR">Isiputukezi (Brazil)</language>
			<language type="pt_PT">IsiPotukezi (Ephothugali)</language>
			<language type="ro">IsiRomani</language>
			<language type="ru">IsiRashiya</language>
			<language type="sa">Sanskrit</language>
			<language type="sd">Sindhi</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="si">IsiSinhalese</language>
			<language type="sk">IsiSlovaki</language>
			<language type="sl">IsiSlovakiyani</language>
			<language type="so">Somali</language>
			<language type="sq">Isi-Albania</language>
			<language type="sr">Isi-Sebhiya</language>
			<language type="st">isiSuthu</language>
			<language type="su">IsiSundanizi</language>
			<language type="sv">IsiSwidishi</language>
			<language type="sw">isiSwahili</language>
			<language type="ta">IsiThamil</language>
			<language type="te">IsiThelugu</language>
			<language type="th">IsiThayi</language>
			<language type="ti">IsiTigrinya</language>
			<language type="tk">umuntu wase Turkmenistan.</language>
			<language type="tlh">IsiKlingoni</language>
			<language type="tr">IsiThekishi</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Isi-Ukrain</language>
			<language type="ur">Isi-Udu</language>
			<language type="uz">Isi-Uzibheki</language>
			<language type="vi">IsiVietnamise</language>
			<language type="xh">isiXhosa</language>
			<language type="yi">ulimu olwi Yidish</language>
			<language type="zu">isiZulu</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b {bh} c {ch} d {dl} {dy} e-g {gc} {gq} {gx} h {hh} {hl} i-k {kh} {kl} {kp} l-n {nc} {ngc} {ngq} {ngx} {nhl} {nk} {nkc} {nkq} {nkx} {nq} {ntsh} {nx} {ny} o p {ph} q {qh} r {rh} s {sh} t {th} {tl} {ts} {tsh} u-x {xh} y z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mas</month>
							<month type="4">Apr</month>
							<month type="5">Mey</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aga</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januwari</month>
							<month type="2">Februwari</month>
							<month type="3">Mashi</month>
							<month type="4">Apreli</month>
							<month type="5">Meyi</month>
							<month type="6">Juni</month>
							<month type="7">Julayi</month>
							<month type="8">Agasti</month>
							<month type="9">Septhemba</month>
							<month type="10">Okthoba</month>
							<month type="11">Novemba</month>
							<month type="12">Disemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">uJanuwari</month>
							<month type="2">uFebruwari</month>
							<month type="3">uMashi</month>
							<month type="4">u-Apreli</month>
							<month type="5">uMeyi</month>
							<month type="6">uJuni</month>
							<month type="7">uJulayi</month>
							<month type="8">uAgasti</month>
							<month type="9">uSepthemba</month>
							<month type="10">u-Okthoba</month>
							<month type="11">uNovemba</month>
							<month type="12">uDisemba</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mso</day>
							<day type="tue">Bil</day>
							<day type="wed">Tha</day>
							<day type="thu">Sin</day>
							<day type="fri">Hla</day>
							<day type="sat">Mgq</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sonto</day>
							<day type="mon">Msombuluko</day>
							<day type="tue">Lwesibili</day>
							<day type="wed">Lwesithathu</day>
							<day type="thu">uLwesine</day>
							<day type="fri">Lwesihlanu</day>
							<day type="sat">Mgqibelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">B</day>
							<day type="wed">T</day>
							<day type="thu">S</day>
							<day type="fri">H</day>
							<day type="sat">M</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>yebo:y</yesstr>
			<nostr>cha:c</nostr>
		</messages>
	</posix>
</ldml>
PKpG[����##Locale/Data/pt_BR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/05/28 15:49:35 $"/>
		<language type="pt"/>
		<territory type="BR"/>
	</identity>
</ldml>
PKpG[G[�z��Locale/Data/es_PA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="PA"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MM/dd/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>MM/dd/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E MM/dd - E MM/dd</greatestDifference>
							<greatestDifference id="d">E MM/dd - E MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd - MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd - MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E MM/dd/yy - E MM/dd/yy</greatestDifference>
							<greatestDifference id="d">E MM/dd/yy - E MM/dd/yy</greatestDifference>
							<greatestDifference id="y">E MM/dd/yy - E MM/dd/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="d">MM/dd/yy - MM/dd/yy</greatestDifference>
							<greatestDifference id="y">MM/dd/yy - MM/dd/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[c�b ! !Locale/Data/sa.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sa"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">अफर</language>
			<language type="ab">अब्खासियन्</language>
			<language type="ace">अचिनीस्</language>
			<language type="ach">अचोलि</language>
			<language type="ada">अडङ्गमे</language>
			<language type="af">अफ्रिक्कान्स्</language>
			<language type="afa">आफ्रो एष्यन् भाषा</language>
			<language type="afh">अफ्रिहिलि</language>
			<language type="ain">अयिनु</language>
			<language type="ak">अकन्</language>
			<language type="akk">अक्काटियान्</language>
			<language type="ale">अलियुट्</language>
			<language type="alg">अल्गोण्क्यन् भाषा</language>
			<language type="am">अंहाऱिक्</language>
			<language type="anp">अङ्गिक</language>
			<language type="apa">अपाचे भाषा</language>
			<language type="ar">अऱबिक्</language>
			<language type="egy">प्राचीन ईजिप्त्यन्</language>
			<language type="grc">पुरातन यवन भाषा</language>
			<language type="nb">नोर्वीजियन् बॊकामल्</language>
			<language type="sa">संस्कृत भाषा</language>
			<language type="sq">अल्बेनियन्</language>
			<language type="tut">आळटिक् भाषा</language>
			<language type="und">अज्ञात भाषा</language>
		</languages>
		<scripts>
			<script type="Arab">अरबिक्</script>
			<script type="Armi">अर्मि</script>
			<script type="Armn">अर्मेनियन्</script>
			<script type="Avst">अवेस्थन्</script>
			<script type="Bali">बालिनीस्</script>
			<script type="Batk">बट्टक्</script>
			<script type="Beng">बंगालि</script>
		</scripts>
		<territories>
			<territory type="IN">भारतम्</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[़ ँ-ः ॑-॔ ॐ अ-ऋ ॠ ऌ ॡ ए ऐ ओ-न र ल ळ व-ह ऽ-ॄ ॢ ॣ े ै ो-्]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ०-९ ऍ ऑ ॅ ॉ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>hh:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>hh:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>hh:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<nativeZeroDigit>०</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>रु</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[��(�##Locale/Data/pl_PL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:35 $"/>
		<language type="pl"/>
		<territory type="PL"/>
	</identity>
</ldml>
PKpG[��iO##Locale/Data/be_BY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="be"/>
		<territory type="BY"/>
	</identity>
</ldml>
PKpG[VفHHLocale/Data/no.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.19 $"/>
        <generation date="$Date: 2008/06/02 20:30:10 $"/>
        <language type="no"/>
    </identity>
    <alias source="nb" path="//ldml"/>
</ldml>PKpG[({�Locale/Data/kaj.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="kaj"/>
	</identity>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">A̱yr</month>
							<month type="2">A̱hw</month>
							<month type="3">A̱ta</month>
							<month type="4">A̱na</month>
							<month type="5">A̱pf</month>
							<month type="6">A̱ki</month>
							<month type="7">A̱ty</month>
							<month type="8">A̱ni</month>
							<month type="9">A̱ku</month>
							<month type="10">Swa</month>
							<month type="11">Sby</month>
							<month type="12">Sbh</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Hywan A̱yrnig</month>
							<month type="2">Hywan A̱hwa</month>
							<month type="3">Hywan A̱tat</month>
							<month type="4">Hywan A̱naai</month>
							<month type="5">Hywan A̱pfwon</month>
							<month type="6">Hywan A̱kitat</month>
							<month type="7">Hywan A̱tyirin</month>
							<month type="8">Hywan A̱ninai</month>
							<month type="9">Hywan A̱kumviriyin</month>
							<month type="10">Hywan Swak</month>
							<month type="11">Hywan Swak B'a̱yrnig</month>
							<month type="12">Hywan Swak B'a̱hwa</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Lad</day>
							<day type="mon">Lin</day>
							<day type="tue">Tal</day>
							<day type="wed">Lar</day>
							<day type="thu">Lam</day>
							<day type="fri">Jum</day>
							<day type="sat">Asa</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Ladi</day>
							<day type="mon">Lintani</day>
							<day type="tue">Talata</day>
							<day type="wed">Larba</day>
							<day type="thu">Lamit</day>
							<day type="fri">Juma</day>
							<day type="sat">Asabar</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>A.M.</am>
				<pm>P.M.</pm>
				<eras>
					<eraNames>
						<era type="0">Gabanin Miladi</era>
						<era type="1">Miladi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">G.M.</era>
						<era type="1">M.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>A̱naira</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[A�S�NNLocale/Data/mn_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.4 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<territory type="CN"/>
	</identity>
	<alias source="mn_Mong_CN" path="//ldml"/>
</ldml>
PKpG[w�>OOLocale/Data/pa_PK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="pa"/>
		<territory type="PK"/>
	</identity>
	<alias source="pa_Arab_PK" path="//ldml"/>
</ldml>
PKpG[���?OOLocale/Data/sh_YU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sh"/>
		<territory type="YU"/>
	</identity>
	<alias source="sr_Latn_RS" path="//ldml"/>
</ldml>
PKpG[rF��U�ULocale/Data/so.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/05 01:32:23 $"/>
		<language type="so"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikaanays</language>
			<language type="am">Amhari</language>
			<language type="ar">Carabi</language>
			<language type="as">Asaamiis</language>
			<language type="az">Azerbaijan</language>
			<language type="be">Beleruusiyaan</language>
			<language type="bg">Bulgeeriyaan</language>
			<language type="bh">Bixaari</language>
			<language type="bn">Bangaali</language>
			<language type="br">Bereton</language>
			<language type="bs">Boosniya</language>
			<language type="ca">Katalaan</language>
			<language type="cs">Jeeg</language>
			<language type="cy">Welsh</language>
			<language type="da">Danmarkays</language>
			<language type="de">Jarmal</language>
			<language type="de_CH">Jarmal (Iswiiserlaand)</language>
			<language type="el">Giriik</language>
			<language type="en">Ingiriisi</language>
			<language type="en_GB">Ingiriisi (Boqortooyada Midowday)</language>
			<language type="en_US">Ingiriisi (Maraykan)</language>
			<language type="eo">Isberento</language>
			<language type="es">Isbaanish</language>
			<language type="es_419">Isbaanishka Laatiin Ameerika</language>
			<language type="es_ES">Isbaanish (Isbayn)</language>
			<language type="et">Istooniyaan</language>
			<language type="eu">Basquu</language>
			<language type="fa">Faarisi</language>
			<language type="fi">Fiinlaandees</language>
			<language type="fil">Tagalog</language>
			<language type="fo">Farowsi</language>
			<language type="fr">Faransiis</language>
			<language type="fr_CH">Faransiis (Iswiiserlaand)</language>
			<language type="fy">Firiisiyan Galbeed</language>
			<language type="ga">Ayrish</language>
			<language type="gd">Iskot Giilik</language>
			<language type="gl">Galiisiyaan</language>
			<language type="gn">Guraani</language>
			<language type="gu">Gujaraati</language>
			<language type="he">Cibri</language>
			<language type="hi">Hindi</language>
			<language type="hr">Koro'eeshiyaan</language>
			<language type="hu">Hangariyaan</language>
			<language type="hy">Armeeniyaan</language>
			<language type="ia">Interlinguwa</language>
			<language type="id">Indunuusiyaan</language>
			<language type="ie">Interlingue</language>
			<language type="is">Ayslandays</language>
			<language type="it">Talyaani</language>
			<language type="ja">Jabbaaniis</language>
			<language type="jv">Jafaaniis</language>
			<language type="ka">Joorijiyaan</language>
			<language type="km">Kamboodhian</language>
			<language type="kn">Kannadays</language>
			<language type="ko">Kuuriyaan</language>
			<language type="ku">Kurdishka</language>
			<language type="ky">Kirgiis</language>
			<language type="la">Laatiin</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laothian</language>
			<language type="lt">Lituwaanays</language>
			<language type="lv">Laatfiyaan</language>
			<language type="mk">Masadooniyaan</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mangooli</language>
			<language type="mr">Maarati</language>
			<language type="ms">Malaay</language>
			<language type="mt">Maltiis</language>
			<language type="ne">Nebaali</language>
			<language type="nl">Holandays</language>
			<language type="nn">Nowrwejiyan (naynoroski)</language>
			<language type="no">Af  Noorwiijiyaan</language>
			<language type="oc">Okitaan</language>
			<language type="or">Oriya</language>
			<language type="pa">Bunjaabi</language>
			<language type="pl">Boolish</language>
			<language type="ps">Bashtuu</language>
			<language type="pt">Boortaqiis</language>
			<language type="pt_BR">Boortaqiiska Baraasiil</language>
			<language type="pt_PT">Boortaqiis (Boortuqaal)</language>
			<language type="ro">Romanka</language>
			<language type="ru">Ruush</language>
			<language type="sa">Sanskrit</language>
			<language type="sd">SINDHI</language>
			<language type="sh">Serbiyaan</language>
			<language type="si">Sinhaleys</language>
			<language type="sk">Isloofaak</language>
			<language type="sl">Islofeeniyaan</language>
			<language type="so">Soomaali</language>
			<language type="sq">Albaaniyaan</language>
			<language type="sr">Seerbiyaan</language>
			<language type="st">Sesooto</language>
			<language type="su">Suudaaniis</language>
			<language type="sv">Swiidhis</language>
			<language type="sw">Sawaaxili</language>
			<language type="ta">Tamiil</language>
			<language type="te">Teluugu</language>
			<language type="th">Taaylandays</language>
			<language type="ti">Tigrinya</language>
			<language type="tk">Turkumaanish</language>
			<language type="tlh">Kiligoon</language>
			<language type="tr">Turkish</language>
			<language type="tw">Tiwiyan</language>
			<language type="ug">UIGHUR</language>
			<language type="uk">Yukreeniyaan</language>
			<language type="und">Af aan la aqoon ama aan sax ahayn</language>
			<language type="ur">Urduu</language>
			<language type="uz">Usbakis</language>
			<language type="vi">Fiitnaamays</language>
			<language type="xh">Hoosta</language>
			<language type="yi">Yadhish</language>
			<language type="zh">Jayniis</language>
			<language type="zu">Zuulu</language>
		</languages>
		<scripts>
			<script type="Latn">Laatiin</script>
			<script type="Zxxx">Aan la qorin</script>
			<script type="Zzzz">Far aan la aqoon amase aan saxnayn</script>
		</scripts>
		<territories>
			<territory type="014">Afrikada Bari</territory>
			<territory type="030">Aasiyada Bari</territory>
			<territory type="151">Yurubta Bari</territory>
			<territory type="AE">Imaaraadka Carabta ee Midoobay</territory>
			<territory type="AF">Afgaanistaan</territory>
			<territory type="AM">Armeeniya</territory>
			<territory type="AO">Angoola</territory>
			<territory type="AT">Osteeriya</territory>
			<territory type="AU">Awstraaliya</territory>
			<territory type="BA">Boosniya Heersigoviina</territory>
			<territory type="BB">Baarbadoos</territory>
			<territory type="BD">Bangaala-Deesh</territory>
			<territory type="BE">Beljiyam</territory>
			<territory type="BH">Baxrayn</territory>
			<territory type="BJ">Beniin</territory>
			<territory type="BR">Braasiil</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CH">Swiiserlaand</territory>
			<territory type="CL">Jili</territory>
			<territory type="CM">Kameruun</territory>
			<territory type="CN">Shiinaha</territory>
			<territory type="CU">Kuuba</territory>
			<territory type="CZ">Jekoslafaakiya</territory>
			<territory type="DE">Jarmal</territory>
			<territory type="DJ">Jabuuti</territory>
			<territory type="DK">Danmaark</territory>
			<territory type="EC">Ikwadoor</territory>
			<territory type="EG">Masar</territory>
			<territory type="ES">Isbeyn</territory>
			<territory type="ET">Itoobiya</territory>
			<territory type="FI">Fiinlaand</territory>
			<territory type="FR">Faransiis</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="GD">Giriinaada</territory>
			<territory type="GN">Gini</territory>
			<territory type="GR">Giriigga</territory>
			<territory type="HR">Korweeshiya</territory>
			<territory type="HU">Hangeri</territory>
			<territory type="ID">Indoneesiya</territory>
			<territory type="IE">Ayrlaanda</territory>
			<territory type="IL">Israaʼiil</territory>
			<territory type="IN">Hindiya</territory>
			<territory type="IQ">Ciraaq</territory>
			<territory type="IR">Iiraan</territory>
			<territory type="IS">Iislaand</territory>
			<territory type="IT">Talyaani</territory>
			<territory type="JM">Jameyka</territory>
			<territory type="JO">Urdun</territory>
			<territory type="JP">Jabbaan</territory>
			<territory type="KE">Kiiniya</territory>
			<territory type="KH">Kamboodiya</territory>
			<territory type="KP">Kuuriyada Waqooyi</territory>
			<territory type="KR">Kuuriyada Koonfureed</territory>
			<territory type="KW">Kuwayt</territory>
			<territory type="KZ">Kasaakhistaan</territory>
			<territory type="LB">Lubnaan</territory>
			<territory type="LK">Siirilaanka</territory>
			<territory type="LR">Laybeeriya</territory>
			<territory type="LS">Losooto</territory>
			<territory type="LU">Luksemboorg</territory>
			<territory type="LV">Laatfiya</territory>
			<territory type="LY">Liibiya</territory>
			<territory type="MA">Marooko</territory>
			<territory type="MC">Moonako</territory>
			<territory type="MK">Makadooniya</territory>
			<territory type="ML">Maali</territory>
			<territory type="MR">Muritaaniya</territory>
			<territory type="MT">Maalda</territory>
			<territory type="MV">Maaldiqeen</territory>
			<territory type="MW">Malaawi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MZ">Musambiig</territory>
			<territory type="NA">Namiibiya</territory>
			<territory type="NG">Nayjeeriya</territory>
			<territory type="NI">Nikaraaguwa</territory>
			<territory type="NO">Noorweey</territory>
			<territory type="NZ">Neyuusilaand</territory>
			<territory type="OM">Cumaan</territory>
			<territory type="PH">Filibiin</territory>
			<territory type="PK">Bakistaan</territory>
			<territory type="PL">Booland</territory>
			<territory type="PT">Bortuqaal</territory>
			<territory type="QA">Qadar</territory>
			<territory type="RO">Rumaaniya</territory>
			<territory type="RU">Ruush</territory>
			<territory type="SA">Sacuudi Carabiya</territory>
			<territory type="SD">Sudaan</territory>
			<territory type="SE">Iswidhan</territory>
			<territory type="SL">Siraaliyoon</territory>
			<territory type="SO">Soomaaliya</territory>
			<territory type="SY">Suuriya</territory>
			<territory type="TD">Jaad</territory>
			<territory type="TG">Toogo</territory>
			<territory type="TH">Taylaand</territory>
			<territory type="TN">Tuniisiya</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turki</territory>
			<territory type="TZ">Tansaaniya</territory>
			<territory type="UG">Ugaanda</territory>
			<territory type="US">Qaramada Midoobey ee Maraykanka</territory>
			<territory type="VA">Faatikaan</territory>
			<territory type="VE">Fenisuweela</territory>
			<territory type="VN">Fiyetnaam</territory>
			<territory type="YE">Yaman</territory>
			<territory type="ZA">Koonfur Afrika</territory>
			<territory type="ZM">Saambiya</territory>
			<territory type="ZW">Simbaabwe</territory>
			<territory type="ZZ">Far aan la aqoon amase aan saxnayn</territory>
		</territories>
		<keys>
			<key type="calendar">Habeentiris</key>
			<key type="currency">Lacag</key>
		</keys>
		<types>
			<type type="hebrew" key="calendar">Habeentiriska yuhuudda</type>
			<type type="islamic" key="calendar">Habeentiriska islaamka</type>
			<type type="japanese" key="calendar">Habeentiriska jabbaanka</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Kob</month>
							<month type="2">Lab</month>
							<month type="3">Sad</month>
							<month type="4">Afr</month>
							<month type="5">Sha</month>
							<month type="6">Lix</month>
							<month type="7">Tod</month>
							<month type="8">Sid</month>
							<month type="9">Sag</month>
							<month type="10">Tob</month>
							<month type="11">KIT</month>
							<month type="12">LIT</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Bisha Koobaad</month>
							<month type="2">Bisha Labaad</month>
							<month type="3">Bisha Saddexaad</month>
							<month type="4">Bisha Afraad</month>
							<month type="5">Bisha Shanaad</month>
							<month type="6">Bisha Lixaad</month>
							<month type="7">Bisha Todobaad</month>
							<month type="8">Bisha Sideedaad</month>
							<month type="9">Bisha Sagaalaad</month>
							<month type="10">Bisha Tobnaad</month>
							<month type="11">Bisha Kow iyo Tobnaad</month>
							<month type="12">Bisha Laba iyo Tobnaad</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">K</month>
							<month type="2">L</month>
							<month type="3">S</month>
							<month type="4">A</month>
							<month type="5">S</month>
							<month type="6">L</month>
							<month type="7">T</month>
							<month type="8">S</month>
							<month type="9">S</month>
							<month type="10">T</month>
							<month type="11">K</month>
							<month type="12">L</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Axa</day>
							<day type="mon">Isn</day>
							<day type="tue">Sal</day>
							<day type="wed">Arb</day>
							<day type="thu">Kha</day>
							<day type="fri">Jim</day>
							<day type="sat">Sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Axad</day>
							<day type="mon">Isniin</day>
							<day type="tue">Salaaso</day>
							<day type="wed">Arbaco</day>
							<day type="thu">Khamiis</day>
							<day type="fri">Jimco</day>
							<day type="sat">Sabti</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">A</day>
							<day type="mon">I</day>
							<day type="tue">S</day>
							<day type="wed">A</day>
							<day type="thu">K</day>
							<day type="fri">J</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>sn</am>
				<pm>gn</pm>
				<eras>
					<eraAbbr>
						<era type="0">Ciise ka hor</era>
						<era type="1">Ciise ka dib</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM dd - E, MMM dd, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM dd - E, MMM dd, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM dd, yyyy - E, MMM dd, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Far aan la aqoon amase aan saxnayn</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Chinese Yuan Renminbi</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Faran Jabbuuti</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Birta Itoobbiya</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Yuuroo</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pound Sterling</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
			</currency>
			<currency type="KES">
				<symbol>Ksh</symbol>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Shilin soomaali</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<displayName>Doollar maraykan</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Lacag aan la qoon ama aan saxnayn</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>haa:h</yesstr>
			<nostr>maya:m</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��%;;Locale/Data/zh_Hans_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<script type="Hans"/>
		<territory type="CN"/>
	</identity>
</ldml>
PKpG[���L""Locale/Data/st_LS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="st"/>
		<territory type="LS"/>
	</identity>
</ldml>
PKpG[o,��##Locale/Data/en_GU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="GU"/>
	</identity>
</ldml>
PKpG[���""Locale/Data/to_TO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.5 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="to"/>
		<territory type="TO"/>
	</identity>
</ldml>
PKpG[�2�zzLocale/Data/pa_Arab.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="pa"/>
		<script type="Arab"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="pa">پنجاب</language>
		</languages>
		<scripts>
			<script type="Arab">العربية</script>
			<script type="Guru">گُرمُکھی</script>
		</scripts>
		<territories>
			<territory type="PK">پکستان</territory>
		</territories>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ُ ء آ ؤ ئ-ب پ ت ث ٹ ج چ ح-ذ ڈ ر ز ڑ ژ س-غ ف ق ک گ ل-ن ں ه ھ ہ و ی ے]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[أ ٻ ة ٺ ټ ٽ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">جنوری</month>
							<month type="2">فروری</month>
							<month type="3">مارچ</month>
							<month type="4">اپریل</month>
							<month type="5">مئ</month>
							<month type="6">جون</month>
							<month type="7">جولائی</month>
							<month type="8">اگست</month>
							<month type="9">ستمبر</month>
							<month type="10">اکتوبر</month>
							<month type="11">نومبر</month>
							<month type="12">دسمبر</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="wide">
							<day type="sun">اتوار</day>
							<day type="mon">پیر</day>
							<day type="tue">منگل</day>
							<day type="wed">بُدھ</day>
							<day type="thu">جمعرات</day>
							<day type="fri">جمعہ</day>
							<day type="sat">ہفتہ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="wide">
							<quarter type="1">چوتھاي پہلاں</quarter>
							<quarter type="2">چوتھاي دوجا</quarter>
							<quarter type="3">چوتھاي تيجا</quarter>
							<quarter type="4">چوتھاي چوتھا</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<eras>
					<eraNames>
						<era type="0">ايساپورو</era>
						<era type="1">سں</era>
					</eraNames>
				</eras>
				<fields>
					<field type="year">
						<displayName>ورھا</displayName>
					</field>
					<field type="month">
						<displayName>مہينا</displayName>
					</field>
					<field type="week">
						<displayName>ہفتہ</displayName>
					</field>
					<field type="day">
						<displayName>دئن</displayName>
					</field>
					<field type="weekday">
						<displayName>ہفتے دا دن</displayName>
					</field>
					<field type="hour">
						<displayName>گھنٹا</displayName>
					</field>
					<field type="minute">
						<displayName>منٹ</displayName>
					</field>
					<field type="zone">
						<displayName>ٹپہ</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="EUR">
				<displayName>يورو</displayName>
			</currency>
			<currency type="INR">
				<displayName>روپئیہ [INR]</displayName>
				<symbol>ر [INR]</symbol>
			</currency>
			<currency type="PKR">
				<displayName>روپئیہ</displayName>
				<symbol>ر</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ہاں</yesstr>
			<nostr>نہيں</nostr>
		</messages>
	</posix>
</ldml>

PKpG[��iLocale/Data/es_SV.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="SV"/>
	</identity>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[r��F8F8Locale/Data/gu.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="gu"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">આફ્રિકી</language>
			<language type="am">ઍમ્હૅરિક (ઈથિયોપિયા)</language>
			<language type="ar">અરબી</language>
			<language type="as">આસામી</language>
			<language type="az">ઍઝરબૈજાની</language>
			<language type="be">બેલરૂશિયન</language>
			<language type="bg">બલ્ગેરિયન</language>
			<language type="bh">બિહારી</language>
			<language type="bho">ભોજપુરી</language>
			<language type="bn">બંગાળી</language>
			<language type="br">બ્રેટોન</language>
			<language type="bs">બૉઝ્નિયન</language>
			<language type="ca">કેટલૅન</language>
			<language type="cs">ચેક</language>
			<language type="cy">વેલ્શ</language>
			<language type="da">ડૅનિશ</language>
			<language type="de">જર્મન</language>
			<language type="el">ગ્રીક</language>
			<language type="en">અંગ્રેજી</language>
			<language type="eo">ઍસ્પૅરેન્તો</language>
			<language type="es">સ્પેનિસ</language>
			<language type="et">એસ્ટોનિયન</language>
			<language type="eu">બાસ્ક</language>
			<language type="fa">ફારસી (પર્શિયન)</language>
			<language type="fi">ફિન્નિશ</language>
			<language type="fil">ફિલિપિનો</language>
			<language type="fo">ફારોઈઝ</language>
			<language type="fr">ફ્રેંચ</language>
			<language type="fy">ફ્રિઝન</language>
			<language type="ga">આયરિશ</language>
			<language type="gd">ગેલિક (સ્કૉટલૅન્ડ)</language>
			<language type="gl">ગૅલિશિયન</language>
			<language type="gn">ગ્વારની</language>
			<language type="gu">ગુજરાતી</language>
			<language type="he">હીબ્રૂ</language>
			<language type="hi">હિન્દી</language>
			<language type="hr">ક્રોએશિયન</language>
			<language type="hu">હંગેરિયન</language>
			<language type="hy">આર્મેનિયન</language>
			<language type="ia">ઇન્ટરલિંગા</language>
			<language type="id">ઇન્ડોનેશિયન</language>
			<language type="is">આઇસલૅન્ડિક</language>
			<language type="it">ઇટાલિયન</language>
			<language type="ja">જાપાની</language>
			<language type="jv">જાવાનીઝ</language>
			<language type="ka">જ્યોર્જિયન</language>
			<language type="km">કમ્બોડિયન</language>
			<language type="kn">કન્નડ</language>
			<language type="ko">કોરીયન</language>
			<language type="ku">કુર્ડિશ</language>
			<language type="ky">કિર્ગિઝ</language>
			<language type="la">લૅટિન</language>
			<language type="ln">લિંગાલા</language>
			<language type="lo">લૅઓથિયન</language>
			<language type="lt">લિથ્વેનિયન</language>
			<language type="lv">લાતવી</language>
			<language type="mk">મૅસિડોનિયન</language>
			<language type="ml">મળયાલમ</language>
			<language type="mn">મોંગોલિયન</language>
			<language type="mr">મરાઠી</language>
			<language type="ms">મલય</language>
			<language type="mt">માલ્ટી</language>
			<language type="ne">નેપાળી</language>
			<language type="nl">ડચ્ચ</language>
			<language type="nn">નોર્વેજિયન (નુનોર્સ્ક)</language>
			<language type="no">નોર્વેજિયન</language>
			<language type="oc">ઑક્સીટૅન</language>
			<language type="or">ઊડિયા</language>
			<language type="pa">પંજાબી</language>
			<language type="pl">પોલિશ</language>
			<language type="ps">પાશ્તુન</language>
			<language type="pt">પોર્ચગીઝ</language>
			<language type="pt_BR">પોર્ચગીઝ (બ્રાઝિલ)</language>
			<language type="pt_PT">પોર્ચગીઝ (પોર્ચગલ)</language>
			<language type="ro">રોમૅનિયન</language>
			<language type="ru">રૂસી</language>
			<language type="sa">સંસ્કૃત</language>
			<language type="sd">સિંધી</language>
			<language type="sh">સર્બો-ક્રોએશ્યન</language>
			<language type="si">સિંહાલી</language>
			<language type="sk">સ્લોવૅક</language>
			<language type="sl">સ્લોવેનિયન</language>
			<language type="so">સોમાલી</language>
			<language type="sq">આલ્બેનિયન</language>
			<language type="sr">સર્બિયન</language>
			<language type="st">સેસોથો</language>
			<language type="su">સુન્ડનીઝ</language>
			<language type="sv">સ્વીડીશ</language>
			<language type="sw">સ્વાહિલી</language>
			<language type="ta">તમિલ</language>
			<language type="te">તેલુગુ</language>
			<language type="th">થાઇ</language>
			<language type="ti">ટગ્રિન્યા</language>
			<language type="tk">તુર્કમિન</language>
			<language type="tr">તુર્કી</language>
			<language type="tw">ટ્વી</language>
			<language type="ug">વિગ઼ુર</language>
			<language type="uk">યુક્રેનિયન</language>
			<language type="uz">ઉઝબેક</language>
			<language type="vi">વિયેતનામી</language>
			<language type="xh">કોસા</language>
			<language type="yi">યિડિશ</language>
			<language type="zu">ઝુલુ</language>
		</languages>
		<scripts>
			<script type="Arab">અરેબી</script>
			<script type="Armn">અર્મેનિયાઈ</script>
			<script type="Beng">બંગાળી</script>
		</scripts>
		<territories>
			<territory type="CN">ચીન</territory>
			<territory type="DE">જમિની</territory>
			<territory type="EG">મિસર</territory>
			<territory type="GE">જ્યોર્જીયા</territory>
			<territory type="IN">ભારત</territory>
			<territory type="NP">નેપાળ</territory>
			<territory type="PK">કરાંચી</territory>
			<territory type="TM">તુર્ક્મનિસ્તાન</territory>
			<territory type="TR">તુર્કસ્તાન</territory>
			<territory type="US">સંયુકત રાજ્ય અમેરિકા</territory>
		</territories>
		<keys>
			<key type="calendar">કેલેન્ડર</key>
			<key type="collation">ક્રમ</key>
			<key type="currency">ચલણ</key>
		</keys>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[૦-૯ ૐ અ-ઋ ૠ ઍ એ-ઑ ઓ-ન પ-ર લ ળ વ-હ ઼ ઁ-ઃ ઽ ્ ા-ૅ ે-ૉ ો ૌ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">જાન્યુ</month>
							<month type="2">ફેબ્રુ</month>
							<month type="3">માર્ચ</month>
							<month type="4">એપ્રિલ</month>
							<month type="5">મે</month>
							<month type="6">જૂન</month>
							<month type="7">જુલાઈ</month>
							<month type="8">ઑગસ્ટ</month>
							<month type="9">સપ્ટે</month>
							<month type="10">ઑક્ટો</month>
							<month type="11">નવે</month>
							<month type="12">ડિસે</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">જાન્યુઆરી</month>
							<month type="2">ફેબ્રુઆરી</month>
							<month type="3">માર્ચ</month>
							<month type="4">એપ્રિલ</month>
							<month type="5">મે</month>
							<month type="6">જૂન</month>
							<month type="7">જુલાઈ</month>
							<month type="8">ઑગસ્ટ</month>
							<month type="9">સપ્ટેમ્બર</month>
							<month type="10">ઑક્ટ્બર</month>
							<month type="11">નવેમ્બર</month>
							<month type="12">ડિસેમ્બર</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">રવિ</day>
							<day type="mon">સોમ</day>
							<day type="tue">મંગળ</day>
							<day type="wed">બુધ</day>
							<day type="thu">ગુરુ</day>
							<day type="fri">શુક્ર</day>
							<day type="sat">શનિ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">રવિવાર</day>
							<day type="mon">સોમવાર</day>
							<day type="tue">મંગળવાર</day>
							<day type="wed">બુધવાર</day>
							<day type="thu">ગુરુવાર</day>
							<day type="fri">શુક્રવાર</day>
							<day type="sat">શનિવાર</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">પેહલા હંત 1</quarter>
							<quarter type="2">ડૂસઋા હંત 2</quarter>
							<quarter type="3">તીસઋા હંત 3</quarter>
							<quarter type="4">ચૌતા હંત 4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>પૂર્વ મધ્યાહ્ન</am>
				<pm>ઉત્તર મધ્યાહ્ન</pm>
				<eras>
					<eraNames>
						<era type="0">ઈસાપૂઋ્વ.</era>
						<era type="1">સન.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>hh:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>hh:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>hh:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<nativeZeroDigit>૦</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>રુ</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>હા</yesstr>
			<nostr>ના</nostr>
		</messages>
	</posix>
</ldml>

PKpG[U����Locale/Data/en_NA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="NA"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[{��Locale/Data/ar_AE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="AE"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[\�7�$$Locale/Data/kam_KE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kam"/>
		<territory type="KE"/>
	</identity>
</ldml>
PKpG[+�[6##Locale/Data/is_IS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="is"/>
		<territory type="IS"/>
	</identity>
</ldml>
PKpG[I=��<<Locale/Data/sr_Latn_RS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/06/19 01:24:40 $"/>
		<language type="sr"/>
		<script type="Latn"/>
		<territory type="RS"/>
	</identity>
</ldml>

PKpG[���g33Locale/Data/sh.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sh"/>
	</identity>
	<alias source="sr_Latn" path="//ldml"/>
</ldml>
PKpG[i��MLocale/Data/kfo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kfo"/>
	</identity>
	<characters>
		<exemplarCharacters>[a ā b-e ē f g {gb} h-k {kh} l-p {pk} r-u w y z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Wey</month>
							<month type="2">Fan</month>
							<month type="3">Tat</month>
							<month type="4">Nan</month>
							<month type="5">Tuy</month>
							<month type="6">Tso</month>
							<month type="7">Taf</month>
							<month type="8">War</month>
							<month type="9">Kun</month>
							<month type="10">Ban</month>
							<month type="11">Kom</month>
							<month type="12">Sau</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Fai Weyene</month>
							<month type="2">Fai Fani</month>
							<month type="3">Fai Tataka</month>
							<month type="4">Fai Nangra</month>
							<month type="5">Fai Tuyo</month>
							<month type="6">Fai Tsoyi</month>
							<month type="7">Fai Tafaka</month>
							<month type="8">Fai Warachi</month>
							<month type="9">Fai Kunobok</month>
							<month type="10">Fai Bansok</month>
							<month type="11">Fai Kom</month>
							<month type="12">Fai Sauk</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Lah</day>
							<day type="mon">Kub</day>
							<day type="tue">Gba</day>
							<day type="wed">Tan</day>
							<day type="thu">Yei</day>
							<day type="fri">Koy</day>
							<day type="sat">Sat</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Lahadi</day>
							<day type="mon">Je-Kubacha</day>
							<day type="tue">Je-Gbai</day>
							<day type="wed">Tansati</day>
							<day type="thu">Je-Yei</day>
							<day type="fri">Je-Koye</day>
							<day type="sat">Sati</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Kafi Mar Wenom</era>
						<era type="1">Bayan Chi Wenom</era>
					</eraNames>
					<eraAbbr>
						<era type="0">KMW</era>
						<era type="1">BCW</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>Neira</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[ww����Locale/Data/ss.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="ss"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ss">Siswati</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Bhi</month>
							<month type="2">Van</month>
							<month type="3">Vol</month>
							<month type="4">Mab</month>
							<month type="5">Nkh</month>
							<month type="6">Nhl</month>
							<month type="7">Kho</month>
							<month type="8">Ngc</month>
							<month type="9">Nyo</month>
							<month type="10">Mph</month>
							<month type="11">Lwe</month>
							<month type="12">Ngo</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Bhimbidvwane</month>
							<month type="2">iNdlovana</month>
							<month type="3">iNdlovu-lenkhulu</month>
							<month type="4">Mabasa</month>
							<month type="5">iNkhwekhweti</month>
							<month type="6">iNhlaba</month>
							<month type="7">Kholwane</month>
							<month type="8">iNgci</month>
							<month type="9">iNyoni</month>
							<month type="10">iMphala</month>
							<month type="11">Lweti</month>
							<month type="12">iNgongoni</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mso</day>
							<day type="tue">Bil</day>
							<day type="wed">Tsa</day>
							<day type="thu">Ne</day>
							<day type="fri">Hla</day>
							<day type="sat">Mgc</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Lisontfo</day>
							<day type="mon">uMsombuluko</day>
							<day type="tue">Lesibili</day>
							<day type="wed">Lesitsatfu</day>
							<day type="thu">Lesine</day>
							<day type="fri">Lesihlanu</day>
							<day type="sat">uMgcibelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[C��3::Locale/Data/mn_Mong_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<script type="Mong"/>
		<territory type="CN"/>
	</identity>
</ldml>
PKpG[$,�##Locale/Data/so_SO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="so"/>
		<territory type="SO"/>
	</identity>
</ldml>
PKpG[1����Locale/Data/en_NZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="en"/>
		<territory type="NZ"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d/MM - E, d/MM</greatestDifference>
							<greatestDifference id="d">E, d/MM - E, d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d/MM/yy - E, d/MM/yy</greatestDifference>
							<greatestDifference id="d">E, d/MM/yy - E, d/MM/yy</greatestDifference>
							<greatestDifference id="y">E, d/MM/yy - E, d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Australia_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="NZD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG['&�"�-�-Locale/Data/fa_AF.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/06/17 14:12:16 $"/>
		<language type="fa"/>
		<territory type="AF"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="es">هسپانوی</language>
			<language type="fa">دری</language>
			<language type="fi">فنلندی</language>
			<language type="ga">آیرلندی</language>
			<language type="hr">کروشیایی</language>
			<language type="id">اندونیزیایی</language>
			<language type="is">آیسلندی</language>
			<language type="it">ایتالوی</language>
			<language type="ja">جاپانی</language>
			<language type="ko">کوریایی</language>
			<language type="ky">قرغزی</language>
			<language type="mn">مغلی</language>
			<language type="ne">نیپالی</language>
			<language type="nl">هالندی</language>
			<language type="no">نارویژی</language>
			<language type="pl">پولندی</language>
			<language type="pt">پرتگالی</language>
			<language type="sv">سویدنی</language>
			<language type="tg">تاجکی</language>
		</languages>
		<scripts>
			<script type="Mong">مغلی</script>
		</scripts>
		<territories>
			<territory type="AD">اندورا</territory>
			<territory type="AE">امارات متحدهٔ عربی</territory>
			<territory type="AG">انتیگوا و باربودا</territory>
			<territory type="AL">البانیا</territory>
			<territory type="AO">انگولا</territory>
			<territory type="AR">ارجنتاین</territory>
			<territory type="AU">آسترالیا</territory>
			<territory type="BA">بوسنیا و هرزه‌گوینا</territory>
			<territory type="BD">بنگله‌دیش</territory>
			<territory type="BE">بلجیم</territory>
			<territory type="BG">بلغاریا</territory>
			<territory type="BN">برونی</territory>
			<territory type="BO">بولیویا</territory>
			<territory type="BR">برازیل</territory>
			<territory type="BS">بهاماس</territory>
			<territory type="BY">روسیهٔ سفید</territory>
			<territory type="CD">جمهوری دموکراتیک کانگو</territory>
			<territory type="CF">افریقای مرکزی</territory>
			<territory type="CG">کانگو</territory>
			<territory type="CH">سویس</territory>
			<territory type="CL">چلی</territory>
			<territory type="CO">کولمبیا</territory>
			<territory type="CR">کاستریکا</territory>
			<territory type="CU">کیوبا</territory>
			<territory type="DK">دنمارک</territory>
			<territory type="EC">اکوادور</territory>
			<territory type="EE">استونیا</territory>
			<territory type="ER">اریتریا</territory>
			<territory type="ES">هسپانیه</territory>
			<territory type="ET">ایتوپیا</territory>
			<territory type="FI">فنلند</territory>
			<territory type="FM">میکرونزیا</territory>
			<territory type="GD">گرینادا</territory>
			<territory type="GN">گینیا</territory>
			<territory type="GQ">گینیا استوایی</territory>
			<territory type="GT">گواتیمالا</territory>
			<territory type="GW">گینیا بیسائو</territory>
			<territory type="GY">گیانا</territory>
			<territory type="HN">هاندوراس</territory>
			<territory type="HR">کروشیا</territory>
			<territory type="HT">هایتی</territory>
			<territory type="ID">اندونیزیا</territory>
			<territory type="IE">آیرلند</territory>
			<territory type="IS">آیسلند</territory>
			<territory type="JP">جاپان</territory>
			<territory type="KE">کینیا</territory>
			<territory type="KG">قرغزستان</territory>
			<territory type="KH">کمپوچیا</territory>
			<territory type="KM">کومور</territory>
			<territory type="KN">سنت کیتس و نیویس</territory>
			<territory type="KP">کوریای شمالی</territory>
			<territory type="KR">کوریای جنوبی</territory>
			<territory type="LK">سریلانکا</territory>
			<territory type="LS">لیسوتو</territory>
			<territory type="LT">لتوانیا</territory>
			<territory type="LV">لاتویا</territory>
			<territory type="LY">لیبیا</territory>
			<territory type="MG">مادغاسکر</territory>
			<territory type="MN">منگولیا</territory>
			<territory type="MR">موریتانیا</territory>
			<territory type="MT">مالتا</territory>
			<territory type="MX">مکسیکو</territory>
			<territory type="MY">مالیزیا</territory>
			<territory type="MZ">موزمبیق</territory>
			<territory type="NG">نیجریا</territory>
			<territory type="NI">نیکاراگوا</territory>
			<territory type="NL">هالند</territory>
			<territory type="NO">ناروی</territory>
			<territory type="NP">نیپال</territory>
			<territory type="NZ">زیلاند جدید</territory>
			<territory type="PA">پانامه</territory>
			<territory type="PE">پیرو</territory>
			<territory type="PG">پاپوا نیو گینیا</territory>
			<territory type="PL">پولند</territory>
			<territory type="PT">پرتگال</territory>
			<territory type="PY">پاراگوای</territory>
			<territory type="RO">رومانیا</territory>
			<territory type="RW">روآندا</territory>
			<territory type="SB">جزایر سلومون</territory>
			<territory type="SE">سویدن</territory>
			<territory type="SG">سینگاپور</territory>
			<territory type="SI">سلونیا</territory>
			<territory type="SK">سلواکیا</territory>
			<territory type="SL">سیرالیون</territory>
			<territory type="SN">سینیگال</territory>
			<territory type="SO">سومالیه</territory>
			<territory type="ST">سائو تومه و پرینسیپ</territory>
			<territory type="SV">السلوادور</territory>
			<territory type="TJ">تاجکستان</territory>
			<territory type="UA">اکراین</territory>
			<territory type="US">ایالات متحدهٔ امریکا</territory>
			<territory type="UY">یوروگوای</territory>
			<territory type="VC">سنت وینسنت و گرینادین</territory>
			<territory type="VE">ونزویلا</territory>
			<territory type="WS">ساموآ</territory>
			<territory type="ZW">زیمبابوی</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters type="auxiliary">[ٖ ٰ \u200C \u200D ټ ځ څ ډ ړ ږ ښ ګ ڼ ي]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">جنو</month>
							<month type="5">مـی</month>
							<month type="6">جون</month>
							<month type="7">جول</month>
							<month type="12">دسم</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">جنوری</month>
							<month type="2">فبروری</month>
							<month type="3">مارچ</month>
							<month type="4">اپریل</month>
							<month type="5">می</month>
							<month type="6">جون</month>
							<month type="7">جولای</month>
							<month type="8">اگست</month>
							<month type="9">سپتمبر</month>
							<month type="10">اکتوبر</month>
							<month type="11">نومبر</month>
							<month type="12">دسمبر</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ج</month>
							<month type="2">ف</month>
							<month type="3">م</month>
							<month type="4">ا</month>
							<month type="5">م</month>
							<month type="6">ج</month>
							<month type="7">ج</month>
							<month type="8">ا</month>
							<month type="9">س</month>
							<month type="10">ا</month>
							<month type="11">ن</month>
							<month type="12">د</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">حمل</month>
							<month type="2">ثور</month>
							<month type="3">جوزا</month>
							<month type="4">سرطان</month>
							<month type="5">اسد</month>
							<month type="6">سنبلهٔ</month>
							<month type="7">میزان</month>
							<month type="8">عقرب</month>
							<month type="9">قوس</month>
							<month type="10">جدی</month>
							<month type="11">دلو</month>
							<month type="12">حوت</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ح</month>
							<month type="2">ث</month>
							<month type="3">ج</month>
							<month type="4">س</month>
							<month type="5">ا</month>
							<month type="6">س</month>
							<month type="8">ع</month>
							<month type="9">ق</month>
							<month type="10">ج</month>
							<month type="11">د</month>
							<month type="12">ح</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">حمل</month>
							<month type="2">ثور</month>
							<month type="3">جوزا</month>
							<month type="4">سرطان</month>
							<month type="5">اسد</month>
							<month type="6">سنبله</month>
							<month type="7">میزان</month>
							<month type="8">عقرب</month>
							<month type="9">قوس</month>
							<month type="10">جدی</month>
							<month type="11">دلو</month>
							<month type="12">حوت</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraNames>
						<era type="0">هجری شمسی</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ه‍. ش.</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>٫</decimal>
			<group>٬</group>
			<percentSign>٪</percentSign>
			<nativeZeroDigit>۰</nativeZeroDigit>
			<minusSign>−</minusSign>
		</symbols>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>'‪'#,##0%'‬'</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencies>
			<currency type="AFN">
				<symbol>؋</symbol>
			</currency>
			<currency type="AUD">
				<displayName>دالر آسترالیا</displayName>
			</currency>
			<currency type="BND">
				<displayName>دالر برونی</displayName>
			</currency>
			<currency type="BYR">
				<displayName>روبل روسیهٔ سفید</displayName>
			</currency>
			<currency type="CAD">
				<displayName>دالر کانادا</displayName>
			</currency>
			<currency type="CHF">
				<displayName>فرانک سویس</displayName>
			</currency>
			<currency type="DKK">
				<displayName>کرون دنمارک</displayName>
			</currency>
			<currency type="JPY">
				<displayName>ین جاپان</displayName>
			</currency>
			<currency type="MXN">
				<displayName>پزوی مکسیکو</displayName>
			</currency>
			<currency type="NLG">
				<displayName>گیلدر هالند</displayName>
			</currency>
			<currency type="NOK">
				<displayName>کرون ناروی</displayName>
			</currency>
			<currency type="SEK">
				<displayName>کرون سویدن</displayName>
			</currency>
			<currency type="SGD">
				<displayName>دالر سینگاپور</displayName>
			</currency>
			<currency type="TJS">
				<displayName>سامانی تاجکستان</displayName>
			</currency>
			<currency type="USD">
				<displayName>دالر امریکا</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[$�@���Locale/Data/ti_ER.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="ti"/>
		<territory type="ER"/>
	</identity>
	<characters>
		<exemplarCharacters>[፟ ፡ ፣-፧ ። ፠ ፨ ፲-፼ ፩-፱ ሀ-ሆ ለ-ሟ ረ-ቆ ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዎ ዐ-ዖ ዘ-ዮ ደ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጠ-ጯ ጸ-ጿ ፈ-ፗ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[᎐-᎙ ሇ ⶀ ᎀ-ᎃ ⶁ ሠ-ሧ ⶂ-ⶄ ቇ ᎄ-ᎇ ⶅ-ⶇ ኇ ⶈ-ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ-ዿ ⶍ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ⶏ-ⶑ ፀ-ፇ ᎈ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጥሪ</month>
							<month type="2">ለካቲ</month>
							<month type="3">መጋቢ</month>
							<month type="4">ሚያዝ</month>
							<month type="5">ግንቦ</month>
							<month type="6">ሰነ</month>
							<month type="7">ሓምለ</month>
							<month type="8">ነሓሰ</month>
							<month type="9">መስከ</month>
							<month type="10">ጥቅም</month>
							<month type="11">ሕዳር</month>
							<month type="12">ታሕሳ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጥሪ</month>
							<month type="2">ለካቲት</month>
							<month type="3">መጋቢት</month>
							<month type="4">ሚያዝያ</month>
							<month type="5">ግንቦት</month>
							<month type="6">ሰነ</month>
							<month type="7">ሓምለ</month>
							<month type="8">ነሓሰ</month>
							<month type="9">መስከረም</month>
							<month type="10">ጥቅምቲ</month>
							<month type="11">ሕዳር</month>
							<month type="12">ታሕሳስ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="tue">ሰሉስ</day>
							<day type="thu">ሓሙስ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="tue">ሰሉስ</day>
							<day type="thu">ሓሙስ</day>
						</dayWidth>
					</dayContext>
				</days>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፡ dd MMMM መዓልቲ yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E፡ MM-dd - E፡ MM-dd</greatestDifference>
							<greatestDifference id="d">E፡ MM-dd - E፡ MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E፡ MMM d - E፡ MMM d</greatestDifference>
							<greatestDifference id="d">E፡ MMM d - E፡ MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM - yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E፡ yyyy-MM-dd - E፡ yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E፡ yyyy-MM-dd - E፡ yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E፡ yyyy-MM-dd - E፡ yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E፡ dd MMM መዓልቲ yyyy G - E፡ dd MMM መዓልቲ yyyy G</greatestDifference>
							<greatestDifference id="d">E፡ dd MMM መዓልቲ yyyy G - E፡ dd MMM መዓልቲ yyyy G</greatestDifference>
							<greatestDifference id="y">E፡ dd MMM መዓልቲ yyyy G - E፡ dd MMM መዓልቲ yyyy G</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="ERN">
				<symbol>$</symbol>
			</currency>
			<currency type="ETB">
				<symbol>ETB</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[��$$Locale/Data/fur_IT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="fur"/>
		<territory type="IT"/>
	</identity>
</ldml>
PKpG[��]##Locale/Data/ig_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ig"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[p�_qc*c*Locale/Data/st.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="st"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Seburu</language>
			<language type="am">Se-amhari</language>
			<language type="ar">Se-arab</language>
			<language type="az">Se-azerbaijani</language>
			<language type="be">Se-belarusia</language>
			<language type="bg">Se-bulgaria</language>
			<language type="bh">Se-bihari</language>
			<language type="bn">Se-bengali</language>
			<language type="br">Breton</language>
			<language type="bs">Se-bosnia</language>
			<language type="ca">Se-catalia</language>
			<language type="cs">Se-czech</language>
			<language type="cy">Se-welsh</language>
			<language type="da">Se-dutch</language>
			<language type="de">Se-jeremane</language>
			<language type="el">Se-greek</language>
			<language type="en">Senyesemane</language>
			<language type="eo">Se-esperanto</language>
			<language type="es">Sespain</language>
			<language type="et">Se-estonia</language>
			<language type="eu">Se-basque</language>
			<language type="fa">Se-persia</language>
			<language type="fi">Se-finnish</language>
			<language type="fil">Se-tagalog</language>
			<language type="fo">Se-foroese</language>
			<language type="fr">Se-french</language>
			<language type="fy">Se-frisia</language>
			<language type="ga">Se-irish</language>
			<language type="gd">Se-scots gaelic</language>
			<language type="gl">Se-galicia</language>
			<language type="gn">Guarani</language>
			<language type="gu">Se-gujarati</language>
			<language type="he">Se-hebrew</language>
			<language type="hi">Se-hindi</language>
			<language type="hr">Se-croatia</language>
			<language type="hu">Se-hungaria</language>
			<language type="ia">Se-interlingua</language>
			<language type="id">Se-indonesia</language>
			<language type="is">Se-iceland</language>
			<language type="it">Se-tariana</language>
			<language type="ja">Se-japane</language>
			<language type="jv">Se-javane</language>
			<language type="ka">Se-geogia</language>
			<language type="kn">Se-kannada</language>
			<language type="ko">Se-korea</language>
			<language type="ku">Kurdish</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Se-latino</language>
			<language type="lt">Se-Lithuano</language>
			<language type="mk">Se-masedonia</language>
			<language type="ml">Se-malayalam</language>
			<language type="mr">Se-marathi</language>
			<language type="ms">Se-malay</language>
			<language type="mt">Se-maltese</language>
			<language type="ne">Se-nepali</language>
			<language type="nl">Dutch</language>
			<language type="nn">Se-norway (Nynorsk)</language>
			<language type="no">Se-norway</language>
			<language type="oc">Se-occitan</language>
			<language type="or">Oriya</language>
			<language type="pa">Se-punjabi</language>
			<language type="pl">Se-polish</language>
			<language type="ps">Pashto</language>
			<language type="pt">Se-portugal</language>
			<language type="pt_BR">Seputukesi (sa Brazil)</language>
			<language type="pt_PT">Se-portugal (Portugal)</language>
			<language type="ro">Se-romania</language>
			<language type="ru">Se-rushia</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="si">Se-sinhali</language>
			<language type="sk">Se-slovak</language>
			<language type="sl">Se-slovania</language>
			<language type="sq">Se-albanian</language>
			<language type="sr">Se-serbian</language>
			<language type="st">Sesotho</language>
			<language type="su">Se-sundanese</language>
			<language type="sv">Se-sweden</language>
			<language type="sw">Se-swahili</language>
			<language type="ta">Se-tamil</language>
			<language type="te">Se-telegu</language>
			<language type="th">Se-thai</language>
			<language type="ti">Se-tigrinya</language>
			<language type="tk">Turkmen</language>
			<language type="tlh">Se-klingon</language>
			<language type="tr">Se-theki</language>
			<language type="tw">Twi</language>
			<language type="uk">Se-ukrania</language>
			<language type="ur">Se-urdu</language>
			<language type="uz">Se-uzbek</language>
			<language type="vi">Se-vietnam</language>
			<language type="xh">se Xhosa</language>
			<language type="yi">Yiddish</language>
			<language type="zu">se Zulu</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b d-u w y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c v x z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Phe</month>
							<month type="2">Kol</month>
							<month type="3">Ube</month>
							<month type="4">Mme</month>
							<month type="5">Mot</month>
							<month type="6">Jan</month>
							<month type="7">Upu</month>
							<month type="8">Pha</month>
							<month type="9">Leo</month>
							<month type="10">Mph</month>
							<month type="11">Pun</month>
							<month type="12">Tsh</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Phesekgong</month>
							<month type="2">Hlakola</month>
							<month type="3">Hlakubele</month>
							<month type="4">Mmese</month>
							<month type="5">Motsheanong</month>
							<month type="6">Phupjane</month>
							<month type="7">Phupu</month>
							<month type="8">Phata</month>
							<month type="9">Leotshe</month>
							<month type="10">Mphalane</month>
							<month type="11">Pundungwane</month>
							<month type="12">Tshitwe</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mma</day>
							<day type="tue">Bed</day>
							<day type="wed">Rar</day>
							<day type="thu">Ne</day>
							<day type="fri">Hla</day>
							<day type="sat">Moq</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sontaha</day>
							<day type="mon">Mmantaha</day>
							<day type="tue">Labobedi</day>
							<day type="wed">Laboraru</day>
							<day type="thu">Labone</day>
							<day type="fri">Labohlane</day>
							<day type="sat">Moqebelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[
�3##Locale/Data/sv_SE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sv"/>
		<territory type="SE"/>
	</identity>
</ldml>
PKpG[[�y2##Locale/Data/ro_RO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:35 $"/>
		<language type="ro"/>
		<territory type="RO"/>
	</identity>
</ldml>
PKpG[Sg��##Locale/Data/kfo_CI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kfo"/>
		<territory type="CI"/>
	</identity>
</ldml>
PKpG[dp��;;Locale/Data/ha_Latn_NE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.11 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Latn"/>
		<territory type="NE"/>
	</identity>
</ldml>
PKpG[��TuOOLocale/Data/ha_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<territory type="NG"/>
	</identity>
	<alias source="ha_Latn_NG" path="//ldml"/>
</ldml>
PKpG[�	NNLocale/Data/zh_Hant_MO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="zh"/>
		<script type="Hant"/>
		<territory type="MO"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="buddhist">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="chinese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy年MM月dd日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy年MM月dd日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>ahh:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">M月d日E至d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MM月d日E至MM月d日E</greatestDifference>
							<greatestDifference id="d">MM月d日E至d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MM月d日至MM月d日</greatestDifference>
							<greatestDifference id="d">MM月d日至d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">M月d日至d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">ah至h時</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">ah:mm至ah:mmv</greatestDifference>
							<greatestDifference id="h">ah:mm至h:mmv</greatestDifference>
							<greatestDifference id="m">ah:mm至h:mmv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">ah時至ah時v</greatestDifference>
							<greatestDifference id="h">ah至h時v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy年M月至M月</greatestDifference>
							<greatestDifference id="y">yy年M月至yy年M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yy年M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">yy年M月d日E至d日E</greatestDifference>
							<greatestDifference id="y">yy年M月d日E至yy年M月d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy年MM月至MM月</greatestDifference>
							<greatestDifference id="y">yyyy年MM月至yyyy年MM月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy年MM月d日E至MM月d日E</greatestDifference>
							<greatestDifference id="d">yyyy年MM月d日E至d日E</greatestDifference>
							<greatestDifference id="y">yyyy年MM月d日E至yyyy年MM月d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy年MM月d日至MM月d日</greatestDifference>
							<greatestDifference id="d">yyyy年MM月d日至d日</greatestDifference>
							<greatestDifference id="y">yyyy年MM月d日至yyyy年MM月d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy年M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">yy年M月d日至d日</greatestDifference>
							<greatestDifference id="y">yy年M月d日至yy年M月d日</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
</ldml>

PKpG[i`;;Locale/Data/uz_Arab_AF.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<script type="Arab"/>
		<territory type="AF"/>
	</identity>
</ldml>
PKpG[6�B��Locale/Data/es_CL.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.58 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="es"/>
		<territory type="CL"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="arn">mapudungun</language>
			<language type="ira">iraníes</language>
		</languages>
		<scripts>
			<script type="Bali">balinés</script>
		</scripts>
		<territories>
			<territory type="005">Sudamérica</territory>
			<territory type="AN">Antillas Holandesas</territory>
			<territory type="AZ">Azerbayán</territory>
			<territory type="EH">Sahara Occidental</territory>
			<territory type="PS">Territorio Palestino</territory>
			<territory type="RO">Rumania</territory>
			<territory type="SA">Arabia Saudita</territory>
			<territory type="TZ">Tanzanía</territory>
		</territories>
		<keys>
			<key type="currency">divisa</key>
		</keys>
		<types>
			<type type="phonebook" key="collation">orden de directorio telefónico</type>
		</types>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd-MM - E dd-MM</greatestDifference>
							<greatestDifference id="d">E dd-MM - E dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd-MM - dd-MM</greatestDifference>
							<greatestDifference id="d">dd-MM - dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM-yy - MM-yy</greatestDifference>
							<greatestDifference id="y">MM-yy - MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="d">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="y">E dd-MM-yy - E dd-MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="d">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="y">dd-MM-yy - dd-MM-yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="CLP">
				<displayName>Peso Chileno</displayName>
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[ʼYgLocale/Data/wo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.23 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wo"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="da">Danwaa</language>
			<language type="de">Almaa</language>
			<language type="en">Angale</language>
			<language type="es">Españool</language>
			<language type="fi">Finlaande</language>
			<language type="fr">Fraañse</language>
			<language type="it">Itaaliee</language>
			<language type="ja">Jappone</language>
			<language type="nl">Olaande</language>
			<language type="no">Norweejiee</language>
			<language type="pt">Portugees</language>
			<language type="sv">Suweedwaa</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b-e é ë f g i-n ñ ŋ o ó p-u w-y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ã h v z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
</ldml>
PKpG[Acx5OOLocale/Data/sr_YU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<territory type="YU"/>
	</identity>
	<alias source="sr_Cyrl_RS" path="//ldml"/>
</ldml>
PKpG[g��t*T*TLocale/Data/ja.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.147 $"/>
		<generation date="$Date: 2008/06/17 17:13:48 $"/>
		<language type="ja"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0}({1})</localePattern>
			<localeSeparator>,</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">アファル語</language>
			<language type="ab">アブハズ語</language>
			<language type="ace">アチェー語</language>
			<language type="ach">アチョリ語</language>
			<language type="ada">アダングメ語</language>
			<language type="ady">アディゲ語</language>
			<language type="ae">アヴェスタ語</language>
			<language type="af">アフリカーンス語</language>
			<language type="afa">セム・ハム諸語</language>
			<language type="afh">アフリヒリ語</language>
			<language type="ain">アイヌ語</language>
			<language type="ak">アカン語</language>
			<language type="akk">アッカド語</language>
			<language type="ale">アレウト語</language>
			<language type="alg">アルゴンキアン語族</language>
			<language type="alt">南アルタイ語</language>
			<language type="am">アムハラ語</language>
			<language type="an">アラゴン語</language>
			<language type="ang">古代英語</language>
			<language type="anp">アンギカ語</language>
			<language type="apa">アパッチ語族</language>
			<language type="ar">アラビア語</language>
			<language type="arc">アラム語</language>
			<language type="arn">アラウカン語</language>
			<language type="arp">アラパホー語</language>
			<language type="art">人工諸語</language>
			<language type="arw">アラワク語</language>
			<language type="as">アッサム語</language>
			<language type="ast">アストゥリアス語</language>
			<language type="ath">アサパスカン語族</language>
			<language type="aus">オーストラリア語族</language>
			<language type="av">アヴァル語</language>
			<language type="awa">アワディー語</language>
			<language type="ay">アイマラ語</language>
			<language type="az">アゼルバイジャン語</language>
			<language type="ba">バシキール語</language>
			<language type="bad">バンダ語</language>
			<language type="bai">バミレケ語族</language>
			<language type="bal">バルーチー語</language>
			<language type="ban">バリ語</language>
			<language type="bas">バサ語</language>
			<language type="bat">バルト諸語</language>
			<language type="be">ベラルーシ語</language>
			<language type="bej">ベジャ語</language>
			<language type="bem">ベンバ語</language>
			<language type="ber">ベルベル諸語</language>
			<language type="bg">ブルガリア語</language>
			<language type="bh">ビハール語</language>
			<language type="bho">ボージプリー語</language>
			<language type="bi">ビスラマ語</language>
			<language type="bik">ビコル語</language>
			<language type="bin">ビニ語</language>
			<language type="bla">シクシカ語</language>
			<language type="bm">バンバラ語</language>
			<language type="bn">ベンガル語</language>
			<language type="bnt">バントゥ諸語</language>
			<language type="bo">チベット語</language>
			<language type="br">ブルトン語</language>
			<language type="bra">ブラジ語</language>
			<language type="bs">ボスニア語</language>
			<language type="btk">バタク語</language>
			<language type="bua">ブリヤート語</language>
			<language type="bug">ブギ語</language>
			<language type="byn">ビリン語</language>
			<language type="ca">カタロニア語</language>
			<language type="cad">カドー語</language>
			<language type="cai">中米インディアン諸語</language>
			<language type="car">カリブ語</language>
			<language type="cau">コーカサス諸語</language>
			<language type="cch">チャワイ語</language>
			<language type="ce">チェチェン語</language>
			<language type="ceb">セブアノ語</language>
			<language type="cel">ケルト諸語</language>
			<language type="ch">チャモロ語</language>
			<language type="chb">チブチャ語</language>
			<language type="chg">チャガタイ語</language>
			<language type="chk">チューク語</language>
			<language type="chm">マリ語</language>
			<language type="chn">ビーチ・ラ・マー 等</language>
			<language type="cho">チョクトー語</language>
			<language type="chp">チペワイアン語</language>
			<language type="chr">チェロキー語</language>
			<language type="chy">シャイアン語</language>
			<language type="cmc">チャム語族</language>
			<language type="co">コルシカ語</language>
			<language type="cop">コプト語</language>
			<language type="cpe">英語が基盤の混成語・混合語</language>
			<language type="cpf">フランス語が基盤の混成語・混合語</language>
			<language type="cpp">ポルトガル語が基盤の混成語・混合語</language>
			<language type="cr">クリー語</language>
			<language type="crh">クリミア・タタール語</language>
			<language type="crp">その他の混成語・混合語</language>
			<language type="cs">チェコ語</language>
			<language type="csb">カシューブ語</language>
			<language type="cu">教会スラブ語</language>
			<language type="cus">クシュ諸語</language>
			<language type="cv">チュヴァシュ語</language>
			<language type="cy">ウェールズ語</language>
			<language type="da">デンマーク語</language>
			<language type="dak">ダコタ語</language>
			<language type="dar">ダルガン語</language>
			<language type="day">ダヤク語</language>
			<language type="de">ドイツ語</language>
			<language type="de_AT">ドイツ語(オーストリア)</language>
			<language type="de_CH">正統ドイツ語(スイス)</language>
			<language type="del">デラウェア語</language>
			<language type="den">スレイビー語</language>
			<language type="dgr">ドグリブ語</language>
			<language type="din">ディンカ語</language>
			<language type="doi">ドグリ語</language>
			<language type="dra">ドラヴィダ諸語</language>
			<language type="dsb">低ソルビア語</language>
			<language type="dua">ドゥアラ語</language>
			<language type="dum">中世オランダ語</language>
			<language type="dv">ディベヒ語</language>
			<language type="dyu">デゥウラ語</language>
			<language type="dz">ゾンカ語</language>
			<language type="ee">エウェ語</language>
			<language type="efi">エフィック語</language>
			<language type="egy">古代エジプト語</language>
			<language type="eka">エカジュク語</language>
			<language type="el">ギリシャ語</language>
			<language type="elx">エラム語</language>
			<language type="en">英語</language>
			<language type="en_CA">カナダ英語</language>
			<language type="en_GB">イギリス英語</language>
			<language type="en_US">アメリカ英語</language>
			<language type="enm">中世英語</language>
			<language type="eo">エスペラント語</language>
			<language type="es">スペイン語</language>
			<language type="es_419">スペイン語(ラテンアメリカ)</language>
			<language type="es_ES">スペイン語(イベリア半島)</language>
			<language type="et">エストニア語</language>
			<language type="eu">バスク語</language>
			<language type="ewo">エウォンド語</language>
			<language type="fa">ペルシア語</language>
			<language type="fan">ファング語</language>
			<language type="fat">ファンティー語</language>
			<language type="ff">フラニ語</language>
			<language type="fi">フィンランド語</language>
			<language type="fil">フィリピノ語</language>
			<language type="fiu">フィン・ウゴル諸語</language>
			<language type="fj">フィジー語</language>
			<language type="fo">フェロー語</language>
			<language type="fon">フォン語</language>
			<language type="fr">フランス語</language>
			<language type="fr_CA">フランス語(カナダ)</language>
			<language type="fr_CH">フランス語(スイス)</language>
			<language type="frm">中期フランス語</language>
			<language type="fro">古フランス語</language>
			<language type="frs">東フリジア語</language>
			<language type="fur">フリウリ語</language>
			<language type="fy">フリジア語</language>
			<language type="ga">アイルランド語</language>
			<language type="gaa">ガ語</language>
			<language type="gay">ガヨ語</language>
			<language type="gba">バヤ語</language>
			<language type="gd">スコットランド・ゲール語</language>
			<language type="gem">ゲルマン諸語</language>
			<language type="gez">ゲエズ語</language>
			<language type="gil">キリバス語</language>
			<language type="gl">ガリシア語</language>
			<language type="gmh">中高ドイツ語</language>
			<language type="gn">グアラニー語</language>
			<language type="goh">古高ドイツ語</language>
			<language type="gon">ゴーンディー語</language>
			<language type="gor">ゴロンタロ語</language>
			<language type="got">ゴート語</language>
			<language type="grb">グレボ語</language>
			<language type="grc">古代ギリシャ語</language>
			<language type="gsw">スイスドイツ語(スイス)</language>
			<language type="gu">グジャラート語</language>
			<language type="gv">マン島語</language>
			<language type="gwi">グウィッチン語</language>
			<language type="ha">ハウサ語</language>
			<language type="hai">ハイダ語</language>
			<language type="haw">ハワイ語</language>
			<language type="he">ヘブライ語</language>
			<language type="hi">ヒンディー語</language>
			<language type="hil">ヒリガイノン語</language>
			<language type="him">ヒマチャル語</language>
			<language type="hit">ヒッタイト語</language>
			<language type="hmn">フモン語</language>
			<language type="ho">ヒリモトゥ語</language>
			<language type="hr">クロアチア語</language>
			<language type="hsb">上ソルビア語</language>
			<language type="ht">ハイチ語</language>
			<language type="hu">ハンガリー語</language>
			<language type="hup">アタパスカ語</language>
			<language type="hy">アルメニア語</language>
			<language type="hz">ヘレロ語</language>
			<language type="ia">インターリングア語</language>
			<language type="iba">イバン語</language>
			<language type="id">インドネシア語</language>
			<language type="ie">インターリング語</language>
			<language type="ig">イボ語</language>
			<language type="ii">四川イ語</language>
			<language type="ijo">イジョー語</language>
			<language type="ik">イヌピアック語</language>
			<language type="ilo">イロカノ語</language>
			<language type="inc">インド諸語</language>
			<language type="ine">印欧諸語</language>
			<language type="inh">イングシ語</language>
			<language type="io">イド語</language>
			<language type="ira">イラン語</language>
			<language type="iro">イロコイ語族</language>
			<language type="is">アイスランド語</language>
			<language type="it">イタリア語</language>
			<language type="iu">イヌクウティトット語</language>
			<language type="ja">日本語</language>
			<language type="jbo">ロジバン語</language>
			<language type="jpr">ユダヤ・ペルシア語</language>
			<language type="jrb">ユダヤ・アラビア語</language>
			<language type="jv">ジャワ語</language>
			<language type="ka">グルジア語</language>
			<language type="kaa">カラ・カルパク語</language>
			<language type="kab">カビル語</language>
			<language type="kac">カチン語</language>
			<language type="kaj">カジェ語</language>
			<language type="kam">カンバ語</language>
			<language type="kar">カレン語</language>
			<language type="kaw">カウィ語</language>
			<language type="kbd">カバルド語</language>
			<language type="kcg">カタブ語</language>
			<language type="kfo">コロ語</language>
			<language type="kg">コンゴ語</language>
			<language type="kha">カシ語</language>
			<language type="khi">コイサン諸語</language>
			<language type="kho">コータン語</language>
			<language type="ki">キクユ語</language>
			<language type="kj">クアニャマ語</language>
			<language type="kk">カザフ語</language>
			<language type="kl">グリーンランド語</language>
			<language type="km">クメール語</language>
			<language type="kmb">キンブンドゥ語</language>
			<language type="kn">カンナダ語</language>
			<language type="ko">韓国語</language>
			<language type="kok">コンカニ語</language>
			<language type="kos">コシャエ語</language>
			<language type="kpe">クペレ語</language>
			<language type="kr">カヌリ語</language>
			<language type="krc">カラチャイ語</language>
			<language type="krl">カレリア語</language>
			<language type="kro">クルー語</language>
			<language type="kru">クルク語</language>
			<language type="ks">カシミール語</language>
			<language type="ku">クルド語</language>
			<language type="kum">クムク語</language>
			<language type="kut">クテナイ語</language>
			<language type="kv">コミ語</language>
			<language type="kw">コーンウォール語</language>
			<language type="ky">キルギス語</language>
			<language type="la">ラテン語</language>
			<language type="lad">ラジノ語</language>
			<language type="lah">ラフンダー語</language>
			<language type="lam">ランバ語</language>
			<language type="lb">ルクセンブルク語</language>
			<language type="lez">レズギ語</language>
			<language type="lg">ガンダ語</language>
			<language type="li">リンブルフ語</language>
			<language type="ln">リンガラ語</language>
			<language type="lo">ラオ語</language>
			<language type="lol">モンゴ語</language>
			<language type="loz">ロズィ語</language>
			<language type="lt">リトアニア語</language>
			<language type="lu">ルバ・カタンガ語</language>
			<language type="lua">ルバ・ルルア語</language>
			<language type="lui">ルイセーニョ語</language>
			<language type="lun">ルンダ語</language>
			<language type="luo">ルオ語</language>
			<language type="lus">ルシャイ語</language>
			<language type="lv">ラトビア語</language>
			<language type="mad">マドゥラ語</language>
			<language type="mag">マガヒー語</language>
			<language type="mai">マイティリー語</language>
			<language type="mak">マカッサル語</language>
			<language type="man">マンディンゴ語</language>
			<language type="map">オーストロネシア諸語</language>
			<language type="mas">マサイ語</language>
			<language type="mdf">モクシャ語</language>
			<language type="mdr">マンダル語</language>
			<language type="men">メンデ語</language>
			<language type="mg">マダガスカル語</language>
			<language type="mga">中期アイルランド語</language>
			<language type="mh">マーシャル語</language>
			<language type="mi">マオリ語</language>
			<language type="mic">ミクマク語</language>
			<language type="min">ミナンカバウ語</language>
			<language type="mis">その他の言語</language>
			<language type="mk">マケドニア語</language>
			<language type="mkh">モン・クメール諸語</language>
			<language type="ml">マラヤーラム語</language>
			<language type="mn">モンゴル語</language>
			<language type="mnc">満州語</language>
			<language type="mni">マニプル語</language>
			<language type="mno">マノボ語族</language>
			<language type="mo">モルダビア語</language>
			<language type="moh">モーホーク語</language>
			<language type="mos">モシ語</language>
			<language type="mr">マラーティー語</language>
			<language type="ms">マレー語</language>
			<language type="mt">マルタ語</language>
			<language type="mul">複数言語</language>
			<language type="mun">ムンダ語族</language>
			<language type="mus">クリーク語</language>
			<language type="mwl">ミランダ語</language>
			<language type="mwr">マールワーリー語</language>
			<language type="my">ビルマ語</language>
			<language type="myn">マヤ語族</language>
			<language type="myv">エルジャ語</language>
			<language type="na">ナウル語</language>
			<language type="nah">ナワトル語</language>
			<language type="nai">北米インディアン諸語</language>
			<language type="nap">ナポリ語</language>
			<language type="nb">ノルウェー語 (ブークモール)</language>
			<language type="nd">北ンデベレ語</language>
			<language type="nds">低地ドイツ語、低地サクソン語</language>
			<language type="ne">ネパール語</language>
			<language type="new">ネワール語</language>
			<language type="ng">ンドンガ語</language>
			<language type="nia">ニアス語</language>
			<language type="nic">ニジェール・コルドファン諸語</language>
			<language type="niu">ニウーエイ語</language>
			<language type="nl">オランダ語</language>
			<language type="nl_BE">フレミッシュ語</language>
			<language type="nn">ノルウェー語 (ニーノシュク)</language>
			<language type="no">ノルウェー語</language>
			<language type="nog">ノガイ語</language>
			<language type="non">古ノルド語</language>
			<language type="nqo">ンコ語</language>
			<language type="nr">南ンデベレ語</language>
			<language type="nso">北部ソト語</language>
			<language type="nub">ヌビア語族</language>
			<language type="nv">ナバホ語</language>
			<language type="nwc">古典ネワール語</language>
			<language type="ny">ニャンジャ語、チチェワ語、チェワ語</language>
			<language type="nym">ニャムウェジ語</language>
			<language type="nyn">ニャンコレ語</language>
			<language type="nyo">ニョロ語</language>
			<language type="nzi">ンゼマ語</language>
			<language type="oc">オック語</language>
			<language type="oj">オブジワ語</language>
			<language type="om">オロモ語</language>
			<language type="or">オリヤー語</language>
			<language type="os">オセト語</language>
			<language type="osa">オセージ語</language>
			<language type="ota">オスマントルコ語</language>
			<language type="oto">オトミ語族</language>
			<language type="pa">パンジャブ語</language>
			<language type="paa">パプア諸語</language>
			<language type="pag">パンガシナン語</language>
			<language type="pal">パフラヴィ語</language>
			<language type="pam">パンパンガ語</language>
			<language type="pap">パピアメント語</language>
			<language type="pau">パラオ語</language>
			<language type="peo">古代ペルシア語</language>
			<language type="phi">フィリピン諸語</language>
			<language type="phn">フェニキア語</language>
			<language type="pi">パーリ語</language>
			<language type="pl">ポーランド語</language>
			<language type="pon">ポンペイ語</language>
			<language type="pra">プラークリット語族</language>
			<language type="pro">古期プロバンス語</language>
			<language type="ps">パシュトゥー語</language>
			<language type="pt">ポルトガル語</language>
			<language type="pt_BR">ポルトガル語 (ブラジル)</language>
			<language type="pt_PT">ポルトガル語(イベリア半島)</language>
			<language type="qu">ケチュア語</language>
			<language type="raj">ラージャスターン語</language>
			<language type="rap">ラパヌイ語</language>
			<language type="rar">ラロトガ語</language>
			<language type="rm">レト・ロマン語</language>
			<language type="rn">ルンディ語</language>
			<language type="ro">ルーマニア語</language>
			<language type="roa">ロマンス諸語</language>
			<language type="rom">ロマーニー語</language>
			<language type="root">ルート</language>
			<language type="ru">ロシア語</language>
			<language type="rup">アルーマニア語</language>
			<language type="rw">ルワンダ語</language>
			<language type="sa">サンスクリット語</language>
			<language type="sad">サンダウェ語</language>
			<language type="sah">ヤクート語</language>
			<language type="sai">南米インディアン諸語</language>
			<language type="sal">セイリッシュ語族</language>
			<language type="sam">サマリア・アラム語</language>
			<language type="sas">ササク語</language>
			<language type="sat">サンターリー語</language>
			<language type="sc">サルデーニャ語</language>
			<language type="scn">シチリア語</language>
			<language type="sco">スコットランド語</language>
			<language type="sd">シンド語</language>
			<language type="se">北サーミ語</language>
			<language type="sel">セリクプ語</language>
			<language type="sem">セム諸語</language>
			<language type="sg">サンゴ語</language>
			<language type="sga">古期アイルランド語</language>
			<language type="sgn">手まね言語</language>
			<language type="sh">セルボ=クロアチア語</language>
			<language type="shn">シャン語</language>
			<language type="si">シンハラ語</language>
			<language type="sid">シダモ語</language>
			<language type="sio">スー語族</language>
			<language type="sit">シナ・チベット諸語</language>
			<language type="sk">スロバキア語</language>
			<language type="sl">スロベニア語</language>
			<language type="sla">スラブ諸語</language>
			<language type="sm">サモア語</language>
			<language type="sma">南サーミ語</language>
			<language type="smi">サーミ諸語</language>
			<language type="smj">ルレ・サーミ語</language>
			<language type="smn">イナリ・サーミ語</language>
			<language type="sms">スコルト・サーミ語</language>
			<language type="sn">ショナ語</language>
			<language type="snk">ソニンケ語</language>
			<language type="so">ソマリ語</language>
			<language type="sog">ソグド語</language>
			<language type="son">ソンガイ語</language>
			<language type="sq">アルバニア語</language>
			<language type="sr">セルビア語</language>
			<language type="srn">スリナム語</language>
			<language type="srr">セレル語</language>
			<language type="ss">シスワティ語</language>
			<language type="ssa">ナイル・サハラ諸語</language>
			<language type="st">南部ソト語</language>
			<language type="su">スンダ語</language>
			<language type="suk">スクマ語</language>
			<language type="sus">スス語</language>
			<language type="sux">シュメール語</language>
			<language type="sv">スウェーデン語</language>
			<language type="sw">スワヒリ語</language>
			<language type="syr">シリア語</language>
			<language type="ta">タミール語</language>
			<language type="tai">タイ諸語</language>
			<language type="te">テルグ語</language>
			<language type="tem">テムネ語</language>
			<language type="ter">テレーノ語</language>
			<language type="tet">テトゥン語</language>
			<language type="tg">タジク語</language>
			<language type="th">タイ語</language>
			<language type="ti">ティグリニア語</language>
			<language type="tig">ティグレ語</language>
			<language type="tiv">ティブ語</language>
			<language type="tk">トルクメン語</language>
			<language type="tkl">トケラウ語</language>
			<language type="tl">タガログ語</language>
			<language type="tlh">クリンゴン語</language>
			<language type="tli">トリンギット語</language>
			<language type="tmh">タマシェク語</language>
			<language type="tn">ツワナ語</language>
			<language type="to">トンガ語</language>
			<language type="tog">トンガ語 (ニアサ)</language>
			<language type="tpi">トク・ピシン語</language>
			<language type="tr">トルコ語</language>
			<language type="ts">ツォンガ語</language>
			<language type="tsi">チムシュ語</language>
			<language type="tt">タタール語</language>
			<language type="tum">トゥンブカ語</language>
			<language type="tup">トゥピ語族</language>
			<language type="tut">アルタイ諸語</language>
			<language type="tvl">ツバル語</language>
			<language type="tw">トウィ語</language>
			<language type="ty">タヒチ語</language>
			<language type="tyv">トゥヴァ語</language>
			<language type="udm">ウドムルト語</language>
			<language type="ug">ウイグル語</language>
			<language type="uga">ウガリト語</language>
			<language type="uk">ウクライナ語</language>
			<language type="umb">ウンブンドゥ語</language>
			<language type="und">非確定</language>
			<language type="ur">ウルドゥー語</language>
			<language type="uz">ウズベク語</language>
			<language type="vai">ヴァイ語</language>
			<language type="ve">ベンダ語</language>
			<language type="vi">ベトナム語</language>
			<language type="vo">ボラピュク語</language>
			<language type="vot">ボート語</language>
			<language type="wa">ワロン語</language>
			<language type="wak">ワカシ語族</language>
			<language type="wal">ワッラモ語</language>
			<language type="war">ワライ語</language>
			<language type="was">ワショ語</language>
			<language type="wen">ソルビア語族</language>
			<language type="wo">ウォロフ語</language>
			<language type="xal">カルムイク語</language>
			<language type="xh">コサ語</language>
			<language type="yao">ヤオ語</language>
			<language type="yap">ヤップ語</language>
			<language type="yi">イディッシュ語</language>
			<language type="yo">ヨルバ語</language>
			<language type="ypk">ユピック語族</language>
			<language type="za">チワン語</language>
			<language type="zap">ザポテック語</language>
			<language type="zen">ゼナガ語</language>
			<language type="zh">中国語</language>
			<language type="zh_Hans">簡体中国語</language>
			<language type="zh_Hant">繁体中国語</language>
			<language type="znd">ザンデ語</language>
			<language type="zu">ズールー語</language>
			<language type="zun">ズニ語</language>
		</languages>
		<scripts>
			<script type="Arab">アラビア文字</script>
			<script type="Armn">アルメニア文字</script>
			<script type="Bali">バリ文字</script>
			<script type="Batk">バタク文字</script>
			<script type="Beng">ベンガル文字</script>
			<script type="Blis">ブリスシンボル</script>
			<script type="Bopo">注音字母</script>
			<script type="Brah">ブラーフミー文字</script>
			<script type="Brai">ブライユ点字</script>
			<script type="Bugi">ブギス文字</script>
			<script type="Buhd">ブヒッド文字</script>
			<script type="Cans">統合カナダ先住民記号</script>
			<script type="Cari">カリ文字</script>
			<script type="Cham">チャム文字</script>
			<script type="Cher">チェロキー文字</script>
			<script type="Cirt">キアス文字</script>
			<script type="Copt">コプト文字</script>
			<script type="Cprt">キプロス文字</script>
			<script type="Cyrl">キリル文字</script>
			<script type="Cyrs">キリル文字 (古代教会スラブ語の文字)</script>
			<script type="Deva">デーバナーガリー文字</script>
			<script type="Dsrt">デセレット文字</script>
			<script type="Egyd">エジプト民衆文字</script>
			<script type="Egyh">エジプト神官文字</script>
			<script type="Egyp">エジプト聖刻文字</script>
			<script type="Ethi">エチオピア文字</script>
			<script type="Geok">グルジア文字(フツリ)</script>
			<script type="Geor">グルジア文字</script>
			<script type="Glag">グラゴール文字</script>
			<script type="Goth">ゴート文字</script>
			<script type="Grek">ギリシャ文字</script>
			<script type="Gujr">グジャラート文字</script>
			<script type="Guru">グルムキー文字</script>
			<script type="Hang">ハングル</script>
			<script type="Hani">漢字</script>
			<script type="Hano">ハヌノオ文字</script>
			<script type="Hans">簡体字</script>
			<script type="Hant">繁体字</script>
			<script type="Hebr">ヘブライ文字</script>
			<script type="Hira">ひらがな</script>
			<script type="Hmng">パハウ・フモン文字</script>
			<script type="Hrkt">カタカナとひらがな</script>
			<script type="Hung">古代ハンガリー文字</script>
			<script type="Inds">インダス文字 (ハラッパ文字)</script>
			<script type="Ital">古代イタリアの文字</script>
			<script type="Java">ジャワ文字</script>
			<script type="Jpan">日本語の文字</script>
			<script type="Kali">カヤー文字</script>
			<script type="Kana">カタカナ</script>
			<script type="Khar">カローシュティー文字</script>
			<script type="Khmr">クメール文字</script>
			<script type="Knda">カンナダ文字</script>
			<script type="Kore">韓国語の文字</script>
			<script type="Laoo">ラオ文字</script>
			<script type="Latf">ラテン文字 (ドイツ文字)</script>
			<script type="Latg">ラテン文字 (ゲール語の文字)</script>
			<script type="Latn">ラテン文字</script>
			<script type="Lepc">レプチャ文字 (ロン文字)</script>
			<script type="Limb">リンブ文字</script>
			<script type="Lina">線文字A</script>
			<script type="Linb">線文字B</script>
			<script type="Mand">マンダ文字</script>
			<script type="Maya">マヤ象形文字</script>
			<script type="Mero">メロエ文字</script>
			<script type="Mlym">マラヤーラム文字</script>
			<script type="Mong">モンゴル文字</script>
			<script type="Moon">ムーン文字</script>
			<script type="Mtei">メイテイ文字</script>
			<script type="Mymr">ミャンマー文字</script>
			<script type="Nkoo">インコ文字</script>
			<script type="Ogam">オガム文字</script>
			<script type="Olck">オルチキ文字</script>
			<script type="Orkh">オルホン文字</script>
			<script type="Orya">オリヤー文字</script>
			<script type="Osma">オスマニア文字</script>
			<script type="Perm">古ペルミック文字</script>
			<script type="Phag">パスパ文字</script>
			<script type="Phnx">フェニキア文字</script>
			<script type="Plrd">ポラード音声記号</script>
			<script type="Qaai">系統</script>
			<script type="Roro">ロンゴロンゴ文字</script>
			<script type="Runr">ルーン文字</script>
			<script type="Sara">サラティ文字</script>
			<script type="Shaw">ショー文字</script>
			<script type="Sinh">シンハラ文字</script>
			<script type="Sylo">シロティ・ナグリ文字</script>
			<script type="Syrc">シリア文字</script>
			<script type="Syre">シリア文字 (エストランゲロ文字)</script>
			<script type="Syrj">シリア文字 (西方シリア文字)</script>
			<script type="Syrn">シリア文字 (東方シリア文字)</script>
			<script type="Tagb">タグバンワ文字</script>
			<script type="Tale">タイレ文字</script>
			<script type="Talu">新タイ・ルー文字</script>
			<script type="Taml">タミール文字</script>
			<script type="Telu">テルグ文字</script>
			<script type="Teng">テングワール文字</script>
			<script type="Tfng">ティフナグ文字 (ベルベル文字)</script>
			<script type="Tglg">タガログ文字</script>
			<script type="Thaa">ターナ文字</script>
			<script type="Thai">タイ文字</script>
			<script type="Tibt">チベット文字</script>
			<script type="Ugar">ウガリト文字</script>
			<script type="Vaii">ヴァイ文字</script>
			<script type="Visp">視話法</script>
			<script type="Xpeo">古代ペルシア文字</script>
			<script type="Xsux">シュメール=アッカド語楔形文字</script>
			<script type="Yiii">イ文字</script>
			<script type="Zxxx">口承言語のコード</script>
			<script type="Zyyy">共通コード</script>
			<script type="Zzzz">コード化されていない文字のコード</script>
		</scripts>
		<territories>
			<territory type="001">世界</territory>
			<territory type="002">アフリカ</territory>
			<territory type="003">北米</territory>
			<territory type="005">南アメリカ</territory>
			<territory type="009">オセアニア</territory>
			<territory type="011">西アフリカ</territory>
			<territory type="013">中央アメリカ</territory>
			<territory type="014">東アフリカ</territory>
			<territory type="015">北アフリカ</territory>
			<territory type="017">中部アフリカ</territory>
			<territory type="018">南部アフリカ</territory>
			<territory type="019">アメリカ大陸</territory>
			<territory type="021">北アメリカ</territory>
			<territory type="029">カリブ海</territory>
			<territory type="030">東アジア</territory>
			<territory type="034">南アジア</territory>
			<territory type="035">東南アジア</territory>
			<territory type="039">南ヨーロッパ</territory>
			<territory type="053">オーストラリア・ニュージーランド</territory>
			<territory type="054">メラネシア</territory>
			<territory type="057">ミクロネシア地域</territory>
			<territory type="061">ポリネシア</territory>
			<territory type="062">南中央アジア</territory>
			<territory type="142">アジア</territory>
			<territory type="143">中央アジア</territory>
			<territory type="145">西アジア</territory>
			<territory type="150">ヨーロッパ</territory>
			<territory type="151">東ヨーロッパ</territory>
			<territory type="154">北ヨーロッパ</territory>
			<territory type="155">西ヨーロッパ</territory>
			<territory type="172">独立国家共同体</territory>
			<territory type="419">ラテンアメリカ・カリブ地域</territory>
			<territory type="830">チャネル諸島</territory>
			<territory type="AD">アンドラ</territory>
			<territory type="AE">アラブ首長国連邦</territory>
			<territory type="AF">アフガニスタン</territory>
			<territory type="AG">アンティグア・バーブーダ</territory>
			<territory type="AI">アンギラ</territory>
			<territory type="AL">アルバニア</territory>
			<territory type="AM">アルメニア</territory>
			<territory type="AN">オランダ領アンティル諸島</territory>
			<territory type="AO">アンゴラ</territory>
			<territory type="AQ">南極大陸</territory>
			<territory type="AR">アルゼンチン</territory>
			<territory type="AS">米領サモア</territory>
			<territory type="AT">オーストリア</territory>
			<territory type="AU">オーストラリア</territory>
			<territory type="AW">アルバ島</territory>
			<territory type="AX">オーランド諸島</territory>
			<territory type="AZ">アゼルバイジャン</territory>
			<territory type="BA">ボスニア・ヘルツェゴビナ</territory>
			<territory type="BB">バルバドス</territory>
			<territory type="BD">バングラデシュ</territory>
			<territory type="BE">ベルギー</territory>
			<territory type="BF">ブルキナファソ</territory>
			<territory type="BG">ブルガリア</territory>
			<territory type="BH">バーレーン</territory>
			<territory type="BI">ブルンジ</territory>
			<territory type="BJ">ベニン</territory>
			<territory type="BL">サン・バルテルミー</territory>
			<territory type="BM">バミューダ</territory>
			<territory type="BN">ブルネイ</territory>
			<territory type="BO">ボリビア</territory>
			<territory type="BR">ブラジル</territory>
			<territory type="BS">バハマ</territory>
			<territory type="BT">ブータン</territory>
			<territory type="BV">ブーベ島</territory>
			<territory type="BW">ボツワナ</territory>
			<territory type="BY">ベラルーシ</territory>
			<territory type="BZ">ベリーズ</territory>
			<territory type="CA">カナダ</territory>
			<territory type="CC">ココス (キーリング) 諸島</territory>
			<territory type="CD">コンゴ民主共和国 (キンシャサ)</territory>
			<territory type="CF">中央アフリカ共和国</territory>
			<territory type="CG">コンゴ共和国 (ブラザビル)</territory>
			<territory type="CH">スイス</territory>
			<territory type="CI">コートジボワール</territory>
			<territory type="CK">クック諸島</territory>
			<territory type="CL">チリ</territory>
			<territory type="CM">カメルーン</territory>
			<territory type="CN">中国</territory>
			<territory type="CO">コロンビア</territory>
			<territory type="CR">コスタリカ</territory>
			<territory type="CS">セルビア・モンテネグロ</territory>
			<territory type="CU">キューバ</territory>
			<territory type="CV">カーボベルデ</territory>
			<territory type="CX">クリスマス島</territory>
			<territory type="CY">キプロス</territory>
			<territory type="CZ">チェコ共和国</territory>
			<territory type="DE">ドイツ</territory>
			<territory type="DJ">ジブチ</territory>
			<territory type="DK">デンマーク</territory>
			<territory type="DM">ドミニカ国</territory>
			<territory type="DO">ドミニカ共和国</territory>
			<territory type="DZ">アルジェリア</territory>
			<territory type="EC">エクアドル</territory>
			<territory type="EE">エストニア</territory>
			<territory type="EG">エジプト</territory>
			<territory type="EH">西サハラ</territory>
			<territory type="ER">エリトリア</territory>
			<territory type="ES">スペイン</territory>
			<territory type="ET">エチオピア</territory>
			<territory type="FI">フィンランド</territory>
			<territory type="FJ">フィジー</territory>
			<territory type="FK">フォークランド諸島</territory>
			<territory type="FM">ミクロネシア</territory>
			<territory type="FO">フェロー諸島</territory>
			<territory type="FR">フランス</territory>
			<territory type="GA">ガボン</territory>
			<territory type="GB">イギリス</territory>
			<territory type="GD">グレナダ</territory>
			<territory type="GE">グルジア</territory>
			<territory type="GF">仏領ギアナ</territory>
			<territory type="GG">ガーンジー</territory>
			<territory type="GH">ガーナ</territory>
			<territory type="GI">ジブラルタル</territory>
			<territory type="GL">グリーンランド</territory>
			<territory type="GM">ガンビア</territory>
			<territory type="GN">ギニア</territory>
			<territory type="GP">グアドループ</territory>
			<territory type="GQ">赤道ギニア</territory>
			<territory type="GR">ギリシャ</territory>
			<territory type="GS">南ジョージア島・南サンドイッチ諸島</territory>
			<territory type="GT">グアテマラ</territory>
			<territory type="GU">グアム</territory>
			<territory type="GW">ギニアビサウ</territory>
			<territory type="GY">ガイアナ</territory>
			<territory type="HK">香港</territory>
			<territory type="HM">ハード島・マクドナルド諸島</territory>
			<territory type="HN">ホンジュラス</territory>
			<territory type="HR">クロアチア</territory>
			<territory type="HT">ハイチ</territory>
			<territory type="HU">ハンガリー</territory>
			<territory type="ID">インドネシア</territory>
			<territory type="IE">アイルランド</territory>
			<territory type="IL">イスラエル</territory>
			<territory type="IM">マン島</territory>
			<territory type="IN">インド</territory>
			<territory type="IO">英領インド洋植民地</territory>
			<territory type="IQ">イラク</territory>
			<territory type="IR">イラン</territory>
			<territory type="IS">アイスランド</territory>
			<territory type="IT">イタリア</territory>
			<territory type="JE">ジャージー</territory>
			<territory type="JM">ジャマイカ</territory>
			<territory type="JO">ヨルダン</territory>
			<territory type="JP">日本</territory>
			<territory type="KE">ケニア</territory>
			<territory type="KG">キルギスタン</territory>
			<territory type="KH">カンボジア</territory>
			<territory type="KI">キリバス</territory>
			<territory type="KM">コモロ</territory>
			<territory type="KN">セントクリストファー・ネイビス</territory>
			<territory type="KP">朝鮮民主主義人民共和国</territory>
			<territory type="KR">大韓民国</territory>
			<territory type="KW">クウェート</territory>
			<territory type="KY">ケイマン諸島</territory>
			<territory type="KZ">カザフスタン</territory>
			<territory type="LA">ラオス</territory>
			<territory type="LB">レバノン</territory>
			<territory type="LC">セントルシア</territory>
			<territory type="LI">リヒテンシュタイン</territory>
			<territory type="LK">スリランカ</territory>
			<territory type="LR">リベリア</territory>
			<territory type="LS">レソト</territory>
			<territory type="LT">リトアニア</territory>
			<territory type="LU">ルクセンブルグ</territory>
			<territory type="LV">ラトビア</territory>
			<territory type="LY">リビア</territory>
			<territory type="MA">モロッコ</territory>
			<territory type="MC">モナコ</territory>
			<territory type="MD">モルドバ</territory>
			<territory type="ME">モンテネグロ</territory>
			<territory type="MF">セント・マーチン</territory>
			<territory type="MG">マダガスカル</territory>
			<territory type="MH">マーシャル諸島共和国</territory>
			<territory type="MK">マケドニア</territory>
			<territory type="ML">マリ</territory>
			<territory type="MM">ミャンマー</territory>
			<territory type="MN">モンゴル</territory>
			<territory type="MO">マカオ</territory>
			<territory type="MP">北マリアナ諸島</territory>
			<territory type="MQ">マルティニーク島</territory>
			<territory type="MR">モーリタニア</territory>
			<territory type="MS">モントセラト島</territory>
			<territory type="MT">マルタ</territory>
			<territory type="MU">モーリシャス</territory>
			<territory type="MV">モルジブ</territory>
			<territory type="MW">マラウィ</territory>
			<territory type="MX">メキシコ</territory>
			<territory type="MY">マレーシア</territory>
			<territory type="MZ">モザンビーク</territory>
			<territory type="NA">ナミビア</territory>
			<territory type="NC">ニューカレドニア</territory>
			<territory type="NE">ニジェール</territory>
			<territory type="NF">ノーフォーク島</territory>
			<territory type="NG">ナイジェリア</territory>
			<territory type="NI">ニカラグア</territory>
			<territory type="NL">オランダ</territory>
			<territory type="NO">ノルウェー</territory>
			<territory type="NP">ネパール</territory>
			<territory type="NR">ナウル</territory>
			<territory type="NU">ニウエ島</territory>
			<territory type="NZ">ニュージーランド</territory>
			<territory type="OM">オマーン</territory>
			<territory type="PA">パナマ</territory>
			<territory type="PE">ペルー</territory>
			<territory type="PF">仏領ポリネシア</territory>
			<territory type="PG">パプアニューギニア</territory>
			<territory type="PH">フィリピン</territory>
			<territory type="PK">パキスタン</territory>
			<territory type="PL">ポーランド</territory>
			<territory type="PM">サンピエール島・ミクロン島</territory>
			<territory type="PN">ピトケアン島</territory>
			<territory type="PR">プエルトリコ</territory>
			<territory type="PS">パレスチナ領土</territory>
			<territory type="PT">ポルトガル</territory>
			<territory type="PW">パラオ</territory>
			<territory type="PY">パラグアイ</territory>
			<territory type="QA">カタール</territory>
			<territory type="QO">その他のオセアニア</territory>
			<territory type="QU">欧州連合</territory>
			<territory type="RE">レユニオン島</territory>
			<territory type="RO">ルーマニア</territory>
			<territory type="RS">セルビア</territory>
			<territory type="RU">ロシア</territory>
			<territory type="RW">ルワンダ</territory>
			<territory type="SA">サウジアラビア</territory>
			<territory type="SB">ソロモン諸島</territory>
			<territory type="SC">セーシェル</territory>
			<territory type="SD">スーダン</territory>
			<territory type="SE">スウェーデン</territory>
			<territory type="SG">シンガポール</territory>
			<territory type="SH">セントヘレナ</territory>
			<territory type="SI">スロベニア</territory>
			<territory type="SJ">スバールバル諸島・ヤンマイエン島</territory>
			<territory type="SK">スロバキア</territory>
			<territory type="SL">シエラレオネ</territory>
			<territory type="SM">サンマリノ</territory>
			<territory type="SN">セネガル</territory>
			<territory type="SO">ソマリア</territory>
			<territory type="SR">スリナム</territory>
			<territory type="ST">サントメ・プリンシペ</territory>
			<territory type="SV">エルサルバドル</territory>
			<territory type="SY">シリア</territory>
			<territory type="SZ">スワジランド</territory>
			<territory type="TC">タークス諸島・カイコス諸島</territory>
			<territory type="TD">チャド</territory>
			<territory type="TF">フランス領極南諸島</territory>
			<territory type="TG">トーゴ</territory>
			<territory type="TH">タイ</territory>
			<territory type="TJ">タジキスタン</territory>
			<territory type="TK">トケラウ諸島</territory>
			<territory type="TL">東ティモール</territory>
			<territory type="TM">トルクメニスタン</territory>
			<territory type="TN">チュニジア</territory>
			<territory type="TO">トンガ</territory>
			<territory type="TR">トルコ</territory>
			<territory type="TT">トリニダード・トバゴ</territory>
			<territory type="TV">ツバル</territory>
			<territory type="TW">台湾</territory>
			<territory type="TZ">タンザニア</territory>
			<territory type="UA">ウクライナ</territory>
			<territory type="UG">ウガンダ</territory>
			<territory type="UM">米領太平洋諸島</territory>
			<territory type="US">アメリカ合衆国</territory>
			<territory type="UY">ウルグアイ</territory>
			<territory type="UZ">ウズベキスタン</territory>
			<territory type="VA">バチカン市国</territory>
			<territory type="VC">セントビンセント・グレナディーン諸島</territory>
			<territory type="VE">ベネズエラ</territory>
			<territory type="VG">イギリス領ヴァージン諸島</territory>
			<territory type="VI">アメリカ領ヴァージン諸島</territory>
			<territory type="VN">ベトナム</territory>
			<territory type="VU">バヌアツ</territory>
			<territory type="WF">ウォリス・フツナ</territory>
			<territory type="WS">サモア</territory>
			<territory type="YE">イエメン</territory>
			<territory type="YT">マヨット島</territory>
			<territory type="ZA">南アフリカ</territory>
			<territory type="ZM">ザンビア</territory>
			<territory type="ZW">ジンバブエ</territory>
			<territory type="ZZ">不明な地域</territory>
		</territories>
		<variants>
			<variant type="1901">伝統的ドイツ語正書法(1901)</variant>
			<variant type="1996">ドイツ語正書法(1996)</variant>
			<variant type="1606NICT">後期中世フランス語(〜1606)</variant>
			<variant type="1694ACAD">初期現代フランス語</variant>
			<variant type="AREVELA">東アルメニア文語</variant>
			<variant type="AREVMDA">西アルメニア文語</variant>
			<variant type="BOONT">ブーントリング</variant>
			<variant type="FONIPA">国際音声記号</variant>
			<variant type="FONUPA">ウラル音声記号</variant>
			<variant type="MONOTON">モノトニック</variant>
			<variant type="NEDIS">ナティゾーネ方言</variant>
			<variant type="POLYTON">ポリトニック</variant>
			<variant type="POSIX">コンピュータ</variant>
			<variant type="REVISED">改訂版</variant>
			<variant type="ROZAJ">レシア方言</variant>
			<variant type="SAAHO">サホ語</variant>
			<variant type="SCOUSE">リバプール方言</variant>
			<variant type="VALENCIA">バレンシア方言</variant>
		</variants>
		<keys>
			<key type="calendar">暦法</key>
			<key type="collation">照合</key>
			<key type="currency">通貨</key>
		</keys>
		<types>
			<type type="big5han" key="collation">繁体字中国語 (Big5)</type>
			<type type="buddhist" key="calendar">タイ仏教暦</type>
			<type type="chinese" key="calendar">中国暦</type>
			<type type="direct" key="collation">直接著錄</type>
			<type type="gb2312han" key="collation">簡体字中国語 (GB2312)</type>
			<type type="gregorian" key="calendar">西暦 (グレゴリオ暦)</type>
			<type type="hebrew" key="calendar">ユダヤ暦</type>
			<type type="islamic" key="calendar">イスラム暦</type>
			<type type="islamic-civil" key="calendar">太陽イスラム暦</type>
			<type type="japanese" key="calendar">和暦</type>
			<type type="phonebook" key="collation">電話帳方式</type>
			<type type="pinyin" key="collation">ピンイン順</type>
			<type type="stroke" key="collation">画数順</type>
			<type type="traditional" key="collation">旧式</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ヤード・ポンド法</measurementSystemName>
			<measurementSystemName type="metric">メートル法</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">言語: {0}</codePattern>
			<codePattern type="script">文字: {0}</codePattern>
			<codePattern type="territory">地域: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ゞ ゝヽ ヾ ぁァ あア ぃィ いイ ぅゥ うウ ヴ ぇェ えエ ぉォ おオ ヵ かカ がガ きキ ぎギ くク ぐグ ヶ けケ げゲ こコ ごゴ さサ ざザ しシ じジ すス ずズ せセ ぜゼ そソ ぞゾ たタ だダ ちチ ぢヂ っッ つツ づヅ てテ でデ とト どド なナ にニ ぬヌ ねネ のノ はハ ばバ ぱパ ひヒ びビ ぴピ ふフ ぶブ ぷプ へヘ べベ ぺペ ほホ ぼボ ぽポ まマ みミ むム めメ もモ ゃャ やヤ ゅュ ゆユ ょョ よヨ らラ りリ るル れレ ろロ ゎヮ わワ ゐヰ ゑヱ をヲ んン 一 丁 七 万-下 不 与 且 世 丘 丙 両 並 中 丸 丹 主 久 乏 乗 乙 九 乱 乳 乾 亀 了 予 争 事 二 互 五 井 亜 亡 交 亨 享-亭 人 仁 今 介 仏 仕 他 付 仙 代-以 仮 仰 仲 件 任 企 伏-休 会 伝 伯 伴 伸 伺 似 但 位-佐 体 何 余 作 佳 併 使 例 侍 供 依 価 侮 侯 侵 便 係 促 俊 俗 保 信 修 俳 俵 俸 倉 個 倍 倒 候 借 倣 値 倫 倹 偉 偏 停 健 側-偶 偽 傍 傑 傘 備 催 債 傷 傾 働 像 僕 僚 僧 儀 億 儒 償 優 元-兆 先 光 克 免 児 党 入 全 八-六 共 兵 具 典 兼 内 円 冊 再 冒 冗 写 冠 冬 冷 准 凍 凝 凡 処 凶 凸-出 刀 刃 分-刈 刊 刑 列 初 判 別 利 到 制-券 刺 刻 則 削 前 剖 剛 剣 剤 副 剰 割 創 劇 力 功 加 劣 助 努 励 労 効 劾 勅 勇 勉 動 勘 務 勝 募 勢 勤 勧 勲 勺 匁 包 化 北 匠 匹-医 匿 十 千 升 午 半 卑-協 南 単 博 占 印 危 即-卵 卸 厄 厘 厚 原 厳 去 参 又 及-収 叔 取 受 叙 口-句 叫 召 可 台 史 右 号 司 各 合 吉 同-向 君 吟 否 含 吸 吹 呈-告 周 味 呼 命 和 咲 哀 品 員 哲 唆 唇 唐 唯 唱 商 問 啓 善 喚 喜 喝 喪 喫 営 嗣 嘆 嘉 嘱 器 噴 嚇 囚 四 回 因 団 困 囲 図 固 国 圏 園 土 圧 在 地 坂 均 坊 坑 坪 垂 型 垣 埋 城 域 執 培 基 堀 堂 堅 堕 堤 堪 報 場 塀 塁 塊 塑 塔 塗 塚 塩 塾 境 墓 増 墜 墨 墳 墾 壁 壇 壊 壌 士 壮 声-売 変 夏 夕 外 多 夜 夢 大 天-夫 央 失 奇 奉 奏 契 奔 奥 奨 奪 奮 女 奴 好 如-妄 妊 妙 妥 妨 妹 妻 姉 始 姓 委 姫 姻 姿 威 娘 娠 娯 婆 婚 婦 婿 媒 嫁 嫌 嫡 嬢 子 孔 字 存 孝 季 孤 学 孫 宅 宇-安 完 宗-定 宜 宝 実 客-室 宮 宰 害-家 容 宿 寂 寄 密 富 寒 寛 寝 察 寡 寧 審 寮 寸 寺 対 寿 封 専 射 将 尉-尋 導 小 少 尚 就 尺 尼-局 居 屈 届 屋 展 属 層 履 屯 山 岐 岩 岬 岳 岸 峠 峡 峰 島 崇 崎 崩 川 州 巡 巣 工-巨 差 己 巻 市 布 帆 希 帝 帥 師 席 帯 帰 帳 常 帽 幅 幕 幣 干-年 幸 幹 幻-幾 庁 広 床 序 底 店 府 度 座 庫 庭 庶-庸 廃 廉 廊 延 廷 建 弁 弊 式 弐 弓-引 弘 弟 弦 弧 弱 張 強 弾 当 形 彩 彫 彰 影 役 彼 往 征 径 待 律 後 徐 徒 従 得 御 復 循 微 徳 徴 徹 心 必 忌 忍 志-忙 応 忠 快 念 怒 怖 思 怠 急 性 怪 恋 恐 恒 恥 恨 恩 恭 息 恵 悔 悟 悠 患 悦 悩 悪 悲 悼 情 惑 惜 惨 惰 想 愁 愉 意 愚 愛 感 慈 態 慌 慎 慕 慢 慣 慨 慮 慰 慶 憂 憎 憤 憩 憲 憶 憾 懇 懐 懲 懸 成-戒 戦 戯 戸 戻 房 所 扇 扉 手 才 打 払 扱 扶 批 承 技 抄 把 抑 投 抗 折 抜 択 披 抱 抵 抹 押 抽 担 拍 拐 拒 拓 拘 拙 招 拝 拠 拡 括 拷 拾 持 指 挑 挙 挟 振 挿 捕 捜 捨 据 掃 授 掌 排 掘 掛 採 探 接 控 推 措 掲 描 提 揚 換 握 揮 援 揺 損 搬 搭 携 搾 摂 摘 摩 撃 撤 撮 撲 擁 操 擦 擬 支 改 攻 放 政 故 敏 救 敗 教 敢 散 敬 数 整 敵 敷 文 斉 斎 斗 料 斜 斤 斥 断 新 方 施 旅 旋 族 旗 既 日 旧-早 旬 昆 昇 昌 明 易 昔 星 映 春 昨 昭 是 昼 時 晩 普 景 晴 晶 暁 暇 暑 暖 暗 暦 暫 暮 暴 曇 曜 曲 更 書 曹 替 最 月 有 服 朕 朗 望 朝 期 木 未-札 朱 朴 机 朽 杉 材 村 束 条 来 杯 東 松 板 析 林 枚 果 枝 枠 枢 枯 架 柄 某 染 柔 柱 柳 査 栄 栓 校 株 核 根 格 栽 桃 案 桑 桜 桟 梅 械 棄 棋 棒 棚 棟 森 棺 植 検 業 極 楼 楽 概 構 様 槽 標 模 権 横 樹 橋 機 欄 欠 次 欧 欲 欺 款 歌 歓 止 正 武 歩 歯 歳 歴 死 殉-残 殖 殴 段 殺 殻 殿 母 毎 毒 比 毛 氏 民 気 水 氷 永 汁 求 汗 汚 江 池 決 汽 沈 沖 没 沢 河 沸 油 治 沼 沿 況 泉 泊 泌 法 泡-泣 泥 注 泰 泳 洋 洗 洞 津 洪 活 派 流 浄 浅 浜 浦 浪 浮 浴 海 浸 消 涙 涯 液 涼 淑 淡 深 混 添 清 渇-渉 渋 渓 減 渡 渦 温 測 港 湖 湯 湾-満 源 準 溝 溶 滅 滋 滑 滝 滞 滴 漁 漂 漆 漏 演 漠 漢 漫 漬 漸 潔 潜 潟 潤 潮 澄 激 濁 濃 濫 濯 瀬 火 灯 灰 災 炉 炊 炎 炭 点 為 烈 無 焦 然 焼 煙 照 煩 煮 熟 熱 燃 燥 爆 爵 父 片 版 牛 牧 物 牲 特 犠 犬 犯 状 狂 狩 独 狭 猛 猟 猫 献 猶 猿 獄 獣 獲 玄 率 玉 王 珍 珠 班 現 球 理 琴 環 璽 瓶 甘 甚 生 産 用 田-申 男 町 画 界 畑 畔 留 畜 畝 略 番 異 畳 疎 疑 疫 疲 疾 病 症 痘 痛 痢 痴 療 癒 癖 発 登 白 百 的 皆 皇 皮 皿 盆 益 盗 盛 盟 監 盤 目 盲 直 相 盾 省 看 県 真 眠 眺 眼 着 睡 督 瞬 矛 矢 知 短 矯 石 砂 研 砕 砲 破 硝 硫 硬 碁 碑 確 磁 磨 礁 礎 示 礼 社 祈 祉 祖 祚 祝 神 祥 票 祭 禁 禄 禅 禍-福 秀 私 秋 科 秒 秘 租 秩 称 移 程 税 稚 種 稲 稼 稿 穀 穂 積 穏 穫 穴 究 空 突 窃 窒 窓 窮 窯 立 竜 章 童 端 競 竹 笑 笛 符 第 筆 等 筋 筒 答 策 箇 算 管 箱 節 範 築 篤 簡 簿 籍 米 粉 粋 粒 粗 粘 粛 粧 精 糖 糧 糸 系 糾 紀 約 紅 紋 納 純 紙-紛 素-索 紫 累 細 紳 紹 紺 終 組 経 結 絞 絡 給 統 絵 絶 絹 継 続 維 綱 網 綿 緊 総 緑 緒 線 締 編 緩 緯 練 縁 縄 縛 縦 縫 縮 績 繁 繊 織 繕 繭 繰 缶 罪 置 罰 署 罷 羅 羊 美 群 義 羽 翁 翌 習 翻 翼 老 考 者 耐 耕 耗 耳 聖 聞 聴 職 肉 肌 肖 肝 肢 肥 肩 肪 肯 育 肺 胃 胆 背 胎 胞 胴 胸 能 脂 脅 脈 脚 脱 脳 脹 腐 腕 腰 腸 腹 膚 膜 膨 臓 臣 臨 自 臭 至 致 興 舌 舎 舗 舞 舟 航 般 舶 船 艇 艦 良 色 芋 芝 花 芳 芸 芽 苗 若 苦 英 茂 茎 茶 草 荒 荘 荷 菊 菌 菓 菜 華 落 葉 著 葬 蒸 蓄 蔵 薄 薦 薪-薬 藩 藻 虐 虚 虜 虞 虫 蚊 蚕 蛇 蛍 蛮 融 血 衆 行 術 街 衛 衝 衡 衣 表 衰 衷 袋 被 裁 裂 装 裏 裕 補 裸 製 複 褐 褒 襟 襲 西 要 覆 覇 見 規 視 覚 覧 親 観 角 解 触 言 訂 計 討 訓 託 記 訟 訪 設 許 訳 訴 診 証 詐 詔 評 詞 詠 試 詩 詰-詳 誇 誉 誌 認 誓 誕 誘 語 誠 誤 説 読 課 調 談 請 論 諭 諮 諸 諾 謀 謁 謄 謙 講 謝 謡 謹 識 譜 警 議 譲 護 谷 豆 豊 豚 象 豪 貝 貞 負-貢 貧-販 貫 責 貯 貴 買 貸 費 貿 賀 賃 賄 資 賊 賓 賛 賜 賞 賠 賢 賦 質 購 贈 赤 赦 走 赴 起 超 越 趣 足 距 跡 路 跳 践 踊 踏 躍 身 車 軌 軍 軒 軟 転 軸 軽 較 載 輝 輩 輪 輸 轄 辛 辞 辱 農 辺 込 迅 迎 近 返 迫 迭 述 迷 追 退 送 逃 逆 透 逐 逓 途 通 逝 速 造 連 逮 週 進 逸 遂 遅 遇 遊 運 遍 過 道-違 遠 遣 適 遭 遮 遵 遷 選 遺 避 還 邦 邪 邸 郊 郎 郡 部 郭 郵 郷 都 酌 配 酒 酔 酢 酪 酬 酵 酷 酸 醜 醸 釈 里-量 金 針 釣 鈍 鈴 鉄 鉛 鉢 鉱 銀 銃 銅 銑 銘 銭 鋭 鋳 鋼 錘 錠 錬 錯 録 鍛 鎖 鎮 鏡 鐘 鑑 長 門 閉 開 閑 間 関 閣 閥 閲 闘 防 阻 附 降 限 陛 院-陥 陪 陰 陳 陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 隠 隣 隷 隻 雄-雇 雉 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 韓 音 韻 響 頂 項 順 預-頒 領 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 養 餓 館 首 香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 麗 麦 麻 黄 黒 黙 鼓 鼻 齢]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[兌 拼 楔 錄 鳯]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>「</quotationStart>
		<quotationEnd>」</quotationEnd>
		<alternateQuotationStart>『</alternateQuotationStart>
		<alternateQuotationEnd>』</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">日</day>
							<day type="mon">月</day>
							<day type="tue">火</day>
							<day type="wed">水</day>
							<day type="thu">木</day>
							<day type="fri">金</day>
							<day type="sat">土</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">日曜日</day>
							<day type="mon">月曜日</day>
							<day type="tue">火曜日</day>
							<day type="wed">水曜日</day>
							<day type="thu">木曜日</day>
							<day type="fri">金曜日</day>
							<day type="sat">土曜日</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">日</day>
							<day type="mon">月</day>
							<day type="tue">火</day>
							<day type="wed">水</day>
							<day type="thu">木</day>
							<day type="fri">金</day>
							<day type="sat">土</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">第1四半期</quarter>
							<quarter type="2">第2四半期</quarter>
							<quarter type="3">第3四半期</quarter>
							<quarter type="4">第4四半期</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>午前</am>
				<pm>午後</pm>
				<eras>
					<eraNames>
						<era type="0">紀元前</era>
						<era type="1">西暦</era>
					</eraNames>
					<eraAbbr>
						<era type="0">紀元前</era>
						<era type="1">西暦</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H時mm分ss秒v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ssz</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">d日(EEE)</dateFormatItem>
						<dateFormatItem id="GGGGyMd">GGGGy年M月d日</dateFormatItem>
						<dateFormatItem id="H">H時</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">M/d(E)</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">M月d日(E)</dateFormatItem>
						<dateFormatItem id="MMMMEd">M月d日(E)</dateFormatItem>
						<dateFormatItem id="MMMMd">M月d日</dateFormatItem>
						<dateFormatItem id="MMMd">M月d日</dateFormatItem>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
						<dateFormatItem id="d">d日</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">y</dateFormatItem>
						<dateFormatItem id="yM">y/M</dateFormatItem>
						<dateFormatItem id="yMEd">y/M/d(EEE)</dateFormatItem>
						<dateFormatItem id="yMMM">y年M月</dateFormatItem>
						<dateFormatItem id="yMMMEd">y年M月d日(EEE)</dateFormatItem>
						<dateFormatItem id="yMMMM">y年M月</dateFormatItem>
						<dateFormatItem id="yQ">y/Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyyQQQ</dateFormatItem>
						<dateFormatItem id="yyMMM">y年M月</dateFormatItem>
						<dateFormatItem id="yyQ">yy/Q</dateFormatItem>
						<dateFormatItem id="yyyy">y年</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy/MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}~{1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M月~M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">MM/dd(E)~MM/dd(E)</greatestDifference>
							<greatestDifference id="d">MM/dd(E)~MM/dd(E)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">M月~M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">M月d日(E)~M月d日(E)</greatestDifference>
							<greatestDifference id="d">M月d日(E)~d日(E)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL~LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">M月d日~M月d日</greatestDifference>
							<greatestDifference id="d">M月d日~d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd~MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd~MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d日~d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">H時~H時</greatestDifference>
							<greatestDifference id="h">H時~H時</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">H時mm分~H時mm分</greatestDifference>
							<greatestDifference id="h">H時mm分~H時mm分</greatestDifference>
							<greatestDifference id="m">H時mm分~H時mm分</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">H時mm分~H時mm分v</greatestDifference>
							<greatestDifference id="h">H時mm分~H時mm分v</greatestDifference>
							<greatestDifference id="m">H時mm分~H時mm分v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">H時~H時v</greatestDifference>
							<greatestDifference id="h">H時~H時v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y年~y年</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy/MM~yy/MM</greatestDifference>
							<greatestDifference id="y">yy/MM~yy/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yy/MM/dd(E)~yy/MM/dd(E)</greatestDifference>
							<greatestDifference id="d">yy/MM/dd(E)~yy/MM/dd(E)</greatestDifference>
							<greatestDifference id="y">yy/MM/dd(E)~yy/MM/dd(E)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">y年M月~M月</greatestDifference>
							<greatestDifference id="y">y年M月~y年M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">y年M月d日(E)~M月d日(E)</greatestDifference>
							<greatestDifference id="d">y年M月d日(E)~d日(E)</greatestDifference>
							<greatestDifference id="y">y年M月d日(E)~y年M月d日(E)</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">y年M月~M月</greatestDifference>
							<greatestDifference id="y">y年M月~y年M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">y年M月d日~M月d日</greatestDifference>
							<greatestDifference id="d">y年M月d日~d日</greatestDifference>
							<greatestDifference id="y">y年M月d日~y年M月d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy/MM/dd~yy/MM/dd</greatestDifference>
							<greatestDifference id="d">yy/MM/dd~yy/MM/dd</greatestDifference>
							<greatestDifference id="y">yy/MM/dd~yy/MM/dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>時代</displayName>
					</field>
					<field type="year">
						<displayName>年</displayName>
					</field>
					<field type="month">
						<displayName>月</displayName>
					</field>
					<field type="week">
						<displayName>週</displayName>
					</field>
					<field type="day">
						<displayName>日</displayName>
						<relative type="0">今日</relative>
						<relative type="1">明日</relative>
						<relative type="2">明後日</relative>
						<relative type="-1">昨日</relative>
						<relative type="-2">一昨日</relative>
					</field>
					<field type="weekday">
						<displayName>曜日</displayName>
					</field>
					<field type="dayperiod">
						<displayName>午前/午後</displayName>
					</field>
					<field type="hour">
						<displayName>時</displayName>
					</field>
					<field type="minute">
						<displayName>分</displayName>
					</field>
					<field type="second">
						<displayName>秒</displayName>
					</field>
					<field type="zone">
						<displayName>タイムゾーン</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="japanese">
				<eras>
					<eraAbbr>
						<era type="0">大化</era>
						<era type="1">白雉</era>
						<era type="2">白鳯</era>
						<era type="3">朱鳥</era>
						<era type="4">大宝</era>
						<era type="5">慶雲</era>
						<era type="6">和銅</era>
						<era type="7">霊亀</era>
						<era type="8">養老</era>
						<era type="9">神亀</era>
						<era type="10">天平</era>
						<era type="11">天平感宝</era>
						<era type="12">天平勝宝</era>
						<era type="13">天平宝字</era>
						<era type="14">天平神護</era>
						<era type="15">神護景雲</era>
						<era type="16">宝亀</era>
						<era type="17">天応</era>
						<era type="18">延暦</era>
						<era type="19">大同</era>
						<era type="20">弘仁</era>
						<era type="21">天長</era>
						<era type="22">承和</era>
						<era type="23">嘉祥</era>
						<era type="24">仁寿</era>
						<era type="25">斉衡</era>
						<era type="26">天安</era>
						<era type="27">貞観</era>
						<era type="28">元慶</era>
						<era type="29">仁和</era>
						<era type="30">寛平</era>
						<era type="31">昌泰</era>
						<era type="32">延喜</era>
						<era type="33">延長</era>
						<era type="34">承平</era>
						<era type="35">天慶</era>
						<era type="36">天暦</era>
						<era type="37">天徳</era>
						<era type="38">応和</era>
						<era type="39">康保</era>
						<era type="40">安和</era>
						<era type="41">天禄</era>
						<era type="42">天延</era>
						<era type="43">貞元</era>
						<era type="44">天元</era>
						<era type="45">永観</era>
						<era type="46">寛和</era>
						<era type="47">永延</era>
						<era type="48">永祚</era>
						<era type="49">正暦</era>
						<era type="50">長徳</era>
						<era type="51">長保</era>
						<era type="52">寛弘</era>
						<era type="53">長和</era>
						<era type="54">寛仁</era>
						<era type="55">治安</era>
						<era type="56">万寿</era>
						<era type="57">長元</era>
						<era type="58">長暦</era>
						<era type="59">長久</era>
						<era type="60">寛徳</era>
						<era type="61">永承</era>
						<era type="62">天喜</era>
						<era type="63">康平</era>
						<era type="64">治暦</era>
						<era type="65">延久</era>
						<era type="66">承保</era>
						<era type="67">承暦</era>
						<era type="68">永保</era>
						<era type="69">応徳</era>
						<era type="70">寛治</era>
						<era type="71">嘉保</era>
						<era type="72">永長</era>
						<era type="73">承徳</era>
						<era type="74">康和</era>
						<era type="75">長治</era>
						<era type="76">嘉承</era>
						<era type="77">天仁</era>
						<era type="78">天永</era>
						<era type="79">永久</era>
						<era type="80">元永</era>
						<era type="81">保安</era>
						<era type="82">天治</era>
						<era type="83">大治</era>
						<era type="84">天承</era>
						<era type="85">長承</era>
						<era type="86">保延</era>
						<era type="87">永治</era>
						<era type="88">康治</era>
						<era type="89">天養</era>
						<era type="90">久安</era>
						<era type="91">仁平</era>
						<era type="92">久寿</era>
						<era type="93">保元</era>
						<era type="94">平治</era>
						<era type="95">永暦</era>
						<era type="96">応保</era>
						<era type="97">長寛</era>
						<era type="98">永万</era>
						<era type="99">仁安</era>
						<era type="100">嘉応</era>
						<era type="101">承安</era>
						<era type="102">安元</era>
						<era type="103">治承</era>
						<era type="104">養和</era>
						<era type="105">寿永</era>
						<era type="106">元暦</era>
						<era type="107">文治</era>
						<era type="108">建久</era>
						<era type="109">正治</era>
						<era type="110">建仁</era>
						<era type="111">元久</era>
						<era type="112">建永</era>
						<era type="113">承元</era>
						<era type="114">建暦</era>
						<era type="115">建保</era>
						<era type="116">承久</era>
						<era type="117">貞応</era>
						<era type="118">元仁</era>
						<era type="119">嘉禄</era>
						<era type="120">安貞</era>
						<era type="121">寛喜</era>
						<era type="122">貞永</era>
						<era type="123">天福</era>
						<era type="124">文暦</era>
						<era type="125">嘉禎</era>
						<era type="126">暦仁</era>
						<era type="127">延応</era>
						<era type="128">仁治</era>
						<era type="129">寛元</era>
						<era type="130">宝治</era>
						<era type="131">建長</era>
						<era type="132">康元</era>
						<era type="133">正嘉</era>
						<era type="134">正元</era>
						<era type="135">文応</era>
						<era type="136">弘長</era>
						<era type="137">文永</era>
						<era type="138">建治</era>
						<era type="139">弘安</era>
						<era type="140">正応</era>
						<era type="141">永仁</era>
						<era type="142">正安</era>
						<era type="143">乾元</era>
						<era type="144">嘉元</era>
						<era type="145">徳治</era>
						<era type="146">延慶</era>
						<era type="147">応長</era>
						<era type="148">正和</era>
						<era type="149">文保</era>
						<era type="150">元応</era>
						<era type="151">元亨</era>
						<era type="152">正中</era>
						<era type="153">嘉暦</era>
						<era type="154">元徳</era>
						<era type="155">元弘</era>
						<era type="156">建武</era>
						<era type="157">延元</era>
						<era type="158">興国</era>
						<era type="159">正平</era>
						<era type="160">建徳</era>
						<era type="161">文中</era>
						<era type="162">天授</era>
						<era type="163">康暦</era>
						<era type="164">弘和</era>
						<era type="165">元中</era>
						<era type="166">至徳</era>
						<era type="167">嘉慶</era>
						<era type="168">康応</era>
						<era type="169">明徳</era>
						<era type="170">応永</era>
						<era type="171">正長</era>
						<era type="172">永享</era>
						<era type="173">嘉吉</era>
						<era type="174">文安</era>
						<era type="175">宝徳</era>
						<era type="176">享徳</era>
						<era type="177">康正</era>
						<era type="178">長禄</era>
						<era type="179">寛正</era>
						<era type="180">文正</era>
						<era type="181">応仁</era>
						<era type="182">文明</era>
						<era type="183">長享</era>
						<era type="184">延徳</era>
						<era type="185">明応</era>
						<era type="186">文亀</era>
						<era type="187">永正</era>
						<era type="188">大永</era>
						<era type="189">享禄</era>
						<era type="190">天文</era>
						<era type="191">弘治</era>
						<era type="192">永禄</era>
						<era type="193">元亀</era>
						<era type="194">天正</era>
						<era type="195">文禄</era>
						<era type="196">慶長</era>
						<era type="197">元和</era>
						<era type="198">寛永</era>
						<era type="199">正保</era>
						<era type="200">慶安</era>
						<era type="201">承応</era>
						<era type="202">明暦</era>
						<era type="203">万治</era>
						<era type="204">寛文</era>
						<era type="205">延宝</era>
						<era type="206">天和</era>
						<era type="207">貞享</era>
						<era type="208">元禄</era>
						<era type="209">宝永</era>
						<era type="210">正徳</era>
						<era type="211">享保</era>
						<era type="212">元文</era>
						<era type="213">寛保</era>
						<era type="214">延享</era>
						<era type="215">寛延</era>
						<era type="216">宝暦</era>
						<era type="217">明和</era>
						<era type="218">安永</era>
						<era type="219">天明</era>
						<era type="220">寛政</era>
						<era type="221">享和</era>
						<era type="222">文化</era>
						<era type="223">文政</era>
						<era type="224">天保</era>
						<era type="225">弘化</era>
						<era type="226">嘉永</era>
						<era type="227">安政</era>
						<era type="228">万延</era>
						<era type="229">文久</era>
						<era type="230">元治</era>
						<era type="231">慶応</era>
						<era type="232">明治</era>
						<era type="233">大正</era>
						<era type="234">昭和</era>
						<era type="235">平成</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>Gy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>Gy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>Gyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>Gyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ssz</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Ed">d日(EEE)</dateFormatItem>
						<dateFormatItem id="MMMEd">M月d日(EEE)</dateFormatItem>
						<dateFormatItem id="y">Gy年</dateFormatItem>
						<dateFormatItem id="yyMM">Gyy/MM</dateFormatItem>
						<dateFormatItem id="yyMMM">Gy年M月</dateFormatItem>
						<dateFormatItem id="yyQ">Gyy/Q</dateFormatItem>
						<dateFormatItem id="yyyy">Gy年</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="roc">
				<eras>
					<eraAbbr>
						<era type="0">民国前</era>
						<era type="1">民国</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>Gy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>Gy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>Gyy/MM/dd(EE)</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>Gyy/MM/dd(E)</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}時間</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>不明</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>アンドラ公国</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>ドバイ</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>カブール</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>アンチグア</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>アンギラ</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>チラナ</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>エレバン</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>キュラソー</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>ルアンダ</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>ロデラ</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>パーマー</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>南極点</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>昭和基地</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>モーソン</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>デービス</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>ボストーク</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>ケーシー</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>デュモン デュルビル</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>マクムード</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>リオガイェゴス</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>メンドーサ</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>サンファン</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>ウスアイア</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ラリオハ</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>サンルイス</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>カタマルカ</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>フフイ</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>トゥクマン</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>コルドバ</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ブエノスアイレス</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>パゴパゴ</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>ウィーン</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>パース</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>ユークラ</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>ダーウィン</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>アデレード</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ブロークンヒル</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>カリー</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>メルボルン</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>ホバート</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>リンデマン</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>シドニー</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ブリスベン</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>ロードハウ</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>アルバ</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>バクー</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>バルバドス</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>ダッカ</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>ブリュッセル</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>ワガドゥグー</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>ソフィア</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>バーレーン国</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>ブジュンブラ</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>ポルトノボ</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>バミューダ</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>ブルネイ</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>ラパス</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>エイルネペ</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>リオブランコ</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>ポルトベーリョ</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>ボアビスタ</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>マナウス</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>クイアバ</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>カンポグランデ</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>ベレン</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>アラグァイナ</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>サンパウロ</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>バイーア</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>フォルタレザ</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>マセイオ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>レシフェ</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>ノロニャ</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>ナッサウ</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>ティンプー</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>ガボローネ</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>ミンスク</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>ベリーズ</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>ドーソン</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>ホワイトホース</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>イヌヴィク</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>バンクーバー</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>ドーソンクリーク</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>イエローナイフ</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>エドモントン</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>スウィフトカレント</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>ケンブリッジベイ</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>レジャイナ</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>ウィニペグ</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>レソリュート</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>レイニーリバー</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>ランキン湾</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>コーラルハーバー</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>サンダーベイ</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>ニピゴン</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>トロント</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>モントリオール</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>イカルイット</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>パンナータング</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>モンクトン</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>ハリファクス</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>グースベイ</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>グレースベイ</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ブラン・サブロン</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>セントジョンズ</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>ココス</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>キンシャサ</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>ルブンバシ</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>バンギ</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>ブラザビル</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>チューリッヒ</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>アビジャン</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>ラロトンガ</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>イースター島</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>アメリカ/サンチアゴ</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>ドゥアラ</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>カシガル</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>ウルムチ</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>重慶</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>上海</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>ハルビン</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>ボゴタ</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>コスタリカ共和国</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>ハバナ</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>カボベルデ共和国</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>クリスマス</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>ニコシア</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>ベルリン</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>ジブチ共和国</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>コペンハーゲン</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>ドミニカ国</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>サントドミンゴ</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>アルジェ</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>ガラパゴス</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>アメリカ/グアヤキル</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>タリン</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>カイロ</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>アイウン</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>アスマラ</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>カナリア諸島</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>セウタ</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>ヨーロッパ/マドリード</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>アジスアベバ</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>ヘルシンキ</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>フィジー共和国</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>スタンリー</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>トラック</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>ポナペ</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>コシャエ</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>フェロー</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>パリ</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>リーブルビル</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>ヨーロッパ/ロンドン</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>グレナダ</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>トビリシ</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>カイエンヌ</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>アクラ</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>ジブラルタル</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>チューレ</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>アメリカ/ゴッドホープ</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>スコレスビスン</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>デンマークシャウン</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>バンジュル</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>コナクリ</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>グアダループ</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>マラボ</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>アテネ</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>南ジョージア島</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>グァテマラ共和国</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>グアム</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>ビサウ</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>ガイアナ</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>香港</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>ポルトープランス</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>ブダペスト</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>ジャカルタ</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>ポンティアナク</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>マカッサル</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ジャヤプラ</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>ダブリン</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>エルサレム</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>チャゴス</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>バグダッド</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>テヘラン</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>レイキャビーク</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>ローマ</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>ジャマイカ</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>アンマン</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>東京</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>ナイロビ</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>ビシュケク</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>プノンペン</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>エンダベリー</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>キリティマティ</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>タラワ</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>コモロ</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>セントキッツネイビス</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>平壌</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>ソウル</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>クウェート国</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>ケイマン</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>アクタウ</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>オラル</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>アクトベ</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>キジルオルダ</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>アルマトイ</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>ビエンチャン</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>ベイルート</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>セントルシア</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>ファドゥーツ</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>コロンボ</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>モンロビア</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>マセル</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>ヴィルニアス</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>ルクセンブルグ大公国</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>リガ</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>トリポリ</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>カサブランカ</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>モナコ公国</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>キシナウ</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>アンタナナリボ</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>クワジェリン</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>マジュロ</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>アフリカ/バマコ</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>ラングーン</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>ホブド</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>ウランバートル</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>チョイバルサン</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>マカオ</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>サイパン</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>マルチニーク</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>ヌアクショット</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>モントセラト島</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>マルタ共和国</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>モーリシャス共和国</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>モルディブ共和国</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>ブランタイア</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>ティフアナ</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>エルモシヨ</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>マサトラン</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>チワワ</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>モンテレイ</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>メキシコシティー</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>メリダ</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>カンクン</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>アジア/クアラルンプール</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>クチン</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>マプト</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>ビントフック</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>ヌメア</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>ニアメー</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>ノーフォーク</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>ラゴス</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>マナグア</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>アムステルダム</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>オスロ</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>カトマンズ</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>ナウル共和国</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>ニウエ</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>チャタム</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>太平洋/オークランド</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>マスカット</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>パナマ共和国</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>リマ</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>太平洋/タヒチ</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>マルケサス</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>ガンビア</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>ポートモレスビー</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>マニラ</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>カラチ</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>ワルシャワ</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>ミクロン</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>ピトケアン島</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>プエルトリコ</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>ガザ</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>アゾレス諸島</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>マデイラ</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>ヨーロッパ/リスボン</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>パラオ共和国</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>アスンシオン</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>カタール</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>レユニオン</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>ブカレスト</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>カリーニングラード</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>モスクワ</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>ボルゴグラード</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>サマラ</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>エカテリンブルグ</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>オムスク</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>ノボシビルスク</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>クラスノヤルスク</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>イルクーツク</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>ヤクーツク</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ウラジオストク</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>サハリン</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>マガダン</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>カムチャッカ</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>アナジル</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>キガリ</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>リヤド</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>ガダルカナル</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>マエ</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>ハルツーム</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>ストックホルム</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>シンガポール</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>セントヘレナ</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>北極/ロングイヤービーエン</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>フリータウン</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>ダカール</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>モガディシュ</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>パラマリボ</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>サントメ</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>サルバドル</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>ダマスカス</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>ムババネ</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>グランドターク</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>ンジャメナ</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>ケルゲレーヌ</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>ロメ</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>バンコク</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>ドゥシャンベ</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>ファカオフォ</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>ディリ</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>アシガバード</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>チュニジア</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>トンガタプ</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>イスタンブール</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>ポートオブスペイン</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>フナフティ</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>台北</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>ダルエスサラーム</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>ウジゴロド</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>キエフ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>シンフェローポリ</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>ザポロージェ</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>カンパラ</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>ミッドウェー</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>ジョンストン</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>ウェーク</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>アダック</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>ノーメ</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>ホノルル</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>アンカレッジ</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>ヤクタット</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>ジュノー</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>ロサンゼルス</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>ボイシ</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>フェニックス</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>シップロック</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>デンバー</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>ノースダコタ州ニューセーラム</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>ノースダコタ州センター</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>シカゴ</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>メノミニー</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>インディアナ州ビンセンス</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>インディアナ州ピーターズバーグ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>インディアナ州テルシティ</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>インディアナ州ノックス</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>インディアナ州ウィナマック</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>インディアナ州マレンゴ</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>インディアナポリス</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>ルイスビル</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>インディアナ州ビベー</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>ケンタッキー州モンティチェロ</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>デトロイト</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>ニューヨーク</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>モンテビデオ</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>サマルカンド</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>アジア/タシケント</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>セントヴィンセント</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>カラカス</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>トルトーラ</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>セントトマス</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>サイゴン</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>エファテ</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>ワリー</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>アピーア</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>アデン</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>マイヨット島</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>ヨハネスブルグ</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>ルサカ</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>ハラーレ</exemplarCity>
			</zone>
			<metazone type="Africa_Central">
				<long>
					<generic>中央アフリカ時間</generic>
					<standard>中央アフリカ時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<generic>東アフリカ時間</generic>
					<standard>東アフリカ時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>南アフリカ時間</generic>
					<standard>南アフリカ標準時</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>西アフリカ時間</generic>
					<standard>西アフリカ時間</standard>
					<daylight>西アフリカ夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>アラスカ時間</generic>
					<standard>アラスカ標準時</standard>
					<daylight>アラスカ夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>アマゾン時間</standard>
					<daylight>アマゾン夏時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>アメリカ中部時間</generic>
					<standard>アメリカ中部標準時</standard>
					<daylight>アメリカ中部夏時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>アメリカ東部時間</generic>
					<standard>アメリカ東部標準時</standard>
					<daylight>アメリカ東部夏時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>アメリカ山地時間</generic>
					<standard>アメリカ山地標準時</standard>
					<daylight>アメリカ山地夏時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>アメリカ太平洋時間</generic>
					<standard>アメリカ太平洋標準™‚</standard>
					<daylight>アメリカ太平洋夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Argentina">
				<long>
					<generic>アルゼンチン時間</generic>
					<daylight>アルゼンチン夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>大西洋時間</generic>
					<standard>大西洋標準時</standard>
					<daylight>大西洋夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>ブラジリア時間</standard>
					<daylight>ブラジリア夏時間</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>中国標準時</standard>
					<daylight>中国夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>中欧標準時</standard>
					<daylight>中欧夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>東欧標準時</standard>
					<daylight>東欧夏時間</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>グリニッジ標準時</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>イスラエル標準時</standard>
					<daylight>イスラエル夏時間</daylight>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>日本標準時</standard>
					<daylight>日本夏時間</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>ニューファンドランド島標準時</standard>
					<daylight>ニューファンドランド島夏時間</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>アンドラ ペセタ</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE ディルハム</displayName>
			</currency>
			<currency type="AFA">
				<displayName>アフガニー (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>アフガニー</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>アルバニア レク</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>アルメニア ドラム</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>オランダ領アンティル ギルダー</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>クワンザ</displayName>
			</currency>
			<currency type="AOK">
				<displayName>クワンザ (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>アンゴラ 新クワンザ (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>アンゴラ 旧クワンザ (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>アルゼンチン アゥストラール</displayName>
			</currency>
			<currency type="ARP">
				<displayName>アルゼンチン ペソ (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>アルゼンチン ペソ</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>オーストリア シリング</displayName>
			</currency>
			<currency type="AUD">
				<displayName>オーストラリア ドル</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>アルバ ギルダー</displayName>
			</currency>
			<currency type="AZM">
				<displayName>アゼルバイジャン マナト (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>アゼルバイジャン マナト</displayName>
			</currency>
			<currency type="BAD">
				<displayName>ボスニア ディナール</displayName>
			</currency>
			<currency type="BAM">
				<displayName>ボスニア マルク (BAM)</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>バルバドス ドル</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>バングラデシュ タカ</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>ベルギー フラン (BEC)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>ベルギー フラン</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>ベルギー フラン (BEL)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>ブルガリア レフ</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>ブルガリア 新レフ</displayName>
			</currency>
			<currency type="BHD">
				<displayName>バーレーン ディナール</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>ブルンジ フラン</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>バミューダ ドル</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>ブルネイ ドル</displayName>
			</currency>
			<currency type="BOB">
				<displayName>ボリビアーノ</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>ボリビア ペソ</displayName>
			</currency>
			<currency type="BOV">
				<displayName>ボリビア Mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>ブラジル 新クルゼイロ (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>ブラジル クルゼイロ</displayName>
			</currency>
			<currency type="BRE">
				<displayName>ブラジル クルゼイロ (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ブラジル レアル</displayName>
			</currency>
			<currency type="BRN">
				<displayName>ブラジル 新クルゼイロ</displayName>
			</currency>
			<currency type="BRR">
				<displayName>ブラジル クルゼイロ レアル</displayName>
			</currency>
			<currency type="BSD">
				<displayName>バハマ ドル</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ブータン ニュルタム</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>ビルマ チャット</displayName>
			</currency>
			<currency type="BWP">
				<displayName>ボツワナ プラ</displayName>
			</currency>
			<currency type="BYB">
				<displayName>ベラルーシ ルーブル (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>ベラルーシ ルーブル</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>ベリーズ ドル</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>カナダ ドル</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>コンゴ フラン</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR ユーロ</displayName>
			</currency>
			<currency type="CHF">
				<displayName>スイス フラン</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR フラン</displayName>
			</currency>
			<currency type="CLF">
				<displayName>チリ ウニダ デ フォメント</displayName>
			</currency>
			<currency type="CLP">
				<displayName>チリ ペソ</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>中国人民元</displayName>
				<symbol>元</symbol>
			</currency>
			<currency type="COP">
				<displayName>コロンビア ペソ</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>レアル (UVR)</displayName>
			</currency>
			<currency type="CRC">
				<displayName>コスタリカ コロン</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>セルビアン ディナール</displayName>
			</currency>
			<currency type="CSK">
				<displayName>チェコスロバキア コルナ</displayName>
			</currency>
			<currency type="CUP">
				<displayName>キューバ ペソ</displayName>
			</currency>
			<currency type="CVE">
				<displayName>カーボベルデ エスクード</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>キプロス ポンド</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>チェコ コルナ</displayName>
			</currency>
			<currency type="DDM">
				<displayName>東ドイツ マルク</displayName>
			</currency>
			<currency type="DEM">
				<displayName>ドイツ マルク</displayName>
			</currency>
			<currency type="DJF">
				<displayName>ジブチ フラン</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>デンマーク クローネ</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>ドミニカ ペソ</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>アルジェリア ディナール</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>エクアドル スクレ</displayName>
				<symbol>CS</symbol>
			</currency>
			<currency type="ECV">
				<displayName>エクアドル UVC</displayName>
			</currency>
			<currency type="EEK">
				<displayName>エストニア クルーン</displayName>
			</currency>
			<currency type="EGP">
				<displayName>エジプト ポンド</displayName>
			</currency>
			<currency type="EQE">
				<displayName>エクウェレ</displayName>
			</currency>
			<currency type="ERN">
				<displayName>エリトリア ナクファ</displayName>
			</currency>
			<currency type="ESA">
				<displayName>スペインペセタ</displayName>
			</currency>
			<currency type="ESB">
				<displayName>スペイン 兌換ペセタ</displayName>
			</currency>
			<currency type="ESP">
				<displayName>スペイン ペセタ</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>エチオピア ブル</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>ユーロ</displayName>
			</currency>
			<currency type="FIM">
				<displayName>フィンランド マルカ</displayName>
			</currency>
			<currency type="FJD">
				<displayName>フィジー諸島 ドル</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>フォークランド(マルビナス)諸島 ポンド</displayName>
			</currency>
			<currency type="FRF">
				<displayName>フランス フラン</displayName>
			</currency>
			<currency type="GBP">
				<displayName>英国ポンド</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>グルジア クーポン ラリ</displayName>
			</currency>
			<currency type="GEL">
				<displayName>グルジア ラリ</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>ガーナ セディ (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>ガーナ セディ</displayName>
			</currency>
			<currency type="GIP">
				<displayName>ジブラルタル ポンド</displayName>
			</currency>
			<currency type="GMD">
				<displayName>ガンビア ダラシ</displayName>
			</currency>
			<currency type="GNF">
				<displayName>ギニア フラン</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>ギニア シリー</displayName>
			</currency>
			<currency type="GQE">
				<displayName>赤道ギニア ギニー</displayName>
			</currency>
			<currency type="GRD">
				<displayName>ギリシャ ドラクマ</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>グアテマラ ケツァル</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>ポルトガル領ギニア エスクード</displayName>
			</currency>
			<currency type="GWP">
				<displayName>ギニアビサウ ペソ</displayName>
			</currency>
			<currency type="GYD">
				<displayName>ガイアナ ドル</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>香港ドル</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>ホンジュラス レンピラ</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>クロアチア ディナール</displayName>
			</currency>
			<currency type="HRK">
				<displayName>クロアチア クーナ</displayName>
			</currency>
			<currency type="HTG">
				<displayName>ハイチ グールド</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ハンガリー フォリント</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>インドネシア ルピア</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>アイリッシュ ポンド</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>イスラエル ポンド</displayName>
			</currency>
			<currency type="ILS">
				<displayName>イスラエル新シェケル</displayName>
			</currency>
			<currency type="INR">
				<displayName>インド ルピー</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>イラク ディナール</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>イラン リアル</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>アイスランド クローナ</displayName>
			</currency>
			<currency type="ITL">
				<displayName>イタリア リラ</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>ジャマイカ ドル</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>ヨルダン ディナール</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>日本円</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>ケニア シリング</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>キルギスタン ソム</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>カンボジア リエル</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>コモロ フラン</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>北朝鮮 ウォン</displayName>
			</currency>
			<currency type="KRW">
				<displayName>韓国 ウォン</displayName>
				<symbol>₩</symbol>
			</currency>
			<currency type="KWD">
				<displayName>クウェート ディナール</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>ケイマン諸島 ドル</displayName>
			</currency>
			<currency type="KZT">
				<displayName>カザフスタン テンゲ</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>ラオス キープ</displayName>
			</currency>
			<currency type="LBP">
				<displayName>レバノン ポンド</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>スリランカ ルピー</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>リベリア ドル</displayName>
			</currency>
			<currency type="LSL">
				<displayName>レソト ロティ</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>マロティ</displayName>
			</currency>
			<currency type="LTL">
				<displayName>リトアニア リタス</displayName>
			</currency>
			<currency type="LTT">
				<displayName>リトアニア タロナ</displayName>
			</currency>
			<currency type="LUC">
				<displayName>ルクセンブルク 兌換フラン</displayName>
			</currency>
			<currency type="LUF">
				<displayName>ルクセンブルグ フラン</displayName>
			</currency>
			<currency type="LUL">
				<displayName>ルクセンブルク 金融フラン</displayName>
			</currency>
			<currency type="LVL">
				<displayName>ラトビア ラッツ</displayName>
			</currency>
			<currency type="LVR">
				<displayName>ラトビア ルーブル</displayName>
			</currency>
			<currency type="LYD">
				<displayName>リビア ディナール</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>モロッコ ディルハム</displayName>
			</currency>
			<currency type="MAF">
				<displayName>モロッコ フラン</displayName>
			</currency>
			<currency type="MDL">
				<displayName>モルドバ レイ</displayName>
			</currency>
			<currency type="MGA">
				<displayName>マダガスカル アリアリ</displayName>
			</currency>
			<currency type="MGF">
				<displayName>マダガスカル フラン</displayName>
			</currency>
			<currency type="MKD">
				<displayName>マケドニア デナル</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>マリ フラン</displayName>
			</currency>
			<currency type="MMK">
				<displayName>ミャンマー チャット</displayName>
			</currency>
			<currency type="MNT">
				<displayName>モンゴル トグログ</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>マカオ パタカ</displayName>
			</currency>
			<currency type="MRO">
				<displayName>モーリタニア ウギア</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>マルタ リラ</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>マルタ ポンド</displayName>
			</currency>
			<currency type="MUR">
				<displayName>モーリシャス ルピー</displayName>
			</currency>
			<currency type="MVR">
				<displayName>モルディブ諸島 ルフィア</displayName>
			</currency>
			<currency type="MWK">
				<displayName>マラウィ クワチャ</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>メキシコ ペソ</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>メキシコ ペソ (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>メキシコ UDI</displayName>
			</currency>
			<currency type="MYR">
				<displayName>マレーシア リンギット</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>モザンピーク エスクード</displayName>
			</currency>
			<currency type="MZM">
				<displayName>モザンピーク メティカル</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>モザンビーク メティカル</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>ナミビア ドル</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>ナイジェリア ナイラ</displayName>
			</currency>
			<currency type="NIC">
				<displayName>ニカラグア コルドバ</displayName>
			</currency>
			<currency type="NIO">
				<displayName>ニカラグア コルドバ オロ</displayName>
			</currency>
			<currency type="NLG">
				<displayName>オランダ ギルダー</displayName>
			</currency>
			<currency type="NOK">
				<displayName>ノルウェー クローネ</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>ネパール ルピー</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>ニュージーランド ドル</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>オマーン リアル</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>パナマ バルボア</displayName>
			</currency>
			<currency type="PEI">
				<displayName>ペルー インティ</displayName>
			</currency>
			<currency type="PEN">
				<displayName>ペルー 新ソル</displayName>
			</currency>
			<currency type="PES">
				<displayName>ペルー ソル</displayName>
			</currency>
			<currency type="PGK">
				<displayName>パプアニューギニア キナ</displayName>
			</currency>
			<currency type="PHP">
				<displayName>フィリピン ペソ</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>パキスタン ルピー</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>ポーランド ズウォティ</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>ポーランド ズウォティ (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>ポルトガル エスクード</displayName>
			</currency>
			<currency type="PYG">
				<displayName>パラグアイ グアラニ</displayName>
			</currency>
			<currency type="QAR">
				<displayName>カタール リアル</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>ローデシア ドル</displayName>
			</currency>
			<currency type="ROL">
				<displayName>ルーマニア 旧レイ</displayName>
				<symbol choice="true">0#Old lei|1#Old leu|1</symbol>
			</currency>
			<currency type="RON">
				<displayName>ルーマニア レイ</displayName>
				<symbol choice="true">0#lei|1#leu|1</symbol>
			</currency>
			<currency type="RSD">
				<displayName>ディナール (セルビア)</displayName>
			</currency>
			<currency type="RUB">
				<displayName>ロシア ルーブル</displayName>
			</currency>
			<currency type="RUR">
				<displayName>ロシア ルーブル (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>ルワンダ フラン</displayName>
			</currency>
			<currency type="SAR">
				<displayName>サウジ リヤル</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>ソロモン諸島 ドル</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>セイシェル ルピー</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>スーダン ディナール</displayName>
			</currency>
			<currency type="SDG">
				<displayName>スーダン ポンド</displayName>
			</currency>
			<currency type="SDP">
				<displayName>旧スーダン ポンド</displayName>
			</currency>
			<currency type="SEK">
				<displayName>スウェーデン クローナ</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>シンガポール ドル</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>セントヘレナ島 ポンド</displayName>
			</currency>
			<currency type="SIT">
				<displayName>スロベニア トラール</displayName>
			</currency>
			<currency type="SKK">
				<displayName>スロバキア コルナ</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>シエラレオネ レオン</displayName>
			</currency>
			<currency type="SOS">
				<displayName>ソマリア シリング</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>スリナム ドル</displayName>
			</currency>
			<currency type="SRG">
				<displayName>スリナム ギルダー</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>サントメ・プリンシペ ドブラ</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>ソ連 ルーブル</displayName>
			</currency>
			<currency type="SVC">
				<displayName>エルサルバドル コロン</displayName>
			</currency>
			<currency type="SYP">
				<displayName>シリア ポンド</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>スワジランド リランゲニ</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>タイ バーツ</displayName>
			</currency>
			<currency type="TJR">
				<displayName>タジキスタン ルーブル</displayName>
			</currency>
			<currency type="TJS">
				<displayName>タジキスタン ソモニ</displayName>
			</currency>
			<currency type="TMM">
				<displayName>トルクメニスタン マナト</displayName>
			</currency>
			<currency type="TND">
				<displayName>チュニジア ディナール</displayName>
			</currency>
			<currency type="TOP">
				<displayName>トンガ パ・アンガ</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>ティモール エスクード</displayName>
			</currency>
			<currency type="TRL">
				<displayName>トルコ リラ</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>新トルコリラ</displayName>
			</currency>
			<currency type="TTD">
				<displayName>トリニダードトバゴ ドル</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>新台湾ドル</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>タンザニア シリング</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>ウクライナ グリブナ</displayName>
			</currency>
			<currency type="UAK">
				<displayName>ウクライナ カルボバネツ</displayName>
			</currency>
			<currency type="UGS">
				<displayName>ウガンダ シリング (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>ウガンダ シリング</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>米ドル</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>米ドル (翌日)</displayName>
			</currency>
			<currency type="USS">
				<displayName>米ドル (当日)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>ウルグアイ ペソ (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>ウルグアイ ペソ</displayName>
			</currency>
			<currency type="UZS">
				<displayName>ウズベキスタン スム</displayName>
			</currency>
			<currency type="VEB">
				<displayName>ベネズエラ ボリバル</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>ベネズエラ ボリバルフエルテ</displayName>
			</currency>
			<currency type="VND">
				<displayName>ベトナム ドン</displayName>
				<symbol>đ</symbol>
			</currency>
			<currency type="VUV">
				<displayName>バヌアツ バツ</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>西サモア タラ</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA フラン BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>銀</displayName>
			</currency>
			<currency type="XAU">
				<displayName>金</displayName>
			</currency>
			<currency type="XBA">
				<displayName>ヨーロッパ混合単位 (EURCO)</displayName>
			</currency>
			<currency type="XBB">
				<displayName>ヨーロッパ通貨単位 (EMU-6)</displayName>
			</currency>
			<currency type="XBC">
				<displayName>ヨーロッパ勘定単位 (EUA-9)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>ヨーロッパ勘定単位 (EUA-17)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>東カリブ ドル</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>特別引き出し権</displayName>
			</currency>
			<currency type="XEU">
				<displayName>ヨーロッパ通貨単位</displayName>
			</currency>
			<currency type="XFO">
				<displayName>フランス金フラン</displayName>
			</currency>
			<currency type="XFU">
				<displayName>フランス UIC フラン</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA フラン BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>パラジウム</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP フラン</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>プラチナ</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET基金</displayName>
			</currency>
			<currency type="XTS">
				<displayName>テスト用通貨コード</displayName>
			</currency>
			<currency type="XXX">
				<displayName>不明または無効な通貨</displayName>
			</currency>
			<currency type="YDD">
				<displayName>イエメン ディナール</displayName>
			</currency>
			<currency type="YER">
				<displayName>イエメン リアル</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>ユーゴスラビア ディナール</displayName>
			</currency>
			<currency type="YUM">
				<displayName>ユーゴスラビア スーパー ディナール</displayName>
			</currency>
			<currency type="YUN">
				<displayName>ユーゴスラビア 新ディナール (YUN)</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>南アフリカ ランド (ZAL)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>南アフリカ ランド</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>ザンビア クワチャ</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>ザイール 新ザイール</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>ザイール ザイール</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>ジンバブエ ドル</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0}日</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0}時間</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0}分</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0}ヶ月</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0}秒</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0}週間</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0}年</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>はい:ハイ</yesstr>
			<nostr>いいえ:イイエ</nostr>
		</messages>
	</posix>
</ldml>
PKpG[a���Locale/Data/da.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.103 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="da"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhasisk</language>
			<language type="ace">achinesisk</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avestan</language>
			<language type="af">afrikaans</language>
			<language type="afa">afro-asiatisk sprog</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadisk</language>
			<language type="ale">aleutisk</language>
			<language type="alg">algonkisk sprog</language>
			<language type="alt">sydaltaisk</language>
			<language type="am">amharisk</language>
			<language type="an">aragonesisk</language>
			<language type="ang">oldengelsk</language>
			<language type="anp">angika</language>
			<language type="apa">apachesprog</language>
			<language type="ar">arabisk</language>
			<language type="arc">aramæisk</language>
			<language type="arn">araukansk</language>
			<language type="arp">arapaho</language>
			<language type="art">kunstsprog</language>
			<language type="arw">arawak</language>
			<language type="as">assamesisk</language>
			<language type="ast">asturisk</language>
			<language type="ath">athapaskisk sprog</language>
			<language type="aus">australsk sprog</language>
			<language type="av">avarisk</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">aserbajdsjansk</language>
			<language type="ba">bashkir</language>
			<language type="bad">banda</language>
			<language type="bai">bamilekisk sprog</language>
			<language type="bal">baluchi</language>
			<language type="ban">balinesisk</language>
			<language type="bas">basa</language>
			<language type="bat">baltisk sprog</language>
			<language type="be">hviderussisk</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berberisk</language>
			<language type="bg">bulgarsk</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalsk</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetansk</language>
			<language type="br">bretonsk</language>
			<language type="bra">braj</language>
			<language type="bs">bosnisk</language>
			<language type="btk">batak</language>
			<language type="bua">buriatisk</language>
			<language type="bug">buginesisk</language>
			<language type="byn">blin</language>
			<language type="ca">katalansk</language>
			<language type="cad">caddo</language>
			<language type="cai">mellemamerikansk indiansk sprog</language>
			<language type="car">caribisk</language>
			<language type="cau">kaukasisk sprog</language>
			<language type="cch">atsam</language>
			<language type="ce">tjetjensk</language>
			<language type="ceb">cebuano</language>
			<language type="cel">keltisk sprog</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatai</language>
			<language type="chk">chuukese</language>
			<language type="chm">mari</language>
			<language type="chn">chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">chamiske sprog</language>
			<language type="co">korsikansk</language>
			<language type="cop">koptisk</language>
			<language type="cpe">engelsk baseret kreolsk eller pidgin</language>
			<language type="cpf">fransk baseret kreolsk eller pidginsprog</language>
			<language type="cpp">portugisisk baseret kreolsk eller pidginsprog</language>
			<language type="cr">cree</language>
			<language type="crh">krim tyrkisk</language>
			<language type="crp">kreolsk eller pidginsprog</language>
			<language type="cs">tjekkisk</language>
			<language type="csb">kasjubisk</language>
			<language type="cu">kirkeslavisk</language>
			<language type="cus">kusjitisk sprog</language>
			<language type="cv">chuvash</language>
			<language type="cy">walisisk</language>
			<language type="da">dansk</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">tysk</language>
			<language type="de_AT">østrigsk tysk</language>
			<language type="de_CH">schweizerhøjtysk</language>
			<language type="del">delaware</language>
			<language type="den">athapaskisk</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">dravidisk sprog</language>
			<language type="dsb">nedersorbisk</language>
			<language type="dua">duala</language>
			<language type="dum">middelhollandsk</language>
			<language type="dv">divehi</language>
			<language type="dyu">dyula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">oldegyptisk</language>
			<language type="eka">ekajuk</language>
			<language type="el">græsk</language>
			<language type="elx">elamitisk</language>
			<language type="en">engelsk</language>
			<language type="en_AU">australsk engelsk</language>
			<language type="en_CA">canadisk engelsk</language>
			<language type="en_GB">britisk engelsk</language>
			<language type="en_US">amerikansk engelsk</language>
			<language type="enm">middelengelsk</language>
			<language type="eo">esperanto</language>
			<language type="es">spansk</language>
			<language type="es_419">latinamerikansk spansk</language>
			<language type="es_ES">castiliansk spansk</language>
			<language type="et">estisk</language>
			<language type="eu">baskisk</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persisk</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulah</language>
			<language type="fi">finsk</language>
			<language type="fil">filippinsk</language>
			<language type="fiu">finsk-ugrisk sprog</language>
			<language type="fj">fijiansk</language>
			<language type="fo">færøsk</language>
			<language type="fon">fon</language>
			<language type="fr">fransk</language>
			<language type="fr_CA">canadisk fransk</language>
			<language type="fr_CH">schweizisk fransk</language>
			<language type="frm">middelfransk</language>
			<language type="fro">oldfransk</language>
			<language type="frr">nordfrisisk</language>
			<language type="frs">østfrisisk</language>
			<language type="fur">friulian</language>
			<language type="fy">frisisk</language>
			<language type="ga">irsk</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">skotsk gælisk</language>
			<language type="gem">germansk sprog</language>
			<language type="gez">geez</language>
			<language type="gil">gilbertesisk</language>
			<language type="gl">galicisk</language>
			<language type="gmh">middelhøjtysk</language>
			<language type="gn">guarani</language>
			<language type="goh">oldhøjtysk</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotisk</language>
			<language type="grb">grebo</language>
			<language type="grc">oldgræsk</language>
			<language type="gsw">schweizertysk</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiiansk</language>
			<language type="he">hebraisk</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hittitisk</language>
			<language type="hmn">hmong</language>
			<language type="ho">Hiri Motu</language>
			<language type="hr">kroatisk</language>
			<language type="hsb">øvresorbisk</language>
			<language type="ht">haitisk</language>
			<language type="hu">ungarsk</language>
			<language type="hup">hupa</language>
			<language type="hy">armensk</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesisk</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">sichuan yi</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiaq</language>
			<language type="ilo">iloko</language>
			<language type="inc">indisk sprog</language>
			<language type="ine">indo-europæisk sprog</language>
			<language type="inh">ingush</language>
			<language type="io">ido</language>
			<language type="ira">iransk sprog</language>
			<language type="iro">irokesisk sprog</language>
			<language type="is">islandsk</language>
			<language type="it">italiensk</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japansk</language>
			<language type="jbo">lojban</language>
			<language type="jpr">jødisk-persisk</language>
			<language type="jrb">jødisk-arabisk</language>
			<language type="jv">javanesisk</language>
			<language type="ka">georgisk</language>
			<language type="kaa">karakalpakisk</language>
			<language type="kab">kabyle</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardian</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisansprog</language>
			<language type="kho">khotanesisk</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kasakhisk</language>
			<language type="kl">grønlandsk</language>
			<language type="km">khmer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannaresisk</language>
			<language type="ko">koreansk</language>
			<language type="kok">konkani</language>
			<language type="kos">kosraean</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karatjai-balkar</language>
			<language type="krl">karelsk</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kashmiri</language>
			<language type="ku">kurdisk</language>
			<language type="kum">kymyk</language>
			<language type="kut">kutenaj</language>
			<language type="kv">komi</language>
			<language type="kw">cornisk</language>
			<language type="ky">kirgisisk</language>
			<language type="la">latin</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxembourgsk</language>
			<language type="lez">lezghian</language>
			<language type="lg">ganda</language>
			<language type="li">limburgsk</language>
			<language type="ln">lingala</language>
			<language type="lo">laotisk</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litauisk</language>
			<language type="lu">luba-Katanga</language>
			<language type="lua">luba-Lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">lettisk</language>
			<language type="mad">madurese</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandingo</language>
			<language type="map">austronesisk sprog</language>
			<language type="mas">masai</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malagasy</language>
			<language type="mga">middelirsk</language>
			<language type="mh">marshallese</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">diverse sprog</language>
			<language type="mk">makedonsk</language>
			<language type="mkh">mon-khmer sprog</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolsk</language>
			<language type="mnc">manchu</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobo sprog</language>
			<language type="mo">moldovisk</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathisk</language>
			<language type="ms">malay</language>
			<language type="mt">maltesisk</language>
			<language type="mul">flere sprog</language>
			<language type="mun">mundasprog</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandesisk</language>
			<language type="mwr">marwari</language>
			<language type="my">burmesisk</language>
			<language type="myn">mayasprog</language>
			<language type="myv">erzya</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">nordamerikansk indiansk sprog</language>
			<language type="nap">neapolitansk</language>
			<language type="nb">norsk bokmål</language>
			<language type="nd">nordndebele</language>
			<language type="nds">nedertysk</language>
			<language type="ne">nepalesisk</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">Niger-Congo sprog</language>
			<language type="niu">niuean</language>
			<language type="nl">hollandsk</language>
			<language type="nl_BE">flamsk</language>
			<language type="nn">nynorsk</language>
			<language type="no">norsk</language>
			<language type="nog">nogai</language>
			<language type="non">oldislandsk</language>
			<language type="nqo">n-ko</language>
			<language type="nr">sydndebele</language>
			<language type="nso">nordsotho</language>
			<language type="nub">nubisk sprog</language>
			<language type="nv">navajo</language>
			<language type="nwc">klassisk newarisk</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro sprog</language>
			<language type="nzi">nzima</language>
			<language type="oc">occitansk</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetisk</language>
			<language type="osa">osage</language>
			<language type="ota">osmannisk-tyrkisk</language>
			<language type="oto">otomi sprog</language>
			<language type="pa">punjabi</language>
			<language type="paa">papua-australsk sprog</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauansk</language>
			<language type="peo">oldpersisk</language>
			<language type="phi">filippinsk sprog</language>
			<language type="phn">fønikisk</language>
			<language type="pi">pali</language>
			<language type="pl">polsk</language>
			<language type="pon">ponape</language>
			<language type="pra">prakritsprog</language>
			<language type="pro">oldprovencalsk</language>
			<language type="ps">pashto</language>
			<language type="pt">portugisisk</language>
			<language type="pt_BR">brasiliansk portugisisk</language>
			<language type="pt_PT">iberisk portugisisk</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongan</language>
			<language type="rm">rætoromansk</language>
			<language type="rn">rundi</language>
			<language type="ro">rumænsk</language>
			<language type="roa">romansk sprog</language>
			<language type="rom">romani</language>
			<language type="root">rot</language>
			<language type="ru">russisk</language>
			<language type="rup">arumænsk</language>
			<language type="rw">kinyarwanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">yakut</language>
			<language type="sai">sydamerikansk indiansk sprog</language>
			<language type="sal">salikisk sprog</language>
			<language type="sam">samaritansk</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardinsk</language>
			<language type="scn">siciliansk</language>
			<language type="sco">skotsk</language>
			<language type="sd">sindhi</language>
			<language type="se">nordsamisk</language>
			<language type="sel">selkupisk</language>
			<language type="sem">semitisk sprog</language>
			<language type="sg">sango</language>
			<language type="sga">oldirsk</language>
			<language type="sgn">tegnsprog</language>
			<language type="sh">serbokroatisk</language>
			<language type="shn">shan</language>
			<language type="si">singalesisk</language>
			<language type="sid">sidamo</language>
			<language type="sio">sioux sprog</language>
			<language type="sit">sino-tibetansk sprog</language>
			<language type="sk">slovakisk</language>
			<language type="sl">slovensk</language>
			<language type="sla">slavisk sprog</language>
			<language type="sm">samoansk</language>
			<language type="sma">sydsamisk</language>
			<language type="smi">samisk sprog</language>
			<language type="smj">lule sami</language>
			<language type="smn">inari sami</language>
			<language type="sms">skolt sami</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somalisk</language>
			<language type="sog">sogdiansk</language>
			<language type="son">songhai</language>
			<language type="sq">albansk</language>
			<language type="sr">serbisk</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">swati</language>
			<language type="ssa">nilo-saharansk sprog</language>
			<language type="st">sydsotho</language>
			<language type="su">sundanesisk</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumerisk</language>
			<language type="sv">svensk</language>
			<language type="sw">swahili</language>
			<language type="syc">klassisk syrisk</language>
			<language type="syr">syrisk</language>
			<language type="ta">tamilsk</language>
			<language type="tai">thaisprog</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tajik</language>
			<language type="th">thailandsk</language>
			<language type="ti">tigrinya</language>
			<language type="tig">tigre</language>
			<language type="tiv">tivi</language>
			<language type="tk">turkmensk</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamashek</language>
			<language type="tn">tswana</language>
			<language type="to">tongansk</language>
			<language type="tog">nyasa tongansk</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">tyrkisk</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshisk</language>
			<language type="tt">tatarisk</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupisprog</language>
			<language type="tut">altaisk sprog</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahitiansk</language>
			<language type="tyv">tuvinian</language>
			<language type="udm">udmurt</language>
			<language type="ug">uigurisk</language>
			<language type="uga">ugaristisk</language>
			<language type="uk">ukrainsk</language>
			<language type="umb">umbundu</language>
			<language type="und">ukendt eller ugyldigt sprog</language>
			<language type="ur">urdu</language>
			<language type="uz">usbekisk</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamesisk</language>
			<language type="vo">volapyk</language>
			<language type="vot">votisk</language>
			<language type="wa">vallonsk</language>
			<language type="wak">wakashansk sprog</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">vendisk sprog</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xhosa</language>
			<language type="yao">yao</language>
			<language type="yap">yap</language>
			<language type="yi">jiddisch</language>
			<language type="yo">yoruba</language>
			<language type="ypk">yupisk sprog</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotec</language>
			<language type="zbl">blissymboler</language>
			<language type="zen">zenaga</language>
			<language type="zh">kinesisk</language>
			<language type="zh_Hans">forenklet kinesisk</language>
			<language type="zh_Hant">traditionelt kinesisk</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">intet sprogligt indhold</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabisk</script>
			<script type="Armi">armi</script>
			<script type="Armn">armensk</script>
			<script type="Avst">avestansk</script>
			<script type="Bali">balinesisk</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengalesisk</script>
			<script type="Blis">blissymboler</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">bramisk</script>
			<script type="Brai">blindskrift</script>
			<script type="Bugi">buginesisk</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">cakm</script>
			<script type="Cans">oprindelige canadiske symboler</script>
			<script type="Cari">kariansk</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirt</script>
			<script type="Copt">koptisk</script>
			<script type="Cprt">cypriotisk</script>
			<script type="Cyrl">kyrillisk</script>
			<script type="Cyrs">kyrillisk - oldkirkeslavisk variant</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egyptisk demotisk</script>
			<script type="Egyh">egyptisk hieratisk</script>
			<script type="Egyp">egyptiske hieroglyffer</script>
			<script type="Ethi">etiopisk</script>
			<script type="Geok">georgisk kutsuri</script>
			<script type="Geor">georgisk</script>
			<script type="Glag">glagolitisk</script>
			<script type="Goth">gotisk</script>
			<script type="Grek">græsk</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">forenklet han</script>
			<script type="Hant">traditionelt han</script>
			<script type="Hebr">hebraisk</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana eller hiragana</script>
			<script type="Hung">oldungarsk</script>
			<script type="Inds">indus</script>
			<script type="Ital">Olditalisk</script>
			<script type="Java">javanesisk</script>
			<script type="Jpan">japansk</script>
			<script type="Kali">kaya li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshti</script>
			<script type="Khmr">khmerisk</script>
			<script type="Knda">kannada</script>
			<script type="Kore">koreansk</script>
			<script type="Kthi">kthi</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laotisk</script>
			<script type="Latf">latinsk - frakturvariant</script>
			<script type="Latg">latinsk - gælisk variant</script>
			<script type="Latn">latinsk</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">lineær A</script>
			<script type="Linb">lineær B</script>
			<script type="Lyci">lykisk</script>
			<script type="Lydi">lydisk</script>
			<script type="Mand">mandaisk</script>
			<script type="Mani">manikæisk</script>
			<script type="Maya">mayahieroglyffer</script>
			<script type="Mero">meroitisk</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongolsk</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei-mayek</script>
			<script type="Mymr">myanmarsk</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol-chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmannisk</script>
			<script type="Perm">oldpermisk</script>
			<script type="Phag">phags-pa</script>
			<script type="Phli">phli</script>
			<script type="Phlp">phlp</script>
			<script type="Phlv">pahlavi</script>
			<script type="Phnx">fønikisk</script>
			<script type="Plrd">pollardtegn</script>
			<script type="Prti">prti</script>
			<script type="Qaai">arvet</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongo-rongo</script>
			<script type="Runr">runer</script>
			<script type="Samr">samaritansk</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">tegnskrift</script>
			<script type="Shaw">shavisk</script>
			<script type="Sinh">singalesisk</script>
			<script type="Sund">sundanesisk</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">syrisk</script>
			<script type="Syre">syrisk - estrangelovariant</script>
			<script type="Syrj">vestsyrisk</script>
			<script type="Syrn">østsyriakisk</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">tai lue</script>
			<script type="Taml">tamilsk</script>
			<script type="Tavt">tavt</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">thailandsk</script>
			<script type="Tibt">tibetanske</script>
			<script type="Ugar">ugaritisk</script>
			<script type="Vaii">vai</script>
			<script type="Visp">synlig tale</script>
			<script type="Xpeo">oldpersisk</script>
			<script type="Xsux">sumero-akkadisk cuneiform</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">zmth</script>
			<script type="Zsym">zsym</script>
			<script type="Zxxx">ikke-skriftsprog</script>
			<script type="Zyyy">fælles</script>
			<script type="Zzzz">ukendt eller ugyldig skriftsprog</script>
		</scripts>
		<territories>
			<territory type="001">Verden</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Nordamerika</territory>
			<territory type="005">Sydamerika</territory>
			<territory type="009">Oceanien</territory>
			<territory type="011">Vestafrika</territory>
			<territory type="013">Mellemamerika</territory>
			<territory type="014">Østafrika</territory>
			<territory type="015">Nordafrika</territory>
			<territory type="017">Centralafrika</territory>
			<territory type="018">det sydlige Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">det nordlige Amerika</territory>
			<territory type="029">Caribien</territory>
			<territory type="030">Østasien</territory>
			<territory type="034">Sydasien</territory>
			<territory type="035">Sydøstasien</territory>
			<territory type="039">Sydeuropa</territory>
			<territory type="053">Australien og New Zealand</territory>
			<territory type="054">Melanesien</territory>
			<territory type="057">Mikronesien</territory>
			<territory type="061">Polynesien</territory>
			<territory type="062">Sydcentralasien</territory>
			<territory type="142">Asien</territory>
			<territory type="143">Centralasien</territory>
			<territory type="145">Vestasien</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Østeuropa</territory>
			<territory type="154">Nordeuropa</territory>
			<territory type="155">Vesteuropa</territory>
			<territory type="172">Sammenslutningen af uafhængige stater</territory>
			<territory type="419">Latinamerika og Caribien</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Forenede Arabiske Emirater</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua og Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanien</territory>
			<territory type="AM">Armenien</territory>
			<territory type="AN">Hollandske Antiller</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerikansk Samoa</territory>
			<territory type="AT">Østrig</territory>
			<territory type="AU">Australien</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Åland</territory>
			<territory type="AZ">Aserbajdsjan</territory>
			<territory type="BA">Bosnien-Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgien</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarien</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei Darussalam</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasilien</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvetø</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Hviderusland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Cocosøerne</territory>
			<territory type="CD">Congo-Kinshasa</territory>
			<territory type="CF">Centralafrikanske Republik</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Schweiz</territory>
			<territory type="CI">Elfenbenskysten</territory>
			<territory type="CK">Cook-øerne</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Cameroun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbien og Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CX">Juleøen</territory>
			<territory type="CY">Cypern</territory>
			<territory type="CZ">Tjekkiet</territory>
			<territory type="DE">Tyskland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Den Dominikanske Republik</territory>
			<territory type="DZ">Algeriet</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egypten</territory>
			<territory type="EH">Vestsahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanien</territory>
			<territory type="ET">Etiopien</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji-øerne</territory>
			<territory type="FK">Falklandsøerne</territory>
			<territory type="FM">Mikronesiens Forenede Stater</territory>
			<territory type="FO">Færøerne</territory>
			<territory type="FR">Frankrig</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Storbritannien</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgien</territory>
			<territory type="GF">Fransk Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grønland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ækvatorialguinea</territory>
			<territory type="GR">Grækenland</territory>
			<territory type="GS">South Georgia og De Sydlige Sandwichøer</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- og McDonald-øerne</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatien</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungarn</territory>
			<territory type="ID">Indonesien</territory>
			<territory type="IE">Irland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">Indien</territory>
			<territory type="IO">Det Britiske Territorium i Det Indiske Ocean</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italien</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Cambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comorerne</territory>
			<territory type="KN">Saint Kitts og Nevis</territory>
			<territory type="KP">Nordkorea</territory>
			<territory type="KR">Sydkorea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Caymanøerne</territory>
			<territory type="KZ">Kasakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litauen</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Letland</territory>
			<territory type="LY">Libyen</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Republikken Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalløerne</territory>
			<territory type="MK">Republikken Makedonien</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongoliet</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Nordmarianerne</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauretanien</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldiverne</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Ny Caledonien</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk Island</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Holland</territory>
			<territory type="NO">Norge</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Fransk Polynesien</territory>
			<territory type="PG">Papua Ny Guinea</territory>
			<territory type="PH">Filippinerne</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">Saint Pierre og Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">De palæstinensiske områder</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Ydre Oceanien</territory>
			<territory type="QU">EU</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Rumænien</territory>
			<territory type="RS">Serbien</territory>
			<territory type="RU">Rusland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi-Arabien</territory>
			<territory type="SB">Salomonøerne</territory>
			<territory type="SC">Seychellerne</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sverige</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">St. Helena</territory>
			<territory type="SI">Slovenien</territory>
			<territory type="SJ">Svalbard og Jan Mayen</territory>
			<territory type="SK">Slovakiet</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé og Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syrien</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks- og Caicosøerne</territory>
			<territory type="TD">Tchad</territory>
			<territory type="TF">Franske Besiddelser i Det Sydlige Indiske Ocean</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadsjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor-Leste</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunesien</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Tyrkiet</territory>
			<territory type="TT">Trinidad og Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">De Mindre Amerikanske Oversøiske Øer</territory>
			<territory type="US">USA</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikanstaten</territory>
			<territory type="VC">St. Vincent og Grenadinerne</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">De britiske jomfruøer</territory>
			<territory type="VI">De amerikanske jomfruøer</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis og Futunaøerne</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sydafrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">ukendt eller ugyldigt område</territory>
		</territories>
		<variants>
			<variant type="1901">traditionel tysk retskrivning</variant>
			<variant type="1996">tysk retskrivning fra 1996</variant>
			<variant type="AREVELA">østarmensk</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">det internationale fonetiske alfabet</variant>
			<variant type="FONUPA">det uraliske fonetiske alfabet</variant>
			<variant type="POSIX">computer</variant>
			<variant type="REVISED">revideret retskrivning</variant>
		</variants>
		<keys>
			<key type="calendar">Kalender</key>
			<key type="collation">Sortering</key>
			<key type="currency">Valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">sorteringsrækkefølge uforkortet kinesisk - Big5</type>
			<type type="buddhist" key="calendar">buddhistisk kalender</type>
			<type type="chinese" key="calendar">kinesisk kalender</type>
			<type type="direct" key="collation">direkte sorteringsrækkefølge</type>
			<type type="gb2312han" key="collation">sorteringsrækkefølge forkortet kinesisk - GB2312</type>
			<type type="gregorian" key="calendar">gregoriansk kalender</type>
			<type type="hebrew" key="calendar">jødisk kalender</type>
			<type type="indian" key="calendar">indisk nationalkalender</type>
			<type type="islamic" key="calendar">islamisk kalender</type>
			<type type="islamic-civil" key="calendar">verdslig islamisk kalender</type>
			<type type="japanese" key="calendar">japansk kalender</type>
			<type type="phonebook" key="collation">sorteringsrækkefølge i telefonbøger</type>
			<type type="pinyin" key="collation">pinyin-baseret sorteringsrækkefølge</type>
			<type type="roc" key="calendar">kalender for Republikken Kina</type>
			<type type="stroke" key="collation">stregbaseret sorteringsrækkefølge</type>
			<type type="traditional" key="collation">traditionel sorteringsrækkefølge</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">De amerikanske målesystemer</measurementSystemName>
			<measurementSystemName type="metric">Det metriske system</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Sprog: {0}</codePattern>
			<codePattern type="script">Instruks: {0}</codePattern>
			<codePattern type="territory">Område: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a-z æ ø å]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á é è ê ë ß ü ä ö]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>”</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GuMtkHmsSEDFwWahKzUeygAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">marts</month>
							<month type="4">april</month>
							<month type="5">maj</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">søn</day>
							<day type="mon">man</day>
							<day type="tue">tir</day>
							<day type="wed">ons</day>
							<day type="thu">tor</day>
							<day type="fri">fre</day>
							<day type="sat">lør</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">søndag</day>
							<day type="mon">mandag</day>
							<day type="tue">tirsdag</day>
							<day type="wed">onsdag</day>
							<day type="thu">torsdag</day>
							<day type="fri">fredag</day>
							<day type="sat">lørdag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">O</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>f.m.</am>
				<pm>e.m.</pm>
				<eras>
					<eraNames>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE 'den' d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH.mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH.mm.ss</dateFormatItem>
						<dateFormatItem id="Hm">HH.mm</dateFormatItem>
						<dateFormatItem id="M">M</dateFormatItem>
						<dateFormatItem id="MEd">E. d-M</dateFormatItem>
						<dateFormatItem id="MMM">MMM</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E, d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d.</dateFormatItem>
						<dateFormatItem id="mmss">mm.ss</dateFormatItem>
						<dateFormatItem id="ms">mm.ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M-yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE. d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE. d. MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q. 'kvartal' yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMM">MMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E 'den' d. MMM - E 'den' d. MMM</greatestDifference>
							<greatestDifference id="d">E 'den' d. - E 'den' d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">MMMM-MMMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="h">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="h">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E 'den' d. MMM - E 'den' d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E 'den' d. - E 'den' d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E 'den' d. MMM yyyy - E 'den' d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM-MM yyyy</greatestDifference>
							<greatestDifference id="y">MM yyyy - MM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>æra</displayName>
					</field>
					<field type="year">
						<displayName>år</displayName>
					</field>
					<field type="month">
						<displayName>måned</displayName>
					</field>
					<field type="week">
						<displayName>uge</displayName>
					</field>
					<field type="day">
						<displayName>dag</displayName>
						<relative type="0">i dag</relative>
						<relative type="1">i morgen</relative>
						<relative type="2">i overmorgen</relative>
						<relative type="3">om tre dage</relative>
						<relative type="-1">i går</relative>
						<relative type="-2">i forgårs</relative>
						<relative type="-3">for tre dage siden</relative>
					</field>
					<field type="weekday">
						<displayName>ugedag</displayName>
					</field>
					<field type="dayperiod">
						<displayName>dagtid</displayName>
					</field>
					<field type="hour">
						<displayName>time</displayName>
					</field>
					<field type="minute">
						<displayName>minut</displayName>
					</field>
					<field type="second">
						<displayName>sekund</displayName>
					</field>
					<field type="zone">
						<displayName>zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH.mm;-HH.mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} tid</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Ukendt</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Sydpolen</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wien</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruxelles</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Påskeøen</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kap Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Juleøen</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>København</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Algier</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>De Kanariske Øer</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Færøerne</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Nuuk</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athen</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rom</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldiverne</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warszawa</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorerne</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska Time</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre-tid</standard>
					<daylight>Acre-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afghansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>centralafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>østafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>sydafrikansk normaltid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>vestafrikansk tid</standard>
					<daylight>vestafrikansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk-tid</standard>
					<daylight>Aktyubinsk-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska-tid</generic>
					<standard>Alaska-normaltid</standard>
					<daylight>Alaska-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaska-Hawaii-tid</generic>
					<standard>Alaska-Hawaii-normaltid</standard>
					<daylight>Alaska-Hawaii-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Almaty-tid</standard>
					<daylight>Almaty-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazonas-tid</standard>
					<daylight>Amazonas-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Central-tid</generic>
					<standard>Central-normaltid</standard>
					<daylight>Central-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Eastern-tid</generic>
					<standard>Eastern-normaltid</standard>
					<daylight>Eastern-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Mountain-tid</generic>
					<standard>Mountain-normaltid</standard>
					<daylight>Mountain-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Pacific-tid</generic>
					<standard>Pacific-normaltid</standard>
					<daylight>Pacific-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Anadyr-tid</standard>
					<daylight>Anadyr-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aqtau-tid</standard>
					<daylight>Aqtau-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aqtobe-tid</standard>
					<daylight>Aqtobe-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arabisk tid</generic>
					<standard>Arabisk normaltid</standard>
					<daylight>Arabisk sommertid</daylight>
				</long>
				<short>
					<generic>AT (arabisk)</generic>
					<standard>AST (arabisk)</standard>
					<daylight>ADT (arabisk)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentinsk tid</standard>
					<daylight>Argentinsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Vestargentinsk tid</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Armensk tid</standard>
					<daylight>Armensk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlantic-tid</generic>
					<standard>Atlantic-normaltid</standard>
					<daylight>Atlantic-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Centralaustralsk tid</generic>
					<standard>Centralaustralsk normaltid</standard>
					<daylight>Centralaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<standard>Vestlig centralaustralsk normaltid</standard>
					<daylight>Vestlig centralaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Østaustralsk tid</generic>
					<standard>Østaustralsk normaltid</standard>
					<daylight>Østaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Vestaustralsk tid</generic>
					<standard>Vestaustralsk normaltid</standard>
					<daylight>Vestaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering-tid</generic>
					<standard>Bering-normaltid</standard>
					<daylight>Bering-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Boliviansk tid</standard>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brasiliansk tid</standard>
					<daylight>Brasiliansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Chilensk tid</standard>
					<daylight>Chilensk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Kinesisk normaltid</standard>
					<daylight>Kinesisk sommertid</daylight>
				</long>
				<short>
					<standard>CST (Kina)</standard>
				</short>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Colombiansk tid</standard>
					<daylight>Colombiansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Cubansk tid</generic>
					<standard>Cubansk normaltid</standard>
					<daylight>Cubansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Davis-tid</standard>
				</long>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Dumont-d'Urville-tid</standard>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Hollandsk Guiana-tid</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ecuadoriansk tid</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<generic>mellemeuropæisk tid</generic>
					<standard>mellemeuropæisk normaltid</standard>
					<daylight>mellemeuropæisk sommertid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<generic>østeuropæisk tid</generic>
					<standard>østeuropæisk normaltid</standard>
					<daylight>østeuropæisk sommertid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<generic>vesteuropæisk tid</generic>
					<standard>vesteuropæisk normaltid</standard>
					<daylight>vesteuropæisk sommertid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Fransk Guiana-tid</standard>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Verdenstid</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Centralgrønlandsk tid</standard>
					<daylight>Centralgrønlandsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Østgrønlandsk tid</standard>
					<daylight>Østgrønlandsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Vestgrønlandsk tid</standard>
					<daylight>Vestgrønlandsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Guyana-tid</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hongkong-tid</standard>
					<daylight>Hongkong-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Indisk normaltid</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Indokinesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Centralindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Østindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Vestindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Israelsk normaltid</standard>
					<daylight>Israelsk sommertid</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Japansk normaltid</standard>
					<daylight>Japansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<standard>Koreansk normaltid</standard>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Mawson-tid</standard>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<standard>Moskva-normaltid</standard>
					<daylight>Moskva-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Newzealandsk tid</generic>
					<standard>Newzealandsk normaltid</standard>
					<daylight>Newzealandsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Newfoundland-tid</generic>
					<standard>Newfoundland-normaltid</standard>
					<daylight>Newfoundland-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Fernando de Noronha-tid</standard>
					<daylight>Fernando de Noronha-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paraguayansk tid</standard>
					<daylight>Paraguayansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Peruviansk tid</standard>
					<daylight>Peruviansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre- og Miquelon-tid</generic>
					<standard>Pierre- og Miquelon-normaltid</standard>
					<daylight>Pierre- og Miquelon-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Rothera-tid</standard>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Surinam-tid</standard>
				</long>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Syowa-tid</standard>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Uruguayansk tid</standard>
					<daylight>Uruguayansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venezuelansk tid</standard>
				</long>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Vostok-tid</standard>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukon-tid</generic>
					<standard>Yukon-normaltid</standard>
					<daylight>Yukon-sommertid</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>,</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorransk peseta</displayName>
				<displayName count="other">Andorranske pesetas</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirham fra de Forenede Arabiske Emirater</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghani</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albansk lek</displayName>
				<displayName count="other">Albanske lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Armensk dram</displayName>
				<displayName count="other">Armenske dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Gylden fra De Hollandske Antiller</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolansk kwanza</displayName>
				<displayName count="other">Angolanske kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolansk kwanza (1977-1990)</displayName>
				<displayName count="other">Angolanske kwanza (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Ny angolansk kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolansk kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentinsk austral</displayName>
				<displayName count="other">Argentinske austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentinsk peso (1983-1985)</displayName>
				<displayName count="other">Argentinske pesos (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinsk peso</displayName>
				<displayName count="other">Argentinske pesos</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Østrigsk schilling</displayName>
				<displayName count="other">Østrigske schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australsk dollar</displayName>
				<displayName count="other">Australske dollar</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Arubansk gylden</displayName>
				<displayName count="other">Arubanske gylden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Aserbajdsjansk manat 1993-2006</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Aserbajdsjansk manat</displayName>
				<displayName count="one">Aserbajdsjansk manat</displayName>
				<displayName count="other">Aserbajdsjanske manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnien-Hercegovinsk dinar</displayName>
				<displayName count="other">Bosnien-Hercegovinske dinarer</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnien-Hercegovinsk konvertibel mark</displayName>
				<displayName count="other">Bosnien-Hercegovinske konvertible mark</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadisk dollar</displayName>
				<displayName count="other">Barbadiske dollar</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bangladeshisk taka</displayName>
				<displayName count="other">Bangladeshiske taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belgisk franc (konvertibel)</displayName>
				<displayName count="other">Belgiske franc (konvertible)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgisk franc</displayName>
				<displayName count="other">Belgiske franc</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belgisk franc (financial)</displayName>
				<displayName count="other">Belgiske franc (financial)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgarsk hard lev</displayName>
				<displayName count="other">Bulgarske hard lev</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Ny bulgarsk lev</displayName>
				<displayName count="other">Ny bulgarske lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahrainsk dinar</displayName>
				<displayName count="other">Bahrainske dinarer</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundisk franc</displayName>
				<displayName count="other">Burundiske franc</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermudansk dollar</displayName>
				<displayName count="other">Bermudanske dollar</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Bruneisk dollar</displayName>
				<displayName count="other">Bruneiske dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviansk boliviano</displayName>
				<displayName count="other">Bolivianske boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Boliviansk peso</displayName>
				<displayName count="other">Bolivianske pesos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Boliviansk mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brasiliansk cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brasiliansk cruzado</displayName>
				<displayName count="other">Brasilianske cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brasiliansk cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brasiliansk real</displayName>
				<displayName count="other">Brasilianske real</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Brasiliansk cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brasiliansk cruzeiro</displayName>
				<displayName count="other">Brasilianske cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamansk dollar</displayName>
				<displayName count="other">Bahamanske dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutansk ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Burmesisk kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswansk pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Ny hviderussisk rubel (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Hviderussisk rubel</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belizisk dollar</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Canadisk dollar</displayName>
				<displayName count="other">Canadiske dollar</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Congolesisk franc congolais</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Schweizisk franc</displayName>
				<displayName count="other">Schweiziske franc</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Chilensk unidades de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilensk peso</displayName>
				<displayName count="other">Chilenske pesos</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Kinesisk yuan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Colombiansk peso</displayName>
				<displayName count="other">Colombianske pesos</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Costaricansk colon</displayName>
				<displayName count="other">Costaricanske colon</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Gammel serbisk dinar</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Tjekkoslovakisk hard koruna</displayName>
				<displayName count="other">Tjekkoslovakiske hard koruna</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Cubansk peso</displayName>
				<displayName count="other">Cubanske pesos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Kapverdisk escudo</displayName>
				<displayName count="other">Kapverdiske escudos</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Cypriotisk pund</displayName>
				<displayName count="other">Cypriotiske pund</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Tjekkisk koruna</displayName>
				<displayName count="other">Tjekkiske koruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Østtysk mark</displayName>
				<displayName count="other">Østtyske mark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Tysk mark</displayName>
				<displayName count="other">Tyske mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djiboutisk franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Dansk krone</displayName>
				<displayName count="other">Danske kroner</displayName>
				<symbol>kr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominikansk peso</displayName>
				<displayName count="other">Dominikanske pesos</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Algerisk dinar</displayName>
				<displayName count="other">Algeriske dinarer</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadoriansk sucre</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estisk kroon</displayName>
				<displayName count="other">Estiske kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptisk pund</displayName>
				<displayName count="other">Egyptiske pund</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritreisk nakfa</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spansk peseta</displayName>
				<displayName count="other">Spanske pesetas</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Etiopisk birr</displayName>
				<displayName count="other">Etiopiske birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finsk mark</displayName>
				<displayName count="other">Finske mar</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fijiansk dollar</displayName>
				<displayName count="other">Fijianske dollar</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Pund fra Falklandsøerne</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Fransk franc</displayName>
				<displayName count="other">Franske franc</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britisk pund</displayName>
				<displayName count="other">Britiske pund</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgisk kupon larit</displayName>
				<displayName count="other">Georgiske kupon larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Georgisk lari</displayName>
				<displayName count="other">Georgiske lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ghanesisk cedi 1979-2007</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghanesisk cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltarisk pund</displayName>
				<displayName count="other">Gibraltariske pund</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambisk dalasi</displayName>
				<displayName count="other">Gambiske dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guineansk franc</displayName>
				<displayName count="other">Guineanske franc</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guineansk syli</displayName>
				<displayName count="other">Guineanske syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ækvatorialguineask ekwele guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Græsk drakme</displayName>
				<displayName count="other">Græske drakmer</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemalansk quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portugisisk guinea escudo</displayName>
				<displayName count="other">Portugisiske guinea escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guineansk peso</displayName>
				<displayName count="other">Guinea-Bissau-pesos</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyansk dollar</displayName>
				<displayName count="other">Guyanske dollar</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hongkong dollar</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Honduransk lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Kroatisk dinar</displayName>
				<displayName count="other">Kroatiske dinarer</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kroatisk kuna</displayName>
				<displayName count="other">Kroatiske kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haitisk gourde</displayName>
				<displayName count="other">Haitiske gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Ungarsk forint</displayName>
				<displayName count="other">Ungarske forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonesisk pupiah</displayName>
				<displayName count="other">Indonesiske rupiah</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Irsk pund</displayName>
				<displayName count="other">Irske pund</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Israelsk pund</displayName>
				<displayName count="other">Israelske pund</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Ny israelsk shekel</displayName>
				<displayName count="other">Nye israelske shekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indisk rupee</displayName>
				<displayName count="other">Indiske rupees</displayName>

				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Irakisk dinar</displayName>
				<displayName count="other">Irakiske dinarer</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iransk rial</displayName>
				<displayName count="other">Iranske rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Islansk krone</displayName>
				<displayName count="other">Islandske kroner</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italiensk lire</displayName>
				<displayName count="other">Italienske lire</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaicansk dollar</displayName>
				<displayName count="other">Jamaicanske dollar</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordansk dinar</displayName>
				<displayName count="other">Jordanske dinarer</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japansk yen</displayName>
				<displayName count="other">Japanske yen</displayName>
			</currency>
			<currency type="KES">
				<displayName>Kenyansk shilling</displayName>
				<displayName count="other">Kenyanske shilling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kirgisisk som</displayName>
				<displayName count="other">Kirgisiske som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Cambodjansk riel</displayName>
				<displayName count="other">Cambodjanske riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comorisk franc</displayName>
				<displayName count="other">Comoriske franc</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Nordkoreansk won</displayName>
				<displayName count="other">Nordkoreanske won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Sydkoreansk won</displayName>
				<displayName count="other">Sydkoreanske won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuwaitisk dinar</displayName>
				<displayName count="other">Kuwaitiske dinarer</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Dollar fra Caymanøerne</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kasakhisk tenge</displayName>
				<displayName count="other">Kasakhiske tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laotisk kip</displayName>
				<displayName count="other">Laotiske kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanesisk pund</displayName>
				<displayName count="other">Libanesiske pund</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Srilankansk rupee</displayName>
				<displayName count="other">Srilankanske rupees</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberisk dollar</displayName>
				<displayName count="other">Liberiske dollar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesothisk loti</displayName>
				<displayName count="other">Lesothiske loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Litauisk lita</displayName>
				<displayName count="other">Litauiske lita</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litauisk talonas</displayName>
				<displayName count="other">Litauiske talonas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxembourgsk franc</displayName>
				<displayName count="other">Luxembourgske franc</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lettisk lat</displayName>
				<displayName count="other">Lettiske lat</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Lettisk rubel</displayName>
				<displayName count="other">Lettiske rubler</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libysk dinar</displayName>
				<displayName count="other">Libyske dinarer</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokkansk dirham</displayName>
				<displayName count="other">Marokkanske dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokkansk franc</displayName>
				<displayName count="other">Marokkanske franc</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldovisk leu</displayName>
				<displayName count="other">Moldoviske leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskisk ariary</displayName>
				<displayName count="other">Madagaskiske ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskisk franc</displayName>
				<displayName count="other">Madagaskiske franc</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedonsk denar</displayName>
				<displayName count="other">Makedonske denarer</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Malisk franc</displayName>
				<displayName count="other">Maliske franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmarsk kyat</displayName>
				<displayName count="other">Myanmarske kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolsk tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macaosk pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritansk ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Maltesisk lira</displayName>
				<displayName count="other">Maltesiske lira</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltesisk pund</displayName>
				<displayName count="other">Maltesiske pund</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritisk rupee</displayName>
				<displayName count="other">Mauritiske rupees</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldivisk rufiyaa</displayName>
				<displayName count="other">Maldiviske rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawisk kwacha</displayName>
				<displayName count="other">Malawiske kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexicansk peso</displayName>
				<displayName count="other">Mexicanske pesos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexicansk silver peso (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysisk ringgit</displayName>
				<displayName count="other">Malaysiske ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambiquisk escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Gammel mozambiquisk metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Mozambiquisk metical</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibisk dollar</displayName>
				<displayName count="other">Namibiske dollar</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigeriansk naira</displayName>
				<displayName count="other">Nigerianske naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nicaraguansk cordoba</displayName>
				<displayName count="other">Nicaraguanske cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nicaraguansk cordoba oro</displayName>
				<displayName count="other">Nicaraguanske cordoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Hollandsk guilder</displayName>
				<displayName count="one">Hollandsk gylden</displayName>
				<displayName count="other">Hollandske gylden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norsk krone</displayName>
				<displayName count="other">Norske kroner</displayName>
				<symbol>NOK</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalesisk rupee</displayName>
				<displayName count="other">Nepalesiske rupees</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>New Zealandsk dollar</displayName>
				<displayName count="other">New Zealandske dollar</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Omansk rial</displayName>
				<displayName count="other">Omanske rial</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamansk balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruviansk inti</displayName>
				<displayName count="other">Peruvianske inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruviansk sol nuevo</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruviansk sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papuansk kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filippinsk peso</displayName>
				<displayName count="other">Filippinske pesos</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistansk rupee</displayName>
				<displayName count="other">Pakistanske rupees</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Polsk zloty</displayName>
				<displayName count="other">Polske zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Polsk zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugisisk escudo</displayName>
				<displayName count="other">Portugisiske escudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguaysk guarani</displayName>
				<displayName count="one">Paraguayske guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Qatarsk rial</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Gammel rumænsk leu</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Rumænsk leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbisk dinar</displayName>
				<displayName count="other">Serbiske dinarer</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russisk rubel</displayName>
				<displayName count="other">Russiske rubler</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Russisk rubel (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rwandisk franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudisk riyal</displayName>
				<displayName count="other">Saudiske riyal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salomonsk dollar</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychellisk rupee</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Sudansk dinar</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudanesisk pund</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudansk pund</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Svensk krone</displayName>
				<displayName count="other">Svenske kroner</displayName>
				<symbol>SEK</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singaporeansk dollar</displayName>
				<displayName count="other">Singaporeanske dollar</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Pund fra Saint Helena</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovensk tolar</displayName>
				<displayName count="other">Slovenske tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovakisk koruna</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierraleonsk leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somalisk shilling</displayName>
				<displayName count="other">Somaliske shilling</displayName>
				<symbol>S</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinamsk dollar</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surinamsk guilder</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra fra Sao Tome og Principe</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Sovjetisk rubel</displayName>
				<displayName count="other">Sovjetiske rubler</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Salvadoransk colon</displayName>
				<displayName count="other">Salvadoranske colon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syrisk pund</displayName>
				<displayName count="other">Syriske pund</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Swazilandsk lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Thailandsk baht</displayName>
				<displayName count="other">Thailandske baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadsjikisk rubel</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadsjikisk somoni</displayName>
				<displayName count="other">Tadsjikiske somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmensk manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunesisk dinar</displayName>
				<displayName count="other">Tunesiske dinarer</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tongask paʻanga</displayName>
				<displayName count="other">Tongaske paʻanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Escudo fra Timor</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Tyrkisk lire</displayName>
				<displayName count="other">Tyrkiske lire</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Ny tyrkisk lire</displayName>
				<displayName count="other">Tyrkiske lira</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Dollar fra Trinidad og Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Ny taiwansk dollar</displayName>
				<displayName count="other">Taiwanske dollar</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanisk shilling</displayName>
				<displayName count="other">Tanzaniske shilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainsk grynia</displayName>
				<displayName count="other">Ukrainske grynia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainsk karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandisk shilling (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandisk shilling</displayName>
				<displayName count="other">Ugandiske shilling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Amerikansk dollar</displayName>
				<displayName count="other">Amerikanske dollar</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>Amerikansk dollar (næste dag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Amerikansk dollar (samme dag)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguaysk peso (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguaysk peso uruguayo</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Usbekisk sum</displayName>
				<displayName count="other">Usbekiske sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelansk bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Venezuelansk bolivar fuerte</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vietnamesisk dong</displayName>
				<displayName count="other">Vietnamesiske dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuaisk vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Samoansk tala</displayName>
				<displayName count="other">Samoanske tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Beninsk CFA-franc</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Guld</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Østkaribisk dollar</displayName>
				<displayName count="other">Østkaribiske dollar</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XFO">
				<displayName>Fransk guldfranc</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Fransk UIC-franc</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA-franc BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP-franc</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Ukendt eller ugyldig valuta</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Yemenitisk dinar</displayName>
				<displayName count="other">Yemenitiske dinarer</displayName>
			</currency>
			<currency type="YER">
				<displayName>Yemenitisk rial</displayName>
				<displayName count="other">Yemenitiske rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Jugoslavisk hard dinar</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoslavisk noviy dinar</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslavisk konvertibel dinar</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Sydafrikansk rand (financial)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Sydafrikansk rand</displayName>
				<displayName count="other">Sydafrikanske rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambisk kwacha</displayName>
				<displayName count="other">Zambiske kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Ny zairisk zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairisk zaire</displayName>
				<displayName count="other">Zairiske zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwisk dollar</displayName>
				<displayName count="other">Zimbabwiske dollar</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dag</unitPattern>
			<unitPattern count="other">{0} dage</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} time</unitPattern>
			<unitPattern count="other">{0} timer</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minut</unitPattern>
			<unitPattern count="other">{0} minutter</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} måned</unitPattern>
			<unitPattern count="other">{0} måneder</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekund</unitPattern>
			<unitPattern count="other">{0} sekunder</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} uge</unitPattern>
			<unitPattern count="other">{0} uger</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} år</unitPattern>
			<unitPattern count="other">{0} år</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nej:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��@�>>Locale/Data/mr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.69 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="mr"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">अफार</language>
			<language type="ab">अबखेजियन</language>
			<language type="af">अफ्रिकान्स</language>
			<language type="am">अमहारिक</language>
			<language type="ar">अरेबिक</language>
			<language type="as">असामी</language>
			<language type="ay">ऐमरा</language>
			<language type="az">अज़रबाइजानी</language>
			<language type="ba">बष्किर</language>
			<language type="be">बैलोरुसियन</language>
			<language type="bg">बल्गेरियन</language>
			<language type="bh">बीहारी</language>
			<language type="bi">बिसलमा</language>
			<language type="bn">बंगाली</language>
			<language type="bo">तिबेटियन</language>
			<language type="br">ब्रेटन</language>
			<language type="bs">बोस्नियन</language>
			<language type="ca">कटलन</language>
			<language type="co">कोर्सिकन</language>
			<language type="cs">ज़ेक</language>
			<language type="cy">वेल्ष</language>
			<language type="da">डानिष</language>
			<language type="de">जर्मन</language>
			<language type="dz">भूटानी</language>
			<language type="el">ग्रीक</language>
			<language type="en">इंग्रेजी</language>
			<language type="eo">इस्परान्टो</language>
			<language type="es">स्पानिष</language>
			<language type="et">इस्टोनियन्</language>
			<language type="eu">बास्क</language>
			<language type="fa">पर्षियन्</language>
			<language type="fi">फिन्निष</language>
			<language type="fil">फिलिपिनो</language>
			<language type="fj">फिजी</language>
			<language type="fo">फेरोस्</language>
			<language type="fr">फ्रेन्च</language>
			<language type="fy">फ्रिसियन्</language>
			<language type="ga">ऐरिष</language>
			<language type="gd">स्काटस् गेलिक</language>
			<language type="gl">गेलीशियन</language>
			<language type="gn">गौरानी</language>
			<language type="gu">गुजराती</language>
			<language type="ha">हौसा</language>
			<language type="he">हेबृ</language>
			<language type="hi">हिन्दी</language>
			<language type="hr">क्रोयेषियन्</language>
			<language type="hu">हंगेरियन्</language>
			<language type="hy">आर्मीनियन्</language>
			<language type="ia">इन्टरलिंग्वा</language>
			<language type="id">इन्डोनेषियन</language>
			<language type="ie">इन्टरलिंग</language>
			<language type="ik">इनूपियाक</language>
			<language type="is">आईसलान्डिक</language>
			<language type="it">इटालियन</language>
			<language type="iu">इनुकिटुट्</language>
			<language type="ja">जापनीस्</language>
			<language type="jv">जावनीस्</language>
			<language type="ka">जार्जियन्</language>
			<language type="kk">कज़क</language>
			<language type="kl">ग्रीनलान्डिक</language>
			<language type="km">कंबोडियन</language>
			<language type="kn">कन्नड</language>
			<language type="ko">कोरियन्</language>
			<language type="kok">कोंकणी</language>
			<language type="ks">कश्मीरी</language>
			<language type="ku">कुर्दिष</language>
			<language type="ky">किर्गिज़</language>
			<language type="la">लाटिन</language>
			<language type="ln">लिंगाला</language>
			<language type="lo">लाओतियन्</language>
			<language type="lt">लिथुआनियन्</language>
			<language type="lv">लाट्वियन् (लेट्टिष)</language>
			<language type="mg">मलागसी</language>
			<language type="mi">माओरी</language>
			<language type="mk">मसीडोनियन्</language>
			<language type="ml">मलियालम</language>
			<language type="mn">मंगोलियन्</language>
			<language type="mo">मोल्डावियन्</language>
			<language type="mr">मराठी</language>
			<language type="ms">मलय</language>
			<language type="mt">मालतीस्</language>
			<language type="my">बर्मीस्</language>
			<language type="na">नौरो</language>
			<language type="ne">नेपाली</language>
			<language type="nl">डच</language>
			<language type="no">नोर्वेजियन</language>
			<language type="oc">ओसिटान्</language>
			<language type="om">ओरोमो (अफान)</language>
			<language type="or">ओरिया</language>
			<language type="pa">पंजाबी</language>
			<language type="pl">पोलिष</language>
			<language type="ps">पष्टो (पुष्टो)</language>
			<language type="pt">पोर्चुगीस्</language>
			<language type="pt_PT">पोर्तुगीज (पोर्तुगाल)</language>
			<language type="qu">क्वेचओ</language>
			<language type="rm">रहटो-रोमान्स्</language>
			<language type="rn">किरुन्दी</language>
			<language type="ro">रोमानियन्</language>
			<language type="root">शिखर</language>
			<language type="ru">रष्यन्</language>
			<language type="rw">किन्यार्वान्डा</language>
			<language type="sa">संस्कृत</language>
			<language type="sd">सिंधी</language>
			<language type="sg">सांग्रो</language>
			<language type="sh">सेर्बो-क्रोयेषियन्</language>
			<language type="si">सिन्हलीस्</language>
			<language type="sk">स्लोवाक</language>
			<language type="sl">स्लोवेनियन्</language>
			<language type="sm">समोन</language>
			<language type="sn">शोना</language>
			<language type="so">सोमाली</language>
			<language type="sq">आल्बेनियन्</language>
			<language type="sr">सेर्बियन्</language>
			<language type="ss">सिस्वती</language>
			<language type="st">सेसोथो</language>
			<language type="su">सुंदनीस्</language>
			<language type="sv">स्वीडिष</language>
			<language type="sw">स्वाहिली</language>
			<language type="ta">तमिळ</language>
			<language type="te">तेलंगू</language>
			<language type="tg">तजिक</language>
			<language type="th">थाई</language>
			<language type="ti">तिग्रिन्या</language>
			<language type="tk">तुर्कमेन</language>
			<language type="tl">तगालोग</language>
			<language type="tlh">क्लिंगॉन</language>
			<language type="tn">सेत्स्वाना</language>
			<language type="to">तोंगा</language>
			<language type="tr">तुर्किष</language>
			<language type="ts">त्सोगा</language>
			<language type="tt">टटार</language>
			<language type="tw">त्वि</language>
			<language type="ug">उधूर</language>
			<language type="uk">युक्रेनियन्</language>
			<language type="ur">उर्दू</language>
			<language type="uz">उज़बेक</language>
			<language type="vi">वियत्नामीज़</language>
			<language type="vo">ओलापुक</language>
			<language type="wo">उलोफ</language>
			<language type="xh">क्स्होसा</language>
			<language type="yi">इद्दिष</language>
			<language type="yo">यूरुबा</language>
			<language type="za">झ्हुन्ग</language>
			<language type="zh">चिनीस्</language>
			<language type="zu">जुलू</language>
		</languages>
		<territories>
			<territory type="BR">ब्राजील</territory>
			<territory type="DE">जमिन</territory>
			<territory type="IN">भारत</territory>
			<territory type="TO">टांगा</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[़ ँ-ः ०-९ ॐ अ-ऍ ए-ऑ ओ-न प-र ल ळ व-ह ऽ-ॅ े-ॉ ो-्]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">जानेवारी</month>
							<month type="2">फेब्रुवारी</month>
							<month type="3">मार्च</month>
							<month type="4">एप्रिल</month>
							<month type="5">मे</month>
							<month type="6">जून</month>
							<month type="7">जुलै</month>
							<month type="8">ओगस्ट</month>
							<month type="9">सेप्टेंबर</month>
							<month type="10">ओक्टोबर</month>
							<month type="11">नोव्हेंबर</month>
							<month type="12">डिसेंबर</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">जानेवारी</month>
							<month type="2">फेब्रुवारी</month>
							<month type="3">मार्च</month>
							<month type="4">एप्रिल</month>
							<month type="5">मे</month>
							<month type="6">जून</month>
							<month type="7">जुलै</month>
							<month type="8">ओगस्ट</month>
							<month type="9">सेप्टेंबर</month>
							<month type="10">ओक्टोबर</month>
							<month type="11">नोव्हेंबर</month>
							<month type="12">डिसेंबर</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">रवि</day>
							<day type="mon">सोम</day>
							<day type="tue">मंगळ</day>
							<day type="wed">बुध</day>
							<day type="thu">गुरु</day>
							<day type="fri">शुक्र</day>
							<day type="sat">शनि</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">रविवार</day>
							<day type="mon">सोमवार</day>
							<day type="tue">मंगळवार</day>
							<day type="wed">बुधवार</day>
							<day type="thu">गुरुवार</day>
							<day type="fri">शुक्रवार</day>
							<day type="sat">शनिवार</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>म.पू.</am>
				<pm>म.नं.</pm>
				<eras>
					<eraAbbr>
						<era type="0">ईसापूर्व</era>
						<era type="1">सन</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<metazone type="India">
				<long>
					<standard>भारतीय समय</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>रु</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>हां</yesstr>
			<nostr>ना</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�2��##Locale/Data/te_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="te"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[�y��Locale/Data/aa_ER.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="aa"/>
		<territory type="ER"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="ERN">
				<symbol>$</symbol>
			</currency>
			<currency type="ETB">
				<symbol>ETB</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[A����Locale/Data/nl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.108 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="nl"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abchazisch</language>
			<language type="ace">Atjees</language>
			<language type="ach">Akoli</language>
			<language type="ada">Adangme</language>
			<language type="ady">Adyghe</language>
			<language type="ae">Avestisch</language>
			<language type="af">Afrikaans</language>
			<language type="afa">Afro-Aziatische taal</language>
			<language type="afh">Afrihili</language>
			<language type="ain">Ainu</language>
			<language type="ak">Akan</language>
			<language type="akk">Akkadisch</language>
			<language type="ale">Aleut</language>
			<language type="alg">Algonkium-talen</language>
			<language type="alt">Zuid-Altaïsch</language>
			<language type="am">Amhaars</language>
			<language type="an">Aragonees</language>
			<language type="ang">Oudengels</language>
			<language type="apa">Apache-talen</language>
			<language type="ar">Arabisch</language>
			<language type="arc">Aramees</language>
			<language type="arn">Araukaans</language>
			<language type="arp">Arapaho</language>
			<language type="art">Kunstmatige taal</language>
			<language type="arw">Arawak</language>
			<language type="as">Assamees</language>
			<language type="ast">Asturisch</language>
			<language type="ath">Athapascaanse talen</language>
			<language type="aus">Australische talen</language>
			<language type="av">Avarisch</language>
			<language type="awa">Awadhi</language>
			<language type="ay">Aymara</language>
			<language type="az">Azerbeidzjaans</language>
			<language type="ba">Basjkiers</language>
			<language type="bad">Banda</language>
			<language type="bai">Bamileke-talen</language>
			<language type="bal">Baloetsji</language>
			<language type="ban">Balinees</language>
			<language type="bas">Basa</language>
			<language type="bat">Baltische taal</language>
			<language type="be">Wit-Russisch</language>
			<language type="bej">Beja</language>
			<language type="bem">Bemba</language>
			<language type="ber">Berbers</language>
			<language type="bg">Bulgaars</language>
			<language type="bh">Bihari</language>
			<language type="bho">Bhojpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol</language>
			<language type="bin">Bini</language>
			<language type="bla">Siksika</language>
			<language type="bm">Bambara</language>
			<language type="bn">Bengalees</language>
			<language type="bnt">Bantoe</language>
			<language type="bo">Tibetaans</language>
			<language type="br">Bretons</language>
			<language type="bra">Braj</language>
			<language type="bs">Bosnisch</language>
			<language type="btk">Batak</language>
			<language type="bua">Buriat</language>
			<language type="bug">Buginees</language>
			<language type="byn">Blin</language>
			<language type="ca">Catalaans</language>
			<language type="cad">Caddo</language>
			<language type="cai">Midden-Amerikaans Indiaanse taal</language>
			<language type="car">Caribisch</language>
			<language type="cau">Kaukasische taal</language>
			<language type="cch">Atsam</language>
			<language type="ce">Chechen</language>
			<language type="ceb">Cebuano</language>
			<language type="cel">Keltische taal</language>
			<language type="ch">Chamorro</language>
			<language type="chb">Chibcha</language>
			<language type="chg">Chagatai</language>
			<language type="chk">Chuukees</language>
			<language type="chm">Mari</language>
			<language type="chn">Chinook-jargon</language>
			<language type="cho">Choctaw</language>
			<language type="chp">Chipewyan</language>
			<language type="chr">Cherokee</language>
			<language type="chy">Cheyenne</language>
			<language type="cmc">Chamische talen</language>
			<language type="co">Corsicaans</language>
			<language type="cop">Koptisch</language>
			<language type="cpe">Op Engels gebaseerd Creools of Pidgin</language>
			<language type="cpf">Op Frans gebaseerd Creools of Pidgin</language>
			<language type="cpp">Op Portugees gebaseerd Creools of Pidgin</language>
			<language type="cr">Cree</language>
			<language type="crh">Krim-Tataars</language>
			<language type="crp">Creools of Pidgin</language>
			<language type="cs">Tsjechisch</language>
			<language type="csb">Kasjoebisch</language>
			<language type="cu">Kerkslavisch</language>
			<language type="cus">Koesjitische taal</language>
			<language type="cv">Tsjoevasjisch</language>
			<language type="cy">Welsh</language>
			<language type="da">Deens</language>
			<language type="dak">Dakota</language>
			<language type="dar">Dargwa</language>
			<language type="day">Dajak</language>
			<language type="de">Duits</language>
			<language type="de_AT">Oostenrijks Duits</language>
			<language type="de_CH">Zwitsers Hoogduits</language>
			<language type="del">Delaware</language>
			<language type="den">Slave</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka</language>
			<language type="doi">Dogri</language>
			<language type="dra">Dravidische taal</language>
			<language type="dsb">Nedersorbisch</language>
			<language type="dua">Duala</language>
			<language type="dum">Middelnederlands</language>
			<language type="dv">Divehi</language>
			<language type="dyu">Dyula</language>
			<language type="dz">Dzongkha</language>
			<language type="ee">Ewe</language>
			<language type="efi">Efik</language>
			<language type="egy">Oudegyptisch</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Grieks</language>
			<language type="elx">Elamitisch</language>
			<language type="en">Engels</language>
			<language type="en_AU">Australisch Engels</language>
			<language type="en_CA">Canadees Engels</language>
			<language type="en_GB">Brits Engels</language>
			<language type="en_US">Amerikaans Engels</language>
			<language type="enm">Middelengels</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spaans</language>
			<language type="es_419">Latijns-Amerikaans Spaans</language>
			<language type="es_ES">Iberisch Spaans</language>
			<language type="et">Estlands</language>
			<language type="eu">Baskisch</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Perzisch</language>
			<language type="fan">Fang</language>
			<language type="fat">Fanti</language>
			<language type="ff">Fulah</language>
			<language type="fi">Fins</language>
			<language type="fil">Filippijns</language>
			<language type="fiu">Fins-Oegrische taal</language>
			<language type="fj">Fijisch</language>
			<language type="fo">Faeröers</language>
			<language type="fon">Fon</language>
			<language type="fr">Frans</language>
			<language type="fr_CA">Canadees Frans</language>
			<language type="fr_CH">Zwitsers Frans</language>
			<language type="frm">Middelfrans</language>
			<language type="fro">Oudfrans</language>
			<language type="fur">Friulisch</language>
			<language type="fy">Fries</language>
			<language type="ga">Iers</language>
			<language type="gaa">Ga</language>
			<language type="gay">Gayo</language>
			<language type="gba">Gbaya</language>
			<language type="gd">Schots Gaelic</language>
			<language type="gem">Germaanse taal</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbertees</language>
			<language type="gl">Galicisch</language>
			<language type="gmh">Middelhoogduits</language>
			<language type="gn">Guarani</language>
			<language type="goh">Oudhoogduits</language>
			<language type="gon">Gondi</language>
			<language type="gor">Gorontalo</language>
			<language type="got">Gothisch</language>
			<language type="grb">Grebo</language>
			<language type="grc">Oudgrieks</language>
			<language type="gsw">Zwitsers Duits</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manx</language>
			<language type="gwi">Gwichʼin</language>
			<language type="ha">Hausa</language>
			<language type="hai">Haida</language>
			<language type="haw">Hawaïaans</language>
			<language type="he">Hebreeuws</language>
			<language type="hi">Hindi</language>
			<language type="hil">Hiligaynon</language>
			<language type="him">Himachali</language>
			<language type="hit">Hettitisch</language>
			<language type="hmn">Hmong</language>
			<language type="ho">Hiri Motu</language>
			<language type="hr">Kroatisch</language>
			<language type="hsb">Oppersorbisch</language>
			<language type="ht">Haïtiaans</language>
			<language type="hu">Hongaars</language>
			<language type="hup">Hupa</language>
			<language type="hy">Armeens</language>
			<language type="hz">Herero</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Indonesisch</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Ijo</language>
			<language type="ik">Inupiaq</language>
			<language type="ilo">Iloko</language>
			<language type="inc">Indische taal</language>
			<language type="ine">Indo-Europese taal</language>
			<language type="inh">Ingoesj</language>
			<language type="io">Ido</language>
			<language type="ira">Iraanse taal</language>
			<language type="iro">Irokese talen</language>
			<language type="is">IJslands</language>
			<language type="it">Italiaans</language>
			<language type="iu">Inuktitut</language>
			<language type="ja">Japans</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Judeo-Perzisch</language>
			<language type="jrb">Judeo-Arabisch</language>
			<language type="jv">Javaans</language>
			<language type="ka">Georgisch</language>
			<language type="kaa">Karakalpaks</language>
			<language type="kab">Kabyle</language>
			<language type="kac">Kachin</language>
			<language type="kaj">Jju</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karen</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardisch</language>
			<language type="kcg">Tyap</language>
			<language type="kfo">Koro</language>
			<language type="kg">Kongo</language>
			<language type="kha">Khasi</language>
			<language type="khi">Khoisan-taal</language>
			<language type="kho">Khotanees</language>
			<language type="ki">Kikuyu</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">Kazachs</language>
			<language type="kl">Kalaallisut</language>
			<language type="km">Khmer</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">Kannada</language>
			<language type="ko">Koreaans</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosraeaans</language>
			<language type="kpe">Kpelle</language>
			<language type="kr">Kanuri</language>
			<language type="krc">Karachay-Balkar</language>
			<language type="kro">Kru</language>
			<language type="kru">Kurukh</language>
			<language type="ks">Kashmiri</language>
			<language type="ku">Koerdisch</language>
			<language type="kum">Kumyk</language>
			<language type="kut">Kutenai</language>
			<language type="kv">Komi</language>
			<language type="kw">Cornish</language>
			<language type="ky">Kirgizisch</language>
			<language type="la">Latijn</language>
			<language type="lad">Ladino</language>
			<language type="lah">Lahnda</language>
			<language type="lam">Lamba</language>
			<language type="lb">Luxemburgs</language>
			<language type="lez">Lezgisch</language>
			<language type="lg">Ganda</language>
			<language type="li">Limburgs</language>
			<language type="ln">Lingala</language>
			<language type="lo">Lao</language>
			<language type="lol">Mongo</language>
			<language type="loz">Lozi</language>
			<language type="lt">Litouws</language>
			<language type="lu">Luba-Katanga</language>
			<language type="lua">Luba-Lulua</language>
			<language type="lui">Luiseno</language>
			<language type="lun">Lunda</language>
			<language type="luo">Luo</language>
			<language type="lus">Lushai</language>
			<language type="lv">Letlands</language>
			<language type="mad">Madurees</language>
			<language type="mag">Magahi</language>
			<language type="mai">Maithili</language>
			<language type="mak">Makassaars</language>
			<language type="man">Mandingo</language>
			<language type="map">Austronesisch</language>
			<language type="mas">Masai</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandar</language>
			<language type="men">Mende</language>
			<language type="mg">Malagasisch</language>
			<language type="mga">Middeliers</language>
			<language type="mh">Marshallees</language>
			<language type="mi">Maori</language>
			<language type="mic">Mi'kmaq</language>
			<language type="min">Minangkabau</language>
			<language type="mis">Diverse talen</language>
			<language type="mk">Macedonisch</language>
			<language type="mkh">Mon-Khmer-taal</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongools</language>
			<language type="mnc">Mantsjoe</language>
			<language type="mni">Manipoeri</language>
			<language type="mno">Manobo-talen</language>
			<language type="mo">Moldavisch</language>
			<language type="moh">Mohawk</language>
			<language type="mos">Mossi</language>
			<language type="mr">Marathi</language>
			<language type="ms">Maleis</language>
			<language type="mt">Maltees</language>
			<language type="mul">Meerdere talen</language>
			<language type="mun">Munda-talen</language>
			<language type="mus">Creek</language>
			<language type="mwl">Mirandees</language>
			<language type="mwr">Marwari</language>
			<language type="my">Birmees</language>
			<language type="myn">Mayan-talen</language>
			<language type="myv">Erzya</language>
			<language type="na">Nauru</language>
			<language type="nah">Nahuatl</language>
			<language type="nai">Noord-Amerikaans Indiaans</language>
			<language type="nap">Napolitaans</language>
			<language type="nb">Noors - Bokmål</language>
			<language type="nd">Noord-Ndbele</language>
			<language type="nds">Laagduits</language>
			<language type="ne">Nepalees</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nias</language>
			<language type="nic">Niger-Kordofanische taal</language>
			<language type="niu">Niueaans</language>
			<language type="nl">Nederlands</language>
			<language type="nl_BE">Vlaams</language>
			<language type="nn">Noors - Nynorsk</language>
			<language type="no">Noors</language>
			<language type="nog">Nogai</language>
			<language type="non">Oudnoors</language>
			<language type="nr">Zuid-Ndbele</language>
			<language type="nso">Noord-Sotho</language>
			<language type="nub">Nubische talen</language>
			<language type="nv">Navajo</language>
			<language type="nwc">Klassiek Newari</language>
			<language type="ny">Nyanja</language>
			<language type="nym">Nyamwezi</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Nyoro</language>
			<language type="nzi">Nzima</language>
			<language type="oc">Occitaans</language>
			<language type="oj">Ojibwa</language>
			<language type="om">Oromo</language>
			<language type="or">Oriya</language>
			<language type="os">Ossetisch</language>
			<language type="osa">Osage</language>
			<language type="ota">Ottomaans-Turks</language>
			<language type="oto">Otomi-talen</language>
			<language type="pa">Punjabi</language>
			<language type="paa">Papoeataal</language>
			<language type="pag">Pangasinan</language>
			<language type="pal">Pahlavi</language>
			<language type="pam">Pampanga</language>
			<language type="pap">Papiamento</language>
			<language type="pau">Palauaans</language>
			<language type="peo">Oudperzisch</language>
			<language type="phi">Filippijnse taal</language>
			<language type="phn">Foenicisch</language>
			<language type="pi">Pali</language>
			<language type="pl">Pools</language>
			<language type="pon">Pohnpeiaans</language>
			<language type="pra">Prakrit-talen</language>
			<language type="pro">Oudprovençaals</language>
			<language type="ps">Pasjtoe</language>
			<language type="pt">Portugees</language>
			<language type="pt_BR">Braziliaans Portugees</language>
			<language type="pt_PT">Iberisch Portugees</language>
			<language type="qu">Quechua</language>
			<language type="raj">Rajasthani</language>
			<language type="rap">Rapanui</language>
			<language type="rar">Rarotongan</language>
			<language type="rm">Reto-Romaans</language>
			<language type="rn">Rundi</language>
			<language type="ro">Roemeens</language>
			<language type="roa">Romaanse taal</language>
			<language type="rom">Romani</language>
			<language type="root">Root</language>
			<language type="ru">Russisch</language>
			<language type="rup">Aromaniaans</language>
			<language type="rw">Kinyarwanda</language>
			<language type="sa">Sanskriet</language>
			<language type="sad">Sandawe</language>
			<language type="sah">Yakut</language>
			<language type="sai">Zuid-Amerikaans Indiaanse taal</language>
			<language type="sal">Salishan-talen</language>
			<language type="sam">Samaritaans-Aramees</language>
			<language type="sas">Sasak</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardinisch</language>
			<language type="scn">Siciliaans</language>
			<language type="sco">Schots</language>
			<language type="sd">Sindhi</language>
			<language type="se">Noord-Samisch</language>
			<language type="sel">Selkup</language>
			<language type="sem">Semitische taal</language>
			<language type="sg">Sango</language>
			<language type="sga">Oudiers</language>
			<language type="sgn">Gebarentalen</language>
			<language type="sh">Servokroatisch</language>
			<language type="shn">Shan</language>
			<language type="si">Singalees</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Siouaanse talen</language>
			<language type="sit">Sino-Tibetaanse taal</language>
			<language type="sk">Slowaaks</language>
			<language type="sl">Sloveens</language>
			<language type="sla">Slavische taal</language>
			<language type="sm">Samoaans</language>
			<language type="sma">Zuid-Samisch</language>
			<language type="smi">Sami-taal</language>
			<language type="smj">Lule Sami</language>
			<language type="smn">Inari Sami</language>
			<language type="sms">Skolt Sami</language>
			<language type="sn">Shona</language>
			<language type="snk">Soninke</language>
			<language type="so">Somalisch</language>
			<language type="sog">Sogdisch</language>
			<language type="son">Songhai</language>
			<language type="sq">Albanees</language>
			<language type="sr">Servisch</language>
			<language type="srn">Sranantongo</language>
			<language type="srr">Serer</language>
			<language type="ss">Swati</language>
			<language type="ssa">Nilo-Saharaanse taal</language>
			<language type="st">Zuid-Sotho</language>
			<language type="su">Soendanees</language>
			<language type="suk">Sukuma</language>
			<language type="sus">Soesoe</language>
			<language type="sux">Soemerisch</language>
			<language type="sv">Zweeds</language>
			<language type="sw">Swahili</language>
			<language type="syr">Syriac</language>
			<language type="ta">Tamil</language>
			<language type="tai">Tai-taal</language>
			<language type="te">Teloegoe</language>
			<language type="tem">Timne</language>
			<language type="ter">Tereno</language>
			<language type="tet">Tetum</language>
			<language type="tg">Tadzjieks</language>
			<language type="th">Thais</language>
			<language type="ti">Tigrinya</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv</language>
			<language type="tk">Turkmeens</language>
			<language type="tkl">Tokelau</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tli">Tlingit</language>
			<language type="tmh">Tamashek</language>
			<language type="tn">Tswana</language>
			<language type="to">Tonga</language>
			<language type="tog">Nyasa Tonga</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">Turks</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Tsimshian</language>
			<language type="tt">Tataars</language>
			<language type="tum">Toemboeka</language>
			<language type="tup">Tupi-talen</language>
			<language type="tut">Altaïsche taal</language>
			<language type="tvl">Tuvalu</language>
			<language type="tw">Twi</language>
			<language type="ty">Tahitisch</language>
			<language type="tyv">Tuvinisch</language>
			<language type="udm">Udmurt</language>
			<language type="ug">Oeigoers</language>
			<language type="uga">Oegaritisch</language>
			<language type="uk">Oekraïens</language>
			<language type="umb">Umbundu</language>
			<language type="und">Onbepaald</language>
			<language type="ur">Urdu</language>
			<language type="uz">Oezbeeks</language>
			<language type="vai">Vai</language>
			<language type="ve">Venda</language>
			<language type="vi">Vietnamees</language>
			<language type="vo">Volapük</language>
			<language type="vot">Votisch</language>
			<language type="wa">Wallonisch</language>
			<language type="wak">Wakashan-talen</language>
			<language type="wal">Walamo</language>
			<language type="war">Waray</language>
			<language type="was">Washo</language>
			<language type="wen">Sorbische talen</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmyk</language>
			<language type="xh">Xhosa</language>
			<language type="yao">Yao</language>
			<language type="yap">Yapees</language>
			<language type="yi">Jiddisch</language>
			<language type="yo">Yoruba</language>
			<language type="ypk">Yupik-talen</language>
			<language type="za">Zhuang</language>
			<language type="zap">Zapotec</language>
			<language type="zen">Zenaga</language>
			<language type="zh">Chinees</language>
			<language type="zh_Hans">Vereenvoudigd Chinees</language>
			<language type="zh_Hant">Traditioneel Chinees</language>
			<language type="znd">Zande</language>
			<language type="zu">Zulu</language>
			<language type="zun">Zuni</language>
		</languages>
		<scripts>
			<script type="Arab">Arabisch</script>
			<script type="Armn">Armeens</script>
			<script type="Bali">Balinees</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengalees</script>
			<script type="Blis">Blissymbolen</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brahmi</script>
			<script type="Brai">Braille</script>
			<script type="Bugi">Buginees</script>
			<script type="Buhd">Buhid</script>
			<script type="Cans">Verenigde Canadese Aboriginal-symbolen</script>
			<script type="Cari">Carisch</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Cherokee</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Koptisch</script>
			<script type="Cprt">Cyprisch</script>
			<script type="Cyrl">Cyrillisch</script>
			<script type="Cyrs">Oudkerkslavisch Cyrillisch</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Egyptisch demotisch</script>
			<script type="Egyh">Egyptisch hiëratisch</script>
			<script type="Egyp">Egyptische hiërogliefen</script>
			<script type="Ethi">Ethiopisch</script>
			<script type="Geok">Georgisch Khutsuri</script>
			<script type="Geor">Georgisch</script>
			<script type="Glag">Glagolitisch</script>
			<script type="Goth">Gothisch</script>
			<script type="Grek">Grieks</script>
			<script type="Gujr">Gujarati</script>
			<script type="Guru">Gurmukhi</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Han</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Vereenvoudigd Han</script>
			<script type="Hant">Traditioneel Han</script>
			<script type="Hebr">Hebreeuws</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh Hmong</script>
			<script type="Hrkt">Katakana of Hiragana</script>
			<script type="Hung">Oudhongaars</script>
			<script type="Inds">Indus</script>
			<script type="Ital">Oud-italisch</script>
			<script type="Java">Javaans</script>
			<script type="Jpan">Japans</script>
			<script type="Kali">Kayah Li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Lao</script>
			<script type="Latf">Gotisch Latijn</script>
			<script type="Latg">Gaelisch Latijn</script>
			<script type="Latn">Latijn</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Lineair A</script>
			<script type="Linb">Lineair B</script>
			<script type="Lyci">Lycisch</script>
			<script type="Lydi">Lydisch</script>
			<script type="Mand">Mandaeans</script>
			<script type="Maya">Mayahiërogliefen</script>
			<script type="Mero">Meroïtisch</script>
			<script type="Mlym">Malayalam</script>
			<script type="Mong">Mongools</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei</script>
			<script type="Mymr">Myanmar</script>
			<script type="Nkoo">N’Ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Ol Chiki</script>
			<script type="Orkh">Orkhon</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Osmanya</script>
			<script type="Perm">Oudpermisch</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phnx">Foenicisch</script>
			<script type="Plrd">Pollard-fonetisch</script>
			<script type="Qaai">Overgeërfd</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runic</script>
			<script type="Sara">Sarati</script>
			<script type="Shaw">Shavian</script>
			<script type="Sinh">Sinhala</script>
			<script type="Sylo">Syloti Nagri</script>
			<script type="Syrc">Syriac</script>
			<script type="Syre">Estrangelo Aramees</script>
			<script type="Syrj">West-Aramees</script>
			<script type="Syrn">Oost-Aramees</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">Nieuw Tai Lue</script>
			<script type="Taml">Tamil</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Tifinagh</script>
			<script type="Tglg">Tagalog</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thais</script>
			<script type="Tibt">Tibetaans</script>
			<script type="Ugar">Ugaritisch</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Zichtbare spraak</script>
			<script type="Xpeo">Oudperzisch</script>
			<script type="Xsux">Sumero-Akkadian Cuneiform</script>
			<script type="Yiii">Yi</script>
			<script type="Zxxx">Code voor ongeschreven talen</script>
			<script type="Zyyy">Algemeen</script>
			<script type="Zzzz">Code voor ongecodeerde schriftsystemen</script>
		</scripts>
		<territories>
			<territory type="001">Wereld</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Noord-Amerika</territory>
			<territory type="005">Zuid-Amerika</territory>
			<territory type="009">Oceanië</territory>
			<territory type="011">West-Afrika</territory>
			<territory type="013">Midden-Amerika</territory>
			<territory type="014">Oost-Afrika</territory>
			<territory type="015">Noord-Afrika</territory>
			<territory type="017">Centraal-Afrika</territory>
			<territory type="018">Zuidelijk Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Noordelijk Amerika</territory>
			<territory type="029">Caribisch gebied</territory>
			<territory type="030">Oost-Azië</territory>
			<territory type="034">Zuid-Azië</territory>
			<territory type="035">Zuidoost-Azië</territory>
			<territory type="039">Zuid-Europa</territory>
			<territory type="053">Australië en Nieuw-Zeeland</territory>
			<territory type="054">Melanesië</territory>
			<territory type="057">Micronesische regio</territory>
			<territory type="061">Polynesië</territory>
			<territory type="062">Zuidelijk Centraal-Azië</territory>
			<territory type="142">Azië</territory>
			<territory type="143">Centraal-Azië</territory>
			<territory type="145">West-Azië</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Oost-Europa</territory>
			<territory type="154">Noord-Europa</territory>
			<territory type="155">West-Europa</territory>
			<territory type="172">Gemenebest van Onafhankelijke Staten</territory>
			<territory type="419">Latijns-Amerika en het Caribisch gebied</territory>
			<territory type="830">Kanaaleilanden</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Verenigde Arabische Emiraten</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua en Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanië</territory>
			<territory type="AM">Armenië</territory>
			<territory type="AN">Nederlandse Antillen</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentinië</territory>
			<territory type="AS">Amerikaans Samoa</territory>
			<territory type="AT">Oostenrijk</territory>
			<territory type="AU">Australië</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandeilanden</territory>
			<territory type="AZ">Azerbeidzjan</territory>
			<territory type="BA">Bosnië en Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">België</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarije</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brazilië</territory>
			<territory type="BS">Bahama’s</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouveteiland</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Wit-Rusland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Cocoseilanden</territory>
			<territory type="CD">Congo-Kinshasa</territory>
			<territory type="CF">Centraal-Afrikaanse Republiek</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Zwitserland</territory>
			<territory type="CI">Ivoorkust</territory>
			<territory type="CK">Cookeilanden</territory>
			<territory type="CL">Chili</territory>
			<territory type="CM">Kameroen</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Servië en Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Kaapverdië</territory>
			<territory type="CX">Christmaseiland</territory>
			<territory type="CY">Cyprus</territory>
			<territory type="CZ">Tsjechië</territory>
			<territory type="DE">Duitsland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Denemarken</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominicaanse Republiek</territory>
			<territory type="DZ">Algerije</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egypte</territory>
			<territory type="EH">Westelijke Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanje</territory>
			<territory type="ET">Ethiopië</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falklandeilanden</territory>
			<territory type="FM">Micronesië</territory>
			<territory type="FO">Faeröer</territory>
			<territory type="FR">Frankrijk</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Verenigd Koninkrijk</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgië</territory>
			<territory type="GF">Frans-Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groenland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Equatoriaal-Guinea</territory>
			<territory type="GR">Griekenland</territory>
			<territory type="GS">Zuid-Georgië en Zuidelijke Sandwicheilanden</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinee-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- en McDonaldeilanden</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatië</territory>
			<territory type="HT">Haïti</territory>
			<territory type="HU">Hongarije</territory>
			<territory type="ID">Indonesië</territory>
			<territory type="IE">Ierland</territory>
			<territory type="IL">Israël</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Britse Gebieden in de Indische Oceaan</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">IJsland</territory>
			<territory type="IT">Italië</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordanië</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgizië</territory>
			<territory type="KH">Cambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoren</territory>
			<territory type="KN">Saint Kitts en Nevis</territory>
			<territory type="KP">Noord-Korea</territory>
			<territory type="KR">Zuid-Korea</territory>
			<territory type="KW">Koeweit</territory>
			<territory type="KY">Caymaneilanden</territory>
			<territory type="KZ">Kazachstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litouwen</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Letland</territory>
			<territory type="LY">Libië</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldavië</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Sint-Maarten</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalleilanden</territory>
			<territory type="MK">Macedonië</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolië</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Noordelijke Marianeneilanden</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritanië</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldiven</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Maleisië</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibië</territory>
			<territory type="NC">Nieuw-Caledonië</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkeiland</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederland</territory>
			<territory type="NO">Noorwegen</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nieuw-Zeeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Frans-Polynesië</territory>
			<territory type="PG">Papoea-Nieuw-Guinea</territory>
			<territory type="PH">Filipijnen</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">Saint Pierre en Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestijns Gebied</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Oceanië (overige)</territory>
			<territory type="QU">Europese Unie</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Roemenië</territory>
			<territory type="RS">Servië</territory>
			<territory type="RU">Rusland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saoedi-Arabië</territory>
			<territory type="SB">Salomonseilanden</territory>
			<territory type="SC">Seychellen</territory>
			<territory type="SD">Soedan</territory>
			<territory type="SE">Zweden</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Sint-Helena</territory>
			<territory type="SI">Slovenië</territory>
			<territory type="SJ">Svalbard en Jan Mayen</territory>
			<territory type="SK">Slowakije</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalië</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tomé en Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syrië</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks- en Caicoseilanden</territory>
			<territory type="TD">Tsjaad</territory>
			<territory type="TF">Franse Gebieden in de zuidelijke Indische Oceaan</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadzjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Oost-Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunesië</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkije</territory>
			<territory type="TT">Trinidad en Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Oekraïne</territory>
			<territory type="UG">Oeganda</territory>
			<territory type="UM">Amerikaanse kleinere afgelegen eilanden</territory>
			<territory type="US">Verenigde Staten</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Oezbekistan</territory>
			<territory type="VA">Vaticaanstad</territory>
			<territory type="VC">Saint Vincent en de Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britse Maagdeneilanden</territory>
			<territory type="VI">Amerikaanse Maagdeneilanden</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis en Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Zuid-Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Onbekend of onjuist gebied</territory>
		</territories>
		<variants>
			<variant type="1901">Traditionele Duitse spelling</variant>
			<variant type="1996">Duitse spelling van 1996</variant>
			<variant type="AREVELA">Oost-Armeens</variant>
			<variant type="AREVMDA">West-Armeens</variant>
			<variant type="BISKE">San Giorgio/Bila-dialect</variant>
			<variant type="BOONT">Boontling</variant>
			<variant type="FONIPA">Internationaal Fonetisch Alfabet</variant>
			<variant type="FONUPA">Oeralisch Fonetisch Alfabet</variant>
			<variant type="MONOTON">Monotonaal</variant>
			<variant type="NEDIS">Natisone-dialect</variant>
			<variant type="NJIVA">Gniva/Njiva-dialect</variant>
			<variant type="OSOJS">Oseacco/Osojane-dialect</variant>
			<variant type="POLYTON">Polytonaal</variant>
			<variant type="POSIX">Computer</variant>
			<variant type="REVISED">Gewijzigde spelling</variant>
			<variant type="ROZAJ">Resiaans</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOUSE">Liverpools (Scouse)</variant>
			<variant type="SOLBA">Stolvizza/Solbica-dialect</variant>
		</variants>
		<keys>
			<key type="calendar">Kalender</key>
			<key type="collation">Volgorde</key>
			<key type="currency">Munteenheid</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Traditioneel Chinees</type>
			<type type="buddhist" key="calendar">Boeddhistische kalender</type>
			<type type="chinese" key="calendar">Chinese kalender</type>
			<type type="direct" key="collation">Directe sorteervolgorde</type>
			<type type="gb2312han" key="collation">Vereenvoudigd Chinees</type>
			<type type="gregorian" key="calendar">Gregoriaanse kalender</type>
			<type type="hebrew" key="calendar">Hebreeuwse kalender</type>
			<type type="indian" key="calendar">Indiase nationale kalender</type>
			<type type="islamic" key="calendar">Islamitische kalender</type>
			<type type="islamic-civil" key="calendar">Islamitische kalender (cyclisch)</type>
			<type type="japanese" key="calendar">Japanse kalender</type>
			<type type="phonebook" key="collation">Telefoonboeksorteervolgorde</type>
			<type type="pinyin" key="collation">Pinyinvolgorde</type>
			<type type="roc" key="calendar">Kalender van de Chinese Republiek</type>
			<type type="stroke" key="collation">Streeksorteervolgorde</type>
			<type type="traditional" key="collation">Traditionele sorteervolgorde</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Amerikaans</measurementSystemName>
			<measurementSystemName type="metric">Metriek</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Taal: {0}</codePattern>
			<codePattern type="script">Schrift: {0}</codePattern>
			<codePattern type="territory">Regio: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="currency">lowercase-words</inText>
		<inText type="measurementSystemNames">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á ä b-e é ë f-i í ï {ij} j-o ó ö p-u ú ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[å ã ç ñ ô]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mrt</month>
							<month type="4">apr</month>
							<month type="5">mei</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januari</month>
							<month type="2">februari</month>
							<month type="3">maart</month>
							<month type="4">april</month>
							<month type="5">mei</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">augustus</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">zo</day>
							<day type="mon">ma</day>
							<day type="tue">di</day>
							<day type="wed">wo</day>
							<day type="thu">do</day>
							<day type="fri">vr</day>
							<day type="sat">za</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">zondag</day>
							<day type="mon">maandag</day>
							<day type="tue">dinsdag</day>
							<day type="wed">woensdag</day>
							<day type="thu">donderdag</day>
							<day type="fri">vrijdag</day>
							<day type="sat">zaterdag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Z</day>
							<day type="mon">M</day>
							<day type="tue">D</day>
							<day type="wed">W</day>
							<day type="thu">D</day>
							<day type="fri">V</day>
							<day type="sat">Z</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1e kwartaal</quarter>
							<quarter type="2">2e kwartaal</quarter>
							<quarter type="3">3e kwartaal</quarter>
							<quarter type="4">4e kwartaal</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Voor Christus</era>
						<era type="1">Anno Domini</era>
					</eraNames>
					<eraAbbr>
						<era type="0">v. Chr.</era>
						<era type="1">n. Chr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d-MMM</dateFormatItem>
						<dateFormatItem id="MMd">d-MM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M-yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM-yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd-MM - E dd-MM</greatestDifference>
							<greatestDifference id="d">E dd-MM - E dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM - E d MMM</greatestDifference>
							<greatestDifference id="d">E d - E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd-MM - dd-MM</greatestDifference>
							<greatestDifference id="d">dd-MM - dd-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM-yy - MM-yy</greatestDifference>
							<greatestDifference id="y">MM-yy - MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="d">E dd-MM-yy - E dd-MM-yy</greatestDifference>
							<greatestDifference id="y">E dd-MM-yy - E dd-MM-yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM–MM– yyyy</greatestDifference>
							<greatestDifference id="y">MM-yyyy – MM-yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="d">dd-MM-yy - dd-MM-yy</greatestDifference>
							<greatestDifference id="y">dd-MM-yy - dd-MM-yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Tijdperk</displayName>
					</field>
					<field type="year">
						<displayName>Jaar</displayName>
					</field>
					<field type="month">
						<displayName>Maand</displayName>
					</field>
					<field type="week">
						<displayName>Week</displayName>
					</field>
					<field type="day">
						<displayName>Dag</displayName>
						<relative type="0">Vandaag</relative>
						<relative type="1">Morgen</relative>
						<relative type="2">Overmorgen</relative>
						<relative type="3">Over drie dagen</relative>
						<relative type="-1">Gisteren</relative>
						<relative type="-2">Eergisteren</relative>
						<relative type="-3">Drie dagen geleden</relative>
					</field>
					<field type="weekday">
						<displayName>Dag van de week</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>Uur</displayName>
					</field>
					<field type="minute">
						<displayName>Minuut</displayName>
					</field>
					<field type="second">
						<displayName>Seconde</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Tisjrie</month>
							<month type="2">Chesjwan</month>
							<month type="5">Sjevat</month>
							<month type="6">Adar</month>
							<month type="7">Adar B</month>
							<month type="9">Ijar</month>
							<month type="11">Tammoez</month>
							<month type="13">Elloel</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Moeharram</month>
							<month type="3">Rabiʻa al awal</month>
							<month type="4">Rabiʻa al thani</month>
							<month type="5">Joemadʻal awal</month>
							<month type="6">Joemadʻal thani</month>
							<month type="8">Sjaʻaban</month>
							<month type="10">Sjawal</month>
							<month type="11">Doe al kaʻaba</month>
							<month type="12">Doe al hizja</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">Saʻna Hizjria</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}-tijd</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Onbekend</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Zuidpool</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Río Gallegos</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wenen</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Bakoe</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brussel</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Pôrto Velho</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Montréal</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Cocoseilanden</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Paaseiland</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Sjanghai</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotá</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kaapverdië</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Christmaseiland</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlijn</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhagen</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmara</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Canarische Eilanden</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Pohnpei</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Faeröer</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Parijs</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londen</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athene</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Zuid-Georgië</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Boedapest</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jeruzalem</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Bisjkek</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Enderbury-eiland</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Koeweit</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aqtöbe</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma-Ata</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beiroet</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulaanbaator</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldiven</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexico-stad</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Nouméa</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Kathmandu</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Marquesaseilanden</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Gambier-eilanden</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Manilla</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warschau</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azoren</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Boekarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskou</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinenburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkoetsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakoetsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamtsjatka</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riyad</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Mahé</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Khartoem</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sint-Helena</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Sao Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Turks Eilanden</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Lomé</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dusjanbe</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Asjchabad</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Istanboel</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Oezjhorod</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporizja</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Wake-eiland</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Tasjkent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre-tijd</standard>
					<daylight>Acre-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afghaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Centraal-Afrikaanse tijd</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Oost-Afrikaanse tijd</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Zuid-Afrikaanse tijd</generic>
					<standard>Zuid-Afrikaanse standaardtijd</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>West-Afrikaanse tijd</standard>
					<daylight>West-Afrikaanse zomertijd</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk-tijd</standard>
					<daylight>Aktyubinsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska-tijd</generic>
					<standard>Alaska - standaardtijd</standard>
					<daylight>Alaska - zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaska-Hawaii-tijd</generic>
					<standard>Alaska-Hawaii-standaardtijd</standard>
					<daylight>Alaska-Hawaii-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Alma-Ata-tijd</standard>
					<daylight>Alma-Ata-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazone-tijd</standard>
					<daylight>Amazone-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Central-tijd</generic>
					<standard>Central-standaardtijd</standard>
					<daylight>Central-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Eastern-tijd</generic>
					<standard>Eastern-standaardtijd</standard>
					<daylight>Eastern-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Mountain-tijd</generic>
					<standard>Mountain-standaardtijd</standard>
					<daylight>Mountain-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Pacific-tijd</generic>
					<standard>Pacific-standaardtijd</standard>
					<daylight>Pacific-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Anadyr-tijd</standard>
					<daylight>Anadyr-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aqtau-tijd</standard>
					<daylight>Aqtau-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aqtöbe-tijd</standard>
					<daylight>Aqtöbe-zomertijd</daylight>
				</long>
				<short>
					<standard>AQTT (Aqtöbe)</standard>
					<daylight>AQTST (Aqtöbe)</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arabische tijd</generic>
					<standard>Arabische standaardtijd</standard>
					<daylight>Arabische zomertijd</daylight>
				</long>
				<short>
					<generic>AT (Arabisch)</generic>
					<standard>AST (Arabisch)</standard>
					<daylight>ADT (Arabisch)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentijnse tijd</standard>
					<daylight>Argentijnse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>West-Argentijnse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Armeense tijd</standard>
					<daylight>Armeense zomertijd</daylight>
				</long>
				<short>
					<standard>AMT (Armenië)</standard>
					<daylight>AMST (Armenië)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Ashkhabad-tijd</standard>
					<daylight>Ashkhabad-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlantic-tijd</generic>
					<standard>Atlantic - standaardtijd</standard>
					<daylight>Atlantic - zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Midden-Australische tijd</generic>
					<standard>Midden-Australische standaardtijd</standard>
					<daylight>Midden-Australische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Midden-Australische westelijke tijd</generic>
					<standard>Midden-Australische westelijke standaardtijd</standard>
					<daylight>Midden-Australische westelijke zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Oost-Australische tijd</generic>
					<standard>Oost-Australische standaardtijd</standard>
					<daylight>Oost-Australische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>West-Australische tijd</generic>
					<standard>West-Australische standaardtijd</standard>
					<daylight>West-Australische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>Azerbeidzjaanse tijd</standard>
					<daylight>Azerbeidzjaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Azoren-tijd</standard>
					<daylight>Azoren-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Bakoe-tijd</standard>
					<daylight>Bakoe-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Bengalese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering-tijd</generic>
					<standard>Bering-standaardtijd</standard>
					<daylight>Bering-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Bhutaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Boliviaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Borneose tijd</standard>
					<daylight>Borneose zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Braziliaanse tijd</standard>
					<daylight>Braziliaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>Bruneise tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Kaapverdische tijd</standard>
					<daylight>Kaapverdische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>Chamorro-tijd</generic>
					<standard>Chamorro-standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Changbai-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Chatham-standaardtijd</standard>
					<daylight>Chatham-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Chileense tijd</standard>
					<daylight>Chileense zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<generic>Chinese tijd</generic>
					<standard>Chinese standaardtijd</standard>
					<daylight>Chinese zomertijd</daylight>
				</long>
				<short>
					<generic>CT (China)</generic>
					<standard>CST (China)</standard>
					<daylight>CDT (China)</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Choibalsan-tijd</standard>
					<daylight>Choibalsan-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Christmaseilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Cocoseilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Colombiaanse tijd</standard>
					<daylight>Colombiaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>Cookeilandse tijd</standard>
					<daylight>Cookeilandse halve zomertijd</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Cubaanse tijd</generic>
					<standard>Cubaanse standaardtijd</standard>
					<daylight>Cubaanse zomertijd</daylight>
				</long>
				<short>
					<standard>CST (Cuba)</standard>
					<daylight>CDT (Cuba)</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Dhaka-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Davis-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dominican">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Dumont-d'Urville-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Dushanbe-tijd</standard>
					<daylight>Dushanbe-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Nederlands-Guyaanse tijd</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>Oost-Timorese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Paaseilandse tijd</standard>
					<daylight>Paaseilandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ecuadoriaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Midden-Europese standaardtijd</standard>
					<daylight>Midden-Europese zomertijd</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Oost-Europese standaardtijd</standard>
					<daylight>Oost-Europese zomertijd</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>West-Europese tijd</standard>
					<daylight>West-Europese zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Falklandeilandse tijd</standard>
					<daylight>Falklandeilandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>Fijische tijd</standard>
					<daylight>Fijische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Frans-Guyaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>Franse zuidelijke en Antarctische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Frunze-tijd</standard>
					<daylight>Frunze-zomertijd</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich Mean Time</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Galapagoseilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Gambiereilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Georgia-tijd</standard>
					<daylight>Georgia-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Gilberteilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Goose_Bay">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Centraal-Groenlandse tijd</standard>
					<daylight>Centraal-Groenlandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Oost-Groenlandse tijd</standard>
					<daylight>Oost-Groenlandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>West-Groenlandse tijd</standard>
					<daylight>West-Groenlandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Guamese standaardtijd</standard>
				</long>
				<short>
					<standard>GST (Guam)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>Golf-tijd</generic>
					<standard>Golf-standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Guyaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Hawaii-Aleoetische standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hongkong-tijd</standard>
					<daylight>Hongkong-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Hovd-tijd</standard>
					<daylight>Hovd-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Indiaase standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Indische Oceaan-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Indochinese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Centraal-Indonesische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Oost-Indonesische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>West-Indonesische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>Iraanse standaardtijd</standard>
					<daylight>Iraanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Irkoetsk-tijd</standard>
					<daylight>Irkoetsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>Israëlische tijd</generic>
					<standard>Israëlische standaardtijd</standard>
					<daylight>Israëlische zomertijd</daylight>
				</long>
				<short>
					<standard>IST (Israël)</standard>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Japanse tijd</generic>
					<standard>Japanse standaardtijd</standard>
					<daylight>Japanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Petropavlovsk-Kamtsjatski-tijd</standard>
					<daylight>Petropavlovsk-Kamtsjatski-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karachi-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Kashgar-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>Oost-Kazachse tijd</generic>
					<standard>Oost-Kazachse standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>West-Kazachse tijd</generic>
					<standard>West-Kazachse standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Kizilorda-tijd</standard>
					<daylight>Kizilorda-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Koreaanse tijd</generic>
					<standard>Koreaanse standaardtijd</standard>
					<daylight>Koreaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Kosraese tijd</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Krasnojarsk-tijd</standard>
					<daylight>Krasnojarsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<generic>Kuybyshev standaardtijd</generic>
					<standard>Kuybyshev-tijd</standard>
					<daylight>Kuybyshev-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Kwajaleinse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Kirgizische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Lanka-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Line-eilandse tijd</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Long-Shu-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Lord Howe-tijd</generic>
					<standard>Lord Howe-standaardtijd</standard>
					<daylight>Lord Howe-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Macause tijd</standard>
					<daylight>Macause zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Magadan-tijd</standard>
					<daylight>Magadan-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Malakka-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Maleisische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Maldivische tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Marquesaseilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Marshalleilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Mauritiaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Mawson-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Ulaanbaatar-tijd</standard>
					<daylight>Ulaanbaatar-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moskou-tijd</generic>
					<standard>Moskou-standaardtijd</standard>
					<daylight>Moskou-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Myanmarese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Nauruaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Nepalese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>Nieuw-Caledonische tijd</standard>
					<daylight>Nieuw-Caledonische zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Nieuw-Zeelandse tijd</generic>
					<standard>Nieuw-Zeelandse standaardtijd</standard>
					<daylight>Nieuw-Zeelandse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Newfoundland-tijd</generic>
					<standard>Newfoundland-standaardtijd</standard>
					<daylight>Newfoundland-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>Niuese tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>Norfolkeilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Fernando de Noronha-tijd</standard>
					<daylight>Fernando de Noronha-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>Noordelijk Mariaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Novosibirsk-tijd</standard>
					<daylight>Novosibirsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Omsk-tijd</standard>
					<daylight>Omsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Oral">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Pakistaanse tijd</standard>
					<daylight>Pakistaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>Belause tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>Papoea-Nieuw-Guinea-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paraguayaanse tijd</standard>
					<daylight>Paraguayaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Peruaanse tijd</standard>
					<daylight>Peruaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Filipijnse tijd</standard>
					<daylight>Filipijnse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Phoenixeilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre en Miquelon-tijd</generic>
					<standard>Pierre en Miquelon-standaardtijd</standard>
					<daylight>Pierre en Miquelon-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>Pitcairnse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Pohnpeise tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Qyzylorda-tijd</standard>
					<daylight>Qyzylorda-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Réunionse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Rothera-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Sachalin-tijd</standard>
					<daylight>Sachalin-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samara-tijd</standard>
					<daylight>Samara-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Samarkand-tijd</standard>
					<daylight>Samarkand-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Samoaanse standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Seychelse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Shevchenko-tijd</standard>
					<daylight>Shevchenko-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>Singaporese standaardtijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>Solomoneilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>Zuid-Georgische tijd</standard>
				</long>
				<short>
					<standard>GST (Z. Georgië)</standard>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Surinaamse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Sverdlovsk-tijd</standard>
					<daylight>Sverdlovsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Syowa-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>Tahitiaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Tadzjiekse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Tasjkent-tijd</standard>
					<daylight>Tasjkent-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Tbilisi-tijd</standard>
					<daylight>Tbilisi-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>Tokelause tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>Tongaanse tijd</standard>
					<daylight>Tongaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Chuukse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Turkse tijd</standard>
					<daylight>Turkse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Turkmeense tijd</standard>
					<daylight>Turkmeense zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>Tuvaluaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Oral-tijd</standard>
					<daylight>Oral-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Uruguayaanse tijd</standard>
					<daylight>Uruguayaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Ürümqi-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Oezbeekse tijd</standard>
					<daylight>Oezbeekse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>Vanuatuaanse tijd</standard>
					<daylight>Vanuatuaanse zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venezolaanse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Vladivostok-tijd</standard>
					<daylight>Vladivostok-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Wolgograd-tijd</standard>
					<daylight>Wolgograd-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Vostok-tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Wake-eilandse tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>Wallis en Futunase tijd</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Jakoetsk-tijd</standard>
					<daylight>Jakoetsk-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Jekaterinenburg-tijd</standard>
					<daylight>Jekaterinenburg-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Jerevan-tijd</standard>
					<daylight>Jerevan-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukon-tijd</generic>
					<standard>Yukon-standaardtijd</standard>
					<daylight>Yukon-zomertijd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤ #,##0.00-</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorrese peseta</displayName>
				<displayName count="one">Andorrese peseta</displayName>
				<displayName count="other">Andorrese peseta</displayName>
			</currency>
			<currency type="AED">
				<displayName>Verenigde Arabische Emiraten-dirham</displayName>
				<displayName count="one">Verenigde Arabische Emiraten-dirham</displayName>
				<displayName count="other">Verenigde Arabische Emiraten-dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghani (1927-2002)</displayName>
				<displayName count="one">Afghani (AFA)</displayName>
				<displayName count="other">Afghani (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghani</displayName>
				<displayName count="one">Afghani</displayName>
				<displayName count="other">Afghani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Albanese lek</displayName>
				<displayName count="one">Albanese lek</displayName>
				<displayName count="other">Albanese lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Armeense dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Nederlands-Antilliaanse gulden</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolese kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolese kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolese nieuwe kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolese kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentijnse austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentijnse peso (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentijnse peso</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Oostenrijkse schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australische dollar</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Arubaanse gulden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbeidzjaanse manat (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azerbeidzjaanse manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnische dinar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnische convertibele mark</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadaanse dollar</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bengalese taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belgische frank (convertibel)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgische frank</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belgische frank (financieel)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgaarse harde lev</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Bulgaarse nieuwe lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreinse dinar</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundese franc</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda-dollar</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Bruneise dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Boliviaanse peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Boliviaanse mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Braziliaanse cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Braziliaanse cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Braziliaanse cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Braziliaanse real</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Braziliaanse cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Braziliaanse cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamaanse dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutaanse ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Birmese kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswaanse pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Wit-Russische nieuwe roebel (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Wit-Russische roebel</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belizaanse dollar</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Canadese dollar</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Congolese franc</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR euro</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Zwitserse franc</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR franc</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Chileense unidades de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chileense peso</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Chinese yuan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Colombiaanse peso</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidad de Valor Real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Costaricaanse colón</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Oude Servische dinar</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Tsjechoslowaakse harde koruna</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Cubaanse peso</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Kaapverdische escudo</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Cyprisch pond</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Tsjechische koruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Oost-Duitse ostmark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Duitse mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djiboutiaanse franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Deense kroon</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominicaanse peso</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Algerijnse dinar</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadoraanse sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuadoraanse unidad de valor constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estlandse kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptisch pond</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Ekwele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrese nakfa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Spaanse peseta (account A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Spaanse peseta (convertibele account)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spaanse peseta</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Ethiopische birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finse markka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fiji dollar</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falklandeilands pond</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franse franc</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Brits pond sterling</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgische kupon larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Georgische lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ghanese cedi (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghanese cedi</displayName>
				<symbol>GH¢</symbol>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltarees pond</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambiaanse dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guinese franc</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guinese syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Equatoriaal-Guinese ekwele guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Griekse drachme</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemalteekse quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portugees-Guinese escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinee-Bissause peso</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyaanse dollar</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hongkongse dollar</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Hondurese lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Kroatische dinar</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kroatische kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haïtiaanse gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Hongaarse forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonesische rupiah</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Iers pond</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Israëlisch pond</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Israëlische nieuwe shekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indiase rupee</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Iraakse dinar</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iraanse rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>IJslandse kroon</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italiaanse lire</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaicaanse dollar</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordaanse dinar</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japanse yen</displayName>
				<symbol>JPY</symbol>
			</currency>
			<currency type="KES">
				<displayName>Keniaanse shilling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kirgizische som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Cambodjaanse riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comorese franc</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Noord-Koreaanse won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Zuid-Koreaanse won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Koeweitse dinar</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Caymaneilandse dollar</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazachstaanse tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laotiaanse kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanees pond</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Srilankaanse rupee</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberiaanse dollar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesothaanse loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litouwse litas</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litouwse talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Luxemburgse convertibele franc</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxemburgse frank</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Luxemburgse financiële franc</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Letse lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Letse roebel</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libische dinar</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokkaanse dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokkaanse franc</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldavische leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Malagassische ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Malagassische franc</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Macedonische denar</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Malinese franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmarese kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongoolse tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macause pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritaanse ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Maltese lire</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltees pond</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritiaanse rupee</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldivische rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawische kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexicaanse peso</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexicaanse zilveren peso (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexicaanse unidad de inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Maleisische ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambikaanse escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Oude Mozambikaanse metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Mozambikaanse metical</displayName>
				<symbol>MTN</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibische dollar</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigeriaanse naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nicaraguaanse córdoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nicaraguaanse  córdoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Nederlandse gulden</displayName>
				<symbol>fl</symbol>
			</currency>
			<currency type="NOK">
				<displayName>Noorse kroon</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalese rupee</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Nieuw-Zeelandse dollar</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Omaanse rial</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamese balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruaanse inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruaanse nieuwe sol</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruaanse sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papuaanse kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipijnse peso</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakistaanse rupee</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Poolse zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Poolse zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugese escudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguayaanse guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Qatarese rial</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Rhodesische dollar</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Oude Roemeense leu</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Roemeense leu</displayName>
				<symbol>lei</symbol>
			</currency>
			<currency type="RSD">
				<displayName>Servische dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russische roebel</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Russische roebel (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rwandese franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saoedische rial</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salomonseilandse dollar</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychelse rupee</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Soedanese dinar</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Soedanese pond</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Soedanees pond</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Zweedse kroon</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singaporese dollar</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Sint-Heleense pond</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Sloveense tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slowaakse koruna</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierraleoonse leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somalische shilling</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinaamse dollar</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surinaamse gulden</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Santomese dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Sovjet-roebel</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Salvadoraanse colón</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syrisch pond</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Swazische lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Thaise baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadzjikistaanse roebel</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadzjikistaanse somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmeense manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunesische dinar</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tongaanse paʻanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timorese escudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turkse lire</displayName>
				<displayName count="one">oude Turkse lira</displayName>
				<displayName count="other">oude Turkse lira</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Nieuwe Turkse lire</displayName>
				<displayName count="one">Turkse lira</displayName>
				<displayName count="other">Turkse lira</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad en Tobago-dollar</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Nieuwe Taiwanese dollar</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzaniaanse shilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Oekraïense hryvnia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Oekraïense karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Oegandese shilling (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Oegandese shilling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Amerikaanse dollar</displayName>
				<symbol>USD</symbol>
			</currency>
			<currency type="USN">
				<displayName>Amerikaanse dollar (volgende dag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Amerikaanse dollar (zelfde dag)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruguayaanse peso en geïndexeerde eenheden</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguayaanse peso (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguayaanse peso uruguayo</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Oezbekistaanse sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezolaanse bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Venezolaanse sterke bolivar</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>Vietnamese dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatuaanse vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>West-Samoaanse tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA-franc BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Zilver</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Goud</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Europese samengestelde eenheid</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Europese monetaire eenheid</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Europese rekeneenheid (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Europese rekeneenheid (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Oost-Caribische dollar</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Special Drawing Rights</displayName>
			</currency>
			<currency type="XEU">
				<displayName>European Currency Unit</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Franse gouden franc</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Franse UIC-franc</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA-franc BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP-franc</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Platina</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET-fondsen</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Valutacode voor testdoeleinden</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Geen valuta</displayName>
				<displayName count="one">onbekende/ongeldige munteenheid</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemenitische dinar</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemenitische rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Joegoslavische harde dinar</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Joegoslavische noviy-dinar</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Joegoslavische convertibele dinar</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Zuid-Afrikaanse rand (financieel)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Zuid-Afrikaanse rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambiaanse kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zaïrese nieuwe zaïre</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaïrese zaïre</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwaanse dollar</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dag</unitPattern>
			<unitPattern count="other">{0} dagen</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} uur</unitPattern>
			<unitPattern count="other">{0} uur</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuut</unitPattern>
			<unitPattern count="other">{0} minuten</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} maand</unitPattern>
			<unitPattern count="other">{0} maanden</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} seconde</unitPattern>
			<unitPattern count="other">{0} seconden</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} week</unitPattern>
			<unitPattern count="other">{0} weken</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} jaar</unitPattern>
			<unitPattern count="other">{0} jaar</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nee:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[_qc3�'�'Locale/Data/tn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Seburu</language>
			<language type="am">Amhariki</language>
			<language type="ar">Arabic</language>
			<language type="az">Azerbaijani</language>
			<language type="be">Belarusian</language>
			<language type="bg">Bulgarian</language>
			<language type="bh">Bihari</language>
			<language type="bn">Bengali</language>
			<language type="bs">SeBosnia</language>
			<language type="ca">Catalan</language>
			<language type="cs">Se Czeck</language>
			<language type="cy">Welsh</language>
			<language type="da">Danish</language>
			<language type="de">German</language>
			<language type="el">SeGerika</language>
			<language type="en">Sekgoa</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanish</language>
			<language type="et">Estonian</language>
			<language type="eu">Basque</language>
			<language type="fa">Mo/SePerishia</language>
			<language type="fi">Se-Finland</language>
			<language type="fil">Tagalog</language>
			<language type="fo">Faroese</language>
			<language type="fr">Se Fora</language>
			<language type="fy">Frisian</language>
			<language type="ga">Irish</language>
			<language type="gd">Scots Gaelic</language>
			<language type="gl">Galician</language>
			<language type="gu">Gujarati</language>
			<language type="he">Se heberu</language>
			<language type="hi">Hindi</language>
			<language type="hr">Croatian</language>
			<language type="hu">Hungarian</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesian</language>
			<language type="is">Icelandic</language>
			<language type="it">Se Italiano</language>
			<language type="ja">Se Japan</language>
			<language type="jv">Javanese</language>
			<language type="ka">Mo/SeJojia</language>
			<language type="kn">Kannada</language>
			<language type="ko">Se Korea</language>
			<language type="la">Latin</language>
			<language type="lt">Lithuanian</language>
			<language type="lv">Latvian</language>
			<language type="mk">Macedonian</language>
			<language type="ml">Malayalam</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malay</language>
			<language type="mt">Maltese</language>
			<language type="ne">Nepali</language>
			<language type="nl">Se Dutch</language>
			<language type="no">Puo ya kwa Norway</language>
			<language type="oc">Occitan</language>
			<language type="pa">Punjabi</language>
			<language type="pl">Se Poland</language>
			<language type="pt">Se  Potoketsi</language>
			<language type="ro">Se Roma</language>
			<language type="ru">Russian</language>
			<language type="sk">Slovak</language>
			<language type="sl">Slovenian</language>
			<language type="sq">Albanian</language>
			<language type="sr">Serbian</language>
			<language type="su">Mo/SeSundane</language>
			<language type="sv">Swedish</language>
			<language type="sw">Swahili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Thai</language>
			<language type="ti">Tigrinya</language>
			<language type="tlh">Klingon</language>
			<language type="tn">Setswana</language>
			<language type="tr">Turkish</language>
			<language type="uk">Ukrainian</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbek</language>
			<language type="vi">Vietnamese</language>
			<language type="xh">IsiXhosa</language>
			<language type="zu">IsiZulu</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b d e ê f-o ô p r-u w y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c q v x z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Fer</month>
							<month type="2">Tlh</month>
							<month type="3">Mop</month>
							<month type="4">Mor</month>
							<month type="5">Mot</month>
							<month type="6">See</month>
							<month type="7">Phu</month>
							<month type="8">Pha</month>
							<month type="9">Lwe</month>
							<month type="10">Dip</month>
							<month type="11">Ngw</month>
							<month type="12">Sed</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ferikgong</month>
							<month type="2">Tlhakole</month>
							<month type="3">Mopitlo</month>
							<month type="4">Moranang</month>
							<month type="5">Motsheganang</month>
							<month type="6">Seetebosigo</month>
							<month type="7">Phukwi</month>
							<month type="8">Phatwe</month>
							<month type="9">Lwetse</month>
							<month type="10">Diphalane</month>
							<month type="11">Ngwanatsele</month>
							<month type="12">Sedimonthole</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Tsh</day>
							<day type="mon">Mos</day>
							<day type="tue">Bed</day>
							<day type="wed">Rar</day>
							<day type="thu">Ne</day>
							<day type="fri">Tla</day>
							<day type="sat">Mat</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Tshipi</day>
							<day type="mon">Mosopulogo</day>
							<day type="tue">Labobedi</day>
							<day type="wed">Laboraro</day>
							<day type="thu">Labone</day>
							<day type="fri">Labotlhano</day>
							<day type="sat">Matlhatso</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[ώ�-�-Locale/Data/yo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.26 $"/>
		<generation date="$Date: 2008/06/15 18:49:21 $"/>
		<language type="yo"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Ede Afrikani</language>
			<language type="am">Ede Amharic</language>
			<language type="ar">Ede Arabia</language>
			<language type="as">Ti Assam</language>
			<language type="az">Ede Azerbaijani</language>
			<language type="be">Ede Belarusi</language>
			<language type="bg">Ede Bulgaria</language>
			<language type="bh">Ede Bihari</language>
			<language type="bn">Ede Bengali</language>
			<language type="br">Bretoni</language>
			<language type="bs">Ede Bosnia</language>
			<language type="ca">Ede Catala</language>
			<language type="cs">Orile-ede Tseki</language>
			<language type="cy">Ede Welshi</language>
			<language type="da">Èdè Ilẹ̀ Denmark</language>
			<language type="de">Èdè Ilẹ̀ Germany</language>
			<language type="el">giriki</language>
			<language type="en">Èdè Gẹ̀ẹ́sì</language>
			<language type="eo">Ede Esperanto</language>
			<language type="es">Panyan</language>
			<language type="et">Ede Estonia</language>
			<language type="eu">Ede Baski</language>
			<language type="fa">Ede Persia</language>
			<language type="fi">Finisi</language>
			<language type="fil">Ede Tagalogi</language>
			<language type="fo">Ede Faroesi</language>
			<language type="fr">Èdè Faransé</language>
			<language type="fy">Ede Frisia</language>
			<language type="ga">Ede Ireland</language>
			<language type="gd">Ede Gaelik ti Ilu Scotland</language>
			<language type="gl">Ede Galicia</language>
			<language type="gn">Guarani</language>
			<language type="gu">Ede Gujarati</language>
			<language type="he">Heberu</language>
			<language type="hi">Ede Hindi</language>
			<language type="hr">Ede Kroatia</language>
			<language type="hu">Ede Hungaria</language>
			<language type="hy">Ile Armenia</language>
			<language type="ia">Ede pipo</language>
			<language type="id">Ede Indonesia</language>
			<language type="ie">Iru Ede</language>
			<language type="is">Ede Icelandic</language>
			<language type="it">Italiani</language>
			<language type="ja">Japanisi</language>
			<language type="jv">Ede Javana</language>
			<language type="ka">Ede Georgia</language>
			<language type="km">Cambodian</language>
			<language type="kn">Ede Kannada</language>
			<language type="ko">Korean</language>
			<language type="ku">Kurdish</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Ede Latini</language>
			<language type="ln">Ta</language>
			<language type="lo">ara Laos</language>
			<language type="lt">Ede Lithuania</language>
			<language type="lv">Ede Latvianu</language>
			<language type="mk">Ede Macedonia</language>
			<language type="ml">Ede Malayalami</language>
			<language type="mn">ara Mangoli</language>
			<language type="mr">Ede marathi</language>
			<language type="ms">Ede Malaya</language>
			<language type="mt">Ede Malta</language>
			<language type="ne">Ede Nepali</language>
			<language type="nl">Ede Dutch</language>
			<language type="no">Ede Norway</language>
			<language type="oc">Ede Occitani</language>
			<language type="or">Oriya</language>
			<language type="pa">Ede Punjabi</language>
			<language type="pl">Èdè Ilẹ̀ Polandi</language>
			<language type="ps">Pashto</language>
			<language type="pt">Ede Portugi</language>
			<language type="pt_PT">Ede Portugal</language>
			<language type="ro">Ede Romania</language>
			<language type="ru">Ede Roosia</language>
			<language type="sa">ede awon ara Indo</language>
			<language type="sd">Sindhi</language>
			<language type="sh">Serbo-Croatiani</language>
			<language type="si">Ede Sinhalese</language>
			<language type="sk">Ede Slovaki</language>
			<language type="sl">Ede Slovenia</language>
			<language type="so">ara Somalia</language>
			<language type="sq">Ede Albania</language>
			<language type="sr">Ede Serbia</language>
			<language type="st">Sesoto</language>
			<language type="su">Ede Sudani</language>
			<language type="sv">suwidiisi</language>
			<language type="sw">Ede Swahili</language>
			<language type="ta">Ede Tamili</language>
			<language type="te">Ede Telugu</language>
			<language type="th">Ede Thai</language>
			<language type="ti">Ede Tigrinya</language>
			<language type="tk">Turkmen</language>
			<language type="tlh">Ede Klingoni</language>
			<language type="tr">Ede Turkey</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Ede Ukrani</language>
			<language type="ur">Ede Urdu</language>
			<language type="uz">Ede Uzbek</language>
			<language type="vi">Ede Vietnamu</language>
			<language type="xh">Ede Xhosa</language>
			<language type="yi">Yiddishi</language>
			<language type="yo">Yorùbá</language>
			<language type="zu">Ede Zulu</language>
		</languages>
		<territories>
			<territory type="BW">BW</territory>
			<territory type="NG">NG</territory>
			<territory type="TO">Tonga</territory>
		</territories>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á à b d e é è ẹ {ẹ́} {ẹ̀} f g {gb} h i í ì j-o ó ò ọ {ọ́} {ọ̀} p r s ṣ t u ú ù w y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c q v x z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ṣẹ́rẹ́</month>
							<month type="2">Èrèlè</month>
							<month type="3">Ẹrẹ̀nà</month>
							<month type="4">Ìgbé</month>
							<month type="5">Ẹ̀bibi</month>
							<month type="6">Òkúdu</month>
							<month type="7">Agẹmọ</month>
							<month type="8">Ògún</month>
							<month type="9">Owewe</month>
							<month type="10">Ọ̀wàrà</month>
							<month type="11">Bélú</month>
							<month type="12">Ọ̀pẹ̀</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Oṣù Ṣẹ́rẹ́</month>
							<month type="2">Oṣù Èrèlè</month>
							<month type="3">Oṣù Ẹrẹ̀nà</month>
							<month type="4">Oṣù Ìgbé</month>
							<month type="5">Oṣù Ẹ̀bibi</month>
							<month type="6">Oṣù Òkúdu</month>
							<month type="7">Oṣù Agẹmọ</month>
							<month type="8">Oṣù Ògún</month>
							<month type="9">Oṣù Owewe</month>
							<month type="10">Oṣù Ọ̀wàrà</month>
							<month type="11">Oṣù Bélú</month>
							<month type="12">Oṣù Ọ̀pẹ̀</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Àìkú</day>
							<day type="mon">Ajé</day>
							<day type="tue">Ìsẹ́gun</day>
							<day type="wed">Ọjọ́rú</day>
							<day type="thu">Àṣẹ̀ṣẹ̀dáiyé</day>
							<day type="fri">Ẹtì</day>
							<day type="sat">Àbámẹ́ta</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Ọjọ́ Àìkú</day>
							<day type="mon">Ọjọ́ Ajé</day>
							<day type="tue">Ọjọ́ Ìsẹ́gun</day>
							<day type="wed">Ọjọ́rú</day>
							<day type="thu">Ọjọ́ Àṣẹ̀ṣẹ̀dáiyé</day>
							<day type="fri">Ọjọ́ Ẹtì</day>
							<day type="sat">Ọjọ́ Àbámẹ́ta</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>àárọ̀</am>
				<pm>ọ̀sán</pm>
				<eras>
					<eraNames>
						<era type="0">Saju Kristi</era>
						<era type="1">Lehin Kristi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">SK</era>
						<era type="1">LK</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="day">
						<displayName>Ọjọ́</displayName>
						<relative type="0">ọ̀ní</relative>
						<relative type="1">ọ̣̀la</relative>
						<relative type="2">òtúùnla</relative>
						<relative type="3">ọjọ́mẹ́rin-òní</relative>
						<relative type="-1">ànón</relative>
						<relative type="-2">íjẹta</relative>
						<relative type="-3">íjẹrin</relative>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Africa/​Lagos/​exemplarCity</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>Naira</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[���BBLocale/Data/hy_AM_REVISED.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="hy"/>
		<territory type="AM"/>
		<variant type="REVISED"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Հնվ</month>
							<month type="2">Փտվ</month>
							<month type="6">Հնս</month>
							<month type="7">Հլս</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Հունվար</month>
							<month type="2">Փետրվար</month>
							<month type="6">Հունիս</month>
							<month type="7">Հուլիս</month>
						</monthWidth>
					</monthContext>
				</months>
				<pm>Կե․</pm>
				<eras>
					<eraAbbr>
						<era type="0">Մ․Թ․Ա․</era>
						<era type="1">Մ․Թ․</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
	</dates>
</ldml>
PKpG[p� �[0[0Locale/Data/ti.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ti"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">አፍሪቃንሰኛ</language>
			<language type="am">አምሐረኛ</language>
			<language type="ar">ዓረበኛ</language>
			<language type="az">አዜርባይጃንኛ</language>
			<language type="be">ቤላራሻኛ</language>
			<language type="bg">ቡልጋሪኛ</language>
			<language type="bh">ቢሃሪ</language>
			<language type="bn">በንጋሊኛ</language>
			<language type="br">ብሬቶን</language>
			<language type="bs">ቦስኒያን</language>
			<language type="ca">ካታላን</language>
			<language type="cs">ቼክኛ</language>
			<language type="cy">ወልሽ</language>
			<language type="da">ዴኒሽ</language>
			<language type="de">ጀርመን</language>
			<language type="el">ግሪከኛ</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="eo">ኤስፐራንቶ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="et">ኤስቶኒአን</language>
			<language type="eu">ባስክኛ</language>
			<language type="fa">ፐርሲያኛ</language>
			<language type="fi">ፊኒሽ</language>
			<language type="fil">ታጋሎገኛ</language>
			<language type="fo">ፋሮኛ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="fy">ፍሪሰኛ</language>
			<language type="ga">አይሪሽ</language>
			<language type="gd">እስኮትስ ጌልክኛ</language>
			<language type="gl">ጋለቪኛ</language>
			<language type="gn">ጓራኒ</language>
			<language type="gu">ጉጃራቲኛ</language>
			<language type="he">ዕብራስጥ</language>
			<language type="hi">ሕንደኛ</language>
			<language type="hr">ክሮሽያንኛ</language>
			<language type="hu">ሀንጋሪኛ</language>
			<language type="ia">ኢንቴር ቋንቋ</language>
			<language type="id">እንዶኑሲኛ</language>
			<language type="is">አይስላንደኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="jv">ጃቫንኛ</language>
			<language type="ka">ጊዮርጊያኛ</language>
			<language type="kn">ካማደኛ</language>
			<language type="ko">ኮሪያኛ</language>
			<language type="ku">ኩርድሽ</language>
			<language type="ky">ኪሩጋዚ</language>
			<language type="la">ላቲንኛ</language>
			<language type="lt">ሊቱአኒየን</language>
			<language type="lv">ላቲቪያን</language>
			<language type="mk">ማክዶኒኛ</language>
			<language type="ml">ማላያላምኛ</language>
			<language type="mr">ማራቲኛ</language>
			<language type="ms">ማላይኛ</language>
			<language type="mt">ማልቲስኛ</language>
			<language type="ne">ኔፖሊኛ</language>
			<language type="nl">ደች</language>
			<language type="nn">ኖርዌይኛ (ናይ ኝኖርስክ)</language>
			<language type="no">ኖርዌጂያን</language>
			<language type="oc">ኦኪታንኛ</language>
			<language type="or">ኦሪያ</language>
			<language type="pa">ፑንጃቢኛ</language>
			<language type="pl">ፖሊሽ</language>
			<language type="ps">ፓሽቶ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="pt_BR">ፖርቱጋልኛ (ናይ ብራዚል)</language>
			<language type="pt_PT">ፖርቱጋልኛ (ናይ ፖርቱጋል)</language>
			<language type="ro">ሮማኒያን</language>
			<language type="ru">ራሽኛ</language>
			<language type="sh">ሰርቦ- ክሮዊታን</language>
			<language type="si">ስንሃልኛ</language>
			<language type="sk">ስሎቨክኛ</language>
			<language type="sl">ስቁቪኛ</language>
			<language type="sq">አልቤኒኛ</language>
			<language type="sr">ሰርቢኛ</language>
			<language type="st">ሰሴቶ</language>
			<language type="su">ሱዳንኛ</language>
			<language type="sv">ስዊድንኛ</language>
			<language type="sw">ሰዋሂሊኛ</language>
			<language type="ta">ታሚልኛ</language>
			<language type="te">ተሉጉኛ</language>
			<language type="th">ታይኛ</language>
			<language type="ti">ትግርኛ</language>
			<language type="tk">ናይ ቱርኪ ሰብዓይ (ቱርካዊ)</language>
			<language type="tlh">ክሊንግኦንኛ</language>
			<language type="tr">ቱርከኛ</language>
			<language type="tw">ትዊ</language>
			<language type="uk">ዩክረኒኛ</language>
			<language type="ur">ኡርዱኛ</language>
			<language type="uz">ኡዝበክኛ</language>
			<language type="vi">ቪትናምኛ</language>
			<language type="xh">ዞሳኛ</language>
			<language type="yi">ዪዲሽ</language>
			<language type="zu">ዙሉኛ</language>
		</languages>
		<scripts>
			<script type="Ethi">ፊደል</script>
			<script type="Latn">ላቲን</script>
		</scripts>
		<territories>
			<alias source="am"/>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ሀ-ሆ ለ-ቆ ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዎ ዐ-ዖ ዘ-ዮ ደ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጠ-ፗ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[᎐-᎙ ሇ ⶀ ᎀ-ᎃ ⶁ-ⶄ ቇ ᎄ-ᎇ ⶅ-ⶇ ኇ ⶈ-ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ-ዿ ⶍ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ⶏ-ⶑ ፇ ᎈ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጃንዩ</month>
							<month type="2">ፌብሩ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረ</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስ</month>
							<month type="9">ሴፕቴ</month>
							<month type="10">ኦክተ</month>
							<month type="11">ኖቬም</month>
							<month type="12">ዲሴም</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጃንዩወሪ</month>
							<month type="2">ፌብሩወሪ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረል</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስት</month>
							<month type="9">ሴፕቴምበር</month>
							<month type="10">ኦክተውበር</month>
							<month type="11">ኖቬምበር</month>
							<month type="12">ዲሴምበር</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ጃ</month>
							<month type="2">ፌ</month>
							<month type="3">ማ</month>
							<month type="4">ኤ</month>
							<month type="5">ሜ</month>
							<month type="6">ጁ</month>
							<month type="7">ጁ</month>
							<month type="8">ኦ</month>
							<month type="9">ሴ</month>
							<month type="10">ኦ</month>
							<month type="11">ኖ</month>
							<month type="12">ዲ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ሰንበ</day>
							<day type="mon">ሰኑይ</day>
							<day type="tue">ሠሉስ</day>
							<day type="wed">ረቡዕ</day>
							<day type="thu">ኃሙስ</day>
							<day type="fri">ዓርቢ</day>
							<day type="sat">ቀዳም</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ሰንበት</day>
							<day type="mon">ሰኑይ</day>
							<day type="tue">ሠሉስ</day>
							<day type="wed">ረቡዕ</day>
							<day type="thu">ኃሙስ</day>
							<day type="fri">ዓርቢ</day>
							<day type="sat">ቀዳም</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ሰ</day>
							<day type="mon">ሰ</day>
							<day type="tue">ሠ</day>
							<day type="wed">ረ</day>
							<day type="thu">ኃ</day>
							<day type="fri">ዓ</day>
							<day type="sat">ቀ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ንጉሆ ሰዓተ</am>
				<pm>ድሕር ሰዓት</pm>
				<eras>
					<eraAbbr>
						<era type="0">ዓ/ዓ</era>
						<era type="1">ዓ/ም</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፣ dd MMMM መዓልቲ yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>አውሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
				<symbol>USD</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[y���$$Locale/Data/kpe_LR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kpe"/>
		<territory type="LR"/>
	</identity>
</ldml>
PKpG[��?���Locale/Data/ig.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ig"/>
	</identity>
	<characters>
		<exemplarCharacters>[a b {ch} d-g {gb} {gh} {gw} h i ị j k {kp} {kw} l-n ṅ {nw} {ny} o ọ p r s {sh} t u ụ v w y z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jen</month>
							<month type="2">Feb</month>
							<month type="3">Maa</month>
							<month type="4">Epr</month>
							<month type="5">Mee</month>
							<month type="6">Juu</month>
							<month type="7">Jul</month>
							<month type="8">Ọgọ</month>
							<month type="9">Sep</month>
							<month type="10">Ọkt</month>
							<month type="11">Nov</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Jenụwarị</month>
							<month type="2">Febrụwarị</month>
							<month type="3">Maachị</month>
							<month type="4">Eprel</month>
							<month type="5">Mee</month>
							<month type="6">Juun</month>
							<month type="7">Julaị</month>
							<month type="8">Ọgọọst</month>
							<month type="9">Septemba</month>
							<month type="10">Ọktoba</month>
							<month type="11">Novemba</month>
							<month type="12">Disemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ụka</day>
							<day type="mon">Mọn</day>
							<day type="tue">Tiu</day>
							<day type="wed">Wen</day>
							<day type="thu">Tọọ</day>
							<day type="fri">Fraị</day>
							<day type="sat">Sat</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Mbọsị Ụka</day>
							<day type="mon">Mọnde</day>
							<day type="tue">Tiuzdee</day>
							<day type="wed">Wenezdee</day>
							<day type="thu">Tọọzdee</day>
							<day type="fri">Fraịdee</day>
							<day type="sat">Satọdee</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>A.M.</am>
				<pm>P.M.</pm>
				<eras>
					<eraNames>
						<era type="0">Tupu Kristi</era>
						<era type="1">Afọ Kristi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">T.K.</era>
						<era type="1">A.K.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>Naịra</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[5SDDLocale/Data/es_PE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="PE"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH'H'mm''ss&quot; v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[2hwd�b�bLocale/Data/se.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.25 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="se"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikánsagiella</language>
			<language type="an">aragoniagiella</language>
			<language type="ang">boares eaŋgalasgiella</language>
			<language type="apa">apachegielat</language>
			<language type="ar">arábagiella</language>
			<language type="ast">asturiagiella</language>
			<language type="be">vilges-ruoššagiella</language>
			<language type="bg">bulgáriagiella</language>
			<language type="bn">bengalgiella</language>
			<language type="br">bretonagiella</language>
			<language type="bs">bosniagiella</language>
			<language type="ca">katalánagiella</language>
			<language type="cel">kelttalaš gielat</language>
			<language type="chm">marigiella</language>
			<language type="co">corsicagiella</language>
			<language type="cs">čeahkagiella</language>
			<language type="da">dánskkagiella</language>
			<language type="de">duiskkagiella</language>
			<language type="el">greikkagiella</language>
			<language type="en">eaŋgalsgiella</language>
			<language type="es">spánskkagiella</language>
			<language type="et">esttegiella</language>
			<language type="fa">persijagiella</language>
			<language type="fi">suomagiella</language>
			<language type="fiu">fenno-ugrálaš gielat</language>
			<language type="fo">fearagiella</language>
			<language type="fr">fránskkagiella</language>
			<language type="fy">friisagiella</language>
			<language type="ga">iirragiella</language>
			<language type="gem">germánalaš gielat</language>
			<language type="gu">gujaratagiella</language>
			<language type="gv">manksgiella</language>
			<language type="hi">hindigiella</language>
			<language type="hr">kroátiagiella</language>
			<language type="hy">armeenalaš gielat</language>
			<language type="is">islánddagiella</language>
			<language type="it">itáliagiella</language>
			<language type="krl">gárjilgiella</language>
			<language type="kv">komigiella</language>
			<language type="kw">kornagiella</language>
			<language type="la">láhtengiella</language>
			<language type="lb">luxemburggagiella</language>
			<language type="lt">liettuvagiella</language>
			<language type="lv">látviagiella</language>
			<language type="mdf">mokšagiella</language>
			<language type="mk">makedoniagiella</language>
			<language type="myv">ersagiella</language>
			<language type="nb">girjedárogiella</language>
			<language type="nl">hollánddagiella</language>
			<language type="nn">ođđadárogiella</language>
			<language type="no">dárogiella</language>
			<language type="oc">oksitánagiella</language>
			<language type="pl">polskkagiella</language>
			<language type="pt">portugálagiella</language>
			<language type="rm">retorománagiella</language>
			<language type="ro">romániagiella</language>
			<language type="roa">románalaš gielat</language>
			<language type="ru">ruoššagiella</language>
			<language type="sc">sardigiella</language>
			<language type="scn">sisiliagiella</language>
			<language type="se">davvisámegiella</language>
			<language type="sel">selkupagiella</language>
			<language type="sk">slovákiagiella</language>
			<language type="sl">slovenagiella</language>
			<language type="sma">lullisámegiella</language>
			<language type="smi">sámegielat</language>
			<language type="smj">julevsámegiella</language>
			<language type="smn">anárašgiella</language>
			<language type="sms">nuortalašgiella</language>
			<language type="sq">albánagiella</language>
			<language type="sr">serbiagiella</language>
			<language type="sv">ruoŧagiella</language>
			<language type="udm">udmurtagiella</language>
			<language type="uk">ukrainagiella</language>
			<language type="wa">vallonagiella</language>
			<language type="wen">sorbigiella</language>
		</languages>
		<scripts>
			<script type="Cyrl">kyrillalaš</script>
			<script type="Grek">greikkalaš</script>
			<script type="Latn">láhtenaš</script>
		</scripts>
		<territories>
			<territory type="001">máilbmi</territory>
			<territory type="002">Afrihkká</territory>
			<territory type="003">dávvi-Amerihkká ja gaska-Amerihkká</territory>
			<territory type="005">mátta-Amerihkká</territory>
			<territory type="009">Oseania</territory>
			<territory type="011">oarji-Afrihkká</territory>
			<territory type="013">gaska-Amerihkká</territory>
			<territory type="014">nuorta-Afrihkká</territory>
			<territory type="015">davvi-Afrihkká</territory>
			<territory type="017">gaska-Afrihkká</territory>
			<territory type="018">mátta-Afrihkká</territory>
			<territory type="019">Amerihkká</territory>
			<territory type="021">dávvi-Amerihkká</territory>
			<territory type="029">Karibia</territory>
			<territory type="030">nuorta-Ásia</territory>
			<territory type="034">mátta-Ásia</territory>
			<territory type="035">mátta-nuorta-Ásia</territory>
			<territory type="039">mátta-Eurohpá</territory>
			<territory type="053">Austrália ja Ođđa-Selánda</territory>
			<territory type="054">Melanesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">mátta-gaska-Ásia</territory>
			<territory type="142">Ásia</territory>
			<territory type="143">gaska-Ásia</territory>
			<territory type="145">oarji-Ásia</territory>
			<territory type="150">Eurohpá</territory>
			<territory type="151">nuorta-Eurohpá</territory>
			<territory type="154">davvi-Eurohpá</territory>
			<territory type="155">oarji-Eurohpá</territory>
			<territory type="419">Lulli-Amerihkká ja Karibia</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Ovttastuvvan Arábaemiráhtat</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua ja Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albánia</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antárktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerihká Samoa</territory>
			<territory type="AT">Nuortariika</territory>
			<territory type="AU">Austrália</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Ålánda</territory>
			<territory type="AZ">Aserbaižan</territory>
			<territory type="BA">Bosnia-Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgária</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Vilges-Ruošša</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanáda</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CG">Kongo-Brazzaville</territory>
			<territory type="CH">Šveica</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kiinná</territory>
			<territory type="CO">Kolombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CY">Kypros</territory>
			<territory type="CZ">Čeahkka</territory>
			<territory type="DE">Duiska</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Dánmárku</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estlánda</territory>
			<territory type="EG">Egypta</territory>
			<territory type="EH">Oarje-Sahára</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spánia</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Suopma</territory>
			<territory type="FJ">Fijisullot</territory>
			<territory type="FK">Falklandsullot</territory>
			<territory type="FM">Mikronesia</territory>
			<territory type="FO">Fearsullot</territory>
			<territory type="FR">Frankriika</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Stuorra-Británnia</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Frankriikka Guayana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Kalaallit Nunaat</territory>
			<territory type="GM">Gámbia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatoriála Guinea</territory>
			<territory type="GR">Greika</territory>
			<territory type="GS">Lulli Georgia ja Lulli Sandwich-sullot</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroátia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungár</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlánda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IN">India</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islánda</territory>
			<territory type="IT">Itália</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordánia</territory>
			<territory type="JP">Japána</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Kampučea</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorosullot</territory>
			<territory type="KN">Saint Kitts ja Nevis</territory>
			<territory type="KP">Davvi-Korea</territory>
			<territory type="KR">Mátta-Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KZ">Kasakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lietuva</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Látvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldávia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallsullot</territory>
			<territory type="MK">Makedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Burma</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Makáo</territory>
			<territory type="MP">Davvi-Mariánat</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauretánia</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Málta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Malediivvat</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malesia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Ođđa-Kaledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Vuolleeatnamat</territory>
			<territory type="NO">Norga</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Ođđa-Selánda</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PG">Papua-Ođđa-Guinea</territory>
			<territory type="PH">Filippiinnat</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">Saint Pierre ja Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestina</territory>
			<territory type="PT">Portugála</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QU">EU</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Románia</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Ruošša</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi-Arábia</territory>
			<territory type="SC">Seychellsullot</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Ruoŧŧa</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbárda ja Jan Mayen</territory>
			<territory type="SK">Slovákia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somália</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé ja Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Svazieana</territory>
			<territory type="TC">Turks ja Caicos-sullot</territory>
			<territory type="TD">Chad</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thaieana</territory>
			<territory type="TJ">Tažikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Nuorta-Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Durka</territory>
			<territory type="TT">Trinidad ja Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzánia</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="US">Amerihká ovttastuvvan stáhtat</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikána</territory>
			<territory type="VC">Saint Vincent ja Grenadine</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis ja Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Mátta-Afrihká</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
		<keys>
			<key type="calendar">kaleandar</key>
			<key type="currency">valuhtta</key>
		</keys>
		<measurementSystemNames>
			<measurementSystemName type="metric">SI</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">giella: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="currency">lowercase-words</inText>
		<inText type="fields">lowercase-words</inText>
		<inText type="keys">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="long">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
		<inText type="territories">titlecase-words</inText>
		<inText type="types">lowercase-words</inText>
		<inText type="variants">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á b c č d đ e-n ŋ o p r s š t ŧ u v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[à å ä æ ç é è ń ñ ó ò ö ø q ú ü w-y]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a á à å ä æ b c č d đ e é è f-n ń ŋ o ó ò ö ø p-s š t ŧ u ú v x-z ž]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>’</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<dateRangePattern>{0}–{1}</dateRangePattern>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ođđj</month>
							<month type="2">guov</month>
							<month type="3">njuk</month>
							<month type="4">cuo</month>
							<month type="5">mies</month>
							<month type="6">geas</month>
							<month type="7">suoi</month>
							<month type="8">borg</month>
							<month type="9">čakč</month>
							<month type="10">golg</month>
							<month type="11">skáb</month>
							<month type="12">juov</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ođđajagemánnu</month>
							<month type="2">guovvamánnu</month>
							<month type="3">njukčamánnu</month>
							<month type="4">cuoŋománnu</month>
							<month type="5">miessemánnu</month>
							<month type="6">geassemánnu</month>
							<month type="7">suoidnemánnu</month>
							<month type="8">borgemánnu</month>
							<month type="9">čakčamánnu</month>
							<month type="10">golggotmánnu</month>
							<month type="11">skábmamánnu</month>
							<month type="12">juovlamánnu</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">O</month>
							<month type="2">G</month>
							<month type="3">N</month>
							<month type="4">C</month>
							<month type="5">M</month>
							<month type="6">G</month>
							<month type="7">S</month>
							<month type="8">B</month>
							<month type="9">Č</month>
							<month type="10">G</month>
							<month type="11">S</month>
							<month type="12">J</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sotn</day>
							<day type="mon">vuos</day>
							<day type="tue">maŋ</day>
							<day type="wed">gask</day>
							<day type="thu">duor</day>
							<day type="fri">bear</day>
							<day type="sat">láv</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sotnabeaivi</day>
							<day type="mon">vuossárga</day>
							<day type="tue">maŋŋebárga</day>
							<day type="wed">gaskavahkku</day>
							<day type="thu">duorasdat</day>
							<day type="fri">bearjadat</day>
							<day type="sat">lávvardat</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">s</day>
							<day type="mon">v</day>
							<day type="tue">m</day>
							<day type="wed">g</day>
							<day type="thu">d</day>
							<day type="fri">b</day>
							<day type="sat">l</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Ovdal Kristtusa</era>
					</eraNames>
					<eraAbbr>
						<era type="0">OK</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="year">
						<displayName>jáhki</displayName>
					</field>
					<field type="month">
						<displayName>mánnu</displayName>
					</field>
					<field type="week">
						<displayName>váhkku</displayName>
					</field>
					<field type="day">
						<displayName>beaivi</displayName>
					</field>
					<field type="weekday">
						<displayName>váhkkubeaivi</displayName>
					</field>
					<field type="hour">
						<displayName>tiibmu</displayName>
					</field>
					<field type="minute">
						<displayName>minuhtta</displayName>
					</field>
					<field type="second">
						<displayName>sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>sone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{0} ({1})</fallbackFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>¤¤¤</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="FIM">
				<displayName>suoma márkki</displayName>
			</currency>
			<currency type="NOK">
				<displayName>norgga kruvdno</displayName>
			</currency>
			<currency type="SEK">
				<displayName>ruoŧŧa kruvdno</displayName>
			</currency>
			<currency type="XAG">
				<displayName>silba</displayName>
			</currency>
			<currency type="XAU">
				<displayName>golli</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>jo</yesstr>
			<nostr>ii</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�vM���Locale/Data/gez_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.39 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gez"/>
		<territory type="ET"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="ERN">
				<symbol>ERN</symbol>
			</currency>
			<currency type="ETB">
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[[
��Locale/Data/gv.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gv"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="gv">Gaelg</language>
		</languages>
		<territories>
			<territory type="GB">Rywvaneth Unys</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">J-guer</month>
							<month type="2">T-arree</month>
							<month type="3">Mayrnt</month>
							<month type="4">Avrril</month>
							<month type="5">Boaldyn</month>
							<month type="6">M-souree</month>
							<month type="7">J-souree</month>
							<month type="8">Luanistyn</month>
							<month type="9">M-fouyir</month>
							<month type="10">J-fouyir</month>
							<month type="11">M.Houney</month>
							<month type="12">M.Nollick</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Jerrey-geuree</month>
							<month type="2">Toshiaght-arree</month>
							<month type="3">Mayrnt</month>
							<month type="4">Averil</month>
							<month type="5">Boaldyn</month>
							<month type="6">Mean-souree</month>
							<month type="7">Jerrey-souree</month>
							<month type="8">Luanistyn</month>
							<month type="9">Mean-fouyir</month>
							<month type="10">Jerrey-fouyir</month>
							<month type="11">Mee Houney</month>
							<month type="12">Mee ny Nollick</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Jed</day>
							<day type="mon">Jel</day>
							<day type="tue">Jem</day>
							<day type="wed">Jerc</day>
							<day type="thu">Jerd</day>
							<day type="fri">Jeh</day>
							<day type="sat">Jes</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Jedoonee</day>
							<day type="mon">Jelhein</day>
							<day type="tue">Jemayrt</day>
							<day type="wed">Jercean</day>
							<day type="thu">Jerdein</day>
							<day type="fri">Jeheiney</day>
							<day type="sat">Jesarn</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.m.</am>
				<pm>p.m.</pm>
				<eras>
					<eraAbbr>
						<era type="0">RC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[�]9q'�'�Locale/Data/ne.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.24 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="ne"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">अफ्रिकाली</language>
			<language type="am">अम्हारिक</language>
			<language type="ar">अरबी</language>
			<language type="as">आसामी</language>
			<language type="az">अजरबैजानी</language>
			<language type="be">बेलारुसियाली</language>
			<language type="bg">बुल्गेरियाली</language>
			<language type="bh">बिहारी</language>
			<language type="bn">बंगाली</language>
			<language type="bs">बोस्नियाली</language>
			<language type="ca">क्याटालन</language>
			<language type="cs">चेकोस्लोभाकियाली</language>
			<language type="cy">वेल्श</language>
			<language type="da">ड्यानिश</language>
			<language type="de">जर्मन</language>
			<language type="el">ग्रीक</language>
			<language type="en">अँग्रेजी</language>
			<language type="eo">एस्पेरान्तो</language>
			<language type="es">स्प्यानिश</language>
			<language type="et">इस्टोनियाली</language>
			<language type="eu">बास्क</language>
			<language type="fa">फारसी</language>
			<language type="fi">फिनिश</language>
			<language type="fil">फिलिपिनी</language>
			<language type="fo">फारोइज</language>
			<language type="fr">फ्रांसेली</language>
			<language type="fy">फ्रिजीयन</language>
			<language type="ga">आइरिश</language>
			<language type="gd">स्कट्स गाएलिक</language>
			<language type="gl">गलिसियाली</language>
			<language type="gu">गुजराती</language>
			<language type="he">हिब्रु</language>
			<language type="hi">हिन्दी</language>
			<language type="hr">क्रोएसियाली</language>
			<language type="hu">हंग्रीयाली</language>
			<language type="ia">इन्टर्लिङ्गुआ</language>
			<language type="id">इन्डोनेसियाली</language>
			<language type="ie">अन्तरभाषी</language>
			<language type="is">आइसल्यान्डिक</language>
			<language type="it">इटालियन</language>
			<language type="ja">जापानी</language>
			<language type="jv">जाभानिज</language>
			<language type="ka">जोरजियन</language>
			<language type="km">कम्बोडीयाली</language>
			<language type="kn">कन्नाडा</language>
			<language type="ko">कोरियाली</language>
			<language type="ku">कुर्दिश</language>
			<language type="la">ल्याटिन</language>
			<language type="ln">लिंगाला</language>
			<language type="lo">लाओ</language>
			<language type="lt">लिथुआनियाली</language>
			<language type="lv">लात्भियाली</language>
			<language type="mk">म्याकेडोनियन</language>
			<language type="ml">मलयालम</language>
			<language type="mn">मंगोल</language>
			<language type="mr">मराठी</language>
			<language type="ms">मलाया</language>
			<language type="mt">माल्टिज</language>
			<language type="ne">नेपाली</language>
			<language type="nl">डच</language>
			<language type="no">नर्वेजियाली</language>
			<language type="oc">अक्सिटन</language>
			<language type="or">ओरिया</language>
			<language type="pa">पंजाबी</language>
			<language type="pl">पोलिश</language>
			<language type="ps">पाश्तो</language>
			<language type="pt">पोर्तुगाली</language>
			<language type="pt_BR">पर्तुगाली (ब्राजिल्याली)</language>
			<language type="pt_PT">आइबेरी, पर्तुगाली</language>
			<language type="ro">रोमानियाली</language>
			<language type="ru">रसियाली</language>
			<language type="sa">संस्कृत</language>
			<language type="si">सिन्हाली</language>
			<language type="sk">स्लोभाकियाली</language>
			<language type="sl">स्लोभेनियाली</language>
			<language type="so">सोमाली</language>
			<language type="sq">अल्बेनियन</language>
			<language type="sr">सर्बियाली</language>
			<language type="su">सुडानी</language>
			<language type="sv">स्विडिश</language>
			<language type="sw">स्वाहिली</language>
			<language type="ta">तामिल</language>
			<language type="te">तेलुगु</language>
			<language type="th">थाई</language>
			<language type="ti">तिग्रीन्या</language>
			<language type="tlh">क्लिङ्गन</language>
			<language type="tr">टर्की</language>
			<language type="uk">युक्रेनी</language>
			<language type="ur">उर्दु</language>
			<language type="uz">उज़्बेक</language>
			<language type="vi">भियतनामी</language>
			<language type="xh">झोसा</language>
			<language type="yi">यिद्दिस</language>
			<language type="zh">चिनियाँ</language>
			<language type="zh_Hans">सरलिकृत चिनियाँ</language>
			<language type="zh_Hant">परम्परागत चिनियाँ</language>
			<language type="zu">जुलू</language>
		</languages>
		<scripts>
			<script type="Arab">अरब</script>
			<script type="Armi">आर्मी</script>
			<script type="Armn">आर्मेनियन</script>
			<script type="Avst">आभेस्टान</script>
			<script type="Bali">बाली</script>
			<script type="Batk">बाटक</script>
			<script type="Beng">बङ्गाली</script>
			<script type="Blis">ब्लिजसिम्बोल्स</script>
			<script type="Bopo">बोपोमोफो</script>
			<script type="Brah">ब्राह्मी</script>
			<script type="Brai">ब्रेल</script>
			<script type="Bugi">बुगिनिज</script>
			<script type="Buhd">बुहिद</script>
			<script type="Cakm">काक्म्</script>
			<script type="Cari">कारियन</script>
			<script type="Cham">चाम</script>
			<script type="Cher">चेरोकी</script>
			<script type="Cirt">किर्थ</script>
			<script type="Copt">कप्टिक</script>
			<script type="Cprt">कप्रियट</script>
			<script type="Cyrl">सिरिलिक</script>
			<script type="Deva">देवानगरी</script>
			<script type="Dsrt">डेसेरेट</script>
			<script type="Egyd">इजिप्टियन डेमोटिक</script>
			<script type="Egyh">इजिप्टियन हाइरटिक</script>
			<script type="Egyp">इजिप्टियन हाइरोग्लिफ्स</script>
			<script type="Ethi">इथियोपिक</script>
			<script type="Geok">ग्रुजियाली खुट्सुरी</script>
			<script type="Geor">ग्रुजियाली</script>
			<script type="Glag">ग्लागोलिटिक</script>
			<script type="Goth">गोथिक</script>
			<script type="Grek">ग्रीक</script>
			<script type="Gujr">गुजराती</script>
			<script type="Guru">गुरूमुखी</script>
			<script type="Hang">हान्गुल</script>
			<script type="Hani">हान</script>
			<script type="Hano">हानुनु</script>
			<script type="Hans">सरलिकृत हान</script>
			<script type="Hant">परम्परागत हान</script>
			<script type="Hebr">हिब्रु</script>
			<script type="Hira">हिरागाना</script>
			<script type="Hmng">पहावह हमोङ्ग</script>
			<script type="Hrkt">काताकाना वा हिरागाना</script>
			<script type="Hung">पुरानो हङ्गेरियाली</script>
			<script type="Inds">इन्दुस</script>
			<script type="Ital">पुरानो इटालिक</script>
			<script type="Java">जाभानी</script>
			<script type="Jpan">जापानी</script>
			<script type="Kali">कायाहली</script>
			<script type="Kana">काताकाना</script>
			<script type="Khar">खारोस्थिति</script>
			<script type="Khmr">खमेर</script>
			<script type="Knda">कान्नाडा</script>
			<script type="Kore">कोरियन</script>
			<script type="Kthi">क्थी</script>
			<script type="Lana">लान्ना</script>
			<script type="Laoo">लाओ</script>
			<script type="Latf">फ्राक्टुर ल्याटिन</script>
			<script type="Latg">ग्यालिक ल्याटिन</script>
			<script type="Latn">ल्याटिन</script>
			<script type="Lepc">लेप्चा</script>
			<script type="Limb">लिम्बु</script>
			<script type="Lyci">लाइसियन</script>
			<script type="Lydi">लाइडियन</script>
			<script type="Mand">मान्डाएन</script>
			<script type="Mani">मानिकाएन</script>
			<script type="Maya">माया हाइरोग्लिफ्स</script>
			<script type="Mero">मेरियोटिक</script>
			<script type="Mlym">मलायालम</script>
			<script type="Mong">मङ्गोल</script>
			<script type="Moon">जून</script>
			<script type="Mtei">माइटेइ मायेक</script>
			<script type="Mymr">म्यान्मार</script>
			<script type="Nkoo">एन्को</script>
			<script type="Ogam">ओघाम</script>
			<script type="Olck">ओलचिकी</script>
			<script type="Orkh">ओर्खोन</script>
			<script type="Orya">ओरिया</script>
			<script type="Osma">ओस्मान्या</script>
			<script type="Perm">पुरानो पर्मिक</script>
			<script type="Phag">फाग्स-पा</script>
			<script type="Phli">फ्लि</script>
			<script type="Phlp">फ्ल्प</script>
			<script type="Phlv">बुक पहल्भी</script>
			<script type="Phnx">फोनिसियन</script>
			<script type="Plrd">पोल्लार्ड फोनेटिक</script>
			<script type="Prti">पिआरटी</script>
			<script type="Qaai">इन्हेरिटेड</script>
			<script type="Rjng">रेजाङ</script>
			<script type="Roro">रोङ्गोरोङ्गो</script>
			<script type="Runr">रूनिक</script>
			<script type="Samr">समारिटन</script>
			<script type="Sara">सारती</script>
			<script type="Saur">सौराष्ट्र</script>
			<script type="Sgnw">साइनराइटिङ</script>
			<script type="Shaw">शाभियन</script>
			<script type="Sinh">सिन्हाला</script>
			<script type="Sund">सुडानी</script>
			<script type="Sylo">स्ल्योटी नाग्री</script>
			<script type="Syrc">सिरियाक</script>
			<script type="Syre">इस्ट्रेनजेलो सिरियाक</script>
			<script type="Syrj">पश्चिमी सिरियाक</script>
			<script type="Syrn">पूर्वी सिरियाक</script>
			<script type="Tagb">टाग्वान्वा</script>
			<script type="Tale">टाइले</script>
			<script type="Talu">न्यू टाइ लुइ</script>
			<script type="Taml">तामिल</script>
			<script type="Tavt">टाभ्ट</script>
			<script type="Telu">टेलेगु</script>
			<script type="Teng">टेङ्वार</script>
			<script type="Tfng">टिफिनाघ</script>
			<script type="Tglg">टागालोग</script>
			<script type="Thaa">थाना</script>
			<script type="Thai">थाई</script>
			<script type="Tibt">टिबेटन</script>
			<script type="Ugar">युगारिटिक</script>
			<script type="Vaii">भाइ</script>
			<script type="Visp">दृश्यमय वाणी</script>
			<script type="Xpeo">पुरानो पर्सियन</script>
			<script type="Yiii">यी</script>
			<script type="Zmth">जमथ</script>
			<script type="Zsym">जसम</script>
			<script type="Zxxx">अलिखित</script>
			<script type="Zyyy">साझा</script>
			<script type="Zzzz">अपरिचित वा अवैध लिपी</script>
		</scripts>
		<territories>
			<territory type="001">विश्व</territory>
			<territory type="002">अफ्रिका</territory>
			<territory type="003">उत्तर अमेरिका</territory>
			<territory type="005">दक्षिण अमेरिका</territory>
			<territory type="009">ओसनिया</territory>
			<territory type="011">पश्चिमी अफ्रिका</territory>
			<territory type="013">केन्द्रीय अमेरिका</territory>
			<territory type="014">पूर्वी अफ्रिका</territory>
			<territory type="015">उत्तरी अफ्रिका</territory>
			<territory type="017">मध्य अफ्रिका</territory>
			<territory type="018">दक्षिणी अफ्रिका</territory>
			<territory type="019">अमेरिकास</territory>
			<territory type="021">उत्तरी अमेरिका</territory>
			<territory type="029">क्यारिबिएन</territory>
			<territory type="030">पूर्वी एशिया</territory>
			<territory type="034">दक्षिणी एशिया</territory>
			<territory type="035">दक्षिण पूर्वी एशिया</territory>
			<territory type="039">दक्षिणी युरोप</territory>
			<territory type="053">अष्ट्रेलिया र न्युजिल्याण्ड</territory>
			<territory type="054">मेलानेसिया</territory>
			<territory type="057">माइक्रोनेसियाली क्षेत्र</territory>
			<territory type="061">पोलिनेशिया</territory>
			<territory type="062">दक्षिण मध्य एशिया</territory>
			<territory type="142">एशिया</territory>
			<territory type="143">केन्द्रीय एशिया</territory>
			<territory type="145">पश्चिमी एशिया</territory>
			<territory type="150">युरोप</territory>
			<territory type="151">पूर्वी युरोप</territory>
			<territory type="154">उत्तरी युरोप</territory>
			<territory type="155">पश्चिमी युरोप</territory>
			<territory type="172">कमनवेल्थका स्वतन्त्र राज्यहरू</territory>
			<territory type="419">ल्याटिन अमेरिका तथा क्यारिबियन</territory>
			<territory type="AD">अन्डोर्रा</territory>
			<territory type="AE">संयुक्त अरब इमिराट्स</territory>
			<territory type="AF">अफ्गानिष्तान</territory>
			<territory type="AG">एन्टिगुआ र बारबुडा</territory>
			<territory type="AI">आङ्गुइला</territory>
			<territory type="AL">अल्बानिया</territory>
			<territory type="AM">आर्मेनिया</territory>
			<territory type="AN">नेदरल्याण्ड्स एण्टिलिस</territory>
			<territory type="AO">अङ्गोला</territory>
			<territory type="AQ">अन्टारतिका</territory>
			<territory type="AR">अर्जेण्टिना</territory>
			<territory type="AS">अमेरिकी समोआ</territory>
			<territory type="AT">अष्ट्रिया</territory>
			<territory type="AU">अष्ट्रेलिया</territory>
			<territory type="AW">आरूबा</territory>
			<territory type="AX">अलान्ड टापु</territory>
			<territory type="AZ">अजरबैजान</territory>
			<territory type="BA">बोस्निया र हर्जगोभिनिया</territory>
			<territory type="BB">बार्बाडोस</territory>
			<territory type="BD">बङ्गलादेश</territory>
			<territory type="BE">बेल्जियम</territory>
			<territory type="BF">बर्किना फासो</territory>
			<territory type="BG">बल्गेरिया</territory>
			<territory type="BH">बाह्रेन</territory>
			<territory type="BI">बुरूण्डी</territory>
			<territory type="BJ">बेनिन</territory>
			<territory type="BL">सेन्ट बार्थालेमी</territory>
			<territory type="BM">बर्मुडा</territory>
			<territory type="BN">ब्रुनाइ</territory>
			<territory type="BO">बोलिभिया</territory>
			<territory type="BR">ब्राजिल</territory>
			<territory type="BS">बहामास</territory>
			<territory type="BT">भुटान</territory>
			<territory type="BV">बुभेट टापु</territory>
			<territory type="BW">बोट्स्वाना</territory>
			<territory type="BY">बेलारूस</territory>
			<territory type="BZ">बेलिज</territory>
			<territory type="CA">क्यानाडा</territory>
			<territory type="CC">कोकोस टापु</territory>
			<territory type="CD">कोङ्गो-किन्शासा</territory>
			<territory type="CF">केन्द्रीय अफ्रिकी गणतन्त्र</territory>
			<territory type="CG">कोङ्गो - ब्राज्जाभिल्ले</territory>
			<territory type="CH">स्विजरल्याण्ड</territory>
			<territory type="CI">आइभोरी कोष्ट</territory>
			<territory type="CK">कुक टापु</territory>
			<territory type="CL">चिली</territory>
			<territory type="CM">क्यामेरून</territory>
			<territory type="CN">चीन</territory>
			<territory type="CO">कोलोम्बिया</territory>
			<territory type="CR">कोष्टारिका</territory>
			<territory type="CU">क्युबा</territory>
			<territory type="CV">केप भर्डे</territory>
			<territory type="CX">क्रिष्टमस टापु</territory>
			<territory type="CY">साइप्रस</territory>
			<territory type="CZ">चेख गणतन्त्र</territory>
			<territory type="DE">जर्मनी</territory>
			<territory type="DJ">डिजिबुटी</territory>
			<territory type="DK">डेन्मार्क</territory>
			<territory type="DM">डोमिनिका</territory>
			<territory type="DO">डोमिनिकन गणतन्त्र</territory>
			<territory type="DZ">अल्जेरिया</territory>
			<territory type="EC">इक्वडेर</territory>
			<territory type="EE">इस्टोनिया</territory>
			<territory type="EG">इजिप्ट</territory>
			<territory type="EH">पश्चिमी साहारा</territory>
			<territory type="ER">एरित्रिया</territory>
			<territory type="ES">स्पेन</territory>
			<territory type="ET">इथोपिया</territory>
			<territory type="FI">फिन्ल्याण्ड</territory>
			<territory type="FJ">फिजी</territory>
			<territory type="FK">फकल्याण्ड टापु</territory>
			<territory type="FM">माइक्रोनेसिया</territory>
			<territory type="FO">फारोर टापु</territory>
			<territory type="FR">फ्रान्स</territory>
			<territory type="GA">गावोन</territory>
			<territory type="GB">संयुक्त अधिराज्य</territory>
			<territory type="GD">ग्रेनाडा</territory>
			<territory type="GE">जोर्जिया</territory>
			<territory type="GF">फ्रान्सेली गायना</territory>
			<territory type="GG">गुएर्नसे</territory>
			<territory type="GH">घाना</territory>
			<territory type="GI">जिब्राल्टार</territory>
			<territory type="GL">ग्रिनल्याण्ड</territory>
			<territory type="GM">गाम्विया</territory>
			<territory type="GN">गिनी</territory>
			<territory type="GP">ग्वाडेलुप</territory>
			<territory type="GQ">भू-मध्यीय गिनी</territory>
			<territory type="GR">ग्रिश</territory>
			<territory type="GT">ग्वाटेमाला</territory>
			<territory type="GU">गुवाम</territory>
			<territory type="GW">गिनी-बिसाउ</territory>
			<territory type="GY">गुयाना</territory>
			<territory type="HK">हङकङ</territory>
			<territory type="HM">हर्ड टापु र म्याकडोनाल्ड टापु</territory>
			<territory type="HN">हन्डुरास</territory>
			<territory type="HR">क्रोएशिया</territory>
			<territory type="HT">हैटी</territory>
			<territory type="HU">हङ्गेरी</territory>
			<territory type="ID">इन्डोनेशिया</territory>
			<territory type="IE">आइरल्याण्ड</territory>
			<territory type="IL">इज्रायल</territory>
			<territory type="IM">आइज्ले अफ् म्यान</territory>
			<territory type="IN">भारत</territory>
			<territory type="IO">बेलायती हिन्द महासागर क्षेत्र</territory>
			<territory type="IQ">इराक</territory>
			<territory type="IR">इरान</territory>
			<territory type="IS">आइस्ल्याण्ड</territory>
			<territory type="IT">इटाली</territory>
			<territory type="JE">जर्सी</territory>
			<territory type="JM">जमाइका</territory>
			<territory type="JO">जोर्डन</territory>
			<territory type="JP">जापान</territory>
			<territory type="KE">केन्या</territory>
			<territory type="KG">किर्गिस्थान</territory>
			<territory type="KH">कम्बोडिया</territory>
			<territory type="KI">किरिबाटी</territory>
			<territory type="KM">कोमोरोस</territory>
			<territory type="KN">सेन्ट किट्स र नेभिस</territory>
			<territory type="KP">उत्तर कोरिया</territory>
			<territory type="KR">दक्षिण कोरिया</territory>
			<territory type="KW">कुवेत</territory>
			<territory type="KY">केयमान टापु</territory>
			<territory type="KZ">काजाकस्थान</territory>
			<territory type="LA">लाओस</territory>
			<territory type="LB">लेबनोन</territory>
			<territory type="LC">सेन्ट लुसिया</territory>
			<territory type="LI">लिएखटेन्स्टाइन</territory>
			<territory type="LK">श्रीलङ्का</territory>
			<territory type="LR">लाइबेरिया</territory>
			<territory type="LS">लेसोथो</territory>
			<territory type="LT">लिथुअनिया</territory>
			<territory type="LU">लक्जेमबर्ग</territory>
			<territory type="LV">लाट्भिया</territory>
			<territory type="LY">लिबिया</territory>
			<territory type="MA">मोरोक्को</territory>
			<territory type="MC">मोनाको</territory>
			<territory type="MD">माल्डोभा</territory>
			<territory type="ME">मोन्टेनेग्रो</territory>
			<territory type="MF">सेन्ट मार्टिन</territory>
			<territory type="MG">मडागास्कर</territory>
			<territory type="MH">मार्शल टापु</territory>
			<territory type="MK">म्याकेडोनिया</territory>
			<territory type="ML">माली</territory>
			<territory type="MM">म्यान्मार</territory>
			<territory type="MN">मङ्गोलिया</territory>
			<territory type="MO">मकावो</territory>
			<territory type="MP">उत्तरी मारिआना टापु</territory>
			<territory type="MQ">मार्टिनिक</territory>
			<territory type="MR">माउरिटानिया</territory>
			<territory type="MS">मोन्टसेर्राट</territory>
			<territory type="MT">माल्टा</territory>
			<territory type="MU">माउरिटस</territory>
			<territory type="MV">माल्दिभ्स</territory>
			<territory type="MW">मालावी</territory>
			<territory type="MX">मेक्सिको</territory>
			<territory type="MY">मलेसिया</territory>
			<territory type="MZ">मोजाम्बिक</territory>
			<territory type="NA">नामिबिया</territory>
			<territory type="NC">नयाँ कालेडोनिया</territory>
			<territory type="NE">नाइजर</territory>
			<territory type="NF">नोरफोल्क टापु</territory>
			<territory type="NG">नाइजेरिया</territory>
			<territory type="NI">निकारागुवा</territory>
			<territory type="NL">नेदरल्याण्ड्स</territory>
			<territory type="NO">नर्वे</territory>
			<territory type="NP">नेपाल</territory>
			<territory type="NR">नाउरू</territory>
			<territory type="NU">नियुइ</territory>
			<territory type="NZ">न्युजिल्याण्ड</territory>
			<territory type="OM">ओमन</territory>
			<territory type="PA">पनामा</territory>
			<territory type="PE">पेरू</territory>
			<territory type="PF">फ्रान्सेली पोलिनेसिया</territory>
			<territory type="PG">पपुआ न्यू गाइनिया</territory>
			<territory type="PH">फिलिपिन्स</territory>
			<territory type="PK">पाकिस्तान</territory>
			<territory type="PL">पोल्याण्ड</territory>
			<territory type="PM">सेन्ट पिर्रे र मिक्केलोन</territory>
			<territory type="PN">पिटकाइर्न</territory>
			<territory type="PR">प्युर्टोरिको</territory>
			<territory type="PS">प्यालेस्टनी भू-भाग</territory>
			<territory type="PT">पोर्तुगल</territory>
			<territory type="PW">पलाउ</territory>
			<territory type="PY">प्यारागुये</territory>
			<territory type="QA">कटार</territory>
			<territory type="QO">बाह्य ओसनिया</territory>
			<territory type="QU">युरोपियन युनियन</territory>
			<territory type="RE">रियुनियन</territory>
			<territory type="RO">रोमानिया</territory>
			<territory type="RS">सर्बिया</territory>
			<territory type="RU">रूस</territory>
			<territory type="RW">रवाण्डा</territory>
			<territory type="SA">साउदी अरब</territory>
			<territory type="SB">सोलोमोन टापु</territory>
			<territory type="SC">सेचेलेस</territory>
			<territory type="SD">सुडान</territory>
			<territory type="SE">स्विडेन</territory>
			<territory type="SG">सिङ्गापुर</territory>
			<territory type="SH">सेन्ट हेलेना</territory>
			<territory type="SI">स्लोभेनिया</territory>
			<territory type="SJ">सभाल्बार्ड र जान मायेन</territory>
			<territory type="SK">स्लोभाकिया</territory>
			<territory type="SL">सिएर्रा लिओन</territory>
			<territory type="SM">सान् मारिनो</territory>
			<territory type="SN">सेनेगाल</territory>
			<territory type="SO">सोमालिया</territory>
			<territory type="SR">सुरिनेम</territory>
			<territory type="ST">साओ टोमे र प्रिन्सिप</territory>
			<territory type="SV">एल् साल्भाडोर</territory>
			<territory type="SY">सिरिया</territory>
			<territory type="SZ">स्वाजिल्याण्ड</territory>
			<territory type="TC">तुर्क र काइकोस टापु</territory>
			<territory type="TD">चाड</territory>
			<territory type="TF">फ्रान्सेली दक्षिणी क्षेत्र</territory>
			<territory type="TG">टोगो</territory>
			<territory type="TH">थाइल्याण्ड</territory>
			<territory type="TJ">ताजिकिस्तान</territory>
			<territory type="TK">तोगो</territory>
			<territory type="TL">पूर्वी टिमोर</territory>
			<territory type="TM">तुर्कमेनिस्तान</territory>
			<territory type="TN">टुनिसिया</territory>
			<territory type="TO">टोंगा</territory>
			<territory type="TR">टर्की</territory>
			<territory type="TT">त्रिनिडाड र तोबागो</territory>
			<territory type="TV">तुभालु</territory>
			<territory type="TW">ताइवान</territory>
			<territory type="TZ">तान्जानिया</territory>
			<territory type="UA">युक्रेन</territory>
			<territory type="UG">युगाण्डा</territory>
			<territory type="UM">संयुक्त राज्य अल्प बाह्य टापु</territory>
			<territory type="US">संयुक्त राज्य</territory>
			<territory type="UY">युरूगुए</territory>
			<territory type="UZ">उज्बेकिस्तान</territory>
			<territory type="VA">भेटिकन</territory>
			<territory type="VC">सेन्ट भिन्सेन्ट र ग्रेनाडिन्स</territory>
			<territory type="VE">भेनेजुएला</territory>
			<territory type="VG">बेलायती भर्जिन टापु</territory>
			<territory type="VI">संयुक्त राज्य भर्जिन टापु</territory>
			<territory type="VN">भिएतनाम</territory>
			<territory type="VU">भानुआतु</territory>
			<territory type="WF">वालिस र फुटुना</territory>
			<territory type="WS">सामोआ</territory>
			<territory type="YE">येमेन</territory>
			<territory type="YT">मायोट्ट</territory>
			<territory type="ZA">दक्षिण अफ्रिका</territory>
			<territory type="ZM">जाम्बिया</territory>
			<territory type="ZW">जिम्बाबे</territory>
			<territory type="ZZ">अपरिचित वा अवैध क्षेत्र</territory>
		</territories>
		<variants>
			<variant type="AREVELA">पूर्वी आर्मेनियाली</variant>
			<variant type="POSIX">कम्प्युटर</variant>
		</variants>
		<keys>
			<key type="calendar">पात्रो</key>
			<key type="collation">कोलेशन</key>
			<key type="currency">मुद्रा</key>
		</keys>
		<types>
			<type type="big5han" key="collation">परम्परागत चिनिँया क्रमबद्धता पद्दति - बिग फाइभ</type>
			<type type="buddhist" key="calendar">बुद्धिष्ट पात्रो</type>
			<type type="chinese" key="calendar">चिनिँया पात्रो</type>
			<type type="direct" key="collation">प्रत्यक्ष क्रमबद्धता पद्दति</type>
			<type type="gb2312han" key="collation">सरलिकृत चिनियाँ क्रमबद्धता पद्दति-गीबीटुथ्रीवानटु</type>
			<type type="gregorian" key="calendar">ग्रेगोरियन पात्रो</type>
			<type type="hebrew" key="calendar">हिब्रु पात्रो</type>
			<type type="indian" key="calendar">भारतीय राष्ट्रिय पात्रो</type>
			<type type="islamic" key="calendar">इस्लामी पात्रो</type>
			<type type="islamic-civil" key="calendar">इस्लामी नागरिक पात्रो</type>
			<type type="japanese" key="calendar">जापानी पात्रो</type>
			<type type="phonebook" key="collation">टेलिफोन पुस्तिका क्रमबद्धतापद्दति</type>
			<type type="pinyin" key="collation">पिनयिन क्रमबद्धता पद्दति</type>
			<type type="roc" key="calendar">चिनिँया गणतन्त्र पात्रो</type>
			<type type="stroke" key="collation">स्ट्रोक क्रमबद्धता पद्दति</type>
			<type type="traditional" key="collation">परम्परागत क्रमबद्धता पद्दति</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ँ-ः ०-९ अ-ऋ ए ऐ ओ-न प-र ल व-ह ा-ृ े ै ो ्]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="buddhist">
				<am>पूर्व मध्यान्ह</am>
				<pm>पूर्व अपरान्ह</pm>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">जन</month>
							<month type="2">फेब</month>
							<month type="3">मार्च</month>
							<month type="4">अप्रि</month>
							<month type="5">मे</month>
							<month type="6">जुन</month>
							<month type="7">जुला</month>
							<month type="8">अग</month>
							<month type="9">सेप्ट</month>
							<month type="10">अक्टो</month>
							<month type="11">नोभे</month>
							<month type="12">डिसे</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">जनवरी</month>
							<month type="2">फेब्रुअरी</month>
							<month type="3">मार्च</month>
							<month type="4">अप्रिल</month>
							<month type="5">मे</month>
							<month type="6">जुन</month>
							<month type="7">जुलाई</month>
							<month type="8">अगस्त</month>
							<month type="9">सेप्टेम्बर</month>
							<month type="10">अक्टोबर</month>
							<month type="11">नोभेम्बर</month>
							<month type="12">डिसेम्बर</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">१</month>
							<month type="2">२</month>
							<month type="3">३</month>
							<month type="4">४</month>
							<month type="5">५</month>
							<month type="6">६</month>
							<month type="7">७</month>
							<month type="8">८</month>
							<month type="9">९</month>
							<month type="10">१०</month>
							<month type="11">११</month>
							<month type="12">१२</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">आइत</day>
							<day type="mon">सोम</day>
							<day type="tue">मङ्गल</day>
							<day type="wed">बुध</day>
							<day type="thu">बिही</day>
							<day type="fri">शुक्र</day>
							<day type="sat">शनि</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">आइतबार</day>
							<day type="mon">सोमबार</day>
							<day type="tue">मङ्गलबार</day>
							<day type="wed">बुधबार</day>
							<day type="thu">बिहीबार</day>
							<day type="fri">शुक्रबार</day>
							<day type="sat">शनिबार</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">१</day>
							<day type="mon">२</day>
							<day type="tue">३</day>
							<day type="wed">४</day>
							<day type="thu">५</day>
							<day type="fri">६</day>
							<day type="sat">७</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">पहिलो सत्र</quarter>
							<quarter type="2">दोस्रो सत्र</quarter>
							<quarter type="3">तेस्रो सत्र</quarter>
							<quarter type="4">चौथो सत्र</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">१</quarter>
							<quarter type="2">२</quarter>
							<quarter type="3">३</quarter>
							<quarter type="4">४</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>पूर्व मध्यान्ह</am>
				<pm>उत्तर मध्यान्ह</pm>
				<eras>
					<eraNames>
						<era type="0">ईसा पूर्व</era>
						<era type="1">सन्</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ईसा पूर्व</era>
						<era type="1">सन्</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>काल</displayName>
					</field>
					<field type="year">
						<displayName>बर्ष</displayName>
					</field>
					<field type="month">
						<displayName>महिना</displayName>
					</field>
					<field type="week">
						<displayName>हप्ता</displayName>
					</field>
					<field type="day">
						<displayName>बार</displayName>
						<relative type="0">आज</relative>
						<relative type="1">भोलि</relative>
						<relative type="-1">हिजो</relative>
						<relative type="-2">अस्ति</relative>
						<relative type="-3">तीन दिन पछि</relative>
					</field>
					<field type="weekday">
						<displayName>हप्ताको बार</displayName>
					</field>
					<field type="dayperiod">
						<displayName>पूर्व मध्यान्ह/उत्तर मध्यान्ह</displayName>
					</field>
					<field type="hour">
						<displayName>घण्टा</displayName>
					</field>
					<field type="minute">
						<displayName>मिनेट</displayName>
					</field>
					<field type="second">
						<displayName>दोस्रो</displayName>
					</field>
					<field type="zone">
						<displayName>क्षेत्र</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>अज्ञात</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>रोथेरा</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>पाल्मेर</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>दक्षिण पोल</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>सिओआ</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>माजन</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>डेभिस</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>भास्टोक</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>केजे</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>दुमोन्ट डि उर्भेल्ले</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>माकमुर्डो</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>रियो ग्यालेगोस</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>मेन्डोजा</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>सान जुवान</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>उशुआइआ</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ला रियोजा</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>सान लुइस</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>कातामार्का</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>जुजु</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>टुकुमान</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>कोरडोवा</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ब्यनेश आयर्स</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>पर्थ</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>इयुक्ला</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>डार्विन</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>एडेलेड</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ब्रोकन हिल</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>क्युरी</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>मेल्बर्न</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>होभार्ट</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>लिन्डेम्यान</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>सिड्नी</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>ब्रिस्बेन</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>लर्ड होवे</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>आइरनेपे</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>रियो ब्रान्को</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>पोर्टो भेल्हो</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>बोआ भिष्टा</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>मानाउस</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>क्युइआबा</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>क्याम्पो ग्रान्डे</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>बेलेम</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>आरागुवाना</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>साओ पाउलो</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>बाहिया</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>फोर्टालेजा</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>मासेइओ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>रिसाइफ</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>नोरोन्हा</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>डेजन</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>ह्वाइटहर्स</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>इनुभिक</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>भ्यानकोभर</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>डेजन क्रिक</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>येल्लोनाइफ</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>एड्मोन्टन</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>स्विफ्ट करेण्ट</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>क्याम्ब्रिज बे</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>रेजिना</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>विन्निपेग</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>रिजोलुट</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>रेनिरिभर</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>रान्किन इन¥लेट</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>कोराल बन्दरगाहा</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>थण्डर बे</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>निपिगन</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>टोरोण्टो</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>मोन्ट्रिल</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>इक्वालुइट</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>पाङ्निरतुङ</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>मोन्कटन</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>हालेफाक्स</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>गुज बे</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>ग्लेस बे</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ब्लान्क-साब्लोन</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>सेन्ट जोन्स</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>किन्शासा</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>लुबुम्बासी</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>इस्टर</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>काश्गर</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>उरूम्की</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>चोङकिङ</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>हार्विन</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>गलापागोस</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>क्यानारी</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>सेउटा</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ट्रुक</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>पोनापे</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>कोस्राए</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>थुले</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>स्कोर्सबाइसन्ड</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>डान्मार्कशाभन</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>जाकार्ता</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>पोन्टिआनाक</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>माकास्सार</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>जयापुरा</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>एन्डरबरी</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>किरितिमाटी</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>तरवा</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>आक्टाउ</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ओरल</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>आक्टोब</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>किजिलोर्डा</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>आल्माटी</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>क्वाजालेइन</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>माजुरो</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>होभ्ड</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>उलानबटार</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>चोइबाल्सान</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>तिजुआना</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>हेर्मोसिल्लो</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>माजाट्लान</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>चिहुआहुआ</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>मोन्टेर्रे</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>मेक्सिको सिटी</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>मेरिडा</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>कानकुन</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>कुचिङ</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>चाथाम</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>मार्केसास</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>ग्याम्बियर</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>आजोर्स</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>माडेइरा</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>कालिनिनग्राद</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>मस्को</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>भोल्गोग्राद</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>सामारा</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>एकटरिनबुर्ग</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ओम्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>नोबोसिबिर्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>क्रास्नोयार्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>इर्कुत्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>याकुत्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>भ्लाडिभास्टोक</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>साखालिन</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>मागाडान</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>कामचट्का</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>आनाडियर</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>उझगोरद</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>किभ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>सिम्फेरोपोल</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>जापोरोझ्ये</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>मिडवे</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>जोन्सटन</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>वेक</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>आडाक</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>नोमे</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>होनोलुलु</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>याकुतात</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>जुनिउ</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>लस् एन्जेलस</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>बोइज</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>फोनिक्स</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>शिपरक</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>डेन्भर</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>नयाँ सालेम, उत्तर डाकोटा</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>उत्तर डाकोटा, केन्द्र</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>चिकागो</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>मेनोमिनी</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>भिन्सेन्स</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>पिटर्सबर्ग, इन्डियाना</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>टेल सिटी, इन्डियाना</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>नोक्स, इण्डियाना</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>विनामाक, इन्डियाना</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>मारेन्गो, इन्डियाना</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>इण्डियानापोलिस</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>लुइसभिल्ले</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>भेभे, इन्डियाना</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>मोन्टिसेल्लो,केन्टकी</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>डिट्रोइट</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>न्युयोर्क</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>समारकण्ड</exemplarCity>
			</zone>
			<metazone type="Africa_Central">
				<long>
					<generic>१३:२५ मोजाम्बिक समय</generic>
					<standard>१३:२५ केन्द्रीय अफ्रिकी समय</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<nativeZeroDigit>०</nativeZeroDigit>
			<minusSign>-</minusSign>
		</symbols>
		<currencies>
			<currency type="AFA">
				<displayName>अफ्गानी(१९२७-२००२)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>अफ्गानी</displayName>
			</currency>
			<currency type="ALL">
				<displayName>अल्बानियन लेक</displayName>
			</currency>
			<currency type="AUD">
				<displayName>अष्ट्रेलियन डलर</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ब्राजिलियन रियल</displayName>
			</currency>
			<currency type="CNY">
				<displayName>चिनिँया युआन रेनिबी</displayName>
			</currency>
			<currency type="EUR">
				<displayName>युरो</displayName>
			</currency>
			<currency type="GBP">
				<displayName>बेलायती पाउण्ड स्टर्लिङ</displayName>
			</currency>
			<currency type="INR">
				<displayName>भारती रूपिँया</displayName>
			</currency>
			<currency type="JPY">
				<displayName>जापानी येन</displayName>
			</currency>
			<currency type="NOK">
				<displayName>नर्वेजियाली क्रोन</displayName>
			</currency>
			<currency type="NPR">
				<symbol>नेरू</symbol>
			</currency>
			<currency type="PHP">
				<displayName>फिलिपिनी पेसो</displayName>
			</currency>
			<currency type="RUB">
				<displayName>रूसी रूबल</displayName>
			</currency>
			<currency type="USD">
				<displayName>संयुक्त राज्य डलर</displayName>
			</currency>
			<currency type="XXX">
				<displayName>अपरिचित वा अवैध मुद्रा</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} दिन</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} घण्टा</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} मिनेट</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} महिना</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} सेकेण्ड</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} हप्ता</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} बर्ष</unitPattern>
			<unitPattern count="other">{0} बर्ष</unitPattern>
		</unit>
	</units>
</ldml>

PKpG[~�(�#�#Locale/Data/tg.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="tg"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="be">Белорусӣ</language>
			<language type="bg">Булғорӣ</language>
			<language type="bh">Биҳарӣ</language>
			<language type="bn">Бенгалӣ</language>
			<language type="br">Бретонӣ</language>
			<language type="bs">Босниягӣ</language>
			<language type="ca">Каталанӣ</language>
			<language type="cs">Чехӣ</language>
			<language type="da">Даниягӣ</language>
			<language type="de">Немисӣ</language>
			<language type="el">Юнонӣ</language>
			<language type="en">Англисӣ</language>
			<language type="eo">Эсперанто</language>
			<language type="es">Испанӣ</language>
			<language type="et">Эстонӣ</language>
			<language type="eu">Баскӣ</language>
			<language type="fa">Форсӣ</language>
			<language type="fi">Финнӣ</language>
			<language type="fil">Филиппинӣ</language>
			<language type="fo">Фарозӣ</language>
			<language type="fr">Фаронсавӣ</language>
			<language type="fy">Фрисианӣ</language>
			<language type="ga">Ирландӣ</language>
			<language type="gd">Шотландӣ-Галикӣ</language>
			<language type="gl">Галисианӣ</language>
			<language type="gn">Горанӣ</language>
			<language type="gu">Гуҷаратӣ</language>
			<language type="he">Яҳудӣ</language>
			<language type="hi">Ҳиндӣ</language>
			<language type="hu">Маҷорӣ</language>
			<language type="ia">Байни забонӣ</language>
			<language type="id">Индонезӣ</language>
			<language type="is">Исландӣ</language>
			<language type="ja">Ҷопонӣ</language>
			<language type="jv">Ҷаванизӣ</language>
			<language type="ka">Гурҷӣ</language>
			<language type="ky">Қирғизӣ</language>
			<language type="la">Лотинӣ</language>
			<language type="lo">Лаосӣ</language>
			<language type="lt">Литвонӣ</language>
			<language type="lv">Латвиягӣ</language>
			<language type="nl">Ҳолландӣ</language>
			<language type="no">Норвегӣ</language>
			<language type="or">Урисоӣ</language>
			<language type="pl">Лаҳистонӣ</language>
			<language type="pt">Португалӣ</language>
			<language type="pt_BR">Португалӣ (Бразилия)</language>
			<language type="ro">Руминӣ</language>
			<language type="ru">Русӣ</language>
			<language type="sv">Шведӣ</language>
			<language type="ug">Ӯйғурӣ</language>
			<language type="uk">Украинӣ</language>
			<language type="ur">Урду</language>
			<language type="uz">Ӯзбекӣ</language>
			<language type="yi">Яҳудии Аврупои шарқӣ</language>
			<language type="zh">Чинӣ</language>
			<language type="zu">Зулу</language>
		</languages>
		<scripts>
			<script type="Arab">Арабӣ</script>
		</scripts>
		<territories>
			<territory type="AF">Афғонистан</territory>
			<territory type="TO">Тонга</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а-г ғ д е ё ж-и ӣ й к қ л-у ӯ ф х ҳ ч ҷ ш ъ э-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ц щ ы ь]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>«</alternateQuotationStart>
		<alternateQuotationEnd>„</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Янв</month>
							<month type="2">Фев</month>
							<month type="3">Мар</month>
							<month type="4">Апр</month>
							<month type="5">Май</month>
							<month type="6">Июн</month>
							<month type="7">Июл</month>
							<month type="8">Авг</month>
							<month type="9">Сен</month>
							<month type="10">Окт</month>
							<month type="11">Ноя</month>
							<month type="12">Дек</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Январ</month>
							<month type="2">Феврал</month>
							<month type="3">Март</month>
							<month type="4">Апрел</month>
							<month type="5">Май</month>
							<month type="6">Июн</month>
							<month type="7">Июл</month>
							<month type="8">Август</month>
							<month type="9">Сентябр</month>
							<month type="10">Октябр</month>
							<month type="11">Ноябр</month>
							<month type="12">Декабр</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Яшб</day>
							<day type="mon">Дшб</day>
							<day type="tue">Сшб</day>
							<day type="wed">Чшб</day>
							<day type="thu">Пшб</day>
							<day type="fri">Ҷмъ</day>
							<day type="sat">Шнб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Якшанбе</day>
							<day type="mon">Душанбе</day>
							<day type="tue">Сешанбе</day>
							<day type="wed">Чоршанбе</day>
							<day type="thu">Панҷшанбе</day>
							<day type="fri">Ҷумъа</day>
							<day type="sat">Шанбе</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>пе. чо.</am>
				<pm>па. чо.</pm>
				<eras>
					<eraNames>
						<era type="0">Пеш аз милод</era>
						<era type="1">ПаМ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ПеМ</era>
						<era type="1">ПаМ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="TJS">
				<displayName>Сомонӣ</displayName>
				<symbol>сом</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�k��::Locale/Data/tg_Cyrl_TJ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:41:57 $"/>
		<language type="tg"/>
		<script type="Cyrl"/>
		<territory type="TJ"/>
	</identity>
</ldml>
PKpG[���hiiLocale/Data/ii.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.7 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ii"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="de">ꄓꇩꉙ</language>
			<language type="en">ꑱꇩꉙ</language>
			<language type="es">ꑭꀠꑸꉙ</language>
			<language type="fr">ꃔꇩꉙ</language>
			<language type="ii">ꆈꌠꉙ</language>
			<language type="it">ꑴꄊꆺꉙ</language>
			<language type="ja">ꏝꀪꉙ</language>
			<language type="pt">ꁍꄨꑸꉙ</language>
			<language type="pt_BR">ꀠꑟꁍꄨꑸꉙ</language>
			<language type="ru">ꊉꇩꉙ</language>
			<language type="und">ꅉꀋꌠꅇꂷ</language>
			<language type="zh">ꍏꇩꉙ</language>
			<language type="zh_Hans">ꈝꐯꍏꇩꉙ</language>
			<language type="zh_Hant">ꀎꋏꍏꇩꉙ</language>
		</languages>
		<scripts>
			<script type="Arab">ꀊꇁꀨꁱꂷ</script>
			<script type="Cyrl">ꀊꆨꌦꇁꃚꁱꂷ</script>
			<script type="Hans">ꈝꐯꉌꈲꁱꂷ</script>
			<script type="Hant">ꀎꋏꉌꈲꁱꂷ</script>
			<script type="Latn">ꇁꄀꁱꂷ</script>
			<script type="Yiii">ꆈꌠꁱꂷ</script>
			<script type="Zxxx">ꁱꀋꉆꌠ</script>
			<script type="Zzzz">ꅉꀋꐚꌠꁱꂷ</script>
		</scripts>
		<territories>
			<territory type="BR">ꀠꑭ</territory>
			<territory type="CN">ꍏꇩ</territory>
			<territory type="DE">ꄓꇩ</territory>
			<territory type="FR">ꃔꇩ</territory>
			<territory type="GB">ꑱꇩ</territory>
			<territory type="IN">ꑴꄗ</territory>
			<territory type="IT">ꑴꄊꆺ</territory>
			<territory type="JP">ꏝꀪ</territory>
			<territory type="RU">ꊉꇆꌦ</territory>
			<territory type="US">ꂰꇩ</territory>
			<territory type="ZZ">ꃅꄷꅉꀋꐚꌠ</territory>
		</territories>
		<types>
			<type type="gregorian" key="calendar">ꄉꉻꃅꑍ</type>
			<type type="islamic" key="calendar">ꑳꌦꇂꑍꉖ</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ꂰꇩ</measurementSystemName>
			<measurementSystemName type="metric">ꂰꌬꌠ</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">ꅇꉙ: {0}</codePattern>
			<codePattern type="script">ꇇꁱ: {0}</codePattern>
			<codePattern type="territory">ꃅꄷ: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ꀀ-ꒌ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ꋍꆪ</month>
							<month type="2">ꑍꆪ</month>
							<month type="3">ꌕꆪ</month>
							<month type="4">ꇖꆪ</month>
							<month type="5">ꉬꆪ</month>
							<month type="6">ꃘꆪ</month>
							<month type="7">ꏃꆪ</month>
							<month type="8">ꉆꆪ</month>
							<month type="9">ꈬꆪ</month>
							<month type="10">ꊰꆪ</month>
							<month type="11">ꊰꊪꆪ</month>
							<month type="12">ꊰꑋꆪ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ꆏꑍ</day>
							<day type="mon">ꆏꋍ</day>
							<day type="tue">ꆏꑍ</day>
							<day type="wed">ꆏꌕ</day>
							<day type="thu">ꆏꇖ</day>
							<day type="fri">ꆏꉬ</day>
							<day type="sat">ꆏꃘ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ꑭꆏꑍ</day>
							<day type="mon">ꆏꊂꋍ</day>
							<day type="tue">ꆏꊂꑍ</day>
							<day type="wed">ꆏꊂꌕ</day>
							<day type="thu">ꆏꊂꇖ</day>
							<day type="fri">ꆏꊂꉬ</day>
							<day type="sat">ꆏꊂꃘ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ꆏ</day>
							<day type="mon">ꋍ</day>
							<day type="tue">ꑍ</day>
							<day type="wed">ꌕ</day>
							<day type="thu">ꇖ</day>
							<day type="fri">ꉬ</day>
							<day type="sat">ꃘ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">ꃅꑌ</quarter>
							<quarter type="2">ꃅꎸ</quarter>
							<quarter type="3">ꃅꍵ</quarter>
							<quarter type="4">ꃅꋆ</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ꃅꑌ</quarter>
							<quarter type="2">ꃅꎸ</quarter>
							<quarter type="3">ꃅꍵ</quarter>
							<quarter type="4">ꃅꋆ</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ꎸꄑ</am>
				<pm>ꁯꋒ</pm>
				<eras>
					<eraAbbr>
						<era type="0">ꃅꋊꂿ</era>
						<era type="1">ꃅꋊꊂ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<fields>
					<field type="era">
						<displayName>ꃅꋊ</displayName>
					</field>
					<field type="year">
						<displayName>ꈎ</displayName>
					</field>
					<field type="month">
						<displayName>ꆪ</displayName>
					</field>
					<field type="week">
						<displayName>ꑭꆏ</displayName>
					</field>
					<field type="day">
						<displayName>ꑍ</displayName>
						<relative type="0">ꀃꑍ</relative>
						<relative type="1">ꃆꏂꑍ</relative>
						<relative type="2">ꌕꀿꑍ</relative>
						<relative type="-1">ꀋꅔꉈ</relative>
						<relative type="-2">ꎴꂿꋍꑍ</relative>
					</field>
					<field type="weekday">
						<displayName>ꆏꑍ</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ꎸꄑ/ꁯꋒ</displayName>
					</field>
					<field type="hour">
						<displayName>ꄮꈉ</displayName>
					</field>
					<field type="minute">
						<displayName>ꃏ</displayName>
					</field>
					<field type="second">
						<displayName>ꇙ</displayName>
					</field>
					<field type="zone">
						<displayName>ꃅꄷꄮꈉ</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<zone type="Etc/Unknown">
				<exemplarCity>ꅉꀋꐚꌠ</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencies>
			<currency type="XXX">
				<displayName>ꅉꀋꐚꌠꌋꆀꎆꃀꀋꈁꀐꌠ</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ꉬ</yesstr>
			<nostr>ꀋꉬ</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���::Locale/Data/sr_Cyrl_RS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.7 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
		<territory type="RS"/>
	</identity>
</ldml>
PKpG[FÚ�/�/�Locale/Data/sk.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.84 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="sk"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ab">abcházsky</language>
			<language type="af">africký</language>
			<language type="ain">ainský</language>
			<language type="akk">akadský</language>
			<language type="am">amharský</language>
			<language type="ar">arabský</language>
			<language type="art">umelý jazyk</language>
			<language type="as">asámsky</language>
			<language type="aus">austrálsky jazyk</language>
			<language type="av">avarský</language>
			<language type="az">azerbajdžanský</language>
			<language type="ba">baškírsky</language>
			<language type="ban">balijský</language>
			<language type="bat">baltský jazyk</language>
			<language type="be">bieloruský</language>
			<language type="ber">berberský</language>
			<language type="bg">bulharský</language>
			<language type="bh">biharský</language>
			<language type="bn">bengálsky</language>
			<language type="bo">tibetský</language>
			<language type="br">bretónsky</language>
			<language type="bs">bosniansky</language>
			<language type="ca">katalánsky</language>
			<language type="cai">jazyk stredoamerických indiánov</language>
			<language type="car">karibský</language>
			<language type="cau">kaukazský jazyk</language>
			<language type="ce">čečenský</language>
			<language type="cel">keltský jazyk</language>
			<language type="cs">český</language>
			<language type="cy">walesky</language>
			<language type="da">dánsky</language>
			<language type="dak">dakotský</language>
			<language type="de">nemecký</language>
			<language type="egy">staroegyptský</language>
			<language type="el">grécky</language>
			<language type="en">anglický</language>
			<language type="en_GB">anglický (Veľká Británia)</language>
			<language type="en_US">anglický (USA)</language>
			<language type="eo">esperantsky</language>
			<language type="es">španielsky</language>
			<language type="et">estónsky</language>
			<language type="eu">baskický</language>
			<language type="fa">perzský</language>
			<language type="fi">fínsky</language>
			<language type="fil">filipínsky</language>
			<language type="fiu">ugrofínsky jazyk</language>
			<language type="fo">faersky</language>
			<language type="fr">francúzsky</language>
			<language type="fy">frizijsky</language>
			<language type="ga">írsky</language>
			<language type="gd">škótskou gaelštinou</language>
			<language type="gem">germánsky jazyk</language>
			<language type="gl">galicijsky</language>
			<language type="gn">guaransky</language>
			<language type="got">gotický</language>
			<language type="grc">starogrécky</language>
			<language type="gsw">nemecký (Švajčiarsko)</language>
			<language type="gu">gudžaratsky</language>
			<language type="haw">havajský</language>
			<language type="he">hebrejský</language>
			<language type="hi">hindština</language>
			<language type="hr">chorvátsky</language>
			<language type="ht">haitský</language>
			<language type="hu">maďarský</language>
			<language type="hy">arménsky</language>
			<language type="ia">interlingua</language>
			<language type="id">indonézsky</language>
			<language type="ie">interlingue</language>
			<language type="ine">indoeurópsky jazyk</language>
			<language type="ira">iránsky jazyk</language>
			<language type="is">islandský</language>
			<language type="it">taliansky</language>
			<language type="ja">japonský</language>
			<language type="jv">javanský</language>
			<language type="ka">gruzínsky</language>
			<language type="kg">konžský</language>
			<language type="km">kambodžský</language>
			<language type="kn">kanadský</language>
			<language type="ko">kórejský</language>
			<language type="ku">kurdský</language>
			<language type="ky">kyrgyzský</language>
			<language type="la">latinský</language>
			<language type="lb">luxemburgský</language>
			<language type="ln">lingalsky</language>
			<language type="lo">laoský</language>
			<language type="lt">litovský</language>
			<language type="lv">lotyšský</language>
			<language type="mk">macedónsky</language>
			<language type="ml">malajalamsky</language>
			<language type="mn">mongolský</language>
			<language type="mr">marathsky</language>
			<language type="ms">malajský</language>
			<language type="mt">maltský</language>
			<language type="my">burmský</language>
			<language type="myn">jazyk mayov</language>
			<language type="nai">jazyk severoamerických indiánov</language>
			<language type="ne">nepálsky</language>
			<language type="nl">holandský</language>
			<language type="nn">nórsky (nynorsk)</language>
			<language type="no">nórsky</language>
			<language type="nv">jazyk navajov</language>
			<language type="oc">okcitánsky</language>
			<language type="or">urijský</language>
			<language type="pa">pandžábsky</language>
			<language type="paa">papuánsky</language>
			<language type="pl">poľský</language>
			<language type="ps">paštúnsky</language>
			<language type="pt">portugalský</language>
			<language type="rm">rétorománsky</language>
			<language type="ro">rumunský</language>
			<language type="ru">ruský</language>
			<language type="sa">sanskrtom</language>
			<language type="sai">jazyk juhoamerických indiánov</language>
			<language type="scn">sicílsky</language>
			<language type="sd">sindhsky</language>
			<language type="sgn">znaková reč</language>
			<language type="sh">srbochorvátsky</language>
			<language type="si">sinhalézsky</language>
			<language type="sk">slovenský</language>
			<language type="sl">slovinský</language>
			<language type="sla">slovanský jazyk</language>
			<language type="so">somálsky</language>
			<language type="sq">albánsky</language>
			<language type="sr">srbský</language>
			<language type="st">sesothsky</language>
			<language type="su">sundsky</language>
			<language type="sux">sumerský</language>
			<language type="sv">švédsky</language>
			<language type="sw">swahilsky</language>
			<language type="syr">sýrsky</language>
			<language type="ta">tamilský</language>
			<language type="te">telugsky</language>
			<language type="tg">tadžidský</language>
			<language type="th">thajský</language>
			<language type="ti">tigrinyjský</language>
			<language type="tk">turkménsky</language>
			<language type="tl">tagalogčina</language>
			<language type="tlh">klingonský</language>
			<language type="tr">turecký</language>
			<language type="tt">tatársky</language>
			<language type="tw">twisky</language>
			<language type="ty">tahitský</language>
			<language type="ug">uighursky</language>
			<language type="uk">ukrajinský</language>
			<language type="und">neznámy alebo neplatný jazyk</language>
			<language type="ur">urdština</language>
			<language type="uz">uzbecký</language>
			<language type="vi">vietnamský</language>
			<language type="wa">valónsky</language>
			<language type="wo">wolof</language>
			<language type="xh">xhosky</language>
			<language type="yi">jidišsky</language>
			<language type="zh">čínsky</language>
			<language type="zh_Hans">čínština (zjednodušená)</language>
			<language type="zh_Hant">čínština (tradičná)</language>
			<language type="zu">zulu</language>
			<language type="zxx">bez jazykového obsahu</language>
		</languages>
		<scripts>
			<script type="Arab">Arabský</script>
			<script type="Armn">Arménsky</script>
			<script type="Bali">balijský</script>
			<script type="Beng">bengálsky</script>
			<script type="Brai">Braillovo písmo</script>
			<script type="Cyrl">Cyrilika</script>
			<script type="Cyrs">cyrilika</script>
			<script type="Egyp">egyptské hieroglyfy</script>
			<script type="Ethi">etiópsky</script>
			<script type="Glag">hlaholika</script>
			<script type="Goth">gotický</script>
			<script type="Grek">Grécky</script>
			<script type="Hebr">hebrejský</script>
			<script type="Jpan">japonský</script>
			<script type="Khmr">kmérsky</script>
			<script type="Kore">kórejský</script>
			<script type="Latn">latinka</script>
			<script type="Lina">lineárna A</script>
			<script type="Linb">lineárna B</script>
			<script type="Maya">mayské hieroglyfy</script>
			<script type="Mong">mongolský</script>
			<script type="Osma">osmanský</script>
			<script type="Runr">Runové písmo</script>
			<script type="Tibt">tibetský</script>
			<script type="Zyyy">Obecný</script>
		</scripts>
		<territories>
			<territory type="001">Svet</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Severná Amerika (003)</territory>
			<territory type="005">Južná Amerika</territory>
			<territory type="009">Oceánia</territory>
			<territory type="011">Západná Afrika</territory>
			<territory type="013">Stredná Amerika</territory>
			<territory type="014">Východná Afrika</territory>
			<territory type="015">Severná Afrika</territory>
			<territory type="017">Stredná Afrika</territory>
			<territory type="018">Južná Afrika [018]</territory>
			<territory type="019">Americký kontinent</territory>
			<territory type="021">Severná Amerika</territory>
			<territory type="029">Karibik</territory>
			<territory type="030">Východná Ázia</territory>
			<territory type="034">Južná Ázia</territory>
			<territory type="035">Juhovýchodná Ázia</territory>
			<territory type="039">Južná Európa</territory>
			<territory type="053">Austrália a Nový Zéland</territory>
			<territory type="054">Melanézia</territory>
			<territory type="057">Mikronésia</territory>
			<territory type="061">Polynézia</territory>
			<territory type="062">Stredná a južná Ázia</territory>
			<territory type="142">Ázia</territory>
			<territory type="143">Stredná Ázia</territory>
			<territory type="145">Západná Ázia</territory>
			<territory type="150">Európa</territory>
			<territory type="151">Východná Európa</territory>
			<territory type="154">Severná Európa</territory>
			<territory type="155">Západná Európa</territory>
			<territory type="172">Spoločenstvo nezávislých štátov</territory>
			<territory type="200">Československo</territory>
			<territory type="419">Latinská Amerika a Karibik</territory>
			<territory type="830">Kanál La Manche</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Spojené arabské emiráty</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua a Barbados</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albánsko</territory>
			<territory type="AM">Arménsko</territory>
			<territory type="AN">Holandské Antily</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentína</territory>
			<territory type="AS">Americká Samoa</territory>
			<territory type="AT">Rakúsko</territory>
			<territory type="AU">Austrália</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandské ostrovy</territory>
			<territory type="AZ">Azerbajdžan</territory>
			<territory type="BA">Bosna a Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladéš</territory>
			<territory type="BE">Belgicko</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulharsko</territory>
			<territory type="BH">Bahrajn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Svätý Bartolomej</territory>
			<territory type="BM">Bermudy</territory>
			<territory type="BN">Brunej</territory>
			<territory type="BO">Bolívia</territory>
			<territory type="BR">Brazília</territory>
			<territory type="BS">Bahamy</territory>
			<territory type="BT">Bután</territory>
			<territory type="BV">Bouvetov ostrov</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorusko</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosové (Keelingove) ostrovy</territory>
			<territory type="CD">Konžská demokratická republika</territory>
			<territory type="CF">Stredoafrická republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Švajčiarsko</territory>
			<territory type="CI">Pobrežie Slonoviny</territory>
			<territory type="CK">Cookove ostrovy</territory>
			<territory type="CL">Čile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Čína</territory>
			<territory type="CO">Kolumbia</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Srbsko a Čierna Hora</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kapverdy</territory>
			<territory type="CX">Vianočný ostrov</territory>
			<territory type="CY">Cyprus</territory>
			<territory type="CZ">Česká republika</territory>
			<territory type="DE">Nemecko</territory>
			<territory type="DJ">Džibuti</territory>
			<territory type="DK">Dánsko</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikánska republika</territory>
			<territory type="DZ">Alžírsko</territory>
			<territory type="EC">Ekvádor</territory>
			<territory type="EE">Estónsko</territory>
			<territory type="EG">Egypt</territory>
			<territory type="EH">Západná Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Španielsko</territory>
			<territory type="ET">Etiópia</territory>
			<territory type="FI">Fínsko</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandské ostrovy</territory>
			<territory type="FM">Mikronézia, Federatívne štáty</territory>
			<territory type="FO">Faerské ostrovy</territory>
			<territory type="FR">Francúzsko</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Spojené kráľovstvo</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzínsko</territory>
			<territory type="GF">Francúzska Guayana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltár</territory>
			<territory type="GL">Grónsko</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Rovníková Guinea</territory>
			<territory type="GR">Grécko</territory>
			<territory type="GS">Južná Georgia a Južné Sandwichove ostrovy</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guayana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Heardove ostrovy a McDonaldove ostrovy</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Chorvátsko</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Maďarsko</territory>
			<territory type="ID">Indonézia</territory>
			<territory type="IE">Írsko</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Ostrov Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Britské územie v Indickom oceáne</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Irán</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Taliansko</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordánsko</territory>
			<territory type="JP">Japonsko</territory>
			<territory type="KE">Keňa</territory>
			<territory type="KG">Kirgizsko</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komory</territory>
			<territory type="KN">Saint Kitts a Nevis</territory>
			<territory type="KP">Kórea, Severná</territory>
			<territory type="KR">Kórea, Južná</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KY">Kajmanské ostrovy</territory>
			<territory type="KZ">Kazachstan</territory>
			<territory type="LA">Laoská ľudovodemokratická republika</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Svätá Lucia</territory>
			<territory type="LI">Lichtenštajnsko</territory>
			<territory type="LK">Srí Lanka</territory>
			<territory type="LR">Libéria</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litva</territory>
			<territory type="LU">Luxembursko</territory>
			<territory type="LV">Lotyšsko</territory>
			<territory type="LY">Lýbijská arabská džamahírija</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavsko, republika</territory>
			<territory type="ME">Čierna Hora</territory>
			<territory type="MF">Svätý Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallove ostrovy</territory>
			<territory type="MK">Macedónsko, republika</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mjanmarsko</territory>
			<territory type="MN">Mongolsko</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Severné Mariány</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mauritánia</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Maurícius</territory>
			<territory type="MV">Maldivy</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexiko</territory>
			<territory type="MY">Malajzia</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namíbia</territory>
			<territory type="NC">Nová Kaledónia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkov ostrov</territory>
			<territory type="NG">Nigéria</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Holandsko</territory>
			<territory type="NO">Nórsko</territory>
			<territory type="NP">Nepál</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nový Zéland</territory>
			<territory type="OM">Omán</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francúzska Polynézia</territory>
			<territory type="PG">Papua Nová Guinea</territory>
			<territory type="PH">Filipíny</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poľsko</territory>
			<territory type="PM">Saint Pierre a Miquelon</territory>
			<territory type="PN">Pitcairnove ostrovy</territory>
			<territory type="PR">Portoriko</territory>
			<territory type="PS">Palestínske územie</territory>
			<territory type="PT">Portugalsko</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Tichomorie - ostatné</territory>
			<territory type="QU">Európska únia</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Rumunsko</territory>
			<territory type="RS">Srbsko</territory>
			<territory type="RU">Ruská federácia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudská Arábia</territory>
			<territory type="SB">Šalamúnove ostrovy</territory>
			<territory type="SC">Seychelské ostrovy</territory>
			<territory type="SD">Sudán</territory>
			<territory type="SE">Švédsko</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Svätá Helena</territory>
			<territory type="SI">Slovinsko</territory>
			<territory type="SJ">Špicbergy a Jan Mayen</territory>
			<territory type="SK">Slovenská republika</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Maríno</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somálsko</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Svätý Tomáš a Princove ostrovy</territory>
			<territory type="SV">Salvador</territory>
			<territory type="SY">Sýrska arabská republika</territory>
			<territory type="SZ">Svazijsko</territory>
			<territory type="TC">Turks a Caicos</territory>
			<territory type="TD">Čad</territory>
			<territory type="TF">Francúzske južné územia</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thajsko</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Východný Timor</territory>
			<territory type="TM">Turkménsko</territory>
			<territory type="TN">Tunisko</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turecko</territory>
			<territory type="TT">Trinidad a Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajwan</territory>
			<territory type="TZ">Tanzánia</territory>
			<territory type="UA">Ukrajina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Menšie odľahlé ostrovy USA</territory>
			<territory type="US">Spojené štáty</territory>
			<territory type="UY">Uruguaj</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Svätá stolica (Vatikánsky mestský štát)</territory>
			<territory type="VC">Svätý Vincent a Grenadíny</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britské panenské ostrovy</territory>
			<territory type="VI">Panenské ostrovy - USA</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis a Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Južná Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Neznámy alebo neplatný región</territory>
		</territories>
		<keys>
			<key type="calendar">Kalendár</key>
			<key type="collation">Triedenie</key>
			<key type="currency">Mena</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Tradičný čínsky Big5</type>
			<type type="buddhist" key="calendar">Buddhistický kalendár</type>
			<type type="chinese" key="calendar">Čínsky kalendár</type>
			<type type="direct" key="collation">Priame triedenie</type>
			<type type="gb2312han" key="collation">Zjednodušený čínsky GB2312</type>
			<type type="gregorian" key="calendar">Gregoriánsky kalendár</type>
			<type type="hebrew" key="calendar">Židovský kalendár</type>
			<type type="indian" key="calendar">Indický národný kalendár</type>
			<type type="islamic" key="calendar">Islamský kalendár</type>
			<type type="islamic-civil" key="calendar">Islamský občiansky kalendár</type>
			<type type="japanese" key="calendar">Japonský kalendár</type>
			<type type="phonebook" key="collation">Lexikografické triedenie</type>
			<type type="pinyin" key="collation">Triedenie pinyin</type>
			<type type="roc" key="calendar">Kalendár Čínskej republiky</type>
			<type type="stroke" key="collation">Tiedenie podľa ťahov</type>
			<type type="traditional" key="collation">Tradičné</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Americký</measurementSystemName>
			<measurementSystemName type="metric">Metrický</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Jazyk: {0}</codePattern>
			<codePattern type="script">Skript: {0}</codePattern>
			<codePattern type="territory">Región: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á ä b c č d ď e é f-h {ch} i í j-l ĺ ľ m n ň o ó ô p-r ŕ s š t ť u ú v-y ý z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à ă â å ā æ ä ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ö ø ō œ ô ß ú ù ŭ û ü ū ÿ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‚</quotationStart>
		<quotationEnd>‘</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>“</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">máj</month>
							<month type="6">jún</month>
							<month type="7">júl</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">január</month>
							<month type="2">február</month>
							<month type="3">marec</month>
							<month type="4">apríl</month>
							<month type="5">máj</month>
							<month type="6">jún</month>
							<month type="7">júl</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">október</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">j</month>
							<month type="2">f</month>
							<month type="3">m</month>
							<month type="4">a</month>
							<month type="5">m</month>
							<month type="6">j</month>
							<month type="7">j</month>
							<month type="8">a</month>
							<month type="9">s</month>
							<month type="10">o</month>
							<month type="11">n</month>
							<month type="12">d</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ne</day>
							<day type="mon">Po</day>
							<day type="tue">Ut</day>
							<day type="wed">St</day>
							<day type="thu">Št</day>
							<day type="fri">Pi</day>
							<day type="sat">So</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Nedeľa</day>
							<day type="mon">Pondelok</day>
							<day type="tue">Utorok</day>
							<day type="wed">Streda</day>
							<day type="thu">Štvrtok</day>
							<day type="fri">Piatok</day>
							<day type="sat">Sobota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">N</day>
							<day type="mon">P</day>
							<day type="tue">U</day>
							<day type="wed">S</day>
							<day type="thu">Š</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. štvrťrok</quarter>
							<quarter type="2">2. štvrťrok</quarter>
							<quarter type="3">3. štvrťrok</quarter>
							<quarter type="4">4. štvrťrok</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">pred n.l.</era>
						<era type="1">n.l.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.-M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M. - E, d.M.</greatestDifference>
							<greatestDifference id="d">E, d.M. - E, d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M. - d.M.</greatestDifference>
							<greatestDifference id="d">d.M. - d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yyyy - M.yyyy</greatestDifference>
							<greatestDifference id="y">M.yyyy - M.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
							<greatestDifference id="d">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
							<greatestDifference id="y">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d. MMM yyyy - E, d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yyyy - d.M.yyyy</greatestDifference>
							<greatestDifference id="d">d.M.yyyy - d.M.yyyy</greatestDifference>
							<greatestDifference id="y">d.M.yyyy - d.M.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>éra</displayName>
					</field>
					<field type="year">
						<displayName>rok</displayName>
					</field>
					<field type="month">
						<displayName>mesiac</displayName>
					</field>
					<field type="week">
						<displayName>týždeň</displayName>
					</field>
					<field type="day">
						<displayName>deň</displayName>
						<relative type="0">dnes</relative>
						<relative type="1">zajtra</relative>
						<relative type="2">pozajtra</relative>
						<relative type="3">o tri dni</relative>
						<relative type="-1">včera</relative>
						<relative type="-2">predvčerom</relative>
						<relative type="-3">pred tromi dňami</relative>
					</field>
					<field type="weekday">
						<displayName>deň v týždni</displayName>
					</field>
					<field type="hour">
						<displayName>hodina</displayName>
					</field>
					<field type="minute">
						<displayName>minúta</displayName>
					</field>
					<field type="second">
						<displayName>sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>zóna</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Neznáme časové pásmo</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Južný pól</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudy</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Veľkonočné ostrovy</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Šanghaj</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kapverdy</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibutsko</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapágy</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanárske ostrovy</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londýn</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibraltár</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvajt</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxembursko</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulanbátar</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinik</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Maurícius</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maledivy</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairnove ostrovy</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portoriko</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorské ostrovy</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsko</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkutsko</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsko</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvádor</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užhorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kyjev</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Záporožie</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Aljaška</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem, Severná Dakota</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorská peseta</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE dirham</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albánsky lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Armenský dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Nizozemský Antilský guilder</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolská kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolská kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolská nová kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolská kwanza Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentinský austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentinské peso (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinské peso</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Rakúsky šiling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Austrálsky dolár</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Arubský guilder</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbaidžanský manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnianský dinár</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnianský konvertibilná marka</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadoský dolár</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bangladéšska taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belgický frank (konvertibilný)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgický frank</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belgický frank (finančný)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulharský leva</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Bulharský leva nový</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahraiský dinár</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundský frank</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermudský dolár</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Bruneiský dolár</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolívijské Boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Bolivíjske peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivíjske mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Bolivíjske Cruzeiro Novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Bolivíjske cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Bolivíjske cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Bolivíjsky real</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Brazílske Cruzado Novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brazílske cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamský dolár</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutansky ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Burmese Kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswanan Pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Belarussian nový rubeľ (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Belarussian rubeľ</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belize dolár</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Kanadský dolár</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Konžský frank Congolais</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Švajčiarský frank</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Čílske Unidades de Fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Čílske peso</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Čínsky Yuan Renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Colombijské peso</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Kostarikský colon</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Československá koruna</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kubánske peso</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Cape Verde eskudo</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Cypruská libra</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Česká koruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Východonemecká marka</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Nemecká marka</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Džibutský frank</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Dánska krone</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominikánske peso</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Alžírsky dinár</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ekuadorský sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ekuadorský Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estónska kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptská libra</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrejská nakfa</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Španielská peseta</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Ethiopský birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finská marka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fiji dolár</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falklandská libra</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Francúzsky frank</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britská libra</displayName>
			</currency>
			<currency type="GEK">
				<displayName>Gruzínsky Kupon Larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Gruzínsky lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ghanský cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltarská libra</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambský dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guinejský frank</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guinejský syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Rovníková Guinea Ekwele Guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Grécka drachma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemalský quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portugalská Guinea eskudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau peso</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyanský dolár</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kongský dolár</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Hoduraská lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Chorvátsky dinár</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Chorvátska kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haitské gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Maďarský forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonézska rupia</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Írska libra</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Izraelská libra</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Izraelský šekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijská rupia</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Iracký dinár</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iránsky rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Islandská krona</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Talianská lira</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamajský dolár</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordánsky dinár</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japonský yen</displayName>
			</currency>
			<currency type="KES">
				<displayName>Keňský šiling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kyrgyský som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Kambodžský riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comoro frank</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Severokórejský won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Juhokórejský won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuvaitský dinár</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Kajmanský dolár</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazažský tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laoský kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanonská libra</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Šrilanská rupia</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Libérský dolár</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesothský loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Litevská lita</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litevský talonas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxemburský frank</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lotyšský lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Lotyšský rubeľ</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libyjský dinár</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marocký dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marocký frank</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldavský leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskarský ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskarský frank</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Macedónsky denár</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Malský frank</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmarský kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolský tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macao Pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritania Ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Maltská lira</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltská libra</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritská rupia</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldivská rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malavská kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexické peso</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexické striborné peso (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexické Unidad de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malajský ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambijské eskudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Mozambijské metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibský dolár</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigerská naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nikaragujská cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nikaragujská Cordoba Oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Nizozemský guilder</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Nórksy krone</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepálska rupia</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Novozélandský dolár</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Ománský rial</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamská balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruvský inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruvský sol Nuevo</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruvský sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua Nová Guinea kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipínske peso</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistanská rupia</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Polský zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Polský zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugalské eskudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguayské guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Qatarský rial</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="ROL">
				<displayName>Rumunský leu</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Rumunský Lei</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Srbský dinár</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ruský rubeľ</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Ruský rubeľ (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rwandský frank</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudský riyal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Solomon Islands dolár</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Sejšelská rupia</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Sudánsky dinár</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudánska libra</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Švédska krona</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapúrsky dolár</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Libra</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovinský Tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovenská koruna</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leone Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somálsky šiling</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Surinamský guilder</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome a Principe dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Sovietský rubeľ</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvadorský colon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syrská libra</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Swaziland lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Thajský bát</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadžikistanský rubeľ</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadžikistanský somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkménsky manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tuniský dinár</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tonga Paʻanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timorské eskudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turecká lira</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Nová turecká líra</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad a Tobago dolár</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Taiwanský nový dolár</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanský šiling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainská hrivna</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainský karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandan šiling (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandský šiling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>US dolár</displayName>
			</currency>
			<currency type="USN">
				<displayName>US dolár (Next day)</displayName>
			</currency>
			<currency type="USS">
				<displayName>US dolár (Same day)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguajské peso (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguajské peso Uruguayo</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Uzbekistanský sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelský bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Vietnamský dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatu vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Západná Samoa tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA frank BEAC</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Zlato</displayName>
			</currency>
			<currency type="XCD">
				<displayName>East Caribbean dolár</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Špeciálne práva čerpania</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Francúzsky zlatý frank</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Francúzsky UIC-frank</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA frank BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP frank</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="YDD">
				<displayName>Jemenský dinár</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemenský rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Juhoslávsky dinár [YUD]</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Juhoslávsky Noviy dinár</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Juhoslávsky dinár</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Juhoafrický rand (financial)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Juhoafrický rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambská kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairský nový zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairský Zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabský dolár</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ano:a</yesstr>
			<nostr>nie:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��NOOLocale/Data/sh_CS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sh"/>
		<territory type="CS"/>
	</identity>
	<alias source="sr_Latn_RS" path="//ldml"/>
</ldml>
PKpG[��2�QQLocale/Data/en_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="en"/>
		<territory type="IN"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM - E d MMM</greatestDifference>
							<greatestDifference id="d">E d - E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[:b�##Locale/Data/tr_TR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tr"/>
		<territory type="TR"/>
	</identity>
</ldml>
PKpG[(�N7;;Locale/Data/wo_Latn_SN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.12 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wo"/>
		<script type="Latn"/>
		<territory type="SN"/>
	</identity>
</ldml>
PKpG[�h:HHLocale/Data/in.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.2 $"/>
        <generation date="$Date: 2008/06/10 21:00:28 $"/>
        <language type="in"/>
    </identity>
    <alias source="id" path="//ldml"/>
</ldml>
PKpG[y�kc=�=�Locale/Data/sl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.94 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="sl"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abhaščina</language>
			<language type="af">afrikanščina</language>
			<language type="am">amharščina</language>
			<language type="ar">arabščina</language>
			<language type="as">asamščina</language>
			<language type="ay">ajmara</language>
			<language type="az">azerbajdžanščina</language>
			<language type="ba">baškirščina</language>
			<language type="be">beloruščina</language>
			<language type="bg">bolgarščina</language>
			<language type="bh">bihari</language>
			<language type="bn">bengalščina</language>
			<language type="br">bretonščina</language>
			<language type="bs">bosanščina</language>
			<language type="ca">katalonščina</language>
			<language type="cs">češčina</language>
			<language type="cy">valižanščina</language>
			<language type="da">danščina</language>
			<language type="de">nemščina</language>
			<language type="el">grščina</language>
			<language type="en">angleščina</language>
			<language type="en_GB">angleščina (VB)</language>
			<language type="en_US">angleščina (ZDA)</language>
			<language type="eo">esperanto</language>
			<language type="es">španščina</language>
			<language type="et">estonščina</language>
			<language type="eu">baskovščina</language>
			<language type="fa">perzijščina</language>
			<language type="fi">finščina</language>
			<language type="fil">tagalogščina</language>
			<language type="fo">ferščina</language>
			<language type="fr">francoščina</language>
			<language type="fy">frizijščina</language>
			<language type="ga">irščina</language>
			<language type="gd">škotska galščina</language>
			<language type="gl">galicijščina</language>
			<language type="gn">gvaranijščina</language>
			<language type="gu">gudžarati</language>
			<language type="he">hebrejščina</language>
			<language type="hi">hindijščina</language>
			<language type="hr">hrvaščina</language>
			<language type="hu">madžarščina</language>
			<language type="hy">armenščina</language>
			<language type="ia">interlingua</language>
			<language type="id">indonezijščina</language>
			<language type="ie">jeziki</language>
			<language type="is">islandščina</language>
			<language type="it">italijanščina</language>
			<language type="ja">japonščina</language>
			<language type="jv">javanščina</language>
			<language type="ka">gruzinščina</language>
			<language type="km">kamboščina</language>
			<language type="kn">kanada</language>
			<language type="ko">korejščina</language>
			<language type="ks">kašmirščina</language>
			<language type="ku">kurdščina</language>
			<language type="ky">kirgizijščina</language>
			<language type="la">latinščina</language>
			<language type="lb">luksemburščina</language>
			<language type="ln">lingala</language>
			<language type="lo">laoščina</language>
			<language type="lt">litovščina</language>
			<language type="lv">letonščina</language>
			<language type="mk">makedonščina</language>
			<language type="ml">malajalamščina</language>
			<language type="mn">mongolščina</language>
			<language type="mr">maharaščina</language>
			<language type="ms">malajščina</language>
			<language type="mt">malteščina</language>
			<language type="my">burmanščina</language>
			<language type="ne">nepalščina</language>
			<language type="nl">nizozemščina</language>
			<language type="nn">novonorveščina</language>
			<language type="no">norveščina</language>
			<language type="oc">okcitanščina</language>
			<language type="or">orijščina</language>
			<language type="pa">pandžabščina</language>
			<language type="pl">poljščina</language>
			<language type="ps">paštu</language>
			<language type="pt">portugalščina</language>
			<language type="pt_PT">iberska portugalščina</language>
			<language type="rm">reto-romanščina</language>
			<language type="ro">romunščina</language>
			<language type="ru">ruščina</language>
			<language type="sa">sanskrt</language>
			<language type="sd">sindi</language>
			<language type="sh">srbohrvaščina</language>
			<language type="si">singalščina</language>
			<language type="sk">slovaščina</language>
			<language type="sl">slovenščina</language>
			<language type="so">somalščina</language>
			<language type="sq">albanščina</language>
			<language type="sr">srbščina</language>
			<language type="st">sesoto</language>
			<language type="su">sundanščina</language>
			<language type="sv">švedščina</language>
			<language type="sw">svahili</language>
			<language type="ta">tamilščina</language>
			<language type="te">telugijščina</language>
			<language type="th">tajščina</language>
			<language type="ti">tigrejščina</language>
			<language type="tk">turkmenščina</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingonščina</language>
			<language type="tr">turščina</language>
			<language type="tw">tvi (dialekt jezika akan)</language>
			<language type="ug">ujgurščina</language>
			<language type="uk">ukrajinščina</language>
			<language type="und">Neznan ali neveljaven jezik</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekistanščina</language>
			<language type="vi">vietnamščina</language>
			<language type="wo">volofščina</language>
			<language type="xh">xhosa</language>
			<language type="yi">jidiš</language>
			<language type="zh">kitajščina</language>
			<language type="zh_Hans">poenostavljena kitajščina</language>
			<language type="zh_Hant">tradicionalna kitajščina</language>
			<language type="zu">zulujščina</language>
		</languages>
		<scripts>
			<script type="Arab">arabski</script>
			<script type="Armn">armenski</script>
			<script type="Beng">bengalski</script>
			<script type="Brai">Braillova pisava</script>
			<script type="Cyrl">cirilica</script>
			<script type="Cyrs">starocerkveno slovanski</script>
			<script type="Grek">grški</script>
			<script type="Hebr">hebrejski</script>
			<script type="Jpan">japonski</script>
			<script type="Latn">Latinski</script>
			<script type="Xpeo">stara perzijščina</script>
			<script type="Zxxx">Nenapisano</script>
			<script type="Zzzz">Neznan ali neveljaven zapis</script>
		</scripts>
		<territories>
			<territory type="001">Svet</territory>
			<territory type="002">Afrika</territory>
			<territory type="005">Južna Amerika</territory>
			<territory type="009">Oceanija</territory>
			<territory type="011">Zahodna Afrika</territory>
			<territory type="013">Centralna Amerika</territory>
			<territory type="014">Vzhodna Afrika</territory>
			<territory type="015">Severna Afrika</territory>
			<territory type="017">Centralna Afrika</territory>
			<territory type="018">Južna Afrika [018]</territory>
			<territory type="019">Amerike</territory>
			<territory type="021">Severna Amerika</territory>
			<territory type="029">Karibi</territory>
			<territory type="030">Vzhodna Azija</territory>
			<territory type="034">Južna Azija</territory>
			<territory type="035">Jugovzhodna Azija</territory>
			<territory type="039">Južna Evropa</territory>
			<territory type="053">Avstralija i Nova Zelandija</territory>
			<territory type="054">Melanezija</territory>
			<territory type="057">Micronezija</territory>
			<territory type="061">Polinezija</territory>
			<territory type="062">Južno-centralna Azija</territory>
			<territory type="142">Azija</territory>
			<territory type="143">Osrednja Azija</territory>
			<territory type="145">Zahodna Azija</territory>
			<territory type="150">Evropa</territory>
			<territory type="151">Vzhodna Evropa</territory>
			<territory type="154">Severna Evropa</territory>
			<territory type="155">Zapadna Evropa</territory>
			<territory type="172">Skupnost neodvisnih držav</territory>
			<territory type="419">Latinska Amerika in Karibsko otočje</territory>
			<territory type="830">Kanalski otoki</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Združeni arabski emirati</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigva in Barbuda</territory>
			<territory type="AI">Angvila</territory>
			<territory type="AL">Albanija</territory>
			<territory type="AM">Armenija</territory>
			<territory type="AN">Nizozemski Antili</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Ameriška Samoa</territory>
			<territory type="AT">Avstrija</territory>
			<territory type="AU">Avstralija</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandski otoki</territory>
			<territory type="AZ">Azerbajdžan</territory>
			<territory type="BA">Bosna in Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladeš</territory>
			<territory type="BE">Belgija</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bolgarija</territory>
			<territory type="BH">Bahrajn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunej</territory>
			<territory type="BO">Bolivija</territory>
			<territory type="BR">Brazilija</territory>
			<territory type="BS">Bahami</territory>
			<territory type="BT">Butan</territory>
			<territory type="BV">Otok Bouvet</territory>
			<territory type="BW">Bocvana</territory>
			<territory type="BY">Belorusija</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosovi otoki</territory>
			<territory type="CD">Demokratična republika Kongo</territory>
			<territory type="CF">Centralnoafriška republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Švica</territory>
			<territory type="CI">Slonokoščena obala</territory>
			<territory type="CK">Cookovi otoki</territory>
			<territory type="CL">Čile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kitajska</territory>
			<territory type="CO">Kolumbija</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Srbija in Črna gora</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kapverdski otoki</territory>
			<territory type="CX">Božični otok</territory>
			<territory type="CY">Ciper</territory>
			<territory type="CZ">Češka</territory>
			<territory type="DE">Nemčija</territory>
			<territory type="DJ">Džibuti</territory>
			<territory type="DK">Danska</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikanska republika</territory>
			<territory type="DZ">Alžirija</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Estonija</territory>
			<territory type="EG">Egipt</territory>
			<territory type="EH">Zahodna Sahara</territory>
			<territory type="ER">Eritreja</territory>
			<territory type="ES">Španija</territory>
			<territory type="ET">Etiopija</territory>
			<territory type="FI">Finska</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandski (Malvinski) otoki</territory>
			<territory type="FM">Mikronezija</territory>
			<territory type="FO">Fererski otoki</territory>
			<territory type="FR">Francija</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Velika Britanija</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzija</territory>
			<territory type="GF">Francoska Gvajana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grenlandija</territory>
			<territory type="GM">Gambija</territory>
			<territory type="GN">Gvineja</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatorialna Gvineja</territory>
			<territory type="GR">Grčija</territory>
			<territory type="GS">Južna Georgija in Južni Sandwich Islands</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Gvineja Bissau</territory>
			<territory type="GY">Gvajana</territory>
			<territory type="HK">Hong Kong S.A.R. Kitajske</territory>
			<territory type="HM">Heardov otok in McDonaldovi otoki</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Hrvaška</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Madžarska</territory>
			<territory type="ID">Indonezija</territory>
			<territory type="IE">Irska</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Otok Man</territory>
			<territory type="IN">Indija</territory>
			<territory type="IO">Britanska Indija</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islandija</territory>
			<territory type="IT">Italija</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japonska</territory>
			<territory type="KE">Kenija</territory>
			<territory type="KG">Kirgizistan</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komori</territory>
			<territory type="KN">Saint Kitts in Nevis</territory>
			<territory type="KP">Severna Koreja</territory>
			<territory type="KR">Južna Koreja</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KY">Kajmanski otoki</territory>
			<territory type="KZ">Kazahstan</territory>
			<territory type="LA">Ljudska demokratična republika Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Šrilanka</territory>
			<territory type="LR">Liberija</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litva</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Latvija</territory>
			<territory type="LY">Libija</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Republika Moldova</territory>
			<territory type="ME">Črna gora</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallovi otoki</territory>
			<territory type="MK">Republika Makedonija</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolija</territory>
			<territory type="MO">Makao S.A.R. Kitajske</territory>
			<territory type="MP">Severni Marianski otoki</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mavretanija</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldivi</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Mehika</territory>
			<territory type="MY">Malezija</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibija</territory>
			<territory type="NC">Nova Kaledonija</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Otok Norfolk</territory>
			<territory type="NG">Nigerija</territory>
			<territory type="NI">Nikaragva</territory>
			<territory type="NL">Nizozemska</territory>
			<territory type="NO">Norveška</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nova Zelandija</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francoska Polinezija</territory>
			<territory type="PG">Papua Nova Gvineja</territory>
			<territory type="PH">Filipini</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poljska</territory>
			<territory type="PM">Saint Pierre in Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portoriko</territory>
			<territory type="PS">Palestinsko ozemlje</territory>
			<territory type="PT">Portugalska</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragvaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Ostala oceanija</territory>
			<territory type="QU">Evropska unija</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romunija</territory>
			<territory type="RS">Srbija</territory>
			<territory type="RU">Ruska federacija</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudova Arabija</territory>
			<territory type="SB">Salomonovo otočje</territory>
			<territory type="SC">Sejšeli</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Švedska</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Sveta Helena</territory>
			<territory type="SI">Slovenija</territory>
			<territory type="SJ">Svalbard in Jan Mayen</territory>
			<territory type="SK">Slovaška</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalija</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome in Principe</territory>
			<territory type="SV">Salvador</territory>
			<territory type="SY">Sirija</territory>
			<territory type="SZ">Svazi</territory>
			<territory type="TC">Otočji Turks in Caicos</territory>
			<territory type="TD">Čad</territory>
			<territory type="TF">Francoski južni teritorij</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajska</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Vzhodni Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunizija</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turčija</territory>
			<territory type="TT">Trinidad in Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajvan</territory>
			<territory type="TZ">Tanzanija</territory>
			<territory type="UA">Ukrajina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Ameriški manjši oddaljeni otoki</territory>
			<territory type="US">Združene države Amerike</territory>
			<territory type="UY">Urugvaj</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent in Grenadine</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britanski Deviški otoki</territory>
			<territory type="VI">Ameriški Deviški otoki</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis in Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Južna Afrika</territory>
			<territory type="ZM">Zambija</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">Neznana ali neveljavna regija</territory>
		</territories>
		<variants>
			<variant type="AREVELA">armenska (vzhodna)</variant>
			<variant type="AREVMDA">armenska (zahodna)</variant>
		</variants>
		<keys>
			<key type="calendar">Kolendar</key>
			<key type="collation">Zlaganje</key>
			<key type="currency">Valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Razvrščanje po sistemu tradicionalne kitajščine - Big5</type>
			<type type="buddhist" key="calendar">Budistični kolendar</type>
			<type type="chinese" key="calendar">Kitajski kolendar</type>
			<type type="direct" key="collation">Direktno zlaganje</type>
			<type type="gb2312han" key="collation">Razvrščanje po sistemu poenostavljene kitajščine - GB2312</type>
			<type type="gregorian" key="calendar">Gregorijanski kolendar</type>
			<type type="hebrew" key="calendar">Hebrejski kolendar</type>
			<type type="islamic" key="calendar">Islamski kolendar</type>
			<type type="islamic-civil" key="calendar">Islamski civilni kolendar</type>
			<type type="japanese" key="calendar">Japonski kolendar</type>
			<type type="phonebook" key="collation">Zlaganje po abecedi</type>
			<type type="pinyin" key="collation">Pinyin zlaganje</type>
			<type type="stroke" key="collation">Stroke order zlaganje</type>
			<type type="traditional" key="collation">Tradicionano zlaganje</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">Imperialni</measurementSystemName>
			<measurementSystemName type="metric">Metrični</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Jezik: {0}</codePattern>
			<codePattern type="territory">Regija: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a-c č d-p r s š t-v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>»</quotationStart>
		<quotationEnd>«</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>“</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">avg</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">marec</month>
							<month type="4">april</month>
							<month type="5">maj</month>
							<month type="6">junij</month>
							<month type="7">julij</month>
							<month type="8">avgust</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">j</month>
							<month type="2">f</month>
							<month type="3">m</month>
							<month type="4">a</month>
							<month type="5">m</month>
							<month type="6">j</month>
							<month type="7">j</month>
							<month type="8">a</month>
							<month type="9">s</month>
							<month type="10">o</month>
							<month type="11">n</month>
							<month type="12">d</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ned</day>
							<day type="mon">pon</day>
							<day type="tue">tor</day>
							<day type="wed">sre</day>
							<day type="thu">čet</day>
							<day type="fri">pet</day>
							<day type="sat">sob</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">nedelja</day>
							<day type="mon">ponedeljek</day>
							<day type="tue">torek</day>
							<day type="wed">sreda</day>
							<day type="thu">četrtek</day>
							<day type="fri">petek</day>
							<day type="sat">sobota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">n</day>
							<day type="mon">p</day>
							<day type="tue">t</day>
							<day type="wed">s</day>
							<day type="thu">č</day>
							<day type="fri">p</day>
							<day type="sat">s</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Prvo četrtletje</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Tretje četrtletje</quarter>
							<quarter type="4">Četrto četrtletje</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>dop.</am>
				<pm>pop.</pm>
				<eras>
					<eraNames>
						<era type="0">pred našim štetjem</era>
						<era type="1">naše štetje</era>
					</eraNames>
					<eraAbbr>
						<era type="0">pr.n.š.</era>
						<era type="1">po Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd. MMMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.-M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M. - E, d.M.</greatestDifference>
							<greatestDifference id="d">E, d.M. - E, d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M. - d.M.</greatestDifference>
							<greatestDifference id="d">d.M. - d.M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yy - M.yy</greatestDifference>
							<greatestDifference id="y">M.yy - M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="d">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="y">E, d.M.yy - E, d.M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, dd. MMM yyyy - E, dd. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd. MMM yyyy - dd. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="d">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="y">d.M.yy - d.M.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Doba</displayName>
					</field>
					<field type="year">
						<displayName>Leto</displayName>
					</field>
					<field type="month">
						<displayName>Mesec</displayName>
					</field>
					<field type="week">
						<displayName>Teden</displayName>
					</field>
					<field type="day">
						<displayName>dan</displayName>
						<relative type="0">danes</relative>
						<relative type="1">Jutri</relative>
						<relative type="2">pojutrišnjem</relative>
						<relative type="3">čez tri dni</relative>
						<relative type="-1">včeraj</relative>
						<relative type="-2">predvčerajšnjim</relative>
						<relative type="-3">pred tremi dnevi</relative>
					</field>
					<field type="weekday">
						<displayName>Dan v tednu</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Čas dneva</displayName>
					</field>
					<field type="hour">
						<displayName>Ura</displayName>
					</field>
					<field type="minute">
						<displayName>Minuta</displayName>
					</field>
					<field type="second">
						<displayName>Sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>Območje</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Neznano</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubaj</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Erevan</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Južni pol</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Dunaj</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Daka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruselj</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofija</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrajn</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudi</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Brunej</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St Johns</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Kokosovi</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinšasa</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Lubumbaši</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidžan</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Velikonočni otok</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Šangaj</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Zelenortski otoki</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Božični</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikozija</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhagen</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžir</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Talin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarski otoki</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Adis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Ferski otoki</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Pariz</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Akra</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gvadelupe</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atene</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Bisau</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gvajana</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budimpešta</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Džakarta</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rim</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Aman</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biškek</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Pjongjang</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvajt</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kajman</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Almati</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Bejrut</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Vilna</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburg</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinik</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivi</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karači</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšava</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portoriko</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azori</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lizbona</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarešta</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadir</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijad</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Kartum</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>St. Helena</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadiš</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damask</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ašgabat</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Darussalam</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijev</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporožje</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Center</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Vincennes</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Petersburg</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Tell City</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Knox</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Winamac</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marengo</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Vevay</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Monticello</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Sajgon</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Srednjeevropski čas</standard>
					<daylight>Srednjeevropski poletni čas</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Vzhodnoevropski čas</standard>
					<daylight>Vzhodnoevropski poletni čas</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>dirham Združenih Arabskih Emiratov</displayName>
			</currency>
			<currency type="ARS">
				<displayName>argentinski peso</displayName>
			</currency>
			<currency type="AUD">
				<displayName>avstralski dolar</displayName>
			</currency>
			<currency type="BGN">
				<displayName>bolgarski lev</displayName>
			</currency>
			<currency type="BND">
				<displayName>brunejski dolar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>bolivijski boliviano</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilski Real</displayName>
			</currency>
			<currency type="CAD">
				<displayName>kanadski dolar</displayName>
			</currency>
			<currency type="CHF">
				<displayName>švicarski frank</displayName>
			</currency>
			<currency type="CLP">
				<displayName>čilski peso</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Kitajski Yuan Renminbi</displayName>
			</currency>
			<currency type="COP">
				<displayName>kolumbijski peso</displayName>
			</currency>
			<currency type="CZK">
				<displayName>češka krona</displayName>
			</currency>
			<currency type="DEM">
				<displayName>nemška marka</displayName>
			</currency>
			<currency type="DKK">
				<displayName>danska krone</displayName>
			</currency>
			<currency type="EEK">
				<displayName>estonska krona</displayName>
			</currency>
			<currency type="EGP">
				<displayName>egiptovski funt</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Evro</displayName>
			</currency>
			<currency type="FJD">
				<displayName>fidžijski dolar</displayName>
			</currency>
			<currency type="FRF">
				<displayName>francoski frank</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britanski Funt Sterling</displayName>
			</currency>
			<currency type="HKD">
				<displayName>hongkonški dolar</displayName>
			</currency>
			<currency type="HRK">
				<displayName>hrvaška kuna</displayName>
			</currency>
			<currency type="HUF">
				<displayName>madžarski forint</displayName>
			</currency>
			<currency type="IDR">
				<displayName>indonezijska rupija</displayName>
			</currency>
			<currency type="ILS">
				<displayName>izraelski šekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijski Rupi</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japonski Jen</displayName>
			</currency>
			<currency type="KES">
				<displayName>kenijski šiling</displayName>
			</currency>
			<currency type="KRW">
				<displayName>južnokorejski von</displayName>
			</currency>
			<currency type="LTL">
				<displayName>litovski litas</displayName>
			</currency>
			<currency type="MAD">
				<displayName>maroški dirham</displayName>
			</currency>
			<currency type="MTL">
				<displayName>malteška lira</displayName>
			</currency>
			<currency type="MXN">
				<displayName>mehiški peso</displayName>
			</currency>
			<currency type="MYR">
				<displayName>malezijski ringgit</displayName>
			</currency>
			<currency type="NOK">
				<displayName>norveška krona</displayName>
			</currency>
			<currency type="NZD">
				<displayName>novozelandski dolar</displayName>
			</currency>
			<currency type="PEN">
				<displayName>perujski novi sol</displayName>
			</currency>
			<currency type="PHP">
				<displayName>filipinski peso</displayName>
			</currency>
			<currency type="PKR">
				<displayName>pakistanska rupija</displayName>
			</currency>
			<currency type="PLN">
				<displayName>poljski novi zlot</displayName>
			</currency>
			<currency type="RON">
				<displayName>romunski leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>srbski dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ruska Rublja</displayName>
			</currency>
			<currency type="SAR">
				<displayName>saudski rial</displayName>
			</currency>
			<currency type="SEK">
				<displayName>švedska krona</displayName>
			</currency>
			<currency type="SGD">
				<displayName>singapurski dolar</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovenski tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>slovaška krona</displayName>
			</currency>
			<currency type="THB">
				<displayName>tajski baht</displayName>
			</currency>
			<currency type="TRL">
				<displayName>turška lira</displayName>
			</currency>
			<currency type="TRY">
				<displayName>nova turška lira</displayName>
			</currency>
			<currency type="TWD">
				<displayName>novi tajvanski dolar</displayName>
			</currency>
			<currency type="UAH">
				<displayName>ukrajinska grivna</displayName>
			</currency>
			<currency type="USD">
				<displayName>Ameriški Dolar</displayName>
			</currency>
			<currency type="VEB">
				<displayName>venezuelski bolivar</displayName>
			</currency>
			<currency type="VND">
				<displayName>vientnamski dong</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Neznana ali neveljavna valuta</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="ZAR">
				<displayName>južnoafriški rand</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} dnevi</unitPattern>
			<unitPattern count="one">{0} dan</unitPattern>
			<unitPattern count="other">{0} dni</unitPattern>
			<unitPattern count="two">{0} dni</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} ure</unitPattern>
			<unitPattern count="one">{0} ura</unitPattern>
			<unitPattern count="other">{0} ur</unitPattern>
			<unitPattern count="two">{0} uri</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} minute</unitPattern>
			<unitPattern count="one">{0} minuta</unitPattern>
			<unitPattern count="other">{0} minut</unitPattern>
			<unitPattern count="two">{0} minuti</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} meseci</unitPattern>
			<unitPattern count="one">{0} mesec</unitPattern>
			<unitPattern count="other">{0} meseci</unitPattern>
			<unitPattern count="two">{0} meseca</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} sekunde</unitPattern>
			<unitPattern count="one">{0} sekunda</unitPattern>
			<unitPattern count="other">{0} sekund</unitPattern>
			<unitPattern count="two">{0} sekundi</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} tedni</unitPattern>
			<unitPattern count="one">{0} teden</unitPattern>
			<unitPattern count="other">{0} tednov</unitPattern>
			<unitPattern count="two">{0} tedna</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} leta</unitPattern>
			<unitPattern count="one">{0} leto</unitPattern>
			<unitPattern count="other">{0} let</unitPattern>
			<unitPattern count="two">{0} leti</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>da:d:ja:j</yesstr>
			<nostr>no:NO:n:N:ne:NE</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�[::Locale/Data/kk_Cyrl_KZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:18:43 $"/>
		<language type="kk"/>
		<script type="Cyrl"/>
		<territory type="KZ"/>
	</identity>
</ldml>
PKpG[K�<H##Locale/Data/ny_MW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ny"/>
		<territory type="MW"/>
	</identity>
</ldml>
PKpG[�$w�w�wLocale/Data/nb.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.96 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="nb"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhasisk</language>
			<language type="ace">achinesisk</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avestisk</language>
			<language type="af">afrikaans</language>
			<language type="afa">afroasiatisk språk</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadisk</language>
			<language type="ale">aleutisk</language>
			<language type="alg">algonkinsk språk</language>
			<language type="alt">søraltaisk</language>
			<language type="am">amharisk</language>
			<language type="an">aragonsk</language>
			<language type="ang">gammelengelsk</language>
			<language type="anp">angika</language>
			<language type="apa">apachespråk</language>
			<language type="ar">arabisk</language>
			<language type="arc">arameisk</language>
			<language type="arn">araukansk</language>
			<language type="arp">arapaho</language>
			<language type="art">kunstig språk</language>
			<language type="arw">arawak</language>
			<language type="as">assamisk</language>
			<language type="ast">asturisk</language>
			<language type="ath">athapaskansk språk</language>
			<language type="aus">australsk språk</language>
			<language type="av">avarisk</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">aserbajdsjansk</language>
			<language type="ba">basjkirsk</language>
			<language type="bad">banda</language>
			<language type="bai">bamilekisk språk</language>
			<language type="bal">baluchi</language>
			<language type="ban">balinesisk</language>
			<language type="bas">basa</language>
			<language type="bat">baltisk språk</language>
			<language type="be">hviterussisk</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berbisk</language>
			<language type="bg">bulgarsk</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetansk</language>
			<language type="br">bretonsk</language>
			<language type="bra">braj</language>
			<language type="bs">bosnisk</language>
			<language type="btk">batak</language>
			<language type="bua">buriat</language>
			<language type="bug">buginesisk</language>
			<language type="byn">blin</language>
			<language type="ca">katalansk</language>
			<language type="cad">caddo</language>
			<language type="cai">sentralamerikansk indiansk språk</language>
			<language type="car">karibisk</language>
			<language type="cau">kaukasisk språk</language>
			<language type="cch">atsam</language>
			<language type="ce">tsjetsjensk</language>
			<language type="ceb">cebuansk</language>
			<language type="cel">keltisk språk</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatai</language>
			<language type="chk">chuukesisk</language>
			<language type="chm">mari</language>
			<language type="chn">chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewiansk</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">kamisk språk</language>
			<language type="co">korsikansk</language>
			<language type="cop">koptisk</language>
			<language type="cpe">engelskbasert kreol- eller pidginspråk</language>
			<language type="cpf">franskbasert kreol- eller pidginspråk</language>
			<language type="cpp">portugisiskbasert kreol- eller pidginspråk</language>
			<language type="cr">cree</language>
			<language type="crh">krimtatarisk</language>
			<language type="crp">kreol- eller pidginspråk</language>
			<language type="cs">tsjekkisk</language>
			<language type="csb">kasjubisk</language>
			<language type="cu">kirkeslavisk</language>
			<language type="cus">kusjitisk språk</language>
			<language type="cv">tsjuvansk</language>
			<language type="cy">walisisk</language>
			<language type="da">dansk</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">tysk</language>
			<language type="de_AT">østerriksk tysk</language>
			<language type="de_CH">sveitsisk høytysk</language>
			<language type="del">delaware</language>
			<language type="den">slavisk</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">dravidisk språk</language>
			<language type="dsb">lavsorbisk</language>
			<language type="dua">duala</language>
			<language type="dum">mellomnederlandsk</language>
			<language type="dv">divehi</language>
			<language type="dyu">dyula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">gammelegyptisk</language>
			<language type="eka">ekajuk</language>
			<language type="el">gresk</language>
			<language type="elx">elamittisk</language>
			<language type="en">engelsk</language>
			<language type="en_AU">australsk engelsk</language>
			<language type="en_CA">canadisk engelsk</language>
			<language type="en_GB">britisk engelsk</language>
			<language type="en_US">amerikansk engelsk</language>
			<language type="enm">mellomengelsk</language>
			<language type="eo">esperanto</language>
			<language type="es">spansk</language>
			<language type="es_419">latinamerikansk spansk</language>
			<language type="es_ES">iberisk spansk</language>
			<language type="et">estisk</language>
			<language type="eu">baskisk</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persisk</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">finsk</language>
			<language type="fil">filippinsk</language>
			<language type="fiu">finsk-ugrisk språk</language>
			<language type="fj">fijiansk</language>
			<language type="fo">færøysk</language>
			<language type="fon">fon</language>
			<language type="fr">fransk</language>
			<language type="fr_CA">canadisk fransk</language>
			<language type="fr_CH">sveitsisk fransk</language>
			<language type="frm">mellomfransk</language>
			<language type="fro">gammelfransk</language>
			<language type="frr">nordfrisisk</language>
			<language type="frs">østfrisisk</language>
			<language type="fur">friuliansk</language>
			<language type="fy">vestfrisisk</language>
			<language type="ga">irsk</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">skotsk gælisk</language>
			<language type="gem">germansk språk</language>
			<language type="gez">ges</language>
			<language type="gil">kiribatisk</language>
			<language type="gl">galisisk</language>
			<language type="gmh">mellomhøytysk</language>
			<language type="gn">guarani</language>
			<language type="goh">gammelhøytysk</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotisk</language>
			<language type="grb">grebo</language>
			<language type="grc">gammelgresk</language>
			<language type="gsw">sveitsertysk</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiisk</language>
			<language type="he">hebraisk</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hettittisk</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">kroatisk</language>
			<language type="hsb">høysorbisk</language>
			<language type="ht">haitisk</language>
			<language type="hu">ungarsk</language>
			<language type="hup">hupa</language>
			<language type="hy">armensk</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesisk</language>
			<language type="ie">interlingue</language>
			<language type="ig">ibo</language>
			<language type="ii">sichuan-yi</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiak</language>
			<language type="ilo">iloko</language>
			<language type="inc">indisk språk</language>
			<language type="ine">indoeuropeisk språk</language>
			<language type="inh">ingusjisk</language>
			<language type="io">ido</language>
			<language type="ira">iransk</language>
			<language type="iro">irokansk språk</language>
			<language type="is">islandsk</language>
			<language type="it">italiensk</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japansk</language>
			<language type="jbo">lojban</language>
			<language type="jpr">jødepersisk</language>
			<language type="jrb">jødearabisk</language>
			<language type="jv">javanesisk</language>
			<language type="ka">georgisk</language>
			<language type="kaa">karakalpakisk</language>
			<language type="kab">kabylsk</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karensk</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardisk</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kikongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisanspråk</language>
			<language type="kho">khotanesisk</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kasakhisk</language>
			<language type="kl">grønlandsk</language>
			<language type="km">khmer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">koreansk</language>
			<language type="kok">konkani</language>
			<language type="kos">kosraeansk</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karachay-balkar</language>
			<language type="krl">karelsk</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kasjmiri</language>
			<language type="ku">kurdisk</language>
			<language type="kum">kumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">kornisk</language>
			<language type="ky">kirgisisk</language>
			<language type="la">latin</language>
			<language type="lad">ladinsk</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburgsk</language>
			<language type="lez">lezghian</language>
			<language type="lg">ganda</language>
			<language type="li">limburgisk</language>
			<language type="ln">lingala</language>
			<language type="lo">laotisk</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litauisk</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">latvisk</language>
			<language type="mad">maduresisk</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandingo</language>
			<language type="map">austronesisk</language>
			<language type="mas">masai</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">madagassisk</language>
			<language type="mga">mellomirsk</language>
			<language type="mh">marshallesisk</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">annet språk</language>
			<language type="mk">makedonsk</language>
			<language type="mkh">mon-khmerspråk</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolsk</language>
			<language type="mnc">mandsju</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobospråk</language>
			<language type="mo">moldavisk</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malayisk</language>
			<language type="mt">maltesisk</language>
			<language type="mul">flere språk</language>
			<language type="mun">mundaspråk</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandesisk</language>
			<language type="mwr">marwari</language>
			<language type="my">burmesisk</language>
			<language type="myn">mayaspråk</language>
			<language type="myv">erzya</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">nordamerikansk indiansk språk</language>
			<language type="nap">napolitansk</language>
			<language type="nb">norsk bokmål</language>
			<language type="nd">nord-ndebele</language>
			<language type="nds">lavtysk</language>
			<language type="ne">nepalsk</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">niger-kordofiansk språk</language>
			<language type="niu">niueansk</language>
			<language type="nl">nederlandsk</language>
			<language type="nl_BE">flamsk</language>
			<language type="nn">norsk nynorsk</language>
			<language type="no">norsk</language>
			<language type="nog">nogai</language>
			<language type="non">gammelnorsk</language>
			<language type="nqo">nkå</language>
			<language type="nr">sør-ndebele</language>
			<language type="nso">nord-sotho</language>
			<language type="nub">nubisk språk</language>
			<language type="nv">navajo</language>
			<language type="nwc">klassisk newari</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">oksitansk</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetisk</language>
			<language type="osa">osage</language>
			<language type="ota">ottomansk tyrkisk</language>
			<language type="oto">otomisk språk</language>
			<language type="pa">panjabi</language>
			<language type="paa">papuisk språk</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauisk</language>
			<language type="peo">gammelpersisk</language>
			<language type="phi">filippinsk språk</language>
			<language type="phn">fønikisk</language>
			<language type="pi">pali</language>
			<language type="pl">polsk</language>
			<language type="pon">ponapisk</language>
			<language type="pra">prakritspråk</language>
			<language type="pro">gammelprovençalsk</language>
			<language type="ps">pashto</language>
			<language type="pt">portugisisk</language>
			<language type="pt_BR">brasiliansk portugisisk</language>
			<language type="pt_PT">iberisk portugisisk</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongansk</language>
			<language type="rm">retoromansk</language>
			<language type="rn">rundi</language>
			<language type="ro">rumensk</language>
			<language type="roa">romansk språk</language>
			<language type="rom">romani</language>
			<language type="root">rot</language>
			<language type="ru">russisk</language>
			<language type="rup">aromansk</language>
			<language type="rw">kinjarwanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">jakutsk</language>
			<language type="sai">søramerikansk indiansk språk</language>
			<language type="sal">salishansk språk</language>
			<language type="sam">samaritansk arameisk</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardinsk</language>
			<language type="scn">siciliansk</language>
			<language type="sco">skotsk</language>
			<language type="sd">sindhi</language>
			<language type="se">nordsamisk</language>
			<language type="sel">selkupisk</language>
			<language type="sem">semittisk språk</language>
			<language type="sg">sango</language>
			<language type="sga">gammelirsk</language>
			<language type="sgn">tegnspråk</language>
			<language type="sh">serbokroatisk</language>
			<language type="shn">shan</language>
			<language type="si">singalesisk</language>
			<language type="sid">sidamo</language>
			<language type="sio">siouxspråk</language>
			<language type="sit">sino-tibetansk språk</language>
			<language type="sk">slovakisk</language>
			<language type="sl">slovensk</language>
			<language type="sla">slavisk språk</language>
			<language type="sm">samoansk</language>
			<language type="sma">sørsamisk</language>
			<language type="smi">samisk språk</language>
			<language type="smj">lulesamisk</language>
			<language type="smn">enaresamisk</language>
			<language type="sms">skoltesamisk</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somali</language>
			<language type="sog">sogdisk</language>
			<language type="son">songhai</language>
			<language type="sq">albansk</language>
			<language type="sr">serbisk</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">swati</language>
			<language type="ssa">nilo-saharaspråk</language>
			<language type="st">sør-sotho</language>
			<language type="su">sundanesisk</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumerisk</language>
			<language type="sv">svensk</language>
			<language type="sw">swahili</language>
			<language type="syc">klassisk syrisk</language>
			<language type="syr">syrisk</language>
			<language type="ta">tamil</language>
			<language type="tai">taispråk</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadsjikisk</language>
			<language type="th">thai</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">turkmensk</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamasjek</language>
			<language type="tn">setswana</language>
			<language type="to">tongansk</language>
			<language type="tog">nyasa-tongansk</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">tyrkisk</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatarisk</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupispråk</language>
			<language type="tut">altaisk språk</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahitisk</language>
			<language type="tyv">tuvinisk</language>
			<language type="udm">udmurt</language>
			<language type="ug">uigurisk</language>
			<language type="uga">ugaritisk</language>
			<language type="uk">ukrainsk</language>
			<language type="umb">umbundu</language>
			<language type="und">ukjent eller ugyldig språk</language>
			<language type="ur">urdu</language>
			<language type="uz">usbekisk</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamesisk</language>
			<language type="vo">volapyk</language>
			<language type="vot">votisk</language>
			<language type="wa">vallonsk</language>
			<language type="wak">wakasjansk språk</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">sorbisk språk</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xhosa</language>
			<language type="yao">yao</language>
			<language type="yap">yapesisk</language>
			<language type="yi">jiddisk</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupisk språk</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotec</language>
			<language type="zbl">blissymboler</language>
			<language type="zen">zenaga</language>
			<language type="zh">kinesisk</language>
			<language type="zh_Hans">forenklet kinesisk</language>
			<language type="zh_Hant">tradisjonell kinesisk</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">uten språklig innhold</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabisk</script>
			<script type="Armi">arameisk</script>
			<script type="Armn">armensk</script>
			<script type="Avst">avestisk</script>
			<script type="Bali">balinesisk</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengalsk</script>
			<script type="Blis">blissymbol</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braille</script>
			<script type="Bugi">buginesisk</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">chakma</script>
			<script type="Cans">felles kanadiske urspråksstavelser</script>
			<script type="Cari">karisk</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">koptisk</script>
			<script type="Cprt">kypriotisk</script>
			<script type="Cyrl">kyrillisk</script>
			<script type="Cyrs">kirkeslavisk kyrillisk</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egyptisk demotisk</script>
			<script type="Egyh">egyptisk hieratisk</script>
			<script type="Egyp">egyptiske hieroglyfer</script>
			<script type="Ethi">etiopisk</script>
			<script type="Geok">georgisk khutsuri</script>
			<script type="Geor">georgisk</script>
			<script type="Glag">glagolittisk</script>
			<script type="Goth">gotisk</script>
			<script type="Grek">gresk</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">forenklet han</script>
			<script type="Hant">tradisjonell han</script>
			<script type="Hebr">hebraisk</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana eller hiragana</script>
			<script type="Hung">gammelungarsk</script>
			<script type="Inds">indus</script>
			<script type="Ital">gammelitalisk</script>
			<script type="Java">javanesisk</script>
			<script type="Jpan">japansk</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshthi</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannada</script>
			<script type="Kore">koreansk</script>
			<script type="Kthi">kaithisk</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laotisk</script>
			<script type="Latf">frakturlatinsk</script>
			<script type="Latg">gælisk latinsk</script>
			<script type="Latn">latinsk</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">lineær A</script>
			<script type="Linb">lineær B</script>
			<script type="Lyci">lykisk</script>
			<script type="Lydi">lydisk</script>
			<script type="Mand">mandaisk</script>
			<script type="Mani">manikeisk</script>
			<script type="Maya">maya-hieroglyfer</script>
			<script type="Mero">meroitisk</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongolsk</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei-mayek</script>
			<script type="Mymr">myanmar</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol-chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanya</script>
			<script type="Perm">gammelpermisk</script>
			<script type="Phag">phags-pa</script>
			<script type="Phlv">pahlavi</script>
			<script type="Phnx">fønikisk</script>
			<script type="Plrd">pollard-fonetisk</script>
			<script type="Qaai">nedarvet</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">runer</script>
			<script type="Samr">samaritansk</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">tegnskrift</script>
			<script type="Shaw">shavisk</script>
			<script type="Sinh">sinhala</script>
			<script type="Sund">sundanesisk</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">syrisk</script>
			<script type="Syre">estrangelosyriakisk</script>
			<script type="Syrj">vestlig syriakisk</script>
			<script type="Syrn">østlig syriakisk</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">ny tai lue</script>
			<script type="Taml">tamil</script>
			<script type="Tavt">tai viet</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">thai</script>
			<script type="Tibt">tibetansk</script>
			<script type="Ugar">ugaritisk</script>
			<script type="Vaii">vai</script>
			<script type="Visp">synlig tale</script>
			<script type="Xpeo">gammelpersisk</script>
			<script type="Xsux">sumersk-akkadisk kileskrift</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">matematisk notasjon</script>
			<script type="Zsym">symboler</script>
			<script type="Zxxx">språk uten skrift</script>
			<script type="Zyyy">felles</script>
			<script type="Zzzz">ukjent eller ugyldig skrift</script>
		</scripts>
		<territories>
			<territory type="001">verden</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Nord-Amerika</territory>
			<territory type="005">Sør-Amerika</territory>
			<territory type="009">Oseania</territory>
			<territory type="011">Vest-Afrika</territory>
			<territory type="013">Sentral-Amerika</territory>
			<territory type="014">Øst-Afrika</territory>
			<territory type="015">Nord-Afrika</territory>
			<territory type="017">Sentral-Afrika</territory>
			<territory type="018">Sørlige Afrika</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Nordlige Amerika</territory>
			<territory type="029">Karibia</territory>
			<territory type="030">Øst-Asia</territory>
			<territory type="034">Sør-Asia</territory>
			<territory type="035">Sørøst-Asia</territory>
			<territory type="039">Sør-Europa</territory>
			<territory type="053">Australia og New Zealand</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Mikronesia</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">Sørsentral-Asia</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Sentral-Asia</territory>
			<territory type="145">Vest-Asia</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Øst-Europa</territory>
			<territory type="154">Nord-Europa</territory>
			<territory type="155">Vest-Europa</territory>
			<territory type="172">Samveldet av uavhengige stater</territory>
			<territory type="419">Latin-Amerika og Karibia</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">De forente arabiske emirater</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua og Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">De nederlandske antiller</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerikansk Samoa</territory>
			<territory type="AT">Østerrike</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Åland</territory>
			<territory type="AZ">Aserbajdsjan</territory>
			<territory type="BA">Bosnia-Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei Darussalam</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvetøya</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Hviterussland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Kokosøyene</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CF">Den sentralafrikanske republikk</territory>
			<territory type="CG">Kongo-Brazzaville</territory>
			<territory type="CH">Sveits</territory>
			<territory type="CI">Elfenbenskysten</territory>
			<territory type="CK">Cookøyene</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia og Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Kapp Verde</territory>
			<territory type="CX">Christmasøya</territory>
			<territory type="CY">Kypros</territory>
			<territory type="CZ">Tsjekkia</territory>
			<territory type="DE">Tyskland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Den dominikanske republikk</territory>
			<territory type="DZ">Algerie</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egypt</territory>
			<territory type="EH">Vest-Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spania</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falklandsøyene</territory>
			<territory type="FM">Mikronesiaføderasjonen</territory>
			<territory type="FO">Færøyene</territory>
			<territory type="FR">Frankrike</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Storbritannia</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Fransk Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grønland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatorial-Guinea</territory>
			<territory type="GR">Hellas</territory>
			<territory type="GS">Sør-Georgia og de sørlige Sandwich-øyene</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heardøya og McDonaldøyene</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungarn</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Britiske territorier i Indiahavet</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Kambodsja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorene</territory>
			<territory type="KN">St. Kitts og Nevis</territory>
			<territory type="KP">Nord-Korea</territory>
			<territory type="KR">Sør-Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Caymanøyene</territory>
			<territory type="KZ">Kasakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">St. Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litauen</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalløyene</territory>
			<territory type="MK">Makedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Nord-Marianene</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldivene</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mosambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Ny-Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkøya</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederland</territory>
			<territory type="NO">Norge</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Fransk Polynesia</territory>
			<territory type="PG">Papua Ny-Guinea</territory>
			<territory type="PH">Filippinene</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">St. Pierre og Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinsk territorium</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">avsidesliggende Oceania</territory>
			<territory type="QU">Den europeiske union</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Russland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi-Arabia</territory>
			<territory type="SB">Salomonøyene</territory>
			<territory type="SC">Seychellene</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sverige</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">St. Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard og Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé og Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks- og Caicosøyene</territory>
			<territory type="TD">Tsjad</territory>
			<territory type="TF">De franske sørterritorier</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadsjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Øst-Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Tyrkia</territory>
			<territory type="TT">Trinidad og Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">USAs ytre småøyer</territory>
			<territory type="US">USA</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikanstaten</territory>
			<territory type="VC">St. Vincent og Grenadinene</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">De britiske jomfruøyene</territory>
			<territory type="VI">De amerikanske jomfruøyene</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis og Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sør-Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">ukjent eller ugyldig område</territory>
		</territories>
		<variants>
			<variant type="1901">tradisjonell tysk ortografi</variant>
			<variant type="1996">tysk ortografi fra 1996</variant>
			<variant type="AREVELA">øst-armensk</variant>
			<variant type="AREVMDA">vest-armensk</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">det internasjonale fonetiske alfabet (IPA)</variant>
			<variant type="FONUPA">det uraliske fonetiske alfabet (UPA)</variant>
			<variant type="MONOTON">monotonisk rettskriving</variant>
			<variant type="POLYTON">polytonisk rettskriving</variant>
			<variant type="REVISED">revidert rettskriving</variant>
			<variant type="ROZAJ">resisk dialekt</variant>
			<variant type="SAAHO">saaho dialekt</variant>
			<variant type="SCOTLAND">skotsk standard engelsk</variant>
			<variant type="SCOUSE">scouse dialekt</variant>
			<variant type="VALENCIA">valensisk dialekt</variant>
		</variants>
		<keys>
			<key type="calendar">kalender</key>
			<key type="collation">kollasjon</key>
			<key type="currency">valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">tradisjonell kinesisk sortering</type>
			<type type="buddhist" key="calendar">buddhistisk kalender</type>
			<type type="chinese" key="calendar">kinesisk kalender</type>
			<type type="direct" key="collation">direkte sortering</type>
			<type type="gb2312han" key="collation">forenklet kinesisk sortering</type>
			<type type="gregorian" key="calendar">gregoriansk kalender</type>
			<type type="hebrew" key="calendar">hebraisk kalender</type>
			<type type="indian" key="calendar">indisk nasjonalkalender</type>
			<type type="islamic" key="calendar">islamsk kalender</type>
			<type type="islamic-civil" key="calendar">islamsk sivil kalender</type>
			<type type="japanese" key="calendar">japansk kalender</type>
			<type type="phonebook" key="collation">telefonkatalogsortering</type>
			<type type="pinyin" key="collation">pinyinsortering</type>
			<type type="roc" key="calendar">kalender for Republikken Kina</type>
			<type type="stroke" key="collation">streksortering</type>
			<type type="traditional" key="collation">tradisjonell sortering</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">amerikansk</measurementSystemName>
			<measurementSystemName type="metric">metrisk</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Språk: {0}</codePattern>
			<codePattern type="script">Skrift: {0}</codePattern>
			<codePattern type="territory">Område: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b-e é f-o ó ò ô p-z æ ø å]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ü ž ä ö]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<dateRangePattern>{0}–{1}</dateRangePattern>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan.</month>
							<month type="2">feb.</month>
							<month type="3">mars</month>
							<month type="4">apr.</month>
							<month type="5">mai</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">aug.</month>
							<month type="9">sep.</month>
							<month type="10">okt.</month>
							<month type="11">nov.</month>
							<month type="12">des.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">mars</month>
							<month type="4">april</month>
							<month type="5">mai</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">søn.</day>
							<day type="mon">man.</day>
							<day type="tue">tir.</day>
							<day type="wed">ons.</day>
							<day type="thu">tor.</day>
							<day type="fri">fre.</day>
							<day type="sat">lør.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">søndag</day>
							<day type="mon">mandag</day>
							<day type="tue">tirsdag</day>
							<day type="wed">onsdag</day>
							<day type="thu">torsdag</day>
							<day type="fri">fredag</day>
							<day type="sat">lørdag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">O</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>formiddag</am>
				<pm>ettermiddag</pm>
				<eras>
					<eraNames>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>'kl'. HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH.mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH.mm.ss</dateFormatItem>
						<dateFormatItem id="Hm">HH.mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d.M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="Md">d.M.</dateFormatItem>
						<dateFormatItem id="d">d.</dateFormatItem>
						<dateFormatItem id="mmss">mm.ss</dateFormatItem>
						<dateFormatItem id="ms">mm.ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d. MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}–{1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.–M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd.MM.–E dd.MM.</greatestDifference>
							<greatestDifference id="d">E dd.MM.–E dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM–MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d. MMM–E d. MMM</greatestDifference>
							<greatestDifference id="d">E d.–E d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL–LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM–d. MMM</greatestDifference>
							<greatestDifference id="d">d.–d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM.–dd.MM.</greatestDifference>
							<greatestDifference id="d">dd.MM.–dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.–d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH–HH</greatestDifference>
							<greatestDifference id="h">HH–HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH.mm–HH.mm</greatestDifference>
							<greatestDifference id="h">HH.mm–HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm–HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH.mm–HH.mm v</greatestDifference>
							<greatestDifference id="h">HH.mm–HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm–HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH–HH v</greatestDifference>
							<greatestDifference id="h">HH–HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy–MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy–MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd.MM.yy–E dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E dd.MM.yy–E dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E dd.MM.yy–E dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy–MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d. MMM–E d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d.–E d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d. MMM yyyy–E d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM–MM yyyy</greatestDifference>
							<greatestDifference id="y">MM yyyy–MM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM–d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.–d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy–d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy–dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy–dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy–dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>tidsalder</displayName>
					</field>
					<field type="year">
						<displayName>år</displayName>
					</field>
					<field type="month">
						<displayName>måned</displayName>
					</field>
					<field type="week">
						<displayName>uke</displayName>
					</field>
					<field type="day">
						<displayName>dag</displayName>
						<relative type="0">i dag</relative>
						<relative type="1">i morgen</relative>
						<relative type="2">i overmorgen</relative>
						<relative type="3">om tre dager</relative>
						<relative type="-1">i går</relative>
						<relative type="-2">i forgårs</relative>
						<relative type="-3">for tre dager siden</relative>
					</field>
					<field type="weekday">
						<displayName>ukedag</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>time</displayName>
					</field>
					<field type="minute">
						<displayName>minutt</displayName>
					</field>
					<field type="second">
						<displayName>sekund</displayName>
					</field>
					<field type="zone">
						<displayName>sone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH.mm;-HH.mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Ukjent</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Sydpolen</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wien</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brussel</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novo</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaína</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Thimpu</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Kokosøyene</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Påskeøya</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotá</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kapp Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Christmasøya</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>København</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>El Aaiún</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmara</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanariøyene</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Pohnpei</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Færøyene</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthåb</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athen</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Sør-Georgia</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Jajapura</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Bisjkek</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komorene</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Caymanøyene</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivene</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexico by</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warszawa</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorene</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisboa</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucuresti</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsk</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>St. Helena</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>São Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskus</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dusjanbe</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Asjkhabad</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Dar-es-Salaam</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Uzjhorod</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporozje</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Center, Nord-Dakota</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Tasjkent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<daylight>Acre sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>sentralafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>østafrikansk tid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>sørafrikansk normaltid</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>vestafrikansk tid</standard>
					<daylight>vestafrikansk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<daylight>Amazonas sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>arabisk tid</generic>
					<standard>arabisk standardtid</standard>
					<daylight>arabisk sommertid</daylight>
				</long>
				<short>
					<generic>AT (arabisk)</generic>
					<standard>AST (arabisk)</standard>
					<daylight>ADT (arabisk)</daylight>
				</short>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>sentralaustralsk tid</generic>
					<standard>sentralaustralsk standardtid</standard>
					<daylight>sentralaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>vest-sentralaustralsk tid</generic>
					<standard>vest-sentralaustralsk standardtid</standard>
					<daylight>vest-sentralaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>østaustralsk tid</generic>
					<standard>østaustralsk standardtid</standard>
					<daylight>østaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>vestaustralsk tid</generic>
					<standard>vestaustralsk standardtid</standard>
					<daylight>vestaustralsk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<daylight>Brasilia sommertid</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>kinesisk standardtid</standard>
				</long>
				<short>
					<standard>CST (Kina)</standard>
				</short>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>sentraleuropeisk normaltid</standard>
					<daylight>sentraleuropeisk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>østeuropeisk normaltid</standard>
					<daylight>østeuropeisk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>vesteuropeisk tid</standard>
					<daylight>vesteuropeisk sommertid</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich middeltid</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hong Kong-tid</standard>
					<daylight>Hong Kong-sommertid</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>indisk standardtid</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>indokinesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>sentralindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>østindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>vestindonesisk tid</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>israelsk standardtid</standard>
					<daylight>israelsk sommertid</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>japansk standardtid</standard>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<standard>koreansk standardtid</standard>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<standard>Moskva normaltid</standard>
					<daylight>Moskva sommertid</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>newzealandsk tid</generic>
					<standard>newzealandsk standardtid</standard>
					<daylight>newzealandsk sommertid</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>andorranske pesetas</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afghani</displayName>
			</currency>
			<currency type="ALL">
				<displayName>albanske lek</displayName>
			</currency>
			<currency type="AMD">
				<displayName>armenske dram</displayName>
			</currency>
			<currency type="ANG">
				<displayName>nederlandske antillegylden</displayName>
			</currency>
			<currency type="AOA">
				<displayName>angolanske kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>angolanske kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>angolanske nye kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>angolanske kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>argentinske australer</displayName>
			</currency>
			<currency type="ARP">
				<displayName>argentinske pesos (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>argentinske pesos</displayName>
			</currency>
			<currency type="ATS">
				<displayName>østerrikske shilling</displayName>
				<displayName count="other">østerrikske schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>australske dollar</displayName>
			</currency>
			<currency type="AWG">
				<displayName>arubiske gylden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>aserbajdsjanske manat (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>aserbajdsjanske manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>bosnisk-hercegovinske dinarer</displayName>
			</currency>
			<currency type="BAM">
				<displayName>bosnisk-hercegovinske mark (konvertible)</displayName>
			</currency>
			<currency type="BBD">
				<displayName>barbadiske dollar</displayName>
			</currency>
			<currency type="BDT">
				<displayName>bangladeshiske taka</displayName>
			</currency>
			<currency type="BEC">
				<displayName>belgiske franc (konvertible)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>belgiske franc</displayName>
			</currency>
			<currency type="BEL">
				<displayName>belgiske franc (finansielle)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>bulgarske lev (hard)</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>bulgarske lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>bahrainske dinarer</displayName>
			</currency>
			<currency type="BIF">
				<displayName>burundiske franc</displayName>
			</currency>
			<currency type="BMD">
				<displayName>bermudiske dollar</displayName>
			</currency>
			<currency type="BND">
				<displayName>bruneiske dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>bolivianske pesos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>bolivianske mvdol</displayName>
				<displayName count="one">boliviansk mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>brasilianske cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>brasilianske cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>brasilianske cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>brasilianske realer</displayName>
				<symbol>BRL</symbol>
			</currency>
			<currency type="BRN">
				<displayName>brasilianske cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>brasilianske cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>bahamske dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>bhutanske ngultrum</displayName>
			</currency>
			<currency type="BUK">
				<displayName>burmesiske kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>botswanske pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>hviterussiske nye rubler (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>hviterussiske rubler</displayName>
			</currency>
			<currency type="BZD">
				<displayName>beliziske dollar</displayName>
			</currency>
			<currency type="CAD">
				<displayName>kanadiske dollar</displayName>
			</currency>
			<currency type="CDF">
				<displayName>kongolesiske franc (congolais)</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR euro</displayName>
			</currency>
			<currency type="CHF">
				<displayName>sveitsiske franc</displayName>
			</currency>
			<currency type="CHW">
				<displayName>WIR franc</displayName>
			</currency>
			<currency type="CLF">
				<displayName>chilenske unidades de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>chilenske pesos</displayName>
			</currency>
			<currency type="CNY">
				<displayName>kinesiske yuan renminbi</displayName>
			</currency>
			<currency type="COP">
				<displayName>colombianske pesos</displayName>
			</currency>
			<currency type="COU">
				<displayName>unidad de valor real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>costaricanske colon</displayName>
			</currency>
			<currency type="CSD">
				<displayName>gamle serbiske dinarer</displayName>
			</currency>
			<currency type="CSK">
				<displayName>tsjekkoslovakiske koruna (hard)</displayName>
			</currency>
			<currency type="CUP">
				<displayName>kubanske pesos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>kappverdiske escudo</displayName>
			</currency>
			<currency type="CYP">
				<displayName>kypriotiske pund</displayName>
			</currency>
			<currency type="CZK">
				<displayName>tsjekkiske koruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>østtyske ostmark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>tyske mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>djiboutiske franc</displayName>
			</currency>
			<currency type="DKK">
				<displayName>danske kroner</displayName>
			</currency>
			<currency type="DOP">
				<displayName>dominikanske pesos</displayName>
			</currency>
			<currency type="DZD">
				<displayName>algeriske dinarer</displayName>
			</currency>
			<currency type="ECS">
				<displayName>ecuadorianske sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>ecuadorianske unidad de valor constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>estiske kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>egyptiske pund</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ekwele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>eritreiske nakfa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>spanske peseta (A-konto)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>spanske peseta (konvertibel konto)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>spanske peseta</displayName>
			</currency>
			<currency type="ETB">
				<displayName>etiopiske birr</displayName>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<symbol>EUR</symbol>
			</currency>
			<currency type="FIM">
				<displayName>finske mark</displayName>
			</currency>
			<currency type="FJD">
				<displayName>fijianske dollar</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Falkland-pund</displayName>
			</currency>
			<currency type="FRF">
				<displayName>franske franc</displayName>
			</currency>
			<currency type="GBP">
				<displayName>britiske pund sterling</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GEK">
				<displayName>georgiske kupon larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>georgiske lari</displayName>
			</currency>
			<currency type="GHC">
				<displayName>ghanesiske cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>gibraltarske pund</displayName>
			</currency>
			<currency type="GMD">
				<displayName>gambiske dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>guineanske franc</displayName>
			</currency>
			<currency type="GNS">
				<displayName>guineanske syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ekvatorialguineanske ekwele guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>greske drakmer</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>guatemalanske quetzal</displayName>
			</currency>
			<currency type="GWE">
				<displayName>portugisiske guinea escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau-pesos</displayName>
			</currency>
			<currency type="GYD">
				<displayName>guyanske dollar</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Hongkong-dollar</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Hoduras Lempira</displayName>
			</currency>
			<currency type="HRD">
				<displayName>kroatiske dinarer</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kroatiske kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>haitiske gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ungarske forinter</displayName>
			</currency>
			<currency type="IDR">
				<displayName>indonesiske rupier</displayName>
			</currency>
			<currency type="IEP">
				<displayName>irske pund</displayName>
			</currency>
			<currency type="ILP">
				<displayName>israelske pund</displayName>
			</currency>
			<currency type="ILS">
				<displayName>israelske nye shekler</displayName>
			</currency>
			<currency type="INR">
				<displayName>indiske rupier</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>irakske dinarer</displayName>
			</currency>
			<currency type="IRR">
				<displayName>iranske rialer</displayName>
			</currency>
			<currency type="ISK">
				<displayName>islandske kroner</displayName>
			</currency>
			<currency type="ITL">
				<displayName>italienske lire</displayName>
				<symbol>ITL</symbol>
			</currency>
			<currency type="JMD">
				<displayName>jamaikanske dollar</displayName>
			</currency>
			<currency type="JOD">
				<displayName>jordanske dinarer</displayName>
			</currency>
			<currency type="JPY">
				<displayName>japanske yen</displayName>
				<symbol>JPY</symbol>
			</currency>
			<currency type="KES">
				<displayName>kenyanske shilling</displayName>
			</currency>
			<currency type="KGS">
				<displayName>kirgisiske som</displayName>
			</currency>
			<currency type="KHR">
				<displayName>kambodsjanske riel</displayName>
			</currency>
			<currency type="KMF">
				<displayName>komoriske franc</displayName>
			</currency>
			<currency type="KPW">
				<displayName>nordkoreanske won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>sørkoreanske won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>kuwaitiske dinarer</displayName>
			</currency>
			<currency type="KYD">
				<displayName>caymanske dollar</displayName>
			</currency>
			<currency type="KZT">
				<displayName>kasakhstanske tenge</displayName>
			</currency>
			<currency type="LAK">
				<displayName>laotiske kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>libanesiske pund</displayName>
			</currency>
			<currency type="LKR">
				<displayName>srilankiske rupier</displayName>
			</currency>
			<currency type="LRD">
				<displayName>liberiske dollar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>lesothiske loti</displayName>
			</currency>
			<currency type="LSM">
				<displayName>maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>litauiske lita</displayName>
			</currency>
			<currency type="LTT">
				<displayName>litauiske talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>luxemburgske konvertible franc</displayName>
			</currency>
			<currency type="LUF">
				<displayName>luxemburgske franc</displayName>
			</currency>
			<currency type="LUL">
				<displayName>luxemburgske finansielle franc</displayName>
			</currency>
			<currency type="LVL">
				<displayName>latviske lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>latviske rubler</displayName>
			</currency>
			<currency type="LYD">
				<displayName>libyske dinarer</displayName>
			</currency>
			<currency type="MAD">
				<displayName>marokkanske dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>marokkanske franc</displayName>
			</currency>
			<currency type="MDL">
				<displayName>moldovske leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>madagassiske ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>madagassiske franc</displayName>
			</currency>
			<currency type="MKD">
				<displayName>makedonske denarer</displayName>
			</currency>
			<currency type="MLF">
				<displayName>maliske franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>myanmarske kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>mongolske tugrik</displayName>
			</currency>
			<currency type="MOP">
				<displayName>makaoske pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>mauritanske ouguiya</displayName>
			</currency>
			<currency type="MTL">
				<displayName>maltesiske lira</displayName>
			</currency>
			<currency type="MTP">
				<displayName>maltesiske pund</displayName>
			</currency>
			<currency type="MUR">
				<displayName>mauritiske rupier</displayName>
			</currency>
			<currency type="MVR">
				<displayName>maldiviske rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>malawiske kwacha</displayName>
			</currency>
			<currency type="MXN">
				<displayName>meksikanske pesos</displayName>
			</currency>
			<currency type="MXP">
				<displayName>meksikanske sølvpesos (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>meksikanske unidad de inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>malaysiske ringgit</displayName>
			</currency>
			<currency type="MZE">
				<displayName>mosambikiske escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>gamle mosambikiske metical</displayName>
			</currency>
			<currency type="MZN">
				<displayName>mosambikiske metical</displayName>
			</currency>
			<currency type="NAD">
				<displayName>namibiske dollar</displayName>
			</currency>
			<currency type="NGN">
				<displayName>nigerianske naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>nicaraguanske cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>nicaraguanske cordoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>nederlandske gylden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>norske kroner</displayName>
			</currency>
			<currency type="NPR">
				<displayName>nepalske rupier</displayName>
			</currency>
			<currency type="NZD">
				<displayName>new zealandske dollar</displayName>
			</currency>
			<currency type="OMR">
				<displayName>omanske rialer</displayName>
			</currency>
			<currency type="PAB">
				<displayName>panamanske balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>peruvianske inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>peruvianske nye sol</displayName>
			</currency>
			<currency type="PES">
				<displayName>peruvianske sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>papuanske kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>filippinske pesos</displayName>
			</currency>
			<currency type="PKR">
				<displayName>pakistanske rupier</displayName>
			</currency>
			<currency type="PLN">
				<displayName>polske zloty</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>polske zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>portugisiske escudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>paraguayanske guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>qatarske rialer</displayName>
			</currency>
			<currency type="RHD">
				<displayName>rhodesiske dollar</displayName>
			</currency>
			<currency type="ROL">
				<displayName>gamle rumenske leu</displayName>
			</currency>
			<currency type="RON">
				<displayName>rumenske leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>serbiske dinarer</displayName>
			</currency>
			<currency type="RUB">
				<displayName>russiske rubler</displayName>
			</currency>
			<currency type="RUR">
				<displayName>russiske rubler (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>rwandiske franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>saudiarabiske riyaler</displayName>
			</currency>
			<currency type="SBD">
				<displayName>salomonske dollar</displayName>
			</currency>
			<currency type="SCR">
				<displayName>seychelliske rupier</displayName>
			</currency>
			<currency type="SDD">
				<displayName>sudanesiske dinarer</displayName>
			</currency>
			<currency type="SDG">
				<displayName>sudanske pund</displayName>
			</currency>
			<currency type="SDP">
				<displayName>sudanesiske pund</displayName>
			</currency>
			<currency type="SEK">
				<displayName>svenske kroner</displayName>
			</currency>
			<currency type="SGD">
				<displayName>singaporske dollar</displayName>
			</currency>
			<currency type="SHP">
				<displayName>sankthelenske pund</displayName>
			</currency>
			<currency type="SIT">
				<displayName>slovenske tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>slovakiske koruna</displayName>
			</currency>
			<currency type="SLL">
				<displayName>sierraleonske leone</displayName>
				<displayName count="other">sierraleonske leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>somaliske shilling</displayName>
			</currency>
			<currency type="SRD">
				<displayName>surinamske dollar</displayName>
			</currency>
			<currency type="SRG">
				<displayName>surinamske gylden</displayName>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome og Principe-dobra</displayName>
			</currency>
			<currency type="SUR">
				<displayName>sovjetiske rubler</displayName>
			</currency>
			<currency type="SVC">
				<displayName>salvadoranske colon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>syriske pund</displayName>
			</currency>
			<currency type="SZL">
				<displayName>swazilandske lilangeni</displayName>
			</currency>
			<currency type="THB">
				<displayName>thailandske baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>tadsjikiske rubler</displayName>
			</currency>
			<currency type="TJS">
				<displayName>tadsjikiske somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>turkmenske manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>tunisiske dinarer</displayName>
			</currency>
			<currency type="TOP">
				<displayName>tonganske paʻanga</displayName>
			</currency>
			<currency type="TPE">
				<displayName>timoresiske escudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>tyrkiske lire</displayName>
				<displayName count="one">tyrkisk lire</displayName>
				<displayName count="other">tyrkiske lire</displayName>
			</currency>
			<currency type="TRY">
				<displayName>ny tyrkisk lire</displayName>
				<displayName count="one">ny tyrkisk lire</displayName>
				<displayName count="other">nye tyrkiske lire</displayName>
			</currency>
			<currency type="TTD">
				<displayName>trinidadiske dollar</displayName>
			</currency>
			<currency type="TWD">
				<displayName>taiwanske nye dollar</displayName>
			</currency>
			<currency type="TZS">
				<displayName>tanzanianske shilling</displayName>
			</currency>
			<currency type="UAH">
				<displayName>ukrainske hryvnia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>ukrainske karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>ugandiske shilling (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>ugandiske shilling</displayName>
			</currency>
			<currency type="USD">
				<displayName>amerikanske dollar</displayName>
				<symbol>USD</symbol>
			</currency>
			<currency type="USN">
				<displayName>amerikanske dollar (neste dag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>amerikanske dollar (samme dag)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>uruguayanske pesos (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>uruguayanske peso uruguayo</displayName>
			</currency>
			<currency type="UZS">
				<displayName>usbekiske sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>venezuelanske bolivar</displayName>
			</currency>
			<currency type="VEF">
				<displayName>venezuelanske bolivar fuerte</displayName>
			</currency>
			<currency type="VND">
				<displayName>vietnamesiske dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>vanuatiske vatu</displayName>
			</currency>
			<currency type="WST">
				<displayName>vestsamoiske tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA franc BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>sølv</displayName>
			</currency>
			<currency type="XAU">
				<displayName>gull</displayName>
			</currency>
			<currency type="XBA">
				<displayName>europeisk sammensatt enhet</displayName>
			</currency>
			<currency type="XBB">
				<displayName>europeisk monetær enhet</displayName>
			</currency>
			<currency type="XBC">
				<displayName>europeisk kontoenhet (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>europeisk kontoenhet (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>østkaribiske dollar</displayName>
			</currency>
			<currency type="XDR">
				<displayName>spesielle trekkrettigheter</displayName>
			</currency>
			<currency type="XEU">
				<displayName>europeisk valutaenhet</displayName>
			</currency>
			<currency type="XFO">
				<displayName>franske gullfranc</displayName>
			</currency>
			<currency type="XFU">
				<displayName>franske UIC-franc</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA franc BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP franc</displayName>
			</currency>
			<currency type="XPT">
				<displayName>platina</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET-fond</displayName>
			</currency>
			<currency type="XXX">
				<displayName>ukjent eller ugyldig valuta</displayName>
				<displayName count="one">ukjent eller ugyldig valuta</displayName>
				<displayName count="other">ukjent eller ugyldig valuta</displayName>
			</currency>
			<currency type="YDD">
				<displayName>jemenittiske dinarer</displayName>
			</currency>
			<currency type="YER">
				<displayName>jemenittiske rialer</displayName>
			</currency>
			<currency type="YUD">
				<displayName>jugoslaviske dinarer (hard)</displayName>
			</currency>
			<currency type="YUM">
				<displayName>jugoslaviske noviy-dinarer</displayName>
			</currency>
			<currency type="YUN">
				<displayName>jugoslaviske konvertible dinarer</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>sørafrikanske rand (finansielle)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>sørafrikanske rand</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>zambiske kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>zairiske nye zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>zairiske zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>zimbabwiske dollar</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dag</unitPattern>
			<unitPattern count="other">{0} dager</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} time</unitPattern>
			<unitPattern count="other">{0} timer</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minutt</unitPattern>
			<unitPattern count="other">{0} minutter</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} måned</unitPattern>
			<unitPattern count="other">{0} måneder</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekund</unitPattern>
			<unitPattern count="other">{0} sekunder</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} uke</unitPattern>
			<unitPattern count="other">{0} uker</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} år</unitPattern>
			<unitPattern count="other">{0} år</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ja</yesstr>
			<nostr>nei</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���##Locale/Data/gu_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gu"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[�=@���Locale/Data/ny.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ny"/>
	</identity>
	<characters>
		<exemplarCharacters>[a-p r-u w ŵ y z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q v x]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mal</month>
							<month type="4">Epu</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Oga</month>
							<month type="9">Sep</month>
							<month type="10">Oku</month>
							<month type="11">Nov</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januwale</month>
							<month type="2">Febuluwale</month>
							<month type="3">Malichi</month>
							<month type="4">Epulo</month>
							<month type="5">Mei</month>
							<month type="6">Juni</month>
							<month type="7">Julai</month>
							<month type="8">Ogasiti</month>
							<month type="9">Seputemba</month>
							<month type="10">Okutoba</month>
							<month type="11">Novemba</month>
							<month type="12">Disemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Mul</day>
							<day type="mon">Lem</day>
							<day type="tue">Wir</day>
							<day type="wed">Tat</day>
							<day type="thu">Nai</day>
							<day type="fri">San</day>
							<day type="sat">Wer</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Lamulungu</day>
							<day type="mon">Lolemba</day>
							<day type="tue">Lachiwiri</day>
							<day type="wed">Lachitatu</day>
							<day type="thu">Lachinayi</day>
							<day type="fri">Lachisanu</day>
							<day type="sat">Loweruka</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="MWK">
				<displayName>Malawian Kwacha</displayName>
				<symbol>K</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[���NNLocale/Data/ha_SD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.1 $"/>
		<generation date="$Date: 2008/06/18 21:08:12 $"/>
		<language type="ha"/>
		<territory type="SD"/>
	</identity>
	<alias source="ha_Arab_SD" path="//ldml"/>
</ldml>
PKpG[�����Locale/Data/iu.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.34 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="iu"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="iu">ᐃᓄᒃᑎᑐᑦ ᑎᑎᕋᐅᓯᖅ</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ᐃ-ᐆ ᐊ ᐋ ᐱ-ᐴ ᐸ ᐹ ᑉ ᑎ-ᑑ ᑕ ᑖ ᑦ ᑭ-ᑰ ᑲ ᑳ ᒃ ᒋ-ᒎ ᒐ ᒑ ᒡ ᒥ-ᒨ ᒪ ᒫ ᒻ ᓂ-ᓅ ᓇ ᓈ ᓐ ᓕ-ᓘ ᓚ ᓛ ᓪ ᓯ-ᓲ ᓴ ᓵ ᔅ ᔨ-ᔫ ᔭ ᔮ ᔾ ᕆ-ᕉ ᕋ ᕌ ᕐ ᕕ-ᕚ ᕝ ᕿ-ᖃ ᖅ ᖏ ᖑ-ᖕ ᙱ-ᙶ ᖖ ᖠ-ᖦ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ᔭᓐᓄᐊᓕ</month>
							<month type="2">ᕕᕝᕗᐊᓕ</month>
							<month type="3">ᒫᑦᓯ</month>
							<month type="4">ᐊᐃᑉᐳᓗ</month>
							<month type="5">ᒪᐃ</month>
							<month type="6">ᔫᓂ</month>
							<month type="7">ᔪᓚᐃ</month>
							<month type="8">ᐊᐅᒡᒍᓯ</month>
							<month type="9">ᓰᑦᑏᕝᕙ</month>
							<month type="10">ᐆᑦᑑᕝᕙ</month>
							<month type="11">ᓅᕙᐃᕝᕙ</month>
							<month type="12">ᑏᓰᕝᕙ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ᔭᓐᓄᐊᓕ</month>
							<month type="2">ᕕᕝᕗᐊᓕ</month>
							<month type="3">ᒫᑦᓯ</month>
							<month type="4">ᐊᐃᑉᐳᓗ</month>
							<month type="5">ᒪᐃ</month>
							<month type="6">ᔫᓂ</month>
							<month type="7">ᔪᓚᐃ</month>
							<month type="8">ᐊᐅᒡᒍᓯ</month>
							<month type="9">ᓰᑦᑏᕝᕙ</month>
							<month type="10">ᐆᑦᑑᕝᕙ</month>
							<month type="11">ᓅᕙᐃᕝᕙ</month>
							<month type="12">ᑏᓰᕝᕙ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ᓈᑦᓰᖑᔭ</day>
							<day type="mon">ᓇᒡᒐᔾᔭᐅ</day>
							<day type="tue">ᓇᒡᒐᔾᔭᐅᓕᖅᑭ</day>
							<day type="wed">ᐱᖓᑦᓯᖅ</day>
							<day type="thu">ᓯᑕᒻᒥᖅ</day>
							<day type="fri">ᑕᓪᓕᕐᒥᖅ</day>
							<day type="sat">ᓈᑦᓰᖑᔭᓕᖅᕿ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ᓈᑦᓰᖑᔭ</day>
							<day type="mon">ᓇᒡᒐᔾᔭᐅ</day>
							<day type="tue">ᓇᒡᒐᔾᔭᐅᓕᖅᑭ</day>
							<day type="wed">ᐱᖓᑦᓯᖅ</day>
							<day type="thu">ᓯᑕᒻᒥᖅ</day>
							<day type="fri">ᑕᓪᓕᕐᒥᖅ</day>
							<day type="sat">ᓈᑦᓰᖑᔭᓕᖅᕿ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
</ldml>
PKpG[R^=�##Locale/Data/ky_KG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ky"/>
		<territory type="KG"/>
	</identity>
</ldml>
PKpG[�حխ�Locale/Data/ar_KW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="KW"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[a8.W:W:Locale/Data/sw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.64 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="sw"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">kiafrikans</language>
			<language type="am">kiamhariki</language>
			<language type="ar">kiarabu</language>
			<language type="as">kubafu</language>
			<language type="az">kiazabaijani</language>
			<language type="be">kibelarusi</language>
			<language type="bg">kibulgaria</language>
			<language type="bh">kibihari</language>
			<language type="bn">kibengali; kibangla</language>
			<language type="br">kibreton</language>
			<language type="bs">kibosnia</language>
			<language type="ca">kikatalan</language>
			<language type="cs">kicheki</language>
			<language type="cy">kiwelsh</language>
			<language type="da">kidenmarki</language>
			<language type="de">kijerumani</language>
			<language type="el">kigiriki</language>
			<language type="en">kiingereza</language>
			<language type="eo">kiesperanto</language>
			<language type="es">kihispania</language>
			<language type="et">kiestonia</language>
			<language type="eu">kibaski</language>
			<language type="fa">kiajemi</language>
			<language type="fi">kifinlandi</language>
			<language type="fil">kitagalog</language>
			<language type="fo">kifaroe</language>
			<language type="fr">kifaransa</language>
			<language type="fy">kifrisia</language>
			<language type="ga">kiairish</language>
			<language type="gd">kiskotlandi</language>
			<language type="gl">kigalisia</language>
			<language type="gn">guarani</language>
			<language type="gu">kigujarati</language>
			<language type="he">kiyahudi</language>
			<language type="hi">kihindi</language>
			<language type="hr">kikroeshia</language>
			<language type="hu">kihungari</language>
			<language type="hy">muarmeni</language>
			<language type="ia">kiinterlingua</language>
			<language type="id">kiindonesia</language>
			<language type="ie">lugha ya kisayansi</language>
			<language type="is">kiaislandi</language>
			<language type="it">kiitaliano</language>
			<language type="ja">kijapani</language>
			<language type="jv">kijava</language>
			<language type="ka">kijiojia</language>
			<language type="km">kicambodia</language>
			<language type="kn">kikannada</language>
			<language type="ko">kikorea</language>
			<language type="ku">kikurdi</language>
			<language type="ky">kugizi</language>
			<language type="la">kirumi</language>
			<language type="ln">kilingala</language>
			<language type="lo">kilaosi</language>
			<language type="lt">kilithuania</language>
			<language type="lv">kilatvia</language>
			<language type="mk">kimasedonia</language>
			<language type="ml">kimalayalam</language>
			<language type="mn">kimongolia</language>
			<language type="mr">kimarathi</language>
			<language type="ms">kimalaysia</language>
			<language type="mt">kimalta</language>
			<language type="ne">kinepali</language>
			<language type="nl">kiholanzi</language>
			<language type="no">kinorwei</language>
			<language type="oc">kiositani</language>
			<language type="or">kioriya</language>
			<language type="pa">kipunjabi</language>
			<language type="pl">kipolandi</language>
			<language type="ps">kipashto</language>
			<language type="pt">kireno</language>
			<language type="pt_BR">kireno (brazil)</language>
			<language type="pt_PT">kireno (ureno)</language>
			<language type="ro">kiromania</language>
			<language type="ru">kirusi</language>
			<language type="sa">kisanskriti</language>
			<language type="sd">msindhi</language>
			<language type="sh">kiserbia-kroeshia</language>
			<language type="si">kisinhali</language>
			<language type="sk">kislovakia</language>
			<language type="sl">kislovenia</language>
			<language type="so">kisomali</language>
			<language type="sq">kialbania</language>
			<language type="sr">kiserbia</language>
			<language type="st">sesotho</language>
			<language type="su">kinubi</language>
			<language type="sv">kisweden</language>
			<language type="sw">Kiswahili</language>
			<language type="ta">kitamil</language>
			<language type="te">kitelugu</language>
			<language type="th">kithailand</language>
			<language type="ti">kitigrinya</language>
			<language type="tk">wataki weume</language>
			<language type="tlh">kiklingon</language>
			<language type="tr">kituruki</language>
			<language type="tw">kitwii</language>
			<language type="ug">ombwa</language>
			<language type="uk">kiukrania</language>
			<language type="ur">kiurdu</language>
			<language type="uz">kiuzbeki</language>
			<language type="vi">kivietnam</language>
			<language type="xh">kikhosa</language>
			<language type="yi">kiyidish</language>
			<language type="zh">kichina</language>
			<language type="zu">kizulu</language>
		</languages>
		<territories>
			<territory type="AE">Muugano wa Falme za Nchi za Kiarabu</territory>
			<territory type="AG">Antigua na Barbuda</territory>
			<territory type="AR">Ajentina</territory>
			<territory type="BA">Bosnia na Herzegowina</territory>
			<territory type="BE">Ubelgiji</territory>
			<territory type="BR">Brazili</territory>
			<territory type="BS">Visiwa vya Bahama</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CF">Jamhuri ya Afrika ya Kati</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Uswisi</territory>
			<territory type="CI">Pwani ya Pembe</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Uchina</territory>
			<territory type="CO">Kolombia</territory>
			<territory type="CS">Serbiya da Montenegro</territory>
			<territory type="CV">Rasi Verde</territory>
			<territory type="CZ">Jamhuri ya Czech</territory>
			<territory type="DE">Udachi</territory>
			<territory type="DJ">Jibuti</territory>
			<territory type="DK">Udenmarki</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Jamhuri ya Dominikan</territory>
			<territory type="EC">Ekvado</territory>
			<territory type="EG">Misri</territory>
			<territory type="ES">Uhispania</territory>
			<territory type="ET">Uhabeshi</territory>
			<territory type="FR">Ufaransa</territory>
			<territory type="GB">Uingereza</territory>
			<territory type="GQ">Guinea ya Ikweta</territory>
			<territory type="HR">Kroatia</territory>
			<territory type="HU">Hungaria</territory>
			<territory type="IL">Uyahudi</territory>
			<territory type="IN">Uhindi</territory>
			<territory type="IQ">Iraki</territory>
			<territory type="IR">Uajemi</territory>
			<territory type="IS">Barafu</territory>
			<territory type="IT">Uitaliani</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JP">Ujapani</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KH">Kampuchea</territory>
			<territory type="KM">Visiwa vya Komoro</territory>
			<territory type="KN">Saint Kitts na Nevis</territory>
			<territory type="KP">Korea ya Kaskazini</territory>
			<territory type="KR">Korea ya Kusini</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="MA">Moroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MH">Visiwa vya Marshall</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malasya</territory>
			<territory type="MZ">Msumbiji</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Uholanzi</territory>
			<territory type="NO">Unorwe</territory>
			<territory type="NP">Nepali</territory>
			<territory type="PG">Papua Guinea Mpya</territory>
			<territory type="PH">Filipino</territory>
			<territory type="PT">Ureno</territory>
			<territory type="PY">Paragwai</territory>
			<territory type="RU">Urusi</territory>
			<territory type="SA">Arabuni Saudi</territory>
			<territory type="SB">Visiwa vya Solomon</territory>
			<territory type="SC">Visiwa vya Shelisheli</territory>
			<territory type="SE">Uswidi</territory>
			<territory type="SO">Somali</territory>
			<territory type="ST">Sao Tome na Principe</territory>
			<territory type="TD">Chadi</territory>
			<territory type="TL">Timor ya Mashariki</territory>
			<territory type="TO">Kitonga</territory>
			<territory type="TR">Uturuki</territory>
			<territory type="TT">Trinidad na Tobago</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="US">Muungano wa Nchi za Amerika</territory>
			<territory type="UY">Urugwai</territory>
			<territory type="VA">Vatikano</territory>
			<territory type="VC">Saint Vincent na Grenadines</territory>
			<territory type="YE">Yemeni</territory>
			<territory type="ZA">Afrika ya Kusini</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-d {dh} e-n {ng} {ng'} {ny} o p r s {sh} t {th} u-w y z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q x]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mac</month>
							<month type="4">Apr</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Ago</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januari</month>
							<month type="2">Februari</month>
							<month type="3">Machi</month>
							<month type="4">Aprili</month>
							<month type="5">Mei</month>
							<month type="6">Juni</month>
							<month type="7">Julai</month>
							<month type="8">Agosti</month>
							<month type="9">Septemba</month>
							<month type="10">Oktoba</month>
							<month type="11">Novemba</month>
							<month type="12">Desemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Jpi</day>
							<day type="mon">Jtt</day>
							<day type="tue">Jnn</day>
							<day type="wed">Jtn</day>
							<day type="thu">Alh</day>
							<day type="fri">Iju</day>
							<day type="sat">Jmo</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Jumapili</day>
							<day type="mon">Jumatatu</day>
							<day type="tue">Jumanne</day>
							<day type="wed">Jumatano</day>
							<day type="thu">Alhamisi</day>
							<day type="fri">Ijumaa</day>
							<day type="sat">Jumamosi</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">R1</quarter>
							<quarter type="2">R2</quarter>
							<quarter type="3">R3</quarter>
							<quarter type="4">R4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">robo ya kwanza</quarter>
							<quarter type="2">robo ya pili</quarter>
							<quarter type="3">robo ya tatu</quarter>
							<quarter type="4">robo ya nne</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Kabla ya Kristo</era>
						<era type="1">Baada ya Kristo</era>
					</eraNames>
					<eraAbbr>
						<era type="0">KK</era>
						<era type="1">BK</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Saa za Africa Mashariki</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="KES">
				<symbol>KSh</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Shilingi ya Tanzania</displayName>
				<symbol>TSh</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[ęW�Locale/Data/es_GT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="GT"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[hXk�NNLocale/Data/sr_ME.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.8 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<territory type="ME"/>
	</identity>
	<alias source="sr_Cyrl_ME" path="//ldml"/>
</ldml>
PKpG[�|��##Locale/Data/ms_MY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ms"/>
		<territory type="MY"/>
	</identity>
</ldml>
PKpG[��Q0�.�.Locale/Data/mn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="mn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">африк</language>
			<language type="am">амхарик</language>
			<language type="ar">араб</language>
			<language type="as">ассам үндэстэн</language>
			<language type="az">азарбежан</language>
			<language type="be">беларусь</language>
			<language type="bg">болгар</language>
			<language type="bh">бихари хэл</language>
			<language type="bn">бенгаль</language>
			<language type="br">бретон</language>
			<language type="bs">босниа</language>
			<language type="ca">каталан</language>
			<language type="cs">чех</language>
			<language type="cy">уэлс</language>
			<language type="da">дани</language>
			<language type="de">герман</language>
			<language type="el">грек</language>
			<language type="en">англи</language>
			<language type="eo">эсперанто</language>
			<language type="es">испани</language>
			<language type="et">эстони</language>
			<language type="eu">баск</language>
			<language type="fa">перс</language>
			<language type="fi">финлянд</language>
			<language type="fil">тагало</language>
			<language type="fo">фөриэс хэл</language>
			<language type="fr">франц</language>
			<language type="fy">голландын фрисиан хэл</language>
			<language type="ga">ирланд</language>
			<language type="gd">шотланд келт</language>
			<language type="gl">галик</language>
			<language type="gn">гуарани</language>
			<language type="gu">энэтхэгийн гужарати</language>
			<language type="he">кипр</language>
			<language type="hi">хинди</language>
			<language type="hr">хорвати</language>
			<language type="hu">унгар</language>
			<language type="hy">армен</language>
			<language type="ia">интерлингво</language>
			<language type="id">индонези</language>
			<language type="ie">нэгдмэл хэл</language>
			<language type="is">исланд</language>
			<language type="it">итали</language>
			<language type="ja">япон</language>
			<language type="jv">ява</language>
			<language type="ka">гүрж</language>
			<language type="km">камбуч</language>
			<language type="kn">каннада</language>
			<language type="ko">солонгос</language>
			<language type="ku">курд</language>
			<language type="ky">киргиз</language>
			<language type="la">латин</language>
			<language type="ln">лингала</language>
			<language type="lo">лаотиан</language>
			<language type="lt">литви</language>
			<language type="lv">латви</language>
			<language type="mk">македони</language>
			<language type="ml">малайлам</language>
			<language type="mn">монгол</language>
			<language type="mr">энэтхэгийн марати</language>
			<language type="ms">малай</language>
			<language type="mt">малти</language>
			<language type="ne">балба</language>
			<language type="nl">голланд</language>
			<language type="nn">норвеги (нынорск)</language>
			<language type="no">норвеги</language>
			<language type="oc">францын окситан</language>
			<language type="or">ория</language>
			<language type="pa">пенжаби</language>
			<language type="pl">польш</language>
			<language type="ps">афган</language>
			<language type="pt">португали</language>
			<language type="pt_BR">португали (бразил)</language>
			<language type="pt_PT">португали (португали)</language>
			<language type="ro">румын</language>
			<language type="ru">орос</language>
			<language type="sa">санскирит</language>
			<language type="sd">синдхи</language>
			<language type="sh">хорватын серб</language>
			<language type="si">шри ланк</language>
			<language type="sk">словак</language>
			<language type="sl">словени</language>
			<language type="so">сомали</language>
			<language type="sq">албани</language>
			<language type="sr">серби</language>
			<language type="st">сесото</language>
			<language type="su">сунданес хэл</language>
			<language type="sv">швед</language>
			<language type="sw">африкийн свахили хэл</language>
			<language type="ta">тамил</language>
			<language type="te">тэлүгү</language>
			<language type="th">тай</language>
			<language type="ti">тикрина</language>
			<language type="tk">туркмен</language>
			<language type="tlh">клингон хэл</language>
			<language type="tr">турк</language>
			<language type="tw">тви</language>
			<language type="ug">уйгур</language>
			<language type="uk">украин</language>
			<language type="ur">пакистаны урду</language>
			<language type="uz">узбек</language>
			<language type="vi">вьетнам</language>
			<language type="xh">хоса</language>
			<language type="yi">иддиш</language>
			<language type="zh">хятад</language>
			<language type="zu">зулу</language>
		</languages>
		<territories>
			<territory type="BR">Бразили</territory>
			<territory type="DE">Герман</territory>
			<territory type="FR">Франц</territory>
			<territory type="IN">Энэтхэг</territory>
			<territory type="IT">Итали</territory>
			<territory type="JP">Япон</territory>
			<territory type="MN">Монгол улс</territory>
			<territory type="RU">Орос</territory>
			<territory type="TO">Тонга</territory>
			<territory type="US">Америкийн Нэгдсэн Улс</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а-е ё ж-о ө п-у ү ф-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ә җ ӊ һ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">хул</month>
							<month type="2">үхэ</month>
							<month type="3">бар</month>
							<month type="4">туу</month>
							<month type="5">луу</month>
							<month type="6">мог</month>
							<month type="7">мор</month>
							<month type="8">хон</month>
							<month type="9">бич</month>
							<month type="10">тах</month>
							<month type="11">нох</month>
							<month type="12">гах</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Хулгана</month>
							<month type="2">Үхэр</month>
							<month type="3">Бар</month>
							<month type="4">Туулай</month>
							<month type="5">Луу</month>
							<month type="6">Могой</month>
							<month type="7">Морь</month>
							<month type="8">Хонь</month>
							<month type="9">Бич</month>
							<month type="10">Тахиа</month>
							<month type="11">Нохой</month>
							<month type="12">Гахай</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ня</day>
							<day type="mon">Да</day>
							<day type="tue">Мя</day>
							<day type="wed">Лх</day>
							<day type="thu">Пү</day>
							<day type="fri">Ба</day>
							<day type="sat">Бя</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ням</day>
							<day type="mon">даваа</day>
							<day type="tue">мягмар</day>
							<day type="wed">лхагва</day>
							<day type="thu">пүрэв</day>
							<day type="fri">баасан</day>
							<day type="sat">бямба</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1/4</quarter>
							<quarter type="2">2/4</quarter>
							<quarter type="3">3/4</quarter>
							<quarter type="4">4/4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">дөрөвний нэг</quarter>
							<quarter type="2">дөрөвний хоёр</quarter>
							<quarter type="3">дөрөвний гурав</quarter>
							<quarter type="4">дөрөвний дөрөв</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">манай эриний өмнөх</era>
						<era type="1">манай эриний</era>
					</eraNames>
					<eraAbbr>
						<era type="0">м.э.ө</era>
						<era type="1">м.э.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencies>
			<currency type="MNT">
				<symbol>₮</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[
��:OOLocale/Data/zh_HK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="zh"/>
		<territory type="HK"/>
	</identity>
	<alias source="zh_Hant_HK" path="//ldml"/>
</ldml>
PKpG[XL����Locale/Data/es_CO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="CO"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="COP">
				<displayName>Peso de Colombia</displayName>
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[TdNTOOLocale/Data/mn_MN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<territory type="MN"/>
	</identity>
	<alias source="mn_Cyrl_MN" path="//ldml"/>
</ldml>
PKpG[�vᚍ�Locale/Data/cch.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="cch"/>
	</identity>
	<characters>
		<exemplarCharacters>[a {a̱} b c {ch} d {dy} e-g {g̱} {gb} {gw} {gy} h {hy} i-k ḵ {kp} {kw} l {ly} m n ṉ {ny} o p {ph} {py} r {ry} s {sh} t-w {wh} y {y̱} z ʼ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Dyon</month>
							<month type="2">Baa</month>
							<month type="3">Atat</month>
							<month type="4">Anas</month>
							<month type="5">Atyo</month>
							<month type="6">Achi</month>
							<month type="7">Atar</month>
							<month type="8">Awur</month>
							<month type="9">Shad</month>
							<month type="10">Shak</month>
							<month type="11">Naba</month>
							<month type="12">Nata</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Pen Dyon</month>
							<month type="2">Pen Ba'a</month>
							<month type="3">Pen Atat</month>
							<month type="4">Pen Anas</month>
							<month type="5">Pen Atyon</month>
							<month type="6">Pen Achirim</month>
							<month type="7">Pen Atariba</month>
							<month type="8">Pen Awurr</month>
							<month type="9">Pen Shadon</month>
							<month type="10">Pen Shakur</month>
							<month type="11">Pen Kur Naba</month>
							<month type="12">Pen Kur Natat</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Yok</day>
							<day type="mon">Tung</day>
							<day type="tue">T. Tung</day>
							<day type="wed">Tsan</day>
							<day type="thu">Nas</day>
							<day type="fri">Nat</day>
							<day type="sat">Chir</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Wai Yoka Bawai</day>
							<day type="mon">Wai Tunga</day>
							<day type="tue">Toki Gitung</day>
							<day type="wed">Tsam Kasuwa</day>
							<day type="thu">Wai Na Nas</day>
							<day type="fri">Wai Na Tiyon</day>
							<day type="sat">Wai Na Chirim</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Gabanin Miladi</era>
						<era type="1">Miladi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">GM</era>
						<era type="1">M</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>Aman</displayName>
				<symbol>₦</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[���Y""Locale/Data/zh_Hans.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="zh"/>
		<script type="Hans"/>
	</identity>
</ldml>
PKpG[e��;;Locale/Data/zh_Hant_TW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<script type="Hant"/>
		<territory type="TW"/>
	</identity>
</ldml>
PKpG[W`��H�H�Locale/Data/tr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.107 $"/>
		<generation date="$Date: 2008/06/17 14:19:19 $"/>
		<language type="tr"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abazca</language>
			<language type="ace">Achinese</language>
			<language type="ach">Acoli</language>
			<language type="ada">Adangme</language>
			<language type="ady">Çerkezce</language>
			<language type="ae">Avestçe</language>
			<language type="af">Afrikaan Dili</language>
			<language type="afa">Diğer Afro-Asyatik Diller</language>
			<language type="afh">Afrihili</language>
			<language type="ain">Ainu</language>
			<language type="ak">Akan</language>
			<language type="akk">Akad Dili</language>
			<language type="ale">Aleut</language>
			<language type="alg">Algonquian Dilleri</language>
			<language type="alt">Güney Altayca</language>
			<language type="am">Amharik</language>
			<language type="an">Aragonca</language>
			<language type="ang">Eski İngilizce</language>
			<language type="anp">Angika</language>
			<language type="apa">Apaçi Dilleri</language>
			<language type="ar">Arapça</language>
			<language type="arc">Aramice</language>
			<language type="arn">Araucanian Dili</language>
			<language type="arp">Arapaho Dili</language>
			<language type="art">Diğer Yapay Diller</language>
			<language type="arw">Arawak Dili</language>
			<language type="as">Assamca</language>
			<language type="ast">Asturyasca</language>
			<language type="ath">Atabaşkan Dilleri</language>
			<language type="aus">Avustralya Dilleri</language>
			<language type="av">Avar Dili</language>
			<language type="awa">Awadhi</language>
			<language type="ay">Aymara</language>
			<language type="az">Azerice</language>
			<language type="ba">Başkırt Dili</language>
			<language type="bad">Banda Dili</language>
			<language type="bai">Bamileke Dilleri</language>
			<language type="bal">Baluchi</language>
			<language type="ban">Bali Dili</language>
			<language type="bas">Basa Dili</language>
			<language type="bat">Diğer Baltık Dilleri</language>
			<language type="be">Beyaz Rusça</language>
			<language type="bej">Beja Dili</language>
			<language type="bem">Bemba</language>
			<language type="ber">Berberi</language>
			<language type="bg">Bulgarca</language>
			<language type="bh">Bihari</language>
			<language type="bho">Bhojpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol</language>
			<language type="bin">Bini</language>
			<language type="bla">Siksika</language>
			<language type="bm">Bambara</language>
			<language type="bn">Bengal Dili</language>
			<language type="bnt">Bantu Dili</language>
			<language type="bo">Tibetçe</language>
			<language type="br">Breton Dili</language>
			<language type="bra">Braj</language>
			<language type="bs">Boşnakça</language>
			<language type="btk">Batak</language>
			<language type="bua">Buryat</language>
			<language type="bug">Bugis</language>
			<language type="byn">Blin</language>
			<language type="ca">Katalanca</language>
			<language type="cad">Caddo</language>
			<language type="cai">Diğer Orta Amerika Yerli Dilleri</language>
			<language type="car">Carib</language>
			<language type="cau">Diğer Kafkas Dilleri</language>
			<language type="cch">Atsam</language>
			<language type="ce">Çeçence</language>
			<language type="ceb">Cebuano</language>
			<language type="cel">Diğer Kelt Dilleri</language>
			<language type="ch">Chamorro</language>
			<language type="chb">Chibcha</language>
			<language type="chg">Çağatay Dili</language>
			<language type="chk">Chuukese</language>
			<language type="chm">Mari</language>
			<language type="chn">Chinook Jargon</language>
			<language type="cho">Choctaw</language>
			<language type="chp">Chipewyan</language>
			<language type="chr">Çeroki</language>
			<language type="chy">Şayen Dili</language>
			<language type="cmc">Chamic Dilleri</language>
			<language type="co">Korsika Dili</language>
			<language type="cop">Kiptice</language>
			<language type="cpe">Diğer İngilizce tabanlı Creole ve Pidgin Dilleri</language>
			<language type="cpf">Diğer Fransızca tabanlı Creole ve Pidgin Dilleri</language>
			<language type="cpp">Diğer Portekizce tabanlı Creole ve Pidgin Dilleri</language>
			<language type="cr">Cree</language>
			<language type="crh">Kırım Türkçesi</language>
			<language type="crp">Diğer Creole ve Pidgin Dilleri</language>
			<language type="cs">Çekçe</language>
			<language type="csb">Kashubian</language>
			<language type="cu">Kilise Slavcası</language>
			<language type="cus">Diğer Kuşitik Diller</language>
			<language type="cv">Çuvaş</language>
			<language type="cy">Galce</language>
			<language type="da">Danca</language>
			<language type="dak">Dakota</language>
			<language type="dar">Dargva</language>
			<language type="day">Dayak</language>
			<language type="de">Almanca</language>
			<language type="de_AT">Avusturya Almancası</language>
			<language type="de_CH">İsviçre Yüksek Almancası</language>
			<language type="del">Delaware</language>
			<language type="den">Slavey</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka</language>
			<language type="doi">Dogri</language>
			<language type="dra">Diğer Dravid Dilleri</language>
			<language type="dsb">Aşağı Sorbça</language>
			<language type="dua">Duala</language>
			<language type="dum">Ortaçağ Felemenkçesi</language>
			<language type="dv">Divehi</language>
			<language type="dyu">Dyula</language>
			<language type="dz">Butan Dili</language>
			<language type="ee">Ewe</language>
			<language type="efi">Efik</language>
			<language type="egy">Eski Mısır Dili</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Yunanca</language>
			<language type="elx">Elam</language>
			<language type="en">İngilizce</language>
			<language type="en_AU">Avustralya İngilizcesi</language>
			<language type="en_CA">Kanada İngilizcesi</language>
			<language type="en_GB">İngiliz İngilizcesi</language>
			<language type="en_US">Amerikan İngilizcesi</language>
			<language type="enm">Ortaçağ İngilizcesi</language>
			<language type="eo">Esperanto</language>
			<language type="es">İspanyolca</language>
			<language type="es_419">Latin Amerika İspanyolcası</language>
			<language type="es_ES">İber İspanyolcası</language>
			<language type="et">Estonya Dili</language>
			<language type="eu">Baskça</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Farsça</language>
			<language type="fan">Fang</language>
			<language type="fat">Fanti</language>
			<language type="ff">Fulah</language>
			<language type="fi">Fince</language>
			<language type="fil">Filipino</language>
			<language type="fiu">Diğer Finno - Ugrik Dilleri</language>
			<language type="fj">Fiji Dili</language>
			<language type="fo">Faroe Dili</language>
			<language type="fon">Fon</language>
			<language type="fr">Fransızca</language>
			<language type="fr_CA">Kanada Fransızcası</language>
			<language type="fr_CH">İsviçre Fransızcası</language>
			<language type="frm">Ortaçağ Fransızcası</language>
			<language type="fro">Eski Fransızca</language>
			<language type="frr">Kuzey Frizce</language>
			<language type="frs">Doğu Frizcesi</language>
			<language type="fur">Friulian</language>
			<language type="fy">Batı Frizcesi</language>
			<language type="ga">İrlanda Dili</language>
			<language type="gaa">Ga</language>
			<language type="gay">Gayo</language>
			<language type="gba">Gbaya</language>
			<language type="gd">İskoç Gal Dili</language>
			<language type="gem">Diğer Germen Dilleri</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbertese</language>
			<language type="gl">Galiçya Dili</language>
			<language type="gmh">Ortaçağ Yüksek Almancası</language>
			<language type="gn">Guarani</language>
			<language type="goh">Eski Yüksek Almanca</language>
			<language type="gon">Gondi</language>
			<language type="gor">Gorontalo</language>
			<language type="got">Gotça</language>
			<language type="grb">Grebo</language>
			<language type="grc">Antik Yunanca</language>
			<language type="gsw">İsviçre Almancası</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manks</language>
			<language type="gwi">Gwichʼin</language>
			<language type="ha">Hausa</language>
			<language type="hai">Haida</language>
			<language type="haw">Hawaii Dili</language>
			<language type="he">İbranice</language>
			<language type="hi">Hintçe</language>
			<language type="hil">Hiligaynon</language>
			<language type="him">Himachali</language>
			<language type="hit">Hititçe</language>
			<language type="hmn">Hmong</language>
			<language type="ho">Hiri Motu</language>
			<language type="hr">Hırvatça</language>
			<language type="hsb">Yukarı Sorbça</language>
			<language type="ht">Haiti Dili</language>
			<language type="hu">Macarca</language>
			<language type="hup">Hupa</language>
			<language type="hy">Ermenice</language>
			<language type="hz">Herero</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Endonezya Dili</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Ijo</language>
			<language type="ik">Inupiak</language>
			<language type="ilo">Iloko</language>
			<language type="inc">Diğer Hint Dilleri</language>
			<language type="ine">Diğer Hint-Avrupa Dilleri</language>
			<language type="inh">İnguş Dili</language>
			<language type="io">Ido</language>
			<language type="ira">Diğer İran Dilleri</language>
			<language type="iro">Iroquoian Dilleri</language>
			<language type="is">İzlandaca</language>
			<language type="it">İtalyanca</language>
			<language type="iu">Inuktitut</language>
			<language type="ja">Japonca</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Yahudi Farsçası</language>
			<language type="jrb">Yahudi Arapçası</language>
			<language type="jv">Java Dili</language>
			<language type="ka">Gürcüce</language>
			<language type="kaa">Karakalpakça</language>
			<language type="kab">Kabile</language>
			<language type="kac">Kaçin</language>
			<language type="kaj">Jju</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karen</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardeyce</language>
			<language type="kcg">Tyap</language>
			<language type="kfo">Koro</language>
			<language type="kg">Kongo</language>
			<language type="kha">Khasi</language>
			<language type="khi">Diğer Hoisan Dilleri</language>
			<language type="kho">Hotanca</language>
			<language type="ki">Kikuyu</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">Kazak Dili</language>
			<language type="kl">Grönland Dili</language>
			<language type="km">Kamboçya Dili</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korece</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosraean</language>
			<language type="kpe">Kpelle</language>
			<language type="kr">Kanuri</language>
			<language type="krc">Karaçay-Balkar</language>
			<language type="krl">Karelian</language>
			<language type="kro">Kru</language>
			<language type="kru">Kurukh</language>
			<language type="ks">Keşmirce</language>
			<language type="ku">Kürtçe</language>
			<language type="kum">Kumukça</language>
			<language type="kut">Kutenai</language>
			<language type="kv">Komi</language>
			<language type="kw">Cornish</language>
			<language type="ky">Kırgızca</language>
			<language type="la">Latince</language>
			<language type="lad">Ladino</language>
			<language type="lah">Lahnda</language>
			<language type="lam">Lamba</language>
			<language type="lb">Lüksemburg Dili</language>
			<language type="lez">Lezgice</language>
			<language type="lg">Ganda</language>
			<language type="li">Limburgish</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laos Dili</language>
			<language type="lol">Mongo</language>
			<language type="loz">Lozi</language>
			<language type="lt">Litvanya Dili</language>
			<language type="lu">Luba-Katanga</language>
			<language type="lua">Luba-Lulua</language>
			<language type="lui">Luiseno</language>
			<language type="lun">Lunda</language>
			<language type="luo">Luo</language>
			<language type="lus">Lushai</language>
			<language type="lv">Letonya Dili</language>
			<language type="mad">Madura Dili</language>
			<language type="mag">Magahi</language>
			<language type="mai">Maithili</language>
			<language type="mak">Makasar</language>
			<language type="man">Mandingo</language>
			<language type="map">Avustronezya Dili</language>
			<language type="mas">Masai</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandar</language>
			<language type="men">Mende</language>
			<language type="mg">Malaga Dili</language>
			<language type="mga">Ortaçağ İrlandacası</language>
			<language type="mh">Marshall Adaları Dili</language>
			<language type="mi">Maori</language>
			<language type="mic">Micmac</language>
			<language type="min">Minangkabau</language>
			<language type="mis">Çeşitli Diller</language>
			<language type="mk">Makedonca</language>
			<language type="mkh">Diğer Mon-Khmer Dilleri</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Moğolca</language>
			<language type="mnc">Mançurya Dili</language>
			<language type="mni">Manipuri</language>
			<language type="mno">Manobo Dilleri</language>
			<language type="mo">Moldovaca</language>
			<language type="moh">Mohawk</language>
			<language type="mos">Mossi</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malay</language>
			<language type="mt">Malta Dili</language>
			<language type="mul">Birden Fazla Dil</language>
			<language type="mun">Munda Dilleri</language>
			<language type="mus">Creek</language>
			<language type="mwl">Miranda Dili</language>
			<language type="mwr">Marwari</language>
			<language type="my">Birmanya Dili</language>
			<language type="myn">Maya Dilleri</language>
			<language type="myv">Erzya</language>
			<language type="na">Nauru Dili</language>
			<language type="nah">Nahuatl</language>
			<language type="nai">Diğer Kuzey Amerika Yerli Dilleri</language>
			<language type="nap">Napolice</language>
			<language type="nb">Norveççe Bokmål</language>
			<language type="nd">Kuzey Ndebele</language>
			<language type="nds">Aşağı Almanca</language>
			<language type="ne">Nepalce</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nias</language>
			<language type="nic">Diğer Nijer-Kordofan Dilleri</language>
			<language type="niu">Niuean</language>
			<language type="nl">Hollanda Dili</language>
			<language type="nl_BE">Felemenkçe</language>
			<language type="nn">Norveççe Nynorsk</language>
			<language type="no">Norveççe</language>
			<language type="nog">Nogay Dili</language>
			<language type="non">Old Norse</language>
			<language type="nqo">N’Ko</language>
			<language type="nr">Güney Ndebele</language>
			<language type="nso">Kuzey Sotho</language>
			<language type="nub">Nubian Dilleri</language>
			<language type="nv">Navaho Dili</language>
			<language type="nwc">Klasik Nevari</language>
			<language type="ny">Nyanja</language>
			<language type="nym">Nyamwezi</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Nyoro</language>
			<language type="nzi">Nzima</language>
			<language type="oc">Occitan</language>
			<language type="oj">Ojibwa</language>
			<language type="om">Oromo</language>
			<language type="or">Oriya</language>
			<language type="os">Oset</language>
			<language type="osa">Osage</language>
			<language type="ota">Osmanlı Türkçesi</language>
			<language type="oto">Otomi Dilleri</language>
			<language type="pa">Pencap Dili</language>
			<language type="paa">Diğer Papua Dilleri</language>
			<language type="pag">Pangasinan</language>
			<language type="pal">Pehlevi</language>
			<language type="pam">Pampanga</language>
			<language type="pap">Papiamento</language>
			<language type="pau">Palau Dili</language>
			<language type="peo">Eski Farsça</language>
			<language type="phi">Diğer Filipinler Dilleri</language>
			<language type="phn">Fenike Dili</language>
			<language type="pi">Pali</language>
			<language type="pl">Lehçe</language>
			<language type="pon">Pohnpeian</language>
			<language type="pra">Prakrit Dilleri</language>
			<language type="pro">Eski Provensal</language>
			<language type="ps">Peştuca</language>
			<language type="pt">Portekizce</language>
			<language type="pt_BR">Brezilya Portekizcesi</language>
			<language type="pt_PT">İber Portekizcesi</language>
			<language type="qu">Quechua</language>
			<language type="raj">Rajasthani</language>
			<language type="rap">Rapanui</language>
			<language type="rar">Rarotongan</language>
			<language type="rm">Rhaeto-Roman Dili</language>
			<language type="rn">Kirundi</language>
			<language type="ro">Romence</language>
			<language type="roa">Diğer Roman Dilleri</language>
			<language type="rom">Romanca</language>
			<language type="root">Köken</language>
			<language type="ru">Rusça</language>
			<language type="rup">Aromanca</language>
			<language type="rw">Kinyarwanda</language>
			<language type="sa">Sanskritçe</language>
			<language type="sad">Sandawe</language>
			<language type="sah">Yakutça</language>
			<language type="sai">Diğer Güney Amerika Yerli Dilleri</language>
			<language type="sal">Salishan Dilleri</language>
			<language type="sam">Samarit Aramcası</language>
			<language type="sas">Sasak</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardunya Dili</language>
			<language type="scn">Sicilyaca</language>
			<language type="sco">İskoç</language>
			<language type="sd">Sindhi</language>
			<language type="se">Kuzey Sami</language>
			<language type="sel">Selkup</language>
			<language type="sem">Diğer Semitik Diller</language>
			<language type="sg">Sangho</language>
			<language type="sga">Eski İrlandaca</language>
			<language type="sgn">İşaret Dilleri</language>
			<language type="sh">Sırp-Hırvat Dili</language>
			<language type="shn">Shan Dili</language>
			<language type="si">Sinhal Dili</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Siu Dilleri</language>
			<language type="sit">Diğer Sino-Tibet Dilleri</language>
			<language type="sk">Slovakça</language>
			<language type="sl">Slovence</language>
			<language type="sla">Diğer Slav Dilleri</language>
			<language type="sm">Samoa Dili</language>
			<language type="sma">Güney Sami</language>
			<language type="smi">Diğer Sami Dilleri</language>
			<language type="smj">Lule Sami</language>
			<language type="smn">Inari Sami</language>
			<language type="sms">Skolt Sami</language>
			<language type="sn">Shona</language>
			<language type="snk">Soninke</language>
			<language type="so">Somali Dili</language>
			<language type="sog">Sogdiana Dili</language>
			<language type="son">Songhai</language>
			<language type="sq">Arnavutça</language>
			<language type="sr">Sırpça</language>
			<language type="srn">Sranan Tongo</language>
			<language type="srr">Serer</language>
			<language type="ss">Siswati</language>
			<language type="ssa">Diğer Nil-Sahara Dilleri</language>
			<language type="st">Güney Sotho</language>
			<language type="su">Sunda Dili</language>
			<language type="suk">Sukuma</language>
			<language type="sus">Susu</language>
			<language type="sux">Sümerce</language>
			<language type="sv">İsveççe</language>
			<language type="sw">Swahili</language>
			<language type="syc">Klasik Süryanice</language>
			<language type="syr">Süryanice</language>
			<language type="ta">Tamil</language>
			<language type="tai">Tai Dili</language>
			<language type="te">Telugu</language>
			<language type="tem">Timne</language>
			<language type="ter">Tereno</language>
			<language type="tet">Tetum</language>
			<language type="tg">Tacik Dili</language>
			<language type="th">Tay Dili</language>
			<language type="ti">Tigrinya</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv</language>
			<language type="tk">Türkmence</language>
			<language type="tkl">Tokelau</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tli">Tlingit</language>
			<language type="tmh">Tamaşek</language>
			<language type="tn">Setswana</language>
			<language type="to">Tonga</language>
			<language type="tog">Nyasa Tonga</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">Türkçe</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Tsimshian</language>
			<language type="tt">Tatarca</language>
			<language type="tum">Tumbuka</language>
			<language type="tup">Tupi dilleri</language>
			<language type="tut">Diğer Altay Dilleri</language>
			<language type="tvl">Tuvalu</language>
			<language type="tw">Twi</language>
			<language type="ty">Tahiti Dili</language>
			<language type="tyv">Tuvaca</language>
			<language type="udm">Udmurtça</language>
			<language type="ug">Uygurca</language>
			<language type="uga">Ugarit Dili</language>
			<language type="uk">Ukraynaca</language>
			<language type="umb">Umbundu</language>
			<language type="und">Bilinmeyen veya Geçersiz Dil</language>
			<language type="ur">Urduca</language>
			<language type="uz">Özbekçe</language>
			<language type="vai">Vai</language>
			<language type="ve">Venda</language>
			<language type="vi">Vietnamca</language>
			<language type="vo">Volapük</language>
			<language type="vot">Votic</language>
			<language type="wa">Walloon</language>
			<language type="wak">Wakashan Dilleri</language>
			<language type="wal">Walamo</language>
			<language type="war">Waray</language>
			<language type="was">Washo</language>
			<language type="wen">Sorb Dilleri</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmık</language>
			<language type="xh">Xhosa</language>
			<language type="yao">Yao</language>
			<language type="yap">Yapça</language>
			<language type="yi">Yiddiş</language>
			<language type="yo">Yoruba</language>
			<language type="ypk">Yupik Dilleri</language>
			<language type="za">Zhuang</language>
			<language type="zap">Zapotek Dili</language>
			<language type="zbl">Blis Sembolleri</language>
			<language type="zen">Zenaga</language>
			<language type="zh">Çince</language>
			<language type="zh_Hans">Basitleştirilmiş Çince</language>
			<language type="zh_Hant">Geleneksel Çince</language>
			<language type="znd">Zande</language>
			<language type="zu">Zulu</language>
			<language type="zun">Zuni</language>
			<language type="zxx">Dilbilim içeriği yok</language>
			<language type="zza">Zazaca</language>
		</languages>
		<scripts>
			<script type="Arab">Arapça</script>
			<script type="Armi">Armi</script>
			<script type="Armn">Ermenice</script>
			<script type="Avst">Avestçe</script>
			<script type="Bali">Bali Dili</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengalce</script>
			<script type="Blis">Blis Sembolleri</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brahmi</script>
			<script type="Brai">Braille</script>
			<script type="Bugi">Bugis</script>
			<script type="Buhd">Buhid</script>
			<script type="Cakm">Cakm</script>
			<script type="Cans">UCAS</script>
			<script type="Cari">Karya</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Çeroki</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Koptik</script>
			<script type="Cprt">Kıbrıs</script>
			<script type="Cyrl">Kiril</script>
			<script type="Cyrs">Eski Kilise Slavca</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Mısır Yazısı - Demotik</script>
			<script type="Egyh">Mısır Yazısı - Hiyeratik</script>
			<script type="Egyp">Mısır Yazısı - Hiyeroglif</script>
			<script type="Ethi">Etiyopya</script>
			<script type="Geok">Hutsuri Gürcüce</script>
			<script type="Geor">Gürcüce</script>
			<script type="Glag">Glagolit</script>
			<script type="Goth">Gotik</script>
			<script type="Grek">Yunan</script>
			<script type="Gujr">Gujarati</script>
			<script type="Guru">Gurmukhi</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Hun</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Basitleştirilmiş Han</script>
			<script type="Hant">Geleneksel Han</script>
			<script type="Hebr">İbranice</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh Hmong</script>
			<script type="Hrkt">Katakana veya Hiragana</script>
			<script type="Hung">Eski Macarca</script>
			<script type="Inds">Indus</script>
			<script type="Ital">Eski İtalyanca</script>
			<script type="Java">Cava Dili</script>
			<script type="Jpan">Japonca</script>
			<script type="Kali">Kayah Li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Kore">Korece</script>
			<script type="Kthi">Kthi</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Lao Dili</script>
			<script type="Latf">Fraktur Latin</script>
			<script type="Latg">Gael Latin</script>
			<script type="Latn">Latin</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Lineer A</script>
			<script type="Linb">Lineer B</script>
			<script type="Lyci">Likya Dili</script>
			<script type="Lydi">Lidya DIli</script>
			<script type="Mand">Mandaean</script>
			<script type="Mani">Mani Alfabesi</script>
			<script type="Maya">Maya Hiyeroglifleri</script>
			<script type="Mero">Meroitik</script>
			<script type="Mlym">Malayalam</script>
			<script type="Mong">Moğolca</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei Mayek</script>
			<script type="Mymr">Myanmar</script>
			<script type="Nkoo">N’Ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Ol Chiki</script>
			<script type="Orkh">Orhun</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Osmanya</script>
			<script type="Perm">Eski Permic</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phli">Phli</script>
			<script type="Phlp">Phlp</script>
			<script type="Phlv">Kitap Pehlevi Dili</script>
			<script type="Phnx">Fonetik</script>
			<script type="Plrd">Pollard Fonetik</script>
			<script type="Prti">Prti</script>
			<script type="Qaai">Kalıtsal</script>
			<script type="Rjng">Rejang</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runik</script>
			<script type="Samr">Samarit</script>
			<script type="Sara">Sarati</script>
			<script type="Saur">Saurashtra</script>
			<script type="Sgnw">İşaret Dili Yazımı</script>
			<script type="Shaw">Shavian</script>
			<script type="Sinh">Sinhal</script>
			<script type="Sund">Sunda</script>
			<script type="Sylo">Syloti Nagri</script>
			<script type="Syrc">Süryanice</script>
			<script type="Syre">Estrangela Süryanice</script>
			<script type="Syrj">Batı Süryanice</script>
			<script type="Syrn">Doğu Süryanice</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">New Tai Lue</script>
			<script type="Taml">Tamil</script>
			<script type="Tavt">Tavt</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Tifinagh</script>
			<script type="Tglg">Takalotça</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Tayca</script>
			<script type="Tibt">Tibetçe</script>
			<script type="Ugar">Ugarit Çivi Yazısı</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Konuşma Sesleri Çizimlemesi</script>
			<script type="Xpeo">Eski Farsça</script>
			<script type="Xsux">Sümer-Akad Çivi Yazısı</script>
			<script type="Yiii">Yi</script>
			<script type="Zmth">Zmth</script>
			<script type="Zsym">Zsym</script>
			<script type="Zxxx">Yazılı Olmayan</script>
			<script type="Zyyy">Common</script>
			<script type="Zzzz">Bilinmeyen veya Geçersiz Betik</script>
		</scripts>
		<territories>
			<territory type="001">Dünya</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Kuzey Amerika</territory>
			<territory type="005">Güney Amerika</territory>
			<territory type="009">Okyanusya</territory>
			<territory type="011">Batı Afrika</territory>
			<territory type="013">Orta Amerika</territory>
			<territory type="014">Doğu Afrika</territory>
			<territory type="015">Kuzey Afrika</territory>
			<territory type="017">Orta Afrika</territory>
			<territory type="018">Güney Afrika [018]</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Amerika'nın Kuzeyi</territory>
			<territory type="029">Karayipler</territory>
			<territory type="030">Doğu Asya</territory>
			<territory type="034">Güney Asya</territory>
			<territory type="035">Güney Doğu Asya</territory>
			<territory type="039">Güney Avrupa</territory>
			<territory type="053">Avustralya ve Yeni Zelanda</territory>
			<territory type="054">Melanezya</territory>
			<territory type="057">Mikronezya</territory>
			<territory type="061">Polinezya</territory>
			<territory type="062">Güney Orta Asya</territory>
			<territory type="142">Asya</territory>
			<territory type="143">Orta Asya</territory>
			<territory type="145">Batı Asya</territory>
			<territory type="150">Avrupa</territory>
			<territory type="151">Doğu Avrupa</territory>
			<territory type="154">Kuzey Avrupa</territory>
			<territory type="155">Batı Avrupa</territory>
			<territory type="172">Bağımsız Devletler Topluluğu</territory>
			<territory type="419">Latin Amerika ve Karayipler</territory>
			<territory type="830">Kanal Adaları</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Birleşik Arap Emirlikleri</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua ve Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Arnavutluk</territory>
			<territory type="AM">Ermenistan</territory>
			<territory type="AN">Hollanda Antilleri</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Arjantin</territory>
			<territory type="AS">Amerikan Samoası</territory>
			<territory type="AT">Avusturya</territory>
			<territory type="AU">Avustralya</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland Adaları</territory>
			<territory type="AZ">Azerbaycan</territory>
			<territory type="BA">Bosna Hersek</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladeş</territory>
			<territory type="BE">Belçika</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaristan</territory>
			<territory type="BH">Bahreyn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthelemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivya</territory>
			<territory type="BR">Brezilya</territory>
			<territory type="BS">Bahamalar</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet Adası</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Beyaz Rusya</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Cocos Adaları</territory>
			<territory type="CD">Kongo Demokratik Cumhuriyeti</territory>
			<territory type="CF">Orta Afrika Cumhuriyeti</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">İsviçre</territory>
			<territory type="CI">Fildişi Sahilleri</territory>
			<territory type="CK">Cook Adaları</territory>
			<territory type="CL">Şili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Çin</territory>
			<territory type="CO">Kolombiya</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Sırbistan-Karadağ</territory>
			<territory type="CU">Küba</territory>
			<territory type="CV">Cape Verde</territory>
			<territory type="CX">Christmas Adası</territory>
			<territory type="CY">Güney Kıbrıs Rum Kesimi</territory>
			<territory type="CZ">Çek Cumhuriyeti</territory>
			<territory type="DE">Almanya</territory>
			<territory type="DJ">Cibuti</territory>
			<territory type="DK">Danimarka</territory>
			<territory type="DM">Dominik</territory>
			<territory type="DO">Dominik Cumhuriyeti</territory>
			<territory type="DZ">Cezayir</territory>
			<territory type="EC">Ekvator</territory>
			<territory type="EE">Estonya</territory>
			<territory type="EG">Mısır</territory>
			<territory type="EH">Batı Sahara</territory>
			<territory type="ER">Eritre</territory>
			<territory type="ES">İspanya</territory>
			<territory type="ET">Etiyopya</territory>
			<territory type="FI">Finlandiya</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falkland Adaları</territory>
			<territory type="FM">Mikronezya Federal Eyaletleri</territory>
			<territory type="FO">Faroe Adaları</territory>
			<territory type="FR">Fransa</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Birleşik Krallık</territory>
			<territory type="GD">Granada</territory>
			<territory type="GE">Gürcistan</territory>
			<territory type="GF">Fransız Guyanası</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Cebelitarık</territory>
			<territory type="GL">Grönland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Gine</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvator Ginesi</territory>
			<territory type="GR">Yunanistan</territory>
			<territory type="GS">Güney Georgia ve Güney Sandwich Adaları</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Gine-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Heard Adası ve McDonald Adaları</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Hırvatistan</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Macaristan</territory>
			<territory type="ID">Endonezya</territory>
			<territory type="IE">İrlanda</territory>
			<territory type="IL">İsrail</territory>
			<territory type="IM">Man Adası</territory>
			<territory type="IN">Hindistan</territory>
			<territory type="IO">Hint Okyanusu İngiliz Bölgesi</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">İran</territory>
			<territory type="IS">İzlanda</territory>
			<territory type="IT">İtalya</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Ürdün</territory>
			<territory type="JP">Japonya</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kırgızistan</territory>
			<territory type="KH">Kamboçya</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorlar</territory>
			<territory type="KN">Saint Kitts ve Nevis</territory>
			<territory type="KP">Kuzey Kore</territory>
			<territory type="KR">Güney Kore</territory>
			<territory type="KW">Kuveyt</territory>
			<territory type="KY">Kayman Adaları</territory>
			<territory type="KZ">Kazakistan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lübnan</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberya</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litvanya</territory>
			<territory type="LU">Lüksemburg</territory>
			<territory type="LV">Letonya</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Fas</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldovya Cumhuriyeti</territory>
			<territory type="ME">Karadağ</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshall Adaları</territory>
			<territory type="MK">Makedonya</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Moğolistan</territory>
			<territory type="MO">Makao</territory>
			<territory type="MP">Kuzey Mariana Adaları</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Moritanya</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldivler</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksika</territory>
			<territory type="MY">Malezya</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibya</territory>
			<territory type="NC">Yeni Kaledonya</territory>
			<territory type="NE">Nijer</territory>
			<territory type="NF">Norfolk Adası</territory>
			<territory type="NG">Nijerya</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Hollanda</territory>
			<territory type="NO">Norveç</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Yeni Zelanda</territory>
			<territory type="OM">Umman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Fransız Polinezyası</territory>
			<territory type="PG">Papua Yeni Gine</territory>
			<territory type="PH">Filipinler</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonya</territory>
			<territory type="PM">Saint Pierre ve Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Riko</territory>
			<territory type="PS">Filistin Bölgesi</territory>
			<territory type="PT">Portekiz</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Uzak Okyanusya</territory>
			<territory type="QU">Avrupa Birliği</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romanya</territory>
			<territory type="RS">Sırbistan</territory>
			<territory type="RU">Rusya Federasyonu</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Suudi Arabistan</territory>
			<territory type="SB">Solomon Adaları</territory>
			<territory type="SC">Seyşeller</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">İsveç</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenya</territory>
			<territory type="SJ">Svalbard ve Jan Mayen</territory>
			<territory type="SK">Slovakya</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somali</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome ve Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Suriye</territory>
			<territory type="SZ">Svaziland</territory>
			<territory type="TC">Turks ve Caicos Adaları</territory>
			<territory type="TD">Çad</territory>
			<territory type="TF">Fransız Güney Bölgeleri</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tayland</territory>
			<territory type="TJ">Tacikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Doğu Timor</territory>
			<territory type="TM">Türkmenistan</territory>
			<territory type="TN">Tunus</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Türkiye</territory>
			<territory type="TT">Trinidad ve Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tayvan</territory>
			<territory type="TZ">Tanzanya</territory>
			<territory type="UA">Ukrayna</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Amerika Birleşik Devletleri Küçük Dış Adaları</territory>
			<territory type="US">Amerika Birleşik Devletleri</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Özbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent ve Grenadinler</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">İngiliz Virgin Adaları</territory>
			<territory type="VI">ABD Virgin Adaları</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis ve Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Güney Afrika</territory>
			<territory type="ZM">Zambiya</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">Bilinmeyen veya Geçersiz Bölge</territory>
		</territories>
		<variants>
			<variant type="1901">Geleneksel Alman Yazım Kuralları</variant>
			<variant type="1994">Standart Resia Yazım Kuralları</variant>
			<variant type="1996">1996 Alman Yazım Kuralları</variant>
			<variant type="1606NICT">1606'ya Dek Geç Ortaçağ Fransızcası</variant>
			<variant type="AREVELA">Doğu Ermenicesi</variant>
			<variant type="AREVMDA">Batı Ermenicesi</variant>
			<variant type="BAKU1926">Birleştirilmiş Yeni Türk Alfabesi</variant>
			<variant type="BISKE">San Giorgio/Bila Lehçesi</variant>
			<variant type="BOONT">Boontling</variant>
			<variant type="FONIPA">IPA Ses Bilimi</variant>
			<variant type="FONUPA">UPA Ses Bilimi</variant>
			<variant type="LIPAW">Resia Lipovaz Lehçesi</variant>
			<variant type="MONOTON">Monotonik</variant>
			<variant type="NEDIS">Natisone Lehçesi</variant>
			<variant type="NJIVA">Gniva/Njiva Lehçesi</variant>
			<variant type="OSOJS">Oseacco/Osojane Lehçesi</variant>
			<variant type="POLYTON">Politonik</variant>
			<variant type="POSIX">Bilgisayar</variant>
			<variant type="REVISED">Gözden Geçirilmiş Yazım Kuralları</variant>
			<variant type="ROZAJ">Resia Lehçesi</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOTLAND">İskoç Standart İngilizcesi</variant>
			<variant type="SCOUSE">Scouse</variant>
			<variant type="SOLBA">Stolvizza/Solbica Lehçesi</variant>
			<variant type="TARASK">Taraskievica Yazım Kuralları</variant>
		</variants>
		<keys>
			<key type="calendar">Takvim</key>
			<key type="collation">Sıralama</key>
			<key type="currency">Para Birimi</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Geleneksel Çince Sıralaması - Big5</type>
			<type type="buddhist" key="calendar">Budist Takvimi</type>
			<type type="chinese" key="calendar">Çin Takvimi</type>
			<type type="direct" key="collation">Düz Sıralama</type>
			<type type="gb2312han" key="collation">Basitleştirilmiş Çince Sıralaması - GB2312</type>
			<type type="gregorian" key="calendar">Miladi Takvim</type>
			<type type="hebrew" key="calendar">Yahudi Takvimi</type>
			<type type="indian" key="calendar">Ulusal Hint Takvimi</type>
			<type type="islamic" key="calendar">Hicri Takvim</type>
			<type type="islamic-civil" key="calendar">Arap Takvimi</type>
			<type type="japanese" key="calendar">Japon Takvimi</type>
			<type type="phonebook" key="collation">Telefon Defteri Sıralaması</type>
			<type type="pinyin" key="collation">Pinyin Sıralaması</type>
			<type type="roc" key="calendar">Çin Cumhuriyeti Takvimi</type>
			<type type="stroke" key="collation">Stroke Sıralaması</type>
			<type type="traditional" key="collation">Geleneksel Sıralama</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ABD</measurementSystemName>
			<measurementSystemName type="metric">Metrik</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Dil: {0}</codePattern>
			<codePattern type="script">Betik: {0}</codePattern>
			<codePattern type="territory">Bölge: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d-g ğ h ı i İ {i̇} j-o ö p r s ş t u ü v y z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à ă â å ä ā æ é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ q ß ú ù ŭ û ū w x ÿ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="chinese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyMMM">yy MMM</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Tût</month>
							<month type="2">Bâbe</month>
							<month type="3">Hatur</month>
							<month type="4">Keyhek</month>
							<month type="5">Tûbe</month>
							<month type="6">Imşir</month>
							<month type="7">Bermuhat</month>
							<month type="8">Bermude</month>
							<month type="9">Peyştes</month>
							<month type="10">Bune</month>
							<month type="11">Ebip</month>
							<month type="12">Mısrî</month>
							<month type="13">Nesî</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Oca</month>
							<month type="2">Şub</month>
							<month type="3">Mar</month>
							<month type="4">Nis</month>
							<month type="5">May</month>
							<month type="6">Haz</month>
							<month type="7">Tem</month>
							<month type="8">Ağu</month>
							<month type="9">Eyl</month>
							<month type="10">Eki</month>
							<month type="11">Kas</month>
							<month type="12">Ara</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ocak</month>
							<month type="2">Şubat</month>
							<month type="3">Mart</month>
							<month type="4">Nisan</month>
							<month type="5">Mayıs</month>
							<month type="6">Haziran</month>
							<month type="7">Temmuz</month>
							<month type="8">Ağustos</month>
							<month type="9">Eylül</month>
							<month type="10">Ekim</month>
							<month type="11">Kasım</month>
							<month type="12">Aralık</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">O</month>
							<month type="2">Ş</month>
							<month type="3">M</month>
							<month type="4">N</month>
							<month type="5">M</month>
							<month type="6">H</month>
							<month type="7">T</month>
							<month type="8">A</month>
							<month type="9">E</month>
							<month type="10">E</month>
							<month type="11">K</month>
							<month type="12">A</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Paz</day>
							<day type="mon">Pzt</day>
							<day type="tue">Sal</day>
							<day type="wed">Çar</day>
							<day type="thu">Per</day>
							<day type="fri">Cum</day>
							<day type="sat">Cmt</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Pazar</day>
							<day type="mon">Pazartesi</day>
							<day type="tue">Salı</day>
							<day type="wed">Çarşamba</day>
							<day type="thu">Perşembe</day>
							<day type="fri">Cuma</day>
							<day type="sat">Cumartesi</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">P</day>
							<day type="mon">P</day>
							<day type="tue">S</day>
							<day type="wed">Ç</day>
							<day type="thu">P</day>
							<day type="fri">C</day>
							<day type="sat">C</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Ç1</quarter>
							<quarter type="2">Ç2</quarter>
							<quarter type="3">Ç3</quarter>
							<quarter type="4">Ç4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. çeyrek</quarter>
							<quarter type="2">2. çeyrek</quarter>
							<quarter type="3">3. çeyrek</quarter>
							<quarter type="4">4. çeyrek</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Milattan Önce</era>
						<era type="1">Milattan Sonra</era>
					</eraNames>
					<eraAbbr>
						<era type="0">MÖ</era>
						<era type="1">MS</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>dd MMMM yyyy EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MMM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">d E</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">d-M E</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">d MMM E</dateFormatItem>
						<dateFormatItem id="MMMMEd">d MMMM E</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">d/M/yyyy EEE</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">d MMM yyyy EEE</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyy">yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">dd.MM E - dd.MM E</greatestDifference>
							<greatestDifference id="d">dd.MM E - dd.MM E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">d MMM E - d MMM E</greatestDifference>
							<greatestDifference id="d">d MMM E - d MMM E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yyyy - MM.yyyy</greatestDifference>
							<greatestDifference id="y">MM.yyyy - MM.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">dd.MM.yyyy E - dd.MM.yyyy E</greatestDifference>
							<greatestDifference id="d">dd.MM.yyyy E - dd.MM.yyyy E</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy E - dd.MM.yyyy E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">dd MMM yyyy E - dd MMM yyyy E</greatestDifference>
							<greatestDifference id="d">dd MMM yyyy E - dd MMM yyyy E</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy E - dd MMM yyyy E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="d">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy - dd.MM.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Miladi Dönem</displayName>
					</field>
					<field type="year">
						<displayName>Yıl</displayName>
					</field>
					<field type="month">
						<displayName>Ay</displayName>
					</field>
					<field type="week">
						<displayName>Hafta</displayName>
					</field>
					<field type="day">
						<displayName>Gün</displayName>
						<relative type="0">Bugün</relative>
						<relative type="1">Yarın</relative>
						<relative type="2">Yarından sonraki gün</relative>
						<relative type="3">Üç gün sonra</relative>
						<relative type="-1">Dün</relative>
						<relative type="-2">Evvelsi gün</relative>
						<relative type="-3">Üç gün önce</relative>
					</field>
					<field type="weekday">
						<displayName>Haftanın Günü</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>Saat</displayName>
					</field>
					<field type="minute">
						<displayName>Dakika</displayName>
					</field>
					<field type="second">
						<displayName>Saniye</displayName>
					</field>
					<field type="zone">
						<displayName>Saat Dilimi</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Tişri</month>
							<month type="2">Heşvan</month>
							<month type="5">Şevat</month>
							<month type="6">Veadar</month>
							<month type="9">İyar</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Tişri</month>
							<month type="2">Heşvan</month>
							<month type="5">Şevat</month>
							<month type="6">Veadar</month>
							<month type="9">İyar</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Muharrem</month>
							<month type="2">Safer</month>
							<month type="3">Rebiülevvel</month>
							<month type="4">Rebiülahir</month>
							<month type="5">Cemaziyelevvel</month>
							<month type="6">Cemaziyelahir</month>
							<month type="7">Recep</month>
							<month type="8">Şaban</month>
							<month type="9">Ramazan</month>
							<month type="10">Şevval</month>
							<month type="11">Zilkade</month>
							<month type="12">Zilhicce</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Muharrem</month>
							<month type="2">Safer</month>
							<month type="3">Rebiülevvel</month>
							<month type="4">Rebiülahir</month>
							<month type="5">Cemaziyelevvel</month>
							<month type="6">Cemaziyelahir</month>
							<month type="7">Recep</month>
							<month type="8">Şaban</month>
							<month type="9">Ramazan</month>
							<month type="10">Şevval</month>
							<month type="11">Zilkade</month>
							<month type="12">Zilhicce</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic-civil">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Muharrem</month>
							<month type="2">Safer</month>
							<month type="3">Rebiülevvel</month>
							<month type="4">Rebiülahir</month>
							<month type="5">Cemaziyelevvel</month>
							<month type="6">Cemaziyelahir</month>
							<month type="7">Recep</month>
							<month type="8">Şaban</month>
							<month type="9">Ramazan</month>
							<month type="10">Şevval</month>
							<month type="11">Zilkade</month>
							<month type="12">Zilhicce</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ferverdin</month>
							<month type="2">Ordibeheşt</month>
							<month type="3">Hordad</month>
							<month type="6">Şehriver</month>
							<month type="9">Azer</month>
							<month type="11">Behmen</month>
							<month type="12">Esfend</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ferverdin</month>
							<month type="2">Ordibeheşt</month>
							<month type="3">Hordad</month>
							<month type="6">Şehriver</month>
							<month type="9">Azer</month>
							<month type="11">Behmen</month>
							<month type="12">Esfend</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} Saati</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Bilinmeyen</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kabil</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tiran</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Güney Kutbu</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viyana</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Sidney</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Bakü</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brüksel</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofya</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahreyn</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürih</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kaşgar</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Urumçi</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Çunking</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Şangay</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kosta Rika</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Noel</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Lefkoşa</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Cibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhag</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominik</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Cezayir</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kahire</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>El Ayun</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarya Adaları</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Septe</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londra</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tiflis</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Cebelitarık</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atina</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Güney Gürcistan</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapeşte</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Cakarta</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Kudüs</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bağdat</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Tahran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jameika</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Bişkek</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuveyt</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kayman</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Şevçenko</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>Uralsk</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktöbe</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Kızılorda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Almatı</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beyrut</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Kolombo</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Lüksemburg</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Trablus</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Kazablanka</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Kobdo</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulanbator</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Çoybalsan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makau</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinik</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Moritus</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivler</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Meksiko City</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Kuçing</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Nauru Adası</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Markiz</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karaçi</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varşova</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairn Adaları</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Riko</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Gazze</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azor Adaları</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lizbon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reunion Adası</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bükreş</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskova</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>İrkutsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sahalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamçatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadır</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riyad</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Kartum</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stokholm</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Şam</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Duşanbe</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Aşkabat</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunus</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>İstanbul</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>İspanya Limanı</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ujgorod</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporojye</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem, Kuzey Dakota</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Merkez, Kuzey Dakota</exemplarCity>
			</zone>
			<zone type="America/Chicago">
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Knox</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marengo</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Semerkand</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taşkent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>Saygon</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Mayote</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre Saati</standard>
					<daylight>Acre Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afganistan Saati</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Orta Afrika Saati</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Doğu Afrika Saati</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Güney Afrika Saati</generic>
					<standard>Güney Afrika Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Batı Afrika Saati</standard>
					<daylight>Batı Afrika Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk Saati</standard>
					<daylight>Aktyubinsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska Saati</generic>
					<standard>Alaska Standart Saati</standard>
					<daylight>Alaska Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaska-Hawaii Saati</generic>
					<standard>Alaska-Hawaii Standart Saati</standard>
					<daylight>Alaska-Hawaii Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Almatı Saati</standard>
					<daylight>Almatı Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazon Saati</standard>
					<daylight>Amazon Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Merkezi Saat</generic>
					<standard>Merkezi Standart Saati</standard>
					<daylight>Merkezi Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Doğu Saati</generic>
					<standard>Doğu Standart Saati</standard>
					<daylight>Doğu Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>ABD Sıradağlar Saati</generic>
					<standard>ABD Sıradağlar Standart Saati</standard>
					<daylight>ABD Sıradağlar Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Pasifik Saati</generic>
					<standard>Pasifik Standart Saati</standard>
					<daylight>Pasifik Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Anadır Saati</standard>
					<daylight>Anadır Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aktau Saati</standard>
					<daylight>Aktau Yaz Saati</daylight>
				</long>
				<short>
					<standard>AQTT (Aktau)</standard>
					<daylight>AQTST (Aktau)</daylight>
				</short>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aktöbe Saati</standard>
					<daylight>Aktöbe Yaz Saati</daylight>
				</long>
				<short>
					<standard>AQTT (Aktöbe)</standard>
					<daylight>AQTST (Aktöbe)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arap Saati</generic>
					<standard>Arap Standart Saati</standard>
					<daylight>Arap Yaz Saati</daylight>
				</long>
				<short>
					<generic>AT (Arabistan)</generic>
					<standard>AST (Arap)</standard>
					<daylight>ADT (Arap)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Arjantin Saati</standard>
					<daylight>Arjantin Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Batı Arjantin Saati</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Ermenistan Saati</standard>
					<daylight>Ermenistan Yaz Saati</daylight>
				</long>
				<short>
					<standard>AMT (Ermenistan)</standard>
					<daylight>AMST (Ermenistan)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Aşkabat Saati</standard>
					<daylight>Aşkabat Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlantik Saati</generic>
					<standard>Atlantik Standart Saati</standard>
					<daylight>Atlantik Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Orta Avustralya Saati</generic>
					<standard>Orta Avustralya Standart Saati</standard>
					<daylight>Orta Avustralya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Orta Batı Saati</generic>
					<standard>Batı Merkezi Standart Saati</standard>
					<daylight>Avustralya Batı Merkezi Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Doğu Avustralya Saati</generic>
					<standard>Doğu Avustralya Standart Saati</standard>
					<daylight>Doğu Avustralya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Batı Avustralya Saati</generic>
					<standard>Batı Avustralya Standart Saati</standard>
					<daylight>Batı Avustralya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>Azerbaycan Saati</standard>
					<daylight>Azerbaycan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Azor Saati</standard>
					<daylight>Azor Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Bakü Saati</standard>
					<daylight>Bakü Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Bangladeş Saati</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering Saati</generic>
					<standard>Bering Standart Saati</standard>
					<daylight>Bering Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Bhutan Saati</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Bolivya Saati</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Borneo Saati</standard>
					<daylight>Borneo Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brasilia Saati</standard>
					<daylight>Brasilia Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>Brunei Saati</standard>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Cape Verde Saati</standard>
					<daylight>Cape Verde Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>Chamorro Saati</generic>
					<standard>Chamorro Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Changbai Saati</standard>
				</long>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Chatham Standart Saati</standard>
					<daylight>Chatham Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Şili Saati</standard>
					<daylight>Şili Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>Çin Saati</generic>
					<standard>Çin Standart Saati</standard>
					<daylight>Çin Yaz Saati</daylight>
				</long>
				<short>
					<generic>CT (Çin)</generic>
					<standard>CST (Çin)</standard>
					<daylight>CDT (Çin)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Çoybalsan Saati</standard>
					<daylight>Çoybalsan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Christmas Adası Saati</standard>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Cocos Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Kolombiya Saati</standard>
					<daylight>Kolombiya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>Cook Adaları Saati</standard>
					<daylight>Cook Adaları Yarı Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Küba Saati</generic>
					<standard>Küba Standart Saati</standard>
					<daylight>Küba Yaz Saati</daylight>
				</long>
				<short>
					<standard>CST (Küba)</standard>
					<daylight>CDT (Küba)</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Dakka Saati</standard>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Davis Saati</standard>
				</long>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Dumont-d'Urville Saati</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Duşanbe Saati</standard>
					<daylight>Duşanbe Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Hollanda Guyanası Saati</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>Doğu Timor Saati</standard>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Easter Adası Saati</standard>
					<daylight>Easter Adası Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ekvator Saati</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Orta Avrupa Saati</standard>
					<daylight>Orta Avrupa Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Doğu Avrupa Saati</standard>
					<daylight>Doğu Avrupa Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Batı Avrupa Saati</standard>
					<daylight>Batı Avrupa Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Falkland Adaları Saati</standard>
					<daylight>Falkland Adaları Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>Fiji Saati</standard>
					<daylight>Fiji Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Fransız Guyanası Saati</standard>
				</long>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>Fransız Güney Bölgeleri Saati</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Bişkek Saati</standard>
					<daylight>Bişkek Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich Merkez Saati</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Galapagos Saati</standard>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Gambier Saati</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Gürcistan Saati</standard>
					<daylight>Gürcistan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Gilbert Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Orta Grönland Saati</standard>
					<daylight>Orta Grönland Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Doğu Grönland Saati</standard>
					<daylight>Doğu Grönland Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Batı Grönland Saati</standard>
					<daylight>Batı Grönland Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Guam Standart Saati</standard>
				</long>
				<short>
					<standard>GST (Guam)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>Körfez Saati</generic>
					<standard>Gulf Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Guyana Saati</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Hawaii-Aleutian Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hong Kong Saati</standard>
					<daylight>Hong Kong Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Hovd Saati</standard>
					<daylight>Hovd Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Hindistan Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Hint Okyanusu Saati</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Çinhindi Saati</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Orta Endonezya Saati</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Doğu Endonezya Saati</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Batı Endonezya Saati</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>İran Standart Saati</standard>
					<daylight>İran Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Irkutsk Saati</standard>
					<daylight>Irkutsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>İsrail Saati</generic>
					<standard>İsrail Standart Saati</standard>
					<daylight>İsrail Yaz Saati</daylight>
				</long>
				<short>
					<standard>IST (İsrail)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Japonya Saati</generic>
					<standard>Japonya Standart Saati</standard>
					<daylight>Japonya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Petropavlovsk-Kamçatski Saati</standard>
					<daylight>Petropavlovsk-Kamçatski Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karaçi Saati</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Kaşgar Saati</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>Doğu Kazakistan Saati</generic>
					<standard>Doğu Kazakistan Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>Batı Kazakistan Saati</generic>
					<standard>Batı Kazakistan Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Kızılorda Saati</standard>
					<daylight>Kızılorda Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Kore Saati</generic>
					<standard>Kore Standart Saati</standard>
					<daylight>Kore Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Kosrae Saati</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Krasnoyarsk Saati</standard>
					<daylight>Krasnoyarsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kuybişev Saati</standard>
					<daylight>Kuybişev Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Kwajalein Saati</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Kırgızistan Saati</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Lanka Saati</standard>
				</long>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Line Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Long-Shu Saati</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Lord Howe Saati</generic>
					<standard>Lord Howe Standart Saati</standard>
					<daylight>Lord Howe Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Makao Saati</standard>
					<daylight>Makao Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Magadan Saati</standard>
					<daylight>Magadan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Malaya Saati</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Malezya Saati</standard>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Maldivler Saati</standard>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Markiz Saati</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Marshall Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Mauritius Saati</standard>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Mawson Saati</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Ulan Batur Saati</standard>
					<daylight>Ulan Batur Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moskova Saati</generic>
					<standard>Moskova Standart Saati</standard>
					<daylight>Moskova Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Myanmar Saati</standard>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Nauru Saati</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Nepal Saati</standard>
				</long>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>Yeni Kaledonya Saati</standard>
					<daylight>Yeni Kaledonya Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Yeni Zelanda Saati</generic>
					<standard>Yeni Zelanda Standart Saati</standard>
					<daylight>Yeni Zelanda Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Newfoundland Saati</generic>
					<standard>Newfoundland Standart Saati</standard>
					<daylight>Newfoundland Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>Niue Saati</standard>
				</long>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>Norfolk Adası Saati</standard>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Fernando de Noronha Saati</standard>
					<daylight>Fernando de Noronha Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>Kuzey Mariana Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Novosibirsk Saati</standard>
					<daylight>Novosibirsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Omsk Saati</standard>
					<daylight>Omsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Pakistan Saati</standard>
					<daylight>Pakistan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>Palau Saati</standard>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>Papua Yeni Gine Saati</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paraguay Saati</standard>
					<daylight>Paraguay Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Peru Saati</standard>
					<daylight>Peru Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Filipinler Saati</standard>
					<daylight>Filipinler Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Phoenix Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre ve Miquelon Saati</generic>
					<standard>Pierre ve Miquelon Standart Saati</standard>
					<daylight>Pierre ve Miquelon Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>Pitcairn Saati</standard>
				</long>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Ponape Saati</standard>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Kızılorda Saati</standard>
					<daylight>Kızılorda Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Reunion Saati</standard>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Rothera Saati</standard>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Sakhalin Saati</standard>
					<daylight>Sakhalin Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samara Saati</standard>
					<daylight>Samara Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Semerkand Saati</standard>
					<daylight>Semerkand Yaz Saati</daylight>
				</long>
				<short>
					<standard>SAMT (Semerkand)</standard>
					<daylight>SAMST (Semerkand)</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Samoa Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Seyşeller Saati</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Şevçenko Saati</standard>
					<daylight>Şevçenko Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>Singapur Standart Saati</standard>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>Solomon Adaları Saati</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>Güney Georgia Saati</standard>
				</long>
				<short>
					<standard>GST (Güney Georgia)</standard>
				</short>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Surinam Saati</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Sverdlovsk Saati</standard>
					<daylight>Sverdlovsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Showa Saati</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>Tahiti Saati</standard>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Tacikistan Saati</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Taşkent Saati</standard>
					<daylight>Taşkent Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Tiflis Saati</standard>
					<daylight>Tiflis Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>Tokelau Saati</standard>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>Tonga Saati</standard>
					<daylight>Tonga Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Truk Saati</standard>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Türkiye Saati</standard>
					<daylight>Türkiye Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Türkmenistan Saati</standard>
					<daylight>Türkmenistan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>Tuvalu Saati</standard>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Oral Saati</standard>
					<daylight>Oral Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Uruguay Saati</standard>
					<daylight>Uruguay Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Urumçi Saati</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Özbekistan Saati</standard>
					<daylight>Özbekistan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>Vanuatu Saati</standard>
					<daylight>Vanuatu Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venezuela Saati</standard>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Vladivostok Saati</standard>
					<daylight>Vladivostok Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Volgograd Saati</standard>
					<daylight>Volgograd Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Vostok Saati</standard>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Wake Adası Saati</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>Wallis ve Futuna Saati</standard>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Yakutsk Saati</standard>
					<daylight>Yakutsk Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Yekaterinburg Saati</standard>
					<daylight>Yekaterinburg Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Erivan Saati</standard>
					<daylight>Erivan Yaz Saati</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukon Saati</generic>
					<standard>Yukon Standart Saati</standard>
					<daylight>Yukon Yaz Saati</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>% #,##0</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andora Pesetası</displayName>
			</currency>
			<currency type="AED">
				<displayName>Birleşik Arap Emirlikleri Dirhemi</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afganistan Afganisi (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afganistan Afganisi</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Arnavutluk Leki</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Ermenistan Dramı</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Hollanda Antilleri Guldeni</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angola Kvanzası</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angola Kvanzası (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Yeni Angola Kvanzası (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angola Kvanzası Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Arjantin Australi</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Arjantin Pezosu (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Arjantin Pezosu</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Avusturya Şilini</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Avustralya Doları</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Aruba Florini</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbaycan Manatı</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azeri Manatı</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosna Hersek Dinarı</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Konvertibl Bosna Hersek Markı</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbados Doları</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bangladeş Takası</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belçika Frangı (konvertibl)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belçika Frangı</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belçika Frangı (finansal)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgar Levası (Hard)</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Yeni Bulgar Levası</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreyn Dinarı</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundi Frangı</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda Doları</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunei Doları</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolivya Bolivyanosu</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Bolivya Pezosu</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivya Mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Yeni Brezilya Kruzeirosu (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brezilya Kruzadosu</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brezilya Kruzeirosu (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brezilya Reali</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Yeni Brezilya Kruzadosu</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brezilya Kruzeirosu</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahama Doları</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutan Ngultrumu</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Burma Kyatı</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botsvana Pulası</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Yeni Beyaz Rusya Rublesi (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Beyaz Rusya Rublesi</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belize Doları</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Kanada Doları</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Kongo Frangı</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR Avrosu</displayName>
			</currency>
			<currency type="CHF">
				<displayName>İsviçre Frangı</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR Frangı</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Şili Unidades de Fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Şili Pezosu</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Çin Yuanı Renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kolombiya Pezosu</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidad de Valor Real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Kosta Rika Kolonu</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Eski Sırbistan Dinarı</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Çekoslavak Korunası (Hard)</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Küba Pezosu</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Cape Verde Esküdosu</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Güney Kıbrıs Lirası</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Çek Cumhuriyeti Korunası</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Doğu Alman Markı</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Alman Markı</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Cibuti Frangı</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Danimarka Kronu</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominik Pezosu</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Cezayir Dinarı</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ekvator Sukresi</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ekvator Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estonya Krunu</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Mısır Lirası</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Ekuele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritre Nakfası</displayName>
			</currency>
			<currency type="ESA">
				<displayName>İspanyol Pesetası (A hesabı)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>İspanyol Pesetası (konvertibl hesap)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>İspanyol Pezetası</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Etiyopya Birri</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Fin Markkası</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fiji Doları</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falkland Adaları Lirası</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Fransız Frangı</displayName>
			</currency>
			<currency type="GBP">
				<displayName>İngiliz Sterlini</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Gürcistan Kupon Larisi</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Gürcistan Larisi</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Gana Sedisi (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Gana Sedisi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Cebelitarık Lirası</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambiya Dalasisi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Gine Frangı</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Gine Syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekvator Ginesi Ekuelesi</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Yunan Drahmisi</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemala Ketzali</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portekiz Ginesi Esküdosu</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Gine-Bissau Pezosu</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyana Doları</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kong Doları</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Honduras Lempirası</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Hırvat Dinarı</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Hırvat Kunası</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haiti Gurdu</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Macar Forinti</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Endonezya Rupiahı</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>İrlanda Lirası</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>İsrail Lirası</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Yeni İsrail Şekeli</displayName>
			</currency>
			<currency type="INR">
				<displayName>Hindistan Rupisi</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Irak Dinarı</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>İran Riyali</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>İzlanda Kronu</displayName>
			</currency>
			<currency type="ITL">
				<displayName>İtalyan Lireti</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaika Doları</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Ürdün Dinarı</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japon Yeni</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenya Şilini</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kırgız Somu</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Kamboçya Rieli</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Komorlar Frangı</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Kuzey Kore Wonu</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Güney Kore Wonu</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuveyt Dinarı</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Kayman Adaları Doları</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakistan Tengesi</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laos Kipi</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Lübnan Lirası</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lanka Rupisi</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberya Doları</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesotho Lotisi</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litvanya Litası</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litvanya Talonu</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Konvertibl Lüksemburg Frangı</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Lüksemburg Frangı</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Finansal Lüksemburg Frangı</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Letonya Latı</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Letonya Rublesi</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libya Dinarı</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Fas Dirhemi</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Fas Frangı</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldova Leyi</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskar Ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskar Frangı</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedonya Dinarı</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Mali Frangı</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmar Kyatı</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Moğol Tugriki</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Makao Patacası</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Moritanya Ouguiyası</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Malta Lirası</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Malta Sterlini</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritius Rupisi</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldiv Adaları Rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malavi Kvaçası</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Meksika Pezosu</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Gümüş Meksika Pezosu (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Meksika Unidad de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malezya Ringiti</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambik Esküdosu</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Eski Mozambik Metikali</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Mozambik Metikali</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibya Doları</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nijerya Nairası</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nikaragua Kordobası</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nikaragua Kordobası (Oro)</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Hollanda Florini</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norveç Kronu</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepal Rupisi</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Yeni Zelanda Doları</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Umman Riyali</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panama Balboası</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peru İnti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Yeni Peru Solu</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peru Solu</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua Yeni Gine Kinası</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipinler Pezosu</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakistan Rupisi</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Polonya Zlotisi</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Polonya Zlotisi (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portekiz Esküdosu</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguay Guaranisi</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Katar Riyali</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Rodezya Doları</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Eski Romen Leyi</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>Romen Leyi</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Sırp Dinarı</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rus Rublesi</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rus Rublesi (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruanda Frangı</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Suudi Arabistan Riyali</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Solomon Adaları Doları</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seyşeller Rupisi</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Sudan Dinarı</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudan Lirası</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Eski Sudan Lirası</displayName>
			</currency>
			<currency type="SEK">
				<displayName>İsveç Kronu</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapur Doları</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Saint Helena Lirası</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovenya Toları</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovak Korunası</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leone Leonesi</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somali Şilini</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinam Doları</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surinam Guldeni</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome ve Principe Dobrası</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Sovyet Rublesi</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvador Kolonu</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Suriye Lirası</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Swaziland Lilangenisi</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Tayland Bahtı</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tacikistan Rublesi</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tacikistan Somonisi</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Türkmenistan Manatı</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunus Dinarı</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tonga Paʻangası</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timor Esküdosu</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Eski Türk Lirası</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Türk Lirası</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad ve Tobago Doları</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Yeni Tayvan Doları</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanya Şilini</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrayna Grivnası</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrayna Karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Uganda Şilini (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Uganda Şilini</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>ABD Doları</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>ABD Doları (Ertesi gün)</displayName>
			</currency>
			<currency type="USS">
				<displayName>ABD Doları (Aynı gün)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruguay Peso en Unidades Indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguay Pezosu (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguay Pezosu (Uruguayo)</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Özbekistan Sumu</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuela Bolivarı</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Güçlü Venezuela Bolivarı</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>Vietnam Dongu</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatu Vatusu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Batı Samoa Talası</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA Frangı BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Gümüş</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Altın</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Birleşik Avrupa Birimi</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Avrupa Para Birimi (EMU)</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Avrupa Hesap Birimi (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Avrupa Hesap Birimi (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Doğu Karayip Doları</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Özel Çekme Hakkı (SDR)</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Avrupa Para Birimi</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Fransız Altın Frangı</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Fransız UIC-Frangı</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA Frangı BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Paladyum</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP Frangı</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Platin</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET Fonları</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Test Para Birimi Kodu</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Bilinmeyen veya Geçersiz Para Birimi</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Yemen Dinarı</displayName>
			</currency>
			<currency type="YER">
				<displayName>Yemen Riyali</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Yugoslav Dinarı (Hard)</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Yeni Yugoslav Dinarı</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Konvertibl Yugoslav Dinarı</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Güney Afrika Randı (finansal)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Güney Afrika Randı</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambiya Kvaçası</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Yeni Zaire Zairesi</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire Zairesi</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwe Doları</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} gün</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} saat</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} dakika</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} ay</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} saniye</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} hafta</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} yıl</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>evet:e</yesstr>
			<nostr>hayır:hayir:h</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���$$Locale/Data/gaa_GH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gaa"/>
		<territory type="GH"/>
	</identity>
</ldml>
PKpG[�+����Locale/Data/zh_Hant.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.116 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="zh"/>
		<script type="Hant"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localeSeparator>,</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="ab">阿布哈茲文</language>
			<language type="ace">亞齊文</language>
			<language type="ach">阿僑利文</language>
			<language type="ada">阿當莫文</language>
			<language type="ady">阿迪各文</language>
			<language type="ae">阿緯斯陀文</language>
			<language type="af">南非荷蘭文</language>
			<language type="afa">非閃族及非亞語言</language>
			<language type="ain">愛努文</language>
			<language type="ak">阿坎文</language>
			<language type="ale">阿留申文</language>
			<language type="alg">阿爾岡昆文</language>
			<language type="alt">南阿爾泰文</language>
			<language type="an">阿拉貢文</language>
			<language type="ang">古英文</language>
			<language type="apa">阿帕奇語言</language>
			<language type="arn">阿勞坎文</language>
			<language type="art">人工語言</language>
			<language type="as">阿薩姆文</language>
			<language type="ast">阿斯圖里亞文</language>
			<language type="ath">阿薩帕斯坎諸語言</language>
			<language type="aus">澳洲英文</language>
			<language type="av">阿瓦爾文</language>
			<language type="awa">阿瓦文</language>
			<language type="ay">艾馬拉文</language>
			<language type="az">亞塞拜然文</language>
			<language type="ba">巴什客爾文</language>
			<language type="bad">班達文</language>
			<language type="bai">巴米累克諸語言</language>
			<language type="ban">峇里文</language>
			<language type="bas">巴薩文</language>
			<language type="bat">波羅的海諸語言</language>
			<language type="be">白俄羅斯文</language>
			<language type="bej">貝扎文</language>
			<language type="bem">別姆巴文</language>
			<language type="ber">柏柏爾文</language>
			<language type="bg">保加利亞文</language>
			<language type="bh">比哈爾文</language>
			<language type="bho">博傑普爾文</language>
			<language type="bi">比斯拉馬文</language>
			<language type="bik">比科爾文</language>
			<language type="bla">錫克錫卡文</language>
			<language type="bnt">班圖諸語言</language>
			<language type="bo">藏文</language>
			<language type="bs">波士尼亞文</language>
			<language type="bua">布里阿特文</language>
			<language type="bug">布吉斯文</language>
			<language type="byn">比林文</language>
			<language type="ca">加泰羅尼亞文</language>
			<language type="cai">中美印第安文(其他)</language>
			<language type="car">加勒比文</language>
			<language type="cau">高加索文(其他)</language>
			<language type="cch">阿燦文</language>
			<language type="ce">車臣文</language>
			<language type="ceb">宿霧文</language>
			<language type="cel">克爾特文(其他)</language>
			<language type="ch">查莫洛文</language>
			<language type="chb">奇布查文</language>
			<language type="chk">處奇斯文</language>
			<language type="chm">馬里文</language>
			<language type="chn">契奴克文</language>
			<language type="cho">喬克托文</language>
			<language type="chp">奇佩瓦揚文</language>
			<language type="chr">柴羅基文</language>
			<language type="chy">沙伊安文</language>
			<language type="cmc">佔語諸語言</language>
			<language type="cpe">歐洲腔調和洋涇濱,源自英文的(其他)</language>
			<language type="cpf">歐洲腔調和洋涇濱,源自法文的(其他)</language>
			<language type="cpp">歐洲腔調和洋涇濱,源自葡萄牙文的(其他)</language>
			<language type="cr">克裡文</language>
			<language type="crh">克里米亞半島的土耳其文;克里米亞半島的塔塔爾文</language>
			<language type="crp">克里奧爾文和皮欽文</language>
			<language type="csb">卡舒布文</language>
			<language type="cus">庫施特語系(其他)</language>
			<language type="cy">威爾士文</language>
			<language type="da">丹麥文</language>
			<language type="dak">達科他文</language>
			<language type="dar">達爾格瓦文</language>
			<language type="day">迪雅克文</language>
			<language type="de_AT">德文 (奧地利)</language>
			<language type="del">德拉瓦文</language>
			<language type="den">斯拉夫</language>
			<language type="dgr">多格里布文</language>
			<language type="doi">多格來文</language>
			<language type="dra">德拉威文(其他)</language>
			<language type="dsb">下索布文</language>
			<language type="dua">杜亞拉文</language>
			<language type="dum">中古荷蘭文</language>
			<language type="dv">迪維西文</language>
			<language type="ee">埃維文</language>
			<language type="efi">埃菲克文</language>
			<language type="egy">古埃及文</language>
			<language type="eka">艾卡朱克文</language>
			<language type="el">希臘文</language>
			<language type="elx">埃蘭文</language>
			<language type="en_AU">英文 (澳洲)</language>
			<language type="en_GB">英文 (英國)</language>
			<language type="en_US">英文 (美國)</language>
			<language type="eo">世界語</language>
			<language type="es_419">西班牙文 (拉丁美洲)</language>
			<language type="es_ES">西班牙文 (西班牙)</language>
			<language type="et">愛沙尼亞文</language>
			<language type="ewo">依汪都文</language>
			<language type="fan">芳族文</language>
			<language type="ff">富拉文</language>
			<language type="fi">芬蘭文</language>
			<language type="fil">菲律賓文</language>
			<language type="fiu">芬烏諸語言</language>
			<language type="fj">斐濟文</language>
			<language type="fo">法羅文</language>
			<language type="fon">豐文</language>
			<language type="fr_CH">法文 (瑞士)</language>
			<language type="frr">北弗里西亞文</language>
			<language type="frs">東弗里西亞文</language>
			<language type="fy">弗里斯蘭文</language>
			<language type="ga">愛爾蘭文</language>
			<language type="gaa">加族文</language>
			<language type="gay">加約文</language>
			<language type="gba">葛巴亞文</language>
			<language type="gd">蘇格蘭 - 蓋爾文</language>
			<language type="gem">日耳曼諸語言</language>
			<language type="gez">吉茲文</language>
			<language type="gil">吉爾伯特群島文</language>
			<language type="gl">加里西亞文</language>
			<language type="gmh">中古高地日耳曼文</language>
			<language type="goh">古高地日耳曼文</language>
			<language type="gon">岡德文</language>
			<language type="gor">科隆達羅文</language>
			<language type="got">哥德文</language>
			<language type="grc">古希臘文</language>
			<language type="gu">吉亞拉塔文</language>
			<language type="gv">曼島文</language>
			<language type="gwi">圭契文</language>
			<language type="hai">海達文</language>
			<language type="he">希伯來文</language>
			<language type="hi">北印度文</language>
			<language type="hil">希利蓋農文</language>
			<language type="him">赫馬查利文</language>
			<language type="hit">赫梯文</language>
			<language type="hmn">孟文</language>
			<language type="ho">西里莫圖土文</language>
			<language type="hr">克羅埃西亞文</language>
			<language type="ht">海地人</language>
			<language type="hy">亞美尼亞文</language>
			<language type="hz">赫雷羅文</language>
			<language type="ia">國際文A</language>
			<language type="id">印尼文</language>
			<language type="ie">國際文E</language>
			<language type="ig">伊布文</language>
			<language type="ii">四川話</language>
			<language type="ijo">伊喬文</language>
			<language type="ik">依奴皮維克文</language>
			<language type="ilo">伊洛闊文</language>
			<language type="inc">印度諸語言</language>
			<language type="ine">印歐語系(其他)</language>
			<language type="io">伊朗文</language>
			<language type="ira">伊芳朗文</language>
			<language type="iro">易洛魁文</language>
			<language type="is">冰島文</language>
			<language type="it">義大利文</language>
			<language type="iu">因紐特文</language>
			<language type="jbo">邏輯文</language>
			<language type="jpr">猶太教-波斯文</language>
			<language type="jrb">猶太阿拉伯文</language>
			<language type="ka">喬治亞文</language>
			<language type="kaa">卡拉卡爾帕克文</language>
			<language type="kab">卡比爾文</language>
			<language type="kar">克倫文</language>
			<language type="kbd">卡巴爾達文</language>
			<language type="kfo">科羅文</language>
			<language type="kg">剛果文</language>
			<language type="khi">科依桑諸語言</language>
			<language type="kho">和闐文</language>
			<language type="ki">吉庫尤文</language>
			<language type="kj">廣亞馬文</language>
			<language type="kk">哈薩克文</language>
			<language type="kl">格陵蘭文</language>
			<language type="km">高棉文</language>
			<language type="kn">坎那達文</language>
			<language type="ko">韓文</language>
			<language type="kok">貢根文</language>
			<language type="kos">科斯雷恩文</language>
			<language type="kr">卡努裡文</language>
			<language type="krc">卡拉柴-包爾卡爾文</language>
			<language type="kro">克魯文</language>
			<language type="kru">庫魯科文</language>
			<language type="ks">克什米爾文</language>
			<language type="ku">庫爾德文</language>
			<language type="kum">庫密克文</language>
			<language type="kut">庫特奈文</language>
			<language type="kw">康瓦耳文</language>
			<language type="ky">吉爾吉斯文</language>
			<language type="lad">拉迪諾文</language>
			<language type="lah">拉亨達文</language>
			<language type="lam">蘭巴文</language>
			<language type="lb">盧森堡文</language>
			<language type="lez">列茲干文</language>
			<language type="lg">干達文</language>
			<language type="li">林堡文</language>
			<language type="lo">寮國文</language>
			<language type="lol">芒戈文</language>
			<language type="loz">洛齊文</language>
			<language type="lt">立陶宛語</language>
			<language type="lu">魯巴加丹加文</language>
			<language type="lua">魯巴魯魯亞文</language>
			<language type="lui">路易塞諾文</language>
			<language type="lun">盧恩達文</language>
			<language type="luo">盧奧文</language>
			<language type="lus">盧晒文</language>
			<language type="lv">拉脫維亞文</language>
			<language type="mad">馬都拉文</language>
			<language type="mag">馬加伊文</language>
			<language type="mai">邁蒂利文</language>
			<language type="mak">望加錫文</language>
			<language type="map">南島諸語言</language>
			<language type="mas">馬賽文</language>
			<language type="mdr">曼達文</language>
			<language type="men">門德文</language>
			<language type="mg">馬爾加什文</language>
			<language type="mga">中古愛爾蘭文</language>
			<language type="mh">馬紹爾文</language>
			<language type="mic">米克馬克文</language>
			<language type="min">米南卡堡文</language>
			<language type="mis">其他語言</language>
			<language type="mk">馬其頓文</language>
			<language type="mkh">其他高棉語系</language>
			<language type="ml">馬來亞拉姆文</language>
			<language type="mnc">滿族文</language>
			<language type="mni">曼尼普裡文</language>
			<language type="mno">馬諾波文</language>
			<language type="mo">摩爾多瓦文</language>
			<language type="moh">莫霍克文</language>
			<language type="mr">馬拉地文</language>
			<language type="ms">馬來文</language>
			<language type="mt">馬爾他文</language>
			<language type="mul">多種語言</language>
			<language type="mun">蒙達文</language>
			<language type="mus">克里克文</language>
			<language type="mwl">米蘭德斯文</language>
			<language type="mwr">馬爾尼裡文</language>
			<language type="my">緬甸文</language>
			<language type="myn">馬雅文</language>
			<language type="myv">厄爾茲亞文</language>
			<language type="na">諾魯文</language>
			<language type="nah">納瓦特文</language>
			<language type="nai">其他北美印地安文</language>
			<language type="nb">挪威波克默爾文</language>
			<language type="nd">北地畢列文</language>
			<language type="nds">低地日耳曼文;低地薩克遜文</language>
			<language type="ne">尼泊爾文</language>
			<language type="new">尼瓦爾文</language>
			<language type="ng">恩東加文</language>
			<language type="nia">尼亞斯文</language>
			<language type="nic">其他尼日剛果語系</language>
			<language type="niu">紐埃文</language>
			<language type="nl">荷蘭文</language>
			<language type="nl_BE">法蘭德斯文</language>
			<language type="nn">新挪威文</language>
			<language type="nog">諾蓋文</language>
			<language type="non">古諾爾斯文</language>
			<language type="nqo">西非書面語言(N'ko)</language>
			<language type="nr">南地畢列文</language>
			<language type="nub">努比亞文</language>
			<language type="nv">納瓦約文</language>
			<language type="nwc">古尼瓦爾文</language>
			<language type="ny">尼揚賈文</language>
			<language type="nym">尼揚韋齊文</language>
			<language type="nyn">尼揚科萊文</language>
			<language type="nyo">尼奧囉文</language>
			<language type="nzi">尼茲馬文</language>
			<language type="oc">奧克西坦文</language>
			<language type="oj">奧杰布瓦文</language>
			<language type="om">阿曼文</language>
			<language type="or">歐里亞文</language>
			<language type="os">奧塞提文</language>
			<language type="osa">歐塞奇文</language>
			<language type="ota">鄂圖曼土耳其文 (1500-1928)</language>
			<language type="oto">奧托米文</language>
			<language type="paa">其他巴布亞諸語言</language>
			<language type="pag">潘加辛文</language>
			<language type="pal">巴列維文</language>
			<language type="pam">潘帕嘉文</language>
			<language type="pap">帕皮阿門托文</language>
			<language type="pau">帛琉文</language>
			<language type="peo">古波斯文 (ca.600-400 B.C.)</language>
			<language type="phi">其他菲律賓文</language>
			<language type="pl">波蘭文</language>
			<language type="pon">波那貝文</language>
			<language type="pra">印度古代及中世紀之中部及北部方言</language>
			<language type="pro">古普羅旺斯文</language>
			<language type="ps">普什圖文</language>
			<language type="pt_PT">葡萄牙文 (葡萄牙)</language>
			<language type="qu">蓋丘亞文</language>
			<language type="raj">拉賈斯坦諸文</language>
			<language type="rap">復活島文</language>
			<language type="rar">拉羅通加文</language>
			<language type="rm">里托羅曼斯文</language>
			<language type="rn">隆迪文</language>
			<language type="ro">羅馬尼亞文</language>
			<language type="roa">其他羅曼文</language>
			<language type="rom">吉普賽文</language>
			<language type="root">根語言</language>
			<language type="rup">羅馬尼亞語系</language>
			<language type="rw">盧安達文</language>
			<language type="sad">桑達韋文</language>
			<language type="sah">雅庫特文</language>
			<language type="sai">南美印第安諸語言</language>
			<language type="sal">薩利甚文</language>
			<language type="sam">薩瑪利亞阿拉姆文</language>
			<language type="sas">撒撒克文</language>
			<language type="sat">散塔利文</language>
			<language type="sc">撒丁文</language>
			<language type="sco">蘇格蘭文</language>
			<language type="sd">印度語</language>
			<language type="se">北方薩米文</language>
			<language type="sel">瑟爾卡普文</language>
			<language type="sem">其他閃族語言</language>
			<language type="sga">古愛爾蘭文(至 900)</language>
			<language type="sgn">手語</language>
			<language type="sh">塞爾維亞克羅埃西亞文</language>
			<language type="shn">撣文</language>
			<language type="si">僧伽羅文</language>
			<language type="sid">希達摩文</language>
			<language type="sio">大蘇文</language>
			<language type="sit">其他漢藏文</language>
			<language type="sl">斯洛維尼亞文</language>
			<language type="sla">其他斯拉夫文</language>
			<language type="sm">薩摩亞文</language>
			<language type="sma">南薩米文</language>
			<language type="smi">其他薩米文</language>
			<language type="smj">魯勒薩米文</language>
			<language type="smn">伊納裡薩米文</language>
			<language type="sms">斯科特薩米文</language>
			<language type="sn">塞內加爾文</language>
			<language type="so">索馬利文</language>
			<language type="sog">索格底亞納文</language>
			<language type="sq">阿爾巴尼亞文</language>
			<language type="sr">塞爾維亞文</language>
			<language type="srn">蘇拉南東墎文</language>
			<language type="srr">塞雷爾文</language>
			<language type="ss">辛辛那提文</language>
			<language type="ssa">非洲撒哈拉沙漠邊緣地帶文</language>
			<language type="su">巽他語</language>
			<language type="suk">蘇庫馬文</language>
			<language type="sus">蘇蘇文</language>
			<language type="sux">蘇美文</language>
			<language type="sw">史瓦希里文</language>
			<language type="syc">古敘利亞文</language>
			<language type="syr">敘利亞文</language>
			<language type="ta">坦米爾文</language>
			<language type="tai">其他泰文</language>
			<language type="te">泰盧固文</language>
			<language type="tem">提姆文</language>
			<language type="ter">泰雷諾文</language>
			<language type="tet">泰頓文</language>
			<language type="ti">提格利尼亞文</language>
			<language type="tig">蒂格雷文</language>
			<language type="tiv">提夫文</language>
			<language type="tk">土庫曼文</language>
			<language type="tkl">托克勞文</language>
			<language type="tl">塔加路族文</language>
			<language type="tlh">克林貢文</language>
			<language type="tli">特林基特文</language>
			<language type="tmh">塔馬奇克文</language>
			<language type="tn">突尼西亞文</language>
			<language type="to">東加文</language>
			<language type="tog">湯加文(尼亞薩文)</language>
			<language type="tpi">托比辛文</language>
			<language type="ts">特松加文</language>
			<language type="tsi">欽西安文</language>
			<language type="tt">韃靼文</language>
			<language type="tum">圖姆布卡文</language>
			<language type="tup">圖皮文</language>
			<language type="tut">阿爾泰諸語言</language>
			<language type="tvl">吐瓦魯文</language>
			<language type="ty">大溪地文</language>
			<language type="tyv">土凡文</language>
			<language type="udm">沃蒂艾克文</language>
			<language type="ug">維吾爾文</language>
			<language type="uga">烏加列文</language>
			<language type="uk">烏克蘭文</language>
			<language type="umb">姆本杜文</language>
			<language type="und">未確定的</language>
			<language type="ur">烏爾都文</language>
			<language type="uz">烏茲別克文</language>
			<language type="vai">越南文 Vai</language>
			<language type="ve">溫達文</language>
			<language type="vi">越南語</language>
			<language type="wak">夸基武特文</language>
			<language type="war">瓦瑞文</language>
			<language type="was">瓦紹文</language>
			<language type="wen">文德文</language>
			<language type="wo">沃爾夫文</language>
			<language type="xal">卡爾梅克文</language>
			<language type="xh">科薩文</language>
			<language type="yao">瑤文</language>
			<language type="yi">意第緒文</language>
			<language type="yo">約魯巴文</language>
			<language type="ypk">愛斯基摩文</language>
			<language type="za">壯文</language>
			<language type="zap">薩波特克文</language>
			<language type="zbl">布列斯符號</language>
			<language type="zen">澤納加文</language>
			<language type="zh_Hans">簡體中文</language>
			<language type="zh_Hant">繁體中文</language>
			<language type="znd">贊德文</language>
			<language type="zu">祖魯文</language>
			<language type="zun">祖尼文</language>
			<language type="zxx">無語言內容</language>
		</languages>
		<scripts>
			<script type="Arab">阿拉伯文</script>
			<script type="Armn">亞美尼亞文</script>
			<script type="Avst">阿維斯陀文</script>
			<script type="Bali">峇里文</script>
			<script type="Batk">巴塔克文</script>
			<script type="Beng">孟加拉文</script>
			<script type="Blis">布列斯文</script>
			<script type="Bopo">注音符號</script>
			<script type="Brah">婆羅米文</script>
			<script type="Brai">盲人用點字法</script>
			<script type="Bugi">布吉斯文</script>
			<script type="Buhd">布希德文</script>
			<script type="Cans">加拿大原住民通用字符</script>
			<script type="Cari">卡里亞文</script>
			<script type="Cham">占文</script>
			<script type="Cher">柴羅基文</script>
			<script type="Copt">科普特文</script>
			<script type="Cprt">塞浦路斯文</script>
			<script type="Cyrl">斯拉夫語系</script>
			<script type="Cyrs">西里爾文(古教會斯拉夫文變體)</script>
			<script type="Dsrt">德瑟雷特文</script>
			<script type="Egyd">古埃及世俗體</script>
			<script type="Egyh">古埃及僧侶體</script>
			<script type="Egyp">古埃及象形文字</script>
			<script type="Ethi">衣索匹亞文</script>
			<script type="Geok">格魯吉亞語系(阿索他路里和努斯克胡里文)</script>
			<script type="Geor">喬治亞文</script>
			<script type="Glag">格拉哥里文</script>
			<script type="Goth">歌德文</script>
			<script type="Grek">希臘文</script>
			<script type="Gujr">古吉拉特文</script>
			<script type="Guru">古爾穆奇文</script>
			<script type="Hang">韓文</script>
			<script type="Hani">漢語</script>
			<script type="Hano">哈努諾文</script>
			<script type="Hans">簡體中文</script>
			<script type="Hant">繁體中文</script>
			<script type="Hebr">希伯來文</script>
			<script type="Hmng">楊松錄苗文</script>
			<script type="Hung">古匈牙利文</script>
			<script type="Inds">印度河流域(哈拉帕文)</script>
			<script type="Ital">古意大利文</script>
			<script type="Java">爪哇文</script>
			<script type="Jpan">日文</script>
			<script type="Kali">克耶李文</script>
			<script type="Khar">卡羅須提文</script>
			<script type="Khmr">高棉文</script>
			<script type="Knda">坎那達文</script>
			<script type="Lana">藍拿文</script>
			<script type="Laoo">寮國文</script>
			<script type="Latf">拉丁文(尖角體活字變體)</script>
			<script type="Latg">拉丁文(蓋爾語變體)</script>
			<script type="Latn">拉丁文</script>
			<script type="Lepc">雷布查文(榮)</script>
			<script type="Limb">林佈文</script>
			<script type="Lina">線性文字 A</script>
			<script type="Linb">線性文字 B</script>
			<script type="Lyci">呂西亞語</script>
			<script type="Lydi">里底亞語</script>
			<script type="Mand">曼安底文</script>
			<script type="Maya">瑪雅象形文字</script>
			<script type="Mero">麥羅埃文</script>
			<script type="Mlym">馬來亞拉姆文</script>
			<script type="Mong">蒙古文</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">曼尼普爾文</script>
			<script type="Mymr">緬甸文</script>
			<script type="Nkoo">Nkoo</script>
			<script type="Ogam">歐甘文</script>
			<script type="Olck">Olck</script>
			<script type="Orkh">鄂爾渾文</script>
			<script type="Orya">歐利亞文</script>
			<script type="Osma">歐斯曼亞文</script>
			<script type="Perm">古彼爾姆諸文</script>
			<script type="Phnx">腓尼基文</script>
			<script type="Plrd">柏格理拼音符</script>
			<script type="Qaai">Qaai</script>
			<script type="Rjng">拉讓文</script>
			<script type="Roro">朗格朗格象形文</script>
			<script type="Runr">古北歐文字</script>
			<script type="Saur">索拉什特拉文</script>
			<script type="Sgnw">手語書寫符號</script>
			<script type="Shaw">簫柏納字符</script>
			<script type="Sinh">錫蘭文</script>
			<script type="Sylo">希洛弟納格里文</script>
			<script type="Syrc">敍利亞文</script>
			<script type="Syre">敘利亞文(福音體文字變體)</script>
			<script type="Syrj">敘利亞文(西方文字變體)</script>
			<script type="Syrn">敘利亞文(東方文字變體)</script>
			<script type="Tagb">南島文</script>
			<script type="Tale">泰樂文</script>
			<script type="Talu">新彝族文</script>
			<script type="Taml">坦米爾文</script>
			<script type="Telu">泰魯古文</script>
			<script type="Teng">談格瓦文</script>
			<script type="Tfng">提非納(柏柏爾文)</script>
			<script type="Tglg">塔加拉文</script>
			<script type="Thaa">塔安那文</script>
			<script type="Thai">泰文</script>
			<script type="Tibt">西藏文</script>
			<script type="Ugar">烏加列文</script>
			<script type="Vaii">瓦依文</script>
			<script type="Visp">視覺語音文</script>
			<script type="Xpeo">古波斯文</script>
			<script type="Xsux">蘇米魯亞甲文楔形文字</script>
			<script type="Yiii">彞文</script>
			<script type="Zxxx">非書寫語言碼</script>
			<script type="Zyyy">一般文字</script>
			<script type="Zzzz">未編碼工序指令碼</script>
		</scripts>
		<territories>
			<territory type="014">東非</territory>
			<territory type="018">非洲南部</territory>
			<territory type="030">東亞</territory>
			<territory type="034">南亞</territory>
			<territory type="035">東南亞</territory>
			<territory type="039">南歐</territory>
			<territory type="053">澳洲與紐西蘭</territory>
			<territory type="054">美拉尼西亞</territory>
			<territory type="057">密克羅尼西亞</territory>
			<territory type="061">玻里尼西亞</territory>
			<territory type="062">中南亞</territory>
			<territory type="142">亞洲</territory>
			<territory type="143">中亞</territory>
			<territory type="145">西亞</territory>
			<territory type="150">歐洲</territory>
			<territory type="151">東歐</territory>
			<territory type="154">北歐</territory>
			<territory type="155">西歐</territory>
			<territory type="172">獨立國協</territory>
			<territory type="830">海峽群島</territory>
			<territory type="AD">安道爾</territory>
			<territory type="AE">阿拉伯聯合大公國</territory>
			<territory type="AG">安地卡及巴布達</territory>
			<territory type="AI">安圭拉島</territory>
			<territory type="AL">阿爾巴尼亞</territory>
			<territory type="AM">亞美尼亞</territory>
			<territory type="AN">荷屬安地列斯</territory>
			<territory type="AQ">南極洲</territory>
			<territory type="AS">美屬薩摩亞群島</territory>
			<territory type="AT">奧地利</territory>
			<territory type="AU">澳洲</territory>
			<territory type="AW">阿路巴</territory>
			<territory type="AX">亞蘭群島</territory>
			<territory type="AZ">亞塞拜然</territory>
			<territory type="BA">波士尼亞與赫塞格維納</territory>
			<territory type="BB">巴貝多</territory>
			<territory type="BD">孟加拉</territory>
			<territory type="BE">比利時</territory>
			<territory type="BF">布吉納法索</territory>
			<territory type="BG">保加利亞</territory>
			<territory type="BI">蒲隆地</territory>
			<territory type="BJ">貝南</territory>
			<territory type="BL">聖巴瑟米</territory>
			<territory type="BM">百慕達</territory>
			<territory type="BN">汶萊</territory>
			<territory type="BO">玻利維亞</territory>
			<territory type="BS">巴哈馬</territory>
			<territory type="BV">布威島</territory>
			<territory type="BW">波札那</territory>
			<territory type="BY">白俄羅斯</territory>
			<territory type="BZ">貝里斯</territory>
			<territory type="CC">可可斯群島</territory>
			<territory type="CD">剛果民主共和國</territory>
			<territory type="CF">中非共和國</territory>
			<territory type="CG">剛果</territory>
			<territory type="CI">科特迪瓦</territory>
			<territory type="CK">庫克群島</territory>
			<territory type="CM">喀麥隆</territory>
			<territory type="CN">中華人民共和國</territory>
			<territory type="CO">哥倫比亞</territory>
			<territory type="CR">哥斯大黎加</territory>
			<territory type="CS">塞爾維亞和蒙特尼哥羅</territory>
			<territory type="CV">維德角</territory>
			<territory type="CX">聖誕島</territory>
			<territory type="CY">賽普勒斯</territory>
			<territory type="CZ">捷克共和國</territory>
			<territory type="DE">德國</territory>
			<territory type="DJ">吉布地</territory>
			<territory type="DK">丹麥</territory>
			<territory type="DM">多明尼加</territory>
			<territory type="DO">多明尼加共和國</territory>
			<territory type="DZ">阿爾及利亞</territory>
			<territory type="EC">厄瓜多爾</territory>
			<territory type="EE">愛沙尼亞</territory>
			<territory type="ER">厄利垂亞</territory>
			<territory type="ET">衣索比亞</territory>
			<territory type="FI">芬蘭</territory>
			<territory type="FJ">斐濟</territory>
			<territory type="FK">福克蘭群島</territory>
			<territory type="FM">密克羅尼西亞群島</territory>
			<territory type="FO">法羅群島</territory>
			<territory type="FR">法國</territory>
			<territory type="GA">加彭</territory>
			<territory type="GB">英國</territory>
			<territory type="GD">格瑞納達</territory>
			<territory type="GE">喬治亞共和國</territory>
			<territory type="GF">法屬圭亞那</territory>
			<territory type="GG">根西島</territory>
			<territory type="GH">迦納</territory>
			<territory type="GI">直布羅陀</territory>
			<territory type="GL">格陵蘭</territory>
			<territory type="GM">甘比亞</territory>
			<territory type="GN">幾內亞</territory>
			<territory type="GP">哥德普洛</territory>
			<territory type="GQ">赤道幾內亞</territory>
			<territory type="GR">希臘</territory>
			<territory type="GS">南喬治亞與南三明治群島</territory>
			<territory type="GT">瓜地馬拉</territory>
			<territory type="GU">關島</territory>
			<territory type="GW">幾內亞比索</territory>
			<territory type="GY">蓋亞納</territory>
			<territory type="HK">中華人民共和國香港特別行政區</territory>
			<territory type="HM">赫德與麥克當諾群島</territory>
			<territory type="HN">宏都拉斯</territory>
			<territory type="HR">克羅埃西亞</territory>
			<territory type="ID">印尼</territory>
			<territory type="IE">愛爾蘭</territory>
			<territory type="IM">曼島</territory>
			<territory type="IO">英屬印度洋領土</territory>
			<territory type="IS">冰島</territory>
			<territory type="IT">義大利</territory>
			<territory type="JE">澤西島</territory>
			<territory type="JM">牙買加</territory>
			<territory type="JO">約旦</territory>
			<territory type="KE">肯亞</territory>
			<territory type="KG">吉爾吉斯</territory>
			<territory type="KI">吉里巴斯</territory>
			<territory type="KM">科摩羅群島</territory>
			<territory type="KN">聖克里斯多福及尼維斯</territory>
			<territory type="KP">北韓</territory>
			<territory type="KR">南韓</territory>
			<territory type="KY">開曼群島</territory>
			<territory type="KZ">哈薩克</territory>
			<territory type="LA">寮國</territory>
			<territory type="LC">聖露西亞</territory>
			<territory type="LI">列支敦斯登</territory>
			<territory type="LK">斯里蘭卡</territory>
			<territory type="LR">賴比瑞亞</territory>
			<territory type="LS">賴索扥</territory>
			<territory type="LU">盧森堡</territory>
			<territory type="LV">拉脫維亞</territory>
			<territory type="LY">利比亞</territory>
			<territory type="MC">摩納哥</territory>
			<territory type="MD">摩爾多瓦</territory>
			<territory type="ME">蒙特內哥羅</territory>
			<territory type="MF">聖馬丁</territory>
			<territory type="MG">馬達加斯加</territory>
			<territory type="MH">馬紹爾群島</territory>
			<territory type="MK">馬其頓</territory>
			<territory type="ML">馬利</territory>
			<territory type="MM">緬甸</territory>
			<territory type="MO">澳門</territory>
			<territory type="MP">北馬里亞納群島</territory>
			<territory type="MQ">馬丁尼克島</territory>
			<territory type="MR">茅利塔尼亞</territory>
			<territory type="MS">蒙特色拉特島</territory>
			<territory type="MT">馬爾他</territory>
			<territory type="MU">模里西斯</territory>
			<territory type="MV">馬爾地夫</territory>
			<territory type="MW">馬拉威</territory>
			<territory type="MY">馬來西亞</territory>
			<territory type="MZ">莫三比克</territory>
			<territory type="NA">納米比亞</territory>
			<territory type="NC">新喀里多尼亞群島</territory>
			<territory type="NE">尼日</territory>
			<territory type="NF">諾福克島</territory>
			<territory type="NG">奈及利亞</territory>
			<territory type="NL">荷蘭</territory>
			<territory type="NP">尼泊爾</territory>
			<territory type="NR">諾魯</territory>
			<territory type="NU">紐威島</territory>
			<territory type="NZ">紐西蘭</territory>
			<territory type="OM">阿曼王國</territory>
			<territory type="PA">巴拿馬</territory>
			<territory type="PE">秘魯</territory>
			<territory type="PF">法屬玻里尼西亞</territory>
			<territory type="PG">巴布亞紐幾內亞</territory>
			<territory type="PH">菲律賓</territory>
			<territory type="PL">波蘭</territory>
			<territory type="PM">聖彼德與密啟崙</territory>
			<territory type="PN">皮特康</territory>
			<territory type="PS">巴勒斯坦</territory>
			<territory type="PW">帛琉</territory>
			<territory type="QA">卡達</territory>
			<territory type="QO">大洋洲邊疆群島</territory>
			<territory type="QU">歐盟</territory>
			<territory type="RE">留尼旺</territory>
			<territory type="RO">羅馬尼亞</territory>
			<territory type="RS">塞爾維亞</territory>
			<territory type="RU">俄羅斯</territory>
			<territory type="RW">盧安達</territory>
			<territory type="SA">沙烏地阿拉伯</territory>
			<territory type="SB">索羅門群島</territory>
			<territory type="SC">塞席爾</territory>
			<territory type="SD">蘇丹</territory>
			<territory type="SH">聖赫勒拿島</territory>
			<territory type="SI">斯洛維尼亞</territory>
			<territory type="SJ">冷岸及央麥恩群島</territory>
			<territory type="SL">獅子山</territory>
			<territory type="SM">聖馬利諾</territory>
			<territory type="SN">塞內加爾</territory>
			<territory type="SO">索馬利亞</territory>
			<territory type="SR">蘇利南</territory>
			<territory type="ST">聖多美及普林西比</territory>
			<territory type="SV">薩爾瓦多</territory>
			<territory type="SY">敘利亞</territory>
			<territory type="SZ">史瓦濟蘭</territory>
			<territory type="TC">土克斯及開科斯群島</territory>
			<territory type="TD">查德</territory>
			<territory type="TF">法國南屬地</territory>
			<territory type="TG">多哥共和國</territory>
			<territory type="TH">泰國</territory>
			<territory type="TJ">塔吉克</territory>
			<territory type="TK">托克勞群島</territory>
			<territory type="TL">東帝汶</territory>
			<territory type="TM">土庫曼</territory>
			<territory type="TN">突尼西亞</territory>
			<territory type="TO">東加</territory>
			<territory type="TT">千里達及托巴哥</territory>
			<territory type="TV">吐瓦魯</territory>
			<territory type="TW">臺灣</territory>
			<territory type="TZ">坦尚尼亞</territory>
			<territory type="UA">烏克蘭</territory>
			<territory type="UG">烏干達</territory>
			<territory type="UM">美屬邊疆群島</territory>
			<territory type="US">美國</territory>
			<territory type="UY">烏拉圭</territory>
			<territory type="UZ">烏茲別克</territory>
			<territory type="VA">梵蒂岡</territory>
			<territory type="VC">聖文森及格瑞那丁</territory>
			<territory type="VE">委內瑞拉</territory>
			<territory type="VG">英屬維京群島</territory>
			<territory type="VI">美屬維京群島</territory>
			<territory type="VU">萬那杜</territory>
			<territory type="WF">瓦利斯和福杜納群島</territory>
			<territory type="WS">薩摩亞群島</territory>
			<territory type="YE">葉門</territory>
			<territory type="YT">馬約特</territory>
			<territory type="ZM">尚比亞</territory>
			<territory type="ZW">辛巴威</territory>
			<territory type="ZZ">未確定的區域</territory>
		</territories>
		<variants>
			<variant type="1901">1901</variant>
			<variant type="1996">1996</variant>
			<variant type="AREVELA">亞美尼亞東部</variant>
			<variant type="AREVMDA">亞美尼亞西部</variant>
			<variant type="FONIPA">IPA 拼音</variant>
			<variant type="FONUPA">UPA 拼音</variant>
			<variant type="MONOTON">單音</variant>
			<variant type="NEDIS">Natisone 方言</variant>
			<variant type="POSIX">電腦</variant>
			<variant type="REVISED">已修訂</variant>
			<variant type="SAAHO">SAAHO</variant>
		</variants>
		<keys>
			<key type="calendar">日曆</key>
			<key type="collation">校對</key>
			<key type="currency">貨幣</key>
		</keys>
		<types>
			<type type="big5han" key="collation">繁體中文 (Big5)</type>
			<type type="buddhist" key="calendar">佛教曆法</type>
			<type type="chinese" key="calendar">農曆</type>
			<type type="direct" key="collation">直接順序</type>
			<type type="gb2312han" key="collation">簡體中文 (GB2312)</type>
			<type type="gregorian" key="calendar">公曆</type>
			<type type="hebrew" key="calendar">希伯來曆法</type>
			<type type="indian" key="calendar">印度國家曆法</type>
			<type type="islamic" key="calendar">伊斯蘭曆法</type>
			<type type="islamic-civil" key="calendar">伊斯蘭城市曆法</type>
			<type type="japanese" key="calendar">日本曆法</type>
			<type type="phonebook" key="collation">電話簿順序</type>
			<type type="pinyin" key="collation">拼音順序</type>
			<type type="roc" key="calendar">中華民國曆</type>
			<type type="stroke" key="collation">筆劃順序</type>
			<type type="traditional" key="collation">傳統曆法</type>
		</types>
		<codePatterns>
			<codePattern type="language">語言:{0}</codePattern>
			<codePattern type="script">文字:{0}</codePattern>
			<codePattern type="territory">地區:{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[一 丁 七 丈-不 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五 井 些 亞 亡 交 亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代-以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸 似 伽 但 佈 位-住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係-俄 俊 俗 保 俠 信 修 俱 俾 個 倍 們 倒 候 倚 借 倫 值 假 偉 偏 做 停 健 側-偷 傑 備 傢 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元-充 兇-光 克 免 兒 兔 入 內-兩 八-兮 共 兵-典 兼 冊 再 冒 冠 冬 冰 冷 准 凌 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初 判 別 利 刪 到 制 刷 刺 刻 則 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助-劫 勁 勇 勉 勒 動 務 勝 勞 勢 勤 勵 勸 勿 包 匈 化 北 匹 區 十 千 升 午 半 卒-協 南 博 卡 印 危 即 卷 卻 厄 厘 厚 原 厭 厲 去 參 又 及 友 反 叔 取 受 口-另 叫-叭 可 台 史 右 司 吃 各 合-吊 同-后 吐 向 君 吝-吟 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告 呢 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咱 哀 品 哇-哉 哎 員 哥 哦 哩 哪 哭 哲 唉 唐 唬 售 唯 唱 唷 唸 商 啊 問 啟 啡 啥 啦 啪 喀 喂 善 喇 喊 喔 喜 喝 喬 單 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 器 噴 嚇 嚴 囉 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾 址 均 坎 坐 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 增 墨 墮 壁 壓 壘 壞 壢 士 壯 壽 夏 夕 外 多 夜 夠 夢 夥 大 天-夫 央 失 夷 夸 夾 奇-奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好 如 妙 妥 妨 妮 妳 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娘 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 字 存 孝 孟 季 孤 孩 孫 學 它 宅 宇-安 宋 完 宏 宗-宜 客-室 宮 害 家 容 宿 寂 寄 密 富 寒 寞 察 寢 實-審 寫 寬 寮 寶 封 射 將 專 尊 尋 對-小 少 尖 尚 尤 就 尺 尼 尾 局 屁 居 屆 屋 屏 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工-巨 巫 差 己 已 巴 巷 市 布 希 帕 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幣 幫 干-年 幸 幹 幻-幾 床 序 底 店 府 度 座 庫 庭 康 庸 廉 廖 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彞 形 彥 彩 彬 彭 彰 影 役 彼 往 征 待 很 律 後 徐-徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志-忙 忠 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢 恥 恨 恩 恭 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰 慶 慾 憂 憐 憑 憲 憶 憾 懂 應 懶 懷 懼 戀 戈 成-戒 或 截 戰 戲 戴 戶 房-扁 扇 手 才 扎 打 托 扣 扥 扭 扯 批 找-技 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捐 捕 捨 捲 捷 掃 授 掉 掌 排 掛 採 探 接 控 推 措 描 提 插 揚 換 握 揮 援 損 搖 搞 搬 搭 搶 摘 摩 摸 撐 撒 撞 撣 撥 播 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攝 支 收 改 攻 放 政 故 效 敍 敏 救 敗-教 敝 敢 散 敦 敬 整 敵 數 文 斐 斗 料 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇 昌 明 昏 易 星 映 春 昨 昭 是 時 晉 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暴 曆 曉 曰 曲 更 書 曼 曾-最 會 月 有 朋 服 朗 望 朝 期 木 未-札 朱 朵 杉 李 材 村 杜 束 杯-東 松 板 析 林 果 枝 架 柏 某 染 柔 查 柬 柳 柴 校 核 根 格 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄 棉 棋 棒 棚 森 椅 植 椰 楊 楓 楚 業 極 概 榜 榮 構 槍 樂 樓 標 樞 模 樣 樹 橋 機 橫 檀 檔 檢 欄 權 次 欣 欲 欺 欽 款 歉 歌 歐 歡-武 歲 歷 歸 死 殊 殘 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 求 汗 汝 江-污 汪 汶 決 汽 沃 沈 沉 沒 沖 沙 河 油 治 沿 況 泉 泊 法 泡 波 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浦 浩 浪 浮 海 涇-涉 涯 液 涵 涼 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湯 源 準 溝 溪 溫 滄 滅 滋 滑 滴 滾 滿 漂 漏 演 漠 漢 漫 漲 漸 潔 潘 潛 潮 澤 澳 激 濃 濟 濤 濫 濱 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烤 無 焦 然 煙 煞 照 煩 熊 熟 熱 燃 燈 燒 營 爆 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆-版 牌 牙 牛 牠 牧 物 牲 特 牽 犧 犯 狀 狂 狐 狗 狠 狼 猛 猜 猶 獄 獅 獎 獨 獲 獸 獻 玄 率 玉 王 玩 玫 玲 玻 珊 珍 珠 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓦 瓶 甘 甚 甜 生 產 用 田-申 男 甸 界 留 畢 略 番 畫 異 當 疆 疏 疑 疼 病 痕 痛 痴 瘋 療 癡 登-百 的 皆 皇 皮 盃 益 盛 盜 盟 盡 監 盤 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睛 睡 督 瞧 瞭 矛 矣 知 短 石 砂 砍 研 砲 破 硬 碎 碗 碟 碧 碩 碰 確 碼 磁 磨 磯 礎 礙 示 社 祕 祖 祝 神 祥 票 禁 禍 福 禪 禮 秀 私 秋 科 秒 秘 租 秤 秦 移 稅 程 稍 種 稱 稿 穆 穌 積 穩 究 穹 空 穿 突 窗 窩 窮 立 站 竟 章 童 端 競 竹 笑 笛 符 笨 第 筆 等 筋 答 策 简 算 管 箭 箱 節 範 篇 築 簡 簫 簽 簿 籃 籌 籍 米 粉 粗 精 糊 糕 糟 系 糾 紀 約 紅 納 紐 純 紙-紛 素 索 紫 累 細 紹 終 組 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 緊 緒 線 緣 編 緩 緬 緯 練 縣 縮 縱 總 績 繁 織 繞 繪 繳 繼 續 缸 缺 罕 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職 聽 肉 肚 股 肥 肩 肯 育 背 胎 胖 胞 胡 胸 能 脆 脫 腓 腔 腦 腰 腳 腿 膽 臉 臘 臣 臥 臨 自 臭 至 致 臺 與-舊 舌 舍 舒 舞 舟 航 般 船 艦 良 色 艾 芝 芬 花 芳 若 苦 英 茅 茫 茲 茶 草 荒 荷 莉 莊 莎 莫 菜 菩 華 菲 萄 萊 萬 落 葉 著 葛 葡 蒂 蒙 蒲 蒼 蓋 蓮 蔕 蔡 蔣 蕭 薄 薦 薩 薪 藉 藍 藏 藝 藤 藥 蘆 蘇 蘭 虎 處 虛 號 虧 蛋 蛙 蜂 蜜 蝶 融 螢 蟲 蟹 蠍 蠻 血 行 術 街 衛 衝 衡 衣 表 袋 被 裁 裂 裕 補 裝 裡 製 複 褲 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸 言 訂 計 訊 討 訓 託 記 訪 設 許 訴 註 証 評 詞 詢 試 詩 話-詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒 論 諸 諺 諾 謀 謂 講 謝 證 識 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豐 象 豪 豬 貌 貓 貝 貞 負-貢 貨 貪-責 貴 買 費 貼 賀 資 賈 賓 賜 賞 賢-賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跌 跎 跑 距 跟 跡 路 跳 踏 踢 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轟 辛 辦 辨 辭 辯 辱 農 迅 迎 近 迦 迪 迫 述 迴 迷 追 退 送 逃 逆 透 逐 途 這-逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道-違 遙 遜 遠 適 遭 遮 遲 遷 選 遺 避-邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄭 鄰 配 酒 酷 酸 醉 醒 醜 醫 采 釋-量 金 針 釣 鈴 銀 銖 銘 銳 銷 鋒 鋼 錄 錢 錦 錫 錯 鍋 鍵 鍾 鎊 鎖 鎮 鏡 鐘 鐵 鑑 長 門 閃 閉 開 閒 間 閣 閱 闆 闊 闐 關 闡 防 阻 阿 陀 附 降 限 院-除 陪 陰 陳 陵-陸 陽 隆 隊 階 隔 際 障 隨 險 隱 隻 雄-集 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷 電 需 震 霍 霧 露 霸 霹 靂 靈 青 靖 靜 非 靠 面 革 靼 鞋 韃 韋 韓 音 韻 響 頁 頂 項 順 須 預 頑 頓 頗 領 頭 頻 顆 題 額 顏 願 類 顧 顯 風 飄 飛 食 飯 飲 飽 飾 餅 養 餐 餘 館 首 香 馬 駐 駕 駛 騎 騙 騷 驅 驗 驚 骨 體 高 髮 鬆 鬥 鬧 鬱 鬼 魁 魂 魅 魔 魚 魯 鮮 鳥 鳳 鳴 鴻 鵝 鷹 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 點 黨 鼓 鼠 鼻 齊 齋 齒 齡 龍 龜]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[伏 侶 兌 兹 别 勳 卑 占 叶 堤 墎 奥 孜 峇 巽 彝 彞 敍 楔 渾 燦 狄 琳 瑚 甫 礁 简 芒 苗 茨 蚩 蜀 隴]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>「</quotationStart>
		<quotationEnd>」</quotationEnd>
		<alternateQuotationStart>『</alternateQuotationStart>
		<alternateQuotationEnd>』</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="chinese">
				<am>上午</am>
				<pm>下午</pm>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEEy'x'G-Ml-d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1月</month>
							<month type="2">2月</month>
							<month type="3">3月</month>
							<month type="4">4月</month>
							<month type="5">5月</month>
							<month type="6">6月</month>
							<month type="7">7月</month>
							<month type="8">8月</month>
							<month type="9">9月</month>
							<month type="10">10月</month>
							<month type="11">11月</month>
							<month type="12">12月</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">週日</day>
							<day type="mon">週一</day>
							<day type="tue">週二</day>
							<day type="wed">週三</day>
							<day type="thu">週四</day>
							<day type="fri">週五</day>
							<day type="sat">週六</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">第1季</quarter>
							<quarter type="2">第2季</quarter>
							<quarter type="3">第3季</quarter>
							<quarter type="4">第4季</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<eras>
					<eraNames>
						<era type="0">西元前</era>
						<era type="1">西元</era>
					</eraNames>
				</eras>
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>ahh時mm分ss秒v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>ahh時mm分ss秒z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>ah:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Ed">d日(E)</dateFormatItem>
						<dateFormatItem id="HHmm">H:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">H:mm:ss</dateFormatItem>
						<dateFormatItem id="MEd">M-d(E)</dateFormatItem>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
						<dateFormatItem id="yM">yyyy/M</dateFormatItem>
						<dateFormatItem id="yMEd">yyyy/M/d(EEE)</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy年M月</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy年M月</dateFormatItem>
						<dateFormatItem id="yyMM">yyyy/MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0}至{1}</intervalFormatFallback>
						<intervalFormatItem id="M">
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">M/dE至M/dE</greatestDifference>
							<greatestDifference id="d">M/dE至M/dE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL至LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d至M/d</greatestDifference>
							<greatestDifference id="d">M/d至M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">ah時至ah時</greatestDifference>
							<greatestDifference id="h">ah時至h時</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">vah:mm至ah:mm</greatestDifference>
							<greatestDifference id="h">vah:mm至h:mm</greatestDifference>
							<greatestDifference id="m">vah:mm至h:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">vah時至ah時</greatestDifference>
							<greatestDifference id="h">vah時至h時</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy/M至yyyy/M</greatestDifference>
							<greatestDifference id="y">yyyy/M至yyyy/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yyyy/M/dE至yyyy/M/dE</greatestDifference>
							<greatestDifference id="d">yyyy/M/dE至yyyy/M/dE</greatestDifference>
							<greatestDifference id="y">yyyy/M/dE至yyyy/M/dE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy年M月至M月</greatestDifference>
							<greatestDifference id="y">yyyy/M至yyyy/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy/M/d至yyyy/M/d</greatestDifference>
							<greatestDifference id="d">yyyy/M/d至yyyy/M/d</greatestDifference>
							<greatestDifference id="y">yyyy/M/d至yyyy/M/d</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>年代</displayName>
					</field>
					<field type="week">
						<displayName>週</displayName>
					</field>
					<field type="day">
						<relative type="2">後天</relative>
						<relative type="3">大後天</relative>
						<relative type="-3">大前天</relative>
					</field>
					<field type="weekday">
						<displayName>週天</displayName>
					</field>
					<field type="hour">
						<displayName>小時</displayName>
					</field>
					<field type="minute">
						<displayName>分鐘</displayName>
					</field>
					<field type="second">
						<displayName>秒</displayName>
					</field>
					<field type="zone">
						<displayName>區域</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="roc">
				<am>上午</am>
				<pm>下午</pm>
				<eras>
					<eraAbbr>
						<era type="0">民國前</era>
						<era type="1">民國</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>Gy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>Gy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>格林威治標準時間{0}</gmtFormat>
			<regionFormat>{0}時間</regionFormat>
			<fallbackFormat>{1}({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>未知地區</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>安道爾</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>杜拜</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>阿富汗</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>安地卡及巴布達</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>安吉拉</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>阿爾巴尼亞</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>亞美尼亞</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>荷屬安地列斯</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>安哥拉</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>羅瑟拉</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>帕麥</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>南極</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>昭和</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>戴維斯</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>莫斯托克</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>凱西</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>杜蒙杜爾維爾</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>麥克馬多</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>加拉哥斯</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>門多薩</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>聖胡安</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>烏斯懷亞</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>拉略哈</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>聖路易</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>卡塔馬卡</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>胡韋</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>吐庫曼</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>哥多華</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>布宜諾斯艾利斯</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>派哥派哥</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>奧地利</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>伯斯</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>達爾文</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>阿得雷德</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>斷丘市</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>克黎</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>墨爾本</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>荷巴特</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>雪梨</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>布利斯班</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>羅豪島</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>阿魯巴</exemplarCity>
			</zone>
			<zone type="Europe/Mariehamn">
				<exemplarCity>奧蘭群島</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>亞塞拜然</exemplarCity>
			</zone>
			<zone type="Europe/Sarajevo">
				<exemplarCity>沙拉耶佛</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>巴貝多</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>孟加拉</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>布魯塞爾</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>布吉納法索</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>保加利亞</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>蒲隆地</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>貝南</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>百慕達</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>汶萊</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>玻利維亞</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>艾魯內佩</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>布蘭科</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>維留港</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>保維斯塔</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>瑪瑙斯</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>古雅巴</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>格蘭場</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>貝倫</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>阿拉圭那</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>聖保羅</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>巴伊阿</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>福塔力莎</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>馬瑟歐</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>雷西非</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>諾倫哈</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>巴哈馬</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>不丹</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>波札那</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>白俄羅斯</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>貝里斯</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>道生河</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>懷特霍斯</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>伊奴維克</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>溫哥華</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>道生灣</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>耐羅耐佛</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>艾德蒙吞</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>瑞夫卡倫特</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>劍橋灣</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>利宅那</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>溫尼伯</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>羅斯魯特</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>雨河鎮</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>蘭今灣</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>珊德灣</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>尼皮岡</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>多倫多</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>蒙特婁</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>伊魁特</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>潘尼爾東</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>蒙克頓</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>哈里法克斯</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>鵝灣</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>格雷斯貝</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>白朗薩布隆</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>聖約翰</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>科科斯群島</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>金夏沙</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>蘆佈巴西</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>中非共和國</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>剛果共和國</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>瑞士</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>象牙海岸</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>拉洛東加島</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>復活島</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>聖地牙哥</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>喀麥隆</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>喀什米爾</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>烏魯木齊</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>重慶</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>哈爾濱</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>哥倫比亞</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>哥斯大黎加</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>古巴</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>維德角</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>聖誕島</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>塞浦勒斯</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>捷克</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>德國</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>吉布地</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>丹麥</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>多明尼加</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>多明尼加共和國</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>阿爾及利亞</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>加拉巴哥群島</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>瓜亞基爾</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>愛沙尼亞</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>埃及</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>西撒哈拉</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>厄利垂亞</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>加納利</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>休達</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>馬德里</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>衣索比亞</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>芬蘭</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>斐濟</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>史坦萊</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>土魯克群島</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>波納佩</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>科斯里</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>法羅群島</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>加彭</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>倫敦</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>格瑞納達</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>喬治亞</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>法屬蓋亞那</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>根息</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>迦納</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>直布羅陀</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>杜里</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>高特哈市</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>斯可比海峽</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>丹馬沙文</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>斑竹</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>幾內亞</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>瓜德羅普</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>赤道幾內亞</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>希臘</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>南喬治亞與南三明治島</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>瓜地馬拉</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>關島</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>幾內亞比索</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>圭亞那</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>中華人民共和國香港特別行政區</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>德古斯加巴</exemplarCity>
			</zone>
			<zone type="Europe/Zagreb">
				<exemplarCity>克羅埃西亞</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>海地</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>匈牙利</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>雅加達</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>馬卡沙爾</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>加亞布拉</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>愛爾蘭</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>印度</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>英屬印度洋領地</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>伊拉克</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>伊朗</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>冰島</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>羅馬</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>牙買加</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>約旦</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>東京</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>奈洛比</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>吉爾吉斯</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>柬埔寨</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>恩得伯理島</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>吉里巴斯</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>科摩羅群島</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>聖啟斯與尼維斯</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>北韓</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>首爾</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>開曼</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>艾克陶</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>奧拉爾</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>阿克糾賓</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>奎茲羅答</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>阿拉木圖</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>寮國</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>貝鲁特特</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>聖露西亞</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>列支敦斯登</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>可倫坡</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>蒙羅維亞</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>賴索托</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>立陶宛</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>盧森堡</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>拉脫維亞</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>利比亞</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>卡薩布蘭卡</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>摩納哥</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>奇西瑙</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>波多里察</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>馬達加斯加</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>瓜加林島</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>馬朱諾</exemplarCity>
			</zone>
			<zone type="Europe/Skopje">
				<exemplarCity>斯科普耶</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>巴馬科</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>緬甸</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>烏蘭巴托</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>卓巴爾塞</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>中華人民共和國澳門特別行政區</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>北馬里亞納群島</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>馬丁尼克</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>茅利塔尼亞</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>蒙賽拉特</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>馬爾他</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>模里西斯</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>馬爾地夫</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>馬拉威</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>提華納</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>厄莫休</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>馬薩特蘭</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>奇華華</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>蒙特瑞</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>墨西哥市</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>美里達</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>康庫</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>古晉</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>莫三比克</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>溫荷克</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>新喀里多尼亞</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>尼日</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>諾福克群島</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>奈及利亞</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>尼加拉瓜</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>荷蘭</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>奧斯陸</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>尼泊爾</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>諾魯</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>紐埃</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>查坦</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>奧克蘭</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>阿曼</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>巴拿馬</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>秘魯</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>大溪地</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>馬可薩斯島</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>岡必爾群島</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>巴布亞新幾內亞</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>菲律賓</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>喀拉蚩</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>波蘭</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>聖皮里及米圭隆</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>匹特開恩群島</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>加薩</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>亞速爾群島</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>馬得拉群島</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>帛琉</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>巴拉圭</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>卡達</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>留尼旺島</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>塞爾維亞</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>加里寧格勒</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>伏爾加格勒</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>沙馬拉</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>葉卡捷林堡</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>新西伯利亞</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>克拉斯諾雅斯克</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>伊爾庫次克</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>雅庫次克</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>海參崴</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>庫頁島</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>馬加丹</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>堪查加</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>阿那底河</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>盧安達</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>利雅德</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>瓜達卡納</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>塞席爾</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>卡土穆</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>斯德哥爾摩</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>聖赫勒拿島</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>斯洛維尼亞</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>隆意耳拜恩</exemplarCity>
			</zone>
			<zone type="Europe/Bratislava">
				<exemplarCity>布拉提拉瓦</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>獅子山</exemplarCity>
			</zone>
			<zone type="Europe/San_Marino">
				<exemplarCity>聖馬利諾</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>塞內加爾</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>摩加迪休</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>巴拉馬利波</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>聖多美普林西比</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>薩爾瓦多</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>敘利亞</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>史瓦濟蘭</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>土克斯和開卡斯群島</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>恩加納美</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>克格連群島</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>多哥</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>泰國</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>塔吉克</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>托克勞</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>東帝汶</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>土庫曼</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>坦尚尼亞</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>東加</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>伊斯坦堡</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>千里達</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>吐瓦魯</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>台灣</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>尚尼亞</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>烏茲哥洛</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>基輔</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>辛非洛浦</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>札波羅結</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>康培拉</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>中途島</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>強斯頓</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>艾達克</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>諾姆</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>安克里治</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>雅庫塔</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>朱諾</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>洛杉磯</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>波伊斯</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>鳳凰城</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>船岩峰</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>紐沙倫,北達科他州</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>申特城</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>美諾米克</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>溫森斯</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>彼得堡,印第安那州</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>泰爾城</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>諾克斯</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>威納麥克,印第安那州</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>馬倫哥</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>印第安那波里斯</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>路易斯維爾</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>維威</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>蒙提瑟洛</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>紐約</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>烏拉圭</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>撒馬爾罕</exemplarCity>
			</zone>
			<zone type="Europe/Vatican">
				<exemplarCity>梵蒂岡</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>聖文森</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>卡拉卡斯</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>托托拉島</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>美屬維京群島</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>越南</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>愛發提</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>瓦利斯與富圖納群島</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>亞庇</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>葉門</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>馬約特島</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>南非</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>尚比亞</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>辛巴威</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>艾克時間</standard>
					<daylight>艾克夏令時間</daylight>
				</long>
				<short>
					<standard>ACT(艾克)</standard>
					<daylight>ACST(艾克)</daylight>
				</short>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>中非時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>東非時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>南非標準時間</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>西非時間</standard>
					<daylight>西非夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>阿克秋賓斯克時間</standard>
					<daylight>阿克秋賓斯克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>阿拉斯加時間</generic>
					<standard>阿拉斯加標準時間</standard>
					<daylight>阿拉斯加夏令時間</daylight>
				</long>
				<short>
					<standard>AKST</standard>
					<daylight>AKDT</daylight>
				</short>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>阿拉斯加-夏威夷時間</generic>
					<standard>阿拉斯加-夏威夷標準時間</standard>
					<daylight>阿拉斯加-夏威夷夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>阿拉木圖時間</standard>
					<daylight>阿拉木圖夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>亞馬遜時間</standard>
					<daylight>亞馬遜夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>中部時間</generic>
					<standard>中部標準時間</standard>
					<daylight>中部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>東部時間</generic>
					<standard>東部標準時間</standard>
					<daylight>東部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>山區時間</generic>
					<standard>山區標準時間</standard>
					<daylight>山區日光節約時間</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>太平洋時間</generic>
					<standard>太平洋標準時間</standard>
					<daylight>太平洋夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>阿克陶標準時間</standard>
					<daylight>阿克陶夏令時間</daylight>
				</long>
				<short>
					<standard>AQTT (阿克陶)</standard>
					<daylight>AQTST (阿克陶)</daylight>
				</short>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>阿克托比時間</standard>
					<daylight>阿克托比夏令時間</daylight>
				</long>
				<short>
					<standard>AQTT (阿克托比)</standard>
					<daylight>AQTST (阿克托比)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>阿拉伯時間</generic>
					<standard>阿拉伯標準時間</standard>
					<daylight>阿拉伯夏令時間</daylight>
				</long>
				<short>
					<generic>AT(阿拉伯)</generic>
					<standard>AST(阿拉伯)</standard>
					<daylight>ADT (阿拉伯)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>阿根廷時間</standard>
					<daylight>阿根廷夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<generic>阿根廷西部時間</generic>
					<standard>阿根廷西部時間</standard>
					<daylight>阿根廷西部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>亞美尼亞時間</standard>
					<daylight>亞美尼亞夏令時間</daylight>
				</long>
				<short>
					<standard>AMT(亞美尼亞)</standard>
					<daylight>AMST(亞美尼亞)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>阿什哈巴德時間</standard>
					<daylight>阿什哈巴德夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>大西洋時間</generic>
					<standard>大西洋標準時間</standard>
					<daylight>大西洋夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>澳洲中部時間</generic>
					<standard>澳洲中部標準時間</standard>
					<daylight>澳洲中部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>澳洲東部時間</generic>
					<standard>澳洲東部標準時間</standard>
					<daylight>澳洲東部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>澳洲西部時間</generic>
					<standard>澳洲西部標準時間</standard>
					<daylight>澳洲西部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>亞塞拜然時間</standard>
					<daylight>亞塞拜然夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>亞速爾群島時間</standard>
					<daylight>亞速爾群島夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>巴庫時間</standard>
					<daylight>巴庫夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>孟加拉時間</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>白令時間</generic>
					<standard>白令標準時間</standard>
					<daylight>白令夏令時間</daylight>
				</long>
				<short>
					<generic>BT(白令)</generic>
					<standard>BST(白令)</standard>
					<daylight>BDT(白令)</daylight>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>不丹時間</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>婆羅洲時間</standard>
					<daylight>婆羅洲夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<generic>巴西利亞時間</generic>
					<standard>巴西利亞時間</standard>
					<daylight>巴西利亞夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>長白山時間</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<generic>智利時間</generic>
					<standard>智利時間</standard>
					<daylight>智利夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>中國時間</generic>
					<standard>中國標準時間</standard>
					<daylight>中國夏令時間</daylight>
				</long>
				<short>
					<generic>CT(中國)</generic>
					<standard>CST(中國)</standard>
					<daylight>CDT(中國)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>喬巴山時間</standard>
					<daylight>喬巴山夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<short>
					<standard>CST(古巴)</standard>
					<daylight>CDT(古巴)</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>達卡時間</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>杜尚別時間</standard>
					<daylight>杜尚別夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<generic>荷屬圭亞那時間</generic>
					<standard>荷屬圭亞那時間</standard>
					<daylight>荷屬圭亞那夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>東帝汶時間</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>厄瓜多時間</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>中歐標準時間</standard>
					<daylight>中歐夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>東歐標準時間</standard>
					<daylight>東歐夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>西歐時間</standard>
					<daylight>西歐夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>伏龍芝時間</standard>
					<daylight>伏龍芝夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>格林威治標準時間</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>加拉帕戈群島時間</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>喬治亞時間</standard>
					<daylight>喬治亞夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>格陵蘭中部時間</standard>
					<daylight>格陵蘭中部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<generic>格陵蘭東部時間</generic>
					<standard>格陵蘭東部時間</standard>
					<daylight>格陵蘭東部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<generic>格陵蘭西部時間</generic>
					<standard>格陵蘭西部時間</standard>
					<daylight>格陵蘭西部夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>關島標準時間</standard>
				</long>
				<short>
					<standard>GST (關島)</standard>
				</short>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>夏威夷-阿留申標準時間</standard>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>印度標準時間</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>印尼中部時間</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>印尼東部時間</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>印尼西部時間</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>以色列時間</generic>
					<standard>以色列標準時間</standard>
					<daylight>以色列夏令時間</daylight>
				</long>
				<short>
					<standard>IST(以色列)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>日本標準時間</standard>
					<daylight>日本夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>喀拉蚩時間</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>喀什時間</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>東哈薩克時間</generic>
					<standard>東哈薩克標準時間</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>西哈薩克時間</generic>
					<standard>西哈薩克標準時間</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>吉力羅達時間</standard>
					<daylight>吉力羅達夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>韓國時間</generic>
					<standard>韓國標準時間</standard>
					<daylight>韓國夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>古比雪夫時間</standard>
					<daylight>古比雪夫夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>瓜加林環礁時間</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>吉爾吉斯時間</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>蘭卡時間</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>隴蜀時間</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>豪勳爵島時間</generic>
					<standard>豪勳爵島標準時間</standard>
					<daylight>豪勳爵島夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>澳門時間</standard>
					<daylight>澳門夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>馬來亞時間</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>馬來西亞時間</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>馬紹爾群島時間</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>烏蘭巴托時間</standard>
					<daylight>烏蘭巴托夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>紐西蘭時間</generic>
					<standard>紐西蘭標準時間</standard>
					<daylight>紐西蘭夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>紐芬蘭時間</generic>
					<standard>紐芬蘭標準時間</standard>
					<daylight>紐芬蘭夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>北馬里亞納群島時間</standard>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>巴基斯坦時間</standard>
					<daylight>巴基斯坦夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>聖彼德與密啟崙時間</generic>
					<standard>聖彼德與密啟崙標準時間</standard>
					<daylight>聖彼德與密啟崙夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>克孜勒奧爾達時間</standard>
					<daylight>克孜勒奧爾達夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>薩馬拉時間</standard>
					<daylight>薩馬拉夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>撒馬爾罕時間</standard>
					<daylight>撒馬爾罕夏令時間</daylight>
				</long>
				<short>
					<standard>SAMT(撒馬爾罕)</standard>
					<daylight>SAMST(撒馬爾罕)</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>薩摩亞標準時間</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<daylight>舍甫琴科時間</daylight>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<generic>蘇利南時間</generic>
					<standard>蘇利南時間</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>斯維爾德洛夫斯克時間</standard>
					<daylight>斯維爾德洛夫斯克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>塔吉克時間</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>塔什干時間</standard>
					<daylight>塔什干夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>第比利斯時間</standard>
					<daylight>第比利斯夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>土耳其時間</standard>
					<daylight>土耳其夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>土庫曼時間</standard>
					<daylight>土庫曼夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>烏拉斯克時間</standard>
					<daylight>烏拉斯克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>烏魯木齊時間</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>烏茲別克時間</standard>
					<daylight>烏茲別克夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>凱薩琳堡時間</standard>
					<daylight>凱薩琳堡夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>葉里溫時間</standard>
					<daylight>葉里溫夏令時間</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>育空時間</generic>
					<standard>育空標準時間</standard>
					<daylight>育空夏令時間</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="ADP">
				<displayName>安道爾陪士特</displayName>
			</currency>
			<currency type="AED">
				<displayName>阿拉伯聯合大公國迪爾汗</displayName>
			</currency>
			<currency type="AFN">
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>阿爾巴尼亞列克</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>亞美尼亞德拉姆</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>荷屬安地列斯盾</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>安哥拉寬扎</displayName>
			</currency>
			<currency type="AOK">
				<displayName>安哥拉寬扎(1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>安哥拉新寬扎 (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>安哥拉新寬扎 Reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>阿根廷奧斯特納爾</displayName>
			</currency>
			<currency type="ARP">
				<displayName>阿根廷披索(1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>阿根廷披索</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>奧地利先令</displayName>
			</currency>
			<currency type="AUD">
				<displayName>澳幣</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>阿魯巴盾</displayName>
			</currency>
			<currency type="AZM">
				<displayName>阿塞拜彊馬特納</displayName>
			</currency>
			<currency type="AZN">
				<displayName>亞塞拜然蒙納特</displayName>
			</currency>
			<currency type="BAD">
				<displayName>波士尼亞-黑塞哥維那第納爾</displayName>
			</currency>
			<currency type="BAM">
				<displayName>波士尼亞-黑塞哥維那可轉換馬克</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>巴貝多元</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>孟加拉塔卡</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>比利時法郎 (可轉換)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>比利時法郎</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>比利時法郎 (金融)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>保加利亞硬列弗</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>保加利亞新列弗</displayName>
			</currency>
			<currency type="BHD">
				<displayName>巴林第納爾</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>蒲隆地法郎</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>百慕達幣</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>汶萊元</displayName>
			</currency>
			<currency type="BOB">
				<displayName>玻利維亞貨幣單位</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>玻利維亞披索</displayName>
			</currency>
			<currency type="BOV">
				<displayName>玻利維亞幕多</displayName>
			</currency>
			<currency type="BRB">
				<displayName>巴西克魯薩多農瓦(1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>巴西克魯賽羅 (1986-1989)</displayName>
			</currency>
			<currency type="BRE">
				<displayName>巴西克魯賽羅 (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>巴西里拉</displayName>
			</currency>
			<currency type="BRN">
				<displayName>巴西克如爾達農瓦</displayName>
			</currency>
			<currency type="BRR">
				<displayName>巴西克魯賽羅</displayName>
			</currency>
			<currency type="BSD">
				<displayName>巴哈馬元</displayName>
			</currency>
			<currency type="BTN">
				<displayName>不丹那特倫</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>緬甸元 BUK</displayName>
			</currency>
			<currency type="BWP">
				<displayName>波札那 - 普拉</displayName>
			</currency>
			<currency type="BYB">
				<displayName>白俄羅斯新盧布 (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>白俄羅斯盧布</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>伯利茲元</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>加幣</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>剛果法郎</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR 歐元</displayName>
			</currency>
			<currency type="CHF">
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR 法郎</displayName>
			</currency>
			<currency type="CLF">
				<displayName>卡林油達佛曼跎</displayName>
			</currency>
			<currency type="CLP">
				<displayName>智利披索</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>人民幣</displayName>
			</currency>
			<currency type="COP">
				<displayName>哥倫比亞披索</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>哥斯大黎加科郎</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>舊塞爾維亞第納爾</displayName>
			</currency>
			<currency type="CSK">
				<displayName>捷克斯洛伐克硬克朗</displayName>
			</currency>
			<currency type="CUP">
				<displayName>古巴披索</displayName>
			</currency>
			<currency type="CVE">
				<displayName>維德角埃斯庫多</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>賽浦路斯鎊</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>捷克克朗</displayName>
			</currency>
			<currency type="DDM">
				<displayName>東德奧斯特馬克</displayName>
			</currency>
			<currency type="DEM">
				<displayName>德國馬克</displayName>
			</currency>
			<currency type="DJF">
				<displayName>吉布地法郎</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>丹麥克羅納</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>多明尼加披索</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>阿爾及利亞第納爾</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>厄瓜多蘇克雷</displayName>
			</currency>
			<currency type="ECV">
				<displayName>厄瓜多爾由里達瓦康斯坦 (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>愛沙尼亞克朗</displayName>
			</currency>
			<currency type="EGP">
				<displayName>埃及鎊</displayName>
			</currency>
			<currency type="EQE">
				<displayName>埃奎維勒</displayName>
			</currency>
			<currency type="ERN">
				<displayName>厄立特里亞納克法</displayName>
			</currency>
			<currency type="ESA">
				<displayName>西班牙比塞塔(會計單位)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>西班牙比塞塔(可轉換會計單位)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>西班牙陪士特</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>衣索比亞比爾</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>歐元</displayName>
				<symbol>EUR</symbol>
			</currency>
			<currency type="FIM">
				<displayName>芬蘭馬克</displayName>
			</currency>
			<currency type="FJD">
				<displayName>斐濟元</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>福克蘭群島鎊</displayName>
			</currency>
			<currency type="FRF">
				<displayName>法國法郎</displayName>
			</currency>
			<currency type="GBP">
				<displayName>英鎊</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GEK">
				<displayName>喬治庫旁拉里</displayName>
			</currency>
			<currency type="GEL">
				<displayName>喬治拉里</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>迦納仙蔕</displayName>
			</currency>
			<currency type="GHS">
				<symbol>GH¢</symbol>
			</currency>
			<currency type="GIP">
				<displayName>直布羅陀鎊</displayName>
			</currency>
			<currency type="GMD">
				<displayName>甘比亞達拉西</displayName>
			</currency>
			<currency type="GNF">
				<displayName>幾內亞法郎</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>幾內亞西里</displayName>
			</currency>
			<currency type="GQE">
				<displayName>赤道幾內亞埃奎勒</displayName>
			</currency>
			<currency type="GRD">
				<displayName>希臘德拉克馬</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>瓜地馬拉格查爾</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>葡屬幾內亞埃斯庫多</displayName>
			</currency>
			<currency type="GWP">
				<displayName>幾內亞披索披索</displayName>
			</currency>
			<currency type="GYD">
				<displayName>圭亞那元</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>港幣</displayName>
			</currency>
			<currency type="HNL">
				<displayName>洪都拉斯倫皮拉</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>克羅地亞第納爾</displayName>
			</currency>
			<currency type="HRK">
				<displayName>克羅地亞庫納</displayName>
			</currency>
			<currency type="HUF">
				<displayName>匈牙利 - 福林</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>印尼 - 盧布</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>愛爾蘭鎊</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>以色列鎊</displayName>
			</currency>
			<currency type="ILS">
				<displayName>以色列新謝克爾</displayName>
			</currency>
			<currency type="INR">
				<displayName>印度盧布</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>伊拉克第納爾</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>伊朗里亞爾</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>冰島克朗</displayName>
			</currency>
			<currency type="ITL">
				<displayName>義大利里拉</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>牙買加元</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>約旦第納爾</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>日圓</displayName>
			</currency>
			<currency type="KES">
				<displayName>肯尼亞先令</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>吉爾吉斯索馬</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>柬埔寨瑞爾</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>科摩羅法郎</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>北朝鮮幣</displayName>
			</currency>
			<currency type="KRW">
				<displayName>韓國圜</displayName>
				<symbol>KRW</symbol>
			</currency>
			<currency type="KWD">
				<displayName>科威特第納爾</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>開曼群島美元</displayName>
			</currency>
			<currency type="KZT">
				<displayName>卡扎克斯坦坦吉</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>寮國基普</displayName>
			</currency>
			<currency type="LBP">
				<displayName>黎巴嫩鎊</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>斯里蘭卡盧布</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>賴比瑞亞元</displayName>
			</currency>
			<currency type="LSL">
				<displayName>賴索托羅蒂</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>馬洛蒂</displayName>
			</currency>
			<currency type="LTL">
				<displayName>立陶宛里塔</displayName>
			</currency>
			<currency type="LTT">
				<displayName>立陶宛特羅</displayName>
			</currency>
			<currency type="LUC">
				<displayName>盧森堡可兌換法郎</displayName>
			</currency>
			<currency type="LUF">
				<displayName>盧森堡法郎</displayName>
			</currency>
			<currency type="LUL">
				<displayName>盧森堡金融法郎</displayName>
			</currency>
			<currency type="LVL">
				<displayName>拉脫維亞拉特銀幣</displayName>
			</currency>
			<currency type="LVR">
				<displayName>拉脫維亞盧布</displayName>
			</currency>
			<currency type="LYD">
				<displayName>利比亞第納爾</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MDL">
				<displayName>摩杜雲列伊</displayName>
			</currency>
			<currency type="MGA">
				<displayName>馬達加斯加艾瑞爾</displayName>
			</currency>
			<currency type="MGF">
				<displayName>馬達加斯加法郎</displayName>
			</currency>
			<currency type="MKD">
				<displayName>馬其頓第納爾</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>馬里法郎</displayName>
			</currency>
			<currency type="MMK">
				<displayName>緬甸元</displayName>
			</currency>
			<currency type="MNT">
				<displayName>蒙古圖格里克</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>澳門元</displayName>
				<symbol>MOP</symbol>
			</currency>
			<currency type="MRO">
				<displayName>茅利塔尼亞烏吉亞</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>馬爾他里拉</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>馬爾他鎊</displayName>
			</currency>
			<currency type="MUR">
				<displayName>模里西斯盧布</displayName>
			</currency>
			<currency type="MVR">
				<displayName>馬爾地夫海島盧非亞</displayName>
			</currency>
			<currency type="MWK">
				<displayName>馬拉維克瓦查</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>墨西哥 - 披索</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>墨西哥銀披索 (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>墨西哥轉換單位(UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>馬來西亞 - 林吉特</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>莫桑比克埃斯庫多</displayName>
			</currency>
			<currency type="MZM">
				<displayName>莫三比克梅蒂卡爾</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>納米比亞元</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>奈及利亞奈拉</displayName>
			</currency>
			<currency type="NIO">
				<displayName>尼加拉瓜金科多巴</displayName>
			</currency>
			<currency type="NLG">
				<displayName>荷蘭盾</displayName>
			</currency>
			<currency type="NOK">
				<displayName>挪威克羅納</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>尼泊爾盧布</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>紐西蘭幣</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>阿曼里奧</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>巴拿馬巴波亞</displayName>
			</currency>
			<currency type="PEI">
				<displayName>祕魯因蒂</displayName>
			</currency>
			<currency type="PEN">
				<displayName>秘魯新太陽幣</displayName>
			</currency>
			<currency type="PES">
				<displayName>秘魯太陽幣</displayName>
			</currency>
			<currency type="PGK">
				<displayName>巴布亞紐幾內亞基那</displayName>
			</currency>
			<currency type="PHP">
				<displayName>菲律賓披索</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>巴基斯坦盧布</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>波蘭茲羅提</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>波蘭茲羅提 (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>葡萄牙埃斯庫多</displayName>
			</currency>
			<currency type="PYG">
				<displayName>巴拉圭瓜拉尼</displayName>
			</currency>
			<currency type="QAR">
				<displayName>卡達爾里亞爾</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>羅德西亞元</displayName>
			</currency>
			<currency type="ROL">
				<displayName>舊羅馬尼亞列伊</displayName>
			</currency>
			<currency type="RON">
				<displayName>羅馬尼亞列伊</displayName>
				<symbol>0≤lei|1≤leu|1</symbol>
			</currency>
			<currency type="RUB">
				<displayName>俄羅斯盧布</displayName>
			</currency>
			<currency type="RUR">
				<displayName>俄羅斯盧布 (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>盧安達法郎</displayName>
			</currency>
			<currency type="SAR">
				<displayName>沙烏地里雅</displayName>
			</currency>
			<currency type="SBD">
				<displayName>索羅門群島元</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>塞舌爾群島盧布</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>蘇丹第納爾</displayName>
			</currency>
			<currency type="SDP">
				<displayName>蘇丹鎊</displayName>
			</currency>
			<currency type="SEK">
				<displayName>瑞典克羅納</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>新加坡幣</displayName>
				<symbol>SGD</symbol>
			</currency>
			<currency type="SHP">
				<displayName>聖赫勒拿鎊</displayName>
			</currency>
			<currency type="SIT">
				<displayName>斯洛維尼亞托勒</displayName>
			</currency>
			<currency type="SKK">
				<displayName>斯洛伐克克朗</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>獅子山利昂</displayName>
			</currency>
			<currency type="SOS">
				<displayName>索馬利亞先令</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>蘇利南元</displayName>
			</currency>
			<currency type="SRG">
				<displayName>蘇里南盾</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>聖多美島和普林西比島多布拉</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>蘇聯盧布</displayName>
			</currency>
			<currency type="SVC">
				<displayName>薩爾瓦多科郎</displayName>
			</currency>
			<currency type="SYP">
				<displayName>敘利亞鎊</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>史瓦濟蘭里朗吉尼</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>泰銖</displayName>
			</currency>
			<currency type="TJR">
				<displayName>塔吉克斯坦盧布</displayName>
			</currency>
			<currency type="TJS">
				<displayName>塔吉克索莫尼</displayName>
			</currency>
			<currency type="TMM">
				<displayName>土庫曼馬納特</displayName>
			</currency>
			<currency type="TND">
				<displayName>突尼西亞第納爾</displayName>
			</currency>
			<currency type="TOP">
				<displayName>東加潘加</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>帝汶埃斯庫多</displayName>
			</currency>
			<currency type="TRL">
				<symbol>TL</symbol>
			</currency>
			<currency type="TTD">
				<displayName>千里達及托巴哥元</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>新臺幣</displayName>
			</currency>
			<currency type="TZS">
				<displayName>坦尚尼亞先令</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>烏克蘭格里夫那</displayName>
			</currency>
			<currency type="UAK">
				<displayName>烏克蘭卡本瓦那茲</displayName>
			</currency>
			<currency type="UGS">
				<displayName>烏干達先令 (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>烏干達先令</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>美元 (第二天)</displayName>
			</currency>
			<currency type="USS">
				<displayName>美元 (同一天)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>烏拉圭披索 (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>烏拉圭披索</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>烏茲別克斯坦薩木</displayName>
			</currency>
			<currency type="VEB">
				<displayName>委內瑞拉博利瓦</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<symbol>BsF</symbol>
			</currency>
			<currency type="VUV">
				<displayName>萬那杜萬杜</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>西薩摩亞塔拉</displayName>
			</currency>
			<currency type="XAF">
				<displayName>西非法郎 BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>XAG</displayName>
			</currency>
			<currency type="XAU">
				<displayName>黃金</displayName>
			</currency>
			<currency type="XBA">
				<displayName>歐洲綜合單位</displayName>
			</currency>
			<currency type="XBB">
				<displayName>歐洲貨幣單位 XBB</displayName>
			</currency>
			<currency type="XBC">
				<displayName>歐洲會計單位(XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>歐洲會計單位(XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>格瑞那達元</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>特殊提款權</displayName>
			</currency>
			<currency type="XEU">
				<displayName>歐洲貨幣單位 XEU</displayName>
			</currency>
			<currency type="XFO">
				<displayName>法國金法郎</displayName>
			</currency>
			<currency type="XFU">
				<displayName>法國 UIC 法郎</displayName>
			</currency>
			<currency type="XOF">
				<displayName>西非法郎 BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>帕拉狄昂</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP 法郎</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>白金</displayName>
			</currency>
			<currency type="XTS">
				<displayName>XTS</displayName>
			</currency>
			<currency type="XXX">
				<displayName>XXX</displayName>
			</currency>
			<currency type="YDD">
				<displayName>葉門第納爾</displayName>
			</currency>
			<currency type="YER">
				<displayName>也門里亞爾</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>南斯拉夫第納爾硬幣</displayName>
			</currency>
			<currency type="YUM">
				<displayName>南斯拉夫挪威亞第納爾</displayName>
			</currency>
			<currency type="YUN">
				<displayName>南斯拉夫 可轉換第納爾</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>南非 - 蘭特 (金融)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>南非蘭特</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>尚比亞克瓦查</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>薩伊新扎伊爾</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>扎伊爾扎伊爾</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>辛巴威元</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>是:確定</yesstr>
		</messages>
	</posix>
</ldml>
PKpG[ϖ��OOLocale/Data/ku_TR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ku"/>
		<territory type="TR"/>
	</identity>
	<alias source="ku_Latn_TR" path="//ldml"/>
</ldml>
PKpG[�.�:OOLocale/Data/sr_CS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<territory type="CS"/>
	</identity>
	<alias source="sr_Cyrl_CS" path="//ldml"/>
</ldml>
PKpG[�v�G�GLocale/Data/dz.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="dz"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">ཨེ་ར་སྦིག</language>
			<language type="art">བཟོ་བཟོཝ (གཞན)</language>
			<language type="as">ཨ་ས་མི་སི</language>
			<language type="bh">བི་ཧ་ལི</language>
			<language type="bn">བེངྒ་ལི</language>
			<language type="bo">བོད་ཁ</language>
			<language type="cs">ཅེཀ</language>
			<language type="da">ཌེ་ནིཤ</language>
			<language type="de">ཇཱར་མཱན</language>
			<language type="dv">དི་བེ་ཧི</language>
			<language type="dz">རྫོང་ཁ</language>
			<language type="egy">ཨི་ཇིཔ་ཤཱན (སྔ་དུས་ཀྱི)</language>
			<language type="el">གིརིཀ</language>
			<language type="en">ཨིང་ལིཤ</language>
			<language type="es">སིཔེ་ནིཤ</language>
			<language type="fa">པར་ཤི་ཡན</language>
			<language type="fr">ཕེ་རེནཆེ</language>
			<language type="ga">ཨའི་རིཤ</language>
			<language type="grc">གིརིཀ, སྔ་དུས་ཀྱི (༡༤༥༣)</language>
			<language type="he">ཧི་བུརུ</language>
			<language type="hi">ཧིན་དི</language>
			<language type="him">ཧི་མ་ཅ་ལི</language>
			<language type="inc">ཨིན་ཌིཀ (གཞན)</language>
			<language type="it">ཨི་ཊ་ལི་རན</language>
			<language type="km">ཁེ་མར</language>
			<language type="kn">ཀ་ན་ཌ</language>
			<language type="ko">ཀོ་རིཡན</language>
			<language type="ks">ཀེཤ་མི་རི</language>
			<language type="lo">ལའོ</language>
			<language type="ml">མ་ལ་ཡ་ལམ</language>
			<language type="mn">སོག་པོའི་ཁ</language>
			<language type="mnc">མཱན་ཅུ</language>
			<language type="mni">མ་ནི་པུ་རི</language>
			<language type="mr">མ་ར་ཐི</language>
			<language type="my">བར་མིསི</language>
			<language type="ne">ནེ་པ་ལི</language>
			<language type="new">ནི་ཝ་རི</language>
			<language type="nl">ཌཆ</language>
			<language type="no">ནོར་ཝི་ཇི་ཡན</language>
			<language type="or">ཨོ་རི་ཡ</language>
			<language type="pa">པཱན་ཇ་བི</language>
			<language type="pi">པ་ལི</language>
			<language type="ru">ར་ཤི་ཡན</language>
			<language type="sa">སཾསྐྲྀཏ</language>
			<language type="si">སིན་ཧ་ལིསི</language>
			<language type="ta">ཏ་མིལ</language>
			<language type="te">ཏེ་ལུ་གུ</language>
			<language type="th">ཐཱའེ</language>
			<language type="ur">ཨུར་དུ</language>
			<language type="zh">རགྱ་མི་ཁ</language>
		</languages>
		<scripts>
			<script type="Arab">ཨེ་རེ་སྦིག</script>
			<script type="Beng">བེངྒ་ལི</script>
			<script type="Brai">བེརེལ</script>
			<script type="Cyrl">སིརི་ལིཀ</script>
			<script type="Deva">དི་ཝ་ན་གརི</script>
			<script type="Grek">གིརིཀ</script>
			<script type="Gujr">གུ་ཇ་ར་ཏི</script>
			<script type="Guru">གུར་མུ་ཁི</script>
			<script type="Hang">ཧང་གུལ</script>
			<script type="Hani">ཧཱན</script>
			<script type="Hans">ལུགས་གསར ཧཱན</script>
			<script type="Hant">ལུགས་རྙིང ཧཱན</script>
			<script type="Hebr">ཧི་བུརུ</script>
			<script type="Hira">ཧི་ར་ག་ན</script>
			<script type="Kana">ཀ་ཏ་ཀ་ན</script>
			<script type="Khmr">ཁེ་མར</script>
			<script type="Knda">ཀ་ན་ཌ</script>
			<script type="Laoo">ལའོ</script>
			<script type="Latn">ལེ་ཊིན</script>
			<script type="Limb">ལིམ་བུ</script>
			<script type="Mlym">མ་ལ་ཡ་ལམ</script>
			<script type="Mong">སོག་པོ</script>
			<script type="Mymr">མི་མར</script>
			<script type="Orya">ཨོ་རི་ཡ</script>
			<script type="Qaai">སྔར་རྒྱུན</script>
			<script type="Sinh">སིན་ཧ་ལ</script>
			<script type="Taml">ཏ་མིལ</script>
			<script type="Telu">ཏེ་ལུ་གུ</script>
			<script type="Thaa">ཐཱ་ན</script>
			<script type="Tibt">བོད</script>
			<script type="Zyyy">སྤྱིར</script>
		</scripts>
		<territories>
			<territory type="AE">ཡུ་ནའི་ཊེཊ་ཨ་ར བ་ཨེ་མི་རེཊསི</territory>
			<territory type="AF">ཨཕ་ག་ནིསི་ཏཱན</territory>
			<territory type="AQ">ཨེན་ཊཱག་ཊི་ཀ</territory>
			<territory type="AR">ཨར་ཇེན་ཊི་ན</territory>
			<territory type="AT">ཨས་ཊི་ཡ</territory>
			<territory type="AU">ཨས་ཊེཡེ་ལི་ཡ</territory>
			<territory type="BD">བངྒ་ལ་དེཤ</territory>
			<territory type="BE">བེལ་ཇིཡམ</territory>
			<territory type="BH">བཧ་རེན</territory>
			<territory type="BR">བཱརཱ་ཛིལ</territory>
			<territory type="BT">འབྲུག</territory>
			<territory type="CA">ཀེ་ན་ཌ</territory>
			<territory type="CH">སུའིཊ་ཛར་ལེན</territory>
			<territory type="CN">རྒྱ་མི</territory>
			<territory type="CU">ཀིའུ་སྦ</territory>
			<territory type="CZ">ཅེཀ་རི་པབ་ལིཀ</territory>
			<territory type="DE">ཇཱར་མ་ནི</territory>
			<territory type="DK">ཌེན་མཱཀ</territory>
			<territory type="EG">ཨི་ཇིཔཊ</territory>
			<territory type="ES">སིཔཱེན</territory>
			<territory type="FI">ཕིན་ལེནཌ</territory>
			<territory type="FR">ཕརཱནསི</territory>
			<territory type="GB">ཡུ་ནའི་ཊེཊ་ཀིང་ཌམ</territory>
			<territory type="GR">གིརིསི</territory>
			<territory type="HK">ཧོང་ཀོང</territory>
			<territory type="IE">ཨའིརི་ལེནཌ</territory>
			<territory type="IL">ཨིཛ་རཱེལ</territory>
			<territory type="IN">རྒྱ་གར</territory>
			<territory type="IQ">ཨི་རཀ</territory>
			<territory type="IR">ཨི་རཱན</territory>
			<territory type="IS">ཨའིསི་ལེནཌ</territory>
			<territory type="IT">ཨྀཊ་ལི</territory>
			<territory type="JM">ཇ་མའི་ཀ</territory>
			<territory type="JP">ཇ་པཱན</territory>
			<territory type="KE">ཀེ་ནི་ཡ</territory>
			<territory type="KH">ཀམ་བོ་ཌི་ཡ</territory>
			<territory type="KP">བྱང་ཀོ་རི་ཡ</territory>
			<territory type="KR">ལྷོ་ཀོ་རི་ཡ</territory>
			<territory type="KW">ཀུ་ཝེཊ</territory>
			<territory type="LA">ལ་འོསུ</territory>
			<territory type="LB">ལེ་བཱ་ནཱོན</territory>
			<territory type="LK">ཤྲཱྀ་ལངཀ</territory>
			<territory type="MM">མེ་མར</territory>
			<territory type="MN">སོག་པོ</territory>
			<territory type="MS">མོན་ས་རཊི</territory>
			<territory type="MU">མོ་རི་ཤིཡསི</territory>
			<territory type="MV">མཱལ་ཌིབས</territory>
			<territory type="MX">མེཀསི་ཀོ</territory>
			<territory type="MY">མ་ལེ་ཤི་ཡ</territory>
			<territory type="NL">ནེ་དར་ལེནཌསི</territory>
			<territory type="NO">ནོ་ཝེ</territory>
			<territory type="NP">བལ་ཡུལ</territory>
			<territory type="NZ">ནིའུ་ཛི་ལེནཌ</territory>
			<territory type="PA">པ་ན་མཱ</territory>
			<territory type="PK">པ་ཀིསི་ཏཱན</territory>
			<territory type="PS">པེ་ལིསི་ཊི་ནིཡ ན་ཊེ་རི་ངོ་རི</territory>
			<territory type="PT">པོར་ཅུ་གལ</territory>
			<territory type="QA">ཀ་ཏར</territory>
			<territory type="SA">སའུ་དི་ཨེ་ར་སྦི་ཡ</territory>
			<territory type="SE">སུའི་ཌན</territory>
			<territory type="SI">སིལོ་བེ་ནི་ཡ</territory>
			<territory type="TH">ཐཱའི་ལེནཌ</territory>
			<territory type="TJ">ཏ་ཇག་ཀིསི་ཏཱན</territory>
			<territory type="TW">ཏའི་ཝཱན</territory>
			<territory type="US">ཡུ་ནའིཊེཊ་སི་ཊེསི</territory>
			<territory type="UZ">ཨུཛ་བེ་ཀིསི་ཏཱན</territory>
			<territory type="VN">བེཊ་ནཱམ</territory>
			<territory type="ZA">སའུཐ་ཨཕ་རི་ཀ</territory>
			<territory type="ZM">ཛམ་བི་ཡ</territory>
			<territory type="ZW">ཛིམ་བབ་ཝེ</territory>
		</territories>
		<keys>
			<key type="collation">གནས་སདུད་རིམ་ སགྲིག</key>
		</keys>
		<types>
			<type type="traditional" key="collation">ལུགས་སྲོལ</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ཀ ྐ ཁ ྑ ག ྒ ང ྔ ཅ-ཇ ྗ ཉ ྙ ཏ ྟ ཐ ད ྡ ན ྣ པ ྤ ཕ བ ྦ མ ྨ ཙ ྩ ཚ ཛ ྫ ཝ ྭ ཞ-ཡ ྱ ར ྲ ལ ླ ཤ ྵ ས ཧ ྷ ཨ ི ུ ེ ོ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ཊ-ཌ ཎ ཥ]</exemplarCharacters>
		<mapping choice="utf-8" registry="iana"/>
	</characters>
	<delimiters>
		<quotationStart>&quot;</quotationStart>
		<quotationEnd>&quot;</quotationEnd>
		<alternateQuotationStart>'</alternateQuotationStart>
		<alternateQuotationEnd>'</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ཟླ་ ༡</month>
							<month type="2">ཟླ་ ༢</month>
							<month type="3">ཟླ་ ༣</month>
							<month type="4">ཟླ་ ༤</month>
							<month type="5">ཟླ་ ༥</month>
							<month type="6">ཟླ་ ༦</month>
							<month type="7">ཟླ་ ༧</month>
							<month type="8">ཟླ་ ༨</month>
							<month type="9">ཟླ་ ༩</month>
							<month type="10">ཟླ་ ༡༠</month>
							<month type="11">ཟླ་ ༡༡</month>
							<month type="12">ཟླ་ ༡༢</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">སྤྱི་ཟླཝ་དངཔ་</month>
							<month type="2">སྤྱི་ཟླཝ་གཉིས་པ་</month>
							<month type="3">སྤྱི་ཟླཝ་གསུམ་པ་</month>
							<month type="4">སྤྱི་ཟླཝ་བཞི་པ་</month>
							<month type="5">སྤྱི་ཟླཝ་ལྔ་པ་</month>
							<month type="6">སྤྱི་ཟླཝ་དྲུག་པ་</month>
							<month type="7">སྤྱི་ཟླཝ་བདུན་པ་</month>
							<month type="8">སྤྱི་ཟླཝ་བརྒྱད་པ་</month>
							<month type="9">སྤྱི་ཟླཝ་དགུ་པ་</month>
							<month type="10">སྤྱི་ཟླཝ་བཅུ་པ་</month>
							<month type="11">སྤྱི་ཟླཝ་བཅུ་གཅིག་པ་</month>
							<month type="12">སྤྱི་ཟླཝ་བཅུ་གཉིས་པ་</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ཟླ་</day>
							<day type="mon">མིར་</day>
							<day type="tue">ལྷག་</day>
							<day type="wed">ཕུར་</day>
							<day type="thu">སངས་</day>
							<day type="fri">སྤེན་</day>
							<day type="sat">ཉི་</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">གཟའ་ཟླ་བ་</day>
							<day type="mon">གཟའ་མིག་དམར་</day>
							<day type="tue">གཟའ་ལྷག་པ་</day>
							<day type="wed">གཟའ་ཕུར་བུ་</day>
							<day type="thu">གཟའ་པ་སངས་</day>
							<day type="fri">གཟའ་སྤེན་པ་</day>
							<day type="sat">གཟའ་ཉི་མ་</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">བཞི་དཔྱ་༡</quarter>
							<quarter type="2">བཞི་དཔྱ་༢</quarter>
							<quarter type="3">བཞི་དཔྱ་༣</quarter>
							<quarter type="4">བཞི་དཔྱ་༤</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">བཞི་དཔྱ་དང་པ་</quarter>
							<quarter type="2">བཞི་དཔྱ་གཉིས་པ་</quarter>
							<quarter type="3">བཞི་དཔྱ་གསུམ་པ་</quarter>
							<quarter type="4">བཞི་དཔྱ་བཞི་པ་</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>སྔ་ཆ་</am>
				<pm>ཕྱི་ཆ་</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>སྤྱི་ལོ་yyyy ཟླ་ MMMM ཚེས་ dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>སྤྱི་ལོ་yyyy ཟླ་ MMMM ཚེས་ dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>སྤྱི་ལོ་yyyy ཟླ་ MMM ཚེས་ dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>སྤྱི་ལོ་ yyyy ཟླ་ MM ཚེས་ dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<default choice="long"/>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>ཆུ་ཚོད་ h སྐར་མ་ mm སྐར་ཆཱ་ ss a vvvv</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>ཆུ་ཚོད་ h སྐར་མ་ mm སྐར་ཆཱ་ ss a zzz</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>ཆུ་ཚོད་h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>ཆུ་ཚོད་ h སྐར་མ་ mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<default choice="long"/>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<dateTimeFormatLength type="full">
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Asia/Thimphu">
				<exemplarCity>ཐིམ་ཕུག</exemplarCity>
			</zone>
			<metazone type="Bhutan">
				<long>
					<generic>Bhutan Time</generic>
					<standard>Bhutan Standard Time</standard>
				</long>
				<short>
					<generic>BT</generic>
					<standard>BST</standard>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<list>དང་</list>
			<percentSign>བརྒ་ཆཱ</percentSign>
			<nativeZeroDigit>༠</nativeZeroDigit>
			<infinity>གྲངས་མེད</infinity>
			<nan>ཨང་མད</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E+00</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BTN">
				<displayName>དངུལ་ཀྲམ་</displayName>
				<symbol>Nu</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�#n���Locale/Data/es_PY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="es"/>
		<territory type="PY"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤ -#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[�i��Locale/Data/es_NI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="NI"/>
	</identity>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
	</numbers>
</ldml>
PKpG[@��##Locale/Data/en_US.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="en"/>
		<territory type="US"/>
	</identity>
</ldml>
PKpG[�ؤǭ�Locale/Data/ar_SD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.43 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="SD"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[�?��``Locale/Data/ms_BN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="ms"/>
		<territory type="BN"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss aa v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM - yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BND">
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�Q�<##Locale/Data/fr_MC.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="fr"/>
		<territory type="MC"/>
	</identity>
</ldml>
PKpG[v/��o�oLocale/Data/lo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="lo"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">ອາຟາ</language>
			<language type="ab">ແອບຄາເຊຍ</language>
			<language type="af">ອັຟຣິກາ</language>
			<language type="am">ອຳຫາຣິກ</language>
			<language type="ar">ອາຣັບ</language>
			<language type="as">ອັສສຳ</language>
			<language type="ay">ໄອມາລາ</language>
			<language type="az">ອາແຊກບາຍຊານ</language>
			<language type="ba">ບາສສີ</language>
			<language type="be">ເບລາລຸດຊີ</language>
			<language type="bg">ບຸນກາຣີ</language>
			<language type="bh">ບີຮາຣີ</language>
			<language type="bi">ບິສລາມາ</language>
			<language type="bn">ເບັງການ</language>
			<language type="bo">ທິເບດ</language>
			<language type="br">ບເຣີຕົງ</language>
			<language type="bs">ບອສນີ</language>
			<language type="ca">ກາຕາລັງ</language>
			<language type="co">ຄໍຊິກ້າ</language>
			<language type="cs">ເຊັກ</language>
			<language type="cy">ແວວ</language>
			<language type="da">ເດັນມາກ</language>
			<language type="de">ເຍຍລະມັນ</language>
			<language type="dz">ພູຖານີ</language>
			<language type="el">ກເຣັກ</language>
			<language type="en">ອັງກິດ</language>
			<language type="eo">ເອສເປຣັງໂຕ</language>
			<language type="es">ແອສປາໂຍນ</language>
			<language type="et">ເອສໂຕນີ</language>
			<language type="eu">ບັສເກີ</language>
			<language type="fa">ເປີເຊຍ</language>
			<language type="fi">ແຟງລັງ</language>
			<language type="fil">ຕາກາລ໊ອກ</language>
			<language type="fj">ຟິຈິ</language>
			<language type="fo">ຟາໂຣ</language>
			<language type="fr">ຝຣັ່ງ</language>
			<language type="fy">ຟຣີຊຽນ</language>
			<language type="ga">ໄອແລນ</language>
			<language type="gd">ສະກັອດ ແກລິກ</language>
			<language type="gl">ກາລິດ</language>
			<language type="gn">ກົວຣານີ</language>
			<language type="gu">ກູຊາຣາຕີ</language>
			<language type="ha">ໂອຊາ</language>
			<language type="he">ຍິວ</language>
			<language type="hi">ຮິນດູ</language>
			<language type="hr">ໂກຣອາຊີ</language>
			<language type="hu">ຮັງກາຣີ</language>
			<language type="hy">ອາກເມນີ</language>
			<language type="ia">ອິນເຕີລິງກາ</language>
			<language type="id">ອິນໂດເນເຊຍ</language>
			<language type="ie">ອິນເຕີລິງ</language>
			<language type="ik">ໄອນູປຽກ</language>
			<language type="is">ອິສລັງ</language>
			<language type="it">ອີຕາລີ</language>
			<language type="iu">ໄອນຸກຕິຕັກ</language>
			<language type="ja">ຍີ່ປຸ່ນ</language>
			<language type="jv">ຊວາ</language>
			<language type="ka">ຊອກຊີ</language>
			<language type="kk">ຄາຊັກ</language>
			<language type="kl">ກຼີນແລນດິດ</language>
			<language type="km">ກຳປູເຈຍ</language>
			<language type="kn">ກັນນາດາ</language>
			<language type="ko">ເກົາຫຼີ</language>
			<language type="ks">ຄັດຊະມີລີ</language>
			<language type="ku">ເຄີດິສ</language>
			<language type="ky">ເກຍກິສ</language>
			<language type="la">ລາແຕັງ</language>
			<language type="ln">ລິງກາລາ</language>
			<language type="lo">ລາວ</language>
			<language type="lt">ລີທົວນີ</language>
			<language type="lv">ລັດເວຍ</language>
			<language type="mg">ມາລາກາຊິ</language>
			<language type="mi">ເມົາລີ</language>
			<language type="mk">ມາເຊໂດນີ</language>
			<language type="ml">ມາລາຢາລຳ</language>
			<language type="mn">ມົງໂກນ</language>
			<language type="mo">ໂມຄາເວຍ</language>
			<language type="mr">ມາຣາທີ</language>
			<language type="ms">ມາເລ</language>
			<language type="mt">ມານຕາ</language>
			<language type="my">ພະມ່າ</language>
			<language type="na">ນໍລູ</language>
			<language type="ne">ເນປານ</language>
			<language type="nl">ໂຮນລັງ</language>
			<language type="nn">ນອກແວ (ນີນອກ)</language>
			<language type="no">ນອກແວ</language>
			<language type="oc">ອົກຊີຕານ</language>
			<language type="om">ໂອໂລໂມ(ອາຟານ)</language>
			<language type="or">ໂອຣີຢາ</language>
			<language type="pa">ປັນຈາບ</language>
			<language type="pl">ໂປໂລຍ</language>
			<language type="ps">ປາສໂຕ</language>
			<language type="pt">ປອກຕຸຍການ</language>
			<language type="pt_BR">ປອກຕຸຍການ (ບຣາຊີນ)</language>
			<language type="pt_PT">ປອກຕຸຍການ (ປອກຕຸຍການ)</language>
			<language type="qu">ຄິວຊົວ</language>
			<language type="rm">ເລໂຕ-ໂລແມນ</language>
			<language type="rn">ຄິລັນສີ</language>
			<language type="ro">ໂຣມານີ</language>
			<language type="ru">ລັດເຊຍ</language>
			<language type="rw">ຄິນຍາວັນດາ</language>
			<language type="sa">ສັນສະກິດ</language>
			<language type="sd">ສິນທິ</language>
			<language type="sg">ສັນໂຄ</language>
			<language type="sh">ແຊັກໂບ-ໂກຣແອັດ</language>
			<language type="si">ສິງຫານ</language>
			<language type="sk">ສະໂລວັກກີ</language>
			<language type="sl">ສະໂລວານີ</language>
			<language type="sm">ຊາມົວ</language>
			<language type="sn">ໂຊນາ</language>
			<language type="so">ໂຊມາລີ</language>
			<language type="sq">ອານບານີ</language>
			<language type="sr">ແຊກບີ</language>
			<language type="ss">ຊິສວາຕິ</language>
			<language type="st">ເຊໂຊໂທ</language>
			<language type="su">ຊັນດານ</language>
			<language type="sv">ຊູແອັດ</language>
			<language type="sw">ຊວາຮີລີ</language>
			<language type="ta">ທະມິນ</language>
			<language type="te">ເຕລູກູ</language>
			<language type="tg">ທາຈິດ</language>
			<language type="th">ໄທ</language>
			<language type="ti">ຕີກຣິນຢາ</language>
			<language type="tk">ຕວຽກເມນ</language>
			<language type="tl">ຕາກາລັອກ</language>
			<language type="tlh">ກລິງກອງ</language>
			<language type="tn">ເຊຕະສະວານາ</language>
			<language type="to">ທອງກ້າ</language>
			<language type="tr">ຕວກກີ</language>
			<language type="ts">ຊອງກາ</language>
			<language type="tt">ຕາດ</language>
			<language type="tw">ຕວີ</language>
			<language type="ug">ອຸຍເຄີ</language>
			<language type="uk">ອູແກຣນ</language>
			<language type="ur">ອູຣະດູ</language>
			<language type="uz">ອຸດຊະເບັກກິດສະຖານ</language>
			<language type="vi">ຫວຽດນາມ</language>
			<language type="vo">ໂວລາພຸກ</language>
			<language type="wo">ວູບ</language>
			<language type="xh">ໂຊຊາ</language>
			<language type="yi">ຢິດດິສ</language>
			<language type="yo">ໂຢລູບາ</language>
			<language type="za">ຈວງ</language>
			<language type="zh">ຈີນ</language>
			<language type="zu">ຊູລູ</language>
		</languages>
		<territories>
			<territory type="AD">ອັນດໍລາ</territory>
			<territory type="AE">ສະຫະລັດອາຫລັບເອມິເລດ</territory>
			<territory type="AF">ອັຟການິດສະຖານ</territory>
			<territory type="AI">ອັນກິລາ</territory>
			<territory type="AL">ແອລເບເນຍ</territory>
			<territory type="AM">ອາມິເນຍ</territory>
			<territory type="AN">ເນເທີແລນແອນເທິນ</territory>
			<territory type="AO">ອັນໂກລາ</territory>
			<territory type="AR">ອາເຈນຕິນາ່</territory>
			<territory type="AT">ອົອດສະເຕຼຍ</territory>
			<territory type="AU">ອົອດສະຕາລີ</territory>
			<territory type="AW">ອາລູບາ</territory>
			<territory type="AZ">ອາເຊີໄບຈັນ</territory>
			<territory type="BA">ບັອດສເນຍ ແລະ ເຮີດໂກວິເນຍ</territory>
			<territory type="BB">ບາບາຄັອດ</territory>
			<territory type="BD">ບັງກະລາເທດ</territory>
			<territory type="BE">ເບວຢຽມ</territory>
			<territory type="BF">ເບີກິນາຟາໂຊ</territory>
			<territory type="BG">ບັງກາເລຍ</territory>
			<territory type="BH">ບາເລນ</territory>
			<territory type="BI">ບູລັນຕິ</territory>
			<territory type="BJ">ເບນິນ</territory>
			<territory type="BM">ເບີມິວດາ</territory>
			<territory type="BN">ບູຮໄນ</territory>
			<territory type="BO">ໂບລິເວຍ</territory>
			<territory type="BR">ບຼາຊິວ</territory>
			<territory type="BS">ບາຮາມາສ</territory>
			<territory type="BT">ພູຖານ</territory>
			<territory type="BW">ບອັດສະວານາ</territory>
			<territory type="BY">ເບນລາຮັສ</territory>
			<territory type="BZ">ເບລິຊ</territory>
			<territory type="CA">ການາດາ</territory>
			<territory type="CF">ສາທາລະນະລັດອັບຟຼິກກາກາງ</territory>
			<territory type="CG">ຄອງໂກ</territory>
			<territory type="CH">ສະວິດເຊີແລນ</territory>
			<territory type="CI">ຝັ່ງທະເລໄອວໍລິ</territory>
			<territory type="CL">ຊິສິ</territory>
			<territory type="CM">ຄາເມລູນ</territory>
			<territory type="CN">ຈີນ</territory>
			<territory type="CO">ໂຄລຳເບຍ</territory>
			<territory type="CR">ຄອສຕາລິກາ</territory>
			<territory type="CS">ເຊີເບຍ</territory>
			<territory type="CU">ຄິວບາ</territory>
			<territory type="CV">ເຄບວອດ</territory>
			<territory type="CY">ໄຊປັຼດ</territory>
			<territory type="CZ">ສາທາລະນະລັດເຊັກ</territory>
			<territory type="DE">ເຢຍລະມັນ</territory>
			<territory type="DJ">ຄິໂບຕິ</territory>
			<territory type="DK">ເດນມາກ</territory>
			<territory type="DM">ໂດເມນິກາ</territory>
			<territory type="DO">ສາທາລະນະລັດໂດມິນິກັນ</territory>
			<territory type="DZ">ແອລຈິເລຍ</territory>
			<territory type="EC">ເອກວາດໍ</territory>
			<territory type="EE">ເອສໂຕເນຍ</territory>
			<territory type="EG">ອີຢິບ</territory>
			<territory type="EH">ຊາຮາລາຕະເວັນຕົກ</territory>
			<territory type="ER">ອິນຊີ</territory>
			<territory type="ES">ສະເປນ</territory>
			<territory type="ET">ເອທິໂອເປຍ</territory>
			<territory type="FI">ຟິນແລນ</territory>
			<territory type="FJ">ຟິຈິ</territory>
			<territory type="FM">ໄມໂຄນິເຊຍ</territory>
			<territory type="FR">ຝລັ່ງ</territory>
			<territory type="GA">ກາບອນ</territory>
			<territory type="GB">ສະຫະລາດຊະອານາຈັກ</territory>
			<territory type="GE">ຈໍເຈຍ</territory>
			<territory type="GF">ເຟັນສກິວນາ</territory>
			<territory type="GH">ການ່າ</territory>
			<territory type="GM">ແກມເບຍ</territory>
			<territory type="GN">ກິວນີ</territory>
			<territory type="GP">ກົວເດີລູບ</territory>
			<territory type="GQ">ເອຄົວໂທເລຍລະກິນີ</territory>
			<territory type="GR">ກິຼກ</territory>
			<territory type="GT">ກົວເຕມາລາ</territory>
			<territory type="GW">ກິວນີ-ບິສໂຊ</territory>
			<territory type="GY">ກູຢານາ</territory>
			<territory type="HK">ຮ່ອງກົງ</territory>
			<territory type="HN">ອວນຄູຣັສ</territory>
			<territory type="HR">ໂຄເອເຊຍ</territory>
			<territory type="HT">ໄອທີ</territory>
			<territory type="HU">ຮົງກາຣີ</territory>
			<territory type="ID">ອິນໂດເນເຊຍ</territory>
			<territory type="IE">ໄອແລນ</territory>
			<territory type="IL">ອິສລະເອວ</territory>
			<territory type="IN">ອິນເດຍ</territory>
			<territory type="IQ">ອີລັກ</territory>
			<territory type="IR">ອີລ່ານ</territory>
			<territory type="IS">ໄອສແລນ</territory>
			<territory type="IT">ອິຕາລີ</territory>
			<territory type="JM">ຈາໄມກາ</territory>
			<territory type="JO">ຈໍແດນ</territory>
			<territory type="JP">ຍີ່ປຸ່ນ</territory>
			<territory type="KE">ເຄນຢ່າ</territory>
			<territory type="KG">ເດີກິດສະຖານ</territory>
			<territory type="KH">ກຳປູເຈຍ</territory>
			<territory type="KI">ຄີລິບາດ</territory>
			<territory type="KM">ໂຄໂມຣອດ</territory>
			<territory type="KP">ເກົາຫລີເໜືອ</territory>
			<territory type="KR">ເກົາຫລີໃຕ້</territory>
			<territory type="KW">ຄູເວດ</territory>
			<territory type="KZ">ຄາຊັດສະຖານ</territory>
			<territory type="LA">ລາວ</territory>
			<territory type="LB">ເລບານອນ</territory>
			<territory type="LI">ໄລເທນສະໄຕ</territory>
			<territory type="LK">ສີລັງກາ</territory>
			<territory type="LR">ລິເບີເລຍ</territory>
			<territory type="LS">ເລໂຊໂທ</territory>
			<territory type="LT">ລິເທີເນຍ</territory>
			<territory type="LU">ລຸກແຊມເບີກ</territory>
			<territory type="LV">ລຼາດເວຍ</territory>
			<territory type="LY">ລິເບຍ</territory>
			<territory type="MA">ໂມລັອກໂຄ</territory>
			<territory type="MC">ໂມນາໂກ</territory>
			<territory type="MD">ໂມນໂຄວາ</territory>
			<territory type="MG">ມາຄາກັສກາ</territory>
			<territory type="MK">ແມຊິໂຄເນຍ</territory>
			<territory type="ML">ມາລິ</territory>
			<territory type="MM">ສະຫະພາບພະມ້າ</territory>
			<territory type="MN">ມົງໂກລີ</territory>
			<territory type="MO">ມາເກົ້າ</territory>
			<territory type="MQ">ມາຕິນິກ</territory>
			<territory type="MR">ມໍລິກທາເນຍ</territory>
			<territory type="MS">ມອນເຊີລາດ</territory>
			<territory type="MT">ມັນຕາ</territory>
			<territory type="MU">ມໍຣິຕຽດ</territory>
			<territory type="MX">ແມັກຊິໂກ</territory>
			<territory type="MY">ມາເລເຊຍ</territory>
			<territory type="MZ">ໂມແຊມບິກ</territory>
			<territory type="NA">ນາມິເບຍ</territory>
			<territory type="NC">ນິວຄາລິໂຄເນຍ</territory>
			<territory type="NE">ໄນເຈີ</territory>
			<territory type="NG">ໄນຈີເລຍ</territory>
			<territory type="NI">ນິຄາລາກົວ</territory>
			<territory type="NL">ເນເທີແລນ</territory>
			<territory type="NO">ນໍເວ</territory>
			<territory type="NP">ເນປານ</territory>
			<territory type="NU">ນີຢູ</territory>
			<territory type="NZ">ນິວຊີແລນ</territory>
			<territory type="OM">ໂອມານ</territory>
			<territory type="PA">ປານາມາ</territory>
			<territory type="PE">ເປລູ</territory>
			<territory type="PF">ເຟັນຣໂພລິນີເຊຍ</territory>
			<territory type="PG">ປາປົວນິວກີນີ</territory>
			<territory type="PH">ຟິລິປິນ</territory>
			<territory type="PK">ປາກິສຖານ</territory>
			<territory type="PL">ໂປແລນ</territory>
			<territory type="PR">ເປີໂຕລິໂກ</territory>
			<territory type="PT">ໂປຕຸກກັນ</territory>
			<territory type="PY">ປາລາກວຍ</territory>
			<territory type="QA">ກາຕາ</territory>
			<territory type="RO">ລູເມເນຍ</territory>
			<territory type="RU">ລັດເຊຍ</territory>
			<territory type="RW">ລາວັນດາ</territory>
			<territory type="SA">ຊາອຸດິອາລະເບຍ</territory>
			<territory type="SC">ເຊແຊວ</territory>
			<territory type="SD">ຊູດານ</territory>
			<territory type="SE">ສະວິເດັນ</territory>
			<territory type="SG">ສິງກະໂປ</territory>
			<territory type="SI">ສະໂລເວເນຍ</territory>
			<territory type="SK">ສະໂລວາເກຍ</territory>
			<territory type="SL">ເຊຍລາສິອອນ</territory>
			<territory type="SN">ຊິນີກັນ</territory>
			<territory type="SO">ໂຊມາເລຍ</territory>
			<territory type="SR">ຊູລິນາມິ</territory>
			<territory type="SV">ເອຊາວາດໍ</territory>
			<territory type="SY">ຊິເລຍ</territory>
			<territory type="SZ">ສະວາຊິແລນ</territory>
			<territory type="TD">ຊາດ</territory>
			<territory type="TF">ອານາເຂດທາງໃຕ້ຂອງຝລັ່ງເສດ</territory>
			<territory type="TG">ໂຕໂກ</territory>
			<territory type="TH">ປະເທດໄທ</territory>
			<territory type="TJ">ທາຈິກິສະຖານ</territory>
			<territory type="TK">ໂທກິໂລ</territory>
			<territory type="TL">ຕິມໍຕາເວັນອອກ</territory>
			<territory type="TM">ເຕຣີກເມນິສະຖານ</territory>
			<territory type="TN">ຕູນິເຊຍ</territory>
			<territory type="TO">ຕອງກາ</territory>
			<territory type="TR">ຕຸນກີ</territory>
			<territory type="TT">ທິນິແດດ</territory>
			<territory type="TW">ໄຕ້ຫວັນ</territory>
			<territory type="TZ">ທານຊາເນຍ</territory>
			<territory type="UA">ຢູເຄຼນ</territory>
			<territory type="UG">ອູການດາ</territory>
			<territory type="US">ສະຫະລັດອາເມລິກາ</territory>
			<territory type="UY">ລູກວຍອຸຣ</territory>
			<territory type="UZ">ອຸດເບກິສະຖານ</territory>
			<territory type="VA">ວາຕິກັນ</territory>
			<territory type="VE">ເວເນຊູເອລາ</territory>
			<territory type="VG">ບຣິທິດເວີຈິນໄອແລນ</territory>
			<territory type="VI">ຢູເອສເວີຈິນໄອແລນ</territory>
			<territory type="VN">ຫວຽດນາມ</territory>
			<territory type="VU">ວານົວຕູ</territory>
			<territory type="YE">ເຢເມນ</territory>
			<territory type="YT">ມາຢອດ</territory>
			<territory type="ZA">ອາຟະລິກາໃຕ້</territory>
			<territory type="ZM">ແຊມເບຍ</territory>
			<territory type="ZW">ຊິມບັບເວ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[່-ໍ ໆ ກ ຂ ຄ ງ ຈ ຊ ຍ ດ-ທ ນ-ຟ ມ-ຣ ລ ວ ສ ຫ ໜ ໝ ອ-ູ ົ-ຽ ເ-ໄ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200B ໐-໙]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<eras>
					<eraAbbr>
						<era type="0">ພ.ສ.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEEທີ່ d MMMM G yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H ໂມງ mນາທີ ss ວິນາທີ</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H ໂມງ mນາທີ</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ມ.ກ.</month>
							<month type="2">ກ.ພ.</month>
							<month type="3">ມີ.ນ.</month>
							<month type="4">ມ.ສ..</month>
							<month type="5">ພ.ພ.</month>
							<month type="6">ມິ.ຖ.</month>
							<month type="7">ກ.ລ.</month>
							<month type="8">ສ.ຫ.</month>
							<month type="9">ກ.ຍ.</month>
							<month type="10">ຕ.ລ.</month>
							<month type="11">ພ.ຈ.</month>
							<month type="12">ທ.ວ.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ມັງກອນ</month>
							<month type="2">ກຸມພາ</month>
							<month type="3">ມີນາ</month>
							<month type="4">ເມສາ</month>
							<month type="5">ພຶດສະພາ</month>
							<month type="6">ມິຖຸນາ</month>
							<month type="7">ກໍລະກົດ</month>
							<month type="8">ສິງຫາ</month>
							<month type="9">ກັນຍາ</month>
							<month type="10">ຕຸລາ</month>
							<month type="11">ພະຈິກ</month>
							<month type="12">ທັນວາ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ອາ.</day>
							<day type="mon">ຈ.</day>
							<day type="tue">ອ.</day>
							<day type="wed">ພ.</day>
							<day type="thu">ພຫ.</day>
							<day type="fri">ສກ.</day>
							<day type="sat">ສ.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ວັນອາທິດ</day>
							<day type="mon">ວັນຈັນ</day>
							<day type="tue">ວັນອັງຄານ</day>
							<day type="wed">ວັນພຸດ</day>
							<day type="thu">ວັນພະຫັດ</day>
							<day type="fri">ວັນສຸກ</day>
							<day type="sat">ວັນເສົາ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ກ່ອນທ່ຽງ</am>
				<pm>ຫລັງທ່ຽງ</pm>
				<eras>
					<eraNames>
						<era type="0">ປີກ່ອນຄິດສະການທີ່</era>
						<era type="1">ຄິດສະການທີ່</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ປີກ່ອນຄິດສະການທີ່</era>
						<era type="1">ຄ.ສ.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEEທີ  d MMMM G yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>Hໂມງ mນາທີ ss ວິນາທີv</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H ໂມງ mນາທີss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="LAK">
				<displayName>ກີບ</displayName>
				<symbol>₭</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�1�M��Locale/Data/en_BW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="BW"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E dd MMM yyyy - E dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="XXX">
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[2�.##Locale/Data/ml_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ml"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[�yB!!Locale/Data/mn_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<script type="Cyrl"/>
	</identity>
</ldml>
PKpG[�SsV�:�:Locale/Data/wal.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="wal"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">ዐርቢኛ</language>
			<language type="de">ጀርመን</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="hi">ሐንድኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="ru">ራሽኛ</language>
			<language type="wal">ወላይታቱ</language>
			<language type="zh">ቻይንኛ</language>
		</languages>
		<scripts>
			<script type="Latn">ላቲን</script>
		</scripts>
		<territories>
			<territory type="AD">አንዶራ</territory>
			<territory type="AE">የተባበሩት አረብ ኤምሬትስ</territory>
			<territory type="AL">አልባኒያ</territory>
			<territory type="AM">አርሜኒያ</territory>
			<territory type="AN">ኔዘርላንድስ አንቲልስ</territory>
			<territory type="AR">አርጀንቲና</territory>
			<territory type="AT">ኦስትሪያ</territory>
			<territory type="AU">አውስትሬሊያ</territory>
			<territory type="AZ">አዘርባጃን</territory>
			<territory type="BA">ቦስኒያ እና ሄርዞጎቪኒያ</territory>
			<territory type="BB">ባርቤዶስ</territory>
			<territory type="BE">ቤልጄም</territory>
			<territory type="BG">ቡልጌሪያ</territory>
			<territory type="BH">ባህሬን</territory>
			<territory type="BM">ቤርሙዳ</territory>
			<territory type="BO">ቦሊቪያ</territory>
			<territory type="BR">ብራዚል</territory>
			<territory type="BT">ቡህታን</territory>
			<territory type="BY">ቤላሩስ</territory>
			<territory type="BZ">ቤሊዘ</territory>
			<territory type="CD">ኮንጎ</territory>
			<territory type="CF">የመካከለኛው አፍሪካ ሪፐብሊክ</territory>
			<territory type="CH">ስዊዘርላንድ</territory>
			<territory type="CL">ቺሊ</territory>
			<territory type="CM">ካሜሩን</territory>
			<territory type="CN">ቻይና</territory>
			<territory type="CO">ኮሎምቢያ</territory>
			<territory type="CS">ሰርቢያ</territory>
			<territory type="CV">ኬፕ ቬርዴ</territory>
			<territory type="CY">ሳይፕረስ</territory>
			<territory type="CZ">ቼክ ሪፑብሊክ</territory>
			<territory type="DE">ጀርመን</territory>
			<territory type="DK">ዴንማርክ</territory>
			<territory type="DM">ዶሚኒካ</territory>
			<territory type="DO">ዶሚኒክ ሪፑብሊክ</territory>
			<territory type="DZ">አልጄሪያ</territory>
			<territory type="EC">ኢኳዶር</territory>
			<territory type="EE">ኤስቶኒያ</territory>
			<territory type="EG">ግብጽ</territory>
			<territory type="EH">ምዕራባዊ ሳህራ</territory>
			<territory type="ER">ኤርትራ</territory>
			<territory type="ES">ስፔን</territory>
			<territory type="ET">ኢትዮጵያ</territory>
			<territory type="FI">ፊንላንድ</territory>
			<territory type="FJ">ፊጂ</territory>
			<territory type="FM">ሚክሮኔዢያ</territory>
			<territory type="FR">ፈረንሳይ</territory>
			<territory type="GB">እንግሊዝ</territory>
			<territory type="GE">ጆርጂያ</territory>
			<territory type="GF">የፈረንሳይ ጉዊአና</territory>
			<territory type="GM">ጋምቢያ</territory>
			<territory type="GN">ጊኒ</territory>
			<territory type="GQ">ኢኳቶሪያል ጊኒ</territory>
			<territory type="GR">ግሪክ</territory>
			<territory type="GW">ቢሳዎ</territory>
			<territory type="GY">ጉያና</territory>
			<territory type="HK">ሆንግ ኮንግ</territory>
			<territory type="HR">ክሮኤሽያ</territory>
			<territory type="HT">ሀይቲ</territory>
			<territory type="HU">ሀንጋሪ</territory>
			<territory type="ID">ኢንዶኔዢያ</territory>
			<territory type="IE">አየርላንድ</territory>
			<territory type="IL">እስራኤል</territory>
			<territory type="IN">ህንድ</territory>
			<territory type="IQ">ኢራቅ</territory>
			<territory type="IS">አይስላንድ</territory>
			<territory type="IT">ጣሊያን</territory>
			<territory type="JM">ጃማይካ</territory>
			<territory type="JO">ጆርዳን</territory>
			<territory type="JP">ጃፓን</territory>
			<territory type="KH">ካምቦዲያ</territory>
			<territory type="KM">ኮሞሮስ</territory>
			<territory type="KP">ደቡብ ኮሪያ</territory>
			<territory type="KR">ሰሜን ኮሪያ</territory>
			<territory type="KW">ክዌት</territory>
			<territory type="LB">ሊባኖስ</territory>
			<territory type="LT">ሊቱዌኒያ</territory>
			<territory type="LV">ላትቪያ</territory>
			<territory type="LY">ሊቢያ</territory>
			<territory type="MA">ሞሮኮ</territory>
			<territory type="MD">ሞልዶቫ</territory>
			<territory type="MK">ማከዶኒያ</territory>
			<territory type="MN">ሞንጎሊያ</territory>
			<territory type="MO">ማካዎ</territory>
			<territory type="MR">ሞሪቴኒያ</territory>
			<territory type="MT">ማልታ</territory>
			<territory type="MU">ማሩሸስ</territory>
			<territory type="MX">ሜክሲኮ</territory>
			<territory type="MY">ማሌዢያ</territory>
			<territory type="NA">ናሚቢያ</territory>
			<territory type="NC">ኒው ካሌዶኒያ</territory>
			<territory type="NG">ናይጄሪያ</territory>
			<territory type="NL">ኔዘርላንድ</territory>
			<territory type="NO">ኖርዌ</territory>
			<territory type="NP">ኔፓል</territory>
			<territory type="NZ">ኒው ዚላንድ</territory>
			<territory type="PE">ፔሩ</territory>
			<territory type="PF">የፈረንሳይ ፖሊኔዢያ</territory>
			<territory type="PG">ፓፑዋ ኒው ጊኒ</territory>
			<territory type="PL">ፖላንድ</territory>
			<territory type="PR">ፖርታ ሪኮ</territory>
			<territory type="RO">ሮሜኒያ</territory>
			<territory type="RU">ራሺያ</territory>
			<territory type="SA">ሳውድአረቢያ</territory>
			<territory type="SD">ሱዳን</territory>
			<territory type="SE">ስዊድን</territory>
			<territory type="SG">ሲንጋፖር</territory>
			<territory type="SI">ስሎቬኒያ</territory>
			<territory type="SK">ስሎቫኪያ</territory>
			<territory type="SN">ሴኔጋል</territory>
			<territory type="SO">ሱማሌ</territory>
			<territory type="SY">ሲሪያ</territory>
			<territory type="TD">ቻድ</territory>
			<territory type="TF">የፈረንሳይ ደቡባዊ ግዛቶች</territory>
			<territory type="TH">ታይላንድ</territory>
			<territory type="TJ">ታጃኪስታን</territory>
			<territory type="TL">ምስራቅ ቲሞር</territory>
			<territory type="TN">ቱኒዚያ</territory>
			<territory type="TR">ቱርክ</territory>
			<territory type="TT">ትሪኒዳድ እና ቶባጎ</territory>
			<territory type="TZ">ታንዛኒያ</territory>
			<territory type="UG">ዩጋንዳ</territory>
			<territory type="US">አሜሪካ</territory>
			<territory type="UZ">ዩዝበኪስታን</territory>
			<territory type="VE">ቬንዙዌላ</territory>
			<territory type="VG">የእንግሊዝ ድንግል ደሴቶች</territory>
			<territory type="VI">የአሜሪካ ቨርጂን ደሴቶች</territory>
			<territory type="YE">የመን</territory>
			<territory type="ZA">ደቡብ አፍሪካ</territory>
			<territory type="ZM">ዛምቢያ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ᎐-᎙ ሀ-ሏ ⶀ ሐ-ሟ ᎀ-ᎃ ⶁ ሠ-ሯ ⶂ ሰ-ሷ ⶃ ሸ-ሿ ⶄ ቀ-ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ቧ ᎄ-ᎇ ⶅ ቨ-ቷ ⶆ ቸ-ቿ ⶇ ኀ-ኈ ኊ-ኍ ነ-ኗ ⶈ ኘ-ኟ ⶉ አ-ኧ ⶊ ከ-ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዖ ዘ-ዟ ⶋ ዠ-ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ገ-ጐ ጒ-ጕ ጘ-ጟ ⶓ-ⶖ ጠ-ጧ ⶏ ጨ-ጯ ⶐ ጰ-ጷ ⶑ ጸ-ፏ ᎈ-ᎋ ፐ-ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጃንዩ</month>
							<month type="2">ፌብሩ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረ</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስ</month>
							<month type="9">ሴፕቴ</month>
							<month type="10">ኦክተ</month>
							<month type="11">ኖቬም</month>
							<month type="12">ዲሴም</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጃንዩወሪ</month>
							<month type="2">ፌብሩወሪ</month>
							<month type="3">ማርች</month>
							<month type="4">ኤፕረል</month>
							<month type="5">ሜይ</month>
							<month type="6">ጁን</month>
							<month type="7">ጁላይ</month>
							<month type="8">ኦገስት</month>
							<month type="9">ሴፕቴምበር</month>
							<month type="10">ኦክተውበር</month>
							<month type="11">ኖቬምበር</month>
							<month type="12">ዲሴምበር</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ጃ</month>
							<month type="2">ፌ</month>
							<month type="3">ማ</month>
							<month type="4">ኤ</month>
							<month type="5">ሜ</month>
							<month type="6">ጁ</month>
							<month type="7">ጁ</month>
							<month type="8">ኦ</month>
							<month type="9">ሴ</month>
							<month type="10">ኦ</month>
							<month type="11">ኖ</month>
							<month type="12">ዲ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ወጋ</day>
							<day type="mon">ሳይኖ</day>
							<day type="tue">ማቆሳ</day>
							<day type="wed">አሩዋ</day>
							<day type="thu">ሃሙሳ</day>
							<day type="fri">አርባ</day>
							<day type="sat">ቄራ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ወጋ</day>
							<day type="mon">ሳይኖ</day>
							<day type="tue">ማቆሳኛ</day>
							<day type="wed">አሩዋ</day>
							<day type="thu">ሃሙሳ</day>
							<day type="fri">አርባ</day>
							<day type="sat">ቄራ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ወ</day>
							<day type="mon">ሳ</day>
							<day type="tue">ማ</day>
							<day type="wed">አ</day>
							<day type="thu">ሃ</day>
							<day type="fri">አ</day>
							<day type="sat">ቄ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ማለዶ</am>
				<pm>ቃማ</pm>
				<eras>
					<eraAbbr>
						<era type="0">አዳ ዎዴ</era>
						<era type="1">ግሮተታ ላይታ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፥ dd MMMM ጋላሳ yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<group>ወ</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>አውሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[���&&Locale/Data/km.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.63 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="km"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">ភាសាអាហ្វារ</language>
			<language type="ae">ភាសាអាវែស្តង់</language>
			<language type="af">ភាសាអាហ្វ្រីកាអាន</language>
			<language type="am">អំហារិក</language>
			<language type="an">ភាសាអារ៉ាហ្គោន</language>
			<language type="ar">ភាសាអារ៉ាប់</language>
			<language type="ay">ភាសាអីម៉ារ៉ា</language>
			<language type="az">ភាសាអាហ៊្សែរបែហ្សង់</language>
			<language type="be">ភាសាបេឡារុស្ស</language>
			<language type="bg">ភាសាប៊ុលហ្ការី</language>
			<language type="bh">ភាសាបិហារ</language>
			<language type="bm">ភាសាបាម្បារា</language>
			<language type="bn">ភាសាបេន្កាលី</language>
			<language type="bo">ភាសាទីបេ</language>
			<language type="br">ប្រីស្តុន</language>
			<language type="bs">ប៊ូស្នៀរ</language>
			<language type="ca">ភាសាកាតាឡាន</language>
			<language type="cs">ភាសាឆេក</language>
			<language type="cy">វេល</language>
			<language type="da">ភាសាដាណឺម៉ាក</language>
			<language type="de">ភាសាអាល្លឺម៉ង់</language>
			<language type="dz">ភាសាប៊ូតាន</language>
			<language type="el">ភាសាក្រិច</language>
			<language type="en">ភាសាអង់គ្លេស</language>
			<language type="eo">ភាសាអេស្ពេរ៉ាន្ទោ</language>
			<language type="es">ភាសាអេស្ប៉ាញ</language>
			<language type="et">ភាសាអេស្តូនី</language>
			<language type="eu">ភាសាបាស្កេ</language>
			<language type="fa">ភឺសៀន</language>
			<language type="fi">ភាសាហ្វាំងឡង់</language>
			<language type="fil">ពីលីពីន</language>
			<language type="fj">ហ្វ៉ីហ្ស៉ី</language>
			<language type="fo">ហ្វារូស</language>
			<language type="fr">ភាសាបារាំង</language>
			<language type="fy">ហ្រីសង់</language>
			<language type="ga">ភាសាហ្កែលិគ</language>
			<language type="gd">ភាសាហ្កែលិគ [gd]</language>
			<language type="gl">ភាសាហ្កាលីស៉ី</language>
			<language type="gn">ភាសាហ្កួរ៉ានី</language>
			<language type="gu">ភាសាហ្កុយ៉ារាទី</language>
			<language type="he">ភាសាហេប្រិ</language>
			<language type="hi">ភាសាហ៉ិនឌី</language>
			<language type="hr">ក្រូអាទៀន</language>
			<language type="hu">ភាសាហុងគ្រី</language>
			<language type="hy">ភាសាអារមេនី</language>
			<language type="ia">អីនធើលីង</language>
			<language type="id">ភាសាឥណ្ឌូនេស៊ី</language>
			<language type="is">ភាសាអ៉ីស្លង់</language>
			<language type="it">ភាសាអ៊ីតាលី</language>
			<language type="ja">ភាសាជប៉ុន</language>
			<language type="jv">ភាសាយ៉ាវា</language>
			<language type="ka">ភាសាហ្សកហ្ស៉ី</language>
			<language type="kk">ភាសាកាហ្សាក់ស្តង់់</language>
			<language type="km">ភាសាខ្មែរ</language>
			<language type="kn">ភាសាកិណាដា</language>
			<language type="ko">ភាសាកូរ៉េ</language>
			<language type="ku">ភាសាឃឺដ</language>
			<language type="ky">ភាសាគៀរហ្គីស្តង់</language>
			<language type="la">ភាសាឡាតំាង</language>
			<language type="ln">លីនកាឡា</language>
			<language type="lo">ភាសាឡាវ</language>
			<language type="lt">ភាសាលីទុយអានី</language>
			<language type="lv">ភាសាឡាតវីយ៉ា</language>
			<language type="mg">ភាសាម៉ាដាហ្កាសការ</language>
			<language type="mi">ភាសាម៉ោរី</language>
			<language type="mk">ភាសាម៉ាសេដូនី</language>
			<language type="ml">ភាសាម៉ាឡាឡាយ៉ាន</language>
			<language type="mn">ភាសាម៉ុងហ្គោលី</language>
			<language type="mo">ភាសាម៉ុលដាវី</language>
			<language type="mr">ភាសាម៉ារាធី</language>
			<language type="ms">ភាសាម៉ាលេស៉ី</language>
			<language type="mt">ភាសាម៉ាល់តា</language>
			<language type="ne">ភាសានេប៉ាល់</language>
			<language type="nl">ភាសាហុល្លង់</language>
			<language type="nn">ន័រវេ</language>
			<language type="no">ភាសាន័រវែស</language>
			<language type="oc">អូសីតាន់</language>
			<language type="or">ភាសាអូរីយ៉ា</language>
			<language type="pa">ភាសាពូនយ៉ាប៊ី</language>
			<language type="pl">ភាសាប៉ូឡូញ</language>
			<language type="ps">បាស្តូ</language>
			<language type="pt">ភាសាព័រទុយហ្កាល់</language>
			<language type="qu">ភាសាកេទ្ជូអា</language>
			<language type="rn">ភាសារូន្ឌី</language>
			<language type="ro">ភាសារូម៉ានី</language>
			<language type="ru">ភាសាรัរូស្ស៉ី</language>
			<language type="sa">ភាសាសំស្ក្រឹត</language>
			<language type="sd">ភាសាស៉ីន្ដី</language>
			<language type="sh">សើបូក្រូទៀន</language>
			<language type="si">សីនហាលិស</language>
			<language type="sk">ភាសាស្លូវ៉ាគី</language>
			<language type="sl">ភាសាស្លូវ៉ានី</language>
			<language type="sm">ភាសាសាមូអា</language>
			<language type="so">ភាសាសូម៉ាលី</language>
			<language type="sq">ភាសាអាល់បានី</language>
			<language type="sr">សើបៀន</language>
			<language type="st">សេសូដូ</language>
			<language type="su">ភាំសាស៊ូដង់</language>
			<language type="sv">ភាសាស៊ុយអែដ</language>
			<language type="sw">ភាសាស្វាហ៉ីលី</language>
			<language type="ta">ភាសាតាមីល</language>
			<language type="te">ភាសាតេលូហ្គូ</language>
			<language type="tg">ភាសាតាដហ្ស៉ីគីស្តង់</language>
			<language type="th">ភាសាថៃ</language>
			<language type="ti">ទីរិនយា</language>
			<language type="tk">ភាសាទួគមេនីស្តង់</language>
			<language type="tlh">ខ្លិងសុន</language>
			<language type="to">ភាសាតុងហ្គោ</language>
			<language type="tr">ភាសាទួរគី</language>
			<language type="tt">ភាសាតាតារ</language>
			<language type="tw">ទ្វី</language>
			<language type="uk">ភាសាអ៊ុយក្រែន</language>
			<language type="ur">ភាសាអ៊ូរ្ឌូ</language>
			<language type="uz">ភាសាអ៊ូហ្សបេគីស្តង់</language>
			<language type="vi">ភាសាវៀតណាម</language>
			<language type="xh">ភាសាឃសា</language>
			<language type="yi">ភាសាយីឌីហ្ស</language>
			<language type="yo">ភាសាយរូបា</language>
			<language type="za">ភាសាចួង</language>
			<language type="zh">ភាសាចិន</language>
			<language type="zu">ភាសាហ្ស៉ូលូ</language>
		</languages>
		<territories>
			<territory type="AD">អានដូរ៉ា</territory>
			<territory type="AE">អេមីរ៉ែទអារ៉ាប់រួម</territory>
			<territory type="AF">អាហ្វហ្គានីស្ថាន</territory>
			<territory type="AL">អាល់បានី</territory>
			<territory type="AM">អារមេនី</territory>
			<territory type="AO">អង់ហ្គោឡា</territory>
			<territory type="AR">អាហ្សង់ទីន</territory>
			<territory type="AT">អូទ្រីស</territory>
			<territory type="AU">អូស្ត្រាលី</territory>
			<territory type="AZ">អាហ៊្សែរបែហ្សង់</territory>
			<territory type="BA">បូស្ន៉ី</territory>
			<territory type="BB">បារបាដូស</territory>
			<territory type="BD">បង់ក្លាដេស្ហ</territory>
			<territory type="BE">បែលហ្ស៉ិក</territory>
			<territory type="BF">ប៊ូរគីណាហ្វាសូ</territory>
			<territory type="BG">ប៊ុលហ្គារី</territory>
			<territory type="BH">បារ៉ែន</territory>
			<territory type="BI">ប៊ូរុនឌី</territory>
			<territory type="BJ">បេណាំង</territory>
			<territory type="BN">ប៊្រុយណេ</territory>
			<territory type="BO">បូលីវី</territory>
			<territory type="BR">ប្រេស៊ីល</territory>
			<territory type="BS">បាហាម៉ា</territory>
			<territory type="BT">ប៊ូតាន</territory>
			<territory type="BW">បុតស្វាណា</territory>
			<territory type="BY">បេឡារុស្ស</territory>
			<territory type="BZ">បេលីហ្ស</territory>
			<territory type="CA">កាណាដា</territory>
			<territory type="CF">សាធារណរដ្ឋអាហ្វ្រិកកណ្ដាល</territory>
			<territory type="CG">កុងហ្គោ</territory>
			<territory type="CH">ស្វីស</territory>
			<territory type="CI">កូដឌីវ័រ</territory>
			<territory type="CL">ឈីលី</territory>
			<territory type="CM">កាមេរូន</territory>
			<territory type="CN">ចិន</territory>
			<territory type="CO">កូឡុំប៊ី</territory>
			<territory type="CR">កូស្តារីកា</territory>
			<territory type="CU">គុយបា</territory>
			<territory type="CV">កាបវែរ</territory>
			<territory type="CY">ស៉ីពរ៍</territory>
			<territory type="CZ">សាធារណរដ្ឋឆេក</territory>
			<territory type="DE">អាល្លឺម៉ង់</territory>
			<territory type="DJ">ហ្ស៉ីបូទី</territory>
			<territory type="DK">ដាណឺម៉ាក</territory>
			<territory type="DM">ដូមីនីកា</territory>
			<territory type="DO">សាធារណរដ្ឋដូមីនីកែន</territory>
			<territory type="DZ">អាល់ហ្សេរី</territory>
			<territory type="EC">អេក្វាឌ័រ</territory>
			<territory type="EE">អេស្តូនី</territory>
			<territory type="EG">អេហ្ស៉ីប</territory>
			<territory type="EH">សាហារ៉ាខាងលិច</territory>
			<territory type="ER">អេរីទ្រា</territory>
			<territory type="ES">អេស្ប៉ាញ</territory>
			<territory type="ET">អេត្យូពី</territory>
			<territory type="FI">ហ្វាំងឡង់</territory>
			<territory type="FJ">ហ្វ៉ីហ្ស៉ី</territory>
			<territory type="FM">មិក្រូនេស៊ី</territory>
			<territory type="FR">បារាំង</territory>
			<territory type="GA">ហ្គាបុង</territory>
			<territory type="GE">ហ្សកហ្ស៉ី</territory>
			<territory type="GH">ហ្កាណា</territory>
			<territory type="GM">ហ្គាំប៊ី</territory>
			<territory type="GN">ហ្គីណេ</territory>
			<territory type="GQ">ហ្គីណេអេក្វាទ័រ</territory>
			<territory type="GR">ក្រិច</territory>
			<territory type="GT">ហ្គាតេម៉ាឡា</territory>
			<territory type="GW">ហ្គីណេប៊ីសូ</territory>
			<territory type="GY">ហ្គីយ៉ាណា</territory>
			<territory type="HK">ហុងកុង</territory>
			<territory type="HN">ហុងឌួរ៉ាស់</territory>
			<territory type="HR">ក្រូអាស៊ី</territory>
			<territory type="HT">ហៃទី</territory>
			<territory type="HU">ហុងគ្រី</territory>
			<territory type="ID">ឥណ្ឌូនេស៊ី</territory>
			<territory type="IE">អៀរឡង់</territory>
			<territory type="IL">អ៊ីស្រាអែល</territory>
			<territory type="IN">ឥណ្ឌា</territory>
			<territory type="IQ">អ៊ីរ៉ាក់</territory>
			<territory type="IR">អ៊ីរ៉ង់</territory>
			<territory type="IS">អ៉ីស្លង់</territory>
			<territory type="IT">អ៊ីតាលី</territory>
			<territory type="JM">ហ្សាម៉ាអ៉ិគ</territory>
			<territory type="JO">ហ៊្សកដានី</territory>
			<territory type="JP">ជប៉ុន</territory>
			<territory type="KE">កេនយ៉ា</territory>
			<territory type="KG">គៀរហ្គីស្តង់</territory>
			<territory type="KH">កម្ពុជា</territory>
			<territory type="KI">គិរិបាទី</territory>
			<territory type="KM">កុំម៉ូរ៉ូស</territory>
			<territory type="KP">សាធារណរដ្ឋប្រជាធិបតេយ្យប្រជាមានិតកូរ៉េ</territory>
			<territory type="KR">សាធារណរដ្ឋកូរ៉េ</territory>
			<territory type="KW">គុយវ៉ែត</territory>
			<territory type="KZ">កាហ្សាក់ស្តាង់់</territory>
			<territory type="LA">ឡាវ</territory>
			<territory type="LB">លីបង់</territory>
			<territory type="LI">លិចទេនស្តែន</territory>
			<territory type="LK">ស្រីលង្កា</territory>
			<territory type="LR">លីបេរីយ៉ា</territory>
			<territory type="LS">លើសូតូ</territory>
			<territory type="LT">លីទុយអានី</territory>
			<territory type="LU">លុចហ្សំបួរ</territory>
			<territory type="LV">ឡាតវីយ៉ា</territory>
			<territory type="LY">លីប៊ី</territory>
			<territory type="MA">ម៉ារ៉ុក</territory>
			<territory type="MC">ម៉ូណាកូ</territory>
			<territory type="MD">សាធារណរដ្ឋម៉ុលដាវី</territory>
			<territory type="MG">ម៉ាដាហ្កាស្ការ</territory>
			<territory type="MK">ម៉ាសេដន</territory>
			<territory type="ML">ម៉ាលី</territory>
			<territory type="MM">មីយ៉ាន់ម៉ា</territory>
			<territory type="MN">ម៉ុងហ្គោលី</territory>
			<territory type="MR">ម៉ូរីតានី</territory>
			<territory type="MT">ម៉ាល់តា</territory>
			<territory type="MU">ម៉ូរីទុស</territory>
			<territory type="MX">ម៉ិចសិក</territory>
			<territory type="MY">ម៉ាលេស៉ី</territory>
			<territory type="MZ">ម៉ូហ្សាំប៊ិក</territory>
			<territory type="NA">ណាមីប៊ី</territory>
			<territory type="NE">នីហ្សេរ</territory>
			<territory type="NG">នីហ្សេរីយ៉ា</territory>
			<territory type="NI">នីការ៉ាហ្គ័រ</territory>
			<territory type="NL">ហូល្លង់</territory>
			<territory type="NO">ន័រវែស</territory>
			<territory type="NP">នេប៉ាល់</territory>
			<territory type="NZ">នូវែលហ្សេឡង់</territory>
			<territory type="OM">អូម៉ង់</territory>
			<territory type="PA">ប៉ាណាម៉ា</territory>
			<territory type="PE">ប៉េរូ</territory>
			<territory type="PG">ប៉ាពូអានូវែលហ្គីណេ</territory>
			<territory type="PH">ហ្វ៉ីលីពីន</territory>
			<territory type="PK">ប៉ាគីស្ថាន</territory>
			<territory type="PL">ប៉ូលូញ</territory>
			<territory type="PR">ព័រតូរីកូ</territory>
			<territory type="PS">ប៉ាលេស្ទីន</territory>
			<territory type="PT">ព័រទុយហ្កាល់</territory>
			<territory type="PY">ប៉ារ៉ាហ្គាយ</territory>
			<territory type="QA">កាតារ</territory>
			<territory type="RO">រូម៉ានី</territory>
			<territory type="RU">រូស្ស៊ី</territory>
			<territory type="RW">រវ៉ាន់ដា</territory>
			<territory type="SA">អារ៉ាប៊ីសាអ៊ូឌីត</territory>
			<territory type="SC">សីសែល</territory>
			<territory type="SD">ស៊ូដង់</territory>
			<territory type="SE">ស៊ុយអែដ</territory>
			<territory type="SG">សិង្ហបុរី</territory>
			<territory type="SI">ស្លូវេនី</territory>
			<territory type="SK">ស្លូវ៉ាគី</territory>
			<territory type="SL">សេរ៉ាឡេអូន</territory>
			<territory type="SN">សេនេហ្កាល់</territory>
			<territory type="SO">សូម៉ាលី</territory>
			<territory type="SR">សូរីណាម</territory>
			<territory type="SV">អែលសាល់វ៉ាឌ័រ</territory>
			<territory type="SY">ស៊ីរី</territory>
			<territory type="SZ">សូហ្ស៉ីឡង់</territory>
			<territory type="TD">ឆាដ</territory>
			<territory type="TG">តូហ្គូ</territory>
			<territory type="TH">ថៃ</territory>
			<territory type="TJ">តាដហ្ស៉ីគីស្តង់</territory>
			<territory type="TL">ទីម័រខាងកើត</territory>
			<territory type="TM">ទួគមេនីស្តង់</territory>
			<territory type="TN">ទុយនេស៊ី</territory>
			<territory type="TO">តុងហ្គា</territory>
			<territory type="TR">ទួរគី</territory>
			<territory type="TT">ទ្រីនីដាដនឹងតូបាហ្គោ</territory>
			<territory type="TW">តៃវ៉ាន់</territory>
			<territory type="TZ">តង់ហ្សានី</territory>
			<territory type="UA">អ៊ុយក្រែន</territory>
			<territory type="UG">អ៊ូហ្កង់ដា</territory>
			<territory type="US">សហរដ្ឋអាមេរិក</territory>
			<territory type="UY">អ៊ុយរុយហ្គាយ</territory>
			<territory type="UZ">អ៊ូហ្សបេគីស្តង់</territory>
			<territory type="VA">វ៉ាទីកង់</territory>
			<territory type="VE">វេនេហ្ស៊ុយឡា</territory>
			<territory type="VN">វៀតណាម</territory>
			<territory type="WS">សាមូអា</territory>
			<territory type="YE">យេមែន</territory>
			<territory type="ZA">អាហ្វ្រិកខាងត្បូង</territory>
			<territory type="ZM">ហ្សាំប៊ី</territory>
			<territory type="ZW">ហ្ស៊ីមបាបវ៉េ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[៎ ៏ ៑ ័ ៈ ់ ៉ ៊ ៍ ៌ ក-រ ឫ ឬ ល ឭ ឮ វ ស-អ {អា} ឥ-ឧ {ឧក} ឪ ឩ ឯ-ឳ ា-ះ ្]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u17B4 \u17B5\u200B ឝ ឞ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GyMdkHmsSEDFwWahKzYeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<eras>
					<eraAbbr>
						<era type="0">ព.ស.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<default choice="long"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE ថ្ងៃ d ខែ MMMM ឆ្នាំ  yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>EEEE ថ្ងៃ d ខែ MMMM ឆ្នាំ  yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H ម៉ោង m នាទី ss វិនាទី​</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H ម៉ោង m នាទី</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">១</month>
							<month type="2">២</month>
							<month type="3">៣</month>
							<month type="4">៤</month>
							<month type="5">៥</month>
							<month type="6">៦</month>
							<month type="7">៧</month>
							<month type="8">៨</month>
							<month type="9">៩</month>
							<month type="10">១០</month>
							<month type="11">១១</month>
							<month type="12">១២</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">មករា</month>
							<month type="2">កុម្ភៈ</month>
							<month type="3">មិនា</month>
							<month type="4">មេសា</month>
							<month type="5">ឧសភា</month>
							<month type="6">មិថុនា</month>
							<month type="7">កក្កដា</month>
							<month type="8">សីហា</month>
							<month type="9">កញ្ញា</month>
							<month type="10">តុលា</month>
							<month type="11">វិច្ឆិកា</month>
							<month type="12">ធ្នូ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">អា</day>
							<day type="mon">ច</day>
							<day type="tue">អ</day>
							<day type="wed">ពុ</day>
							<day type="thu">ព្រ</day>
							<day type="fri">សុ</day>
							<day type="sat">ស</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ថ្ងៃអាទិត្យ</day>
							<day type="mon">​ថ្ងៃច័ន្ទ</day>
							<day type="tue">ថ្ងៃអង្គារ</day>
							<day type="wed">ថ្ងៃពុធ</day>
							<day type="thu">ថ្ងៃព្រហស្បតិ៍</day>
							<day type="fri">ថ្ងៃសុក្រ</day>
							<day type="sat">ថ្ងៃសៅរ៍</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">ត្រី១</quarter>
							<quarter type="2">ត្រី២</quarter>
							<quarter type="3">ត្រី៣</quarter>
							<quarter type="4">ត្រី៤</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ត្រីមាសទី១</quarter>
							<quarter type="2">ត្រីមាសទី២</quarter>
							<quarter type="3">ត្រីមាសទី៣</quarter>
							<quarter type="4">ត្រីមាសទី៤</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ព្រឹក</am>
				<pm>ល្ងាច</pm>
				<eras>
					<eraNames>
						<era type="0">មុន​គ្រិស្តសករាជ</era>
						<era type="1">គ្រិស្តសករាជ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">មុន​គ.ស.</era>
						<era type="1">គ.ស.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE ថ្ងៃ d ខែ MMMM ឆ្នាំ  yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d ខែ MMMM ឆ្នាំ  yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H ម៉ោង m នាទី ss វិនាទី​ v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H ម៉ោង m នាទី ss វិនាទី​z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d/M - E, d/M</greatestDifference>
							<greatestDifference id="d">E, d/M - E, d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yyyy - M/yyyy</greatestDifference>
							<greatestDifference id="y">M/yyyy - M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d/M/yyyy - E, d/M/yyyy</greatestDifference>
							<greatestDifference id="d">E, d/M/yyyy - E, d/M/yyyy</greatestDifference>
							<greatestDifference id="y">E, d/M/yyyy - E, d/M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="d">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="y">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yyyy - d/M/yyyy</greatestDifference>
							<greatestDifference id="d">d/M/yyyy - d/M/yyyy</greatestDifference>
							<greatestDifference id="y">d/M/yyyy - d/M/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="KHR">
				<displayName>Riel</displayName>
				<symbol>៛</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�K�!!Locale/Data/uz.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/06/09 02:17:48 $"/>
		<language type="uz"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">Арабча</language>
			<language type="de">Олмонча</language>
			<language type="en">Инглизча</language>
			<language type="es">Испанча</language>
			<language type="fr">Французча</language>
			<language type="hi">Ҳиндча</language>
			<language type="it">Италянча</language>
			<language type="ja">Японча</language>
			<language type="pt">Португалча</language>
			<language type="ru">Русча</language>
			<language type="uz">Ўзбек</language>
			<language type="zh">Хитойча</language>
		</languages>
		<scripts>
			<script type="Arab">Араб</script>
			<script type="Cyrl">Кирил</script>
			<script type="Latn">Лотин</script>
		</scripts>
		<territories>
			<territory type="AF">Афғонистон</territory>
			<territory type="BR">Бразилия</territory>
			<territory type="CN">Хитой</territory>
			<territory type="DE">Олмония</territory>
			<territory type="FR">Франция</territory>
			<territory type="GB">Бирлашган Қироллик</territory>
			<territory type="IN">Ҳиндистон</territory>
			<territory type="IT">Италия</territory>
			<territory type="JP">Япония</territory>
			<territory type="RU">Россия</territory>
			<territory type="US">Қўшма Штатлар</territory>
			<territory type="UZ">Ўзбекистон</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а-г ғ д е ё ж-к қ л-у ў ф х ҳ ч ш ъ э-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ц щ ы ь]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Янв</month>
							<month type="2">Фев</month>
							<month type="3">Мар</month>
							<month type="4">Апр</month>
							<month type="5">Май</month>
							<month type="6">Июн</month>
							<month type="7">Июл</month>
							<month type="8">Авг</month>
							<month type="9">Сен</month>
							<month type="10">Окт</month>
							<month type="11">Ноя</month>
							<month type="12">Дек</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Муҳаррам</month>
							<month type="2">Сафар</month>
							<month type="3">Рабиул-аввал</month>
							<month type="4">Рабиул-охир</month>
							<month type="5">Жумодиул-уло</month>
							<month type="6">Жумодиул-ухро</month>
							<month type="7">Ражаб</month>
							<month type="8">Шаъбон</month>
							<month type="9">Рамазон</month>
							<month type="10">Шаввол</month>
							<month type="11">Зил-қаъда</month>
							<month type="12">Зил-ҳижжа</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">Я</month>
							<month type="2">Ф</month>
							<month type="3">М</month>
							<month type="4">А</month>
							<month type="5">М</month>
							<month type="6">И</month>
							<month type="7">И</month>
							<month type="8">А</month>
							<month type="9">С</month>
							<month type="10">О</month>
							<month type="11">Н</month>
							<month type="12">Д</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Якш</day>
							<day type="mon">Душ</day>
							<day type="tue">Сеш</day>
							<day type="wed">Чор</day>
							<day type="thu">Пай</day>
							<day type="fri">Жум</day>
							<day type="sat">Шан</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">якшанба</day>
							<day type="mon">душанба</day>
							<day type="tue">сешанба</day>
							<day type="wed">чоршанба</day>
							<day type="thu">пайшанба</day>
							<day type="fri">жума</day>
							<day type="sat">шанба</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Я</day>
							<day type="mon">Д</day>
							<day type="tue">С</day>
							<day type="wed">Ч</day>
							<day type="thu">П</day>
							<day type="fri">Ж</day>
							<day type="sat">Ш</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Asia/Kabul">
				<exemplarCity>کابل</exemplarCity>
			</zone>
			<metazone type="Afghanistan">
				<long>
					<standard>افغانستان وقتی</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencies>
			<currency type="BRL">
				<displayName>Бразил реали</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Хитой юани</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Евро</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Инглиз фунт стерлинги</displayName>
			</currency>
			<currency type="INR">
				<displayName>Ҳинд рупияси</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Япон йенаси</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Рус рубли</displayName>
			</currency>
			<currency type="USD">
				<displayName>АҚШ доллари</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Ўзбекистон сўм</displayName>
				<symbol>сўм</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[��*OOLocale/Data/zh_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="zh"/>
		<territory type="CN"/>
	</identity>
	<alias source="zh_Hans_CN" path="//ldml"/>
</ldml>
PKpG[��Q*����Locale/Data/pt_PT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.76 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="pt"/>
		<territory type="PT"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikaans</language>
			<language type="afa">idioma afro-asiático</language>
			<language type="afh">afrihili</language>
			<language type="ak">akan</language>
			<language type="alg">idioma algonquiano</language>
			<language type="ang">inglês, arcaico (aprox. 450-1100)</language>
			<language type="apa">idioma apache</language>
			<language type="art">idioma artifical</language>
			<language type="ath">idioma atabascano</language>
			<language type="aus">idioma australiano</language>
			<language type="awa">Awadhi</language>
			<language type="bai">bamileke Languages</language>
			<language type="bat">idioma báltico</language>
			<language type="bua">buriat</language>
			<language type="bug">Buginese</language>
			<language type="byn">blin</language>
			<language type="cai">idioma indígena centro-americano</language>
			<language type="cau">idioma caucásico</language>
			<language type="ce">chechene</language>
			<language type="cel">idioma céltico</language>
			<language type="chn">jargão chinook</language>
			<language type="cmc">idioma chamic</language>
			<language type="cpe">crioulo ou pidgin do inglês</language>
			<language type="cpf">crioulo ou pidgin do francês</language>
			<language type="cpp">crioulo ou pidgin do português</language>
			<language type="crh">turco da Crimeia</language>
			<language type="cs">checo</language>
			<language type="cus">idioma cuchita</language>
			<language type="de_CH">alemão alto (Suíça)</language>
			<language type="dra">idioma dravítico</language>
			<language type="dyu">diula</language>
			<language type="egy">egípcio clássico</language>
			<language type="en">Inglês</language>
			<language type="enm">inglês, medieval (1100-1500)</language>
			<language type="et">estónio</language>
			<language type="fiu">idioma ugro-finês</language>
			<language type="frm">francês, medieval (aprox.1400-1600)</language>
			<language type="fro">francês, arcaico (842-aprox.1400)</language>
			<language type="frs">frísio oriental</language>
			<language type="gem">idioma germânico</language>
			<language type="gmh">alemão, medieval alto (aprox.1050-1500)</language>
			<language type="goh">alemão, arcaico alto (aprox.750-1050)</language>
			<language type="grb">grebo</language>
			<language type="grc">grego clássico</language>
			<language type="gsw">alemão da Suíça</language>
			<language type="hsb">sorbiano superior</language>
			<language type="hy">arménio</language>
			<language type="iba">Iban</language>
			<language type="ig">igbo</language>
			<language type="ik">Inupiaq</language>
			<language type="inc">idioma índico</language>
			<language type="ine">idioma indo-europeu</language>
			<language type="jv">jv</language>
			<language type="kaa">kara-kalpak</language>
			<language type="khi">khoisan</language>
			<language type="kj">kuanyama</language>
			<language type="krc">karachay-balkar</language>
			<language type="lez">lezghiano</language>
			<language type="lua">luba-lulua</language>
			<language type="mga">irlandês, medieval (900-1200)</language>
			<language type="mk">macedónio</language>
			<language type="mkh">mon-khmer (other)</language>
			<language type="mno">idioma manobo</language>
			<language type="nah">Nauatle</language>
			<language type="nai">idioma indígena norte-americano</language>
			<language type="nds">baixo alemão</language>
			<language type="nic">nigeriano - cordofano</language>
			<language type="nl_BE">flamengo (Bélgica)</language>
			<language type="non">norse, old</language>
			<language type="nso">soto, setentrional</language>
			<language type="nub">idioma núbio</language>
			<language type="oc">provençal</language>
			<language type="os">ossético</language>
			<language type="oto">idioma otomano</language>
			<language type="paa">idioma papuano</language>
			<language type="peo">persa arcaico (aprox. 600-400 a.C.)</language>
			<language type="phi">idioma filipino</language>
			<language type="pl">polaco</language>
			<language type="pra">idioma prácito</language>
			<language type="pro">provençal, arcaico (até 1500)</language>
			<language type="pt_PT">português europeu</language>
			<language type="rm">reto-romance</language>
			<language type="roa">idioma românico</language>
			<language type="rom">romanês</language>
			<language type="sai">idioma indígeno sul-americano</language>
			<language type="sal">salishan languages</language>
			<language type="sem">idioma semítico</language>
			<language type="sgn">linguages de sinais</language>
			<language type="sio">idioma sioux</language>
			<language type="sit">idioma sino-tibetano</language>
			<language type="sla">idioma eslavo</language>
			<language type="smi">idioma sami</language>
			<language type="ssa">idioma nilo-sariano</language>
			<language type="ta">tamil</language>
			<language type="tai">idioma tailândes</language>
			<language type="tet">tetum</language>
			<language type="tg">tajique</language>
			<language type="tl">tagalogue</language>
			<language type="to">tonga</language>
			<language type="tog">toganês</language>
			<language type="tup">idioma tupi</language>
			<language type="tut">idioma altaico</language>
			<language type="tyv">tuviniano</language>
			<language type="wak">idioma wakashan</language>
			<language type="wen">idioma sórbio</language>
			<language type="ypk">idioma iúpique</language>
			<language type="zh_Hans">chinês simplificado</language>
			<language type="zh_Hant">chinês tradicional</language>
			<language type="zza">zazaki</language>
		</languages>
		<scripts>
			<script type="Armn">arménio</script>
			<script type="Blis">símbolos Bliss</script>
			<script type="Brah">Brahmi</script>
			<script type="Cans">símbolos aborígenes canadianos</script>
			<script type="Cyrs">cirílico (eslavónico sacro antigo)</script>
			<script type="Egyd">egípcio demótico</script>
			<script type="Egyh">egípcio hierático</script>
			<script type="Geok">georgiano khutsuri</script>
			<script type="Inds">indus</script>
			<script type="Latf">latim (fraktur)</script>
			<script type="Lina">linear A</script>
			<script type="Linb">linear B</script>
			<script type="Mand">mandaeano</script>
			<script type="Mlym">malaialam</script>
			<script type="Nkoo">n’ko</script>
			<script type="Plrd">Pollard fonético</script>
			<script type="Sgnw">escrita gestual</script>
			<script type="Sylo">siloti nagri</script>
			<script type="Tale">tai le</script>
			<script type="Talu">tai lue moderno</script>
			<script type="Taml">tamil</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tenguar</script>
			<script type="Xsux">cuneiforme sumero-acadiano</script>
			<script type="Zxxx">não escrito</script>
			<script type="Zzzz">inválido ou desconhecido</script>
		</scripts>
		<territories>
			<territory type="009">Oceânia</territory>
			<territory type="015">Norte de África</territory>
			<territory type="017">África Interior</territory>
			<territory type="018">África Meridional</territory>
			<territory type="035">Sudeste Asiático</territory>
			<territory type="057">Micronésia</territory>
			<territory type="062">Ásia Sul-Central</territory>
			<territory type="151">Europa de Leste</territory>
			<territory type="154">Europa do Norte</territory>
			<territory type="172">172</territory>
			<territory type="AE">Emiratos Árabes Unidos</territory>
			<territory type="AI">Anguilha</territory>
			<territory type="AM">Arménia</territory>
			<territory type="AQ">Antárctica</territory>
			<territory type="AX">Ilhas Alanda</territory>
			<territory type="AZ">Azerbeijão</territory>
			<territory type="BD">Bangladeche</territory>
			<territory type="BF">Burkina-Faso</territory>
			<territory type="BH">Bareine</territory>
			<territory type="BJ">Benim</territory>
			<territory type="BS">Baamas</territory>
			<territory type="BY">Bielorrússia</territory>
			<territory type="CC">Ilhas Cocos</territory>
			<territory type="CD">República Democrática do Congo</territory>
			<territory type="CG">Congo-Brazzaville</territory>
			<territory type="CX">Ilha do Natal</territory>
			<territory type="CZ">República Checa</territory>
			<territory type="EE">Estónia</territory>
			<territory type="EG">Egipto</territory>
			<territory type="EH">Sara Ocidental</territory>
			<territory type="ER">Eritreia</territory>
			<territory type="FK">Ilhas Falkland ou Malvinas</territory>
			<territory type="FM">Estados Federados da Micronésia</territory>
			<territory type="FO">Ilhas Faroé</territory>
			<territory type="GL">Gronelândia</territory>
			<territory type="GW">Guiné-Bissau</territory>
			<territory type="HK">Hong Kong - Região Administrativa Especial da China</territory>
			<territory type="IR">Irão</territory>
			<territory type="KE">Quénia</territory>
			<territory type="KG">Quirguizistão</territory>
			<territory type="KN">Saint Kitts e Nevis</territory>
			<territory type="KP">Coreia do Norte</territory>
			<territory type="KR">Coreia do Sul</territory>
			<territory type="KW">Cuaite</territory>
			<territory type="KY">Ilhas Caimão</territory>
			<territory type="KZ">Cazaquistão</territory>
			<territory type="LA">Lao, República Popular Democrática</territory>
			<territory type="LV">Letónia</territory>
			<territory type="MC">Mónaco</territory>
			<territory type="MD">Moldávia, República da</territory>
			<territory type="MG">Madagáscar</territory>
			<territory type="MK">Macedónia, República da</territory>
			<territory type="MO">Macau - Região Administrativa Especial da China</territory>
			<territory type="MP">Ilhas Mariana do Norte</territory>
			<territory type="MS">Monserrate</territory>
			<territory type="MU">Maurícias</territory>
			<territory type="MW">Malaui</territory>
			<territory type="NC">Nova Caledónia</territory>
			<territory type="NF">Ilha Norfolque</territory>
			<territory type="NL">Países Baixos</territory>
			<territory type="PG">Papua Nova Guiné</territory>
			<territory type="PL">Polónia</territory>
			<territory type="PS">Território Palestiniano</territory>
			<territory type="QO">Oceânia Insular</territory>
			<territory type="QU">União Europeia</territory>
			<territory type="RO">Roménia</territory>
			<territory type="SC">Seicheles</territory>
			<territory type="SG">Singapura</territory>
			<territory type="SI">Eslovénia</territory>
			<territory type="SJ">Esvalbarda e Jan Mayen</territory>
			<territory type="SM">São Marino</territory>
			<territory type="TC">Ilhas Turcas e Caicos</territory>
			<territory type="TJ">Tajiquistão</territory>
			<territory type="TK">Toquelau</territory>
			<territory type="TM">Turquemenistão</territory>
			<territory type="TT">Trindade e Tobago</territory>
			<territory type="UM">Ilhas Minor Outlying (E.U.A)</territory>
			<territory type="UZ">Usbequistão</territory>
			<territory type="VC">The main pump fixing screws with the correct strength class</territory>
			<territory type="VI">Ilhas Virgin E.U.A.</territory>
			<territory type="VN">Vietname</territory>
			<territory type="YE">Iémen</territory>
			<territory type="ZW">Zimbabué</territory>
		</territories>
		<variants>
			<variant type="1901">Alemão Tradicional</variant>
			<variant type="1996">Alemão Moderno</variant>
			<variant type="AREVELA">arménio oriental</variant>
			<variant type="AREVMDA">arménio ocidental</variant>
			<variant type="BISKE">dialecto san giorgio/bila</variant>
			<variant type="BOONT">buntlingue</variant>
			<variant type="FONIPA">Alfabeto Fonético Internacional</variant>
			<variant type="FONUPA">Alfabeto Fonético Urálico</variant>
			<variant type="LIPAW">dialecto lipovaz de Resian</variant>
			<variant type="MONOTON">monotónico</variant>
			<variant type="NEDIS">dialecto natisone</variant>
			<variant type="NJIVA">dialecto gniva/njiva</variant>
			<variant type="OSOJS">dialecto oseacco/osojane</variant>
			<variant type="POLYTON">politónico</variant>
			<variant type="POSIX">Computador</variant>
			<variant type="REVISED">Revisão Ortográfica</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOUSE">Scouse</variant>
			<variant type="SOLBA">dialecto stolvizza/solbica</variant>
		</variants>
		<keys>
			<key type="collation">Ordem</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Ordem de Chinês Tradicional - Big5</type>
			<type type="direct" key="collation">Ordem Directa</type>
			<type type="gb2312han" key="collation">Ordem de Chinês Simplificado - GB2312</type>
			<type type="phonebook" key="collation">Ordem da Lista Telefónica</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="metric">Métrico</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters type="auxiliary">[á à ă â å ä ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ß ú ù ŭ û ü ū ÿ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d de MMMM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="yyMM">MM-yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Fev</month>
							<month type="3">Mar</month>
							<month type="4">Abr</month>
							<month type="5">Mai</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Ago</month>
							<month type="9">Set</month>
							<month type="10">Out</month>
							<month type="11">Nov</month>
							<month type="12">Dez</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Janeiro</month>
							<month type="2">Fevereiro</month>
							<month type="3">Março</month>
							<month type="4">Abril</month>
							<month type="5">Maio</month>
							<month type="6">Junho</month>
							<month type="7">Julho</month>
							<month type="8">Agosto</month>
							<month type="9">Setembro</month>
							<month type="10">Outubro</month>
							<month type="11">Novembro</month>
							<month type="12">Dezembro</month>
						</monthWidth>
					</monthContext>
				</months>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="wide">
							<quarter type="1">1.º trimestre</quarter>
							<quarter type="2">2.º trimestre</quarter>
							<quarter type="3">3.º trimestre</quarter>
							<quarter type="4">4.º trimestre</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>Antes do meio-dia</am>
				<pm>Depois do meio-dia</pm>
				<eras>
					<eraNames>
						<era type="0">a.C.</era>
						<era type="1">d.C.</era>
					</eraNames>
				</eras>
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH'H'mm'm'ss's' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">EEE, d 'de' MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d 'de' MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d 'de' MMM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="yyMM">MM-yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM/dd - E, MM/dd</greatestDifference>
							<greatestDifference id="d">E, MM/dd - E, MM/dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM/dd - MM/dd</greatestDifference>
							<greatestDifference id="d">MM/dd - MM/dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="day">
						<relative type="3">Em três dias</relative>
						<relative type="-2">Anteontem</relative>
						<relative type="-3">Trás-anteontem</relative>
					</field>
				</fields>
			</calendar>
			<calendar type="japanese">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumán</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuibá</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaina</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Baía</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St.John's</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Páscoa</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madrid</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Marrocos</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancun</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kaliningrado</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscovo</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sacalina</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Center</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Petersburgo</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Hora do Acre</standard>
					<daylight>Hora de Verão do Acre</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Hora do Afeganistão</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Hora da África Central</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Hora da África Oriental</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<long>
					<generic>Hora do Sara Ocidental</generic>
				</long>
				<short>
					<generic>Hora do Sara Ocidental</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Hora da África do Sul</generic>
					<standard>Hora Padrão da África do Sul</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>Hora da Nigéria</generic>
					<standard>Hora da África Ocidental</standard>
					<daylight>Hora de Verão da África Ocidental</daylight>
				</long>
				<short>
					<generic>Hora da Nigéria</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Hora de Aktyubinsk</standard>
					<daylight>Hora de Verão de Aktyubinsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Hora do Alaska</generic>
					<standard>Hora Padrão do Alaska</standard>
					<daylight>Hora de Verão do Alaska</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Hora do Alaska- Havai</generic>
					<standard>Hora Padrão do Alaska-Havai</standard>
					<daylight>Hora de Verão do Alaska-Havai</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Hora de Almaty</standard>
					<daylight>Hora de Verão de Almaty</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Hora do Amazonas</standard>
					<daylight>Hora de Verão do Amazonas</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Hora Central</generic>
					<standard>Hora Padrão Central</standard>
					<daylight>Hora de Verão Central</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Hora Oriental</generic>
					<standard>Hora Padrão Oriental</standard>
					<daylight>Hora de Verão Oriental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Hora da Montanha</generic>
					<standard>Hora Padrão da Montanha</standard>
					<daylight>Hora de Verão da Montanha</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Hora do Pacífico</generic>
					<standard>Hora Padrão do Pacífico</standard>
					<daylight>Hora de Verão do Pacífico</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Hora de Anadyr</standard>
					<daylight>Hora de Verão de Anadyr</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Hora de Aqtau</standard>
					<daylight>Hora de Verão de Aqtau</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Hora de Aqtobe</standard>
					<daylight>Hora de Verão de Aqtobe</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Hora da Arábia</generic>
					<standard>Hora Padrão da Arábia</standard>
					<daylight>Hora de Verão da Arábia</daylight>
				</long>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Hora da Argentina</standard>
					<daylight>Hora de Verão da Argentina</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Hora da Argentina Ocidental</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<generic>Hora da Arménia</generic>
					<standard>Hora da Arménia</standard>
					<daylight>Hora de Verão da Arménia</daylight>
				</long>
				<short>
					<generic>Hora da Arménia</generic>
					<standard>AMT (Arménia)</standard>
					<daylight>AMST (Arménia)</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<generic>Hora do Turquemenistão</generic>
					<standard>Hora de Ashkhabad</standard>
					<daylight>Hora de Verão de Ashkhabad</daylight>
				</long>
				<short>
					<generic>Hora do Turquemenistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Hora do Atlântico</generic>
					<standard>Hora Padrão do Atlântico</standard>
					<daylight>Hora de Verão do Atlântico</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Hora da Austrália Central</generic>
					<standard>Hora Padrão da Austrália Central</standard>
					<daylight>Hora de Verão da Austrália Central</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Hora da Austrália Central Ocidental</generic>
					<standard>Hora Padrão da Austrália Central Ocidental</standard>
					<daylight>Hora de Verão da Austrália Central Ocidental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Hora da Austrália Oriental</generic>
					<standard>Hora Padrão da Austrália Oriental</standard>
					<daylight>Hora de Verão da Austrália Oriental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Hora da Austrália Ocidental</generic>
					<standard>Hora Padrão da Austrália Ocidental</standard>
					<daylight>Hora de Verão da Austrália Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<generic>Hora do Azerbeijão</generic>
					<standard>Hora do Azerbeijão</standard>
					<daylight>Hora de Verão do Azerbeijão</daylight>
				</long>
				<short>
					<generic>Hora do Azerbeijão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Hora dos Açores</standard>
					<daylight>Hora de Verão dos Açores</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<long>
					<generic>Hora do Azerbeijão</generic>
					<standard>Hora de Baku</standard>
					<daylight>Hora de Verão de Baku</daylight>
				</long>
				<short>
					<generic>Hora do Azerbeijão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<generic>Hora do Bangladesh</generic>
					<standard>Hora do Bangladesh</standard>
				</long>
				<short>
					<generic>Hora do Bangladesh</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Hora de Bering</generic>
					<standard>Hora Padrão de Bering</standard>
					<daylight>Hora de Verão de Bring</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<generic>Hora do Botão</generic>
					<standard>Hora do Botão</standard>
				</long>
				<short>
					<generic>Hora do Botão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Hora da Bolívia</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Hora do Bornéu</standard>
					<daylight>Hora de Verão do Bornéu</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Hora de Brasília</standard>
					<daylight>Hora de Verão de Brasília</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="British">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<generic>Hora do Brunei</generic>
					<standard>Hora do Brunei Darussalam</standard>
				</long>
				<short>
					<generic>Hora do Brunei</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Hora de Cabo Verde</standard>
					<daylight>Hora de Verão de Cabo Verde</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>Hora de Chamarro</generic>
					<standard>Hora Padrão de Chamarro</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Hora de Changbai</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Hora Padrão de Chatham</standard>
					<daylight>Hora de Verão de Chatham</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Hora do Chile</standard>
					<daylight>Hora de Verão do Chile</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<generic>Hora da China</generic>
					<standard>Hora Padrão da China</standard>
					<daylight>Hora de Verão da China</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Hora de Choibalsan</standard>
					<daylight>Hora de Verão de Choibalsan</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Hora da Ilha de Natal</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Hora das Ilhas Cocos</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Hora da Colômbia</standard>
					<daylight>Hora de Verão da Colômbia</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<long>
					<generic>Hora das Ilhas Cook</generic>
					<standard>Hora das Ilhas Cook</standard>
					<daylight>Hora Intermédia de Verão das Ilhas Cook</daylight>
				</long>
				<short>
					<generic>Hora das Ilhas Cook</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Hora de Cuba</generic>
					<standard>Hora Padrão de Cuba</standard>
					<daylight>Hora de Verão de Cuba</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<long>
					<generic>Hora do Bangladesh</generic>
					<standard>Hora de Dacca</standard>
				</long>
				<short>
					<generic>Hora do Bangladesh</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Hora de Davis</standard>
				</long>
			</metazone>
			<metazone type="Dominican">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Hora de Dumont-d'Urville</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<generic>Hora do Tajiquistão</generic>
					<standard>Hora de Dushanbe</standard>
					<daylight>Hora de Verão de Dushanbe</daylight>
				</long>
				<short>
					<generic>Hora do Tajiquistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Hora da Guiana Holandesa</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<generic>Hora de Timor Leste</generic>
					<standard>Hora de Timor Leste</standard>
				</long>
				<short>
					<generic>Hora de Timor Leste</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Hora da Ilha de Páscoa</standard>
					<daylight>Hora de Verão da Ilha de Páscoa</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Hora do Equador</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Horário Padrão da Europa Central</standard>
					<daylight>Hora de Verão da Europa Central</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Hora da Europa Oriental</standard>
					<daylight>Hora de Verão da Europa Oriental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Hora da Europa Ocidental</standard>
					<daylight>Hora de Verão da Europa Ocidental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Hora das Ilhas Malvinas</standard>
					<daylight>Hora de Verão das Ilhas Malvinas</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<long>
					<generic>Hora das Ilhas Fiji</generic>
					<standard>Hora das Ilhas Fiji</standard>
					<daylight>Hora de Verão das Ilhas Fiji</daylight>
				</long>
				<short>
					<generic>Hora das Ilhas Fiji</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Hora da Guiana Francesa</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>Hora da Antártida e dos Territórios Franceses do Sul</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<long>
					<generic>Hora do Quirguizistão</generic>
					<standard>Hora de Frunze</standard>
					<daylight>Hora de Verão de Frunze</daylight>
				</long>
				<short>
					<generic>Hora do Quirguizistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Hora do Meridiano de Greenwich</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Hora de Galápagos</standard>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Hora de Gambier</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<generic>Hora da Geórgia</generic>
					<standard>Hora da Georgia</standard>
					<daylight>Hora de Verão da Georgia</daylight>
				</long>
				<short>
					<generic>Hora da Geórgia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Hora das Ilhas Gilbert</standard>
				</long>
			</metazone>
			<metazone type="Goose_Bay">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Hora da Gronelândia Central</standard>
					<daylight>Hora de Verão da Gronelândia Central</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Hora Padrão de Guam</standard>
				</long>
			</metazone>
			<metazone type="Gulf">
				<long>
					<standard>Hora Padrão do Golfo</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Hora Padrão do Havai</standard>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<generic>Hora de Hong Kong - Região Administrativa Especial da China</generic>
					<standard>Hora de Hong Kong</standard>
					<daylight>Hora de Verão de Hong Kong</daylight>
				</long>
				<short>
					<generic>Hora de Hong Kong - Região Administrativa Especial da China</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Hora de Hovd</standard>
					<daylight>Hora de Verão de Hovd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="India">
				<long>
					<generic>Hora da Índia</generic>
					<standard>Hora Padrão da Índia</standard>
				</long>
				<short>
					<generic>Hora da Índia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Hora do Oceano Índico</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<generic>Hora do Vietname</generic>
				</long>
				<short>
					<generic>Hora do Vietname</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Hora da Indonésia Central</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Hora da Indonésia Oriental</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Hora da Indonésia Ocidental</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<generic>Hora do Irão</generic>
					<standard>Hora Padrão do Irão</standard>
					<daylight>Hora de Verão do Irão</daylight>
				</long>
				<short>
					<generic>Hora do Irão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Irish">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Hora de Irkutsk</standard>
					<daylight>Hora de Verão de Irkutsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>Hora de Israel</generic>
					<standard>Hora Padrão de Israel</standard>
					<daylight>Hora de Verão de Israel</daylight>
				</long>
				<short>
					<generic>Hora de Israel</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Hora do Japão</generic>
					<standard>Hora Padrão do Japão</standard>
					<daylight>Hora de Verão do Japão</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Hora de Petropavlovsk-Kamchatski</standard>
					<daylight>Hora de Verão de Petropavlovsk-Kamchatski</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<long>
					<generic>Hora do Paquistão</generic>
					<standard>Hora de Carachi</standard>
				</long>
				<short>
					<generic>Hora do Paquistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Hora de Kashgar</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>Hora do Casaquistão do Leste</generic>
					<standard>Hora Padrão do Cazaquistão do Leste</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>Hora do Casaquistão do Oeste</generic>
					<standard>Hora Padrão do Casaquistão do Oeste</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Hora de Kizilorda</standard>
					<daylight>Hora de Verão de Kizilorda</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Hora da Coreia</generic>
					<standard>Hora Padrão da Coreia</standard>
					<daylight>Hora de Verão da Coreia</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Hora de Kosrae</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Hora de Krasnoyarsk</standard>
					<daylight>Hora de Verão de Krasnoyarsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Hora de Kuybyshev</standard>
					<daylight>Hora de Verão de Kuybyshev</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Hora de Kwajalein</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<generic>Hora do Quirguizistão</generic>
					<standard>Hora do Quirguizistão</standard>
				</long>
				<short>
					<generic>Hora do Quirguizistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<long>
					<generic>Hora do Sri Lanka</generic>
					<standard>Hora do Sri Lanka</standard>
				</long>
				<short>
					<generic>Hora do Sri Lanka</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Liberia">
				<long>
					<generic>Hora da Libéria</generic>
				</long>
				<short>
					<generic>Hora da Libéria</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Hora das Ilhas Line</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Hora de Long-Shu</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Hora de Lord Howe</generic>
					<standard>Hora Padrão de Lord Howe</standard>
					<daylight>Hora de Verão de Lord Howe</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<generic>Hora de Macau - Região Administrativa Especial da China</generic>
					<standard>Hora de Macau</standard>
					<daylight>Hora de Verão de Macau</daylight>
				</long>
				<short>
					<generic>Hora de Macau - Região Administrativa Especial da China</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Hora de Magadan</standard>
					<daylight>Hora de Verão de Magadan</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<long>
					<generic>Hora da Malásia</generic>
					<standard>Hora de Malaia</standard>
				</long>
				<short>
					<generic>Hora da Malásia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Hora da Malásia</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Hora das Ilhas Maldivas</standard>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Hora das Marquesas</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Hora das Ilhas Marshall</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Hora das Ilhas Maurícias</standard>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Hora de Mawson</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Hora de Ulan Bator</standard>
					<daylight>Hora de Verão de Ulan Bator</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Hora de Moscovo</generic>
					<standard>Hora Padrão de Moscovo</standard>
					<daylight>Hora de Verão de Moscovo</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<generic>Hora de Mianmar</generic>
				</long>
				<short>
					<generic>Hora de Mianmar</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Hora de Nauru</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<long>
					<generic>Hora do Nepal</generic>
					<standard>Hora do Nepal</standard>
				</long>
				<short>
					<generic>Hora do Nepal</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<generic>Hora da Nova Caledónia</generic>
					<standard>Hora da Nova Caledónia</standard>
					<daylight>Hora de Verão da Nova Caledónia</daylight>
				</long>
				<short>
					<generic>Hora da Nova Caledónia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Hora da Nova Zelândia</generic>
					<standard>Hora Padrão da Nova Zelândia</standard>
					<daylight>Hora de Verão da Nova Zelândia</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<standard>Horário Padrão da Terra Nova</standard>
					<daylight>Horário de Verão da Terra Nova</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<generic>Hora de Niue</generic>
					<standard>Hora de Niue</standard>
				</long>
				<short>
					<generic>Hora de Niue</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<generic>Hora da Ilha Norfolque</generic>
				</long>
				<short>
					<generic>Hora da Ilha Norfolque</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<generic>Hora das Ilhas Mariana do Norte</generic>
					<standard>Hora das Ilhas Mariana do Norte</standard>
				</long>
				<short>
					<generic>Hora das Ilhas Mariana do Norte</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Hora de Novosibirsk</standard>
					<daylight>Hora de Verão de Novosibirsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Hora de Omsk</standard>
					<daylight>Hora de Verão de Omsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Oral">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Hora do Paquistão</standard>
					<daylight>Hora de Verão do Paquistão</daylight>
				</long>
				<short>
					<generic>Hora do Paquistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<long>
					<generic>Hora de Palau</generic>
					<standard>Hora de Palau</standard>
				</long>
				<short>
					<generic>Hora de Palau</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<generic>Hora da Papua Nova Guiné</generic>
					<standard>Hora da Papua Nova Guiné</standard>
				</long>
				<short>
					<generic>Hora da Papua Nova Guiné</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<long>
					<generic>Hora das Filipinas</generic>
					<standard>Hora das Filipinas</standard>
					<daylight>Hora de Verão das Filipinas</daylight>
				</long>
				<short>
					<generic>Hora das Filipinas</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Hora das Ilhas Fénix</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<generic>Hora de Pitcairn</generic>
					<standard>Hora de Pitcairn</standard>
				</long>
				<short>
					<generic>Hora de Pitcairn</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Hora de Ponape</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Hora de Qyzylorda</standard>
					<daylight>Hora de Verão de Qyzylorda</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Hora das Ilhas de Reunião</standard>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Hora de Rothera</standard>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Hora de Sakhalin</standard>
					<daylight>Hora de Verão de Sakhalin</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Hora de Samara</standard>
					<daylight>Hora de Verão de Samara</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Hora de Samarkand</standard>
					<daylight>Hora de Verão de Samarkand</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<long>
					<generic>Hora da Samoa</generic>
					<standard>Hora Padrão da Samoa</standard>
				</long>
				<short>
					<generic>Hora da Samoa</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Hora das Ilhas Seicheles</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Hora de Shevchenko</standard>
					<daylight>Hora de Verão de Shevchenko</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<long>
					<generic>Hora de Singapura</generic>
					<standard>Hora Padrão de Singapura</standard>
				</long>
				<short>
					<generic>Hora de Singapura</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<long>
					<generic>Hora das Ilhas Salomão</generic>
				</long>
				<short>
					<generic>Hora das Ilhas Salomão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>Hora da Georgia do Sul</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Hora de Sverdlovsk</standard>
					<daylight>Hora de Verão de Sverdlovsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Hora de Syowa</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<generic>Hora da Polinésia Francesa</generic>
					<standard>Hora do Tahiti</standard>
				</long>
				<short>
					<generic>Hora da Polinésia Francesa</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<generic>Hora do Tajiquistão</generic>
					<standard>Hora do Tajiquistão</standard>
				</long>
				<short>
					<generic>Hora do Tajiquistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<generic>Hora de Tashkent</generic>
					<standard>Hora de Tashkent</standard>
					<daylight>Hora de Verão de Tashkent</daylight>
				</long>
				<short>
					<generic>Hora do Uzbequistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<generic>Hora da Geórgia</generic>
					<standard>Hora de Tbilisi</standard>
					<daylight>Hora de Verão de Tbilisi</daylight>
				</long>
				<short>
					<generic>Hora de Geórgia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<generic>Hora de Toquelau</generic>
					<standard>Hora de Toquelau</standard>
				</long>
				<short>
					<generic>Hora de Toquelau</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<long>
					<generic>Hora de Tonga</generic>
					<daylight>Hora de Verão de Tonga</daylight>
				</long>
				<short>
					<generic>Hora de Tonga</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Hora de Truk</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Hora da Turquia</standard>
					<daylight>Hora de Verão da Turquia</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<generic>Hora do Turquemenistão</generic>
					<standard>Hora do Turquemenistão</standard>
					<daylight>Hora de Verão do Turquemenistão</daylight>
				</long>
				<short>
					<generic>Hora do Turquemenistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<generic>Hora de Tuvalu</generic>
				</long>
				<short>
					<generic>Hora de Tuvalu</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Hora de Ural'sk</standard>
					<daylight>Hora de Verão de Ural'sk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Hora de Urumqi</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<generic>Hora do Uzbequistão</generic>
					<standard>Hora do Uzbequistão</standard>
					<daylight>Hora de Verão do Uzbequistão</daylight>
				</long>
				<short>
					<generic>Hora do Uzbequistão</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<generic>Hora de Vanuatu</generic>
					<standard>Hora de Vanuatu</standard>
				</long>
				<short>
					<generic>Hora de Vanuatu</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Hora de Vladivostok</standard>
					<daylight>Hora de Verão de Vladivostok</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Hora de Volvograd</standard>
					<daylight>Hora de Verão de Volgograd</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Hora de Vostok</standard>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Hora das Ilhas Wake</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<generic>Hora de Wallis e Futuna</generic>
					<standard>Hora de Wallis e Futuna</standard>
				</long>
				<short>
					<generic>Hora de Wallis e Futuna</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Hora de Yakutsk</standard>
					<daylight>Hora de Verão de Yakutsk</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Hora de Yekaterinburg</standard>
					<daylight>Hora de Verão de Yekaterinburg</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<generic>Hora da Arménia</generic>
					<standard>Hora de Yerevan</standard>
					<daylight>Hora de Verão de Yerevan</daylight>
				</long>
				<short>
					<generic>Hora da Arménia</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<group> </group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>Dirham dos Emirados Árabes Unidos</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afeghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afeghani</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Florim das Antilhas Holandesa</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Florim de Aruba</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Dinar da Bósnia-Herzegóvina</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Marco bósnio-herzegóvino conversível</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Franco belga (convertível)</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Rublo novo bielorusso (1994-1999)</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Libra de Chipre</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Coroa da República Checa</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidad de Valor Constante (UVC) do Equador</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dólar das Fiji</displayName>
			</currency>
			<currency type="GHC">
				<displayName>Cedi do Gana</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi da Gâmbia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franco da Guiné</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal da Guatemala</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Lempira das Honduras</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Dinar koweitiano</displayName>
			</currency>
			<currency type="KYD">
				<displayName>Dólar das Ilhas Caimão</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Dinar macedónio</displayName>
			</currency>
			<currency type="MLF">
				<displayName>Franco do Mali</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Cuacha do Malawi</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Peso Plata mexicano (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidad de Inversion (UDI) mexicana</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Córdoba nicaraguano</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Córdoba Ouro nicaraguano</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Zloti polaco</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Zloti polaco (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				<decimal>$</decimal>
				<group>,</group>
			</currency>
			<currency type="QAR">
				<displayName>Rial do Qatar</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Dólar de Singapura</displayName>
			</currency>
			<currency type="TZS">
				<displayName>Xelim de Tanzânia</displayName>
			</currency>
			<currency type="WST">
				<displayName>Tala de Samoa Ocidental</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Unidade Composta Europeia</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Unidade Monetária Europeia</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Unidade de Conta Europeia (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Unidade de Conta Europeia (XBD)</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Unidade da Moeda Europeia</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Moeda inválida ou desconhecida</displayName>
			</currency>
			<currency type="YUD">
				<displayName>Dinar forte jugoslavo</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Super Dinar jugoslavo</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Dinar conversível jugoslavo</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Dólar do Zimbabwe</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<nostr>não:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�L*NNLocale/Data/sr_RS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.8 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<territory type="RS"/>
	</identity>
	<alias source="sr_Cyrl_RS" path="//ldml"/>
</ldml>
PKpG[�`�X�XLocale/Data/eu.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.65 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="eu"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikaans</language>
			<language type="am">amharikera</language>
			<language type="ar">arabiera</language>
			<language type="as">assamera</language>
			<language type="az">azerbaijanera</language>
			<language type="be">bielorrusiera</language>
			<language type="bg">bulgariera</language>
			<language type="bh">biharrera</language>
			<language type="bn">bengalera</language>
			<language type="br">bretoiera</language>
			<language type="bs">bosniera</language>
			<language type="ca">katalana</language>
			<language type="cs">txekiera</language>
			<language type="cy">{0&gt;welsh&lt;}100{&gt;galesera &lt;0}</language>
			<language type="da">daniera</language>
			<language type="de">alemanera</language>
			<language type="el">greziera</language>
			<language type="en">ingelera</language>
			<language type="en_AU">ingelesa (australia)</language>
			<language type="en_GB">ingelesa (erresuma batua)</language>
			<language type="en_US">ingelesa (aeb)</language>
			<language type="eo">esperantoa</language>
			<language type="es">espainiera</language>
			<language type="et">estoniera</language>
			<language type="eu">euskara</language>
			<language type="fa">pertsiera</language>
			<language type="fi">finlandiera</language>
			<language type="fil">tagalo</language>
			<language type="fo">faroera</language>
			<language type="fr">frantsesera</language>
			<language type="fy">frisiarra</language>
			<language type="ga">gaelikoa</language>
			<language type="gd">eskoziar gaelikoa</language>
			<language type="gl">galegoa</language>
			<language type="gn">guaraniera</language>
			<language type="gu">gujaratera</language>
			<language type="he">hebreera</language>
			<language type="hi">hindia</language>
			<language type="hr">kroaziera</language>
			<language type="hu">hungariera</language>
			<language type="hy">armeniera</language>
			<language type="ia">interlingua</language>
			<language type="id">indonesiera</language>
			<language type="ie">interlingue</language>
			<language type="is">islandiera</language>
			<language type="it">italiera</language>
			<language type="ja">japoniera</language>
			<language type="jv">javera</language>
			<language type="ka">georgiera</language>
			<language type="km">khemerera</language>
			<language type="kn">kannada</language>
			<language type="ko">koreera</language>
			<language type="ku">kurduera</language>
			<language type="ky">kirgizera</language>
			<language type="la">latina</language>
			<language type="ln">lingala</language>
			<language type="lo">laosera</language>
			<language type="lt">lituaniera</language>
			<language type="lv">letoniera</language>
			<language type="mk">mazedoniera</language>
			<language type="ml">malayalamera</language>
			<language type="mn">mongoliera</language>
			<language type="mr">marathera</language>
			<language type="ms">malaysiera</language>
			<language type="mt">maltera</language>
			<language type="ne">nepalera</language>
			<language type="nl">nederlandera</language>
			<language type="nn">norvegiera (nynorsk)</language>
			<language type="no">norvegiera</language>
			<language type="oc">okzitaniera</language>
			<language type="or">oriya</language>
			<language type="pa">punjabera</language>
			<language type="pl">poloniera</language>
			<language type="ps">paxtuera</language>
			<language type="pt">portugalera</language>
			<language type="pt_BR">portugesa (brasil)</language>
			<language type="pt_PT">portugesa (portugal)</language>
			<language type="ro">errumaniera</language>
			<language type="ru">errusiera</language>
			<language type="sa">sanskritoa</language>
			<language type="sd">sindhia</language>
			<language type="sh">serbokroaziera</language>
			<language type="si">sinhala</language>
			<language type="sk">eslovakiera</language>
			<language type="sl">esloveniera</language>
			<language type="so">somaliera</language>
			<language type="sq">albaniera</language>
			<language type="sr">serbiera</language>
			<language type="st">sesothoera</language>
			<language type="su">sundanera</language>
			<language type="sv">suediera</language>
			<language type="sw">swahili</language>
			<language type="ta">tamilera</language>
			<language type="te">telugua</language>
			<language type="th">thailandiera</language>
			<language type="ti">tigrinya</language>
			<language type="tk">turkmeniera</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingonera</language>
			<language type="tr">turkiera</language>
			<language type="tw">twia</language>
			<language type="ug">uigurrera</language>
			<language type="uk">ukrainera</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekera</language>
			<language type="vi">vietnamera</language>
			<language type="xh">xhosa</language>
			<language type="yi">yiddishera</language>
			<language type="zh">txinera</language>
			<language type="zh_Hans">txinera (soildua)</language>
			<language type="zh_Hant">txinera (tradizionala)</language>
			<language type="zu">zuluera</language>
		</languages>
		<territories>
			<territory type="AE">Arabiar Emirrerri Batuak</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua eta Barbuda</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Nederlandar Antillak</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antartika</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Estatubatuarra</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AX">Aland Uharteak</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia-Herzegovina</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgika</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BO">Bolibia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamak</territory>
			<territory type="BT">Bh2utan</territory>
			<territory type="BV">Bouvet Uhartea</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorrusia</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Cocos uharteak</territory>
			<territory type="CD">Kongoko Errepublika Demokratikoa</territory>
			<territory type="CF">Afrika Erdiko Errepublika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Suitza</territory>
			<territory type="CI">Boli Kosta</territory>
			<territory type="CK">Cook uharteak</territory>
			<territory type="CL">Txile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Txina</territory>
			<territory type="CO">Kolonbia</territory>
			<territory type="CS">Serbia eta Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Cabo Verde</territory>
			<territory type="CX">Christmas uhartea</territory>
			<territory type="CY">Zipre</territory>
			<territory type="CZ">Txekiar errepublika</territory>
			<territory type="DE">Alemania</territory>
			<territory type="DJ">Djibuti</territory>
			<territory type="DK">Danimarka</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikar Errepublika</territory>
			<territory type="DZ">Aljeria</territory>
			<territory type="EC">Ekuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egipto</territory>
			<territory type="EH">Mendebaldeko Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Espainia</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FK">Malvinak</territory>
			<territory type="FM">Mikronesia</territory>
			<territory type="FO">Faroe Uharteak</territory>
			<territory type="FR">Frantzia</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Erresuma Batua</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guyana Frantsesa</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GL">Groenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Ginea</territory>
			<territory type="GQ">Ekuatore Ginea</territory>
			<territory type="GR">Grezia</territory>
			<territory type="GS">Hegoaldeko Georgia eta Hegoaldeko Sandwich uharteak</territory>
			<territory type="GW">Ginea-Bissau</territory>
			<territory type="HM">Heard eta McDonald Uharteak</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroazia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungaria</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Man uhartea</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Indiako Ozeanoko Britainiar Lurraldea</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islandia</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordania</territory>
			<territory type="JP">Japonia</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgizistan</territory>
			<territory type="KH">Kanbodia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoreak</territory>
			<territory type="KN">Saint Kitts eta Nevis</territory>
			<territory type="KP">Ipar Korea</territory>
			<territory type="KR">Hego Korea</territory>
			<territory type="KY">Kaiman Uharteak</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libano</territory>
			<territory type="LC">Santa Luzia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LU">Luxenburgo</territory>
			<territory type="LV">Letonia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshall uharteak</territory>
			<territory type="MK">Mazedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Birmania</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macau</territory>
			<territory type="MP">Iparraldeko Mariana uharteak</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MU">Maurizio</territory>
			<territory type="MV">Maldivak</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexiko</territory>
			<territory type="MY">Malasia</territory>
			<territory type="MZ">Mozambike</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Kaledonia Berria</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk uhartea</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Herbehereak</territory>
			<territory type="NO">Norvegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NZ">Zeelanda Berria</territory>
			<territory type="OM">Oman</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polinesia Frantsesa</territory>
			<territory type="PG">Papua Ginea Berria</territory>
			<territory type="PH">Filipinak</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PM">Saint-Pierre eta Mikelune</territory>
			<territory type="PS">Palestina</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PY">Paraguai</territory>
			<territory type="QA">Katar</territory>
			<territory type="RO">Errumania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Errusia</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudi Arabia</territory>
			<territory type="SB">Salomon uharteak</territory>
			<territory type="SC">Seychelleak</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Suedia</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Eslovenia</territory>
			<territory type="SJ">Svalbard eta Jan Mayen uharteak</territory>
			<territory type="SK">Eslovakia</territory>
			<territory type="SL">Sierra Leona</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tomé eta Principe</territory>
			<territory type="SY">Siria</territory>
			<territory type="SZ">Swazilandia</territory>
			<territory type="TC">Turk eta Caico uharteak</territory>
			<territory type="TD">Txad</territory>
			<territory type="TF">Frantziaren Lurralde Australak</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailandia</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Ekialdeko Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkia</territory>
			<territory type="TT">Trinidad eta Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Estatu Batuetatik urruti dauden uharte txikiak</territory>
			<territory type="US">Ameriketako Estatu Batuak</territory>
			<territory type="UY">Uruguai</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikano</territory>
			<territory type="VC">Saint Vincent eta Grenadinak</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Virginia uharteak (Erresuma Batua)</territory>
			<territory type="VI">Virginia uharteak (Ameriketako Estatu Batuak)</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis eta Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="ZA">Hegoafrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d-n ñ o-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">urt</month>
							<month type="2">ots</month>
							<month type="3">mar</month>
							<month type="4">api</month>
							<month type="5">mai</month>
							<month type="6">eka</month>
							<month type="7">uzt</month>
							<month type="8">abu</month>
							<month type="9">ira</month>
							<month type="10">urr</month>
							<month type="11">aza</month>
							<month type="12">abe</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">urtarrila</month>
							<month type="2">otsaila</month>
							<month type="3">martxoa</month>
							<month type="4">apirila</month>
							<month type="5">maiatza</month>
							<month type="6">ekaina</month>
							<month type="7">uztaila</month>
							<month type="8">abuztua</month>
							<month type="9">iraila</month>
							<month type="10">urria</month>
							<month type="11">azaroa</month>
							<month type="12">abendua</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ig</day>
							<day type="mon">al</day>
							<day type="tue">as</day>
							<day type="wed">az</day>
							<day type="thu">og</day>
							<day type="fri">or</day>
							<day type="sat">lr</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">igandea</day>
							<day type="mon">astelehena</day>
							<day type="tue">asteartea</day>
							<day type="wed">asteazkena</day>
							<day type="thu">osteguna</day>
							<day type="fri">ostirala</day>
							<day type="sat">larunbata</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Hh1</quarter>
							<quarter type="2">Hh2</quarter>
							<quarter type="3">Hh3</quarter>
							<quarter type="4">Hh4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. hiruhilekoa</quarter>
							<quarter type="2">2. hiruhilekoa</quarter>
							<quarter type="3">3. hiruhilekoa</quarter>
							<quarter type="4">4. hiruhilekoa</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy'eko' MMMM'ren' dd'a'</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy'eko' MMM'ren' dd'a'</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MMM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudak</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cabo Verde</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Djibuti</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madril</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxenburgo</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinika</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Maurizio</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivak</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ESP">
				<pattern>¤ #,##0;-¤ #,##0</pattern>
				<symbol>₧</symbol>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[r'���Locale/Data/uz_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<script type="Latn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">arabcha</language>
			<language type="de">olmoncha</language>
			<language type="en">inglizcha</language>
			<language type="es">ispancha</language>
			<language type="fr">fransuzcha</language>
			<language type="hi">hindcha</language>
			<language type="it">italyancha</language>
			<language type="ja">yaponcha</language>
			<language type="pt">portugalcha</language>
			<language type="ru">ruscha</language>
			<language type="uz">o'zbekcha</language>
			<language type="zh">xitoycha</language>
		</languages>
		<scripts>
			<script type="Cyrl">Kiril</script>
			<script type="Latn">Lotin</script>
		</scripts>
		<territories>
			<territory type="AF">Afgʿoniston</territory>
			<territory type="BR">Braziliya</territory>
			<territory type="CN">Xitoy</territory>
			<territory type="DE">Olmoniya</territory>
			<territory type="FR">Fransiya</territory>
			<territory type="GB">Birlashgan Qirollik</territory>
			<territory type="IN">Hindiston</territory>
			<territory type="IT">Italiya</territory>
			<territory type="JP">Yaponiya</territory>
			<territory type="RU">Rossiya</territory>
			<territory type="US">Qo'shma Shtatlar</territory>
			<territory type="UZ">Oʿzbekiston</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-v x-z ʿ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Yanv</month>
							<month type="2">Fev</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">May</month>
							<month type="6">Iyun</month>
							<month type="7">Iyul</month>
							<month type="8">Avg</month>
							<month type="9">Sen</month>
							<month type="10">Okt</month>
							<month type="11">Noya</month>
							<month type="12">Dek</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Muharram</month>
							<month type="2">Safar</month>
							<month type="3">Rabiul-avval</month>
							<month type="4">Rabiul-oxir</month>
							<month type="5">Jumodiul-ulo</month>
							<month type="6">Jumodiul-uxro</month>
							<month type="7">Rajab</month>
							<month type="8">Shaʿbon</month>
							<month type="9">Ramazon</month>
							<month type="10">Shavvol</month>
							<month type="11">Zil-qaʿda</month>
							<month type="12">Zil-hijja</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">Y</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">I</month>
							<month type="7">I</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Yanvar</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Yaksh</day>
							<day type="mon">Dush</day>
							<day type="tue">Sesh</day>
							<day type="wed">Chor</day>
							<day type="thu">Pay</day>
							<day type="fri">Jum</day>
							<day type="sat">Shan</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">yakshanba</day>
							<day type="mon">dushanba</day>
							<day type="tue">seshanba</day>
							<day type="wed">chorshanba</day>
							<day type="thu">payshanba</day>
							<day type="fri">juma</day>
							<day type="sat">shanba</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Y</day>
							<day type="mon">D</day>
							<day type="tue">S</day>
							<day type="wed">C</day>
							<day type="thu">P</day>
							<day type="fri">J</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="BRL">
				<displayName>Brazil reali</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Xitoy yuani</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Evro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Ingliz funt sterlingi</displayName>
			</currency>
			<currency type="INR">
				<displayName>Hind rupiyasi</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yapon yenasi</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rus rubli</displayName>
			</currency>
			<currency type="USD">
				<displayName>AQSH dollari</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Oʿzbekiston soʿm</displayName>
				<symbol>soʿm</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�A/)::Locale/Data/sr_Cyrl_ME.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.7 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
		<territory type="ME"/>
	</identity>
</ldml>
PKpG[�lf��H�HLocale/Data/en.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.197 $"/>
		<generation date="$Date: 2008/07/09 17:41:17 $"/>
		<language type="en"/>
	</identity>
	<fallback/>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abkhazian</language>
			<language type="ace">Achinese</language>
			<language type="ach">Acoli</language>
			<language type="ada">Adangme</language>
			<language type="ady">Adyghe</language>
			<language type="ae">Avestan</language>
			<language type="af">Afrikaans</language>
			<language type="afa">Afro-Asiatic Language</language>
			<language type="afh">Afrihili</language>
			<language type="ain">Ainu</language>
			<language type="ak">Akan</language>
			<language type="akk">Akkadian</language>
			<language type="ale">Aleut</language>
			<language type="alg">Algonquian Language</language>
			<language type="alt">Southern Altai</language>
			<language type="am">Amharic</language>
			<language type="an">Aragonese</language>
			<language type="ang">Old English</language>
			<language type="anp">Angika</language>
			<language type="apa">Apache Language</language>
			<language type="ar">Arabic</language>
			<language type="arc">Aramaic</language>
			<language type="arn">Araucanian</language>
			<language type="arp">Arapaho</language>
			<language type="art">Artificial Language</language>
			<language type="arw">Arawak</language>
			<language type="as">Assamese</language>
			<language type="ast">Asturian</language>
			<language type="ath">Athapascan Language</language>
			<language type="aus">Australian Language</language>
			<language type="av">Avaric</language>
			<language type="awa">Awadhi</language>
			<language type="ay">Aymara</language>
			<language type="az">Azerbaijani</language>
			<language type="ba">Bashkir</language>
			<language type="bad">Banda</language>
			<language type="bai">Bamileke Language</language>
			<language type="bal">Baluchi</language>
			<language type="ban">Balinese</language>
			<language type="bas">Basa</language>
			<language type="bat">Baltic Language</language>
			<language type="be">Belarusian</language>
			<language type="bej">Beja</language>
			<language type="bem">Bemba</language>
			<language type="ber">Berber</language>
			<language type="bg">Bulgarian</language>
			<language type="bh">Bihari</language>
			<language type="bho">Bhojpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol</language>
			<language type="bin">Bini</language>
			<language type="bla">Siksika</language>
			<language type="bm">Bambara</language>
			<language type="bn">Bengali</language>
			<language type="bnt">Bantu</language>
			<language type="bo">Tibetan</language>
			<language type="br">Breton</language>
			<language type="bra">Braj</language>
			<language type="bs">Bosnian</language>
			<language type="btk">Batak</language>
			<language type="bua">Buriat</language>
			<language type="bug">Buginese</language>
			<language type="byn">Blin</language>
			<language type="ca">Catalan</language>
			<language type="cad">Caddo</language>
			<language type="cai">Central American Indian Language</language>
			<language type="car">Carib</language>
			<language type="cau">Caucasian Language</language>
			<language type="cch">Atsam</language>
			<language type="ce">Chechen</language>
			<language type="ceb">Cebuano</language>
			<language type="cel">Celtic Language</language>
			<language type="ch">Chamorro</language>
			<language type="chb">Chibcha</language>
			<language type="chg">Chagatai</language>
			<language type="chk">Chuukese</language>
			<language type="chm">Mari</language>
			<language type="chn">Chinook Jargon</language>
			<language type="cho">Choctaw</language>
			<language type="chp">Chipewyan</language>
			<language type="chr">Cherokee</language>
			<language type="chy">Cheyenne</language>
			<language type="cmc">Chamic Language</language>
			<language type="co">Corsican</language>
			<language type="cop">Coptic</language>
			<language type="cpe">English-based Creole or Pidgin</language>
			<language type="cpf">French-based Creole or Pidgin</language>
			<language type="cpp">Portuguese-based Creole or Pidgin</language>
			<language type="cr">Cree</language>
			<language type="crh">Crimean Turkish</language>
			<language type="crp">Creole or Pidgin</language>
			<language type="cs">Czech</language>
			<language type="csb">Kashubian</language>
			<language type="cu">Church Slavic</language>
			<language type="cus">Cushitic Language</language>
			<language type="cv">Chuvash</language>
			<language type="cy">Welsh</language>
			<language type="da">Danish</language>
			<language type="dak">Dakota</language>
			<language type="dar">Dargwa</language>
			<language type="day">Dayak</language>
			<language type="de">German</language>
			<language type="de_AT">Austrian German</language>
			<language type="de_CH">Swiss High German</language>
			<language type="del">Delaware</language>
			<language type="den">Slave</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka</language>
			<language type="doi">Dogri</language>
			<language type="dra">Dravidian Language</language>
			<language type="dsb">Lower Sorbian</language>
			<language type="dua">Duala</language>
			<language type="dum">Middle Dutch</language>
			<language type="dv">Divehi</language>
			<language type="dyu">Dyula</language>
			<language type="dz">Dzongkha</language>
			<language type="ee">Ewe</language>
			<language type="efi">Efik</language>
			<language type="egy">Ancient Egyptian</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Greek</language>
			<language type="elx">Elamite</language>
			<language type="en">English</language>
			<language type="en_AU">Australian English</language>
			<language type="en_CA">Canadian English</language>
			<language type="en_GB">British English</language>
			<language type="en_US">U.S. English</language>
			<language type="enm">Middle English</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanish</language>
			<language type="es_419">Latin American Spanish</language>
			<language type="es_ES">Iberian Spanish</language>
			<language type="et">Estonian</language>
			<language type="eu">Basque</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Persian</language>
			<language type="fan">Fang</language>
			<language type="fat">Fanti</language>
			<language type="ff">Fulah</language>
			<language type="fi">Finnish</language>
			<language type="fil">Filipino</language>
			<language type="fiu">Finno-Ugrian Language</language>
			<language type="fj">Fijian</language>
			<language type="fo">Faroese</language>
			<language type="fon">Fon</language>
			<language type="fr">French</language>
			<language type="fr_CA">Canadian French</language>
			<language type="fr_CH">Swiss French</language>
			<language type="frm">Middle French</language>
			<language type="fro">Old French</language>
			<language type="frr">Northern Frisian</language>
			<language type="frs">Eastern Frisian</language>
			<language type="fur">Friulian</language>
			<language type="fy">Western Frisian</language>
			<language type="ga">Irish</language>
			<language type="gaa">Ga</language>
			<language type="gay">Gayo</language>
			<language type="gba">Gbaya</language>
			<language type="gd">Scottish Gaelic</language>
			<language type="gem">Germanic Language</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbertese</language>
			<language type="gl">Galician</language>
			<language type="gmh">Middle High German</language>
			<language type="gn">Guarani</language>
			<language type="goh">Old High German</language>
			<language type="gon">Gondi</language>
			<language type="gor">Gorontalo</language>
			<language type="got">Gothic</language>
			<language type="grb">Grebo</language>
			<language type="grc">Ancient Greek</language>
			<language type="gsw">Swiss German</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manx</language>
			<language type="gwi">Gwichʼin</language>
			<language type="ha">Hausa</language>
			<language type="hai">Haida</language>
			<language type="haw">Hawaiian</language>
			<language type="he">Hebrew</language>
			<language type="hi">Hindi</language>
			<language type="hil">Hiligaynon</language>
			<language type="him">Himachali</language>
			<language type="hit">Hittite</language>
			<language type="hmn">Hmong</language>
			<language type="ho">Hiri Motu</language>
			<language type="hr">Croatian</language>
			<language type="hsb">Upper Sorbian</language>
			<language type="ht">Haitian</language>
			<language type="hu">Hungarian</language>
			<language type="hup">Hupa</language>
			<language type="hy">Armenian</language>
			<language type="hz">Herero</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Indonesian</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Ijo</language>
			<language type="ik">Inupiaq</language>
			<language type="ilo">Iloko</language>
			<language type="inc">Indic Language</language>
			<language type="ine">Indo-European Language</language>
			<language type="inh">Ingush</language>
			<language type="io">Ido</language>
			<language type="ira">Iranian Language</language>
			<language type="iro">Iroquoian Language</language>
			<language type="is">Icelandic</language>
			<language type="it">Italian</language>
			<language type="iu">Inuktitut</language>
			<language type="ja">Japanese</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Judeo-Persian</language>
			<language type="jrb">Judeo-Arabic</language>
			<language type="jv">Javanese</language>
			<language type="ka">Georgian</language>
			<language type="kaa">Kara-Kalpak</language>
			<language type="kab">Kabyle</language>
			<language type="kac">Kachin</language>
			<language type="kaj">Jju</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karen</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardian</language>
			<language type="kcg">Tyap</language>
			<language type="kfo">Koro</language>
			<language type="kg">Kongo</language>
			<language type="kha">Khasi</language>
			<language type="khi">Khoisan Language</language>
			<language type="kho">Khotanese</language>
			<language type="ki">Kikuyu</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">Kazakh</language>
			<language type="kl">Kalaallisut</language>
			<language type="km">Khmer</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korean</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosraean</language>
			<language type="kpe">Kpelle</language>
			<language type="kr">Kanuri</language>
			<language type="krc">Karachay-Balkar</language>
			<language type="krl">Karelian</language>
			<language type="kro">Kru</language>
			<language type="kru">Kurukh</language>
			<language type="ks">Kashmiri</language>
			<language type="ku">Kurdish</language>
			<language type="kum">Kumyk</language>
			<language type="kut">Kutenai</language>
			<language type="kv">Komi</language>
			<language type="kw">Cornish</language>
			<language type="ky">Kirghiz</language>
			<language type="la">Latin</language>
			<language type="lad">Ladino</language>
			<language type="lah">Lahnda</language>
			<language type="lam">Lamba</language>
			<language type="lb">Luxembourgish</language>
			<language type="lez">Lezghian</language>
			<language type="lg">Ganda</language>
			<language type="li">Limburgish</language>
			<language type="ln">Lingala</language>
			<language type="lo">Lao</language>
			<language type="lol">Mongo</language>
			<language type="loz">Lozi</language>
			<language type="lt">Lithuanian</language>
			<language type="lu">Luba-Katanga</language>
			<language type="lua">Luba-Lulua</language>
			<language type="lui">Luiseno</language>
			<language type="lun">Lunda</language>
			<language type="luo">Luo</language>
			<language type="lus">Lushai</language>
			<language type="lv">Latvian</language>
			<language type="mad">Madurese</language>
			<language type="mag">Magahi</language>
			<language type="mai">Maithili</language>
			<language type="mak">Makasar</language>
			<language type="man">Mandingo</language>
			<language type="map">Austronesian</language>
			<language type="mas">Masai</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandar</language>
			<language type="men">Mende</language>
			<language type="mg">Malagasy</language>
			<language type="mga">Middle Irish</language>
			<language type="mh">Marshallese</language>
			<language type="mi">Maori</language>
			<language type="mic">Micmac</language>
			<language type="min">Minangkabau</language>
			<language type="mis">Miscellaneous Language</language>
			<language type="mk">Macedonian</language>
			<language type="mkh">Mon-Khmer Language</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongolian</language>
			<language type="mnc">Manchu</language>
			<language type="mni">Manipuri</language>
			<language type="mno">Manobo Language</language>
			<language type="mo">Moldavian</language>
			<language type="moh">Mohawk</language>
			<language type="mos">Mossi</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malay</language>
			<language type="mt">Maltese</language>
			<language type="mul">Multiple Languages</language>
			<language type="mun">Munda Language</language>
			<language type="mus">Creek</language>
			<language type="mwl">Mirandese</language>
			<language type="mwr">Marwari</language>
			<language type="my">Burmese</language>
			<language type="myn">Mayan Language</language>
			<language type="myv">Erzya</language>
			<language type="na">Nauru</language>
			<language type="nah">Nahuatl</language>
			<language type="nai">North American Indian Language</language>
			<language type="nap">Neapolitan</language>
			<language type="nb">Norwegian Bokmål</language>
			<language type="nd">North Ndebele</language>
			<language type="nds">Low German</language>
			<language type="ne">Nepali</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nias</language>
			<language type="nic">Niger-Kordofanian Language</language>
			<language type="niu">Niuean</language>
			<language type="nl">Dutch</language>
			<language type="nl_BE">Flemish</language>
			<language type="nn">Norwegian Nynorsk</language>
			<language type="no">Norwegian</language>
			<language type="nog">Nogai</language>
			<language type="non">Old Norse</language>
			<language type="nqo">N’Ko</language>
			<language type="nr">South Ndebele</language>
			<language type="nso">Northern Sotho</language>
			<language type="nub">Nubian Language</language>
			<language type="nv">Navajo</language>
			<language type="nwc">Classical Newari</language>
			<language type="ny">Nyanja</language>
			<language type="nym">Nyamwezi</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Nyoro</language>
			<language type="nzi">Nzima</language>
			<language type="oc">Occitan</language>
			<language type="oj">Ojibwa</language>
			<language type="om">Oromo</language>
			<language type="or">Oriya</language>
			<language type="os">Ossetic</language>
			<language type="osa">Osage</language>
			<language type="ota">Ottoman Turkish</language>
			<language type="oto">Otomian Language</language>
			<language type="pa">Punjabi</language>
			<language type="paa">Papuan Language</language>
			<language type="pag">Pangasinan</language>
			<language type="pal">Pahlavi</language>
			<language type="pam">Pampanga</language>
			<language type="pap">Papiamento</language>
			<language type="pau">Palauan</language>
			<language type="peo">Old Persian</language>
			<language type="phi">Philippine Language</language>
			<language type="phn">Phoenician</language>
			<language type="pi">Pali</language>
			<language type="pl">Polish</language>
			<language type="pon">Pohnpeian</language>
			<language type="pra">Prakrit Language</language>
			<language type="pro">Old Provençal</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portuguese</language>
			<language type="pt_BR">Brazilian Portuguese</language>
			<language type="pt_PT">Iberian Portuguese</language>
			<language type="qu">Quechua</language>
			<language type="raj">Rajasthani</language>
			<language type="rap">Rapanui</language>
			<language type="rar">Rarotongan</language>
			<language type="rm">Rhaeto-Romance</language>
			<language type="rn">Rundi</language>
			<language type="ro">Romanian</language>
			<language type="roa">Romance Language</language>
			<language type="rom">Romany</language>
			<language type="root">Root</language>
			<language type="ru">Russian</language>
			<language type="rup">Aromanian</language>
			<language type="rw">Kinyarwanda</language>
			<language type="sa">Sanskrit</language>
			<language type="sad">Sandawe</language>
			<language type="sah">Yakut</language>
			<language type="sai">South American Indian Language</language>
			<language type="sal">Salishan Language</language>
			<language type="sam">Samaritan Aramaic</language>
			<language type="sas">Sasak</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardinian</language>
			<language type="scn">Sicilian</language>
			<language type="sco">Scots</language>
			<language type="sd">Sindhi</language>
			<language type="se">Northern Sami</language>
			<language type="sel">Selkup</language>
			<language type="sem">Semitic Language</language>
			<language type="sg">Sango</language>
			<language type="sga">Old Irish</language>
			<language type="sgn">Sign Language</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="shn">Shan</language>
			<language type="si">Sinhala</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Siouan Language</language>
			<language type="sit">Sino-Tibetan Language</language>
			<language type="sk">Slovak</language>
			<language type="sl">Slovenian</language>
			<language type="sla">Slavic Language</language>
			<language type="sm">Samoan</language>
			<language type="sma">Southern Sami</language>
			<language type="smi">Sami Language</language>
			<language type="smj">Lule Sami</language>
			<language type="smn">Inari Sami</language>
			<language type="sms">Skolt Sami</language>
			<language type="sn">Shona</language>
			<language type="snk">Soninke</language>
			<language type="so">Somali</language>
			<language type="sog">Sogdien</language>
			<language type="son">Songhai</language>
			<language type="sq">Albanian</language>
			<language type="sr">Serbian</language>
			<language type="srn">Sranan Tongo</language>
			<language type="srr">Serer</language>
			<language type="ss">Swati</language>
			<language type="ssa">Nilo-Saharan Language</language>
			<language type="st">Southern Sotho</language>
			<language type="su">Sundanese</language>
			<language type="suk">Sukuma</language>
			<language type="sus">Susu</language>
			<language type="sux">Sumerian</language>
			<language type="sv">Swedish</language>
			<language type="sw">Swahili</language>
			<language type="syc">Classical Syriac</language>
			<language type="syr">Syriac</language>
			<language type="ta">Tamil</language>
			<language type="tai">Tai Language</language>
			<language type="te">Telugu</language>
			<language type="tem">Timne</language>
			<language type="ter">Tereno</language>
			<language type="tet">Tetum</language>
			<language type="tg">Tajik</language>
			<language type="th">Thai</language>
			<language type="ti">Tigrinya</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv</language>
			<language type="tk">Turkmen</language>
			<language type="tkl">Tokelau</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tli">Tlingit</language>
			<language type="tmh">Tamashek</language>
			<language type="tn">Tswana</language>
			<language type="to">Tonga</language>
			<language type="tog">Nyasa Tonga</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">Turkish</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Tsimshian</language>
			<language type="tt">Tatar</language>
			<language type="tum">Tumbuka</language>
			<language type="tup">Tupi Language</language>
			<language type="tut">Altaic Language</language>
			<language type="tvl">Tuvalu</language>
			<language type="tw">Twi</language>
			<language type="ty">Tahitian</language>
			<language type="tyv">Tuvinian</language>
			<language type="udm">Udmurt</language>
			<language type="ug">Uighur</language>
			<language type="uga">Ugaritic</language>
			<language type="uk">Ukrainian</language>
			<language type="umb">Umbundu</language>
			<language type="und">Unknown or Invalid Language</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbek</language>
			<language type="vai">Vai</language>
			<language type="ve">Venda</language>
			<language type="vi">Vietnamese</language>
			<language type="vo">Volapük</language>
			<language type="vot">Votic</language>
			<language type="wa">Walloon</language>
			<language type="wak">Wakashan Language</language>
			<language type="wal">Walamo</language>
			<language type="war">Waray</language>
			<language type="was">Washo</language>
			<language type="wen">Sorbian Language</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmyk</language>
			<language type="xh">Xhosa</language>
			<language type="yao">Yao</language>
			<language type="yap">Yapese</language>
			<language type="yi">Yiddish</language>
			<language type="yo">Yoruba</language>
			<language type="ypk">Yupik Language</language>
			<language type="za">Zhuang</language>
			<language type="zap">Zapotec</language>
			<language type="zbl">Blissymbols</language>
			<language type="zen">Zenaga</language>
			<language type="zh">Chinese</language>
			<language type="zh_Hans">Simplified Chinese</language>
			<language type="zh_Hant">Traditional Chinese</language>
			<language type="znd">Zande</language>
			<language type="zu">Zulu</language>
			<language type="zun">Zuni</language>
			<language type="zxx">No linguistic content</language>
			<language type="zza">Zaza</language>
		</languages>
		<scripts>
			<script type="Arab">Arabic</script>
			<script type="Armi">Imperial Aramaic</script>
			<script type="Armn">Armenian</script>
			<script type="Avst">Avestan</script>
			<script type="Bali">Balinese</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengali</script>
			<script type="Blis">Blissymbols</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brahmi</script>
			<script type="Brai">Braille</script>
			<script type="Bugi">Buginese</script>
			<script type="Buhd">Buhid</script>
			<script type="Cakm">Chakma</script>
			<script type="Cans">Unified Canadian Aboriginal Syllabics</script>
			<script type="Cari">Carian</script>
			<script type="Cham">Cham</script>
			<script type="Cher">Cherokee</script>
			<script type="Cirt">Cirth</script>
			<script type="Copt">Coptic</script>
			<script type="Cprt">Cypriot</script>
			<script type="Cyrl">Cyrillic</script>
			<script type="Cyrs">Old Church Slavonic Cyrillic</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Egyptian demotic</script>
			<script type="Egyh">Egyptian hieratic</script>
			<script type="Egyp">Egyptian hieroglyphs</script>
			<script type="Ethi">Ethiopic</script>
			<script type="Geok">Georgian Khutsuri</script>
			<script type="Geor">Georgian</script>
			<script type="Glag">Glagolitic</script>
			<script type="Goth">Gothic</script>
			<script type="Grek">Greek</script>
			<script type="Gujr">Gujarati</script>
			<script type="Guru">Gurmukhi</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Han</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Simplified Han</script>
			<script type="Hant">Traditional Han</script>
			<script type="Hebr">Hebrew</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh Hmong</script>
			<script type="Hrkt">Katakana or Hiragana</script>
			<script type="Hung">Old Hungarian</script>
			<script type="Inds">Indus</script>
			<script type="Ital">Old Italic</script>
			<script type="Java">Javanese</script>
			<script type="Jpan">Japanese</script>
			<script type="Kali">Kayah Li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Kore">Korean</script>
			<script type="Kthi">Kaithi</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Lao</script>
			<script type="Latf">Fraktur Latin</script>
			<script type="Latg">Gaelic Latin</script>
			<script type="Latn">Latin</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Linear A</script>
			<script type="Linb">Linear B</script>
			<script type="Lyci">Lycian</script>
			<script type="Lydi">Lydian</script>
			<script type="Mand">Mandaean</script>
			<script type="Mani">Manichaean</script>
			<script type="Maya">Mayan hieroglyphs</script>
			<script type="Mero">Meroitic</script>
			<script type="Mlym">Malayalam</script>
			<script type="Mong">Mongolian</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei Mayek</script>
			<script type="Mymr">Myanmar</script>
			<script type="Nkoo">N’Ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Ol Chiki</script>
			<script type="Orkh">Orkhon</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Osmanya</script>
			<script type="Perm">Old Permic</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phli">Inscriptional Pahlavi</script>
			<script type="Phlp">Psalter Pahlavi</script>
			<script type="Phlv">Book Pahlavi</script>
			<script type="Phnx">Phoenician</script>
			<script type="Plrd">Pollard Phonetic</script>
			<script type="Prti">Inscriptional Parthian</script>
			<script type="Qaai">Inherited</script>
			<script type="Rjng">Rejang</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runic</script>
			<script type="Samr">Samaritan</script>
			<script type="Sara">Sarati</script>
			<script type="Saur">Saurashtra</script>
			<script type="Sgnw">SignWriting</script>
			<script type="Shaw">Shavian</script>
			<script type="Sinh">Sinhala</script>
			<script type="Sund">Sundanese</script>
			<script type="Sylo">Syloti Nagri</script>
			<script type="Syrc">Syriac</script>
			<script type="Syre">Estrangelo Syriac</script>
			<script type="Syrj">Western Syriac</script>
			<script type="Syrn">Eastern Syriac</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">New Tai Lue</script>
			<script type="Taml">Tamil</script>
			<script type="Tavt">Tai Viet</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Tifinagh</script>
			<script type="Tglg">Tagalog</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thai</script>
			<script type="Tibt">Tibetan</script>
			<script type="Ugar">Ugaritic</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Visible Speech</script>
			<script type="Xpeo">Old Persian</script>
			<script type="Xsux">Sumero-Akkadian Cuneiform</script>
			<script type="Yiii">Yi</script>
			<script type="Zmth">Mathematical Notation</script>
			<script type="Zsym">Symbols</script>
			<script type="Zxxx">Unwritten</script>
			<script type="Zyyy">Common</script>
			<script type="Zzzz">Unknown or Invalid Script</script>
		</scripts>
		<territories>
			<territory type="001">World</territory>
			<territory type="002">Africa</territory>
			<territory type="003">North America</territory>
			<territory type="005">South America</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Western Africa</territory>
			<territory type="013">Central America</territory>
			<territory type="014">Eastern Africa</territory>
			<territory type="015">Northern Africa</territory>
			<territory type="017">Middle Africa</territory>
			<territory type="018">Southern Africa</territory>
			<territory type="019">Americas</territory>
			<territory type="021">Northern America</territory>
			<territory type="029">Caribbean</territory>
			<territory type="030">Eastern Asia</territory>
			<territory type="034">Southern Asia</territory>
			<territory type="035">South-Eastern Asia</territory>
			<territory type="039">Southern Europe</territory>
			<territory type="053">Australia and New Zealand</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Micronesian Region</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">South-Central Asia</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Central Asia</territory>
			<territory type="145">Western Asia</territory>
			<territory type="150">Europe</territory>
			<territory type="151">Eastern Europe</territory>
			<territory type="154">Northern Europe</territory>
			<territory type="155">Western Europe</territory>
			<territory type="172">Commonwealth of Independent States</territory>
			<territory type="200">Czechoslovakia</territory>
			<territory type="419">Latin America and the Caribbean</territory>
			<territory type="830">Channel Islands</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">United Arab Emirates</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua and Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Netherlands Antilles</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">American Samoa</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland Islands</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia and Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgium</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BQ">British Antarctic Territory</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet Island</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Belarus</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Cocos Islands</territory>
			<territory type="CD">Congo - Kinshasa</territory>
			<territory type="CF">Central African Republic</territory>
			<territory type="CG">Congo - Brazzaville</territory>
			<territory type="CH">Switzerland</territory>
			<territory type="CI">Ivory Coast</territory>
			<territory type="CK">Cook Islands</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Cameroon</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia and Montenegro</territory>
			<territory type="CT">Canton and Enderbury Islands</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cape Verde</territory>
			<territory type="CX">Christmas Island</territory>
			<territory type="CY">Cyprus</territory>
			<territory type="CZ">Czech Republic</territory>
			<territory type="DD">East Germany</territory>
			<territory type="DE">Germany</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Denmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominican Republic</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egypt</territory>
			<territory type="EH">Western Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spain</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falkland Islands</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Faroe Islands</territory>
			<territory type="FQ">French Southern and Antarctic Territories</territory>
			<territory type="FR">France</territory>
			<territory type="FX">Metropolitan France</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">French Guiana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Greenland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Equatorial Guinea</territory>
			<territory type="GR">Greece</territory>
			<territory type="GS">South Georgia and the South Sandwich Islands</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Heard Island and McDonald Islands</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungary</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Ireland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">British Indian Ocean Territory</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Iceland</territory>
			<territory type="IT">Italy</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="JT">Johnston Island</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kyrgyzstan</territory>
			<territory type="KH">Cambodia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoros</territory>
			<territory type="KN">Saint Kitts and Nevis</territory>
			<territory type="KP">North Korea</territory>
			<territory type="KR">South Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Cayman Islands</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lebanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lithuania</territory>
			<territory type="LU">Luxembourg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Morocco</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Marshall Islands</territory>
			<territory type="MI">Midway Islands</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macau</territory>
			<territory type="MP">Northern Mariana Islands</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">New Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk Island</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Netherlands</territory>
			<territory type="NO">Norway</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NQ">Dronning Maud Land</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NT">Neutral Zone</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PC">Pacific Islands Trust Territory</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">French Polynesia</territory>
			<territory type="PG">Papua New Guinea</territory>
			<territory type="PH">Philippines</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poland</territory>
			<territory type="PM">Saint Pierre and Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinian Territory</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PU">U.S. Miscellaneous Pacific Islands</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="PZ">Panama Canal Zone</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Outlying Oceania</territory>
			<territory type="QU">European Union</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Russia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi Arabia</territory>
			<territory type="SB">Solomon Islands</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sweden</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard and Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tome and Principe</territory>
			<territory type="SU">Union of Soviet Socialist Republics</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks and Caicos Islands</territory>
			<territory type="TD">Chad</territory>
			<territory type="TF">French Southern Territories</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tajikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">East Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkey</territory>
			<territory type="TT">Trinidad and Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">United States Minor Outlying Islands</territory>
			<territory type="US">United States</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatican</territory>
			<territory type="VC">Saint Vincent and the Grenadines</territory>
			<territory type="VD">North Vietnam</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">British Virgin Islands</territory>
			<territory type="VI">U.S. Virgin Islands</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis and Futuna</territory>
			<territory type="WK">Wake Island</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YD">People's Democratic Republic of Yemen</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">South Africa</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Unknown or Invalid Region</territory>
		</territories>
		<variants>
			<variant type="1901">Traditional German orthography</variant>
			<variant type="1994">Standardized Resian orthography</variant>
			<variant type="1996">German orthography of 1996</variant>
			<variant type="1606NICT">Late Middle French to 1606</variant>
			<variant type="1694ACAD">Early Modern French</variant>
			<variant type="AREVELA">Eastern Armenian</variant>
			<variant type="AREVMDA">Western Armenian</variant>
			<variant type="BAKU1926">Unified Turkic Latin Alphabet</variant>
			<variant type="BISKE">San Giorgio/Bila dialect</variant>
			<variant type="BOONT">Boontling</variant>
			<variant type="FONIPA">IPA Phonetics</variant>
			<variant type="FONUPA">UPA Phonetics</variant>
			<variant type="GAULISH">Gaulish</variant>
			<variant type="GUOYU">Mandarin or Standard Chinese</variant>
			<variant type="HAKKA">Hakka</variant>
			<variant type="LIPAW">The Lipovaz dialect of Resian</variant>
			<variant type="LOJBAN">Lojban</variant>
			<variant type="MONOTON">Monotonic</variant>
			<variant type="NEDIS">Natisone dialect</variant>
			<variant type="NJIVA">Gniva/Njiva dialect</variant>
			<variant type="OSOJS">Oseacco/Osojane dialect</variant>
			<variant type="POLYTON">Polytonic</variant>
			<variant type="POSIX">Computer</variant>
			<variant type="REVISED">Revised Orthography</variant>
			<variant type="ROZAJ">Resian</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOTLAND">Scottish Standard English</variant>
			<variant type="SCOUSE">Scouse</variant>
			<variant type="SOLBA">Stolvizza/Solbica dialect</variant>
			<variant type="TARASK">Taraskievica orthography</variant>
			<variant type="VALENCIA">Valencian</variant>
			<variant type="XIANG">Xiang or Hunanese</variant>
		</variants>
		<types>
			<type type="big5han" key="collation">Traditional Chinese Sort Order - Big5</type>
			<type type="buddhist" key="calendar">Buddhist Calendar</type>
			<type type="chinese" key="calendar">Chinese Calendar</type>
			<type type="direct" key="collation">Direct Sort Order</type>
			<type type="gb2312han" key="collation">Simplified Chinese Sort Order - GB2312</type>
			<type type="gregorian" key="calendar">Gregorian Calendar</type>
			<type type="hebrew" key="calendar">Hebrew Calendar</type>
			<type type="indian" key="calendar">Indian National Calendar</type>
			<type type="islamic" key="calendar">Islamic Calendar</type>
			<type type="islamic-civil" key="calendar">Islamic-Civil Calendar</type>
			<type type="japanese" key="calendar">Japanese Calendar</type>
			<type type="phonebook" key="collation">Phonebook Sort Order</type>
			<type type="pinyin" key="collation">Pinyin Sort Order</type>
			<type type="roc" key="calendar">Republic of China Calendar</type>
			<type type="stroke" key="collation">Stroke Sort Order</type>
			<type type="traditional" key="collation">Traditional Sort Order</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Language: {0}</codePattern>
			<codePattern type="script">Script: {0}</codePattern>
			<codePattern type="territory">Region: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à ă â å ä ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ß ú ù ŭ û ü ū ÿ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-c č d-l ł m-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">May</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Oct</month>
							<month type="11">Nov</month>
							<month type="12">Dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">January</month>
							<month type="2">February</month>
							<month type="3">March</month>
							<month type="4">April</month>
							<month type="5">May</month>
							<month type="6">June</month>
							<month type="7">July</month>
							<month type="8">August</month>
							<month type="9">September</month>
							<month type="10">October</month>
							<month type="11">November</month>
							<month type="12">December</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sun</day>
							<day type="mon">Mon</day>
							<day type="tue">Tue</day>
							<day type="wed">Wed</day>
							<day type="thu">Thu</day>
							<day type="fri">Fri</day>
							<day type="sat">Sat</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sunday</day>
							<day type="mon">Monday</day>
							<day type="tue">Tuesday</day>
							<day type="wed">Wednesday</day>
							<day type="thu">Thursday</day>
							<day type="fri">Friday</day>
							<day type="sat">Saturday</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">W</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1st quarter</quarter>
							<quarter type="2">2nd quarter</quarter>
							<quarter type="3">3rd quarter</quarter>
							<quarter type="4">4th quarter</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Before Christ</era>
						<era type="1">Anno Domini</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">B</era>
						<era type="1">A</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="Hms">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M/d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E, MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E, MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hm">h:mm a</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, M/d/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, MMM d, yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M–M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, M/d – E, M/d</greatestDifference>
							<greatestDifference id="d">E, M/d – E, M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM–MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d – E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d – E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d – MMM d</greatestDifference>
							<greatestDifference id="d">MMM d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M/d – M/d</greatestDifference>
							<greatestDifference id="d">M/d – M/d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a – h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a – h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a – h a v</greatestDifference>
							<greatestDifference id="h">h–h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy – M/yy</greatestDifference>
							<greatestDifference id="y">M/yy – M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, M/d/yy – E, M/d/yy</greatestDifference>
							<greatestDifference id="d">E, M/d/yy – E, M/d/yy</greatestDifference>
							<greatestDifference id="y">E, M/d/yy – E, M/d/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy – MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d – E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d – E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy – E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d – MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d–d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy – MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">M/d/yy – M/d/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy – M/d/yy</greatestDifference>
							<greatestDifference id="y">M/d/yy – M/d/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Year</displayName>
					</field>
					<field type="month">
						<displayName>Month</displayName>
					</field>
					<field type="week">
						<displayName>Week</displayName>
					</field>
					<field type="day">
						<displayName>Day</displayName>
						<relative type="0">Today</relative>
						<relative type="1">Tomorrow</relative>
						<relative type="-1">Yesterday</relative>
					</field>
					<field type="weekday">
						<displayName>Day of the Week</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>Hour</displayName>
					</field>
					<field type="minute">
						<displayName>Minute</displayName>
					</field>
					<field type="second">
						<displayName>Second</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0} Time</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Unknown</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont d’Urville</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<long>
					<daylight>British Summer Time</daylight>
				</long>
				<short>
					<daylight>BST</daylight>
				</short>
			</zone>
			<zone type="Europe/Dublin">
				<long>
					<daylight>Irish Summer Time</daylight>
				</long>
				<short>
					<daylight>IST (Irish)</daylight>
				</short>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre Time</standard>
					<daylight>Acre Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afghanistan Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Central Africa Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>East Africa Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>South Africa Time</generic>
					<standard>South Africa Standard Time</standard>
				</long>
				<short>
					<generic>SAT</generic>
				</short>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>West Africa Time</standard>
					<daylight>West Africa Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk Time</standard>
					<daylight>Aktyubinsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska Time</generic>
					<standard>Alaska Standard Time</standard>
					<daylight>Alaska Daylight Time</daylight>
				</long>
				<short>
					<generic>AKT</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaska-Hawaii Time</generic>
					<standard>Alaska-Hawaii Standard Time</standard>
					<daylight>Alaska-Hawaii Daylight Time</daylight>
				</long>
				<short>
					<generic>AHT</generic>
				</short>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Almaty Time</standard>
					<daylight>Almaty Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazon Time</standard>
					<daylight>Amazon Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Central Time</generic>
					<standard>Central Standard Time</standard>
					<daylight>Central Daylight Time</daylight>
				</long>
				<short>
					<generic>CT</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Eastern Time</generic>
					<standard>Eastern Standard Time</standard>
					<daylight>Eastern Daylight Time</daylight>
				</long>
				<short>
					<generic>ET</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Mountain Time</generic>
					<standard>Mountain Standard Time</standard>
					<daylight>Mountain Daylight Time</daylight>
				</long>
				<short>
					<generic>MT</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Pacific Time</generic>
					<standard>Pacific Standard Time</standard>
					<daylight>Pacific Daylight Time</daylight>
				</long>
				<short>
					<generic>PT</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Anadyr Time</standard>
					<daylight>Anadyr Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aqtau Time</standard>
					<daylight>Aqtau Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aqtobe Time</standard>
					<daylight>Aqtobe Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arabian Time</generic>
					<standard>Arabian Standard Time</standard>
					<daylight>Arabian Daylight Time</daylight>
				</long>
				<short>
					<generic>AT (Arabian)</generic>
					<standard>AST (Arabian)</standard>
					<daylight>ADT (Arabian)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentina Time</standard>
					<daylight>Argentina Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Western Argentina Time</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Armenia Time</standard>
					<daylight>Armenia Summer Time</daylight>
				</long>
				<short>
					<standard>AMT (Armenia)</standard>
					<daylight>AMST (Armenia)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Ashkhabad Time</standard>
					<daylight>Ashkhabad Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlantic Time</generic>
					<standard>Atlantic Standard Time</standard>
					<daylight>Atlantic Daylight Time</daylight>
				</long>
				<short>
					<generic>AT</generic>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Central Australia Time</generic>
					<standard>Australian Central Standard Time</standard>
					<daylight>Australian Central Daylight Time</daylight>
				</long>
				<short>
					<generic>ACT</generic>
				</short>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Australian Central Western Time</generic>
					<standard>Australian Central Western Standard Time</standard>
					<daylight>Australian Central Western Daylight Time</daylight>
				</long>
				<short>
					<generic>ACWT</generic>
				</short>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Eastern Australia Time</generic>
					<standard>Australian Eastern Standard Time</standard>
					<daylight>Australian Eastern Daylight Time</daylight>
				</long>
				<short>
					<generic>AET</generic>
				</short>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Western Australia Time</generic>
					<standard>Australian Western Standard Time</standard>
					<daylight>Australian Western Daylight Time</daylight>
				</long>
				<short>
					<generic>AWT</generic>
				</short>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>Azerbaijan Time</standard>
					<daylight>Azerbaijan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Azores Time</standard>
					<daylight>Azores Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Baku Time</standard>
					<daylight>Baku Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Bangladesh Time</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering Time</generic>
					<standard>Bering Standard Time</standard>
					<daylight>Bering Daylight Time</daylight>
				</long>
				<short>
					<generic>BT (Bering)</generic>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Bhutan Time</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Bolivia Time</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Borneo Time</standard>
					<daylight>Borneo Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brasilia Time</standard>
					<daylight>Brasilia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>Brunei Darussalam Time</standard>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Cape Verde Time</standard>
					<daylight>Cape Verde Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>Chamorro Time</generic>
					<standard>Chamorro Standard Time</standard>
				</long>
				<short>
					<generic>ChT</generic>
				</short>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Changbai Time</standard>
				</long>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Chatham Standard Time</standard>
					<daylight>Chatham Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Chile Time</standard>
					<daylight>Chile Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>China Time</generic>
					<standard>China Standard Time</standard>
					<daylight>China Daylight Time</daylight>
				</long>
				<short>
					<generic>CT (China)</generic>
					<standard>CST (China)</standard>
					<daylight>CDT (China)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Choibalsan Time</standard>
					<daylight>Choibalsan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Christmas Island Time</standard>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Cocos Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Colombia Time</standard>
					<daylight>Colombia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>Cook Islands Time</standard>
					<daylight>Cook Islands Half Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Cuba Time</generic>
					<standard>Cuba Standard Time</standard>
					<daylight>Cuba Daylight Time</daylight>
				</long>
				<short>
					<standard>CST (Cuba)</standard>
					<daylight>CDT (Cuba)</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Dacca Time</standard>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Davis Time</standard>
				</long>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Dumont-d'Urville Time</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Dushanbe Time</standard>
					<daylight>Dushanbe Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Dutch Guiana Time</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>East Timor Time</standard>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Easter Island Time</standard>
					<daylight>Easter Island Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ecuador Time</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Central European Time</standard>
					<daylight>Central European Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Eastern European Time</standard>
					<daylight>Eastern European Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Western European Time</standard>
					<daylight>Western European Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Falkland Islands Time</standard>
					<daylight>Falkland Islands Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>Fiji Time</standard>
					<daylight>Fiji Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>French Guiana Time</standard>
				</long>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>French Southern and Antarctic Time</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Frunze Time</standard>
					<daylight>Frunze Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich Mean Time</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Galapagos Time</standard>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Gambier Time</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Georgia Time</standard>
					<daylight>Georgia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Gilbert Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Central Greenland Time</standard>
					<daylight>Central Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>East Greenland Time</standard>
					<daylight>East Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>West Greenland Time</standard>
					<daylight>West Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Guam Standard Time</standard>
				</long>
				<short>
					<standard>GST (Guam)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>Gulf Time</generic>
					<standard>Gulf Standard Time</standard>
				</long>
				<short>
					<generic>GT</generic>
				</short>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Guyana Time</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Hawaii-Aleutian Standard Time</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hong Kong Time</standard>
					<daylight>Hong Kong Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Hovd Time</standard>
					<daylight>Hovd Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>India Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Indian Ocean Time</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Indochina Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Central Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Eastern Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Western Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>Iran Standard Time</standard>
					<daylight>Iran Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Irkutsk Time</standard>
					<daylight>Irkutsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>Israel Time</generic>
					<standard>Israel Standard Time</standard>
					<daylight>Israel Daylight Time</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Japan Time</generic>
					<standard>Japan Standard Time</standard>
					<daylight>Japan Daylight Time</daylight>
				</long>
				<short>
					<generic>JT</generic>
				</short>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Petropavlovsk-Kamchatski Time</standard>
					<daylight>Petropavlovsk-Kamchatski Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karachi Time</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Kashgar Time</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>East Kazakhstan Time</generic>
					<standard>East Kazakhstan Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>West Kazakhstan Time</generic>
					<standard>West Kazakhstan Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Kizilorda Time</standard>
					<daylight>Kizilorda Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Korean Time</generic>
					<standard>Korean Standard Time</standard>
					<daylight>Korean Daylight Time</daylight>
				</long>
				<short>
					<generic>KT</generic>
				</short>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Kosrae Time</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Krasnoyarsk Time</standard>
					<daylight>Krasnoyarsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kuybyshev Time</standard>
					<daylight>Kuybyshev Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Kwajalein Time</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Kyrgystan Time</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Lanka Time</standard>
				</long>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Line Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Long-Shu Time</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Lord Howe Time</generic>
					<standard>Lord Howe Standard Time</standard>
					<daylight>Lord Howe Daylight Time</daylight>
				</long>
				<short>
					<generic>LHT</generic>
				</short>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Macau Time</standard>
					<daylight>Macau Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Magadan Time</standard>
					<daylight>Magadan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Malaya Time</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Malaysia Time</standard>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Maldives Time</standard>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Marquesas Time</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Marshall Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Mauritius Time</standard>
					<daylight>Mauritius Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Mawson Time</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Ulan Bator Time</standard>
					<daylight>Ulan Bator Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moscow Time</generic>
					<standard>Moscow Standard Time</standard>
					<daylight>Moscow Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Myanmar Time</standard>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Nauru Time</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Nepal Time</standard>
				</long>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>New Caledonia Time</standard>
					<daylight>New Caledonia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>New Zealand Time</generic>
					<standard>New Zealand Standard Time</standard>
					<daylight>New Zealand Daylight Time</daylight>
				</long>
				<short>
					<generic>NZT</generic>
				</short>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Newfoundland Time</generic>
					<standard>Newfoundland Standard Time</standard>
					<daylight>Newfoundland Daylight Time</daylight>
				</long>
				<short>
					<generic>NT</generic>
				</short>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>Niue Time</standard>
				</long>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>Norfolk Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Fernando de Noronha Time</standard>
					<daylight>Fernando de Noronha Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>North Mariana Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Novosibirsk Time</standard>
					<daylight>Novosibirsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Omsk Time</standard>
					<daylight>Omsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Pakistan Time</standard>
					<daylight>Pakistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>Palau Time</standard>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>Papua New Guinea Time</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paraguay Time</standard>
					<daylight>Paraguay Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Peru Time</standard>
					<daylight>Peru Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Philippine Time</standard>
					<daylight>Philippine Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Phoenix Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre and Miquelon Time</generic>
					<standard>Pierre and Miquelon Standard Time</standard>
					<daylight>Pierre and Miquelon Daylight Time</daylight>
				</long>
				<short>
					<generic>PMT</generic>
				</short>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>Pitcairn Time</standard>
				</long>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Ponape Time</standard>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Qyzylorda Time</standard>
					<daylight>Qyzylorda Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Reunion Time</standard>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Rothera Time</standard>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Sakhalin Time</standard>
					<daylight>Sakhalin Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samara Time</standard>
					<daylight>Samara Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Samarkand Time</standard>
					<daylight>Samarkand Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Samoa Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Seychelles Time</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Shevchenko Time</standard>
					<daylight>Shevchenko Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>Singapore Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>Solomon Islands Time</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>South Georgia Time</standard>
				</long>
				<short>
					<standard>GST (S. Georgia)</standard>
				</short>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Suriname Time</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Sverdlovsk Time</standard>
					<daylight>Sverdlovsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Syowa Time</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>Tahiti Time</standard>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Tajikistan Time</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Tashkent Time</standard>
					<daylight>Tashkent Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Tbilisi Time</standard>
					<daylight>Tbilisi Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>Tokelau Time</standard>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>Tonga Time</standard>
					<daylight>Tonga Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Truk Time</standard>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Turkey Time</standard>
					<daylight>Turkey Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Turkmenistan Time</standard>
					<daylight>Turkmenistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>Tuvalu Time</standard>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Ural'sk Time</standard>
					<daylight>Ural'sk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Uruguay Time</standard>
					<daylight>Uruguay Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Urumqi Time</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Uzbekistan Time</standard>
					<daylight>Uzbekistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>Vanuatu Time</standard>
					<daylight>Vanuatu Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venezuela Time</standard>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Vladivostok Time</standard>
					<daylight>Vladivostok Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Volgograd Time</standard>
					<daylight>Volgograd Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Vostok Time</standard>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Wake Island Time</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>Wallis and Futuna Time</standard>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Yakutsk Time</standard>
					<daylight>Yakutsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Yekaterinburg Time</standard>
					<daylight>Yekaterinburg Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Yerevan Time</standard>
					<daylight>Yerevan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukon Time</generic>
					<standard>Yukon Standard Time</standard>
					<daylight>Yukon Daylight Time</daylight>
				</long>
				<short>
					<generic>YT</generic>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;(¤#,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorran Peseta</displayName>
				<displayName count="one">Andorran peseta</displayName>
				<displayName count="other">Andorran pesetas</displayName>
			</currency>
			<currency type="AED">
				<displayName>United Arab Emirates Dirham</displayName>
				<displayName count="one">UAE dirham</displayName>
				<displayName count="other">UAE dirhams</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghani (1927-2002)</displayName>
				<displayName count="one">Afghani (AFA)</displayName>
				<displayName count="other">Afghanis (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghani</displayName>
				<displayName count="one">Afghani</displayName>
				<displayName count="other">Afghanis</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Albanian Lek</displayName>
				<displayName count="one">Albanian lek</displayName>
				<displayName count="other">Albanian lekë</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Armenian Dram</displayName>
				<displayName count="one">Armenian dram</displayName>
				<displayName count="other">Armenian drams</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Netherlands Antillan Guilder</displayName>
				<displayName count="one">Netherlands Antillan guilder</displayName>
				<displayName count="other">Netherlands Antillan guilders</displayName>
				<symbol>NAf.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolan Kwanza</displayName>
				<displayName count="one">Angolan kwanza</displayName>
				<displayName count="other">Angolan kwanzas</displayName>
				<symbol>Kz</symbol>
			</currency>
			<currency type="AOK">
				<displayName>Angolan Kwanza (1977-1990)</displayName>
				<displayName count="one">Angolan kwanza (AOK)</displayName>
				<displayName count="other">Angolan kwanzas (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolan New Kwanza (1990-2000)</displayName>
				<displayName count="one">Angolan new kwanza (AON)</displayName>
				<displayName count="other">Angolan new kwanzas (AON)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolan Kwanza Reajustado (1995-1999)</displayName>
				<displayName count="one">Angolan kwanza reajustado (AOR)</displayName>
				<displayName count="other">Angolan kwanzas reajustado (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentine Austral</displayName>
				<displayName count="one">Argentine austral</displayName>
				<displayName count="other">Argentine australs</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentine Peso (1983-1985)</displayName>
				<displayName count="one">Argentine peso (ARP)</displayName>
				<displayName count="other">Argentine pesos (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentine Peso</displayName>
				<displayName count="one">Argentine peso</displayName>
				<displayName count="other">Argentine pesos</displayName>
				<symbol>AR$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Austrian Schilling</displayName>
				<displayName count="one">Austrian schilling</displayName>
				<displayName count="other">Austrian schillings</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australian Dollar</displayName>
				<displayName count="one">Australian dollar</displayName>
				<displayName count="other">Australian dollars</displayName>
				<symbol>A$</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Aruban Florin</displayName>
				<displayName count="one">Aruban florin</displayName>
				<displayName count="other">Aruban florin</displayName>
				<symbol>Afl.</symbol>
			</currency>
			<currency type="AZM">
				<displayName>Azerbaijanian Manat (1993-2006)</displayName>
				<displayName count="one">Azerbaijanian manat (AZM)</displayName>
				<displayName count="other">Azerbaijanian manats (AZM)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azerbaijanian Manat</displayName>
				<displayName count="one">Azerbaijanian manat</displayName>
				<displayName count="other">Azerbaijanian manats</displayName>
				<symbol>man.</symbol>
			</currency>
			<currency type="BAD">
				<displayName>Bosnia-Herzegovina Dinar</displayName>
				<displayName count="one">Bosnia-Herzegovina dinar</displayName>
				<displayName count="other">Bosnia-Herzegovina dinars</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnia-Herzegovina Convertible Mark</displayName>
				<displayName count="one">Bosnia-Herzegovina convertible mark</displayName>
				<displayName count="other">Bosnia-Herzegovina convertible marks</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbados Dollar</displayName>
				<displayName count="one">Barbados dollar</displayName>
				<displayName count="other">Barbados dollars</displayName>
				<symbol>Bds$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bangladeshi Taka</displayName>
				<displayName count="one">Bangladeshi taka</displayName>
				<displayName count="other">Bangladeshi takas</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belgian Franc (convertible)</displayName>
				<displayName count="one">Belgian franc (convertible)</displayName>
				<displayName count="other">Belgian francs (convertible)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgian Franc</displayName>
				<displayName count="one">Belgian franc</displayName>
				<displayName count="other">Belgian francs</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belgian Franc (financial)</displayName>
				<displayName count="one">Belgian franc (financial)</displayName>
				<displayName count="other">Belgian francs (financial)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgarian Hard Lev</displayName>
				<displayName count="one">Bulgarian hard lev</displayName>
				<displayName count="other">Bulgarian hard levs</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Bulgarian Lev</displayName>
				<displayName count="one">Bulgarian lev</displayName>
				<displayName count="other">Bulgarian Levs</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahraini Dinar</displayName>
				<displayName count="one">Bahraini dinar</displayName>
				<displayName count="other">Bahraini dinars</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundi Franc</displayName>
				<displayName count="one">Burundi franc</displayName>
				<displayName count="other">Burundi francs</displayName>
				<symbol>FBu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermudan Dollar</displayName>
				<displayName count="one">Bermudan dollar</displayName>
				<displayName count="other">Bermudan dollars</displayName>
				<symbol>BD$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunei Dollar</displayName>
				<displayName count="one">Brunei dollar</displayName>
				<displayName count="other">Brunei dollars</displayName>
				<symbol>B$</symbol>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="one">Boliviano</displayName>
				<displayName count="other">Bolivianos</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Bolivian Peso</displayName>
				<displayName count="one">Bolivian peso</displayName>
				<displayName count="other">Bolivian pesos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivian Mvdol</displayName>
				<displayName count="one">Bolivian mvdol</displayName>
				<displayName count="other">Bolivian mvdols</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brazilian Cruzeiro Novo (1967-1986)</displayName>
				<displayName count="one">Brazilian cruzeiro novo (BRB)</displayName>
				<displayName count="other">Brazilian cruzeiros novo (BRB)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brazilian Cruzado</displayName>
				<displayName count="one">Brazilian cruzado</displayName>
				<displayName count="other">Brazilian cruzados</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brazilian Cruzeiro (1990-1993)</displayName>
				<displayName count="one">Brazilian cruzeiro (BRE)</displayName>
				<displayName count="other">Brazilian cruzeiros (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
				<displayName count="one">Brazilian real</displayName>
				<displayName count="other">Brazilian reals</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Brazilian Cruzado Novo</displayName>
				<displayName count="one">Brazilian cruzado novo</displayName>
				<displayName count="other">Brazilian cruzado novos</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brazilian Cruzeiro</displayName>
				<displayName count="one">Brazilian cruzeiro</displayName>
				<displayName count="other">Brazilian cruzeiros</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamian Dollar</displayName>
				<displayName count="one">Bahamian dollar</displayName>
				<displayName count="other">Bahamian dollars</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutan Ngultrum</displayName>
				<displayName count="one">Bhutan ngultrum</displayName>
				<displayName count="other">Bhutan ngultrums</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Burmese Kyat</displayName>
				<displayName count="one">Burmese kyat</displayName>
				<displayName count="other">Burmese kyats</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswanan Pula</displayName>
				<displayName count="one">Botswanan pula</displayName>
				<displayName count="other">Botswanan pulas</displayName>
				<symbol>P</symbol>
			</currency>
			<currency type="BYB">
				<displayName>Belarussian New Ruble (1994-1999)</displayName>
				<displayName count="one">Belarussian new ruble (BYB)</displayName>
				<displayName count="other">Belarussian new rubles (BYB)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Belarussian Ruble</displayName>
				<displayName count="one">Belarussian ruble</displayName>
				<displayName count="other">Belarussian rubles</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belize Dollar</displayName>
				<displayName count="one">Belize dollar</displayName>
				<displayName count="other">Belize dollars</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Canadian Dollar</displayName>
				<displayName count="one">Canadian dollar</displayName>
				<displayName count="other">Canadian dollars</displayName>
				<symbol>CA$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Congolese Franc Congolais</displayName>
				<displayName count="one">Congolese franc Congolais</displayName>
				<displayName count="other">Congolese francs Congolais</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR Euro</displayName>
				<displayName count="one">WIR euro</displayName>
				<displayName count="other">WIR euros</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Swiss Franc</displayName>
				<displayName count="one">Swiss franc</displayName>
				<displayName count="other">Swiss francs</displayName>
				<symbol>Fr.</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR Franc</displayName>
				<displayName count="one">WIR franc</displayName>
				<displayName count="other">WIR francs</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Chilean Unidades de Fomento</displayName>
				<displayName count="one">Chilean unidades de fomento</displayName>
				<displayName count="other">Chilean unidades de fomentos</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilean Peso</displayName>
				<displayName count="one">Chilean peso</displayName>
				<displayName count="other">Chilean pesos</displayName>
				<symbol>CL$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Chinese Yuan Renminbi</displayName>
				<displayName count="one">Chinese yuan</displayName>
				<displayName count="other">Chinese yuan</displayName>
				<symbol>RMB</symbol>
			</currency>
			<currency type="COP">
				<displayName>Colombian Peso</displayName>
				<displayName count="one">Colombian peso</displayName>
				<displayName count="other">Colombian pesos</displayName>
				<symbol>CO$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidad de Valor Real</displayName>
				<displayName count="one">unidad de valor real</displayName>
				<displayName count="other">unidad de valor reals</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Costa Rican Colon</displayName>
				<displayName count="one">Costa Rican colon</displayName>
				<displayName count="other">Costa Rican colons</displayName>
				<symbol>₡</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Old Serbian Dinar</displayName>
				<displayName count="one">Old Serbian dinar</displayName>
				<displayName count="other">Old Serbian dinars</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Czechoslovak Hard Koruna</displayName>
				<displayName count="one">Czechoslovak hard koruna</displayName>
				<displayName count="other">Czechoslovak hard korunas</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Cuban Peso</displayName>
				<displayName count="one">Cuban peso</displayName>
				<displayName count="other">Cuban pesos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Cape Verde Escudo</displayName>
				<displayName count="one">Cape Verde escudo</displayName>
				<displayName count="other">Cape Verde escudos</displayName>
				<symbol>Esc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Cyprus Pound</displayName>
				<displayName count="one">Cyprus pound</displayName>
				<displayName count="other">Cyprus pounds</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Czech Republic Koruna</displayName>
				<displayName count="one">Czech Republic koruna</displayName>
				<displayName count="other">Czech Republic korunas</displayName>
				<symbol>Kč</symbol>
			</currency>
			<currency type="DDM">
				<displayName>East German Ostmark</displayName>
				<displayName count="one">East German ostmark</displayName>
				<displayName count="other">East German ostmarks</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Deutsche Mark</displayName>
				<displayName count="one">Deutsche mark</displayName>
				<displayName count="other">Deutsche marks</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djibouti Franc</displayName>
				<displayName count="one">Djibouti franc</displayName>
				<displayName count="other">Djibouti francs</displayName>
				<symbol>Fdj</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Danish Krone</displayName>
				<displayName count="one">Danish krone</displayName>
				<displayName count="other">Danish kroner</displayName>
				<symbol>Dkr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominican Peso</displayName>
				<displayName count="one">Dominican peso</displayName>
				<displayName count="other">Dominican pesos</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Algerian Dinar</displayName>
				<displayName count="one">Algerian dinar</displayName>
				<displayName count="other">Algerian dinars</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuador Sucre</displayName>
				<displayName count="one">Ecuador sucre</displayName>
				<displayName count="other">Ecuador sucres</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuador Unidad de Valor Constante (UVC)</displayName>
				<displayName count="one">Ecuador unidad de valor Constante (UVC)</displayName>
				<displayName count="other">Ecuador unidads de valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estonian Kroon</displayName>
				<displayName count="one">Estonian kroon</displayName>
				<displayName count="other">Estonian kroons</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyptian Pound</displayName>
				<displayName count="one">Egyptian pound</displayName>
				<displayName count="other">Egyptian pounds</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Ekwele</displayName>
				<displayName count="one">ekwele</displayName>
				<displayName count="other">ekweles</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrean Nakfa</displayName>
				<displayName count="one">Eritrean nakfa</displayName>
				<displayName count="other">Eritrean nakfas</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Spanish Peseta (A account)</displayName>
				<displayName count="one">Spanish peseta (A account)</displayName>
				<displayName count="other">Spanish pesetas (A account)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Spanish Peseta (convertible account)</displayName>
				<displayName count="one">Spanish peseta (convertible account)</displayName>
				<displayName count="other">Spanish pesetas (convertible account)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spanish Peseta</displayName>
				<displayName count="one">Spanish peseta</displayName>
				<displayName count="other">Spanish pesetas</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Ethiopian Birr</displayName>
				<displayName count="one">Ethiopian birr</displayName>
				<displayName count="other">Ethiopian birrs</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<displayName count="one">euro</displayName>
				<displayName count="other">euros</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finnish Markka</displayName>
				<displayName count="one">Finnish markka</displayName>
				<displayName count="other">Finnish markkas</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fiji Dollar</displayName>
				<displayName count="one">Fiji dollar</displayName>
				<displayName count="other">Fiji dollars</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falkland Islands Pound</displayName>
				<displayName count="one">Falkland Islands pound</displayName>
				<displayName count="other">Falkland Islands pounds</displayName>
			</currency>
			<currency type="FRF">
				<displayName>French Franc</displayName>
				<displayName count="one">French franc</displayName>
				<displayName count="other">French francs</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pound Sterling</displayName>
				<displayName count="one">British pound sterling</displayName>
				<displayName count="other">British pound sterlings</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Georgian Kupon Larit</displayName>
				<displayName count="one">Georgian kupon larit</displayName>
				<displayName count="other">Georgian kupon larits</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Georgian Lari</displayName>
				<displayName count="one">Georgian lari</displayName>
				<displayName count="other">Georgian laris</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ghana Cedi (1979-2007)</displayName>
				<displayName count="one">Ghana cedi (GHC)</displayName>
				<displayName count="other">Ghana cedis (GHC)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghana Cedi</displayName>
				<displayName count="one">Ghana cedi</displayName>
				<displayName count="other">Ghana cedis</displayName>
				<symbol>₵</symbol>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltar Pound</displayName>
				<displayName count="one">Gibraltar pound</displayName>
				<displayName count="other">Gibraltar pounds</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambia Dalasi</displayName>
				<displayName count="one">Gambia dalasi</displayName>
				<displayName count="other">Gambia dalasis</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guinea Franc</displayName>
				<displayName count="one">Guinea franc</displayName>
				<displayName count="other">Guinea francs</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guinea Syli</displayName>
				<displayName count="one">Guinea syli</displayName>
				<displayName count="other">Guinea sylis</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Equatorial Guinea Ekwele Guineana</displayName>
				<displayName count="one">Equatorial Guinea ekwele</displayName>
				<displayName count="other">Equatorial Guinea ekwele</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Greek Drachma</displayName>
				<displayName count="one">Greek drachma</displayName>
				<displayName count="other">Greek drachmas</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemala Quetzal</displayName>
				<displayName count="one">Guatemala quetzal</displayName>
				<displayName count="other">Guatemala quetzals</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portuguese Guinea Escudo</displayName>
				<displayName count="one">Portuguese Guinea escudo</displayName>
				<displayName count="other">Portuguese Guinea escudos</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau Peso</displayName>
				<displayName count="one">Guinea-Bissau peso</displayName>
				<displayName count="other">Guinea-Bissau pesos</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyana Dollar</displayName>
				<displayName count="one">Guyana dollar</displayName>
				<displayName count="other">Guyana dollars</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kong Dollar</displayName>
				<displayName count="one">Hong Kong dollar</displayName>
				<displayName count="other">Hong Kong dollars</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Honduras Lempira</displayName>
				<displayName count="one">Honduras lempira</displayName>
				<displayName count="other">Honduras lempiras</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Croatian Dinar</displayName>
				<displayName count="one">Croatian dinar</displayName>
				<displayName count="other">Croatian dinars</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Croatian Kuna</displayName>
				<displayName count="one">Croatian kuna</displayName>
				<displayName count="other">Croatian kunas</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haitian Gourde</displayName>
				<displayName count="one">Haitian gourde</displayName>
				<displayName count="other">Haitian gourdes</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Hungarian Forint</displayName>
				<displayName count="one">Hungarian forint</displayName>
				<displayName count="other">Hungarian forints</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonesian Rupiah</displayName>
				<displayName count="one">Indonesian rupiah</displayName>
				<displayName count="other">Indonesian rupiahs</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Irish Pound</displayName>
				<displayName count="one">Irish pound</displayName>
				<displayName count="other">Irish pounds</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Israeli Pound</displayName>
				<displayName count="one">Israeli pound</displayName>
				<displayName count="other">Israeli pounds</displayName>
			</currency>
			<currency type="ILS">
				<displayName>New Israeli Sheqel</displayName>
				<displayName count="one">Israeli new sheqel</displayName>
				<displayName count="other">New Israeli Sheqels</displayName>
				<symbol>₪</symbol>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
				<displayName count="one">Indian rupee</displayName>
				<displayName count="other">Indian rupees</displayName>
				<symbol>₨</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Iraqi Dinar</displayName>
				<displayName count="one">Iraqi dinar</displayName>
				<displayName count="other">Iraqi dinars</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iranian Rial</displayName>
				<displayName count="one">Iranian rial</displayName>
				<displayName count="other">Iranian rials</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Icelandic Krona</displayName>
				<displayName count="one">Icelandic krona</displayName>
				<displayName count="other">Icelandic kronas</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italian Lira</displayName>
				<displayName count="one">Italian lira</displayName>
				<displayName count="other">Italian liras</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaican Dollar</displayName>
				<displayName count="one">Jamaican dollar</displayName>
				<displayName count="other">Jamaican dollars</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordanian Dinar</displayName>
				<displayName count="one">Jordanian dinar</displayName>
				<displayName count="other">Jordanian dinars</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
				<displayName count="one">Japanese yen</displayName>
				<displayName count="other">Japanese yen</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenyan Shilling</displayName>
				<displayName count="one">Kenyan shilling</displayName>
				<displayName count="other">Kenyan shillings</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kyrgystan Som</displayName>
				<displayName count="one">Kyrgystan som</displayName>
				<displayName count="other">Kyrgystan soms</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Cambodian Riel</displayName>
				<displayName count="one">Cambodian riel</displayName>
				<displayName count="other">Cambodian riels</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comoro Franc</displayName>
				<displayName count="one">Comoro franc</displayName>
				<displayName count="other">Comoro francs</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>North Korean Won</displayName>
				<displayName count="one">North Korean won</displayName>
				<displayName count="other">North Korean wons</displayName>
			</currency>
			<currency type="KRW">
				<displayName>South Korean Won</displayName>
				<displayName count="one">South Korean won</displayName>
				<displayName count="other">South Korean wons</displayName>
				<symbol>₩</symbol>
			</currency>
			<currency type="KWD">
				<displayName>Kuwaiti Dinar</displayName>
				<displayName count="one">Kuwaiti dinar</displayName>
				<displayName count="other">Kuwaiti dinars</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Cayman Islands Dollar</displayName>
				<displayName count="one">Cayman Islands dollar</displayName>
				<displayName count="other">Cayman Islands dollars</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakhstan Tenge</displayName>
				<displayName count="one">Kazakhstan tenge</displayName>
				<displayName count="other">Kazakhstan tenges</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laotian Kip</displayName>
				<displayName count="one">Laotian kip</displayName>
				<displayName count="other">Laotian kips</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Lebanese Pound</displayName>
				<displayName count="one">Lebanese pound</displayName>
				<displayName count="other">Lebanese pounds</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lanka Rupee</displayName>
				<displayName count="one">Sri Lanka rupee</displayName>
				<displayName count="other">Sri Lanka rupees</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberian Dollar</displayName>
				<displayName count="one">Liberian dollar</displayName>
				<displayName count="other">Liberian dollars</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesotho Loti</displayName>
				<displayName count="one">Lesotho loti</displayName>
				<displayName count="other">Lesotho lotis</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
				<displayName count="one">maloti</displayName>
				<displayName count="other">malotis</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Lithuanian Lita</displayName>
				<displayName count="one">Lithuanian lita</displayName>
				<displayName count="other">Lithuanian litas</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Lithuanian Talonas</displayName>
				<displayName count="one">Lithuanian talonas</displayName>
				<displayName count="other">Lithuanian talonases</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Luxembourg Convertible Franc</displayName>
				<displayName count="one">Luxembourg convertible franc</displayName>
				<displayName count="other">Luxembourg convertible francs</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxembourg Franc</displayName>
				<displayName count="one">Luxembourg franc</displayName>
				<displayName count="other">Luxembourg francs</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Luxembourg Financial Franc</displayName>
				<displayName count="one">Luxembourg financial franc</displayName>
				<displayName count="other">Luxembourg financial francs</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latvian Lats</displayName>
				<displayName count="one">Latvian lats</displayName>
				<displayName count="other">Latvian latses</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Latvian Ruble</displayName>
				<displayName count="one">Latvian ruble</displayName>
				<displayName count="other">Latvian rubles</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libyan Dinar</displayName>
				<displayName count="one">Libyan dinar</displayName>
				<displayName count="other">Libyan dinars</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Moroccan Dirham</displayName>
				<displayName count="one">Moroccan dirham</displayName>
				<displayName count="other">Moroccan dirhams</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Moroccan Franc</displayName>
				<displayName count="one">Moroccan franc</displayName>
				<displayName count="other">Moroccan francs</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldovan Leu</displayName>
				<displayName count="one">Moldovan leu</displayName>
				<displayName count="other">Moldovan leus</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagascar Ariary</displayName>
				<displayName count="one">Madagascar Ariary</displayName>
				<displayName count="other">Madagascar Ariaries</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagascar Franc</displayName>
				<displayName count="one">Madagascar franc</displayName>
				<displayName count="other">Madagascar francs</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Macedonian Denar</displayName>
				<displayName count="one">Macedonian denar</displayName>
				<displayName count="other">Macedonian denars</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Mali Franc</displayName>
				<displayName count="one">Mali franc</displayName>
				<displayName count="other">Mali francs</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmar Kyat</displayName>
				<displayName count="one">Myanmar kyat</displayName>
				<displayName count="other">Myanmar kyats</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolian Tugrik</displayName>
				<displayName count="one">Mongolian tugrik</displayName>
				<displayName count="other">Mongolian tugriks</displayName>
				<symbol>₮</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macao Pataca</displayName>
				<displayName count="one">Macao pataca</displayName>
				<displayName count="other">Macao patacas</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritania Ouguiya</displayName>
				<displayName count="one">Mauritania ouguiya</displayName>
				<displayName count="other">Mauritania ouguiyas</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Maltese Lira</displayName>
				<displayName count="one">Maltese lira</displayName>
				<displayName count="other">Maltese liras</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltese Pound</displayName>
				<displayName count="one">Maltese pound</displayName>
				<displayName count="other">Maltese pounds</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritius Rupee</displayName>
				<displayName count="one">Mauritius rupee</displayName>
				<displayName count="other">Mauritius rupees</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldive Islands Rufiyaa</displayName>
				<displayName count="one">Maldive Islands rufiyaa</displayName>
				<displayName count="other">Maldive Islands rufiyaas</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawi Kwacha</displayName>
				<displayName count="one">Malawi Kwacha</displayName>
				<displayName count="other">Malawi Kwachas</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexican Peso</displayName>
				<displayName count="one">Mexican peso</displayName>
				<displayName count="other">Mexican pesos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexican Silver Peso (1861-1992)</displayName>
				<displayName count="one">Mexican silver peso (MXP)</displayName>
				<displayName count="other">Mexican silver pesos (MXP)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexican Unidad de Inversion (UDI)</displayName>
				<displayName count="one">Mexican unidad de inversion (UDI)</displayName>
				<displayName count="other">Mexican unidads de inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysian Ringgit</displayName>
				<displayName count="one">Malaysian ringgit</displayName>
				<displayName count="other">Malaysian ringgits</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambique Escudo</displayName>
				<displayName count="one">Mozambique escudo</displayName>
				<displayName count="other">Mozambique escudos</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Old Mozambique Metical</displayName>
				<displayName count="one">Old Mozambique metical</displayName>
				<displayName count="other">Old Mozambique meticals</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Mozambique Metical</displayName>
				<displayName count="one">Mozambique metical</displayName>
				<displayName count="other">Mozambique meticals</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibia Dollar</displayName>
				<displayName count="one">Namibia dollar</displayName>
				<displayName count="other">Namibia dollars</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigerian Naira</displayName>
				<displayName count="one">Nigerian naira</displayName>
				<displayName count="other">Nigerian nairas</displayName>
				<symbol>₦</symbol>
			</currency>
			<currency type="NIC">
				<displayName>Nicaraguan Cordoba</displayName>
				<displayName count="one">Nicaraguan cordoba</displayName>
				<displayName count="other">Nicaraguan cordobas</displayName>
				<symbol>C$</symbol>
			</currency>
			<currency type="NIO">
				<displayName>Nicaraguan Cordoba Oro</displayName>
				<displayName count="one">Nicaraguan cordoba oro</displayName>
				<displayName count="other">Nicaraguan cordoba oros</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Netherlands Guilder</displayName>
				<displayName count="one">Netherlands guilder</displayName>
				<displayName count="other">Netherlands guilders</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norwegian Krone</displayName>
				<displayName count="one">Norwegian krone</displayName>
				<displayName count="other">Norwegian krones</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalese Rupee</displayName>
				<displayName count="one">Nepalese rupee</displayName>
				<displayName count="other">Nepalese rupees</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>New Zealand Dollar</displayName>
				<displayName count="one">New Zealand dollar</displayName>
				<displayName count="other">New Zealand dollars</displayName>
				<symbol>NZ$</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Oman Rial</displayName>
				<displayName count="one">Oman rial</displayName>
				<displayName count="other">Oman rials</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamanian Balboa</displayName>
				<displayName count="one">Panamanian balboa</displayName>
				<displayName count="other">Panamanian balboas</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruvian Inti</displayName>
				<displayName count="one">Peruvian inti</displayName>
				<displayName count="other">Peruvian intis</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruvian Sol Nuevo</displayName>
				<displayName count="one">Peruvian sol nuevo</displayName>
				<displayName count="other">Peruvian sol nuevos</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruvian Sol</displayName>
				<displayName count="one">Peruvian sol</displayName>
				<displayName count="other">Peruvian sols</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua New Guinea Kina</displayName>
				<displayName count="one">Papua New Guinea kina</displayName>
				<displayName count="other">Papua New Guinea kinas</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Philippine Peso</displayName>
				<displayName count="one">Philippine peso</displayName>
				<displayName count="other">Philippine pesos</displayName>
				<symbol>₱</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakistan Rupee</displayName>
				<displayName count="one">Pakistan rupee</displayName>
				<displayName count="other">Pakistan rupees</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Polish Zloty</displayName>
				<displayName count="one">Polish zloty</displayName>
				<displayName count="other">Polish zloties</displayName>
				<symbol>zł</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Polish Zloty (1950-1995)</displayName>
				<displayName count="one">Polish zloty (PLZ)</displayName>
				<displayName count="other">Polish zlotys (PLZ)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portuguese Escudo</displayName>
				<displayName count="one">Portuguese escudo</displayName>
				<displayName count="other">Portuguese escudos</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguay Guarani</displayName>
				<displayName count="one">Paraguay guarani</displayName>
				<displayName count="other">Paraguay guaranis</displayName>
				<symbol>₲</symbol>
			</currency>
			<currency type="QAR">
				<displayName>Qatari Rial</displayName>
				<displayName count="one">Qatari rial</displayName>
				<displayName count="other">Qatari rials</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Rhodesian Dollar</displayName>
				<displayName count="one">Rhodesian dollar</displayName>
				<displayName count="other">Rhodesian dollars</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Old Romanian Leu</displayName>
				<displayName count="one">Old Romanian leu</displayName>
				<displayName count="other">Old Romanian Lei</displayName>
			</currency>
			<currency type="RON">
				<displayName>Romanian Leu</displayName>
				<displayName count="one">Romanian leu</displayName>
				<displayName count="other">Romanian lei</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbian Dinar</displayName>
				<displayName count="one">Serbian dinar</displayName>
				<displayName count="other">Serbian dinars</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
				<displayName count="one">Russian ruble</displayName>
				<displayName count="other">Russian rubles</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Russian Ruble (1991-1998)</displayName>
				<displayName count="one">Russian ruble (RUR)</displayName>
				<displayName count="other">Russian rubles (RUR)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rwandan Franc</displayName>
				<displayName count="one">Rwandan franc</displayName>
				<displayName count="other">Rwandan francs</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi Riyal</displayName>
				<displayName count="one">Saudi riyal</displayName>
				<displayName count="other">Saudi riyals</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Solomon Islands Dollar</displayName>
				<displayName count="one">Solomon Islands dollar</displayName>
				<displayName count="other">Solomon Islands dollars</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychelles Rupee</displayName>
				<displayName count="one">Seychelles rupee</displayName>
				<displayName count="other">Seychelles rupees</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Old Sudanese Dinar</displayName>
				<displayName count="one">Old Sudanese dinar</displayName>
				<displayName count="other">Old Sudanese dinars</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudanese Pound</displayName>
				<displayName count="one">Sudanese pound</displayName>
				<displayName count="other">Sudanese pounds</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Old Sudanese Pound</displayName>
				<displayName count="one">Old Sudanese pound</displayName>
				<displayName count="other">Old Sudanese pounds</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Swedish Krona</displayName>
				<displayName count="one">Swedish krona</displayName>
				<displayName count="other">Swedish kronas</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapore Dollar</displayName>
				<displayName count="one">Singapore dollar</displayName>
				<displayName count="other">Singapore dollars</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Saint Helena Pound</displayName>
				<displayName count="one">Saint Helena pound</displayName>
				<displayName count="other">Saint Helena pounds</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovenia Tolar</displayName>
				<displayName count="one">Slovenia tolar</displayName>
				<displayName count="other">Slovenia tolars</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovak Koruna</displayName>
				<displayName count="one">Slovak koruna</displayName>
				<displayName count="other">Slovak korunas</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leone Leone</displayName>
				<displayName count="one">Sierra Leone leone</displayName>
				<displayName count="other">Sierra Leone leones</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somali Shilling</displayName>
				<displayName count="one">Somali shilling</displayName>
				<displayName count="other">Somali shillings</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinam Dollar</displayName>
				<displayName count="one">Surinam dollar</displayName>
				<displayName count="other">Surinam dollars</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Suriname Guilder</displayName>
				<displayName count="one">Suriname guilder</displayName>
				<displayName count="other">Suriname guilders</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome and Principe Dobra</displayName>
				<displayName count="one">Sao Tome and Principe dobra</displayName>
				<displayName count="other">Sao Tome and Principe dobras</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Soviet Rouble</displayName>
				<displayName count="one">Soviet rouble</displayName>
				<displayName count="other">Soviet roubles</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvador Colon</displayName>
				<displayName count="one">El Salvador colon</displayName>
				<displayName count="other">El Salvador colons</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Syrian Pound</displayName>
				<displayName count="one">Syrian pound</displayName>
				<displayName count="other">Syrian pounds</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Swaziland Lilangeni</displayName>
				<displayName count="one">Swaziland lilangeni</displayName>
				<displayName count="other">Swaziland lilangenis</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Thai Baht</displayName>
				<displayName count="one">Thai baht</displayName>
				<displayName count="other">Thai bahts</displayName>
				<symbol>฿</symbol>
			</currency>
			<currency type="TJR">
				<displayName>Tajikistan Ruble</displayName>
				<displayName count="one">Tajikistan ruble</displayName>
				<displayName count="other">Tajikistan rubles</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tajikistan Somoni</displayName>
				<displayName count="one">Tajikistan somoni</displayName>
				<displayName count="other">Tajikistan somonis</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmenistan Manat</displayName>
				<displayName count="one">Turkmenistan manat</displayName>
				<displayName count="other">Turkmenistan manats</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunisian Dinar</displayName>
				<displayName count="one">Tunisian dinar</displayName>
				<displayName count="other">Tunisian dinars</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tonga Paʻanga</displayName>
				<displayName count="one">Tonga paʻanga</displayName>
				<displayName count="other">Tonga paʻangas</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timor Escudo</displayName>
				<displayName count="one">Timor escudo</displayName>
				<displayName count="other">Timor escudos</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Old Turkish Lira</displayName>
				<displayName count="one">old Turkish lira</displayName>
				<displayName count="other">Old Turkish Lira</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Turkish Lira</displayName>
				<displayName count="one">Turkish lira</displayName>
				<displayName count="other">Turkish Lira</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad and Tobago Dollar</displayName>
				<displayName count="one">Trinidad and Tobago dollar</displayName>
				<displayName count="other">Trinidad and Tobago dollars</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Taiwan New Dollar</displayName>
				<displayName count="one">Taiwan dollar</displayName>
				<displayName count="other">Taiwan dollars</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanian Shilling</displayName>
				<displayName count="one">Tanzanian shilling</displayName>
				<displayName count="other">Tanzanian shillings</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainian Hryvnia</displayName>
				<displayName count="one">Ukrainian hryvnia</displayName>
				<displayName count="other">Ukrainian hryvnias</displayName>
				<symbol>₴</symbol>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainian Karbovanetz</displayName>
				<displayName count="one">Ukrainian karbovanetz</displayName>
				<displayName count="other">Ukrainian karbovanetzs</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandan Shilling (1966-1987)</displayName>
				<displayName count="one">Ugandan shilling (UGS)</displayName>
				<displayName count="other">Ugandan shillings (UGS)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandan Shilling</displayName>
				<displayName count="one">Ugandan shilling</displayName>
				<displayName count="other">Ugandan shillings</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>US Dollar</displayName>
				<displayName count="one">US dollar</displayName>
				<displayName count="other">US dollars</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>US Dollar (Next day)</displayName>
				<displayName count="one">US dollar (next day)</displayName>
				<displayName count="other">US dollars (next day)</displayName>
			</currency>
			<currency type="USS">
				<displayName>US Dollar (Same day)</displayName>
				<displayName count="one">US dollar (same day)</displayName>
				<displayName count="other">US dollars (same day)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruguay Peso en Unidades Indexadas</displayName>
				<displayName count="one">Uruguay peso en unidades indexadas</displayName>
				<displayName count="other">Uruguay pesos en unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguay Peso (1975-1993)</displayName>
				<displayName count="one">Uruguay peso (UYP)</displayName>
				<displayName count="other">Uruguay pesos (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguay Peso Uruguayo</displayName>
				<displayName count="one">Uruguay peso</displayName>
				<displayName count="other">Uruguay peso</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Uzbekistan Sum</displayName>
				<displayName count="one">Uzbekistan sum</displayName>
				<displayName count="other">Uzbekistan sums</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelan Bolivar</displayName>
				<displayName count="one">Venezuelan bolivar</displayName>
				<displayName count="other">Venezuelan bolivars</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Venezuelan Bolivar Fuerte</displayName>
				<displayName count="one">Venezuelan bolivar fuerte</displayName>
				<displayName count="other">Venezuelan bolivar fuertes</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>Vietnamese Dong</displayName>
				<displayName count="one">Vietnamese dong</displayName>
				<displayName count="other">Vietnamese dongs</displayName>
				<symbol>₫</symbol>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatu Vatu</displayName>
				<displayName count="one">Vanuatu vatu</displayName>
				<displayName count="other">Vanuatu vatus</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Western Samoa Tala</displayName>
				<displayName count="one">Western Samoa tala</displayName>
				<displayName count="other">Western Samoa talas</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA Franc BEAC</displayName>
				<displayName count="one">CFA franc BEAC</displayName>
				<displayName count="other">CFA francs BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Silver</displayName>
				<displayName count="one">Silver</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Gold</displayName>
				<displayName count="one">Gold</displayName>
			</currency>
			<currency type="XBA">
				<displayName>European Composite Unit</displayName>
				<displayName count="one">European composite unit</displayName>
				<displayName count="other">European composite units</displayName>
			</currency>
			<currency type="XBB">
				<displayName>European Monetary Unit</displayName>
				<displayName count="one">European monetary unit</displayName>
				<displayName count="other">European monetary units</displayName>
			</currency>
			<currency type="XBC">
				<displayName>European Unit of Account (XBC)</displayName>
				<displayName count="one">European unit of account (XBC)</displayName>
				<displayName count="other">European units of account (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>European Unit of Account (XBD)</displayName>
				<displayName count="one">European unit of account (XBD)</displayName>
				<displayName count="other">European units of account (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>East Caribbean Dollar</displayName>
				<displayName count="one">East Caribbean dollar</displayName>
				<displayName count="other">East Caribbean dollars</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Special Drawing Rights</displayName>
				<displayName count="one">special drawing rights</displayName>
				<displayName count="other">special drawing rights</displayName>
			</currency>
			<currency type="XEU">
				<displayName>European Currency Unit</displayName>
				<displayName count="one">European currency unit</displayName>
				<displayName count="other">European currency units</displayName>
			</currency>
			<currency type="XFO">
				<displayName>French Gold Franc</displayName>
				<displayName count="one">French gold franc</displayName>
				<displayName count="other">French gold francs</displayName>
			</currency>
			<currency type="XFU">
				<displayName>French UIC-Franc</displayName>
				<displayName count="one">French UIC-franc</displayName>
				<displayName count="other">French UIC-francs</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA Franc BCEAO</displayName>
				<displayName count="one">CFA franc BCEAO</displayName>
				<displayName count="other">CFA francs BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Palladium</displayName>
				<displayName count="one">Palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP Franc</displayName>
				<displayName count="one">CFP franc</displayName>
				<displayName count="other">CFP francs</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Platinum</displayName>
				<displayName count="one">Platinum</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET Funds</displayName>
				<displayName count="one">RINET Funds</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Testing Currency Code</displayName>
				<displayName count="one">Testing Currency Code</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Unknown or Invalid Currency</displayName>
				<displayName count="one">unknown/invalid currency</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Yemeni Dinar</displayName>
				<displayName count="one">Yemeni dinar</displayName>
				<displayName count="other">Yemeni dinars</displayName>
			</currency>
			<currency type="YER">
				<displayName>Yemeni Rial</displayName>
				<displayName count="one">Yemeni rial</displayName>
				<displayName count="other">Yemeni rials</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Yugoslavian Hard Dinar</displayName>
				<displayName count="one">Yugoslavian hard dinar</displayName>
				<displayName count="other">Yugoslavian hard dinars</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Yugoslavian Noviy Dinar</displayName>
				<displayName count="one">Yugoslavian noviy dinar</displayName>
				<displayName count="other">Yugoslavian Noviy dinars</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Yugoslavian Convertible Dinar</displayName>
				<displayName count="one">Yugoslavian convertible dinar</displayName>
				<displayName count="other">Yugoslavian convertible dinars</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>South African Rand (financial)</displayName>
				<displayName count="one">South African rand (financial)</displayName>
				<displayName count="other">South African rands (financial)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>South African Rand</displayName>
				<displayName count="one">South African rand</displayName>
				<displayName count="other">South African rands</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambian Kwacha</displayName>
				<displayName count="one">Zambian kwacha</displayName>
				<displayName count="other">Zambian kwachas</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairean New Zaire</displayName>
				<displayName count="one">Zairean new zaire</displayName>
				<displayName count="other">Zairean new zaires</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairean Zaire</displayName>
				<displayName count="one">Zairean zaire</displayName>
				<displayName count="other">Zairean zaires</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwe Dollar</displayName>
				<displayName count="one">Zimbabwe dollar</displayName>
				<displayName count="other">Zimbabwe dollars</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} day</unitPattern>
			<unitPattern count="other">{0} days</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hour</unitPattern>
			<unitPattern count="other">{0} hours</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minute</unitPattern>
			<unitPattern count="other">{0} minutes</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} month</unitPattern>
			<unitPattern count="other">{0} months</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} second</unitPattern>
			<unitPattern count="other">{0} seconds</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} week</unitPattern>
			<unitPattern count="other">{0} weeks</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} year</unitPattern>
			<unitPattern count="other">{0} years</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[-��6p�p�Locale/Data/sr_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.75 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="sr"/>
		<script type="Latn"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikanerski</language>
			<language type="am">Amharski</language>
			<language type="ar">Arapski</language>
			<language type="as">Asemijski</language>
			<language type="az">Azerbejdžanski</language>
			<language type="be">Beloruski</language>
			<language type="bg">Bugarski</language>
			<language type="bh">Biharski</language>
			<language type="bn">Bengalski</language>
			<language type="br">Bretonski</language>
			<language type="bs">Bosanski</language>
			<language type="ca">Katalonski</language>
			<language type="ce">Čečenski</language>
			<language type="chr">Čeroki</language>
			<language type="co">Korzikanski</language>
			<language type="cs">Češki</language>
			<language type="cu">Staroslovenski</language>
			<language type="cy">Velški</language>
			<language type="da">Danski</language>
			<language type="de">Nemački</language>
			<language type="el">Grčki</language>
			<language type="en">Engleski</language>
			<language type="en_US">Engleski (SAD)</language>
			<language type="eo">Esperanto</language>
			<language type="es">Španski</language>
			<language type="et">Estonski</language>
			<language type="eu">Baskijski</language>
			<language type="fa">Persijski</language>
			<language type="fi">Finski</language>
			<language type="fil">Tagalog</language>
			<language type="fo">Farski</language>
			<language type="fr">Francuski</language>
			<language type="fy">Frizijski</language>
			<language type="ga">Irski</language>
			<language type="gd">Škotski Galski</language>
			<language type="gl">Galski</language>
			<language type="gn">Gvarani</language>
			<language type="gu">Gudžarati</language>
			<language type="haw">Havajski</language>
			<language type="he">Hebrejski</language>
			<language type="hi">Hindi</language>
			<language type="hr">Hrvatski</language>
			<language type="hu">Mađarski</language>
			<language type="hy">Jermenski</language>
			<language type="ia">Interlingva</language>
			<language type="id">Indonezijski</language>
			<language type="ie">Međujezički</language>
			<language type="is">Islandski</language>
			<language type="it">Italijanski</language>
			<language type="ja">Japanski</language>
			<language type="jv">Javanski</language>
			<language type="ka">Gruzijski</language>
			<language type="km">Kmerski</language>
			<language type="kn">Kanada</language>
			<language type="ko">Korejski</language>
			<language type="ku">Kurdski</language>
			<language type="ky">Kirgiski</language>
			<language type="la">Latinski</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laoški</language>
			<language type="lt">Litvanski</language>
			<language type="lv">Letonski</language>
			<language type="mk">Makedonski</language>
			<language type="ml">Malajalam</language>
			<language type="mn">Mongolski</language>
			<language type="mo">Moldavski</language>
			<language type="mr">Marati</language>
			<language type="ms">Malajski</language>
			<language type="mt">Melteški</language>
			<language type="my">Burmanski</language>
			<language type="ne">Nepalski</language>
			<language type="nl">Holandski</language>
			<language type="no">Norveški</language>
			<language type="oc">Provansalski</language>
			<language type="or">Orijski</language>
			<language type="pa">Pandžabski</language>
			<language type="pl">Poljski</language>
			<language type="ps">Paštunski</language>
			<language type="pt">Portugalski</language>
			<language type="pt_PT">Portugalski (Portugalija)</language>
			<language type="rm">Reto-Romanski</language>
			<language type="ro">Rumunski</language>
			<language type="ru">Ruski</language>
			<language type="sa">Sanskrit</language>
			<language type="sd">Sindi</language>
			<language type="sh">Srpsko-Hrvatski</language>
			<language type="si">Singaleski</language>
			<language type="sk">Slovački</language>
			<language type="sl">Slovenački</language>
			<language type="so">Somalski</language>
			<language type="sq">Albanski</language>
			<language type="sr">Srpski</language>
			<language type="st">Sesoto</language>
			<language type="su">Sudanski</language>
			<language type="sux">Sumerski</language>
			<language type="sv">Švedski</language>
			<language type="sw">Svahili</language>
			<language type="ta">Tamilski</language>
			<language type="te">Telugu</language>
			<language type="th">Tajlandski</language>
			<language type="ti">Tigrinja</language>
			<language type="tk">Turkmenski</language>
			<language type="tl">Tagalski</language>
			<language type="tlh">Klingonski</language>
			<language type="tr">Turski</language>
			<language type="tw">Tvi</language>
			<language type="ug">Ujgurski</language>
			<language type="uk">Ukrajinski</language>
			<language type="und">Nepoznat ili nevažeći jezik</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbečki</language>
			<language type="vi">Vijetnamski</language>
			<language type="xh">Hausa</language>
			<language type="yi">Jidiš</language>
			<language type="zh">Kineski</language>
			<language type="zh_Hans">Kineski (pojednostavljen)</language>
			<language type="zh_Hant">Kineski (tradicionalni)</language>
			<language type="zu">Zulu</language>
		</languages>
		<scripts>
			<script type="Arab">arapsko pismo</script>
			<script type="Armn">jermensko pismo</script>
			<script type="Beng">bengalsko pismo</script>
			<script type="Brai">Brajevo pismo</script>
			<script type="Cher">Čeroki</script>
			<script type="Copt">koptičko pismo</script>
			<script type="Cyrl">Ćirilica</script>
			<script type="Cyrs">Staroslovenska crkvena ćirilica</script>
			<script type="Deva">Devanagari</script>
			<script type="Dsrt">Dezeret</script>
			<script type="Ethi">etiopsko pismo</script>
			<script type="Geor">gruzijsko pismo</script>
			<script type="Glag">glagoljica</script>
			<script type="Goth">Gotika</script>
			<script type="Grek">grčko pismo</script>
			<script type="Hans">pojednostavljeno kinesko pismo</script>
			<script type="Hant">tradicionalno kinesko pismo</script>
			<script type="Hebr">hebrejsko pismo</script>
			<script type="Hira">Hiragana</script>
			<script type="Hrkt">Katakana ili Hiragana</script>
			<script type="Kana">Katakana</script>
			<script type="Khmr">kmersko pismo</script>
			<script type="Latf">Latinica (Fraktur varijanta)</script>
			<script type="Latn">Latinica</script>
			<script type="Phnx">Feničansko pismo</script>
			<script type="Runr">runsko pismo</script>
			<script type="Zxxx">Nepisani jezik</script>
			<script type="Zzzz">Nepoznato ili nevažeće pismo</script>
		</scripts>
		<territories>
			<territory type="001">Svet</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Severnoamerički kontinent</territory>
			<territory type="005">Južna Amerika</territory>
			<territory type="009">Okeanija</territory>
			<territory type="011">Zapadna Afrika</territory>
			<territory type="013">Centralna Amerika</territory>
			<territory type="014">Istočna Afrika</territory>
			<territory type="015">Severna Afrika</territory>
			<territory type="017">Centralna Afrika</territory>
			<territory type="018">Južna Afrika</territory>
			<territory type="019">Amerike</territory>
			<territory type="021">Severna Amerika</territory>
			<territory type="029">Karibi</territory>
			<territory type="030">Istočna Azija</territory>
			<territory type="034">Južna Azija</territory>
			<territory type="035">Jugoistočna Azija</territory>
			<territory type="039">Južna Evropa</territory>
			<territory type="053">Australija i Novi Zeland</territory>
			<territory type="054">Melanezija</territory>
			<territory type="057">Micronezija</territory>
			<territory type="061">Polinezija</territory>
			<territory type="062">Južno-centralna Azija</territory>
			<territory type="142">Azija</territory>
			<territory type="145">Zapadna Azija</territory>
			<territory type="150">Evropa</territory>
			<territory type="151">Istočna Evropa</territory>
			<territory type="154">Severna Evropa</territory>
			<territory type="155">Zapadna Evropa</territory>
			<territory type="419">Latinska Amerika i Karibi</territory>
			<territory type="830">Kanalska ostrva</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Ujedinjeni Arapski Emirati</territory>
			<territory type="AF">Avganistan</territory>
			<territory type="AG">Antigva i Barbuda</territory>
			<territory type="AI">Angvila</territory>
			<territory type="AL">Albanija</territory>
			<territory type="AM">Armenija</territory>
			<territory type="AN">Holandski Antili</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Američka Samoa</territory>
			<territory type="AT">Austrija</territory>
			<territory type="AU">Australija</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandska ostrva</territory>
			<territory type="AZ">Azerbejdžan</territory>
			<territory type="BA">Bosna i Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladeš</territory>
			<territory type="BE">Belgija</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bugarska</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunej</territory>
			<territory type="BO">Bolivija</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahami</territory>
			<territory type="BT">Butan</territory>
			<territory type="BV">Buve Ostrva</territory>
			<territory type="BW">Bocvana</territory>
			<territory type="BY">Belorusija</territory>
			<territory type="BZ">Belise</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokos (Keling) Ostrva</territory>
			<territory type="CD">Demokratska Republika Kongo</territory>
			<territory type="CF">Centralno Afrička Republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Švajcarska</territory>
			<territory type="CI">Obala Slonovače</territory>
			<territory type="CK">Kukova Ostrva</territory>
			<territory type="CL">Čile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Kolumbija</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Srbija i Crna Gora</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kape Verde</territory>
			<territory type="CX">Božićna Ostrva</territory>
			<territory type="CY">Kipar</territory>
			<territory type="CZ">Češka</territory>
			<territory type="DE">Nemačka</territory>
			<territory type="DJ">Džibuti</territory>
			<territory type="DK">Danska</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikanska Republika</territory>
			<territory type="DZ">Alžir</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Estonija</territory>
			<territory type="EG">Egipat</territory>
			<territory type="EH">Zapadna Sahara</territory>
			<territory type="ER">Eritreja</territory>
			<territory type="ES">Španija</territory>
			<territory type="ET">Etiopija</territory>
			<territory type="FI">Finska</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Folklandska Ostrva</territory>
			<territory type="FM">Mikronezija</territory>
			<territory type="FO">Farska Ostrva</territory>
			<territory type="FR">Francuska</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Velika Britanija</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzija</territory>
			<territory type="GF">Francuska Gvajana</territory>
			<territory type="GG">Gurnsi</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grenland</territory>
			<territory type="GM">Gambija</territory>
			<territory type="GN">Gvineja</territory>
			<territory type="GP">Gvadelupe</territory>
			<territory type="GQ">Ekvatorijalna Gvineja</territory>
			<territory type="GR">Grčka</territory>
			<territory type="GS">Južna Džordžija i Južna Sendvič Ostrva</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Gvineja-Bisao</territory>
			<territory type="GY">Gvajana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Herd i Mekdonald Ostrva</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Hrvatska</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Mađarska</territory>
			<territory type="ID">Indonezija</territory>
			<territory type="IE">Irska</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Ostrvo Man</territory>
			<territory type="IN">Indija</territory>
			<territory type="IO">Britansko Indijska Okeanska Teritorija</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italija</territory>
			<territory type="JE">Džersi</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenija</territory>
			<territory type="KG">Kirgizstan</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorska Ostrva</territory>
			<territory type="KN">Sent Kits i Nevis</territory>
			<territory type="KP">Severna Koreja</territory>
			<territory type="KR">Južna Koreja</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KY">Kajmanska Ostrva</territory>
			<territory type="KZ">Kazahstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liban</territory>
			<territory type="LC">Sent Lucija</territory>
			<territory type="LI">Lihtenštajn</territory>
			<territory type="LK">Šri Lanka</territory>
			<territory type="LR">Liberija</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litvanija</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="LV">Letonija</territory>
			<territory type="LY">Libija</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavija</territory>
			<territory type="ME">Crna Gora</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Maršalska Ostrva</territory>
			<territory type="MK">Makedonija</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mijanmar</territory>
			<territory type="MN">Mongolija</territory>
			<territory type="MO">Makao</territory>
			<territory type="MP">Severna Marijanska Ostrva</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mauritanija</territory>
			<territory type="MS">Monserat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricius</territory>
			<territory type="MV">Maldivi</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malezija</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibija</territory>
			<territory type="NC">Nova Kaledonija</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk Ostrvo</territory>
			<territory type="NG">Nigerija</territory>
			<territory type="NI">Nikaragva</territory>
			<territory type="NL">Holandija</territory>
			<territory type="NO">Norveška</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Novi Zeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francuska Polinezija</territory>
			<territory type="PG">Papua Nova Gvineja</territory>
			<territory type="PH">Filipini</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poljska</territory>
			<territory type="PM">Sen Pjer i Mikelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Riko</territory>
			<territory type="PS">Palestinska Teritorija</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragvaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Ostala okeanija</territory>
			<territory type="QU">Evropska unija</territory>
			<territory type="RE">Rejunion</territory>
			<territory type="RO">Rumunija</territory>
			<territory type="RS">Srbija</territory>
			<territory type="RU">Rusija</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudijska Arabija</territory>
			<territory type="SB">Solomonska Ostrva</territory>
			<territory type="SC">Sejšeli</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Švedska</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Sveta Jelena</territory>
			<territory type="SI">Slovenija</territory>
			<territory type="SJ">Svalbard i Janmajen Ostrva</territory>
			<territory type="SK">Slovačka</territory>
			<territory type="SL">Sijera Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalija</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome i Principe</territory>
			<territory type="SV">Salvador</territory>
			<territory type="SY">Sirija</territory>
			<territory type="SZ">Svazilend</territory>
			<territory type="TC">Turks i Kajkos Ostrva</territory>
			<territory type="TD">Čad</territory>
			<territory type="TF">Francuske Južne Teritorije</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajland</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Istočni Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunis</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turska</territory>
			<territory type="TT">Trinidad i Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajvan</territory>
			<territory type="TZ">Tanzanija</territory>
			<territory type="UA">Ukrajina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Manja Udaljena Ostrva SAD</territory>
			<territory type="US">Sjedinjene Američke Države</territory>
			<territory type="UY">Urugvaj</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Sent Vinsent i Grenadini</territory>
			<territory type="VE">Venecuela</territory>
			<territory type="VG">Britanska Devičanska Ostrva</territory>
			<territory type="VI">S.A.D. Devičanska Ostrva</territory>
			<territory type="VN">Vijetnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Valis i Futuna Ostrva</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Majote</territory>
			<territory type="ZA">Južnoafrička Republika</territory>
			<territory type="ZM">Zambija</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">Nepoznat ili nevažeći region</territory>
		</territories>
		<keys>
			<key type="calendar">Kalendar</key>
			<key type="collation">Sortiranje</key>
			<key type="currency">Valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Tradicionalno kinesko sortiranje</type>
			<type type="buddhist" key="calendar">Budistički kalendar</type>
			<type type="chinese" key="calendar">Kineski kalendar</type>
			<type type="direct" key="collation">Direktno sortiranje</type>
			<type type="gb2312han" key="collation">Pojednostavljeno kinesko sortiranje</type>
			<type type="gregorian" key="calendar">Gregorijanski kalendar</type>
			<type type="hebrew" key="calendar">Hebrejski kalendar</type>
			<type type="islamic" key="calendar">Islamski kalendar</type>
			<type type="islamic-civil" key="calendar">Islamski civilni kalendar</type>
			<type type="japanese" key="calendar">Japanski kalendar</type>
			<type type="phonebook" key="collation">Sortiranje kao telefonski imenik</type>
			<type type="pinyin" key="collation">Pinjin sortiranje</type>
			<type type="stroke" key="collation">Sortiranje po broju crta</type>
			<type type="traditional" key="collation">Tradicionalno sortiranje</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">SAD</measurementSystemName>
			<measurementSystemName type="metric">Metrički</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c č ć d đ {dž} e-l {lj} m n {nj} o p r s š t-v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">avg</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januar</month>
							<month type="2">februar</month>
							<month type="3">mart</month>
							<month type="4">april</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">avgust</month>
							<month type="9">septembar</month>
							<month type="10">oktobar</month>
							<month type="11">novembar</month>
							<month type="12">decembar</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">j</month>
							<month type="2">f</month>
							<month type="3">m</month>
							<month type="4">a</month>
							<month type="5">m</month>
							<month type="6">j</month>
							<month type="7">j</month>
							<month type="8">a</month>
							<month type="9">s</month>
							<month type="10">o</month>
							<month type="11">n</month>
							<month type="12">d</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ned</day>
							<day type="mon">pon</day>
							<day type="tue">uto</day>
							<day type="wed">sre</day>
							<day type="thu">čet</day>
							<day type="fri">pet</day>
							<day type="sat">sub</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">nedelja</day>
							<day type="mon">ponedeljak</day>
							<day type="tue">utorak</day>
							<day type="wed">sreda</day>
							<day type="thu">četvrtak</day>
							<day type="fri">petak</day>
							<day type="sat">subota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">n</day>
							<day type="mon">p</day>
							<day type="tue">u</day>
							<day type="wed">s</day>
							<day type="thu">č</day>
							<day type="fri">p</day>
							<day type="sat">s</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Prvo tromesečje</quarter>
							<quarter type="2">Drugo tromesečje</quarter>
							<quarter type="3">Treće tromesečje</quarter>
							<quarter type="4">Četvrto tromesečje</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Pre nove ere</era>
						<era type="1">Nove ere</era>
					</eraNames>
					<eraAbbr>
						<era type="0">p. n. e.</era>
						<era type="1">n. e</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">p.n.e.</era>
						<era type="1">n. e.</era>
					</eraNarrow>
				</eras>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH.mm-HH.mmv</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mmv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HHv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yy - M.yy</greatestDifference>
							<greatestDifference id="y">M.yy - M.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>godina</displayName>
					</field>
					<field type="month">
						<displayName>mesec</displayName>
					</field>
					<field type="week">
						<displayName>nedelja</displayName>
					</field>
					<field type="day">
						<displayName>dan</displayName>
						<relative type="0">danas</relative>
						<relative type="1">sutra</relative>
						<relative type="2">prekosutra</relative>
						<relative type="3">za tri dana</relative>
						<relative type="-1">juče</relative>
						<relative type="-2">prekjuče</relative>
						<relative type="-3">pre tri dana</relative>
					</field>
					<field type="weekday">
						<displayName>dan u nedelji</displayName>
					</field>
					<field type="dayperiod">
						<displayName>doba dana</displayName>
					</field>
					<field type="hour">
						<displayName>čas</displayName>
					</field>
					<field type="minute">
						<displayName>minut</displayName>
					</field>
					<field type="second">
						<displayName>sekund</displayName>
					</field>
					<field type="zone">
						<displayName>zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<zone type="Etc/Unknown">
				<exemplarCity>Nepoznat ili nevažeći grad</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubai</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kabul</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Antigva</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Angvila</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Kiraso</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>Luanda</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>Rotera</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>Palmer</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Južni pol</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>Šova</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>Moson</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Dejvis</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Vostok</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Kasej</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dimon d’Urvil</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>MakMurdo</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Buenos Aires</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Pago Pago</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Beč</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Aruba</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Baku</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbados</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Daka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brisel</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>Uagadugu</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofija</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>Budžumbura</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novo</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudi</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Bruneji</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>La Paz</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Rio Branko</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Porto Veljo</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>Boa Vista</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>Manaus</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Kuiaba</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Kampo Grande</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belem</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Aragvajana</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Sao Paolo</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>Fortaleza</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Masejo</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>Resife</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Noronja</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>Nasau</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Thimphu</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Gaboron</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Minsk</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belize</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Kokosova ostrva</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinšasa</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Lumumbaši</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Bangui</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Brazavil</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Cirih</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidžan</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>Rarotonga</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Uskršnje ostrvo</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Santijago</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>Duala</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Šangaj</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogota</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havana</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kape Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Božićno ostrvo</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikozija</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlin</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhagen</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Santo Domingo</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžir</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapagos</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Gvajakil</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Talin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>El Ajun</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmera</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarska ostrva</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Seuta</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madrid</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Adis Abeba</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Helsinki</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Stenli</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Truk</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Ponape</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Košre</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Farska Ostrva</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Pariz</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Librevil</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>London</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Grenada</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tbilisi</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Kajen</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>Akra</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibraltar</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Tule</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Nuk</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Skorezbisund</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Danmarkshagen</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>Banžul</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Konakri</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gvadalupe</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Malabo</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atina</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Južna Džordžija</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Guam</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Bisao</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Guana</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hong Kong</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Port-o-Prens</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budimpešta</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Džakarta</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Makasar</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Džajapura</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dablin</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>Čagos</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Rejkjavik</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rim</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Aman</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Najrobi</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biškek</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>Pnom Pen</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Enderberi</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Kiritimati</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Tarava</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komoro</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>Sent Kits</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Pjongjang</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvajt</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kajmanska ostrva</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Akutobe</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma-Ata</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Vijetijan</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Bejrut</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Sv. Lucija</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Vaduc</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Kolombo</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Monrovija</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>Maseru</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Viljnus</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburg</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Riga</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Tripoli</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Kazablanka</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Kišnjev</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Antananarivo</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Kvadžalejin</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Majuro</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>Bamako</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Rangun</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>Hovd</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Čojbalsan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makau</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Sajpan</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinik</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>Navakšut</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Montserat</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Malta</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricijus</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivi</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>Blantir</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>Kuala Lumpur</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>Maputo</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>Vindhuk</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>Numea</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>Nijamej</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Norfolk</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>Lagos</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Managva</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Amsterdam</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Oslo</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Katmandu</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Nauru</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Niue</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>Okland</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Muskat</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panama</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>Lima</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Tahiti</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Markiz</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Gambije</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>Port Morzbi</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Manila</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>Karači</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšava</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Mikelon</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitkairn</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Riko</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Gaza</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azori</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabon</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Palau</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunsion</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Ujedinjenje</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukurešt</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadir</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>Kigali</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijad</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Gvadalkanal</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>Mahe</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Kartum</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stokholm</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sveta Jelena</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Fritaun</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Dakar</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadiš</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>Paramirbo</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Sao Tome</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damask</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>Mbabane</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Grand Turk</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Ndžamena</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>Kergelen</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Lome</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Bankok</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dušanbe</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>Fakaofo</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Dili</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ašhabad</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunis</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>Tongatapu</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Istanbul</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port of Spejn</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>Fanafuti</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Tajpej</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>Dar-es-Salam</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Užgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijev</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporožje</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>Kampala</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Midvej</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Džonston</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Vake</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Enkoridž</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Montevideo</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Sent Vinsent</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Karakas</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>Tortola</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Sv. Toma</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Efate</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>Valis</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Apija</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Aden</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Majote</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Johanesburg</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Lusaka</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>Harare</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Srednje Evropsko Vreme</standard>
					<daylight>Centralno Evropsko Letnje Vreme</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="AED">
				<displayName>Ujedinjeni arapski emirati dirham</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinski pezo</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Austrijski šiling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australijski dolar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Konvertibilna marka</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgijski franak</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bugarski lev</displayName>
			</currency>
			<currency type="BND">
				<displayName>Brunejski dolar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolivijski Boliviano</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilski Real</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanadski dolar</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Švajcarski franak</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Čileanski pezo</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Kineski Juan Renminbi</displayName>
				<symbol>U</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kolumbijski pezo</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Srpski Dinar (Srbija i Crna Gora)</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Češka kruna</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Nemačka marka</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Danska kruna</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estonska kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egipatska funta</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Španska pezeta</displayName>
			</currency>
			<currency type="EUR">
				<displayName>EVRO</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finska marka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidži dolar</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Francuski franak</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Funta sterlinga</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Drahma</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kongski Dolari</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Hrvatski dinar</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Mađarska forinta</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indonezijska rupiah</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Irska funta</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Izraelski šekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijski Rupi</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italijanska lira</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Jen</displayName>
			</currency>
			<currency type="KES">
				<displayName>Kenijski šiling</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Južno-korejski Von</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuvajtski dinar</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litvanski litas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luksemburški franak</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Marokanski dirham</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Malteška lira</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Meksički peso</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malezijski ringgit</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Holandski gulden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norveška kruna</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Novozelandski dolar</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruanski nuevo sol</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipinski peso</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistanski rupi</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugalski eskudo</displayName>
			</currency>
			<currency type="RON">
				<displayName>Rumunski leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Srpski Dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ruska rublja</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Ruska rublja (1991-1998)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Švedska kruna</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapurski dolar</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovačka kruna</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turska lira</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Nova turska lira</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Novi tajvanski dolar</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukrajinska hrivnja</displayName>
			</currency>
			<currency type="USD">
				<displayName>Američki dolar</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venecuelanski bolivar</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vijetnamski dong</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Nepoznata ili nevažeća valuta</displayName>
			</currency>
			<currency type="YUN">
				<symbol>Din</symbol>
			</currency>
			<currency type="ZAR">
				<displayName>Južna Afrika Rand</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>da:d</yesstr>
			<nostr>ne:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[)�?��Locale/Data/en_BE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="en"/>
		<territory type="BE"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH 'h' mm 'min' ss 's' v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM - E d MMM</greatestDifference>
							<greatestDifference id="d">E d - E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BEF">
				<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�3��##Locale/Data/mk_MK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="mk"/>
		<territory type="MK"/>
	</identity>
</ldml>
PKpG[{���Locale/Data/ar_MA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="MA"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<numbers>
		<symbols>
			<nativeZeroDigit>0</nativeZeroDigit>
		</symbols>
	</numbers>
</ldml>
PKpG[�L�""Locale/Data/pa_Guru.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.12 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="pa"/>
		<script type="Guru"/>
	</identity>
</ldml>
PKpG[�fO=$$Locale/Data/byn_ER.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="byn"/>
		<territory type="ER"/>
	</identity>
</ldml>
PKpG[o@n�	�	�Locale/Data/be.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.76 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="be"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="ab">абхазская</language>
			<language type="ady">адыгейская</language>
			<language type="af">афрыкаанс</language>
			<language type="afa">афра-азіяцкая мова</language>
			<language type="akk">акадзкая</language>
			<language type="ale">алеуцкая</language>
			<language type="am">амхарская</language>
			<language type="an">арагонская</language>
			<language type="ang">стараанглійская</language>
			<language type="ar">арабская</language>
			<language type="arc">арамейская</language>
			<language type="art">штучная мова</language>
			<language type="as">асамская</language>
			<language type="ast">астурыйская</language>
			<language type="aus">аўстралійская</language>
			<language type="av">аварская</language>
			<language type="ay">аймара</language>
			<language type="az">азербайджанская</language>
			<language type="ba">башкірская</language>
			<language type="be">беларуская</language>
			<language type="bg">балгарская</language>
			<language type="bh">біхары</language>
			<language type="bn">бенгальская</language>
			<language type="br">брэтонская</language>
			<language type="bs">баснійская</language>
			<language type="bua">бурацкая</language>
			<language type="ca">каталонская</language>
			<language type="cai">мова індзейцаў Цэнтральнай Амерыкі</language>
			<language type="cau">каўказская мова</language>
			<language type="ce">чачэнская</language>
			<language type="cel">кельцкая мова</language>
			<language type="chb">чыбча</language>
			<language type="cop">копцкая</language>
			<language type="cs">чэшская</language>
			<language type="cus">кушыцкая мова</language>
			<language type="cv">чувашская</language>
			<language type="cy">валійская</language>
			<language type="da">дацкая</language>
			<language type="de">нямецкая</language>
			<language type="de_AT">нямецкая (аўстр.)</language>
			<language type="de_CH">нямецкая (швейц.)</language>
			<language type="egy">стараэгіпецкая</language>
			<language type="el">грэцкая</language>
			<language type="en">англійская</language>
			<language type="en_AU">англійская (аўстрал.)</language>
			<language type="en_CA">англійская (канад.)</language>
			<language type="en_GB">англійская (Вялікабрытанія)</language>
			<language type="en_US">англійская (ЗША)</language>
			<language type="eo">эсперанта</language>
			<language type="es">іспанская</language>
			<language type="es_419">іспанская (лацінаамер.)</language>
			<language type="et">эстонская</language>
			<language type="eu">баскская</language>
			<language type="fa">фарсі</language>
			<language type="fi">фінская</language>
			<language type="fil">тагальская</language>
			<language type="fo">фарэрская</language>
			<language type="fr">французская</language>
			<language type="fr_CA">французская (канад.)</language>
			<language type="fr_CH">французская (швейц.)</language>
			<language type="fro">старафранцузская</language>
			<language type="fy">фрызская</language>
			<language type="ga">ірландская</language>
			<language type="gd">шатландская гэльская</language>
			<language type="gl">галісійская</language>
			<language type="gn">гуарані</language>
			<language type="grc">старагрэцкая</language>
			<language type="gu">гуяраці</language>
			<language type="he">іўрыт</language>
			<language type="hi">хіндзі</language>
			<language type="hr">харвацкая</language>
			<language type="hu">венгерская</language>
			<language type="hy">армянская</language>
			<language type="ia">інтэрлінгва</language>
			<language type="id">інданезійская</language>
			<language type="ie">інтэрлінгве</language>
			<language type="is">ісландская</language>
			<language type="it">італьянская</language>
			<language type="ja">японская</language>
			<language type="jv">яванская</language>
			<language type="ka">грузінская</language>
			<language type="kk">казахская</language>
			<language type="kn">каннада</language>
			<language type="ko">карэйская</language>
			<language type="ku">курдская</language>
			<language type="la">лацінская</language>
			<language type="ln">лінгала</language>
			<language type="lo">лаоская</language>
			<language type="lol">монга</language>
			<language type="lt">літоўская</language>
			<language type="luo">луо</language>
			<language type="lv">латышская</language>
			<language type="man">мандынга</language>
			<language type="map">аўстранезійская</language>
			<language type="mas">масаі</language>
			<language type="men">мендэ</language>
			<language type="mg">мальгашская</language>
			<language type="mk">македонская</language>
			<language type="ml">малаяламская</language>
			<language type="mn">мангольская</language>
			<language type="mo">малдаўская</language>
			<language type="mos">мосі</language>
			<language type="mr">маратхі</language>
			<language type="ms">малайская</language>
			<language type="mt">мальтыйская</language>
			<language type="nai">мова індзейцаў Паўночнай Амерыкі</language>
			<language type="nb">нарвэская букмал</language>
			<language type="ne">непальская</language>
			<language type="nl">галандская</language>
			<language type="nl_BE">фламандская</language>
			<language type="nn">нарвежская (нюнорск)</language>
			<language type="no">нарвежская</language>
			<language type="nog">нагайская</language>
			<language type="non">старанарвежская</language>
			<language type="nub">нубійская мова</language>
			<language type="oc">правансальская</language>
			<language type="oj">аджыбве</language>
			<language type="or">орыя</language>
			<language type="os">асецінская</language>
			<language type="pa">панджабі</language>
			<language type="peo">стараперсідская</language>
			<language type="phn">фінікійская</language>
			<language type="pl">польская</language>
			<language type="pro">стараправансальская</language>
			<language type="ps">пушту</language>
			<language type="pt">партугальская</language>
			<language type="pt_BR">партугальская (бразіл.)</language>
			<language type="qu">кечуа</language>
			<language type="raj">раджастханская</language>
			<language type="rm">рэта-раманская</language>
			<language type="ro">румынская</language>
			<language type="ru">руская</language>
			<language type="sa">санскрыт</language>
			<language type="sah">якуцкая</language>
			<language type="sai">мова індзейцаў Паўднёвай Амерыкі</language>
			<language type="sd">сіндхі</language>
			<language type="sem">семіцкая мова</language>
			<language type="sga">стараірландская</language>
			<language type="sgn">знакавая мова</language>
			<language type="sh">сербска-харвацкая</language>
			<language type="si">сінгальская</language>
			<language type="sit">кітайска-тыбецкая мова</language>
			<language type="sk">славацкая</language>
			<language type="sl">славенская</language>
			<language type="sla">славянская мова</language>
			<language type="so">самалійская</language>
			<language type="sq">албанская</language>
			<language type="sr">сербская</language>
			<language type="su">суданская</language>
			<language type="sux">шумерская</language>
			<language type="sv">шведская</language>
			<language type="sw">суахілі</language>
			<language type="ta">тамільская</language>
			<language type="tai">мова таі</language>
			<language type="te">тэлугу</language>
			<language type="tg">таджыкская</language>
			<language type="th">тайская</language>
			<language type="ti">тыгрынья</language>
			<language type="tk">туркменская</language>
			<language type="tlh">клінгон</language>
			<language type="tr">турэцкая</language>
			<language type="tt">татарская</language>
			<language type="tup">мова тупі</language>
			<language type="tut">алтайская мова</language>
			<language type="tyv">тувінская</language>
			<language type="ug">уйгурская</language>
			<language type="uk">украінская</language>
			<language type="und">невядомая мова</language>
			<language type="ur">урду</language>
			<language type="uz">узбекская</language>
			<language type="vi">в'етнамская</language>
			<language type="vo">валапюк</language>
			<language type="xh">хоса</language>
			<language type="yi">ідыш</language>
			<language type="zap">сапатэкаў</language>
			<language type="zh">кітайская</language>
			<language type="zh_Hans">спрошчаная кітайская</language>
			<language type="zh_Hant">традыцыйная кітайская</language>
			<language type="zu">зулу</language>
		</languages>
		<scripts>
			<script type="Arab">арабскае</script>
			<script type="Armn">армянскае</script>
			<script type="Cyrl">кірылічны</script>
			<script type="Geor">грузінскае</script>
			<script type="Hans">спрошчанае кітайскае</script>
			<script type="Hant">традыцыйнае кітайскае</script>
			<script type="Hebr">габрэйскае</script>
			<script type="Jpan">японскае</script>
			<script type="Latn">лацінскі</script>
			<script type="Zxxx">чысты</script>
			<script type="Zzzz">невядомы або недапушчальны пераклад</script>
		</scripts>
		<territories>
			<territory type="001">Свет</territory>
			<territory type="002">Афрыка</territory>
			<territory type="003">Паўночная Амэрыка</territory>
			<territory type="005">Паўднёвая Амэрыка</territory>
			<territory type="009">Акіянія</territory>
			<territory type="011">Заходняя Афрыка</territory>
			<territory type="013">Цэнтральная Амэрыка</territory>
			<territory type="014">Усходняя Афрыка</territory>
			<territory type="015">Паўночная Афрыка</territory>
			<territory type="017">Цэнтральная Афрыка</territory>
			<territory type="018">Паўднёвая Афрыка</territory>
			<territory type="019">Паўночная і Паўднёвая Амерыкі</territory>
			<territory type="021">ЗША і Канада</territory>
			<territory type="029">Карыбскія астравы</territory>
			<territory type="030">Усходняя Азія</territory>
			<territory type="034">Паўднёвая Азія</territory>
			<territory type="035">Паўднёва-Усходняя Азія</territory>
			<territory type="039">Паўднёвая Еўропа</territory>
			<territory type="053">Аўстралія і Новая Зэландыя</territory>
			<territory type="061">Палінезія</territory>
			<territory type="062">Паўднёва-Цэнтральная Азія</territory>
			<territory type="142">Азія</territory>
			<territory type="143">Цэнтральная Азія</territory>
			<territory type="145">Заходняя Азія</territory>
			<territory type="150">Еўропа</territory>
			<territory type="151">Усходняя Еўропа</territory>
			<territory type="154">Паўночная Еўропа</territory>
			<territory type="155">Заходняя Еўропа</territory>
			<territory type="172">Садружнасць Незалежных Дзяржаў</territory>
			<territory type="AD">Андора</territory>
			<territory type="AE">Аб'яднаныя Арабскія Эміраты</territory>
			<territory type="AF">Афганістан</territory>
			<territory type="AG">Антыгуа і Барбуда</territory>
			<territory type="AI">Ангуілля</territory>
			<territory type="AL">Албанія</territory>
			<territory type="AM">Арменія</territory>
			<territory type="AN">Нідэрландскія Антылы</territory>
			<territory type="AO">Ангола</territory>
			<territory type="AQ">Антарктыка</territory>
			<territory type="AR">Аргенціна</territory>
			<territory type="AS">Амерыканскае Самоа</territory>
			<territory type="AT">Аўстрыя</territory>
			<territory type="AU">Аўстралія</territory>
			<territory type="AW">Аруба</territory>
			<territory type="AX">Аландскія астравы</territory>
			<territory type="AZ">Азербайджан</territory>
			<territory type="BA">Боснія і Герцагавіна</territory>
			<territory type="BB">Барбадас</territory>
			<territory type="BD">Бангладэш</territory>
			<territory type="BE">Бельгія</territory>
			<territory type="BF">Буркіна-Фасо</territory>
			<territory type="BG">Балгарыя</territory>
			<territory type="BH">Бахрэйн</territory>
			<territory type="BI">Бурундзі</territory>
			<territory type="BJ">Бенін</territory>
			<territory type="BM">Бермудскія астравы</territory>
			<territory type="BN">Бруней-Дарусалам</territory>
			<territory type="BO">Балівія</territory>
			<territory type="BR">Бразілія</territory>
			<territory type="BS">Багамскія Астравы</territory>
			<territory type="BT">Бутан</territory>
			<territory type="BV">Бувэ востраў</territory>
			<territory type="BW">Батсвана</territory>
			<territory type="BY">Беларусь</territory>
			<territory type="BZ">Беліз</territory>
			<territory type="CA">Канада</territory>
			<territory type="CC">Какосавыя астравы</territory>
			<territory type="CD">Конга, Дэмакратычная Рэспубліка</territory>
			<territory type="CF">Цэнтральна-Афрыканская Рэспубліка</territory>
			<territory type="CG">Конга</territory>
			<territory type="CH">Швейцарыя</territory>
			<territory type="CK">Кука астравы</territory>
			<territory type="CL">Чылі</territory>
			<territory type="CM">Камерун</territory>
			<territory type="CN">Кітай</territory>
			<territory type="CO">Калумбія</territory>
			<territory type="CR">Коста-Рыка</territory>
			<territory type="CU">Куба</territory>
			<territory type="CV">Каба-Вердэ</territory>
			<territory type="CX">Калядаў востраў</territory>
			<territory type="CY">Кіпр</territory>
			<territory type="CZ">Чэхія</territory>
			<territory type="DE">Германія</territory>
			<territory type="DJ">Джыбуці</territory>
			<territory type="DK">Данія</territory>
			<territory type="DM">Дамініка</territory>
			<territory type="DO">Дамініканская Рэспубліка</territory>
			<territory type="DZ">Алжыр</territory>
			<territory type="EC">Эквадор</territory>
			<territory type="EE">Эстонія</territory>
			<territory type="EG">Егіпет</territory>
			<territory type="EH">Заходняя Сахара</territory>
			<territory type="ER">Эрытрэя</territory>
			<territory type="ES">Іспанія</territory>
			<territory type="ET">Эфіопія</territory>
			<territory type="FI">Фінляндыя</territory>
			<territory type="FJ">Фіджы</territory>
			<territory type="FK">Фолклэндскія астравы</territory>
			<territory type="FM">Мікранезія</territory>
			<territory type="FR">Францыя</territory>
			<territory type="GA">Габон</territory>
			<territory type="GB">Велікабрытанія</territory>
			<territory type="GD">Грэнада</territory>
			<territory type="GE">Грузія</territory>
			<territory type="GF">Французская Гвіяна</territory>
			<territory type="GH">Гана</territory>
			<territory type="GI">Гібралтар</territory>
			<territory type="GL">Грэнландыя</territory>
			<territory type="GM">Гамбія</territory>
			<territory type="GN">Гвінея</territory>
			<territory type="GP">Гвадэлупа</territory>
			<territory type="GQ">Экватарыяльная Гвінея</territory>
			<territory type="GR">Грэцыя</territory>
			<territory type="GS">Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы</territory>
			<territory type="GT">Гватэмала</territory>
			<territory type="GW">Гвінея-Бісаў</territory>
			<territory type="GY">Гаяна</territory>
			<territory type="HK">Гон-Конг</territory>
			<territory type="HM">Гэрда востраў і МакДоналда астравы</territory>
			<territory type="HN">Гандурас</territory>
			<territory type="HR">Харватыя</territory>
			<territory type="HT">Гаіці</territory>
			<territory type="HU">Венгрыя</territory>
			<territory type="ID">Інданезія</territory>
			<territory type="IE">Ірландыя</territory>
			<territory type="IL">Ізраіль</territory>
			<territory type="IN">Індыя</territory>
			<territory type="IO">Брытанская тэрыторыя Індыйскага акіяну</territory>
			<territory type="IQ">Ірак</territory>
			<territory type="IR">Іран, Ісламская Рэспубліка</territory>
			<territory type="IS">Ісландыя</territory>
			<territory type="IT">Італія</territory>
			<territory type="JM">Ямайка</territory>
			<territory type="JO">Іарданія</territory>
			<territory type="JP">Японія</territory>
			<territory type="KE">Кенія</territory>
			<territory type="KG">Кыргызстан</territory>
			<territory type="KH">Камбоджа</territory>
			<territory type="KI">Кірыбаці</territory>
			<territory type="KM">Каморскія Астравы</territory>
			<territory type="KN">Сэнт-Кітс і Нэвіс</territory>
			<territory type="KP">Паўночная Карэя</territory>
			<territory type="KR">Паўднёвая Карэя</territory>
			<territory type="KW">Кувейт</territory>
			<territory type="KY">Кайманавы астравы</territory>
			<territory type="KZ">Казахстан</territory>
			<territory type="LA">Лаоская Народна-Дэмакратычная Рэспубліка</territory>
			<territory type="LB">Ліван</territory>
			<territory type="LC">Сэнт-Люсія</territory>
			<territory type="LI">Ліхтэнштэйн</territory>
			<territory type="LK">Шры-Ланка</territory>
			<territory type="LR">Ліберыя</territory>
			<territory type="LS">Лесота</territory>
			<territory type="LT">Літва</territory>
			<territory type="LU">Люксембург</territory>
			<territory type="LV">Латвія</territory>
			<territory type="LY">Лівійская Арабская Джамахірыя</territory>
			<territory type="MA">Марока</territory>
			<territory type="MC">Манака</territory>
			<territory type="MD">Малдова</territory>
			<territory type="ME">Чарнагорыя</territory>
			<territory type="MG">Мадагаскар</territory>
			<territory type="MH">Маршалавы Астравы</territory>
			<territory type="MK">Македонія, БЮР</territory>
			<territory type="ML">Малі</territory>
			<territory type="MM">М'янма</territory>
			<territory type="MN">Манголія</territory>
			<territory type="MO">Макао</territory>
			<territory type="MP">Паўночныя Марыянскія астравы</territory>
			<territory type="MQ">Марцініка</territory>
			<territory type="MR">Маўрытанія</territory>
			<territory type="MS">Монсэрат</territory>
			<territory type="MT">Мальта</territory>
			<territory type="MU">Маўрыкій</territory>
			<territory type="MV">Мальдыўскія Астравы</territory>
			<territory type="MW">Малаві</territory>
			<territory type="MX">Мексіка</territory>
			<territory type="MY">Малайзія</territory>
			<territory type="MZ">Мазамбік</territory>
			<territory type="NA">Намібія</territory>
			<territory type="NC">Новая Каледонія</territory>
			<territory type="NE">Нігер</territory>
			<territory type="NF">Норфалкскія астравы</territory>
			<territory type="NG">Нігерыя</territory>
			<territory type="NI">Нікарагуа</territory>
			<territory type="NL">Нідэрланды</territory>
			<territory type="NO">Нарвегія</territory>
			<territory type="NP">Непал</territory>
			<territory type="NR">Науру</territory>
			<territory type="NU">Ніуэ</territory>
			<territory type="NZ">Новая Зеландыя</territory>
			<territory type="OM">Аман</territory>
			<territory type="PA">Панама</territory>
			<territory type="PE">Перу</territory>
			<territory type="PF">Франузская Палінэзія</territory>
			<territory type="PG">Папуа-Новая Гвінея</territory>
			<territory type="PH">Філіпіны</territory>
			<territory type="PK">Пакістан</territory>
			<territory type="PL">Польшча</territory>
			<territory type="PS">Палестынскія тэрыторыі</territory>
			<territory type="PT">Партугалія</territory>
			<territory type="PW">Палаў</territory>
			<territory type="PY">Парагвай</territory>
			<territory type="QA">Катар</territory>
			<territory type="QO">Вонкавая Акіянія</territory>
			<territory type="QU">Еўрапейскі Звяз</territory>
			<territory type="RE">Рэюньён</territory>
			<territory type="RO">Румынія</territory>
			<territory type="RS">Сербія</territory>
			<territory type="RU">Расія</territory>
			<territory type="RW">Руанда</territory>
			<territory type="SA">Саудаўская Аравія</territory>
			<territory type="SB">Саламонавы Астравы</territory>
			<territory type="SC">Сейшэльскія Астравы</territory>
			<territory type="SD">Судан</territory>
			<territory type="SE">Швецыя</territory>
			<territory type="SG">Сінгапур</territory>
			<territory type="SH">Святой Алены, Востраў</territory>
			<territory type="SI">Славенія</territory>
			<territory type="SJ">Свальбард (Паўночна-Усходняя Зямля) і Ян-Маен</territory>
			<territory type="SK">Славакія</territory>
			<territory type="SL">Сьера-Леонэ</territory>
			<territory type="SN">Сенегал</territory>
			<territory type="SO">Самалі</territory>
			<territory type="SR">Сурынам</territory>
			<territory type="ST">Сан-Томэ і Прынсіпі</territory>
			<territory type="SV">Сальвадор</territory>
			<territory type="SY">Сірыйская Арабская Рэспубліка</territory>
			<territory type="SZ">Свазіленд</territory>
			<territory type="TC">Тэркс і Кайкас астравы</territory>
			<territory type="TD">Чад</territory>
			<territory type="TF">Французскія Паўднёвыя тэрыторыі</territory>
			<territory type="TG">Тога</territory>
			<territory type="TH">Тайланд</territory>
			<territory type="TJ">Таджыкістан</territory>
			<territory type="TK">Такелаў</territory>
			<territory type="TL">Усходні Тымор</territory>
			<territory type="TM">Туркменістан</territory>
			<territory type="TN">Туніс</territory>
			<territory type="TO">Тангійская</territory>
			<territory type="TR">Турцыя</territory>
			<territory type="TT">Трынідад і Табага</territory>
			<territory type="TV">Тувалу</territory>
			<territory type="TW">Тайвань</territory>
			<territory type="TZ">Танзанія, Аб'яднаная Рэспубліка</territory>
			<territory type="UA">Украіна</territory>
			<territory type="UG">Уганда</territory>
			<territory type="US">Злучаныя Штаты</territory>
			<territory type="UY">Уругвай</territory>
			<territory type="UZ">Узбекістан</territory>
			<territory type="VA">Ватыкан</territory>
			<territory type="VC">Сэнт-Вінсэнт і Грэнадыны</territory>
			<territory type="VE">Венесуэла</territory>
			<territory type="VG">Віргінскія астравы</territory>
			<territory type="VI">Віргінскія астравы, ЗША</territory>
			<territory type="VN">В'етнам</territory>
			<territory type="VU">Вануату</territory>
			<territory type="WF">Уоліс і Футуна</territory>
			<territory type="WS">Самоа (Заходняе)</territory>
			<territory type="YE">Емен</territory>
			<territory type="ZA">Паўднёва-Афрыканская Рэспубліка</territory>
			<territory type="ZM">Замбія</territory>
			<territory type="ZW">Зімбабвэ</territory>
			<territory type="ZZ">Невядомы рэгіён</territory>
		</territories>
		<keys>
			<key type="calendar">каляндар</key>
			<key type="collation">параўнаньне тэксту</key>
			<key type="currency">валюта</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">будысцкі каляндар</type>
			<type type="chinese" key="calendar">кітайскі каляндар</type>
			<type type="gregorian" key="calendar">грэгарыянскі каляндар</type>
			<type type="hebrew" key="calendar">іудэйскі каляндар</type>
			<type type="islamic" key="calendar">мусульманскі каляндар</type>
			<type type="islamic-civil" key="calendar">мусульманскі свецкі каляндар</type>
			<type type="japanese" key="calendar">японскі каляндар</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ЗША</measurementSystemName>
			<measurementSystemName type="metric">метрычная</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Мова: {0}</codePattern>
			<codePattern type="script">Пісьмо: {0}</codePattern>
			<codePattern type="territory">Рэгіён: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[а-д {дж} {дз} е ё ж з й і к-у ў ф-ш ы-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>«</alternateQuotationStart>
		<alternateQuotationEnd>»</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Md">dd.MM</dateFormatItem>
						<dateFormatItem id="yyyyM">MM.yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="chinese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Md">dd.MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyM">MM.yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1-шы кв.</quarter>
							<quarter type="2">2-гі кв.</quarter>
							<quarter type="3">3-ці кв.</quarter>
							<quarter type="4">4-ты кв.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-шы квартал</quarter>
							<quarter type="2">2-гі квартал</quarter>
							<quarter type="3">3-ці квартал</quarter>
							<quarter type="4">4-ты квартал</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">сту</month>
							<month type="2">лют</month>
							<month type="3">сак</month>
							<month type="4">кра</month>
							<month type="5">май</month>
							<month type="6">чэр</month>
							<month type="7">ліп</month>
							<month type="8">жні</month>
							<month type="9">вер</month>
							<month type="10">кас</month>
							<month type="11">ліс</month>
							<month type="12">сне</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="5">т</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">студзень</month>
							<month type="2">люты</month>
							<month type="3">сакавік</month>
							<month type="4">красавік</month>
							<month type="5">май</month>
							<month type="6">чэрвень</month>
							<month type="7">ліпень</month>
							<month type="8">жнівень</month>
							<month type="9">верасень</month>
							<month type="10">кастрычнік</month>
							<month type="11">лістапад</month>
							<month type="12">снежань</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="5">тра</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">с</month>
							<month type="2">л</month>
							<month type="3">с</month>
							<month type="4">к</month>
							<month type="5">м</month>
							<month type="6">ч</month>
							<month type="7">л</month>
							<month type="8">ж</month>
							<month type="9">в</month>
							<month type="10">к</month>
							<month type="11">л</month>
							<month type="12">с</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="5">травень</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">нд</day>
							<day type="mon">пн</day>
							<day type="tue">аў</day>
							<day type="wed">ср</day>
							<day type="thu">чц</day>
							<day type="fri">пт</day>
							<day type="sat">сб</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">нядзеля</day>
							<day type="mon">панядзелак</day>
							<day type="tue">аўторак</day>
							<day type="wed">серада</day>
							<day type="thu">чацвер</day>
							<day type="fri">пятніца</day>
							<day type="sat">субота</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">н</day>
							<day type="mon">п</day>
							<day type="tue">а</day>
							<day type="wed">с</day>
							<day type="thu">ч</day>
							<day type="fri">п</day>
							<day type="sat">с</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1-шы кв.</quarter>
							<quarter type="2">2-гі кв.</quarter>
							<quarter type="3">3-ці кв.</quarter>
							<quarter type="4">4-ты кв.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-шы квартал</quarter>
							<quarter type="2">2-гі квартал</quarter>
							<quarter type="3">3-ці квартал</quarter>
							<quarter type="4">4-ты квартал</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>да палудня</am>
				<pm>пасля палудня</pm>
				<eras>
					<eraNames>
						<era type="0">да н.э.</era>
						<era type="1">н.э.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">да н.е.</era>
						<era type="1">н.е.</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">да н.э.</era>
						<era type="1">н.э.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{0} {1}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d MMM</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E, d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">MMMM d, EEEE</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, dd/MM/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q 'кв'. yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M - E, d.M</greatestDifference>
							<greatestDifference id="d">E, d.M - E, d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M - d.M</greatestDifference>
							<greatestDifference id="d">d.M - d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yy - M.yy</greatestDifference>
							<greatestDifference id="y">M.yy - M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="d">E, d.M.yy - E, d.M.yy</greatestDifference>
							<greatestDifference id="y">E, d.M.yy - E, d.M.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="d">d.M.yy - d.M.yy</greatestDifference>
							<greatestDifference id="y">d.M.yy - d.M.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>эра</displayName>
					</field>
					<field type="year">
						<displayName>год</displayName>
					</field>
					<field type="month">
						<displayName>месяц</displayName>
					</field>
					<field type="week">
						<displayName>тыдзень</displayName>
					</field>
					<field type="day">
						<displayName>дзень</displayName>
						<relative type="0">сёння</relative>
						<relative type="1">заўтра</relative>
						<relative type="2">паслязаўтра</relative>
						<relative type="-1">учора</relative>
						<relative type="-2">пазаўчора</relative>
					</field>
					<field type="weekday">
						<displayName>дзень тыдня</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dayperiod</displayName>
					</field>
					<field type="hour">
						<displayName>гадзіна</displayName>
					</field>
					<field type="minute">
						<displayName>хвіліна</displayName>
					</field>
					<field type="second">
						<displayName>секунда</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Час: {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Невядомы</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Рыё Бранка</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Кампа Грандэ</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>Сан-Паўлу</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Ганалулу</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Анкорыдж</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Лос-Анджэлас</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Фэнікс</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Дэнвэр</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Чыкага</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Індыянапаліс</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Нью-Ёрк</exemplarCity>
			</zone>
			<metazone type="Acre">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Паўночнаамэрыканскі цэнтральны час</generic>
					<standard>Паўночнаамэрыканскі цэнтральны стандартны час</standard>
					<daylight>Паўночнаамэрыканскі цэнтральны летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Паўночнаамэрыканскі усходні час</generic>
					<standard>Паўночнаамэрыканскі усходні стандартны час</standard>
					<daylight>Паўночнаамэрыканскі усходні летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Паўночнаамэрыканскі горны час</generic>
					<standard>Паўночнаамэрыканскі горны стандартны час</standard>
					<daylight>Паўночнаамэрыканскі горны летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Ціхаакіянскі час</generic>
					<standard>Ціхаакіянскі стандартны час</standard>
					<daylight>Ціхаакіянскі летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Атлянтычны час</generic>
					<standard>Атлянтычны стандартны час</standard>
					<daylight>Атлянтычны летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="British">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Цэнтральнаэўрапейскі час</standard>
					<daylight>Цэнтральнаэўрапейскі летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Усходнеэўрапейскі час</standard>
					<daylight>Усходнеэўрапейскі летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Заходнеэўрапейскі час</standard>
					<daylight>Заходнеэўрапейскі летні час</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Грынвічскі час</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AUD">
				<displayName>аўстралійскі даляр</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="BRL">
				<displayName>бразільскі рэал</displayName>
			</currency>
			<currency type="BYB">
				<symbol>Руб</symbol>
			</currency>
			<currency type="BYR">
				<displayName>беларускі рубель</displayName>
			</currency>
			<currency type="CNY">
				<displayName>кітайскі юань Renminbi</displayName>
			</currency>
			<currency type="ERN">
				<displayName>эрытрэйская накфа</displayName>
			</currency>
			<currency type="EUR">
				<displayName>еўра</displayName>
			</currency>
			<currency type="GBP">
				<displayName>англійскі фунт</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="INR">
				<displayName>індыйская рупія</displayName>
				<symbol>Rs.</symbol>
			</currency>
			<currency type="JPY">
				<displayName>японская іена</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="NOK">
				<displayName>нарвэская крона</displayName>
			</currency>
			<currency type="RUB">
				<displayName>рускі рубель</displayName>
				<symbol>рас. руб.</symbol>
			</currency>
			<currency type="USD">
				<displayName>долар ЗША</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="XXX">
				<displayName>невядомая або недапушчальная валюта</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} дні</unitPattern>
			<unitPattern count="many">{0} дзён</unitPattern>
			<unitPattern count="one">{0} дзень</unitPattern>
			<unitPattern count="other">{0} дня</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} гадзіны</unitPattern>
			<unitPattern count="many">{0} гадзін</unitPattern>
			<unitPattern count="one">{0} гадзіна</unitPattern>
			<unitPattern count="other">{0} гадзіны</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} хвіліны</unitPattern>
			<unitPattern count="many">{0} хвілін</unitPattern>
			<unitPattern count="one">{0} хвіліна</unitPattern>
			<unitPattern count="other">{0} хвіліны</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} месяца</unitPattern>
			<unitPattern count="many">{0} месяцаў</unitPattern>
			<unitPattern count="one">{0} месяц</unitPattern>
			<unitPattern count="other">{0} месяца</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} сэкунды</unitPattern>
			<unitPattern count="many">{0} сэкунд</unitPattern>
			<unitPattern count="one">{0} сэкунда</unitPattern>
			<unitPattern count="other">{0} сэкунды</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} тыдні</unitPattern>
			<unitPattern count="many">{0} тыдняў</unitPattern>
			<unitPattern count="one">{0} тыдзень</unitPattern>
			<unitPattern count="other">{0} тыдня</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} гады</unitPattern>
			<unitPattern count="many">{0} гадоў</unitPattern>
			<unitPattern count="one">{0} год</unitPattern>
			<unitPattern count="other">{0} году</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>так:т</yesstr>
			<nostr>не:н</nostr>
		</messages>
	</posix>
</ldml>
PKpG[RҖ�Locale/Data/de_BE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="de"/>
		<territory type="BE"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="3">Mär</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mon</day>
							<day type="tue">Die</day>
							<day type="wed">Mit</day>
							<day type="thu">Don</day>
							<day type="fri">Fre</day>
							<day type="sat">Sam</day>
						</dayWidth>
					</dayContext>
				</days>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH 'h' mm 'min' ss 's' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/MM - E d/MM</greatestDifference>
							<greatestDifference id="d">E d/MM - E d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM - E d MMM</greatestDifference>
							<greatestDifference id="d">E d - E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="d">E d/MM/yy - E d/MM/yy</greatestDifference>
							<greatestDifference id="y">E d/MM/yy - E d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="FRF">
				<displayName>Franken</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[v��PPLocale/Data/en_US_POSIX.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="en"/>
		<territory type="US"/>
		<variant type="POSIX"/>
	</identity>
	<numbers>
		<symbols>
			<perMille>0/00</perMille>
			<infinity>INF</infinity>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.######</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>0.000000E+000</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[�-��::Locale/Data/mn_Cyrl_MN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<script type="Cyrl"/>
		<territory type="MN"/>
	</identity>
</ldml>
PKpG[��"��Locale/Data/se_FI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="se"/>
		<territory type="FI"/>
	</identity>
	<fallback>fi-FI</fallback>
	<localeDisplayNames>
		<languages>
			<language type="ang">ang</language>
			<language type="apa">apa</language>
			<language type="be">be</language>
			<language type="cs">cs</language>
			<language type="da">da</language>
			<language type="de">de</language>
			<language type="el">el</language>
			<language type="en">en</language>
			<language type="es">es</language>
			<language type="et">et</language>
			<language type="fi">fi</language>
			<language type="fiu">fiu</language>
			<language type="fo">fo</language>
			<language type="fr">fr</language>
			<language type="gem">gem</language>
			<language type="is">is</language>
			<language type="nb">nb</language>
			<language type="nn">nn</language>
			<language type="no">no</language>
			<language type="ru">ru</language>
			<language type="se">se</language>
			<language type="sma">sma</language>
			<language type="smi">smi</language>
			<language type="smj">smj</language>
			<language type="smn">smn</language>
			<language type="sms">sms</language>
			<language type="sv">sv</language>
		</languages>
		<territories>
			<territory type="002">Afrihká</territory>
			<territory type="005">Mátta-Amerihká</territory>
			<territory type="011">Oarji-Afrihká</territory>
			<territory type="014">014</territory>
			<territory type="015">Davvi-Afrihká</territory>
			<territory type="017">Gaska-Afrihká</territory>
			<territory type="021">Davvi-Amerihká</territory>
			<territory type="030">Nuorta-Ásia</territory>
			<territory type="034">Mátta-Ásia</territory>
			<territory type="039">Mátta-Eurohpa</territory>
			<territory type="143">Gaska-Ásia</territory>
			<territory type="145">Oarji-Ásia</territory>
			<territory type="150">Eurohpa</territory>
			<territory type="151">Nuorta-Eurohpá</territory>
			<territory type="154">Davvi-Eurohpa</territory>
			<territory type="155">Oarji-Eurohpa</territory>
			<territory type="AT">AT</territory>
			<territory type="AU">AU</territory>
			<territory type="AX">AX</territory>
			<territory type="BE">BE</territory>
			<territory type="BG">BG</territory>
			<territory type="BR">BR</territory>
			<territory type="BY">BY</territory>
			<territory type="CH">CH</territory>
			<territory type="CM">CM</territory>
			<territory type="CN">CN</territory>
			<territory type="CZ">CZ</territory>
			<territory type="DE">DE</territory>
			<territory type="DK">DK</territory>
			<territory type="EE">EE</territory>
			<territory type="ES">ES</territory>
			<territory type="FI">FI</territory>
			<territory type="FO">FO</territory>
			<territory type="FR">FR</territory>
			<territory type="GL">GL</territory>
			<territory type="GR">GR</territory>
			<territory type="HR">HR</territory>
			<territory type="HU">HU</territory>
			<territory type="IE">IE</territory>
			<territory type="IQ">IQ</territory>
			<territory type="IR">IR</territory>
			<territory type="IS">IS</territory>
			<territory type="IT">IT</territory>
			<territory type="JP">JP</territory>
			<territory type="KP">KP</territory>
			<territory type="KR">KR</territory>
			<territory type="LB">LB</territory>
			<territory type="LT">LT</territory>
			<territory type="LV">LV</territory>
			<territory type="MA">MA</territory>
			<territory type="MG">MG</territory>
			<territory type="MH">MH</territory>
			<territory type="MK">MK</territory>
			<territory type="MP">MP</territory>
			<territory type="MR">MR</territory>
			<territory type="MV">MV</territory>
			<territory type="MY">MY</territory>
			<territory type="NL">NL</territory>
			<territory type="NO">NO</territory>
			<territory type="NZ">NZ</territory>
			<territory type="PH">PH</territory>
			<territory type="PL">PL</territory>
			<territory type="PS">PS</territory>
			<territory type="RU">RU</territory>
			<territory type="SE">SE</territory>
			<territory type="SI">SI</territory>
			<territory type="SJ">SJ</territory>
			<territory type="SK">SK</territory>
			<territory type="SR">SR</territory>
			<territory type="TD">TD</territory>
			<territory type="TL">TL</territory>
			<territory type="TR">TR</territory>
			<territory type="US">US</territory>
			<territory type="ZA">ZA</territory>
		</territories>
		<keys>
			<key type="calendar">calendar</key>
			<key type="currency">currency</key>
		</keys>
		<measurementSystemNames>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ođđajage</month>
							<month type="2">guovva</month>
							<month type="3">njukča</month>
							<month type="4">cuoŋo</month>
							<month type="5">miesse</month>
							<month type="6">geasse</month>
							<month type="7">suoidne</month>
							<month type="8">borge</month>
							<month type="9">čakča</month>
							<month type="10">golggot</month>
							<month type="11">skábma</month>
							<month type="12">juovla</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">aejlege</day>
							<day type="mon">måanta</day>
							<day type="tue">däjsta</day>
							<day type="wed">gaskevahkoe</day>
							<day type="thu">dåarsta</day>
							<day type="fri">bearjadahke</day>
							<day type="sat">laavadahke</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">D</day>
							<day type="wed">G</day>
							<day type="thu">D</day>
							<day type="fri">B</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<eras>
					<eraNames>
						<era type="0">BCE</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
					</eraAbbr>
				</eras>
				<fields>
					<field type="year">
						<displayName>Year</displayName>
					</field>
					<field type="month">
						<displayName>Month</displayName>
					</field>
					<field type="week">
						<displayName>Week</displayName>
					</field>
					<field type="day">
						<displayName>Day</displayName>
					</field>
					<field type="weekday">
						<displayName>Day of the Week</displayName>
					</field>
					<field type="hour">
						<displayName>Hour</displayName>
					</field>
					<field type="minute">
						<displayName>Minute</displayName>
					</field>
					<field type="second">
						<displayName>Second</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<fallbackFormat>{1} ({0})</fallbackFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="FIM">
				<displayName>FIM</displayName>
			</currency>
			<currency type="NOK">
				<displayName>NOK</displayName>
			</currency>
			<currency type="SEK">
				<displayName>SEK</displayName>
			</currency>
			<currency type="XAG">
				<displayName>XAG</displayName>
			</currency>
			<currency type="XAU">
				<displayName>XAU</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[3��P##Locale/Data/af_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="af"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[<;�qggLocale/Data/sr_Cyrl_CS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.31 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
		<territory type="CS"/>
	</identity>
	<alias source="sr_Cyrl_RS" path="//ldml"/>
</ldml>
PKpG[�t��$$Locale/Data/kok_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kok"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[x"!�##Locale/Data/ak_GH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="ak"/>
		<territory type="GH"/>
	</identity>
</ldml>
PKpG[7��(X(XLocale/Data/lt.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.92 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="lt"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ab">abchazų</language>
			<language type="ady">adygėjų</language>
			<language type="af">afrikanų</language>
			<language type="ale">aleutų</language>
			<language type="am">amharų</language>
			<language type="ang">senoji anglų</language>
			<language type="ar">arabų</language>
			<language type="art">dirbtinė kalba</language>
			<language type="as">asamų</language>
			<language type="aus">australų kalba</language>
			<language type="az">azerbaidžaniečių</language>
			<language type="ba">baškirų</language>
			<language type="bat">baltų kalba</language>
			<language type="be">baltarusių</language>
			<language type="ber">berberų</language>
			<language type="bg">bulgarų</language>
			<language type="bh">biharų</language>
			<language type="bn">bengalų</language>
			<language type="bnt">bantų</language>
			<language type="bo">tibetiečių</language>
			<language type="br">bretonų</language>
			<language type="bs">bosnių</language>
			<language type="bua">buriatų</language>
			<language type="ca">katalonų</language>
			<language type="cai">Centrinės Amerikos indėnų kalba</language>
			<language type="cau">kaukaziečių kalba</language>
			<language type="ce">čečėnų</language>
			<language type="cel">keltų kalba</language>
			<language type="co">korsikiečių</language>
			<language type="crh">krymo turkų</language>
			<language type="cs">čekų</language>
			<language type="cu">bažnytinė slavų</language>
			<language type="cv">čiuvašų</language>
			<language type="cy">valų</language>
			<language type="da">danų</language>
			<language type="de">vokiečių</language>
			<language type="egy">senovės egiptiečių</language>
			<language type="el">graikų</language>
			<language type="en">anglų</language>
			<language type="en_AU">anglų kalba (australija)</language>
			<language type="en_GB">anglų (britų)</language>
			<language type="en_US">anglų (amerikiečių)</language>
			<language type="eo">esperanto</language>
			<language type="es">ispanų</language>
			<language type="et">estų</language>
			<language type="eu">baskų</language>
			<language type="fa">persų</language>
			<language type="fi">suomių</language>
			<language type="fil">tagalų</language>
			<language type="fiu">finougrų kalba</language>
			<language type="fo">fareriečių</language>
			<language type="fr">prancūzų</language>
			<language type="fro">senoji prancūzų</language>
			<language type="frr">šiaurinių fryzų</language>
			<language type="frs">rytų fryzų</language>
			<language type="fy">Fryzų</language>
			<language type="ga">airių</language>
			<language type="gd">škotų (gėlų)</language>
			<language type="gem">germanų kalba</language>
			<language type="gl">galisų</language>
			<language type="gn">gvaranių</language>
			<language type="got">gotų</language>
			<language type="grc">senovės graikų</language>
			<language type="gu">gudžaratų</language>
			<language type="he">hebrajų</language>
			<language type="hi">hindi</language>
			<language type="hr">kroatų</language>
			<language type="hu">vengrų</language>
			<language type="hy">armėnų</language>
			<language type="ia">interlingva</language>
			<language type="id">indoneziečių</language>
			<language type="ie">interkalba</language>
			<language type="ine">indoeuropiečių kalba</language>
			<language type="inh">ingušų</language>
			<language type="ira">Iraniečių</language>
			<language type="is">islandų</language>
			<language type="it">italų</language>
			<language type="ja">japonų</language>
			<language type="jv">javiečių</language>
			<language type="ka">gruzinų</language>
			<language type="kaa">karakalpakų</language>
			<language type="kbd">kabardinų</language>
			<language type="kk">kazachų</language>
			<language type="km">khmerų</language>
			<language type="kn">kanadų</language>
			<language type="ko">korėjiečių</language>
			<language type="ku">kurdų</language>
			<language type="ky">kirgizų</language>
			<language type="la">lotynų</language>
			<language type="lb">liuksemburgiečių</language>
			<language type="lez">lezginų</language>
			<language type="ln">lingala</language>
			<language type="lo">laosiečių</language>
			<language type="lt">lietuvių</language>
			<language type="lv">latvių</language>
			<language type="mis">įvairios kalbos</language>
			<language type="mk">makedonų</language>
			<language type="ml">malajalių</language>
			<language type="mn">mongolų</language>
			<language type="mo">moldavų</language>
			<language type="mr">maratų</language>
			<language type="ms">malajiečių</language>
			<language type="mt">maltiečių</language>
			<language type="mul">kelios kalbos</language>
			<language type="nai">Šiaurės Amerikos indėnų kalba</language>
			<language type="nap">neapoliečių</language>
			<language type="ne">nepalų</language>
			<language type="nl">olandų</language>
			<language type="nn">norvegų nynorsk</language>
			<language type="no">norvegų</language>
			<language type="oc">provansalų</language>
			<language type="or">orijų</language>
			<language type="os">osetinų</language>
			<language type="pa">pandžabų</language>
			<language type="paa">papuasų kalba</language>
			<language type="peo">senoji persų</language>
			<language type="pl">lenkų</language>
			<language type="ps">puštūnų</language>
			<language type="pt">portugalų</language>
			<language type="pt_BR">portugalų (Brazilijos)</language>
			<language type="pt_PT">portugalų (Portugalijos)</language>
			<language type="ro">rumunų</language>
			<language type="ru">rusų</language>
			<language type="sa">Sanskritas</language>
			<language type="sah">jakutų</language>
			<language type="sc">sardiniečių</language>
			<language type="scn">siciliečių</language>
			<language type="sco">škotų</language>
			<language type="sd">sindų</language>
			<language type="se">šiaurinių samių</language>
			<language type="sga">senoji airių</language>
			<language type="sh">serbų-kroatų</language>
			<language type="si">sinhalų</language>
			<language type="sk">slovakų</language>
			<language type="sl">slovėnų</language>
			<language type="sla">slavų kalba</language>
			<language type="so">somalių</language>
			<language type="sq">albanų</language>
			<language type="sr">serbų</language>
			<language type="st">sesuto</language>
			<language type="su">sundų</language>
			<language type="sux">šumerų</language>
			<language type="sv">švedų</language>
			<language type="sw">svahili</language>
			<language type="ta">tamilų</language>
			<language type="te">telugų</language>
			<language type="th">tajų</language>
			<language type="ti">tigrajų</language>
			<language type="tk">turkmėnų</language>
			<language type="tl">tagalogų</language>
			<language type="tlh">&quot;žvaigždžių kelionių&quot;</language>
			<language type="tr">turkų</language>
			<language type="tt">totorių</language>
			<language type="tw">tvi</language>
			<language type="tyv">tuvių</language>
			<language type="udm">udmurtų</language>
			<language type="ug">uigūrų</language>
			<language type="uk">ukrainiečių</language>
			<language type="und">nenustatyta kalba</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekų</language>
			<language type="vi">vietnamiečių</language>
			<language type="vo">volapiuk</language>
			<language type="wa">valonų</language>
			<language type="xal">kalmukų</language>
			<language type="xh">kosų</language>
			<language type="yi">jidiš</language>
			<language type="zh">kinų</language>
			<language type="zh_Hans">kinų supaprastinta</language>
			<language type="zh_Hant">kinų tradicinė</language>
			<language type="zu">zulų</language>
		</languages>
		<scripts>
			<script type="Arab">arabų</script>
			<script type="Armn">armėnų</script>
			<script type="Beng">bengalų</script>
			<script type="Brai">brailio</script>
			<script type="Cher">čerokių</script>
			<script type="Copt">koptų</script>
			<script type="Cyrl">kirilica</script>
			<script type="Cyrs">senoji bažnytinė slavų kirilica</script>
			<script type="Egyp">egipto hieroglifai</script>
			<script type="Ethi">etiopų</script>
			<script type="Geor">gruzinų</script>
			<script type="Goth">gotų</script>
			<script type="Grek">graikų</script>
			<script type="Hang">hangul</script>
			<script type="Hebr">hebrajų</script>
			<script type="Hira">hiragana</script>
			<script type="Hrkt">katakana/hiragana</script>
			<script type="Hung">senasis vengrų</script>
			<script type="Ital">senasis italų</script>
			<script type="Jpan">japonų</script>
			<script type="Kana">katakana</script>
			<script type="Khmr">khmerų</script>
			<script type="Kore">korejiečių</script>
			<script type="Latn">lotynų</script>
			<script type="Maya">malų hieroglifai</script>
			<script type="Mong">mongolų</script>
			<script type="Runr">runų</script>
		</scripts>
		<territories>
			<territory type="001">Pasaulis</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Šiaurės Amerika</territory>
			<territory type="005">Pietų Amerika</territory>
			<territory type="009">Okeanija</territory>
			<territory type="011">Vakarų Afrika</territory>
			<territory type="013">Centrinė Amerika</territory>
			<territory type="014">Rytų Afrika</territory>
			<territory type="015">Šiaurės Afrika</territory>
			<territory type="017">Vidurio Afrika</territory>
			<territory type="018">Pietų Afrika [018]</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Šiaurinė Amerika</territory>
			<territory type="029">Karibai</territory>
			<territory type="030">Rytų Azija</territory>
			<territory type="034">Pietų Azija</territory>
			<territory type="035">Pietryčių Azija</territory>
			<territory type="039">Pietų Europa</territory>
			<territory type="053">Australija ir Naujoji Zelandija</territory>
			<territory type="054">Melanezija</territory>
			<territory type="057">Mikronezija [057]</territory>
			<territory type="061">Polinezija</territory>
			<territory type="062">Pietų-vidurio Azija</territory>
			<territory type="142">Azija</territory>
			<territory type="143">Centrinė Azija</territory>
			<territory type="145">Vakarų Azija</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Rytų Europa</territory>
			<territory type="154">Šiaurės Europa</territory>
			<territory type="155">Vakarų Europa</territory>
			<territory type="172">Nepriklausomų Valstybių Sandrauga</territory>
			<territory type="200">Čekoslovakija</territory>
			<territory type="419">Lotynų Amerika ir Karibai</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Jungtiniai Arabų Emyratai</territory>
			<territory type="AF">Afganistanas</territory>
			<territory type="AG">Antigva ir Barbuda</territory>
			<territory type="AI">Angilija</territory>
			<territory type="AL">Albanija</territory>
			<territory type="AM">Armėnija</territory>
			<territory type="AN">Olandijos Antilai</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerikos Samoa</territory>
			<territory type="AT">Austrija</territory>
			<territory type="AU">Australija</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland Islands</territory>
			<territory type="AZ">Azerbaidžanas</territory>
			<territory type="BA">Bosnija ir Hercegovina</territory>
			<territory type="BB">Barbadosas</territory>
			<territory type="BD">Bangladešas</territory>
			<territory type="BE">Belgija</territory>
			<territory type="BF">Burkina Fasas</territory>
			<territory type="BG">Bulgarija</territory>
			<territory type="BH">Bahreinas</territory>
			<territory type="BI">Burundis</territory>
			<territory type="BJ">Beninas</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunėjus</territory>
			<territory type="BO">Bolivija</territory>
			<territory type="BR">Brazilija</territory>
			<territory type="BS">Bahamos</territory>
			<territory type="BT">Butanas</territory>
			<territory type="BV">Bouvet sala</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Baltarusija</territory>
			<territory type="BZ">Belizas</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosų salos</territory>
			<territory type="CD">Kongo Demokratinė Respublika</territory>
			<territory type="CF">Centrinės Afrikos Respublika</territory>
			<territory type="CG">Kongas</territory>
			<territory type="CH">Šveicarija</territory>
			<territory type="CI">Dramblio Kaulo Krantas</territory>
			<territory type="CK">Kuko salos</territory>
			<territory type="CL">Čilė</territory>
			<territory type="CM">Kamerūnas</territory>
			<territory type="CN">Kinija</territory>
			<territory type="CO">Kolumbija</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Serbija ir Juodkalnija</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Žaliasis Kyšulys</territory>
			<territory type="CX">Kalėdų sala</territory>
			<territory type="CY">Kipras</territory>
			<territory type="CZ">Čekija</territory>
			<territory type="DE">Vokietija</territory>
			<territory type="DJ">Džibutis</territory>
			<territory type="DK">Danija</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikos Respublika</territory>
			<territory type="DZ">Alžyras</territory>
			<territory type="EC">Ekvadoras</territory>
			<territory type="EE">Estija</territory>
			<territory type="EG">Egiptas</territory>
			<territory type="EH">Vakarų Sachara</territory>
			<territory type="ER">Eritrėja</territory>
			<territory type="ES">Ispanija</territory>
			<territory type="ET">Etiopija</territory>
			<territory type="FI">Suomija</territory>
			<territory type="FJ">Fidžis</territory>
			<territory type="FK">Falklando salos</territory>
			<territory type="FM">Mikronezija</territory>
			<territory type="FO">Farerų salos</territory>
			<territory type="FR">Prancūzija</territory>
			<territory type="GA">Gabonas</territory>
			<territory type="GB">Didžioji Britanija</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzija</territory>
			<territory type="GF">Prancūzijos Gviana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltaras</territory>
			<territory type="GL">Grenlandija</territory>
			<territory type="GM">Gambija</territory>
			<territory type="GN">Gvinėja</territory>
			<territory type="GP">Gvadelupė</territory>
			<territory type="GQ">Pusiaujo Gvinėja</territory>
			<territory type="GR">Graikija</territory>
			<territory type="GS">Rytų Džordžija ir Rytų Sandwich salos</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Guamas</territory>
			<territory type="GW">Bisau Gvinėja</territory>
			<territory type="GY">Gajana</territory>
			<territory type="HK">Honkongas</territory>
			<territory type="HM">Heardo ir McDonaldo Salų Sritis</territory>
			<territory type="HN">Hondūras</territory>
			<territory type="HR">Kroatija</territory>
			<territory type="HT">Haitis</territory>
			<territory type="HU">Vengrija</territory>
			<territory type="ID">Indonezija</territory>
			<territory type="IE">Airija</territory>
			<territory type="IL">Izraelis</territory>
			<territory type="IM">Meno sala</territory>
			<territory type="IN">Indija</territory>
			<territory type="IO">Indijos vandenyno britų sritis</territory>
			<territory type="IQ">Irakas</territory>
			<territory type="IR">Iranas</territory>
			<territory type="IS">Islandija</territory>
			<territory type="IT">Italija</territory>
			<territory type="JE">Džersis</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordanija</territory>
			<territory type="JP">Japonija</territory>
			<territory type="KE">Kenija</territory>
			<territory type="KG">Kirgiztanas</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribatis</territory>
			<territory type="KM">Komorai</territory>
			<territory type="KN">Sent Kitsas ir Nevis</territory>
			<territory type="KP">Šiaurės Korėja</territory>
			<territory type="KR">Pietų Korėja</territory>
			<territory type="KW">Kuveitas</territory>
			<territory type="KY">Kaimanų salos</territory>
			<territory type="KZ">Kazachstanas</territory>
			<territory type="LA">Laosas</territory>
			<territory type="LB">Libanas</territory>
			<territory type="LC">Šventoji Liucija</territory>
			<territory type="LI">Lichtenšteinas</territory>
			<territory type="LK">Šri Lanka</territory>
			<territory type="LR">Liberija</territory>
			<territory type="LS">Lesotas</territory>
			<territory type="LT">Lietuva</territory>
			<territory type="LU">Liuksemburgas</territory>
			<territory type="LV">Latvija</territory>
			<territory type="LY">Libija</territory>
			<territory type="MA">Marokas</territory>
			<territory type="MC">Monakas</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Juodkalnija</territory>
			<territory type="MG">Madagaskaras</territory>
			<territory type="MH">Maršalo Salos</territory>
			<territory type="MK">Makedonija</territory>
			<territory type="ML">Malis</territory>
			<territory type="MM">Mianmaras</territory>
			<territory type="MN">Mongolija</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Marianos šiaurinės salos</territory>
			<territory type="MQ">Martinika</territory>
			<territory type="MR">Mauritanija</territory>
			<territory type="MS">Montserratas</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricijus</territory>
			<territory type="MV">Maldivai</territory>
			<territory type="MW">Malavis</territory>
			<territory type="MX">Meksika</territory>
			<territory type="MY">Malaizija</territory>
			<territory type="MZ">Mozambikas</territory>
			<territory type="NA">Namibija</territory>
			<territory type="NC">Naujoji Kaledonija</territory>
			<territory type="NE">Nigeris</territory>
			<territory type="NF">Norfolko sala</territory>
			<territory type="NG">Nigerija</territory>
			<territory type="NI">Nikaragva</territory>
			<territory type="NL">Nyderlandai</territory>
			<territory type="NO">Norvegija</territory>
			<territory type="NP">Nepalas</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Naujoji Zelandija</territory>
			<territory type="OM">Omanas</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Prancūzų Polinezija</territory>
			<territory type="PG">Papua Naujoji Gvinėja</territory>
			<territory type="PH">Filipinai</territory>
			<territory type="PK">Pakistanas</territory>
			<territory type="PL">Lenkija</territory>
			<territory type="PM">Sen Pjeras ir Mikelonas</territory>
			<territory type="PN">Pitkernas</territory>
			<territory type="PR">Puerto Rikas</territory>
			<territory type="PS">Palestinos teritorija</territory>
			<territory type="PT">Portugalija</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragvajus</territory>
			<territory type="QA">Kataras</territory>
			<territory type="QU">Europos Sąjunga</territory>
			<territory type="RE">Reunionas</territory>
			<territory type="RO">Rumunija</territory>
			<territory type="RS">Serbija</territory>
			<territory type="RU">Rusijos Federacija</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudo Arabija</territory>
			<territory type="SB">Saliamono salos</territory>
			<territory type="SC">Seišeliai</territory>
			<territory type="SD">Sudanas</territory>
			<territory type="SE">Švedija</territory>
			<territory type="SG">Singapūras</territory>
			<territory type="SH">Šventoji Elena</territory>
			<territory type="SI">Slovėnija</territory>
			<territory type="SJ">Svalbardo ir Jan Majen salos</territory>
			<territory type="SK">Slovakija</territory>
			<territory type="SL">Siera Leonė</territory>
			<territory type="SM">San Marinas</territory>
			<territory type="SN">Senegalas</territory>
			<territory type="SO">Somalis</territory>
			<territory type="SR">Surinamas</territory>
			<territory type="ST">San Tomė ir Principė</territory>
			<territory type="SV">Salvadoras</territory>
			<territory type="SY">Sirija</territory>
			<territory type="SZ">Svazilendas</territory>
			<territory type="TC">Turkso ir Caicoso salos</territory>
			<territory type="TD">Čadas</territory>
			<territory type="TF">Prancūzijos Pietų sritys</territory>
			<territory type="TG">Togas</territory>
			<territory type="TH">Tailandas</territory>
			<territory type="TJ">Tadžikistanas</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Rytų Timoras</territory>
			<territory type="TM">Turkmėnistanas</territory>
			<territory type="TN">Tunisas</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkija</territory>
			<territory type="TT">Trinidadas ir Tobagas</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taivanas</territory>
			<territory type="TZ">Tanzanija</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Jungtinių Valstijų mažosios aplinkinės salos</territory>
			<territory type="US">Jungtinės Valstijos</territory>
			<territory type="UY">Urugvajus</territory>
			<territory type="UZ">Uzbekistanas</territory>
			<territory type="VA">Vatikanas</territory>
			<territory type="VC">Šventasis Vincentas ir Grenadinai</territory>
			<territory type="VE">Venesuela</territory>
			<territory type="VG">Didžiosios Britanijos Mergelių salos</territory>
			<territory type="VI">Mergelių salos (JAV)</territory>
			<territory type="VN">Vietnamas</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallisas ir Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemenas</territory>
			<territory type="YT">Mayotte’as</territory>
			<territory type="ZA">Pietų Afrika</territory>
			<territory type="ZM">Zambija</territory>
			<territory type="ZW">Zimbabvė</territory>
			<territory type="ZZ">Nežinoma ar neteisinga sritis</territory>
		</territories>
		<keys>
			<key type="calendar">kalendorius</key>
			<key type="collation">gretinimas</key>
			<key type="currency">valiuta</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">Budistų kalendorius</type>
			<type type="chinese" key="calendar">Kiniečių kalendorius</type>
			<type type="gregorian" key="calendar">Grigaliaus kalendorius</type>
			<type type="hebrew" key="calendar">Hebrajų kalendorius</type>
			<type type="islamic" key="calendar">Islamo kalendorius</type>
			<type type="japanese" key="calendar">Japonų kalendorius</type>
			<type type="roc" key="calendar">Kinijos respublikos kalendorius</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">JAV</measurementSystemName>
			<measurementSystemName type="metric">Metrinė</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a ą b c č d e ę ė f-i į y j-p r s š t u ų ū v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[{į̇} {i̇} {i̇́} {i̇̀} {i̇̃} {j̇} q w x]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>“</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Sau</month>
							<month type="2">Vas</month>
							<month type="3">Kov</month>
							<month type="4">Bal</month>
							<month type="5">Geg</month>
							<month type="6">Bir</month>
							<month type="7">Lie</month>
							<month type="8">Rgp</month>
							<month type="9">Rgs</month>
							<month type="10">Spl</month>
							<month type="11">Lap</month>
							<month type="12">Grd</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">sausio</month>
							<month type="2">vasario</month>
							<month type="3">kovo</month>
							<month type="4">balandžio</month>
							<month type="5">gegužės</month>
							<month type="6">birželio</month>
							<month type="7">liepos</month>
							<month type="8">rugpjūčio</month>
							<month type="9">rugsėjo</month>
							<month type="10">spalio</month>
							<month type="11">lapkričio</month>
							<month type="12">gruodžio</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">S</month>
							<month type="2">V</month>
							<month type="3">K</month>
							<month type="4">B</month>
							<month type="5">G</month>
							<month type="6">B</month>
							<month type="7">L</month>
							<month type="8">R</month>
							<month type="9">R</month>
							<month type="10">S</month>
							<month type="11">L</month>
							<month type="12">G</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Sausis</month>
							<month type="2">Vasaris</month>
							<month type="3">Kovas</month>
							<month type="4">Balandis</month>
							<month type="5">Gegužė</month>
							<month type="6">Birželis</month>
							<month type="7">Liepa</month>
							<month type="8">Rugpjūtis</month>
							<month type="9">Rugsėjis</month>
							<month type="10">Spalis</month>
							<month type="11">Lapkritis</month>
							<month type="12">Gruodis</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sk</day>
							<day type="mon">Pr</day>
							<day type="tue">An</day>
							<day type="wed">Tr</day>
							<day type="thu">Kt</day>
							<day type="fri">Pn</day>
							<day type="sat">Št</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sekmadienis</day>
							<day type="mon">pirmadienis</day>
							<day type="tue">antradienis</day>
							<day type="wed">trečiadienis</day>
							<day type="thu">ketvirtadienis</day>
							<day type="fri">penktadienis</day>
							<day type="sat">šeštadienis</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">P</day>
							<day type="tue">A</day>
							<day type="wed">T</day>
							<day type="thu">K</day>
							<day type="fri">P</day>
							<day type="sat">Š</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">pirmas ketvirtis</quarter>
							<quarter type="2">antras ketvirtis</quarter>
							<quarter type="3">trečias ketvirtis</quarter>
							<quarter type="4">ketvirtas ketvirtis</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>priešpiet</am>
				<pm>popiet</pm>
				<eras>
					<eraAbbr>
						<era type="0">pr. Kr.</era>
						<era type="1">po Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy 'm'. MMMM d 'd'.,EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy 'm'. MMMM d 'd'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy.MM.dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMdd">MMM-dd</dateFormatItem>
						<dateFormatItem id="MMdd">MM.dd</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy.MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">MM-ddE - MM-ddE</greatestDifference>
							<greatestDifference id="d">MM-ddE - MM-ddE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MMM d 'd'.E - MMM d 'd'.E</greatestDifference>
							<greatestDifference id="d">MMM d 'd'.E - d 'd'.E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d 'd'. - MMM d 'd'.</greatestDifference>
							<greatestDifference id="d">MMM d 'd'.-d 'd'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM - yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yyyy-MM-ddE - yyyy-MM-ddE</greatestDifference>
							<greatestDifference id="d">yyyy-MM-ddE - yyyy-MM-ddE</greatestDifference>
							<greatestDifference id="y">yyyy-MM-ddE - yyyy-MM-ddE</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy 'm'. MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy 'm'. MMM - yyyy 'm'. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy 'm'. MMM d 'd'.,E - MMM d 'd'.,E</greatestDifference>
							<greatestDifference id="d">yyyy 'm'. MMM d 'd'.,E - d 'd'.,E</greatestDifference>
							<greatestDifference id="y">yyyy 'm'. MMM d 'd'.,E - yyyy 'm'. MMM d 'd'.,E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy 'm'. MMM d 'd'. - MMM d 'd'.</greatestDifference>
							<greatestDifference id="d">yyyy 'm'. MMM d 'd'.-d 'd'.</greatestDifference>
							<greatestDifference id="y">yyyy 'm'. MMM d 'd'. - yyyy 'm'. MMM d 'd'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>metai</displayName>
					</field>
					<field type="month">
						<displayName>mėnuo</displayName>
					</field>
					<field type="week">
						<displayName>savaitė</displayName>
					</field>
					<field type="day">
						<displayName>diena</displayName>
					</field>
					<field type="weekday">
						<displayName>savaitės diena</displayName>
					</field>
					<field type="dayperiod">
						<displayName>dienos metas</displayName>
					</field>
					<field type="hour">
						<displayName>valanda</displayName>
					</field>
					<field type="minute">
						<displayName>minutė</displayName>
					</field>
					<field type="second">
						<displayName>Sekundė</displayName>
					</field>
					<field type="zone">
						<displayName>juosta</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>Dubajus</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kabulas</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevanas</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Pietų ašigalis</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Buenos Airės</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viena</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbadosas</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Daka</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Briuselis</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofija</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahreinas</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novas</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudų salos</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Brunėjus</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>La Pasas</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Kujaba</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belemas</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>San Paulas</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Gaboronas</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Minskas</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belizas</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>Monktonas</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinšasa</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>Brazavilis</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Ciurichas</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidžanas</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Velykų sala</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>Santjagas</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kosta Rika</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Kalėdų sala</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikosija</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlynas</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibutis</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhaga</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>Santo Domingas</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapagai</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Talinas</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairas</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>Asmara</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarų salos</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madridas</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Helsinkis</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidžis</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>Stenlis</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Trukas</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Ponapė</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Farerai</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Paryžius</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>Librevilis</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londonas</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tbilisis</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Kajenas</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibraltaras</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>Tūla</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthabas</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Danmarkshavn’as</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>Konakris</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gvadelupė</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atėnai</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Guamas</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gajana</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Honkongas</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapeštas</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Džakarta</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dublinas</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdadas</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheranas</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reikjavikas</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Amanas</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Nairobis</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>Biškekas</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Enderburis</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>Tarava</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Komoras</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitsas</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seulas</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuveitas</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Kaimanas</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktiubinskas</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma Ata</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Vientianas</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beirutas</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Vaducas</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>Kolombo</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Monrovija</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Liuksemburgas</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Ryga</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Tripolis</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>Kasablanka</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monakas</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>Antananarivas</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Rangūnas</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan-Batoras</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makao</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>Saipanas</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinika</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>Montseratas</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricijus</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldyvai</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>Norfolkas</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Managva</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Amsterdamas</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Oslas</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Maskatas</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Taitis</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšuva</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairno salos</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Puerto Rikas</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>Gazos ruožas</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorai</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabona</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunsjonas</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Kataras</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reunionas</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukareštas</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Rijadas</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>Gvadalkanalas</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Chartumas</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stokholmas</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapūras</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Šv. Helena</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>Frytaunas</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Dakaras</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadišas</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>San Tomė</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvadoras</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskas</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>Grand Terkas</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>Ndžamena</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>Bankokas</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dušanbė</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>Dilis</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Ašchabadas</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunisas</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Stambulas</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Port of Speinas</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijevas</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Džonstonas</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Klivateris</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Ankoridžas</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Los Andželas</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>Fyniksas</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Denveris</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Čikaga</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Peterburgas</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Niujorkas</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Montevidëjas</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškentas</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Sant Vincentė</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>Karakasas</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>Efatas</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>Apija</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>Adenas</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Majotas</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Johanesburgas</exemplarCity>
			</zone>
			<metazone type="Africa_Central">
				<long>
					<standard>Centrinės Afrikos laikas</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Rytų Afrikos laikas</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Pietų Afrikos laikas</generic>
					<standard>Pietų Afrikos standartinis laikas</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Vakarų Afrikos laikas</standard>
					<daylight>Vakarų Afrikos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Aliaskos laikas</generic>
					<standard>Aliaskos standartinis laikas</standard>
					<daylight>Aliaskos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Aliaskos-Havajų laikas</generic>
					<standard>Aliaskos-Havajų standartinis laikas</standard>
					<daylight>Aliaskos-Havajų vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazonės laikas</standard>
					<daylight>Amazonės vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Centro laikas</generic>
					<standard>Centro standartinis laikas</standard>
					<daylight>Centro vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Rytų laikas</generic>
					<standard>Rytų standartinis laikas</standard>
					<daylight>Rytų vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Ramiojo vandenyno laikas</generic>
					<standard>Ramiojo vandenyno standartinis laikas</standard>
					<daylight>Ramiojo vandenyno vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentinos laikas</standard>
					<daylight>Argentinos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Vakarų Argentinos laikas</standard>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlanto laikas</generic>
					<standard>Atlanto standartinis laikas</standard>
					<daylight>Atlanto vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Beringo laikas</generic>
					<standard>Beringo standartinis laikas</standard>
					<daylight>Beringo vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Bolivijos laikas</standard>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brazilijos laikas</standard>
					<daylight>Brazilijos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Čilės laikas</standard>
					<daylight>Čilės vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Kolumbijos laikas</standard>
					<daylight>Kolumbijos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Kubos laikas</generic>
					<standard>Kubos standartinis laikas</standard>
					<daylight>Kubos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Olandų Gajanos laikas</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ekvadoro laikas</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Vidurio Europos laikas</standard>
					<daylight>Vidurio Europos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Rytų Europos laikas</standard>
					<daylight>Rytų Europos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Prancūzų Gajanos laikas</standard>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Grenlandijos centro laikas</standard>
					<daylight>Grenlandijos centro vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Grenlandijos rytų laikas</standard>
					<daylight>Grenlandijos rytų vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Grenlandijos vakarų laikas</standard>
					<daylight>Grenlandijos vakarų vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Gajanos laikas</standard>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kuibyševo laikas</standard>
					<daylight>Kuibyševo vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Maskvos laikas</generic>
					<standard>Maskvos standartinis laikas</standard>
					<daylight>Maskvos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Niufaundlendo laikas</generic>
					<standard>Niufaundlendo standartinis laikas</standard>
					<daylight>Niufaundlendo vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paragvajaus laikas</standard>
					<daylight>Paragvajaus vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Peru laikas</standard>
					<daylight>Peru vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samaros laikas</standard>
					<daylight>Samaros vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Turkijos laikas</standard>
					<daylight>Turkijos vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Urugvajaus laikas</standard>
					<daylight>Urugvajaus vasaros laikas</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venesuelos laikas</standard>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Volgogrado laikas</standard>
					<daylight>Volgogrado vasaros laikas</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andoros peseta</displayName>
				<displayName count="few">Andoros pesetos</displayName>
				<displayName count="one">Andoros peseta</displayName>
				<displayName count="other">Andoros pesetos</displayName>
			</currency>
			<currency type="AED">
				<displayName>JAE dirhamas</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afganis (1927-2002)</displayName>
				<displayName count="few">Afganiai (1927-2002)</displayName>
				<displayName count="one">Afganis (1927-2002)</displayName>
				<displayName count="other">Afganiai (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afganis</displayName>
				<displayName count="few">Afganiai</displayName>
				<displayName count="one">Afganis</displayName>
				<displayName count="other">Afganiai</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albanijos lekas</displayName>
				<displayName count="few">Albanijos lekai</displayName>
				<displayName count="one">Albanijos lekas</displayName>
				<displayName count="other">Albanijos lekai</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Armėnijos dramas</displayName>
				<displayName count="few">Armėnijos dramai</displayName>
				<displayName count="one">Armėnijos dramas</displayName>
				<displayName count="other">Armėnijos dramai</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Nyderlandų Antilų guldenas</displayName>
				<displayName count="few">Nyderlandų Antilų guldenas</displayName>
				<displayName count="other">Nyderlandų Antilų guldenai</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Angolos kvanza</displayName>
				<displayName count="few">Angolos kvanzos</displayName>
				<displayName count="one">Angolos kvanza</displayName>
				<displayName count="other">Angolos kvanzai</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolos kvanza (1977-1990)</displayName>
				<displayName count="few">Angolos kvanzos (1977-1990)</displayName>
				<displayName count="one">Angolos kvanza (1977-1990)</displayName>
				<displayName count="other">Angolos kvanzai (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolos naujoji kvanza</displayName>
				<displayName count="few">Angolos naujosios kvanzos</displayName>
				<displayName count="one">Angolos naujoji kvanza</displayName>
				<displayName count="other">Angolos naujosios kvanzos</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentinos pesas (1983-1985)</displayName>
				<displayName count="few">Argentinos pesai (1983-1985)</displayName>
				<displayName count="one">Argentinos pesas (1983-1985)</displayName>
				<displayName count="other">Argentinos pesai (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinos pesas</displayName>
				<displayName count="one">Argentinos pesas</displayName>
				<displayName count="other">Argentinos pesai</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Austrijos šilingas</displayName>
				<displayName count="few">Austrijos šilingai</displayName>
				<displayName count="one">Austrijos šilingas</displayName>
				<displayName count="other">Austrijos šilingai</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australijos doleris</displayName>
				<displayName count="one">Australijos doleris</displayName>
				<displayName count="other">Australijos doleriai</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Arubos guldenas</displayName>
				<displayName count="few">Arubos guldenai</displayName>
				<displayName count="one">Arubos guldenas</displayName>
				<displayName count="other">Arubos guldenai</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbaidžano manatas (1993-2006)</displayName>
				<displayName count="few">Azerbaidžano manatai (1993-2006)</displayName>
				<displayName count="one">Azerbaidžano manatas (1993-2006)</displayName>
				<displayName count="other">Azerbaidžano manatai (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azerbaidžano manatas</displayName>
				<displayName count="few">Azerbaidžano manatai</displayName>
				<displayName count="one">Azerbaidžano manatas</displayName>
				<displayName count="other">Azerbaidžano manatai</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnijos ir Hercegovinos dinaras</displayName>
				<displayName count="few">Bosnijos ir Hercegovinos dinarai</displayName>
				<displayName count="one">Bosnijos ir Hercegovinos dinaras</displayName>
				<displayName count="other">Bosnijos ir Hercegovinos dinarai</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnijos ir Hercegovinos konvertuojamoji markė</displayName>
				<displayName count="few">Bosnijos ir Hercegovinos konvertuojamosios markės</displayName>
				<displayName count="one">Bosnijos ir Hercegovinos konvertuojamoji markė</displayName>
				<displayName count="other">Bosnijos ir Hercegovinos konvertuojamosios markės</displayName>
			</currency>
			<currency type="BBD">
				<displayName>Barbadoso doleris</displayName>
				<displayName count="few">Barbadoso doleriai</displayName>
				<displayName count="one">Barbadoso doleris</displayName>
				<displayName count="other">Barbadoso doleriai</displayName>
			</currency>
			<currency type="BDT">
				<displayName>Bangladešo taka</displayName>
				<displayName count="few">Bangladešo takos</displayName>
				<displayName count="one">Bangladešo taka</displayName>
				<displayName count="other">Bangladešo takos</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Belgijos frankas (konvertuojamas)</displayName>
				<displayName count="few">Belgijos frankai (konvertuojami)</displayName>
				<displayName count="one">Belgijos frankas (konvertuojamas)</displayName>
				<displayName count="other">Belgijos frankai (konvertuojami)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgijos frankas</displayName>
				<displayName count="few">Belgijos frankai</displayName>
				<displayName count="one">Belgijos frankas</displayName>
				<displayName count="other">Belgijos frankai</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Belgijos frankas (finansinis)</displayName>
				<displayName count="few">Belgijos frankai (finansiniai)</displayName>
				<displayName count="one">Belgijos frankas (finansinis)</displayName>
				<displayName count="other">Belgijos frankai (finansiniai)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgarijos levas (1962-1999)</displayName>
				<displayName count="few">Bulgarijos levai</displayName>
				<displayName count="one">Bulgarijos levas (1962-1999)</displayName>
				<displayName count="other">Bulgarijos levai</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bulgarijos levas</displayName>
				<displayName count="one">Bulgarijos naujasis levas</displayName>
				<displayName count="other">Bulgarijos naujasis levai</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreino dinaras</displayName>
				<displayName count="few">Bahreino dinarai</displayName>
				<displayName count="one">Bahreino dinaras</displayName>
				<displayName count="other">Bahreino dinarai</displayName>
			</currency>
			<currency type="BIF">
				<displayName>Burundžio frankas</displayName>
				<displayName count="few">Burundžio frankai</displayName>
				<displayName count="one">Burundžio frankas</displayName>
				<displayName count="other">Burundžio frankai</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermudos doleris</displayName>
				<displayName count="few">Bermudos doleriai</displayName>
				<displayName count="one">Bermudos doleris</displayName>
				<displayName count="other">Bermudos doleriai</displayName>
			</currency>
			<currency type="BND">
				<displayName>Brunėjaus doleris</displayName>
				<displayName count="one">Brunėjaus doleris</displayName>
				<displayName count="other">Brunėjaus doleriai</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Bolivijos bolivijanas</displayName>
				<displayName count="one">Bolivijos bolivijanas</displayName>
				<displayName count="other">Bolivijos bolivijanai</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Bolivijos pesas</displayName>
				<displayName count="few">Bolivijos pesai</displayName>
				<displayName count="one">Bolivijos pesas</displayName>
				<displayName count="other">Bolivijos pesai</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivijos mvdol</displayName>
				<displayName count="one">Bolivijos mvdol</displayName>
				<displayName count="other">Bolivijos mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brazilijos naujasis kruzeiras</displayName>
				<displayName count="few">Brazilijos naujieji kruzeirai</displayName>
				<displayName count="one">Brazilijos naujasis kruzeiras</displayName>
				<displayName count="other">Brazilijos naujieji kruzeirai</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brazilijos kruzadas</displayName>
				<displayName count="few">Brazilijos kruzadai</displayName>
				<displayName count="one">Brazilijos kruzadas</displayName>
				<displayName count="other">Brazilijos kruzadai</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brazilijos kruzeiras (1990-1993)</displayName>
				<displayName count="few">Brazilijos kruzeirai (1990-1993)</displayName>
				<displayName count="one">Brazilijos kruzeiras (1990-1993)</displayName>
				<displayName count="other">Brazilijos kruzeirai (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilijos realas</displayName>
				<displayName count="one">Brazilijos realas</displayName>
				<displayName count="other">Brazilijos realai</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Brazilijos naujasis kruzadas</displayName>
				<displayName count="few">Brazilijos naujieji  kruzadai</displayName>
				<displayName count="one">Brazilijos naujasis kruzadas</displayName>
				<displayName count="other">Brazilijos naujieji kruzadai</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brazilijos kruzeiras</displayName>
				<displayName count="few">Brazilijos kruzeirai</displayName>
				<displayName count="one">Brazilijos kruzeiras</displayName>
				<displayName count="other">Brazilijos kruzeirai</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamų doleris</displayName>
				<displayName count="few">Bahamų doleriai</displayName>
				<displayName count="one">Bahamų doleris</displayName>
				<displayName count="other">Bahamų doleriai</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Butano ngultrumas</displayName>
				<displayName count="few">Butano ngultrumai</displayName>
				<displayName count="one">Butano ngultrumas</displayName>
				<displayName count="other">Butano ngultrumai</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botsvanos pula</displayName>
				<displayName count="few">Botsvanos pulos</displayName>
				<displayName count="one">Botsvanos pula</displayName>
				<displayName count="other">Botsvanos pulos</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Baltarusijos naujasis rublis</displayName>
				<displayName count="one">Baltarusijos naujasis rublis</displayName>
				<displayName count="other">Baltarusijos naujieji rubliai</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Baltarusijos rublis</displayName>
				<displayName count="one">Baltarusijos rublis</displayName>
				<displayName count="other">Baltarusijos rubliai</displayName>
			</currency>
			<currency type="BZD">
				<displayName>Belizo doleris</displayName>
				<displayName count="one">Belizo doleris</displayName>
				<displayName count="other">Belizo doleriai</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanados doleris</displayName>
				<displayName count="one">Kanados doleris</displayName>
				<displayName count="other">Kanados doleriai</displayName>
			</currency>
			<currency type="CDF">
				<displayName>Kongo frankas</displayName>
				<displayName count="one">Kongo frankas</displayName>
				<displayName count="other">Kongo frankai</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Šveicarijos frankas</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Čilės pesas</displayName>
				<displayName count="one">Čilės pesas</displayName>
				<displayName count="other">Čilės pesai</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Ženminbi juanis</displayName>
				<displayName count="one">Kinijos ženminbi juanis</displayName>
				<displayName count="other">Kinijos ženminbi juaniai</displayName>
			</currency>
			<currency type="COP">
				<displayName>Kolumbijos pesas</displayName>
				<displayName count="one">Kolumbijos pesas</displayName>
				<displayName count="other">Kolumbijos pesai</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Kosta Rikos kolonas</displayName>
				<displayName count="one">Kosta Rikos kolonas</displayName>
				<displayName count="other">Kosta Rikos kolonai</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Senasis Serbijos dinaras</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kubos pesas</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Kipro svaras</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Čekijos krona</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Rytų Vokietijos ostmarkė</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Vokietijos markė</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Džibučio frankas</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Danijos krona</displayName>
			</currency>
			<currency type="DOP">
				<displayName>Dominikos pesas</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Alžyro dinaras</displayName>
				<displayName count="one">Alžyro dinaras</displayName>
				<displayName count="other">Alžyro dinarai</displayName>
			</currency>
			<currency type="ECS">
				<displayName>Ekvadoro sukrė</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ekvadoro constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estijos krona</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egipto svaras</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrėjos nakfa</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Ispanijos peseta</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Etiopijos biras</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euras</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Suomijos markė</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidžio doleris</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Falklando salų svaras</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Prancūzijos frankas</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Svaras sterlingų</displayName>
				<displayName count="one">Didžiosios Britanijos svaras sterlingų</displayName>
				<displayName count="other">Didžiosios Britanijos svarai sterlingų</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Gruzijos laris</displayName>
			</currency>
			<currency type="GHC">
				<displayName>Ganos sedis (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ganos sedis</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltaro svaras</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambijos dalasis</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Gvinėjos frankas</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Graikijos drachma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Gvatemalos ketcalis</displayName>
			</currency>
			<currency type="GWE">
				<displayName>Portugalų Gvinėjos eskudas</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Gvinėjos-Bisau pesas</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Gajanos doleris</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Honkongo doleris</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Honduro lempira</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Kroatijos dinaras</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kroatijos kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haičio gurdas</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Vengrijos forintas</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indonezijos rupija</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Airijos svaras</displayName>
			</currency>
			<currency type="ILP">
				<displayName>Izraelio svaras</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Izraelio šekelis</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijos rupija</displayName>
			</currency>
			<currency type="IQD">
				<displayName>Irako dinaras</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Irano rialas</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Islandijos krona</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italijos lira</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaikos doleris</displayName>
			</currency>
			<currency type="JOD">
				<displayName>Jordanijos dinaras</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Jena</displayName>
			</currency>
			<currency type="KES">
				<displayName>Kenijos šilingas</displayName>
			</currency>
			<currency type="KGS">
				<displayName>Kirgizijos somas</displayName>
			</currency>
			<currency type="KMF">
				<displayName>Komoro frankas</displayName>
				<displayName count="one">Komoro frankas</displayName>
				<displayName count="other">Komoro frankai</displayName>
			</currency>
			<currency type="KPW">
				<displayName>Šiaurės Korėjos vonas</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Pietų Korėjos vonas</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuveito dinaras</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazachstano tengė</displayName>
			</currency>
			<currency type="LAK">
				<displayName>Laoso kipas</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libano svaras</displayName>
			</currency>
			<currency type="LKR">
				<displayName>Šri Lankos rupija</displayName>
			</currency>
			<currency type="LRD">
				<displayName>Liberijos doleris</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesoto lotis</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litas</displayName>
				<symbol>Lt</symbol>
			</currency>
			<currency type="LTT">
				<displayName>Lietuvos talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Liuksemburgo konvertuojamas frankas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Liuksemburgo frankas</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Liuksemburgo finansinis frankas</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latvijos latas</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Latvijos rublis</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libijos dinaras</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Maroko dirhamas</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Maroko frankas</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldovos lėja</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaskaro ariaris</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskaro frankas</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedonijos denaras</displayName>
			</currency>
			<currency type="MLF">
				<displayName>Malio frankas</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Mianmaro kijatas</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolijos tugrikas</displayName>
			</currency>
			<currency type="MOP">
				<displayName>Macao pataka</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritanijos ugija</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Maltos lira</displayName>
			</currency>
			<currency type="MTP">
				<displayName>Maltos svaras</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauricijaus rupija</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldyvų salų rufija</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malavio kvača</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Meksikos pesas</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Meksikos sidabrinis pesas</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Meksikos United de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaizijos ringitas</displayName>
			</currency>
			<currency type="MZE">
				<displayName>Mozambiko eskudas</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Senasis Mozambiko metikalis</displayName>
			</currency>
			<currency type="MZN">
				<displayName>Mozambiko metikalis</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibijos doleris</displayName>
			</currency>
			<currency type="NGN">
				<displayName>Nigerijos naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nikaragvos kardoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nikaragvos kardoba oras</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Nyderlandų guldenas</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norvegijos krona</displayName>
			</currency>
			<currency type="NPR">
				<displayName>Nepalo rupija</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Naujosios Zelandijos doleris</displayName>
			</currency>
			<currency type="OMR">
				<displayName>Omano rialas</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Panamos balboja</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peru naujasis solis</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peru solis</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua Naujosios Gvinėjos kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipinų pesas</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistano rupija</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Lenkijos zlotas</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Lenkijos zlotas (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugalijos eskudas</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paragvajaus guaranis</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Kataro rialas</displayName>
			</currency>
			<currency type="RHD">
				<displayName>Rodezijos doleris</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Senoji Rumunijos lėja</displayName>
			</currency>
			<currency type="RON">
				<displayName>Naujoji Rumunijos lėja</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbijos dinaras</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rusijos rublis</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rusijos rublis (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruandos frankas</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudo Arabijos rialas</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Saliamono salų doleris</displayName>
			</currency>
			<currency type="SCR">
				<displayName>Seišelių salų rupija</displayName>
			</currency>
			<currency type="SDD">
				<displayName>Senasis Sudano dinaras</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudano svaras</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Senasis Sudano svaras</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Švedijos krona</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapūro doleris</displayName>
			</currency>
			<currency type="SHP">
				<displayName>Šv. Elenos salų svaras</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slovėnijos tolaras</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovakijos krona</displayName>
			</currency>
			<currency type="SLL">
				<displayName>Siera Leonės leonė</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somalio šilingas</displayName>
			</currency>
			<currency type="SRD">
				<displayName>Surimano doleris</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surimano guldenas</displayName>
			</currency>
			<currency type="STD">
				<displayName>Sao Tomės ir Principės dobra</displayName>
			</currency>
			<currency type="SUR">
				<displayName>Sovietų Sąjungos rublis</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Salvadoro kolonas</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Sirijos svaras</displayName>
			</currency>
			<currency type="SZL">
				<displayName>Svazilendo lilangenis</displayName>
			</currency>
			<currency type="THB">
				<displayName>Batas</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadžikistano rublis</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadžikistano somonis</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmėnistano manatas</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tuniso dinaras</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tongo paanga</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Timoro eskudas</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turkijos lira</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Naujoji Turkijos Lira</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidado ir Tobago doleris</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Naujasis Taivano doleris</displayName>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanijos šilingas</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukrainos grivina</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainos karbovanecas</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandos šilingas (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandos šilingas</displayName>
			</currency>
			<currency type="USD">
				<displayName>JAV doleris</displayName>
			</currency>
			<currency type="USN">
				<displayName>JAV doleris (sekančios dienos)</displayName>
			</currency>
			<currency type="USS">
				<displayName>JAV doleris (šios dienos)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Urugvajaus pesas (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Urugvajaus pesas</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Uzbekistano sumas</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivaras</displayName>
			</currency>
			<currency type="VEF">
				<displayName>Stiprusis Venesuelos bolivaras</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vietnamo dongai</displayName>
			</currency>
			<currency type="WST">
				<displayName>Vakarų Samoa tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA BEAC frankas</displayName>
				<displayName count="one">CFA BEAC frankas</displayName>
				<displayName count="other">CFA BEAC frankai</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Sidabras</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Auksas</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Europos suvestinės vienetas</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Europos piniginis vienetas</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Europos valiutos/apskaitos vienetas (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Europos valiutos/apskaitos vienetas (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Rytų Karibų doleris</displayName>
			</currency>
			<currency type="XDR">
				<displayName>SDR Tarptautinis valiutos fondas</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Europos piniginis vienetas (1993-1999)</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Auksinis - frankas</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Uic -frankas</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA BCEAO frankas</displayName>
				<displayName count="one">CFA BCEAO frankas</displayName>
				<displayName count="other">CFA BCEAO frankai</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Paladis</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP frankas</displayName>
				<displayName count="one">CFP frankas</displayName>
				<displayName count="other">CFP frankai</displayName>
			</currency>
			<currency type="XPT">
				<displayName>Platina</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemeno dinaras</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemeno rialas</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoslavijos naujasis dinaras</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslavijos konvertuojamas dinaras</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Pietų Afrikos Respublikos finansinis randas</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>PAR Randas</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Zambijos kvača</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairo naujasis zairas</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairo zairas</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabvės doleris</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>taip:t</yesstr>
			<nostr>ne:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[]�z���Locale/Data/ha_Arab.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Arab"/>
	</identity>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ا ب ت-غ ف ڢ ك-ن]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">جَن</month>
							<month type="2">ڢَب</month>
							<month type="3">مَر</month>
							<month type="4">أَڢْر</month>
							<month type="5">مَي</month>
							<month type="6">يُون</month>
							<month type="7">يُول</month>
							<month type="8">أَغُ</month>
							<month type="9">سَت</month>
							<month type="10">أُكْت</month>
							<month type="11">نُو</month>
							<month type="12">دِس</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">جَنَيْرُ</month>
							<month type="2">ڢَبْرَيْرُ</month>
							<month type="3">مَرِسْ</month>
							<month type="4">أَڢْرِلُ</month>
							<month type="5">مَيُ</month>
							<month type="6">يُونِ</month>
							<month type="7">يُولِ</month>
							<month type="8">أَغُسْتَ</month>
							<month type="9">سَتُمْبَ</month>
							<month type="10">أُكْتوُبَ</month>
							<month type="11">نُوَمْبَ</month>
							<month type="12">دِسَمْبَ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">لَح</day>
							<day type="mon">لِت</day>
							<day type="tue">تَل</day>
							<day type="wed">لَر</day>
							<day type="thu">أَلْح</day>
							<day type="fri">جُم</day>
							<day type="sat">أَسَ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">لَحَدِ</day>
							<day type="mon">لِتِنِنْ</day>
							<day type="tue">تَلَتَ</day>
							<day type="wed">لَرَبَ</day>
							<day type="thu">أَلْحَمِسْ</day>
							<day type="fri">جُمَعَ</day>
							<day type="sat">أَسَبَرْ</day>
						</dayWidth>
					</dayContext>
				</days>
				<am>A.M.</am>
				<pm>P.M.</pm>
				<eras>
					<eraNames>
						<era type="0">غَبَنِنْ مِلَدِ</era>
						<era type="1">مِلَدِ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">غَبَنِنْ مِلَدِ</era>
						<era type="1">مِلَدِ</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="NGN">
				<displayName>نَيْرَ</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[L�z�;;Locale/Data/uz_Cyrl_UZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<script type="Cyrl"/>
		<territory type="UZ"/>
	</identity>
</ldml>
PKpG[2�O##Locale/Data/rw_RW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="rw"/>
		<territory type="RW"/>
	</identity>
</ldml>
PKpG[�5IqLocale/Data/en_AU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="en"/>
		<territory type="AU"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d/MM - E, d/MM</greatestDifference>
							<greatestDifference id="d">E, d/MM - E, d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/MM - d/MM</greatestDifference>
							<greatestDifference id="d">d/MM - d/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d/MM/yy - E, d/MM/yy</greatestDifference>
							<greatestDifference id="d">E, d/MM/yy - E, d/MM/yy</greatestDifference>
							<greatestDifference id="y">E, d/MM/yy - E, d/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="d">d/MM/yy - d/MM/yy</greatestDifference>
							<greatestDifference id="y">d/MM/yy - d/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Atlantic">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AUD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�§(����Locale/Data/ar.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.102 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="ar"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>،</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">الأفارية</language>
			<language type="ab">الأبخازية</language>
			<language type="ace">الأتشينيزية</language>
			<language type="ach">الأكولية</language>
			<language type="ada">الأدانجمية</language>
			<language type="ady">الأديجه</language>
			<language type="ae">الأفستية</language>
			<language type="af">الأفريقية</language>
			<language type="afa">لغة أفرو آسيوية</language>
			<language type="afh">الأفريهيلية</language>
			<language type="ain">الآينوية</language>
			<language type="ak">الأكانية</language>
			<language type="akk">الأكادية</language>
			<language type="ale">الأليوتية</language>
			<language type="alg">اللغات الأمريكية الهندية</language>
			<language type="alt">الألطائية الجنوبية</language>
			<language type="am">الأمهرية</language>
			<language type="an">الأراجونية</language>
			<language type="ang">الانجليزية القديمة</language>
			<language type="anp">الأنجيكا</language>
			<language type="apa">اللغات الأباتشية</language>
			<language type="ar">العربية</language>
			<language type="arc">الآرامية</language>
			<language type="arn">الأروكانية</language>
			<language type="arp">الأراباهو</language>
			<language type="art">الصناعية - أخرى</language>
			<language type="arw">الأراواكية</language>
			<language type="as">الأسامية</language>
			<language type="ast">الأسترية</language>
			<language type="ath">اللغات الأزباسكانية</language>
			<language type="aus">اللغات الأسترالية</language>
			<language type="av">الأفاريكية</language>
			<language type="awa">الأوادية</language>
			<language type="ay">الأيمارا</language>
			<language type="az">الأذرية</language>
			<language type="ba">الباشكيرية</language>
			<language type="bad">الباندا</language>
			<language type="bai">اللغات الباميليكية</language>
			<language type="bal">البلوشية</language>
			<language type="ban">اللغة البالية</language>
			<language type="bas">الباسا</language>
			<language type="bat">البلطيقية - أخرى</language>
			<language type="be">البيلوروسية</language>
			<language type="bej">البيجا</language>
			<language type="bem">البيمبا</language>
			<language type="ber">البربرية</language>
			<language type="bg">البلغارية</language>
			<language type="bh">البيهارية</language>
			<language type="bho">البهوجبرية</language>
			<language type="bi">البيسلامية</language>
			<language type="bik">البيكولية</language>
			<language type="bin">البينية</language>
			<language type="bla">السيكسيكية</language>
			<language type="bm">البامبارا</language>
			<language type="bn">البنغالية</language>
			<language type="bnt">البانتو</language>
			<language type="bo">التبتية</language>
			<language type="br">البريتونية</language>
			<language type="bra">البراجية</language>
			<language type="bs">البوسنية</language>
			<language type="btk">الباتاكية</language>
			<language type="bua">البرياتية</language>
			<language type="bug">البجينيزية</language>
			<language type="byn">البلينية</language>
			<language type="ca">الكاتالوينية</language>
			<language type="cad">الكادو</language>
			<language type="cai">الهندية الأمريكية الوسطى - أخرى</language>
			<language type="car">الكاريبية</language>
			<language type="cau">القوقازية - أخرى</language>
			<language type="cch">الأتسام</language>
			<language type="ce">الشيشانية</language>
			<language type="ceb">السيبيونو</language>
			<language type="cel">السلتية - أخرى</language>
			<language type="ch">التشامورو</language>
			<language type="chb">التشيبشا</language>
			<language type="chg">التشاجاتاى</language>
			<language type="chk">التشكيزية</language>
			<language type="chm">الماري</language>
			<language type="chn">الشينوك جارجون</language>
			<language type="cho">الشوكتو</language>
			<language type="chp">الشيباوايان</language>
			<language type="chr">الشيروكى</language>
			<language type="chy">الشايان</language>
			<language type="cmc">اللغات التشاميكية</language>
			<language type="co">الكورسيكية</language>
			<language type="cop">قبطية</language>
			<language type="cpe">الكرييولى و اللغات المبسطة الأخرى للتفاهم بين الشعوب على أساس الأنجليزية</language>
			<language type="cpf">الكرييولى و اللغات المبسطة الأخرى للتفاهم بين الشعوب على أساس الفرنسية</language>
			<language type="cpp">الكرييولى و اللغات المبسطة الأخرى للتفاهم بين الشعوب على أساس البرتغالية</language>
			<language type="cr">الكرى</language>
			<language type="crh">تركى كريمين، لغة توركية كريمينية</language>
			<language type="crp">الكرييولى و اللغات المبسطة الأخرى للتفاهم بين الشعوب - أخرى</language>
			<language type="cs">التشيكية</language>
			<language type="csb">الكاشبايان</language>
			<language type="cu">سلافية كنسية</language>
			<language type="cus">الكشيتيك - أخرى</language>
			<language type="cv">التشفاش</language>
			<language type="cy">الولزية</language>
			<language type="da">الدانماركية</language>
			<language type="dak">الداكوتا</language>
			<language type="dar">الدارجوا</language>
			<language type="day">الدياك</language>
			<language type="de">الألمانية</language>
			<language type="de_AT">الألمانية النمساوية</language>
			<language type="de_CH">الألمانية العليا السويسرية</language>
			<language type="del">الديلوير</language>
			<language type="den">السلافية</language>
			<language type="dgr">الدوجريب</language>
			<language type="din">الدنكا</language>
			<language type="doi">الدوجرى</language>
			<language type="dra">الدرافيدين - أخرى</language>
			<language type="dsb">الصربية السفلى</language>
			<language type="dua">الديولا</language>
			<language type="dum">الهولندية الوسطى</language>
			<language type="dv">المالديفية</language>
			<language type="dyu">الدايلا</language>
			<language type="dz">الزونخاية</language>
			<language type="ee">الايوي</language>
			<language type="efi">الافيك</language>
			<language type="egy">المصرية القديمة</language>
			<language type="eka">الاكاجك</language>
			<language type="el">اليونانية</language>
			<language type="elx">الامايت</language>
			<language type="en">الانجليزية</language>
			<language type="en_AU">الانجليزية الأسترالية</language>
			<language type="en_CA">الإنجليزية الكندية</language>
			<language type="en_GB">الانجليزية البريطانية</language>
			<language type="en_US">إنجليزية الولايات المتحدة</language>
			<language type="enm">الانجليزية الوسطى</language>
			<language type="eo">اسبرانتو</language>
			<language type="es">الأسبانية</language>
			<language type="es_419">أسبانية أمريكا اللاتينية</language>
			<language type="es_ES">الأسبانية الأيبيرية</language>
			<language type="et">الأستونية</language>
			<language type="eu">لغة الباسك</language>
			<language type="ewo">الايوندو</language>
			<language type="fa">الفارسية</language>
			<language type="fan">الفانج</language>
			<language type="fat">الفانتى</language>
			<language type="ff">الفلة</language>
			<language type="fi">الفنلندية</language>
			<language type="fil">الفلبينية</language>
			<language type="fiu">فينو أجرايان - أخرى</language>
			<language type="fj">الفيجية</language>
			<language type="fo">الفارويز</language>
			<language type="fon">الفون</language>
			<language type="fr">الفرنسية</language>
			<language type="fr_CA">الفرنسية الكندية</language>
			<language type="fr_CH">الفرنسية السويسرية</language>
			<language type="frm">الفرنسية الوسطى</language>
			<language type="fro">الفرنسية القديمة</language>
			<language type="frr">الفريزينية الشمالية</language>
			<language type="frs">الفريزينية الشرقية</language>
			<language type="fur">الفريلايان</language>
			<language type="fy">الفريزيان</language>
			<language type="ga">الأيرلندية</language>
			<language type="gaa">الجا</language>
			<language type="gay">الجايو</language>
			<language type="gba">الجبيا</language>
			<language type="gd">الغيلية الأسكتلندية</language>
			<language type="gem">الجرمانية (أخرى)</language>
			<language type="gez">الجيز</language>
			<language type="gil">لغة أهل جبل طارق</language>
			<language type="gl">الجاليكية</language>
			<language type="gmh">الألمانية العليا الوسطى</language>
			<language type="gn">الجوارانى</language>
			<language type="goh">الألمانية العليا القديمة</language>
			<language type="gon">الجندى</language>
			<language type="gor">الجورونتالو</language>
			<language type="got">القوطية</language>
			<language type="grb">الجريبو</language>
			<language type="grc">اليونانية القديمة</language>
			<language type="gsw">الألمانية السويسرية</language>
			<language type="gu">الغوجاراتية</language>
			<language type="gv">المنكية</language>
			<language type="ha">الهوسا</language>
			<language type="hai">الهيدا</language>
			<language type="haw">لغة أهل الهاواى</language>
			<language type="he">العبرية</language>
			<language type="hi">الهندية</language>
			<language type="hil">الهيليجينون</language>
			<language type="him">الهيماتشالى</language>
			<language type="hit">الحثية</language>
			<language type="hmn">الهمونجية</language>
			<language type="ho">الهيرى موتو</language>
			<language type="hr">الكرواتية</language>
			<language type="hsb">الصربية العليا</language>
			<language type="ht">الهايتية</language>
			<language type="hu">الهنغارية</language>
			<language type="hup">الهبا</language>
			<language type="hy">الأرمينية</language>
			<language type="hz">الهيريرو</language>
			<language type="ia">اللّغة الوسيطة</language>
			<language type="iba">الايبان</language>
			<language type="id">الأندونيسية</language>
			<language type="ie">الانترلينج</language>
			<language type="ig">الايجبو</language>
			<language type="ii">السيتشيون يى</language>
			<language type="ijo">الايجو</language>
			<language type="ik">الاينبياك</language>
			<language type="ilo">الايلوكو</language>
			<language type="inc">الهندية - أخرى</language>
			<language type="ine">الهندية الأوروبية - أخرى</language>
			<language type="inh">الانجوشية</language>
			<language type="io">الايدو</language>
			<language type="ira">الايرانية</language>
			<language type="iro">اللغات الايروكويانية</language>
			<language type="is">الأيسلاندية</language>
			<language type="it">الايطالية</language>
			<language type="iu">الاينكتيتت</language>
			<language type="ja">اليابانية</language>
			<language type="jbo">اللوجبان</language>
			<language type="jpr">الجيدو الفارسى</language>
			<language type="jrb">الجيدو العربى</language>
			<language type="jv">الجاوية</language>
			<language type="ka">الجورجية</language>
			<language type="kaa">الكارا-كالباك</language>
			<language type="kab">القبيلية</language>
			<language type="kac">الكاتشين</language>
			<language type="kaj">الجو</language>
			<language type="kam">الكامبا</language>
			<language type="kar">الكاريين</language>
			<language type="kaw">الكوى</language>
			<language type="kbd">الكاباردايان</language>
			<language type="kfo">الكورو</language>
			<language type="kg">الكونغو</language>
			<language type="kha">الكازية</language>
			<language type="khi">الخويسان - أخرى</language>
			<language type="kho">الخوتانيز</language>
			<language type="ki">الكيكيو</language>
			<language type="kj">الكيونياما</language>
			<language type="kk">الكازاخستانية</language>
			<language type="kl">الكالاليست</language>
			<language type="km">الخميرية</language>
			<language type="kmb">الكيمبندو</language>
			<language type="kn">الكانادا</language>
			<language type="ko">الكورية</language>
			<language type="kok">الكونكانية</language>
			<language type="kos">الكوسراين</language>
			<language type="kpe">الكبيل</language>
			<language type="kr">الكانيورى</language>
			<language type="krc">الكاراتشاى-بالكار</language>
			<language type="krl">الكريلية</language>
			<language type="kro">الكرو</language>
			<language type="ks">الكاشميرية</language>
			<language type="ku">الكردية</language>
			<language type="kum">الكميك</language>
			<language type="kut">الكتيناى</language>
			<language type="kv">الكومى</language>
			<language type="kw">الكورنية</language>
			<language type="ky">القيرغستانية</language>
			<language type="la">اللاتينية</language>
			<language type="lad">الاسباعبرية</language>
			<language type="lah">اللاهندا</language>
			<language type="lam">اللامبا</language>
			<language type="lb">اللوكسمبرجية</language>
			<language type="lez">الليزجهايانية</language>
			<language type="lg">الجاندا</language>
			<language type="li">الليمبرجيشية</language>
			<language type="ln">اللينجالا</language>
			<language type="lo">اللاوية</language>
			<language type="lol">منغولى</language>
			<language type="loz">اللوزى</language>
			<language type="lt">اللتوانية</language>
			<language type="lu">اللبا-كاتانجا</language>
			<language type="lua">اللبا-لؤلؤ</language>
			<language type="lui">اللوسينو</language>
			<language type="lun">اللوندا</language>
			<language type="luo">اللو</language>
			<language type="lus">اللشاى</language>
			<language type="lv">اللاتفية</language>
			<language type="mad">المادريز</language>
			<language type="mag">الماجا</language>
			<language type="mai">المايثيلي</language>
			<language type="mak">الماكاسار</language>
			<language type="man">الماندينغ</language>
			<language type="map">الأوسترونيسيان</language>
			<language type="mas">الماساي</language>
			<language type="mdf">الموكشا</language>
			<language type="mdr">الماندار</language>
			<language type="men">الميند</language>
			<language type="mg">المالاجاشية</language>
			<language type="mga">الأيرلندية الوسطى</language>
			<language type="mh">المارشالية</language>
			<language type="mi">الماورية</language>
			<language type="mic">الميكماكيونية</language>
			<language type="min">المينانجكاباو</language>
			<language type="mis">اللغات المتنوعة</language>
			<language type="mk">المقدونية</language>
			<language type="mkh">المون خمير- أخرى</language>
			<language type="ml">الماليالام</language>
			<language type="mn">المنغولية</language>
			<language type="mnc">المانشو</language>
			<language type="mni">المانيبرى</language>
			<language type="mno">لغات مانوبو</language>
			<language type="mo">المولدوفية</language>
			<language type="moh">الموهوك</language>
			<language type="mos">الموسي</language>
			<language type="mr">الماراثى</language>
			<language type="ms">لغة الملايو</language>
			<language type="mt">المالطية</language>
			<language type="mul">اللغات المتعددة</language>
			<language type="mun">لغات المندا</language>
			<language type="mus">الكريك</language>
			<language type="mwl">الميرانديز</language>
			<language type="mwr">الماروارى</language>
			<language type="my">البورمية</language>
			<language type="myn">لغات المايا</language>
			<language type="myv">اللغة الارزية</language>
			<language type="na">النورو</language>
			<language type="nah">الناهيوتل</language>
			<language type="nai">الهندية الأمريكية الشمالية - أخرى</language>
			<language type="nap">اللغة النابولية</language>
			<language type="nb">البوكمالية النرويجية</language>
			<language type="nd">النديبيل الشمالى</language>
			<language type="nds">الألمانية السفلى</language>
			<language type="ne">النيبالية</language>
			<language type="new">النيوارى</language>
			<language type="ng">الندونجا</language>
			<language type="nia">النياس</language>
			<language type="nic">النيجر - كوردوفانايان</language>
			<language type="niu">النيوي</language>
			<language type="nl">الهولندية</language>
			<language type="nn">النينورسك النرويجي</language>
			<language type="no">النرويجية</language>
			<language type="nog">النوجاى</language>
			<language type="non">النورس القديم</language>
			<language type="nqo">انكو</language>
			<language type="nr">النديبيل الجنوبى</language>
			<language type="nso">السوتو الشمالية</language>
			<language type="nub">اللغات النوبية</language>
			<language type="nv">النافاجو</language>
			<language type="nwc">النوارية التقليدية</language>
			<language type="ny">النيانجا، التشيتشوا، التشوا</language>
			<language type="nym">النيامويزى</language>
			<language type="nyn">النيانكول</language>
			<language type="nyo">النيورو</language>
			<language type="nzi">النزيما</language>
			<language type="oc">الأوكيتانية</language>
			<language type="oj">الأوجيبوا</language>
			<language type="om">الأورومو</language>
			<language type="or">الأورييا</language>
			<language type="os">الأوسيتيك</language>
			<language type="osa">الأوساج</language>
			<language type="ota">التركية العثمانية</language>
			<language type="oto">اللغات الأوتومية</language>
			<language type="pa">البنجابية</language>
			<language type="paa">الغينية - أخرى</language>
			<language type="pag">البانجاسينان</language>
			<language type="pal">البهلوية</language>
			<language type="pam">البامبانجا</language>
			<language type="pap">البابيامينتو</language>
			<language type="pau">البالوان</language>
			<language type="peo">الفارسية القديمة</language>
			<language type="phi">الفليبينية - أخرى</language>
			<language type="phn">الفينيقية</language>
			<language type="pi">البالية</language>
			<language type="pl">البولندية</language>
			<language type="pon">البوهنبيايان</language>
			<language type="pra">اللغات البراقريطية</language>
			<language type="pro">البروفانسية القديمة</language>
			<language type="ps">البشتونية</language>
			<language type="pt">البرتغالية</language>
			<language type="pt_BR">البرتغالية البرازيلية</language>
			<language type="pt_PT">البرتغالية الأيبيرية</language>
			<language type="qu">الكويتشوا</language>
			<language type="raj">الراجاسثانية</language>
			<language type="rap">الرابانى</language>
			<language type="rar">الراروتونجانى</language>
			<language type="rm">الرهايتو-رومانس</language>
			<language type="rn">الرندى</language>
			<language type="ro">الرومانية</language>
			<language type="roa">الرومانسية - أخرى</language>
			<language type="rom">الرومانية [rom]</language>
			<language type="root">الجذر</language>
			<language type="ru">الروسية</language>
			<language type="rup">الأرومانيان</language>
			<language type="rw">الكينيارواندا</language>
			<language type="sa">السنسكريتية</language>
			<language type="sad">السانداوى</language>
			<language type="sah">الياكت</language>
			<language type="sai">الهندية الأمريكية الجنوبية - أخرى</language>
			<language type="sal">لغات ساليشان</language>
			<language type="sam">الآرامية السومارية</language>
			<language type="sas">الساساك</language>
			<language type="sat">السانتالى</language>
			<language type="sc">السردينية</language>
			<language type="scn">الصقلية</language>
			<language type="sco">الأسكتلندية</language>
			<language type="sd">السيندى</language>
			<language type="se">السامي الشمالى</language>
			<language type="sel">السيلكب</language>
			<language type="sem">السامية - أخرى</language>
			<language type="sg">السانجو</language>
			<language type="sga">الأيرلندية القديمة</language>
			<language type="sgn">لغات الأشارة</language>
			<language type="shn">الشانية</language>
			<language type="si">السريلانكية</language>
			<language type="sid">السيدامو</language>
			<language type="sio">لغات السيويون</language>
			<language type="sit">الصينية التيبتية - أخرى</language>
			<language type="sk">السلوفاكية</language>
			<language type="sl">السلوفانية</language>
			<language type="sla">السلافية - أخرى</language>
			<language type="sm">الساموائية</language>
			<language type="sma">السامي الجنوبى</language>
			<language type="smi">اللغات السامية - أخرى</language>
			<language type="smj">اللول سامى</language>
			<language type="smn">الاينارى سامى</language>
			<language type="sms">السكولت سامى</language>
			<language type="sn">الشونا</language>
			<language type="snk">السونينك</language>
			<language type="so">الصومالية</language>
			<language type="sog">السوجدين</language>
			<language type="son">السونجهاى</language>
			<language type="sq">الألبانية</language>
			<language type="sr">الصربية</language>
			<language type="srn">السرانان تونجو</language>
			<language type="srr">السرر</language>
			<language type="ss">السواتى</language>
			<language type="ssa">النيلية الصحراوية - أخرى</language>
			<language type="st">السوتو الجنوبية</language>
			<language type="su">السودانية</language>
			<language type="suk">السوكوما</language>
			<language type="sus">السوسو</language>
			<language type="sux">السومارية</language>
			<language type="sv">السويدية</language>
			<language type="sw">السواحلية</language>
			<language type="syc">سريانية تقليدية</language>
			<language type="syr">السريانية</language>
			<language type="ta">التاميلية</language>
			<language type="tai">تاى - أخرى</language>
			<language type="te">التيلجو</language>
			<language type="tem">التيمن</language>
			<language type="ter">التيرينو</language>
			<language type="tet">التيتم</language>
			<language type="tg">الطاجيكية</language>
			<language type="th">التايلاندية</language>
			<language type="ti">التيجرينيا</language>
			<language type="tig">التيجر</language>
			<language type="tiv">التيف</language>
			<language type="tk">التركمانية</language>
			<language type="tkl">التوكيلاو</language>
			<language type="tl">التاغالوغية</language>
			<language type="tlh">الكلينجون</language>
			<language type="tli">التلينغيتية</language>
			<language type="tmh">التاماشيك</language>
			<language type="tn">التسوانية</language>
			<language type="to">تونجا - جزر تونجا</language>
			<language type="tog">تونجا - نياسا</language>
			<language type="tpi">التوك بيسين</language>
			<language type="tr">التركية</language>
			<language type="ts">السونجا</language>
			<language type="tsi">التسيمشيان</language>
			<language type="tt">التتارية</language>
			<language type="tum">التامبوكا</language>
			<language type="tup">اللغات التوبية</language>
			<language type="tut">الألطائية - أخرى</language>
			<language type="tvl">التوفالو</language>
			<language type="tw">التوى</language>
			<language type="ty">التاهيتية</language>
			<language type="udm">الأدمرت</language>
			<language type="ug">الأغورية</language>
			<language type="uga">اليجاريتيك</language>
			<language type="uk">الأوكرانية</language>
			<language type="umb">الأمبندو</language>
			<language type="und">غير محدده</language>
			<language type="ur">الأردية</language>
			<language type="uz">الاوزباكية</language>
			<language type="vai">الفاى</language>
			<language type="ve">الفيندا</language>
			<language type="vi">الفيتنامية</language>
			<language type="vot">الفوتيك</language>
			<language type="wa">الولونية</language>
			<language type="wak">لغات الواكاشان</language>
			<language type="wal">الوالامو</language>
			<language type="war">الواراى</language>
			<language type="was">الواشو</language>
			<language type="wen">اللغات الصربية</language>
			<language type="wo">الولوف</language>
			<language type="xal">الكالميك</language>
			<language type="yao">الياو</language>
			<language type="yap">اليابيز</language>
			<language type="yi">اليديشية</language>
			<language type="yo">اليوروبية</language>
			<language type="ypk">اللغات اليوبيكية</language>
			<language type="za">الزهيونج</language>
			<language type="zap">الزابوتيك</language>
			<language type="zen">الزيناجا</language>
			<language type="zh">الصينية</language>
			<language type="zh_Hans">الصينية المبسطة</language>
			<language type="zh_Hant">الصينية التقليدية</language>
			<language type="znd">الزاند</language>
			<language type="zu">الزولو</language>
			<language type="zun">الزونية</language>
			<language type="zxx">بدون محتوى لغوي</language>
		</languages>
		<scripts>
			<script type="Arab">العربية</script>
			<script type="Armn">الأرمينية</script>
			<script type="Bali">البالية</script>
			<script type="Batk">الباتاك</script>
			<script type="Beng">البنغالية</script>
			<script type="Blis">رموز بليس</script>
			<script type="Bopo">البوبوموفو</script>
			<script type="Brah">الهندوسية</script>
			<script type="Brai">البرايل</script>
			<script type="Bugi">البجينيز</script>
			<script type="Buhd">البهيدية</script>
			<script type="Cans">مقطعيات أصلية كندية موحدة</script>
			<script type="Cari">الكارية</script>
			<script type="Cham">التشامية</script>
			<script type="Cher">الشيروكى</script>
			<script type="Cirt">السيرث</script>
			<script type="Copt">القبطية</script>
			<script type="Cprt">القبرصية</script>
			<script type="Cyrl">السيريلية</script>
			<script type="Cyrs">السيريلية - متغير السلافية الكنسية القديمة</script>
			<script type="Deva">الديفاناجارى</script>
			<script type="Dsrt">الديسيريت</script>
			<script type="Egyd">الديموطيقية</script>
			<script type="Egyh">الهيراطيقية</script>
			<script type="Egyp">الهيروغليفية</script>
			<script type="Ethi">الاثيوبية</script>
			<script type="Geok">الأبجدية الجورجية - أسومتافرلى و نسخرى</script>
			<script type="Geor">الجورجية</script>
			<script type="Glag">الجلاجوليتيك</script>
			<script type="Goth">القوطية</script>
			<script type="Grek">اليونانية</script>
			<script type="Gujr">التاغجراتية</script>
			<script type="Guru">الجرمخى</script>
			<script type="Hang">الهانجل</script>
			<script type="Hani">الهان</script>
			<script type="Hano">الهانونو</script>
			<script type="Hans">الهان المبسطة</script>
			<script type="Hant">الهان التقليدية</script>
			<script type="Hebr">العبرية</script>
			<script type="Hira">الهيراجانا</script>
			<script type="Hmng">الباهوه همونج</script>
			<script type="Hrkt">الكتكانا أو الهيراجانا</script>
			<script type="Hung">المجرية القديمة</script>
			<script type="Inds">اندس - هارابان</script>
			<script type="Ital">الإيطالية القديمة</script>
			<script type="Java">الجاوية</script>
			<script type="Jpan">اليابانية</script>
			<script type="Kali">الكياه لى</script>
			<script type="Kana">الكتكانا</script>
			<script type="Khar">الخاروشتى</script>
			<script type="Khmr">الخميرية</script>
			<script type="Knda">الكانادا</script>
			<script type="Kore">الكورية</script>
			<script type="Lana">الانا</script>
			<script type="Laoo">اللاو</script>
			<script type="Latf">اللاتينية - متغير فراكتر</script>
			<script type="Latg">اللاتينية - متغير غيلى</script>
			<script type="Latn">اللاتينية</script>
			<script type="Lepc">الليبتشا - رونج</script>
			<script type="Limb">الليمبو</script>
			<script type="Lina">الخطية أ</script>
			<script type="Linb">الخطية ب</script>
			<script type="Lyci">الليسية</script>
			<script type="Lydi">الليدية</script>
			<script type="Mand">المانداينية</script>
			<script type="Maya">المايا الهيروغليفية</script>
			<script type="Mero">الميرويتيك</script>
			<script type="Mlym">الماليالام</script>
			<script type="Mong">المغولية</script>
			<script type="Moon">مون</script>
			<script type="Mymr">الميانمار</script>
			<script type="Nkoo">انكو</script>
			<script type="Ogam">الأوجهام</script>
			<script type="Orkh">الأورخون</script>
			<script type="Orya">الأوريا</script>
			<script type="Osma">الأوسمانيا</script>
			<script type="Perm">البيرميكية القديمة</script>
			<script type="Phag">الفاجسبا</script>
			<script type="Phnx">الفينيقية</script>
			<script type="Plrd">الصوتيات الجماء</script>
			<script type="Qaai">الموروث</script>
			<script type="Roro">رنجورنجو</script>
			<script type="Runr">الرونى</script>
			<script type="Sara">الساراتى</script>
			<script type="Shaw">الشوانى</script>
			<script type="Sinh">السينهالا</script>
			<script type="Sund">السوندانية</script>
			<script type="Sylo">السيلوتى ناجرى</script>
			<script type="Syrc">السريانية</script>
			<script type="Syre">السريانية [Syre]</script>
			<script type="Syrj">السريانية - متغير غربى</script>
			<script type="Syrn">السريانية - متغير شرقى</script>
			<script type="Tagb">التاجبانوا</script>
			<script type="Tale">التاى لى</script>
			<script type="Talu">التاى لى الجديد</script>
			<script type="Taml">التاميلية</script>
			<script type="Telu">التيلجو</script>
			<script type="Teng">التينجوار</script>
			<script type="Tfng">التيفيناغ - البربر</script>
			<script type="Tglg">التغالوغية</script>
			<script type="Thaa">الثعنة</script>
			<script type="Thai">التايلاندية</script>
			<script type="Tibt">التبتية</script>
			<script type="Ugar">الأجاريتيكية</script>
			<script type="Vaii">الفاى</script>
			<script type="Visp">الكلام المرئى</script>
			<script type="Xpeo">الفارسية القديمة</script>
			<script type="Xsux">الكتابة المسمارية الأكادية السومارية</script>
			<script type="Yiii">اليى</script>
			<script type="Zxxx">شفرة للغات الغير مكتوبة</script>
			<script type="Zyyy">عام</script>
			<script type="Zzzz">شفرة للنصوص الغير مشفرة</script>
		</scripts>
		<territories>
			<territory type="001">العالم</territory>
			<territory type="002">افريقيا</territory>
			<territory type="003">أمريكا الشمالية</territory>
			<territory type="005">أمريكا الجنوبية</territory>
			<territory type="009">أوقيانوسيا</territory>
			<territory type="011">غرب افريقيا</territory>
			<territory type="013">أمريكا الوسطى</territory>
			<territory type="014">شرق افريقيا</territory>
			<territory type="015">شمال افريقيا</territory>
			<territory type="017">وسط افريقيا</territory>
			<territory type="018">جنوب افريقيا</territory>
			<territory type="019">الأمريكتين</territory>
			<territory type="021">شمال أمريكا</territory>
			<territory type="029">الكاريبي</territory>
			<territory type="030">شرق آسيا</territory>
			<territory type="034">جنوب آسيا</territory>
			<territory type="035">جنوب شرق آسيا</territory>
			<territory type="039">جنوب أوروبا</territory>
			<territory type="053">أستراليا ونيوزيلندا</territory>
			<territory type="054">ميلانيزيا</territory>
			<territory type="057">الجزر الميكرونيزية</territory>
			<territory type="061">بولينيزيا</territory>
			<territory type="062">جنوب وسط آسيا</territory>
			<territory type="142">آسيا</territory>
			<territory type="143">وسط آسيا</territory>
			<territory type="145">غرب آسيا</territory>
			<territory type="150">أوروبا</territory>
			<territory type="151">شرق أوروبا</territory>
			<territory type="154">شمال أوروبا</territory>
			<territory type="155">غرب أوروبا</territory>
			<territory type="172">كومنولث الدول المستقلة</territory>
			<territory type="419">أمريكا اللاتينية و الكاريبي</territory>
			<territory type="AD">أندورا</territory>
			<territory type="AE">الامارات العربية المتحدة</territory>
			<territory type="AF">أفغانستان</territory>
			<territory type="AG">أنتيجوا وبربودا</territory>
			<territory type="AI">أنجويلا</territory>
			<territory type="AL">ألبانيا</territory>
			<territory type="AM">أرمينيا</territory>
			<territory type="AN">جزر الأنتيل الهولندية</territory>
			<territory type="AO">أنجولا</territory>
			<territory type="AQ">القطب الجنوبي</territory>
			<territory type="AR">الأرجنتين</territory>
			<territory type="AS">ساموا الأمريكية</territory>
			<territory type="AT">النمسا</territory>
			<territory type="AU">أستراليا</territory>
			<territory type="AW">آروبا</territory>
			<territory type="AX">جزر أولان</territory>
			<territory type="AZ">أذربيجان</territory>
			<territory type="BA">البوسنة والهرسك</territory>
			<territory type="BB">بربادوس</territory>
			<territory type="BD">بنجلاديش</territory>
			<territory type="BE">بلجيكا</territory>
			<territory type="BF">بوركينا فاسو</territory>
			<territory type="BG">بلغاريا</territory>
			<territory type="BH">البحرين</territory>
			<territory type="BI">بوروندي</territory>
			<territory type="BJ">بنين</territory>
			<territory type="BM">برمودا</territory>
			<territory type="BN">بروناي</territory>
			<territory type="BO">بوليفيا</territory>
			<territory type="BR">البرازيل</territory>
			<territory type="BS">الباهاما</territory>
			<territory type="BT">بوتان</territory>
			<territory type="BV">جزيرة بوفيه</territory>
			<territory type="BW">بتسوانا</territory>
			<territory type="BY">روسيا البيضاء</territory>
			<territory type="BZ">بليز</territory>
			<territory type="CA">كندا</territory>
			<territory type="CC">جزر كوكوس</territory>
			<territory type="CD">جمهورية الكونغو الديمقراطية</territory>
			<territory type="CF">جمهورية افريقيا الوسطى</territory>
			<territory type="CG">الكونغو - برازافيل</territory>
			<territory type="CH">سويسرا</territory>
			<territory type="CI">ساحل العاج</territory>
			<territory type="CK">جزر كوك</territory>
			<territory type="CL">شيلي</territory>
			<territory type="CM">الكاميرون</territory>
			<territory type="CN">الصين</territory>
			<territory type="CO">كولومبيا</territory>
			<territory type="CR">كوستاريكا</territory>
			<territory type="CS">صربيا والجبل الأسود</territory>
			<territory type="CU">كوبا</territory>
			<territory type="CV">الرأس الأخضر</territory>
			<territory type="CX">جزيرة الكريسماس</territory>
			<territory type="CY">قبرص</territory>
			<territory type="CZ">جمهورية التشيك</territory>
			<territory type="DE">ألمانيا</territory>
			<territory type="DJ">جيبوتي</territory>
			<territory type="DK">الدانمرك</territory>
			<territory type="DM">دومينيكا</territory>
			<territory type="DO">جمهورية الدومينيك</territory>
			<territory type="DZ">الجزائر</territory>
			<territory type="EC">الاكوادور</territory>
			<territory type="EE">استونيا</territory>
			<territory type="EG">مصر</territory>
			<territory type="EH">الصحراء الغربية</territory>
			<territory type="ER">اريتريا</territory>
			<territory type="ES">أسبانيا</territory>
			<territory type="ET">اثيوبيا</territory>
			<territory type="FI">فنلندا</territory>
			<territory type="FJ">فيجي</territory>
			<territory type="FK">جزر فوكلاند</territory>
			<territory type="FM">ميكرونيزيا</territory>
			<territory type="FO">جزر فارو</territory>
			<territory type="FR">فرنسا</territory>
			<territory type="GA">الجابون</territory>
			<territory type="GB">المملكة المتحدة</territory>
			<territory type="GD">جرينادا</territory>
			<territory type="GE">جورجيا</territory>
			<territory type="GF">غويانا</territory>
			<territory type="GH">غانا</territory>
			<territory type="GI">جبل طارق</territory>
			<territory type="GL">جرينلاند</territory>
			<territory type="GM">غامبيا</territory>
			<territory type="GN">غينيا</territory>
			<territory type="GP">جوادلوب</territory>
			<territory type="GQ">غينيا الاستوائية</territory>
			<territory type="GR">اليونان</territory>
			<territory type="GS">جورجيا الجنوبية وجزر ساندويتش الجنوبية</territory>
			<territory type="GT">جواتيمالا</territory>
			<territory type="GU">جوام</territory>
			<territory type="GW">غينيا بيساو</territory>
			<territory type="GY">غيانا</territory>
			<territory type="HK">هونج كونج</territory>
			<territory type="HM">جزيرة هيرد وماكدونالد</territory>
			<territory type="HN">هندوراس</territory>
			<territory type="HR">كرواتيا</territory>
			<territory type="HT">هايتي</territory>
			<territory type="HU">المجر</territory>
			<territory type="ID">اندونيسيا</territory>
			<territory type="IE">أيرلاندا</territory>
			<territory type="IL">اسرائيل</territory>
			<territory type="IM">جزيرة مان</territory>
			<territory type="IN">الهند</territory>
			<territory type="IO">المحيط الهندي البريطاني</territory>
			<territory type="IQ">العراق</territory>
			<territory type="IR">ايران</territory>
			<territory type="IS">أيسلندا</territory>
			<territory type="IT">ايطاليا</territory>
			<territory type="JE">جيرسي</territory>
			<territory type="JM">جامايكا</territory>
			<territory type="JO">الأردن</territory>
			<territory type="JP">اليابان</territory>
			<territory type="KE">كينيا</territory>
			<territory type="KG">قرغيزستان</territory>
			<territory type="KH">كمبوديا</territory>
			<territory type="KI">كيريباتي</territory>
			<territory type="KM">جزر القمر</territory>
			<territory type="KN">سانت كيتس ونيفيس</territory>
			<territory type="KP">كوريا الشمالية</territory>
			<territory type="KR">كوريا الجنوبية</territory>
			<territory type="KW">الكويت</territory>
			<territory type="KY">جزر الكايمن</territory>
			<territory type="KZ">كازاخستان</territory>
			<territory type="LA">لاوس</territory>
			<territory type="LB">لبنان</territory>
			<territory type="LC">سانت لوسيا</territory>
			<territory type="LI">ليختنشتاين</territory>
			<territory type="LK">سريلانكا</territory>
			<territory type="LR">ليبيريا</territory>
			<territory type="LS">ليسوتو</territory>
			<territory type="LT">ليتوانيا</territory>
			<territory type="LU">لوكسمبورج</territory>
			<territory type="LV">لاتفيا</territory>
			<territory type="LY">ليبيا</territory>
			<territory type="MA">المغرب</territory>
			<territory type="MC">موناكو</territory>
			<territory type="MD">مولدافيا</territory>
			<territory type="ME">الجبل الأسود</territory>
			<territory type="MF">سانت مارتين</territory>
			<territory type="MG">مدغشقر</territory>
			<territory type="MH">جزر المارشال</territory>
			<territory type="MK">مقدونيا</territory>
			<territory type="ML">مالي</territory>
			<territory type="MM">ميانمار</territory>
			<territory type="MN">منغوليا</territory>
			<territory type="MO">ماكاو</territory>
			<territory type="MP">جزر ماريانا الشمالية</territory>
			<territory type="MQ">مارتينيك</territory>
			<territory type="MR">موريتانيا</territory>
			<territory type="MS">مونتسرات</territory>
			<territory type="MT">مالطا</territory>
			<territory type="MU">موريشيوس</territory>
			<territory type="MV">جزر الملديف</territory>
			<territory type="MW">ملاوي</territory>
			<territory type="MX">المكسيك</territory>
			<territory type="MY">ماليزيا</territory>
			<territory type="MZ">موزمبيق</territory>
			<territory type="NA">ناميبيا</territory>
			<territory type="NC">كاليدونيا الجديدة</territory>
			<territory type="NE">النيجر</territory>
			<territory type="NF">جزيرة نورفوك</territory>
			<territory type="NG">نيجيريا</territory>
			<territory type="NI">نيكاراجوا</territory>
			<territory type="NL">هولندا</territory>
			<territory type="NO">النرويج</territory>
			<territory type="NP">نيبال</territory>
			<territory type="NR">نورو</territory>
			<territory type="NU">نيوي</territory>
			<territory type="NZ">نيوزيلاندا</territory>
			<territory type="OM">عمان</territory>
			<territory type="PA">بنما</territory>
			<territory type="PE">بيرو</territory>
			<territory type="PF">بولينيزيا الفرنسية</territory>
			<territory type="PG">بابوا غينيا الجديدة</territory>
			<territory type="PH">الفيلبين</territory>
			<territory type="PK">باكستان</territory>
			<territory type="PL">بولندا</territory>
			<territory type="PM">سانت بيير وميكولون</territory>
			<territory type="PN">بتكايرن</territory>
			<territory type="PR">بورتوريكو</territory>
			<territory type="PS">فلسطين</territory>
			<territory type="PT">البرتغال</territory>
			<territory type="PW">بالاو</territory>
			<territory type="PY">باراجواي</territory>
			<territory type="QA">قطر</territory>
			<territory type="QO">أوقيانوسيا النائية</territory>
			<territory type="QU">الاتحاد الاوروبي</territory>
			<territory type="RE">روينيون</territory>
			<territory type="RO">رومانيا</territory>
			<territory type="RS">صربيا</territory>
			<territory type="RU">روسيا</territory>
			<territory type="RW">رواندا</territory>
			<territory type="SA">المملكة العربية السعودية</territory>
			<territory type="SB">جزر سليمان</territory>
			<territory type="SC">سيشل</territory>
			<territory type="SD">السودان</territory>
			<territory type="SE">السويد</territory>
			<territory type="SG">سنغافورة</territory>
			<territory type="SH">سانت هيلنا</territory>
			<territory type="SI">سلوفينيا</territory>
			<territory type="SJ">سفالبارد وجان مايان</territory>
			<territory type="SK">سلوفاكيا</territory>
			<territory type="SL">سيراليون</territory>
			<territory type="SM">سان مارينو</territory>
			<territory type="SN">السنغال</territory>
			<territory type="SO">الصومال</territory>
			<territory type="SR">سورينام</territory>
			<territory type="ST">ساو تومي وبرينسيبي</territory>
			<territory type="SV">السلفادور</territory>
			<territory type="SY">سوريا</territory>
			<territory type="SZ">سوازيلاند</territory>
			<territory type="TC">جزر الترك وجايكوس</territory>
			<territory type="TD">تشاد</territory>
			<territory type="TF">المقاطعات الجنوبية الفرنسية</territory>
			<territory type="TG">توجو</territory>
			<territory type="TH">تايلند</territory>
			<territory type="TJ">طاجكستان</territory>
			<territory type="TK">توكيلو</territory>
			<territory type="TL">تيمور الشرقية</territory>
			<territory type="TM">تركمانستان</territory>
			<territory type="TN">تونس</territory>
			<territory type="TO">تونجا</territory>
			<territory type="TR">تركيا</territory>
			<territory type="TT">ترينيداد وتوباغو</territory>
			<territory type="TV">توفالو</territory>
			<territory type="TW">تايوان</territory>
			<territory type="TZ">تانزانيا</territory>
			<territory type="UA">أوكرانيا</territory>
			<territory type="UG">أوغندا</territory>
			<territory type="UM">جزر الولايات المتحدة البعيدة الصغيرة</territory>
			<territory type="US">الولايات المتحدة الأمريكية</territory>
			<territory type="UY">أورجواي</territory>
			<territory type="UZ">أوزبكستان</territory>
			<territory type="VA">الفاتيكان</territory>
			<territory type="VC">سانت فنسنت وغرنادين</territory>
			<territory type="VE">فنزويلا</territory>
			<territory type="VG">جزر فرجين البريطانية</territory>
			<territory type="VI">جزر فرجين الأمريكية</territory>
			<territory type="VN">فيتنام</territory>
			<territory type="VU">فانواتو</territory>
			<territory type="WF">جزر والس وفوتونا</territory>
			<territory type="WS">ساموا</territory>
			<territory type="YE">اليمن</territory>
			<territory type="YT">مايوت</territory>
			<territory type="ZA">جمهورية جنوب افريقيا</territory>
			<territory type="ZM">زامبيا</territory>
			<territory type="ZW">زيمبابوي</territory>
			<territory type="ZZ">منطقة غير معرفة</territory>
		</territories>
		<variants>
			<variant type="1901">الكتابة الألمانية التقليدية</variant>
			<variant type="1996">الكتابة الألمانية لعام 1996</variant>
			<variant type="AREVELA">ارمنية شرقية</variant>
			<variant type="AREVMDA">ارمنية غربية</variant>
			<variant type="BAKU1926">الأبجدية التركية اللاتينية الموحدة</variant>
			<variant type="MONOTON">أحادي النغمة</variant>
			<variant type="NEDIS">لهجة ناتيسون</variant>
			<variant type="POLYTON">متعدد النغمات</variant>
			<variant type="POSIX">كمبيوتر</variant>
			<variant type="REVISED">كتابة تم مراجعتها</variant>
			<variant type="VALENCIA">بلنسية</variant>
		</variants>
		<keys>
			<key type="calendar">التقويم</key>
			<key type="collation">الترتيب</key>
			<key type="currency">العملات</key>
		</keys>
		<types>
			<type type="big5han" key="collation">الترتيب الصيني التقليدي - Big5</type>
			<type type="buddhist" key="calendar">التقويم البوذي</type>
			<type type="chinese" key="calendar">التقويم الصيني</type>
			<type type="direct" key="collation">ترتيب مباشر</type>
			<type type="gb2312han" key="collation">الترتيب الصيني المبسط - GB2312</type>
			<type type="gregorian" key="calendar">التقويم الميلادي</type>
			<type type="hebrew" key="calendar">التقويم العبري</type>
			<type type="islamic" key="calendar">التقويم الهجري</type>
			<type type="islamic-civil" key="calendar">تقويم اسلامي مدني</type>
			<type type="japanese" key="calendar">التقويم الياباني</type>
			<type type="phonebook" key="collation">ترتيب دليل الهاتف</type>
			<type type="traditional" key="collation">تقليدي</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">النظام الأمريكي</measurementSystemName>
			<measurementSystemName type="metric">النظام المتري</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">اللغة: {0}</codePattern>
			<codePattern type="script">نظام الكتابة: {0}</codePattern>
			<codePattern type="territory">المنطقة: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ً-ْ ـ ء-غ ف-ي]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>’</alternateQuotationStart>
		<alternateQuotationEnd>‘</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<eras>
					<eraAbbr>
						<era type="0">التقويم البوذي</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M‏/d‏‏/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">توت</month>
							<month type="2">بابه</month>
							<month type="3">هاتور</month>
							<month type="4">كيهك</month>
							<month type="5">طوبة</month>
							<month type="6">أمشير</month>
							<month type="7">برمهات</month>
							<month type="8">برمودة</month>
							<month type="9">بشنس</month>
							<month type="10">بؤونة</month>
							<month type="11">أبيب</month>
							<month type="12">مسرى</month>
							<month type="13">نسيئ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">توت</month>
							<month type="2">بابه</month>
							<month type="3">هاتور</month>
							<month type="4">كيهك</month>
							<month type="5">طوبة</month>
							<month type="6">أمشير</month>
							<month type="7">برمهات</month>
							<month type="8">برمودة</month>
							<month type="9">بشنس</month>
							<month type="10">بؤونة</month>
							<month type="11">أبيب</month>
							<month type="12">مسرى</month>
							<month type="13">نسيئ</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="ethiopic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">مسكريم</month>
							<month type="2">تكمت</month>
							<month type="3">هدار</month>
							<month type="4">تهساس</month>
							<month type="5">تر</month>
							<month type="6">يكتت</month>
							<month type="7">مجابيت</month>
							<month type="8">ميازيا</month>
							<month type="9">جنبت</month>
							<month type="10">سين</month>
							<month type="11">هامل</month>
							<month type="12">نهاس</month>
							<month type="13">باجمن</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">مسكريم</month>
							<month type="2">تكمت</month>
							<month type="3">هدار</month>
							<month type="4">تهساس</month>
							<month type="5">تر</month>
							<month type="6">يكتت</month>
							<month type="7">مجابيت</month>
							<month type="8">ميازيا</month>
							<month type="9">جنبت</month>
							<month type="10">سين</month>
							<month type="11">هامل</month>
							<month type="12">نهاس</month>
							<month type="13">باجمن</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">يناير</month>
							<month type="2">فبراير</month>
							<month type="3">مارس</month>
							<month type="4">أبريل</month>
							<month type="5">مايو</month>
							<month type="6">يونيو</month>
							<month type="7">يوليو</month>
							<month type="8">أغسطس</month>
							<month type="9">سبتمبر</month>
							<month type="10">أكتوبر</month>
							<month type="11">نوفمبر</month>
							<month type="12">ديسمبر</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">يناير</month>
							<month type="2">فبراير</month>
							<month type="3">مارس</month>
							<month type="4">أبريل</month>
							<month type="5">مايو</month>
							<month type="6">يونيو</month>
							<month type="7">يوليو</month>
							<month type="8">أغسطس</month>
							<month type="9">سبتمبر</month>
							<month type="10">أكتوبر</month>
							<month type="11">نوفمبر</month>
							<month type="12">ديسمبر</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ي</month>
							<month type="2">ف</month>
							<month type="3">م</month>
							<month type="4">أ</month>
							<month type="5">و</month>
							<month type="6">ن</month>
							<month type="7">ل</month>
							<month type="8">غ</month>
							<month type="9">س</month>
							<month type="10">ك</month>
							<month type="11">ب</month>
							<month type="12">د</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ح</day>
							<day type="mon">ن</day>
							<day type="tue">ث</day>
							<day type="wed">ر</day>
							<day type="thu">خ</day>
							<day type="fri">ج</day>
							<day type="sat">س</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="sun">أحد</day>
							<day type="mon">اثنين</day>
							<day type="tue">ثلاثاء</day>
							<day type="wed">أربعاء</day>
							<day type="thu">خميس</day>
							<day type="fri">جمعة</day>
							<day type="sat">سبت</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">ح</day>
							<day type="mon">ن</day>
							<day type="tue">ث</day>
							<day type="wed">ر</day>
							<day type="thu">خ</day>
							<day type="fri">ج</day>
							<day type="sat">س</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">الربع الأول</quarter>
							<quarter type="2">الربع الثاني</quarter>
							<quarter type="3">الربع الثالث</quarter>
							<quarter type="4">الربع الرابع</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">الربع الأول</quarter>
							<quarter type="2">الربع الثاني</quarter>
							<quarter type="3">الربع الثالث</quarter>
							<quarter type="4">الربع الرابع</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">١</quarter>
							<quarter type="2">٢</quarter>
							<quarter type="3">٣</quarter>
							<quarter type="4">٤</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ص</am>
				<pm>م</pm>
				<eras>
					<eraNames>
						<era type="0">قبل الميلاد</era>
						<era type="1">ميلادي</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ق.م</era>
						<era type="1">م</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE، d MMMM، yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM، yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd‏/MM‏/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d‏/M‏/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>v h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>z h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E، d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd‏/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE، d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE، d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM‏/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM, yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d‏/M - E, d‏/M</greatestDifference>
							<greatestDifference id="d">E, d‏/M - E, d‏/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d‏/M - d‏/M</greatestDifference>
							<greatestDifference id="d">d‏/M - d‏/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">v h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">v h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">v h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">v h a - h a</greatestDifference>
							<greatestDifference id="h">v h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M‏/yyyy - M‏/yyyy</greatestDifference>
							<greatestDifference id="y">M‏/yyyy - M‏/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d‏/M‏/yyyy - E, d‏/M‏/yyyy</greatestDifference>
							<greatestDifference id="d">E, d‏/M‏/yyyy - E, d‏/M‏/yyyy</greatestDifference>
							<greatestDifference id="y">E, d‏/M‏/yyyy - E, d‏/M‏/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM, yyyy</greatestDifference>
							<greatestDifference id="y">MMM, yyyy - MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM, yyyy - E, d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">d MMM, yyyy - d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d‏/M‏/yyyy - d‏/M‏/yyyy</greatestDifference>
							<greatestDifference id="d">d‏/M‏/yyyy - d‏/M‏/yyyy</greatestDifference>
							<greatestDifference id="y">d‏/M‏/yyyy - d‏/M‏/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>العصر</displayName>
					</field>
					<field type="year">
						<displayName>السنة</displayName>
					</field>
					<field type="month">
						<displayName>الشهر</displayName>
					</field>
					<field type="week">
						<displayName>الأسبوع</displayName>
					</field>
					<field type="day">
						<displayName>يوم</displayName>
						<relative type="0">اليوم</relative>
						<relative type="1">غدا</relative>
						<relative type="2">بعد الغد</relative>
						<relative type="-1">أمس</relative>
					</field>
					<field type="weekday">
						<displayName>اليوم</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ص/م</displayName>
					</field>
					<field type="hour">
						<displayName>الساعات</displayName>
					</field>
					<field type="minute">
						<displayName>الدقائق</displayName>
					</field>
					<field type="second">
						<displayName>الثواني</displayName>
					</field>
					<field type="zone">
						<displayName>التوقيت</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">تشري</month>
							<month type="2">مرحشوان</month>
							<month type="3">كيسلو</month>
							<month type="4">طيفت</month>
							<month type="5">شباط</month>
							<month type="6">آذار الأول</month>
							<month type="7">آذار الثاني</month>
							<month type="8">نيسان</month>
							<month type="9">أيار</month>
							<month type="10">سيفان</month>
							<month type="11">تموز</month>
							<month type="12">آب</month>
							<month type="13">أيلول</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">تشري</month>
							<month type="2">مرحشوان</month>
							<month type="3">كيسلو</month>
							<month type="4">طيفت</month>
							<month type="5">شباط</month>
							<month type="6">آذار الأول</month>
							<month type="7">آذار الثاني</month>
							<month type="8">نيسان</month>
							<month type="9">أيار</month>
							<month type="10">سيفان</month>
							<month type="11">تموز</month>
							<month type="12">آب</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">محرم</month>
							<month type="2">صفر</month>
							<month type="3">ربيع الأول</month>
							<month type="4">ربيع الآخر</month>
							<month type="5">جمادى الأولى</month>
							<month type="6">جمادى الآخرة</month>
							<month type="7">رجب</month>
							<month type="8">شعبان</month>
							<month type="9">رمضان</month>
							<month type="10">شوال</month>
							<month type="11">ذو القعدة</month>
							<month type="12">ذو الحجة</month>
						</monthWidth>
					</monthContext>
				</months>
				<am>ص</am>
				<pm>م</pm>
				<eras>
					<eraAbbr>
						<era type="0">ه‍</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="islamic-civil">
				<months>
					<alias source="locale" path="../../calendar[@type='islamic']/months"/>
				</months>
				<eras>
					<alias source="locale" path="../../calendar[@type='islamic']/eras"/>
				</eras>
			</calendar>
			<calendar type="japanese">
				<eras>
					<eraAbbr>
						<era type="0">تيكا</era>
						<era type="1">هاكتشي</era>
						<era type="2">هاكهو</era>
						<era type="3">شتشو</era>
						<era type="4">تيهو</era>
						<era type="5">كيين</era>
						<era type="6">وادو</era>
						<era type="7">رييكي</era>
						<era type="8">يورو</era>
						<era type="9">جينكي</era>
						<era type="10">تمبيو</era>
						<era type="11">تمبيو-كامبو</era>
						<era type="12">تمبيو-شوهو</era>
						<era type="13">تمبيو-هوجي</era>
						<era type="14">تمفو-جينجو</era>
						<era type="15">جينجو-كيين</era>
						<era type="16">هوكي</era>
						<era type="17">تن-أو</era>
						<era type="18">إنرياكو</era>
						<era type="19">ديدو</era>
						<era type="20">كونين</era>
						<era type="21">تنتشو</era>
						<era type="22">شووا</era>
						<era type="23">كاجو</era>
						<era type="24">نينجو</era>
						<era type="25">سيكو</era>
						<era type="26">تنان</era>
						<era type="27">جوجان</era>
						<era type="28">جينكيي</era>
						<era type="29">نينا</era>
						<era type="30">كامبيو</era>
						<era type="31">شوتاي</era>
						<era type="32">انجي</era>
						<era type="33">انتشو</era>
						<era type="34">شوهيي</era>
						<era type="35">تنجيو</era>
						<era type="36">تنرياكو</era>
						<era type="37">تنتوكو</era>
						<era type="38">أووا</era>
						<era type="39">كوهو</era>
						<era type="40">آنا</era>
						<era type="41">تينروكو</era>
						<era type="42">تن-ان</era>
						<era type="43">جوجن</era>
						<era type="44">تنجن</era>
						<era type="45">إيكان</era>
						<era type="46">كانا</era>
						<era type="47">اي-ان</era>
						<era type="48">ايسو</era>
						<era type="49">شورياكو</era>
						<era type="50">تشوتوكو</era>
						<era type="51">تشوهو</era>
						<era type="52">كانكو</era>
						<era type="53">تشووا</era>
						<era type="54">كانين</era>
						<era type="55">جاين</era>
						<era type="56">مانجو</era>
						<era type="57">تشوجين</era>
						<era type="58">تشورياكو</era>
						<era type="59">تشوكيو</era>
						<era type="60">كانتوكو</era>
						<era type="61">ايشو</era>
						<era type="62">تينجي</era>
						<era type="63">كوهيي</era>
						<era type="64">جيرياكو</era>
						<era type="65">انكيو</era>
						<era type="66">شوهو</era>
						<era type="67">شورياكو</era>
						<era type="68">ايهو</era>
						<era type="69">أوتوكو</era>
						<era type="70">كانجي</era>
						<era type="71">كاهو</era>
						<era type="72">ايتشو</era>
						<era type="73">شوتوكو</era>
						<era type="74">كووا</era>
						<era type="75">تشوجي</era>
						<era type="76">كاشو</era>
						<era type="77">تنين</era>
						<era type="78">تن-اي</era>
						<era type="79">ايكيو</era>
						<era type="80">جن-اي</era>
						<era type="81">هوان</era>
						<era type="82">تنجي</era>
						<era type="83">ديجي</era>
						<era type="84">تنشو</era>
						<era type="85">تشوشو</era>
						<era type="86">هوين</era>
						<era type="87">ايجي</era>
						<era type="88">كوجي</era>
						<era type="89">تنيو</era>
						<era type="90">كيوان</era>
						<era type="91">نينبيي</era>
						<era type="92">كيوجو</era>
						<era type="93">هجين</era>
						<era type="94">هيجي</era>
						<era type="95">ايرياكو</era>
						<era type="96">أوهو</era>
						<era type="97">تشوكان</era>
						<era type="98">ايمان</era>
						<era type="99">نين-ان</era>
						<era type="100">كاو</era>
						<era type="101">شون</era>
						<era type="102">أنجين</era>
						<era type="103">جيشو</era>
						<era type="104">يووا</era>
						<era type="105">جيي</era>
						<era type="106">جنريوكو</era>
						<era type="107">بنجي</era>
						<era type="108">كنكيو</era>
						<era type="109">شوجي</era>
						<era type="110">كنين</era>
						<era type="111">جنكيو</era>
						<era type="112">كن-اي</era>
						<era type="113">شوجن</era>
						<era type="114">كنرياكو</era>
						<era type="115">كنبو</era>
						<era type="116">شوكيو</era>
						<era type="117">جو</era>
						<era type="118">جيننين</era>
						<era type="119">كروكو</era>
						<era type="120">أنتيي</era>
						<era type="121">كنكي</era>
						<era type="122">جويي</era>
						<era type="123">تمبكو</era>
						<era type="124">بنرياكو</era>
						<era type="125">كاتيي</era>
						<era type="126">رياكنين</era>
						<era type="127">ان-أو</era>
						<era type="128">نينجي</era>
						<era type="129">كنجين</era>
						<era type="130">هوجي</era>
						<era type="131">كنتشو</era>
						<era type="132">كوجن</era>
						<era type="133">شوكا</era>
						<era type="134">شوجن</era>
						<era type="135">بن-أو</era>
						<era type="136">كوتشو</era>
						<era type="137">بن-اي</era>
						<era type="138">كنجي</era>
						<era type="139">كوان</era>
						<era type="140">شوو</era>
						<era type="141">اينين</era>
						<era type="142">شوان</era>
						<era type="143">كنجن</era>
						<era type="144">كجن</era>
						<era type="145">توكجي</era>
						<era type="146">انكي</era>
						<era type="147">أوتشو</era>
						<era type="148">شووا</era>
						<era type="149">بنبو</era>
						<era type="150">جنو</era>
						<era type="151">جنكيو</era>
						<era type="152">شوتشو</era>
						<era type="153">كريكي</era>
						<era type="154">جنتكو</era>
						<era type="155">جنكو</era>
						<era type="156">كمو</era>
						<era type="157">إنجن</era>
						<era type="158">كوككو</era>
						<era type="159">شوهي</era>
						<era type="160">كنتكو</era>
						<era type="161">بنتشو</era>
						<era type="162">تنجو</era>
						<era type="163">كورياكو</era>
						<era type="164">كووا</era>
						<era type="165">جنتشو</era>
						<era type="166">مييتكو</era>
						<era type="167">كاكي</era>
						<era type="168">كو</era>
						<era type="169">مييتكو</era>
						<era type="170">أويي</era>
						<era type="171">شوتشو</era>
						<era type="172">ايكيو</era>
						<era type="173">ككيتسو</era>
						<era type="174">بن-أن</era>
						<era type="175">هوتكو</era>
						<era type="176">كيوتكو</era>
						<era type="177">كوشو</era>
						<era type="178">تشوركو</era>
						<era type="179">كنشو</era>
						<era type="180">بنشو</era>
						<era type="181">أونين</era>
						<era type="182">بنمي</era>
						<era type="183">تشوكيو</era>
						<era type="184">انتكو</era>
						<era type="185">ميو</era>
						<era type="186">بنكي</era>
						<era type="187">ايشو</era>
						<era type="188">تييي</era>
						<era type="189">كيوركو</era>
						<era type="190">تنمن</era>
						<era type="191">كوجي</era>
						<era type="192">ايركو</era>
						<era type="193">جنكي</era>
						<era type="194">تنشو</era>
						<era type="195">بنركو</era>
						<era type="196">كيتشو</era>
						<era type="197">جنوا</era>
						<era type="198">كان-اي</era>
						<era type="199">شوهو</era>
						<era type="200">كيان</era>
						<era type="201">شوو</era>
						<era type="202">ميرياكو</era>
						<era type="203">منجي</era>
						<era type="204">كنبن</era>
						<era type="205">انبو</era>
						<era type="206">تنوا</era>
						<era type="207">جوكيو</era>
						<era type="208">جنركو</era>
						<era type="209">هويي</era>
						<era type="210">شوتكو</era>
						<era type="211">كيوهو</era>
						<era type="212">جنبن</era>
						<era type="213">كنبو</era>
						<era type="214">انكيو</era>
						<era type="215">كان-ان</era>
						<era type="216">هورياكو</era>
						<era type="217">مييوا</era>
						<era type="218">ان-اي</era>
						<era type="219">تنمي</era>
						<era type="220">كنسي</era>
						<era type="221">كيووا</era>
						<era type="222">بنكا</era>
						<era type="223">بنسي</era>
						<era type="224">تنبو</era>
						<era type="225">كوكا</era>
						<era type="226">كاي</era>
						<era type="227">أنسي</era>
						<era type="228">من-ان</era>
						<era type="229">بنكيو</era>
						<era type="230">جنجي</era>
						<era type="231">كيو</era>
						<era type="232">ميجي</era>
						<era type="233">تيشو</era>
						<era type="234">شووا</era>
						<era type="235">هيسي</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">فرفردن</month>
							<month type="2">أذربيهشت</month>
							<month type="3">خرداد</month>
							<month type="4">تار</month>
							<month type="5">مرداد</month>
							<month type="6">شهرفار</month>
							<month type="7">مهر</month>
							<month type="8">آيان</month>
							<month type="9">آذر</month>
							<month type="10">دي</month>
							<month type="11">بهمن</month>
							<month type="12">اسفندار</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">فرفردن</month>
							<month type="2">أذربيهشت</month>
							<month type="3">خرداد</month>
							<month type="4">تار</month>
							<month type="5">مرداد</month>
							<month type="6">شهرفار</month>
							<month type="7">مهر</month>
							<month type="8">آيان</month>
							<month type="9">آذر</month>
							<month type="10">دي</month>
							<month type="11">بهمن</month>
							<month type="12">اسفندار</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">ه‍.ش</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>غير معروف</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>روثيرا</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>بالمير</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>القطب الجنوبي</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>سايووا</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>ماوسون</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>دافيز</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>فوستوك</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>كاساي</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>دي مونت دو روفيل</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>ماك موردو</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>ريو جالييوس</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>ميندوزا</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>سان خوان</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>أشوا</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>لاريوها</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>سان لويس</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>كاتاماركا</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>جوجو</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>تاكمان</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>كوردوبا</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>بوينوس أيرس</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>برثا</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>دارون</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>أدليادا</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>بروكن هيل</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>ميلبورن</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>هوبارت</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>ليندمان</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>سيدني</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>برسيبان</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>لورد هاو</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>ايرونبي</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>ريوبرانكو</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>بورتو فيلو</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>باو فيستا</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>ماناوس</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>كيابا</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>كومبو جراند</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>بلم</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>أروجوانيا</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>ساو باولو</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>باهيا</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>فورتاليزا</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>ماشيو</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>ريسيف</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>نوروناه</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>داوسان</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>وايت هورس</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>اينوفيك</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>فانكوفر</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>داوسن كريك</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>يلونيف</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>ايدمونتون</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>سوفت كارنت</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>كامبرديج باي</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>ريجينا</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>وينيبيج</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>راني ريفر</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>رانكن انلت</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>كورال هاربر</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>ثندر باي</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>نيبيجون</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>تورونتو</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>مونتريال</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>اكويلت</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>بانجينتينج</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>وينكتون</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>هاليفاكس</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>جوس باي</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>جلاس باي</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>سانت جونز</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>كينشاسا</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>لومبباشا</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>استر</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>سانتيجو</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>كاشجار</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>أرومكي</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>تشونجكينج</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>العالمية</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>هاربين</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>جلاباجوس</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>جواياكيل</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>كناري</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>سيتا</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>مدريد</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ترك</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>باناب</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>كوسرا</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>لندن</exemplarCity>
			</zone>
			<zone type="Europe/Guernsey">
				<exemplarCity>جيرونسى</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>ثيل</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>جودثاب</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>سكورسبيسند</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>دانمرك شافن</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>جاكرتا</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>بونتيانك</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>ماكسار</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>جايابيورا</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>إيطاليا</exemplarCity>
			</zone>
			<zone type="Europe/Jersey">
				<exemplarCity>جيرسى</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>اندربيرج</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>كيريتي ماتي</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>تاراوا</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>أكتاو</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>أورال</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>أكتوب</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>كيزيلوردا</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>ألماتي</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>الجبل الأسود</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>كواجالين</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>ماجورو</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>باماكو</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>هوفد</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>آلانباتار</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>تشوبالسان</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>تيخوانا</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>هيرموسيلو</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>مازاتلان</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>تشيواوا</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>مونتيري</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>مدينة المكسيك</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>ميريدا</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>كانكون</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>كوالالمبور</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>كيشينج</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>تشاثام</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>أوكلاند</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>تاهيتي</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>ماركيساس</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>جامبير</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>أزورس</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>ماديرا</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>ليسبون</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>صربيا</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>كالينجراد</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>موسكو</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>فولوجراد</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>سمراء</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>يكاترنبيرج</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>أومسك</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>نوفوسبيرسك</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>كراسنويارسك</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ايركيتسك</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>ياكتسك</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>فلاديفوستك</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>سكالين</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>مجادن</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>كامتشاتكا</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>أندير</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>لونجيربن</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>أوزجرود</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>كييف</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>سيمفروبول</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>زابوروزي</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>ميدواي</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>جونستون</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>واك</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>أداك</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>نوم</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>هونولولو</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>أنكوريج</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>ياكوتات</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>جوني</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>لوس انجلوس</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>بويزي</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>فينكس</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>شيبروك</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>دنفر</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>نيو ساليم</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>سنتر</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>شيكاغو</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>مينوميني</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>فينسينس</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>بيترسبرج</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>كونكس</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>ويناماك</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>مارنجو</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>إنديانابوليس</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>لويس فيل</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>فيفاي</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>مونتيسيلو</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>ديترويت</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>نيويورك</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>سمرقند</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>طشقند</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>٫</decimal>
			<group>٬</group>
			<list>؛</list>
			<percentSign>٪</percentSign>
			<nativeZeroDigit>٠</nativeZeroDigit>
			<exponential>اس</exponential>
			<nan>ليس رقم</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###;#,##0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤ #,##0.00-</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="few">{0} {1}</unitPattern>
			<unitPattern count="many">{0} {1}</unitPattern>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
			<unitPattern count="two">{0} {1}</unitPattern>
			<unitPattern count="zero">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>بيستا أندورى</displayName>
			</currency>
			<currency type="AED">
				<displayName>درهم اماراتى</displayName>
				<symbol>د.إ.‏</symbol>
			</currency>
			<currency type="AFA">
				<displayName>أفغاني - 1927-2002</displayName>
			</currency>
			<currency type="AFN">
				<displayName>أفغانى</displayName>
			</currency>
			<currency type="ALL">
				<displayName>ليك ألباني</displayName>
			</currency>
			<currency type="AMD">
				<displayName>درام أرمينى</displayName>
			</currency>
			<currency type="ANG">
				<displayName>جلدر هولندى [ANG]</displayName>
			</currency>
			<currency type="AOA">
				<displayName>كوانزا أنجولى</displayName>
			</currency>
			<currency type="AOK">
				<displayName>كوانزا أنجولى - 1977-1990</displayName>
			</currency>
			<currency type="AON">
				<displayName>كوانزا أنجولى جديدة - 1990-2000</displayName>
			</currency>
			<currency type="AOR">
				<displayName>كوانزا أنجولى معدلة - 1995 - 1999</displayName>
			</currency>
			<currency type="ARA">
				<displayName>استرال ارجنتينى</displayName>
			</currency>
			<currency type="ARP">
				<displayName>بيزو أرجنتينى - 1983-1985</displayName>
			</currency>
			<currency type="ARS">
				<displayName>بيزو أر±جنتينى</displayName>
			</currency>
			<currency type="ATS">
				<displayName>شلن نمساوى</displayName>
			</currency>
			<currency type="AUD">
				<displayName>دولار أسترالى</displayName>
			</currency>
			<currency type="AWG">
				<displayName>جلدر أروبى</displayName>
			</currency>
			<currency type="AZM">
				<displayName>مانات أذريبجانى</displayName>
			</currency>
			<currency type="BAD">
				<displayName>دينار البوسنة و الهرسك</displayName>
			</currency>
			<currency type="BAM">
				<displayName>مارك البوسنة و الهرسك قابل للتحويل</displayName>
			</currency>
			<currency type="BBD">
				<displayName>دولار بربادوسى</displayName>
			</currency>
			<currency type="BDT">
				<displayName>تاكا بنجلاديشى</displayName>
			</currency>
			<currency type="BEC">
				<displayName>فرنك بلجيكى (تحويلات)‏</displayName>
			</currency>
			<currency type="BEF">
				<displayName>فرنك بلجيكى</displayName>
			</currency>
			<currency type="BEL">
				<displayName>فرنك بلجيكى (مالي)‏</displayName>
			</currency>
			<currency type="BGL">
				<displayName>ليف بلغارى</displayName>
			</currency>
			<currency type="BGN">
				<displayName>ليف بلغارى جديد</displayName>
			</currency>
			<currency type="BHD">
				<displayName>دينار بحرينى</displayName>
				<symbol>د.ب.‏</symbol>
			</currency>
			<currency type="BIF">
				<displayName>فرنك بروندى</displayName>
			</currency>
			<currency type="BMD">
				<displayName>دولار برمودى</displayName>
			</currency>
			<currency type="BND">
				<displayName>دولار بروناى</displayName>
			</currency>
			<currency type="BOB">
				<displayName>بوليفاريو</displayName>
			</currency>
			<currency type="BOP">
				<displayName>بيزو بوليفى</displayName>
			</currency>
			<currency type="BOV">
				<displayName>مفدول بوليفى</displayName>
			</currency>
			<currency type="BRB">
				<displayName>نوفو كروزايرو برازيلى - 1967-1986</displayName>
			</currency>
			<currency type="BRC">
				<displayName>كروزادو برازيلى</displayName>
			</currency>
			<currency type="BRE">
				<displayName>كروزايرو برازيلى - 1990-1993</displayName>
			</currency>
			<currency type="BRL">
				<displayName>ريال برازيلي</displayName>
				<symbol>.‏ر.ب</symbol>
			</currency>
			<currency type="BSD">
				<displayName>دولار باهامى</displayName>
			</currency>
			<currency type="BTN">
				<displayName>نولتوم بوتانى</displayName>
			</currency>
			<currency type="BUK">
				<displayName>كيات بورمى</displayName>
			</currency>
			<currency type="BWP">
				<displayName>بولا بتسوانى</displayName>
			</currency>
			<currency type="BYB">
				<displayName>روبل بيلاروسى جديد - 1994-1999</displayName>
			</currency>
			<currency type="BYR">
				<displayName>روبل بيلاروسى</displayName>
			</currency>
			<currency type="BZD">
				<displayName>دولار بليزى</displayName>
			</currency>
			<currency type="CAD">
				<displayName>دولار كندى</displayName>
			</currency>
			<currency type="CDF">
				<displayName>فنك كونغولى</displayName>
			</currency>
			<currency type="CHF">
				<displayName>فرنك سويسرى</displayName>
			</currency>
			<currency type="CLP">
				<displayName>بيزو شيلى</displayName>
			</currency>
			<currency type="CNY">
				<displayName>يوان صيني</displayName>
				<symbol>ى.ص</symbol>
			</currency>
			<currency type="COP">
				<displayName>بيزو كولومبى</displayName>
			</currency>
			<currency type="CRC">
				<displayName>كولن كوستا ريكى</displayName>
			</currency>
			<currency type="CSD">
				<displayName>دينار صربى</displayName>
			</currency>
			<currency type="CSK">
				<displayName>كرونة تشيكوسلوفاكيا</displayName>
			</currency>
			<currency type="CUP">
				<displayName>بيزو كوبى</displayName>
			</currency>
			<currency type="CVE">
				<displayName>اسكودو الرأس الخضراء</displayName>
			</currency>
			<currency type="CYP">
				<displayName>جنيه قبرصى</displayName>
			</currency>
			<currency type="CZK">
				<displayName>كرونة تشيكية</displayName>
			</currency>
			<currency type="DDM">
				<displayName>أوستمارك المانى شرقى</displayName>
			</currency>
			<currency type="DEM">
				<displayName>مارك المانى</displayName>
			</currency>
			<currency type="DJF">
				<displayName>فرنك جيبوتى</displayName>
			</currency>
			<currency type="DKK">
				<displayName>كرونة دانماركى</displayName>
			</currency>
			<currency type="DOP">
				<displayName>بيزو الدومنيكان</displayName>
			</currency>
			<currency type="DZD">
				<displayName>دينار جزائرى</displayName>
				<symbol>د.ج.‏</symbol>
			</currency>
			<currency type="EEK">
				<displayName>كرونة استونية</displayName>
			</currency>
			<currency type="EGP">
				<displayName>جنيه مصرى</displayName>
				<symbol>ج.م.‏</symbol>
			</currency>
			<currency type="ERN">
				<displayName>ناكفا أريترى</displayName>
			</currency>
			<currency type="ESP">
				<displayName>بيزيتا اسباني</displayName>
			</currency>
			<currency type="ETB">
				<displayName>بير أثيوبى</displayName>
			</currency>
			<currency type="EUR">
				<displayName>يورو</displayName>
			</currency>
			<currency type="FIM">
				<displayName>ماركا فنلندى</displayName>
			</currency>
			<currency type="FJD">
				<displayName>دولار فيجى</displayName>
			</currency>
			<currency type="FKP">
				<displayName>جنيه جزر فوكلاند</displayName>
			</currency>
			<currency type="FRF">
				<displayName>فرنك فرنسى</displayName>
			</currency>
			<currency type="GBP">
				<displayName>جنيه سترليني</displayName>
			</currency>
			<currency type="GEL">
				<displayName>لارى جورجى</displayName>
			</currency>
			<currency type="GHC">
				<displayName>سيدى غانى</displayName>
			</currency>
			<currency type="GIP">
				<displayName>جنيه جبل طارق</displayName>
			</currency>
			<currency type="GMD">
				<displayName>دلاسي جامبي</displayName>
			</currency>
			<currency type="GNF">
				<displayName>فرنك غينيا</displayName>
			</currency>
			<currency type="GNS">
				<displayName>سيلى غينيا</displayName>
			</currency>
			<currency type="GQE">
				<displayName>اكويل جونينا غينيا الاستوائيّة</displayName>
			</currency>
			<currency type="GRD">
				<displayName>دراخما يونانى</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>كوتزال جواتيمالا</displayName>
			</currency>
			<currency type="GWE">
				<displayName>اسكود برتغالى غينيا</displayName>
			</currency>
			<currency type="GWP">
				<displayName>بيزو غينيا بيساو</displayName>
			</currency>
			<currency type="GYD">
				<displayName>دولار غيانا</displayName>
			</currency>
			<currency type="HKD">
				<displayName>دولار هونج كونج</displayName>
			</currency>
			<currency type="HNL">
				<displayName>ليمبيرا هنداروس</displayName>
			</currency>
			<currency type="HRD">
				<displayName>دينار كرواتى</displayName>
			</currency>
			<currency type="HRK">
				<displayName>كونا كرواتى</displayName>
			</currency>
			<currency type="HTG">
				<displayName>جوردى هايتى</displayName>
			</currency>
			<currency type="HUF">
				<displayName>فورينت مجرى</displayName>
			</currency>
			<currency type="IDR">
				<displayName>روبية اندونيسية</displayName>
			</currency>
			<currency type="IEP">
				<displayName>جنيه ايرلندى</displayName>
			</currency>
			<currency type="ILP">
				<displayName>جنيه اسرائيلى</displayName>
			</currency>
			<currency type="ILS">
				<displayName>شيكل اسرائيلى جديد</displayName>
			</currency>
			<currency type="INR">
				<displayName>روبيه هندي</displayName>
				<symbol>.‏ر.ه</symbol>
			</currency>
			<currency type="IQD">
				<displayName>دينار عراقى</displayName>
				<symbol>د.ع.‏</symbol>
			</currency>
			<currency type="IRR">
				<displayName>ريال ايرانى</displayName>
			</currency>
			<currency type="ISK">
				<displayName>كرونه أيسلندى</displayName>
			</currency>
			<currency type="ITL">
				<displayName>ليرة ايطالية</displayName>
			</currency>
			<currency type="JMD">
				<displayName>دولار جامايكى</displayName>
			</currency>
			<currency type="JOD">
				<displayName>دينار أردنى</displayName>
				<symbol>د.أ.‏</symbol>
			</currency>
			<currency type="JPY">
				<displayName>ين ياباني</displayName>
			</currency>
			<currency type="KES">
				<displayName>شلن كينيي</displayName>
			</currency>
			<currency type="KGS">
				<displayName>سوم قيرغستانى</displayName>
			</currency>
			<currency type="KHR">
				<displayName>رييال كمبودى</displayName>
			</currency>
			<currency type="KMF">
				<displayName>فرنك جزر القمر</displayName>
				<symbol>.‏ف.ج.ق</symbol>
			</currency>
			<currency type="KPW">
				<displayName>وون كوريا الشمالية</displayName>
			</currency>
			<currency type="KRW">
				<displayName>وون كوريا الجنوبية</displayName>
			</currency>
			<currency type="KWD">
				<displayName>دينار كويتى</displayName>
				<symbol>د.ك.‏</symbol>
			</currency>
			<currency type="KYD">
				<displayName>دولار جزر كيمن</displayName>
			</currency>
			<currency type="KZT">
				<displayName>تينغ كازاخستانى</displayName>
			</currency>
			<currency type="LAK">
				<displayName>كيب لاوسى</displayName>
			</currency>
			<currency type="LBP">
				<displayName>جنية لبنانى</displayName>
				<symbol>ل.ل.‏</symbol>
			</currency>
			<currency type="LKR">
				<displayName>روبية سريلانكية</displayName>
			</currency>
			<currency type="LRD">
				<displayName>دولار ليبيري</displayName>
			</currency>
			<currency type="LSL">
				<displayName>لوتى ليسوتو</displayName>
			</currency>
			<currency type="LSM">
				<displayName>مالوتى</displayName>
			</currency>
			<currency type="LTL">
				<displayName>الليتا الليتوانية</displayName>
			</currency>
			<currency type="LTT">
				<displayName>تالوناس ليتوانى</displayName>
			</currency>
			<currency type="LUC">
				<displayName>فرنك لوكسمبرج قابل للتحويل</displayName>
			</currency>
			<currency type="LUF">
				<displayName>فرنك لوكسمبرج</displayName>
			</currency>
			<currency type="LUL">
				<displayName>فرنك لوكسمبرج المالى</displayName>
			</currency>
			<currency type="LVL">
				<displayName>لاتس لاتفيا</displayName>
			</currency>
			<currency type="LVR">
				<displayName>روبل لاتفيا</displayName>
			</currency>
			<currency type="LYD">
				<displayName>دينار ليبى</displayName>
				<symbol>د.ل.‏</symbol>
			</currency>
			<currency type="MAD">
				<displayName>درهم مغربى</displayName>
				<symbol>د.م.‏</symbol>
			</currency>
			<currency type="MAF">
				<displayName>فرنك مغربي</displayName>
			</currency>
			<currency type="MDL">
				<displayName>لاو مولدوفى</displayName>
			</currency>
			<currency type="MGA">
				<displayName>ارياري مدغشقر</displayName>
			</currency>
			<currency type="MGF">
				<displayName>فرنك مدغشقر</displayName>
			</currency>
			<currency type="MKD">
				<displayName>دينار مقدونى</displayName>
			</currency>
			<currency type="MLF">
				<displayName>فرنك مالى</displayName>
			</currency>
			<currency type="MMK">
				<displayName>كيات ميانمار</displayName>
			</currency>
			<currency type="MNT">
				<displayName>توغروغ منغولى</displayName>
			</currency>
			<currency type="MOP">
				<displayName>باتاكا ماكاوى</displayName>
			</currency>
			<currency type="MRO">
				<displayName>أوقية موريتانية</displayName>
				<symbol>.‏أ.م</symbol>
			</currency>
			<currency type="MTL">
				<displayName>ليرة مالطية</displayName>
			</currency>
			<currency type="MTP">
				<displayName>جنيه مالطى</displayName>
			</currency>
			<currency type="MUR">
				<displayName>روبي موريشي</displayName>
			</currency>
			<currency type="MVR">
				<displayName>روفيه جزر المالديف</displayName>
			</currency>
			<currency type="MWK">
				<displayName>كواشا مالاوى</displayName>
			</currency>
			<currency type="MXN">
				<displayName>بيزو مكسيكى</displayName>
			</currency>
			<currency type="MXP">
				<displayName>بيزو فضى مكسيكى - 1861-1992</displayName>
			</currency>
			<currency type="MYR">
				<displayName>رينغيت ماليزى</displayName>
			</currency>
			<currency type="MZE">
				<displayName>اسكود موزمبيقى</displayName>
			</currency>
			<currency type="NAD">
				<displayName>دولار نامبيا</displayName>
			</currency>
			<currency type="NGN">
				<displayName>نايرا نيجيرى</displayName>
			</currency>
			<currency type="NIC">
				<displayName>كوردوبة نيكاراجوا</displayName>
			</currency>
			<currency type="NLG">
				<displayName>جلدر هولندى</displayName>
			</currency>
			<currency type="NOK">
				<displayName>كرونة نرويجية</displayName>
			</currency>
			<currency type="NPR">
				<displayName>روبية نيبالي</displayName>
			</currency>
			<currency type="NZD">
				<displayName>دولار نيوزيلندى</displayName>
			</currency>
			<currency type="OMR">
				<displayName>ريال عمانى</displayName>
				<symbol>ر.ع.‏</symbol>
			</currency>
			<currency type="PAB">
				<displayName>بالبوا بنمى</displayName>
			</currency>
			<currency type="PGK">
				<displayName>كينا بابوا غينيا الجديدة</displayName>
			</currency>
			<currency type="PHP">
				<displayName>بيزو فلبينى</displayName>
			</currency>
			<currency type="PKR">
				<displayName>روبية باكستاني</displayName>
			</currency>
			<currency type="PLN">
				<displayName>زلوتى بولندى</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>زلوتى بولندى - 1950-1995</displayName>
			</currency>
			<currency type="PTE">
				<displayName>اسكود برتغالى</displayName>
			</currency>
			<currency type="PYG">
				<displayName>جواراني باراجواي</displayName>
			</currency>
			<currency type="QAR">
				<displayName>ريال قطرى</displayName>
				<symbol>ر.ق.‏</symbol>
			</currency>
			<currency type="RHD">
				<displayName>دولار روديسى</displayName>
			</currency>
			<currency type="ROL">
				<displayName>ليو رومانى قديم</displayName>
			</currency>
			<currency type="RUB">
				<displayName>روبل روسي</displayName>
				<symbol>ر.ر.‏</symbol>
			</currency>
			<currency type="RUR">
				<displayName>روبل روسى - 1991-1998</displayName>
			</currency>
			<currency type="RWF">
				<displayName>فرنك رواندى</displayName>
			</currency>
			<currency type="SAR">
				<displayName>ريال سعودى</displayName>
				<symbol>ر.س.‏</symbol>
			</currency>
			<currency type="SBD">
				<displayName>دولار جزر سليمان</displayName>
			</currency>
			<currency type="SCR">
				<displayName>روبية سيشيلية</displayName>
			</currency>
			<currency type="SDD">
				<displayName>دينار سوداني</displayName>
				<symbol>.‏د.س</symbol>
			</currency>
			<currency type="SDP">
				<displayName>جنيه سودانى</displayName>
				<symbol>ج.س.‏</symbol>
			</currency>
			<currency type="SEK">
				<displayName>كرونة سويدية</displayName>
			</currency>
			<currency type="SGD">
				<displayName>دولار سنغافورى</displayName>
			</currency>
			<currency type="SHP">
				<displayName>جنيه سانت هيلين</displayName>
			</currency>
			<currency type="SIT">
				<displayName>تولار سلوفيني</displayName>
			</currency>
			<currency type="SKK">
				<displayName>كرونة سلوفاكية</displayName>
			</currency>
			<currency type="SLL">
				<displayName>ليون سيراليونى</displayName>
			</currency>
			<currency type="SOS">
				<displayName>شلن صومالى</displayName>
			</currency>
			<currency type="SRD">
				<displayName>دولار سورينامى</displayName>
			</currency>
			<currency type="SRG">
				<displayName>جلدر سورينامى</displayName>
			</currency>
			<currency type="STD">
				<displayName>دوبرا ساو تومي وبرينسيبي</displayName>
			</currency>
			<currency type="SUR">
				<displayName>روبل سوفيتى</displayName>
			</currency>
			<currency type="SVC">
				<displayName>كولون سلفادورى</displayName>
			</currency>
			<currency type="SYP">
				<displayName>جنيه سورى</displayName>
				<symbol>ل.س.‏</symbol>
			</currency>
			<currency type="SZL">
				<displayName>ليلانجيني سوازيلندى</displayName>
			</currency>
			<currency type="THB">
				<displayName>باخت تايلاندى</displayName>
			</currency>
			<currency type="TJR">
				<displayName>روبل طاجيكستانى</displayName>
			</currency>
			<currency type="TJS">
				<displayName>سوموني طاجيكستانى</displayName>
			</currency>
			<currency type="TMM">
				<displayName>مانات تركمنستانى</displayName>
			</currency>
			<currency type="TND">
				<displayName>دينارتونسى</displayName>
				<symbol>د.ت.‏</symbol>
			</currency>
			<currency type="TPE">
				<displayName>اسكود تيمورى</displayName>
			</currency>
			<currency type="TRL">
				<displayName>ليرة تركي</displayName>
			</currency>
			<currency type="TRY">
				<displayName>ليرة تركية جديدة</displayName>
			</currency>
			<currency type="TTD">
				<displayName>دولار ترينداد و توباجو</displayName>
			</currency>
			<currency type="TWD">
				<displayName>دولار تايوانى</displayName>
			</currency>
			<currency type="TZS">
				<displayName>شلن تنزانى</displayName>
			</currency>
			<currency type="UAH">
				<displayName>هريفنيا أوكرانى</displayName>
			</currency>
			<currency type="UGS">
				<displayName>شلن أوغندى - 1966-1987</displayName>
			</currency>
			<currency type="UGX">
				<displayName>شلن أوغندى</displayName>
			</currency>
			<currency type="USD">
				<displayName>دولار أمريكي</displayName>
			</currency>
			<currency type="USN">
				<displayName>دولار أمريكي (اليوم التالي)‏</displayName>
			</currency>
			<currency type="USS">
				<displayName>دولار أمريكي (نفس اليوم)‏</displayName>
			</currency>
			<currency type="UYP">
				<displayName>بيزو أوروجواى - 1975-1993</displayName>
			</currency>
			<currency type="UZS">
				<displayName>سوم أوزبكستانى</displayName>
			</currency>
			<currency type="VEB">
				<displayName>بوليفار فنزويلي</displayName>
			</currency>
			<currency type="VND">
				<displayName>دونج فيتنامى</displayName>
			</currency>
			<currency type="XAF">
				<displayName>فرنك افريقي</displayName>
				<symbol>.‏ف.ا</symbol>
			</currency>
			<currency type="XAG">
				<displayName>فضة</displayName>
			</currency>
			<currency type="XAU">
				<displayName>ذهب</displayName>
			</currency>
			<currency type="XBA">
				<displayName>الوحدة الأوروبية المركبة</displayName>
			</currency>
			<currency type="XBB">
				<displayName>الوحدة المالية الأوروبية</displayName>
			</currency>
			<currency type="XBC">
				<displayName>الوحدة الحسابية الأوروبية</displayName>
			</currency>
			<currency type="XCD">
				<displayName>دولار شرق الكاريبى</displayName>
			</currency>
			<currency type="XEU">
				<displayName>وحدة النقد الأوروبية</displayName>
			</currency>
			<currency type="XFO">
				<displayName>فرنك فرنسى ذهبى</displayName>
			</currency>
			<currency type="XPT">
				<displayName>البلاتين</displayName>
			</currency>
			<currency type="XTS">
				<displayName>كود اختبار العملة</displayName>
			</currency>
			<currency type="XXX">
				<displayName>بدون عملة</displayName>
				<symbol>***</symbol>
			</currency>
			<currency type="YDD">
				<displayName>دينار يمنى</displayName>
			</currency>
			<currency type="YER">
				<displayName>ريال يمنى</displayName>
				<symbol>ر.ي.‏</symbol>
			</currency>
			<currency type="YUD">
				<displayName>دينار يوغسلافى</displayName>
			</currency>
			<currency type="YUN">
				<displayName>دينار يوغسلافى قابل للتحويل</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>راند جنوب أفريقيا -مالى</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>راند جنوب أفريقيا</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>كواشا زامبى</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>زائير زائيرى جديد</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>زائير زائيرى</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>دولار زمبابوى</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="few">{0} أيام</unitPattern>
			<unitPattern count="many">{0} يوماً</unitPattern>
			<unitPattern count="one">يوم</unitPattern>
			<unitPattern count="other">{0} يوم</unitPattern>
			<unitPattern count="two">يومان</unitPattern>
			<unitPattern count="zero">لا أيام</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="few">{0} ساعات</unitPattern>
			<unitPattern count="many">{0} ساعةً</unitPattern>
			<unitPattern count="one">ساعة</unitPattern>
			<unitPattern count="other">{0} ساعة</unitPattern>
			<unitPattern count="two">ساعتان</unitPattern>
			<unitPattern count="zero">لا ساعات</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="few">{0} دقائق</unitPattern>
			<unitPattern count="many">{0} دقيقةً</unitPattern>
			<unitPattern count="one">دقيقة</unitPattern>
			<unitPattern count="other">{0} دقيقة</unitPattern>
			<unitPattern count="two">دقيقتان</unitPattern>
			<unitPattern count="zero">لا دقائق</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="few">{0} أشهر</unitPattern>
			<unitPattern count="many">{0} شهراً</unitPattern>
			<unitPattern count="one">شهر</unitPattern>
			<unitPattern count="other">{0} شهر</unitPattern>
			<unitPattern count="two">شهران</unitPattern>
			<unitPattern count="zero">لا أشهر</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="few">{0} ثوان</unitPattern>
			<unitPattern count="many">{0} ثانيةً</unitPattern>
			<unitPattern count="one">ثانية</unitPattern>
			<unitPattern count="other">{0} ثانية</unitPattern>
			<unitPattern count="two">ثانيتان</unitPattern>
			<unitPattern count="zero">لا ثوان</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="few">{0} أسابيع</unitPattern>
			<unitPattern count="many">{0} أسبوعاً</unitPattern>
			<unitPattern count="one">أسبوع</unitPattern>
			<unitPattern count="other">{0} أسبوع</unitPattern>
			<unitPattern count="two">أسبوعان</unitPattern>
			<unitPattern count="zero">لا أسابيع</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="few">{0} سنوات</unitPattern>
			<unitPattern count="many">{0} سنةً</unitPattern>
			<unitPattern count="one">سنة</unitPattern>
			<unitPattern count="other">{0} سنة</unitPattern>
			<unitPattern count="two">سنتان</unitPattern>
			<unitPattern count="zero">لا سنوات</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>نعم:ن</yesstr>
			<nostr>لا:ل</nostr>
		</messages>
	</posix>
</ldml>
PKpG[�.,;;Locale/Data/ha_Arab_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Arab"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[�D��2�2Locale/Data/ha.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.27 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="ha"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afirkanci</language>
			<language type="am">Amharic</language>
			<language type="ar">Harshen Larabci</language>
			<language type="as">Asamisanci</language>
			<language type="az">Azerbaijanci</language>
			<language type="be">Belarushiyanci</language>
			<language type="bg">Bulgeriyan</language>
			<language type="bh">Bihari</language>
			<language type="bn">Dan Bengal</language>
			<language type="br">Buretananci</language>
			<language type="bs">Bosniyanci</language>
			<language type="ca">Kataloniyanci</language>
			<language type="cs">Yaren Jamhuriyar Cek</language>
			<language type="cy">Kabilar Welsh</language>
			<language type="da">Danish</language>
			<language type="de">Jamusanchi</language>
			<language type="el">Girkanci</language>
			<language type="en">Turanci</language>
			<language type="eo">D'an/'Yar Kabilar Andalus</language>
			<language type="es">Mutanen Espanya</language>
			<language type="et">Istoniyanci</language>
			<language type="eu">Dan/'Yar Kabilar Bas</language>
			<language type="fa">Persian</language>
			<language type="fi">Yaren mutanen Finland</language>
			<language type="fil">Dan Filifin</language>
			<language type="fo">Faroese</language>
			<language type="fr">Faranshi</language>
			<language type="fy">K'abilan Firsi</language>
			<language type="ga">Dan Ailan</language>
			<language type="gd">K'abilan Scots Gaelic</language>
			<language type="gl">Bagalike</language>
			<language type="gn">Guwaraniyanci</language>
			<language type="gu">Gujarati</language>
			<language type="ha">Haoussa</language>
			<language type="he">Yahudanci</language>
			<language type="hi">Bahinde</language>
			<language type="hr">Kuroshiyan</language>
			<language type="hu">Hongeriyanci</language>
			<language type="hy">Armeniyanci</language>
			<language type="ia">Yare Tsakanin Kasashe</language>
			<language type="id">Indonesiyan</language>
			<language type="ie">Intagulanci</language>
			<language type="is">Yaren mutanen Iceland</language>
			<language type="it">Italiyanci</language>
			<language type="ja">Jafananci</language>
			<language type="jv">Javanisanci</language>
			<language type="ka">Jojiyanci</language>
			<language type="km">Kambodiyanci</language>
			<language type="kn">Dan/'Yar Kabilar Kannada</language>
			<language type="ko">Yaren mutanen Koriya</language>
			<language type="ku">Kurdanci</language>
			<language type="ky">Kirgizanci</language>
			<language type="la">Dan Kabilar Latin</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laothian</language>
			<language type="lt">Lituweniyanci</language>
			<language type="lv">Latbiyanci</language>
			<language type="mk">Dan Masedoniya</language>
			<language type="ml">Kabilar Maleyalam</language>
			<language type="mn">Mongolian</language>
			<language type="mr">K'abilan Marathi</language>
			<language type="ms">Dan Kabilar Male</language>
			<language type="mt">Harshen Maltis</language>
			<language type="ne">D'an/'Yar Kabilar Nepal</language>
			<language type="nl">Yaren mutanen Holland</language>
			<language type="nn">Yaren Kasar Norway</language>
			<language type="no">Yaren mutanen Norway</language>
			<language type="oc">Ositanci</language>
			<language type="or">Oriyanci</language>
			<language type="pa">Dan/'Yar Garin Punjab</language>
			<language type="pl">Yaren mutanen Poland</language>
			<language type="ps">Pashtanci</language>
			<language type="pt">Yaren mutanen Portugal</language>
			<language type="pt_BR">Fotigis (Burazil)</language>
			<language type="pt_PT">Yaren Kasar Portugal</language>
			<language type="ro">Romaniyanci</language>
			<language type="ru">Rashanci</language>
			<language type="sa">sanskrit</language>
			<language type="sd">Sindiyanci</language>
			<language type="sh">Kuroweshiyancin-Sabiya</language>
			<language type="si">Sinhalanci</language>
			<language type="sk">Basulake</language>
			<language type="sl">Basulabe</language>
			<language type="so">Somaali</language>
			<language type="sq">D'an/'Yar Kabilar Albaniya</language>
			<language type="sr">Sabiyan</language>
			<language type="st">Sesotanci</language>
			<language type="su">Sundanese</language>
			<language type="sv">Yaren mutanen Sweden</language>
			<language type="sw">Harshen Suwahili</language>
			<language type="ta">D'an/'Yar Kabilar Tamil</language>
			<language type="te">D'an/'Yar Kabilar Telug</language>
			<language type="th">Tayanci</language>
			<language type="ti">Tigriyanci</language>
			<language type="tk">Tukmenistanci</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Baturke</language>
			<language type="tw">Tiwiniyanci</language>
			<language type="ug">Ugiranci</language>
			<language type="uk">Dan Ukirain</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbek</language>
			<language type="vi">K'abilan Biyetnam</language>
			<language type="xh">Bazosa</language>
			<language type="zu">Bazule</language>
		</languages>
		<territories>
			<territory type="NG">Nijeriya</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b ɓ c d ɗ e-k ƙ l-o r s {sh} t {ts} u w y z ʼ {ʼy}]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à â é è ê í ì î ó ò ô p q {r̃} ú ù û v x ƴ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Fab</month>
							<month type="3">Mar</month>
							<month type="4">Afr</month>
							<month type="5">May</month>
							<month type="6">Yun</month>
							<month type="7">Yul</month>
							<month type="8">Aug</month>
							<month type="9">Sat</month>
							<month type="10">Okt</month>
							<month type="11">Nuw</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Janairu</month>
							<month type="2">Fabrairu</month>
							<month type="3">Maris</month>
							<month type="4">Afrilu</month>
							<month type="5">Mayu</month>
							<month type="6">Yuni</month>
							<month type="7">Yuli</month>
							<month type="8">Augusta</month>
							<month type="9">Satumba</month>
							<month type="10">Oktoba</month>
							<month type="11">Nuwamba</month>
							<month type="12">Disamba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">Y</month>
							<month type="7">Y</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Lah</day>
							<day type="mon">Lit</day>
							<day type="tue">Tal</day>
							<day type="wed">Lar</day>
							<day type="thu">Alh</day>
							<day type="fri">Jum</day>
							<day type="sat">Asa</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Lahadi</day>
							<day type="mon">Litini</day>
							<day type="tue">Talata</day>
							<day type="wed">Laraba</day>
							<day type="thu">Alhamis</day>
							<day type="fri">Jumma'a</day>
							<day type="sat">Asabar</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">L</day>
							<day type="mon">L</day>
							<day type="tue">T</day>
							<day type="wed">L</day>
							<day type="thu">A</day>
							<day type="fri">J</day>
							<day type="sat">A</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Gabanin Miladi</era>
						<era type="1">Miladi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">GM</era>
						<era type="1">M</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="GHC">
				<displayName>Sidi</displayName>
			</currency>
			<currency type="NGN">
				<displayName>Neira</displayName>
				<symbol>₦</symbol>
			</currency>
			<currency type="XOF">
				<displayName>Sefa</displayName>
				<symbol>CFA</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>i</yesstr>
			<nostr>a'a:a</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�P��ggLocale/Data/sr_Latn_YU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.29 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Latn"/>
		<territory type="YU"/>
	</identity>
	<alias source="sr_Latn_RS" path="//ldml"/>
</ldml>
PKpG[���u--Locale/Data/om.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="om"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikoota</language>
			<language type="am">Afaan Sidaamaa</language>
			<language type="ar">Arabiffaa</language>
			<language type="az">Afaan Azerbaijani</language>
			<language type="be">Afaan Belarusia</language>
			<language type="bg">Afaan Bulgariya</language>
			<language type="bh">Afaan Bihari</language>
			<language type="bn">Afaan Baangladeshi</language>
			<language type="bs">Afaan Bosniyaa</language>
			<language type="ca">Afaan Katalaa</language>
			<language type="cs">Afaan Czech</language>
			<language type="cy">Welishiffaa</language>
			<language type="da">Afaan Deenmaark</language>
			<language type="de">Afaan Jarmanii</language>
			<language type="el">Afaan Giriiki</language>
			<language type="en">Ingliffa</language>
			<language type="eo">Afaan Esperantoo</language>
			<language type="es">Afaan Ispeen</language>
			<language type="et">Afaan Istooniya</language>
			<language type="eu">Afaan Baskuu</language>
			<language type="fa">Afaan Persia</language>
			<language type="fi">Afaan Fiilaandi</language>
			<language type="fil">Afaan Filippinii</language>
			<language type="fo">Afaan Faroese</language>
			<language type="fr">Afaan Faransaayii</language>
			<language type="fy">Afaan Firisiyaani</language>
			<language type="ga">Afaan Ayirishii</language>
			<language type="gd">Scots Gaelic</language>
			<language type="gl">Afaan Galishii</language>
			<language type="gn">Afaan Guarani</language>
			<language type="gu">Afaan Gujarati</language>
			<language type="he">Afaan Hebrew</language>
			<language type="hi">Afaan Hindii</language>
			<language type="hr">Afaan Croatian</language>
			<language type="hu">Afaan Hangaari</language>
			<language type="ia">Interlingua</language>
			<language type="id">Afaan Indoneziya</language>
			<language type="is">Ayiislandiffaa</language>
			<language type="it">Afaan Xaaliyaani</language>
			<language type="ja">Afaan Japanii</language>
			<language type="jv">Afaan Java</language>
			<language type="ka">Afaan Georgian</language>
			<language type="kn">Afaan Kannada</language>
			<language type="ko">Afaan Korea</language>
			<language type="la">Afaan Laatini</language>
			<language type="lt">Afaan Liituniyaa</language>
			<language type="lv">Afaan Lativiyaa</language>
			<language type="mk">Afaan Macedooniyaa</language>
			<language type="ml">Malayaalamiffaa</language>
			<language type="mr">Afaan Maratii</language>
			<language type="ms">Malaayiffaa</language>
			<language type="mt">Afaan Maltesii</language>
			<language type="ne">Afaan Nepalii</language>
			<language type="nl">Afaan Dachii</language>
			<language type="nn">Afaan Norwegian</language>
			<language type="no">Afaan Norweyii</language>
			<language type="oc">Afaan Occit</language>
			<language type="om">Oromoo</language>
			<language type="pa">Afaan Punjabii</language>
			<language type="pl">Afaan Polandii</language>
			<language type="pt">Afaan Porchugaal</language>
			<language type="pt_BR">Afaan Portugali (Braazil)</language>
			<language type="pt_PT">Afaan Protuguese</language>
			<language type="ro">Afaan Romaniyaa</language>
			<language type="ru">Afaan Rushiyaa</language>
			<language type="si">Afaan Sinhalese</language>
			<language type="sk">Afaan Slovak</language>
			<language type="sl">Afaan Islovaniyaa</language>
			<language type="sq">Afaan Albaniyaa</language>
			<language type="sr">Afaan Serbiya</language>
			<language type="su">Afaan Sudaanii</language>
			<language type="sv">Afaan Suwidiin</language>
			<language type="sw">Suwahilii</language>
			<language type="ta">Afaan Tamilii</language>
			<language type="te">Afaan Telugu</language>
			<language type="th">Afaan Tayii</language>
			<language type="ti">Afaan Tigiree</language>
			<language type="tk">Lammii Turkii</language>
			<language type="tlh">Afaan Kilingon</language>
			<language type="tr">Afaan Turkii</language>
			<language type="uk">Afaan Ukreenii</language>
			<language type="ur">Afaan Urdu</language>
			<language type="uz">Afaan Uzbek</language>
			<language type="vi">Afaan Veetinam</language>
			<language type="xh">Afaan Xhosa</language>
			<language type="zh">Chinese</language>
			<language type="zu">Afaan Zuulu</language>
		</languages>
		<scripts>
			<script type="Latn">Latin</script>
		</scripts>
		<territories>
			<territory type="BR">Brazil</territory>
			<territory type="CN">China</territory>
			<territory type="DE">Germany</territory>
			<territory type="ET">Itoophiyaa</territory>
			<territory type="FR">France</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="IN">India</territory>
			<territory type="IT">Italy</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Keeniyaa</territory>
			<territory type="RU">Russia</territory>
			<territory type="US">United States</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ama</month>
							<month type="2">Gur</month>
							<month type="3">Bit</month>
							<month type="4">Elb</month>
							<month type="5">Cam</month>
							<month type="6">Wax</month>
							<month type="7">Ado</month>
							<month type="8">Hag</month>
							<month type="9">Ful</month>
							<month type="10">Onk</month>
							<month type="11">Sad</month>
							<month type="12">Mud</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Amajjii</month>
							<month type="2">Guraandhala</month>
							<month type="3">Bitooteessa</month>
							<month type="4">Elba</month>
							<month type="5">Caamsa</month>
							<month type="6">Waxabajjii</month>
							<month type="7">Adooleessa</month>
							<month type="8">Hagayya</month>
							<month type="9">Fuulbana</month>
							<month type="10">Onkololeessa</month>
							<month type="11">Sadaasa</month>
							<month type="12">Muddee</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Dil</day>
							<day type="mon">Wix</day>
							<day type="tue">Qib</day>
							<day type="wed">Rob</day>
							<day type="thu">Kam</day>
							<day type="fri">Jim</day>
							<day type="sat">San</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Dilbata</day>
							<day type="mon">Wiixata</day>
							<day type="tue">Qibxata</day>
							<day type="wed">Roobii</day>
							<day type="thu">Kamiisa</day>
							<day type="fri">Jimaata</day>
							<day type="sat">Sanbata</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">W</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>WD</am>
				<pm>WB</pm>
				<eras>
					<eraAbbr>
						<era type="0">KD</era>
						<era type="1">KB</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Chinese Yuan Renminbi</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Itoophiyaa Birrii</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pound Sterling</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
			</currency>
			<currency type="KES">
				<symbol>Ksh</symbol>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
			</currency>
			<currency type="USD">
				<displayName>US Dollar</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[;�;;Locale/Data/ha_Latn_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.11 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Latn"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[��&;##Locale/Data/ar_EG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="EG"/>
	</identity>
</ldml>
PKpG[���C--Locale/Data/en_GB.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.60 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="en"/>
		<territory type="GB"/>
	</identity>
	<characters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MEd">E, d/M</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Europe_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[�u���Locale/Data/tt.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tt"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="tt">Татар</language>
		</languages>
		<territories>
			<territory type="RU">Россия</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а ә б-е ё ж җ з-о ө п-у ү ф х һ ц-я]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hmm">H:mm</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="RUR">
				<symbol>р.</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[ꟀOOLocale/Data/ha_NE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.16 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<territory type="NE"/>
	</identity>
	<alias source="ha_Latn_NE" path="//ldml"/>
</ldml>
PKpG[�OqK%K%Locale/Data/root.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.162 $"/>
		<generation date="$Date: 2008/07/09 17:41:17 $"/>
		<language type="root"/>
	</identity>
	<fallback/>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">{0}</codePattern>
			<codePattern type="script">{0}</codePattern>
			<codePattern type="territory">{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<orientation/>
		<inList>mixed</inList>
		<inText type="currency">mixed</inText>
		<inText type="dayWidth">mixed</inText>
		<inText type="fields">mixed</inText>
		<inText type="keys">mixed</inText>
		<inText type="languages">mixed</inText>
		<inText type="long">mixed</inText>
		<inText type="measurementSystemNames">mixed</inText>
		<inText type="monthWidth">mixed</inText>
		<inText type="quarterWidth">mixed</inText>
		<inText type="scripts">mixed</inText>
		<inText type="territories">mixed</inText>
		<inText type="types">mixed</inText>
		<inText type="variants">mixed</inText>
	</layout>
	<characters>
		<exemplarCharacters>[]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GyMdkHmsSEDFwWahKzYeugAZvcL</localizedPatternChars>
		<dateRangePattern>{0} - {1}</dateRangePattern>
		<calendars>
			<default choice="gregorian"/>
			<calendar type="buddhist">
				<months>
					<alias source="locale" path="../../calendar[@type='gregorian']/months"/>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">BE</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<default choice="medium"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="chinese">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<dateFormats>
					<default choice="medium"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE y'x'G-Ml-d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>y'x'G-Ml-d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>y'x'G-Ml-d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>y'x'G-Ml-d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Tout</month>
							<month type="2">Baba</month>
							<month type="3">Hator</month>
							<month type="4">Kiahk</month>
							<month type="5">Toba</month>
							<month type="6">Amshir</month>
							<month type="7">Baramhat</month>
							<month type="8">Baramouda</month>
							<month type="9">Bashans</month>
							<month type="10">Paona</month>
							<month type="11">Epep</month>
							<month type="12">Mesra</month>
							<month type="13">Nasie</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
							<month type="13">13</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">ERA0</era>
						<era type="1">ERA1</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="ethiopic">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Meskerem</month>
							<month type="2">Tekemt</month>
							<month type="3">Hedar</month>
							<month type="4">Tahsas</month>
							<month type="5">Ter</month>
							<month type="6">Yekatit</month>
							<month type="7">Megabit</month>
							<month type="8">Miazia</month>
							<month type="9">Genbot</month>
							<month type="10">Sene</month>
							<month type="11">Hamle</month>
							<month type="12">Nehasse</month>
							<month type="13">Pagumen</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
							<month type="13">13</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">ERA0</era>
						<era type="1">ERA1</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<default choice="format"/>
					<dayContext type="format">
						<default choice="wide"/>
						<dayWidth type="abbreviated">
							<alias source="locale" path="../dayWidth[@type='wide']"/>
						</dayWidth>
						<dayWidth type="narrow">
							<alias source="locale" path="../../dayContext[@type='stand-alone']/dayWidth[@type='narrow']"/>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<alias source="locale" path="../../dayContext[@type='format']/dayWidth[@type='abbreviated']"/>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<alias source="locale" path="../../dayContext[@type='format']/dayWidth[@type='wide']"/>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<alias source="locale" path="../quarterWidth[@type='wide']"/>
						</quarterWidth>
						<quarterWidth type="narrow">
							<alias source="locale" path="../../quarterContext[@type='stand-alone']/quarterWidth[@type='narrow']"/>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<alias source="locale" path="../../quarterContext[@type='format']/quarterWidth[@type='abbreviated']"/>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<alias source="locale" path="../../quarterContext[@type='format']/quarterWidth[@type='wide']"/>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<default choice="medium"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<default choice="medium"/>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-M-d</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
					</availableFormats>
					<appendItems>
						<appendItem request="Day">{0} ({2}: {1})</appendItem>
						<appendItem request="Day-Of-Week">{0} {1}</appendItem>
						<appendItem request="Era">{0} {1}</appendItem>
						<appendItem request="Hour">{0} ({2}: {1})</appendItem>
						<appendItem request="Minute">{0} ({2}: {1})</appendItem>
						<appendItem request="Month">{0} ({2}: {1})</appendItem>
						<appendItem request="Quarter">{0} ({2}: {1})</appendItem>
						<appendItem request="Second">{0} ({2}: {1})</appendItem>
						<appendItem request="Timezone">{0} {1}</appendItem>
						<appendItem request="Week">{0} ({2}: {1})</appendItem>
						<appendItem request="Year">{0} {1}</appendItem>
					</appendItems>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd – E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd – E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MM-d – E, MM-d</greatestDifference>
							<greatestDifference id="d">E, MM-d – E, MM-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MM-d – MM-d</greatestDifference>
							<greatestDifference id="d">MM-d – d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd – MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd – dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy-MM-dd – MM-d</greatestDifference>
							<greatestDifference id="d">yyyy-MM-d – d</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd – yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd – MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd – dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd – yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Year</displayName>
					</field>
					<field type="month">
						<displayName>Month</displayName>
					</field>
					<field type="week">
						<displayName>Week</displayName>
					</field>
					<field type="day">
						<displayName>Day</displayName>
						<relative type="0">Today</relative>
						<relative type="1">Tomorrow</relative>
						<relative type="-1">Yesterday</relative>
					</field>
					<field type="weekday">
						<displayName>Day of the Week</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dayperiod</displayName>
					</field>
					<field type="hour">
						<displayName>Hour</displayName>
					</field>
					<field type="minute">
						<displayName>Minute</displayName>
					</field>
					<field type="second">
						<displayName>Second</displayName>
					</field>
					<field type="zone">
						<displayName>Zone</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Tishri</month>
							<month type="2">Heshvan</month>
							<month type="3">Kislev</month>
							<month type="4">Tevet</month>
							<month type="5">Shevat</month>
							<month type="6">Adar I</month>
							<month type="7">Adar</month>
							<month type="8">Nisan</month>
							<month type="9">Iyar</month>
							<month type="10">Sivan</month>
							<month type="11">Tamuz</month>
							<month type="12">Av</month>
							<month type="13">Elul</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
							<month type="13">13</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">AM</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="indian">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Chaitra</month>
							<month type="2">Vaisakha</month>
							<month type="3">Jyaistha</month>
							<month type="4">Asadha</month>
							<month type="5">Sravana</month>
							<month type="6">Bhadra</month>
							<month type="7">Asvina</month>
							<month type="8">Kartika</month>
							<month type="9">Agrahayana</month>
							<month type="10">Pausa</month>
							<month type="11">Magha</month>
							<month type="12">Phalguna</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">SAKA</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="islamic">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Muharram</month>
							<month type="2">Safar</month>
							<month type="3">Rabiʻ I</month>
							<month type="4">Rabiʻ II</month>
							<month type="5">Jumada I</month>
							<month type="6">Jumada II</month>
							<month type="7">Rajab</month>
							<month type="8">Shaʻban</month>
							<month type="9">Ramadan</month>
							<month type="10">Shawwal</month>
							<month type="11">Dhuʻl-Qiʻdah</month>
							<month type="12">Dhuʻl-Hijjah</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">AH</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="islamic-civil">
				<alias source="locale" path="../calendar[@type='islamic']"/>
			</calendar>
			<calendar type="japanese">
				<months>
					<alias source="locale" path="../../calendar[@type='gregorian']/months"/>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">Taika</era>
						<era type="1">Hakuchi</era>
						<era type="2">Hakuhō</era>
						<era type="3">Shuchō</era>
						<era type="4">Taihō</era>
						<era type="5">Keiun</era>
						<era type="6">Wadō</era>
						<era type="7">Reiki</era>
						<era type="8">Yōrō</era>
						<era type="9">Jinki</era>
						<era type="10">Tempyō</era>
						<era type="11">Tempyō-kampō</era>
						<era type="12">Tempyō-shōhō</era>
						<era type="13">Tempyō-hōji</era>
						<era type="14">Temphō-jingo</era>
						<era type="15">Jingo-keiun</era>
						<era type="16">Hōki</era>
						<era type="17">Ten-ō</era>
						<era type="18">Enryaku</era>
						<era type="19">Daidō</era>
						<era type="20">Kōnin</era>
						<era type="21">Tenchō</era>
						<era type="22">Shōwa</era>
						<era type="23">Kajō</era>
						<era type="24">Ninju</era>
						<era type="25">Saiko</era>
						<era type="26">Tennan</era>
						<era type="27">Jōgan</era>
						<era type="28">Genkei</era>
						<era type="29">Ninna</era>
						<era type="30">Kampyō</era>
						<era type="31">Shōtai</era>
						<era type="32">Engi</era>
						<era type="33">Enchō</era>
						<era type="34">Shōhei</era>
						<era type="35">Tengyō</era>
						<era type="36">Tenryaku</era>
						<era type="37">Tentoku</era>
						<era type="38">Ōwa</era>
						<era type="39">Kōhō</era>
						<era type="40">Anna</era>
						<era type="41">Tenroku</era>
						<era type="42">Ten-en</era>
						<era type="43">Jōgen</era>
						<era type="44">Tengen</era>
						<era type="45">Eikan</era>
						<era type="46">Kanna</era>
						<era type="47">Ei-en</era>
						<era type="48">Eiso</era>
						<era type="49">Shōryaku</era>
						<era type="50">Chōtoku</era>
						<era type="51">Chōhō</era>
						<era type="52">Kankō</era>
						<era type="53">Chōwa</era>
						<era type="54">Kannin</era>
						<era type="55">Jian</era>
						<era type="56">Manju</era>
						<era type="57">Chōgen</era>
						<era type="58">Chōryaku</era>
						<era type="59">Chōkyū</era>
						<era type="60">Kantoku</era>
						<era type="61">Eishō</era>
						<era type="62">Tengi</era>
						<era type="63">Kōhei</era>
						<era type="64">Jiryaku</era>
						<era type="65">Enkyū</era>
						<era type="66">Shōho</era>
						<era type="67">Shōryaku</era>
						<era type="68">Eiho</era>
						<era type="69">Ōtoku</era>
						<era type="70">Kanji</era>
						<era type="71">Kaho</era>
						<era type="72">Eichō</era>
						<era type="73">Shōtoku</era>
						<era type="74">Kōwa</era>
						<era type="75">Chōji</era>
						<era type="76">Kashō</era>
						<era type="77">Tennin</era>
						<era type="78">Ten-ei</era>
						<era type="79">Eikyū</era>
						<era type="80">Gen-ei</era>
						<era type="81">Hoan</era>
						<era type="82">Tenji</era>
						<era type="83">Daiji</era>
						<era type="84">Tenshō</era>
						<era type="85">Chōshō</era>
						<era type="86">Hoen</era>
						<era type="87">Eiji</era>
						<era type="88">Kōji</era>
						<era type="89">Tenyō</era>
						<era type="90">Kyūan</era>
						<era type="91">Ninpei</era>
						<era type="92">Kyūju</era>
						<era type="93">Hogen</era>
						<era type="94">Heiji</era>
						<era type="95">Eiryaku</era>
						<era type="96">Ōho</era>
						<era type="97">Chōkan</era>
						<era type="98">Eiman</era>
						<era type="99">Nin-an</era>
						<era type="100">Kaō</era>
						<era type="101">Shōan</era>
						<era type="102">Angen</era>
						<era type="103">Jishō</era>
						<era type="104">Yōwa</era>
						<era type="105">Juei</era>
						<era type="106">Genryuku</era>
						<era type="107">Bunji</era>
						<era type="108">Kenkyū</era>
						<era type="109">Shōji</era>
						<era type="110">Kennin</era>
						<era type="111">Genkyū</era>
						<era type="112">Ken-ei</era>
						<era type="113">Shōgen</era>
						<era type="114">Kenryaku</era>
						<era type="115">Kenpō</era>
						<era type="116">Shōkyū</era>
						<era type="117">Jōō</era>
						<era type="118">Gennin</era>
						<era type="119">Karoku</era>
						<era type="120">Antei</era>
						<era type="121">Kanki</era>
						<era type="122">Jōei</era>
						<era type="123">Tempuku</era>
						<era type="124">Bunryaku</era>
						<era type="125">Katei</era>
						<era type="126">Ryakunin</era>
						<era type="127">En-ō</era>
						<era type="128">Ninji</era>
						<era type="129">Kangen</era>
						<era type="130">Hōji</era>
						<era type="131">Kenchō</era>
						<era type="132">Kōgen</era>
						<era type="133">Shōka</era>
						<era type="134">Shōgen</era>
						<era type="135">Bun-ō</era>
						<era type="136">Kōchō</era>
						<era type="137">Bun-ei</era>
						<era type="138">Kenji</era>
						<era type="139">Kōan</era>
						<era type="140">Shōō</era>
						<era type="141">Einin</era>
						<era type="142">Shōan</era>
						<era type="143">Kengen</era>
						<era type="144">Kagen</era>
						<era type="145">Tokuji</era>
						<era type="146">Enkei</era>
						<era type="147">Ōchō</era>
						<era type="148">Shōwa</era>
						<era type="149">Bunpō</era>
						<era type="150">Genō</era>
						<era type="151">Genkyō</era>
						<era type="152">Shōchū</era>
						<era type="153">Kareki</era>
						<era type="154">Gentoku</era>
						<era type="155">Genkō</era>
						<era type="156">Kemmu</era>
						<era type="157">Engen</era>
						<era type="158">Kōkoku</era>
						<era type="159">Shōhei</era>
						<era type="160">Kentoku</era>
						<era type="161">Bunchũ</era>
						<era type="162">Tenju</era>
						<era type="163">Kōryaku</era>
						<era type="164">Kōwa</era>
						<era type="165">Genchũ</era>
						<era type="166">Meitoku</era>
						<era type="167">Kakei</era>
						<era type="168">Kōō</era>
						<era type="169">Meitoku</era>
						<era type="170">Ōei</era>
						<era type="171">Shōchō</era>
						<era type="172">Eikyō</era>
						<era type="173">Kakitsu</era>
						<era type="174">Bun-an</era>
						<era type="175">Hōtoku</era>
						<era type="176">Kyōtoku</era>
						<era type="177">Kōshō</era>
						<era type="178">Chōroku</era>
						<era type="179">Kanshō</era>
						<era type="180">Bunshō</era>
						<era type="181">Ōnin</era>
						<era type="182">Bunmei</era>
						<era type="183">Chōkyō</era>
						<era type="184">Entoku</era>
						<era type="185">Meiō</era>
						<era type="186">Bunki</era>
						<era type="187">Eishō</era>
						<era type="188">Taiei</era>
						<era type="189">Kyōroku</era>
						<era type="190">Tenmon</era>
						<era type="191">Kōji</era>
						<era type="192">Eiroku</era>
						<era type="193">Genki</era>
						<era type="194">Tenshō</era>
						<era type="195">Bunroku</era>
						<era type="196">Keichō</era>
						<era type="197">Genwa</era>
						<era type="198">Kan-ei</era>
						<era type="199">Shōho</era>
						<era type="200">Keian</era>
						<era type="201">Shōō</era>
						<era type="202">Meiryaku</era>
						<era type="203">Manji</era>
						<era type="204">Kanbun</era>
						<era type="205">Enpō</era>
						<era type="206">Tenwa</era>
						<era type="207">Jōkyō</era>
						<era type="208">Genroku</era>
						<era type="209">Hōei</era>
						<era type="210">Shōtoku</era>
						<era type="211">Kyōhō</era>
						<era type="212">Genbun</era>
						<era type="213">Kanpō</era>
						<era type="214">Enkyō</era>
						<era type="215">Kan-en</era>
						<era type="216">Hōryaku</era>
						<era type="217">Meiwa</era>
						<era type="218">An-ei</era>
						<era type="219">Tenmei</era>
						<era type="220">Kansei</era>
						<era type="221">Kyōwa</era>
						<era type="222">Bunka</era>
						<era type="223">Bunsei</era>
						<era type="224">Tenpō</era>
						<era type="225">Kōka</era>
						<era type="226">Kaei</era>
						<era type="227">Ansei</era>
						<era type="228">Man-en</era>
						<era type="229">Bunkyū</era>
						<era type="230">Genji</era>
						<era type="231">Keiō</era>
						<era type="232">Meiji</era>
						<era type="233">Taishō</era>
						<era type="234">Shōwa</era>
						<era type="235">Heisei</era>
					</eraAbbr>
					<eraNarrow>
						<era type="232">M</era>
						<era type="233">T</era>
						<era type="234">S</era>
						<era type="235">H</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<default choice="medium"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>M/d/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Ed">E d</dateFormatItem>
						<dateFormatItem id="H">H</dateFormatItem>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="Hms">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy GGG</dateFormatItem>
						<dateFormatItem id="yM">GGGGG yy-MM</dateFormatItem>
						<dateFormatItem id="yMMM">GGGGG yy MMM</dateFormatItem>
						<dateFormatItem id="yQ">GGGGG yy Q</dateFormatItem>
					</availableFormats>
					<appendItems>
						<appendItem request="Day">{0} ({2}: {1})</appendItem>
						<appendItem request="Day-Of-Week">{0} {1}</appendItem>
						<appendItem request="Era">{0} {1}</appendItem>
						<appendItem request="Hour">{0} ({2}: {1})</appendItem>
						<appendItem request="Minute">{0} ({2}: {1})</appendItem>
						<appendItem request="Month">{0} ({2}: {1})</appendItem>
						<appendItem request="Quarter">{0} ({2}: {1})</appendItem>
						<appendItem request="Second">{0} ({2}: {1})</appendItem>
						<appendItem request="Timezone">{0} {1}</appendItem>
						<appendItem request="Week">{0} ({2}: {1})</appendItem>
						<appendItem request="Year">{0} {1}</appendItem>
					</appendItems>
				</dateTimeFormats>
			</calendar>
			<calendar type="persian">
				<months>
					<default choice="format"/>
					<monthContext type="format">
						<default choice="wide"/>
						<monthWidth type="abbreviated">
							<alias source="locale" path="../monthWidth[@type='wide']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<alias source="locale" path="../../monthContext[@type='stand-alone']/monthWidth[@type='narrow']"/>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Farvardin</month>
							<month type="2">Ordibehesht</month>
							<month type="3">Khordad</month>
							<month type="4">Tir</month>
							<month type="5">Mordad</month>
							<month type="6">Shahrivar</month>
							<month type="7">Mehr</month>
							<month type="8">Aban</month>
							<month type="9">Azar</month>
							<month type="10">Dey</month>
							<month type="11">Bahman</month>
							<month type="12">Esfand</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='abbreviated']"/>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<alias source="locale" path="../../monthContext[@type='format']/monthWidth[@type='wide']"/>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">AP</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateFormats"/>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
			<calendar type="roc">
				<months>
					<alias source="locale" path="../../calendar[@type='gregorian']/months"/>
				</months>
				<days>
					<alias source="locale" path="../../calendar[@type='gregorian']/days"/>
				</days>
				<quarters>
					<alias source="locale" path="../../calendar[@type='gregorian']/quarters"/>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<alias source="locale" path="../eraAbbr"/>
					</eraNames>
					<eraAbbr>
						<era type="0">Before R.O.C.</era>
						<era type="1">R.O.C.</era>
					</eraAbbr>
					<eraNarrow>
						<alias source="locale" path="../eraAbbr"/>
					</eraNarrow>
				</eras>
				<dateFormats>
					<default choice="medium"/>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM d, G y</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>MMMM d, G y</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM d, G y</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>G y/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/timeFormats"/>
				</timeFormats>
				<dateTimeFormats>
					<alias source="locale" path="../../calendar[@type='gregorian']/dateTimeFormats"/>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<hoursFormat>{0}/{1}</hoursFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<abbreviationFallback choice="standard"/>
			<preferenceOrdering choice=""/>
			<singleCountries list="Europe/Kiev Pacific/Majuro Africa/Bamako America/Godthab America/Santiago America/Guayaquil Asia/Shanghai Asia/Tashkent Asia/Kuala_Lumpur Europe/Madrid Europe/Lisbon Europe/London Pacific/Auckland Pacific/Tahiti"/>
			<zone type="Etc/Unknown">
				<exemplarCity>Unknown</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont d'Urville</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. John's</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem, North Dakota</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Center, North Dakota</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Vincennes, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Petersburg, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Tell City, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Knox, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Winamac, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marengo, Indiana</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Vevay, Indiana</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Monticello, Kentucky</exemplarCity>
			</zone>
			<metazone type="Acre">
				<short>
					<standard>ACT (Acre)</standard>
					<daylight>ACST (Acre)</daylight>
				</short>
			</metazone>
			<metazone type="Afghanistan">
				<short>
					<standard>AFT</standard>
				</short>
			</metazone>
			<metazone type="Africa_Central">
				<short>
					<standard>CAT</standard>
				</short>
			</metazone>
			<metazone type="Africa_Eastern">
				<short>
					<standard>EAT</standard>
				</short>
			</metazone>
			<metazone type="Africa_Southern">
				<short>
					<standard>SAST</standard>
				</short>
			</metazone>
			<metazone type="Africa_Western">
				<short>
					<standard>WAT</standard>
					<daylight>WAST</daylight>
				</short>
			</metazone>
			<metazone type="Aktyubinsk">
				<short>
					<standard>AKTT</standard>
					<daylight>AKTST</daylight>
				</short>
			</metazone>
			<metazone type="Alaska">
				<short>
					<standard>AKST</standard>
					<daylight>AKDT</daylight>
				</short>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<short>
					<standard>AHST</standard>
					<daylight>AHDT</daylight>
				</short>
			</metazone>
			<metazone type="Almaty">
				<short>
					<standard>ALMT</standard>
					<daylight>ALMST</daylight>
				</short>
			</metazone>
			<metazone type="Amazon">
				<short>
					<standard>AMT</standard>
					<daylight>AMST</daylight>
				</short>
			</metazone>
			<metazone type="America_Central">
				<short>
					<standard>CST</standard>
					<daylight>CDT</daylight>
				</short>
			</metazone>
			<metazone type="America_Eastern">
				<short>
					<standard>EST</standard>
					<daylight>EDT</daylight>
				</short>
			</metazone>
			<metazone type="America_Mountain">
				<short>
					<standard>MST</standard>
					<daylight>MDT</daylight>
				</short>
			</metazone>
			<metazone type="America_Pacific">
				<short>
					<standard>PST</standard>
					<daylight>PDT</daylight>
				</short>
			</metazone>
			<metazone type="Anadyr">
				<short>
					<standard>ANAT</standard>
					<daylight>ANAST</daylight>
				</short>
			</metazone>
			<metazone type="Aqtau">
				<short>
					<standard>AQTT (Aqtau)</standard>
					<daylight>AQTST (Aqtau)</daylight>
				</short>
			</metazone>
			<metazone type="Aqtobe">
				<short>
					<standard>AQTT (Aqtobe)</standard>
					<daylight>AQTST (Aqtobe)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<short>
					<standard>AST (SA)</standard>
					<daylight>ADT (SA)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<short>
					<standard>ART</standard>
					<daylight>ARST</daylight>
				</short>
			</metazone>
			<metazone type="Argentina_Western">
				<short>
					<standard>WART</standard>
				</short>
			</metazone>
			<metazone type="Armenia">
				<short>
					<standard>AMT (AM)</standard>
					<daylight>AMST (AM)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<short>
					<standard>ASHT</standard>
					<daylight>ASHST</daylight>
				</short>
			</metazone>
			<metazone type="Atlantic">
				<short>
					<standard>AST</standard>
					<daylight>ADT</daylight>
				</short>
			</metazone>
			<metazone type="Australia_Central">
				<short>
					<standard>ACST</standard>
					<daylight>ACDT</daylight>
				</short>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<short>
					<standard>ACWST</standard>
					<daylight>ACWDT</daylight>
				</short>
			</metazone>
			<metazone type="Australia_Eastern">
				<short>
					<standard>AEST</standard>
					<daylight>AEDT</daylight>
				</short>
			</metazone>
			<metazone type="Australia_Western">
				<short>
					<standard>AWST</standard>
					<daylight>AWDT</daylight>
				</short>
			</metazone>
			<metazone type="Azerbaijan">
				<short>
					<standard>AZT</standard>
					<daylight>AZST</daylight>
				</short>
			</metazone>
			<metazone type="Azores">
				<short>
					<standard>AZOT</standard>
					<daylight>AZOST</daylight>
				</short>
			</metazone>
			<metazone type="Baku">
				<short>
					<standard>BAKT</standard>
					<daylight>BAKST</daylight>
				</short>
			</metazone>
			<metazone type="Bangladesh">
				<short>
					<standard>BDT</standard>
				</short>
			</metazone>
			<metazone type="Bering">
				<short>
					<standard>BST (Bering)</standard>
					<daylight>BDT (Bering)</daylight>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<short>
					<standard>BTT</standard>
				</short>
			</metazone>
			<metazone type="Bolivia">
				<short>
					<standard>BOT</standard>
				</short>
			</metazone>
			<metazone type="Borneo">
				<short>
					<standard>BORT</standard>
					<daylight>BORST</daylight>
				</short>
			</metazone>
			<metazone type="Brasilia">
				<short>
					<standard>BRT</standard>
					<daylight>BRST</daylight>
				</short>
			</metazone>
			<metazone type="Brunei">
				<short>
					<standard>BNT</standard>
				</short>
			</metazone>
			<metazone type="Cape_Verde">
				<short>
					<standard>CVT</standard>
					<daylight>CVST</daylight>
				</short>
			</metazone>
			<metazone type="Chamorro">
				<short>
					<standard>ChST</standard>
				</short>
			</metazone>
			<metazone type="Changbai">
				<short>
					<standard>CHAT</standard>
				</short>
			</metazone>
			<metazone type="Chatham">
				<short>
					<standard>CHAST</standard>
					<daylight>CHADT</daylight>
				</short>
			</metazone>
			<metazone type="Chile">
				<short>
					<standard>CLT</standard>
					<daylight>CLST</daylight>
				</short>
			</metazone>
			<metazone type="China">
				<short>
					<standard>CST (CN)</standard>
					<daylight>CDT (CN)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<short>
					<standard>CHOT</standard>
					<daylight>CHOST</daylight>
				</short>
			</metazone>
			<metazone type="Christmas">
				<short>
					<standard>CXT</standard>
				</short>
			</metazone>
			<metazone type="Cocos">
				<short>
					<standard>CCT</standard>
				</short>
			</metazone>
			<metazone type="Colombia">
				<short>
					<standard>COT</standard>
					<daylight>COST</daylight>
				</short>
			</metazone>
			<metazone type="Cook">
				<short>
					<standard>CKT</standard>
					<daylight>CKHST</daylight>
				</short>
			</metazone>
			<metazone type="Cuba">
				<short>
					<standard>CST (CU)</standard>
					<daylight>CDT (CU)</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<short>
					<standard>DACT</standard>
				</short>
			</metazone>
			<metazone type="Davis">
				<short>
					<standard>DAVT</standard>
				</short>
			</metazone>
			<metazone type="DumontDUrville">
				<short>
					<standard>DDUT</standard>
				</short>
			</metazone>
			<metazone type="Dushanbe">
				<short>
					<standard>DUST</standard>
					<daylight>DUSST</daylight>
				</short>
			</metazone>
			<metazone type="Dutch_Guiana">
				<short>
					<standard>NEGT</standard>
				</short>
			</metazone>
			<metazone type="East_Timor">
				<short>
					<standard>TLT</standard>
				</short>
			</metazone>
			<metazone type="Easter">
				<short>
					<standard>EAST</standard>
					<daylight>EASST</daylight>
				</short>
			</metazone>
			<metazone type="Ecuador">
				<short>
					<standard>ECT</standard>
				</short>
			</metazone>
			<metazone type="Europe_Central">
				<short>
					<standard>CET</standard>
					<daylight>CEST</daylight>
				</short>
			</metazone>
			<metazone type="Europe_Eastern">
				<short>
					<standard>EET</standard>
					<daylight>EEST</daylight>
				</short>
			</metazone>
			<metazone type="Europe_Western">
				<short>
					<standard>WET</standard>
					<daylight>WEST</daylight>
				</short>
			</metazone>
			<metazone type="Falkland">
				<short>
					<standard>FKT</standard>
					<daylight>FKST</daylight>
				</short>
			</metazone>
			<metazone type="Fiji">
				<short>
					<standard>FJT</standard>
					<daylight>FJST</daylight>
				</short>
			</metazone>
			<metazone type="French_Guiana">
				<short>
					<standard>GFT</standard>
				</short>
			</metazone>
			<metazone type="French_Southern">
				<short>
					<standard>TFT</standard>
				</short>
			</metazone>
			<metazone type="Frunze">
				<short>
					<standard>FRUT</standard>
					<daylight>FRUST</daylight>
				</short>
			</metazone>
			<metazone type="GMT">
				<short>
					<standard>GMT</standard>
				</short>
			</metazone>
			<metazone type="Galapagos">
				<short>
					<standard>GALT</standard>
				</short>
			</metazone>
			<metazone type="Gambier">
				<short>
					<standard>GAMT</standard>
				</short>
			</metazone>
			<metazone type="Georgia">
				<short>
					<standard>GET</standard>
					<daylight>GEST</daylight>
				</short>
			</metazone>
			<metazone type="Gilbert_Islands">
				<short>
					<standard>GILT</standard>
				</short>
			</metazone>
			<metazone type="Greenland_Central">
				<short>
					<standard>CGT</standard>
					<daylight>CGST</daylight>
				</short>
			</metazone>
			<metazone type="Greenland_Eastern">
				<short>
					<standard>EGT</standard>
					<daylight>EGST</daylight>
				</short>
			</metazone>
			<metazone type="Greenland_Western">
				<short>
					<standard>WGT</standard>
					<daylight>WGST</daylight>
				</short>
			</metazone>
			<metazone type="Guam">
				<short>
					<standard>GST (GU)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<short>
					<standard>GST</standard>
				</short>
			</metazone>
			<metazone type="Guyana">
				<short>
					<standard>GYT</standard>
				</short>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<short>
					<standard>HST</standard>
				</short>
			</metazone>
			<metazone type="Hong_Kong">
				<short>
					<standard>HKT</standard>
					<daylight>HKST</daylight>
				</short>
			</metazone>
			<metazone type="Hovd">
				<short>
					<standard>HOVT</standard>
					<daylight>HOVST</daylight>
				</short>
			</metazone>
			<metazone type="India">
				<short>
					<standard>IST</standard>
				</short>
			</metazone>
			<metazone type="Indian_Ocean">
				<short>
					<standard>IOT</standard>
				</short>
			</metazone>
			<metazone type="Indochina">
				<short>
					<standard>ICT</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Central">
				<short>
					<standard>CIT</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<short>
					<standard>EIT</standard>
				</short>
			</metazone>
			<metazone type="Indonesia_Western">
				<short>
					<standard>WIT</standard>
				</short>
			</metazone>
			<metazone type="Iran">
				<short>
					<standard>IRST</standard>
					<daylight>IRDT</daylight>
				</short>
			</metazone>
			<metazone type="Irkutsk">
				<short>
					<standard>IRKT</standard>
					<daylight>IRKST</daylight>
				</short>
			</metazone>
			<metazone type="Israel">
				<short>
					<standard>IST (IL)</standard>
					<daylight>IDT</daylight>
				</short>
			</metazone>
			<metazone type="Japan">
				<short>
					<standard>JST</standard>
					<daylight>JDT</daylight>
				</short>
			</metazone>
			<metazone type="Kamchatka">
				<short>
					<standard>PETT</standard>
					<daylight>PETST</daylight>
				</short>
			</metazone>
			<metazone type="Karachi">
				<short>
					<standard>KART</standard>
				</short>
			</metazone>
			<metazone type="Kashgar">
				<short>
					<standard>KAST</standard>
				</short>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<short>
					<standard>EKST</standard>
				</short>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<short>
					<standard>WKST</standard>
				</short>
			</metazone>
			<metazone type="Kizilorda">
				<short>
					<standard>KIZT</standard>
					<daylight>KIZST</daylight>
				</short>
			</metazone>
			<metazone type="Korea">
				<short>
					<standard>KST</standard>
					<daylight>KDT</daylight>
				</short>
			</metazone>
			<metazone type="Kosrae">
				<short>
					<standard>KOST</standard>
				</short>
			</metazone>
			<metazone type="Krasnoyarsk">
				<short>
					<standard>KRAT</standard>
					<daylight>KRAST</daylight>
				</short>
			</metazone>
			<metazone type="Kuybyshev">
				<short>
					<standard>KUYT</standard>
					<daylight>KUYST</daylight>
				</short>
			</metazone>
			<metazone type="Kwajalein">
				<short>
					<standard>KWAT</standard>
				</short>
			</metazone>
			<metazone type="Kyrgystan">
				<short>
					<standard>KGT</standard>
				</short>
			</metazone>
			<metazone type="Lanka">
				<short>
					<standard>LKT</standard>
				</short>
			</metazone>
			<metazone type="Line_Islands">
				<short>
					<standard>LINT</standard>
				</short>
			</metazone>
			<metazone type="Long_Shu">
				<short>
					<standard>LONT</standard>
				</short>
			</metazone>
			<metazone type="Lord_Howe">
				<short>
					<standard>LHST</standard>
					<daylight>LHDT</daylight>
				</short>
			</metazone>
			<metazone type="Macau">
				<short>
					<standard>MOT</standard>
					<daylight>MOST</daylight>
				</short>
			</metazone>
			<metazone type="Magadan">
				<short>
					<standard>MAGT</standard>
					<daylight>MAGST</daylight>
				</short>
			</metazone>
			<metazone type="Malaya">
				<short>
					<standard>MALT</standard>
				</short>
			</metazone>
			<metazone type="Malaysia">
				<short>
					<standard>MYT</standard>
				</short>
			</metazone>
			<metazone type="Maldives">
				<short>
					<standard>MVT</standard>
				</short>
			</metazone>
			<metazone type="Marquesas">
				<short>
					<standard>MART</standard>
				</short>
			</metazone>
			<metazone type="Marshall_Islands">
				<short>
					<standard>MHT</standard>
				</short>
			</metazone>
			<metazone type="Mauritius">
				<short>
					<standard>MUT</standard>
					<daylight>MUST</daylight>
				</short>
			</metazone>
			<metazone type="Mawson">
				<short>
					<standard>MAWT</standard>
				</short>
			</metazone>
			<metazone type="Mongolia">
				<short>
					<standard>ULAT</standard>
					<daylight>ULAST</daylight>
				</short>
			</metazone>
			<metazone type="Moscow">
				<short>
					<standard>MSK</standard>
					<daylight>MSKS</daylight>
				</short>
			</metazone>
			<metazone type="Myanmar">
				<short>
					<standard>MMT</standard>
				</short>
			</metazone>
			<metazone type="Nauru">
				<short>
					<standard>NRT</standard>
				</short>
			</metazone>
			<metazone type="Nepal">
				<short>
					<standard>NPT</standard>
				</short>
			</metazone>
			<metazone type="New_Caledonia">
				<short>
					<standard>NCT</standard>
					<daylight>NCST</daylight>
				</short>
			</metazone>
			<metazone type="New_Zealand">
				<short>
					<standard>NZST</standard>
					<daylight>NZDT</daylight>
				</short>
			</metazone>
			<metazone type="Newfoundland">
				<short>
					<standard>NST</standard>
					<daylight>NDT</daylight>
				</short>
			</metazone>
			<metazone type="Niue">
				<short>
					<standard>NUT</standard>
				</short>
			</metazone>
			<metazone type="Norfolk">
				<short>
					<standard>NFT</standard>
				</short>
			</metazone>
			<metazone type="Noronha">
				<short>
					<standard>FNT</standard>
					<daylight>FNST</daylight>
				</short>
			</metazone>
			<metazone type="North_Mariana">
				<short>
					<standard>MPT</standard>
				</short>
			</metazone>
			<metazone type="Novosibirsk">
				<short>
					<standard>NOVT</standard>
					<daylight>NOVST</daylight>
				</short>
			</metazone>
			<metazone type="Omsk">
				<short>
					<standard>OMST</standard>
					<daylight>OMSST</daylight>
				</short>
			</metazone>
			<metazone type="Pakistan">
				<short>
					<standard>PKT</standard>
					<daylight>PKST</daylight>
				</short>
			</metazone>
			<metazone type="Palau">
				<short>
					<standard>PWT</standard>
				</short>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<short>
					<standard>PGT</standard>
				</short>
			</metazone>
			<metazone type="Paraguay">
				<short>
					<standard>PYT</standard>
					<daylight>PYST</daylight>
				</short>
			</metazone>
			<metazone type="Peru">
				<short>
					<standard>PET</standard>
					<daylight>PEST</daylight>
				</short>
			</metazone>
			<metazone type="Philippines">
				<short>
					<standard>PHT</standard>
					<daylight>PHST</daylight>
				</short>
			</metazone>
			<metazone type="Phoenix_Islands">
				<short>
					<standard>PHOT</standard>
				</short>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<short>
					<standard>PMST</standard>
					<daylight>PMDT</daylight>
				</short>
			</metazone>
			<metazone type="Pitcairn">
				<short>
					<standard>PNT</standard>
				</short>
			</metazone>
			<metazone type="Ponape">
				<short>
					<standard>PONT</standard>
				</short>
			</metazone>
			<metazone type="Qyzylorda">
				<short>
					<standard>QYZT</standard>
					<daylight>QYZST</daylight>
				</short>
			</metazone>
			<metazone type="Reunion">
				<short>
					<standard>RET</standard>
				</short>
			</metazone>
			<metazone type="Rothera">
				<short>
					<standard>ROTT</standard>
				</short>
			</metazone>
			<metazone type="Sakhalin">
				<short>
					<standard>SAKT</standard>
					<daylight>SAKST</daylight>
				</short>
			</metazone>
			<metazone type="Samara">
				<short>
					<standard>SAMT</standard>
					<daylight>SAMST</daylight>
				</short>
			</metazone>
			<metazone type="Samarkand">
				<short>
					<standard>SAMT (Samarkand)</standard>
					<daylight>SAMST (Samarkand)</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<short>
					<standard>SST</standard>
				</short>
			</metazone>
			<metazone type="Seychelles">
				<short>
					<standard>SCT</standard>
				</short>
			</metazone>
			<metazone type="Shevchenko">
				<short>
					<standard>SHET</standard>
					<daylight>SHEST</daylight>
				</short>
			</metazone>
			<metazone type="Singapore">
				<short>
					<standard>SGT</standard>
				</short>
			</metazone>
			<metazone type="Solomon">
				<short>
					<standard>SBT</standard>
				</short>
			</metazone>
			<metazone type="South_Georgia">
				<short>
					<standard>GST (GS)</standard>
				</short>
			</metazone>
			<metazone type="Suriname">
				<short>
					<standard>SRT</standard>
				</short>
			</metazone>
			<metazone type="Sverdlovsk">
				<short>
					<standard>SVET</standard>
					<daylight>SVEST</daylight>
				</short>
			</metazone>
			<metazone type="Syowa">
				<short>
					<standard>SYOT</standard>
				</short>
			</metazone>
			<metazone type="Tahiti">
				<short>
					<standard>TAHT</standard>
				</short>
			</metazone>
			<metazone type="Tajikistan">
				<short>
					<standard>TJT</standard>
				</short>
			</metazone>
			<metazone type="Tashkent">
				<short>
					<standard>TAST</standard>
					<daylight>TASST</daylight>
				</short>
			</metazone>
			<metazone type="Tbilisi">
				<short>
					<standard>TBIT</standard>
					<daylight>TBIST</daylight>
				</short>
			</metazone>
			<metazone type="Tokelau">
				<short>
					<standard>TKT</standard>
				</short>
			</metazone>
			<metazone type="Tonga">
				<short>
					<standard>TOT</standard>
					<daylight>TOST</daylight>
				</short>
			</metazone>
			<metazone type="Truk">
				<short>
					<standard>TRUT</standard>
				</short>
			</metazone>
			<metazone type="Turkey">
				<short>
					<standard>TRT</standard>
					<daylight>TRST</daylight>
				</short>
			</metazone>
			<metazone type="Turkmenistan">
				<short>
					<standard>TMT</standard>
					<daylight>TMST</daylight>
				</short>
			</metazone>
			<metazone type="Tuvalu">
				<short>
					<standard>TVT</standard>
				</short>
			</metazone>
			<metazone type="Uralsk">
				<short>
					<standard>URAT</standard>
					<daylight>URAST</daylight>
				</short>
			</metazone>
			<metazone type="Uruguay">
				<short>
					<standard>UYT</standard>
					<daylight>UYST</daylight>
				</short>
			</metazone>
			<metazone type="Urumqi">
				<short>
					<standard>URUT</standard>
				</short>
			</metazone>
			<metazone type="Uzbekistan">
				<short>
					<standard>UZT</standard>
					<daylight>UZST</daylight>
				</short>
			</metazone>
			<metazone type="Vanuatu">
				<short>
					<standard>VUT</standard>
					<daylight>VUST</daylight>
				</short>
			</metazone>
			<metazone type="Venezuela">
				<short>
					<standard>VET</standard>
				</short>
			</metazone>
			<metazone type="Vladivostok">
				<short>
					<standard>VLAT</standard>
					<daylight>VLAST</daylight>
				</short>
			</metazone>
			<metazone type="Volgograd">
				<short>
					<standard>VOLT</standard>
					<daylight>VOLST</daylight>
				</short>
			</metazone>
			<metazone type="Vostok">
				<short>
					<standard>VOST</standard>
				</short>
			</metazone>
			<metazone type="Wake">
				<short>
					<standard>WAKT</standard>
				</short>
			</metazone>
			<metazone type="Wallis">
				<short>
					<standard>WFT</standard>
				</short>
			</metazone>
			<metazone type="Yakutsk">
				<short>
					<standard>YAKT</standard>
					<daylight>YAKST</daylight>
				</short>
			</metazone>
			<metazone type="Yekaterinburg">
				<short>
					<standard>YEKT</standard>
					<daylight>YEKST</daylight>
				</short>
			</metazone>
			<metazone type="Yerevan">
				<short>
					<standard>YERT</standard>
					<daylight>YERST</daylight>
				</short>
			</metazone>
			<metazone type="Yukon">
				<short>
					<standard>YST</standard>
					<daylight>YDT</daylight>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencySpacing>
				<beforeCurrency>
					<currencyMatch>[:letter:]</currencyMatch>
					<surroundingMatch>[:digit:]</surroundingMatch>
					<insertBetween> </insertBetween>
				</beforeCurrency>
				<afterCurrency>
					<currencyMatch>[:letter:]</currencyMatch>
					<surroundingMatch>[:digit:]</surroundingMatch>
					<insertBetween> </insertBetween>
				</afterCurrency>
			</currencySpacing>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>BRL</displayName>
				<symbol>R$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>EUR</displayName>
				<symbol>€</symbol>
			</currency>
			<currency type="GBP">
				<displayName>GBP</displayName>
				<symbol>UK£</symbol>
			</currency>
			<currency type="INR">
				<displayName>INR</displayName>
				<symbol choice="true">0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="ITL">
				<displayName>ITL</displayName>
				<symbol>IT₤</symbol>
			</currency>
			<currency type="JPY">
				<displayName>JPY</displayName>
				<symbol>JP¥</symbol>
			</currency>
			<currency type="USD">
				<displayName>USD</displayName>
				<symbol>US$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} d</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} h</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} min</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} m</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} s</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} w</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} y</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���JJLocale/Data/mo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
    <identity>
        <version number="$Revision: 1.1 $"/>
        <generation date="$Date: 2008/06/02 20:30:10 $"/>
        <language type="mo"/>
    </identity>
    <alias source="ro_MD" path="//ldml"/>
</ldml>PKpG[�j%##Locale/Data/se_NO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="se"/>
		<territory type="NO"/>
	</identity>
</ldml>
PKpG[�Y��;�;Locale/Data/kok.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="kok"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">अफार</language>
			<language type="ab">अबखेज़ियन</language>
			<language type="af">अफ्रिकान्स</language>
			<language type="am">अमहारिक्</language>
			<language type="ar">अरेबिक्</language>
			<language type="as">असामी</language>
			<language type="ay">ऐमरा</language>
			<language type="az">अज़रबैजानी</language>
			<language type="ba">बष्किर</language>
			<language type="be">बैलोरुसियन्</language>
			<language type="bg">बल्गेरियन</language>
			<language type="bh">बीहारी</language>
			<language type="bi">बिसलमा</language>
			<language type="bn">बंगाली</language>
			<language type="bo">तिबेतियन</language>
			<language type="br">ब्रेटन</language>
			<language type="ca">कटलान</language>
			<language type="co">कोर्शियन</language>
			<language type="cs">ज़ेक्</language>
			<language type="cy">वेळ्ष्</language>
			<language type="da">डानिष</language>
			<language type="de">जर्मन</language>
			<language type="dz">भूटानी</language>
			<language type="el">ग्रीक्</language>
			<language type="en">आंग्ल</language>
			<language type="eo">इस्परान्टो</language>
			<language type="es">स्पानिष</language>
			<language type="et">इस्टोनियन्</language>
			<language type="eu">बास्क</language>
			<language type="fa">पर्षियन्</language>
			<language type="fi">फिन्निष्</language>
			<language type="fj">फिजी</language>
			<language type="fo">फेरोस्</language>
			<language type="fr">फ्रेन्च</language>
			<language type="fy">फ्रिशियन्</language>
			<language type="ga">ऐरिष</language>
			<language type="gd">स्काटस् गेलिक्</language>
			<language type="gl">गेलीशियन</language>
			<language type="gn">गौरानी</language>
			<language type="gu">गुजराती</language>
			<language type="ha">हौसा</language>
			<language type="he">हेब्रु</language>
			<language type="hi">हिन्दी</language>
			<language type="hr">क्रोयेषियन्</language>
			<language type="hu">हंगेरियन्</language>
			<language type="hy">आर्मीनियन्</language>
			<language type="ia">इन्टरलिंग्वा</language>
			<language type="id">इन्डोनेषियन</language>
			<language type="ie">इन्टरलिंग्</language>
			<language type="ik">इनूपेयाक्</language>
			<language type="is">आईस्लान्डिक</language>
			<language type="it">इटालियन</language>
			<language type="iu">इन्युकट्ट</language>
			<language type="ja">जापनीस्</language>
			<language type="jv">जावनीस्</language>
			<language type="ka">जार्जियन्</language>
			<language type="kk">कज़ख्</language>
			<language type="kl">ग्रीनलान्डिक</language>
			<language type="km">कंबोडियन</language>
			<language type="kn">कन्नडा</language>
			<language type="ko">कोरियन्</language>
			<language type="kok">कोंकणी</language>
			<language type="ks">कश्मीरी</language>
			<language type="ku">कुर्दिष</language>
			<language type="ky">किर्गिज़</language>
			<language type="la">लाटिन</language>
			<language type="ln">लिंगाला</language>
			<language type="lo">लाओतियन्</language>
			<language type="lt">लिथुआनियन्</language>
			<language type="lv">लाट्वियन् (लेट्टिष्)</language>
			<language type="mg">मलागसी</language>
			<language type="mi">माओरी</language>
			<language type="mk">मसीडोनियन्</language>
			<language type="ml">मळियाळम</language>
			<language type="mn">मंगोलियन्</language>
			<language type="mo">मोल्डावियन्</language>
			<language type="mr">मराठी</language>
			<language type="ms">मलय</language>
			<language type="mt">मालतीस्</language>
			<language type="my">बर्मीज़्</language>
			<language type="na">नौरो</language>
			<language type="ne">नेपाळी</language>
			<language type="nl">डच्</language>
			<language type="no">नोर्वेजियन</language>
			<language type="oc">ओसिटान्</language>
			<language type="om">ओरोमो (अफान)</language>
			<language type="or">ओरिया</language>
			<language type="pa">पंजाबी</language>
			<language type="pl">पोलिष</language>
			<language type="ps">पाष्टो (पुष्टो)</language>
			<language type="pt">पोर्चुगीज़्</language>
			<language type="qu">क्वेच्वा</language>
			<language type="rm">रहटो-रोमान्स्</language>
			<language type="rn">किरुन्दी</language>
			<language type="ro">रोमानियन्</language>
			<language type="ru">रष्यन्</language>
			<language type="rw">किन्यार्वान्डा</language>
			<language type="sa">संस्कृत</language>
			<language type="sd">सिंधी</language>
			<language type="sg">सांग्रो</language>
			<language type="sh">सेर्बो-क्रोयेषियन्</language>
			<language type="si">सिन्हलीस्</language>
			<language type="sk">स्लोवाक</language>
			<language type="sl">स्लोवेनियन्</language>
			<language type="sm">समोन</language>
			<language type="sn">शोना</language>
			<language type="so">सोमाळी</language>
			<language type="sq">आल्बेनियन्</language>
			<language type="sr">सेर्बियन्</language>
			<language type="ss">सिस्वाती</language>
			<language type="st">सेसोथो</language>
			<language type="su">सुंदनीस</language>
			<language type="sv">स्वीदीष</language>
			<language type="sw">स्वाहिली</language>
			<language type="ta">तमिळ</language>
			<language type="te">तेलुगू</language>
			<language type="tg">तजिक</language>
			<language type="th">थाई</language>
			<language type="ti">तिग्रिन्या</language>
			<language type="tk">तुर्कमन</language>
			<language type="tl">तगालोग</language>
			<language type="tn">सेत्स्वाना</language>
			<language type="to">तोंगा</language>
			<language type="tr">तुर्किष</language>
			<language type="ts">त्सोगा</language>
			<language type="tt">तटार</language>
			<language type="tw">त्वि</language>
			<language type="ug">उधूर</language>
			<language type="uk">युक्रेनियन्</language>
			<language type="ur">उर्दू</language>
			<language type="uz">उज़बेक</language>
			<language type="vi">वियत्नामीज़</language>
			<language type="vo">ओलापुक</language>
			<language type="wo">उलोफ़</language>
			<language type="xh">झ़ौसा</language>
			<language type="yi">इद्दिष्</language>
			<language type="yo">यूरुबा</language>
			<language type="za">झ्हुन्ग</language>
			<language type="zh">चीनीस्</language>
			<language type="zu">जुलू</language>
		</languages>
		<territories>
			<territory type="IN">भारत</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[़ ँ-ः ०-९ ॐ अ-ऍ ए-ऑ ओ-क {क़} ख {ख़} ग {ग़} घ-ज {ज़} झ-ड {ड़} ढ {ढ़} ण-न प फ {फ़} ब-य {य़} र ल ळ व-ह ऽ-ॅ े-ॉ ो-्]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">जानेवारी</month>
							<month type="2">फेबृवारी</month>
							<month type="3">मार्च</month>
							<month type="4">एप्रिल</month>
							<month type="5">मे</month>
							<month type="6">जून</month>
							<month type="7">जुलै</month>
							<month type="8">ओगस्ट</month>
							<month type="9">सेप्टेंबर</month>
							<month type="10">ओक्टोबर</month>
							<month type="11">नोव्हेंबर</month>
							<month type="12">डिसेंबर</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">जानेवारी</month>
							<month type="2">फेब्रुवारी</month>
							<month type="3">मार्च</month>
							<month type="4">एप्रिल</month>
							<month type="5">मे</month>
							<month type="6">जून</month>
							<month type="7">जुलै</month>
							<month type="8">ओगस्ट</month>
							<month type="9">सेप्टेंबर</month>
							<month type="10">ओक्टोबर</month>
							<month type="11">नोव्हेंबर</month>
							<month type="12">डिसेंबर</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">रवि</day>
							<day type="mon">सोम</day>
							<day type="tue">मंगळ</day>
							<day type="wed">बुध</day>
							<day type="thu">गुरु</day>
							<day type="fri">शुक्र</day>
							<day type="sat">शनि</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">आदित्यवार</day>
							<day type="mon">सोमवार</day>
							<day type="tue">मंगळार</day>
							<day type="wed">बुधवार</day>
							<day type="thu">गुरुवार</day>
							<day type="fri">शुक्रवार</day>
							<day type="sat">शनिवार</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>म.पू.</am>
				<pm>म.नं.</pm>
				<eras>
					<eraAbbr>
						<era type="0">क्रिस्तपूर्व</era>
						<era type="1">क्रिस्तशखा</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<metazone type="India">
				<long>
					<standard>भारतीय समय</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>रु</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[˳?0��Locale/Data/ar_OM.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="OM"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
</ldml>
PKpG[ꊙ�##Locale/Data/en_MH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="MH"/>
	</identity>
</ldml>
PKpG[΁e��Locale/Data/en_TT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.39 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="en"/>
		<territory type="TT"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[{�}�##Locale/Data/dz_BT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="dz"/>
		<territory type="BT"/>
	</identity>
</ldml>
PKpG[��3�##Locale/Data/om_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="om"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[}҆�GGLocale/Data/ts.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ts"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="cs">Xi Czech</language>
			<language type="da">Xi Danish</language>
			<language type="de">Xi Jarimani</language>
			<language type="el">Xi Giriki</language>
			<language type="en">Xi Nghezi</language>
			<language type="es">Xi spain</language>
			<language type="et">hi xi Estonia</language>
			<language type="fi">Xi Finnish</language>
			<language type="fr">Xi Furwa</language>
			<language type="he">XiHeberu</language>
			<language type="hu">hi xi Hungary</language>
			<language type="is">hi xi Iceland</language>
			<language type="it">Xi Ithali</language>
			<language type="ja">Xi Japani</language>
			<language type="ko">Xikorea</language>
			<language type="lt">hi xi Lithuania</language>
			<language type="lv">hi xi Latvia</language>
			<language type="nl">Xi bunu</language>
			<language type="no">Xi Norway</language>
			<language type="pl">Xi Polixi</language>
			<language type="pt">Putukezi</language>
			<language type="ro">hi xi Romania</language>
			<language type="ru">Xi Rhaxiya</language>
			<language type="sv">Xi Swiden</language>
			<language type="ts">Xitsonga</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Sun</month>
							<month type="2">Yan</month>
							<month type="3">Kul</month>
							<month type="4">Dzi</month>
							<month type="5">Mud</month>
							<month type="6">Kho</month>
							<month type="7">Maw</month>
							<month type="8">Mha</month>
							<month type="9">Ndz</month>
							<month type="10">Nhl</month>
							<month type="11">Huk</month>
							<month type="12">N'w</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Sunguti</month>
							<month type="2">Nyenyenyani</month>
							<month type="3">Nyenyankulu</month>
							<month type="4">Dzivamisoko</month>
							<month type="5">Mudyaxihi</month>
							<month type="6">Khotavuxika</month>
							<month type="7">Mawuwani</month>
							<month type="8">Mhawuri</month>
							<month type="9">Ndzhati</month>
							<month type="10">Nhlangula</month>
							<month type="11">Hukuri</month>
							<month type="12">N'wendzamhala</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mus</day>
							<day type="tue">Bir</day>
							<day type="wed">Har</day>
							<day type="thu">Ne</day>
							<day type="fri">Tlh</day>
							<day type="sat">Mug</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sonto</day>
							<day type="mon">Musumbhunuku</day>
							<day type="tue">Ravumbirhi</day>
							<day type="wed">Ravunharhu</day>
							<day type="thu">Ravumune</day>
							<day type="fri">Ravuntlhanu</day>
							<day type="sat">Mugqivela</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Kotara yo sungula</quarter>
							<quarter type="2">Kotara ya vumbirhi</quarter>
							<quarter type="3">Kotara ya vunharhu</quarter>
							<quarter type="4">Kotara ya vumune</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[v���,�,Locale/Data/pa.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.61 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="pa"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ab">ਅਬਖਾਜ਼ੀਅਨ</language>
			<language type="ace">ਅਚੀਨੀ</language>
			<language type="ach">ਅਕੋਲੀ</language>
			<language type="af">ਅਫ਼ਰੀਕੀ</language>
			<language type="apa">ਅਪਾਚੇ ਭਾਸ਼ਾ</language>
			<language type="ar">ਅਰਬੀ</language>
			<language type="as">ਅਸਾਮੀ</language>
			<language type="aus">ਆਸਟਰੇਲੀਅਨ ਭਾਸ਼ਾ</language>
			<language type="az">ਅਜ਼ੇਰਬੈਜਨਿ</language>
			<language type="bat">ਬੈਲਟਿਕ ਭਾਸ਼ਾ</language>
			<language type="be">ਬੇਲਾਰੂਸੀਅਨ</language>
			<language type="bn">ਬੰਗਾਲੀ</language>
			<language type="da">ਡੈਨਿਸ਼</language>
			<language type="de">ਜਰਮਨ</language>
			<language type="en">ਅੰਗਰੇਜ਼ੀ</language>
			<language type="eo">ਏਸਪਰੇਂਟੋ</language>
			<language type="es">ਸਪੇਨਿਸ਼</language>
			<language type="fi">ਫਿਨਿਸ਼</language>
			<language type="fr">ਫਰੈਂਚ</language>
			<language type="gu">ਗੁਜਰਾਤੀ</language>
			<language type="hi">ਹਿੰਦੀ</language>
			<language type="id">ਇੰਡੋਨੇਸ਼ੀਆਈ</language>
			<language type="it">ਇਤਾਲਵੀ</language>
			<language type="ja">ਜਾਪਾਨੀ</language>
			<language type="mk">ਮੈਕੇਡੋਨੀਅਨ</language>
			<language type="nl">ਡੱਚ</language>
			<language type="no">ਨਾਰਵੇਜੀਅਨ</language>
			<language type="pa">ਪੰਜਾਬੀ</language>
			<language type="pt">ਪੋਰਤੂਗੂਈਸ</language>
			<language type="sv">ਸਵੈਡਿਸ਼</language>
			<language type="ta">ਤਾਮਿਲ</language>
			<language type="te">ਤੇਲਗੂ</language>
			<language type="th">ਥਾਈ</language>
			<language type="tw">ਤ੍ਵਿ</language>
			<language type="ug">ਉਇਘੁਰ</language>
			<language type="und">und</language>
		</languages>
		<scripts>
			<script type="Deva">ਦੇਵਨਾਗਰੀ</script>
			<script type="Guru">ਗੁਰਮੁਖੀ</script>
			<script type="Zxxx">Zxxx</script>
			<script type="Zzzz">Zzzz</script>
		</scripts>
		<territories>
			<territory type="IN">ਭਾਰਤ</territory>
			<territory type="TO">TO</territory>
			<territory type="ZZ">ਅਣਜਾਣ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[਼ ੰ ੱ ੦-੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ {ਸ਼} ਹ ਕ ਖ {ਖ਼} ਗ {ਗ਼} ਘ-ਜ {ਜ਼} ਝ-ਨ ਪ ਫ {ਫ਼} ਬ-ਰ ਲ ਵ ੜ ਾ-ੂ ੇ ੈ ੋ-੍]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ਁ-ਃ {ਲ਼}]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ਜਨਵਰੀ</month>
							<month type="2">ਫ਼ਰਵਰੀ</month>
							<month type="3">ਮਾਰਚ</month>
							<month type="4">ਅਪ੍ਰੈਲ</month>
							<month type="5">ਮਈ</month>
							<month type="6">ਜੂਨ</month>
							<month type="7">ਜੁਲਾਈ</month>
							<month type="8">ਅਗਸਤ</month>
							<month type="9">ਸਤੰਬਰ</month>
							<month type="10">ਅਕਤੂਬਰ</month>
							<month type="11">ਨਵੰਬਰ</month>
							<month type="12">ਦਸੰਬਰ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ਜਨਵਰੀ</month>
							<month type="2">ਫ਼ਰਵਰੀ</month>
							<month type="3">ਮਾਰਚ</month>
							<month type="4">ਅਪ੍ਰੈਲ</month>
							<month type="5">ਮਈ</month>
							<month type="6">ਜੂਨ</month>
							<month type="7">ਜੁਲਾਈ</month>
							<month type="8">ਅਗਸਤ</month>
							<month type="9">ਸਤੰਬਰ</month>
							<month type="10">ਅਕਤੂਬਰ</month>
							<month type="11">ਨਵੰਬਰ</month>
							<month type="12">ਦਸੰਬਰ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ਜ</month>
							<month type="2">ਫ</month>
							<month type="3">ਮਾ</month>
							<month type="4">ਅ</month>
							<month type="5">ਮ</month>
							<month type="6">ਜੂ</month>
							<month type="7">ਜੁ</month>
							<month type="8">ਅ</month>
							<month type="9">ਸ</month>
							<month type="10">ਅ</month>
							<month type="11">ਨ</month>
							<month type="12">ਦ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ਐਤ.</day>
							<day type="mon">ਸੋਮ.</day>
							<day type="tue">ਮੰਗਲ.</day>
							<day type="wed">ਬੁਧ.</day>
							<day type="thu">ਵੀਰ.</day>
							<day type="fri">ਸ਼ੁਕਰ.</day>
							<day type="sat">ਸ਼ਨੀ.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ਐਤਵਾਰ</day>
							<day type="mon">ਸੋਮਵਾਰ</day>
							<day type="tue">ਮੰਗਲਵਾਰ</day>
							<day type="wed">ਬੁਧਵਾਰ</day>
							<day type="thu">ਵੀਰਵਾਰ</day>
							<day type="fri">ਸ਼ੁੱਕਰਵਾਰ</day>
							<day type="sat">ਸ਼ਨੀਚਰਵਾਰ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">ਐ</day>
							<day type="mon">ਸੋ</day>
							<day type="tue">ਮੰ</day>
							<day type="wed">ਬੁੱ</day>
							<day type="thu">ਵੀ</day>
							<day type="fri">ਸ਼ੁੱ</day>
							<day type="sat">ਸ਼</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ਪਹਿਲਾਂ ਚੌਥਾਈ</quarter>
							<quarter type="2">ਦੂਜਾ ਚੌਥਾਈ</quarter>
							<quarter type="3">ਤੀਜਾ ਚੌਥਾਈ</quarter>
							<quarter type="4">ਚੌਥਾ ਚੌਥਾਈ</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ਸਵੇਰੇ</am>
				<pm>ਸ਼ਾਮ</pm>
				<eras>
					<eraNames>
						<era type="0">ਈਸਾਪੂਰਵ</era>
						<era type="1">ਸੰਨ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmmss">HH:mm:ss 	13:25:59</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="year">
						<displayName>ਸਾਲ</displayName>
					</field>
					<field type="month">
						<displayName>ਮਹੀਨਾ</displayName>
					</field>
					<field type="week">
						<displayName>ਹਫ਼ਤਾ</displayName>
					</field>
					<field type="day">
						<displayName>ਦਿਨ</displayName>
						<relative type="0">ਅੱਜ</relative>
						<relative type="1">ਭਲਕ</relative>
						<relative type="2">ਭਲਕ</relative>
						<relative type="3">ਤਿੰਨ ਦਿਨ ਬਾਅਦ</relative>
						<relative type="-2">ਪਰਸੋਂ</relative>
						<relative type="-3">ਤਿੰਨ ਦਿਨ ਪਹਿਲਾਂ</relative>
					</field>
					<field type="weekday">
						<displayName>ਹਫ਼ਤੇ ਦਾ ਦਿਨ</displayName>
					</field>
					<field type="hour">
						<displayName>ਘੰਟਾ</displayName>
					</field>
					<field type="minute">
						<displayName>ਮਿੰਟ</displayName>
					</field>
					<field type="zone">
						<displayName>ਖੇਤਰ</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<nativeZeroDigit>੦</nativeZeroDigit>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AFN">
				<displayName>ਅਫ਼ਗਾਨੀ</displayName>
			</currency>
			<currency type="EUR">
				<displayName>ਯੂਰੋ</displayName>
			</currency>
			<currency type="INR">
				<displayName>ਰੁਪਿਯ</displayName>
				<symbol>ਰੁ.</symbol>
			</currency>
			<currency type="XXX">
				<displayName>ਅਣਜਾਣ</displayName>
				<symbol>ਅਣਜਾਣ</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ਹਾਂ</yesstr>
			<nostr>ਨਹੀਂ</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�
>::Locale/Data/zh_Hans_MO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<script type="Hans"/>
		<territory type="MO"/>
	</identity>
</ldml>
PKpG[{=P{RRLocale/Data/uz_Arab.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.28 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="uz"/>
		<script type="Arab"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="fa">دری</language>
			<language type="ps">پشتو</language>
			<language type="uz">اۉزبېک</language>
		</languages>
		<territories>
			<territory type="AF">افغانستان</territory>
		</territories>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ً-ْ ٔ ٰ ء-ؤ ئ-ب پ ة-ث ټ ج چ ح خ ځ څ د ذ ډ ر ز ړ ږ ژ س ش ښ ص-غ ف ق ک ګ گ ل-ن ڼ ه و ۇ ۉ ي ی ۍ ې]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">جنو</month>
							<month type="2">فبر</month>
							<month type="3">مار</month>
							<month type="4">اپر</month>
							<month type="5">مـی</month>
							<month type="6">جون</month>
							<month type="7">جول</month>
							<month type="8">اگس</month>
							<month type="9">سپت</month>
							<month type="10">اکت</month>
							<month type="11">نوم</month>
							<month type="12">دسم</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">جنوری</month>
							<month type="2">فبروری</month>
							<month type="3">مارچ</month>
							<month type="4">اپریل</month>
							<month type="5">می</month>
							<month type="6">جون</month>
							<month type="7">جولای</month>
							<month type="8">اگست</month>
							<month type="9">سپتمبر</month>
							<month type="10">اکتوبر</month>
							<month type="11">نومبر</month>
							<month type="12">دسمبر</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ی.</day>
							<day type="mon">د.</day>
							<day type="tue">س.</day>
							<day type="wed">چ.</day>
							<day type="thu">پ.</day>
							<day type="fri">ج.</day>
							<day type="sat">ش.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">یکشنبه</day>
							<day type="mon">دوشنبه</day>
							<day type="tue">سه‌شنبه</day>
							<day type="wed">چهارشنبه</day>
							<day type="thu">پنجشنبه</day>
							<day type="fri">جمعه</day>
							<day type="sat">شنبه</day>
						</dayWidth>
					</dayContext>
				</days>
				<eras>
					<eraAbbr>
						<era type="0">ق.م.</era>
						<era type="1">م.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy نچی ییل d نچی MMMM EEEE کونی</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d نچی MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss (v)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss (z)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMd">d نچی MMMM</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>٫</decimal>
			<group>٬</group>
			<percentSign>٪</percentSign>
			<nativeZeroDigit>۰</nativeZeroDigit>
			<minusSign>−</minusSign>
			<exponential>×۱۰^</exponential>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AFN">
				<displayName>افغانی</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[QT.##Locale/Data/lt_LT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="lt"/>
		<territory type="LT"/>
	</identity>
</ldml>
PKpG[��/:/:Locale/Data/is.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.88 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="is"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afár</language>
			<language type="ab">abkasíska</language>
			<language type="ace">akkíska</language>
			<language type="ach">akólí</language>
			<language type="ada">adangme</language>
			<language type="ady">adýge</language>
			<language type="ae">avestíska</language>
			<language type="af">afríkanska</language>
			<language type="afa">afróasísk mál (önnur)</language>
			<language type="afh">afríhílí</language>
			<language type="ain">aínu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadíska</language>
			<language type="ale">aleúska</language>
			<language type="alg">algonkvínsk mál</language>
			<language type="alt">suðuraltaíska</language>
			<language type="am">amharíska</language>
			<language type="an">aragonska</language>
			<language type="ang">fornenska (um 450-1100)</language>
			<language type="anp">angíka</language>
			<language type="apa">apatsjamál</language>
			<language type="ar">arabíska</language>
			<language type="arc">arameíska</language>
			<language type="arn">arákaníska</language>
			<language type="arp">arapahó</language>
			<language type="art">alþjóðamál (önnur)</language>
			<language type="arw">aravakska</language>
			<language type="as">assamska</language>
			<language type="ast">astúríska</language>
			<language type="ath">atapaskísk mál</language>
			<language type="aus">áströlsk mál</language>
			<language type="av">avaríska</language>
			<language type="awa">avadí</language>
			<language type="ay">aímara</language>
			<language type="az">aserska</language>
			<language type="ba">baskír</language>
			<language type="bad">banda</language>
			<language type="bai">bamílekemál</language>
			<language type="bal">balúkí</language>
			<language type="ban">balíska</language>
			<language type="bas">basa</language>
			<language type="bat">baltnesk mál (önnur)</language>
			<language type="be">hvítrússneska</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berbamál</language>
			<language type="bg">búlgarska</language>
			<language type="bh">bíharí</language>
			<language type="bho">bojpúrí</language>
			<language type="bi">bíslama</language>
			<language type="bik">bíkol</language>
			<language type="bin">bíní</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalska</language>
			<language type="bnt">bantúmál</language>
			<language type="bo">tíbeska</language>
			<language type="br">bretónska</language>
			<language type="bra">braí</language>
			<language type="bs">bosníska</language>
			<language type="btk">batak</language>
			<language type="bua">búríat</language>
			<language type="bug">búgíska</language>
			<language type="byn">blín</language>
			<language type="ca">katalónska</language>
			<language type="cad">kaddó</language>
			<language type="cai">Indíánamál Mið-Ameríku (önnur)</language>
			<language type="car">karíbamál</language>
			<language type="cau">kákasusmál (önnur)</language>
			<language type="cch">atsam</language>
			<language type="ce">tsjetsjenska</language>
			<language type="ceb">kebúanó</language>
			<language type="cel">keltnesk (önnur)</language>
			<language type="ch">kamorró</language>
			<language type="chb">síbsja</language>
			<language type="chg">sjagataí</language>
			<language type="chk">sjúkíska</language>
			<language type="chm">marí</language>
			<language type="chn">sínúk</language>
			<language type="cho">sjoktá</language>
			<language type="chp">sípevíska</language>
			<language type="chr">sjerókí</language>
			<language type="chy">sjeyen</language>
			<language type="cmc">kamísk mál</language>
			<language type="co">korsíska</language>
			<language type="cop">koptíska</language>
			<language type="cpe">kreól- og pidginmál á enskum grunni</language>
			<language type="cpf">kreól- og pidginmál á frönskum grunni</language>
			<language type="cpp">kreól- og pidginmál á portúgölskum grunni</language>
			<language type="cr">krí</language>
			<language type="crh">krímtyrkneska</language>
			<language type="crp">kreól- og pidginmál (önnur)</language>
			<language type="cs">tékkneska</language>
			<language type="csb">kasúbíska</language>
			<language type="cu">kirkjuslavneska</language>
			<language type="cus">kúsitísk mál (önnur)</language>
			<language type="cv">sjúvas</language>
			<language type="cy">velska</language>
			<language type="da">danska</language>
			<language type="dak">dakóta</language>
			<language type="dar">dargva</language>
			<language type="day">dajak</language>
			<language type="de">þýska</language>
			<language type="de_AT">austurrísk þýska</language>
			<language type="de_CH">svissnesk háþýska</language>
			<language type="del">delaver</language>
			<language type="den">slav</language>
			<language type="dgr">dogríb</language>
			<language type="din">dinka</language>
			<language type="doi">dogrí</language>
			<language type="dra">dravidísk mál (önnur)</language>
			<language type="dsb">lágsorbneska</language>
			<language type="dua">dúala</language>
			<language type="dum">miðhollenska (um 1050-1350)</language>
			<language type="dv">dívehí</language>
			<language type="dyu">djúla</language>
			<language type="dz">dsongka</language>
			<language type="ee">eve</language>
			<language type="efi">efík</language>
			<language type="egy">fornegypska</language>
			<language type="eka">ekajúk</language>
			<language type="el">nýgríska (1453-)</language>
			<language type="elx">elamít</language>
			<language type="en">enska</language>
			<language type="en_AU">áströlsk enska</language>
			<language type="en_CA">kanadísk enska</language>
			<language type="en_GB">bresk enska</language>
			<language type="en_US">bandarísk enska</language>
			<language type="enm">miðenska (1100-1500)</language>
			<language type="eo">esperantó</language>
			<language type="es">spænska</language>
			<language type="es_419">latnesk-amerísk spænska</language>
			<language type="es_ES">spænsk spænska</language>
			<language type="et">eistneska</language>
			<language type="eu">baskneska</language>
			<language type="ewo">evondó</language>
			<language type="fa">persneska</language>
			<language type="fan">fang</language>
			<language type="fat">fantí</language>
			<language type="ff">fúla</language>
			<language type="fi">finnska</language>
			<language type="fil">filipínska</language>
			<language type="fiu">finnskúgrísk mál (önnur)</language>
			<language type="fj">fídjeyska</language>
			<language type="fo">færeyska</language>
			<language type="fon">fón</language>
			<language type="fr">franska</language>
			<language type="fr_CA">kanadísk franska</language>
			<language type="fr_CH">svissnesk franska</language>
			<language type="frm">miðfranska (um 1400-1600)</language>
			<language type="fro">fornfranska (842 - um 1400)</language>
			<language type="frr">norðurfrísneska</language>
			<language type="frs">austurfrísneska</language>
			<language type="fur">fríúlska</language>
			<language type="fy">frísneska</language>
			<language type="ga">írska</language>
			<language type="gaa">ga</language>
			<language type="gay">gajó</language>
			<language type="gba">gbaja</language>
			<language type="gd">skosk gelíska</language>
			<language type="gem">germönsk mál (önnur)</language>
			<language type="gez">gís</language>
			<language type="gil">gilberska</language>
			<language type="gl">gallegska</language>
			<language type="gmh">miðháþýska (um 1050-1500</language>
			<language type="gn">gvaraní</language>
			<language type="goh">fornháþýska (um 750-1050)</language>
			<language type="gon">gondí</language>
			<language type="gor">gorontaló</language>
			<language type="got">gotneska</language>
			<language type="grb">gerbó</language>
			<language type="grc">forngríska (til 1453)</language>
			<language type="gsw">svissnesk þýska</language>
			<language type="gu">gújaratí</language>
			<language type="gv">manx</language>
			<language type="gwi">gvísín</language>
			<language type="ha">hása</language>
			<language type="hai">haída</language>
			<language type="haw">havaíska</language>
			<language type="he">hebreska</language>
			<language type="hi">hindí</language>
			<language type="hil">híligaínon</language>
			<language type="him">hímasjalí</language>
			<language type="hit">hettitíska</language>
			<language type="hmn">hmong</language>
			<language type="ho">hírímótú</language>
			<language type="hr">króatíska</language>
			<language type="hsb">hásorbneska</language>
			<language type="ht">haítíska</language>
			<language type="hu">ungverska</language>
			<language type="hup">húpa</language>
			<language type="hy">armenska</language>
			<language type="hz">hereró</language>
			<language type="ia">interlingva</language>
			<language type="iba">íban</language>
			<language type="id">indónesíska</language>
			<language type="ie">interlingve</language>
			<language type="ig">ígbó</language>
			<language type="ii">sísúanjí</language>
			<language type="ijo">íjó</language>
			<language type="ik">ínúpíak</language>
			<language type="ilo">ílokó</language>
			<language type="inc">indversk mál (önnur)</language>
			<language type="ine">indóevrópsk mál (önnur)</language>
			<language type="inh">ingús</language>
			<language type="io">ídó</language>
			<language type="ira">íranska</language>
			<language type="iro">írókesk mál</language>
			<language type="is">íslenska</language>
			<language type="it">ítalska</language>
			<language type="iu">inúktitút</language>
			<language type="ja">japanska</language>
			<language type="jbo">lojban</language>
			<language type="jpr">gyðingapersneska</language>
			<language type="jrb">gyðingaarabíska</language>
			<language type="jv">javanska</language>
			<language type="ka">georgíska</language>
			<language type="kaa">karakalpak</language>
			<language type="kab">kabíle</language>
			<language type="kac">kasín</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kaví</language>
			<language type="kbd">kabardíska</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongó</language>
			<language type="kha">kasí</language>
			<language type="khi">koímál (önnur)</language>
			<language type="kho">kotaska</language>
			<language type="ki">kíkújú</language>
			<language type="kj">kúanjama</language>
			<language type="kk">kasakska</language>
			<language type="kl">grænlenska</language>
			<language type="km">kmer</language>
			<language type="kmb">kimbúndú</language>
			<language type="kn">kannada</language>
			<language type="ko">kóreska</language>
			<language type="kok">konkaní</language>
			<language type="kos">kosraska</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanúrí</language>
			<language type="krc">karasaíbalkar</language>
			<language type="krl">karélska</language>
			<language type="kro">krú</language>
			<language type="kru">kúrúk</language>
			<language type="ks">kasmírska</language>
			<language type="ku">kúrdneska</language>
			<language type="kum">kúmík</language>
			<language type="kut">kútenaí</language>
			<language type="kv">komíska</language>
			<language type="kw">korníska</language>
			<language type="ky">kirgiska</language>
			<language type="la">latína</language>
			<language type="lad">ladínska</language>
			<language type="lah">landa</language>
			<language type="lam">lamba</language>
			<language type="lb">lúxemborgíska</language>
			<language type="lez">lesgíska</language>
			<language type="lg">ganda</language>
			<language type="li">limbúrgíska</language>
			<language type="ln">lingala</language>
			<language type="lo">laó</language>
			<language type="lol">mongó</language>
			<language type="loz">losí</language>
			<language type="lt">litháíska</language>
			<language type="lu">lúbakatanga</language>
			<language type="lua">lúbalúlúa</language>
			<language type="lui">lúisenó</language>
			<language type="lun">lúnda</language>
			<language type="luo">lúó</language>
			<language type="lus">lúsaí</language>
			<language type="lv">lettneska</language>
			<language type="mad">madúrska</language>
			<language type="mag">magahí</language>
			<language type="mai">maítílí</language>
			<language type="mak">makasar</language>
			<language type="man">mandingó</language>
			<language type="map">ástrónesíska</language>
			<language type="mas">masaí</language>
			<language type="mdf">moksa</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malagasíska</language>
			<language type="mga">miðírska (900-1200)</language>
			<language type="mh">marshallska</language>
			<language type="mi">maórí</language>
			<language type="mic">mikmak</language>
			<language type="min">mínangkabá</language>
			<language type="mis">ýmis mál</language>
			<language type="mk">makedónska</language>
			<language type="mkh">monkmermál (önnur)</language>
			<language type="ml">malajalam</language>
			<language type="mn">mongólska</language>
			<language type="mnc">mansjú</language>
			<language type="mni">manípúrí</language>
			<language type="mno">manóbómál</language>
			<language type="mo">moldóvska</language>
			<language type="moh">móhíska</language>
			<language type="mos">mossí</language>
			<language type="mr">maratí</language>
			<language type="ms">malaíska</language>
			<language type="mt">maltneska</language>
			<language type="mul">margvísleg mál</language>
			<language type="mun">múndamál</language>
			<language type="mus">krík</language>
			<language type="mwl">mirandesíska</language>
			<language type="mwr">marvarí</language>
			<language type="my">burmneska</language>
			<language type="myn">majamál</language>
			<language type="myv">ersja</language>
			<language type="na">nárúska</language>
			<language type="nah">nahúatl</language>
			<language type="nai">Indíánamál Norður-Ameríku (önnur)</language>
			<language type="nap">napólíska</language>
			<language type="nb">norskt bókmál</language>
			<language type="nd">norðurndebele</language>
			<language type="nds">Lágþýska; Lágsaxneska</language>
			<language type="ne">nepalska</language>
			<language type="new">nevarí</language>
			<language type="ng">ndonga</language>
			<language type="nia">nías</language>
			<language type="nic">nígerkordófanmál (önnur)</language>
			<language type="niu">níveska</language>
			<language type="nl">hollenska</language>
			<language type="nl_BE">flæmska</language>
			<language type="nn">nýnorska</language>
			<language type="no">norska</language>
			<language type="nog">nógaí</language>
			<language type="non">norræna</language>
			<language type="nqo">nkå</language>
			<language type="nr">suðurndebele</language>
			<language type="nso">norðursótó</language>
			<language type="nub">núbísk mál</language>
			<language type="nv">navahó</language>
			<language type="nwc">klassisk nevarí</language>
			<language type="ny">Njanja; Sísjeva; Sjeva</language>
			<language type="nym">njamvesí</language>
			<language type="nyn">njankóle</language>
			<language type="nyo">njóró</language>
			<language type="nzi">nsíma</language>
			<language type="oc">Okkitíska (eftir 1500); Próvensalska</language>
			<language type="oj">ojibva</language>
			<language type="om">órómó</language>
			<language type="or">óría</language>
			<language type="os">ossetíska</language>
			<language type="osa">ósage</language>
			<language type="ota">tyrkneska, ottóman (1500-1928)</language>
			<language type="oto">ótommál</language>
			<language type="pa">púnjabí</language>
			<language type="paa">papúsk mál (önnur)</language>
			<language type="pag">pangasínmál</language>
			<language type="pal">palaví</language>
			<language type="pam">pampanga</language>
			<language type="pap">papíamentó</language>
			<language type="pau">paláska</language>
			<language type="peo">fornpersneska</language>
			<language type="phi">filippseysk mál (önnur)</language>
			<language type="phn">fönikíska</language>
			<language type="pi">palí</language>
			<language type="pl">pólska</language>
			<language type="pon">ponpeiska</language>
			<language type="pra">prakrítmál</language>
			<language type="pro">fornpróvensalska (til 1500)</language>
			<language type="ps">pastú</language>
			<language type="pt">portúgalska</language>
			<language type="pt_BR">brasílísk portúgalska</language>
			<language type="pt_PT">íberísk portúgalska</language>
			<language type="qu">kvesjúa</language>
			<language type="raj">rajastaní</language>
			<language type="rap">rapanúí</language>
			<language type="rar">rarótongska</language>
			<language type="rm">retórómanska</language>
			<language type="rn">rúndí</language>
			<language type="ro">rúmenska</language>
			<language type="roa">rómönsk mál (önnur)</language>
			<language type="rom">romaní</language>
			<language type="root">rót</language>
			<language type="ru">rússneska</language>
			<language type="rup">arúmenska</language>
			<language type="rw">kínjarvanda</language>
			<language type="sa">sanskrít</language>
			<language type="sad">sandave</language>
			<language type="sah">jakút</language>
			<language type="sai">Indíánamál Suður-Ameríku (önnur)</language>
			<language type="sal">salísmál</language>
			<language type="sam">samversk arameíska</language>
			<language type="sas">sasak</language>
			<language type="sat">santalí</language>
			<language type="sc">sardínska</language>
			<language type="scn">sikileyska</language>
			<language type="sco">skoska</language>
			<language type="sd">sindí</language>
			<language type="se">norðursamíska</language>
			<language type="sel">selkúp</language>
			<language type="sem">semísk mál (önnur)</language>
			<language type="sg">sangó</language>
			<language type="sga">fornírska (til 900)</language>
			<language type="sgn">táknmál</language>
			<language type="sh">serbókróatíska</language>
			<language type="shn">sjan</language>
			<language type="si">singalesíska</language>
			<language type="sid">sídamó</language>
			<language type="sio">síúmál</language>
			<language type="sit">sínótíbesk mál</language>
			<language type="sk">slóvakíska</language>
			<language type="sl">slóvenska</language>
			<language type="sla">slavnesk mál (önnur)</language>
			<language type="sm">samóska</language>
			<language type="sma">suðursamíska</language>
			<language type="smi">samísk mál (önnur)</language>
			<language type="smj">lúlesamíska</language>
			<language type="smn">enaresamíska</language>
			<language type="sms">skoltesamíska</language>
			<language type="sn">shóna</language>
			<language type="snk">sóninke</language>
			<language type="so">sómalska</language>
			<language type="sog">sogdíen</language>
			<language type="son">songhaí</language>
			<language type="sq">albanska</language>
			<language type="sr">serbneska</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">svatí</language>
			<language type="ssa">nílósaharamál (önnur)</language>
			<language type="st">suðursótó</language>
			<language type="su">súndanska</language>
			<language type="suk">súkúma</language>
			<language type="sus">súsú</language>
			<language type="sux">súmerska</language>
			<language type="sv">sænska</language>
			<language type="sw">svahílí</language>
			<language type="syc">klassisk sýrlenska</language>
			<language type="syr">sýrlenska</language>
			<language type="ta">tamílska</language>
			<language type="tai">taímál (önnur)</language>
			<language type="te">telúgú</language>
			<language type="tem">tímne</language>
			<language type="ter">terenó</language>
			<language type="tet">tetúm</language>
			<language type="tg">tadsjikska</language>
			<language type="th">taílenska</language>
			<language type="ti">tígrinja</language>
			<language type="tig">tígre</language>
			<language type="tiv">tív</language>
			<language type="tk">túrkmenska</language>
			<language type="tkl">tókeláska</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingónska</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamasjek</language>
			<language type="tn">tsúana</language>
			<language type="to">Tongverska (Tongaeyjar)</language>
			<language type="tog">Tongverska (Nyasa)</language>
			<language type="tpi">tokpisin</language>
			<language type="tr">tyrkneska</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimsíska</language>
			<language type="tt">tatarska</language>
			<language type="tum">túmbúka</language>
			<language type="tup">túpímál</language>
			<language type="tut">altaísk mál (önnur)</language>
			<language type="tvl">túvalúska</language>
			<language type="tw">tví</language>
			<language type="ty">tahítíska</language>
			<language type="tyv">túvínska</language>
			<language type="udm">údmúrt</language>
			<language type="ug">úígúr</language>
			<language type="uga">úgarítíska</language>
			<language type="uk">úkraínska</language>
			<language type="umb">úmbúndú</language>
			<language type="und">óljóst</language>
			<language type="ur">úrdú</language>
			<language type="uz">úsbekska</language>
			<language type="vai">vaí</language>
			<language type="ve">venda</language>
			<language type="vi">víetnamska</language>
			<language type="vo">volapyk</language>
			<language type="vot">votíska</language>
			<language type="wa">vallónska</language>
			<language type="wak">vakasmál</language>
			<language type="wal">valamó</language>
			<language type="war">varaí</language>
			<language type="was">vasjó</language>
			<language type="wen">sorbnesk mál</language>
			<language type="wo">volof</language>
			<language type="xal">kalmúkska</language>
			<language type="xh">sósa</language>
			<language type="yao">jaó</language>
			<language type="yap">japíska</language>
			<language type="yi">jiddíska</language>
			<language type="yo">jórúba</language>
			<language type="ypk">júpísk mál</language>
			<language type="za">súang</language>
			<language type="zap">sapótek</language>
			<language type="zbl">blisstákn</language>
			<language type="zen">senaga</language>
			<language type="zh">kínverska</language>
			<language type="zh_Hans">kínverska (einfölduð)</language>
			<language type="zh_Hant">kínverska (hefðbundin)</language>
			<language type="znd">sande</language>
			<language type="zu">súlú</language>
			<language type="zun">súní</language>
			<language type="zxx">ekkert tungutengt efni</language>
			<language type="zza">zázá</language>
		</languages>
		<scripts>
			<script type="Arab">arabísk</script>
			<script type="Cans">Cans</script>
			<script type="Cyrl">kyrillísk</script>
			<script type="Ethi">eþíópísk</script>
			<script type="Geor">georgrísk</script>
			<script type="Grek">grísk</script>
			<script type="Hang">hangul</script>
			<script type="Hani">kínversk</script>
			<script type="Hans">einfaldað han</script>
			<script type="Hant">hefðbundið han</script>
			<script type="Hebr">hebresk</script>
			<script type="Hira">hiragana</script>
			<script type="Hrkt">katakana eða hiragana</script>
			<script type="Jpan">japönsk</script>
			<script type="Kana">katakana</script>
			<script type="Kore">kórönsk</script>
			<script type="Latn">latnesk</script>
			<script type="Qaai">erfðir</script>
			<script type="Zxxx">Óskrifað</script>
			<script type="Zzzz">Óþekkt eða ógilt letur</script>
		</scripts>
		<territories>
			<territory type="001">heimur</territory>
			<territory type="002">Afríka</territory>
			<territory type="003">Norður-Ameríka</territory>
			<territory type="005">Suður-Ameríka</territory>
			<territory type="009">Eyjaálfa</territory>
			<territory type="011">Vestur-Afríka</territory>
			<territory type="013">Mið-Ameríka</territory>
			<territory type="014">Austur-Afríka</territory>
			<territory type="015">Norður-Afríka</territory>
			<territory type="017">Mið-Afríka</territory>
			<territory type="018">Suðurhluti Afríku</territory>
			<territory type="019">Ameríka</territory>
			<territory type="021">Ameríka norðan Mexikó</territory>
			<territory type="029">Karíbahaf</territory>
			<territory type="030">Austur-Asía</territory>
			<territory type="034">suðurhluti Asíu</territory>
			<territory type="035">Suðaustur-Asía</territory>
			<territory type="039">Suður-Evrópa</territory>
			<territory type="053">Ástralía og Nýja-Sjáland</territory>
			<territory type="054">Melanesía</territory>
			<territory type="057">Míkrónesía</territory>
			<territory type="061">Pólýnesía</territory>
			<territory type="062">Syðri-Mið-Asía</territory>
			<territory type="142">Asía</territory>
			<territory type="143">Mið-Asía</territory>
			<territory type="145">vestur-Asía</territory>
			<territory type="150">Evrópa</territory>
			<territory type="151">Austur-Evrópa</territory>
			<territory type="154">Norður-Evrópa</territory>
			<territory type="155">vestur-Evrópa</territory>
			<territory type="172">Samveldi sjálfstæðra ríkja</territory>
			<territory type="419">Latín-Ameríka og Karíbahaf</territory>
			<territory type="830">Ermasundseyjar</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Sameinuðu arabísku furstadæmin</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antígva og Barbúda</territory>
			<territory type="AI">Angvilla</territory>
			<territory type="AL">Albanía</territory>
			<territory type="AM">Armenía</territory>
			<territory type="AN">Hollensku Antillur</territory>
			<territory type="AO">Angóla</territory>
			<territory type="AQ">Suðurskautslandið</territory>
			<territory type="AR">Argentína</territory>
			<territory type="AS">Bandaríska Samóa</territory>
			<territory type="AT">Austurríki</territory>
			<territory type="AU">Ástralía</territory>
			<territory type="AW">Arúba</territory>
			<territory type="AX">Álandseyjar</territory>
			<territory type="AZ">Aserbaídsjan</territory>
			<territory type="BA">Bosnía og Hersegóvína</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladess</territory>
			<territory type="BE">Belgía</territory>
			<territory type="BF">Búrkína Fasó</territory>
			<territory type="BG">Búlgaría</territory>
			<territory type="BH">Barein</territory>
			<territory type="BI">Búrúndí</territory>
			<territory type="BJ">Benín</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermúdaeyjar</territory>
			<territory type="BN">Brúnei</territory>
			<territory type="BO">Bólivía</territory>
			<territory type="BR">Brasilía</territory>
			<territory type="BS">Bahamaeyjar</territory>
			<territory type="BT">Bútan</territory>
			<territory type="BV">Bouveteyja</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Hvíta-Rússland</territory>
			<territory type="BZ">Belís</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kókoseyjar</territory>
			<territory type="CD">Austur-Kongó</territory>
			<territory type="CF">Mið-Afríkulýðveldið</territory>
			<territory type="CG">Vestur-Kongó</territory>
			<territory type="CH">Sviss</territory>
			<territory type="CI">Fílabeinsströndin</territory>
			<territory type="CK">Cookseyjar</territory>
			<territory type="CL">Chíle</territory>
			<territory type="CM">Kamerún</territory>
			<territory type="CN">Kína</territory>
			<territory type="CO">Kólumbía</territory>
			<territory type="CR">Kostaríka</territory>
			<territory type="CS">Serbía og Svartfjallaland</territory>
			<territory type="CU">Kúba</territory>
			<territory type="CV">Grænhöfðaeyjar</territory>
			<territory type="CX">Jólaey</territory>
			<territory type="CY">Kýpur</territory>
			<territory type="CZ">Tékkland</territory>
			<territory type="DE">Þýskaland</territory>
			<territory type="DJ">Djíbútí</territory>
			<territory type="DK">Danmörk</territory>
			<territory type="DM">Dóminíka</territory>
			<territory type="DO">Dóminíska lýðveldið</territory>
			<territory type="DZ">Alsír</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Eistland</territory>
			<territory type="EG">Egyptaland</territory>
			<territory type="EH">Vestur-Sahara</territory>
			<territory type="ER">Erítrea</territory>
			<territory type="ES">Spánn</territory>
			<territory type="ET">Eþíópía</territory>
			<territory type="FI">Finnland</territory>
			<territory type="FJ">Fídjieyjar</territory>
			<territory type="FK">Falklandseyjar</territory>
			<territory type="FM">Mikrónesía</territory>
			<territory type="FO">Færeyjar</territory>
			<territory type="FR">Frakkland</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Bretland</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgía</territory>
			<territory type="GF">Franska Gvæjana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gíbraltar</territory>
			<territory type="GL">Grænland</territory>
			<territory type="GM">Gambía</territory>
			<territory type="GN">Gínea</territory>
			<territory type="GP">Gvadelúpeyjar</territory>
			<territory type="GQ">Miðbaugs-Gínea</territory>
			<territory type="GR">Grikkland</territory>
			<territory type="GS">Suður-Georgía og Suður-Sandvíkureyjar</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Gvam</territory>
			<territory type="GW">Gínea-Bissá</territory>
			<territory type="GY">Gvæjana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Heard og McDonaldseyjar</territory>
			<territory type="HN">Hondúras</territory>
			<territory type="HR">Króatía</territory>
			<territory type="HT">Haítí</territory>
			<territory type="HU">Ungverjaland</territory>
			<territory type="ID">Indónesía</territory>
			<territory type="IE">Írland</territory>
			<territory type="IL">Ísrael</territory>
			<territory type="IM">Mön</territory>
			<territory type="IN">Indland</territory>
			<territory type="IO">Bresku Indlandshafseyjar</territory>
			<territory type="IQ">Írak</territory>
			<territory type="IR">Íran</territory>
			<territory type="IS">Ísland</territory>
			<territory type="IT">Ítalía</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaíka</territory>
			<territory type="JO">Jórdanía</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenía</territory>
			<territory type="KG">Kirgisistan</territory>
			<territory type="KH">Kambódía</territory>
			<territory type="KI">Kíribatí</territory>
			<territory type="KM">Kómoreyjar</territory>
			<territory type="KN">Sankti Kristófer og Nevis</territory>
			<territory type="KP">Norður-Kórea</territory>
			<territory type="KR">Suður-Kórea</territory>
			<territory type="KW">Kúveit</territory>
			<territory type="KY">Caymaneyjar</territory>
			<territory type="KZ">Kasakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Líbanon</territory>
			<territory type="LC">Sankti Lúsía</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Srí Lanka</territory>
			<territory type="LR">Líbería</territory>
			<territory type="LS">Lesótó</territory>
			<territory type="LT">Litháen</territory>
			<territory type="LU">Lúxemborg</territory>
			<territory type="LV">Lettland</territory>
			<territory type="LY">Líbía</territory>
			<territory type="MA">Marokkó</territory>
			<territory type="MC">Mónakó</territory>
			<territory type="MD">Moldóva</territory>
			<territory type="ME">Svartfjallaland</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalleyjar</territory>
			<territory type="MK">Makedónía</territory>
			<territory type="ML">Malí</territory>
			<territory type="MM">Mjanmar</territory>
			<territory type="MN">Mongólía</territory>
			<territory type="MO">Makáo</territory>
			<territory type="MP">Norður-Maríanaeyjar</territory>
			<territory type="MQ">Martiník</territory>
			<territory type="MR">Máritanía</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Máritíus</territory>
			<territory type="MV">Maldíveyjar</territory>
			<territory type="MW">Malaví</territory>
			<territory type="MX">Mexíkó</territory>
			<territory type="MY">Malasía</territory>
			<territory type="MZ">Mósambík</territory>
			<territory type="NA">Namibía</territory>
			<territory type="NC">Nýja-Kaledónía</territory>
			<territory type="NE">Níger</territory>
			<territory type="NF">Norfolkeyja</territory>
			<territory type="NG">Nígería</territory>
			<territory type="NI">Níkaragva</territory>
			<territory type="NL">Niðurlönd</territory>
			<territory type="NO">Noregur</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nárú</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nýja-Sjáland</territory>
			<territory type="OM">Óman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Perú</territory>
			<territory type="PF">Franska Pólýnesía</territory>
			<territory type="PG">Papúa Nýja-Gínea</territory>
			<territory type="PH">Filippseyjar</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Pólland</territory>
			<territory type="PM">Sankti Pierre og Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Púertó Ríkó</territory>
			<territory type="PS">Palestína</territory>
			<territory type="PT">Portúgal</territory>
			<territory type="PW">Palá</territory>
			<territory type="PY">Paragvæ</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Ytri Eyjaálfa</territory>
			<territory type="QU">Evrópusambandið</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rúmenía</territory>
			<territory type="RS">Serbía</territory>
			<territory type="RU">Rússland</territory>
			<territory type="RW">Rúanda</territory>
			<territory type="SA">Sádi-Arabía</territory>
			<territory type="SB">Salómonseyjar</territory>
			<territory type="SC">Seychelleseyjar</territory>
			<territory type="SD">Súdan</territory>
			<territory type="SE">Svíþjóð</territory>
			<territory type="SG">Singapúr</territory>
			<territory type="SH">Sankti Helena</territory>
			<territory type="SI">Slóvenía</territory>
			<territory type="SJ">Svalbarði og Jan Mayen</territory>
			<territory type="SK">Slóvakía</territory>
			<territory type="SL">Síerra Leóne</territory>
			<territory type="SM">San Marínó</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Sómalía</territory>
			<territory type="SR">Súrínam</territory>
			<territory type="ST">Saó Tóme og Prinsípe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Sýrland</territory>
			<territory type="SZ">Svasíland</territory>
			<territory type="TC">Turks- og Caicoseyjar</territory>
			<territory type="TD">Tsjad</territory>
			<territory type="TF">Frönsku suðlægu landsvæðin</territory>
			<territory type="TG">Tógó</territory>
			<territory type="TH">Taíland</territory>
			<territory type="TJ">Tadsjikistan</territory>
			<territory type="TK">Tókelá</territory>
			<territory type="TL">Austur-Tímor</territory>
			<territory type="TM">Túrkmenistan</territory>
			<territory type="TN">Túnis</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Tyrkland</territory>
			<territory type="TT">Trínidad og Tóbagó</territory>
			<territory type="TV">Túvalú</territory>
			<territory type="TW">Taívan</territory>
			<territory type="TZ">Tansanía</territory>
			<territory type="UA">Úkraína</territory>
			<territory type="UG">Úganda</territory>
			<territory type="UM">Smáeyjar Bandaríkjanna</territory>
			<territory type="US">Bandaríkin</territory>
			<territory type="UY">Úrúgvæ</territory>
			<territory type="UZ">Úsbekistan</territory>
			<territory type="VA">Páfagarður</territory>
			<territory type="VC">Sankti Vinsent og Grenadíneyjar</territory>
			<territory type="VE">Venesúela</territory>
			<territory type="VG">Jómfrúaeyjar (bresku)</territory>
			<territory type="VI">Jómfrúaeyjar (bandarísku)</territory>
			<territory type="VN">Víetnam</territory>
			<territory type="VU">Vanúatú</territory>
			<territory type="WF">Wallis- og Fútúnaeyjar</territory>
			<territory type="WS">Samóa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Suður-Afríka</territory>
			<territory type="ZM">Sambía</territory>
			<territory type="ZW">Simbabve</territory>
			<territory type="ZZ">Óþekkt eða ógilt svæði</territory>
		</territories>
		<keys>
			<key type="calendar">Dagatal</key>
			<key type="collation">Röðun</key>
			<key type="currency">Gjaldmiðill</key>
		</keys>
		<types>
			<type type="big5han" key="collation">hefðbundin kínversk röðun - Big5</type>
			<type type="buddhist" key="calendar">Búddískt dagatal</type>
			<type type="chinese" key="calendar">Kínverskt dagatal</type>
			<type type="direct" key="collation">Bein röðun</type>
			<type type="gb2312han" key="collation">einfölduð kínversk röðun - GB2312</type>
			<type type="gregorian" key="calendar">Gregorískt dagatal</type>
			<type type="hebrew" key="calendar">Hebreskt  dagatal</type>
			<type type="indian" key="calendar">indverskt dagatal</type>
			<type type="islamic" key="calendar">Íslamskt dagatal</type>
			<type type="islamic-civil" key="calendar">Íslamskt borgaradagatal</type>
			<type type="japanese" key="calendar">Japanskt dagatal</type>
			<type type="phonebook" key="collation">Símaskráarröðun</type>
			<type type="pinyin" key="collation">Pinyin-röðun</type>
			<type type="roc" key="calendar">kínverskt dagatal</type>
			<type type="stroke" key="collation">Strikaröðun</type>
			<type type="traditional" key="collation">Hefðbundin</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">bandarískt</measurementSystemName>
			<measurementSystemName type="metric">metrakerfi</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">tungumál: {0}</codePattern>
			<codePattern type="script">leturgerð: {0}</codePattern>
			<codePattern type="territory">svæði: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á b d ð e é f-i í j-o ó p r-u ú v y ý þ æ ö]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c q w z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>‚</alternateQuotationStart>
		<alternateQuotationEnd>‘</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maí</month>
							<month type="6">jún</month>
							<month type="7">júl</month>
							<month type="8">ágú</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nóv</month>
							<month type="12">des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">janúar</month>
							<month type="2">febrúar</month>
							<month type="3">mars</month>
							<month type="4">apríl</month>
							<month type="5">maí</month>
							<month type="6">júní</month>
							<month type="7">júlí</month>
							<month type="8">ágúst</month>
							<month type="9">september</month>
							<month type="10">október</month>
							<month type="11">nóvember</month>
							<month type="12">desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">j</month>
							<month type="2">f</month>
							<month type="3">m</month>
							<month type="4">a</month>
							<month type="5">m</month>
							<month type="6">j</month>
							<month type="7">j</month>
							<month type="8">á</month>
							<month type="9">s</month>
							<month type="10">o</month>
							<month type="11">n</month>
							<month type="12">d</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sun</day>
							<day type="mon">mán</day>
							<day type="tue">þri</day>
							<day type="wed">mið</day>
							<day type="thu">fim</day>
							<day type="fri">fös</day>
							<day type="sat">lau</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sunnudagur</day>
							<day type="mon">mánudagur</day>
							<day type="tue">þriðjudagur</day>
							<day type="wed">miðvikudagur</day>
							<day type="thu">fimmtudagur</day>
							<day type="fri">föstudagur</day>
							<day type="sat">laugardagur</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">s</day>
							<day type="mon">m</day>
							<day type="tue">þ</day>
							<day type="wed">m</day>
							<day type="thu">f</day>
							<day type="fri">f</day>
							<day type="sat">l</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">F1</quarter>
							<quarter type="2">F2</quarter>
							<quarter type="3">F3</quarter>
							<quarter type="4">F4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1st fjórðungur</quarter>
							<quarter type="2">2nd fjórðungur</quarter>
							<quarter type="3">3rd fjórðungur</quarter>
							<quarter type="4">4th fjórðungur</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="abbreviated">
							<quarter type="1">1F</quarter>
							<quarter type="2">2F</quarter>
							<quarter type="3">3F</quarter>
							<quarter type="4">4F</quarter>
						</quarterWidth>
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. fjórðungur</quarter>
							<quarter type="2">2. fjórðungur</quarter>
							<quarter type="3">3. fjórðungur</quarter>
							<quarter type="4">4. fjórðungur</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>f.h.</am>
				<pm>e.h.</pm>
				<eras>
					<eraAbbr>
						<era type="0">fyrir Krist</era>
						<era type="1">eftir Krist</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">f.k.</era>
						<era type="1">e.k.</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d.M.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L.</dateFormatItem>
						<dateFormatItem id="MEd">E d.M.</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d. MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d. MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d. MMM</dateFormatItem>
						<dateFormatItem id="Md">d.M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M. yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d. MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q. yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d.M - E, d.M</greatestDifference>
							<greatestDifference id="d">E, d.M - E, d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d. MMM - d. MMM</greatestDifference>
							<greatestDifference id="d">d.-d. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d.M - d.M</greatestDifference>
							<greatestDifference id="d">d.M - d.M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M.yyyy - M.yyyy</greatestDifference>
							<greatestDifference id="y">M.yyyy - M.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
							<greatestDifference id="d">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
							<greatestDifference id="y">E, d.M.yyyy - E, d.M.yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d. MMM - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d. - E, d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d. MMM yyyy - E, d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d. MMM - d. MMM yyyy</greatestDifference>
							<greatestDifference id="d">d.-d. MMM yyyy</greatestDifference>
							<greatestDifference id="y">d. MMM yyyy - d. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d.M.yyyy - d.M.yyyy</greatestDifference>
							<greatestDifference id="d">d.M.yyyy - d.M.yyyy</greatestDifference>
							<greatestDifference id="y">d.M.yyyy - d.M.yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>tímabil</displayName>
					</field>
					<field type="year">
						<displayName>ár</displayName>
					</field>
					<field type="month">
						<displayName>mánuður</displayName>
					</field>
					<field type="week">
						<displayName>vika</displayName>
					</field>
					<field type="day">
						<displayName>dagur</displayName>
						<relative type="0">í dag</relative>
						<relative type="1">á morgun</relative>
						<relative type="2">eftir tvo daga</relative>
						<relative type="3">eftir þrjá daga</relative>
						<relative type="-1">í gær</relative>
						<relative type="-2">fyrir tveimur dögum</relative>
						<relative type="-3">fyrir þremur dögum</relative>
					</field>
					<field type="weekday">
						<displayName>vikudagur</displayName>
					</field>
					<field type="dayperiod">
						<displayName>f.h./e.h.</displayName>
					</field>
					<field type="hour">
						<displayName>klukkustund</displayName>
					</field>
					<field type="minute">
						<displayName>mínúta</displayName>
					</field>
					<field type="second">
						<displayName>sekúnda</displayName>
					</field>
					<field type="zone">
						<displayName>svæði</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>óþekkt</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Kabúl</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Angúilla</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Suðurpóllinn</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Vínarborg</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>Arúba</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbadoseyjar</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brussel</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofía</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Barein</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermúdaeyjar</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Brúnei</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Rio Branco</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belís</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Regína</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Páskaeyja</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostaríka</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Grænhöfðaeyjar</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlín</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Djíbútí</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kaupmannahöfn</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dóminíka</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alsír</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kaíró</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanaríeyjar</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madríd</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidjieyjar</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Færeyjar</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>París</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gíbraltar</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Nuuk</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Gvadelúp</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Aþena</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Suður-Georgía</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>Gúam</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>Bissá</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gvæjana</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Búdapest</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Djakarta</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reykjavík</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Róm</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaíka</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tókýó</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Pjongjang</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seúl</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kúveit</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beirút</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Monróvía</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Vilníus</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Lúxemborg</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Mónakó</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Úlan Bator</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makaó</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martínik</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Máritíus</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldíveyjar</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexíkóborg</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Kankún</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>Osló</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>Nárú</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>Níúe</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Marquesas-eyjar</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsjá</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Púertó Ríkó</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azoreyjar</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Palaú</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Kvatar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Búkarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stokkhólmur</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapúr</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>St. Helena</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskus</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Túnis</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Istanbúl</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Honolulu</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Anchorage</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>Denver</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Indianapolis</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Jóhannesarborg</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Mið-Evróputími</standard>
					<daylight>sumartími Mið-Evrópu</daylight>
				</long>
				<short>
					<standard>MET</standard>
					<daylight>STME</daylight>
				</short>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Austur-Evróputími</standard>
					<daylight>sumartími Austur-Evrópu</daylight>
				</long>
				<short>
					<standard>AET</standard>
					<daylight>STAE</daylight>
				</short>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<plusSign>+</plusSign>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>EiTa</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorrskur peseti</displayName>
			</currency>
			<currency type="AED">
				<displayName>Arabískt dírham</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dramm</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Hollenskt Antillugyllini</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="ARA">
				<displayName>Argentine Austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentískur pesi (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentískur pesi</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Austurrískur skildingur</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Ástralskur dalur</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadoskur dalur</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BEF">
				<displayName>Belgískur franki</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BGL">
				<displayName>Lef</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Lef, nýtt</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermúdeyskur dalur</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brúneiskur dalur</displayName>
			</currency>
			<currency type="BOB">
				<displayName>bólivískt bólívíanó</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Bólivískur pesi</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolivian Mvdol</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brasilískt ríal</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahameyskur dalur</displayName>
			</currency>
			<currency type="BUK">
				<displayName>Búrmverskt kjat</displayName>
			</currency>
			<currency type="BZD">
				<displayName>Belískur dalur</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Kanadískur dalur</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CHF">
				<displayName>Svissneskur franki</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Chilean Unidades de Fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chileskur pesi</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Júan</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kólumbískur pesi</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CSK">
				<displayName>Tékknesk króna, eldri</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kúbverskur pesi</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Grænhöfðeyskur skúti</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Kýpverskt pund</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Tékknesk króna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Austurþýskt mark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Þýskt mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djibouti Franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Dönsk króna</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dóminískur pesi</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuador Sucre</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Eistnesk króna</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egypskt pund</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spænskur peseti</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finnskt mark</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fídjeyskur dalur</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falklenskt pund</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franskur franki</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Sterlingspund</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gíbraltarspund</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Gíneufranki</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GRD">
				<displayName>Drakma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemala Quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portúgalskur, gíneskur skúti</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Gvæjanskur dalur</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hong Kong-dalur</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Hoduras Lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRK">
				<displayName>Kúna</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Fórinta</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indónesísk rúpía</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Írskt pund</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Ísraelskt pund</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Sikill</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indversk rúpía</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Írakskur denari</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Íranskt ríal</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Íslensk króna</displayName>
				<symbol>kr.</symbol>
			</currency>
			<currency type="ITL">
				<displayName>Ítölsk líra</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaískur dalur</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Jen</displayName>
			</currency>
			<currency type="KES">
				<displayName>kenískur skildingur</displayName>
			</currency>
			<currency type="KMF">
				<displayName>Kómoreyskur franki</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Norðurkóreskt vonn</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Suðurkóreskt vonn</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kúveiskur denari</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Caymaneyskur dalur</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakhstan Tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LBP">
				<displayName>Líbanskt pund</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Srílönsk rúpía</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Líberískur dalur</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesotho Loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Lít</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Lithuanian Talonas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Lúxemborgarfranki</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lat</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Lettnesk rúbla</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Líbískur denari</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokkóskt dírham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokkóskur franki</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagascar Ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaskur franki</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedónskur denari</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Malískur franki</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Mjanmarskt kjat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Túríkur</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macao Pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritania Ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Meltnesk líra</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Maltneskt pund</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Mexíkóskur pesi</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexíkóskur silfurpesi  (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexíkóskur pesi, UDI</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysian Ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mósambískur skúti</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibískur dalur</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigerian Naira</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Hollenskt gyllini</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norsk króna</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Nýsjálenskur dalur</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Ómanskt ríal</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balbói</displayName>
			</currency>
			<currency type="PEN">
				<displayName>perúskar sol nuevo</displayName>
			</currency>
			<currency type="PHP">
				<displayName>filippeyskir pesóar</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistönsk rúpía</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>pólskt zlotý</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Slot</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portúgalskur skúti</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Rúmenskt lei</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>rúmensk leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>serbneskur dínar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rússnesk rúbla</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rússnesk rúbla (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rwandan Franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Sádiarabískt ríal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salómonseyskur dalur</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychelles rúpía</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Súdanskur denari</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Súdanskt pund</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Sænsk króna</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapúrskur dalur</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Helenskt pund</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Slóvenskur dalur</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slóvakísk króna</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Suriname Guilder</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Sao Tome and Principe Dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Soviet Rouble</displayName>
			</currency>
			<currency type="SVC">
				<displayName>El Salvador Colon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Sýrlenskt pund</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="THB">
				<displayName>Bat</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tadsjiksk rúbla</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tajikistan Somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Túrkmenskt manat</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Tímorskur skúti</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Tyrknesk líra</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Ný tyrknesk líra</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trínidad og Tóbagó-dalur</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Taívanskur dalur</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanian Shilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hrinja</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrainian Karbovanetz</displayName>
			</currency>
			<currency type="USD">
				<displayName>Bandaríkjadalur</displayName>
			</currency>
			<currency type="USN">
				<displayName>Bandaríkjadalur (næsta dag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Bandaríkjadalur (sama dag)</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelan Bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>víetnamskt dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatu Vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="XAF">
				<displayName>Miðafrískur franki, BEAC</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Austur-Karíbahafsdalur</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Sérstök dráttarréttindi</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Franskur gullfranki</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Franskur franki, UIC</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Miðafrískur franki, BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Pólinesískur franki</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Óþekktur eða ógildur gjaldeyrir</displayName>
				<displayName count="one">óþekktur eða ógildur gjaldeyrir</displayName>
				<displayName count="other">óþekktur eða ógildur gjaldeyrir</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemenskur denari</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemenskt ríal</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUM">
				<displayName>Júgóslavneskur denari</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Rand (viðskipta)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>suðurafríkskt rand</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Zambian Kwacha</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Simbabveskur dalur</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dagur</unitPattern>
			<unitPattern count="other">{0} dagar</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} klukkustund</unitPattern>
			<unitPattern count="other">{0} klukkustundir</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} mínúta</unitPattern>
			<unitPattern count="other">{0} mínútur</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mánuður</unitPattern>
			<unitPattern count="other">{0} mánuðir</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekúnda</unitPattern>
			<unitPattern count="other">{0} sekúndur</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} vika</unitPattern>
			<unitPattern count="other">{0} vikur</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} ár</unitPattern>
			<unitPattern count="other">{0} ár</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>já:j</yesstr>
			<nostr>nei:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[f`�9�d�dLocale/Data/sq.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.69 $"/>
		<generation date="$Date: 2008/06/05 01:32:23 $"/>
		<language type="sq"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikanisht</language>
			<language type="am">Amharike</language>
			<language type="ar">Arabisht</language>
			<language type="as">Asamezisht</language>
			<language type="az">Azerbajxhanisht</language>
			<language type="be">Bjellorusisht</language>
			<language type="bg">Bullgarisht</language>
			<language type="bh">Bihari</language>
			<language type="bn">Bengalisht</language>
			<language type="br">Breton</language>
			<language type="bs">Boshnjakisht</language>
			<language type="ca">Katalonisht</language>
			<language type="cs">Çekisht</language>
			<language type="cy">Uellsisht</language>
			<language type="da">Danisht</language>
			<language type="de">Gjermanisht</language>
			<language type="el">Greqisht</language>
			<language type="en">Anglisht</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanjisht</language>
			<language type="et">Estonisht</language>
			<language type="eu">Baskisht</language>
			<language type="fa">Persisht</language>
			<language type="fi">Finlandisht</language>
			<language type="fil">Tagalogisht</language>
			<language type="fo">Faroisht</language>
			<language type="fr">Frengjisht</language>
			<language type="fy">Frizianisht</language>
			<language type="ga">Irlandisht</language>
			<language type="gd">Galisht</language>
			<language type="gl">Galicianisht</language>
			<language type="gn">Guarani</language>
			<language type="gu">Guxharati</language>
			<language type="he">Hebraisht</language>
			<language type="hi">Hindi</language>
			<language type="hr">Kroatisht</language>
			<language type="hu">Hungarisht</language>
			<language type="hy">Armen</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonezisht</language>
			<language type="ie">Gjuha nderkombtare</language>
			<language type="is">Islandisht</language>
			<language type="it">Italisht</language>
			<language type="ja">Japanisht</language>
			<language type="jv">Javanisht</language>
			<language type="ka">Gjeorgjisht</language>
			<language type="km">Kamboxhiane</language>
			<language type="kn">Kanada</language>
			<language type="ko">Koreançe</language>
			<language type="ku">Kurd</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Latinisht</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laosisht</language>
			<language type="lt">Lituanisht</language>
			<language type="lv">Letonisht</language>
			<language type="mk">Maqedonisht</language>
			<language type="ml">Malajalam</language>
			<language type="mn">Mongolisht</language>
			<language type="mr">Marati</language>
			<language type="ms">Malajzisht</language>
			<language type="mt">Maltisht</language>
			<language type="ne">Nepalisht</language>
			<language type="nl">Hollandisht</language>
			<language type="nn">Norvegjisht (Nynorsk)</language>
			<language type="no">Norvegjisht</language>
			<language type="oc">Oksitanisht</language>
			<language type="or">Orija</language>
			<language type="pa">Punxhabi</language>
			<language type="pl">Polonisht</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portugeze</language>
			<language type="pt_BR">Portugalisht (Brazil)</language>
			<language type="pt_PT">Portugalisht (Portugali)</language>
			<language type="ro">Rumanisht</language>
			<language type="ru">Rusisht</language>
			<language type="sa">Sanskritisht</language>
			<language type="sd">Si'ndi</language>
			<language type="sh">Serbo-Kroatisht</language>
			<language type="si">Sinhalezisht</language>
			<language type="sk">Sllovakisht</language>
			<language type="sl">Sllovenisht</language>
			<language type="so">Somalisht</language>
			<language type="sq">shqipe</language>
			<language type="sr">Serbisht</language>
			<language type="st">Sesotho</language>
			<language type="su">Sundanisht</language>
			<language type="sv">Suedisht</language>
			<language type="sw">Suahilisht</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Tajlandisht</language>
			<language type="ti">Tigrinja</language>
			<language type="tk">Turk</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Turqisht</language>
			<language type="tw">Twi</language>
			<language type="ug">Ujgur</language>
			<language type="uk">Ukrainisht</language>
			<language type="und">Unknown or Invalid Language</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbekistanisht</language>
			<language type="vi">Vietnamisht</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Jiden</language>
			<language type="zh">Kineze</language>
			<language type="zu">Zulu</language>
		</languages>
		<scripts>
			<script type="Latn">Latine</script>
			<script type="Zxxx">I pashkruar</script>
			<script type="Zzzz">Skript i panjohur ose i pavlefshëm</script>
		</scripts>
		<territories>
			<territory type="AD">Andorrë</territory>
			<territory type="AE">Emiratet Arabe te Bashkuara</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua e Barbuda</territory>
			<territory type="AL">Shqipëria</territory>
			<territory type="AM">Armeni</territory>
			<territory type="AO">Angolë</territory>
			<territory type="AR">Argjentinë</territory>
			<territory type="AT">Austri</territory>
			<territory type="AU">Australi</territory>
			<territory type="AX">Ishujt Aland</territory>
			<territory type="AZ">Azerbajxhan</territory>
			<territory type="BA">Bosnja dhe Hercegovina</territory>
			<territory type="BE">Belgjikë</territory>
			<territory type="BG">Bullgari</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BN">Brunej</territory>
			<territory type="BO">Bolivi</territory>
			<territory type="BR">Brazili</territory>
			<territory type="BT">Butan</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Bjellorusi</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CF">Republika Qendrore e Afrikës</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Zvicër</territory>
			<territory type="CI">Bregu i Fildishtë</territory>
			<territory type="CL">Kili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kinë</territory>
			<territory type="CO">Kolumbi</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Serbië en Montenegro</territory>
			<territory type="CU">Kubë</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CY">Qipro</territory>
			<territory type="CZ">Republika e Çekisë</territory>
			<territory type="DE">Gjermani</territory>
			<territory type="DJ">Xhibuti</territory>
			<territory type="DK">Danimarkë</territory>
			<territory type="DM">Dominikë</territory>
			<territory type="DO">Republika Dominikanë</territory>
			<territory type="DZ">Algjeri</territory>
			<territory type="EC">Ekuator</territory>
			<territory type="EE">Estoni</territory>
			<territory type="EG">Egjipt</territory>
			<territory type="EH">Saharaja Perëndimore</territory>
			<territory type="ER">Eritre</territory>
			<territory type="ES">Spanjë</territory>
			<territory type="ET">Etiopi</territory>
			<territory type="FI">Finlandë</territory>
			<territory type="FJ">Fixhi</territory>
			<territory type="FM">Mikronezi</territory>
			<territory type="FR">Francë</territory>
			<territory type="GA">Gjabon</territory>
			<territory type="GB">Mbretëria e Bashkuar</territory>
			<territory type="GE">Gjeorgji</territory>
			<territory type="GH">Ganë</territory>
			<territory type="GM">Gambi</territory>
			<territory type="GN">Guine</territory>
			<territory type="GQ">Guineja Ekuatoriale</territory>
			<territory type="GR">Greqi</territory>
			<territory type="GT">Guatemalë</territory>
			<territory type="GW">Guine Bisau</territory>
			<territory type="GY">Guajana</territory>
			<territory type="HR">Kroaci</territory>
			<territory type="HU">Hungari</territory>
			<territory type="ID">Indonezi</territory>
			<territory type="IE">Irlandë</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IN">Indi</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IS">Islandë</territory>
			<territory type="IT">Itali</territory>
			<territory type="JM">Xhamajkë</territory>
			<territory type="JO">Jordani</territory>
			<territory type="JP">Japoni</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgistan</territory>
			<territory type="KH">Kamboxhi</territory>
			<territory type="KI">Qiribati</territory>
			<territory type="KM">Komore</territory>
			<territory type="KN">Saint Kitts e Nevis</territory>
			<territory type="KP">Koreja e Veriut</territory>
			<territory type="KR">Koreja e Jugut</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KZ">Kazakistan</territory>
			<territory type="LB">Liban</territory>
			<territory type="LI">Lihtënshtajn</territory>
			<territory type="LR">Liberi</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Lituani</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="LV">Letoni</territory>
			<territory type="LY">Libi</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavi</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Ishujt Marshall</territory>
			<territory type="MK">Maqedoni</territory>
			<territory type="MN">Mongoli</territory>
			<territory type="MR">Mauritani</territory>
			<territory type="MT">Maltë</territory>
			<territory type="MV">Maldivit</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksikë</territory>
			<territory type="MY">Malajzi</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibi</territory>
			<territory type="NG">Nigeri</territory>
			<territory type="NI">Nikaragua</territory>
			<territory type="NL">Vendet e Ulëta</territory>
			<territory type="NO">Norvegji</territory>
			<territory type="NZ">Zelanda e Re</territory>
			<territory type="PG">Papua Guineja e Re</territory>
			<territory type="PH">Filipine</territory>
			<territory type="PL">Poloni</territory>
			<territory type="PT">Portugali</territory>
			<territory type="PY">Paraguaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="RO">Rumani</territory>
			<territory type="RU">Rusi</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arabia Saudite</territory>
			<territory type="SB">Ishujt Solomon</territory>
			<territory type="SC">Sishel</territory>
			<territory type="SE">Suedi</territory>
			<territory type="SG">Singapor</territory>
			<territory type="SI">Slloveni</territory>
			<territory type="SK">Sllovaki</territory>
			<territory type="SL">Siera Leone</territory>
			<territory type="SO">Somali</territory>
			<territory type="ST">Sao Tome e Prinsipe</territory>
			<territory type="SY">Siri</territory>
			<territory type="SZ">Svazilandë</territory>
			<territory type="TD">Çad</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajlandë</territory>
			<territory type="TJ">Taxhikistan</territory>
			<territory type="TN">Tunisi</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turqi</territory>
			<territory type="TT">Trinidad e Tobago</territory>
			<territory type="TW">Tajvan</territory>
			<territory type="TZ">Tanzani</territory>
			<territory type="UA">Ukrainë</territory>
			<territory type="US">Shtetet e Bashkuara të Amerikës</territory>
			<territory type="UY">Uruguaj</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent e Grenadinet</territory>
			<territory type="VE">Venezuelë</territory>
			<territory type="YE">Jemen</territory>
			<territory type="ZA">Afrika e Jugut</territory>
			<territory type="ZM">Zambi</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">Rajon i panjohur ose i pavlefshëm</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d {dh} e ë f g {gj} h-l {ll} m n {nj} o-r {rr} s {sh} t {th} u v x {xh} y z {zh}]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[w]</exemplarCharacters>
	</characters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Shk</month>
							<month type="3">Mar</month>
							<month type="4">Pri</month>
							<month type="5">Maj</month>
							<month type="6">Qer</month>
							<month type="7">Kor</month>
							<month type="8">Gsh</month>
							<month type="9">Sht</month>
							<month type="10">Tet</month>
							<month type="11">Nën</month>
							<month type="12">Dhj</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">janar</month>
							<month type="2">shkurt</month>
							<month type="3">mars</month>
							<month type="4">prill</month>
							<month type="5">maj</month>
							<month type="6">qershor</month>
							<month type="7">korrik</month>
							<month type="8">gusht</month>
							<month type="9">shtator</month>
							<month type="10">tetor</month>
							<month type="11">nëntor</month>
							<month type="12">dhjetor</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">S</month>
							<month type="3">M</month>
							<month type="4">P</month>
							<month type="5">M</month>
							<month type="6">Q</month>
							<month type="7">K</month>
							<month type="8">G</month>
							<month type="9">S</month>
							<month type="10">T</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Die</day>
							<day type="mon">Hën</day>
							<day type="tue">Mar</day>
							<day type="wed">Mër</day>
							<day type="thu">Enj</day>
							<day type="fri">Pre</day>
							<day type="sat">Sht</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">e diel</day>
							<day type="mon">e hënë</day>
							<day type="tue">e martë</day>
							<day type="wed">e mërkurë</day>
							<day type="thu">e enjte</day>
							<day type="fri">e premte</day>
							<day type="sat">e shtunë</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">H</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">E</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>PD</am>
				<pm>MD</pm>
				<eras>
					<eraAbbr>
						<era type="0">p.e.r.</era>
						<era type="1">n.e.r.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h.mm.ss.a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h.mm.ss.a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss.a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h.mm.a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d.M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M.yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d.M.yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h.a - h.a</greatestDifference>
							<greatestDifference id="h">h.-h.a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h.mm.a - h.mm.a</greatestDifference>
							<greatestDifference id="h">h.mm.-h.mm.a</greatestDifference>
							<greatestDifference id="m">h.mm.-h.mm.a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h.mm.a - h.mm.a v</greatestDifference>
							<greatestDifference id="h">h.mm.-h.mm.a v</greatestDifference>
							<greatestDifference id="m">h.mm.-h.mm.a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h.a - h.a v</greatestDifference>
							<greatestDifference id="h">h.-h.a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-MM - yy-MM</greatestDifference>
							<greatestDifference id="y">yy-MM - yy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, dd MMM yyyy - E, dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="d">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="y">yy-MM-dd - yy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Unknown</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Ora qendrore evropiane</standard>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Ora lindore evropiane</standard>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<standard>Ora standarde e Moskës</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ALL">
				<symbol>Lek</symbol>
			</currency>
			<currency type="BRL">
				<displayName>Real Brazilian</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Renminbi(Yuan) Kinez</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Paund Sterlina Britanike</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupee indiane</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Jeni Japonez</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rubla ruse</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dollar amerikan</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Unknown or Invalid Currency</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} ditë</unitPattern>
			<unitPattern count="other">{0} ditë</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} orë</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minutë</unitPattern>
			<unitPattern count="other">{0} minuta</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} muaj</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekondë</unitPattern>
			<unitPattern count="other">{0} sekonda</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} javë</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} vit</unitPattern>
			<unitPattern count="other">{0} vjet</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>po:p</yesstr>
			<nostr>jo:j</nostr>
		</messages>
	</posix>
</ldml>
PKpG[Ҩ}ޚ�Locale/Data/om_KE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="om"/>
		<territory type="KE"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="ETB">
				<symbol>ETB</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[:� +��Locale/Data/en_PH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="PH"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="PHP">
				<displayName>Peso</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[���	�	�Locale/Data/gl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.60 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="gl"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="af">Afrikaans</language>
			<language type="afa">Lingua afro-asiática</language>
			<language type="alg">Lingua algonquina</language>
			<language type="am">Amárico</language>
			<language type="an">Aragonés</language>
			<language type="apa">Lingua apache</language>
			<language type="ar">Árabe</language>
			<language type="arc">Arameo</language>
			<language type="art">Lingua artificial</language>
			<language type="as">Assamés</language>
			<language type="ast">Asturiano</language>
			<language type="aus">Lingua australiana</language>
			<language type="az">Azerbaiano</language>
			<language type="bat">Lingua báltica</language>
			<language type="be">Bielorruso</language>
			<language type="bg">Búlgaro</language>
			<language type="bh">Bihariano</language>
			<language type="bn">Bengalí</language>
			<language type="br">Bretón</language>
			<language type="bs">Bosnio</language>
			<language type="ca">Catalán</language>
			<language type="cai">Lingua india centroamericana</language>
			<language type="cau">Lingua caucásica</language>
			<language type="cel">Lingua céltica</language>
			<language type="cs">Checo</language>
			<language type="cu">Eslavo eclesiástico</language>
			<language type="cy">Galés</language>
			<language type="da">Dinamarqués</language>
			<language type="de">Alemán</language>
			<language type="de_AT">Alemán de Austria</language>
			<language type="de_CH">Alemán suízo</language>
			<language type="egy">Exipcio antigo</language>
			<language type="el">Grego</language>
			<language type="en">Inglés</language>
			<language type="en_AU">Inglés australiano</language>
			<language type="en_CA">Inglés canadiano</language>
			<language type="en_GB">Inglés británico</language>
			<language type="en_US">Inglés americano</language>
			<language type="eo">Esperanto</language>
			<language type="es">Español</language>
			<language type="es_419">Español latinoamericano</language>
			<language type="es_ES">Castelán</language>
			<language type="et">Estoniano</language>
			<language type="eu">Éuscaro</language>
			<language type="fa">Persa</language>
			<language type="fi">Finés</language>
			<language type="fil">Filipino</language>
			<language type="fiu">Lingua finno-úgrica</language>
			<language type="fo">Faroés</language>
			<language type="fr">Francés</language>
			<language type="fr_CA">Francés canadiano</language>
			<language type="fr_CH">Francés suízo</language>
			<language type="fy">Frisón</language>
			<language type="ga">Irlandés</language>
			<language type="gd">Gaélico escocés</language>
			<language type="gem">Lingua xermánica</language>
			<language type="gl">galego</language>
			<language type="gn">Guaraní</language>
			<language type="grc">Grego antigo</language>
			<language type="gu">Guxaratiano</language>
			<language type="he">Hebreo</language>
			<language type="hi">Hindi</language>
			<language type="hr">Croata</language>
			<language type="hu">Húngaro</language>
			<language type="hy">Armenio</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesio</language>
			<language type="inc">Lingua índica</language>
			<language type="ine">Lingua indoeuropea</language>
			<language type="is">Islandés</language>
			<language type="it">Italiano</language>
			<language type="ja">Xaponés</language>
			<language type="jv">Xavanés</language>
			<language type="ka">Xeorxiano</language>
			<language type="km">Cambodiano</language>
			<language type="kn">Kannada</language>
			<language type="ko">Coreano</language>
			<language type="ku">Kurdo</language>
			<language type="ky">Kyrgiz</language>
			<language type="la">Latín</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laotiano</language>
			<language type="lt">Lituano</language>
			<language type="lv">Letón</language>
			<language type="mis">Lingua miscelánea</language>
			<language type="mk">Macedonio</language>
			<language type="ml">Malaialam</language>
			<language type="mn">Mongol</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malaio</language>
			<language type="mt">Maltés</language>
			<language type="mul">Varias linguas</language>
			<language type="nai">Lingua india norteamericana</language>
			<language type="nb">Noruegués Bokmal</language>
			<language type="ne">Nepalí</language>
			<language type="nl">Holandés</language>
			<language type="nl_BE">Flamenco</language>
			<language type="nn">Noruegués nynorsk</language>
			<language type="no">Noruegués</language>
			<language type="nub">Lingua nubia</language>
			<language type="oc">Occitano</language>
			<language type="or">Orissa</language>
			<language type="pa">Punjabi</language>
			<language type="phi">Lingua filipina</language>
			<language type="pl">Polaco</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portugués</language>
			<language type="pt_BR">Portugués brasileiro</language>
			<language type="pt_PT">Portugués ibérico</language>
			<language type="ro">Romanés</language>
			<language type="roa">Lingua románica</language>
			<language type="ru">Ruso</language>
			<language type="sa">Sánscrito</language>
			<language type="sai">Lingua india sudamericana</language>
			<language type="sd">Sindhi</language>
			<language type="sem">Lingua semita</language>
			<language type="sgn">Lingua de signos</language>
			<language type="sh">Serbocroata</language>
			<language type="si">Sinhalés</language>
			<language type="sk">Eslovaco</language>
			<language type="sl">Esloveno</language>
			<language type="sla">Lingua eslávica</language>
			<language type="so">Somalí</language>
			<language type="sq">Albanés</language>
			<language type="sr">Serbio</language>
			<language type="ssa">Lingua do Nilo-Sáhara</language>
			<language type="st">Sesotho</language>
			<language type="su">Sondanés</language>
			<language type="sv">Sueco</language>
			<language type="sw">Suaxili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Tailandés</language>
			<language type="ti">Tigriña</language>
			<language type="tl">Tagalo</language>
			<language type="tlh">Clingon</language>
			<language type="tr">Turco</language>
			<language type="tut">Lingua altaica</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Ucraíno</language>
			<language type="und">Lingua descoñecida ou non válida</language>
			<language type="ur">Urdú</language>
			<language type="uz">Uzbeco</language>
			<language type="vi">Vietnamita</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Yiddish</language>
			<language type="zh">Chinés</language>
			<language type="zh_Hans">Chinés simplificado</language>
			<language type="zh_Hant">Chinés tradicional</language>
			<language type="zu">Zulú</language>
			<language type="zxx">Sen contido lingüístico</language>
		</languages>
		<scripts>
			<script type="Arab">árabe</script>
			<script type="Brai">braille</script>
			<script type="Cans">silabario aborixe canadiano unificado</script>
			<script type="Cyrl">cirílico</script>
			<script type="Grek">grego</script>
			<script type="Hebr">hebreo</script>
			<script type="Latn">latino</script>
			<script type="Zxxx">non escrita</script>
			<script type="Zzzz">escritura descoñecida ou non válida</script>
		</scripts>
		<territories>
			<territory type="001">Mundo</territory>
			<territory type="002">África</territory>
			<territory type="003">Norteamérica</territory>
			<territory type="005">Sudamérica</territory>
			<territory type="009">Oceanía</territory>
			<territory type="011">África Occidental</territory>
			<territory type="013">América Central</territory>
			<territory type="014">África Oriental</territory>
			<territory type="015">África Septentrional</territory>
			<territory type="017">África Central</territory>
			<territory type="018">África Meridional</territory>
			<territory type="019">América</territory>
			<territory type="021">América do Norte</territory>
			<territory type="029">Caribe</territory>
			<territory type="030">Asia Oriental</territory>
			<territory type="034">Sul de Asia</territory>
			<territory type="035">Sureste Asiático</territory>
			<territory type="039">Europa Meridional</territory>
			<territory type="053">Australia e Nova Celandia</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Rexión da Micronesia</territory>
			<territory type="061">Polinesia</territory>
			<territory type="062">Asia do Sul-Centro</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Asia Central</territory>
			<territory type="145">Asia Occidental</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa do Leste</territory>
			<territory type="154">Europa Septentrional</territory>
			<territory type="155">Europa Occidental</territory>
			<territory type="172">Comunidade de Estados Independentes</territory>
			<territory type="419">América Latina e o Caribe</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emiratos Árabes Unidos</territory>
			<territory type="AF">Afganistán</territory>
			<territory type="AG">Antiga e Barbuda</territory>
			<territory type="AI">Anguila</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antillas Holandesas</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antártida</territory>
			<territory type="AR">Arxentina</territory>
			<territory type="AS">Samoa Americana</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Illas Aland</territory>
			<territory type="AZ">Acerbaixán</territory>
			<territory type="BA">Bosnia e Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Bélxica</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">San Bartolomé</territory>
			<territory type="BM">Bermudas</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bután</territory>
			<territory type="BV">Illa Bouvet</territory>
			<territory type="BW">Botsuana</territory>
			<territory type="BY">Bielorrusia</territory>
			<territory type="BZ">Belice</territory>
			<territory type="CA">Canadá</territory>
			<territory type="CC">Illas Cocos</territory>
			<territory type="CD">República Democrática do Congo</territory>
			<territory type="CF">República Africana Central</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Suíza</territory>
			<territory type="CI">Costa de Marfil</territory>
			<territory type="CK">Illas Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Camerún</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia e Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cabo Verde</territory>
			<territory type="CX">Illa Christmas</territory>
			<territory type="CY">Chipre</territory>
			<territory type="CZ">República Checa</territory>
			<territory type="DE">Alemaña</territory>
			<territory type="DJ">Xibuti</territory>
			<territory type="DK">Dinamarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">República Dominicana</territory>
			<territory type="DZ">Arxelia</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Exipto</territory>
			<territory type="EH">Sahara Occidental</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">España</territory>
			<territory type="ET">Etiopía</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FJ">Fixi</territory>
			<territory type="FK">Illas Malvinas</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Illas Feroe</territory>
			<territory type="FR">Francia</territory>
			<territory type="GA">Gabón</territory>
			<territory type="GB">Reino Unido</territory>
			<territory type="GD">Granada</territory>
			<territory type="GE">Xeorxia</territory>
			<territory type="GF">Güiana Francesa</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Xibraltar</territory>
			<territory type="GL">Grenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadalupe</territory>
			<territory type="GQ">Guinea Ecuatorial</territory>
			<territory type="GR">Grecia</territory>
			<territory type="GS">Xeorxia do Sur e Illas Sandwich</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Güiana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Illa Heard e Illas McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croacia</territory>
			<territory type="HT">Haití</territory>
			<territory type="HU">Hungría</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Illa de Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Territorio Británico do Océano Índico</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Irán</territory>
			<territory type="IS">Islandia</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Xamaica</territory>
			<territory type="JO">Xordania</territory>
			<territory type="JP">Xapón</territory>
			<territory type="KE">Quenia</territory>
			<territory type="KG">Quirguicistán</territory>
			<territory type="KH">Cambodia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comores</territory>
			<territory type="KN">San Cristovo e Nevis</territory>
			<territory type="KP">Corea do Norte</territory>
			<territory type="KR">Corea do Sur</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Illas Caimán</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Líbano</territory>
			<territory type="LC">Santa Lucía</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LU">Luxemburgo</territory>
			<territory type="LV">Letonia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Marrocos</territory>
			<territory type="MC">Mónaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">San Martiño</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Illas Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macau</territory>
			<territory type="MP">Illas Marianas do norte</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricio</territory>
			<territory type="MV">Maldivas</territory>
			<territory type="MW">Malaui</territory>
			<territory type="MX">México</territory>
			<territory type="MY">Malaisia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nova Caledonia</territory>
			<territory type="NE">Níxer</territory>
			<territory type="NF">Illa Norfolk</territory>
			<territory type="NG">Nixeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Países Baixos</territory>
			<territory type="NO">Noruega</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nova Celandia</territory>
			<territory type="OM">Omán</territory>
			<territory type="PA">Panamá</territory>
			<territory type="PE">Perú</territory>
			<territory type="PF">Polinesia Francesa</territory>
			<territory type="PG">Papúa Nova Guinea</territory>
			<territory type="PH">Filipinas</territory>
			<territory type="PK">Paquistán</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PM">San Pedro e Miguelón</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Rico</territory>
			<territory type="PS">Palestina</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguai</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Oceanía Distante</territory>
			<territory type="QU">Unión Europea</territory>
			<territory type="RE">Reunión</territory>
			<territory type="RO">Romanía</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Rusia</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arabia Saudita</territory>
			<territory type="SB">Illas Salomón</territory>
			<territory type="SC">Seixeles</territory>
			<territory type="SD">Sudán</territory>
			<territory type="SE">Suecia</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Santa Helena</territory>
			<territory type="SI">Eslovenia</territory>
			<territory type="SJ">Svalbard e Jan Mayen</territory>
			<territory type="SK">Eslovaquia</territory>
			<territory type="SL">Serra Leoa</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Santo Tomé e Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Siria</territory>
			<territory type="SZ">Suacilandia</territory>
			<territory type="TC">Illas Turks e Caicos</territory>
			<territory type="TD">Xad</territory>
			<territory type="TF">Territorios Franceses do Sul</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailandia</territory>
			<territory type="TJ">Taxiquistán</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Leste</territory>
			<territory type="TM">Turkmenistán</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turquía</territory>
			<territory type="TT">Trindade e Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwán</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ucraína</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Illas Menores Distantes dos EUA.</territory>
			<territory type="US">Estados Unidos de América</territory>
			<territory type="UY">Uruguai</territory>
			<territory type="UZ">Uzbekistán</territory>
			<territory type="VA">Cidade do Vaticano</territory>
			<territory type="VC">San Vicente e Granadinas</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Illas Virxes Británicas</territory>
			<territory type="VI">Illas Virxes Estadounidenses</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis e Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Iemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sudáfrica</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Cimbabue</territory>
			<territory type="ZZ">rexión descoñecida ou non válida</territory>
		</territories>
		<keys>
			<key type="calendar">calendario</key>
			<key type="collation">orde alfabética</key>
			<key type="currency">moeda</key>
		</keys>
		<types>
			<type type="big5han" key="collation">orde chinesa tradicional - Big5</type>
			<type type="buddhist" key="calendar">calendario budista</type>
			<type type="chinese" key="calendar">calendario chinés</type>
			<type type="direct" key="collation">orde alfabética directa</type>
			<type type="gb2312han" key="collation">orde chinesa simplificada - GB2312</type>
			<type type="gregorian" key="calendar">calendario gregoriano</type>
			<type type="hebrew" key="calendar">calendario hebreo</type>
			<type type="islamic" key="calendar">calendario islámico</type>
			<type type="islamic-civil" key="calendar">calendario islámico civil</type>
			<type type="japanese" key="calendar">calendario xaponés</type>
			<type type="phonebook" key="collation">orde da guía telefónica</type>
			<type type="pinyin" key="collation">orde pinyin</type>
			<type type="stroke" key="collation">orde polo número de trazos</type>
			<type type="traditional" key="collation">orde tradicional</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">americano</measurementSystemName>
			<measurementSystemName type="metric">métrico decimal</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Idioma: {0}</codePattern>
			<codePattern type="script">Alfabeto: {0}</codePattern>
			<codePattern type="territory">Rexión: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á b-e é f-i í j-n ñ o ó p-u ú ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ª à â ä ã ç è ê-ì î ï º ò ô ö õ ù û]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Xan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Abr</month>
							<month type="5">Mai</month>
							<month type="6">Xuñ</month>
							<month type="7">Xul</month>
							<month type="8">Ago</month>
							<month type="9">Set</month>
							<month type="10">Out</month>
							<month type="11">Nov</month>
							<month type="12">Dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Xaneiro</month>
							<month type="2">Febreiro</month>
							<month type="3">Marzo</month>
							<month type="4">Abril</month>
							<month type="5">Maio</month>
							<month type="6">Xuño</month>
							<month type="7">Xullo</month>
							<month type="8">Agosto</month>
							<month type="9">Setembro</month>
							<month type="10">Outubro</month>
							<month type="11">Novembro</month>
							<month type="12">Decembro</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">X</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">X</month>
							<month type="7">X</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Dom</day>
							<day type="mon">Lun</day>
							<day type="tue">Mar</day>
							<day type="wed">Mér</day>
							<day type="thu">Xov</day>
							<day type="fri">Ven</day>
							<day type="sat">Sáb</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Domingo</day>
							<day type="mon">Luns</day>
							<day type="tue">Martes</day>
							<day type="wed">Mércores</day>
							<day type="thu">Xoves</day>
							<day type="fri">Venres</day>
							<day type="sat">Sábado</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">X</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1o trimestre</quarter>
							<quarter type="2">2o trimestre</quarter>
							<quarter type="3">3o trimestre</quarter>
							<quarter type="4">4o trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">antes de Cristo</era>
						<era type="1">despois de Cristo</era>
					</eraNames>
					<eraAbbr>
						<era type="0">a.C.</era>
						<era type="1">d.C.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M-yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Ano</displayName>
					</field>
					<field type="month">
						<displayName>Mes</displayName>
					</field>
					<field type="week">
						<displayName>Semana</displayName>
					</field>
					<field type="day">
						<displayName>Día</displayName>
						<relative type="0">hoxe</relative>
						<relative type="1">mañá</relative>
						<relative type="2">pasadomañá</relative>
						<relative type="-1">onte</relative>
						<relative type="-2">antonte</relative>
						<relative type="-3">trasantonte</relative>
					</field>
					<field type="weekday">
						<displayName>Día da semana</displayName>
					</field>
					<field type="hour">
						<displayName>Hora</displayName>
					</field>
					<field type="minute">
						<displayName>Minuto</displayName>
					</field>
					<field type="second">
						<displayName>Segundo</displayName>
					</field>
					<field type="zone">
						<displayName>Fuso horario</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Hora de {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Descoñecido</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Anguila</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Polo Sul</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont-d'Urville</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Río Gallegos</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumán</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Bos Aires</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudas</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belice</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St Johns</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Illa de Pascua</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cabo Verde</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Xubuti</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Illas Galápagos</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Illas Canarias</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidxi</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>París</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Granada</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Xibraltar</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Güiana</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Iacarta</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Xamaica</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburgo</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Mónaco</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulan Bator</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricio</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivas</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>Monterrei</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Cidade de México</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panamá</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Rico</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reunión</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kaliningrado</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscova</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Volgogrado</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Ecaterinburgo</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>O Salvador</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Honolulú</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salem</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Central</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>Vincennes</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>Petersburg</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>Tell City</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Knox</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>Winamac</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marengo</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>Vevay</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>Monticello</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Samarcanda</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>horario europeo central</standard>
					<daylight>horario de verán europeo central</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>horario europeo oriental</standard>
					<daylight>horario de verán europeo oriental</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>horario europeo occidental</standard>
					<daylight>horario de verán europeo occidental</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>horario medio de Greenwich</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>peseta andorrana</displayName>
				<displayName count="one">peseta andorrana</displayName>
				<displayName count="other">pesetas andorranas</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Peso arxentino (1983-1985)</displayName>
				<displayName count="one">peso arxentino (ARP)</displayName>
				<displayName count="other">pesos arxentinos (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso arxentino</displayName>
				<displayName count="one">peso arxentino</displayName>
				<displayName count="other">pesos arxentinos</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Franco belga (convertible)</displayName>
				<displayName count="one">franco belga (convertible)</displayName>
				<displayName count="other">francos belgas (convertibles)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franco belga</displayName>
				<displayName count="one">franco belga</displayName>
				<displayName count="other">francos belgas</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Franco belga (financeiro)</displayName>
				<displayName count="one">franco belga (financeiro)</displayName>
				<displayName count="other">francos belgas (financeiros)</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="one">boliviano</displayName>
				<displayName count="other">bolivianos</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Peso boliviano</displayName>
				<displayName count="one">peso boliviano</displayName>
				<displayName count="other">pesos bolivianos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>MVDOL boliviano</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Cruzeiro novo brasileiro (1967-1986)</displayName>
				<displayName count="one">cruzeiro novo brasileiro</displayName>
				<displayName count="other">cruzeiros novos brasileiros</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado brasileiro</displayName>
				<displayName count="one">cruzado brasileiro</displayName>
				<displayName count="other">cruzados brasileiros</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro brasileiro (1990-1993)</displayName>
				<displayName count="one">cruzeiro brasileiro (BRE)</displayName>
				<displayName count="other">cruzeiros brasileiros (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real brasileiro</displayName>
				<displayName count="one">real brasileiro</displayName>
				<displayName count="other">reais brasileiros</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Cruzado novo brasileiro</displayName>
				<displayName count="one">cruzado novo brasileiro</displayName>
				<displayName count="other">cruzados novos brasileiros</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro brasileiro</displayName>
				<displayName count="one">cruzeiro brasileiro</displayName>
				<displayName count="other">cruzeiros brasileiros</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Dólar canadiano</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franco suizo</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de fomento chilenas</displayName>
				<displayName count="one">unidade de fomento chilena</displayName>
				<displayName count="other">unidades de fomento chilenas</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso chileno</displayName>
				<displayName count="one">peso chileno</displayName>
				<displayName count="other">pesos chilenos</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Iuan renminbi chinés</displayName>
				<displayName count="one">iuán chinés</displayName>
				<displayName count="other">iuáns chineses</displayName>
			</currency>
			<currency type="COP">
				<displayName>Peso colombiano</displayName>
				<displayName count="one">peso colombiano</displayName>
				<displayName count="other">pesos colombianos</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Colón costarricense</displayName>
				<displayName count="one">colón costarricense</displayName>
				<displayName count="other">colóns costarricenses</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso cubano</displayName>
				<displayName count="one">peso cubano</displayName>
				<displayName count="other">pesos cubanos</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marco alemán</displayName>
				<displayName count="one">marco alemán</displayName>
				<displayName count="other">marcos alemáns</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Coroa dinamarquesa</displayName>
			</currency>
			<currency type="DOP">
				<displayName>Peso dominicano</displayName>
				<displayName count="one">peso dominicano</displayName>
				<displayName count="other">pesos dominicanos</displayName>
			</currency>
			<currency type="ECS">
				<displayName>Sucre ecuatoriano</displayName>
				<displayName count="one">sucre ecuatoriano</displayName>
				<displayName count="other">sucres ecuatorianos</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidade de valor constante ecuatoriana</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Peseta española (conta A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Peseta española (conta convertible)</displayName>
			</currency>
			<currency type="ESP">
				<pattern>#,##0 ¤;-#,##0 ¤</pattern>
				<displayName>Peseta española</displayName>
				<displayName count="one">peseta</displayName>
				<displayName count="other">pesetas</displayName>
				<symbol>₧</symbol>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<displayName count="one">euro</displayName>
				<displayName count="other">euros</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franco francés</displayName>
				<displayName count="one">franco francés</displayName>
				<displayName count="other">francos franceses</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Libra esterlina</displayName>
				<displayName count="one">libra esterlina</displayName>
				<displayName count="other">libras esterlinas</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Libra de Xibraltar</displayName>
				<displayName count="one">libra xibraltareña</displayName>
				<displayName count="other">libras xibraltareñas</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franco guineano</displayName>
			</currency>
			<currency type="GNS">
				<displayName>Syli guineano</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Dracma grego</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal guatemalteco</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Lempira hondureño</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Florín húngaro</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Libra irlandesa</displayName>
				<displayName count="one">libra irlandesa</displayName>
				<displayName count="other">libras irlandesas</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupia india</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Coroa islandesa</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lira italiana</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Ien xaponés</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Franco convertible luxemburgués</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Franco luxemburgués</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Franco financeiro luxemburgués</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Dirham marroquí</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Franco marroquí</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Peso mexicano</displayName>
				<displayName count="one">peso mexicano</displayName>
				<displayName count="other">pesos mexicanos</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Peso de prata mexicano (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidade de inversión mexicana</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Córdoba nicaragüense</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Córdoba de ouro nicaragüense</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Florín holandés</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Coroa norueguesa</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Balboa panameño</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti peruano</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Sol novo peruano</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol peruano</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso filipino</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escudo portugués</displayName>
				<displayName count="one">escudo portugués</displayName>
				<displayName count="other">escudos portugueses</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Guaraní paraguaio</displayName>
				<displayName count="one">guaraní do paraguai</displayName>
				<displayName count="other">guaranís do paraguai</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rublo ruso</displayName>
				<displayName count="one">rublo ruso</displayName>
				<displayName count="other">rublos rusos</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rublo ruso (1991-1998)</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Coroa sueca</displayName>
			</currency>
			<currency type="SUR">
				<displayName>Rublo soviético</displayName>
				<displayName count="one">rublo soviético</displayName>
				<displayName count="other">rublos soviéticos</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colón salvadoreño</displayName>
				<displayName count="one">colón salvadoreño</displayName>
				<displayName count="other">colóns salvadoreños</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dólar estadounidense</displayName>
				<displayName count="one">dólar estadounidense</displayName>
				<displayName count="other">dólares estadounidenses</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Peso en unidades indexadas uruguaio</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Peso uruguaio (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Peso uruguaio</displayName>
				<displayName count="one">peso uruguaio</displayName>
				<displayName count="other">pesos uruguaios</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolívar venezolano</displayName>
				<displayName count="one">bolívar venezolano</displayName>
				<displayName count="other">bolívares venezolanos</displayName>
			</currency>
			<currency type="VEF">
				<displayName>Bolívar forte venezolano</displayName>
				<displayName count="one">bolívar forte venezolano</displayName>
				<displayName count="other">bolívares fortes venezolanos</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Prata</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Ouro</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Paladio</displayName>
			</currency>
			<currency type="XPT">
				<displayName>Platino</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Unidade monetaria descoñecida ou non válida</displayName>
				<displayName count="one">unidade monetaria descoñecida ou non válida</displayName>
				<displayName count="other">unidades monetarias descoñecidas ou non válidas</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand sudafricano</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} día</unitPattern>
			<unitPattern count="other">{0} días</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hora</unitPattern>
			<unitPattern count="other">{0} horas</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuto</unitPattern>
			<unitPattern count="other">{0} minutos</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mes</unitPattern>
			<unitPattern count="other">{0} meses</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} segundo</unitPattern>
			<unitPattern count="other">{0} segundos</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} semana</unitPattern>
			<unitPattern count="other">{0} semanas</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} ano</unitPattern>
			<unitPattern count="other">{0} anos</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>si:s</yesstr>
			<nostr>non:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[B��j##Locale/Data/nn_NO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nn"/>
		<territory type="NO"/>
	</identity>
</ldml>
PKpG[�2���{�{Locale/Data/cy.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/15 18:49:20 $"/>
		<language type="cy"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Affricaneg</language>
			<language type="am">Amhareg</language>
			<language type="ar">Arabeg</language>
			<language type="as">Asameg</language>
			<language type="az">Azerbaijani</language>
			<language type="be">Belarwsiyn</language>
			<language type="bg">Bwlgareg</language>
			<language type="bh">Bihari</language>
			<language type="bn">Bengali; Bangla</language>
			<language type="br">Llydaweg</language>
			<language type="bs">Bosnieg</language>
			<language type="ca">Catalaneg</language>
			<language type="cs">Tsiec</language>
			<language type="cy">Cymraeg</language>
			<language type="da">Daneg</language>
			<language type="de">Almaeneg</language>
			<language type="el">Groeg</language>
			<language type="en">Saesneg</language>
			<language type="eo">Esperanto</language>
			<language type="es">Sbaeneg</language>
			<language type="et">Estoneg</language>
			<language type="eu">Basgeg</language>
			<language type="fa">Persieg</language>
			<language type="fi">Ffineg</language>
			<language type="fil">Tagalog</language>
			<language type="fo">Ffaroeg</language>
			<language type="fr">Ffrangeg</language>
			<language type="fy">Ffrisieg</language>
			<language type="ga">Gwyddeleg</language>
			<language type="gd">Gaeleg yr Alban</language>
			<language type="gl">Galiseg</language>
			<language type="gn">Guarani</language>
			<language type="gu">Gwjarati</language>
			<language type="he">Hebraeg</language>
			<language type="hi">Hindi</language>
			<language type="hr">Croateg</language>
			<language type="hu">Hwngareg</language>
			<language type="hy">Armeneg</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesieg</language>
			<language type="ie">Interlingue</language>
			<language type="is">Islandeg</language>
			<language type="it">Eidaleg</language>
			<language type="ja">Siapaneeg</language>
			<language type="jv">Jafanaeg</language>
			<language type="ka">Georgeg</language>
			<language type="km">Cambodieg</language>
			<language type="kn">Kannada</language>
			<language type="ko">Corëeg</language>
			<language type="ku">Cwrdeg</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Lladin</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laoeg</language>
			<language type="lt">Lithwaneg</language>
			<language type="lv">Latfieg</language>
			<language type="mk">Macedoneg</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongoleg</language>
			<language type="mr">Marathi</language>
			<language type="ms">Malai</language>
			<language type="mt">Malteseg</language>
			<language type="ne">Nepali</language>
			<language type="nl">Iseldireg</language>
			<language type="nn">Norwyeg (Nynorsk)</language>
			<language type="no">Norwyeg</language>
			<language type="oc">Ocsitaneg</language>
			<language type="or">Oriya</language>
			<language type="pa">Pwnjabi</language>
			<language type="pl">Pwyleg</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portiwgaleg</language>
			<language type="ro">Rwmaneg</language>
			<language type="ru">Rwsieg</language>
			<language type="sa">Sansgrit</language>
			<language type="sd">Sindhi</language>
			<language type="sh">Serbo-Croateg</language>
			<language type="si">Sinhaleg</language>
			<language type="sk">Slofaceg</language>
			<language type="sl">Slofeneg</language>
			<language type="so">Somaleg</language>
			<language type="sq">Albaneg</language>
			<language type="sr">Serbeg</language>
			<language type="st">Sesotheg</language>
			<language type="su">Sundaneg</language>
			<language type="sv">Swedeg</language>
			<language type="sw">Swahili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Tai</language>
			<language type="ti">Tigrinya</language>
			<language type="tk">Tyrcmeneg</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Twrceg</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Wcreineg</language>
			<language type="und">anh</language>
			<language type="ur">Urdu</language>
			<language type="uz">Wsbeceg</language>
			<language type="vi">Fietnameg</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Iddew-Almaeneg</language>
			<language type="zh">Tseineeg</language>
			<language type="zu">Zwlw</language>
		</languages>
		<scripts>
			<script type="Latn">Lladin</script>
		</scripts>
		<territories>
			<territory type="001">Y Byd</territory>
			<territory type="002">Affrica</territory>
			<territory type="005">De America</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Gorllewin Affrica</territory>
			<territory type="013">Canolbarth America</territory>
			<territory type="014">Dwyrain Affrica</territory>
			<territory type="015">Gogledd Affrica</territory>
			<territory type="017">Canol Affrica</territory>
			<territory type="018">De Affrica [018]</territory>
			<territory type="019">Americas</territory>
			<territory type="021">Gogledd America</territory>
			<territory type="029">Y Caribî</territory>
			<territory type="030">Dwyrain Asia</territory>
			<territory type="035">De ddwyrain Asia</territory>
			<territory type="039">De Ewrop</territory>
			<territory type="053">Awstralia a Seland Newydd</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Micronesia [057]</territory>
			<territory type="061">Polynesia</territory>
			<territory type="062">De Canol Asia</territory>
			<territory type="142">Asia</territory>
			<territory type="145">Gorllewin Asia</territory>
			<territory type="150">Ewrop</territory>
			<territory type="151">Dwyrain Ewrop</territory>
			<territory type="154">Gogledd Ewrop</territory>
			<territory type="155">Gorllewin Ewrop</territory>
			<territory type="830">Ynysoedd y Sianel</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emiraethau Arabaidd Unedig</territory>
			<territory type="AF">Affganistan</territory>
			<territory type="AG">Antigwa a Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Ynysoedd Caribî yr Iseldiroedd</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Yr Ariannin</territory>
			<territory type="AS">Samoa Americanaidd</territory>
			<territory type="AT">Awstria</territory>
			<territory type="AU">Awstralia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Ynysoedd Aland</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia a Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Gwlad Belg</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bwlgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermwda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolifia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Y Bahamas</territory>
			<territory type="BT">Bhwtan</territory>
			<territory type="BV">Ynys Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Belarws</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Ynysoedd Cocos (Keeling)</territory>
			<territory type="CD">Gweriniaeth Ddemocrataidd y Congo</territory>
			<territory type="CF">Gweriniaeth Canol Affrica</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Y Swistir</territory>
			<territory type="CI">Côte d’Ivoire</territory>
			<territory type="CK">Ynysoedd Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Y Camerŵn</territory>
			<territory type="CN">Tseina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CU">Ciwba</territory>
			<territory type="CV">Cape Verde</territory>
			<territory type="CX">Ynys y Nadolig</territory>
			<territory type="CY">Cyprus</territory>
			<territory type="CZ">Gweriniaeth Tsiec</territory>
			<territory type="DE">Yr Almaen</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Denmarc</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Y Weriniaeth Ddominicaidd</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecwador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Yr Aifft</territory>
			<territory type="EH">Gorllewin Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Sbaen</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Y Ffindir</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Ynysoedd y Falkland</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Ynysoedd Ffaröe</territory>
			<territory type="FR">Ffrainc</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Prydain Fawr</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Giana Ffrengig</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Yr Ynys Las</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Gini</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Gini Gyhydeddol</territory>
			<territory type="GR">Gwlad Groeg</territory>
			<territory type="GS">Ynysoedd De Georgia a De Sandwich</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong S.A.R., Tseina</territory>
			<territory type="HM">Ynys Heard ac Ynysoedd McDonald</territory>
			<territory type="HN">Hondwras</territory>
			<territory type="HR">Croatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hwngari</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Iwerddon</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Ynys Manaw</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Tiriogaeth Cefnfor India Prydain</territory>
			<territory type="IQ">Irac</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Gwlad yr Iâ</territory>
			<territory type="IT">Yr Eidal</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Yr Iorddonen</territory>
			<territory type="JP">Siapan</territory>
			<territory type="KE">Cenia</territory>
			<territory type="KG">Cirgistan</territory>
			<territory type="KH">Cambodia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoros</territory>
			<territory type="KN">Saint Kitts a Nevis</territory>
			<territory type="KP">Gogledd Corea</territory>
			<territory type="KR">De Corea</territory>
			<territory type="KW">Coweit</territory>
			<territory type="KY">Ynysoedd Cayman</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanus</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lithwania</territory>
			<territory type="LU">Lwcsembwrg</territory>
			<territory type="LV">Latfia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Moroco</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldofa</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Ynysoedd Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao S.A.R., Tseina</territory>
			<territory type="MP">Ynysoedd Gogledd Mariana</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mawritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mawrisiws</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mecsico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Caledonia Newydd</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Ynys Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragwa</territory>
			<territory type="NL">Yr Iseldiroedd</territory>
			<territory type="NO">Norwy</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nawrw</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Seland Newydd</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Perw</territory>
			<territory type="PF">Polynesia Ffrainc</territory>
			<territory type="PG">Papua Gini Newydd</territory>
			<territory type="PH">Philipinau</territory>
			<territory type="PK">Pacistan</territory>
			<territory type="PL">Gwlad Pwyl</territory>
			<territory type="PM">Saint Pierre a Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Tiriogaeth Palesteina</territory>
			<territory type="PT">Portiwgal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Ynysoedd Pellenig y De</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rwmania</territory>
			<territory type="RU">Rwsia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Sawdi-Arabia</territory>
			<territory type="SB">Ynysoedd Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Y Swdan</territory>
			<territory type="SE">Sweden</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slofenia</territory>
			<territory type="SJ">Svalbard a Jan Mayen</territory>
			<territory type="SK">Slofacia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Swrinam</territory>
			<territory type="ST">Sao Tome a Principe</territory>
			<territory type="SV">El Salfador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Ynysoedd Turks a Caicos</territory>
			<territory type="TD">Chad</territory>
			<territory type="TF">Tiriogaethau Ffrengig y De</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Gwlad Thai</territory>
			<territory type="TJ">Tajicistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor-Leste</territory>
			<territory type="TM">Tyrcmenistan</territory>
			<territory type="TN">Tiwnisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Twrci</territory>
			<territory type="TT">Trinidad a Thobago</territory>
			<territory type="TV">Twfalw</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tansanïa</territory>
			<territory type="UA">Wcráin</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Mân Ynysoedd Pellenig yr Unol Daleithiau</territory>
			<territory type="US">Yr Unol Daleithiau</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Wsbecistan</territory>
			<territory type="VA">Y Fatican</territory>
			<territory type="VC">Saint Vincent a’r Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Ynysoedd Prydeinig y Wyryf</territory>
			<territory type="VI">Ynysoedd Americanaidd y Wyryf</territory>
			<territory type="VN">Fietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis a Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">De Affrica</territory>
			<territory type="ZM">Sambia</territory>
			<territory type="ZW">Simbabwe</territory>
		</territories>
		<measurementSystemNames>
			<measurementSystemName type="US">UD</measurementSystemName>
			<measurementSystemName type="metric">Metrig</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á à â ä b c {ch} d {dd} e é è ê ë f {ff} g-i í ì î ï l {ll} m n {ng} o ó ò ô ö p {ph} r {rh} s t {th} u ú ù û ü w ẃ ẁ ŵ ẅ y ý ỳ ŷ ÿ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[j k q v x z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ion</month>
							<month type="2">Chwef</month>
							<month type="3">Mawrth</month>
							<month type="4">Ebrill</month>
							<month type="5">Mai</month>
							<month type="6">Meh</month>
							<month type="7">Gorff</month>
							<month type="8">Awst</month>
							<month type="9">Medi</month>
							<month type="10">Hyd</month>
							<month type="11">Tach</month>
							<month type="12">Rhag</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ionawr</month>
							<month type="2">Chwefror</month>
							<month type="3">Mawrth</month>
							<month type="4">Ebrill</month>
							<month type="5">Mai</month>
							<month type="6">Mehefin</month>
							<month type="7">Gorffenaf</month>
							<month type="8">Awst</month>
							<month type="9">Medi</month>
							<month type="10">Hydref</month>
							<month type="11">Tachwedd</month>
							<month type="12">Rhagfyr</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="2">Chwe</month>
							<month type="3">Maw</month>
							<month type="4">Ebr</month>
							<month type="7">Gor</month>
						</monthWidth>
						<monthWidth type="narrow">
							<month type="1">I</month>
							<month type="2">C</month>
							<month type="3">M</month>
							<month type="4">E</month>
							<month type="5">M</month>
							<month type="6">M</month>
							<month type="7">G</month>
							<month type="8">A</month>
							<month type="9">M</month>
							<month type="10">H</month>
							<month type="11">T</month>
							<month type="12">R</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="7">Gorffennaf</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sul</day>
							<day type="mon">Llun</day>
							<day type="tue">Maw</day>
							<day type="wed">Mer</day>
							<day type="thu">Iau</day>
							<day type="fri">Gwen</day>
							<day type="sat">Sad</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Dydd Sul</day>
							<day type="mon">Dydd Llun</day>
							<day type="tue">Dydd Mawrth</day>
							<day type="wed">Dydd Mercher</day>
							<day type="thu">Dydd Iau</day>
							<day type="fri">Dydd Gwener</day>
							<day type="sat">Dydd Sadwrn</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="abbreviated">
							<day type="fri">Gwe</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">I</day>
							<day type="fri">G</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Ch1</quarter>
							<quarter type="2">Ch2</quarter>
							<quarter type="3">Ch3</quarter>
							<quarter type="4">Ch4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Chwarter 1af</quarter>
							<quarter type="2">2il chwarter</quarter>
							<quarter type="3">3ydd chwarter</quarter>
							<quarter type="4">4ydd chwarter</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Cyn Crist</era>
						<era type="1">Oed Crist</era>
					</eraNames>
					<eraAbbr>
						<era type="0">CC</era>
						<era type="1">OC</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">C</era>
						<era type="1">O</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="yyMMdd">yy-MM-dd</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, d/M – E, d/M</greatestDifference>
							<greatestDifference id="d">E, d/M – E, d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM – E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d MMM – E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">MMM d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M – d/M</greatestDifference>
							<greatestDifference id="d">d/M – d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a – h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a – h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm–h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm–h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a – h a v</greatestDifference>
							<greatestDifference id="h">h–h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy – M/yy</greatestDifference>
							<greatestDifference id="y">M/yy – M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, d/M/yy - E, d/M/yy</greatestDifference>
							<greatestDifference id="d">E, d/M/yy - E, d/M/yy</greatestDifference>
							<greatestDifference id="y">E, d/M/yy - E, d/M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM - MMM, yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">E, d MMM - E, d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM, yyyy - E, d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM, yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM, yyyy</greatestDifference>
							<greatestDifference id="y">d MMM, yyyy - d MMM, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy - d/M/yy</greatestDifference>
							<greatestDifference id="d">d/M/yy - d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy - d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Oes</displayName>
					</field>
					<field type="year">
						<displayName>Blwyddyn</displayName>
					</field>
					<field type="month">
						<displayName>Mis</displayName>
					</field>
					<field type="week">
						<displayName>Wythnos</displayName>
					</field>
					<field type="day">
						<displayName>Dydd</displayName>
						<relative type="2">Drennydd</relative>
						<relative type="3">Ymhen tridiau</relative>
						<relative type="-2">Echdoe</relative>
						<relative type="-3">Dridiau yn ôl</relative>
					</field>
					<field type="weekday">
						<displayName>Dydd o'r Wythnos</displayName>
					</field>
					<field type="dayperiod">
						<displayName>AM/PM</displayName>
					</field>
					<field type="hour">
						<displayName>Awr</displayName>
					</field>
					<field type="minute">
						<displayName>Munud</displayName>
					</field>
					<field type="second">
						<displayName>Eiliad</displayName>
					</field>
					<field type="zone">
						<displayName>Cylchfa</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Pegwn y De</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. John’s</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Llundain</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Dinas Mecsico</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Efrog Newydd</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Real Brasil</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi Tseina</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Ewro</displayName>
				<symbol>EUR</symbol>
			</currency>
			<currency type="GBP">
				<displayName>Punt Sterling Prydain</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rwpî India</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yen Siapan</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rwbl Rwsia</displayName>
			</currency>
			<currency type="USD">
				<displayName>Doler yr UDA</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[u�m���Locale/Data/es_MX.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="MX"/>
	</identity>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencies>
			<currency type="MXN">
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[O8�zOOLocale/Data/pa_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="pa"/>
		<territory type="IN"/>
	</identity>
	<alias source="pa_Guru_IN" path="//ldml"/>
</ldml>
PKpG[P�t��Locale/Data/sr_Cyrl_BA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
		<territory type="BA"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="sr">српски</language>
		</languages>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="6">јуни</month>
							<month type="7">јули</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="wed">сри</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="wed">сриједа</day>
						</dayWidth>
					</dayContext>
				</days>
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH 'часова', mm 'минута', ss 'секунди' v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-MM - yy-MM</greatestDifference>
							<greatestDifference id="y">yy-MM - yy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="d">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="y">yy-MM-dd - yy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="BAM">
				<displayName>Конвертибилна Марка</displayName>
				<symbol>КМ.</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�/��##Locale/Data/mt_MT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mt"/>
		<territory type="MT"/>
	</identity>
</ldml>
PKpG[������Locale/Data/en_JM.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.41 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="JM"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[�nv�##Locale/Data/ta_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.55 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="ta"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[�nL�'�'�Locale/Data/it.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.105 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="it"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhazian</language>
			<language type="ace">accinese</language>
			<language type="ach">acioli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avestan</language>
			<language type="af">afrikaans</language>
			<language type="afa">lingua afroasiatica</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">accado</language>
			<language type="ale">aleuto</language>
			<language type="alg">lingue algonchine</language>
			<language type="alt">altai meridionale</language>
			<language type="am">amarico</language>
			<language type="an">aragonese</language>
			<language type="ang">inglese antico</language>
			<language type="anp">angika</language>
			<language type="apa">lingue apache</language>
			<language type="ar">arabo</language>
			<language type="arc">aramaico</language>
			<language type="arn">araucano</language>
			<language type="arp">arapaho</language>
			<language type="art">lingua artificiale</language>
			<language type="arw">aruaco</language>
			<language type="as">assamese</language>
			<language type="ast">asturiano</language>
			<language type="ath">lingue athabaska</language>
			<language type="aus">lingue australiane</language>
			<language type="av">avaro</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">azerbaigiano</language>
			<language type="ba">baschiro</language>
			<language type="bad">banda</language>
			<language type="bai">lingue bamileke</language>
			<language type="bal">beluci</language>
			<language type="ban">balinese</language>
			<language type="bas">basa</language>
			<language type="bat">lingua baltica</language>
			<language type="be">bielorusso</language>
			<language type="bej">begia</language>
			<language type="bem">wemba</language>
			<language type="ber">berbero</language>
			<language type="bg">bulgaro</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bicol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalese</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetano</language>
			<language type="br">bretone</language>
			<language type="bra">braj</language>
			<language type="bs">bosniaco</language>
			<language type="btk">batak</language>
			<language type="bua">buriat</language>
			<language type="bug">bugi</language>
			<language type="byn">blin</language>
			<language type="ca">catalano</language>
			<language type="cad">caddo</language>
			<language type="cai">lingua indiana dell'America Centrale</language>
			<language type="car">caribico</language>
			<language type="cau">lingua caucasica</language>
			<language type="cch">atsam</language>
			<language type="ce">ceceno</language>
			<language type="ceb">cebuano</language>
			<language type="cel">celtica altra lingua</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">ciagataico</language>
			<language type="chk">chuukese</language>
			<language type="chm">mari</language>
			<language type="chn">gergo chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">lingue chamic</language>
			<language type="co">corso</language>
			<language type="cop">copto</language>
			<language type="cpe">creolo o pidgin basati sull'inglese</language>
			<language type="cpf">creolo o pidgin basati sul francese</language>
			<language type="cpp">creolo o pidgin basati sul portoghese</language>
			<language type="cr">cree</language>
			<language type="crh">turco crimeo</language>
			<language type="crp">creolo o pidgin</language>
			<language type="cs">ceco</language>
			<language type="csb">kashubian</language>
			<language type="cu">slavo della Chiesa</language>
			<language type="cus">lingua cuscitica</language>
			<language type="cv">chuvash</language>
			<language type="cy">gallese</language>
			<language type="da">danese</language>
			<language type="dak">dakota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">tedesco</language>
			<language type="de_AT">tedesco austriaco</language>
			<language type="de_CH">alto tedesco svizzero</language>
			<language type="del">delaware</language>
			<language type="den">slave</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinca</language>
			<language type="doi">dogri</language>
			<language type="dra">lingua dravidica</language>
			<language type="dsb">basso sorabo</language>
			<language type="dua">duala</language>
			<language type="dum">olandese medio</language>
			<language type="dv">divehi</language>
			<language type="dyu">diula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">egiziano antico</language>
			<language type="eka">ekajuka</language>
			<language type="el">greco</language>
			<language type="elx">elamitico</language>
			<language type="en">inglese</language>
			<language type="en_AU">inglese australiano</language>
			<language type="en_CA">inglese canadese</language>
			<language type="en_GB">inglese britannico</language>
			<language type="en_US">inglese americano</language>
			<language type="enm">inglese medio</language>
			<language type="eo">esperanto</language>
			<language type="es">spagnolo</language>
			<language type="es_419">spagnolo latinoamericano</language>
			<language type="es_ES">spagnolo della Spagna</language>
			<language type="et">estone</language>
			<language type="eu">basco</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persiano</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulah</language>
			<language type="fi">finlandese</language>
			<language type="fil">filippino</language>
			<language type="fiu">lingua ungrofinnica</language>
			<language type="fj">figiano</language>
			<language type="fo">faroese</language>
			<language type="fr">francese</language>
			<language type="fr_CA">francese canadese</language>
			<language type="fr_CH">francese svizzero</language>
			<language type="frm">francese medio</language>
			<language type="fro">francese antico</language>
			<language type="frr">frisone settentrionale</language>
			<language type="fur">friulano</language>
			<language type="fy">frisone</language>
			<language type="ga">irlandese</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">gaelico scozzese</language>
			<language type="gem">lingua germanica</language>
			<language type="gez">geez</language>
			<language type="gil">gilbertese</language>
			<language type="gl">galiziano</language>
			<language type="gmh">tedesco medio alto</language>
			<language type="gn">guarana</language>
			<language type="goh">tedesco antico alto</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotico</language>
			<language type="grb">gerbo</language>
			<language type="grc">greco antico</language>
			<language type="gsw">tedesco svizzero</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichʼin</language>
			<language type="ha">haussa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiano</language>
			<language type="he">ebraico</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligayna</language>
			<language type="him">himachali</language>
			<language type="hit">hittite</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">croato</language>
			<language type="hsb">alto sorabo</language>
			<language type="ht">haitiano</language>
			<language type="hu">ungherese</language>
			<language type="hup">hupa</language>
			<language type="hy">armeno</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesiano</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">sichuan yi</language>
			<language type="ik">inupiak</language>
			<language type="ilo">ilocano</language>
			<language type="inc">lingua indiana</language>
			<language type="ine">lingua indoeuropea</language>
			<language type="inh">ingush</language>
			<language type="io">ido</language>
			<language type="ira">iraniana</language>
			<language type="iro">lingue irochesi</language>
			<language type="is">islandese</language>
			<language type="it">italiano</language>
			<language type="iu">inuktitut</language>
			<language type="ja">giapponese</language>
			<language type="jbo">lojban</language>
			<language type="jpr">giudeo persiano</language>
			<language type="jrb">giudeo arabo</language>
			<language type="jv">giavanese</language>
			<language type="ka">georgiano</language>
			<language type="kaa">kara-kalpak</language>
			<language type="kab">kabyle</language>
			<language type="kac">kachin</language>
			<language type="kaj">kai</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardia</language>
			<language type="kcg">tyap</language>
			<language type="kfo">kfo</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">lingua khoisan</language>
			<language type="kho">khotanese</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kazako</language>
			<language type="kl">kalaallisut</language>
			<language type="km">khmer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">coreano</language>
			<language type="kok">konkani</language>
			<language type="kos">kosraean</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karachay-Balkar</language>
			<language type="krl">careliano</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kashmiri</language>
			<language type="ku">curdo</language>
			<language type="kum">kumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">cornico</language>
			<language type="ky">kirghiso</language>
			<language type="la">latino</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">lussemburghese</language>
			<language type="lez">lezghian</language>
			<language type="lg">ganda</language>
			<language type="li">limburgese</language>
			<language type="ln">lingala</language>
			<language type="lo">lao</language>
			<language type="lol">lolo bantu</language>
			<language type="loz">lozi</language>
			<language type="lt">lituano</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">lettone</language>
			<language type="mad">madurese</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandingo</language>
			<language type="map">austronesiano</language>
			<language type="mas">masai</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malgascio</language>
			<language type="mga">irlandese medio</language>
			<language type="mh">marshallese</language>
			<language type="mi">maori</language>
			<language type="mic">micmac</language>
			<language type="min">menangkabau</language>
			<language type="mis">lingue diverse</language>
			<language type="mk">macedone</language>
			<language type="mkh">lingua mon-khmer</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolo</language>
			<language type="mnc">manchu</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobo</language>
			<language type="mo">moldavo</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malese</language>
			<language type="mt">maltese</language>
			<language type="mul">multilingua</language>
			<language type="mun">lingua munda</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandese</language>
			<language type="mwr">marwari</language>
			<language type="my">birmano</language>
			<language type="myn">lingue maya</language>
			<language type="myv">erzya</language>
			<language type="na">nauru</language>
			<language type="nah">nahuatl</language>
			<language type="nai">lingua indiana del Nord America</language>
			<language type="nap">napoletano</language>
			<language type="nb">norvegese bokmal</language>
			<language type="nd">ndebele del nord</language>
			<language type="nds">basso tedesco</language>
			<language type="ne">nepalese</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">lingua niger-cordofan</language>
			<language type="niu">niue</language>
			<language type="nl">olandese</language>
			<language type="nl_BE">fiammingo belga</language>
			<language type="nn">norvegese nynorsk</language>
			<language type="no">norvegese</language>
			<language type="nog">nogai</language>
			<language type="non">norse antico</language>
			<language type="nqo">n'ko</language>
			<language type="nr">ndebele del sud</language>
			<language type="nso">sotho del nord</language>
			<language type="nub">nubiano</language>
			<language type="nv">navajo</language>
			<language type="nwc">newari classico</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">occitano</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetico</language>
			<language type="osa">osage</language>
			<language type="ota">turco ottomano</language>
			<language type="oto">lingue otomi</language>
			<language type="pa">punjabi</language>
			<language type="paa">lingua papuana</language>
			<language type="pag">pangasinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palau</language>
			<language type="peo">persiano antico</language>
			<language type="phi">lingua filippina</language>
			<language type="phn">fenicio</language>
			<language type="pi">pali</language>
			<language type="pl">polacco</language>
			<language type="pon">ponape</language>
			<language type="pra">pracrito</language>
			<language type="pro">provenzale antico</language>
			<language type="ps">pashto</language>
			<language type="pt">portoghese</language>
			<language type="pt_BR">portoghese brasiliano</language>
			<language type="pt_PT">portoghese del Portogallo</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotonga</language>
			<language type="rm">lingua rhaeto-romance</language>
			<language type="rn">rundi</language>
			<language type="ro">rumeno</language>
			<language type="roa">lingua romanza</language>
			<language type="rom">romani</language>
			<language type="root">root</language>
			<language type="ru">russo</language>
			<language type="rup">arumeno</language>
			<language type="rw">kinyarwanda</language>
			<language type="sa">sanscrito</language>
			<language type="sad">sandawe</language>
			<language type="sah">yakut</language>
			<language type="sai">lingua indiana del Sud America</language>
			<language type="sal">lingue salish</language>
			<language type="sam">aramaico samaritano</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardo</language>
			<language type="scn">siciliano</language>
			<language type="sco">scozzese</language>
			<language type="sd">sindhi</language>
			<language type="se">sami del nord</language>
			<language type="sel">selkup</language>
			<language type="sem">lingua semitica</language>
			<language type="sg">sango</language>
			<language type="sga">irlandese antico</language>
			<language type="sgn">lingue sign</language>
			<language type="sh">serbo-croato</language>
			<language type="shn">shan</language>
			<language type="si">singalese</language>
			<language type="sid">sidamo</language>
			<language type="sio">lingue sioux</language>
			<language type="sit">lingua sino-tibetana</language>
			<language type="sk">slovacco</language>
			<language type="sl">sloveno</language>
			<language type="sla">lingua slava</language>
			<language type="sm">samoano</language>
			<language type="sma">sami del sud</language>
			<language type="smi">lingua sami</language>
			<language type="smj">sami lule</language>
			<language type="smn">sami inari</language>
			<language type="sms">sami skolt</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somalo</language>
			<language type="sog">sogdiano</language>
			<language type="son">songhai</language>
			<language type="sq">albanese</language>
			<language type="sr">serbo</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">swati</language>
			<language type="ssa">lingua nilo-sahariana</language>
			<language type="st">sotho del sud</language>
			<language type="su">sundanese</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumero</language>
			<language type="sv">svedese</language>
			<language type="sw">swahili</language>
			<language type="syr">siriaco</language>
			<language type="ta">tamil</language>
			<language type="tai">lingua tailandese</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tagicco</language>
			<language type="th">thai</language>
			<language type="ti">tigrinya</language>
			<language type="tig">tigre</language>
			<language type="tiv">tiv</language>
			<language type="tk">turcomanno</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamashek</language>
			<language type="tn">tswana</language>
			<language type="to">tonga</language>
			<language type="tog">nyasa del Tonga</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turco</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatarico</language>
			<language type="tum">tumbuka</language>
			<language type="tup">lingue tupi</language>
			<language type="tut">lingua altaica</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">ci</language>
			<language type="ty">taitiano</language>
			<language type="tyv">tuvinian</language>
			<language type="udm">udmurt</language>
			<language type="ug">uigurico</language>
			<language type="uga">ugaritico</language>
			<language type="uk">ucraino</language>
			<language type="umb">mbundu</language>
			<language type="und">lingua imprecisata</language>
			<language type="ur">urdu</language>
			<language type="uz">usbeco</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamita</language>
			<language type="vo">volapük</language>
			<language type="vot">voto</language>
			<language type="wa">vallone</language>
			<language type="wak">lingue wakash</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">sorabo</language>
			<language type="wo">volof</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xosa</language>
			<language type="yao">yao (bantu)</language>
			<language type="yap">yapese</language>
			<language type="yi">yiddish</language>
			<language type="yo">yoruba</language>
			<language type="ypk">lingue yupik</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotec</language>
			<language type="zen">zenaga</language>
			<language type="zh">cinese</language>
			<language type="zh_Hans">cinese semplificato</language>
			<language type="zh_Hant">cinese tradizionale</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">Nessun contenuto linguistico</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabo</script>
			<script type="Armn">armeno</script>
			<script type="Bali">balinese</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengali</script>
			<script type="Blis">simboli bliss</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braille</script>
			<script type="Bugi">buginese</script>
			<script type="Buhd">buhid</script>
			<script type="Cans">simboli aborigeni canadesi unificati</script>
			<script type="Cari">carian</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">copto</script>
			<script type="Cprt">cipriota</script>
			<script type="Cyrl">cirillico</script>
			<script type="Cyrs">cirillico (variante antica chiesa slavonica)</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egiziano demotico</script>
			<script type="Egyh">ieratico egiziano</script>
			<script type="Egyp">geroglifici egiziani</script>
			<script type="Ethi">etiope</script>
			<script type="Geok">kutsuri</script>
			<script type="Geor">georgiano</script>
			<script type="Glag">glagolitico</script>
			<script type="Goth">gotico</script>
			<script type="Grek">greco</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">han semplificato</script>
			<script type="Hant">han tradizionale</script>
			<script type="Hebr">ebraico</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawn hmong</script>
			<script type="Hrkt">katanaka o hiragana</script>
			<script type="Hung">antico ungherese</script>
			<script type="Inds">indu</script>
			<script type="Ital">italico antico</script>
			<script type="Java">javanese</script>
			<script type="Jpan">giapponese</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshthi</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannada</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">lao</script>
			<script type="Latf">latino (variante fraktur)</script>
			<script type="Latg">latino (variante gaelica)</script>
			<script type="Latn">latino</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">lineare A</script>
			<script type="Linb">lineare B</script>
			<script type="Lyci">lyci</script>
			<script type="Lydi">lydi</script>
			<script type="Mand">mandaico</script>
			<script type="Maya">geroglifici maya</script>
			<script type="Mero">meroitico</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongolo</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">meetei mayek</script>
			<script type="Mymr">myanmar</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanya</script>
			<script type="Perm">permico antico</script>
			<script type="Phag">phags-pa</script>
			<script type="Phnx">fenicio</script>
			<script type="Plrd">fonetica di pollard</script>
			<script type="Qaai">ereditato</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">runico</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">linguaggio dei segni</script>
			<script type="Shaw">shaviano</script>
			<script type="Sinh">singalese</script>
			<script type="Sund">sundanese</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">siriano</script>
			<script type="Syre">siriaco estrangelo</script>
			<script type="Syrj">siriaco occidentale</script>
			<script type="Syrn">siriaco orientale</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">tai lue</script>
			<script type="Taml">tamil</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">tailandese</script>
			<script type="Tibt">tibetano</script>
			<script type="Ugar">ugarita</script>
			<script type="Vaii">vaii</script>
			<script type="Visp">alfabeto visivo</script>
			<script type="Xpeo">persiano antico</script>
			<script type="Xsux">sumero-accadiano cuneiforme</script>
			<script type="Yiii">yi</script>
			<script type="Zxxx">non scritto</script>
			<script type="Zyyy">comune</script>
			<script type="Zzzz">ignoto o non valido</script>
		</scripts>
		<territories>
			<territory type="001">Mondo</territory>
			<territory type="002">Africa</territory>
			<territory type="003">Nord America</territory>
			<territory type="005">America del Sud</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">Africa occidentale</territory>
			<territory type="013">America centrale</territory>
			<territory type="014">Africa orientale</territory>
			<territory type="015">Africa del Nord</territory>
			<territory type="017">Africa centrale</territory>
			<territory type="018">Africa del Sud</territory>
			<territory type="019">Americhe</territory>
			<territory type="021">America del Nord</territory>
			<territory type="029">Caraibi</territory>
			<territory type="030">Asia orientale</territory>
			<territory type="034">Asia del Sud</territory>
			<territory type="035">Asia sudorientale</territory>
			<territory type="039">Europa del Sud</territory>
			<territory type="053">Australia e Nuova Zelanda</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Regione Micronesiana</territory>
			<territory type="061">Polinesia</territory>
			<territory type="062">Asia centro-meridionale</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Asia centrale</territory>
			<territory type="145">Asia occidentale</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa orientale</territory>
			<territory type="154">Europa del Nord</territory>
			<territory type="155">Europa occidentale</territory>
			<territory type="172">Comunità di Stati Indipendenti</territory>
			<territory type="419">America Latina e Caraibi</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emirati Arabi Uniti</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua e Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antille Olandesi</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antartide</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Americane</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Isole Aland</territory>
			<territory type="AZ">Azerbaigian</territory>
			<territory type="BA">Bosnia Erzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgio</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasile</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Isola Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorussia</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canada</territory>
			<territory type="CC">Isole Cocos</territory>
			<territory type="CD">Repubblica Democratica del Congo</territory>
			<territory type="CF">Repubblica Centrafricana</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Svizzera</territory>
			<territory type="CI">Costa d’Avorio</territory>
			<territory type="CK">Isole Cook</territory>
			<territory type="CL">Cile</territory>
			<territory type="CM">Camerun</territory>
			<territory type="CN">Cina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia e Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Capo Verde</territory>
			<territory type="CX">Isola di Christmas</territory>
			<territory type="CY">Cipro</territory>
			<territory type="CZ">Repubblica Ceca</territory>
			<territory type="DE">Germania</territory>
			<territory type="DJ">Gibuti</territory>
			<territory type="DK">Danimarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Repubblica Dominicana</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egitto</territory>
			<territory type="EH">Sahara Occidentale</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spagna</territory>
			<territory type="ET">Etiopia</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FJ">Figi</territory>
			<territory type="FK">Isole Falkland</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Isole Faroe</territory>
			<territory type="FR">Francia</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Regno Unito</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guiana Francese</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibilterra</territory>
			<territory type="GL">Groenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadalupa</territory>
			<territory type="GQ">Guinea Equatoriale</territory>
			<territory type="GR">Grecia</territory>
			<territory type="GS">Georgia del Sud e Isole Sandwich del Sud</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong-Kong</territory>
			<territory type="HM">Isole Heard ed Isole McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croazia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungheria</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israele</territory>
			<territory type="IM">Isola di Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Territorio Britannico dell’Oceano Indiano</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islanda</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Giamaica</territory>
			<territory type="JO">Giordania</territory>
			<territory type="JP">Giappone</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizistan</territory>
			<territory type="KH">Cambogia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comore</territory>
			<territory type="KN">Saint Kitts e Nevis</territory>
			<territory type="KP">Corea del Nord</territory>
			<territory type="KR">Corea del Sud</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Isole Cayman</territory>
			<territory type="KZ">Kazakistan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libano</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LU">Lussemburgo</territory>
			<territory type="LV">Lettonia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Marocco</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldavia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Isole Marshall</territory>
			<territory type="MK">Repubblica di Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Isole Marianne Settentrionali</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldive</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Messico</territory>
			<territory type="MY">Malesia</territory>
			<territory type="MZ">Mozambico</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nuova Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Isola Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Paesi Bassi</territory>
			<territory type="NO">Norvegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nuova Zelanda</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Perù</territory>
			<territory type="PF">Polinesia Francese</territory>
			<territory type="PG">Papua Nuova Guinea</territory>
			<territory type="PH">Filippine</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PM">Saint Pierre e Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portorico</territory>
			<territory type="PS">Palestina</territory>
			<territory type="PT">Portogallo</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Oceania lontana</territory>
			<territory type="QU">Unione Europea</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Federazione Russa</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arabia Saudita</territory>
			<territory type="SB">Isole Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Svezia</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Sant’Elena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard e Jan Mayen</territory>
			<territory type="SK">Slovacchia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tomé e Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Siria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Isole Turks e Caicos</territory>
			<territory type="TD">Ciad</territory>
			<territory type="TF">Territori australi francesi</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailandia</territory>
			<territory type="TJ">Tagikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Est</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turchia</territory>
			<territory type="TT">Trinidad e Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ucraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Isole Minori lontane dagli Stati Uniti</territory>
			<territory type="US">Stati Uniti</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vaticano</territory>
			<territory type="VC">Saint Vincent e Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Isole Vergini Britanniche</territory>
			<territory type="VI">Isole Vergini Americane</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis e Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sudafrica</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">regione non valida o sconosciuta</territory>
		</territories>
		<variants>
			<variant type="1901">ortografia tradizionale tedesca</variant>
			<variant type="1996">ortografia tedesca del 1996</variant>
			<variant type="AREVELA">armeno orientale</variant>
			<variant type="AREVMDA">armeno occidentale</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">fonetica IPA</variant>
			<variant type="FONUPA">fonetica UPA</variant>
			<variant type="MONOTON">monotonico</variant>
			<variant type="NEDIS">dialetto del Natisone</variant>
			<variant type="POLYTON">politonico</variant>
			<variant type="POSIX">computer</variant>
			<variant type="REVISED">ortografia revisionata</variant>
			<variant type="ROZAJ">resiano</variant>
			<variant type="SAAHO">saho</variant>
		</variants>
		<keys>
			<key type="calendar">calendario</key>
			<key type="collation">collazione</key>
			<key type="currency">valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">cinese tradizionale</type>
			<type type="buddhist" key="calendar">calendario buddista</type>
			<type type="chinese" key="calendar">calendario cinese</type>
			<type type="direct" key="collation">ordine diretto</type>
			<type type="gb2312han" key="collation">cinese semplificato</type>
			<type type="gregorian" key="calendar">calendario gregoriano</type>
			<type type="hebrew" key="calendar">calendario ebraico</type>
			<type type="indian" key="calendar">calendario nazionale indiano</type>
			<type type="islamic" key="calendar">calendario islamico</type>
			<type type="islamic-civil" key="calendar">calendario civile islamico</type>
			<type type="japanese" key="calendar">calendario giapponese</type>
			<type type="phonebook" key="collation">ordine elenco telefonico</type>
			<type type="pinyin" key="collation">ordine pinyin</type>
			<type type="stroke" key="collation">ordine segni</type>
			<type type="traditional" key="collation">ordine tradizionale</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">USA</measurementSystemName>
			<measurementSystemName type="metric">metrico</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<layout>
		<inText type="keys">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="types">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a à b-e é è f-i ì j-o ó ò p-u ù v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[í ï ú]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">gen</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">mag</month>
							<month type="6">giu</month>
							<month type="7">lug</month>
							<month type="8">ago</month>
							<month type="9">set</month>
							<month type="10">ott</month>
							<month type="11">nov</month>
							<month type="12">dic</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">gennaio</month>
							<month type="2">febbraio</month>
							<month type="3">marzo</month>
							<month type="4">aprile</month>
							<month type="5">maggio</month>
							<month type="6">giugno</month>
							<month type="7">Luglio</month>
							<month type="8">agosto</month>
							<month type="9">settembre</month>
							<month type="10">ottobre</month>
							<month type="11">novembre</month>
							<month type="12">dicembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">G</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">G</month>
							<month type="7">L</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Gennaio</month>
							<month type="2">Febbraio</month>
							<month type="3">Marzo</month>
							<month type="4">Aprile</month>
							<month type="5">Maggio</month>
							<month type="6">Giugno</month>
							<month type="7">Luglio</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dom</day>
							<day type="mon">lun</day>
							<day type="tue">mar</day>
							<day type="wed">mer</day>
							<day type="thu">gio</day>
							<day type="fri">ven</day>
							<day type="sat">sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">domenica</day>
							<day type="mon">lunedì</day>
							<day type="tue">martedì</day>
							<day type="wed">mercoledì</day>
							<day type="thu">giovedì</day>
							<day type="fri">venerdì</day>
							<day type="sat">sabato</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">G</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Domenica</day>
							<day type="mon">Lunedì</day>
							<day type="tue">Martedì</day>
							<day type="wed">Mercoledì</day>
							<day type="thu">Giovedì</day>
							<day type="fri">Venerdì</day>
							<day type="sat">Sabato</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1o trimestre</quarter>
							<quarter type="2">2o trimestre</quarter>
							<quarter type="3">3o trimestre</quarter>
							<quarter type="4">4o trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>m.</am>
				<pm>p.</pm>
				<eras>
					<eraNames>
						<era type="0">a.C.</era>
						<era type="1">d.C</era>
					</eraNames>
					<eraAbbr>
						<era type="0">aC</era>
						<era type="1">dC</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MMM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH.mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH.mm.ss</dateFormatItem>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">EEE d/M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">EEE d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">EEE d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh.mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh.mm.ss a</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q-yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM - E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d - E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy - E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>anno</displayName>
					</field>
					<field type="month">
						<displayName>mese</displayName>
					</field>
					<field type="week">
						<displayName>settimana</displayName>
					</field>
					<field type="day">
						<displayName>giorno</displayName>
						<relative type="0">oggi</relative>
						<relative type="1">domani</relative>
						<relative type="2">dopodomani</relative>
						<relative type="3">tra tre giorni</relative>
						<relative type="-1">ieri</relative>
						<relative type="-2">l'altro ieri</relative>
						<relative type="-3">tre giorni fa</relative>
					</field>
					<field type="weekday">
						<displayName>giorno della settimana</displayName>
					</field>
					<field type="dayperiod">
						<displayName>periodo del giorno</displayName>
					</field>
					<field type="hour">
						<displayName>ora</displayName>
					</field>
					<field type="minute">
						<displayName>minuto</displayName>
					</field>
					<field type="second">
						<displayName>secondo</displayName>
					</field>
					<field type="zone">
						<displayName>zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH.mm;-HH.mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Sconosciuto</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Polo Sud</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Cordova</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruxelles</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>San Paolo</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zurigo</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Pasqua</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Capo Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Natale</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlino</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Gibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenaghen</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Algeri</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Canarie</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Figi</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Isole Faeroe</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Parigi</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londra</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibilterra</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupa</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atene</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Georgia meridionale</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Guiana</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Giacarta</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dublino</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Gerusalemme</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Giamaica</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Comore</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Santa Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Lussemburgo</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldive</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Città del Messico</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsavia</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairn, isole</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portorico</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azzorre</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisbona</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Riunione, isola di</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucarest</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Mosca</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Stoccolma</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sant'Elena</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>Mogadiscio</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Sao Tomè</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damasco</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunisi</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Fuso orario Alaska</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Center, Dakota del nord</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Samarcanda</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre Time</standard>
					<daylight>Acre Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Central Africa Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>East Africa Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>South Africa Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>West Africa Time</standard>
					<daylight>West Africa Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinsk Time</standard>
					<daylight>Aktyubinsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaska Time</generic>
					<standard>Ora Standard Alaska</standard>
					<daylight>Ora Legale Alaska</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<standard>Alaska-Hawaii Standard Time</standard>
					<daylight>Alaska-Hawaii Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazon Time</standard>
					<daylight>Amazon Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Central Time</generic>
					<standard>Central Standard Time</standard>
					<daylight>Central Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Eastern Time</generic>
					<standard>Eastern Standard Time</standard>
					<daylight>Eastern Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Mountain Time</generic>
					<standard>Mountain Standard Time</standard>
					<daylight>Mountain Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Pacific Time</generic>
					<standard>Pacific Standard Time</standard>
					<daylight>Pacific Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aqtau Time</standard>
					<daylight>Aqtau Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aqtobe Time</standard>
					<daylight>Aqtobe Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arabian Time</generic>
					<standard>Arabian Standard Time</standard>
					<daylight>Arabian Daylight Time</daylight>
				</long>
				<short>
					<standard>ST arabo</standard>
					<daylight>ADT arabo</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentina Time</standard>
					<daylight>Argentina Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Western Argentina Time</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Armenia Time</standard>
					<daylight>Armenia Summer Time</daylight>
				</long>
				<short>
					<standard>AMT Armenia</standard>
					<daylight>AMST Armenia</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Ashkhabad Time</standard>
					<daylight>Ashkhabad Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlantic Time</generic>
					<standard>Atlantic Standard Time</standard>
					<daylight>Atlantic Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Central Australia Time</generic>
					<standard>Australian Central Standard Time</standard>
					<daylight>Australian Central Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Eastern Australia Time</generic>
					<standard>Australian Eastern Standard Time</standard>
					<daylight>Australian Eastern Daylight Tim</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Western Australia Time</generic>
					<standard>Australian Western Standard Time</standard>
					<daylight>Australian Western Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Azores Time</standard>
					<daylight>Azores Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Baku Time</standard>
					<daylight>Baku Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Bangladesh Time</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering Time</generic>
					<standard>Bering Standard Time</standard>
					<daylight>Bering Daylight Time</daylight>
				</long>
				<short>
					<standard>BST Bering</standard>
					<daylight>BDT Bering</daylight>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Bhutan Time</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Borneo Time</standard>
					<daylight>Borneo Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brasilia Time</standard>
					<daylight>Brasilia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<standard>Chamorro Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Changbai Time</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Chile Time</standard>
					<daylight>Chile Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Ora Standard Cina</standard>
					<daylight>Ora Legale Cina</daylight>
				</long>
				<short>
					<standard>CST (Cina)</standard>
					<daylight>CDT (Cina)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Choibalsan Time</standard>
					<daylight>Choibalsan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Dacca Time</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Dushanbe Time</standard>
					<daylight>Dushanbe Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Dutch Guiana Time</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>East Timor Time</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ecuador Time</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Ora Standard Europa Centrale</standard>
					<daylight>Ora Legale Europa Centrale</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Ora Standard Europa Orientale</standard>
					<daylight>Ora Legale Europa Orientale</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Western European Time</standard>
					<daylight>Western European Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Frunze Time</standard>
					<daylight>Frunze Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwich Mean Time</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Galapagos Time</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Georgia Time</standard>
					<daylight>Georgia Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Central Greenland Time</standard>
					<daylight>Central Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>East Greenland Time</standard>
					<daylight>East Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>West Greenland Time</standard>
					<daylight>West Greenland Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Guam Standard Time</standard>
				</long>
				<short>
					<standard>GST Guam</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<standard>Gulf Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Hawaii">
				<long>
					<generic>Hawaii Time</generic>
					<standard>Ora Standard Hawaii</standard>
					<daylight>Ora Legale Hawaii</daylight>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<generic>Hawaii-Aleutian Time</generic>
					<standard>Hawaii-Aleutian Standard Time</standard>
					<daylight>Hawaii-Aleutian Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>India Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Central Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Eastern Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Western Indonesia Time</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Ora Standard Israele</standard>
					<daylight>Ora Legale Israele</daylight>
				</long>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Ora Standard Giappone</standard>
					<daylight>Ora Legale Giappone</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karachi Time</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Kashgar Time</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<standard>East Kazakhstan Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<standard>West Kazakhstan Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Kizilorda Time</standard>
					<daylight>Kizilorda Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Korean Time</generic>
					<standard>Korean Standard Time</standard>
					<daylight>Korean Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kuybyshev Time</standard>
					<daylight>Kuybyshev Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Kwajalein Time</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Kyrgystan Time</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Lanka Time</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Long-Shu Time</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Lord Howe Time</generic>
					<standard>Lord Howe Standard Time</standard>
					<daylight>Lord Howe Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Macau Time</standard>
					<daylight>Macau Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Malaya Time</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Malaysia Time</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Marshall Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Ulan Bator Time</standard>
					<daylight>Ulan Bator Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>New Zealand Time</generic>
					<standard>New Zealand Standard Time</standard>
					<daylight>New Zealand Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Newfoundland Time</generic>
					<standard>Newfoundland Standard Time</standard>
					<daylight>Newfoundland Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>North Mariana Islands Time</standard>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Pakistan Time</standard>
					<daylight>Pakistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre and Miquelon Time</generic>
					<standard>Pierre and Miquelon Standard Time</standard>
					<daylight>Pierre and Miquelon Daylight Time</daylight>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Qyzylorda Time</standard>
					<daylight>Qyzylorda Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samara Time</standard>
					<daylight>Samara Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Samarkand  Time</standard>
					<daylight>Samarkand Summer Time</daylight>
				</long>
				<short>
					<standard>SAMT Samarkand</standard>
					<daylight>SAMST Samarkand</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Samoa Standard Time</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Shevchenko Time</standard>
					<daylight>Shevchenko Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Suriname Time</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Sverdlovsk Time</standard>
					<daylight>Sverdlovsk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Tajikistan Time</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Tashkent Time</standard>
					<daylight>Tashkent Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Tbilisi Time</standard>
					<daylight>Tbilisi Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Turkey Time</standard>
					<daylight>Turkey Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Turkmenistan Time</standard>
					<daylight>Turkmenistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Ural'sk Time</standard>
					<daylight>Ural'sk Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Urumqi Time</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Uzbekistan Time</standard>
					<daylight>Uzbekistan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Yekaterinburg Time</standard>
					<daylight>Yekaterinburg Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Yerevan Time</standard>
					<daylight>Yerevan Summer Time</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukon Time</generic>
					<standard>Yukon Standard Time</standard>
					<daylight>Yukon Daylight Time</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Peseta Andorrana</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirham degli Emirati Arabi Uniti</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afgani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afgani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Lek Albanese</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dram Armeno</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Fiorino delle Antille Olandesi</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza Angolano</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Kwanza Angolano (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Nuovo Kwanza Angolano (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza Reajustado Angolano (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral Argentino</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Peso Argentino (vecchio Cod.)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso Argentino</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Scellino Austriaco</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dollaro Australiano</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Fiorino di Aruba</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Manat Azero</displayName>
			</currency>
			<currency type="AZN">
				<displayName>manat azero</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Dinar Bosnia-Herzegovina</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Marco Conv. Bosnia-Erzegovina</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Dollaro di Barbados</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka Bangladese</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Franco Belga (convertibile)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franco Belga</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Franco Belga (finanziario)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Lev Bulgaro</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Nuovo Lev Bulgaro</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BHD">
				<displayName>Dinaro del Bahraini</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Franco del Burundi</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Dollaro delle Bermuda</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Dollaro del Brunei</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Peso Boliviano</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol Boliviano</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Cruzeiro Novo Brasiliano (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado Brasiliano</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro Brasiliano (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real Brasiliano</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Cruzado Novo Brasiliano</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro Brasiliano</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Dollaro delle Bahamas</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Ngultrum Butanese</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Kyat Birmano</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Pula del Botswana</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Nuovo Rublo Bielorussia (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Rublo Bielorussia</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Dollaro Belize</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Dollaro Canadese</displayName>
			</currency>
			<currency type="CDF">
				<displayName>Franco Congolese</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franco Svizzero</displayName>
				<symbol>SFr.</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento Chilene</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso Cileno</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Renmimbi Cinese</displayName>
			</currency>
			<currency type="COP">
				<displayName>Peso Colombiano</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Colón Costaricano</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>antico dinaro serbo</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Corona forte cecoslovacca</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso Cubano</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Escudo del Capo Verde</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Sterlina Cipriota</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Corona Ceca</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Ostmark della Germania Orientale</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marco Tedesco</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Franco Gibutiano</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Corona Danese</displayName>
			</currency>
			<currency type="DOP">
				<displayName>Peso Dominicano</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Dinaro Algerino</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Sucre dell’Ecuador</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidad de Valor Constante (UVC) dell’Ecuador</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Corona dell’Estonia</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Sterlina Egiziana</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Nakfa Eritreo</displayName>
			</currency>
			<currency type="ESA">
				<displayName>peseta spagnola account</displayName>
			</currency>
			<currency type="ESB">
				<displayName>peseta spagnola account convertibile</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Peseta Spagnola</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Birr Etiopico</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Markka Finlandese</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dollaro delle Figi</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Sterlina delle Falkland</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franco Francese</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Sterlina Inglese</displayName>
			</currency>
			<currency type="GEK">
				<displayName>Kupon Larit Georgiano</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Lari Georgiano</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Cedi del Ghana</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Sterlina di Gibilterra</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi del Gambia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franco della Guinea</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Syli della Guinea</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele della Guinea Equatoriale</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Dracma Greca</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal Guatemalteco</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Escudo della Guinea portoghese</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Peso della Guinea-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Dollaro della Guyana</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Dollaro di Hong Kong</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Lempira Hoduregno</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Dinaro Croato</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna Croata</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde Haitiano</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Fiorino Ungherese</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Rupia Indonesiana</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Lira Irlandese</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Sterlina Israeliana</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Nuovo sheqel israeliano</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupia Indiana</displayName>
			</currency>
			<currency type="IQD">
				<displayName>Dinaro Iracheno</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Rial Iraniano</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Corona Islandese</displayName>
			</currency>
			<currency type="ITL">
				<pattern>¤ #,##0;-¤ #,##0</pattern>
				<displayName>Lira Italiana</displayName>
				<symbol>₤</symbol>
				<decimal>,</decimal>
				<group>.</group>
			</currency>
			<currency type="JMD">
				<displayName>Dollaro Giamaicano</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Dinaro Giordano</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yen Giapponese</displayName>
			</currency>
			<currency type="KES">
				<displayName>Scellino Keniota</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Som  Kirghiso</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Riel Cambogiano</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Franco Comoriano</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Won Nordcoreano</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won Sudcoreano</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Dinaro Kuwaitiano</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Dollaro delle Isole Cayman</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Tenge Kazaco</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Kip Laotiano</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Sterlina Libanese</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Rupia di Sri Lanka</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Dollaro Liberiano</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Loti del Lesotho</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Lita Lituana</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Talonas Lituani</displayName>
			</currency>
			<currency type="LUC">
				<displayName>franco convertibile del Lussemburgo</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Franco del Lussemburgo</displayName>
			</currency>
			<currency type="LUL">
				<displayName>franco finanziario del Lussemburgo</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lat Lettone</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Rublo Lettone</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Dinaro Libico</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Dirham Marocchino</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Franco Marocchino</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Leu Moldavo</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ariary Malgascio</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Franco Malgascio</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Dinaro Macedone</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Franco di Mali</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Kyat di Myanmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Tugrik Mongolo</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Pataca di Macao</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ouguiya della Mauritania</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Lira Maltese</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Sterlina Maltese</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Rupia Mauriziana</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Rufiyaa delle Maldive</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Kwacha Malawiano</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Peso Messicano</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Peso messicano d’argento (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidad de Inversion (UDI) Messicana</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit della Malesia</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Escudo del Mozambico</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Metical del Mozambico</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>metical del Mozambico</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Dollaro Namibiano</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Naira Nigeriana</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Cordoba Nicaraguense</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Córdoba oro nicaraguense</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Fiorino Olandese</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Corona Norvegese</displayName>
			</currency>
			<currency type="NPR">
				<displayName>Rupia Nepalese</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Dollaro Neozelandese</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Rial Omanita</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balboa di Panama</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti Peruviano</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Sol Nuevo Peruviano</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol Peruviano</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina della Papua Nuova Guinea</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso delle Filippine</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupia del Pakistan</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Zloty Polacco</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Zloty Polacco (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escudo Portoghese</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Guarani del Paraguay</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Rial del Qatar</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>dollaro della Rhodesia</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Leu della Romania</displayName>
			</currency>
			<currency type="RON">
				<displayName>leu rumeno</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Dinaro serbo</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rublo Russo</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rublo della CSI</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Franco Ruandese</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Ryal Saudita</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Dollaro delle Isole Solomon</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Rupia delle Seychelles</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Dinaro Sudanese</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sterlina Sudanese</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Corona Svedese</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Dollaro di Singapore</displayName>
			</currency>
			<currency type="SHP">
				<displayName>Sterlina di Sant’Elena</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tallero Sloveno</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Corona Slovacca</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Leone della Sierra Leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Scellino Somalo</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Fiorino del Suriname</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra di Sao Tomé e Principe</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Rublo Sovietico</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colón Salvadoregno</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Sterlina Siriana</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni dello Swaziland</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Baht Tailandese</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Rublo del Tajikistan</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Somoni del Tajikistan</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Manat Turkmeno</displayName>
			</currency>
			<currency type="TND">
				<displayName>Dinaro Tunisino</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Paʻanga di Tonga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Escudo di Timor</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira Turca</displayName>
				<displayName count="one">lira turca</displayName>
				<displayName count="other">lire turche</displayName>
			</currency>
			<currency type="TRY">
				<displayName>nuova Lira turca</displayName>
				<displayName count="one">nuova Lira turca</displayName>
				<displayName count="other">nuove Lire turche</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Dollaro di Trinidad e Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Nuovo dollaro taiwanese</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Scellino della Tanzania</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hrivna Ucraina</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanetz Ucraino</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Scellino Ugandese (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Scellino Ugandese</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Dollaro Statunitense</displayName>
			</currency>
			<currency type="USN">
				<displayName>Dollaro Statunitense (Next day)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Dollaro Statunitense (Same day)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Peso Uruguaiano (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Peso Uruguayo uruguaiano</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Sum dell’Uzbekistan</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolivar Venezuelano</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Dong Vietnamita</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vatu di Vanuatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Tala della Samoa Occidentale</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Franco CFA BEAC</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Oro</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Unità composita europea</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Unità monetaria europea</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Unità di acconto europea (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Unità di acconto europea (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Dollaro dei Caraibi Orientali</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Diritti Speciali di Incasso</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Unità Monetaria Europea</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Franco Oro Francese</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Franco UIC Francese</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Franco CFA BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Franco CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platino</displayName>
			</currency>
			<currency type="XRE">
				<displayName>fondi RINET</displayName>
			</currency>
			<currency type="XTS">
				<displayName>codice di verifica della valuta</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Nessuna valuta</displayName>
				<displayName count="one">valuta sconosciuta/non valida</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Dinaro dello Yemen</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rial dello Yemen</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Dinaro Forte Yugoslavo</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Dinaro Noviy Yugoslavo</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Dinaro Convertibile Yugoslavo</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Rand Sudafricano (finanziario)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand Sudafricano</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Kwacha dello Zambia</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Nuovo Zaire dello Zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire dello Zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Dollaro dello Zimbabwe</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} giorno</unitPattern>
			<unitPattern count="other">{0} giorni</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} ora</unitPattern>
			<unitPattern count="other">{0} ore</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuto</unitPattern>
			<unitPattern count="other">{0} minuti</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mese</unitPattern>
			<unitPattern count="other">{0} mesi</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} secondo</unitPattern>
			<unitPattern count="other">{0} secondi</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} settimana</unitPattern>
			<unitPattern count="other">{0} settimane</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} anno</unitPattern>
			<unitPattern count="other">{0} anni</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>sì:si:s</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[4^�Žj�jLocale/Data/sv.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.124 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="sv"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abchasiska</language>
			<language type="ace">achinesiska</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adygeiska</language>
			<language type="ae">avestiska</language>
			<language type="af">afrikaans</language>
			<language type="afa">afroasiatiskt språk</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkadiska</language>
			<language type="ale">aleutiska</language>
			<language type="alg">algonkinskt språk</language>
			<language type="alt">sydaltaiska</language>
			<language type="am">amhariska</language>
			<language type="an">aragonesiska</language>
			<language type="ang">fornengelska</language>
			<language type="anp">angika</language>
			<language type="apa">apachespråk</language>
			<language type="ar">arabiska</language>
			<language type="arc">arameiska</language>
			<language type="arn">araukanska</language>
			<language type="arp">arapaho</language>
			<language type="art">konstgjort språk</language>
			<language type="arw">arawakiska</language>
			<language type="as">assamesiska</language>
			<language type="ast">asturiska</language>
			<language type="ath">athapaskiskt språk</language>
			<language type="aus">australiskt språk</language>
			<language type="av">avariskt språk</language>
			<language type="awa">awadhi</language>
			<language type="ay">aymara</language>
			<language type="az">azerbajdzjanska</language>
			<language type="ba">basjkiriska</language>
			<language type="bad">banda</language>
			<language type="bai">bamilekespråk</language>
			<language type="bal">baluchi</language>
			<language type="ban">balinesiska</language>
			<language type="bas">basa</language>
			<language type="bat">baltiskt språk</language>
			<language type="be">vitryska</language>
			<language type="bej">beyja</language>
			<language type="bem">bemba</language>
			<language type="ber">berberspråk</language>
			<language type="bg">bulgariska</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantuspråk</language>
			<language type="bo">tibetanska</language>
			<language type="br">bretonska</language>
			<language type="bra">braj</language>
			<language type="bs">bosniska</language>
			<language type="btk">batak</language>
			<language type="bua">burjätiska</language>
			<language type="bug">buginesiska</language>
			<language type="byn">blin</language>
			<language type="ca">katalanska</language>
			<language type="cad">caddo</language>
			<language type="cai">centralamerikanskt indianspråk</language>
			<language type="car">karibiska</language>
			<language type="cau">kaukasiskt språk</language>
			<language type="cch">atsam</language>
			<language type="ce">tjetjenska</language>
			<language type="ceb">cebuano</language>
			<language type="cel">keltiskt språk</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatai</language>
			<language type="chk">chuukesiska</language>
			<language type="chm">mari</language>
			<language type="chn">chinook</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokesiska</language>
			<language type="chy">cheyenne</language>
			<language type="cmc">chamispråk</language>
			<language type="co">korsikanska</language>
			<language type="cop">koptiska</language>
			<language type="cpe">engelskbaserat kreol- eller pidginspråk</language>
			<language type="cpf">franskbaserat kreol- eller pidginspråk</language>
			<language type="cpp">portugisiskbaserat kreol- eller pidginspråk</language>
			<language type="cr">cree</language>
			<language type="crh">krimtatariska</language>
			<language type="crp">kreol- eller pidginspråk</language>
			<language type="cs">tjeckiska</language>
			<language type="csb">kasjubiska</language>
			<language type="cu">kyrkslaviska</language>
			<language type="cus">kusjitiskt språk</language>
			<language type="cv">tjuvasjiska</language>
			<language type="cy">walesiska</language>
			<language type="da">danska</language>
			<language type="dak">dakota</language>
			<language type="dar">darginska</language>
			<language type="day">dajakiska</language>
			<language type="de">tyska</language>
			<language type="de_AT">österrikisk tyska</language>
			<language type="de_CH">schweizisk högtyska</language>
			<language type="del">delaware</language>
			<language type="den">slavej</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">dravidiskt språk</language>
			<language type="dsb">lågsorbiska</language>
			<language type="dua">duala</language>
			<language type="dum">medelnederländska</language>
			<language type="dv">divehi</language>
			<language type="dyu">dyula</language>
			<language type="dz">bhutanesiska</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">fornegyptiska</language>
			<language type="eka">ekajuk</language>
			<language type="el">grekiska</language>
			<language type="elx">elamitiska</language>
			<language type="en">engelska</language>
			<language type="en_AU">australisk engelska</language>
			<language type="en_CA">kanadensisk engelska</language>
			<language type="en_GB">brittisk engelska</language>
			<language type="en_US">amerikansk engelska</language>
			<language type="enm">medelengelska</language>
			<language type="eo">esperanto</language>
			<language type="es">spanska</language>
			<language type="es_419">latinamerikansk spanska</language>
			<language type="es_ES">europeisk spanska</language>
			<language type="et">estniska</language>
			<language type="eu">baskiska</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persiska</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">finska</language>
			<language type="fil">filippinska</language>
			<language type="fiu">finskugriskt språk</language>
			<language type="fj">fidjianska</language>
			<language type="fo">färöiska</language>
			<language type="fon">fonspråket</language>
			<language type="fr">franska</language>
			<language type="fr_CA">kanadensisk franska</language>
			<language type="fr_CH">schweizisk franska</language>
			<language type="frm">medelfranska</language>
			<language type="fro">fornfranska</language>
			<language type="frr">nordfrisiska</language>
			<language type="frs">östfrisiska</language>
			<language type="fur">friulianska</language>
			<language type="fy">västfrisiska</language>
			<language type="ga">iriska</language>
			<language type="gaa">gã</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">höglandsskotska</language>
			<language type="gem">germanskt språk</language>
			<language type="gez">etiopiska</language>
			<language type="gil">gilbertiska</language>
			<language type="gl">galiciska</language>
			<language type="gmh">medelhögtyska</language>
			<language type="gn">guaraní</language>
			<language type="goh">fornhögtyska</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gotiska</language>
			<language type="grb">grebo</language>
			<language type="grc">forngrekiska</language>
			<language type="gsw">schweizertyska</language>
			<language type="gu">gujarati</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichin</language>
			<language type="ha">haussa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiiska</language>
			<language type="he">hebreiska</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hettitiska</language>
			<language type="hmn">hmongspråk</language>
			<language type="ho">hirimotu</language>
			<language type="hr">kroatiska</language>
			<language type="hsb">högsorbiska</language>
			<language type="ht">haitiska</language>
			<language type="hu">ungerska</language>
			<language type="hup">hupa</language>
			<language type="hy">armeniska</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">ibanska</language>
			<language type="id">indonesiska</language>
			<language type="ie">interlingue</language>
			<language type="ig">ibo</language>
			<language type="ii">szezuan i</language>
			<language type="ijo">ijospråket</language>
			<language type="ik">inupiak</language>
			<language type="ilo">iloko</language>
			<language type="inc">indiskt språk</language>
			<language type="ine">indoeuropeiskt språk</language>
			<language type="inh">ingusjiska</language>
			<language type="io">ido</language>
			<language type="ira">iranskt språk</language>
			<language type="iro">irokesiskt språk</language>
			<language type="is">isländska</language>
			<language type="it">italienska</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japanska</language>
			<language type="jbo">lojban</language>
			<language type="jpr">judisk persiska</language>
			<language type="jrb">judisk arabiska</language>
			<language type="jv">javanesiska</language>
			<language type="ka">georgiska</language>
			<language type="kaa">karakalpakiska</language>
			<language type="kab">kabyliska</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karenska</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardinska</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kikongo</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisanspråk</language>
			<language type="kho">khotanesiska</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kazakiska</language>
			<language type="kl">grönländska</language>
			<language type="km">kambodjanska</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">koreanska</language>
			<language type="kok">konkani</language>
			<language type="kos">kosreanska</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karachay-balkar</language>
			<language type="krl">karelska</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kashmiriska</language>
			<language type="ku">kurdiska</language>
			<language type="kum">kumykiska</language>
			<language type="kut">kutenaj</language>
			<language type="kv">kome</language>
			<language type="kw">korniska</language>
			<language type="ky">kirgisiska</language>
			<language type="la">latin</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburgiska</language>
			<language type="lez">lezghien</language>
			<language type="lg">luganda</language>
			<language type="li">limburgiska</language>
			<language type="ln">lingala</language>
			<language type="lo">laotiska</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litauiska</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseño</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">lettiska</language>
			<language type="mad">maduresiska</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mande</language>
			<language type="map">austronesiskt språk</language>
			<language type="mas">massajiska</language>
			<language type="mdf">moksja</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malagassiska</language>
			<language type="mga">medeliriska</language>
			<language type="mh">marshalliska</language>
			<language type="mi">maori</language>
			<language type="mic">mic-mac</language>
			<language type="min">minangkabau</language>
			<language type="mis">annat språk</language>
			<language type="mk">makedonska</language>
			<language type="mkh">mon-khmeriskt språk</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongoliska</language>
			<language type="mnc">manchuriska</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobospråk</language>
			<language type="mo">moldaviska</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malajiska</language>
			<language type="mt">maltesiska</language>
			<language type="mul">flera språk</language>
			<language type="mun">mundaspråk</language>
			<language type="mus">muskogee</language>
			<language type="mwl">mirandesiska</language>
			<language type="mwr">marwari</language>
			<language type="my">burmesiska</language>
			<language type="myn">mayaspråk</language>
			<language type="myv">erjya</language>
			<language type="na">nauru</language>
			<language type="nah">aztekiska</language>
			<language type="nai">nordamerikanskt indianspråk</language>
			<language type="nap">napolitanska</language>
			<language type="nb">norskt bokmål</language>
			<language type="nd">nordndebele</language>
			<language type="nds">lågtyska</language>
			<language type="ne">nepalesiska</language>
			<language type="new">newariska</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">Niger-Kongospråk</language>
			<language type="niu">niueanska</language>
			<language type="nl">nederländska</language>
			<language type="nl_BE">flamländska</language>
			<language type="nn">nynorska</language>
			<language type="no">norska</language>
			<language type="nog">nogai</language>
			<language type="non">fornnordiska</language>
			<language type="nqo">n-kå</language>
			<language type="nr">sydndebele</language>
			<language type="nso">nordsotho</language>
			<language type="nub">nubiskt språk</language>
			<language type="nv">navaho</language>
			<language type="nwc">klassisk newariska</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">occitanska</language>
			<language type="oj">odjibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetiska</language>
			<language type="osa">osage</language>
			<language type="ota">ottomanska</language>
			<language type="oto">otomispråk</language>
			<language type="pa">punjabi</language>
			<language type="paa">papuanskt språk</language>
			<language type="pag">pangasinan</language>
			<language type="pal">medelpersiska</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palau</language>
			<language type="peo">fornpersiska</language>
			<language type="phi">filippinskt språk</language>
			<language type="phn">feniciska</language>
			<language type="pi">pali</language>
			<language type="pl">polska</language>
			<language type="pon">ponape</language>
			<language type="pra">prakritspråk</language>
			<language type="pro">fornprovensalska</language>
			<language type="ps">afghanska</language>
			<language type="pt">portugisiska</language>
			<language type="pt_BR">brasiliansk portugisiska</language>
			<language type="pt_PT">europeisk portugisiska</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotonganska</language>
			<language type="rm">rätoromanska</language>
			<language type="rn">rundi</language>
			<language type="ro">rumänska</language>
			<language type="roa">romanskt språk</language>
			<language type="rom">romani</language>
			<language type="root">rot</language>
			<language type="ru">ryska</language>
			<language type="rup">arumänska</language>
			<language type="rw">kinjarwanda</language>
			<language type="sa">sanskrit</language>
			<language type="sad">sandawe</language>
			<language type="sah">jakutiska</language>
			<language type="sai">sydamerikanskt indianspråk</language>
			<language type="sal">salikiskt språk</language>
			<language type="sam">samaritanska</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardiska</language>
			<language type="scn">sicilianska</language>
			<language type="sco">skotska</language>
			<language type="sd">sindhi</language>
			<language type="se">nordsamiska</language>
			<language type="sel">selkup</language>
			<language type="sem">semitiskt språk</language>
			<language type="sg">sango</language>
			<language type="sga">forniriska</language>
			<language type="sgn">teckenspråk</language>
			<language type="sh">serbokroatiska</language>
			<language type="shn">shan</language>
			<language type="si">singalesiska</language>
			<language type="sid">sidamo</language>
			<language type="sio">siouxspråk</language>
			<language type="sit">sinotibetanskt språk</language>
			<language type="sk">slovakiska</language>
			<language type="sl">slovenska</language>
			<language type="sla">slaviskt språk</language>
			<language type="sm">samoanska</language>
			<language type="sma">sydsamiska</language>
			<language type="smi">samiskt språk</language>
			<language type="smj">lulesamiska</language>
			<language type="smn">enaresamiska</language>
			<language type="sms">skoltsamiska</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somaliska</language>
			<language type="sog">sogdiska</language>
			<language type="son">songhai</language>
			<language type="sq">albanska</language>
			<language type="sr">serbiska</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">swati</language>
			<language type="ssa">nilosahariskt språk</language>
			<language type="st">sydsotho</language>
			<language type="su">sundanesiska</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumeriska</language>
			<language type="sv">svenska</language>
			<language type="sw">swahili</language>
			<language type="syc">klassisk syriska</language>
			<language type="syr">syriska</language>
			<language type="ta">tamil</language>
			<language type="tai">thaispråk</language>
			<language type="te">telugiska</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadzjikiska</language>
			<language type="th">thailändska</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigré</language>
			<language type="tiv">tivi</language>
			<language type="tk">turkmeniska</language>
			<language type="tkl">tokelauiska</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingonska</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamashek</language>
			<language type="tn">tswana</language>
			<language type="to">tonganska</language>
			<language type="tog">nyasatonganska</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turkiska</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatariska</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupíspråk</language>
			<language type="tut">altaiskt språk</language>
			<language type="tvl">tuvaluanska</language>
			<language type="tw">twi</language>
			<language type="ty">tahitiska</language>
			<language type="tyv">tuviniska</language>
			<language type="udm">udmurtiska</language>
			<language type="ug">uiguriska</language>
			<language type="uga">ugaritiska</language>
			<language type="uk">ukrainska</language>
			<language type="umb">umbundu</language>
			<language type="und">obestämt språk</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbekiska</language>
			<language type="vai">vaj</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamesiska</language>
			<language type="vo">volapük</language>
			<language type="vot">votiska</language>
			<language type="wa">vallonska</language>
			<language type="wak">wakusjiskt språk</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">sorbiskt språk</language>
			<language type="wo">wolof</language>
			<language type="xal">kalmuckiska</language>
			<language type="xh">xhosa</language>
			<language type="yao">kiyao</language>
			<language type="yap">japetiska</language>
			<language type="yi">jiddisch</language>
			<language type="yo">yoruba</language>
			<language type="ypk">eskimåspråk</language>
			<language type="za">zhuang</language>
			<language type="zap">zapotek</language>
			<language type="zbl">blissymboler</language>
			<language type="zen">zenaga</language>
			<language type="zh">kinesiska</language>
			<language type="zh_Hans">förenklad kinesiska</language>
			<language type="zh_Hant">traditionell kinesiska</language>
			<language type="znd">zandé</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">inget språkligt innehåll</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">arabiska</script>
			<script type="Armi">imperisk arameiska</script>
			<script type="Armn">armeniska</script>
			<script type="Avst">avestiska</script>
			<script type="Bali">balinesiska</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengaliska</script>
			<script type="Blis">blissymboler</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brami</script>
			<script type="Brai">blindskrift</script>
			<script type="Bugi">buginesiska</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">chakma</script>
			<script type="Cans">kanadensiska stavelsetecken</script>
			<script type="Cari">kariska</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirt</script>
			<script type="Copt">koptiska</script>
			<script type="Cprt">cypriotiska</script>
			<script type="Cyrl">kyrilliska</script>
			<script type="Cyrs">fornkyrkoslavisk kyrilliska</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">demotiska</script>
			<script type="Egyh">hieratiska</script>
			<script type="Egyp">egyptiska hieroglyfer</script>
			<script type="Ethi">etiopiska</script>
			<script type="Geok">kutsuri</script>
			<script type="Geor">georgiska</script>
			<script type="Glag">glagolitiska</script>
			<script type="Goth">gotiska</script>
			<script type="Grek">grekiska</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunå</script>
			<script type="Hans">förenklad han</script>
			<script type="Hant">traditionell han</script>
			<script type="Hebr">hebreiska</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahaw mong</script>
			<script type="Hrkt">katakana/hiragana</script>
			<script type="Hung">fornungerska</script>
			<script type="Inds">indus</script>
			<script type="Ital">fornitaliska</script>
			<script type="Java">javanska</script>
			<script type="Jpan">japanska</script>
			<script type="Kali">kaya li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshti</script>
			<script type="Khmr">khmeriska</script>
			<script type="Knda">kanaresiska</script>
			<script type="Kore">koreanska</script>
			<script type="Kthi">kaithiska</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">laotiska</script>
			<script type="Latf">frakturlatin</script>
			<script type="Latg">gaeliskt latin</script>
			<script type="Latn">latinska</script>
			<script type="Lepc">rong</script>
			<script type="Limb">limbu</script>
			<script type="Lina">linjär A</script>
			<script type="Linb">linjär B</script>
			<script type="Lyci">lykiska</script>
			<script type="Lydi">lydiska</script>
			<script type="Mand">mandaéiska</script>
			<script type="Mani">manikeanska</script>
			<script type="Maya">mayahieroglyfer</script>
			<script type="Mero">meriotiska</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongoliska</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei-mayek</script>
			<script type="Mymr">burmesiska</script>
			<script type="Nkoo">n-kå</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol-chiki</script>
			<script type="Orkh">orkon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanja</script>
			<script type="Perm">fornpermiska</script>
			<script type="Phag">phags-pa</script>
			<script type="Phli">tidig pahlavi</script>
			<script type="Phlp">psalmbokspahlavi</script>
			<script type="Phlv">bokpahlavi</script>
			<script type="Phnx">fenikiska</script>
			<script type="Plrd">pollardtecken</script>
			<script type="Prti">tidig parthianska</script>
			<script type="Qaai">ärvda</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongo-rongo</script>
			<script type="Runr">runor</script>
			<script type="Samr">samaritiska</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">teckningsskrift</script>
			<script type="Shaw">shawiska</script>
			<script type="Sinh">singalesiska</script>
			<script type="Sund">sundanesiska</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">syriska</script>
			<script type="Syre">estrangelosyriska</script>
			<script type="Syrj">västsyriska</script>
			<script type="Syrn">östsyriska</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">tai lue</script>
			<script type="Taml">tamil</script>
			<script type="Tavt">tai viet</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalog</script>
			<script type="Thaa">taana</script>
			<script type="Thai">thailändska</script>
			<script type="Tibt">tibetanska</script>
			<script type="Ugar">ugaritiska</script>
			<script type="Vaii">vaj</script>
			<script type="Visp">synligt tal</script>
			<script type="Xpeo">fornpersiska</script>
			<script type="Xsux">sumeo-akkadisk kilskrift</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">matematisk notation</script>
			<script type="Zsym">symboler</script>
			<script type="Zxxx">oskrivet språk</script>
			<script type="Zyyy">gemensamma</script>
			<script type="Zzzz">okodat skript</script>
		</scripts>
		<territories>
			<territory type="001">världen</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Nordamerika</territory>
			<territory type="005">Sydamerika</territory>
			<territory type="009">Oceanien</territory>
			<territory type="011">Västafrika</territory>
			<territory type="013">Centralamerika</territory>
			<territory type="014">Östafrika</territory>
			<territory type="015">Nordafrika</territory>
			<territory type="017">Centralafrika</territory>
			<territory type="018">södra Afrika</territory>
			<territory type="019">Nord- och Sydamerika</territory>
			<territory type="021">norra Amerika</territory>
			<territory type="029">Karibien</territory>
			<territory type="030">Östasien</territory>
			<territory type="034">södra Asien</territory>
			<territory type="035">Sydostasien</territory>
			<territory type="039">Sydeuropa</territory>
			<territory type="053">Australien och Nya Zeeland</territory>
			<territory type="054">Melanesien</territory>
			<territory type="057">Mikronesiska öarna</territory>
			<territory type="061">Polynesien</territory>
			<territory type="062">södra Centralasien</territory>
			<territory type="142">Asien</territory>
			<territory type="143">Centralasien</territory>
			<territory type="145">Västasien</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Östeuropa</territory>
			<territory type="154">Nordeuropa</territory>
			<territory type="155">Västeuropa</territory>
			<territory type="172">Oberoende staters samvälde</territory>
			<territory type="419">Latinamerika och Karibien</territory>
			<territory type="830">Kanalöarna</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Förenade Arabemiraten</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua och Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanien</territory>
			<territory type="AM">Armenien</territory>
			<territory type="AN">Nederländska Antillerna</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Amerikanska Samoa</territory>
			<territory type="AT">Österrike</territory>
			<territory type="AU">Australien</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Åland</territory>
			<territory type="AZ">Azerbajdzjan</territory>
			<territory type="BA">Bosnien och Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgien</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarien</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">S:t Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasilien</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvetön</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Vitryssland</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosöarna</territory>
			<territory type="CD">Kongo-Kinshasa</territory>
			<territory type="CF">Centralafrikanska republiken</territory>
			<territory type="CG">Kongo-Brazzaville</territory>
			<territory type="CH">Schweiz</territory>
			<territory type="CI">Elfenbenskusten</territory>
			<territory type="CK">Cooköarna</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbien och Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kap Verde</territory>
			<territory type="CX">Julön</territory>
			<territory type="CY">Cypern</territory>
			<territory type="CZ">Tjeckien</territory>
			<territory type="DE">Tyskland</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Danmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominikanska republiken</territory>
			<territory type="DZ">Algeriet</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egypten</territory>
			<territory type="EH">Västsahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanien</territory>
			<territory type="ET">Etiopien</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falklandsöarna</territory>
			<territory type="FM">Mikronesien</territory>
			<territory type="FO">Färöarna</territory>
			<territory type="FR">Frankrike</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Storbritannien</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgien</territory>
			<territory type="GF">Franska Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grönland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatorialguinea</territory>
			<territory type="GR">Grekland</territory>
			<territory type="GS">Sydgeorgien och Södra Sandwichöarna</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard- och McDonaldöarna</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Kroatien</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungern</territory>
			<territory type="ID">Indonesien</territory>
			<territory type="IE">Irland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">Indien</territory>
			<territory type="IO">Brittiska Indiska oceanöarna</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italien</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordanien</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgizistan</territory>
			<territory type="KH">Kambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komorerna</territory>
			<territory type="KN">S:t Kitts och Nevis</territory>
			<territory type="KP">Nordkorea</territory>
			<territory type="KR">Sydkorea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Caymanöarna</territory>
			<territory type="KZ">Kazakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">S:t Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litauen</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Lettland</territory>
			<territory type="LY">Libyen</territory>
			<territory type="MA">Marocko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldavien</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">S:t Martin</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshallöarna</territory>
			<territory type="MK">Makedonien</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongoliet</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Nordmarianerna</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauretanien</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldiverna</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexiko</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Moçambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nya Kaledonien</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolkön</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederländerna</territory>
			<territory type="NO">Norge</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nya Zeeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Franska Polynesien</territory>
			<territory type="PG">Papua Nya Guinea</territory>
			<territory type="PH">Filippinerna</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polen</territory>
			<territory type="PM">S:t Pierre och Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinska territoriet</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Yttre öar i Oceanien</territory>
			<territory type="QU">Europeiska unionen</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumänien</territory>
			<territory type="RS">Serbien</territory>
			<territory type="RU">Ryssland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudiarabien</territory>
			<territory type="SB">Salomonöarna</territory>
			<territory type="SC">Seychellerna</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sverige</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">S:t Helena</territory>
			<territory type="SI">Slovenien</territory>
			<territory type="SJ">Svalbard och Jan Mayen</territory>
			<territory type="SK">Slovakien</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">São Tomé och Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syrien</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks- och Caicosöarna</territory>
			<territory type="TD">Tchad</territory>
			<territory type="TF">Franska Sydterritorierna</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadzjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Östtimor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisien</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkiet</territory>
			<territory type="TT">Trinidad och Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">USA:s yttre öar</territory>
			<territory type="US">USA</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatikanstaten</territory>
			<territory type="VC">S:t Vincent och Grenadinerna</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Brittiska Jungfruöarna</territory>
			<territory type="VI">Amerikanska Jungfruöarna</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis- och Futunaöarna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sydafrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">okänd eller ogiltig regionkod</territory>
		</territories>
		<variants>
			<variant type="1901">traditionell tysk stavning</variant>
			<variant type="1994">1994 års stavning</variant>
			<variant type="1996">1996 års reformerad tysk stavning</variant>
			<variant type="1606NICT">1606 års stavning</variant>
			<variant type="1694ACAD">1694 års stavning</variant>
			<variant type="AREVELA">östarmeniska</variant>
			<variant type="AREVMDA">västarmeniska</variant>
			<variant type="BAKU1926">1926 års stavning</variant>
			<variant type="BISKE">Bila-dialekt</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">internationell fonetisk notation - IPA</variant>
			<variant type="FONUPA">uralisk fonetisk notation</variant>
			<variant type="LIPAW">Lipovaz-dialekt</variant>
			<variant type="MONOTON">monotonisk stavning</variant>
			<variant type="NEDIS">natisonsk dialekt</variant>
			<variant type="NJIVA">Njiva-dialekt</variant>
			<variant type="OSOJS">Osojane-dialekt</variant>
			<variant type="POLYTON">polytonisk stavning</variant>
			<variant type="REVISED">reformerad stavning</variant>
			<variant type="ROZAJ">resisk dialekt</variant>
			<variant type="SAAHO">saho-dialekt</variant>
			<variant type="SCOTLAND">skotska</variant>
			<variant type="SCOUSE">scouse</variant>
			<variant type="SOLBA">Solbica-dialekt</variant>
			<variant type="TARASK">Taraskievika-stavning</variant>
			<variant type="VALENCIA">valensisk dialekt</variant>
		</variants>
		<keys>
			<key type="calendar">kalender</key>
			<key type="collation">sorteringsordning</key>
			<key type="currency">valuta</key>
		</keys>
		<types>
			<type type="big5han" key="collation">traditionell kinesiska i big5-ordning</type>
			<type type="buddhist" key="calendar">buddistisk kalender</type>
			<type type="chinese" key="calendar">kinesisk kalender</type>
			<type type="direct" key="collation">direkt ordning</type>
			<type type="gb2312han" key="collation">förenklad kinesiska i gb2312-ordning</type>
			<type type="gregorian" key="calendar">gregoriansk kalender</type>
			<type type="hebrew" key="calendar">hebreisk kalender</type>
			<type type="indian" key="calendar">indisk kalender</type>
			<type type="islamic" key="calendar">islamisk kalender</type>
			<type type="islamic-civil" key="calendar">islamisk civil kalender</type>
			<type type="japanese" key="calendar">japansk kalender</type>
			<type type="phonebook" key="collation">telefonkatalogsordning</type>
			<type type="pinyin" key="collation">pinyinordning</type>
			<type type="roc" key="calendar">kinesiska republikens kalender</type>
			<type type="stroke" key="collation">streckordning</type>
			<type type="traditional" key="collation">traditionell ordning</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">engelska enheter</measurementSystemName>
			<measurementSystemName type="metric">SI-enheter</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">språk: {0}</codePattern>
			<codePattern type="script">skrift: {0}</codePattern>
			<codePattern type="territory">område: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inText type="currency">lowercase-words</inText>
		<inText type="fields">lowercase-words</inText>
		<inText type="keys">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="long">lowercase-words</inText>
		<inText type="quarterWidth">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
		<inText type="territories">titlecase-words</inText>
		<inText type="types">lowercase-words</inText>
		<inText type="variants">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a-v x-z å ä ö]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à â ã ā ç é ë í-ï ī ñ ó ú w ÿ ü æ ø]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>’</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<dateRangePattern>{0} till {1}</dateRangePattern>
		<calendars>
			<calendar type="buddhist">
				<am>fm</am>
				<pm>em</pm>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="yyMMM">MMM -yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="coptic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">tout</month>
							<month type="2">bâbâ</month>
							<month type="3">hâtour</month>
							<month type="4">kiahk</month>
							<month type="5">toubah</month>
							<month type="6">amshîr</month>
							<month type="7">barmahât</month>
							<month type="8">barmoudah</month>
							<month type="9">bashans</month>
							<month type="10">ba’ounah</month>
							<month type="11">abîb</month>
							<month type="12">misra</month>
							<month type="13">al-nasi</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="ethiopic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">mäskäräm</month>
							<month type="2">teqemt</month>
							<month type="3">hedar</month>
							<month type="4">tahesas</month>
							<month type="6">yäkatit</month>
							<month type="7">mägabit</month>
							<month type="8">miyazya</month>
							<month type="9">guenbot</month>
							<month type="10">säné</month>
							<month type="11">hamlé</month>
							<month type="12">nähasé</month>
							<month type="13">pagumén</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januari</month>
							<month type="2">februari</month>
							<month type="3">mars</month>
							<month type="4">april</month>
							<month type="5">maj</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">augusti</month>
							<month type="9">september</month>
							<month type="10">oktober</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sön</day>
							<day type="mon">mån</day>
							<day type="tue">tis</day>
							<day type="wed">ons</day>
							<day type="thu">tors</day>
							<day type="fri">fre</day>
							<day type="sat">lör</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">söndag</day>
							<day type="mon">måndag</day>
							<day type="tue">tisdag</day>
							<day type="wed">onsdag</day>
							<day type="thu">torsdag</day>
							<day type="fri">fredag</day>
							<day type="sat">lördag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">O</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">L</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1:a kvartalet</quarter>
							<quarter type="2">2:a kvartalet</quarter>
							<quarter type="3">3:e kvartalet</quarter>
							<quarter type="4">4:e kvartalet</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>fm</am>
				<pm>em</pm>
				<eras>
					<eraNames>
						<era type="0">före Kristus</era>
						<era type="1">efter Kristus</era>
					</eraNames>
					<eraAbbr>
						<era type="0">f.Kr.</era>
						<era type="1">e.Kr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE 'den' d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>'kl'. HH.mm.ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH.mm.ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH.mm.ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH.mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH.mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH.mm.ss</dateFormatItem>
						<dateFormatItem id="Hm">H.mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d/M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEEEd">EEE d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMd">d/M</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh.mm</dateFormatItem>
						<dateFormatItem id="hhmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="mmss">mm.ss</dateFormatItem>
						<dateFormatItem id="ms">mm.ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-MM-dd</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">yy-MM</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM -yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yyyyMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yyyyQQQQ">QQQQ yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/M – E d/M</greatestDifference>
							<greatestDifference id="d">E d/M – E d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM–MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM – E d MMM</greatestDifference>
							<greatestDifference id="d">E d – E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL–LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">d–d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M – d/M</greatestDifference>
							<greatestDifference id="d">d/M – d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH–HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH.mm–HH.mm</greatestDifference>
							<greatestDifference id="h">HH.mm-HH.mm</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH.mm–HH.mm v</greatestDifference>
							<greatestDifference id="h">HH.mm-HH.mm v</greatestDifference>
							<greatestDifference id="m">HH.mm-HH.mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH–HH</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy – MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd MMM–E dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E dd MMM–E dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E dd MMM yyyy–E dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM–d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy–d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd – dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd – yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>år</displayName>
					</field>
					<field type="month">
						<displayName>månad</displayName>
					</field>
					<field type="week">
						<displayName>vecka</displayName>
					</field>
					<field type="day">
						<displayName>dag</displayName>
						<relative type="0">idag</relative>
						<relative type="1">imorgon</relative>
						<relative type="2">i övermorgon</relative>
						<relative type="-1">igår</relative>
						<relative type="-2">i förrgår</relative>
						<relative type="-3">för tre dagar sedan</relative>
					</field>
					<field type="weekday">
						<displayName>veckodag</displayName>
					</field>
					<field type="dayperiod">
						<displayName>tidsvisning</displayName>
					</field>
					<field type="hour">
						<displayName>timme</displayName>
					</field>
					<field type="minute">
						<displayName>minut</displayName>
					</field>
					<field type="second">
						<displayName>sekund</displayName>
					</field>
					<field type="zone">
						<displayName>tidszon</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">tishrí</month>
							<month type="2">heshván</month>
							<month type="3">kislév</month>
							<month type="4">tevét</month>
							<month type="5">shevát</month>
							<month type="6">adár</month>
							<month type="7">adár II</month>
							<month type="8">nisán</month>
							<month type="9">ijjár</month>
							<month type="10">siván</month>
							<month type="11">tammúz</month>
							<month type="12">ab</month>
							<month type="13">elúl</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">tishrí</month>
							<month type="2">heshván</month>
							<month type="3">kislév</month>
							<month type="4">tevét</month>
							<month type="5">shevát</month>
							<month type="6">adár</month>
							<month type="7">adár II</month>
							<month type="8">nisán</month>
							<month type="9">ijjár</month>
							<month type="10">siván</month>
							<month type="11">tammúz</month>
							<month type="12">ab</month>
							<month type="13">elúl</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="indian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">chaitra</month>
							<month type="2">vaishākh</month>
							<month type="3">jyaishtha</month>
							<month type="4">āshādha</month>
							<month type="5">shrāvana</month>
							<month type="6">bhādrapad</month>
							<month type="7">āshwin</month>
							<month type="8">kārtik</month>
							<month type="9">mārgashīrsha</month>
							<month type="10">paush</month>
							<month type="11">māgh</month>
							<month type="12">phālgun</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">muharram</month>
							<month type="2">safar</month>
							<month type="3">rabi’ al-awwal</month>
							<month type="4">rabi’ al-akhir</month>
							<month type="5">jumada-l-ula</month>
							<month type="6">jumada-l-akhira</month>
							<month type="7">rajab</month>
							<month type="8">sha’ban</month>
							<month type="9">ramadan</month>
							<month type="11">dhu-l-ga’da</month>
							<month type="12">dhu-l-hijja</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">muharram</month>
							<month type="2">safar</month>
							<month type="3">rabi’ al-awwal</month>
							<month type="4">rabi’ al-akhir</month>
							<month type="5">jumada-l-ula</month>
							<month type="6">jumada-l-akhira</month>
							<month type="7">rajab</month>
							<month type="8">sha’ban</month>
							<month type="9">ramadan</month>
							<month type="10">shawwal</month>
							<month type="11">dhu-l-ga’da</month>
							<month type="12">dhu-l-hijja</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="wide">
							<month type="1">muharram</month>
							<month type="2">safar</month>
							<month type="3">rabi’ al-awwal</month>
							<month type="4">rabi’ al-akhir</month>
							<month type="5">jumada-l-ula</month>
							<month type="6">jumada-l-akhira</month>
							<month type="7">rajab</month>
							<month type="8">sha’ban</month>
							<month type="9">ramadan</month>
							<month type="11">dhu-l-ga’da</month>
							<month type="12">dhu-l-hijja</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">farvardin</month>
							<month type="2">ordibehesht</month>
							<month type="3">khordād</month>
							<month type="4">tir</month>
							<month type="5">mordād</month>
							<month type="6">shahrivar</month>
							<month type="7">mehr</month>
							<month type="8">ābān</month>
							<month type="9">āzar</month>
							<month type="10">dey</month>
							<month type="11">bahman</month>
							<month type="12">esfand</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH.mm;-HH.mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{0}tid ({1})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Okänd</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jerevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>sydpolen</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont d’Urville</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>Ushuaïa</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>San Salvador de Jujuy</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>Pango Pango</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Wien</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Dacca</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bryssel</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novo</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirunepé</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>Thimpu</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>Gabonore</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>Régina</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Montréal</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Påskön</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotá</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Kap Verde</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Julön</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Prag</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Köpenhamn</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alger</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarieöarna</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Helsingfors</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Torshamn</exemplarCity>
			</zone>
			<zone type="America/Thule">
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthåb</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Ittoqqortoormiit</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>Malobo</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Aten</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Grytviken</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="America/Tegucigalpa">
				<exemplarCity>Tequciqalpa</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Port au Prince</exemplarCity>
			</zone>
			<zone type="Asia/Calcutta">
				<exemplarCity>Kolkata</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teheran</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rom</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>S:t Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Söul</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma-Ata</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>S:t Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>Vadus</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>Chrisinau</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>Podgorika</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Tjojbalsan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldiverna</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Kathmandu</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>Muskat</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>Manilla</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Warszawa</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azorerna</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Belgrad</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekaterinburg</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutsk</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sachalin</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamtjatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadir</exemplarCity>
			</zone>
			<zone type="Europe/Ljubljana">
				<exemplarCity>Ljubliana</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>São Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>San Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaskus</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Dusjanbe</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Uzjgorod</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporizjzja</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>North Dakota</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Tasjkent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Saint Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Saint Thomas</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>Lukasa</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<generic>västbrasiliansk tid</generic>
					<standard>västbrasiliansk normaltid</standard>
					<daylight>västbrasiliansk sommartid</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<generic>afghanisk tid</generic>
					<standard>afghanisk normalid</standard>
					<daylight>afghanisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<generic>centralafrikansk tid</generic>
					<standard>centralafrikansk tid</standard>
					<daylight>centralafrikansk sommartid</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<generic>östafrikansk tid</generic>
					<standard>östafrikansk normaltid</standard>
					<daylight>östafrikansk sommartid</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<long>
					<generic>västsaharisk tid</generic>
					<standard>västsaharisk normaltid</standard>
					<daylight>västsaharisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>sydafrikansk tid</generic>
					<standard>sydafrikansk normaltid</standard>
					<daylight>sydafrikansk sommartid</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>västafrikansk tid</generic>
					<standard>västafrikansk normaltid</standard>
					<daylight>västafrikansk sommartid</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<generic>Aqtobetid</generic>
					<standard>Aqtobenormaltid</standard>
					<daylight>Aqtobesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>alaskatid</generic>
					<standard>Alaska, normaltid</standard>
					<daylight>Alaska, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>hawaiiansk tid</generic>
					<standard>hawaiisk normaltid</standard>
					<daylight>hawaiisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<generic>Alma-Atatid</generic>
					<standard>Alma-Atanormaltid</standard>
					<daylight>Alma-Atasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<generic>amazonastid</generic>
					<standard>Amazonasnormaltid</standard>
					<daylight>Amazonassommartid</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>centralnordamerikansk tid</generic>
					<standard>Central, normaltid</standard>
					<daylight>Central, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>östnordamerikansk tid</generic>
					<standard>Eastern, normaltid</standard>
					<daylight>Eastern, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Klippiga Bergentid</generic>
					<standard>Mountain, normaltid</standard>
					<daylight>Mountain, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>västnordamerikansk tid</generic>
					<standard>Pacific, normaltid</standard>
					<daylight>Pacific, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<generic>Anadirtid</generic>
					<standard>Anadirnormaltid</standard>
					<daylight>Anadirsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<generic>Aqtautid</generic>
					<standard>Aqtaunormaltid</standard>
					<daylight>Aqtausommartid</daylight>
				</long>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<generic>Aqtöbetid</generic>
					<standard>Aqtöbenormaltid</standard>
					<daylight>Aqtöbesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>saudiarabisk tid</generic>
					<standard>saudiarabisk normaltid</standard>
					<daylight>saudiarabisk sommartid</daylight>
				</long>
				<short>
					<generic>AT (saudiarabisk)</generic>
					<standard>AST (saudiarabisk)</standard>
					<daylight>ADT (saudiarabisk)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<generic>östargentinsk tid</generic>
					<standard>östargentinsk normaltid</standard>
					<daylight>östargentinsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<generic>västargentinsk tid</generic>
					<standard>västargentinsk normaltid</standard>
					<daylight>västargentinsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<generic>armenisk tid</generic>
					<standard>armenisk normaltid</standard>
					<daylight>armenisk somartid</daylight>
				</long>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<generic>Ashkhabadtid</generic>
					<standard>Ashkhabadnormaltid</standard>
					<daylight>Ashkhabadsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>nordamerikansk atlanttid</generic>
					<standard>Atlantic, normaltid</standard>
					<daylight>Atlantic, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>centralaustralisk tid</generic>
					<standard>centralaustralisk normaltid</standard>
					<daylight>centralaustralisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>östaustralisk tid</generic>
					<standard>östaustralisk normaltid</standard>
					<daylight>östaustralisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>västaustralisk tid</generic>
					<standard>västaustralisk normaltid</standard>
					<daylight>västaustralisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<generic>azerbajdzjansk tid</generic>
					<standard>azerbajdzjansk normaltid</standard>
					<daylight>azerbajdzjansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<generic>azorisk tid</generic>
					<standard>azorisk normaltid</standard>
					<daylight>azorisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<generic>Bakutid</generic>
					<standard>Bakunormaltid</standard>
					<daylight>Bakusommartid</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<generic>bangladeshisk tid</generic>
					<standard>bangladeshisk normaltid</standard>
					<daylight>bangladeshisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>beringsundstid</generic>
					<standard>beringsundsnormaltid</standard>
					<daylight>beringsundssommartid</daylight>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<generic>bhutansk tid</generic>
					<standard>bhutansk normaltid</standard>
					<daylight>bhutansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<generic>boliviansk tid</generic>
					<standard>boliviansk normaltid</standard>
					<daylight>boliviansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<generic>borneotid</generic>
					<standard>Borneonormaltid</standard>
					<daylight>Borneosommartid</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<generic>brasiliansk tid</generic>
					<standard>Brasilianormaltid</standard>
					<daylight>Brasiliasommartid</daylight>
				</long>
			</metazone>
			<metazone type="British">
				<long>
					<generic>brittisk tid</generic>
					<standard>brittisk normaltid</standard>
					<daylight>brittisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Brunei">
				<long>
					<generic>Bruneitid</generic>
					<standard>Bruneinormaltid</standard>
					<daylight>Bruneisommartid</daylight>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<generic>Kap Verdetid</generic>
					<standard>Kap Verdenormaltid</standard>
					<daylight>Kap Verdesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>chamorrotid</generic>
					<standard>Chamorronormaltid</standard>
					<daylight>Chamorrosommartid</daylight>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<generic>changbaitid</generic>
					<standard>Changbainormaltid</standard>
					<daylight>Changbaisommartid</daylight>
				</long>
			</metazone>
			<metazone type="Chatham">
				<long>
					<generic>Chathamtid</generic>
					<standard>Chathamnormaltid</standard>
					<daylight>Chathamsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<generic>chilensk tid</generic>
					<standard>chilensk normaltid</standard>
					<daylight>chilensk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>kinesisk tid</generic>
					<standard>Kina, normaltid</standard>
					<daylight>Kina, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<generic>Choibalsantid</generic>
					<standard>Choibalsannormaltid</standard>
					<daylight>Choibalsansommartid</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<generic>Julöns tid</generic>
					<standard>Julöns normaltid</standard>
					<daylight>Julöns sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<generic>Keelingöarnas tid</generic>
					<standard>Keelingöarnas normaltid</standard>
					<daylight>Keelingöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<generic>colombiansk tid</generic>
					<standard>colombiansk normaltid</standard>
					<daylight>colombiansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<generic>Cooköarnas tid</generic>
					<standard>Cooköarnas normaltid</standard>
					<daylight>Cooköarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>kubansk tid</generic>
					<standard>kubansk normaltid</standard>
					<daylight>kubansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Dacca">
				<long>
					<generic>daccatid</generic>
					<standard>Daccanormaltid</standard>
					<daylight>Daccasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Dominican">
				<long>
					<generic>dominikansk tid</generic>
					<standard>dominikansk normaltid</standard>
					<daylight>dominikansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<generic>Dushanbetid</generic>
					<standard>Dushanbenormaltid</standard>
					<daylight>Dushanbesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<generic>Holländska Guianatid</generic>
					<standard>Holländska Guiananormaltid</standard>
					<daylight>Holländska Guianasommartid</daylight>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<generic>östimoransk tid</generic>
					<standard>östimorisk normaltid</standard>
					<daylight>östimorisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<generic>Påsköns tid</generic>
					<standard>Påsköns normaltid</standard>
					<daylight>Påsköns sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<generic>equadoriansk tid</generic>
					<standard>equadoriansk normaltid</standard>
					<daylight>equadoriansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<generic>centraleuropeisk tid</generic>
					<standard>Centraleuropa, normaltid</standard>
					<daylight>Centraleuropa, sommartid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<generic>östeuropeisk tid</generic>
					<standard>Östeuropa, normaltid</standard>
					<daylight>Östeuropa, sommartid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<generic>västeuropeisk tid</generic>
					<standard>västeuropeisk normaltid</standard>
					<daylight>västeuropeisk sommartid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<generic>falklandsöarnas tid</generic>
					<standard>falklandsöarnas normaltid</standard>
					<daylight>falklandsöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<generic>Fijis tid</generic>
					<standard>Fijis normaltid</standard>
					<daylight>Fijis sommartid</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<generic>Franska Guianatid</generic>
					<standard>Franska Guiananormaltid</standard>
					<daylight>Franska Guianasommartid</daylight>
				</long>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<generic>Franska Sydterritoriernas tid</generic>
					<standard>Franska Sydterritoriernas normaltid</standard>
					<daylight>Franska Sydterritoriernassommartid</daylight>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<generic>Bisjkektid</generic>
					<standard>Bisjkeknormaltid</standard>
					<daylight>Bisjkeksommartid</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<generic>Greenwichtid</generic>
					<standard>Greenwichtid</standard>
					<daylight>Greenwichtid har per definition ingen sommartid</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<generic>galapagostid</generic>
					<standard>Galápagosnormaltid</standard>
					<daylight>Galápagossommartid</daylight>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<generic>Gambiertid</generic>
					<standard>Gambiernormaltid</standard>
					<daylight>Gambiersommartid</daylight>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<generic>georgientid</generic>
					<standard>georgisk normaltid</standard>
					<daylight>georgisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<generic>Kiribatitid</generic>
					<standard>Kiribatinormaltid</standard>
					<daylight>Kiribatisommartid</daylight>
				</long>
			</metazone>
			<metazone type="Goose_Bay">
				<long>
					<generic>Goose Baytid</generic>
					<standard>Goose Baynormaltid</standard>
					<daylight>Goose Baysommartid</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<generic>centralgrönländsk tid</generic>
					<standard>centralgrönländsk normaltid</standard>
					<daylight>centralgrönländsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<generic>östgrönländsk tid</generic>
					<standard>östgrönländsk normaltid</standard>
					<daylight>östgrönländsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<generic>västgrönländsk tid</generic>
					<standard>västgrönländsk normaltid</standard>
					<daylight>västgrönländsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<generic>Guamtid</generic>
					<standard>Guamnormaltid</standard>
					<daylight>Guamsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>persiska golfen-tid</generic>
					<standard>persiska golfen-tid</standard>
					<daylight>Persiska Golfensommartid</daylight>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<generic>Guyanatid</generic>
					<standard>Guyananormaltid</standard>
					<daylight>Guyanasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<generic>Honolulutid</generic>
					<standard>Honolulunormaltid</standard>
					<daylight>Honolulusommartid</daylight>
				</long>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<generic>Hongkongtid</generic>
					<standard>Hongkongnormaltid</standard>
					<daylight>Hongkongsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<generic>Hovdtid</generic>
					<standard>Hovdnormaltid</standard>
					<daylight>Hovdsommartid</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<generic>indisk tid</generic>
					<standard>indisk normaltid</standard>
					<daylight>indisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<generic>Brittiska Indiska oceanöarnas tdi</generic>
					<standard>Brittiska Indiska oceanöarnas normaltdi</standard>
					<daylight>Brittiska Indiska oceanöarnas sommartdi</daylight>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<generic>indokinesisk tid</generic>
					<standard>indokinesisk normaltid</standard>
					<daylight>indokinesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<generic>centralindonesisk tid</generic>
					<standard>centralindonesisk normaltid</standard>
					<daylight>centralindonesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<generic>östindonesisk tid</generic>
					<standard>östindonesisk normaltid</standard>
					<daylight>östindonesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<generic>västindonesisk tid</generic>
					<standard>västindonesisk normaltid</standard>
					<daylight>västindonesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<generic>iransk tid</generic>
					<standard>iransk normaltid</standard>
					<daylight>iransk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Irish">
				<long>
					<generic>irländsk tid</generic>
					<standard>irländsk normaltid</standard>
					<daylight>irländsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<generic>Irkutsktid</generic>
					<standard>Irkutsknormaltid</standard>
					<daylight>Irkutsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>israelisk tid</generic>
					<standard>Israel, normaltid</standard>
					<daylight>Israel, sommartid</daylight>
				</long>
				<short>
					<generic>IT</generic>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>japansk tid</generic>
					<standard>Japan, normaltid</standard>
					<daylight>Japan, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<generic>Kamtjatkatid</generic>
					<standard>Kamtjatkanormaltid</standard>
					<daylight>Kamtjatkasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karachisommartid</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<generic>Kashgartid</generic>
					<standard>Kashgarnormaltid</standard>
					<daylight>Kashgarsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>Alma-Atatid</generic>
					<standard>Alma-Atanormaltid</standard>
					<daylight>Alma-Atasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>Aqtöbetid</generic>
					<standard>Aqtöbenormaltid</standard>
					<daylight>Aqtöbesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<generic>Qyzylordatid</generic>
					<standard>Qyzylordanormaltid</standard>
					<daylight>Qyzylordasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>koreansk tid</generic>
					<standard>koreansk normaltid</standard>
					<daylight>koreansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<generic>Kosraetid</generic>
					<standard>Kosraenormaltid</standard>
					<daylight>Kosraesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<generic>Krasnojarsktid</generic>
					<standard>Krasnojarsknormaltid</standard>
					<daylight>Krasnojarsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<generic>Kuybyshevtid</generic>
					<standard>Kuybyshevnormaltid</standard>
					<daylight>Kuybyshevsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<generic>Marshallöarnas tid</generic>
					<standard>Marshallöarnas normaltid</standard>
					<daylight>Marshallöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<generic>kirgizisk tid</generic>
					<standard>kirgizisk normaltid</standard>
					<daylight>kirgizisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<generic>Sri Lankatid</generic>
					<standard>Sri Lankanormaltid</standard>
					<daylight>Sri Lankasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Liberia">
				<long>
					<generic>liberiansk tid</generic>
					<standard>liberiansk normaltid</standard>
					<daylight>liberiansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<generic>Lineöarnas tid</generic>
					<standard>Lineöarnas normaltid</standard>
					<daylight>Lineöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<generic>Chongqingtid</generic>
					<standard>Chongqingnormaltid</standard>
					<daylight>Chongqingsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<generic>Macautid</generic>
					<standard>Macaunormaltid</standard>
					<daylight>Macausommartid</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<generic>Magadantid</generic>
					<standard>Magadannormaltid</standard>
					<daylight>Magadansommartid</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<generic>malaysisk tid</generic>
					<standard>malaysisk normaltid</standard>
					<daylight>malaysisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<generic>malaysisk tid</generic>
					<standard>malaysisk normaltid</standard>
					<daylight>malaysisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<generic>Maldivernas tid</generic>
					<standard>Maldivernas normaltid</standard>
					<daylight>Maldivernas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<generic>Marquesastid</generic>
					<standard>Marquesasnormaltid</standard>
					<daylight>Marquesassommartid</daylight>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<generic>Marshallötid</generic>
					<standard>Marshallönormaltid</standard>
					<daylight>Marshallösommartid</daylight>
				</long>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<generic>Mauritiussommartid</generic>
					<standard>Mauritiustid</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<generic>Ulan Bator-tid</generic>
					<standard>Ulan Batornormaltid</standard>
					<daylight>Ulan Batorsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moskvatid</generic>
					<standard>Moskvanormaltid</standard>
					<daylight>Moskvasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<generic>burmesisk tid</generic>
					<standard>burmesisk normaltid</standard>
					<daylight>burmesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<generic>Naurutid</generic>
					<standard>Naurunormaltid</standard>
					<daylight>Naurusommartid</daylight>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<generic>nepalesisk tid</generic>
					<standard>nepalesisk normaltid</standard>
					<daylight>nepalesisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<generic>Nya Kaledonientid</generic>
					<standard>Nya Kaledoniennormaltid</standard>
					<daylight>Nya Kaledoniensommartid</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>nyzeeländsk tid</generic>
					<standard>nyzeeländsk normaltid</standard>
					<daylight>nyzeeländsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>New Foundland-tid</generic>
					<standard>Newfoundland, normaltid</standard>
					<daylight>Newfoundland, sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<generic>Niuetid</generic>
					<standard>Niuenormaltid</standard>
					<daylight>Niuesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<generic>Norfolköns tid</generic>
					<standard>Norfolköns normaltid</standard>
					<daylight>Norfolköns sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<generic>Fernando de Noronhatid</generic>
					<standard>Fernando de Noronhanormalid</standard>
					<daylight>Fernando de Noronhasommartid</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<generic>Nordmarianernas tid</generic>
					<standard>Nordmarianernas normaltid</standard>
					<daylight>Nordmarianernas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<generic>Novosibirsktid</generic>
					<standard>Novosibirsknormaltid</standard>
					<daylight>Novosibirsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<generic>Omsktid</generic>
					<standard>Omsknormaltid</standard>
					<daylight>Omsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Oral">
				<long>
					<generic>Oraltid</generic>
					<standard>Oralnormaltid</standard>
					<daylight>Oralsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<generic>pakistansk tid</generic>
					<standard>pakistansk normaltid</standard>
					<daylight>pakistansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<generic>Palautid</generic>
					<standard>Palaunormaltid</standard>
					<daylight>Palausommartid</daylight>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<generic>Papua Nya Guineas tid</generic>
					<standard>Papua Nya Guineas normaltid</standard>
					<daylight>Papua Nya Guineas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<generic>paraguyansk tid</generic>
					<standard>paraguyansk normalid</standard>
					<daylight>paraguyansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<generic>peruansk tid</generic>
					<standard>peruansk normalid</standard>
					<daylight>peruansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<generic>filippinsk tid</generic>
					<standard>filippinsk normaltid</standard>
					<daylight>filippinsk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<generic>Enderburytid</generic>
					<standard>Enderburynormaltid</standard>
					<daylight>Enderburysommartid</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre och Miquelontid</generic>
					<standard>Pierre och Miquelonnormalid</standard>
					<daylight>Pierre och Miquelonsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<generic>Pitcairntid</generic>
					<standard>Pitcairnnormaltid</standard>
					<daylight>Pitcairnsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Ponape">
				<long>
					<generic>Ponapetid</generic>
					<standard>Ponapenormaltid</standard>
					<daylight>Ponapesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<generic>Qyzylordatid</generic>
					<standard>Qyzylordanormaltid</standard>
					<daylight>Qyzylordasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Reunion">
				<long>
					<generic>Réuniontid</generic>
					<standard>Réunionnormaltid</standard>
					<daylight>Réunionsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<generic>Sachalintid</generic>
					<standard>Sachalinnormaltid</standard>
					<daylight>Sachalinsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<generic>Samaratid</generic>
					<standard>Samaranormaltid</standard>
					<daylight>Samarasommartid</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<generic>Samarkandtid</generic>
					<standard>Samarkandnormaltid</standard>
					<daylight>Samarkandsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Samoa">
				<long>
					<generic>samoansk tid</generic>
					<standard>samoansk normaltid</standard>
					<daylight>samoansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<generic>Seychellernas tid</generic>
					<standard>Seychellernas normaltid</standard>
					<daylight>Seychellernas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<generic>Aqtautid</generic>
					<standard>Aqtaunormaltid</standard>
					<daylight>Aqtausommartid</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<generic>Singaporetid</generic>
					<standard>Singaporenormaltid</standard>
					<daylight>Singaporesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<generic>Salomonöarnas tid</generic>
					<standard>Salomonöarnas normaltid</standard>
					<daylight>Salomonöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<generic>sydgeorgisk tid</generic>
					<standard>sydgeorgisk normaltid</standard>
					<daylight>sydgeorgisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<generic>Surinamtid</generic>
					<standard>Surinamnormaltid</standard>
					<daylight>Surinamsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<generic>Sverdlovsktid</generic>
					<standard>Sverdlovsknormaltid</standard>
					<daylight>Sverdlovsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<generic>Tahititid</generic>
					<standard>Tahitinormaltid</standard>
					<daylight>Tahitisommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<generic>Tadzjikistantid</generic>
					<standard>Tadzjikistannormaltid</standard>
					<daylight>Tadzjikistansommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<generic>uzbekisk tid</generic>
					<standard>uzbekisk normaltid</standard>
					<daylight>uzbekisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<generic>georgisk tid</generic>
					<standard>georgisk normaltid</standard>
					<daylight>georgisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<generic>Tokelautid</generic>
					<standard>Tokelaunormaltid</standard>
					<daylight>Tokelausommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<generic>Tongasommmartid</generic>
					<standard>Tongatid</standard>
				</long>
			</metazone>
			<metazone type="Truk">
				<long>
					<generic>Truktid</generic>
					<standard>Truknormaltid</standard>
					<daylight>Truksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<generic>turkisk tid</generic>
					<standard>turkisk normaltid</standard>
					<daylight>turkisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<generic>turkmenisk tid</generic>
					<standard>turkmenisk normaltid</standard>
					<daylight>turkmenisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<generic>Tuvalutid</generic>
					<standard>Tuvalunormaltid</standard>
					<daylight>Tuvalusommartid</daylight>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<generic>Oraltid</generic>
					<standard>Oralnormaltid</standard>
					<daylight>Oralsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<generic>uruguayansk tid</generic>
					<standard>uruguayansk normaltid</standard>
					<daylight>uruguayansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<generic>Urumqitid</generic>
					<standard>Urumqinormaltid</standard>
					<daylight>Urumqisommartid</daylight>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<generic>uzbeskisk tid</generic>
					<standard>uzbeskisk normaltid</standard>
					<daylight>uzbeskisk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<generic>Vanuatutid</generic>
					<standard>Vanuatunormaltid</standard>
					<daylight>Vanuatusommartid</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<generic>venezulansk tid</generic>
					<standard>venezulansk normaltid</standard>
					<daylight>venezulansk sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<generic>Vladivostoktid</generic>
					<standard>Vladivostoknormaltid</standard>
					<daylight>Vladivostoksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<generic>Volvogradtid</generic>
					<standard>Volvogradnormaltid</standard>
					<daylight>Volvogradsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<generic>Waketid</generic>
					<standard>Wakenormaltid</standard>
					<daylight>Wakesommartid</daylight>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<generic>Wallis- och Futunaöarnas tid</generic>
					<standard>Wallis- och Futunaöarnas normaltid</standard>
					<daylight>Wallis- och Futunaöarnas sommartid</daylight>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<generic>Jakutsktid</generic>
					<standard>Jakutsknormaltid</standard>
					<daylight>Jakutsksommartid</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<generic>Jekaterinburgtid</generic>
					<standard>Jekaterinburgnormaltid</standard>
					<daylight>Jekaterinburgsommartid</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<generic>Yerevantid</generic>
					<standard>Yerevannormaltid</standard>
					<daylight>Yerevansommartid</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Yukontid</generic>
					<standard>Yukonnormaltid</standard>
					<daylight>Yukonsommartid</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>−</minusSign>
			<exponential>×10^</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>¤¤¤</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0 %</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>andorransk peseta</displayName>
				<displayName count="other">andorranska pesetas</displayName>
			</currency>
			<currency type="AED">
				<displayName>Förenade Arabemiratens dirham</displayName>
				<displayName count="other">Förenade Arabemiratens dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afghani (1927-2002)</displayName>
				<displayName count="other">afghani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afghani</displayName>
				<displayName count="other">afghani</displayName>
			</currency>
			<currency type="ALK">
				<displayName>albansk gamla lek</displayName>
				<displayName count="other">albanska gamla lek</displayName>
			</currency>
			<currency type="ALL">
				<displayName>albansk lek</displayName>
				<displayName count="other">albanska lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>armenisk dram</displayName>
				<displayName count="other">armeniska dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Nederländska Antillernas gulden</displayName>
				<displayName count="other">Nederländska Antillernas gulden</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>angolansk kwanza</displayName>
				<displayName count="other">angolanska kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>angolansk kwanza (1977-1990)</displayName>
				<displayName count="other">angolanska kwanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>angolansk ny kwanza (1990-2000)</displayName>
				<displayName count="other">angolanska nya kwanza (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>angolansk kwanza reajustado (1995-1999)</displayName>
				<displayName count="other">angolanska kwanza reajustado (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>argentinsk austral</displayName>
				<displayName count="other">argentinska australer</displayName>
			</currency>
			<currency type="ARP">
				<displayName>argentinsk peso (1983-1985)</displayName>
				<displayName count="other">argentinska pesos (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>argentinsk peso</displayName>
				<displayName count="one">argentinsk peso</displayName>
				<displayName count="other">argentinska pesos</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ARY">
				<displayName>argentinsk gamla peso</displayName>
				<displayName count="other">argentinska gamla pesos</displayName>
			</currency>
			<currency type="ATS">
				<displayName>österrikisk schilling</displayName>
				<displayName count="other">österrikiska schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>australisk dollar</displayName>
				<displayName count="other">australiska dollar</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Aruba-gulden</displayName>
				<displayName count="other">Aruba-gulden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>azerbajdzjansk manat (1993-2006)</displayName>
				<displayName count="other">azerbajdzjanska manat (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>azerbajdzjansk manat</displayName>
				<displayName count="other">AZN</displayName>
			</currency>
			<currency type="BAD">
				<displayName>bosnisk-hercegovinsk dinar</displayName>
				<displayName count="other">bosnisk-hercegovinska dinarer</displayName>
				<symbol>BAD</symbol>
			</currency>
			<currency type="BAM">
				<displayName>bosnisk-hercegovinsk mark (konvertibel)</displayName>
				<displayName count="other">bosnisk-hercegovinska mark (konvertibla)</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbados-dollar</displayName>
				<displayName count="other">Barbados-dollar</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>bangladeshisk taka</displayName>
				<displayName count="other">bangladeshiska taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>belgisk franc (konvertibel)</displayName>
				<displayName count="other">belgiska franc (konvertibla)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>belgisk franc</displayName>
				<displayName count="other">belgiska franc</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>belgisk franc (finansiell)</displayName>
				<displayName count="other">belgiska franc (finansiella)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>bulgarisk lev (1962–1999)</displayName>
				<displayName count="other">bulgariska lev (1962–1999)</displayName>
			</currency>
			<currency type="BGM">
				<displayName>bulgarisk lev (1952–1962)</displayName>
				<displayName count="other">bulgariska lev (1952–1962)</displayName>
			</currency>
			<currency type="BGN">
				<displayName>bulgarisk ny lev</displayName>
				<displayName count="other">bulgariska nya lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahrain-dinar</displayName>
				<displayName count="other">BHD</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>burundisk franc</displayName>
				<displayName count="other">burundiska franc</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda-dollar</displayName>
				<displayName count="other">Bermuda-dollar</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunei-dollar</displayName>
				<displayName count="other">Brunei-dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
				<displayName count="other">boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>boliviansk peso</displayName>
				<displayName count="other">bolivianska pesos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>boliviansk mvdol</displayName>
				<displayName count="other">bolivianska mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>brasiliansk cruzeiro novo (1967-1986)</displayName>
				<displayName count="other">brasilianska cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>brasiliansk cruzado</displayName>
				<displayName count="other">brasilianska cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>brasiliansk cruzeiro (1990-1993)</displayName>
				<displayName count="other">brasilianska cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>brasiliansk real</displayName>
				<displayName count="other">brasilianska real</displayName>
				<symbol>BRL</symbol>
			</currency>
			<currency type="BRN">
				<displayName>brasiliansk cruzado novo</displayName>
				<displayName count="other">brasilianska cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>brasiliansk cruzeiro</displayName>
				<displayName count="other">brasilianska cruzeiros</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamas-dollar</displayName>
				<displayName count="other">Bahamas-dollar</displayName>
			</currency>
			<currency type="BTN">
				<displayName>bhutanesisk ngultrum</displayName>
				<displayName count="other">bhutanesiska ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>burmesisk kyat</displayName>
				<displayName count="other">burmesiska kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>botswansk pula</displayName>
				<displayName count="other">botswanska pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>vitrysk ny rubel (1994-1999)</displayName>
				<displayName count="other">vitryska nya rubel (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>vitrysk rubel</displayName>
				<displayName count="other">vitryska rubel</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>belizisk dollar</displayName>
				<displayName count="other">BZD</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>kanadensisk dollar</displayName>
				<displayName count="other">kanadensiska dollar</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>kongolesisk franc</displayName>
				<displayName count="other">kongolesiska franc</displayName>
			</currency>
			<currency type="CHE">
				<displayName>euro (konvertibelt konto, WIR Bank, Schweiz)</displayName>
				<displayName count="other">euro (konvertibelt konto, WIR Bank, Schweiz)</displayName>
			</currency>
			<currency type="CHF">
				<displayName>schweizisk franc</displayName>
				<displayName count="other">schweiziska franc</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>franc (konvertibelt konto, WIR Bank, Schweiz)</displayName>
				<displayName count="other">franc (konvertibelt konto, WIR Bank, Schweiz)</displayName>
			</currency>
			<currency type="CLF">
				<displayName>chilensk unidad de fomento</displayName>
				<displayName count="other">chilenska unidad de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>chilensk peso</displayName>
				<displayName count="other">chilenska pesos</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNX">
				<displayName>Kina-dollar</displayName>
				<displayName count="other">Kina-dollar</displayName>
			</currency>
			<currency type="CNY">
				<displayName>kinesisk yuan renminbi</displayName>
				<displayName count="other">kinesiska yuan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>colombiansk peso</displayName>
				<displayName count="other">colombianska pesos</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>colombiansk unidad de valor real</displayName>
				<displayName count="other">colombianska unidad de valor real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>costarikansk colón</displayName>
				<displayName count="other">costarikanska colón</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>jugoslavisk dinar</displayName>
				<displayName count="other">jugoslaviska dinarer</displayName>
			</currency>
			<currency type="CSJ">
				<displayName>tjeckoslovakiska krona</displayName>
				<displayName count="other">tjeckoslovakiska kronor</displayName>
			</currency>
			<currency type="CSK">
				<displayName>tjeckisk hård koruna</displayName>
				<displayName count="other">tjeckiska hårda koruna</displayName>
			</currency>
			<currency type="CUP">
				<displayName>kubansk peso</displayName>
				<displayName count="other">kubanska pesos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>kapverdisk escudo</displayName>
				<displayName count="other">kapverdiska escudos</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>cypriotiskt pund</displayName>
				<displayName count="other">cypriotiska pund</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>tjeckisk koruna</displayName>
				<displayName count="other">tjeckiska koruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>östtysk mark</displayName>
				<displayName count="other">östtyska mark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>tysk mark</displayName>
				<displayName count="other">tyska mark</displayName>
			</currency>
			<currency type="DJF">
				<displayName>djiboutisk franc</displayName>
				<displayName count="other">djiboutiska franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>dansk krona</displayName>
				<displayName count="other">danska kronor</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>dominikansk peso</displayName>
				<displayName count="other">dominikanska pesos</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>algerisk dinar</displayName>
				<displayName count="other">algeriska dinarer</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>ecuadoriansk sucre</displayName>
				<displayName count="other">ecuadorianska sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>ecuadoriansk unidad de valor constante</displayName>
				<displayName count="other">ecuadorianska unidad de valor constante</displayName>
			</currency>
			<currency type="EEK">
				<displayName>estnisk krona</displayName>
				<displayName count="other">estniska kronor</displayName>
			</currency>
			<currency type="EGP">
				<displayName>egyptiskt pund</displayName>
				<displayName count="other">egyptiska pund</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ekwele</displayName>
				<displayName count="other">ekwele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>eritreansk nakfa</displayName>
				<displayName count="other">eritreanska nakfa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>spansk peseta (konto)</displayName>
				<displayName count="other">spanska pesetas (konto)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>spansk peseta (konvertibelt konto)</displayName>
				<displayName count="other">spanska pesetas (konvertibelt konto)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>spansk peseta</displayName>
				<displayName count="other">spanska pesetas</displayName>
			</currency>
			<currency type="ETB">
				<displayName>etiopisk birr</displayName>
				<displayName count="other">etiopiska birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<displayName count="other">euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>finsk mark</displayName>
				<displayName count="other">finska mark</displayName>
				<symbol>mk</symbol>
			</currency>
			<currency type="FJD">
				<displayName>Fiji-dollar</displayName>
				<displayName count="other">Fiji-dollar</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falklandsöarnas pund</displayName>
				<displayName count="other">Falklandsöarnas pund</displayName>
			</currency>
			<currency type="FRF">
				<displayName>fransk franc</displayName>
				<displayName count="other">franska franc</displayName>
			</currency>
			<currency type="GBP">
				<displayName>brittiskt pund sterling</displayName>
				<displayName count="other">brittiska pund sterling</displayName>
			</currency>
			<currency type="GEK">
				<displayName>georgisk kupon larit</displayName>
				<displayName count="other">georgiska kupon larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>georgisk lari</displayName>
				<displayName count="other">georgiska lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>ghanansk cedi (1979-2007)</displayName>
				<displayName count="other">ghananska cedi (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>ghanansk cedi</displayName>
				<displayName count="other">ghananska cedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>gibraltiskt pund</displayName>
				<displayName count="other">gibraltiska pund</displayName>
			</currency>
			<currency type="GMD">
				<displayName>gambisk dalasi</displayName>
				<displayName count="other">gambiska dalasi</displayName>
			</currency>
			<currency type="GNE">
				<displayName count="one">guineansk syli (1972-1986)</displayName>
				<displayName count="other">guineanska syli (1972-1986)</displayName>
			</currency>
			<currency type="GNF">
				<displayName>guineansk franc</displayName>
				<displayName count="other">guineanska franc</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>guineansk syli</displayName>
				<displayName count="other">guineanska syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ekvatorialguineansk ekwele</displayName>
				<displayName count="other">ekvatorialguineanska ekweler</displayName>
			</currency>
			<currency type="GRD">
				<displayName>grekisk drachma</displayName>
				<displayName count="other">grekiska drachmer</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>guatemalansk quetzal</displayName>
				<displayName count="other">guatemalanska quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portugisiska Guinea-escudo</displayName>
				<displayName count="other">Portugisiska Guinea-escudos</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau-peso</displayName>
				<displayName count="other">Guinea-Bissau-pesos</displayName>
			</currency>
			<currency type="GYD">
				<displayName>guyanansk dollar</displayName>
				<displayName count="other">guyanska dollar</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hongkong-dollar</displayName>
				<displayName count="other">Hongkong-dollar</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>honduransk lempira</displayName>
				<displayName count="other">honduranska lempiror</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>kroatisk dinar</displayName>
				<displayName count="other">kroatiska dinarer</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kroatisk kuna</displayName>
				<displayName count="other">kroatiska kunor</displayName>
			</currency>
			<currency type="HTG">
				<displayName>haitisk gourde</displayName>
				<displayName count="other">haitiska gourder</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ungersk forint</displayName>
				<displayName count="other">ungerska forinter</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>indonesisk rupiah</displayName>
				<displayName count="other">indonesiska rupier</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>irländskt pund</displayName>
				<displayName count="other">irländska pund</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>israeliskt pund</displayName>
				<displayName count="other">israeliska pund</displayName>
			</currency>
			<currency type="ILR">
				<displayName count="one">israelisk gammal shekel</displayName>
				<displayName count="other">israeliska gamla shekel</displayName>
			</currency>
			<currency type="ILS">
				<displayName>israelisk ny shekel</displayName>
				<displayName count="other">israeliska nya shekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>indisk rupie</displayName>
				<displayName count="other">indiska rupier</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>irakisk dinar</displayName>
				<displayName count="other">irakiska dinarer</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>iransk rial</displayName>
				<displayName count="other">iranska rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>isländsk krona</displayName>
				<displayName count="other">isländska kronor</displayName>
			</currency>
			<currency type="ITL">
				<displayName>italiensk lira</displayName>
				<displayName count="other">italienska lire</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaica-dollar</displayName>
				<displayName count="other">Jamaica-dollar</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>jordansk dinar</displayName>
				<displayName count="other">jordanska dinarer</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>japansk yen</displayName>
				<displayName count="other">japanska yen</displayName>
			</currency>
			<currency type="KES">
				<displayName>kenyansk shilling</displayName>
				<displayName count="other">kenyanska shilling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>kirgizisk som</displayName>
				<displayName count="other">kirgiziska somer</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>kambodjansk riel</displayName>
				<displayName count="other">kambodjanska riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>komorisk franc</displayName>
				<displayName count="other">komoriska franc</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>nordkoreansk won</displayName>
				<displayName count="other">nordkoreanska won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>sydkoreansk won</displayName>
				<displayName count="other">sydkoreanska won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>kuwaitisk dinar</displayName>
				<displayName count="other">kuwaitiska dinarer</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Cayman-dollar</displayName>
				<displayName count="other">Cayman-dollar</displayName>
				<symbol>KYD</symbol>
			</currency>
			<currency type="KZT">
				<displayName>kazakisk tenge</displayName>
				<displayName count="other">kazakiska tenger</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>laotisk kip</displayName>
				<displayName count="other">laotiska kiper</displayName>
			</currency>
			<currency type="LBP">
				<displayName>libanesiskt pund</displayName>
				<displayName count="other">libanesiska pund</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>srilankesisk rupie</displayName>
				<displayName count="other">srilankesiska rupier</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberia-dollar</displayName>
				<displayName count="other">Liberia-dollar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>lesothisk loti</displayName>
				<displayName count="other">lesothiska lotier</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>lesothisk maloti</displayName>
				<displayName count="other">lesothiska malotier</displayName>
			</currency>
			<currency type="LTL">
				<displayName>lettisk lita</displayName>
				<displayName count="other">litauiska litor</displayName>
			</currency>
			<currency type="LTT">
				<displayName>lettisk talonas</displayName>
				<displayName count="other">lettiska talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>luxemburgsk franc (konvertibel)</displayName>
				<displayName count="other">luxemburgska franc (konvertibla)</displayName>
			</currency>
			<currency type="LUF">
				<displayName>luxemburgsk franc</displayName>
				<displayName count="other">luxemburgska franc</displayName>
			</currency>
			<currency type="LUL">
				<displayName>luxemburgsk franc (finansiell)</displayName>
				<displayName count="other">luxemburgska franc (finansiella)</displayName>
			</currency>
			<currency type="LVL">
				<displayName>lettisk lats</displayName>
				<displayName count="other">lettiska lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>lettisk rubel</displayName>
				<displayName count="other">lettiska rubel</displayName>
			</currency>
			<currency type="LYD">
				<displayName>libysk dinar</displayName>
				<displayName count="other">libyska dinarer</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>marockansk dirham</displayName>
				<displayName count="other">marockanska dirhamer</displayName>
			</currency>
			<currency type="MAF">
				<displayName>marockansk franc</displayName>
				<displayName count="other">marockanska franc</displayName>
			</currency>
			<currency type="MDL">
				<displayName>moldavisk leu</displayName>
				<displayName count="other">moldaviska leu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>madagaskisk ariary</displayName>
				<displayName count="other">madagaskiska ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>madagaskisk franc</displayName>
				<displayName count="other">madagaskiska franc</displayName>
			</currency>
			<currency type="MKD">
				<displayName>makedonisk denar</displayName>
				<displayName count="other">makedoniska denarer</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>malisk franc</displayName>
				<displayName count="other">maliska franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>myanmarisk kyat</displayName>
				<displayName count="other">myanmariska kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>mongolisk tugrik</displayName>
				<displayName count="other">mongoliska tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macao-pataca</displayName>
				<displayName count="other">Macao-pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>mauretansk ouguiya</displayName>
				<displayName count="other">mauretanska ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>maltesisk lira</displayName>
				<displayName count="other">maltesiska lire</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>maltesiskt pund</displayName>
				<displayName count="other">maltesiska pund</displayName>
			</currency>
			<currency type="MUR">
				<displayName>mauritisk rupie</displayName>
				<displayName count="other">mauritiska rupier</displayName>
			</currency>
			<currency type="MVR">
				<displayName>maldivisk rufiyaa</displayName>
				<displayName count="other">maldiviska rufiyer</displayName>
			</currency>
			<currency type="MWK">
				<displayName>malawisk kwacha</displayName>
				<displayName count="other">malawiska kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>mexikansk peso</displayName>
				<displayName count="other">mexikanska pesos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>mexikansk silverpeso (1861-1992)</displayName>
				<displayName count="other">mexikanska silverpesos (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>mexikansk unidad de inversion</displayName>
				<displayName count="other">mexikanska unidad de inversion</displayName>
			</currency>
			<currency type="MYR">
				<displayName>malaysisk ringgit</displayName>
				<displayName count="other">malaysiska ringgiter</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>moçambikisk escudo</displayName>
				<displayName count="other">moçambikiska escudos</displayName>
			</currency>
			<currency type="MZM">
				<displayName>gammal moçambikisk metical</displayName>
				<displayName count="other">gammla moçambikiska metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>moçambikisk metical</displayName>
				<displayName count="other">moçambikiska metical</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibia-dollar</displayName>
				<displayName count="other">Namibia-dollar</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>nigeriansk naira</displayName>
				<displayName count="other">nigerianska naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>nicaraguansk córdoba</displayName>
				<displayName count="other">nicaraguanska córdoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>nicaraguansk córdoba oro</displayName>
				<displayName count="other">nicaraguanska córdoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>nederländsk gulden</displayName>
				<displayName count="other">nederländska gulden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>norsk krona</displayName>
				<displayName count="other">norska kronor</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>nepalesisk rupie</displayName>
				<displayName count="other">nepalesiska rupier</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>nyzeeländsk dollar</displayName>
				<displayName count="other">nyzeeländska dollar</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>omansk rial</displayName>
				<displayName count="other">omanska rial</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>panamansk balboa</displayName>
				<displayName count="other">panamanska balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>peruansk inti</displayName>
				<displayName count="other">peruanska intier</displayName>
			</currency>
			<currency type="PEN">
				<displayName>peruansk sol nuevo</displayName>
				<displayName count="other">peruanska sol nuevo</displayName>
			</currency>
			<currency type="PES">
				<displayName>peruansk sol</displayName>
				<displayName count="other">peruanska sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>papuansk kina</displayName>
				<displayName count="other">papuanska kinor</displayName>
			</currency>
			<currency type="PHP">
				<displayName>filippinsk peso</displayName>
				<displayName count="other">filippinska pesos</displayName>
			</currency>
			<currency type="PKR">
				<displayName>pakistansk rupie</displayName>
				<displayName count="other">pakistanska rupier</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>polsk zloty</displayName>
				<displayName count="other">polska zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>polsk zloty (1950-1995)</displayName>
				<displayName count="other">polska zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>portugisisk escudo</displayName>
				<displayName count="other">portugisiska escudos</displayName>
			</currency>
			<currency type="PYG">
				<displayName>paraguaysk guarani</displayName>
				<displayName count="other">paraguayska guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>qatarisk rial</displayName>
				<displayName count="other">qatariska rial</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>rhodesisk dollar</displayName>
				<displayName count="other">rhodesiska dollar</displayName>
			</currency>
			<currency type="ROK">
				<displayName count="other">ROK</displayName>
			</currency>
			<currency type="ROL">
				<displayName>gammal rumänsk leu</displayName>
				<displayName count="other">gamla rumänska leu</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>rumänsk leu</displayName>
				<displayName count="other">rumänska leu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbisk dinar</displayName>
				<displayName count="other">serbiska dinarer</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rysk rubel</displayName>
				<displayName count="other">ryska rubel</displayName>
			</currency>
			<currency type="RUR">
				<displayName>rysk rubel (1991-1998)</displayName>
				<displayName count="other">ryska rubel (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>rwandisk franc</displayName>
				<displayName count="other">rwandiska franc</displayName>
			</currency>
			<currency type="SAR">
				<displayName>saudisk riyal</displayName>
				<displayName count="other">saudiska riyal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salomon-dollar</displayName>
				<displayName count="other">Salomon-dollar</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>seychellisk rupie</displayName>
				<displayName count="other">seychelliska rupier</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>sudanesisk dinar</displayName>
				<displayName count="other">sudanska gamla dinarer</displayName>
			</currency>
			<currency type="SDG">
				<displayName>sudanesiskt pund</displayName>
				<displayName count="other">sudanska pund</displayName>
			</currency>
			<currency type="SDP">
				<displayName>gammalt sudanesiskt pund</displayName>
				<displayName count="other">sudanska gamla pund</displayName>
			</currency>
			<currency type="SEK">
				<displayName>svensk krona</displayName>
				<displayName count="other">svenska kronor</displayName>
				<symbol>kr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapore-dollar</displayName>
				<displayName count="other">Singapore-dollar</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>S:t Helena-pund</displayName>
				<displayName count="other">S:t Helena-pund</displayName>
			</currency>
			<currency type="SIT">
				<displayName>slovensk tolar</displayName>
				<displayName count="other">slovenska tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>slovakisk koruna</displayName>
				<displayName count="other">slovakiska korunor</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>sierraleonsk leone</displayName>
				<displayName count="other">sierraleonska leoner</displayName>
			</currency>
			<currency type="SOS">
				<displayName>somalisk shilling</displayName>
				<displayName count="other">somaliska shilling</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinam-dollar</displayName>
				<displayName count="other">Surinam-dollar</displayName>
			</currency>
			<currency type="SRG">
				<displayName>surinamesisk gulden</displayName>
				<displayName count="other">Surinam-gulden</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>São Tomé och Príncipe-dobra</displayName>
				<displayName count="other">São Tomé och Príncipe-dobror</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>sovjetisk rubel</displayName>
				<displayName count="other">sovjetiska rubler</displayName>
			</currency>
			<currency type="SVC">
				<displayName>salvadoransk colón</displayName>
				<displayName count="other">salvadoranska colón</displayName>
			</currency>
			<currency type="SYP">
				<displayName>syriskt pund</displayName>
				<displayName count="other">syriska pund</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>swaziländsk lilangeni</displayName>
				<displayName count="other">swaziländska lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>thailändsk baht</displayName>
				<displayName count="other">thailändska baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>tadzjikisk rubel</displayName>
				<displayName count="other">tadzjikiska rubler</displayName>
			</currency>
			<currency type="TJS">
				<displayName>tadzjikisk somoni</displayName>
				<displayName count="other">tadzjikiska somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>turkmensk manat</displayName>
				<displayName count="other">turkmenska manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>tunisisk dinar</displayName>
				<displayName count="other">tunisiska dinarer</displayName>
			</currency>
			<currency type="TOP">
				<displayName>tongansk paʻanga</displayName>
				<displayName count="other">tonganska paʻanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>timoriansk escudo</displayName>
				<displayName count="other">timorianska escudos</displayName>
			</currency>
			<currency type="TRL">
				<displayName>gammal turkisk lira</displayName>
				<displayName count="one">gammal turkisk lira</displayName>
				<displayName count="other">gamla turkiska lire</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>ny turkisk lira</displayName>
				<displayName count="one">turkisk lira</displayName>
				<displayName count="other">turkiska lire</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad ochTobago-dollar</displayName>
				<displayName count="other">Trinidad ochTobago-dollar</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>taiwanesisk ny dollar</displayName>
				<displayName count="other">taiwanesiska nya dollar</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>tanzanisk shilling</displayName>
				<displayName count="other">tanzaniska shilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>ukrainsk hryvnia</displayName>
				<displayName count="other">ukrainska hryvnia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>ukrainsk karbovanetz</displayName>
				<displayName count="other">ukrainska karbovanetz</displayName>
			</currency>
			<currency type="UGS">
				<displayName>ugandisk shilling (1966-1987)</displayName>
				<displayName count="other">ugandiska shilling (1966-1987)</displayName>
			</currency>
			<currency type="UGW">
				<displayName count="other">UGW</displayName>
			</currency>
			<currency type="UGX">
				<displayName>ugandisk shilling</displayName>
				<displayName count="other">ugandiska shilling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>US-dollar</displayName>
				<displayName count="other">US-dollar</displayName>
			</currency>
			<currency type="USN">
				<displayName>US-dollar (nästa dag)</displayName>
				<displayName count="other">US-dollar (nästa dag)</displayName>
			</currency>
			<currency type="USS">
				<displayName>US-dollar (samma dag)</displayName>
				<displayName count="other">US-dollar (samma dag)</displayName>
			</currency>
			<currency type="UYI">
				<displayName count="other">uruguayanska peso en unidades indexadas</displayName>
			</currency>
			<currency type="UYN">
				<displayName count="other">UYN</displayName>
			</currency>
			<currency type="UYP">
				<displayName>uruguayansk peso (1975-1993)</displayName>
				<displayName count="other">uruguayanska pesos (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>uruguayansk peso</displayName>
				<displayName count="other">uruguayanska pesos</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>uzbekisk sum</displayName>
				<displayName count="other">uzbekiska sum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>venezuelansk bolivar</displayName>
				<displayName count="other">venezuelanska bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>venezuelansk bolivar fuerte</displayName>
				<displayName count="other">venezuelanska bolivar fuerte</displayName>
			</currency>
			<currency type="VNC">
				<displayName count="one">vietnamesisk gammal dong</displayName>
				<displayName count="other">vietnamesiska gamla dong</displayName>
			</currency>
			<currency type="VND">
				<displayName>vietnamesisk dong</displayName>
				<displayName count="other">vietnamesiska dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>vanuatisk vatu</displayName>
				<displayName count="other">vanuatiska vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>västsamoansk tala</displayName>
				<displayName count="other">västsamoanska tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA Franc BEAC</displayName>
				<displayName count="other">centralafrikanska franc</displayName>
			</currency>
			<currency type="XAG">
				<displayName>silver</displayName>
				<displayName count="other">silveruns</displayName>
			</currency>
			<currency type="XAU">
				<displayName>guld</displayName>
				<displayName count="other">gulduns</displayName>
			</currency>
			<currency type="XBA">
				<displayName>europeisk kompositenhet</displayName>
				<displayName count="other">europeiska kompositenheter</displayName>
			</currency>
			<currency type="XBB">
				<displayName>europeisk monetär enhet</displayName>
				<displayName count="other">europeiska monetära enheter</displayName>
			</currency>
			<currency type="XBC">
				<displayName>europeisk kontoenhet (XBC)</displayName>
				<displayName count="other">europeiska kontoenheter (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>europeisk kontoenhet (XBD)</displayName>
				<displayName count="other">europeiska kontoenheter (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>östkaribisk dollar</displayName>
				<displayName count="other">östkaribiska dollar</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>IMF särskild dragningsrätt</displayName>
				<displayName count="other">IMF särskilda dragningsrätter</displayName>
			</currency>
			<currency type="XEU">
				<displayName>europeisk valutaenhet</displayName>
				<displayName count="other">europeiska valutaenheter</displayName>
			</currency>
			<currency type="XFO">
				<displayName>fransk guldfranc</displayName>
				<displayName count="other">franska guldfranc</displayName>
			</currency>
			<currency type="XFU">
				<displayName>French UIC-Franc</displayName>
				<displayName count="other">internationella järnvägsunionens franc</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA Franc BCEAO</displayName>
				<displayName count="other">västafrikanska franc</displayName>
			</currency>
			<currency type="XPD">
				<displayName>palladium</displayName>
				<displayName count="other">palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP-franc</displayName>
				<displayName count="other">Stilla Havet-franc</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platina</displayName>
				<displayName count="other">platina</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET-fond</displayName>
				<displayName count="other">RINET-fond</displayName>
			</currency>
			<currency type="XTS">
				<displayName>test-valutakod</displayName>
				<displayName count="other">test-valutakod</displayName>
			</currency>
			<currency type="XXX">
				<displayName>okänd eller ogiltig valuta</displayName>
				<displayName count="one">okänd/ogiltig valuta</displayName>
				<displayName count="other">okänd eller ogiltig valuta</displayName>
			</currency>
			<currency type="YDD">
				<displayName>jemenitisk dinar</displayName>
				<displayName count="other">jemenitiska dinarer</displayName>
			</currency>
			<currency type="YER">
				<displayName>jemenitisk rial</displayName>
				<displayName count="other">jemenitiska rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>jugoslavisk hård dinar</displayName>
				<displayName count="other">jugoslaviska hårda dinarer</displayName>
			</currency>
			<currency type="YUM">
				<displayName>jugoslavisk ny dinar</displayName>
				<displayName count="other">jugoslaviska nya dinarer</displayName>
			</currency>
			<currency type="YUN">
				<displayName>jugoslavisk dinar (konvertibel)</displayName>
				<displayName count="other">jugoslaviska dinarer (konvertibla)</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>sydafrikansk rand (finansiell)</displayName>
				<displayName count="other">sydafrikanska rand (finansiella)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>sydafrikansk rand</displayName>
				<displayName count="other">sydafrikanska rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>zambisk kwacha</displayName>
				<displayName count="other">zambiska kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>zairisk ny zaire</displayName>
				<displayName count="other">zaïriska nya zaïre</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>zairisk zaire</displayName>
				<displayName count="other">zaïriska zaïre</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwe-dollar</displayName>
				<displayName count="other">Zimbabwe-dollar</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dag</unitPattern>
			<unitPattern count="other">{0} dagar</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} timme</unitPattern>
			<unitPattern count="other">{0} timmar</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minut</unitPattern>
			<unitPattern count="other">{0} minuter</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} månad</unitPattern>
			<unitPattern count="other">{0} månader</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} sekund</unitPattern>
			<unitPattern count="other">{0} sekunder</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} vecka</unitPattern>
			<unitPattern count="other">{0} veckor</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} år</unitPattern>
			<unitPattern count="other">{0} år</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nej:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[֜�;$$Locale/Data/nso_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nso"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[�sg�$$Locale/Data/kcg_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kcg"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[H��T�TLocale/Data/gez.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gez"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">አፋርኛ</language>
			<language type="ab">አብሐዚኛ</language>
			<language type="af">አፍሪቃንስኛ</language>
			<language type="am">አምሐረኛ</language>
			<language type="ar">ዐርቢኛ</language>
			<language type="as">አሳሜዛዊ</language>
			<language type="ay">አያማርኛ</language>
			<language type="az">አዜርባይጃንኛ</language>
			<language type="ba">ባስኪርኛ</language>
			<language type="be">ቤላራሻኛ</language>
			<language type="bg">ቡልጋሪኛ</language>
			<language type="bh">ቢሃሪ</language>
			<language type="bi">ቢስላምኛ</language>
			<language type="bn">በንጋሊኛ</language>
			<language type="bo">ትበትንኛ</language>
			<language type="br">ብሬቶንኛ</language>
			<language type="byn">ብሊን</language>
			<language type="ca">ካታላንኛ</language>
			<language type="co">ኮርሲካኛ</language>
			<language type="cs">ቼክኛ</language>
			<language type="cy">ወልሽ</language>
			<language type="da">ዴኒሽ</language>
			<language type="de">ጀርመን</language>
			<language type="dz">ድዞንግኻኛ</language>
			<language type="el">ግሪክኛ</language>
			<language type="en">እንግሊዝኛ</language>
			<language type="eo">ኤስፐራንቶ</language>
			<language type="es">ስፓኒሽ</language>
			<language type="et">ኤስቶኒአን</language>
			<language type="eu">ባስክኛ</language>
			<language type="fa">ፐርሲያኛ</language>
			<language type="fi">ፊኒሽ</language>
			<language type="fj">ፊጂኛ</language>
			<language type="fo">ፋሮኛ</language>
			<language type="fr">ፈረንሳይኛ</language>
			<language type="fy">ፍሪስኛ</language>
			<language type="ga">አይሪሽ</language>
			<language type="gd">እስኮትስ፡ጌልክኛ</language>
			<language type="gez">ግዕዝኛ</language>
			<language type="gl">ጋለጋኛ</language>
			<language type="gn">ጓራኒኛ</language>
			<language type="gu">ጉጃርቲኛ</language>
			<language type="ha">ሃውሳኛ</language>
			<language type="he">ዕብራስጥ</language>
			<language type="hi">ሐንድኛ</language>
			<language type="hr">ክሮሽያንኛ</language>
			<language type="hu">ሀንጋሪኛ</language>
			<language type="hy">አርመናዊ</language>
			<language type="ia">ኢንቴርሊንጓ</language>
			<language type="id">እንዶኒሲኛ</language>
			<language type="ie">እንተርሊንግወ</language>
			<language type="ik">እኑፒያቅኛ</language>
			<language type="is">አይስላንድኛ</language>
			<language type="it">ጣሊያንኛ</language>
			<language type="iu">እኑክቲቱትኛ</language>
			<language type="ja">ጃፓንኛ</language>
			<language type="jv">ጃቫንኛ</language>
			<language type="ka">ጊዮርጊያን</language>
			<language type="kk">ካዛክኛ</language>
			<language type="kl">ካላሊሱትኛ</language>
			<language type="km">ክመርኛ</language>
			<language type="kn">ካናዳኛ</language>
			<language type="ko">ኮሪያኛ</language>
			<language type="ks">ካሽሚርኛ</language>
			<language type="ku">ኩርድሽኛ</language>
			<language type="ky">ኪርጊዝኛ</language>
			<language type="la">ላቲንኛ</language>
			<language type="ln">ሊንጋላኛ</language>
			<language type="lo">ላውስኛ</language>
			<language type="lt">ሊቱአኒያን</language>
			<language type="lv">ላትቪያን</language>
			<language type="mg">ማላጋስኛ</language>
			<language type="mi">ማዮሪኛ</language>
			<language type="mk">ማከዶኒኛ</language>
			<language type="ml">ማላያላምኛ</language>
			<language type="mn">ሞንጎላዊኛ</language>
			<language type="mo">ሞልዳቫዊና</language>
			<language type="mr">ማራዚኛ</language>
			<language type="ms">ማላይኛ</language>
			<language type="mt">ማልቲስኛ</language>
			<language type="my">ቡርማኛ</language>
			<language type="na">ናኡሩ</language>
			<language type="ne">ኔፓሊኛ</language>
			<language type="nl">ደች</language>
			<language type="no">ኖርዌጂያን</language>
			<language type="oc">ኦኪታንኛ</language>
			<language type="om">ኦሮምኛ</language>
			<language type="or">ኦሪያኛ</language>
			<language type="pa">ፓንጃቢኛ</language>
			<language type="pl">ፖሊሽ</language>
			<language type="ps">ፑሽቶኛ</language>
			<language type="pt">ፖርቱጋሊኛ</language>
			<language type="qu">ኵቿኛ</language>
			<language type="rm">ሮማንስ</language>
			<language type="rn">ሩንዲኛ</language>
			<language type="ro">ሮማኒያን</language>
			<language type="ru">ራሽኛ</language>
			<language type="rw">ኪንያርዋንድኛ</language>
			<language type="sa">ሳንስክሪትኛ</language>
			<language type="sd">ሲንድሂኛ</language>
			<language type="sg">ሳንጎኛ</language>
			<language type="si">ስንሃልኛ</language>
			<language type="sid">ሲዳምኛ</language>
			<language type="sk">ስሎቫክኛ</language>
			<language type="sl">ስሎቪኛ</language>
			<language type="sm">ሳሞአኛ</language>
			<language type="sn">ሾናኛ</language>
			<language type="so">ሱማልኛ</language>
			<language type="sq">ልቤኒኛ</language>
			<language type="sr">ሰርቢኛ</language>
			<language type="ss">ስዋቲኛ</language>
			<language type="st">ሶዞኛ</language>
			<language type="su">ሱዳንኛ</language>
			<language type="sv">ስዊድንኛ</language>
			<language type="sw">ስዋሂሊኛ</language>
			<language type="ta">ታሚልኛ</language>
			<language type="te">ተሉጉኛ</language>
			<language type="tg">ታጂኪኛ</language>
			<language type="th">ታይኛ</language>
			<language type="ti">ትግርኛ</language>
			<language type="tig">ትግረ</language>
			<language type="tk">ቱርክመንኛ</language>
			<language type="tl">ታጋሎገኛ</language>
			<language type="tn">ጽዋናዊኛ</language>
			<language type="to">ቶንጋ</language>
			<language type="tr">ቱርክኛ</language>
			<language type="ts">ጾንጋኛ</language>
			<language type="tt">ታታርኛ</language>
			<language type="tw">ትዊኛ</language>
			<language type="ug">ኡዊግሁርኛ</language>
			<language type="uk">ዩክረኒኛ</language>
			<language type="ur">ኡርዱኛ</language>
			<language type="uz">ኡዝበክኛ</language>
			<language type="vi">ቪትናምኛ</language>
			<language type="vo">ቮላፑክኛ</language>
			<language type="wo">ዎሎፍኛ</language>
			<language type="xh">ዞሳኛ</language>
			<language type="yi">ይዲሻዊኛ</language>
			<language type="yo">ዮሩባዊኛ</language>
			<language type="za">ዡዋንግኛ</language>
			<language type="zh">ቻይንኛ</language>
			<language type="zu">ዙሉኛ</language>
		</languages>
		<scripts>
			<script type="Latn">ላቲን</script>
		</scripts>
		<territories>
			<territory type="AD">አንዶራ</territory>
			<territory type="AE">የተባበሩት፡አረብ፡ኤምሬትስ</territory>
			<territory type="AL">አልባኒያ</territory>
			<territory type="AM">አርሜኒያ</territory>
			<territory type="AN">ኔዘርላንድስ፡አንቲልስ</territory>
			<territory type="AR">አርጀንቲና</territory>
			<territory type="AT">ኦስትሪያ</territory>
			<territory type="AU">አውስትሬሊያ</territory>
			<territory type="AZ">አዘርባጃን</territory>
			<territory type="BA">ቦስኒያ፡እና፡ሄርዞጎቪኒያ</territory>
			<territory type="BB">ባርቤዶስ</territory>
			<territory type="BE">ቤልጄም</territory>
			<territory type="BG">ቡልጌሪያ</territory>
			<territory type="BH">ባህሬን</territory>
			<territory type="BM">ቤርሙዳ</territory>
			<territory type="BO">ቦሊቪያ</territory>
			<territory type="BR">ብራዚል</territory>
			<territory type="BT">ቡህታን</territory>
			<territory type="BY">ቤላሩስ</territory>
			<territory type="BZ">ቤሊዘ</territory>
			<territory type="CF">የመካከለኛው፡አፍሪካ፡ሪፐብሊክ</territory>
			<territory type="CH">ስዊዘርላንድ</territory>
			<territory type="CL">ቺሊ</territory>
			<territory type="CM">ካሜሩን</territory>
			<territory type="CN">ቻይና</territory>
			<territory type="CO">ኮሎምቢያ</territory>
			<territory type="CS">ሰርቢያ</territory>
			<territory type="CV">ኬፕ፡ቬርዴ</territory>
			<territory type="CY">ሳይፕረስ</territory>
			<territory type="CZ">ቼክ፡ሪፑብሊክ</territory>
			<territory type="DE">ጀርመን</territory>
			<territory type="DK">ዴንማርክ</territory>
			<territory type="DM">ዶሚኒካ</territory>
			<territory type="DO">ዶሚኒክ፡ሪፑብሊክ</territory>
			<territory type="DZ">አልጄሪያ</territory>
			<territory type="EC">ኢኳዶር</territory>
			<territory type="EE">ኤስቶኒያ</territory>
			<territory type="EG">ግብጽ</territory>
			<territory type="EH">ምዕራባዊ፡ሳህራ</territory>
			<territory type="ER">ኤርትራ</territory>
			<territory type="ES">ስፔን</territory>
			<territory type="ET">ኢትዮጵያ</territory>
			<territory type="FI">ፊንላንድ</territory>
			<territory type="FJ">ፊጂ</territory>
			<territory type="FM">ሚክሮኔዢያ</territory>
			<territory type="FR">ፈረንሳይ</territory>
			<territory type="GB">እንግሊዝ</territory>
			<territory type="GE">ጆርጂያ</territory>
			<territory type="GF">የፈረንሳይ፡ጉዊአና</territory>
			<territory type="GM">ጋምቢያ</territory>
			<territory type="GN">ጊኒ</territory>
			<territory type="GQ">ኢኳቶሪያል፡ጊኒ</territory>
			<territory type="GR">ግሪክ</territory>
			<territory type="GW">ቢሳዎ</territory>
			<territory type="GY">ጉያና</territory>
			<territory type="HK">ሆንግ፡ኮንግ</territory>
			<territory type="HR">ክሮኤሽያ</territory>
			<territory type="HT">ሀይቲ</territory>
			<territory type="HU">ሀንጋሪ</territory>
			<territory type="ID">ኢንዶኔዢያ</territory>
			<territory type="IE">አየርላንድ</territory>
			<territory type="IL">እስራኤል</territory>
			<territory type="IN">ህንድ</territory>
			<territory type="IQ">ኢራቅ</territory>
			<territory type="IS">አይስላንድ</territory>
			<territory type="IT">ጣሊያን</territory>
			<territory type="JM">ጃማይካ</territory>
			<territory type="JO">ጆርዳን</territory>
			<territory type="JP">ጃፓን</territory>
			<territory type="KH">ካምቦዲያ</territory>
			<territory type="KM">ኮሞሮስ</territory>
			<territory type="KP">ደቡብ፡ኮሪያ</territory>
			<territory type="KR">ሰሜን፡ኮሪያ</territory>
			<territory type="KW">ክዌት</territory>
			<territory type="LB">ሊባኖስ</territory>
			<territory type="LT">ሊቱዌኒያ</territory>
			<territory type="LV">ላትቪያ</territory>
			<territory type="LY">ሊቢያ</territory>
			<territory type="MA">ሞሮኮ</territory>
			<territory type="MD">ሞልዶቫ</territory>
			<territory type="MK">ማከዶኒያ</territory>
			<territory type="MN">ሞንጎሊያ</territory>
			<territory type="MO">ማካዎ</territory>
			<territory type="MR">ሞሪቴኒያ</territory>
			<territory type="MT">ማልታ</territory>
			<territory type="MU">ማሩሸስ</territory>
			<territory type="MX">ሜክሲኮ</territory>
			<territory type="MY">ማሌዢያ</territory>
			<territory type="NA">ናሚቢያ</territory>
			<territory type="NC">ኒው፡ካሌዶኒያ</territory>
			<territory type="NG">ናይጄሪያ</territory>
			<territory type="NL">ኔዘርላንድ</territory>
			<territory type="NO">ኖርዌ</territory>
			<territory type="NP">ኔፓል</territory>
			<territory type="NZ">ኒው፡ዚላንድ</territory>
			<territory type="PE">ፔሩ</territory>
			<territory type="PF">የፈረንሳይ፡ፖሊኔዢያ</territory>
			<territory type="PG">ፓፑዋ፡ኒው፡ጊኒ</territory>
			<territory type="PL">ፖላንድ</territory>
			<territory type="PR">ፖርታ፡ሪኮ</territory>
			<territory type="RO">ሮሜኒያ</territory>
			<territory type="RU">ራሺያ</territory>
			<territory type="SA">ሳውድአረቢያ</territory>
			<territory type="SD">ሱዳን</territory>
			<territory type="SE">ስዊድን</territory>
			<territory type="SG">ሲንጋፖር</territory>
			<territory type="SI">ስሎቬኒያ</territory>
			<territory type="SK">ስሎቫኪያ</territory>
			<territory type="SN">ሴኔጋል</territory>
			<territory type="SO">ሱማሌ</territory>
			<territory type="SY">ሲሪያ</territory>
			<territory type="TD">ቻድ</territory>
			<territory type="TF">የፈረንሳይ፡ደቡባዊ፡ግዛቶች</territory>
			<territory type="TH">ታይላንድ</territory>
			<territory type="TJ">ታጃኪስታን</territory>
			<territory type="TL">ምስራቅ፡ቲሞር</territory>
			<territory type="TN">ቱኒዚያ</territory>
			<territory type="TR">ቱርክ</territory>
			<territory type="TT">ትሪኒዳድ፡እና፡ቶባጎ</territory>
			<territory type="TZ">ታንዛኒያ</territory>
			<territory type="UG">ዩጋንዳ</territory>
			<territory type="US">አሜሪካ</territory>
			<territory type="UZ">ዩዝበኪስታን</territory>
			<territory type="VE">ቬንዙዌላ</territory>
			<territory type="VG">የእንግሊዝ፡ድንግል፡ደሴቶች</territory>
			<territory type="VI">የአሜሪካ፡ቨርጂን፡ደሴቶች</territory>
			<territory type="YE">የመን</territory>
			<territory type="ZA">ደቡብ፡አፍሪካ</territory>
			<territory type="ZM">ዛምቢያ</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[፟ ᎐-᎙ ሀ-ሆ ለ-ሎ ሐ-ሖ መ-ሞ ሠ-ሦ ረ-ሮ ሰ-ሶ ቀ-ቆ ቈ ቊ-ቍ በ-ቦ ተ-ቶ ኀ-ኆ ኈ ኊ-ኍ ነ-ኖ አ-ኦ ከ-ኮ ኰ ኲ-ኵ ወ-ዎ ዐ-ዖ ዘ-ዞ የ-ዮ ደ-ዶ ገ-ጎ ጐ ጒ-ጕ ጠ-ጦ ጰ-ጶ ጸ-ጾ ፀ-ፆ ፈ-ፎ ፐ-ፖ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ሇ ሏ ⶀ ሗ ሟ ᎀ-ᎃ ⶁ ሧ ሯ ⶂ ሷ ⶃ ሸ-ሿ ⶄ ቇ ቐ-ቖ ቘ ቚ-ቝ ቧ ᎄ-ᎇ ⶅ ቮ ቯ ቷ ⶆ ቿ ⶇ ኇ ኗ ⶈ ኟ ⶉ ኧ ⶊ ኯ ኸ-ኾ ዀ ዂ-ዅ ዏ ዟ ⶋ ዠ-ዧ ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ጏ ጘ-ጟ ⶓ-ⶖ ጧ ⶏ ጨ-ጯ ⶐ ጷ ⶑ ጿ ፇ ፏ ᎈ-ᎋ ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ጠሐረ</month>
							<month type="2">ከተተ</month>
							<month type="3">መገበ</month>
							<month type="4">አኀዘ</month>
							<month type="5">ግንባ</month>
							<month type="6">ሠንየ</month>
							<month type="7">ሐመለ</month>
							<month type="8">ነሐሰ</month>
							<month type="9">ከረመ</month>
							<month type="10">ጠቀመ</month>
							<month type="11">ኀደረ</month>
							<month type="12">ኀሠሠ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ጠሐረ</month>
							<month type="2">ከተተ</month>
							<month type="3">መገበ</month>
							<month type="4">አኀዘ</month>
							<month type="5">ግንባት</month>
							<month type="6">ሠንየ</month>
							<month type="7">ሐመለ</month>
							<month type="8">ነሐሰ</month>
							<month type="9">ከረመ</month>
							<month type="10">ጠቀመ</month>
							<month type="11">ኀደረ</month>
							<month type="12">ኀሠሠ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ጠ</month>
							<month type="2">ከ</month>
							<month type="3">መ</month>
							<month type="4">አ</month>
							<month type="5">ግ</month>
							<month type="6">ሠ</month>
							<month type="7">ሐ</month>
							<month type="8">ነ</month>
							<month type="9">ከ</month>
							<month type="10">ጠ</month>
							<month type="11">ኀ</month>
							<month type="12">ኀ</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">እኁድ</day>
							<day type="mon">ሰኑይ</day>
							<day type="tue">ሠሉስ</day>
							<day type="wed">ራብዕ</day>
							<day type="thu">ሐሙስ</day>
							<day type="fri">ዓርበ</day>
							<day type="sat">ቀዳሚ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">እኁድ</day>
							<day type="mon">ሰኑይ</day>
							<day type="tue">ሠሉስ</day>
							<day type="wed">ራብዕ</day>
							<day type="thu">ሐሙስ</day>
							<day type="fri">ዓርበ</day>
							<day type="sat">ቀዳሚት</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">እ</day>
							<day type="mon">ሰ</day>
							<day type="tue">ሠ</day>
							<day type="wed">ራ</day>
							<day type="thu">ሐ</day>
							<day type="fri">ዓ</day>
							<day type="sat">ቀ</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ጽባሕ</am>
				<pm>ምሴት</pm>
				<eras>
					<eraAbbr>
						<era type="0">ዓ/ዓ</era>
						<era type="1">ዓ/ም</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE፥ dd MMMM መዓልት yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<group>ወ</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>የብራዚል ሪል</displayName>
			</currency>
			<currency type="CNY">
				<displayName>የቻይና ዩአን ረንሚንቢ</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="ERN">
				<symbol>$</symbol>
			</currency>
			<currency type="ETB">
				<displayName>የኢትዮጵያ ብር</displayName>
				<symbol>ETB$</symbol>
			</currency>
			<currency type="EUR">
				<displayName>አውሮ</displayName>
			</currency>
			<currency type="GBP">
				<displayName>የእንግሊዝ ፓውንድ ስተርሊንግ</displayName>
			</currency>
			<currency type="INR">
				<displayName>የሕንድ ሩፒ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>የጃፓን የን</displayName>
			</currency>
			<currency type="RUB">
				<displayName>የራሻ ሩብል</displayName>
			</currency>
			<currency type="USD">
				<displayName>የአሜሪካን ዶላር</displayName>
				<symbol>USD</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[����$$Locale/Data/gez_ER.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.39 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gez"/>
		<territory type="ER"/>
	</identity>
</ldml>
PKpG[�l
�t�tLocale/Data/ta.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.70 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="ta"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">அபார்</language>
			<language type="ab">அப்காஸின்</language>
			<language type="af">ஆப்ரிகன்ஸ்</language>
			<language type="am">அம்ஹாரிக்</language>
			<language type="ar">அரபு</language>
			<language type="as">அஸ்ஸாமி</language>
			<language type="ay">அயமரா</language>
			<language type="az">அசர்பாய்ஜானி</language>
			<language type="ba">பாஷ்கிர்</language>
			<language type="be">பைலோருஷ்ன்</language>
			<language type="bg">பல்கேரியன்</language>
			<language type="bh">பிஹாரி</language>
			<language type="bi">பிஸ்லாமா</language>
			<language type="bn">வங்காளம்</language>
			<language type="bo">திபெத்து</language>
			<language type="br">பிரிடன்</language>
			<language type="bs">போஸ்னியன்</language>
			<language type="ca">காடலான்</language>
			<language type="co">கார்சியன்</language>
			<language type="cs">செக்</language>
			<language type="cy">வெல்ஷ்</language>
			<language type="da">டானிஷ்</language>
			<language type="de">ஜெர்மன்</language>
			<language type="dz">புடானி</language>
			<language type="el">கிரேக்கம்</language>
			<language type="en">ஆங்கிலம்</language>
			<language type="eo">எஸ்பரேன்டோ</language>
			<language type="es">ஸ்பேனிஷ்</language>
			<language type="et">எஸ்டோனியன்</language>
			<language type="eu">பஸ்க்</language>
			<language type="fa">பர்ஸியன்</language>
			<language type="fi">பின்னிஷ்</language>
			<language type="fil">ஃபிலிபினோ</language>
			<language type="fj">பிஜி</language>
			<language type="fo">பைரோஸி</language>
			<language type="fr">பிரெஞ்சு</language>
			<language type="fy">பிரிஷியன்</language>
			<language type="ga">ஐரிஷ்</language>
			<language type="gd">ஸ்காட்ஸ் காலெக்</language>
			<language type="gl">கெலிஸியன்</language>
			<language type="gn">குரானி</language>
			<language type="gu">குஜராத்தி</language>
			<language type="ha">ஹொஸா</language>
			<language type="he">ஹுப்ரு</language>
			<language type="hi">இந்தி</language>
			<language type="hr">கரோஷியன்</language>
			<language type="hu">ஹங்கேரியன்</language>
			<language type="hy">ஆர்மேனியன்</language>
			<language type="ia">இன்டர்லிங்குவா [ia]</language>
			<language type="id">இந்தோனேஷியன்</language>
			<language type="ie">இன்டர்லிங்குவா</language>
			<language type="ik">இனுபெக்</language>
			<language type="is">ஐஸ்லென்டிக்</language>
			<language type="it">இத்தாலியன்</language>
			<language type="iu">இனுகிடட்</language>
			<language type="ja">ஜப்பானீஸ்</language>
			<language type="jv">ஜாவானீஸ்</language>
			<language type="ka">ஜியோர்ஜியன்</language>
			<language type="kk">கசாக்</language>
			<language type="kl">கிரின்லென்டிக்</language>
			<language type="km">கம்போடியன்</language>
			<language type="kn">கன்னடம்</language>
			<language type="ko">கொரியன்</language>
			<language type="kok">கொங்கனி</language>
			<language type="ks">காஷ்மிரி</language>
			<language type="ku">குர்திஷ்</language>
			<language type="ky">கிர்கிஷ்</language>
			<language type="la">லாதின்</language>
			<language type="ln">லிங்காலா</language>
			<language type="lo">லோத்தியன்</language>
			<language type="lt">லுத்தேனியன்</language>
			<language type="lv">லேட்வியன் (லேட்டிஷ்)</language>
			<language type="mg">மலகெஸி</language>
			<language type="mi">மோரி</language>
			<language type="mk">மெக்கடோனியன்</language>
			<language type="ml">மலையாளம்</language>
			<language type="mn">மங்கோலியன்</language>
			<language type="mo">மோல்டேவியன்</language>
			<language type="mr">மராத்தி</language>
			<language type="ms">மலாய்</language>
			<language type="mt">மால்டிஸ்</language>
			<language type="my">பர்மிஸ்</language>
			<language type="na">நாரூ</language>
			<language type="ne">நேப்பாலி</language>
			<language type="nl">டச்சு</language>
			<language type="nn">நார்வீஜியன் (நைநோர்ஸ்க்)</language>
			<language type="no">நார்வேகியன்</language>
			<language type="oc">ஆகிடியன்</language>
			<language type="om">ஒரோம (அபன்)</language>
			<language type="or">ஒரியா</language>
			<language type="pa">பஞ்சாபி</language>
			<language type="pl">போலிஷ்</language>
			<language type="ps">பேஷ்டோ (புஷ்டோ)</language>
			<language type="pt">போர்த்துகீஸ்</language>
			<language type="pt_BR">போர்த்துக்கீசியம்(பிரேசில்)</language>
			<language type="pt_PT">போர்த்துகீசியம் (போர்ச்சுக்கல்)</language>
			<language type="qu">கியுசா</language>
			<language type="rm">ரைட்டோ-ரோமென்ஸ்</language>
			<language type="rn">கிருந்தி</language>
			<language type="ro">ரோமேனியன்</language>
			<language type="ru">ரஷியன்</language>
			<language type="rw">கின்யர்வென்டா</language>
			<language type="sa">சமஸ்கிருதம்</language>
			<language type="sd">சிந்தி</language>
			<language type="sg">சென்க்ரோ</language>
			<language type="sh">செர்போ-க்ரோஷியன்</language>
			<language type="si">சிங்களம்</language>
			<language type="sk">ஸ்லோவெக்</language>
			<language type="sl">ஸ்லோவினேயின்</language>
			<language type="sm">ஸெமோன்</language>
			<language type="sn">ஷோனா</language>
			<language type="so">சோமாலி</language>
			<language type="sq">அல்பெனியன்</language>
			<language type="sr">சர்பியன்</language>
			<language type="ss">ஷிஸ்வாதி</language>
			<language type="st">ஷெஸ்ஸோதோ</language>
			<language type="su">சுடானீஸ்</language>
			<language type="sv">ஷீவிடிஸ்</language>
			<language type="sw">சுவாஹிலி</language>
			<language type="ta">தமிழ்</language>
			<language type="te">தெலுங்கு</language>
			<language type="tg">தாஜிக்</language>
			<language type="th">தாய்</language>
			<language type="ti">டிக்ரின்யா</language>
			<language type="tk">டர்க்மென்</language>
			<language type="tl">டாகாலோக்</language>
			<language type="tlh">கிளிங்கன்</language>
			<language type="tn">ஸெட்ஸ்வானா</language>
			<language type="to">டோங்கா</language>
			<language type="tr">டர்கிஷ்</language>
			<language type="ts">ஸோங்கா</language>
			<language type="tt">டாடர்</language>
			<language type="tw">த்திவி</language>
			<language type="ug">யுகுர்</language>
			<language type="uk">உக்ரேனியன்</language>
			<language type="ur">உருது</language>
			<language type="uz">உஸ்பெக்</language>
			<language type="vi">வியட்நாமிஸ்</language>
			<language type="vo">ஒலபுக்</language>
			<language type="wo">ஒலோப்</language>
			<language type="xh">ஹோஷா</language>
			<language type="yi">ஈத்திஷ</language>
			<language type="yo">யோருப்பா</language>
			<language type="za">ஜுவாங்</language>
			<language type="zh">சீனம்</language>
			<language type="zh_Hans">எளிய சீனம்</language>
			<language type="zh_Hant">மரபு சீனம்</language>
			<language type="zu">ஜூலூ</language>
		</languages>
		<territories>
			<territory type="002">ஆப்ரிக்கா</territory>
			<territory type="013">மத்திய அமெரிக்கா</territory>
			<territory type="014">கிழக்கு ஆப்ரிக்கா</territory>
			<territory type="029">கரீபியன்</territory>
			<territory type="030">கிழக்கு ஆசியா</territory>
			<territory type="053">ஆஸ்திரேலியா மற்றும்  நியூசிலாந்து</territory>
			<territory type="142">ஆசியா</territory>
			<territory type="143">மத்திய ஆசியா</territory>
			<territory type="151">கிழக்கு ஐரோப்பா</territory>
			<territory type="AD">அன்டோரா</territory>
			<territory type="AE">ஐக்கிய அரபு கூட்டாட்சி</territory>
			<territory type="AF">ஆப்கானிஸ்தான்</territory>
			<territory type="AG">ஆன்டிகுவா பார்புடா</territory>
			<territory type="AL">அல்பேனியா</territory>
			<territory type="AM">ஆர்மீனியா</territory>
			<territory type="AO">அங்கோலா</territory>
			<territory type="AQ">அன்டார்டிகா</territory>
			<territory type="AR">அர்ஜெண்டினா</territory>
			<territory type="AS">அமெரிக்க சமோவா</territory>
			<territory type="AT">ஆஸ்திரியா</territory>
			<territory type="AU">ஆஸ்திரேலியா</territory>
			<territory type="AX">ஆலந்து தீவுகள்</territory>
			<territory type="AZ">அஜர்பைஜான்</territory>
			<territory type="BA">போஸ்னியா ஹெர்ஸிகோவினா</territory>
			<territory type="BB">பார்படோஸ்</territory>
			<territory type="BD">பங்களாதேஷ்</territory>
			<territory type="BE">பெல்ஜியம்</territory>
			<territory type="BF">பர்கினோ பாஸோ</territory>
			<territory type="BG">பல்கேரியா</territory>
			<territory type="BH">பஹ்ரைன்</territory>
			<territory type="BI">புருண்டி</territory>
			<territory type="BJ">பெனின்</territory>
			<territory type="BM">பெர்முடா</territory>
			<territory type="BN">புரூனேய்</territory>
			<territory type="BO">பொலிவியா</territory>
			<territory type="BR">பிரேஸில்</territory>
			<territory type="BS">பஹாமாஸ்</territory>
			<territory type="BT">பூடான்</territory>
			<territory type="BW">போட்ஸ்வானா</territory>
			<territory type="BY">பெலாரூஸ்</territory>
			<territory type="BZ">பெலிஸ்</territory>
			<territory type="CA">கனடா</territory>
			<territory type="CD">காங்கோ - கின்சாசா</territory>
			<territory type="CF">மத்திய ஆப்ரிக்கக் குடியரசு</territory>
			<territory type="CG">காங்கோ</territory>
			<territory type="CH">ஸ்விட்சர்லாந்து</territory>
			<territory type="CI">ஐவரி கோஸ்ட்</territory>
			<territory type="CK">குக் தீவுகள்</territory>
			<territory type="CL">சிலி</territory>
			<territory type="CM">கேமரூன்</territory>
			<territory type="CN">சீன</territory>
			<territory type="CO">கொலம்பியா</territory>
			<territory type="CR">கோஸ்டாரிகா</territory>
			<territory type="CU">கியூபா</territory>
			<territory type="CV">கேப் வெர்டே</territory>
			<territory type="CX">கிறிஸ்துமஸ் தீவு</territory>
			<territory type="CY">சைப்ரஸ்</territory>
			<territory type="CZ">செக் குடியரசு</territory>
			<territory type="DE">ஜெர்மன்</territory>
			<territory type="DJ">ஜிபௌடி</territory>
			<territory type="DK">டென்மார்க்</territory>
			<territory type="DM">டொமினிகா</territory>
			<territory type="DO">டொமினிகன் குடியரசு</territory>
			<territory type="DZ">அல்ஜீரியா</territory>
			<territory type="EC">ஈக்வடார்</territory>
			<territory type="EE">எஸ்டோனியா</territory>
			<territory type="EG">எகிப்து</territory>
			<territory type="ES">ஸ்பெயின்</territory>
			<territory type="ET">எதியோப்பியா</territory>
			<territory type="FI">பின்லாந்து</territory>
			<territory type="FJ">பிஜி</territory>
			<territory type="FR">பிரான்ஸ்</territory>
			<territory type="GA">காபோன்</territory>
			<territory type="GB">பிரிடிஷ் கூட்டரசு</territory>
			<territory type="GD">கிரனெடா</territory>
			<territory type="GE">ஜார்ஜியா</territory>
			<territory type="GH">கானா</territory>
			<territory type="GM">காம்பியா</territory>
			<territory type="GN">கினி</territory>
			<territory type="GQ">ஈக்குவிடோரியல் கினி</territory>
			<territory type="GR">கிரீஸ்</territory>
			<territory type="GT">குவாத்தாமாலா</territory>
			<territory type="GW">கினி-பிஸ்ஸாவ்</territory>
			<territory type="GY">கயானா</territory>
			<territory type="HN">ஹாண்டுராஸ்</territory>
			<territory type="HR">குரோசியா</territory>
			<territory type="HT">ஹெய்தி</territory>
			<territory type="HU">ஹங்கேரி</territory>
			<territory type="ID">இந்தோனேஷியா</territory>
			<territory type="IE">அயர்லாந்து</territory>
			<territory type="IL">இஸ்ரேல்</territory>
			<territory type="IN">இந்தியா</territory>
			<territory type="IQ">இராக்</territory>
			<territory type="IR">ஈரான்</territory>
			<territory type="IS">ஐஸ்லாந்து</territory>
			<territory type="IT">இத்தாலி</territory>
			<territory type="JM">ஜமாய்க்கா</territory>
			<territory type="JO">ஜொர்டான்</territory>
			<territory type="JP">ஜப்பான்</territory>
			<territory type="KE">கென்யா</territory>
			<territory type="KG">கிர்கிஸ்தான்</territory>
			<territory type="KH">கம்போடியா</territory>
			<territory type="KI">கிரிபடி</territory>
			<territory type="KM">கோமரோஸ்</territory>
			<territory type="KP">வட கொரியா</territory>
			<territory type="KR">தென் கொரியா</territory>
			<territory type="KW">குவைத்து</territory>
			<territory type="KZ">கஜகஸ்தான்</territory>
			<territory type="LA">லாவோஸ்</territory>
			<territory type="LB">லெபனான்</territory>
			<territory type="LI">லிச்டெண்ஸ்டீன்</territory>
			<territory type="LK">இலங்கை</territory>
			<territory type="LR">லைபீரியா</territory>
			<territory type="LS">லெசோதோ</territory>
			<territory type="LT">லிதுவேனியா</territory>
			<territory type="LU">லக்ஸ்சம்பர்க்</territory>
			<territory type="LV">லாட்வியா</territory>
			<territory type="LY">லிப்யா</territory>
			<territory type="MA">மொரோக்கோ</territory>
			<territory type="MC">மொனாக்கோ</territory>
			<territory type="MD">மால்டோவா</territory>
			<territory type="MK">மசெடோணியா</territory>
			<territory type="ML">மாலீ</territory>
			<territory type="MM">மியான்மார்</territory>
			<territory type="MN">மங்கோலியா</territory>
			<territory type="MT">மால்டா</territory>
			<territory type="MU">மோரிசியஸ்</territory>
			<territory type="MV">மாலத்தீவு</territory>
			<territory type="MW">மலாவீ</territory>
			<territory type="MX">மெக்சிகோ</territory>
			<territory type="MY">மலேஷியா</territory>
			<territory type="NA">னாமீபியா</territory>
			<territory type="NI">நிகாராகுவா</territory>
			<territory type="NL">நெதர்லாந்து</territory>
			<territory type="NO">நார்வே</territory>
			<territory type="NP">நேபாளம்</territory>
			<territory type="NR">நௌரு</territory>
			<territory type="NZ">நியூசிலாந்து</territory>
			<territory type="OM">ஓமான்</territory>
			<territory type="PA">பணாமா</territory>
			<territory type="PE">பெரு</territory>
			<territory type="PG">பாப்புவா-நியூகினி</territory>
			<territory type="PH">பிலிப்பைன்ஸ்</territory>
			<territory type="PK">பாகிஸ்தான்</territory>
			<territory type="PL">போலந்து</territory>
			<territory type="PT">போர்ச்சுக்கல்</territory>
			<territory type="PY">பாரகுவே</territory>
			<territory type="QA">காடார்</territory>
			<territory type="RO">ருமேனியா</territory>
			<territory type="RU">ரஷ்யா</territory>
			<territory type="SA">சவூதி அரேபியா</territory>
			<territory type="SB">சாலமன் தீவுகள்</territory>
			<territory type="SE">ஸ்வீடன்</territory>
			<territory type="SG">சிங்கப்பூர்</territory>
			<territory type="SI">ஸ்லோவேனியா</territory>
			<territory type="SK">ஸ்லோவாகியா</territory>
			<territory type="SM">சான்மெரினோ</territory>
			<territory type="SR">சூரினாம்</territory>
			<territory type="SV">எல் சால்வடார்</territory>
			<territory type="SY">சிரியா</territory>
			<territory type="TD">சாட்</territory>
			<territory type="TH">தாய்லாந்து</territory>
			<territory type="TJ">தாஜிகிஸ்தான்</territory>
			<territory type="TL">கிழக்கு திமோர்</territory>
			<territory type="TM">துர்க்மெனிஸ்தான்</territory>
			<territory type="TN">துனிசியா</territory>
			<territory type="TO">தொங்கா</territory>
			<territory type="TR">துருக்கி</territory>
			<territory type="TT">திரினிடாட் தொபாகோ</territory>
			<territory type="TV">துவாலூ</territory>
			<territory type="TW">தைவான்</territory>
			<territory type="UA">உக்ரைன்</territory>
			<territory type="US">ஐக்கிய அமெரிக்கா குடியரசு</territory>
			<territory type="UY">உருகுவே</territory>
			<territory type="UZ">உஸ்பெகிஸ்தான்</territory>
			<territory type="VA">வாடிகன்</territory>
			<territory type="VE">வெனஜுவேலா</territory>
			<territory type="VN">வியட்நாம்</territory>
			<territory type="VU">வனுவாட்டு</territory>
			<territory type="WS">சமோவா</territory>
			<territory type="YE">யேமன்</territory>
			<territory type="ZA">தென் ஆப்ரிக்கா</territory>
			<territory type="ZW">ஜிம்பாப்வே</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ஃ அ-ஊ எ-ஐ ஒ-க ங ச ஜ ஞ ட ண த ந-ப ம-வ ஷ-ஹ ா-ூ ெ-ை ொ-்]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a g i m t]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ஜன.</month>
							<month type="2">பிப்.</month>
							<month type="3">மார்.</month>
							<month type="4">ஏப்.</month>
							<month type="5">மே</month>
							<month type="6">ஜூன்</month>
							<month type="7">ஜூலை</month>
							<month type="8">ஆக.</month>
							<month type="9">செப்.</month>
							<month type="10">அக்.</month>
							<month type="11">நவ.</month>
							<month type="12">டிச.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">ஜனவரி</month>
							<month type="2">பிப்ரவரி</month>
							<month type="3">மார்ச்</month>
							<month type="4">ஏப்ரல்</month>
							<month type="5">மே</month>
							<month type="6">ஜூன்</month>
							<month type="7">ஜூலை</month>
							<month type="8">ஆகஸ்ட்</month>
							<month type="9">செப்டம்பர்</month>
							<month type="10">அக்டோபர்</month>
							<month type="11">நவம்பர்</month>
							<month type="12">டிசம்பர்</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ஞா</day>
							<day type="mon">தி</day>
							<day type="tue">செ</day>
							<day type="wed">பு</day>
							<day type="thu">வி</day>
							<day type="fri">வெ</day>
							<day type="sat">ச</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">ஞாயிறு</day>
							<day type="mon">திங்கள்</day>
							<day type="tue">செவ்வாய்</day>
							<day type="wed">புதன்</day>
							<day type="thu">வியாழன்</day>
							<day type="fri">வெள்ளி</day>
							<day type="sat">சனி</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1ஆம் காலாண்டு</quarter>
							<quarter type="2">2ஆம் காலாண்டு</quarter>
							<quarter type="3">3ஆம் காலாண்டு</quarter>
							<quarter type="4">4ஆம் காலாண்டு</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>காலை</am>
				<pm>மாலை</pm>
				<eras>
					<eraNames>
						<era type="0">கிறிஸ்துவுக்கு முன்</era>
						<era type="1">அனோ டோமினி</era>
					</eraNames>
					<eraAbbr>
						<era type="0">கிமு</era>
						<era type="1">கிபி</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Australia/Brisbane">
				<exemplarCity>பிரிஸ்பேன்</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>கேம்போ கிராண்டே</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>கேம்பிரிட்ஜ் பே</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ஈஸ்டர்</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>ஜகார்த்தா</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>ஜெயபூரா</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>லாஸ் ஏஞ்சல்ஸ்</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ஃபோனிக்ஸ்</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>தேன்வர்</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>சென்டர்</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>சிகாகோ</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>இந்தியானாபோலிஸ்</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>நியூயார்க்</exemplarCity>
			</zone>
			<metazone type="India">
				<long>
					<standard>இந்திய நேரப்படி</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>ரூ</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ஆம்</yesstr>
			<nostr>இல்லை</nostr>
		</messages>
	</posix>
</ldml>
PKpG[lb@5@5@Locale/Data/ps.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="ps"/>
	</identity>
	<fallback>fa_AF</fallback>
	<localeDisplayNames>
		<languages>
			<language type="af">افريکاني</language>
			<language type="am">امهاري</language>
			<language type="ar">عربي</language>
			<language type="as">اسمائى ژبه</language>
			<language type="az">أذربائجاني</language>
			<language type="bal">بلوڅي</language>
			<language type="be">بېلاروسي</language>
			<language type="bg">بلغاري</language>
			<language type="bh">بيهاري</language>
			<language type="bn">بنګالي</language>
			<language type="br">برېتون</language>
			<language type="bs">بوسني</language>
			<language type="ca">کټلاني</language>
			<language type="cs">چېک</language>
			<language type="cy">ويلشي</language>
			<language type="da">ډېنش</language>
			<language type="de">الماني</language>
			<language type="el">یوناني</language>
			<language type="en">انګلیسي</language>
			<language type="eo">اسپرانتو</language>
			<language type="es">هسپانوي</language>
			<language type="et">حبشي</language>
			<language type="eu">باسکي</language>
			<language type="fa">فارسي</language>
			<language type="fi">فینلنډي</language>
			<language type="fil">تګالوګ</language>
			<language type="fo">فاروئې</language>
			<language type="fr">فرانسوي</language>
			<language type="fy">فريزي</language>
			<language type="ga">ائيرلېنډي</language>
			<language type="gd">سکاټلېنډي ګېلک</language>
			<language type="gl">ګلېشيايي</language>
			<language type="gn">ګوراني</language>
			<language type="gu">ګجراتي</language>
			<language type="he">عبري</language>
			<language type="hi">هندي</language>
			<language type="hr">کروواتي</language>
			<language type="hu">هنګري</language>
			<language type="hy">ارمني</language>
			<language type="ia">انټرلنګوا</language>
			<language type="id">انډونېشيايي</language>
			<language type="ie">آسا نا جبة</language>
			<language type="ine">هند و اروپایي</language>
			<language type="is">أيسلېنډي</language>
			<language type="it">ایټالوي</language>
			<language type="ja">جاپانی</language>
			<language type="jv">جاوايې</language>
			<language type="ka">جورجيائي</language>
			<language type="km">کمبوډيايې يا د کمبوډيا</language>
			<language type="kn">کنأډه</language>
			<language type="ko">کوريائي</language>
			<language type="ku">کردي</language>
			<language type="ky">کرګيز</language>
			<language type="la">لاتیني</language>
			<language type="lo">لويتين</language>
			<language type="lt">ليتواني</language>
			<language type="lv">لېټواني</language>
			<language type="mg">ملغاسي</language>
			<language type="mk">مقدوني</language>
			<language type="ml">مالايالم</language>
			<language type="mn">مغولي</language>
			<language type="mr">مراټهي</language>
			<language type="ms">ملایا</language>
			<language type="mt">مالټايي</language>
			<language type="ne">نېپالي</language>
			<language type="nl">هالېنډي</language>
			<language type="nn">ناروېئي (نائنورسک)</language>
			<language type="no">ناروېئې</language>
			<language type="oc">اوکسيټاني</language>
			<language type="or">اوريا</language>
			<language type="pa">پنجابي</language>
			<language type="pl">پولنډي</language>
			<language type="ps">پښتو</language>
			<language type="pt">پورتګالي</language>
			<language type="pt_BR">پرتگال (برازيل)</language>
			<language type="pt_PT">پرتګالي (پرتګال)</language>
			<language type="ro">روماني</language>
			<language type="ru">روسي</language>
			<language type="sa">سنسکریټ</language>
			<language type="sd">سندهي</language>
			<language type="sh">سرب-کروشيايي</language>
			<language type="si">سينهالي</language>
			<language type="sk">سلوواکي</language>
			<language type="sl">سلوواني</language>
			<language type="so">سومالي</language>
			<language type="sq">الباني</language>
			<language type="sr">سربيائي</language>
			<language type="st">سيسوتو</language>
			<language type="su">سوډاني</language>
			<language type="sv">سویډنی</language>
			<language type="sw">سواهېلي</language>
			<language type="ta">تامل</language>
			<language type="te">تېليګو</language>
			<language type="tg">تاجک</language>
			<language type="th">تايلېنډي</language>
			<language type="ti">تيګريني</language>
			<language type="tk">ترکمني</language>
			<language type="tlh">کلينګاني</language>
			<language type="tr">ترکي</language>
			<language type="tt">تاتار</language>
			<language type="tw">توی</language>
			<language type="ug">اويگور</language>
			<language type="uk">اوکرانايي</language>
			<language type="ur">اردو</language>
			<language type="uz">ازبکي</language>
			<language type="vi">وېتنامي</language>
			<language type="xh">خوسا</language>
			<language type="yi">يديش</language>
			<language type="zh">چیني</language>
			<language type="zu">زولو</language>
		</languages>
		<scripts>
			<script type="Arab">عربي</script>
		</scripts>
		<territories>
			<territory type="AF">افغانستان</territory>
			<territory type="AL">البانیه</territory>
			<territory type="AO">انګولا</territory>
			<territory type="AQ">انتارکتیکا</territory>
			<territory type="AT">اتریش</territory>
			<territory type="BD">بنګله‌دیش</territory>
			<territory type="BG">بلغاریه</territory>
			<territory type="CA">کاناډا</territory>
			<territory type="CH">سویس</territory>
			<territory type="CN">چین</territory>
			<territory type="CO">کولمبیا</territory>
			<territory type="CU">کیوبا</territory>
			<territory type="DE">المان</territory>
			<territory type="DK">ډنمارک</territory>
			<territory type="DZ">الجزایر</territory>
			<territory type="EG">مصر</territory>
			<territory type="ES">هسپانیه</territory>
			<territory type="ET">حبشه</territory>
			<territory type="FI">فنلینډ</territory>
			<territory type="FR">فرانسه</territory>
			<territory type="GB">برتانیه</territory>
			<territory type="GH">ګانا</territory>
			<territory type="GN">ګیانا</territory>
			<territory type="GR">یونان</territory>
			<territory type="GT">ګواتیمالا</territory>
			<territory type="HN">هانډوراس</territory>
			<territory type="HU">مجارستان</territory>
			<territory type="ID">اندونیزیا</territory>
			<territory type="IN">هند</territory>
			<territory type="IQ">عراق</territory>
			<territory type="IS">آیسلینډ</territory>
			<territory type="IT">ایټالیه</territory>
			<territory type="JM">جمیکا</territory>
			<territory type="JP">جاپان</territory>
			<territory type="KH">کمبودیا</territory>
			<territory type="KW">کویټ</territory>
			<territory type="LA">لاوس</territory>
			<territory type="LB">لبنان</territory>
			<territory type="LR">لایبریا</territory>
			<territory type="LY">لیبیا</territory>
			<territory type="MA">مراکش</territory>
			<territory type="MN">مغولستان</territory>
			<territory type="MY">مالیزیا</territory>
			<territory type="NG">نایجیریا</territory>
			<territory type="NI">نکاراګوا</territory>
			<territory type="NL">هالېنډ</territory>
			<territory type="NO">ناروې</territory>
			<territory type="NP">نیپال</territory>
			<territory type="NZ">نیوزیلنډ</territory>
			<territory type="PK">پاکستان</territory>
			<territory type="PL">پولنډ</territory>
			<territory type="PS">فلسطین</territory>
			<territory type="PT">پورتګال</territory>
			<territory type="RU">روسیه</territory>
			<territory type="RW">روندا</territory>
			<territory type="SA">سعودی عربستان</territory>
			<territory type="SE">سویډن</territory>
			<territory type="SV">سالوېډور</territory>
			<territory type="SY">سوریه</territory>
			<territory type="TJ">تاجکستان</territory>
			<territory type="TZ">تنزانیا</territory>
			<territory type="UY">یوروګوای</territory>
			<territory type="YE">یمن</territory>
		</territories>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[َ ِ ُ ً ٍ ٌ ّ ْ ٔ ٰ آ ا أ ء ب پ ت ټ ث ج ځ چ څ ح-د ډ ذ ر ړ ز ژ ږ س ش ښ ص-غ ف ق ک ګ ل-ن ڼ ه ة و ؤ ی ي ې ۍ ئ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">مـی</month>
							<month type="6">جون</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">جنوري</month>
							<month type="2">فبروري</month>
							<month type="3">مارچ</month>
							<month type="4">اپریل</month>
							<month type="5">می</month>
							<month type="6">جون</month>
							<month type="7">جولای</month>
							<month type="8">اګست</month>
							<month type="9">سپتمبر</month>
							<month type="10">اکتوبر</month>
							<month type="11">نومبر</month>
							<month type="12">دسمبر</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">یکشنبه</day>
							<day type="mon">دوشنبه</day>
							<day type="tue">سه‌شنبه</day>
							<day type="wed">چهارشنبه</day>
							<day type="thu">پنجشنبه</day>
							<day type="fri">جمعه</day>
							<day type="sat">شنبه</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>غ.م.</am>
				<pm>غ.و.</pm>
				<eras>
					<eraAbbr>
						<era type="0">ق.م.</era>
						<era type="1">م.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE د yyyy د MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>د yyyy د MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/M/d</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss (v)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss (z)</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="Md">M/d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">د yyyy د MMMM</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">وری</month>
							<month type="2">غویی</month>
							<month type="3">غبرګولی</month>
							<month type="4">چنګاښ</month>
							<month type="5">زمری</month>
							<month type="6">وږی</month>
							<month type="7">تله</month>
							<month type="8">لړم</month>
							<month type="9">لیندۍ</month>
							<month type="10">مرغومی</month>
							<month type="11">سلواغه</month>
							<month type="12">کب</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">وری</month>
							<month type="2">غویی</month>
							<month type="3">غبرګولی</month>
							<month type="4">چنګاښ</month>
							<month type="5">زمری</month>
							<month type="6">وږی</month>
							<month type="7">تله</month>
							<month type="8">لړم</month>
							<month type="9">لیندۍ</month>
							<month type="10">مرغومی</month>
							<month type="11">سلواغه</month>
							<month type="12">کب</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>د {0} په وخت</regionFormat>
			<zone type="Asia/Kabul">
				<exemplarCity>کابل</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>٫</decimal>
			<group>٬</group>
			<percentSign>٪</percentSign>
			<nativeZeroDigit>۰</nativeZeroDigit>
			<minusSign>−</minusSign>
			<exponential>×۱۰^</exponential>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AFN">
				<displayName>افغانۍ</displayName>
				<symbol>؋</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[F���$$Locale/Data/haw_US.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.35 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="haw"/>
		<territory type="US"/>
	</identity>
</ldml>
PKpG[���{##Locale/Data/sl_SI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sl"/>
		<territory type="SI"/>
	</identity>
</ldml>
PKpG[0h}���Locale/Data/pt.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.105 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="pt"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abkhazian</language>
			<language type="ace">achinese</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avéstico</language>
			<language type="af">africâner</language>
			<language type="afa">Idioma afro-asiático</language>
			<language type="afh">Afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">Akan</language>
			<language type="akk">acadiano</language>
			<language type="ale">aleúte</language>
			<language type="alg">idiomas algonquianos</language>
			<language type="alt">altai do sul</language>
			<language type="am">amárico</language>
			<language type="an">aragonês</language>
			<language type="ang">inglês arcaico</language>
			<language type="anp">angika</language>
			<language type="apa">idiomas apache</language>
			<language type="ar">árabe</language>
			<language type="arc">aramaico</language>
			<language type="arn">araucano</language>
			<language type="arp">arapaho</language>
			<language type="art">Idioma artificial</language>
			<language type="arw">arauaqui</language>
			<language type="as">assamês</language>
			<language type="ast">asturiano</language>
			<language type="ath">idiomas atabascanos</language>
			<language type="aus">idiomas australianos</language>
			<language type="av">avaric</language>
			<language type="awa">awadhi</language>
			<language type="ay">aimara</language>
			<language type="az">azerbaijano</language>
			<language type="ba">bashkir</language>
			<language type="bad">banda</language>
			<language type="bai">idiomas bamileke</language>
			<language type="bal">balúchi</language>
			<language type="ban">balinês</language>
			<language type="bas">basa</language>
			<language type="bat">Idioma báltico</language>
			<language type="be">bielo-russo</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">berbere</language>
			<language type="bg">búlgaro</language>
			<language type="bh">biari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislamá</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">banto</language>
			<language type="bo">tibetano</language>
			<language type="br">bretão</language>
			<language type="bra">braj</language>
			<language type="bs">bósnio</language>
			<language type="btk">bataque</language>
			<language type="bua">Buriat</language>
			<language type="bug">buguinês</language>
			<language type="byn">Blin</language>
			<language type="ca">catalão</language>
			<language type="cad">caddo</language>
			<language type="cai">Idioma indígena centro-americano</language>
			<language type="car">caribe</language>
			<language type="cau">Idioma caucásico</language>
			<language type="cch">atsam</language>
			<language type="ce">checheno</language>
			<language type="ceb">cebuano</language>
			<language type="cel">Idioma céltico</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatai</language>
			<language type="chk">chuukese</language>
			<language type="chm">mari</language>
			<language type="chn">chinook jargon</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cheroqui</language>
			<language type="chy">cheiene</language>
			<language type="cmc">Idioma chamic</language>
			<language type="co">córsico</language>
			<language type="cop">copta</language>
			<language type="cpe">crioulo ou pidgin baseado no inglês</language>
			<language type="cpf">crioulo ou pidgin baseado no francês</language>
			<language type="cpp">crioulo ou pidgin baseado no português</language>
			<language type="cr">cree</language>
			<language type="crh">turco da Criméia</language>
			<language type="crp">crioulo ou pidgin</language>
			<language type="cs">tcheco</language>
			<language type="csb">kashubian</language>
			<language type="cu">eslavo eclesiástico</language>
			<language type="cus">cuxitas (outros)</language>
			<language type="cv">chuvash</language>
			<language type="cy">galês</language>
			<language type="da">dinamarquês</language>
			<language type="dak">dacota</language>
			<language type="dar">dargwa</language>
			<language type="day">dayak</language>
			<language type="de">alemão</language>
			<language type="de_AT">alemão da Áustria</language>
			<language type="de_CH">alto alemão suíço</language>
			<language type="del">delaware</language>
			<language type="den">slave</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">Idioma dravítico</language>
			<language type="dsb">sérvio baixo</language>
			<language type="dua">duala</language>
			<language type="dum">holandês medieval</language>
			<language type="dv">divehi</language>
			<language type="dyu">diúla</language>
			<language type="dz">dzonga</language>
			<language type="ee">eve</language>
			<language type="efi">efique</language>
			<language type="egy">egípcio arcaico</language>
			<language type="eka">ekajuk</language>
			<language type="el">grego</language>
			<language type="elx">elamite</language>
			<language type="en">inglês</language>
			<language type="en_AU">inglês australiano</language>
			<language type="en_CA">inglês do Canadá</language>
			<language type="en_GB">inglês britânico</language>
			<language type="en_US">inglês americano</language>
			<language type="enm">inglês medieval</language>
			<language type="eo">esperanto</language>
			<language type="es">espanhol</language>
			<language type="es_419">espanhol (América Latina)</language>
			<language type="es_ES">espanhol ibérico</language>
			<language type="et">estoniano</language>
			<language type="eu">basco</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persa</language>
			<language type="fan">fangue</language>
			<language type="fat">fanti</language>
			<language type="ff">fula</language>
			<language type="fi">finlandês</language>
			<language type="fil">filipino</language>
			<language type="fiu">Idioma ugro-finês</language>
			<language type="fj">fijiano</language>
			<language type="fo">feroês</language>
			<language type="fon">fom</language>
			<language type="fr">francês</language>
			<language type="fr_CA">francês do Canadá</language>
			<language type="fr_CH">francês suíço</language>
			<language type="frm">francês medieval</language>
			<language type="fro">francês arcaico</language>
			<language type="frr">frisão do norte</language>
			<language type="frs">frisão oriental</language>
			<language type="fur">friulano</language>
			<language type="fy">frisão</language>
			<language type="ga">irlandês</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaia</language>
			<language type="gd">gaélico escocês</language>
			<language type="gem">Idioma germânico</language>
			<language type="gez">geez</language>
			<language type="gil">gilbertês</language>
			<language type="gl">galego</language>
			<language type="gmh">alemão medieval alto</language>
			<language type="gn">guarani</language>
			<language type="goh">alemão arcaico alto</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gótico</language>
			<language type="grb">Gerbo</language>
			<language type="grc">grego arcaico</language>
			<language type="gsw">alemão suíço</language>
			<language type="gu">guzerate</language>
			<language type="gv">manx</language>
			<language type="gwi">gwichʼin</language>
			<language type="ha">hauçá</language>
			<language type="hai">haida</language>
			<language type="haw">havaiano</language>
			<language type="he">hebraico</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hitita</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">croata</language>
			<language type="hsb">upper sorbian</language>
			<language type="ht">haitiano</language>
			<language type="hu">húngaro</language>
			<language type="hup">hupa</language>
			<language type="hy">armênio</language>
			<language type="hz">herero</language>
			<language type="ia">interlíngua</language>
			<language type="iba">ibã</language>
			<language type="id">indonésio</language>
			<language type="ie">interlingue</language>
			<language type="ig">ibo</language>
			<language type="ii">sichuan yi</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiaque</language>
			<language type="ilo">ilocano</language>
			<language type="inc">Idioma índico</language>
			<language type="ine">Idioma indo-europeu</language>
			<language type="inh">inguche</language>
			<language type="io">ido</language>
			<language type="ira">iraniano</language>
			<language type="iro">idiomas iroqueses</language>
			<language type="is">islandês</language>
			<language type="it">italiano</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japonês</language>
			<language type="jbo">lojban</language>
			<language type="jpr">judaico-persa</language>
			<language type="jrb">judaico-arábico</language>
			<language type="jv">javanês</language>
			<language type="ka">georgiano</language>
			<language type="kaa">kara-Kalpak</language>
			<language type="kab">kabyle</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardiano</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">congolês</language>
			<language type="kha">khasi</language>
			<language type="khi">khoisan (outros)</language>
			<language type="kho">khotanês</language>
			<language type="ki">quicuio</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">cazaque</language>
			<language type="kl">groenlandês</language>
			<language type="km">cmer</language>
			<language type="kmb">quimbundo</language>
			<language type="kn">canarês</language>
			<language type="ko">coreano</language>
			<language type="kok">concani</language>
			<language type="kos">kosraean</language>
			<language type="kpe">kpelle</language>
			<language type="kr">canúri</language>
			<language type="krc">karachay-Balkar</language>
			<language type="krl">careliano</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">kashmiri</language>
			<language type="ku">curdo</language>
			<language type="kum">kumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">córnico</language>
			<language type="ky">quirguiz</language>
			<language type="la">latim</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburguês</language>
			<language type="lez">lezghian</language>
			<language type="lg">luganda</language>
			<language type="li">limburgish</language>
			<language type="ln">lingala</language>
			<language type="lo">laosiano</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">lituano</language>
			<language type="lu">luba-catanga</language>
			<language type="lua">luba-Lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">letão</language>
			<language type="mad">madurês</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makasar</language>
			<language type="man">mandinga</language>
			<language type="map">austronésio</language>
			<language type="mas">massai</language>
			<language type="mdf">mocsa</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malgaxe</language>
			<language type="mga">irlandês medieval</language>
			<language type="mh">marshalês</language>
			<language type="mi">maori</language>
			<language type="mic">miquemaque</language>
			<language type="min">minangkabau</language>
			<language type="mis">idiomas diversos</language>
			<language type="mk">macedônio</language>
			<language type="mkh">mon-khmer (outros)</language>
			<language type="ml">malaiala</language>
			<language type="mn">mongol</language>
			<language type="mnc">manchu</language>
			<language type="mni">manipuri</language>
			<language type="mno">Idioma manobo</language>
			<language type="mo">moldávio</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marata</language>
			<language type="ms">malaio</language>
			<language type="mt">maltês</language>
			<language type="mul">idiomas múltiplos</language>
			<language type="mun">idiomas munda</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandês</language>
			<language type="mwr">marwari</language>
			<language type="my">birmanês</language>
			<language type="myn">maia</language>
			<language type="myv">erzya</language>
			<language type="na">nauruano</language>
			<language type="nah">náuatle</language>
			<language type="nai">Idioma indígena norte-americano</language>
			<language type="nap">napolitano</language>
			<language type="nb">bokmål norueguês</language>
			<language type="nd">ndebele do norte</language>
			<language type="nds">alto alemão; baixo saxão</language>
			<language type="ne">nepali</language>
			<language type="new">newari</language>
			<language type="ng">dongo</language>
			<language type="nia">nias</language>
			<language type="nic">Idioma cordofano-nigeriano</language>
			<language type="niu">niueano</language>
			<language type="nl">holandês</language>
			<language type="nl_BE">neerlandês</language>
			<language type="nn">nynorsk norueguês</language>
			<language type="no">norueguês</language>
			<language type="nog">nogai</language>
			<language type="non">nórdico arcaico</language>
			<language type="nqo">n'ko</language>
			<language type="nr">ndebele do sul</language>
			<language type="nso">soto setentrional</language>
			<language type="nub">idiomas núbios</language>
			<language type="nv">navajo</language>
			<language type="nwc">newari clássico</language>
			<language type="ny">nianja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">occitânico</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">ossetic</language>
			<language type="osa">osage</language>
			<language type="ota">turco otomano</language>
			<language type="oto">idiomas otomanos</language>
			<language type="pa">panjabi</language>
			<language type="paa">Idioma papuano</language>
			<language type="pag">pangasinã</language>
			<language type="pal">pálavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauano</language>
			<language type="peo">persa arcaico</language>
			<language type="phi">Idioma filipino</language>
			<language type="phn">fenício</language>
			<language type="pi">páli</language>
			<language type="pl">polonês</language>
			<language type="pon">pohnpeian</language>
			<language type="pra">idiomas prácrito</language>
			<language type="pro">provençal arcaico</language>
			<language type="ps">pashto</language>
			<language type="pt">português</language>
			<language type="pt_BR">português do Brasil</language>
			<language type="pt_PT">português ibérico</language>
			<language type="qu">quíchua</language>
			<language type="raj">rajastani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongano</language>
			<language type="rm">reto-romano</language>
			<language type="rn">rundi</language>
			<language type="ro">romeno</language>
			<language type="roa">Idioma romântico</language>
			<language type="rom">romani</language>
			<language type="root">root</language>
			<language type="ru">russo</language>
			<language type="rup">aromeno</language>
			<language type="rw">kinyarwanda</language>
			<language type="sa">sânscrito</language>
			<language type="sad">sandawe</language>
			<language type="sah">iacuto</language>
			<language type="sai">Idioma indígeno sul-americano</language>
			<language type="sal">idiomas salisanos</language>
			<language type="sam">aramaico samaritano</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardo</language>
			<language type="scn">siciliano</language>
			<language type="sco">escocês</language>
			<language type="sd">sindi</language>
			<language type="se">sami do norte</language>
			<language type="sel">selkup</language>
			<language type="sem">Idioma semítico</language>
			<language type="sg">sango</language>
			<language type="sga">irlandês arcaico</language>
			<language type="sgn">linguagem de sinais</language>
			<language type="sh">servo-croata</language>
			<language type="shn">shan</language>
			<language type="si">cingalês</language>
			<language type="sid">sidamo</language>
			<language type="sio">idiomas sioux</language>
			<language type="sit">Idioma sino-tibetano</language>
			<language type="sk">eslovaco</language>
			<language type="sl">esloveno</language>
			<language type="sla">idiomas eslavos</language>
			<language type="sm">samoano</language>
			<language type="sma">sami do sul</language>
			<language type="smi">Idioma sami</language>
			<language type="smj">lule sami</language>
			<language type="smn">inari sami</language>
			<language type="sms">skolt sami</language>
			<language type="sn">shona</language>
			<language type="snk">soninke</language>
			<language type="so">somali</language>
			<language type="sog">sogdien</language>
			<language type="son">songai</language>
			<language type="sq">albanês</language>
			<language type="sr">sérvio</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serere</language>
			<language type="ss">swati</language>
			<language type="ssa">Idioma nilo-saariano</language>
			<language type="st">soto do sul</language>
			<language type="su">sundanês</language>
			<language type="suk">sukuma</language>
			<language type="sus">sosso</language>
			<language type="sux">sumério</language>
			<language type="sv">sueco</language>
			<language type="sw">suaíli</language>
			<language type="syc">siríaco clássico</language>
			<language type="syr">siríaco</language>
			<language type="ta">tâmil</language>
			<language type="tai">Idioma tailandês</language>
			<language type="te">telugu</language>
			<language type="tem">timne</language>
			<language type="ter">tereno</language>
			<language type="tet">tétum</language>
			<language type="tg">tadjique</language>
			<language type="th">tailandês</language>
			<language type="ti">tigrínia</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">turcomano</language>
			<language type="tkl">toquelauano</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlinguite</language>
			<language type="tmh">tamaxeque</language>
			<language type="tn">tswana</language>
			<language type="to">tonganês</language>
			<language type="tog">tonganês de Nyasa</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turco</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshian</language>
			<language type="tt">tatar</language>
			<language type="tum">tumbuka</language>
			<language type="tup">idiomas tupi</language>
			<language type="tut">Idioma altaico</language>
			<language type="tvl">tuvaluano</language>
			<language type="tw">twi</language>
			<language type="ty">taitiano</language>
			<language type="tyv">tuvinian</language>
			<language type="udm">udmurt</language>
			<language type="ug">uighur</language>
			<language type="uga">ugarítico</language>
			<language type="uk">ucraniano</language>
			<language type="umb">umbundu</language>
			<language type="und">indeterminado</language>
			<language type="ur">urdu</language>
			<language type="uz">usbeque</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamita</language>
			<language type="vo">volapuque</language>
			<language type="vot">votic</language>
			<language type="wa">valão</language>
			<language type="wak">idiomas wakashan</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">idiomas sórbios</language>
			<language type="wo">uolofe</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xosa</language>
			<language type="yao">iao</language>
			<language type="yap">yapese</language>
			<language type="yi">iídiche</language>
			<language type="yo">ioruba</language>
			<language type="ypk">idiomas iúpique</language>
			<language type="za">zhuang</language>
			<language type="zap">zapoteca</language>
			<language type="zbl">símbolos blis</language>
			<language type="zen">zenaga</language>
			<language type="zh">chinês</language>
			<language type="zh_Hans">chinês (simplificado)</language>
			<language type="zh_Hant">chinês (tradicional)</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zunhi</language>
			<language type="zxx">sem conteúdo lingüístico</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">árabe</script>
			<script type="Armi">armi</script>
			<script type="Armn">armênio</script>
			<script type="Avst">avesta</script>
			<script type="Bali">balinês</script>
			<script type="Batk">bataque</script>
			<script type="Beng">bengali</script>
			<script type="Blis">símbolos bliss</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braile</script>
			<script type="Bugi">buginês</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">cakm</script>
			<script type="Cans">símbolos aborígenes do Canadá Unificado</script>
			<script type="Cari">cariano</script>
			<script type="Cham">cham</script>
			<script type="Cher">cheroqui</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">cóptico</script>
			<script type="Cprt">cipriota</script>
			<script type="Cyrl">cirílico</script>
			<script type="Cyrs">cirílico eslavo eclesiástico</script>
			<script type="Deva">devanágari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">demótico egípcio</script>
			<script type="Egyh">hierático egípcio</script>
			<script type="Egyp">hieróglifos egípcios</script>
			<script type="Ethi">etiópico</script>
			<script type="Geok">khutsuri georgiano</script>
			<script type="Geor">georgiano</script>
			<script type="Glag">glagolítico</script>
			<script type="Goth">gótico</script>
			<script type="Grek">grego</script>
			<script type="Gujr">gujerati</script>
			<script type="Guru">gurmuqui</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">han simplificado</script>
			<script type="Hant">han tradicional</script>
			<script type="Hebr">hebraico</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana ou hiragana</script>
			<script type="Hung">húngaro antigo</script>
			<script type="Inds">indo</script>
			<script type="Ital">itálico antigo</script>
			<script type="Java">javanês</script>
			<script type="Jpan">japonês</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshthi</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannada</script>
			<script type="Kore">coreano</script>
			<script type="Kthi">kthi</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">lao</script>
			<script type="Latf">latim fraktur</script>
			<script type="Latg">latim gaélico</script>
			<script type="Latn">latim</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">A linear</script>
			<script type="Linb">b linear</script>
			<script type="Lyci">lício</script>
			<script type="Lydi">lídio</script>
			<script type="Mand">mandaico</script>
			<script type="Mani">maniqueano</script>
			<script type="Maya">hieróglifos maias</script>
			<script type="Mero">meroítico</script>
			<script type="Mlym">malaiala</script>
			<script type="Mong">mongol</script>
			<script type="Moon">moon</script>
			<script type="Mtei">meitei mayek</script>
			<script type="Mymr">myanmar</script>
			<script type="Nkoo">n'ko</script>
			<script type="Ogam">ogâmico</script>
			<script type="Olck">ol chiki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmania</script>
			<script type="Perm">pérmico antigo</script>
			<script type="Phag">phags-pa</script>
			<script type="Phli">phli</script>
			<script type="Phlp">phlp</script>
			<script type="Phlv">pahlavi antigo</script>
			<script type="Phnx">fenício</script>
			<script type="Plrd">fonético pollard</script>
			<script type="Prti">prti</script>
			<script type="Qaai">herdado</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">rúnico</script>
			<script type="Samr">samaritano</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">signwriting</script>
			<script type="Shaw">shaviano</script>
			<script type="Sinh">cingalês</script>
			<script type="Sund">sundanês</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">siríaco</script>
			<script type="Syre">siríaco estrangelo</script>
			<script type="Syrj">siríaco ocidental</script>
			<script type="Syrn">siríaco oriental</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai Le</script>
			<script type="Talu">novo tai lue</script>
			<script type="Taml">tâmil</script>
			<script type="Tavt">tavt</script>
			<script type="Telu">télugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalo</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">tailandês</script>
			<script type="Tibt">tibetano</script>
			<script type="Ugar">ugarítico</script>
			<script type="Vaii">vai</script>
			<script type="Visp">fala visível</script>
			<script type="Xpeo">persa antigo</script>
			<script type="Xsux">sumero-acadiano cuneiforme</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">zmth</script>
			<script type="Zsym">zsym</script>
			<script type="Zxxx">roteiro em branco</script>
			<script type="Zyyy">comum</script>
			<script type="Zzzz">roteiro desconhecido ou inválido</script>
		</scripts>
		<territories>
			<territory type="001">Mundo</territory>
			<territory type="002">África</territory>
			<territory type="003">América do Norte</territory>
			<territory type="005">América do Sul</territory>
			<territory type="009">Oceania</territory>
			<territory type="011">África Ocidental</territory>
			<territory type="013">América Central</territory>
			<territory type="014">África Oriental</territory>
			<territory type="015">África do Norte</territory>
			<territory type="017">África Central</territory>
			<territory type="018">África Austral</territory>
			<territory type="019">Américas</territory>
			<territory type="021">América Setentrional</territory>
			<territory type="029">Caribe</territory>
			<territory type="030">Ásia Oriental</territory>
			<territory type="034">Ásia do Sul</territory>
			<territory type="035">Ásia Oriental e do Sul</territory>
			<territory type="039">Europa do Sul</territory>
			<territory type="053">Austrália e Nova Zelândia</territory>
			<territory type="054">Melanésia</territory>
			<territory type="057">Região da Micronésia</territory>
			<territory type="061">Polinésia</territory>
			<territory type="062">Ásia Central e do Sul</territory>
			<territory type="142">Ásia</territory>
			<territory type="143">Ásia Central</territory>
			<territory type="145">Ásia Ocidental</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa Oriental</territory>
			<territory type="154">Europa Setentrional</territory>
			<territory type="155">Europa Ocidental</territory>
			<territory type="172">Comunidade dos Estados Independentes</territory>
			<territory type="419">América Latina e Caribe</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emirados Árabes Unidos</territory>
			<territory type="AF">Afeganistão</territory>
			<territory type="AG">Antígua e Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albânia</territory>
			<territory type="AM">Armênia</territory>
			<territory type="AN">Antilhas Holandesas</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antártida</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Americana</territory>
			<territory type="AT">Áustria</territory>
			<territory type="AU">Austrália</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Ilhas Aland</territory>
			<territory type="AZ">Azerbaijão</territory>
			<territory type="BA">Bósnia-Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Bélgica</territory>
			<territory type="BF">Burquina Faso</territory>
			<territory type="BG">Bulgária</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">San Bartolomeu</territory>
			<territory type="BM">Bermudas</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolívia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Butão</territory>
			<territory type="BV">Ilha Bouvet</territory>
			<territory type="BW">Botsuana</territory>
			<territory type="BY">Belarus</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canadá</territory>
			<territory type="CC">Ilhas Cocos (Keeling)</territory>
			<territory type="CD">Congo-Kinshasa</territory>
			<territory type="CF">República Centro-Africana</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Suíça</territory>
			<territory type="CI">Costa do Marfim</territory>
			<territory type="CK">Ilhas Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">República dos Camarões</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colômbia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Sérvia e Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cabo Verde</territory>
			<territory type="CX">Ilhas Natal</territory>
			<territory type="CY">Chipre</territory>
			<territory type="CZ">República Tcheca</territory>
			<territory type="DE">Alemanha</territory>
			<territory type="DJ">Djibuti</territory>
			<territory type="DK">Dinamarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">República Dominicana</territory>
			<territory type="DZ">Argélia</territory>
			<territory type="EC">Equador</territory>
			<territory type="EE">Estônia</territory>
			<territory type="EG">Egito</territory>
			<territory type="EH">Saara Ocidental</territory>
			<territory type="ER">Eritréia</territory>
			<territory type="ES">Espanha</territory>
			<territory type="ET">Etiópia</territory>
			<territory type="FI">Finlândia</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Ilhas Malvinas</territory>
			<territory type="FM">Micronésia</territory>
			<territory type="FO">Ilhas Faroe</territory>
			<territory type="FR">França</territory>
			<territory type="GA">Gabão</territory>
			<territory type="GB">Reino Unido</territory>
			<territory type="GD">Granada</territory>
			<territory type="GE">Geórgia</territory>
			<territory type="GF">Guiana Francesa</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groênlandia</territory>
			<territory type="GM">Gâmbia</territory>
			<territory type="GN">Guiné</territory>
			<territory type="GP">Guadalupe</territory>
			<territory type="GQ">Guiné Equatorial</territory>
			<territory type="GR">Grécia</territory>
			<territory type="GS">Geórgia do Sul e Ilhas Sandwich do Sul</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guiné Bissau</territory>
			<territory type="GY">Guiana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Ilha Heard e Ilhas McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croácia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungria</territory>
			<territory type="ID">Indonésia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Ilha de Man</territory>
			<territory type="IN">Índia</territory>
			<territory type="IO">Território Britânico do Oceano Índico</territory>
			<territory type="IQ">Iraque</territory>
			<territory type="IR">Irã</territory>
			<territory type="IS">Islândia</territory>
			<territory type="IT">Itália</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordânia</territory>
			<territory type="JP">Japão</territory>
			<territory type="KE">Quênia</territory>
			<territory type="KG">Quirguistão</territory>
			<territory type="KH">Camboja</territory>
			<territory type="KI">Quiribati</territory>
			<territory type="KM">Comores</territory>
			<territory type="KN">São Cristovão e Nevis</territory>
			<territory type="KP">Coréia do Norte</territory>
			<territory type="KR">Coréia do Sul</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Ilhas Caiman</territory>
			<territory type="KZ">Casaquistão</territory>
			<territory type="LA">República Democrática Popular de Lao</territory>
			<territory type="LB">Líbano</territory>
			<territory type="LC">Santa Lúcia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Libéria</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Lituânia</territory>
			<territory type="LU">Luxemburgo</territory>
			<territory type="LV">Letônia</territory>
			<territory type="LY">Líbia</territory>
			<territory type="MA">Marrocos</territory>
			<territory type="MC">Mônaco</territory>
			<territory type="MD">Moldávia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">San Martin</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Ilhas Marshall</territory>
			<territory type="MK">Macedônia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mianmar</territory>
			<territory type="MN">Mongólia</territory>
			<territory type="MO">Macau</territory>
			<territory type="MP">Ilhas Marianas do Norte</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritânia</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Maurício</territory>
			<territory type="MV">Maldivas</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">México</territory>
			<territory type="MY">Malásia</territory>
			<territory type="MZ">Moçambique</territory>
			<territory type="NA">Namíbia</territory>
			<territory type="NC">Nova Caledônia</territory>
			<territory type="NE">Níger</territory>
			<territory type="NF">Ilha Norfolk</territory>
			<territory type="NG">Nigéria</territory>
			<territory type="NI">Nicarágua</territory>
			<territory type="NL">Holanda</territory>
			<territory type="NO">Noruega</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Nova Zelândia</territory>
			<territory type="OM">Omã</territory>
			<territory type="PA">Panamá</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polinésia Francesa</territory>
			<territory type="PG">Papua-Nova Guiné</territory>
			<territory type="PH">Filipinas</territory>
			<territory type="PK">Paquistão</territory>
			<territory type="PL">Polônia</territory>
			<territory type="PM">Saint Pierre e Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Rico</territory>
			<territory type="PS">Território da Palestina</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguai</territory>
			<territory type="QA">Catar</territory>
			<territory type="QO">Oceania Exterior</territory>
			<territory type="QU">União Européia</territory>
			<territory type="RE">Reunião</territory>
			<territory type="RO">Romênia</territory>
			<territory type="RS">Sérvia</territory>
			<territory type="RU">Rússia</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arábia Saudita</territory>
			<territory type="SB">Ilhas Salomão</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudão</territory>
			<territory type="SE">Suécia</territory>
			<territory type="SG">Cingapura</territory>
			<territory type="SH">Santa Helena</territory>
			<territory type="SI">Eslovênia</territory>
			<territory type="SJ">Svalbard e Jan Mayen</territory>
			<territory type="SK">Eslováquia</territory>
			<territory type="SL">Serra Leoa</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somália</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">São Tomé e Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Síria</territory>
			<territory type="SZ">Suazilândia</territory>
			<territory type="TC">Ilhas Turks e Caicos</territory>
			<territory type="TD">Chade</territory>
			<territory type="TF">Territórios Franceses do Sul</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailândia</territory>
			<territory type="TJ">Tadjiquistão</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Leste</territory>
			<territory type="TM">Turcomenistão</territory>
			<territory type="TN">Tunísia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turquia</territory>
			<territory type="TT">Trinidad e Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzânia</territory>
			<territory type="UA">Ucrânia</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Ilhas Menores Distantes dos Estados Unidos</territory>
			<territory type="US">Estados Unidos</territory>
			<territory type="UY">Uruguai</territory>
			<territory type="UZ">Uzbequistão</territory>
			<territory type="VA">Vaticano</territory>
			<territory type="VC">São Vicente e Granadinas</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Ilhas Virgens Britânicas</territory>
			<territory type="VI">Ilhas Virgens dos EUA</territory>
			<territory type="VN">Vietnã</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis e Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Iêmen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">África do Sul</territory>
			<territory type="ZM">Zâmbia</territory>
			<territory type="ZW">Zimbábue</territory>
			<territory type="ZZ">Região desconhecida ou inválida</territory>
		</territories>
		<variants>
			<variant type="1901">ortografia alemã tradicional</variant>
			<variant type="1994">ortografia resiana padronizada</variant>
			<variant type="1996">ortografia alemã de 1996</variant>
			<variant type="1606NICT">francês antigo de 1606</variant>
			<variant type="AREVELA">armênio oriental</variant>
			<variant type="AREVMDA">armênio ocidental</variant>
			<variant type="BAKU1926">alfabeto latino turco unificado</variant>
			<variant type="BISKE">dialeto san giorgio/bila</variant>
			<variant type="BOONT">boontling</variant>
			<variant type="FONIPA">fonética do Alfabeto Fonético Internacional</variant>
			<variant type="FONUPA">fonética do Alfabeto Fonético Urálico</variant>
			<variant type="LIPAW">dialeto lipovaz de Resian</variant>
			<variant type="MONOTON">monotônico</variant>
			<variant type="NEDIS">dialeto natisone</variant>
			<variant type="NJIVA">dialeto gniva/njiva</variant>
			<variant type="OSOJS">dialeto oseacco/osojane</variant>
			<variant type="POLYTON">politônico</variant>
			<variant type="POSIX">computador</variant>
			<variant type="REVISED">Ortografia Revisada</variant>
			<variant type="ROZAJ">resiano</variant>
			<variant type="SAAHO">saho</variant>
			<variant type="SCOTLAND">inglês padrão escocês</variant>
			<variant type="SCOUSE">scouse</variant>
			<variant type="SOLBA">dialeto stolvizza/solbica</variant>
			<variant type="TARASK">ortografia taraskievica</variant>
		</variants>
		<keys>
			<key type="calendar">Calendário</key>
			<key type="collation">Intercalação</key>
			<key type="currency">Moeda</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Ordem do Chinês Tradicional - Big5</type>
			<type type="buddhist" key="calendar">Calendário Budista</type>
			<type type="chinese" key="calendar">Calendário Chinês</type>
			<type type="direct" key="collation">Ordem Direta</type>
			<type type="gb2312han" key="collation">Ordem do Chinês Simplificado - GB2312</type>
			<type type="gregorian" key="calendar">Calendário Gregoriano</type>
			<type type="hebrew" key="calendar">Calendário Hebraico</type>
			<type type="indian" key="calendar">Calendário Nacional Indiano</type>
			<type type="islamic" key="calendar">Calendário Islâmico</type>
			<type type="islamic-civil" key="calendar">Calendário Civil Islâmico</type>
			<type type="japanese" key="calendar">Calendário Japonês</type>
			<type type="phonebook" key="collation">Ordem de Lista Telefônica</type>
			<type type="pinyin" key="collation">Ordem Pin-yin</type>
			<type type="roc" key="calendar">Calendário da República da China</type>
			<type type="stroke" key="collation">Ordem dos Traços</type>
			<type type="traditional" key="collation">Ordem Tradicional</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">americano</measurementSystemName>
			<measurementSystemName type="metric">métrico</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Idioma: {0}</codePattern>
			<codePattern type="script">Roteiro: {0}</codePattern>
			<codePattern type="territory">Região: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á à â ã b c ç d e é ê f-i í j-o ó ò ô õ p-u ú ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ă å ä ā æ è ĕ ë ē ì ĭ î ï ī k ñ º ŏ ö ø ō œ ß ù ŭ û ū w y ÿ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>”</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="buddhist">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d 'de' MMMM 'de' yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' yyyy G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH'h'mm'min'ss's'</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">fev</month>
							<month type="3">mar</month>
							<month type="4">abr</month>
							<month type="5">mai</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">ago</month>
							<month type="9">set</month>
							<month type="10">out</month>
							<month type="11">nov</month>
							<month type="12">dez</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">janeiro</month>
							<month type="2">fevereiro</month>
							<month type="3">março</month>
							<month type="4">abril</month>
							<month type="5">maio</month>
							<month type="6">junho</month>
							<month type="7">julho</month>
							<month type="8">agosto</month>
							<month type="9">setembro</month>
							<month type="10">outubro</month>
							<month type="11">novembro</month>
							<month type="12">dezembro</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dom</day>
							<day type="mon">seg</day>
							<day type="tue">ter</day>
							<day type="wed">qua</day>
							<day type="thu">qui</day>
							<day type="fri">sex</day>
							<day type="sat">sáb</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">domingo</day>
							<day type="mon">segunda-feira</day>
							<day type="tue">terça-feira</day>
							<day type="wed">quarta-feira</day>
							<day type="thu">quinta-feira</day>
							<day type="fri">sexta-feira</day>
							<day type="sat">sábado</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">S</day>
							<day type="tue">T</day>
							<day type="wed">Q</day>
							<day type="thu">Q</day>
							<day type="fri">S</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1º trimestre</quarter>
							<quarter type="2">2º trimestre</quarter>
							<quarter type="3">3º trimestre</quarter>
							<quarter type="4">4º trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Antes de Cristo</era>
						<era type="1">Ano do Senhor</era>
					</eraNames>
					<eraAbbr>
						<era type="0">a.C.</era>
						<era type="1">d.C.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH'h'mm'min'ss's' v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">EEE, dd/MM</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">EEE, d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">EEE, d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, dd/MM/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM 'de' yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d 'de' MMM 'de' yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM 'de' yyyy</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE, d 'de' MMM 'de' yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">d 'de' MMM 'de' yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMM">MMM 'de' yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d 'de' MMM - E, d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM - d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH-HH</greatestDifference>
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH-HH v</greatestDifference>
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yy - E, dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy - MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d 'de' MMM - E, d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E, d 'de' MMM 'de' yyyy - E, d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM – MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM – yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM - d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy - d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Ano</displayName>
					</field>
					<field type="month">
						<displayName>Mês</displayName>
					</field>
					<field type="week">
						<displayName>Semana</displayName>
					</field>
					<field type="day">
						<displayName>Dia</displayName>
						<relative type="0">Hoje</relative>
						<relative type="1">Amanhã</relative>
						<relative type="2">Depois de amanhã</relative>
						<relative type="3">Três dias a partir de hoje</relative>
						<relative type="-1">Ontem</relative>
						<relative type="-2">Antes de ontem</relative>
						<relative type="-3">Três dias atrás</relative>
					</field>
					<field type="weekday">
						<displayName>Dia da semana</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Período do dia</displayName>
					</field>
					<field type="hour">
						<displayName>Hora</displayName>
					</field>
					<field type="minute">
						<displayName>Minuto</displayName>
					</field>
					<field type="second">
						<displayName>Segundo</displayName>
					</field>
					<field type="zone">
						<displayName>Fuso</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="japanese">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM y G</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
			</calendar>
			<calendar type="roc">
				<eras>
					<eraNames>
						<era type="0">Antes de R.O.C.</era>
					</eraNames>
					<eraNarrow>
						<era type="0">Antes de R.O.C.</era>
					</eraNarrow>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Horário {0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Desconhecido</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>Cabul</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>Antígua</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Anguila</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Ierevan</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>Curaçao</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Pólo Sul</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumã</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viena</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>Dacca</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruxelas</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sófia</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Barein</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Porto Novo</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudas</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirunepé</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaína</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>Fernando de Noronha</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. Johns</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zurique</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>Abidjã</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Ilha de Páscoa</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Xangai</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotá</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cabo Verde</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nicósia</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlim</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Djibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenhague</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Argel</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>Guaiaquil</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Canárias</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madri</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Helsinque</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Ilhas Faroe</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londres</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Granada</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Caiena</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atenas</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Geórgia do Sul</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Guiana</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Porto Príncipe</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budapeste</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Jacarta</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jerusalém</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdá</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teerã</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>Amã</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tóquio</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>Nairóbi</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>São Cristóvão</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seul</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Caimã</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Vienciana</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Beirute</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Santa Lúcia</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>Monróvia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburgo</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Trípoli</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Mônaco</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Ilhas Maurício</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivas</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Cidade do México</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>Manágua</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>Amsterdã</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Catmandu</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panamá</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Taiti</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsóvia</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Rico</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Açores</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisboa</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Catar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Ilha Reunião</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucareste</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscou</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riad</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Estocolmo</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Cingapura</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Santa Helena</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>Dacar</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>São Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damasco</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>Lomé</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunísia</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Istambul</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Porto Espanha</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>New Salen, Dakota do Norte</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Central</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Indianápolis</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Nova Iorque</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>Montevidéu</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>São Vicente</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Ilha Mayotte</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Johannesburgo</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Horário do Acre</standard>
					<daylight>Horário de Verão do Acre</daylight>
				</long>
				<short>
					<standard>ACT</standard>
					<daylight>ACST</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Horário do Afeganistão</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Horário da África Central</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Horário da África Oriental</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Horário da África do Sul</generic>
					<standard>Horário Padrão da África do Sul</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Horário da África Ocidental</standard>
					<daylight>Horário de Verão da África Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Horário do Aktyubinsk</standard>
					<daylight>Horário de Verão do Aktyubinsk</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Horário do Alaska</generic>
					<standard>Horário Padrão do Alasca</standard>
					<daylight>Horário de Verão do Alasca</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Horário do Alasca-Havaí</generic>
					<standard>Horário Padrão do Alaska-Havaí</standard>
					<daylight>Horário de Verão do Alaska-Havaí</daylight>
				</long>
			</metazone>
			<metazone type="Almaty">
				<long>
					<standard>Horário do Almaty</standard>
					<daylight>Horário de Verão do Almaty</daylight>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Horário do Amazonas</standard>
					<daylight>Horário de Verão do Amazonas</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Horário Central</generic>
					<standard>Horário Padrão Central</standard>
					<daylight>Horário de Verão Central</daylight>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Horário Oriental</generic>
					<standard>Horário Padrão Oriental</standard>
					<daylight>Horário de Verão Oriental</daylight>
				</long>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Horário da Montanha</generic>
					<standard>Horário Padrão da Montanha</standard>
					<daylight>Horário de Verão da Montanha</daylight>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Horário do Pacífico</generic>
					<standard>Horário Padrão do Pacífico</standard>
					<daylight>Horário de Verão do Pacífico</daylight>
				</long>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Horário do Anadyr</standard>
					<daylight>Horário de Verão do Anadyr</daylight>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Horário do Aqtau</standard>
					<daylight>Horário de Verão do Aqtau</daylight>
				</long>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Horário do Aqtobe</standard>
					<daylight>Horário de Verão do Aqtobe</daylight>
				</long>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Horário da Arábia</generic>
					<standard>Horário Padrão da Arábia</standard>
					<daylight>Horário de Verão Árabe</daylight>
				</long>
				<short>
					<generic>AT (Arábia)</generic>
					<standard>AST (Arábia)</standard>
					<daylight>ADT (Arábia)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Horário da Argentina</standard>
					<daylight>Horário de Verão da Argentina</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Horário da Argentina Ocidental</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Horário da Armênia</standard>
					<daylight>Horário de Verão da Armênia</daylight>
				</long>
				<short>
					<standard>AMT (Armênia)</standard>
					<daylight>AMST (Armênia)</daylight>
				</short>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Horário de Ashkhabad</standard>
					<daylight>Horário de Verão de Ashkhabad</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Horário do Atlântico</generic>
					<standard>Horário Padrão do Atlântico</standard>
					<daylight>Horário de Verão do Atlântico</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Horário da Austrália Central</generic>
					<standard>Horário Padrão da Austrália Central</standard>
					<daylight>Horário de Verão da Austrália Central</daylight>
				</long>
				<short>
					<generic>ACT (Austrália)</generic>
					<standard>ACST (Austrália)</standard>
					<daylight>ACDT (Austrália)</daylight>
				</short>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Horário da Austrália Centro Ocidental</generic>
					<standard>Horário Padrão da Austrália Centro Ocidental</standard>
					<daylight>Horário de Verão da Austrália Centro Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Horário da Austrália Oriental</generic>
					<standard>Horário Padrão da Austrália Oriental</standard>
					<daylight>Horário de Verão da Austrália Oriental</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Horário da Austrália Ocidental</generic>
					<standard>Horário Padrão da Austrália Ocidental</standard>
					<daylight>Horário de Verão da Austrália Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>Horário do Arzeibaijão</standard>
					<daylight>Horário de Verão do Arzeibaijão</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Horário de Açores</standard>
					<daylight>Horário de Verão de Açores</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Horário de Baku</standard>
					<daylight>Horário de Verão de Baku</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Horário de Bangladesh</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Horário de Bering</generic>
					<standard>Horário Padrão de Bering</standard>
					<daylight>Horário de Verão de Bering</daylight>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Horário do Butão</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Horário da Bolívia</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Horário de Bornéo</standard>
					<daylight>Horário de Verão de Bornéo</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Horário de Brasília</standard>
					<daylight>Horário de Verão de Brasília</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>Horário de Brunei Darussalam</standard>
				</long>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Horário de Cabo Verde</standard>
					<daylight>Horário de Verão de Cabo Verde</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<generic>Horário de Chamorro</generic>
					<standard>Horário Padrão de Chamorro</standard>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Horário de Changbai</standard>
				</long>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Horário de Padrão de Chatham</standard>
					<daylight>Horário de Verão de Chatham</daylight>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Horário do Chile</standard>
					<daylight>Horário de Verão do Chile</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>Horário da China</generic>
					<standard>Horário Padrão da China</standard>
					<daylight>Horário de Verão da China</daylight>
				</long>
				<short>
					<generic>CT (China)</generic>
					<standard>CST (China)</standard>
					<daylight>CDT (China)</daylight>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Horário de Choibalsan</standard>
					<daylight>Horário de Verão de Choibalsan</daylight>
				</long>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Horário das Ilhas Christmas</standard>
				</long>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Horário das Ilhas Coco</standard>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Horário da Colômbia</standard>
					<daylight>Horário de Verão da Colômbia</daylight>
				</long>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>Horário das Ilhas Cook</standard>
					<daylight>Meio Horário de Verão das Ilhas Cook</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Horário de Cuba</generic>
					<standard>Horário Padrão de Cuba</standard>
					<daylight>Horário de Verão de Cuba</daylight>
				</long>
				<short>
					<standard>CST (Cuba)</standard>
					<daylight>CDT (Cuba)</daylight>
				</short>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Horário de Dacca</standard>
				</long>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Horário de Davis</standard>
				</long>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Horário de Dumont-d'Urville</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Horário de Dushanbe</standard>
					<daylight>Horário de Verão de Dushanbe</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Horário da Guiana Holandesa</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>Horário do Timor do Leste</standard>
				</long>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Horário da Ilha de Páscoa</standard>
					<daylight>Horário de Verão da Ilha de Páscoa</daylight>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Horário do Equador</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Horário da Europa Central</standard>
					<daylight>Horário de Verão da Europa Central</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Horário Padrão da Europa Oriental</standard>
					<daylight>Horário de Verão da Europa Oriental</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Horário da Europa Ocidental</standard>
					<daylight>Horário de Verão da Europa Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Horário das Ilhas Malvinas</standard>
					<daylight>Horário de Verão das Ilhas Malvinas</daylight>
				</long>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>Horário de Fiji</standard>
					<daylight>Horário de Verão de Fiji</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Horário da Guiana Francesa</standard>
				</long>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>Horário da Antártida e do Sul da França</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Horário de Frunze</standard>
					<daylight>Horário de Verão de Frunze</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Horário do Meridiano de Greenwich</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Horário de Galápagos</standard>
				</long>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Horário de Gambier</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Horário da Georgia</standard>
					<daylight>Horário de Verão da Georgia</daylight>
				</long>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Horário das Ilhas Gilberto</standard>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Horário da Groelândia Central</standard>
					<daylight>Horário de Verão da Groenlândia Central</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Horário da Groelândia Oriental</standard>
					<daylight>Horário de Verão da Groelândia Oriental</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Horário da Groenlândia Ocidental</standard>
					<daylight>Horário de Verão da Groenlândia Ocidental</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Horário Padrão de Guam</standard>
				</long>
				<short>
					<standard>GST (Guam)</standard>
				</short>
			</metazone>
			<metazone type="Gulf">
				<long>
					<generic>Horário do Golfo</generic>
					<standard>Horário Padrão do Golfo</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Horário da Guiana</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Horário Padrão do Havaí</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Horário de Hong Kong</standard>
					<daylight>Horário de Verão de Hong Kong</daylight>
				</long>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Horário de Hovd</standard>
					<daylight>Horário de Verão de Hovd</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Horário Padrão da Índia</standard>
				</long>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Horário do Oceano Índico</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Horário da Indochina</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Horário da Indonésia Central</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Horário da Indonésia Oriental</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Horário da Indonésia Ocidental</standard>
				</long>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>Horário Padrão do Irã</standard>
					<daylight>Horário de Verão do Irã</daylight>
				</long>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Horário de Irkutsk</standard>
					<daylight>Horário de Verão de Irkutsk</daylight>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>Horário de Israel</generic>
					<standard>Horário Padrão de Israel</standard>
					<daylight>Horário de Verão de Israel</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Horário do Japão</generic>
					<standard>Horário Padrão do Japão</standard>
					<daylight>Horário de Verão do Japão</daylight>
				</long>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Horário de Petropavlovsk-Kamchatski</standard>
					<daylight>Horário de Verão de Petropavlovsk-Kamchatski</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Horário de Karachi</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Horário de Kashgar</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<generic>Horário do Casaquistão do Leste</generic>
					<standard>Horário Padrão do Cazaquistão do Leste</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<generic>Horário do Casaquistão do Oeste</generic>
					<standard>Horário do Cazaquistão Ocidental</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Horário de Kizilorda</standard>
					<daylight>Horário de Verão de Kizilorda</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Horário da Coréia</generic>
					<standard>Horário Padrão da Coréia</standard>
					<daylight>Horário de Verão da Coréia</daylight>
				</long>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Horário da Coréia</standard>
				</long>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Horário de Krasnoyarsk</standard>
					<daylight>Horário de Verão de Krasnoyarsk</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Horário de Kuybyshev</standard>
					<daylight>Horário de Verão de Kuybyshev</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Horário de Kwajalein</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Horário do Quirguistão</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Horário de Lanka</standard>
				</long>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Horário das Ilhas Line</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Horário de Long-Shu</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Horário de Lord Howe</generic>
					<standard>Horário Padrão de Lord Howe</standard>
					<daylight>Horário de Verão de Lord Howe</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Horário de Macau</standard>
					<daylight>Horário de Verão de Macau</daylight>
				</long>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Horário de Magadan</standard>
					<daylight>Horário de Verão de Magadan</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Horário de Malaia</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Horário da Malásia</standard>
				</long>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Horário das Ilhas Maldivas</standard>
				</long>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Horário das Marquesas</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Horário das Ilhas Marshall</standard>
				</long>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Horário das Ilhas Maurício</standard>
				</long>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Horário de Mawson</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Horário de Ulan Bator</standard>
					<daylight>Horário de Verão de Ulan Bator</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Horário de Moscou</generic>
					<standard>Horário Padrão de Moscou</standard>
					<daylight>Horário de Verão de Moscou</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Horário de Mianmar</standard>
				</long>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Horário de Nauru</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Horário do Nepal</standard>
				</long>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>Horário da Nova Caledônia</standard>
					<daylight>Horário de Verão da Nova Caledônia</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Horário da Nova Zelândia</generic>
					<standard>Horário Padrão da Nova Zelândia</standard>
					<daylight>Horário de Verão da Nova Zelândia</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Horário de Newfoundland</generic>
					<standard>Horário Padrão de Terra Nova</standard>
					<daylight>Horário de Verão de Terra Nova</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>Horário de Niue</standard>
				</long>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>Horário das Ilhas Norfolk</standard>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Horário de Fernando de Noronha</standard>
					<daylight>Horário de Verão de Fernando de Noronha</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>Horário das Ilhas Mariana do Norte</standard>
				</long>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Horário de Novosibirsk</standard>
					<daylight>Horário de Verão de Novosibirsk</daylight>
				</long>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Horário de Omsk</standard>
					<daylight>Horário de Verão de Omsk</daylight>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Horário do Paquistão</standard>
					<daylight>Horário de Verão do Paquistão</daylight>
				</long>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>Horário de Palau</standard>
				</long>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>Horário de Papua Nova Guiné</standard>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Horário do Paraguai</standard>
					<daylight>Horário de Verão do Paraguai</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Horário do Peru</standard>
					<daylight>Horário de Verão do Peru</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Horário das Filipinas</standard>
					<daylight>Horário de Verão das Filipinas</daylight>
				</long>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Horário das Ilhas Fênix</standard>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Horário de Pierre e Miquelon</generic>
					<standard>Horário Padrão de Pierre e Miquelon</standard>
					<daylight>Horário de Verão de Pierre e Miquelon</daylight>
				</long>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>Horário de Pitcairn</standard>
				</long>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Horário de Ponape</standard>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Horário de Qyzylorda</standard>
					<daylight>Horário de Verão de Qyzylorda</daylight>
				</long>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Horário das Ilhas Reunião</standard>
				</long>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Horário de Rothera</standard>
				</long>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Horário de Sakhalin</standard>
					<daylight>Horário de Verão de Sakhalin</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Horário de Samara</standard>
					<daylight>Horário de Verão de Samara</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Horário de Samarkand</standard>
					<daylight>Horário de Verão de Samarkand</daylight>
				</long>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Horário Padrão de Samoa</standard>
				</long>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Horário das Ilhas Seychelles</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Horário de Shevchenko</standard>
					<daylight>Horário de Verão de Shevchenko</daylight>
				</long>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>Horário Padrão de Cingapura</standard>
				</long>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>Horário das Ilhas Salomão</standard>
				</long>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>Horário da Georgia do Sul</standard>
				</long>
				<short>
					<standard>GST (Georgia do Sul)</standard>
				</short>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Horário do Suriname</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Horário de Sverdlovsk</standard>
					<daylight>Horário de Verão de Sverdlovsk</daylight>
				</long>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Horário de Syowa</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>Horário do Haiti</standard>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Horário do Tajiquistão</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Horário de Tashkent</standard>
					<daylight>Horário de Verão de Tashkent</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Horário de Tbilisi</standard>
					<daylight>Horário de Verão de Tbilisi</daylight>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>Horário de Tokelau</standard>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>Horário de Tonga</standard>
					<daylight>Horário de Verão de Tonga</daylight>
				</long>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Horário de Truk</standard>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Horário da Turquia</standard>
					<daylight>Horário de Verão da Turquia</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Horário do Turcomenistão</standard>
					<daylight>Horário de Verão do Turcomenistão</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>Horário de Tuvalu</standard>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Horário de Ural'sk</standard>
					<daylight>Horário de Verão de Ural'sk</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Horário do Uruguai</standard>
					<daylight>Horário de Verão do Uruguai</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Horário de Urumqi</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Horário do Uzbequistão</standard>
					<daylight>Horário de Verão do Uzbequistão</daylight>
				</long>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>Horário de Vanuatu</standard>
					<daylight>Horário de Verão de Vanuatu</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Horário da Venezuela</standard>
				</long>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Horário de Vladivostok</standard>
					<daylight>Horário de Verão de Vladivostok</daylight>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Horário de Volgograd</standard>
					<daylight>Horário de Verão de Volgograd</daylight>
				</long>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Horário de Vostok</standard>
				</long>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Horário das Ilhas Wake</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>Horário de Wallis e Fortuna</standard>
				</long>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Horário de Yakutsk</standard>
					<daylight>Horário de Verão de Yakutsk</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Horário de Yekaterinburg</standard>
					<daylight>Horário de Verão de Yekaterinburg</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Horário de Yerevan</standard>
					<daylight>Horário de Verão de Yerevan</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Horário de Yukon</generic>
					<standard>Horário Padrão de Yukon</standard>
					<daylight>Horário de Verão de Yukon</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;(¤#,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Peseta de Andorra</displayName>
				<displayName count="one">Peseta de Andorra</displayName>
				<displayName count="other">Pesetas de Andorra</displayName>
			</currency>
			<currency type="AED">
				<displayName>Dirém dos Emirados Árabes Unidos</displayName>
				<displayName count="one">Dirham de UAE</displayName>
				<displayName count="other">Dirhans de UAE</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afegane (1927-2002)</displayName>
				<displayName count="one">Afghani (AFA)</displayName>
				<displayName count="other">Afghani (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afegane</displayName>
				<displayName count="one">Afghani</displayName>
				<displayName count="other">Afghanis</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Lek Albanês</displayName>
				<displayName count="one">Lek albanês</displayName>
				<displayName count="other">Leks albaneses</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dram Arménio</displayName>
				<displayName count="one">Dram armênio</displayName>
				<displayName count="other">Drams armênios</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Guilder das Antilhas Holandesas</displayName>
				<displayName count="one">Florim das Antilhas Holandesas</displayName>
				<displayName count="other">Florins das Antilhas Holandesas</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Cuanza angolano</displayName>
				<displayName count="one">Kwanza angolano</displayName>
				<displayName count="other">Kwanzas angolanos</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Cuanza angolano (1977-1990)</displayName>
				<displayName count="one">Kwanza angolano (AOK)</displayName>
				<displayName count="other">Kwanzas angolanos (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Novo cuanza angolano (1990-2000)</displayName>
				<displayName count="one">Novo kwanza angolano (AOK)</displayName>
				<displayName count="other">Novos kwanzas angolanos (AOK)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Cuanza angolano reajustado (1995-1999)</displayName>
				<displayName count="one">Kwanza angolano reajustado (AOR)</displayName>
				<displayName count="other">Kwanzas angolanos reajustados (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral argentino</displayName>
				<displayName count="one">Austral argentino</displayName>
				<displayName count="other">Austrais argentinos</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Peso argentino (1983-1985)</displayName>
				<displayName count="one">Peso argentino (ARP)</displayName>
				<displayName count="other">Pesos argentinos (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso argentino</displayName>
				<displayName count="one">Peso argentino</displayName>
				<displayName count="other">Pesos argentinos</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Xelim austríaco</displayName>
				<displayName count="one">Schilling australiano</displayName>
				<displayName count="other">Schillings australianos</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dólar australiano</displayName>
				<displayName count="one">Dólar australiano</displayName>
				<displayName count="other">Dólares australianos</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Guilder de Aruba</displayName>
				<displayName count="one">Florim de Aruba</displayName>
				<displayName count="other">Florins de Aruba</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Manat azerbaijano</displayName>
				<displayName count="one">Manat do Azeibaijão (AZM)</displayName>
				<displayName count="other">Manats do Azeibaijão (AZM)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Manat do Azerbaijão</displayName>
				<displayName count="one">Manat do Azeibaijão</displayName>
				<displayName count="other">Manats do Azeibaijão</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Dinar da Bósnia-Herzegovina</displayName>
				<displayName count="one">Dinar da Bósnia Herzegovina</displayName>
				<displayName count="other">Dinares da Bósnia Herzegovina</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Marco bósnio-herzegovino conversível</displayName>
				<displayName count="one">Marca conversível da Bósnia Herzegovina</displayName>
				<displayName count="other">Marcas conversíveis da Bósnia Herzegovina</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Dólar de Barbados</displayName>
				<displayName count="one">Dólar de Barbados</displayName>
				<displayName count="other">Dólares de Barbados</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka de Bangladesh</displayName>
				<displayName count="one">Taka de Bangladesh</displayName>
				<displayName count="other">Takas de Bangladesh</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Franco belga (conversível)</displayName>
				<displayName count="one">Franco belga (conversível)</displayName>
				<displayName count="other">Francos belgas (conversível)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franco belga</displayName>
				<displayName count="one">Franco belga</displayName>
				<displayName count="other">Francos belgas</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Franco belga (financeiro)</displayName>
				<displayName count="one">Franco belga (financeiro)</displayName>
				<displayName count="other">Francos belgas (financeiro)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Lev forte búlgaro</displayName>
				<displayName count="one">Lev pesado da Bulgária</displayName>
				<displayName count="other">Levs pesados da Bulgária</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Lev novo búlgaro</displayName>
				<displayName count="one">Novo lev da Bulgária</displayName>
				<displayName count="other">Novos levs da Bulgária</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Dinar bareinita</displayName>
				<displayName count="one">Dinar do Bahraini</displayName>
				<displayName count="other">Dinares do Bahraini</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Franco do Burundi</displayName>
				<displayName count="one">Franco do Burundi</displayName>
				<displayName count="other">Francos do Burundi</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Dólar das Bermudas</displayName>
				<displayName count="one">Dólar das Bermudas</displayName>
				<displayName count="other">Dólares das Bermudas</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Dólar do Brunei</displayName>
				<displayName count="one">Dólar de Brunei</displayName>
				<displayName count="other">Dólares de Brunei</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="one">Boliviano</displayName>
				<displayName count="other">Bolivianos</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Peso boliviano</displayName>
				<displayName count="one">Peso boliviano</displayName>
				<displayName count="other">Pesos bolivianos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Mvdol boliviano</displayName>
				<displayName count="one">Mvdol boliviano</displayName>
				<displayName count="other">Mvdols bolivianos</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Cruzeiro novo brasileiro (1967-1986)</displayName>
				<displayName count="one">Cruzeiro novo brasileiro</displayName>
				<displayName count="other">Cruzeiro novo brasileiro (BRB)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Cruzado brasileiro</displayName>
				<displayName count="one">Cruzado brasileiro</displayName>
				<displayName count="other">Cruzados brasileiros</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Cruzeiro brasileiro (1990-1993)</displayName>
				<displayName count="one">Cruzeiro brasileiro (BRE)</displayName>
				<displayName count="other">Cruzeiros brasileiros (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real brasileiro</displayName>
				<displayName count="one">Real brasileiro</displayName>
				<displayName count="other">Reais brasileiros</displayName>
			</currency>
			<currency type="BRN">
				<displayName>Cruzado novo brasileiro</displayName>
				<displayName count="one">Cruzado novo brasileiro</displayName>
				<displayName count="other">Cruzados novos brasileiros</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Cruzeiro brasileiro</displayName>
				<displayName count="one">Cruzeiro brasileiro</displayName>
				<displayName count="other">Cruzeiros brasileiros</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Dólar das Bahamas</displayName>
				<displayName count="one">Dólar de Bahamian</displayName>
				<displayName count="other">Dólares de Bahamian</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Ngultrum do Butão</displayName>
				<displayName count="one">Ngultrum do Butão</displayName>
				<displayName count="other">Ngultruns do Butão</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Kyat birmanês</displayName>
				<displayName count="one">Kyat burmês</displayName>
				<displayName count="other">Kyats burmeses</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Pula botsuanesa</displayName>
				<displayName count="one">Pula de Botsuana</displayName>
				<displayName count="other">Pulas de Botsuana</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Rublo novo bielo-russo (1994-1999)</displayName>
				<displayName count="one">Novo rublo bielorusso</displayName>
				<displayName count="other">Novos rublos bielorussos</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Rublo bielo-russo</displayName>
				<displayName count="one">Rublo bielorusso</displayName>
				<displayName count="other">Rublos bielorussos</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Dólar do Belize</displayName>
				<displayName count="one">Dólar de Belize</displayName>
				<displayName count="other">Dólares de Belize</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Dólar canadense</displayName>
				<displayName count="one">Dólar canadense</displayName>
				<displayName count="other">Dólares canadenses</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Franco congolês</displayName>
				<displayName count="one">Franco congolês</displayName>
				<displayName count="other">Francos congoleses</displayName>
			</currency>
			<currency type="CHE">
				<displayName>Euro WIR</displayName>
				<displayName count="one">Euro WIR</displayName>
				<displayName count="other">Euros WIR</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franco suíço</displayName>
				<displayName count="one">Franco suíço</displayName>
				<displayName count="other">Francos suíços</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>Franco WIR</displayName>
				<displayName count="one">Franco WIR</displayName>
				<displayName count="other">Francos WIR</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento chilenas</displayName>
				<displayName count="one">Unidade de fomento chilena</displayName>
				<displayName count="other">Unidades de fomento chilenas</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Peso chileno</displayName>
				<displayName count="one">Peso chileno</displayName>
				<displayName count="other">Pesos chilenos</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi chinês</displayName>
				<displayName count="one">Yuan chinês</displayName>
				<displayName count="other">Yuans chineses</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Peso colombiano</displayName>
				<displayName count="one">Peso colombiano</displayName>
				<displayName count="other">Pesos colombianos</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidade de Valor Real</displayName>
				<displayName count="one">Unidade de valor real</displayName>
				<displayName count="other">Unidades de valor real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Colon da Costa Rica</displayName>
				<displayName count="one">Colon costa-riquenho</displayName>
				<displayName count="other">Colons costa-riquenhos</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>Dinar Antigo sérvio</displayName>
				<displayName count="one">Dinar antigo da Sérvia</displayName>
				<displayName count="other">Dinares antigos da Sérvia</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Coroa Forte checoslovaca</displayName>
				<displayName count="one">Corona tcheca</displayName>
				<displayName count="other">Coronas tchecas</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso cubano</displayName>
				<displayName count="one">Peso cubano</displayName>
				<displayName count="other">Pesos cubanos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Escudo cabo-verdiano</displayName>
				<displayName count="one">Escudo de Cabo Verde</displayName>
				<displayName count="other">Escudos de Cabo Verde</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Libra cipriota</displayName>
				<displayName count="one">Libra do Chipre</displayName>
				<displayName count="other">Libras do Chipre</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Coroa checa</displayName>
				<displayName count="one">Corona da República Tcheca</displayName>
				<displayName count="other">Coronas da República Tcheca</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Ostmark da Alemanha Oriental</displayName>
				<displayName count="one">Ostmark da Alemannha Oriental</displayName>
				<displayName count="other">Ostmarks da Alemannha Oriental</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marco alemão</displayName>
				<displayName count="one">Marco alemão</displayName>
				<displayName count="other">Marcos alemães</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Franco do Djibuti</displayName>
				<displayName count="one">Franco de Djibouti</displayName>
				<displayName count="other">Francos de Djibouti</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Coroa dinamarquesa</displayName>
				<displayName count="one">Krone dinamarquês</displayName>
				<displayName count="other">Krones dinamarqueses</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Peso dominicano</displayName>
				<displayName count="one">Peso dominicano</displayName>
				<displayName count="other">Pesos dominicanos</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Dinar argelino</displayName>
				<displayName count="one">Dinar algeriano</displayName>
				<displayName count="other">Dinares algerianos</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Sucre equatoriano</displayName>
				<displayName count="one">Sucre equatoriano</displayName>
				<displayName count="other">Sucres equatorianos</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidade de Valor Constante (UVC) do Equador</displayName>
				<displayName count="one">Unidade de valor constante equatoriana (UVC)</displayName>
				<displayName count="other">Unidades de valor constante equatoriana (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Coroa estoniana</displayName>
				<displayName count="one">Kroon estoniano</displayName>
				<displayName count="other">Kroons estonianos</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Libra egípcia</displayName>
				<displayName count="one">Libra egípcia</displayName>
				<displayName count="other">Libras egípcias</displayName>
			</currency>
			<currency type="EQE">
				<displayName>Ekwele</displayName>
				<displayName count="one">Ekwele</displayName>
				<displayName count="other">Ekweles</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Nakfa da Eritréia</displayName>
				<displayName count="one">Nakfa da Eritréia</displayName>
				<displayName count="other">Nakfas da Eritréia</displayName>
			</currency>
			<currency type="ESA">
				<displayName>Peseta espanhola (conta A)</displayName>
				<displayName count="one">Peseta espanhola (conta A)</displayName>
				<displayName count="other">Pesetas espanholas (conta A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>Peseta espanhola (conta conversível)</displayName>
				<displayName count="one">Peseta espanhola (conta conversível)</displayName>
				<displayName count="other">Pesetas espanholas (conta conversível)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Peseta espanhola</displayName>
				<displayName count="one">Peseta espanhola</displayName>
				<displayName count="other">Pesetas espanholas</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Birr etíope</displayName>
				<displayName count="one">Birr etíope</displayName>
				<displayName count="other">Birrs etíopes</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<displayName count="one">Euro</displayName>
				<displayName count="other">Euros</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Marca finlandesa</displayName>
				<displayName count="one">Markka finlandesa</displayName>
				<displayName count="other">Markkas finlandesas</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Dólar de Fiji</displayName>
				<displayName count="one">Dólar de Fiji</displayName>
				<displayName count="other">Dólares de Fiji</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Libra das Malvinas</displayName>
				<displayName count="one">Libra das Ilhas Malvinas</displayName>
				<displayName count="other">Libras das Ilhas Malvinas</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franco francês</displayName>
				<displayName count="one">Franco francês</displayName>
				<displayName count="other">Francos franceses</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Libra esterlina britânica</displayName>
				<displayName count="one">Libra esterlina britânica</displayName>
				<displayName count="other">Libras esterlinas britânicas</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Cupom Lari georgiano</displayName>
				<displayName count="one">Kupon larit da Geórgia</displayName>
				<displayName count="other">Kupon larits da Geórgia</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Lari georgiano</displayName>
				<displayName count="one">Lari da Geórgia</displayName>
				<displayName count="other">Laris da Geórgia</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Cedi de Gana (1979-2007)</displayName>
				<displayName count="one">Cedi de Gana (GHC)</displayName>
				<displayName count="other">Cedis de Gana (GHC)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Cedi ganês</displayName>
				<displayName count="one">Cedi de Gana</displayName>
				<displayName count="other">Cedis de Gana</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Libra de Gibraltar</displayName>
				<displayName count="one">Libra de Gibraltar</displayName>
				<displayName count="other">Libras de Gibraltar</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi de Gâmbia</displayName>
				<displayName count="one">Dalasi da Gâmbia</displayName>
				<displayName count="other">Dalasis da Gâmbia</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Franco de Guiné</displayName>
				<displayName count="one">Franco da Guinéa</displayName>
				<displayName count="other">Francos da Guinéa</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Syli da Guiné</displayName>
				<displayName count="one">Syli da Guinéa</displayName>
				<displayName count="other">Sylis da Guinéa</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele da Guiné Equatorial</displayName>
				<displayName count="one">Ekwele da Guinéa Equatorial</displayName>
				<displayName count="other">Ekweles da Guinéa Equatorial</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Dracma grego</displayName>
				<displayName count="one">Dracma grego</displayName>
				<displayName count="other">Dracmas gregos</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetçal da Guatemala</displayName>
				<displayName count="one">Quetzal da Guatemala</displayName>
				<displayName count="other">Quetzales da Guatemala</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Escudo da Guiné Portuguesa</displayName>
				<displayName count="one">Escudo da Guinéa Portuguesa</displayName>
				<displayName count="other">Escudos da Guinéa Portuguesa</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Peso da Guiné-Bissau</displayName>
				<displayName count="one">Peso de Guiné-Bissau</displayName>
				<displayName count="other">Pesos de Guiné-Bissau</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Dólar da Guiana</displayName>
				<displayName count="one">Dólar da Guiana</displayName>
				<displayName count="other">Dólares da Guiana</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Dólar de Hong Kong</displayName>
				<displayName count="one">Dólar de Hong Kong</displayName>
				<displayName count="other">Dólar de Hong Kong</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Lempira de Honduras</displayName>
				<displayName count="one">Lempira de Honduras</displayName>
				<displayName count="other">Lempiras de Honduras</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Dinar croata</displayName>
				<displayName count="one">Dinar croata</displayName>
				<displayName count="other">Dinares croata</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna croata</displayName>
				<displayName count="one">Kuna croata</displayName>
				<displayName count="other">Kunas croatas</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gurde do Haiti</displayName>
				<displayName count="one">Gourde haitiano</displayName>
				<displayName count="other">Gourdes haitianos</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Forinte húngaro</displayName>
				<displayName count="one">Forint húngaro</displayName>
				<displayName count="other">Forints húngaros</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Rupia indonésia</displayName>
				<displayName count="one">Rúpia da Indonésia</displayName>
				<displayName count="other">Rúpias da Indonésia</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Libra irlandesa</displayName>
				<displayName count="one">Libra irlandesa</displayName>
				<displayName count="other">Libras irlandesas</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Libra israelita</displayName>
				<displayName count="one">Libra israeli</displayName>
				<displayName count="other">Libras israelis</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Sheqel Novo israelita</displayName>
				<displayName count="one">Sheqel novo israeli</displayName>
				<displayName count="other">Sheqels novos israelis</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rúpia indiana</displayName>
				<displayName count="one">Rúpia indú</displayName>
				<displayName count="other">Rúpias indús</displayName>
				<symbol choice="true">0≤Rs.|1≤Re.|1</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Dinar iraquiano</displayName>
				<displayName count="one">Dinar iraquiano</displayName>
				<displayName count="other">Dinares iraquianos</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Rial iraniano</displayName>
				<displayName count="one">Rial iraniano</displayName>
				<displayName count="other">Riales iranianos</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Coroa islandesa</displayName>
				<displayName count="one">Krona islandesa</displayName>
				<displayName count="other">Kronas islandesas</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lira italiana</displayName>
				<displayName count="one">Lira italiana</displayName>
				<displayName count="other">Liras italianas</displayName>
				<symbol>₤</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Dólar jamaicano</displayName>
				<displayName count="one">Dólar jamaicano</displayName>
				<displayName count="other">Dólares jamaicanos</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Dinar jordaniano</displayName>
				<displayName count="one">Dinar jordaniano</displayName>
				<displayName count="other">Dinares jordanianos</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Iene japonês</displayName>
				<displayName count="one">Ien japonês</displayName>
				<displayName count="other">Ienes japoneses</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Xelim queniano</displayName>
				<displayName count="one">Shilling queniano</displayName>
				<displayName count="other">Shillings quenianos</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Som do Quirguistão</displayName>
				<displayName count="one">Som do Quirguistão</displayName>
				<displayName count="other">Soms do Quirguistão</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Riel cambojano</displayName>
				<displayName count="one">Riel cambojano</displayName>
				<displayName count="other">Rieles cambojanos</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Franco de Comores</displayName>
				<displayName count="one">Franco de Comoro</displayName>
				<displayName count="other">Francos de Comoro</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Won norte-coreano</displayName>
				<displayName count="one">Won norte coreano</displayName>
				<displayName count="other">Wons norte coreano</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won sul-coreano</displayName>
				<displayName count="one">Won sul-coreano</displayName>
				<displayName count="other">Won sul coreano</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Dinar coveitiano</displayName>
				<displayName count="one">Wons sul coreanos</displayName>
				<displayName count="other">Dinares kuaitianos</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Dólar das Ilhas Caiman</displayName>
				<displayName count="one">Dólar das Ilhas Cayman</displayName>
				<displayName count="other">Dólares das Ilhas Caiman</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Tenge do Cazaquistão</displayName>
				<displayName count="one">Tengue do Casaquistão</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Kip de Laos</displayName>
				<displayName count="one">Kip do Laos</displayName>
				<displayName count="other">Kips do Laos</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libra libanesa</displayName>
				<displayName count="one">Libra libanesa</displayName>
				<displayName count="other">Libras libanesas</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Rupia do Sri Lanka</displayName>
				<displayName count="one">Rúpia do Siri Lanka</displayName>
				<displayName count="other">Rúpias do Siri Lanka</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Dólar liberiano</displayName>
				<displayName count="one">Dólar da Libéria</displayName>
				<displayName count="other">Dólares da Libéria</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Loti do Lesoto</displayName>
				<displayName count="one">Loti do Lesoto</displayName>
				<displayName count="other">Lotis do Lesoto</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
				<displayName count="one">Maloti</displayName>
				<displayName count="other">Malotis</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Lita lituano</displayName>
				<displayName count="one">Lita lituana</displayName>
				<displayName count="other">Litas lituanas</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Talonas lituano</displayName>
				<displayName count="one">Talonas lituanas</displayName>
				<displayName count="other">Talonases lituanas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Franco conversível de Luxemburgo</displayName>
				<displayName count="one">Franco conversível de Luxemburgo</displayName>
				<displayName count="other">Francos conversíveis de Luxemburgo</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Franco luxemburguês</displayName>
				<displayName count="one">Franco de Luxemburgo</displayName>
				<displayName count="other">Francos de Luxemburgo</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Franco financeiro de Luxemburgo</displayName>
				<displayName count="one">Franco financeiro de Luxemburgo</displayName>
				<displayName count="other">Francos financeiros de Luxemburgo</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lats letão</displayName>
				<displayName count="one">Lats da Letônia</displayName>
				<displayName count="other">Latses da Letônia</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Rublo letão</displayName>
				<displayName count="one">Rublo da Letônia</displayName>
				<displayName count="other">Rublos da Letônia</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Dinar líbio</displayName>
				<displayName count="one">Dinar líbio</displayName>
				<displayName count="other">Dinares líbios</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Dirém marroquino</displayName>
				<displayName count="one">Dirham marroquino</displayName>
				<displayName count="other">Dirhams marroquinos</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Franco marroquino</displayName>
				<displayName count="one">Franco marroquino</displayName>
				<displayName count="other">Francos marroquinos</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Leu da Moldávia</displayName>
				<displayName count="one">Leu da Moldávia</displayName>
				<displayName count="other">Leus da Moldávia</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Ariary de Madagascar</displayName>
				<displayName count="one">Ariari de Madagascar</displayName>
				<displayName count="other">Ariaries de Madagascar</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Franco de Madagascar</displayName>
				<displayName count="one">Franco de Madagascar</displayName>
				<displayName count="other">Francos de Madagascar</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Dinar macedônio</displayName>
				<displayName count="one">Denar da Macedônia</displayName>
				<displayName count="other">Denares da Macedônia</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Franco de Mali</displayName>
				<displayName count="one">Franco de Mali</displayName>
				<displayName count="other">Francos de Mali</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Kyat de Mianmar</displayName>
				<displayName count="one">Kyat de Mianmar</displayName>
				<displayName count="other">Kyats de Mianmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Tugrik mongol</displayName>
				<displayName count="one">Tugrik da Mongólia</displayName>
				<displayName count="other">Tugriks da Mongólia</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Pataca macaense</displayName>
				<displayName count="one">Pataca de Macau</displayName>
				<displayName count="other">Patacas de Macau</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Ouguiya da Mauritânia</displayName>
				<displayName count="one">Ouguiya da Mauritânia</displayName>
				<displayName count="other">Ouguiyas da Mauritânia</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Lira maltesa</displayName>
				<displayName count="one">Lira Maltesa</displayName>
				<displayName count="other">Liras maltesas</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Libra maltesa</displayName>
				<displayName count="one">Libra maltesa</displayName>
				<displayName count="other">Libras maltesas</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Rupia de Maurício</displayName>
				<displayName count="one">Rúpia das Ilhas Maurício</displayName>
				<displayName count="other">Rúpias das Ilhas Maurício</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Rupias das Ilhas Maldivas</displayName>
				<displayName count="one">Rufiyaa das Ilhas Maldivas</displayName>
				<displayName count="other">Rufiyaas das Ilhas Maldivas</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Cuacha do Maláui</displayName>
				<displayName count="one">Kwacha do Malawi</displayName>
				<displayName count="other">Kwachas do Malawi</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Peso mexicano</displayName>
				<displayName count="one">Peso mexicano</displayName>
				<displayName count="other">Pesos mexicanos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Peso Prata mexicano (1861-1992)</displayName>
				<displayName count="one">Peso de prata mexicano (MXP)</displayName>
				<displayName count="other">Pesos de prata mexicanos (MXP)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidade de Investimento (UDI) mexicana</displayName>
				<displayName count="one">Unidade de investimento mexicana (UDI)</displayName>
				<displayName count="other">Unidades de investimento mexicanas (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Ringgit malaio</displayName>
				<displayName count="one">Ringgit malaio</displayName>
				<displayName count="other">Ringgits da Malásia</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Escudo de Moçambique</displayName>
				<displayName count="one">Escudo de Moçambique</displayName>
				<displayName count="other">Escudos de Moçambique</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Metical antigo de Moçambique</displayName>
				<displayName count="one">Metical antigo de Moçambique</displayName>
				<displayName count="other">Meticales antigos de Moçambique</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Metical do Moçambique</displayName>
				<displayName count="one">Metical de Moçambique</displayName>
				<displayName count="other">Meticales de Moçambique</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Dólar da Namíbia</displayName>
				<displayName count="one">Dólar da Namíbia</displayName>
				<displayName count="other">Dólares da Namíbia</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Naira nigeriana</displayName>
				<displayName count="one">Naira da Nigéria</displayName>
				<displayName count="other">Nairas da Nigéria</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Córdoba nicaraguense</displayName>
				<displayName count="one">Córdoba nicaraguense</displayName>
				<displayName count="other">Córdobas da Nicarágua</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Córdoba Ouro nicaraguense</displayName>
				<displayName count="one">Córdoba de ouro da Nicarágua</displayName>
				<displayName count="other">Córdobas de ouro da Nicarágua</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Florim holandês</displayName>
				<displayName count="one">Florim holandês</displayName>
				<displayName count="other">Florins holandeses</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Coroa norueguesa</displayName>
				<displayName count="one">Crone norueguês</displayName>
				<displayName count="other">Crones noruegueses</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Rupia nepalesa</displayName>
				<displayName count="one">Rúpia nepalesa</displayName>
				<displayName count="other">Rúpias nepalesas</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Dólar da Nova Zelândia</displayName>
				<displayName count="one">Dólar da Nova Zelândia</displayName>
				<displayName count="other">Dólares da Nova Zelândia</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Rial de Omã</displayName>
				<displayName count="one">Rial de Omã</displayName>
				<displayName count="other">Riales de Omã</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Balboa panamenho</displayName>
				<displayName count="one">Balboa do Panamá</displayName>
				<displayName count="other">Balboas do Panamá</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Inti peruano</displayName>
				<displayName count="one">Inti peruano</displayName>
				<displayName count="other">Intis peruanos</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Sol Novo peruano</displayName>
				<displayName count="one">Novo sol peruano</displayName>
				<displayName count="other">Novos soles peruanos</displayName>
			</currency>
			<currency type="PES">
				<displayName>Sol peruano</displayName>
				<displayName count="one">Sol peruano</displayName>
				<displayName count="other">Soles peruanos</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina da Papua-Nova Guiné</displayName>
				<displayName count="one">Kina de Papua Nova Guiné</displayName>
				<displayName count="other">Kinas de Papua Nova Guiné</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Peso filipino</displayName>
				<displayName count="one">peso filipino</displayName>
				<displayName count="other">Pesos filipinos</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Rupia paquistanesa</displayName>
				<displayName count="one">rúpia paquistanesa</displayName>
				<displayName count="other">Rúpias paquistanesas</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Zloti polonês</displayName>
				<displayName count="one">Zloti polonês</displayName>
				<displayName count="other">Zlotis poloneses</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Zloti polonês (1950-1995)</displayName>
				<displayName count="one">Zloti polonês (PLZ)</displayName>
				<displayName count="other">Zlotis poloneses (PLZ)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Escudo português</displayName>
				<displayName count="one">Escudo português</displayName>
				<displayName count="other">Escudos portugueses</displayName>
				<symbol>Esc.</symbol>
			</currency>
			<currency type="PYG">
				<displayName>Guarani paraguaio</displayName>
				<displayName count="one">Guarani paraguaio</displayName>
				<displayName count="other">Guaranis paraguaios</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Rial catariano</displayName>
				<displayName count="one">Rial do Quatar</displayName>
				<displayName count="other">Riales do Quatar</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>Dólar rodesiano</displayName>
				<displayName count="one">Dólar da Rodésia</displayName>
				<displayName count="other">Dólares da Rodésia</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Leu romeno antigo</displayName>
				<displayName count="one">Leu antigo da Romênia</displayName>
				<displayName count="other">Leus antigos da Romênia</displayName>
			</currency>
			<currency type="RON">
				<displayName>Leu romeno</displayName>
				<displayName count="one">Leu da Romênia</displayName>
				<displayName count="other">Lei da Romênia</displayName>
				<symbol>0≤lei|1≤leu|1</symbol>
			</currency>
			<currency type="RSD">
				<displayName>Dinar sérvio</displayName>
				<displayName count="one">Dinar sérvio</displayName>
				<displayName count="other">Dinares sérvios</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rublo russo</displayName>
				<displayName count="one">Rúpias russa</displayName>
				<displayName count="other">Rúpias russas</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Rublo russo (1991-1998)</displayName>
				<displayName count="one">Rúpia russa (RUR)</displayName>
				<displayName count="other">Rúpias russas (RUR)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Franco ruandês</displayName>
				<displayName count="one">Franco de Ruanda</displayName>
				<displayName count="other">Francos de Ruanda</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Rial saudita</displayName>
				<displayName count="one">Riyal saudita</displayName>
				<displayName count="other">Riyales sauditas</displayName>
				<symbol>SRI</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Dólar das Ilhas Salomão</displayName>
				<displayName count="one">Dólar das Ilhas Salomão</displayName>
				<displayName count="other">Dólares das Ilhas Salomão</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Rupia das Seychelles</displayName>
				<displayName count="one">Rúpia das Ilhas Seychelles</displayName>
				<displayName count="other">Rúpias das Ilhas Seychelles</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Dinar sudanês</displayName>
				<displayName count="one">Dinar antigo do Sudão</displayName>
				<displayName count="other">Dinares antigos do Sudão</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Libra sudanesa</displayName>
				<displayName count="one">Libra sudanesa</displayName>
				<displayName count="other">Libras sudanesas</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Libra sudanesa antiga</displayName>
				<displayName count="one">Libra antiga sudanesa</displayName>
				<displayName count="other">Libras antigas sudanesas</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Coroa sueca</displayName>
				<displayName count="one">Crona suéca</displayName>
				<displayName count="other">Cronas suécas</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Dólar de Cingapura</displayName>
				<displayName count="one">Dólar de Singapura</displayName>
				<displayName count="other">Dólares de Singapura</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Libra de Santa Helena</displayName>
				<displayName count="one">Libra de Santa Helena</displayName>
				<displayName count="other">Libras de Santa Helena</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Tolar Bons esloveno</displayName>
				<displayName count="one">Tolar da Eslovênia</displayName>
				<displayName count="other">Tolares da Eslovênia</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Coroa eslovaca</displayName>
				<displayName count="one">Coruna eslovaca</displayName>
				<displayName count="other">Corunas eslovacas</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Leone de Serra Leoa</displayName>
				<displayName count="one">Leone de Serra Leoa</displayName>
				<displayName count="other">Leones de Serra Leoa</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Xelim somali</displayName>
				<displayName count="one">Shilling da Somália</displayName>
				<displayName count="other">Shillings da Somália</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Dólar do Suriname</displayName>
				<displayName count="one">Dólar do Suriname</displayName>
				<displayName count="other">Dólares do Suriname</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Florim do Suriname</displayName>
				<displayName count="one">Florim do Suriname</displayName>
				<displayName count="other">Florins do Suriname</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Dobra de São Tomé e Príncipe</displayName>
				<displayName count="one">Dobra de San Tomé e Príncipe</displayName>
				<displayName count="other">Dobras de San Tomé e Príncipe</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Rublo soviético</displayName>
				<displayName count="one">Rúpia soviética</displayName>
				<displayName count="other">Rúpias soviéticas</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colom salvadorenho</displayName>
				<displayName count="one">Colon de El Salvador</displayName>
				<displayName count="other">Colons de El Salvador</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Libra síria</displayName>
				<displayName count="one">Libra síria</displayName>
				<displayName count="other">Libras sírias</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni da Suazilândia</displayName>
				<displayName count="one">Lilangeni da Suazilândia</displayName>
				<displayName count="other">Lilangenis da Suazilândia</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Baht tailandês</displayName>
				<displayName count="one">Baht da Tailândia</displayName>
				<displayName count="other">Bahts da Tailândia</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Rublo do Tadjiquistão</displayName>
				<displayName count="one">Rúpia do Tajaquistão</displayName>
				<displayName count="other">Rúpias do Tajaquistão</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Somoni tadjique</displayName>
				<displayName count="one">Somoni do Tajaquistão</displayName>
				<displayName count="other">Somonis do Tajaquistão</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Manat do Turcomenistão</displayName>
				<displayName count="one">Manat do Turcomenistão</displayName>
				<displayName count="other">Manats do Turcomenistão</displayName>
			</currency>
			<currency type="TND">
				<displayName>Dinar tunisiano</displayName>
				<displayName count="one">Dinar da Tunísia</displayName>
				<displayName count="other">Dinares da Tunísia</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Paʻanga de Tonga</displayName>
				<displayName count="one">Paʻanga de Tonga</displayName>
				<displayName count="other">Paʻangas de Tonga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Escudo timorense</displayName>
				<displayName count="one">Escudo do Timor</displayName>
				<displayName count="other">Escudos do Timor</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Lira turca antiga</displayName>
				<displayName count="one">Lira turca antiga</displayName>
				<displayName count="other">Liras turcas antigas</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Lira turca</displayName>
				<displayName count="one">Nova Lira turca</displayName>
				<displayName count="other">Liras turcas</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Dólar de Trinidad e Tobago</displayName>
				<displayName count="one">Dólar de Trinidad e Tobago</displayName>
				<displayName count="other">Dólares de Trinidad e Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Dólar Novo de Taiwan</displayName>
				<displayName count="one">Dólar de Taiwan</displayName>
				<displayName count="other">Dólares de Taiwan</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Xelim da Tanzânia</displayName>
				<displayName count="one">Shilling da Tanzânia</displayName>
				<displayName count="other">Shillings da Tanzânia</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Hryvnia ucraniano</displayName>
				<displayName count="one">Hryvnia da Ucrânia</displayName>
				<displayName count="other">Hryvnias da Ucrânia</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanetz ucraniano</displayName>
				<displayName count="one">Karbovanetz da Ucrânia</displayName>
				<displayName count="other">Karbovanetzs da Ucrânia</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Xelim ugandense (1966-1987)</displayName>
				<displayName count="one">Shilling de Uganda (UGS)</displayName>
				<displayName count="other">Shillings de Uganda (UGS)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Xelim ugandense</displayName>
				<displayName count="one">Shilling de Uganda</displayName>
				<displayName count="other">Shillings de Uganda</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Dólar norte-americano</displayName>
				<displayName count="one">Dólar americano</displayName>
				<displayName count="other">Dólares americanos</displayName>
			</currency>
			<currency type="USN">
				<displayName>Dólar norte-americano (Dia seguinte)</displayName>
				<displayName count="one">Dólar americano (dia seguinte)</displayName>
				<displayName count="other">Dólares americanos (dia seguinte)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Dólar norte-americano (Mesmo dia)</displayName>
				<displayName count="one">Dólar americano (mesmo dia)</displayName>
				<displayName count="other">Dólares americanos (mesmo dia)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Peso uruguaio en unidades indexadas</displayName>
				<displayName count="one">Peso uruguaio em unidades indexadas</displayName>
				<displayName count="other">Pesos uruguaios em unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Peso uruguaio (1975-1993)</displayName>
				<displayName count="one">Peso uruguaio (UYP)</displayName>
				<displayName count="other">Pesos uruguaios (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Peso uruguaio</displayName>
				<displayName count="one">Peso uruguaio</displayName>
				<displayName count="other">Pesos uruguaios</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Sum do Usbequistão</displayName>
				<displayName count="one">Sum do Uzbequistão</displayName>
				<displayName count="other">Sums do Uzbequistão</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Bolívar venezuelano</displayName>
				<displayName count="one">Bolívar venezuelano</displayName>
				<displayName count="other">Bolívares venezuelano</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Bolívar v enezuelano forte</displayName>
				<displayName count="one">Bolívar forte da Venezuela</displayName>
				<displayName count="other">Bolívares fortes da Venezuela</displayName>
			</currency>
			<currency type="VND">
				<displayName>Dong vietnamita</displayName>
				<displayName count="one">Dong vietnamês</displayName>
				<displayName count="other">Dongs vietnameses</displayName>
				<symbol>đ</symbol>
			</currency>
			<currency type="VUV">
				<displayName>Vatu de Vanuatu</displayName>
				<displayName count="one">Vatu de Vanuatu</displayName>
				<displayName count="other">Vatus de Vanuatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Tala da Samoa Ocidental</displayName>
				<displayName count="one">Tala da Samoa Ocidental</displayName>
				<displayName count="other">Talas da Samoa Ocidental</displayName>
			</currency>
			<currency type="XAF">
				<displayName>Franco CFA BEAC</displayName>
				<displayName count="one">Franco CFA de BEAC</displayName>
				<displayName count="other">Francos CFA de BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Prata</displayName>
				<displayName count="one">Prata</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Ouro</displayName>
				<displayName count="one">Ouro</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Unidade Composta Européia</displayName>
				<displayName count="one">Unidade de composição européia</displayName>
				<displayName count="other">Unidades de composição européias</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Unidade Monetária Européia</displayName>
				<displayName count="one">Unidade monetária européia</displayName>
				<displayName count="other">Unidades monetárias européias</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Unidade de Conta Européia (XBC)</displayName>
				<displayName count="one">Unidade européia de conta (XBC)</displayName>
				<displayName count="other">Unidades européias de conta (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Unidade de Conta Européia (XBD)</displayName>
				<displayName count="one">Unidade européia de conta (XBD)</displayName>
				<displayName count="other">Unidades européias de conta (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Dólar do Caribe Oriental</displayName>
				<displayName count="one">Dólar do Caribe Oriental</displayName>
				<displayName count="other">Dólares do Caribe Oriental</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Direitos Especiais de Giro</displayName>
				<displayName count="one">direitos de desenho especiais</displayName>
				<displayName count="other">direitos de desenho especiais</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Unidade de Moeda Européia</displayName>
				<displayName count="one">Unidade de moeda européia</displayName>
				<displayName count="other">Unidades de moedas européias</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Franco-ouro francês</displayName>
				<displayName count="one">Franco de ouro francês</displayName>
				<displayName count="other">Francos de ouro franceses</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Franco UIC francês</displayName>
				<displayName count="one">Franco UIC francês</displayName>
				<displayName count="other">Francos UIC franceses</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Franco CFA BCEAO</displayName>
				<displayName count="one">Franco CFA de BCEAO</displayName>
				<displayName count="other">Francos CFA de BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Paládio</displayName>
				<displayName count="one">Paládio</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Franco CFP</displayName>
				<displayName count="one">Franco CFP</displayName>
				<displayName count="other">Francos CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>Platina</displayName>
				<displayName count="one">Platina</displayName>
			</currency>
			<currency type="XRE">
				<displayName>Fundos RINET</displayName>
				<displayName count="one">Fundos RINET</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Código de Moeda de Teste</displayName>
				<displayName count="one">Código de moeda de teste</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Moeda Desconhecida ou Inválida</displayName>
				<displayName count="one">moeda desconhecida ou inválida</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Dinar iemenita</displayName>
				<displayName count="one">Dinar do Iêmen</displayName>
				<displayName count="other">Dinares do Iêmen</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rial iemenita</displayName>
				<displayName count="one">Rial do Iêmen</displayName>
				<displayName count="other">Riales do Iêmen</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Dinar forte iugoslavo</displayName>
				<displayName count="one">Dinar pesado da Iugoslávia</displayName>
				<displayName count="other">Dinares pesados da Iugoslávia</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Super Dinar iugoslavo</displayName>
				<displayName count="one">Dinar noviy da Iugoslávia</displayName>
				<displayName count="other">Dinares noviy da Iugoslávia</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Dinar conversível iugoslavo</displayName>
				<displayName count="one">Dinar conversível da Iugoslávia</displayName>
				<displayName count="other">Dinares conversíveis da Iugoslávia</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Rand sul-africano (financeiro)</displayName>
				<displayName count="one">Rand da África do Sul (financeiro)</displayName>
				<displayName count="other">Rands da África do Sul (financeiro)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand sul-africano</displayName>
				<displayName count="one">Rand da África do Sul</displayName>
				<displayName count="other">Rands da África do Sul</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Cuacha zambiano</displayName>
				<displayName count="one">Kwacha da Zâmbia</displayName>
				<displayName count="other">Kwachas da Zâmbia</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zaire Novo zairense</displayName>
				<displayName count="one">Novo zaire do Zaire</displayName>
				<displayName count="other">Novos zaires do Zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zaire zairense</displayName>
				<displayName count="one">Zaire do Zaire</displayName>
				<displayName count="other">Zaires do Zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Dólar do Zimbábue</displayName>
				<displayName count="one">Dólar do Zimbábue</displayName>
				<displayName count="other">Dólares do Zimbábue</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} dia</unitPattern>
			<unitPattern count="other">{0} dias</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hora</unitPattern>
			<unitPattern count="other">{0} horas</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuto</unitPattern>
			<unitPattern count="other">{0} minutos</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mês</unitPattern>
			<unitPattern count="other">{0} meses</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} segundo</unitPattern>
			<unitPattern count="other">{0} segundos</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} semana</unitPattern>
			<unitPattern count="other">{0} semanas</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} ano</unitPattern>
			<unitPattern count="other">{0} anos</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>sim:s</yesstr>
			<nostr>não:nao:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[]#9��Locale/Data/plurals.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldmlSupplemental.dtd">
<supplementalData>
    <version number="$Revision: 1.19 $"/>
    <generation date="$Date: 2008/06/16 22:54:14 $"/>
    <plurals>
        <pluralRules locales="az fa hu ja ko my to tr vi yo zh
        bo dz id jv ka km kn ms th"/>
        <pluralRules locales="ar">
            <pluralRule count="zero">n is 0</pluralRule>
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="two">n is 2</pluralRule>
            <pluralRule count="few">n mod 100 in 3..10</pluralRule>
            <pluralRule count="many">n mod 100 in 11..99</pluralRule>
        </pluralRules>
        <pluralRules locales="da de el en eo es et fi fo gl he iw it nb nl nn no pt_PT sv
        af bg bn ca eu fur fy gu ha is ku lb ml mr nah ne om or pa pap ps so sq sw ta te tk ur zu
        mn">
            <pluralRule count="one">n is 1</pluralRule>
        </pluralRules>
        <pluralRules locales="pt
        am bh fil tl guw hi ln mg nso ti wa">
            <pluralRule count="one">n in 0..1</pluralRule>
        </pluralRules>
        <pluralRules locales="fr">
            <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
        </pluralRules>
        <pluralRules locales="lv">
            <pluralRule count="zero">n is 0</pluralRule>
            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
        </pluralRules>
        <pluralRules locales="ga se sma smi smj smn sms">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="two">n is 2</pluralRule>
        </pluralRules>
        <pluralRules locales="ro mo">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 1..19</pluralRule>
        </pluralRules>
	     <pluralRules locales="lt">
	       <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11..19</pluralRule>
	       <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 11..19</pluralRule>
	     </pluralRules>
        <pluralRules locales="hr ru sr uk be bs sh">
            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
            <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
        </pluralRules>
        <pluralRules locales="cs sk">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="few">n in 2..4</pluralRule>
        </pluralRules>
        <pluralRules locales="pl">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14 and n mod 100 not in 22..24</pluralRule>
        </pluralRules>
        <pluralRules locales="sl">
            <pluralRule count="one">n mod 100 is 1</pluralRule>
            <pluralRule count="two">n mod 100 is 2</pluralRule>
            <pluralRule count="few">n mod 100 in 3..4</pluralRule>
        </pluralRules>
        <pluralRules locales="mt">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
            <pluralRule count="many">n mod 100 in 11..19</pluralRule>
        </pluralRules>
        <pluralRules locales="mk">
            <pluralRule count="one">n mod 10 is 1</pluralRule>
        </pluralRules>
        <pluralRules locales="cy">
            <pluralRule count="one">n is 1</pluralRule>
            <pluralRule count="two">n is 2</pluralRule>
            <pluralRule count="many">n is 8 or n is 11</pluralRule>
        </pluralRules>
    </plurals>
</supplementalData>
PKpG[�$
$$Locale/Data/cch_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.15 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="cch"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[���""Locale/Data/ii_CN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.5 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ii"/>
		<territory type="CN"/>
	</identity>
</ldml>
PKpG[l�u���Locale/Data/mn_Mong.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mn"/>
		<script type="Mong"/>
	</identity>
	<layout>
		<orientation lines="left-to-right" characters="top-to-bottom"/>
	</layout>
	<characters>
		<exemplarCharacters>[᠐-᠙ ᠠ-ᡂ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[a á à ă â å ä ā æ b c ç d e é è ĕ ê ë ē f-i í ì ĭ î ï ī j-n ñ o ó ò ŏ ô ö ø ō œ p-s ß t u ú ù ŭ û ü ū v-y ÿ z]</exemplarCharacters>
	</characters>
</ldml>
PKpG[p!n.��Locale/Data/sw_KE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sw"/>
		<territory type="KE"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[dB$$Locale/Data/tig_ER.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.34 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="tig"/>
		<territory type="ER"/>
	</identity>
</ldml>
PKpG[Z��;;Locale/Data/ha_Latn_GH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.11 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Latn"/>
		<territory type="GH"/>
	</identity>
</ldml>
PKpG[��FNNwNwLocale/Data/th.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.111 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="th"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">อะฟาร์</language>
			<language type="ab">แอบกาเซีย</language>
			<language type="ace">อาเจะห์</language>
			<language type="ach">อาโคลิ</language>
			<language type="ada">อาดางมี</language>
			<language type="ady">อะดีเกยา</language>
			<language type="ae">อาเวสทาน</language>
			<language type="af">แอฟริกา</language>
			<language type="afa">อาฟโร-เอเชียติก</language>
			<language type="afh">อาฟริฮิลิ</language>
			<language type="ain">ไอนุ</language>
			<language type="ak">อาคาน</language>
			<language type="akk">อัคคาเดีย</language>
			<language type="ale">อลิอุต</language>
			<language type="alg">ภาษาอาลงเควียน</language>
			<language type="alt">อัลไตใต้</language>
			<language type="am">อัมฮาริก</language>
			<language type="an">อารากอน</language>
			<language type="ang">อังกฤษโบราณ</language>
			<language type="anp">อังคิกา</language>
			<language type="apa">ภาษาอาปาเช่</language>
			<language type="ar">อาหรับ</language>
			<language type="arc">อราเมอิก</language>
			<language type="arn">อาราคาเนียน</language>
			<language type="arp">อาราพาโฮ</language>
			<language type="art">ภาษาประดิษฐ์</language>
			<language type="arw">อาราวัก</language>
			<language type="as">อัสสัม</language>
			<language type="ast">อัสตูเรียส</language>
			<language type="ath">ภาษาอาธาพาสกาน</language>
			<language type="aus">ภาษาออสเตรเลีย</language>
			<language type="av">อาวาริก</language>
			<language type="awa">อวาธี</language>
			<language type="ay">ไอย์มารา</language>
			<language type="az">อาเซอร์ไบจาน</language>
			<language type="ba">บัชคีร์</language>
			<language type="bad">บันดา</language>
			<language type="bai">ภาษาบามิเลค</language>
			<language type="bal">บาลูชิ</language>
			<language type="ban">บาหลี</language>
			<language type="bas">บาสา</language>
			<language type="bat">ภาษาบอลติก</language>
			<language type="be">เบลารุส</language>
			<language type="bej">เบจา</language>
			<language type="bem">เบมบา</language>
			<language type="ber">เบอร์เบอร์</language>
			<language type="bg">บัลแกเรีย</language>
			<language type="bh">พิหาร</language>
			<language type="bho">ภจบุรี</language>
			<language type="bi">บิสลามา</language>
			<language type="bik">บิกอล</language>
			<language type="bin">บินี</language>
			<language type="bla">สิกสิกา</language>
			<language type="bm">บามบารา</language>
			<language type="bn">เบงกาลี</language>
			<language type="bnt">บันตู</language>
			<language type="bo">ทิเบต</language>
			<language type="br">เบรตัน</language>
			<language type="bra">บราจ</language>
			<language type="bs">บอสเนีย</language>
			<language type="btk">บาตัก</language>
			<language type="bua">บูเรียต</language>
			<language type="bug">บูกิส</language>
			<language type="byn">บลิน</language>
			<language type="ca">คาตาลัน</language>
			<language type="cad">คัดโด</language>
			<language type="cai">ภาษาอเมริกันอินเดียนกลาง</language>
			<language type="car">คาริบ</language>
			<language type="cau">ภาษาคอเคเซียน</language>
			<language type="ce">เชเชน</language>
			<language type="ceb">เซบู</language>
			<language type="cel">ภาษาเซลติก</language>
			<language type="ch">ชามอร์โร</language>
			<language type="chb">ชิบชา</language>
			<language type="chg">ชากาไท</language>
			<language type="chk">ชูกิส</language>
			<language type="chm">มาริ</language>
			<language type="chn">ชินุคจาร์กอน</language>
			<language type="cho">ชอกทาว</language>
			<language type="chp">ชิเพวยัน</language>
			<language type="chr">เชอโรกี</language>
			<language type="chy">เชเยน</language>
			<language type="cmc">ภาษาชามิก</language>
			<language type="co">คอร์ซิกา</language>
			<language type="cop">คอปติก</language>
			<language type="cpe">ครีโอเลสและพิกกินส์ที่มาจากอังกฤษอื่นๆ</language>
			<language type="cpf">ครีโอเลสและพิกกินส์ที่มาจากฝรั่งเศสอื่นๆ</language>
			<language type="cpp">ครีโอเลสและพิกกินส์ที่มาจากโปรตุเกสอื่นๆ</language>
			<language type="cr">ครี</language>
			<language type="crh">ตุรกีไครเมีย</language>
			<language type="crp">คริโอลหรือพิดจิน</language>
			<language type="cs">เช็ก</language>
			<language type="csb">คาซูเบียน</language>
			<language type="cu">เชอร์ชสลาวิก</language>
			<language type="cus">ภาษาคูชิทิก</language>
			<language type="cv">ชูวาส</language>
			<language type="cy">เวลส์</language>
			<language type="da">เดนมาร์ก</language>
			<language type="dak">ดาโกทา</language>
			<language type="dar">ดาร์จวา</language>
			<language type="day">ดายัก</language>
			<language type="de">เยอรมัน</language>
			<language type="de_AT">เยอรมัน - ออสเตรีย</language>
			<language type="de_CH">เยอรมันสูง (สวิส)</language>
			<language type="del">เดลาแวร์</language>
			<language type="den">สลาฟ</language>
			<language type="dgr">ดอจริบ</language>
			<language type="din">ดินกา</language>
			<language type="doi">ดอจริ</language>
			<language type="dra">ภาษาดราวิเดียน</language>
			<language type="dsb">ซอร์เบียนต่ำ</language>
			<language type="dua">ดัวลา</language>
			<language type="dum">ดัตช์กลาง</language>
			<language type="dv">ดิเวฮิ</language>
			<language type="dyu">ดิวลา</language>
			<language type="dz">ดซองคา</language>
			<language type="ee">เอเว</language>
			<language type="efi">อีฟิก</language>
			<language type="egy">อียิปต์โบราณ</language>
			<language type="eka">อีกาจุก</language>
			<language type="el">กรีก</language>
			<language type="elx">อีลาไมต์</language>
			<language type="en">อังกฤษ</language>
			<language type="en_AU">อังกฤษ - ออสเตรเลีย</language>
			<language type="en_CA">อังกฤษ - แคนาดา</language>
			<language type="en_GB">อังกฤษ - สหราชอาณาจักร</language>
			<language type="en_US">อังกฤษ - อเมริกัน</language>
			<language type="enm">อังกฤษกลาง</language>
			<language type="eo">เอสเปอรันโต</language>
			<language type="es">สเปน</language>
			<language type="es_419">สเปน (ละตินอเมริกา)</language>
			<language type="es_ES">สเปน (ไอบีเรีย)</language>
			<language type="et">เอสโตเนีย</language>
			<language type="eu">บาสก์</language>
			<language type="ewo">อีวันโด</language>
			<language type="fa">เปอร์เซีย</language>
			<language type="fan">ฟาง</language>
			<language type="fat">ฟันติ</language>
			<language type="ff">ฟูลาฮ์</language>
			<language type="fi">ฟินแลนด์</language>
			<language type="fil">ฟิลิปปินส์</language>
			<language type="fiu">ฟินโน-อักเรียน</language>
			<language type="fj">ฟิจิ</language>
			<language type="fo">ฟาโรส</language>
			<language type="fon">ฟอน</language>
			<language type="fr">ฝรั่งเศส</language>
			<language type="fr_CH">ฝรั่งเศส (สวิส)</language>
			<language type="frm">ฝรั่งเศสกลาง</language>
			<language type="fro">ฝรั่งเศสโบราณ</language>
			<language type="frr">ฟริเซียนเหนือ</language>
			<language type="frs">ฟริเซียนตะวันออก</language>
			<language type="fur">เฟรียเลียน</language>
			<language type="fy">ฟริเซียนตะวันตก</language>
			<language type="ga">ไอริช</language>
			<language type="gaa">กา</language>
			<language type="gay">กาโย</language>
			<language type="gba">กบายา</language>
			<language type="gd">สก็อตส์เกลิค</language>
			<language type="gem">ภาษาเจอร์เมนิก</language>
			<language type="gez">กีซ</language>
			<language type="gil">กิลเบอร์ทิส</language>
			<language type="gl">กาลิเซีย</language>
			<language type="gmh">เยอรมันสูงกลาง</language>
			<language type="gn">กัวรานี</language>
			<language type="goh">เยอรมันสูงโบราณ</language>
			<language type="gon">กอนดิ</language>
			<language type="gor">กอรอนทาโล</language>
			<language type="got">โกธิก</language>
			<language type="grb">เกรโบ</language>
			<language type="grc">กรีกโบราณ</language>
			<language type="gsw">เยอรมันสวิส</language>
			<language type="gu">คุชราต</language>
			<language type="gv">มานซ์</language>
			<language type="gwi">กวิชอิน</language>
			<language type="ha">โฮซา</language>
			<language type="hai">ไฮดา</language>
			<language type="haw">ฮาวาย</language>
			<language type="he">ฮิบรู</language>
			<language type="hi">ฮินดี</language>
			<language type="hil">ไฮลิเกนอน</language>
			<language type="him">ฮิมาชาลิ</language>
			<language type="hit">ฮิตไตท์</language>
			<language type="hmn">ม้ง</language>
			<language type="ho">ฮิริโมทุ</language>
			<language type="hr">โครเอเชีย</language>
			<language type="hsb">ซอร์เบียนบน</language>
			<language type="ht">เฮติ</language>
			<language type="hu">ฮังการี</language>
			<language type="hup">ฮูพา</language>
			<language type="hy">อาร์เมเนีย</language>
			<language type="hz">เฮเรโร</language>
			<language type="ia">ภาษากลางที่ใช้ในการสื่อสารระหว่างประเทศ</language>
			<language type="iba">อิบาน</language>
			<language type="id">อินโดนีเชีย</language>
			<language type="ie">อินเตอร์ลิงค์</language>
			<language type="ig">อิกโบ</language>
			<language type="ii">เสฉวนยิ</language>
			<language type="ijo">อิโจ</language>
			<language type="ik">ไอนูเปียก</language>
			<language type="ilo">อิโลโก</language>
			<language type="inc">ภาษาอินดิก</language>
			<language type="ine">ภาษาอินโด-ยูโรเปียน</language>
			<language type="inh">อิงกุช</language>
			<language type="io">อิโด</language>
			<language type="ira">อิหร่าน</language>
			<language type="iro">ภาษาอิโรกัวเอียน</language>
			<language type="is">ไอซแลนดิก</language>
			<language type="it">อิตาลี</language>
			<language type="iu">ไอนุกติตัท</language>
			<language type="ja">ญี่ปุ่น</language>
			<language type="jbo">โลจบัน</language>
			<language type="jpr">ยิว-เปอร์เซีย</language>
			<language type="jrb">ยิว-อาหรับ</language>
			<language type="jv">ชวา</language>
			<language type="ka">จอร์เจีย</language>
			<language type="kaa">การา-กาลพาก</language>
			<language type="kab">กาไบล</language>
			<language type="kac">กะฉิ่น</language>
			<language type="kam">คัมบา</language>
			<language type="kar">กะเหรี่ยง</language>
			<language type="kaw">กาวิ</language>
			<language type="kbd">คาร์บาเดีย</language>
			<language type="kfo">โคโร</language>
			<language type="kg">คองโก</language>
			<language type="kha">คาสิ</language>
			<language type="khi">ภาษาคอยสัน</language>
			<language type="kho">คอทานิส</language>
			<language type="ki">กิกุยุ</language>
			<language type="kj">กวนยามา</language>
			<language type="kk">คาซัค</language>
			<language type="kl">กรีนแลนด์ดิค</language>
			<language type="km">เขมร</language>
			<language type="kmb">คิมบุนดู</language>
			<language type="kn">กันนาดา</language>
			<language type="ko">เกาหลี</language>
			<language type="kok">กอนกานี</language>
			<language type="kos">กอสราเอียน</language>
			<language type="kpe">กเปลเล</language>
			<language type="kr">คานูรี</language>
			<language type="krc">คาราไช-บัลการ์</language>
			<language type="kro">กรุ</language>
			<language type="kru">กุรุก</language>
			<language type="ks">กัศมีร์</language>
			<language type="ku">เคิร์ด</language>
			<language type="kum">กุมิก</language>
			<language type="kut">กุเทไน</language>
			<language type="kv">โกมิ</language>
			<language type="kw">คอร์นิส</language>
			<language type="ky">เคอร์กิซ</language>
			<language type="la">ละติน</language>
			<language type="lad">ลาดิโน</language>
			<language type="lah">ลาฮ์นดา</language>
			<language type="lam">แลมบา</language>
			<language type="lb">ลักเซมเบิร์ก</language>
			<language type="lez">เลซเกียน</language>
			<language type="lg">กานดา</language>
			<language type="li">ลิมเบิร์ก</language>
			<language type="ln">ลิงกาลา</language>
			<language type="lo">ลาว</language>
			<language type="lol">มองโก</language>
			<language type="loz">โลซิ</language>
			<language type="lt">ลิทัวเนีย</language>
			<language type="lu">ลูบา-กาตองกา</language>
			<language type="lua">ลูบา-ลูลัว</language>
			<language type="lui">ลุยเซโน</language>
			<language type="lun">ลันดา</language>
			<language type="luo">ลัว</language>
			<language type="lus">ลูไช</language>
			<language type="lv">ลัตเวีย</language>
			<language type="mad">มาดูริส</language>
			<language type="mag">มากาฮิ</language>
			<language type="mai">ไมถิลี</language>
			<language type="mak">มากาซาร์</language>
			<language type="man">แมนดินโก</language>
			<language type="map">ออสโทรนีเซีย</language>
			<language type="mas">มาไซ</language>
			<language type="mdf">มอกชา</language>
			<language type="mdr">มานดาร์</language>
			<language type="men">เมนเด</language>
			<language type="mg">มาลากาซี</language>
			<language type="mga">ไอริชกลาง</language>
			<language type="mh">มาร์แชลลิส</language>
			<language type="mi">เมารี</language>
			<language type="mic">มิกแมก</language>
			<language type="min">มินางกาเบา</language>
			<language type="mis">ภาษาอื่นๆ</language>
			<language type="mk">มาซิโดเนีย</language>
			<language type="mkh">ภาษามอญ-เขมร</language>
			<language type="ml">มาลายาลัม</language>
			<language type="mn">มองโกล</language>
			<language type="mnc">แมนจู</language>
			<language type="mni">มณีปุริ</language>
			<language type="mno">ภาษามาโนโบ</language>
			<language type="mo">โมดาเวีย</language>
			<language type="moh">โมฮอว์ก</language>
			<language type="mos">มอสสิ</language>
			<language type="mr">มาราที</language>
			<language type="ms">มลายู</language>
			<language type="mt">มอลตา</language>
			<language type="mul">หลายภาษา</language>
			<language type="mun">ภาษามันดา</language>
			<language type="mus">ครีก</language>
			<language type="mwl">มิรันดีส</language>
			<language type="mwr">มาร์วารี</language>
			<language type="my">พม่า</language>
			<language type="myn">ภาษามายัน</language>
			<language type="myv">อิร์ซยา</language>
			<language type="na">นอรู</language>
			<language type="nah">นาฮวตล์</language>
			<language type="nai">อเมริกันอินเดียนเหนืออื่นๆ</language>
			<language type="nap">เนียโพลิแทน</language>
			<language type="nb">นอร์เวย์บอกมอล</language>
			<language type="nd">เอ็นเดเบลีเหนือ</language>
			<language type="nds">เยอรมันตอนเหนือ</language>
			<language type="ne">เนปาล</language>
			<language type="new">เนวาริ</language>
			<language type="ng">ดองกา</language>
			<language type="nia">เนีส</language>
			<language type="nic">ภาษาไนเจอร์-กอร์โดฟาเนียน</language>
			<language type="niu">ไนอีน</language>
			<language type="nl">ดัตช์</language>
			<language type="nl_BE">เฟลมิช</language>
			<language type="nn">นอร์เวย์ไนนอรส์ก</language>
			<language type="no">นอร์เวย์</language>
			<language type="nog">โนไก</language>
			<language type="non">นอร์สโบราณ</language>
			<language type="nqo">เอ็นโก</language>
			<language type="nr">เอ็นเดเบลีใต้</language>
			<language type="nso">โซโทเหนือ</language>
			<language type="nub">ภาษานูเบียน</language>
			<language type="nv">นาวาโฮ</language>
			<language type="nwc">เนวาริคลาสสิก</language>
			<language type="ny">เนียนจา; ชิเชวา; เชวา</language>
			<language type="nym">เนียมเวซี</language>
			<language type="nyn">เนียโกเล</language>
			<language type="nyo">เนียโร</language>
			<language type="nzi">นซิมา</language>
			<language type="oc">อ็อกซิตัน</language>
			<language type="oj">โอจิบเว</language>
			<language type="om">โอโรโม</language>
			<language type="or">โอริยา</language>
			<language type="os">ออสเซทิก</language>
			<language type="osa">โอซาเก</language>
			<language type="ota">ตุรกีออตโดมัน</language>
			<language type="oto">ภาษาโอโทเมียน</language>
			<language type="pa">ปัญจาบ</language>
			<language type="paa">ภาษาปาปวน</language>
			<language type="pag">พันกาซินัน</language>
			<language type="pal">พาฮลาวิ</language>
			<language type="pam">พามพานกา</language>
			<language type="pap">พาเพียเมนโท</language>
			<language type="pau">พาลาอวน</language>
			<language type="peo">เปอร์เซียโบราณ</language>
			<language type="phi">ภาษาฟิลิปปิน</language>
			<language type="phn">ฟินิเชียน</language>
			<language type="pi">บาลี</language>
			<language type="pl">โปแลนด์</language>
			<language type="pon">โพฮ์นเพเอียน</language>
			<language type="pra">ภาษาปรากฤต</language>
			<language type="pro">โพรเวนคอลโบราณ</language>
			<language type="ps">พาชตู</language>
			<language type="pt">โปรตุเกส</language>
			<language type="pt_BR">โปรตุเกส - บราซิล</language>
			<language type="pt_PT">โปรตุเกส (ไอบีเรีย)</language>
			<language type="qu">เกซัว</language>
			<language type="raj">ราจาสธานิ</language>
			<language type="rap">ราพานุย</language>
			<language type="rar">ราโรท็องกัน</language>
			<language type="rm">เรโต-โรแมนซ์</language>
			<language type="rn">คิรันดี</language>
			<language type="ro">โรมาเนีย</language>
			<language type="roa">ภาษาโรมานซ์</language>
			<language type="rom">โรมานี</language>
			<language type="root">ราก</language>
			<language type="ru">รัสเซีย</language>
			<language type="rup">อาโรมาเนียน</language>
			<language type="rw">คินยาร์วันดา</language>
			<language type="sa">สันสกฤต</language>
			<language type="sad">ซันดาเว</language>
			<language type="sah">ยากุต</language>
			<language type="sai">ภาษาอเมริกันอินเดียนใต้</language>
			<language type="sal">ภาษาซาลิชัน</language>
			<language type="sam">ซามาริทันอราเมอิก</language>
			<language type="sas">ซาซัก</language>
			<language type="sat">สันตาลี</language>
			<language type="sc">ซาร์ดิเนีย</language>
			<language type="scn">ซิซิเลียน</language>
			<language type="sco">สกอตส์</language>
			<language type="sd">สินธุ</language>
			<language type="se">ซามิเหนือ</language>
			<language type="sel">เซลกุป</language>
			<language type="sem">ภาษาเซมิติก</language>
			<language type="sg">แซงโก</language>
			<language type="sga">ไอริชโบราณ</language>
			<language type="sgn">ภาษาสัญญาณ</language>
			<language type="sh">เซอร์โบ-โครเอเชีย</language>
			<language type="shn">ชาน</language>
			<language type="si">สิงหล</language>
			<language type="sid">ซิดาโม</language>
			<language type="sio">ภาษาซิอวน</language>
			<language type="sit">ภาษาซิโน-ทิเบตัน</language>
			<language type="sk">สโลวัก</language>
			<language type="sl">สโลวีเนีย</language>
			<language type="sla">ภาษาสลาวิก</language>
			<language type="sm">ซามัว</language>
			<language type="sma">ซามิใต้</language>
			<language type="smi">ภาษาซามิ</language>
			<language type="smj">ลูลซามิ</language>
			<language type="smn">อินาริซามิ</language>
			<language type="sms">สกอลตซามิ</language>
			<language type="sn">โชนา</language>
			<language type="snk">โซนินเก</language>
			<language type="so">โซมาลี</language>
			<language type="sog">ซอจเดียน</language>
			<language type="son">ซองไฮ</language>
			<language type="sq">แอลเบเนีย</language>
			<language type="sr">เซอร์เบีย</language>
			<language type="srn">ซรานานทองโก</language>
			<language type="srr">เซเรอร์</language>
			<language type="ss">สวาติ</language>
			<language type="ssa">ภาษานิโล-ซาฮารัน</language>
			<language type="st">โซโทใต้</language>
			<language type="su">ซุนดา</language>
			<language type="suk">ซุกุมา</language>
			<language type="sus">ซูซู</language>
			<language type="sux">สุเมเรียน</language>
			<language type="sv">สวีเดน</language>
			<language type="sw">สวาฮีลี</language>
			<language type="syr">ไซเรียก</language>
			<language type="ta">ทมิฬ</language>
			<language type="tai">ภาษาไท</language>
			<language type="te">เตลูกู</language>
			<language type="tem">ทิมเน</language>
			<language type="ter">เทเรโน</language>
			<language type="tet">เตตุม</language>
			<language type="tg">ทาจิก</language>
			<language type="th">ไทย</language>
			<language type="ti">ทิกรินยา</language>
			<language type="tig">ทิจเร</language>
			<language type="tiv">ทิฟ</language>
			<language type="tk">เติร์ก</language>
			<language type="tkl">โทเคลัว</language>
			<language type="tl">ตากาล็อก</language>
			<language type="tlh">คลินกอน</language>
			<language type="tli">ทลิงกิต</language>
			<language type="tmh">ทามาเชก</language>
			<language type="tn">สวานา</language>
			<language type="to">ตองกา</language>
			<language type="tog">ตองกา - ไนซา</language>
			<language type="tpi">ท็อกพิซิน</language>
			<language type="tr">ตุรกี</language>
			<language type="ts">ซองกา</language>
			<language type="tsi">ซิมเชียน</language>
			<language type="tt">ตาตาร์</language>
			<language type="tum">ทุมบูกา</language>
			<language type="tup">ภาษาทุพิ</language>
			<language type="tut">ภาษาอัลตาอิก</language>
			<language type="tvl">ตูวาลู</language>
			<language type="tw">ทวิ</language>
			<language type="ty">ตาฮิเตียน</language>
			<language type="tyv">ทูวิเนียน</language>
			<language type="udm">อัดมาร์ต</language>
			<language type="ug">อุยกัว</language>
			<language type="uga">ยูการิติก</language>
			<language type="uk">ยูเครน</language>
			<language type="umb">อุมบุนดู</language>
			<language type="und">ไม่มีข้อมูล</language>
			<language type="ur">อูรดู</language>
			<language type="uz">อุซเบก</language>
			<language type="vai">ไว</language>
			<language type="ve">เวนดา</language>
			<language type="vi">เวียดนาม</language>
			<language type="vo">โวลาพุก</language>
			<language type="vot">โวทิก</language>
			<language type="wa">วอลลูน</language>
			<language type="wak">ภาษาวากาชาน</language>
			<language type="wal">วาลาโม</language>
			<language type="war">วาเรย์</language>
			<language type="was">วาโช</language>
			<language type="wen">ภาษาซอร์เบียน</language>
			<language type="wo">โวลอฟ</language>
			<language type="xal">กาลมิก</language>
			<language type="xh">โซสา</language>
			<language type="yao">เย้า</language>
			<language type="yap">แยป</language>
			<language type="yi">ยิดดิช</language>
			<language type="yo">โยรูบา</language>
			<language type="ypk">ภาษายูพิก</language>
			<language type="za">จวง</language>
			<language type="zap">ซาโปเทก</language>
			<language type="zen">เซนากา</language>
			<language type="zh">จีน</language>
			<language type="zh_Hans">จีนประยุกต์</language>
			<language type="zh_Hant">จีนดั้งเดิม</language>
			<language type="znd">ซานเด</language>
			<language type="zu">ซูลู</language>
			<language type="zun">ซูนิ</language>
			<language type="zxx">ไม่มีข้อมูลภาษา</language>
		</languages>
		<scripts>
			<script type="Arab">อาหรับ</script>
			<script type="Armn">อาร์เมเนีย</script>
			<script type="Avst">อเวสตัน</script>
			<script type="Bali">บาหลี</script>
			<script type="Batk">บาตัก</script>
			<script type="Beng">เบงกาลี</script>
			<script type="Blis">บลิสซิมโบลส์</script>
			<script type="Bopo">โบโพโมโฟ</script>
			<script type="Brah">บรามี</script>
			<script type="Brai">เบรลล์</script>
			<script type="Bugi">บูกิส</script>
			<script type="Buhd">บูฮิด</script>
			<script type="Cans">สัญลักษณ์ชนเผ่าพื้นเมืองแคนาดา</script>
			<script type="Cari">คาเรีย</script>
			<script type="Cham">จาม</script>
			<script type="Cher">เชอโรกี</script>
			<script type="Cirt">เซิร์ต</script>
			<script type="Copt">คอปติก</script>
			<script type="Cprt">ไซเปรียท</script>
			<script type="Cyrl">ซีริลลิก</script>
			<script type="Cyrs">ซีริลลิกโบสถ์สลาโวนิกโบราณ</script>
			<script type="Deva">เทวนาครี</script>
			<script type="Dsrt">เดเซเรท</script>
			<script type="Egyd">ดีโมติกอียิปต์</script>
			<script type="Egyh">เฮียราติกอียิปต์</script>
			<script type="Egyp">เฮียโรกลิฟส์อียิปต์</script>
			<script type="Ethi">เอธิโอเปีย</script>
			<script type="Geok">คัตซูรี - อาซอมทัฟรูลีและนูสคูรี</script>
			<script type="Geor">จอร์เจีย</script>
			<script type="Glag">กลาโกลิติก</script>
			<script type="Goth">โกธิก</script>
			<script type="Grek">กรีก</script>
			<script type="Gujr">คุชราต</script>
			<script type="Guru">เกอร์มูคิ</script>
			<script type="Hang">ฮันกูล</script>
			<script type="Hani">ฮั่น</script>
			<script type="Hano">ฮานูโนโอ</script>
			<script type="Hans">ฮั่นประยุกต์</script>
			<script type="Hant">ฮั่นดั้งเดิม</script>
			<script type="Hebr">ฮีบรู</script>
			<script type="Hira">ฮิรางานะ</script>
			<script type="Hmng">พาฮาวมอง</script>
			<script type="Hrkt">กาตะงานะหรือฮิรางานะ</script>
			<script type="Hung">ฮังการีโบราณ</script>
			<script type="Inds">อินดัส - ฮารัปพัน</script>
			<script type="Ital">อิตาลีโบราณ</script>
			<script type="Java">ชวา</script>
			<script type="Jpan">ญี่ปุ่น</script>
			<script type="Kali">คยาห์</script>
			<script type="Kana">กาตะกานะ</script>
			<script type="Khar">คาโรสติ</script>
			<script type="Khmr">เขมร</script>
			<script type="Knda">กันนาดา</script>
			<script type="Kore">เกาหลี</script>
			<script type="Lana">ล้านนา</script>
			<script type="Laoo">ลาว</script>
			<script type="Latf">ลาติน - ฟรังเตอร์</script>
			<script type="Latg">ลาติน - แกลิก</script>
			<script type="Latn">ลาติน</script>
			<script type="Lepc">เลปชา</script>
			<script type="Limb">ลิมบู</script>
			<script type="Lina">ลีเนียร์เอ</script>
			<script type="Linb">ลีเนียร์บี</script>
			<script type="Lyci">ไลเซีย</script>
			<script type="Lydi">ลีเดีย</script>
			<script type="Mand">แมนแดน</script>
			<script type="Maya">มายันฮีโรกลิฟส์</script>
			<script type="Mero">เมโรติก</script>
			<script type="Mlym">มาลายาลัม</script>
			<script type="Mong">มองโกเลีย</script>
			<script type="Moon">มูน</script>
			<script type="Mtei">มีเตยมาเยก</script>
			<script type="Mymr">พม่า</script>
			<script type="Nkoo">เอ็นโก</script>
			<script type="Ogam">โอคัม</script>
			<script type="Orkh">ออร์คอน</script>
			<script type="Orya">โอริยา</script>
			<script type="Osma">ออสมันยา</script>
			<script type="Perm">เปอร์มิกโบราณ</script>
			<script type="Phag">ฟากส์-พา</script>
			<script type="Phlv">บุ๊กปะห์ลาวี</script>
			<script type="Phnx">ฟินิเชียน</script>
			<script type="Plrd">สัทศาสตร์พอลลาร์ด</script>
			<script type="Qaai">อินเฮอริต</script>
			<script type="Rjng">รจัง</script>
			<script type="Roro">รองโกรองโก</script>
			<script type="Runr">รูนิก</script>
			<script type="Samr">ซามาริทัน</script>
			<script type="Sara">ซาราทิ</script>
			<script type="Shaw">ชาเวียน</script>
			<script type="Sinh">สิงหล</script>
			<script type="Sund">ซุนดา</script>
			<script type="Sylo">ไซโลทินากรี</script>
			<script type="Syrc">ซีเรียค</script>
			<script type="Syre">ซีเรึยคเอสทราจีโล</script>
			<script type="Syrj">ซีเรียคตะวันตก</script>
			<script type="Syrn">ซีเรียคตะวันออก</script>
			<script type="Tagb">ตักบันวา</script>
			<script type="Tale">ไทเล</script>
			<script type="Talu">ไทลื้อใหม่</script>
			<script type="Taml">ทมิฬ</script>
			<script type="Telu">เทลูกู</script>
			<script type="Teng">เทงวอร์</script>
			<script type="Tfng">ทิฟินาค</script>
			<script type="Tglg">ตากาล็อก</script>
			<script type="Thaa">ทานา</script>
			<script type="Thai">ไทย</script>
			<script type="Tibt">ทิเบต</script>
			<script type="Ugar">ยูการิติก</script>
			<script type="Vaii">ไว</script>
			<script type="Visp">คำพูดที่มองเห็นได้</script>
			<script type="Xpeo">เปอร์เซียโบราณ</script>
			<script type="Xsux">อักษรรูปลิ่มสุเมเรีย-อัคคาเดีย</script>
			<script type="Yiii">ยิ</script>
			<script type="Zxxx">ไม่มีภาษาเขียน</script>
			<script type="Zyyy">สามัญ</script>
			<script type="Zzzz">ไม่ทราบภาษา</script>
		</scripts>
		<territories>
			<territory type="001">โลก</territory>
			<territory type="002">แอฟริกา</territory>
			<territory type="003">อเมริกาเหนือ</territory>
			<territory type="005">อเมริกาใต้</territory>
			<territory type="009">โอเชียเนีย</territory>
			<territory type="011">แอฟริกาตะวันตก</territory>
			<territory type="013">อเมริกากลาง</territory>
			<territory type="014">แอฟริกาตะวันออก</territory>
			<territory type="015">แอฟริกาเหนือ</territory>
			<territory type="017">แอฟริกากลาง</territory>
			<territory type="018">แอฟริกาใต้ [018]</territory>
			<territory type="019">อเมริกา</territory>
			<territory type="021">อเมริกาตอนเหนือ</territory>
			<territory type="029">แคริบเบียน</territory>
			<territory type="030">เอเชียตะวันออก</territory>
			<territory type="034">เอเชียใต้</territory>
			<territory type="035">เอเชียตะวันออกเฉียงใต้</territory>
			<territory type="039">ยุโรปใต้</territory>
			<territory type="053">ออสเตรเลียและนิวซีแลนด์</territory>
			<territory type="054">เมลานีเซีย</territory>
			<territory type="057">เขตไมโครนีเซีย</territory>
			<territory type="061">โปลินีเซีย</territory>
			<territory type="062">เอเชียกลางตอนใต้</territory>
			<territory type="142">เอเชีย</territory>
			<territory type="143">เอเชียกลาง</territory>
			<territory type="145">เอเชียตะวันตก</territory>
			<territory type="150">ยุโรป</territory>
			<territory type="151">ยุโรปตะวันออก</territory>
			<territory type="154">ยุโรปเหนือ</territory>
			<territory type="155">ยุโรปตะวันตก</territory>
			<territory type="172">เครือรัฐอิสระ</territory>
			<territory type="419">ละตินอเมริกาและคาริบเบียน</territory>
			<territory type="830">หมู่เกาะแชนเนล</territory>
			<territory type="AD">อันดอร์รา</territory>
			<territory type="AE">สหรัฐอาหรับเอมิเรตส์</territory>
			<territory type="AF">อัฟกานิสถาน</territory>
			<territory type="AG">แอนติกาและบาร์บูดา</territory>
			<territory type="AI">แองกวิลลา</territory>
			<territory type="AL">แอลเบเนีย</territory>
			<territory type="AM">อาร์เมเนีย</territory>
			<territory type="AN">เนเธอร์แลนด์แอนทิลลิส</territory>
			<territory type="AO">แองโกลา</territory>
			<territory type="AQ">แอนตาร์กติกา</territory>
			<territory type="AR">อาร์เจนตินา</territory>
			<territory type="AS">อเมริกันซามัว</territory>
			<territory type="AT">ออสเตรีย</territory>
			<territory type="AU">ออสเตรเลีย</territory>
			<territory type="AW">อารูบา</territory>
			<territory type="AX">หมู่เกาะโอลันด์</territory>
			<territory type="AZ">อาเซอร์ไบจาน</territory>
			<territory type="BA">บอสเนียและเฮอร์เซโกวีนา</territory>
			<territory type="BB">บาร์เบโดส</territory>
			<territory type="BD">บังกลาเทศ</territory>
			<territory type="BE">เบลเยียม</territory>
			<territory type="BF">บูร์กินาฟาโซ</territory>
			<territory type="BG">บัลแกเรีย</territory>
			<territory type="BH">บาห์เรน</territory>
			<territory type="BI">บุรุนดี</territory>
			<territory type="BJ">เบนิน</territory>
			<territory type="BL">เซ‹‹นต์บาร์เธเลมี</territory>
			<territory type="BM">เบอร์มิวดา</territory>
			<territory type="BN">บรูไน</territory>
			<territory type="BO">โบลิเวีย</territory>
			<territory type="BR">บราซิล</territory>
			<territory type="BS">บาฮามาส</territory>
			<territory type="BT">ภูฏาน</territory>
			<territory type="BV">เกาะบูเวต</territory>
			<territory type="BW">บอตสวานา</territory>
			<territory type="BY">เบลารุส</territory>
			<territory type="BZ">เบลีซ</territory>
			<territory type="CA">แคนาดา</territory>
			<territory type="CC">หมู่เกาะโคโคส (คีลิง)</territory>
			<territory type="CD">คองโก-กินชาซา</territory>
			<territory type="CF">สาธารณรัฐแอฟริกากลาง</territory>
			<territory type="CG">คองโก-บราซซาวิล</territory>
			<territory type="CH">สวิตเซอร์แลนด์</territory>
			<territory type="CI">โกตดิวัวร์</territory>
			<territory type="CK">หมู่เกาะคุก</territory>
			<territory type="CL">ชิลี</territory>
			<territory type="CM">แคเมอรูน</territory>
			<territory type="CN">จีน</territory>
			<territory type="CO">โคลอมเบีย</territory>
			<territory type="CR">คอสตาริกา</territory>
			<territory type="CS">เซอร์เบียและมอนเตเนโกร</territory>
			<territory type="CU">คิวบา</territory>
			<territory type="CV">เคปเวิร์ด</territory>
			<territory type="CX">เกาะคริสต์มาส</territory>
			<territory type="CY">ไซปรัส</territory>
			<territory type="CZ">สาธารณรัฐเช็ก</territory>
			<territory type="DE">เยอรมนี</territory>
			<territory type="DJ">จิบูตี</territory>
			<territory type="DK">เดนมาร์ก</territory>
			<territory type="DM">โดมินิกา</territory>
			<territory type="DO">สาธารณรัฐโดมินิกัน</territory>
			<territory type="DZ">แอลจีเรีย</territory>
			<territory type="EC">เอกวาดอร์</territory>
			<territory type="EE">เอสโตเนีย</territory>
			<territory type="EG">อียิปต์</territory>
			<territory type="EH">ซาฮาราตะวันตก</territory>
			<territory type="ER">เอริเทรีย</territory>
			<territory type="ES">สเปน</territory>
			<territory type="ET">เอธิโอเปีย</territory>
			<territory type="FI">ฟินแลนด์</territory>
			<territory type="FJ">ฟิจิ</territory>
			<territory type="FK">หมู่เกาะฟอล์กแลนด์</territory>
			<territory type="FM">ไมโครนีเซีย</territory>
			<territory type="FO">หมู่เกาะฟาโร</territory>
			<territory type="FR">ฝรั่งเศส</territory>
			<territory type="GA">กาบอง</territory>
			<territory type="GB">สหราชอาณาจักร</territory>
			<territory type="GD">เกรนาดา</territory>
			<territory type="GE">จอร์เจีย</territory>
			<territory type="GF">เฟรนช์เกียนา</territory>
			<territory type="GG">เกิร์นซีย์</territory>
			<territory type="GH">กานา</territory>
			<territory type="GI">ยิบรอลตาร์</territory>
			<territory type="GL">กรีนแลนด์</territory>
			<territory type="GM">แกมเบีย</territory>
			<territory type="GN">กินี</territory>
			<territory type="GP">กวาเดอลูป</territory>
			<territory type="GQ">อิเควทอเรียลกินี</territory>
			<territory type="GR">กรีซ</territory>
			<territory type="GS">เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช</territory>
			<territory type="GT">กัวเตมาลา</territory>
			<territory type="GU">กวม</territory>
			<territory type="GW">กินี-บิสเซา</territory>
			<territory type="GY">กายอานา</territory>
			<territory type="HK">ฮ่องกง</territory>
			<territory type="HM">เกาะเฮิร์ดและหมู่เกาะแมกดอนัลด์</territory>
			<territory type="HN">ฮอนดูรัส</territory>
			<territory type="HR">โครเอเชีย</territory>
			<territory type="HT">เฮติ</territory>
			<territory type="HU">ฮังการี</territory>
			<territory type="ID">อินโดนีเซีย</territory>
			<territory type="IE">ไอร์แลนด์</territory>
			<territory type="IL">อิสราเอล</territory>
			<territory type="IM">เกาะแมน</territory>
			<territory type="IN">อินเดีย</territory>
			<territory type="IO">บริติชอินเดียนโอเชียนเทร์ริทอรี</territory>
			<territory type="IQ">อิรัก</territory>
			<territory type="IR">อิหร่าน</territory>
			<territory type="IS">ไอซ์แลนด์</territory>
			<territory type="IT">อิตาลี</territory>
			<territory type="JE">เจอร์ซีย์</territory>
			<territory type="JM">จาเมกา</territory>
			<territory type="JO">จอร์แดน</territory>
			<territory type="JP">ญี่ปุ่น</territory>
			<territory type="KE">เคนยา</territory>
			<territory type="KG">คีร์กีซสถาน</territory>
			<territory type="KH">กัมพูชา</territory>
			<territory type="KI">คิริบาตี</territory>
			<territory type="KM">คอโมโรส</territory>
			<territory type="KN">เซนต์คิตส์และเนวิส</territory>
			<territory type="KP">เกาหลีเหนือ</territory>
			<territory type="KR">เกาหลีใต้</territory>
			<territory type="KW">คูเวต</territory>
			<territory type="KY">หมู่เกาะเคย์แมน</territory>
			<territory type="KZ">คาซัคสถาน</territory>
			<territory type="LA">ลาว</territory>
			<territory type="LB">เลบานอน</territory>
			<territory type="LC">เซนต์ลูเซีย</territory>
			<territory type="LI">ลิกเตนสไตน์</territory>
			<territory type="LK">ศรีลังกา</territory>
			<territory type="LR">ไลบีเรีย</territory>
			<territory type="LS">เลโซโท</territory>
			<territory type="LT">ลิทัวเนีย</territory>
			<territory type="LU">ลักเซมเบิร์ก</territory>
			<territory type="LV">ลัตเวีย</territory>
			<territory type="LY">ลิเบีย</territory>
			<territory type="MA">โมร็อกโก</territory>
			<territory type="MC">โมนาโก</territory>
			<territory type="MD">มอลโดวา</territory>
			<territory type="ME">มอนเตเนโกร</territory>
			<territory type="MF">เซนต์มาติน</territory>
			<territory type="MG">มาดากัสการ์</territory>
			<territory type="MH">หมู่เกาะมาร์แชลล์</territory>
			<territory type="MK">มาซิโดเนีย</territory>
			<territory type="ML">มาลี</territory>
			<territory type="MM">พม่า</territory>
			<territory type="MN">มองโกเลีย</territory>
			<territory type="MO">มาเก๊า</territory>
			<territory type="MP">หมู่เกาะนอร์เทิร์นมาเรียนา</territory>
			<territory type="MQ">มาร์ตินีก</territory>
			<territory type="MR">มอริเตเนีย</territory>
			<territory type="MS">มอนต์เซอร์รัต</territory>
			<territory type="MT">มอลตา</territory>
			<territory type="MU">มอริเชียส</territory>
			<territory type="MV">มัลดีฟส์</territory>
			<territory type="MW">มาลาวี</territory>
			<territory type="MX">เม็กซิโก</territory>
			<territory type="MY">มาเลเซีย</territory>
			<territory type="MZ">โมซัมบิก</territory>
			<territory type="NA">นามิเบีย</territory>
			<territory type="NC">นิวแคลิโดเนีย</territory>
			<territory type="NE">ไนเจอร์</territory>
			<territory type="NF">เกาะนอร์ฟอล์ก</territory>
			<territory type="NG">ไนจีเรีย</territory>
			<territory type="NI">นิการากัว</territory>
			<territory type="NL">เนเธอร์แลนด์</territory>
			<territory type="NO">นอร์เวย์</territory>
			<territory type="NP">เนปาล</territory>
			<territory type="NR">นาอูรู</territory>
			<territory type="NU">นีอูเอ</territory>
			<territory type="NZ">นิวซีแลนด์</territory>
			<territory type="OM">โอมาน</territory>
			<territory type="PA">ปานามา</territory>
			<territory type="PE">เปรู</territory>
			<territory type="PF">เฟรนช์โพลีนีเซีย</territory>
			<territory type="PG">ปาปัวนิวกินี</territory>
			<territory type="PH">ฟิลิปปินส์</territory>
			<territory type="PK">ปากีสถาน</territory>
			<territory type="PL">โปแลนด์</territory>
			<territory type="PM">แซงปีแยร์และมีเกอลง</territory>
			<territory type="PN">พิตแคร์น</territory>
			<territory type="PR">เปอร์โตริโก</territory>
			<territory type="PS">ปาเลซติเนียนเทร์ริทอรี</territory>
			<territory type="PT">โปรตุเกส</territory>
			<territory type="PW">ปาเลา</territory>
			<territory type="PY">ปารากวัย</territory>
			<territory type="QA">กาตาร์</territory>
			<territory type="QO">เอาต์ไลอิงโอเชียเนีย</territory>
			<territory type="QU">สหภาพยุโรป</territory>
			<territory type="RE">เรอูเนียง</territory>
			<territory type="RO">โรมาเนีย</territory>
			<territory type="RS">เซอร์เบีย</territory>
			<territory type="RU">รัสเซีย</territory>
			<territory type="RW">รวันดา</territory>
			<territory type="SA">ซาอุดีอาระเบีย</territory>
			<territory type="SB">หมู่เกาะโซโลมอน</territory>
			<territory type="SC">เซเชลส์</territory>
			<territory type="SD">ซูดาน</territory>
			<territory type="SE">สวีเดน</territory>
			<territory type="SG">สิงคโปร์</territory>
			<territory type="SH">เซนต์เฮเลนา</territory>
			<territory type="SI">สโลวีเนีย</territory>
			<territory type="SJ">สฟาลบาร์และแจนมาเยน</territory>
			<territory type="SK">สโลวาเกีย</territory>
			<territory type="SL">เซียร์ราลีโอน</territory>
			<territory type="SM">ซานมารีโน</territory>
			<territory type="SN">เซเนกัล</territory>
			<territory type="SO">โซมาเลีย</territory>
			<territory type="SR">ซูรินาเม</territory>
			<territory type="ST">เซาตูเมและปรินซิปี</territory>
			<territory type="SV">เอลซัลวาดอร์</territory>
			<territory type="SY">ซีเรีย</territory>
			<territory type="SZ">สวาซิแลนด์</territory>
			<territory type="TC">หมู่เกาะเติกส์และหมู่เกาะเคคอส</territory>
			<territory type="TD">ชาด</territory>
			<territory type="TF">อาณาเขตทางใต้ของฝรั่งเศส</territory>
			<territory type="TG">โตโก</territory>
			<territory type="TH">ไทย</territory>
			<territory type="TJ">ทาจิกิสถาน</territory>
			<territory type="TK">โตเกเลา</territory>
			<territory type="TL">ติมอร์ตะวันออก</territory>
			<territory type="TM">เติร์กเมนิสถาน</territory>
			<territory type="TN">ตูนิเซีย</territory>
			<territory type="TO">ตองกา</territory>
			<territory type="TR">ตุรกี</territory>
			<territory type="TT">ตรินิแดดและโตเบโก</territory>
			<territory type="TV">ตูวาลู</territory>
			<territory type="TW">ไต้หวัน</territory>
			<territory type="TZ">แทนซาเนีย</territory>
			<territory type="UA">ยูเครน</territory>
			<territory type="UG">ยูกันดา</territory>
			<territory type="UM">หมู่เกาะสหรัฐไมเนอร์เอาต์ไลอิง</territory>
			<territory type="US">สหรัฐอเมริกา</territory>
			<territory type="UY">อุรุกวัย</territory>
			<territory type="UZ">อุซเบกิสถาน</territory>
			<territory type="VA">วาติกัน</territory>
			<territory type="VC">เซนต์วินเซนต์และเกรนาดีนส์</territory>
			<territory type="VE">เวเนซุเอลา</territory>
			<territory type="VG">หมู่เกาะบริติชเวอร์จิน</territory>
			<territory type="VI">ยูเอสเวอร์จินไอส์แลนด์</territory>
			<territory type="VN">เวียดนาม</territory>
			<territory type="VU">วานูอาตู</territory>
			<territory type="WF">วาลลิสและฟุตูนา</territory>
			<territory type="WS">ซามัว</territory>
			<territory type="YE">เยเมน</territory>
			<territory type="YT">มายอต</territory>
			<territory type="ZA">แอฟริกาใต้</territory>
			<territory type="ZM">แซมเบีย</territory>
			<territory type="ZW">ซิมบับเว</territory>
			<territory type="ZZ">ไม่ทราบ</territory>
		</territories>
		<variants>
			<variant type="1901">เยอรมันออร์โธกราฟีดั้งเดิม</variant>
			<variant type="1996">เยอรมันออร์โธกราฟีปี 1996</variant>
			<variant type="AREVELA">อาร์เมเนียตะวันออก</variant>
			<variant type="AREVMDA">อาร์เมเนียตะวันตก</variant>
			<variant type="FONIPA">สัทอักษรสากล</variant>
			<variant type="NEDIS">ภาษาพื้นเมืองนาทิโซเน</variant>
			<variant type="POLYTON">โพลีโทนิก</variant>
			<variant type="POSIX">คอมพิวเตอร์</variant>
			<variant type="REVISED">ออร์โธกราฟิปรับปรุง</variant>
			<variant type="ROZAJ">เรเซียน</variant>
			<variant type="SAAHO">ซาโฮ</variant>
		</variants>
		<keys>
			<key type="calendar">ปฏิทิน</key>
			<key type="collation">การเรียงลำดับ</key>
			<key type="currency">เงินตรา</key>
		</keys>
		<types>
			<type type="big5han" key="collation">เรียงตามอักษรจีนดั้งเดิม</type>
			<type type="buddhist" key="calendar">ปฏิทินพุทธ</type>
			<type type="chinese" key="calendar">ปฏิทินจีน</type>
			<type type="direct" key="collation">เรียงตามลำดับโดยตรง</type>
			<type type="gb2312han" key="collation">เรียงตามอักษรจีนประยุกต์</type>
			<type type="gregorian" key="calendar">ปฏิทินเกรกอเรียน</type>
			<type type="hebrew" key="calendar">ปฏิทินฮิบรู</type>
			<type type="indian" key="calendar">ปฏิทินแห่งชาติอินเดีย</type>
			<type type="islamic" key="calendar">ปฏิทินอิสลาม</type>
			<type type="islamic-civil" key="calendar">ปฏิทินอิสลามซีวิล</type>
			<type type="japanese" key="calendar">ปฏิทินญี่ปุ่น</type>
			<type type="phonebook" key="collation">เรียงตามสมุดโทรศัพท์</type>
			<type type="pinyin" key="collation">เรียงตามการถอดเสียงภาษาจีน</type>
			<type type="roc" key="calendar">ปฏิทินไต้หวัน</type>
			<type type="stroke" key="collation">เรียงตามการลากเส้น</type>
			<type type="traditional" key="collation">เรียงตามแบบดั้งเดิม</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">อเมริกัน</measurementSystemName>
			<measurementSystemName type="metric">เมตริก</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">{0}</codePattern>
			<codePattern type="script">{0}</codePattern>
			<codePattern type="territory">{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ฯ ๆ ๎ ็-ํ ก-ฮ ะ-ฺ เ-ๅ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200B a e g m n p q t]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<default choice="buddhist"/>
			<calendar type="buddhist">
				<eras>
					<eraAbbr>
						<era type="0">พ.ศ.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEEที่ d MMMM G yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H นาฬิกา m นาที ss วินาที</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H นาฬิกา m นาที</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyMM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="chinese">
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
			</calendar>
			<calendar type="coptic">
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ม.ค.</month>
							<month type="2">ก.พ.</month>
							<month type="3">มี.ค.</month>
							<month type="4">เม.ย.</month>
							<month type="5">พ.ค.</month>
							<month type="6">มิ.ย.</month>
							<month type="7">ก.ค.</month>
							<month type="8">ส.ค.</month>
							<month type="9">ก.ย.</month>
							<month type="10">ต.ค.</month>
							<month type="11">พ.ย.</month>
							<month type="12">ธ.ค.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">มกราคม</month>
							<month type="2">กุมภาพันธ์</month>
							<month type="3">มีนาคม</month>
							<month type="4">เมษายน</month>
							<month type="5">พฤษภาคม</month>
							<month type="6">มิถุนายน</month>
							<month type="7">กรกฎาคม</month>
							<month type="8">สิงหาคม</month>
							<month type="9">กันยายน</month>
							<month type="10">ตุลาคม</month>
							<month type="11">พฤศจิกายน</month>
							<month type="12">ธันวาคม</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ม.ค.</month>
							<month type="2">ก.พ.</month>
							<month type="3">มี.ค.</month>
							<month type="4">เม.ย.</month>
							<month type="5">พ.ค.</month>
							<month type="6">มิ.ย.</month>
							<month type="7">ก.ค.</month>
							<month type="8">ส.ค.</month>
							<month type="9">ก.ย.</month>
							<month type="10">ต.ค.</month>
							<month type="11">พ.ย.</month>
							<month type="12">ธ.ค.</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">อา.</day>
							<day type="mon">จ.</day>
							<day type="tue">อ.</day>
							<day type="wed">พ.</day>
							<day type="thu">พฤ.</day>
							<day type="fri">ศ.</day>
							<day type="sat">ส.</day>
						</dayWidth>
						<dayWidth type="narrow">
							<day type="thu">พฤ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">วันอาทิตย์</day>
							<day type="mon">วันจันทร์</day>
							<day type="tue">วันอังคาร</day>
							<day type="wed">วันพุธ</day>
							<day type="thu">วันพฤหัสบดี</day>
							<day type="fri">วันศุกร์</day>
							<day type="sat">วันเสาร์</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">อ</day>
							<day type="mon">จ</day>
							<day type="tue">อ</day>
							<day type="wed">พ</day>
							<day type="thu">พ</day>
							<day type="fri">ศ</day>
							<day type="sat">ส</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">ไตรมาส 1</quarter>
							<quarter type="2">ไตรมาส 2</quarter>
							<quarter type="3">ไตรมาส 3</quarter>
							<quarter type="4">ไตรมาส 4</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
				<eras>
					<eraNames>
						<era type="0">ปีก่อนคริสต์ศักราชที่</era>
						<era type="1">คริสต์ศักราช</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ปีก่อน ค.ศ. ที่</era>
						<era type="1">ค.ศ.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEEที่ d MMMM G yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H นาฬิกา m นาที ss วินาที v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H นาฬิกา m นาที ss วินาที z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}, {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/M – E d/M</greatestDifference>
							<greatestDifference id="d">E d – E d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM – E d MMM</greatestDifference>
							<greatestDifference id="d">E d – E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">d – d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M–M/yy</greatestDifference>
							<greatestDifference id="y">M/yyyy - M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/M/yy – E d/M/yy</greatestDifference>
							<greatestDifference id="d">E d – E d/M/yy</greatestDifference>
							<greatestDifference id="y">E d/M/yy – E d/M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM – E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d – E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy – E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">M–M/yyyy</greatestDifference>
							<greatestDifference id="y">M/yyyy – M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM – d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy – d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy – d/M/yy</greatestDifference>
							<greatestDifference id="d">d-d/M/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy – d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>สมัย</displayName>
					</field>
					<field type="year">
						<displayName>ปี</displayName>
					</field>
					<field type="month">
						<displayName>เดือน</displayName>
					</field>
					<field type="week">
						<displayName>สัปดาห์</displayName>
					</field>
					<field type="day">
						<displayName>วัน</displayName>
						<relative type="0">วันนี้</relative>
						<relative type="1">พรุ่งนี้</relative>
						<relative type="2">มะรืนนี้</relative>
						<relative type="3">สามวันถัดไป</relative>
						<relative type="-1">เมื่อวานนี้</relative>
						<relative type="-2">เมื่อวานซืน</relative>
						<relative type="-3">สามวันก่อนหน้า</relative>
					</field>
					<field type="weekday">
						<displayName>วันในสัปดาห์</displayName>
					</field>
					<field type="dayperiod">
						<displayName>ช่วงวัน</displayName>
					</field>
					<field type="hour">
						<displayName>ชั่วโมง</displayName>
					</field>
					<field type="minute">
						<displayName>นาที</displayName>
					</field>
					<field type="second">
						<displayName>วินาที</displayName>
					</field>
					<field type="zone">
						<displayName>เขต</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="islamic">
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
			</calendar>
			<calendar type="japanese">
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
			</calendar>
			<calendar type="persian">
				<am>ก่อนเที่ยง</am>
				<pm>หลังเที่ยง</pm>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>ไม่ทราบ</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>อันดอร์รา</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>ดูใบ</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>คาบูล</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>แอนติกา</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>แองกิลลา</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>ติรานา</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>เยเรวาน</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>ลูอันดา</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>โรเธรา</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>พาล์เมอร์</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>ขั้วโลกใต้</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>เซียวา</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>มอร์สัน</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>ดาวีส์</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>วอสต็อค</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>เคซีย์</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>ดูมอนต์ดียูร์วิลล์</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>แมคมัวโด</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>ริโอกาลเลกอส</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>เมนดูซา</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>ซานฮวน</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>อูชูเอีย</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ลาริโอจา</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>ซันลูอิส</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>กาตามาร์กา</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>จูจิว</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>ทูคูแมน</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>คอร์โดบา</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>บัวโนสไอเรส</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>ปาโก ปาโก</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>เวียนนา</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>เพิิร์ท</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>ยูคลา</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>ดาร์วิน</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>แอดิเลด</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>โบรกเคนฮิว</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>คูร์รี</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>เมลเบิร์น</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>โฮบาร์ต</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>ลินดีแมน</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>ซิดนีย์</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>บริสเบน</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>ลอร์ดโฮวี</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>อารูบา</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>บากู</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>บาร์เบโดส</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>ดากา</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>บรัสเซลส์</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>วากาดูกู</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>โซเฟีย</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>บาห์เรน</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>บูจุมบูรา</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>ปอร์โต-โนโว</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>เบอร์มิวดา</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>บรูไนดารุสซาลาม</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>ลาปาซ</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>เอรูเนเป</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>รีโอบรังโก</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>ปอร์ตูเวลโย</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>บัววีชตา</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>มาเนาส์</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>กุยาบา</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>กัมปูกรันดี</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>เบเลง</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>อารากัวนา</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>เซาเปาลู</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>บาเยีย</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>ฟอร์ตาเลซา</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>มาเซโอ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>เรซีเฟ</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>โนรอนฮา</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>แนสซอ</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>ทิมพู</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>กาโบโรเน</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>เบลีซ</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>ดอว์สัน</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>ไวต์ฮอร์ส</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>อินูวิก</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>แวนคูเวอร์</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>ดอว์สัน ครีก</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>เยลโลว์ไนฟ์</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>เอดมันตัน</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>สวิฟต์เคอร์เรนต์</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>อ่าวแคมบริดจ์</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>ริไจนา</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>วินนิเพก</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>เรโซลูท</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>เรนนี่ริเวอร์</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>แรงกินอินเล็ต</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>คอรัลฮาร์เบอร์</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>ทันเดอร์เบย์</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>นิปิกอน</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>โทรอนโต</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>มอนทริออล</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>อีกวาลิต</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>พางนีทัง</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>มองตัน</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>แฮลิแฟกซ์</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>กูสเบย์</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>อ่าวแกลซ</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>บลังค์-ซาบลอน</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>เซนต์จอนส์</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>โคโคส</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>กินชาซา</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>ลูบัมบาชิ</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>บังกี</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>บราซซาวิล</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>ซูริค</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>อีสเตอร์</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>ซันติอาโก</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>กัชการ์</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>อุรุมชี</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>ฉงชิ่ง</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>เซี่ยงไฮ้</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>ฮาร์บิน</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>โบโกตา</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>คอสตาริกา</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>ฮาวานา</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>เคปเวิร์ด</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>คริสต์มาส</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>นิโคเซีย</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>เบอร์ลิน</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>จิบูตี</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>โคเปนเฮเกน</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>โดมินิกา</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>ซานโต โดมิงโก</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>แอลเจียร์</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>กาลาปากอส</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>กัวยากิล</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>ไคโร</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>เอลไอย์อุง</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>แอสมารา</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>คานารี</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>เซวตา</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>มาดริด</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>แอดดิสอาบาบา</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>เฮลซิงกิ</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>ฟิจิ</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>สแตนลีย์</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ทรัก</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>โปนาเป</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>คอสแร</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>ปารีส</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>ลีเบรอวิล</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>ลอนดอน</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>เกรนาดา</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>ทบิลิซิ</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>กาแยน</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>อักกรา</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>ยิบรอลตาร์</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>ทูเล</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>กอดแธบ</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>สกอเรสไบซันด์</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>ดานมาร์กสฮาวน์</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>บันจูล</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>โกนากรี</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>กวาเดอลูป</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>มาลาโบ</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>เอเธนส์</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>เซาท์ จอร์เจีย</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>กัวเตมาลา</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>กวม</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>บิสเซา</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>กายอานา</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>ฮ่องกง</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>บูดาเปส</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>จาการ์ตา</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>พอนเทียนัก</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>มากัสซาร์</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>จายาปุระ</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>ดับบลิน</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>เยรูซาเร็ม</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>แบกแดด</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>เตหะราน</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>เรคยาวิก</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>โรม</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>จาเมกา</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>อัมมาน</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>โตเกียว</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>ไนโรเบีย</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>บิชเคก</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>พนมเปญ</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>เอนเดอร์เบอร์รี</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>คิริทิมาตี</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>ทาราวา</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>โคโมโร</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>เปียงยาง</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>โซล</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>คูเวต</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>เคย์แมน</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>อัคตาอู</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ออรัล</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>อัคโทบี</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>ไคซีลอร์ดา</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>อัลมาตี</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>เวียงจันทน์</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>เบรุต</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>เซนต์ลูเซีย</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>วาดุซ</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>โคลัมโบ</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>มันโรเวีย</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>มาเซรู</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>วิลนีอุส</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>ลักเซมเบิร์ก</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>ตรีโปลี</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>คาสซาบลางก้า</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>โมนาโก</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>อันตานานาริโว</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>ควจาเลน</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>มาจูโร</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>บามาโก</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>ย่างกุ้ง</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>ฮอฟด์</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>อูลานบาตอร์</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>โชบาลซาน</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>มาเก๊า</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>ไซปัน</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>มาร์ตินีก</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>นูแอกชอต</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>มอนเซอร์รัต</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>มอลตา</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>มอริเชียส</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>มัลดีฟส์</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>ทิฮัวนา</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>เอร์โมซีโย</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>มาซาทลาน</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>ชีวาวา</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>มอนเตร์เรย์</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>เม็กซิโกซิตี</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>เมรีดา</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>แคนคุน</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>กัวลาลัมเปอร์</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>กูชิง</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>มาปูโต</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>วินด์ฮุก</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>นูเมอา</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>นีอาเมย์</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>ลากอส</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>อัมสเตอดัม</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>ออสโล</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>กาตมันดุ</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>นาอูรู</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>นีอูเอ</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>แชแธม</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>โอคแลนด์</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>มัสกัต</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>ปานามา</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>ลิมา</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>ทาฮิติ</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>มาร์เควซัส</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>แกมเบียร์</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>พอร์ตมอร์สบี</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>มะนิลา</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>การาจี</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>วอร์ซอ</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>มีเกอลง</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>พิตแคร์น</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>เปอโตริโก</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>กาซา</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>อาซอเรส</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>มาเดรา</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>ลิสบอน</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>ปาเลา</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>อะซุนซิออง</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>กาตาร์</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>เรอูนียง</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>บูคาเรส</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>คาลินิงกราด</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>มอสโก</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>วอลโกกราด</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>ซามารา</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>ยีคาเตอรินเบิร์ก</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>โอมสก์</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>โนโวซิบิร์สก์</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>ครัสโนยาร์สก์</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>อีร์คุตสค์</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>ยาคุตสค์</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>วลาดิโวสต็อก</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>ซาคาลิน</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>มากาดาน</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>คามชัตกา</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>อานาดีร์</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>คิกาลี</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>ริยาร์ด</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>กัวดัลคานัล</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>คาร์ทูม</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>สตอกโฮล์ม</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>สิงคโปร์</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>เซนต์เฮเลนา</exemplarCity>
			</zone>
			<zone type="Arctic/Longyearbyen">
				<exemplarCity>ลองเยียร์เบียน</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>ฟรีทาวน์</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>ดาการ์</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>โมกาดิชู</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>ปารามาริโบ</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>ซาโอโตเมะ</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>เอลซัลวาดอร์</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>ดามัสกัส</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>อัมบาบาเน</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>โลเม</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>กรุงเทพ</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>ดูชานเบ</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>ฟาเคาโฟ</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>ดิลี</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>อาชกาบัต</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>ตูนิส</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>ตองกาตาปู</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>อิสตันบูล</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>พอร์ทออฟสเปน</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>ฟูนะฟูตี</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>ไทเป</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>อัซโกร็อด</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>เคียฟ</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>ซิมเฟอโรโปล</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>ซาโปโรซี</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>คัมพาลา</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>มิดเวย์</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>จอห์นสตัน</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>เวก</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>เอดัก</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>นอม</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>โฮโนลูลู</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>แองเคอเรจ</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>ยากูทัต</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>จูโน</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>ลอสแองเจลิส</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>บอยซี</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>ฟีนิกซ์</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>ชิปร็อก</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>เดนเวอร์</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>นิวเซเลม, นอร์ทดาโคตา</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>เซนเตอร์</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>ชิคาโก</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>เมโนมินี</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>วินเซนเนส</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>ปีเตอร์สเบิร์ก</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>เทลล์ซิตี, อินดีแอนา</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>นอกซ์</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>วินาแมค, อินดีแอนา</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>มาเรงโก</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>อินเดียแนโพลิส</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>ลูส์วิลล์</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>วีเวย์</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>มอนติเซลโล</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>ดีทรอยต์</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>นิวยอร์ก</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>มอนเตวิเดโอ</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>ซามาร์กานด์</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>ทาชเคนต์</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>เซนต์วินเซนต์</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>คาราคัส</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>เซนต์โธมัส</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>ไซง่อน</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>วาลลิส</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>อาปีอา</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>เอเดน</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>มาโยเต</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>โจฮันเนสเบอร์ก</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>ลูซากา</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>ฮาราเร</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>เวลาอาเกร</standard>
					<daylight>เวลาฤดูร้อนอาเกร</daylight>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>เวลาแอฟริกากลาง</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>เวลาแอฟริกาตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>เวลามาตรฐานแอฟริกาใต้</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>เวลาแอฟริกาตะวันตก</standard>
					<daylight>เวลาฤดูร้อนแอฟริกาตะวันตก</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>เวลาอะแลสกา</generic>
					<standard>เวลามาตรฐานอะแลสกา</standard>
				</long>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<standard>เวลามาตรฐานอะแลสกา-ฮาวาย</standard>
				</long>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>เวลาอะเมซอน</standard>
					<daylight>เวลาฤดูร้อนอะเมซอน</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>เวลากลาง</generic>
					<standard>เวลามาตรฐานกลาง</standard>
				</long>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>เวลาตะวันออก</generic>
					<standard>เวลามาตรฐานตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>เวลาแปซิฟิค</generic>
					<standard>เวลามาตรฐานแปซิฟิค</standard>
				</long>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>เวลาอัคตาอู</standard>
					<daylight>เวลาฤดูร้อนอัคตาอู</daylight>
				</long>
				<short>
					<standard>AQTT (อัคตาอู)</standard>
					<daylight>AQTST (อัคตาอู)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>เวลาอาระเบีย</generic>
					<standard>เวลามาตรฐานอาระเบีย</standard>
				</long>
				<short>
					<standard>AST (อาระเบีย)</standard>
					<daylight>ADT (อาระเบีย)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>เวลาอาร์เจนตินา</standard>
					<daylight>เวลาฤดูร้อนอาร์เจนตินา</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>เวลาอาร์เจนตินาตะวันตก</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>เวลาอาร์เมเนีย</standard>
					<daylight>เวลาฤดูร้อนอาร์เมเนีย</daylight>
				</long>
				<short>
					<standard>AMT (อาร์เมเนีย)</standard>
					<daylight>AMST (อาร์เมเนีย)</daylight>
				</short>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>เวลาแอตแลนติก</generic>
					<standard>เวลามาตรฐานแอตแลนติก</standard>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>เวลาออสเตรเลียกลาง</generic>
					<standard>เวลามาตรฐานออสเตรเลียกลาง</standard>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>เวลาออสเตรเลียตะวันออก</generic>
					<standard>เวลามาตรฐานออสเตรเลียตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>เวลาออสเตรเลียตะวันตก</generic>
					<standard>เวลามาตรฐานออสเตรเลียตะวันตก</standard>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>เวลาฤดูร้อนอาโซเรช</standard>
					<daylight>เวลาฤดูร้อนอาโซเรช</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>เวลาบากู</standard>
					<daylight>เวลาฤดูร้อนบากู</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>เวลาบังกลาเทศ</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>เวลาเบริง</generic>
					<standard>เวลามาตรฐานเบริง</standard>
				</long>
				<short>
					<standard>BST (เบริง)</standard>
					<daylight>BDT (เบริง)</daylight>
				</short>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>เวลาภูฏาน</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>เวลาบอร์เนียว</standard>
					<daylight>เวลาฤดูร้อนบอร์เนียว</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>เวลาบราซิเลีย</standard>
					<daylight>เวลาฤดูร้อนบราซิเลีย</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<standard>เวลามาตรฐานชามอร์โร</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>เวลาชิลี</standard>
					<daylight>เวลาฤดูร้อนชิลี</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<standard>เวลามาตรฐานจีน</standard>
				</long>
				<short>
					<standard>CST (จีน)</standard>
					<daylight>CDT (จีน)</daylight>
				</short>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>เวลาดูชานเบ</standard>
					<daylight>เวลาฤดูร้อนดูชานเบ</daylight>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>เวลาติมอร์ตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>เวลาเอกวาดอร์</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>เวลายุโรปกลาง</standard>
					<daylight>เวลาฤดูร้อนยุโรปกลาง</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>เวลายุโรปตะวันออก</standard>
					<daylight>เวลาฤดูร¹‰อนยุโรปตะวันออก</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>เวลายุโรปตะวันตก</standard>
					<daylight>เวลาฤดูร้อนยุโรปตะวันตก</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>เวลามาตรฐานกรีนิช</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>เวลากาลาปาโกส</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>เวลาจอร์เจีย</standard>
					<daylight>เวลาฤดูร้อนจอร์เจีย</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>เวลากรีนแลนด์กลาง</standard>
					<daylight>เวลาฤดูร้อนกรีนแลนด์กลาง</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>เวลากรีนแลนด์ตะวันออก</standard>
					<daylight>เวลาฤดูร้อนกรีนแลนด์ตะวันออก</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>เวลากรีนแลนด์ตะวันตก</standard>
					<daylight>เวลาฤดูร้อนกรีนแลนด์ตะวันตก</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>เวลามาตรฐานกวม</standard>
				</long>
				<short>
					<standard>GST (กวม)</standard>
				</short>
			</metazone>
			<metazone type="India">
				<long>
					<standard>เวลามาตรฐานอินเดีย</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>เวลาอินโดนีเซียกลาง</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>เวลาอินโดนีเซียตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>เวลาอินโดนีเซียตะวันตก</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>เวล¥ามาตรฐานอิสราเอล</standard>
				</long>
				<short>
					<standard>IST (อิสราเอล)</standard>
				</short>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<standard>เวลามาตรฐานคาซัคสถานตะวันออก</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<standard>เวลามาตรฐานคาซัคสถาน</standard>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>เวลาเกาหลี</generic>
					<standard>เวลามาตรฐานเกาหลี</standard>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>เวลาควาจาเลน</standard>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>เวลามาเก๊า</standard>
					<daylight>เวลาฤดูร้อนมาเก๊า</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>เวลามาลายา</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>เวลามาเลเซีย</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>เวลาหมู่เกาะมาร์แชลล์</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>เวลาอูลานบาตอร์</standard>
					<daylight>เวลาฤดูร้อนอูลานบาตอร์</daylight>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>เวลานิวซีแลนด์</generic>
					<standard>เวลามาตรฐานนิวซีแลนด์</standard>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>เวลานิวฟันด์แลนด์</generic>
					<standard>เวลามาตรฐานนิวฟันด์แลนด์</standard>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>เวลาหมู่เกาะมาเรียนาเหนือ</standard>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>เวลาปากีสถาน</standard>
					<daylight>เวลาฤดูร้อนปากีสถาน</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>ปีแยร์และมีเกอลง</generic>
					<standard>เวลามาตรฐานปีแยร์และมีเกอลง</standard>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>เวลาคืยซิลออร์ดา</standard>
					<daylight>เวลาฤดูร้อนคืยซิลออร์ดา</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>เวลาซามารา</standard>
					<daylight>เวลาฤดูร้อนซามารา</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>เวลาซามาร์คันด์</standard>
					<daylight>เวลาฤดูร้อนซามาร์คันด์</daylight>
				</long>
				<short>
					<standard>SAMT (ซามาร์คันด์)</standard>
					<daylight>SAMST (ซามาร์คันด์)</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>เวลามาตรฐานซามัว</standard>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>เวลาซูรินาเม</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>เวลาสเวียร์ดลอฟสค์</standard>
					<daylight>เวลาฤดูร้อนสเวียร์ดลอฟสค์</daylight>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>เวลาทาจิกิสถาน</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<daylight>เวลาฤดูร้อนทาชเคนต์</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>เวลาทบิลิซิ</standard>
					<daylight>เวลาฤดูร้อนทบิลิซิ</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>เวลาตุรกี</standard>
					<daylight>เวลาฤดูร้อนตุรกี</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>เวลาเติร์กเมนิสถาน</standard>
					<daylight>เวลาฤดูร้อนเติร์กเมนิสถาน</daylight>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>เวลาอุซเบกิสถาน</standard>
					<daylight>เวลาฤดูร้อนอุซเบกิสถาน</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>เวลาเยคาเตรินบูร์ก</standard>
					<daylight>เวลาฤดูร้อนเยคาเตรินบูร์ก</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>เวลาเยเรวาน</standard>
					<daylight>เวลาฤดูร้อนเยเรวาน</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>เวลายูคอน</generic>
					<standard>เวลามาตรฐานยูคอน</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>เปเซตาอันดอร์รา</displayName>
			</currency>
			<currency type="AED">
				<displayName>ดีแรห์มสหรัฐอาหรับเอมิเรตส์</displayName>
			</currency>
			<currency type="AFA">
				<displayName>อัฟกานี (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>อัฟกานี</displayName>
			</currency>
			<currency type="ALL">
				<displayName>เลกอัลบาเนีย</displayName>
			</currency>
			<currency type="AMD">
				<displayName>ดรัมอาเมเนีย</displayName>
			</currency>
			<currency type="ANG">
				<displayName>กิลเดอร์เนเธอร์แลนด์แอนทิลลิส</displayName>
			</currency>
			<currency type="AOA">
				<displayName>กวานซาแองโกลา</displayName>
			</currency>
			<currency type="AOK">
				<displayName>กวานซาแองโกลา (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>นิวกวานซาแองโกลา (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>กวานซารีจัสทาโดแองโกลา (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>ออสตรัลอาร์เจนตินา</displayName>
			</currency>
			<currency type="ARP">
				<displayName>เปโซอาร์เจนติน่า (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>เปโซอาร์เจนติน่า</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>ชิลลิงออสเตรีย</displayName>
			</currency>
			<currency type="AUD">
				<displayName>ดอลลาร์ออสเตรเลีย</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>กิลเดอร์อารูบา</displayName>
			</currency>
			<currency type="AZM">
				<displayName>มานัตอาเซอร์ไบจัน</displayName>
			</currency>
			<currency type="AZN">
				<displayName>มานัตอาเซอร์ไบจาน</displayName>
			</currency>
			<currency type="BAD">
				<displayName>ดีนาร์บอสเนีย-เฮอร์เซโกวีนา</displayName>
			</currency>
			<currency type="BAM">
				<displayName>มาร​์กบอสเนีย-เฮอร์เซโกวีนา</displayName>
			</currency>
			<currency type="BBD">
				<displayName>ดอลลาร์บาร์เบโดส</displayName>
			</currency>
			<currency type="BDT">
				<displayName>ตากาบังกลาเทศ</displayName>
			</currency>
			<currency type="BEC">
				<displayName>ฟรังก์เบลเยียม (เปลี่ยนแปลงได้)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>ฟรังก์เบลเยียม</displayName>
			</currency>
			<currency type="BEL">
				<displayName>ฟรังก์เบลเยียม (การเงิน)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>ฮาร์ดลีฟบัลแกเรีย</displayName>
			</currency>
			<currency type="BGN">
				<displayName>นิวลีฟบัลแกเรีย</displayName>
			</currency>
			<currency type="BHD">
				<displayName>ดีนาร์บาห์เรน</displayName>
			</currency>
			<currency type="BIF">
				<displayName>ฟรังก์บุรุนดี</displayName>
			</currency>
			<currency type="BMD">
				<displayName>ดอลลาร์เบอร์มิวดา</displayName>
			</currency>
			<currency type="BND">
				<displayName>ดอลลาร์บรูไน</displayName>
			</currency>
			<currency type="BOB">
				<displayName>โบลิเวียโน</displayName>
			</currency>
			<currency type="BOP">
				<displayName>เปโซโบลิเวีย</displayName>
			</currency>
			<currency type="BOV">
				<displayName>มฟดอลโบลิเวีย</displayName>
			</currency>
			<currency type="BRB">
				<displayName>ครูเซโรโนโวบราซิล (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>ครูซาโดบราซิล</displayName>
			</currency>
			<currency type="BRE">
				<displayName>ครูเซโรบราซิล (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>รีล</displayName>
				<symbol>R$</symbol>
			</currency>
			<currency type="BRN">
				<displayName>ครูซาโดโนโวบราซิล</displayName>
			</currency>
			<currency type="BRR">
				<displayName>ครูเซโรบราซิล</displayName>
			</currency>
			<currency type="BSD">
				<displayName>ดอลลาร์บาฮามาส</displayName>
			</currency>
			<currency type="BTN">
				<displayName>กัลทรัมภูฏาน</displayName>
			</currency>
			<currency type="BUK">
				<displayName>จ๊าดพม่า</displayName>
			</currency>
			<currency type="BWP">
				<displayName>พูลาบอตสวานา</displayName>
			</currency>
			<currency type="BYB">
				<displayName>นิวรูเบิลเบลารัสเซีย (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>รูเบิลเบลารุส</displayName>
			</currency>
			<currency type="BZD">
				<displayName>ดอลลาร์เบลีซ</displayName>
			</currency>
			<currency type="CAD">
				<displayName>ดอลลาร์แคนาดา</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>ฟรังก์คองโก</displayName>
			</currency>
			<currency type="CHE">
				<displayName>ยูโรดับเบิลยูไออาร์</displayName>
			</currency>
			<currency type="CHF">
				<displayName>ฟรังก์สวิส</displayName>
			</currency>
			<currency type="CHW">
				<displayName>ฟรังก์ดับเบิลยูไออาร์</displayName>
			</currency>
			<currency type="CLF">
				<displayName>ฟูเมนโตชิลี</displayName>
			</currency>
			<currency type="CLP">
				<displayName>เปโซชิลี</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>หยวนเหรินเหมินบี้</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="COP">
				<displayName>เปโซโคลัมเบีย</displayName>
			</currency>
			<currency type="COU">
				<displayName>วาเลอร์รีล</displayName>
			</currency>
			<currency type="CRC">
				<displayName>โคลอนคอสตาริกา</displayName>
			</currency>
			<currency type="CSD">
				<displayName>ดีนาร์เซอร์เบียเก่า</displayName>
			</currency>
			<currency type="CSK">
				<displayName>ฮาร์ดโครูนาเช็กโกสโลวัก</displayName>
			</currency>
			<currency type="CUP">
				<displayName>เปโซคิวบา</displayName>
			</currency>
			<currency type="CVE">
				<displayName>เคปเวอร์เดอร์เอสคูโด</displayName>
			</currency>
			<currency type="CYP">
				<displayName>ปอนด์ไซปรัส</displayName>
			</currency>
			<currency type="CZK">
				<displayName>โครูนาสาธารณรัฐเช็ก</displayName>
			</currency>
			<currency type="DDM">
				<displayName>ออสต์มาร์กเยอรมันตะวันออก</displayName>
			</currency>
			<currency type="DEM">
				<displayName>มาร์กเยอรมนี</displayName>
			</currency>
			<currency type="DJF">
				<displayName>ฟรังก์จิบูตี</displayName>
			</currency>
			<currency type="DKK">
				<displayName>โครนเดนมาร์ก</displayName>
			</currency>
			<currency type="DOP">
				<displayName>เปโซโดมินิกา</displayName>
			</currency>
			<currency type="DZD">
				<displayName>ดีนาร์แอลจีเรีย</displayName>
			</currency>
			<currency type="ECS">
				<displayName>ซูเกรเอกวาดอร์</displayName>
			</currency>
			<currency type="ECV">
				<displayName>วาเลอร์คอนสแตนต์เอกวาดอร์</displayName>
			</currency>
			<currency type="EEK">
				<displayName>ครูนเอสโตเนีย</displayName>
			</currency>
			<currency type="EGP">
				<displayName>ปอนด์อียิปต์</displayName>
			</currency>
			<currency type="EQE">
				<displayName>เอ็กเวเล</displayName>
			</currency>
			<currency type="ERN">
				<displayName>นากฟาเอริเทรีย</displayName>
			</currency>
			<currency type="ESA">
				<displayName>เปเซตาสเปน (บัญชี)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>เปเซตาสเปน (บัญชีที่เปลี่ยนแปลงได้)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>เปเซตาสเปน</displayName>
			</currency>
			<currency type="ETB">
				<displayName>เบอรร์เอธิโอเปีย</displayName>
			</currency>
			<currency type="EUR">
				<displayName>ยูโร</displayName>
				<symbol>€</symbol>
			</currency>
			<currency type="FIM">
				<displayName>มาร์กกาฟินแลนด์</displayName>
			</currency>
			<currency type="FJD">
				<displayName>ดอลลาร์ฟิจิ</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>ปอนด์เกาะฟอล์กแลนด์</displayName>
			</currency>
			<currency type="FRF">
				<displayName>ฟรังก์ฝรั่งเศส</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ปอนด์สเตอร์ลิงอังกฤษ</displayName>
				<symbol>\u00A3</symbol>
			</currency>
			<currency type="GEK">
				<displayName>คูปอนลาริตจอร์เจีย</displayName>
			</currency>
			<currency type="GEL">
				<displayName>ลารีจอร์เจีย</displayName>
			</currency>
			<currency type="GHC">
				<displayName>เซดีกานา</displayName>
			</currency>
			<currency type="GIP">
				<displayName>ปอนด์ยิบรอลตาร์</displayName>
			</currency>
			<currency type="GMD">
				<displayName>ดาลาซีแกมเบีย</displayName>
			</currency>
			<currency type="GNF">
				<displayName>ฟรังก์กินี</displayName>
			</currency>
			<currency type="GNS">
				<displayName>ไซลีกินี</displayName>
			</currency>
			<currency type="GQE">
				<displayName>เอ็กเวเลกินีนาอิเควทอเรียลกินี</displayName>
			</currency>
			<currency type="GRD">
				<displayName>ดรัชมากรีก</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>เควตซัลกัวเตมาลา</displayName>
			</currency>
			<currency type="GWE">
				<displayName>เอสคูโดกินีโปรตุเกส</displayName>
			</currency>
			<currency type="GWP">
				<displayName>เปโซกีนีบิสเซา</displayName>
			</currency>
			<currency type="GYD">
				<displayName>ดอลลาร์กายอานา</displayName>
			</currency>
			<currency type="HKD">
				<displayName>เหรียญฮ่องกง</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>เลมปิราฮอดูรัส</displayName>
			</currency>
			<currency type="HRD">
				<displayName>ดีนาร์โครเอเชีย</displayName>
			</currency>
			<currency type="HRK">
				<displayName>คูนาโครเอเชีย</displayName>
			</currency>
			<currency type="HTG">
				<displayName>กอร์ดเฮติ</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ฟอรินต์ฮังการี</displayName>
			</currency>
			<currency type="IDR">
				<displayName>รูเปียอินโดนีเซีย</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>ปอนด์ไอริช</displayName>
				<symbol>IR\u00A3</symbol>
			</currency>
			<currency type="ILP">
				<displayName>ปอนด์อิสราเอล</displayName>
			</currency>
			<currency type="ILS">
				<displayName>เชเกลอิสราเอล</displayName>
			</currency>
			<currency type="INR">
				<displayName>รูปีอินเดีย</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>ดีนาร์อิรัก</displayName>
			</currency>
			<currency type="IRR">
				<displayName>เรียลอิหร่าน</displayName>
			</currency>
			<currency type="ISK">
				<displayName>โครนาไอซ์แลนด์</displayName>
			</currency>
			<currency type="ITL">
				<displayName>ลีราอิตาลี</displayName>
			</currency>
			<currency type="JMD">
				<displayName>ดอลลาร์จาเมกา</displayName>
			</currency>
			<currency type="JOD">
				<displayName>ดีนาร์จอร์แดน</displayName>
			</currency>
			<currency type="JPY">
				<displayName>เยน</displayName>
				<symbol>\u00A5</symbol>
			</currency>
			<currency type="KES">
				<displayName>ชิลลิ่งเคนยา</displayName>
			</currency>
			<currency type="KGS">
				<displayName>ซอมคีร์กีซสถาน</displayName>
			</currency>
			<currency type="KHR">
				<displayName>เรียลกัมพูชา</displayName>
			</currency>
			<currency type="KMF">
				<displayName>ฟรังก์คอโมโรส</displayName>
			</currency>
			<currency type="KPW">
				<displayName>วอนเกาหลีเหนือ</displayName>
			</currency>
			<currency type="KRW">
				<displayName>วอนเกาหลีใต้</displayName>
			</currency>
			<currency type="KWD">
				<displayName>ดีนาร์คูเวต</displayName>
			</currency>
			<currency type="KYD">
				<displayName>ดอลลาร์ห඀¡ู่เกาะเคย์แมน</displayName>
			</currency>
			<currency type="KZT">
				<displayName>เทนจ์คาซัคสถาน</displayName>
			</currency>
			<currency type="LAK">
				<displayName>กีบลาว</displayName>
			</currency>
			<currency type="LBP">
				<displayName>ปอนด์เลบานอน</displayName>
			</currency>
			<currency type="LKR">
				<displayName>รูปีศรีลังกา</displayName>
			</currency>
			<currency type="LRD">
				<displayName>ดอลลาร์ไลบีเรีย</displayName>
			</currency>
			<currency type="LSL">
				<displayName>โลตีเลโซโท</displayName>
			</currency>
			<currency type="LSM">
				<displayName>มาโลตี</displayName>
			</currency>
			<currency type="LTL">
				<displayName>ลีตาลิทัวเนีย</displayName>
			</currency>
			<currency type="LTT">
				<displayName>ทาโลนัสลิทัวเนีย</displayName>
			</currency>
			<currency type="LUC">
				<displayName>คอนเวอร์ทิเบิลฟรังก์ลักเซมเบิร์ก</displayName>
			</currency>
			<currency type="LUF">
				<displayName>ฟรังก์ลักเซมเบิร์ก</displayName>
			</currency>
			<currency type="LUL">
				<displayName>ไฟแนลเชียลฟรังก์ลักเซมเบิร์ก</displayName>
			</currency>
			<currency type="LVL">
				<displayName>ลัตส์ลัตเวีย</displayName>
			</currency>
			<currency type="LVR">
				<displayName>รูเบิลลัตเวีย</displayName>
			</currency>
			<currency type="LYD">
				<displayName>ดีนาร์ลิเบีย</displayName>
			</currency>
			<currency type="MAD">
				<displayName>ดีแรห์มโมร็อกโก</displayName>
			</currency>
			<currency type="MAF">
				<displayName>ฟรังก์โมร็อกโก</displayName>
			</currency>
			<currency type="MDL">
				<displayName>ลิวมอลโดวาน</displayName>
			</currency>
			<currency type="MGA">
				<displayName>อาเรียรีมาดากัสการ์</displayName>
			</currency>
			<currency type="MGF">
				<displayName>ฟรังก์มาดากัสการ์</displayName>
			</currency>
			<currency type="MKD">
				<displayName>ดีนาร์มาซิโดเนีย</displayName>
			</currency>
			<currency type="MLF">
				<displayName>ฟรังก์มาลี</displayName>
			</currency>
			<currency type="MMK">
				<displayName>จัคพม่า</displayName>
			</currency>
			<currency type="MNT">
				<displayName>ตูกริกมองโกเลีย</displayName>
			</currency>
			<currency type="MOP">
				<displayName>ปาตากามาเก๊า</displayName>
			</currency>
			<currency type="MRO">
				<displayName>ออกิวยามอริเตเนีย</displayName>
			</currency>
			<currency type="MTL">
				<displayName>ลีรามอลตา</displayName>
			</currency>
			<currency type="MTP">
				<displayName>ปอนด์มอลตา</displayName>
			</currency>
			<currency type="MUR">
				<displayName>รูปีมอริเชียส</displayName>
			</currency>
			<currency type="MVR">
				<displayName>รูฟิยาเกาะมัลดีฟส์</displayName>
			</currency>
			<currency type="MWK">
				<displayName>ควาชามาลาวี</displayName>
			</currency>
			<currency type="MXN">
				<displayName>เปโซแม็กซิโก</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>ซิลเวอรืเม็กซิโก (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>อินเวอร์เซียนเม็กซิโก</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ริงกิตมาเลเซีย</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>เอสคูโดโมซัมบิก</displayName>
			</currency>
			<currency type="MZM">
				<displayName>เมทิคัลโมซัมบิก</displayName>
			</currency>
			<currency type="MZN">
				<displayName>เมติคัลโมซัมบิก</displayName>
			</currency>
			<currency type="NAD">
				<displayName>ดอลลาร์นามิเบีย</displayName>
			</currency>
			<currency type="NGN">
				<displayName>ไนราไนจีเรีย</displayName>
			</currency>
			<currency type="NIC">
				<displayName>คอร์โดบานิการากัว</displayName>
			</currency>
			<currency type="NIO">
				<displayName>คอร์โดบาโอโรนิการากัว</displayName>
			</currency>
			<currency type="NLG">
				<displayName>กิลเดอร์เนเธอร์แลนด์</displayName>
			</currency>
			<currency type="NOK">
				<displayName>โครนนอร์เวย์</displayName>
			</currency>
			<currency type="NPR">
				<displayName>รูปีเนปาล</displayName>
			</currency>
			<currency type="NZD">
				<displayName>ดอลลาร์นิวซีแลนด์</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>เรียลโอมาน</displayName>
			</currency>
			<currency type="PAB">
				<displayName>บัลบัวปานามา</displayName>
			</currency>
			<currency type="PEI">
				<displayName>อินตีเปรู</displayName>
			</currency>
			<currency type="PEN">
				<displayName>ซอลนูโวเปรู</displayName>
			</currency>
			<currency type="PES">
				<displayName>ซอลเปรู</displayName>
			</currency>
			<currency type="PGK">
				<displayName>กีนาปาปัวนิวกีนี</displayName>
			</currency>
			<currency type="PHP">
				<displayName>เปโซฟิลิปปินส์</displayName>
			</currency>
			<currency type="PKR">
				<displayName>รูปีปากีสถาน</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>ซลอตีโปแลนด์</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>ซวอตีโปแลนด์ (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>เอสคูโดโปรตุเกส</displayName>
			</currency>
			<currency type="PYG">
				<displayName>กวารานีปารากวัย</displayName>
			</currency>
			<currency type="QAR">
				<displayName>เรียลกาตาร์</displayName>
			</currency>
			<currency type="RHD">
				<displayName>ดอลลาร์โรดีเซีย</displayName>
			</currency>
			<currency type="ROL">
				<displayName>ลิวโรมาเนียเก่า</displayName>
			</currency>
			<currency type="RON">
				<displayName>ลิวโรมาเนีย</displayName>
			</currency>
			<currency type="RSD">
				<displayName>ดีนาร์เซอร์เบีย</displayName>
			</currency>
			<currency type="RUB">
				<displayName>รูเบิลรัสเซีย</displayName>
				<symbol>RUB</symbol>
			</currency>
			<currency type="RUR">
				<displayName>รูเบิลรัสเซีย (1991-1998)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>ฟรังก์รวันดา</displayName>
			</currency>
			<currency type="SAR">
				<displayName>เรียลซาอุดิอาระเบีย</displayName>
			</currency>
			<currency type="SBD">
				<displayName>ดอลลาร์เกาะโซโลมอน</displayName>
			</currency>
			<currency type="SCR">
				<displayName>รูปีเซเชลส์</displayName>
			</currency>
			<currency type="SDD">
				<displayName>ดีนาร์ซูดาน</displayName>
			</currency>
			<currency type="SDP">
				<displayName>ปอนด์ซูดาน</displayName>
			</currency>
			<currency type="SEK">
				<displayName>โครนาสวีเดน</displayName>
			</currency>
			<currency type="SGD">
				<displayName>ดอลลาร์สิงคโปร์</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>ปอนด์เซนต์เฮเลนา</displayName>
			</currency>
			<currency type="SIT">
				<displayName>ทอลาร์สโลวีเนีย</displayName>
			</currency>
			<currency type="SKK">
				<displayName>โครูนาสโลวัก</displayName>
			</currency>
			<currency type="SLL">
				<displayName>ลีโอนเซียร์ราลีโอน</displayName>
			</currency>
			<currency type="SOS">
				<displayName>ชิลลิงโซมาเลีย</displayName>
			</currency>
			<currency type="SRD">
				<displayName>ดอลลาร์ซูรินาเม</displayName>
			</currency>
			<currency type="SRG">
				<displayName>กิลเดอร์สุรินัม</displayName>
			</currency>
			<currency type="STD">
				<displayName>ดอบราเซาตูเมและปรินซิปี</displayName>
			</currency>
			<currency type="SUR">
				<displayName>รูเบิลโซเวียต</displayName>
			</currency>
			<currency type="SVC">
				<displayName>โคลอนเอลซัลวาดอร์</displayName>
			</currency>
			<currency type="SYP">
				<displayName>ปอนด์ซีเรีย</displayName>
			</currency>
			<currency type="SZL">
				<displayName>ลิลันกีนีสวาซิแลนด์</displayName>
			</currency>
			<currency type="THB">
				<displayName>บาท</displayName>
				<symbol>฿</symbol>
			</currency>
			<currency type="TJR">
				<displayName>รูเบิลทาจิกิสถาน</displayName>
			</currency>
			<currency type="TJS">
				<displayName>โซโมนีทาจิกิสถาน</displayName>
			</currency>
			<currency type="TMM">
				<displayName>มานัตเติร์กเมนิสถาน</displayName>
			</currency>
			<currency type="TND">
				<displayName>ดีนาร์ตูนิเซีย</displayName>
			</currency>
			<currency type="TOP">
				<displayName>ปาอังกาตองกา</displayName>
			</currency>
			<currency type="TPE">
				<displayName>เอสคูโดติมอร์</displayName>
			</currency>
			<currency type="TRL">
				<displayName>ลีราตุรกี</displayName>
			</currency>
			<currency type="TRY">
				<displayName>ตุรกี ลีร่า ใหม่</displayName>
			</currency>
			<currency type="TTD">
				<displayName>ดอลลาร์ตรินิแดดและโตเบโก</displayName>
			</currency>
			<currency type="TWD">
				<displayName>ดอลลาร์ไต้หวัน</displayName>
			</currency>
			<currency type="TZS">
				<displayName>ชิลลิงแทนซาเนีย</displayName>
			</currency>
			<currency type="UAH">
				<displayName>ฮรีฟเนียยูเครน</displayName>
			</currency>
			<currency type="UAK">
				<displayName>คาร์โบวาเนตซ์ยูเครน</displayName>
			</currency>
			<currency type="UGS">
				<displayName>ซิลลิ่งอูกันดา (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>ชิลลิงยูกันดา</displayName>
			</currency>
			<currency type="USD">
				<displayName>ดอลลาร์สหรัฐ</displayName>
				<symbol>US$</symbol>
			</currency>
			<currency type="USN">
				<displayName>ดอลลาร์สหรัฐ (วันถัดไป)</displayName>
			</currency>
			<currency type="USS">
				<displayName>ดอลลาร์สหรัฐ (วันเดียวกัน)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>เปโซอุรุกวัย (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>เปโซอุรุกวัย</displayName>
			</currency>
			<currency type="UZS">
				<displayName>ซัมอุซเบกิสถาน</displayName>
			</currency>
			<currency type="VEB">
				<displayName>โบลิวาร์เวเนซุเอลา</displayName>
			</currency>
			<currency type="VEF">
				<displayName>ฟูร์เตโบลีวาร์เวเนซุเอลา</displayName>
			</currency>
			<currency type="VND">
				<displayName>ดองเวียดนาม</displayName>
			</currency>
			<currency type="VUV">
				<displayName>วาตูวานูอาตู</displayName>
			</currency>
			<currency type="WST">
				<displayName>ทาลาซามัวตะวันตก</displayName>
			</currency>
			<currency type="XAF">
				<displayName>ฟรังก์เซฟาธนาคารรัฐแอฟริกากลาง</displayName>
			</currency>
			<currency type="XAG">
				<displayName>เงิน</displayName>
			</currency>
			<currency type="XAU">
				<displayName>ทอง</displayName>
			</currency>
			<currency type="XBA">
				<displayName>หน่วยคอมโพสิตยุโรป</displayName>
			</currency>
			<currency type="XBB">
				<displayName>หน่วยโมเนทารียุโรป</displayName>
			</currency>
			<currency type="XBC">
				<displayName>หน่วยบัญชียุโรป [XBC]</displayName>
			</currency>
			<currency type="XBD">
				<displayName>หน่วยบัญชียุโรป [XBD]</displayName>
			</currency>
			<currency type="XCD">
				<displayName>ดอลลาร์แคริบเบียนตะวันออก</displayName>
			</currency>
			<currency type="XEU">
				<displayName>หน่วยสกุลเงินยุโรป</displayName>
			</currency>
			<currency type="XFO">
				<displayName>ฟรังก์ทองฝรั่งเศส</displayName>
			</currency>
			<currency type="XFU">
				<displayName>ฟรังก์ยูไอซีฝรั่งเศส</displayName>
			</currency>
			<currency type="XOF">
				<displayName>ฟรังก์เซฟาธนาคารกลางรัฐแอฟริกาตะวันตก</displayName>
			</currency>
			<currency type="XPD">
				<displayName>พัลลาดีม</displayName>
			</currency>
			<currency type="XPF">
				<displayName>ฟรังก์ซีเอฟพี</displayName>
			</currency>
			<currency type="XPT">
				<displayName>แพลตินัม</displayName>
			</currency>
			<currency type="XRE">
				<displayName>กองทุนไรเน็ต</displayName>
			</currency>
			<currency type="XTS">
				<displayName>รหัสทดสอบสกุลเงิน</displayName>
			</currency>
			<currency type="XXX">
				<displayName>ไม่มีหน่วยเงินตรา</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>ดีนาร์เยเมน</displayName>
			</currency>
			<currency type="YER">
				<displayName>เรียลเยเมน</displayName>
			</currency>
			<currency type="YUD">
				<displayName>ฮาร์ดดีนาร์ยูโกสลาเวีย</displayName>
			</currency>
			<currency type="YUM">
				<displayName>โนวิย์ดีนาร์ยูโกสลาเวีย</displayName>
			</currency>
			<currency type="YUN">
				<displayName>ดีนาร์ยูโกสลาเวีย</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>แรนด์แอฟริกาใต้ (การเงิน)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>แรนด์แอฟริกาใต้</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>กวาชาแซมเบีย</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>นิวแซร์คองโก</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>แซร์คองโก</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>ดอลลาร์ซิมบับเว</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} วัน</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} ชั่วโมง</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} นาที</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} เดือน</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} วินาที</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} สัปดาห์</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} ปี</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ใช่</yesstr>
			<nostr>ไม่</nostr>
		</messages>
	</posix>
</ldml>

PKpG[� ��##Locale/Data/id_ID.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="id"/>
		<territory type="ID"/>
	</identity>
</ldml>
PKpG[Dz'##Locale/Data/it_IT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="it"/>
		<territory type="IT"/>
	</identity>
</ldml>
PKpG[�QL}��Locale/Data/mt.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.77 $"/>
		<generation date="$Date: 2008/06/09 02:17:47 $"/>
		<language type="mt"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">Afar</language>
			<language type="ab">Abkażjan</language>
			<language type="ace">Aċiniż</language>
			<language type="ach">Akoli</language>
			<language type="ada">Adangme</language>
			<language type="ady">Adyghe</language>
			<language type="ae">Avestan</language>
			<language type="af">Afrikans</language>
			<language type="afa">Afro-Asjatiku (Oħra)</language>
			<language type="afh">Afriħili</language>
			<language type="ain">Ajnu</language>
			<language type="ak">Akan</language>
			<language type="akk">Akkadjen</language>
			<language type="ale">Aleut</language>
			<language type="alg">Lingwi Algonqwinjani</language>
			<language type="am">Amħariku</language>
			<language type="an">Aragonese</language>
			<language type="ang">Ingliż, Antik</language>
			<language type="anp">Angika</language>
			<language type="apa">Lingwi Apaċi</language>
			<language type="ar">Għarbi</language>
			<language type="arc">Aramajk</language>
			<language type="arn">Arawkanjan</language>
			<language type="arp">Arapaħo</language>
			<language type="art">Artifiċjali (Oħra)</language>
			<language type="arw">Arawak</language>
			<language type="as">Assamese</language>
			<language type="ast">Asturian</language>
			<language type="ath">Lingwi Atabaskani</language>
			<language type="aus">Lingwi Awstraljani</language>
			<language type="av">Avarik</language>
			<language type="awa">Awadħi</language>
			<language type="ay">Ajmara</language>
			<language type="az">Ażerbajġani</language>
			<language type="ba">Baxkir</language>
			<language type="bad">Banda</language>
			<language type="bai">Lingwi Bamileke</language>
			<language type="bal">Baluċi</language>
			<language type="ban">Baliniż</language>
			<language type="bas">Basa</language>
			<language type="bat">Baltiku (Oħra)</language>
			<language type="be">Belarussu</language>
			<language type="bej">Beja</language>
			<language type="bem">Bemba</language>
			<language type="ber">Beber</language>
			<language type="bg">Bulgaru</language>
			<language type="bh">Biħari</language>
			<language type="bho">Bojpuri</language>
			<language type="bi">Bislama</language>
			<language type="bik">Bikol</language>
			<language type="bin">Bini</language>
			<language type="bla">Siksika</language>
			<language type="bm">Bambara</language>
			<language type="bn">Bengali</language>
			<language type="bnt">Bantu</language>
			<language type="bo">Tibetjan</language>
			<language type="br">Brenton</language>
			<language type="bra">Braj</language>
			<language type="bs">Bosnijan</language>
			<language type="btk">Batak</language>
			<language type="bua">Burjat</language>
			<language type="bug">Buginiż</language>
			<language type="byn">Blin</language>
			<language type="ca">Katalan</language>
			<language type="cad">Kaddo</language>
			<language type="cai">Amerika Ċentrali (Oħra)</language>
			<language type="car">Karib</language>
			<language type="cau">Kawkasu (Oħra)</language>
			<language type="cch">Atsam</language>
			<language type="ce">Ċeċen</language>
			<language type="ceb">Sibwano</language>
			<language type="cel">Keltiku (Oħra)</language>
			<language type="ch">Ċamorro</language>
			<language type="chb">Ċibċa</language>
			<language type="chg">Ċagataj</language>
			<language type="chk">Ċukese</language>
			<language type="chm">Mari</language>
			<language type="chn">Ġargon taċ-Ċinuk</language>
			<language type="cho">Ċostaw</language>
			<language type="chp">Ċipewjan</language>
			<language type="chr">Ċerokij</language>
			<language type="chy">Xajenn</language>
			<language type="cmc">Lingwi Ċamiki</language>
			<language type="co">Korsiku</language>
			<language type="cop">Koptiku</language>
			<language type="cpe">Kreoli u Piġini, Bbażat fuq l-Ingliż (Oħra)</language>
			<language type="cpf">Kreoli u Piġini, Bbażat fuq il-Franċiż (Oħra)</language>
			<language type="cpp">Kreoli u Piġini, Bbażat fuq il-Portugiż (Oħra)</language>
			<language type="cr">Krij</language>
			<language type="crh">Crimean Turkish; Crimean Tatar</language>
			<language type="crp">Kreoli u Piġini (Oħra)</language>
			<language type="cs">Ċek</language>
			<language type="csb">Kashubian</language>
			<language type="cu">Slaviku tal-Knisja</language>
			<language type="cus">Kuxtiku (Oħra)</language>
			<language type="cv">Ċuvax</language>
			<language type="cy">Welx</language>
			<language type="da">Daniż</language>
			<language type="dak">Dakota</language>
			<language type="dar">Dargwa</language>
			<language type="day">Dajak</language>
			<language type="de">Ġermaniż</language>
			<language type="del">Delawerjan</language>
			<language type="den">Slav</language>
			<language type="dgr">Dogrib</language>
			<language type="din">Dinka</language>
			<language type="doi">Dogri</language>
			<language type="dra">Dravidjan (Oħra)</language>
			<language type="dsb">Lower Sorbian</language>
			<language type="dua">Dwala</language>
			<language type="dum">Olandiż, Medjevali</language>
			<language type="dv">Diveħi</language>
			<language type="dyu">Djula</language>
			<language type="dz">Dżongka</language>
			<language type="ee">Ewe</language>
			<language type="efi">Efik</language>
			<language type="egy">Eġizzjan (Antik)</language>
			<language type="eka">Ekajuk</language>
			<language type="el">Grieg</language>
			<language type="elx">Elamit</language>
			<language type="en">Ingliż</language>
			<language type="enm">Ingliż, Medjevali (1100-1500)</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spanjol</language>
			<language type="et">Estonjan</language>
			<language type="eu">Bask</language>
			<language type="ewo">Ewondo</language>
			<language type="fa">Persjan</language>
			<language type="fan">Fang</language>
			<language type="fat">Fanti</language>
			<language type="ff">Fulaħ</language>
			<language type="fi">Finlandiż</language>
			<language type="fil">Filippino</language>
			<language type="fiu">Finno - Ugrijan</language>
			<language type="fj">Fiġi</language>
			<language type="fo">Fawriż</language>
			<language type="fon">Fon</language>
			<language type="fr">Franċiż</language>
			<language type="frm">Franċiż, Medjevali</language>
			<language type="fro">Franċiż, Antik</language>
			<language type="fur">Frijuljan</language>
			<language type="fy">Friżjan</language>
			<language type="ga">Irlandiż</language>
			<language type="gaa">Ga</language>
			<language type="gay">Gajo</language>
			<language type="gba">Gbaja</language>
			<language type="gd">Galliku Skoċċiż</language>
			<language type="gem">Ġermaniku (Oħra)</language>
			<language type="gez">Geez</language>
			<language type="gil">Gilbertjan</language>
			<language type="gl">Gallegjan</language>
			<language type="gmh">Ġermaniku, Medjevali Pulit</language>
			<language type="gn">Gwarani</language>
			<language type="goh">Ġermaniku, Antik Pulit</language>
			<language type="gon">Gondi</language>
			<language type="gor">Gorontalo</language>
			<language type="got">Gotiku</language>
			<language type="grb">Ġerbo</language>
			<language type="grc">Grieg, Antik (to 1453)</language>
			<language type="gu">Guġarati</language>
			<language type="gv">Manks</language>
			<language type="gwi">Gwiċin</language>
			<language type="ha">Ħawsa</language>
			<language type="hai">Ħajda</language>
			<language type="haw">Ħawajjan</language>
			<language type="he">Ebrajk</language>
			<language type="hi">Ħindi</language>
			<language type="hil">Hiligaynon</language>
			<language type="him">Ħimaċali</language>
			<language type="hit">Ħittit</language>
			<language type="hmn">Ħmong</language>
			<language type="ho">Ħiri Motu</language>
			<language type="hr">Kroat</language>
			<language type="hsb">Upper Sorbian</language>
			<language type="ht">Haitian</language>
			<language type="hu">Ungeriż</language>
			<language type="hup">Ħupa</language>
			<language type="hy">Armenjan</language>
			<language type="hz">Ħerero</language>
			<language type="ia">Interlingua</language>
			<language type="iba">Iban</language>
			<language type="id">Indoneżjan</language>
			<language type="ie">Interlingue</language>
			<language type="ig">Igbo</language>
			<language type="ii">Sichuan Yi</language>
			<language type="ijo">Iġo</language>
			<language type="ik">Inupjak</language>
			<language type="ilo">Iloko</language>
			<language type="inc">Indjan (Oħra)</language>
			<language type="ine">Indo-Ewropew</language>
			<language type="inh">Ingush</language>
			<language type="io">Ido</language>
			<language type="ira">Iranjan</language>
			<language type="iro">Lingwi Irogwjani</language>
			<language type="is">Iżlandiż</language>
			<language type="it">Taljan</language>
			<language type="iu">Inukitut</language>
			<language type="ja">Ġappuniż</language>
			<language type="jbo">Lojban</language>
			<language type="jpr">Lhudi-Persjan</language>
			<language type="jrb">Lhudi-Għarbi</language>
			<language type="jv">Ġavaniż</language>
			<language type="ka">Ġorġjan</language>
			<language type="kaa">Kara-Kalpak</language>
			<language type="kab">Kabuljan</language>
			<language type="kac">Kaċin</language>
			<language type="kam">Kamba</language>
			<language type="kar">Karen</language>
			<language type="kaw">Kawi</language>
			<language type="kbd">Kabardian</language>
			<language type="kg">Kongo</language>
			<language type="kha">Kasi</language>
			<language type="khi">Kojsan</language>
			<language type="kho">Kotaniż</language>
			<language type="ki">Kikuju</language>
			<language type="kj">Kuanyama</language>
			<language type="kk">Każak</language>
			<language type="kl">Kalallisut</language>
			<language type="km">Kmer</language>
			<language type="kmb">Kimbundu</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korejan</language>
			<language type="kok">Konkani</language>
			<language type="kos">Kosrejan</language>
			<language type="kpe">Kpelle</language>
			<language type="kr">Kanuri</language>
			<language type="krc">Karachay-Balkar</language>
			<language type="kro">Kru</language>
			<language type="kru">Kurusk</language>
			<language type="ks">Kaxmiri</language>
			<language type="ku">Kurdiż</language>
			<language type="kum">Kumiku</language>
			<language type="kut">Kutenaj</language>
			<language type="kv">Komi</language>
			<language type="kw">Korniku</language>
			<language type="ky">Kirgiż</language>
			<language type="la">Latin</language>
			<language type="lad">Ladino</language>
			<language type="lah">Landa</language>
			<language type="lam">Lamba</language>
			<language type="lb">Letżburgiż</language>
			<language type="lez">Leżgjan</language>
			<language type="lg">Ganda</language>
			<language type="li">Limburgish</language>
			<language type="ln">Lingaljan</language>
			<language type="lo">Lao</language>
			<language type="lol">Mongo</language>
			<language type="loz">Lożi</language>
			<language type="lt">Litwanjan</language>
			<language type="lu">Luba-Katanga</language>
			<language type="lua">Luba-Luluwa</language>
			<language type="lui">Luwisinuż</language>
			<language type="lun">Lunda</language>
			<language type="luo">Luwa</language>
			<language type="lus">Luxaj</language>
			<language type="lv">Latvjan (Lettix)</language>
			<language type="mad">Maduriż</language>
			<language type="mag">Magaħi</language>
			<language type="mai">Majtili</language>
			<language type="mak">Makasar</language>
			<language type="man">Mandingwan</language>
			<language type="map">Awstronesjan</language>
			<language type="mas">Masaj</language>
			<language type="mdf">Moksha</language>
			<language type="mdr">Mandar</language>
			<language type="men">Mende</language>
			<language type="mg">Malagażi</language>
			<language type="mga">Irlandiż, Medjevali (900-1200)</language>
			<language type="mh">Marxall</language>
			<language type="mi">Maori</language>
			<language type="mic">Mikmek</language>
			<language type="min">Minangkabaw</language>
			<language type="mis">Lingwi Oħra</language>
			<language type="mk">Maċedonjan</language>
			<language type="mkh">Mon-Kmer (Oħra)</language>
			<language type="ml">Malajalam</language>
			<language type="mn">Mongoljan</language>
			<language type="mnc">Manċurjan</language>
			<language type="mni">Manipuri</language>
			<language type="mno">Lingwi Manobo</language>
			<language type="mo">Moldavjan</language>
			<language type="moh">Moħak</language>
			<language type="mos">Mossi</language>
			<language type="mr">Marati</language>
			<language type="ms">Malajan</language>
			<language type="mt">Malti</language>
			<language type="mul">Lingwi Diversi</language>
			<language type="mun">Lingwi tal-Munda</language>
			<language type="mus">Kriek</language>
			<language type="mwl">Mirandiż</language>
			<language type="mwr">Marwari</language>
			<language type="my">Burmiż</language>
			<language type="myn">Majan</language>
			<language type="myv">Erzya</language>
			<language type="na">Nawuru</language>
			<language type="nah">Naħwatil</language>
			<language type="nai">Indjan tal-Amerika ta’ Fuq (Oħra)</language>
			<language type="nap">Neapolitan</language>
			<language type="nb">Bokmahal Norveġiż</language>
			<language type="nd">Ndebele, ta’ Fuq</language>
			<language type="nds">Ġermaniż Komuni; Sassonu Komuni</language>
			<language type="ne">Nepaliż</language>
			<language type="new">Newari</language>
			<language type="ng">Ndonga</language>
			<language type="nia">Nijas</language>
			<language type="nic">Niġerjan - Kordofanjan</language>
			<language type="niu">Nijuwejan</language>
			<language type="nl">Olandiż</language>
			<language type="nn">Ninorsk Norveġiż</language>
			<language type="no">Norveġiż</language>
			<language type="nog">Nogai</language>
			<language type="non">Skandinav, Antik</language>
			<language type="nr">Ndebele, t’Isfel</language>
			<language type="nso">Soto, ta’ Fuq</language>
			<language type="nub">Lingwi Nubjani</language>
			<language type="nv">Navaħo</language>
			<language type="nwc">Classical Newari</language>
			<language type="ny">Ċiċewa; Njanġa</language>
			<language type="nym">Njamweżi</language>
			<language type="nyn">Nyankole</language>
			<language type="nyo">Njoro</language>
			<language type="nzi">Nżima</language>
			<language type="oc">Oċċitan</language>
			<language type="oj">Oġibwa</language>
			<language type="om">Oromo (Afan)</language>
			<language type="or">Orija</language>
			<language type="os">Ossettiku</language>
			<language type="osa">Osaġjan</language>
			<language type="ota">Tork (Imperu Ottoman)</language>
			<language type="oto">Lingwi Otomjani</language>
			<language type="pa">Punġabi</language>
			<language type="paa">Papwan (Oħra)</language>
			<language type="pag">Pangasinjan</language>
			<language type="pal">Paħlavi</language>
			<language type="pam">Pampamga</language>
			<language type="pap">Papjamento</language>
			<language type="pau">Palawjan</language>
			<language type="peo">Persjan Antik</language>
			<language type="phi">Filippin (Oħra)</language>
			<language type="phn">Feniċju</language>
			<language type="pi">Pali</language>
			<language type="pl">Pollakk</language>
			<language type="pon">Ponpejan</language>
			<language type="pra">Lingwi Prakriti</language>
			<language type="pro">Provenzal, Antik (sa l-1500)</language>
			<language type="ps">Paxtun</language>
			<language type="pt">Portugiż</language>
			<language type="qu">Keċwa</language>
			<language type="raj">Raġastani</language>
			<language type="rap">Rapanwi</language>
			<language type="rar">Rarotongani</language>
			<language type="rm">Reto-Romanz</language>
			<language type="rn">Rundi</language>
			<language type="ro">Rumen</language>
			<language type="roa">Romanz (Oħra)</language>
			<language type="rom">Żingaru</language>
			<language type="root">Għerq</language>
			<language type="ru">Russu</language>
			<language type="rup">Aromanijan</language>
			<language type="rw">Kinjarwanda</language>
			<language type="sa">Sanskrit</language>
			<language type="sad">Sandawe</language>
			<language type="sah">Jakut</language>
			<language type="sai">Indjan tal-Amerika t’Isfel (Oħra)</language>
			<language type="sal">Salixan</language>
			<language type="sam">Samritan</language>
			<language type="sas">Saska</language>
			<language type="sat">Santali</language>
			<language type="sc">Sardinjan</language>
			<language type="sco">Skoċċiż</language>
			<language type="sd">Sindi</language>
			<language type="se">Sami ta’ Fuq</language>
			<language type="sel">Selkup</language>
			<language type="sem">Semitiku</language>
			<language type="sg">Sango</language>
			<language type="sga">Irlandiż, Antik (sa l-900)</language>
			<language type="sgn">Lingwa tas-Sinjali</language>
			<language type="sh">Serbo-Kroat</language>
			<language type="shn">Xan</language>
			<language type="si">Sinħaliż</language>
			<language type="sid">Sidamo</language>
			<language type="sio">Lingwi Suwjani</language>
			<language type="sit">Sino-Tibetjani (Oħra)</language>
			<language type="sk">Slovakk</language>
			<language type="sl">Sloven</language>
			<language type="sla">Slavic (Other)</language>
			<language type="sm">Samojan</language>
			<language type="sma">Southern Sami</language>
			<language type="smi">Sami languages (Other)</language>
			<language type="smj">Lule Sami</language>
			<language type="smn">Inari Sami</language>
			<language type="sms">Skolt Sami</language>
			<language type="sn">Xona</language>
			<language type="snk">Soninke</language>
			<language type="so">Somali</language>
			<language type="sog">Sogdien</language>
			<language type="son">Songaj</language>
			<language type="sq">Albaniż</language>
			<language type="sr">Serb</language>
			<language type="srr">Serer</language>
			<language type="ss">Swati</language>
			<language type="ssa">Nilo-Saħaram</language>
			<language type="st">Soto, t’Isfel</language>
			<language type="su">Sundaniż</language>
			<language type="suk">Sukuma</language>
			<language type="sus">Susu</language>
			<language type="sux">Sumerjan</language>
			<language type="sv">Svediż</language>
			<language type="sw">Swaħili</language>
			<language type="syr">Sirjan</language>
			<language type="ta">Tamil</language>
			<language type="tai">Tai (Oħra)</language>
			<language type="te">Telugu</language>
			<language type="tem">Timne</language>
			<language type="ter">Tereno</language>
			<language type="tet">Tetum</language>
			<language type="tg">Taġik</language>
			<language type="th">Tajlandiż</language>
			<language type="ti">Tigrinja</language>
			<language type="tig">Tigre</language>
			<language type="tiv">Tiv</language>
			<language type="tk">Turkmeni</language>
			<language type="tkl">Tokelau</language>
			<language type="tl">Tagalog</language>
			<language type="tlh">Klingon</language>
			<language type="tli">Tlingit</language>
			<language type="tmh">Tamaxek</language>
			<language type="tn">Zwana</language>
			<language type="to">Tongan (Gżejjer ta’ Tonga)</language>
			<language type="tog">Tonga (Njasa)</language>
			<language type="tpi">Tok Pisin</language>
			<language type="tr">Tork</language>
			<language type="ts">Tsonga</language>
			<language type="tsi">Zimxjan</language>
			<language type="tt">Tatar</language>
			<language type="tum">Tumbuka</language>
			<language type="tup">Tupi languages</language>
			<language type="tut">Altajk (Oħra)</language>
			<language type="tvl">Tuvalu</language>
			<language type="tw">Twi</language>
			<language type="ty">Taħitjan</language>
			<language type="tyv">Tuvinjan</language>
			<language type="udm">Udmurt</language>
			<language type="ug">Wigur</language>
			<language type="uga">Ugaritiku</language>
			<language type="uk">Ukranjan</language>
			<language type="umb">Umbundu</language>
			<language type="und">Indeterminat</language>
			<language type="ur">Urdu</language>
			<language type="uz">Użbek</language>
			<language type="vai">Vai</language>
			<language type="ve">Venda</language>
			<language type="vi">Vjetnamiż</language>
			<language type="vo">Volapuk</language>
			<language type="vot">Votik</language>
			<language type="wa">Walloon</language>
			<language type="wak">Lingwi Wakaxani</language>
			<language type="wal">Walamo</language>
			<language type="war">Waraj</language>
			<language type="was">Waxo</language>
			<language type="wen">Lingwi Sorbjani</language>
			<language type="wo">Wolof</language>
			<language type="xal">Kalmyk</language>
			<language type="xh">Ħoża</language>
			<language type="yao">Jao</language>
			<language type="yap">Japese</language>
			<language type="yi">Jiddix</language>
			<language type="yo">Joruba</language>
			<language type="ypk">Lingwi Jupiċi</language>
			<language type="za">Żwang</language>
			<language type="zap">Żapotek</language>
			<language type="zen">Żenaga</language>
			<language type="zh">Ċiniż</language>
			<language type="znd">Żande</language>
			<language type="zu">Żulu</language>
			<language type="zun">Żuni</language>
		</languages>
		<scripts>
			<script type="Arab">Għarbi</script>
			<script type="Grek">Grieg</script>
			<script type="Hans">Ħan Sempliċi</script>
			<script type="Hant">Ħan Tradizzjonali</script>
			<script type="Latn">Latin</script>
			<script type="Xpeo">Persjan Antik</script>
			<script type="Zxxx">Mhux Miktub</script>
			<script type="Zyyy">Komuni</script>
			<script type="Zzzz">Skritt Mhux Magħruf jew Mhux Validu</script>
		</scripts>
		<territories>
			<territory type="001">Dinja</territory>
			<territory type="002">Affrika</territory>
			<territory type="003">Amerika ta’ Fuq</territory>
			<territory type="005">Amerika t’Isfel</territory>
			<territory type="009">Oċejanja</territory>
			<territory type="011">Affrika tal-Punent</territory>
			<territory type="013">Amerika Ċentrali</territory>
			<territory type="014">Affrika tal-Lvant</territory>
			<territory type="015">Affrika ta’ Fuq</territory>
			<territory type="017">Affrika Nofsani</territory>
			<territory type="018">Affrika t’Isfel</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Amerika Nòrdiku</territory>
			<territory type="029">Karibew</territory>
			<territory type="030">Asja tal-Lvant</territory>
			<territory type="034">Asja t’Isfel Ċentrali</territory>
			<territory type="035">Asja tax-Xlokk</territory>
			<territory type="039">Ewropa t’Isfel</territory>
			<territory type="053">Awstralja u New Zealand</territory>
			<territory type="054">Melanesja</territory>
			<territory type="057">Reġjun ta’ Mikroneżja</territory>
			<territory type="061">Polinesja</territory>
			<territory type="142">Asja</territory>
			<territory type="143">Asja Ċentrali</territory>
			<territory type="145">Asja tal-Punent</territory>
			<territory type="150">Ewropa</territory>
			<territory type="151">Ewropa tal-Lvant</territory>
			<territory type="154">Ewropa ta’ Fuq</territory>
			<territory type="155">Ewropa tal-Punent</territory>
			<territory type="172">Commonwealth tal-Istati Independenti</territory>
			<territory type="419">Amerika Latina u l-Karibew</territory>
			<territory type="830">Gżejjer tal-Kanal Ingliż</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emirati Għarab Maqgħuda</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua and Barbuda</territory>
			<territory type="AI">Angwilla</territory>
			<territory type="AL">Albanija</territory>
			<territory type="AM">Armenja</territory>
			<territory type="AN">Antilles Olandiżi</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antartika</territory>
			<territory type="AR">Arġentina</territory>
			<territory type="AS">Samoa Amerikana</territory>
			<territory type="AT">Awstrija</territory>
			<territory type="AU">Awstralja</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Gżejjer Aland</territory>
			<territory type="AZ">Ażerbajġan</territory>
			<territory type="BA">Bożnija Ħerżegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladexx</territory>
			<territory type="BE">Belġju</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarija</territory>
			<territory type="BH">Baħrajn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunej</territory>
			<territory type="BO">Bolivja</territory>
			<territory type="BR">Brażil</territory>
			<territory type="BS">Baħamas</territory>
			<territory type="BT">Butan</territory>
			<territory type="BV">Bouvet Island</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bjelorussja</territory>
			<territory type="BZ">Beliże</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Cocos (Keeling) Islands</territory>
			<territory type="CD">Democratic Republic of the Congo</territory>
			<territory type="CF">Repubblika Afrikana Ċentrali</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Svizzera</territory>
			<territory type="CI">Kosta ta’ l-Avorju</territory>
			<territory type="CK">Cook Islands</territory>
			<territory type="CL">Ċili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Ċina</territory>
			<territory type="CO">Kolumbja</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Serbja u Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kape Verde</territory>
			<territory type="CX">Christmas Island</territory>
			<territory type="CY">Ċipru</territory>
			<territory type="CZ">Repubblika Ċeka</territory>
			<territory type="DE">Ġermanja</territory>
			<territory type="DJ">Ġibuti</territory>
			<territory type="DK">Danimarka</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Republikka Domenikana</territory>
			<territory type="DZ">Alġerija</territory>
			<territory type="EC">Ekwador</territory>
			<territory type="EE">Estonja</territory>
			<territory type="EG">Eġittu</territory>
			<territory type="EH">Sahara tal-Punent</territory>
			<territory type="ER">Eritreja</territory>
			<territory type="ES">Spanja</territory>
			<territory type="ET">Etijopja</territory>
			<territory type="FI">Finlandja</territory>
			<territory type="FJ">Fiġi</territory>
			<territory type="FK">Falkland Islands</territory>
			<territory type="FM">Mikronesja</territory>
			<territory type="FO">Gżejjer Faroe</territory>
			<territory type="FR">Franza</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Ingilterra</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Ġorġja</territory>
			<territory type="GF">Gujana Franċiża</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Grinlandja</territory>
			<territory type="GM">Gambja</territory>
			<territory type="GN">Gineja</territory>
			<territory type="GP">Gwadelupe</territory>
			<territory type="GQ">Ginea Ekwatorjali</territory>
			<territory type="GR">Greċja</territory>
			<territory type="GS">South Georgia and the South Sandwich Islands</territory>
			<territory type="GT">Gwatemala</territory>
			<territory type="GU">Gwam</territory>
			<territory type="GW">Ginea-Bissaw</territory>
			<territory type="GY">Gujana</territory>
			<territory type="HK">Ħong Kong S.A.R., Ċina</territory>
			<territory type="HM">Heard Island and McDonald Islands</territory>
			<territory type="HN">Ħonduras</territory>
			<territory type="HR">Kroazja</territory>
			<territory type="HT">Ħaiti</territory>
			<territory type="HU">Ungerija</territory>
			<territory type="ID">Indoneżja</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Iżrael</territory>
			<territory type="IM">Isle of Man</territory>
			<territory type="IN">Indja</territory>
			<territory type="IO">British Indian Ocean Territory</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islanda</territory>
			<territory type="IT">Italja</territory>
			<territory type="JM">Ġamajka</territory>
			<territory type="JO">Ġordan</territory>
			<territory type="JP">Ġappun</territory>
			<territory type="KE">Kenja</territory>
			<territory type="KG">Kirgistan</territory>
			<territory type="KH">Kambodja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoros</territory>
			<territory type="KN">Saint Kitts and Nevis</territory>
			<territory type="KP">Koreja ta’ Fuq</territory>
			<territory type="KR">Koreja t’Isfel</territory>
			<territory type="KW">Kuwajt</territory>
			<territory type="KY">Gżejjer Kajmani</territory>
			<territory type="KZ">Każakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanu</territory>
			<territory type="LC">Santa Luċija</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberja</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litwanja</territory>
			<territory type="LU">Lussemburgu</territory>
			<territory type="LV">Latvja</territory>
			<territory type="LY">Libja</territory>
			<territory type="MA">Marokk</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Maldova</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Gżejjer ta’ Marshall</territory>
			<territory type="MK">Maċedonja</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mjanmar</territory>
			<territory type="MN">Mongolja</territory>
			<territory type="MO">Macao S.A.R., China</territory>
			<territory type="MP">Gżejjer Marjana ta’ Fuq</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mawritanja</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mawrizju</territory>
			<territory type="MV">Maldives</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Messiku</territory>
			<territory type="MY">Malasja</territory>
			<territory type="MZ">Możambik</territory>
			<territory type="NA">Namibja</territory>
			<territory type="NC">New Caledonia</territory>
			<territory type="NE">Niġer</territory>
			<territory type="NF">Norfolk Island</territory>
			<territory type="NG">Niġerja</territory>
			<territory type="NI">Nikaragwa</territory>
			<territory type="NL">Olanda</territory>
			<territory type="NO">Norveġja</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polinesja Franċiża</territory>
			<territory type="PG">Papwa-Ginea Ġdida</territory>
			<territory type="PH">Filippini</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonja</territory>
			<territory type="PM">Saint Pierre and Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinian Territory</territory>
			<territory type="PT">Portugall</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragwaj</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QU">Unjoni Ewropea</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumanija</territory>
			<territory type="RU">Russja</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Għarabja Sawdita</territory>
			<territory type="SB">Solomon Islands</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Żvezja</territory>
			<territory type="SG">Singapor</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenja</territory>
			<territory type="SJ">Svalbard and Jan Mayen</territory>
			<territory type="SK">Slovakkja</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalja</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome and Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Sirja</territory>
			<territory type="SZ">Sważiland</territory>
			<territory type="TC">Turks and Caicos Islands</territory>
			<territory type="TD">Ċad</territory>
			<territory type="TF">Territorji Franċiżi ta’ Nofsinhar</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajlandja</territory>
			<territory type="TJ">Taġikistan</territory>
			<territory type="TK">Tokelaw</territory>
			<territory type="TL">Timor tal-Lvant</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tuneż</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkija</territory>
			<territory type="TT">Trinidad u Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajwan</territory>
			<territory type="TZ">Tanżanija</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">United States Minor Outlying Islands</territory>
			<territory type="US">Stati Uniti</territory>
			<territory type="UY">Urugwaj</territory>
			<territory type="UZ">Użbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent and the Grenadines</territory>
			<territory type="VE">Venezwela</territory>
			<territory type="VG">British Virgin Islands</territory>
			<territory type="VI">U.S. Virgin Islands</territory>
			<territory type="VN">Vjetnam</territory>
			<territory type="VU">Vanwatu</territory>
			<territory type="WF">Wallis and Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Majotte</territory>
			<territory type="ZA">Afrika t’Isfel</territory>
			<territory type="ZM">Żambja</territory>
			<territory type="ZW">Żimbabwe</territory>
			<territory type="ZZ">Reġjun Mhux Magħruf jew Mhux Validu</territory>
		</territories>
		<variants>
			<variant type="REVISED">Ortografija Irriveda</variant>
		</variants>
		<keys>
			<key type="calendar">Kalendarju</key>
			<key type="collation">Kollazjoni</key>
			<key type="currency">Munita</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Ordni Ċiniż Tradizzjonali (Big5)</type>
			<type type="buddhist" key="calendar">Kalendarju Buddist</type>
			<type type="chinese" key="calendar">Kalendarju Ċiniż</type>
			<type type="direct" key="collation">Ordni Diretta</type>
			<type type="gb2312han" key="collation">Ordni Ċiniż Sempliċi (GB2312)</type>
			<type type="gregorian" key="calendar">Kalendarju Gregorjan</type>
			<type type="hebrew" key="calendar">Kalendarju Ebrajk</type>
			<type type="islamic" key="calendar">Kalendarju Islamiku</type>
			<type type="islamic-civil" key="calendar">Kalendarju Islamiku-Ċivili</type>
			<type type="japanese" key="calendar">Kalendarju Ġappuniż</type>
			<type type="phonebook" key="collation">Ordni Telefonika</type>
			<type type="pinyin" key="collation">Ordni tal-Pinjin</type>
			<type type="stroke" key="collation">Ordni Maħżuża</type>
			<type type="traditional" key="collation">Tradizzjonali</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="metric">Metriku</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Lingwa: {0}</codePattern>
			<codePattern type="script">Skritt: {0}</codePattern>
			<codePattern type="territory">Reġjun: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b ċ d e è f ġ g {għ} h ħ i ì j-o ò p-u ù v-x ż z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c y]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Fra</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">Mej</month>
							<month type="6">Ġun</month>
							<month type="7">Lul</month>
							<month type="8">Awi</month>
							<month type="9">Set</month>
							<month type="10">Ott</month>
							<month type="11">Nov</month>
							<month type="12">Diċ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Jannar</month>
							<month type="2">Frar</month>
							<month type="3">Marzu</month>
							<month type="4">April</month>
							<month type="5">Mejju</month>
							<month type="6">Ġunju</month>
							<month type="7">Lulju</month>
							<month type="8">Awissu</month>
							<month type="9">Settembru</month>
							<month type="10">Ottubru</month>
							<month type="11">Novembru</month>
							<month type="12">Diċembru</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">Ġ</month>
							<month type="7">L</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ħad</day>
							<day type="mon">Tne</day>
							<day type="tue">Tli</day>
							<day type="wed">Erb</day>
							<day type="thu">Ħam</day>
							<day type="fri">Ġim</day>
							<day type="sat">Sib</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Il-Ħadd</day>
							<day type="mon">It-Tnejn</day>
							<day type="tue">It-Tlieta</day>
							<day type="wed">L-Erbgħa</day>
							<day type="thu">Il-Ħamis</day>
							<day type="fri">Il-Ġimgħa</day>
							<day type="sat">Is-Sibt</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">Ħ</day>
							<day type="mon">T</day>
							<day type="tue">T</day>
							<day type="wed">E</day>
							<day type="thu">Ħ</day>
							<day type="fri">Ġ</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>QN</am>
				<pm>WN</pm>
				<eras>
					<eraNames>
						<era type="0">Qabel Kristu</era>
						<era type="1">Wara Kristu</era>
					</eraNames>
					<eraAbbr>
						<era type="0">QK</era>
						<era type="1">WK</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d 'ta'’ MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'ta'’ MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d 'ta'’ MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMM">MMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d 'ta'’ MMM - E, d 'ta'’ MMM</greatestDifference>
							<greatestDifference id="d">E, d 'ta'’ - E, d 'ta'’ MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'ta'’ MMM - d 'ta'’ MMM</greatestDifference>
							<greatestDifference id="d">d 'ta'’-d 'ta'’ MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d 'ta'’ MMM - E, d 'ta'’ MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d 'ta'’ - E, d 'ta'’ MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d 'ta'’ MMM yyyy - E, d 'ta'’ MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'ta'’ MMM - d 'ta'’ MMM yyyy</greatestDifference>
							<greatestDifference id="d">d 'ta'’-d 'ta'’ MMM yyyy</greatestDifference>
							<greatestDifference id="y">d 'ta'’ MMM yyyy - d 'ta'’ MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Epoka</displayName>
					</field>
					<field type="year">
						<displayName>Sena</displayName>
					</field>
					<field type="month">
						<displayName>Xahar</displayName>
					</field>
					<field type="week">
						<displayName>Ġimgħa</displayName>
					</field>
					<field type="day">
						<displayName>Jum</displayName>
						<relative type="0">Illum</relative>
						<relative type="1">Għada</relative>
						<relative type="-1">Lbieraħ</relative>
					</field>
					<field type="weekday">
						<displayName>Jum tal-Ġimgħa</displayName>
					</field>
					<field type="hour">
						<displayName>Siegħa</displayName>
					</field>
					<field type="minute">
						<displayName>Minuta</displayName>
					</field>
					<field type="second">
						<displayName>Sekonda</displayName>
					</field>
					<field type="zone">
						<displayName>Żona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Ħin ta’ {0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Mhux Magħruf</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londra</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Valletta</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Ħin Ċentrali Ewropew</standard>
					<daylight>Ħin Ċentrali Ewropew tas-Sajf</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="EUR">
				<displayName>Ewro</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Lira Maltija</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Munita Mhux Magħruf jew Mhux Validu</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>iva:i</yesstr>
			<nostr>le:l</nostr>
		</messages>
	</posix>
</ldml>
PKpG[{a��ccLocale/Data/gaa.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="gaa"/>
	</identity>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Aha</month>
							<month type="2">Ofl</month>
							<month type="3">Och</month>
							<month type="4">Abe</month>
							<month type="5">Agb</month>
							<month type="6">Otu</month>
							<month type="7">Maa</month>
							<month type="8">Man</month>
							<month type="9">Gbo</month>
							<month type="10">Ant</month>
							<month type="11">Ale</month>
							<month type="12">Afu</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Aharabata</month>
							<month type="2">Oflo</month>
							<month type="3">Ochokrikri</month>
							<month type="4">Abeibee</month>
							<month type="5">Agbeinaa</month>
							<month type="6">Otukwadan</month>
							<month type="7">Maawe</month>
							<month type="8">Manyawale</month>
							<month type="9">Gbo</month>
							<month type="10">Anton</month>
							<month type="11">Alemle</month>
							<month type="12">Afuabee</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ho</day>
							<day type="mon">Dzu</day>
							<day type="tue">Dzf</day>
							<day type="wed">Sho</day>
							<day type="thu">Soo</day>
							<day type="fri">Soh</day>
							<day type="sat">Ho</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Hogbaa</day>
							<day type="mon">Dzu</day>
							<day type="tue">Dzufo</day>
							<day type="wed">Sho</day>
							<day type="thu">Soo</day>
							<day type="fri">Sohaa</day>
							<day type="sat">Ho</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>LB</am>
				<pm>SN</pm>
				<eras>
					<eraNames>
						<era type="0">Dani Jesu</era>
						<era type="1">KJ</era>
					</eraNames>
					<eraAbbr>
						<era type="0">DJ</era>
						<era type="1">KJ</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencies>
			<currency type="GHC">
				<displayName>Sidi</displayName>
				<symbol>¢</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[h��88Locale/Data/ru_UA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="ru"/>
		<territory type="UA"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="apa">апачский</language>
			<language type="den">слэйви</language>
			<language type="mh">маршальский</language>
			<language type="tlh">клингон</language>
		</languages>
		<measurementSystemNames>
			<measurementSystemName type="US">US</measurementSystemName>
			<measurementSystemName type="metric">Metric</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH 'ч.'</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH 'ч.', v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy 'г'.</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy 'г'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">LLLL-LLLL yyyy</greatestDifference>
							<greatestDifference id="y">LLLL yyyy - LLLL yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="ESB">
				<displayName>ESB</displayName>
			</currency>
			<currency type="RHD">
				<displayName>RHD</displayName>
			</currency>
			<currency type="YUM">
				<displayName>YUM</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[���##Locale/Data/aa_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="aa"/>
		<territory type="ET"/>
	</identity>
</ldml>
PKpG[�$""Locale/Data/ha_Latn.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.11 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ha"/>
		<script type="Latn"/>
	</identity>
</ldml>
PKpG[o�F�U�ULocale/Data/ms.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.59 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="ms"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikaans</language>
			<language type="am">Amharic</language>
			<language type="ar">Arab</language>
			<language type="as">Assam</language>
			<language type="az">Azerbaijan</language>
			<language type="be">Belarus</language>
			<language type="bg">Bulgaria</language>
			<language type="bh">Bihari</language>
			<language type="bn">Benggala</language>
			<language type="br">Brittany</language>
			<language type="bs">Bosnia</language>
			<language type="ca">Catalonia</language>
			<language type="cs">Czech</language>
			<language type="cy">Wales</language>
			<language type="da">Denmark</language>
			<language type="de">Jerman</language>
			<language type="el">Greek</language>
			<language type="en">Inggeris</language>
			<language type="eo">Esperanto</language>
			<language type="es">Sepanyol</language>
			<language type="et">Estonia</language>
			<language type="eu">Basque</language>
			<language type="fa">Parsi</language>
			<language type="fi">Finland</language>
			<language type="fil">Tagalog</language>
			<language type="fo">Faroese</language>
			<language type="fr">Perancis</language>
			<language type="fy">Frisian</language>
			<language type="ga">Ireland</language>
			<language type="gd">Scots Gaelic</language>
			<language type="gl">Galicia</language>
			<language type="gn">Guarani</language>
			<language type="gu">Gujerat</language>
			<language type="he">Ibrani</language>
			<language type="hi">Hindi</language>
			<language type="hr">Croat</language>
			<language type="hu">Hungary</language>
			<language type="hy">Armenia</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesia</language>
			<language type="ie">Interlingue</language>
			<language type="is">Iceland</language>
			<language type="it">Itali</language>
			<language type="ja">Jepun</language>
			<language type="jv">Jawa</language>
			<language type="ka">Georgia</language>
			<language type="km">Khmer</language>
			<language type="kn">Kannada</language>
			<language type="ko">Korea</language>
			<language type="ku">Kurdish</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Latin</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laos</language>
			<language type="lt">Lithuania</language>
			<language type="lv">Latvia</language>
			<language type="mk">Macedonia</language>
			<language type="ml">Malayalam</language>
			<language type="mn">Mongolia</language>
			<language type="mr">Marathi</language>
			<language type="ms">Bahasa Melayu</language>
			<language type="mt">Malta</language>
			<language type="ne">Nepal</language>
			<language type="nl">Belanda</language>
			<language type="nn">Nynorsk Norway</language>
			<language type="no">Norway</language>
			<language type="oc">Occitan</language>
			<language type="or">Oriya</language>
			<language type="pa">Punjabi</language>
			<language type="pl">Poland</language>
			<language type="ps">Pashto</language>
			<language type="pt">Portugis</language>
			<language type="pt_PT">Portugis Iberia</language>
			<language type="ro">Romania</language>
			<language type="ru">Rusia</language>
			<language type="sa">Sanskrit</language>
			<language type="sd">Sindhi</language>
			<language type="sh">SerboCroatia</language>
			<language type="si">Sinhala</language>
			<language type="sk">Slovak</language>
			<language type="sl">Slovenia</language>
			<language type="so">Somali</language>
			<language type="sq">Albania</language>
			<language type="sr">Serbia</language>
			<language type="st">Sesoto</language>
			<language type="su">Sunda</language>
			<language type="sv">Sweden</language>
			<language type="sw">Swahili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugu</language>
			<language type="th">Thai</language>
			<language type="ti">Tigrinya</language>
			<language type="tk">Turkmen</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Turki</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighur</language>
			<language type="uk">Ukraine</language>
			<language type="ur">Urdu</language>
			<language type="uz">Uzbek</language>
			<language type="vi">Vietnam</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Yahudi</language>
			<language type="zu">Zulu</language>
		</languages>
		<territories>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emiriah Arab Bersatu</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua dan Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Netherlands Antilles</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">American Samoa</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AZ">Azerbaijan</territory>
			<territory type="BA">Bosnia dan Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgium</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet Island</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Belarus</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Cocos (Keeling) Islands</territory>
			<territory type="CD">Democratic Republic of the Congo</territory>
			<territory type="CF">Republik Afrika Tengah</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Switzerland</territory>
			<territory type="CI">Pantai Gading</territory>
			<territory type="CK">Cook Islands</territory>
			<territory type="CL">Cile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Cina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CS">Serbia dan Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cape Verde</territory>
			<territory type="CX">Christmas Island</territory>
			<territory type="CY">Kibris</territory>
			<territory type="CZ">Republik Czech</territory>
			<territory type="DE">Jerman</territory>
			<territory type="DJ">Jibouti</territory>
			<territory type="DK">Denmark</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Republik Dominican</territory>
			<territory type="DZ">Aljazair</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Mesir</territory>
			<territory type="EH">Sahara Barat</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Sepanyol</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fiji</territory>
			<territory type="FK">Falkland Islands</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Faroe Islands</territory>
			<territory type="FR">Perancis</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">French Guiana</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Greenland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Equatorial Guinea</territory>
			<territory type="GR">Yunani</territory>
			<territory type="GS">South Georgia and the South Sandwich Islands</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong S.A.R., China</territory>
			<territory type="HM">Heard Island and McDonald Islands</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungari</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Ireland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IN">Hindia</territory>
			<territory type="IO">British Indian Ocean Territory</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Iceland</territory>
			<territory type="IT">Itali</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Jepun</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kyrgyzstan</territory>
			<territory type="KH">Kemboja</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoros</territory>
			<territory type="KN">Saint Kitts dan Nevis</territory>
			<territory type="KP">Utara Korea</territory>
			<territory type="KR">Selatan Korea</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Cayman Islands</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lubnan</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lithuania</territory>
			<territory type="LU">Luksembourg</territory>
			<territory type="LV">Latvia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Maghribi</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Kepulauan Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao S.A.R., China</territory>
			<territory type="MP">Northern Mariana Islands</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldiv</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">New Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk Island</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Belanda</territory>
			<territory type="NO">Norway</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">New Zealand</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">French Polynesia</territory>
			<territory type="PG">Papua New Guinea</territory>
			<territory type="PH">Filipina</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poland</territory>
			<territory type="PM">Saint Pierre and Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestinian Territory</territory>
			<territory type="PT">Feringgi</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Romania</territory>
			<territory type="RU">Russia</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Arab Saudi</territory>
			<territory type="SB">Kepulauan Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Sweden</territory>
			<territory type="SG">Singapura</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SJ">Svalbard and Jan Mayen</territory>
			<territory type="SK">Slovakia</territory>
			<territory type="SL">Siera Leon</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sao Tome dan Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Turks and Caicos Islands</territory>
			<territory type="TD">Cad</territory>
			<territory type="TF">French Southern Territories</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor-Leste</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turki</territory>
			<territory type="TT">Trinidad dan Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">United States Minor Outlying Islands</territory>
			<territory type="US">Amerika Syarikat</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Vatican</territory>
			<territory type="VC">Saint Vincent dan Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">British Virgin Islands</territory>
			<territory type="VI">U.S. Virgin Islands</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis and Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yaman</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Afrika Selatan</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a {ai} {au} b-d {dz} e-k {kh} l-n {ng} {ngg} {ny} o-s {sy} t {ts} u {ua} v-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mac</month>
							<month type="4">Apr</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Ogos</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januari</month>
							<month type="2">Februari</month>
							<month type="3">Mac</month>
							<month type="4">April</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Julai</month>
							<month type="8">Ogos</month>
							<month type="9">September</month>
							<month type="10">Oktober</month>
							<month type="11">November</month>
							<month type="12">Disember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Ahd</day>
							<day type="mon">Isn</day>
							<day type="tue">Sel</day>
							<day type="wed">Rab</day>
							<day type="thu">Kha</day>
							<day type="fri">Jum</day>
							<day type="sat">Sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Ahad</day>
							<day type="mon">Isnin</day>
							<day type="tue">Selasa</day>
							<day type="wed">Rabu</day>
							<day type="thu">Khamis</day>
							<day type="fri">Jumaat</day>
							<day type="sat">Sabtu</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">S1</quarter>
							<quarter type="2">S2</quarter>
							<quarter type="3">S3</quarter>
							<quarter type="4">S4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">suku pertama</quarter>
							<quarter type="2">suku kedua</quarter>
							<quarter type="3">suku ketiga</quarter>
							<quarter type="4">suku keempat</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">S.M.</era>
						<era type="1">T.M.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hmm">H:mm</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;(¤#,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="MYR">
				<displayName>Ringgit Malaysia</displayName>
				<symbol>RM</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ya:y</yesstr>
			<nostr>tidak:t</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ͪ����Locale/Data/en_ZW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="ZW"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM,yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/M - E d/M</greatestDifference>
							<greatestDifference id="d">E d/M - E d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a - h a</greatestDifference>
							<greatestDifference id="h">h-h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a - h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a - h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm-h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm-h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a - h a v</greatestDifference>
							<greatestDifference id="h">h-h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yyyy - M/yyyy</greatestDifference>
							<greatestDifference id="y">M/yyyy - M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/M/yyyy - E d/M/yyyy</greatestDifference>
							<greatestDifference id="d">E d/M/yyyy - E d/M/yyyy</greatestDifference>
							<greatestDifference id="y">E d/M/yyyy - E d/M/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd MMM - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">E dd - E dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">E dd MMM yyyy - E dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yyyy - d/M/yyyy</greatestDifference>
							<greatestDifference id="d">d/M/yyyy - d/M/yyyy</greatestDifference>
							<greatestDifference id="y">d/M/yyyy - d/M/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Africa_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZWD">
				<displayName>Zimbabwean Dollar</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[W-h!!Locale/Data/ar_QA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="QA"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###;#0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[	��,�P�PLocale/Data/ia.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:32 $"/>
		<language type="ia"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikaans</language>
			<language type="am">amharico</language>
			<language type="ar">arabe</language>
			<language type="as">Assamese</language>
			<language type="az">azerbaidzhani</language>
			<language type="be">bielorusso</language>
			<language type="bg">bulgaro</language>
			<language type="bh">bihari</language>
			<language type="bn">bengali</language>
			<language type="br">breton</language>
			<language type="bs">bosniaco</language>
			<language type="ca">catalano</language>
			<language type="cs">checo</language>
			<language type="cy">gallese</language>
			<language type="da">danese</language>
			<language type="de">germano</language>
			<language type="el">greco</language>
			<language type="en">anglese</language>
			<language type="en_GB">anglese (RU)</language>
			<language type="en_US">anglese (SUA)</language>
			<language type="eo">esperanto</language>
			<language type="es">espaniol</language>
			<language type="et">estoniano</language>
			<language type="eu">basco</language>
			<language type="fa">persiano</language>
			<language type="fi">finnese</language>
			<language type="fil">tagalog</language>
			<language type="fo">faroese</language>
			<language type="fr">francese</language>
			<language type="fy">frisiano</language>
			<language type="ga">irlandese</language>
			<language type="gd">scoto gaelic</language>
			<language type="gl">gallego</language>
			<language type="gn">guarani</language>
			<language type="gu">gujarati</language>
			<language type="he">hebreo</language>
			<language type="hi">hindi</language>
			<language type="hr">croato</language>
			<language type="hu">hungaro</language>
			<language type="hy">armeniano</language>
			<language type="ia">interlingua</language>
			<language type="id">indonesiano</language>
			<language type="ie">Interlingue</language>
			<language type="is">islandese</language>
			<language type="it">italiano</language>
			<language type="ja">japonese</language>
			<language type="jv">javanese</language>
			<language type="ka">georgiano</language>
			<language type="km">Cambodiano</language>
			<language type="kn">kannada</language>
			<language type="ko">coreano</language>
			<language type="ku">kurdo</language>
			<language type="ky">kirghizo</language>
			<language type="la">latino</language>
			<language type="ln">lingala</language>
			<language type="lo">laotiano</language>
			<language type="lt">lithuano</language>
			<language type="lv">letton</language>
			<language type="mk">macedone</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolico</language>
			<language type="mr">marathi</language>
			<language type="ms">malay</language>
			<language type="mt">maltese</language>
			<language type="ne">nepalese</language>
			<language type="nl">nederlandese</language>
			<language type="nn">norvegiano (nynorsk)</language>
			<language type="no">norvegiano</language>
			<language type="oc">occitano</language>
			<language type="or">oriya</language>
			<language type="pa">punjabi</language>
			<language type="pl">polonese</language>
			<language type="ps">pashto</language>
			<language type="pt">portugese</language>
			<language type="ro">romaniano</language>
			<language type="ru">russo</language>
			<language type="sa">sanscrito</language>
			<language type="sd">sindhi</language>
			<language type="sh">serbocroate</language>
			<language type="si">sinhalese</language>
			<language type="sk">slovaco</language>
			<language type="sl">sloveno</language>
			<language type="so">somali</language>
			<language type="sq">albanese</language>
			<language type="sr">serbo</language>
			<language type="st">sesotho</language>
			<language type="su">sundanese</language>
			<language type="sv">svedese</language>
			<language type="sw">swahili</language>
			<language type="ta">tamil</language>
			<language type="te">telugu</language>
			<language type="th">thai</language>
			<language type="ti">tigrinya</language>
			<language type="tk">turkmeno</language>
			<language type="tlh">Klingon</language>
			<language type="tr">turco</language>
			<language type="tw">twi</language>
			<language type="ug">Uyghur</language>
			<language type="uk">ukrainiano</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbeco</language>
			<language type="vi">vietnamese</language>
			<language type="xh">xhosa</language>
			<language type="yi">yiddish</language>
			<language type="zu">zulu</language>
		</languages>
		<territories>
			<territory type="AE">Emiratos Arabe Unite</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua e Barbuda</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antillas nederlandese</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarctica</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa american</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AZ">Azerbaidzhan</territory>
			<territory type="BA">Bosnia e Herzegovina</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgica</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Insula de Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorussia</territory>
			<territory type="CA">Canada</territory>
			<territory type="CF">Republica African Central</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Suissa</territory>
			<territory type="CK">Insulas Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Camerun</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CX">Insula de Natal</territory>
			<territory type="CY">Cypro</territory>
			<territory type="CZ">Republica Tchec</territory>
			<territory type="DE">Germania</territory>
			<territory type="DK">Danmark</territory>
			<territory type="DO">Republica Dominican</territory>
			<territory type="DZ">Algeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egypto</territory>
			<territory type="EH">Sahara occidental</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Espania</territory>
			<territory type="ET">Ethiopia</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Insulas Feroe</territory>
			<territory type="FR">Francia</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Regno Unite</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guyana francese</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GL">Groenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GQ">Guinea equatorial</territory>
			<territory type="GR">Grecia</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Hungaria</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Territorio oceanic britanno-indian</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islanda</territory>
			<territory type="IT">Italia</territory>
			<territory type="JO">Jordania</territory>
			<territory type="JP">Japon</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizistan</territory>
			<territory type="KH">Cambodgia</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoros</territory>
			<territory type="KN">Sancte Christophoro e Nevis</territory>
			<territory type="KP">Corea del Nord</territory>
			<territory type="KR">Corea del Sud</territory>
			<territory type="KY">Insulas de Caiman</territory>
			<territory type="KZ">Kazakhstan</territory>
			<territory type="LB">Libano</territory>
			<territory type="LC">Sancte Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LV">Lettonia</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Marocco</territory>
			<territory type="MD">Moldavia</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Insulas Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Birmania/Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MP">Insulas Marianna del Nord</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexico</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nove Caledonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Insula Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederlandia</territory>
			<territory type="NO">Norvegia</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NZ">Nove Zelanda</territory>
			<territory type="OM">Oman</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Polynesia francese</territory>
			<territory type="PG">Papua Nove Guinea</territory>
			<territory type="PH">Philippinas</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="RO">Romania</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arabia Saudita</territory>
			<territory type="SB">Insulas Solomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Svedia</territory>
			<territory type="SI">Slovenia</territory>
			<territory type="SK">Slovachia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="SY">Syria</territory>
			<territory type="SZ">Swazilandia</territory>
			<territory type="TC">Insulas Turcos e Caicos</territory>
			<territory type="TD">Tchad</territory>
			<territory type="TF">Territorios meridional francese</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thailandia</territory>
			<territory type="TJ">Tadzhikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor del Est</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisia</territory>
			<territory type="TO">tonga</territory>
			<territory type="TR">Turchia</territory>
			<territory type="TT">Trinidad e Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="US">Statos Unite</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VC">Sancte Vincente e le Grenadinas</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="ZA">Africa del Sud</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c {ch} d-p {ph} q-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">mai</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">oct</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januario</month>
							<month type="2">februario</month>
							<month type="3">martio</month>
							<month type="4">april</month>
							<month type="5">maio</month>
							<month type="6">junio</month>
							<month type="7">julio</month>
							<month type="8">augusto</month>
							<month type="9">septembre</month>
							<month type="10">octobre</month>
							<month type="11">novembre</month>
							<month type="12">decembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dom</day>
							<day type="mon">lun</day>
							<day type="tue">mar</day>
							<day type="wed">mer</day>
							<day type="thu">jov</day>
							<day type="fri">ven</day>
							<day type="sat">sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">dominica</day>
							<day type="mon">lunedi</day>
							<day type="tue">martedi</day>
							<day type="wed">mercuridi</day>
							<day type="thu">jovedi</day>
							<day type="fri">venerdi</day>
							<day type="sat">sabbato</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-me trimestre</quarter>
							<quarter type="2">2-nde trimestre</quarter>
							<quarter type="3">3-tie trimestre</quarter>
							<quarter type="4">4-te trimestre</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.m.</am>
				<pm>p.m.</pm>
				<eras>
					<eraNames>
						<era type="0">ante Christo</era>
						<era type="1">post Christo</era>
					</eraNames>
					<eraAbbr>
						<era type="0">a.Chr.</era>
						<era type="1">p.Chr.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Capo Verde</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Djibuti</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Granada</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>Hongkong</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauritio</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivas</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Insula Pitcairn</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Porto Rico</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>Mayotta</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencies>
			<currency type="AUD">
				<displayName>Dollares australian</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Dollares canadian</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Francos suisse</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marcos german</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Coronas danese</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euros</displayName>
			</currency>
			<currency type="FRF">
				<displayName>francos francese</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Libras sterling britannic</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yen japonese</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Coronas norvegian</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Coronas svedese</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dollares statounitese</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[If���Locale/Data/es_CR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="CR"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="CRC">
				<symbol>₡</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[`�2A##Locale/Data/ga_IE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="ga"/>
		<territory type="IE"/>
	</identity>
</ldml>
PKpG[�b1��Locale/Data/en_MT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="en"/>
		<territory type="MT"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd/MM - E, dd/MM</greatestDifference>
							<greatestDifference id="d">E, dd/MM - E, dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd MMM - E, dd MMM</greatestDifference>
							<greatestDifference id="d">E, dd - E, dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd MMM - dd MMM</greatestDifference>
							<greatestDifference id="d">dd-dd MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yyyy - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E, dd/MM/yyyy - E, dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy - E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd MMM - dd MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd-dd MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd MMM yyyy - dd MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="GBP">
				<symbol>GBP</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[��H##Locale/Data/fr_FR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.43 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="fr"/>
		<territory type="FR"/>
	</identity>
</ldml>
PKpG[h��##Locale/Data/sk_SK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.45 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sk"/>
		<territory type="SK"/>
	</identity>
</ldml>
PKpG[�6�RXRXLocale/Data/to.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.11 $"/>
		<generation date="$Date: 2008/06/26 03:47:58 $"/>
		<language type="to"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="ar">lea fakaʻalepea</language>
			<language type="art">lea faʻu pē kehe</language>
			<language type="de">lea fakasiamane</language>
			<language type="el">lea fakakalisi</language>
			<language type="en">lea fakapilitānia</language>
			<language type="es">lea fakasepeni</language>
			<language type="fa">lea fakapēsia</language>
			<language type="fi">lea fakafinilani</language>
			<language type="fj">lea fakafisi</language>
			<language type="fr">lea fakafalanisē</language>
			<language type="ga">lea fakaʻaealani</language>
			<language type="gil">lea fakakilipasi</language>
			<language type="grc">lea fakakalisimuʻa</language>
			<language type="haw">lea fakahauaiʻi</language>
			<language type="he">lea fakahepelū</language>
			<language type="it">lea fakaʻītali</language>
			<language type="ja">lea fakasiapani</language>
			<language type="ko">lea fakakōlea</language>
			<language type="la">lea fakalatina</language>
			<language type="mh">lea fakamāsolo</language>
			<language type="mi">lea fakamauli</language>
			<language type="mis">lea kehekehe</language>
			<language type="ms">lea fakamalei</language>
			<language type="my">lea fakapema</language>
			<language type="na">lea fakanaulu</language>
			<language type="niu">lea fakaniuē</language>
			<language type="nl">lea fakaholani</language>
			<language type="no">lea fakanoauē</language>
			<language type="pt">lea fakapotukali</language>
			<language type="pt_BR">lea fakapotukali-palāsili</language>
			<language type="rap">lea fakalapanui</language>
			<language type="rar">lea fakalalotonga</language>
			<language type="ru">lea fakalusia</language>
			<language type="sco">lea fakasikotilani</language>
			<language type="sgn">lea fakaʻilonga</language>
			<language type="sm">lea fakahaʻamoa</language>
			<language type="sv">lea fakasueteni</language>
			<language type="tkl">lea fakatokelau</language>
			<language type="to">lea fakatonga</language>
			<language type="tr">lea fakatoake</language>
			<language type="tvl">lea fakatūvalu</language>
			<language type="ty">lea fakatahisi</language>
			<language type="und">lea taʻeʻiloa</language>
			<language type="zh">lea fakasiaina</language>
			<language type="zh_Hans">lea fakasiaina fakangofua</language>
			<language type="zh_Hant">lea fakasiaina tukufakaholo</language>
			<language type="zxx">ʻikai ha lea</language>
		</languages>
		<scripts>
			<script type="Arab">tohinima fakaʻalepea</script>
			<script type="Brai">tohinima maʻa e kakai kui</script>
			<script type="Cyrl">tohinima fakalūsia</script>
			<script type="Grek">tohinima fakakalisi</script>
			<script type="Hani">tohinima fakasiaina</script>
			<script type="Hans">tohinima fakasiaina fakafaingofua</script>
			<script type="Hant">tohinima fakasiaina fakatukutala</script>
			<script type="Hebr">tohinima fakahepelū</script>
			<script type="Jpan">tohinima fakasiapani</script>
			<script type="Kore">tohinima fakakolea</script>
			<script type="Latn">tohinima fakalatina</script>
			<script type="Zxxx">tohinima taʻetohitohiʻi</script>
			<script type="Zyyy">tohinima meʻataha</script>
			<script type="Zzzz">tohinima taʻeʻiloa</script>
		</scripts>
		<territories>
			<territory type="001">Māmani</territory>
			<territory type="002">ʻAfelika</territory>
			<territory type="003">ʻAmelika tokelau</territory>
			<territory type="005">ʻAmelika tonga</territory>
			<territory type="009">ʻOseania</territory>
			<territory type="011">ʻAfelika hihifo</territory>
			<territory type="013">ʻAmelika lotoloto</territory>
			<territory type="014">ʻAfelika hahake</territory>
			<territory type="015">ʻAfelika tokelau</territory>
			<territory type="017">ʻAfelika lotoloto</territory>
			<territory type="018">ʻAfelika fakatonga</territory>
			<territory type="019">Ongo ʻAmelika</territory>
			<territory type="021">ʻAmelika tonga ange</territory>
			<territory type="029">Kalipea</territory>
			<territory type="030">ʻĒsia hahake</territory>
			<territory type="034">ʻĒsia tonga</territory>
			<territory type="035">ʻĒsia tongahahake</territory>
			<territory type="039">ʻEulope tonga</territory>
			<territory type="053">ʻAositelēlia mo Nuʻusila</territory>
			<territory type="054">Melanisia</territory>
			<territory type="057">Potu fonua Mikolonisia</territory>
			<territory type="061">Polinisia</territory>
			<territory type="062">ʻĒsia tongalotoloto</territory>
			<territory type="142">ʻĒsia</territory>
			<territory type="143">ʻĒsia lotoloto</territory>
			<territory type="145">ʻĒsia hihifo</territory>
			<territory type="150">ʻEulope</territory>
			<territory type="151">ʻEulope hahake</territory>
			<territory type="154">ʻEulope tokelau</territory>
			<territory type="155">ʻEulope hihifo</territory>
			<territory type="172">Komoniueli</territory>
			<territory type="419">ʻAmelika fakalatina mo Kalipea</territory>
			<territory type="AG">Anitikua mo Palaputa</territory>
			<territory type="AI">Anikuila</territory>
			<territory type="AQ">ʻAnetātika</territory>
			<territory type="AS">Haʻamoa fakaʻamelika</territory>
			<territory type="AU">ʻAositelēlia</territory>
			<territory type="BE">Pelesiume</territory>
			<territory type="BR">Palāsili</territory>
			<territory type="BS">Pahama</territory>
			<territory type="BV">Motu Puveti</territory>
			<territory type="BW">Potisiuana</territory>
			<territory type="BZ">Pelise</territory>
			<territory type="CA">Kānata</territory>
			<territory type="CH">Suisilani</territory>
			<territory type="CK">ʻOtumotu Kuki</territory>
			<territory type="CN">Siaina</territory>
			<territory type="CX">Motu Kilisimasi</territory>
			<territory type="DE">Siamane</territory>
			<territory type="DM">Tominika</territory>
			<territory type="EG">ʻIsipite</territory>
			<territory type="ES">Sepeni</territory>
			<territory type="FI">Finilani</territory>
			<territory type="FJ">Fisi</territory>
			<territory type="FM">Mikolonisia</territory>
			<territory type="FR">Falanisē</territory>
			<territory type="GB">Pilitānia</territory>
			<territory type="GD">Kelenatā</territory>
			<territory type="GG">Kuenisī</territory>
			<territory type="GH">Kana</territory>
			<territory type="GI">Sipalālitā</territory>
			<territory type="GM">Kamipia</territory>
			<territory type="GR">Kalisi</territory>
			<territory type="GS">ʻOtumotu Siosia-tonga mo Saniuisi-tonga</territory>
			<territory type="GU">Kuami</territory>
			<territory type="GY">Kuiana</territory>
			<territory type="HK">Hongi Kongi</territory>
			<territory type="HM">ʻOtumotu Heati mo Makitonali</territory>
			<territory type="HN">Honitulasi</territory>
			<territory type="IE">ʻAealani</territory>
			<territory type="IL">ʻIsileli</territory>
			<territory type="IM">Motu Mani</territory>
			<territory type="IN">ʻInitia</territory>
			<territory type="IO">Potu fonua moana ʻInitia fakapilitānia</territory>
			<territory type="IT">ʻĪtali</territory>
			<territory type="JE">Selusī</territory>
			<territory type="JP">Siapani</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KI">Kilipasi</territory>
			<territory type="KP">Kōloa tokelau</territory>
			<territory type="KR">Kōlea tonga</territory>
			<territory type="LK">Sīloni</territory>
			<territory type="LR">Laipelia</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="MH">ʻOtumotu Māsolo</territory>
			<territory type="MP">ʻOtumotu Maliana tokelau</territory>
			<territory type="MS">Moʻungaselati</territory>
			<territory type="MT">Malita</territory>
			<territory type="MU">Maulitiusi</territory>
			<territory type="MW">Malaui</territory>
			<territory type="MX">Mekesikō</territory>
			<territory type="NA">Namipia</territory>
			<territory type="NC">Niu Kaletonia</territory>
			<territory type="NF">Motu Nōfoliki</territory>
			<territory type="NG">Naisilia</territory>
			<territory type="NL">Holani</territory>
			<territory type="NO">Noauē</territory>
			<territory type="NR">Naulu</territory>
			<territory type="NU">Niuē</territory>
			<territory type="NZ">Nuʻusila</territory>
			<territory type="PA">Panamā</territory>
			<territory type="PF">Polinisia fakafalanisē</territory>
			<territory type="PG">Papuaniukini</territory>
			<territory type="PK">Pakisitani</territory>
			<territory type="PN">Pitikeni</territory>
			<territory type="PT">Potukali</territory>
			<territory type="PW">Palau</territory>
			<territory type="QU">ʻEulope fakataha</territory>
			<territory type="RU">Lūsia</territory>
			<territory type="RW">Luanitā</territory>
			<territory type="SB">ʻOtumotu Solomone</territory>
			<territory type="SC">ʻOtumotu Seiseli</territory>
			<territory type="SE">Suēteni</territory>
			<territory type="SG">Singapula</territory>
			<territory type="TF">Potu fonua tonga fakafalanisē</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Toake</territory>
			<territory type="TT">Tilinitati mo Topako</territory>
			<territory type="TV">Tūvalu</territory>
			<territory type="UM">ʻOtumotu siʻi ʻo ʻAmelika</territory>
			<territory type="US">Puleʻanga fakataha ʻAmelika</territory>
			<territory type="VA">Vatikani</territory>
			<territory type="VG">ʻOtumotu Vilikini fakapilitānia</territory>
			<territory type="VI">ʻOtumotu Vilikini fakaʻamelika</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">ʻUvea mo Futuna</territory>
			<territory type="WS">Haʻamoa</territory>
			<territory type="ZA">ʻAfelika tonga</territory>
			<territory type="ZW">Simipapue</territory>
			<territory type="ZZ">Potu fonua taʻeʻiloa pe hala</territory>
		</territories>
		<keys>
			<key type="calendar">tohi māhina</key>
			<key type="collation">tohi hokohoko</key>
			<key type="currency">paʻanga</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">fakaputa</type>
			<type type="chinese" key="calendar">fakasiaina</type>
			<type type="direct" key="collation">hangatonu</type>
			<type type="gregorian" key="calendar">fakakelekolia</type>
			<type type="hebrew" key="calendar">fakahepelū</type>
			<type type="indian" key="calendar">fakaʻinitia</type>
			<type type="islamic" key="calendar">fakamohameti</type>
			<type type="islamic-civil" key="calendar">fakamohameti-sivile</type>
			<type type="japanese" key="calendar">fakasiapani</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">fakaʻamelika</measurementSystemName>
			<measurementSystemName type="metric">fakamita</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á ā e é ē f h ʻ i í ī k-n {ng} o ó ō p s-u ú ū v]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[à ă â å ä æ b c ç d è ĕ ê ë g ì ĭ î ï j ñ ò ŏ ô ö ø œ q r ß ù ŭ û ü w-y ÿ z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>«</alternateQuotationStart>
		<alternateQuotationEnd>»</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Sān</month>
							<month type="2">Fēp</month>
							<month type="3">Maʻa</month>
							<month type="4">ʻEpe</month>
							<month type="5">Mē</month>
							<month type="6">Sun</month>
							<month type="7">Siu</month>
							<month type="8">ʻAok</month>
							<month type="9">Sēp</month>
							<month type="10">ʻOka</month>
							<month type="11">Nōv</month>
							<month type="12">Tis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Sānuali</month>
							<month type="2">Fēpueli</month>
							<month type="3">Maʻasi</month>
							<month type="4">ʻEpeleli</month>
							<month type="5">Mē</month>
							<month type="6">Sune</month>
							<month type="7">Siulai</month>
							<month type="8">ʻAokosi</month>
							<month type="9">Sēpitema</month>
							<month type="10">ʻOkatopa</month>
							<month type="11">Nōvema</month>
							<month type="12">Tisema</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">S</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">E</month>
							<month type="5">M</month>
							<month type="6">S</month>
							<month type="7">S</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">T</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sāp</day>
							<day type="mon">Mōn</day>
							<day type="tue">Tus</day>
							<day type="wed">Pul</day>
							<day type="thu">Tuʻa</day>
							<day type="fri">Fal</day>
							<day type="sat">Tok</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sāpate</day>
							<day type="mon">Mōnite</day>
							<day type="tue">Tusite</day>
							<day type="wed">Pulelulu</day>
							<day type="thu">Tuʻapulelulu</day>
							<day type="fri">Falaite</day>
							<day type="sat">Tokonaki</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">S</day>
							<day type="mon">M</day>
							<day type="tue">T</day>
							<day type="wed">P</day>
							<day type="thu">T</day>
							<day type="fri">F</day>
							<day type="sat">T</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">kuata ʻuluaki</quarter>
							<quarter type="2">kuata ua</quarter>
							<quarter type="3">kuata tolu</quarter>
							<quarter type="4">kuata fā</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">kuata 1</quarter>
							<quarter type="2">kuata 2</quarter>
							<quarter type="3">kuata 3</quarter>
							<quarter type="4">kuata 4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>HH</am>
				<pm>EA</pm>
				<eras>
					<eraNames>
						<era type="0">ki muʻa</era>
						<era type="1">taʻu ʻo Sīsū</era>
					</eraNames>
					<eraAbbr>
						<era type="0">KM</era>
						<era type="1">TS</era>
					</eraAbbr>
					<eraNarrow>
						<era type="0">KāMā</era>
						<era type="1">TāSā</era>
					</eraNarrow>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="Md">d-M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M-yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d-M-yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyMM">MM-yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>kuonga</displayName>
					</field>
					<field type="year">
						<displayName>taʻu</displayName>
					</field>
					<field type="month">
						<displayName>māhina</displayName>
					</field>
					<field type="week">
						<displayName>uike</displayName>
					</field>
					<field type="day">
						<displayName>ʻaho</displayName>
						<relative type="0">ʻahó ni</relative>
						<relative type="1">ʻapongipongi</relative>
						<relative type="2">ʻahepongipongi</relative>
						<relative type="-1">ʻaneafi</relative>
						<relative type="-2">ʻaneheafi</relative>
					</field>
					<field type="weekday">
						<displayName>ʻaho ʻo e uike</displayName>
					</field>
					<field type="dayperiod">
						<displayName>HH/EA</displayName>
					</field>
					<field type="hour">
						<displayName>houa</displayName>
					</field>
					<field type="minute">
						<displayName>miniti</displayName>
					</field>
					<field type="second">
						<displayName>sekoni</displayName>
					</field>
					<field type="zone">
						<displayName>vahetaimi</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Houa {0}</regionFormat>
			<metazone type="Fiji">
				<long>
					<standard>houa fakafisi</standard>
					<daylight>houa fakafisi fakamaama</daylight>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>houa fakahauaʻi</standard>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>houa fakanuʻusila</generic>
					<standard>houa fakanuʻusila fakasīpinga</standard>
					<daylight>houa fakanuʻusila fakamaama</daylight>
				</long>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>houa fakaniuē</standard>
				</long>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>houa fakahaʻamoa</standard>
				</long>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>houa fakatahisi</standard>
				</long>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>houa fakatokelau</standard>
				</long>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>houa fakatonga</standard>
					<daylight>houa fakatonga lotohē</daylight>
				</long>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>houa fakatūvalu</standard>
				</long>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>houa fakaʻuvea mo futuna</standard>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} ʻa</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} m</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} u</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} t</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>ʻio</yesstr>
			<nostr>ʻikai</nostr>
		</messages>
	</posix>
</ldml>

PKpG[�1k]k]!Locale/Data/telephoneCodeData.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldmlSupplemental.dtd">
<supplementalData>
    <version number="$Revision: 1.1 $"/>
    <generation date="$Date: 2008/03/24 17:39:18 $"/>
	<telephoneCodeData>
		<codesByTerritory territory="001">
			<telephoneCountryCode code="388"/>
			<telephoneCountryCode code="800"/>
			<telephoneCountryCode code="808"/>
			<telephoneCountryCode code="870"/>
			<telephoneCountryCode code="871"/>
			<telephoneCountryCode code="872"/>
			<telephoneCountryCode code="873"/>
			<telephoneCountryCode code="874"/>
			<telephoneCountryCode code="878"/>
			<telephoneCountryCode code="881"/>
			<telephoneCountryCode code="882"/>
			<telephoneCountryCode code="883"/>
			<telephoneCountryCode code="888"/>
			<telephoneCountryCode code="979"/>
			<telephoneCountryCode code="991"/>
		</codesByTerritory>

		<codesByTerritory territory="AC">
			<telephoneCountryCode code="247"/>
		</codesByTerritory>
		<codesByTerritory territory="AD">
			<telephoneCountryCode code="376"/>
		</codesByTerritory>
		<codesByTerritory territory="AE">
			<telephoneCountryCode code="971"/>
		</codesByTerritory>
		<codesByTerritory territory="AF">
			<telephoneCountryCode code="93"/>
		</codesByTerritory>
		<codesByTerritory territory="AG">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="AI">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="AL">
			<telephoneCountryCode code="355"/>
		</codesByTerritory>
		<codesByTerritory territory="AM">
			<telephoneCountryCode code="374"/>
		</codesByTerritory>
		<codesByTerritory territory="AN">
			<telephoneCountryCode code="599"/>
		</codesByTerritory>
		<codesByTerritory territory="AO">
			<telephoneCountryCode code="244"/>
		</codesByTerritory>
		<codesByTerritory territory="AQ">
			<telephoneCountryCode code="672"/>
		</codesByTerritory>
		<codesByTerritory territory="AR">
			<telephoneCountryCode code="54"/>
		</codesByTerritory>
		<codesByTerritory territory="AS">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="AT">
			<telephoneCountryCode code="43"/>
		</codesByTerritory>
		<codesByTerritory territory="AU">
			<telephoneCountryCode code="61"/>
		</codesByTerritory>
		<codesByTerritory territory="AW">
			<telephoneCountryCode code="297"/>
		</codesByTerritory>
		<codesByTerritory territory="AX">
			<telephoneCountryCode code="358"/>
		</codesByTerritory>
		<codesByTerritory territory="AZ">
			<telephoneCountryCode code="994"/>
		</codesByTerritory>
		<codesByTerritory territory="BA">
			<telephoneCountryCode code="387"/>
		</codesByTerritory>
		<codesByTerritory territory="BB">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="BD">
			<telephoneCountryCode code="880"/>
		</codesByTerritory>
		<codesByTerritory territory="BE">
			<telephoneCountryCode code="32"/>
		</codesByTerritory>
		<codesByTerritory territory="BF">
			<telephoneCountryCode code="226"/>
		</codesByTerritory>
		<codesByTerritory territory="BG">
			<telephoneCountryCode code="359"/>
		</codesByTerritory>
		<codesByTerritory territory="BH">
			<telephoneCountryCode code="973"/>
		</codesByTerritory>
		<codesByTerritory territory="BI">
			<telephoneCountryCode code="257"/>
		</codesByTerritory>
		<codesByTerritory territory="BJ">
			<telephoneCountryCode code="229"/>
		</codesByTerritory>
		<codesByTerritory territory="BL">
			<telephoneCountryCode code="590"/>
		</codesByTerritory>
		<codesByTerritory territory="BM">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="BN">
			<telephoneCountryCode code="673"/>
		</codesByTerritory>
		<codesByTerritory territory="BO">
			<telephoneCountryCode code="591"/>
		</codesByTerritory>
		<codesByTerritory territory="BR">
			<telephoneCountryCode code="55"/>
		</codesByTerritory>
		<codesByTerritory territory="BS">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="BT">
			<telephoneCountryCode code="975"/>
		</codesByTerritory>
		<codesByTerritory territory="BW">
			<telephoneCountryCode code="267"/>
		</codesByTerritory>
		<codesByTerritory territory="BY">
			<telephoneCountryCode code="375"/>
		</codesByTerritory>
		<codesByTerritory territory="BZ">
			<telephoneCountryCode code="501"/>
		</codesByTerritory>
		<codesByTerritory territory="CA">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="CC">
			<telephoneCountryCode code="61"/>
		</codesByTerritory>
		<codesByTerritory territory="CD">
			<telephoneCountryCode code="243"/>
		</codesByTerritory>
		<codesByTerritory territory="CF">
			<telephoneCountryCode code="236"/>
		</codesByTerritory>
		<codesByTerritory territory="CG">
			<telephoneCountryCode code="242"/>
		</codesByTerritory>
		<codesByTerritory territory="CH">
			<telephoneCountryCode code="41"/>
		</codesByTerritory>
		<codesByTerritory territory="CI">
			<telephoneCountryCode code="225"/>
		</codesByTerritory>
		<codesByTerritory territory="CK">
			<telephoneCountryCode code="682"/>
		</codesByTerritory>
		<codesByTerritory territory="CL">
			<telephoneCountryCode code="56"/>
		</codesByTerritory>
		<codesByTerritory territory="CM">
			<telephoneCountryCode code="237"/>
		</codesByTerritory>
		<codesByTerritory territory="CN">
			<telephoneCountryCode code="86"/>
		</codesByTerritory>
		<codesByTerritory territory="CO">
			<telephoneCountryCode code="57"/>
		</codesByTerritory>
		<codesByTerritory territory="CR">
			<telephoneCountryCode code="506"/>
		</codesByTerritory>
		<codesByTerritory territory="CU">
			<telephoneCountryCode code="53"/>
		</codesByTerritory>
		<codesByTerritory territory="CV">
			<telephoneCountryCode code="238"/>
		</codesByTerritory>
		<codesByTerritory territory="CX">
			<telephoneCountryCode code="61"/>
		</codesByTerritory>
		<codesByTerritory territory="CY">
			<telephoneCountryCode code="357"/>
		</codesByTerritory>
		<codesByTerritory territory="CZ">
			<telephoneCountryCode code="420"/>
		</codesByTerritory>
		<codesByTerritory territory="DE">
			<telephoneCountryCode code="49"/>
		</codesByTerritory>
		<codesByTerritory territory="DJ">
			<telephoneCountryCode code="253"/>
		</codesByTerritory>
		<codesByTerritory territory="DK">
			<telephoneCountryCode code="45"/>
		</codesByTerritory>
		<codesByTerritory territory="DM">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="DO">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="DZ">
			<telephoneCountryCode code="213"/>
		</codesByTerritory>
		<codesByTerritory territory="EC">
			<telephoneCountryCode code="593"/>
		</codesByTerritory>
		<codesByTerritory territory="EE">
			<telephoneCountryCode code="372"/>
		</codesByTerritory>
		<codesByTerritory territory="EG">
			<telephoneCountryCode code="20"/>
		</codesByTerritory>
		<codesByTerritory territory="ER">
			<telephoneCountryCode code="291"/>
		</codesByTerritory>
		<codesByTerritory territory="ES">
			<telephoneCountryCode code="34"/>
		</codesByTerritory>
		<codesByTerritory territory="ET">
			<telephoneCountryCode code="251"/>
		</codesByTerritory>
		<codesByTerritory territory="FI">
			<telephoneCountryCode code="358"/>
		</codesByTerritory>
		<codesByTerritory territory="FJ">
			<telephoneCountryCode code="679"/>
		</codesByTerritory>
		<codesByTerritory territory="FK">
			<telephoneCountryCode code="500"/>
		</codesByTerritory>
		<codesByTerritory territory="FM">
			<telephoneCountryCode code="691"/>
		</codesByTerritory>
		<codesByTerritory territory="FO">
			<telephoneCountryCode code="298"/>
		</codesByTerritory>
		<codesByTerritory territory="FR">
			<telephoneCountryCode code="33"/>
		</codesByTerritory>
		<codesByTerritory territory="GA">
			<telephoneCountryCode code="241"/>
		</codesByTerritory>
		<codesByTerritory territory="GB">
			<telephoneCountryCode code="44"/>
		</codesByTerritory>
		<codesByTerritory territory="GD">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="GE">
			<telephoneCountryCode code="995"/>
		</codesByTerritory>
		<codesByTerritory territory="GF">
			<telephoneCountryCode code="594"/>
		</codesByTerritory>
		<codesByTerritory territory="GG">
			<telephoneCountryCode code="44"/>
		</codesByTerritory>
		<codesByTerritory territory="GH">
			<telephoneCountryCode code="233"/>
		</codesByTerritory>
		<codesByTerritory territory="GI">
			<telephoneCountryCode code="350"/>
		</codesByTerritory>
		<codesByTerritory territory="GL">
			<telephoneCountryCode code="299"/>
		</codesByTerritory>
		<codesByTerritory territory="GM">
			<telephoneCountryCode code="220"/>
		</codesByTerritory>
		<codesByTerritory territory="GN">
			<telephoneCountryCode code="224"/>
		</codesByTerritory>
		<codesByTerritory territory="GP">
			<telephoneCountryCode code="590"/>
		</codesByTerritory>
		<codesByTerritory territory="GQ">
			<telephoneCountryCode code="240"/>
		</codesByTerritory>
		<codesByTerritory territory="GR">
			<telephoneCountryCode code="30"/>
		</codesByTerritory>
		<codesByTerritory territory="GT">
			<telephoneCountryCode code="502"/>
		</codesByTerritory>
		<codesByTerritory territory="GU">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="GW">
			<telephoneCountryCode code="245"/>
		</codesByTerritory>
		<codesByTerritory territory="GY">
			<telephoneCountryCode code="592"/>
		</codesByTerritory>
		<codesByTerritory territory="HK">
			<telephoneCountryCode code="852"/>
		</codesByTerritory>
		<codesByTerritory territory="HN">
			<telephoneCountryCode code="504"/>
		</codesByTerritory>
		<codesByTerritory territory="HR">
			<telephoneCountryCode code="385"/>
		</codesByTerritory>
		<codesByTerritory territory="HT">
			<telephoneCountryCode code="509"/>
		</codesByTerritory>
		<codesByTerritory territory="HU">
			<telephoneCountryCode code="36"/>
		</codesByTerritory>
		<codesByTerritory territory="ID">
			<telephoneCountryCode code="62"/>
		</codesByTerritory>
		<codesByTerritory territory="IE">
			<telephoneCountryCode code="353"/>
		</codesByTerritory>
		<codesByTerritory territory="IL">
			<telephoneCountryCode code="972"/>
		</codesByTerritory>
		<codesByTerritory territory="IM">
			<telephoneCountryCode code="44"/>
		</codesByTerritory>
		<codesByTerritory territory="IN">
			<telephoneCountryCode code="91"/>
		</codesByTerritory>
		<codesByTerritory territory="IO">
			<telephoneCountryCode code="246"/>
		</codesByTerritory>
		<codesByTerritory territory="IQ">
			<telephoneCountryCode code="964"/>
		</codesByTerritory>
		<codesByTerritory territory="IR">
			<telephoneCountryCode code="98"/>
		</codesByTerritory>
		<codesByTerritory territory="IS">
			<telephoneCountryCode code="354"/>
		</codesByTerritory>
		<codesByTerritory territory="IT">
			<telephoneCountryCode code="39"/>
		</codesByTerritory>
		<codesByTerritory territory="JE">
			<telephoneCountryCode code="44"/>
		</codesByTerritory>
		<codesByTerritory territory="JM">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="JO">
			<telephoneCountryCode code="962"/>
		</codesByTerritory>
		<codesByTerritory territory="JP">
			<telephoneCountryCode code="81"/>
		</codesByTerritory>
		<codesByTerritory territory="KE">
			<telephoneCountryCode code="254"/>
		</codesByTerritory>
		<codesByTerritory territory="KG">
			<telephoneCountryCode code="996"/>
		</codesByTerritory>
		<codesByTerritory territory="KH">
			<telephoneCountryCode code="855"/>
		</codesByTerritory>
		<codesByTerritory territory="KI">
			<telephoneCountryCode code="686"/>
		</codesByTerritory>
		<codesByTerritory territory="KM">
			<telephoneCountryCode code="269"/>
		</codesByTerritory>
		<codesByTerritory territory="KN">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="KP">
			<telephoneCountryCode code="850"/>
		</codesByTerritory>
		<codesByTerritory territory="KR">
			<telephoneCountryCode code="82"/>
		</codesByTerritory>
		<codesByTerritory territory="KW">
			<telephoneCountryCode code="965"/>
		</codesByTerritory>
		<codesByTerritory territory="KY">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="KZ">
			<telephoneCountryCode code="7"/>
		</codesByTerritory>
		<codesByTerritory territory="LA">
			<telephoneCountryCode code="856"/>
		</codesByTerritory>
		<codesByTerritory territory="LB">
			<telephoneCountryCode code="961"/>
		</codesByTerritory>
		<codesByTerritory territory="LC">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="LI">
			<telephoneCountryCode code="423"/>
		</codesByTerritory>
		<codesByTerritory territory="LK">
			<telephoneCountryCode code="94"/>
		</codesByTerritory>
		<codesByTerritory territory="LR">
			<telephoneCountryCode code="231"/>
		</codesByTerritory>
		<codesByTerritory territory="LS">
			<telephoneCountryCode code="266"/>
		</codesByTerritory>
		<codesByTerritory territory="LT">
			<telephoneCountryCode code="370"/>
		</codesByTerritory>
		<codesByTerritory territory="LU">
			<telephoneCountryCode code="352"/>
		</codesByTerritory>
		<codesByTerritory territory="LV">
			<telephoneCountryCode code="371"/>
		</codesByTerritory>
		<codesByTerritory territory="LY">
			<telephoneCountryCode code="218"/>
		</codesByTerritory>
		<codesByTerritory territory="MA">
			<telephoneCountryCode code="212"/>
		</codesByTerritory>
		<codesByTerritory territory="MC">
			<telephoneCountryCode code="377"/>
		</codesByTerritory>
		<codesByTerritory territory="MD">
			<telephoneCountryCode code="373"/>
		</codesByTerritory>
		<codesByTerritory territory="ME">
			<telephoneCountryCode code="382"/>
		</codesByTerritory>
		<codesByTerritory territory="MG">
			<telephoneCountryCode code="261"/>
		</codesByTerritory>
		<codesByTerritory territory="MH">
			<telephoneCountryCode code="692"/>
		</codesByTerritory>
		<codesByTerritory territory="MK">
			<telephoneCountryCode code="389"/>
		</codesByTerritory>
		<codesByTerritory territory="ML">
			<telephoneCountryCode code="223"/>
		</codesByTerritory>
		<codesByTerritory territory="MM">
			<telephoneCountryCode code="95"/>
		</codesByTerritory>
		<codesByTerritory territory="MN">
			<telephoneCountryCode code="976"/>
		</codesByTerritory>
		<codesByTerritory territory="MO">
			<telephoneCountryCode code="853"/>
		</codesByTerritory>
		<codesByTerritory territory="MP">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="MQ">
			<telephoneCountryCode code="596"/>
		</codesByTerritory>
		<codesByTerritory territory="MR">
			<telephoneCountryCode code="222"/>
		</codesByTerritory>
		<codesByTerritory territory="MS">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="MT">
			<telephoneCountryCode code="356"/>
		</codesByTerritory>
		<codesByTerritory territory="MU">
			<telephoneCountryCode code="230"/>
		</codesByTerritory>
		<codesByTerritory territory="MV">
			<telephoneCountryCode code="960"/>
		</codesByTerritory>
		<codesByTerritory territory="MW">
			<telephoneCountryCode code="265"/>
		</codesByTerritory>
		<codesByTerritory territory="MX">
			<telephoneCountryCode code="52"/>
		</codesByTerritory>
		<codesByTerritory territory="MY">
			<telephoneCountryCode code="60"/>
		</codesByTerritory>
		<codesByTerritory territory="MZ">
			<telephoneCountryCode code="258"/>
		</codesByTerritory>
		<codesByTerritory territory="NA">
			<telephoneCountryCode code="264"/>
		</codesByTerritory>
		<codesByTerritory territory="NC">
			<telephoneCountryCode code="687"/>
		</codesByTerritory>
		<codesByTerritory territory="NE">
			<telephoneCountryCode code="227"/>
		</codesByTerritory>
		<codesByTerritory territory="NF">
			<telephoneCountryCode code="672"/>
		</codesByTerritory>
		<codesByTerritory territory="NG">
			<telephoneCountryCode code="234"/>
		</codesByTerritory>
		<codesByTerritory territory="NI">
			<telephoneCountryCode code="505"/>
		</codesByTerritory>
		<codesByTerritory territory="NL">
			<telephoneCountryCode code="31"/>
		</codesByTerritory>
		<codesByTerritory territory="NO">
			<telephoneCountryCode code="47"/>
		</codesByTerritory>
		<codesByTerritory territory="NP">
			<telephoneCountryCode code="977"/>
		</codesByTerritory>
		<codesByTerritory territory="NR">
			<telephoneCountryCode code="674"/>
		</codesByTerritory>
		<codesByTerritory territory="NU">
			<telephoneCountryCode code="683"/>
		</codesByTerritory>
		<codesByTerritory territory="NZ">
			<telephoneCountryCode code="64"/>
		</codesByTerritory>
		<codesByTerritory territory="OM">
			<telephoneCountryCode code="968"/>
		</codesByTerritory>
		<codesByTerritory territory="PA">
			<telephoneCountryCode code="507"/>
		</codesByTerritory>
		<codesByTerritory territory="PE">
			<telephoneCountryCode code="51"/>
		</codesByTerritory>
		<codesByTerritory territory="PF">
			<telephoneCountryCode code="689"/>
		</codesByTerritory>
		<codesByTerritory territory="PG">
			<telephoneCountryCode code="675"/>
		</codesByTerritory>
		<codesByTerritory territory="PH">
			<telephoneCountryCode code="63"/>
		</codesByTerritory>
		<codesByTerritory territory="PK">
			<telephoneCountryCode code="92"/>
		</codesByTerritory>
		<codesByTerritory territory="PL">
			<telephoneCountryCode code="48"/>
		</codesByTerritory>
		<codesByTerritory territory="PM">
			<telephoneCountryCode code="508"/>
		</codesByTerritory>
		<codesByTerritory territory="PR">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="PS">
			<telephoneCountryCode code="972"/>
			<telephoneCountryCode code="970"/>
		</codesByTerritory>
		<codesByTerritory territory="PT">
			<telephoneCountryCode code="351"/>
		</codesByTerritory>
		<codesByTerritory territory="PW">
			<telephoneCountryCode code="680"/>
		</codesByTerritory>
		<codesByTerritory territory="PY">
			<telephoneCountryCode code="595"/>
		</codesByTerritory>
		<codesByTerritory territory="QA">
			<telephoneCountryCode code="974"/>
		</codesByTerritory>
		<codesByTerritory territory="RE">
			<telephoneCountryCode code="262"/>
		</codesByTerritory>
		<codesByTerritory territory="RO">
			<telephoneCountryCode code="40"/>
		</codesByTerritory>
		<codesByTerritory territory="RS">
			<telephoneCountryCode code="381"/>
		</codesByTerritory>
		<codesByTerritory territory="RU">
			<telephoneCountryCode code="7"/>
		</codesByTerritory>
		<codesByTerritory territory="RW">
			<telephoneCountryCode code="250"/>
		</codesByTerritory>
		<codesByTerritory territory="SA">
			<telephoneCountryCode code="966"/>
		</codesByTerritory>
		<codesByTerritory territory="SB">
			<telephoneCountryCode code="677"/>
		</codesByTerritory>
		<codesByTerritory territory="SC">
			<telephoneCountryCode code="248"/>
		</codesByTerritory>
		<codesByTerritory territory="SD">
			<telephoneCountryCode code="249"/>
		</codesByTerritory>
		<codesByTerritory territory="SE">
			<telephoneCountryCode code="46"/>
		</codesByTerritory>
		<codesByTerritory territory="SG">
			<telephoneCountryCode code="65"/>
		</codesByTerritory>
		<codesByTerritory territory="SH">
			<telephoneCountryCode code="290"/>
		</codesByTerritory>
		<codesByTerritory territory="SI">
			<telephoneCountryCode code="386"/>
		</codesByTerritory>
		<codesByTerritory territory="SJ">
			<telephoneCountryCode code="47"/>
		</codesByTerritory>
		<codesByTerritory territory="SK">
			<telephoneCountryCode code="421"/>
		</codesByTerritory>
		<codesByTerritory territory="SL">
			<telephoneCountryCode code="232"/>
		</codesByTerritory>
		<codesByTerritory territory="SM">
			<telephoneCountryCode code="378"/>
		</codesByTerritory>
		<codesByTerritory territory="SN">
			<telephoneCountryCode code="221"/>
		</codesByTerritory>
		<codesByTerritory territory="SO">
			<telephoneCountryCode code="252"/>
		</codesByTerritory>
		<codesByTerritory territory="SR">
			<telephoneCountryCode code="597"/>
		</codesByTerritory>
		<codesByTerritory territory="ST">
			<telephoneCountryCode code="239"/>
		</codesByTerritory>
		<codesByTerritory territory="SV">
			<telephoneCountryCode code="503"/>
		</codesByTerritory>
		<codesByTerritory territory="SY">
			<telephoneCountryCode code="963"/>
		</codesByTerritory>
		<codesByTerritory territory="SZ">
			<telephoneCountryCode code="268"/>
		</codesByTerritory>
		<codesByTerritory territory="TC">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="TD">
			<telephoneCountryCode code="235"/>
		</codesByTerritory>
		<codesByTerritory territory="TF">
			<telephoneCountryCode code="262"/>
		</codesByTerritory>
		<codesByTerritory territory="TG">
			<telephoneCountryCode code="228"/>
		</codesByTerritory>
		<codesByTerritory territory="TH">
			<telephoneCountryCode code="66"/>
		</codesByTerritory>
		<codesByTerritory territory="TJ">
			<telephoneCountryCode code="992"/>
		</codesByTerritory>
		<codesByTerritory territory="TK">
			<telephoneCountryCode code="690"/>
		</codesByTerritory>
		<codesByTerritory territory="TL">
			<telephoneCountryCode code="670"/>
		</codesByTerritory>
		<codesByTerritory territory="TM">
			<telephoneCountryCode code="993"/>
		</codesByTerritory>
		<codesByTerritory territory="TN">
			<telephoneCountryCode code="216"/>
		</codesByTerritory>
		<codesByTerritory territory="TO">
			<telephoneCountryCode code="676"/>
		</codesByTerritory>
		<codesByTerritory territory="TR">
			<telephoneCountryCode code="90"/>
		</codesByTerritory>
		<codesByTerritory territory="TT">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="TV">
			<telephoneCountryCode code="688"/>
		</codesByTerritory>
		<codesByTerritory territory="TW">
			<telephoneCountryCode code="886"/>
		</codesByTerritory>
		<codesByTerritory territory="TZ">
			<telephoneCountryCode code="255"/>
		</codesByTerritory>
		<codesByTerritory territory="UA">
			<telephoneCountryCode code="380"/>
		</codesByTerritory>
		<codesByTerritory territory="UG">
			<telephoneCountryCode code="256"/>
		</codesByTerritory>
		<codesByTerritory territory="US">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="UY">
			<telephoneCountryCode code="598"/>
		</codesByTerritory>
		<codesByTerritory territory="UZ">
			<telephoneCountryCode code="998"/>
		</codesByTerritory>
		<codesByTerritory territory="VA">
			<telephoneCountryCode code="39"/>
		</codesByTerritory>
		<codesByTerritory territory="VC">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="VE">
			<telephoneCountryCode code="58"/>
		</codesByTerritory>
		<codesByTerritory territory="VG">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="VI">
			<telephoneCountryCode code="1"/>
		</codesByTerritory>
		<codesByTerritory territory="VN">
			<telephoneCountryCode code="84"/>
		</codesByTerritory>
		<codesByTerritory territory="VU">
			<telephoneCountryCode code="678"/>
		</codesByTerritory>
		<codesByTerritory territory="WF">
			<telephoneCountryCode code="681"/>
		</codesByTerritory>
		<codesByTerritory territory="WS">
			<telephoneCountryCode code="685"/>
		</codesByTerritory>
		<codesByTerritory territory="YE">
			<telephoneCountryCode code="967"/>
		</codesByTerritory>
		<codesByTerritory territory="YT">
			<telephoneCountryCode code="262"/>
		</codesByTerritory>
		<codesByTerritory territory="ZA">
			<telephoneCountryCode code="27"/>
		</codesByTerritory>
		<codesByTerritory territory="ZM">
			<telephoneCountryCode code="260"/>
		</codesByTerritory>
		<codesByTerritory territory="ZW">
			<telephoneCountryCode code="263"/>
		</codesByTerritory>
	</telephoneCodeData>
</supplementalData>PKpG[�
##Locale/Data/th_TH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="th"/>
		<territory type="TH"/>
	</identity>
</ldml>
PKpG[���""Locale/Data/fr_SN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.2 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="fr"/>
		<territory type="SN"/>
	</identity>
</ldml>
PKpG[V5�hhLocale/Data/nso.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nso"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="nso">Sesotho sa Leboa</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b d e ê f-o ô p r s š t u w-y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c q v z]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mat</month>
							<month type="4">Apo</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Ago</month>
							<month type="9">Set</month>
							<month type="10">Okt</month>
							<month type="11">Nof</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Janaware</month>
							<month type="2">Feberware</month>
							<month type="3">Matšhe</month>
							<month type="4">Aporele</month>
							<month type="5">Mei</month>
							<month type="6">June</month>
							<month type="7">Julae</month>
							<month type="8">Agostose</month>
							<month type="9">Setemere</month>
							<month type="10">Oktobore</month>
							<month type="11">Nofemere</month>
							<month type="12">Disemere</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Son</day>
							<day type="mon">Mos</day>
							<day type="tue">Bed</day>
							<day type="wed">Rar</day>
							<day type="thu">Ne</day>
							<day type="fri">Hla</day>
							<day type="sat">Mok</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sontaga</day>
							<day type="mon">Mosupalogo</day>
							<day type="tue">Labobedi</day>
							<day type="wed">Laboraro</day>
							<day type="thu">Labone</day>
							<day type="fri">Labohlano</day>
							<day type="sat">Mokibelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[3��*�*Locale/Data/as.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.49 $"/>
		<generation date="$Date: 2008/06/15 09:11:18 $"/>
		<language type="as"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="as">অসমীয়া</language>
			<language type="ie">উপস্থাপন ভাষা</language>
			<language type="km">কম্বোডিয়ান</language>
		</languages>
		<scripts>
			<script type="Beng">বঙালী</script>
		</scripts>
		<territories>
			<territory type="AQ">এন্টাৰ্টিকা</territory>
			<territory type="BR">ব্ৰাজিল</territory>
			<territory type="BV">বভেট দ্বীপ</territory>
			<territory type="CN">চীন</territory>
			<territory type="DE">জাৰ্মানি</territory>
			<territory type="FR">ফ্ৰান্স</territory>
			<territory type="GB">সংযুক্ত ৰাজ্য</territory>
			<territory type="GS">দক্ষিণ জৰ্জিয়া আৰু দক্ষিণ চেণ্ডৱিচ্‌ দ্বীপ</territory>
			<territory type="HM">হাৰ্ড দ্বীপ আৰু মেক্‌ডোনাল্ড দ্বীপ</territory>
			<territory type="IN">ভাৰত</territory>
			<territory type="IO">ব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চল</territory>
			<territory type="IT">ইটালি</territory>
			<territory type="JP">জাপান</territory>
			<territory type="RU">ৰুচ</territory>
			<territory type="TF">দক্ষিণ ফ্ৰান্সৰ অঞ্চল</territory>
			<territory type="US">যুক্তৰাষ্ট্ৰ</territory>
			<territory type="ZZ">অজ্ঞাত বা অবৈধ অঞ্চল</territory>
		</territories>
		<keys>
			<key type="calendar">পঞ্জিকা</key>
			<key type="collation">শৰীকৰণ</key>
			<key type="currency">মুদ্ৰা</key>
		</keys>
		<types>
			<type type="big5han" key="collation">পৰম্পৰাগত চীনা শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম - Big5</type>
			<type type="buddhist" key="calendar">বৌদ্ধ পঞ্জিকা</type>
			<type type="chinese" key="calendar">চীনা পঞ্জিকা</type>
			<type type="direct" key="collation">পোনপটীয়াকৈ শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম</type>
			<type type="gb2312han" key="collation">সৰল চীনা শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম - GB2312</type>
			<type type="gregorian" key="calendar">গ্ৰিগোৰীয় পঞ্জিকা</type>
			<type type="hebrew" key="calendar">হীব্ৰু পঞ্জিকা</type>
			<type type="indian" key="calendar">ভাৰতীয় ৰাষ্ট্ৰীয় পঞ্জিকা</type>
			<type type="islamic" key="calendar">ইচলামী পঞ্জিকা</type>
			<type type="islamic-civil" key="calendar">ইচলামী-নাগৰিকৰ পঞ্জিকা</type>
			<type type="japanese" key="calendar">জাপানী পঞ্জিকা</type>
			<type type="phonebook" key="collation">টেলিফোন বহিৰ মতেশৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম</type>
			<type type="pinyin" key="collation">পিন্‌য়িন শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম</type>
			<type type="roc" key="calendar">চীনা গণৰাজ্যৰ পঞ্জিকা</type>
			<type type="stroke" key="collation">স্ট্ৰোক শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম</type>
			<type type="traditional" key="collation">পৰম্পৰাগতভাবে শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[় অ-ঋ ৠ ঌ ৡ এ ঐ ও ঔ ং ঁ ঃ ক-ড {ড়} ঢ {ঢ়} ণ ত ৎ থ-ন প-য {য়} ৰ ল ৱ শ-হ ঽ-ৄ ৢ ৣ ে ৈ ো-্ ৗ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D ৲]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">জানু</month>
							<month type="2">ফেব্ৰু</month>
							<month type="3">মাৰ্চ</month>
							<month type="4">এপ্ৰিল</month>
							<month type="5">মে</month>
							<month type="6">জুন</month>
							<month type="7">জুলাই</month>
							<month type="8">আগ</month>
							<month type="9">সেপ্ট</month>
							<month type="10">অক্টো</month>
							<month type="11">নভে</month>
							<month type="12">ডিসে</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">জানুয়াৰী</month>
							<month type="2">ফেব্ৰুয়াৰী</month>
							<month type="3">মাৰ্চ</month>
							<month type="4">এপ্ৰিল</month>
							<month type="5">মে</month>
							<month type="6">জুন</month>
							<month type="7">জুলাই</month>
							<month type="8">আগষ্ট</month>
							<month type="9">সেপ্টেম্বৰ</month>
							<month type="10">অক্টোবৰ</month>
							<month type="11">নভেম্বৰ</month>
							<month type="12">ডিসেম্বৰ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ৰবি</day>
							<day type="mon">সোম</day>
							<day type="tue">মঙ্গল</day>
							<day type="wed">বুধ</day>
							<day type="thu">বৃহষ্পতি</day>
							<day type="fri">শুক্ৰ</day>
							<day type="sat">শনি</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">দেওবাৰ</day>
							<day type="mon">সোমবাৰ</day>
							<day type="tue">মঙ্গলবাৰ</day>
							<day type="wed">বুধবাৰ</day>
							<day type="thu">বৃহষ্পতিবাৰ</day>
							<day type="fri">শুক্ৰবাৰ</day>
							<day type="sat">শনিবাৰ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>পূৰ্বা</am>
				<pm>অপ</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h.mm.ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h.mm.ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h.mm.ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h.mm. a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM, yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Asia/Calcutta">
				<exemplarCity>এলাহাৱাদ</exemplarCity>
			</zone>
			<metazone type="India">
				<long>
					<standard>ভাৰতীয় সময়</standard>
				</long>
				<short>
					<standard>ভা. স.</standard>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="INR">
				<symbol>টকা</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�4p##Locale/Data/bg_BG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.52 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="bg"/>
		<territory type="BG"/>
	</identity>
</ldml>
PKpG[��S5ttLocale/Data/fr_CA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/17 18:53:46 $"/>
		<language type="fr"/>
		<territory type="CA"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH 'h' mm 'min' ss 's' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MEd">EEE M-d</dateFormatItem>
						<dateFormatItem id="MMd">MM-d</dateFormatItem>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="yM">yyyy-MM</dateFormatItem>
						<dateFormatItem id="yMEd">EEE yyyy-MM-dd</dateFormatItem>
						<dateFormatItem id="yyMM">yy-MM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E MM-dd – E MM-dd</greatestDifference>
							<greatestDifference id="d">E MM-dd – E MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd – MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd – MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH–HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm–HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm–HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm–HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH–HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-MM – yy-MM</greatestDifference>
							<greatestDifference id="y">yy-MM – yy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">'du' E yy-MM-dd 'au' E yy-MM-dd</greatestDifference>
							<greatestDifference id="d">'du' E yy-MM-dd 'au' E yy-MM-dd</greatestDifference>
							<greatestDifference id="y">'du' E yy-MM-dd 'au' E yy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="y">'de' MMM yyyy 'à' MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">'du' E d MMM 'au' E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">'du' E d 'au' E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">'du' E d MMM yyyy 'au' E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MMMM  – MMMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">'du' d MMM 'au' d MMM yyyy</greatestDifference>
							<greatestDifference id="y">'du' d MMM yyyy 'au' d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-MM-dd – yy-MM-dd</greatestDifference>
							<greatestDifference id="d">yy-MM-dd – yy-MM-dd</greatestDifference>
							<greatestDifference id="y">yy-MM-dd – yy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<metazone type="Alaska">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤;(#,##0.00 ¤)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="CAD">
				<symbol>$</symbol>
			</currency>
			<currency type="USD">
				<symbol>$ US</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[��G�--Locale/Data/xh.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="xh"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">isiBhulu</language>
			<language type="am">Isi-Amharic</language>
			<language type="ar">Isi-Arabic</language>
			<language type="as">isiAssamese</language>
			<language type="az">Isi-Azerbaijani</language>
			<language type="be">Isi-Belarusian</language>
			<language type="bg">Isi-Bulgaria</language>
			<language type="bh">Isi-Bihari</language>
			<language type="bn">Isi-Bengali</language>
			<language type="br">Breton</language>
			<language type="bs">Isi-Bosnia</language>
			<language type="ca">Isi-Calatan</language>
			<language type="cs">Isi-Czech</language>
			<language type="cy">Isi-Welsh</language>
			<language type="da">Isi-Danish</language>
			<language type="de">Isi-German</language>
			<language type="el">Isi-Greek</language>
			<language type="en">isiNgesi</language>
			<language type="eo">Isi-Esperanto</language>
			<language type="es">Isi-Spanish</language>
			<language type="et">Isi-Estonian</language>
			<language type="eu">Isi-Basque</language>
			<language type="fa">Isi-Persia</language>
			<language type="fi">Isi-Finnish</language>
			<language type="fil">Isi-Taglog</language>
			<language type="fo">Isi-Faroese</language>
			<language type="fr">Isi-French</language>
			<language type="fy">Isi-Frisian</language>
			<language type="ga">Isi-Irish</language>
			<language type="gd">Scots Gaelic</language>
			<language type="gl">Isi-Galician</language>
			<language type="gn">Guarani</language>
			<language type="gu">Isi-Gujarati</language>
			<language type="he">Isi-Hebrew</language>
			<language type="hi">Isi-Hindi</language>
			<language type="hr">Isi-Croatia</language>
			<language type="hu">Isi-Hungarian</language>
			<language type="hy">isiArmenian</language>
			<language type="ia">Interlingua</language>
			<language type="id">Isi-Indonesian</language>
			<language type="ie">isiInterlingue</language>
			<language type="is">Isi-Icelandic</language>
			<language type="it">Isi-Italian</language>
			<language type="ja">Isi-Japanese</language>
			<language type="jv">Isi-Javanese</language>
			<language type="ka">Isi-Georgia</language>
			<language type="km">isiCambodia</language>
			<language type="kn">Isi-Kannada</language>
			<language type="ko">Isi-Korean</language>
			<language type="ku">Kurdish</language>
			<language type="ky">Kyrgyz</language>
			<language type="la">Isi-Latin</language>
			<language type="ln">Iilwimi</language>
			<language type="lo">IsiLoathian</language>
			<language type="lt">Isi-Lithuanian</language>
			<language type="lv">Isi-Latvian</language>
			<language type="mk">Isi-Macedonian</language>
			<language type="ml">Isi-Malayalam</language>
			<language type="mn">IsiMongolian</language>
			<language type="mr">Isi-Marathi</language>
			<language type="ms">Isi-Malay</language>
			<language type="mt">Isi-Maltese</language>
			<language type="ne">Isi-Nepali</language>
			<language type="nl">Isi-Dutch</language>
			<language type="nn">Isi-Norwegia (Nynorsk)</language>
			<language type="no">Isi-Norwegian</language>
			<language type="oc">Iso-Occitan</language>
			<language type="or">Oriya</language>
			<language type="pa">Isi-Punjabi</language>
			<language type="pl">Isi-Polish</language>
			<language type="ps">Pashto</language>
			<language type="pt">Isi-Portuguese</language>
			<language type="pt_BR">portokugusseee</language>
			<language type="pt_PT">Isi-Portuguese (Portugal)</language>
			<language type="ro">Isi-Romanian</language>
			<language type="ru">Isi-Russian</language>
			<language type="sa">iSanskrit</language>
			<language type="sd">isiSindhi</language>
			<language type="sh">Serbo-Croatian</language>
			<language type="si">Isi-Sinhalese</language>
			<language type="sk">Isi-Slovak</language>
			<language type="sl">Isi-Slovenian</language>
			<language type="so">IsiSomaliya</language>
			<language type="sq">Isi-Albania</language>
			<language type="sr">Isi-Serbia</language>
			<language type="st">Sesotho</language>
			<language type="su">Isi-Sudanese</language>
			<language type="sv">Isi-Swedish</language>
			<language type="sw">Isi-Swahili</language>
			<language type="ta">Isi-Tamil</language>
			<language type="te">Isi-Telegu</language>
			<language type="th">Isi-Thai</language>
			<language type="ti">Isi-Tigrinya</language>
			<language type="tk">Turkmen</language>
			<language type="tlh">Klingon</language>
			<language type="tr">Isi-Turkish</language>
			<language type="tw">Twi</language>
			<language type="ug">Isi Uighur</language>
			<language type="uk">Isi-Ukranian</language>
			<language type="ur">Urdu</language>
			<language type="uz">Isi-Uzbek</language>
			<language type="vi">Isi-Vietnamese</language>
			<language type="xh">isiXhosa</language>
			<language type="yi">Yiddish</language>
			<language type="zu">isiZulu</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mat</month>
							<month type="4">Epr</month>
							<month type="5">Mey</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aga</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Dis</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Janyuwari</month>
							<month type="2">Februwari</month>
							<month type="3">Matshi</month>
							<month type="4">Epreli</month>
							<month type="5">Meyi</month>
							<month type="6">Juni</month>
							<month type="7">Julayi</month>
							<month type="8">Agasti</month>
							<month type="9">Septemba</month>
							<month type="10">Okthoba</month>
							<month type="11">Novemba</month>
							<month type="12">Disemba</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Caw</day>
							<day type="mon">Mvu</day>
							<day type="tue">Bin</day>
							<day type="wed">Tha</day>
							<day type="thu">Sin</day>
							<day type="fri">Hla</day>
							<day type="sat">Mgq</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Cawe</day>
							<day type="mon">Mvulo</day>
							<day type="tue">Lwesibini</day>
							<day type="wed">Lwesithathu</day>
							<day type="thu">Lwesine</day>
							<day type="fri">Lwesihlanu</day>
							<day type="sat">Mgqibelo</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1 unyangantathu</quarter>
							<quarter type="2">2 unyangantathu</quarter>
							<quarter type="3">3 unyangantathu</quarter>
							<quarter type="4">4 unyangantathu</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">umnyaka wokuzalwa kukaYesu</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>yes:y:ewe:e</yesstr>
			<nostr>no:n:hayi:h</nostr>
		</messages>
	</posix>
</ldml>
PKpG[Ķ/�Locale/Data/ar_DZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="DZ"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<numbers>
		<symbols>
			<nativeZeroDigit>0</nativeZeroDigit>
		</symbols>
	</numbers>
</ldml>
PKpG[K3��Locale/Data/sv_FI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="sv"/>
		<territory type="FI"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="phn">fenikiska</language>
		</languages>
		<territories>
			<territory type="019">Amerika</territory>
			<territory type="BA">Bosnien-Hercegovina</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="MO">Macao</territory>
			<territory type="UM">USA:s yttre öar</territory>
		</territories>
		<variants>
			<variant type="1996">1996 års stavning</variant>
			<variant type="FONIPA">internationell fonetisk notation (IPA)</variant>
			<variant type="FONUPA">uralisk fonetisk notation (UPA)</variant>
		</variants>
		<types>
			<type type="big5han" key="collation">kinesiska i big5-sorteringsordning</type>
			<type type="gb2312han" key="collation">kinesiska i gb2312-sorteringsordning</type>
			<type type="phonebook" key="collation">telefonkatalogssorteringsordning</type>
			<type type="pinyin" key="collation">kinesiska i pinyin-sorteringsordning</type>
			<type type="stroke" key="collation">kinesiska i strecksorteringsordning</type>
			<type type="traditional" key="collation">traditionell sorteringsordning</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">imperiska enheter</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à b-e é f-v x-z å ä ö]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[à ã ç é ë í ñ ó š w ÿ ü ž]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<fields>
					<field type="dayperiod">
						<displayName>dagsperiod</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;−HH:mm</hourFormat>
		</timeZoneNames>
	</dates>
</ldml>

PKpG[��U�

Locale/Data/ar_SY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="SY"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">نوار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">كانون الثاني</month>
							<month type="2">شباط</month>
							<month type="3">آذار</month>
							<month type="4">نيسان</month>
							<month type="5">نوار</month>
							<month type="6">حزيران</month>
							<month type="7">تموز</month>
							<month type="8">آب</month>
							<month type="9">أيلول</month>
							<month type="10">تشرين الأول</month>
							<month type="11">تشرين الثاني</month>
							<month type="12">كانون الأول</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###;#0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[���##Locale/Data/yo_NG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="yo"/>
		<territory type="NG"/>
	</identity>
</ldml>
PKpG[�%���%�%Locale/Data/ky.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.37 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ky"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">африкаанча</language>
			<language type="ar">арабча</language>
			<language type="az">азербайжанча</language>
			<language type="be">беларусча</language>
			<language type="bg">болгарияча</language>
			<language type="bh">бихариче</language>
			<language type="bn">бангладешче</language>
			<language type="br">бретон</language>
			<language type="bs">боснияча</language>
			<language type="ca">каталанча</language>
			<language type="cs">чех тили</language>
			<language type="da">датча</language>
			<language type="de">немисче</language>
			<language type="el">грекче</language>
			<language type="en">англисче</language>
			<language type="es">испанча</language>
			<language type="et">эстончо</language>
			<language type="fa">фарзча</language>
			<language type="fi">финче</language>
			<language type="fil">тагалча</language>
			<language type="fr">французча</language>
			<language type="ga">ирландча</language>
			<language type="gn">гуараш</language>
			<language type="gu">гужаратча</language>
			<language type="he">еврейче</language>
			<language type="hi">индусча</language>
			<language type="hr">хорватча</language>
			<language type="hu">венгрияча</language>
			<language type="id">индонезияча</language>
			<language type="is">исландча</language>
			<language type="it">италиянча</language>
			<language type="ja">япончо</language>
			<language type="jv">жаванизче</language>
			<language type="ka">грузинче</language>
			<language type="kn">каннадача</language>
			<language type="ko">корейче</language>
			<language type="ku">курт</language>
			<language type="ky">Кыргыз</language>
			<language type="la">латынча</language>
			<language type="lt">литвача</language>
			<language type="lv">латвияча</language>
			<language type="mk">македонияча</language>
			<language type="ml">малайаламча</language>
			<language type="mr">маратиче</language>
			<language type="ms">малайча</language>
			<language type="mt">малтизче</language>
			<language type="ne">непалча</language>
			<language type="nl">голландча</language>
			<language type="nn">норвегияча</language>
			<language type="no">норвежче</language>
			<language type="or">ория</language>
			<language type="pa">пунжабиче</language>
			<language type="pl">полякча</language>
			<language type="ps">пашто</language>
			<language type="pt">португалча</language>
			<language type="ro">румынияча</language>
			<language type="ru">орусча</language>
			<language type="sh">серб-хорват</language>
			<language type="si">сингалача</language>
			<language type="sk">словакча</language>
			<language type="sl">словенче</language>
			<language type="sq">албанча</language>
			<language type="sr">сербче</language>
			<language type="st">сесото</language>
			<language type="su">сунданча</language>
			<language type="sv">шведче</language>
			<language type="sw">суахиличе</language>
			<language type="ta">тамилче</language>
			<language type="te">телугуча</language>
			<language type="th">тайча</language>
			<language type="tk">түркмөн</language>
			<language type="tlh">клингончо</language>
			<language type="tr">туркчо</language>
			<language type="tw">тви</language>
			<language type="uk">украинче</language>
			<language type="ur">урдуча</language>
			<language type="uz">озбекче</language>
			<language type="vi">вьетнамча</language>
			<language type="yi">еврей</language>
			<language type="zh">кытайча</language>
		</languages>
		<territories>
			<territory type="KG">Кыргызстан</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а б г-е ё ж-н ӊ о ө п-у ү х ч ш ъ ы э-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[в ф ц щ ь]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencies>
			<currency type="KGS">
				<symbol>сом</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�vn##Locale/Data/en_AS.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="en"/>
		<territory type="AS"/>
	</identity>
</ldml>
PKpG[t~���Locale/Data/so_KE.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="so"/>
		<territory type="KE"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="SOS">
				<symbol>SOS</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[8,�(	(	Locale/Data/de_AT.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="de"/>
		<territory type="AT"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jän</month>
							<month type="3">Mär</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Jänner</month>
						</monthWidth>
					</monthContext>
				</months>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, dd. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd. MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, dd. MMM yyyy - E, dd. MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM yyyy</greatestDifference>
							<greatestDifference id="d">dd.-dd. MMM yyyy</greatestDifference>
							<greatestDifference id="y">dd. MMM yyyy - dd. MMM yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[���##Locale/Data/sw_TZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sw"/>
		<territory type="TZ"/>
	</identity>
</ldml>
PKpG[Pg@@##Locale/Data/kw_GB.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kw"/>
		<territory type="GB"/>
	</identity>
</ldml>
PKpG[�
1�##Locale/Data/ts_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ts"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[�:��Locale/Data/de_LU.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="de"/>
		<territory type="LU"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="LUF">
				<symbol>F</symbol>
				<decimal>.</decimal>
				<group>,</group>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[Y�H�OOLocale/Data/sr_BA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<territory type="BA"/>
	</identity>
	<alias source="sr_Cyrl_BA" path="//ldml"/>
</ldml>
PKpG[���n##Locale/Data/ve_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:38 $"/>
		<language type="ve"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[�hG���Locale/Data/so_ET.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.47 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="so"/>
		<territory type="ET"/>
	</identity>
	<numbers>
		<currencies>
			<currency type="ETB">
				<symbol>$</symbol>
			</currency>
			<currency type="SOS">
				<symbol>SOS</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�DT�Locale/Data/ug.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.22 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ug"/>
	</identity>
	<localeDisplayNames>
		<variants>
			<variant type="REVISED">Uyghur</variant>
		</variants>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ئ-ب پ ت ج چ خ د ر ز ژ س ش غ ف-ك ڭ گ ل-ه ە و ۆ-ۈ ۋ ى ي ې]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
</ldml>
PKpG[F/��##Locale/Data/fr_CH.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.53 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="fr"/>
		<territory type="CH"/>
	</identity>
	<delimiters>
		<alternateQuotationStart>‹</alternateQuotationStart>
		<alternateQuotationEnd>›</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH.mm:ss 'h' v</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM.yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>du {0} au {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM 'au' E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d 'au' E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM 'au' d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy 'a`' MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM 'au' E, d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d 'au' E, d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy 'au' E, d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM 'au' d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy 'au' d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>'</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[E�O��Locale/Data/kw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.50 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="kw"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="kw">kernewek</language>
		</languages>
		<territories>
			<territory type="GB">Rywvaneth Unys</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Gen</month>
							<month type="2">Whe</month>
							<month type="3">Mer</month>
							<month type="4">Ebr</month>
							<month type="5">Me</month>
							<month type="6">Efn</month>
							<month type="7">Gor</month>
							<month type="8">Est</month>
							<month type="9">Gwn</month>
							<month type="10">Hed</month>
							<month type="11">Du</month>
							<month type="12">Kev</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Mys Genver</month>
							<month type="2">Mys Whevrel</month>
							<month type="3">Mys Merth</month>
							<month type="4">Mys Ebrel</month>
							<month type="5">Mys Me</month>
							<month type="6">Mys Efan</month>
							<month type="7">Mys Gortheren</month>
							<month type="8">Mye Est</month>
							<month type="9">Mys Gwyngala</month>
							<month type="10">Mys Hedra</month>
							<month type="11">Mys Du</month>
							<month type="12">Mys Kevardhu</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Sul</day>
							<day type="mon">Lun</day>
							<day type="tue">Mth</day>
							<day type="wed">Mhr</day>
							<day type="thu">Yow</day>
							<day type="fri">Gwe</day>
							<day type="sat">Sad</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">De Sul</day>
							<day type="mon">De Lun</day>
							<day type="tue">De Merth</day>
							<day type="wed">De Merher</day>
							<day type="thu">De Yow</day>
							<day type="fri">De Gwener</day>
							<day type="sat">De Sadorn</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.m.</am>
				<pm>p.m.</pm>
				<eras>
					<eraAbbr>
						<era type="0">RC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[�3����Locale/Data/az.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.63 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="az"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afarca</language>
			<language type="ab">abxazca</language>
			<language type="ace">akin dili</language>
			<language type="ach">akoli dili</language>
			<language type="ada">adangme dili</language>
			<language type="ady">aduge dili</language>
			<language type="ae">avestanca</language>
			<language type="af">Afrikaanca</language>
			<language type="afa">afro-aziat dili</language>
			<language type="afh">afrihili dili</language>
			<language type="ain">aynuca</language>
			<language type="ak">akanca</language>
			<language type="akk">akadianca</language>
			<language type="ale">aleutca</language>
			<language type="alg">algonguyan dili</language>
			<language type="alt">cənub altay dili</language>
			<language type="am">amarikcə</language>
			<language type="an">aragonca</language>
			<language type="ang">qədimi ingiliscə</language>
			<language type="anp">angikə dili</language>
			<language type="apa">apaçi dili</language>
			<language type="ar">Ərəbcə</language>
			<language type="arc">aramik dili</language>
			<language type="arn">araukanca</language>
			<language type="arp">arapaho dili</language>
			<language type="art">suni dil</language>
			<language type="arw">aravakça</language>
			<language type="as">as</language>
			<language type="ast">asturicə</language>
			<language type="ath">atapaskanca</language>
			<language type="aus">avstraliyca</language>
			<language type="av">avarikcə</language>
			<language type="awa">avadicə</language>
			<language type="ay">aymarca</language>
			<language type="az">azərbaycanca</language>
			<language type="ba">başkir dili</language>
			<language type="bad">banda dili</language>
			<language type="bai">bamilek dili</language>
			<language type="bal">baluc dili</language>
			<language type="ban">balincə</language>
			<language type="bas">basa dili</language>
			<language type="bat">baltik dili</language>
			<language type="be">belarusca</language>
			<language type="bej">beja dili</language>
			<language type="bem">bemba dili</language>
			<language type="ber">berber dili</language>
			<language type="bg">bolqarca</language>
			<language type="bh">biharicə</language>
			<language type="bho">bxoçpuri dili</language>
			<language type="bi">bislama dili</language>
			<language type="bik">bikolca</language>
			<language type="bin">bini dili</language>
			<language type="bla">siksikə dili</language>
			<language type="bm">bambara dili</language>
			<language type="bn">Benqal dili</language>
			<language type="bnt">bantu dili</language>
			<language type="bo">tibet dili</language>
			<language type="br">Bretonca</language>
			<language type="bra">braj dili</language>
			<language type="bs">bosniya dili</language>
			<language type="btk">batak dili</language>
			<language type="bua">buryat dili</language>
			<language type="bug">bugin dili</language>
			<language type="byn">bilincə</language>
			<language type="ca">katalanca</language>
			<language type="cad">kado dili</language>
			<language type="cai">mərkəzi amerika indus dili</language>
			<language type="car">karib dili</language>
			<language type="cau">qavqaz dili</language>
			<language type="cch">atsamca</language>
			<language type="ce">çeçen dili</language>
			<language type="ceb">kebuano dili</language>
			<language type="cel">kelt dili</language>
			<language type="ch">çamoro dili</language>
			<language type="chb">çibçə dili</language>
			<language type="chg">çağatay dili</language>
			<language type="chk">çukiz dili</language>
			<language type="chm">mari dili</language>
			<language type="chn">çinuk ləhçəsi</language>
			<language type="cho">çoktau dili</language>
			<language type="chp">çipevyan dili</language>
			<language type="chr">çiroki dili</language>
			<language type="chy">çeyen dili</language>
			<language type="cmc">çamik dili</language>
			<language type="co">korsikan dili</language>
			<language type="cop">kopt dili</language>
			<language type="cpe">inglis kreol dili</language>
			<language type="cpf">fransız kreol dili</language>
			<language type="cpp">portugal kreol dili</language>
			<language type="cr">kri dili</language>
			<language type="crh">krım türkçə</language>
			<language type="crp">kreol dili</language>
			<language type="cs">çex dili</language>
			<language type="csb">kaşubyan dili</language>
			<language type="cu">kilsə slav dili</language>
			<language type="cus">kuşitik dili</language>
			<language type="cv">çuvaş dili</language>
			<language type="cy">uelscə</language>
			<language type="da">danimarka dili</language>
			<language type="dak">dakota dili</language>
			<language type="dar">darqva dili</language>
			<language type="day">dayak dili</language>
			<language type="de">almanca</language>
			<language type="de_AT">almanca (AT)</language>
			<language type="de_CH">isveç yüksək almancası</language>
			<language type="del">delaver dili</language>
			<language type="den">slavey</language>
			<language type="dgr">doqrib dili</language>
			<language type="din">dinka dili</language>
			<language type="doi">doqri dili</language>
			<language type="dra">dravid dili</language>
			<language type="dsb">aşağı sorbca</language>
			<language type="dua">duala dili</language>
			<language type="dum">ortacaq hollandca</language>
			<language type="dv">diveh dili</language>
			<language type="dyu">dyula dili</language>
			<language type="dz">dzonqa dili</language>
			<language type="ee">eve dili</language>
			<language type="efi">efik dili</language>
			<language type="egy">qədimi misir dili</language>
			<language type="eka">ekacuk dili</language>
			<language type="el">yunanca</language>
			<language type="elx">elamit dili</language>
			<language type="en">ingiliscə</language>
			<language type="en_AU">ingiliscə (AU)</language>
			<language type="en_CA">ingiliscə (CA)</language>
			<language type="en_GB">ingiliscə (GB)</language>
			<language type="en_US">ingiliscə (ABŞ)</language>
			<language type="enm">ortacaq ingiliscə</language>
			<language type="eo">esperanto dili</language>
			<language type="es">ispanca</language>
			<language type="es_419">latın amerika ispancası</language>
			<language type="es_ES">iber-ispanca</language>
			<language type="et">estonca</language>
			<language type="eu">bask dili</language>
			<language type="ewo">evondo dili</language>
			<language type="fa">farsca</language>
			<language type="fan">fang dili</language>
			<language type="fat">fanti dili</language>
			<language type="ff">fula dili</language>
			<language type="fi">fincə</language>
			<language type="fil">taqaloqca</language>
			<language type="fiu">fin-uğri dili</language>
			<language type="fj">fiji dili</language>
			<language type="fo">farer dili</language>
			<language type="fon">fon dili</language>
			<language type="fr">fransızca</language>
			<language type="fr_CA">fransızca (CA)</language>
			<language type="fr_CH">isveç fransızca</language>
			<language type="frm">ortacaq fransızca</language>
			<language type="fro">qədimi fransızca</language>
			<language type="frr">şimal fris dili</language>
			<language type="fur">friul dili</language>
			<language type="fy">frisk dili</language>
			<language type="ga">irlandca</language>
			<language type="gaa">qa dili</language>
			<language type="gay">qayo dili</language>
			<language type="gba">qabaya dili</language>
			<language type="gd">skot gaelik dili</language>
			<language type="gem">Alman dili</language>
			<language type="gez">qez dili</language>
			<language type="gil">qilbert gili</language>
			<language type="gl">qalisian dili</language>
			<language type="gmh">ortacaq yüksək almanca</language>
			<language type="gn">quaranicə</language>
			<language type="goh">qədimi almanca</language>
			<language type="gon">qondi dili</language>
			<language type="gor">qorontalo dili</language>
			<language type="got">gotça</language>
			<language type="grb">qrebo dili</language>
			<language type="grc">qədimi yunanca</language>
			<language type="gsw">isveç almanca</language>
			<language type="gu">gujarati dili</language>
			<language type="gv">manks dili</language>
			<language type="gwi">qviçin dili</language>
			<language type="ha">Hausa dili</language>
			<language type="hai">hayda dili</language>
			<language type="haw">Qavayca</language>
			<language type="he">ivritcə</language>
			<language type="hi">hindi dili</language>
			<language type="hil">hiliqaynon dili</language>
			<language type="him">himaçali dili</language>
			<language type="hit">hittit dili</language>
			<language type="hmn">monq dili</language>
			<language type="ho">hiri motu dili</language>
			<language type="hr">xorvatca</language>
			<language type="hsb">yuxarı sorbca</language>
			<language type="ht">haiti dili</language>
			<language type="hu">macarca</language>
			<language type="hup">hupa dili</language>
			<language type="hy">Ermənicə</language>
			<language type="hz">Herer dili</language>
			<language type="ia">interlingua dili</language>
			<language type="iba">iban dili</language>
			<language type="id">indoneziya dili</language>
			<language type="ie">interlingue dili</language>
			<language type="ig">iqbo dili</language>
			<language type="ii">siçuan yi dili</language>
			<language type="ijo">ico dili</language>
			<language type="ik">inupiaq dili</language>
			<language type="ilo">iloko dili</language>
			<language type="inc">diqər hint dili</language>
			<language type="ine">hint-yevropa dili</language>
			<language type="inh">inquş dili</language>
			<language type="io">ido dili</language>
			<language type="ira">iranca</language>
			<language type="iro">irokuay dili</language>
			<language type="is">isləndcə</language>
			<language type="it">italyanca</language>
			<language type="iu">inuktikut dili</language>
			<language type="ja">yaponca</language>
			<language type="jbo">loğban dili</language>
			<language type="jpr">judo-farsca</language>
			<language type="jrb">jude-ərəbcə</language>
			<language type="jv">yavaca dili</language>
			<language type="ka">gürcü dili</language>
			<language type="kaa">qara-qalpaq dili</language>
			<language type="kab">kabule dili</language>
			<language type="kac">kaçinca</language>
			<language type="kaj">ju dili</language>
			<language type="kam">kamba dili</language>
			<language type="kar">karen dili</language>
			<language type="kaw">kavi dili</language>
			<language type="kbd">kabardca</language>
			<language type="kcg">tiyap dili</language>
			<language type="kfo">koro dili</language>
			<language type="kg">konqo dili</language>
			<language type="kha">xazi dili</language>
			<language type="khi">xoyzan dili</language>
			<language type="kho">xotan dili</language>
			<language type="ki">kikuyu dili</language>
			<language type="kj">kuanyama dili</language>
			<language type="kk">qazax dili</language>
			<language type="kl">kalalisut dili</language>
			<language type="km">kambodiya dili</language>
			<language type="kmb">kimbundu dili</language>
			<language type="kn">kannada dili</language>
			<language type="ko">koreya dili</language>
			<language type="kok">konkan dili</language>
			<language type="kos">kosreyan dili</language>
			<language type="kpe">kpelle dili</language>
			<language type="kr">kanur dili</language>
			<language type="krc">qaraçay-balkar dili</language>
			<language type="krl">karelyan dili</language>
			<language type="kro">kru dili</language>
			<language type="kru">kurux dili</language>
			<language type="ks">kəşmir dili</language>
			<language type="ku">kürdcə</language>
			<language type="kum">kumuk dili</language>
			<language type="kut">kutenay dili</language>
			<language type="kv">komi dili</language>
			<language type="kw">korniş dili</language>
			<language type="ky">qırğızca</language>
			<language type="la">latınca</language>
			<language type="lad">ladin dili</language>
			<language type="lah">laxnda dili</language>
			<language type="lam">lamba dili</language>
			<language type="lb">luksemburq dili</language>
			<language type="lez">ləzqi dili</language>
			<language type="lg">qanda dili</language>
			<language type="li">limburqiş dili</language>
			<language type="ln">Linqala dili</language>
			<language type="lo">laos dili</language>
			<language type="lol">monqo dili</language>
			<language type="loz">lozi dili</language>
			<language type="lt">litva dili</language>
			<language type="lu">luba-katanqa dili</language>
			<language type="lua">luba-lulua dili</language>
			<language type="lui">luyseno dili</language>
			<language type="lun">lunda dili</language>
			<language type="luo">luo dili</language>
			<language type="lus">lushayca</language>
			<language type="lv">latışca</language>
			<language type="mad">maduriz dili</language>
			<language type="mag">maqahi dili</language>
			<language type="mai">maitili dili</language>
			<language type="mak">makasar dili</language>
			<language type="man">məndinqo dili</language>
			<language type="map">avstronezicə</language>
			<language type="mas">masay dili</language>
			<language type="mdf">mokşa dili</language>
			<language type="mdr">mandar dili</language>
			<language type="men">mende dili</language>
			<language type="mg">malaqas dili</language>
			<language type="mga">ortacaq irlandca</language>
			<language type="mh">marşal dili</language>
			<language type="mi">maori dili</language>
			<language type="mic">mikmak dili</language>
			<language type="min">minanqkaban dili</language>
			<language type="mis">çeşitli diller</language>
			<language type="mk">makedoniya dili</language>
			<language type="mkh">mon-xmer dili</language>
			<language type="ml">malayalamca</language>
			<language type="mn">monqolca</language>
			<language type="mnc">mançu dili</language>
			<language type="mni">manipüri dili</language>
			<language type="mno">manobo dili</language>
			<language type="mo">moldavca</language>
			<language type="moh">moxak dili</language>
			<language type="mos">mosi dili</language>
			<language type="mr">marati dili</language>
			<language type="ms">malayca</language>
			<language type="mt">malta dili</language>
			<language type="mul">digər dillər</language>
			<language type="mun">munda dili</language>
			<language type="mus">krik dili</language>
			<language type="mwl">mirand dili</language>
			<language type="mwr">maruari dili</language>
			<language type="my">burmis dili</language>
			<language type="myn">maya dili</language>
			<language type="myv">erzya dili</language>
			<language type="na">nauru dili</language>
			<language type="nah">nahuatl dili</language>
			<language type="nai">şimal amerika yerli dili</language>
			<language type="nap">neapolital dili</language>
			<language type="nb">norvec bokmal dili</language>
			<language type="nd">şimal ndebele dili</language>
			<language type="nds">aşağı almanca</language>
			<language type="ne">nepalca</language>
			<language type="new">nevari dili</language>
			<language type="ng">nqonka dili</language>
			<language type="nia">nyas dili</language>
			<language type="nic">niger-kordofyan dili</language>
			<language type="niu">niyuan dili</language>
			<language type="nl">hollandca</language>
			<language type="nl_BE">flem dili</language>
			<language type="nn">norveç ninorsk dili</language>
			<language type="no">norveç dili</language>
			<language type="nog">noqay dili</language>
			<language type="non">qədimi norsca</language>
			<language type="nqo">nqo dili</language>
			<language type="nr">cənub ndebele dili</language>
			<language type="nso">şimal soto dili</language>
			<language type="nub">nubiy dili</language>
			<language type="nv">navayo dili</language>
			<language type="ny">nyanca dili</language>
			<language type="nym">nyamvezi dili</language>
			<language type="nyn">nyankol dili</language>
			<language type="nyo">niyoro dili</language>
			<language type="nzi">nizima dili</language>
			<language type="oc">oksitanca</language>
			<language type="oj">ocibva dili</language>
			<language type="om">oromo dili</language>
			<language type="or">Oriyə dili</language>
			<language type="os">osetik dili</language>
			<language type="osa">osage dili</language>
			<language type="ota">osman dili</language>
			<language type="oto">otomian dili</language>
			<language type="pa">puncab dili</language>
			<language type="paa">papua dili</language>
			<language type="pag">panqasinan dili</language>
			<language type="pal">paxlavi dili</language>
			<language type="pam">pampanqa dili</language>
			<language type="pap">papyamento dili</language>
			<language type="pau">palayanca</language>
			<language type="peo">qədimi farsca</language>
			<language type="phi">filipin dili</language>
			<language type="phn">foyenik dili</language>
			<language type="pi">pali dili</language>
			<language type="pl">Polish dili</language>
			<language type="pon">ponpeyan dili</language>
			<language type="pra">prakrit dili</language>
			<language type="pro">qədimi provensialca</language>
			<language type="ps">Puştu dili</language>
			<language type="pt">portuqalca</language>
			<language type="pt_PT">İber portuqalca</language>
			<language type="qu">kuechya dili</language>
			<language type="raj">racastan dili</language>
			<language type="rap">rapanu dili</language>
			<language type="rar">rarotonqan dili</language>
			<language type="rn">rundi dili</language>
			<language type="ro">rumın</language>
			<language type="rom">roman dili</language>
			<language type="root">rut dili</language>
			<language type="ru">rusca</language>
			<language type="rup">aromanca</language>
			<language type="rw">kinyarvanda dili</language>
			<language type="sa">Sanskrit dili</language>
			<language type="sad">sandave dili</language>
			<language type="sah">yakut dili</language>
			<language type="sai">cənub amerika yerli dili</language>
			<language type="sal">salişan dili</language>
			<language type="sam">samaritan dili</language>
			<language type="sas">sasak dili</language>
			<language type="sat">santal dili</language>
			<language type="sc">sardin dili</language>
			<language type="scn">sisili dili</language>
			<language type="sco">skots dili</language>
			<language type="sd">sindhi dili</language>
			<language type="se">şimal sami dili</language>
			<language type="sel">selkup dili</language>
			<language type="sem">ivrit dili</language>
			<language type="sg">sanqo dili</language>
			<language type="sga">qədimi irlandca</language>
			<language type="sgn">işarət dili</language>
			<language type="sh">serb-xorvatca</language>
			<language type="shn">şan dili</language>
			<language type="si">sinhaliscə</language>
			<language type="sid">sidamo dili</language>
			<language type="sio">sioyan dili</language>
			<language type="sit">sino-tibet dili</language>
			<language type="sk">slovakca</language>
			<language type="sl">slovencə</language>
			<language type="sla">slav dili</language>
			<language type="sm">samoa dili</language>
			<language type="sma">cənub sami dili</language>
			<language type="smi">səmi dili</language>
			<language type="smj">lule sami dili</language>
			<language type="smn">inari sami</language>
			<language type="sms">skolt dili</language>
			<language type="sn">şona dili</language>
			<language type="snk">soninke dili</language>
			<language type="so">somali dili</language>
			<language type="sog">soqdiyen dili</language>
			<language type="son">sonqay dili</language>
			<language type="sq">Albanca</language>
			<language type="sr">serb dili</language>
			<language type="srn">sranan tonqo dili</language>
			<language type="srr">serer dilii</language>
			<language type="ss">svati dili</language>
			<language type="ssa">nilo-sahara dili</language>
			<language type="st">Sesoto dili</language>
			<language type="su">sundanca</language>
			<language type="suk">sukuma dili</language>
			<language type="sus">susu dili</language>
			<language type="sux">sumeryan dili</language>
			<language type="sv">isveçcə</language>
			<language type="sw">suahilicə</language>
			<language type="syr">siryak dili</language>
			<language type="ta">tamilcə</language>
			<language type="tai">tay dili</language>
			<language type="te">teluqu dili</language>
			<language type="tem">timne dili</language>
			<language type="ter">tereno dili</language>
			<language type="tet">tetum dili</language>
			<language type="tg">tacik dili</language>
			<language type="th">tayca</language>
			<language type="ti">tiqrin dili</language>
			<language type="tig">tiqre dili</language>
			<language type="tiv">tiv dili</language>
			<language type="tk">türkməncə</language>
			<language type="tkl">tokelay dili</language>
			<language type="tl">taqaloq dili</language>
			<language type="tlh">klinqon</language>
			<language type="tli">tlinqit dili</language>
			<language type="tmh">tamaşek dili</language>
			<language type="tn">svana dili</language>
			<language type="to">tonqa dili</language>
			<language type="tog">niyasa tonga dili</language>
			<language type="tpi">tok pisin dili</language>
			<language type="tr">türkcə</language>
			<language type="ts">sonqa dili</language>
			<language type="tsi">simşyan dili</language>
			<language type="tt">tatarca</language>
			<language type="tum">tumbuka dili</language>
			<language type="tup">tupi dili</language>
			<language type="tut">altaik dili</language>
			<language type="tvl">tuvalu dili</language>
			<language type="tw">Tvi dili</language>
			<language type="ty">taxiti dili</language>
			<language type="tyv">tuvinyan dili</language>
			<language type="udm">udmurt dili</language>
			<language type="ug">uyğurca</language>
			<language type="uga">uqaritik dili</language>
			<language type="uk">ukraynaca</language>
			<language type="umb">umbundu dili</language>
			<language type="und">bilinməyən vəya gəcərsiz dil</language>
			<language type="ur">urduca</language>
			<language type="uz">özbəkcə</language>
			<language type="vai">vay dili</language>
			<language type="ve">venda dili</language>
			<language type="vi">vyetnamca</language>
			<language type="vo">volapük dili</language>
			<language type="vot">votik dili</language>
			<language type="wa">valun dili</language>
			<language type="wak">vakaşan dili</language>
			<language type="wal">valamo dili</language>
			<language type="war">varay dili</language>
			<language type="was">vaşo dili</language>
			<language type="wen">sorb dili</language>
			<language type="wo">volof dili</language>
			<language type="xal">kalmıqca</language>
			<language type="xh">xosa dili</language>
			<language type="yao">yao dili</language>
			<language type="yap">yapiz dili</language>
			<language type="yi">Yahudi dili</language>
			<language type="yo">yoruba dili</language>
			<language type="ypk">yupik dili</language>
			<language type="za">juənq dili</language>
			<language type="zap">zapotek dili</language>
			<language type="zbl">blisimbols dili</language>
			<language type="zen">zenaqa dili</language>
			<language type="zh">çincə</language>
			<language type="zh_Hans">adi çincə</language>
			<language type="zh_Hant">gələnəksəl çincə</language>
			<language type="znd">zande dili</language>
			<language type="zu">zulu dili</language>
			<language type="zun">zuni dili</language>
			<language type="zza">zaza dili</language>
		</languages>
		<scripts>
			<script type="Arab">ərəb</script>
			<script type="Armi">armi</script>
			<script type="Armn">erməni</script>
			<script type="Avst">avestan</script>
			<script type="Bali">bali</script>
			<script type="Batk">batak</script>
			<script type="Beng">benqal</script>
			<script type="Blis">blissymbols</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">kor yazısı</script>
			<script type="Bugi">buqin</script>
			<script type="Buhd">buhid</script>
			<script type="Cakm">kakm</script>
			<script type="Cans">birləşmiş kanada yerli yazısı</script>
			<script type="Cari">kariyan</script>
			<script type="Cham">çam</script>
			<script type="Cher">çiroki</script>
			<script type="Cirt">sirt</script>
			<script type="Copt">koptik</script>
			<script type="Cprt">kipr</script>
			<script type="Cyrl">kiril</script>
			<script type="Cyrs">qədimi kilsa kirili</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">misir demotik</script>
			<script type="Egyh">misir hiyeratik</script>
			<script type="Egyp">misir hiyeroqlif</script>
			<script type="Ethi">efiopiya</script>
			<script type="Geok">gürcü xutsuri</script>
			<script type="Geor">gürcü</script>
			<script type="Glag">qlaqolitik</script>
			<script type="Goth">qotik</script>
			<script type="Grek">yunan</script>
			<script type="Gujr">qucarat</script>
			<script type="Guru">qurmuxi</script>
			<script type="Hang">hanqul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunu</script>
			<script type="Hans">basitləştirilmiş han</script>
			<script type="Hant">qədimi han</script>
			<script type="Hebr">yahudi</script>
			<script type="Hira">iragana</script>
			<script type="Hmng">pahav monq</script>
			<script type="Hrkt">katakana vəya hiraqana</script>
			<script type="Hung">qədimi macar</script>
			<script type="Inds">hindistan</script>
			<script type="Ital">qədimi italyalı</script>
			<script type="Java">cava</script>
			<script type="Jpan">yapon</script>
			<script type="Kali">kayax li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">xaroşti</script>
			<script type="Khmr">xmer</script>
			<script type="Knda">kannada</script>
			<script type="Kore">korean</script>
			<script type="Kthi">kti</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">lao</script>
			<script type="Latf">fraktur latını</script>
			<script type="Latg">gael latını</script>
			<script type="Latn">latın</script>
			<script type="Lepc">lepçə</script>
			<script type="Limb">limbu</script>
			<script type="Lyci">lusian</script>
			<script type="Lydi">ludian</script>
			<script type="Mand">mandayen</script>
			<script type="Mani">maniçayen</script>
			<script type="Maya">maya hiyeroqlifi</script>
			<script type="Mero">meroytik</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">monqol</script>
			<script type="Moon">mun</script>
			<script type="Mtei">meytey mayek</script>
			<script type="Mymr">miyanmar</script>
			<script type="Nkoo">nko</script>
			<script type="Ogam">oğam</script>
			<script type="Olck">ol çiki</script>
			<script type="Orkh">orxon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmanya</script>
			<script type="Perm">qədimi permik</script>
			<script type="Phag">faqs-pa</script>
			<script type="Phli">fli</script>
			<script type="Phlp">flp</script>
			<script type="Phlv">kitab paxlavi</script>
			<script type="Phnx">foenik</script>
			<script type="Plrd">polard fonetik</script>
			<script type="Prti">prti</script>
			<script type="Rjng">recəng</script>
			<script type="Roro">ronqoronqo</script>
			<script type="Runr">runik</script>
			<script type="Samr">samaritan</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurastra</script>
			<script type="Sgnw">işarət yazısı</script>
			<script type="Shaw">şavyan</script>
			<script type="Sinh">sinhala</script>
			<script type="Sund">sundan</script>
			<script type="Sylo">siloti nəqri</script>
			<script type="Syrc">siryak</script>
			<script type="Syre">estrangela süryanice</script>
			<script type="Syrn">Syrn</script>
			<script type="Tagb">taqbanva</script>
			<script type="Tale">tay le</script>
			<script type="Talu">təzə tay lu</script>
			<script type="Taml">tamil</script>
			<script type="Tavt">tavt</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengvar</script>
			<script type="Tfng">tifinaq</script>
			<script type="Tglg">taqaloq</script>
			<script type="Thaa">txana</script>
			<script type="Thai">tay</script>
			<script type="Tibt">tibet</script>
			<script type="Ugar">uqarit</script>
			<script type="Vaii">vay</script>
			<script type="Visp">danışma səsləri</script>
			<script type="Xpeo">qədimi fars</script>
			<script type="Xsux">sumer-akadyan kuneyform</script>
			<script type="Yiii">yi</script>
			<script type="Zmth">zmth</script>
			<script type="Zsym">zsym</script>
			<script type="Zxxx">yazısız</script>
			<script type="Zyyy">adi yazi</script>
			<script type="Zzzz">bilinməyən veya gəcərsiz</script>
		</scripts>
		<territories>
			<territory type="001">Dünya</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Şimal Amerika</territory>
			<territory type="005">Cənub Amerika</territory>
			<territory type="009">Okeyaniya</territory>
			<territory type="011">Qərb afrika</territory>
			<territory type="013">Orta Amerika</territory>
			<territory type="014">Şərq Afrika</territory>
			<territory type="015">Şimal Afrika</territory>
			<territory type="017">Orta Afrika</territory>
			<territory type="018">018</territory>
			<territory type="019">Amerikalar</territory>
			<territory type="021">021</territory>
			<territory type="029">Kariyıplar</territory>
			<territory type="030">Şərq Asiya</territory>
			<territory type="034">Cənub Asiya</territory>
			<territory type="035">Cənub Şərq Asiya</territory>
			<territory type="039">Cənub Avropa</territory>
			<territory type="053">Avstraliya və Yeni Zelandiya</territory>
			<territory type="054">Melanesya</territory>
			<territory type="057">Mikronesiya reqionu</territory>
			<territory type="061">Polineziya</territory>
			<territory type="062">Cənub Orta Asiya</territory>
			<territory type="142">Aziya</territory>
			<territory type="143">Orta Aziya</territory>
			<territory type="145">Qərb Asiya</territory>
			<territory type="150">Avropa</territory>
			<territory type="151">Şərq Avropa</territory>
			<territory type="154">Şimal Avropa</territory>
			<territory type="155">Qərb Avropa</territory>
			<territory type="172">172</territory>
			<territory type="419">Latın Amerikası və Kariblər</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Birləşmiş Ərəb Emiratları</territory>
			<territory type="AF">Əfqənistan</territory>
			<territory type="AG">Antiqua və Barbuda</territory>
			<territory type="AI">Anquila</territory>
			<territory type="AL">Albaniya</territory>
			<territory type="AM">Ermənistan</territory>
			<territory type="AN">Hollandiya antilleri</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Arqentina</territory>
			<territory type="AS">Amerika Samoası</territory>
			<territory type="AT">Avstriya</territory>
			<territory type="AU">Avstraliya</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland Adaları</territory>
			<territory type="AZ">Azərbaycan</territory>
			<territory type="BA">Bosniya və Herzokovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Banqladeş</territory>
			<territory type="BE">Belçika</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bolqariya</territory>
			<territory type="BH">Bahreyn</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Seynt Bartelemey</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Bruney</territory>
			<territory type="BO">Boliviya</territory>
			<territory type="BR">Braziliya</territory>
			<territory type="BS">Bahamalar</territory>
			<territory type="BT">Butan</territory>
			<territory type="BV">Bove Adası</territory>
			<territory type="BW">Botsvana</territory>
			<territory type="BY">Belarus</territory>
			<territory type="BZ">Beliz</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokos Adaları</territory>
			<territory type="CD">Konqo - Kinşasa</territory>
			<territory type="CF">Orta Afrika respublikası</territory>
			<territory type="CG">Konqo - Brazavil</territory>
			<territory type="CH">isveçriya</territory>
			<territory type="CI">İvori Sahili</territory>
			<territory type="CK">Kuk Adaları</territory>
			<territory type="CL">Çile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Çin</territory>
			<territory type="CO">Kolumbiya</territory>
			<territory type="CR">Kosta Rika</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kape Verde</territory>
			<territory type="CX">Çristmas Adası</territory>
			<territory type="CY">Kipr</territory>
			<territory type="CZ">Çex respublikası</territory>
			<territory type="DE">Almaniya</territory>
			<territory type="DJ">Ciboti</territory>
			<territory type="DK">Danemarka</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominik Respublikası</territory>
			<territory type="DZ">Cezayır</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Estoniya</territory>
			<territory type="EG">Misir</territory>
			<territory type="EH">Qərb Sahara</territory>
			<territory type="ER">Eritreya</territory>
			<territory type="ES">İspaniya</territory>
			<territory type="ET">Efiopiya</territory>
			<territory type="FI">Finlandiya</territory>
			<territory type="FJ">Fici</territory>
			<territory type="FK">Folkland Adaları</territory>
			<territory type="FM">Mikronesiya</territory>
			<territory type="FO">Faro Adaları</territory>
			<territory type="FR">Fransa</territory>
			<territory type="GA">Qabon</territory>
			<territory type="GB">Birləşmiş Krallıq</territory>
			<territory type="GD">Qrenada</territory>
			<territory type="GE">Gürcüstan</territory>
			<territory type="GF">Fransız Quyanası</territory>
			<territory type="GG">Görnsey</territory>
			<territory type="GH">Qana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Qrinland</territory>
			<territory type="GM">Qambiya</territory>
			<territory type="GN">Qvineya</territory>
			<territory type="GP">Qvadalup</territory>
			<territory type="GQ">Ekvator Qineya</territory>
			<territory type="GR">Yunanıstan</territory>
			<territory type="GS">Cənub Gürcüstan və Cənub Sandvilç Adaları</territory>
			<territory type="GT">Qvatemala</territory>
			<territory type="GU">Quam</territory>
			<territory type="GW">Qvineya-Bisau</territory>
			<territory type="GY">Quyana</territory>
			<territory type="HK">Honk Konq</territory>
			<territory type="HM">Hörd və Makdonald Adaları</territory>
			<territory type="HN">Qonduras</territory>
			<territory type="HR">Xorvatiya</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Macaristan</territory>
			<territory type="ID">İndoneziya</territory>
			<territory type="IE">İrlandiya</territory>
			<territory type="IL">İzrail</territory>
			<territory type="IM">Man Adası</territory>
			<territory type="IN">Hindistan</territory>
			<territory type="IO">Britaniya-Hindistan Okeanik territoriyası</territory>
			<territory type="IQ">İrak</territory>
			<territory type="IR">İran</territory>
			<territory type="IS">İslandiya</territory>
			<territory type="IT">İtaliya</territory>
			<territory type="JE">Cörsi</territory>
			<territory type="JM">Yamayka</territory>
			<territory type="JO">Ürdün</territory>
			<territory type="JP">Yaponiya</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kırqızstan</territory>
			<territory type="KH">Kambodiya</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoros</territory>
			<territory type="KN">Seynt Kits və Nevis</territory>
			<territory type="KP">Şimal Koreya</territory>
			<territory type="KR">Cənub Koreya</territory>
			<territory type="KW">Kuveyt</territory>
			<territory type="KY">Kayman Adaları</territory>
			<territory type="KZ">Kazaxstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Lebanon</territory>
			<territory type="LC">Seynt Lusiya</territory>
			<territory type="LI">Lixtenşteyn</territory>
			<territory type="LK">Şri Lanka</territory>
			<territory type="LR">Liberiya</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litva</territory>
			<territory type="LU">Lüksemburq</territory>
			<territory type="LV">Latviya</territory>
			<territory type="LY">Libya</territory>
			<territory type="MA">Morokko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Monteneqro</territory>
			<territory type="MF">Seynt Martin</territory>
			<territory type="MG">Madaqaskar</territory>
			<territory type="MH">Marşal Adaları</territory>
			<territory type="MK">Masedoniya</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Monqoliya</territory>
			<territory type="MO">Makao</territory>
			<territory type="MP">Şimal Mariana Adaları</territory>
			<territory type="MQ">Martiniqu</territory>
			<territory type="MR">Mavritaniya</territory>
			<territory type="MS">Montserat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mavritis</territory>
			<territory type="MV">Maldiv</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksika</territory>
			<territory type="MY">Malaysiya</territory>
			<territory type="MZ">Mazambik</territory>
			<territory type="NA">Namibiya</territory>
			<territory type="NC">Yeni Kaledoniya</territory>
			<territory type="NE">nijer</territory>
			<territory type="NF">Norfolk Adası</territory>
			<territory type="NG">Nijeriya</territory>
			<territory type="NI">Nikaraqua</territory>
			<territory type="NL">Hollandiya</territory>
			<territory type="NO">Norvec</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niye</territory>
			<territory type="NZ">Yeni Zelandiya</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Fransız Polineziya</territory>
			<territory type="PG">Papua Yeni Qvineya</territory>
			<territory type="PH">Filipin</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polşa</territory>
			<territory type="PM">Seynt Piyer və Mikelon</territory>
			<territory type="PN">Pitkarn</territory>
			<territory type="PR">Puerto Riko</territory>
			<territory type="PS">Fələstin Bölqüsü</territory>
			<territory type="PT">Portuqal</territory>
			<territory type="PW">Palav</territory>
			<territory type="PY">Paraqvay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Uzak Okeyaniya</territory>
			<territory type="QU">Avropa Birləşliyi</territory>
			<territory type="RE">Reyunion</territory>
			<territory type="RO">Romaniya</territory>
			<territory type="RS">Serbiya</territory>
			<territory type="RU">Rusiya</territory>
			<territory type="RW">Rvanda</territory>
			<territory type="SA">Saudi Ərəbistan</territory>
			<territory type="SB">Solomon Adaları</territory>
			<territory type="SC">Seyçels</territory>
			<territory type="SD">sudan</territory>
			<territory type="SE">isveç</territory>
			<territory type="SG">Sinqapur</territory>
			<territory type="SH">Seynt Elena</territory>
			<territory type="SI">Sloveniya</territory>
			<territory type="SJ">svalbard və yan mayen</territory>
			<territory type="SK">Slovakiya</territory>
			<territory type="SL">Siyera Leon</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Seneqal</territory>
			<territory type="SO">Somaliya</territory>
			<territory type="SR">surinamə</territory>
			<territory type="ST">Sao Tom və Prinsip</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">siriya</territory>
			<territory type="SZ">svazilənd</territory>
			<territory type="TC">Türk və Kaykos Adaları</territory>
			<territory type="TD">Çad</territory>
			<territory type="TF">Fransız Cənub teritoriyası</territory>
			<territory type="TG">Toqo</territory>
			<territory type="TH">tayland</territory>
			<territory type="TJ">tacikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Şərq Timor</territory>
			<territory type="TM">Türkmənistan</territory>
			<territory type="TN">Tunisiya</territory>
			<territory type="TO">Tonqa</territory>
			<territory type="TR">Türkiya</territory>
			<territory type="TT">Trinidan və Tobaqo</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">tayvan</territory>
			<territory type="TZ">tanzaniya</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uqanda</territory>
			<territory type="UM">Birləşmiş Ştatların uzaq adaları</territory>
			<territory type="US">Amerika Birləşmiş Ştatları</territory>
			<territory type="UY">Uruqvay</territory>
			<territory type="UZ">Özbəkistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Seynt Vinsent və Qrenada</territory>
			<territory type="VE">Venesuela</territory>
			<territory type="VG">Britaniya Virgin Adaları</territory>
			<territory type="VI">ABŞ Virqin Adaları</territory>
			<territory type="VN">Vyetnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Valis və Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayot</territory>
			<territory type="ZA">Cənub Afrika</territory>
			<territory type="ZM">Zambiya</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">bilinmir</territory>
		</territories>
		<types>
			<type type="buddhist" key="calendar">Budist təqvimi</type>
			<type type="chinese" key="calendar">Çin təqvimi</type>
			<type type="gregorian" key="calendar">Qreqoriy təqvimi</type>
			<type type="hebrew" key="calendar">Yahudi təqvimi</type>
			<type type="indian" key="calendar">Hindi təqvimi</type>
			<type type="islamic" key="calendar">Müsəlman təqvimi</type>
			<type type="islamic-civil" key="calendar">Ivrit təqvimi</type>
			<type type="japanese" key="calendar">Yapon təqvimi</type>
			<type type="pinyin" key="collation">Pinyin təqvimi</type>
			<type type="roc" key="calendar">Çin respublikası təqvimi</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">ABŞ</measurementSystemName>
			<measurementSystemName type="metric">metr</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Dil: {0}</codePattern>
			<codePattern type="script">Yazı: {0}</codePattern>
			<codePattern type="territory">Rayon: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ç d e ə f g ğ h i {i̇} İ ı j-o ö p-s ş t u ü v x-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[w]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>“</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>’</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">yan</month>
							<month type="2">fev</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">may</month>
							<month type="6">iyn</month>
							<month type="7">iyl</month>
							<month type="8">avq</month>
							<month type="9">sen</month>
							<month type="10">okt</month>
							<month type="11">noy</month>
							<month type="12">dek</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Yanvar</month>
							<month type="2">Fevral</month>
							<month type="3">Mart</month>
							<month type="4">Aprel</month>
							<month type="5">May</month>
							<month type="6">İyun</month>
							<month type="7">İyul</month>
							<month type="8">Avqust</month>
							<month type="9">Sentyabr</month>
							<month type="10">Oktyabr</month>
							<month type="11">Noyabr</month>
							<month type="12">Dekabr</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">B.</day>
							<day type="mon">B.E.</day>
							<day type="tue">Ç.A.</day>
							<day type="wed">Ç.</day>
							<day type="thu">C.A.</day>
							<day type="fri">C</day>
							<day type="sat">Ş.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">bazar</day>
							<day type="mon">bazar ertəsi</day>
							<day type="tue">çərşənbə axşamı</day>
							<day type="wed">çərşənbə</day>
							<day type="thu">cümə axşamı</day>
							<day type="fri">cümə</day>
							<day type="sat">şənbə</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">7</day>
							<day type="mon">1</day>
							<day type="tue">2</day>
							<day type="wed">3</day>
							<day type="thu">4</day>
							<day type="fri">5</day>
							<day type="sat">6</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1-ci kv.</quarter>
							<quarter type="2">2-ci kv.</quarter>
							<quarter type="3">3-cü kv.</quarter>
							<quarter type="4">4-cü kv.</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1-ci kvartal</quarter>
							<quarter type="2">2-ci kvartal</quarter>
							<quarter type="3">3-cü kvartal</quarter>
							<quarter type="4">4-cü kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">eramızdan əvvəl</era>
						<era type="1">bizim eramızın</era>
					</eraNames>
					<eraAbbr>
						<era type="0">e.ə.</era>
						<era type="1">b.e.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>il</displayName>
					</field>
					<field type="month">
						<displayName>ay</displayName>
					</field>
					<field type="week">
						<displayName>həftə</displayName>
					</field>
					<field type="day">
						<displayName>bu gün</displayName>
						<relative type="0">bu gün</relative>
						<relative type="1">sabah</relative>
						<relative type="3">üç gün sonra</relative>
						<relative type="-1">dünən</relative>
						<relative type="-3">üç gün əvvəl</relative>
					</field>
					<field type="weekday">
						<displayName>həftə günü</displayName>
					</field>
					<field type="hour">
						<displayName>saat</displayName>
					</field>
					<field type="minute">
						<displayName>dəqiqə</displayName>
					</field>
					<field type="second">
						<displayName>saniyə</displayName>
					</field>
					<field type="zone">
						<displayName>zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Bilinmir</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>rofera</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>çənub polus</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>syova</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>moson</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>Deyvis</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>vostok</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>Keysi</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont de Urvile</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>makmurdo</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>rio qayegos</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>mendoza</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>san xuan</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>uşuya</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>La Rioha</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>san luis</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>Katamarka</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>Cucuy</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>tukuman</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Kordoba</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>Buenos Ayres</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>perf</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>Yukla</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>Darvin</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Adelayd</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>Broken Hil</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>Kuriye</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>melburn</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>sidney</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>Brisbeyn</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>Lord Hove</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>İrunepe</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Rio Branko</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>porto velo</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Kuyaba</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>Kampo Qrande</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguayna</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>sao paulo</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Bahiya</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maseyo</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>resif</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>noronha</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>Douson</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>vaythors</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>İnuvik</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>vənkuver</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>Douson Krik</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>yelounayf</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>Edmondton</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>svift kurent</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>Kəmbric Bey</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>recina</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>vinipeq</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>resolut</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>reyni river</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>rankin inlet</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>Koral Harbor</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>funder bey</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>nipiqon</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>toronto</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>montreal</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>İqalut</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>panqnirtanq</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>monkton</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>Halifaks</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>Qus Bey</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>Qleys Bey</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>Blank-Sablon</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St Johns</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinşasa</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Lubumbaşi</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>İster</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kaşqar</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>urumçi</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Conqinq</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Qalapaqos</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanari</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>Seuta</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>ponape</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Kosraye</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>tul</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>skoresbisund</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Danmarkşavn</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Cakarta</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>pontiyanak</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Makasar</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>Cayapura</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>Enderböri</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Kirimati</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>tarava</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>qüzülorda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Almati</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Kvajaleyn</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Maxiro</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>ulanbatar</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Coybalsan</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>tixuana</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>Hermosilo</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>mazaltan</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>Cihuvava</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>monterey</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>mexiko</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Kankun</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>Kuçinq</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Çatam</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Markuyesas</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Qambiyer</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>Madeyra</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kalininqrad</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>moskva</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>volqoqrad</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>samara</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>yekaterinburq</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>novosibirsk</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>İrkutsk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>yakutsk</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>vladivostok</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>saxalin</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Maqadan</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamçatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadır</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>ujgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kiyev</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>simferopol</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>zaporojye</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>midvey</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>Conston</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>veyk</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>nom</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Ankorac</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>yakutat</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>Cüneau</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Los Anceles</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>Boyse</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>finiks</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>şiprok</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>nyu salem</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Orta, Şimal Dakota</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>Cikaqo</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>menomini</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>vinsenes</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>pitersburq</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>tell şəhəri</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>Noks</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>vinamak</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>Marenqo</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>İndianapolis</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>Luisvil</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>vevey</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>montiçelo</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>Detroyt</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>nyu york</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>səmərkənd</exemplarCity>
			</zone>
			<metazone type="British">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Orta Avropa</standard>
					<daylight>Orta Avropa/yay</daylight>
				</long>
				<short>
					<standard>Orta Avropa/standart</standard>
					<daylight>Orta Avropa/yaz</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Şərq Avropa</standard>
					<daylight>Şərq Avropa/yay</daylight>
				</long>
				<short>
					<standard>Şərq Avropa/standart</standard>
					<daylight>Şərq Avropa/yaz</daylight>
				</short>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Irish">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kuybuşev</standard>
					<daylight>Kuybuşev/yay</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moskva</generic>
					<standard>Moskva/standart</standard>
					<daylight>Moskva/yay</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Samara</standard>
					<daylight>Samara/yay</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Türkiya</standard>
					<daylight>Türkiya/yay</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Volqoqrad</standard>
					<daylight>Volqoqrad/yay</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andora pesetası</displayName>
				<displayName count="other">Andora pesetası</displayName>
			</currency>
			<currency type="AED">
				<displayName>Birləşmiş ərəb emiratlar dirhamı</displayName>
				<displayName count="other">BƏE dirhamı</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Əfgəni (AFA)</displayName>
				<displayName count="other">Əfgən (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Əfgəni</displayName>
				<displayName count="other">Əfgən</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Alban leki</displayName>
				<displayName count="other">Alban leki</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Erməni dramı</displayName>
				<displayName count="other">Erməni dramı</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Hollandiya antila gilderi</displayName>
				<displayName count="other">Hollandiya Antila gilderi</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Anqola kvanzası</displayName>
				<displayName count="other">Anqola kvanzasi</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Anqola kvanzasi (1977-1990)</displayName>
				<displayName count="other">Anqola kvanzasi (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Anqola yeni kvanzası (1990-2000)</displayName>
				<displayName count="other">Anqola yeni kvanzasi (AON)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Anqola kvanzası (1995-1999)</displayName>
				<displayName count="other">Anqola kvanzasi (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentina avstralı</displayName>
				<displayName count="other">Argentina avstralı</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentina pesosu (1983-1985)</displayName>
				<displayName count="other">Argentina pesosu (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentina pesosu</displayName>
				<displayName count="other">Argentina pesosu</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Avstriya şilingi</displayName>
				<displayName count="other">Avstriya şilingi</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Avstraliya dolları</displayName>
				<displayName count="other">Avstraliya dolları</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Aruba qilderi</displayName>
				<displayName count="other">Aruba qilderi</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Manat</displayName>
				<displayName count="other">Azərbaycan manatı (AZM)</displayName>
				<symbol>man.</symbol>
			</currency>
			<currency type="AZN">
				<displayName>Azərbaycan manatı</displayName>
				<displayName count="other">Azərbaycan manatı</displayName>
				<symbol>AZN</symbol>
			</currency>
			<currency type="BAD">
				<displayName>Bosniya-Herzeqovina dinarı</displayName>
				<displayName count="other">Bosniya-Herzeqovina dinarı</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosniya-Herzeqovina markası</displayName>
				<displayName count="other">Bosniya-Herzeqovina markası</displayName>
			</currency>
			<currency type="BBD">
				<displayName>Barbados dolları</displayName>
				<displayName count="other">Barbados dolları</displayName>
			</currency>
			<currency type="BDT">
				<displayName>Banqladeş takası</displayName>
				<displayName count="other">Banqladeş takası</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Belçika frankı (deyşirik)</displayName>
				<displayName count="other">Belçika frankı (deyşirik)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belçika frankı</displayName>
				<displayName count="other">Belçika frankı</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Belçika frankı (finans)</displayName>
				<displayName count="other">Belçika frankı (finans)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bolqariya levası</displayName>
				<displayName count="other">Bolqariya levası</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bolqariya yeni levası</displayName>
				<displayName count="other">Bolqariya yeni levası</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreyn dinarı</displayName>
				<displayName count="other">Bahreyn dinarı</displayName>
			</currency>
			<currency type="BIF">
				<displayName>Burundi frankası</displayName>
				<displayName count="other">Burundi frankası</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda dolları</displayName>
				<displayName count="other">Bermuda dolları</displayName>
			</currency>
			<currency type="BND">
				<displayName>Bruney dolları</displayName>
				<displayName count="other">Bruney dolları</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="other">Boliviano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Boliviya pesosu</displayName>
				<displayName count="other">Boliviya pesosu</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Boliviya mvdolı</displayName>
				<displayName count="other">Boliviya mvdolı</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Braziliya kruzeyro novası</displayName>
				<displayName count="other">Braziliya kruzeyro novası</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Braziliya kruzadosu</displayName>
				<displayName count="other">Braziliya kruzadosu</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Braziliya kruzeyrosu (1990-1993)</displayName>
				<displayName count="other">Braziliya kruzeyrosu (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Braziliya realı</displayName>
				<displayName count="other">Braziliya realı</displayName>
				<symbol>R$</symbol>
			</currency>
			<currency type="BRN">
				<displayName>Braziliya kruzado novası</displayName>
				<displayName count="other">Braziliya kruzado novası</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Braziliya kruzeyrosu</displayName>
				<displayName count="other">Braziliya kruzeyrosu</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahama dolları</displayName>
				<displayName count="other">Bahama dolları</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Butan ngultrumu</displayName>
				<displayName count="other">Butan ngultrumu</displayName>
			</currency>
			<currency type="BUK">
				<displayName>Burmis kyatı</displayName>
				<displayName count="other">Burmis kyatı</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botsvana pulası</displayName>
				<displayName count="other">Botsvana pulası</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Belarusiya yeni rublu</displayName>
				<displayName count="other">Belarusiya yeni rublu</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Belarusiya rublu</displayName>
				<displayName count="other">Belarusiya rublu</displayName>
			</currency>
			<currency type="BZD">
				<displayName>Beliz dolları</displayName>
				<displayName count="other">Beliz dolları</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanadiya dolları</displayName>
				<displayName count="other">Kanada dolları</displayName>
			</currency>
			<currency type="CDF">
				<displayName>Konqoliz frank konqolaysı</displayName>
				<displayName count="other">Konqoliz frank konqolaysı</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR Yevrosu</displayName>
				<displayName count="other">WIR Yevrosu</displayName>
			</currency>
			<currency type="CHF">
				<displayName>İsveçriya frankası</displayName>
				<displayName count="other">İsveçriya frankası</displayName>
			</currency>
			<currency type="CHW">
				<displayName>WIR frankası</displayName>
				<displayName count="other">WIR frankası</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Çili pesosu</displayName>
				<displayName count="other">Çili pesosu</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Çin yuan renminbi</displayName>
				<displayName count="other">Çin yuanı</displayName>
				<symbol>CNY</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kolombiya pesosu</displayName>
				<displayName count="other">Kolombiya pesosu</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Kosta rika kolonu</displayName>
				<displayName count="other">Kosta Rika kolonu</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Qədimi Serb dinarı</displayName>
				<displayName count="other">Qədimi serb dinarı</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Çexoslavakiya korunası</displayName>
				<displayName count="other">Çexoslavakiya korunası</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kuba pesosu</displayName>
				<displayName count="other">Kuba pesosu</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Kape Verde eskudosu</displayName>
				<displayName count="other">Kape Verde eskudosu</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Kipr paundu</displayName>
				<displayName count="other">Kipr paundu</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Çex respublikası korunası</displayName>
				<displayName count="other">Cex respublika korunası</displayName>
			</currency>
			<currency type="DDM">
				<displayName>şərq almaniya ostmarkı</displayName>
				<displayName count="other">Şərq Almaniya ostmarkı</displayName>
			</currency>
			<currency type="DEM">
				<displayName>alman markası</displayName>
				<displayName count="other">Alman markası</displayName>
			</currency>
			<currency type="DJF">
				<displayName>jibouti frankası</displayName>
				<displayName count="other">Jibouti frankası</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Danemarka kronası</displayName>
				<displayName count="other">Danemarka kronası</displayName>
			</currency>
			<currency type="DOP">
				<displayName>dominika pesosu</displayName>
				<displayName count="other">Dominika pesosu</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Alcəzir dinarı</displayName>
				<displayName count="other">Alcəzir dinarı</displayName>
			</currency>
			<currency type="ECS">
				<displayName>ekvador sukresi</displayName>
				<displayName count="other">Ekvador sukresi</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estoniya krunu</displayName>
				<displayName count="other">Estoniya krunu</displayName>
			</currency>
			<currency type="EGP">
				<displayName>misir paundu</displayName>
				<displayName count="other">Misir paundu</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ekvele</displayName>
				<displayName count="other">Ekvele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eirtreya nakfası</displayName>
				<displayName count="other">Eritreya nakfası</displayName>
			</currency>
			<currency type="ESA">
				<displayName>İspan pesetası (A)</displayName>
				<displayName count="other">İspan pesetası (A account)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>İspan pesetası (dəyşirik)</displayName>
				<displayName count="other">İspan pesetası (dəyşirik)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>İspan pesetası</displayName>
				<displayName count="other">İspan pesetası</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Efiopiya birası</displayName>
				<displayName count="other">Efiopiya birası</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Yevro</displayName>
				<displayName count="other">yevro</displayName>
				<symbol>€</symbol>
			</currency>
			<currency type="FIM">
				<displayName>Fin markası</displayName>
				<displayName count="other">Fin markası</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fici dolları</displayName>
				<displayName count="other">Fici dolları</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Folkland Adası paundu</displayName>
				<displayName count="other">Folkland adası paundu</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Fransız markası</displayName>
				<displayName count="other">Fransız markası</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britaniya paund sterlingi</displayName>
				<displayName count="other">Britaniya paund sterlingi</displayName>
				<symbol>UK£</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Gürcüstan kupon lariti</displayName>
				<displayName count="other">Gürcüstan kupon lariti</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Gürcüstan larisi</displayName>
				<displayName count="other">Gürcüstan larisi</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Qana sedisi (1979-2007)</displayName>
				<displayName count="other">Qana sedisi (GHC)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Qana sedisi</displayName>
				<displayName count="other">Qana sedisi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltar paundu</displayName>
				<displayName count="other">Gibraltar paundu</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Qambiya dalasi</displayName>
				<displayName count="other">Qambiya dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Qvineya frankası</displayName>
				<displayName count="other">qvineya frankası</displayName>
			</currency>
			<currency type="GNS">
				<displayName>Qvineya sulisi</displayName>
				<displayName count="other">Gineya sulisi</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekvatoriya Gvineya ekvele quneanası</displayName>
				<displayName count="other">Ekvatoriya Gvineya ekvele quneanası</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Yunan draçması</displayName>
				<displayName count="other">Yunan draxması</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Qvatemala küetzalı</displayName>
				<displayName count="other">Qvatemala küetzalı</displayName>
			</currency>
			<currency type="GWE">
				<displayName>Portugal Qvineya eskudosu</displayName>
				<displayName count="other">Portugal Qvineya eskudosu</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Qvineya-Bisau pesosu</displayName>
				<displayName count="other">Qvineya-Bisau pesosu</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Quyana dolları</displayName>
				<displayName count="other">Quyana dolları</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Honk Konq dolları</displayName>
				<displayName count="other">Honk Konq dolları</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Honduras lempirası</displayName>
				<displayName count="other">Honduras lempirası</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Xorvatiya dinarı</displayName>
				<displayName count="other">Xorvatiya dinarı</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Xorvatiya kunu</displayName>
				<displayName count="other">Xorvatiya kunu</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haiti qourdu</displayName>
				<displayName count="other">Haiti qourdu</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Macarıstan forinti</displayName>
				<displayName count="other">Macarıstan forinti</displayName>
			</currency>
			<currency type="IDR">
				<displayName>İndoneziya rupisi</displayName>
				<displayName count="other">İndoneziya rupisi</displayName>
			</currency>
			<currency type="IEP">
				<displayName>İrlandiya paundu</displayName>
				<displayName count="other">İrlandiya paundu</displayName>
			</currency>
			<currency type="ILP">
				<displayName>İzrail paundu</displayName>
				<displayName count="other">İzrail paundu</displayName>
			</currency>
			<currency type="ILS">
				<displayName>İzrail yeni şekeli</displayName>
				<displayName count="other">İzrail ail yeni şekeli</displayName>
			</currency>
			<currency type="INR">
				<displayName>Hindistan rupisi</displayName>
				<displayName count="other">Hindistan rupisi</displayName>
				<symbol>0≤Rs.|1≤Re.|1&lt;Rs.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>İraq dinarı</displayName>
				<displayName count="other">İraq dinarı</displayName>
			</currency>
			<currency type="IRR">
				<displayName>İran rialı</displayName>
				<displayName count="other">İran rialı</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Aysland kronası</displayName>
				<displayName count="other">Aysland kronası</displayName>
			</currency>
			<currency type="ITL">
				<displayName>İtaliya lirası</displayName>
				<displayName count="other">İtaliya lirası</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Yamayka dolları</displayName>
				<displayName count="other">Yamayka dolları</displayName>
			</currency>
			<currency type="JOD">
				<displayName>İordaniya dinarı</displayName>
				<displayName count="other">İordaniya dinarı</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yapon yeni</displayName>
				<displayName count="other">Yapon yeni</displayName>
				<symbol>JP¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenya şillingi</displayName>
				<displayName count="other">Kenya şillingi</displayName>
			</currency>
			<currency type="KGS">
				<displayName>Kırğızstan somu</displayName>
				<displayName count="other">Kırğızstan somu</displayName>
			</currency>
			<currency type="KHR">
				<displayName>Kambodiya riyeli</displayName>
				<displayName count="other">Kambodiya riyeli</displayName>
			</currency>
			<currency type="KMF">
				<displayName>Komoro frankı</displayName>
				<displayName count="other">Komoro frankı</displayName>
			</currency>
			<currency type="KPW">
				<displayName>Şimal koreya vonu</displayName>
				<displayName count="other">Şimal Koreya vonu</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Cənub koreya vonu</displayName>
				<displayName count="other">Cənub Koreya vonu</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuveyt dinarı</displayName>
				<displayName count="other">Kuveyt dinarı</displayName>
			</currency>
			<currency type="KYD">
				<displayName>Keyman Adaları dolları</displayName>
				<displayName count="other">Keyman Adaları dolları</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazaxstan tenqesi</displayName>
				<displayName count="other">Kazaxstan tenqesi</displayName>
			</currency>
			<currency type="LAK">
				<displayName>Laotiya kipi</displayName>
				<displayName count="other">Laotiya kipi</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Lebanon paundu</displayName>
				<displayName count="other">Lebanon paundu</displayName>
			</currency>
			<currency type="LKR">
				<displayName>Şri Lanka rupisi</displayName>
				<displayName count="other">Şri Lanka rupisi</displayName>
			</currency>
			<currency type="LRD">
				<displayName>Liberiya dolları</displayName>
				<displayName count="other">Liberiya dolları</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesoto lotisi</displayName>
				<displayName count="other">Lesoto lotisi</displayName>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
				<displayName count="other">Maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litva litası</displayName>
				<displayName count="other">Litva litası</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litva talonası</displayName>
				<displayName count="other">Litva talonası</displayName>
			</currency>
			<currency type="LUC">
				<displayName>Luksemburq frankası (dəyişik)</displayName>
				<displayName count="other">Luksemburq dəyişik frankası</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luksemburq frankası</displayName>
				<displayName count="other">Luksemburq frankası</displayName>
			</currency>
			<currency type="LUL">
				<displayName>Luksemburq frankası (finans)</displayName>
				<displayName count="other">Luksemburq finans frankası</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latviya latsı</displayName>
				<displayName count="other">Latviya latsı</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Latviya rublu</displayName>
				<displayName count="other">Latviya rublu</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Liviya dinarı</displayName>
				<displayName count="other">Liviya dinarı</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Morokko dirhamı</displayName>
				<displayName count="other">Morokko dirhamı</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Morokko frankası</displayName>
				<displayName count="other">Morokko frankası</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldova leyusu</displayName>
				<displayName count="other">Moldova leyusu</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madaqaskar ariarisi</displayName>
				<displayName count="other">Madaqaskar ariarisi</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madaqaskar frankası</displayName>
				<displayName count="other">Madaqaskar frankası</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Masedoniya denarı</displayName>
				<displayName count="other">Masedoniya denarı</displayName>
			</currency>
			<currency type="MLF">
				<displayName>Mali frankı</displayName>
				<displayName count="other">Mali frankı</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmar kiyatı</displayName>
				<displayName count="other">Myanmar kiyatı</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Monqoliya tuqriki</displayName>
				<displayName count="other">Monqoliya tuqriki</displayName>
			</currency>
			<currency type="MOP">
				<displayName>Makao patakası</displayName>
				<displayName count="other">Makao patakası</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mavritaniya oyuquyası</displayName>
				<displayName count="other">Mavritaniya oyuquyası</displayName>
			</currency>
			<currency type="MTP">
				<displayName>Maltiz paundu</displayName>
				<displayName count="other">Maltiz paundu</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mavritis rupiyi</displayName>
				<displayName count="other">Mavritis rupiyi</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldiv Adaları rufiyi</displayName>
				<displayName count="other">Maldiv adaları rufiyi</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malavi kvaçası</displayName>
				<displayName count="other">Malavi kvaçası</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Meksika pesosu</displayName>
				<displayName count="other">Meksika pesosu</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Meksika gümüş pesosu</displayName>
				<displayName count="other">Meksika gümüş pesosu</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysiya rinqiti</displayName>
				<displayName count="other">Malaysiya rinqiti</displayName>
			</currency>
			<currency type="MZE">
				<displayName>Mozambik eskudosu</displayName>
				<displayName count="other">Mozambik eskudosu</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Qədim Mozambik metikalı</displayName>
				<displayName count="other">Qədim mozambik metikalı</displayName>
			</currency>
			<currency type="MZN">
				<displayName>Mozambik metikalı</displayName>
				<displayName count="other">Mozambik metikalı</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibiya dolları</displayName>
				<displayName count="other">Namibiya dolları</displayName>
			</currency>
			<currency type="NGN">
				<displayName>Nigeriya nairi</displayName>
				<displayName count="other">Nigeriya nairi</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nikaraqua kordobu</displayName>
				<displayName count="other">Nikaraqua kordobu</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Hollandiya gilderi</displayName>
				<displayName count="other">Hollandiya gilderi</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norveç kronu</displayName>
				<displayName count="other">Norveç kronu</displayName>
			</currency>
			<currency type="NPR">
				<displayName>Nepal rupiyi</displayName>
				<displayName count="other">Nepal rupiyi</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Yeni Zelandiya dolları</displayName>
				<displayName count="other">Yeni Zelandiya dolları</displayName>
			</currency>
			<currency type="OMR">
				<displayName>Mman rialı</displayName>
				<displayName count="other">Oman rialı</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Panamaniya balboa</displayName>
				<displayName count="other">Panamaniya balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peru inti</displayName>
				<displayName count="other">Peru inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peru sol nuyevosu</displayName>
				<displayName count="other">Peru sol nuyevosu</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peru solu</displayName>
				<displayName count="other">Peru solu</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Papua Yeni Qvineya kini</displayName>
				<displayName count="other">Papua Yeni Qvineya kini</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipin pesosu</displayName>
				<displayName count="other">Filipin pesosu</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistan rupiyi</displayName>
				<displayName count="other">Pakistan rupiyi</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Polsha zlotisi</displayName>
				<displayName count="other">Polsha zlotisi</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Polsha zlotisi (1950-1995)</displayName>
				<displayName count="other">Polsha zlotisi (PLZ)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portuqal eskudosu</displayName>
				<displayName count="other">Portuqal eskudosu</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraqvay quarani</displayName>
				<displayName count="other">Paraqvay quarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Qatar rialı</displayName>
				<displayName count="other">Qatar rialı</displayName>
			</currency>
			<currency type="RHD">
				<displayName>Rodezian dolları</displayName>
				<displayName count="other">Rodezian dolları</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Qədim Roman leyu</displayName>
				<displayName count="other">Roman qədimi leyu</displayName>
			</currency>
			<currency type="RON">
				<displayName>Roman leyu</displayName>
				<displayName count="other">Roman leyu</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbiya dinarı</displayName>
				<displayName count="other">Serbiya dinarı</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rusiya rublu</displayName>
				<displayName count="other">Rusiya rublu</displayName>
				<symbol>RUB</symbol>
			</currency>
			<currency type="RUR">
				<displayName>Rusiya rublu (1991-1998)</displayName>
				<displayName count="other">Rusiya rublu (RUR)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Rvanda frankı</displayName>
				<displayName count="other">Rvanda frankı</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi riyalı</displayName>
				<displayName count="other">Saudi riyalı</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Solomon Adaları dolları</displayName>
				<displayName count="other">Solomon Adaları dolları</displayName>
			</currency>
			<currency type="SCR">
				<displayName>Seyçel rupiyi</displayName>
				<displayName count="other">Seyçel rupiyi</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Sudan paundu</displayName>
				<displayName count="other">Sudan paundu</displayName>
			</currency>
			<currency type="SEK">
				<displayName>İsveç kronu</displayName>
				<displayName count="other">İsveç kronu</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Sinqapur dolları</displayName>
				<displayName count="other">Sinqapur dolları</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Sloveniya toları</displayName>
				<displayName count="other">Sloveniya toları</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovak korunası</displayName>
				<displayName count="other">Slovak korunası</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somaliya şillingi</displayName>
				<displayName count="other">Somaliya şillingi</displayName>
			</currency>
			<currency type="SRD">
				<displayName>Surinam dolları</displayName>
				<displayName count="other">Surinam dolları</displayName>
			</currency>
			<currency type="SUR">
				<displayName>Sovet rublu</displayName>
				<displayName count="other">Sovet rublu</displayName>
			</currency>
			<currency type="SVC">
				<displayName>el salvador kolonu</displayName>
				<displayName count="other">El Salvador kolonu</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Siriya paundu</displayName>
				<displayName count="other">Siriya paundu</displayName>
			</currency>
			<currency type="SZL">
				<displayName>Svazilənd lilangeni</displayName>
				<displayName count="other">Svazilənd lilangeni</displayName>
			</currency>
			<currency type="THB">
				<displayName>tay bahtı</displayName>
				<displayName count="other">Tay bahtı</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tacikistan rublu</displayName>
				<displayName count="other">Tacikistan rublu</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tacikistan somoni</displayName>
				<displayName count="other">Tacikistan somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Türkmənistan manatı</displayName>
				<displayName count="other">Türkmənistan manatı</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunis dinarı</displayName>
				<displayName count="other">Tunis dinarı</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tonqa panqası</displayName>
				<displayName count="other">Tonqa panqası</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Timor eskudu</displayName>
				<displayName count="other">Timor eskudu</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Türk köhnə lirası</displayName>
				<displayName count="other">Türk köhnə lirası</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Türk lirası</displayName>
				<displayName count="other">Türk lira</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Tayvan yeni dolları</displayName>
				<displayName count="other">Tayvan yeni dolları</displayName>
			</currency>
			<currency type="TZS">
				<displayName>Tanzaniya şilingi</displayName>
				<displayName count="other">Tanzaniya şilingi</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukraina hrivnyası</displayName>
				<displayName count="other">Ukraina hrivnyası</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukraina karbovenesası</displayName>
				<displayName count="other">Ukraina karbovenesası</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Uqanda şelingi (1966-1987)</displayName>
				<displayName count="other">Uqanda şelingi (UGS)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Uqanda şelingi</displayName>
				<displayName count="other">Uqanda şelingi</displayName>
			</currency>
			<currency type="USD">
				<displayName>ABŞ dolları</displayName>
				<displayName count="other">ABŞ dolları</displayName>
				<symbol>US$</symbol>
			</currency>
			<currency type="USN">
				<displayName>ABŞ dolları (yeni gün)</displayName>
				<displayName count="other">ABŞ dolları (yeni gün)</displayName>
			</currency>
			<currency type="USS">
				<displayName>ABŞ dolları (həmin gün)</displayName>
				<displayName count="other">ABŞ dolları (həmin gün)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruqvay pesosu Unidades Indexadas</displayName>
				<displayName count="other">Uruqvay pesosu unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruqvay pesosu (1975-1993)</displayName>
				<displayName count="other">Uruqvay pesosu (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruqvay pesosu (Uruguayo)</displayName>
				<displayName count="other">Uruqvay pesosu</displayName>
			</currency>
			<currency type="UZS">
				<displayName>özbəkistan sumu</displayName>
				<displayName count="other">Özbəkistan sumu</displayName>
			</currency>
			<currency type="VEB">
				<displayName>venesuela bolivarı</displayName>
				<displayName count="other">Venesuela bolivarı</displayName>
			</currency>
			<currency type="VEF">
				<displayName>venesuela bolivar fuerti</displayName>
				<displayName count="other">Venesuela Bolivar fuerti</displayName>
			</currency>
			<currency type="VND">
				<displayName>vyetnam donqu</displayName>
				<displayName count="other">Vyetnam donqu</displayName>
			</currency>
			<currency type="WST">
				<displayName>qərb samoa talası</displayName>
				<displayName count="other">Qərb Samoa talası</displayName>
			</currency>
			<currency type="XAG">
				<displayName>gümüş</displayName>
				<displayName count="other">gümüş</displayName>
			</currency>
			<currency type="XAU">
				<displayName>qızıl</displayName>
				<displayName count="other">qızıl</displayName>
			</currency>
			<currency type="XCD">
				<displayName>şərq karib dolları</displayName>
				<displayName count="other">Şərq karib dolları</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Fransız gızıl frankı</displayName>
				<displayName count="other">Fransız gızıl frankı</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Fransız UİC frankı</displayName>
				<displayName count="other">Fransız UİC frankı</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA franka BCEAO</displayName>
				<displayName count="other">CFA franka BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>Palladium</displayName>
				<displayName count="other">Palladium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP frankı</displayName>
				<displayName count="other">CFP frankı</displayName>
			</currency>
			<currency type="XPT">
				<displayName>platinum</displayName>
				<displayName count="other">platinum</displayName>
			</currency>
			<currency type="XXX">
				<displayName>bilinməyən vəya gəcərsiz</displayName>
				<displayName count="other">bilinməyən vəya gəcərsiz</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>yemen dinarı</displayName>
				<displayName count="other">Yemen dinarı</displayName>
			</currency>
			<currency type="YER">
				<displayName>yemen rialı</displayName>
				<displayName count="other">Yemen rialı</displayName>
			</currency>
			<currency type="YUD">
				<displayName>Yuqoslaviya dinarı (hard)</displayName>
				<displayName count="other">Yuqoslaviya dinarı (hard)</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Yuqoslaviya yeni dinarı (hard)</displayName>
				<displayName count="other">Yuqoslaviya yeni  dinarı (hard)</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Yuqoslaviya dinarı (dəyişik)</displayName>
				<displayName count="other">Yuqoslaviya dinarı (dəyişik)</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Cənub afrika randı (finans)</displayName>
				<displayName count="other">Cənub Afrika randı (finans)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Cənub afrika randı</displayName>
				<displayName count="other">Cənub Afrika randı</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Zambiya kvaçı</displayName>
				<displayName count="other">Zambiya kvaçı</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zair yeni zairi</displayName>
				<displayName count="other">Zair yeni zairi</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zair zairi</displayName>
				<displayName count="other">Zair zairi</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabve dolları</displayName>
				<displayName count="other">Zimbabve dolları</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} gün</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} saat</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} dəqiqə</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} ay</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} saniyə</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} həftə</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} il</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>hə:h</yesstr>
			<nostr>yox:y</nostr>
		</messages>
	</posix>
</ldml>
PKpG[wú�f�f�Locale/Data/hi.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.85 $"/>
		<generation date="$Date: 2008/06/20 22:46:58 $"/>
		<language type="hi"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">अफ़ार</language>
			<language type="ab">अब्खाज़ियन्</language>
			<language type="ach">अकोली</language>
			<language type="ae">अवेस्तन</language>
			<language type="af">अफ्रीकी</language>
			<language type="afa">अफ्रो-एशियाई भाषाएँ</language>
			<language type="afh">अफ्रीलीयाई</language>
			<language type="ain">ऐनू</language>
			<language type="ak">अकन</language>
			<language type="akk">अकाडिनी</language>
			<language type="am">अम्हारिक्</language>
			<language type="an">अर्गोनी</language>
			<language type="ang">पुरानी अंग्रेज़ी</language>
			<language type="anp">अंगीका</language>
			<language type="apa">अपाची भाषा</language>
			<language type="ar">अरबी</language>
			<language type="arc">अरामी</language>
			<language type="arp">अराफाओ</language>
			<language type="art">कृत्रिम भाषा</language>
			<language type="as">असामी</language>
			<language type="aus">आस्ट्रेलियाई भाषा</language>
			<language type="av">अवेरिक</language>
			<language type="awa">अवधी</language>
			<language type="ay">आयमारा</language>
			<language type="az">अज़रबैंजानी</language>
			<language type="ba">बशख़िर</language>
			<language type="bal">बलूची</language>
			<language type="bat">बल्कानी भाषा</language>
			<language type="be">बैलोरूशियन्</language>
			<language type="bg">बल्गेरियन्</language>
			<language type="bh">बिहारी</language>
			<language type="bho">भोजपुरी</language>
			<language type="bi">बिस्लामा</language>
			<language type="bn">बँगाली</language>
			<language type="bo">तिब्बती</language>
			<language type="br">ब्रेटन</language>
			<language type="bra">ब्रज</language>
			<language type="bs">बोस्नियाई</language>
			<language type="ca">कातालान</language>
			<language type="cai">मध्य अमेरिकी भारतीय भाषा</language>
			<language type="cau">काकेशी भाषा</language>
			<language type="ce">चेचन</language>
			<language type="cel">केल्ट भाषा</language>
			<language type="co">कोर्सीकन</language>
			<language type="cs">चेक</language>
			<language type="cy">वेल्श</language>
			<language type="da">डैनीश</language>
			<language type="de">ज़र्मन</language>
			<language type="de_AT">जर्मन (ऑस्ट्रिया)</language>
			<language type="dra">द्रविण भाषा</language>
			<language type="dum">मध्य पुर्तगाली</language>
			<language type="dz">भुटानी</language>
			<language type="egy">प्राचीन मिस्री</language>
			<language type="el">ग्रीक</language>
			<language type="en">अंग्रेजी</language>
			<language type="en_AU">अंग्रेज़ी (ऑस्ट्रेलिया)</language>
			<language type="en_CA">अंग्रेज़ी(कनाडाई)</language>
			<language type="en_GB">अंग्रेजी(ब्रिटिश)</language>
			<language type="en_US">अंग्रेज़ी अमेरीकी</language>
			<language type="eo">एस्पेरान्तो</language>
			<language type="es">स्पेनिश</language>
			<language type="es_419">लेटिन अमेरिकी स्पेनिश</language>
			<language type="es_ES">ईवेरियाई स्पेनिश</language>
			<language type="et">ऐस्तोनियन्</language>
			<language type="eu">बास्क्</language>
			<language type="fa">पर्शियन्</language>
			<language type="fi">फिनिश</language>
			<language type="fil">फिलिपिनो</language>
			<language type="fj">फ़ीजी</language>
			<language type="fo">फिरोज़ी</language>
			<language type="fr">फ्रेंच</language>
			<language type="fr_CA">फ़्रेंच(कनाडाई)</language>
			<language type="fro">पुरानी फ्रांसीसी</language>
			<language type="fy">पश्चिमी फ़्रिसियाई</language>
			<language type="ga">आयरिश</language>
			<language type="gay">गायो</language>
			<language type="gd">स्काट्स् गायेलिक्</language>
			<language type="gl">गैलिशियन्</language>
			<language type="gn">गुआरानी</language>
			<language type="gon">गाँडी</language>
			<language type="got">गॉथिक</language>
			<language type="grc">प्राचीन यूनानी</language>
			<language type="gu">गुज़राती</language>
			<language type="ha">होउसा</language>
			<language type="he">हीब्रू</language>
			<language type="hi">हिन्दी</language>
			<language type="him">हिमाचली</language>
			<language type="hr">क्रोएशन्</language>
			<language type="hu">हंगेरी</language>
			<language type="hup">हूपा</language>
			<language type="hy">अरमेनियन्</language>
			<language type="ia">ईन्टरलिंगुआ</language>
			<language type="id">इन्डोनेशियाई</language>
			<language type="ie">ईन्टरलिंगुइ</language>
			<language type="ik">इनुपियाक्</language>
			<language type="ira">ईरानी भाषा</language>
			<language type="is">आईस्लैंडिक्</language>
			<language type="it">इतालवी</language>
			<language type="iu">इनूकीटूत्</language>
			<language type="ja">जापानी</language>
			<language type="jv">जावानीस</language>
			<language type="ka">जॉर्जीयन्</language>
			<language type="kcg">kcg</language>
			<language type="kk">कज़ाख</language>
			<language type="kl">ग्रीनलैंडिक</language>
			<language type="km">कैम्बोडियन्</language>
			<language type="kn">कन्नड़</language>
			<language type="ko">कोरीयन्</language>
			<language type="kok">कोंकणी</language>
			<language type="ks">कश्मीरी</language>
			<language type="ku">कुरदीश</language>
			<language type="ky">किरघिज़</language>
			<language type="la">लैटीन</language>
			<language type="ln">लिंगाला</language>
			<language type="lo">लाओथीयन्</language>
			<language type="lol">मोंगो</language>
			<language type="lt">लिथुनियन्</language>
			<language type="lv">लाटवियन् (लेट्टीश)</language>
			<language type="mdr">मंधार</language>
			<language type="mg">मालागासी</language>
			<language type="mi">मेओरी</language>
			<language type="mis">विविध भाषा</language>
			<language type="mk">मैसेडोनियन्</language>
			<language type="ml">मलयालम</language>
			<language type="mn">मंगोलीयाई</language>
			<language type="mni">मणिपूरी</language>
			<language type="mo">मोलडावियन्</language>
			<language type="mr">मराठी</language>
			<language type="ms">मलय</language>
			<language type="mt">मालटिस्</language>
			<language type="mul">विविध भाषाएँ</language>
			<language type="mun">मुन्डा भाषा</language>
			<language type="mwl">मिरांडी</language>
			<language type="mwr">मारवाड़ी</language>
			<language type="my">बर्लिस</language>
			<language type="myn">माया भाषा</language>
			<language type="na">नायरू</language>
			<language type="ne">नेपाली</language>
			<language type="new">नेवाड़ी</language>
			<language type="nl">डच्</language>
			<language type="nn">नार्वेजियन</language>
			<language type="no">नार्वेजीयन्</language>
			<language type="nwc">पारम्परिक नेवारी</language>
			<language type="oc">ओसीटान</language>
			<language type="om">ओरोमो (अफ़ान)</language>
			<language type="or">उड़िया</language>
			<language type="pa">पंजाबी</language>
			<language type="peo">पुरानी फारसी</language>
			<language type="pi">पाली</language>
			<language type="pl">पॉलिश</language>
			<language type="pra">प्राकृत</language>
			<language type="ps">पॉशतो (पुशतो)</language>
			<language type="pt">पुर्तगाली</language>
			<language type="pt_BR">पुर्तगाली (ब्राज़ील)</language>
			<language type="pt_PT">ईवेरियाई पुर्तगाली</language>
			<language type="qu">क्वेशुआ</language>
			<language type="raj">राजस्थानी</language>
			<language type="rm">रहेय्टो-रोमान्स</language>
			<language type="rn">रुन्दी</language>
			<language type="ro">रोमानियाई</language>
			<language type="root">शिखर</language>
			<language type="ru">रूसी</language>
			<language type="rw">किन्यारवाण्डा</language>
			<language type="sa">संस्कृत</language>
			<language type="sat">संताली</language>
			<language type="sd">सिन्धी</language>
			<language type="sg">सांगो</language>
			<language type="sgn">सांकेतिक भाषा</language>
			<language type="sh">सेर्बो-क्रोएशन्</language>
			<language type="si">शिंघालीस्</language>
			<language type="sit">चीनी-तिब्ब्ती भाषा</language>
			<language type="sk">स्लोवाक्</language>
			<language type="sl">स्लोवेनियन्</language>
			<language type="sla">स्लोवियाई भाषा</language>
			<language type="sm">सामोन</language>
			<language type="smi">सामी भाषा</language>
			<language type="sn">सोणा</language>
			<language type="so">सोमाली</language>
			<language type="sq">अल्बेनियन्</language>
			<language type="sr">सर्बियन्</language>
			<language type="ss">स्वाती</language>
			<language type="ssa">नील सहारी भाषा</language>
			<language type="st">सेसोथो</language>
			<language type="su">सुंडानी</language>
			<language type="sus">सुसु</language>
			<language type="sv">स्विडिश</language>
			<language type="sw">स्वाहिली</language>
			<language type="ta">तमिल</language>
			<language type="te">तेलेगु</language>
			<language type="tg">ताजिक्</language>
			<language type="th">थाई</language>
			<language type="ti">तिग्रीन्या</language>
			<language type="tk">तुक्रमेन</language>
			<language type="tl">तागालोग</language>
			<language type="tlh">क्लिंगन</language>
			<language type="tn">सेत्स्वाना</language>
			<language type="to">टोंगा</language>
			<language type="tr">तुर्की</language>
			<language type="ts">सोंगा</language>
			<language type="tt">टाटर</language>
			<language type="tw">ट्वी</language>
			<language type="ug">उईघुर</language>
			<language type="uk">यूक्रेनी</language>
			<language type="und">अज्ञात या अवैध भाषा</language>
			<language type="ur">उर्दू</language>
			<language type="uz">उज़्बेक</language>
			<language type="vi">वियेतनामी</language>
			<language type="vo">वोलापुक</language>
			<language type="wo">वोलोफ</language>
			<language type="xh">षोसा</language>
			<language type="yi">येहुदी</language>
			<language type="yo">योरूबा</language>
			<language type="za">ज़ुआंग</language>
			<language type="zh">चीनी</language>
			<language type="zh_Hans">चीनी (सरलीकृत)</language>
			<language type="zh_Hant">चीनी (पारम्परिक)</language>
			<language type="zu">ज़ुलू</language>
		</languages>
		<scripts>
			<script type="Arab">अरबी</script>
			<script type="Armi">अर्मी</script>
			<script type="Armn">अर्मेनियाई</script>
			<script type="Avst">अवेस्तन</script>
			<script type="Bali">बाली</script>
			<script type="Batk">बटकी</script>
			<script type="Beng">बंगाली</script>
			<script type="Brah">ब्रह्ममी</script>
			<script type="Brai">ब्रेल</script>
			<script type="Cher">चिरूकी</script>
			<script type="Cirt">सिर्थ</script>
			<script type="Cyrl">सिरिलिक</script>
			<script type="Deva">देवनागरी</script>
			<script type="Ethi">ईथोपियाई</script>
			<script type="Grek">ग्रीक</script>
			<script type="Gujr">गुजराती</script>
			<script type="Guru">गुरमुखी</script>
			<script type="Hang">हंगुल</script>
			<script type="Hani">हन</script>
			<script type="Hans">सरलीकृत हन</script>
			<script type="Hant">पारम्परिक हन</script>
			<script type="Hebr">हिब्रू</script>
			<script type="Hira">हीरागाना</script>
			<script type="Inds">सिन्धु</script>
			<script type="Ital">पुरानी इटली</script>
			<script type="Java">जावानीस</script>
			<script type="Jpan">जापानी</script>
			<script type="Khmr">खमेर</script>
			<script type="Knda">कन्नड़</script>
			<script type="Kore">कोरियाई</script>
			<script type="Lana">लाना</script>
			<script type="Laoo">लाओ</script>
			<script type="Latf">फ्रैकतुर लैटिन</script>
			<script type="Latn">लाटिन</script>
			<script type="Lepc">लेपचा</script>
			<script type="Limb">लिम्बू</script>
			<script type="Mlym">मलयालम</script>
			<script type="Mong">मंगोलियाई</script>
			<script type="Moon">चाँद</script>
			<script type="Mymr">म्यांमार</script>
			<script type="Nkoo">एन् को</script>
			<script type="Ogam">ओगम</script>
			<script type="Orkh">ओरखोन</script>
			<script type="Orya">उडिया</script>
			<script type="Qaai">विरासत</script>
			<script type="Runr">रूनिक</script>
			<script type="Sara">सराती</script>
			<script type="Saur">सौराष्ट्र</script>
			<script type="Sgnw">सांकेतिक लेख</script>
			<script type="Sinh">सिहंली</script>
			<script type="Sund">सूडानी</script>
			<script type="Tale">ताई ली</script>
			<script type="Talu">नया ताई लुए</script>
			<script type="Taml">तमिल</script>
			<script type="Telu">तेलुगू</script>
			<script type="Tglg">टैगालोग</script>
			<script type="Thaa">थाना</script>
			<script type="Thai">थाई</script>
			<script type="Tibt">तिब्बती</script>
			<script type="Vaii">वाई</script>
			<script type="Xpeo">पुरानी फारसी</script>
			<script type="Yiii">यी</script>
			<script type="Zxxx">अलिखित</script>
			<script type="Zyyy">आम</script>
			<script type="Zzzz">अज्ञात या अवैध लिपि</script>
		</scripts>
		<territories>
			<territory type="001">दुनिया</territory>
			<territory type="002">अफ्रीका</territory>
			<territory type="003">उत्तर अमेरिका</territory>
			<territory type="005">दक्षिण अमेरिका</territory>
			<territory type="009">ओशिआनिया</territory>
			<territory type="011">पश्चिमी अफ्रीका</territory>
			<territory type="013">मध्य अमरीका</territory>
			<territory type="014">पूर्वी अफ्रीका</territory>
			<territory type="015">उत्तरी अफ्रीका</territory>
			<territory type="017">मध्य अफ्रीका</territory>
			<territory type="018">दक्षिणी अफ्रीका</territory>
			<territory type="019">अमेरीकास</territory>
			<territory type="021">उत्तरी अमेरिका</territory>
			<territory type="029">कैरिबियन</territory>
			<territory type="030">पूर्वी एशिया</territory>
			<territory type="034">दक्षिणी एशिया</territory>
			<territory type="035">दक्षिण-पूर्व एशिया</territory>
			<territory type="039">दक्षिणी यूरोप</territory>
			<territory type="053">ऑस्ट्रेलिया एवं न्यूजीलैंड</territory>
			<territory type="061">पोलीनेशिया</territory>
			<territory type="062">दक्षिण-मध्य एशिया</territory>
			<territory type="142">एशिया</territory>
			<territory type="143">मध्य एशिया</territory>
			<territory type="145">पश्चिमी ऐशिया</territory>
			<territory type="150">यूरोप</territory>
			<territory type="151">पूर्वी यूरोप</territory>
			<territory type="154">उत्तरी यूरोप</territory>
			<territory type="155">पश्चिमी यूरोप्</territory>
			<territory type="AD">अन्डोरा</territory>
			<territory type="AE">संयुक्त अरब अमीरात</territory>
			<territory type="AF">अफगानिस्तान</territory>
			<territory type="AG">एंटिगुआ और बरबुडा</territory>
			<territory type="AI">एंगुइला</territory>
			<territory type="AL">अल्बानिया</territory>
			<territory type="AM">आर्मेनिया</territory>
			<territory type="AN">नीदरलैंड्स एंटिलीज़</territory>
			<territory type="AO">अंगोला</territory>
			<territory type="AQ">अंटार्कटिका</territory>
			<territory type="AR">अर्जेन्टीना</territory>
			<territory type="AS">अमेरिकी समोआ</territory>
			<territory type="AT">ऑस्ट्रिया</territory>
			<territory type="AU">ऑस्ट्रेलिया</territory>
			<territory type="AW">अरूबा</territory>
			<territory type="AX">आलैंड द्वीप</territory>
			<territory type="AZ">अजरबैजान</territory>
			<territory type="BA">बोस्निया और हर्ज़िगोविना</territory>
			<territory type="BB">बारबाडोस</territory>
			<territory type="BD">बाँग्लादेश</territory>
			<territory type="BE">बेल्जियम</territory>
			<territory type="BF">बुर्किना फ़ासो</territory>
			<territory type="BG">बुल्गारिया</territory>
			<territory type="BH">बहरीन</territory>
			<territory type="BI">बुरुंडी</territory>
			<territory type="BJ">बेनिन</territory>
			<territory type="BM">बरमूडा</territory>
			<territory type="BN">ब्रुनेई</territory>
			<territory type="BO">बोलीविया</territory>
			<territory type="BR">ब्राजील</territory>
			<territory type="BS">बहामा</territory>
			<territory type="BT">भूटान</territory>
			<territory type="BV">बौवेत द्वीप</territory>
			<territory type="BW">बोत्स्वाना</territory>
			<territory type="BY">बेलारूस</territory>
			<territory type="BZ">बेलिज</territory>
			<territory type="CA">कनाडा</territory>
			<territory type="CC">कोकोस द्वीप</territory>
			<territory type="CD">कोंगो जनतांत्रिक गणतंत्र</territory>
			<territory type="CF">सेंट्रल अफ्रीकन रिपब्लिक</territory>
			<territory type="CG">कांगो</territory>
			<territory type="CH">स्विस</territory>
			<territory type="CI">आईवरी कोस्ट</territory>
			<territory type="CK">कुक द्वीप</territory>
			<territory type="CL">चिली</territory>
			<territory type="CM">कैमरून</territory>
			<territory type="CN">चीन</territory>
			<territory type="CO">कोलम्बिया</territory>
			<territory type="CR">कोस्टारीका</territory>
			<territory type="CS">सर्बिया व मॉण्टेनेग्रो</territory>
			<territory type="CU">क्यूबा</territory>
			<territory type="CV">कैप वर्डे</territory>
			<territory type="CX">क्रिसमस द्वीप</territory>
			<territory type="CY">साइप्रस</territory>
			<territory type="CZ">चेक गणराज्य</territory>
			<territory type="DE">जर्मनी</territory>
			<territory type="DJ">जिबूती</territory>
			<territory type="DK">डेनमार्क</territory>
			<territory type="DM">डोमिनिक</territory>
			<territory type="DO">डोमिनिकन गणराज्य</territory>
			<territory type="DZ">अल्जीरिया</territory>
			<territory type="EC">इक्वाडोर</territory>
			<territory type="EE">एस्टोनिया</territory>
			<territory type="EG">मिस्र</territory>
			<territory type="EH">पश्चिमी सहारा</territory>
			<territory type="ER">इरिट्रिया</territory>
			<territory type="ES">स्पेन</territory>
			<territory type="ET">इथियोपिया</territory>
			<territory type="FI">फिनलैंड</territory>
			<territory type="FJ">फिजी</territory>
			<territory type="FK">फ़ॉकलैंड द्वीप</territory>
			<territory type="FM">माइक्रोनेशिया</territory>
			<territory type="FO">फरोए द्वीप</territory>
			<territory type="FR">फ्रांस</territory>
			<territory type="GA">गैबॉन</territory>
			<territory type="GB">ब्रितन</territory>
			<territory type="GD">ग्रेनेडा</territory>
			<territory type="GE">जॉर्जिया</territory>
			<territory type="GF">फ़्रांसीसी गिआना</territory>
			<territory type="GG">ग्वेर्नसे</territory>
			<territory type="GH">घाना</territory>
			<territory type="GI">जिब्राल्टर</territory>
			<territory type="GL">ग्रीनलैण्ड</territory>
			<territory type="GM">गाम्बिया</territory>
			<territory type="GN">गिनी</territory>
			<territory type="GP">ग्वाडेलोप</territory>
			<territory type="GQ">इक्वेटोरियल गिनी</territory>
			<territory type="GR">ग्रीस</territory>
			<territory type="GS">दक्षिण जोर्जिया और दक्षिण सैंडवीच द्वीप</territory>
			<territory type="GT">गोतेदाला</territory>
			<territory type="GU">गुआम</territory>
			<territory type="GW">गीनी-बिसाउ</territory>
			<territory type="GY">गुयाना</territory>
			<territory type="HK">हाँग काँग</territory>
			<territory type="HM">हर्ड द्वीप और मैकडोनॉल्ड द्वीप</territory>
			<territory type="HN">हाण्डूरस</territory>
			<territory type="HR">क्रोशिया</territory>
			<territory type="HT">हाइती</territory>
			<territory type="HU">हंगरी</territory>
			<territory type="ID">इंडोनेशिया</territory>
			<territory type="IE">आयरलैंड</territory>
			<territory type="IL">इसराइल</territory>
			<territory type="IN">भारत</territory>
			<territory type="IO">ब्रिटिश हिंद महासागरीय क्षेत्र</territory>
			<territory type="IQ">इराक</territory>
			<territory type="IR">ईरान</territory>
			<territory type="IS">आइसलैंड</territory>
			<territory type="IT">इटली</territory>
			<territory type="JE">जर्सी</territory>
			<territory type="JM">जमाइका</territory>
			<territory type="JO">जोर्डन</territory>
			<territory type="JP">जापान</territory>
			<territory type="KE">केन्या</territory>
			<territory type="KG">किर्गिज</territory>
			<territory type="KH">कम्बोडिया</territory>
			<territory type="KI">किरिबाती</territory>
			<territory type="KM">कोमोरोस</territory>
			<territory type="KN">सेंट किट्स और नेविस</territory>
			<territory type="KP">उत्तर कोरिया</territory>
			<territory type="KR">दक्षिण कोरिया</territory>
			<territory type="KW">कुवैत</territory>
			<territory type="KY">केमैन द्वीप</territory>
			<territory type="KZ">कजाखस्तान</territory>
			<territory type="LA">लाओस</territory>
			<territory type="LB">लेबनान</territory>
			<territory type="LC">सेंट लूसिया</territory>
			<territory type="LI">लिकटेंस्टीन</territory>
			<territory type="LK">श्रीलंका</territory>
			<territory type="LR">लाइबेरिया</territory>
			<territory type="LS">लेसोथो</territory>
			<territory type="LT">लिथुआनिया</territory>
			<territory type="LU">लक्समबर्ग</territory>
			<territory type="LV">लात्विया</territory>
			<territory type="LY">लीबिया</territory>
			<territory type="MA">मोरक्को</territory>
			<territory type="MC">मोनाको</territory>
			<territory type="MD">मोल्डाविया</territory>
			<territory type="ME">मोंटेनेग्रो</territory>
			<territory type="MF">संत मार्टीन</territory>
			<territory type="MG">मदागास्कर</territory>
			<territory type="MH">मार्शल द्वीप</territory>
			<territory type="MK">मैसेडोनिया</territory>
			<territory type="ML">माली</territory>
			<territory type="MM">म्यानमार</territory>
			<territory type="MN">मंगोलिया</territory>
			<territory type="MO">मकाओ</territory>
			<territory type="MP">उत्तरी मारियाना द्वीप</territory>
			<territory type="MQ">मार्टीनिक</territory>
			<territory type="MR">मॉरिटानिया</territory>
			<territory type="MS">मॉन्ट्सेराट</territory>
			<territory type="MT">माल्टा</territory>
			<territory type="MU">मौरिस</territory>
			<territory type="MV">मालदीव</territory>
			<territory type="MW">मलावी</territory>
			<territory type="MX">मेक्सिको</territory>
			<territory type="MY">मलेशिया</territory>
			<territory type="MZ">मोजाम्बिक</territory>
			<territory type="NA">नामीबिया</territory>
			<territory type="NC">न्यू कैलेडोनिया</territory>
			<territory type="NE">नाइजर</territory>
			<territory type="NF">नॉरफ़ॉक आइलैंड</territory>
			<territory type="NG">नाइजीरिया</territory>
			<territory type="NI">निकारागुआ</territory>
			<territory type="NL">नीदरलैण्ड</territory>
			<territory type="NO">नॉर्वे</territory>
			<territory type="NP">नेपाल</territory>
			<territory type="NR">नॉरू</territory>
			<territory type="NU">नीयू</territory>
			<territory type="NZ">न्यूज़ीलैंड</territory>
			<territory type="OM">ओमान</territory>
			<territory type="PA">पनामा</territory>
			<territory type="PE">पेरू</territory>
			<territory type="PF">फ़्रांसीसी पॉलिनेशिया</territory>
			<territory type="PG">पापुआ न्यू गिनी</territory>
			<territory type="PH">फिलीपिंस</territory>
			<territory type="PK">पाकिस्तान</territory>
			<territory type="PL">पोलैंड</territory>
			<territory type="PM">सेण्‍ट पीयर और मि‍क्‍वेलोन</territory>
			<territory type="PN">पिटकेर्न</territory>
			<territory type="PR">पर्टो रीको</territory>
			<territory type="PS">फ़िलिस्तीन</territory>
			<territory type="PT">पुर्तगाल</territory>
			<territory type="PW">पलाऊ</territory>
			<territory type="PY">पारागुए</territory>
			<territory type="QA">कतर</territory>
			<territory type="QU">यूरोपीय संघ</territory>
			<territory type="RE">रियूनियन</territory>
			<territory type="RO">रोमानिया</territory>
			<territory type="RS">सर्बिया</territory>
			<territory type="RU">रूस</territory>
			<territory type="RW">रूआण्डा</territory>
			<territory type="SA">सऊदी अरब</territory>
			<territory type="SB">सोलोमन द्वीप</territory>
			<territory type="SC">सेशेल्स</territory>
			<territory type="SD">सूडान</territory>
			<territory type="SE">स्वीडन</territory>
			<territory type="SG">सिंगापुर</territory>
			<territory type="SH">सेण्‍ट हेलेना</territory>
			<territory type="SI">स्लोवेनिया</territory>
			<territory type="SJ">स्वाल्बार्ड और जॅन मेयन</territory>
			<territory type="SK">स्लोवाकिया</territory>
			<territory type="SL">सियरालेओन</territory>
			<territory type="SM">सैन मेरीनो</territory>
			<territory type="SN">सेनेगल</territory>
			<territory type="SO">सोमालिया</territory>
			<territory type="SR">सुरिनाम</territory>
			<territory type="ST">साउ-तोम-प्रिंसिप</territory>
			<territory type="SV">अल साल्वाडोर</territory>
			<territory type="SY">सीरिया</territory>
			<territory type="SZ">सुआजीलैंड</territory>
			<territory type="TC">तुर्क् और् कैकोज़ द्वीप</territory>
			<territory type="TD">चाड</territory>
			<territory type="TF">फ़्रांसीसी दक्षिणी क्षेत्र</territory>
			<territory type="TG">टोगो</territory>
			<territory type="TH">थाइलैंड</territory>
			<territory type="TJ">ताजिकिस्तान</territory>
			<territory type="TK">टोकेलौ</territory>
			<territory type="TL">पूर्वी तिमोर</territory>
			<territory type="TM">तुर्कमेनिस्तान</territory>
			<territory type="TN">तुनिशिया</territory>
			<territory type="TO">टोंगा</territory>
			<territory type="TR">तुर्की</territory>
			<territory type="TT">ट्रिनिडाड और टोबैगो</territory>
			<territory type="TV">तुवालु</territory>
			<territory type="TW">ताइवान</territory>
			<territory type="TZ">तंजानिया</territory>
			<territory type="UA">यूक्रेन</territory>
			<territory type="UG">युगांडा</territory>
			<territory type="UM">युनाइटेड स्टेट्स छोटे आउटलाइंग द्वीप</territory>
			<territory type="US">संयुक्त राज्य अमरिका</territory>
			<territory type="UY">युरूगुए</territory>
			<territory type="UZ">उजबेकिस्तान</territory>
			<territory type="VA">वैटिकन</territory>
			<territory type="VC">सेंट विंसेंट और द ग्रेनाडाइन्स</territory>
			<territory type="VE">वेनेजुएला</territory>
			<territory type="VG">ब्रिटिश वर्जीन ऌईलैंडस्</territory>
			<territory type="VI">ईउ, एस वर्जीन आईलैंडस्</territory>
			<territory type="VN">वियतनाम</territory>
			<territory type="VU">वानुअतु</territory>
			<territory type="WF">वालिस और फ़्यूचूना</territory>
			<territory type="WS">समोआ</territory>
			<territory type="YE">यमन</territory>
			<territory type="YT">मैयट</territory>
			<territory type="ZA">दक्षिण अफ्रीका</territory>
			<territory type="ZM">जाम्बिया</territory>
			<territory type="ZW">जिम्बाब्वे</territory>
			<territory type="ZZ">अज्ञात या अवैध प्रदेश</territory>
		</territories>
		<variants>
			<variant type="1901">पारम्पारिक जर्मन वर्तनी</variant>
			<variant type="1996">जर्मेनी की 1996 वर्तनी</variant>
			<variant type="AREVELA">पूर्वी अर्मेनियाई</variant>
			<variant type="MONOTON">एकस्वरीय</variant>
			<variant type="NJIVA">जीवा बोली</variant>
			<variant type="POLYTON">बहुस्वरीय</variant>
			<variant type="POSIX">कम्प्यूटर</variant>
			<variant type="REVISED">संशोधित वर्तनी</variant>
		</variants>
		<keys>
			<key type="calendar">पंचाग</key>
			<key type="collation">मिलान</key>
			<key type="currency">मुद्रा</key>
		</keys>
		<types>
			<type type="big5han" key="collation">पारम्पारिक चीनी वर्गीकरण</type>
			<type type="buddhist" key="calendar">बौद्ध पंचांग</type>
			<type type="chinese" key="calendar">चीनी पंचांग</type>
			<type type="direct" key="collation">प्रत्यक्ष वर्गीकरण</type>
			<type type="gb2312han" key="collation">सरलीकृत चीनी वर्गीकरण</type>
			<type type="gregorian" key="calendar">ग्रेगरी पंचांग</type>
			<type type="hebrew" key="calendar">हिब्रू पंचांग</type>
			<type type="indian" key="calendar">भारतीय पंचांग</type>
			<type type="islamic" key="calendar">इस्लामी पंचांग</type>
			<type type="islamic-civil" key="calendar">इस्लामी नागरिक पंचांग</type>
			<type type="japanese" key="calendar">जापानी पंचांग</type>
			<type type="phonebook" key="collation">दूरभाष निर्देशिका वर्गीकरण</type>
			<type type="pinyin" key="collation">पिनयीन वर्गीकरण</type>
			<type type="roc" key="calendar">चीनी गणतंत्र पंचांग</type>
			<type type="stroke" key="collation">स्ट्रोक वर्गीकरण</type>
			<type type="traditional" key="collation">पारम्पारिक वर्गीकरण</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">यूएस</measurementSystemName>
			<measurementSystemName type="metric">मेट्रिक</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[ॐ ०-९ अ-ऍ ए-ऑ ओ-न प-र ल ळ व-ह ़ ँ-ः ऽ ् ा-ॅ े-ॉ ो ौ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[\u200C \u200D]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>'</quotationStart>
		<quotationEnd>'</quotationEnd>
		<alternateQuotationStart>&quot;</alternateQuotationStart>
		<alternateQuotationEnd>&quot;</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="ethiopic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">मस्केरेम</month>
							<month type="2">टेकेम्ट</month>
							<month type="3">हेदर</month>
							<month type="4">तहसास</month>
							<month type="5">टर</month>
							<month type="6">येकाटिट</month>
							<month type="7">मेगाबिट</month>
							<month type="8">मियाज़िया</month>
							<month type="9">गनबोट</month>
							<month type="10">सेन</month>
							<month type="11">हम्ले</month>
							<month type="12">नेहासे</month>
							<month type="13">पागूमन</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">जनवरी</month>
							<month type="2">फरवरी</month>
							<month type="3">मार्च</month>
							<month type="4">अप्रैल</month>
							<month type="5">मई</month>
							<month type="6">जून</month>
							<month type="7">जुलाई</month>
							<month type="8">अगस्त</month>
							<month type="9">सितम्बर</month>
							<month type="10">अक्तूबर</month>
							<month type="11">नवम्बर</month>
							<month type="12">दिसम्बर</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">जनवरी</month>
							<month type="2">फरवरी</month>
							<month type="3">मार्च</month>
							<month type="4">अप्रैल</month>
							<month type="5">मई</month>
							<month type="6">जून</month>
							<month type="7">जुलाई</month>
							<month type="8">अगस्त</month>
							<month type="9">सितम्बर</month>
							<month type="10">अक्तूबर</month>
							<month type="11">नवम्बर</month>
							<month type="12">दिसम्बर</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">रवि</day>
							<day type="mon">सोम</day>
							<day type="tue">मंगल</day>
							<day type="wed">बुध</day>
							<day type="thu">गुरु</day>
							<day type="fri">शुक्र</day>
							<day type="sat">शनि</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">रविवार</day>
							<day type="mon">सोमवार</day>
							<day type="tue">मंगलवार</day>
							<day type="wed">बुधवार</day>
							<day type="thu">गुरुवार</day>
							<day type="fri">शुक्रवार</day>
							<day type="sat">शनिवार</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">र</day>
							<day type="mon">2</day>
							<day type="tue">मं</day>
							<day type="wed">4</day>
							<day type="thu">गु</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="2">Q2</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">प्रथम चौथाई</quarter>
							<quarter type="2">द्वितीय चौथाई</quarter>
							<quarter type="3">तृतीय चौथाई</quarter>
							<quarter type="4">चतुर्थ चौथाई</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">प्रथम चौथाई</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>पूर्वाह्न</am>
				<pm>अपराह्न</pm>
				<eras>
					<eraAbbr>
						<era type="0">ईसापूर्व</era>
						<era type="1">सन</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d-M-yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="GGGGyMMMMEEEEdd">EEEE,dd MMMM GGGGy</dateFormatItem>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="MMMdd">MMM dd</dateFormatItem>
						<dateFormatItem id="MMdd">dd-MM</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yQ">yyyy Q</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE, MMM d, yy</dateFormatItem>
						<dateFormatItem id="yyMMMd">MMM d, yy</dateFormatItem>
						<dateFormatItem id="yyMMdd">dd-MM-yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM-yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>काल</displayName>
					</field>
					<field type="year">
						<displayName>साल</displayName>
					</field>
					<field type="month">
						<displayName>महीना</displayName>
					</field>
					<field type="week">
						<displayName>सप्ताह</displayName>
					</field>
					<field type="day">
						<displayName>दिन</displayName>
						<relative type="0">Today</relative>
						<relative type="1">Tomorrow</relative>
						<relative type="-1">Yesterday</relative>
					</field>
					<field type="weekday">
						<displayName>दिन सप्ताह का</displayName>
					</field>
					<field type="hour">
						<displayName>घंटा</displayName>
					</field>
					<field type="minute">
						<displayName>मिनट</displayName>
					</field>
					<field type="second">
						<displayName>सेकेंड</displayName>
					</field>
					<field type="zone">
						<displayName>क्षेत्र</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="indian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">चैत्र</month>
							<month type="2">वैशाख</month>
							<month type="3">ज्येष्ठ</month>
							<month type="4">असध</month>
							<month type="8">कार्तिक</month>
							<month type="10">पौष</month>
							<month type="11">माघ</month>
							<month type="12">फाल्गुन</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">चैत्र</month>
							<month type="2">वैशाख</month>
							<month type="3">ज्येष्ठ</month>
							<month type="4">असध</month>
							<month type="5">श्रवण</month>
							<month type="6">भद्र</month>
							<month type="7">अश्विन</month>
							<month type="8">कार्तिक</month>
							<month type="9">अग्रायण</month>
							<month type="10">पौष</month>
							<month type="11">माघ</month>
							<month type="12">फाल्गुन</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="4">असाढ़</month>
							<month type="5">श्रावण</month>
							<month type="6">भाद्र</month>
							<month type="7">आश्विन</month>
							<month type="9">अग्रहण</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">चैत्र</month>
							<month type="2">वैशाख</month>
							<month type="3">ज्येष्ठ</month>
							<month type="8">कार्तिक</month>
							<month type="10">पौष</month>
							<month type="11">माघ</month>
							<month type="12">फाल्गुन</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">मुहर्रम</month>
							<month type="2">सफर</month>
							<month type="3">राबी प्रथम</month>
							<month type="4">राबी द्वितीय</month>
							<month type="5">जुम्डा प्रथम</month>
							<month type="6">जुम्डा द्वितीय</month>
							<month type="7">रजब</month>
							<month type="8">शावन</month>
							<month type="9">रमजान</month>
							<month type="10">शव्व्ल</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">मुहर्रम</month>
							<month type="2">सफर</month>
							<month type="3">राबी प्रथम</month>
							<month type="4">राबी द्वितीय</month>
							<month type="5">जुम्डा प्रथम</month>
							<month type="6">जुम्डा द्वितीय</month>
							<month type="7">रजब</month>
							<month type="8">शावन</month>
							<month type="9">रमजान</month>
							<month type="10">शव्व्ल</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="wide">
							<month type="1">मुहर्रम</month>
							<month type="2">सफर</month>
							<month type="3">राबी प्रथम</month>
							<month type="4">राबी द्वितीय</month>
							<month type="5">जुम्डा प्रथम</month>
							<month type="6">जुम्डा द्वितीय</month>
							<month type="7">रजब</month>
							<month type="8">शावन</month>
							<month type="9">रमजान</month>
							<month type="10">शव्व्ल</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
			<calendar type="japanese">
				<eras>
					<eraNames>
						<era type="0">ताएका</era>
						<era type="1">हाकूची</era>
						<era type="2">हाकूहो</era>
						<era type="3">शूचो</era>
						<era type="4">ताहिओ</era>
						<era type="5">केउन</era>
						<era type="6">वाडू</era>
						<era type="7">रैकी</era>
						<era type="8">योरो</era>
						<era type="10">टेम्प्यो</era>
						<era type="11">टेम्प्यो-काम्पो</era>
						<era type="12">टेम्प्यो-शोहो</era>
						<era type="13">टेम्प्यो-होजी</era>
						<era type="14">टेम्प्यो-जिंगो</era>
						<era type="15">टेम्प्यो-किउन</era>
						<era type="16">होकी</era>
						<era type="17">टेनो</era>
						<era type="18">इंर्याकू</era>
						<era type="19">डाईडू</era>
						<era type="20">क़ोनिन</era>
						<era type="21">टेंचो</era>
						<era type="22">शोवा</era>
						<era type="23">काज्यो</era>
						<era type="24">निंजू</era>
						<era type="25">शाईकू</era>
						<era type="26">टेनन</era>
						<era type="27">जोगन्</era>
						<era type="28">गेंकेई</era>
						<era type="29">निन्ना</era>
						<era type="30">केम्प्यो</era>
						<era type="31">शूताई</era>
						<era type="32">ईंगी</era>
						<era type="33">ईंचो</era>
						<era type="34">शोहेई</era>
						<era type="35">टेंग्यो</era>
						<era type="36">टेंर्याकू</era>
						<era type="37">टेंटूकू</era>
						<era type="38">ओवा</era>
						<era type="39">कोहो</era>
						<era type="40">अन्ना</era>
						<era type="41">टेंरोकू</era>
						<era type="42">टेन-एन</era>
						<era type="43">जोगन्</era>
						<era type="44">टेंगेन</era>
						<era type="45">ईकान</era>
						<era type="46">कन्ना</era>
						<era type="47">ई-एन</era>
						<era type="48">एइसो</era>
						<era type="50">चोटूकु</era>
						<era type="51">चोहो</era>
						<era type="52">कंको</era>
						<era type="53">च्योवा</era>
						<era type="54">कन्निन</era>
						<era type="55">ज़ियान</era>
						<era type="56">मंजू</era>
						<era type="57">चोगन</era>
						<era type="58">चोर्याकू</era>
						<era type="59">चोक्यु</era>
						<era type="60">कांटूको</era>
						<era type="61">ईशो</era>
						<era type="62">टेंगी</era>
						<era type="63">कोहैइ</era>
						<era type="64">जिर्याकू</era>
						<era type="65">ईंक्यू</era>
						<era type="66">सोहो</era>
						<era type="67">शोर्याकू</era>
						<era type="68">ईहो</era>
						<era type="69">ओटूको</era>
						<era type="70">कांजि</era>
						<era type="71">कोहो</era>
						<era type="72">ईचो</era>
						<era type="73">शोटूको</era>
						<era type="74">कोवा</era>
						<era type="75">चोजी</era>
						<era type="76">काशो</era>
						<era type="77">टेन्निन</era>
						<era type="78">टेन-ई</era>
						<era type="79">ईक्यू</era>
						<era type="80">जेन-ई</era>
						<era type="81">होआन</era>
						<era type="82">तेंजी</era>
						<era type="83">दाईजी</era>
						<era type="84">टे‡ंशो</era>
						<era type="85">चोशो</era>
						<era type="86">होएन</era>
						<era type="87">ईजी</era>
						<era type="89">टेन्यो</era>
						<era type="90">क्यूआन</era>
						<era type="91">निंपैई</era>
						<era type="92">क्योजो</era>
						<era type="93">होगेन</era>
						<era type="94">हैजी</era>
						<era type="95">ईर्याकू</era>
						<era type="96">ओहो</era>
						<era type="97">चोकान</era>
						<era type="98">ईमान</era>
						<era type="99">निन-आन</era>
						<era type="100">काओ</era>
						<era type="101">शोअन</era>
						<era type="102">अंजन</era>
						<era type="103">जिशो</era>
						<era type="104">योवा</era>
						<era type="105">जूऐई</era>
						<era type="106">जेंर्याकू</era>
						<era type="107">बूंजी</era>
						<era type="108">केंक्यू</era>
						<era type="109">शोजी</era>
						<era type="110">केन्निन</era>
						<era type="111">जेंक्यू</era>
						<era type="112">केन-ई</era>
						<era type="113">शोगेन</era>
						<era type="114">केंर्याकू</era>
						<era type="115">केंपो</era>
						<era type="116">शोक्य¯ू</era>
						<era type="117">जू</era>
						<era type="118">जेन्निन</era>
						<era type="119">कोरोकू</era>
						<era type="120">अंटैइ</era>
						<era type="121">कांकी</era>
						<era type="122">जोएई</era>
						<era type="123">टेम्पूकू</era>
						<era type="124">बुंर्याकू</era>
						<era type="125">काटेई</era>
						<era type="126">र्याकूनिन</era>
						<era type="127">ईन-ओ</era>
						<era type="128">निंजी</era>
						<era type="130">होजी</era>
						<era type="131">केंचो</era>
						<era type="132">कोगेन</era>
						<era type="133">शोका</era>
						<era type="134">शोगेन</era>
						<era type="135">बुन-ओ</era>
						<era type="136">कोचो</era>
						<era type="137">बुन-ई</era>
						<era type="138">केंजी</era>
						<era type="139">कोअन</era>
						<era type="140">शो</era>
						<era type="141">ईनिन</era>
						<era type="142">शोअन</era>
						<era type="143">केंजेन</era>
						<era type="144">काजेन</era>
						<era type="145">टोकूजी</era>
						<era type="146">ईंकेई</era>
						<era type="147">ओचो</era>
						<era type="148">शोवा</era>
						<era type="149">बुंपो</era>
						<era type="150">जेनो</era>
						<era type="151">जेंक्यो</era>
						<era type="152">शोचू</era>
						<era type="153">कारेकी</era>
						<era type="154">जेंटोकू</era>
						<era type="155">गेंको</era>
						<era type="156">केम्मू</era>
						<era type="157">ईंजेन</era>
						<era type="158">कोकोकू</era>
						<era type="159">शोहेई</era>
						<era type="160">केंटोकू</era>
						<era type="161">बूंचो</era>
						<era type="162">टेंजो</era>
						<era type="163">कोर्याकू</era>
						<era type="164">कोवा</era>
						<era type="165">जेंचू</era>
						<era type="166">मेटोकू</era>
						<era type="167">काकेई</era>
						<era type="168">कू</era>
						<era type="170">ओई</era>
						<era type="171">शोचो</era>
						<era type="172">ईक्यो</era>
						<era type="173">काकीत्सू</era>
						<era type="174">बुन-अन</era>
						<era type="175">होटोकू</era>
						<era type="176">क्योटोकू</era>
						<era type="177">कोशो</era>
						<era type="178">चोरोकू</era>
						<era type="179">कांशो</era>
						<era type="180">बुंशो</era>
						<era type="181">ओनिन</era>
						<era type="182">बुन्मेई</era>
						<era type="183">चोक्यो</era>
						<era type="184">ईंटोकू</era>
						<era type="185">मेईओ</era>
						<era type="186">बुंकी</era>
						<era type="187">ईशो</era>
						<era type="188">ताईएई</era>
						<era type="189">क्योरोकू</era>
						<era type="190">टेन्मन</era>
						<era type="191">कोजी</era>
						<era type="192">ईरोकू</era>
						<era type="193">जेंकी</era>
						<era type="194">टेंशो</era>
						<era type="195">बुंरोकू</era>
						<era type="196">केईचो</era>
						<era type="197">जेनवा</era>
						<era type="198">कान-एई</era>
						<era type="199">शोहो</era>
						<era type="200">केईआन</era>
						<era type="201">शो</era>
						<era type="202">मेईर्याकू</era>
						<era type="203">मानजी</era>
						<era type="204">कनबुन</era>
						<era type="205">ईंपो</era>
						<era type="206">टेंवा</era>
						<era type="207">जोक्यो</era>
						<era type="208">जेंरोकू</era>
						<era type="210">शोटूको</era>
						<era type="211">क्योहो</era>
						<era type="212">जेंबुन</era>
						<era type="213">कांपो</era>
						<era type="214">इंक्यो</era>
						<era type="215">कान-एन</era>
						<era type="216">होर्याकू</era>
						<era type="217">मेईवा</era>
						<era type="218">अन-एई</era>
						<era type="219">टेनमेई</era>
						<era type="220">कांसेई</era>
						<era type="221">क्योवा</era>
						<era type="222">बुंका</era>
						<era type="223">बुंसेई</era>
						<era type="224">टेंपो</era>
						<era type="225">कोका</era>
						<era type="226">काईए</era>
						<era type="227">अंसेई</era>
						<era type="228">मान-ईन</era>
						<era type="229">बुंक्यौ</era>
						<era type="230">जेंजी</era>
						<era type="231">केईओ</era>
						<era type="232">मेजी</era>
						<era type="233">ताईशो</era>
						<era type="234">शोवा</era>
						<era type="235">हेईसेई</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ताएका</era>
						<era type="1">हाकूची</era>
						<era type="2">हाकूहो</era>
						<era type="3">शूचो</era>
						<era type="4">ताहिओ</era>
						<era type="5">केउन</era>
						<era type="6">वाडू</era>
						<era type="7">रैकी</era>
						<era type="8">योरो</era>
						<era type="9">जिंकी</era>
						<era type="10">टेम्प्यो</era>
						<era type="11">टेम्प्यो-काम्पो</era>
						<era type="12">टेम्प्यो-शोहो</era>
						<era type="13">टेम्प्यो-होजी</era>
						<era type="14">टेम्प्यो-जिंगो</era>
						<era type="15">टेम्प्यो-किउन</era>
						<era type="16">होकी</era>
						<era type="17">टेनो</era>
						<era type="18">इंर्याकू</era>
						<era type="19">डाईडू</era>
						<era type="20">क़ोनिन</era>
						<era type="21">टेंचो</era>
						<era type="22">शोवा</era>
						<era type="23">काज्यो</era>
						<era type="24">निंजू</era>
						<era type="25">शाईकू</era>
						<era type="26">टेनन</era>
						<era type="27">जोगन्</era>
						<era type="28">गेंकेई</era>
						<era type="29">निन्ना</era>
						<era type="30">केम्प्यो</era>
						<era type="31">शूताई</era>
						<era type="32">ईंगी</era>
						<era type="33">ईंचो</era>
						<era type="34">शोहेई</era>
						<era type="35">टेंग्यो</era>
						<era type="36">टेंर्याकू</era>
						<era type="37">टेंटूकू</era>
						<era type="38">ओवा</era>
						<era type="39">कोहो</era>
						<era type="40">अन्ना</era>
						<era type="41">टेंरोकू</era>
						<era type="42">टेन-एन</era>
						<era type="43">जोगन्</era>
						<era type="44">टेंगेन</era>
						<era type="45">ईकान</era>
						<era type="46">कन्ना</era>
						<era type="47">ई-एन</era>
						<era type="48">एइसो</era>
						<era type="49">शोर्याकू</era>
						<era type="50">चोटूकु</era>
						<era type="51">चोहो</era>
						<era type="52">कंको</era>
						<era type="53">च्योवा</era>
						<era type="54">कन्निन</era>
						<era type="55">ज़ियान</era>
						<era type="56">मंजू</era>
						<era type="57">चोगन</era>
						<era type="58">चोर्याकू</era>
						<era type="59">चोक्यु</era>
						<era type="60">कांटूको</era>
						<era type="61">ईशो</era>
						<era type="62">टेंगी</era>
						<era type="63">कोहैइ</era>
						<era type="64">जिर्याकू</era>
						<era type="65">ईंक्यू</era>
						<era type="66">सोहो</era>
						<era type="67">शोर्याकू</era>
						<era type="68">ईहो</era>
						<era type="69">ओटूको</era>
						<era type="70">कांजि</era>
						<era type="71">कोहो</era>
						<era type="72">ईचो</era>
						<era type="73">शोटूको</era>
						<era type="74">कोवा</era>
						<era type="75">चोजी</era>
						<era type="76">काशो</era>
						<era type="77">टेन्निन</era>
						<era type="78">टेन-ई</era>
						<era type="79">ईक्यू</era>
						<era type="80">जेन-ई</era>
						<era type="81">होआन</era>
						<era type="82">तेंजी</era>
						<era type="83">दाईजी</era>
						<era type="84">टेंशो</era>
						<era type="85">चोशो</era>
						<era type="86">होएन</era>
						<era type="87">ईजी</era>
						<era type="88">कोजी</era>
						<era type="89">टेन्यो</era>
						<era type="90">क्यूआन</era>
						<era type="91">निंपैई</era>
						<era type="92">क्योजो</era>
						<era type="93">होगेन</era>
						<era type="94">हैजी</era>
						<era type="95">ईर्याकू</era>
						<era type="96">ओहो</era>
						<era type="97">चोकान</era>
						<era type="98">ईमान</era>
						<era type="99">निन-आन</era>
						<era type="100">काओ</era>
						<era type="101">शोअन</era>
						<era type="102">अंजन</era>
						<era type="103">जिशो</era>
						<era type="104">योवा</era>
						<era type="105">जूऐई</era>
						<era type="106">जेंर्याकू</era>
						<era type="107">बूंजी</era>
						<era type="108">केंक्यू</era>
						<era type="109">शोजी</era>
						<era type="110">केन्निन</era>
						<era type="111">जेंक्यू</era>
						<era type="112">केन-ई</era>
						<era type="113">शोगेन</era>
						<era type="114">केंर्याकू</era>
						<era type="115">केंपो</era>
						<era type="116">शोक्यू</era>
						<era type="117">जू</era>
						<era type="118">जेन्निन</era>
						<era type="119">कोरोकू</era>
						<era type="120">अंटैइ</era>
						<era type="121">कांकी</era>
						<era type="122">जोएई</era>
						<era type="123">टेम्पूकू</era>
						<era type="124">बुंर्याकू</era>
						<era type="125">काटेई</era>
						<era type="126">र्याकूनिन</era>
						<era type="127">ईन-ओ</era>
						<era type="128">निंजी</era>
						<era type="129">कांजेन</era>
						<era type="130">होजी</era>
						<era type="131">केंचो</era>
						<era type="132">कोगेन</era>
						<era type="133">शोका</era>
						<era type="134">शोगेन</era>
						<era type="135">बुन-ओ</era>
						<era type="136">कोचो</era>
						<era type="137">बुन-ई</era>
						<era type="138">केंजी</era>
						<era type="139">कोअन</era>
						<era type="140">शो</era>
						<era type="141">ईनिन</era>
						<era type="142">शोअन</era>
						<era type="143">केंजेन</era>
						<era type="144">काजेन</era>
						<era type="145">टोकूजी</era>
						<era type="146">ईंकेई</era>
						<era type="147">ओचो</era>
						<era type="148">शोवा</era>
						<era type="149">बुंपो</era>
						<era type="150">जेनो</era>
						<era type="151">जेंक्यो</era>
						<era type="152">शोचू</era>
						<era type="153">कारेकी</era>
						<era type="154">जेंटोकू</era>
						<era type="155">गेंको</era>
						<era type="156">केम्मू</era>
						<era type="157">ईंजेन</era>
						<era type="158">कोकोकू</era>
						<era type="159">शोहेई</era>
						<era type="160">केंटोकू</era>
						<era type="161">बूंचो</era>
						<era type="162">टेंजो</era>
						<era type="163">कोर्याकू</era>
						<era type="164">कोवा</era>
						<era type="165">जेंचू</era>
						<era type="166">मेटोकू</era>
						<era type="167">काकेई</era>
						<era type="168">कू</era>
						<era type="169">मेटोकू</era>
						<era type="170">ओई</era>
						<era type="171">शोचो</era>
						<era type="172">ईक्यो</era>
						<era type="173">काकीत्सू</era>
						<era type="174">बुन-अन</era>
						<era type="175">होटोकू</era>
						<era type="176">क्योटोकू</era>
						<era type="177">कोशो</era>
						<era type="178">चोरोकू</era>
						<era type="179">कांशो</era>
						<era type="180">बुंशो</era>
						<era type="181">ओनिन</era>
						<era type="182">बुन्मेई</era>
						<era type="183">चोक्यो</era>
						<era type="184">ईंटोकू</era>
						<era type="185">मेईओ</era>
						<era type="186">बुंकी</era>
						<era type="187">ईशो</era>
						<era type="188">ताईएई</era>
						<era type="189">क्योरोकू</era>
						<era type="190">टेन्मन</era>
						<era type="191">कोजी</era>
						<era type="192">ईरोकू</era>
						<era type="193">जेंकी</era>
						<era type="194">टेंशो</era>
						<era type="195">बुंरोकू</era>
						<era type="196">केईचो</era>
						<era type="197">जेनवा</era>
						<era type="198">कान-एई</era>
						<era type="199">शोहो</era>
						<era type="200">केईआन</era>
						<era type="201">शो</era>
						<era type="202">मेईर्याकू</era>
						<era type="203">मानजी</era>
						<era type="204">कनबुन</era>
						<era type="205">ईंपो</era>
						<era type="206">टेंवा</era>
						<era type="207">जोक्यो</era>
						<era type="208">जेंरोकू</era>
						<era type="209">होएई</era>
						<era type="210">शोटूको</era>
						<era type="211">क्योहो</era>
						<era type="212">जेंबुन</era>
						<era type="213">कांपो</era>
						<era type="214">इंक्यो</era>
						<era type="215">कान-एन</era>
						<era type="216">होर्याकू</era>
						<era type="217">मेईवा</era>
						<era type="218">अन-एई</era>
						<era type="219">टेनमेई</era>
						<era type="220">कांसेई</era>
						<era type="221">क्योवा</era>
						<era type="222">बुंका</era>
						<era type="223">बुंसेई</era>
						<era type="224">टेंपो</era>
						<era type="225">कोका</era>
						<era type="226">काईए</era>
						<era type="227">अंसेई</era>
						<era type="228">मान-ईन</era>
						<era type="229">बुंक्यौ</era>
						<era type="230">जेंजी</era>
						<era type="231">केईओ</era>
						<era type="232">मेजी</era>
						<era type="233">ताईशो</era>
						<era type="234">शोवा</era>
						<era type="235">हेईसेई</era>
					</eraAbbr>
					<eraNarrow>
						<era type="232">म</era>
						<era type="233">ट</era>
						<era type="234">स</era>
						<era type="235">ह</era>
					</eraNarrow>
				</eras>
			</calendar>
			<calendar type="persian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">फर्वादिन</month>
							<month type="2">ओर्दिवेहेस्ट</month>
							<month type="3">खोरर्दाद</month>
							<month type="4">टिर</month>
							<month type="5">मोरदाद</month>
							<month type="6">शाहरीवर्</month>
							<month type="7">मेहर</month>
							<month type="8">अवन</month>
							<month type="9">अज़र</month>
							<month type="10">डे</month>
							<month type="11">बहमन</month>
							<month type="12">ईस्फन्द्</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">फर्वादिन</month>
							<month type="2">ओर्दिवेहेस्ट</month>
							<month type="3">खोरर्दाद</month>
							<month type="4">टिर</month>
							<month type="5">मोरदाद</month>
							<month type="6">शाहरीवर्</month>
							<month type="7">मेहर</month>
							<month type="8">अवन</month>
							<month type="9">अज़र</month>
							<month type="10">डे</month>
							<month type="11">बहमन</month>
							<month type="12">ईस्फन्द्</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="wide">
							<month type="1">फर्वादिन</month>
							<month type="2">ओर्दिवेहेस्ट</month>
							<month type="3">खोरर्दाद</month>
							<month type="4">टिर</month>
							<month type="5">मोरदाद</month>
							<month type="6">शाहरीवर्</month>
							<month type="7">मेहर</month>
							<month type="8">अवन</month>
							<month type="9">अज़र</month>
							<month type="10">डे</month>
							<month type="11">बहमन</month>
							<month type="12">ईस्फन्द्</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>अज्ञात</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>अंडोरा</exemplarCity>
			</zone>
			<zone type="Asia/Dubai">
				<exemplarCity>दुबई</exemplarCity>
			</zone>
			<zone type="Asia/Kabul">
				<exemplarCity>काबूल</exemplarCity>
			</zone>
			<zone type="America/Antigua">
				<exemplarCity>एंटिगुआ</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>एंग्विला</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>टिरेन</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>येरेवन</exemplarCity>
			</zone>
			<zone type="America/Curacao">
				<exemplarCity>क्यूराकाओ</exemplarCity>
			</zone>
			<zone type="Africa/Luanda">
				<exemplarCity>लूएंडा</exemplarCity>
			</zone>
			<zone type="Antarctica/Rothera">
				<exemplarCity>रोथेरा</exemplarCity>
			</zone>
			<zone type="Antarctica/Palmer">
				<exemplarCity>पॉमर</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>दक्षिणी ध्रुव</exemplarCity>
			</zone>
			<zone type="Antarctica/Syowa">
				<exemplarCity>स्योवा</exemplarCity>
			</zone>
			<zone type="Antarctica/Mawson">
				<exemplarCity>मॉसन</exemplarCity>
			</zone>
			<zone type="Antarctica/Davis">
				<exemplarCity>डेविस</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>वोस्तोक</exemplarCity>
			</zone>
			<zone type="Antarctica/Casey">
				<exemplarCity>क़ेसी</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>डुमोंट ड'अर्विल</exemplarCity>
			</zone>
			<zone type="Antarctica/McMurdo">
				<exemplarCity>मैकमुर्डो</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>रियो गालेगोस</exemplarCity>
			</zone>
			<zone type="America/Mendoza">
				<exemplarCity>मेंडोजा</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Juan">
				<exemplarCity>सान जुआन</exemplarCity>
			</zone>
			<zone type="America/Argentina/Ushuaia">
				<exemplarCity>उशूयिया</exemplarCity>
			</zone>
			<zone type="America/Argentina/La_Rioja">
				<exemplarCity>ला रिओजा</exemplarCity>
			</zone>
			<zone type="America/Argentina/San_Luis">
				<exemplarCity>सान लुईस</exemplarCity>
			</zone>
			<zone type="America/Catamarca">
				<exemplarCity>कटामार्का</exemplarCity>
			</zone>
			<zone type="America/Jujuy">
				<exemplarCity>जुजोए</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>टोकूमन</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>कोर्डोवा</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
				<exemplarCity>ब्यूनस आयरस</exemplarCity>
			</zone>
			<zone type="Pacific/Pago_Pago">
				<exemplarCity>पागो पागो</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>वियना</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
				<exemplarCity>पर्थ</exemplarCity>
			</zone>
			<zone type="Australia/Eucla">
				<exemplarCity>यूक्ला</exemplarCity>
			</zone>
			<zone type="Australia/Darwin">
				<exemplarCity>डार्विन्</exemplarCity>
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>एडिलेड</exemplarCity>
			</zone>
			<zone type="Australia/Broken_Hill">
				<exemplarCity>ब्रोकन हिल्स</exemplarCity>
			</zone>
			<zone type="Australia/Currie">
				<exemplarCity>क्यूरी</exemplarCity>
			</zone>
			<zone type="Australia/Melbourne">
				<exemplarCity>मेलबोर्न</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
				<exemplarCity>होबर्ट्</exemplarCity>
			</zone>
			<zone type="Australia/Lindeman">
				<exemplarCity>लिंडेमान</exemplarCity>
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>सिडनी</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
				<exemplarCity>बिर्स्बेन</exemplarCity>
			</zone>
			<zone type="Australia/Lord_Howe">
				<exemplarCity>लोर्ड होवे</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>अरूबा</exemplarCity>
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>बाकू</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>बारबाडोस</exemplarCity>
			</zone>
			<zone type="Asia/Dhaka">
				<exemplarCity>ढाका</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>ब्रसल्स</exemplarCity>
			</zone>
			<zone type="Africa/Ouagadougou">
				<exemplarCity>ओआगदूगू</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>सोफ़िया</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>बहरीन</exemplarCity>
			</zone>
			<zone type="Africa/Bujumbura">
				<exemplarCity>बुजुम्बुरा</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>पोर्टो-नोवो</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>बरमूडा</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>ब्रूनेइ</exemplarCity>
			</zone>
			<zone type="America/La_Paz">
				<exemplarCity>ला पाज़</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>ईरोंपे</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>रियो ब्रान्को</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>पोर्टो वेल्हो</exemplarCity>
			</zone>
			<zone type="America/Boa_Vista">
				<exemplarCity>बोआ विस्ता</exemplarCity>
			</zone>
			<zone type="America/Manaus">
				<exemplarCity>मनौस</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>कूईआबा</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
				<exemplarCity>केम्पो ग्रान्दे</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>बेलेम</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>अरग्वैना</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>साओ पॉलो</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>बहिया</exemplarCity>
			</zone>
			<zone type="America/Fortaleza">
				<exemplarCity>फ़ोर्टालेज़ा</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>मेसीओ</exemplarCity>
			</zone>
			<zone type="America/Recife">
				<exemplarCity>रेचीफ़े</exemplarCity>
			</zone>
			<zone type="America/Noronha">
				<exemplarCity>नोरोन्हा</exemplarCity>
			</zone>
			<zone type="America/Nassau">
				<exemplarCity>नस्साउ</exemplarCity>
			</zone>
			<zone type="Asia/Thimphu">
				<exemplarCity>थिम्फू</exemplarCity>
			</zone>
			<zone type="Africa/Gaborone">
				<exemplarCity>गैबोरोन</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>मिंस्क</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>बेलिज़े</exemplarCity>
			</zone>
			<zone type="America/Dawson">
				<exemplarCity>डोसन</exemplarCity>
			</zone>
			<zone type="America/Whitehorse">
				<exemplarCity>व्हाईटहोर्स</exemplarCity>
			</zone>
			<zone type="America/Inuvik">
				<exemplarCity>इनूविक</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
				<exemplarCity>वांकूवर</exemplarCity>
			</zone>
			<zone type="America/Dawson_Creek">
				<exemplarCity>डोसन क्रिक</exemplarCity>
			</zone>
			<zone type="America/Yellowknife">
				<exemplarCity>येलोनाईफ</exemplarCity>
			</zone>
			<zone type="America/Edmonton">
				<exemplarCity>एडमंटन</exemplarCity>
			</zone>
			<zone type="America/Swift_Current">
				<exemplarCity>स्विफ्ट करंट</exemplarCity>
			</zone>
			<zone type="America/Cambridge_Bay">
				<exemplarCity>केम्ब्रिज खाडी</exemplarCity>
			</zone>
			<zone type="America/Regina">
				<exemplarCity>रेजिना</exemplarCity>
			</zone>
			<zone type="America/Winnipeg">
				<exemplarCity>विनीपेग</exemplarCity>
			</zone>
			<zone type="America/Resolute">
				<exemplarCity>रिसोल्यूट</exemplarCity>
			</zone>
			<zone type="America/Rainy_River">
				<exemplarCity>रेनी नदी</exemplarCity>
			</zone>
			<zone type="America/Rankin_Inlet">
				<exemplarCity>रेंकिन इंलेट</exemplarCity>
			</zone>
			<zone type="America/Coral_Harbour">
				<exemplarCity>कोरल बन्दरगाह</exemplarCity>
			</zone>
			<zone type="America/Thunder_Bay">
				<exemplarCity>थंडर खाडी</exemplarCity>
			</zone>
			<zone type="America/Nipigon">
				<exemplarCity>निपिगन</exemplarCity>
			</zone>
			<zone type="America/Toronto">
				<exemplarCity>टोरंटो</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>मोंट्रियल</exemplarCity>
			</zone>
			<zone type="America/Iqaluit">
				<exemplarCity>इक्याल्यूईत</exemplarCity>
			</zone>
			<zone type="America/Pangnirtung">
				<exemplarCity>पंग्निर्टंग्</exemplarCity>
			</zone>
			<zone type="America/Moncton">
				<exemplarCity>मोंक्ट्न</exemplarCity>
			</zone>
			<zone type="America/Halifax">
				<exemplarCity>हेलिफेक्स</exemplarCity>
			</zone>
			<zone type="America/Goose_Bay">
				<exemplarCity>गूस खाडी</exemplarCity>
			</zone>
			<zone type="America/Glace_Bay">
				<exemplarCity>ग्लेस खाडी</exemplarCity>
			</zone>
			<zone type="America/Blanc-Sablon">
				<exemplarCity>ब्लांक-सेबलोन</exemplarCity>
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>सेंट जोंस</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>कोकोस</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>किन्शासा</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>लुबुमबाशी</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>बैंगुइ</exemplarCity>
			</zone>
			<zone type="Africa/Brazzaville">
				<exemplarCity>ब्राज़ाविल</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>ज़्यूरिक</exemplarCity>
			</zone>
			<zone type="Africa/Abidjan">
				<exemplarCity>अबिद्जान</exemplarCity>
			</zone>
			<zone type="Pacific/Rarotonga">
				<exemplarCity>रारोटोंगा</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>ईस्टर द्वीप (चिली)</exemplarCity>
			</zone>
			<zone type="America/Santiago">
				<exemplarCity>सेंटिएगो</exemplarCity>
			</zone>
			<zone type="Africa/Douala">
				<exemplarCity>दोआला</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>काश्गर</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>उरम्ची</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>चोंग्पिंग</exemplarCity>
			</zone>
			<zone type="Asia/Harbin">
				<exemplarCity>हर्बिन</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>बोगोटा</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>कोस्टा रिका</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>हवाना</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>केप वर्डे</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>क्रिसमस</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>निकोसिया</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>बर्लिन</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>डिजिबौटी</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>कोपनहेगन</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>डॉमिनिका</exemplarCity>
			</zone>
			<zone type="America/Santo_Domingo">
				<exemplarCity>संटो डोमिंगो</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>अल्जीरिया</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>गेलापगोस</exemplarCity>
			</zone>
			<zone type="America/Guayaquil">
				<exemplarCity>ग्वायाक्विल</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>टैलिन</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>कायरो</exemplarCity>
			</zone>
			<zone type="Africa/El_Aaiun">
				<exemplarCity>एल आइउन</exemplarCity>
			</zone>
			<zone type="Africa/Asmera">
				<exemplarCity>असमेरा</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>केनरी द्वीप</exemplarCity>
			</zone>
			<zone type="Africa/Ceuta">
				<exemplarCity>क्यूटा</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>मैड्रिड</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>ऐडिस अबाबा</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>हेल्सिंकी</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>फ़िजी</exemplarCity>
			</zone>
			<zone type="Atlantic/Stanley">
				<exemplarCity>स्टैन्ली</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>ट्रुक</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>पोनापे</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>कोसराए</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>फ़ैरो</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>पेरिस</exemplarCity>
			</zone>
			<zone type="Africa/Libreville">
				<exemplarCity>लिबरविल</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>लंदन</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>ग्रेनाडा</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>बिलिसी</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>कयेन</exemplarCity>
			</zone>
			<zone type="Africa/Accra">
				<exemplarCity>ऐक्रा</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>जिब्राल्टर</exemplarCity>
			</zone>
			<zone type="America/Thule">
				<exemplarCity>थ्यूले</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>गॉडथैब</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>स्कोर्सबाइसंड</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>डेनमार्क्षवन</exemplarCity>
			</zone>
			<zone type="Africa/Banjul">
				<exemplarCity>बनजुल</exemplarCity>
			</zone>
			<zone type="Africa/Conakry">
				<exemplarCity>कोनाक्री</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>गौडलोप</exemplarCity>
			</zone>
			<zone type="Africa/Malabo">
				<exemplarCity>मालाबो</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>एथेंस</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>साउथ जॉर्जिया</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>ग्वाटेमाला</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>ग्वाम</exemplarCity>
			</zone>
			<zone type="Africa/Bissau">
				<exemplarCity>बिस्साउ</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>गुयाना</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>हाँगकाँग</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>पोर्ट-आउ-प्रिंस</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>बुडापेस्ट</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>जकार्ता</exemplarCity>
			</zone>
			<zone type="Asia/Pontianak">
				<exemplarCity>पोंतिआंक</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>मकस्सर</exemplarCity>
			</zone>
			<zone type="Asia/Jayapura">
				<exemplarCity>जयापुरा</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>डबलिन</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>येरुसलम</exemplarCity>
			</zone>
			<zone type="Indian/Chagos">
				<exemplarCity>चागोस</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>बगदाद</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>तेहरान</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>रेक्याविक</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>रोम</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>जमैका</exemplarCity>
			</zone>
			<zone type="Asia/Amman">
				<exemplarCity>अम्मान</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>टोक्यो</exemplarCity>
			</zone>
			<zone type="Africa/Nairobi">
				<exemplarCity>नैरोबी</exemplarCity>
			</zone>
			<zone type="Asia/Bishkek">
				<exemplarCity>बिश्केक</exemplarCity>
			</zone>
			<zone type="Asia/Phnom_Penh">
				<exemplarCity>नोम पेन्ह</exemplarCity>
			</zone>
			<zone type="Pacific/Enderbury">
				<exemplarCity>एंडरबेरी</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>किरीतिमाति</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
				<exemplarCity>टरावा</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>कोमोरो</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>सेंट किट्ट्स</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>प्योंगयांग</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>सोल</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>कुवैत</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>केमन</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>अक्ताव</exemplarCity>
			</zone>
			<zone type="Asia/Oral">
				<exemplarCity>ओरल</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>अक़्टोवे</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>केज़ेलोर्डा</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>अल्माटी</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>वियंतियेन</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>बेरुत</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>सेंट लुसीया</exemplarCity>
			</zone>
			<zone type="Europe/Vaduz">
				<exemplarCity>वादुज़</exemplarCity>
			</zone>
			<zone type="Asia/Colombo">
				<exemplarCity>कोलंबो</exemplarCity>
			</zone>
			<zone type="Africa/Monrovia">
				<exemplarCity>मोन्रोविया</exemplarCity>
			</zone>
			<zone type="Africa/Maseru">
				<exemplarCity>मसेरू</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>विल्निअस</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>लक्ज़मबर्ग</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>रिगा</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>त्रिपोली</exemplarCity>
			</zone>
			<zone type="Africa/Casablanca">
				<exemplarCity>कैसाब्लैंका</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>मोनाको</exemplarCity>
			</zone>
			<zone type="Europe/Chisinau">
				<exemplarCity>चिसीनौ</exemplarCity>
			</zone>
			<zone type="Indian/Antananarivo">
				<exemplarCity>ऐंटनानरीवो</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>क्वजलेन</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>मजूरो</exemplarCity>
			</zone>
			<zone type="Africa/Bamako">
				<exemplarCity>बमाको</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>रंगून</exemplarCity>
			</zone>
			<zone type="Asia/Hovd">
				<exemplarCity>होव्ड</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>उलानबाटर</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>चोइबालसन</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>मकाऊ</exemplarCity>
			</zone>
			<zone type="Pacific/Saipan">
				<exemplarCity>सइपान</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>मारटीनीक</exemplarCity>
			</zone>
			<zone type="Africa/Nouakchott">
				<exemplarCity>नौवाक्चॉट</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>मोन्त्सेरत</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>माल्टा</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>मॉरिशस</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>मालदीव</exemplarCity>
			</zone>
			<zone type="Africa/Blantyre">
				<exemplarCity>ब्लैंटायर</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
				<exemplarCity>टिज्यूआना</exemplarCity>
			</zone>
			<zone type="America/Hermosillo">
				<exemplarCity>हर्मोसिलो</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>म्जाटलान</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
				<exemplarCity>चिहुआहुआ</exemplarCity>
			</zone>
			<zone type="America/Monterrey">
				<exemplarCity>मोंटेरे</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>मेक्सिको सिटी</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>मेरिडा</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>कनकन</exemplarCity>
			</zone>
			<zone type="Asia/Kuala_Lumpur">
				<exemplarCity>क्वाला लम्पुर</exemplarCity>
			</zone>
			<zone type="Asia/Kuching">
				<exemplarCity>कूचिंग</exemplarCity>
			</zone>
			<zone type="Africa/Maputo">
				<exemplarCity>माइपुटो</exemplarCity>
			</zone>
			<zone type="Africa/Windhoek">
				<exemplarCity>विन्डोएक</exemplarCity>
			</zone>
			<zone type="Pacific/Noumea">
				<exemplarCity>नूमिया</exemplarCity>
			</zone>
			<zone type="Africa/Niamey">
				<exemplarCity>न्यामे</exemplarCity>
			</zone>
			<zone type="Pacific/Norfolk">
				<exemplarCity>नोर्फ़ोक</exemplarCity>
			</zone>
			<zone type="Africa/Lagos">
				<exemplarCity>लागोस</exemplarCity>
			</zone>
			<zone type="America/Managua">
				<exemplarCity>मनागुआ</exemplarCity>
			</zone>
			<zone type="Europe/Amsterdam">
				<exemplarCity>ऐम्स्टरडम</exemplarCity>
			</zone>
			<zone type="Europe/Oslo">
				<exemplarCity>ओस्लो</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>काठमांडू</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>नौरू</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>नियु</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>चाथम</exemplarCity>
			</zone>
			<zone type="Pacific/Auckland">
				<exemplarCity>औकलैंड</exemplarCity>
			</zone>
			<zone type="Asia/Muscat">
				<exemplarCity>मस्कट</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>पनामा</exemplarCity>
			</zone>
			<zone type="America/Lima">
				<exemplarCity>लीमा</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>टहीटि</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>मार्केसस</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>गैम्बियर</exemplarCity>
			</zone>
			<zone type="Pacific/Port_Moresby">
				<exemplarCity>पोर्ट मोरेस्बाइ</exemplarCity>
			</zone>
			<zone type="Asia/Manila">
				<exemplarCity>मनीला</exemplarCity>
			</zone>
			<zone type="Asia/Karachi">
				<exemplarCity>कराची</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>वॉरसा</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>मिक्वेलोन</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>पिट्कैर्न</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>प्योर्तो रिको</exemplarCity>
			</zone>
			<zone type="Asia/Gaza">
				<exemplarCity>गाज़ा</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>अज़ोरस</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
				<exemplarCity>मडेएरा</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>लिस्बन</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>पलाऊ</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>ऐसन्क्षन</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>क़तर</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>रियूनियन</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>बुक्कारेस्ट</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>कालिलींग्राड</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>मॉस्को</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>वोल्गोग्रेड</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>समारा</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>येकांतिरिंबर्ग</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>ओम्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>नॉवोसिविर्स्क्</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>क्राशनोयार्श्क</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>ईर्कुत्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>याकूत्स्क</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>ब्लाडिवोस्टोक</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>सखालिन</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>मगादन</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>कमचटका</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>अनाडेर</exemplarCity>
			</zone>
			<zone type="Africa/Kigali">
				<exemplarCity>किगालि</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>रियाध</exemplarCity>
			</zone>
			<zone type="Pacific/Guadalcanal">
				<exemplarCity>ग्वाडलकनाल</exemplarCity>
			</zone>
			<zone type="Indian/Mahe">
				<exemplarCity>माहे</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>खार्तूम</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>स्टॉकहोम</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>सिंगापुर</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>सेंट हेलेना</exemplarCity>
			</zone>
			<zone type="Africa/Freetown">
				<exemplarCity>फ़्रीटाउन</exemplarCity>
			</zone>
			<zone type="Africa/Dakar">
				<exemplarCity>डकार</exemplarCity>
			</zone>
			<zone type="Africa/Mogadishu">
				<exemplarCity>मोगाडिशू</exemplarCity>
			</zone>
			<zone type="America/Paramaribo">
				<exemplarCity>परामरीबो</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>साओ टोम</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>सैल्वेडोर</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>दमास्कस</exemplarCity>
			</zone>
			<zone type="Africa/Mbabane">
				<exemplarCity>म्बाबेन</exemplarCity>
			</zone>
			<zone type="America/Grand_Turk">
				<exemplarCity>ग्रैँड तुर्क</exemplarCity>
			</zone>
			<zone type="Africa/Ndjamena">
				<exemplarCity>जमेना</exemplarCity>
			</zone>
			<zone type="Indian/Kerguelen">
				<exemplarCity>कर्ग्वेलेन</exemplarCity>
			</zone>
			<zone type="Africa/Lome">
				<exemplarCity>लोम</exemplarCity>
			</zone>
			<zone type="Asia/Bangkok">
				<exemplarCity>बैंगकॉक</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>दुशांबे</exemplarCity>
			</zone>
			<zone type="Pacific/Fakaofo">
				<exemplarCity>फ़काओफ़ो</exemplarCity>
			</zone>
			<zone type="Asia/Dili">
				<exemplarCity>डिली</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>अश्गाबात</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>ट्यूनिस</exemplarCity>
			</zone>
			<zone type="Pacific/Tongatapu">
				<exemplarCity>टोंगाटापू</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>इस्तानबुल</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>पोर्ट ऑफ़ स्पेन</exemplarCity>
			</zone>
			<zone type="Pacific/Funafuti">
				<exemplarCity>फ़ुनाफ़ूटी</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>ताइपेइ</exemplarCity>
			</zone>
			<zone type="Africa/Dar_es_Salaam">
				<exemplarCity>दार एस सलाम</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>उझ्गोरोड्</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>कीव</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>सिम्फेरोपोल</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>झापोरोझे</exemplarCity>
			</zone>
			<zone type="Africa/Kampala">
				<exemplarCity>कम्पाला</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>मिडवे</exemplarCity>
			</zone>
			<zone type="Pacific/Johnston">
				<exemplarCity>जॉनस्टन</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>वेक</exemplarCity>
			</zone>
			<zone type="America/Adak">
				<exemplarCity>अडक</exemplarCity>
			</zone>
			<zone type="America/Nome">
				<exemplarCity>नोम</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>हानूलुलु</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>अलास्का</exemplarCity>
			</zone>
			<zone type="America/Yakutat">
				<exemplarCity>यकूतत</exemplarCity>
			</zone>
			<zone type="America/Juneau">
				<exemplarCity>जुनेऔ</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>लोस एंजिलेस</exemplarCity>
			</zone>
			<zone type="America/Boise">
				<exemplarCity>बोईस</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
				<exemplarCity>फोनिक्स</exemplarCity>
			</zone>
			<zone type="America/Shiprock">
				<exemplarCity>शिपरेक</exemplarCity>
			</zone>
			<zone type="America/Denver">
				<exemplarCity>डेनवर</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/New_Salem">
				<exemplarCity>न्यू सालेम</exemplarCity>
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>मध्य</exemplarCity>
			</zone>
			<zone type="America/Chicago">
				<exemplarCity>शिकागो</exemplarCity>
			</zone>
			<zone type="America/Menominee">
				<exemplarCity>मेनोमिनी</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vincennes">
				<exemplarCity>विंसिनेस</exemplarCity>
			</zone>
			<zone type="America/Indiana/Petersburg">
				<exemplarCity>पिटर्स्वर्ग</exemplarCity>
			</zone>
			<zone type="America/Indiana/Tell_City">
				<exemplarCity>टेल सिटी</exemplarCity>
			</zone>
			<zone type="America/Indiana/Knox">
				<exemplarCity>नोक्स</exemplarCity>
			</zone>
			<zone type="America/Indiana/Winamac">
				<exemplarCity>विनामेक</exemplarCity>
			</zone>
			<zone type="America/Indiana/Marengo">
				<exemplarCity>मारेंगो</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>इन्डियानापोलिस</exemplarCity>
			</zone>
			<zone type="America/Louisville">
				<exemplarCity>लोईसविले</exemplarCity>
			</zone>
			<zone type="America/Indiana/Vevay">
				<exemplarCity>विवे</exemplarCity>
			</zone>
			<zone type="America/Kentucky/Monticello">
				<exemplarCity>मोंटीसेलो</exemplarCity>
			</zone>
			<zone type="America/Detroit">
				<exemplarCity>डेट्रोईट</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>न्यूयार्क</exemplarCity>
			</zone>
			<zone type="America/Montevideo">
				<exemplarCity>मोन्टेवीडियो</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>समरकंड</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>ताशकंद</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>सेंट विंसेंट</exemplarCity>
			</zone>
			<zone type="America/Caracas">
				<exemplarCity>काराकस</exemplarCity>
			</zone>
			<zone type="America/Tortola">
				<exemplarCity>टॉरटोला</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>सेंट टॉमस</exemplarCity>
			</zone>
			<zone type="Asia/Saigon">
				<exemplarCity>साइगॉन</exemplarCity>
			</zone>
			<zone type="Pacific/Efate">
				<exemplarCity>एफ़ेट</exemplarCity>
			</zone>
			<zone type="Pacific/Wallis">
				<exemplarCity>वालिस</exemplarCity>
			</zone>
			<zone type="Pacific/Apia">
				<exemplarCity>एपिया</exemplarCity>
			</zone>
			<zone type="Asia/Aden">
				<exemplarCity>ऐडेन</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>मायोत्ते</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>जोहानसबर्ग</exemplarCity>
			</zone>
			<zone type="Africa/Lusaka">
				<exemplarCity>लुसाका</exemplarCity>
			</zone>
			<zone type="Africa/Harare">
				<exemplarCity>हरारे</exemplarCity>
			</zone>
			<metazone type="India">
				<long>
					<standard>भारतीय समय</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>०</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">{0} {1}</unitPattern>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>संयुक्त अरब अमीरात दिर्हाम</displayName>
			</currency>
			<currency type="AFA">
				<displayName>अफगानी (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>अफगानी</displayName>
			</currency>
			<currency type="AMD">
				<displayName>अरमेनियाई दरम</displayName>
				<symbol>दरम</symbol>
			</currency>
			<currency type="ARS">
				<displayName>अर्जेण्टीनी पीसो</displayName>
			</currency>
			<currency type="AUD">
				<displayName>ऑस्ट्रेलियाई डॉलर</displayName>
			</currency>
			<currency type="BGN">
				<displayName>बुल्गारियाई लेव्</displayName>
			</currency>
			<currency type="BOB">
				<displayName>बोलिवियाई बोलिवियानो</displayName>
			</currency>
			<currency type="BRL">
				<displayName>रीयाल</displayName>
				<symbol>रीयाल</symbol>
			</currency>
			<currency type="CAD">
				<displayName>कनेडियन डॉलर</displayName>
			</currency>
			<currency type="CHF">
				<displayName>स्विस फ़्रैंक</displayName>
			</currency>
			<currency type="CLP">
				<displayName>चिली पीसो</displayName>
			</currency>
			<currency type="CNY">
				<displayName>युवान</displayName>
				<symbol>युवान</symbol>
			</currency>
			<currency type="COP">
				<displayName>कोलम्बियाई पीसो</displayName>
			</currency>
			<currency type="CSD">
				<displayName>सर्बिय का ढीनार</displayName>
				<symbol>स. ढीनार</symbol>
			</currency>
			<currency type="CYP">
				<displayName>साईप्रस पाऊंड</displayName>
			</currency>
			<currency type="CZK">
				<displayName>चेक कोरुना</displayName>
			</currency>
			<currency type="DEM">
				<displayName>डच मार्क</displayName>
			</currency>
			<currency type="DKK">
				<displayName>डेनमार्क क्रोन</displayName>
			</currency>
			<currency type="DZD">
				<displayName>अल्जीरीयाई दिनार</displayName>
			</currency>
			<currency type="EEK">
				<displayName>एस्टोनियाई क्रून्</displayName>
			</currency>
			<currency type="EGP">
				<displayName>मिस्री पाउण्ड</displayName>
			</currency>
			<currency type="EUR">
				<displayName>युरो</displayName>
			</currency>
			<currency type="FJD">
				<displayName>फ़िजी का डालर</displayName>
				<symbol>फ़िजी का डालर</symbol>
			</currency>
			<currency type="FRF">
				<displayName>फ़्रांसीसी फ़्रैंक</displayName>
			</currency>
			<currency type="GBP">
				<displayName>ब्रितन का पौन्ड स्टर्लिग</displayName>
			</currency>
			<currency type="HKD">
				<displayName>हाँगकाँग डॉलर</displayName>
				<symbol>हॉंगकॉंग डॉलर</symbol>
			</currency>
			<currency type="HRD">
				<displayName>क्रोएशियन दिनार</displayName>
			</currency>
			<currency type="HRK">
				<displayName>क्रोएशियाई कुना</displayName>
			</currency>
			<currency type="HUF">
				<displayName>हंगरी फोरेंट्</displayName>
			</currency>
			<currency type="IDR">
				<displayName>इण्डोनेशियाई रुपिया</displayName>
			</currency>
			<currency type="ILS">
				<displayName>इस्राइली शेकेल</displayName>
			</currency>
			<currency type="INR">
				<displayName>भारतीय  रूपया</displayName>
				<symbol>रु.</symbol>
			</currency>
			<currency type="IQD">
				<displayName>इराकी दिनार</displayName>
			</currency>
			<currency type="ITL">
				<displayName>इतली का लीरा</displayName>
			</currency>
			<currency type="JPY">
				<displayName>जापानी येन</displayName>
			</currency>
			<currency type="KPW">
				<displayName>उत्तर कोरियाई वोन</displayName>
			</currency>
			<currency type="KRW">
				<displayName>दक्षिण कोरियाई वोन</displayName>
			</currency>
			<currency type="KWD">
				<displayName>कुवैती दिनार</displayName>
			</currency>
			<currency type="LBP">
				<displayName>लेबनानी पाउंड</displayName>
			</currency>
			<currency type="LKR">
				<displayName>श्रीलंकाई रुपया</displayName>
			</currency>
			<currency type="LRD">
				<displayName>लाईबेरीयाई डालर</displayName>
			</currency>
			<currency type="LTL">
				<displayName>लिथुआनियाई लितास</displayName>
			</currency>
			<currency type="MAD">
				<displayName>मोराक्को दिरहम</displayName>
			</currency>
			<currency type="MAF">
				<displayName>मोरक्को फ्रैंक</displayName>
			</currency>
			<currency type="MXN">
				<displayName>मेक्सिको पेसो</displayName>
			</currency>
			<currency type="MYR">
				<displayName>मलेशियाई रिंगित</displayName>
			</currency>
			<currency type="NAD">
				<displayName>नामीबियाई डालर</displayName>
			</currency>
			<currency type="NOK">
				<displayName>नॉर्वे क्रोन</displayName>
			</currency>
			<currency type="NPR">
				<displayName>नेपाली रुपया</displayName>
			</currency>
			<currency type="NZD">
				<displayName>न्यूज़ीलैंड डॉलर</displayName>
			</currency>
			<currency type="OMR">
				<displayName>ओमानी रियाल</displayName>
			</currency>
			<currency type="PEN">
				<displayName>पेरुवाई न्यूवो सोल</displayName>
			</currency>
			<currency type="PHP">
				<displayName>फ़िलिपीनी पीसो</displayName>
			</currency>
			<currency type="PKR">
				<displayName>पाकिस्तानी रुपया</displayName>
			</currency>
			<currency type="PLN">
				<displayName>पोलिश नया ज़्लॉटी</displayName>
			</currency>
			<currency type="RHD">
				<displayName>रोडेशियाई डालर</displayName>
			</currency>
			<currency type="RON">
				<displayName>रोमानियाई ल्यू</displayName>
			</currency>
			<currency type="RSD">
				<displayName>सर्बियन दिनार</displayName>
			</currency>
			<currency type="RUB">
				<displayName>रूसी रूबल</displayName>
				<symbol>रूबल</symbol>
			</currency>
			<currency type="RWF">
				<displayName>रवांडाई फ्रैंक</displayName>
			</currency>
			<currency type="SAR">
				<displayName>सउदी रियाल</displayName>
			</currency>
			<currency type="SDD">
				<displayName>पुरानी सूडानी दिनार</displayName>
			</currency>
			<currency type="SDG">
				<displayName>सूडानी पाउंड</displayName>
			</currency>
			<currency type="SDP">
				<displayName>पुराना सूडानी पाउंड</displayName>
			</currency>
			<currency type="SEK">
				<displayName>स्वीडन क्रोना</displayName>
			</currency>
			<currency type="SGD">
				<displayName>सिंगापुर डॉलर</displayName>
			</currency>
			<currency type="SIT">
				<displayName>स्लोवेनियाई तोलार</displayName>
			</currency>
			<currency type="SKK">
				<displayName>स्लोवाक कोरुना</displayName>
			</currency>
			<currency type="SOS">
				<displayName>सोमाली शिलिंग</displayName>
			</currency>
			<currency type="SRD">
				<displayName>सूरीनामी डालर</displayName>
			</currency>
			<currency type="SRG">
				<displayName>सूरीनामी गिल्डर</displayName>
			</currency>
			<currency type="SUR">
				<displayName>सोवियत रूबल</displayName>
			</currency>
			<currency type="SYP">
				<displayName>सीरियाई पाउंड</displayName>
			</currency>
			<currency type="THB">
				<displayName>थाई बाहत</displayName>
			</currency>
			<currency type="TJR">
				<displayName>तजाखी रूबल</displayName>
			</currency>
			<currency type="TJS">
				<displayName>तजाखी सोमोनी</displayName>
			</currency>
			<currency type="TRL">
				<displayName>पुरानी तुर्की लीरा</displayName>
			</currency>
			<currency type="TRY">
				<displayName>नई तुर्की लीरा</displayName>
			</currency>
			<currency type="TWD">
				<displayName>नया ताईवानी डॉलर</displayName>
			</currency>
			<currency type="USD">
				<displayName>अमरीकी डालर</displayName>
			</currency>
			<currency type="USN">
				<displayName>अमेरीकी डालर (कल)</displayName>
			</currency>
			<currency type="USS">
				<displayName>अमेरीकी डालर (आज)</displayName>
			</currency>
			<currency type="VEB">
				<displayName>वेनेज़ुएलाई बोलिवार</displayName>
			</currency>
			<currency type="VND">
				<displayName>वियतनामी डोंग</displayName>
			</currency>
			<currency type="XXX">
				<displayName>अज्ञात या अवैध मुद्रा</displayName>
				<symbol>१२,३४५.६८ रुपये</symbol>
			</currency>
			<currency type="ZAR">
				<displayName>दक्षिण अफ़्रीकी रॅण्ड</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} दिन</unitPattern>
			<unitPattern count="other">{0} दिन</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} घंटा</unitPattern>
			<unitPattern count="other">{0} घंटे</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} मिन.</unitPattern>
			<unitPattern count="other">{0} मिन.</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} महीना</unitPattern>
			<unitPattern count="other">{0} महीने</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} सेकं.</unitPattern>
			<unitPattern count="other">{0} सेकं.</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} सप्ताह</unitPattern>
			<unitPattern count="other">{0} सप्ताह</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} साल</unitPattern>
			<unitPattern count="other">{0} साल</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>हाँ</yesstr>
			<nostr>नहीं</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ú�WWLocale/Data/es_UY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/17 18:53:46 $"/>
		<language type="es"/>
		<territory type="UY"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;(¤ #,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="UYU">
				<symbol>$U</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�����Locale/Data/el_CY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.24 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="el"/>
		<territory type="CY"/>
	</identity>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[���""Locale/Data/sr_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.36 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sr"/>
		<script type="Cyrl"/>
	</identity>
</ldml>
PKpG[�x�##Locale/Data/hr_HR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:31 $"/>
		<language type="hr"/>
		<territory type="HR"/>
	</identity>
</ldml>
PKpG[�x��##Locale/Data/ln_CD.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ln"/>
		<territory type="CD"/>
	</identity>
</ldml>
PKpG[S�>��Locale/Data/zh_Hant_HK.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.67 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="zh"/>
		<script type="Hant"/>
		<territory type="HK"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="it">意大利文</language>
			<language type="lol">蒙古語</language>
		</languages>
		<scripts>
			<script type="Hang">韓文字母</script>
			<script type="Kore">韓文</script>
		</scripts>
		<territories>
			<territory type="IT">意大利</territory>
			<territory type="TW">台灣</territory>
		</territories>
		<variants>
			<variant type="1901">傳統德國拼字法</variant>
			<variant type="1996">1996 德國拼字法</variant>
			<variant type="BISKE">San Giorgio/Bila 方言</variant>
			<variant type="NJIVA">Gniva/Njiva 方言</variant>
			<variant type="OSOJS">Oseacco/Osojane 方言</variant>
			<variant type="REVISED">已修訂拼字法</variant>
			<variant type="SCOTLAND">蘇格蘭標準英語</variant>
			<variant type="SOLBA">Stolvizza/Solbica 方言</variant>
		</variants>
		<measurementSystemNames>
			<measurementSystemName type="metric">十進制</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="chinese">
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMMMEd">M月d日E</dateFormatItem>
						<dateFormatItem id="yMEd">yyyy年M月d日,E</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy年M月d日EEEE</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy年M月d日</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>ahh:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1}{0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyyyM">yyyy/M</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">M月d日E至d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">M月d日至d日</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">ah至h時</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">ah:mm至ah:mmv</greatestDifference>
							<greatestDifference id="h">ah:mm至h:mmv</greatestDifference>
							<greatestDifference id="m">ah:mm至h:mmv</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">ah時至ah時v</greatestDifference>
							<greatestDifference id="h">ah至h時v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy年M月至M月</greatestDifference>
							<greatestDifference id="y">yy年M月至yy年M月</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yy年M月d日E至M月d日E</greatestDifference>
							<greatestDifference id="d">yy年M月d日E至d日E</greatestDifference>
							<greatestDifference id="y">yy年M月d日E至yy年M月d日E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy年M月d日至M月d日</greatestDifference>
							<greatestDifference id="d">yy年M月d日至d日</greatestDifference>
							<greatestDifference id="y">yy年M月d日至yy年M月d日</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<group>,</group>
			<list>;</list>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;(¤#,##0.00)</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AUD">
				<displayName>澳元</displayName>
			</currency>
			<currency type="BAD">
				<displayName>波斯尼亞-黑塞哥維那第納爾</displayName>
			</currency>
			<currency type="BAM">
				<displayName>波斯尼亞-黑塞哥維那可轉換馬克</displayName>
			</currency>
			<currency type="CAD">
				<displayName>加元</displayName>
			</currency>
			<currency type="HKD">
				<displayName>港元</displayName>
			</currency>
			<currency type="ITL">
				<displayName>意大利里拉</displayName>
			</currency>
			<currency type="NZD">
				<displayName>紐西蘭元</displayName>
			</currency>
			<currency type="RSD">
				<displayName>塞爾維亞第納爾</displayName>
			</currency>
			<currency type="SGD">
				<displayName>新加坡元</displayName>
			</currency>
			<currency type="TWD">
				<displayName>新台幣</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="hour">
			<unitPattern count="other">{0}時</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0}星期</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>是</yesstr>
			<nostr>否</nostr>
		</messages>
	</posix>
</ldml>

PKpG[h%�g##Locale/Data/ee_TG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.18 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="ee"/>
		<territory type="TG"/>
	</identity>
</ldml>
PKpG[R�xTeTeLocale/Data/eo.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.66 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="eo"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afara</language>
			<language type="ab">abĥaza</language>
			<language type="af">afrikansa</language>
			<language type="am">amhara</language>
			<language type="ar">araba</language>
			<language type="as">asama</language>
			<language type="ay">ajmara</language>
			<language type="az">azerbajĝana</language>
			<language type="ba">baŝkira</language>
			<language type="be">belorusa</language>
			<language type="bg">bulgara</language>
			<language type="bh">bihara</language>
			<language type="bi">bislamo</language>
			<language type="bn">bengala</language>
			<language type="bo">tibeta</language>
			<language type="br">bretona</language>
			<language type="bs">bosnia</language>
			<language type="ca">kataluna</language>
			<language type="co">korsika</language>
			<language type="cs">ĉeĥa</language>
			<language type="cy">kimra</language>
			<language type="da">dana</language>
			<language type="de">germana</language>
			<language type="dz">dzonko</language>
			<language type="el">greka</language>
			<language type="en">angla</language>
			<language type="eo">esperanto</language>
			<language type="es">hispana</language>
			<language type="et">estona</language>
			<language type="eu">eŭska</language>
			<language type="fa">persa</language>
			<language type="fi">finna</language>
			<language type="fil">filipina</language>
			<language type="fj">fiĝia</language>
			<language type="fo">feroa</language>
			<language type="fr">franca</language>
			<language type="fy">frisa</language>
			<language type="ga">irlanda</language>
			<language type="gd">gaela</language>
			<language type="gl">galega</language>
			<language type="gn">gvarania</language>
			<language type="gu">guĝarata</language>
			<language type="ha">haŭsa</language>
			<language type="he">hebrea</language>
			<language type="hi">hinda</language>
			<language type="hr">kroata</language>
			<language type="hu">hungara</language>
			<language type="hy">armena</language>
			<language type="ia">interlingvao</language>
			<language type="id">indonezia</language>
			<language type="ie">okcidentalo</language>
			<language type="ik">eskima</language>
			<language type="is">islanda</language>
			<language type="it">itala</language>
			<language type="iu">inuita</language>
			<language type="ja">japana</language>
			<language type="jv">java</language>
			<language type="ka">kartvela</language>
			<language type="kk">kazaĥa</language>
			<language type="kl">gronlanda</language>
			<language type="km">kmera</language>
			<language type="kn">kanara</language>
			<language type="ko">korea</language>
			<language type="ks">kaŝmira</language>
			<language type="ku">kurda</language>
			<language type="ky">kirgiza</language>
			<language type="la">latino</language>
			<language type="ln">lingala</language>
			<language type="lo">laŭa</language>
			<language type="lt">litova</language>
			<language type="lv">latva</language>
			<language type="mg">malagasa</language>
			<language type="mi">maoria</language>
			<language type="mk">makedona</language>
			<language type="ml">malajalama</language>
			<language type="mn">mongola</language>
			<language type="mr">marata</language>
			<language type="ms">malaja</language>
			<language type="mt">malta</language>
			<language type="my">birma</language>
			<language type="na">naura</language>
			<language type="ne">nepala</language>
			<language type="nl">nederlanda</language>
			<language type="nn">novnorvega</language>
			<language type="no">norvega</language>
			<language type="oc">okcitana</language>
			<language type="om">oroma</language>
			<language type="or">orijo</language>
			<language type="pa">panĝaba</language>
			<language type="pl">pola</language>
			<language type="ps">paŝtua</language>
			<language type="pt">portugala</language>
			<language type="pt_BR">brazilportugala</language>
			<language type="pt_PT">portugalportugala</language>
			<language type="qu">keĉua</language>
			<language type="rm">romanĉa</language>
			<language type="rn">burunda</language>
			<language type="ro">rumana</language>
			<language type="ru">rusa</language>
			<language type="rw">ruanda</language>
			<language type="sa">sanskrito</language>
			<language type="sd">sinda</language>
			<language type="sg">sangoa</language>
			<language type="sh">serbo-Kroata</language>
			<language type="si">sinhala</language>
			<language type="sk">slovaka</language>
			<language type="sl">slovena</language>
			<language type="sm">samoa</language>
			<language type="sn">ŝona</language>
			<language type="so">somala</language>
			<language type="sq">albana</language>
			<language type="sr">serba</language>
			<language type="ss">svazia</language>
			<language type="st">sota</language>
			<language type="su">sunda</language>
			<language type="sv">sveda</language>
			<language type="sw">svahila</language>
			<language type="ta">tamila</language>
			<language type="te">telugua</language>
			<language type="tg">taĝika</language>
			<language type="th">taja</language>
			<language type="ti">tigraja</language>
			<language type="tk">turkmena</language>
			<language type="tl">tagaloga</language>
			<language type="tlh">klingona</language>
			<language type="tn">cvana</language>
			<language type="to">tongaa</language>
			<language type="tr">turka</language>
			<language type="ts">conga</language>
			<language type="tt">tatara</language>
			<language type="tw">akana</language>
			<language type="ug">ujgura</language>
			<language type="uk">ukraina</language>
			<language type="ur">urduo</language>
			<language type="uz">uzbeka</language>
			<language type="vi">vjetnama</language>
			<language type="vo">volapuko</language>
			<language type="wo">volofa</language>
			<language type="xh">ksosa</language>
			<language type="yi">jida</language>
			<language type="yo">joruba</language>
			<language type="za">ĝuanga</language>
			<language type="zh">ĉina</language>
			<language type="zu">zulua</language>
		</languages>
		<territories>
			<territory type="AD">Andoro</territory>
			<territory type="AE">Unuiĝintaj Arabaj Emirlandos</territory>
			<territory type="AF">Afganujo</territory>
			<territory type="AG">Antigvo-Barbudo</territory>
			<territory type="AI">Angvilo</territory>
			<territory type="AL">Albanujo</territory>
			<territory type="AM">Armenujo</territory>
			<territory type="AN">Nederlandaj Antiloj</territory>
			<territory type="AO">Angolo</territory>
			<territory type="AQ">Antarkto</territory>
			<territory type="AR">Argentino</territory>
			<territory type="AT">Aŭstrujo</territory>
			<territory type="AU">Aŭstralio</territory>
			<territory type="AW">Arubo</territory>
			<territory type="AZ">Azerbajĝano</territory>
			<territory type="BA">Bosnio-Hercegovino</territory>
			<territory type="BB">Barbado</territory>
			<territory type="BD">Bangladeŝo</territory>
			<territory type="BE">Belgujo</territory>
			<territory type="BF">Burkino</territory>
			<territory type="BG">Bulgarujo</territory>
			<territory type="BH">Barejno</territory>
			<territory type="BI">Burundo</territory>
			<territory type="BJ">Benino</territory>
			<territory type="BM">Bermudoj</territory>
			<territory type="BN">Brunejo</territory>
			<territory type="BO">Bolivio</territory>
			<territory type="BR">Brazilo</territory>
			<territory type="BS">Bahamoj</territory>
			<territory type="BT">Butano</territory>
			<territory type="BW">Bocvano</territory>
			<territory type="BY">Belorusujo</territory>
			<territory type="BZ">Belizo</territory>
			<territory type="CA">Kanado</territory>
			<territory type="CF">Centr-Afrika Respubliko</territory>
			<territory type="CG">Kongolo</territory>
			<territory type="CH">Svisujo</territory>
			<territory type="CI">Ebur-Bordo</territory>
			<territory type="CK">Kukinsuloj</territory>
			<territory type="CL">Ĉilio</territory>
			<territory type="CM">Kameruno</territory>
			<territory type="CN">Ĉinujo</territory>
			<territory type="CO">Kolombio</territory>
			<territory type="CR">Kostariko</territory>
			<territory type="CS">Serbujo</territory>
			<territory type="CU">Kubo</territory>
			<territory type="CV">Kabo-Verdo</territory>
			<territory type="CY">Kipro</territory>
			<territory type="CZ">Ĉeĥujo</territory>
			<territory type="DE">Germanujo</territory>
			<territory type="DJ">Ĝibutio</territory>
			<territory type="DK">Danujo</territory>
			<territory type="DM">Dominiko</territory>
			<territory type="DO">Domingo</territory>
			<territory type="DZ">Alĝerio</territory>
			<territory type="EC">Ekvadoro</territory>
			<territory type="EE">Estonujo</territory>
			<territory type="EG">Egipto</territory>
			<territory type="EH">Okcidenta Saharo</territory>
			<territory type="ER">Eritreo</territory>
			<territory type="ES">Hispanujo</territory>
			<territory type="ET">Etiopujo</territory>
			<territory type="FI">Finnlando</territory>
			<territory type="FJ">Fiĝoj</territory>
			<territory type="FM">Mikronezio</territory>
			<territory type="FO">Ferooj</territory>
			<territory type="FR">Francujo</territory>
			<territory type="GA">Gabono</territory>
			<territory type="GB">Unuiĝinta Reĝlando</territory>
			<territory type="GD">Grenado</territory>
			<territory type="GE">Kartvelujo</territory>
			<territory type="GF">Franca Gviano</territory>
			<territory type="GH">Ganao</territory>
			<territory type="GI">Ĝibraltaro</territory>
			<territory type="GL">Gronlando</territory>
			<territory type="GM">Gambio</territory>
			<territory type="GN">Gvineo</territory>
			<territory type="GP">Gvadelupo</territory>
			<territory type="GQ">Ekvatora Gvineo</territory>
			<territory type="GR">Grekujo</territory>
			<territory type="GS">Sud-Georgio kaj Sud-Sandviĉinsuloj</territory>
			<territory type="GT">Gvatemalo</territory>
			<territory type="GU">Gvamo</territory>
			<territory type="GW">Gvineo-Bisaŭo</territory>
			<territory type="GY">Gujano</territory>
			<territory type="HM">Herda kaj Makdonaldaj Insuloj</territory>
			<territory type="HN">Honduro</territory>
			<territory type="HR">Kroatujo</territory>
			<territory type="HT">Haitio</territory>
			<territory type="HU">Hungarujo</territory>
			<territory type="ID">Indonezio</territory>
			<territory type="IE">Irlando</territory>
			<territory type="IL">Israelo</territory>
			<territory type="IN">Hindujo</territory>
			<territory type="IO">Brita Hindoceana Teritorio</territory>
			<territory type="IQ">Irako</territory>
			<territory type="IR">Irano</territory>
			<territory type="IS">Islando</territory>
			<territory type="IT">Italujo</territory>
			<territory type="JM">Jamajko</territory>
			<territory type="JO">Jordanio</territory>
			<territory type="JP">Japanujo</territory>
			<territory type="KE">Kenjo</territory>
			<territory type="KG">Kirgizistano</territory>
			<territory type="KH">Kamboĝo</territory>
			<territory type="KI">Kiribato</territory>
			<territory type="KM">Komoroj</territory>
			<territory type="KN">Sent-Kristofo kaj Neviso</territory>
			<territory type="KP">Nord-Koreo</territory>
			<territory type="KR">Sud-Koreo</territory>
			<territory type="KW">Kuvajto</territory>
			<territory type="KY">Kejmanoj</territory>
			<territory type="KZ">Kazaĥstano</territory>
			<territory type="LA">Laoso</territory>
			<territory type="LB">Libano</territory>
			<territory type="LC">Sent-Lucio</territory>
			<territory type="LI">Liĥtenŝtejno</territory>
			<territory type="LK">Sri-Lanko</territory>
			<territory type="LR">Liberio</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litovujo</territory>
			<territory type="LU">Luksemburgo</territory>
			<territory type="LV">Latvujo</territory>
			<territory type="LY">Libio</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavujo</territory>
			<territory type="MG">Madagaskaro</territory>
			<territory type="MH">Marŝaloj</territory>
			<territory type="MK">Makedonujo</territory>
			<territory type="ML">Malio</territory>
			<territory type="MM">Mjanmao</territory>
			<territory type="MN">Mongolujo</territory>
			<territory type="MP">Nord-Marianoj</territory>
			<territory type="MQ">Martiniko</territory>
			<territory type="MR">Maŭritanujo</territory>
			<territory type="MT">Malto</territory>
			<territory type="MU">Maŭricio</territory>
			<territory type="MV">Maldivoj</territory>
			<territory type="MW">Malavio</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malajzio</territory>
			<territory type="MZ">Mozambiko</territory>
			<territory type="NA">Namibio</territory>
			<territory type="NC">Nov-Kaledonio</territory>
			<territory type="NE">Niĝero</territory>
			<territory type="NF">Norfolkinsulo</territory>
			<territory type="NG">Niĝerio</territory>
			<territory type="NI">Nikaragvo</territory>
			<territory type="NL">Nederlando</territory>
			<territory type="NO">Norvegujo</territory>
			<territory type="NP">Nepalo</territory>
			<territory type="NR">Nauro</territory>
			<territory type="NU">Niuo</territory>
			<territory type="NZ">Nov-Zelando</territory>
			<territory type="OM">Omano</territory>
			<territory type="PA">Panamo</territory>
			<territory type="PE">Peruo</territory>
			<territory type="PF">Franca Polinezio</territory>
			<territory type="PG">Papuo-Nov-Gvineo</territory>
			<territory type="PH">Filipinoj</territory>
			<territory type="PK">Pakistano</territory>
			<territory type="PL">Pollando</territory>
			<territory type="PM">Sent-Piero kaj Mikelono</territory>
			<territory type="PN">Pitkarna Insulo</territory>
			<territory type="PR">Puerto-Riko</territory>
			<territory type="PT">Portugalujo</territory>
			<territory type="PW">Belaŭo</territory>
			<territory type="PY">Paragvajo</territory>
			<territory type="QA">Kataro</territory>
			<territory type="RE">Reunio</territory>
			<territory type="RO">Rumanujo</territory>
			<territory type="RU">Rusujo</territory>
			<territory type="RW">Ruando</territory>
			<territory type="SA">Saŭda Arabujo</territory>
			<territory type="SB">Salomonoj</territory>
			<territory type="SC">Sejŝeloj</territory>
			<territory type="SD">Sudano</territory>
			<territory type="SE">Svedujo</territory>
			<territory type="SG">Singapuro</territory>
			<territory type="SH">Sent-Heleno</territory>
			<territory type="SI">Slovenujo</territory>
			<territory type="SJ">Svalbardo kaj Jan-Majen-insulo</territory>
			<territory type="SK">Slovakujo</territory>
			<territory type="SL">Siera-Leono</territory>
			<territory type="SM">San-Marino</territory>
			<territory type="SN">Senegalo</territory>
			<territory type="SO">Somalujo</territory>
			<territory type="SR">Surinamo</territory>
			<territory type="ST">Sao-Tomeo kaj Principeo</territory>
			<territory type="SV">Salvadoro</territory>
			<territory type="SY">Sirio</territory>
			<territory type="SZ">Svazilando</territory>
			<territory type="TD">Ĉado</territory>
			<territory type="TG">Togolo</territory>
			<territory type="TH">Tajlando</territory>
			<territory type="TJ">Taĝikujo</territory>
			<territory type="TM">Turkmenujo</territory>
			<territory type="TN">Tunizio</territory>
			<territory type="TO">Tongo</territory>
			<territory type="TR">Turkujo</territory>
			<territory type="TT">Trinidado kaj Tobago</territory>
			<territory type="TV">Tuvalo</territory>
			<territory type="TW">Tajvano</territory>
			<territory type="TZ">Tanzanio</territory>
			<territory type="UA">Ukrajno</territory>
			<territory type="UG">Ugando</territory>
			<territory type="UM">Usonaj malgrandaj insuloj</territory>
			<territory type="US">Usono</territory>
			<territory type="UY">Urugvajo</territory>
			<territory type="UZ">Uzbekujo</territory>
			<territory type="VA">Vatikano</territory>
			<territory type="VC">Sent-Vincento kaj la Grenadinoj</territory>
			<territory type="VE">Venezuelo</territory>
			<territory type="VG">Britaj Virgulininsuloj</territory>
			<territory type="VI">Usonaj Virgulininsuloj</territory>
			<territory type="VN">Vjetnamo</territory>
			<territory type="VU">Vanuatuo</territory>
			<territory type="WF">Valiso kaj Futuno</territory>
			<territory type="WS">Samoo</territory>
			<territory type="YE">Jemeno</territory>
			<territory type="YT">Majoto</territory>
			<territory type="ZA">Sud-Afriko</territory>
			<territory type="ZM">Zambio</territory>
			<territory type="ZW">Zimbabvo</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-c ĉ d-g ĝ h ĥ i j ĵ k-p r s ŝ t u ŭ v z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
	</characters>
	<dates>
		<localizedPatternChars>GjMtkHmslTDUSnahKzJdugAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aŭg</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januaro</month>
							<month type="2">februaro</month>
							<month type="3">marto</month>
							<month type="4">aprilo</month>
							<month type="5">majo</month>
							<month type="6">junio</month>
							<month type="7">julio</month>
							<month type="8">aŭgusto</month>
							<month type="9">septembro</month>
							<month type="10">oktobro</month>
							<month type="11">novembro</month>
							<month type="12">decembro</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">di</day>
							<day type="mon">lu</day>
							<day type="tue">ma</day>
							<day type="wed">me</day>
							<day type="thu">ĵa</day>
							<day type="fri">ve</day>
							<day type="sat">sa</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">dimanĉo</day>
							<day type="mon">lundo</day>
							<day type="tue">mardo</day>
							<day type="wed">merkredo</day>
							<day type="thu">ĵaŭdo</day>
							<day type="fri">vendredo</day>
							<day type="sat">sabato</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1a kvaronjaro</quarter>
							<quarter type="2">2a kvaronjaro</quarter>
							<quarter type="3">3a kvaronjaro</quarter>
							<quarter type="4">4a kvaronjaro</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>atm</am>
				<pm>ptm</pm>
				<eras>
					<eraAbbr>
						<era type="0">aK</era>
						<era type="1">pK</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d-'a' 'de' MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy-MMMM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy-MMM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H-'a' 'horo' 'kaj' m:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM-dd - E, MMM-dd</greatestDifference>
							<greatestDifference id="d">E, MMM-dd - E, MMM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM-dd - MMM-dd</greatestDifference>
							<greatestDifference id="d">MMM-dd - MMM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yy-MM - yy-MM</greatestDifference>
							<greatestDifference id="y">yy-MM - yy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yy-MM-dd - E, yy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy-MMM - yyyy-MMM</greatestDifference>
							<greatestDifference id="y">yyyy-MMM - yyyy-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d-'a' 'de' MMM - E, d-'a' 'de' MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d-'a' - E, d-'a' 'de' MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d-'a' 'de' MMM yyyy - E, d-'a' 'de' MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy-MMM-dd - yyyy-MMM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MMM-dd - yyyy-MMM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MMM-dd - yyyy-MMM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="d">yy-MM-dd - yy-MM-dd</greatestDifference>
							<greatestDifference id="y">yy-MM-dd - yy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
	</numbers>
</ldml>
PKpG[�/z�OOLocale/Data/zh_TW.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<territory type="TW"/>
	</identity>
	<alias source="zh_Hant_TW" path="//ldml"/>
</ldml>
PKpG[L�Y""Locale/Data/uz_Cyrl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="uz"/>
		<script type="Cyrl"/>
	</identity>
</ldml>
PKpG[C�����Locale/Data/af_NA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.19 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="af"/>
		<territory type="NA"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy-MM-dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<availableFormats>
						<dateFormatItem id="MMdd">MM-dd</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy-MM</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[���j;;Locale/Data/ku_Latn_TR.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.10 $"/>
		<generation date="$Date: 2008/05/28 15:49:33 $"/>
		<language type="ku"/>
		<script type="Latn"/>
		<territory type="TR"/>
	</identity>
</ldml>
PKpG[�:[�;;Locale/Data/kk.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="kk"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">бур</language>
			<language type="am">амхар</language>
			<language type="ar">арабша</language>
			<language type="as">ассам</language>
			<language type="be">беларус</language>
			<language type="bg">болгар</language>
			<language type="bh">бихари</language>
			<language type="bn">бенгал</language>
			<language type="br">брит</language>
			<language type="bs">босния</language>
			<language type="ca">каталан</language>
			<language type="cs">чех</language>
			<language type="cy">валлий</language>
			<language type="da">дат</language>
			<language type="de">неміс</language>
			<language type="el">грек</language>
			<language type="en">ағылшын</language>
			<language type="eo">эсперанто</language>
			<language type="es">испан</language>
			<language type="et">эстон</language>
			<language type="eu">баск</language>
			<language type="fa">парсы</language>
			<language type="fi">фин</language>
			<language type="fil">пилипино</language>
			<language type="fo">фарер</language>
			<language type="fr">француз</language>
			<language type="fy">фрис</language>
			<language type="ga">ирландша</language>
			<language type="gd">Солтүстік Шотландия</language>
			<language type="gl">галицияша</language>
			<language type="gn">гуарани</language>
			<language type="gu">гуджарати</language>
			<language type="he">иврит</language>
			<language type="hi">хинди</language>
			<language type="hr">хорват</language>
			<language type="hu">мадьяр</language>
			<language type="hy">армян</language>
			<language type="ia">интерлингва</language>
			<language type="id">индонезия</language>
			<language type="ie">интерлингве</language>
			<language type="is">исланд</language>
			<language type="it">италиян</language>
			<language type="ja">жапон</language>
			<language type="jv">ява</language>
			<language type="ka">грузин</language>
			<language type="kk">Қазақ</language>
			<language type="km">камбоджия</language>
			<language type="kn">каннада</language>
			<language type="ko">кәріс</language>
			<language type="ku">күрд</language>
			<language type="ky">қырғыз</language>
			<language type="la">латын</language>
			<language type="ln">лингала</language>
			<language type="lo">лаос</language>
			<language type="lt">литва</language>
			<language type="lv">латыш</language>
			<language type="mk">македон</language>
			<language type="ml">малайялам</language>
			<language type="mn">монғол</language>
			<language type="mr">маратхи</language>
			<language type="ms">малай</language>
			<language type="mt">мальта</language>
			<language type="ne">непал</language>
			<language type="nl">голланд</language>
			<language type="no">норвег</language>
			<language type="oc">окситан</language>
			<language type="or">ория</language>
			<language type="pa">панджаб</language>
			<language type="pl">поляк</language>
			<language type="ps">пашто</language>
			<language type="pt">португал</language>
			<language type="ro">румын</language>
			<language type="ru">орыс</language>
			<language type="sa">санскрит</language>
			<language type="sd">синдхи</language>
			<language type="sh">сербхорват</language>
			<language type="si">сингал</language>
			<language type="sk">словак</language>
			<language type="sl">словен</language>
			<language type="so">сомали</language>
			<language type="sq">албан</language>
			<language type="sr">серб</language>
			<language type="st">сесото</language>
			<language type="su">судан</language>
			<language type="sv">швед</language>
			<language type="sw">суахили</language>
			<language type="ta">тамил</language>
			<language type="te">телугу</language>
			<language type="th">тай</language>
			<language type="ti">тигринья</language>
			<language type="tk">түркмен</language>
			<language type="tlh">клингон</language>
			<language type="tr">түрікше</language>
			<language type="tw">тви</language>
			<language type="ug">ұйғыр</language>
			<language type="uk">украин</language>
			<language type="ur">урду</language>
			<language type="uz">өзбек</language>
			<language type="vi">вьетнам</language>
			<language type="xh">хоса</language>
			<language type="yi">идиш</language>
			<language type="zu">зулус</language>
		</languages>
		<territories>
			<territory type="KZ">Қазақстан</territory>
			<territory type="TO">Тонга</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[а ә б-е ё ж-й і к қ л-н ң о-у ұ ү ф-я]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[һ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">қаң.</month>
							<month type="2">ақп.</month>
							<month type="3">нау.</month>
							<month type="4">сәу.</month>
							<month type="5">мам.</month>
							<month type="6">мау.</month>
							<month type="7">шіл.</month>
							<month type="8">там.</month>
							<month type="9">қыр.</month>
							<month type="10">қаз.</month>
							<month type="11">қар.</month>
							<month type="12">желт.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">қаңтар</month>
							<month type="2">ақпан</month>
							<month type="3">наурыз</month>
							<month type="4">сәуір</month>
							<month type="5">мамыр</month>
							<month type="6">маусым</month>
							<month type="7">шілде</month>
							<month type="8">тамыз</month>
							<month type="9">қыркүйек</month>
							<month type="10">қазан</month>
							<month type="11">қараша</month>
							<month type="12">желтоқсан</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">жс.</day>
							<day type="mon">дс.</day>
							<day type="tue">сс.</day>
							<day type="wed">ср.</day>
							<day type="thu">бс.</day>
							<day type="fri">жм.</day>
							<day type="sat">сһ.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">жексені</day>
							<day type="mon">дуйсенбі</day>
							<day type="tue">сейсенбі</day>
							<day type="wed">сәренбі</day>
							<day type="thu">бейсенбі</day>
							<day type="fri">жұма</day>
							<day type="sat">сенбі</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d MMMM yyyy 'ж'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy 'ж'.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy 'ж'.</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy 'ж'.</greatestDifference>
							<greatestDifference id="y">MMM yyyy 'ж'. - MMM yyyy 'ж'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM yyyy 'ж'.</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM yyyy 'ж'.</greatestDifference>
							<greatestDifference id="y">E, d MMM yyyy 'ж'. - E, d MMM yyyy 'ж'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy 'ж'.</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy 'ж'.</greatestDifference>
							<greatestDifference id="y">d MMM yyyy 'ж'. - d MMM yyyy 'ж'.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="KZT">
				<symbol>тңг.</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Unknown or Invalid Currency</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>иә:и</yesstr>
			<nostr>жоқ:ж</nostr>
		</messages>
	</posix>
</ldml>
PKpG[Sm����Locale/Data/ve.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:37 $"/>
		<language type="ve"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ve">Tshivenḓa</language>
		</languages>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a b d ḓ e-i k l ḽ m n ṅ ṋ o p r-t ṱ u-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[c j q]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Pha</month>
							<month type="2">Luh</month>
							<month type="3">Ṱha</month>
							<month type="4">Lam</month>
							<month type="5">Shu</month>
							<month type="6">Lwi</month>
							<month type="7">Lwa</month>
							<month type="8">Ṱha</month>
							<month type="9">Khu</month>
							<month type="10">Tsh</month>
							<month type="11">Ḽar</month>
							<month type="12">Nye</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Phando</month>
							<month type="2">Luhuhi</month>
							<month type="3">Ṱhafamuhwe</month>
							<month type="4">Lambamai</month>
							<month type="5">Shundunthule</month>
							<month type="6">Fulwi</month>
							<month type="7">Fulwana</month>
							<month type="8">Ṱhangule</month>
							<month type="9">Khubvumedzi</month>
							<month type="10">Tshimedzi</month>
							<month type="11">Ḽara</month>
							<month type="12">Nyendavhusiku</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Swo</day>
							<day type="mon">Mus</day>
							<day type="tue">Vhi</day>
							<day type="wed">Rar</day>
							<day type="thu">Ṋa</day>
							<day type="fri">Ṱan</day>
							<day type="sat">Mug</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Swondaha</day>
							<day type="mon">Musumbuluwo</day>
							<day type="tue">Ḽavhuvhili</day>
							<day type="wed">Ḽavhuraru</day>
							<day type="thu">Ḽavhuṋa</day>
							<day type="fri">Ḽavhuṱanu</day>
							<day type="sat">Mugivhela</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Kotara ya u thoma</quarter>
							<quarter type="2">Kotara ya vhuvhili</quarter>
							<quarter type="3">Kotara ya vhuraru</quarter>
							<quarter type="4">Kotara ya vhuṋa</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraNames>
					<eraAbbr>
						<era type="0">BC</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ZAR">
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�BT��*�*Locale/Data/rw.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.20 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="rw"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Ikinyafurikaneri</language>
			<language type="am">Inyamuhariki</language>
			<language type="ar">Icyarabu</language>
			<language type="as">Icyasamizi</language>
			<language type="az">Inyazeribayijani</language>
			<language type="be">Ikibelarusiya</language>
			<language type="bg">Urunyabuligariya</language>
			<language type="bh">Inyebihari</language>
			<language type="bn">Ikibengali</language>
			<language type="br">Inyebiritoni</language>
			<language type="bs">Inyebosiniya</language>
			<language type="ca">Igikatalani</language>
			<language type="cs">Igiceke</language>
			<language type="cy">Ikigaluwa</language>
			<language type="da">Ikidaninwa</language>
			<language type="de">Ikidage</language>
			<language type="el">Ikigereki</language>
			<language type="en">Icyongereza</language>
			<language type="eo">Icyesiperanto</language>
			<language type="es">Icyesipanyolo</language>
			<language type="et">Icyesitoniya</language>
			<language type="eu">Ikibasiki</language>
			<language type="fa">Inyeperisi</language>
			<language type="fi">Igifinilande</language>
			<language type="fil">Ikinyafilipine</language>
			<language type="fo">Inyefaroyizi</language>
			<language type="fr">Igifaransa</language>
			<language type="fy">Igifiriziyani</language>
			<language type="ga">Ikirilandi</language>
			<language type="gd">Ikigaluwa cy'Igisweduwa</language>
			<language type="gl">Ikigalisiya</language>
			<language type="gn">Inyaguwarani</language>
			<language type="gu">Inyegujarati</language>
			<language type="he">Igiheburayo</language>
			<language type="hi">Igihindi</language>
			<language type="hr">Igikorowasiya</language>
			<language type="hu">Igihongiriya</language>
			<language type="hy">Ikinyarumeniya</language>
			<language type="ia">Ururimi Gahuzamiryango</language>
			<language type="id">Ikinyendoziya</language>
			<language type="ie">Uruhuzandimi</language>
			<language type="is">Igisilande</language>
			<language type="it">Igitaliyani</language>
			<language type="ja">Ikiyapani</language>
			<language type="jv">Inyejava</language>
			<language type="ka">Inyejeworujiya</language>
			<language type="km">Igikambodiya</language>
			<language type="kn">Igikanada</language>
			<language type="ko">Igikoreya</language>
			<language type="ku">Inyekuridishi</language>
			<language type="ky">Inkerigizi</language>
			<language type="la">Ikilatini</language>
			<language type="ln">Ilingala</language>
			<language type="lo">Ikilawotiyani</language>
			<language type="lt">Ikilituwaniya</language>
			<language type="lv">Ikinyaletoviyani</language>
			<language type="mk">Ikimasedoniyani</language>
			<language type="ml">Ikimalayalami</language>
			<language type="mn">Ikimongoli</language>
			<language type="mr">Ikimarati</language>
			<language type="ms">Ikimalayi</language>
			<language type="mt">Ikimaliteze</language>
			<language type="ne">Ikinepali</language>
			<language type="nl">Ikinerilande</language>
			<language type="nn">Inyenoruveji (Nyonorusiki)</language>
			<language type="no">Ikinoruveji</language>
			<language type="oc">Inyogusitani</language>
			<language type="or">Inyoriya</language>
			<language type="pa">Igipunjabi</language>
			<language type="pl">Igipolone</language>
			<language type="ps">Impashito</language>
			<language type="pt">Igiporutugali</language>
			<language type="pt_BR">Inyeporutigali (Brezili)</language>
			<language type="pt_PT">Inyeporutigali (Igiporutigali)</language>
			<language type="ro">Ikinyarumaniya</language>
			<language type="ru">Ikirusiya</language>
			<language type="sa">Igisansikiri</language>
			<language type="sd">Igisindi</language>
			<language type="sh">Inyeseribiya na Korowasiya</language>
			<language type="si">Inyesimpaleze</language>
			<language type="sk">Igisilovaki</language>
			<language type="sl">Ikinyasiloveniya</language>
			<language type="so">Igisomali</language>
			<language type="sq">Icyalubaniya</language>
			<language type="sr">Igiseribe</language>
			<language type="st">Inyesesoto</language>
			<language type="su">Inyesudani</language>
			<language type="sv">Igisuweduwa</language>
			<language type="sw">Igiswahili</language>
			<language type="ta">Igitamili</language>
			<language type="te">Igitelugu</language>
			<language type="th">Igitayi</language>
			<language type="ti">Inyatigirinya</language>
			<language type="tk">Inyeturukimeni</language>
			<language type="tlh">Inyekilingoni</language>
			<language type="tr">Igiturukiya</language>
			<language type="tw">Inyetuwi</language>
			<language type="ug">Ikiwiguri</language>
			<language type="uk">Ikinyayukereni</language>
			<language type="ur">Inyeyurudu</language>
			<language type="uz">Inyeyuzubeki</language>
			<language type="vi">Ikinyaviyetinamu</language>
			<language type="xh">Inyehawusa</language>
			<language type="yi">Inyeyidishi</language>
			<language type="zu">Inyezulu</language>
		</languages>
		<territories>
			<territory type="TO">Igitonga</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>«</alternateQuotationStart>
		<alternateQuotationEnd>»</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">mut.</month>
							<month type="2">gas.</month>
							<month type="3">wer.</month>
							<month type="4">mat.</month>
							<month type="5">gic.</month>
							<month type="6">kam.</month>
							<month type="7">nya.</month>
							<month type="8">kan.</month>
							<month type="9">nze.</month>
							<month type="10">ukw.</month>
							<month type="11">ugu.</month>
							<month type="12">uku.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Mutarama</month>
							<month type="2">Gashyantare</month>
							<month type="3">Werurwe</month>
							<month type="4">Mata</month>
							<month type="5">Gicuransi</month>
							<month type="6">Kamena</month>
							<month type="7">Nyakanga</month>
							<month type="8">Kanama</month>
							<month type="9">Nzeli</month>
							<month type="10">Ukwakira</month>
							<month type="11">Ugushyingo</month>
							<month type="12">Ukuboza</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">cyu.</day>
							<day type="mon">mbe.</day>
							<day type="tue">kab.</day>
							<day type="wed">gtu.</day>
							<day type="thu">kan.</day>
							<day type="fri">gnu.</day>
							<day type="sat">gnd.</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Ku cyumweru</day>
							<day type="mon">Kuwa mbere</day>
							<day type="tue">Kuwa kabiri</day>
							<day type="wed">Kuwa gatatu</day>
							<day type="thu">Kuwa kane</day>
							<day type="fri">Kuwa gatanu</day>
							<day type="sat">Kuwa gatandatu</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">I1</quarter>
							<quarter type="2">I2</quarter>
							<quarter type="3">I3</quarter>
							<quarter type="4">I4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">igihembwe cya mbere</quarter>
							<quarter type="2">igihembwe cya kabiri</quarter>
							<quarter type="3">igihembwe cya gatatu</quarter>
							<quarter type="4">igihembwe cya kane</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencies>
			<currency type="RWF">
				<symbol>F</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[!����Locale/Data/hu.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.104 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="hu"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>, </localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abház</language>
			<language type="ace">achinéz</language>
			<language type="ach">akoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adyghe</language>
			<language type="ae">avesztán</language>
			<language type="af">afrikaans</language>
			<language type="afa">afroázsiai nyelv</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">akkád</language>
			<language type="ale">aleut</language>
			<language type="alg">algonkin nyelv</language>
			<language type="alt">dél-altaji</language>
			<language type="am">amhara</language>
			<language type="an">aragonéz</language>
			<language type="ang">óangol</language>
			<language type="anp">angika</language>
			<language type="apa">apacs nyelvek</language>
			<language type="ar">arab</language>
			<language type="arc">arámi</language>
			<language type="arn">araucani</language>
			<language type="arp">arapaho</language>
			<language type="art">mesterséges nyelv</language>
			<language type="arw">aravak</language>
			<language type="as">asszámi</language>
			<language type="ast">asztúr</language>
			<language type="ath">atapaszkan nyelvek</language>
			<language type="aus">ausztrál nyelvek</language>
			<language type="av">avar</language>
			<language type="awa">awádi</language>
			<language type="ay">ajmara</language>
			<language type="az">azerbajdzsáni</language>
			<language type="ba">baskír</language>
			<language type="bad">banda</language>
			<language type="bai">bamileke nyelvek</language>
			<language type="bal">balucsi</language>
			<language type="ban">balinéz</language>
			<language type="bas">basza</language>
			<language type="bat">balti nyelv</language>
			<language type="be">belorusz</language>
			<language type="bej">bedzsa</language>
			<language type="bem">bemba</language>
			<language type="ber">berber</language>
			<language type="bg">bolgár</language>
			<language type="bh">bihari</language>
			<language type="bho">bodzspuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengáli</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibeti</language>
			<language type="br">breton</language>
			<language type="bra">braj</language>
			<language type="bs">bosnyák</language>
			<language type="btk">batak</language>
			<language type="bua">burját</language>
			<language type="bug">buginéz</language>
			<language type="byn">blin</language>
			<language type="ca">katalán</language>
			<language type="cad">caddo</language>
			<language type="cai">egyéb közép-amerikai indián</language>
			<language type="car">karib</language>
			<language type="cau">egyéb kaukázusi</language>
			<language type="cch">atszam</language>
			<language type="ce">csecsen</language>
			<language type="ceb">cebui</language>
			<language type="cel">egyéb kelta</language>
			<language type="ch">csamoro</language>
			<language type="chb">csibcsa</language>
			<language type="chg">csagatáj</language>
			<language type="chk">csukéz</language>
			<language type="chm">mari</language>
			<language type="chn">csinuk zsargon</language>
			<language type="cho">csoktó</language>
			<language type="chp">csipevé</language>
			<language type="chr">cseroki</language>
			<language type="chy">csejen</language>
			<language type="cmc">csam nyelv</language>
			<language type="co">korzikai</language>
			<language type="cop">kopt</language>
			<language type="cpe">egyéb angol alapú kreol és pidgin</language>
			<language type="cpf">egyéb francia alapú kreol és pidgin</language>
			<language type="cpp">portugál alapú kreol vagy pidgin</language>
			<language type="cr">krí</language>
			<language type="crh">krími tatár</language>
			<language type="crp">kreol és pidzsin</language>
			<language type="cs">cseh</language>
			<language type="csb">kasub</language>
			<language type="cu">egyházi szláv</language>
			<language type="cus">kusita nyelv</language>
			<language type="cv">csuvas</language>
			<language type="cy">walesi</language>
			<language type="da">dán</language>
			<language type="dak">dakota</language>
			<language type="dar">dargva</language>
			<language type="day">dajak</language>
			<language type="de">német</language>
			<language type="de_AT">osztrák német</language>
			<language type="de_CH">svájci felnémet</language>
			<language type="del">delavár</language>
			<language type="den">szlevi</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">egyéb dravida</language>
			<language type="dsb">alsó szorb</language>
			<language type="dua">duala</language>
			<language type="dum">közép holland</language>
			<language type="dv">divehi</language>
			<language type="dyu">diula</language>
			<language type="dz">butáni</language>
			<language type="ee">eve</language>
			<language type="efi">efik</language>
			<language type="egy">óegyiptomi</language>
			<language type="eka">ekadzsuk</language>
			<language type="el">görög</language>
			<language type="elx">elamit</language>
			<language type="en">angol</language>
			<language type="en_AU">ausztrál angol</language>
			<language type="en_CA">kanadai angol</language>
			<language type="en_GB">brit angol</language>
			<language type="en_US">amerikai angol</language>
			<language type="enm">közép angol</language>
			<language type="eo">eszperantó</language>
			<language type="es">spanyol</language>
			<language type="es_419">latin-amerikai spanyol</language>
			<language type="es_ES">ibériai spanyol</language>
			<language type="et">észt</language>
			<language type="eu">baszk</language>
			<language type="ewo">evondo</language>
			<language type="fa">perzsa</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fulani</language>
			<language type="fi">finn</language>
			<language type="fil">filippínó</language>
			<language type="fiu">finnugor nyelv</language>
			<language type="fj">fidzsi</language>
			<language type="fo">feröeri</language>
			<language type="fon">fon</language>
			<language type="fr">francia</language>
			<language type="fr_CA">kanadai francia</language>
			<language type="fr_CH">svájci francia</language>
			<language type="frm">közép francia</language>
			<language type="fro">ófrancia</language>
			<language type="frr">északi fríz</language>
			<language type="frs">keleti fríz</language>
			<language type="fur">friuli</language>
			<language type="fy">fríz</language>
			<language type="ga">ír</language>
			<language type="gaa">ga</language>
			<language type="gay">gajo</language>
			<language type="gba">gbaja</language>
			<language type="gd">skót gael</language>
			<language type="gem">germán nyelv</language>
			<language type="gez">geez</language>
			<language type="gil">ikiribati</language>
			<language type="gl">galíciai</language>
			<language type="gmh">közép felső német</language>
			<language type="gn">guarani</language>
			<language type="goh">ófelső német</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gót</language>
			<language type="grb">grebo</language>
			<language type="grc">ógörög</language>
			<language type="gsw">svájci német</language>
			<language type="gu">gudzsarati</language>
			<language type="gv">Man-szigeti</language>
			<language type="gwi">gvicsin</language>
			<language type="ha">hausza</language>
			<language type="hai">haida</language>
			<language type="haw">hawaii</language>
			<language type="he">héber</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligajnon</language>
			<language type="him">himaháli</language>
			<language type="hit">hittite</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">horvát</language>
			<language type="hsb">felső szorb</language>
			<language type="ht">haiti</language>
			<language type="hu">magyar</language>
			<language type="hup">hupa</language>
			<language type="hy">örmény</language>
			<language type="hz">herero</language>
			<language type="ia">interlingva</language>
			<language type="iba">iban</language>
			<language type="id">indonéz</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">szecsuán ji</language>
			<language type="ijo">idzso</language>
			<language type="ik">inupiak</language>
			<language type="ilo">iloko</language>
			<language type="inc">egyéb indiai</language>
			<language type="ine">indoeurópai nyelv</language>
			<language type="inh">ingus</language>
			<language type="io">ido</language>
			<language type="ira">iráni</language>
			<language type="iro">irokéz nyelvek</language>
			<language type="is">izlandi</language>
			<language type="it">olasz</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japán</language>
			<language type="jbo">lojban</language>
			<language type="jpr">zsidó-perzsa</language>
			<language type="jrb">zsidó-arab</language>
			<language type="jv">jávai</language>
			<language type="ka">grúz</language>
			<language type="kaa">kara-kalpak</language>
			<language type="kab">kabije</language>
			<language type="kac">kacsin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardi</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongo</language>
			<language type="kha">kaszi</language>
			<language type="khi">egyéb koiszan</language>
			<language type="kho">kotanéz</language>
			<language type="ki">kikuju</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kazah</language>
			<language type="kl">grönlandi</language>
			<language type="km">kambodzsai</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">koreai</language>
			<language type="kok">konkani</language>
			<language type="kos">kosrei</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karacsáj-balkár</language>
			<language type="krl">karelai</language>
			<language type="kro">kru</language>
			<language type="kru">kuruh</language>
			<language type="ks">kásmíri</language>
			<language type="ku">kurd</language>
			<language type="kum">kumük</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">korni</language>
			<language type="ky">kirgiz</language>
			<language type="la">latin</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburgi</language>
			<language type="lez">lezg</language>
			<language type="lg">ganda</language>
			<language type="li">limburgi</language>
			<language type="ln">lingala</language>
			<language type="lo">laoszi</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">litván</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseno</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">lett</language>
			<language type="mad">madurai</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">makaszar</language>
			<language type="man">mandingo</language>
			<language type="map">ausztronéz</language>
			<language type="mas">masai</language>
			<language type="mdf">moksán</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">málgas</language>
			<language type="mga">közép ír</language>
			<language type="mh">marshalli</language>
			<language type="mi">maori</language>
			<language type="mic">mikmak</language>
			<language type="min">minangkabau</language>
			<language type="mis">egyéb nyelvek</language>
			<language type="mk">macedón</language>
			<language type="mkh">egyéb mon-khmer</language>
			<language type="ml">malajálam</language>
			<language type="mn">mongol</language>
			<language type="mnc">mandzsu</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobo nyelv</language>
			<language type="mo">moldvai</language>
			<language type="moh">mohawk</language>
			<language type="mos">moszi</language>
			<language type="mr">marathi</language>
			<language type="ms">maláj</language>
			<language type="mt">máltai</language>
			<language type="mul">többszörös nyelvek</language>
			<language type="mun">munda nyelvek</language>
			<language type="mus">krík</language>
			<language type="mwl">mirandéz</language>
			<language type="mwr">marvari</language>
			<language type="my">burmai</language>
			<language type="myn">maja nyelvek</language>
			<language type="myv">erzjány</language>
			<language type="na">naurui</language>
			<language type="nah">nahuati</language>
			<language type="nai">észak-amerikai indián nyelv</language>
			<language type="nap">nápolyi</language>
			<language type="nb">norvég bokmál</language>
			<language type="nd">északi ndebele</language>
			<language type="nds">alsónémet</language>
			<language type="ne">nepáli</language>
			<language type="new">nevari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">niger-kordofan nyelv</language>
			<language type="niu">niui</language>
			<language type="nl">holland</language>
			<language type="nl_BE">flamand</language>
			<language type="nn">norvég nynorsk</language>
			<language type="no">norvég</language>
			<language type="nog">nogaj</language>
			<language type="non">óskandináv</language>
			<language type="nqo">n'ko</language>
			<language type="nr">déli ndebele</language>
			<language type="nso">északi szoto</language>
			<language type="nub">núbiai nyelv</language>
			<language type="nv">navaho</language>
			<language type="nwc">klasszikus newari</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamvézi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">okszitán</language>
			<language type="oj">ojibva</language>
			<language type="om">oromói</language>
			<language type="or">orija</language>
			<language type="os">oszét</language>
			<language type="osa">osage</language>
			<language type="ota">ottomán török</language>
			<language type="oto">otomi nyelv</language>
			<language type="pa">pandzsábi</language>
			<language type="paa">pápuai nyelv</language>
			<language type="pag">pangaszinan</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampangan</language>
			<language type="pap">papiamento</language>
			<language type="pau">palaui</language>
			<language type="peo">óperzsa</language>
			<language type="phi">Fülöp-szigeteki nyelv</language>
			<language type="phn">főniciai</language>
			<language type="pi">pali</language>
			<language type="pl">lengyel</language>
			<language type="pon">pohnpei</language>
			<language type="pra">prakrit nyelvek</language>
			<language type="pro">óprovánszi</language>
			<language type="ps">pastu</language>
			<language type="pt">portugál</language>
			<language type="pt_BR">brazíliai portugál</language>
			<language type="pt_PT">ibériai portugál</language>
			<language type="qu">kecsua</language>
			<language type="raj">radzsasztáni</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongai</language>
			<language type="rm">réto-román</language>
			<language type="rn">kirundi</language>
			<language type="ro">román</language>
			<language type="roa">román nyelv</language>
			<language type="rom">roma</language>
			<language type="root">ősi</language>
			<language type="ru">orosz</language>
			<language type="rup">aromán</language>
			<language type="rw">kiruanda</language>
			<language type="sa">szanszkrit</language>
			<language type="sad">szandave</language>
			<language type="sah">jakut</language>
			<language type="sai">dél-amerikai indián nyelv</language>
			<language type="sal">szelis nyelv</language>
			<language type="sam">szamaritánus arámi</language>
			<language type="sas">sasak</language>
			<language type="sat">szantáli</language>
			<language type="sc">szardíniai</language>
			<language type="scn">szicíliai</language>
			<language type="sco">skót</language>
			<language type="sd">szindhi</language>
			<language type="se">északi számi</language>
			<language type="sel">szölkup</language>
			<language type="sem">egyéb szemita</language>
			<language type="sg">sango</language>
			<language type="sga">óír</language>
			<language type="sgn">jelnyelv</language>
			<language type="sh">szerbhorvát</language>
			<language type="shn">san</language>
			<language type="si">szingaléz</language>
			<language type="sid">szidamó</language>
			<language type="sio">sziú nyelvek</language>
			<language type="sit">sinotibeti nyelv</language>
			<language type="sk">szlovák</language>
			<language type="sl">szlovén</language>
			<language type="sla">szláv nyelv</language>
			<language type="sm">szamoai</language>
			<language type="sma">déli számi</language>
			<language type="smi">számi nyelv</language>
			<language type="smj">lule számi</language>
			<language type="smn">inar sami</language>
			<language type="sms">skolt számi</language>
			<language type="sn">sona</language>
			<language type="snk">szoninke</language>
			<language type="so">szomáliai</language>
			<language type="sog">sogdien</language>
			<language type="son">szongai</language>
			<language type="sq">albán</language>
			<language type="sr">szerb</language>
			<language type="srn">sranai tongo</language>
			<language type="srr">szerer</language>
			<language type="ss">sziszuati</language>
			<language type="ssa">nílusi-szaharai nyelv</language>
			<language type="st">szeszotó</language>
			<language type="su">szundanéz</language>
			<language type="suk">szukuma</language>
			<language type="sus">szuszu</language>
			<language type="sux">sumér</language>
			<language type="sv">svéd</language>
			<language type="sw">szuahéli</language>
			<language type="syc">klasszikus szír</language>
			<language type="syr">szíriai</language>
			<language type="ta">tamil</language>
			<language type="tai">thai nyelv</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetum</language>
			<language type="tg">tadzsik</language>
			<language type="th">thai</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">türkmén</language>
			<language type="tkl">tokelaui</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamasek</language>
			<language type="tn">szecsuáni</language>
			<language type="to">tonga</language>
			<language type="tog">nyasa tonga</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">török</language>
			<language type="ts">conga</language>
			<language type="tsi">csimsiáni</language>
			<language type="tt">tatár</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupi nyelv</language>
			<language type="tut">altáji nyelv</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">twi</language>
			<language type="ty">tahiti</language>
			<language type="tyv">tuvai</language>
			<language type="udm">udmurt</language>
			<language type="ug">ujgur</language>
			<language type="uga">ugariti</language>
			<language type="uk">ukrán</language>
			<language type="umb">umbundu</language>
			<language type="und">ismeretlen vagy érvénytelen nyelv</language>
			<language type="ur">urdu</language>
			<language type="uz">üzbég</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnámi</language>
			<language type="vo">volapük</language>
			<language type="vot">votják</language>
			<language type="wa">vallon</language>
			<language type="wak">vakas nyelv</language>
			<language type="wal">valamo</language>
			<language type="war">varaó</language>
			<language type="was">vaso</language>
			<language type="wen">szorb nyelvek</language>
			<language type="wo">volof</language>
			<language type="xal">kalmük</language>
			<language type="xh">hosza</language>
			<language type="yao">jaó</language>
			<language type="yap">japi</language>
			<language type="yi">jiddis</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupik nyelv</language>
			<language type="za">zsuang</language>
			<language type="zap">zapoték</language>
			<language type="zbl">Bliss jelképrendszer</language>
			<language type="zen">zenaga</language>
			<language type="zh">kínai</language>
			<language type="zh_Hans">egyszerűsített kínai</language>
			<language type="zh_Hant">hagyományos kínai</language>
			<language type="znd">zande</language>
			<language type="zu">zulu</language>
			<language type="zun">zuni</language>
			<language type="zxx">nincs nyelvészeti tartalom</language>
			<language type="zza">zaza</language>
		</languages>
		<scripts>
			<script type="Arab">Arab</script>
			<script type="Armi">Arámi</script>
			<script type="Armn">Örmény</script>
			<script type="Avst">Avesztán</script>
			<script type="Bali">Balinéz</script>
			<script type="Batk">Batak</script>
			<script type="Beng">Bengáli</script>
			<script type="Blis">Bliss jelképrendszer</script>
			<script type="Bopo">Bopomofo</script>
			<script type="Brah">Brámi</script>
			<script type="Brai">Vakírás</script>
			<script type="Bugi">Buginéz</script>
			<script type="Buhd">Buhid</script>
			<script type="Cakm">Csakma</script>
			<script type="Cans">Egyesített kanadai őslakos jelek</script>
			<script type="Cari">Kari</script>
			<script type="Cham">Csám</script>
			<script type="Cher">Cseroki</script>
			<script type="Cirt">Cirt</script>
			<script type="Copt">Kopt</script>
			<script type="Cprt">Ciprusi</script>
			<script type="Cyrl">Cirill</script>
			<script type="Cyrs">Óegyházi szláv cirill</script>
			<script type="Deva">Devanagári</script>
			<script type="Dsrt">Deseret</script>
			<script type="Egyd">Egyiptomi demotikus</script>
			<script type="Egyh">Egyiptomi hieratikus</script>
			<script type="Egyp">Egyiptomi hieroglifák</script>
			<script type="Ethi">Etióp</script>
			<script type="Geok">Grúz kucsuri</script>
			<script type="Geor">Grúz</script>
			<script type="Glag">Glagolitikus</script>
			<script type="Goth">Gót</script>
			<script type="Grek">Görög</script>
			<script type="Gujr">Gudzsaráti</script>
			<script type="Guru">Gurmuki</script>
			<script type="Hang">Hangul</script>
			<script type="Hani">Han</script>
			<script type="Hano">Hanunoo</script>
			<script type="Hans">Egyszerűsített Han</script>
			<script type="Hant">Hagyományos Han</script>
			<script type="Hebr">Héber</script>
			<script type="Hira">Hiragana</script>
			<script type="Hmng">Pahawh hmong</script>
			<script type="Hrkt">Katakana vagy hiragana</script>
			<script type="Hung">Ómagyar</script>
			<script type="Inds">Indus</script>
			<script type="Ital">Régi olasz</script>
			<script type="Java">Jávai</script>
			<script type="Jpan">Japán</script>
			<script type="Kali">Kajah li</script>
			<script type="Kana">Katakana</script>
			<script type="Khar">Kharoshthi</script>
			<script type="Khmr">Khmer</script>
			<script type="Knda">Kannada</script>
			<script type="Kore">Koreai</script>
			<script type="Kthi">Kaithi</script>
			<script type="Lana">Lanna</script>
			<script type="Laoo">Lao</script>
			<script type="Latf">Fraktur latin</script>
			<script type="Latg">Gael latin</script>
			<script type="Latn">Latin</script>
			<script type="Lepc">Lepcha</script>
			<script type="Limb">Limbu</script>
			<script type="Lina">Lineáris A</script>
			<script type="Linb">Lineáris B</script>
			<script type="Lyci">Líciai</script>
			<script type="Lydi">Lídiai</script>
			<script type="Mand">Mandai</script>
			<script type="Mani">Manichaean</script>
			<script type="Maya">Maja hieroglifák</script>
			<script type="Mero">Meroitikus</script>
			<script type="Mlym">Malajálam</script>
			<script type="Mong">Mongol</script>
			<script type="Moon">Moon</script>
			<script type="Mtei">Meitei mayek</script>
			<script type="Mymr">Burmai</script>
			<script type="Nkoo">N'ko</script>
			<script type="Ogam">Ogham</script>
			<script type="Olck">Ol chiki</script>
			<script type="Orkh">Orhon</script>
			<script type="Orya">Oriya</script>
			<script type="Osma">Oszmán</script>
			<script type="Perm">Ópermikus</script>
			<script type="Phag">Phags-pa</script>
			<script type="Phli">Felriatos pahlavi</script>
			<script type="Phlp">Psalter pahlavi</script>
			<script type="Phlv">Könyv pahlavi</script>
			<script type="Phnx">Főniciai</script>
			<script type="Plrd">Pollard fonetikus</script>
			<script type="Prti">Feliratos parthian</script>
			<script type="Qaai">Származtatott</script>
			<script type="Rjng">Redzsang</script>
			<script type="Roro">Rongorongo</script>
			<script type="Runr">Runikus</script>
			<script type="Samr">Szamaritán</script>
			<script type="Sara">Szarati</script>
			<script type="Saur">Szaurastra</script>
			<script type="Sgnw">Jelírás</script>
			<script type="Shaw">Shaw ábécé</script>
			<script type="Sinh">Szingaléz</script>
			<script type="Sund">Szundanéz</script>
			<script type="Sylo">Sylheti nagári</script>
			<script type="Syrc">Szíriai</script>
			<script type="Syre">Estrangelo szíriai</script>
			<script type="Syrj">Nyugat-szíriai</script>
			<script type="Syrn">Kelet-szíriai</script>
			<script type="Tagb">Tagbanwa</script>
			<script type="Tale">Tai Le</script>
			<script type="Talu">Új tai lue</script>
			<script type="Taml">Tamil</script>
			<script type="Tavt">Tai viet</script>
			<script type="Telu">Telugu</script>
			<script type="Teng">Tengwar</script>
			<script type="Tfng">Berber</script>
			<script type="Tglg">Tagalog</script>
			<script type="Thaa">Thaana</script>
			<script type="Thai">Thai</script>
			<script type="Tibt">Tibeti</script>
			<script type="Ugar">Ugari</script>
			<script type="Vaii">Vai</script>
			<script type="Visp">Látható beszéd</script>
			<script type="Xpeo">Óperzsa</script>
			<script type="Xsux">Ékírásos suméro-akkád</script>
			<script type="Yiii">Ji</script>
			<script type="Zmth">Matematikai jelrendszer</script>
			<script type="Zsym">Szimbólum</script>
			<script type="Zxxx">Íratlan nyelvek kódja</script>
			<script type="Zyyy">Meghatározatlan</script>
			<script type="Zzzz">Ismeretlen vagy érvénytelen írásrendszer</script>
		</scripts>
		<territories>
			<territory type="001">Világ</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Észak-Amerika</territory>
			<territory type="005">Dél-Amerika</territory>
			<territory type="009">Óceánia</territory>
			<territory type="011">Nyugat-Afrika</territory>
			<territory type="013">Közép-Amerika</territory>
			<territory type="014">Kelet-Afrika</territory>
			<territory type="015">Észak-Afrika</territory>
			<territory type="017">Közép-Afrika</territory>
			<territory type="018">Afrika déli része</territory>
			<territory type="019">Amerika</territory>
			<territory type="021">Amerika északi része</territory>
			<territory type="029">Karib-térség</territory>
			<territory type="030">Kelet-Ázsia</territory>
			<territory type="034">Dél-Ázsia</territory>
			<territory type="035">Délkelet-Ázsia</territory>
			<territory type="039">Dél-Európa</territory>
			<territory type="053">Ausztrália és Új-Zéland</territory>
			<territory type="054">Melanézia</territory>
			<territory type="057">Mikronéziai régió</territory>
			<territory type="061">Polinézia</territory>
			<territory type="062">Délközép-Ázsia</territory>
			<territory type="142">Ázsia</territory>
			<territory type="143">Közép-Ázsia</territory>
			<territory type="145">Nyugat-Ázsia</territory>
			<territory type="150">Európa</territory>
			<territory type="151">Kelet-Európa</territory>
			<territory type="154">Észak-Európa</territory>
			<territory type="155">Nyugat-Európa</territory>
			<territory type="172">Független Államok Közössége</territory>
			<territory type="419">Latin-Amerika és a Karib-térség</territory>
			<territory type="830">Csatorna-szigetek</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Egyesült Arab Emirátus</territory>
			<territory type="AF">Afganisztán</territory>
			<territory type="AG">Antigua és Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albánia</territory>
			<territory type="AM">Örményország</territory>
			<territory type="AN">Holland Antillák</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktisz</territory>
			<territory type="AR">Argentína</territory>
			<territory type="AS">Amerikai Szamoa</territory>
			<territory type="AT">Ausztria</territory>
			<territory type="AU">Ausztrália</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Aland-szigetek</territory>
			<territory type="AZ">Azerbajdzsán</territory>
			<territory type="BA">Bosznia-Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Banglades</territory>
			<territory type="BE">Belgium</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgária</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Saint Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolívia</territory>
			<territory type="BR">Brazília</territory>
			<territory type="BS">Bahamák</territory>
			<territory type="BT">Bhután</territory>
			<territory type="BV">Bouvet-sziget</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Fehéroroszország</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kókusz (Keeling)-szigetek</territory>
			<territory type="CD">Kongó, Demokratikus köztársaság</territory>
			<territory type="CF">Közép-afrikai Köztársaság</territory>
			<territory type="CG">Kongó</territory>
			<territory type="CH">Svájc</territory>
			<territory type="CI">Elefántcsontpart</territory>
			<territory type="CK">Cook-szigetek</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kína</territory>
			<territory type="CO">Kolumbia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Szerbia és Montenegró</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Zöld-foki Köztársaság</territory>
			<territory type="CX">Karácsony-szigetek</territory>
			<territory type="CY">Ciprus</territory>
			<territory type="CZ">Csehország</territory>
			<territory type="DE">Németország</territory>
			<territory type="DJ">Dzsibuti</territory>
			<territory type="DK">Dánia</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikai Köztársaság</territory>
			<territory type="DZ">Algéria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Észtország</territory>
			<territory type="EG">Egyiptom</territory>
			<territory type="EH">Nyugat-Szahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Spanyolország</territory>
			<territory type="ET">Etiópia</territory>
			<territory type="FI">Finnország</territory>
			<territory type="FJ">Fidzsi</territory>
			<territory type="FK">Falkland-szigetek</territory>
			<territory type="FM">Mikronézia</territory>
			<territory type="FO">Feröer-szigetek</territory>
			<territory type="FR">Franciaország</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Egyesült Királyság</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Grúzia</territory>
			<territory type="GF">Francia Guyana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghána</territory>
			<territory type="GI">Gibraltár</territory>
			<territory type="GL">Grönland</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Egyenlítői-Guinea</territory>
			<territory type="GR">Görögország</territory>
			<territory type="GS">Dél Grúzia és a Déli Szendvics-szigetek</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard és McDonald Szigetek</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Horvátország</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Magyarország</territory>
			<territory type="ID">Indonézia</territory>
			<territory type="IE">Írország</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Man-sziget</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Brit Indiai Oceán</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Irán</territory>
			<territory type="IS">Izland</territory>
			<territory type="IT">Olaszország</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordánia</territory>
			<territory type="JP">Japán</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirgizisztán</territory>
			<territory type="KH">Kambodzsa</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comore-szigetek</territory>
			<territory type="KN">Saint Kitts és Nevis</territory>
			<territory type="KP">Észak-Korea</territory>
			<territory type="KR">Dél-Korea</territory>
			<territory type="KW">Kuvait</territory>
			<territory type="KY">Kajmán-szigetek</territory>
			<territory type="KZ">Kazahsztán</territory>
			<territory type="LA">Laosz</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Santa Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Srí Lanka</territory>
			<territory type="LR">Libéria</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litvánia</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Lettország</territory>
			<territory type="LY">Líbia</territory>
			<territory type="MA">Marokkó</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegró</territory>
			<territory type="MF">Saint Martin</territory>
			<territory type="MG">Madagaszkár</territory>
			<territory type="MH">Marshall-szigetek</territory>
			<territory type="MK">Macedónia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mianmar</territory>
			<territory type="MN">Mongólia</territory>
			<territory type="MO">Makaó</territory>
			<territory type="MP">Északi Mariana-szigetek</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritánia</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Málta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldív-szigetek</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mexikó</territory>
			<territory type="MY">Malajzia</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namíbia</territory>
			<territory type="NC">Új-Kaledónia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk-sziget</territory>
			<territory type="NG">Nigéria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Hollandia</territory>
			<territory type="NO">Norvégia</territory>
			<territory type="NP">Nepál</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Új-Zéland</territory>
			<territory type="OM">Omán</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francia Polinézia</territory>
			<territory type="PG">Pápua Új-Guinea</territory>
			<territory type="PH">Fülöp-szigetek</territory>
			<territory type="PK">Pakisztán</territory>
			<territory type="PL">Lengyelország</territory>
			<territory type="PM">Saint Pierre és Miquelon</territory>
			<territory type="PN">Pitcairn-sziget</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palesztin Terület</territory>
			<territory type="PT">Portugália</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Külső-Óceánia</territory>
			<territory type="QU">Európai Unió</territory>
			<territory type="RE">Reunion (francia)</territory>
			<territory type="RO">Románia</territory>
			<territory type="RS">Szerbia</territory>
			<territory type="RU">Oroszország</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Szaúd-Arábia</territory>
			<territory type="SB">Salamon-szigetek</territory>
			<territory type="SC">Seychelle-szigetek</territory>
			<territory type="SD">Szudán</territory>
			<territory type="SE">Svédország</territory>
			<territory type="SG">Szingapúr</territory>
			<territory type="SH">Szent Helena</territory>
			<territory type="SI">Szlovénia</territory>
			<territory type="SJ">Svalbard és Jan Mayen</territory>
			<territory type="SK">Szlovákia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Szenegál</territory>
			<territory type="SO">Szomália</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">São Tomé és Príncipe</territory>
			<territory type="SV">Salvador</territory>
			<territory type="SY">Szíria</territory>
			<territory type="SZ">Szváziföld</territory>
			<territory type="TC">Turks- és Caicos-szigetek</territory>
			<territory type="TD">Csád</territory>
			<territory type="TF">Francia Déli Területek</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Thaiföld</territory>
			<territory type="TJ">Tadzsikisztán</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Kelet-Timor</territory>
			<territory type="TM">Türkmenisztán</territory>
			<territory type="TN">Tunézia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Törökország</territory>
			<territory type="TT">Trinidad és Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajvan</territory>
			<territory type="TZ">Tanzánia</territory>
			<territory type="UA">Ukrajna</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Amerikai Csendes-óceáni Szigetek</territory>
			<territory type="US">Egyesült Államok</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Üzbegisztán</territory>
			<territory type="VA">Vatikán</territory>
			<territory type="VC">Saint Vincent és Grenadines</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Brit Virgin-szigetek</territory>
			<territory type="VI">Amerikai Virgin-szigetek</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis és Futuna</territory>
			<territory type="WS">Szamoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Dél-Afrika</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Ismeretlen vagy érvénytelen körzet</territory>
		</territories>
		<variants>
			<variant type="1901">Hagyományos német helyesírás</variant>
			<variant type="1994">Szabványosított reziján helyesírás</variant>
			<variant type="1996">1996-os német helyesírás</variant>
			<variant type="1606NICT">Késői közép francia 1606-ig</variant>
			<variant type="AREVELA">Keleti örmény</variant>
			<variant type="AREVMDA">Nyugati örmény</variant>
			<variant type="BAKU1926">Egyesített türkic latin ábécé</variant>
			<variant type="BISKE">San Giorgo/Bila tájszólás</variant>
			<variant type="BOONT">Boontling</variant>
			<variant type="FONIPA">IPA fonetika</variant>
			<variant type="FONUPA">UPA fonetika</variant>
			<variant type="LIPAW">Reziján lipovaz tájszólás</variant>
			<variant type="MONOTON">Monoton</variant>
			<variant type="NEDIS">Natisone dialektus</variant>
			<variant type="NJIVA">Gniva/Njiva tájszólás</variant>
			<variant type="OSOJS">Oseacco/Osojane tájszólás</variant>
			<variant type="POLYTON">Politonikus</variant>
			<variant type="POSIX">Számítógép</variant>
			<variant type="REVISED">Átdolgozott helyesírás</variant>
			<variant type="ROZAJ">Reziján</variant>
			<variant type="SAAHO">Saho</variant>
			<variant type="SCOTLAND">Skót szabványos angol</variant>
			<variant type="SCOUSE">Scouse</variant>
			<variant type="SOLBA">Stolvizza/Solbica tájszólás</variant>
			<variant type="TARASK">Taraskijevica helyesírás</variant>
			<variant type="VALENCIA">Valencia</variant>
		</variants>
		<keys>
			<key type="calendar">Naptár</key>
			<key type="collation">Rendezés</key>
			<key type="currency">Pénznem</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Hagyományos kínai sorrend - Big5</type>
			<type type="buddhist" key="calendar">buddhista naptár</type>
			<type type="chinese" key="calendar">kínai naptár</type>
			<type type="direct" key="collation">Közvetlen sorrend</type>
			<type type="gb2312han" key="collation">Egyszerűsített kínai sorrend - GB2312</type>
			<type type="gregorian" key="calendar">Gergely-naptár</type>
			<type type="hebrew" key="calendar">héber naptár</type>
			<type type="indian" key="calendar">Indiai nemzeti naptár</type>
			<type type="islamic" key="calendar">iszlám naptár</type>
			<type type="islamic-civil" key="calendar">iszlám civil naptár</type>
			<type type="japanese" key="calendar">japán naptár</type>
			<type type="phonebook" key="collation">Telefonkönyv sorrend</type>
			<type type="pinyin" key="collation">Pinyin sorrend</type>
			<type type="roc" key="calendar">Kínai köztársasági naptár</type>
			<type type="stroke" key="collation">Vonássorrend</type>
			<type type="traditional" key="collation">Hagyományos</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">amerikai</measurementSystemName>
			<measurementSystemName type="metric">metrikus</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Nyelv: {0}</codePattern>
			<codePattern type="script">Írásrendszer: {0}</codePattern>
			<codePattern type="territory">Régió: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inList>titlecase-firstword</inList>
		<inText type="currency">lowercase-words</inText>
		<inText type="keys">titlecase-firstword</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="measurementSystemNames">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
		<inText type="types">lowercase-words</inText>
		<inText type="variants">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á b c {cs} {ccs} d {dz} {ddz} {dzs} {ddzs} e é f g {gy} {ggy} h i í j-l {ly} {lly} m n {ny} {nny} o ó ö ő p r s {sz} {ssz} t {ty} {tty} u ú ü ű v z {zs} {zzs}]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>”</quotationEnd>
		<alternateQuotationStart>„</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="buddhist">
				<eras>
					<eraAbbr>
						<era type="0">BK</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan.</month>
							<month type="2">febr.</month>
							<month type="3">márc.</month>
							<month type="4">ápr.</month>
							<month type="5">máj.</month>
							<month type="6">jún.</month>
							<month type="7">júl.</month>
							<month type="8">aug.</month>
							<month type="9">szept.</month>
							<month type="10">okt.</month>
							<month type="11">nov.</month>
							<month type="12">dec.</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">január</month>
							<month type="2">február</month>
							<month type="3">március</month>
							<month type="4">április</month>
							<month type="5">május</month>
							<month type="6">június</month>
							<month type="7">július</month>
							<month type="8">augusztus</month>
							<month type="9">szeptember</month>
							<month type="10">október</month>
							<month type="11">november</month>
							<month type="12">december</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">J</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">Á</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">V</day>
							<day type="mon">H</day>
							<day type="tue">K</day>
							<day type="wed">Sze</day>
							<day type="thu">Cs</day>
							<day type="fri">P</day>
							<day type="sat">Szo</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">vasárnap</day>
							<day type="mon">hétfő</day>
							<day type="tue">kedd</day>
							<day type="wed">szerda</day>
							<day type="thu">csütörtök</day>
							<day type="fri">péntek</day>
							<day type="sat">szombat</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">V</day>
							<day type="mon">H</day>
							<day type="tue">K</day>
							<day type="wed">S</day>
							<day type="thu">C</day>
							<day type="fri">P</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">N1</quarter>
							<quarter type="2">N2</quarter>
							<quarter type="3">N3</quarter>
							<quarter type="4">N4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">I. negyedév</quarter>
							<quarter type="2">II. negyedév</quarter>
							<quarter type="3">III. negyedév</quarter>
							<quarter type="4">IV. negyedév</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>de.</am>
				<pm>du.</pm>
				<eras>
					<eraNames>
						<era type="0">időszámításunk előtt</era>
						<era type="1">időszámításunk szerint</era>
					</eraNames>
					<eraAbbr>
						<era type="0">i. e.</era>
						<era type="1">i. sz.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>yyyy. MMMM d.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy. MMMM d.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy.MM.dd.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy.MM.dd.</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">M. d., E</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d.</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="MMdd">MM.dd.</dateFormatItem>
						<dateFormatItem id="Md">M. d.</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy.MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">yyyy. MMMM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M.-M.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">MM.dd., E - MM.dd., E</greatestDifference>
							<greatestDifference id="d">MM.dd., E - MM.dd., E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">MMM d., E - MMM d., E</greatestDifference>
							<greatestDifference id="d">MMM d., E - d., E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d. - MMM d.</greatestDifference>
							<greatestDifference id="d">MMM d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM.dd. - MM.dd.</greatestDifference>
							<greatestDifference id="d">MM.dd. - MM.dd.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d.-d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy.MM. - yyyy.MM.</greatestDifference>
							<greatestDifference id="y">yyyy.MM. - yyyy.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">yyyy.MM.dd., E - yyyy.MM.dd., E</greatestDifference>
							<greatestDifference id="d">yyyy.MM.dd., E - yyyy.MM.dd., E</greatestDifference>
							<greatestDifference id="y">yyyy.MM.dd., E - yyyy.MM.dd., E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy. MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy. MMM - yyyy. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">yyyy. MMM d., E - MMM d., E</greatestDifference>
							<greatestDifference id="d">yyyy. MMM d., E - d., E</greatestDifference>
							<greatestDifference id="y">yyyy. MMM d., E - yyyy. MMM d., E</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy. MMM d. - MMM d.</greatestDifference>
							<greatestDifference id="d">yyyy. MMM d.-d.</greatestDifference>
							<greatestDifference id="y">yyyy. MMM d. - yyyy. MMM d.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy.MM.dd. - yyyy.MM.dd.</greatestDifference>
							<greatestDifference id="d">yyyy.MM.dd. - yyyy.MM.dd.</greatestDifference>
							<greatestDifference id="y">yyyy.MM.dd. - yyyy.MM.dd.</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>éra</displayName>
					</field>
					<field type="year">
						<displayName>év</displayName>
					</field>
					<field type="month">
						<displayName>hónap</displayName>
					</field>
					<field type="week">
						<displayName>hét</displayName>
					</field>
					<field type="day">
						<displayName>nap</displayName>
						<relative type="0">ma</relative>
						<relative type="1">holnap</relative>
						<relative type="2">holnapután</relative>
						<relative type="3">három nap múlva</relative>
						<relative type="-1">tegnap</relative>
						<relative type="-2">tegnapelőtt</relative>
						<relative type="-3">három nappal ezelőtt</relative>
					</field>
					<field type="weekday">
						<displayName>hét napja</displayName>
					</field>
					<field type="dayperiod">
						<displayName>napszak</displayName>
					</field>
					<field type="hour">
						<displayName>óra</displayName>
					</field>
					<field type="minute">
						<displayName>perc</displayName>
					</field>
					<field type="second">
						<displayName>másodperc</displayName>
					</field>
					<field type="zone">
						<displayName>zóna</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="hebrew">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Tisri</month>
							<month type="2">Hesván</month>
							<month type="3">Kiszlév</month>
							<month type="4">Tévész</month>
							<month type="5">Svát</month>
							<month type="6">Ádár risón</month>
							<month type="7">Ádár séni</month>
							<month type="8">Niszán</month>
							<month type="9">Ijár</month>
							<month type="10">Sziván</month>
							<month type="12">Áv</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">TÉ</era>
					</eraAbbr>
				</eras>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">Moharrem</month>
							<month type="3">Rébi el avvel</month>
							<month type="4">Rébi el accher</month>
							<month type="5">Dsemádi el avvel</month>
							<month type="6">Dsemádi el accher</month>
							<month type="7">Redseb</month>
							<month type="8">Sabán</month>
							<month type="9">Ramadán</month>
							<month type="10">Sevvál</month>
							<month type="11">Dsül kade</month>
							<month type="12">Dsül hedse</month>
						</monthWidth>
					</monthContext>
				</months>
				<eras>
					<eraAbbr>
						<era type="0">MF</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<fallbackFormat>{1} ({0})</fallbackFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>ismeretlen</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Jereván</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Déli-sark</exemplarCity>
			</zone>
			<zone type="Antarctica/Vostok">
				<exemplarCity>Vosztok</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Río Gallegos</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumán</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Bécs</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>Barbadosz</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brüsszel</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Szófia</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirunepé</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Río Branco</exemplarCity>
			</zone>
			<zone type="America/Porto_Velho">
				<exemplarCity>Pôrto Velho</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaína</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="Europe/Minsk">
				<exemplarCity>Minszk</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Beliz</exemplarCity>
			</zone>
			<zone type="America/Montreal">
				<exemplarCity>Montréal</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Húsvét-szigetek</exemplarCity>
			</zone>
			<zone type="Asia/Kashgar">
				<exemplarCity>Kasgár</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Ürümqi</exemplarCity>
			</zone>
			<zone type="Asia/Chongqing">
				<exemplarCity>Csungking</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Sanghaj</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Zöld-Foki Szigetek</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Dzsibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Koppenhága</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galapagos-szigetek</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairó</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanári-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidzsi</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Truk-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Ponape">
				<exemplarCity>Ponape-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Kosrae">
				<exemplarCity>Kosrae-szigetek</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Párizs</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>Gibraltár</exemplarCity>
			</zone>
			<zone type="America/Godthab">
				<exemplarCity>Godthåb</exemplarCity>
			</zone>
			<zone type="America/Scoresbysund">
				<exemplarCity>Scoresby Sound</exemplarCity>
			</zone>
			<zone type="America/Danmarkshavn">
				<exemplarCity>Danmarks Havn</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Athén</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Dél-Georgia</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Dzsakarta</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Makasar</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teherán</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Róma</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamaika</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Pacific/Kiritimati">
				<exemplarCity>Kiritimati-sziget</exemplarCity>
			</zone>
			<zone type="Pacific/Tarawa">
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Pyongyang">
				<exemplarCity>Észak-Korea</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Dél-Korea</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvait</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktöbe</exemplarCity>
			</zone>
			<zone type="Asia/Qyzylorda">
				<exemplarCity>Kizilorda</exemplarCity>
			</zone>
			<zone type="Asia/Almaty">
				<exemplarCity>Alma-Ata</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Laosz</exemplarCity>
			</zone>
			<zone type="Asia/Beirut">
				<exemplarCity>Bejrút</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Vilniusz</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburg</exemplarCity>
			</zone>
			<zone type="Europe/Podgorica">
				<exemplarCity>Montenegró</exemplarCity>
			</zone>
			<zone type="Pacific/Kwajalein">
				<exemplarCity>Kwajalein-zátony</exemplarCity>
			</zone>
			<zone type="Pacific/Majuro">
				<exemplarCity>Majuro-zátony</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulánbátor</exemplarCity>
			</zone>
			<zone type="Asia/Choibalsan">
				<exemplarCity>Csojbalszan</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Makaó</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>Málta</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldív-szigetek</exemplarCity>
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexikóváros</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Pacific/Chatham">
				<exemplarCity>Chatham-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Marquesas">
				<exemplarCity>Marquesas-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Gambier">
				<exemplarCity>Gambier-szigetek</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsó</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Pitcairn-szigetek</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azori-szigetek</exemplarCity>
			</zone>
			<zone type="Atlantic/Madeira">
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisszabon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Europe/Belgrade">
				<exemplarCity>Szerbia</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kalinyingrád</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moszkva</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Volgográd</exemplarCity>
			</zone>
			<zone type="Europe/Samara">
				<exemplarCity>Szamara</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Jekatyerinburg</exemplarCity>
			</zone>
			<zone type="Asia/Omsk">
				<exemplarCity>Omszk</exemplarCity>
			</zone>
			<zone type="Asia/Novosibirsk">
				<exemplarCity>Novoszibirszk</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasznojarszk</exemplarCity>
			</zone>
			<zone type="Asia/Irkutsk">
				<exemplarCity>Irkutszk</exemplarCity>
			</zone>
			<zone type="Asia/Yakutsk">
				<exemplarCity>Jakutszk</exemplarCity>
			</zone>
			<zone type="Asia/Vladivostok">
				<exemplarCity>Vlagyivosztok</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Szahalin</exemplarCity>
			</zone>
			<zone type="Asia/Magadan">
				<exemplarCity>Magadán</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamcsatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadir</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Szingapúr</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damaszkusz</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Tunisz</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Isztanbul</exemplarCity>
			</zone>
			<zone type="Asia/Taipei">
				<exemplarCity>Tajvan</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Ungvár</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijev</exemplarCity>
			</zone>
			<zone type="Europe/Simferopol">
				<exemplarCity>Szimferopol</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporozsje</exemplarCity>
			</zone>
			<zone type="Pacific/Midway">
				<exemplarCity>Midway-szigetek</exemplarCity>
			</zone>
			<zone type="Pacific/Wake">
				<exemplarCity>Wake-sziget</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Középső, Észak-Dakota</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Szamarkand</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taskent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Acre idő</standard>
					<daylight>Acre nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Afganisztáni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<generic>Mozambiki idő</generic>
					<standard>Közép-afrikai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<generic>Kenyai idő</generic>
					<standard>Kelet-afrikai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_FarWestern">
				<long>
					<generic>Nyugat-szaharai idő</generic>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<generic>Dél-afrikai idő</generic>
					<standard>Dél-afrikai szabvány idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<generic>Nigériai idő</generic>
					<standard>Nyugat-afrikai idő</standard>
					<daylight>Nyugat-afrikai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Aktyubinszki idő</standard>
					<daylight>Aktyubinszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Alaszkai idő</generic>
					<standard>Alaszkai zónaidő</standard>
					<daylight>Alaszkai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Alaszkai-hawaii idő</generic>
					<standard>Alaszkai-hawaii zónaidő</standard>
					<daylight>Alaszkai-hawaii nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Almaty">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Amazóniai idő</standard>
					<daylight>Amazóniai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Középső államokbeli idő</generic>
					<standard>Középső államokbeli zónaidő</standard>
					<daylight>Középső államokbeli nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Keleti államokbeli idő</generic>
					<standard>Keleti államokbeli zónaidő</standard>
					<daylight>Keleti államokbeli nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Hegyvidéki idő</generic>
					<standard>Hegyvidéki zónaidő</standard>
					<daylight>Hegyvidéki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Csendes-óceáni idő</generic>
					<standard>Csendes-óceáni zónaidő</standard>
					<daylight>Csendes-óceáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Anadyr">
				<long>
					<standard>Anadíri idő</standard>
					<daylight>Anadíri nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Aqtaui idő</standard>
					<daylight>Aqtaui nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Aqtobei idő</standard>
					<daylight>Aqtobei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Arab idő</generic>
					<standard>Arab zónaidő</standard>
					<daylight>Arab nyári idő</daylight>
				</long>
				<short>
					<generic>AT (Arab)</generic>
					<standard>AST (arab)</standard>
					<daylight>ADT (Arab)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Argentína idő</standard>
					<daylight>argentínai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Nyugat-Argentína idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Örmény idő</standard>
					<daylight>Örmény nyári idő</daylight>
				</long>
				<short>
					<standard>AMT (Örményország)</standard>
					<daylight>AMST (Örményország)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Ashabadi idő</standard>
					<daylight>Ashabadi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Atlanti-óceáni idő</generic>
					<standard>Atlanti-óceáni zónaidő</standard>
					<daylight>Atlanti-óceáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Közép-ausztráliai idő</generic>
					<standard>Ausztrál középső zónaidő</standard>
					<daylight>Ausztrál középső nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Ausztrál középső nyugati idő</generic>
					<standard>Ausztrál középső nyugati zónaidő</standard>
					<daylight>Ausztrál középső nyugati nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Kelet-ausztrál idő</generic>
					<standard>Ausztrál keleti zónaidő</standard>
					<daylight>Ausztrál keleti nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Nyugat-ausztrál idő</generic>
					<standard>Ausztrál nyugati zónaidő</standard>
					<daylight>Ausztrál nyugati nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azerbaijan">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Azori idő</standard>
					<daylight>Azori nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Bakui idő</standard>
					<daylight>Bakui nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Bangladesi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Bering idő</generic>
					<standard>Beringi zónaidő</standard>
					<daylight>Beringi nyári idő</daylight>
				</long>
				<short>
					<standard>BST (Beringi)</standard>
					<daylight>BDT (Beringi)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Butáni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Bolíviai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Borneói idő</standard>
					<daylight>Borneói nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Brazíliai idő</standard>
					<daylight>Brazíliai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Brunei">
				<long>
					<standard>Brunei Darussalam-i idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cape_Verde">
				<long>
					<standard>Cape verdei idő</standard>
					<daylight>Cape verdei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<standard>Chamorroi zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Changbai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chatham">
				<long>
					<standard>Chathami zónaidő</standard>
					<daylight>Chathami nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>chilei idő</standard>
					<daylight>chilei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="China">
				<long>
					<standard>Kínai zónaidő</standard>
					<daylight>Kínai nyári idő</daylight>
				</long>
				<short>
					<standard>CST (Kína)</standard>
					<daylight>CDT (Kína)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Csojbalszani idő</standard>
					<daylight>Csojbalszani nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Christmas">
				<long>
					<standard>Karácsony-szigeti idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cocos">
				<long>
					<standard>Kókusz-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Kolumbiai idő</standard>
					<daylight>Kolumbiai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cook">
				<long>
					<standard>Cook-szigeteki idő</standard>
					<daylight>Cook-szigeteki fél nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Kubai idő</generic>
					<standard>Kubai zónaidő</standard>
					<daylight>Kubai nyári idő</daylight>
				</long>
				<short>
					<standard>CST (Kuba)</standard>
					<daylight>CDT (Kuba)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Daccai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Davis">
				<long>
					<standard>Davisi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="DumontDUrville">
				<long>
					<standard>Dumont-d'Urville-i idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Dusanbei idő</standard>
					<daylight>Dusanbei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Holland-guianai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>Kelet-timori idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Easter">
				<long>
					<standard>Húsvét-szigeteki idő</standard>
					<daylight>Húsvét-szigeteki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Ecuadori idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>közép-európai idő</standard>
					<daylight>közép-európai nyári idő</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>kelet-európai idő</standard>
					<daylight>kelet-európai nyári idő</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Nyugat-európai idő</standard>
					<daylight>Nyugat-európai nyári idő</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Falkland">
				<long>
					<standard>Falkland-szigeteki idő</standard>
					<daylight>Falkland-szigeteki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Fiji">
				<long>
					<standard>Fidzsi idő</standard>
					<daylight>Fidzsi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Francia-guianai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="French_Southern">
				<long>
					<standard>Francia déli és antarktikus idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Frunzei idő</standard>
					<daylight>Frunzei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Greenwichi középidő</standard>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Galapagosi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gambier">
				<long>
					<standard>Gambieri idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Grúz idő</standard>
					<daylight>Grúz nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gilbert_Islands">
				<long>
					<standard>Gilbert-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Közép-grönlandi idő</standard>
					<daylight>Közép-grönlandi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Kelet-grönlandi idő</standard>
					<daylight>Kelet-grönlandi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Nyugat-grönlandi idő</standard>
					<daylight>Nyugat-grönlandi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Guami zónaidő</standard>
				</long>
				<short>
					<standard>GST (Guam)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Gulf">
				<long>
					<standard>Öbölbeli zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Guyanai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<standard>Hawaii-aleuti zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hongkongi idő</standard>
					<daylight>Hongkongi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Hovd">
				<long>
					<standard>Hovdi idő</standard>
					<daylight>Hovdi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Indiai zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indian_Ocean">
				<long>
					<standard>Indiai-óceáni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indochina">
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Közép-indonéziai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Kelet-indonéziai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Nyugat-indonéziai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Iran">
				<long>
					<standard>Iráni zónaidő</standard>
					<daylight>Iráni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Irkutsk">
				<long>
					<standard>Irkutszki idő</standard>
					<daylight>Irkutszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Israel">
				<long>
					<standard>Izraeli zónaidő</standard>
					<daylight>Izraeli nyári idő</daylight>
				</long>
				<short>
					<standard>IST (Izrael)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Japan">
				<long>
					<standard>Japán zónaidő</standard>
					<daylight>Japán nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kamchatka">
				<long>
					<standard>Petropavlovszk-kamcsatkai idő</standard>
					<daylight>Petropavlovszk-kamcsatkai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Karacsi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Kasgár idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<standard>Kelet-kazahsztáni zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<standard>Nyugat-kazahsztáni zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Kizilordai idő</standard>
					<daylight>Kizilordai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Koreai idő</generic>
					<standard>Koreai zónaidő</standard>
					<daylight>Koreai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kosrae">
				<long>
					<standard>Kosraei idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Krasnoyarsk">
				<long>
					<standard>Krasznojarszki idő</standard>
					<daylight>Krasznojarszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Kujbisevi idő</standard>
					<daylight>Kujbisevi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Kwajaleini idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Kirgiz idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Lankai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Liberia">
				<long>
					<generic>Libériai idő</generic>
				</long>
				<short>
					<generic>Libériai idő</generic>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Line_Islands">
				<long>
					<standard>Line-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Long-Shu idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Lord howei idő</generic>
					<standard>Lord howei zónaidő</standard>
					<daylight>Lord howei nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Macaui idő</standard>
					<daylight>Macaui nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Magadan">
				<long>
					<standard>Magadáni idő</standard>
					<daylight>Magadáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Malayai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Malajziai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Maldives">
				<long>
					<standard>Maldív-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marquesas">
				<long>
					<standard>Marquesasi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Marshall-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mauritius">
				<long>
					<standard>Mauritiusi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mawson">
				<long>
					<standard>Mawsoni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Ulánbátori idő</standard>
					<daylight>Ulánbátori nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Moszkvai idő</generic>
					<standard>Moszkvai zónaidő</standard>
					<daylight>Moszkvai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Myanmari idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nauru">
				<long>
					<standard>Naurui idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Nepáli idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Caledonia">
				<long>
					<standard>Új-kaledóniai idő</standard>
					<daylight>Új-kaledóniai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Új-zélandi idő</generic>
					<standard>Új-zélandi zónaidő</standard>
					<daylight>Új-zélandi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Új-fundlandi idő</generic>
					<standard>Új-fundlandi zónaidő</standard>
					<daylight>Új-fundlandi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Niue">
				<long>
					<standard>Niuei idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Norfolk">
				<long>
					<standard>Norfolk-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Fernando de Noronha-i idő</standard>
					<daylight>Fernando de Noronha-i nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>Észak-mariana-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Novosibirsk">
				<long>
					<standard>Novoszibirzski idő</standard>
					<daylight>Novoszibirszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Omsk">
				<long>
					<standard>Omszki idő</standard>
					<daylight>Omszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Pakisztáni idő</standard>
					<daylight>Pakisztáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Palau">
				<long>
					<standard>Palaui idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Papua_New_Guinea">
				<long>
					<standard>Pápua új-guineai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Paraguayi idő</standard>
					<daylight>Paraguayi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Perui idő</standard>
					<daylight>Perui nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Fülöp-szigeteki idő</standard>
					<daylight>Fülöp-szigeteki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Phoenix_Islands">
				<long>
					<standard>Phoenix-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Pierre és Miquelon-i idő</generic>
					<standard>Pierre és Miquelon-i zónaidő</standard>
					<daylight>Pierre és Miquelon-i nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Pitcairn">
				<long>
					<standard>Pitcairni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Ponape">
				<long>
					<standard>Ponapei idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Qyzylordai idő</standard>
					<daylight>Qyzylordai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Reunion">
				<long>
					<standard>Réunioni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Rothera">
				<long>
					<standard>Rotherai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sakhalin">
				<long>
					<standard>Sakhalin idő</standard>
					<daylight>Sakhalin nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Szamarai idő</standard>
					<daylight>Szamarai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Szamarkandi idő</standard>
					<daylight>Szamarkandi nyári idő</daylight>
				</long>
				<short>
					<standard>SAMT (Szamarkand)</standard>
					<daylight>SAMST (Szamarkand)</daylight>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Szamoai zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Seychelles">
				<long>
					<standard>Seychelle-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Sevcsenkói idő</standard>
					<daylight>Sevcsenkói nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Singapore">
				<long>
					<standard>Szingapúri zónaidő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Solomon">
				<long>
					<standard>Salamon-szigeteki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="South_Georgia">
				<long>
					<standard>Dél-grúziai idő</standard>
				</long>
				<short>
					<standard>GST (Dél-grúziai)</standard>
				</short>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Szurinámi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Szverdlovszki idő</standard>
					<daylight>Szverdlovszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Syowa">
				<long>
					<standard>Syowai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tahiti">
				<long>
					<standard>Tahiti idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Tadzsikisztáni idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Taskenti idő</standard>
					<daylight>Taskenti nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Tbiliszi idő</standard>
					<daylight>Tbiliszi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tokelau">
				<long>
					<standard>Tokelaui idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tonga">
				<long>
					<standard>Tongai idő</standard>
					<daylight>Tongai nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Truk">
				<long>
					<standard>Truki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkey">
				<long>
					<generic>Török idő</generic>
					<standard>Törökországi idő</standard>
					<daylight>Törökországi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Türkmenisztáni idő</standard>
					<daylight>Türkmenisztáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Tuvalu">
				<long>
					<standard>Tuvalui idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Uráli idő</standard>
					<daylight>Uráli nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Uruguayi idő</standard>
					<daylight>Uruguayi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Urumqi idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Üzbegisztáni idő</standard>
					<daylight>Üzbegisztáni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vanuatu">
				<long>
					<standard>Vanuatui idő</standard>
					<daylight>Vanuatui nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Venezuelai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vladivostok">
				<long>
					<standard>Vlagyivosztoki idő</standard>
					<daylight>Vlagyivosztoki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<generic>13:25 Oroszország (Volgográd)</generic>
					<standard>Volgográdi idő</standard>
					<daylight>Volgográdi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Vostok">
				<long>
					<standard>Vosztoki idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wake">
				<long>
					<standard>Wake-szigeti idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Wallis">
				<long>
					<standard>Wallis és futunai idő</standard>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yakutsk">
				<long>
					<standard>Jakutszki idő</standard>
					<daylight>Jakutszki nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Jekatyerinburgi idő</standard>
					<daylight>Jekatyerinburgi nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Jereváni idő</standard>
					<daylight>Jereváni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>yukoni idő</generic>
					<standard>yukoni zónaidő</standard>
					<daylight>Yukoni nyári idő</daylight>
				</long>
				<commonlyUsed>false</commonlyUsed>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>E</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>NaN</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="other">{0} {1}</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorrai peseta</displayName>
				<displayName count="other">Andorrai peseta</displayName>
			</currency>
			<currency type="AED">
				<displayName>EAE dirham</displayName>
				<displayName count="other">UAE dirham</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afghani (1927-2002)</displayName>
				<displayName count="other">Afghani (AFA)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afghani</displayName>
				<displayName count="other">Afghani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>Albán lek</displayName>
				<displayName count="other">Albán lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Dram</displayName>
				<displayName count="other">Örmény dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>Holland-antilla forint</displayName>
				<displayName count="other">Holland Antillai guilder</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolai kwanza</displayName>
				<displayName count="other">Angolai kwanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolai kwanza (1977-1990)</displayName>
				<displayName count="other">Angolai kwanza (AOK)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angolai új kwanza (1990-2000)</displayName>
				<displayName count="other">Angolai új kwanza (AON)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angolai kwanza reajustado (1995-1999)</displayName>
				<displayName count="other">Angolai kwanza reajustado (AOR)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentín austral</displayName>
				<displayName count="other">Argentin austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentín peso (1983-1985)</displayName>
				<displayName count="other">Argentin peso (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso</displayName>
				<displayName count="other">Argentin peso</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Osztrák schilling</displayName>
				<displayName count="other">Osztrák schilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Ausztrál dollár</displayName>
				<displayName count="other">Ausztrál dollár</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>Arubai forint</displayName>
				<displayName count="other">Arubai forint</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbajdzsáni manat (1993-2006)</displayName>
				<displayName count="other">Azerbajdzsáni manat (AZM)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Azerbajdzsáni manat</displayName>
				<displayName count="other">Azerbajdzsáni manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosznia-hercegovinai dínár</displayName>
				<displayName count="other">Bosznia-hercegovinai dínár</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bozsnia-hercegovinai konvertibilis márka</displayName>
				<displayName count="other">Bosznia-hercegovinai konvertibilis márka</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadosi dollár</displayName>
				<displayName count="other">Barbadosi dollár</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Bangladesi taka</displayName>
				<displayName count="other">Bangladesi taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>Belga frank (konvertibilis)</displayName>
				<displayName count="other">Belga frank (konvertibilis)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belga frank</displayName>
				<displayName count="other">Belga frank</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>Belga frank (pénzügyi)</displayName>
				<displayName count="other">Belga frank (pénzügyi)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bolgár kemény leva</displayName>
				<displayName count="other">Bolgár kemény leva</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>Bolgár új leva</displayName>
				<displayName count="other">Bolgár új leva</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreini dinár</displayName>
				<displayName count="other">Bahreini dinár</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>Burundi frank</displayName>
				<displayName count="other">Burundi frank</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>Bermudai dollár</displayName>
				<displayName count="other">Bermudai dollár</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunei dollár</displayName>
				<displayName count="other">Brunei dollár</displayName>
			</currency>
			<currency type="BOB">
				<displayName>Boliviano</displayName>
				<displayName count="other">Boliviano</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>Bolíviai peso</displayName>
				<displayName count="other">Bolíviai peso</displayName>
			</currency>
			<currency type="BOV">
				<displayName>Bolíviai mvdol</displayName>
				<displayName count="other">Bolíviai mvdol</displayName>
			</currency>
			<currency type="BRB">
				<displayName>Brazi cruzeiro novo (1967-1986)</displayName>
				<displayName count="other">Brazi cruzeiro novo (1967-1986)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brazi cruzado</displayName>
				<displayName count="other">Brazi cruzado</displayName>
			</currency>
			<currency type="BRE">
				<displayName>Brazil cruzeiro (1990-1993)</displayName>
				<displayName count="other">Brazil cruzeiro (1990-1993)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazil real</displayName>
				<displayName count="other">Brazil real</displayName>
				<symbol>BRL</symbol>
			</currency>
			<currency type="BRN">
				<displayName>Brazil cruzado novo</displayName>
				<displayName count="other">Brazil cruzado novo</displayName>
			</currency>
			<currency type="BRR">
				<displayName>Brazil cruzeiro</displayName>
			</currency>
			<currency type="BSD">
				<displayName>Bahamai dollár</displayName>
			</currency>
			<currency type="BTN">
				<displayName>Bhutáni ngultrum</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>Burmai kyat</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswanai pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Fehérorosz új rubel (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Fehérorosz rubel</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>Belizei dollár</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>Kanadai dollár</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>Kongói frank</displayName>
			</currency>
			<currency type="CHE">
				<displayName>WIR euro</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Svájci frank</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>WIR frank</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Chilei unidades de fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Chilei peso</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Kínai jüan renminbi</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>Kolumbiai peso</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>Unidad de Valor Real</displayName>
			</currency>
			<currency type="CRC">
				<displayName>Costa Ricai colon</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>szerb dinár</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Csehszlovák kemény korona</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kubai peso</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Cape Verdei escudo</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Ciprusi font</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Cseh korona</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Kelet-Német márka</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Német márka</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Dzsibuti frank</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Dán korona</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominikai peso</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Algériai dínár</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadori sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuadori Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Észt korona</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egyiptomi font</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ekwele</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritreai nakfa</displayName>
			</currency>
			<currency type="ESA">
				<displayName>spanyol peseta (A-kontó)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>spanyol peseta (konvertibilis kontó)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Spanyol peseta</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>Etiópiai birr</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
				<symbol>EUR</symbol>
			</currency>
			<currency type="FIM">
				<displayName>Finn markka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidzsi dollár</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falkland-szigeteki font</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Francia frank</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Brit font sterling</displayName>
				<symbol>GBP</symbol>
			</currency>
			<currency type="GEK">
				<displayName>Grúz kupon larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Grúz lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>Ghánai cedi (1979-2007)</displayName>
			</currency>
			<currency type="GHS">
				<displayName>Ghánai cedi</displayName>
				<displayName count="other">Ghánai cedi</displayName>
				<symbol>GH¢</symbol>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltári font</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambiai dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Guineai frank</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guineai syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Egyenlítői-guineai ekwele guineana</displayName>
				<displayName count="other">Egyenlítői-guineai ekwele</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Görög drachma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemalai quetzal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portugál guinea escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissaui peso</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyanai dollár</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Hongkongi dollár</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Hodurasi lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Horvát dínár</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Horvát kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haiti gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Magyar forint</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonéz rúpia</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Ír font</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Izraeli font</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Izraeli új sékel</displayName>
			</currency>
			<currency type="INR">
				<displayName>indiai rúpia</displayName>
				<displayName count="other">Indiai rúpia</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Iraki dínár</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iráni rial</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Izlandi korona</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Olasz líra</displayName>
				<symbol>LIT</symbol>
			</currency>
			<currency type="JMD">
				<displayName>Jamaikai dollár</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordániai dínár</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japán jen</displayName>
				<symbol>JPY</symbol>
			</currency>
			<currency type="KES">
				<displayName>Kenyai shilling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kirgizisztáni szom</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Kambodzsai riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comorei frank</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>Észak-koreai won</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Dél-koreai won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuvaiti dínár</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Kajmán-szigeteki dollár</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazahsztáni tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laoszi kip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Libanoni font</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lankai rúpia</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Libériai dollár</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesothoi loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>Maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Litvániai litas</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Litvániai talonas</displayName>
			</currency>
			<currency type="LUC">
				<displayName>luxemburgi konvertibilis frank</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luxemburgi frank</displayName>
			</currency>
			<currency type="LUL">
				<displayName>luxemburgi pénzügyi frank</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lett lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Lett rubel</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Líbiai dínár</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Marokkói dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Marokkói frank</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldován lei</displayName>
			</currency>
			<currency type="MGA">
				<displayName>Madagaszkári ariary</displayName>
			</currency>
			<currency type="MGF">
				<displayName>Madagaszkári frank</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Macedon dínár</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Mali frank</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Mianmari kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongóliai tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>makaói pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritániai ouguiya</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Máltai líra</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Máltai font</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritiusi rúpia</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldív-szigeteki rufiyaa</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawi kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Mexikói peso</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Mexikói ezüst peso (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Mexikói Unidad de Inversion (UDI)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malajziai ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambik escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Mozambik metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>Mozambiki metikális</displayName>
				<symbol>MTn</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namíbiai dollár</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigériai naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nikaraguai cordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nikaraguai cordoba oro</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Holland forint</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norvég korona</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepáli rúpia</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Új-zélandi dollár</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Ománi rial</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamai balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Perui inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Perui sol nuevo</displayName>
			</currency>
			<currency type="PES">
				<displayName>Perui sol</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Pápua új-guineai kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Fülöp-szigeteki peso</displayName>
				<symbol>Php</symbol>
			</currency>
			<currency type="PKR">
				<displayName>Pakisztáni rúpia</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Lengyel zloty</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Lengyel zloty (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugál escudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguayi guarani</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Katari rial</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>rhodéziai dollár</displayName>
				<displayName count="other">Rhodéziai dollár</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Régi román lej</displayName>
				<displayName count="other">Régi román lej</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>új román lej</displayName>
				<displayName count="other">Román lej</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Szerb Dínár</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Orosz rubel</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Orosz rubel (1991-1998)</displayName>
				<displayName count="other">Orosz rubel (RUR)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruandai frank</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Szaúdi riyal</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>Salamon-szigeteki dollár</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Seychelle-szigeteki rúpia</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Szudáni dínár</displayName>
				<displayName count="other">Régi szudáni dínár</displayName>
			</currency>
			<currency type="SDG">
				<displayName>Szudáni font</displayName>
				<displayName count="other">Szudáni font</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Régi szudáni font</displayName>
				<displayName count="other">Régi szudáni font</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Svéd korona</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Szingapúri dollár</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>Saint Helena font</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Szlovén tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Szlovák korona</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leonei leone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Szomáli shilling</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRD">
				<displayName>Surinamei dollár</displayName>
				<displayName count="other">Surinamei dollár</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Suriname-i gulden</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>Sao tome-i és principe-i dobra</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>Szovjet rubel</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Salvadori colón</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Szíriai font</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Szváziföldi lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>Thai baht</displayName>
			</currency>
			<currency type="TJR">
				<displayName>Tádzsikisztáni rubel</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tádzsikisztáni somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Türkmenisztáni manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tunéziai dínár</displayName>
			</currency>
			<currency type="TOP">
				<displayName>tongai paanga</displayName>
				<displayName count="other">Tongai paanga</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>Timori escudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Régi török líra</displayName>
				<displayName count="other">Régi török líra</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>új török líra</displayName>
				<displayName count="other">Török líra</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidad és tobagoi dollár</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Tajvani új dollár</displayName>
				<displayName count="other">Tajvani dollár</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzániai shilling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrán hrivnya</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukrán karbovanec</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandai shilling (1966-1987)</displayName>
				<displayName count="other">Ugandai shilling (UGS)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandai shilling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>USA dollár</displayName>
				<symbol>USD</symbol>
			</currency>
			<currency type="USN">
				<displayName>USA dollár (következő napi)</displayName>
			</currency>
			<currency type="USS">
				<displayName>USA dollár (aznapi)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>Uruguayi peso en unidades indexadas</displayName>
				<displayName count="other">Uruguayi peso en unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Uruguay-i peso (1975-1993)</displayName>
				<displayName count="other">Uruguayi peso (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguay-i peso uruguayo</displayName>
				<displayName count="other">Uruguayi peso</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>Üzbegisztáni szum</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelai bolívar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>Venezuelai bolivar fuerte</displayName>
				<displayName count="other">Venezuelai bolivar fuerte</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>Vietnámi dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatui vatu</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>Nyugat-szamoai tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA frank BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>Ezüst</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Arany</displayName>
			</currency>
			<currency type="XBA">
				<displayName>European Composite Unit</displayName>
				<displayName count="other">Európai kompozit egység</displayName>
			</currency>
			<currency type="XBB">
				<displayName>European Monetary Unit</displayName>
				<displayName count="other">Európai monetáris egység</displayName>
			</currency>
			<currency type="XBC">
				<displayName>European Unit of Account (XBC)</displayName>
				<displayName count="other">Európai kontó egység (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>European Unit of Account (XBD)</displayName>
				<displayName count="other">Európai kontó egység (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Kelet-karibi dollár</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>Special Drawing Rights</displayName>
			</currency>
			<currency type="XEU">
				<displayName>európai pénznemegység</displayName>
				<displayName count="other">Európai pénznemegység</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Francia arany frank</displayName>
			</currency>
			<currency type="XFU">
				<displayName>Francia UIC-frank</displayName>
			</currency>
			<currency type="XOF">
				<displayName>CFA frank BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>palládium</displayName>
				<displayName count="other">Palládium</displayName>
			</currency>
			<currency type="XPF">
				<displayName>CFP frank</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platina</displayName>
				<displayName count="other">Platina</displayName>
			</currency>
			<currency type="XRE">
				<displayName>RINET tőke</displayName>
			</currency>
			<currency type="XTS">
				<displayName>Tesztelési pénznemkód</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Ismeretlen vagy érvénytelen pénznem</displayName>
				<displayName count="other">Ismeretlen/érvénytelen pénznem</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Jemeni dínár</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemeni rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Jugoszláv kemény dínár</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoszláv új dínár</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoszláv konvertibilis dínár</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Dél-afrikai rand (pénzügyi)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Dél-afrikai rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambiai kwacha</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairei új zaire</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairei zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwei dollár</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="other">{0} nap</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="other">{0} óra</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="other">{0} perc</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="other">{0} hónap</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="other">{0} másodperc</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="other">{0} hét</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="other">{0} év</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>igen:i</yesstr>
			<nostr>nem:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[[��\�}�}Locale/Data/af.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.65 $"/>
		<generation date="$Date: 2008/06/17 14:12:13 $"/>
		<language type="af"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">Afrikaans</language>
			<language type="afa">Ander Afro-Asiaties</language>
			<language type="am">Amharies</language>
			<language type="ar">Arabies</language>
			<language type="arc">Aramees</language>
			<language type="art">Ander Kunsmatig</language>
			<language type="as">Assamees</language>
			<language type="az">Aserbeidjaans</language>
			<language type="bat">Ander Balties</language>
			<language type="be">Wit-Russies</language>
			<language type="ber">Berbers</language>
			<language type="bg">Bulgaars</language>
			<language type="bh">Bihari</language>
			<language type="bn">Bengaals</language>
			<language type="bnt">Bantoe</language>
			<language type="br">Bretons</language>
			<language type="bs">Bosnies</language>
			<language type="ca">Katalaans</language>
			<language type="cel">Ander Kelties</language>
			<language type="chr">Cherokees</language>
			<language type="cop">Kopties</language>
			<language type="cs">Tsjeggies</language>
			<language type="cu">Kerkslawies</language>
			<language type="cy">Wallies</language>
			<language type="da">Deens</language>
			<language type="de">Duits</language>
			<language type="egy">Antieke Egipties</language>
			<language type="el">Grieks</language>
			<language type="en">Engels</language>
			<language type="eo">Esperanto</language>
			<language type="es">Spaans</language>
			<language type="es_419">Latyns-Amerikaanse Spaans</language>
			<language type="et">Estnies</language>
			<language type="eu">Baskies</language>
			<language type="fa">Persies</language>
			<language type="fi">Fins</language>
			<language type="fil">Filippyns</language>
			<language type="fj">Fidjiaans</language>
			<language type="fo">Faroëes</language>
			<language type="fr">Frans</language>
			<language type="fy">Fries</language>
			<language type="ga">Iers</language>
			<language type="gd">Skots-Gaelies</language>
			<language type="gem">Ander Germaans</language>
			<language type="gl">Galicies</language>
			<language type="gn">Guarani</language>
			<language type="got">Goties</language>
			<language type="grc">Antieke Grieks</language>
			<language type="gu">Gujarati</language>
			<language type="gv">Manx</language>
			<language type="he">Hebreeus</language>
			<language type="hi">Hindi</language>
			<language type="hit">Hetities</language>
			<language type="hr">Kroaties</language>
			<language type="hu">Hongaars</language>
			<language type="hy">Armeens</language>
			<language type="ia">Interlingua</language>
			<language type="id">Indonesies</language>
			<language type="ie">Interlingue</language>
			<language type="ine">Ander Indo-Europees</language>
			<language type="is">Yslands</language>
			<language type="it">Italiaans</language>
			<language type="ja">Japannees</language>
			<language type="jv">Javaans</language>
			<language type="ka">Georgies</language>
			<language type="khi">Ander Khoi-San</language>
			<language type="km">Khmer</language>
			<language type="kn">Kannada</language>
			<language type="ko">Koreaans</language>
			<language type="kru">kru</language>
			<language type="ku">Koerdies</language>
			<language type="kw">Kornies</language>
			<language type="ky">Kirgisies</language>
			<language type="la">Latyn</language>
			<language type="li">Limburgs</language>
			<language type="ln">Lingala</language>
			<language type="lo">Laotanees</language>
			<language type="lt">Litaus</language>
			<language type="lv">Letties</language>
			<language type="mas">Masai</language>
			<language type="mg">Malgassies</language>
			<language type="mk">Macedonies</language>
			<language type="ml">Malabaars</language>
			<language type="mn">Mongalees</language>
			<language type="mr">Mahratti</language>
			<language type="ms">Maleisies</language>
			<language type="mt">Maltees</language>
			<language type="mul">Veelvuldige tale</language>
			<language type="my">Birmaans</language>
			<language type="nd">Noord-Ndebele</language>
			<language type="ne">Nepalees</language>
			<language type="nl">Nederlands</language>
			<language type="nl_BE">Vlaams</language>
			<language type="nn">Noorweegse Nynorsk</language>
			<language type="no">Noors</language>
			<language type="nr">Suid-Ndebele</language>
			<language type="nso">Sepedi</language>
			<language type="oc">Occitaans</language>
			<language type="or">Oria</language>
			<language type="pa">Pandjabi</language>
			<language type="phn">Fenisies</language>
			<language type="pl">Pools</language>
			<language type="ps">Pasjtoe</language>
			<language type="pt">Portugees</language>
			<language type="pt_BR">Brasiliaanse Portugees</language>
			<language type="ro">Roemeens</language>
			<language type="ru">Russies</language>
			<language type="sa">Sanskrit</language>
			<language type="sco">Skots</language>
			<language type="sd">Sindhi</language>
			<language type="sem">Ander Semities</language>
			<language type="sgn">Gebaretaal</language>
			<language type="sh">Serwo-Kroaties</language>
			<language type="si">Singalees</language>
			<language type="sk">Slowaaks</language>
			<language type="sl">Sloweens</language>
			<language type="sla">Ander Slawies</language>
			<language type="sn">Shona</language>
			<language type="so">Somalies</language>
			<language type="sq">Albanees</language>
			<language type="sr">Serwies</language>
			<language type="ss">Swazi</language>
			<language type="st">Suid-Sotho</language>
			<language type="su">Soedanees</language>
			<language type="sv">Sweeds</language>
			<language type="sw">Swahili</language>
			<language type="ta">Tamil</language>
			<language type="te">Telugees</language>
			<language type="th">Thais</language>
			<language type="ti">Tigrinya</language>
			<language type="tk">Turkmeens</language>
			<language type="tlh">Klingon</language>
			<language type="tn">Tswana</language>
			<language type="tr">Turks</language>
			<language type="ts">Tsonga</language>
			<language type="tw">Twi</language>
			<language type="ug">Uighoers</language>
			<language type="uk">Oekraïens</language>
			<language type="und">Onbepaald</language>
			<language type="ur">Oerdoe</language>
			<language type="uz">Oesbekies</language>
			<language type="ve">Venda</language>
			<language type="vi">Viëtnamees</language>
			<language type="xh">Xhosa</language>
			<language type="yi">Jiddisj</language>
			<language type="zh">Sjinees</language>
			<language type="zh_Hans">Vereenvoudigde Sjinees</language>
			<language type="zh_Hant">Tradisionele Sjinees</language>
			<language type="zu">Zoeloe</language>
		</languages>
		<scripts>
			<script type="Arab">Arabies</script>
			<script type="Armn">Armeens</script>
			<script type="Brai">braille</script>
			<script type="Copt">Kopties</script>
			<script type="Cyrl">Cyrillies</script>
			<script type="Cyrs">Cyrillies (Ou Kerkslawiese variant)</script>
			<script type="Egyp">Egiptiese hiërogliewe</script>
			<script type="Ethi">Etiopies</script>
			<script type="Goth">Goties</script>
			<script type="Grek">Grieks</script>
			<script type="Hans">Vereenvoudigde Sjinees</script>
			<script type="Hant">Tradisionele Sjinees</script>
			<script type="Hebr">Hebreeus</script>
			<script type="Khmr">Khmer</script>
			<script type="Latn">Latyn</script>
			<script type="Mong">Mongools</script>
			<script type="Phnx">Fenisies</script>
			<script type="Ugar">Ugarities</script>
			<script type="Visp">Sigbare spraak</script>
			<script type="Zxxx">Ongeskrewe</script>
			<script type="Zyyy">Algemeen</script>
			<script type="Zzzz">Kode vir ongekodeerde alfabette</script>
		</scripts>
		<territories>
			<territory type="001">Wêreld</territory>
			<territory type="002">Afrika</territory>
			<territory type="005">Suid-Amerika</territory>
			<territory type="009">Oseanië</territory>
			<territory type="011">Wes-Afrika</territory>
			<territory type="013">Sentraal-Amerika</territory>
			<territory type="014">Oos-Afrika</territory>
			<territory type="015">Noord-Afrika</territory>
			<territory type="017">Midde-Afrika</territory>
			<territory type="018">Suider-Afrika</territory>
			<territory type="019">Amerikas</territory>
			<territory type="021">Noord-Amerika</territory>
			<territory type="029">Karibies</territory>
			<territory type="030">Oos-Asië</territory>
			<territory type="034">Suid-Asië</territory>
			<territory type="035">Suidoos-Asië</territory>
			<territory type="039">Suid-Europa</territory>
			<territory type="053">Australië en Nieu-Seeland</territory>
			<territory type="054">Melanesië</territory>
			<territory type="061">Polinesië</territory>
			<territory type="142">Asië</territory>
			<territory type="143">Sentraal-Asië</territory>
			<territory type="145">Wes-Asië</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Oos-Europa</territory>
			<territory type="154">Noord-Europa</territory>
			<territory type="155">Wes-Europa</territory>
			<territory type="172">Statebond</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Verenigde Arabiese Emirate</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua en Barbuda</territory>
			<territory type="AL">Albanië</territory>
			<territory type="AM">Armenië</territory>
			<territory type="AN">Nederlands-Antille</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktika</territory>
			<territory type="AR">Argentinië</territory>
			<territory type="AS">Amerikaans Samoa</territory>
			<territory type="AT">Oostenryk</territory>
			<territory type="AU">Australië</territory>
			<territory type="AZ">Aserbeidjan</territory>
			<territory type="BA">Bosnië en Herzegowina</territory>
			<territory type="BD">Bangladesj</territory>
			<territory type="BE">België</territory>
			<territory type="BF">Boerkina Fasso</territory>
			<territory type="BG">Bulgarye</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BN">Broenei</territory>
			<territory type="BO">Bolivië</territory>
			<territory type="BR">Brasilië</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhoetan</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Wit-Rusland</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CF">Sentraal-Afrikaanse Republiek</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Switserland</territory>
			<territory type="CI">Ivoorkus</territory>
			<territory type="CL">Chili</territory>
			<territory type="CM">Kameroen</territory>
			<territory type="CN">Sjina</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serwië en Montenegro</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Kaap Verde</territory>
			<territory type="CY">Ciprus</territory>
			<territory type="CZ">Tjeggiese Republiek</territory>
			<territory type="DE">Duitsland</territory>
			<territory type="DJ">Djiboeti</territory>
			<territory type="DK">Denemarke</territory>
			<territory type="DO">Dominikaanse Republiek</territory>
			<territory type="DZ">Algerië</territory>
			<territory type="EE">Estland</territory>
			<territory type="EG">Egipte</territory>
			<territory type="EH">Wes-Sahara</territory>
			<territory type="ES">Spanje</territory>
			<territory type="ET">Ethiopië</territory>
			<territory type="FI">Finland</territory>
			<territory type="FJ">Fidji</territory>
			<territory type="FK">Falklandeilande</territory>
			<territory type="FM">Mikronesië</territory>
			<territory type="FO">Faroëreilande</territory>
			<territory type="FR">Frankryk</territory>
			<territory type="GA">Gaboen</territory>
			<territory type="GB">Groot-Brittanje</territory>
			<territory type="GE">Georgië</territory>
			<territory type="GF">Frans-Guyana</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GL">Groenland</territory>
			<territory type="GM">Gambië</territory>
			<territory type="GN">Guinee</territory>
			<territory type="GQ">Ekwatoriaal-Guinee</territory>
			<territory type="GR">Griekeland</territory>
			<territory type="GW">Guinee-Bissau</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HR">Kroasië</territory>
			<territory type="HT">Haïti</territory>
			<territory type="HU">Hongarye</territory>
			<territory type="ID">Indonesië</territory>
			<territory type="IE">Ierland</territory>
			<territory type="IL">Israel</territory>
			<territory type="IN">Indië</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Ysland</territory>
			<territory type="IT">Italië</territory>
			<territory type="JM">Jamaika</territory>
			<territory type="JO">Jordanië</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirgisië</territory>
			<territory type="KH">Kambodja</territory>
			<territory type="KM">Comore</territory>
			<territory type="KN">Saint Kitts en Nevis</territory>
			<territory type="KP">Noord-Korea</territory>
			<territory type="KR">Suid-Korea</territory>
			<territory type="KW">Koeweit</territory>
			<territory type="KY">Kaaimanseilande</territory>
			<territory type="KZ">Kasakstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberië</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Litaue</territory>
			<territory type="LU">Luxemburg</territory>
			<territory type="LV">Letland</territory>
			<territory type="LY">Libië</territory>
			<territory type="MA">Marokko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshall-eilande</territory>
			<territory type="MK">Macedonië</territory>
			<territory type="ML">Mali</territory>
			<territory type="MN">Mongolië</territory>
			<territory type="MO">Macao</territory>
			<territory type="MR">Mouritanië</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldive</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Maleisië</territory>
			<territory type="MZ">Mosambiek</territory>
			<territory type="NA">Namibië</territory>
			<territory type="NC">Nieu-Kaledonië</territory>
			<territory type="NE">Niger</territory>
			<territory type="NG">Nigerië</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Nederland</territory>
			<territory type="NO">Noorweë</territory>
			<territory type="NR">Naoeroe</territory>
			<territory type="NZ">Nieu-Seeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PG">Papoea Nieu-Guinee</territory>
			<territory type="PH">Filippyne</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Pole</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Roemenië</territory>
			<territory type="RU">Rusland</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saoedi-Arabië</territory>
			<territory type="SB">Solomon Eilande</territory>
			<territory type="SC">Seychelle</territory>
			<territory type="SD">Soedan</territory>
			<territory type="SE">Swede</territory>
			<territory type="SG">Singapoer</territory>
			<territory type="SI">Slowenië</territory>
			<territory type="SK">Slowakye</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalië</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tome en Principe</territory>
			<territory type="SV">Salvador</territory>
			<territory type="SY">Sirië</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TD">Tsjaad</territory>
			<territory type="TH">Thailand</territory>
			<territory type="TJ">Tadjikistan</territory>
			<territory type="TM">Turkmenië</territory>
			<territory type="TN">Tunisië</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turkye</territory>
			<territory type="TT">Trinidad en Tobago</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzanië</territory>
			<territory type="UA">Oekraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="US">Verenigde State van Amerika</territory>
			<territory type="UZ">Oesbekistan</territory>
			<territory type="VA">Vatikaan</territory>
			<territory type="VC">Saint Vincent en die Grenadine</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VN">Viëtnam</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="ZA">Suid-Afrika</territory>
			<territory type="ZM">Zambië</territory>
			<territory type="ZW">Zimbabwe</territory>
		</territories>
		<variants>
			<variant type="1901">Tradisionele Duitse ortografie</variant>
			<variant type="1996">Duitse ortografie van 1996</variant>
			<variant type="REVISED">Hersiene ortografie</variant>
		</variants>
		<keys>
			<key type="calendar">Kalender</key>
			<key type="collation">Vergelyking</key>
			<key type="currency">Geldeenheid</key>
		</keys>
		<types>
			<type type="big5han" key="collation">Tradisionele Sjinees (Groot5)</type>
			<type type="chinese" key="calendar">Sjinese kalender</type>
			<type type="gb2312han" key="collation">Vereenvoudigde Sjinees</type>
			<type type="gregorian" key="calendar">Gregoriaanse kalender</type>
			<type type="hebrew" key="calendar">Hebreeuse kalender</type>
			<type type="islamic" key="calendar">Islamitiese kalender</type>
			<type type="japanese" key="calendar">Japannese kalender</type>
			<type type="phonebook" key="collation">Telefoongidsvolgorde</type>
			<type type="traditional" key="collation">Tradisioneel</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">VSA</measurementSystemName>
			<measurementSystemName type="metric">Metriek</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Taal: {0}</codePattern>
			<codePattern type="script">Skrif: {0}</codePattern>
			<codePattern type="territory">Omgewing: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á â b-e é è ê ë f-i î ï j-o ô ö p-u û v-z ʼn]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[à å-ç ñ ø œ ß]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Jan</month>
							<month type="2">Feb</month>
							<month type="3">Mar</month>
							<month type="4">Apr</month>
							<month type="5">Mei</month>
							<month type="6">Jun</month>
							<month type="7">Jul</month>
							<month type="8">Aug</month>
							<month type="9">Sep</month>
							<month type="10">Okt</month>
							<month type="11">Nov</month>
							<month type="12">Des</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Januarie</month>
							<month type="2">Februarie</month>
							<month type="3">Maart</month>
							<month type="4">April</month>
							<month type="5">Mei</month>
							<month type="6">Junie</month>
							<month type="7">Julie</month>
							<month type="8">Augustus</month>
							<month type="9">September</month>
							<month type="10">Oktober</month>
							<month type="11">November</month>
							<month type="12">Desember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">So</day>
							<day type="mon">Ma</day>
							<day type="tue">Di</day>
							<day type="wed">Wo</day>
							<day type="thu">Do</day>
							<day type="fri">Vr</day>
							<day type="sat">Sa</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Sondag</day>
							<day type="mon">Maandag</day>
							<day type="tue">Dinsdag</day>
							<day type="wed">Woensdag</day>
							<day type="thu">Donderdag</day>
							<day type="fri">Vrydag</day>
							<day type="sat">Saterdag</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1ste kwartaal</quarter>
							<quarter type="2">2de kwartaal</quarter>
							<quarter type="3">3de kwartaal</quarter>
							<quarter type="4">4de kwartaal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>vm.</am>
				<pm>nm.</pm>
				<eras>
					<eraNames>
						<era type="0">voor Christus</era>
						<era type="1">na Christus</era>
					</eraNames>
					<eraAbbr>
						<era type="0">v.C.</era>
						<era type="1">n.C.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yyyy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">MM/dd</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy/MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd - E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MM-dd - E, MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d - E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d - E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">MMM d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd - MM-dd</greatestDifference>
							<greatestDifference id="d">MM-dd - MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">HH-HH</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">HH-HH v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM - yyyy-MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM - yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd - E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">yyyy MMM-MMM</greatestDifference>
							<greatestDifference id="y">yyyy MMM - yyyy MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="d">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
							<greatestDifference id="y">E, yyyy MMM dd - E, yyyy MMM dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">yyyy MMM d - MMM d</greatestDifference>
							<greatestDifference id="d">yyyy MMM d-d</greatestDifference>
							<greatestDifference id="y">yyyy MMM d - yyyy MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">yyyy-MM-dd - yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Tydperk</displayName>
					</field>
					<field type="year">
						<displayName>Jaar</displayName>
					</field>
					<field type="month">
						<displayName>Maand</displayName>
					</field>
					<field type="week">
						<displayName>Week</displayName>
					</field>
					<field type="day">
						<displayName>Dag</displayName>
					</field>
					<field type="weekday">
						<displayName>Dag van die week</displayName>
					</field>
					<field type="hour">
						<displayName>Uur</displayName>
					</field>
					<field type="minute">
						<displayName>Minuut</displayName>
					</field>
					<field type="second">
						<displayName>Sekonde</displayName>
					</field>
					<field type="zone">
						<displayName>Tydsone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Suidpool</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bagrein</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Sjanghai</exemplarCity>
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Mexikostad</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskou</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Reaal</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Switserse frank</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Joean</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britse pond</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Italiaanse lier</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japannese jen</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Namibiese dollar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Roebel</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Ou Turkse lier</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Turkse lier</displayName>
			</currency>
			<currency type="USD">
				<displayName>Amerikaanse dollar</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Onbekende of ongeldige geldeenheid</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand</displayName>
				<symbol>R</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>ja:j</yesstr>
			<nostr>nee:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��y�##Locale/Data/mr_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.56 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="mr"/>
		<territory type="IN"/>
	</identity>
</ldml>
PKpG[#Hz�vvLocale/Data/et.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.78 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="et"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afari</language>
			<language type="ab">abhaasi</language>
			<language type="ace">atšehi</language>
			<language type="ach">akoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adõgee</language>
			<language type="ae">avesta</language>
			<language type="af">afrikaani</language>
			<language type="afa">muu afroaasia</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akani</language>
			<language type="akk">akadi</language>
			<language type="ale">aleuudi</language>
			<language type="alg">algonkini keeled</language>
			<language type="alt">altai</language>
			<language type="am">amhari</language>
			<language type="an">aragoni</language>
			<language type="ang">vanainglise</language>
			<language type="anp">angika</language>
			<language type="apa">apatši keeled</language>
			<language type="ar">araabia</language>
			<language type="arc">aramea</language>
			<language type="arn">araukaani</language>
			<language type="arp">arapaho</language>
			<language type="art">muu tehiskeel</language>
			<language type="arw">aravaki</language>
			<language type="as">assami</language>
			<language type="ast">astuuria</language>
			<language type="ath">atapaski keeled</language>
			<language type="aus">Austraalia keeled</language>
			<language type="av">avaari</language>
			<language type="awa">avadhi</language>
			<language type="ay">aimara</language>
			<language type="az">aserbaidžaani</language>
			<language type="ba">baškiiri</language>
			<language type="bad">banda</language>
			<language type="bai">bamileke keeled</language>
			<language type="bal">belutši</language>
			<language type="ban">bali</language>
			<language type="bas">basa</language>
			<language type="bat">muu balti</language>
			<language type="be">valgevene</language>
			<language type="bej">bedža</language>
			<language type="bem">bemba</language>
			<language type="ber">berberi</language>
			<language type="bg">bulgaaria</language>
			<language type="bh">bihaari</language>
			<language type="bho">bhodžpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bikoli</language>
			<language type="bin">edo</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="bnt">bantu</language>
			<language type="bo">tiibeti</language>
			<language type="br">bretooni</language>
			<language type="bra">bradži</language>
			<language type="bs">bosnia</language>
			<language type="btk">bataki</language>
			<language type="bua">burjaadi</language>
			<language type="bug">bugi</language>
			<language type="byn">bilini</language>
			<language type="ca">katalaani</language>
			<language type="cad">kado</language>
			<language type="cai">muu Kesk-Ameerika indiaani</language>
			<language type="car">kariibi</language>
			<language type="cau">muu Kaukaasia</language>
			<language type="ce">tšetšeeni</language>
			<language type="ceb">sebu</language>
			<language type="cel">muu keldi</language>
			<language type="ch">tšamorro</language>
			<language type="chb">tšibtša</language>
			<language type="chg">tšagatai</language>
			<language type="chk">tšuugi</language>
			<language type="chm">mari</language>
			<language type="chn">tšinuki žargoon</language>
			<language type="cho">tšokto</language>
			<language type="chp">tšipevai</language>
			<language type="chr">tšerokii</language>
			<language type="chy">šaieeni</language>
			<language type="cmc">tšami keeled</language>
			<language type="co">korsika</language>
			<language type="cop">kopti</language>
			<language type="cpe">muud inglispõhjalised kreool- ja pidžinkeeled</language>
			<language type="cpf">muud prantsuspõhjalised kreool- ja pidžinkeeled</language>
			<language type="cpp">muud portugalipõhjalised kreool- ja pidžinkeeled</language>
			<language type="cr">krii</language>
			<language type="crh">krimmitatari</language>
			<language type="crp">muud kreool- ja pidžinkeeled</language>
			<language type="cs">tšehhi</language>
			<language type="csb">kašuubi</language>
			<language type="cu">kirikuslaavi</language>
			<language type="cus">muu kuši keel</language>
			<language type="cv">tšuvaši</language>
			<language type="cy">kõmri</language>
			<language type="da">taani</language>
			<language type="dak">siuu</language>
			<language type="dar">dargi</language>
			<language type="day">dajaki</language>
			<language type="de">saksa</language>
			<language type="del">delavari</language>
			<language type="den">sleivi</language>
			<language type="dgr">dogribi</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">muu draviidi keel</language>
			<language type="dsb">alamsorbi</language>
			<language type="dua">duala</language>
			<language type="dum">keskhollandi</language>
			<language type="dv">maldiivi</language>
			<language type="dyu">djula</language>
			<language type="dz">bhutani</language>
			<language type="ee">eve</language>
			<language type="efi">ibibio</language>
			<language type="egy">muinasegiptuse</language>
			<language type="eka">ekadžuki</language>
			<language type="el">kreeka</language>
			<language type="elx">eelami</language>
			<language type="en">inglise</language>
			<language type="en_US">inglise keel (US)</language>
			<language type="enm">keskinglise</language>
			<language type="eo">esperanto</language>
			<language type="es">hispaania</language>
			<language type="et">eesti</language>
			<language type="eu">baski</language>
			<language type="ewo">evondo</language>
			<language type="fa">pärsia</language>
			<language type="fan">fangi</language>
			<language type="fat">fanti</language>
			<language type="ff">fulbe</language>
			<language type="fi">soome</language>
			<language type="fil">filipino</language>
			<language type="fiu">muu soomeugri</language>
			<language type="fj">fidži</language>
			<language type="fo">fääri</language>
			<language type="fon">foni</language>
			<language type="fr">prantsuse</language>
			<language type="frm">keskprantsuse</language>
			<language type="fro">vanaprantsuse</language>
			<language type="frr">põhjafriisi</language>
			<language type="frs">idafriisi</language>
			<language type="fur">friuuli</language>
			<language type="fy">läänefriisi</language>
			<language type="ga">iiri</language>
			<language type="gaa">gaa</language>
			<language type="gay">gajo</language>
			<language type="gba">gbaja</language>
			<language type="gd">gaeli</language>
			<language type="gem">muu germaani</language>
			<language type="gez">etioopia</language>
			<language type="gil">kiribati</language>
			<language type="gl">galeegi</language>
			<language type="gmh">keskülemsaksa</language>
			<language type="gn">guaranii</language>
			<language type="goh">vanaülemsaksa</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gooti</language>
			<language type="grb">grebo</language>
			<language type="grc">vanakreeka</language>
			<language type="gsw">alemanni</language>
			<language type="gu">gudžarati</language>
			<language type="gv">mänksi</language>
			<language type="gwi">gvitšini</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">havai</language>
			<language type="he">heebrea</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligainoni</language>
			<language type="him">himtšali</language>
			<language type="hit">heti</language>
			<language type="hmn">hmongi</language>
			<language type="ho">motu</language>
			<language type="hr">horvaadi</language>
			<language type="hsb">ülemsorbi</language>
			<language type="ht">haiti</language>
			<language type="hu">ungari</language>
			<language type="hup">hupa</language>
			<language type="hy">armeenia</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">ibani</language>
			<language type="id">indoneesia</language>
			<language type="ie">interlingue</language>
			<language type="ig">ibo</language>
			<language type="ii">Sichuani jii</language>
			<language type="ijo">idžo</language>
			<language type="ik">injupiaki</language>
			<language type="ilo">iloko</language>
			<language type="inc">muu India</language>
			<language type="ine">muu indoeuroopa</language>
			<language type="inh">inguši</language>
			<language type="io">ido</language>
			<language type="ira">muu Iraani</language>
			<language type="iro">irokeesi keeled</language>
			<language type="is">islandi</language>
			<language type="it">itaalia</language>
			<language type="iu">inuktituti</language>
			<language type="ja">jaapani</language>
			<language type="jbo">lojbani</language>
			<language type="jpr">juudipärsia</language>
			<language type="jrb">juudiaraabia</language>
			<language type="jv">jaava</language>
			<language type="ka">gruusia</language>
			<language type="kaa">karakalpaki</language>
			<language type="kab">kabiili</language>
			<language type="kac">katšini</language>
			<language type="kam">kamba</language>
			<language type="kar">kareni</language>
			<language type="kaw">kaavi</language>
			<language type="kbd">kabardi-tšerkessi</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">muu khoisani</language>
			<language type="kho">saki</language>
			<language type="ki">kikuju</language>
			<language type="kj">ambo</language>
			<language type="kk">kasahhi</language>
			<language type="kl">grööni</language>
			<language type="km">khmeeri</language>
			<language type="kmb">mbundu</language>
			<language type="kn">kannada</language>
			<language type="ko">korea</language>
			<language type="kok">konkani</language>
			<language type="kos">kosrae</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karatšai-balkaari</language>
			<language type="krl">karjala</language>
			<language type="kro">kruu</language>
			<language type="kru">oraoni</language>
			<language type="ks">kašmiiri</language>
			<language type="ku">kurdi</language>
			<language type="kum">kumõki</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">korni</language>
			<language type="ky">kirgiisi</language>
			<language type="la">ladina</language>
			<language type="lad">ladiino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">letseburgi</language>
			<language type="lez">lesgi</language>
			<language type="lg">ganda</language>
			<language type="li">limburgi</language>
			<language type="ln">lingala</language>
			<language type="lo">lao</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">leedu</language>
			<language type="lu">luba</language>
			<language type="lua">lulua</language>
			<language type="lui">luisenjo</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lušei</language>
			<language type="lv">läti</language>
			<language type="mad">madura</language>
			<language type="mag">magali</language>
			<language type="mai">maithili</language>
			<language type="mak">makassari</language>
			<language type="man">malinke</language>
			<language type="map">austroneesia keeled</language>
			<language type="mas">masai</language>
			<language type="mdf">mokša</language>
			<language type="mdr">mandari</language>
			<language type="men">mende</language>
			<language type="mg">malagassi</language>
			<language type="mga">keskiiri</language>
			<language type="mh">maršalli</language>
			<language type="mi">maoori</language>
			<language type="mic">mikmaki</language>
			<language type="min">minangkabau</language>
			<language type="mis">üksikkeeled</language>
			<language type="mk">makedoonia</language>
			<language type="mkh">muu moni-khmeeri</language>
			<language type="ml">malajalami</language>
			<language type="mn">mongoli</language>
			<language type="mnc">mandžu</language>
			<language type="mni">manipuri</language>
			<language type="mno">manobo keeled</language>
			<language type="mo">moldova</language>
			<language type="moh">mohoogi</language>
			<language type="mos">more</language>
			<language type="mr">marathi</language>
			<language type="ms">malai</language>
			<language type="mt">malta</language>
			<language type="mul">mitu keelt</language>
			<language type="mun">munda keel</language>
			<language type="mus">maskogi</language>
			<language type="mwl">miranda</language>
			<language type="mwr">marvari</language>
			<language type="my">birma</language>
			<language type="myn">maia keeled</language>
			<language type="myv">ersa</language>
			<language type="na">nauru</language>
			<language type="nah">nahua</language>
			<language type="nai">muu Põhja-Ameerika indiaani</language>
			<language type="nap">napoli</language>
			<language type="nb">norra bokmål</language>
			<language type="nd">põhjandebele</language>
			<language type="nds">alamsaksa</language>
			<language type="ne">nepali</language>
			<language type="new">nevari</language>
			<language type="ng">ndonga</language>
			<language type="nia">niasi</language>
			<language type="nic">muu Nigeri-Kordofani</language>
			<language type="niu">niue</language>
			<language type="nl">hollandi</language>
			<language type="nn">norra nynorsk</language>
			<language type="no">norra</language>
			<language type="nog">nogai</language>
			<language type="non">vanapõhjala</language>
			<language type="nqo">nkoo</language>
			<language type="nr">lõunandebele</language>
			<language type="nso">pedi</language>
			<language type="nub">Nuubia keeled</language>
			<language type="nv">navaho</language>
			<language type="nwc">vananevari</language>
			<language type="ny">njandža</language>
			<language type="nym">njamvesi</language>
			<language type="nyn">nkole</language>
			<language type="nyo">njoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">oksitaani</language>
			<language type="oj">odžibvei</language>
			<language type="om">oromo</language>
			<language type="or">oria</language>
			<language type="os">osseedi</language>
			<language type="osa">oseidži</language>
			<language type="ota">osmanitürgi</language>
			<language type="oto">otomi keeled</language>
			<language type="pa">pandžabi</language>
			<language type="paa">muu Paapua</language>
			<language type="pag">pangasinani</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">belau</language>
			<language type="peo">vanapärsia</language>
			<language type="phi">muu Filipiini</language>
			<language type="phn">foiniikia</language>
			<language type="pi">paali</language>
			<language type="pl">poola</language>
			<language type="pon">poonpei</language>
			<language type="pra">praakriti keeled</language>
			<language type="pro">vanaprovansi</language>
			<language type="ps">puštu</language>
			<language type="pt">portugali</language>
			<language type="pt_BR">portugali (Braziilia)</language>
			<language type="qu">ketšua</language>
			<language type="raj">radžastani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotonga</language>
			<language type="rm">retoromaani</language>
			<language type="rn">rundi</language>
			<language type="ro">rumeenia</language>
			<language type="roa">muu romaani</language>
			<language type="rom">mustlaskeel</language>
			<language type="ru">vene</language>
			<language type="rup">aromuuni</language>
			<language type="rw">ruanda</language>
			<language type="sa">sanskriti</language>
			<language type="sad">sandave</language>
			<language type="sah">jakuudi</language>
			<language type="sai">muu Lõuna-Ameerika indiaani</language>
			<language type="sal">sališi keeled</language>
			<language type="sam">Samaaria aramea</language>
			<language type="sas">sasaki</language>
			<language type="sat">santali</language>
			<language type="sc">sardiinia</language>
			<language type="scn">sitsiilia</language>
			<language type="sco">šoti</language>
			<language type="sd">sindhi</language>
			<language type="se">põhjasaami</language>
			<language type="sel">sölkupi</language>
			<language type="sem">muu semi</language>
			<language type="sg">sango</language>
			<language type="sga">vanaiiri</language>
			<language type="sgn">viipekeeled</language>
			<language type="sh">serbia-horvaadi</language>
			<language type="shn">šani</language>
			<language type="si">singali</language>
			<language type="sid">sidamo</language>
			<language type="sio">siuu keeled</language>
			<language type="sit">muu Hiina-Tiibeti</language>
			<language type="sk">slovaki</language>
			<language type="sl">sloveeni</language>
			<language type="sla">muu slaavi</language>
			<language type="sm">samoa</language>
			<language type="sma">lõunasaami</language>
			<language type="smi">muu saami</language>
			<language type="smj">Lule saami</language>
			<language type="smn">Inari saami</language>
			<language type="sms">koltasaami</language>
			<language type="sn">šona</language>
			<language type="snk">soninke</language>
			<language type="so">somaali</language>
			<language type="sog">sogdi</language>
			<language type="son">songai</language>
			<language type="sq">albaania</language>
			<language type="sr">serbia</language>
			<language type="srn">sranani</language>
			<language type="srr">sereri</language>
			<language type="ss">svaasi</language>
			<language type="ssa">muu Niiluse-Sahara</language>
			<language type="st">lõunasotho</language>
			<language type="su">sunda</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumeri</language>
			<language type="sv">rootsi</language>
			<language type="sw">suahiili</language>
			<language type="syr">süüria</language>
			<language type="ta">tamili</language>
			<language type="tai">muu tai keel</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetumi</language>
			<language type="tg">tadžiki</language>
			<language type="th">tai</language>
			<language type="ti">tigrinja</language>
			<language type="tig">tigree</language>
			<language type="tiv">tivi</language>
			<language type="tk">türkmeeni</language>
			<language type="tkl">tokelau</language>
			<language type="tl">tagalogi</language>
			<language type="tlh">klingoni</language>
			<language type="tli">tlingiti</language>
			<language type="tmh">tamašeki</language>
			<language type="tn">tsvana</language>
			<language type="to">tonga</language>
			<language type="tog">tšitonga</language>
			<language type="tpi">uusmelaneesia</language>
			<language type="tr">türgi</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tšimši keeled</language>
			<language type="tt">tatari</language>
			<language type="tum">tumbuka</language>
			<language type="tup">tupii keeled</language>
			<language type="tut">muu Altai</language>
			<language type="tvl">tuvalu</language>
			<language type="tw">tvii</language>
			<language type="ty">tahiti</language>
			<language type="tyv">tõva</language>
			<language type="udm">udmurdi</language>
			<language type="ug">uiguuri</language>
			<language type="uga">ugariti</language>
			<language type="uk">ukraina</language>
			<language type="umb">umbundu</language>
			<language type="und">määramata</language>
			<language type="ur">urdu</language>
			<language type="uz">usbeki</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnami</language>
			<language type="vo">volapüki</language>
			<language type="vot">vadja</language>
			<language type="wa">vallooni</language>
			<language type="wak">vakaši keeled</language>
			<language type="wal">volamo</language>
			<language type="war">varai</language>
			<language type="was">vašo</language>
			<language type="wen">sorbi keeled</language>
			<language type="wo">volofi</language>
			<language type="xal">kalmõki</language>
			<language type="xh">koosa</language>
			<language type="yao">jao</language>
			<language type="yap">japi</language>
			<language type="yi">jidiši</language>
			<language type="yo">joruba</language>
			<language type="ypk">jupiki keeled</language>
			<language type="za">tšuangi</language>
			<language type="zap">sapoteegi</language>
			<language type="zen">zenaga</language>
			<language type="zh">hiina</language>
			<language type="zh_Hans">hiina keel - lihtsustatud</language>
			<language type="zh_Hant">hiina keel - traditsiooniline</language>
			<language type="znd">zande</language>
			<language type="zu">suulu</language>
			<language type="zun">sunji</language>
			<language type="zxx">mittekeeleline</language>
		</languages>
		<scripts>
			<script type="Arab">araabia</script>
			<script type="Armn">armeenia</script>
			<script type="Bali">bali</script>
			<script type="Batk">bataki</script>
			<script type="Beng">bengali</script>
			<script type="Blis">Blissi sümbolid</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">punktkiri</script>
			<script type="Bugi">bugi</script>
			<script type="Buhd">buhidi</script>
			<script type="Cans">Kanada põlisrahvaste ühtlustatud silpkiri</script>
			<script type="Cham">tšami</script>
			<script type="Cher">tšerokii</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">kopti</script>
			<script type="Cprt">muinasküprose</script>
			<script type="Cyrl">kirillitsa</script>
			<script type="Cyrs">kirikuslaavi kirillitsa</script>
			<script type="Deva">devanaagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egiptuse demootiline</script>
			<script type="Egyh">egiptuse hieraatiline</script>
			<script type="Egyp">egiptuse hieroglüüfkiri</script>
			<script type="Ethi">etioopia</script>
			<script type="Geok">gruusia hutsuri</script>
			<script type="Geor">gruusia</script>
			<script type="Glag">glagoolitsa</script>
			<script type="Goth">gooti</script>
			<script type="Grek">kreeka</script>
			<script type="Gujr">gudžarati</script>
			<script type="Guru">gurmukhi</script>
			<script type="Hang">hanguli</script>
			<script type="Hani">hiina han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">hiina lihtsustatud</script>
			<script type="Hant">hiina traditsiooniline</script>
			<script type="Hebr">heebrea</script>
			<script type="Hira">hiragana</script>
			<script type="Hrkt">katakana või hiragana</script>
			<script type="Hung">vanaungari</script>
			<script type="Inds">induse</script>
			<script type="Ital">vanaitali</script>
			<script type="Java">jaava</script>
			<script type="Jpan">jaapani</script>
			<script type="Kali">kaja li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharoshthi</script>
			<script type="Khmr">khmeeri</script>
			<script type="Knda">kannada</script>
			<script type="Laoo">lao</script>
			<script type="Latf">ladina fraktuurkiri</script>
			<script type="Latg">ladina keldi kiri</script>
			<script type="Latn">ladina</script>
			<script type="Lepc">leptša</script>
			<script type="Limb">limbu</script>
			<script type="Lina">lineaar-A</script>
			<script type="Linb">lineaar-B</script>
			<script type="Mand">mandea</script>
			<script type="Maya">maaja hieroglüüfkiri</script>
			<script type="Mero">meroe</script>
			<script type="Mlym">malajalami</script>
			<script type="Mong">mongoli</script>
			<script type="Mymr">birma</script>
			<script type="Nkoo">nkoo</script>
			<script type="Ogam">ogam</script>
			<script type="Orkh">orhoni</script>
			<script type="Orya">oria</script>
			<script type="Osma">osmanja</script>
			<script type="Perm">vanapermi</script>
			<script type="Phag">phags-pa</script>
			<script type="Phnx">foiniikia</script>
			<script type="Plrd">Pollardi miao</script>
			<script type="Qaai">päritud</script>
			<script type="Roro">rongorongo</script>
			<script type="Runr">ruunikiri</script>
			<script type="Sara">sarati</script>
			<script type="Shaw">Shaw tähestik</script>
			<script type="Sinh">singali</script>
			<script type="Sylo">silotinagri</script>
			<script type="Syrc">assüüria</script>
			<script type="Syre">assüüria estrangelo</script>
			<script type="Syrj">lääneassüüria</script>
			<script type="Syrn">idaassüüria</script>
			<script type="Tagb">tagbanwa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">lihtsustatud tai lue</script>
			<script type="Taml">tamili</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagi</script>
			<script type="Tglg">tagalogi</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">tai</script>
			<script type="Tibt">tiibeti</script>
			<script type="Ugar">ugariti</script>
			<script type="Vaii">vai</script>
			<script type="Visp">häälduskiri</script>
			<script type="Xpeo">vanapärsia</script>
			<script type="Xsux">sumeri kiilkiri</script>
			<script type="Yiii">jii</script>
			<script type="Zxxx">kirjakeeleta</script>
			<script type="Zyyy">üldine</script>
			<script type="Zzzz">määramata</script>
		</scripts>
		<territories>
			<territory type="001">maailm</territory>
			<territory type="002">Aafrika</territory>
			<territory type="003">Põhja-Ameerika</territory>
			<territory type="005">Lõuna-Ameerika</territory>
			<territory type="009">Okeaania</territory>
			<territory type="011">Lääne-Aafrika</territory>
			<territory type="013">Kesk-Ameerika</territory>
			<territory type="014">Ida-Aafrika</territory>
			<territory type="015">Põhja-Aafrika</territory>
			<territory type="017">Kesk-Aafrika</territory>
			<territory type="018">Lõuna-Aafrika</territory>
			<territory type="019">Ameerika maailmajagu</territory>
			<territory type="021">Ameerika põhjaosa</territory>
			<territory type="029">Kariibi meri</territory>
			<territory type="030">Ida-Aasia</territory>
			<territory type="034">Lõuna-Aasia</territory>
			<territory type="035">Kagu-Aasia</territory>
			<territory type="039">Lõuna-Euroopa</territory>
			<territory type="053">Austraalia ja Uus-Meremaa</territory>
			<territory type="054">Melaneesia</territory>
			<territory type="057">Mikroneesia</territory>
			<territory type="061">Polüneesia</territory>
			<territory type="062">Kesk-Aasia lõunaosa</territory>
			<territory type="142">Aasia</territory>
			<territory type="143">Kesk-Aasia</territory>
			<territory type="145">Lääne-Aasia</territory>
			<territory type="150">Euroopa</territory>
			<territory type="151">Ida-Euroopa</territory>
			<territory type="154">Põhja-Euroopa</territory>
			<territory type="155">Lääne-Euroopa</territory>
			<territory type="172">Sõltumatute Riikide Ühendus</territory>
			<territory type="419">Ladina-Ameerika ja Kariibi meri</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Araabia Ühendemiraadid</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua ja Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albaania</territory>
			<territory type="AM">Armeenia</territory>
			<territory type="AN">Hollandi Antillid</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktis</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Ameerika Samoa</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Austraalia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Ahvenamaa</territory>
			<territory type="AZ">Aserbaidžaan</territory>
			<territory type="BA">Bosnia ja Hertsegoviina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgia</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaaria</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Boliivia</territory>
			<territory type="BR">Brasiilia</territory>
			<territory type="BS">Bahama</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Bouvet’ saar</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Valgevene</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kookossaared</territory>
			<territory type="CD">Kongo DV</territory>
			<territory type="CF">Kesk-Aafrika Vabariik</territory>
			<territory type="CG">Kongo Vabariik</territory>
			<territory type="CH">Šveits</territory>
			<territory type="CI">Côte d'Ivoire</territory>
			<territory type="CK">Cooki saared</territory>
			<territory type="CL">Tšiili</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Hiina</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia ja Montenegro</territory>
			<territory type="CU">Kuuba</territory>
			<territory type="CV">Roheneemesaared</territory>
			<territory type="CX">Jõulusaar</territory>
			<territory type="CY">Küpros</territory>
			<territory type="CZ">Tšehhi</territory>
			<territory type="DE">Saksamaa</territory>
			<territory type="DJ">Djibouti</territory>
			<territory type="DK">Taani</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">Dominikaani Vabariik</territory>
			<territory type="DZ">Alžeeria</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Eesti</territory>
			<territory type="EG">Egiptus</territory>
			<territory type="EH">Lääne-Sahara</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">Hispaania</territory>
			<territory type="ET">Etioopia</territory>
			<territory type="FI">Soome</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandi saared</territory>
			<territory type="FM">Mikroneesia Liiduriigid</territory>
			<territory type="FO">Fääri saared</territory>
			<territory type="FR">Prantsusmaa</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Suurbritannia</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruusia</territory>
			<territory type="GF">Prantsuse Guajaana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Gröönimaa</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatoriaal-Guinea</territory>
			<territory type="GR">Kreeka</territory>
			<territory type="GS">Lõuna-Georgia ja Lõuna-Sandwichi saared</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hongkong</territory>
			<territory type="HM">Heard ja McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Horvaatia</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ungari</territory>
			<territory type="ID">Indoneesia</territory>
			<territory type="IE">Iirimaa</territory>
			<territory type="IL">Iisrael</territory>
			<territory type="IM">Mani saar</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Briti India ookeani ala</territory>
			<territory type="IQ">Iraak</territory>
			<territory type="IR">Iraan</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Itaalia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordaania</territory>
			<territory type="JP">Jaapan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kõrgõzstan</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komoorid</territory>
			<territory type="KN">Saint Kitts ja Nevis</territory>
			<territory type="KP">Põhja-Korea</territory>
			<territory type="KR">Lõuna-Korea</territory>
			<territory type="KW">Kuveit</territory>
			<territory type="KY">Kaimanisaared</territory>
			<territory type="KZ">Kasahstan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liibanon</territory>
			<territory type="LC">Saint Lucia</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Libeeria</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Leedu</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="LV">Läti</territory>
			<territory type="LY">Liibüa</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldova</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Marshalli Saared</territory>
			<territory type="MK">Makedoonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongoolia</territory>
			<territory type="MO">Aomen</territory>
			<territory type="MP">Põhja-Mariaanid</territory>
			<territory type="MQ">Martinique</territory>
			<territory type="MR">Mauritaania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauritius</territory>
			<territory type="MV">Maldiivid</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Mehhiko</territory>
			<territory type="MY">Malaisia</territory>
			<territory type="MZ">Mosambiik</territory>
			<territory type="NA">Namiibia</territory>
			<territory type="NC">Uus-Kaledoonia</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolk</territory>
			<territory type="NG">Nigeeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Holland</territory>
			<territory type="NO">Norra</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Uus-Meremaa</territory>
			<territory type="OM">Omaan</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peruu</territory>
			<territory type="PF">Prantsuse Polüneesia</territory>
			<territory type="PG">Paapua Uus-Guinea</territory>
			<territory type="PH">Filipiinid</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poola</territory>
			<territory type="PM">Saint-Pierre ja Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestiina ala</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Belau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Okeaania hajasaared</territory>
			<territory type="QU">Euroopa Liit</territory>
			<territory type="RE">Réunion</territory>
			<territory type="RO">Rumeenia</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Venemaa</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SA">Saudi Araabia</territory>
			<territory type="SB">Saalomoni Saared</territory>
			<territory type="SC">Seišellid</territory>
			<territory type="SD">Sudaan</territory>
			<territory type="SE">Rootsi</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Saint Helena</territory>
			<territory type="SI">Sloveenia</territory>
			<territory type="SJ">Svalbard ja Jan Mayen</territory>
			<territory type="SK">Slovakkia</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somaalia</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">São Tomé ja Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Süüria</territory>
			<territory type="SZ">Svaasimaa</territory>
			<territory type="TC">Turks ja Caicos</territory>
			<territory type="TD">Tšaad</territory>
			<territory type="TF">Prantsuse Lõunaalad</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tai</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Ida-Timor</territory>
			<territory type="TM">Türkmenistan</territory>
			<territory type="TN">Tuneesia</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Türgi</territory>
			<territory type="TT">Trinidad ja Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tansaania</territory>
			<territory type="UA">Ukraina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Ühendriikide hajasaared</territory>
			<territory type="US">Ameerika Ühendriigid</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Usbekistan</territory>
			<territory type="VA">Vatikan</territory>
			<territory type="VC">Saint Vincent ja Grenadiinid</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Briti Neitsisaared</territory>
			<territory type="VI">USA Neitsisaared</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis ja Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jeemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Lõuna-Aafrika Vabariik</territory>
			<territory type="ZM">Sambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">määramata</territory>
		</territories>
		<variants>
			<variant type="1901">saksa traditsiooniline kirjaviis</variant>
			<variant type="1996">saksa reformitud kirjaviis</variant>
			<variant type="NEDIS">Natisone murre</variant>
			<variant type="POLYTON">polütooniline</variant>
			<variant type="REVISED">uus kirjaviis</variant>
			<variant type="ROZAJ">Resia murre</variant>
			<variant type="SAAHO">saho murre</variant>
		</variants>
		<keys>
			<key type="calendar">kalender</key>
			<key type="collation">sortimine</key>
			<key type="currency">vääring</key>
		</keys>
		<types>
			<type type="big5han" key="collation">hiina traditsiooniline - big5</type>
			<type type="buddhist" key="calendar">budistlik kalender</type>
			<type type="chinese" key="calendar">Hiina kalender</type>
			<type type="direct" key="collation">lisareegliteta</type>
			<type type="gb2312han" key="collation">hiina lihtsustatud - GB2312</type>
			<type type="gregorian" key="calendar">Gregoriuse kalender</type>
			<type type="hebrew" key="calendar">juudi kalender</type>
			<type type="islamic" key="calendar">islamikalender</type>
			<type type="islamic-civil" key="calendar">islami ilmalik kalender</type>
			<type type="japanese" key="calendar">Jaapani kalender</type>
			<type type="phonebook" key="collation">telefoniraamat</type>
			<type type="stroke" key="collation">elementide kirjutamise järjekorras</type>
			<type type="traditional" key="collation">traditsiooniline</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">inglise mõõdustik</measurementSystemName>
			<measurementSystemName type="metric">meetermõõdustik</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a-s š z ž t-w õ ä ö ü x y]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[á à â å ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ß ú ù û ū]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>„</quotationStart>
		<quotationEnd>“</quotationEnd>
		<alternateQuotationStart>‘</alternateQuotationStart>
		<alternateQuotationEnd>‚</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jaan</month>
							<month type="2">veebr</month>
							<month type="3">märts</month>
							<month type="4">apr</month>
							<month type="5">mai</month>
							<month type="6">juuni</month>
							<month type="7">juuli</month>
							<month type="8">aug</month>
							<month type="9">sept</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dets</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">jaanuar</month>
							<month type="2">veebruar</month>
							<month type="3">märts</month>
							<month type="4">aprill</month>
							<month type="5">mai</month>
							<month type="6">juuni</month>
							<month type="7">juuli</month>
							<month type="8">august</month>
							<month type="9">september</month>
							<month type="10">oktoober</month>
							<month type="11">november</month>
							<month type="12">detsember</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">P</day>
							<day type="mon">E</day>
							<day type="tue">T</day>
							<day type="wed">K</day>
							<day type="thu">N</day>
							<day type="fri">R</day>
							<day type="sat">L</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">pühapäev</day>
							<day type="mon">esmaspäev</day>
							<day type="tue">teisipäev</day>
							<day type="wed">kolmapäev</day>
							<day type="thu">neljapäev</day>
							<day type="fri">reede</day>
							<day type="sat">laupäev</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">K1</quarter>
							<quarter type="2">K2</quarter>
							<quarter type="3">K3</quarter>
							<quarter type="4">K4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">enne meie aega</era>
						<era type="1">meie aja järgi</era>
					</eraNames>
					<eraAbbr>
						<era type="0">e.m.a.</era>
						<era type="1">m.a.j.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d, MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd.MM.yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>H:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd.MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM.yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM - E, dd.MM</greatestDifference>
							<greatestDifference id="d">E, dd.MM - E, dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, d MMM - E, d MMM</greatestDifference>
							<greatestDifference id="d">E, d - E, d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM - d MMM</greatestDifference>
							<greatestDifference id="d">d-d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM - dd.MM</greatestDifference>
							<greatestDifference id="d">dd.MM - dd.MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yy - MM.yy</greatestDifference>
							<greatestDifference id="y">MM.yy - MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yy - E, dd.MM.yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy - MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, d, MMM - E, d, MMM yyyy</greatestDifference>
							<greatestDifference id="d">E, d - E, d, MMM yyyy</greatestDifference>
							<greatestDifference id="y">E, d, MMM yyyy - E, d, MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM - d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d-d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy - d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="d">dd.MM.yy - dd.MM.yy</greatestDifference>
							<greatestDifference id="y">dd.MM.yy - dd.MM.yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>määramata</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Lõunapoolus</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viin</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Brüssel</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermuuda</exemplarCity>
			</zone>
			<zone type="Indian/Cocos">
				<exemplarCity>Kookossaared</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zürich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Lihavõttesaar</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>Havanna</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Roheneeme</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Jõulud</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berliin</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Kopenhaagen</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžiir</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>Kairo</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanaari saared</exemplarCity>
			</zone>
			<zone type="Europe/Madrid">
				<exemplarCity>Madriid</exemplarCity>
			</zone>
			<zone type="Europe/Helsinki">
				<exemplarCity>Helsingi</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Fääri</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Pariis</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Ateena</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Lõuna Gruusia</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rooma</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>St. Lucia</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburg</exemplarCity>
			</zone>
			<zone type="Europe/Riga">
				<exemplarCity>Riia</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldiivid</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varssavi</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lissabon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Kokkutulek</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukarest</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Hispaania Sadam</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kiiev</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska aeg</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>St. Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>St. Thomas</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group> </group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>Andorra peseeta</displayName>
			</currency>
			<currency type="AED">
				<displayName>Araabia Ühendemiraatide dirhem</displayName>
			</currency>
			<currency type="AFA">
				<displayName>Afganistani afgaani, 1927-2002</displayName>
			</currency>
			<currency type="AFN">
				<displayName>Afganistani afgaani</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albaania lekk</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Armeenia dramm</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Hollandi Antillide kulden</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Angola kvanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angola kvanza, 1977-1990</displayName>
			</currency>
			<currency type="AON">
				<displayName>Angola kvanza, 1990-2000</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Angola reformitud kvanza, 1995-1999</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Argentina austral</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentina peeso, 1983-1985</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentina peeso</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Austria šilling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Austraalia dollar</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Aruba guilder</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Aserbaidžaani manat, 1993-2006</displayName>
			</currency>
			<currency type="AZN">
				<displayName>Aserbaidžaani manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Bosnia-Hertsegoviina dinaar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Bosnia-Hertsegoviina mark</displayName>
			</currency>
			<currency type="BBD">
				<displayName>Barbadose dollar</displayName>
			</currency>
			<currency type="BDT">
				<displayName>Bangladeshi taka</displayName>
			</currency>
			<currency type="BEC">
				<displayName>Belgia konverteeritav frank</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Belgia frank</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Belgia arveldusfrank</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Bulgaaria püsiv leev</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Bulgaaria leev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>Bahreini dinaar</displayName>
			</currency>
			<currency type="BIF">
				<displayName>Burundi frank</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermuda dollar</displayName>
			</currency>
			<currency type="BND">
				<displayName>Brunei dollar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviaano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>Boliivia peeso</displayName>
			</currency>
			<currency type="BRC">
				<displayName>Brasiilia krusado</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brasiilia reaal</displayName>
			</currency>
			<currency type="BUK">
				<displayName>Birma kjatt</displayName>
			</currency>
			<currency type="BWP">
				<displayName>Botswana pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>Valgevene uus rubla, 1994-1999</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Valgevene rubla</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanada dollar</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Šveitsi frank</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Tšiili peeso</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Hiina jüaan</displayName>
			</currency>
			<currency type="COP">
				<displayName>Kolumbia peeso</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Serbia vana dinaar</displayName>
			</currency>
			<currency type="CYP">
				<displayName>Küprose nael</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Tšehhi kroon</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Saksa mark</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Taani kroon</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Alžeeria dinaar</displayName>
			</currency>
			<currency type="ECS">
				<displayName>Ecuadori sukre</displayName>
			</currency>
			<currency type="EEK">
				<displayName>kroon</displayName>
				<symbol>kr</symbol>
				<decimal>.</decimal>
			</currency>
			<currency type="EGP">
				<displayName>Egiptuse nael</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Hispaania peseeta</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Etioopia birr</displayName>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<symbol>€</symbol>
			</currency>
			<currency type="FIM">
				<displayName>Soome mark</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidži dollar</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Falklandi saarte nael</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Prantsuse frank</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Suurbritannia naelsterling</displayName>
				<symbol>£</symbol>
			</currency>
			<currency type="GEL">
				<displayName>Gruusia lari</displayName>
			</currency>
			<currency type="GHC">
				<displayName>Ghana sedi</displayName>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltari nael</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambia dalasi</displayName>
			</currency>
			<currency type="GNS">
				<displayName>Guinea syli</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Kreeka drahm</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Guatemala ketsal</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Guinea-Bissau peeso</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyana dollar</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Hongkongi dollar</displayName>
			</currency>
			<currency type="HNL">
				<displayName>Hondurase lempiira</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Horvaatia kuna</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Haiti gurd</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Ungari forint</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Indoneesia ruupia</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Iiri nael</displayName>
			</currency>
			<currency type="ILP">
				<displayName>Iisraeli nael</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Iisraeli uus seekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>India ruupia</displayName>
			</currency>
			<currency type="IQD">
				<displayName>Iraagi dinaar</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Iraani riaal</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Islandi kroon</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Itaalia liir</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaica dollar</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Jaapani jeen</displayName>
				<symbol>¥</symbol>
			</currency>
			<currency type="KES">
				<displayName>Keenia šilling</displayName>
			</currency>
			<currency type="KGS">
				<displayName>Kõrgõzstani somm</displayName>
			</currency>
			<currency type="KHR">
				<displayName>Kambodža riaal</displayName>
			</currency>
			<currency type="KPW">
				<displayName>Põhja-Korea vonn</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Lõuna-Korea vonn</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuveidi dinaar</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kasahstani tenge</displayName>
			</currency>
			<currency type="LAK">
				<displayName>Laose kiip</displayName>
			</currency>
			<currency type="LBP">
				<displayName>Liibanoni nael</displayName>
			</currency>
			<currency type="LTL">
				<displayName>Leedu litt</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luksemburgi frank</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Läti latt</displayName>
			</currency>
			<currency type="MAD">
				<displayName>Maroko dirhem</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldova leu</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmari kjatt</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongoolia tugrik</displayName>
			</currency>
			<currency type="MOP">
				<displayName>Macao pataka</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauretaania ugia</displayName>
			</currency>
			<currency type="MTL">
				<displayName>Malta liir</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauritiuse ruupia</displayName>
			</currency>
			<currency type="MVR">
				<displayName>Maldiivide ruupia</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawi kvatša</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Mehhiko peeso</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Mehhiko peeso, 1861-1990</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaisia ringgit</displayName>
			</currency>
			<currency type="MZN">
				<displayName>Mosambiigi metikal</displayName>
			</currency>
			<currency type="NGN">
				<displayName>Nigeeria naira</displayName>
			</currency>
			<currency type="NIC">
				<displayName>Nicaragua kordoba</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Nicaragua kuldkordoba</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Hollandi kulden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norra kroon</displayName>
			</currency>
			<currency type="NPR">
				<displayName>Nepali ruupia</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Uus-Meremaa dollar</displayName>
			</currency>
			<currency type="OMR">
				<displayName>Omaani riaal</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Panama balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruu inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruu uus soll</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruu soll</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Paapua Uus-Guinea kina</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipiinide peeso</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistani ruupia</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Poola zlott</displayName>
			</currency>
			<currency type="PLZ">
				<displayName>Poola zlott, 1950-1995</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugali eskuudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paraguai guaranii</displayName>
			</currency>
			<currency type="QAR">
				<displayName>Quatari riaal</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Rumeenia lei, -2005</displayName>
			</currency>
			<currency type="RON">
				<displayName>Rumeenia lei</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Serbia dinaar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Venemaa rubla</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Venemaa rubla, 1991-1998</displayName>
			</currency>
			<currency type="RWF">
				<displayName>Ruanda frank</displayName>
			</currency>
			<currency type="SAR">
				<displayName>Saudi-Araabia riaal</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Saalomoni saarte dollar</displayName>
			</currency>
			<currency type="SCR">
				<displayName>Seišelli saarte ruupia</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudaani nael</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Rootsi kroon</displayName>
			</currency>
			<currency type="SGD">
				<displayName>Singapuri dollar</displayName>
			</currency>
			<currency type="SHP">
				<displayName>Saint Helena nael</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Sloveenia tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovakkia kroon</displayName>
			</currency>
			<currency type="SLL">
				<displayName>Sierra Leone leoone</displayName>
			</currency>
			<currency type="SOS">
				<displayName>Somaalia šilling</displayName>
			</currency>
			<currency type="SRG">
				<displayName>Surinami kulden</displayName>
			</currency>
			<currency type="STD">
				<displayName>São Tomé ja Príncipe dobra</displayName>
			</currency>
			<currency type="SUR">
				<displayName>NSVL rubla</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Salvadori koloon</displayName>
			</currency>
			<currency type="SYP">
				<displayName>Süüria nael</displayName>
			</currency>
			<currency type="THB">
				<displayName>Tai baat</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadžikistani somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Türkmenistani manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tuneesia dinaar</displayName>
			</currency>
			<currency type="TOP">
				<displayName>Tonga pa'anga</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Timori eskuudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Türgi liir</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Türgi uus liir</displayName>
			</currency>
			<currency type="TWD">
				<displayName>Taiwani dollar</displayName>
			</currency>
			<currency type="TZS">
				<displayName>Tansaania šilling</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Ukraina grivna</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Ukraina karbovanets</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Uganda šilling</displayName>
			</currency>
			<currency type="USD">
				<displayName>USA dollar</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="USN">
				<displayName>USA järgmise päeva dollar</displayName>
			</currency>
			<currency type="USS">
				<displayName>USA sama päeva dollar</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Uruguai peeso</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Usbekistani somm</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuela boliivar</displayName>
			</currency>
			<currency type="VND">
				<displayName>Vietnami dong</displayName>
			</currency>
			<currency type="VUV">
				<displayName>Vanuatu vatu</displayName>
			</currency>
			<currency type="WST">
				<displayName>Lääne-Samoa tala</displayName>
			</currency>
			<currency type="XAF">
				<displayName>CFA frank BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>hõbe</displayName>
			</currency>
			<currency type="XAU">
				<displayName>kuld</displayName>
			</currency>
			<currency type="XBA">
				<displayName>EURCO</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Ida-Kariibi dollar</displayName>
			</currency>
			<currency type="XEU">
				<displayName>eküü</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Prantsuse kuldfrank</displayName>
			</currency>
			<currency type="XPD">
				<displayName>pallaadium</displayName>
			</currency>
			<currency type="XPT">
				<displayName>plaatina</displayName>
			</currency>
			<currency type="XTS">
				<displayName>vääringute testkood</displayName>
			</currency>
			<currency type="XXX">
				<displayName>määramata</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>Jeemeni dinaar</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoslaavia uus dinaar</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslaavia konverteeritav dinaar</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>LAVi rand</displayName>
			</currency>
			<currency type="ZMK">
				<displayName>Sambia kvatša</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Sairi zaire</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabwe dollar</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>jah:j</yesstr>
			<nostr>ei:e</nostr>
		</messages>
	</posix>
</ldml>
PKpG[���;;Locale/Data/az_Latn_AZ.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.24 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="az"/>
		<script type="Latn"/>
		<territory type="AZ"/>
	</identity>
</ldml>
PKpG[�r�OOLocale/Data/zh_SG.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.43 $"/>
		<generation date="$Date: 2008/05/28 15:49:39 $"/>
		<language type="zh"/>
		<territory type="SG"/>
	</identity>
	<alias source="zh_Hans_SG" path="//ldml"/>
</ldml>
PKpG[�[إ����Locale/Data/hr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.90 $"/>
		<generation date="$Date: 2008/06/26 03:47:57 $"/>
		<language type="hr"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikaans</language>
			<language type="afa">ostali afričko-azijski</language>
			<language type="am">amharik</language>
			<language type="ang">engleski, stari (ca.450-1100)</language>
			<language type="apa">apaški</language>
			<language type="ar">arapski</language>
			<language type="art">umjetni (ostali)</language>
			<language type="as">asamski (Britanska Indija)</language>
			<language type="av">avarski</language>
			<language type="az">azerbajdžanski</language>
			<language type="bat">baltički (ostali)</language>
			<language type="be">bjeloruski</language>
			<language type="ber">berberski</language>
			<language type="bg">bugarski</language>
			<language type="bh">bihari</language>
			<language type="bn">bengalski</language>
			<language type="bnt">bantu</language>
			<language type="bo">tibetanski</language>
			<language type="br">bretonski</language>
			<language type="bs">bosanski</language>
			<language type="ca">katalonski</language>
			<language type="cel">keltski (ostali)</language>
			<language type="chr">čeroki</language>
			<language type="co">korzički</language>
			<language type="cs">češki</language>
			<language type="cu">crkvenoslavenski</language>
			<language type="cy">velški</language>
			<language type="da">danski</language>
			<language type="de">njemački</language>
			<language type="de_CH">gornjonjemački (Švicarska)</language>
			<language type="dsb">lužičkosrpski</language>
			<language type="dum">nizozemski, srednji (ca. 1050-1350)</language>
			<language type="egy">egipatski (antički)</language>
			<language type="el">grčki</language>
			<language type="en">engleski</language>
			<language type="en_AU">engleski (australski)</language>
			<language type="en_GB">engleski (britanski)</language>
			<language type="en_US">engleski (američki)</language>
			<language type="enm">engleski, srednji (1100-1500)</language>
			<language type="eo">esperanto</language>
			<language type="es">španjolski</language>
			<language type="es_419">španjolski (Latinska Amerika)</language>
			<language type="et">estonijski</language>
			<language type="eu">baskijski</language>
			<language type="fa">perzijski</language>
			<language type="fi">finski</language>
			<language type="fil">filipino</language>
			<language type="fiu">ugro-finski jezici</language>
			<language type="fj">fidžijski</language>
			<language type="fo">faroanski</language>
			<language type="fr">francuski</language>
			<language type="frm">francuski, srednji (ca.1400-1600)</language>
			<language type="fro">francuski, stari (842-ca.1400)</language>
			<language type="frr">sjevernofrizijski</language>
			<language type="frs">istočnofrizijski</language>
			<language type="fy">frizijski</language>
			<language type="ga">irski</language>
			<language type="gd">škotski-galski</language>
			<language type="gem">germanski (ostali)</language>
			<language type="gl">galicijski</language>
			<language type="gmh">njemački, srednji visoki (ca.1050-1500)</language>
			<language type="gn">guarani</language>
			<language type="goh">njemački, stari visoki (ca.750-1050)</language>
			<language type="grc">grčki, antički (do 1453)</language>
			<language type="gsw">njemački (Švicarska)</language>
			<language type="gu">gujarati</language>
			<language type="haw">havajski</language>
			<language type="he">hebrejski</language>
			<language type="hi">hindu</language>
			<language type="hr">hrvatski</language>
			<language type="ht">kreolski</language>
			<language type="hu">mađarski</language>
			<language type="hy">armenski</language>
			<language type="ia">interlingua</language>
			<language type="id">indonezijski</language>
			<language type="ie">interlingua (jezik zamišljen za internacionalnu komunikaciju među znanstvenicima)</language>
			<language type="inc">indijski (drugi)</language>
			<language type="ine">indoevropski (drugi)</language>
			<language type="ira">iranski</language>
			<language type="is">islandski</language>
			<language type="it">talijanski</language>
			<language type="ja">japanski</language>
			<language type="jv">javanski</language>
			<language type="ka">gruzijski</language>
			<language type="kg">kongo</language>
			<language type="kk">kazaški</language>
			<language type="km">kmerski</language>
			<language type="kn">kannada</language>
			<language type="ko">korejski</language>
			<language type="ku">kurdski</language>
			<language type="kw">kornski</language>
			<language type="ky">kirgiški</language>
			<language type="la">latinski</language>
			<language type="lb">luksemburški</language>
			<language type="ln">lingala</language>
			<language type="lo">laoski</language>
			<language type="lt">litvanski</language>
			<language type="lv">latvijski</language>
			<language type="mga">irski, srednji (900-1200)</language>
			<language type="mis">ostali jezici</language>
			<language type="mk">makedonski</language>
			<language type="mkh">mkh</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongolski</language>
			<language type="mo">moldavski</language>
			<language type="mr">marathi</language>
			<language type="ms">malajski</language>
			<language type="mt">malteški</language>
			<language type="my">burmanski</language>
			<language type="nb">književni norveški</language>
			<language type="nds">donjonjemački</language>
			<language type="ne">nepalski</language>
			<language type="nl">nizozemski</language>
			<language type="nl_BE">flamanski</language>
			<language type="nn">novonorveški</language>
			<language type="no">norveški</language>
			<language type="oc">okcitanski</language>
			<language type="or">orijski</language>
			<language type="ota">turski - otomanski</language>
			<language type="pa">punjabi</language>
			<language type="peo">staroperzijski</language>
			<language type="pl">poljski</language>
			<language type="pro">staroprovansalski</language>
			<language type="ps">paštu</language>
			<language type="pt">portugalski</language>
			<language type="pt_PT">portugalski (iberijski)</language>
			<language type="rm">retoromanski</language>
			<language type="ro">rumunjski</language>
			<language type="roa">romanski (ostali)</language>
			<language type="ru">ruski</language>
			<language type="sa">sanskrtski</language>
			<language type="sc">sardski</language>
			<language type="sd">sindhi</language>
			<language type="sga">staroirski</language>
			<language type="sh">srpsko-hrvatski</language>
			<language type="si">singaleški</language>
			<language type="sk">slovački</language>
			<language type="sl">slovenski</language>
			<language type="sla">slavenski (drugi)</language>
			<language type="sm">samoanski</language>
			<language type="so">somalski</language>
			<language type="sq">albanski</language>
			<language type="sr">srpski</language>
			<language type="st">sesotski</language>
			<language type="su">sundanski</language>
			<language type="sv">švedski</language>
			<language type="sw">svahili</language>
			<language type="ta">tamilski</language>
			<language type="tai">tajski</language>
			<language type="te">telugu</language>
			<language type="th">tajlandski</language>
			<language type="ti">tigrinya</language>
			<language type="tig">tigriški</language>
			<language type="tk">turkmenski</language>
			<language type="tl">tagalog</language>
			<language type="tlh">klingonski</language>
			<language type="tr">turski</language>
			<language type="tw">twi</language>
			<language type="ty">tahićanski</language>
			<language type="ug">turkmenski (uighur)</language>
			<language type="uk">ukrajinski</language>
			<language type="und">nepoznati ili nevažeći jezik</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbečki</language>
			<language type="vi">vijetnamski</language>
			<language type="wo">wolof</language>
			<language type="xh">xhosa</language>
			<language type="yi">jidiš</language>
			<language type="zh">kineski</language>
			<language type="zh_Hans">kineski (pojednostavljeni)</language>
			<language type="zh_Hant">kineski (tradicionalni)</language>
			<language type="zu">zulu</language>
			<language type="zxx">bez jezičnog sadržaja</language>
		</languages>
		<scripts>
			<script type="Arab">arapsko pismo</script>
			<script type="Cyrl">ćirilica</script>
			<script type="Egyp">egipatski hijeroglifi</script>
			<script type="Glag">glagoljica</script>
			<script type="Grek">grčko pismo</script>
			<script type="Hebr">hebrejsko pismo</script>
			<script type="Jpan">japansko pismo</script>
			<script type="Latn">Latinski</script>
			<script type="Runr">runsko pismo</script>
			<script type="Sinh">singaleško pismo</script>
			<script type="Taml">tamilsko pismo</script>
			<script type="Tfng">tifinar</script>
			<script type="Thai">tajlandsko pismo</script>
			<script type="Tibt">tibetansko pismo</script>
			<script type="Zxxx">nepisani jezik</script>
			<script type="Zzzz">nepoznato ili nevažeće pismo</script>
		</scripts>
		<territories>
			<territory type="001">Svijet</territory>
			<territory type="002">Afrika</territory>
			<territory type="003">Sjevernoamerički kontinent</territory>
			<territory type="005">Južna Amerika</territory>
			<territory type="009">Oceanija</territory>
			<territory type="011">Zapadna Afrika</territory>
			<territory type="013">Centralna Amerika</territory>
			<territory type="014">Istočna Afrika</territory>
			<territory type="015">Sjeverna Afrika</territory>
			<territory type="017">Središnja Afrika</territory>
			<territory type="018">Južna Afrika</territory>
			<territory type="019">Amerike</territory>
			<territory type="021">Sjeverna Amerika</territory>
			<territory type="029">Karibi</territory>
			<territory type="030">Istočna Azija</territory>
			<territory type="034">Južna Azija</territory>
			<territory type="035">Jugoistočna Azija</territory>
			<territory type="039">Južna Europa</territory>
			<territory type="053">Australija i Novi Zeland</territory>
			<territory type="054">Melanezija</territory>
			<territory type="057">Micronezija</territory>
			<territory type="061">Polinezija</territory>
			<territory type="062">Južno-centralna Azija</territory>
			<territory type="142">Azija</territory>
			<territory type="143">Srednja Azija</territory>
			<territory type="145">Zapadna Azija</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Istočna Europa</territory>
			<territory type="154">Sjeverna Europa</territory>
			<territory type="155">Zapadna Europa</territory>
			<territory type="419">Latinska Amerika i Karibi</territory>
			<territory type="830">Kanalski otoci</territory>
			<territory type="AD">Andora</territory>
			<territory type="AE">Ujedinjeni Arapski Emirati</territory>
			<territory type="AF">Afganistan</territory>
			<territory type="AG">Antigua i Barbuda</territory>
			<territory type="AI">Anguila</territory>
			<territory type="AL">Albanija</territory>
			<territory type="AM">Armenija</territory>
			<territory type="AN">Nizozemski Antili</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antarktik</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Američka Samoa</territory>
			<territory type="AT">Austrija</territory>
			<territory type="AU">Australija</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Alandski otoci</territory>
			<territory type="AZ">Azerbajdžan</territory>
			<territory type="BA">Bosna i Hercegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladeš</territory>
			<territory type="BE">Belgija</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bugarska</territory>
			<territory type="BH">Bahrein</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivija</territory>
			<territory type="BR">Brazil</territory>
			<territory type="BS">Bahami</territory>
			<territory type="BT">Butan</territory>
			<territory type="BV">Otok Bouvet</territory>
			<territory type="BW">Bocvana</territory>
			<territory type="BY">Bjelorusija</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Kanada</territory>
			<territory type="CC">Kokosovi Otoci</territory>
			<territory type="CD">Demokratska Republika Kongo</territory>
			<territory type="CF">Srednjoafrička Republika</territory>
			<territory type="CG">Kongo</territory>
			<territory type="CH">Švicarska</territory>
			<territory type="CI">Obala Bjelokosti</territory>
			<territory type="CK">Kukovi Otoci</territory>
			<territory type="CL">Čile</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Kina</territory>
			<territory type="CO">Kolumbija</territory>
			<territory type="CR">Kostarika</territory>
			<territory type="CS">Srbija i Crna Gora</territory>
			<territory type="CU">Kuba</territory>
			<territory type="CV">Zeleni Rt</territory>
			<territory type="CX">Božićni Otoci</territory>
			<territory type="CY">Cipar</territory>
			<territory type="CZ">Češka Republika</territory>
			<territory type="DE">Njemačka</territory>
			<territory type="DJ">Džibuti</territory>
			<territory type="DK">Danska</territory>
			<territory type="DM">Dominika</territory>
			<territory type="DO">Dominikanska Republika</territory>
			<territory type="DZ">Alžir</territory>
			<territory type="EC">Ekvador</territory>
			<territory type="EE">Estonija</territory>
			<territory type="EG">Egipat</territory>
			<territory type="EH">Zapadna Sahara</territory>
			<territory type="ER">Eritreja</territory>
			<territory type="ES">Španjolska</territory>
			<territory type="ET">Etiopija</territory>
			<territory type="FI">Finska</territory>
			<territory type="FJ">Fidži</territory>
			<territory type="FK">Falklandski Otoci</territory>
			<territory type="FM">Mikronezija</territory>
			<territory type="FO">Farski Otoci</territory>
			<territory type="FR">Francuska</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Velika Britanija</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gruzija</territory>
			<territory type="GF">Francuska Gvajana</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Gana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Greenland</territory>
			<territory type="GM">Gambija</territory>
			<territory type="GN">Gvineja</territory>
			<territory type="GP">Guadeloupe</territory>
			<territory type="GQ">Ekvatorska Gvineja</territory>
			<territory type="GR">Grčka</territory>
			<territory type="GS">Južna Gruzija i Južni Sendvič Otoci</territory>
			<territory type="GT">Gvatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Gvineja Bisau</territory>
			<territory type="GY">Gvajana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Otok Heard i Otoci McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Hrvatska</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Mađarska</territory>
			<territory type="ID">Indonezija</territory>
			<territory type="IE">Irska</territory>
			<territory type="IL">Izrael</territory>
			<territory type="IM">Otok Man</territory>
			<territory type="IN">Indija</territory>
			<territory type="IO">Britanski Teritorij Indijskog Oceana</territory>
			<territory type="IQ">Irak</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Island</territory>
			<territory type="IT">Italija</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamajka</territory>
			<territory type="JO">Jordan</territory>
			<territory type="JP">Japan</territory>
			<territory type="KE">Kenija</territory>
			<territory type="KG">Kirgistan</territory>
			<territory type="KH">Kambodža</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Komori</territory>
			<territory type="KN">Sveti Kristofor i Nevis</territory>
			<territory type="KP">Koreja, Sjeverna</territory>
			<territory type="KR">Južna Koreja</territory>
			<territory type="KW">Kuvajt</territory>
			<territory type="KY">Kajmanski Otoci</territory>
			<territory type="KZ">Kazakstan</territory>
			<territory type="LA">Laoska Narodna Demokratska Republika</territory>
			<territory type="LB">Libanon</territory>
			<territory type="LC">Sveta Lucija</territory>
			<territory type="LI">Lihtenštajn</territory>
			<territory type="LK">Šri Lanka</territory>
			<territory type="LR">Liberija</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Litva</territory>
			<territory type="LU">Luksemburg</territory>
			<territory type="LV">Latvija</territory>
			<territory type="LY">Libijska Arapska Džamahirija</territory>
			<territory type="MA">Maroko</territory>
			<territory type="MC">Monako</territory>
			<territory type="MD">Moldavija</territory>
			<territory type="ME">Crna Gora</territory>
			<territory type="MG">Madagaskar</territory>
			<territory type="MH">Maršalovi Otoci</territory>
			<territory type="MK">Bivša Jugoslavenska Republika Makedonija</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Mijanma</territory>
			<territory type="MN">Mongolija</territory>
			<territory type="MO">Makao</territory>
			<territory type="MP">Sjeverni Marianski Otoci</territory>
			<territory type="MQ">Martinik</territory>
			<territory type="MR">Mauritanija</territory>
			<territory type="MS">Montserat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricijus</territory>
			<territory type="MV">Maldivi</territory>
			<territory type="MW">Malavi</territory>
			<territory type="MX">Meksiko</territory>
			<territory type="MY">Malezija</territory>
			<territory type="MZ">Mozambik</territory>
			<territory type="NA">Namibija</territory>
			<territory type="NC">Nova Kaledonija</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Norfolški Otoci</territory>
			<territory type="NG">Nigerija</territory>
			<territory type="NI">Nikaragva</territory>
			<territory type="NL">Nizozemska</territory>
			<territory type="NO">Norveška</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Novi Zeland</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panama</territory>
			<territory type="PE">Peru</territory>
			<territory type="PF">Francuska Polinezija</territory>
			<territory type="PG">Papua Nova Gvineja</territory>
			<territory type="PH">Filipini</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Poljska</territory>
			<territory type="PM">Sveti Petar i Miguel</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Portoriko</territory>
			<territory type="PS">Palestinska Teritoija</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paragvaj</territory>
			<territory type="QA">Katar</territory>
			<territory type="QO">Ostala oceanija</territory>
			<territory type="QU">Europska Unija</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Rumunjska</territory>
			<territory type="RS">Srbija</territory>
			<territory type="RU">Rusija</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Saudijska Arabija</territory>
			<territory type="SB">Salamunovi Otoci</territory>
			<territory type="SC">Sejšeli</territory>
			<territory type="SD">Sudan</territory>
			<territory type="SE">Švedska</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Sveta Helena</territory>
			<territory type="SI">Slovenija</territory>
			<territory type="SJ">Svalbard i Jan Mayen</territory>
			<territory type="SK">Slovačka</territory>
			<territory type="SL">Sijera Leone</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalija</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Sveti Toma i Prinsipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Sirija</territory>
			<territory type="SZ">Svazi</territory>
			<territory type="TC">Turkski i Kaikos Otoci</territory>
			<territory type="TD">Čad</territory>
			<territory type="TF">Francuski Južni Teritoriji</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tajland</territory>
			<territory type="TJ">Tadžikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Istočni Timor</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunis</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turska</territory>
			<territory type="TT">Trinidad i Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Tajvan</territory>
			<territory type="TZ">Tanzanija</territory>
			<territory type="UA">Ukrajina</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Ujedinjene Države Manjih Pacifičkih Otoka</territory>
			<territory type="US">Sjedinjene Države</territory>
			<territory type="UY">Urugvaj</territory>
			<territory type="UZ">Uzbekistan</territory>
			<territory type="VA">Grad Vatikan</territory>
			<territory type="VC">Sveti Vincent i Grenadini</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Britanski Djevičanski Otoci</territory>
			<territory type="VI">Američki Djevičanski Otoci</territory>
			<territory type="VN">Vijetnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis i Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Jemen</territory>
			<territory type="YT">Majote</territory>
			<territory type="ZA">Južnoafrička Republika</territory>
			<territory type="ZM">Zambija</territory>
			<territory type="ZW">Zimbabve</territory>
			<territory type="ZZ">nepoznata ili nevažeća oblast</territory>
		</territories>
		<keys>
			<key type="calendar">Kalendar</key>
			<key type="collation">Poredavanje</key>
			<key type="currency">Valuta</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">Budistički kalendar</type>
			<type type="chinese" key="calendar">Kineski kalendar</type>
			<type type="direct" key="collation">Direktno poredavanje</type>
			<type type="gregorian" key="calendar">Gregorijanski kalendar</type>
			<type type="hebrew" key="calendar">Hebrejski kalendar</type>
			<type type="islamic" key="calendar">Islamski kalendar</type>
			<type type="islamic-civil" key="calendar">Islamski civilni kalendar</type>
			<type type="japanese" key="calendar">Japanski kalendar</type>
			<type type="phonebook" key="collation">Poredavanja po abecedi</type>
			<type type="pinyin" key="collation">Pinyin poredavanje</type>
			<type type="stroke" key="collation">Stroke order poredavanje</type>
			<type type="traditional" key="collation">Tradicionano poredavanje</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="metric">metrički</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<layout>
		<inText type="languages">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
		<inText type="territories">titlecase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a-c č ć d đ {dž} e-l {lj} m n {nj} o p r s š t-v z ž]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[q w-y]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GanjkHmsSEDFwWxhKzAeugXZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">sij</month>
							<month type="2">vel</month>
							<month type="3">ožu</month>
							<month type="4">tra</month>
							<month type="5">svi</month>
							<month type="6">lip</month>
							<month type="7">srp</month>
							<month type="8">kol</month>
							<month type="9">ruj</month>
							<month type="10">lis</month>
							<month type="11">stu</month>
							<month type="12">pro</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">siječnja</month>
							<month type="2">veljače</month>
							<month type="3">ožujka</month>
							<month type="4">travnja</month>
							<month type="5">svibnja</month>
							<month type="6">lipnja</month>
							<month type="7">srpnja</month>
							<month type="8">kolovoza</month>
							<month type="9">rujna</month>
							<month type="10">listopada</month>
							<month type="11">studenoga</month>
							<month type="12">prosinca</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">s</month>
							<month type="2">v</month>
							<month type="3">o</month>
							<month type="4">t</month>
							<month type="5">s</month>
							<month type="6">l</month>
							<month type="7">s</month>
							<month type="8">k</month>
							<month type="9">r</month>
							<month type="10">l</month>
							<month type="11">s</month>
							<month type="12">p</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">siječanj</month>
							<month type="2">veljača</month>
							<month type="3">ožujak</month>
							<month type="4">travanj</month>
							<month type="5">svibanj</month>
							<month type="6">lipanj</month>
							<month type="7">srpanj</month>
							<month type="8">kolovoz</month>
							<month type="9">rujan</month>
							<month type="10">listopad</month>
							<month type="11">studeni</month>
							<month type="12">prosinac</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">ned</day>
							<day type="mon">pon</day>
							<day type="tue">uto</day>
							<day type="wed">sri</day>
							<day type="thu">čet</day>
							<day type="fri">pet</day>
							<day type="sat">sub</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">nedjelja</day>
							<day type="mon">ponedjeljak</day>
							<day type="tue">utorak</day>
							<day type="wed">srijeda</day>
							<day type="thu">četvrtak</day>
							<day type="fri">petak</day>
							<day type="sat">subota</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">n</day>
							<day type="mon">p</day>
							<day type="tue">u</day>
							<day type="wed">s</day>
							<day type="thu">č</day>
							<day type="fri">p</day>
							<day type="sat">s</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1kv</quarter>
							<quarter type="2">2kv</quarter>
							<quarter type="3">3kv</quarter>
							<quarter type="4">4kv</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1. kvartal</quarter>
							<quarter type="2">2. kvartal</quarter>
							<quarter type="3">3. kvartal</quarter>
							<quarter type="4">4. kvartal</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">Prije Krista</era>
						<era type="1">Poslije Krista</era>
					</eraNames>
					<eraAbbr>
						<era type="0">pr.n.e.</era>
						<era type="1">AD</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d. MMMM yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d. MMMM yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d. MMM. yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd.MM.yyyy.</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="MMMMdd">MMMM dd</dateFormatItem>
						<dateFormatItem id="MMdd">MM.dd</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="yyMMMEEEd">EEE yy.MMM d</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">yyyy.MM</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">yyyy. MMMM</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} - {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">MM. - MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, dd.MM. - E, dd.MM.</greatestDifference>
							<greatestDifference id="d">E, dd.MM. - E, dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM</greatestDifference>
							<greatestDifference id="d">dd. - dd. MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd.MM. - dd.MM.</greatestDifference>
							<greatestDifference id="d">dd.MM. - dd.MM.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">dd. - dd.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">HH - HH'h'</greatestDifference>
							<greatestDifference id="h">HH - HH'h'</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">HH:mm-HH:mm</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">HH:mm-HH:mm v</greatestDifference>
							<greatestDifference id="m">HH:mm-HH:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">HH - HH 'h' v</greatestDifference>
							<greatestDifference id="h">HH - HH 'h' v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y. - y.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM.yyyy. - MM.yyyy.</greatestDifference>
							<greatestDifference id="y">MM.yyyy. - MM.yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, dd.MM.yyyy. - E, dd.MM.yyyy.</greatestDifference>
							<greatestDifference id="d">E, dd.MM.yyyy. - E, dd.MM.yyyy.</greatestDifference>
							<greatestDifference id="y">E, dd.MM.yyyy. - E, dd.MM.yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">LLL-LLL yyyy.</greatestDifference>
							<greatestDifference id="y">LLL yyyy. - LLL yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, dd. MMM - E, dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="d">E, dd. - E, dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="y">E, dd. MMM yyyy. - E, dd. MMM yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd. MMM - dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="d">dd. - dd. MMM yyyy.</greatestDifference>
							<greatestDifference id="y">dd. MMM yyyy. - dd. MMM yyyy.</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd.MM.yyyy. - dd.MM.yyyy.</greatestDifference>
							<greatestDifference id="d">dd.MM.yyyy. - dd.MM.yyyy.</greatestDifference>
							<greatestDifference id="y">dd.MM.yyyy. - dd.MM.yyyy.</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>Era</displayName>
					</field>
					<field type="year">
						<displayName>Godina</displayName>
					</field>
					<field type="month">
						<displayName>Mjesec</displayName>
					</field>
					<field type="week">
						<displayName>Tjedan</displayName>
					</field>
					<field type="day">
						<displayName>Dan</displayName>
						<relative type="0">Danas</relative>
						<relative type="1">Jučer</relative>
						<relative type="2">Prekosutra</relative>
						<relative type="-1">Jučer</relative>
						<relative type="-2">Prekjučer</relative>
					</field>
					<field type="weekday">
						<displayName>Dan u tjednu</displayName>
					</field>
					<field type="dayperiod">
						<displayName>Dio dana</displayName>
					</field>
					<field type="hour">
						<displayName>Sat</displayName>
					</field>
					<field type="minute">
						<displayName>Minuta</displayName>
					</field>
					<field type="second">
						<displayName>Sekunda</displayName>
					</field>
					<field type="zone">
						<displayName>Zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HHmm;-HHmm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Nepoznat ili nevažeći grad</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>Andora</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Južni pol</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont D'Urville</exemplarCity>
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Beć</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofija</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahrein</exemplarCity>
			</zone>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinšasa</exemplarCity>
			</zone>
			<zone type="Africa/Lubumbashi">
				<exemplarCity>Lubumbaši</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Uskrsni Otok</exemplarCity>
			</zone>
			<zone type="Asia/Shanghai">
				<exemplarCity>Šangaj</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>Kostarika</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Zelenortska Republika</exemplarCity>
			</zone>
			<zone type="Indian/Christmas">
				<exemplarCity>Božić</exemplarCity>
			</zone>
			<zone type="Asia/Nicosia">
				<exemplarCity>Nikozija</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Džibuti</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>Dominika</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Alžir</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Kanarska Otočja</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fidži</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>Pariz</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atena</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Južna Georgia</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>Gvatemala</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>Gvajana</exemplarCity>
			</zone>
			<zone type="Europe/Budapest">
				<exemplarCity>Budimpešta</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Rim</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>Jamajka</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>Kuvajt</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Sveta Lucija</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luksemburg</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Monako</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricijus</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivi</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varšava</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>Portoriko</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisabon</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>Katar</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Réunion</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bukurešt</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moskva</exemplarCity>
			</zone>
			<zone type="Asia/Krasnoyarsk">
				<exemplarCity>Krasnojarsk</exemplarCity>
			</zone>
			<zone type="Asia/Kamchatka">
				<exemplarCity>Kamčatka</exemplarCity>
			</zone>
			<zone type="Asia/Anadyr">
				<exemplarCity>Anadir</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Sveta Helena</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Europe/Uzhgorod">
				<exemplarCity>Uzgorod</exemplarCity>
			</zone>
			<zone type="Europe/Kiev">
				<exemplarCity>Kijev</exemplarCity>
			</zone>
			<zone type="Europe/Zaporozhye">
				<exemplarCity>Zaporožje</exemplarCity>
			</zone>
			<zone type="America/Anchorage">
				<exemplarCity>Alaska vremenska zona</exemplarCity>
			</zone>
			<zone type="Asia/Tashkent">
				<exemplarCity>Taškent</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>Sveti Vincent</exemplarCity>
			</zone>
			<zone type="America/St_Thomas">
				<exemplarCity>Sveti Thomas</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>#,##0.00 ¤;-#,##0.00 ¤</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>andorska pezeta</displayName>
			</currency>
			<currency type="AED">
				<displayName>UAE dirham</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Albanski lek</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>Armenian Dram</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="AOA">
				<displayName>Angolska kvanza</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Angolska kvanza (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>angolska nova kvanza (1990-2000)</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Argentinski pezo (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Argentinski pezo</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>Austrijski šiling</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Australski dolar</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>arupski gulden</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Azerbejdžanski manat</displayName>
			</currency>
			<currency type="BAD">
				<displayName>bosansko-hercegovački dinar</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Konvertibilna marka</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>Barbadoski dolar</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>Taka</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEF">
				<displayName>Belgijski franak</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BGN">
				<displayName>bugarski novi lev</displayName>
			</currency>
			<currency type="BHD">
				<displayName>bahreinski dinar</displayName>
			</currency>
			<currency type="BMD">
				<displayName>Bermudski dolar</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>Brunejski dolar</displayName>
			</currency>
			<currency type="BOB">
				<displayName>bolivijano</displayName>
			</currency>
			<currency type="BOP">
				<displayName>bolivijski pezo</displayName>
			</currency>
			<currency type="BOV">
				<displayName>bolivijski mvdol</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Brazilski Real</displayName>
			</currency>
			<currency type="BSD">
				<displayName>bahamski dolar</displayName>
			</currency>
			<currency type="BWP">
				<displayName>pula</displayName>
			</currency>
			<currency type="BYB">
				<displayName>bjeloruska nova rublja (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>bjeloruska rublja</displayName>
			</currency>
			<currency type="BZD">
				<displayName>belizeanski dolar</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Kanadski dolar</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CHF">
				<displayName>Švicarski franak</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CLF">
				<displayName>Chilean Unidades de Fomento</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Čileanski pezo</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>Kineski Yuan Renminbi</displayName>
			</currency>
			<currency type="COP">
				<displayName>Kolumbijski pezo</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="CRC">
				<displayName>Kostarikanski kolon</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>stari srpski dinar</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Czechoslovak Hard Koruna</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Kubanski pezo</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Zelenortski eskudo</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>Ciparska funta</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>Češka kruna</displayName>
			</currency>
			<currency type="DDM">
				<displayName>East German Ostmark</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Njemačka marka</displayName>
			</currency>
			<currency type="DJF">
				<displayName>Djibouti Franc</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>Danska kruna</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>Dominikanski pezo</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>Alžirski dinar</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>Ecuador Sucre</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Ecuador Unidad de Valor Constante (UVC)</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Estonian Kroon</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Egipatska funta</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Eritrean Nakfa</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Španjolska pezeta</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Etiopski bir</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FIM">
				<displayName>Finska marka</displayName>
			</currency>
			<currency type="FJD">
				<displayName>Fidžijski dolar</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>Falklandska funta</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Francuski franak</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Britanska funta</displayName>
			</currency>
			<currency type="GEK">
				<displayName>Georgian Kupon Larit</displayName>
			</currency>
			<currency type="GEL">
				<displayName>Gruzijski lari</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GIP">
				<displayName>Gibraltarska funta</displayName>
			</currency>
			<currency type="GMD">
				<displayName>Gambia Dalasi</displayName>
			</currency>
			<currency type="GNF">
				<displayName>Gvinejski franak</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>Guinea Syli</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Equatorial Guinea Ekwele Guineana</displayName>
			</currency>
			<currency type="GRD">
				<displayName>Grčka drahma</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Kvecal</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>Portuguese Guinea Escudo</displayName>
			</currency>
			<currency type="GWP">
				<displayName>Gvinejskobisauski pezo</displayName>
			</currency>
			<currency type="GYD">
				<displayName>Guyana Dollar</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>Honkonški dolar</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>Hoduraška lempira</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>Hrvatski dinar</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna</displayName>
				<symbol>Kn</symbol>
			</currency>
			<currency type="HTG">
				<displayName>Haitian Gourde</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Mađarska forinta</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>Indonezijska rupija</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>Irska funta</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>Israelska funta</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Novi izraelski šekel</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indijska rupija</displayName>
				<symbol>INR</symbol>
			</currency>
			<currency type="IQD">
				<displayName>Irački dinar</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>Iranski rijal</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>Islandska kruna</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Talijanska lira</displayName>
			</currency>
			<currency type="JMD">
				<displayName>Jamaičanski dolar</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>Jordanski dinar</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>Japanski jen</displayName>
			</currency>
			<currency type="KES">
				<displayName>Kenijski šiling</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>Kyrgystan Som</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>Cambodian Riel</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>Comoro Franc</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KRW">
				<displayName>južnokorejski won</displayName>
			</currency>
			<currency type="KWD">
				<displayName>Kuvajtski dinar</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>Kajmanski dolar</displayName>
			</currency>
			<currency type="KZT">
				<displayName>Kazakhstan Tenge</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>Laotian Kip</displayName>
			</currency>
			<currency type="LKR">
				<displayName>Sri Lanka Rupee</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>Liberijski dolar</displayName>
			</currency>
			<currency type="LSL">
				<displayName>Lesotho Loti</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LTL">
				<displayName>Lithuanian Lita</displayName>
			</currency>
			<currency type="LTT">
				<displayName>Lithuanian Talonas</displayName>
			</currency>
			<currency type="LUF">
				<displayName>Luksemburški franak</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Latvian Lats</displayName>
			</currency>
			<currency type="LVR">
				<displayName>Latvian Ruble</displayName>
			</currency>
			<currency type="LYD">
				<displayName>Libijski dinar</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>Morokanski dirham</displayName>
			</currency>
			<currency type="MAF">
				<displayName>Morokanski franak</displayName>
			</currency>
			<currency type="MDL">
				<displayName>Moldovski lej</displayName>
			</currency>
			<currency type="MKD">
				<displayName>Makedonski denar</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>Mali Franc</displayName>
			</currency>
			<currency type="MMK">
				<displayName>Myanmar Kyat</displayName>
			</currency>
			<currency type="MNT">
				<displayName>Mongolski tugrik</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>Macao Pataca</displayName>
			</currency>
			<currency type="MRO">
				<displayName>Mauritanska ouguja</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>Malteška lira</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>Malteška funta</displayName>
			</currency>
			<currency type="MUR">
				<displayName>Mauricijska rupija</displayName>
			</currency>
			<currency type="MWK">
				<displayName>Malawi Kwacha</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>Meksički pezo</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>Meksički srebrni pezo (1861-1992)</displayName>
			</currency>
			<currency type="MYR">
				<displayName>Malaysian Ringgit</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>Mozambique Escudo</displayName>
			</currency>
			<currency type="MZM">
				<displayName>Mozambique Metical</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="NAD">
				<displayName>Namibijski dolar</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>Nigerijska naira</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Nizozemski gulden</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Norveška kruna</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>Nepalska rupija</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>Novozelandski dolar</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>Omanski rijal</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>Panamska balboa</displayName>
			</currency>
			<currency type="PEI">
				<displayName>Peruanski inti</displayName>
			</currency>
			<currency type="PEN">
				<displayName>Peruanski novi sol</displayName>
			</currency>
			<currency type="PES">
				<displayName>Peruanski sol</displayName>
			</currency>
			<currency type="PHP">
				<displayName>Filipinski pezo</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Pakistanska rupija</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>Poljska zlota</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>Poljska zlota (1950-1995)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Portugalski eskudo</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Paragvajski gvarani</displayName>
			</currency>
			<currency type="ROL">
				<displayName>Rumunjski lej</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>novi rumunjski lev</displayName>
			</currency>
			<currency type="RSD">
				<displayName>srpski dinar</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Ruska rublja</displayName>
			</currency>
			<currency type="RUR">
				<displayName>Ruska rublja (1991-1998)</displayName>
			</currency>
			<currency type="SAR">
				<displayName>saudijski rial</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Solomonskootočni dolar</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>Sejšelska rupija</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>Sudanski dinar</displayName>
			</currency>
			<currency type="SDP">
				<displayName>Sudanska funta</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Švedska kruna</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>Singapurski dolar</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SIT">
				<displayName>Slovenski tolar</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Slovačka kruna</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SOS">
				<displayName>Somalijski šiling</displayName>
				<symbol>Sh.</symbol>
			</currency>
			<currency type="SRG">
				<displayName>Surinamski gulden</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="SYP">
				<displayName>Sirijska funta</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>tajlandski bat</displayName>
			</currency>
			<currency type="TJS">
				<displayName>Tadžikistanski somoni</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Turkmenistanski manat</displayName>
			</currency>
			<currency type="TND">
				<displayName>Tuniski dinar</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Timorski eskudo</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Turska lira</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>Nova Turska Lira</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Trinidadtobaški dolar</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>Novotajvanski dolar</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>Tanzanijski šiling</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>Ukrajinska hrivnja</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Ugandski šiling (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Ugandski šiling</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>Američki dolar</displayName>
			</currency>
			<currency type="USN">
				<displayName>Američki dolar (sljedeći dan)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Američki dolar (isti dan)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Urugvajski pezo (1975-1993)</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Venezuelski bolivar</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VND">
				<displayName>Viejetnamski dong</displayName>
			</currency>
			<currency type="XAU">
				<displayName>Zlato</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Europska složena jedinica</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Europska monetarna jedinica</displayName>
			</currency>
			<currency type="XEU">
				<displayName>europska monetarna jedinica</displayName>
			</currency>
			<currency type="XXX">
				<displayName>nepoznata ili nevažeća valuta</displayName>
				<symbol>XXX</symbol>
			</currency>
			<currency type="YDD">
				<displayName>jemenski dinar</displayName>
			</currency>
			<currency type="YER">
				<displayName>Jemenski rial</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>Jugoslavenski čvrsti dinar</displayName>
			</currency>
			<currency type="YUM">
				<displayName>Jugoslavenski novi dinar</displayName>
			</currency>
			<currency type="YUN">
				<displayName>Jugoslavenski konvertibilni dinar</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Južnoafrički rand (financijski)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Južnoafrički rand</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>Zambijska kvača</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>Zairski novi zair</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>Zairski zair</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>Zimbabveanski dolar</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>da:d</yesstr>
			<nostr>ne:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[��		Locale/Data/aa.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.44 $"/>
		<generation date="$Date: 2008/05/28 15:49:27 $"/>
		<language type="aa"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">Qafar</language>
			<language type="ar">Arabic</language>
			<language type="de">German</language>
			<language type="en">English</language>
			<language type="es">Spanish</language>
			<language type="fr">French</language>
			<language type="hi">Hindi</language>
			<language type="it">Italian</language>
			<language type="ja">Japanese</language>
			<language type="pt">Portuguese</language>
			<language type="ru">Russian</language>
			<language type="zh">Chinese</language>
		</languages>
		<scripts>
			<script type="Latn">Latin</script>
		</scripts>
		<territories>
			<territory type="BR">Brazil</territory>
			<territory type="CN">China</territory>
			<territory type="DE">Germany</territory>
			<territory type="DJ">Yabuuti</territory>
			<territory type="ER">Eretria</territory>
			<territory type="ET">Otobbia</territory>
			<territory type="FR">France</territory>
			<territory type="GB">United Kingdom</territory>
			<territory type="IN">India</territory>
			<territory type="IT">Italy</territory>
			<territory type="JP">Japan</territory>
			<territory type="RU">Russia</territory>
			<territory type="US">United States</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a-z]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Qun</month>
							<month type="2">Nah</month>
							<month type="3">Cig</month>
							<month type="4">Agd</month>
							<month type="5">Cax</month>
							<month type="6">Qas</month>
							<month type="7">Qad</month>
							<month type="8">Leq</month>
							<month type="9">Way</month>
							<month type="10">Dit</month>
							<month type="11">Xim</month>
							<month type="12">Kax</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Qunxa Garablu</month>
							<month type="2">Kudo</month>
							<month type="3">Ciggilta Kudo</month>
							<month type="4">Agda Baxis</month>
							<month type="5">Caxah Alsa</month>
							<month type="6">Qasa Dirri</month>
							<month type="7">Qado Dirri</month>
							<month type="8">Liiqen</month>
							<month type="9">Waysu</month>
							<month type="10">Diteli</month>
							<month type="11">Ximoli</month>
							<month type="12">Kaxxa Garablu</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">Q</month>
							<month type="2">N</month>
							<month type="3">C</month>
							<month type="4">A</month>
							<month type="5">C</month>
							<month type="6">Q</month>
							<month type="7">Q</month>
							<month type="8">L</month>
							<month type="9">W</month>
							<month type="10">D</month>
							<month type="11">X</month>
							<month type="12">K</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">Aca</day>
							<day type="mon">Etl</day>
							<day type="tue">Tal</day>
							<day type="wed">Arb</day>
							<day type="thu">Kam</day>
							<day type="fri">Gum</day>
							<day type="sat">Sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">Acaada</day>
							<day type="mon">Etleeni</day>
							<day type="tue">Talaata</day>
							<day type="wed">Arbaqa</day>
							<day type="thu">Kamiisi</day>
							<day type="fri">Gumqata</day>
							<day type="sat">Sabti</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">A</day>
							<day type="mon">E</day>
							<day type="tue">T</day>
							<day type="wed">A</day>
							<day type="thu">K</day>
							<day type="fri">G</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>saaku</am>
				<pm>carra</pm>
				<eras>
					<eraAbbr>
						<era type="0">Yaasuusuk Duma</era>
						<era type="1">Yaasuusuk Wadir</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, MMMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd-MMM-yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="BRL">
				<displayName>Brazilian Real</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Chinese Yuan Renminbi</displayName>
			</currency>
			<currency type="DJF">
				<symbol>FD</symbol>
			</currency>
			<currency type="ERN">
				<symbol>Nfk</symbol>
			</currency>
			<currency type="ETB">
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="GBP">
				<displayName>British Pound Sterling</displayName>
			</currency>
			<currency type="INR">
				<displayName>Indian Rupee</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Japanese Yen</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Russian Ruble</displayName>
			</currency>
			<currency type="USD">
				<displayName>US Dollar</displayName>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[�{��Locale/Data/es.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.112 $"/>
		<generation date="$Date: 2008/06/17 14:12:12 $"/>
		<language type="es"/>
	</identity>
	<localeDisplayNames>
		<localeDisplayPattern>
			<localePattern>{0} ({1})</localePattern>
			<localeSeparator>,</localeSeparator>
		</localeDisplayPattern>
		<languages>
			<language type="aa">afar</language>
			<language type="ab">abjasio</language>
			<language type="ace">acehnés</language>
			<language type="ach">acoli</language>
			<language type="ada">adangme</language>
			<language type="ady">adigeo</language>
			<language type="ae">avéstico</language>
			<language type="af">afrikaans</language>
			<language type="afa">lengua afroasiática</language>
			<language type="afh">afrihili</language>
			<language type="ain">ainu</language>
			<language type="ak">akan</language>
			<language type="akk">acadio</language>
			<language type="ale">aleutiano</language>
			<language type="alg">lenguas algonquinas</language>
			<language type="alt">altái meridional</language>
			<language type="am">amárico</language>
			<language type="an">aragonés</language>
			<language type="ang">inglés antiguo</language>
			<language type="anp">angika</language>
			<language type="apa">lenguas apache</language>
			<language type="ar">árabe</language>
			<language type="arc">arameo</language>
			<language type="arn">araucano</language>
			<language type="arp">arapaho</language>
			<language type="art">lengua artificial</language>
			<language type="arw">arahuaco</language>
			<language type="as">asamés</language>
			<language type="ast">asturiano</language>
			<language type="ath">lenguas atabascas</language>
			<language type="aus">lenguas australianas</language>
			<language type="av">avar</language>
			<language type="awa">avadhi</language>
			<language type="ay">aimara</language>
			<language type="az">azerí</language>
			<language type="ba">bashkir</language>
			<language type="bad">banda</language>
			<language type="bai">lenguas bamileke</language>
			<language type="bal">baluchi</language>
			<language type="ban">balinés</language>
			<language type="bas">basa</language>
			<language type="bat">lengua báltica</language>
			<language type="be">bielorruso</language>
			<language type="bej">beja</language>
			<language type="bem">bemba</language>
			<language type="ber">bereber</language>
			<language type="bg">búlgaro</language>
			<language type="bh">bihari</language>
			<language type="bho">bhojpuri</language>
			<language type="bi">bislama</language>
			<language type="bik">bicol</language>
			<language type="bin">bini</language>
			<language type="bla">siksika</language>
			<language type="bm">bambara</language>
			<language type="bn">bengalí</language>
			<language type="bnt">bantú</language>
			<language type="bo">tibetano</language>
			<language type="br">bretón</language>
			<language type="bra">braj</language>
			<language type="bs">bosnio</language>
			<language type="btk">batak</language>
			<language type="bua">buriat</language>
			<language type="bug">buginés</language>
			<language type="byn">blin</language>
			<language type="ca">catalán</language>
			<language type="cad">caddo</language>
			<language type="cai">lengua india centroamericana</language>
			<language type="car">caribe</language>
			<language type="cau">lengua caucásica</language>
			<language type="cch">atsam</language>
			<language type="ce">checheno</language>
			<language type="ceb">cebuano</language>
			<language type="cel">lengua celta</language>
			<language type="ch">chamorro</language>
			<language type="chb">chibcha</language>
			<language type="chg">chagatái</language>
			<language type="chk">trukés</language>
			<language type="chm">marí</language>
			<language type="chn">jerga chinuk</language>
			<language type="cho">choctaw</language>
			<language type="chp">chipewyan</language>
			<language type="chr">cherokee</language>
			<language type="chy">cheyene</language>
			<language type="cmc">lenguas chámicas</language>
			<language type="co">corso</language>
			<language type="cop">copto</language>
			<language type="cpe">lengua criolla o pidgin basada en el inglés</language>
			<language type="cpf">lengua criolla o pidgin basada en el francés</language>
			<language type="cpp">lengua criolla o pidgin basada en el portugués</language>
			<language type="cr">cree</language>
			<language type="crh">tártaro de Crimea</language>
			<language type="crp">lengua criolla o pidgin</language>
			<language type="cs">checo</language>
			<language type="csb">casubio</language>
			<language type="cu">eslavo eclesiástico</language>
			<language type="cus">lengua cusita</language>
			<language type="cv">chuvash</language>
			<language type="cy">galés</language>
			<language type="da">danés</language>
			<language type="dak">dakota</language>
			<language type="dar">dargva</language>
			<language type="day">dayak</language>
			<language type="de">alemán</language>
			<language type="de_AT">alemán de Austria</language>
			<language type="de_CH">alto alemán de Suiza</language>
			<language type="del">delaware</language>
			<language type="den">slave (atabasca)</language>
			<language type="dgr">dogrib</language>
			<language type="din">dinka</language>
			<language type="doi">dogri</language>
			<language type="dra">lengua dravídica</language>
			<language type="dsb">sorbio inferior</language>
			<language type="dua">duala</language>
			<language type="dum">neerlandés medieval</language>
			<language type="dv">divehi</language>
			<language type="dyu">diula</language>
			<language type="dz">dzongkha</language>
			<language type="ee">ewe</language>
			<language type="efi">efik</language>
			<language type="egy">egipcio antiguo</language>
			<language type="eka">ekajuk</language>
			<language type="el">griego</language>
			<language type="elx">elamita</language>
			<language type="en">inglés</language>
			<language type="en_AU">inglés australiano</language>
			<language type="en_CA">inglés canadiense</language>
			<language type="en_GB">inglés británico</language>
			<language type="en_US">inglés estadounidense</language>
			<language type="enm">inglés medieval</language>
			<language type="eo">esperanto</language>
			<language type="es">español</language>
			<language type="es_419">español latinoamericano</language>
			<language type="es_ES">español de España</language>
			<language type="et">estonio</language>
			<language type="eu">vasco</language>
			<language type="ewo">ewondo</language>
			<language type="fa">persa</language>
			<language type="fan">fang</language>
			<language type="fat">fanti</language>
			<language type="ff">fula</language>
			<language type="fi">finés</language>
			<language type="fil">filipino</language>
			<language type="fiu">lengua finoúgria</language>
			<language type="fj">fidjiano</language>
			<language type="fo">feroés</language>
			<language type="fon">fon</language>
			<language type="fr">francés</language>
			<language type="fr_CA">francés canadiense</language>
			<language type="fr_CH">francés de Suiza</language>
			<language type="frm">francés medieval</language>
			<language type="fro">francés antiguo</language>
			<language type="frr">frisón septentrional</language>
			<language type="frs">frisón oriental</language>
			<language type="fur">friulano</language>
			<language type="fy">frisón</language>
			<language type="ga">irlandés</language>
			<language type="gaa">ga</language>
			<language type="gay">gayo</language>
			<language type="gba">gbaya</language>
			<language type="gd">gaélico escocés</language>
			<language type="gem">lengua germánica</language>
			<language type="gez">geez</language>
			<language type="gil">gilbertés</language>
			<language type="gl">gallego</language>
			<language type="gmh">alemán de la alta edad media</language>
			<language type="gn">guaraní</language>
			<language type="goh">alemán de la alta edad antigua</language>
			<language type="gon">gondi</language>
			<language type="gor">gorontalo</language>
			<language type="got">gótico</language>
			<language type="grb">grebo</language>
			<language type="grc">griego antiguo</language>
			<language type="gsw">alemán suizo</language>
			<language type="gu">gujarati</language>
			<language type="gv">gaélico manés</language>
			<language type="gwi">kutchin</language>
			<language type="ha">hausa</language>
			<language type="hai">haida</language>
			<language type="haw">hawaiano</language>
			<language type="he">hebreo</language>
			<language type="hi">hindi</language>
			<language type="hil">hiligaynon</language>
			<language type="him">himachali</language>
			<language type="hit">hitita</language>
			<language type="hmn">hmong</language>
			<language type="ho">hiri motu</language>
			<language type="hr">croata</language>
			<language type="hsb">sorbio superior</language>
			<language type="ht">haitiano</language>
			<language type="hu">húngaro</language>
			<language type="hup">hupa</language>
			<language type="hy">armenio</language>
			<language type="hz">herero</language>
			<language type="ia">interlingua</language>
			<language type="iba">iban</language>
			<language type="id">indonesio</language>
			<language type="ie">interlingue</language>
			<language type="ig">igbo</language>
			<language type="ii">sichuan yi</language>
			<language type="ijo">ijo</language>
			<language type="ik">inupiaq</language>
			<language type="ilo">ilocano</language>
			<language type="inc">lengua índica</language>
			<language type="ine">lengua indoeuropea</language>
			<language type="inh">ingush</language>
			<language type="io">ido</language>
			<language type="ira">lengua irania</language>
			<language type="iro">lenguas iroquesas</language>
			<language type="is">islandés</language>
			<language type="it">italiano</language>
			<language type="iu">inuktitut</language>
			<language type="ja">japonés</language>
			<language type="jbo">lojban</language>
			<language type="jpr">judeo-persa</language>
			<language type="jrb">judeo-árabe</language>
			<language type="jv">javanés</language>
			<language type="ka">georgiano</language>
			<language type="kaa">karakalpako</language>
			<language type="kab">cabila</language>
			<language type="kac">kachin</language>
			<language type="kaj">jju</language>
			<language type="kam">kamba</language>
			<language type="kar">karen</language>
			<language type="kaw">kawi</language>
			<language type="kbd">kabardiano</language>
			<language type="kcg">tyap</language>
			<language type="kfo">koro</language>
			<language type="kg">kongo</language>
			<language type="kha">khasi</language>
			<language type="khi">lengua joisana</language>
			<language type="kho">kotanés</language>
			<language type="ki">kikuyu</language>
			<language type="kj">kuanyama</language>
			<language type="kk">kazajo</language>
			<language type="kl">groenlandés</language>
			<language type="km">jemer</language>
			<language type="kmb">kimbundu</language>
			<language type="kn">canarés</language>
			<language type="ko">coreano</language>
			<language type="kok">konkani</language>
			<language type="kos">kosraeano</language>
			<language type="kpe">kpelle</language>
			<language type="kr">kanuri</language>
			<language type="krc">karachay-balkar</language>
			<language type="krl">carelio</language>
			<language type="kro">kru</language>
			<language type="kru">kurukh</language>
			<language type="ks">cachemiro</language>
			<language type="ku">kurdo</language>
			<language type="kum">kumyk</language>
			<language type="kut">kutenai</language>
			<language type="kv">komi</language>
			<language type="kw">córnico</language>
			<language type="ky">kirghiz</language>
			<language type="la">latín</language>
			<language type="lad">ladino</language>
			<language type="lah">lahnda</language>
			<language type="lam">lamba</language>
			<language type="lb">luxemburgués</language>
			<language type="lez">lezgiano</language>
			<language type="lg">ganda</language>
			<language type="li">limburgués</language>
			<language type="ln">lingala</language>
			<language type="lo">laosiano</language>
			<language type="lol">mongo</language>
			<language type="loz">lozi</language>
			<language type="lt">lituano</language>
			<language type="lu">luba-katanga</language>
			<language type="lua">luba-lulua</language>
			<language type="lui">luiseño</language>
			<language type="lun">lunda</language>
			<language type="luo">luo</language>
			<language type="lus">lushai</language>
			<language type="lv">letón</language>
			<language type="mad">madurés</language>
			<language type="mag">magahi</language>
			<language type="mai">maithili</language>
			<language type="mak">macasar</language>
			<language type="man">mandingo</language>
			<language type="map">lengua austronesia</language>
			<language type="mas">masai</language>
			<language type="mdf">moksha</language>
			<language type="mdr">mandar</language>
			<language type="men">mende</language>
			<language type="mg">malgache</language>
			<language type="mga">irlandés medieval</language>
			<language type="mh">marshalés</language>
			<language type="mi">maorí</language>
			<language type="mic">micmac</language>
			<language type="min">minangkabau</language>
			<language type="mis">lenguas varias</language>
			<language type="mk">macedonio</language>
			<language type="mkh">lengua mon-jemer</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongol</language>
			<language type="mnc">manchú</language>
			<language type="mni">manipuri</language>
			<language type="mno">lenguas manobo</language>
			<language type="mo">moldavo</language>
			<language type="moh">mohawk</language>
			<language type="mos">mossi</language>
			<language type="mr">marathi</language>
			<language type="ms">malayo</language>
			<language type="mt">maltés</language>
			<language type="mul">lenguas múltiples</language>
			<language type="mun">lenguas munda</language>
			<language type="mus">creek</language>
			<language type="mwl">mirandés</language>
			<language type="mwr">marwari</language>
			<language type="my">birmano</language>
			<language type="myn">maya</language>
			<language type="myv">erzya</language>
			<language type="na">nauruano</language>
			<language type="nah">náhuatl</language>
			<language type="nai">lengua india norteamericana</language>
			<language type="nap">napolitano</language>
			<language type="nb">bokmal noruego</language>
			<language type="nd">ndebele septentrional</language>
			<language type="nds">bajo alemán</language>
			<language type="ne">nepalí</language>
			<language type="new">newari</language>
			<language type="ng">ndonga</language>
			<language type="nia">nias</language>
			<language type="nic">lengua níger-cordofana</language>
			<language type="niu">niueano</language>
			<language type="nl">neerlandés</language>
			<language type="nl_BE">flamenco</language>
			<language type="nn">nynorsk noruego</language>
			<language type="no">noruego</language>
			<language type="nog">nogai</language>
			<language type="non">nórdico antiguo</language>
			<language type="nqo">n’ko</language>
			<language type="nr">ndebele meridional</language>
			<language type="nso">sotho septentrional</language>
			<language type="nub">lenguas nubias</language>
			<language type="nv">navajo</language>
			<language type="nwc">newari clásico</language>
			<language type="ny">nyanja</language>
			<language type="nym">nyamwezi</language>
			<language type="nyn">nyankole</language>
			<language type="nyo">nyoro</language>
			<language type="nzi">nzima</language>
			<language type="oc">occitano</language>
			<language type="oj">ojibwa</language>
			<language type="om">oromo</language>
			<language type="or">oriya</language>
			<language type="os">osético</language>
			<language type="osa">osage</language>
			<language type="ota">turco otomano</language>
			<language type="oto">lenguas otomanas</language>
			<language type="pa">punjabí</language>
			<language type="paa">lengua papú</language>
			<language type="pag">pangasinán</language>
			<language type="pal">pahlavi</language>
			<language type="pam">pampanga</language>
			<language type="pap">papiamento</language>
			<language type="pau">palauano</language>
			<language type="peo">persa antiguo</language>
			<language type="phi">lengua filipina</language>
			<language type="phn">fenicio</language>
			<language type="pi">pali</language>
			<language type="pl">polaco</language>
			<language type="pon">pohnpeiano</language>
			<language type="pra">lenguas prácritas</language>
			<language type="pro">provenzal antiguo</language>
			<language type="ps">pashto</language>
			<language type="pt">portugués</language>
			<language type="pt_BR">portugués de Brasil</language>
			<language type="pt_PT">portugués de Portugal</language>
			<language type="qu">quechua</language>
			<language type="raj">rajasthani</language>
			<language type="rap">rapanui</language>
			<language type="rar">rarotongano</language>
			<language type="rm">retorrománico</language>
			<language type="rn">kiroundi</language>
			<language type="ro">rumano</language>
			<language type="roa">lengua romance</language>
			<language type="rom">romaní</language>
			<language type="root">raíz</language>
			<language type="ru">ruso</language>
			<language type="rup">arrumano</language>
			<language type="rw">kinyarwanda</language>
			<language type="sa">sánscrito</language>
			<language type="sad">sandawe</language>
			<language type="sah">yakut</language>
			<language type="sai">lengua india sudamericana</language>
			<language type="sal">lenguas salish</language>
			<language type="sam">arameo samaritano</language>
			<language type="sas">sasak</language>
			<language type="sat">santali</language>
			<language type="sc">sardo</language>
			<language type="scn">siciliano</language>
			<language type="sco">escocés</language>
			<language type="sd">sindhi</language>
			<language type="se">sami septentrional</language>
			<language type="sel">selkup</language>
			<language type="sem">lengua semítica</language>
			<language type="sg">sango</language>
			<language type="sga">irlandés antiguo</language>
			<language type="sgn">lenguajes de signos</language>
			<language type="sh">serbocroata</language>
			<language type="shn">shan</language>
			<language type="si">cingalés</language>
			<language type="sid">sidamo</language>
			<language type="sio">lenguas sioux</language>
			<language type="sit">lengua sino-tibetana</language>
			<language type="sk">eslovaco</language>
			<language type="sl">esloveno</language>
			<language type="sla">lengua eslava</language>
			<language type="sm">samoano</language>
			<language type="sma">sami meridional</language>
			<language type="smi">lengua sami</language>
			<language type="smj">sami lule</language>
			<language type="smn">sami inari</language>
			<language type="sms">sami skolt</language>
			<language type="sn">shona</language>
			<language type="snk">soninké</language>
			<language type="so">somalí</language>
			<language type="sog">sogdiano</language>
			<language type="son">songhai</language>
			<language type="sq">albanés</language>
			<language type="sr">serbio</language>
			<language type="srn">sranan tongo</language>
			<language type="srr">serer</language>
			<language type="ss">siswati</language>
			<language type="ssa">lengua nilo-sahariana</language>
			<language type="st">sesotho</language>
			<language type="su">sundanés</language>
			<language type="suk">sukuma</language>
			<language type="sus">susu</language>
			<language type="sux">sumerio</language>
			<language type="sv">sueco</language>
			<language type="sw">swahili</language>
			<language type="syr">siriaco</language>
			<language type="ta">tamil</language>
			<language type="tai">lengua tai</language>
			<language type="te">telugu</language>
			<language type="tem">temne</language>
			<language type="ter">tereno</language>
			<language type="tet">tetún</language>
			<language type="tg">tayiko</language>
			<language type="th">tailandés</language>
			<language type="ti">tigriña</language>
			<language type="tig">tigré</language>
			<language type="tiv">tiv</language>
			<language type="tk">turcomano</language>
			<language type="tkl">tokelauano</language>
			<language type="tl">tagalo</language>
			<language type="tlh">klingon</language>
			<language type="tli">tlingit</language>
			<language type="tmh">tamashek</language>
			<language type="tn">setchwana</language>
			<language type="to">tongano</language>
			<language type="tog">tonga (Niasa)</language>
			<language type="tpi">tok pisin</language>
			<language type="tr">turco</language>
			<language type="ts">tsonga</language>
			<language type="tsi">tsimshiano</language>
			<language type="tt">tártaro</language>
			<language type="tum">tumbuka</language>
			<language type="tup">lenguas tupí</language>
			<language type="tut">lengua altaica</language>
			<language type="tvl">tuvaluano</language>
			<language type="tw">twi</language>
			<language type="ty">tahitiano</language>
			<language type="tyv">tuviniano</language>
			<language type="udm">udmurt</language>
			<language type="ug">uigur</language>
			<language type="uga">ugarítico</language>
			<language type="uk">ucraniano</language>
			<language type="umb">umbundu</language>
			<language type="und">indeterminada</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbeko</language>
			<language type="vai">vai</language>
			<language type="ve">venda</language>
			<language type="vi">vietnamita</language>
			<language type="vo">volapük</language>
			<language type="vot">vótico</language>
			<language type="wa">valón</language>
			<language type="wak">lenguas wakasha</language>
			<language type="wal">walamo</language>
			<language type="war">waray</language>
			<language type="was">washo</language>
			<language type="wen">lenguas sorbias</language>
			<language type="wo">uolof</language>
			<language type="xal">kalmyk</language>
			<language type="xh">xhosa</language>
			<language type="yao">yao</language>
			<language type="yap">yapés</language>
			<language type="yi">yídish</language>
			<language type="yo">yoruba</language>
			<language type="ypk">lenguas yupik</language>
			<language type="za">zhuang</language>
			<language type="zap">zapoteco</language>
			<language type="zen">zenaga</language>
			<language type="zh">chino</language>
			<language type="zh_Hans">chino simplificado</language>
			<language type="zh_Hant">chino tradicional</language>
			<language type="znd">zande</language>
			<language type="zu">zulú</language>
			<language type="zun">zuni</language>
			<language type="zxx">sin contenido lingüístico</language>
			<language type="zza">zazaki</language>
		</languages>
		<scripts>
			<script type="Arab">árabe</script>
			<script type="Armn">armenio</script>
			<script type="Avst">avéstico</script>
			<script type="Bali">balinés</script>
			<script type="Batk">batak</script>
			<script type="Beng">bengalí</script>
			<script type="Blis">símbolos blis</script>
			<script type="Bopo">bopomofo</script>
			<script type="Brah">brahmi</script>
			<script type="Brai">braille</script>
			<script type="Bugi">bugi</script>
			<script type="Buhd">buhid</script>
			<script type="Cans">símbolos aborígenes canadienses unificados</script>
			<script type="Cari">cario</script>
			<script type="Cham">cham</script>
			<script type="Cher">cherokee</script>
			<script type="Cirt">cirth</script>
			<script type="Copt">copto</script>
			<script type="Cprt">chipriota</script>
			<script type="Cyrl">cirílico</script>
			<script type="Cyrs">cirílico del antiguo eslavo eclesiástico</script>
			<script type="Deva">devanagari</script>
			<script type="Dsrt">deseret</script>
			<script type="Egyd">egipcio demótico</script>
			<script type="Egyh">egipcio hierático</script>
			<script type="Egyp">jeroglíficos egipcios</script>
			<script type="Ethi">etiópico</script>
			<script type="Geok">georgiano jutsuri</script>
			<script type="Geor">georgiano</script>
			<script type="Glag">glagolítico</script>
			<script type="Goth">gótico</script>
			<script type="Grek">griego</script>
			<script type="Gujr">gujarati</script>
			<script type="Guru">gurmuji</script>
			<script type="Hang">hangul</script>
			<script type="Hani">han</script>
			<script type="Hano">hanunoo</script>
			<script type="Hans">han simplificado</script>
			<script type="Hant">han tradicional</script>
			<script type="Hebr">hebreo</script>
			<script type="Hira">hiragana</script>
			<script type="Hmng">pahawh hmong</script>
			<script type="Hrkt">katakana o hiragana</script>
			<script type="Hung">húngaro antiguo</script>
			<script type="Inds">Indio (harappan)</script>
			<script type="Ital">antigua bastardilla</script>
			<script type="Java">javanés</script>
			<script type="Jpan">japonés</script>
			<script type="Kali">kayah li</script>
			<script type="Kana">katakana</script>
			<script type="Khar">kharosthi</script>
			<script type="Khmr">jemer</script>
			<script type="Knda">canarés</script>
			<script type="Kore">coreano</script>
			<script type="Lana">lanna</script>
			<script type="Laoo">lao</script>
			<script type="Latf">latín (variante fraktur)</script>
			<script type="Latg">latín (variante gaélica)</script>
			<script type="Latn">latín</script>
			<script type="Lepc">lepcha</script>
			<script type="Limb">limbu</script>
			<script type="Lina">lineal A</script>
			<script type="Linb">lineal B</script>
			<script type="Lyci">licio</script>
			<script type="Lydi">lidio</script>
			<script type="Mand">mandeo</script>
			<script type="Maya">jeroglíficos mayas</script>
			<script type="Mero">meroítico</script>
			<script type="Mlym">malayálam</script>
			<script type="Mong">mongol</script>
			<script type="Moon">moon</script>
			<script type="Mtei">manipuri</script>
			<script type="Mymr">birmano</script>
			<script type="Nkoo">n’ko</script>
			<script type="Ogam">ogham</script>
			<script type="Olck">ol ciki</script>
			<script type="Orkh">orkhon</script>
			<script type="Orya">oriya</script>
			<script type="Osma">osmaniya</script>
			<script type="Perm">permiano antiguo</script>
			<script type="Phag">phags-pa</script>
			<script type="Phnx">fenicio</script>
			<script type="Plrd">Pollard Miao</script>
			<script type="Qaai">heredado</script>
			<script type="Rjng">rejang</script>
			<script type="Roro">rongo-rongo</script>
			<script type="Runr">rúnico</script>
			<script type="Sara">sarati</script>
			<script type="Saur">saurashtra</script>
			<script type="Sgnw">SignWriting</script>
			<script type="Shaw">shaviano</script>
			<script type="Sinh">binhala</script>
			<script type="Sund">sundanés</script>
			<script type="Sylo">syloti nagri</script>
			<script type="Syrc">siriaco</script>
			<script type="Syre">siriaco estrangelo</script>
			<script type="Syrj">siriaco occidental</script>
			<script type="Syrn">siriaco oriental</script>
			<script type="Tagb">tagbanúa</script>
			<script type="Tale">tai le</script>
			<script type="Talu">nuevo tai lue</script>
			<script type="Taml">tamil</script>
			<script type="Telu">telugu</script>
			<script type="Teng">tengwar</script>
			<script type="Tfng">tifinagh</script>
			<script type="Tglg">tagalo</script>
			<script type="Thaa">thaana</script>
			<script type="Thai">tailandés</script>
			<script type="Tibt">tibetano</script>
			<script type="Ugar">ugarítico</script>
			<script type="Vaii">vai</script>
			<script type="Visp">lenguaje visible</script>
			<script type="Xpeo">persa antiguo</script>
			<script type="Xsux">cuneiforme sumerio-acadio</script>
			<script type="Yiii">yi</script>
			<script type="Zxxx">no escrito</script>
			<script type="Zyyy">común</script>
			<script type="Zzzz">escritura desconocida o no válida</script>
		</scripts>
		<territories>
			<territory type="001">Mundo</territory>
			<territory type="002">África</territory>
			<territory type="003">América del Norte</territory>
			<territory type="005">Suramérica</territory>
			<territory type="009">Oceanía</territory>
			<territory type="011">África occidental</territory>
			<territory type="013">Centroamérica</territory>
			<territory type="014">África oriental</territory>
			<territory type="015">África septentrional</territory>
			<territory type="017">África central</territory>
			<territory type="018">África meridional</territory>
			<territory type="019">Américas</territory>
			<territory type="021">Norteamérica</territory>
			<territory type="029">Caribe</territory>
			<territory type="030">Asia oriental</territory>
			<territory type="034">Asia meridional</territory>
			<territory type="035">Sudeste asiático</territory>
			<territory type="039">Europa meridional</territory>
			<territory type="053">Australia y Nueva Zelanda</territory>
			<territory type="054">Melanesia</territory>
			<territory type="057">Micronesia [057]</territory>
			<territory type="061">Polinesia</territory>
			<territory type="062">Asia centromeridional</territory>
			<territory type="142">Asia</territory>
			<territory type="143">Asia central</territory>
			<territory type="145">Asia occidental</territory>
			<territory type="150">Europa</territory>
			<territory type="151">Europa oriental</territory>
			<territory type="154">Europa septentrional</territory>
			<territory type="155">Europa occidental</territory>
			<territory type="172">Comunidad de Estados Independientes</territory>
			<territory type="419">Latinoamérica y el Caribe</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emiratos Árabes Unidos</territory>
			<territory type="AF">Afganistán</territory>
			<territory type="AG">Antigua y Barbuda</territory>
			<territory type="AI">Anguila</territory>
			<territory type="AL">Albania</territory>
			<territory type="AM">Armenia</territory>
			<territory type="AN">Antillas Neerlandesas</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antártida</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AS">Samoa Americana</territory>
			<territory type="AT">Austria</territory>
			<territory type="AU">Australia</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Islas Åland</territory>
			<territory type="AZ">Azerbaiyán</territory>
			<territory type="BA">Bosnia-Herzegovina</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Bélgica</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BH">Bahréin</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benín</territory>
			<territory type="BL">San Bartolomé</territory>
			<territory type="BM">Bermudas</territory>
			<territory type="BN">Brunéi</territory>
			<territory type="BO">Bolivia</territory>
			<territory type="BR">Brasil</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bután</territory>
			<territory type="BV">Isla Bouvet</territory>
			<territory type="BW">Botsuana</territory>
			<territory type="BY">Bielorrusia</territory>
			<territory type="BZ">Belice</territory>
			<territory type="CA">Canadá</territory>
			<territory type="CC">Islas Cocos</territory>
			<territory type="CD">República Democrática del Congo</territory>
			<territory type="CF">República Centroafricana</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Suiza</territory>
			<territory type="CI">Costa de Marfil</territory>
			<territory type="CK">Islas Cook</territory>
			<territory type="CL">Chile</territory>
			<territory type="CM">Camerún</territory>
			<territory type="CN">China</territory>
			<territory type="CO">Colombia</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia y Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cabo Verde</territory>
			<territory type="CX">Isla Christmas</territory>
			<territory type="CY">Chipre</territory>
			<territory type="CZ">República Checa</territory>
			<territory type="DE">Alemania</territory>
			<territory type="DJ">Yibuti</territory>
			<territory type="DK">Dinamarca</territory>
			<territory type="DM">Dominica</territory>
			<territory type="DO">República Dominicana</territory>
			<territory type="DZ">Argelia</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonia</territory>
			<territory type="EG">Egipto</territory>
			<territory type="EH">Sáhara Occidental</territory>
			<territory type="ER">Eritrea</territory>
			<territory type="ES">España</territory>
			<territory type="ET">Etiopía</territory>
			<territory type="FI">Finlandia</territory>
			<territory type="FJ">Fiyi</territory>
			<territory type="FK">Islas Malvinas</territory>
			<territory type="FM">Micronesia</territory>
			<territory type="FO">Islas Feroe</territory>
			<territory type="FR">Francia</territory>
			<territory type="GA">Gabón</territory>
			<territory type="GB">Reino Unido</territory>
			<territory type="GD">Granada</territory>
			<territory type="GE">Georgia</territory>
			<territory type="GF">Guayana Francesa</territory>
			<territory type="GG">Guernsey</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GL">Groenlandia</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinea</territory>
			<territory type="GP">Guadalupe</territory>
			<territory type="GQ">Guinea Ecuatorial</territory>
			<territory type="GR">Grecia</territory>
			<territory type="GS">Islas Georgia del Sur y Sandwich del Sur</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Hong Kong</territory>
			<territory type="HM">Islas Heard y McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Croacia</territory>
			<territory type="HT">Haití</territory>
			<territory type="HU">Hungría</territory>
			<territory type="ID">Indonesia</territory>
			<territory type="IE">Irlanda</territory>
			<territory type="IL">Israel</territory>
			<territory type="IM">Isla de Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Territorio Británico del Océano Índico</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Irán</territory>
			<territory type="IS">Islandia</territory>
			<territory type="IT">Italia</territory>
			<territory type="JE">Jersey</territory>
			<territory type="JM">Jamaica</territory>
			<territory type="JO">Jordania</territory>
			<territory type="JP">Japón</territory>
			<territory type="KE">Kenia</territory>
			<territory type="KG">Kirguistán</territory>
			<territory type="KH">Camboya</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoras</territory>
			<territory type="KN">San Cristóbal y Nieves</territory>
			<territory type="KP">Corea del Norte</territory>
			<territory type="KR">Corea del Sur</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Islas Caimán</territory>
			<territory type="KZ">Kazajistán</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Líbano</territory>
			<territory type="LC">Santa Lucía</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LS">Lesoto</territory>
			<territory type="LT">Lituania</territory>
			<territory type="LU">Luxemburgo</territory>
			<territory type="LV">Letonia</territory>
			<territory type="LY">Libia</territory>
			<territory type="MA">Marruecos</territory>
			<territory type="MC">Mónaco</territory>
			<territory type="MD">Moldavia</territory>
			<territory type="ME">Montenegro</territory>
			<territory type="MF">San Martín</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Islas Marshall</territory>
			<territory type="MK">Macedonia</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Myanmar</territory>
			<territory type="MN">Mongolia</territory>
			<territory type="MO">Macao</territory>
			<territory type="MP">Islas Marianas del Norte</territory>
			<territory type="MQ">Martinica</territory>
			<territory type="MR">Mauritania</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Mauricio</territory>
			<territory type="MV">Maldivas</territory>
			<territory type="MW">Malaui</territory>
			<territory type="MX">México</territory>
			<territory type="MY">Malasia</territory>
			<territory type="MZ">Mozambique</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NC">Nueva Caledonia</territory>
			<territory type="NE">Níger</territory>
			<territory type="NF">Isla Norfolk</territory>
			<territory type="NG">Nigeria</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Países Bajos</territory>
			<territory type="NO">Noruega</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Isla Niue</territory>
			<territory type="NZ">Nueva Zelanda</territory>
			<territory type="OM">Omán</territory>
			<territory type="PA">Panamá</territory>
			<territory type="PE">Perú</territory>
			<territory type="PF">Polinesia Francesa</territory>
			<territory type="PG">Papúa Nueva Guinea</territory>
			<territory type="PH">Filipinas</territory>
			<territory type="PK">Pakistán</territory>
			<territory type="PL">Polonia</territory>
			<territory type="PM">San Pedro y Miquelón</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Puerto Rico</territory>
			<territory type="PS">Palestina</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Territorios alejados de Oceanía</territory>
			<territory type="QU">Unión Europea</territory>
			<territory type="RE">Reunión</territory>
			<territory type="RO">Rumanía</territory>
			<territory type="RS">Serbia</territory>
			<territory type="RU">Rusia</territory>
			<territory type="RW">Ruanda</territory>
			<territory type="SA">Arabia Saudí</territory>
			<territory type="SB">Islas Salomón</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SD">Sudán</territory>
			<territory type="SE">Suecia</territory>
			<territory type="SG">Singapur</territory>
			<territory type="SH">Santa Elena</territory>
			<territory type="SI">Eslovenia</territory>
			<territory type="SJ">Svalbard y Jan Mayen</territory>
			<territory type="SK">Eslovaquia</territory>
			<territory type="SL">Sierra Leona</territory>
			<territory type="SM">San Marino</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalia</territory>
			<territory type="SR">Surinam</territory>
			<territory type="ST">Santo Tomé y Príncipe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Siria</territory>
			<territory type="SZ">Suazilandia</territory>
			<territory type="TC">Islas Turcas y Caicos</territory>
			<territory type="TD">Chad</territory>
			<territory type="TF">Territorios Australes Franceses</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailandia</territory>
			<territory type="TJ">Tayikistán</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor Oriental</territory>
			<territory type="TM">Turkmenistán</territory>
			<territory type="TN">Túnez</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turquía</territory>
			<territory type="TT">Trinidad y Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwán</territory>
			<territory type="TZ">Tanzania</territory>
			<territory type="UA">Ucrania</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Islas menores alejadas de los Estados Unidos</territory>
			<territory type="US">Estados Unidos</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbekistán</territory>
			<territory type="VA">Ciudad del Vaticano</territory>
			<territory type="VC">San Vicente y las Granadinas</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Islas Vírgenes Británicas</territory>
			<territory type="VI">Islas Vírgenes de los Estados Unidos</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis y Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sudáfrica</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabue</territory>
			<territory type="ZZ">Región desconocida o no válida</territory>
		</territories>
		<variants>
			<variant type="1901">Ortografía alemana tradicional</variant>
			<variant type="1996">Ortografía alemana de 1996</variant>
			<variant type="AREVELA">Armenio oriental</variant>
			<variant type="FONIPA">alfabeto fonético internacional IPA</variant>
			<variant type="MONOTON">Monotónico</variant>
			<variant type="POLYTON">Politónico</variant>
			<variant type="POSIX">Ordenador</variant>
			<variant type="REVISED">Ortografía revisada</variant>
		</variants>
		<keys>
			<key type="calendar">calendario</key>
			<key type="collation">intercalación</key>
			<key type="currency">moneda</key>
		</keys>
		<types>
			<type type="big5han" key="collation">orden del chino tradicional - Big5</type>
			<type type="buddhist" key="calendar">calendario budista</type>
			<type type="chinese" key="calendar">calendario chino</type>
			<type type="direct" key="collation">orden directo</type>
			<type type="gb2312han" key="collation">orden del chino simplificado - GB2312</type>
			<type type="gregorian" key="calendar">calendario gregoriano</type>
			<type type="hebrew" key="calendar">calendario hebreo</type>
			<type type="indian" key="calendar">calendario nacional hindú</type>
			<type type="islamic" key="calendar">calendario islámico</type>
			<type type="islamic-civil" key="calendar">calendario civil islámico</type>
			<type type="japanese" key="calendar">calendario japonés</type>
			<type type="phonebook" key="collation">orden de listín telefónico</type>
			<type type="pinyin" key="collation">orden pinyin</type>
			<type type="roc" key="calendar">calendario de la República Popular de China</type>
			<type type="stroke" key="collation">orden de los trazos</type>
			<type type="traditional" key="collation">orden tradicional</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">estadounidense</measurementSystemName>
			<measurementSystemName type="metric">métrico</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Idioma: {0}</codePattern>
			<codePattern type="script">Dialecto: {0}</codePattern>
			<codePattern type="territory">Región: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<inList>titlecase-firstword</inList>
		<inText type="currency">lowercase-words</inText>
		<inText type="fields">lowercase-words</inText>
		<inText type="keys">lowercase-words</inText>
		<inText type="languages">lowercase-words</inText>
		<inText type="long">lowercase-words</inText>
		<inText type="measurementSystemNames">lowercase-words</inText>
		<inText type="quarterWidth">lowercase-words</inText>
		<inText type="scripts">lowercase-words</inText>
		<inText type="types">lowercase-words</inText>
	</layout>
	<characters>
		<exemplarCharacters>[a á b-e é f-i í j-n ñ o ó p-u ú ü v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[à ă â å ä ã ā æ-è ĕ ê ë ē ì ĭ î ï ī º ò ŏ ô ö ø ō œ ß ù ŭ û ū ÿ]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<localizedPatternChars>GuMtkHmsSEDFwWahKzUeygAZvcL</localizedPatternChars>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">ene</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">abr</month>
							<month type="5">may</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">ago</month>
							<month type="9">sep</month>
							<month type="10">oct</month>
							<month type="11">nov</month>
							<month type="12">dic</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">enero</month>
							<month type="2">febrero</month>
							<month type="3">marzo</month>
							<month type="4">abril</month>
							<month type="5">mayo</month>
							<month type="6">junio</month>
							<month type="7">julio</month>
							<month type="8">agosto</month>
							<month type="9">septiembre</month>
							<month type="10">octubre</month>
							<month type="11">noviembre</month>
							<month type="12">diciembre</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">E</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">J</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dom</day>
							<day type="mon">lun</day>
							<day type="tue">mar</day>
							<day type="wed">mié</day>
							<day type="thu">jue</day>
							<day type="fri">vie</day>
							<day type="sat">sáb</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">domingo</day>
							<day type="mon">lunes</day>
							<day type="tue">martes</day>
							<day type="wed">miércoles</day>
							<day type="thu">jueves</day>
							<day type="fri">viernes</day>
							<day type="sat">sábado</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">J</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">1er trimestre</quarter>
							<quarter type="2">2º trimestre</quarter>
							<quarter type="3">3er trimestre</quarter>
							<quarter type="4">4º trimestre</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.m.</am>
				<pm>p.m.</pm>
				<eras>
					<eraNames>
						<era type="0">antes de Cristo</era>
						<era type="1">anno Dómini</era>
					</eraNames>
					<eraAbbr>
						<era type="0">a.C.</era>
						<era type="1">d.C.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d 'de' MMMM 'de' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>hh:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="HHmm">HH:mm</dateFormatItem>
						<dateFormatItem id="HHmmss">HH:mm:ss</dateFormatItem>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E, d-M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d 'de' MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMMdd">dd-MMM</dateFormatItem>
						<dateFormatItem id="MMd">d/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="hhmm">hh:mm a</dateFormatItem>
						<dateFormatItem id="hhmmss">hh:mm:ss a</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM 'de' yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyMMM">MMM-yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyQQQQ">QQQQ 'de' yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M–M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E d/M – E d/M</greatestDifference>
							<greatestDifference id="d">E d/M – E d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM–MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d MMM – E d MMM</greatestDifference>
							<greatestDifference id="d">E d MMM – E d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d MMM – d MMM</greatestDifference>
							<greatestDifference id="d">d–d MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">d/M - d/M</greatestDifference>
							<greatestDifference id="d">d/M - d/M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d–d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">H–H</greatestDifference>
							<greatestDifference id="h">H–H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">H:mm - H:mm</greatestDifference>
							<greatestDifference id="h">H:mm - H:mm</greatestDifference>
							<greatestDifference id="m">H:mm - H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">H:mm - H:mm v</greatestDifference>
							<greatestDifference id="h">H:mm - H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm - H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">H–H v</greatestDifference>
							<greatestDifference id="h">H–H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y–y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">M/yy – M/yy</greatestDifference>
							<greatestDifference id="y">M/yy – M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E d/M/yy - E d/M/yy</greatestDifference>
							<greatestDifference id="d">E d/M/yy – E d/M/yy</greatestDifference>
							<greatestDifference id="y">E d/M/yy - E d/M/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM yyyy – MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d MMM – E d MMM yyyy</greatestDifference>
							<greatestDifference id="d">E d MMM – E d MMM yyyy</greatestDifference>
							<greatestDifference id="y">E d MMM yyyy – E d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM–MM yyyy</greatestDifference>
							<greatestDifference id="y">MM-yyyy – MM-yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d MMM – d MMM yyyy</greatestDifference>
							<greatestDifference id="d">d–d MMM yyyy</greatestDifference>
							<greatestDifference id="y">d MMM yyyy – d MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">d/M/yy - d/M/yy</greatestDifference>
							<greatestDifference id="d">M/d/yy – M/d/yy</greatestDifference>
							<greatestDifference id="y">d/M/yy - d/M/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>era</displayName>
					</field>
					<field type="year">
						<displayName>año</displayName>
					</field>
					<field type="month">
						<displayName>mes</displayName>
					</field>
					<field type="week">
						<displayName>semana</displayName>
					</field>
					<field type="day">
						<displayName>día</displayName>
						<relative type="0">hoy</relative>
						<relative type="1">mañana</relative>
						<relative type="2">pasado mañana</relative>
						<relative type="-1">ayer</relative>
						<relative type="-2">antes de ayer</relative>
					</field>
					<field type="weekday">
						<displayName>día de la semana</displayName>
					</field>
					<field type="dayperiod">
						<displayName>periodo del día</displayName>
					</field>
					<field type="hour">
						<displayName>hora</displayName>
					</field>
					<field type="minute">
						<displayName>minuto</displayName>
					</field>
					<field type="second">
						<displayName>segundo</displayName>
					</field>
					<field type="zone">
						<displayName>zona</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>Hora de {0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Desconocida</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>Anguila</exemplarCity>
			</zone>
			<zone type="Europe/Tirane">
				<exemplarCity>Tirana</exemplarCity>
			</zone>
			<zone type="Asia/Yerevan">
				<exemplarCity>Ereván</exemplarCity>
			</zone>
			<zone type="Antarctica/South_Pole">
				<exemplarCity>Polo Sur</exemplarCity>
			</zone>
			<zone type="Antarctica/DumontDUrville">
				<exemplarCity>Dumont d'Urville</exemplarCity>
			</zone>
			<zone type="America/Argentina/Rio_Gallegos">
				<exemplarCity>Río Gallegos</exemplarCity>
			</zone>
			<zone type="America/Argentina/Tucuman">
				<exemplarCity>Tucumán</exemplarCity>
			</zone>
			<zone type="America/Cordoba">
				<exemplarCity>Córdoba</exemplarCity>
			</zone>
			<zone type="America/Buenos_Aires">
			</zone>
			<zone type="Europe/Vienna">
				<exemplarCity>Viena</exemplarCity>
			</zone>
			<zone type="Australia/Perth">
			</zone>
			<zone type="Australia/Darwin">
			</zone>
			<zone type="Australia/Adelaide">
				<exemplarCity>Adelaida</exemplarCity>
			</zone>
			<zone type="Australia/Hobart">
			</zone>
			<zone type="Australia/Sydney">
				<exemplarCity>Sídney</exemplarCity>
			</zone>
			<zone type="Australia/Brisbane">
			</zone>
			<zone type="Asia/Baku">
				<exemplarCity>Bakú</exemplarCity>
			</zone>
			<zone type="Europe/Brussels">
				<exemplarCity>Bruselas</exemplarCity>
			</zone>
			<zone type="Europe/Sofia">
				<exemplarCity>Sofía</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>Bahráin</exemplarCity>
			</zone>
			<zone type="Africa/Porto-Novo">
				<exemplarCity>Portonovo</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>Bermudas</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>Brunéi</exemplarCity>
			</zone>
			<zone type="America/Eirunepe">
				<exemplarCity>Eirunepé</exemplarCity>
			</zone>
			<zone type="America/Rio_Branco">
				<exemplarCity>Río Branco</exemplarCity>
			</zone>
			<zone type="America/Cuiaba">
				<exemplarCity>Cuiabá</exemplarCity>
			</zone>
			<zone type="America/Campo_Grande">
			</zone>
			<zone type="America/Belem">
				<exemplarCity>Belém</exemplarCity>
			</zone>
			<zone type="America/Araguaina">
				<exemplarCity>Araguaína</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>São Paulo</exemplarCity>
			</zone>
			<zone type="America/Bahia">
				<exemplarCity>Bahía</exemplarCity>
			</zone>
			<zone type="America/Maceio">
				<exemplarCity>Maceió</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>Belice</exemplarCity>
			</zone>
			<zone type="America/Vancouver">
			</zone>
			<zone type="America/Edmonton">
			</zone>
			<zone type="America/Regina">
			</zone>
			<zone type="America/Winnipeg">
			</zone>
			<zone type="America/Toronto">
			</zone>
			<zone type="America/Halifax">
			</zone>
			<zone type="America/St_Johns">
				<exemplarCity>St. John’s</exemplarCity>
			</zone>
			<zone type="Europe/Zurich">
				<exemplarCity>Zúrich</exemplarCity>
			</zone>
			<zone type="Pacific/Easter">
				<exemplarCity>Isla de Pascua</exemplarCity>
			</zone>
			<zone type="Asia/Urumqi">
				<exemplarCity>Ürümqi</exemplarCity>
			</zone>
			<zone type="America/Bogota">
				<exemplarCity>Bogotá</exemplarCity>
			</zone>
			<zone type="America/Havana">
				<exemplarCity>La Habana</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>Cabo Verde</exemplarCity>
			</zone>
			<zone type="Europe/Prague">
				<exemplarCity>Praga</exemplarCity>
			</zone>
			<zone type="Europe/Berlin">
				<exemplarCity>Berlín</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>Yibuti</exemplarCity>
			</zone>
			<zone type="Europe/Copenhagen">
				<exemplarCity>Copenhague</exemplarCity>
			</zone>
			<zone type="Africa/Algiers">
				<exemplarCity>Argelia</exemplarCity>
			</zone>
			<zone type="Pacific/Galapagos">
				<exemplarCity>Galápagos</exemplarCity>
			</zone>
			<zone type="Europe/Tallinn">
				<exemplarCity>Tallin</exemplarCity>
			</zone>
			<zone type="Africa/Cairo">
				<exemplarCity>El Cairo</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Islas Canarias</exemplarCity>
			</zone>
			<zone type="Africa/Addis_Ababa">
				<exemplarCity>Addis Abeba</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>Fiyi</exemplarCity>
			</zone>
			<zone type="Pacific/Truk">
				<exemplarCity>Chuuk</exemplarCity>
			</zone>
			<zone type="Atlantic/Faeroe">
				<exemplarCity>Islas Feroe</exemplarCity>
			</zone>
			<zone type="Europe/Paris">
				<exemplarCity>París</exemplarCity>
			</zone>
			<zone type="Europe/London">
				<exemplarCity>Londres</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>Granada</exemplarCity>
			</zone>
			<zone type="Asia/Tbilisi">
				<exemplarCity>Tiflis</exemplarCity>
			</zone>
			<zone type="America/Cayenne">
				<exemplarCity>Cayena</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>Guadalupe</exemplarCity>
			</zone>
			<zone type="Europe/Athens">
				<exemplarCity>Atenas</exemplarCity>
			</zone>
			<zone type="Atlantic/South_Georgia">
				<exemplarCity>Georgia del Sur</exemplarCity>
			</zone>
			<zone type="America/Port-au-Prince">
				<exemplarCity>Puerto Príncipe</exemplarCity>
			</zone>
			<zone type="Asia/Jakarta">
				<exemplarCity>Yakarta</exemplarCity>
			</zone>
			<zone type="Asia/Makassar">
				<exemplarCity>Makasar</exemplarCity>
			</zone>
			<zone type="Europe/Dublin">
				<exemplarCity>Dublín</exemplarCity>
			</zone>
			<zone type="Asia/Jerusalem">
				<exemplarCity>Jerusalén</exemplarCity>
			</zone>
			<zone type="Asia/Baghdad">
				<exemplarCity>Bagdad</exemplarCity>
			</zone>
			<zone type="Asia/Tehran">
				<exemplarCity>Teherán</exemplarCity>
			</zone>
			<zone type="Atlantic/Reykjavik">
				<exemplarCity>Reikiavik</exemplarCity>
			</zone>
			<zone type="Europe/Rome">
				<exemplarCity>Roma</exemplarCity>
			</zone>
			<zone type="Asia/Tokyo">
				<exemplarCity>Tokio</exemplarCity>
			</zone>
			<zone type="Indian/Comoro">
				<exemplarCity>Comoras</exemplarCity>
			</zone>
			<zone type="America/St_Kitts">
				<exemplarCity>St. Kitts</exemplarCity>
			</zone>
			<zone type="Asia/Seoul">
				<exemplarCity>Seúl</exemplarCity>
			</zone>
			<zone type="America/Cayman">
				<exemplarCity>Caimán</exemplarCity>
			</zone>
			<zone type="Asia/Aqtau">
				<exemplarCity>Aktau</exemplarCity>
			</zone>
			<zone type="Asia/Aqtobe">
				<exemplarCity>Aktobe</exemplarCity>
			</zone>
			<zone type="Asia/Vientiane">
				<exemplarCity>Vientián</exemplarCity>
			</zone>
			<zone type="America/St_Lucia">
				<exemplarCity>Santa Lucía</exemplarCity>
			</zone>
			<zone type="Europe/Vilnius">
				<exemplarCity>Vilna</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>Luxemburgo</exemplarCity>
			</zone>
			<zone type="Africa/Tripoli">
				<exemplarCity>Trípoli</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>Mónaco</exemplarCity>
			</zone>
			<zone type="Asia/Rangoon">
				<exemplarCity>Rangún</exemplarCity>
			</zone>
			<zone type="Asia/Ulaanbaatar">
				<exemplarCity>Ulán Bator</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>Macao</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>Martinica</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>Mauricio</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>Maldivas</exemplarCity>
			</zone>
			<zone type="America/Tijuana">
			</zone>
			<zone type="America/Hermosillo">
			</zone>
			<zone type="America/Mazatlan">
				<exemplarCity>Mazatlán</exemplarCity>
			</zone>
			<zone type="America/Chihuahua">
			</zone>
			<zone type="America/Mexico_City">
				<exemplarCity>Ciudad de México</exemplarCity>
			</zone>
			<zone type="America/Merida">
				<exemplarCity>Mérida</exemplarCity>
			</zone>
			<zone type="America/Cancun">
				<exemplarCity>Cancún</exemplarCity>
			</zone>
			<zone type="Asia/Katmandu">
				<exemplarCity>Katmandú</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>Panamá</exemplarCity>
			</zone>
			<zone type="Pacific/Tahiti">
				<exemplarCity>Tahití</exemplarCity>
			</zone>
			<zone type="Europe/Warsaw">
				<exemplarCity>Varsovia</exemplarCity>
			</zone>
			<zone type="America/Miquelon">
				<exemplarCity>Miquelón</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>Islas Pitcairn</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisboa</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>Palaos</exemplarCity>
			</zone>
			<zone type="America/Asuncion">
				<exemplarCity>Asunción</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>Reunión</exemplarCity>
			</zone>
			<zone type="Europe/Bucharest">
				<exemplarCity>Bucarest</exemplarCity>
			</zone>
			<zone type="Europe/Kaliningrad">
				<exemplarCity>Kaliningrado</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Moscú</exemplarCity>
			</zone>
			<zone type="Europe/Volgograd">
				<exemplarCity>Volgogrado</exemplarCity>
			</zone>
			<zone type="Asia/Yekaterinburg">
				<exemplarCity>Yekaterinburgo</exemplarCity>
			</zone>
			<zone type="Asia/Sakhalin">
				<exemplarCity>Sajalín</exemplarCity>
			</zone>
			<zone type="Asia/Riyadh">
				<exemplarCity>Riad</exemplarCity>
			</zone>
			<zone type="Africa/Khartoum">
				<exemplarCity>Jartún</exemplarCity>
			</zone>
			<zone type="Europe/Stockholm">
				<exemplarCity>Estocolmo</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>Singapur</exemplarCity>
			</zone>
			<zone type="Atlantic/St_Helena">
				<exemplarCity>Santa Helena</exemplarCity>
			</zone>
			<zone type="Africa/Sao_Tome">
				<exemplarCity>Santo Tomé</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>Salvador</exemplarCity>
			</zone>
			<zone type="Asia/Damascus">
				<exemplarCity>Damasco</exemplarCity>
			</zone>
			<zone type="Asia/Dushanbe">
				<exemplarCity>Duchanbé</exemplarCity>
			</zone>
			<zone type="Asia/Ashgabat">
				<exemplarCity>Asjabad</exemplarCity>
			</zone>
			<zone type="Africa/Tunis">
				<exemplarCity>Túnez</exemplarCity>
			</zone>
			<zone type="Europe/Istanbul">
				<exemplarCity>Estambul</exemplarCity>
			</zone>
			<zone type="America/Port_of_Spain">
				<exemplarCity>Puerto España</exemplarCity>
			</zone>
			<zone type="Pacific/Honolulu">
				<exemplarCity>Honolulú</exemplarCity>
			</zone>
			<zone type="America/Los_Angeles">
				<exemplarCity>Los Ángeles</exemplarCity>
			</zone>
			<zone type="America/Phoenix">
			</zone>
			<zone type="America/North_Dakota/Center">
				<exemplarCity>Centro</exemplarCity>
			</zone>
			<zone type="America/Indianapolis">
				<exemplarCity>Indianápolis</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Nueva York</exemplarCity>
			</zone>
			<zone type="Asia/Samarkand">
				<exemplarCity>Samarcanda</exemplarCity>
			</zone>
			<zone type="America/St_Vincent">
				<exemplarCity>San Vicente</exemplarCity>
			</zone>
			<zone type="Africa/Johannesburg">
				<exemplarCity>Johannesburgo</exemplarCity>
			</zone>
			<metazone type="Acre">
				<long>
					<standard>Hora de Acre</standard>
					<daylight>Hora de verano de Acre</daylight>
				</long>
			</metazone>
			<metazone type="Afghanistan">
				<long>
					<standard>Hora de Afganistán</standard>
				</long>
			</metazone>
			<metazone type="Africa_Central">
				<long>
					<standard>Hora de África central</standard>
				</long>
			</metazone>
			<metazone type="Africa_Eastern">
				<long>
					<standard>Hora de África oriental</standard>
				</long>
			</metazone>
			<metazone type="Africa_Southern">
				<long>
					<standard>Hora estándar de África meridional</standard>
				</long>
			</metazone>
			<metazone type="Africa_Western">
				<long>
					<standard>Hora de África occidental</standard>
					<daylight>Hora de verano de África occidental</daylight>
				</long>
			</metazone>
			<metazone type="Aktyubinsk">
				<long>
					<standard>Hora de Aktyubinsk</standard>
					<daylight>Hora de verano de Aktyubinsk</daylight>
				</long>
			</metazone>
			<metazone type="Alaska">
				<long>
					<generic>Hora de Alaska</generic>
					<standard>Hora estándar de Alaska</standard>
					<daylight>Hora de verano de Alaska</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Alaska_Hawaii">
				<long>
					<generic>Hora de Alaska-Hawái</generic>
					<standard>Hora estándar de Alaska-Hawái</standard>
					<daylight>Hora de verano de Alaska-Hawái</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Amazon">
				<long>
					<standard>Hora del Amazonas</standard>
					<daylight>Hora de verano del Amazonas</daylight>
				</long>
			</metazone>
			<metazone type="America_Central">
				<long>
					<generic>Hora central</generic>
					<standard>Hora estándar central</standard>
					<daylight>Hora de verano central</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Eastern">
				<long>
					<generic>Hora oriental</generic>
					<standard>Hora estándar oriental</standard>
					<daylight>Hora de verano oriental</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Mountain">
				<long>
					<generic>Hora de las Montañas</generic>
					<standard>Hora estándar de Montaña</standard>
					<daylight>Hora de verano de Montaña</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="America_Pacific">
				<long>
					<generic>Hora del Pacífico</generic>
					<standard>Hora estándar del Pacífico</standard>
					<daylight>Hora de verano del Pacífico</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Aqtau">
				<long>
					<standard>Hora de Aktau</standard>
					<daylight>Hora de verano de Aktau</daylight>
				</long>
				<short>
					<standard>AQTT (Aktau)</standard>
					<daylight>AQTST (Aktau)</daylight>
				</short>
			</metazone>
			<metazone type="Aqtobe">
				<long>
					<standard>Hora de Aktobe</standard>
					<daylight>Hora de verano de Aktobe</daylight>
				</long>
				<short>
					<standard>AQTT (Aktobe)</standard>
					<daylight>AQTST (Aktobe)</daylight>
				</short>
			</metazone>
			<metazone type="Arabian">
				<long>
					<generic>Hora de Arabia</generic>
					<standard>Hora estándar de Arabia</standard>
					<daylight>Hora de verano de Arabia</daylight>
				</long>
				<short>
					<generic>AT (Arabia)</generic>
					<standard>AST (Arabia)</standard>
					<daylight>ADT (Arabia)</daylight>
				</short>
			</metazone>
			<metazone type="Argentina">
				<long>
					<standard>Hora de Argentina</standard>
					<daylight>Hora de verano de Argentina</daylight>
				</long>
			</metazone>
			<metazone type="Argentina_Western">
				<long>
					<standard>Hora de Argentina occidental</standard>
				</long>
			</metazone>
			<metazone type="Armenia">
				<long>
					<standard>Hora de Armenia</standard>
					<daylight>Hora de verano de Armenia</daylight>
				</long>
			</metazone>
			<metazone type="Ashkhabad">
				<long>
					<standard>Hora de Asjabad</standard>
					<daylight>Hora de verano de Asjabad</daylight>
				</long>
			</metazone>
			<metazone type="Atlantic">
				<long>
					<generic>Hora del Atlántico</generic>
					<standard>Hora estándar del Atlántico</standard>
					<daylight>Hora de verano del Atlántico</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Central">
				<long>
					<generic>Hora de Australia central</generic>
					<standard>Hora estándar de Australia central</standard>
					<daylight>Hora de verano de Australia central</daylight>
				</long>
			</metazone>
			<metazone type="Australia_CentralWestern">
				<long>
					<generic>Hora de Australia centroriental</generic>
					<standard>Hora estándar de Australia centroriental</standard>
					<daylight>Hora de verano de Australia centroriental</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Eastern">
				<long>
					<generic>Hora de Australia oriental</generic>
					<standard>Hora estándar de Australia oriental</standard>
					<daylight>Hora de verano de Australia oriental</daylight>
				</long>
			</metazone>
			<metazone type="Australia_Western">
				<long>
					<generic>Hora de Australia occidental</generic>
					<standard>Hora estándar de Australia occidental</standard>
					<daylight>Hora de verano de Australia occidental</daylight>
				</long>
			</metazone>
			<metazone type="Azerbaijan">
				<long>
					<standard>Hora de Azerbaiyán</standard>
					<daylight>Hora de verano de Azerbaiyán</daylight>
				</long>
			</metazone>
			<metazone type="Azores">
				<long>
					<standard>Hora de las Azores</standard>
					<daylight>Hora de verano de las Azores</daylight>
				</long>
			</metazone>
			<metazone type="Baku">
				<long>
					<standard>Hora de Bakú</standard>
					<daylight>Hora de verano de Bakú</daylight>
				</long>
			</metazone>
			<metazone type="Bangladesh">
				<long>
					<standard>Hora de Bangladesh</standard>
				</long>
			</metazone>
			<metazone type="Bering">
				<long>
					<generic>Hora de Bering</generic>
					<standard>Hora estándar de Bering</standard>
					<daylight>Hora de verano de Bering</daylight>
				</long>
			</metazone>
			<metazone type="Bhutan">
				<long>
					<standard>Hora de Bután</standard>
				</long>
			</metazone>
			<metazone type="Bolivia">
				<long>
					<standard>Hora de Bolivia</standard>
				</long>
			</metazone>
			<metazone type="Borneo">
				<long>
					<standard>Hora de Borneo</standard>
					<daylight>Hora de verano de Borneo</daylight>
				</long>
			</metazone>
			<metazone type="Brasilia">
				<long>
					<standard>Hora de Brasilia</standard>
					<daylight>Hora de verano de Brasilia</daylight>
				</long>
			</metazone>
			<metazone type="Chamorro">
				<long>
					<standard>Hora estándar de Chamorro</standard>
				</long>
			</metazone>
			<metazone type="Changbai">
				<long>
					<standard>Hora de Changbai</standard>
				</long>
			</metazone>
			<metazone type="Chile">
				<long>
					<standard>Hora de Chile</standard>
					<daylight>Hora de verano de Chile</daylight>
				</long>
			</metazone>
			<metazone type="China">
				<long>
					<generic>Hora de China</generic>
					<standard>Hora estándar de China</standard>
					<daylight>Hora de verano de China</daylight>
				</long>
				<short>
					<standard>CST (China)</standard>
				</short>
			</metazone>
			<metazone type="Choibalsan">
				<long>
					<standard>Hora de Choibalsan</standard>
					<daylight>Hora de verano de Choibalsan</daylight>
				</long>
			</metazone>
			<metazone type="Colombia">
				<long>
					<standard>Hora de Colombia</standard>
					<daylight>Hora de verano de Colombia</daylight>
				</long>
			</metazone>
			<metazone type="Cuba">
				<long>
					<generic>Hora de Cuba</generic>
					<standard>Hora estándar de Cuba</standard>
					<daylight>Hora de verano de Cuba</daylight>
				</long>
			</metazone>
			<metazone type="Dacca">
				<long>
					<standard>Hora de Dacca</standard>
				</long>
			</metazone>
			<metazone type="Dushanbe">
				<long>
					<standard>Hora de Dusambé</standard>
					<daylight>Hora de verano de Dusambé</daylight>
				</long>
			</metazone>
			<metazone type="Dutch_Guiana">
				<long>
					<standard>Hora de la Guayana Holandesa</standard>
				</long>
			</metazone>
			<metazone type="East_Timor">
				<long>
					<standard>Hora de Timor Oriental</standard>
				</long>
			</metazone>
			<metazone type="Ecuador">
				<long>
					<standard>Hora de Ecuador</standard>
				</long>
			</metazone>
			<metazone type="Europe_Central">
				<long>
					<standard>Hora estándar de Europa Central</standard>
					<daylight>Hora de verano de Europa Central</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Hora estándar de Europa del Este</standard>
					<daylight>Hora de verano de Europa del Este</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Hora de Europa Occidental</standard>
					<daylight>Hora de verano de Europa Occidental</daylight>
				</long>
			</metazone>
			<metazone type="French_Guiana">
				<long>
					<standard>Hora de la Guayana Francesa</standard>
				</long>
			</metazone>
			<metazone type="Frunze">
				<long>
					<standard>Hora de Frunze</standard>
					<daylight>Hora de verano de Frunze</daylight>
				</long>
			</metazone>
			<metazone type="GMT">
				<long>
					<standard>Hora media de Greenwich</standard>
				</long>
			</metazone>
			<metazone type="Galapagos">
				<long>
					<standard>Hora de Galápagos</standard>
				</long>
			</metazone>
			<metazone type="Georgia">
				<long>
					<standard>Hora de Georgia</standard>
					<daylight>Hora de verano de Georgia</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Central">
				<long>
					<standard>Hora de Groenlandia central</standard>
					<daylight>Hora de verano de Groenlandia central</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Eastern">
				<long>
					<standard>Hora de Groenlandia oriental</standard>
					<daylight>Hora de verano de Groenlandia oriental</daylight>
				</long>
			</metazone>
			<metazone type="Greenland_Western">
				<long>
					<standard>Hora de Groenlandia occidental</standard>
					<daylight>Hora de verano de Groenlandia occidental</daylight>
				</long>
			</metazone>
			<metazone type="Guam">
				<long>
					<standard>Hora estándar de Guam</standard>
				</long>
			</metazone>
			<metazone type="Gulf">
				<long>
					<standard>Hora estándar del Golfo</standard>
				</long>
			</metazone>
			<metazone type="Guyana">
				<long>
					<standard>Hora de la Guyana</standard>
				</long>
			</metazone>
			<metazone type="Hawaii_Aleutian">
				<long>
					<generic>Hora de Hawái-Aleutianas</generic>
					<standard>Hora estándar de Hawái-Aleutianas</standard>
					<daylight>Hora de verano de Hawái-Aleutianas</daylight>
				</long>
				<commonlyUsed>true</commonlyUsed>
			</metazone>
			<metazone type="Hong_Kong">
				<long>
					<standard>Hora de Hong Kong</standard>
					<daylight>Hora de verano de Hong Kong</daylight>
				</long>
			</metazone>
			<metazone type="India">
				<long>
					<standard>Hora estándar de la India</standard>
				</long>
			</metazone>
			<metazone type="Indochina">
				<long>
					<standard>Hora de Indochina</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Central">
				<long>
					<standard>Hora de Indonesia central</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Eastern">
				<long>
					<standard>Hora de Indonesia oriental</standard>
				</long>
			</metazone>
			<metazone type="Indonesia_Western">
				<long>
					<standard>Hora de Indonesia occidental</standard>
				</long>
			</metazone>
			<metazone type="Israel">
				<long>
					<generic>Hora de Israel</generic>
					<standard>Hora estándar de Israel</standard>
					<daylight>Hora de verano de Israel</daylight>
				</long>
				<short>
					<standard>IST (Israel)</standard>
				</short>
			</metazone>
			<metazone type="Japan">
				<long>
					<generic>Hora de Japón</generic>
					<standard>Hora estándar de Japón</standard>
					<daylight>Hora de verano de Japón</daylight>
				</long>
			</metazone>
			<metazone type="Karachi">
				<long>
					<standard>Hora de Karachi</standard>
				</long>
			</metazone>
			<metazone type="Kashgar">
				<long>
					<standard>Hora de Kashgar</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Eastern">
				<long>
					<standard>Hora estándar de Kazajistán oriental</standard>
				</long>
			</metazone>
			<metazone type="Kazakhstan_Western">
				<long>
					<standard>Hora estándar de Kazajistán occidental</standard>
				</long>
			</metazone>
			<metazone type="Kizilorda">
				<long>
					<standard>Hora de Kizil Orda</standard>
					<daylight>Hora de verano de Kizil Orda</daylight>
				</long>
			</metazone>
			<metazone type="Korea">
				<long>
					<generic>Hora de Corea</generic>
					<standard>Hora estándar de Corea</standard>
					<daylight>Hora de verano de Corea</daylight>
				</long>
			</metazone>
			<metazone type="Kuybyshev">
				<long>
					<standard>Hora de Kuibishev</standard>
					<daylight>Hora de verano de Kuibishev</daylight>
				</long>
			</metazone>
			<metazone type="Kwajalein">
				<long>
					<standard>Hora de Kwajalein</standard>
				</long>
			</metazone>
			<metazone type="Kyrgystan">
				<long>
					<standard>Hora de Kirguistán</standard>
				</long>
			</metazone>
			<metazone type="Lanka">
				<long>
					<standard>Hora de Sri Lanka</standard>
				</long>
			</metazone>
			<metazone type="Long_Shu">
				<long>
					<standard>Hora de Long-Shu</standard>
				</long>
			</metazone>
			<metazone type="Lord_Howe">
				<long>
					<generic>Hora de Lord Howe</generic>
					<standard>Hora estándar de Lord Howe</standard>
					<daylight>Hora de verano de Lord Howe</daylight>
				</long>
			</metazone>
			<metazone type="Macau">
				<long>
					<standard>Hora de Macao</standard>
					<daylight>Hora de verano de Macao</daylight>
				</long>
			</metazone>
			<metazone type="Malaya">
				<long>
					<standard>Hora de Malaya</standard>
				</long>
			</metazone>
			<metazone type="Malaysia">
				<long>
					<standard>Hora de Malasia</standard>
				</long>
			</metazone>
			<metazone type="Marshall_Islands">
				<long>
					<standard>Hora de las Islas Marshall</standard>
				</long>
			</metazone>
			<metazone type="Mongolia">
				<long>
					<standard>Hora de Ulán Bator</standard>
					<daylight>Hora de verano de Ulán Bator</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Hora de Moscú</generic>
					<standard>Hora estándar de Moscú</standard>
					<daylight>Hora de verano de Moscú</daylight>
				</long>
			</metazone>
			<metazone type="Myanmar">
				<long>
					<standard>Hora de Myanmar</standard>
				</long>
			</metazone>
			<metazone type="Nepal">
				<long>
					<standard>Hora de Nepal</standard>
				</long>
			</metazone>
			<metazone type="New_Zealand">
				<long>
					<generic>Hora de Nueva Zelanda</generic>
					<standard>Hora estándar de Nueva Zelanda</standard>
					<daylight>Hora de verano de Nueva Zelanda</daylight>
				</long>
			</metazone>
			<metazone type="Newfoundland">
				<long>
					<generic>Hora de Terranova</generic>
					<standard>Hora estándar de Newfoundland</standard>
					<daylight>Hora de verano de Newfoundland</daylight>
				</long>
			</metazone>
			<metazone type="Noronha">
				<long>
					<standard>Hora de Fernando de Noronha</standard>
					<daylight>Hora de verano de Fernando de Noronha</daylight>
				</long>
			</metazone>
			<metazone type="North_Mariana">
				<long>
					<standard>Hora de las Islas Marianas del Norte</standard>
				</long>
			</metazone>
			<metazone type="Pakistan">
				<long>
					<standard>Hora de Pakistán</standard>
					<daylight>Hora de verano de Pakistán</daylight>
				</long>
			</metazone>
			<metazone type="Paraguay">
				<long>
					<standard>Hora de Paraguay</standard>
					<daylight>Hora de verano de Paraguay</daylight>
				</long>
			</metazone>
			<metazone type="Peru">
				<long>
					<standard>Hora de Perú</standard>
					<daylight>Hora de verano de Perú</daylight>
				</long>
			</metazone>
			<metazone type="Philippines">
				<long>
					<standard>Hora de Filipinas</standard>
					<daylight>Hora de verano de Filipinas</daylight>
				</long>
			</metazone>
			<metazone type="Pierre_Miquelon">
				<long>
					<generic>Hora de San Pedro y Miquelón</generic>
					<standard>Hora estándar de San Pedro y Miquelón</standard>
					<daylight>Hora de verano de San Pedro y Miquelón</daylight>
				</long>
			</metazone>
			<metazone type="Qyzylorda">
				<long>
					<standard>Hora de Qyzylorda</standard>
					<daylight>Hora de verano de Qyzylorda</daylight>
				</long>
			</metazone>
			<metazone type="Samara">
				<long>
					<standard>Hora de Samara</standard>
					<daylight>Hora de verano de Samara</daylight>
				</long>
			</metazone>
			<metazone type="Samarkand">
				<long>
					<standard>Hora de Samarcanda</standard>
					<daylight>Hora de verano de Samarcanda</daylight>
				</long>
				<short>
					<standard>SAMT (Samarcanda)</standard>
					<daylight>SAMST (Samarcanda)</daylight>
				</short>
			</metazone>
			<metazone type="Samoa">
				<long>
					<standard>Hora estándar de Samoa</standard>
				</long>
			</metazone>
			<metazone type="Shevchenko">
				<long>
					<standard>Hora de Shevchenko</standard>
					<daylight>Hora de verano de Shevchenko</daylight>
				</long>
			</metazone>
			<metazone type="Suriname">
				<long>
					<standard>Hora de Surinam</standard>
				</long>
			</metazone>
			<metazone type="Sverdlovsk">
				<long>
					<standard>Hora de Sverdlovsk</standard>
					<daylight>Hora de verano de Sverdlovsk</daylight>
				</long>
			</metazone>
			<metazone type="Tajikistan">
				<long>
					<standard>Hora de Tayikistán</standard>
				</long>
			</metazone>
			<metazone type="Tashkent">
				<long>
					<standard>Hora de Tashkent</standard>
					<daylight>Hora de verano de Tashkent</daylight>
				</long>
			</metazone>
			<metazone type="Tbilisi">
				<long>
					<standard>Hora de Tbilisi</standard>
					<daylight>Hora de verano de Tbilisi</daylight>
				</long>
			</metazone>
			<metazone type="Turkey">
				<long>
					<standard>Hora de Turquía</standard>
					<daylight>Hora de verano de Turquía</daylight>
				</long>
			</metazone>
			<metazone type="Turkmenistan">
				<long>
					<standard>Hora de Turkmenistán</standard>
					<daylight>Hora de verano de Turkmenistán</daylight>
				</long>
			</metazone>
			<metazone type="Uralsk">
				<long>
					<standard>Hora de Oral</standard>
					<daylight>Hora de verano de Oral</daylight>
				</long>
			</metazone>
			<metazone type="Uruguay">
				<long>
					<standard>Hora de Uruguay</standard>
					<daylight>Hora de verano de Uruguay</daylight>
				</long>
			</metazone>
			<metazone type="Urumqi">
				<long>
					<standard>Hora de Ürümqi</standard>
				</long>
			</metazone>
			<metazone type="Uzbekistan">
				<long>
					<standard>Hora de Uzbekistán</standard>
					<daylight>Hora de verano de Uzbekistán</daylight>
				</long>
			</metazone>
			<metazone type="Venezuela">
				<long>
					<standard>Hora de Venezuela</standard>
				</long>
			</metazone>
			<metazone type="Volgograd">
				<long>
					<standard>Hora de Volgogrado</standard>
					<daylight>Hora de verano de Volgogrado</daylight>
				</long>
			</metazone>
			<metazone type="Yekaterinburg">
				<long>
					<standard>Hora de Yekaterinburgo</standard>
					<daylight>Hora de verano de Yekaterinburgo</daylight>
				</long>
			</metazone>
			<metazone type="Yerevan">
				<long>
					<standard>Hora de Ereván</standard>
					<daylight>Hora de verano de Ereván</daylight>
				</long>
			</metazone>
			<metazone type="Yukon">
				<long>
					<generic>Hora del Yukón</generic>
					<standard>Hora estándar del Yukón</standard>
					<daylight>Hora de verano del Yukón</daylight>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="ADP">
				<displayName>peseta andorrana</displayName>
				<displayName count="one">peseta andorrana</displayName>
				<displayName count="other">pesetas andorranas</displayName>
			</currency>
			<currency type="AED">
				<displayName>dírham de los Emiratos Árabes Unidos</displayName>
			</currency>
			<currency type="AFA">
				<displayName>afgani (1927-2002)</displayName>
			</currency>
			<currency type="AFN">
				<displayName>afgani</displayName>
				<symbol>Af</symbol>
			</currency>
			<currency type="ALL">
				<displayName>lek albanés</displayName>
				<symbol>lek</symbol>
			</currency>
			<currency type="AMD">
				<displayName>dram armenio</displayName>
				<symbol>dram</symbol>
			</currency>
			<currency type="ANG">
				<displayName>florín de las Antillas Neerlandesas</displayName>
				<symbol>NA f.</symbol>
			</currency>
			<currency type="AOA">
				<displayName>kwanza angoleño</displayName>
			</currency>
			<currency type="AOK">
				<displayName>kwanza angoleño (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>nuevo kwanza angoleño (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>kwanza reajustado angoleño (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>austral argentino</displayName>
				<displayName count="one">austral argentino</displayName>
				<displayName count="other">australes argentinos</displayName>
			</currency>
			<currency type="ARP">
				<displayName>peso argentino (1983-1985)</displayName>
				<displayName count="one">peso argentino (ARP)</displayName>
				<displayName count="other">pesos argentinos (ARP)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>peso argentino</displayName>
				<displayName count="one">peso argentino</displayName>
				<displayName count="other">pesos argentinos</displayName>
				<symbol>Arg$</symbol>
			</currency>
			<currency type="ATS">
				<displayName>chelín austriaco</displayName>
				<displayName count="one">chelín austriaco</displayName>
				<displayName count="other">chelines austriacos</displayName>
			</currency>
			<currency type="AUD">
				<displayName>dólar australiano</displayName>
				<displayName count="one">dólar australiano</displayName>
				<displayName count="other">dólares australianos</displayName>
				<symbol>$A</symbol>
			</currency>
			<currency type="AWG">
				<displayName>florín de Aruba</displayName>
			</currency>
			<currency type="AZM">
				<displayName>manat azerí (1993-2006)</displayName>
			</currency>
			<currency type="AZN">
				<displayName>manat azerí</displayName>
			</currency>
			<currency type="BAD">
				<displayName>dinar bosnio</displayName>
				<displayName count="one">dinar bosnio</displayName>
				<displayName count="other">dinares bosnios</displayName>
			</currency>
			<currency type="BAM">
				<displayName>marco convertible de Bosnia-Herzegovina</displayName>
				<displayName count="one">marco convertible de Bosnia-Herzegovina</displayName>
				<displayName count="other">marcos convertibles de Bosnia-Herzegovina</displayName>
				<symbol>KM</symbol>
			</currency>
			<currency type="BBD">
				<displayName>dólar de Barbados</displayName>
				<symbol>BDS$</symbol>
			</currency>
			<currency type="BDT">
				<displayName>taka de Bangladesh</displayName>
				<symbol>Tk</symbol>
			</currency>
			<currency type="BEC">
				<displayName>franco belga (convertible)</displayName>
				<displayName count="one">franco belga (convertible)</displayName>
				<displayName count="other">francos belgas (convertibles)</displayName>
			</currency>
			<currency type="BEF">
				<displayName>franco belga</displayName>
				<displayName count="one">franco belga</displayName>
				<displayName count="other">francos belgas</displayName>
				<symbol>BF</symbol>
			</currency>
			<currency type="BEL">
				<displayName>franco belga (financiero)</displayName>
				<displayName count="one">franco belga (financiero)</displayName>
				<displayName count="other">francos belgas (financieros)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>lev fuerte búlgaro</displayName>
				<displayName count="one">lev fuerte búlgaro</displayName>
				<displayName count="other">leva fuertes búlgaros</displayName>
				<symbol>lev</symbol>
			</currency>
			<currency type="BGN">
				<displayName>nuevo lev búlgaro</displayName>
				<displayName count="one">nuevo lev búlgaro</displayName>
				<displayName count="other">nuevos leva búlgaros</displayName>
			</currency>
			<currency type="BHD">
				<displayName>dinar bahreiní</displayName>
				<symbol>BD</symbol>
			</currency>
			<currency type="BIF">
				<displayName>franco de Burundi</displayName>
				<symbol>Fbu</symbol>
			</currency>
			<currency type="BMD">
				<displayName>dólar de Bermudas</displayName>
				<symbol>Ber$</symbol>
			</currency>
			<currency type="BND">
				<displayName>dólar de Brunéi</displayName>
			</currency>
			<currency type="BOB">
				<displayName>boliviano</displayName>
				<displayName count="one">boliviano</displayName>
				<displayName count="other">bolivianos</displayName>
				<symbol>Bs</symbol>
			</currency>
			<currency type="BOP">
				<displayName>peso boliviano</displayName>
				<displayName count="one">peso boliviano</displayName>
				<displayName count="other">pesos bolivianos</displayName>
			</currency>
			<currency type="BOV">
				<displayName>MVDOL boliviano</displayName>
				<displayName count="one">MVDOL boliviano</displayName>
				<displayName count="other">MVDOL bolivianos</displayName>
			</currency>
			<currency type="BRB">
				<displayName>nuevo cruceiro brasileño (1967-1986)</displayName>
				<displayName count="one">nuevo cruzado brasileño (BRB)</displayName>
				<displayName count="other">nuevos cruzados brasileños (BRB)</displayName>
			</currency>
			<currency type="BRC">
				<displayName>cruzado brasileño</displayName>
				<displayName count="one">cruzado brasileño</displayName>
				<displayName count="other">cruzados brasileños</displayName>
			</currency>
			<currency type="BRE">
				<displayName>cruceiro brasileño (1990-1993)</displayName>
				<displayName count="one">cruceiro brasileño (BRE)</displayName>
				<displayName count="other">cruceiros brasileños (BRE)</displayName>
			</currency>
			<currency type="BRL">
				<displayName>real brasileño</displayName>
				<displayName count="one">real brasileño</displayName>
				<displayName count="other">reales brasileños</displayName>
			</currency>
			<currency type="BRN">
				<displayName>nuevo cruzado brasileño</displayName>
				<displayName count="one">nuevo cruzado brasileño</displayName>
				<displayName count="other">nuevos cruzados brasileños</displayName>
			</currency>
			<currency type="BRR">
				<displayName>cruceiro brasileño</displayName>
				<displayName count="one">cruceiro brasileño</displayName>
				<displayName count="other">cruceiros brasileños</displayName>
			</currency>
			<currency type="BSD">
				<displayName>dólar de las Bahamas</displayName>
			</currency>
			<currency type="BTN">
				<displayName>ngultrum butanés</displayName>
				<symbol>Nu</symbol>
			</currency>
			<currency type="BUK">
				<displayName>kyat birmano</displayName>
			</currency>
			<currency type="BWP">
				<displayName>pula botsuano</displayName>
			</currency>
			<currency type="BYB">
				<displayName>nuevo rublo bielorruso (1994-1999)</displayName>
			</currency>
			<currency type="BYR">
				<displayName>rublo bielorruso</displayName>
				<symbol>Rbl</symbol>
			</currency>
			<currency type="BZD">
				<displayName>dólar de Belice</displayName>
				<symbol>BZ$</symbol>
			</currency>
			<currency type="CAD">
				<displayName>dólar canadiense</displayName>
				<displayName count="one">dólar canadiense</displayName>
				<displayName count="other">dólares canadienses</displayName>
				<symbol>Can$</symbol>
			</currency>
			<currency type="CDF">
				<displayName>franco congoleño</displayName>
			</currency>
			<currency type="CHE">
				<displayName>euro WIR</displayName>
				<displayName count="one">euro WIR</displayName>
				<displayName count="other">euros WIR</displayName>
			</currency>
			<currency type="CHF">
				<displayName>franco suizo</displayName>
				<displayName count="one">franco suizo</displayName>
				<displayName count="other">francos suizos</displayName>
				<symbol>SwF</symbol>
			</currency>
			<currency type="CHW">
				<displayName>franco WIR</displayName>
				<displayName count="one">franco WIR</displayName>
				<displayName count="other">francos WIR</displayName>
			</currency>
			<currency type="CLF">
				<displayName>unidad de fomento chilena</displayName>
				<displayName count="one">unidad de fomento chilena</displayName>
				<displayName count="other">unidades de fomento chilenas</displayName>
			</currency>
			<currency type="CLP">
				<displayName>peso chileno</displayName>
				<displayName count="one">peso chileno</displayName>
				<displayName count="other">pesos chilenos</displayName>
				<symbol>Ch$</symbol>
			</currency>
			<currency type="CNY">
				<displayName>yuan renminbi chino</displayName>
				<symbol>Y</symbol>
			</currency>
			<currency type="COP">
				<displayName>peso colombiano</displayName>
				<displayName count="one">peso colombiano</displayName>
				<displayName count="other">pesos colombianos</displayName>
				<symbol>Col$</symbol>
			</currency>
			<currency type="COU">
				<displayName>unidad de valor real colombiana</displayName>
				<displayName count="one">unidad de valor real</displayName>
				<displayName count="other">unidades de valor reales</displayName>
			</currency>
			<currency type="CRC">
				<displayName>colón costarricense</displayName>
				<displayName count="one">colón costarricense</displayName>
				<displayName count="other">colones costarricenses</displayName>
				<symbol>C</symbol>
			</currency>
			<currency type="CSD">
				<displayName>antiguo dinar serbio</displayName>
				<displayName count="one">antiguo dinar serbio</displayName>
				<displayName count="other">antiguos dinares serbios</displayName>
			</currency>
			<currency type="CSK">
				<displayName>corona fuerte checoslovaca</displayName>
				<displayName count="one">corona fuerte checoslovaca</displayName>
				<displayName count="other">coronas fuertes checoslovacas</displayName>
			</currency>
			<currency type="CUP">
				<displayName>peso cubano</displayName>
				<displayName count="one">peso cubano</displayName>
				<displayName count="other">pesos cubanos</displayName>
			</currency>
			<currency type="CVE">
				<displayName>escudo de Cabo Verde</displayName>
				<symbol>CVEsc</symbol>
			</currency>
			<currency type="CYP">
				<displayName>libra chipriota</displayName>
				<symbol>£C</symbol>
			</currency>
			<currency type="CZK">
				<displayName>corona checa</displayName>
				<displayName count="one">corona checa</displayName>
				<displayName count="other">coronas checas</displayName>
			</currency>
			<currency type="DDM">
				<displayName>ostmark de Alemania del Este</displayName>
				<displayName count="one">ostmark de Alemania del Este</displayName>
				<displayName count="other">ostmarks de Alemania del Este</displayName>
			</currency>
			<currency type="DEM">
				<displayName>marco alemán</displayName>
				<displayName count="one">marco alemán</displayName>
				<displayName count="other">marcos alemanes</displayName>
			</currency>
			<currency type="DJF">
				<displayName>franco de Yibuti</displayName>
				<symbol>DF</symbol>
			</currency>
			<currency type="DKK">
				<displayName>corona danesa</displayName>
				<displayName count="one">corona danesa</displayName>
				<displayName count="other">coronas danesas</displayName>
				<symbol>DKr</symbol>
			</currency>
			<currency type="DOP">
				<displayName>peso dominicano</displayName>
				<displayName count="one">peso dominicano</displayName>
				<displayName count="other">pesos dominicanos</displayName>
				<symbol>RD$</symbol>
			</currency>
			<currency type="DZD">
				<displayName>dinar argelino</displayName>
				<symbol>DA</symbol>
			</currency>
			<currency type="ECS">
				<displayName>sucre ecuatoriano</displayName>
				<displayName count="one">sucre ecuatoriano</displayName>
				<displayName count="other">sucres ecuatorianos</displayName>
			</currency>
			<currency type="ECV">
				<displayName>unidad de valor constante (UVC) ecuatoriana</displayName>
				<displayName count="one">unidad de valor constante (UVC) ecuatoriana</displayName>
				<displayName count="other">unidades de valor constante (UVC) ecuatorianas</displayName>
			</currency>
			<currency type="EEK">
				<displayName>corona estonia</displayName>
				<displayName count="one">corona estonia</displayName>
				<displayName count="other">coronas estonias</displayName>
			</currency>
			<currency type="EGP">
				<displayName>libra egipcia</displayName>
			</currency>
			<currency type="EQE">
				<displayName>ekuele</displayName>
				<displayName count="one">ekuele</displayName>
				<displayName count="other">ekueles</displayName>
			</currency>
			<currency type="ERN">
				<displayName>nakfa eritreo</displayName>
			</currency>
			<currency type="ESA">
				<displayName>peseta española (cuenta A)</displayName>
				<displayName count="one">peseta española (cuenta A)</displayName>
				<displayName count="other">pesetas españolas (cuenta A)</displayName>
			</currency>
			<currency type="ESB">
				<displayName>peseta española (cuenta convertible)</displayName>
				<displayName count="one">peseta española (cuenta convertible)</displayName>
				<displayName count="other">pesetas españolas (cuenta convertible)</displayName>
			</currency>
			<currency type="ESP">
				<displayName>peseta española</displayName>
				<displayName count="one">peseta española</displayName>
				<displayName count="other">pesetas españolas</displayName>
				<symbol>₧</symbol>
			</currency>
			<currency type="ETB">
				<displayName>birr etíope</displayName>
				<symbol>Br</symbol>
			</currency>
			<currency type="EUR">
				<displayName>euro</displayName>
				<displayName count="one">euro</displayName>
				<displayName count="other">euros</displayName>
			</currency>
			<currency type="FIM">
				<displayName>marco finlandés</displayName>
				<displayName count="one">marco finlandés</displayName>
				<displayName count="other">marcos finlandeses</displayName>
			</currency>
			<currency type="FJD">
				<displayName>dólar de las Islas Fiyi</displayName>
				<symbol>F$</symbol>
			</currency>
			<currency type="FKP">
				<displayName>libra de las Islas Malvinas</displayName>
			</currency>
			<currency type="FRF">
				<displayName>franco francés</displayName>
				<displayName count="one">franco francés</displayName>
				<displayName count="other">francos franceses</displayName>
			</currency>
			<currency type="GBP">
				<displayName>libra esterlina británica</displayName>
				<displayName count="one">libra esterlina británica</displayName>
				<displayName count="other">libras esterlinas británicas</displayName>
			</currency>
			<currency type="GEK">
				<displayName>kupon larit georgiano</displayName>
			</currency>
			<currency type="GEL">
				<displayName>lari georgiano</displayName>
				<symbol>lari</symbol>
			</currency>
			<currency type="GHC">
				<displayName>cedi ghanés</displayName>
			</currency>
			<currency type="GIP">
				<displayName>libra de Gibraltar</displayName>
				<displayName count="one">libra de Gibraltar</displayName>
				<displayName count="other">libras de Gibraltar</displayName>
			</currency>
			<currency type="GMD">
				<displayName>dalasi gambiano</displayName>
			</currency>
			<currency type="GNF">
				<displayName>franco guineano</displayName>
				<symbol>GF</symbol>
			</currency>
			<currency type="GNS">
				<displayName>syli guineano</displayName>
			</currency>
			<currency type="GQE">
				<displayName>ekuele de Guinea Ecuatorial</displayName>
				<displayName count="one">ekuele de Guinea Ecuatorial</displayName>
				<displayName count="other">ekueles de Guinea Ecuatorial</displayName>
			</currency>
			<currency type="GRD">
				<displayName>dracma griego</displayName>
				<displayName count="one">dracma griego</displayName>
				<displayName count="other">dracmas griegos</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>quetzal guatemalteco</displayName>
				<displayName count="one">quetzal guatemalteco</displayName>
				<displayName count="other">quetzales guatemaltecos</displayName>
				<symbol>Q</symbol>
			</currency>
			<currency type="GWE">
				<displayName>escudo de Guinea Portuguesa</displayName>
			</currency>
			<currency type="GWP">
				<displayName>peso de Guinea-Bissáu</displayName>
			</currency>
			<currency type="GYD">
				<displayName>dólar guyanés</displayName>
				<symbol>G$</symbol>
			</currency>
			<currency type="HKD">
				<displayName>dólar de Hong Kong</displayName>
				<symbol>HK$</symbol>
			</currency>
			<currency type="HNL">
				<displayName>lempira hondureño</displayName>
				<displayName count="one">lempira hondureño</displayName>
				<displayName count="other">lempiras hondureños</displayName>
				<symbol>L</symbol>
			</currency>
			<currency type="HRD">
				<displayName>dinar croata</displayName>
				<displayName count="one">dinar croata</displayName>
				<displayName count="other">dinares croatas</displayName>
			</currency>
			<currency type="HRK">
				<displayName>kuna croata</displayName>
				<displayName count="one">kuna croata</displayName>
				<displayName count="other">kunas croatas</displayName>
			</currency>
			<currency type="HTG">
				<displayName>gourde haitiano</displayName>
			</currency>
			<currency type="HUF">
				<displayName>florín húngaro</displayName>
				<displayName count="one">florín húngaro</displayName>
				<displayName count="other">florines húngaros</displayName>
				<symbol>Ft</symbol>
			</currency>
			<currency type="IDR">
				<displayName>rupia indonesia</displayName>
				<symbol>Rp</symbol>
			</currency>
			<currency type="IEP">
				<displayName>libra irlandesa</displayName>
				<displayName count="one">libra irlandesa</displayName>
				<displayName count="other">libras irlandesas</displayName>
				<symbol>IR£</symbol>
			</currency>
			<currency type="ILP">
				<displayName>libra israelí</displayName>
			</currency>
			<currency type="ILS">
				<displayName>nuevo sheqel israelí</displayName>
			</currency>
			<currency type="INR">
				<displayName>rupia india</displayName>
			</currency>
			<currency type="IQD">
				<displayName>dinar iraquí</displayName>
				<symbol>ID</symbol>
			</currency>
			<currency type="IRR">
				<displayName>rial iraní</displayName>
				<symbol>RI</symbol>
			</currency>
			<currency type="ISK">
				<displayName>corona islandesa</displayName>
				<displayName count="one">corona islandesa</displayName>
				<displayName count="other">coronas islandesas</displayName>
			</currency>
			<currency type="ITL">
				<displayName>lira italiana</displayName>
				<displayName count="one">lira italiana</displayName>
				<displayName count="other">liras italianas</displayName>
			</currency>
			<currency type="JMD">
				<displayName>dólar de Jamaica</displayName>
				<symbol>J$</symbol>
			</currency>
			<currency type="JOD">
				<displayName>dinar jordano</displayName>
				<symbol>JD</symbol>
			</currency>
			<currency type="JPY">
				<displayName>yen japonés</displayName>
				<displayName count="one">yen japonés</displayName>
				<displayName count="other">yenes japoneses</displayName>
			</currency>
			<currency type="KES">
				<displayName>chelín keniata</displayName>
				<symbol>K Sh</symbol>
			</currency>
			<currency type="KGS">
				<displayName>som kirguís</displayName>
				<symbol>som</symbol>
			</currency>
			<currency type="KHR">
				<displayName>riel camboyano</displayName>
				<symbol>CR</symbol>
			</currency>
			<currency type="KMF">
				<displayName>franco comorense</displayName>
				<symbol>CF</symbol>
			</currency>
			<currency type="KPW">
				<displayName>won norcoreano</displayName>
			</currency>
			<currency type="KRW">
				<displayName>won surcoreano</displayName>
			</currency>
			<currency type="KWD">
				<displayName>dinar kuwaití</displayName>
				<symbol>KD</symbol>
			</currency>
			<currency type="KYD">
				<displayName>dólar de las Islas Caimán</displayName>
			</currency>
			<currency type="KZT">
				<displayName>tenge kazako</displayName>
				<symbol>T</symbol>
			</currency>
			<currency type="LAK">
				<displayName>kip laosiano</displayName>
			</currency>
			<currency type="LBP">
				<displayName>libra libanesa</displayName>
				<symbol>LL</symbol>
			</currency>
			<currency type="LKR">
				<displayName>rupia de Sri Lanka</displayName>
				<symbol>SL Re</symbol>
			</currency>
			<currency type="LRD">
				<displayName>dólar liberiano</displayName>
			</currency>
			<currency type="LSL">
				<displayName>loti lesothense</displayName>
				<symbol>M</symbol>
			</currency>
			<currency type="LSM">
				<displayName>maloti</displayName>
			</currency>
			<currency type="LTL">
				<displayName>litas lituano</displayName>
				<displayName count="one">litas lituano</displayName>
				<displayName count="other">litas lituanos</displayName>
			</currency>
			<currency type="LTT">
				<displayName>talonas lituano</displayName>
				<displayName count="one">talonas lituano</displayName>
				<displayName count="other">talonas lituanos</displayName>
			</currency>
			<currency type="LUC">
				<displayName>franco convertible luxemburgués</displayName>
				<displayName count="one">franco convertible luxemburgués</displayName>
				<displayName count="other">francos convertibles luxemburgueses</displayName>
			</currency>
			<currency type="LUF">
				<displayName>franco luxemburgués</displayName>
				<displayName count="one">franco luxemburgués</displayName>
				<displayName count="other">francos luxemburgueses</displayName>
			</currency>
			<currency type="LUL">
				<displayName>franco financiero luxemburgués</displayName>
				<displayName count="one">franco financiero luxemburgués</displayName>
				<displayName count="other">francos financieros luxemburgueses</displayName>
			</currency>
			<currency type="LVL">
				<displayName>lats letón</displayName>
				<displayName count="one">lats letón</displayName>
				<displayName count="other">lats letones</displayName>
			</currency>
			<currency type="LVR">
				<displayName>rublo letón</displayName>
				<displayName count="one">rublo letón</displayName>
				<displayName count="other">rublos letones</displayName>
			</currency>
			<currency type="LYD">
				<displayName>dinar libio</displayName>
				<symbol>LD</symbol>
			</currency>
			<currency type="MAD">
				<displayName>dirham marroquí</displayName>
				<displayName count="one">dírham marroquí</displayName>
				<displayName count="other">dírhams marroquíes</displayName>
			</currency>
			<currency type="MAF">
				<displayName>franco marroquí</displayName>
				<displayName count="one">franco marroquí</displayName>
				<displayName count="other">francos marroquíes</displayName>
			</currency>
			<currency type="MDL">
				<displayName>leu moldavo</displayName>
			</currency>
			<currency type="MGA">
				<displayName>ariary malgache</displayName>
			</currency>
			<currency type="MGF">
				<displayName>franco malgache</displayName>
			</currency>
			<currency type="MKD">
				<displayName>dinar macedonio</displayName>
				<symbol>MDen</symbol>
			</currency>
			<currency type="MLF">
				<displayName>franco malí</displayName>
			</currency>
			<currency type="MMK">
				<displayName>kyat de Myanmar</displayName>
			</currency>
			<currency type="MNT">
				<displayName>tugrik mongol</displayName>
				<symbol>Tug</symbol>
			</currency>
			<currency type="MOP">
				<displayName>pataca de Macao</displayName>
			</currency>
			<currency type="MRO">
				<displayName>ouguiya mauritano</displayName>
				<symbol>UM</symbol>
			</currency>
			<currency type="MTL">
				<displayName>lira maltesa</displayName>
				<symbol>Lm</symbol>
			</currency>
			<currency type="MTP">
				<displayName>libra maltesa</displayName>
			</currency>
			<currency type="MUR">
				<displayName>rupia mauriciana</displayName>
			</currency>
			<currency type="MVR">
				<displayName>rufiyaa de Maldivas</displayName>
			</currency>
			<currency type="MWK">
				<displayName>kwacha de Malawi</displayName>
				<symbol>MK</symbol>
			</currency>
			<currency type="MXN">
				<displayName>peso mexicano</displayName>
				<displayName count="one">peso mexicano</displayName>
				<displayName count="other">pesos mexicanos</displayName>
				<symbol>MEX$</symbol>
			</currency>
			<currency type="MXP">
				<displayName>peso de plata mexicano (1861-1992)</displayName>
				<displayName count="one">peso de plata mexicano (MXP)</displayName>
				<displayName count="other">pesos de plata mexicanos (MXP)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>unidad de inversión (UDI) mexicana</displayName>
				<displayName count="one">unidad de inversión (UDI) mexicana</displayName>
				<displayName count="other">unidades de inversión (UDI) mexicanas</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ringgit malasio</displayName>
				<symbol>RM</symbol>
			</currency>
			<currency type="MZE">
				<displayName>escudo mozambiqueño</displayName>
			</currency>
			<currency type="MZM">
				<displayName>antiguo metical mozambiqueño</displayName>
				<symbol>Mt</symbol>
			</currency>
			<currency type="MZN">
				<displayName>metical mozambiqueño</displayName>
			</currency>
			<currency type="NAD">
				<displayName>dólar de Namibia</displayName>
				<symbol>N$</symbol>
			</currency>
			<currency type="NGN">
				<displayName>naira nigeriano</displayName>
			</currency>
			<currency type="NIC">
				<displayName>córdoba nicaragüense</displayName>
				<displayName count="one">córdoba nicaragüense</displayName>
				<displayName count="other">córdobas nicaragüenses</displayName>
			</currency>
			<currency type="NIO">
				<displayName>córdoba oro nicaragüense</displayName>
				<displayName count="one">córdoba oro nicaragüense</displayName>
				<displayName count="other">córdobas oro nicaragüenses</displayName>
				<symbol>C$</symbol>
			</currency>
			<currency type="NLG">
				<displayName>florín neerlandés</displayName>
				<displayName count="one">florín neerlandés</displayName>
				<displayName count="other">florines neerlandeses</displayName>
			</currency>
			<currency type="NOK">
				<displayName>corona noruega</displayName>
				<displayName count="one">corona noruega</displayName>
				<displayName count="other">coronas noruegas</displayName>
				<symbol>NKr</symbol>
			</currency>
			<currency type="NPR">
				<displayName>rupia nepalesa</displayName>
				<symbol>Nrs</symbol>
			</currency>
			<currency type="NZD">
				<displayName>dólar neozelandés</displayName>
				<symbol>$NZ</symbol>
			</currency>
			<currency type="OMR">
				<displayName>rial omaní</displayName>
				<symbol>RO</symbol>
			</currency>
			<currency type="PAB">
				<displayName>balboa panameño</displayName>
				<displayName count="one">balboa panameño</displayName>
				<displayName count="other">balboas panameños</displayName>
			</currency>
			<currency type="PEI">
				<displayName>inti peruano</displayName>
				<displayName count="one">inti peruano</displayName>
				<displayName count="other">intis peruanos</displayName>
			</currency>
			<currency type="PEN">
				<displayName>nuevo sol peruano</displayName>
				<displayName count="one">nuevo sol peruano</displayName>
				<displayName count="other">nuevos soles peruanos</displayName>
			</currency>
			<currency type="PES">
				<displayName>sol peruano</displayName>
				<displayName count="one">sol peruano</displayName>
				<displayName count="other">soles peruanos</displayName>
			</currency>
			<currency type="PGK">
				<displayName>kina de Papúa Nueva Guinea</displayName>
			</currency>
			<currency type="PHP">
				<displayName>peso filipino</displayName>
				<displayName count="one">peso filipino</displayName>
				<displayName count="other">pesos filipinos</displayName>
			</currency>
			<currency type="PKR">
				<displayName>rupia pakistaní</displayName>
				<symbol>Pra</symbol>
			</currency>
			<currency type="PLN">
				<displayName>zloty polaco</displayName>
				<displayName count="one">zloty polaco</displayName>
				<displayName count="other">zlotys polacos</displayName>
				<symbol>Zl</symbol>
			</currency>
			<currency type="PLZ">
				<displayName>zloty polaco (1950-1995)</displayName>
				<displayName count="one">zloty polaco (PLZ)</displayName>
				<displayName count="other">zlotys polacos (PLZ)</displayName>
			</currency>
			<currency type="PTE">
				<displayName>escudo portugués</displayName>
				<displayName count="one">escudo portugués</displayName>
				<displayName count="other">escudos portugueses</displayName>
			</currency>
			<currency type="PYG">
				<displayName>guaraní paraguayo</displayName>
				<displayName count="one">guaraní paraguayo</displayName>
				<displayName count="other">guaraníes paraguayos</displayName>
				<symbol>₲</symbol>
			</currency>
			<currency type="QAR">
				<displayName>riyal de Qatar</displayName>
				<symbol>QR</symbol>
			</currency>
			<currency type="RHD">
				<displayName>dólar rodesiano</displayName>
			</currency>
			<currency type="ROL">
				<displayName>antiguo leu rumano</displayName>
				<displayName count="one">antiguo leu rumano</displayName>
				<displayName count="other">antiguos lei rumanos</displayName>
				<symbol>leu</symbol>
			</currency>
			<currency type="RON">
				<displayName>leu rumano</displayName>
				<displayName count="one">leu rumano</displayName>
				<displayName count="other">lei rumanos</displayName>
			</currency>
			<currency type="RSD">
				<displayName>dinar serbio</displayName>
				<displayName count="one">dinar serbio</displayName>
				<displayName count="other">dinares serbios</displayName>
			</currency>
			<currency type="RUB">
				<displayName>rublo ruso</displayName>
				<displayName count="one">rublo ruso</displayName>
				<displayName count="other">rublos rusos</displayName>
			</currency>
			<currency type="RUR">
				<displayName>rublo ruso (1991-1998)</displayName>
				<displayName count="one">rublo ruso (RUR)</displayName>
				<displayName count="other">rublos rusos (RUR)</displayName>
			</currency>
			<currency type="RWF">
				<displayName>franco ruandés</displayName>
			</currency>
			<currency type="SAR">
				<displayName>riyal saudí</displayName>
				<symbol>SRl</symbol>
			</currency>
			<currency type="SBD">
				<displayName>dólar de las Islas Salomón</displayName>
				<symbol>SI$</symbol>
			</currency>
			<currency type="SCR">
				<displayName>rupia de Seychelles</displayName>
				<symbol>SR</symbol>
			</currency>
			<currency type="SDD">
				<displayName>dinar sudanés</displayName>
			</currency>
			<currency type="SDP">
				<displayName>libra sudanesa</displayName>
			</currency>
			<currency type="SEK">
				<displayName>corona sueca</displayName>
				<displayName count="one">corona sueca</displayName>
				<displayName count="other">coronas suecas</displayName>
				<symbol>SKr</symbol>
			</currency>
			<currency type="SGD">
				<displayName>dólar singapurense</displayName>
				<symbol>S$</symbol>
			</currency>
			<currency type="SHP">
				<displayName>libra de Santa Elena</displayName>
			</currency>
			<currency type="SIT">
				<displayName>tólar esloveno</displayName>
				<displayName count="one">tólar esloveno</displayName>
				<displayName count="other">tólares eslovenos</displayName>
			</currency>
			<currency type="SKK">
				<displayName>corona eslovaca</displayName>
				<displayName count="one">corona eslovaca</displayName>
				<displayName count="other">coronas eslovacas</displayName>
				<symbol>Sk</symbol>
			</currency>
			<currency type="SLL">
				<displayName>leone de Sierra Leona</displayName>
			</currency>
			<currency type="SOS">
				<displayName>chelín somalí</displayName>
				<symbol>S</symbol>
			</currency>
			<currency type="SRD">
				<displayName>dólar surinamés</displayName>
			</currency>
			<currency type="SRG">
				<displayName>florín surinamés</displayName>
				<symbol>Sf</symbol>
			</currency>
			<currency type="STD">
				<displayName>dobra de Santo Tomé y Príncipe</displayName>
				<symbol>Db</symbol>
			</currency>
			<currency type="SUR">
				<displayName>rublo soviético</displayName>
				<displayName count="one">rublo soviético</displayName>
				<displayName count="other">rublos soviéticos</displayName>
			</currency>
			<currency type="SVC">
				<displayName>colón salvadoreño</displayName>
				<displayName count="one">colón salvadoreño</displayName>
				<displayName count="other">colones salvadoreños</displayName>
			</currency>
			<currency type="SYP">
				<displayName>libra siria</displayName>
				<symbol>LS</symbol>
			</currency>
			<currency type="SZL">
				<displayName>lilangeni suazi</displayName>
				<symbol>E</symbol>
			</currency>
			<currency type="THB">
				<displayName>baht tailandés</displayName>
			</currency>
			<currency type="TJR">
				<displayName>rublo tayiko</displayName>
			</currency>
			<currency type="TJS">
				<displayName>somoni tayiko</displayName>
			</currency>
			<currency type="TMM">
				<displayName>manat turcomano</displayName>
			</currency>
			<currency type="TND">
				<displayName>dinar tunecino</displayName>
			</currency>
			<currency type="TOP">
				<displayName>paʻanga tongano</displayName>
				<symbol>T$</symbol>
			</currency>
			<currency type="TPE">
				<displayName>escudo timorense</displayName>
			</currency>
			<currency type="TRL">
				<displayName>lira turca antigua</displayName>
				<displayName count="one">lira turca antigua</displayName>
				<displayName count="other">liras turcas antiguas</displayName>
				<symbol>TL</symbol>
			</currency>
			<currency type="TRY">
				<displayName>nueva lira turca</displayName>
				<displayName count="one">lira turca</displayName>
				<displayName count="other">liras turcas</displayName>
			</currency>
			<currency type="TTD">
				<displayName>dólar de Trinidad y Tobago</displayName>
				<symbol>TT$</symbol>
			</currency>
			<currency type="TWD">
				<displayName>nuevo dólar taiwanés</displayName>
				<symbol>NT$</symbol>
			</currency>
			<currency type="TZS">
				<displayName>chelín tanzano</displayName>
				<symbol>T Sh</symbol>
			</currency>
			<currency type="UAH">
				<displayName>grivna ucraniana</displayName>
				<displayName count="one">grivna ucraniana</displayName>
				<displayName count="other">grivnas ucranianas</displayName>
			</currency>
			<currency type="UAK">
				<displayName>karbovanet ucraniano</displayName>
				<displayName count="one">karbovanet ucraniano</displayName>
				<displayName count="other">karbovanets ucranianos</displayName>
			</currency>
			<currency type="UGS">
				<displayName>chelín ugandés (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>chelín ugandés</displayName>
				<symbol>U Sh</symbol>
			</currency>
			<currency type="USD">
				<displayName>dólar estadounidense</displayName>
				<displayName count="one">dólar estadounidense</displayName>
				<displayName count="other">dólares estadounidenses</displayName>
			</currency>
			<currency type="USN">
				<displayName>dólar estadounidense (día siguiente)</displayName>
				<displayName count="one">dólar estadounidense (día siguiente)</displayName>
				<displayName count="other">dólares estadounidenses (día siguiente)</displayName>
			</currency>
			<currency type="USS">
				<displayName>dólar estadounidense (mismo día)</displayName>
				<displayName count="one">dólar estadounidense (mismo día)</displayName>
				<displayName count="other">dólares estadounidenses (mismo día)</displayName>
			</currency>
			<currency type="UYI">
				<displayName>peso uruguayo en unidades indexadas</displayName>
				<displayName count="one">peso uruguayo en unidades indexadas</displayName>
				<displayName count="other">pesos uruguayos en unidades indexadas</displayName>
			</currency>
			<currency type="UYP">
				<displayName>peso uruguayo (1975-1993)</displayName>
				<displayName count="one">peso uruguayo (UYP)</displayName>
				<displayName count="other">pesos uruguayos (UYP)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>peso uruguayo</displayName>
				<displayName count="one">peso uruguayo</displayName>
				<displayName count="other">pesos uruguayos</displayName>
				<symbol>Ur$</symbol>
			</currency>
			<currency type="UZS">
				<displayName>sum uzbeko</displayName>
			</currency>
			<currency type="VEB">
				<displayName>bolívar venezolano</displayName>
				<displayName count="one">bolívar venezolano</displayName>
				<displayName count="other">bolívares venezolanos</displayName>
				<symbol>Be</symbol>
			</currency>
			<currency type="VEF">
				<displayName>bolívar fuerte venezolano</displayName>
				<displayName count="one">bolívar fuerte venezolano</displayName>
				<displayName count="other">bolívares fuertes venezolanos</displayName>
				<symbol>BsF</symbol>
			</currency>
			<currency type="VND">
				<displayName>dong vietnamita</displayName>
			</currency>
			<currency type="VUV">
				<displayName>vatu vanuatuense</displayName>
				<symbol>VT</symbol>
			</currency>
			<currency type="WST">
				<displayName>tala samoano</displayName>
			</currency>
			<currency type="XAF">
				<displayName>franco CFA BEAC</displayName>
			</currency>
			<currency type="XAG">
				<displayName>plata</displayName>
				<displayName count="one">plata</displayName>
			</currency>
			<currency type="XAU">
				<displayName>oro</displayName>
				<displayName count="one">oro</displayName>
			</currency>
			<currency type="XBA">
				<displayName>unidad compuesta europea</displayName>
				<displayName count="one">unidad compuesta europea</displayName>
				<displayName count="other">unidades compuestas europeas</displayName>
			</currency>
			<currency type="XBB">
				<displayName>unidad monetaria europea</displayName>
				<displayName count="one">unidad monetaria europea</displayName>
				<displayName count="other">unidades monetarias europeas</displayName>
			</currency>
			<currency type="XBC">
				<displayName>unidad de cuenta europea (XBC)</displayName>
				<displayName count="one">unidad de cuenta europea (XBC)</displayName>
				<displayName count="other">unidades de cuenta europeas (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>unidad de cuenta europea (XBD)</displayName>
				<displayName count="one">unidad de cuenta europea (XBD)</displayName>
				<displayName count="other">unidades de cuenta europeas (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>dólar del Caribe Oriental</displayName>
				<symbol>EC$</symbol>
			</currency>
			<currency type="XDR">
				<displayName>derechos especiales de giro</displayName>
			</currency>
			<currency type="XEU">
				<displayName>unidad de moneda europea</displayName>
				<displayName count="one">unidad de moneda europea</displayName>
				<displayName count="other">unidades de moneda europeas</displayName>
			</currency>
			<currency type="XFO">
				<displayName>franco oro francés</displayName>
				<displayName count="one">franco oro francés</displayName>
				<displayName count="other">francos oro franceses</displayName>
			</currency>
			<currency type="XFU">
				<displayName>franco UIC francés</displayName>
				<displayName count="one">franco UIC francés</displayName>
				<displayName count="other">francos UIC franceses</displayName>
			</currency>
			<currency type="XOF">
				<displayName>franco CFA BCEAO</displayName>
			</currency>
			<currency type="XPD">
				<displayName>paladio</displayName>
				<displayName count="one">paladio</displayName>
			</currency>
			<currency type="XPF">
				<displayName>franco CFP</displayName>
				<symbol>CFPF</symbol>
			</currency>
			<currency type="XPT">
				<displayName>platino</displayName>
				<displayName count="one">platino</displayName>
			</currency>
			<currency type="XRE">
				<displayName>fondos RINET</displayName>
			</currency>
			<currency type="XTS">
				<displayName>código reservado para pruebas</displayName>
			</currency>
			<currency type="XXX">
				<displayName>Sin divisa</displayName>
				<displayName count="one">moneda desconocida/no válida</displayName>
				<displayName count="other">monedas desconocidas/no válidas</displayName>
			</currency>
			<currency type="YDD">
				<displayName>dinar yemení</displayName>
			</currency>
			<currency type="YER">
				<displayName>rial yemení</displayName>
				<symbol>YRl</symbol>
			</currency>
			<currency type="YUD">
				<displayName>dinar fuerte yugoslavo</displayName>
			</currency>
			<currency type="YUM">
				<displayName>super dinar yugoslavo</displayName>
			</currency>
			<currency type="YUN">
				<displayName>dinar convertible yugoslavo</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>rand sudafricano (financiero)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>rand sudafricano</displayName>
				<symbol>R</symbol>
			</currency>
			<currency type="ZMK">
				<displayName>kwacha zambiano</displayName>
			</currency>
			<currency type="ZRN">
				<displayName>nuevo zaire zaireño</displayName>
			</currency>
			<currency type="ZRZ">
				<displayName>zaire zaireño</displayName>
			</currency>
			<currency type="ZWD">
				<displayName>dólar de Zimbabue</displayName>
				<symbol>Z$</symbol>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} día</unitPattern>
			<unitPattern count="other">{0} días</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} hora</unitPattern>
			<unitPattern count="other">{0} horas</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minuto</unitPattern>
			<unitPattern count="other">{0} minutos</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mes</unitPattern>
			<unitPattern count="other">{0} meses</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} segundo</unitPattern>
			<unitPattern count="other">{0} segundos</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} semana</unitPattern>
			<unitPattern count="other">{0} semanas</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} año</unitPattern>
			<unitPattern count="other">{0} años</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>sí:si:s</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ƥ4���Locale/Data/fur.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.29 $"/>
		<generation date="$Date: 2008/06/17 14:12:15 $"/>
		<language type="fur"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="aa">afar</language>
			<language type="ae">avestan</language>
			<language type="af">afrikaans</language>
			<language type="am">amaric</language>
			<language type="an">aragonês</language>
			<language type="ang">vieri inglês</language>
			<language type="apa">lenghe Apache</language>
			<language type="ar">arap</language>
			<language type="arc">aramaic</language>
			<language type="as">assamês</language>
			<language type="ast">asturian</language>
			<language type="aus">lenghis australianis</language>
			<language type="av">avar</language>
			<language type="ay">aymarà</language>
			<language type="az">azerbaijani</language>
			<language type="be">bielorùs</language>
			<language type="bg">bulgar</language>
			<language type="bn">bengalês</language>
			<language type="bo">tibetan</language>
			<language type="br">breton</language>
			<language type="bs">bosniac</language>
			<language type="ca">catalan</language>
			<language type="ce">cecen</language>
			<language type="cel">lenghe celtiche</language>
			<language type="ch">chamorro</language>
			<language type="co">cors</language>
			<language type="cop">coptic</language>
			<language type="cr">cree</language>
			<language type="cs">cec</language>
			<language type="cu">sclâf de glesie</language>
			<language type="cy">galês</language>
			<language type="da">danês</language>
			<language type="de">todesc</language>
			<language type="den">sclâf</language>
			<language type="egy">vieri egjizian</language>
			<language type="el">grêc</language>
			<language type="en">inglês</language>
			<language type="eo">esperanto</language>
			<language type="es">spagnûl</language>
			<language type="et">eston</language>
			<language type="eu">basc</language>
			<language type="fa">persian</language>
			<language type="ff">fulah</language>
			<language type="fi">finlandês</language>
			<language type="fj">fizian</language>
			<language type="fo">faroês</language>
			<language type="fr">francês</language>
			<language type="fro">vieri francês</language>
			<language type="fur">furlan</language>
			<language type="fy">frisian</language>
			<language type="ga">gaelic irlandês</language>
			<language type="gd">gaelic scozês</language>
			<language type="gem">lenghe gjermaniche</language>
			<language type="gl">galizian</language>
			<language type="got">gotic</language>
			<language type="grc">vieri grêc</language>
			<language type="gv">manx</language>
			<language type="he">ebraic</language>
			<language type="hi">hindi</language>
			<language type="hr">cravuat</language>
			<language type="ht">haitian</language>
			<language type="hu">ongjarês</language>
			<language type="hy">armen</language>
			<language type="id">indonesian</language>
			<language type="ik">inupiaq</language>
			<language type="io">ido</language>
			<language type="is">islandês</language>
			<language type="it">talian</language>
			<language type="iu">inuktitut</language>
			<language type="ja">gjaponês</language>
			<language type="ka">gjeorgjian</language>
			<language type="kk">kazac</language>
			<language type="kl">kalaallisut</language>
			<language type="km">khmer</language>
			<language type="kn">kannada</language>
			<language type="ko">corean</language>
			<language type="ku">curd</language>
			<language type="kw">cornualiês</language>
			<language type="la">latin</language>
			<language type="lad">ladin</language>
			<language type="lb">lussemburghês</language>
			<language type="li">limburghês</language>
			<language type="ln">lingala</language>
			<language type="lt">lituan</language>
			<language type="lv">leton</language>
			<language type="map">austronesian</language>
			<language type="mi">maori</language>
			<language type="mis">lenghis variis</language>
			<language type="mk">macedon</language>
			<language type="ml">malayalam</language>
			<language type="mn">mongul</language>
			<language type="mo">moldâf</language>
			<language type="mr">marathi</language>
			<language type="ms">malês</language>
			<language type="mt">maltês</language>
			<language type="mul">lenghis multiplis</language>
			<language type="mwl">mirandês</language>
			<language type="myn">lenghis Maya</language>
			<language type="nap">napoletan</language>
			<language type="nb">norvegjês bokmål</language>
			<language type="nds">bas todesc</language>
			<language type="ne">nepalês</language>
			<language type="nl">olandês</language>
			<language type="nn">norvegjês nynorsk</language>
			<language type="no">norvegjês</language>
			<language type="non">vieri norvegjês</language>
			<language type="nv">navajo</language>
			<language type="oc">ocitan</language>
			<language type="os">osetic</language>
			<language type="ota">turc otoman</language>
			<language type="pa">punjabi</language>
			<language type="pap">papiamento</language>
			<language type="peo">vieri persian</language>
			<language type="pl">polac</language>
			<language type="pro">vieri provenzâl</language>
			<language type="ps">pashto</language>
			<language type="pt">portughês</language>
			<language type="pt_BR">portughês brasilian</language>
			<language type="qu">quechua</language>
			<language type="rm">rumanç</language>
			<language type="ro">romen</language>
			<language type="roa">lenghe romanze</language>
			<language type="ru">rus</language>
			<language type="sa">sanscrit</language>
			<language type="sc">sardegnûl</language>
			<language type="scn">sicilian</language>
			<language type="sco">scozês</language>
			<language type="sd">sindhi</language>
			<language type="se">sami setentrionâl</language>
			<language type="sga">vieri irlandês</language>
			<language type="si">sinalês</language>
			<language type="sk">slovac</language>
			<language type="sl">sloven</language>
			<language type="sla">lenghe sclave</language>
			<language type="sm">samoan</language>
			<language type="so">somal</language>
			<language type="sq">albanês</language>
			<language type="sr">serp</language>
			<language type="sux">sumeric</language>
			<language type="sv">svedês</language>
			<language type="sw">swahili</language>
			<language type="ta">tamil</language>
			<language type="te">telegu</language>
			<language type="tet">tetum</language>
			<language type="tg">tagic</language>
			<language type="th">thai</language>
			<language type="tl">tagalog</language>
			<language type="tr">turc</language>
			<language type="tt">tartar</language>
			<language type="ty">tahitian</language>
			<language type="uk">ucrain</language>
			<language type="und">indeterminade</language>
			<language type="ur">urdu</language>
			<language type="uz">uzbec</language>
			<language type="vi">vietnamite</language>
			<language type="wa">valon</language>
			<language type="yi">yiddish</language>
			<language type="zh">cinês</language>
			<language type="zh_Hans">cinês semplificât</language>
			<language type="zh_Hant">cinês tradizionâl</language>
			<language type="zu">zulu</language>
		</languages>
		<scripts>
			<script type="Arab">arap</script>
			<script type="Armn">armen</script>
			<script type="Bali">balinês</script>
			<script type="Beng">bengalês</script>
			<script type="Brai">Braille</script>
			<script type="Bugi">buginês</script>
			<script type="Cans">Silabari unificât aborigjens canadês</script>
			<script type="Copt">copt</script>
			<script type="Cprt">cipriot</script>
			<script type="Cyrl">cirilic</script>
			<script type="Cyrs">cirilic dal vieri slavonic de glesie</script>
			<script type="Deva">devanagari</script>
			<script type="Egyd">demotic egjizian</script>
			<script type="Egyh">jeratic egjizian</script>
			<script type="Egyp">jeroglifics egjizians</script>
			<script type="Ethi">etiopic</script>
			<script type="Geor">georgjian</script>
			<script type="Glag">glagolitic</script>
			<script type="Goth">gotic</script>
			<script type="Grek">grêc</script>
			<script type="Hani">han</script>
			<script type="Hans">Han semplificât</script>
			<script type="Hant">Han tradizionâl</script>
			<script type="Hebr">ebreu</script>
			<script type="Hrkt">katakana o hiragana</script>
			<script type="Hung">vieri ongjarês</script>
			<script type="Ital">vieri italic</script>
			<script type="Java">gjavanês</script>
			<script type="Khmr">khmer</script>
			<script type="Knda">kannada</script>
			<script type="Laoo">lao</script>
			<script type="Latf">latin Fraktur</script>
			<script type="Latg">latin gaelic</script>
			<script type="Latn">latin</script>
			<script type="Lina">lineâr A</script>
			<script type="Linb">lineâr B</script>
			<script type="Maya">jeroglifics Maya</script>
			<script type="Mlym">malayalam</script>
			<script type="Mong">mongul</script>
			<script type="Runr">runic</script>
			<script type="Syrc">siriac</script>
			<script type="Syre">siriac Estrangelo</script>
			<script type="Syrj">siriac ocidentâl</script>
			<script type="Syrn">siriac orientâl</script>
			<script type="Taml">tamil</script>
			<script type="Telu">telegu</script>
			<script type="Tglg">tagalog</script>
			<script type="Thai">thai</script>
			<script type="Tibt">tibetan</script>
			<script type="Ugar">ugaritic</script>
			<script type="Xpeo">vieri persian</script>
			<script type="Xsux">cuneiform sumeric-acadic</script>
			<script type="Zxxx">codiç pes lenghis no scritis</script>
			<script type="Zyyy">comun</script>
			<script type="Zzzz">codiç par scrituris no codificadis</script>
		</scripts>
		<territories>
			<territory type="001">Mont</territory>
			<territory type="002">Afriche</territory>
			<territory type="003">Americhe dal Nord</territory>
			<territory type="005">Americhe meridionâl</territory>
			<territory type="009">Oceanie</territory>
			<territory type="011">Afriche ocidentâl</territory>
			<territory type="013">Americhe centrâl</territory>
			<territory type="014">Afriche orientâl</territory>
			<territory type="015">Afriche setentrionâl</territory>
			<territory type="017">Afriche di mieç</territory>
			<territory type="018">Afriche meridionâl</territory>
			<territory type="019">Americhis</territory>
			<territory type="021">Americhe setentrionâl</territory>
			<territory type="029">caraibic</territory>
			<territory type="030">Asie orientâl</territory>
			<territory type="034">Asie meridionâl</territory>
			<territory type="035">Asie sud orientâl</territory>
			<territory type="039">Europe meridionâl</territory>
			<territory type="053">Australie e Gnove Zelande</territory>
			<territory type="054">Melanesie</territory>
			<territory type="057">Regjon de Micronesie</territory>
			<territory type="061">Polinesie</territory>
			<territory type="142">Asie</territory>
			<territory type="143">Asie centrâl</territory>
			<territory type="145">Asie ocidentâl</territory>
			<territory type="150">Europe</territory>
			<territory type="151">Europe orientâl</territory>
			<territory type="154">Europe setentrionâl</territory>
			<territory type="155">Europe ocidentâl</territory>
			<territory type="172">Commonwealth dai stâts indipendents</territory>
			<territory type="419">Americhe latine e caraibiche</territory>
			<territory type="AD">Andorra</territory>
			<territory type="AE">Emirâts araps unîts</territory>
			<territory type="AF">Afghanistan</territory>
			<territory type="AG">Antigua e Barbuda</territory>
			<territory type="AI">Anguilla</territory>
			<territory type="AL">Albanie</territory>
			<territory type="AM">Armenie</territory>
			<territory type="AN">Antilis olandesis</territory>
			<territory type="AO">Angola</territory>
			<territory type="AQ">Antartic</territory>
			<territory type="AR">Argjentine</territory>
			<territory type="AS">Samoa merecanis</territory>
			<territory type="AT">Austrie</territory>
			<territory type="AU">Australie</territory>
			<territory type="AW">Aruba</territory>
			<territory type="AX">Isulis Aland</territory>
			<territory type="AZ">Azerbaigian</territory>
			<territory type="BA">Bosnie e Ercegovine</territory>
			<territory type="BB">Barbados</territory>
			<territory type="BD">Bangladesh</territory>
			<territory type="BE">Belgjiche</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgarie</territory>
			<territory type="BH">Bahrain</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BJ">Benin</territory>
			<territory type="BL">Sant Barthélemy</territory>
			<territory type="BM">Bermuda</territory>
			<territory type="BN">Brunei</territory>
			<territory type="BO">Bolivie</territory>
			<territory type="BR">Brasîl</territory>
			<territory type="BS">Bahamas</territory>
			<territory type="BT">Bhutan</territory>
			<territory type="BV">Isule Bouvet</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorussie</territory>
			<territory type="BZ">Belize</territory>
			<territory type="CA">Canade</territory>
			<territory type="CC">Isulis Cocos</territory>
			<territory type="CD">Republiche Democratiche dal Congo</territory>
			<territory type="CF">Republiche centri africane</territory>
			<territory type="CG">Congo</territory>
			<territory type="CH">Svuizare</territory>
			<territory type="CI">Cueste di Avoli</territory>
			<territory type="CK">Isulis Cook</territory>
			<territory type="CL">Cile</territory>
			<territory type="CM">Camerun</territory>
			<territory type="CN">Cine</territory>
			<territory type="CO">Colombie</territory>
			<territory type="CR">Costa Rica</territory>
			<territory type="CS">Serbia e Montenegro</territory>
			<territory type="CU">Cuba</territory>
			<territory type="CV">Cjâf vert</territory>
			<territory type="CX">Isule Christmas</territory>
			<territory type="CY">Cipri</territory>
			<territory type="CZ">Republiche ceche</territory>
			<territory type="DE">Gjermanie</territory>
			<territory type="DJ">Gibuti</territory>
			<territory type="DK">Danimarcje</territory>
			<territory type="DM">Dominiche</territory>
			<territory type="DO">Republiche dominicane</territory>
			<territory type="DZ">Alzerie</territory>
			<territory type="EC">Ecuador</territory>
			<territory type="EE">Estonie</territory>
			<territory type="EG">Egjit</territory>
			<territory type="EH">Sahara ocidentâl</territory>
			<territory type="ER">Eritree</territory>
			<territory type="ES">Spagne</territory>
			<territory type="ET">Etiopie</territory>
			<territory type="FI">Finlandie</territory>
			<territory type="FJ">Fizi</territory>
			<territory type="FK">Isulis Falkland</territory>
			<territory type="FM">Micronesie</territory>
			<territory type="FO">Isulis Faroe</territory>
			<territory type="FR">France</territory>
			<territory type="GA">Gabon</territory>
			<territory type="GB">Ream unît</territory>
			<territory type="GD">Grenada</territory>
			<territory type="GE">Gjeorgjie</territory>
			<territory type="GF">Guiana francês</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gjibraltar</territory>
			<territory type="GL">Groenlande</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Guinee</territory>
			<territory type="GP">Guadalupe</territory>
			<territory type="GQ">Guinee ecuatoriâl</territory>
			<territory type="GR">Grecie</territory>
			<territory type="GS">Georgia dal Sud e Isulis Sandwich dal Sud</territory>
			<territory type="GT">Guatemala</territory>
			<territory type="GU">Guam</territory>
			<territory type="GW">Guinea-Bissau</territory>
			<territory type="GY">Guyana</territory>
			<territory type="HK">Regjon aministrative speciâl de Cine di Hong Kong</territory>
			<territory type="HM">Isule Heard e Isulis McDonald</territory>
			<territory type="HN">Honduras</territory>
			<territory type="HR">Cravuazie</territory>
			<territory type="HT">Haiti</territory>
			<territory type="HU">Ongjarie</territory>
			<territory type="ID">Indonesie</territory>
			<territory type="IE">Irlande</territory>
			<territory type="IL">Israêl</territory>
			<territory type="IM">Isule di Man</territory>
			<territory type="IN">India</territory>
			<territory type="IO">Teritori britanic dal Ocean Indian</territory>
			<territory type="IQ">Iraq</territory>
			<territory type="IR">Iran</territory>
			<territory type="IS">Islande</territory>
			<territory type="IT">Italie</territory>
			<territory type="JM">Gjamaiche</territory>
			<territory type="JO">Jordanie</territory>
			<territory type="JP">Gjapon</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizstan</territory>
			<territory type="KH">Camboze</territory>
			<territory type="KI">Kiribati</territory>
			<territory type="KM">Comoris</territory>
			<territory type="KN">San Kitts e Nevis</territory>
			<territory type="KP">Coree dal nord</territory>
			<territory type="KR">Coree dal sud</territory>
			<territory type="KW">Kuwait</territory>
			<territory type="KY">Isulis Cayman</territory>
			<territory type="KZ">Kazachistan</territory>
			<territory type="LA">Laos</territory>
			<territory type="LB">Liban</territory>
			<territory type="LC">Sante Lusie</territory>
			<territory type="LI">Liechtenstein</territory>
			<territory type="LK">Sri Lanka</territory>
			<territory type="LR">Liberie</territory>
			<territory type="LS">Lesotho</territory>
			<territory type="LT">Lituanie</territory>
			<territory type="LU">Lussemburc</territory>
			<territory type="LV">Letonie</territory>
			<territory type="LY">Libie</territory>
			<territory type="MA">Maroc</territory>
			<territory type="MC">Monaco</territory>
			<territory type="MD">Moldavie</territory>
			<territory type="MF">Sant Martin</territory>
			<territory type="MG">Madagascar</territory>
			<territory type="MH">Isulis Marshall</territory>
			<territory type="MK">Macedonie</territory>
			<territory type="ML">Mali</territory>
			<territory type="MM">Birmanie</territory>
			<territory type="MN">Mongolie</territory>
			<territory type="MO">Regjon aministrative speciâl de Cine di Macao</territory>
			<territory type="MP">Isulis Mariana dal Nord</territory>
			<territory type="MQ">Martiniche</territory>
			<territory type="MR">Mauritanie</territory>
			<territory type="MS">Montserrat</territory>
			<territory type="MT">Malta</territory>
			<territory type="MU">Maurizi</territory>
			<territory type="MV">Maldivis</territory>
			<territory type="MW">Malawi</territory>
			<territory type="MX">Messic</territory>
			<territory type="MY">Malaysia</territory>
			<territory type="MZ">Mozambic</territory>
			<territory type="NA">Namibie</territory>
			<territory type="NC">Gnove Caledonie</territory>
			<territory type="NE">Niger</territory>
			<territory type="NF">Isole Norfolk</territory>
			<territory type="NG">Nigerie</territory>
			<territory type="NI">Nicaragua</territory>
			<territory type="NL">Paîs bas</territory>
			<territory type="NO">Norvegje</territory>
			<territory type="NP">Nepal</territory>
			<territory type="NR">Nauru</territory>
			<territory type="NU">Niue</territory>
			<territory type="NZ">Gnove Zelande</territory>
			<territory type="OM">Oman</territory>
			<territory type="PA">Panamà</territory>
			<territory type="PE">Perù</territory>
			<territory type="PF">Polinesie francês</territory>
			<territory type="PG">Papue Gnove Guinee</territory>
			<territory type="PH">Filipinis</territory>
			<territory type="PK">Pakistan</territory>
			<territory type="PL">Polonie</territory>
			<territory type="PM">San Pierre e Miquelon</territory>
			<territory type="PN">Pitcairn</territory>
			<territory type="PR">Porto Rico</territory>
			<territory type="PS">Teritori palestinês</territory>
			<territory type="PT">Portugal</territory>
			<territory type="PW">Palau</territory>
			<territory type="PY">Paraguay</territory>
			<territory type="QA">Qatar</territory>
			<territory type="QO">Oceanie periferiche</territory>
			<territory type="QU">Union europeane</territory>
			<territory type="RE">Reunion</territory>
			<territory type="RO">Romanie</territory>
			<territory type="RS">Serbie</territory>
			<territory type="RU">Russie</territory>
			<territory type="RW">Ruande</territory>
			<territory type="SA">Arabie Saudide</territory>
			<territory type="SB">Isulis Salomon</territory>
			<territory type="SC">Seychelles</territory>
			<territory type="SE">Svezie</territory>
			<territory type="SG">Singapore</territory>
			<territory type="SH">Sante Eline</territory>
			<territory type="SI">Slovenie</territory>
			<territory type="SJ">Svalbard e Jan Mayen</territory>
			<territory type="SK">Slovachie</territory>
			<territory type="SL">Sierra Leone</territory>
			<territory type="SM">San Marin</territory>
			<territory type="SN">Senegal</territory>
			<territory type="SO">Somalie</territory>
			<territory type="SR">Suriname</territory>
			<territory type="ST">Sao Tomè e Principe</territory>
			<territory type="SV">El Salvador</territory>
			<territory type="SY">Sirie</territory>
			<territory type="SZ">Swaziland</territory>
			<territory type="TC">Isulis Turks e Caicos</territory>
			<territory type="TD">Çad</territory>
			<territory type="TF">Teritoris meridionâi francês</territory>
			<territory type="TG">Togo</territory>
			<territory type="TH">Tailandie</territory>
			<territory type="TJ">Tazikistan</territory>
			<territory type="TK">Tokelau</territory>
			<territory type="TL">Timor orientâl</territory>
			<territory type="TM">Turkmenistan</territory>
			<territory type="TN">Tunisie</territory>
			<territory type="TO">Tonga</territory>
			<territory type="TR">Turchie</territory>
			<territory type="TT">Trinidad e Tobago</territory>
			<territory type="TV">Tuvalu</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="TZ">Tanzanie</territory>
			<territory type="UA">Ucraine</territory>
			<territory type="UG">Uganda</territory>
			<territory type="UM">Isulis periferichis minôrs dai Stâts Unîts</territory>
			<territory type="US">Stâts Unîts</territory>
			<territory type="UY">Uruguay</territory>
			<territory type="UZ">Uzbechistan</territory>
			<territory type="VA">Vatican</territory>
			<territory type="VC">San Vincent e lis Grenadinis</territory>
			<territory type="VE">Venezuela</territory>
			<territory type="VG">Isulis vergjinis britanichis</territory>
			<territory type="VI">Isulis vergjinis americanis</territory>
			<territory type="VN">Vietnam</territory>
			<territory type="VU">Vanuatu</territory>
			<territory type="WF">Wallis e Futuna</territory>
			<territory type="WS">Samoa</territory>
			<territory type="YE">Yemen</territory>
			<territory type="YT">Mayotte</territory>
			<territory type="ZA">Sud Afriche</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Regjon no cognossude o no valide</territory>
		</territories>
		<variants>
			<variant type="1901">Ortografie todescje tradizionâl</variant>
			<variant type="1994">Ortografie resiane standard</variant>
			<variant type="1996">Ortografie todescje dal 1996</variant>
			<variant type="NEDIS">Dialet des valadis dal Nadison</variant>
			<variant type="POLYTON">Politoniche</variant>
			<variant type="REVISED">Ortografie revisade</variant>
			<variant type="ROZAJ">Resian</variant>
		</variants>
		<keys>
			<key type="calendar">calendari</key>
			<key type="collation">ordenament</key>
			<key type="currency">monede</key>
		</keys>
		<types>
			<type type="big5han" key="collation">ordin cinês tradizionâl - Big5</type>
			<type type="buddhist" key="calendar">calendari budist</type>
			<type type="chinese" key="calendar">calendari cinês</type>
			<type type="direct" key="collation">ordin diret</type>
			<type type="gb2312han" key="collation">ordin cinês semplificât - GB2312</type>
			<type type="gregorian" key="calendar">calendari gregorian</type>
			<type type="hebrew" key="calendar">calendari ebreu</type>
			<type type="indian" key="calendar">calendari nazionâl indian</type>
			<type type="islamic" key="calendar">calendari islamic</type>
			<type type="islamic-civil" key="calendar">calendari islamic civîl</type>
			<type type="japanese" key="calendar">calendari gjaponês</type>
			<type type="phonebook" key="collation">ordin elenc telefonic</type>
			<type type="pinyin" key="collation">ordin pinyin</type>
			<type type="roc" key="calendar">calendari de Republiche di Cine</type>
			<type type="stroke" key="collation">ordin segns</type>
			<type type="traditional" key="collation">ordin tradizionâl</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">anglosasson</measurementSystemName>
			<measurementSystemName type="metric">metric</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">Lenghe: {0}</codePattern>
			<codePattern type="script">Scriture: {0}</codePattern>
			<codePattern type="territory">Regjon: {0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a à â b c ç d e è ê f-i ì î j-o ò ô p-u ù û v-z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[å č é ë ğ ï ñ ó š ü]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[a-z]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>‘</quotationStart>
		<quotationEnd>’</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Zen</month>
							<month type="2">Fev</month>
							<month type="3">Mar</month>
							<month type="4">Avr</month>
							<month type="5">Mai</month>
							<month type="6">Jug</month>
							<month type="7">Lui</month>
							<month type="8">Avo</month>
							<month type="9">Set</month>
							<month type="10">Otu</month>
							<month type="11">Nov</month>
							<month type="12">Dic</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Zenâr</month>
							<month type="2">Fevrâr</month>
							<month type="3">Març</month>
							<month type="4">Avrîl</month>
							<month type="5">Mai</month>
							<month type="6">Jugn</month>
							<month type="7">Lui</month>
							<month type="8">Avost</month>
							<month type="9">Setembar</month>
							<month type="10">Otubar</month>
							<month type="11">Novembar</month>
							<month type="12">Dicembar</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">Z</month>
							<month type="2">F</month>
							<month type="3">M</month>
							<month type="4">A</month>
							<month type="5">M</month>
							<month type="6">J</month>
							<month type="7">L</month>
							<month type="8">A</month>
							<month type="9">S</month>
							<month type="10">O</month>
							<month type="11">N</month>
							<month type="12">D</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">dom</day>
							<day type="mon">lun</day>
							<day type="tue">mar</day>
							<day type="wed">mie</day>
							<day type="thu">joi</day>
							<day type="fri">vin</day>
							<day type="sat">sab</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">domenie</day>
							<day type="mon">lunis</day>
							<day type="tue">martars</day>
							<day type="wed">miercus</day>
							<day type="thu">joibe</day>
							<day type="fri">vinars</day>
							<day type="sat">sabide</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">D</day>
							<day type="mon">L</day>
							<day type="tue">M</day>
							<day type="wed">M</day>
							<day type="thu">J</day>
							<day type="fri">V</day>
							<day type="sat">S</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">T1</quarter>
							<quarter type="2">T2</quarter>
							<quarter type="3">T3</quarter>
							<quarter type="4">T4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Prin trimestri</quarter>
							<quarter type="2">Secont trimestri</quarter>
							<quarter type="3">Tierç trimestri</quarter>
							<quarter type="4">Cuart trimestri</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>a.</am>
				<pm>p.</pm>
				<eras>
					<eraNames>
						<era type="0">pdC</era>
						<era type="1">ddC</era>
					</eraNames>
					<eraAbbr>
						<era type="0">pdC</era>
						<era type="1">ddC</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE d 'di' MMMM 'dal' yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">H:mm</dateFormatItem>
						<dateFormatItem id="M">L</dateFormatItem>
						<dateFormatItem id="MEd">E d/M</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E d MMM</dateFormatItem>
						<dateFormatItem id="MMMMEd">E d MMMM</dateFormatItem>
						<dateFormatItem id="MMMMd">d MMMM</dateFormatItem>
						<dateFormatItem id="MMMd">d MMM</dateFormatItem>
						<dateFormatItem id="MMd">d/MM</dateFormatItem>
						<dateFormatItem id="Md">d/M</dateFormatItem>
						<dateFormatItem id="d">d</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">M/yyyy</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, d/M/yyyy</dateFormatItem>
						<dateFormatItem id="yMMM">MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE d MMM yyyy</dateFormatItem>
						<dateFormatItem id="yMMMM">MMMM yyyy</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">QQQ yyyy</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="y">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MM - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yyyy - E dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">MM - MM/yyyy</greatestDifference>
							<greatestDifference id="y">MM/yyyy - MM/yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">dd/MM/yyyy - d/MM</greatestDifference>
							<greatestDifference id="d">d - d/MM/yyyy</greatestDifference>
							<greatestDifference id="y">dd/MM/yyyy - dd/MM/yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>ere</displayName>
					</field>
					<field type="year">
						<displayName>an</displayName>
					</field>
					<field type="month">
						<displayName>mês</displayName>
					</field>
					<field type="week">
						<displayName>setemane</displayName>
					</field>
					<field type="day">
						<displayName>dì</displayName>
						<relative type="0">vuê</relative>
						<relative type="1">doman</relative>
						<relative type="2">passantdoman</relative>
						<relative type="3">tra trê dîs</relative>
						<relative type="-1">îr</relative>
						<relative type="-2">îr l'altri</relative>
						<relative type="-3">trê dîs fa</relative>
					</field>
					<field type="weekday">
						<displayName>dì de setemane</displayName>
					</field>
					<field type="dayperiod">
						<displayName>toc dal dì</displayName>
					</field>
					<field type="hour">
						<displayName>ore</displayName>
					</field>
					<field type="minute">
						<displayName>minût</displayName>
					</field>
					<field type="second">
						<displayName>secont</displayName>
					</field>
					<field type="zone">
						<displayName>zone</displayName>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>No cognossude</exemplarCity>
			</zone>
			<zone type="America/Sao_Paulo">
				<exemplarCity>San Pauli dal Brasîl</exemplarCity>
			</zone>
			<zone type="Atlantic/Canary">
				<exemplarCity>Canariis</exemplarCity>
			</zone>
			<zone type="Atlantic/Azores">
				<exemplarCity>Azoris</exemplarCity>
			</zone>
			<zone type="Europe/Lisbon">
				<exemplarCity>Lisbone</exemplarCity>
			</zone>
			<zone type="Europe/Moscow">
				<exemplarCity>Mosche</exemplarCity>
			</zone>
			<zone type="America/New_York">
				<exemplarCity>Gnove York</exemplarCity>
			</zone>
			<metazone type="Europe_Central">
				<long>
					<standard>Ore de Europe centrâl</standard>
					<daylight>Ore estive de Europe centrâl</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Eastern">
				<long>
					<standard>Ore de Europe orientâl</standard>
					<daylight>Ore estive de Europe orientâl</daylight>
				</long>
			</metazone>
			<metazone type="Europe_Western">
				<long>
					<standard>Ore de Europe ocidentâl</standard>
					<daylight>Ore estive de Europe ocidentâl</daylight>
				</long>
			</metazone>
			<metazone type="Moscow">
				<long>
					<generic>Ore di Mosche</generic>
				</long>
			</metazone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="AMD">
				<displayName count="one">Dram armen</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Peso argjentin</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Selin austriac</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Dolar australian</displayName>
			</currency>
			<currency type="BEF">
				<displayName>Franc de Belgjiche</displayName>
			</currency>
			<currency type="BIF">
				<displayName>Franc burundês</displayName>
			</currency>
			<currency type="BND">
				<displayName>Dolar dal Brunei</displayName>
			</currency>
			<currency type="BRL">
				<displayName>Real brasilian</displayName>
			</currency>
			<currency type="BYR">
				<displayName>Rubli bielorùs</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Dolar canadês</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Franc svuizar</displayName>
			</currency>
			<currency type="CNY">
				<displayName>Yuan Renminbi cinês</displayName>
			</currency>
			<currency type="CSD">
				<displayName>Vieri dinar serp</displayName>
			</currency>
			<currency type="CUP">
				<displayName>Peso cuban</displayName>
			</currency>
			<currency type="CZK">
				<displayName>Corone de Republiche Ceche</displayName>
			</currency>
			<currency type="DEM">
				<displayName>Marc todesc</displayName>
			</currency>
			<currency type="DKK">
				<displayName>Corone danês</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Dinar algerin</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Euro</displayName>
			</currency>
			<currency type="FRF">
				<displayName>Franc francês</displayName>
			</currency>
			<currency type="GBP">
				<displayName>Sterline britaniche</displayName>
			</currency>
			<currency type="HRD">
				<displayName>Dinar cravuat</displayName>
			</currency>
			<currency type="HRK">
				<displayName>Kuna cravuate</displayName>
			</currency>
			<currency type="INR">
				<displayName>Rupie indiane</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Rial iranian</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Lire taliane</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Yen gjaponês</displayName>
			</currency>
			<currency type="KRW">
				<displayName>Won de Coree dal Sud</displayName>
			</currency>
			<currency type="LVL">
				<displayName>Lats leton</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Peso messican</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Dolar namibian</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Córdoba oro nicaraguan</displayName>
			</currency>
			<currency type="NOK">
				<displayName>Corone norvegjêse</displayName>
			</currency>
			<currency type="NZD">
				<displayName>Dollar neozelandês</displayName>
			</currency>
			<currency type="PKR">
				<displayName>Rupie pachistane</displayName>
			</currency>
			<currency type="PLN">
				<displayName>Zloty polac</displayName>
			</currency>
			<currency type="RSD">
				<displayName>Dinar serp</displayName>
			</currency>
			<currency type="RUB">
				<displayName>Rubli rus</displayName>
			</currency>
			<currency type="SEK">
				<displayName>Corone svedese</displayName>
			</currency>
			<currency type="SIT">
				<displayName>Talar sloven</displayName>
			</currency>
			<currency type="SKK">
				<displayName>Corone slovache</displayName>
			</currency>
			<currency type="TRL">
				<displayName>Viere Lire turche</displayName>
			</currency>
			<currency type="TRY">
				<displayName>Lire turche</displayName>
			</currency>
			<currency type="USD">
				<displayName>Dolar american</displayName>
				<symbol>$</symbol>
			</currency>
			<currency type="XXX">
				<displayName>Monede no valide o no cognossude</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Rand sudafrican</displayName>
			</currency>
		</currencies>
	</numbers>
	<units>
		<unit type="day">
			<unitPattern count="one">{0} zornade</unitPattern>
			<unitPattern count="other">{0} zornadis</unitPattern>
		</unit>
		<unit type="hour">
			<unitPattern count="one">{0} ore</unitPattern>
			<unitPattern count="other">{0} oris</unitPattern>
		</unit>
		<unit type="minute">
			<unitPattern count="one">{0} minût</unitPattern>
			<unitPattern count="other">{0} minûts</unitPattern>
		</unit>
		<unit type="month">
			<unitPattern count="one">{0} mês</unitPattern>
			<unitPattern count="other">{0} mês</unitPattern>
		</unit>
		<unit type="second">
			<unitPattern count="one">{0} secont</unitPattern>
			<unitPattern count="other">{0} seconts</unitPattern>
		</unit>
		<unit type="week">
			<unitPattern count="one">{0} setemane</unitPattern>
			<unitPattern count="other">{0} setemanis</unitPattern>
		</unit>
		<unit type="year">
			<unitPattern count="one">{0} an</unitPattern>
			<unitPattern count="other">{0} agns</unitPattern>
		</unit>
	</units>
	<posix>
		<messages>
			<yesstr>sì:si:s</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>

PKpG[��d�
^
^Locale/Data/el_POLYTON.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.6 $"/>
		<generation date="$Date: 2008/05/28 15:49:29 $"/>
		<language type="el"/>
		<variant type="POLYTON"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="ar">Ἀραβικά</language>
			<language type="arc">Ἀραμαϊκά</language>
			<language type="cy">Οὐαλικά</language>
			<language type="egy">Αἰγυπτιακὰ (ἀρχαῖα)</language>
			<language type="el">Ἑλληνικά</language>
			<language type="en">Ἀγγλικά</language>
			<language type="es">Ἱσπανικά</language>
			<language type="et">Ἐσθονικά</language>
			<language type="ga">Ἰρλανδικά</language>
			<language type="gd">Σκωτικὰ κελτικά</language>
			<language type="grc">Ἀρχαῖα Ἑλληνικά</language>
			<language type="he">Ἑβραϊκά</language>
			<language type="hu">Οὑγγρικά</language>
			<language type="hy">Ἀρμενικά</language>
			<language type="id">Ἰνδονησιακά</language>
			<language type="ine">Ἰνδοευρωπαϊκὰ (ἄλλα)</language>
			<language type="ira">Ἰρανικά</language>
			<language type="is">Ἰσλανδικά</language>
			<language type="it">Ἰταλικά</language>
			<language type="ja">Ἰαπωνικά</language>
			<language type="mul">Πολλαπλές γλῶσσες</language>
			<language type="nai">Ἰνδιανικὰ βόρειας Ἀμερικῆς (ἄλλα)</language>
			<language type="nl">Ὁλλανδικά</language>
			<language type="ota">Τουρκικά, ὀθωμανικὰ (1500-1928)</language>
			<language type="peo">Ἀρχαῖα περσικὰ (600-400 π.Χ.)</language>
			<language type="phi">Φιλιππινέζικα (ἄλλα)</language>
			<language type="sem">Σημιτικὰ (ἄλλα)</language>
			<language type="sla">Σλαβικὰ (ἄλλα)</language>
			<language type="sq">Ἀλβανικά</language>
			<language type="uk">Οὐκρανικά</language>
			<language type="yi">Ἰουδαϊκά</language>
		</languages>
		<scripts>
			<script type="Arab">Ἀραβικό</script>
			<script type="Armn">Ἀρμενικό</script>
			<script type="Ethi">Αἰθιοπικό</script>
			<script type="Grek">Ἑλληνικό</script>
			<script type="Hebr">Ἑβραϊκό</script>
		</scripts>
		<territories>
			<territory type="AD">Ἀνδόρα</territory>
			<territory type="AE">Ἠνωμένα Ἀραβικὰ Ἐμιράτα</territory>
			<territory type="AF">Ἀφγανιστάν</territory>
			<territory type="AG">Ἀντίγκουα καὶ Μπαρμπούντα</territory>
			<territory type="AI">Ἀνγκουίλα</territory>
			<territory type="AL">Ἀλβανία</territory>
			<territory type="AM">Ἀρμενία</territory>
			<territory type="AN">Ὁλλανδικὲς Ἀντίλλες</territory>
			<territory type="AO">Ἀνγκόλα</territory>
			<territory type="AQ">Ἀνταρκτική</territory>
			<territory type="AR">Ἀργεντινή</territory>
			<territory type="AS">Ἀμερικανικὴ Σαμόα</territory>
			<territory type="AT">Αὐστρία</territory>
			<territory type="AU">Αὐστραλία</territory>
			<territory type="AW">Ἀρούμπα</territory>
			<territory type="AZ">Ἀζερμπαϊτζάν</territory>
			<territory type="BA">Βοσνία - Ἐρζεγοβίνη</territory>
			<territory type="BM">Βερμοῦδες</territory>
			<territory type="BV">Νῆσος Μπουβέ</territory>
			<territory type="CC">Νῆσοι Κόκος (Κήλινγκ)</territory>
			<territory type="CD">Κονγκό, Λαϊκὴ Δημοκρατία τοῦ</territory>
			<territory type="CF">Κεντροαφρικανικὴ Δημοκρατία</territory>
			<territory type="CH">Ἑλβετία</territory>
			<territory type="CI">Ἀκτὴ Ἐλεφαντοστού</territory>
			<territory type="CK">Νῆσοι Κούκ</territory>
			<territory type="CV">Πράσινο Ἀκρωτήριο</territory>
			<territory type="CX">Νῆσος Χριστουγέννων</territory>
			<territory type="DO">Δομινικανὴ Δημοκρατία</territory>
			<territory type="DZ">Ἀλγερία</territory>
			<territory type="EC">Ἰσημερινός</territory>
			<territory type="EE">Ἐσθονία</territory>
			<territory type="EG">Αἴγυπτος</territory>
			<territory type="EH">Δυτικὴ Σαχάρα</territory>
			<territory type="ER">Ἐρυθραία</territory>
			<territory type="ES">Ἱσπανία</territory>
			<territory type="ET">Αἰθιοπία</territory>
			<territory type="FM">Μικρονησία, Ὁμόσπονδες Πολιτεῖες τῆς</territory>
			<territory type="FO">Νῆσοι Φερόες</territory>
			<territory type="GB">Ἡνωμένο Βασίλειο</territory>
			<territory type="GF">Γαλλικὴ Γουιάνα</territory>
			<territory type="GQ">Ἰσημερινὴ Γουινέα</territory>
			<territory type="GR">Ἑλλάδα</territory>
			<territory type="GS">Νότια Γεωργία καὶ Νότιες Νήσοι Σάντουιτς</territory>
			<territory type="HK">Χὸνγκ Κόνγκ, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας</territory>
			<territory type="HM">Νῆσοι Χὲρντ καὶ Μακντόναλντ</territory>
			<territory type="HN">Ὁνδούρα</territory>
			<territory type="HT">Ἁϊτή</territory>
			<territory type="HU">Οὑγγαρία</territory>
			<territory type="ID">Ἰνδονησία</territory>
			<territory type="IE">Ἰρλανδία</territory>
			<territory type="IL">Ἰσραήλ</territory>
			<territory type="IN">Ἰνδία</territory>
			<territory type="IO">Βρετανικὰ Ἐδάφη Ἰνδικοῦ Ὠκεανοῦ</territory>
			<territory type="IQ">Ἰράκ</territory>
			<territory type="IR">Ἰράν, Ἰσλαμικὴ Δημοκρατία τοῦ</territory>
			<territory type="IS">Ἰσλανδία</territory>
			<territory type="IT">Ἰταλία</territory>
			<territory type="JO">Ἰορδανία</territory>
			<territory type="JP">Ἰαπωνία</territory>
			<territory type="KN">Σαὶντ Κὶτς καὶ Νέβις</territory>
			<territory type="KY">Νῆσοι Κέιμαν</territory>
			<territory type="LA">Λατινικὴ Ἀμερική</territory>
			<territory type="LC">Ἁγία Λουκία</territory>
			<territory type="LK">Σρὶ Λάνκα</territory>
			<territory type="LU">Λουξεμβοῦργο</territory>
			<territory type="MD">Μολδαβία, Δημοκρατία τῆς</territory>
			<territory type="MH">Νῆσοι Μάρσαλ</territory>
			<territory type="ML">Μαλί</territory>
			<territory type="MO">Μακάο, Εἰδικὴ Διοικητικὴ Περιφέρεια τῆς Κίνας</territory>
			<territory type="MP">Νῆσοι Βόρειες Μαριάνες</territory>
			<territory type="NF">Νῆσος Νόρφολκ</territory>
			<territory type="NL">Ὁλλανδία</territory>
			<territory type="OM">Ὀμάν</territory>
			<territory type="PF">Γαλλικὴ Πολυνησία</territory>
			<territory type="PM">Σαὶντ Πιὲρ καὶ Μικελόν</territory>
			<territory type="PS">Παλαιστινιακὰ Ἐδάφη</territory>
			<territory type="SA">Σαουδικὴ Ἀραβία</territory>
			<territory type="SB">Νῆσοι Σολομῶντος</territory>
			<territory type="SH">Ἁγία Ἑλένη</territory>
			<territory type="SJ">Νῆσοι Σβάλμπαρ καὶ Γιὰν Μαγιέν</territory>
			<territory type="SM">Ἅγιος Μαρίνος</territory>
			<territory type="ST">Σάο Τομὲ καὶ Πρίνσιπε</territory>
			<territory type="SV">Ἒλ Σαλβαδόρ</territory>
			<territory type="SY">Συρία, Ἀραβικὴ Δημοκρατία τῆς</territory>
			<territory type="TC">Νῆσοι Τὲρκς καὶ Κάικος</territory>
			<territory type="TD">Τσάντ</territory>
			<territory type="TF">Γαλλικὰ Νότια Ἐδάφη</territory>
			<territory type="TL">Ἀνατολικὸ Τιμόρ</territory>
			<territory type="TT">Τρινιδὰδ καὶ Τομπάγκο</territory>
			<territory type="UA">Οὐκρανία</territory>
			<territory type="UG">Οὐγκάντα</territory>
			<territory type="UM">Ἀπομακρυσμένες Νησίδες τῶν Ἡνωμένων Πολιτειῶν</territory>
			<territory type="US">Ἡνωμένες Πολιτεῖες</territory>
			<territory type="UY">Οὐρουγουάη</territory>
			<territory type="UZ">Οὐζμπεκιστάν</territory>
			<territory type="VA">Ἁγία Ἕδρα (Βατικανό)</territory>
			<territory type="VC">Ἅγιος Βικέντιος καὶ Γρεναδίνες</territory>
			<territory type="VG">Βρετανικὲς Παρθένοι Νῆσοι</territory>
			<territory type="VI">Ἀμερικανικὲς Παρθένοι Νῆσοι</territory>
			<territory type="WF">Νῆσοι Οὐάλλις καὶ Φουτουνά</territory>
			<territory type="YE">Ὑεμένη</territory>
			<territory type="ZA">Νότια Ἀφρική</territory>
		</territories>
		<keys>
			<key type="calendar">Ἡμερολόγιο</key>
		</keys>
		<types>
			<type type="buddhist" key="calendar">Βουδιστικὸ ἡμερολόγιο</type>
			<type type="chinese" key="calendar">Κινεζικὸ ἡμερολόγιο</type>
			<type type="direct" key="collation">Σειρὰ Direct</type>
			<type type="gregorian" key="calendar">Γρηγοριανὸ ἡμερολόγιο</type>
			<type type="hebrew" key="calendar">Ἑβραϊκὸ ἡμερολόγιο</type>
			<type type="islamic" key="calendar">Ἰσλαμικὸ ἡμερολόγιο</type>
			<type type="islamic-civil" key="calendar">Ἰσλαμικὸ ἀστικὸ ἡμερολόγιο</type>
			<type type="japanese" key="calendar">Ἰαπωνικὸ ἡμερολόγιο</type>
			<type type="phonebook" key="collation">Σειρὰ τηλεφωνικοῦ καταλόγου</type>
			<type type="pinyin" key="collation">Σειρὰ Πίνγιν</type>
			<type type="stroke" key="collation">Σειρὰ Stroke</type>
		</types>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[α ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ά ὰ ᾶ β-ε ἐ ἔ ἒ ἑ ἕ ἓ έ ὲ ζ η ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ή ὴ ῆ θ ι ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ί ὶ ῖ ϊ ΐ ῒ ῗ κ-ο ὄ ὂ ὃ ό ὸ π ρ σ ς τ υ ὐ ὔ ὒ ὖ ὑ ὕ ὓ ὗ ύ ὺ ῦ ϋ ΰ ῢ ῧ φ-ω ὤ ὢ ὦ ὥ ὣ ὧ ώ ὼ ῶ]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>‛</alternateQuotationStart>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">Ἰαν</month>
							<month type="4">Ἀπρ</month>
							<month type="6">Ἰουν</month>
							<month type="7">Ἰουλ</month>
							<month type="8">Αὐγ</month>
							<month type="10">Ὀκτ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ἰανουαρίου</month>
							<month type="4">Ἀπριλίου</month>
							<month type="6">Ἰουνίου</month>
							<month type="7">Ἰουλίου</month>
							<month type="8">Αὐγούστου</month>
							<month type="10">Ὀκτωβρίου</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="abbreviated">
							<month type="1">Ἰαν</month>
							<month type="4">Ἀπρ</month>
							<month type="6">Ἰουν</month>
							<month type="7">Ἰουλ</month>
							<month type="8">Αὐγ</month>
							<month type="10">Ὀκτ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">Ἰανουάριος</month>
							<month type="4">Ἀπρίλιος</month>
							<month type="6">Ἰούνιος</month>
							<month type="7">Ἰούλιος</month>
							<month type="8">Αὔγουστος</month>
							<month type="10">Ὀκτώβριος</month>
						</monthWidth>
					</monthContext>
				</months>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencies>
			<currency type="ADP">
				<displayName>Πεσέτα Ἀνδόρας</displayName>
			</currency>
			<currency type="AED">
				<displayName>Ντιρὰμ Ἡνωμένων Ἀραβικῶν Ἐμιράτων</displayName>
			</currency>
			<currency type="ALL">
				<displayName>Λὲκ Ἀλβανίας</displayName>
			</currency>
			<currency type="AMD">
				<displayName>Dram Ἀρμενίας</displayName>
			</currency>
			<currency type="ANG">
				<displayName>Γκίλντα Ὁλλανδικῶν Ἀντιλλῶν</displayName>
			</currency>
			<currency type="AOA">
				<displayName>Kwanza Ἀνγκόλας</displayName>
			</currency>
			<currency type="AOK">
				<displayName>Kwanza Ἀνγκόλας (1977-1990)</displayName>
			</currency>
			<currency type="AON">
				<displayName>Νέα Kwanza Ἀνγκόλας (1990-2000)</displayName>
			</currency>
			<currency type="AOR">
				<displayName>Kwanza Reajustado Ἀνγκόλας (1995-1999)</displayName>
			</currency>
			<currency type="ARA">
				<displayName>Austral Ἀργεντινῆς</displayName>
			</currency>
			<currency type="ARP">
				<displayName>Πέσο Ἀργεντινῆς (1983-1985)</displayName>
			</currency>
			<currency type="ARS">
				<displayName>Πέσο Ἀργεντινῆς</displayName>
			</currency>
			<currency type="ATS">
				<displayName>Σελίνι Αὐστρίας</displayName>
			</currency>
			<currency type="AUD">
				<displayName>Δολάριο Αὐστραλίας</displayName>
			</currency>
			<currency type="AWG">
				<displayName>Γκίλντα Ἀρούμπα</displayName>
			</currency>
			<currency type="AZM">
				<displayName>Μανὰτ Ἀζερμπαϊτζάν</displayName>
			</currency>
			<currency type="BAD">
				<displayName>Δηνάριο Βοσνίας-Ἑρζεγοβίνης</displayName>
			</currency>
			<currency type="BAM">
				<displayName>Μάρκο Βοσνίας-Ἑρζεγοβίνης</displayName>
			</currency>
			<currency type="BEL">
				<displayName>Φράγκο Βελγίου (οἰκονομικό)</displayName>
			</currency>
			<currency type="BGL">
				<displayName>Μεταλλικὸ Λὲβ Βουλγαρίας</displayName>
			</currency>
			<currency type="BGN">
				<displayName>Νέο Λὲβ Βουλγαρίας</displayName>
			</currency>
			<currency type="CAD">
				<displayName>Δολάριο Καναδᾶ</displayName>
			</currency>
			<currency type="CHF">
				<displayName>Φράγκο Ἑλβετίας</displayName>
			</currency>
			<currency type="CLF">
				<displayName>Unidades de Fomento Χιλῆς</displayName>
			</currency>
			<currency type="CLP">
				<displayName>Πέσο Χιλῆς</displayName>
			</currency>
			<currency type="CSK">
				<displayName>Σκληρὴ Κορόνα Τσεχοσλοβακίας</displayName>
			</currency>
			<currency type="CVE">
				<displayName>Ἐσκούδο Πράσινου Ἀκρωτηρίου</displayName>
			</currency>
			<currency type="DDM">
				<displayName>Ostmark Ἀνατολικῆς Γερμανίας</displayName>
			</currency>
			<currency type="DZD">
				<displayName>Δηνάριο Ἀλγερίας</displayName>
			</currency>
			<currency type="ECS">
				<displayName>Sucre Ἰσημερινοῦ</displayName>
			</currency>
			<currency type="ECV">
				<displayName>Unidad de Valor Constante (UVC) Ἰσημερινοῦ</displayName>
			</currency>
			<currency type="EEK">
				<displayName>Κορόνα Ἐστονίας</displayName>
			</currency>
			<currency type="EGP">
				<displayName>Λίρα Αἰγύπτου</displayName>
			</currency>
			<currency type="ERN">
				<displayName>Nakfa Ἐρυθραίας</displayName>
			</currency>
			<currency type="ESP">
				<displayName>Πεσέτα Ἱσπανίας</displayName>
			</currency>
			<currency type="ETB">
				<displayName>Birr Αἰθιοπίας</displayName>
			</currency>
			<currency type="EUR">
				<displayName>Εὐρώ</displayName>
			</currency>
			<currency type="FKP">
				<displayName>Λίρα Νήσων Φώλκλαντ</displayName>
			</currency>
			<currency type="GBP">
				<symbol>£</symbol>
			</currency>
			<currency type="GMD">
				<displayName>Dalasi Γκάμπιας</displayName>
			</currency>
			<currency type="GQE">
				<displayName>Ekwele Guineana Ἰσημερινῆς Γουινέας</displayName>
			</currency>
			<currency type="GTQ">
				<displayName>Quetzal Γουατεμάλας</displayName>
			</currency>
			<currency type="GWE">
				<displayName>Γκινέα Ἐσκούδο Πορτογαλίας</displayName>
			</currency>
			<currency type="HKD">
				<displayName>Δολάριο Χὸνγκ Κόνγκ</displayName>
			</currency>
			<currency type="HTG">
				<displayName>Gourde Ἁϊτῆς</displayName>
			</currency>
			<currency type="HUF">
				<displayName>Φιορίνι Οὑγγαρίας</displayName>
			</currency>
			<currency type="IDR">
				<displayName>Ρούπια Ἰνδονησίας</displayName>
			</currency>
			<currency type="IEP">
				<displayName>Λίρα Ἰρλανδίας</displayName>
			</currency>
			<currency type="ILP">
				<displayName>Λίρα Ἰσραήλ</displayName>
			</currency>
			<currency type="ILS">
				<displayName>Νέο Sheqel Ἰσραήλ</displayName>
			</currency>
			<currency type="INR">
				<displayName>Ρούπια Ἰνδίας</displayName>
			</currency>
			<currency type="IQD">
				<displayName>Δηνάριο Ἰράκ</displayName>
			</currency>
			<currency type="IRR">
				<displayName>Rial Ἰράκ</displayName>
			</currency>
			<currency type="ISK">
				<displayName>Κορόνα Ἰσλανδίας</displayName>
			</currency>
			<currency type="ITL">
				<displayName>Λιρέτα Ἰταλίας</displayName>
			</currency>
			<currency type="JOD">
				<displayName>Δηνάριο Ἰορδανίας</displayName>
			</currency>
			<currency type="JPY">
				<displayName>Γιὲν Ἰαπωνίας</displayName>
			</currency>
			<currency type="LKR">
				<displayName>Ρούπια Σρὶ Λάνκας</displayName>
			</currency>
			<currency type="MOP">
				<displayName>Pataca Μακάου</displayName>
			</currency>
			<currency type="MXN">
				<displayName>Πέσο Μεξικοῦ</displayName>
			</currency>
			<currency type="MXP">
				<displayName>Ἀσημένιο Πέσο Μεξικοῦ (1861-1992)</displayName>
			</currency>
			<currency type="MXV">
				<displayName>Unidad de Inversion (UDI) Μεξικοῦ</displayName>
			</currency>
			<currency type="MZE">
				<displayName>Ἐσκούδο Μοζαμβίκης</displayName>
			</currency>
			<currency type="NAD">
				<displayName>Δολάριο Ναμίμπιας</displayName>
			</currency>
			<currency type="NIO">
				<displayName>Χρυσὴ Κόρδοβα Νικαράγουας</displayName>
			</currency>
			<currency type="NLG">
				<displayName>Γκίλντα Ὁλλανδίας</displayName>
			</currency>
			<currency type="PAB">
				<displayName>Μπαλμπόα Παναμᾶ</displayName>
			</currency>
			<currency type="PGK">
				<displayName>Kina Παπούα Νέα Γουινέας</displayName>
			</currency>
			<currency type="PTE">
				<displayName>Ἐσκούδο Πορτογαλίας</displayName>
			</currency>
			<currency type="PYG">
				<displayName>Γκουαρανὶ Παραγουάης</displayName>
			</currency>
			<currency type="SBD">
				<displayName>Δολάριο Νήσων Σολομῶντος</displayName>
			</currency>
			<currency type="SCR">
				<displayName>Ρούπια Σεϋχελῶν</displayName>
			</currency>
			<currency type="SHP">
				<displayName>Λίρα Ἀγίας Ἑλένης</displayName>
			</currency>
			<currency type="SUR">
				<displayName>Σοβιετικὸ Ρούβλι</displayName>
			</currency>
			<currency type="SVC">
				<displayName>Colon Ἒλ Σαλβαδόρ</displayName>
			</currency>
			<currency type="SZL">
				<displayName>Lilangeni Ζουαζιλάνδης</displayName>
			</currency>
			<currency type="THB">
				<displayName>Μπὰτ Ταϊλάνδης</displayName>
			</currency>
			<currency type="TMM">
				<displayName>Μανὰτ Τουρκμενιστάν</displayName>
			</currency>
			<currency type="TPE">
				<displayName>Ἐσκούδο Τιμόρ</displayName>
			</currency>
			<currency type="TTD">
				<displayName>Δολάριο Τρινιδὰδ καὶ Τομπάγκο</displayName>
			</currency>
			<currency type="UAH">
				<displayName>Hryvnia Οὐκρανίας</displayName>
			</currency>
			<currency type="UAK">
				<displayName>Karbovanetz Οὐκρανίας</displayName>
			</currency>
			<currency type="UGS">
				<displayName>Σελίνι Οὐγκάντας (1966-1987)</displayName>
			</currency>
			<currency type="UGX">
				<displayName>Σελίνι Οὐγκάντας</displayName>
			</currency>
			<currency type="USN">
				<displayName>Δολάριο ΗΠΑ (Ἑπόμενη ἡμέρα)</displayName>
			</currency>
			<currency type="USS">
				<displayName>Δολάριο ΗΠΑ (Ἴδια ἡμέρα)</displayName>
			</currency>
			<currency type="UYP">
				<displayName>Πέσο Οὐρουγουάης (1975-1993)</displayName>
			</currency>
			<currency type="UYU">
				<displayName>Πέσο Uruguayo Οὐρουγουάης</displayName>
			</currency>
			<currency type="UZS">
				<displayName>Sum Οὐζμπεκιστάν</displayName>
			</currency>
			<currency type="VEB">
				<displayName>Μπολιβὰλ Βενεζουέλας</displayName>
			</currency>
			<currency type="WST">
				<displayName>Tala Δυτικῆς Σαμόας</displayName>
			</currency>
			<currency type="XBA">
				<displayName>Εὐρωπαϊκὴ Σύνθετη Μονάδα</displayName>
			</currency>
			<currency type="XBB">
				<displayName>Εὐρωπαϊκὴ Νομισματικὴ Μονάδα</displayName>
			</currency>
			<currency type="XBC">
				<displayName>Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBC)</displayName>
			</currency>
			<currency type="XBD">
				<displayName>Εὐρωπαϊκὴ Μονάδα Λογαριασμοῦ (XBD)</displayName>
			</currency>
			<currency type="XCD">
				<displayName>Δολάριο Ἀνατολικῆς Καραϊβικῆς</displayName>
			</currency>
			<currency type="XDR">
				<displayName>Εἰδικὰ Δικαιώματα Ἀνάληψης</displayName>
			</currency>
			<currency type="XEU">
				<displayName>Εὐρωπαϊκὴ Συναλλαγματικὴ Μονάδα</displayName>
			</currency>
			<currency type="XFO">
				<displayName>Χρυσὸ Φράγκο Γαλλίας</displayName>
			</currency>
			<currency type="YDD">
				<displayName>Δηνάριο Ὑεμένης</displayName>
			</currency>
			<currency type="YER">
				<displayName>Rial Ὑεμένης</displayName>
			</currency>
			<currency type="YUD">
				<displayName>Μεταλλικὸ Δηνάριο Γιουγκοσλαβίας</displayName>
			</currency>
			<currency type="ZAL">
				<displayName>Ραντ Νότιας Ἀφρικῆς (οἰκονομικό)</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>Ρὰντ Νότιας Ἀφρικῆς</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>Ναί</yesstr>
			<nostr>Ὄχι</nostr>
		</messages>
	</posix>
</ldml>
PKpG[ە��GGLocale/Data/kl.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.46 $"/>
		<generation date="$Date: 2008/06/17 18:53:46 $"/>
		<language type="kl"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="kl">kalaallisut</language>
		</languages>
		<territories>
			<territory type="GL">Kalaallit Nunaat</territory>
		</territories>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á-ã b-e é ê f-i í î ĩ j-o ô p q ĸ r-u ú û ũ v-z æ ø å]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">jan</month>
							<month type="2">feb</month>
							<month type="3">mar</month>
							<month type="4">apr</month>
							<month type="5">maj</month>
							<month type="6">jun</month>
							<month type="7">jul</month>
							<month type="8">aug</month>
							<month type="9">sep</month>
							<month type="10">okt</month>
							<month type="11">nov</month>
							<month type="12">dec</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">januari</month>
							<month type="2">februari</month>
							<month type="3">martsi</month>
							<month type="4">aprili</month>
							<month type="5">maji</month>
							<month type="6">juni</month>
							<month type="7">juli</month>
							<month type="8">augustusi</month>
							<month type="9">septemberi</month>
							<month type="10">oktoberi</month>
							<month type="11">novemberi</month>
							<month type="12">decemberi</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">sab</day>
							<day type="mon">ata</day>
							<day type="tue">mar</day>
							<day type="wed">pin</day>
							<day type="thu">sis</day>
							<day type="fri">tal</day>
							<day type="sat">arf</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">sabaat</day>
							<day type="mon">ataasinngorneq</day>
							<day type="tue">marlunngorneq</day>
							<day type="wed">pingasunngorneq</day>
							<day type="thu">sisamanngorneq</day>
							<day type="fri">tallimanngorneq</day>
							<day type="sat">arfininngorneq</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>MMM dd, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="yyMM">MM/yy</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>,</decimal>
			<group>.</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="DKK">
				<symbol>kr</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�I�7##Locale/Data/es_BO.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.51 $"/>
		<generation date="$Date: 2008/05/28 15:49:30 $"/>
		<language type="es"/>
		<territory type="BO"/>
	</identity>
</ldml>
PKpG[$Ru�99Locale/Data/ur_IN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.14 $"/>
		<generation date="$Date: 2008/06/15 08:09:46 $"/>
		<language type="ur"/>
		<territory type="IN"/>
	</identity>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[kp.
��Locale/Data/ar_TN.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.48 $"/>
		<generation date="$Date: 2008/05/28 15:49:28 $"/>
		<language type="ar"/>
		<territory type="TN"/>
	</identity>
	<localeDisplayNames>
		<scripts>
			<script type="Ital">اللأيطالية القديمة</script>
		</scripts>
	</localeDisplayNames>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">الأحد</day>
							<day type="mon">الاثنين</day>
							<day type="tue">الثلاثاء</day>
							<day type="wed">الأربعاء</day>
							<day type="thu">الخميس</day>
							<day type="fri">الجمعة</day>
							<day type="sat">السبت</day>
						</dayWidth>
					</dayContext>
				</days>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<symbols>
			<nativeZeroDigit>0</nativeZeroDigit>
			<exponential>E</exponential>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#0.###;#0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>
PKpG[� �XHXHLocale/Data/ln.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/06/17 14:12:11 $"/>
		<language type="ln"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">afrikánsi</language>
			<language type="afh">afríhili</language>
			<language type="ak">akan</language>
			<language type="am">liamariki</language>
			<language type="ar">liarabu</language>
			<language type="as">liasame</language>
			<language type="az">liazerbayani</language>
			<language type="bai">nkótá ya Bamileke</language>
			<language type="be">belarusi</language>
			<language type="bg">kibulgaria</language>
			<language type="bh">libiyari</language>
			<language type="bm">bambara</language>
			<language type="bn">bengali</language>
			<language type="br">breton</language>
			<language type="bs">libosinia</language>
			<language type="ca">katalani</language>
			<language type="cs">litshɛki</language>
			<language type="cy">liwelesi</language>
			<language type="da">lidanemark</language>
			<language type="de">lialemani</language>
			<language type="el">ligreki</language>
			<language type="en">lingɛlɛ́sa</language>
			<language type="en_CA">lingɛlɛ́sa (CA)</language>
			<language type="eo">lisipelanto</language>
			<language type="es">lispanyola</language>
			<language type="et">liestonia</language>
			<language type="eu">libaske</language>
			<language type="fa">lipɛrsi</language>
			<language type="fi">lifilandi</language>
			<language type="fil">litagalog</language>
			<language type="fo">lifarose</language>
			<language type="fr">lifalansé</language>
			<language type="fr_CA">lifalansé (CA)</language>
			<language type="fy">lifrisi</language>
			<language type="ga">lirlande</language>
			<language type="gd">ligaeliki</language>
			<language type="gl">ligalicia</language>
			<language type="gn">ligwarani</language>
			<language type="gu">liguzarati</language>
			<language type="he">liyuda</language>
			<language type="hi">lihindi</language>
			<language type="hr">likroasia</language>
			<language type="hu">liungaria</language>
			<language type="hy">liarmenya</language>
			<language type="ia">interlingua</language>
			<language type="id">lindonesi</language>
			<language type="ie">interlingue</language>
			<language type="is">lislanda</language>
			<language type="it">litaliano</language>
			<language type="ja">liyapani</language>
			<language type="jv">lizava</language>
			<language type="ka">lizorzi</language>
			<language type="kg">kikɔ́ngɔ</language>
			<language type="km">likambodia</language>
			<language type="kn">kanada</language>
			<language type="ko">likorea</language>
			<language type="ku">likurdi</language>
			<language type="ky">kirgizi</language>
			<language type="la">kilatini</language>
			<language type="ln">lingála</language>
			<language type="lo">lilao</language>
			<language type="lt">lituani</language>
			<language type="lua">ciluba</language>
			<language type="lun">lunda</language>
			<language type="lv">lilativa</language>
			<language type="mk">limasedonia</language>
			<language type="ml">limalayalami</language>
			<language type="mn">limongoli</language>
			<language type="mr">limarati</language>
			<language type="ms">limalasi</language>
			<language type="mt">limalta</language>
			<language type="mul">nkótá míngi</language>
			<language type="ne">linepali</language>
			<language type="nl">lifalamá</language>
			<language type="nn">linovezi-nynorsk</language>
			<language type="no">linovezi</language>
			<language type="oc">liosita</language>
			<language type="or">oriya</language>
			<language type="pa">lipunzabi</language>
			<language type="pl">lipoloni</language>
			<language type="ps">pashto</language>
			<language type="pt">lipulutugɛ́si</language>
			<language type="pt_BR">lipulutugɛ́si (Brazil)</language>
			<language type="ro">lirumani</language>
			<language type="ru">lirusi</language>
			<language type="sa">indu-ya-kala</language>
			<language type="sd">lisindi</language>
			<language type="sg">sango</language>
			<language type="sh">liserbokroata</language>
			<language type="si">lisinalɛ́si</language>
			<language type="sk">lisolovaki</language>
			<language type="sl">lisoloveni</language>
			<language type="so">lisomali</language>
			<language type="sq">lialbania</language>
			<language type="sr">liserbia</language>
			<language type="st">Sotho ya Sidi</language>
			<language type="su">lisundanɛ́si</language>
			<language type="sv">liswédwa</language>
			<language type="sw">kiswahili</language>
			<language type="ta">tamili</language>
			<language type="te">litelegu</language>
			<language type="th">thai</language>
			<language type="ti">tigirinya</language>
			<language type="tk">turkmen</language>
			<language type="tlh">kilingoni</language>
			<language type="tr">turk</language>
			<language type="tw">twi</language>
			<language type="ug">uighur</language>
			<language type="uk">liukrenia</language>
			<language type="und">lokótá eyébámí tɛ́</language>
			<language type="ur">liurdu</language>
			<language type="uz">liusibeki</language>
			<language type="vi">livietnami</language>
			<language type="xh">xhosa</language>
			<language type="yi">yiddish</language>
			<language type="zu">zulu</language>
		</languages>
		<scripts>
			<script type="Arab">arabu</script>
			<script type="Latn">latɛ́</script>
			<script type="Zxxx">ekomí tɛ́</script>
			<script type="Zzzz">bokomi boyébámí tɛ́</script>
		</scripts>
		<territories>
			<territory type="001">mokili mobimba</territory>
			<territory type="002">Afríka</territory>
			<territory type="005">Ameríka ya Sídi</territory>
			<territory type="011">Afríka ya límbe</territory>
			<territory type="015">Afríka ya Nola</territory>
			<territory type="018">Afríka ya Sídi</territory>
			<territory type="142">Azía</territory>
			<territory type="150">Erópa</territory>
			<territory type="154">Erópa ya Nola</territory>
			<territory type="155">Erópa ya límbe</territory>
			<territory type="AD">Andora</territory>
			<territory type="AF">Afganistáni</territory>
			<territory type="AG">Antigua mpé Barbuda</territory>
			<territory type="AO">Angóla</territory>
			<territory type="AR">Argentina</territory>
			<territory type="AX">Albania</territory>
			<territory type="BA">Bosnia na Erzegovina</territory>
			<territory type="BD">Bángaladɛ́si</territory>
			<territory type="BE">Bɛ́ljika</territory>
			<territory type="BF">Burkina Faso</territory>
			<territory type="BG">Bulgaria</territory>
			<territory type="BI">Burundi</territory>
			<territory type="BR">Bresíli</territory>
			<territory type="BT">Butáni</territory>
			<territory type="BW">Botswana</territory>
			<territory type="BY">Bielorusia</territory>
			<territory type="CA">Kanadá</territory>
			<territory type="CD">Kongó-Kinsásá</territory>
			<territory type="CF">Santrafríka</territory>
			<territory type="CG">Kongó-Brazzaville</territory>
			<territory type="CH">Swisi</territory>
			<territory type="CM">Kamerun</territory>
			<territory type="CN">Sína</territory>
			<territory type="CZ">Republiki Sheki</territory>
			<territory type="DE">Alémani</territory>
			<territory type="DJ">Djibuti</territory>
			<territory type="DZ">Aljeria</territory>
			<territory type="EG">Ejipti</territory>
			<territory type="EH">Sahara ya límbe</territory>
			<territory type="ES">Espania</territory>
			<territory type="ET">Etiopya</territory>
			<territory type="FI">Finilanda</territory>
			<territory type="FR">Falansia</territory>
			<territory type="GB">Ingɛlɛ́tɛlɛ</territory>
			<territory type="GH">Ghana</territory>
			<territory type="GI">Gibraltar</territory>
			<territory type="GM">Gambia</territory>
			<territory type="GN">Gine</territory>
			<territory type="GR">Gresi</territory>
			<territory type="GW">Gine-Bisau</territory>
			<territory type="HR">Kroasia</territory>
			<territory type="HU">Ungri</territory>
			<territory type="ID">Indoneziá</territory>
			<territory type="IE">Irlandí</territory>
			<territory type="IN">Ɛndɛ</territory>
			<territory type="IS">Islandi</territory>
			<territory type="IT">Italia</territory>
			<territory type="JO">Zordaní</territory>
			<territory type="JP">Yapan</territory>
			<territory type="KE">Kenya</territory>
			<territory type="KG">Kirghizistáni</territory>
			<territory type="KI">KI</territory>
			<territory type="KP">Kore ya Nola</territory>
			<territory type="KR">Kore ya Sidi</territory>
			<territory type="KZ">Kazakstáni</territory>
			<territory type="LB">Liban</territory>
			<territory type="LR">Liberia</territory>
			<territory type="LT">Litwani</territory>
			<territory type="LU">Luksamburg</territory>
			<territory type="LV">Letoni</territory>
			<territory type="LY">Libíya</territory>
			<territory type="MK">Masedoni</territory>
			<territory type="ML">Mali</territory>
			<territory type="MN">Mongolí</territory>
			<territory type="MO">Makau</territory>
			<territory type="MV">Madívi</territory>
			<territory type="MZ">Mozambíki</territory>
			<territory type="NA">Namibia</territory>
			<territory type="NE">Nijé</territory>
			<territory type="NG">Nijeria</territory>
			<territory type="NL">Holanda</territory>
			<territory type="NO">Norvej</territory>
			<territory type="NP">Nepáli</territory>
			<territory type="PK">Pakistáni</territory>
			<territory type="PL">Poloni</territory>
			<territory type="PT">Pulutugal</territory>
			<territory type="RO">Rumania</territory>
			<territory type="RU">Rusí</territory>
			<territory type="RW">Rwanda</territory>
			<territory type="SD">Sudani</territory>
			<territory type="SE">Swési</territory>
			<territory type="SH">Santu Helena</territory>
			<territory type="SM">Santu Marino</territory>
			<territory type="SO">Somalia</territory>
			<territory type="ST">Sǎo Tomé na Principe</territory>
			<territory type="SY">Sirí</territory>
			<territory type="TG">Togo</territory>
			<territory type="TJ">Tazikistáni</territory>
			<territory type="TM">Turkmenistáni</territory>
			<territory type="TN">Tunizia</territory>
			<territory type="TR">Turkí</territory>
			<territory type="TT">Trinidad mpé Tobago</territory>
			<territory type="TW">Taiwan</territory>
			<territory type="US">Etazíni</territory>
			<territory type="UZ">Uzbekistáni</territory>
			<territory type="VA">Vatikáni</territory>
			<territory type="VN">Vietnami</territory>
			<territory type="YE">Yeméni</territory>
			<territory type="ZA">Sidafríka</territory>
			<territory type="ZM">Zambia</territory>
			<territory type="ZW">Zimbabwe</territory>
			<territory type="ZZ">Esíká eyébámí tɛ́</territory>
		</territories>
		<keys>
			<key type="calendar">manáka</key>
			<key type="collation">elandiseli</key>
			<key type="currency">mbɔ́ngɔ</key>
		</keys>
		<types>
			<type type="gregorian" key="calendar">manáka ya Gregor</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">na míli</measurementSystemName>
			<measurementSystemName type="metric">na mɛ́tɛlɛ</measurementSystemName>
		</measurementSystemNames>
	</localeDisplayNames>
	<characters>
		<exemplarCharacters>[a á â ǎ b-e é ê ě ɛ {ɛ́} {ɛ̂} {ɛ̌} f g {gb} h i í î ǐ k-m {mb} {mp} n {nd} {ng} {nk} {ns} {nt} {nz} o ó ô ǒ ɔ {ɔ́} {ɔ̂} {ɔ̌} p r-u ú û ǔ v w y z]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[j q x]</exemplarCharacters>
		<exemplarCharacters type="currencySymbol">[c f F]</exemplarCharacters>
	</characters>
	<delimiters>
		<quotationStart>«</quotationStart>
		<quotationEnd>»</quotationEnd>
		<alternateQuotationStart>“</alternateQuotationStart>
		<alternateQuotationEnd>”</alternateQuotationEnd>
	</delimiters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">s1</month>
							<month type="2">s2</month>
							<month type="3">s3</month>
							<month type="4">s4</month>
							<month type="5">s5</month>
							<month type="6">s6</month>
							<month type="7">s7</month>
							<month type="8">s8</month>
							<month type="9">s9</month>
							<month type="10">s10</month>
							<month type="11">s11</month>
							<month type="12">s12</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">sánzá ya yambo</month>
							<month type="2">sánzá ya míbalé</month>
							<month type="3">sánzá ya mísáto</month>
							<month type="4">sánzá ya mínei</month>
							<month type="5">sánzá ya mítáno</month>
							<month type="6">sánzá ya motóbá</month>
							<month type="7">sánzá ya nsambo</month>
							<month type="8">sánzá ya mwambe</month>
							<month type="9">sánzá ya libwa</month>
							<month type="10">sánzá ya zómi</month>
							<month type="11">sánzá ya zómi na mɔ̌kɔ́</month>
							<month type="12">sánzá ya zómi na míbalé</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">eye</day>
							<day type="mon">m1</day>
							<day type="tue">m2</day>
							<day type="wed">m3</day>
							<day type="thu">m4</day>
							<day type="fri">m5</day>
							<day type="sat">mps</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">eyenga</day>
							<day type="mon">mokɔlɔ ya libosó</day>
							<day type="tue">mokɔlɔ ya míbalé</day>
							<day type="wed">mokɔlɔ ya mísáto</day>
							<day type="thu">mokɔlɔ ya mínéi</day>
							<day type="fri">mokɔlɔ ya mítáno</day>
							<day type="sat">mpɔ́sɔ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">SM1</quarter>
							<quarter type="2">SM2</quarter>
							<quarter type="3">SM3</quarter>
							<quarter type="4">SM4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">sánzá mísáto ya yambo</quarter>
							<quarter type="2">sánzá mísáto ya míbalé</quarter>
							<quarter type="3">sánzá mísáto ya mísáto</quarter>
							<quarter type="4">sánzá mísáto ya mínei</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraNames>
						<era type="0">libosó ya Y.-K.</era>
						<era type="1">nsima ya Y.-K.</era>
					</eraNames>
					<eraAbbr>
						<era type="0">libosó ya Y.-K.</era>
						<era type="1">nsima ya Y.-K.</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, yyyy MMMM dd</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>yyyy MMMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>yyyy MMM d</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>yy/MM/dd</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>HH:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>HH:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>HH:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
				<fields>
					<field type="day">
						<displayName>mokɔlɔ</displayName>
						<relative type="0">lɛlɔ́</relative>
					</field>
				</fields>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Africa/Kinshasa">
				<exemplarCity>Kinsásá</exemplarCity>
			</zone>
			<zone type="Africa/Bangui">
				<exemplarCity>Santrafríka</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
		</symbols>
		<currencies>
			<currency type="BEF">
				<displayName>falánga ya Bɛ́ljika</displayName>
			</currency>
			<currency type="BIF">
				<displayName>falánga ya Burundi</displayName>
			</currency>
			<currency type="CDF">
				<displayName>falánga kongolé</displayName>
				<symbol>Fc</symbol>
			</currency>
			<currency type="CHF">
				<displayName>Falánga ya Swisi</displayName>
				<symbol>Fr.</symbol>
			</currency>
			<currency type="FRF">
				<displayName>Falánga ya Falansia</displayName>
			</currency>
			<currency type="XOF">
				<displayName>Falánga CFA BCEAO</displayName>
			</currency>
			<currency type="XPF">
				<displayName>Falánga CFP</displayName>
			</currency>
			<currency type="XXX">
				<displayName>mbɔ́ngɔ eyébámí tɛ́</displayName>
				<symbol>XXX</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�w��##Locale/Data/st_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="st"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[9�����Locale/Data/es_EC.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.57 $"/>
		<generation date="$Date: 2008/06/05 01:32:20 $"/>
		<language type="es"/>
		<territory type="EC"/>
	</identity>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>HH:mm:ss v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>H:mm:ss z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>H:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>H:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} a el {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M-M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E dd/MM - E dd/MM</greatestDifference>
							<greatestDifference id="d">E dd/MM - E dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">MMM-MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">dd/MM - dd/MM</greatestDifference>
							<greatestDifference id="d">dd/MM - dd/MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="h">H-H</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="h">H:mm-H:mm</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="h">H:mm-H:mm v</greatestDifference>
							<greatestDifference id="m">H:mm-H:mm v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="h">H-H v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y-y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">MM/yy - MM/yy</greatestDifference>
							<greatestDifference id="y">MM/yy - MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="d">E dd/MM/yy - E dd/MM/yy</greatestDifference>
							<greatestDifference id="y">E dd/MM/yy - E dd/MM/yy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM-MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">MMM 'de' yyyy 'a' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E d 'de' MMM 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">E d 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">E d 'de' MMM 'de' yyyy 'al' E d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">d 'de' MMM 'al' d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="d">d-d 'de' MMM 'de' yyyy</greatestDifference>
							<greatestDifference id="y">d 'de' MMM 'de' yyyy 'al' d 'de' MMM 'de' yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="d">dd/MM/yy - dd/MM/yy</greatestDifference>
							<greatestDifference id="y">dd/MM/yy - dd/MM/yy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
	</dates>
	<numbers>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00;¤-#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="USD">
				<symbol>$</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>
PKpG[;�O$ģģLocale/Data/ur.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.54 $"/>
		<generation date="$Date: 2008/06/17 14:12:14 $"/>
		<language type="ur"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="af">ايفريکانز</language>
			<language type="am">امہاری</language>
			<language type="ar">عربی</language>
			<language type="as">آسامی</language>
			<language type="az">آزربائیجانی</language>
			<language type="be">بيلاروسی</language>
			<language type="bg">بلغاری</language>
			<language type="bh">بِہاری</language>
			<language type="bn">بنگالی</language>
			<language type="br">برِیٹن</language>
			<language type="bs">بوسنی</language>
			<language type="ca">کاٹالانين</language>
			<language type="cs">چيک</language>
			<language type="cy">ويلش</language>
			<language type="da">ڈينش</language>
			<language type="de">جرمن</language>
			<language type="el">يونانی</language>
			<language type="en">انگريزی</language>
			<language type="en_GB">برطانوی انگریزی</language>
			<language type="en_US">امریکہ کی انگریزی</language>
			<language type="eo">ايسپرانٹو</language>
			<language type="es">ہسپانوی</language>
			<language type="et">اسٹونين</language>
			<language type="eu">باسکی</language>
			<language type="fa">فارسی</language>
			<language type="fi">فنّنِش</language>
			<language type="fil">ٹيگالاگی</language>
			<language type="fo">فیروئیز</language>
			<language type="fr">فرانسيسی</language>
			<language type="fy">فريژين</language>
			<language type="ga">آئيرِش</language>
			<language type="gd">سکاٹ گيلِک</language>
			<language type="gl">گاليشيائی</language>
			<language type="gn">گُارانی</language>
			<language type="gu">گجراتی</language>
			<language type="he">عبرانی</language>
			<language type="hi">ہندی</language>
			<language type="hr">کراتی</language>
			<language type="hu">ہنگیرین</language>
			<language type="hy">ارمینی</language>
			<language type="ia">انٹرلنگوی</language>
			<language type="id">انڈونيثيائی</language>
			<language type="is">برفستانی</language>
			<language type="it">اطالوی</language>
			<language type="ja">جاپانی</language>
			<language type="jv">جاوی</language>
			<language type="ka">جارجی</language>
			<language type="km">کمبوڈیَن</language>
			<language type="kn">کنّاڈا</language>
			<language type="ko">کورين</language>
			<language type="ku">كردش</language>
			<language type="ky">کرغیزی</language>
			<language type="la">لاطينی</language>
			<language type="ln">لِنگَلا</language>
			<language type="lo">لاؤشِیَن</language>
			<language type="lt">لتھُواینین</language>
			<language type="lv">ليٹوين</language>
			<language type="mk">مقدونيائی</language>
			<language type="ml">مالايالم</language>
			<language type="mn">منگؤلی</language>
			<language type="mr">مراٹهی</language>
			<language type="ms">مالائی</language>
			<language type="mt">مالٹی</language>
			<language type="ne">نيپالی</language>
			<language type="nl">ڈچ</language>
			<language type="nn">نورویجینی (نینورسک)</language>
			<language type="no">نارويجين</language>
			<language type="oc">آکيٹانی</language>
			<language type="or">اورِیا</language>
			<language type="pa">پنجابی</language>
			<language type="pl">پولستانی</language>
			<language type="ps">پشتو</language>
			<language type="pt">پُرتگالی</language>
			<language type="pt_BR">پرتگالی (ﺑﺮﺍﺯﻳﻞ)</language>
			<language type="pt_PT">پرتگالی (پرتگال)</language>
			<language type="ro">رومنی</language>
			<language type="ru">روسی</language>
			<language type="sa">سَنسکرِت</language>
			<language type="sd">سندھی</language>
			<language type="sh">سربو-کروئیشین</language>
			<language type="si">سنہالی</language>
			<language type="sk">سلاواکی</language>
			<language type="sl">سلوينی</language>
			<language type="so">سومالی</language>
			<language type="sq">البانی</language>
			<language type="sr">صربی</language>
			<language type="st">سیسوتھو</language>
			<language type="su">سُوڈانی</language>
			<language type="sv">سويڈش</language>
			<language type="sw">سواہیلی</language>
			<language type="ta">تامِل</language>
			<language type="te">تيلوگو</language>
			<language type="th">تهائی</language>
			<language type="ti">تگرینی</language>
			<language type="tk">ترکمانی</language>
			<language type="tl">ٹیگا لوگ</language>
			<language type="tlh">کلنگان</language>
			<language type="tr">ترکی</language>
			<language type="tw">توی</language>
			<language type="ug">اُئِیگُور</language>
			<language type="uk">يُوکرينی</language>
			<language type="ur">اردو</language>
			<language type="uz">ازبک</language>
			<language type="vi">ويتنامی</language>
			<language type="xh">خوسہ</language>
			<language type="yi">يادش</language>
			<language type="zh_Hans">چینی (آسان کردہ)</language>
			<language type="zh_Hant">چینی (روایتی)</language>
			<language type="zu">زُولُو</language>
		</languages>
		<scripts>
			<script type="Arab">العربية</script>
			<script type="Zxxx">Zxxx</script>
			<script type="Zzzz">Zzzz</script>
		</scripts>
		<territories>
			<territory type="AE">متحدہ عرب امارات</territory>
			<territory type="AF">افغانستان</territory>
			<territory type="AG">انٹیگوا اور باربودا</territory>
			<territory type="AL">البانیا</territory>
			<territory type="AM">آر مینیا</territory>
			<territory type="AN">نیدرلینڈز انٹیلیز</territory>
			<territory type="AO">انگولا</territory>
			<territory type="AQ">انٹار ٹکا</territory>
			<territory type="AR">ارجنٹینا</territory>
			<territory type="AS">امریکی ساموا</territory>
			<territory type="AT">آسٹریا</territory>
			<territory type="AU">آسٹریلیا</territory>
			<territory type="AZ">آذر بائجان</territory>
			<territory type="BA">بوسنیا ہرزگوینا</territory>
			<territory type="BD">بنگلا دیش</territory>
			<territory type="BE">بیلجئیم</territory>
			<territory type="BF">برکینا فاسو</territory>
			<territory type="BG">بلغاریہ</territory>
			<territory type="BI">برنڈی</territory>
			<territory type="BJ">بینن</territory>
			<territory type="BO">بولیویا</territory>
			<territory type="BR">برازیل</territory>
			<territory type="BS">باھا ماس</territory>
			<territory type="BT">بھوٹان</territory>
			<territory type="BV">جزیرہ بووٹ</territory>
			<territory type="BW">بوٹسوانا</territory>
			<territory type="BY">بیلا رس</territory>
			<territory type="CA">کینیڈا</territory>
			<territory type="CC">جزائر کوکوز</territory>
			<territory type="CD">کانگو، جمہوری ریاست</territory>
			<territory type="CF">جمہوریہ وسطی افریقہ</territory>
			<territory type="CG">کانگو</territory>
			<territory type="CH">سوئزر لینڈ</territory>
			<territory type="CK">جزائر کُک</territory>
			<territory type="CL">چلی</territory>
			<territory type="CM">کیمرون</territory>
			<territory type="CN">چین</territory>
			<territory type="CO">کولمبیا</territory>
			<territory type="CS">سربیا اور مانٹینیگرو</territory>
			<territory type="CU">کیوبا</territory>
			<territory type="CX">جزیرہ کرسمس</territory>
			<territory type="CY">قبرص</territory>
			<territory type="CZ">جمہوریہ چیک</territory>
			<territory type="DE">جرمنی</territory>
			<territory type="DK">ڈنمارک</territory>
			<territory type="DO">ڈومینیکن ریپبلک</territory>
			<territory type="DZ">الجیریا</territory>
			<territory type="EC">ایکواڈور</territory>
			<territory type="EE">ایسٹونیا</territory>
			<territory type="EG">مصر</territory>
			<territory type="EH">مغربی صحارا</territory>
			<territory type="ER">اریٹیریا</territory>
			<territory type="ES">سپین</territory>
			<territory type="ET">ایتھوپیا</territory>
			<territory type="FI">فن لینڈ</territory>
			<territory type="FK">جزائر فاک لینڈ</territory>
			<territory type="FM">مائکرونیزیا</territory>
			<territory type="FO">جزائرفارو</territory>
			<territory type="FR">فرانس</territory>
			<territory type="GA">غیبون</territory>
			<territory type="GB">برطانیہ</territory>
			<territory type="GE">جارجیا</territory>
			<territory type="GF">فرانسیسی گی آنا</territory>
			<territory type="GG">گرنزی</territory>
			<territory type="GH">گھانا</territory>
			<territory type="GL">گرین لینڈ</territory>
			<territory type="GM">گیمبیا</territory>
			<territory type="GN">گنی</territory>
			<territory type="GQ">استوائی گنی</territory>
			<territory type="GR">یونان</territory>
			<territory type="GS">جنوبی جارجیا اور جزائر جنوبی سینڈوچ</territory>
			<territory type="GW">گنی بسائو</territory>
			<territory type="HM">جزیرہ ہرڈ اور جزائر مکڈونلڈ</territory>
			<territory type="HN">ہونڈوراس</territory>
			<territory type="HR">کروشیا</territory>
			<territory type="HT">ہائٹی</territory>
			<territory type="HU">ہنگری</territory>
			<territory type="ID">انڈونیشیا</territory>
			<territory type="IE">آئر لینڈ</territory>
			<territory type="IL">اسرائیل</territory>
			<territory type="IN">بھارت</territory>
			<territory type="IO">بحرھند کا برٹش علاقہ</territory>
			<territory type="IQ">عراق</territory>
			<territory type="IR">ایران</territory>
			<territory type="IS">آئس لینڈ</territory>
			<territory type="IT">اٹلی</territory>
			<territory type="JE">جرسی</territory>
			<territory type="JO">اردن</territory>
			<territory type="JP">جاپان</territory>
			<territory type="KE">کینیا</territory>
			<territory type="KG">کرغستان</territory>
			<territory type="KH">کمبوڈیا</territory>
			<territory type="KI">کِرباتی</territory>
			<territory type="KM">کوموروس</territory>
			<territory type="KN">سینٹ کٹس اور نیوس</territory>
			<territory type="KP">شمالی کوریا</territory>
			<territory type="KR">جنوبی کوریا</territory>
			<territory type="KY">جزائر کیمن</territory>
			<territory type="KZ">قزاقستان</territory>
			<territory type="LA">لاؤس</territory>
			<territory type="LB">لبنان</territory>
			<territory type="LC">سینٹ لوسیا</territory>
			<territory type="LI">لکٹنسٹائن</territory>
			<territory type="LK">سری لنکا</territory>
			<territory type="LR">لائبیریا</territory>
			<territory type="LS">لیسوتھو</territory>
			<territory type="LT">لتھوانیا</territory>
			<territory type="LV">لٹوِیا</territory>
			<territory type="LY">لیبیا</territory>
			<territory type="MA">مراکش</territory>
			<territory type="MD">مالدووا</territory>
			<territory type="MG">مڈغاسکر</territory>
			<territory type="MH">جزائر مارشل</territory>
			<territory type="MK">مقدونیہ</territory>
			<territory type="ML">مالی</territory>
			<territory type="MM">میانمر</territory>
			<territory type="MN">منگولیا</territory>
			<territory type="MO">ماکاؤ</territory>
			<territory type="MP">شمالی ماریاناجزائر</territory>
			<territory type="MR">موریطانیہ</territory>
			<territory type="MW">ملاوی</territory>
			<territory type="MX">میکسیکو</territory>
			<territory type="MY">ملائیشیا</territory>
			<territory type="MZ">موزنبیق</territory>
			<territory type="NA">نمیبیا</territory>
			<territory type="NC">نیو کیلیڈونیا</territory>
			<territory type="NE">نائیجر</territory>
			<territory type="NF">جزیرہ نارفولک</territory>
			<territory type="NG">نائیجیریا</territory>
			<territory type="NI">نکاراگوا</territory>
			<territory type="NL">نیدرلینڈ</territory>
			<territory type="NO">ناروے</territory>
			<territory type="NP">نیپال</territory>
			<territory type="NZ">نیوزی لینڈ</territory>
			<territory type="OM">عمان</territory>
			<territory type="PE">پیرو</territory>
			<territory type="PF">فرانسیسی پولینیسیا</territory>
			<territory type="PG">پاپوا نیو گنی</territory>
			<territory type="PH">فلپائن</territory>
			<territory type="PK">پاکستان</territory>
			<territory type="PL">پولینڈ</territory>
			<territory type="PM">سینٹ پائرے اور میکویلون</territory>
			<territory type="PS">فلسطین</territory>
			<territory type="PT">پرتگال</territory>
			<territory type="PY">پیراگوئے</territory>
			<territory type="RO">رومانیہ</territory>
			<territory type="RU">روس</territory>
			<territory type="RW">روانڈا</territory>
			<territory type="SA">سعودی عرب</territory>
			<territory type="SB">جزائرسولمون</territory>
			<territory type="SC">سے شلز</territory>
			<territory type="SD">سوڈان</territory>
			<territory type="SE">سویڈن</territory>
			<territory type="SH">سینٹ ھیلینا</territory>
			<territory type="SI">سلوانیہ</territory>
			<territory type="SK">سلوواکیہ</territory>
			<territory type="SL">سیرالیون</territory>
			<territory type="SM">سان میرینو</territory>
			<territory type="SN">سینیگال</territory>
			<territory type="SO">صوپالیہ</territory>
			<territory type="SR">سورینام</territory>
			<territory type="SY">سیریا</territory>
			<territory type="SZ">سوازی لینڈ</territory>
			<territory type="TC">جزائر کیکس اور ترکیّہ</territory>
			<territory type="TD">چاڈ</territory>
			<territory type="TF">جنوبی فرانسیسی علاقہ جات</territory>
			<territory type="TG">ٹوگو</territory>
			<territory type="TH">تھائی لینڈ</territory>
			<territory type="TJ">تاجکستان</territory>
			<territory type="TK">ٹوکیلاؤ</territory>
			<territory type="TL">مشرقی تیمور</territory>
			<territory type="TM">ترکمانستان</territory>
			<territory type="TN">تیونس</territory>
			<territory type="TO">تونگا</territory>
			<territory type="TR">ترکی</territory>
			<territory type="TT">ٹرینیڈاڈ اور ٹوباگو</territory>
			<territory type="TV">ٹوالو</territory>
			<territory type="TW">تائیوان</territory>
			<territory type="TZ">تنزانیہ</territory>
			<territory type="UA">یوکرائن</territory>
			<territory type="UG">یوگنڈا</territory>
			<territory type="UM">ریاست ہائے متحدہ اور بیرونی جزائر</territory>
			<territory type="US">ریاست ہائے متحدہ امریکا</territory>
			<territory type="UY">ہوراگوئے</territory>
			<territory type="UZ">ازبکستان</territory>
			<territory type="VA">ویٹیکن سٹی</territory>
			<territory type="VC">سینٹ کیرن اور گریناڈائنز</territory>
			<territory type="VE">وینزولا</territory>
			<territory type="VG">جزائر ورجن، برٹش</territory>
			<territory type="VI">جزائر ورجن، امریکہ</territory>
			<territory type="VN">ویت نام</territory>
			<territory type="VU">وانواٹو</territory>
			<territory type="WF">والس اور فتونہ</territory>
			<territory type="WS">ساموا</territory>
			<territory type="YE">یمن</territory>
			<territory type="ZA">جنوبی افریقہ</territory>
			<territory type="ZM">زیمبیا</territory>
			<territory type="ZW">زمبابوے</territory>
			<territory type="ZZ">Unknown or Invalid Region</territory>
		</territories>
		<keys>
			<key type="calendar">کیلنڈر</key>
			<key type="collation">موازنہ</key>
			<key type="currency">کرنسی</key>
		</keys>
		<types>
			<type type="big5han" key="collation">روایتی چینی چھانٹ ترتیب-Big5</type>
			<type type="buddhist" key="calendar">بدھ کیلنڈر</type>
			<type type="chinese" key="calendar">روایتی چینی کیلنڈر</type>
			<type type="direct" key="collation">بلاواسطہ چھانٹ ترتیب</type>
			<type type="gb2312han" key="collation">سادہ چینی چھانٹ ترتیب-GB2312</type>
			<type type="gregorian" key="calendar">گریگوری کیلنڈر</type>
			<type type="hebrew" key="calendar">عبرانی کیلنڈر</type>
			<type type="indian" key="calendar">ہندی کیلنڈر</type>
			<type type="islamic" key="calendar">اسلامی کیلنڈر</type>
			<type type="islamic-civil" key="calendar">ہجری کیلنڈر</type>
			<type type="japanese" key="calendar">جاپانی کیلنڈر</type>
			<type type="phonebook" key="collation">فون نامہ چھانٹ ترتیب</type>
			<type type="pinyin" key="collation">پن ین چھانٹ ترتیب</type>
			<type type="roc" key="calendar">سادہ چینی کیلنڈر</type>
			<type type="stroke" key="collation">لکیری چھانٹ ترتیب</type>
			<type type="traditional" key="collation">روایتی چھانٹ ترتیب</type>
		</types>
		<measurementSystemNames>
			<measurementSystemName type="US">امریکی</measurementSystemName>
			<measurementSystemName type="metric">اعشاری</measurementSystemName>
		</measurementSystemNames>
		<codePatterns>
			<codePattern type="language">زبان:{0}</codePattern>
			<codePattern type="script">رسم الخط:{0}</codePattern>
			<codePattern type="territory">خطہ:{0}</codePattern>
		</codePatterns>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[أ ؤ ا آ ب پ ت ٹ ث ج چ ح-د ڈ ذ ر ڑ ز ژ س-غ ف ق ک گ ل-ن ں و ہ ی ء ئ ے ٻ ة ٺ ټ ٽ ه ھ ي]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[ؐ ؑ ؓ ؔ َ ِ ُ ٰ ً ّ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">جنوری</month>
							<month type="2">فروری</month>
							<month type="3">مار چ</month>
							<month type="4">اپريل</month>
							<month type="5">مئ</month>
							<month type="6">جون</month>
							<month type="7">جولائ</month>
							<month type="8">اگست</month>
							<month type="9">ستمبر</month>
							<month type="10">اکتوبر</month>
							<month type="11">نومبر</month>
							<month type="12">دسمبر</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">ج</month>
							<month type="2">ف</month>
							<month type="3">م</month>
							<month type="4">ا</month>
							<month type="5">م</month>
							<month type="6">ج</month>
							<month type="7">ج</month>
							<month type="8">ا</month>
							<month type="9">س</month>
							<month type="10">ا</month>
							<month type="11">ن</month>
							<month type="12">د</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="narrow">
							<day type="sun">ا</day>
							<day type="mon">پ</day>
							<day type="tue">م</day>
							<day type="wed">ب</day>
							<day type="thu">ج</day>
							<day type="fri">ج</day>
							<day type="sat">ہ</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">اتوار</day>
							<day type="mon">پير</day>
							<day type="tue">منگل</day>
							<day type="wed">بده</day>
							<day type="thu">جمعرات</day>
							<day type="fri">جمعہ</day>
							<day type="sat">ہفتہ</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">1سہ ماہی</quarter>
							<quarter type="2">2سہ ماہی</quarter>
							<quarter type="3">3سہ ماہی</quarter>
							<quarter type="4">4سہ ماہی</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">پہلی سہ ماہی</quarter>
							<quarter type="2">دوسری سہ ماہی</quarter>
							<quarter type="3">تيسری سہ ماہی</quarter>
							<quarter type="4">چوتهی سہ ماہی</quarter>
						</quarterWidth>
					</quarterContext>
					<quarterContext type="stand-alone">
						<quarterWidth type="narrow">
							<quarter type="1">1</quarter>
							<quarter type="2">2</quarter>
							<quarter type="3">3</quarter>
							<quarter type="4">4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>قبل دوپہر</am>
				<pm>بعد دوپہر</pm>
				<eras>
					<eraNames>
						<era type="0">قبل مسيح</era>
						<era type="1">عيسوی سن</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ق م</era>
						<era type="1">عيسوی سن</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>EEEE, d, MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>d, MMMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>d, MMM yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>d/M/yy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss a</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm a</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="Hm">HH:mm</dateFormatItem>
						<dateFormatItem id="M">LL</dateFormatItem>
						<dateFormatItem id="MEd">E, M-d</dateFormatItem>
						<dateFormatItem id="MMM">LLL</dateFormatItem>
						<dateFormatItem id="MMMEd">E MMM d</dateFormatItem>
						<dateFormatItem id="MMMMEd">E MMMM d</dateFormatItem>
						<dateFormatItem id="MMMMd">MMMM d</dateFormatItem>
						<dateFormatItem id="MMMd">MMM d</dateFormatItem>
						<dateFormatItem id="Md">M-d</dateFormatItem>
						<dateFormatItem id="d">د</dateFormatItem>
						<dateFormatItem id="ms">mm:ss</dateFormatItem>
						<dateFormatItem id="y">yyyy</dateFormatItem>
						<dateFormatItem id="yM">yyyy-M</dateFormatItem>
						<dateFormatItem id="yMEd">EEE, yyyy-d-M</dateFormatItem>
						<dateFormatItem id="yMMM">yyyy MMM</dateFormatItem>
						<dateFormatItem id="yMMMEd">EEE, yyyy MMM d</dateFormatItem>
						<dateFormatItem id="yMMMM">yyyy MMMM</dateFormatItem>
						<dateFormatItem id="yQ">Q yyyy</dateFormatItem>
						<dateFormatItem id="yQQQ">yyyy QQQ</dateFormatItem>
						<dateFormatItem id="yyQ">yy Q</dateFormatItem>
					</availableFormats>
					<intervalFormats>
						<intervalFormatFallback>{0} – {1}</intervalFormatFallback>
						<intervalFormatItem id="M">
							<greatestDifference id="M">M تا M</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MEd">
							<greatestDifference id="M">E, MM-dd تا E, MM-dd</greatestDifference>
							<greatestDifference id="d">E, MMM dd – E, MMM dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMM">
							<greatestDifference id="M">LLL-LLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMEd">
							<greatestDifference id="M">E, MMM d – E, MMM d</greatestDifference>
							<greatestDifference id="d">E, MMM d – E, MMM d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMM">
							<greatestDifference id="M">LLLL-LLLL</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="MMMd">
							<greatestDifference id="M">MMM d تا MMM d</greatestDifference>
							<greatestDifference id="d">MMM d تا d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="Md">
							<greatestDifference id="M">MM-dd تا MM-dd</greatestDifference>
							<greatestDifference id="d">M/d تا d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="d">
							<greatestDifference id="d">d-d</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="h">
							<greatestDifference id="a">h a تا h a</greatestDifference>
							<greatestDifference id="h">h–h a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hm">
							<greatestDifference id="a">h:mm a تا h:mm a</greatestDifference>
							<greatestDifference id="h">h:mm تا h:mm a</greatestDifference>
							<greatestDifference id="m">h:mm تا h:mm a</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hmv">
							<greatestDifference id="a">h:mm a – h:mm a v</greatestDifference>
							<greatestDifference id="h">h:mm تا h:mm a v</greatestDifference>
							<greatestDifference id="m">h:mm تا h:mm a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="hv">
							<greatestDifference id="a">h a – h a v</greatestDifference>
							<greatestDifference id="h">h تا h a v</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="y">
							<greatestDifference id="y">y تا y</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yM">
							<greatestDifference id="M">yyyy-MM تا MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM تا yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMEd">
							<greatestDifference id="M">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="d">E, yyyy-MM-dd تا E, yyyy-MM-dd</greatestDifference>
							<greatestDifference id="y">E, yyyy-MM-dd – E, yyyy-MM-dd</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMM">
							<greatestDifference id="M">MMM–MMM yyyy</greatestDifference>
							<greatestDifference id="y">MMM–MMM yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMEd">
							<greatestDifference id="M">E, MMM d – E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">E, MMM d – E, MMM d, yyyy</greatestDifference>
							<greatestDifference id="y">E, MMM d, yyyy تا E, MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMM">
							<greatestDifference id="M">yyyy-MM تا MM</greatestDifference>
							<greatestDifference id="y">yyyy-MM تا yyyy-MM</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMMMd">
							<greatestDifference id="M">MMM d تا MMM d, yyyy</greatestDifference>
							<greatestDifference id="d">MMM d–d, yyyy</greatestDifference>
							<greatestDifference id="y">MMM d, yyyy تا MMM d, yyyy</greatestDifference>
						</intervalFormatItem>
						<intervalFormatItem id="yMd">
							<greatestDifference id="M">yyyy-MM-dd تا MM-dd</greatestDifference>
							<greatestDifference id="d">yyyy-MM-dd تا dd</greatestDifference>
							<greatestDifference id="y">MM-dd-yyyy تا MM-dd-yyyy</greatestDifference>
						</intervalFormatItem>
					</intervalFormats>
				</dateTimeFormats>
				<fields>
					<field type="era">
						<displayName>دور</displayName>
					</field>
					<field type="year">
						<displayName>سال</displayName>
					</field>
					<field type="month">
						<displayName>مہینہ</displayName>
					</field>
					<field type="week">
						<displayName>ہفتہ</displayName>
					</field>
					<field type="day">
						<displayName>دن</displayName>
						<relative type="0">آج</relative>
						<relative type="1">کل</relative>
						<relative type="2">پرسوں</relative>
						<relative type="3">ترسوں</relative>
						<relative type="-1">کل</relative>
						<relative type="-2">پرسوں</relative>
						<relative type="-3">ترسوں</relative>
					</field>
					<field type="weekday">
						<displayName>ہفتے کا دن</displayName>
					</field>
					<field type="dayperiod">
						<displayName>رات/صبح</displayName>
					</field>
					<field type="hour">
						<displayName>گھنٹہ</displayName>
					</field>
					<field type="minute">
						<displayName>منٹ</displayName>
					</field>
					<field type="second">
						<displayName>سیکنڈ</displayName>
					</field>
					<field type="zone">
						<displayName>زون</displayName>
					</field>
				</fields>
			</calendar>
			<calendar type="islamic">
				<months>
					<monthContext type="format">
						<monthWidth type="wide">
							<month type="1">محرم</month>
							<month type="2">صفر</month>
							<month type="3">ر بيع الاول</month>
							<month type="4">ر بيع الثانی</month>
							<month type="5">جمادی الاول</month>
							<month type="6">جمادی الثانی</month>
							<month type="7">رجب</month>
							<month type="8">شعبان</month>
							<month type="9">رمضان</month>
							<month type="10">شوال</month>
						</monthWidth>
					</monthContext>
				</months>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="wide">
							<quarter type="1">پہلی سہ ماہی</quarter>
							<quarter type="2">دوسری سہ ماہی</quarter>
							<quarter type="3">تيسری سہ ماہی</quarter>
							<quarter type="4">چوتهی سہ ماہی</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<eras>
					<eraNames>
						<era type="1">عيسوی سن</era>
					</eraNames>
					<eraAbbr>
						<era type="0">ق م</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
			<zone type="Etc/Unknown">
				<exemplarCity>Unknown</exemplarCity>
			</zone>
			<zone type="Europe/Andorra">
				<exemplarCity>انڈورا</exemplarCity>
			</zone>
			<zone type="America/Anguilla">
				<exemplarCity>انگویلا</exemplarCity>
			</zone>
			<zone type="America/Aruba">
				<exemplarCity>اروبا</exemplarCity>
			</zone>
			<zone type="America/Barbados">
				<exemplarCity>بار باڈوس</exemplarCity>
			</zone>
			<zone type="Asia/Bahrain">
				<exemplarCity>بحرین</exemplarCity>
			</zone>
			<zone type="Atlantic/Bermuda">
				<exemplarCity>برمودہ</exemplarCity>
			</zone>
			<zone type="Asia/Brunei">
				<exemplarCity>برونائی</exemplarCity>
			</zone>
			<zone type="America/Belize">
				<exemplarCity>بیلیز</exemplarCity>
			</zone>
			<zone type="America/Costa_Rica">
				<exemplarCity>کوسٹا ریکا</exemplarCity>
			</zone>
			<zone type="Atlantic/Cape_Verde">
				<exemplarCity>کیپ ورڈ</exemplarCity>
			</zone>
			<zone type="Africa/Djibouti">
				<exemplarCity>جبوتی</exemplarCity>
			</zone>
			<zone type="America/Dominica">
				<exemplarCity>ڈومینیکا</exemplarCity>
			</zone>
			<zone type="Pacific/Fiji">
				<exemplarCity>فجی</exemplarCity>
			</zone>
			<zone type="America/Grenada">
				<exemplarCity>غرناطہ</exemplarCity>
			</zone>
			<zone type="Europe/Gibraltar">
				<exemplarCity>جبرالٹر</exemplarCity>
			</zone>
			<zone type="America/Guadeloupe">
				<exemplarCity>گواڈیلوپ</exemplarCity>
			</zone>
			<zone type="America/Guatemala">
				<exemplarCity>گوئٹے مالا</exemplarCity>
			</zone>
			<zone type="Pacific/Guam">
				<exemplarCity>گوام</exemplarCity>
			</zone>
			<zone type="America/Guyana">
				<exemplarCity>گیانا</exemplarCity>
			</zone>
			<zone type="Asia/Hong_Kong">
				<exemplarCity>ہانگ کانگ</exemplarCity>
			</zone>
			<zone type="America/Jamaica">
				<exemplarCity>جمائیکا</exemplarCity>
			</zone>
			<zone type="Asia/Kuwait">
				<exemplarCity>کویت</exemplarCity>
			</zone>
			<zone type="Europe/Luxembourg">
				<exemplarCity>لیگزمبرگ</exemplarCity>
			</zone>
			<zone type="Europe/Monaco">
				<exemplarCity>موناکو</exemplarCity>
			</zone>
			<zone type="Asia/Macau">
				<exemplarCity>مکائو</exemplarCity>
			</zone>
			<zone type="America/Martinique">
				<exemplarCity>مارٹنیک</exemplarCity>
			</zone>
			<zone type="America/Montserrat">
				<exemplarCity>مونٹ سراٹ</exemplarCity>
			</zone>
			<zone type="Europe/Malta">
				<exemplarCity>مالٹا</exemplarCity>
			</zone>
			<zone type="Indian/Mauritius">
				<exemplarCity>ماریشس</exemplarCity>
			</zone>
			<zone type="Indian/Maldives">
				<exemplarCity>مالدیپ</exemplarCity>
			</zone>
			<zone type="Pacific/Nauru">
				<exemplarCity>نورو</exemplarCity>
			</zone>
			<zone type="Pacific/Niue">
				<exemplarCity>نیوئے</exemplarCity>
			</zone>
			<zone type="America/Panama">
				<exemplarCity>پانامہ</exemplarCity>
			</zone>
			<zone type="Pacific/Pitcairn">
				<exemplarCity>پٹ کیرن</exemplarCity>
			</zone>
			<zone type="America/Puerto_Rico">
				<exemplarCity>پورٹو ریکو</exemplarCity>
			</zone>
			<zone type="Pacific/Palau">
				<exemplarCity>پالائو</exemplarCity>
			</zone>
			<zone type="Asia/Qatar">
				<exemplarCity>قطر</exemplarCity>
			</zone>
			<zone type="Indian/Reunion">
				<exemplarCity>ری یونین</exemplarCity>
			</zone>
			<zone type="Asia/Singapore">
				<exemplarCity>سنگاپور</exemplarCity>
			</zone>
			<zone type="America/El_Salvador">
				<exemplarCity>ایلسلواڈور</exemplarCity>
			</zone>
			<zone type="Indian/Mayotte">
				<exemplarCity>مایوٹ</exemplarCity>
			</zone>
		</timeZoneNames>
	</dates>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>,</group>
			<list>;</list>
			<percentSign>%</percentSign>
			<nativeZeroDigit>0</nativeZeroDigit>
			<patternDigit>#</patternDigit>
			<plusSign>+</plusSign>
			<minusSign>-</minusSign>
			<exponential>ق</exponential>
			<perMille>‰</perMille>
			<infinity>∞</infinity>
			<nan>یہ عدد نہیں</nan>
		</symbols>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<scientificFormats>
			<scientificFormatLength>
				<scientificFormat>
					<pattern>#E0</pattern>
				</scientificFormat>
			</scientificFormatLength>
		</scientificFormats>
		<percentFormats>
			<percentFormatLength>
				<percentFormat>
					<pattern>#,##0%</pattern>
				</percentFormat>
			</percentFormatLength>
		</percentFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤#,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
			<unitPattern count="one">‏{0} {1} ‏</unitPattern>
		</currencyFormats>
		<currencies>
			<currency type="AED">
				<displayName>متحدہ عرب اماراتی درہم</displayName>
			</currency>
			<currency type="ARS">
				<displayName>ارجنٹائن پیسہ</displayName>
			</currency>
			<currency type="AUD">
				<displayName>آسٹریلین ڈالر</displayName>
			</currency>
			<currency type="BGN">
				<displayName>بلغارین لیو</displayName>
			</currency>
			<currency type="BOB">
				<displayName>بولیوین بولیویانو</displayName>
			</currency>
			<currency type="BRL">
				<displayName>برازیلی ریئل</displayName>
			</currency>
			<currency type="CAD">
				<displayName>کنیڈین ڈالر</displayName>
			</currency>
			<currency type="CHF">
				<displayName>سوئس فرانکس</displayName>
			</currency>
			<currency type="CLP">
				<displayName>چلّین پیسہ</displayName>
			</currency>
			<currency type="CNY">
				<displayName>یوآن رینمنبی</displayName>
			</currency>
			<currency type="COP">
				<displayName>کولمبین پیسہ</displayName>
			</currency>
			<currency type="CZK">
				<displayName>چیک کرونا</displayName>
			</currency>
			<currency type="DEM">
				<displayName>ڈچ مارکس</displayName>
			</currency>
			<currency type="DKK">
				<displayName>ڈنمارک کرونر</displayName>
			</currency>
			<currency type="EEK">
				<displayName>ایسٹونین کرون</displayName>
			</currency>
			<currency type="EGP">
				<displayName>مصری پائونڈ</displayName>
			</currency>
			<currency type="EUR">
				<displayName>یورو</displayName>
			</currency>
			<currency type="FRF">
				<displayName>فرانسیسی فرانک</displayName>
			</currency>
			<currency type="GBP">
				<displayName>انگلستانی پاونڈ سٹرلنگ</displayName>
			</currency>
			<currency type="HKD">
				<displayName>ھانگ کانگ ڈالر</displayName>
			</currency>
			<currency type="HRK">
				<displayName>کروشین کونا</displayName>
			</currency>
			<currency type="HUF">
				<displayName>ہنگرین فورنٹ</displayName>
			</currency>
			<currency type="IDR">
				<displayName>انڈونیشین روپیہ</displayName>
			</currency>
			<currency type="ILS">
				<displayName>اسرائیلی شیکل</displayName>
			</currency>
			<currency type="INR">
				<displayName>انڈین روپیہ</displayName>
			</currency>
			<currency type="JPY">
				<displayName>جاپانی ین</displayName>
			</currency>
			<currency type="KRW">
				<displayName>جنوبی کوریائی جیتا۔</displayName>
			</currency>
			<currency type="LTL">
				<displayName>لیتھوانی لیٹاس</displayName>
			</currency>
			<currency type="MAD">
				<displayName>مراکشی درہم</displayName>
			</currency>
			<currency type="MXN">
				<displayName>میکسیکی پیسہ</displayName>
			</currency>
			<currency type="MYR">
				<displayName>ملائیشین رنگٹ</displayName>
			</currency>
			<currency type="NOK">
				<displayName>ناروے کرونر</displayName>
			</currency>
			<currency type="NZD">
				<displayName>نیوزی لینڈ ڈالر</displayName>
			</currency>
			<currency type="PEN">
				<displayName>پیروین نیووسول</displayName>
			</currency>
			<currency type="PHP">
				<displayName>فلپائینی پیسہ</displayName>
			</currency>
			<currency type="PKR">
				<displayName>پاکستانی روپیہ</displayName>
				<symbol>روپے</symbol>
			</currency>
			<currency type="PLN">
				<displayName>پولش نیو زلوٹی</displayName>
			</currency>
			<currency type="RON">
				<displayName>نیا رومانیائی لیو</displayName>
			</currency>
			<currency type="RSD">
				<displayName>سربین دینار</displayName>
			</currency>
			<currency type="RUB">
				<displayName>روسی روبل</displayName>
			</currency>
			<currency type="SAR">
				<displayName>سعودی ریال</displayName>
			</currency>
			<currency type="SEK">
				<displayName>سویڈن کرونر</displayName>
			</currency>
			<currency type="SGD">
				<displayName>سنگا پور ڈالر</displayName>
			</currency>
			<currency type="SIT">
				<displayName>سلوانین ٹولر</displayName>
			</currency>
			<currency type="SKK">
				<displayName>سلووک کرونا</displayName>
			</currency>
			<currency type="THB">
				<displayName>تھائی باہت</displayName>
			</currency>
			<currency type="TRL">
				<displayName>ترکی لیرا</displayName>
			</currency>
			<currency type="TRY">
				<displayName>نیا ترکی لیرا</displayName>
			</currency>
			<currency type="TWD">
				<displayName>نیو تائیوان ڈالر</displayName>
			</currency>
			<currency type="USD">
				<displayName>امریکی ڈالر</displayName>
				<symbol>ڈالر</symbol>
			</currency>
			<currency type="VEB">
				<displayName>وینزویلا بولیور</displayName>
			</currency>
			<currency type="ZAR">
				<displayName>جنوبی افریقی رانڈ</displayName>
			</currency>
		</currencies>
	</numbers>
	<posix>
		<messages>
			<yesstr>yes:y</yesstr>
			<nostr>no:n</nostr>
		</messages>
	</posix>
</ldml>
PKpG[o^��nnLocale/Data/syr.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.40 $"/>
		<generation date="$Date: 2008/06/15 08:09:47 $"/>
		<language type="syr"/>
	</identity>
	<localeDisplayNames>
		<languages>
			<language type="syr">ܣܘܪܝܝܐ</language>
		</languages>
		<territories>
			<territory type="SY">ܣܘܪܝܝܐ</territory>
		</territories>
	</localeDisplayNames>
	<layout>
		<orientation characters="right-to-left"/>
	</layout>
	<characters>
		<exemplarCharacters>[ܑ ܰ-݊ ܃-܉ ܁ ܂ ܀ ܊-܍ ܐ ܒ-ܔ ܖ ܕ ܗ-ܬ]</exemplarCharacters>
		<exemplarCharacters type="auxiliary">[܏\u200C \u200D ܭ-ܯ ݍ-ݏ]</exemplarCharacters>
	</characters>
	<dates>
		<calendars>
			<calendar type="gregorian">
				<months>
					<monthContext type="format">
						<monthWidth type="abbreviated">
							<month type="1">܏ܟܢ ܏ܒ</month>
							<month type="2">ܫܒܛ</month>
							<month type="3">ܐܕܪ</month>
							<month type="4">ܢܝܣܢ</month>
							<month type="5">ܐܝܪ</month>
							<month type="6">ܚܙܝܪܢ</month>
							<month type="7">ܬܡܘܙ</month>
							<month type="8">ܐܒ</month>
							<month type="9">ܐܝܠܘܠ</month>
							<month type="10">܏ܬܫ ܏ܐ</month>
							<month type="11">܏ܬܫ ܏ܒ</month>
							<month type="12">܏ܟܢ ܏ܐ</month>
						</monthWidth>
						<monthWidth type="wide">
							<month type="1">܏ܟܢ ܏ܒ</month>
							<month type="2">ܫܒܛ</month>
							<month type="3">ܐܕܪ</month>
							<month type="4">ܢܝܣܢ</month>
							<month type="5">ܐܝܪ</month>
							<month type="6">ܚܙܝܪܢ</month>
							<month type="7">ܬܡܘܙ</month>
							<month type="8">ܐܒ</month>
							<month type="9">ܐܝܠܘܠ</month>
							<month type="10">܏ܬܫ ܏ܐ</month>
							<month type="11">܏ܬܫ ܏ܒ</month>
							<month type="12">܏ܟܢ ܏ܐ</month>
						</monthWidth>
					</monthContext>
					<monthContext type="stand-alone">
						<monthWidth type="narrow">
							<month type="1">1</month>
							<month type="2">2</month>
							<month type="3">3</month>
							<month type="4">4</month>
							<month type="5">5</month>
							<month type="6">6</month>
							<month type="7">7</month>
							<month type="8">8</month>
							<month type="9">9</month>
							<month type="10">10</month>
							<month type="11">11</month>
							<month type="12">12</month>
						</monthWidth>
					</monthContext>
				</months>
				<days>
					<dayContext type="format">
						<dayWidth type="abbreviated">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
						<dayWidth type="wide">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
					<dayContext type="stand-alone">
						<dayWidth type="narrow">
							<day type="sun">1</day>
							<day type="mon">2</day>
							<day type="tue">3</day>
							<day type="wed">4</day>
							<day type="thu">5</day>
							<day type="fri">6</day>
							<day type="sat">7</day>
						</dayWidth>
					</dayContext>
				</days>
				<quarters>
					<quarterContext type="format">
						<quarterWidth type="abbreviated">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
						<quarterWidth type="wide">
							<quarter type="1">Q1</quarter>
							<quarter type="2">Q2</quarter>
							<quarter type="3">Q3</quarter>
							<quarter type="4">Q4</quarter>
						</quarterWidth>
					</quarterContext>
				</quarters>
				<am>AM</am>
				<pm>PM</pm>
				<eras>
					<eraAbbr>
						<era type="0">BCE</era>
						<era type="1">CE</era>
					</eraAbbr>
				</eras>
				<dateFormats>
					<dateFormatLength type="full">
						<dateFormat>
							<pattern>dd MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="long">
						<dateFormat>
							<pattern>dd MMMM, yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="medium">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
					<dateFormatLength type="short">
						<dateFormat>
							<pattern>dd/MM/yyyy</pattern>
						</dateFormat>
					</dateFormatLength>
				</dateFormats>
				<timeFormats>
					<timeFormatLength type="full">
						<timeFormat>
							<pattern>h:mm:ss a v</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="long">
						<timeFormat>
							<pattern>h:mm:ss a z</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="medium">
						<timeFormat>
							<pattern>h:mm:ss</pattern>
						</timeFormat>
					</timeFormatLength>
					<timeFormatLength type="short">
						<timeFormat>
							<pattern>h:mm</pattern>
						</timeFormat>
					</timeFormatLength>
				</timeFormats>
				<dateTimeFormats>
					<dateTimeFormatLength>
						<dateTimeFormat>
							<pattern>{1} {0}</pattern>
						</dateTimeFormat>
					</dateTimeFormatLength>
					<availableFormats>
						<dateFormatItem id="MMMMdd">dd MMMM</dateFormatItem>
						<dateFormatItem id="MMdd">dd/MM</dateFormatItem>
						<dateFormatItem id="mmss">mm:ss</dateFormatItem>
						<dateFormatItem id="yyQ">Q yy</dateFormatItem>
						<dateFormatItem id="yyyyMM">MM/yyyy</dateFormatItem>
						<dateFormatItem id="yyyyMMMM">MMMM, yyyy</dateFormatItem>
					</availableFormats>
				</dateTimeFormats>
			</calendar>
		</calendars>
		<timeZoneNames>
			<hourFormat>+HH:mm;-HH:mm</hourFormat>
			<gmtFormat>GMT{0}</gmtFormat>
			<regionFormat>{0}</regionFormat>
		</timeZoneNames>
	</dates>
	<numbers>
		<decimalFormats>
			<decimalFormatLength>
				<decimalFormat>
					<pattern>#,##0.###;#,##0.###-</pattern>
				</decimalFormat>
			</decimalFormatLength>
		</decimalFormats>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00;¤ #,##0.00-</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
		<currencies>
			<currency type="SYP">
				<symbol>ل.س.‏</symbol>
			</currency>
		</currencies>
	</numbers>
</ldml>

PKpG[�D��OOLocale/Data/sh_BA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.21 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="sh"/>
		<territory type="BA"/>
	</identity>
	<alias source="sr_Latn_BA" path="//ldml"/>
</ldml>
PKpG[S�)�##Locale/Data/nr_ZA.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.13 $"/>
		<generation date="$Date: 2008/05/28 15:49:34 $"/>
		<language type="nr"/>
		<territory type="ZA"/>
	</identity>
</ldml>
PKpG[lw�..Locale/Data/de_LI.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.42 $"/>
		<generation date="$Date: 2008/06/15 08:09:45 $"/>
		<language type="de"/>
		<territory type="LI"/>
	</identity>
	<numbers>
		<symbols>
			<decimal>.</decimal>
			<group>'</group>
		</symbols>
		<currencyFormats>
			<currencyFormatLength>
				<currencyFormat>
					<pattern>¤ #,##0.00</pattern>
				</currencyFormat>
			</currencyFormatLength>
		</currencyFormats>
	</numbers>
</ldml>

PKpG[�yB�$$Locale/Data/syr_SY.xmlnu&1i�<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ldml SYSTEM "http://www.unicode.org/cldr/dtd/1.6/ldml.dtd">
<ldml>
	<identity>
		<version number="$Revision: 1.38 $"/>
		<generation date="$Date: 2008/05/28 15:49:36 $"/>
		<language type="syr"/>
		<territory type="SY"/>
	</identity>
</ldml>
PKpG[P1��rrLocale/Math.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Math.php 8584 2008-03-06 18:36:46Z thomas $
 */


/**
 * Utility class for proxying math function to bcmath functions, if present,
 * otherwise to PHP builtin math operators, with limited detection of overflow conditions.
 * Sampling of PHP environments and platforms suggests that at least 80% to 90% support bcmath.
 * Thus, this file should be as light as possible.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Locale_Math
{
    // support unit testing without using bcmath functions
    public static $_bcmathDisabled = false;

    public static $add   = 'bcadd';
    public static $sub   = 'bcsub';
    public static $pow   = 'bcpow';
    public static $mul   = 'bcmul';
    public static $div   = 'bcdiv';
    public static $comp  = 'bccomp';
    public static $sqrt  = 'bcsqrt';
    public static $mod   = 'bcmod';
    public static $scale = 'bcscale';

    public static function isBcmathDisabled()
    {
        return self::$_bcmathDisabled;
    }

    /**
     * Surprisingly, the results of this implementation of round()
     * prove better than the native PHP round(). For example, try:
     *   round(639.795, 2);
     *   round(267.835, 2);
     *   round(0.302515, 5);
     *   round(0.36665, 4);
     * then try:
     *   Zend_Locale_Math::round('639.795', 2);
     */
    public static function round($op1, $precision = 0)
    {
        if (self::$_bcmathDisabled) {
            return self::normalize(round($op1, $precision));
        }
        $op1 = trim(self::normalize($op1));
        $length = strlen($op1);
        if (($decPos = strpos($op1, '.')) === false) {
            $op1 .= '.0';
            $decPos = $length;
            $length += 2;
        }
        if ($precision < 0 && abs($precision) > $decPos) {
            return '0';
        }
        $digitsBeforeDot = $length - ($decPos + 1);
        if ($precision >= ($length - ($decPos + 1))) {
            return $op1;
        }
        if ($precision === 0) {
            $triggerPos = 1;
            $roundPos   = -1;
        } elseif ($precision > 0) {
            $triggerPos = $precision + 1;
            $roundPos   = $precision;
        } else {
            $triggerPos = $precision;
            $roundPos   = $precision -1;
        }
        $triggerDigit = $op1[$triggerPos + $decPos];
        if ($precision < 0) {
            // zero fill digits to the left of the decimal place
            $op1 = substr($op1, 0, $decPos + $precision) . str_pad('', abs($precision), '0');
        }
        if ($triggerDigit >= '5') {
            if ($roundPos + $decPos == -1) {
                return str_pad('1', $decPos + 1, '0');
            }
            $roundUp = str_pad('', $length, '0');
            $roundUp[$decPos] = '.';
            $roundUp[$roundPos + $decPos] = '1';
            return bcadd($op1, $roundUp, $precision);
        } elseif ($precision >= 0) {
            return substr($op1, 0, $decPos + ($precision ? $precision + 1: 0));
        }
        return (string) $op1;
    }

    /**
     * Normalizes an input to standard english notation
     * Fixes a problem of BCMath with setLocale which is PHP related
     *
     * @param   integer  $value  Value to normalize
     * @return  string           Normalized string without BCMath problems
     */
    public static function normalize($value)
    {
        $convert = localeconv();
        $value = str_replace($convert['thousands_sep'], "",(string) $value);
        $value = str_replace($convert['positive_sign'], "", $value);
        $value = str_replace($convert['decimal_point'], ".",$value);
        if (!empty($convert['negative_sign']) and (strpos($value, $convert['negative_sign']))) {
            $value = str_replace($convert['negative_sign'], "", $value);
            $value = "-" . $value;
        }
        return $value;
    }

    /**
     * Localizes an input from standard english notation
     * Fixes a problem of BCMath with setLocale which is PHP related
     *
     * @param   integer  $value  Value to normalize
     * @return  string           Normalized string without BCMath problems
     */
    public static function localize($value)
    {
        $convert = localeconv();
        $value = str_replace(".", $convert['decimal_point'], (string) $value);
        if (!empty($convert['negative_sign']) and (strpos($value, "-"))) {
            $value = str_replace("-", $convert['negative_sign'], $value);
        }
        return $value;
    }
}

if ((defined('TESTS_ZEND_LOCALE_BCMATH_ENABLED') && !TESTS_ZEND_LOCALE_BCMATH_ENABLED)
    || !extension_loaded('bcmath')) {
    require_once 'Zend/Locale/Math/PhpMath.php';
}
PKpG[Y������Locale/Data.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Locale
 * @subpackage Data
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Data.php 12057 2008-10-21 17:19:43Z thomas $
 */

/**
 * include needed classes
 */
require_once 'Zend/Locale.php';

/**
 * Locale data reader, handles the CLDR
 *
 * @category   Zend
 * @package    Zend_Locale
 * @subpackage Data
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Locale_Data
{
    /**
     * Locale files
     *
     * @var ressource
     * @access private
     */
    private static $_ldml = array();

    /**
     * List of values which are collected
     *
     * @var array
     * @access private
     */
    private static $_list = array();

    /**
     * Internal cache for ldml values
     * 
     * @var Zend_Cache_Core
     * @access private
     */
    private static $_cache = null;

    /**
     * Read the content from locale
     *
     * Can be called like:
     * <ldml>
     *     <delimiter>test</delimiter>
     *     <second type='myone'>content</second>
     *     <second type='mysecond'>content2</second>
     *     <third type='mythird' />
     * </ldml>
     *
     * Case 1: _readFile('ar','/ldml/delimiter')             -> returns [] = test
     * Case 1: _readFile('ar','/ldml/second[@type=myone]')   -> returns [] = content
     * Case 2: _readFile('ar','/ldml/second','type')         -> returns [myone] = content; [mysecond] = content2
     * Case 3: _readFile('ar','/ldml/delimiter',,'right')    -> returns [right] = test
     * Case 4: _readFile('ar','/ldml/third','type','myone')  -> returns [myone] = mythird
     *
     * @param  string $locale
     * @param  string $path
     * @param  string $attribute
     * @param  string $value
     * @access private
     * @return array
     */
    private static function _readFile($locale, $path, $attribute, $value, $temp)
    {
        // without attribute - read all values
        // with attribute    - read only this value
        if (!empty(self::$_ldml[(string) $locale])) {

            $result = self::$_ldml[(string) $locale]->xpath($path);
            if (!empty($result)) {
                foreach ($result as &$found) {

                    if (empty($value)) {

                        if (empty($attribute)) {
                            // Case 1
                            $temp[] = (string) $found;
                        } else if (empty($temp[(string) $found[$attribute]])){
                            // Case 2
                            $temp[(string) $found[$attribute]] = (string) $found;
                        }

                    } else if (empty ($temp[$value])) {

                        if (empty($attribute)) {
                            // Case 3
                            $temp[$value] = (string) $found;
                        } else {
                            // Case 4
                            $temp[$value] = (string) $found[$attribute];
                        }

                    }
                }
            }
        }
        return $temp;
    }

    /**
     * Find possible routing to other path or locale
     *
     * @param  string $locale
     * @param  string $path
     * @param  string $attribute
     * @param  string $value
     * @param  array  $temp
     * @throws Zend_Locale_Exception
     * @access private
     */
    private static function _findRoute($locale, $path, $attribute, $value, &$temp)
    {
        // load locale file if not already in cache
        // needed for alias tag when referring to other locale
        if (empty(self::$_ldml[(string) $locale])) {
            $filename = dirname(__FILE__) . '/Data/' . $locale . '.xml';
            if (!file_exists($filename)) {
                require_once 'Zend/Locale/Exception.php';
                throw new Zend_Locale_Exception("Missing locale file '$filename' for '$locale' locale.");
            }

            self::$_ldml[(string) $locale] = simplexml_load_file($filename);
        }

        // search for 'alias' tag in the search path for redirection
        $search = '';
        $tok = strtok($path, '/');

        // parse the complete path
        if (!empty(self::$_ldml[(string) $locale])) {
            while ($tok !== false) {
                $search .=  '/' . $tok;
                if (strpos($search, '[@') !== false) {
                    while (strrpos($search, '[@') > strrpos($search, ']')) {
                        $tok = strtok('/');
                        if (empty($tok)) {
                            $search .= '/';
                        }
                        $search = $search . '/' . $tok;
                    }
                }
                $result = self::$_ldml[(string) $locale]->xpath($search . '/alias');

                // alias found
                if (!empty($result)) {

                    $source = $result[0]['source'];
                    $newpath = $result[0]['path'];

                    // new path - path //ldml is to ignore
                    if ($newpath != '//ldml') {
                        // other path - parse to make real path

                        while (substr($newpath,0,3) == '../') {
                            $newpath = substr($newpath, 3);
                            $search = substr($search, 0, strrpos($search, '/'));
                        }

                        // truncate ../ to realpath otherwise problems with alias
                        $path = $search . '/' . $newpath;
                        while (($tok = strtok('/'))!== false) {
                            $path = $path . '/' . $tok;
                        }
                    }

                    // reroute to other locale
                    if ($source != 'locale') {
                        $locale = $source;
                    }

                    $temp = self::_getFile($locale, $path, $attribute, $value, $temp);
                    return false;
                }

                $tok = strtok('/');
            }
        }
        return true;
    }


    /**
     * Read the right LDML file
     *
     * @param  string $locale
     * @param  string $path
     * @param  string $attribute
     * @param  string $value
     * @access private
     */
    private static function _getFile($locale, $path, $attribute = false, $value = false, $temp = array())
    {
        $result = self::_findRoute($locale, $path, $attribute, $value, $temp);
        if ($result) {
            $temp = self::_readFile($locale, $path, $attribute, $value, $temp);
        }

        // parse required locales reversive
        // example: when given zh_Hans_CN
        // 1. -> zh_Hans_CN
        // 2. -> zh_Hans
        // 3. -> zh
        // 4. -> root
        if (($locale != 'root') && ($result)) {
            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
            if (!empty($locale)) {
                $temp = self::_getFile($locale, $path, $attribute, $value, $temp);
            } else {
                $temp = self::_getFile('root', $path, $attribute, $value, $temp);
            }
        }
        return $temp;
    }


    /**
     * Find the details for supplemental calendar datas
     *
     * @param  string $locale Locale for Detaildata
     * @param  array  $list   List to search
     * @return string         Key for Detaildata
     */
    private static function _calendarDetail($locale, $list)
    {
        $ret = "001";
        foreach ($list as $key => $value) {
            if (strpos($locale, '_') !== false) {
                $locale = substr($locale, strpos($locale, '_') + 1);
            }
            if (strpos($key, $locale) !== false) {
                $ret = $key;
                break;
            }
        }
        return $ret;
    }

    /**
     * Internal function for checking the locale
     *
     * @param string|Zend_Locale $locale Locale to check
     * @return string
     */
    private static function _checkLocale($locale)
    {
        if (empty($locale)) {
            $locale = new Zend_Locale();
        }

        if (!(Zend_Locale::isLocale((string) $locale, null, false))) {
            require_once 'Zend/Locale/Exception.php';
            throw new Zend_Locale_Exception("Locale (" . (string) $locale . ") is a unknown locale");
        }

        return (string) $locale;
    }

    /**
     * Read the LDML file, get a array of multipath defined value
     *
     * @param  string $locale
     * @param  string $path
     * @param  string $value
     * @return array
     * @access public
     */
    public static function getList($locale, $path, $value = false)
    {
        $locale = self::_checkLocale($locale);
        if (isset(self::$_cache)) {
            $val = $value;
            if (is_array($value)) {
                $val = implode('_' , $value);
            }

            $val = urlencode($val);
            $id = strtr('Zend_LocaleL_' . $locale . '_' . $path . '_' . $val, array('-' => '_', '%' => '_', '+' => '_'));
            if ($result = self::$_cache->load($id)) {
                return unserialize($result);
            }
        }

        $temp = array();
        switch(strtolower($path)) {
            case 'language':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/languages/language', 'type');
                break;

            case 'script':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/scripts/script', 'type');
                break;

            case 'territory':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory', 'type');
                if ($value === 1) {
                    foreach($temp as $key => $value) {
                        if ((is_numeric($key) === false) and ($key != 'QO') and ($key != 'QU')) {
                            unset($temp[$key]);
                        }
                    }
                } else if ($value === 2) {
                    foreach($temp as $key => $value) {
                        if (is_numeric($key) or ($key == 'QO') or ($key == 'QU')) {
                            unset($temp[$key]);
                        }
                    }
                }
                break;

            case 'variant':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/variants/variant', 'type');
                break;

            case 'key':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/keys/key', 'type');
                break;

            case 'type':
                if (empty($type)) {
                    $temp = self::_getFile($locale, '/ldml/localeDisplayNames/types/type', 'type');
                } else {
                    if (($value == 'calendar') or
                        ($value == 'collation') or
                        ($value == 'currency')) {
                        $temp = self::_getFile($locale, '/ldml/localeDisplayNames/types/type[@key=\'' . $value . '\']', 'type');
                    } else {
                        $temp = self::_getFile($locale, '/ldml/localeDisplayNames/types/type[@type=\'' . $value . '\']', 'type');
                    }
                }
                break;

            case 'layout':
                $temp  = self::_getFile($locale, '/ldml/layout/orientation',                 'lines',      'lines');
                $temp += self::_getFile($locale, '/ldml/layout/orientation',                 'characters', 'characters');
                $temp += self::_getFile($locale, '/ldml/layout/inList',                      '',           'inList');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'currency\']',  '',           'currency');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'dayWidth\']',  '',           'dayWidth');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'fields\']',    '',           'fields');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'keys\']',      '',           'keys');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'languages\']', '',           'languages');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'long\']',      '',           'long');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'measurementSystemNames\']', '', 'measurementSystemNames');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'monthWidth\']',   '',        'monthWidth');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'quarterWidth\']', '',        'quarterWidth');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'scripts\']',   '',           'scripts');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'territories\']',  '',        'territories');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'types\']',     '',           'types');
                $temp += self::_getFile($locale, '/ldml/layout/inText[@type=\'variants\']',  '',           'variants');
                break;

            case 'characters':
                $temp  = self::_getFile($locale, '/ldml/characters/exemplarCharacters',                           '', 'characters');
                $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\'auxiliary\']',      '', 'auxiliary');
                $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\'currencySymbol\']', '', 'currencySymbol');
                break;

            case 'delimiters':
                $temp  = self::_getFile($locale, '/ldml/delimiters/quotationStart',          '', 'quoteStart');
                $temp += self::_getFile($locale, '/ldml/delimiters/quotationEnd',            '', 'quoteEnd');
                $temp += self::_getFile($locale, '/ldml/delimiters/alternateQuotationStart', '', 'quoteStartAlt');
                $temp += self::_getFile($locale, '/ldml/delimiters/alternateQuotationEnd',   '', 'quoteEndAlt');
                break;

            case 'measurement':
                $temp  = self::_getFile('supplementalData', '/supplementalData/measurementData/measurementSystem[@type=\'metric\']', 'territories', 'metric');
                $temp += self::_getFile('supplementalData', '/supplementalData/measurementData/measurementSystem[@type=\'US\']',     'territories', 'US');
                $temp += self::_getFile('supplementalData', '/supplementalData/measurementData/paperSize[@type=\'A4\']',             'territories', 'A4');
                $temp += self::_getFile('supplementalData', '/supplementalData/measurementData/paperSize[@type=\'US-Letter\']',      'territories', 'US-Letter');
                break;

            case 'months':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/default', 'choice', 'context');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/default', 'choice', 'default');
                $temp['format']['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'abbreviated\']/month', 'type');
                $temp['format']['narrow']      = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'narrow\']/month', 'type');
                $temp['format']['wide']        = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/monthWidth[@type=\'wide\']/month', 'type');
                $temp['stand-alone']['abbreviated']  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'stand-alone\']/monthWidth[@type=\'abbreviated\']/month', 'type');
                $temp['stand-alone']['narrow']       = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'stand-alone\']/monthWidth[@type=\'narrow\']/month', 'type');
                $temp['stand-alone']['wide']         = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'stand-alone\']/monthWidth[@type=\'wide\']/month', 'type');
                break;

            case 'month':
                if (empty($value)) {
                    $value = array("gregorian", "format", "wide");
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/months/monthContext[@type=\'' . $value[1] . '\']/monthWidth[@type=\'' . $value[2] . '\']/month', 'type');
                break;

            case 'days':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/default', 'choice', 'context');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/default', 'choice', 'default');
                $temp['format']['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'abbreviated\']/day', 'type');
                $temp['format']['narrow']      = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'narrow\']/day', 'type');
                $temp['format']['wide']        = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/dayWidth[@type=\'wide\']/day', 'type');
                $temp['stand-alone']['abbreviated']  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'stand-alone\']/dayWidth[@type=\'abbreviated\']/day', 'type');
                $temp['stand-alone']['narrow']       = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'stand-alone\']/dayWidth[@type=\'narrow\']/day', 'type');
                $temp['stand-alone']['wide']         = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'stand-alone\']/dayWidth[@type=\'wide\']/day', 'type');
                break;

            case 'day':
                if (empty($value)) {
                    $value = array("gregorian", "format", "wide");
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/days/dayContext[@type=\'' . $value[1] . '\']/dayWidth[@type=\'' . $value[2] . '\']/day', 'type');
                break;

            case 'week':
                $minDays   = self::_calendarDetail($locale, self::_getFile('supplementalData', '/supplementalData/weekData/minDays', 'territories'));
                $firstDay  = self::_calendarDetail($locale, self::_getFile('supplementalData', '/supplementalData/weekData/firstDay', 'territories'));
                $weekStart = self::_calendarDetail($locale, self::_getFile('supplementalData', '/supplementalData/weekData/weekendStart', 'territories'));
                $weekEnd   = self::_calendarDetail($locale, self::_getFile('supplementalData', '/supplementalData/weekData/weekendEnd', 'territories'));

                $temp  = self::_getFile('supplementalData', "/supplementalData/weekData/minDays[@territories='" . $minDays . "']", 'count', 'minDays');
                $temp += self::_getFile('supplementalData', "/supplementalData/weekData/firstDay[@territories='" . $firstDay . "']", 'day', 'firstDay');
                $temp += self::_getFile('supplementalData', "/supplementalData/weekData/weekendStart[@territories='" . $weekStart . "']", 'day', 'weekendStart');
                $temp += self::_getFile('supplementalData', "/supplementalData/weekData/weekendEnd[@territories='" . $weekEnd . "']", 'day', 'weekendEnd');
                break;

            case 'quarters':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp['format']['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'format\']/quarterWidth[@type=\'abbreviated\']/quarter', 'type');
                $temp['format']['narrow']      = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'format\']/quarterWidth[@type=\'narrow\']/quarter', 'type');
                $temp['format']['wide']        = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'format\']/quarterWidth[@type=\'wide\']/quarter', 'type');
                $temp['stand-alone']['abbreviated']  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'stand-alone\']/quarterWidth[@type=\'abbreviated\']/quarter', 'type');
                $temp['stand-alone']['narrow']       = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'stand-alone\']/quarterWidth[@type=\'narrow\']/quarter', 'type');
                $temp['stand-alone']['wide']         = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/quarters/quarterContext[@type=\'stand-alone\']/quarterWidth[@type=\'wide\']/quarter', 'type');
                break;

            case 'quarter':
                if (empty($value)) {
                    $value = array("gregorian", "format", "wide");
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/quarters/quarterContext[@type=\'' . $value[1] . '\']/quarterWidth[@type=\'' . $value[2] . '\']/quarter', 'type');
                break;

            case 'eras':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp['names']       = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/eras/eraNames/era', 'type');
                $temp['abbreviated'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/eras/eraAbbr/era', 'type');
                $temp['narrow']      = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/eras/eraNarrow/era', 'type');
                break;

            case 'era':
                if (empty($value)) {
                    $value = array("gregorian", "Abbr");
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/eras/era' . $value[1] . '/era', 'type');
                break;

            case 'date':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/dateFormatLength[@type=\'full\']/dateFormat/pattern', '', 'full');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/dateFormatLength[@type=\'long\']/dateFormat/pattern', '', 'long');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/dateFormatLength[@type=\'medium\']/dateFormat/pattern', '', 'medium');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/dateFormatLength[@type=\'short\']/dateFormat/pattern', '', 'short');
                break;

            case 'time':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp  = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/timeFormatLength[@type=\'full\']/timeFormat/pattern', '', 'full');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/timeFormatLength[@type=\'long\']/timeFormat/pattern', '', 'long');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/timeFormatLength[@type=\'medium\']/timeFormat/pattern', '', 'medium');
                $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/timeFormatLength[@type=\'short\']/timeFormat/pattern', '', 'short');
                break;

            case 'datetime':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateTimeFormats/availableFormats/dateFormatItem', 'id');
                break;
                
            case 'field':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp2 = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field', 'type');
                foreach ($temp2 as $key => $keyvalue) {
                    $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field[@type=\'' . $key . '\']/displayName', '', $key);
                }
                break;

            case 'relative':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field/relative', 'type');
                break;

            case 'symbols':
                $temp  = self::_getFile($locale, '/ldml/numbers/symbols/decimal',         '', 'decimal');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/group',           '', 'group');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/list',            '', 'list');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/percentSign',     '', 'percent');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/nativeZeroDigit', '', 'zero');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/patternDigit',    '', 'pattern');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/plusSign',        '', 'plus');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/minusSign',       '', 'minus');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/exponential',     '', 'exponent');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/perMille',        '', 'mille');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/infinity',        '', 'infinity');
                $temp += self::_getFile($locale, '/ldml/numbers/symbols/nan',             '', 'nan');
                break;

            case 'nametocurrency':
                $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/displayName', '', $key);
                }
                break;

            case 'currencytoname':
                $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
                foreach ($_temp as $key => $keyvalue) {
                    $val = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/displayName', '', $key);
                    if (!isset($val[$key])) {
                        continue;
                    }
                    if (!isset($temp[$val[$key]])) {
                        $temp[$val[$key]] = $key;
                    } else {
                        $temp[$val[$key]] .= " " . $key;
                    }
                }
                break;

            case 'currencysymbol':
                $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/symbol', '', $key);
                }
                break;

            case 'question':
                $temp  = self::_getFile($locale, '/ldml/posix/messages/yesstr',  '', 'yes');
                $temp += self::_getFile($locale, '/ldml/posix/messages/nostr',   '', 'no');
                break;

            case 'currencyfraction':
                $_temp = self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info', 'iso4217');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $key . '\']', 'digits', $key);
                }
                break;

            case 'currencyrounding':
                $_temp = self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info', 'iso4217');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $key . '\']', 'rounding', $key);
                }
                break;

            case 'currencytoregion':
                $_temp = self::_getFile('supplementalData', '/supplementalData/currencyData/region', 'iso3166');
                foreach ($_temp as $key => $keyvalue) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $key . '\']/currency', 'iso4217', $key);
                }
                break;

            case 'regiontocurrency':
                $_temp = self::_getFile('supplementalData', '/supplementalData/currencyData/region', 'iso3166');
                foreach ($_temp as $key => $keyvalue) {
                    $val = self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $key . '\']/currency', 'iso4217', $key);
                    if (!isset($val[$key])) {
                        continue;
                    }
                    if (!isset($temp[$val[$key]])) {
                        $temp[$val[$key]] = $key;
                    } else {
                        $temp[$val[$key]] .= " " . $key;
                    }
                }
                break;

            case 'regiontoterritory':
                $_temp = self::_getFile('supplementalData', '/supplementalData/territoryContainment/group', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $key . '\']', 'contains', $key);
                }
                break;

            case 'territorytoregion':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/territoryContainment/group', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $key . '\']', 'contains', $key);
                }
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'scripttolanguage':
                $_temp = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'scripts', $key);
                    if (empty($temp[$key])) {
                        unset($temp[$key]);
                    }
                }
                break;

            case 'languagetoscript':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'scripts', $key);
                }
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if (empty($found3)) {
                            continue;
                        }
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'territorytolanguage':
                $_temp = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'territories', $key);
                    if (empty($temp[$key])) {
                        unset($temp[$key]);
                    }
                }
                break;

            case 'languagetoterritory':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'territories', $key);
                }
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if (empty($found3)) {
                            continue;
                        }
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'timezonetowindows':
                $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone', 'other');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@other=\'' . $key . '\']', 'type', $key);
                }
                break;

            case 'windowstotimezone':
                $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@type=\'' .$key . '\']', 'other', $key);
                }
                break;

            case 'territorytotimezone':
                $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem', 'type');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@type=\'' . $key . '\']', 'territory', $key);
                }
                break;

            case 'timezonetoterritory':
                $_temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem', 'territory');
                foreach ($_temp as $key => $found) {
                    $temp += self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@territory=\'' . $key . '\']', 'type', $key);
                }
                break;

            case 'citytotimezone':
                $_temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
                foreach($_temp as $key => $found) {
                    $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/exemplarCity', '', $key);
                }
                break;

            case 'timezonetocity':
                $_temp  = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
                $temp = array();
                foreach($_temp as $key => $found) {
                    $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/exemplarCity', '', $key);
                    if (!empty($temp[$key])) {
                        $temp[$temp[$key]] = $key;
                    }
                    unset($temp[$key]);
                }
                break;

            default :
                require_once 'Zend/Locale/Exception.php';
                throw new Zend_Locale_Exception("Unknown list ($path) for parsing locale data.");
                break;
        }

        if (isset(self::$_cache)) {
            self::$_cache->save( serialize($temp), $id);
        }

        return $temp;
    }

    /**
     * Read the LDML file, get a single path defined value
     *
     * @param  string $locale
     * @param  string $path
     * @param  string $value
     * @return string
     * @access public
     */
    public static function getContent($locale, $path, $value = false)
    {
        $locale = self::_checkLocale($locale);

        if (isset(self::$_cache)) {
            $val = $value;
            if (is_array($value)) {
                $val = implode('_' , $value);
            }
            $val = urlencode($val);
            $id = strtr('Zend_LocaleC_' . $locale . '_' . $path . '_' . $val, array('-' => '_', '%' => '_', '+' => '_'));
            if ($result = self::$_cache->load($id)) {
                return unserialize($result);
            }
        }

        switch(strtolower($path)) {
            case 'language':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/languages/language[@type=\'' . $value . '\']', 'type');
                break;

            case 'script':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/scripts/script[@type=\'' . $value . '\']', 'type');
                break;

            case 'country':
            case 'territory':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory[@type=\'' . $value . '\']', 'type');
                break;

            case 'variant':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/variants/variant[@type=\'' . $value . '\']', 'type');
                break;

            case 'key':
                $temp = self::_getFile($locale, '/ldml/localeDisplayNames/keys/key[@type=\'' . $value . '\']', 'type');
                break;

            case 'datechars':
                $temp = self::_getFile($locale, '/ldml/dates/localizedPatternChars', '', 'chars');
                break;

            case 'defaultcalendar':
                $temp = self::_getFile($locale, '/ldml/dates/calendars/default', 'choice', 'default');
                break;

            case 'monthcontext':
                if (empty ($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/default', 'choice', 'context');
                break;

            case 'defaultmonth':
                if (empty ($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/default', 'choice', 'default');
                break;

            case 'month':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", "format", "wide", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/months/monthContext[@type=\'' . $value[1] . '\']/monthWidth[@type=\'' . $value[2] . '\']/month[@type=\'' . $value[3] . '\']', 'type');
                break;

            case 'daycontext':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/default', 'choice', 'context');
                break;

            case 'defaultday':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/default', 'choice', 'default');
                break;

            case 'day':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", "format", "wide", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/days/dayContext[@type=\'' . $value[1] . '\']/dayWidth[@type=\'' . $value[2] . '\']/day[@type=\'' . $value[3] . '\']', 'type');
                break;

            case 'quarter':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", "format", "wide", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/quarters/quarterContext[@type=\'' . $value[1] . '\']/quarterWidth[@type=\'' . $value[2] . '\']/quarter[@type=\'' . $value[3] . '\']', 'type');
                break;

            case 'am':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/am', '', 'am');
                break;

            case 'pm':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/pm', '', 'pm');
                break;

            case 'era':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", "Abbr", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/eras/era' . $value[1] . '/era[@type=\'' . $value[2] . '\']', 'type');
                break;

            case 'defaultdate':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/default', 'choice', 'default');
                break;

            case 'date':
                if (empty($value)) {
                    $value = array("gregorian", "medium");
                }
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/dateFormats/dateFormatLength[@type=\'' . $value[1] . '\']/dateFormat/pattern', '', 'pattern');
                break;

            case 'defaulttime':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/default', 'choice', 'default');
                break;

            case 'time':
                if (empty($value)) {
                    $value = array("gregorian", "medium");
                }
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/timeFormats/timeFormatLength[@type=\'' . $value[1] . '\']/timeFormat/pattern', '', 'pattern');
                break;

            case 'datetime':
                if (empty($value)) {
                    $value = "gregorian";
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateTimeFormats/dateTimeFormatLength/dateTimeFormat/pattern', '', 'pattern');
                break;
                
            case 'field':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/field[@type=\'' . $value[1] . '\']/displayName', '', $value[1]);
                break;

            case 'relative':
                if (!is_array($value)) {
                    $temp = $value;
                    $value = array("gregorian", $temp);
                }
                $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/field/relative[@type=\'' . $value[1] . '\']', '', $value[1]);
                break;

            case 'decimalnumber':
                $temp = self::_getFile($locale, '/ldml/numbers/decimalFormats/decimalFormatLength/decimalFormat/pattern', '', 'default');
                break;

            case 'scientificnumber':
                $temp = self::_getFile($locale, '/ldml/numbers/scientificFormats/scientificFormatLength/scientificFormat/pattern', '', 'default');
                break;

            case 'percentnumber':
                $temp = self::_getFile($locale, '/ldml/numbers/percentFormats/percentFormatLength/percentFormat/pattern', '', 'default');
                break;

            case 'currencynumber':
                $temp = self::_getFile($locale, '/ldml/numbers/currencyFormats/currencyFormatLength/currencyFormat/pattern', '', 'default');
                break;

            case 'nametocurrency':
                $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $value . '\']/displayName', '', $value);
                break;

            case 'currencytoname':
                $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $value . '\']/displayName', '', $value);
                $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
                $temp = array();
                foreach ($_temp as $key => $keyvalue) {
                    $val = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/displayName', '', $key);
                    if (!isset($val[$key]) or ($val[$key] != $value)) {
                        continue;
                    }
                    if (!isset($temp[$val[$key]])) {
                        $temp[$val[$key]] = $key;
                    } else {
                        $temp[$val[$key]] .= " " . $key;
                    }
                }
                break;

            case 'currencysymbol':
                $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $value . '\']/symbol', '', $value);
                break;

            case 'question':
                $temp = self::_getFile($locale, '/ldml/posix/messages/' . $value . 'str',  '', $value);
                break;

            case 'currencyfraction':
                if (empty($value)) {
                    $value = "DEFAULT";
                }
                $temp = self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $value . '\']', 'digits', 'digits');
                break;

            case 'currencyrounding':
                if (empty($value)) {
                    $value = "DEFAULT";
                }
                $temp = self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $value . '\']', 'rounding', 'rounding');
                break;

            case 'currencytoregion':
                $temp = self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $value . '\']/currency', 'iso4217', $value);
                break;

            case 'regiontocurrency':
                $_temp = self::_getFile('supplementalData', '/supplementalData/currencyData/region', 'iso3166');
                $temp = array();
                foreach ($_temp as $key => $keyvalue) {
                    $val = self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $key . '\']/currency', 'iso4217', $key);
                    if (!isset($val[$key]) or ($val[$key] != $value)) {
                        continue;
                    }
                    if (!isset($temp[$val[$key]])) {
                        $temp[$val[$key]] = $key;
                    } else {
                        $temp[$val[$key]] .= " " . $key;
                    }
                }
                break;

            case 'regiontoterritory':
                $temp = self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $value . '\']', 'contains', $value);
                break;

            case 'territorytoregion':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/territoryContainment/group', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $key . '\']', 'contains', $key);
                }
                $temp = array();
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if ($found3 !== $value) {
                            continue;
                        }
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'scripttolanguage':
                $temp = self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $value . '\']', 'scripts', $value);
                break;

            case 'languagetoscript':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'scripts', $key);
                }
                $temp = array();
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if ($found3 !== $value) {
                            continue;
                        }
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'territorytolanguage':
                $temp = self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $value . '\']', 'territories', $value);
                break;

            case 'languagetoterritory':
                $_temp2 = self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
                $_temp = array();
                foreach ($_temp2 as $key => $found) {
                    $_temp += self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'territories', $key);
                }
                $temp = array();
                foreach($_temp as $key => $found) {
                    $_temp3 = explode(" ", $found);
                    foreach($_temp3 as $found3) {
                        if ($found3 !== $value) {
                            continue;
                        }
                        if (!isset($temp[$found3])) {
                            $temp[$found3] = (string) $key;
                        } else {
                            $temp[$found3] .= " " . $key;
                        }
                    }
                }
                break;

            case 'timezonetowindows':
                $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@other=\''.$value.'\']', 'type', $value);
                break;

            case 'windowstotimezone':
                $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/mapTimezones[@type=\'windows\']/mapZone[@type=\''.$value.'\']', 'other', $value);
                break;

            case 'territorytotimezone':
                $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@type=\'' . $value . '\']', 'territory', $value);
                break;

            case 'timezonetoterritory':
                $temp = self::_getFile('supplementalData', '/supplementalData/timezoneData/zoneFormatting/zoneItem[@territory=\'' . $value . '\']', 'type', $value);
                break;

            case 'citytotimezone':
                $temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $value . '\']/exemplarCity', '', $value);
                break;

            case 'timezonetocity':
                $_temp  = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
                $temp = array();
                foreach($_temp as $key => $found) {
                    $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/exemplarCity', '', $key);
                    if (!empty($temp[$key])) {
                        if ($temp[$key] == $value) {
                            $temp[$temp[$key]] = $key;
                        }
                    }
                    unset($temp[$key]);
                }
                break;

            default :
                require_once 'Zend/Locale/Exception.php';
                throw new Zend_Locale_Exception("Unknown detail ($path) for parsing locale data.");
                break;
        }

        if (is_array($temp)) {
            $temp = current($temp);
        }
        if (isset(self::$_cache)) {
            self::$_cache->save( serialize($temp), $id);
        }

        return $temp;
    }

    /**
     * Returns the set cache
     * 
     * @return Zend_Cache_Core The set cache
     */
    public static function getCache()
    {
        return self::$_cache;
    }

    /**
     * Set a cache for Zend_Locale_Data
     * 
     * @param Zend_Cache_Core $cache A cache frontend
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        self::$_cache = $cache;
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        if (self::$_cache !== null) {
            return true;
        }

        return false;
    }

    /**
     * Removes any set cache
     *
     * @return void
     */
    public static function removeCache()
    {
        self::$_cache = null;
    }

    /**
     * Clears all set cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        self::$_cache->clean();
    }
}
PKpG[�s�ڲN�NCurrency.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Currency.php 6137 2007-08-19 14:55:27Z shreef $
 */

/**
 * include needed classes
 */
require_once 'Zend/Locale.php';
require_once 'Zend/Locale/Data.php';
require_once 'Zend/Locale/Format.php';

/**
 * Class for handling currency notations
 *
 * @category  Zend
 * @package   Zend_Currency
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Currency
{
    // Constants for defining what currency symbol should be displayed
    const NO_SYMBOL     = 1;
    const USE_SYMBOL    = 2;
    const USE_SHORTNAME = 3;
    const USE_NAME      = 4;

    // Constants for defining the position of the currencysign
    const STANDARD = 8;
    const RIGHT    = 16;
    const LEFT     = 32;

    /**
     * Locale for this currency
     *
     * @var string
     */
    private $_locale = null;

    /**
     * Options array
     *
     * The following options are available
     * 'position'  => Position for the currency sign
     * 'script'    => Script for the output
     * 'format'    => Locale for numeric output
     * 'display'   => Currency detail to show
     * 'precision' => Precision for the currency
     * 'name'      => Name for this currency
     * 'currency'  => 3 lettered international abbreviation
     * 'symbol'    => Currency symbol
     *
     * @var array
     * @see Zend_Locale
     */
    protected $_options = array(
        'position'  => self::STANDARD,
        'script'    => null,
        'format'    => null,
        'display'   => self::NO_SYMBOL,
        'precision' => 2,
        'name'      => null,
        'currency'  => null,
        'symbol'    => null
    );

    /**
     * Creates a currency instance. Every supressed parameter is used from the actual or the given locale.
     *
     * @param  string             $currency OPTIONAL currency short name
     * @param  string|Zend_Locale $locale   OPTIONAL locale name
     * @throws Zend_Currency_Exception When currency is invalid
     */
    public function __construct($currency = null, $locale = null)
    {
        if (Zend_Locale::isLocale($currency, true, false)) {
            $temp     = $locale;
            $locale   = $currency;
            $currency = $temp;
        }

        if (empty($locale)) {
            require_once 'Zend/Registry.php';
            if (Zend_Registry::isRegistered('Zend_Locale') === true) {
                $locale = Zend_Registry::get('Zend_Locale');
            }
        }

        $this->setLocale($locale);

        // Get currency details
        $this->_options['currency'] = self::getShortName($currency, $this->_locale);
        $this->_options['name']     = self::getName($currency, $this->_locale);
        $this->_options['symbol']   = self::getSymbol($currency, $this->_locale);

        if (($this->_options['currency'] === null) and ($this->_options['name'] === null)) {
            require_once 'Zend/Currency/Exception.php';
            throw new Zend_Currency_Exception("Currency '$currency' not found");
        }

        // Get the format
        $this->_options['position'] = $this->_updateFormat();
        $this->_options['display']  = self::NO_SYMBOL;
        if (empty($this->_options['symbol']) === false) {
            $this->_options['display'] = self::USE_SYMBOL;
        } else if (empty($this->_options['currency']) === false) {
            $this->_options['display'] = self::USE_SHORTNAME;
        }
    }

    /**
     * Gets the information required for formating the currency from Zend_Locale
     *
     * @return Zend_Currency
     */
    protected function _updateFormat()
    {
        $locale = (empty($this->_options['format']) === true) ? $this->_locale : $this->_options['format'];

        // Getting the format information of the currency
        $format = Zend_Locale_Data::getContent($locale, 'currencynumber');

        iconv_set_encoding('internal_encoding', 'UTF-8');
        if (iconv_strpos($format, ';') !== false) {
            $format = iconv_substr($format, 0, iconv_strpos($format, ';'));
        }

        // Knowing the sign positioning information
        if (iconv_strpos($format, '¤') === 0) {
            $position = self::LEFT;
        } else if (iconv_strpos($format, '¤') === (iconv_strlen($format) - 1)) {
            $position = self::RIGHT;
        }

        return $position;
    }

    /**
     * Returns a localized currency string
     *
     * @param  integer|float $value   Currency value
     * @param  array         $options OPTIONAL options to set temporary
     * @throws Zend_Currency_Exception When the value is not a number
     * @return string
     */
    public function toCurrency($value, array $options = array())
    {
        // Validate the passed number
        if ((isset($value) === false) or (is_numeric($value) === false)) {
            require_once 'Zend/Currency/Exception.php';
            throw new Zend_Currency_Exception("Value '$value' has to be numeric");
        }

        $options = $this->_checkOptions($options) + $this->_options;

        // Format the number
        if (empty($options['format']) === true) {
            $options['format'] = $this->_locale;
        }

        $value = Zend_Locale_Format::toNumber($value, array('locale' => $options['format'],
                                                            'precision' => $options['precision']));

        // Localize the number digits
        if (empty($options['script']) === false) {
            $value = Zend_Locale_Format::convertNumerals($value, 'Latn', $options['script']);
        }

        // Get the sign to be placed next to the number
        if (is_numeric($options['display']) === false) {
            $sign = ' ' . $options['display'] . ' ';
        } else {
            switch($options['display']) {
                case self::USE_SYMBOL:
                    $sign = ' ' . $options['symbol'] . ' ';
                    break;

                case self::USE_SHORTNAME:
                    $sign = ' ' . $options['currency'] . ' ';
                    break;

                case self::USE_NAME:
                    $sign = ' ' . $options['name'] . ' ';
                    break;

                default:
                    $sign = '';
                    break;
            }
        }

        // Place the sign next to the number
        if ($options['position'] === self::RIGHT) {
            $value = $value . $sign;
        } else if ($options['position'] === self::LEFT) {
            $value = $sign . $value;
        }

        return trim($value);
    }

    /**
     * Sets the formating options of the localized currency string
     * If no parameter is passed, the standard setting of the
     * actual set locale will be used
     *
     * @param  array $options (Optional) Options to set
     * @return Zend_Currency
     */
    public function setFormat(array $options = array())
    {
        $this->_options = $this->_checkOptions($options) + $this->_options;
        return $this;
    }

    /**
     * Internal function for checking static given locale parameter
     *
     * @param  string             $currency (Optional) Currency name
     * @param  string|Zend_Locale $locale   (Optional) Locale to display informations
     * @throws Zend_Currency_Exception When locale contains no region
     * @return string The extracted locale representation as string
     */
    private function _checkParams($currency = null, $locale = null)
    {
        // Manage the params
        if ((empty($locale)) and (!empty($currency)) and
            (Zend_Locale::isLocale($currency, true, false))) {
            $locale   = $currency;
            $currency = null;
        }

        // Validate the locale and get the country short name
        $country = null;
        if ((Zend_Locale::isLocale($locale, true, false)) and (strlen($locale) > 4)) {
            $country = substr($locale, (strpos($locale, '_') + 1));
        } else {
            require_once 'Zend/Currency/Exception.php';
            throw new Zend_Currency_Exception("No region found within the locale '" . (string) $locale . "'");
        }

        // Get the available currencies for this country
        $data = Zend_Locale_Data::getContent($locale, 'currencytoregion', $country);
        if ((empty($currency) === false) and (empty($data) === false)) {
            $abbreviation = $currency;
        } else {
            $abbreviation = $data;
        }

        return array('locale' => $locale, 'currency' => $currency, 'name' => $abbreviation, 'country' => $country);
    }

    /**
     * Returns the actual or details of other currency symbols,
     * when no symbol is available it returns the currency shortname (f.e. FIM for Finnian Mark)
     *
     * @param  string             $currency (Optional) Currency name
     * @param  string|Zend_Locale $locale   (Optional) Locale to display informations
     * @return string
     */
    public function getSymbol($currency = null, $locale = null)
    {
        if (($currency === null) and ($locale === null)) {
            return $this->_options['symbol'];
        }

        $params = self::_checkParams($currency, $locale);

        // Get the symbol
        $symbol = Zend_Locale_Data::getContent($params['locale'], 'currencysymbol', $params['currency']);
        if (empty($symbol) === true) {
            $symbol = Zend_Locale_Data::getContent($params['locale'], 'currencysymbol', $params['name']);
        }

        if (empty($symbol) === true) {
            return null;
        }

        return $symbol;
    }

    /**
     * Returns the actual or details of other currency shortnames
     *
     * @param  string             $currency OPTIONAL Currency's name
     * @param  string|Zend_Locale $locale   OPTIONAL The locale
     * @return string
     */
    public function getShortName($currency = null, $locale = null)
    {
        if (($currency === null) and ($locale === null)) {
            return $this->_options['currency'];
        }

        $params = self::_checkParams($currency, $locale);

        // Get the shortname
        if (empty($params['currency']) === true) {
            return $params['name'];
        }

        $list = Zend_Locale_Data::getContent($params['locale'], 'currencytoname', $params['currency']);
        if (empty($list) === true) {
            $list = Zend_Locale_Data::getContent($params['locale'], 'nametocurrency', $params['currency']);
            if (empty($list) === false) {
                $list = $params['currency'];
            }
        }

        if (empty($list) === true) {
            return null;
        }

        return $list;
    }

    /**
     * Returns the actual or details of other currency names
     *
     * @param  string             $currency (Optional) Currency's short name
     * @param  string|Zend_Locale $locale   (Optional) The locale
     * @return string
     */
    public function getName($currency = null, $locale = null)
    {
        if (($currency === null) and ($locale === null)) {
            return $this->_options['name'];
        }

        $params = self::_checkParams($currency, $locale);

        // Get the name
        $name = Zend_Locale_Data::getContent($params['locale'], 'nametocurrency', $params['currency']);
        if (empty($name) === true) {
            $name = Zend_Locale_Data::getContent($params['locale'], 'nametocurrency', $params['name']);
        }

        if (empty($name) === true) {
            return null;
        }

        return $name;
    }

    /**
     * Returns a list of regions where this currency is or was known
     *
     * @param  string $currency OPTIONAL Currency's short name
     * @throws Zend_Currency_Exception When no currency was defined
     * @return array List of regions
     */
    public function getRegionList($currency = null)
    {
        if ($currency === null) {
            $currency = $this->_options['currency'];
        }

        if (empty($currency) === true) {
            require_once 'Zend/Currency/Exception.php';
            throw new Zend_Currency_Exception('No currency defined');
        }

        $data = Zend_Locale_Data::getContent('', 'regiontocurrency', $currency);

        $result = explode(' ', $data);
        return $result;
    }

    /**
     * Returns a list of currencies which are used in this region
     * a region name should be 2 charachters only (f.e. EG, DE, US)
     * If no region is given, the actual region is used
     *
     * @param  string $region OPTIONAL Region to return the currencies for
     * @return array List of currencies
     */
    public function getCurrencyList($region = null)
    {
        if (empty($region) === true) {
            if (strlen($this->_locale) > 4) {
                $region = substr($this->_locale, (strpos($this->_locale, '_') + 1));
            }
        }

        return Zend_Locale_Data::getList('', 'regiontocurrency', $region);
    }

    /**
     * Returns the actual currency name
     *
     * @return string
     */
    public function toString()
    {
        return (empty($this->_options['name']) === false) ? $this->_options['name'] : $this->_options['currency'];
    }

    /**
     * Returns the currency name
     *
     * @return string
     */
    public function __toString()
    {
        return $this->toString();
    }

    /**
     * Returns the set cache
     *
     * @return Zend_Cache_Core The set cache
     */
    public static function getCache()
    {
        $cache = Zend_Locale_Data::getCache();
        return $cache;
    }

    /**
     * Sets a cache for Zend_Currency
     *
     * @param  Zend_Cache_Core $cache Cache to set
     * @return void
     */
    public static function setCache(Zend_Cache_Core $cache)
    {
        Zend_Locale_Data::setCache($cache);
    }

    /**
     * Returns true when a cache is set
     *
     * @return boolean
     */
    public static function hasCache()
    {
        return Zend_Locale_Data::hasCache();
    }

    /**
     * Removes any set cache
     *
     * @return void
     */
    public static function removeCache()
    {
        Zend_Locale_Data::removeCache();
    }

    /**
     * Clears all set cache data
     *
     * @return void
     */
    public static function clearCache()
    {
        Zend_Locale_Data::clearCache();
    }

    /**
     * Sets a new locale for data retreivement
     * Example: 'de_XX' will be set to 'de' because 'de_XX' does not exist
     * 'xx_YY' will be set to 'root' because 'xx' does not exist
     *
     * @param  string|Zend_Locale $locale (Optional) Locale for parsing input
     * @throws Zend_Currency_Exception When the given locale does not exist
     * @return Zend_Currency Provides fluent interface
     */
    public function setLocale($locale = null)
    {
        if (!Zend_Locale::isLocale($locale, false, false)) {
            if (!Zend_Locale::isLocale($locale, true, false)) {
                require_once 'Zend/Currency/Exception.php';
                throw new Zend_Currency_Exception("Given locale (" . (string) $locale . ") does not exist");
            } else {
                $locale = new Zend_Locale();
            }
        }

        $this->_locale = (string) $locale;

        // Get currency details
        $this->_options['currency'] = $this->getShortName(null, $this->_locale);
        $this->_options['name']     = $this->getName(null, $this->_locale);
        $this->_options['symbol']   = $this->getSymbol(null, $this->_locale);

        return $this;
    }

    /**
     * Returns the actual set locale
     *
     * @return string
     */
    public function getLocale()
    {
        return $this->_locale;
    }

    /**
     * Internal method for checking the options array
     *
     * @param  array $options Options to check
     * @throws Zend_Currency_Exception On unknown position
     * @throws Zend_Currency_Exception On unknown locale
     * @throws Zend_Currency_Exception On unknown display
     * @throws Zend_Currency_Exception On precision not between -1 and 30
     * @throws Zend_Currency_Exception On problem with script conversion
     * @throws Zend_Currency_Exception On unknown options
     * @return array
     */
    private function _checkOptions(array $options = array())
    {
        if (count($options) === 0) {
            return $this->_options;
        }

        foreach ($options as $name => $value) {
            $name = strtolower($name);
            if ($name !== 'format') {
                if (gettype($value) === 'string') {
                    $value = strtolower($value);
                }
            }

            switch($name) {
                case 'position':
                    if (($value !== self::STANDARD) and ($value !== self::RIGHT) and ($value !== self::LEFT)) {
                        require_once 'Zend/Currency/Exception.php';
                        throw new Zend_Currency_Exception("Unknown position '" . $value . "'");
                    }

                    if ($value === self::STANDARD) {
                        $options['position'] = $this->_updateFormat();
                    }
                    break;

                case 'format':
                    if ((empty($value) === false) and (Zend_Locale::isLocale($value, null, false) === false)) {
                        require_once 'Zend/Currency/Exception.php';
                        throw new Zend_Currency_Exception("'" .
                            ((gettype($value) === 'object') ? get_class($value) : $value)
                            . "' is not a known locale.");
                    }
                    break;

                case 'display':
                    if (is_numeric($value) and ($value !== self::NO_SYMBOL) and ($value !== self::USE_SYMBOL) and
                        ($value !== self::USE_SHORTNAME) and ($value !== self::USE_NAME)) {
                        require_once 'Zend/Currency/Exception.php';
                        throw new Zend_Currency_Exception("Unknown display '$value'");
                    }
                    break;

                case 'precision':
                    if ($value === null) {
                        $value = -1;
                    }

                    if (($value < -1) or ($value > 30)) {
                        require_once 'Zend/Currency/Exception.php';
                        throw new Zend_Currency_Exception("'$value' precision has to be between -1 and 30.");
                    }
                    break;

                case 'script':
                    try {
                        Zend_Locale_Format::convertNumerals(0, $options['script']);
                    } catch (Zend_Locale_Exception $e) {
                        require_once 'Zend/Currency/Exception.php';
                        throw new Zend_Currency_Exception($e->getMessage());
                    }
                    break;

                case 'name':
                    // Break intentionally omitted
                case 'currency':
                    // Break intentionally omitted
                case 'symbol':
                    // Unchecked options
                    break;

                default:
                    require_once 'Zend/Currency/Exception.php';
                    throw new Zend_Currency_Exception("Unknown option: '$name' = '$value'");
                    break;
            }
        }

        return $options;
    }
}
PKpG[R�Q��	Debug.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Concrete class for generating debug dumps related to the output source.
 *
 * @category   Zend
 * @package    Zend_Debug
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Debug
{

    /**
     * @var string
     */
    protected static $_sapi = null;

    /**
     * Get the current value of the debug output environment.
     * This defaults to the value of PHP_SAPI.
     *
     * @return string;
     */
    public static function getSapi()
    {
        if (self::$_sapi === null) {
            self::$_sapi = PHP_SAPI;
        }
        return self::$_sapi;
    }

    /**
     * Set the debug ouput environment.
     * Setting a value of null causes Zend_Debug to use PHP_SAPI.
     *
     * @param string $sapi
     * @return void;
     */
    public static function setSapi($sapi)
    {
        self::$_sapi = $sapi;
    }

    /**
     * Debug helper function.  This is a wrapper for var_dump() that adds
     * the <pre /> tags, cleans up newlines and indents, and runs
     * htmlentities() before output.
     *
     * @param  mixed  $var   The variable to dump.
     * @param  string $label OPTIONAL Label to prepend to output.
     * @param  bool   $echo  OPTIONAL Echo output if true.
     * @return string
     */
    public static function dump($var, $label=null, $echo=true)
    {
        // format the label
        $label = ($label===null) ? '' : rtrim($label) . ' ';

        // var_dump the variable into a buffer and keep the output
        ob_start();
        var_dump($var);
        $output = ob_get_clean();

        // neaten the newlines and indents
        $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output);
        if (self::getSapi() == 'cli') {
            $output = PHP_EOL . $label
                    . PHP_EOL . $output
                    . PHP_EOL;
        } else {
            if(!extension_loaded('xdebug')) {
                $output = htmlspecialchars($output, ENT_QUOTES);
            }

            $output = '<pre>'
                    . $label
                    . $output
                    . '</pre>';
        }

        if ($echo) {
            echo($output);
        }
        return $output;
    }

}
PKpG[:�x�

Soap/AutoDiscover/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

require_once "Zend/Exception.php";

class Zend_Soap_AutoDiscover_Exception extends Zend_Exception {}PKpG[���?�V�VSoap/Client.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Soap_Client_Exception */
require_once 'Zend/Soap/Client/Exception.php';

/** Zend_Soap_Server */
require_once 'Zend/Soap/Server.php';

/** Zend_Soap_Client_Local */
require_once 'Zend/Soap/Client/Local.php';

/** Zend_Soap_Client_Common */
require_once 'Zend/Soap/Client/Common.php';


/**
 * Zend_Soap_Client
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Soap_Client
{
    /**
     * Encoding
     * @var string
     */
    protected $_encoding = 'UTF-8';

    /**
     * Array of SOAP type => PHP class pairings for handling return/incoming values
     * @var array
     */
    protected $_classmap = null;

    /**
     * Registered fault exceptions
     * @var array
     */
    protected $_faultExceptions = array();

    /**
     * SOAP version to use; SOAP_1_2 by default, to allow processing of headers
     * @var int
     */
    protected $_soapVersion = SOAP_1_2;

    /** Set of other SoapClient options */
    protected $_uri                 = null;
    protected $_location            = null;
    protected $_style               = null;
    protected $_use                 = null;
    protected $_login               = null;
    protected $_password            = null;
    protected $_proxy_host          = null;
    protected $_proxy_port          = null;
    protected $_proxy_login         = null;
    protected $_proxy_password      = null;
    protected $_local_cert          = null;
    protected $_passphrase          = null;
    protected $_compression         = null;
    protected $_connection_timeout  = null;

    /**
     * WSDL used to access server
     * It also defines Zend_Soap_Client working mode (WSDL vs non-WSDL)
     *
     * @var string
     */
    protected $_wsdl = null;

    /**
     * SoapClient object
     *
     * @var SoapClient
     */
    protected $_soapClient;

    /**
     * Last invoked method
     *
     * @var string
     */
    protected $_lastMethod = '';

    /**
     * Constructor
     *
     * @param string $wsdl
     * @param array $options
     */
    public function __construct($wsdl = null, $options = null)
    {
        if (!extension_loaded('soap')) {
            throw new Zend_Soap_Client_Exception('SOAP extension is not loaded.');
        }

        if ($wsdl !== null) {
            $this->setWsdl($wsdl);
        }
        if ($options !== null) {
            $this->setOptions($options);
        }
    }

    /**
     * Set wsdl
     *
     * @param string $wsdl
     * @return Zend_Soap_Client
     */
    public function setWsdl($wsdl)
    {
        $this->_wsdl = $wsdl;
        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get wsdl
     *
     * @return string
     */
    public function getWsdl()
    {
        return $this->_wsdl;
    }

    /**
     * Set Options
     *
     * Allows setting options as an associative array of option => value pairs.
     *
     * @param  array $options
     * @return Zend_Soap_Client
     * @throws Zend_SoapClient_Exception
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            switch ($key) {
                case 'classmap':
                case 'classMap':
                    $this->setClassmap($value);
                    break;
                case 'encoding':
                    $this->setEncoding($value);
                    break;
                case 'soapVersion':
                case 'soap_version':
                    $this->setSoapVersion($value);
                    break;
                case 'wsdl':
                    $this->setWsdl($value);
                    break;
                case 'uri':
                    $this->setUri($value);
                    break;
                case 'location':
                    $this->setLocation($value);
                    break;
                case 'style':
                    $this->setStyle($value);
                    break;
                case 'use':
                    $this->setEncodingMethod($value);
                    break;
                case 'login':
                    $this->setHttpLogin($value);
                    break;
                case 'password':
                    $this->setHttpPassword($value);
                    break;
                case 'proxy_host':
                    $this->setProxyHost($value);
                    break;
                case 'proxy_port':
                    $this->setProxyPort($value);
                    break;
                case 'proxy_login':
                    $this->setProxyLogin($value);
                    break;
                case 'proxy_password':
                    $this->setProxyPassword($value);
                    break;
                case 'local_cert':
                    $this->setHttpsCertificate($value);
                    break;
                case 'passphrase':
                    $this->setHttpsCertPassphrase($value);
                    break;
                case 'compression':
                    $this->setCompressionOptions($value);
                    break;

                // Not used now
                // case 'connection_timeout':
                //     $this->_connection_timeout = $value;
                //    break;

                default:
                    throw new Zend_Soap_Client_Exception('Unknown SOAP client option');
                    break;
            }
        }

        return $this;
    }

    /**
     * Return array of options suitable for using with SoapClient constructor
     *
     * @return array
     */
    public function getOptions()
    {
        $options = array();

        $options['classmap']       = $this->getClassmap();
        $options['encoding']       = $this->getEncoding();
        $options['soap_version']   = $this->getSoapVersion();
        $options['wsdl']           = $this->getWsdl();
        $options['uri']            = $this->getUri();
        $options['location']       = $this->getLocation();
        $options['style']          = $this->getStyle();
        $options['use']            = $this->getEncodingMethod();
        $options['login']          = $this->getHttpLogin();
        $options['password']       = $this->getHttpPassword();
        $options['proxy_host']     = $this->getProxyHost();
        $options['proxy_port']     = $this->getProxyPort();
        $options['proxy_login']    = $this->getProxyLogin();
        $options['proxy_password'] = $this->getProxyPassword();
        $options['local_cert']     = $this->getHttpsCertificate();
        $options['passphrase']     = $this->getHttpsCertPassphrase();
        $options['compression']    = $this->getCompressionOptions();
//        $options['connection_timeout'] = $this->_connection_timeout;

        foreach ($options as $key => $value) {
            if ($value == null) {
                unset($options[$key]);
            }
        }

        return $options;
    }

    /**
     * Set SOAP version
     *
     * @param  int $version One of the SOAP_1_1 or SOAP_1_2 constants
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid soap version argument
     */
    public function setSoapVersion($version)
    {
        if (!in_array($version, array(SOAP_1_1, SOAP_1_2))) {
            throw new Zend_Soap_Client_Exception('Invalid soap version specified. Use SOAP_1_1 or SOAP_1_2 constants.');
        }
        $this->_soapVersion = $version;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get SOAP version
     *
     * @return int
     */
    public function getSoapVersion()
    {
        return $this->_soapVersion;
    }

    /**
     * Set classmap
     *
     * @param  array $classmap
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception for any invalid class in the class map
     */
    public function setClassmap(array $classmap)
    {
        foreach ($classmap as $type => $class) {
            if (!class_exists($class)) {
                throw new Zend_Soap_Client_Exception('Invalid class in class map');
            }
        }

        $this->_classmap = $classmap;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve classmap
     *
     * @return mixed
     */
    public function getClassmap()
    {
        return $this->_classmap;
    }

    /**
     * Set encoding
     *
     * @param  string $encoding
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid encoding argument
     */
    public function setEncoding($encoding)
    {
        if (!is_string($encoding)) {
            throw new Zend_Soap_Client_Exception('Invalid encoding specified');
        }

        $this->_encoding = $encoding;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Check for valid URN
     *
     * @param  string $urn
     * @return true
     * @throws Zend_Soap_Client_Exception on invalid URN
     */
    public function validateUrn($urn)
    {
        $segs = parse_url($urn);
        if (isset($segs['scheme'])) {
            return true;
        }

        throw new Zend_Soap_Client_Exception('Invalid URN');
    }

    /**
     * Set URI
     *
     * URI in Web Service the target namespace
     *
     * @param  string $uri
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid uri argument
     */
    public function setUri($uri)
    {
        $this->validateUrn($uri);
        $this->_uri = $uri;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve URI
     *
     * @return string
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * Set Location
     *
     * URI in Web Service the target namespace
     *
     * @param  string $location
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid uri argument
     */
    public function setLocation($location)
    {
        $this->validateUrn($location);
        $this->_location = $location;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve URI
     *
     * @return string
     */
    public function getLocation()
    {
        return $this->_location;
    }

    /**
     * Set request style
     *
     * @param  int $style One of the SOAP_RPC or SOAP_DOCUMENT constants
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid style argument
     */
    public function setStyle($style)
    {
        if (!in_array($style, array(SOAP_RPC, SOAP_DOCUMENT))) {
            throw new Zend_Soap_Client_Exception('Invalid request style specified. Use SOAP_RPC or SOAP_DOCUMENT constants.');
        }

        $this->_style = $style;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get request style
     *
     * @return int
     */
    public function getStyle()
    {
        return $this->_style;
    }

    /**
     * Set message encoding method
     *
     * @param  int $use One of the SOAP_ENCODED or SOAP_LITERAL constants
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid message encoding method argument
     */
    public function setEncodingMethod($use)
    {
        if (!in_array($use, array(SOAP_ENCODED, SOAP_LITERAL))) {
            throw new Zend_Soap_Client_Exception('Invalid message encoding method. Use SOAP_ENCODED or SOAP_LITERAL constants.');
        }

        $this->_use = $use;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get message encoding method
     *
     * @return int
     */
    public function getEncodingMethod()
    {
        return $this->_use;
    }

    /**
     * Set HTTP login
     *
     * @param  string $login
     * @return Zend_Soap_Client
     */
    public function setHttpLogin($login)
    {
        $this->_login = $login;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve HTTP Login
     *
     * @return string
     */
    public function getHttpLogin()
    {
        return $this->_login;
    }

    /**
     * Set HTTP password
     *
     * @param  string $password
     * @return Zend_Soap_Client
     */
    public function setHttpPassword($password)
    {
        $this->_password = $password;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve HTTP Password
     *
     * @return string
     */
    public function getHttpPassword()
    {
        return $this->_password;
    }

    /**
     * Set proxy host
     *
     * @param  string $proxyHost
     * @return Zend_Soap_Client
     */
    public function setProxyHost($proxyHost)
    {
        $this->_proxy_host = $proxyHost;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve proxy host
     *
     * @return string
     */
    public function getProxyHost()
    {
        return $this->_proxy_host;
    }

    /**
     * Set proxy port
     *
     * @param  int $proxyPort
     * @return Zend_Soap_Client
     */
    public function setProxyPort($proxyPort)
    {
        $this->_proxy_port = (int)$proxyPort;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve proxy port
     *
     * @return int
     */
    public function getProxyPort()
    {
        return $this->_proxy_port;
    }

    /**
     * Set proxy login
     *
     * @param  string $proxyLogin
     * @return Zend_Soap_Client
     */
    public function setProxyLogin($proxyLogin)
    {
        $this->_proxy_login = $proxyLogin;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Retrieve proxy login
     *
     * @return string
     */
    public function getProxyLogin()
    {
        return $this->_proxy_login;
    }

    /**
     * Set proxy password
     *
     * @param  string $proxyLogin
     * @return Zend_Soap_Client
     */
    public function setProxyPassword($proxyPassword)
    {
        $this->_proxy_password = $proxyPassword;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Set HTTPS client certificate path
     *
     * @param  string $localCert local certificate path
     * @return Zend_Soap_Client
     * @throws Zend_Soap_Client_Exception with invalid local certificate path argument
     */
    public function setHttpsCertificate($localCert)
    {
        if (!is_readable($localCert)) {
            throw new Zend_Soap_Client_Exception('Invalid HTTPS client certificate path.');
        }

        $this->_local_cert = $localCert;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get HTTPS client certificate path
     *
     * @return string
     */
    public function getHttpsCertificate()
    {
        return $this->_local_cert;
    }

    /**
     * Set HTTPS client certificate passphrase
     *
     * @param  string $passphrase
     * @return Zend_Soap_Client
     */
    public function setHttpsCertPassphrase($passphrase)
    {
        $this->_passphrase = $passphrase;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get HTTPS client certificate passphrase
     *
     * @return string
     */
    public function getHttpsCertPassphrase()
    {
        return $this->_passphrase;
    }

    /**
     * Set compression options
     *
     * @param  int $compressionOptions
     * @return Zend_Soap_Client
     */
    public function setCompressionOptions($compressionOptions)
    {
        $this->_compression = $compressionOptions;

        $this->_soapClient = null;

        return $this;
    }

    /**
     * Get Compression options
     *
     * @return int
     */
    public function getCompressionOptions()
    {
        return $this->_compression;
    }

    /**
     * Retrieve proxy password
     *
     * @return string
     */
    public function getProxyPassword()
    {
        return $this->_proxy_password;
    }

    /**
     * Retrieve request XML
     *
     * @return string
     */
    public function getLastRequest()
    {
        if ($this->_soapClient !== null) {
            return $this->_soapClient->__getLastRequest();
        }

        return '';
    }

    /**
     * Get response XML
     *
     * @return string
     */
    public function getLastResponse()
    {
        if ($this->_soapClient !== null) {
            return $this->_soapClient->__getLastResponse();
        }

        return '';
    }

    /**
     * Retrieve request headers
     *
     * @return string
     */
    public function getLastRequestHeaders()
    {
        if ($this->_soapClient !== null) {
            return $this->_soapClient->__getLastRequestHeaders();
        }

        return '';
    }

    /**
     * Retrieve response headers
     *
     * @return string
     */
    public function getLastResponseHeaders()
    {
        if ($this->_soapClient !== null) {
            return $this->_soapClient->__getLastResponseHeaders();
        }

        return '';
    }

    /**
     * Retrieve last invoked method
     *
     * @return string
     */
    public function getLastMethod()
    {
        return $this->_lastMethod;
    }

    /**
     * Do request proxy method.
     *
     * May be overridden in subclasses
     *
     * @internal
     * @param Zend_Soap_Client_Common $client
     * @param string $request
     * @param string $location
     * @param string $action
     * @param int    $version
     * @param int    $one_way
     * @return mixed
     */
    public function _doRequest(Zend_Soap_Client_Common $client, $request, $location, $action, $version, $one_way = null)
    {
        // Perform request as is
        if ($one_way == null) {
            return call_user_func(array($client,'SoapClient::__doRequest'), $request, $location, $action, $version);
        } else {
            return call_user_func(array($client,'SoapClient::__doRequest'), $request, $location, $action, $version, $one_way);
        }
    }

    /**
     * Initialize SOAP Client object
     *
     * @throws Zend_Soap_Client_Exception
     */
    protected function _initSoapClientObject()
    {
        $wsdl = $this->getWsdl();
        $options = array_merge($this->getOptions(), array('trace' => true));


        if ($wsdl == null) {
            if (!isset($options['location'])) {
                throw new Zend_Soap_Client_Exception('\'location\' parameter is required in non-WSDL mode.');
            }
            if (!isset($options['uri'])) {
                throw new Zend_Soap_Client_Exception('\'uri\' parameter is required in non-WSDL mode.');
            }
        } else {
            if (isset($options['use'])) {
                throw new Zend_Soap_Client_Exception('\'use\' parameter only works in non-WSDL mode.');
            }
            if (isset($options['style'])) {
                throw new Zend_Soap_Client_Exception('\'style\' parameter only works in non-WSDL mode.');
            }
        }
        unset($options['wsdl']);

        $this->_soapClient = new Zend_Soap_Client_Common(array($this, '_doRequest'), $wsdl, $options);
    }


    /**
     * Perform arguments pre-processing
     *
     * My be overridden in descendant classes
     *
     * @param array $arguments
     */
    protected function _preProcessArguments($arguments)
    {
        // Do nothing
        return $arguments;
    }

    /**
     * Perform result pre-processing
     *
     * My be overridden in descendant classes
     *
     * @param array $arguments
     */
    protected function _preProcessResult($result)
    {
        // Do nothing
        return $result;
    }

    /**
     * Perform a SOAP call
     *
     * @param string $name
     * @param array  $arguments
     * @return mixed
     */
    public function __call($name, $arguments)
    {
        if ($this->_soapClient == null) {
            $this->_initSoapClientObject();
        }

        $this->_lastMethod = $name; 
        
        $result = call_user_func_array(array($this->_soapClient, $name), $this->_preProcessArguments($arguments));

        return $this->_preProcessResult($result);
    }


    /**
     * Return a list of available functions
     *
     * @return array
     * @throws Zend_Soap_Client_Exception
     */
    public function getFunctions()
    {
        if ($this->getWsdl() == null) {
            throw new Zend_Soap_Client_Exception('\'getFunctions\' method is available only in WSDL mode.');
        }

        if ($this->_soapClient == null) {
            $this->_initSoapClientObject();
        }

        return $this->_soapClient->__getFunctions();
    }


    /**
     * Get used types.
     *
     * @return array
     */

    /**
     * Return a list of SOAP types
     *
     * @return array
     * @throws Zend_Soap_Client_Exception
     */
    public function getTypes()
    {
        if ($this->getWsdl() == null) {
            throw new Zend_Soap_Client_Exception('\'getTypes\' method is available only in WSDL mode.');
        }

        if ($this->_soapClient == null) {
            $this->_initSoapClientObject();
        }

        return $this->_soapClient->__getTypes();
    }
}
PKpG[퇫���Soap/Wsdl/Parser/Result.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Result.php 11560 2008-10-01 10:09:10Z yoshida@zend.co.jp $
 */

/**
 * Zend_Soap_Wsdl_Parser_Result
 * 
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Wsdl_Parser_Result {
    
    public $wsdl_file = '';
    
    public $name;
    
    public $documentation;
    
    public $operations;
    
    public $portType;
    
    public $binding;
    
    public $service;
    
    public $targetNamespace;
    
    public function __construct($wsdl)
    {
        $this->wsdl_file = $wsdl;
    }
}


PKpG[�DxxSoap/Wsdl/CodeGenerator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CodeGenerator.php 11560 2008-10-01 10:09:10Z yoshida@zend.co.jp $
 */

require_once 'Zend/Soap/Wsdl/Parser.php';

/**
 * Zend_Soap_Wsdl_CodeGenerator
 * 
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Wsdl_CodeGenerator {
   
    /**
     * @var string WSDL Filename/URI
     */
    private static $filename = null;
    
    /**
     * @var string PHP Code for output
     */
    private static $php_code;
    
    /**
     * @var object Zend_Soap_Wsdl_Parser Result
     */
    private static $wsdl;

    /**
     * Constructor
     *
     * @param string $wsdl Filename, URI or XML for the WSDL
     * @param string $output Output file name, default: null
     */
    public static function parse($wsdl, $output = null)
    {
        self::$wsdl = Zend_Soap_Wsdl_Parser::parse($wsdl);
        
        self::$php_code = self::generatePhp();
        
        if (!is_null($output) && is_writable($output)) {
            file_put_contents($output);
        }
        
        return self::$php_code;
        
    }
    
    /**
     * Generate the output PHP
     *
     * @return string
     */
    private function generatePhp()
    {
        $php_code = '<?php' . "\n";
        if (isset(self::$wsdl->documentation)) {
            $docs = self::$wsdl->documentation;
            $docs = explode("\n", $docs);
            $php_code .= "/**\n";
            foreach ($docs as $line) {
                $php_code .= ' * ' .trim($line). PHP_EOL;
            }
            $php_code .= " */\n\n";
        }
        if (!isset(self::$wsdl->name)) {
            $classname = 'SoapService';
        } else {
            $classname = self::$wsdl->name;
        }                
            
        $php_code .= "class {$classname} {\n";
        
        foreach (self::$wsdl->operations as $name => $io) {
            if (isset($io['documentation'])) {
                $php_code .= "\n\t/**\n";
                $docs = $io['documentation'];
                $docs = explode("\n", $docs);
                foreach ($docs as $line) {
                    $php_code .= "\t * " .trim($line). PHP_EOL;
                }
                $php_code .= "\t */\n";
            }
            $php_code .= "\n\tpublic function {$name} (";
            if (isset($io['input'])) {
                $arg_names = array();
                foreach ($io['input'] as $arg) {
                    $arg_names[] = $arg['name'];
                }
                $php_code .= '$' .implode(', $', $arg_names);
            }
            $php_code .= ')';
            $php_code .= "\n\t{";
            $php_code .= "\n\t\t\n";
            if (isset($io['output'])) {
                $php_code .= "\t\treturn \${$io['output']['name']};\n";
            }
            $php_code .= "\t}\n";
        }
        
        $php_code .= "\n}";
        
        $php_code .= PHP_EOL. "\$server = new SoapServer;" .PHP_EOL;
        $php_code .= "\$server->setClass($classname);";
        $php_code .= "\n?>";
        return $php_code;
    }
}

PKpG[��Y���Soap/Wsdl/Parser.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Parser.php 12080 2008-10-22 16:40:33Z beberlei $
 */

require_once 'Zend/Soap/Wsdl/Parser/Result.php';

/**
 * Zend_Soap_Wsdl_Parser
 *
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Wsdl_Parser {
    /**
     * @var SimpleXML object for the WSDL document being parsed
     */
    private static $xml;

    /**
     * Parse a WSDL document into a generic object
     *
     * @param string|file $wsdl The WSDL document or a filename for the WSDL document to parse
     * @return Zend_Soap_Wsdl_Parser_Result The contents of the WSDL file
     */
    public static function parse($wsdl)
    {
        if (strpos($wsdl, '<') === false) {
            $wsdl_result = new Zend_Soap_Wsdl_Parser_Result($wsdl);
            $wsdl = file_get_contents($wsdl);
        } else {
            $tmp = tempnam(ini_get('upload_tmp_dir'), 'ZF_Temp_');
            file_put_contents($tmp, $wsdl);
            $wsdl_result = new Zend_Soap_Wsdl_Parser_Result($tmp);
        }

        self::$xml = simplexml_load_string($wsdl);

        /* This is done so that we have a known prefix to the WSDL elements
            for XPath queries */

        self::$xml['xmlns:zfwsdl'] = 'http://schemas.xmlsoap.org/wsdl/';

        self::$xml = simplexml_load_string(self::$xml->asXML());

        if (isset(self::$xml->documentation)) {
            $wsdl_result->documentation = trim(self::$xml->documentation);
        }
        if (!isset(self::$xml['name'])) {
            $wsdl_result->name = null;
        } else {
            $wsdl_result->name = (string) self::$xml['name'];
        }

        foreach (self::$xml->binding->operation as $operation) {
            $name = (string) $operation['name'];
            $wsdl_result->operations[$name] = array();
            $wsdl_result->operations[$name]['input'] = self::getOperationInputs($name);
            $wsdl_result->operations[$name]['output'] = self::getOperationOutput($name);
            $wsdl_result->operations[$name]['documentation'] = self::getDocs($name);
        }

        $wsdl_result->portType = (string) self::$xml->portType['name'];
        $wsdl_result->binding = (string) self::$xml->binding['name'];
        $wsdl_result->service['name'] = (string) self::$xml->service['name'];
        $wsdl_result->service['address'] = (string) self::$xml->service->port->children('http://schemas.xmlsoap.org/wsdl/soap/')->attributes();
        $wsdl_result->targetNamespace = (string) self::$xml['targetNamespace'];

        return $wsdl_result;
    }

    /**
     * Get Function arguments
     *
     * @param string $operation_name Name of the <operation> element to find
     * @return string
     */
    private static function getOperationInputs($operation_name)
    {
        $operation = self::$xml->xpath('/zfwsdl:definitions[1]/zfwsdl:portType/zfwsdl:operation[@name="' .$operation_name. '"]');

        if ($operation == null) {
            return '';
        }

        if (isset($operation[0]->input)) {
            $input_message_name = $operation[0]->input['message'];
            $input_message_name = explode(':', $input_message_name);
            $input_message_name = $input_message_name[1];
            $input_message = self::$xml->xpath('/zfwsdl:definitions[1]/zfwsdl:message[@name="' .$input_message_name. '"]');
        }

        if ($input_message != null) {
            foreach ($input_message[0]->part as $part) {
                $args[] = array(
                            'name' => (string) $part['name'],
                            'type' => (string) $part['type'],
                            );
            }

            if (isset($args) && is_array($args)) {
                return $args;
            } else {
                return null;
            }
        } else {
            return null;
        }
    }

    /**
     * Get Function return variable
     *
     * @param string $operation_name Name of the <operation> element to find
     * @return string|false Returns variable name if found, or false
     */
    private static function getOperationOutput($operation_name)
    {
        $operation = self::$xml->xpath('/zfwsdl:definitions[1]/zfwsdl:portType/zfwsdl:operation[@name="' .$operation_name. '"]');


        if (isset($operation[0]->output)) {
            $output_message_name = $operation[0]->output['message'];
            $output_message_name = explode(':', $output_message_name);
            $output_message_name = $output_message_name[1];
            $output_message = self::$xml->xpath('/zfwsdl:definitions[1]/zfwsdl:message[@name="' .$output_message_name. '"]');
        }

        if ($output_message != null) {
            return array(
                        'name' => (string) $output_message[0]->part['name'],
                        'type' => (string) $output_message[0]->part['type']
                    );
        } else {
            return null;
        }
    }

    /**
     * Get Function Documentation
     *
     * @param string $operation_name Name of the <operation> element to find
     * @return string
     */
    private static function getDocs($operation_name)
    {

        $portType = self::$xml->xpath('//zfwsdl:operation[@name="' .$operation_name. '"]/zfwsdl:documentation');
        if (isset($portType) && is_array($portType) && (sizeof($portType) >= 1)) {
            return trim((string) $portType[0]);
        } else {
            return null;
        }
    }
}


PKpG[4���++Soap/Wsdl/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @subpackage Wsdl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

require_once "Zend/Exception.php";

class Zend_Soap_Wsdl_Exception extends Zend_Exception { }PKpG[���X==Soap/Wsdl/Strategy/Abstract.phpnu&1i�<?php

abstract class Zend_Soap_Wsdl_Strategy_Abstract implements Zend_Soap_Wsdl_Strategy_Interface
{
    protected $_context;

    /**
     * Set the Zend_Soap_Wsdl Context object this strategy resides in.
     *
     * @param Zend_Soap_Wsdl $context
     * @return void
     */
    public function setContext(Zend_Soap_Wsdl $context)
    {
        $this->_context = $context;
    }

    /**
     * Return the current Zend_Soap_Wsdl context object
     *
     * @return Zend_Soap_Wsdl
     */
    public function getContext()
    {
        return $this->_context;
    }
}
PKpG[T�Է�� Soap/Wsdl/Strategy/Interface.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @subpackage Wsdl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */


interface Zend_Soap_Wsdl_Strategy_Interface
{
    public function setContext(Zend_Soap_Wsdl $context);

    /**
     * Create a complex type based on a strategy
     *
     * @param  string $type
     * @return string XSD type
     */
    public function addComplexType($type);
}PKpG[x4�� 
 
)Soap/Wsdl/Strategy/DefaultComplexType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @subpackage Wsdl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

class Zend_Soap_Wsdl_Strategy_DefaultComplexType extends Zend_Soap_Wsdl_Strategy_Abstract
{
    /**
     * Add a complex type by recursivly using all the class properties fetched via Reflection.
     *
     * @param  string $type Name of the class to be specified
     * @return string XSD Type for the given PHP type
     */
    public function addComplexType($type)
    {
        if(!class_exists($type)) {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception(sprintf(
                "Cannot add a complex type %s that is not an object or where ".
                "class could not be found in 'DefaultComplexType' strategy.", $type
            ));
        }

        $dom = $this->getContext()->toDomDocument();
        $class = new ReflectionClass($type);

        $complexType = $dom->createElement('xsd:complexType');
        $complexType->setAttribute('name', $type);

        $all = $dom->createElement('xsd:all');

        foreach ($class->getProperties() as $property) {
            if (preg_match_all('/@var\s+([^\s]+)/m', $property->getDocComment(), $matches)) {

                /**
                 * @todo check if 'xsd:element' must be used here (it may not be compatible with using 'complexType'
                 * node for describing other classes used as attribute types for current class
                 */
                $element = $dom->createElement('xsd:element');
                $element->setAttribute('name', $property->getName());
                $element->setAttribute('type', $this->getContext()->getType(trim($matches[1][0])));
                $all->appendChild($element);
            }
        }

        $complexType->appendChild($all);
        $this->getContext()->getSchema()->appendChild($complexType);
        $this->getContext()->addType($type);

        return "tns:$type";
    }
}
PKpG[-5�JJ*Soap/Wsdl/Strategy/ArrayOfTypeSequence.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

class Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence extends Zend_Soap_Wsdl_Strategy_Abstract
{
    /**
     * Add an unbounded ArrayOfType based on the xsd:sequence syntax if type[] is detected in return value doc comment.
     *
     * @param string $type
     * @return string tns:xsd-type
     */
    public function addComplexType($type)
    {
        $nestedCounter = $this->_getNestedCount($type);

        if($nestedCounter > 0) {
            $singularType = $this->_getSingularType($type);

            for($i = 1; $i <= $nestedCounter; $i++) {
                $complexTypeName = $this->_getTypeNameBasedOnNestingLevel($singularType, $i);
                $childTypeName = $this->_getTypeNameBasedOnNestingLevel($singularType, $i-1);

                $this->_addElementFromWsdlAndChildTypes($complexTypeName, $childTypeName);
            }
            // adding the PHP type which is resolved to a nested XSD type. therefore add only once.
            $this->getContext()->addType($type);

            return "tns:$complexTypeName";
        } else {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception(sprintf(
                'ArrayOfTypeSequence Strategy does not allow for complex types that are not in @return type[] syntax. "%s" type was specified.', $type
            ));
        }
    }

    /**
     * Return the ArrayOf or simple type name based on the singular xsdtype and the nesting level
     *
     * @param  string $singularType
     * @param  int    $level
     * @return string
     */
    protected function _getTypeNameBasedOnNestingLevel($singularType, $level)
    {
        if($level == 0) {
            // This is not an Array anymore, return the xsd simple type
            return $singularType;
        } else {
            $prefix = str_repeat("ArrayOf", $level);
            $xsdType = $this->_getStrippedXsdType($singularType);
            $arrayType = $prefix.$xsdType;
            return $arrayType;
        }
    }

    /**
     * Strip the xsd: from a singularType and Format it nice for ArrayOf<Type> naming
     *
     * @param  string $singularType
     * @return string
     */
    protected function _getStrippedXsdType($singularType)
    {
        return ucfirst(substr(strtolower($singularType), 4));
    }

    /**
     * From a nested defintion with type[], get the singular xsd:type
     *
     * @throws Zend_Soap_Wsdl_Exception When no xsd:simpletype can be detected.
     * @param  string $type
     * @return string
     */
    protected function _getSingularType($type)
    {
        $singulartype = $this->getContext()->getType(str_replace("[]", "", $type));

        if(substr($singulartype, 0, 4) != "xsd:") {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception(sprintf(
                'ArrayOfTypeSequence Strategy works only with arrays of simple types like int, string, boolean, not with "%s".'.
                'You may use Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex for more complex types.', $type
            ));
        }
        return $singulartype;
    }

    /**
     * Return the array nesting level based on the type name
     *
     * @param  string $type
     * @return integer
     */
    protected function _getNestedCount($type)
    {
        return substr_count($type, "[]");
    }

    /**
     * Append the complex type definition to the WSDL via the context access
     *
     * @param  string $arrayType
     * @param  string $childTypeName
     * @return void
     */
    protected function _addElementFromWsdlAndChildTypes($arrayType, $childTypeName)
    {
        if (!in_array($arrayType, $this->getContext()->getTypes())) {
            $dom = $this->getContext()->toDomDocument();

            $complexType = $dom->createElement('xsd:complexType');
            $complexType->setAttribute('name', $arrayType);

            $sequence = $dom->createElement('xsd:sequence');

            $element = $dom->createElement('xsd:element');
            $element->setAttribute('name',      'item');
            $element->setAttribute('type',      $childTypeName);
            $element->setAttribute('minOccurs', 0);
            $element->setAttribute('maxOccurs', 'unbounded');
            $sequence->appendChild($element);

            $complexType->appendChild($sequence);

            $this->getContext()->getSchema()->appendChild($complexType);
            $this->getContext()->addType($arrayType);
        }
    }
}PKpG[���ƣ�Soap/Wsdl/Strategy/AnyType.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @subpackage Wsdl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

class Zend_Soap_Wsdl_Strategy_AnyType implements Zend_Soap_Wsdl_Strategy_Interface
{
    /**
     * Not needed in this strategy.
     *
     * @param Zend_Soap_Wsdl $context
     */
    public function setContext(Zend_Soap_Wsdl $context)
    {
        
    }

    /**
     * Returns xsd:anyType regardless of the input.
     *
     * @param string $type
     * @return string
     */
    public function addComplexType($type)
    {
        return 'xsd:anyType';
    }
}PKpG[V�z#++)Soap/Wsdl/Strategy/ArrayOfTypeComplex.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @subpackage Wsdl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

require_once "Zend/Soap/Wsdl/Strategy/DefaultComplexType.php";

class Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex extends Zend_Soap_Wsdl_Strategy_DefaultComplexType
{
    /**
     * Add an ArrayOfType based on the xsd:complexType syntax if type[] is detected in return value doc comment.
     *
     * @param string $type
     * @return string tns:xsd-type
     */
    public function addComplexType($type)
    {
        $nestingLevel = $this->_getNestedCount($type);

        if($nestingLevel > 1) {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception(
                "ArrayOfTypeComplex cannot return nested ArrayOfObject deeper than ".
                "one level. Use array object properties to return deep nested data.
            ");
        }

        $singularType = $this->_getSingularPhpType($type);

        if(!class_exists($singularType)) {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception(sprintf(
                "Cannot add a complex type %s that is not an object or where ".
                "class could not be found in 'DefaultComplexType' strategy.", $type
            ));
        }

        if($nestingLevel == 1) {
            // The following blocks define the Array of Object structure
            $xsdComplexTypeName = $this->_addArrayOfComplexType($singularType, $type);
        } else {
            $xsdComplexTypeName = $singularType;
        }

        // The array for the objects has been created, now build the object definition:
        if(!in_array($singularType, $this->getContext()->getTypes())) {
            parent::addComplexType($singularType);
        }

        return "tns:".$xsdComplexTypeName;
    }

    protected function _addArrayOfComplexType($singularType, $type)
    {
        $dom = $this->getContext()->toDomDocument();

        $xsdComplexTypeName = $this->_getXsdComplexTypeName($singularType);
        $complexType = $dom->createElement('xsd:complexType');
        $complexType->setAttribute('name', $xsdComplexTypeName);

        $complexContent = $dom->createElement("xsd:complexContent");
        $complexType->appendChild($complexContent);

        $xsdRestriction = $dom->createElement("xsd:restriction");
        $xsdRestriction->setAttribute('base', 'soap-enc:Array');
        $complexContent->appendChild($xsdRestriction);

        $xsdAttribute = $dom->createElement("xsd:attribute");
        $xsdAttribute->setAttribute("ref", "soap-enc:arrayType");
        $xsdAttribute->setAttribute("wsdl:arrayType", sprintf("tns:%s[]", $singularType));
        $xsdRestriction->appendChild($xsdAttribute);

        $this->getContext()->getSchema()->appendChild($complexType);
        $this->getContext()->addType($type);

        return $xsdComplexTypeName;
    }

    protected function _getXsdComplexTypeName($type)
    {
        return sprintf('ArrayOf%s', $type);
    }

    /**
     * From a nested defintion with type[], get the singular PHP Type
     *
     * @param  string $type
     * @return string
     */
    protected function _getSingularPhpType($type)
    {
        return str_replace("[]", "", $type);
    }

    /**
     * Return the array nesting level based on the type name
     *
     * @param  string $type
     * @return integer
     */
    protected function _getNestedCount($type)
    {
        return substr_count($type, "[]");
    }
}PKpG[or�o�W�WSoap/Server.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Server_Interface */
require_once 'Zend/Server/Interface.php';

/** Zend_Soap_Server_Exception */
require_once 'Zend/Soap/Server/Exception.php';

/**
 * Zend_Soap_Server
 *
 * @category   Zend
 * @package    Zend_Soap
 * @uses       Zend_Server_Interface
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Server.php 12627 2008-11-13 17:04:56Z alexander $
 */
class Zend_Soap_Server implements Zend_Server_Interface
{
    /**
     * Actor URI
     * @var string URI
     */
    protected $_actor;

    /**
     * Class registered with this server
     * @var string
     */
    protected $_class;

    /**
     * Arguments to pass to {@link $_class} constructor
     * @var array
     */
    protected $_classArgs = array();

    /**
     * Object registered with this server
     */
    protected $_object;

    /**
     * Array of SOAP type => PHP class pairings for handling return/incoming values
     * @var array
     */
    protected $_classmap;

    /**
     * Encoding
     * @var string
     */
    protected $_encoding;

    /**
     * Registered fault exceptions
     * @var array
     */
    protected $_faultExceptions = array();

    /**
     * Functions registered with this server; may be either an array or the SOAP_FUNCTIONS_ALL
     * constant
     * @var array|int
     */
    protected $_functions = array();

    /**
     * Persistence mode; should be one of the SOAP persistence constants
     * @var int
     */
    protected $_persistence;

    /**
     * Request XML
     * @var string
     */
    protected $_request;

    /**
     * Response XML
     * @var string
     */
    protected $_response;

    /**
     * Flag: whether or not {@link handle()} should return a response instead
     * of automatically emitting it.
     * @var boolean
     */
    protected $_returnResponse = false;

    /**
     * SOAP version to use; SOAP_1_2 by default, to allow processing of headers
     * @var int
     */
    protected $_soapVersion = SOAP_1_2;

    /**
     * URI or path to WSDL
     * @var string
     */
    protected $_wsdl;

    /**
     * URI namespace for SOAP server
     * @var string URI
     */
    protected $_uri;

    /**
     * Constructor
     *
     * Sets display_errors INI setting to off (prevent client errors due to bad
     * XML in response). Registers {@link handlePhpErrors()} as error handler
     * for E_USER_ERROR.
     *
     * If $wsdl is provided, it is passed on to {@link setWsdl()}; if any
     * options are specified, they are passed on to {@link setOptions()}.
     *
     * @param string $wsdl
     * @param array $options
     * @return void
     */
    public function __construct($wsdl = null, array $options = null)
    {
        if (!extension_loaded('soap')) {
            throw new Zend_Soap_Server_Exception('SOAP extension is not loaded.');
        }

        if (null !== $wsdl) {
            $this->setWsdl($wsdl);
        }

        if (null !== $options) {
            $this->setOptions($options);
        }
    }

    /**
     * Set Options
     *
     * Allows setting options as an associative array of option => value pairs.
     *
     * @param  array $options
     * @return Zend_Soap_Server
     */
    public function setOptions(array $options)
    {
        foreach ($options as $key => $value) {
            switch ($key) {
                case 'actor':
                    $this->setActor($value);
                    break;
                case 'classmap':
                case 'classMap':
                    $this->setClassmap($value);
                    break;
                case 'encoding':
                    $this->setEncoding($value);
                    break;
                case 'soapVersion':
                case 'soap_version':
                    $this->setSoapVersion($value);
                    break;
                case 'uri':
                    $this->setUri($value);
                    break;
                case 'wsdl':
                    $this->setWsdl($value);
                    break;
                default:
                    break;
            }
        }

        return $this;
    }

    /**
     * Return array of options suitable for using with SoapServer constructor
     *
     * @return array
     */
    public function getOptions()
    {
        $options = array();
        if (null !== $this->_actor) {
            $options['actor'] = $this->_actor;
        }

        if (null !== $this->_classmap) {
            $options['classmap'] = $this->_classmap;
        }

        if (null !== $this->_encoding) {
            $options['encoding'] = $this->_encoding;
        }

        if (null !== $this->_soapVersion) {
            $options['soap_version'] = $this->_soapVersion;
        }

        if (null !== $this->_uri) {
            $options['uri'] = $this->_uri;
        }

        return $options;
    }

    /**
     * Set encoding
     *
     * @param  string $encoding
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception with invalid encoding argument
     */
    public function setEncoding($encoding)
    {
        if (!is_string($encoding)) {
            throw new Zend_Soap_Server_Exception('Invalid encoding specified');
        }

        $this->_encoding = $encoding;
        return $this;
    }

    /**
     * Get encoding
     *
     * @return string
     */
    public function getEncoding()
    {
        return $this->_encoding;
    }

    /**
     * Set SOAP version
     *
     * @param  int $version One of the SOAP_1_1 or SOAP_1_2 constants
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception with invalid soap version argument
     */
    public function setSoapVersion($version)
    {
        if (!in_array($version, array(SOAP_1_1, SOAP_1_2))) {
            throw new Zend_Soap_Server_Exception('Invalid soap version specified');
        }

        $this->_soapVersion = $version;
        return $this;
    }

    /**
     * Get SOAP version
     *
     * @return int
     */
    public function getSoapVersion()
    {
        return $this->_soapVersion;
    }

    /**
     * Check for valid URN
     *
     * @param  string $urn
     * @return true
     * @throws Zend_Soap_Server_Exception on invalid URN
     */
    public function validateUrn($urn)
    {
        $segs = parse_url($urn);
        if (isset($segs['scheme'])) {
            return true;
        }

        throw new Zend_Soap_Server_Exception('Invalid URN');
    }

    /**
     * Set actor
     *
     * Actor is the actor URI for the server.
     *
     * @param  string $actor
     * @return Zend_Soap_Server
     */
    public function setActor($actor)
    {
        $this->validateUrn($actor);
        $this->_actor = $actor;
        return $this;
    }

    /**
     * Retrieve actor
     *
     * @return string
     */
    public function getActor()
    {
        return $this->_actor;
    }

    /**
     * Set URI
     *
     * URI in SoapServer is actually the target namespace, not a URI; $uri must begin with 'urn:'.
     *
     * @param  string $uri
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception with invalid uri argument
     */
    public function setUri($uri)
    {
        $this->validateUrn($uri);
        $this->_uri = $uri;
        return $this;
    }

    /**
     * Retrieve URI
     *
     * @return string
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * Set classmap
     *
     * @param  array $classmap
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception for any invalid class in the class map
     */
    public function setClassmap($classmap)
    {
        if (!is_array($classmap)) {
            throw new Zend_Soap_Server_Exception('Classmap must be an array');
        }
        foreach ($classmap as $type => $class) {
            if (!class_exists($class)) {
                throw new Zend_Soap_Server_Exception('Invalid class in class map');
            }
        }

        $this->_classmap = $classmap;
        return $this;
    }

    /**
     * Retrieve classmap
     *
     * @return mixed
     */
    public function getClassmap()
    {
        return $this->_classmap;
    }

    /**
     * Set wsdl
     *
     * @param string $wsdl  URI or path to a WSDL
     * @return Zend_Soap_Server
     */
    public function setWsdl($wsdl)
    {
        is_readable($wsdl);

        $this->_wsdl = $wsdl;
        return $this;
    }

    /**
     * Retrieve wsdl
     *
     * @return string
     */
    public function getWsdl()
    {
        return $this->_wsdl;
    }

    /**
     * Attach a function as a server method
     *
     * @param array|string $function Function name, array of function names to attach,
     * or SOAP_FUNCTIONS_ALL to attach all functions
     * @param  string $namespace Ignored
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception on invalid functions
     */
    public function addFunction($function, $namespace = '')
    {
        // Bail early if set to SOAP_FUNCTIONS_ALL
        if ($this->_functions == SOAP_FUNCTIONS_ALL) {
            return $this;
        }

        if (is_array($function)) {
            foreach ($function as $func) {
                if (is_string($func) && function_exists($func)) {
                    $this->_functions[] = $func;
                } else {
                    throw new Zend_Soap_Server_Exception('One or more invalid functions specified in array');
                }
            }
            $this->_functions = array_merge($this->_functions, $function);
        } elseif (is_string($function) && function_exists($function)) {
            $this->_functions[] = $function;
        } elseif ($function == SOAP_FUNCTIONS_ALL) {
            $this->_functions = SOAP_FUNCTIONS_ALL;
        } else {
            throw new Zend_Soap_Server_Exception('Invalid function specified');
        }

        if (is_array($this->_functions)) {
            $this->_functions = array_unique($this->_functions);
        }

        return $this;
    }

    /**
     * Attach a class to a server
     *
     * Accepts a class name to use when handling requests. Any additional
     * arguments will be passed to that class' constructor when instantiated.
     *
     * @param mixed $class Class name or object instance to examine and attach
     * to the server.
     * @param mixed $arg1 Optional argument to pass to class constructor
     * @param mixed $arg2 Optional second argument to pass to class constructor
     * dispatch.
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception if called more than once, or if class
     * does not exist
     */
    public function setClass($class, $arg1 = null, $arg2 = null)
    {
        if (isset($this->_class)) {
            throw new Zend_Soap_Server_Exception('A class has already been registered with this soap server instance');
        }

        if (!is_string($class)) {
            throw new Zend_Soap_Server_Exception('Invalid class argument (' . gettype($class) . ')');
        }

        if (!class_exists($class)) {
            throw new Zend_Soap_Server_Exception('Class "' . $class . '" does not exist');
        }

        $this->_class = $class;
        if (1 < func_num_args()) {
            $argv = func_get_args();
            array_shift($argv);
            $this->_classArgs = $argv;
        }

        return $this;
    }

    /**
     * Attach an object to a server
     *
     * Accepts an instanciated object to use when handling requests.
     *
     * @param object $object
     * @return Zend_Soap_Server
     */
    public function setObject($object)
    {
        if(!is_object($object)) {
            throw new Zend_Soap_Server_Exception('Invalid object argument ('.gettype($object).')');
        }

        if(isset($this->_object)) {
            throw new Zend_Soap_Server_Exception('An object has already been registered with this soap server instance');
        }

        $this->_object = $object;

        return $this;
    }

    /**
     * Return a server definition array
     *
     * Returns a list of all functions registered with {@link addFunction()},
     * merged with all public methods of the class set with {@link setClass()}
     * (if any).
     *
     * @access public
     * @return array
     */
    public function getFunctions()
    {
        $functions = array();
        if (null !== $this->_class) {
            $functions = get_class_methods($this->_class);
        } elseif (null !== $this->_object) {
            $functions = get_class_methods($this->_object);
        }

        return array_merge((array) $this->_functions, $functions);
    }

    /**
     * Unimplemented: Load server definition
     *
     * @param array $array
     * @return void
     * @throws Zend_Soap_Server_Exception Unimplemented
     */
    public function loadFunctions($definition)
    {
        throw new Zend_Soap_Server_Exception('Unimplemented');
    }

    /**
     * Set server persistence
     *
     * @param int $mode
     * @return Zend_Soap_Server
     */
    public function setPersistence($mode)
    {
        if (!in_array($mode, array(SOAP_PERSISTENCE_SESSION, SOAP_PERSISTENCE_REQUEST))) {
            throw new Zend_Soap_Server_Exception('Invalid persistence mode specified');
        }

        $this->_persistence = $mode;
        return $this;
    }

    /**
     * Get server persistence
     *
     * @return Zend_Soap_Server
     */
    public function getPersistence()
    {
        return $this->_persistence;
    }

    /**
     * Set request
     *
     * $request may be any of:
     * - DOMDocument; if so, then cast to XML
     * - DOMNode; if so, then grab owner document and cast to XML
     * - SimpleXMLElement; if so, then cast to XML
     * - stdClass; if so, calls __toString() and verifies XML
     * - string; if so, verifies XML
     *
     * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request
     * @return Zend_Soap_Server
     */
    private function _setRequest($request)
    {
        if ($request instanceof DOMDocument) {
            $xml = $request->saveXML();
        } elseif ($request instanceof DOMNode) {
            $xml = $request->ownerDocument->saveXML();
        } elseif ($request instanceof SimpleXMLElement) {
            $xml = $request->asXML();
        } elseif (is_object($request) || is_string($request)) {
            if (is_object($request)) {
                $xml = $request->__toString();
            } else {
                $xml = $request;
            }

            $dom = new DOMDocument();
            if (!$dom->loadXML($xml)) {
                throw new Zend_Soap_Server_Exception('Invalid XML');
            }
        }
        $this->_request = $xml;
        return $this;
    }

    /**
     * Retrieve request XML
     *
     * @return string
     */
    public function getLastRequest()
    {
        return $this->_request;
    }

    /**
     * Set return response flag
     *
     * If true, {@link handle()} will return the response instead of
     * automatically sending it back to the requesting client.
     *
     * The response is always available via {@link getResponse()}.
     *
     * @param boolean $flag
     * @return Zend_Soap_Server
     */
    public function setReturnResponse($flag)
    {
        $this->_returnResponse = ($flag) ? true : false;
        return $this;
    }

    /**
     * Retrieve return response flag
     *
     * @return boolean
     */
    public function getReturnResponse()
    {
        return $this->_returnResponse;
    }

    /**
     * Get response XML
     *
     * @return string
     */
    public function getLastResponse()
    {
        return $this->_response;
    }

    /**
     * Get SoapServer object
     *
     * Uses {@link $_wsdl} and return value of {@link getOptions()} to instantiate
     * SoapServer object, and then registers any functions or class with it, as
     * well as peristence.
     *
     * @return SoapServer
     */
    protected function _getSoap()
    {
        $options = $this->getOptions();
        $server  = new SoapServer($this->_wsdl, $options);

        if (!empty($this->_functions)) {
            $server->addFunction($this->_functions);
        }

        if (!empty($this->_class)) {
            $args = $this->_classArgs;
            array_unshift($args, $this->_class);
            call_user_func_array(array($server, 'setClass'), $args);
        }

        if (!empty($this->_object)) {
            $server->setObject($this->_object);
        }

        if (null !== $this->_persistence) {
            $server->setPersistence($this->_persistence);
        }

        return $server;
    }

    /**
     * Handle a request
     *
     * Instantiates SoapServer object with options set in object, and
     * dispatches its handle() method.
     *
     * $request may be any of:
     * - DOMDocument; if so, then cast to XML
     * - DOMNode; if so, then grab owner document and cast to XML
     * - SimpleXMLElement; if so, then cast to XML
     * - stdClass; if so, calls __toString() and verifies XML
     * - string; if so, verifies XML
     *
     * If no request is passed, pulls request using php:://input (for
     * cross-platform compatability purposes).
     *
     * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request Optional request
     * @return void|string
     */
    public function handle($request = null)
    {
        if (null === $request) {
            $request = file_get_contents('php://input');
        }

        // Set Zend_Soap_Server error handler
        $displayErrorsOriginalState = ini_get('display_errors');
        ini_set('display_errors', false);
        set_error_handler(array($this, 'handlePhpErrors'), E_USER_ERROR);

        try {
            $this->_setRequest($request);
        } catch (Zend_Soap_Server_Exception $setRequestException) {
            // Do nothing. Catch exception and store it in the $setRequestException variable is all what we need.
        }

        $soap = $this->_getSoap();

        ob_start();
        if (isset($setRequestException)) {
            // Send SOAP fault message if we've catched exception
            $soap->fault("Sender", $setRequestException->getMessage());
        } else {
            try {
                $soap->handle($request);
            } catch (Exception $e) {
                $fault = $this->fault($e);
                $soap->fault($fault->faultcode, $fault->faultstring);
            }
        }
        $this->_response = ob_get_clean();

        // Restore original error handler
        restore_error_handler();
        ini_set('display_errors', $displayErrorsOriginalState);

        if (!$this->_returnResponse) {
            echo $this->_response;
            return;
        }

        return $this->_response;
    }

    /**
     * Register a valid fault exception
     *
     * @param  string|array $class Exception class or array of exception classes
     * @return Zend_Soap_Server
     */
    public function registerFaultException($class)
    {
        $this->_faultExceptions = array_merge($this->_faultExceptions, (array) $class);
        return $this;
    }

    /**
     * Deregister a fault exception from the fault exception stack
     *
     * @param  string $class
     * @return boolean
     */
    public function deregisterFaultException($class)
    {
        if (in_array($class, $this->_faultExceptions, true)) {
            $index = array_search($class, $this->_faultExceptions);
            unset($this->_faultExceptions[$index]);
            return true;
        }

        return false;
    }

    /**
     * Return fault exceptions list
     *
     * @return array
     */
    public function getFaultExceptions()
    {
        return $this->_faultExceptions;
    }

    /**
     * Generate a server fault
     *
     * Note that the arguments are reverse to those of SoapFault.
     *
     * If an exception is passed as the first argument, its message and code
     * will be used to create the fault object if it has been registered via
     * {@Link registerFaultException()}.
     *
     * @link   http://www.w3.org/TR/soap12-part1/#faultcodes
     * @param  string|Exception $fault
     * @param  string $code SOAP Fault Codes
     * @return SoapFault
     */
    public function fault($fault = null, $code = "Reciever")
    {
        if ($fault instanceof Exception) {
            $class = get_class($fault);
            if (in_array($class, $this->_faultExceptions)) {
                $message = $fault->getMessage();
                $eCode   = $fault->getCode();
                $code    = empty($eCode) ? $code : $eCode;
            } else {
                $message = 'Unknown error';
            }
        } elseif(is_string($fault)) {
            $message = $fault;
        } else {
            $message = 'Unknown error';
        }

        $allowedFaultModes = array(
            'VersionMismatch', 'MustUnderstand', 'DataEncodingUnknown',
            'Sender', 'Receiver', 'Server'
        );
        if(!in_array($code, $allowedFaultModes)) {
            $code = "Reciever";
        }

        return new SoapFault($code, $message);
    }

    /**
     * Throw PHP errors as SoapFaults
     *
     * @param int $errno
     * @param string $errstr
     * @param string $errfile
     * @param int $errline
     * @param array $errcontext
     * @return void
     * @throws SoapFault
     */
    public function handlePhpErrors($errno, $errstr, $errfile = null, $errline = null, array $errcontext = null)
    {
        throw $this->fault($errstr, "Reciever");
    }
}
PKpG[�%RQ33Soap/AutoDiscover.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AutoDiscover.php 13636 2009-01-14 21:19:24Z beberlei $
 */

require_once 'Zend/Server/Interface.php';
require_once 'Zend/Soap/Wsdl.php';
require_once 'Zend/Server/Reflection.php';
require_once 'Zend/Server/Exception.php';
require_once 'Zend/Server/Abstract.php';
require_once 'Zend/Uri.php';

/**
 * Zend_Soap_AutoDiscover
 *
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_AutoDiscover implements Zend_Server_Interface {
    /**
     * @var Zend_Soap_Wsdl
     */
    protected $_wsdl = null;

    /**
     * @var Zend_Server_Reflection
     */
    protected $_reflection = null;

    /**
     * @var array
     */
    protected $_functions = array();

    /**
     * @var boolean
     */
    protected $_strategy;

    /**
     * Url where the WSDL file will be available at.
     *
     * @var WSDL Uri
     */
    protected $_uri;

    /**
     * Constructor
     *
     * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy
     * @param string|Zend_Uri $uri
     */
    public function __construct($strategy = true, $uri=null)
    {
        $this->_reflection = new Zend_Server_Reflection();
        $this->setComplexTypeStrategy($strategy);

        if($uri !== null) {
            $this->setUri($uri);
        }
    }

    /**
     * Set the location at which the WSDL file will be availabe.
     *
     * @see Zend_Soap_Exception
     * @throws Zend_Soap_AutoDiscover_Exception
     * @param  Zend_Uri|string $uri
     * @return Zend_Soap_AutoDiscover
     */
    public function setUri($uri)
    {
        if(is_string($uri)) {
            $uri = Zend_Uri::factory($uri);
        } else if(!($uri instanceof Zend_Uri)) {
            require_once "Zend/Soap/AutoDiscover/Exception.php";
            throw new Zend_Soap_AutoDiscover_Exception("No uri given to Zend_Soap_AutoDiscover::setUri as string or Zend_Uri instance.");
        }
        $this->_uri = $uri;

        // change uri in WSDL file also if existant
        if($this->_wsdl instanceof Zend_Soap_Wsdl) {
            $this->_wsdl->setUri($uri);
        }

        return $this;
    }

    /**
     * Return the current Uri that the SOAP WSDL Service will be located at.
     *
     * @return Zend_Uri
     */
    public function getUri()
    {
        if($this->_uri instanceof Zend_Uri) {
            $uri = $this->_uri;
        } else {
            $schema     = $this->getSchema();
            $host       = $this->getHostName();
            $scriptName = $this->getRequestUriWithoutParameters();
            $uri = Zend_Uri::factory($schema . '://' . $host . $scriptName);
            $this->setUri($uri);
        }
        return $uri;
    }

    /**
     * Detect and returns the current HTTP/HTTPS Schema
     *
     * @return string
     */
    protected function getSchema()
    {
        $schema = "http";
        if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
            $schema = 'https';
        }
        return $schema;
    }

    /**
     * Detect and return the current hostname
     *
     * @return string
     */
    protected function getHostName()
    {
        if(isset($_SERVER['HTTP_HOST'])) {
            $host = $_SERVER['HTTP_HOST'];
        } else {
            $host = $_SERVER['SERVER_NAME'];
        }
        return $host;
    }

    /**
     * Detect and return the current script name without parameters
     *
     * @return string
     */
    protected function getRequestUriWithoutParameters()
    {
        if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch
            $requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
        } elseif (isset($_SERVER['REQUEST_URI'])) {
            $requestUri = $_SERVER['REQUEST_URI'];
        } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI
            $requestUri = $_SERVER['ORIG_PATH_INFO'];
        } else {
            $requestUri = $_SERVER['SCRIPT_NAME'];
        }
        if( ($pos = strpos($requestUri, "?")) !== false) {
            $requestUri = substr($requestUri, 0, $pos);
        }

        return $requestUri;
    }

    /**
     * Set the strategy that handles functions and classes that are added AFTER this call.
     *
     * @param  boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy
     * @return Zend_Soap_AutoDiscover
     */
    public function setComplexTypeStrategy($strategy)
    {
        $this->_strategy = $strategy;
        if($this->_wsdl instanceof  Zend_Soap_Wsdl) {
            $this->_wsdl->setComplexTypeStrategy($strategy);
        }

        return $this;
    }

    /**
     * Set the Class the SOAP server will use
     *
     * @param string $class Class Name
     * @param string $namespace Class Namspace - Not Used
     * @param array $argv Arguments to instantiate the class - Not Used
     */
    public function setClass($class, $namespace = '', $argv = null)
    {
        $uri = $this->getUri();

        $wsdl = new Zend_Soap_Wsdl($class, $uri, $this->_strategy);

        $port = $wsdl->addPortType($class . 'Port');
        $binding = $wsdl->addBinding($class . 'Binding', 'tns:' .$class. 'Port');

        $wsdl->addSoapBinding($binding, 'rpc');
        $wsdl->addService($class . 'Service', $class . 'Port', 'tns:' . $class . 'Binding', $uri);
        foreach ($this->_reflection->reflectClass($class)->getMethods() as $method) {
            /* <wsdl:portType>'s */
            $portOperation = $wsdl->addPortOperation($port, $method->getName(), 'tns:' .$method->getName(). 'Request', 'tns:' .$method->getName(). 'Response');
            $desc = $method->getDescription();
            if (strlen($desc) > 0) {
                /** @todo check, what should be done for portoperation documentation */
                //$wsdl->addDocumentation($portOperation, $desc);
            }
            /* </wsdl:portType>'s */

            $this->_functions[] = $method->getName();

            $selectedPrototype = null;
            $maxNumArgumentsOfPrototype = -1;
            foreach ($method->getPrototypes() as $prototype) {
                $numParams = count($prototype->getParameters());
                if($numParams > $maxNumArgumentsOfPrototype) {
                    $maxNumArgumentsOfPrototype = $numParams;
                    $selectedPrototype = $prototype;
                }
            }

            if($selectedPrototype != null) {
                $prototype = $selectedPrototype;
                $args = array();
                foreach($prototype->getParameters() as $param) {
                    $args[$param->getName()] = $wsdl->getType($param->getType());
                }
                $message = $wsdl->addMessage($method->getName() . 'Request', $args);
                if (strlen($desc) > 0) {
                    //$wsdl->addDocumentation($message, $desc);
                }
                if ($prototype->getReturnType() != "void") {
                    $message = $wsdl->addMessage($method->getName() . 'Response', array($method->getName() . 'Return' => $wsdl->getType($prototype->getReturnType())));
                }

                /* <wsdl:binding>'s */
                $operation = $wsdl->addBindingOperation($binding, $method->getName(),  array('use' => 'encoded', 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/"), array('use' => 'encoded', 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/"));
                $wsdl->addSoapOperation($operation, $uri->getUri() . '#' .$method->getName());
                /* </wsdl:binding>'s */
            }
        }
        $this->_wsdl = $wsdl;
    }

    /**
     * Add a Single or Multiple Functions to the WSDL
     *
     * @param string $function Function Name
     * @param string $namespace Function namespace - Not Used
     */
    public function addFunction($function, $namespace = '')
    {
        static $port;
        static $operation;
        static $binding;

        if (!is_array($function)) {
            $function = (array) $function;
        }

        $uri = $this->getUri();

        if (!($this->_wsdl instanceof Zend_Soap_Wsdl)) {
            $parts = explode('.', basename($_SERVER['SCRIPT_NAME']));
            $name = $parts[0];
            $wsdl = new Zend_Soap_Wsdl($name, $uri, $this->_strategy);

            $port = $wsdl->addPortType($name . 'Port');
            $binding = $wsdl->addBinding($name . 'Binding', 'tns:' .$name. 'Port');

            $wsdl->addSoapBinding($binding, 'rpc');
            $wsdl->addService($name . 'Service', $name . 'Port', 'tns:' . $name . 'Binding', $uri);
        } else {
            $wsdl = $this->_wsdl;
        }

        foreach ($function as $func) {
            $method = $this->_reflection->reflectFunction($func);
            foreach ($method->getPrototypes() as $prototype) {
                $args = array();
                foreach ($prototype->getParameters() as $param) {
                    $args[$param->getName()] = $wsdl->getType($param->getType());
                }
                $message = $wsdl->addMessage($method->getName() . 'Request', $args);
                $desc = $method->getDescription();
                if (strlen($desc) > 0) {
                    //$wsdl->addDocumentation($message, $desc);
                }
                if ($prototype->getReturnType() != "void") {
                    $message = $wsdl->addMessage($method->getName() . 'Response', array($method->getName() . 'Return' => $wsdl->getType($prototype->getReturnType())));
                }
                 /* <wsdl:portType>'s */
                   $portOperation = $wsdl->addPortOperation($port, $method->getName(), 'tns:' .$method->getName(). 'Request', 'tns:' .$method->getName(). 'Response');
                if (strlen($desc) > 0) {
                    //$wsdl->addDocumentation($portOperation, $desc);
                }
                   /* </wsdl:portType>'s */

                /* <wsdl:binding>'s */
                $operation = $wsdl->addBindingOperation($binding, $method->getName(),  array('use' => 'encoded', 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/"), array('use' => 'encoded', 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/"));
                $wsdl->addSoapOperation($operation, $uri->getUri() . '#' .$method->getName());
                /* </wsdl:binding>'s */

                $this->_functions[] = $method->getName();

                // We will only add one prototype
                break;
            }
        }
        $this->_wsdl = $wsdl;
    }

    /**
     * Action to take when an error occurs
     *
     * @param string $fault
     * @param string|int $code
     */
    public function fault($fault = null, $code = null)
    {
        require_once "Zend/Soap/AutoDiscover/Exception.php";
        throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover.");
    }

    /**
     * Handle the Request
     *
     * @param string $request A non-standard request - Not Used
     */
    public function handle($request = false)
    {
        if (!headers_sent()) {
            header('Content-Type: text/xml');
        }
        $this->_wsdl->dump();
    }

    /**
     * Return an array of functions in the WSDL
     *
     * @return array
     */
    public function getFunctions()
    {
        return $this->_functions;
    }

    /**
     * Load Functions
     *
     * @param unknown_type $definition
     */
    public function loadFunctions($definition)
    {
        require_once "Zend/Soap/AutoDiscover/Exception.php";
        throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover.");
    }

    /**
     * Set Persistance
     *
     * @param int $mode
     */
    public function setPersistence($mode)
    {
        require_once "Zend/Soap/AutoDiscover/Exception.php";
        throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover.");
    }

    /**
     * Returns an XSD Type for the given PHP type
     *
     * @param string $type PHP Type to get the XSD type for
     * @return string
     */
    public function getType($type)
    {
        if (!($this->_wsdl instanceof Zend_Soap_Wsdl)) {
            /** @todo Exception throwing may be more correct */

            // WSDL is not defined yet, so we can't recognize type in context of current service
            return '';
        } else {
            return $this->_wsdl->getType($type);
        }
    }
}

PKpG[��`sKsK
Soap/Wsdl.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Wsdl.php 12622 2008-11-13 15:43:54Z alexander $
 */

require_once 'Zend/Server/Exception.php';

require_once "Zend/Soap/Wsdl/Strategy/Interface.php";
require_once "Zend/Soap/Wsdl/Strategy/Abstract.php";

/**
 * Zend_Soap_Wsdl
 *
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Wsdl
{
    /**
     * @var object DomDocument Instance
     */
    private $_dom;

    /**
     * @var object WSDL Root XML_Tree_Node
     */
    private $_wsdl;

    /**
     * @var string URI where the WSDL will be available
     */
    private $_uri;

    /**
     * @var DOMElement
     */
    private $_schema = null;

    /**
     * Types defined on schema
     *
     * @var array
     */
    private $_includedTypes = array();

    /**
     * Strategy for detection of complex types
     */
    protected $_strategy = null;


    /**
     * Constructor
     *
     * @param string  $name Name of the Web Service being Described
     * @param string  $uri URI where the WSDL will be available
     * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy
     */
    public function __construct($name, $uri, $strategy = true)
    {
        if ($uri instanceof Zend_Uri_Http) {
            $uri = $uri->getUri();
        }
        $this->_uri = $uri;

        /**
         * @todo change DomDocument object creation from cparsing to construxting using API
         * It also should authomatically escape $name and $uri values if necessary
         */
        $wsdl = "<?xml version='1.0' ?>
                <definitions name='$name' targetNamespace='$uri'
                    xmlns='http://schemas.xmlsoap.org/wsdl/'
                    xmlns:tns='$uri'
                    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
                    xmlns:xsd='http://www.w3.org/2001/XMLSchema'
                    xmlns:soap-enc='http://schemas.xmlsoap.org/soap/encoding/'
                    xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'></definitions>";
        $this->_dom = new DOMDocument();
        if (!$this->_dom->loadXML($wsdl)) {
            throw new Zend_Server_Exception('Unable to create DomDocument');
        } else {
            $this->_wsdl = $this->_dom->documentElement;
        }

        $this->setComplexTypeStrategy($strategy);
    }

    /**
     * Set a new uri for this WSDL
     *
     * @param  string|Zend_Uri_Http $uri
     * @return Zend_Server_Wsdl
     */
    public function setUri($uri)
    {
        if ($uri instanceof Zend_Uri_Http) {
            $uri = $uri->getUri();
        }
        $oldUri = $this->_uri;
        $this->_uri = $uri;

        if($this->_dom !== null) {
            // @todo: This is the worst hack ever, but its needed due to design and non BC issues of WSDL generation
            $xml = $this->_dom->saveXML();
            $xml = str_replace($oldUri, $uri, $xml);
            $this->_dom = new DOMDocument();
            $this->_dom->loadXML($xml);
        }

        return $this;
    }

    /**
     * Set a strategy for complex type detection and handling
     *
     * @todo Boolean is for backwards compability with extractComplexType object var. Remove it in later versions.
     * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy
     * @return Zend_Soap_Wsdl
     */
    public function setComplexTypeStrategy($strategy)
    {
        if($strategy === true) {
            require_once "Zend/Soap/Wsdl/Strategy/DefaultComplexType.php";
            $strategy = new Zend_Soap_Wsdl_Strategy_DefaultComplexType();
        } else if($strategy === false) {
            require_once "Zend/Soap/Wsdl/Strategy/AnyType.php";
            $strategy = new Zend_Soap_Wsdl_Strategy_AnyType();
        } else if(is_string($strategy)) {
            if(class_exists($strategy)) {
                $strategy = new $strategy();
            } else {
                require_once "Zend/Soap/Wsdl/Exception.php";
                throw new Zend_Soap_Wsdl_Exception(
                    sprintf("Strategy with name '%s does not exist.", $strategy
                ));
            }
        }

        if(!($strategy instanceof Zend_Soap_Wsdl_Strategy_Interface)) {
            require_once "Zend/Soap/Wsdl/Exception.php";
            throw new Zend_Soap_Wsdl_Exception("Set a strategy that is not of type 'Zend_Soap_Wsdl_Strategy_Interface'");
        }
        $this->_strategy = $strategy;
        return $this;
    }

    /**
     * Get the current complex type strategy
     *
     * @return Zend_Soap_Wsdl_Strategy_Interface
     */
    public function getComplexTypeStrategy()
    {
        return $this->_strategy;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_messages message} element to the WSDL
     *
     * @param string $name Name for the {@link http://www.w3.org/TR/wsdl#_messages message}
     * @param array $parts An array of {@link http://www.w3.org/TR/wsdl#_message parts}
     *                     The array is constructed like: 'name of part' => 'part xml schema data type'
     * @return object The new message's XML_Tree_Node for use in {@link function addDocumentation}
     */
    public function addMessage($name, $parts)
    {
        $message = $this->_dom->createElement('message');

        $message->setAttribute('name', $name);

        if (sizeof($parts) > 0) {
            foreach ($parts as $name => $type) {
                $part = $this->_dom->createElement('part');
                $part->setAttribute('name', $name);
                $part->setAttribute('type', $type);
                $message->appendChild($part);
            }
        }

        $this->_wsdl->appendChild($message);

        return $message;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_porttypes portType} element to the WSDL
     *
     * @param string $name portType element's name
     * @return object The new portType's XML_Tree_Node for use in {@link function addPortOperation} and {@link function addDocumentation}
     */
    public function addPortType($name)
    {
        $portType = $this->_dom->createElement('portType');
        $portType->setAttribute('name', $name);
        $this->_wsdl->appendChild($portType);

        return $portType;
    }

    /**
     * Add an {@link http://www.w3.org/TR/wsdl#_request-response operation} element to a portType element
     *
     * @param object $portType a portType XML_Tree_Node, from {@link function addPortType}
     * @param string $name Operation name
     * @param string $input Input Message
     * @param string $output Output Message
     * @param string $fault Fault Message
     * @return object The new operation's XML_Tree_Node for use in {@link function addDocumentation}
     */
    public function addPortOperation($portType, $name, $input = false, $output = false, $fault = false)
    {
        $operation = $this->_dom->createElement('operation');
        $operation->setAttribute('name', $name);

        if (is_string($input) && (strlen(trim($input)) >= 1)) {
            $node = $this->_dom->createElement('input');
            $node->setAttribute('message', $input);
            $operation->appendChild($node);
        }
        if (is_string($output) && (strlen(trim($output)) >= 1)) {
            $node= $this->_dom->createElement('output');
            $node->setAttribute('message', $output);
            $operation->appendChild($node);
        }
        if (is_string($fault) && (strlen(trim($fault)) >= 1)) {
            $node = $this->_dom->createElement('fault');
            $node->setAttribute('message', $fault);
            $operation->appendChild($node);
        }

        $portType->appendChild($operation);

        return $operation;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_bindings binding} element to WSDL
     *
     * @param string $name Name of the Binding
     * @param string $type name of the portType to bind
     * @return object The new binding's XML_Tree_Node for use with {@link function addBindingOperation} and {@link function addDocumentation}
     */
    public function addBinding($name, $portType)
    {
        $binding = $this->_dom->createElement('binding');
        $binding->setAttribute('name', $name);
        $binding->setAttribute('type', $portType);

        $this->_wsdl->appendChild($binding);

        return $binding;
    }

    /**
     * Add an operation to a binding element
     *
     * @param object $binding A binding XML_Tree_Node returned by {@link function addBinding}
     * @param array $input An array of attributes for the input element, allowed keys are: 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information}
     * @param array $output An array of attributes for the output element, allowed keys are: 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information}
     * @param array $fault An array of attributes for the fault element, allowed keys are: 'name', 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information}
     * @return object The new Operation's XML_Tree_Node for use with {@link function addSoapOperation} and {@link function addDocumentation}
     */
    public function addBindingOperation($binding, $name, $input = false, $output = false, $fault = false)
    {
        $operation = $this->_dom->createElement('operation');
        $operation->setAttribute('name', $name);

        if (is_array($input)) {
            $node = $this->_dom->createElement('input');
            $soap_node = $this->_dom->createElement('soap:body');
            foreach ($input as $name => $value) {
                $soap_node->setAttribute($name, $value);
            }
            $node->appendChild($soap_node);
            $operation->appendChild($node);
        }

        if (is_array($output)) {
            $node = $this->_dom->createElement('output');
            $soap_node = $this->_dom->createElement('soap:body');
            foreach ($output as $name => $value) {
                $soap_node->setAttribute($name, $value);
            }
            $node->appendChild($soap_node);
            $operation->appendChild($node);
        }

        if (is_array($fault)) {
            $node = $this->_dom->createElement('fault');
            if (isset($fault['name'])) {
                $node->setAttribute('name', $fault['name']);
            }
            $soap_node = $this->_dom->createElement('soap:body');
            foreach ($output as $name => $value) {
                $soap_node->setAttribute($name, $value);
            }
            $node->appendChild($soap_node);
            $operation->appendChild($node);
        }

        $binding->appendChild($operation);

        return $operation;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_soap:binding SOAP binding} element to a Binding element
     *
     * @param object $binding A binding XML_Tree_Node returned by {@link function addBinding}
     * @param string $style binding style, possible values are "rpc" (the default) and "document"
     * @param string $transport Transport method (defaults to HTTP)
     * @return boolean
     */
    public function addSoapBinding($binding, $style = 'document', $transport = 'http://schemas.xmlsoap.org/soap/http')
    {
        $soap_binding = $this->_dom->createElement('soap:binding');
        $soap_binding->setAttribute('style', $style);
        $soap_binding->setAttribute('transport', $transport);

        $binding->appendChild($soap_binding);

        return $soap_binding;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_soap:operation SOAP operation} to an operation element
     *
     * @param object $operation An operation XML_Tree_Node returned by {@link function addBindingOperation}
     * @param string $soap_action SOAP Action
     * @return boolean
     */
    public function addSoapOperation($binding, $soap_action)
    {
        if ($soap_action instanceof Zend_Uri_Http) {
            $soap_action = $soap_action->getUri();
        }
        $soap_operation = $this->_dom->createElement('soap:operation');
        $soap_operation->setAttribute('soapAction', $soap_action);

        $binding->insertBefore($soap_operation, $binding->firstChild);

        return $soap_operation;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_services service} element to the WSDL
     *
     * @param string $name Service Name
     * @param string $port_name Name of the port for the service
     * @param string $binding Binding for the port
     * @param string $location SOAP Address for the service
     * @return object The new service's XML_Tree_Node for use with {@link function addDocumentation}
     */
    public function addService($name, $port_name, $binding, $location)
    {
        if ($location instanceof Zend_Uri_Http) {
            $location = $location->getUri();
        }
        $service = $this->_dom->createElement('service');
        $service->setAttribute('name', $name);

        $port = $this->_dom->createElement('port');
        $port->setAttribute('name', $port_name);
        $port->setAttribute('binding', $binding);

        $soap_address = $this->_dom->createElement('soap:address');
        $soap_address->setAttribute('location', $location);

        $port->appendChild($soap_address);
        $service->appendChild($port);

        $this->_wsdl->appendChild($service);

        return $service;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_documentation document} element to any element in the WSDL
     *
     * @param object $input_node An XML_Tree_Node returned by another method to add the document to
     * @param string $document Human readable documentation for the node
     * @return boolean
     */
    public function addDocumentation($input_node, $documentation)
    {
        if ($input_node === $this) {
            $node = $this->_dom->documentElement;
        } else {
            $node = $input_node;
        }

        /** @todo Check if 'documentation' is a correct name for the element (WSDL spec uses 'document') */
        $doc = $this->_dom->createElement('documentation');
        $doc_cdata = $this->_dom->createTextNode($documentation);
        $doc->appendChild($doc_cdata);
        $node->appendChild($doc);

        return $doc;
    }

    /**
     * Add WSDL Types element
     *
     * @param object $types A DomDocument|DomNode|DomElement|DomDocumentFragment with all the XML Schema types defined in it
     */
    public function addTypes($types)
    {
        if ($types instanceof DomDocument) {
            $dom = $this->_dom->importNode($types->documentElement);
            $this->_wsdl->appendChild($types->documentElement);
        } elseif ($types instanceof DomNode || $types instanceof DomElement || $types instanceof DomDocumentFragment ) {
            $dom = $this->_dom->importNode($types);
            $this->_wsdl->appendChild($dom);
        }
    }

    /**
     * Add a complex type name that is part of this WSDL and can be used in signatures.
     *
     * @param string $type
     * @return Zend_Soap_Wsdl
     */
    public function addType($type)
    {
        if(!in_array($type, $this->_includedTypes)) {
            $this->_includedTypes[] = $type;
        }
        return $this;
    }

    /**
     * Return an array of all currently included complex types
     *
     * @return array
     */
    public function getTypes()
    {
        return $this->_includedTypes;
    }

    /**
     * Return the Schema node of the WSDL
     *
     * @return DOMElement
     */
    public function getSchema()
    {
        return $this->_schema;
    }

    /**
     * Return the WSDL as XML
     *
     * @return string WSDL as XML
     */
    public function toXML()
    {
           return $this->_dom->saveXML();
    }

    /**
     * Return DOM Document
     *
     * @return object DomDocum ent
     */
    public function toDomDocument()
    {
        return $this->_dom;
    }

    /**
     * Echo the WSDL as XML
     *
     * @return boolean
     */
    public function dump($filename = false)
    {
        if (!$filename) {
            echo $this->toXML();
            return true;
        } else {
            return file_put_contents($filename, $this->toXML());
        }
    }

    /**
     * Returns an XSD Type for the given PHP type
     *
     * @param string $type PHP Type to get the XSD type for
     * @return string
     */
    public function getType($type)
    {
        switch (strtolower($type)) {
            case 'string':
            case 'str':
                return 'xsd:string';
                break;
            case 'int':
            case 'integer':
                return 'xsd:int';
                break;
            case 'float':
            case 'double':
                return 'xsd:float';
                break;
            case 'boolean':
            case 'bool':
                return 'xsd:boolean';
                break;
            case 'array':
                return 'soap-enc:Array';
                break;
            case 'object':
                return 'xsd:struct';
                break;
            case 'mixed':
                return 'xsd:anyType';
                break;
            case 'void':
                return '';
            default:
                // delegate retrieval of complex type to current strategy
                return $this->addComplexType($type);
            }
    }

    /**
     * This function makes sure a complex types section and schema additions are set.
     *
     * @return Zend_Soap_Wsdl
     */
    public function addSchemaTypeSection()
    {
        if ($this->_schema === null) {
            $this->_schema = $this->_dom->createElement('xsd:schema');
            $this->_schema->setAttribute('targetNamespace', $this->_uri);
            $types = $this->_dom->createElement('types');
            $types->appendChild($this->_schema);
            $this->_wsdl->appendChild($types);
        }
        return $this;
    }

    /**
     * Add a {@link http://www.w3.org/TR/wsdl#_types types} data type definition
     *
     * @param string $type Name of the class to be specified
     * @return string XSD Type for the given PHP type
     */
    public function addComplexType($type)
    {
        if (in_array($type, $this->getTypes())) {
            return "tns:$type";
        }
        $this->addSchemaTypeSection();

        $strategy = $this->getComplexTypeStrategy();
        $strategy->setContext($this);
        // delegates the detection of a complex type to the current strategy
        return $strategy->addComplexType($type);
    }
}
PKpG[�hDz>>Soap/Server/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */ 


/** Zend_Exception */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Soap_Server_Exception extends Zend_Exception
{}

PKpG[�	`9��Soap/Client/Common.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


if (extension_loaded('soap')) {

/**
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Client_Common extends SoapClient
{
    /**
     * doRequest() pre-processing method
     *
     * @var callback
     */
    protected $_doRequestCallback;

    /**
     * Common Soap Client constructor
     *
     * @param callback $doRequestMethod
     * @param string $wsdl
     * @param array $options
     */
    function __construct($doRequestCallback, $wsdl, $options)
    {
        $this->_doRequestCallback = $doRequestCallback;

        parent::__construct($wsdl, $options);
    }

    /**
     * Performs SOAP request over HTTP.
     * Overridden to implement different transport layers, perform additional XML processing or other purpose.
     *
     * @param string $request
     * @param string $location
     * @param string $action
     * @param int    $version
     * @param int    $one_way
     * @return mixed
     */
    function __doRequest($request, $location, $action, $version, $one_way = null)
    {
        if ($one_way === null) {
            return call_user_func($this->_doRequestCallback, $this, $request, $location, $action, $version);
        } else {
            return call_user_func($this->_doRequestCallback, $this, $request, $location, $action, $version, $one_way);
        }
    }

}

} // end if (extension_loaded('soap')
PKpG[���F;;Soap/Client/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */
class Zend_Soap_Client_Exception extends Zend_Exception
{}

PKpG[�Yc_	_	Soap/Client/Local.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Soap_Client_Exception */
require_once 'Zend/Soap/Server/Exception.php';


/** Zend_Soap_Server */
require_once 'Zend/Soap/Server.php';

/** Zend_Soap_Client */
require_once 'Zend/Soap/Client.php';


if (extension_loaded('soap')) {

/**
 * Zend_Soap_Client_Local
 *
 * Class is intended to be used as local SOAP client which works
 * with a provided Server object.
 *
 * Could be used for development or testing purposes.
 *
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Client_Local extends Zend_Soap_Client
{
    /**
     * Server object
     *
     * @var Zend_Soap_Server
     */
    protected $_server;

    /**
     * Local client constructor
     *
     * @param Zend_Soap_Server $server
     * @param string $wsdl
     * @param array $options
     */
    function __construct(Zend_Soap_Server $server, $wsdl, $options = null)
    {
        $this->_server = $server;

        // Use Server specified SOAP version as default
        $this->setSoapVersion($server->getSoapVersion());

        parent::__construct($wsdl, $options);
    }

    /**
     * Actual "do request" method.
     *
     * @internal
     * @param Zend_Soap_Client_Common $client
     * @param string $request
     * @param string $location
     * @param string $action
     * @param int    $version
     * @param int    $one_way
     * @return mixed
     */
    public function _doRequest(Zend_Soap_Client_Common $client, $request, $location, $action, $version, $one_way = null)
    {
        // Perform request as is
        ob_start();
        $this->_server->handle($request);
        $response = ob_get_contents();
        ob_end_clean();

        return $response;
    }
}

} // end if (extension_loaded('soap')
PKpG[���0qqSoap/Client/DotNet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Soap
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** Zend_Soap_Client_Exception */
require_once 'Zend/Soap/Client/Exception.php';

/** Zend_Soap_Client */
require_once 'Zend/Soap/Client.php';


if (extension_loaded('soap')) {

/**
 * Zend_Soap_Client_Local
 * 
 * Class is intended to be used with .Net Web Services.
 * 
 * Important! Class is at experimental stage now.
 * Please leave your notes, compatiblity issues reports or
 * suggestions in fw-webservices@lists.zend.com or fw-general@lists.com
 *
 * @category   Zend
 * @package    Zend_Soap
 */
class Zend_Soap_Client_DotNet extends Zend_Soap_Client
{
    /**
     * Constructor
     *
     * @param string $wsdl
     * @param array $options
     */
    public function __construct($wsdl = null, $options = null)
    {
        // Use SOAP 1.1 as default
        $this->setSoapVersion(SOAP_1_1);

        parent::__construct($wsdl, $options);
    }


    /**
     * Perform arguments pre-processing
     *
     * My be overridden in descendant classes
     *
     * @param array $arguments
     */
    protected function _preProcessArguments($arguments)
    {
        // Do nothing
        return array($arguments);
    }

    /**
     * Perform result pre-processing
     *
     * My be overridden in descendant classes
     *
     * @param array $arguments
     */
    protected function _preProcessResult($result)
    {
        $resultProperty = $this->getLastMethod() . 'Result';

        return $result->$resultProperty;
    }

}

} // end if (extension_loaded('soap')
PKpG[\����'�'Service/Akismet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Akismet
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Akismet.php 8502 2008-03-01 19:56:46Z weppos $
 */


/**
 * @see Zend_Version
 */
require_once 'Zend/Version.php';

/**   
 * @see Zend_Service_Abstract
 */
require_once 'Zend/Service/Abstract.php';


/**
 * Akismet REST service implementation
 *
 * @uses       Zend_Service_Abstract
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Akismet
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Akismet extends Zend_Service_Abstract
{
    /**
     * Akismet API key
     * @var string
     */
    protected $_apiKey;

    /**
     * Blog URL
     * @var string
     */
    protected $_blogUrl;

    /**
     * Charset used for encoding
     * @var string
     */
    protected $_charset = 'UTF-8';

    /**
     * TCP/IP port to use in requests
     * @var int
     */
    protected $_port = 80;

    /**
     * User Agent string to send in requests
     * @var string
     */
    protected $_userAgent;

    /**
     * Constructor
     *
     * @param string $apiKey Akismet API key
     * @param string $blog Blog URL
     * @return void
     */
    public function __construct($apiKey, $blog)
    {
        $this->setBlogUrl($blog)
             ->setApiKey($apiKey)
             ->setUserAgent('Zend Framework/' . Zend_Version::VERSION . ' | Akismet/1.11');
    }

    /**
     * Retrieve blog URL
     *
     * @return string
     */
    public function getBlogUrl()
    {
        return $this->_blogUrl;
    }

    /**
     * Set blog URL
     *
     * @param string $blogUrl
     * @return Zend_Service_Akismet
     * @throws Zend_Service_Exception if invalid URL provided
     */
    public function setBlogUrl($blogUrl)
    {
        require_once 'Zend/Uri.php';
        if (!Zend_Uri::check($blogUrl)) {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Invalid url provided for blog');
        }

        $this->_blogUrl = $blogUrl;
        return $this;
    }

    /**
     * Retrieve API key
     *
     * @return string
     */
    public function getApiKey()
    {
        return $this->_apiKey;
    }

    /**
     * Set API key
     *
     * @param string $apiKey
     * @return Zend_Service_Akismet
     */
    public function setApiKey($apiKey)
    {
        $this->_apiKey = $apiKey;
        return $this;
    }

    /**
     * Retrieve charset
     *
     * @return string
     */
    public function getCharset()
    {
        return $this->_charset;
    }

    /**
     * Set charset
     *
     * @param string $charset
     * @return Zend_Service_Akismet
     */
    public function setCharset($charset)
    {
        $this->_charset = $charset;
        return $this;
    }

    /**
     * Retrieve TCP/IP port
     *
     * @return int
     */
    public function getPort()
    {
        return $this->_port;
    }

    /**
     * Set TCP/IP port
     *
     * @param int $port
     * @return Zend_Service_Akismet
     * @throws Zend_Service_Exception if non-integer value provided
     */
    public function setPort($port)
    {
        if (!is_int($port)) {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Invalid port');
        }

        $this->_port = $port;
        return $this;
    }

    /**
     * Retrieve User Agent string
     *
     * @return string
     */
    public function getUserAgent()
    {
        return $this->_userAgent;
    }

    /**
     * Set User Agent
     *
     * Should be of form "Some user agent/version | Akismet/version"
     *
     * @param string $userAgent
     * @return Zend_Service_Akismet
     * @throws Zend_Service_Exception with invalid user agent string
     */
    public function setUserAgent($userAgent)
    {
        if (!is_string($userAgent)
            || !preg_match(":^[^\n/]*/[^ ]* \| Akismet/[0-9\.]*$:i", $userAgent))
        {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Invalid User Agent string; must be of format "Application name/version | Akismet/version"');
        }

        $this->_userAgent = $userAgent;
        return $this;
    }

    /**
     * Post a request
     *
     * @param string $host
     * @param string $path
     * @param array  $params
     * @return mixed
     */
    protected function _post($host, $path, array $params)
    {
        $uri    = 'http://' . $host . ':' . $this->getPort() . $path;
        $client = self::getHttpClient();
        $client->setUri($uri);
        $client->setConfig(array(
            'useragent'    => $this->getUserAgent(),
        ));

        $client->setHeaders(array(
            'Host'         => $host,
            'Content-Type' => 'application/x-www-form-urlencoded; charset=' . $this->getCharset()
        ));
        $client->setParameterPost($params);

        $client->setMethod(Zend_Http_Client::POST);
        return $client->request();
    }

    /**
     * Verify an API key
     *
     * @param string $key Optional; API key to verify
     * @param string $blog Optional; blog URL against which to verify key
     * @return boolean
     */
    public function verifyKey($key = null, $blog = null)
    {
        if (null === $key) {
            $key = $this->getApiKey();
        }

        if (null === $blog) {
            $blog = $this->getBlogUrl();
        }

        $response = $this->_post('rest.akismet.com', '/1.1/verify-key', array(
            'key'  => $key,
            'blog' => $blog
        ));

        return ('valid' == $response->getBody());
    }

    /**
     * Perform an API call
     *
     * @param string $path
     * @param array $params
     * @return Zend_Http_Response
     * @throws Zend_Service_Exception if missing user_ip or user_agent fields
     */
    protected function _makeApiCall($path, $params)
    {
        if (empty($params['user_ip']) || empty($params['user_agent'])) {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Missing required Akismet fields (user_ip and user_agent are required)');
        }

        if (!isset($params['blog'])) {
            $params['blog'] = $this->getBlogUrl();
        }

        return $this->_post($this->getApiKey() . '.rest.akismet.com', $path, $params);
    }

    /**
     * Check a comment for spam
     *
     * Checks a comment to see if it is spam. $params should be an associative
     * array with one or more of the following keys (unless noted, all keys are
     * optional):
     * - blog: URL of the blog. If not provided, uses value returned by {@link getBlogUrl()}
     * - user_ip (required): IP address of comment submitter
     * - user_agent (required): User Agent used by comment submitter
     * - referrer: contents of HTTP_REFERER header
     * - permalink: location of the entry to which the comment was submitted
     * - comment_type: typically, one of 'blank', 'comment', 'trackback', or 'pingback', but may be any value
     * - comment_author: name submitted with the content
     * - comment_author_email: email submitted with the content
     * - comment_author_url: URL submitted with the content
     * - comment_content: actual content
     *
     * Additionally, Akismet suggests returning the key/value pairs in the
     * $_SERVER array, and these may be included in the $params.
     *
     * This method implements the Akismet comment-check REST method.
     *
     * @param array $params
     * @return boolean
     * @throws Zend_Service_Exception with invalid API key
     */
    public function isSpam($params)
    {
        $response = $this->_makeApiCall('/1.1/comment-check', $params);

        $return = trim($response->getBody());

        if ('invalid' == $return) {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Invalid API key');
        }

        if ('true' == $return) {
            return true;
        }

        return false;
    }

    /**
     * Submit spam
     *
     * Takes the same arguments as {@link isSpam()}.
     *
     * Submits known spam content to Akismet to help train it.
     *
     * This method implements Akismet's submit-spam REST method.
     *
     * @param array $params
     * @return void
     * @throws Zend_Service_Exception with invalid API key
     */
    public function submitSpam($params)
    {
        $response = $this->_makeApiCall('/1.1/submit-spam', $params);
        $value    = trim($response->getBody());
        if ('invalid' == $value) {
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Invalid API key');
        }
    }

    /**
     * Submit ham
     *
     * Takes the same arguments as {@link isSpam()}.
     *
     * Submits a comment that has been falsely categorized as spam by Akismet
     * as a false positive, telling Akismet's filters not to filter such
     * comments as spam in the future.
     *
     * Unlike {@link submitSpam()} and {@link isSpam()}, a valid API key is
     * never necessary; as a result, this method never throws an exception
     * (unless an exception happens with the HTTP client layer).
     *
     * this method implements Akismet's submit-ham REST method.
     *
     * @param array $params
     * @return void
     */
    public function submitHam($params)
    {
        $response = $this->_makeApiCall('/1.1/submit-ham', $params);
    }
}
PKpG[݌(( Service/SlideShare/SlideShow.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SlideShow.php 9094 2008-03-30 18:36:55Z thomas $
 */


/**
 * The Zend_Service_SlideShare_SlideShow class represents a slide show on the
 * slideshare.net servers.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_SlideShare_SlideShow
{

    /**
     * Status constant mapping for web service
     *
     */
    const STATUS_QUEUED = 0;
    const STATUS_PROCESSING = 1;
    const STATUS_READY = 2;
    const STATUS_FAILED = 3;

    /**
     * The HTML code to embed the slide show in a web page
     *
     * @var string the HTML to embed the slide show
     */
    protected $_embedCode;

    /**
     * The URI for the thumbnail representation of the slide show
     *
     * @var string The URI of a thumbnail image
     */
    protected $_thumbnailUrl;

    /**
     * The title of the slide show
     *
     * @var string The slide show title
     */
    protected $_title;

    /**
     * The Description of the slide show
     *
     * @var string The slide show description
     */
    protected $_description;

    /**
     * The status of the silde show on the server
     *
     * @var int The Slide show status code
     */
    protected $_status;

    /**
     * The Description of the slide show status code
     *
     * @var string The status description
     */
    protected $_statusDescription;

    /**
     * The Permanent link for the slide show
     *
     * @var string the Permalink for the slide show
     */
    protected $_permalink;

    /**
     * The number of views this slide show has received
     *
     * @var int the number of views
     */
    protected $_numViews;

    /**
     * The ID of the slide show on the server
     *
     * @var int the Slide show ID number on the server
     */
    protected $_slideShowId;

    /**
     * A slide show filename on the local filesystem (when uploading)
     *
     * @var string the local filesystem path & file of the slide show to upload
     */
    protected $_slideShowFilename;

    /**
     * An array of tags associated with the slide show
     *
     * @var array An array of tags associated with the slide show
     */
    protected $_tags = array();

    /**
     * The location of the slide show
     *
     * @var string the Location
     */
    protected $_location;

    /**
     * The transcript associated with the slide show
     *
     * @var string the Transscript
     */
    protected $_transcript;


    /**
     * Retrieves the location of the slide show
     *
     * @return string the Location
     */
    public function getLocation()
    {
        return $this->_location;
    }

    /**
     * Sets the location of the slide show
     *
     * @param string $loc The location to use
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setLocation($loc)
    {
        $this->_location = (string)$loc;
        return $this;
    }

    /**
     * Gets the transcript for this slide show
     *
     * @return string the Transcript
     */
    public function getTranscript()
    {
        return $this->_transcript;
    }

    /**
     * Sets the transcript for this slide show
     *
     * @param string $t The transcript
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setTranscript($t)
    {
        $this->_transcript = (string)$t;
        return $this;
    }

    /**
     * Adds a tag to the slide show
     *
     * @param string $tag The tag to add
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function addTag($tag)
    {
        $this->_tags[] = (string)$tag;
        return $this;
    }

    /**
     * Sets the tags for the slide show
     *
     * @param array $tags An array of tags to set
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setTags(Array $tags)
    {
        $this->_tags = $tags;
        return $this;
    }

    /**
     * Gets all of the tags associated with the slide show
     *
     * @return array An array of tags for the slide show
     */
    public function getTags()
    {
        return $this->_tags;
    }

    /**
     * Sets the filename on the local filesystem of the slide show
     * (for uploading a new slide show)
     *
     * @param string $file The full path & filename to the slide show
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setFilename($file)
    {
        $this->_slideShowFilename = (string)$file;
        return $this;
    }

    /**
     * Retrieves the filename on the local filesystem of the slide show
     * which will be uploaded
     *
     * @return string The full path & filename to the slide show
     */
    public function getFilename()
    {
        return $this->_slideShowFilename;
    }

    /**
     * Sets the ID for the slide show
     *
     * @param int $id The slide show ID
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setId($id)
    {
        $this->_slideShowId = (string)$id;
        return $this;
    }

    /**
     * Gets the ID for the slide show
     *
     * @return int The slide show ID
     */
    public function getId()
    {
        return $this->_slideShowId;
    }

    /**
     * Sets the HTML embed code for the slide show
     *
     * @param string $code The HTML embed code
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setEmbedCode($code)
    {
        $this->_embedCode = (string)$code;
        return $this;
    }

    /**
     * Retrieves the HTML embed code for the slide show
     *
     * @return string the HTML embed code
     */
    public function getEmbedCode()
    {
        return $this->_embedCode;
    }

    /**
     * Sets the Thumbnail URI for the slide show
     *
     * @param string $url The URI for the thumbnail image
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setThumbnailUrl($url)
    {
        $this->_thumbnailUrl = (string) $url;
        return $this;
    }

    /**
     * Retrieves the Thumbnail URi for the slide show
     *
     * @return string The URI for the thumbnail image
     */
    public function getThumbnailUrl()
    {
        return $this->_thumbnailUrl;
    }

    /**
     * Sets the title for the Slide show
     *
     * @param string $title The slide show title
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setTitle($title)
    {
        $this->_title = (string)$title;
        return $this;
    }

    /**
     * Retrieves the Slide show title
     *
     * @return string the Slide show title
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * Sets the description for the Slide show
     *
     * @param strign $desc The description of the slide show
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setDescription($desc)
    {
        $this->_description = (string)$desc;
        return $this;
    }

    /**
     * Gets the description of the slide show
     *
     * @return string The slide show description
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Sets the numeric status of the slide show on the server
     *
     * @param int $status The numeric status on the server
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setStatus($status)
    {
        $this->_status = (int)$status;
        return $this;
    }

    /**
     * Gets the numeric status of the slide show on the server
     *
     * @return int A Zend_Service_SlideShare_SlideShow Status constant
     */
    public function getStatus()
    {
        return $this->_status;
    }

    /**
     * Sets the textual description of the status of the slide show on the server
     *
     * @param string $desc The textual description of the status of the slide show
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setStatusDescription($desc)
    {
        $this->_statusDescription = (string)$desc;
        return $this;
    }

    /**
     * Gets the textual description of the status of the slide show on the server
     *
     * @return string the textual description of the service
     */
    public function getStatusDescription()
    {
        return $this->_statusDescription;
    }

    /**
     * Sets the permanent link of the slide show
     *
     * @param string $url The permanent URL for the slide show
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setPermaLink($url)
    {
        $this->_permalink = (string)$url;
        return $this;
    }

    /**
     * Gets the permanent link of the slide show
     *
     * @return string the permanent URL for the slide show
     */
    public function getPermaLink()
    {
        return $this->_permalink;
    }

    /**
     * Sets the number of views the slide show has received
     *
     * @param int $views The number of views
     * @return Zend_Service_SlideShare_SlideShow
     */
    public function setNumViews($views)
    {
        $this->_numViews = (int)$views;
        return $this;
    }

    /**
     * Gets the number of views the slide show has received
     *
     * @return int The number of views
     */
    public function getNumViews()
    {
        return $this->_numViews;
    }
}PKpG[ma���� Service/SlideShare/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_SlideShare_Exception extends Zend_Exception
{
}PKpG[��gb��Service/Delicious/PostList.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PostList.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * List of posts retrived from the del.icio.us web service
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Delicious_PostList implements Countable, Iterator, ArrayAccess
{
    /**
     * @var array Array of Zend_Service_Delicious_Post
     */
    protected $_posts = array();

    /**
     * @var Zend_Service_Delicious Service that has downloaded the post list
     */
    protected $_service;

    /**
     * @var int Iterator key
     */
    protected $_iteratorKey = 0;

    /**
     * @param  Zend_Service_Delicious $service Service that has downloaded the post
     * @param  DOMNodeList|array      $posts
     * @return void
     */
    public function __construct(Zend_Service_Delicious $service, $posts = null)
    {
        $this->_service = $service;
        if ($posts instanceof DOMNodeList) {
            $this->_constructFromNodeList($posts);
        } else if (is_array($posts)) {
            $this->_constructFromArray($posts);
        }
    }

    /**
     * Transforms DOMNodeList to array of posts
     *
     * @param  DOMNodeList $nodeList
     * @return void
     */
    private function _constructFromNodeList(DOMNodeList $nodeList)
    {
        for ($i = 0; $i < $nodeList->length; $i++) {
            $curentNode = $nodeList->item($i);
            if($curentNode->nodeName == 'post') {
                $this->_addPost(new Zend_Service_Delicious_Post($this->_service, $curentNode));
            }
        }
    }

    /**
     * Transforms the Array to array of posts
     *
     * @param  array $postList
     * @return void
     */
    private function _constructFromArray(array $postList)
    {
        foreach ($postList as $f_post) {
            $this->_addPost(new Zend_Service_Delicious_SimplePost($f_post));
        }
    }

    /**
     * Add a post
     *
     * @param  Zend_Service_Delicious_SimplePost $post
     * @return Zend_Service_Delicious_PostList
     */
    protected function _addPost(Zend_Service_Delicious_SimplePost $post)
    {
        $this->_posts[] = $post;

        return $this;
    }

    /**
     * Filter list by list of tags
     *
     * @param  array $tags
     * @return Zend_Service_Delicious_PostList
     */
    public function withTags(array $tags)
    {
        $postList = new self($this->_service);

        foreach ($this->_posts as $post) {
            if (count(array_diff($tags, $post->getTags())) == 0) {
                $postList->_addPost($post);
            }
        }

        return $postList;
    }

    /**
     * Filter list by tag
     *
     * @param  string $tag
     * @return Zend_Service_Delicious_PostList
     */
    public function withTag($tag)
    {
        return $this->withTags(func_get_args());
    }

    /**
     * Filter list by urls matching a regular expression
     *
     * @param  string $regexp
     * @return Zend_Service_Delicious_PostList
     */
    public function withUrl($regexp)
    {
        $postList = new self($this->_service);

        foreach ($this->_posts as $post) {
            if (preg_match($regexp, $post->getUrl())) {
                $postList->_addPost($post);
            }
        }

        return $postList;
    }

    /**
     * Return number of posts
     *
     * Implement Countable::count()
     *
     * @return int
     */
    public function count()
    {
        return count($this->_posts);
    }

    /**
     * Return the current element
     *
     * Implement Iterator::current()
     *
     * @return Zend_Service_Delicious_SimplePost
     */
    public function current()
    {
        return $this->_posts[$this->_iteratorKey];
    }

    /**
     * Return the key of the current element
     *
     * Implement Iterator::key()
     *
     * @return int
     */
    public function key()
    {
        return $this->_iteratorKey;
    }

    /**
     * Move forward to next element
     *
     * Implement Iterator::next()
     *
     * @return void
     */
    public function next()
    {
        $this->_iteratorKey += 1;
    }

    /**
     * Rewind the Iterator to the first element
     *
     * Implement Iterator::rewind()
     *
     * @return void
     */
    public function rewind()
    {
        $this->_iteratorKey = 0;
    }

    /**
     * Check if there is a current element after calls to rewind() or next()
     *
     * Implement Iterator::valid()
     *
     * @return bool
     */
    public function valid()
    {
        $numItems = $this->count();

        if ($numItems > 0 && $this->_iteratorKey < $numItems) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Whether the offset exists
     *
     * Implement ArrayAccess::offsetExists()
     *
     * @param   int     $offset
     * @return  bool
     */
    public function offsetExists($offset)
    {
        return ($offset < $this->count());
    }

    /**
     * Return value at given offset
     *
     * Implement ArrayAccess::offsetGet()
     *
     * @param   int     $offset
     * @throws  OutOfBoundsException
     * @return  Zend_Service_Delicious_SimplePost
     */
    public function offsetGet($offset)
    {
        if ($this->offsetExists($offset)) {
            return $this->_posts[$offset];
        } else {
            throw new OutOfBoundsException('Illegal index');
        }
    }

    /**
     * Throws exception because all values are read-only
     *
     * Implement ArrayAccess::offsetSet()
     *
     * @param   int     $offset
     * @param   string  $value
     * @throws  Zend_Service_Delicious_Exception
     */
    public function offsetSet($offset, $value)
    {
        /**
         * @see Zend_Service_Delicious_Exception
         */
        require_once 'Zend/Service/Delicious/Exception.php';
        throw new Zend_Service_Delicious_Exception('You are trying to set read-only property');
    }

    /**
     * Throws exception because all values are read-only
     *
     * Implement ArrayAccess::offsetUnset()
     *
     * @param   int     $offset
     * @throws  Zend_Service_Delicious_Exception
     */
    public function offsetUnset($offset)
    {
        /**
         * @see Zend_Service_Delicious_Exception
         */
        require_once 'Zend/Service/Delicious/Exception.php';
        throw new Zend_Service_Delicious_Exception('You are trying to unset read-only property');
    }
}
PKpG[&���Service/Delicious/Post.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Post.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Date
 */
require_once 'Zend/Date.php';

/**
 * @see Zend_Service_Delicious_SimplePost
 */
require_once 'Zend/Service/Delicious/SimplePost.php';


/**
 * Zend_Service_Delicious_Post represents a post of a user that can be edited
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Delicious_Post extends Zend_Service_Delicious_SimplePost
{
    /**
     * Service that has downloaded the post
     *
     * @var Zend_Service_Delicious
     */
    protected $_service;

    /**
     * @var int Number of people that have the same post
     */
    protected $_others;

    /**
     * @var Zend_Date Post date
     */
    protected $_date;

    /**
     * @var bool Post share
     */
    protected $_shared = true;

    /**
     * @var string Post hash
     */
    protected $_hash;

    /**
     * Constructs a new del.icio.us post
     *
     * @param  Zend_Service_Delicious $service Service that has downloaded the post
     * @param  DOMElement|array       $values  Post content
     * @throws Zend_Service_Delicious_Exception
     * @return void
     */
    public function __construct(Zend_Service_Delicious $service, $values)
    {
        $this->_service = $service;

        if ($values instanceof DOMElement) {
            $values = self::_parsePostNode($values);
        }

        if (!is_array($values) || !isset($values['url']) || !isset($values['title'])) {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception("Second argument must be array with at least 2 keys ('url' and"
                                                     . " 'title')");
        }

        if (isset($values['date']) && ! $values['date'] instanceof Zend_Date) {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception("Date has to be an instance of Zend_Date");
        }

        foreach (array('url', 'title', 'notes', 'others', 'tags', 'date', 'shared', 'hash') as $key) {
            if (isset($values[$key])) {
                $this->{"_$key"}  = $values[$key];
            }
        }
    }

    /**
     * Setter for title
     *
     * @param  string $newTitle
     * @return Zend_Service_Delicious_Post
     */
    public function setTitle($newTitle)
    {
        $this->_title = (string) $newTitle;

        return $this;
    }

    /**
     * Setter for notes
     *
     * @param  string $newNotes
     * @return Zend_Service_Delicious_Post
     */
    public function setNotes($newNotes)
    {
        $this->_notes = (string) $newNotes;

        return $this;
    }

    /**
     * Setter for tags
     *
     * @param  array $tags
     * @return Zend_Service_Delicious_Post
     */
    public function setTags(array $tags)
    {
        $this->_tags = $tags;

        return $this;
    }

    /**
     * Add a tag
     *
     * @param  string $tag
     * @return Zend_Service_Delicious_Post
     */
    public function addTag($tag)
    {
        $this->_tags[] = (string) $tag;

        return $this;
    }

    /**
     * Remove a tag
     *
     * @param  string $tag
     * @return Zend_Service_Delicious_Post
     */
    public function removeTag($tag)
    {
        $this->_tags = array_diff($this->_tags, array((string) $tag));

        return $this;
    }

    /**
     * Getter for date
     *
     * @return Zend_Date
     */
    public function getDate()
    {
        return $this->_date;
    }

    /**
     * Getter for others
     *
     * This property is only populated when posts are retrieved
     * with getPosts() method. The getAllPosts() and getRecentPosts()
     * methods will not populate this property.
     *
     * @return int
     */
    public function getOthers()
    {
        return $this->_others;
    }

    /**
     * Getter for hash
     *
     * @return string
     */
    public function getHash()
    {
        return $this->_hash;
    }

    /**
     * Getter for shared
     *
     * @return bool
     */
    public function getShared()
    {
        return $this->_shared;
    }

    /**
     * Setter for shared
     *
     * @param  bool $isShared
     * @return Zend_Service_Delicious_Post
     */
    public function setShared($isShared)
    {
        $this->_shared = (bool) $isShared;

        return $this;
    }

    /**
     * Deletes post
     *
     * @return Zend_Service_Delicious
     */
    public function delete()
    {
        return $this->_service->deletePost($this->_url);
    }

    /**
     * Saves post
     *
     * @return DOMDocument
     */
    public function save()
    {
        $parms = array(
            'url'        => $this->_url,
            'description'=> $this->_title,
            'extended'   => $this->_notes,
            'shared'     => ($this->_shared ? 'yes' : 'no'),
            'tags'       => implode(' ', (array) $this->_tags),
            'replace'    => 'yes'
        );
        /*
        if ($this->_date instanceof Zend_Date) {
            $parms['dt'] = $this->_date->get('Y-m-d\TH:i:s\Z');
        }
        */

        return $this->_service->makeRequest(Zend_Service_Delicious::PATH_POSTS_ADD, $parms);
    }

    /**
     * Extracts content from the DOM element of a post
     *
     * @param  DOMElement $node
     * @return array
     */
    protected static function _parsePostNode(DOMElement $node)
    {
        return array(
            'url'    => $node->getAttribute('href'),
            'title'  => $node->getAttribute('description'),
            'notes'  => $node->getAttribute('extended'),
            'others' => (int) $node->getAttribute('others'),
            'tags'   => explode(' ', $node->getAttribute('tag')),
            /**
             * @todo replace strtotime() with Zend_Date equivalent
             */
            'date'   => new Zend_Date(strtotime($node->getAttribute('time'))),
            'shared' => ($node->getAttribute('shared') == 'no' ? false : true),
            'hash'   => $node->getAttribute('hash')
        );
    }
}
PKpG[����
�
 Service/Delicious/SimplePost.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SimplePost.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Represents a publicly available post
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Delicious_SimplePost
{
    /**
     * @var string Post url
     */
    protected $_url;

    /**
     * @var string Post title
     */
    protected $_title;

    /**
     * @var string Post notes
     */
    protected $_notes;

    /**
     * @var array Post tags
     */
    protected $_tags = array();

    /**
     * Constructor
     *
     * @param   array $post Post data
     * @return  void
     * @throws  Zend_Service_Delicious_Exception
     */
    public function __construct(array $post)
    {
        if (!isset($post['u']) || !isset($post['d'])) {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception('Title and URL not set.');
        }

        $this->_url   = $post['u'];
        $this->_title = $post['d'];

        if (isset($post['t'])) {
            $this->_tags = $post['t'];
        }
        if (isset($post['n'])) {
            $this->_notes = $post['n'];
        }
    }

    /**
     * Getter for URL
     *
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * Getter for title
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * Getter for notes
     *
     * @return string
     */
    public function getNotes()
    {
        return $this->_notes;
    }

    /**
     * Getter for tags
     *
     * @return array
     */
    public function getTags()
    {
        return $this->_tags;
    }
}
PKpG[�BZ��Service/Delicious/Exception.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Exception
 */
require_once 'Zend/Service/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Delicious_Exception extends Zend_Service_Exception
{}
PKpG[mCƿCCService/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Exception extends Zend_Exception
{}

PKpG[�f����Service/Technorati.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Technorati.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Zend_Service_Technorati provides an easy, intuitive and object-oriented interface 
 * for using the Technorati API. 
 * 
 * It provides access to all available Technorati API queries 
 * and returns the original XML response as a friendly PHP object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati
{
    /** Base Technorati API URI */
    const API_URI_BASE = 'http://api.technorati.com';
    
    /** Query paths */
    const API_PATH_COSMOS           = '/cosmos';
    const API_PATH_SEARCH           = '/search';
    const API_PATH_TAG              = '/tag';
    const API_PATH_DAILYCOUNTS      = '/dailycounts';
    const API_PATH_TOPTAGS          = '/toptags';
    const API_PATH_BLOGINFO         = '/bloginfo';
    const API_PATH_BLOGPOSTTAGS     = '/blogposttags';
    const API_PATH_GETINFO          = '/getinfo';
    const API_PATH_KEYINFO          = '/keyinfo';
        
    /** Prevent magic numbers */
    const PARAM_LIMIT_MIN_VALUE = 1;
    const PARAM_LIMIT_MAX_VALUE = 100;
    const PARAM_DAYS_MIN_VALUE  = 1;
    const PARAM_DAYS_MAX_VALUE  = 180;
    const PARAM_START_MIN_VALUE = 1;


    /**
     * Technorati API key
     *
     * @var     string
     * @access  protected
     */
    protected $_apiKey;

    /**
     * Zend_Rest_Client instance
     *
     * @var     Zend_Rest_Client
     * @access  protected
     */
    protected $_restClient;


    /**
     * Constructs a new Zend_Service_Technorati instance
     * and setup character encoding.
     *
     * @param   string $apiKey  Your Technorati API key
     */
    public function __construct($apiKey)
    {
        iconv_set_encoding('output_encoding', 'UTF-8');
        iconv_set_encoding('input_encoding', 'UTF-8');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        $this->_apiKey = $apiKey;
    }


    /**
     * Cosmos query lets you see what blogs are linking to a given URL.
     * 
     * On the Technorati site, you can enter a URL in the searchbox and
     * it will return a list of blogs linking to it.
     * The API version allows more features and gives you a way
     * to use the cosmos on your own site.
     *
     * Query options include:
     *
     * 'type'       => (link|weblog)
     *      optional - A value of link returns the freshest links referencing your target URL.
     *      A value of weblog returns the last set of unique weblogs referencing your target URL.
     * 'limit'      => (int)
     *      optional - adjust the size of your result from the default value of 20
     *      to between 1 and 100 results.
     * 'start'      => (int)
     *      optional - adjust the range of your result set.
     *      Set this number to larger than zero and you will receive
     *      the portion of Technorati's total result set ranging from start to start+limit.
     *      The default start value is 1.
     * 'current'    => (true|false)
     *      optional - the default setting of true
     *      Technorati returns links that are currently on a weblog's homepage.
     *      Set this parameter to false if you would like to receive all links
     *      to the given URL regardless of their current placement on the source blog.
     *      Internally the value is converted in (yes|no).
     * 'claim'      => (true|false)
     *      optional - the default setting of FALSE returns no user information
     *      about each weblog included in the result set when available.
     *      Set this parameter to FALSE to include Technorati member data
     *      in the result set when a weblog in your result set
     *      has been successfully claimed by a member of Technorati.
     *      Internally the value is converted in (int).
     * 'highlight'  => (true|false)
     *      optional - the default setting of TRUE
     *      highlights the citation of the given URL within the weblog excerpt.
     *      Set this parameter to FALSE to apply no special markup to the blog excerpt.
     *      Internally the value is converted in (int).
     * 
     * @param   string $url     the URL you are searching for. Prefixes http:// and www. are optional.
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_CosmosResultSet
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/cosmos.html Technorati API: Cosmos Query reference
     */
    public function cosmos($url, $options = null)
    {
        static $defaultOptions = array( 'type'      => 'link',
                                        'start'     => 1,
                                        'limit'     => 20,
                                        'current'   => 'yes',
                                        'format'    => 'xml',
                                        'claim'     => 0,
                                        'highlight' => 1,
                                        );

        $options['url'] = $url;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateCosmos($options);
        $response = $this->_makeRequest(self::API_PATH_COSMOS, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_CosmosResultSet 
         */
        require_once 'Zend/Service/Technorati/CosmosResultSet.php';
        return new Zend_Service_Technorati_CosmosResultSet($dom, $options);
    }

    /**
     * Search lets you see what blogs contain a given search string.
     *
     * Query options include:
     *
     * 'language'   => (string)
     *      optional - a ISO 639-1 two character language code 
     *      to retrieve results specific to that language. 
     *      This feature is currently beta and may not work for all languages.
     * 'authority'  => (n|a1|a4|a7)
     *      optional - filter results to those from blogs with at least 
     *      the Technorati Authority specified. 
     *      Technorati calculates a blog's authority by how many people link to it. 
     *      Filtering by authority is a good way to refine your search results. 
     *      There are four settings:
     *      - n  => Any authority: All results.
     *      - a1 => A little authority: Results from blogs with at least one link.
     *      - a4 => Some authority: Results from blogs with a handful of links.
     *      - a7 => A lot of authority: Results from blogs with hundreds of links.
     * 'limit'      => (int)
     *      optional - adjust the size of your result from the default value of 20
     *      to between 1 and 100 results.
     * 'start'      => (int)
     *      optional - adjust the range of your result set.
     *      Set this number to larger than zero and you will receive
     *      the portion of Technorati's total result set ranging from start to start+limit.
     *      The default start value is 1.
     * 'claim'      => (true|false)
     *      optional - the default setting of FALSE returns no user information
     *      about each weblog included in the result set when available.
     *      Set this parameter to FALSE to include Technorati member data
     *      in the result set when a weblog in your result set
     *      has been successfully claimed by a member of Technorati.
     *      Internally the value is converted in (int).
     * 
     * @param   string $query   the words you are searching for.
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_SearchResultSet
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/search.html Technorati API: Search Query reference
     */
    public function search($query, $options = null)
    {
        static $defaultOptions = array( 'start'     => 1,
                                        'limit'     => 20,
                                        'format'    => 'xml',
                                        'claim'     => 0);

        $options['query'] = $query;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateSearch($options);
        $response = $this->_makeRequest(self::API_PATH_SEARCH, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_SearchResultSet
         */
        require_once 'Zend/Service/Technorati/SearchResultSet.php';
        return new Zend_Service_Technorati_SearchResultSet($dom, $options);
    }

    /**
     * Tag lets you see what posts are associated with a given tag.
     *
     * Query options include:
     * 
     * 'limit'          => (int)
     *      optional - adjust the size of your result from the default value of 20
     *      to between 1 and 100 results.
     * 'start'          => (int)
     *      optional - adjust the range of your result set.
     *      Set this number to larger than zero and you will receive
     *      the portion of Technorati's total result set ranging from start to start+limit.
     *      The default start value is 1.
     * 'excerptsize'    => (int)
     *      optional - number of word characters to include in the post excerpts. 
     *      By default 100 word characters are returned.
     * 'topexcerptsize' => (int)
     *      optional - number of word characters to include in the first post excerpt. 
     *      By default 150 word characters are returned.
     * 
     * @param   string $tag     the tag term you are searching posts for.
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_TagResultSet
     * @throws  Zend_Service_Technorati_Exception
     *  @link    http://technorati.com/developers/api/tag.html Technorati API: Tag Query reference
     */
    public function tag($tag, $options = null)
    {
        static $defaultOptions = array( 'start'          => 1,
                                        'limit'          => 20,
                                        'format'         => 'xml',
                                        'excerptsize'    => 100,
                                        'topexcerptsize' => 150);

        $options['tag'] = $tag;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateTag($options);
        $response = $this->_makeRequest(self::API_PATH_TAG, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_TagResultSet
         */
        require_once 'Zend/Service/Technorati/TagResultSet.php';
        return new Zend_Service_Technorati_TagResultSet($dom, $options);
    }

    /**
     * TopTags provides daily counts of posts containing the queried keyword.
     *
     * Query options include:
     *
     * 'days'       => (int)
     *      optional - Used to specify the number of days in the past 
     *      to request daily count data for. 
     *      Can be any integer between 1 and 180, default is 180
     * 
     * @param   string $q       the keyword query
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_DailyCountsResultSet
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/dailycounts.html Technorati API: DailyCounts Query reference
     */
    public function dailyCounts($query, $options = null)
    {
        static $defaultOptions = array( 'days'      => 180,
                                        'format'    => 'xml'
                                        );

        $options['q'] = $query;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateDailyCounts($options);
        $response = $this->_makeRequest(self::API_PATH_DAILYCOUNTS, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_DailyCountsResultSet
         */
        require_once 'Zend/Service/Technorati/DailyCountsResultSet.php';
        return new Zend_Service_Technorati_DailyCountsResultSet($dom);
    }
    
    /**
     * TopTags provides information on top tags indexed by Technorati.
     *
     * Query options include:
     *
     * 'limit'      => (int)
     *      optional - adjust the size of your result from the default value of 20
     *      to between 1 and 100 results.
     * 'start'      => (int)
     *      optional - adjust the range of your result set.
     *      Set this number to larger than zero and you will receive
     *      the portion of Technorati's total result set ranging from start to start+limit.
     *      The default start value is 1.
     * 
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_TagsResultSet
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/toptags.html Technorati API: TopTags Query reference
     */
    public function topTags($options = null)
    {
        static $defaultOptions = array( 'start'     => 1,
                                        'limit'     => 20,
                                        'format'    => 'xml'
                                        );

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateTopTags($options);
        $response = $this->_makeRequest(self::API_PATH_TOPTAGS, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_TagsResultSet
         */
        require_once 'Zend/Service/Technorati/TagsResultSet.php';
        return new Zend_Service_Technorati_TagsResultSet($dom);
    }

    /**
     * BlogInfo provides information on what blog, if any, is associated with a given URL.
     *
     * @param   string $url     the URL you are searching for. Prefixes http:// and www. are optional.
     *                          The URL must be recognized by Technorati as a blog.
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_BlogInfoResult
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/bloginfo.html Technorati API: BlogInfo Query reference
     */
    public function blogInfo($url, $options = null)
    {
        static $defaultOptions = array( 'format'    => 'xml'
                                        );

        $options['url'] = $url;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateBlogInfo($options);
        $response = $this->_makeRequest(self::API_PATH_BLOGINFO, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_BlogInfoResult
         */
        require_once 'Zend/Service/Technorati/BlogInfoResult.php';
        return new Zend_Service_Technorati_BlogInfoResult($dom);
    }
    
    /**
     * BlogPostTags provides information on the top tags used by a specific blog.
     *
     * Query options include:
     *
     * 'limit'      => (int)
     *      optional - adjust the size of your result from the default value of 20
     *      to between 1 and 100 results.
     * 'start'      => (int)
     *      optional - adjust the range of your result set.
     *      Set this number to larger than zero and you will receive
     *      the portion of Technorati's total result set ranging from start to start+limit.
     *      The default start value is 1.
     *      Note. This property is not documented.
     * 
     * @param   string $url     the URL you are searching for. Prefixes http:// and www. are optional.
     *                          The URL must be recognized by Technorati as a blog.
     * @param   array $options  additional parameters to refine your query
     * @return  Zend_Service_Technorati_TagsResultSet
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/blogposttags.html Technorati API: BlogPostTags Query reference
     */
    public function blogPostTags($url, $options = null)
    {
        static $defaultOptions = array( 'start'     => 1,
                                        'limit'     => 20,
                                        'format'    => 'xml'
                                        );

        $options['url'] = $url;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateBlogPostTags($options);
        $response = $this->_makeRequest(self::API_PATH_BLOGPOSTTAGS, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_TagsResultSet
         */
        require_once 'Zend/Service/Technorati/TagsResultSet.php';
        return new Zend_Service_Technorati_TagsResultSet($dom);
    }
    
    /**
     * GetInfo query tells you things that Technorati knows about a member.
     * 
     * The returned info is broken up into two sections: 
     * The first part describes some information that the user wants 
     * to allow people to know about him- or herself. 
     * The second part of the document is a listing of the weblogs 
     * that the user has successfully claimed and the information 
     * that Technorati knows about these weblogs.
     *
     * @param   string $username    the Technorati user name you are searching for
     * @param   array $options      additional parameters to refine your query
     * @return  Zend_Service_Technorati_GetInfoResult
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/getinfo.html Technorati API: GetInfo reference
     */
    public function getInfo($username, $options = null) 
    {
        static $defaultOptions = array('format' => 'xml');

        $options['username'] = $username;

        $options = $this->_prepareOptions($options, $defaultOptions);
        $this->_validateGetInfo($options);
        $response = $this->_makeRequest(self::API_PATH_GETINFO, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_GetInfoResult
         */
        require_once 'Zend/Service/Technorati/GetInfoResult.php';
        return new Zend_Service_Technorati_GetInfoResult($dom);
    }
    
    /**
     * KeyInfo query provides information on daily usage of an API key. 
     * Key Info Queries do not count against a key's daily query limit.
     * 
     * A day is defined as 00:00-23:59 Pacific time.
     * 
     * @return  Zend_Service_Technorati_KeyInfoResult
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://developers.technorati.com/wiki/KeyInfo Technorati API: Key Info reference
     */
    public function keyInfo()
    {
        static $defaultOptions = array();

        $options = $this->_prepareOptions(array(), $defaultOptions);
        // you don't need to validate this request
        // because key is the only mandatory element 
        // and it's already set in #_prepareOptions
        $response = $this->_makeRequest(self::API_PATH_KEYINFO, $options);
        $dom = $this->_convertResponseAndCheckContent($response);

        /** 
         * @see Zend_Service_Technorati_KeyInfoResult
         */
        require_once 'Zend/Service/Technorati/KeyInfoResult.php';       
        return new Zend_Service_Technorati_KeyInfoResult($dom, $this->_apiKey);
    }


    /**
     * Returns Technorati API key.
     *
     * @return string   Technorati API key
     */
    public function getApiKey()
    {
        return $this->_apiKey;
    }

    /**
     * Returns a reference to the REST client object in use.
     *
     * If the reference hasn't being inizialized yet,
     * then a new Zend_Rest_Client instance is created.
     *
     * @return Zend_Rest_Client
     */
    public function getRestClient()
    {
        if (is_null($this->_restClient)) {
            /**
             * @see Zend_Rest_Client
             */
            require_once 'Zend/Rest/Client.php';
            $this->_restClient = new Zend_Rest_Client(self::API_URI_BASE);
        }

        return $this->_restClient;
    }

    /**
     * Sets Technorati API key.
     * 
     * Be aware that this function doesn't validate the key.
     * The key is validated as soon as the first API request is sent.
     * If the key is invalid, the API request method will throw
     * a Zend_Service_Technorati_Exception exception with Invalid Key message.
     *
     * @param   string $key     Technorati API Key
     * @return  void
     * @link    http://technorati.com/developers/apikey.html How to get your Technorati API Key
     */
    public function setApiKey($key)
    {
        $this->_apiKey = $key;
        return $this;
    }


    /**
     * Validates Cosmos query options.
     *
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateCosmos(array $options)
    {
        static $validOptions = array('key', 'url',
            'type', 'limit', 'start', 'current', 'claim', 'highlight', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate url (required)
        $this->_validateOptionUrl($options);
        // Validate limit (optional)
        $this->_validateOptionLimit($options);
        // Validate start (optional)
        $this->_validateOptionStart($options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
        // Validate type (optional)
        $this->_validateInArrayOption('type', $options, array('link', 'weblog'));
        // Validate claim (optional)
        $this->_validateOptionClaim($options);
        // Validate highlight (optional)
        $this->_validateIntegerOption('highlight', $options);
        // Validate current (optional)
        if (isset($options['current'])) {
            $tmp = (int) $options['current'];
            $options['current'] = $tmp ? 'yes' : 'no';
        }

    }
        
    /**
     * Validates Search query options.
     *
     * @param   array   $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateSearch(array $options)
    {
        static $validOptions = array('key', 'query',
            'language', 'authority', 'limit', 'start', 'claim', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate query (required)
        $this->_validateMandatoryOption('query', $options);
        // Validate authority (optional)
        $this->_validateInArrayOption('authority', $options, array('n', 'a1', 'a4', 'a7'));
        // Validate limit (optional)
        $this->_validateOptionLimit($options);
        // Validate start (optional)
        $this->_validateOptionStart($options);
        // Validate claim (optional)
        $this->_validateOptionClaim($options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }
        
    /**
     * Validates Tag query options.
     *
     * @param   array   $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateTag(array $options)
    {
        static $validOptions = array('key', 'tag',
            'limit', 'start', 'excerptsize', 'topexcerptsize', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate query (required)
        $this->_validateMandatoryOption('tag', $options);
        // Validate limit (optional)
        $this->_validateOptionLimit($options);
        // Validate start (optional)
        $this->_validateOptionStart($options);
        // Validate excerptsize (optional)
        $this->_validateIntegerOption('excerptsize', $options);
        // Validate excerptsize (optional)
        $this->_validateIntegerOption('topexcerptsize', $options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }

    
    /**
     * Validates DailyCounts query options.
     *
     * @param   array   $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateDailyCounts(array $options)
    {
        static $validOptions = array('key', 'q',
            'days', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate q (required)
        $this->_validateMandatoryOption('q', $options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
        // Validate days (optional)
        if (isset($options['days'])) {
            $options['days'] = (int) $options['days'];
            if ($options['days'] < self::PARAM_DAYS_MIN_VALUE || 
                $options['days'] > self::PARAM_DAYS_MAX_VALUE) {
                /**
                 * @see Zend_Service_Technorati_Exception
                 */
                require_once 'Zend/Service/Technorati/Exception.php';
                throw new Zend_Service_Technorati_Exception(
                            "Invalid value '" . $options['days'] . "' for 'days' option");
            }
        }
    }
    
    /**
     * Validates GetInfo query options.
     *
     * @param   array   $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateGetInfo(array $options)
    {
        static $validOptions = array('key', 'username',
            'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate username (required)
        $this->_validateMandatoryOption('username', $options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }

    /**
     * Validates TopTags query options.
     *
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateTopTags(array $options)
    {
        static $validOptions = array('key', 
            'limit', 'start', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate limit (optional)
        $this->_validateOptionLimit($options);
        // Validate start (optional)
        $this->_validateOptionStart($options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }
    
    /**
     * Validates BlogInfo query options.
     *
     * @param   array   $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateBlogInfo(array $options)
    {
        static $validOptions = array('key', 'url',
            'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate url (required)
        $this->_validateOptionUrl($options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }
    
    /**
     * Validates TopTags query options.
     *
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateBlogPostTags(array $options)
    {
        static $validOptions = array('key', 'url', 
            'limit', 'start', 'format');

        // Validate keys in the $options array
        $this->_compareOptions($options, $validOptions);
        // Validate url (required)
        $this->_validateOptionUrl($options);
        // Validate limit (optional)
        $this->_validateOptionLimit($options);
        // Validate start (optional)
        $this->_validateOptionStart($options);
        // Validate format (optional)
        $this->_validateOptionFormat($options);
    }

    /**
     * Checks whether an option is in a given array.
     *
     * @param   string $name    option name
     * @param   array $options
     * @param   array $array    array of valid options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateInArrayOption($name, $options, array $array)
    {
        if (isset($options[$name]) && !in_array($options[$name], $array)) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "Invalid value '{$options[$name]}' for '$name' option");
        }
    }
    
    /**
     * Checks whether mandatory $name option exists and it's valid.
     * 
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _validateMandatoryOption($name, $options) 
    {
        if (!isset($options[$name]) || !trim($options[$name])) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "Empty value for '$name' option");
        }
    }
    
    /**
     * Checks whether $name option is a valid integer and casts it.
     * 
     * @param   array $options
     * @return  void
     * @access  protected
     */
    protected function _validateIntegerOption($name, $options) 
    {
        if (isset($options[$name])) {
            $options[$name] = (int) $options[$name];
        }
    }
    
    /**
     * Makes and HTTP GET request to given $path with $options.
     * HTTP Response is first validated, then returned.
     * 
     * @param   string $path
     * @param   array $options
     * @return  Zend_Http_Response
     * @throws  Zend_Service_Technorati_Exception on failure
     * @access  protected
     */
    protected function _makeRequest($path, $options = array())
    {
        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet($path, $options);
        self::_checkResponse($response);
        return $response;
    }

    /**
     * Checks whether 'claim' option value is valid. 
     * 
     * @param   array $options
     * @return  void
     * @access  protected
     */
    protected function _validateOptionClaim(array $options) 
    {
        $this->_validateIntegerOption('claim', $options);
    }
    
    /**
     * Checks whether 'format' option value is valid. 
     * Be aware that Zend_Service_Technorati supports only XML as format value.
     * 
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception if 'format' value != XML
     * @access  protected
     */
    protected function _validateOptionFormat(array $options) 
    {
        if (isset($options['format']) && $options['format'] != 'xml') {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "Invalid value '" . $options['format'] . "' for 'format' option. " .
                        "Zend_Service_Technorati supports only 'xml'");
        }
    }
    
    /**
     * Checks whether 'limit' option value is valid. 
     * Value must be an integer greater than PARAM_LIMIT_MIN_VALUE
     * and lower than PARAM_LIMIT_MAX_VALUE.
     * 
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception if 'limit' value is invalid
     * @access  protected
     */
    protected function _validateOptionLimit(array $options) 
    {
        if (!isset($options['limit'])) return;
        
        $options['limit'] = (int) $options['limit'];
        if ($options['limit'] < self::PARAM_LIMIT_MIN_VALUE || 
            $options['limit'] > self::PARAM_LIMIT_MAX_VALUE) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "Invalid value '" . $options['limit'] . "' for 'limit' option");
        }
    }
    
    /**
     * Checks whether 'start' option value is valid. 
     * Value must be an integer greater than 0.
     * 
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception if 'start' value is invalid
     * @access  protected
     */
    protected function _validateOptionStart(array $options) 
    {
        if (!isset($options['start'])) return;
        
        $options['start'] = (int) $options['start'];
        if ($options['start'] < self::PARAM_START_MIN_VALUE) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "Invalid value '" . $options['start'] . "' for 'start' option");
        }
    }

    /**
     * Checks whether 'url' option value exists and is valid. 
     * 'url' must be a valid HTTP(s) URL.
     * 
     * @param   array $options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception if 'url' value is invalid
     * @access  protected
     * @todo    support for Zend_Uri_Http
     */
    protected function _validateOptionUrl(array $options) 
    {
        $this->_validateMandatoryOption('url', $options);
    }
    
    /**
     * Checks XML response content for errors.
     *
     * @param   DomDocument $dom    the XML response as a DOM document
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @link    http://technorati.com/developers/api/error.html Technorati API: Error response
     * @access  protected
     */
    protected static function _checkErrors(DomDocument $dom)
    {
        $xpath = new DOMXPath($dom);

        $result = $xpath->query("/tapi/document/result/error");
        if ($result->length >= 1) {
            $error = $result->item(0)->nodeValue;
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception($error);
        }
    }

    /**
     * Converts $response body to a DOM object and checks it.
     * 
     * @param   Zend_Http_Response $response
     * @return  DOMDocument
     * @throws  Zend_Service_Technorati_Exception if response content contains an error message
     * @access  protected
     */
    protected function _convertResponseAndCheckContent(Zend_Http_Response $response)
    {
        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        self::_checkErrors($dom);
        return $dom;
    }
    
    /**
     * Checks ReST response for errors.
     *
     * @param   Zend_Http_Response $response    the ReST response
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected static function _checkResponse(Zend_Http_Response $response)
    {
        if ($response->isError()) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(sprintf(
                        'Invalid response status code (HTTP/%s %s %s)',
                        $response->getVersion(), $response->getStatus(), $response->getMessage()));
        }
    }

    /**
     * Checks whether user given options are valid.
     * 
     * @param   array $options        user options
     * @param   array $validOptions   valid options
     * @return  void
     * @throws  Zend_Service_Technorati_Exception
     * @access  protected
     */
    protected function _compareOptions(array $options, array $validOptions)
    {
        $difference = array_diff(array_keys($options), $validOptions);
        if ($difference) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                        "The following parameters are invalid: '" . 
                        implode("', '", $difference) . "'");
        }
    }

    /**
     * Prepares options for the request
     *
     * @param   array $options        user options
     * @param   array $defaultOptions default options
     * @return  array Merged array of user and default/required options.
     * @access  protected
     */
    protected function _prepareOptions($options, array $defaultOptions)
    {
        $options = (array) $options; // force cast to convert null to array()
        $options['key'] = $this->_apiKey;
        $options = array_merge($defaultOptions, $options);
        return $options;
    }
}
PKpG[a�|hhService/Flickr/Image.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Image.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Flickr_Image
{
    /**
     * The URI of the image
     *
     * @var string
     */
    public $uri;

    /**
     * The URI for linking to the photo on Flickr
     *
     * @var string
     */
    public $clickUri;

    /**
     * The height of the image in pixels
     *
     * @var string
     */
    public $height;

    /**
     * The width of the image in pixels
     *
     * @var string
     */
    public $width;

    /**
     * Parse given Flickr Image element
     *
     * @param  DOMElement $image
     * @return void
     */
    public function __construct(DOMElement $image)
    {
        $this->uri      = (string) $image->getAttribute('source');
        $this->clickUri = (string) $image->getAttribute('url');
        $this->height   = (int) $image->getAttribute('height');
        $this->width    = (int) $image->getAttribute('width');
    }
}

PKpG[�����Service/Flickr/ResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Flickr_Result
 */
require_once 'Zend/Service/Flickr/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Flickr_ResultSet implements SeekableIterator
{
    /**
     * Total number of available results
     *
     * @var int
     */
    public $totalResultsAvailable;

    /**
     * Number of results in this result set
     *
     * @var int
     */
    public $totalResultsReturned;

    /**
     * The offset of this result set in the total set of available results
     *
     * @var int
     */
    public $firstResultPosition;

    /**
     * Results storage
     *
     * @var DOMNodeList
     */
    protected $_results = null;

    /**
     * Reference to Zend_Service_Flickr object with which the request was made
     *
     * @var Zend_Service_Flickr
     */
    private $_flickr;

    /**
     * Current index for the Iterator
     *
     * @var int
     */
    private $_currentIndex = 0;

    /**
     * Parse the Flickr Result Set
     *
     * @param  DOMDocument         $dom
     * @param  Zend_Service_Flickr $flickr
     * @return void
     */
    public function __construct(DOMDocument $dom, Zend_Service_Flickr $flickr)
    {
        $this->_flickr = $flickr;

        $xpath = new DOMXPath($dom);

        $photos = $xpath->query('//photos')->item(0);

        $page    = $photos->getAttribute('page');
        $pages   = $photos->getAttribute('pages');
        $perPage = $photos->getAttribute('perpage');
        $total   = $photos->getAttribute('total');

        $this->totalResultsReturned  = ($page == $pages) ? ($total - ($page - 1) * $perPage) : (int) $perPage;
        $this->firstResultPosition   = ($page - 1) * $perPage + 1;
        $this->totalResultsAvailable = (int) $total;

        if ($total > 0) {
            $this->_results = $xpath->query('//photo');
        }
    }

    /**
     * Total Number of results returned
     *
     * @return int Total number of results returned
     */
    public function totalResults()
    {
        return $this->totalResultsReturned;
    }

    /**
     * Implements SeekableIterator::current()
     *
     * @return Zend_Service_Flickr_Result
     */
    public function current()
    {
        return new Zend_Service_Flickr_Result($this->_results->item($this->_currentIndex), $this->_flickr);
    }

    /**
     * Implements SeekableIterator::key()
     *
     * @return int
     */
    public function key()
    {
        return $this->_currentIndex;
    }

    /**
     * Implements SeekableIterator::next()
     *
     * @return void
     */
    public function next()
    {
        $this->_currentIndex += 1;
    }

    /**
     * Implements SeekableIterator::rewind()
     *
     * @return void
     */
    public function rewind()
    {
        $this->_currentIndex = 0;
    }

    /**
     * Implements SeekableIterator::seek()
     *
     * @param  int $index
     * @throws OutOfBoundsException
     * @return void
     */
    public function seek($index)
    {
        $indexInt = (int) $index;
        if ($indexInt >= 0 && (null === $this->_results || $indexInt < $this->_results->length)) {
            $this->_currentIndex = $indexInt;
        } else {
            throw new OutOfBoundsException("Illegal index '$index'");
        }
    }

    /**
     * Implements SeekableIterator::valid()
     *
     * @return boolean
     */
    public function valid()
    {
        return null !== $this->_results && $this->_currentIndex < $this->_results->length;
    }
}

PKpG[�7r\��Service/Flickr/Result.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Result.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Flickr_Result
{
    /**
     * The photo's Flickr ID.
     *
     * @var string
     */
    public $id;

    /**
     * The photo owner's NSID.
     *
     * @var string
     */
    public $owner;

    /**
     * A key used in URI construction.
     *
     * @var string
     */
    public $secret;

    /**
     * The servername to use for URI construction.
     *
     * @var string
     */
    public $server;

    /**
     * The photo's title.
     *
     * @var string
     */
    public $title;

    /**
     * Whether the photo is public.
     *
     * @var string
     */
    public $ispublic;

    /**
     * Whether the photo is visible to you because you are a friend of the owner.
     *
     * @var string
     */
    public $isfriend;

    /**
     * Whether the photo is visible to you because you are family of the owner.
     *
     * @var string
     */
    public $isfamily;

    /**
     * The license the photo is available under.
     *
     * @var string
     */
    public $license;

    /**
     * The date the photo was uploaded.
     *
     * @var string
     */
    public $dateupload;

    /**
     * The date the photo was taken.
     *
     * @var string
     */
    public $datetaken;

    /**
     * The screenname of the owner.
     *
     * @var string
     */
    public $ownername;

    /**
     * The server used in assembling icon URLs.
     *
     * @var string
     */
    public $iconserver;

    /**
     * A 75x75 pixel square thumbnail of the image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Square;

    /**
     * A 100 pixel thumbnail of the image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Thumbnail;

    /**
     * A 240 pixel version of the image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Small;

    /**
     * A 500 pixel version of the image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Medium;

    /**
     * A 640 pixel version of the image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Large;

    /**
     * The original image.
     *
     * @var Zend_Service_Flickr_Image
     */
    public $Original;

    /**
     * Original Zend_Service_Flickr object.
     *
     * @var Zend_Service_Flickr
     */
    protected $_flickr;

    /**
     * Parse the Flickr Result
     *
     * @param  DOMElement          $image
     * @param  Zend_Service_Flickr $flickr Original Zend_Service_Flickr object with which the request was made
     * @return void
     */
    public function __construct(DOMElement $image, Zend_Service_Flickr $flickr)
    {
        $xpath = new DOMXPath($image->ownerDocument);

        foreach ($xpath->query('./@*', $image) as $property) {
            $this->{$property->name} = (string) $property->value;
        }

        $this->_flickr = $flickr;

        foreach ($this->_flickr->getImageDetails($this->id) as $k => $v) {
            $this->$k = $v;
        }
    }
}
PKpG[�] �0�0Service/ReCaptcha.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** @see Zend_Service_Abstract */
require_once 'Zend/Service/Abstract.php';

/** @see Zend_Json */
require_once 'Zend/Json.php';

/** @see Zend_Service_ReCaptcha_Response */
require_once 'Zend/Service/ReCaptcha/Response.php';

/**
 * Zend_Service_ReCaptcha
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Service_ReCaptcha extends Zend_Service_Abstract
{
    /**
     * URI to the regular API
     *
     * @var string
     */
    const API_SERVER = 'http://api.recaptcha.net';

    /**
     * URI to the secure API
     *
     * @var string
     */
    const API_SECURE_SERVER = 'https://api-secure.recaptcha.net';

    /**
     * URI to the verify server
     *
     * @var string
     */
    const VERIFY_SERVER = 'http://api-verify.recaptcha.net/verify';

    /**
     * Public key used when displaying the captcha
     *
     * @var string
     */
    protected $_publicKey = null;

    /**
     * Private key used when verifying user input
     *
     * @var string
     */
    protected $_privateKey = null;

    /**
     * Ip address used when verifying user input
     *
     * @var string
     */
    protected $_ip = null;

    /**
     * Parameters for the object
     *
     * @var array
     */
    protected $_params = array(
        'ssl' => false, /* Use SSL or not when generating the recaptcha */
        'error' => null, /* The error message to display in the recaptcha */
        'xhtml' => false /* Enable XHTML output (this will not be XHTML Strict
                            compliant since the IFRAME is necessary when
                            Javascript is disabled) */
    );

    /**
     * Options for tailoring reCaptcha
     *
     * See the different options on http://recaptcha.net/apidocs/captcha/client.html
     *
     * @var array
     */
    protected $_options = array(
        'theme' => 'red',
        'lang' => 'en',
    );

    /**
     * Response from the verify server
     *
     * @var Zend_Service_ReCaptcha_Response
     */
    protected $_response = null;

    /**
     * Class constructor
     *
     * @param string $publicKey
     * @param string $privateKey
     * @param array $params
     * @param array $options
     * @param string $ip
     * @param array|Zend_Config $params
     */
    public function __construct($publicKey = null, $privateKey = null,
                                $params = null, $options = null, $ip = null)
    {
        if ($publicKey !== null) {
            $this->setPublicKey($publicKey);
        }

        if ($privateKey !== null) {
            $this->setPrivateKey($privateKey);
        }

        if ($ip !== null) {
            $this->setIp($ip);
        } else if (isset($_SERVER['REMOTE_ADDR'])) {
            $this->setIp($_SERVER['REMOTE_ADDR']);
        }

        if ($params !== null) {
            $this->setParams($params);
        }

        if ($options !== null) {
            $this->setOptions($options);
        }
    }

    /**
     * Serialize as string
     *
     * When the instance is used as a string it will display the recaptcha.
     * Since we can't throw exceptions within this method we will trigger
     * a user warning instead.
     *
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->getHtml();
        } catch (Exception $e) {
            $return = '';
            trigger_error($e->getMessage(), E_USER_WARNING);
        }

        return $return;
    }

    /**
     * Set the ip property
     *
     * @param string $ip
     * @return Zend_Service_ReCaptcha
     */
    public function setIp($ip)
    {
        $this->_ip = $ip;

        return $this;
    }

    /**
     * Get the ip property
     *
     * @return string
     */
    public function getIp()
    {
        return $this->_ip;
    }

    /**
     * Set a single parameter
     *
     * @param string $key
     * @param string $value
     * @return Zend_Service_ReCaptcha
     */
    public function setParam($key, $value)
    {
        $this->_params[$key] = $value;

        return $this;
    }

    /**
     * Set parameters
     *
     * @param array|Zend_Config $params
     * @return Zend_Service_ReCaptcha
     * @throws Zend_Service_ReCaptcha_Exception
     */
    public function setParams($params)
    {
        if ($params instanceof Zend_Config) {
            $params = $params->toArray();
        }

        if (is_array($params)) {
            foreach ($params as $k => $v) {
                $this->setParam($k, $v);
            }
        } else {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception(
                'Expected array or Zend_Config object'
            );
        }

        return $this;
    }

    /**
     * Get the parameter array
     *
     * @return array
     */
    public function getParams()
    {
        return $this->_params;
    }

    /**
     * Get a single parameter
     *
     * @param string $key
     * @return mixed
     */
    public function getParam($key)
    {
        return $this->_params[$key];
    }

    /**
     * Set a single option
     *
     * @param string $key
     * @param string $value
     * @return Zend_Service_ReCaptcha
     */
    public function setOption($key, $value)
    {
        $this->_options[$key] = $value;

        return $this;
    }

    /**
     * Set options
     *
     * @param array|Zend_Config $options
     * @return Zend_Service_ReCaptcha
     * @throws Zend_Service_ReCaptcha_Exception
     */
    public function setOptions($options)
    {
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        }

        if (is_array($options)) {
            foreach ($options as $k => $v) {
                $this->setOption($k, $v);
            }
        } else {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception(
                'Expected array or Zend_Config object'
            );
        }

        return $this;
    }

    /**
     * Get the options array
     *
     * @return array
     */
    public function getOptions()
    {
        return $this->_options;
    }

    /**
     * Get a single option
     *
     * @param string $key
     * @return mixed
     */
    public function getOption($key)
    {
        return $this->_options[$key];
    }

    /**
     * Get the public key
     *
     * @return string
     */
    public function getPublicKey()
    {
        return $this->_publicKey;
    }

    /**
     * Set the public key
     *
     * @param string $publicKey
     * @return Zend_Service_ReCaptcha
     */
    public function setPublicKey($publicKey)
    {
        $this->_publicKey = $publicKey;

        return $this;
    }

    /**
     * Get the private key
     *
     * @return string
     */
    public function getPrivateKey()
    {
        return $this->_privateKey;
    }

    /**
     * Set the private key
     *
     * @param string $privateKey
     * @return Zend_Service_ReCaptcha
     */
    public function setPrivateKey($privateKey)
    {
        $this->_privateKey = $privateKey;

        return $this;
    }

    /**
     * Get the HTML code for the captcha
     *
     * This method uses the public key to fetch a recaptcha form.
     *
     * @return string
     * @throws Zend_Service_ReCaptcha_Exception
     */
    public function getHtml()
    {
        if ($this->_publicKey === null) {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception('Missing public key');
        }

        $host = self::API_SERVER;

        if ($this->_params['ssl'] === true) {
            $host = self::API_SECURE_SERVER;
        }

        $htmlBreak = '<br>';
        $htmlInputClosing = '>';

        if ($this->_params['xhtml'] === true) {
            $htmlBreak = '<br />';
            $htmlInputClosing = '/>';
        }

        $errorPart = '';

        if (!empty($this->_params['error'])) {
            $errorPart = '&error=' . urlencode($this->_params['error']);
        }

        $reCaptchaOptions = '';

        if (!empty($this->_options)) {
            $encoded = Zend_Json::encode($this->_options);
            $reCaptchaOptions = <<<SCRIPT
<script type="text/javascript">
    var RecaptchaOptions = {$encoded};
</script>
SCRIPT;
        }

        $return = $reCaptchaOptions;
        $return .= <<<HTML
<script type="text/javascript"
   src="{$host}/challenge?k={$this->_publicKey}{$errorPart}">
</script>
HTML;
        $return .= <<<HTML
<noscript>
   <iframe src="{$host}/noscript?k={$this->_publicKey}{$errorPart}"
       height="300" width="500" frameborder="0"></iframe>{$htmlBreak}
   <textarea name="recaptcha_challenge_field" rows="3" cols="40">
   </textarea>
   <input type="hidden" name="recaptcha_response_field"
       value="manual_challenge"{$htmlInputClosing}
</noscript>
HTML;

        return $return;
    }

    /**
     * Post a solution to the verify server
     *
     * @param string $challengeField
     * @param string $responseField
     * @return Zend_Http_Response
     * @throws Zend_Service_ReCaptcha_Exception
     */
    protected function _post($challengeField, $responseField)
    {
        if ($this->_privateKey === null) {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception('Missing private key');
        }

        if ($this->_ip === null) {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception('Missing ip address');
        }

        if (empty($challengeField)) {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';
            throw new Zend_Service_ReCaptcha_Exception('Missing challenge field');
        }

        if (empty($responseField)) {
            /** @see Zend_Service_ReCaptcha_Exception */
            require_once 'Zend/Service/ReCaptcha/Exception.php';

            throw new Zend_Service_ReCaptcha_Exception('Missing response field');
        }

        /* Fetch an instance of the http client */
        $httpClient = self::getHttpClient();

        $postParams = array('privatekey' => $this->_privateKey,
                            'remoteip'   => $this->_ip,
                            'challenge'  => $challengeField,
                            'response'   => $responseField);

        /* Make the POST and return the response */
        return $httpClient->setUri(self::VERIFY_SERVER)
                          ->setParameterPost($postParams)
                          ->request(Zend_Http_Client::POST);
    }

    /**
     * Verify the user input
     *
     * This method calls up the post method and returns a
     * Zend_Service_ReCaptcha_Response object.
     *
     * @param string $challengeField
     * @param string $responseField
     * @return Zend_Service_ReCaptcha_Response
     */
    public function verify($challengeField, $responseField)
    {
        $response = $this->_post($challengeField, $responseField);

        return new Zend_Service_ReCaptcha_Response(null, null, $response);
    }
}
PKpG[���{{ Service/StrikeIron/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_Exception extends Zend_Exception
{}
PKpG[� �{{,Service/StrikeIron/USAddressVerification.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: USAddressVerification.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Service_StrikeIron_Base */
require_once 'Zend/Service/StrikeIron/Base.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_USAddressVerification extends Zend_Service_StrikeIron_Base
{
    /**
     * Configuration options
     * @param array
     */
    protected $_options = array('username' => null,
                                'password' => null,
                                'client'   => null,
                                'options'  => null,
                                'headers'  => null,
                                'wsdl'     => 'http://ws.strikeiron.com/zf1.StrikeIron/USAddressVerification4_0?WSDL');
}
PKpG[���H&H&Service/StrikeIron/Base.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Base.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_StrikeIron_Decorator
 */
require_once 'Zend/Service/StrikeIron/Decorator.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_Base
{
    /**
     * Configuration options
     * @param array
     */
    protected $_options = array('username' => null,
                                'password' => null,
                                'client'   => null,
                                'options'  => null,
                                'headers'  => null,
                                'wsdl'     => null);

    /**
     * Output headers returned by the last call to SOAPClient->__soapCall()
     * @param array
     */
    protected $_outputHeaders = array();

    /**
     * Class constructor
     *
     * @param  array  $options  Key/value pair options
     * @throws Zend_Service_StrikeIron_Exception
     */
    public function __construct($options = array())
    {
        if (!extension_loaded('soap')) {
            /**
             * @see Zend_Service_StrikeIron_Exception
             */
            require_once 'Zend/Service/StrikeIron/Exception.php';
            throw new Zend_Service_StrikeIron_Exception('SOAP extension is not enabled');
        }

        $this->_options  = array_merge($this->_options, $options);

        $this->_initSoapHeaders();
        $this->_initSoapClient();
    }

    /**
     * Proxy method calls to the SOAPClient instance, transforming method
     * calls and responses for convenience.
     *
     * @param  string  $method  Method name
     * @param  array   $params  Parameters for method
     * @return mixed            Result
     * @throws Zend_Service_StrikeIron_Exception
     */
    public function __call($method, $params)
    {
        // prepare method name and parameters for soap call
        list($method, $params) = $this->_transformCall($method, $params);
        $params = isset($params[0]) ? array($params[0]) : array();

        // make soap call, capturing the result and output headers
        try {
            $result = $this->_options['client']->__soapCall($method,
                                                            $params,
                                                            $this->_options['options'],
                                                            $this->_options['headers'],
                                                            $this->_outputHeaders);
        } catch (Exception $e) {
            $message = get_class($e) . ': ' . $e->getMessage();
            /**
             * @see Zend_Service_StrikeIron_Exception
             */
            require_once 'Zend/Service/StrikeIron/Exception.php';
            throw new Zend_Service_StrikeIron_Exception($message, $e->getCode());
        }

        // transform/decorate the result and return it
        $result = $this->_transformResult($result, $method, $params);
        return $result;
    }

    /**
     * Initialize the SOAPClient instance
     *
     * @return void
     */
    protected function _initSoapClient()
    {
        if (! isset($this->_options['options'])) {
            $this->_options['options'] = array();
        }

        if (! isset($this->_options['client'])) {
            $this->_options['client'] = new SoapClient($this->_options['wsdl'],
                                                       $this->_options['options']);
        }
    }

    /**
     * Initialize the headers to pass to SOAPClient->__soapCall()
     *
     * @return void
     * @throws Zend_Service_StrikeIron_Exception
     */
    protected function _initSoapHeaders()
    {
        // validate headers and check if LicenseInfo was given
        $foundLicenseInfo = false;
        if (isset($this->_options['headers'])) {
            if (! is_array($this->_options['headers'])) {
                $this->_options['headers'] = array($this->_options['headers']);
            }

            foreach ($this->_options['headers'] as $header) {
                if (! $header instanceof SoapHeader) {
                    /**
                     * @see Zend_Service_StrikeIron_Exception
                     */
                    require_once 'Zend/Service/StrikeIron/Exception.php';
                    throw new Zend_Service_StrikeIron_Exception('Header must be instance of SoapHeader');
                } else if ($header->name == 'LicenseInfo') {
                    $foundLicenseInfo = true;
                    break;
                }
            }
        } else {
            $this->_options['headers'] = array();
        }

        // add default LicenseInfo header if a custom one was not supplied
        if (! $foundLicenseInfo) {
            $this->_options['headers'][] = new SoapHeader('http://ws.strikeiron.com',
                            'LicenseInfo',
                            array('RegisteredUser' => array('UserID'   => $this->_options['username'],
                                                            'Password' => $this->_options['password'])));
        }
    }

    /**
     * Transform a method name or method parameters before sending them
     * to the remote service.  This can be useful for inflection or other
     * transforms to give the method call a more PHP-like interface.
     *
     * @see    __call()
     * @param  string  $method  Method name called from PHP
     * @param  mixed   $param   Parameters passed from PHP
     * @return array            [$method, $params] for SOAPClient->__soapCall()
     */
    protected function _transformCall($method, $params)
    {
        return array(ucfirst($method), $params);
    }

    /**
     * Transform the result returned from a method before returning
     * it to the PHP caller.  This can be useful for transforming
     * the SOAPClient returned result to be more PHP-like.
     *
     * The $method name and $params passed to the method are provided to
     * allow decisions to be made about how to transform the result based
     * on what was originally called.
     *
     * @see    __call()
     * @param  $result  Raw result returned from SOAPClient_>__soapCall()
     * @param  $method  Method name that was passed to SOAPClient->__soapCall()
     * @param  $params  Method parameters that were passed to SOAPClient->__soapCall()
     * @return mixed    Transformed result
     */
    protected function _transformResult($result, $method, $params)
    {
        $resultObjectName = "{$method}Result";
        if (isset($result->$resultObjectName)) {
            $result = $result->$resultObjectName;
        }
        if (is_object($result)) {
            $result = new Zend_Service_StrikeIron_Decorator($result, $resultObjectName);
        }
        return $result;
    }

    /**
     * Get the WSDL URL for this service.
     *
     * @return string
     */
    public function getWsdl()
    {
        return $this->_options['wsdl'];
    }

    /**
     * Get the SOAP Client instance for this service.
     */
    public function getSoapClient()
    {
        return $this->_options['client'];
    }

    /**
     * Get the StrikeIron output headers returned with the last method response.
     *
     * @return array
     */
    public function getLastOutputHeaders()
    {
        return $this->_outputHeaders;
    }

    /**
     * Get the StrikeIron subscription information for this service.
     * If any service method was recently called, the subscription info
     * should have been returned in the SOAP headers so it is cached
     * and returned from the cache.  Otherwise, the getRemainingHits()
     * method is called as a dummy to get the subscription info headers.
     *
     * @param  boolean  $now          Force a call to getRemainingHits instead of cache?
     * @param  string   $queryMethod  Method that will cause SubscriptionInfo header to be sent
     * @return Zend_Service_StrikeIron_Decorator  Decorated subscription info
     * @throws Zend_Service_StrikeIron_Exception
     */
    public function getSubscriptionInfo($now = false, $queryMethod = 'GetRemainingHits')
    {
        if ($now || empty($this->_outputHeaders['SubscriptionInfo'])) {
            $this->$queryMethod();
        }

        // capture subscription info if returned in output headers
        if (isset($this->_outputHeaders['SubscriptionInfo'])) {
            $info = (object)$this->_outputHeaders['SubscriptionInfo'];
            $subscriptionInfo = new Zend_Service_StrikeIron_Decorator($info, 'SubscriptionInfo');
        } else {
            $msg = 'No SubscriptionInfo header found in last output headers';
            /**
             * @see Zend_Service_StrikeIron_Exception
             */
            require_once 'Zend/Service/StrikeIron/Exception.php';
            throw new Zend_Service_StrikeIron_Exception($msg);
        }

        return $subscriptionInfo;
    }
}
PKpG[��5�� Service/StrikeIron/Decorator.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Decorator.php 8064 2008-02-16 10:58:39Z thomas $
 */

/**
 * Decorates a StrikeIron response object returned by the SOAP extension
 * to provide more a PHP-like interface.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_Decorator
{
    /**
     * Name of the decorated object
     * @var null|string
     */
    protected $_name = null;

    /**
     * Object to decorate
     * @var object
     */
    protected $_object = null;

    /**
     * Class constructor
     *
     * @param object       $object  Object to decorate
     * @param null|string  $name    Name of the object
     */
    public function __construct($object, $name = null)
    {
        $this->_object = $object;
        $this->_name   = $name;
    }

    /**
     * Proxy property access to the decorated object, inflecting
     * the property name and decorating any child objects returned.
     * If the property is not found in the decorated object, return
     * NULL as a convenience feature to avoid notices.
     *
     * @param  string $property  Property name to retrieve
     * @return mixed             Value of property or NULL
     */
    public function __get($property)
    {
        $result = null;

        if (! isset($this->_object->$property)) {
            $property = $this->_inflect($property);
        }

        if (isset($this->_object->$property)) {
            $result = $this->_object->$property;
            $result = $this->_decorate($result);
        }
        return $result;
    }

    /**
     * Proxy method calls to the decorated object.  This will only
     * be used when the SOAPClient returns a custom PHP object via
     * its classmap option so no inflection is done.
     *
     * @param string  $method  Name of method called
     * @param array   $args    Arguments for method
     */
    public function __call($method, $args)
    {
        return call_user_func_array(array($this->_object, $method), $args);
    }

    /**
     * Inflect a property name from PHP-style to the result object's
     * style.  The default implementation here only inflects the case
     * of the first letter, e.g. from "fooBar" to "FooBar".
     *
     * @param  string $property  Property name to inflect
     * @return string            Inflected property name
     */
    protected function _inflect($property)
    {
        return ucfirst($property);
    }

    /**
     * Decorate a value returned by the result object.  The default
     * implementation here only decorates child objects.
     *
     * @param  mixed  $result  Value to decorate
     * @return mixed           Decorated result
     */
    protected function _decorate($result)
    {
        if (is_object($result)) {
            $result = new self($result);
        }
        return $result;
    }

    /**
     * Return the object being decorated
     *
     * @return object
     */
    public function getDecoratedObject()
    {
        return $this->_object;
    }

    /**
     * Return the name of the object being decorated
     *
     * @return null|string
     */
    public function getDecoratedObjectName()
    {
        return $this->_name;
    }
}
PKpG[�;)``"Service/StrikeIron/ZipCodeInfo.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ZipCodeInfo.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Service_StrikeIron_Base */
require_once 'Zend/Service/StrikeIron/Base.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_ZipCodeInfo extends Zend_Service_StrikeIron_Base
{
    /**
     * Configuration options
     * @param array
     */
    protected $_options = array('username' => null,
                                'password' => null,
                                'client'   => null,
                                'options'  => null,
                                'headers'  => null,
                                'wsdl'     => 'http://sdpws.strikeiron.com/zf1.StrikeIron/sdpZIPCodeInfo?WSDL');
}
PKpG[�
nff'Service/StrikeIron/SalesUseTaxBasic.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SalesUseTaxBasic.php 8064 2008-02-16 10:58:39Z thomas $
 */

/** Zend_Service_StrikeIron_Base */
require_once 'Zend/Service/StrikeIron/Base.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron_SalesUseTaxBasic extends Zend_Service_StrikeIron_Base
{
    /**
     * Configuration options
     * @param array
     */
    protected $_options = array('username' => null,
                                'password' => null,
                                'client'   => null,
                                'options'  => null,
                                'headers'  => null,
                                'wsdl'     => 'http://ws.strikeiron.com/zf1.StrikeIron/taxdatabasic4?WSDL');
}
PKpG[d��1�1Service/Simpy.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Simpy.php 10478 2008-07-26 17:29:07Z elazar $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @link       http://www.simpy.com/doc/api/rest/
 */
class Zend_Service_Simpy
{
    /**
     * Base URI to which API methods and parameters will be appended
     *
     * @var string
     */
    protected $_baseUri = 'http://simpy.com';

    /**
     * Zend_Service_Rest object
     *
     * @var Zend_Service_Rest
     */
    protected $_rest;

    /**
     * Constructs a new Simpy (free) REST API Client
     *
     * @param  string $username Username for the Simpy user account
     * @param  string $password Password for the Simpy user account
     * @return void
     */
    public function __construct($username, $password)
    {
        /**
         * @see Zend_Service_Rest
         */
        require_once 'Zend/Rest/Client.php';
        $this->_rest = new Zend_Rest_Client($this->_baseUri);
        $this->_rest->getHttpClient()
            ->setAuth($username, $password);
    }

    /**
     * Sends a request to the REST API service and does initial processing
     * on the response.
     *
     * @param  string       $op    Name of the operation for the request
     * @param  string|array $query Query data for the request (optional)
     * @throws Zend_Service_Exception
     * @return DOMDocument Parsed XML response
     */
    protected function _makeRequest($op, $query = null)
    {
        if ($query != null) {
            $query = array_diff($query, array_filter($query, 'is_null'));
        }

        $response = $this->_rest->restGet('/simpy/api/rest/' . $op . '.do', $query);

        if ($response->isSuccessful()) {
            $doc = new DOMDocument();
            $doc->loadXML($response->getBody());
            $xpath = new DOMXPath($doc);
            $list = $xpath->query('/status/code');

            if ($list->length > 0) {
                $code = $list->item(0)->nodeValue;

                if ($code != 0) {
                    $list = $xpath->query('/status/message');
                    $message = $list->item(0)->nodeValue;
                    /**
                     * @see Zend_Service_Exception
                     */
                    require_once 'Zend/Service/Exception.php';
                    throw new Zend_Service_Exception($message, $code);
                }
            }

            return $doc;
        }

        /**
         * @see Zend_Service_Exception
         */
        require_once 'Zend/Service/Exception.php';
        throw new Zend_Service_Exception('HTTP ' . $response->getStatus());
    }

    /**
     * Returns a list of all tags and their counts, ordered by count in
     * decreasing order
     *
     * @param  int $limit Limits the number of tags returned (optional)
     * @link   http://www.simpy.com/doc/api/rest/GetTags
     * @throws Zend_Service_Exception
     * @return Zend_Service_Simpy_TagSet
     */
    public function getTags($limit = null)
    {
        $query = array(
            'limit' => $limit
        );

        $doc = $this->_makeRequest('GetTags', $query);

        /**
         * @see Zend_Service_Simpy_TagSet
         */
        require_once 'Zend/Service/Simpy/TagSet.php';
        return new Zend_Service_Simpy_TagSet($doc);
    }

    /**
     * Removes a tag.
     *
     * @param  string $tag Tag to be removed
     * @link   http://www.simpy.com/doc/api/rest/RemoveTag
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function removeTag($tag)
    {
        $query = array(
            'tag' => $tag
        );

        $this->_makeRequest('RemoveTag', $query);

        return $this;
    }

    /**
     * Renames a tag.
     *
     * @param  string $fromTag Tag to be renamed
     * @param  string $toTag   New tag name
     * @link   http://www.simpy.com/doc/api/rest/RenameTag
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function renameTag($fromTag, $toTag)
    {
        $query = array(
            'fromTag' => $fromTag,
            'toTag' => $toTag
        );

        $this->_makeRequest('RenameTag', $query);

        return $this;
    }

    /**
     * Merges two tags into a new tag.
     *
     * @param  string $fromTag1 First tag to merge.
     * @param  string $fromTag2 Second tag to merge.
     * @param  string $toTag    Tag to merge the two tags into.
     * @link   http://www.simpy.com/doc/api/rest/MergeTags
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function mergeTags($fromTag1, $fromTag2, $toTag)
    {
        $query = array(
            'fromTag1' => $fromTag1,
            'fromTag2' => $fromTag2,
            'toTag' => $toTag
        );

        $this->_makeRequest('MergeTags', $query);

        return $this;
    }

    /**
     * Splits a single tag into two separate tags.
     *
     * @param  string $tag    Tag to split
     * @param  string $toTag1 First tag to split into
     * @param  string $toTag2 Second tag to split into
     * @link   http://www.simpy.com/doc/api/rest/SplitTag
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function splitTag($tag, $toTag1, $toTag2)
    {
        $query = array(
            'tag' => $tag,
            'toTag1' => $toTag1,
            'toTag2' => $toTag2
        );

        $this->_makeRequest('SplitTag', $query);

        return $this;
    }

    /**
     * Performs a query on existing links and returns the results or returns all
     * links if no particular query is specified (which should be used sparingly
     * to prevent overloading Simpy servers)
     *
     * @param  Zend_Service_Simpy_LinkQuery $q Query object to use (optional)
     * @return Zend_Service_Simpy_LinkSet
     */
    public function getLinks(Zend_Service_Simpy_LinkQuery $q = null)
    {
        if ($q != null) {
            $query = array(
                'q'          => $q->getQueryString(),
                'limit'      => $q->getLimit(),
                'date'       => $q->getDate(),
                'afterDate'  => $q->getAfterDate(),
                'beforeDate' => $q->getBeforeDate()
            );

            $doc = $this->_makeRequest('GetLinks', $query);
        } else {
            $doc = $this->_makeRequest('GetLinks');
        }

        /**
         * @see Zend_Service_Simpy_LinkSet
         */
        require_once 'Zend/Service/Simpy/LinkSet.php';
        return new Zend_Service_Simpy_LinkSet($doc);
    }

    /**
     * Saves a given link.
     *
     * @param  string $title       Title of the page to save
     * @param  string $href        URL of the page to save
     * @param  int    $accessType  ACCESSTYPE_PUBLIC or ACCESSTYPE_PRIVATE
     * @param  mixed  $tags        String containing a comma-separated list of
     *                             tags or array of strings containing tags
     *                             (optional)
     * @param  string $urlNickname Alternative custom title (optional)
     * @param  string $note        Free text note (optional)
     * @link   Zend_Service_Simpy::ACCESSTYPE_PUBLIC
     * @link   Zend_Service_Simpy::ACCESSTYPE_PRIVATE
     * @link   http://www.simpy.com/doc/api/rest/SaveLink
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function saveLink($title, $href, $accessType, $tags = null, $urlNickname = null, $note = null)
    {
        if (is_array($tags)) {
            $tags = implode(',', $tags);
        }

        $query = array(
            'title'       => $title,
            'href'        => $href,
            'accessType'  => $accessType,
            'tags'        => $tags,
            'urlNickname' => $urlNickname,
            'note'        => $note
        );

        $this->_makeRequest('SaveLink', $query);

        return $this;
    }

    /**
     * Deletes a given link.
     *
     * @param  string $href URL of the bookmark to delete
     * @link   http://www.simpy.com/doc/api/rest/DeleteLink
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function deleteLink($href)
    {
        $query = array(
            'href' => $href
        );

        $this->_makeRequest('DeleteLink', $query);

        return $this;
    }

    /**
     * Return a list of watchlists and their meta-data, including the number
     * of new links added to each watchlist since last login.
     *
     * @link   http://www.simpy.com/doc/api/rest/GetWatchlists
     * @return Zend_Service_Simpy_WatchlistSet
     */
    public function getWatchlists()
    {
        $doc = $this->_makeRequest('GetWatchlists');

        /**
         * @see Zend_Service_Simpy_WatchlistSet
         */
        require_once 'Zend/Service/Simpy/WatchlistSet.php';
        return new Zend_Service_Simpy_WatchlistSet($doc);
    }

    /**
     * Returns the meta-data for a given watchlist.
     *
     * @param  int $watchlistId ID of the watchlist to retrieve
     * @link   http://www.simpy.com/doc/api/rest/GetWatchlist
     * @return Zend_Service_Simpy_Watchlist
     */
    public function getWatchlist($watchlistId)
    {
        $query = array(
            'watchlistId' => $watchlistId
        );

        $doc = $this->_makeRequest('GetWatchlist', $query);

        /**
         * @see Zend_Service_Simpy_Watchlist
         */
        require_once 'Zend/Service/Simpy/Watchlist.php';
        return new Zend_Service_Simpy_Watchlist($doc->documentElement);
    }

    /**
     * Returns all notes in reverse chronological order by add date or by
     * rank.
     *
     * @param  string $q     Query string formatted using Simpy search syntax
     *                       and search fields (optional)
     * @param  int    $limit Limits the number notes returned (optional)
     * @link   http://www.simpy.com/doc/api/rest/GetNotes
     * @link   http://www.simpy.com/simpy/FAQ.do#searchSyntax
     * @link   http://www.simpy.com/simpy/FAQ.do#searchFieldsLinks
     * @return Zend_Service_Simpy_NoteSet
     */
    public function getNotes($q = null, $limit = null)
    {
        $query = array(
            'q'     => $q,
            'limit' => $limit
        );

        $doc = $this->_makeRequest('GetNotes', $query);

        /**
         * @see Zend_Service_Simpy_NoteSet
         */
        require_once 'Zend/Service/Simpy/NoteSet.php';
        return new Zend_Service_Simpy_NoteSet($doc);
    }

    /**
     * Saves a note.
     *
     * @param  string $title       Title of the note
     * @param  mixed  $tags        String containing a comma-separated list of
     *                             tags or array of strings containing tags
     *                             (optional)
     * @param  string $description Free-text note (optional)
     * @param  int    $noteId      Unique identifier for an existing note to
     *                             update (optional)
     * @link   http://www.simpy.com/doc/api/rest/SaveNote
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function saveNote($title, $tags = null, $description = null, $noteId = null)
    {
        if (is_array($tags)) {
            $tags = implode(',', $tags);
        }

        $query = array(
            'title'       => $title,
            'tags'        => $tags,
            'description' => $description,
            'noteId'      => $noteId
        );

        $this->_makeRequest('SaveNote', $query);

        return $this;
    }

    /**
     * Deletes a given note.
     *
     * @param  int $noteId ID of the note to delete
     * @link   http://www.simpy.com/doc/api/rest/DeleteNote
     * @return Zend_Service_Simpy Provides a fluent interface
     */
    public function deleteNote($noteId)
    {
        $query = array(
            'noteId' => $noteId
        );

        $this->_makeRequest('DeleteNote', $query);

        return $this;
    }
}
PKpG[\�"�"Service/ReCaptcha/MailHide.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** @see Zend_Service_ReCaptcha */
require_once 'Zend/Service/ReCaptcha.php';

/**
 * Zend_Service_ReCaptcha_MailHide
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Service_ReCaptcha_MailHide extends Zend_Service_ReCaptcha
{
    /**#@+
     * Encryption constants
     */
    const ENCRYPTION_MODE = MCRYPT_MODE_CBC;
    const ENCRYPTION_CIPHER = MCRYPT_RIJNDAEL_128;
    const ENCRYPTION_BLOCK_SIZE = 16;
    const ENCRYPTION_IV = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
    /**#@-*/

    /**
     * Url to the mailhide server
     *
     * @var string
     */
    const MAILHIDE_SERVER = 'http://mailhide.recaptcha.net/d';

    /**
     * The email address to protect
     *
     * @var string
     */
    protected $_email = null;

    /**
     * Binary representation of the private key
     *
     * @var string
     */
    protected $_privateKeyPacked = null;

    /**
     * The local part of the email
     *
     * @var string
     */
    protected $_emailLocalPart = null;

    /**
     * The domain part of the email
     *
     * @var string
     */
    protected $_emailDomainPart = null;

    /**
     * Local constructor
     *
     * @param string $publicKey
     * @param string $privateKey
     * @param string $email
     * @param array|Zend_Config $options
     */
    public function __construct($publicKey = null, $privateKey = null, $email = null, $options = null)
    {
        /* Require the mcrypt extension to be loaded */
        $this->_requireMcrypt();

        /* If options is a Zend_Config object we want to convert it to an array so we can merge it with the default options */
        if ($options instanceof Zend_Config) {
            $options = $options->toArray();
        }

        /* Merge if needed */
        if (is_array($options)) {
            $options = array_merge($this->getDefaultOptions(), $options);
        } else {
            $options = $this->getDefaultOptions();
        }

        parent::__construct($publicKey, $privateKey, null, $options);

        if ($email !== null) {
            $this->setEmail($email);
        }
    }

    /**
     * See if the mcrypt extension is available
     *
     * @throws Zend_Service_ReCaptcha_MailHide_Exception
     */
    protected function _requireMcrypt()
    {
        if (!extension_loaded('mcrypt')) {
            /** @see Zend_Service_ReCaptcha_MailHide_Exception */
            require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php';

            throw new Zend_Service_ReCaptcha_MailHide_Exception('Use of the Zend_Service_ReCaptcha_MailHide component requires the mcrypt extension to be enabled in PHP');
        }
    }

    /**
     * Serialize as string
     *
     * When the instance is used as a string it will display the email address. Since we can't
     * throw exceptions within this method we will trigger a user warning instead.
     *
     * @return string
     */
    public function __toString()
    {
        try {
            $return = $this->getHtml();
        } catch (Exception $e) {
            $return = '';
            trigger_error($e->getMessage(), E_USER_WARNING);
        }

        return $return;
    }

    /**
     * Get the default set of parameters
     *
     * @return array
     */
    public function getDefaultOptions()
    {
        return array(
            'linkTitle'      => 'Reveal this e-mail address',
            'linkHiddenText' => '...',
            'popupWidth'     => 500,
            'popupHeight'    => 300,
        );
    }

    /**
     * Override the setPrivateKey method
     *
     * Override the parent method to store a binary representation of the private key as well.
     *
     * @param string $privateKey
     * @return Zend_Service_ReCaptcha_MailHide
     */
    public function setPrivateKey($privateKey)
    {
        parent::setPrivateKey($privateKey);

        /* Pack the private key into a binary string */
        $this->_privateKeyPacked = pack('H*', $this->_privateKey);

        return $this;
    }

    /**
     * Set the email property
     *
     * This method will set the email property along with the local and domain parts
     *
     * @param string $email
     * @return Zend_Service_ReCaptcha_MailHide
     */
    public function setEmail($email)
    {
        $this->_email = $email;

        $emailParts = explode('@', $email, 2);

        /* Decide on how much of the local part we want to reveal */
        if (strlen($emailParts[0]) <= 4) {
            $emailParts[0] = substr($emailParts[0], 0, 1);
        } else if (strlen($emailParts[0]) <= 6) {
            $emailParts[0] = substr($emailParts[0], 0, 3);
        } else {
            $emailParts[0] = substr($emailParts[0], 0, 4);
        }

        $this->_emailLocalPart = $emailParts[0];
        $this->_emailDomainPart = $emailParts[1];

        return $this;
    }

    /**
     * Get the email property
     *
     * @return string
     */
    public function getEmail()
    {
        return $this->_email;
    }

    /**
     * Get the local part of the email address
     *
     * @return string
     */
    public function getEmailLocalPart()
    {
        return $this->_emailLocalPart;
    }

    /**
     * Get the domain part of the email address
     *
     * @return string
     */
    public function getEmailDomainPart()
    {
        return $this->_emailDomainPart;
    }

    /**
     * Get the HTML code needed for the mail hide
     *
     * @param string $email
     * @return string
     * @throws Zend_Service_ReCaptcha_MailHide_Exception
     */
    public function getHtml($email = null)
    {
        if ($email !== null) {
            $this->setEmail($email);
        } else if ($this->_email === null) {
            /** @see Zend_Service_ReCaptcha_MailHide_Exception */
            require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php';

            throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing email address');
        }

        if ($this->_publicKey === null) {
            /** @see Zend_Service_ReCaptcha_MailHide_Exception */
            require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php';

            throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing public key');
        }

        if ($this->_privateKey === null) {
            /** @see Zend_Service_ReCaptcha_MailHide_Exception */
            require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php';

            throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing private key');
        }

        /* Generate the url */
        $url = $this->_getUrl();

        /* Genrate the HTML used to represent the email address */
        $html = htmlentities($this->_emailLocalPart) . '<a href="' . htmlentities($url) . '" onclick="window.open(\'' . htmlentities($url) . '\', \'\', \'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=' . $this->_options['popupWidth'] . ',height=' . $this->_options['popupHeight'] . '\'); return false;" title="' . $this->_options['linkTitle'] . '">' . $this->_options['linkHiddenText'] . '</a>@' . htmlentities($this->_emailDomainPart);

        return $html;
    }

    /**
     * Get the url used on the "hidden" part of the email address
     *
     * @return string
     */
    protected function _getUrl()
    {
        /* Figure out how much we need to pad the email */
        $numPad = self::ENCRYPTION_BLOCK_SIZE - (strlen($this->_email) % self::ENCRYPTION_BLOCK_SIZE);

        /* Pad the email */
        $emailPadded = str_pad($this->_email, strlen($this->_email) + $numPad, chr($numPad));

        /* Encrypt the email */
        $emailEncrypted = mcrypt_encrypt(self::ENCRYPTION_CIPHER, $this->_privateKeyPacked, $emailPadded, self::ENCRYPTION_MODE, self::ENCRYPTION_IV);

        /* Return the url */
        return self::MAILHIDE_SERVER . '?k=' . $this->_publicKey . '&c=' . strtr(base64_encode($emailEncrypted), '+/', '-_');
    }
}PKpG[�]/Service/ReCaptcha/Response.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Service_ReCaptcha_Response
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Service_ReCaptcha_Response
{
    /**
     * Status
     *
     * true if the response is valid or false otherwise
     *
     * @var boolean
     */
    protected $_status = null;

    /**
     * Error code
     *
     * The error code if the status is false. The different error codes can be found in the
     * recaptcha API docs.
     *
     * @var string
     */
    protected $_errorCode = null;

    /**
     * Class constructor used to construct a response
     *
     * @param string $status
     * @param string $errorCode
     * @param Zend_Http_Response $httpResponse If this is set the content will override $status and $errorCode
     */
    public function __construct($status = null, $errorCode = null, Zend_Http_Response $httpResponse = null)
    {
        if ($status !== null) {
            $this->setStatus($status);
        }

        if ($errorCode !== null) {
            $this->setErrorCode($errorCode);
        }

        if ($httpResponse !== null) {
            $this->setFromHttpResponse($httpResponse);
        }
    }

    /**
     * Set the status
     *
     * @param string $status
     * @return Zend_Service_ReCaptcha_Response
     */
    public function setStatus($status)
    {
        if ($status === 'true') {
            $this->_status = true;
        } else {
            $this->_status = false;
        }

        return $this;
    }

    /**
     * Get the status
     *
     * @return boolean
     */
    public function getStatus()
    {
        return $this->_status;
    }

    /**
     * Alias for getStatus()
     *
     * @return boolean
     */
    public function isValid()
    {
        return $this->getStatus();
    }

    /**
     * Set the error code
     *
     * @param string $errorCode
     * @return Zend_Service_ReCaptcha_Response
     */
    public function setErrorCode($errorCode)
    {
        $this->_errorCode = $errorCode;

        return $this;
    }

    /**
     * Get the error code
     *
     * @return string
     */
    public function getErrorCode()
    {
        return $this->_errorCode;
    }

    /**
     * Populate this instance based on a Zend_Http_Response object
     *
     * @param Zend_Http_Response $response
     * @return Zend_Service_ReCaptcha_Response
     */
    public function setFromHttpResponse(Zend_Http_Response $response)
    {
        $body = $response->getBody();

        $parts = explode("\n", $body, 2);

        if (count($parts) !== 2) {
            $status = 'false';
            $errorCode = '';
        } else {
            list($status, $errorCode) = $parts;
        }

        $this->setStatus($status);
        $this->setErrorCode($errorCode);

        return $this;
    }
}PKpG[@EyrrService/ReCaptcha/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** @see Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * Zend_Service_ReCaptcha_Exception
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Service_ReCaptcha_Exception extends Zend_Exception
{}PKpG[��(Service/ReCaptcha/MailHide/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/** @see Zend_Exception */
require_once 'Zend/Exception.php';

/**
 * Zend_Service_ReCaptcha_MailHide_Exception
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage ReCaptcha
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
class Zend_Service_ReCaptcha_MailHide_Exception extends Zend_Exception
{}PKpG[�%��#Service/Nirvanix/Namespace/Imfs.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Service_Nirvanix_Namespace_Base
 */
require_once 'Zend/Service/Nirvanix/Namespace/Base.php'; 
 
/**
 * Namespace proxy with additional convenience methods for the IMFS namespace.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Nirvanix_Namespace_Imfs extends Zend_Service_Nirvanix_Namespace_Base
{
    /**
     * Convenience function to get the contents of a file on
     * the Nirvanix IMFS.  Analog to PHP's file_get_contents().
     *
     * @param  string  $filePath    Remote path and filename
     * @param  integer $expiration  Number of seconds that Nirvanix
     *                              make the file available for download.
     * @return string               Contents of file  
     */
    public function getContents($filePath, $expiration = 3600)
    {
        // get url to download the file
        $params = array('filePath'   => $filePath,
                        'expiration' => $expiration);
        $resp = $this->getOptimalUrls($params);
        $url = (string)$resp->Download->DownloadURL;

        // download the file
        $this->_httpClient->resetParameters();
        $this->_httpClient->setUri($url);
        $resp = $this->_httpClient->request(Zend_Http_Client::GET);

        return $resp->getBody();
    }

    /**
     * Convenience function to put the contents of a string into
     * the Nirvanix IMFS.  Analog to PHP's file_put_contents().
     *
     * @param  string  $filePath    Remote path and filename
     * @param  integer $data        Data to store in the file
     * @param  string  $mimeType    Mime type of data
     * @return Zend_Service_Nirvanix_Response
     */
    public function putContents($filePath, $data, $mimeType = null)
    {
        // get storage node for upload
        $params = array('sizeBytes' => strlen($data));
        $resp = $this->getStorageNode($params);
        $host        = (string)$resp->GetStorageNode->UploadHost;
        $uploadToken = (string)$resp->GetStorageNode->UploadToken;

        // http upload data into remote file
        $this->_httpClient->resetParameters();
        $this->_httpClient->setUri("http://{$host}/Upload.ashx");
        $this->_httpClient->setParameterPost('uploadToken', $uploadToken);
        $this->_httpClient->setParameterPost('destFolderPath', dirname($filePath));
        $this->_httpClient->setFileUpload(basename($filePath), 'uploadFile', $data, $mimeType);
        $response = $this->_httpClient->request(Zend_Http_Client::POST);

        return new Zend_Service_Nirvanix_Response($response->getBody());
    }
    
    /**
     * Convenience function to remove a file from the Nirvanix IMFS.
     * Analog to PHP's unlink().
     *
     * @param  string  $filePath  Remove path and filename
     * @return Zend_Service_Nirvanix_Response
     */
    public function unlink($filePath)
    {
        $params = array('filePath' => $filePath);
        return $this->deleteFiles($params);
    }

}PKpG[H6-�nn#Service/Nirvanix/Namespace/Base.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
 
/**
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * @see Zend_Service_Nirvanix_Response
 */
require_once 'Zend/Service/Nirvanix/Response.php';

/**
 * The Nirvanix web services are split into namespaces.  This is a proxy class
 * representing one namespace.  It allows calls to the namespace to be made by
 * PHP object calls rather than by having to construct HTTP client requests.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Nirvanix_Namespace_Base
{
    /**
     * HTTP client instance that will be used to make calls to
     * the Nirvanix web services.
     * @var Zend_Http_Client
     */
    protected $_httpClient;
    
    /**
     * Host to use for calls to this Nirvanix namespace.  It is possible
     * that the user will wish to use different hosts for different namespaces.
     * @var string
     */
    protected $_host = 'http://services.nirvanix.com';

    /**
     * Name of this namespace as used in the URL.
     * @var string
     */
    protected $_namespace = '';

    /**
     * Defaults for POST parameters.  When a request to the service is to be
     * made, the POST parameters are merged into these.  This is a convenience
     * feature so parameters that are repeatedly required like sessionToken
     * do not need to be supplied again and again by the user. 
     *
     * @param array
     */
    protected $_defaults = array();    

    /**
     * Class constructor.  
     *
     * @param  $options  array  Options and dependency injection
     */
    public function __construct($options = array())
    {   
        if (isset($options['baseUrl'])) {
            $this->_host = $options['baseUrl'];
        }

        if (isset($options['namespace'])) {
            $this->_namespace = $options['namespace'];
        }

        if (isset($options['defaults'])) {
            $this->_defaults = $options['defaults'];
        }

        if (! isset($options['httpClient'])) {
            $options['httpClient'] = new Zend_Http_Client();
        }
        $this->_httpClient = $options['httpClient'];
    }
    
    /**
     * When a method call is made against this proxy, convert it to
     * an HTTP request to make against the Nirvanix REST service.  
     *
     * $imfs->DeleteFiles(array('filePath' => 'foo'));
     *
     * Assuming this object was proxying the IMFS namespace, the 
     * method call above would call the DeleteFiles command.  The
     * POST parameters would be filePath, merged with the 
     * $this->_defaults (containing the sessionToken).
     *
     * @param  string  $methodName  Name of the command to call 
     *                              on this namespace.
     * @param  array   $args        Only the first is used and it must be
     *                              an array.  It contains the POST params.
     *
     * @return Zend_Service_Nirvanix_Response
     */
    public function __call($methodName, $args)
    {
        $uri = $this->_makeUri($methodName);
        $this->_httpClient->setUri($uri);

        if (!isset($args[0]) || !is_array($args[0])) { 
            $args[0] = array();
        }

        $params = array_merge($this->_defaults, $args[0]);
        $this->_httpClient->resetParameters();
        $this->_httpClient->setParameterPost($params);

        $httpResponse = $this->_httpClient->request(Zend_Http_Client::POST);
        return $this->_wrapResponse($httpResponse);
    }

    /**
     * Return the HTTP client used for this namespace.  This is useful
     * for inspecting the last request or directly interacting with the
     * HTTP client.
     *
     * @return Zend_Http_Client
     */
    public function getHttpClient()
    {
        return $this->_httpClient;
    }

    /**
     * Make a complete URI from an RPC method name.  All Nirvanix REST
     * service URIs use the same format.
     * 
     * @param  string  $methodName  RPC method name
     * @return string    
     */
    protected function _makeUri($methodName)
    {
        $methodName = ucfirst($methodName);
        return "{$this->_host}/ws/{$this->_namespace}/{$methodName}.ashx";
    }
    
    /**
     * All Nirvanix REST service calls return an XML payload.  This method
     * makes a Zend_Service_Nirvanix_Response from that XML payload.  
     *
     * @param  Zend_Http_Response  $httpResponse  Raw response from Nirvanix
     * @return Zend_Service_Nirvanix_Response     Wrapped response
     */
    protected function _wrapResponse($httpResponse)
    {
        return new Zend_Service_Nirvanix_Response($httpResponse->getBody());
    }
}PKpG[t�V::Service/Nirvanix/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
 
/**
 * @see Zend_Exception
 */
require_once 'Zend/Exception.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Nirvanix_Exception extends Zend_Exception
{}
PKpG[~��'88Service/Nirvanix/Response.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * This class decorates a SimpleXMLElement parsed from a Nirvanix web service
 * response.  It is primarily exists to provide a convenience feature that 
 * throws an exception when <ResponseCode> contains an error.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Nirvanix_Response
{
    /**
     * SimpleXMLElement parsed from Nirvanix web service response.
     * 
     * @var SimpleXMLElement
     */
    protected $_sxml;
    
    /**
     * Class constructor.  Parse the XML response from a Nirvanix method
     * call into a decorated SimpleXMLElement element.
     *
     * @param string $xml  XML response string from Nirvanix
     * @throws Zend_Service_Nirvanix_Exception
     */
    public function __construct($xml)
    {
        $this->_sxml = @simplexml_load_string($xml);

        if (! $this->_sxml instanceof SimpleXMLElement) {
            $this->_throwException("XML could not be parsed from response: $xml");
        }

        $name = $this->_sxml->getName();
        if ($name != 'Response') {
            $this->_throwException("Expected XML element Response, got $name");
        }
        
        $code = (int)$this->_sxml->ResponseCode;
        if ($code != 0) {
            $msg = (string)$this->_sxml->ErrorMessage;
            $this->_throwException($msg, $code);
        }
    }

    /**
     * Return the SimpleXMLElement representing this response
     * for direct access.
     *
     * @return SimpleXMLElement
     */
    public function getSxml()
    {
        return $this->_sxml;
    }

    /**
     * Delegate undefined properties to the decorated SimpleXMLElement.
     *
     * @param  string  $offset  Undefined property name
     * @return mixed
     */
    public function __get($offset) 
    {
        return $this->_sxml->$offset;
    }

    /**
     * Delegate undefined methods to the decorated SimpleXMLElement.
     *
     * @param  string  $offset  Underfined method name
     * @param  array   $args    Method arguments
     * @return mixed
     */
    public function __call($method, $args)
    {
        return call_user_func_array(array($this->_sxml, $method), $args);
    }

    /**
     * Throw an exception.  This method exists to only contain the
     * lazy-require() of the exception class.
     * 
     * @param  string   $message  Error message
     * @param  integer  $code     Error code
     * @throws Zend_Service_Nirvanix_Exception
     * @return void
     */
    protected function _throwException($message, $code = null)
    {
        /**
         * @see Zend_Service_Nirvanix_Exception
         */
        require_once 'Zend/Service/Nirvanix/Exception.php';        

        throw new Zend_Service_Nirvanix_Exception($message, $code);
    }

}
PKpG[�:M9�J�JService/SlideShare.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SlideShare.php 9094 2008-03-30 18:36:55Z thomas $
 */

/**
 * Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * Zend_Cache
 */
require_once 'Zend/Cache.php';

/**
 * Zend_Service_SlideShare_Exception
 */
require_once 'Zend/Service/SlideShare/Exception.php';

/**
 * Zend_Service_SlideShare_SlideShow
 */
require_once 'Zend/Service/SlideShare/SlideShow.php';

/**
 * The Zend_Service_SlideShare component is used to interface with the
 * slideshare.net web server to retrieve slide shows hosted on the web site for
 * display or other processing.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage SlideShare
 * @throws     Zend_Service_SlideShare_Exception
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_SlideShare
{

    /**
     * Web service result code mapping
     */
    const SERVICE_ERROR_BAD_APIKEY       = 1;
    const SERVICE_ERROR_BAD_AUTH         = 2;
    const SERVICE_ERROR_MISSING_TITLE    = 3;
    const SERVICE_ERROR_MISSING_FILE     = 4;
    const SERVICE_ERROR_EMPTY_TITLE      = 5;
    const SERVICE_ERROR_NOT_SOURCEOBJ    = 6;
    const SERVICE_ERROR_INVALID_EXT      = 7;
    const SERVICE_ERROR_FILE_TOO_BIG     = 8;
    const SERVICE_ERROR_SHOW_NOT_FOUND   = 9;
    const SERVICE_ERROR_USER_NOT_FOUND   = 10;
    const SERVICE_ERROR_GROUP_NOT_FOUND  = 11;
    const SERVICE_ERROR_MISSING_TAG      = 12;
    const SERVICE_ERROR_DAILY_LIMIT      = 99;
    const SERVICE_ERROR_ACCOUNT_BLOCKED  = 100;

    /**
     * Slide share Web service communication URIs
     */
    const SERVICE_UPLOAD_URI                  = 'http://www.slideshare.net/api/1/upload_slideshow';
    const SERVICE_GET_SHOW_URI                = 'http://www.slideshare.net/api/1/get_slideshow';
    const SERVICE_GET_SHOW_BY_USER_URI        = 'http://www.slideshare.net/api/1/get_slideshow_by_user';
    const SERVICE_GET_SHOW_BY_TAG_URI         = 'http://www.slideshare.net/api/1/get_slideshow_by_tag';
    const SERVICE_GET_SHOW_BY_GROUP_URI       = 'http://www.slideshare.net/api/1/get_slideshows_from_group';

    /**
     * The MIME type of Slideshow files
     *
     */
    const POWERPOINT_MIME_TYPE    = "application/vnd.ms-powerpoint";

    /**
     * The API key to use in requests
     *
     * @var string The API key
     */
    protected $_apiKey;

    /**
     * The shared secret to use in requests
     *
     * @var string the Shared secret
     */
    protected $_sharedSecret;

    /**
     * The username to use in requests
     *
     * @var string the username
     */
    protected $_username;

    /**
     * The password to use in requests
     *
     * @var string the password
     */
    protected $_password;

    /**
     * The HTTP Client object to use to perform requests
     *
     * @var Zend_Http_Client
     */
    protected $_httpclient;

    /**
     * The Cache object to use to perform caching
     *
     * @var Zend_Cache_Core
     */
    protected $_cacheobject;

    /**
     * Sets the Zend_Http_Client object to use in requests. If not provided a default will
     * be used.
     *
     * @param Zend_Http_Client $client The HTTP client instance to use
     * @return Zend_Service_SlideShare
     */
    public function setHttpClient(Zend_Http_Client $client)
    {
        $this->_httpclient = $client;
        return $this;
    }

    /**
     * Returns the instance of the Zend_Http_Client which will be used. Creates an instance
     * of Zend_Http_Client if no previous client was set.
     *
     * @return Zend_Http_Client The HTTP client which will be used
     */
    public function getHttpClient()
    {

        if(!($this->_httpclient instanceof Zend_Http_Client)) {
            $client = new Zend_Http_Client();
            $client->setConfig(array('maxredirects' => 2,
                                     'timeout' => 5));

            $this->setHttpClient($client);
        }

        $this->_httpclient->resetParameters();
        return $this->_httpclient;
    }

    /**
     * Sets the Zend_Cache object to use to cache the results of API queries
     *
     * @param Zend_Cache_Core $cacheobject The Zend_Cache object used
     * @return Zend_Service_SlideShare
     */
    public function setCacheObject(Zend_Cache_Core $cacheobject)
    {
        $this->_cacheobject = $cacheobject;
        return $this;
    }

    /**
     * Gets the Zend_Cache object which will be used to cache API queries. If no cache object
     * was previously set the the default will be used (Filesystem caching in /tmp with a life
     * time of 43200 seconds)
     *
     * @return Zend_Cache_Core The object used in caching
     */
    public function getCacheObject()
    {

        if(!($this->_cacheobject instanceof Zend_Cache_Core)) {
            $cache = Zend_Cache::factory('Core', 'File', array('lifetime' => 43200,
                                                               'automatic_serialization' => true),
                                                         array('cache_dir' => '/tmp'));

            $this->setCacheObject($cache);
        }

        return $this->_cacheobject;
    }

    /**
     * Returns the user name used for API calls
     *
     * @return string The username
     */
    public function getUserName()
    {
        return $this->_username;
    }

    /**
     * Sets the user name to use for API calls
     *
     * @param string $un The username to use
     * @return Zend_Service_SlideShare
     */
    public function setUserName($un)
    {
        $this->_username = $un;
        return $this;
    }

    /**
     * Gets the password to use in API calls
     *
     * @return string the password to use in API calls
     */
    public function getPassword()
    {
        return $this->_password;
    }

    /**
     * Sets the password to use in API calls
     *
     * @param string $pw The password to use
     * @return Zend_Service_SlideShare
     */
    public function setPassword($pw)
    {
        $this->_password = (string)$pw;
        return $this;
    }

    /**
     * Gets the API key to be used in making API calls
     *
     * @return string the API Key
     */
    public function getApiKey()
    {
        return $this->_apiKey;
    }

    /**
     * Sets the API key to be used in making API calls
     *
     * @param string $key The API key to use
     * @return Zend_Service_SlideShare
     */
    public function setApiKey($key)
    {
        $this->_apiKey = (string)$key;
        return $this;
    }

    /**
     * Gets the shared secret used in making API calls
     *
     * @return string the Shared secret
     */
    public function getSharedSecret()
    {
        return $this->_sharedSecret;
    }

    /**
     * Sets the shared secret used in making API calls
     *
     * @param string $secret the shared secret
     * @return Zend_Service_SlideShare
     */
    public function setSharedSecret($secret)
    {
        $this->_sharedSecret = (string)$secret;
        return $this;
    }

    /**
     * The Constructor
     *
     * @param string $apikey The API key
     * @param string $sharedSecret The shared secret
     * @param string $username The username
     * @param string $password The password
     */
    public function __construct($apikey, $sharedSecret, $username = null, $password = null)
    {
        $this->setApiKey($apikey)
             ->setSharedSecret($sharedSecret)
             ->setUserName($username)
             ->setPassword($password);

        $this->_httpclient = new Zend_Http_Client();
    }

    /**
     * Uploads the specified Slide show the the server
     *
     * @param Zend_Service_SlideShare_SlideShow $ss The slide show object representing the slide show to upload
     * @param boolean $make_src_public Determines if the the slide show's source file is public or not upon upload
     * @return Zend_Service_SlideShare_SlideShow The passed Slide show object, with the new assigned ID provided
     */
    public function uploadSlideShow(Zend_Service_SlideShare_SlideShow $ss, $make_src_public = true)
    {

        $timestamp = time();

        $params = array('api_key' => $this->getApiKey(),
                        'ts' => $timestamp,
                        'hash' => sha1($this->getSharedSecret().$timestamp),
                        'username' => $this->getUserName(),
                        'password' => $this->getPassword(),
                        'slideshow_title' => $ss->getTitle());

        $description = $ss->getDescription();
        $tags = $ss->getTags();

        $filename = $ss->getFilename();

        if(!file_exists($filename) || !is_readable($filename)) {
            throw new Zend_Service_SlideShare_Exception("Specified Slideshow for upload not found or unreadable");
        }

        if(!empty($description)) {
            $params['slideshow_description'] = $description;
        } else {
            $params['slideshow_description'] = "";
        }

        if(!empty($tags)) {
            $tmp = array();
            foreach($tags as $tag) {
                $tmp[] = "\"$tag\"";
            }
            $params['slideshow_tags'] = implode(' ', $tmp);
        } else {
            $params['slideshow_tags'] = "";
        }


        $client = $this->getHttpClient();
        $client->setUri(self::SERVICE_UPLOAD_URI);
        $client->setParameterPost($params);
        $client->setFileUpload($filename, "slideshow_srcfile");

        try {
            $response = $client->request('POST');
        } catch(Zend_Http_Client_Exception $e) {
            throw new Zend_Service_SlideShare_Exception("Service Request Failed: {$e->getMessage()}");
        }

        $sxe = simplexml_load_string($response->getBody());

        if($sxe->getName() == "SlideShareServiceError") {
            $message = (string)$sxe->Message[0];
            list($code, $error_str) = explode(':', $message);
            throw new Zend_Service_SlideShare_Exception(trim($error_str), $code);
        }

        if(!$sxe->getName() == "SlideShowUploaded") {
            throw new Zend_Service_SlideShare_Exception("Unknown XML Respons Received");
        }

        $ss->setId((int)(string)$sxe->SlideShowID);

        return $ss;
    }

    /**
     * Retrieves a slide show's information based on slide show ID
     *
     * @param int $ss_id The slide show ID
     * @return Zend_Service_SlideShare_SlideShow the Slideshow object
     */
    public function getSlideShow($ss_id)
    {
        $timestamp = time();

        $params = array('api_key' => $this->getApiKey(),
                        'ts' => $timestamp,
                        'hash' => sha1($this->getSharedSecret().$timestamp),
                        'slideshow_id' => $ss_id);

        $cache = $this->getCacheObject();

        $cache_key = md5("__zendslideshare_cache_$ss_id");

        if(!$retval = $cache->load($cache_key)) {
            $client = $this->getHttpClient();

            $client->setUri(self::SERVICE_GET_SHOW_URI);
            $client->setParameterPost($params);

            try {
                $response = $client->request('POST');
            } catch(Zend_Http_Client_Exception $e) {
                throw new Zend_Service_SlideShare_Exception("Service Request Failed: {$e->getMessage()}");
            }

            $sxe = simplexml_load_string($response->getBody());

            if($sxe->getName() == "SlideShareServiceError") {
                $message = (string)$sxe->Message[0];
                list($code, $error_str) = explode(':', $message);
                throw new Zend_Service_SlideShare_Exception(trim($error_str), $code);
            }

            if(!$sxe->getName() == 'Slideshows') {
                throw new Zend_Service_SlideShare_Exception('Unknown XML Repsonse Received');
            }

            $retval = $this->_slideShowNodeToObject(clone $sxe->Slideshow[0]);

            $cache->save($retval, $cache_key);
        }

        return $retval;
    }

    /**
     * Retrieves an array of slide shows for a given username
     *
     * @param string $username The username to retrieve slide shows from
     * @param int $offset The offset of the list to start retrieving from
     * @param int $limit The maximum number of slide shows to retrieve
     * @return array An array of Zend_Service_SlideShare_SlideShow objects
     */
    public function getSlideShowsByUsername($username, $offset = null, $limit = null)
    {
        return $this->_getSlideShowsByType('username_for', $username, $offset, $limit);
    }

    /**
     * Retrieves an array of slide shows based on tag
     *
     * @param string $tag The tag to retrieve slide shows with
     * @param int $offset The offset of the list to start retrieving from
     * @param int $limit The maximum number of slide shows to retrieve
     * @return array An array of Zend_Service_SlideShare_SlideShow objects
     */
    public function getSlideShowsByTag($tag, $offset = null, $limit = null)
    {

        if(is_array($tag)) {
            $tmp = array();
            foreach($tag as $t) {
                $tmp[] = "\"$t\"";
            }

            $tag = implode(" ", $tmp);
        }

        return $this->_getSlideShowsByType('tag', $tag, $offset, $limit);
    }

    /**
     * Retrieves an array of slide shows based on group name
     *
     * @param string $group The group name to retrieve slide shows for
     * @param int $offset The offset of the list to start retrieving from
     * @param int $limit The maximum number of slide shows to retrieve
     * @return array An array of Zend_Service_SlideShare_SlideShow objects
     */
    public function getSlideShowsByGroup($group, $offset = null, $limit = null)
    {
        return $this->_getSlideShowsByType('group_name', $group, $offset, $limit);
    }

    /**
     * Retrieves Zend_Service_SlideShare_SlideShow object arrays based on the type of
     * list desired
     *
     * @param string $key The type of slide show object to retrieve
     * @param string $value The specific search query for the slide show type to look up
     * @param int $offset The offset of the list to start retrieving from
     * @param int $limit The maximum number of slide shows to retrieve
     * @return array An array of Zend_Service_SlideShare_SlideShow objects
     */
    protected function _getSlideShowsByType($key, $value, $offset = null, $limit = null)
    {

        $key = strtolower($key);

        switch($key) {
            case 'username_for':
                $responseTag = 'User';
                $queryUri = self::SERVICE_GET_SHOW_BY_USER_URI;
                break;
            case 'group_name':
                $responseTag = 'Group';
                $queryUri = self::SERVICE_GET_SHOW_BY_GROUP_URI;
                break;
            case 'tag':
                $responseTag = 'Tag';
                $queryUri = self::SERVICE_GET_SHOW_BY_TAG_URI;
                break;
            default:
                throw new Zend_Service_SlideShare_Exception("Invalid SlideShare Query");
        }

        $timestamp = time();

        $params = array('api_key' => $this->getApiKey(),
                        'ts' => $timestamp,
                        'hash' => sha1($this->getSharedSecret().$timestamp),
                        $key => $value);

        if(!is_null($offset)) {
            $params['offset'] = (int)$offset;
        }

        if(!is_null($limit)) {
            $params['limit'] = (int)$limit;
        }

        $cache = $this->getCacheObject();

        $cache_key = md5($key.$value.$offset.$limit);

        if(!$retval = $cache->load($cache_key)) {

            $client = $this->getHttpClient();

            $client->setUri($queryUri);
            $client->setParameterPost($params);

            try {
                $response = $client->request('POST');
            } catch(Zend_Http_Client_Exception $e) {
                throw new Zend_Service_SlideShare_Exception("Service Request Failed: {$e->getMessage()}");
            }

            $sxe = simplexml_load_string($response->getBody());

            if($sxe->getName() == "SlideShareServiceError") {
                $message = (string)$sxe->Message[0];
                list($code, $error_str) = explode(':', $message);
                throw new Zend_Service_SlideShare_Exception(trim($error_str), $code);
            }

            if(!$sxe->getName() == $responseTag) {
                throw new Zend_Service_SlideShare_Exception('Unknown or Invalid XML Repsonse Received');
            }

            $retval = array();

            foreach($sxe->children() as $node) {
                if($node->getName() == 'Slideshow') {
                    $retval[] = $this->_slideShowNodeToObject($node);
                }
            }

            $cache->save($retval, $cache_key);
        }

        return $retval;
    }

    /**
     * Converts a SimpleXMLElement object representing a response from the service
     * into a Zend_Service_SlideShare_SlideShow object
     *
     * @param SimpleXMLElement $node The input XML from the slideshare.net service
     * @return Zend_Service_SlideShare_SlideShow The resulting object
     */
    protected function _slideShowNodeToObject(SimpleXMLElement $node)
    {

        if($node->getName() == 'Slideshow') {

            $ss = new Zend_Service_SlideShare_SlideShow();

            $ss->setId((string)$node->ID);
            $ss->setDescription((string)$node->Description);
            $ss->setEmbedCode((string)$node->EmbedCode);
            $ss->setNumViews((string)$node->Views);
            $ss->setPermaLink((string)$node->Permalink);
            $ss->setStatus((string)$node->Status);
            $ss->setStatusDescription((string)$node->StatusDescription);

            foreach(explode(",", (string)$node->Tags) as $tag) {

                if(!in_array($tag, $ss->getTags())) {
                    $ss->addTag($tag);
                }
            }

            $ss->setThumbnailUrl((string)$node->Thumbnail);
            $ss->setTitle((string)$node->Title);
            $ss->setLocation((string)$node->Location);
            $ss->setTranscript((string)$node->Transcript);

            return $ss;

        }

        throw new Zend_Service_SlideShare_Exception("Was not provided the expected XML Node for processing");
    }
}PKpG[Q�J�VVService/Abstract.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Abstract.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Service_Abstract
{
    /**
     * HTTP Client used to query all web services
     *
     * @var Zend_Http_Client
     */
    protected static $_httpClient = null;


    /**
     * Sets the HTTP client object to use for retrieving the feeds.  If none
     * is set, the default Zend_Http_Client will be used.
     *
     * @param Zend_Http_Client $httpClient
     */
    final public static function setHttpClient(Zend_Http_Client $httpClient)
    {
        self::$_httpClient = $httpClient;
    }


    /**
     * Gets the HTTP client object.
     *
     * @return Zend_Http_Client
     */
    final public static function getHttpClient()
    {
        if (!self::$_httpClient instanceof Zend_Http_Client) {
            self::$_httpClient = new Zend_Http_Client();
        }

        return self::$_httpClient;
    }
}

PKpG[�&�l�F�FService/Delicious.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Delicious.php 9638 2008-06-08 15:58:11Z ghacek $
 */


/**
 * @see Zend_Rest_Client
 */
require_once 'Zend/Rest/Client.php';

/**
 * @see Zend_Json_Decoder
 */
require_once 'Zend/Json/Decoder.php';

/**
 * @see Zend_Service_Delicious_SimplePost
 */
require_once 'Zend/Service/Delicious/SimplePost.php';

/**
 * @see Zend_Service_Delicious_Post
 */
require_once 'Zend/Service/Delicious/Post.php';

/**
 * @see Zend_Service_Delicious_PostList
 */
require_once 'Zend/Service/Delicious/PostList.php';


/**
 * Zend_Service_Delicious is a concrete implementation of the del.icio.us web service
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Delicious
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Delicious
{
    const API_URI = 'https://api.del.icio.us';

    const PATH_UPDATE        = '/v1/posts/update';
    const PATH_TAGS          = '/v1/tags/get';
    const PATH_TAG_RENAME    = '/v1/tags/rename';
    const PATH_BUNDLES       = '/v1/tags/bundles/all';
    const PATH_BUNDLE_DELETE = '/v1/tags/bundles/delete';
    const PATH_BUNDLE_ADD    = '/v1/tags/bundles/set';
    const PATH_DATES         = '/v1/posts/dates';
    const PATH_POST_DELETE   = '/v1/posts/delete';
    const PATH_POSTS_GET     = '/v1/posts/get';
    const PATH_POSTS_ALL     = '/v1/posts/all';
    const PATH_POSTS_ADD     = '/v1/posts/add';
    const PATH_POSTS_RECENT  = '/v1/posts/recent';

    const JSON_URI     = 'http://del.icio.us';
    const JSON_POSTS   = '/feeds/json/%s/%s';
    const JSON_TAGS    = '/feeds/json/tags/%s';
    const JSON_NETWORK = '/feeds/json/network/%s';
    const JSON_FANS    = '/feeds/json/fans/%s';
    const JSON_URL     = '/feeds/json/url/data';

    /**
     * Zend_Service_Rest instance
     *
     * @var Zend_Service_Rest
     */
    protected $_rest;

    /**
     * Username
     *
     * @var string
     */
    protected $_authUname;

    /**
     * Password
     *
     * @var string
     */
    protected $_authPass;

    /**
     * Microtime of last request
     *
     * @var float
     */
    protected static $_lastRequestTime = 0;

    /**
     * Constructs a new del.icio.us Web Services Client
     *
     * @param  string $uname Client username
     * @param  string $pass  Client password
     * @return void
     */
    public function __construct($uname = null, $pass = null)
    {
        $this->_rest = new Zend_Rest_Client();
        $this->_rest->getHttpClient()->setConfig(array('ssltransport' => 'ssl'));
        $this->setAuth($uname, $pass);
    }

    /**
     * Set client username and password
     *
     * @param  string $uname Client user name
     * @param  string $pass  Client password
     * @return Zend_Service_Delicious Provides a fluent interface
     */
    public function setAuth($uname, $pass)
    {
        $this->_authUname = $uname;
        $this->_authPass  = $pass;

        return $this;
    }

    /**
     * Get time of the last update
     *
     * @throws Zend_Service_Delicious_Exception
     * @return Zend_Date
     */
    public function getLastUpdate()
    {
        $response = $this->makeRequest(self::PATH_UPDATE);

        $rootNode = $response->documentElement;
        if ($rootNode && $rootNode->nodeName == 'update') {
            /**
             * @todo replace strtotime() with Zend_Date equivalent
             */
            return new Zend_Date(strtotime($rootNode->getAttribute('time')));
        } else {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception('del.icio.us web service has returned something odd!');
        }
    }

    /**
     * Get all tags, returning an array with tags as keys and number of corresponding posts as values
     *
     * @return array list of tags
     */
    public function getTags()
    {
        $response = $this->makeRequest(self::PATH_TAGS);

        return self::_xmlResponseToArray($response, 'tags', 'tag', 'tag', 'count');
    }

    /**
     * Rename a tag
     *
     * @param  string $old Old tag name
     * @param  string $new New tag name
     * @return Zend_Service_Delicious Provides a fluent interface
     */
    public function renameTag($old, $new)
    {
        $response = $this->makeRequest(self::PATH_TAG_RENAME, array('old' => $old, 'new' => $new));

        self::_evalXmlResult($response);

        return $this;
    }

    /**
     * Get all bundles, returning an array with bundles as keys and array of tags as values
     *
     * @return array list of bundles
     */
    public function getBundles()
    {
        $response = $this->makeRequest(self::PATH_BUNDLES);

        $bundles = self::_xmlResponseToArray($response, 'bundles', 'bundle', 'name', 'tags');
        foreach ($bundles as &$tags) {
            $tags = explode(' ', $tags);
        }
        return $bundles;
    }

    /**
     * Adds a new bundle
     *
     * @param  string $bundle Name of new bundle
     * @param  array  $tags   Array of tags
     * @return Zend_Service_Delicious Provides a fluent interface
     */
    public function addBundle($bundle, array $tags)
    {
        $tags = implode(' ', (array) $tags);
        $response = $this->makeRequest(self::PATH_BUNDLE_ADD, array('bundle' => $bundle, 'tags' => $tags));

        self::_evalXmlResult($response);

        return $this;
    }

    /**
     * Delete a bundle
     *
     * @param  string $bundle Name of bundle to be deleted
     * @return Zend_Service_Delicious Provides a fluent interface
     */
    public function deleteBundle($bundle)
    {
        $response = $this->makeRequest(self::PATH_BUNDLE_DELETE, array('bundle' => $bundle));

        self::_evalXmlResult($response);

        return $this;
    }

    /**
     * Delete a post
     *
     * @param  string $url URL of post to be deleted
     * @return Zend_Service_Delicious Provides a fluent interface
     */
    public function deletePost($url)
    {
        $response = $this->makeRequest(self::PATH_POST_DELETE, array('url' => $url));

        self::_evalXmlResult($response);

        return $this;
    }

    /**
     * Get number of posts by date
     *
     * Returns array where keys are dates and values are numbers of posts
     *
     * @param  string $tag Optional filtering by tag
     * @return array list of dates
     */
    public function getDates($tag = null)
    {
        $parms = array();
        if ($tag) {
            $parms['tag'] = $tag;
        }

        $response = $this->makeRequest(self::PATH_DATES, $parms);

        return self::_xmlResponseToArray($response, 'dates', 'date', 'date', 'count');
    }

    /**
     * Get posts matching the arguments
     *
     * If no date or url is given, most recent date will be used
     *
     * @param  string    $tag Optional filtering by tag
     * @param  Zend_Date $dt  Optional filtering by date
     * @param  string    $url Optional filtering by url
     * @throws Zend_Service_Delicious_Exception
     * @return Zend_Service_Delicious_PostList
     */
    public function getPosts($tag = null, Zend_Date $dt = null, $url = null)
    {
        $parms = array();
        if ($tag) {
            $parms['tag'] = $tag;
        }
        if ($url) {
            $parms['url'] = $url;
        }
        if ($dt) {
            $parms['dt'] = $dt->get('Y-m-d\TH:i:s\Z');
        }

        $response = $this->makeRequest(self::PATH_POSTS_GET, $parms);

        return $this->_parseXmlPostList($response);
    }

    /**
     * Get all posts
     *
     * @param  string $tag Optional filtering by tag
     * @return Zend_Service_Delicious_PostList
     */
    public function getAllPosts($tag = null)
    {
        $parms = array();
        if ($tag) {
            $parms['tag'] = $tag;
        }

        $response = $this->makeRequest(self::PATH_POSTS_ALL, $parms);

        return $this->_parseXmlPostList($response);
    }

    /**
     * Get recent posts
     *
     * @param  string $tag   Optional filtering by tag
     * @param  string $count Maximum number of posts to be returned (default 15)
     * @return Zend_Service_Delicious_PostList
     */
    public function getRecentPosts($tag = null, $count = 15)
    {
        $parms = array();
        if ($tag) {
            $parms['tag'] = $tag;
        }
        if ($count) {
            $parms['count'] = $count;
        }

        $response = $this->makeRequest(self::PATH_POSTS_RECENT, $parms);

        return $this->_parseXmlPostList($response);
    }

    /**
     * Create new post
     *
     * @return Zend_Service_Delicious_Post
     */
    public function createNewPost($title, $url)
    {
        return new Zend_Service_Delicious_Post($this, array('title' => $title, 'url' => $url));
    }

    /**
     * Get posts of a user
     *
     * @param  string $user  Owner of the posts
     * @param  int    $count Number of posts (default 15, max. 100)
     * @param  string $tag   Optional filtering by tag
     * @return Zend_Service_Delicious_PostList
     */
    public function getUserPosts($user, $count = null, $tag = null)
    {
        $parms = array();
        if ($count) {
            $parms['count'] = $count;
        }

        $path = sprintf(self::JSON_POSTS, $user, $tag);
        $res = $this->makeRequest($path, $parms, 'json');

        return new Zend_Service_Delicious_PostList($this, $res);
    }

    /**
     * Get tags of a user
     *
     * Returned array has tags as keys and number of posts as values
     *
     * @param  string $user    Owner of the posts
     * @param  int    $atleast Include only tags for which there are at least ### number of posts
     * @param  int    $count   Number of tags to get (default all)
     * @param  string $sort    Order of returned tags ('alpha' || 'count')
     * @return array
     */
    public function getUserTags($user, $atleast = null, $count = null, $sort = 'alpha')
    {
        $parms = array();
        if ($atleast) {
            $parms['atleast'] = $atleast;
        }
        if ($count) {
            $parms['count'] = $count;
        }
        if ($sort) {
            $parms['sort'] = $sort;
        }

        $path = sprintf(self::JSON_TAGS, $user);

        return $this->makeRequest($path, $parms, 'json');
    }

    /**
     * Get network of a user
     *
     * @param  string $user Owner of the network
     * @return array
     */
    public function getUserNetwork($user)
    {
        $path = sprintf(self::JSON_NETWORK, $user);
        return $this->makeRequest($path, array(), 'json');
    }

    /**
     * Get fans of a user
     *
     * @param  string $user Owner of the fans
     * @return array
     */
    public function getUserFans($user)
    {
        $path = sprintf(self::JSON_FANS, $user);
        return $this->makeRequest($path, array(), 'json');
    }
    
    /**
     * Get details on a particular bookmarked URL
     * 
     * Returned array contains four elements:
     *  - hash - md5 hash of URL
     *  - top_tags - array of tags and their respective usage counts
     *  - url - URL for which details were returned
     *  - total_posts - number of users that have bookmarked URL
     *
     * If URL hasen't been bookmarked null is returned.
     *
     * @param  string $url URL for which to get details
     * @return array 
     */
    public function getUrlDetails($url) 
    {
        $parms = array('hash' => md5($url));
        
        $res = $this->makeRequest(self::JSON_URL, $parms, 'json');
        
        if(isset($res[0])) {
            return $res[0];
        } else {
            return null;
        }
    }

    /**
     * Handles all GET requests to a web service
     *
     * @param   string $path  Path
     * @param   array  $parms Array of GET parameters
     * @param   string $type  Type of a request ("xml"|"json")
     * @return  mixed  decoded response from web service
     * @throws  Zend_Service_Delicious_Exception
     */
    public function makeRequest($path, array $parms = array(), $type = 'xml')
    {
        // if previous request was made less then 1 sec ago
        // wait until we can make a new request
        $timeDiff = microtime(true) - self::$_lastRequestTime;
        if ($timeDiff < 1) {
            usleep((1 - $timeDiff) * 1000000);
        }

        $this->_rest->getHttpClient()->setAuth($this->_authUname, $this->_authPass);

        switch ($type) {
            case 'xml':
                $this->_rest->setUri(self::API_URI);
                break;
            case 'json':
                $parms['raw'] = true;
                $this->_rest->setUri(self::JSON_URI);
                break;
            default:
                /**
                 * @see Zend_Service_Delicious_Exception
                 */
                require_once 'Zend/Service/Delicious/Exception.php';
                throw new Zend_Service_Delicious_Exception('Unknown request type');
        }

        self::$_lastRequestTime = microtime(true);
        $response = $this->_rest->restGet($path, $parms);

        if (!$response->isSuccessful()) {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception("Http client reported an error: '{$response->getMessage()}'");
        }

        $responseBody = $response->getBody();

        switch ($type) {
            case 'xml':
                $dom = new DOMDocument() ;

                if (!@$dom->loadXML($responseBody)) {
                    /**
                     * @see Zend_Service_Delicious_Exception
                     */
                    require_once 'Zend/Service/Delicious/Exception.php';
                    throw new Zend_Service_Delicious_Exception('XML Error');
                }

                return $dom;
            case 'json':
                return Zend_Json_Decoder::decode($responseBody);
        }
    }

    /**
     * Transform XML string to array
     *
     * @param   DOMDocument $response
     * @param   string      $root     Name of root tag
     * @param   string      $child    Name of children tags
     * @param   string      $attKey   Attribute of child tag to be used as a key
     * @param   string      $attValue Attribute of child tag to be used as a value
     * @return  array
     * @throws  Zend_Service_Delicious_Exception
     */
    private static function _xmlResponseToArray(DOMDocument $response, $root, $child, $attKey, $attValue)
    {
        $rootNode = $response->documentElement;
        $arrOut = array();

        if ($rootNode->nodeName == $root) {
            $childNodes = $rootNode->childNodes;

            for ($i = 0; $i < $childNodes->length; $i++) {
                $currentNode = $childNodes->item($i);
                if ($currentNode->nodeName == $child) {
                    $arrOut[$currentNode->getAttribute($attKey)] = $currentNode->getAttribute($attValue);
                }
            }
        } else {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception('del.icio.us web service has returned something odd!');
        }

        return $arrOut;
    }

    /**
     * Constructs Zend_Service_Delicious_PostList from XML response
     *
     * @param   DOMDocument $response
     * @return  Zend_Service_Delicious_PostList
     * @throws  Zend_Service_Delicious_Exception
     */
    private function _parseXmlPostList(DOMDocument $response)
    {
        $rootNode = $response->documentElement;

        if ($rootNode->nodeName == 'posts') {
            return new Zend_Service_Delicious_PostList($this, $rootNode->childNodes);
        } else {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception('del.icio.us web service has returned something odd!');
        }
    }

    /**
     * Evaluates XML response
     *
     * @param   DOMDocument $response
     * @return  void
     * @throws  Zend_Service_Delicious_Exception
     */
    private static function _evalXmlResult(DOMDocument $response)
    {
        $rootNode = $response->documentElement;

        if ($rootNode && $rootNode->nodeName == 'result') {

            if ($rootNode->hasAttribute('code')) {
                $strResponse = $rootNode->getAttribute('code');
            } else {
                $strResponse = $rootNode->nodeValue;
            }

            if ($strResponse != 'done' && $strResponse != 'ok') {
                /**
                 * @see Zend_Service_Delicious_Exception
                 */
                require_once 'Zend/Service/Delicious/Exception.php';
                throw new Zend_Service_Delicious_Exception("del.icio.us web service: '{$strResponse}'");
            }
        } else {
            /**
             * @see Zend_Service_Delicious_Exception
             */
            require_once 'Zend/Service/Delicious/Exception.php';
            throw new Zend_Service_Delicious_Exception('del.icio.us web service has returned something odd!');
        }
    }
}
PKpG[
b��TTService/Flickr.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Flickr.php 8733 2008-03-10 15:56:48Z jokke $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Flickr
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Flickr
{
    /**
     * Base URI for the REST client
     */
    const URI_BASE = 'http://www.flickr.com';

    /**
     * Your Flickr API key
     *
     * @var string
     */
    public $apiKey;

    /**
     * Reference to REST client object
     *
     * @var Zend_Rest_Client
     */
    protected $_restClient = null;


    /**
     * Performs object initializations
     *
     *  # Sets up character encoding
     *  # Saves the API key
     *
     * @param  string $apiKey Your Flickr API key
     * @return void
     */
    public function __construct($apiKey)
    {
        iconv_set_encoding('output_encoding', 'UTF-8');
        iconv_set_encoding('input_encoding', 'UTF-8');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        $this->apiKey = (string) $apiKey;
    }


    /**
     * Find Flickr photos by tag.
     *
     * Query options include:
     *
     *  # per_page:        how many results to return per query
     *  # page:            the starting page offset.  first result will be (page - 1) * per_page + 1
     *  # tag_mode:        Either 'any' for an OR combination of tags,
     *                     or 'all' for an AND combination. Default is 'any'.
     *  # min_upload_date: Minimum upload date to search on.  Date should be a unix timestamp.
     *  # max_upload_date: Maximum upload date to search on.  Date should be a unix timestamp.
     *  # min_taken_date:  Minimum upload date to search on.  Date should be a MySQL datetime.
     *  # max_taken_date:  Maximum upload date to search on.  Date should be a MySQL datetime.
     *
     * @param  string|array $query   A single tag or an array of tags.
     * @param  array        $options Additional parameters to refine your query.
     * @return Zend_Service_Flickr_ResultSet
     * @throws Zend_Service_Exception
     */
    public function tagSearch($query, array $options = array())
    {
        static $method = 'flickr.photos.search';
        static $defaultOptions = array('per_page' => 10,
                                       'page'     => 1,
                                       'tag_mode' => 'or',
                                       'extras'   => 'license, date_upload, date_taken, owner_name, icon_server');

        $options['tags'] = is_array($query) ? implode(',', $query) : $query;

        $options = $this->_prepareOptions($method, $options, $defaultOptions);

        $this->_validateTagSearch($options);

        // now search for photos
        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Flickr_ResultSet
         */
        require_once 'Zend/Service/Flickr/ResultSet.php';
        return new Zend_Service_Flickr_ResultSet($dom, $this);
    }


    /**
     * Finds photos by a user's username or email.
     *
     * Additional query options include:
     *
     *  # per_page:        how many results to return per query
     *  # page:            the starting page offset.  first result will be (page - 1) * per_page + 1
     *  # min_upload_date: Minimum upload date to search on.  Date should be a unix timestamp.
     *  # max_upload_date: Maximum upload date to search on.  Date should be a unix timestamp.
     *  # min_taken_date:  Minimum upload date to search on.  Date should be a MySQL datetime.
     *  # max_taken_date:  Maximum upload date to search on.  Date should be a MySQL datetime.
     *
     * @param  string $query   username or email
     * @param  array  $options Additional parameters to refine your query.
     * @return Zend_Service_Flickr_ResultSet
     * @throws Zend_Service_Exception
     */
    public function userSearch($query, array $options = null)
    {
        static $method = 'flickr.people.getPublicPhotos';
        static $defaultOptions = array('per_page' => 10,
                                       'page'     => 1,
                                       'extras'   => 'license, date_upload, date_taken, owner_name, icon_server');


        // can't access by username, must get ID first
        if (strchr($query, '@')) {
            // optimistically hope this is an email
            $options['user_id'] = $this->getIdByEmail($query);
        } else {
            // we can safely ignore this exception here
            $options['user_id'] = $this->getIdByUsername($query);
        }

        $options = $this->_prepareOptions($method, $options, $defaultOptions);
        $this->_validateUserSearch($options);

        // now search for photos
        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Flickr_ResultSet
         */
        require_once 'Zend/Service/Flickr/ResultSet.php';
        return new Zend_Service_Flickr_ResultSet($dom, $this);
    }
    
    /**
     * Finds photos in a group's pool.
     *
     * @param  string $query   group id
     * @param  array  $options Additional parameters to refine your query.
     * @return Zend_Service_Flickr_ResultSet
     * @throws Zend_Service_Exception
     */
    public function groupPoolGetPhotos($query, array $options = array())
    {
        static $method = 'flickr.groups.pools.getPhotos';
        static $defaultOptions = array('per_page' => 10,
                                       'page'     => 1,
                                       'extras'   => 'license, date_upload, date_taken, owner_name, icon_server');

        if (empty($query) || !is_string($query)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('You must supply a group id');
        }

        $options['group_id'] = $query;

        $options = $this->_prepareOptions($method, $options, $defaultOptions);

        $this->_validateGroupPoolGetPhotos($options);

        // now search for photos
        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        if ($response->isError()) {
            /**
            * @see Zend_Service_Exception
            */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
        * @see Zend_Service_Flickr_ResultSet
        */
        require_once 'Zend/Service/Flickr/ResultSet.php';
        return new Zend_Service_Flickr_ResultSet($dom, $this);
    }



    /**
     * Utility function to find Flickr User IDs for usernames.
     *
     * (You can only find a user's photo with their NSID.)
     *
     * @param  string $username the username
     * @return string the NSID (userid)
     * @throws Zend_Service_Exception
     */
    public function getIdByUsername($username)
    {
        static $method = 'flickr.people.findByUsername';

        $options = array('api_key' => $this->apiKey, 'method' => $method, 'username' => (string) $username);

        if (empty($username)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('You must supply a username');
        }

        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        self::_checkErrors($dom);
        $xpath = new DOMXPath($dom);
        return (string) $xpath->query('//user')->item(0)->getAttribute('id');
    }


    /**
     * Utility function to find Flickr User IDs for emails.
     *
     * (You can only find a user's photo with their NSID.)
     *
     * @param  string $email the email
     * @return string the NSID (userid)
     * @throws Zend_Service_Exception
     */
    public function getIdByEmail($email)
    {
        static $method = 'flickr.people.findByEmail';

        if (empty($email)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('You must supply an e-mail address');
        }

        $options = array('api_key' => $this->apiKey, 'method' => $method, 'find_email' => (string) $email);

        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        self::_checkErrors($dom);
        $xpath = new DOMXPath($dom);
        return (string) $xpath->query('//user')->item(0)->getAttribute('id');
    }


    /**
     * Returns Flickr photo details by for the given photo ID
     *
     * @param  string $id the NSID
     * @return array of Zend_Service_Flickr_Image, details for the specified image
     * @throws Zend_Service_Exception
     */
    public function getImageDetails($id)
    {
        static $method = 'flickr.photos.getSizes';

        if (empty($id)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('You must supply a photo ID');
        }

        $options = array('api_key' => $this->apiKey, 'method' => $method, 'photo_id' => $id);

        $restClient = $this->getRestClient();
        $restClient->getHttpClient()->resetParameters();
        $response = $restClient->restGet('/services/rest/', $options);

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        $xpath = new DOMXPath($dom);
        self::_checkErrors($dom);
        $retval = array();
        /**
         * @see Zend_Service_Flickr_Image
         */
        require_once 'Zend/Service/Flickr/Image.php';
        foreach ($xpath->query('//size') as $size) {
            $label = (string) $size->getAttribute('label');
            $retval[$label] = new Zend_Service_Flickr_Image($size);
        }

        return $retval;
    }


    /**
     * Returns a reference to the REST client, instantiating it if necessary
     *
     * @return Zend_Rest_Client
     */
    public function getRestClient()
    {
        if (null === $this->_restClient) {
            /**
             * @see Zend_Rest_Client
             */
            require_once 'Zend/Rest/Client.php';
            $this->_restClient = new Zend_Rest_Client(self::URI_BASE);
        }

        return $this->_restClient;
    }


    /**
     * Validate User Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateUserSearch(array $options)
    {
        $validOptions = array('api_key', 'method', 'user_id', 'per_page', 'page', 'extras', 'min_upload_date',
                              'min_taken_date', 'max_upload_date', 'max_taken_date');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 500, true);
        if (!$between->isValid($options['per_page'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['per_page'] . ' is not valid for the "per_page" option');
        }

        /**
         * @see Zend_Validate_Int
         */
        require_once 'Zend/Validate/Int.php';
        $int = new Zend_Validate_Int();
        if (!$int->isValid($options['page'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['page'] . ' is not valid for the "page" option');
        }

        // validate extras, which are delivered in csv format
        if ($options['extras']) {
            $extras = explode(',', $options['extras']);
            $validExtras = array('license', 'date_upload', 'date_taken', 'owner_name', 'icon_server');
            foreach($extras as $extra) {
                /**
                 * @todo The following does not do anything [yet], so it is commented out.
                 */
                //in_array(trim($extra), $validExtras);
            }
        }
    }


    /**
     * Validate Tag Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateTagSearch(array $options)
    {
        $validOptions = array('method', 'api_key', 'user_id', 'tags', 'tag_mode', 'text', 'min_upload_date',
                              'max_upload_date', 'min_taken_date', 'max_taken_date', 'license', 'sort',
                              'privacy_filter', 'bbox', 'accuracy', 'machine_tags', 'machine_tag_mode', 'group_id',
                              'extras', 'per_page', 'page');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 500, true);
        if (!$between->isValid($options['per_page'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['per_page'] . ' is not valid for the "per_page" option');
        }

        /**
         * @see Zend_Validate_Int
         */
        require_once 'Zend/Validate/Int.php';
        $int = new Zend_Validate_Int();
        if (!$int->isValid($options['page'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['page'] . ' is not valid for the "page" option');
        }

        // validate extras, which are delivered in csv format
        if ($options['extras']) {
            $extras = explode(',', $options['extras']);
            $validExtras = array('license', 'date_upload', 'date_taken', 'owner_name', 'icon_server');
            foreach($extras as $extra) {
                /**
                 * @todo The following does not do anything [yet], so it is commented out.
                 */
                //in_array(trim($extra), $validExtras);
            }
        }

    }
    
    
    /**
    * Validate Group Search Options
    *
    * @param  array $options
    * @throws Zend_Service_Exception
    * @return void
    */
    protected function _validateGroupPoolGetPhotos(array $options)
    {
        $validOptions = array('api_key', 'tags', 'method', 'group_id', 'per_page', 'page', 'extras', 'user_id');

        $this->_compareOptions($options, $validOptions);

        /**
        * @see Zend_Validate_Between
        */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 500, true);
        if (!$between->isValid($options['per_page'])) {
            /**
            * @see Zend_Service_Exception
            */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['per_page'] . ' is not valid for the "per_page" option');
        }

        /**
        * @see Zend_Validate_Int
        */
        require_once 'Zend/Validate/Int.php';
        $int = new Zend_Validate_Int();
        
        if (!$int->isValid($options['page'])) {
            /**
            * @see Zend_Service_Exception
            */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($options['page'] . ' is not valid for the "page" option');
        }

        // validate extras, which are delivered in csv format
        if (isset($options['extras'])) {
            $extras = explode(',', $options['extras']);
            $validExtras = array('license', 'date_upload', 'date_taken', 'owner_name', 'icon_server');
            foreach($extras as $extra) {
                /**
                * @todo The following does not do anything [yet], so it is commented out.
                */
                //in_array(trim($extra), $validExtras);
            }
        }
    }


    /**
     * Throws an exception if and only if the response status indicates a failure
     *
     * @param  DOMDocument $dom
     * @return void
     * @throws Zend_Service_Exception
     */
    protected static function _checkErrors(DOMDocument $dom)
    {
        if ($dom->documentElement->getAttribute('stat') === 'fail') {
            $xpath = new DOMXPath($dom);
            $err = $xpath->query('//err')->item(0);
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Search failed due to error: ' . $err->getAttribute('msg')
                                           . ' (error #' . $err->getAttribute('code') . ')');
        }
    }


    /**
     * Prepare options for the request
     *
     * @param  string $method         Flickr Method to call
     * @param  array  $options        User Options
     * @param  array  $defaultOptions Default Options
     * @return array Merged array of user and default/required options
     */
    protected function _prepareOptions($method, array $options, array $defaultOptions)
    {
        $options['method']  = (string) $method;
        $options['api_key'] = $this->apiKey;

        return array_merge($defaultOptions, $options);
    }


    /**
     * Throws an exception if and only if any user options are invalid
     *
     * @param  array $options      User options
     * @param  array $validOptions Valid options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _compareOptions(array $options, array $validOptions)
    {
        $difference = array_diff(array_keys($options), $validOptions);
        if ($difference) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('The following parameters are invalid: ' . implode(',', $difference));
        }
    }
}

PKpG[���ddService/StrikeIron.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: StrikeIron.php 8539 2008-03-04 20:29:55Z darby $
 */


/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';


/**
 * This class allows StrikeIron authentication credentials to be specified
 * in one place and provides a factory for returning instances of different
 * StrikeIron service classes.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage StrikeIron
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_StrikeIron
{
    /**
     * Options to pass to Zend_Service_StrikeIron_Base constructor
     * @param array
     */
    protected $_options;

    /**
     * Class constructor
     *
     * @param array  $options  Options to pass to Zend_Service_StrikeIron_Base constructor
     */
    public function __construct($options = array())
    {
        $this->_options = $options;
    }

    /**
     * Factory method to return a preconfigured Zend_Service_StrikeIron_*
     * instance.
     *
     * @param  null|string  $options  Service options
     * @return object       Zend_Service_StrikeIron_* instance
     * @throws Zend_Service_StrikeIron_Exception
     */
    public function getService($options = array())
    {
        $class = isset($options['class']) ? $options['class'] : 'Base';
        unset($options['class']);

        if (strpos($class, '_') === false) {
            $class = "Zend_Service_StrikeIron_{$class}";
        }

        try {
            @Zend_Loader::loadClass($class);
            if (!class_exists($class, false)) {
                throw new Exception('Class file not found');
            }
        } catch (Exception $e) {
            $msg = "Service '$class' could not be loaded: " . $e->getMessage();
            /**
             * @see Zend_Service_StrikeIron_Exception
             */
            require_once 'Zend/Service/StrikeIron/Exception.php';
            throw new Zend_Service_StrikeIron_Exception($msg, $e->getCode());
        }

        // instantiate and return the service
        $service = new $class(array_merge($this->_options, $options));
        return $service;
    }

}
PKpG[�1A_�
�
Service/Nirvanix.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
 
/**
 * @see Zend_Loader
 */
require_once 'Zend/Loader.php';

/**
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * This class allows Nirvanix authentication credentials to be specified
 * in one place and provides a factory for returning convenience wrappers
 * around the Nirvanix web service namespaces.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Nirvanix
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Nirvanix
{
    /**
     * Options to pass to namespace proxies
     * @param array
     */
    protected $_options;

    /**
     * Class constructor.  Authenticates with Nirvanix to receive a 
     * sessionToken, which is then passed to each future request.
     *
     * @param  array  $authParams  Authentication POST parameters.  This
     *                             should have keys "username", "password",
     *                             and "appKey".
     * @param  array  $options     Options to pass to namespace proxies
     */
    public function __construct($authParams, $options = array())
    {
        // merge options with default options
        $defaultOptions = array('defaults'   => array(),
                                'httpClient' => new Zend_Http_Client(),
                                'host'       => 'http://services.nirvanix.com');
        $this->_options = array_merge($defaultOptions, $options);

        // login and save sessionToken to default POST params
        $resp = $this->getService('Authentication')->login($authParams);
        $this->_options['defaults']['sessionToken'] = (string)$resp->SessionToken;
    }    

    /**
     * Nirvanix divides its service into namespaces, with each namespace
     * providing different functionality.  This is a factory method that
     * returns a preconfigured Zend_Service_Nirvanix_Namespace_Base proxy.
     *
     * @param  string  $namespace  Name of the namespace
     * @return Zend_Service_Nirvanix_Namespace_Base
     */
    public function getService($namespace, $options = array())
    {
        switch ($namespace) {
            case 'IMFS':
                $class = 'Zend_Service_Nirvanix_Namespace_Imfs';
                break;
            default:
                $class = 'Zend_Service_Nirvanix_Namespace_Base';
        }

        $options['namespace'] = ucfirst($namespace);
        $options = array_merge($this->_options, $options);

        Zend_Loader::loadClass($class);
        return new $class($options);
    }
    
    /**
     * Get the configured options.
     *
     * @return array
     */
    public function getOptions()
    {
        return $this->_options;
    }

}
PKpG[c�ՠ�Service/Amazon.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Amazon.php 13635 2009-01-14 21:16:36Z beberlei $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon
{
    /**
     * Amazon Web Services Access Key ID
     *
     * @var string
     */
    public $appId;

    /**
     * List of Amazon Web Service base URLs, indexed by country code
     *
     * @var array
     */
    protected $_baseUriList = array('US' => 'http://webservices.amazon.com',
                                    'UK' => 'http://webservices.amazon.co.uk',
                                    'DE' => 'http://webservices.amazon.de',
                                    'JP' => 'http://webservices.amazon.co.jp',
                                    'FR' => 'http://webservices.amazon.fr',
                                    'CA' => 'http://webservices.amazon.ca');

    /**
     * Reference to REST client object
     *
     * @var Zend_Rest_Client
     */
    protected $_rest;


    /**
     * Constructs a new Amazon Web Services Client
     *
     * @param  string $appId       Developer's Amazon appid
     * @param  string $countryCode Country code for Amazon service; may be US, UK, DE, JP, FR, CA
     * @throws Zend_Service_Exception
     * @return Zend_Service_Amazon
     */
    public function __construct($appId, $countryCode = 'US')
    {
        $this->appId = (string) $appId;
        $countryCode = (string) $countryCode;

        if (!isset($this->_baseUriList[$countryCode])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Unknown country code: $countryCode");
        }

        /**
         * @see Zend_Rest_Client
         */
        require_once 'Zend/Rest/Client.php';
        $this->_rest = new Zend_Rest_Client($this->_baseUriList[$countryCode]);
    }


    /**
     * Search for Items
     *
     * @param  array $options Options to use for the Search Query
     * @throws Zend_Service_Exception
     * @return Zend_Service_Amazon_ResultSet
     * @see http://www.amazon.com/gp/aws/sdk/main.html/102-9041115-9057709?s=AWSEcommerceService&v=2005-10-05&p=ApiReference/ItemSearchOperation
     */
    public function itemSearch(array $options)
    {
        $defaultOptions = array('ResponseGroup' => 'Small');
        $options = $this->_prepareOptions('ItemSearch', $options, $defaultOptions);
        $this->_rest->getHttpClient()->resetParameters();
        $response = $this->_rest->restGet('/onca/xml', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Amazon_ResultSet
         */
        require_once 'Zend/Service/Amazon/ResultSet.php';
        return new Zend_Service_Amazon_ResultSet($dom);
    }


    /**
     * Look up item(s) by ASIN
     *
     * @param  string $asin    Amazon ASIN ID
     * @param  array  $options Query Options
     * @see http://www.amazon.com/gp/aws/sdk/main.html/102-9041115-9057709?s=AWSEcommerceService&v=2005-10-05&p=ApiReference/ItemLookupOperation
     * @throws Zend_Service_Exception
     * @return Zend_Service_Amazon_Item|Zend_Service_Amazon_ResultSet
     */
    public function itemLookup($asin, array $options = array())
    {
        $defaultOptions = array('IdType' => 'ASIN', 'ResponseGroup' => 'Small');
        $options['ItemId'] = (string) $asin;
        $options = $this->_prepareOptions('ItemLookup', $options, $defaultOptions);
        $this->_rest->getHttpClient()->resetParameters();
        $response = $this->_rest->restGet('/onca/xml', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: '
                                           . $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());
        self::_checkErrors($dom);
        $xpath = new DOMXPath($dom);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        $items = $xpath->query('//az:Items/az:Item');

        if ($items->length == 1) {
            /**
             * @see Zend_Service_Amazon_Item
             */
            require_once 'Zend/Service/Amazon/Item.php';
            return new Zend_Service_Amazon_Item($items->item(0));
        }

        /**
         * @see Zend_Service_Amazon_ResultSet
         */
        require_once 'Zend/Service/Amazon/ResultSet.php';
        return new Zend_Service_Amazon_ResultSet($dom);
    }


    /**
     * Returns a reference to the REST client
     *
     * @return Zend_Rest_Client
     */
    public function getRestClient()
    {
        return $this->_rest;
    }


    /**
     * Prepare options for request
     *
     * @param  string $query          Action to perform
     * @param  array  $options        User supplied options
     * @param  array  $defaultOptions Default options
     * @return array
     */
    protected function _prepareOptions($query, array $options, array $defaultOptions)
    {
        $options['SubscriptionId'] = $this->appId;
        $options['Service']        = 'AWSECommerceService';
        $options['Operation']      = (string) $query;

        // de-canonicalize out sort key
        if (isset($options['ResponseGroup'])) {
            $responseGroup = split(',', $options['ResponseGroup']);

            if (!in_array('Request', $responseGroup)) {
                $responseGroup[] = 'Request';
                $options['ResponseGroup'] = implode(',', $responseGroup);
            }
        }

        $options = array_merge($defaultOptions, $options);
        return $options;
    }


    /**
     * Check result for errors
     *
     * @param  DOMDocument $dom
     * @throws Zend_Service_Exception
     * @return void
     */
    protected static function _checkErrors(DOMDocument $dom)
    {
        $xpath = new DOMXPath($dom);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');

        if ($xpath->query('//az:Error')->length >= 1) {
            $code = $xpath->query('//az:Error/az:Code/text()')->item(0)->data;
            $message = $xpath->query('//az:Error/az:Message/text()')->item(0)->data;

            switch($code) {
                case 'AWS.ECommerceService.NoExactMatches':
                    break;
                default:
                    /**
                     * @see Zend_Service_Exception
                     */
                    require_once 'Zend/Service/Exception.php';
                    throw new Zend_Service_Exception("$message ($code)");
            }
        }
    }
}
PKpG[`Xɕ�Q�QService/Audioscrobbler.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Audioscrobbler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Audioscrobbler.php 13633 2009-01-14 21:05:51Z beberlei $
 */


/**
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Audioscrobbler
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Audioscrobbler
{
    /**
     * Zend_Http_Client Object
     *
     * @var     Zend_Http_Client
     * @access  protected
     */
    protected $_client;

    /**
     * Array that contains parameters being used by the webservice
     *
     * @var     array
     * @access  protected
     */
    protected $_params;

    /**
     * Flag if we're doing testing or not
     *
     * @var     boolean
     * @access  protected
     */
    protected $_testing;

    /**
     * Http response used for testing purposes
     *
     * @var     string
     * @access  protected
     */
    protected $_testingResponse;

    /**
     * Holds error information (e.g., for handling simplexml_load_string() warnings)
     *
     * @var     array
     * @access  protected
     */
    protected $_error = null;


    //////////////////////////////////////////////////////////
    ///////////////////  CORE METHODS  ///////////////////////
    //////////////////////////////////////////////////////////


    /**
     * Sets up character encoding, instantiates the HTTP client, and assigns the web service version
     * and testing parameters (if provided).
     *
     * @param  boolean $testing
     * @param  string  $testingResponse
     * @return void
     */
    public function __construct($testing = false, $testingResponse = null)
    {
        $this->set('version', '1.0');

        iconv_set_encoding('output_encoding', 'UTF-8');
        iconv_set_encoding('input_encoding', 'UTF-8');
        iconv_set_encoding('internal_encoding', 'UTF-8');

        $this->_client = new Zend_Http_Client();

        $this->_testing          = (boolean) $testing;
        $this->_testingResponse  = (string) $testingResponse;
    }


    /**
     * Returns a field value, or false if the named field does not exist
     *
     * @param  string $field
     * @return string|false
     */
    public function get($field)
    {
        if (array_key_exists($field, $this->_params)) {
            return $this->_params[$field];
        } else {
            return false;
        }
    }

    /**
     * Generic set action for a field in the parameters being used
     *
     * @param  string $field name of field to set
     * @param  string $value value to assign to the named field
     * @return Zend_Service_Audioscrobbler Provides a fluent interface
     */
    public function set($field, $value)
    {
        $this->_params[$field] = urlencode($value);

        return $this;
    }

    /**
     * Protected method that queries REST service and returns SimpleXML response set
     *
     * @param  string $service name of Audioscrobbler service file we're accessing
     * @param  string $params  parameters that we send to the service if needded
     * @throws Zend_Http_Client_Exception
     * @throws Zend_Service_Exception
     * @return SimpleXMLElement result set
     * @access protected
     */
    protected function _getInfo($service, $params = null)
    {
        $service = (string) $service;
        $params  = (string) $params;

        if ($params === '') {
            $this->_client->setUri("http://ws.audioscrobbler.com{$service}");
        } else {
            $this->_client->setUri("http://ws.audioscrobbler.com{$service}?{$params}");
        }

        if ($this->_testing) {
            /**
             * @see Zend_Http_Client_Adapter_Test
             */
            require_once 'Zend/Http/Client/Adapter/Test.php';
            $adapter = new Zend_Http_Client_Adapter_Test();

            $this->_client->setConfig(array('adapter' => $adapter));

            $adapter->setResponse($this->_testingResponse);
        }

        $response     = $this->_client->request();
        $responseBody = $response->getBody();

        if (preg_match('/No such path/', $responseBody)) {
            /**
             * @see Zend_Http_Client_Exception
             */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('Could not find: ' . $this->_client->getUri());
        } elseif (preg_match('/No user exists with this name/', $responseBody)) {
            /**
             * @see Zend_Http_Client_Exception
             */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('No user exists with this name');
        } elseif (!$response->isSuccessful()) {
            /**
             * @see Zend_Http_Client_Exception
             */
            require_once 'Zend/Http/Client/Exception.php';
            throw new Zend_Http_Client_Exception('The web service ' . $this->_client->getUri() . ' returned the following status code: ' . $response->getStatus());
        }

        set_error_handler(array($this, '_errorHandler'));

        if (!$simpleXmlElementResponse = simplexml_load_string($responseBody)) {
            restore_error_handler();
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            $exception = new Zend_Service_Exception('Response failed to load with SimpleXML');
            $exception->error    = $this->_error;
            $exception->response = $responseBody;
            throw $exception;
        }

        restore_error_handler();

        return $simpleXmlElementResponse;
    }

    //////////////////////////////////////////////////////////
    ///////////////////////  USER  ///////////////////////////
    //////////////////////////////////////////////////////////

    /**
    * Utility function to get Audioscrobbler profile information (eg: Name, Gender)
    * @return array containing information
    */
    public function userGetProfileInformation()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/profile.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function get this user's 50 most played artists
     * @return array containing info
    */
    public function userGetTopArtists()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/topartists.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function to get this user's 50 most played albums
     * @return SimpleXML object containing result set
    */
    public function userGetTopAlbums()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/topalbums.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function to get this user's 50 most played tracks
     * @return SimpleXML object containing resut set
    */
    public function userGetTopTracks()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/toptracks.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function to get this user's 50 most used tags
     * @return SimpleXML object containing result set
     */
    public function userGetTopTags()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/tags.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns the user's top tags used most used on a specific artist
     * @return SimpleXML object containing result set
     *
     */
    public function userGetTopTagsForArtist()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/artisttags.xml";
        $params = "artist={$this->get('artist')}";
        return $this->_getInfo($service, $params);
    }

    /**
     * Utility function that returns this user's top tags for an album
     * @return SimpleXML object containing result set
     *
     */
    public function userGetTopTagsForAlbum()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/albumtags.xml";
        $params = "artist={$this->get('artist')}&album={$this->get('album')}";
        return $this->_getInfo($service, $params);
    }

    /**
     * Utility function that returns this user's top tags for a track
     * @return SimpleXML object containing result set
     *
     */
    public function userGetTopTagsForTrack()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/tracktags.xml";
        $params = "artist={$this->get('artist')}&track={$this->get('track')}";
        return $this->_getInfo($service, $params);
    }

    /**
     * Utility function that retrieves this user's list of friends
     * @return SimpleXML object containing result set
     */
    public function userGetFriends()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/friends.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of people with similar listening preferences to this user
     * @return SimpleXML object containing result set
     *
     */
    public function userGetNeighbours()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/neighbours.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of the 10 most recent tracks played by this user
     * @return SimpleXML object containing result set
     *
     */
    public function userGetRecentTracks()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/recenttracks.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of the 10 tracks most recently banned by this user
     * @return SimpleXML object containing result set
     *
     */
    public function userGetRecentBannedTracks()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/recentbannedtracks.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of the 10 tracks most recently loved by this user
     * @return SimpleXML object containing result set
     *
     */
    public function userGetRecentLovedTracks()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/recentlovedtracks.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of dates of available weekly charts for a this user
     * Should actually be named userGetWeeklyChartDateList() but we have to follow audioscrobbler's naming
     * @return SimpleXML object containing result set
     *
     */
    public function userGetWeeklyChartList()
    {
        $service = "/{$this->get('version')}/user/{$this->get('user')}/weeklychartlist.xml";
        return $this->_getInfo($service);
    }


    /**
     * Utility function that returns weekly album chart data for this user
     * @return SimpleXML object containing result set
     *
     * @param integer $from optional UNIX timestamp for start of date range
     * @param integer $to optional UNIX timestamp for end of date range
     */
    public function userGetWeeklyAlbumChart($from = NULL, $to = NULL)
    {
        $params = "";

        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&to={$to}";
        }

        $service = "/{$this->get('version')}/user/{$this->get('user')}/weeklyalbumchart.xml";
        return $this->_getInfo($service, $params);
    }

    /**
     * Utility function that returns weekly artist chart data for this user
     * @return SimpleXML object containing result set
     *
     * @param integer $from optional UNIX timestamp for start of date range
     * @param integer $to optional UNIX timestamp for end of date range
     */
    public function userGetWeeklyArtistChart($from = NULL, $to = NULL)
    {
        $params = "";

        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&to={$to}";
        }

        $service = "/{$this->get('version')}/user/{$this->get('user')}/weeklyartistchart.xml";
        return $this->_getInfo($service, $params);
    }

    /**
     * Utility function that returns weekly track chart data for this user
     * @return SimpleXML object containing result set
     *
     * @param integer $from optional UNIX timestamp for start of date range
     * @param integer $to optional UNIX timestamp for end of date range
     */
    public function userGetWeeklyTrackChart($from = NULL, $to = NULL)
    {
        $params = "";

        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&to={$to}";
        }

        $service = "/{$this->get('version')}/user/{$this->get('user')}/weeklytrackchart.xml";
        return $this->_getInfo($service, $params);
    }


    //////////////////////////////////////////////////////////
    ///////////////////////  ARTIST  /////////////////////////
    //////////////////////////////////////////////////////////

    /**
     * Public functions for retrieveing artist-specific information
     *
     */


    /**
     * Utility function that returns a list of artists similiar to this artist
     * @return SimpleXML object containing result set
     *
     */
    public function artistGetRelatedArtists()
    {
        $service = "/{$this->get('version')}/artist/{$this->get('artist')}/similar.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of this artist's top listeners
     * @return SimpleXML object containing result set
     *
     */
    public function artistGetTopFans()
    {
        $service = "/{$this->get('version')}/artist/{$this->get('artist')}/fans.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of this artist's top-rated tracks
     * @return SimpleXML object containing result set
     *
     */
    public function artistGetTopTracks()
    {
        $service = "/{$this->get('version')}/artist/{$this->get('artist')}/toptracks.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of this artist's top-rated albums
     * @return SimpleXML object containing result set
     *
     */
    public function artistGetTopAlbums()
    {
        $service = "/{$this->get('version')}/artist/{$this->get('artist')}/topalbums.xml";
        return $this->_getInfo($service);
    }

    /**
     * Utility function that returns a list of this artist's top-rated tags
     * @return SimpleXML object containing result set
     *
     */
    public function artistGetTopTags()
    {
        $service = "/{$this->get('version')}/artist/{$this->get('artist')}/toptags.xml";
        return $this->_getInfo($service);
    }

    //////////////////////////////////////////////////////////
    ///////////////////////  ALBUM  //////////////////////////
    //////////////////////////////////////////////////////////

    public function albumGetInfo()
    {
        $service = "/{$this->get('version')}/album/{$this->get('artist')}/{$this->get('album')}/info.xml";
        return $this->_getInfo($service);
    }

    //////////////////////////////////////////////////////////
    ///////////////////////  TRACKS //////////////////////////
    //////////////////////////////////////////////////////////

    public function trackGetTopFans()
    {
        $service = "/{$this->get('version')}/track/{$this->get('artist')}/{$this->get('track')}/fans.xml";
        return $this->_getInfo($service);
    }

    public function trackGetTopTags()
    {
        $service = "/{$this->get('version')}/track/{$this->get('artist')}/{$this->get('track')}/toptags.xml";
        return $this->_getInfo($service);
    }

    //////////////////////////////////////////////////////////
    ///////////////////////  TAGS   //////////////////////////
    //////////////////////////////////////////////////////////

    public function tagGetTopTags()
    {
        $service = "/{$this->get('version')}/tag/toptags.xml";
        return $this->_getInfo($service);
    }

    public function tagGetTopAlbums()
    {
        $service = "/{$this->get('version')}/tag/{$this->get('tag')}/topalbums.xml";
        return $this->_getInfo($service);
    }

    public function tagGetTopArtists()
    {
        $service = "/{$this->get('version')}/tag/{$this->get('tag')}/topartists.xml";
        return $this->_getInfo($service);
    }

    public function tagGetTopTracks()
    {
        $service = "/{$this->get('version')}/tag/{$this->get('tag')}/toptracks.xml";
        return $this->_getInfo($service);
    }

    //////////////////////////////////////////////////////////
    /////////////////////// GROUPS  //////////////////////////
    //////////////////////////////////////////////////////////

    public function groupGetWeeklyChartList()
    {
        $service = "/{$this->get('version')}/group/{$this->get('group')}/weeklychartlist.xml";
        return $this->_getInfo($service);
    }

    public function groupGetWeeklyArtistChartList($from = NULL, $to = NULL)
    {

        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&$to={$to}";
        } else {
            $params = "";
        }

        $service = "/{$this->get('version')}/group/{$this->get('group')}/weeklyartistchart.xml";
        return $this->_getInfo($service, $params);
    }

    public function groupGetWeeklyTrackChartList($from = NULL, $to = NULL)
    {
        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&to={$to}";
        } else {
            $params = "";
        }

        $service = "/{$this->get('version')}/group/{$this->get('group')}/weeklytrackchart.xml";
        return $this->_getInfo($service, $params);
    }

    public function groupGetWeeklyAlbumChartList($from = NULL, $to = NULL)
    {
        if ($from != NULL && $to != NULL) {
            $from = (int)$from;
            $to = (int)$to;
            $params = "from={$from}&to={$to}";
        } else {
            $params = "";
        }

        $service = "/{$this->get('version')}/group/{$this->get('group')}/weeklyalbumchart.xml";
        return $this->_getInfo($service, $params);
    }

    /**
     * Saves the provided error information to this instance
     *
     * @param  integer $errno
     * @param  string  $errstr
     * @param  string  $errfile
     * @param  integer $errline
     * @param  array   $errcontext
     * @return void
     */
    protected function _errorHandler($errno, $errstr, $errfile, $errline, array $errcontext)
    {
        $this->_error = array(
            'errno'      => $errno,
            'errstr'     => $errstr,
            'errfile'    => $errfile,
            'errline'    => $errline,
            'errcontext' => $errcontext
            );
    }

    /**
     * Call Intercept for set($name, $field)
     *
     * @param  string $method
     * @param  array  $args
     * @return Zend_Service_Audioscrobbler
     */
    public function __call($method, $args)
    {
        if(substr($method, 0, 3) !== "set") {
            require_once "Zend/Service/Audioscrobbler/Exception.php";
            throw new Zend_Service_Audioscrobbler_Exception(
                "Method ".$method." does not exist in class Zend_Service_Audioscrobbler."
            );
        }
        $field = strtolower(substr($method, 3));

        if(!is_array($args) || count($args) != 1) {
            require_once "Zend/Service/Audioscrobbler/Exception.php";
            throw new Zend_Service_Audioscrobbler_Exception(
                "A value is required for setting a parameter field."
            );
        }
        $this->set($field, $args[0]);

        return $this;
    }
}
PKpG[p��9Service/Amazon/Accessories.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Accessories.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_Accessories
{
    /**
     * Assigns values to properties relevant to Accessories
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        foreach (array('ASIN', 'Title') as $el) {
            $this->$el = (string) $xpath->query("./az:$el/text()", $dom)->item(0)->data;
        }
    }
}
PKpG[�Z�o��!Service/Amazon/CustomerReview.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CustomerReview.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_CustomerReview
{
    /**
     * Assigns values to properties relevant to CustomerReview
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        foreach (array('Rating', 'HelpfulVotes', 'CustomerId', 'TotalVotes', 'Date', 'Summary', 'Content') as $el) {
            $result = $xpath->query("./az:$el/text()", $dom);
            if ($result->length == 1) {
                $this->$el = (string) $result->item(0)->data;
            }
        }
    }
}
PKpG[��bd��Service/Amazon/ResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Amazon_Item
 */
require_once 'Zend/Service/Amazon/Item.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_ResultSet implements SeekableIterator
{
    /**
     * A DOMNodeList of <Item> elements
     *
     * @var DOMNodeList
     */
    protected $_results = null;

    /**
     * Amazon Web Service Return Document
     *
     * @var DOMDocument
     */
    protected $_dom;

    /**
     * XPath Object for $this->_dom
     *
     * @var DOMXPath
     */
    protected $_xpath;

    /**
     * Current index for SeekableIterator
     *
     * @var int
     */
    protected $_currentIndex = 0;

    /**
     * Create an instance of Zend_Service_Amazon_ResultSet and create the necessary data objects
     *
     * @param  DOMDocument $dom
     * @return void
     */
    public function __construct(DOMDocument $dom)
    {
        $this->_dom = $dom;
        $this->_xpath = new DOMXPath($dom);
        $this->_xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        $this->_results = $this->_xpath->query('//az:Item');
    }

    /**
     * Total Number of results returned
     *
     * @return int Total number of results returned
     */
    public function totalResults()
    {
        $result = $this->_xpath->query('//az:TotalResults/text()');
        return (int) $result->item(0)->data;
    }

    /**
     * Total Number of pages returned
     *
     * @return int Total number of pages returned
     */
    public function totalPages()
    {
        $result = $this->_xpath->query('//az:TotalPages/text()');
        return (int) $result->item(0)->data;
    }

    /**
     * Implement SeekableIterator::current()
     *
     * @return Zend_Service_Amazon_Item
     */
    public function current()
    {
        return new Zend_Service_Amazon_Item($this->_results->item($this->_currentIndex));
    }

    /**
     * Implement SeekableIterator::key()
     *
     * @return int
     */
    public function key()
    {
        return $this->_currentIndex;
    }

    /**
     * Implement SeekableIterator::next()
     *
     * @return void
     */
    public function next()
    {
        $this->_currentIndex += 1;
    }

    /**
     * Implement SeekableIterator::rewind()
     *
     * @return void
     */
    public function rewind()
    {
        $this->_currentIndex = 0;
    }

    /**
     * Implement SeekableIterator::seek()
     *
     * @param  int $index
     * @throws OutOfBoundsException
     * @return void
     */
    public function seek($index)
    {
        $indexInt = (int) $index;
        if ($indexInt >= 0 && (null === $this->_results || $indexInt < $this->_results->length)) {
            $this->_currentIndex = $indexInt;
        } else {
            throw new OutOfBoundsException("Illegal index '$index'");
        }
    }

    /**
     * Implement SeekableIterator::valid()
     *
     * @return boolean
     */
    public function valid()
    {
        return null !== $this->_results && $this->_currentIndex < $this->_results->length;
    }
}
PKpG[;T_��
�
Service/Amazon/Query.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Query.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Amazon
 */
require_once 'Zend/Service/Amazon.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_Query extends Zend_Service_Amazon
{
    /**
     * Search parameters
     *
     * @var array
     */
    protected $_search = array();

    /**
     * Search index
     *
     * @var string
     */
    protected $_searchIndex = null;

    /**
     * Prepares query parameters
     *
     * @param  string $method
     * @param  array  $args
     * @throws Zend_Service_Exception
     * @return Zend_Service_Amazon_Query Provides a fluent interface
     */
    public function __call($method, $args)
    {
        if (strtolower($method) === 'asin') {
            $this->_searchIndex = 'asin';
            $this->_search['ItemId'] = $args[0];
            return $this;
        }

        if (strtolower($method) === 'category') {
            $this->_searchIndex = $args[0];
            $this->_search['SearchIndex'] = $args[0];
        } else if (isset($this->_search['SearchIndex']) || $this->_searchIndex !== null || $this->_searchIndex === 'asin') {
            $this->_search[$method] = $args[0];
        } else {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('You must set a category before setting the search parameters');
        }

        return $this;
    }

    /**
     * Search using the prepared query
     *
     * @return Zend_Service_Amazon_Item|Zend_Service_Amazon_ResultSet
     */
    public function search()
    {
        if ($this->_searchIndex === 'asin') {
            return $this->itemLookup($this->_search['ItemId'], $this->_search);
        }
        return $this->itemSearch($this->_search);
    }
}
PKpG[4��MMService/Amazon/Item.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Item.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_Item
{
    public $ASIN;
    public $DetailPageURL;
    public $SalesRank;
    public $SmallImage;
    public $MediumImage;
    public $LargeImage;
    public $Subjects;
    public $Offers;
    public $CustomerReviews;
    public $SimilarProducts;
    public $Accessories;
    public $Tracks;
    public $ListmaniaLists;
    public $PromotionalTag;

    protected $_dom;


    /**
     * Parse the given <Item> element
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        $this->ASIN = $xpath->query('./az:ASIN/text()', $dom)->item(0)->data;

        $result = $xpath->query('./az:DetailPageURL/text()', $dom);
        if ($result->length == 1) {
            $this->DetailPageURL = $result->item(0)->data;
        }

        if ($xpath->query('./az:ItemAttributes/az:ListPrice', $dom)->length >= 1) {
            $this->CurrencyCode = (string) $xpath->query('./az:ItemAttributes/az:ListPrice/az:CurrencyCode/text()', $dom)->item(0)->data;
            $this->Amount = (int) $xpath->query('./az:ItemAttributes/az:ListPrice/az:Amount/text()', $dom)->item(0)->data;
            $this->FormattedPrice = (string) $xpath->query('./az:ItemAttributes/az:ListPrice/az:FormattedPrice/text()', $dom)->item(0)->data;
        }

        $result = $xpath->query('./az:ItemAttributes/az:*/text()', $dom);
        if ($result->length >= 1) {
            foreach ($result as $v) {
                if (isset($this->{$v->parentNode->tagName})) {
                    if (is_array($this->{$v->parentNode->tagName})) {
                        array_push($this->{$v->parentNode->tagName}, (string) $v->data);
                    } else {
                        $this->{$v->parentNode->tagName} = array($this->{$v->parentNode->tagName}, (string) $v->data);
                    }
                } else {
                    $this->{$v->parentNode->tagName} = (string) $v->data;
                }
            }
        }

        foreach (array('SmallImage', 'MediumImage', 'LargeImage') as $im) {
            $result = $xpath->query("./az:ImageSets/az:ImageSet[position() = 1]/az:$im", $dom);
            if ($result->length == 1) {
                /**
                 * @see Zend_Service_Amazon_Image
                 */
                require_once 'Zend/Service/Amazon/Image.php';
                $this->$im = new Zend_Service_Amazon_Image($result->item(0));
            }
        }

        $result = $xpath->query('./az:SalesRank/text()', $dom);
        if ($result->length == 1) {
            $this->SalesRank = (int) $result->item(0)->data;
        }

        $result = $xpath->query('./az:CustomerReviews/az:Review', $dom);
        if ($result->length >= 1) {
            /**
             * @see Zend_Service_Amazon_CustomerReview
             */
            require_once 'Zend/Service/Amazon/CustomerReview.php';
            foreach ($result as $review) {
                $this->CustomerReviews[] = new Zend_Service_Amazon_CustomerReview($review);
            }
            $this->AverageRating = (float) $xpath->query('./az:CustomerReviews/az:AverageRating/text()', $dom)->item(0)->data;
            $this->TotalReviews = (int) $xpath->query('./az:CustomerReviews/az:TotalReviews/text()', $dom)->item(0)->data;
        }

        $result = $xpath->query('./az:EditorialReviews/az:*', $dom);
        if ($result->length >= 1) {
            /**
             * @see Zend_Service_Amazon_EditorialReview
             */
            require_once 'Zend/Service/Amazon/EditorialReview.php';
            foreach ($result as $r) {
                $this->EditorialReviews[] = new Zend_Service_Amazon_EditorialReview($r);
            }
        }

        $result = $xpath->query('./az:SimilarProducts/az:*', $dom);
        if ($result->length >= 1) {
            /**
             * @see Zend_Service_Amazon_SimilarProduct
             */
            require_once 'Zend/Service/Amazon/SimilarProduct.php';
            foreach ($result as $r) {
                $this->SimilarProducts[] = new Zend_Service_Amazon_SimilarProduct($r);
            }
        }

        $result = $xpath->query('./az:ListmaniaLists/*', $dom);
        if ($result->length >= 1) {
            /**
             * @see Zend_Service_Amazon_ListmaniaList
             */
            require_once 'Zend/Service/Amazon/ListmaniaList.php';
            foreach ($result as $r) {
                $this->ListmaniaLists[] = new Zend_Service_Amazon_ListmaniaList($r);
            }
        }

        $result = $xpath->query('./az:Tracks/az:Disc', $dom);
        if ($result->length > 1) {
            foreach ($result as $disk) {
                foreach ($xpath->query('./*/text()', $disk) as $t) {
                    $this->Tracks[$disk->getAttribute('number')] = (string) $t->data;
                }
            }
        } else if ($result->length == 1) {
            foreach ($xpath->query('./*/text()', $result->item(0)) as $t) {
                $this->Tracks[] = (string) $t->data;
            }
        }

        $result = $xpath->query('./az:Offers', $dom);
        $resultSummary = $xpath->query('./az:OfferSummary', $dom);
        if ($result->length > 1 || $resultSummary->length == 1) {
            /**
             * @see Zend_Service_Amazon_OfferSet
             */
            require_once 'Zend/Service/Amazon/OfferSet.php';
            $this->Offers = new Zend_Service_Amazon_OfferSet($dom);
        }

        $result = $xpath->query('./az:Accessories/*', $dom);
        if ($result->length > 1) {
            /**
             * @see Zend_Service_Amazon_Accessories
             */
            require_once 'Zend/Service/Amazon/Accessories.php';
            foreach ($result as $r) {
                $this->Accessories[] = new Zend_Service_Amazon_Accessories($r);
            }
        }

        $this->_dom = $dom;
    }


    /**
     * Returns the item's original XML
     *
     * @return string
     */
    public function asXml()
    {
        return $this->_dom->ownerDocument->saveXML($this->_dom);
    }
}
PKpG[��*8��Service/Amazon/OfferSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: OfferSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_OfferSet
{
    /**
     * Parse the given Offer Set Element
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');

        $offer = $xpath->query('./az:OfferSummary', $dom);
        if ($offer->length == 1) {
            $lowestNewPrice = $xpath->query('./az:OfferSummary/az:LowestNewPrice', $dom);
            if ($lowestNewPrice->length == 1) {
                $this->LowestNewPrice = (int) $xpath->query('./az:OfferSummary/az:LowestNewPrice/az:Amount/text()', $dom)->item(0)->data;
                $this->LowestNewPriceCurrency = (string) $xpath->query('./az:OfferSummary/az:LowestNewPrice/az:CurrencyCode/text()', $dom)->item(0)->data;
            }
            $lowestUsedPrice = $xpath->query('./az:OfferSummary/az:LowestUsedPrice', $dom);
            if ($lowestUsedPrice->length == 1) {
                $this->LowestUsedPrice = (int) $xpath->query('./az:OfferSummary/az:LowestUsedPrice/az:Amount/text()', $dom)->item(0)->data;
                $this->LowestUsedPriceCurrency = (string) $xpath->query('./az:OfferSummary/az:LowestUsedPrice/az:CurrencyCode/text()', $dom)->item(0)->data;
            }
            $this->TotalNew = (int) $xpath->query('./az:OfferSummary/az:TotalNew/text()', $dom)->item(0)->data;
            $this->TotalUsed = (int) $xpath->query('./az:OfferSummary/az:TotalUsed/text()', $dom)->item(0)->data;
            $this->TotalCollectible = (int) $xpath->query('./az:OfferSummary/az:TotalCollectible/text()', $dom)->item(0)->data;
            $this->TotalRefurbished = (int) $xpath->query('./az:OfferSummary/az:TotalRefurbished/text()', $dom)->item(0)->data;
        }
        $offers = $xpath->query('./az:Offers/az:Offer', $dom);
        if ($offers->length >= 1) {
            /**
             * @see Zend_Service_Amazon_Offer
             */
            require_once 'Zend/Service/Amazon/Offer.php';
            foreach ($offers as $offer) {
                $this->Offers[] = new Zend_Service_Amazon_Offer($offer);
            }
        }
    }
}
PKpG[d^�%% Service/Amazon/ListmaniaList.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ListmaniaList.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_ListmaniaList
{
    /**
     * Assigns values to properties relevant to ListmaniaList
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        foreach (array('ListId', 'ListName') as $el) {
            $this->$el = (string) $xpath->query("./az:$el/text()", $dom)->item(0)->data;
        }
    }
}
PKpG[v1��##!Service/Amazon/SimilarProduct.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SimilarProduct.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_SimilarProduct
{
    /**
     * Assigns values to properties relevant to SimilarProduct
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        foreach (array('ASIN', 'Title') as $el) {
            $this->$el = (string) $xpath->query("./az:$el/text()", $dom)->item(0)->data;
        }
    }
}
PKpG[��[R**"Service/Amazon/EditorialReview.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: EditorialReview.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_EditorialReview
{
    /**
     * Assigns values to properties relevant to EditorialReview
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        foreach (array('Source', 'Content') as $el) {
            $this->$el = (string) $xpath->query("./az:$el/text()", $dom)->item(0)->data;
        }
    }
}
PKpG[6>g���Service/Amazon/Image.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Image.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_Image
{
    /**
     * Image URL
     *
     * @var Zend_Uri
     */
    public $Url;

    /**
     * Image height in pixels
     *
     * @var int
     */
    public $Height;

    /**
     * Image width in pixels
     *
     * @var int
     */
    public $Width;

    /**
     * Assigns values to properties relevant to Image
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        $this->Url = Zend_Uri::factory($xpath->query('./az:URL/text()', $dom)->item(0)->data);
        $this->Height = (int) $xpath->query('./az:Height/text()', $dom)->item(0)->data;
        $this->Width = (int) $xpath->query('./az:Width/text()', $dom)->item(0)->data;
    }
}
PKpG[u�)~	~	Service/Amazon/Offer.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Offer.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Amazon
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Amazon_Offer
{
    /**
     * Parse the given Offer element
     *
     * @param  DOMElement $dom
     * @return void
     */
    public function __construct(DOMElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');
        $this->MerchantId = (string) $xpath->query('./az:Merchant/az:MerchantId/text()', $dom)->item(0)->data;
        $this->GlancePage = (string) $xpath->query('./az:Merchant/az:GlancePage/text()', $dom)->item(0)->data;
        $this->Condition = (string) $xpath->query('./az:OfferAttributes/az:Condition/text()', $dom)->item(0)->data;
        $this->OfferListingId = (string) $xpath->query('./az:OfferListing/az:OfferListingId/text()', $dom)->item(0)->data;
        $this->Price = (int) $xpath->query('./az:OfferListing/az:Price/az:Amount/text()', $dom)->item(0)->data;
        $this->CurrencyCode = (string) $xpath->query('./az:OfferListing/az:Price/az:CurrencyCode/text()', $dom)->item(0)->data;
        $this->Availability = (string) $xpath->query('./az:OfferListing/az:Availability/text()', $dom)->item(0)->data;
        $result = $xpath->query('./az:OfferListing/az:IsEligibleForSuperSaverShipping/text()', $dom);
        if ($result->length >= 1) {
            $this->IsEligibleForSuperSaverShipping = (bool) $result->item(0)->data;
        }
    }
}
PKpG[����$Service/Technorati/TagsResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TagsResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_ResultSet 
 */
require_once 'Zend/Service/Technorati/ResultSet.php';


/**
 * Represents a Technorati TopTags or BlogPostTags queries result set.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_TagsResultSet extends Zend_Service_Technorati_ResultSet
{
    /**
     * Constructs a new object object from DOM Document.
     *
     * @param   DomDocument $dom the ReST fragment for this object
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        parent::__construct($dom, $options);

        $this->_totalResultsReturned  = (int) $this->_xpath->evaluate("count(/tapi/document/item)");
        $this->_totalResultsAvailable = (int) $this->_totalResultsReturned;
    }

    /**
     * Implements Zend_Service_Technorati_ResultSet::current().
     *
     * @return Zend_Service_Technorati_TagsResult current result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Technorati_TagsResult
         */
        require_once 'Zend/Service/Technorati/TagsResult.php';
        return new Zend_Service_Technorati_TagsResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[`K��}} Service/Technorati/ResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Technorati_Result
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * This is the most essential result set.
 * The scope of this class is to be extended by a query-specific child result set class,
 * and it should never be used to initialize a standalone object.
 *
 * Each of the specific result sets represents a collection of query-specific
 * Zend_Service_Technorati_Result objects.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @abstract
 */
abstract class Zend_Service_Technorati_ResultSet implements SeekableIterator
{
    /**
     * The total number of results available
     *
     * @var     int
     * @access  protected
     */
    protected $_totalResultsAvailable;

    /**
     * The number of results in this result set
     *
     * @var     int
     * @access  protected
     */
    protected $_totalResultsReturned;

    /**
     * The offset in the total result set of this search set
     *
     * @var     int
     * @todo
     */
    // public $firstResultPosition;


    /**
     * A DomNodeList of results
     *
     * @var     DomNodeList
     * @access  protected
     */
    protected $_results;

    /**
     * Technorati API response document
     *
     * @var     DomDocument
     * @access  protected
     */
    protected $_dom;

    /**
     * Object for $this->_dom
     *
     * @var     DOMXpath
     * @access  protected
     */
    protected $_xpath;

    /**
     * XML string representation for $this->_dom
     *
     * @var     string
     * @access  protected
     */
    protected $_xml;

    /**
     * Current Item
     *
     * @var     int
     * @access  protected
     */
    protected $_currentIndex = 0;


    /**
     * Parses the search response and retrieves the results for iteration.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        $this->_init($dom, $options);

        // Technorati loves to make developer's life really hard
        // I must read query options in order to normalize a single way
        // to display start and limit.
        // The value is printed out in XML using many different tag names,
        // too hard to get it from XML

        // Additionally, the following tags should be always available
        // according to API documentation but... this is not the truth!
        // - querytime
        // - limit
        // - start (sometimes rankingstart)

        // query tag is only available for some requests, the same for url.
        // For now ignore them.

        //$start = isset($options['start']) ? $options['start'] : 1;
        //$limit = isset($options['limit']) ? $options['limit'] : 20;
        //$this->_firstResultPosition = $start;
    }

    /**
     * Initializes this object from a DomDocument response.
     *
     * Because __construct and __wakeup shares some common executions,
     * it's useful to group them in a single initialization method.
     * This method is called once each time a new instance is created
     * or a serialized object is unserialized.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     *      * @return  void
     */
    protected function _init(DomDocument $dom, $options = array())
    {
        $this->_dom     = $dom;
        $this->_xpath   = new DOMXPath($dom);

        $this->_results = $this->_xpath->query("//item");
    }

    /**
     * Number of results returned.
     *
     * @return  int     total number of results returned
     */
    public function totalResults()
    {
        return (int) $this->_totalResultsReturned;
    }


    /**
     * Number of available results.
     *
     * @return  int     total number of available results
     */
    public function totalResultsAvailable()
    {
        return (int) $this->_totalResultsAvailable;
    }

    /**
     * Implements SeekableIterator::current().
     *
     * @return  void
     * @throws  Zend_Service_Exception
     * @abstract
     */
    // abstract public function current();

    /**
     * Implements SeekableIterator::key().
     *
     * @return  int
     */
    public function key()
    {
        return $this->_currentIndex;
    }

    /**
     * Implements SeekableIterator::next().
     *
     * @return  void
     */
    public function next()
    {
        $this->_currentIndex += 1;
    }

    /**
     * Implements SeekableIterator::rewind().
     *
     * @return  bool
     */
    public function rewind()
    {
        $this->_currentIndex = 0;
        return true;
    }

    /**
     * Implement SeekableIterator::seek().
     *
     * @param   int $index
     * @return  void
     * @throws  OutOfBoundsException
     */
    public function seek($index)
    {
        $indexInt = (int) $index;
        if ($indexInt >= 0 && $indexInt < $this->_results->length) {
            $this->_currentIndex = $indexInt;
        } else {
            throw new OutOfBoundsException("Illegal index '$index'");
        }
    }

    /**
     * Implement SeekableIterator::valid().
     *
     * @return boolean
     */
    public function valid()
    {
        return null !== $this->_results && $this->_currentIndex < $this->_results->length;
    }

    /**
     * Returns the response document as XML string.
     *
     * @return string   the response document converted into XML format
     */
    public function getXml()
    {
        return $this->_dom->saveXML();
    }

    /**
     * Overwrites standard __sleep method to make this object serializable.
     *
     * DomDocument and DOMXpath objects cannot be serialized.
     * This method converts them back to an XML string.
     *
     * @return void
     */
    public function __sleep() {
        $this->_xml     = $this->getXml();
        $vars = array_keys(get_object_vars($this));
        return array_diff($vars, array('_dom', '_xpath'));
    }

    /**
     * Overwrites standard __wakeup method to make this object unserializable.
     *
     * Restores object status before serialization.
     * Converts XML string into a DomDocument object and creates a valid
     * DOMXpath instance for given DocDocument.
     *
     * @return void
     */
    public function __wakeup() {
        $dom = new DOMDocument();
        $dom->loadXml($this->_xml);
        $this->_init($dom);
        $this->_xml = null; // reset XML content
    }
}
PKpG[T��=��&Service/Technorati/CosmosResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CosmosResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_ResultSet 
 */
require_once 'Zend/Service/Technorati/ResultSet.php';


/**
 * Represents a Technorati Cosmos query result set.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_CosmosResultSet extends Zend_Service_Technorati_ResultSet
{
    /**
     * Technorati weblog url, if queried URL is a valid weblog.
     *
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_url;

    /**
     * Technorati weblog, if queried URL is a valid weblog.
     *
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_weblog;

    /**
     * Number of unique blogs linking this blog
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundBlogs;

    /**
     * Number of incoming links to this blog
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundLinks;

    /**
     * Parses the search response and retrieve the results for iteration.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        parent::__construct($dom, $options);

        $result = $this->_xpath->query('/tapi/document/result/inboundlinks/text()');
        if ($result->length == 1) $this->_inboundLinks = (int) $result->item(0)->data;

        $result = $this->_xpath->query('/tapi/document/result/inboundblogs/text()');
        if ($result->length == 1) $this->_inboundBlogs = (int) $result->item(0)->data;

        $result = $this->_xpath->query('/tapi/document/result/weblog');
        if ($result->length == 1) {
            /**
             * @see Zend_Service_Technorati_Weblog
             */
            require_once 'Zend/Service/Technorati/Weblog.php';
            $this->_weblog = new Zend_Service_Technorati_Weblog($result->item(0));
        }

        $result = $this->_xpath->query('/tapi/document/result/url/text()');
        if ($result->length == 1) {
            try {
                // fetched URL often doens't include schema 
                // and this issue causes the following line to fail
                $this->_url = Zend_Service_Technorati_Utils::normalizeUriHttp($result->item(0)->data);
            } catch(Zend_Service_Technorati_Exception $e) {
                if ($this->getWeblog() instanceof Zend_Service_Technorati_Weblog) {
                    $this->_url = $this->getWeblog()->getUrl();
                }
            }
        }

        $this->_totalResultsReturned  = (int) $this->_xpath->evaluate("count(/tapi/document/item)");

        // total number of results depends on query type
        // for now check only getInboundLinks() and getInboundBlogs() value
        if ((int) $this->getInboundLinks() > 0) {
            $this->_totalResultsAvailable = $this->getInboundLinks();
        } elseif ((int) $this->getInboundBlogs() > 0) {
            $this->_totalResultsAvailable = $this->getInboundBlogs();
        } else {
            $this->_totalResultsAvailable = 0;
        }
    }


    /**
     * Returns the weblog URL.
     * 
     * @return  Zend_Uri_Http
     */
    public function getUrl() {
        return $this->_url;
    }

    /**
     * Returns the weblog.
     * 
     * @return  Zend_Service_Technorati_Weblog
     */
    public function getWeblog() {
        return $this->_weblog;
    }

    /**
     * Returns number of unique blogs linking this blog.
     * 
     * @return  integer the number of inbound blogs
     */
    public function getInboundBlogs() 
    {
        return $this->_inboundBlogs;
    }

    /**
     * Returns number of incoming links to this blog.
     * 
     * @return  integer the number of inbound links
     */
    public function getInboundLinks() 
    {
        return $this->_inboundLinks;
    }

    /**
     * Implements Zend_Service_Technorati_ResultSet::current().
     *
     * @return Zend_Service_Technorati_CosmosResult current result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Technorati_CosmosResult
         */
        require_once 'Zend/Service/Technorati/CosmosResult.php';
        return new Zend_Service_Technorati_CosmosResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[u`�}�
�
$Service/Technorati/GetInfoResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: GetInfoResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Represents a single Technorati GetInfo query result object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_GetInfoResult
{
    /**
     * Technorati author
     *
     * @var     Zend_Service_Technorati_Author
     * @access  protected
     */
    protected $_author;

    /**
     * A list of weblogs claimed by this author
     *
     * @var     array
     * @access  protected
     */
    protected $_weblogs = array();


    /**
     * Constructs a new object object from DOM Document.
     *
     * @param   DomDocument $dom the ReST fragment for this object
     */
    public function __construct(DomDocument $dom)
    {
        $xpath = new DOMXPath($dom);

        /**
         * @see Zend_Service_Technorati_Author
         */
        require_once 'Zend/Service/Technorati/Author.php';

        $result = $xpath->query('//result');
        if ($result->length == 1) {
            $this->_author = new Zend_Service_Technorati_Author($result->item(0));
        }

        /**
         * @see Zend_Service_Technorati_Weblog
         */
        require_once 'Zend/Service/Technorati/Weblog.php';

        $result = $xpath->query('//item/weblog');
        if ($result->length >= 1) {
            foreach ($result as $weblog) {
                $this->_weblogs[] = new Zend_Service_Technorati_Weblog($weblog);
            }
        }
    }


    /**
     * Returns the author associated with queried username.
     * 
     * @return  Zend_Service_Technorati_Author
     */
    public function getAuthor() {
        return $this->_author;
    }

    /**
     * Returns the collection of weblogs authored by queried username.
     * 
     * @return  array of Zend_Service_Technorati_Weblog
     */
    public function getWeblogs() {
        return $this->_weblogs;
    }

}
PKpG[T 9nn Service/Technorati/TagResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TagResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_Result 
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * Represents a single Technorati Tag query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_TagResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_TagResult extends Zend_Service_Technorati_Result
{
    /**
     * Technorati weblog object corresponding to queried keyword.
     * 
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_weblog;

    /**
     * The title of the entry.
     * 
     * @var     string
     * @access  protected
     */
    protected $_title;
    
    /**
     * The blurb from entry with search term highlighted.
     * 
     * @var     string
     * @access  protected
     */
    protected $_excerpt;

    /**
     * The datetime the entry was created.
     * 
     * @var     Zend_Date
     * @access  protected
     */
    protected $_created;
    
    /**
     * The datetime the entry was updated.
     * Called 'postupdate' in original XML response,
     * it has been renamed to provide more coherence.
     * 
     * @var     Zend_Date
     * @access  protected
     */
    protected $_updated;
    
    /**
     * The permalink of the blog entry.
     * 
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_permalink;
    

    /**
     * Constructs a new object object from DOM Element.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_fields = array( '_permalink'    => 'permalink',
                                '_excerpt'      => 'excerpt',
                                '_created'      => 'created',
                                '_updated'      => 'postupdate',
                                '_title'        => 'title');
        parent::__construct($dom);

        // weblog object field
        $this->_parseWeblog();

        // filter fields
        $this->_permalink = Zend_Service_Technorati_Utils::normalizeUriHttp($this->_permalink);
        $this->_created = Zend_Service_Technorati_Utils::normalizeDate($this->_created);
        $this->_updated = Zend_Service_Technorati_Utils::normalizeDate($this->_updated);
    }

    /**
     * Returns the weblog object that links queried URL.
     * 
     * @return  Zend_Service_Technorati_Weblog
     */
    public function getWeblog() {
        return $this->_weblog;
    }
    
    /**
     * Returns the title of the entry.
     * 
     * @return  string
     */
    public function getTitle() {
        return $this->_title;
    }
    
    /**
     * Returns the blurb from entry with search term highlighted.
     * 
     * @return  string
     */
    public function getExcerpt() {
        return $this->_excerpt;
    }
        
    /**
     * Returns the datetime the entry was created.
     * 
     * @return  Zend_Date
     */
    public function getCreated() {
        return $this->_created;
    }
        
    /**
     * Returns the datetime the entry was updated.
     * 
     * @return  Zend_Date
     */
    public function getUpdated() {
        return $this->_updated;
    }
    
    /**
     * Returns the permalink of the blog entry.
     * 
     * @return  Zend_Uri_Http
     */
    public function getPermalink() {
        return $this->_permalink;
    }
    
}
PKpG[qNQN��$Service/Technorati/KeyInfoResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: KeyInfoResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Represents a single Technorati KeyInfo query result object.
 * It provides information about your Technorati API Key daily usage.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_KeyInfoResult
{
    /**
     * Technorati API key
     *
     * @var     string
     * @access  protected
     */
    protected $_apiKey;

    /**
     * Number of queries used today
     *
     * @var     int
     * @access  protected
     */
    protected $_apiQueries;

    /**
     * Total number of available queries per day
     *
     * @var     int
     * @access  protected
     */
    protected $_maxQueries;
    

    /**
     * Constructs a new object from DOM Element.
     * Parses given Key element from $dom and sets API key string.
     *
     * @param   DomElement $dom the ReST fragment for this object
     * @param   string $apiKey  the API Key string
     */
    public function __construct(DomDocument $dom, $apiKey = null)
    {
        // $this->_dom   = $dom;
        // $this->_xpath = new DOMXPath($dom);
        $xpath = new DOMXPath($dom);

        $this->_apiQueries   = (int) $xpath->query('/tapi/document/result/apiqueries/text()')->item(0)->data;
        $this->_maxQueries   = (int) $xpath->query('/tapi/document/result/maxqueries/text()')->item(0)->data;
        $this->setApiKey($apiKey);
    }
    
    
    /**
     * Returns API Key string.
     * 
     * @return  string  API Key string
     */
    public function getApiKey() {
        return $this->_apiKey;
    }
    
    /**
     * Returns the number of queries sent today.
     * 
     * @return  int     number of queries sent today
     */
    public function getApiQueries() {
        return $this->_apiQueries;
    }
    
    /**
     * Returns Key's daily query limit.
     * 
     * @return  int     maximum number of available queries per day
     */
    public function getMaxQueries() {
        return $this->_maxQueries;
    }
    
    
    /**
     * Sets API Key string.
     * 
     * @param   string $apiKey  the API Key
     * @return  Zend_Service_Technorati_KeyInfoResult $this instance
     */
    public function setApiKey($apiKey) {
        $this->_apiKey = $apiKey;
        return $this;
    }
}
PKpG[{��,��Service/Technorati/Author.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Author.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Technorati_Utils
 */
require_once 'Zend/Service/Technorati/Utils.php';


/**
 * Represents a weblog Author object. It usually belongs to a Technorati account.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_Author
{
    /**
     * Author first name
     *
     * @var     string
     * @access  protected
     */
    protected $_firstName;

    /**
     * Author last name
     *
     * @var     string
     * @access  protected
     */
    protected $_lastName;
    
    /**
     * Technorati account username
     *
     * @var     string
     * @access  protected
     */
    protected $_username;
    
    /**
     * Technorati account description
     *
     * @var     string
     * @access  protected
     */
    protected $_description;

    /**
     * Technorati account biography
     *
     * @var     string
     * @access  protected
     */
    protected $_bio;

    /**
     * Technorati account thumbnail picture URL, if any
     *
     * @var     null|Zend_Uri_Http
     * @access  protected
     */
    protected $_thumbnailPicture;


    /**
     * Constructs a new object from DOM Element.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);

        $result = $xpath->query('./firstname/text()', $dom);
        if ($result->length == 1) $this->setFirstName($result->item(0)->data);
        
        $result = $xpath->query('./lastname/text()', $dom);
        if ($result->length == 1) $this->setLastName($result->item(0)->data);
        
        $result = $xpath->query('./username/text()', $dom);
        if ($result->length == 1) $this->setUsername($result->item(0)->data);
        
        $result = $xpath->query('./description/text()', $dom);
        if ($result->length == 1) $this->setDescription($result->item(0)->data);
        
        $result = $xpath->query('./bio/text()', $dom);
        if ($result->length == 1) $this->setBio($result->item(0)->data);

        $result = $xpath->query('./thumbnailpicture/text()', $dom);
        if ($result->length == 1) $this->setThumbnailPicture($result->item(0)->data);
    }
    

    /**
     * Returns Author first name.
     * 
     * @return  string  Author first name
     */
    public function getFirstName() {
        return $this->_firstName;
    }

    /**
     * Returns Author last name.
     * 
     * @return  string  Author last name
     */
    public function getLastName() {
        return $this->_lastName;
    }

    /**
     * Returns Technorati account username.
     * 
     * @return  string  Technorati account username
     */
    public function getUsername() {
        return $this->_username;
    }

    /**
     * Returns Technorati account description.
     * 
     * @return  string  Technorati account description
     */
    public function getDescription() {
        return $this->_description;
    }

    /**
     * Returns Technorati account biography.
     * 
     * @return  string  Technorati account biography
     */
    public function getBio() {
        return $this->_bio;
    }

    /**
     * Returns Technorati account thumbnail picture.
     * 
     * @return  null|Zend_Uri_Http  Technorati account thumbnail picture
     */
    public function getThumbnailPicture() {
        return $this->_thumbnailPicture;
    }


    /**
     * Sets author first name.
     * 
     * @param   string $input   first Name input value 
     * @return  Zend_Service_Technorati_Author  $this instance
     */
    public function setFirstName($input) {
        $this->_firstName = (string) $input;
        return $this;
    }

    /**
     * Sets author last name.
     * 
     * @param   string $input   last Name input value 
     * @return  Zend_Service_Technorati_Author  $this instance
     */
    public function setLastName($input) {
        $this->_lastName = (string) $input;
        return $this;
    }

    /**
     * Sets Technorati account username.
     * 
     * @param   string $input   username input value 
     * @return  Zend_Service_Technorati_Author  $this instance
     */
    public function setUsername($input) {
        $this->_username = (string) $input;
        return $this;
    }

    /**
     * Sets Technorati account biography.
     * 
     * @param   string $input   biography input value
     * @return  Zend_Service_Technorati_Author  $this instance
     */
    public function setBio($input) {
        $this->_bio = (string) $input;
        return $this;
    }

    /**
     * Sets Technorati account description.
     * 
     * @param   string $input   description input value
     * @return  Zend_Service_Technorati_Author  $this instance
     */
    public function setDescription($input) {
        $this->_description = (string) $input;
        return $this;
    }

    /**
     * Sets Technorati account thumbnail picture.
     * 
     * @param   string|Zend_Uri_Http $input thumbnail picture URI
     * @return  Zend_Service_Technorati_Author  $this instance
     * @throws  Zend_Service_Technorati_Exception if $input is an invalid URI
     *          (via Zend_Service_Technorati_Utils::normalizeUriHttp)
     */
    public function setThumbnailPicture($input) {
        $this->_thumbnailPicture = Zend_Service_Technorati_Utils::normalizeUriHttp($input);
        return $this;
    }

}
PKpG['�no))#Service/Technorati/SearchResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SearchResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_Result 
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * Represents a single Technorati Search query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_SearchResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_SearchResult extends Zend_Service_Technorati_Result
{
    /**
     * Technorati weblog object corresponding to queried keyword.
     * 
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_weblog;

    /**
     * The title of the entry.
     * 
     * @var     string
     * @access  protected
     */
    protected $_title;
    
    /**
     * The blurb from entry with search term highlighted.
     * 
     * @var     string
     * @access  protected
     */
    protected $_excerpt;

    /**
     * The datetime the entry was created.
     * 
     * @var     Zend_Date
     * @access  protected
     */
    protected $_created;

    /**
     * The permalink of the blog entry.
     * 
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_permalink;
    

    /**
     * Constructs a new object object from DOM Element.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_fields = array( '_permalink'    => 'permalink',
                                '_excerpt'      => 'excerpt',
                                '_created'      => 'created',
                                '_title'        => 'title');
        parent::__construct($dom);

        // weblog object field
        $this->_parseWeblog();

        // filter fields
        $this->_permalink = Zend_Service_Technorati_Utils::normalizeUriHttp($this->_permalink);
        $this->_created = Zend_Service_Technorati_Utils::normalizeDate($this->_created);
    }

    /**
     * Returns the weblog object that links queried URL.
     * 
     * @return  Zend_Service_Technorati_Weblog
     */
    public function getWeblog() {
        return $this->_weblog;
    }
    
    /**
     * Returns the title of the entry.
     * 
     * @return  string
     */
    public function getTitle() {
        return $this->_title;
    }
    
    /**
     * Returns the blurb from entry with search term highlighted.
     * 
     * @return  string
     */
    public function getExcerpt() {
        return $this->_excerpt;
    }
        
    /**
     * Returns the datetime the entry was created.
     * 
     * @return  Zend_Date
     */
    public function getCreated() {
        return $this->_created;
    }
        
    /**
     * Returns the permalink of the blog entry.
     * 
     * @return  Zend_Uri_Http
     */
    public function getPermalink() {
        return $this->_permalink;
    }
    
}
PKpG[y�b�0�0Service/Technorati/Weblog.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Weblog.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Technorati_Author
 */
require_once 'Zend/Service/Technorati/Author.php';

/**
 * @see Zend_Service_Technorati_Utils
 */
require_once 'Zend/Service/Technorati/Utils.php';


/**
 * Represents a Weblog object successful recognized by Technorati.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_Weblog
{
    /**
     * Blog name as written in the feed.
     *
     * @var     string
     * @access  protected
     */
    protected $_name;

    /**
     * Base blog URL.
     *
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_url;

    /**
     * RSS feed URL, if any.
     *
     * @var     null|Zend_Uri_Http
     * @access  protected
     */
    protected $_rssUrl;

    /**
     * Atom feed URL, if any.
     *
     * @var     null|Zend_Uri_Http
     * @access  protected
     */
    protected $_atomUrl;

    /**
     * Number of unique blogs linking this blog.
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundBlogs;

    /**
     * Number of incoming links to this blog.
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundLinks;

    /**
     * Last blog update UNIX timestamp.
     *
     * @var     null|Zend_Date
     * @access  protected
     */
    protected $_lastUpdate;

    /**
     * Technorati rank value for this weblog.
     * 
     * Note. This property has no official documentation.
     *
     * @var     integer
     * @access  protected
     */
    protected $_rank;
    
    /**
     * Blog latitude coordinate.
     * 
     * Note. This property has no official documentation.
     *
     * @var     float
     * @access  protected
     */
    protected $_lat;

    /**
     * Blog longitude coordinate.
     * 
     * Note. This property has no official documentation.
     *
     * @var     float
     * @access  protected
     */
    protected $_lon;

    /**
     * Whether the author who claimed this weblog has a photo.
     * 
     * Note. This property has no official documentation.
     *
     * @var     bool
     * @access  protected
     * @see     Zend_Service_Technorati_Author::$thumbnailPicture
     */
    protected $_hasPhoto = false;

    /**
     * An array of Zend_Service_Technorati_Author who claimed this blog
     *
     * @var     array
     * @access  protected
     */
    protected $_authors = array();


    /**
     * Constructs a new object from DOM Element.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $xpath = new DOMXPath($dom->ownerDocument);

        $result = $xpath->query('./name/text()', $dom);
        if ($result->length == 1) $this->setName($result->item(0)->data);

        $result = $xpath->query('./url/text()', $dom);
        if ($result->length == 1) $this->setUrl($result->item(0)->data);
        
        $result = $xpath->query('./inboundblogs/text()', $dom);
        if ($result->length == 1) $this->setInboundBlogs($result->item(0)->data);
        
        $result = $xpath->query('./inboundlinks/text()', $dom);
        if ($result->length == 1) $this->setInboundLinks($result->item(0)->data);
        
        $result = $xpath->query('./lastupdate/text()', $dom);
        if ($result->length == 1) $this->setLastUpdate($result->item(0)->data);

        /* The following elements need more attention */

        $result = $xpath->query('./rssurl/text()', $dom);
        if ($result->length == 1) $this->setRssUrl($result->item(0)->data);
        
        $result = $xpath->query('./atomurl/text()', $dom);
        if ($result->length == 1) $this->setAtomUrl($result->item(0)->data);
                            
        $result = $xpath->query('./author', $dom);
        if ($result->length >= 1) {
            foreach ($result as $author) {
                $this->_authors[] = new Zend_Service_Technorati_Author($author);
            }
        }

        /**
         * The following are optional elements
         * 
         * I can't find any official documentation about the following properties
         * however they are included in response DTD and/or test responses.
         */
        
        $result = $xpath->query('./rank/text()', $dom);
        if ($result->length == 1) $this->setRank($result->item(0)->data);

        $result = $xpath->query('./lat/text()', $dom);
        if ($result->length == 1) $this->setLat($result->item(0)->data);

        $result = $xpath->query('./lon/text()', $dom);
        if ($result->length == 1) $this->setLon($result->item(0)->data);

        $result = $xpath->query('./hasphoto/text()', $dom);
        if ($result->length == 1) $this->setHasPhoto($result->item(0)->data);
    }
    
    
    /**
     * Returns weblog name.
     * 
     * @return  string  Weblog name
     */
    public function getName() 
    {
        return $this->_name;
    }
    
    /**
     * Returns weblog URL.
     * 
     * @return  null|Zend_Uri_Http object representing weblog base URL
     */
    public function getUrl() 
    {
        return $this->_url;
    }
    
    /**
     * Returns number of unique blogs linking this blog.
     * 
     * @return  integer the number of inbound blogs
     */
    public function getInboundBlogs() 
    {
        return $this->_inboundBlogs;
    }
    
    /**
     * Returns number of incoming links to this blog.
     * 
     * @return  integer the number of inbound links
     */
    public function getInboundLinks() 
    {
        return $this->_inboundLinks;
    }
    
    /**
     * Returns weblog Rss URL.
     * 
     * @return  null|Zend_Uri_Http object representing the URL
     *          of the RSS feed for given blog
     */
    public function getRssUrl() 
    {
        return $this->_rssUrl;
    }
    
    /**
     * Returns weblog Atom URL.
     * 
     * @return  null|Zend_Uri_Http object representing the URL
     *          of the Atom feed for given blog
     */
    public function getAtomUrl() 
    {
        return $this->_atomUrl;
    }
    
    /**
     * Returns UNIX timestamp of the last weblog update.
     * 
     * @return  integer UNIX timestamp of the last weblog update
     */
    public function getLastUpdate() 
    {
        return $this->_lastUpdate;
    }
    
    /**
     * Returns weblog rank value.
     * 
     * Note. This property is not documented.
     * 
     * @return  integer weblog rank value
     */
    public function getRank() 
    {
        return $this->_rank;
    }
        
    /**
     * Returns weblog latitude coordinate.
     * 
     * Note. This property is not documented.
     * 
     * @return  float   weblog latitude coordinate
     */
    public function getLat() {
        return $this->_lat;
    }
        
    /**
     * Returns weblog longitude coordinate.
     * 
     * Note. This property is not documented.
     * 
     * @return  float   weblog longitude coordinate
     */
    public function getLon() 
    {
        return $this->_lon;
    }
    
    /**
     * Returns whether the author who claimed this weblog has a photo.
     * 
     * Note. This property is not documented.
     * 
     * @return  bool    TRUE if the author who claimed this weblog has a photo,
     *                  FALSE otherwise.
     */
    public function hasPhoto() 
    {
        return (bool) $this->_hasPhoto;
    }

    /**
     * Returns the array of weblog authors.
     * 
     * @return  array of Zend_Service_Technorati_Author authors
     */
    public function getAuthors() 
    {
        return (array) $this->_authors;
    }


    /**
     * Sets weblog name.
     * 
     * @param   string $name
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setName($name) 
    {
        $this->_name = (string) $name;
        return $this;
    }

    /**
     * Sets weblog URL.
     * 
     * @param   string|Zend_Uri_Http $url
     * @return  void
     * @throws  Zend_Service_Technorati_Exception if $input is an invalid URI
     *          (via Zend_Service_Technorati_Utils::normalizeUriHttp)
     */
    public function setUrl($url) 
    {
        $this->_url = Zend_Service_Technorati_Utils::normalizeUriHttp($url);
        return $this;
    }
    
    /**
     * Sets number of inbound blogs.
     * 
     * @param   integer $number
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setInboundBlogs($number) 
    {
        $this->_inboundBlogs = (int) $number;
        return $this;
    }
    
    /**
     * Sets number of Iinbound links.
     * 
     * @param   integer $number
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setInboundLinks($number) 
    {
        $this->_inboundLinks = (int) $number;
        return $this;
    }

    /**
     * Sets weblog Rss URL.
     * 
     * @param   string|Zend_Uri_Http $url
     * @return  Zend_Service_Technorati_Weblog $this instance
     * @throws  Zend_Service_Technorati_Exception if $input is an invalid URI
     *          (via Zend_Service_Technorati_Utils::normalizeUriHttp)
     */
    public function setRssUrl($url) 
    {
        $this->_rssUrl = Zend_Service_Technorati_Utils::normalizeUriHttp($url);
        return $this;
    }

    /**
     * Sets weblog Atom URL.
     * 
     * @param   string|Zend_Uri_Http $url
     * @return  Zend_Service_Technorati_Weblog $this instance
     * @throws  Zend_Service_Technorati_Exception if $input is an invalid URI
     *          (via Zend_Service_Technorati_Utils::normalizeUriHttp)
     */
    public function setAtomUrl($url) 
    {
        $this->_atomUrl = Zend_Service_Technorati_Utils::normalizeUriHttp($url);
        return $this;
    }
    
    /**
     * Sets weblog Last Update timestamp.
     * 
     * $datetime can be any value supported by 
     * Zend_Service_Technorati_Utils::normalizeDate().
     * 
     * @param   mixed $datetime A string representing the last update date time
     *                          in a valid date time format
     * @return  Zend_Service_Technorati_Weblog $this instance
     * @throws  Zend_Service_Technorati_Exception
     */
    public function setLastUpdate($datetime) 
    {
        $this->_lastUpdate = Zend_Service_Technorati_Utils::normalizeDate($datetime);
        return $this;
    }
    
    /**
     * Sets weblog Rank.
     * 
     * @param   integer $rank
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setRank($rank) 
    {
        $this->_rank = (int) $rank;
        return $this;
    }
        
    /**
     * Sets weblog latitude coordinate.
     * 
     * @param   float $coordinate
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setLat($coordinate) 
    {
        $this->_lat = (float) $coordinate;
        return $this;
    }
        
    /**
     * Sets weblog longitude coordinate.
     * 
     * @param   float $coordinate
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setLon($coordinate) 
    {
        $this->_lon = (float) $coordinate;
        return $this;
    }
        
    /**
     * Sets hasPhoto property.
     * 
     * @param   bool $hasPhoto
     * @return  Zend_Service_Technorati_Weblog $this instance
     */
    public function setHasPhoto($hasPhoto) 
    {
        $this->_hasPhoto = (bool) $hasPhoto;
        return $this;
    }
    
}
PKpG[�{L�
�
Service/Technorati/Result.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Result.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Represents a single Technorati Search query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_SearchResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @abstract 
 */
abstract class Zend_Service_Technorati_Result
{
    /**
     * An associative array of 'fieldName' => 'xmlfieldtag'
     *
     * @var     array
     * @access  protected
     */
    protected $_fields;

    /**
     * The ReST fragment for this result object
     *
     * @var     DomElement
     * @access  protected
     */
    protected $_dom;

    /**
     * Object for $this->_dom
     *
     * @var     DOMXpath
     * @access  protected
     */
    protected $_xpath;


    /**
     * Constructs a new object from DOM Element.
     * Properties are automatically fetched from XML
     * according to array of $_fields to be read.
     *
     * @param   DomElement $result  the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_xpath = new DOMXPath($dom->ownerDocument);
        $this->_dom = $dom;
        
        // default fields for all search results
        $fields = array();

        // merge with child's object fields
        $this->_fields = array_merge($this->_fields, $fields);

        // add results to appropriate fields
        foreach($this->_fields as $phpName => $xmlName) {
            $query = "./$xmlName/text()";
            $node = $this->_xpath->query($query, $this->_dom);
            if ($node->length == 1) {
                $this->{$phpName} = (string) $node->item(0)->data;
            }
        }
    }
    
    /**
     * Parses weblog node and sets weblog object.
     * 
     * @return  void
     */
    protected function _parseWeblog()
    {
        // weblog object field
        $result = $this->_xpath->query('./weblog', $this->_dom);
        if ($result->length == 1) {
            /**
             * @see Zend_Service_Technorati_Weblog
             */
            require_once 'Zend/Service/Technorati/Weblog.php';
            $this->_weblog = new Zend_Service_Technorati_Weblog($result->item(0));
        } else {
            $this->_weblog = null;
        }
    }

    /**
     * Returns the document fragment for this object as XML string.
     *
     * @return string   the document fragment for this object
     *                  converted into XML format
     */
    public function getXml()
    {
        return $this->_dom->ownerDocument->saveXML($this->_dom);
    }
}
PKpG[�!��LL+Service/Technorati/DailyCountsResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DailyCountsResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Date
 */
require_once 'Zend/Date.php';

/** 
 * @see Zend_Service_Technorati_ResultSet 
 */
require_once 'Zend/Service/Technorati/ResultSet.php';

/**
 * @see Zend_Service_Technorati_Utils
 */
require_once 'Zend/Service/Technorati/Utils.php';


/**
 * Represents a Technorati Tag query result set.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_DailyCountsResultSet extends Zend_Service_Technorati_ResultSet
{
    /**
     * Technorati search URL for given query.
     *
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_searchUrl;

    /**
     * Number of days for which counts provided.
     * 
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_days;

    /**
     * Parses the search response and retrieve the results for iteration.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        parent::__construct($dom, $options);
        
        // default locale prevent Zend_Date to fail
        // when script is executed via shell
        // Zend_Locale::setDefault('en');

        $result = $this->_xpath->query('/tapi/document/result/days/text()');
        if ($result->length == 1) $this->_days = (int) $result->item(0)->data;

        $result = $this->_xpath->query('/tapi/document/result/searchurl/text()');
        if ($result->length == 1) {
            $this->_searchUrl = Zend_Service_Technorati_Utils::normalizeUriHttp($result->item(0)->data);
        }

        $this->_totalResultsReturned  = (int) $this->_xpath->evaluate("count(/tapi/document/items/item)");
        $this->_totalResultsAvailable = (int) $this->getDays();
    }


    /**
     * Returns the search URL for given query.
     * 
     * @return  Zend_Uri_Http
     */
    public function getSearchUrl() {
        return $this->_searchUrl;
    }

    /**
     * Returns the number of days for which counts provided.
     * 
     * @return  int
     */
    public function getDays() {
        return $this->_days;
    }

    /**
     * Implements Zend_Service_Technorati_ResultSet::current().
     *
     * @return Zend_Service_Technorati_DailyCountsResult current result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Technorati_DailyCountsResult
         */
        require_once 'Zend/Service/Technorati/DailyCountsResult.php';
        return new Zend_Service_Technorati_DailyCountsResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[�d

&Service/Technorati/SearchResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: SearchResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_ResultSet 
 */
require_once 'Zend/Service/Technorati/ResultSet.php';


/**
 * Represents a Technorati Search query result set.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_SearchResultSet extends Zend_Service_Technorati_ResultSet
{
    /**
     * Number of query results.
     *
     * @var     int
     * @access  protected
     */
    protected $_queryCount;

    /**
     * Parses the search response and retrieve the results for iteration.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        parent::__construct($dom, $options);

        $result = $this->_xpath->query('/tapi/document/result/querycount/text()');
        if ($result->length == 1) $this->_queryCount = (int) $result->item(0)->data;
        
        $this->_totalResultsReturned  = (int) $this->_xpath->evaluate("count(/tapi/document/item)");
        $this->_totalResultsAvailable = (int) $this->_queryCount;
    }

    /**
     * Implements Zend_Service_Technorati_ResultSet::current().
     *
     * @return Zend_Service_Technorati_SearchResult current result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Technorati_SearchResult
         */
        require_once 'Zend/Service/Technorati/SearchResult.php';
        return new Zend_Service_Technorati_SearchResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[Kn��	�	!Service/Technorati/TagsResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TagsResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_Result 
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * Represents a single Technorati TopTags or BlogPostTags query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_TagsResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_TagsResult extends Zend_Service_Technorati_Result
{
    /**
     * Name of the tag.
     * 
     * @var     string
     * @access  protected
     */
    protected $_tag;
    
    /**
     * Number of posts containing this tag.
     * 
     * @var     int
     * @access  protected
     */
    protected $_posts;
    

    /**
     * Constructs a new object object from DOM Document.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_fields = array( '_tag'   => 'tag',
                                '_posts' => 'posts');
        parent::__construct($dom);
        
        // filter fields
        $this->_tag   = (string) $this->_tag;
        $this->_posts = (int) $this->_posts;
    }

    /**
     * Returns the tag name.
     * 
     * @return  string
     */
    public function getTag() {
        return $this->_tag;
    }
    
    /**
     * Returns the number of posts.
     * 
     * @return  int
     */
    public function getPosts() {
        return $this->_posts;
    }
}
PKpG[y�#��%Service/Technorati/BlogInfoResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: BlogInfoResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Technorati_Utils
 */
require_once 'Zend/Service/Technorati/Utils.php';


/**
 * Represents a single Technorati BlogInfo query result object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_BlogInfoResult
{
    /**
     * Technorati weblog url, if queried URL is a valid weblog.
     *
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_url;

    /**
     * Technorati weblog, if queried URL is a valid weblog.
     *
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_weblog;

    /**
     * Number of unique blogs linking this blog
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundBlogs;

    /**
     * Number of incoming links to this blog
     *
     * @var     integer
     * @access  protected
     */
    protected $_inboundLinks;
    

    /**
     * Constructs a new object object from DOM Document.
     *
     * @param   DomDocument $dom the ReST fragment for this object
     */
    public function __construct(DomDocument $dom)
    {
        $xpath = new DOMXPath($dom);
        /**
         * @see Zend_Service_Technorati_Weblog
         */
        require_once 'Zend/Service/Technorati/Weblog.php';

        $result = $xpath->query('//result/weblog');
        if ($result->length == 1) {
            $this->_weblog = new Zend_Service_Technorati_Weblog($result->item(0));
        } else {
            // follow the same behavior of blogPostTags 
            // and raise an Exception if the URL is not a valid weblog
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception(
                "Your URL is not a recognized Technorati weblog");
        }
        
        $result = $xpath->query('//result/url/text()');
        if ($result->length == 1) {
            try {
                // fetched URL often doens't include schema 
                // and this issue causes the following line to fail
                $this->_url = Zend_Service_Technorati_Utils::normalizeUriHttp($result->item(0)->data);
            } catch(Zend_Service_Technorati_Exception $e) {
                if ($this->getWeblog() instanceof Zend_Service_Technorati_Weblog) {
                    $this->_url = $this->getWeblog()->getUrl();
                }
            }
        }
        
        $result = $xpath->query('//result/inboundblogs/text()');
        if ($result->length == 1) $this->_inboundBlogs = (int) $result->item(0)->data;
        
        $result = $xpath->query('//result/inboundlinks/text()');
        if ($result->length == 1) $this->_inboundLinks = (int) $result->item(0)->data;
        
    }


    /**
     * Returns the weblog URL.
     * 
     * @return  Zend_Uri_Http
     */
    public function getUrl() {
        return $this->_url;
    }
    
    /**
     * Returns the weblog.
     * 
     * @return  Zend_Service_Technorati_Weblog
     */
    public function getWeblog() {
        return $this->_weblog;
    }
    
    /**
     * Returns number of unique blogs linking this blog.
     * 
     * @return  integer the number of inbound blogs
     */
    public function getInboundBlogs() 
    {
        return (int) $this->_inboundBlogs;
    }
    
    /**
     * Returns number of incoming links to this blog.
     * 
     * @return  integer the number of inbound links
     */
    public function getInboundLinks() 
    {
        return (int) $this->_inboundLinks;
    }
    
}
PKpG[����	�	(Service/Technorati/DailyCountsResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: DailyCountsResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_Result 
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * Represents a single Technorati DailyCounts query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_DailyCountsResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_DailyCountsResult extends Zend_Service_Technorati_Result
{
    /**
     * Date of count.
     * 
     * @var     Zend_Date
     * @access  protected
     */
    protected $_date;
    
    /**
     * Number of posts containing query on given date.
     * 
     * @var     int
     * @access  protected
     */
    protected $_count;
    

    /**
     * Constructs a new object object from DOM Document.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_fields = array( '_date'   => 'date',
                                '_count'  => 'count');
        parent::__construct($dom);
        
        // filter fields
        $this->_date  = new Zend_Date(strtotime($this->_date));
        $this->_count = (int) $this->_count;
    }

    /**
     * Returns the date of count.
     * 
     * @return  Zend_Date
     */
    public function getDate() {
        return $this->_date;
    }
    
    /**
     * Returns the number of posts containing query on given date.
     * 
     * @return  int
     */
    public function getCount() {
        return $this->_count;
    }
}
PKpG[����#Service/Technorati/TagResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TagResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_ResultSet 
 */
require_once 'Zend/Service/Technorati/ResultSet.php';


/**
 * Represents a Technorati Tag query result set.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_TagResultSet extends Zend_Service_Technorati_ResultSet
{
    /**
     * Number of posts that match the tag.
     *
     * @var     int
     * @access  protected
     */
    protected $_postsMatched;

    /**
     * Number of blogs that match the tag.
     *
     * @var     int
     * @access  protected
     */
    protected $_blogsMatched;

    /**
     * Parses the search response and retrieve the results for iteration.
     *
     * @param   DomDocument $dom    the ReST fragment for this object
     * @param   array $options      query options as associative array
     */
    public function __construct(DomDocument $dom, $options = array())
    {
        parent::__construct($dom, $options);

        $result = $this->_xpath->query('/tapi/document/result/postsmatched/text()');
        if ($result->length == 1) $this->_postsMatched = (int) $result->item(0)->data;

        $result = $this->_xpath->query('/tapi/document/result/blogsmatched/text()');
        if ($result->length == 1) $this->_blogsMatched = (int) $result->item(0)->data;

        $this->_totalResultsReturned  = (int) $this->_xpath->evaluate("count(/tapi/document/item)");
        /** @todo Validate the following assertion */
        $this->_totalResultsAvailable = (int) $this->getPostsMatched();
    }


    /**
     * Returns the number of posts that match the tag.
     * 
     * @return  int
     */
    public function getPostsMatched() {
        return $this->_postsMatched;
    }

    /**
     * Returns the number of blogs that match the tag.
     * 
     * @return  int
     */
    public function getBlogsMatched() {
        return $this->_blogsMatched;
    }

    /**
     * Implements Zend_Service_Technorati_ResultSet::current().
     *
     * @return Zend_Service_Technorati_TagResult current result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Technorati_TagResult
         */
        require_once 'Zend/Service/Technorati/TagResult.php';
        return new Zend_Service_Technorati_TagResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[����Service/Technorati/Utils.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Utils.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * Collection of utilities for various Zend_Service_Technorati classes.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_Utils
{
    /**
     * Parses, validates and returns a valid Zend_Uri object
     * from given $input.
     *
     * @param   string|Zend_Uri_Http $input
     * @return  null|Zend_Uri_Http
     * @throws  Zend_Service_Technorati_Exception
     * @static
     */
    public static function normalizeUriHttp($input)
    {
        // allow null as value
        if ($input === null) {
            return null;
        }

        /**
         * @see Zend_Uri
         */
        require_once 'Zend/Uri.php';
        if ($input instanceof Zend_Uri_Http) {
            $uri = $input;
        } else {
            try {
                $uri = Zend_Uri::factory((string) $input);
            }
            // wrap exception under Zend_Service_Technorati_Exception object
            catch (Exception $e) {
                /**
                 * @see Zend_Service_Technorati_Exception
                 */
                require_once 'Zend/Service/Technorati/Exception.php';
                throw new Zend_Service_Technorati_Exception($e->getMessage());
            }
        }

        // allow inly Zend_Uri_Http objects or child classes
        if (!($uri instanceof Zend_Uri_Http)) {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php'; 
            throw new Zend_Service_Technorati_Exception(
                "Invalid URL $uri, only HTTP(S) protocols can be used");
        }
        
        return $uri;
    }
    /**
     * Parses, validates and returns a valid Zend_Date object
     * from given $input.
     * 
     * $input can be either a string, an integer or a Zend_Date object.
     * If $input is string or int, it will be provided to Zend_Date as it is.
     * If $input is a Zend_Date object, the object instance will be returned. 
     *
     * @param   mixed|Zend_Date $input
     * @return  null|Zend_Date
     * @throws  Zend_Service_Technorati_Exception
     * @static
     */
    public static function normalizeDate($input)
    {
        /**
         * @see Zend_Date
         */
        require_once 'Zend/Date.php';
        /**
         * @see Zend_Locale
         */
        require_once 'Zend/Locale.php';
        
        // allow null as value and return valid Zend_Date objects
        if (($input === null) || ($input instanceof Zend_Date)) {
            return $input;
        }
        
        // due to a BC break as of ZF 1.5 it's not safe to use Zend_Date::isDate() here
        // see ZF-2524, ZF-2334
        if (@strtotime($input) !== FALSE) {
            return new Zend_Date($input);
        } else {
            /**
             * @see Zend_Service_Technorati_Exception
             */
            require_once 'Zend/Service/Technorati/Exception.php';
            throw new Zend_Service_Technorati_Exception("'$input' is not a valid Date/Time");
        }
    }
    
    /**
     * @todo public static function xpathQueryAndSet() {}
     */

    /**
     * @todo public static function xpathQueryAndSetIf() {}
     */

    /**
     * @todo public static function xpathQueryAndSetUnless() {}
     */
}
PKpG[E���� Service/Technorati/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Exception.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Exception
 */
require_once 'Zend/Service/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_Exception extends Zend_Service_Exception
{}

PKpG[kM�99#Service/Technorati/CosmosResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: CosmosResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/** 
 * @see Zend_Service_Technorati_Result 
 */
require_once 'Zend/Service/Technorati/Result.php';


/**
 * Represents a single Technorati Cosmos query result object. 
 * It is never returned as a standalone object, 
 * but it always belongs to a valid Zend_Service_Technorati_CosmosResultSet object.
 * 
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Technorati
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Technorati_CosmosResult extends Zend_Service_Technorati_Result
{
    /**
     * Technorati weblog object that links queried URL.
     * 
     * @var     Zend_Service_Technorati_Weblog
     * @access  protected
     */
    protected $_weblog;

    /**
     * The nearest permalink tracked for queried URL.
     * 
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_nearestPermalink;

    /**
     * The excerpt of the blog/page linking queried URL.
     * 
     * @var     string
     * @access  protected
     */
    protected $_excerpt;

    /**
     * The the datetime the link was created.
     * 
     * @var     Zend_Date
     * @access  protected
     */
    protected $_linkCreated;

    /**
     * The URL of the specific link target page
     * 
     * @var     Zend_Uri_Http
     * @access  protected
     */
    protected $_linkUrl;


    /**
     * Constructs a new object object from DOM Element.
     *
     * @param   DomElement $dom the ReST fragment for this object
     */
    public function __construct(DomElement $dom)
    {
        $this->_fields = array( '_nearestPermalink' => 'nearestpermalink',
                                '_excerpt'          => 'excerpt',
                                '_linkCreated'      => 'linkcreated',
                                '_linkUrl'          => 'linkurl');
        parent::__construct($dom);

        // weblog object field
        $this->_parseWeblog();
        
        // filter fields
        $this->_nearestPermalink = Zend_Service_Technorati_Utils::normalizeUriHttp($this->_nearestPermalink);
        $this->_linkUrl = Zend_Service_Technorati_Utils::normalizeUriHttp($this->_linkUrl);
        $this->_linkCreated = Zend_Service_Technorati_Utils::normalizeDate($this->_linkCreated);
    }

    /**
     * Returns the weblog object that links queried URL.
     * 
     * @return  Zend_Service_Technorati_Weblog
     */
    public function getWeblog() {
        return $this->_weblog;
    }

    /**
     * Returns the nearest permalink tracked for queried URL.
     * 
     * @return  Zend_Uri_Http
     */
    public function getNearestPermalink() {
        return $this->_nearestPermalink;
    }

    /**
     * Returns the excerpt of the blog/page linking queried URL.
     * 
     * @return  string
     */
    public function getExcerpt() {
        return $this->_excerpt;
    }
    
    /**
     * Returns the datetime the link was created.
     * 
     * @return  Zend_Date
     */
    public function getLinkCreated() {
        return $this->_linkCreated;
    }
    
    /**
     * If queried URL is a valid blog,
     * returns the URL of the specific link target page.
     * 
     * @return  Zend_Uri_Http
     */
    public function getLinkUrl() {
        return $this->_linkUrl;
    }
    
}
PKpG[��Ǭ�Service/Simpy/Watchlist.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Watchlist.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_WatchlistFilterSet
 */
require_once 'Zend/Service/Simpy/WatchlistFilterSet.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_Watchlist
{
    /**
     * Identifier for the watchlist
     *
     * @var int
     */
    protected $_id;

    /**
     * Name of the watchlist
     *
     * @var string
     */
    protected $_name;

    /**
     * Description of the watchlist
     *
     * @var string
     */
    protected $_description;

    /**
     * Timestamp for when the watchlist was added
     *
     * @var string
     */
    protected $_addDate;

    /**
     * Number of new links in the watchlist
     *
     * @var int
     */
    protected $_newLinks;

    /**
     * List of usernames for users included in the watchlist
     *
     * @var array
     */
    protected $_users;

    /**
     * List of filters included in the watchlist
     *
     * @var Zend_Service_Simpy_WatchlistFilterSet
     */
    protected $_filters;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMNode $node Individual <watchlist> node from a parsed
     *                       response from a GetWatchlists or GetWatchlist
     *                       operation
     * @return void
     */
    public function __construct($node)
    {
        $map =& $node->attributes;

        $this->_id = $map->getNamedItem('id')->nodeValue;
        $this->_name = $map->getNamedItem('name')->nodeValue;
        $this->_description = $map->getNamedItem('description')->nodeValue;
        $this->_addDate = $map->getNamedItem('addDate')->nodeValue;
        $this->_newLinks = $map->getNamedItem('newLinks')->nodeValue;

        $this->_users = array();
        $this->_filters = new Zend_Service_Simpy_WatchlistFilterSet();

        $childNode = $node->firstChild;
        while (is_null($childNode) == false) {
            if ($childNode->nodeName == 'user') {
                $this->_users[] = $childNode->attributes->getNamedItem('username')->nodeValue;
            } elseif ($childNode->nodeName == 'filter') {
                $filter = new Zend_Service_Simpy_WatchlistFilter($childNode);
                $this->_filters->add($filter);
            }
            $childNode = $childNode->nextSibling;
        }
    }

    /**
     * Returns the identifier for the watchlist
     *
     * @return int
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Returns the name of the watchlist
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Returns the description of the watchlist
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }

    /**
     * Returns a timestamp for when the watchlist was added
     *
     * @return string
     */
    public function getAddDate()
    {
        return $this->_addDate;
    }

    /**
     * Returns the number of new links in the watchlist
     *
     * @return int
     */
    public function getNewLinks()
    {
        return $this->_newLinks;
    }

    /**
     * Returns a list of usernames for users included in the watchlist
     *
     * @return array
     */
    public function getUsers()
    {
        return $this->_users;
    }

    /**
     * Returns a list of filters included in the watchlist
     *
     * @return Zend_Service_Simpy_WatchlistFilterSet
     */
    public function getFilters()
    {
        return $this->_filters;
    }
}
PKpG[ڷ���Service/Simpy/LinkQuery.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: LinkQuery.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_LinkQuery
{
    /**
     * Query string for the query
     *
     * @var string
     */
    protected $_query = null;

    /**
     * Maximum number of search results to return
     *
     * @var int
     */
    protected $_limit = null;

    /**
     * Date on which search results must have been added
     *
     * @var string
     */
    protected $_date = null;

    /**
     * Date after which search results must have been added
     *
     * @var string
     */
    protected $_afterDate = null;

    /**
     * Date before which search results must have been added
     *
     * @var string
     */
    protected $_beforeDate = null;

    /**
     * Sets the query string for the query
     *
     * @param  string $query Query string in valid Simpy syntax
     * @see    http://www.simpy.com/faq#searchSyntax
     * @see    http://www.simpy.com/faq#searchFieldsLinks
     * @return Zend_Service_Simpy_LinkQuery Provides a fluent interface
     */
    public function setQueryString($query)
    {
        $this->_query = $query;

        return $this;
    }

    /**
     * Returns the query string set for this query
     *
     * @return string
     */
    public function getQueryString()
    {
        return $this->_query;
    }

    /**
     * Sets the maximum number of search results to return
     *
     * @param  int $limit
     * @return Zend_Service_Simpy_LinkQuery Provides a fluent interface
     */
    public function setLimit($limit)
    {
        $this->_limit = intval($limit);

        if ($this->_limit == 0) {
            $this->_limit = null;
        }

        return $this;
    }

    /**
     * Returns the maximum number of search results to return
     *
     * @return int
     */
    public function getLimit()
    {
        return $this->_limit;
    }

    /**
     * Sets the date on which search results must have been added, which will
     * override any existing values set using setAfterDate() and setBeforeDate()
     *
     * @param  string $date
     * @see    setAfterDate()
     * @see    setBeforeDate()
     * @return Zend_Service_Simpy_LinkQuery Provides a fluent interface
     */
    public function setDate($date)
    {
        $this->_date = $date;
        $this->_afterDate = null;
        $this->_beforeDate = null;

        return $this;
    }

    /**
     * Returns the date on which search results must have been added
     *
     * @return string
     */
    public function getDate()
    {
        return $this->_date;
    }

    /**
     * Sets the date after which search results must have been added, which will
     * override any existing values set using setDate()
     *
     * @param  string $date
     * @see    setDate()
     * @return Zend_Service_Simpy_LinkQuery Provides a fluent interface
     */
    public function setAfterDate($date)
    {
        $this->_afterDate = $date;
        $this->_date = null;

        return $this;
    }

    /**
     * Returns the date after which search results must have been added
     *
     * @return string
     */
    public function getAfterDate()
    {
        return $this->_afterDate;
    }

    /**
     * Sets the date before which search results must have been added, which
     * will override any existing values set using setDate()
     *
     * @param  string $date
     * @see    setDate()
     * @return Zend_Service_Simpy_LinkQuery Provides a fluent interface
     */
    public function setBeforeDate($date)
    {
        $this->_beforeDate = $date;
        $this->_date = null;

        return $this;
    }

    /**
     * Returns the date before which search results must have been added
     *
     * @return string
     */
    public function getBeforeDate()
    {
        return $this->_beforeDate;
    }
}
PKpG[���++Service/Simpy/Link.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Link.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_Link
{
    /**
     * Private access type
     *
     * @var string
     */
    const ACCESSTYPE_PRIVATE = '0';

    /**
     * Public access type
     *
     * @var string
     */
    const ACCESSTYPE_PUBLIC  = '1';

    /**
     * Access type assigned to the link
     *
     * @var string
     */
    protected $_accessType;

    /**
     * URL of the link
     *
     * @var string
     */
    protected $_url;

    /**
     * Date of the last modification made to the link
     *
     * @var string
     */
    protected $_modDate;

    /**
     * Date the link was added
     *
     * @var string
     */
    protected $_addDate;

    /**
     * Title assigned to the link
     *
     * @var string
     */
    protected $_title;

    /**
     * Nickname assigned to the link
     *
     * @var string
     */
    protected $_nickname;

    /**
     * Tags assigned to the link
     *
     * @var array
     */
    protected $_tags;

    /**
     * Note assigned to the link
     *
     * @var string
     */
    protected $_note;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMNode $node Individual <link> node from a parsed response from
     *                       a GetLinks operation
     * @return void
     */
    public function __construct($node)
    {
        $this->_accessType = $node->attributes->getNamedItem('accessType')->nodeValue;

        $doc = new DOMDocument();
        $doc->appendChild($doc->importNode($node, true));
        $xpath = new DOMXPath($doc);

        $this->_url = $xpath->evaluate('/link/url')->item(0)->nodeValue;
        $this->_modDate = $xpath->evaluate('/link/modDate')->item(0)->nodeValue;
        $this->_addDate = $xpath->evaluate('/link/addDate')->item(0)->nodeValue;
        $this->_title = $xpath->evaluate('/link/title')->item(0)->nodeValue;
        $this->_nickname = $xpath->evaluate('/link/nickname')->item(0)->nodeValue;
        $this->_note = $xpath->evaluate('/link/note')->item(0)->nodeValue;

        $list = $xpath->query('/link/tags/tag');
        $this->_tags = array();

        for ($x = 0; $x < $list->length; $x++) {
            $this->_tags[$x] = $list->item($x)->nodeValue;
        }
    }

    /**
     * Returns the access type assigned to the link
     *
     * @see ACCESSTYPE_PRIVATE
     * @see ACCESSTYPE_PUBLIC
     * @return string
     */
    public function getAccessType()
    {
        return $this->_accessType;
    }

    /**
     * Returns the URL of the link
     *
     * @return string
     */
    public function getUrl()
    {
        return $this->_url;
    }

    /**
     * Returns the date of the last modification made to the link
     *
     * @return string
     */
    public function getModDate()
    {
        return $this->_modDate;
    }

    /**
     * Returns the date the link was added
     *
     * @return string
     */
    public function getAddDate()
    {
        return $this->_addDate;
    }

    /**
     * Returns the title assigned to the link
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * Returns the nickname assigned to the link
     *
     * @return string
     */
    public function getNickname()
    {
        return $this->_nickname;
    }

    /**
     * Returns the tags assigned to the link
     *
     * @return array
     */
    public function getTags()
    {
        return $this->_tags;
    }

    /**
     * Returns the note assigned to the link
     *
     * @return string
     */
    public function getNote()
    {
        return $this->_note;
    }
}
PKpG[u��/��Service/Simpy/WatchlistSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: WatchlistSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_Watchlist
 */
require_once 'Zend/Service/Simpy/Watchlist.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_WatchlistSet implements IteratorAggregate
{
    /**
     * List of watchlists
     *
     * @var array of Zend_Service_Simpy_Watchlist objects
     */
    protected $_watchlists = array();

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMDocument $doc Parsed response from a GetWatchlists operation
     * @return void
     */
    public function __construct(DOMDocument $doc)
    {
        $xpath = new DOMXPath($doc);
        $list = $xpath->query('//watchlists/watchlist');

        for ($x = 0; $x < $list->length; $x++) {
            $this->_watchlists[$x] = new Zend_Service_Simpy_Watchlist($list->item($x));
        }
    }

    /**
     * Returns an iterator for the watchlist set
     *
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_watchlists);
    }

    /**
     * Returns the number of watchlists in the set
     *
     * @return int
     */
    public function getLength()
    {
        return count($this->_watchlists);
    }
}
PKpG[�	��XXService/Simpy/LinkSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: LinkSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_Link
 */
require_once 'Zend/Service/Simpy/Link.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_LinkSet implements IteratorAggregate
{
    /**
     * List of links
     *
     * @var array of Zend_Service_Simpy_Link objects
     */
    protected $_links;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMDocument $doc Parsed response from a GetLinks operation
     * @return void
     */
    public function __construct(DOMDocument $doc)
    {
        $xpath = new DOMXPath($doc);
        $list = $xpath->query('//links/link');
        $this->_links = array();

        for ($x = 0; $x < $list->length; $x++) {
            $this->_links[$x] = new Zend_Service_Simpy_Link($list->item($x));
        }
    }

    /**
     * Returns an iterator for the link set
     *
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_links);
    }

    /**
     * Returns the number of links in the set
     *
     * @return int
     */
    public function getLength()
    {
        return count($this->_links);
    }
}
PKpG[���**Service/Simpy/Note.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Note.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_Note
{
    /**
     * Private access type
     *
     * @var string
     */
    const ACCESSTYPE_PRIVATE = 'private';

    /**
     * Public access type
     *
     * @var string
     */
    const ACCESSTYPE_PUBLIC  = 'public';

    /**
     * Access type assigned to the note
     *
     * @var string
     */
    protected $_accessType;

    /**
     * ID of the note
     *
     * @var int
     */
    protected $_id;

    /**
     * URI of the note
     *
     * @var string
     */
    protected $_uri;

    /**
     * Date of the last modification made to the note
     *
     * @var string
     */
    protected $_modDate;

    /**
     * Date the note was added
     *
     * @var string
     */
    protected $_addDate;

    /**
     * Title of to the note
     *
     * @var string
     */
    protected $_title;

    /**
     * Tags assigned to the note
     *
     * @var array
     */
    protected $_tags;

    /**
     * Description of the note
     *
     * @var string
     */
    protected $_description;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMNode $node Individual <link> node from a parsed response from
     *                       a GetLinks operation
     * @return void
     */
    public function __construct($node)
    {
        $this->_accessType = $node->attributes->getNamedItem('accessType')->nodeValue;

        $doc = new DOMDocument();
        $doc->appendChild($doc->importNode($node, true));
        $xpath = new DOMXPath($doc);

        $this->_uri = $xpath->evaluate('/note/uri')->item(0)->nodeValue;
        $this->_id = substr($this->_uri, strrpos($this->_uri, '=') + 1);
        $this->_modDate = trim($xpath->evaluate('/note/modDate')->item(0)->nodeValue);
        $this->_addDate = trim($xpath->evaluate('/note/addDate')->item(0)->nodeValue);
        $this->_title = $xpath->evaluate('/note/title')->item(0)->nodeValue;
        $this->_description = $xpath->evaluate('/note/description')->item(0)->nodeValue;

        $list = $xpath->query('/note/tags/tag');
        $this->_tags = array();

        for ($x = 0; $x < $list->length; $x++) {
            $this->_tags[$x] = $list->item($x)->nodeValue;
        }
    }

    /**
     * Returns the access type assigned to the note
     *
     * @see    ACCESSTYPE_PRIVATE
     * @see    ACCESSTYPE_PUBLIC
     * @return string
     */
    public function getAccessType()
    {
        return $this->_accessType;
    }

    /**
     * Returns the ID of the note
     *
     * @return int
     */
    public function getId()
    {
        return $this->_id;
    }

    /**
     * Returns the URI of the note
     *
     * @return string
     */
    public function getUri()
    {
        return $this->_uri;
    }

    /**
     * Returns the date of the last modification made to the note
     *
     * @return string
     */
    public function getModDate()
    {
        return $this->_modDate;
    }

    /**
     * Returns the date the note was added
     *
     * @return string
     */
    public function getAddDate()
    {
        return $this->_addDate;
    }

    /**
     * Returns the title assigned to the note
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->_title;
    }

    /**
     * Returns the tags assigned to the note
     *
     * @return array
     */
    public function getTags()
    {
        return $this->_tags;
    }

    /**
     * Returns the description assigned to the note
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->_description;
    }
}
PKpG[�~��$Service/Simpy/WatchlistFilterSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: WatchlistFilterSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_WatchlistFilter
 */
require_once 'Zend/Service/Simpy/WatchlistFilter.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_WatchlistFilterSet implements IteratorAggregate
{
    /**
     * List of filters in the set
     *
     * @var array of Zend_Service_Simpy_WatchlistFilter objects
     */
    protected $_filters = array();

    /**
     * Adds a filter to the set
     *
     * @param  Zend_Service_Simpy_WatchlistFilter $filter Filter to be added
     * @return void
     */
    public function add(Zend_Service_Simpy_WatchlistFilter $filter)
    {
        $this->_filters[] = $filter;
    }

    /**
     * Returns an iterator for the watchlist filter set
     *
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_filters);
    }

    /**
     * Returns the number of filters in the set
     *
     * @return int
     */
    public function getLength()
    {
        return count($this->_filters);
    }
}
PKpG[C�g`��Service/Simpy/Tag.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Tag.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_Tag
{
    /**
     * Name of the tag
     *
     * @var string
     */
    protected $_tag;

    /**
     * Number of links with the tag
     *
     * @var int
     */
    protected $_count;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMNode $node Individual <tag> node from a parsed response from
     *                       a GetTags operation
     * @return void
     */
    public function __construct($node)
    {
        $map =& $node->attributes;
        $this->_tag = $map->getNamedItem('name')->nodeValue;
        $this->_count = $map->getNamedItem('count')->nodeValue;
    }

    /**
     * Returns the name of the tag
     *
     * @return string
     */
    public function getTag()
    {
        return $this->_tag;
    }

    /**
     * Returns the number of links with the tag
     *
     * @return int
     */
    public function getCount()
    {
        return $this->_count;
    }
}
PKpG[w����!Service/Simpy/WatchlistFilter.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: WatchlistFilter.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_WatchlistFilter
{
    /**
     * Name of the filter
     *
     * @var string
     */
    protected $_name;

    /**
     * Query for the filter
     *
     * @var string
     */
    protected $_query;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMNode $node Individual <filter> node from a parsed response from
     *                       a GetWatchlists or GetWatchlist operation
     * @return void
     */
    public function __construct($node)
    {
        $map =& $node->attributes;
        $this->_name = $map->getNamedItem('name')->nodeValue;
        $this->_query = $map->getNamedItem('query')->nodeValue;
    }

    /**
     * Returns the name of the filter
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Returns the query for the filter
     *
     * @return string
     */
    public function getQuery()
    {
        return $this->_query;
    }
}
PKpG[�rWXXService/Simpy/NoteSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NoteSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_Note
 */
require_once 'Zend/Service/Simpy/Note.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_NoteSet implements IteratorAggregate
{
    /**
     * List of notes
     *
     * @var array of Zend_Service_Simpy_Note objects
     */
    protected $_notes;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMDocument $doc Parsed response from a GetNotes operation
     * @return void
     */
    public function __construct(DOMDocument $doc)
    {
        $xpath = new DOMXPath($doc);
        $list = $xpath->query('//notes/note');
        $this->_notes = array();

        for ($x = 0; $x < $list->length; $x++) {
            $this->_notes[$x] = new Zend_Service_Simpy_Note($list->item($x));
        }
    }

    /**
     * Returns an iterator for the note set
     *
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_notes);
    }

    /**
     * Returns the number of notes in the set
     *
     * @return int
     */
    public function getLength()
    {
        return count($this->_notes);
    }
}
PKpG[l6L�GGService/Simpy/TagSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: TagSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Simpy_Tag
 */
require_once 'Zend/Service/Simpy/Tag.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Simpy
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Simpy_TagSet implements IteratorAggregate
{
    /**
     * List of tags
     *
     * @var array of Zend_Service_Simpy_Tag objects
     */
    protected $_tags;

    /**
     * Constructor to initialize the object with data
     *
     * @param  DOMDocument $doc Parsed response from a GetTags operation
     * @return void
     */
    public function __construct(DOMDocument $doc)
    {
        $xpath = new DOMXPath($doc);
        $list = $xpath->query('//tags/tag');
        $this->_tags = array();

        for ($x = 0; $x < $list->length; $x++) {
            $this->_tags[$x] = new Zend_Service_Simpy_Tag($list->item($x));
        }
    }

    /**
     * Returns an iterator for the tag set
     *
     * @return ArrayIterator
     */
    public function getIterator()
    {
        return new ArrayIterator($this->_tags);
    }

    /**
     * Returns the number of tags in the set
     *
     * @return int
     */
    public function getLength()
    {
        return count($this->_tags);
    }
}
PKpG[�C�vkRkRService/Twitter.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/**
 * @see Zend_Rest_Client
 */
require_once 'Zend/Rest/Client.php';

/**
 * @see Zend_Rest_Client_Result
 */
require_once 'Zend/Rest/Client/Result.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Twitter extends Zend_Rest_Client
{
    /**
     * Whether or not authorization has been initialized for the current user.
     * @var bool
     */
    protected $_authInitialized = false;

    /**
     * @var Zend_Http_CookieJar
     */
    protected $_cookieJar;

    /**
     * Date format for 'since' strings
     * @var string
     */
    protected $_dateFormat = 'D, d M Y H:i:s e';

    /**
     * Username
     * @var string
     */
    protected $_username;

    /**
     * Password
     * @var string
     */
    protected $_password;

    /**
     * Current method type (for method proxying)
     * @var string
     */
    protected $_methodType;

    /**
     * Types of API methods
     * @var array
     */
    protected $_methodTypes = array(
        'status',
        'user',
        'directMessage',
        'friendship',
        'account',
        'favorite'
    );

    /**
     * Constructor
     *
     * @param  string $username
     * @param  string $password
     * @return void
     */
    public function __construct($username, $password)
    {
        $this->setUsername($username);
        $this->setPassword($password);
        $this->setUri('http://twitter.com');

        $client = self::getHttpClient();
        $client->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
    }

    /**
     * Retrieve username
     *
     * @return string
     */
    public function getUsername()
    {
        return $this->_username;
    }

    /**
     * Set username
     *
     * @param  string $value
     * @return Zend_Service_Twitter
     */
    public function setUsername($value)
    {
        $this->_username = $value;
        $this->_authInitialized = false;
        return $this;
    }

    /**
     * Retrieve password
     *
     * @return string
     */
    public function getPassword()
    {
        return $this->_password;
    }

    /**
     * Set password
     *
     * @param  string $value
     * @return Zend_Service_Twitter
     */
    public function setPassword($value)
    {
        $this->_password = $value;
        $this->_authInitialized = false;
        return $this;
    }

    /**
     * Proxy service methods
     *
     * @param  string $type
     * @return Zend_Service_Twitter
     * @throws Zend_Service_Twitter_Exception if method is not in method types list
     */
    public function __get($type)
    {
        if (!in_array($type, $this->_methodTypes)) {
            include_once 'Zend/Service/Twitter/Exception.php';
            throw new Zend_Service_Twitter_Exception('Invalid method type "' . $type . '"');
        }

        $this->_methodType = $type;
        return $this;
    }

    /**
     * Method overloading
     *
     * @param  string $method
     * @param  array $params
     * @return mixed
     * @throws Zend_Service_Twitter_Exception if unable to find method
     */
    public function __call($method, $params)
    {
        if (empty($this->_methodType)) {
            include_once 'Zend/Service/Twitter/Exception.php';
            throw new Zend_Service_Twitter_Exception('Invalid method "' . $method . '"');
        }

        $test = $this->_methodType . ucfirst($method);
        if (!method_exists($this, $test)) {
            include_once 'Zend/Service/Twitter/Exception.php';
            throw new Zend_Service_Twitter_Exception('Invalid method "' . $test . '"');
        }

        return call_user_func_array(array($this, $test), $params);
    }

    /**
     * Initialize HTTP authentication
     *
     * @return void
     */
    protected function _init()
    {
        $client = self::getHttpClient();

        $client->resetParameters();

        if (null == $this->_cookieJar) {
            $client->setCookieJar();
            $this->_cookieJar = $client->getCookieJar();
        } else {
            $client->setCookieJar($this->_cookieJar);
        }

        if (!$this->_authInitialized) {
            $client->setAuth($this->getUsername(), $this->getPassword());
            $this->_authInitialized = true;
        }
    }

    /**
     * Set date header
     *
     * @param  int|string $value
     * @return void
     */
    protected function _setDate($value)
    {
        if (is_int($value)) {
            $date = date($this->_dateFormat, $value);
        } else {
            $date = date($this->_dateFormat, strtotime($value));
        }
        self::getHttpClient()->setHeaders('If-Modified-Since', $date);
    }

    /**
     * Public Timeline status
     *
     * @return Zend_Rest_Client_Result
     */
    public function statusPublicTimeline()
    {
        $this->_init();
        $path = '/statuses/public_timeline.xml';
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Friend Timeline Status
     *
     * $params may include one or more of the following keys
     * - id: ID of a friend whose timeline you wish to receive
     * - since: return results only after the date specified
     * - page: return page X of results
     *
     * @param  array $params
     * @return void
     */
    public function statusFriendsTimeline(array $params = array())
    {
        $this->_init();
        $path = '/statuses/friends_timeline';
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'page':
                    $this->page = (int) $value;
                    break;
                default:
                    break;
            }
        }
        $path    .= '.xml';
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * User Timeline status
     *
     * $params may include one or more of the following keys
     * - id: ID of a friend whose timeline you wish to receive
     * - since: return results only after the date specified
     * - page: return page X of results
     * - count: how many statuses to return
     *
     * @return Zend_Rest_Client_Result
     */
    public function statusUserTimeline(array $params = array())
    {
        $this->_init();
        $path = '/statuses/user_timeline';
        $_params = array();
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'id':
                    $path .= '/' . $value;
                    break;
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'page':
                    $_params['page'] = (int) $value;
                    break;
                case 'count':
                    $count = (int) $value;
                    if (0 >= $count) {
                        $count = 1;
                    } elseif (200 < $count) {
                        $count = 200;
                    }
                    $_params['count'] = $count;
                    break;
                default:
                    break;
            }
        }
        $path    .= '.xml';
        $response = $this->restGet($path, $_params);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Show a single status
     *
     * @param  int $id Id of status to show
     * @return Zend_Rest_Client_Result
     */
    public function statusShow($id)
    {
        $this->_init();
        $path = '/statuses/show/' . $id . '.xml';
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Update user's current status
     *
     * @param  string $status
     * @param  int $in_reply_to_status_id
     * @return Zend_Rest_Client_Result
     * @throws Zend_Service_Twitter_Exception if message is too short or too long
     */
    public function statusUpdate($status, $in_reply_to_status_id = null)
    {
        $this->_init();
        $path = '/statuses/update.xml';
        $len  = strlen($status);
        if ($len > 140) {
            include_once 'Zend/Service/Twitter/Exception.php';
            throw new Zend_Service_Twitter_Exception('Status must be no more than 140 characters in length');
        } elseif (0 == $len) {
            include_once 'Zend/Service/Twitter/Exception.php';
            throw new Zend_Service_Twitter_Exception('Status must contain at least one character');
        }

        $data = array(
            'status' => $status
        );

        if(is_numeric($in_reply_to_status_id) && !empty($in_reply_to_status_id)) {
            $data['in_reply_to_status_id'] = $in_reply_to_status_id;
        }

        //$this->status = $status;
        $response = $this->restPost($path, $data);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Get status replies
     *
     * $params may include one or more of the following keys
     * - since: return results only after the date specified
     * - since_id: return results only after the specified tweet id
     * - page: return page X of results
     *
     * @return Zend_Rest_Client_Result
     */
    public function statusReplies(array $params = array())
    {
        $this->_init();
        $path = '/statuses/replies.xml';

        $_params = array();
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'since_id':
                    $_params['since_id'] = (int) $value;
                    break;
                case 'page':
                    $_params['page'] = (int) $value;
                    break;
                default:
                    break;
            }
        }

        $response = $this->restGet($path, $_params);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Destroy a status message
     *
     * @param  int $id ID of status to destroy
     * @return Zend_Rest_Client_Result
     */
    public function statusDestroy($id)
    {
        $this->_init();
        $path = '/statuses/destroy/' . (int) $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * User friends
     *
     * @param  int|string $id Id or username of user for whom to fetch friends
     * @return Zend_Rest_Client_Result
     */
    public function userFriends(array $params = array())
    {
        $this->_init();
        $path = '/statuses/friends';
        $_params = array();
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'id':
                    $path .= '/' . $value;
                    break;
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'page':
                    $_params['page'] = (int) $value;
                    break;
                default:
                    break;
            }
        }
        $path    .= '.xml';

        $response = $this->restGet($path, $_params);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * User Followers
     *
     * @param  bool $lite If true, prevents inline inclusion of current status for followers; defaults to false
     * @return Zend_Rest_Client_Result
     */
    public function userFollowers($lite = false)
    {
        $this->_init();
        $path = '/statuses/followers.xml';
        if ($lite) {
            $this->lite = 'true';
        }

        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Get featured users
     *
     * @return Zend_Rest_Client_Result
     */
    public function userFeatured()
    {
        $this->_init();
        $path = '/statuses/featured.xml';

        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Show extended information on a user
     *
     * @param  int|string $id User ID or name
     * @return Zend_Rest_Client_Result
     */
    public function userShow($id)
    {
        $this->_init();
        $path = '/users/show/' . $id . '.xml';

        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Retrieve direct messages for the current user
     *
     * $params may include one or more of the following keys
     * - since: return results only after the date specified
     * - since_id: return statuses only greater than the one specified
     * - page: return page X of results
     *
     * @param  array $params
     * @return Zend_Rest_Client_Result
     */
    public function directMessageMessages(array $params = array())
    {
        $this->_init();
        $path = '/direct_messages.xml';
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'since_id':
                    $this->since_id = (int) $value;
                    break;
                case 'page':
                    $this->page = (int) $value;
                    break;
                default:
                    break;
            }
        }
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Retrieve list of direct messages sent by current user
     *
     * $params may include one or more of the following keys
     * - since: return results only after the date specified
     * - since_id: return statuses only greater than the one specified
     * - page: return page X of results
     *
     * @param  array $params
     * @return Zend_Rest_Client_Result
     */
    public function directMessageSent(array $params = array())
    {
        $this->_init();
        $path = '/direct_messages/sent.xml';
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'since':
                    $this->_setDate($value);
                    break;
                case 'since_id':
                    $this->since_id = (int) $value;
                    break;
                case 'page':
                    $this->page = (int) $value;
                    break;
                default:
                    break;
            }
        }
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Send a direct message to a user
     *
     * @param  int|string $user User to whom to send message
     * @param  string $text Message to send to user
     * @return Zend_Rest_Client_Result
     * @throws Zend_Service_Twitter_Exception if message is too short or too long
     */
    public function directMessageNew($user, $text)
    {
        $this->_init();
        $path = '/direct_messages/new.xml';

        $len = strlen($text);
        if (0 == $len) {
            throw new Zend_Service_Twitter_Exception('Direct message must contain at least one character');
        } elseif (140 < $len) {
            throw new Zend_Service_Twitter_Exception('Direct message must contain no more than 140 characters');
        }

        $data = array(
            'user'	=> $user,
            'text'	=> $text,
        );

        $response = $this->restPost($path, $data);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Destroy a direct message
     *
     * @param  int $id ID of message to destroy
     * @return Zend_Rest_Client_Result
     */
    public function directMessageDestroy($id)
    {
        $this->_init();
        $path = '/direct_messages/destroy/' . $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Create friendship
     *
     * @param  int|string $id User ID or name of new friend
     * @return Zend_Rest_Client_Result
     */
    public function friendshipCreate($id)
    {
        $this->_init();
        $path = '/friendships/create/' . $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Destroy friendship
     *
     * @param  int|string $id User ID or name of friend to remove
     * @return Zend_Rest_Client_Result
     */
    public function friendshipDestroy($id)
    {
        $this->_init();
        $path = '/friendships/destroy/' . $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Friendship exists
     *
     * @param int|string $id User ID or name of friend to see if they are your friend
     * @return Zend_Rest_Client_result
     */
    public function friendshipExists($id)
    {
        $this->_init();
        $path = '/friendships/exists.xml';

        $data = array(
            'user_a' => $this->getUsername(),
            'user_b' => $id
        );

        $response = $this->restGet($path, $data);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Verify Account Credentials
     *
     * @return Zend_Rest_Client_Result
     */
    public function accountVerifyCredentials()
    {
        $this->_init();
        $response = $this->restGet('/account/verify_credentials.xml');
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * End current session
     *
     * @return true
     */
    public function accountEndSession()
    {
        $this->_init();
        $this->restGet('/account/end_session');
        return true;
    }

    /**
     * Returns the number of api requests you have left per hour.
     *
     * @return Zend_Rest_Client_Result
     */
    public function accountRateLimitStatus()
    {
        $this->_init();
        $response = $this->restGet('/account/rate_limit_status.xml');
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Fetch favorites
     *
     * $params may contain one or more of the following:
     * - 'id': Id of a user for whom to fetch favorites
     * - 'page': Retrieve a different page of resuls
     *
     * @param  array $params
     * @return Zend_Rest_Client_Result
     */
    public function favoriteFavorites(array $params = array())
    {
        $this->_init();
        $path = '/favorites';
        foreach ($params as $key => $value) {
            switch (strtolower($key)) {
                case 'id':
                    $path .= '/' . $value;
                    break;
                case 'page':
                    $this->page = (int) $value;
                    break;
                default:
                    break;
            }
        }
        $path .= '.xml';
        $response = $this->restGet($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Mark a status as a favorite
     *
     * @param  int $id Status ID you want to mark as a favorite
     * @return Zend_Rest_Client_Result
     */
    public function favoriteCreate($id)
    {
        $this->_init();
        $path = '/favorites/create/' . (int) $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }

    /**
     * Remove a favorite
     *
     * @param  int $id Status ID you want to de-list as a favorite
     * @return Zend_Rest_Client_Result
     */
    public function favoriteDestroy($id)
    {
        $this->_init();
        $path = '/favorites/destroy/' . (int) $id . '.xml';

        $response = $this->restPost($path);
        return new Zend_Rest_Client_Result($response->getBody());
    }
}
PKpG[A�T�Service/Twitter/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Twitter_Exception extends Exception
{
}
PKpG[OYYService/Twitter/Search.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */

/**
 * @see Zend_Http_Client
 */
require_once 'Zend/Http/Client.php';

/**
 * @see Zend_Uri_Http
 */
require_once 'Zend/Uri/Http.php';

/**
 * @see Zend_Json
 */
require_once 'Zend/Json.php';

/**
 * @see Zend_Feed
 */
require_once 'Zend/Feed.php';

/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Twitter
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

class Zend_Service_Twitter_Search extends Zend_Http_Client
{
    /**
     * Return Type
     * @var String
     */
    protected $_responseType = 'json';

    /**
     * Response Format Types
     * @var array
     */
    protected $_responseTypes = array(
        'atom',
        'json'
    );

    /**
     * Uri Compoent
     *
     * @var Zend_Uri_Http
     */
    protected $_uri;

    /**
     * Constructor
     *
     * @param  string $returnType
     * @return void
     */
    public function __construct($responseType = 'json')
    {
        $this->setResponseType($responseType);
        $this->_uri = Zend_Uri_Http::fromString("http://search.twitter.com");

        $this->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
    }

    /**
     * set responseType
     *
     * @param string $responseType
     * @throws Zend_Service_Twitter_Exception
     * @return Zend_Service_Twitter_Search
     */
    public function setResponseType($responseType = 'json')
    {
        if(!in_array($responseType, $this->_responseTypes, TRUE)) {
            throw new Zend_Service_Twitter_Exception('Invalid Response Type');
        }
        $this->_responseType = $responseType;
        return $this;
    }

    /**
     * Retrieve responseType
     *
     * @return string
     */
    public function getResponseType()
    {
        return $this->_responseType;
    }

    /**
     * Get the current twitter trends.  Currnetly only supports json as the return.
     *
     * @return array
     */
    public function trends()
    {
        $this->_uri->setPath('/trends.json');
        $this->setUri($this->_uri);
        $response     = $this->request();

        return Zend_Json::decode($response->getBody());
    }

    public function search($query, array $params = array())
    {

        $this->_uri->setPath('/search.' . $this->_responseType);
        $this->_uri->setQuery(null);

        $_query = array();

        $_query['q'] = $query;

        foreach($params as $key=>$param) {
            switch($key) {
                case 'geocode':
                case 'lang':
                    $_query[$key] = $param;
                    break;
                case 'rpp':
                    $_query[$key] = (intval($param) > 100) ? 100 : intval($param);
                    break;
                case 'since_id':
                case 'page':
                    $_query[$key] = intval($param);
                    break;
                case 'show_user':
                    $_query[$key] = 'true';
            }
        }

        $this->_uri->setQuery($_query);

        $this->setUri($this->_uri);
        $response     = $this->request();

        switch($this->_responseType) {
            case 'json':
                return Zend_Json::decode($response->getBody());
                break;
            case 'atom':
                return Zend_Feed::importString($response->getBody());
                break;
        }

        return ;
    }
}
PKpG[ˡ����Service/Yahoo.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Yahoo.php 13006 2008-12-03 21:17:01Z matthew $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo
{
    /**
     * Yahoo Developer Application ID
     *
     * @var string
     */
    public $appId;

    /**
     * Reference to the REST client
     *
     * @var Zend_Rest_Client
     */
    protected $_rest;


    /**
     * Sets the application ID and instantiates the REST client
     *
     * @param  string $appId specified the developer's appid
     * @return void
     */
    public function __construct($appId)
    {
        $this->appId = (string) $appId;
        /**
         * @see Zend_Rest_Client
         */
        require_once 'Zend/Rest/Client.php';
        $this->_rest = new Zend_Rest_Client('http://search.yahooapis.com');
    }


    /**
     * Retrieve Inlink Data from siteexplorer.yahoo.com.  A basic query
     * consists simply of a URL.  Additional options that can be
     * specified consist of:
     * 'results'      => int  How many results to return, max is 100
     * 'start'        => int  The start offset for search results
     * 'entire_site'  => bool  Data for the whole site or a single page
     * 'omit_inlinks' => (none|domain|subdomain)  Filter inlinks from these sources
     *
     * @param  string $query    the query being run
     * @param  array  $options  any optional parameters
     * @return Zend_Service_Yahoo_ResultSet  The return set
     * @throws Zend_Service_Exception
     */
    public function inlinkDataSearch($query, array $options = array())
    {
        static $defaultOptions = array('results'     => '50',
                                       'start'    => 1);

        $options = $this->_prepareOptions($query, $options, $defaultOptions);
        $this->_validateInlinkDataSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/SiteExplorerService/V1/inlinkData', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Yahoo_InlinkDataResultSet
         */
        require_once 'Zend/Service/Yahoo/InlinkDataResultSet.php';
        return new Zend_Service_Yahoo_InlinkDataResultSet($dom);
    }


    /**
     * Perform a search of images.  The most basic query consists simply
     * of a plain text search, but you can also specify the type of
     * image, the format, color, etc.
     *
     * The specific options are:
     * 'type'       => (all|any|phrase)  How to parse the query terms
     * 'results'    => int  How many results to return, max is 50
     * 'start'      => int  The start offset for search results
     * 'format'     => (any|bmp|gif|jpeg|png)  The type of images to search for
     * 'coloration' => (any|color|bw)  The coloration of images to search for
     * 'adult_ok'   => bool  Flag to allow 'adult' images.
     *
     * @param  string $query   the query to be run
     * @param  array  $options an optional array of query options
     * @return Zend_Service_Yahoo_ImageResultSet the search results
     * @throws Zend_Service_Exception
     */
    public function imageSearch($query, array $options = array())
    {
        static $defaultOptions = array('type'       => 'all',
                                       'results'    => 10,
                                       'start'      => 1,
                                       'format'     => 'any',
                                       'coloration' => 'any');

        $options = $this->_prepareOptions($query, $options, $defaultOptions);

        $this->_validateImageSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/ImageSearchService/V1/imageSearch', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_YahooImageResultSet
         */
        require_once 'Zend/Service/Yahoo/ImageResultSet.php';
        return new Zend_Service_Yahoo_ImageResultSet($dom);
    }


    /**
     * Perform a search on local.yahoo.com.  The basic search
     * consists of a query and some fragment of location information;
     * for example zipcode, latitude/longitude, or street address.
     *
     * Query options include:
     * 'results'    => int  How many results to return, max is 50
     * 'start'      => int  The start offset for search results
     * 'sort'       => (relevance|title|distance|rating) How to order your results
     *
     * 'radius'     => float  The radius (in miles) in which to search
     *
     * 'longitude'  => float  The longitude of the location to search around
     * 'latitude'   => float  The latitude of the location to search around
     *
     * 'zip'        => string The zipcode to search around
     *
     * 'street'     => string  The street address to search around
     * 'city'       => string  The city for address search
     * 'state'      => string  The state for address search
     * 'location'   => string  An adhoc location string to search around
     *
     * @param  string $query    The query string you want to run
     * @param  array  $options  The search options, including location
     * @return Zend_Service_Yahoo_LocalResultSet The results
     * @throws Zend_Service_Exception
     */
    public function localSearch($query, array $options = array())
    {
        static $defaultOptions = array('results' => 10,
                                       'start'   => 1,
                                       'sort'    => 'distance',
                                       'radius'  => 5);

        $options = $this->_prepareOptions($query, $options, $defaultOptions);

        $this->_validateLocalSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://local.yahooapis.com');
        $response = $this->_rest->restGet('/LocalSearchService/V1/localSearch', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Yahoo_LocalResultSet
         */
        require_once 'Zend/Service/Yahoo/LocalResultSet.php';
        return new Zend_Service_Yahoo_LocalResultSet($dom);
    }


    /**
     * Execute a search on news.yahoo.com. This method minimally takes a
     * text query to search on.
     *
     * Query options coonsist of:
     *
     * 'results'    => int  How many results to return, max is 50
     * 'start'      => int  The start offset for search results
     * 'sort'       => (rank|date)  How to order your results
     * 'language'   => lang  The target document language to match
     * 'type'       => (all|any|phrase)  How the query should be parsed
     * 'site'       => string  A site to which your search should be restricted
     *
     * @param  string $query    The query to run
     * @param  array  $options  The array of optional parameters
     * @return Zend_Service_Yahoo_NewsResultSet  The query return set
     * @throws Zend_Service_Exception
     */
    public function newsSearch($query, array $options = array())
    {
        static $defaultOptions = array('type'     => 'all',
                                       'start'    => 1,
                                       'sort'     => 'rank');

        $options = $this->_prepareOptions($query, $options, $defaultOptions);

        $this->_validateNewsSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/NewsSearchService/V1/newsSearch', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Yahoo_NewsResultSet
         */
        require_once 'Zend/Service/Yahoo/NewsResultSet.php';
        return new Zend_Service_Yahoo_NewsResultSet($dom);
    }


    /**
     * Retrieve Page Data from siteexplorer.yahoo.com.  A basic query
     * consists simply of a URL.  Additional options that can be
     * specified consist of:
     * 'results'      => int  How many results to return, max is 100
     * 'start'        => int  The start offset for search results
     * 'domain_only'  => bool  Data for just the given domain or all sub-domains also
     *
     * @param  string $query    the query being run
     * @param  array  $options  any optional parameters
     * @return Zend_Service_Yahoo_ResultSet  The return set
     * @throws Zend_Service_Exception
     */
    public function pageDataSearch($query, array $options = array())
    {
        static $defaultOptions = array('results'     => '50',
                                       'start'    => 1);

        $options = $this->_prepareOptions($query, $options, $defaultOptions);
        $this->_validatePageDataSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/SiteExplorerService/V1/pageData', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Yahoo_PageDataResultSet
         */
        require_once 'Zend/Service/Yahoo/PageDataResultSet.php';
        return new Zend_Service_Yahoo_PageDataResultSet($dom);
    }


    /**
     * Perform a search of videos.  The most basic query consists simply
     * of a plain text search, but you can also specify the format of
     * video.
     *
     * The specific options are:
     * 'type'       => (all|any|phrase)  How to parse the query terms
     * 'results'    => int  How many results to return, max is 50
     * 'start'      => int  The start offset for search results
     * 'format'     => (any|avi|flash|mpeg|msmedia|quicktime|realmedia)  The type of videos to search for
     * 'adult_ok'   => bool  Flag to allow 'adult' videos.
     *
     * @param  string $query   the query to be run
     * @param  array  $options an optional array of query options
     * @return Zend_Service_Yahoo_VideoResultSet the search results
     * @throws Zend_Service_Exception
     */
    public function videoSearch($query, array $options = array())
    {
        static $defaultOptions = array('type'       => 'all',
                                       'results'    => 10,
                                       'start'      => 1,
                                       'format'     => 'any');

        $options = $this->_prepareOptions($query, $options, $defaultOptions);

        $this->_validateVideoSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/VideoSearchService/V1/videoSearch', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_YahooVideoResultSet
         */
        require_once 'Zend/Service/Yahoo/VideoResultSet.php';
        return new Zend_Service_Yahoo_VideoResultSet($dom);
    }


    /**
     * Perform a web content search on search.yahoo.com.  A basic query
     * consists simply of a text query.  Additional options that can be
     * specified consist of:
     * 'results'    => int  How many results to return, max is 50
     * 'start'      => int  The start offset for search results
     * 'language'   => lang  The target document language to match
     * 'type'       => (all|any|phrase)  How the query should be parsed
     * 'site'       => string  A site to which your search should be restricted
     * 'format'     => (any|html|msword|pdf|ppt|rss|txt|xls)
     * 'adult_ok'   => bool  permit 'adult' content in the search results
     * 'similar_ok' => bool  permit similar results in the result set
     * 'country'    => string  The country code for the content searched
     * 'license'    => (any|cc_any|cc_commercial|cc_modifiable)  The license of content being searched
     * 'region'     => The regional search engine on which the service performs the search. default us.
     *
     * @param  string $query    the query being run
     * @param  array  $options  any optional parameters
     * @return Zend_Service_Yahoo_WebResultSet  The return set
     * @throws Zend_Service_Exception
     */
    public function webSearch($query, array $options = array())
    {
        static $defaultOptions = array('type'     => 'all',
                                       'start'    => 1,
                                       'license'  => 'any',
                                       'results'  => 10,
                                       'format'   => 'any');

        $options = $this->_prepareOptions($query, $options, $defaultOptions);
        $this->_validateWebSearch($options);

        $this->_rest->getHttpClient()->resetParameters();
        $this->_rest->setUri('http://search.yahooapis.com');
        $response = $this->_rest->restGet('/WebSearchService/V1/webSearch', $options);

        if ($response->isError()) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('An error occurred sending request. Status code: ' .
                                             $response->getStatus());
        }

        $dom = new DOMDocument();
        $dom->loadXML($response->getBody());

        self::_checkErrors($dom);

        /**
         * @see Zend_Service_Yahoo_WebResultSet
         */
        require_once 'Zend/Service/Yahoo/WebResultSet.php';
        return new Zend_Service_Yahoo_WebResultSet($dom);
    }


    /**
     * Returns a reference to the REST client
     *
     * @return Zend_Rest_Client
     */
    public function getRestClient()
    {
        return $this->_rest;
    }


    /**
     * Validate Inlink Data Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateInlinkDataSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'results', 'start', 'entire_site', 'omit_inlinks');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 100, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['omit_inlinks'])) {
            $this->_validateInArray('omit_inlinks', $options['omit_inlinks'], array('none', 'domain', 'subdomain'));
        }
    }


    /**
     * Validate Image Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateImageSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'type', 'results', 'start', 'format', 'coloration', 'adult_ok');

        $this->_compareOptions($options, $validOptions);

        if (isset($options['type'])) {
            switch($options['type']) {
                case 'all':
                case 'any':
                case 'phrase':
                    break;
                default:
                    /**
                     * @see Zend_Service_Exception
                     */
                    require_once 'Zend/Service/Exception.php';
                    throw new Zend_Service_Exception("Invalid value for option 'type': '{$options['type']}'");
            }
        }

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 50, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['format'])) {
            switch ($options['format']) {
                case 'any':
                case 'bmp':
                case 'gif':
                case 'jpeg':
                case 'png':
                    break;
                default:
                    /**
                     * @see Zend_Service_Exception
                     */
                    require_once 'Zend/Service/Exception.php';
                    throw new Zend_Service_Exception("Invalid value for option 'format': {$options['format']}");
            }
        }

        if (isset($options['coloration'])) {
            switch ($options['coloration']) {
                case 'any':
                case 'color':
                case 'bw':
                    break;
                default:
                    /**
                     * @see Zend_Service_Exception
                     */
                    require_once 'Zend/Service/Exception.php';
                    throw new Zend_Service_Exception("Invalid value for option 'coloration': "
                                                   . "{$options['coloration']}");
            }
        }
    }


    /**
     * Validate Local Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateLocalSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'results', 'start', 'sort', 'radius', 'street',
                              'city', 'state', 'zip', 'location', 'latitude', 'longitude');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 20, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(20)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['longitude']) && !$between->setMin(-90)->setMax(90)->isValid($options['longitude'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'longitude': {$options['longitude']}");
        }

        if (isset($options['latitude']) && !$between->setMin(-180)->setMax(180)->isValid($options['latitude'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'latitude': {$options['latitude']}");
        }

        if (isset($options['zip']) && !preg_match('/(^\d{5}$)|(^\d{5}-\d{4}$)/', $options['zip'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'zip': {$options['zip']}");
        }

        $hasLocation = false;
        $locationFields = array('street', 'city', 'state', 'zip', 'location');
        foreach ($locationFields as $field) {
            if (isset($options[$field]) && $options[$field] != '') {
                $hasLocation = true;
                break;
            }
        }

        if (!$hasLocation && (!isset($options['latitude']) || !isset($options['longitude']))) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('Location data are required but missing');
        }

        if (!in_array($options['sort'], array('relevance', 'title', 'distance', 'rating'))) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'sort': {$options['sort']}");
        }
    }


    /**
     * Validate News Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateNewsSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'results', 'start', 'sort', 'language', 'type', 'site');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 50, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['language'])) {
            $this->_validateLanguage($options['language']);
        }

        $this->_validateInArray('sort', $options['sort'], array('rank', 'date'));
        $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase'));
    }


    /**
     * Validate Page Data Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validatePageDataSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'results', 'start', 'domain_only');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 100, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }
    }


    /**
     * Validate Video Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateVideoSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'type', 'results', 'start', 'format', 'adult_ok');

        $this->_compareOptions($options, $validOptions);

        if (isset($options['type'])) {
            $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase'));
        }

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 50, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['format'])) {
            $this->_validateInArray('format', $options['format'], array('any', 'avi', 'flash', 'mpeg', 'msmedia', 'quicktime', 'realmedia'));
        }
    }


    /**
     * Validate Web Search Options
     *
     * @param  array $options
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateWebSearch(array $options)
    {
        $validOptions = array('appid', 'query', 'results', 'start', 'language', 'type', 'format', 'adult_ok',
                              'similar_ok', 'country', 'site', 'subscription', 'license', 'region');

        $this->_compareOptions($options, $validOptions);

        /**
         * @see Zend_Validate_Between
         */
        require_once 'Zend/Validate/Between.php';
        $between = new Zend_Validate_Between(1, 100, true);

        if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}");
        }

        if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}");
        }

        if (isset($options['language'])) {
            $this->_validateLanguage($options['language']);
        }

        $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase'));
        $this->_validateInArray('format', $options['format'], array('any', 'html', 'msword', 'pdf', 'ppt', 'rss',
                                                                    'txt', 'xls'));
        $this->_validateInArray('license', $options['license'], array('any', 'cc_any', 'cc_commercial',
                                                                      'cc_modifiable'));
        if (isset($options['region'])){
            $this->_validateInArray('region', $options['region'], array('ar', 'au', 'at', 'br', 'ca', 'ct', 'dk', 'fi',
                                                                          'fr', 'de', 'in', 'id', 'it', 'my', 'mx', 
                                                                          'nl', 'no', 'ph', 'ru', 'sg', 'es', 'se',
                                                                          'ch', 'th', 'uk', 'us'));
        }
    }


    /**
     * Prepare options for sending to Yahoo!
     *
     * @param  string $query          Search Query
     * @param  array  $options        User specified options
     * @param  array  $defaultOptions Required/Default options
     * @return array
     */
    protected function _prepareOptions($query, array $options, array $defaultOptions = array())
    {
        $options['appid'] = $this->appId;
        $options['query'] = (string) $query;

        return array_merge($defaultOptions, $options);
    }


    /**
     * Throws an exception if the chosen language is not supported
     *
     * @param  string $lang Language code
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateLanguage($lang)
    {
        $languages = array('ar', 'bg', 'ca', 'szh', 'tzh', 'hr', 'cs', 'da', 'nl', 'en', 'et', 'fi', 'fr', 'de', 'el',
            'he', 'hu', 'is', 'id', 'it', 'ja', 'ko', 'lv', 'lt', 'no', 'fa', 'pl', 'pt', 'ro', 'ru', 'sk', 'sr', 'sl',
            'es', 'sv', 'th', 'tr'
            );
        if (!in_array($lang, $languages)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("The selected language '$lang' is not supported");
        }
    }


    /**
     * Utility function to check for a difference between two arrays.
     *
     * @param  array $options      User specified options
     * @param  array $validOptions Valid options
     * @return void
     * @throws Zend_Service_Exception if difference is found (e.g., unsupported query option)
     */
    protected function _compareOptions(array $options, array $validOptions)
    {
        $difference = array_diff(array_keys($options), $validOptions);
        if ($difference) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception('The following parameters are invalid: ' . join(', ', $difference));
        }
    }


    /**
     * Check that a named value is in the given array
     *
     * @param  string $name  Name associated with the value
     * @param  mixed  $value Value
     * @param  array  $array Array in which to check for the value
     * @return void
     * @throws Zend_Service_Exception
     */
    protected function _validateInArray($name, $value, array $array)
    {
        if (!in_array($value, $array)) {
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception("Invalid value for option '$name': $value");
        }
    }


    /**
     * Check if response is an error
     *
     * @param  DOMDocument $dom DOM Object representing the result XML
     * @return void
     * @throws Zend_Service_Exception Thrown when the result from Yahoo! is an error
     */
    protected static function _checkErrors(DOMDocument $dom)
    {
        $xpath = new DOMXPath($dom);
        $xpath->registerNamespace('yapi', 'urn:yahoo:api');

        if ($xpath->query('//yapi:Error')->length >= 1) {
            $message = $xpath->query('//yapi:Error/yapi:Message/text()')->item(0)->data;
            /**
             * @see Zend_Service_Exception
             */
            require_once 'Zend/Service/Exception.php';
            throw new Zend_Service_Exception($message);
        }
    }
}
PKpG[�Mm��� Service/Yahoo/PageDataResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_PageDataResult extends Zend_Service_Yahoo_Result
{
    /**
     * Web result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Initializes the web result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array();
        parent::__construct($result);
    }
}
PKpG[�f���
�
Service/Yahoo/VideoResult.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: VideoResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_VideoResult extends Zend_Service_Yahoo_Result
{
    /**
     * Summary info for the video
     *
     * @var string
     */
    public $Summary;

    /**
     * The URL of the webpage hosting the video
     *
     * @var string
     */
    public $RefererUrl;

    /**
     * The size of the files in bytes
     *
     * @var string
     */
    public $FileSize;

    /**
     * The type of file (bmp, gif, jpeg, etc.)
     *
     * @var string
     */
    public $FileFormat;

    /**
     * The height of the video in pixels
     *
     * @var string
     */
    public $Height;

    /**
     * The width of the video in pixels
     *
     * @var string
     */
    public $Width;

    /**
     * The duration of the video in seconds
     *
     * @var string
     */
    public $Duration;

    /**
     * The number of audio channels in the video 
     *
     * @var string
     */
    public $Channels;

    /**
     * Whether the video is streamed or not
     *
     * @var boolean
     */
    public $Streaming;

    /**
     * The thubmnail video for the article, if it exists
     *
     * @var Zend_Service_Yahoo_Video
     */
    public $Thumbnail;

    /**
     * Video result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srchmv';


    /**
     * Initializes the video result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array('Summary', 'RefererUrl', 'FileSize', 'FileFormat', 'Height', 'Width', 'Duration', 'Channels', 'Streaming', 'Thumbnail');

        parent::__construct($result);

        $this->_setThumbnail();
    }
}
PKpG[@?�XXService/Yahoo/Image.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Image.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_Image
{
    /**
     * Image URL
     *
     * @var string
     */
    public $Url;

    /**
     * Image height in pixels
     *
     * @var int
     */
    public $Height;

    /**
     * Image width in pixels
     *
     * @var int
     */
    public $Width;


    /**
     * Initializes the image
     *
     * @param  DOMNode $dom
     * @param  string  $namespace
     * @return void
     */
    public function __construct(DOMNode $dom, $namespace)
    {
        $xpath = new DOMXPath($dom->ownerDocument);
        $xpath->registerNamespace('yh', $namespace);
        $this->Url = Zend_Uri::factory($xpath->query('./yh:Url/text()', $dom)->item(0)->data);
        $this->Height = (int) $xpath->query('./yh:Height/text()', $dom)->item(0)->data;
        $this->Width = (int) $xpath->query('./yh:Width/text()', $dom)->item(0)->data;
    }
}
PKpG[����	�	Service/Yahoo/ImageResult.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ImageResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_ImageResult extends Zend_Service_Yahoo_Result
{
    /**
     * Summary info for the image
     *
     * @var string
     */
    public $Summary;

    /**
     * The URL of the webpage hosting the image
     *
     * @var string
     */
    public $RefererUrl;

    /**
     * The size of the files in bytes
     *
     * @var string
     */
    public $FileSize;

    /**
     * The type of file (bmp, gif, jpeg, etc.)
     *
     * @var string
     */
    public $FileFormat;

    /**
     * The height of the image in pixels
     *
     * @var string
     */
    public $Height;

    /**
     * The width of the image in pixels
     *
     * @var string
     */
    public $Width;

    /**
     * The thubmnail image for the article, if it exists
     *
     * @var Zend_Service_Yahoo_Image
     */
    public $Thumbnail;

    /**
     * Image result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srchmi';


    /**
     * Initializes the image result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array('Summary', 'RefererUrl', 'FileSize', 'FileFormat', 'Height', 'Width', 'Thumbnail');

        parent::__construct($result);

        $this->_setThumbnail();
    }
}
PKpG[3oG�� Service/Yahoo/ImageResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ImageResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_ImageResult
 */
require_once 'Zend/Service/Yahoo/ImageResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_ImageResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * Image result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srchmi';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_ImageResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_ImageResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[}�/w
w
Service/Yahoo/LocalResult.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: LocalResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_LocalResult extends Zend_Service_Yahoo_Result
{
    /**
     * Street address of the result
     *
     * @var string
     */
    public $Address;

    /**
     * City in which the result resides
     *
     * @var string
     */
    public $City;

    /**
     * State in which the result resides
     *
     * @var string
     */
    public $State;

    /**
     * Phone number for the result
     *
     * @var string
     */
    public $Phone;

    /**
     * User-submitted rating for the result
     *
     * @var string
     */
    public $Rating;

    /**
     * The distance to the result from your specified location
     *
     * @var string
     */
    public $Distance;

    /**
     * A URL of a map for the result
     *
     * @var string
     */
    public $MapUrl;

    /**
     * The URL for the business website, if known
     *
     * @var string
     */
    public $BusinessUrl;

    /**
     * The URL for linking to the business website, if known
     *
     * @var string
     */
    public $BusinessClickUrl;

    /**
     * Local result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:lcl';


    /**
     * Initializes the local result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array('Address','City', 'City', 'State', 'Phone', 'Rating', 'Distance', 'MapUrl',
                               'BusinessUrl', 'BusinessClickUrl');

        parent::__construct($result);
    }
}
PKpG[�;&�� Service/Yahoo/VideoResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: VideoResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_VideoResult
 */
require_once 'Zend/Service/Yahoo/VideoResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_VideoResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * Video result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srchmv';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_VideoResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_VideoResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[�����Service/Yahoo/WebResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: WebResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_WebResult
 */
require_once 'Zend/Service/Yahoo/WebResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_WebResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * Web result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_WebResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_WebResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[�4���"Service/Yahoo/InlinkDataResult.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_InlinkDataResult extends Zend_Service_Yahoo_Result
{
    /**
     * Web result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Initializes the web result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array();
        parent::__construct($result);
    }
}
PKpG[��łcc#Service/Yahoo/PageDataResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_WebResult
 */
require_once 'Zend/Service/Yahoo/PageDataResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_PageDataResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * Web result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_WebResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_PageDataResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[
����Service/Yahoo/ResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_ResultSet implements SeekableIterator
{
    /**
     * Total number of results available
     *
     * @var int
     */
    public $totalResultsAvailable;

    /**
     * The number of results in this result set
     *
     * @var int
     */
    public $totalResultsReturned;

    /**
     * The offset in the total result set of this search set
     *
     * @var int
     */
    public $firstResultPosition;

    /**
     * A DOMNodeList of results
     *
     * @var DOMNodeList
     */
    protected $_results;

    /**
     * Yahoo Web Service Return Document
     *
     * @var DOMDocument
     */
    protected $_dom;

    /**
     * Xpath Object for $this->_dom
     *
     * @var DOMXPath
     */
    protected $_xpath;

    /**
     * Current Index for SeekableIterator
     *
     * @var int
     */
    protected $_currentIndex = 0;


    /**
     * Parse the search response and retrieve the results for iteration
     *
     * @param  DOMDocument $dom the REST fragment for this object
     * @return void
     */
    public function __construct(DOMDocument $dom)
    {
        $this->totalResultsAvailable = (int) $dom->documentElement->getAttribute('totalResultsAvailable');
        $this->totalResultsReturned = (int) $dom->documentElement->getAttribute('totalResultsReturned');
        $this->firstResultPosition = (int) $dom->documentElement->getAttribute('firstResultPosition');

        $this->_dom = $dom;
        $this->_xpath = new DOMXPath($dom);

        $this->_xpath->registerNamespace('yh', $this->_namespace);

        $this->_results = $this->_xpath->query('//yh:Result');
    }


    /**
     * Total Number of results returned
     *
     * @return int Total number of results returned
     */
    public function totalResults()
    {
        return $this->totalResultsReturned;
    }


    /**
     * Implement SeekableIterator::current()
     *
     * Must be implemented by child classes
     *
     * @throws Zend_Service_Exception
     * @return Zend_Service_Yahoo_Result
     */
    public function current()
    {
        /**
         * @see Zend_Service_Exception
         */
        require_once 'Zend/Service/Exception.php';
        throw new Zend_Service_Exception('Zend_Service_Yahoo_ResultSet::current() must be implemented by child '
                                       . 'classes');
    }


    /**
     * Implement SeekableIterator::key()
     *
     * @return int
     */
    public function key()
    {
        return $this->_currentIndex;
    }


    /**
     * Implement SeekableIterator::next()
     *
     * @return void
     */
    public function next()
    {
        $this->_currentIndex += 1;
    }


    /**
     * Implement SeekableIterator::rewind()
     *
     * @return void
     */
    public function rewind()
    {
        $this->_currentIndex = 0;
    }


    /**
     * Implement SeekableIterator::seek()
     *
     * @param  int $index
     * @return void
     * @throws OutOfBoundsException
     */
    public function seek($index)
    {
        $indexInt = (int) $index;
        if ($indexInt >= 0 && $indexInt < $this->_results->length) {
            $this->_currentIndex = $indexInt;
        } else {
            throw new OutOfBoundsException("Illegal index '$index'");
        }
    }


    /**
     * Implement SeekableIterator::valid()
     *
     * @return boolean
     */
    public function valid()
    {
        return $this->_currentIndex < $this->_results->length;
    }
}
PKpG[�."
"
Service/Yahoo/NewsResult.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NewsResult.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_NewsResult extends Zend_Service_Yahoo_Result
{
    /**
     * Sumamry text associated with the result article
     *
     * @var string
     */
    public $Summary;

    /**
     * The company who distributed the article
     *
     * @var string
     */
    public $NewsSource;

    /**
     * The URL for the company who distributed the article
     *
     * @var string
     */
    public $NewsSourceUrl;

    /**
     * The language the article is in
     *
     * @var string
     */
    public $Language;

    /**
     * The date the article was published (in unix timestamp format)
     *
     * @var string
     */
    public $PublishDate;

    /**
     * The date the article was modified (in unix timestamp format)
     *
     * @var string
     */
    public $ModificationDate;

    /**
     * The thubmnail image for the article, if it exists
     *
     * @var Zend_Service_Yahoo_Image
     */
    public $Thumbnail;

    /**
     * News result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:yn';


    /**
     * Initializes the news result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array('Summary', 'NewsSource', 'NewsSourceUrl', 'Language', 'PublishDate',
                               'ModificationDate', 'Thumbnail');

        parent::__construct($result);

        $this->_setThumbnail();
    }
}
PKpG[)�hUvv Service/Yahoo/LocalResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: LocalResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_LocalResult
 */
require_once 'Zend/Service/Yahoo/LocalResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_LocalResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * The URL of a webpage containing a map graphic with all returned results plotted on it.
     *
     * @var string
     */
    public $resultSetMapURL;

    /**
     * Local result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:lcl';


    /**
     * Initializes the local result set
     *
     * @param  DOMDocument $dom
     * @return void
     */
    public function __construct(DOMDocument $dom)
    {
        parent::__construct($dom);

        $this->resultSetMapURL = $this->_xpath->query('//yh:ResultSetMapUrl/text()')->item(0)->data;
    }


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_LocalResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_LocalResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[c�ع
�
Service/Yahoo/WebResult.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: WebResult.php 13006 2008-12-03 21:17:01Z matthew $
 */


/**
 * @see Zend_Service_Yahoo_Result
 */
require_once 'Zend/Service/Yahoo/Result.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_WebResult extends Zend_Service_Yahoo_Result
{
    /**
     * A summary of the result
     *
     * @var string
     */
    public $Summary;

    /**
     * The file type of the result (text, html, pdf, etc.)
     *
     * @var string
     */
    public $MimeType;

    /**
     * The modification time of the result (as a unix timestamp)
     *
     * @var string
     */
    public $ModificationDate;

    /**
     * The URL for the Yahoo cache of this page, if it exists
     *
     * @var string
     */
    public $CacheUrl;

    /**
     * The size of the cache entry
     *
     * @var int
     */
    public $CacheSize;

    /**
     * Web result namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Initializes the web result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        $this->_fields = array('Summary', 'MimeType', 'ModificationDate');
        parent::__construct($result);

        $this->_xpath = new DOMXPath($result->ownerDocument);
        $this->_xpath->registerNamespace('yh', $this->_namespace);
		
        // check if the cache section exists
        $cacheUrl = $this->_xpath->query('./yh:Cache/yh:Url/text()', $result)->item(0);
        if ($cacheUrl instanceof DOMNode)
        {
        	$this->CacheUrl = $cacheUrl->data;
        }
        $cacheSize = $this->_xpath->query('./yh:Cache/yh:Size/text()', $result)->item(0);
        if ($cacheSize instanceof DOMNode)
        {
        	$this->CacheSize = (int) $cacheSize->data;
        }
    }
}
PKpG[Z�{��Service/Yahoo/NewsResultSet.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: NewsResultSet.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_NewsResult
 */
require_once 'Zend/Service/Yahoo/NewsResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_NewsResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * News result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:yn';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_NewsResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_NewsResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[�����Service/Yahoo/Result.phpnu&1i�<?php

/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: Result.php 8064 2008-02-16 10:58:39Z thomas $
 */


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_Result
{
    /**
     * The title of the search entry
     *
     * @var string
     */
    public $Title;

    /**
     * The URL of the found object
     *
     * @var string
     */
    public $Url;

    /**
     * The URL for linking to the found object
     *
     * @var string
     */
    public $ClickUrl;

    /**
     * Result fields
     *
     * @var array
     */
    protected $_fields;

    /**
     * REST response fragment for the result
     *
     * @var DOMElement
     */
    protected $_result;

    /**
     * Object for XPath queries
     *
     * @var DOMXPath
     */
    protected $_xpath;


    /**
     * Initializes the result
     *
     * @param  DOMElement $result
     * @return void
     */
    public function __construct(DOMElement $result)
    {
        // default fields for all search results:
        $fields = array('Title', 'Url', 'ClickUrl');

        // merge w/ child's fields
        $this->_fields = array_merge($this->_fields, $fields);

        $this->_xpath = new DOMXPath($result->ownerDocument);
        $this->_xpath->registerNamespace('yh', $this->_namespace);

        // add search results to appropriate fields

        foreach ($this->_fields as $f) {
            $query = "./yh:$f/text()";
            $node = $this->_xpath->query($query, $result);
            if ($node->length == 1) {
                $this->{$f} = $node->item(0)->data;
            }
        }

        $this->_result = $result;
    }


    /**
     * Sets the Thumbnail property
     *
     * @return void
     */
    protected function _setThumbnail()
    {
        $node = $this->_xpath->query('./yh:Thumbnail', $this->_result);
        if ($node->length == 1) {
            /**
             * @see Zend_Service_Yahoo_Image
             */
            require_once 'Zend/Service/Yahoo/Image.php';
            $this->Thumbnail = new Zend_Service_Yahoo_Image($node->item(0), $this->_namespace);
        } else {
            $this->Thumbnail = null;
        }
    }
}
PKpG[��4/pp%Service/Yahoo/InlinkDataResultSet.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: $
 */


/**
 * @see Zend_Service_Yahoo_ResultSet
 */
require_once 'Zend/Service/Yahoo/ResultSet.php';


/**
 * @see Zend_Service_Yahoo_WebResult
 */
require_once 'Zend/Service/Yahoo/InlinkDataResult.php';


/**
 * @category   Zend
 * @package    Zend_Service
 * @subpackage Yahoo
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Service_Yahoo_InlinkDataResultSet extends Zend_Service_Yahoo_ResultSet
{
    /**
     * Web result set namespace
     *
     * @var string
     */
    protected $_namespace = 'urn:yahoo:srch';


    /**
     * Overrides Zend_Service_Yahoo_ResultSet::current()
     *
     * @return Zend_Service_Yahoo_InlinkDataResult
     */
    public function current()
    {
        return new Zend_Service_Yahoo_InlinkDataResult($this->_results->item($this->_currentIndex));
    }
}
PKpG[n1��Mime/Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Exception
 */
require_once 'Zend/Exception.php';


/**
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mime_Exception extends Zend_Exception
{}

PKpG[�>N�� � Mime/Message.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * Zend_Mime_Part
 */
require_once 'Zend/Mime/Part.php';


/**
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mime_Message
{

    protected $_parts = array();
    protected $_mime = null;

    /**
     * Returns the list of all Zend_Mime_Parts in the message
     *
     * @return array of Zend_Mime_Part
     */
    public function getParts()
    {
        return $this->_parts;
    }

    /**
     * Sets the given array of Zend_Mime_Parts as the array for the message
     *
     * @param array $parts
     */
    public function setParts($parts)
    {
        $this->_parts = $parts;
    }

    /**
     * Append a new Zend_Mime_Part to the current message
     *
     * @param Zend_Mime_Part $part
     */
    public function addPart(Zend_Mime_Part $part)
    {
        /**
         * @todo check for duplicate object handle
         */
        $this->_parts[] = $part;
    }

    /**
     * Check if message needs to be sent as multipart
     * MIME message or if it has only one part.
     *
     * @return boolean
     */
    public function isMultiPart()
    {
        return (count($this->_parts) > 1);
    }

    /**
     * Set Zend_Mime object for the message
     *
     * This can be used to set the boundary specifically or to use a subclass of
     * Zend_Mime for generating the boundary.
     *
     * @param Zend_Mime $mime
     */
    public function setMime(Zend_Mime $mime)
    {
        $this->_mime = $mime;
    }

    /**
     * Returns the Zend_Mime object in use by the message
     *
     * If the object was not present, it is created and returned. Can be used to
     * determine the boundary used in this message.
     *
     * @return Zend_Mime
     */
    public function getMime()
    {
        if ($this->_mime === null) {
            $this->_mime = new Zend_Mime();
        }

        return $this->_mime;
    }

    /**
     * Generate MIME-compliant message from the current configuration
     *
     * This can be a multipart message if more than one MIME part was added. If
     * only one part is present, the content of this part is returned. If no
     * part had been added, an empty string is returned.
     *
     * Parts are seperated by the mime boundary as defined in Zend_Mime. If
     * {@link setMime()} has been called before this method, the Zend_Mime
     * object set by this call will be used. Otherwise, a new Zend_Mime object
     * is generated and used.
     *
     * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
     * @return string
     */
    public function generateMessage($EOL = Zend_Mime::LINEEND)
    {
        if (! $this->isMultiPart()) {
            $body = array_shift($this->_parts);
            $body = $body->getContent($EOL);
        } else {
            $mime = $this->getMime();

            $boundaryLine = $mime->boundaryLine($EOL);
            $body = 'This is a message in Mime Format.  If you see this, '
                  . "your mail reader does not support this format." . $EOL;

            foreach (array_keys($this->_parts) as $p) {
                $body .= $boundaryLine
                       . $this->getPartHeaders($p, $EOL)
                       . $EOL
                       . $this->getPartContent($p, $EOL);
            }

            $body .= $mime->mimeEnd($EOL);
        }

        return trim($body);
    }

    /**
     * Get the headers of a given part as an array
     *
     * @param int $partnum
     * @return array
     */
    public function getPartHeadersArray($partnum)
    {
        return $this->_parts[$partnum]->getHeadersArray();
    }

    /**
     * Get the headers of a given part as a string
     *
     * @param int $partnum
     * @return string
     */
    public function getPartHeaders($partnum, $EOL = Zend_Mime::LINEEND)
    {
        return $this->_parts[$partnum]->getHeaders($EOL);
    }

    /**
     * Get the (encoded) content of a given part as a string
     *
     * @param int $partnum
     * @return string
     */
    public function getPartContent($partnum, $EOL = Zend_Mime::LINEEND)
    {
        return $this->_parts[$partnum]->getContent($EOL);
    }

    /**
     * Explode MIME multipart string into seperate parts
     *
     * Parts consist of the header and the body of each MIME part.
     *
     * @param string $body
     * @param string $boundary
     * @return array
     */
    protected static function _disassembleMime($body, $boundary)
    {
        $start = 0;
        $res = array();
        // find every mime part limiter and cut out the
        // string before it.
        // the part before the first boundary string is discarded:
        $p = strpos($body, '--'.$boundary."\n", $start);
        if ($p === false) {
            // no parts found!
            return array();
        }

        // position after first boundary line
        $start = $p + 3 + strlen($boundary);

        while (($p = strpos($body, '--' . $boundary . "\n", $start)) !== false) {
            $res[] = substr($body, $start, $p-$start);
            $start = $p + 3 + strlen($boundary);
        }

        // no more parts, find end boundary
        $p = strpos($body, '--' . $boundary . '--', $start);
        if ($p===false) {
            throw new Zend_Exception('Not a valid Mime Message: End Missing');
        }

        // the remaining part also needs to be parsed:
        $res[] = substr($body, $start, $p-$start);
        return $res;
    }

    /**
     * Decodes a MIME encoded string and returns a Zend_Mime_Message object with
     * all the MIME parts set according to the given string
     *
     * @param string $message
     * @param string $boundary
     * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
     * @return Zend_Mime_Message
     */
    public static function createFromMessage($message, $boundary, $EOL = Zend_Mime::LINEEND)
    {
        require_once 'Zend/Mime/Decode.php';
        $parts = Zend_Mime_Decode::splitMessageStruct($message, $boundary, $EOL);

        $res = new self();
        foreach ($parts as $part) {
            // now we build a new MimePart for the current Message Part:
            $newPart = new Zend_Mime_Part($part['body']);
            foreach ($part['header'] as $key => $value) {
                /**
                 * @todo check for characterset and filename
                 */
                switch(strtolower($key)) {
                    case 'content-type':
                        $newPart->type = $value;
                        break;
                    case 'content-transfer-encoding':
                        $newPart->encoding = $value;
                        break;
                    case 'content-id':
                        $newPart->id = trim($value,'<>');
                        break;
                    case 'content-disposition':
                        $newPart->disposition = $value;
                        break;
                    case 'content-description':
                        $newPart->description = $value;
                        break;
                    case 'content-location':
                        $newPart->location = $value;
                        break;
                    case 'content-language':
                        $newPart->language = $value;
                        break;
                    default:
                        throw new Zend_Exception('Unknown header ignored for MimePart:' . $key);
                }
            }
            $res->addPart($newPart);
        }
        return $res;
    }
}
PKpG[��^�OO
Mime/Part.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * Zend_Mime_Exception
 */
require_once 'Zend/Mime/Exception.php';

/**
 * Class representing a MIME part.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mime_Part {

    public $type = Zend_Mime::TYPE_OCTETSTREAM;
    public $encoding = Zend_Mime::ENCODING_8BIT;
    public $id;
    public $disposition;
    public $filename;
    public $description;
    public $charset;
    public $boundary;
    public $location;
    public $language;
    protected $_content;
    protected $_isStream = false;


    /**
     * create a new Mime Part.
     * The (unencoded) content of the Part as passed
     * as a string or stream
     *
     * @param mixed $content  String or Stream containing the content
     */
    public function __construct($content)
    {
        $this->_content = $content;
        if (is_resource($content)) {
            $this->_isStream = true;
        }
    }

    /**
     * @todo setters/getters
     * @todo error checking for setting $type
     * @todo error checking for setting $encoding
     */

    /**
     * check if this part can be read as a stream.
     * if true, getEncodedStream can be called, otherwise
     * only getContent can be used to fetch the encoded
     * content of the part
     *
     * @return bool
     */
    public function isStream()
    {
      return $this->_isStream;
    }

    /**
     * if this was created with a stream, return a filtered stream for
     * reading the content. very useful for large file attachments.
     *
     * @return stream
     * @throws Zend_Mime_Exception if not a stream or unable to append filter
     */
    public function getEncodedStream()
    {
        if (!$this->_isStream) {
            throw new Zend_Mime_Exception('Attempt to get a stream from a string part');
        }

        //stream_filter_remove(); // ??? is that right?
        switch ($this->encoding) {
            case Zend_Mime::ENCODING_QUOTEDPRINTABLE:
                $filter = stream_filter_append(
                    $this->_content,
                    'convert.quoted-printable-encode',
                    STREAM_FILTER_READ,
                    array(
                        'line-length'      => 76,
                        'line-break-chars' => Zend_Mime::LINEEND
                    )
                );
                if (!is_resource($filter)) {
                    throw new Zend_Mime_Exception('Failed to append quoted-printable filter');
                }
                break;
            case Zend_Mime::ENCODING_BASE64:
                $filter = stream_filter_append(
                    $this->_content,
                    'convert.base64-encode',
                    STREAM_FILTER_READ,
                    array(
                        'line-length'      => 76,
                        'line-break-chars' => Zend_Mime::LINEEND
                    )
                );
                if (!is_resource($filter)) {
                    throw new Zend_Mime_Exception('Failed to append base64 filter');
                }
                break;
            default:
        }
        return $this->_content;
    }

    /**
     * Get the Content of the current Mime Part in the given encoding.
     *
     * @return String
     */
    public function getContent($EOL = Zend_Mime::LINEEND)
    {
        if ($this->_isStream) {
            return stream_get_contents($this->getEncodedStream());
        } else {
            return Zend_Mime::encode($this->_content, $this->encoding, $EOL);
        }
    }

    /**
     * Create and return the array of headers for this MIME part
     *
     * @access public
     * @return array
     */
    public function getHeadersArray($EOL = Zend_Mime::LINEEND)
    {
        $headers = array();

        $contentType = $this->type;
        if ($this->charset) {
            $contentType .= '; charset="' . $this->charset . '"';
        }

        if ($this->boundary) {
            $contentType .= ';' . $EOL
                          . " boundary=\"" . $this->boundary . '"';
        }

        $headers[] = array('Content-Type', $contentType);

        if ($this->encoding) {
            $headers[] = array('Content-Transfer-Encoding', $this->encoding);
        }

        if ($this->id) {
            $headers[]  = array('Content-ID', '<' . $this->id . '>');
        }

        if ($this->disposition) {
            $disposition = $this->disposition;
            if ($this->filename) {
                $disposition .= '; filename="' . $this->filename . '"';
            }
            $headers[] = array('Content-Disposition', $disposition);
        }

        if ($this->description) {
            $headers[] = array('Content-Description', $this->description);
        }
        
        if ($this->location) {
            $headers[] = array('Content-Location', $this->location);
        }
        
        if ($this->language){
            $headers[] = array('Content-Language', $this->language);
        }

        return $headers;
    }

    /**
     * Return the headers for this part as a string
     *
     * @return String
     */
    public function getHeaders($EOL = Zend_Mime::LINEEND)
    {
        $res = '';
        foreach ($this->getHeadersArray($EOL) as $header) {
            $res .= $header[0] . ': ' . $header[1] . $EOL;
        }

        return $res;
    }
}
PKpG[���?"?"Mime/Decode.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */

/**
 * @see Zend_Mime
 */
require_once 'Zend/Mime.php';

/**
 * @category   Zend
 * @package    Zend_Mime
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Mime_Decode
{
    /**
     * Explode MIME multipart string into seperate parts
     *
     * Parts consist of the header and the body of each MIME part.
     *
     * @param  string $body     raw body of message
     * @param  string $boundary boundary as found in content-type
     * @return array parts with content of each part, empty if no parts found
     * @throws Zend_Exception
     */
    public static function splitMime($body, $boundary)
    {
        // TODO: we're ignoring \r for now - is this function fast enough and is it safe to asume noone needs \r?
        $body = str_replace("\r", '', $body);

        $start = 0;
        $res = array();
        // find every mime part limiter and cut out the
        // string before it.
        // the part before the first boundary string is discarded:
        $p = strpos($body, '--' . $boundary . "\n", $start);
        if ($p === false) {
            // no parts found!
            return array();
        }

        // position after first boundary line
        $start = $p + 3 + strlen($boundary);

        while (($p = strpos($body, '--' . $boundary . "\n", $start)) !== false) {
            $res[] = substr($body, $start, $p-$start);
            $start = $p + 3 + strlen($boundary);
        }

        // no more parts, find end boundary
        $p = strpos($body, '--' . $boundary . '--', $start);
        if ($p===false) {
            throw new Zend_Exception('Not a valid Mime Message: End Missing');
        }

        // the remaining part also needs to be parsed:
        $res[] = substr($body, $start, $p-$start);
        return $res;
    }

    /**
     * decodes a mime encoded String and returns a
     * struct of parts with header and body
     *
     * @param  string $message  raw message content
     * @param  string $boundary boundary as found in content-type
     * @param  string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
     * @return array|null parts as array('header' => array(name => value), 'body' => content), null if no parts found
     * @throws Zend_Exception
     */
    public static function splitMessageStruct($message, $boundary, $EOL = Zend_Mime::LINEEND)
    {
        $parts = self::splitMime($message, $boundary);
        if (count($parts) <= 0) {
            return null;
        }
        $result = array();
        foreach ($parts as $part) {
            self::splitMessage($part, $headers, $body, $EOL);
            $result[] = array('header' => $headers,
                              'body'   => $body    );
        }
        return $result;
    }

    /**
     * split a message in header and body part, if no header or an
     * invalid header is found $headers is empty
     *
     * The charset of the returned headers depend on your iconv settings.
     *
     * @param  string $message raw message with header and optional content
     * @param  array  $headers output param, array with headers as array(name => value)
     * @param  string $body    output param, content of message
     * @param  string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND}
     * @return null
     */
    public static function splitMessage($message, &$headers, &$body, $EOL = Zend_Mime::LINEEND)
    {
        // check for valid header at first line
        $firstline = strtok($message, "\n");
        if (!preg_match('%^[^\s]+[^:]*:%', $firstline)) {
            $headers = array();
            // TODO: we're ignoring \r for now - is this function fast enough and is it safe to asume noone needs \r?
            $body = str_replace(array("\r", "\n"), array('', $EOL), $message);
            return;
        }

        // find an empty line between headers and body
        // default is set new line
        if (strpos($message, $EOL . $EOL)) {
            list($headers, $body) = explode($EOL . $EOL, $message, 2);
        // next is the standard new line
        } else if ($EOL != "\r\n" && strpos($message, "\r\n\r\n")) {
            list($headers, $body) = explode("\r\n\r\n", $message, 2);
        // next is the other "standard" new line
        } else if ($EOL != "\n" && strpos($message, "\n\n")) {
            list($headers, $body) = explode("\n\n", $message, 2);
        // at last resort find anything that looks like a new line
        } else {
            @list($headers, $body) = @preg_split("%([\r\n]+)\\1%U", $message, 2);
        }

        $headers = iconv_mime_decode_headers($headers, ICONV_MIME_DECODE_CONTINUE_ON_ERROR);

        if ($headers === false ) {
            // an error occurs during the decoding
            return;
        }

        // normalize header names
        foreach ($headers as $name => $header) {
            $lower = strtolower($name);
            if ($lower == $name) {
                continue;
            }
            unset($headers[$name]);
            if (!isset($headers[$lower])) {
                $headers[$lower] = $header;
                continue;
            }
            if (is_array($headers[$lower])) {
                $headers[$lower][] = $header;
                continue;
            }
            $headers[$lower] = array($headers[$lower], $header);
        }
    }

    /**
     * split a content type in its different parts
     *
     * @param  string $type       content-type
     * @param  string $wantedPart the wanted part, else an array with all parts is returned
     * @return string|array wanted part or all parts as array('type' => content-type, partname => value)
     */
    public static function splitContentType($type, $wantedPart = null)
    {
        return self::splitHeaderField($type, $wantedPart, 'type');
    }

    /**
     * split a header field like content type in its different parts
     *
     * @param  string $type       header field
     * @param  string $wantedPart the wanted part, else an array with all parts is returned
     * @param  string $firstName  key name for the first part
     * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value)
     * @throws Zend_Exception
     */
    public static function splitHeaderField($field, $wantedPart = null, $firstName = 0)
    {
        $wantedPart = strtolower($wantedPart);
        $firstName = strtolower($firstName);

        // special case - a bit optimized
        if ($firstName === $wantedPart) {
            $field = strtok($field, ';');
            return $field[0] == '"' ? substr($field, 1, -1) : $field;
        }

        $field = $firstName . '=' . $field;
        if (!preg_match_all('%([^=\s]+)\s*=\s*("[^"]+"|[^;]+)(;\s*|$)%', $field, $matches)) {
            throw new Zend_Exception('not a valid header field');
        }

        if ($wantedPart) {
            foreach ($matches[1] as $key => $name) {
                if (strcasecmp($name, $wantedPart)) {
                    continue;
                }
                if ($matches[2][$key][0] != '"') {
                    return $matches[2][$key];
                }
                return substr($matches[2][$key], 1, -1);
            }
            return null;
        }

        $split = array();
        foreach ($matches[1] as $key => $name) {
            $name = strtolower($name);
            if ($matches[2][$key][0] == '"') {
                $split[$name] = substr($matches[2][$key], 1, -1);
            } else {
                $split[$name] = $matches[2][$key];
            }
        }

        return $split;
    }

    /**
     * decode a quoted printable encoded string
     *
     * The charset of the returned string depends on your iconv settings.
     *
     * @param  string encoded string
     * @return string decoded string
     */
    public static function decodeQuotedPrintable($string)
    {
        return iconv_mime_decode($string, ICONV_MIME_DECODE_CONTINUE_ON_ERROR);
    }
}
PKpG[��l���
Exception.phpnu&1i�<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */


/**
 * @category   Zend
 * @package    Zend
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Exception extends Exception
{}

PKpG[�X�܄%�%Feed/Entry/Atom.phpnu&1i�PKpG[8_�2�%Feed/Entry/Rss.phpnu&1i�PKpG[�~Ν4Feed/Entry/Abstract.phpnu&1i�PKpG[�f��FFcDFeed/Builder.phpnu&1i�PKpG[\�d�.�.��Feed/Builder/Header.phpnu&1i�PKpG[1Dd��Feed/Builder/Exception.phpnu&1i�PKpG[�Y0m//e�Feed/Builder/Interface.phpnu&1i�PKpG[��/�ZZ��Feed/Builder/Header/Itunes.phpnu&1i�PKpG[D_v(����Feed/Builder/Entry.phpnu&1i�PKpG[��,�,�Feed/Element.phpnu&1i�PKpG[�N�t�5�5
�/Feed/Atom.phpnu&1i�PKpG[�h�5���eFeed/Abstract.phpnu&1i�PKpG[��$�J�J��Feed/Rss.phpnu&1i�PKpG[nJ���m�Feed/Exception.phpnu&1i�PKpG[F!���L�Date/DateObject.phpnu&1i�PKpG[q�*..�gDate/Exception.phpnu&1i�PKpG[�'�4�\�\mDate/Cities.phpnu&1i�PKpG[�777?�Loader/PluginLoader.phpnu&1i�PKpG[3��CmmLoader/Exception.phpnu&1i�PKpG[���h��!�Loader/PluginLoader/Interface.phpnu&1i�PKpG[����}}!�Loader/PluginLoader/Exception.phpnu&1i�PKpG[g��-))
�Filter.phpnu&1i�PKpG[��J�I�I#Rest/Server.phpnu&1i�PKpG[�"}�11LmRest/Server/Exception.phpnu&1i�PKpG[P�0sDD�qRest/Client/Exception.phpnu&1i�PKpG[��cc SvRest/Client/Result/Exception.phpnu&1i�PKpG[ڈx	00zRest/Client/Result.phpnu&1i�PKpG[�����|�Rest/Exception.phpnu&1i�PKpG[�~�����Rest/Client.phpnu&1i�PKpG[D'$�55
бDom/Query.phpnu&1i�PKpG[�ox==B�Dom/Exception.phpnu&1i�PKpG[w-_���Dom/Query/Css2Xpath.phpnu&1i�PKpG[% �Z���Dom/Query/Result.phpnu&1i�PKpG[�3$$�Mail/Message/Interface.phpnu&1i�PKpG[�ZN@S
S
��Mail/Message/File.phpnu&1i�PKpG[Z{ƒ���Mail/Transport/Sendmail.phpnu&1i�PKpG[]^�F��8Mail/Transport/Exception.phpnu&1i�PKpG[����(�(Mail/Transport/Abstract.phpnu&1i�PKpG[(x�a��)>Mail/Transport/Smtp.phpnu&1i�PKpG[--����UMail/Message.phpnu&1i�PKpG[w2-++�bMail/Part/File.phpnu&1i�PKpG[�rL\��`{Mail/Part/Interface.phpnu&1i�PKpG[�&�nmm(�Mail/Storage.phpnu&1i�PKpG[���Y5Y5
ՑMail/Part.phpnu&1i�PKpG[�]z�2�2k�Mail/Protocol/Pop3.phpnu&1i�PKpG[4<��	�	!I�Mail/Protocol/Smtp/Auth/Login.phpnu&1i�PKpG[�9��[[#rMail/Protocol/Smtp/Auth/Crammd5.phpnu&1i�PKpG[�OmЩ	�	! Mail/Protocol/Smtp/Auth/Plain.phpnu&1i�PKpG[!�Ӈg.g.Mail/Protocol/Smtp.phpnu&1i�PKpG[�Va�k�k�IMail/Protocol/Imap.phpnu&1i�PKpG[�`���&�&յMail/Protocol/Abstract.phpnu&1i�PKpG[��̃���Mail/Protocol/Exception.phpnu&1i�PKpG[�i_V??��Mail/Exception.phpnu&1i�PKpG[$�:���0�Mail/Storage/Exception.phpnu&1i�PKpG[Z�KK!��Mail/Storage/Folder/Interface.phpnu&1i�PKpG[T'��"�"��Mail/Storage/Folder/Maildir.phpnu&1i�PKpG[)ՃO""�Mail/Storage/Folder/Mbox.phpnu&1i�PKpG[�bzUUUU�7Mail/Storage/Imap.phpnu&1i�PKpG[B3�>&>&��Mail/Storage/Pop3.phpnu&1i�PKpG[���ii�Mail/Storage/Folder.phpnu&1i�PKpG[5$����#��Mail/Storage/Writable/Interface.phpnu&1i�PKpG[�kn�g�g�!��Mail/Storage/Writable/Maildir.phpnu&1i�PKpG[�5�3�3�vMail/Storage/Mbox.phpnu&1i�PKpG[κj)�8�8��Mail/Storage/Maildir.phpnu&1i�PKpG[�5�Dl$l$��Mail/Storage/Abstract.phpnu&1i�PKpG[����$$�Uri.phpnu&1i�PKpG[�ytt�Validate/NotEmpty.phpnu&1i�PKpG[���dd�%Validate/Between.phpnu&1i�PKpG[������@8Validate/Regex.phpnu&1i�PKpG[��L^^rDValidate/Alnum.phpnu&1i�PKpG[ ��^jjQValidate/Date.phpnu&1i�PKpG[�G@��	�	�mValidate/LessThan.phpnu&1i�PKpG[�<΋Q	Q	�wValidate/Interface.phpnu&1i�PKpG[u��;;0�Validate/Alpha.phpnu&1i�PKpG[�S�����Validate/Float.phpnu&1i�PKpG[�ɌKK��Validate/Exception.phpnu&1i�PKpG[0Tgoo>�Validate/StringLength.phpnu&1i�PKpG[î�7ww��Validate/InArray.phpnu&1i�PKpG[�-�}��Validate/Identical.phpnu&1i�PKpG[g:K���	�Validate/Hex.phpnu&1i�PKpG[��u�`
`
��Validate/Digits.phpnu&1i�PKpG[���	�	��Validate/GreaterThan.phpnu&1i�PKpG[rL>��Validate/Int.phpnu&1i�PKpG[�[�((��Validate/Abstract.phpnu&1i�PKpG[_�%k2	Validate/Ip.phpnu&1i�PKpG[Ú��+�+�	Validate/File/Size.phpnu&1i�PKpG[�y����J	Validate/File/MimeType.phpnu&1i�PKpG[����!�i	Validate/File/ExcludeMimeType.phpnu&1i�PKpG[dni�2,2,v	Validate/File/ImageSize.phpnu&1i�PKpG[ľx=��~�	Validate/File/Upload.phpnu&1i�PKpG[F\��BB"m�	Validate/File/ExcludeExtension.phpnu&1i�PKpG[����YY�	Validate/File/Exists.phpnu&1i�PKpG[�ۥEE��	Validate/File/Count.phpnu&1i�PKpG[Bl�߲�.�	Validate/File/Md5.phpnu&1i�PKpG[��\%
Validate/File/Sha1.phpnu&1i�PKpG[V��&
Validate/File/FilesSize.phpnu&1i�PKpG[Ra����;
Validate/File/Extension.phpnu&1i�PKpG[P���	�	&T
Validate/File/NotExists.phpnu&1i�PKpG[��g���^
Validate/File/Hash.phpnu&1i�PKpG[�܆*���s
Validate/File/Crc32.phpnu&1i�PKpG[�wp���2�
Validate/File/IsCompressed.phpnu&1i�PKpG[V��[�� �
Validate/File/IsImage.phpnu&1i�PKpG[�b���
�
3�
Validate/Barcode.phpnu&1i�PKpG[A)�u>u>)�
Validate/Hostname.phpnu&1i�PKpG[{OUy"y"��
Validate/EmailAddress.phpnu&1i�PKpG[9�=���Validate/Ccnum.phpnu&1i�PKpG[�>�\((�!Validate/Barcode/Ean13.phpnu&1i�PKpG[j�)ۣ
�
.Validate/Barcode/UpcA.phpnu&1i�PKpG[N����8Validate/Hostname/Se.phpnu&1i�PKpG[Pĝ��?Validate/Hostname/Li.phpnu&1i�PKpG[�~���?EValidate/Hostname/Hu.phpnu&1i�PKpG[�7�i��jKValidate/Hostname/At.phpnu&1i�PKpG[SD�����QValidate/Hostname/Ch.phpnu&1i�PKpG[7�j���WValidate/Hostname/Fi.phpnu&1i�PKpG[�53	3	�]Validate/Hostname/De.phpnu&1i�PKpG[G��??ggValidate/Hostname/Interface.phpnu&1i�PKpG[Pm�]]�nValidate/Hostname/No.phpnu&1i�PKpG[5���VV�uGdata/Entry.phpnu&1i�PKpG[;���q#q#/�Gdata/Health.phpnu&1i�PKpG[K�n92\2\�Gdata/YouTube.phpnu&1i�PKpG[��3R2020SGdata/Kind/EventEntry.phpnu&1i�PKpG[-�¶��7Gdata/Exif.phpnu&1i�PKpG[A_I3�?Gdata/Gapps/EmailListFeed.phpnu&1i�PKpG[����!! $FGdata/Gapps/ServiceException.phpnu&1i�PKpG[̿��LL&�aGdata/Gapps/EmailListRecipientFeed.phpnu&1i�PKpG[P�QZ7hGdata/Gapps/NicknameFeed.phpnu&1i�PKpG[Iz�M
C
C�nGdata/Gapps/Extension/Login.phpnu&1i�PKpG[���ff"�Gdata/Gapps/Extension/Nickname.phpnu&1i�PKpG[TwH2����Gdata/Gapps/Extension/Name.phpnu&1i�PKpG[`��~~��Gdata/Gapps/Extension/Quota.phpnu&1i�PKpG[��"��#\�Gdata/Gapps/Extension/EmailList.phpnu&1i�PKpG[�����':�Gdata/Gapps/EmailListRecipientQuery.phpnu&1i�PKpG[0�*��,
Gdata/Gapps/UserQuery.phpnu&1i�PKpG[�G��
Gdata/Gapps/UserFeed.phpnu&1i�PKpG[��k���E#
Gdata/Gapps/Query.phpnu&1i�PKpG[#��@@E2
Gdata/Gapps/NicknameQuery.phpnu&1i�PKpG[�����G
Gdata/Gapps/EmailListEntry.phpnu&1i�PKpG[�PqC���c
Gdata/Gapps/Error.phpnu&1i�PKpG[���\\Ă
Gdata/Gapps/EmailListQuery.phpnu&1i�PKpG[{tpZZn�
Gdata/Gapps/NicknameEntry.phpnu&1i�PKpG[��\%$%$�
Gdata/Gapps/UserEntry.phpnu&1i�PKpG[IB��

'��
Gdata/Gapps/EmailListRecipientEntry.phpnu&1i�PKpG[ѫ#�]]��
Gdata/ClientLogin.phpnu&1i�PKpG[�ϱ��N�N�Gdata/Photos.phpnu&1i�PKpG[�������QGdata/Extension.phpnu&1i�PKpG[�c9�l�l��XGdata/Gapps.phpnu&1i�PKpG[�c
k�#�#=�Gdata/AuthSub.phpnu&1i�PKpG[�w\X`!`!cGdata/HttpClient.phpnu&1i�PKpG[�H�Q��@Gdata/Gbase.phpnu&1i�PKpG[�7�i�	�	XGdata/Geo/Entry.phpnu&1i�PKpG[�uE�   HbGdata/Geo/Extension/GmlPoint.phpnu&1i�PKpG[�}VV#�qGdata/Geo/Extension/GeoRssWhere.phpnu&1i�PKpG[iT0�ssa�Gdata/Geo/Extension/GmlPos.phpnu&1i�PKpG[#$e##"�Gdata/Geo/Feed.phpnu&1i�PKpG[�8���
�
��Gdata/Extension/Visibility.phpnu&1i�PKpG[8�����Gdata/Extension/Where.phpnu&1i�PKpG[0Hi_��Gdata/Extension/Comments.phpnu&1i�PKpG[fb˕�
�
 �Gdata/Extension/AttendeeType.phpnu&1i�PKpG[��b%�
�
$'�Gdata/Extension/ExtendedProperty.phpnu&1i�PKpG[|	�ñ�+�Gdata/Extension/Rating.phpnu&1i�PKpG[<C��
�
"&�Gdata/Extension/AttendeeStatus.phpnu&1i�PKpG[�7)5�#�#g�Gdata/Extension/Who.phpnu&1i�PKpG[��ZZ*�!Gdata/Extension/OpenSearchItemsPerPage.phpnu&1i�PKpG[���Oa'Gdata/Extension/FeedLink.phpnu&1i�PKpG[k�w33'�9Gdata/Extension/RecurrenceException.phpnu&1i�PKpG[,p�9NUGdata/Extension/Recurrence.phpnu&1i�PKpG[p��xSS(�ZGdata/Extension/OpenSearchStartIndex.phpnu&1i�PKpG[���|��[`Gdata/Extension/Reminder.phpnu&1i�PKpG['��N
N
5rGdata/Extension/EventStatus.phpnu&1i�PKpG[�q�]���|Gdata/Extension/When.phpnu&1i�PKpG[M��
�
 ��Gdata/Extension/Transparency.phpnu&1i�PKpG[l��nZZ* �Gdata/Extension/OpenSearchTotalResults.phpnu&1i�PKpG[8Cl�
�
!ԢGdata/Extension/OriginalEvent.phpnu&1i�PKpG[S�[���Gdata/Extension/EntryLink.phpnu&1i�PKpG[�>b��(�Gdata/Health/ProfileEntry.phpnu&1i�PKpG[�m��[[t�Gdata/Health/ProfileFeed.phpnu&1i�PKpG[�x�4���Gdata/Health/Extension/Ccr.phpnu&1i�PKpG[`��
�� �Gdata/Health/ProfileListFeed.phpnu&1i�PKpG[Q�d�u!u!�Gdata/Health/Query.phpnu&1i�PKpG[�����!�Gdata/Health/ProfileListEntry.phpnu&1i�PKpG[�	tr�Gdata/Media/Entry.phpnu&1i�PKpG[97;���*(.Gdata/Media/Extension/MediaDescription.phpnu&1i�PKpG[�e��cc'L;Gdata/Media/Extension/MediaCategory.phpnu&1i�PKpG[�~Z���%MGdata/Media/Extension/MediaPlayer.phpnu&1i�PKpG[��z~�1�1&;_Gdata/Media/Extension/MediaContent.phpnu&1i�PKpG[I���*g�Gdata/Media/Extension/MediaRestriction.phpnu&1i�PKpG[Ϡ,���$֡Gdata/Media/Extension/MediaTitle.phpnu&1i�PKpG[r�t��#�Gdata/Media/Extension/MediaHash.phpnu&1i�PKpG[�΅�;;$d�Gdata/Media/Extension/MediaGroup.phpnu&1i�PKpG[���'��Gdata/Media/Extension/MediaKeywords.phpnu&1i�PKpG[������(��Gdata/Media/Extension/MediaThumbnail.phpnu&1i�PKpG[�ez?��(�Gdata/Media/Extension/MediaCopyright.phpnu&1i�PKpG[09�

%�Gdata/Media/Extension/MediaRating.phpnu&1i�PKpG[׽�{��%-Gdata/Media/Extension/MediaCredit.phpnu&1i�PKpG[�9n2��#=Gdata/Media/Extension/MediaText.phpnu&1i�PKpG[V�����"RGdata/Media/Feed.phpnu&1i�PKpG[tf���$�$RYGdata/Docs.phpnu&1i�PKpG[����%�%L~Gdata/Query.phpnu&1i�PKpG[-J�{{k�Gdata/Exif/Extension/Time.phpnu&1i�PKpG[�Nfww3�Gdata/Exif/Extension/Iso.phpnu&1i�PKpG[;I���Gdata/Exif/Extension/FStop.phpnu&1i�PKpG[�,�øGdata/Exif/Extension/Model.phpnu&1i�PKpG[l����!��Gdata/Exif/Extension/Exposure.phpnu&1i�PKpG[+#=���!l�Gdata/Exif/Extension/Distance.phpnu&1i�PKpG[
�;�A�AH�Gdata/Exif/Extension/Tags.phpnu&1i�PKpG[kK�{{+Gdata/Exif/Extension/Make.phpnu&1i�PKpG[s�Gdata/Exif/Extension/Flash.phpnu&1i�PKpG[�A\��&�Gdata/Exif/Extension/ImageUniqueId.phpnu&1i�PKpG[5D0��$�#Gdata/Exif/Extension/FocalLength.phpnu&1i�PKpG[�0`�*Gdata/Exif/Entry.phpnu&1i�PKpG[l�����;Gdata/Exif/Feed.phpnu&1i�PKpG[�B�K��BGdata/Calendar.phpnu&1i�PKpG[�t���%�UGdata/DublinCore/Extension/Format.phpnu&1i�PKpG[w�Թ�&]Gdata/DublinCore/Extension/Creator.phpnu&1i�PKpG[�q^��*%dGdata/DublinCore/Extension/Description.phpnu&1i�PKpG[J4\˿�(
kGdata/DublinCore/Extension/Publisher.phpnu&1i�PKpG[3H��)!rGdata/DublinCore/Extension/Identifier.phpnu&1i�PKpG[-�j!{{&RyGdata/DublinCore/Extension/Subject.phpnu&1i�PKpG[�M-��##�Gdata/DublinCore/Extension/Date.phpnu&1i�PKpG[D�EɄ�'j�Gdata/DublinCore/Extension/Language.phpnu&1i�PKpG[xJ"�$E�Gdata/DublinCore/Extension/Title.phpnu&1i�PKpG[�[��%�Gdata/DublinCore/Extension/Rights.phpnu&1i�PKpG[��22
'�Gdata/Geo.phpnu&1i�PKpG[��w#����Gdata/DublinCore.phpnu&1i�PKpG[�`B��c�Gdata/Media.phpnu&1i�PKpG[yiA�Gdata/YouTube/CommentEntry.phpnu&1i�PKpG[!K-J�&�&&��Gdata/YouTube/Extension/MediaGroup.phpnu&1i�PKpG[wj)��"��Gdata/YouTube/Extension/Status.phpnu&1i�PKpG["9r�#l�Gdata/YouTube/Extension/Control.phpnu&1i�PKpG[&/P
!�Gdata/YouTube/Extension/Token.phpnu&1i�PKpG[}0�V&&#��Gdata/YouTube/Extension/NoEmbed.phpnu&1i�PKpG[�\��(Gdata/YouTube/Extension/Relationship.phpnu&1i�PKpG[�}ސ�'�Gdata/YouTube/Extension/Description.phpnu&1i�PKpG[�-�>ww!�Gdata/YouTube/Extension/State.phpnu&1i�PKpG[}����&�(Gdata/YouTube/Extension/PlaylistId.phpnu&1i�PKpG[�7�M	M	$�.Gdata/YouTube/Extension/Position.phpnu&1i�PKpG[�7�‡�$)8Gdata/YouTube/Extension/Uploaded.phpnu&1i�PKpG[��+h��%>Gdata/YouTube/Extension/FirstName.phpnu&1i�PKpG[Sq�g��"�CGdata/YouTube/Extension/Movies.phpnu&1i�PKpG[6^���"�IGdata/YouTube/Extension/Gender.phpnu&1i�PKpG[���n66 �OGdata/YouTube/Extension/Link.phpnu&1i�PKpG[�����#`Gdata/YouTube/Extension/Company.phpnu&1i�PKpG[���f��%�eGdata/YouTube/Extension/CountHint.phpnu&1i�PKpG[~�A��$�kGdata/YouTube/Extension/Recorded.phpnu&1i�PKpG[�l��xx�qGdata/YouTube/Extension/Age.phpnu&1i�PKpG[�ñ	��'gwGdata/YouTube/Extension/MediaRating.phpnu&1i�PKpG[�o���#��Gdata/YouTube/Extension/AboutMe.phpnu&1i�PKpG[����$~�Gdata/YouTube/Extension/Hometown.phpnu&1i�PKpG[�kL���'Y�Gdata/YouTube/Extension/MediaCredit.phpnu&1i�PKpG[�;Jݿ�$8�Gdata/YouTube/Extension/Duration.phpnu&1i�PKpG[
�!``(K�Gdata/YouTube/Extension/MediaContent.phpnu&1i�PKpG[t� ���$�Gdata/YouTube/Extension/Username.phpnu&1i�PKpG[XJG��'��Gdata/YouTube/Extension/ReleaseDate.phpnu&1i�PKpG[���~~!��Gdata/YouTube/Extension/Music.phpnu&1i�PKpG[��`��$��Gdata/YouTube/Extension/LastName.phpnu&1i�PKpG[6��^UU o�Gdata/YouTube/Extension/Racy.phpnu&1i�PKpG[sE9���&�Gdata/YouTube/Extension/Occupation.phpnu&1i�PKpG[V餮��)��Gdata/YouTube/Extension/PlaylistTitle.phpnu&1i�PKpG[͚1���'�Gdata/YouTube/Extension/QueryString.phpnu&1i�PKpG[�ԭ���$�Gdata/YouTube/Extension/Location.phpnu&1i�PKpG[�J��	�	#�Gdata/YouTube/Extension/Private.phpnu&1i�PKpG[�Eѩ��"�Gdata/YouTube/Extension/School.phpnu&1i�PKpG[�����&�Gdata/YouTube/Extension/Statistics.phpnu&1i�PKpG[>��0��#�%Gdata/YouTube/Extension/VideoId.phpnu&1i�PKpG[s'.���#�+Gdata/YouTube/Extension/Hobbies.phpnu&1i�PKpG[�Y�~~!1Gdata/YouTube/Extension/Books.phpnu&1i�PKpG[�TE�WW$N7Gdata/YouTube/PlaylistVideoEntry.phpnu&1i�PKpG[�3H�GGdata/YouTube/CommentFeed.phpnu&1i�PKpG[���]��"dOGdata/YouTube/SubscriptionFeed.phpnu&1i�PKpG[c���WGdata/YouTube/VideoFeed.phpnu&1i�PKpG[P�X����^Gdata/YouTube/ContactEntry.phpnu&1i�PKpG[�u���"�nGdata/YouTube/PlaylistListFeed.phpnu&1i�PKpG[A?�A��#�vGdata/YouTube/PlaylistVideoFeed.phpnu&1i�PKpG[�x���Gdata/YouTube/MediaEntry.phpnu&1i�PKpG[vx���t�t"4�Gdata/YouTube/UserProfileEntry.phpnu&1i�PKpG[fݭ��B�BQ�Gdata/YouTube/VideoQuery.phpnu&1i�PKpG[�P16�9�9#W@Gdata/YouTube/SubscriptionEntry.phpnu&1i�PKpG[��)��%�%#izGdata/YouTube/PlaylistListEntry.phpnu&1i�PKpG[;)�{����Gdata/YouTube/VideoEntry.phpnu&1i�PKpG[/������$Gdata/YouTube/ContactFeed.phpnu&1i�PKpG[{�׍ǗǗ
�,Gdata/App.phpnu&1i�PKpG[yF��YY��Gdata/App/Extension.phpnu&1i�PKpG[��cA��&5�Gdata/App/InvalidArgumentException.phpnu&1i�PKpG[��C�8�Gdata/App/Extension/Title.phpnu&1i�PKpG[(?_/�Gdata/App/Extension/Icon.phpnu&1i�PKpG[�d�D��Gdata/App/Extension/Uri.phpnu&1i�PKpG[�nP���Gdata/App/Extension/Email.phpnu&1i�PKpG[�5���A�Gdata/App/Extension/Summary.phpnu&1i�PKpG[�9���@�Gdata/App/Extension/Content.phpnu&1i�PKpG[�\2��� q�Gdata/App/Extension/Subtitle.phpnu&1i�PKpG[�o�c\
\
t�Gdata/App/Extension/Control.phpnu&1i�PKpG[�����Gdata/App/Extension/Author.phpnu&1i�PKpG[�N��<<Gdata/App/Extension/Person.phpnu&1i�PKpG[�t'�
�
 �Gdata/App/Extension/Category.phpnu&1i�PKpG[Pjk����%Gdata/App/Extension/Link.phpnu&1i�PKpG[R"�{���:Gdata/App/Extension/Source.phpnu&1i�PKpG[�f�?Gdata/App/Extension/Name.phpnu&1i�PKpG[W�TDCEGdata/App/Extension/Logo.phpnu&1i�PKpG[�X�n!�JGdata/App/Extension/Published.phpnu&1i�PKpG[!h�>

PGdata/App/Extension/Id.phpnu&1i�PKpG[�ׇ�cUGdata/App/Extension/Updated.phpnu&1i�PKpG[���199�ZGdata/App/Extension/Draft.phpnu&1i�PKpG[E@�%%Q`Gdata/App/Extension/Rights.phpnu&1i�PKpG[���C	C	�eGdata/App/Extension/Text.phpnu&1i�PKpG[ꧮS��!SoGdata/App/Extension/Generator.phpnu&1i�PKpG[;�Q���#Q{Gdata/App/Extension/Contributor.phpnu&1i�PKpG[�|���_�Gdata/App/Extension/Element.phpnu&1i�PKpG[��@�
�
&��Gdata/App/CaptchaRequiredException.phpnu&1i�PKpG[,�c%��j�Gdata/App/AuthException.phpnu&1i�PKpG[��G~��[�Gdata/App/Util.phpnu&1i�PKpG[�'#��*�*Y�Gdata/App/Entry.phpnu&1i�PKpG[h�3spp1�Gdata/App/MediaFileSource.phpnu&1i�PKpG[�U
�

,��Gdata/App/LoggingHttpClientAdapterSocket.phpnu&1i�PKpG[���(Y�Gdata/App/MediaEntry.phpnu&1i�PKpG["C�8GG�Gdata/App/BaseMediaSource.phpnu&1i�PKpG[ړ��U�UQGdata/App/FeedEntryParent.phpnu&1i�PKpG[����}mGdata/App/MediaSource.phpnu&1i�PKpG[����NvGdata/App/VersionException.phpnu&1i�PKpG[f�¶�Q{Gdata/App/HttpException.phpnu&1i�PKpG[n)�qEqER�Gdata/App/Base.phpnu&1i�PKpG[ $$����Gdata/App/FeedSourceParent.phpnu&1i�PKpG[�
�q�%�%=�Gdata/App/Feed.phpnu&1i�PKpG[(�|��gGdata/App/IOException.phpnu&1i�PKpG[��.Ƴ�$`Gdata/App/BadMethodCallException.phpnu&1i�PKpG[�;���gGdata/App/Exception.phpnu&1i�PKpG[AF��7Gdata/Docs/Query.phpnu&1i�PKpG[��a  ;6Gdata/Docs/DocumentListFeed.phpnu&1i�PKpG[��N� �=Gdata/Docs/DocumentListEntry.phpnu&1i�PKpG[���ffDGdata/Calendar/ListFeed.phpnu&1i�PKpG[�[V���OGdata/Calendar/EventEntry.phpnu&1i�PKpG[�j�hh�cGdata/Calendar/ListEntry.phpnu&1i�PKpG[�Y����3jGdata/Calendar/Extension/SendEventNotifications.phpnu&1i�PKpG[�|���%��Gdata/Calendar/Extension/QuickAdd.phpnu&1i�PKpG[A]�O��"ڟGdata/Calendar/Extension/Color.phpnu&1i�PKpG[�_�''!ȮGdata/Calendar/Extension/Link.phpnu&1i�PKpG[���c��#@�Gdata/Calendar/Extension/Hidden.phpnu&1i�PKpG[�u��

%��Gdata/Calendar/Extension/Selected.phpnu&1i�PKpG[wݵ��(��Gdata/Calendar/Extension/AccessLevel.phpnu&1i�PKpG[��--'�Gdata/Calendar/Extension/WebContent.phpnu&1i�PKpG[%�ٻ%�Gdata/Calendar/Extension/Timezone.phpnu&1i�PKpG[���1�
�
hGdata/Calendar/EventFeed.phpnu&1i�PKpG[��P//�Gdata/Calendar/EventQuery.phpnu&1i�PKpG[����AANGdata/Gbase/SnippetFeed.phpnu&1i�PKpG[{�5�RR�SGdata/Gbase/ItemEntry.phpnu&1i�PKpG[2�C��:jGdata/Gbase/SnippetQuery.phpnu&1i�PKpG[��|l	l	;rGdata/Gbase/ItemQuery.phpnu&1i�PKpG[�B<TT�{Gdata/Gbase/SnippetEntry.phpnu&1i�PKpG[���>>��Gdata/Gbase/ItemFeed.phpnu&1i�PKpG[v?�$##�Gdata/Gbase/Entry.phpnu&1i�PKpG[O�??'~�Gdata/Gbase/Extension/BaseAttribute.phpnu&1i�PKpG[	�]]�Gdata/Gbase/Feed.phpnu&1i�PKpG[�-Tb����Gdata/Gbase/Query.phpnu&1i�PKpG[B,��

��Gdata/Feed.phpnu&1i�PKpG[�`�z�9�9��Gdata/Spreadsheets.phpnu&1i�PKpG[)�`|�(�( �Gdata/Spreadsheets/CellQuery.phpnu&1i�PKpG[�VQ��2GGdata/Spreadsheets/ListFeed.phpnu&1i�PKpG[8�$UU%\NGdata/Spreadsheets/WorksheetEntry.phpnu&1i�PKpG[�Pzmm'fGdata/Spreadsheets/SpreadsheetEntry.phpnu&1i�PKpG[���%��)�mGdata/Spreadsheets/Extension/RowCount.phpnu&1i�PKpG[m(�x%�tGdata/Spreadsheets/Extension/Cell.phpnu&1i�PKpG[���e��)ˊGdata/Spreadsheets/Extension/ColCount.phpnu&1i�PKpG[	����'��Gdata/Spreadsheets/Extension/Custom.phpnu&1i�PKpG[��K�� �Gdata/Spreadsheets/CellEntry.phpnu&1i�PKpG[���w��&�Gdata/Spreadsheets/SpreadsheetFeed.phpnu&1i�PKpG[�?T??0�Gdata/Spreadsheets/CellFeed.phpnu&1i�PKpG[*�*�� ��Gdata/Spreadsheets/ListQuery.phpnu&1i�PKpG[j"���$��Gdata/Spreadsheets/WorksheetFeed.phpnu&1i�PKpG[�i�`` ��Gdata/Spreadsheets/ListEntry.phpnu&1i�PKpG[x2$�Gdata/Spreadsheets/DocumentQuery.phpnu&1i�PKpG[/��}���"Gdata/Books/VolumeQuery.phpnu&1i�PKpG[��]���.Gdata/Books/VolumeFeed.phpnu&1i�PKpG[��L�GG'�5Gdata/Books/Extension/BooksCategory.phpnu&1i�PKpG[=����%�=Gdata/Books/Extension/PreviewLink.phpnu&1i�PKpG[��%%�
�
%iEGdata/Books/Extension/Viewability.phpnu&1i�PKpG[�a?k(�SGdata/Books/Extension/AnnotationLink.phpnu&1i�PKpG[��͘�'#\Gdata/Books/Extension/ThumbnailLink.phpnu&1i�PKpG[�qw���#dGdata/Books/Extension/BooksLink.phpnu&1i�PKpG[rO��"lGdata/Books/Extension/InfoLink.phpnu&1i�PKpG[e�zU�� �sGdata/Books/Extension/Review.phpnu&1i�PKpG[�J��'�Gdata/Books/Extension/Embeddability.phpnu&1i�PKpG[���sKsKo�Gdata/Books/VolumeEntry.phpnu&1i�PKpG[$�c��-�Gdata/Books/CollectionFeed.phpnu&1i�PKpG[��+�Gdata/Books/CollectionEntry.phpnu&1i�PKpG[���LL��Gdata/Books.phpnu&1i�PKpG[�|j�6'6' Gdata/Photos/UserQuery.phpnu&1i�PKpG[&����,Gdata/Photos/AlbumQuery.phpnu&1i�PKpG[߇r����>Gdata/Photos/CommentEntry.phpnu&1i�PKpG[9ĝ���&VGdata/Photos/TagEntry.phpnu&1i�PKpG[��Y~G~G=gGdata/Photos/AlbumEntry.phpnu&1i�PKpG[���D�Gdata/Photos/UserFeed.phpnu&1i�PKpG[�>�J�+�+Z�Gdata/Photos/UserEntry.phpnu&1i�PKpG[�Nh���#t�Gdata/Photos/Extension/Nickname.phpnu&1i�PKpG[�����$~Gdata/Photos/Extension/Thumbnail.phpnu&1i�PKpG[�CDyy"�Gdata/Photos/Extension/PhotoId.phpnu&1i�PKpG[�{;;'aGdata/Photos/Extension/CommentCount.phpnu&1i�PKpG[Y]���'�Gdata/Photos/Extension/QuotaCurrent.phpnu&1i�PKpG[�۞��"'Gdata/Photos/Extension/Version.phpnu&1i�PKpG[#��L��!K$Gdata/Photos/Extension/Access.phpnu&1i�PKpG[�����|+Gdata/Photos/Extension/Name.phpnu&1i�PKpG[�=S��-o2Gdata/Photos/Extension/NumPhotosRemaining.phpnu&1i�PKpG[�N?��#�9Gdata/Photos/Extension/Location.phpnu&1i�PKpG[Ǟ���$�@Gdata/Photos/Extension/BytesUsed.phpnu&1i�PKpG[
�!s$�GGdata/Photos/Extension/Timestamp.phpnu&1i�PKpG[_�x,;OGdata/Photos/Extension/CommentingEnabled.phpnu&1i�PKpG[ѴB���VGdata/Photos/Extension/Size.phpnu&1i�PKpG[pVzW��!�]Gdata/Photos/Extension/Weight.phpnu&1i�PKpG[�.=T��%�dGdata/Photos/Extension/QuotaLimit.phpnu&1i�PKpG[L�B���lGdata/Photos/Extension/Id.phpnu&1i�PKpG[Dd?�"sGdata/Photos/Extension/AlbumId.phpnu&1i�PKpG[�ޞ��#jzGdata/Photos/Extension/Rotation.phpnu&1i�PKpG[Zg��#��Gdata/Photos/Extension/Position.phpnu&1i�PKpG[�2�Z��!��Gdata/Photos/Extension/Height.phpnu&1i�PKpG[�����#��Gdata/Photos/Extension/Checksum.phpnu&1i�PKpG[jbҴ���Gdata/Photos/Extension/User.phpnu&1i�PKpG[��Ο��$ٝGdata/Photos/Extension/NumPhotos.phpnu&1i�PKpG[�D��,�Gdata/Photos/Extension/MaxPhotosPerAlbum.phpnu&1i�PKpG[��m�� 8�Gdata/Photos/Extension/Width.phpnu&1i�PKpG[:wXP��!.�Gdata/Photos/Extension/Client.phpnu&1i�PKpG[�O#c�O�OV�Gdata/Photos/PhotoEntry.phpnu&1i�PKpG[d�2�C�CM
 Gdata/Photos/PhotoFeed.phpnu&1i�PKpG[Q$5�
�
%N Gdata/Photos/PhotoQuery.phpnu&1i�PKpG[�b!�
>
>cY Gdata/Photos/AlbumFeed.phpnu&1i�PKpG[R'h�		
�� Memory.phpnu&1i�PKpG[o����� Translate/Adapter/Qt.phpnu&1i�PKpG[(�^���� Translate/Adapter/XmlTm.phpnu&1i�PKpG[�2������ Translate/Adapter/Tmx.phpnu&1i�PKpG[������ Translate/Adapter/Csv.phpnu&1i�PKpG[XVE����� Translate/Adapter/Gettext.phpnu&1i�PKpG[7C�
�
�	!Translate/Adapter/Ini.phpnu&1i�PKpG[5�P���!Translate/Adapter/Tbx.phpnu&1i�PKpG[�W�����-!Translate/Adapter/Xliff.phpnu&1i�PKpG[T%:;;�L!Translate/Adapter/Array.phpnu&1i�PKpG[;�j�*X*XRX!Translate/Adapter.phpnu&1i�PKpG[C�OII��!Translate/Exception.phpnu&1i�PKpG[;�хY�YQ�!Uri/Http.phpnu&1i�PKpG[�9((PP"Uri/Exception.phpnu&1i�PKpG[bض���"Layout/Exception.phpnu&1i�PKpG[��Ը�#�"Layout/Controller/Plugin/Layout.phpnu&1i�PKpG[���MM*�("Layout/Controller/Action/Helper/Layout.phpnu&1i�PKpG[��y%]]�<"Log.phpnu&1i�PKpG[�����$X"Ldap/Exception.phpnu&1i�PKpG[5<���	�	s"Config/Writer.phpnu&1i�PKpG[�*�/��.}"Config/Exception.phpnu&1i�PKpG[�x�=!=!o�"Config/Xml.phpnu&1i�PKpG[Q�Lo���"Config/Writer/Array.phpnu&1i�PKpG[լ���ܮ"Config/Writer/Ini.phpnu&1i�PKpG[e�aa��"Config/Writer/Xml.phpnu&1i�PKpG[��$�$N�"Config/Ini.phpnu&1i�PKpG[u���000�"Http/CookieJar.phpnu&1i�PKpG[�7|�%�%y(#Http/Client/Adapter/Proxy.phpnu&1i�PKpG[�(*iLL�N#Http/Client/Adapter/Test.phpnu&1i�PKpG[�
�&��!Bd#Http/Client/Adapter/Exception.phpnu&1i�PKpG[�
�w2020i#Http/Client/Adapter/Socket.phpnu&1i�PKpG[�
��!��#Http/Client/Adapter/Interface.phpnu&1i�PKpG["��dd��#Http/Client/Exception.phpnu&1i�PKpG[�?oCoC]�#Http/Response.phpnu&1i�PKpG[����$$
�#Http/Cookie.phpnu&1i�PKpG[��s���O$Http/Client.phpnu&1i�PKpG[/jM�LL��$Http/Exception.phpnu&1i�PKpG[����0�06�$Measure/Density.phpnu&1i�PKpG[��@��3�3g�$Measure/Number.phpnu&1i�PKpG[>)+��8�8m%Measure/Energy.phpnu&1i�PKpG[�G:�SH%Measure/Binary.phpnu&1i�PKpG[@�D�ee�^%Measure/Force.phpnu&1i�PKpG[}C
bbQs%Measure/Capacitance.phpnu&1i�PKpG[�ݝHDHD��%Measure/Area.phpnu&1i�PKpG[TAG�3�3��%Measure/Speed.phpnu&1i�PKpG[�sc"z/z/h�%Measure/Power.phpnu&1i�PKpG[��kNN#,&Measure/Exception.phpnu&1i�PKpG[��<�**�0&Measure/Illumination.phpnu&1i�PKpG[�(~d(<&Measure/Viscosity/Kinematic.phpnu&1i�PKpG[a'���S&Measure/Viscosity/Dynamic.phpnu&1i�PKpG[D[�v�g�g�m&Measure/Weight.phpnu&1i�PKpG[���11��&Measure/Current.phpnu&1i�PKpG[\�"���&Measure/Frequency.phpnu&1i�PKpG[J��KK
�&Measure/Lightness.phpnu&1i�PKpG[ J���'Measure/Angle.phpnu&1i�PKpG[�aSt;t;~'Measure/Pressure.phpnu&1i�PKpG[�ի��%�%6L'Measure/Cooking/Volume.phpnu&1i�PKpG[��C�Br'Measure/Cooking/Weight.phpnu&1i�PKpG[,p&�+�+�}'Measure/Volume.phpnu&1i�PKpG[����u
u
k�'Measure/Torque.phpnu&1i�PKpG[&����"�'Measure/Acceleration.phpnu&1i�PKpG[4���$�'Measure/Temperature.phpnu&1i�PKpG[
͂F�*�*A�'Measure/Abstract.phpnu&1i�PKpG[1��}�}��'Measure/Length.phpnu&1i�PKpG[Y�s���ڈ(Measure/Time.phpnu&1i�PKpG[�|="33�(Measure/Flow/Mass.phpnu&1i�PKpG[�7���j�(Measure/Flow/Mole.phpnu&1i�PKpG[^��^~^~c�(Measure/Flow/Volume.phpnu&1i�PKpG[Yh���F)Validate.phpnu&1i�PKpG[�5��"�"�Z)TimeSync.phpnu&1i�PKpG[�`6�-�-$�})Test/PHPUnit/Constraint/DomQuery.phpnu&1i�PKpG[�e��%�)Test/PHPUnit/Constraint/Exception.phpnu&1i�PKpG[���.��$M�)Test/PHPUnit/Constraint/Redirect.phpnu&1i�PKpG[-��9t0t0*s�)Test/PHPUnit/Constraint/ResponseHeader.phpnu&1i�PKpG[�]�6b�b�#A�)Test/PHPUnit/ControllerTestCase.phpnu&1i�PKpG[��
33��*Feed.phpnu&1i�PKpG[���-��L�*Form/Decorator/FormElements.phpnu&1i�PKpG[�T�n�$�$��*Form/Decorator/Label.phpnu&1i�PKpG[���i��j�*Form/Decorator/Image.phpnu&1i�PKpG[?�����+Form/Decorator/Interface.phpnu&1i�PKpG[�=_�"�
+Form/Decorator/PrepareElements.phpnu&1i�PKpG[:�,����+Form/Decorator/ViewScript.phpnu&1i�PKpG[v�?%%�*+Form/Decorator/Abstract.phpnu&1i�PKpG[�[���7C+Form/Decorator/Exception.phpnu&1i�PKpG[9���+H+Form/Decorator/Callback.phpnu&1i�PKpG[�"���XX+Form/Decorator/ViewHelper.phpnu&1i�PKpG[qV�u��Zu+Form/Decorator/Form.phpnu&1i�PKpG[2���*�+Form/Decorator/DtDdWrapper.phpnu&1i�PKpG[�XXN�+Form/Decorator/Errors.phpnu&1i�PKpG[�r**��+Form/Decorator/File.phpnu&1i�PKpG[m�p��'�+Form/Decorator/Fieldset.phpnu&1i�PKpG[mi�W�+Form/Decorator/Captcha.phpnu&1i�PKpG[��hl},},��+Form/Decorator/FormErrors.phpnu&1i�PKpG[��:@@w�+Form/Decorator/HtmlTag.phpnu&1i�PKpG[��W"��,Form/Decorator/Captcha/Word.phpnu&1i�PKpG[�͡�
,Form/Decorator/Description.phpnu&1i�PKpG[��[#]],Form/Exception.phpnu&1i�PKpG[�t3A�A��#,Form/Element.phpnu&1i�PKpG[3G�|��,-Form/SubForm.phpnu&1i�PKpG[1��@^^*-Form/Element/MultiCheckbox.phpnu&1i�PKpG[����-Form/Element/Hash.phpnu&1i�PKpG[�7)�O	O	,-Form/Element/Password.phpnu&1i�PKpG[��
O���5-Form/Element/Captcha.phpnu&1i�PKpG[�Z:��S-Form/Element/Button.phpnu&1i�PKpG[	��6Y-Form/Element/Radio.phpnu&1i�PKpG[O!���^-Form/Element/Reset.phpnu&1i�PKpG[�+���c-Form/Element/Submit.phpnu&1i�PKpG[;3�/jRjR+p-Form/Element/File.phpnu&1i�PKpG[�E

��-Form/Element/Hidden.phpnu&1i�PKpG[�!�5

.�-Form/Element/Text.phpnu&1i�PKpG[� ޭ  ��-Form/Element/Checkbox.phpnu&1i�PKpG[��S�����-Form/Element/Image.phpnu&1i�PKpG[T�P8��	�-Form/Element/Xhtml.phpnu&1i�PKpG[��D����-Form/Element/Multiselect.phpnu&1i�PKpG['΁/�-Form/Element/Select.phpnu&1i�PKpG[V�FƢ���-Form/Element/Exception.phpnu&1i�PKpG[�?E�s.Form/Element/Multi.phpnu&1i�PKpG[�*-�".Form/Element/Textarea.phpnu&1i�PKpG[RXVg�l�l/(.Form/DisplayGroup.phpnu&1i�PKpG[R�Y��^�.TimeSync/Exception.phpnu&1i�PKpG[p�A��V�.TimeSync/Protocol.phpnu&1i�PKpG[۫a��5�5y�.TimeSync/Ntp.phpnu&1i�PKpG[Qᐊ��@�.TimeSync/Sntp.phpnu&1i�PKpG[u:		�.ProgressBar.phpnu&1i�PKpG[0QW��Z/Paginator/Adapter/Interface.phpnu&1i�PKpG[=ŊS��w
/Paginator/Adapter/DbSelect.phpnu&1i�PKpG[������$/Paginator/Adapter/Null.phpnu&1i�PKpG[�ŻM�,/Paginator/Adapter/Array.phpnu&1i�PKpG[	�>�TT#�4/Paginator/Adapter/DbTableSelect.phpnu&1i�PKpG[Q?_

�;/Paginator/Adapter/Iterator.phpnu&1i�PKpG[n��.NN�E/Paginator/Exception.phpnu&1i�PKpG[MJ��JJ$�J/Paginator/ScrollingStyle/Jumping.phpnu&1i�PKpG[�f��d
d
$-S/Paginator/ScrollingStyle/Sliding.phpnu&1i�PKpG[�ڐ��� �]/Paginator/ScrollingStyle/All.phpnu&1i�PKpG[��A�22$�d/Paginator/ScrollingStyle/Elastic.phpnu&1i�PKpG[��A}))&�m/Paginator/ScrollingStyle/Interface.phpnu&1i�PKpG[���g#g#s/Mime.phpnu&1i�PKpG[>-��������/OpenId/Consumer.phpnu&1i�PKpG[�C��%%�0OpenId/Exception.phpnu&1i�PKpG[�) WiiJ"0OpenId/Provider.phpnu&1i�PKpG[r
d�O
O
��0OpenId/Provider/Storage.phpnu&1i�PKpG[ޭrK�
�
 ;�0OpenId/Provider/User/Session.phpnu&1i�PKpG[6���vvj�0OpenId/Provider/User.phpnu&1i�PKpG[�Ov�---- (�0OpenId/Provider/Storage/File.phpnu&1i�PKpG[.��T##��0OpenId/Extension/Sreg.phpnu&1i�PKpG[�Y����0OpenId/Extension.phpnu&1i�PKpG[Ā�I�7�7 41OpenId/Consumer/Storage/File.phpnu&1i�PKpG[ �Ԡ��gD1OpenId/Consumer/Storage.phpnu&1i�PKpG[A��fzz�V1Console/Getopt.phpnu&1i�PKpG[������1Console/Getopt/Exception.phpnu&1i�PKpG[�޿���S�1Cache/Backend/File.phpnu&1i�PKpG[����.�.X]2Cache/Backend/ZendPlatform.phpnu&1i�PKpG[r��#�H�H*�2Cache/Backend/TwoLevels.phpnu&1i�PKpG[��v$�Y�YZ�2Cache/Backend/Sqlite.phpnu&1i�PKpG[���k==�/3Cache/Backend/Memcached.phpnu&1i�PKpG[|�J't+t+�l3Cache/Backend/Apc.phpnu&1i�PKpG[6x����3Cache/Backend/Xcache.phpnu&1i�PKpG[�6I��ִ3Cache/Backend/Interface.phpnu&1i�PKpG[�EzRR�3Cache/Backend/Test.phpnu&1i�PKpG[g$����#��3Cache/Backend/ExtendedInterface.phpnu&1i�PKpG[	@�#����3Cache/Frontend/Function.phpnu&1i�PKpG[Q�e�>>i4Cache/Frontend/Class.phpnu&1i�PKpG[��%T7T7� 4Cache/Frontend/Page.phpnu&1i�PKpG[K��vv�X4Cache/Frontend/File.phpnu&1i�PKpG[�6.i
i
Gi4Cache/Frontend/Output.phpnu&1i�PKpG[LVi���v4Cache/Exception.phpnu&1i�PKpG[��T���"{4Cache/Backend.phpnu&1i�PKpG[_MQ0�U�U\�4Cache/Core.phpnu&1i�PKpG[9�|��	�	�4InfoCard/Adapter/Interface.phpnu&1i�PKpG[I�
��3�4InfoCard/Adapter/Exception.phpnu&1i�PKpG[�
�jj�4InfoCard/Adapter/Default.phpnu&1i�PKpG[�e�����5InfoCard/Xml/Exception.phpnu&1i�PKpG[��J��-�	5InfoCard/Xml/Security/Transform/Interface.phpnu&1i�PKpG[�����-�5InfoCard/Xml/Security/Transform/Exception.phpnu&1i�PKpG[ğ�I>>.D5InfoCard/Xml/Security/Transform/XmlExcC14N.phpnu&1i�PKpG[��$OO6�5InfoCard/Xml/Security/Transform/EnvelopedSignature.phpnu&1i�PKpG[r�?��#�&5InfoCard/Xml/Security/Exception.phpnu&1i�PKpG[U�`���#�+5InfoCard/Xml/Security/Transform.phpnu&1i�PKpG[��1��:5InfoCard/Xml/Assertion.phpnu&1i�PKpG[�Q�;;.F5InfoCard/Xml/Element.phpnu&1i�PKpG[r���� �T5InfoCard/Xml/KeyInfo/Default.phpnu&1i�PKpG[�0		 �]5InfoCard/Xml/KeyInfo/XmlDSig.phpnu&1i�PKpG[�T~F��!;g5InfoCard/Xml/KeyInfo/Abstract.phpnu&1i�PKpG[������"Gl5InfoCard/Xml/KeyInfo/Interface.phpnu&1i�PKpG[
AIy��"uq5InfoCard/Xml/Element/Interface.phpnu&1i�PKpG[;�*��	�	Sw5InfoCard/Xml/EncryptedData.phpnu&1i�PKpG[�O�\\:�5InfoCard/Xml/EncryptedKey.phpnu&1i�PKpG[H������5InfoCard/Xml/KeyInfo.phpnu&1i�PKpG[�Z���$�5InfoCard/Xml/Assertion/Interface.phpnu&1i�PKpG[ �8�""�5InfoCard/Xml/Assertion/Saml.phpnu&1i�PKpG[�U�~~%L�5InfoCard/Xml/EncryptedData/XmlEnc.phpnu&1i�PKpG[��o���'�5InfoCard/Xml/EncryptedData/Abstract.phpnu&1i�PKpG[��oϑ+�+I�5InfoCard/Xml/Security.phpnu&1i�PKpG[%�?��'#6InfoCard/Xml/SecurityTokenReference.phpnu&1i�PKpG[�*G�	�	(;&6InfoCard/Cipher/Pki/Adapter/Abstract.phpnu&1i�PKpG[�JI�cc#l06InfoCard/Cipher/Pki/Adapter/Rsa.phpnu&1i�PKpG[G��Uyy!"@6InfoCard/Cipher/Pki/Interface.phpnu&1i�PKpG[�q�tt%�D6InfoCard/Cipher/Pki/Rsa/Interface.phpnu&1i�PKpG[m��w���L6InfoCard/Cipher/Exception.phpnu&1i�PKpG[`Tv�MM'�Q6InfoCard/Cipher/Symmetric/Interface.phpnu&1i�PKpG[c�ڳee/VV6InfoCard/Cipher/Symmetric/Adapter/Aes128cbc.phpnu&1i�PKpG[���.\6InfoCard/Cipher/Symmetric/Adapter/Abstract.phpnu&1i�PKpG[��5�VV/{a6InfoCard/Cipher/Symmetric/Adapter/Aes256cbc.phpnu&1i�PKpG[���10p6InfoCard/Cipher/Symmetric/Aes128cbc/Interface.phpnu&1i�PKpG[�Nν��1�u6InfoCard/Cipher/Symmetric/Aes256cbc/Interface.phpnu&1i�PKpG[8]v
FF�z6InfoCard/Exception.phpnu&1i�PKpG[X��KE E A�6InfoCard/Claims.phpnu&1i�PKpG[avo<�
�
ɠ6InfoCard/Cipher.phpnu&1i�PKpG[H������6File/Transfer/Exception.phpnu&1i�PKpG[ґ6�Ӵ6File/Transfer/Adapter/Http.phpnu&1i�PKpG[{����"9�6File/Transfer/Adapter/Abstract.phpnu&1i�PKpG[�ݓ�RR�q7File/Transfer.phpnu&1i�PKpG[�W4�@�@#y7XmlRpc/Server.phpnu&1i�PKpG[�޿1818b�7XmlRpc/Value.phpnu&1i�PKpG[G���T/T/��7XmlRpc/Request.phpnu&1i�PKpG[V�I�m	m	i"8XmlRpc/Value/Collection.phpnu&1i�PKpG[;�s!,8XmlRpc/Value/String.phpnu&1i�PKpG[�oP�..48XmlRpc/Value/Nil.phpnu&1i�PKpG[`wյ�	�	�<8XmlRpc/Value/Boolean.phpnu&1i�PKpG[aN�n
n
�F8XmlRpc/Value/Base64.phpnu&1i�PKpG[S;�'0
0
�Q8XmlRpc/Value/DateTime.phpnu&1i�PKpG[-��C��\8XmlRpc/Value/Exception.phpnu&1i�PKpG[G���d	d	�`8XmlRpc/Value/Struct.phpnu&1i�PKpG[����uu�j8XmlRpc/Value/Integer.phpnu&1i�PKpG[�
(��Oq8XmlRpc/Value/Double.phpnu&1i�PKpG[-&:��Ix8XmlRpc/Value/Array.phpnu&1i�PKpG[�i�����8XmlRpc/Value/Scalar.phpnu&1i�PKpG[�9�  Ј8XmlRpc/Response.phpnu&1i�PKpG[l��Ucc3�8XmlRpc/Fault.phpnu&1i�PKpG[��o	o	�8XmlRpc/Client/ServerProxy.phpnu&1i�PKpG[n���� ��8XmlRpc/Client/FaultException.phpnu&1i�PKpG[��k�{{��8XmlRpc/Client/Exception.phpnu&1i�PKpG[�!K6��%O�8XmlRpc/Client/IntrospectException.phpnu&1i�PKpG[Њ)��M�8XmlRpc/Client/HttpException.phpnu&1i�PKpG[��Ô��%O�8XmlRpc/Client/ServerIntrospection.phpnu&1i�PKpG[@L'#'#'1�8XmlRpc/Client.phpnu&1i�PKpG[iJ����9XmlRpc/Server/Fault.phpnu&1i�PKpG[
j���{/9XmlRpc/Server/Cache.phpnu&1i�PKpG[�p�iww{59XmlRpc/Server/System.phpnu&1i�PKpG[����:H9XmlRpc/Server/Exception.phpnu&1i�PKpG[dq!���1M9XmlRpc/Response/Http.phpnu&1i�PKpG[;
#��:S9XmlRpc/Request/Stdin.phpnu&1i�PKpG[R9���)\9XmlRpc/Request/Http.phpnu&1i�PKpG[3�29��-i9XmlRpc/Exception.phpnu&1i�PKpG[�l>�c
c
lm9Request/Interface.phpnu&1i�PKpG[�@,��E�Ex9Form.phpnu&1i�PKpG[?6h��L�L .�:Controller/Response/Abstract.phpnu&1i�PKpG[��z;Controller/Response/Http.phpnu&1i�PKpG[%T����;Controller/Response/Cli.phpnu&1i�PKpG[U54�44!�;Controller/Response/Exception.phpnu&1i�PKpG[�Uc

$4;Controller/Response/HttpTestCase.phpnu&1i�PKpG[`�<�ll$�);Controller/Router/Route/Abstract.phpnu&1i�PKpG[q����%f0;Controller/Router/Route/Interface.phpnu&1i�PKpG[�C(��!�5;Controller/Router/Route/Chain.phpnu&1i�PKpG[<��1!�E;Controller/Router/Route/Regex.phpnu&1i�PKpG[��cjr*r*$'e;Controller/Router/Route/Hostname.phpnu&1i�PKpG[�s[H!H!"�;Controller/Router/Route/Module.phpnu&1i�PKpG[P]�
�
"��;Controller/Router/Route/Static.phpnu&1i�PKpG[�N�Ʈ���;Controller/Router/Abstract.phpnu&1i�PKpG[#��E�0�0��;Controller/Router/Rewrite.phpnu&1i�PKpG[�0�(�(�<Controller/Router/Route.phpnu&1i�PKpG[�ǣ~���+<Controller/Router/Interface.phpnu&1i�PKpG[&f<'tt�;<Controller/Router/Exception.phpnu&1i�PKpG[�����@<Controller/Exception.phpnu&1i�PKpG[SL\�{{#�D<Controller/Dispatcher/Interface.phpnu&1i�PKpG[F�Fcc#�\<Controller/Dispatcher/Exception.phpnu&1i�PKpG[��"&=&="pa<Controller/Dispatcher/Standard.phpnu&1i�PKpG[vJm�G.G."�<Controller/Dispatcher/Abstract.phpnu&1i�PKpG[fr���#��<Controller/Request/HttpTestCase.phpnu&1i�PKpG[a5Q�� ��<Controller/Request/Apache404.phpnu&1i�PKpG[Կ�ZZ ��<Controller/Request/Exception.phpnu&1i�PKpG[�C��@@B�<Controller/Request/Simple.phpnu&1i�PKpG[J��[�<Controller/Request/Abstract.phpnu&1i�PKpG[K��o
l
l4=Controller/Request/Http.phpnu&1i�PKpG[���@ ��=Controller/Action/Helper/Url.phpnu&1i�PKpG[#/�i�i�*��=Controller/Action/Helper/ContextSwitch.phpnu&1i�PKpG[I�!ʸ�2�6>Controller/Action/Helper/AutoComplete/Abstract.phpnu&1i�PKpG[2�)�~:~:'�G>Controller/Action/Helper/Redirector.phpnu&1i�PKpG[iT�V%��>Controller/Action/Helper/Abstract.phpnu&1i�PKpG[���
99(�>Controller/Action/Helper/ActionStack.phpnu&1i�PKpG[�Mׯ�(��>Controller/Action/Helper/AjaxContext.phpnu&1i�PKpG[/|F���+��>Controller/Action/Helper/FlashMessenger.phpnu&1i�PKpG[�9�
epep)��>Controller/Action/Helper/ViewRenderer.phpnu&1i�PKpG[�U��
�
!�9?Controller/Action/Helper/Json.phpnu&1i�PKpG[	Ld�-�G?Controller/Action/Helper/AutoCompleteDojo.phpnu&1i�PKpG[�p��	�	6S?Controller/Action/Helper/AutoCompleteScriptaculous.phpnu&1i�PKpG[_Dx h]?Controller/Action/Exception.phpnu&1i�PKpG[�\S��!�!06b?Controller/Action/HelperBroker/PriorityStack.phpnu&1i�PKpG[d�"D)D)"~�?Controller/Action/HelperBroker.phpnu&1i�PKpG[$-8��!�?Controller/Plugin/ActionStack.phpnu&1i�PKpG[wt�>d(d(�?Controller/Plugin/Broker.phpnu&1i�PKpG[`�����?Controller/Plugin/Abstract.phpnu&1i�PKpG[̹n<��"�@Controller/Plugin/ErrorHandler.phpnu&1i�PKpG[{��S�Sm@Controller/Action.phpnu&1i�PKpG[�V�����s@Controller/LayoutPlugin.phpnu&1i�PKpG[��n�n�n�z@Controller/Front.phpnu&1i�PKpG[��3��u�@Pdf/Trailer/Generator.phpnu&1i�PKpG[t[���@Pdf/Trailer/Keeper.phpnu&1i�PKpG[��x��
�@Pdf/Color.phpnu&1i�PKpG[4���
�

APdf/PhpArray.phpnu&1i�PKpG[���H�!�!�APdf/Exception.phpnu&1i�PKpG[�,/�ll 52APdf/ElementFactory/Interface.phpnu&1i�PKpG[RRm�

�@APdf/ElementFactory/Proxy.phpnu&1i�PKpG[ɕ���GUAPdf/Parser/Stream.phpnu&1i�PKpG[�g�ff2\APdf/Resource.phpnu&1i�PKpG[�ED�i]i]�hAPdf/Font.phpnu&1i�PKpG[4̚´�}�APdf/Trailer.phpnu&1i�PKpG[;|™##p�APdf/FileParser/Image.phpnu&1i�PKpG[���a	a	)��APdf/FileParser/Font/OpenType/TrueType.phpnu&1i�PKpG[o�*�*� ��APdf/FileParser/Font/OpenType.phpnu&1i�PKpG[dq�`m+m+�BPdf/FileParser/Image/Png.phpnu&1i�PKpG[��,%uuȴBPdf/FileParser/Font.phpnu&1i�PKpG[��B
��BPdf/Image.phpnu&1i�PKpG[�x�d== ��BPdf/Cmap/ByteEncoding/Static.phpnu&1i�PKpG[�R1HXHXR�BPdf/Cmap/ByteEncoding.phpnu&1i�PKpG[�ȁ�ll�JCPdf/Cmap/TrimmedTable.phpnu&1i�PKpG[7�\�+:+:�hCPdf/Cmap/SegmentToDelta.phpnu&1i�PKpG[��~�-�-�CPdf/ElementFactory.phpnu&1i�PKpG[�T��S�S��CPdf/StringParser.phpnu&1i�PKpG[ѐs��#7%DPdf/FileParserDataSource/String.phpnu&1i�PKpG[hm0���!Y2DPdf/FileParserDataSource/File.phpnu&1i�PKpG[�Ƥu�;�;�IDPdf/Resource/Font.phpnu&1i�PKpG[ǃP�UU��DPdf/Resource/Image.phpnu&1i�PKpG[]#CCL�DPdf/Resource/Image/Png.phpnu&1i�PKpG[�v��

��DPdf/Resource/Image/Jpeg.phpnu&1i�PKpG[eh��RR��DPdf/Resource/Image/Tiff.phpnu&1i�PKpG[Ys��&�&U5EPdf/Resource/Font/Extracted.phpnu&1i�PKpG[+�9�&�&a\EPdf/Resource/Font/Simple.phpnu&1i�PKpG[U��I
I
&P�EPdf/Resource/Font/CidFont/TrueType.phpnu&1i�PKpG[��cXIXI�EPdf/Resource/Font/CidFont.phpnu&1i�PKpG[�t�7K7K:��EPdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.phpnu&1i�PKpG[qP;\�J�J65&FPdf/Resource/Font/Simple/Standard/HelveticaOblique.phpnu&1i�PKpG[Z�)��G�G-�qFPdf/Resource/Font/Simple/Standard/Courier.phpnu&1i�PKpG[+�JJ/y�FPdf/Resource/Font/Simple/Standard/TimesBold.phpnu&1i�PKpG[1�|�n�n2�GPdf/Resource/Font/Simple/Standard/ZapfDingbats.phpnu&1i�PKpG[
�gNJNJ0NsGPdf/Resource/Font/Simple/Standard/TimesRoman.phpnu&1i�PKpG[o�
�J�J3��GPdf/Resource/Font/Simple/Standard/HelveticaBold.phpnu&1i�PKpG[�0>�J�J5�HPdf/Resource/Font/Simple/Standard/TimesBoldItalic.phpnu&1i�PKpG[9�-̠G�G1�SHPdf/Resource/Font/Simple/Standard/CourierBold.phpnu&1i�PKpG[lc��3H3H8��HPdf/Resource/Font/Simple/Standard/CourierBoldOblique.phpnu&1i�PKpG[� �98H8H4��HPdf/Resource/Font/Simple/Standard/CourierOblique.phpnu&1i�PKpG[���IJIJ/,-IPdf/Resource/Font/Simple/Standard/Helvetica.phpnu&1i�PKpG[���qpJpJ1�wIPdf/Resource/Font/Simple/Standard/TimesItalic.phpnu&1i�PKpG[���E�f�f,��IPdf/Resource/Font/Simple/Standard/Symbol.phpnu&1i�PKpG[G���
�
#�)JPdf/Resource/Font/Simple/Parsed.phpnu&1i�PKpG[���KK%�7JPdf/Resource/Font/Simple/Standard.phpnu&1i�PKpG[6�ܙ�,�DJPdf/Resource/Font/Simple/Parsed/TrueType.phpnu&1i�PKpG['��%�%�MJPdf/Resource/Font/Type0.phpnu&1i�PKpG[�g��$$$�sJPdf/Resource/Font/FontDescriptor.phpnu&1i�PKpG[��/)	)	6�JPdf/Resource/ImageFactory.phpnu&1i�PKpG[�K����JPdf/Page.phpnu&1i�PKpG[%Ed��>�>�dKPdf/FileParser.phpnu&1i�PKpG[%ж��6�6ΣKPdf/Element/Object/Stream.phpnu&1i�PKpG[�`���	�	��KPdf/Element/Stream.phpnu&1i�PKpG[����DD��KPdf/Element/String/Binary.phpnu&1i�PKpG[
8��77��KPdf/Element/Boolean.phpnu&1i�PKpG["��oo!�KPdf/Element/Reference/Context.phpnu&1i�PKpG[��)���LPdf/Element/Reference/Table.phpnu&1i�PKpG[��ii�LPdf/Element/Null.phpnu&1i�PKpG[m�m��ZLPdf/Element/Array.phpnu&1i�PKpG[Ֆ�tt�(LPdf/Element/Object.phpnu&1i�PKpG[���	��Q?LPdf/Element/Name.phpnu&1i�PKpG[�G{���OLPdf/Element/String.phpnu&1i�PKpG[+�����kjLPdf/Element/Numeric.phpnu&1i�PKpG[.8��KsLPdf/Element/Reference.phpnu&1i�PKpG[(3�###��LPdf/Element/Dictionary.phpnu&1i�PKpG[[��?DD�LPdf/Color/GrayScale.phpnu&1i�PKpG[�Ǒ
�
��LPdf/Color/Rgb.phpnu&1i�PKpG[r[�'��l�LPdf/Color/Cmyk.phpnu&1i�PKpG[�@7�O>O>Z�LPdf/Color/Html.phpnu&1i�PKpG[��"�
�
 �LPdf/Filter/Compression/Flate.phpnu&1i�PKpG[F;��	�	
MPdf/Filter/Compression/Lzw.phpnu&1i�PKpG[�L`���MPdf/Filter/AsciiHex.phpnu&1i�PKpG[`���BB�$MPdf/Filter/Ascii85.phpnu&1i�PKpG[@��H��k+MPdf/Filter/Interface.phpnu&1i�PKpG[���h�:�:41MPdf/Filter/Compression.phpnu&1i�PKpG[��zJ��lMPdf/FileParserDataSource.phpnu&1i�PKpG[�<�s	L	L�MPdf/Parser.phpnu&1i�PKpG[�zm�,,S�MPdf/Cmap.phpnu&1i�PKpG[���,����MPdf/Element.phpnu&1i�PKpG[�����
�NPdf/Style.phpnu&1i�PKpG[�m��'NPdf/UpdateInfoContainer.phpnu&1i�PKpG[�!&g&g
n2NOpenId.phpnu&1i�PKpG[Z�.ztztΙNPdf.phpnu&1i�PKpG[�N�OSearch/Exception.phpnu&1i�PKpG[/h�6??�OSearch/Lucene/Proxy.phpnu&1i�PKpG[�zv��(ROSearch/Lucene/FSMAction.phpnu&1i�PKpG[�Mq��hXOSearch/Lucene/Document.phpnu&1i�PKpG[$�U�IIteOSearch/Lucene/Document/Pptx.phpnu&1i�PKpG[�����"�OSearch/Lucene/Document/OpenXml.phpnu&1i�PKpG[���l#l#�OSearch/Lucene/Document/Xlsx.phpnu&1i�PKpG[��!�[&[&ǶOSearch/Lucene/Document/Html.phpnu&1i�PKpG[���]""q�OSearch/Lucene/Document/Docx.phpnu&1i�PKpG[�����!�!��OSearch/Lucene/LockManager.phpnu&1i�PKpG[��TTPSearch/Lucene/Index/Term.phpnu&1i�PKpG[χ�m��#� PSearch/Lucene/Index/SegmentInfo.phpnu&1i�PKpG[(t�%FF0�2QSearch/Lucene/Index/SegmentInfoPriorityQueue.phpnu&1i�PKpG[�>;���2S9QSearch/Lucene/Index/SegmentWriter/StreamWriter.phpnu&1i�PKpG[#$	���4�EQSearch/Lucene/Index/SegmentWriter/DocumentWriter.phpnu&1i�PKpG[���cX�X��dQSearch/Lucene/Index/Writer.phpnu&1i�PKpG[!��(((��QSearch/Lucene/Index/DictionaryLoader.phpnu&1i�PKpG[����"�RSearch/Lucene/Index/DocsFilter.phpnu&1i�PKpG[堵	#	#%� RSearch/Lucene/Index/SegmentMerger.phpnu&1i�PKpG[3R�G =DRSearch/Lucene/Index/TermInfo.phpnu&1i�PKpG[j��4O4O%�LRSearch/Lucene/Index/SegmentWriter.phpnu&1i�PKpG[�i��!�RSearch/Lucene/Index/FieldInfo.phpnu&1i�PKpG[����#��RSearch/Lucene/Search/QueryToken.phpnu&1i�PKpG[�W2G��#��RSearch/Lucene/Search/QueryEntry.phpnu&1i�PKpG[�d_o]
]
+��RSearch/Lucene/Search/Similarity/Default.phpnu&1i�PKpG[k#�GW
W
!��RSearch/Lucene/Search/QueryHit.phpnu&1i�PKpG[Z@���8�RSearch/Lucene/Search/Query.phpnu&1i�PKpG[�<��c�c$�RSearch/Lucene/Search/QueryParser.phpnu&1i�PKpG[���Y��-ZSSearch/Lucene/Search/QueryParserException.phpnu&1i�PKpG[/��qbqb#0_SSearch/Lucene/Search/QueryLexer.phpnu&1i�PKpG[Md�])	)	�SSearch/Lucene/Search/Weight.phpnu&1i�PKpG[G�(<�`�`#l�SSearch/Lucene/Search/Similarity.phpnu&1i�PKpG[�`�iQ	Q	,p,TSearch/Lucene/Search/QueryEntry/Subquery.phpnu&1i�PKpG[%�Z��(6TSearch/Lucene/Search/QueryEntry/Term.phpnu&1i�PKpG[~���*JNTSearch/Lucene/Search/QueryEntry/Phrase.phpnu&1i�PKpG[
��2�2+e^TSearch/Lucene/Search/QueryParserContext.phpnu&1i�PKpG[n�@
�K�K(m�TSearch/Lucene/Search/Query/MultiTerm.phpnu&1i�PKpG[�ͯ9�C�C%��TSearch/Lucene/Search/Query/Phrase.phpnu&1i�PKpG[���DN8N8$�!USearch/Lucene/Search/Query/Fuzzy.phpnu&1i�PKpG[��8��h�h&kZUSearch/Lucene/Search/Query/Boolean.phpnu&1i�PKpG[o|��.&.&$C�USearch/Lucene/Search/Query/Range.phpnu&1i�PKpG[ טu,��USearch/Lucene/Search/Query/Insignificant.phpnu&1i�PKpG[\�RRR#��USearch/Lucene/Search/Query/Term.phpnu&1i�PKpG[���2%2%'EVSearch/Lucene/Search/Query/Wildcard.phpnu&1i�PKpG[��l�PP$�5VSearch/Lucene/Search/Query/Empty.phpnu&1i�PKpG[���x$$4rDVSearch/Lucene/Search/BooleanExpressionRecognizer.phpnu&1i�PKpG[��ω$�hVSearch/Lucene/Search/Weight/Term.phpnu&1i�PKpG[�o�z�
�
&8uVSearch/Lucene/Search/Weight/Phrase.phpnu&1i�PKpG[P4|:�
�
'R�VSearch/Lucene/Search/Weight/Boolean.phpnu&1i�PKpG[X�g���%0�VSearch/Lucene/Search/Weight/Empty.phpnu&1i�PKpG[#ȉp�
�
)U�VSearch/Lucene/Search/Weight/MultiTerm.phpnu&1i�PKpG[� S

0��VSearch/Lucene/Analysis/TokenFilter/StopWords.phpnu&1i�PKpG[/"��1	�VSearch/Lucene/Analysis/TokenFilter/ShortWords.phpnu&1i�PKpG[�;�u��4j�VSearch/Lucene/Analysis/TokenFilter/LowerCaseUtf8.phpnu&1i�PKpG[�.J�CC0��VSearch/Lucene/Analysis/TokenFilter/LowerCase.phpnu&1i�PKpG[�
�2RR F�VSearch/Lucene/Analysis/Token.phpnu&1i�PKpG[�է���&��VSearch/Lucene/Analysis/TokenFilter.phpnu&1i�PKpG[+w���	�	*�VSearch/Lucene/Analysis/Analyzer/Common.phpnu&1i�PKpG[(Q!xx/O�VSearch/Lucene/Analysis/Analyzer/Common/Utf8.phpnu&1i�PKpG[���B&�VSearch/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.phpnu&1i�PKpG[��*FF
F
/�WSearch/Lucene/Analysis/Analyzer/Common/Text.phpnu&1i�PKpG[g�]��??WSearch/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.phpnu&1i�PKpG[B�N_��B�WSearch/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.phpnu&1i�PKpG[(�*2�WSearch/Lucene/Analysis/Analyzer/Common/Utf8Num.phpnu&1i�PKpG[����?�'WSearch/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.phpnu&1i�PKpG[tJK
K
2.WSearch/Lucene/Analysis/Analyzer/Common/TextNum.phpnu&1i�PKpG[ʯ��99#�8WSearch/Lucene/Analysis/Analyzer.phpnu&1i�PKpG[|4��
�
#@MWSearch/Lucene/Storage/Directory.phpnu&1i�PKpG[~v�7272q[WSearch/Lucene/Storage/File.phpnu&1i�PKpG[���ss)��WSearch/Lucene/Storage/File/Filesystem.phpnu&1i�PKpG[w�k1?1?%¤WSearch/Lucene/Storage/File/Memory.phpnu&1i�PKpG[+�}��'�'.H�WSearch/Lucene/Storage/Directory/Filesystem.phpnu&1i�PKpG[��((yXSearch/Lucene/Exception.phpnu&1i�PKpG[ޥ\[���XSearch/Lucene/PriorityQueue.phpnu&1i�PKpG[���X0X0"XSearch/Lucene/Interface.phpnu&1i�PKpG[g�T�6363�RXSearch/Lucene/FSM.phpnu&1i�PKpG[a�GY��4�XSearch/Lucene/Field.phpnu&1i�PKpG[�� /�/��XSearch/Lucene.phpnu&1i�PKpG[����1�1qNYJson/Encoder.phpnu&1i�PKpG[m֭��+�+��YJson/Server/Smd.phpnu&1i�PKpG[?/������YJson/Server/Request.phpnu&1i�PKpG[�l�s��YJson/Server/Error.phpnu&1i�PKpG[�yMM#�YJson/Server/Exception.phpnu&1i�PKpG[mj��YJson/Server/Response.phpnu&1i�PKpG[�d�/�/�YJson/Server/Smd/Service.phpnu&1i�PKpG[NB�QQ3ZJson/Server/Response/Http.phpnu&1i�PKpG[�e2�x
x
�%ZJson/Server/Cache.phpnu&1i�PKpG[���P}}�0ZJson/Server/Request/Http.phpnu&1i�PKpG[���\��W7ZJson/Exception.phpnu&1i�PKpG[���ǀ;�;�;ZJson/Server.phpnu&1i�PKpG[�}�5�5MwZJson/Decoder.phpnu&1i�PKpG[� �-����ZCaptcha/Base.phpnu&1i�PKpG[)��HH��ZCaptcha/Exception.phpnu&1i�PKpG[��;���D�ZCaptcha/ReCaptcha.phpnu&1i�PKpG[w\	���ZCaptcha/Adapter.phpnu&1i�PKpG[����qq�ZCaptcha/Figlet.phpnu&1i�PKpG[�\Β!!��ZCaptcha/Word.phpnu&1i�PKpG[S��ڤ8�8
[Captcha/Image.phpnu&1i�PKpG[�&M����E[Captcha/Dumb.phpnu&1i�PKpG[�s<���2L[Log/Filter/Message.phpnu&1i�PKpG[!/F��AT[Log/Filter/Priority.phpnu&1i�PKpG[gC��//@][Log/Filter/Interface.phpnu&1i�PKpG[��|exx�b[Log/Filter/Suppress.phpnu&1i�PKpG[بe!�	�	vj[Log/Formatter/Simple.phpnu&1i�PKpG[���4�
�
�t[Log/Formatter/Xml.phpnu&1i�PKpG[�;BGWW�[Log/Formatter/Interface.phpnu&1i�PKpG[�z�gg%�[Log/Writer/Firebug.phpnu&1i�PKpG[ĥ���
�
қ[Log/Writer/Abstract.phpnu&1i�PKpG[�����[Log/Writer/Mock.phpnu&1i�PKpG[�T�aa­[Log/Writer/Stream.phpnu&1i�PKpG[��aah�[Log/Writer/Null.phpnu&1i�PKpG[8z#}}�[Log/Writer/Db.phpnu&1i�PKpG[��huu��[Log/Exception.phpnu&1i�PKpG[�J��>>��[Auth/Exception.phpnu&1i�PKpG[�If�
�
�[Auth/Result.phpnu&1i�PKpG[*`* �p�p"�[Auth/Adapter/Http.phpnu&1i�PKpG[Aӟ%�R\Auth/Adapter/Digest.phpnu&1i�PKpG[B����2l\Auth/Adapter/Exception.phpnu&1i�PKpG[}��<<q\Auth/Adapter/DbTable.phpnu&1i�PKpG[߅DgPPu�\Auth/Adapter/Interface.phpnu&1i�PKpG[��� � �\Auth/Adapter/OpenId.phpnu&1i�PKpG[@�
  ,�\Auth/Adapter/InfoCard.phpnu&1i�PKpG[�L�ܣ(�(��\Auth/Adapter/Ldap.phpnu&1i�PKpG[�I44(z]Auth/Adapter/Http/Resolver/Interface.phpnu&1i�PKpG[�����($]Auth/Adapter/Http/Resolver/Exception.phpnu&1i�PKpG[�C���#0)]Auth/Adapter/Http/Resolver/File.phpnu&1i�PKpG[���vC
C
0@]Auth/Storage/NonPersistent.phpnu&1i�PKpG[� ���J]Auth/Storage/Interface.phpnu&1i�PKpG[��I���R]Auth/Storage/Exception.phpnu&1i�PKpG[��

�W]Auth/Storage/Session.phpnu&1i�PKpG[���$�$	e]Cache.phpnu&1i�PKpG[P,�)�
�
��]Dojo.phpnu&1i�PKpG[}�9�e�e��]Session.phpnu&1i�PKpG[��	X$$�]Db.phpnu&1i�PKpG[��+%����U^Date.phpnu&1i�PKpG[Da���+aAcl.phpnu&1i�PKpG[��ln�e�et�aLdap.phpnu&1i�PKpG[�]čEBEB4bInfoCard.phpnu&1i�PKpG[��#cMM#�GbWildfire/Plugin/FirePhp/Message.phpnu&1i�PKpG[g�

(UZbWildfire/Plugin/FirePhp/TableMessage.phpnu&1i�PKpG[(״3``�dbWildfire/Plugin/Interface.phpnu&1i�PKpG[���6K6KgjbWildfire/Plugin/FirePhp.phpnu&1i�PKpG[P?��BB�bWildfire/Exception.phpnu&1i�PKpG[��_�UUp�bWildfire/Channel/Interface.phpnu&1i�PKpG[��WD'!'! �bWildfire/Channel/HttpHeaders.phpnu&1i�PKpG[N�rÌ� ��bWildfire/Protocol/JsonStream.phpnu&1i�PKpG[��@�+�+
f�bConfig.phpnu&1i�PKpG[B0}�IIY*cMemory/Container/Interface.phpnu&1i�PKpG[-��a�	�	�0cMemory/Container/Locked.phpnu&1i�PKpG[G��z���:cMemory/Container/Movable.phpnu&1i�PKpG["�hņ��UcMemory/Container.phpnu&1i�PKpG[������ZcMemory/Value.phpnu&1i�PKpG[�"�f//�jcMemory/AccessController.phpnu&1i�PKpG[�,g  FycMemory/Exception.phpnu&1i�PKpG[�����/�/�}cMemory/Manager.phpnu&1i�PKpG[�ۺe�_�_
̭cPaginator.phpnu&1i�PKpG[�s�'��dProgressBar/Exception.phpnu&1i�PKpG[㲖���dProgressBar/Adapter.phpnu&1i�PKpG[���8�8�dProgressBar/Adapter/Console.phpnu&1i�PKpG[q.���!�XdProgressBar/Adapter/Exception.phpnu&1i�PKpG[+)�+���]dProgressBar/Adapter/JsPull.phpnu&1i�PKpG[�����kdProgressBar/Adapter/JsPush.phpnu&1i�PKpG[���|dView.phpnu&1i�PKpG[�J�44�dCurrency/Exception.phpnu&1i�PKpG[�&�		]�dSession/Exception.phpnu&1i�PKpG[L[�����dSession/Abstract.phpnu&1i�PKpG[����>�>��dSession/Namespace.phpnu&1i�PKpG[�[d��E�E`�dSession/SaveHandler/DbTable.phpnu&1i�PKpG[�as;��!x2eSession/SaveHandler/Exception.phpnu&1i�PKpG[��̤!^7eSession/SaveHandler/Interface.phpnu&1i�PKpG[���99�?eSession/Validator/Interface.phpnu&1i�PKpG[8ou�;;>FeSession/Validator/Abstract.phpnu&1i�PKpG[�F�6��#�NeSession/Validator/HttpUserAgent.phpnu&1i�PKpG[դnJjj�VeText/Figlet/Exception.phpnu&1i�PKpG[l�T�!�!�[eText/Figlet/zend-framework.flfnu&1i�PKpG[	oc�T�T��}eText/Figlet.phpnu&1i�PKpG[_Ca�YYIfText/MultiByte.phpnu&1i�PKpG[r���e@e@�fText/Table.phpnu&1i�PKpG[)�����\fText/Table/Exception.phpnu&1i�PKpG[��/VVrafText/Table/Row.phpnu&1i�PKpG[�7��
|fText/Table/Decorator/Ascii.phpnu&1i�PKpG[�y��

"w�fText/Table/Decorator/Interface.phpnu&1i�PKpG[rY�__ �fText/Table/Decorator/Unicode.phpnu&1i�PKpG[��Î��fText/Table/Column.phpnu&1i�PKpG[���??�fText/Exception.phpnu&1i�PKpG[B�g�nnc�fDojo/View/Exception.phpnu&1i�PKpG[������ �fDojo/View/Helper/ContentPane.phpnu&1i�PKpG[˚#H�fDojo/View/Helper/DijitContainer.phpnu&1i�PKpG[���'��fDojo/View/Helper/AccordionContainer.phpnu&1i�PKpG["={S!S!�fDojo/View/Helper/Slider.phpnu&1i�PKpG[ R~�gDojo/View/Helper/Dojo.phpnu&1i�PKpG[��99gDojo/View/Helper/Editor.phpnu&1i�PKpG[̸q�R!R!�"gDojo/View/Helper/Dijit.phpnu&1i�PKpG[E���$:DgDojo/View/Helper/FilteringSelect.phpnu&1i�PKpG[NJd�YY#XLgDojo/View/Helper/VerticalSlider.phpnu&1i�PKpG[�y�
��#TgDojo/View/Helper/SimpleTextarea.phpnu&1i�PKpG[$��|��#<]gDojo/View/Helper/StackContainer.phpnu&1i�PKpG[$�[����egDojo/View/Helper/TextBox.phpnu&1i�PKpG[�,eۼ� qmgDojo/View/Helper/TimeTextBox.phpnu&1i�PKpG[�Q"IbIb#}ugDojo/View/Helper/Dojo/Container.phpnu&1i�PKpG[�-+�	�	$�gDojo/View/Helper/BorderContainer.phpnu&1i�PKpG[B
��NN$!�gDojo/View/Helper/PasswordTextBox.phpnu&1i�PKpG[؁�'' ��gDojo/View/Helper/RadioButton.phpnu&1i�PKpG[�s��":�gDojo/View/Helper/AccordionPane.phpnu&1i�PKpG[<;�k��|�gDojo/View/Helper/Button.phpnu&1i�PKpG[UqGZ"�hDojo/View/Helper/NumberSpinner.phpnu&1i�PKpG[����!hDojo/View/Helper/SubmitButton.phpnu&1i�PKpG[�E����ShDojo/View/Helper/CheckBox.phpnu&1i�PKpG[���

5'hDojo/View/Helper/Form.phpnu&1i�PKpG[���gg%�1hDojo/View/Helper/HorizontalSlider.phpnu&1i�PKpG[���#M9hDojo/View/Helper/SplitContainer.phpnu&1i�PKpG[
��ޑ��AhDojo/View/Helper/ComboBox.phpnu&1i�PKpG[y!N��&tUhDojo/View/Helper/ValidationTextBox.phpnu&1i�PKpG[n�����$�]hDojo/View/Helper/CurrencyTextBox.phpnu&1i�PKpG[�O��!�ehDojo/View/Helper/TabContainer.phpnu&1i�PKpG[qC���"nhDojo/View/Helper/NumberTextBox.phpnu&1i�PKpG[	!����1vhDojo/View/Helper/Textarea.phpnu&1i�PKpG[�iE�� ihDojo/View/Helper/DateTextBox.phpnu&1i�PKpG[!>pQ�3�3
u�hDojo/Data.phpnu&1i�PKpG[���77
8�hDojo/Form.phpnu&1i�PKpG[���c��!��hDojo/Form/Decorator/DijitForm.phpnu&1i�PKpG[�B?^��$}�hDojo/Form/Decorator/DijitElement.phpnu&1i�PKpG[l��uu&��hDojo/Form/Decorator/SplitContainer.phpnu&1i�PKpG["غ�&��hDojo/Form/Decorator/DijitContainer.phpnu&1i�PKpG[)�zz'�iDojo/Form/Decorator/BorderContainer.phpnu&1i�PKpG[�h��*�iDojo/Form/Decorator/AccordionContainer.phpnu&1i�PKpG[:�t�pp%�iDojo/Form/Decorator/AccordionPane.phpnu&1i�PKpG[J��svv&piDojo/Form/Decorator/StackContainer.phpnu&1i�PKpG[�&�kk$<iDojo/Form/Decorator/TabContainer.phpnu&1i�PKpG[��ff#�iDojo/Form/Decorator/ContentPane.phpnu&1i�PKpG[�m:���%iDojo/Form/DisplayGroup.phpnu&1i�PKpG[B��Ї��.iDojo/Form/Element/CheckBox.phpnu&1i�PKpG[2�u�^^!nCiDojo/Form/Element/RadioButton.phpnu&1i�PKpG[t���33#IiDojo/Form/Element/NumberSpinner.phpnu&1i�PKpG[~�1ח�%�`iDojo/Form/Element/CurrencyTextBox.phpnu&1i�PKpG[.��##�miDojo/Form/Element/Textarea.phpnu&1i�PKpG[�1z  #siDojo/Form/Element/NumberTextBox.phpnu&1i�PKpG[�*���!s�iDojo/Form/Element/TimeTextBox.phpnu&1i�PKpG[`�j��S�iDojo/Form/Element/Dijit.phpnu&1i�PKpG[�V�D����iDojo/Form/Element/ComboBox.phpnu&1i�PKpG[$H�cc!��iDojo/Form/Element/DateTextBox.phpnu&1i�PKpG[�����%j�iDojo/Form/Element/PasswordTextBox.phpnu&1i�PKpG[q}���$f�iDojo/Form/Element/VerticalSlider.phpnu&1i�PKpG[�
q--K�iDojo/Form/Element/Button.phpnu&1i�PKpG[�����8�8�iDojo/Form/Element/Editor.phpnu&1i�PKpG[fH�H��'�0jDojo/Form/Element/ValidationTextBox.phpnu&1i�PKpG[ս�ߛ�&8FjDojo/Form/Element/HorizontalSlider.phpnu&1i�PKpG[Y�64��%)^jDojo/Form/Element/FilteringSelect.phpnu&1i�PKpG[f�j�;;"hdjDojo/Form/Element/SubmitButton.phpnu&1i�PKpG[�4�Y{{ �ijDojo/Form/Element/DijitMulti.phpnu&1i�PKpG[�Ҧ���jDojo/Form/Element/Slider.phpnu&1i�PKpG[R-����jDojo/Form/Element/TextBox.phpnu&1i�PKpG[��}}�jDojo/Form/SubForm.phpnu&1i�PKpG[Q�[ddִjDojo/Exception.phpnu&1i�PKpG[�_
��|�jRegistry.phpnu&1i�PKpG[��4�AA
P�jTranslate.phpnu&1i�PKpG[��j�22��jAcl/Role.phpnu&1i�PKpG[q��.;;<�jAcl/Exception.phpnu&1i�PKpG[&U|=ii��jAcl/Role/Interface.phpnu&1i�PKpG[Ɉn��!�!g�jAcl/Role/Registry.phpnu&1i�PKpG[M��UUCkAcl/Role/Registry/Exception.phpnu&1i�PKpG[n\o����kAcl/Assert/Interface.phpnu&1i�PKpG[ca.bvv#kAcl/Resource.phpnu&1i�PKpG[�b�Iuu�)kAcl/Resource/Interface.phpnu&1i�PKpG[�S!f�f�
|.kLocale.phpnu&1i�PKpG[������kVersion.phpnu&1i�PKpG[�w|,e,e�kMail.phpnu&1i�PKpG[<Ť��olAmf/Util/BinaryStream.phpnu&1i�PKpG[�,KF		s7lAmf/Request/Http.phpnu&1i�PKpG[��?33�@lAmf/Response.phpnu&1i�PKpG[f�@�  DVlAmf/Request.phpnu&1i�PKpG[}�MZ���rlAmf/Exception.phpnu&1i�PKpG[�������vlAmf/Value/MessageHeader.phpnu&1i�PKpG[�]ë��'�~lAmf/Value/Messaging/RemotingMessage.phpnu&1i�PKpG[d&�CC$�lAmf/Value/Messaging/AsyncMessage.phpnu&1i�PKpG[F�Eb��'��lAmf/Value/Messaging/AbstractMessage.phpnu&1i�PKpG[��7;``*�lAmf/Value/Messaging/AcknowledgeMessage.phpnu&1i�PKpG[�AQ���$��lAmf/Value/Messaging/ErrorMessage.phpnu&1i�PKpG[!26&դlAmf/Value/Messaging/CommandMessage.phpnu&1i�PKpG[`�ڧ��,�lAmf/Value/ByteArray.phpnu&1i�PKpG[5qkk��lAmf/Value/MessageBody.phpnu&1i�PKpG[hx
x
��lAmf/Value/TraitsInfo.phpnu&1i�PKpG[�����n�lAmf/Parse/OutputStream.phpnu&1i�PKpG[��-�xxv�lAmf/Parse/TypeLoader.phpnu&1i�PKpG[��6�lAmf/Parse/InputStream.phpnu&1i�PKpG[2n�z�;�;��lAmf/Parse/Amf3/Deserializer.phpnu&1i�PKpG["f&;�+�+�5mAmf/Parse/Amf3/Serializer.phpnu&1i�PKpG[s�VV�amAmf/Parse/Serializer.phpnu&1i�PKpG[�N*��hmAmf/Parse/Deserializer.phpnu&1i�PKpG[ڳ=)=)�pmAmf/Parse/Amf0/Serializer.phpnu&1i�PKpG[�,>�]%]%W�mAmf/Parse/Amf0/Deserializer.phpnu&1i�PKpG[PD��aa�mAmf/Server/Exception.phpnu&1i�PKpG[�������mAmf/Response/Http.phpnu&1i�PKpG[���</T/T��mAmf/Server.phpnu&1i�PKpG[e�JBBnAmf/Constants.phpnu&1i�PKpG[$���+�+�*nJson.phpnu&1i�PKpG[�A5BIBI
LVnLayout.phpnu&1i�PKpG[y��L�]�]ȟnDb/Adapter/Oracle.phpnu&1i�PKpG[vϸ�i�i�nDb/Adapter/Db2.phpnu&1i�PKpG[�T��:�:�hoDb/Adapter/Abstract.phpnu&1i�PKpG[>;�ʠ���oDb/Adapter/Exception.phpnu&1i�PKpG[g�
g2g2}�oDb/Adapter/Pdo/Mssql.phpnu&1i�PKpG[x�P�'',1pDb/Adapter/Pdo/Abstract.phpnu&1i�PKpG[���[B.B.�XpDb/Adapter/Pdo/Ibm.phpnu&1i�PKpG[4n2����pDb/Adapter/Pdo/Ibm/Db2.phpnu&1i�PKpG[֓�w$w$�pDb/Adapter/Pdo/Ibm/Ids.phpnu&1i�PKpG[���o\'\'��pDb/Adapter/Pdo/Sqlite.phpnu&1i�PKpG[B=y�+�+H�pDb/Adapter/Pdo/Pgsql.phpnu&1i�PKpG[[��5�5qqDb/Adapter/Pdo/Oci.phpnu&1i�PKpG[�9�� � TSqDb/Adapter/Pdo/Mysql.phpnu&1i�PKpG[QwL�CC�tqDb/Adapter/Mysqli.phpnu&1i�PKpG[����qDb/Adapter/Db2/Exception.phpnu&1i�PKpG[Xڔ
��U�qDb/Adapter/Oracle/Exception.phpnu&1i�PKpG[#``&�qDb/Adapter/Mysqli/Exception.phpnu&1i�PKpG[:b�0�5�5��qDb/Statement/Pdo.phpnu&1i�PKpG[�ʴ'YY�qDb/Statement/Exception.phpnu&1i�PKpG[&,�����rDb/Statement/Interface.phpnu&1i�PKpG[�6F\A\AfrDb/Statement/Oracle.phpnu&1i�PKpG[�	*C�'�'	`rDb/Statement/Db2.phpnu&1i�PKpG[�€�##!!�rDb/Statement/Oracle/Exception.phpnu&1i�PKpG[�
��+
+
��rDb/Statement/Pdo/Ibm.phpnu&1i�PKpG[�f���)�)�rDb/Statement/Mysqli.phpnu&1i�PKpG[V`r11!��rDb/Statement/Mysqli/Exception.phpnu&1i�PKpG[ſ���y�rDb/Statement/Db2/Exception.phpnu&1i�PKpG[��VPrra�rDb/Table.phpnu&1i�PKpG[���o++�rDb/Select/Exception.phpnu&1i�PKpG[��
0
0
��rDb/Expr.phpnu&1i�PKpG[�4
OK6K6��rDb/Profiler.phpnu&1i�PKpG[n�_�>>vsDb/Table/Select/Exception.phpnu&1i�PKpG[���'' sDb/Table/Exception.phpnu&1i�PKpG[�tr�??n$sDb/Table/Rowset/Exception.phpnu&1i�PKpG[JBI))�(sDb/Table/Rowset/Abstract.phpnu&1i�PKpG[�b�\RsDb/Table/Select.phpnu&1i�PKpG[ܰ�==lsDb/Table/Row/Exception.phpnu&1i�PKpG["*{�N�N��psDb/Table/Row/Abstract.phpnu&1i�PKpG[��c�,,<tDb/Table/Rowset.phpnu&1i�PKpG[�Wsƫƫ�tDb/Table/Abstract.phpnu&1i�PKpG[�6$��tDb/Table/Row.phpnu&1i�PKpG[YY�����tDb/Profiler/Firebug.phpnu&1i�PKpG[�$�>OO�tDb/Profiler/Query.phpnu&1i�PKpG[�f��||��tDb/Profiler/Exception.phpnu&1i�PKpG[,�8q�3�3r�tDb/Statement.phpnu&1i�PKpG[���U�U�
]uDb/Select.phpnu&1i�PKpG[4Aj����uDb/Exception.phpnu&1i�PKpG[���A"A"
�uLoader.phpnu&1i�PKpG[�u�II	��uGdata.phpnu&1i�PKpG[aܰ|TT�uView/Stream.phpnu&1i�PKpG[�)�D44�
vView/Helper/FormPassword.phpnu&1i�PKpG[�+8��	�	,vView/Helper/FormSubmit.phpnu&1i�PKpG[(X���R vView/Helper/FormImage.phpnu&1i�PKpG[Y7ɭ���,vView/Helper/DeclareVars.phpnu&1i�PKpG[,Vvdd�8vView/Helper/PartialLoop.phpnu&1i�PKpG[�)PI��!UEvView/Helper/Partial/Exception.phpnu&1i�PKpG[��Z�ZJvView/Helper/Form.phpnu&1i�PKpG[^!�rdd�RvView/Helper/FormLabel.phpnu&1i�PKpG[�ǘhVVW[vView/Helper/Interface.phpnu&1i�PKpG[q�����`vView/Helper/Action.phpnu&1i�PKpG[�!���svView/Helper/FormHidden.phpnu&1i�PKpG[b�©9�9P|vView/Helper/HeadScript.phpnu&1i�PKpG[��P�99C�vView/Helper/HeadTitle.phpnu&1i�PKpG[M�"�����vView/Helper/HtmlFlash.phpnu&1i�PKpG[��A^	^	��vView/Helper/HtmlQuicktime.phpnu&1i�PKpG[%3��:
:
F�vView/Helper/HtmlObject.phpnu&1i�PKpG[kɰ�dd��vView/Helper/Translate.phpnu&1i�PKpG[����22w�vView/Helper/HeadLink.phpnu&1i�PKpG[~��-�-�.wView/Helper/HeadStyle.phpnu&1i�PKpG[̦���	�	]wView/Helper/Placeholder.phpnu&1i�PKpG[������gwView/Helper/FormCheckbox.phpnu&1i�PKpG[�)�c��H|wView/Helper/Layout.phpnu&1i�PKpG[�l8�::�wView/Helper/FormButton.phpnu&1i�PKpG[�7�����wView/Helper/Abstract.phpnu&1i�PKpG[j�oog�wView/Helper/HtmlPage.phpnu&1i�PKpG[�(LN���wView/Helper/FormElement.phpnu&1i�PKpG[��A��%�wView/Helper/Placeholder/Container.phpnu&1i�PKpG[��,��0@�wView/Helper/Placeholder/Container/Standalone.phpnu&1i�PKpG[
Go%%.`�wView/Helper/Placeholder/Container/Abstract.phpnu&1i�PKpG[�E_R��/�wView/Helper/Placeholder/Container/Exception.phpnu&1i�PKpG[�k���.�xView/Helper/Placeholder/Registry/Exception.phpnu&1i�PKpG[F�Ѥ$
xView/Helper/Placeholder/Registry.phpnu&1i�PKpG[�(bb~xView/Helper/InlineScript.phpnu&1i�PKpG[�#���,&xView/Helper/FormSelect.phpnu&1i�PKpG[}�],��!)=xView/Helper/FormMultiCheckbox.phpnu&1i�PKpG[au��++^FxView/Helper/FormErrors.phpnu&1i�PKpG[J˵

�UxView/Helper/Json.phpnu&1i�PKpG[�y5b##!^xView/Helper/FormRadio.phpnu&1i�PKpG[s�c��#�uxView/Helper/RenderToPlaceholder.phpnu&1i�PKpG[q�-U�{xView/Helper/Doctype.phpnu&1i�PKpG[�d�.�
�
�xView/Helper/HtmlList.phpnu&1i�PKpG[μ4U	U	�xView/Helper/FormFile.phpnu&1i�PKpG[��

��xView/Helper/FormReset.phpnu&1i�PKpG[V�h�,,�xView/Helper/HtmlElement.phpnu&1i�PKpG[pᎯ))c�xView/Helper/HeadMeta.phpnu&1i�PKpG[w-#�	�	��xView/Helper/FormText.phpnu&1i�PKpG[�W�doo�xView/Helper/Partial.phpnu&1i�PKpG[P%�ii�	yView/Helper/FormTextarea.phpnu&1i�PKpG[@��bI	I	OyView/Helper/Fieldset.phpnu&1i�PKpG[côx!�yView/Helper/PaginationControl.phpnu&1i�PKpG[���ss40yView/Helper/Url.phpnu&1i�PKpG[�sj��7yView/Helper/FormNote.phpnu&1i�PKpG[r�9��E?yView/Interface.phpnu&1i�PKpG[�L��u�uyNyView/Abstract.phpnu&1i�PKpG[7�9t__��yView/Exception.phpnu&1i�PKpG[s(��Y�yAuth.phpnu&1i�PKpG[%� �����yFilter/Word/SeparatorToDash.phpnu&1i�PKpG[=�>>$��yFilter/Word/SeparatorToCamelCase.phpnu&1i�PKpG[
��XX �yFilter/Word/DashToUnderscore.phpnu&1i�PKpG[Yj���"��yFilter/Word/Separator/Abstract.phpnu&1i�PKpG[��==�yFilter/Word/DashToSeparator.phpnu&1i�PKpG[$P���$��yFilter/Word/CamelCaseToSeparator.phpnu&1i�PKpG[�k�00%�zFilter/Word/CamelCaseToUnderscore.phpnu&1i�PKpG[g�v��%VzFilter/Word/UnderscoreToSeparator.phpnu&1i�PKpG[;���\\$:
zFilter/Word/SeparatorToSeparator.phpnu&1i�PKpG[4�=�zFilter/Word/CamelCaseToDash.phpnu&1i�PKpG[Y{/%R!zFilter/Word/UnderscoreToCamelCase.phpnu&1i�PKpG[���sWW �&zFilter/Word/UnderscoreToDash.phpnu&1i�PKpG[�6�m,zFilter/Word/DashToCamelCase.phpnu&1i�PKpG[ȁ�NN�1zFilter/RealPath.phpnu&1i�PKpG[�D ��%�%f7zFilter/StripTags.phpnu&1i�PKpG[
27((�]zFilter/StringToLower.phpnu&1i�PKpG[Pbӯ((fzFilter/StringToUpper.phpnu&1i�PKpG[Xwy��	�	wnzFilter/File/LowerCase.phpnu&1i�PKpG[�$Y^�	�	�xzFilter/File/UpperCase.phpnu&1i�PKpG[nUYH�!�!��zFilter/File/Rename.phpnu&1i�PKpG[־�??��zFilter/Int.phpnu&1i�PKpG[i�P���zFilter/CustomAccent.phpnu&1i�PKpG[�ns�NN��zFilter/StripNewlines.phpnu&1i�PKpG[���!#8#8��zFilter/Inflector.phpnu&1i�PKpG[�ͳ�p�p��zFilter/Input.phpnu&1i�PKpG[#vZ6BB
\{Filter/Dir.phpnu&1i�PKpG[���a}}�a{Filter/PregReplace.phpnu&1i�PKpG[&$���Pq{Filter/Alpha.phpnu&1i�PKpG[�lӺxx^~{Filter/HtmlEntities.phpnu&1i�PKpG[p$��	�	�{Filter/StringTrim.phpnu&1i�PKpG[�B%�EE�{Filter/Exception.phpnu&1i�PKpG[�������{Filter/Alnum.phpnu&1i�PKpG[-0�}����{Filter/Digits.phpnu&1i�PKpG[Z�\$���{Filter/Interface.phpnu&1i�PKpG[��N����{Filter/CustomAlnum.phpnu&1i�PKpG[#��NNǵ{Filter/BaseName.phpnu&1i�PKpG[��̇��X�{Server/Abstract.phpnu&1i�PKpG[�q������{Server/Exception.phpnu&1i�PKpG[�v�EE��{Server/Definition.phpnu&1i�PKpG[g�v>�
�
'�{Server/Interface.phpnu&1i�PKpG[�8��[|Server/Reflection.phpnu&1i�PKpG[�IC�\\�|Server/Cache.phpnu&1i�PKpG[_�?*NNJ%|Server/Method/Definition.phpnu&1i�PKpG[J�V���A|Server/Method/Parameter.phpnu&1i�PKpG[��T����S|Server/Method/Prototype.phpnu&1i�PKpG[:�h|Server/Method/Callback.phpnu&1i�PKpG[nI��
�
cz|Server/Reflection/Prototype.phpnu&1i�PKpG[]��
�
!��|Server/Reflection/ReturnValue.phpnu&1i�PKpG[�3���|Server/Reflection/Function.phpnu&1i�PKpG[mu�v��ݕ|Server/Reflection/Class.phpnu&1i�PKpG[�i����|Server/Reflection/Node.phpnu&1i�PKpG[:��m��ڼ|Server/Reflection/Parameter.phpnu&1i�PKpG[*R�Ō���|Server/Reflection/Exception.phpnu&1i�PKpG[����;�;'��|Server/Reflection/Function/Abstract.phpnu&1i�PKpG[qt�rr�}Server/Reflection/Method.phpnu&1i�PKpG[�-+�e�e�z}Locale/Format.phpnu&1i�PKpG[+n�� �  �}Locale/Math/PhpMath.phpnu&1i�PKpG[y>�I����}Locale/Math/Exception.phpnu&1i�PKpG[�(@@ �}Locale/Exception.phpnu&1i�PKpG[�ie##��}Locale/Data/en_UM.xmlnu&1i�PKpG[���pTpT�}Locale/Data/lv.xmlnu&1i�PKpG[D�
ռ��RLocale/Data/ee.xmlnu&1i�PKpG[�*����iLocale/Data/es_US.xmlnu&1i�PKpG[��8ll�Locale/Data/kpe.xmlnu&1i�PKpG[E<�Gmm��Locale/Data/bn.xmlnu&1i�PKpG[`:8���U��Locale/Data/ar_JO.xmlnu&1i�PKpG[>lh##N��Locale/Data/nl_NL.xmlnu&1i�PKpG[�\,�W�W����Locale/Data/ro.xmlnu&1i�PKpG[ ��i##O��Locale/Data/ln_CG.xmlnu&1i�PKpG[E�g}@@���Locale/Data/ro_MD.xmlnu&1i�PKpG[��R|�|�<��Locale/Data/el.xmlnu&1i�PKpG[��]5##�C�Locale/Data/am_ET.xmlnu&1i�PKpG[y����bE�Locale/Data/ar_IQ.xmlnu&1i�PKpG[��%'��TG�Locale/Data/fr.xmlnu&1i�PKpG[Ă�a##0`�Locale/Data/fi_FI.xmlnu&1i�PKpG[�E##�a�Locale/Data/ja_JP.xmlnu&1i�PKpG[�������c�Locale/Data/bg.xmlnu&1i�PKpG[���OO�"�Locale/Data/az_AZ.xmlnu&1i�PKpG[GL�!!�$�Locale/Data/tg_Cyrl.xmlnu&1i�PKpG[Y�OO�%�Locale/Data/zh_MO.xmlnu&1i�PKpG[���;;�'�Locale/Data/az_Cyrl_AZ.xmlnu&1i�PKpG[(NFm!!)�Locale/Data/kk_Cyrl.xmlnu&1i�PKpG[��;;y*�Locale/Data/pa_Guru_IN.xmlnu&1i�PKpG[��W�##�+�Locale/Data/et_EE.xmlnu&1i�PKpG[��
�$$f-�Locale/Data/kaj_NG.xmlnu&1i�PKpG[ٵ##�.�Locale/Data/fa_IR.xmlnu&1i�PKpG[��>�k�k80�Locale/Data/ko.xmlnu&1i�PKpG[�""��Locale/Data/az_Latn.xmlnu&1i�PKpG[դۜ5�5����Locale/Data/fi.xmlnu&1i�PKpG[Mڿ�##���Locale/Data/ca_ES.xmlnu&1i�PKpG[*�+$$e��Locale/Data/kpe_GN.xmlnu&1i�PKpG[&u�##Ϟ�Locale/Data/lo_LA.xmlnu&1i�PKpG[DL##7��Locale/Data/cy_GB.xmlnu&1i�PKpG[���2!!���Locale/Data/ar_YE.xmlnu&1i�PKpG[MKO;;��Locale/Data/pa_Arab_PK.xmlnu&1i�PKpG[�<�::���Locale/Data/ug_Arab_CN.xmlnu&1i�PKpG[���OO��Locale/Data/uz_AF.xmlnu&1i�PKpG[�4��;;���Locale/Data/aa_DJ.xmlnu&1i�PKpG[Q��##"��Locale/Data/nb_NO.xmlnu&1i�PKpG[6W�A�����Locale/Data/ak.xmlnu&1i�PKpG[�8*�TT[ǍLocale/Data/en_Shaw.xmlnu&1i�PKpG[���@$$��Locale/Data/wal_ET.xmlnu&1i�PKpG[�
##`�Locale/Data/gl_ES.xmlnu&1i�PKpG[���VV��Locale/Data/es_AR.xmlnu&1i�PKpG[>�""c��Locale/Data/ss_SZ.xmlnu&1i�PKpG[����!!��Locale/Data/ar_SA.xmlnu&1i�PKpG[��8�rr0�Locale/Data/ka.xmlnu&1i�PKpG[�,2����ur�Locale/Data/ml.xmlnu&1i�PKpG[��n##8��Locale/Data/da_DK.xmlnu&1i�PKpG[Z-�>�&�&���Locale/Data/cs.xmlnu&1i�PKpG[��:�##��Locale/Data/km_KH.xmlnu&1i�PKpG[L�@g����!�Locale/Data/ga.xmlnu&1i�PKpG[��#���T��Locale/Data/nr.xmlnu&1i�PKpG[A`�q##R�Locale/Data/ru_RU.xmlnu&1i�PKpG[��K�����Locale/Data/bn_IN.xmlnu&1i�PKpG[���Y�Y��6�Locale/Data/mk.xmlnu&1i�PKpG[�u�*##D��Locale/Data/ka_GE.xmlnu&1i�PKpG[h��@@���Locale/Data/fil_PH.xmlnu&1i�PKpG[PGA���2�Locale/Data/ar_BH.xmlnu&1i�PKpG[�I*c9z9z$�Locale/Data/zh.xmlnu&1i�PKpG[�v.�##�|�Locale/Data/kl_GL.xmlnu&1i�PKpG[Xj�3NN~�Locale/Data/ug_CN.xmlnu&1i�PKpG[A�-;;��Locale/Data/sr_Latn_BA.xmlnu&1i�PKpG[���U����Locale/Data/it_CH.xmlnu&1i�PKpG[�d'��a��Locale/Data/ar_LY.xmlnu&1i�PKpG[S�$��S��Locale/Data/so_DJ.xmlnu&1i�PKpG[P��ppq��Locale/Data/dv.xmlnu&1i�PKpG[⾏��#��Locale/Data/en_ZA.xmlnu&1i�PKpG[3:�HHUȘLocale/Data/iw.xmlnu&1i�PKpG[2���""�ɘLocale/Data/ku_Arab.xmlnu&1i�PKpG[��:##H˘Locale/Data/as_IN.xmlnu&1i�PKpG[q����̘Locale/Data/es_PR.xmlnu&1i�PKpG[�!5##�ߘLocale/Data/uk_UA.xmlnu&1i�PKpG[WWj(`(`P�Locale/Data/sr.xmlnu&1i�PKpG[��T�##�A�Locale/Data/wo_SN.xmlnu&1i�PKpG[��##"C�Locale/Data/xh_ZA.xmlnu&1i�PKpG[m7�II�D�Locale/Data/en_PK.xmlnu&1i�PKpG[��ER[�Locale/Data/es_DO.xmlnu&1i�PKpG[R6X���\�Locale/Data/pl.xmlnu&1i�PKpG[ti G###)�Locale/Data/ti_ET.xmlnu&1i�PKpG[��R##�*�Locale/Data/dv_MV.xmlnu&1i�PKpG[pm�##�+�Locale/Data/he_IL.xmlnu&1i�PKpG[�H�$q1q1[-�Locale/Data/te.xmlnu&1i�PKpG[��88_�Locale/Data/en_CA.xmlnu&1i�PKpG['�G$$�s�Locale/Data/my.xmlnu&1i�PKpG[+;P##ϗ�Locale/Data/tt_RU.xmlnu&1i�PKpG[��T7��Locale/Data/fr_LU.xmlnu&1i�PKpG[�o�����Locale/Data/si.xmlnu&1i�PKpG[��������Locale/Data/zh_Hans_SG.xmlnu&1i�PKpG[!""�ʝLocale/Data/si_LK.xmlnu&1i�PKpG[	Ȗ�D�D�̝Locale/Data/ca.xmlnu&1i�PKpG[��ˀ		�ĞLocale/Data/ar_LB.xmlnu&1i�PKpG[���3�����͞Locale/Data/fil.xmlnu&1i�PKpG[*�F���\�Locale/Data/en_SG.xmlnu&1i�PKpG[)6V##�t�Locale/Data/gv_GB.xmlnu&1i�PKpG[�����>v�Locale/Data/en_IE.xmlnu&1i�PKpG[4��##���Locale/Data/ps_AF.xmlnu&1i�PKpG[2K'##ꎟLocale/Data/hy_AM.xmlnu&1i�PKpG[�FEx����R��Locale/Data/nn.xmlnu&1i�PKpG[F�i�##N��Locale/Data/or_IN.xmlnu&1i�PKpG[j^u�HH���Locale/Data/tl.xmlnu&1i�PKpG[���]]@��Locale/Data/de_CH.xmlnu&1i�PKpG[S���##■Locale/Data/eu_ES.xmlnu&1i�PKpG[�tj+""J��Locale/Data/ug_Arab.xmlnu&1i�PKpG[?�0##���Locale/Data/fo_FO.xmlnu&1i�PKpG[���i�
�
��Locale/Data/nl_BE.xmlnu&1i�PKpG[.��?##3��Locale/Data/en_MP.xmlnu&1i�PKpG[=�*�##���Locale/Data/cs_CZ.xmlnu&1i�PKpG[�ue7����Locale/Data/am.xmlnu&1i�PKpG[�ɼ##H��Locale/Data/bn_BD.xmlnu&1i�PKpG[�X�##���Locale/Data/en_VI.xmlnu&1i�PKpG[��E>##��Locale/Data/zu_ZA.xmlnu&1i�PKpG[+��1""���Locale/Data/ne_IN.xmlnu&1i�PKpG[�Ť����狡Locale/Data/fa.xmlnu&1i�PKpG[�zQzz�w�Locale/Data/or.xmlnu&1i�PKpG[���N##���Locale/Data/tn_ZA.xmlnu&1i�PKpG[��K�,�,��Locale/Data/bs.xmlnu&1i�PKpG[���))2ãLocale/Data/haw.xmlnu&1i�PKpG[�U<�"" �ޣLocale/Data/supplementalData.xmlnu&1i�PKpG[^��0������Locale/Data/vi.xmlnu&1i�PKpG[y#ΤOO٨�Locale/Data/uz_UZ.xmlnu&1i�PKpG[�v@##m��Locale/Data/kn_IN.xmlnu&1i�PKpG[��w�hhի�Locale/Data/hy.xmlnu&1i�PKpG[����##*�Locale/Data/ko_KR.xmlnu&1i�PKpG[����##��Locale/Data/ss_ZA.xmlnu&1i�PKpG[��v�v��Locale/Data/ru.xmlnu&1i�PKpG[.�##܍�Locale/Data/el_GR.xmlnu&1i�PKpG[�q�OOD��Locale/Data/tg_TJ.xmlnu&1i�PKpG[��� QQؐ�Locale/Data/kcg.xmlnu&1i�PKpG[�:-N��l��Locale/Data/az_Cyrl.xmlnu&1i�PKpG[VnAC�����Locale/Data/ku_Latn.xmlnu&1i�PKpG[�^�##�ȫLocale/Data/ee_GH.xmlnu&1i�PKpG[�-�E]]�ɫLocale/Data/es_HN.xmlnu&1i�PKpG[���t���ܫLocale/Data/en_BZ.xmlnu&1i�PKpG[��{i`d`dv�Locale/Data/fo.xmlnu&1i�PKpG[�]Y�R�RY�Locale/Data/kn.xmlnu&1i�PKpG[��f����Locale/Data/es_VE.xmlnu&1i�PKpG[~�*__F��Locale/Data/ku.xmlnu&1i�PKpG[4un##�ƬLocale/Data/vi_VN.xmlnu&1i�PKpG[c 4콿��OȬLocale/Data/characters.xmlnu&1i�PKpG[m9��##V��Locale/Data/ne_NP.xmlnu&1i�PKpG[,or������Locale/Data/en_HK.xmlnu&1i�PKpG[�?������Locale/Data/sr_Latn_ME.xmlnu&1i�PKpG[z�TTΨ�Locale/Data/tig.xmlnu&1i�PKpG[�Y�$$��Locale/Data/es_ES.xmlnu&1i�PKpG[n>?�::���Locale/Data/ha_Arab_SD.xmlnu&1i�PKpG[NP��##�Locale/Data/lv_LV.xmlnu&1i�PKpG[I!u##m�Locale/Data/hi_IN.xmlnu&1i�PKpG[U/x�S�S��Locale/Data/byn.xmlnu&1i�PKpG[hm0##�V�Locale/Data/hu_HU.xmlnu&1i�PKpG[hǐ�;;RX�Locale/Data/uz_Latn_UZ.xmlnu&1i�PKpG[�6�$$�Y�Locale/Data/sid_ET.xmlnu&1i�PKpG[ݮ2h##A[�Locale/Data/bs_BA.xmlnu&1i�PKpG[l�~�gg�\�Locale/Data/sr_Cyrl_YU.xmlnu&1i�PKpG[C+ffZ^�Locale/Data/uk.xmlnu&1i�PKpG[��lgg�İLocale/Data/sr_Latn_CS.xmlnu&1i�PKpG[7#Bg##fưLocale/Data/ur_PK.xmlnu&1i�PKpG[��OO�ǰLocale/Data/kk_KZ.xmlnu&1i�PKpG[CEu�%%bɰLocale/Data/cop.xmlnu&1i�PKpG[��>i����Locale/Data/sid.xmlnu&1i�PKpG[3NT::���Locale/Data/zh_Hans_HK.xmlnu&1i�PKpG[T�Ck�k�~�Locale/Data/he.xmlnu&1i�PKpG[�w##+��Locale/Data/sq_AL.xmlnu&1i�PKpG[Q�'�ww���Locale/Data/fr_BE.xmlnu&1i�PKpG[\��##O��Locale/Data/my_MM.xmlnu&1i�PKpG[t�Qѯ����Locale/Data/kam.xmlnu&1i�PKpG[!v]B##���Locale/Data/sa_IN.xmlnu&1i�PKpG[a�'OO��Locale/Data/ha_GH.xmlnu&1i�PKpG[���u�������Locale/Data/de.xmlnu&1i�PKpG[�]�##s��Locale/Data/de_DE.xmlnu&1i�PKpG[����ۈ�Locale/Data/id.xmlnu&1i�PKpG[C��""S�Locale/Data/wo_Latn.xmlnu&1i�PKpG[>#$�]]�T�Locale/Data/Translation.phpnu&1i�PKpG[��9�00.a�Locale/Data/zu.xmlnu&1i�PKpG[����##���Locale/Data/pt_BR.xmlnu&1i�PKpG[G[�z�����Locale/Data/es_PA.xmlnu&1i�PKpG[c�b ! !ϥ�Locale/Data/sa.xmlnu&1i�PKpG[��(�##1ǵLocale/Data/pl_PL.xmlnu&1i�PKpG[��iO##�ȵLocale/Data/be_BY.xmlnu&1i�PKpG[VفHHʵLocale/Data/no.xmlnu&1i�PKpG[({��˵Locale/Data/kaj.xmlnu&1i�PKpG[A�S�NN��Locale/Data/mn_CN.xmlnu&1i�PKpG[w�>OO~�Locale/Data/pa_PK.xmlnu&1i�PKpG[���?OO�Locale/Data/sh_YU.xmlnu&1i�PKpG[rF��U�U��Locale/Data/so.xmlnu&1i�PKpG[��%;;�<�Locale/Data/zh_Hans_CN.xmlnu&1i�PKpG[���L""[>�Locale/Data/st_LS.xmlnu&1i�PKpG[o,��##�?�Locale/Data/en_GU.xmlnu&1i�PKpG[���""*A�Locale/Data/to_TO.xmlnu&1i�PKpG[�2�zz�B�Locale/Data/pa_Arab.xmlnu&1i�PKpG[��iRQ�Locale/Data/es_SV.xmlnu&1i�PKpG[r��F8F8S�Locale/Data/gu.xmlnu&1i�PKpG[U�������Locale/Data/en_NA.xmlnu&1i�PKpG[{��ɍ�Locale/Data/ar_AE.xmlnu&1i�PKpG[\�7�$$���Locale/Data/kam_KE.xmlnu&1i�PKpG[+�[6##%��Locale/Data/is_IS.xmlnu&1i�PKpG[I=��<<���Locale/Data/sr_Latn_RS.xmlnu&1i�PKpG[���g33��Locale/Data/sh.xmlnu&1i�PKpG[i��M���Locale/Data/kfo.xmlnu&1i�PKpG[ww����Ϋ�Locale/Data/ss.xmlnu&1i�PKpG[C��3::�ŶLocale/Data/mn_Mong_CN.xmlnu&1i�PKpG[$,�##]ǶLocale/Data/so_SO.xmlnu&1i�PKpG[1�����ȶLocale/Data/en_NZ.xmlnu&1i�PKpG['&�"�-�-��Locale/Data/fa_AF.xmlnu&1i�PKpG[$�@�����Locale/Data/ti_ER.xmlnu&1i�PKpG[��$$�%�Locale/Data/fur_IT.xmlnu&1i�PKpG[��]##4'�Locale/Data/ig_NG.xmlnu&1i�PKpG[p�_qc*c*�(�Locale/Data/st.xmlnu&1i�PKpG[
�3##AS�Locale/Data/sv_SE.xmlnu&1i�PKpG[[�y2##�T�Locale/Data/ro_RO.xmlnu&1i�PKpG[Sg��##V�Locale/Data/kfo_CI.xmlnu&1i�PKpG[dp��;;zW�Locale/Data/ha_Latn_NE.xmlnu&1i�PKpG[��TuOO�X�Locale/Data/ha_NG.xmlnu&1i�PKpG[�	NN�Z�Locale/Data/zh_Hant_MO.xmlnu&1i�PKpG[i`;;+n�Locale/Data/uz_Arab_AF.xmlnu&1i�PKpG[6�B���o�Locale/Data/es_CL.xmlnu&1i�PKpG[ʼYg���Locale/Data/wo.xmlnu&1i�PKpG[Acx5OO蟷Locale/Data/sr_YU.xmlnu&1i�PKpG[g��t*T*T|��Locale/Data/ja.xmlnu&1i�PKpG[a����Locale/Data/da.xmlnu&1i�PKpG[��@�>>��Locale/Data/mr.xmlnu&1i�PKpG[�2��##j߻Locale/Data/te_IN.xmlnu&1i�PKpG[�y����Locale/Data/aa_ER.xmlnu&1i�PKpG[A������Locale/Data/nl.xmlnu&1i�PKpG[_qc3�'�'�ݽLocale/Data/tn.xmlnu&1i�PKpG[ώ�-�-��Locale/Data/yo.xmlnu&1i�PKpG[���BB�3�Locale/Data/hy_AM_REVISED.xmlnu&1i�PKpG[p� �[0[0q8�Locale/Data/ti.xmlnu&1i�PKpG[y���$$i�Locale/Data/kpe_LR.xmlnu&1i�PKpG[��?���xj�Locale/Data/ig.xmlnu&1i�PKpG[5SDD���Locale/Data/es_PE.xmlnu&1i�PKpG[2hwd�b�b!��Locale/Data/se.xmlnu&1i�PKpG[�vM������Locale/Data/gez_ET.xmlnu&1i�PKpG[[
����Locale/Data/gv.xmlnu&1i�PKpG[�]9q'�'�W�Locale/Data/ne.xmlnu&1i�PKpG[~�(�#�#��Locale/Data/tg.xmlnu&1i�PKpG[�k��::�,�Locale/Data/tg_Cyrl_TJ.xmlnu&1i�PKpG[���hiie.�Locale/Data/ii.xmlnu&1i�PKpG[���::N�Locale/Data/sr_Cyrl_RS.xmlnu&1i�PKpG[FÚ�/�/��O�Locale/Data/sk.xmlnu&1i�PKpG[��NOOK�Locale/Data/sh_CS.xmlnu&1i�PKpG[��2�QQ�L�Locale/Data/en_IN.xmlnu&1i�PKpG[:b�##/c�Locale/Data/tr_TR.xmlnu&1i�PKpG[(�N7;;�d�Locale/Data/wo_Latn_SN.xmlnu&1i�PKpG[�h:HHf�Locale/Data/in.xmlnu&1i�PKpG[y�kc=�=��g�Locale/Data/sl.xmlnu&1i�PKpG[�[::%-�Locale/Data/kk_Cyrl_KZ.xmlnu&1i�PKpG[K�<H##�.�Locale/Data/ny_MW.xmlnu&1i�PKpG[�$w�w�w0�Locale/Data/nb.xmlnu&1i�PKpG[���##��Locale/Data/gu_IN.xmlnu&1i�PKpG[�=@���O��Locale/Data/ny.xmlnu&1i�PKpG[���NN���Locale/Data/ha_SD.xmlnu&1i�PKpG[�����#��Locale/Data/iu.xmlnu&1i�PKpG[R^=�##��Locale/Data/ky_KG.xmlnu&1i�PKpG[�حխ����Locale/Data/ar_KW.xmlnu&1i�PKpG[a8.W:W:w��Locale/Data/sw.xmlnu&1i�PKpG[ęW��Locale/Data/es_GT.xmlnu&1i�PKpG[hXk�NNl)�Locale/Data/sr_ME.xmlnu&1i�PKpG[�|��##�*�Locale/Data/ms_MY.xmlnu&1i�PKpG[��Q0�.�.g,�Locale/Data/mn.xmlnu&1i�PKpG[
��:OOy[�Locale/Data/zh_HK.xmlnu&1i�PKpG[XL����
]�Locale/Data/es_CO.xmlnu&1i�PKpG[TdNTOO�q�Locale/Data/mn_MN.xmlnu&1i�PKpG[�vᚍ�|s�Locale/Data/cch.xmlnu&1i�PKpG[���Y""L��Locale/Data/zh_Hans.xmlnu&1i�PKpG[e��;;���Locale/Data/zh_Hant_TW.xmlnu&1i�PKpG[W`��H�H�:��Locale/Data/tr.xmlnu&1i�PKpG[���$$��Locale/Data/gaa_GH.xmlnu&1i�PKpG[�+����.��Locale/Data/zh_Hant.xmlnu&1i�PKpG[ϖ��OO��Locale/Data/ku_TR.xmlnu&1i�PKpG[�.�:OO���Locale/Data/sr_CS.xmlnu&1i�PKpG[�v�G�G0��Locale/Data/dz.xmlnu&1i�PKpG[�#n���Z��Locale/Data/es_PY.xmlnu&1i�PKpG[�i�����Locale/Data/es_NI.xmlnu&1i�PKpG[@��##Z��Locale/Data/en_US.xmlnu&1i�PKpG[�ؤǭ����Locale/Data/ar_SD.xmlnu&1i�PKpG[�?��``���Locale/Data/ms_BN.xmlnu&1i�PKpG[�Q�<##Y��Locale/Data/fr_MC.xmlnu&1i�PKpG[v/��o�o���Locale/Data/lo.xmlnu&1i�PKpG[�1�M���]�Locale/Data/en_BW.xmlnu&1i�PKpG[2�.##�r�Locale/Data/ml_IN.xmlnu&1i�PKpG[�yB!!Ct�Locale/Data/mn_Cyrl.xmlnu&1i�PKpG[�SsV�:�:�u�Locale/Data/wal.xmlnu&1i�PKpG[���&&̰�Locale/Data/km.xmlnu&1i�PKpG[�K�!!40�Locale/Data/uz.xmlnu&1i�PKpG[��*OO�Q�Locale/Data/zh_CN.xmlnu&1i�PKpG[��Q*����&S�Locale/Data/pt_PT.xmlnu&1i�PKpG[�L*NN�C�Locale/Data/sr_RS.xmlnu&1i�PKpG[�`�X�X�E�Locale/Data/eu.xmlnu&1i�PKpG[r'���[��Locale/Data/uz_Latn.xmlnu&1i�PKpG[�A/)::d��Locale/Data/sr_Cyrl_ME.xmlnu&1i�PKpG[�lf��H�H��Locale/Data/en.xmlnu&1i�PKpG[-��6p�p����Locale/Data/sr_Latn.xmlnu&1i�PKpG[)�?�����Locale/Data/en_BE.xmlnu&1i�PKpG[�3��##���Locale/Data/mk_MK.xmlnu&1i�PKpG[{�����Locale/Data/ar_MA.xmlnu&1i�PKpG[�L�""]��Locale/Data/pa_Guru.xmlnu&1i�PKpG[�fO=$$��Locale/Data/byn_ER.xmlnu&1i�PKpG[o@n�	�	�0��Locale/Data/be.xmlnu&1i�PKpG[RҖ�{��Locale/Data/de_BE.xmlnu&1i�PKpG[v��PP���Locale/Data/en_US_POSIX.xmlnu&1i�PKpG[�-��::i��Locale/Data/mn_Cyrl_MN.xmlnu&1i�PKpG[��"�����Locale/Data/se_FI.xmlnu&1i�PKpG[3��P##�Locale/Data/af_ZA.xmlnu&1i�PKpG[<;�qgg��Locale/Data/sr_Cyrl_CS.xmlnu&1i�PKpG[�t��$$2�Locale/Data/kok_IN.xmlnu&1i�PKpG[x"!�##��Locale/Data/ak_GH.xmlnu&1i�PKpG[7��(X(X�Locale/Data/lt.xmlnu&1i�PKpG[]�z���n^�Locale/Data/ha_Arab.xmlnu&1i�PKpG[L�z�;;Kj�Locale/Data/uz_Cyrl_UZ.xmlnu&1i�PKpG[2�O##�k�Locale/Data/rw_RW.xmlnu&1i�PKpG[�5Iq8m�Locale/Data/en_AU.xmlnu&1i�PKpG[�§(�������Locale/Data/ar.xmlnu&1i�PKpG[�.,;;�r�Locale/Data/ha_Arab_NG.xmlnu&1i�PKpG[�D��2�2Ft�Locale/Data/ha.xmlnu&1i�PKpG[�P��gg:��Locale/Data/sr_Latn_YU.xmlnu&1i�PKpG[���u--��Locale/Data/om.xmlnu&1i�PKpG[;�;;H��Locale/Data/ha_Latn_NG.xmlnu&1i�PKpG[��&;##���Locale/Data/ar_EG.xmlnu&1i�PKpG[���C--5��Locale/Data/en_GB.xmlnu&1i�PKpG[�u������Locale/Data/tt.xmlnu&1i�PKpG[ꟀOO�
�Locale/Data/ha_NE.xmlnu&1i�PKpG[�OqK%K%H�Locale/Data/root.xmlnu&1i�PKpG[���JJ�1�Locale/Data/mo.xmlnu&1i�PKpG[�j%##c3�Locale/Data/se_NO.xmlnu&1i�PKpG[�Y��;�;�4�Locale/Data/kok.xmlnu&1i�PKpG[˳?0���p�Locale/Data/ar_OM.xmlnu&1i�PKpG[ꊙ�##�r�Locale/Data/en_MH.xmlnu&1i�PKpG[΁e��.t�Locale/Data/en_TT.xmlnu&1i�PKpG[{�}�##Yv�Locale/Data/dz_BT.xmlnu&1i�PKpG[��3�##�w�Locale/Data/om_ET.xmlnu&1i�PKpG[}҆�GG)y�Locale/Data/ts.xmlnu&1i�PKpG[v���,�,���Locale/Data/pa.xmlnu&1i�PKpG[�
>::���Locale/Data/zh_Hans_MO.xmlnu&1i�PKpG[{=P{RR��Locale/Data/uz_Arab.xmlnu&1i�PKpG[QT.##���Locale/Data/lt_LT.xmlnu&1i�PKpG[��/:/:��Locale/Data/is.xmlnu&1i�PKpG[f`�9�d�dw�Locale/Data/sq.xmlnu&1i�PKpG[Ҩ}ޚ�[z�Locale/Data/om_KE.xmlnu&1i�PKpG[:� +��:|�Locale/Data/en_PH.xmlnu&1i�PKpG[���	�	�$~�Locale/Data/gl.xmlnu&1i�PKpG[B��j##oJ�Locale/Data/nn_NO.xmlnu&1i�PKpG[�2���{�{�K�Locale/Data/cy.xmlnu&1i�PKpG[u�m���
��Locale/Data/es_MX.xmlnu&1i�PKpG[O8�zOO/��Locale/Data/pa_IN.xmlnu&1i�PKpG[P�t�����Locale/Data/sr_Cyrl_BA.xmlnu&1i�PKpG[�/��##���Locale/Data/mt_MT.xmlnu&1i�PKpG[������W��Locale/Data/en_JM.xmlnu&1i�PKpG[�nv�##���Locale/Data/ta_IN.xmlnu&1i�PKpG[�nL�'�'����Locale/Data/it.xmlnu&1i�PKpG[4^�Žj�jS}�Locale/Data/sv.xmlnu&1i�PKpG[֜�;$$R��Locale/Data/nso_ZA.xmlnu&1i�PKpG[�sg�$$���Locale/Data/kcg_NG.xmlnu&1i�PKpG[H��T�T&��Locale/Data/gez.xmlnu&1i�PKpG[����$$[@�Locale/Data/gez_ER.xmlnu&1i�PKpG[�l
�t�t�A�Locale/Data/ta.xmlnu&1i�PKpG[lb@5@5@ȶ�Locale/Data/ps.xmlnu&1i�PKpG[F���$$?��Locale/Data/haw_US.xmlnu&1i�PKpG[���{##���Locale/Data/sl_SI.xmlnu&1i�PKpG[0h}�����Locale/Data/pt.xmlnu&1i�PKpG[]#9��Rz�Locale/Data/plurals.xmlnu&1i�PKpG[�$
$$���Locale/Data/cch_NG.xmlnu&1i�PKpG[���""���Locale/Data/ii_CN.xmlnu&1i�PKpG[l�u���]��Locale/Data/mn_Mong.xmlnu&1i�PKpG[p!n.��H��Locale/Data/sw_KE.xmlnu&1i�PKpG[dB$$s��Locale/Data/tig_ER.xmlnu&1i�PKpG[Z��;;ݒ�Locale/Data/ha_Latn_GH.xmlnu&1i�PKpG[��FNNwNwb��Locale/Data/th.xmlnu&1i�PKpG[� ��##��Locale/Data/id_ID.xmlnu&1i�PKpG[Dz'##Z
�Locale/Data/it_IT.xmlnu&1i�PKpG[�QL}����Locale/Data/mt.xmlnu&1i�PKpG[{a��cc"��Locale/Data/gaa.xmlnu&1i�PKpG[h��88���Locale/Data/ru_UA.xmlnu&1i�PKpG[���##E��Locale/Data/aa_ET.xmlnu&1i�PKpG[�$""���Locale/Data/ha_Latn.xmlnu&1i�PKpG[o�F�U�U��Locale/Data/ms.xmlnu&1i�PKpG[ͪ����OL�Locale/Data/en_ZW.xmlnu&1i�PKpG[W-h!!ac�Locale/Data/ar_QA.xmlnu&1i�PKpG[	��,�P�P�h�Locale/Data/ia.xmlnu&1i�PKpG[If�����Locale/Data/es_CR.xmlnu&1i�PKpG[`�2A##��Locale/Data/ga_IE.xmlnu&1i�PKpG[�b1��N��Locale/Data/en_MT.xmlnu&1i�PKpG[��H##j��Locale/Data/fr_FR.xmlnu&1i�PKpG[h��##���Locale/Data/sk_SK.xmlnu&1i�PKpG[�6�RXRX:��Locale/Data/to.xmlnu&1i�PKpG[�1k]k]!�/�Locale/Data/telephoneCodeData.xmlnu&1i�PKpG[�
##���Locale/Data/th_TH.xmlnu&1i�PKpG[���""��Locale/Data/fr_SN.xmlnu&1i�PKpG[V5�hhY��Locale/Data/nso.xmlnu&1i�PKpG[3��*�*��Locale/Data/as.xmlnu&1i�PKpG[�4p##
��Locale/Data/bg_BG.xmlnu&1i�PKpG[��S5ttr��Locale/Data/fr_CA.xmlnu&1i�PKpG[��G�--+��Locale/Data/xh.xmlnu&1i�PKpG[Ķ/���Locale/Data/ar_DZ.xmlnu&1i�PKpG[K3��6�Locale/Data/sv_FI.xmlnu&1i�PKpG[��U�

&�Locale/Data/ar_SY.xmlnu&1i�PKpG[���##�0�Locale/Data/yo_NG.xmlnu&1i�PKpG[�%���%�%J2�Locale/Data/ky.xmlnu&1i�PKpG[�vn##CX�Locale/Data/en_AS.xmlnu&1i�PKpG[t~����Y�Locale/Data/so_KE.xmlnu&1i�PKpG[8,�(	(	�[�Locale/Data/de_AT.xmlnu&1i�PKpG[���##�d�Locale/Data/sw_TZ.xmlnu&1i�PKpG[Pg@@##_f�Locale/Data/kw_GB.xmlnu&1i�PKpG[�
1�##�g�Locale/Data/ts_ZA.xmlnu&1i�PKpG[�:��/i�Locale/Data/de_LU.xmlnu&1i�PKpG[Y�H�OO:k�Locale/Data/sr_BA.xmlnu&1i�PKpG[���n##�l�Locale/Data/ve_ZA.xmlnu&1i�PKpG[�hG���6n�Locale/Data/so_ET.xmlnu&1i�PKpG[�DT�Tp�Locale/Data/ug.xmlnu&1i�PKpG[F/��##���Locale/Data/fr_CH.xmlnu&1i�PKpG[E�O����Locale/Data/kw.xmlnu&1i�PKpG[�3������Locale/Data/az.xmlnu&1i�PKpG[wú�f�f�VK�Locale/Data/hi.xmlnu&1i�PKpG[ú�WW�3�Locale/Data/es_UY.xmlnu&1i�PKpG[������6�Locale/Data/el_CY.xmlnu&1i�PKpG[���""�8�Locale/Data/sr_Cyrl.xmlnu&1i�PKpG[�x�##.:�Locale/Data/hr_HR.xmlnu&1i�PKpG[�x��##�;�Locale/Data/ln_CD.xmlnu&1i�PKpG[S�>���<�Locale/Data/zh_Hant_HK.xmlnu&1i�PKpG[h%�g##:U�Locale/Data/ee_TG.xmlnu&1i�PKpG[R�xTeTe�V�Locale/Data/eo.xmlnu&1i�PKpG[�/z�OO8��Locale/Data/zh_TW.xmlnu&1i�PKpG[L�Y""̽�Locale/Data/uz_Cyrl.xmlnu&1i�PKpG[C�����5��Locale/Data/af_NA.xmlnu&1i�PKpG[���j;;)��Locale/Data/ku_Latn_TR.xmlnu&1i�PKpG[�:[�;;���Locale/Data/kk.xmlnu&1i�PKpG[Sm������Locale/Data/ve.xmlnu&1i�PKpG[�BT��*�*��Locale/Data/rw.xmlnu&1i�PKpG[!�����I�Locale/Data/hu.xmlnu&1i�PKpG[[��\�}�}�a�Locale/Data/af.xmlnu&1i�PKpG[��y�##���Locale/Data/mr_IN.xmlnu&1i�PKpG[#Hz�vv@��Locale/Data/et.xmlnu&1i�PKpG[���;;���Locale/Data/az_Latn_AZ.xmlnu&1i�PKpG[�r�OO}��Locale/Data/zh_SG.xmlnu&1i�PKpG[�[إ�����Locale/Data/hr.xmlnu&1i�PKpG[��		��Locale/Data/aa.xmlnu&1i�PKpG[�{��\�Locale/Data/es.xmlnu&1i�PKpG[ƥ4���:�Locale/Data/fur.xmlnu&1i�PKpG[��d�
^
^k��Locale/Data/el_POLYTON.xmlnu&1i�PKpG[ە��GG��Locale/Data/kl.xmlnu&1i�PKpG[�I�7##H0�Locale/Data/es_BO.xmlnu&1i�PKpG[$Ru�99�1�Locale/Data/ur_IN.xmlnu&1i�PKpG[kp.
��.5�Locale/Data/ar_TN.xmlnu&1i�PKpG[� �XHXH�:�Locale/Data/ln.xmlnu&1i�PKpG[�w��##���Locale/Data/st_ZA.xmlnu&1i�PKpG[9��������Locale/Data/es_EC.xmlnu&1i�PKpG[;�O$ģģ8��Locale/Data/ur.xmlnu&1i�PKpG[o^��nn>=�Locale/Data/syr.xmlnu&1i�PKpG[�D��OO�V�Locale/Data/sh_BA.xmlnu&1i�PKpG[S�)�##�X�Locale/Data/nr_ZA.xmlnu&1i�PKpG[lw�..�Y�Locale/Data/de_LI.xmlnu&1i�PKpG[�yB�$$^\�Locale/Data/syr_SY.xmlnu&1i�PKpG[P1��rr�]�Locale/Math.phpnu&1i�PKpG[Y������ys�Locale/Data.phpnu&1i�PKpG[�s�ڲN�NVV�Currency.phpnu&1i�PKpG[R�Q��	D��Debug.phpnu&1i�PKpG[:�x�

"��Soap/AutoDiscover/Exception.phpnu&1i�PKpG[���?�V�V{��Soap/Client.phpnu&1i�PKpG[퇫���_�Soap/Wsdl/Parser/Result.phpnu&1i�PKpG[�Dxxa�Soap/Wsdl/CodeGenerator.phpnu&1i�PKpG[��Y���$�Soap/Wsdl/Parser.phpnu&1i�PKpG[4���++=7�Soap/Wsdl/Exception.phpnu&1i�PKpG[���X==�:�Soap/Wsdl/Strategy/Abstract.phpnu&1i�PKpG[T�Է�� ;=�Soap/Wsdl/Strategy/Interface.phpnu&1i�PKpG[x4�� 
 
)qA�Soap/Wsdl/Strategy/DefaultComplexType.phpnu&1i�PKpG[-5�JJ*�K�Soap/Wsdl/Strategy/ArrayOfTypeSequence.phpnu&1i�PKpG[���ƣ��`�Soap/Wsdl/Strategy/AnyType.phpnu&1i�PKpG[V�z#++)e�Soap/Wsdl/Strategy/ArrayOfTypeComplex.phpnu&1i�PKpG[or�o�W�Wv�Soap/Server.phpnu&1i�PKpG[�%RQ33�Soap/AutoDiscover.phpnu&1i�PKpG[��`sKsK
c�Soap/Wsdl.phpnu&1i�PKpG[�hDz>>M�Soap/Server/Exception.phpnu&1i�PKpG[�	`9���Q�Soap/Client/Common.phpnu&1i�PKpG[���F;;�Y�Soap/Client/Exception.phpnu&1i�PKpG[�Yc_	_	]^�Soap/Client/Local.phpnu&1i�PKpG[���0qqh�Soap/Client/DotNet.phpnu&1i�PKpG[\����'�'�p�Service/Akismet.phpnu&1i�PKpG[݌(( �Service/SlideShare/SlideShow.phpnu&1i�PKpG[ma���� =��Service/SlideShare/Exception.phpnu&1i�PKpG[��gb���Service/Delicious/PostList.phpnu&1i�PKpG[&�����Service/Delicious/Post.phpnu&1i�PKpG[����
�
 8��Service/Delicious/SimplePost.phpnu&1i�PKpG[�BZ��
�Service/Delicious/Exception.phpnu&1i�PKpG[mCƿCC��Service/Exception.phpnu&1i�PKpG[�f������Service/Technorati.phpnu&1i�PKpG[a�|hh۪�Service/Flickr/Image.phpnu&1i�PKpG[��������Service/Flickr/ResultSet.phpnu&1i�PKpG[�7r\��]�Service/Flickr/Result.phpnu&1i�PKpG[�] �0�0B�Service/ReCaptcha.phpnu&1i�PKpG[���{{ *�Service/StrikeIron/Exception.phpnu&1i�PKpG[� �{{,�	�Service/StrikeIron/USAddressVerification.phpnu&1i�PKpG[���H&H&��Service/StrikeIron/Base.phpnu&1i�PKpG[��5�� _7�Service/StrikeIron/Decorator.phpnu&1i�PKpG[�;)``"�G�Service/StrikeIron/ZipCodeInfo.phpnu&1i�PKpG[�
nff'UN�Service/StrikeIron/SalesUseTaxBasic.phpnu&1i�PKpG[d��1�1U�Service/Simpy.phpnu&1i�PKpG[\�"�"'��Service/ReCaptcha/MailHide.phpnu&1i�PKpG[�]/���Service/ReCaptcha/Response.phpnu&1i�PKpG[@EyrrƸ�Service/ReCaptcha/Exception.phpnu&1i�PKpG[��(���Service/ReCaptcha/MailHide/Exception.phpnu&1i�PKpG[�%��#c�Service/Nirvanix/Namespace/Imfs.phpnu&1i�PKpG[H6-�nn#��Service/Nirvanix/Namespace/Base.phpnu&1i�PKpG[t�V::��Service/Nirvanix/Exception.phpnu&1i�PKpG[~��'88�Service/Nirvanix/Response.phpnu&1i�PKpG[�:M9�J�J���Service/SlideShare.phpnu&1i�PKpG[Q�J�VVE�Service/Abstract.phpnu&1i�PKpG[�&�l�F�FM�Service/Delicious.phpnu&1i�PKpG[
b��TTU��Service/Flickr.phpnu&1i�PKpG[���dd��Service/StrikeIron.phpnu&1i�PKpG[�1A_�
�
G�Service/Nirvanix.phpnu&1i�PKpG[c�ՠ�,�Service/Amazon.phpnu&1i�PKpG[`Xɕ�Q�Q"�Service/Audioscrobbler.phpnu&1i�PKpG[p��9t�Service/Amazon/Accessories.phpnu&1i�PKpG[�Z�o��!pz�Service/Amazon/CustomerReview.phpnu&1i�PKpG[��bd�����Service/Amazon/ResultSet.phpnu&1i�PKpG[;T_��
�
���Service/Amazon/Query.phpnu&1i�PKpG[4��MMȜ�Service/Amazon/Item.phpnu&1i�PKpG[��*8��\��Service/Amazon/OfferSet.phpnu&1i�PKpG[d^�%% U�Service/Amazon/ListmaniaList.phpnu&1i�PKpG[v1��##!��Service/Amazon/SimilarProduct.phpnu&1i�PKpG[��[R**">�Service/Amazon/EditorialReview.phpnu&1i�PKpG[6>g�����Service/Amazon/Image.phpnu&1i�PKpG[u�)~	~	��Service/Amazon/Offer.phpnu&1i�PKpG[����$I�Service/Technorati/TagsResultSet.phpnu&1i�PKpG[`K��}} '�Service/Technorati/ResultSet.phpnu&1i�PKpG[T��=��&��Service/Technorati/CosmosResultSet.phpnu&1i�PKpG[u`�}�
�
$?'�Service/Technorati/GetInfoResult.phpnu&1i�PKpG[T 9nn |2�Service/Technorati/TagResult.phpnu&1i�PKpG[qNQN��$:D�Service/Technorati/KeyInfoResult.phpnu&1i�PKpG[{��,��Q�Service/Technorati/Author.phpnu&1i�PKpG['�no))#bj�Service/Technorati/SearchResult.phpnu&1i�PKpG[y�b�0�0�y�Service/Technorati/Weblog.phpnu&1i�PKpG[�{L�
�
֪�Service/Technorati/Result.phpnu&1i�PKpG[�!��LL+�Service/Technorati/DailyCountsResultSet.phpnu&1i�PKpG[�d

&��Service/Technorati/SearchResultSet.phpnu&1i�PKpG[Kn��	�	!��Service/Technorati/TagsResult.phpnu&1i�PKpG[y�#��%��Service/Technorati/BlogInfoResult.phpnu&1i�PKpG[����	�	(#�Service/Technorati/DailyCountsResult.phpnu&1i�PKpG[����#k��Service/Technorati/TagResultSet.phpnu&1i�PKpG[������Service/Technorati/Utils.phpnu&1i�PKpG[E���� ��Service/Technorati/Exception.phpnu&1i�PKpG[kM�99#��Service/Technorati/CosmosResult.phpnu&1i�PKpG[��Ǭ�
,�Service/Simpy/Watchlist.phpnu&1i�PKpG[ڷ���>�Service/Simpy/LinkQuery.phpnu&1i�PKpG[���++Q�Service/Simpy/Link.phpnu&1i�PKpG[u��/��tc�Service/Simpy/WatchlistSet.phpnu&1i�PKpG[�	��XXSl�Service/Simpy/LinkSet.phpnu&1i�PKpG[���**�t�Service/Simpy/Note.phpnu&1i�PKpG[�~��$d��Service/Simpy/WatchlistFilterSet.phpnu&1i�PKpG[C�g`�����Service/Simpy/Tag.phpnu&1i�PKpG[w����!���Service/Simpy/WatchlistFilter.phpnu&1i�PKpG[�rWXXҟ�Service/Simpy/NoteSet.phpnu&1i�PKpG[l6L�GGs��Service/Simpy/TagSet.phpnu&1i�PKpG[�C�vkRkR��Service/Twitter.phpnu&1i�PKpG[A�T���Service/Twitter/Exception.phpnu&1i�PKpG[OYY�Service/Twitter/Search.phpnu&1i�PKpG[ˡ������Service/Yahoo.phpnu&1i�PKpG[�Mm��� ��Service/Yahoo/PageDataResult.phpnu&1i�PKpG[�f���
�
,��Service/Yahoo/VideoResult.phpnu&1i�PKpG[@?�XXu��Service/Yahoo/Image.phpnu&1i�PKpG[����	�	��Service/Yahoo/ImageResult.phpnu&1i�PKpG[3oG�� ��Service/Yahoo/ImageResultSet.phpnu&1i�PKpG[}�/w
w
��Service/Yahoo/LocalResult.phpnu&1i�PKpG[�;&�� ��Service/Yahoo/VideoResultSet.phpnu&1i�PKpG[�����{�Service/Yahoo/WebResultSet.phpnu&1i�PKpG[�4���"P�Service/Yahoo/InlinkDataResult.phpnu&1i�PKpG[��łcc#��Service/Yahoo/PageDataResultSet.phpnu&1i�PKpG[
����6�Service/Yahoo/ResultSet.phpnu&1i�PKpG[�."
"
�Service/Yahoo/NewsResult.phpnu&1i�PKpG[)�hUvv ��Service/Yahoo/LocalResultSet.phpnu&1i�PKpG[c�ع
�
K�Service/Yahoo/WebResult.phpnu&1i�PKpG[Z�{��O"�Service/Yahoo/NewsResultSet.phpnu&1i�PKpG[�����*)�Service/Yahoo/Result.phpnu&1i�PKpG[��4/pp%L5�Service/Yahoo/InlinkDataResultSet.phpnu&1i�PKpG[n1��<�Mime/Exception.phpnu&1i�PKpG[�>N�� � H@�Mime/Message.phpnu&1i�PKpG[��^�OO
�a�Mime/Part.phpnu&1i�PKpG[���?"?"z�Mime/Decode.phpnu&1i�PKpG[��l���
���Exception.phpnu&1i�PK88��k��